dockview-core 1.6.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 (294) hide show
  1. package/README.md +52 -0
  2. package/dist/cjs/api/component.api.d.ts +145 -0
  3. package/dist/cjs/api/component.api.js +579 -0
  4. package/dist/cjs/api/component.api.js.map +1 -0
  5. package/dist/cjs/api/dockviewPanelApi.d.ts +34 -0
  6. package/dist/cjs/api/dockviewPanelApi.js +84 -0
  7. package/dist/cjs/api/dockviewPanelApi.js.map +1 -0
  8. package/dist/cjs/api/gridviewPanelApi.d.ts +37 -0
  9. package/dist/cjs/api/gridviewPanelApi.js +48 -0
  10. package/dist/cjs/api/gridviewPanelApi.js.map +1 -0
  11. package/dist/cjs/api/panelApi.d.ts +88 -0
  12. package/dist/cjs/api/panelApi.js +138 -0
  13. package/dist/cjs/api/panelApi.js.map +1 -0
  14. package/dist/cjs/api/paneviewPanelApi.d.ts +26 -0
  15. package/dist/cjs/api/paneviewPanelApi.js +58 -0
  16. package/dist/cjs/api/paneviewPanelApi.js.map +1 -0
  17. package/dist/cjs/api/splitviewPanelApi.d.ts +32 -0
  18. package/dist/cjs/api/splitviewPanelApi.js +48 -0
  19. package/dist/cjs/api/splitviewPanelApi.js.map +1 -0
  20. package/dist/cjs/array.d.ts +12 -0
  21. package/dist/cjs/array.js +59 -0
  22. package/dist/cjs/array.js.map +1 -0
  23. package/dist/cjs/dnd/abstractDragHandler.d.ts +11 -0
  24. package/dist/cjs/dnd/abstractDragHandler.js +126 -0
  25. package/dist/cjs/dnd/abstractDragHandler.js.map +1 -0
  26. package/dist/cjs/dnd/dataTransfer.d.ts +31 -0
  27. package/dist/cjs/dnd/dataTransfer.js +101 -0
  28. package/dist/cjs/dnd/dataTransfer.js.map +1 -0
  29. package/dist/cjs/dnd/dnd.d.ts +27 -0
  30. package/dist/cjs/dnd/dnd.js +60 -0
  31. package/dist/cjs/dnd/dnd.js.map +1 -0
  32. package/dist/cjs/dnd/droptarget.d.ts +42 -0
  33. package/dist/cjs/dnd/droptarget.js +281 -0
  34. package/dist/cjs/dnd/droptarget.js.map +1 -0
  35. package/dist/cjs/dnd/ghost.d.ts +1 -0
  36. package/dist/cjs/dnd/ghost.js +16 -0
  37. package/dist/cjs/dnd/ghost.js.map +1 -0
  38. package/dist/cjs/dnd/groupDragHandler.d.ts +11 -0
  39. package/dist/cjs/dnd/groupDragHandler.js +62 -0
  40. package/dist/cjs/dnd/groupDragHandler.js.map +1 -0
  41. package/dist/cjs/dockview/components/panel/content.d.ts +30 -0
  42. package/dist/cjs/dockview/components/panel/content.js +101 -0
  43. package/dist/cjs/dockview/components/panel/content.js.map +1 -0
  44. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +21 -0
  45. package/dist/cjs/dockview/components/tab/defaultTab.js +106 -0
  46. package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -0
  47. package/dist/cjs/dockview/components/tab/tab.d.ts +31 -0
  48. package/dist/cjs/dockview/components/tab/tab.js +125 -0
  49. package/dist/cjs/dockview/components/tab/tab.js.map +1 -0
  50. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +63 -0
  51. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +248 -0
  52. package/dist/cjs/dockview/components/titlebar/tabsContainer.js.map +1 -0
  53. package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts +15 -0
  54. package/dist/cjs/dockview/components/titlebar/voidContainer.js +74 -0
  55. package/dist/cjs/dockview/components/titlebar/voidContainer.js.map +1 -0
  56. package/dist/cjs/dockview/components/watermark/watermark.d.ts +18 -0
  57. package/dist/cjs/dockview/components/watermark/watermark.js +87 -0
  58. package/dist/cjs/dockview/components/watermark/watermark.js.map +1 -0
  59. package/dist/cjs/dockview/deserializer.d.ts +12 -0
  60. package/dist/cjs/dockview/deserializer.js +46 -0
  61. package/dist/cjs/dockview/deserializer.js.map +1 -0
  62. package/dist/cjs/dockview/dockviewComponent.d.ts +126 -0
  63. package/dist/cjs/dockview/dockviewComponent.js +772 -0
  64. package/dist/cjs/dockview/dockviewComponent.js.map +1 -0
  65. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +31 -0
  66. package/dist/cjs/dockview/dockviewGroupPanel.js +97 -0
  67. package/dist/cjs/dockview/dockviewGroupPanel.js.map +1 -0
  68. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +176 -0
  69. package/dist/cjs/dockview/dockviewGroupPanelModel.js +579 -0
  70. package/dist/cjs/dockview/dockviewGroupPanelModel.js.map +1 -0
  71. package/dist/cjs/dockview/dockviewPanel.d.ts +40 -0
  72. package/dist/cjs/dockview/dockviewPanel.js +150 -0
  73. package/dist/cjs/dockview/dockviewPanel.js.map +1 -0
  74. package/dist/cjs/dockview/dockviewPanelModel.d.ts +34 -0
  75. package/dist/cjs/dockview/dockviewPanelModel.js +93 -0
  76. package/dist/cjs/dockview/dockviewPanelModel.js.map +1 -0
  77. package/dist/cjs/dockview/options.d.ts +116 -0
  78. package/dist/cjs/dockview/options.js +32 -0
  79. package/dist/cjs/dockview/options.js.map +1 -0
  80. package/dist/cjs/dockview/types.d.ts +67 -0
  81. package/dist/cjs/dockview/types.js +11 -0
  82. package/dist/cjs/dockview/types.js.map +1 -0
  83. package/dist/cjs/dom.d.ts +14 -0
  84. package/dist/cjs/dom.js +183 -0
  85. package/dist/cjs/dom.js.map +1 -0
  86. package/dist/cjs/events.d.ts +30 -0
  87. package/dist/cjs/events.js +130 -0
  88. package/dist/cjs/events.js.map +1 -0
  89. package/dist/cjs/gridview/baseComponentGridview.d.ts +87 -0
  90. package/dist/cjs/gridview/baseComponentGridview.js +280 -0
  91. package/dist/cjs/gridview/baseComponentGridview.js.map +1 -0
  92. package/dist/cjs/gridview/basePanelView.d.ts +40 -0
  93. package/dist/cjs/gridview/basePanelView.js +124 -0
  94. package/dist/cjs/gridview/basePanelView.js.map +1 -0
  95. package/dist/cjs/gridview/branchNode.d.ts +49 -0
  96. package/dist/cjs/gridview/branchNode.js +343 -0
  97. package/dist/cjs/gridview/branchNode.js.map +1 -0
  98. package/dist/cjs/gridview/gridview.d.ts +133 -0
  99. package/dist/cjs/gridview/gridview.js +511 -0
  100. package/dist/cjs/gridview/gridview.js.map +1 -0
  101. package/dist/cjs/gridview/gridviewComponent.d.ts +80 -0
  102. package/dist/cjs/gridview/gridviewComponent.js +325 -0
  103. package/dist/cjs/gridview/gridviewComponent.js.map +1 -0
  104. package/dist/cjs/gridview/gridviewPanel.d.ts +65 -0
  105. package/dist/cjs/gridview/gridviewPanel.js +215 -0
  106. package/dist/cjs/gridview/gridviewPanel.js.map +1 -0
  107. package/dist/cjs/gridview/leafNode.d.ts +34 -0
  108. package/dist/cjs/gridview/leafNode.js +171 -0
  109. package/dist/cjs/gridview/leafNode.js.map +1 -0
  110. package/dist/cjs/gridview/options.d.ts +18 -0
  111. package/dist/cjs/gridview/options.js +3 -0
  112. package/dist/cjs/gridview/options.js.map +1 -0
  113. package/dist/cjs/gridview/types.d.ts +3 -0
  114. package/dist/cjs/gridview/types.js +3 -0
  115. package/dist/cjs/gridview/types.js.map +1 -0
  116. package/dist/cjs/index.d.ts +41 -0
  117. package/dist/cjs/index.js +64 -0
  118. package/dist/cjs/index.js.map +1 -0
  119. package/dist/cjs/lifecycle.d.ts +22 -0
  120. package/dist/cjs/lifecycle.js +89 -0
  121. package/dist/cjs/lifecycle.js.map +1 -0
  122. package/dist/cjs/math.d.ts +5 -0
  123. package/dist/cjs/math.js +35 -0
  124. package/dist/cjs/math.js.map +1 -0
  125. package/dist/cjs/panel/componentFactory.d.ts +10 -0
  126. package/dist/cjs/panel/componentFactory.js +31 -0
  127. package/dist/cjs/panel/componentFactory.js.map +1 -0
  128. package/dist/cjs/panel/types.d.ts +33 -0
  129. package/dist/cjs/panel/types.js +3 -0
  130. package/dist/cjs/panel/types.js.map +1 -0
  131. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +21 -0
  132. package/dist/cjs/paneview/defaultPaneviewHeader.js +91 -0
  133. package/dist/cjs/paneview/defaultPaneviewHeader.js.map +1 -0
  134. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +21 -0
  135. package/dist/cjs/paneview/draggablePaneviewPanel.js +132 -0
  136. package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -0
  137. package/dist/cjs/paneview/options.d.ts +27 -0
  138. package/dist/cjs/paneview/options.js +3 -0
  139. package/dist/cjs/paneview/options.js.map +1 -0
  140. package/dist/cjs/paneview/paneview.d.ts +40 -0
  141. package/dist/cjs/paneview/paneview.js +202 -0
  142. package/dist/cjs/paneview/paneview.js.map +1 -0
  143. package/dist/cjs/paneview/paneviewComponent.d.ts +129 -0
  144. package/dist/cjs/paneview/paneviewComponent.js +395 -0
  145. package/dist/cjs/paneview/paneviewComponent.js.map +1 -0
  146. package/dist/cjs/paneview/paneviewPanel.d.ts +92 -0
  147. package/dist/cjs/paneview/paneviewPanel.js +276 -0
  148. package/dist/cjs/paneview/paneviewPanel.js.map +1 -0
  149. package/dist/cjs/splitview/options.d.ts +26 -0
  150. package/dist/cjs/splitview/options.js +3 -0
  151. package/dist/cjs/splitview/options.js.map +1 -0
  152. package/dist/cjs/splitview/splitview.d.ts +127 -0
  153. package/dist/cjs/splitview/splitview.js +909 -0
  154. package/dist/cjs/splitview/splitview.js.map +1 -0
  155. package/dist/cjs/splitview/splitviewComponent.d.ts +101 -0
  156. package/dist/cjs/splitview/splitviewComponent.js +374 -0
  157. package/dist/cjs/splitview/splitviewComponent.js.map +1 -0
  158. package/dist/cjs/splitview/splitviewPanel.d.ts +45 -0
  159. package/dist/cjs/splitview/splitviewPanel.js +180 -0
  160. package/dist/cjs/splitview/splitviewPanel.js.map +1 -0
  161. package/dist/cjs/splitview/viewItem.d.ts +25 -0
  162. package/dist/cjs/splitview/viewItem.js +120 -0
  163. package/dist/cjs/splitview/viewItem.js.map +1 -0
  164. package/dist/cjs/svg.d.ts +3 -0
  165. package/dist/cjs/svg.js +44 -0
  166. package/dist/cjs/svg.js.map +1 -0
  167. package/dist/cjs/types.d.ts +2 -0
  168. package/dist/cjs/types.js +3 -0
  169. package/dist/cjs/types.js.map +1 -0
  170. package/dist/dockview-core.amd.js +6492 -0
  171. package/dist/dockview-core.amd.min.js +7 -0
  172. package/dist/dockview-core.amd.min.noStyle.js +7 -0
  173. package/dist/dockview-core.amd.noStyle.js +6462 -0
  174. package/dist/dockview-core.cjs.js +6490 -0
  175. package/dist/dockview-core.esm.js +6441 -0
  176. package/dist/dockview-core.esm.min.js +7 -0
  177. package/dist/dockview-core.js +6496 -0
  178. package/dist/dockview-core.min.js +7 -0
  179. package/dist/dockview-core.min.noStyle.js +7 -0
  180. package/dist/dockview-core.noStyle.js +6466 -0
  181. package/dist/esm/api/component.api.d.ts +145 -0
  182. package/dist/esm/api/component.api.js +329 -0
  183. package/dist/esm/api/dockviewPanelApi.d.ts +34 -0
  184. package/dist/esm/api/dockviewPanelApi.js +48 -0
  185. package/dist/esm/api/gridviewPanelApi.d.ts +37 -0
  186. package/dist/esm/api/gridviewPanelApi.js +25 -0
  187. package/dist/esm/api/panelApi.d.ts +88 -0
  188. package/dist/esm/api/panelApi.js +95 -0
  189. package/dist/esm/api/paneviewPanelApi.d.ts +26 -0
  190. package/dist/esm/api/paneviewPanelApi.js +27 -0
  191. package/dist/esm/api/splitviewPanelApi.d.ts +32 -0
  192. package/dist/esm/api/splitviewPanelApi.js +25 -0
  193. package/dist/esm/array.d.ts +12 -0
  194. package/dist/esm/array.js +49 -0
  195. package/dist/esm/dnd/abstractDragHandler.d.ts +11 -0
  196. package/dist/esm/dnd/abstractDragHandler.js +47 -0
  197. package/dist/esm/dnd/dataTransfer.d.ts +31 -0
  198. package/dist/esm/dnd/dataTransfer.js +69 -0
  199. package/dist/esm/dnd/dnd.d.ts +27 -0
  200. package/dist/esm/dnd/dnd.js +36 -0
  201. package/dist/esm/dnd/droptarget.d.ts +42 -0
  202. package/dist/esm/dnd/droptarget.js +250 -0
  203. package/dist/esm/dnd/ghost.d.ts +1 -0
  204. package/dist/esm/dnd/ghost.js +11 -0
  205. package/dist/esm/dnd/groupDragHandler.d.ts +11 -0
  206. package/dist/esm/dnd/groupDragHandler.js +38 -0
  207. package/dist/esm/dockview/components/panel/content.d.ts +30 -0
  208. package/dist/esm/dockview/components/panel/content.js +73 -0
  209. package/dist/esm/dockview/components/tab/defaultTab.d.ts +21 -0
  210. package/dist/esm/dockview/components/tab/defaultTab.js +67 -0
  211. package/dist/esm/dockview/components/tab/tab.d.ts +31 -0
  212. package/dist/esm/dockview/components/tab/tab.js +94 -0
  213. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +63 -0
  214. package/dist/esm/dockview/components/titlebar/tabsContainer.js +179 -0
  215. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +15 -0
  216. package/dist/esm/dockview/components/titlebar/voidContainer.js +47 -0
  217. package/dist/esm/dockview/components/watermark/watermark.d.ts +18 -0
  218. package/dist/esm/dockview/components/watermark/watermark.js +60 -0
  219. package/dist/esm/dockview/deserializer.d.ts +12 -0
  220. package/dist/esm/dockview/deserializer.js +40 -0
  221. package/dist/esm/dockview/dockviewComponent.d.ts +126 -0
  222. package/dist/esm/dockview/dockviewComponent.js +612 -0
  223. package/dist/esm/dockview/dockviewGroupPanel.d.ts +31 -0
  224. package/dist/esm/dockview/dockviewGroupPanel.js +50 -0
  225. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +176 -0
  226. package/dist/esm/dockview/dockviewGroupPanelModel.js +449 -0
  227. package/dist/esm/dockview/dockviewPanel.d.ts +40 -0
  228. package/dist/esm/dockview/dockviewPanel.js +104 -0
  229. package/dist/esm/dockview/dockviewPanelModel.d.ts +34 -0
  230. package/dist/esm/dockview/dockviewPanelModel.js +68 -0
  231. package/dist/esm/dockview/options.d.ts +116 -0
  232. package/dist/esm/dockview/options.js +24 -0
  233. package/dist/esm/dockview/types.d.ts +67 -0
  234. package/dist/esm/dockview/types.js +7 -0
  235. package/dist/esm/dom.d.ts +14 -0
  236. package/dist/esm/dom.js +113 -0
  237. package/dist/esm/events.d.ts +30 -0
  238. package/dist/esm/events.js +88 -0
  239. package/dist/esm/gridview/baseComponentGridview.d.ts +87 -0
  240. package/dist/esm/gridview/baseComponentGridview.js +189 -0
  241. package/dist/esm/gridview/basePanelView.d.ts +40 -0
  242. package/dist/esm/gridview/basePanelView.js +74 -0
  243. package/dist/esm/gridview/branchNode.d.ts +49 -0
  244. package/dist/esm/gridview/branchNode.js +218 -0
  245. package/dist/esm/gridview/gridview.d.ts +133 -0
  246. package/dist/esm/gridview/gridview.js +423 -0
  247. package/dist/esm/gridview/gridviewComponent.d.ts +80 -0
  248. package/dist/esm/gridview/gridviewComponent.js +237 -0
  249. package/dist/esm/gridview/gridviewPanel.d.ts +65 -0
  250. package/dist/esm/gridview/gridviewPanel.js +151 -0
  251. package/dist/esm/gridview/leafNode.d.ts +34 -0
  252. package/dist/esm/gridview/leafNode.js +103 -0
  253. package/dist/esm/gridview/options.d.ts +18 -0
  254. package/dist/esm/gridview/options.js +1 -0
  255. package/dist/esm/gridview/types.d.ts +3 -0
  256. package/dist/esm/gridview/types.js +1 -0
  257. package/dist/esm/index.d.ts +41 -0
  258. package/dist/esm/index.js +35 -0
  259. package/dist/esm/lifecycle.d.ts +22 -0
  260. package/dist/esm/lifecycle.js +39 -0
  261. package/dist/esm/math.d.ts +5 -0
  262. package/dist/esm/math.js +28 -0
  263. package/dist/esm/panel/componentFactory.d.ts +10 -0
  264. package/dist/esm/panel/componentFactory.js +24 -0
  265. package/dist/esm/panel/types.d.ts +33 -0
  266. package/dist/esm/panel/types.js +1 -0
  267. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +21 -0
  268. package/dist/esm/paneview/defaultPaneviewHeader.js +63 -0
  269. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +21 -0
  270. package/dist/esm/paneview/draggablePaneviewPanel.js +92 -0
  271. package/dist/esm/paneview/options.d.ts +27 -0
  272. package/dist/esm/paneview/options.js +1 -0
  273. package/dist/esm/paneview/paneview.d.ts +40 -0
  274. package/dist/esm/paneview/paneview.js +145 -0
  275. package/dist/esm/paneview/paneviewComponent.d.ts +129 -0
  276. package/dist/esm/paneview/paneviewComponent.js +270 -0
  277. package/dist/esm/paneview/paneviewPanel.d.ts +92 -0
  278. package/dist/esm/paneview/paneviewPanel.js +192 -0
  279. package/dist/esm/splitview/options.d.ts +26 -0
  280. package/dist/esm/splitview/options.js +1 -0
  281. package/dist/esm/splitview/splitview.d.ts +127 -0
  282. package/dist/esm/splitview/splitview.js +689 -0
  283. package/dist/esm/splitview/splitviewComponent.d.ts +101 -0
  284. package/dist/esm/splitview/splitviewComponent.js +249 -0
  285. package/dist/esm/splitview/splitviewPanel.d.ts +45 -0
  286. package/dist/esm/splitview/splitviewPanel.js +108 -0
  287. package/dist/esm/splitview/viewItem.d.ts +25 -0
  288. package/dist/esm/splitview/viewItem.js +74 -0
  289. package/dist/esm/svg.d.ts +3 -0
  290. package/dist/esm/svg.js +31 -0
  291. package/dist/esm/types.d.ts +2 -0
  292. package/dist/esm/types.js +1 -0
  293. package/dist/styles/dockview.css +615 -0
  294. package/package.json +68 -0
@@ -0,0 +1,63 @@
1
+ import { IDisposable, CompositeDisposable } from '../../../lifecycle';
2
+ import { Event } from '../../../events';
3
+ import { ITab } from '../tab/tab';
4
+ import { DockviewComponent } from '../../dockviewComponent';
5
+ import { DockviewGroupPanel } from '../../dockviewGroupPanel';
6
+ import { IDockviewPanel } from '../../dockviewPanel';
7
+ export interface TabDropIndexEvent {
8
+ readonly event: DragEvent;
9
+ readonly index: number;
10
+ }
11
+ export interface ITabsContainer extends IDisposable {
12
+ readonly element: HTMLElement;
13
+ readonly panels: string[];
14
+ readonly size: number;
15
+ height: number | undefined;
16
+ delete: (id: string) => void;
17
+ indexOf: (id: string) => number;
18
+ onDrop: Event<TabDropIndexEvent>;
19
+ setActive: (isGroupActive: boolean) => void;
20
+ setActivePanel: (panel: IDockviewPanel) => void;
21
+ isActive: (tab: ITab) => boolean;
22
+ closePanel: (panel: IDockviewPanel) => void;
23
+ openPanel: (panel: IDockviewPanel, index?: number) => void;
24
+ setActionElement(element: HTMLElement | undefined): void;
25
+ hidden: boolean;
26
+ show(): void;
27
+ hide(): void;
28
+ }
29
+ export declare class TabsContainer extends CompositeDisposable implements ITabsContainer {
30
+ private readonly accessor;
31
+ private readonly group;
32
+ private readonly _element;
33
+ private readonly tabContainer;
34
+ private readonly actionContainer;
35
+ private readonly voidContainer;
36
+ private tabs;
37
+ private selectedIndex;
38
+ private actions;
39
+ private _height;
40
+ private _hidden;
41
+ private readonly _onDrop;
42
+ readonly onDrop: Event<TabDropIndexEvent>;
43
+ get panels(): string[];
44
+ get size(): number;
45
+ get height(): number | undefined;
46
+ set height(value: number | undefined);
47
+ get hidden(): boolean;
48
+ set hidden(value: boolean);
49
+ show(): void;
50
+ hide(): void;
51
+ setActionElement(element: HTMLElement | undefined): void;
52
+ get element(): HTMLElement;
53
+ isActive(tab: ITab): boolean;
54
+ indexOf(id: string): number;
55
+ constructor(accessor: DockviewComponent, group: DockviewGroupPanel);
56
+ setActive(_isGroupActive: boolean): void;
57
+ private addTab;
58
+ delete(id: string): void;
59
+ setActivePanel(panel: IDockviewPanel): void;
60
+ openPanel(panel: IDockviewPanel, index?: number): void;
61
+ closePanel(panel: IDockviewPanel): void;
62
+ dispose(): void;
63
+ }
@@ -0,0 +1,179 @@
1
+ import { CompositeDisposable, } from '../../../lifecycle';
2
+ import { addDisposableListener, Emitter } from '../../../events';
3
+ import { Tab } from '../tab/tab';
4
+ import { VoidContainer } from './voidContainer';
5
+ import { toggleClass } from '../../../dom';
6
+ export class TabsContainer extends CompositeDisposable {
7
+ get panels() {
8
+ return this.tabs.map((_) => _.value.panelId);
9
+ }
10
+ get size() {
11
+ return this.tabs.length;
12
+ }
13
+ get height() {
14
+ return this._height;
15
+ }
16
+ set height(value) {
17
+ this._height = value;
18
+ if (typeof value !== 'number') {
19
+ this.element.style.removeProperty('--dv-tabs-and-actions-container-height');
20
+ }
21
+ else {
22
+ this.element.style.setProperty('--dv-tabs-and-actions-container-height', `${value}px`);
23
+ }
24
+ }
25
+ get hidden() {
26
+ return this._hidden;
27
+ }
28
+ set hidden(value) {
29
+ this._hidden = value;
30
+ this.element.style.display = value ? 'none' : '';
31
+ }
32
+ show() {
33
+ if (!this.hidden) {
34
+ this.element.style.display = '';
35
+ }
36
+ }
37
+ hide() {
38
+ this._element.style.display = 'none';
39
+ }
40
+ setActionElement(element) {
41
+ if (this.actions === element) {
42
+ return;
43
+ }
44
+ if (this.actions) {
45
+ this.actions.remove();
46
+ this.actions = undefined;
47
+ }
48
+ if (element) {
49
+ this.actionContainer.appendChild(element);
50
+ this.actions = element;
51
+ }
52
+ }
53
+ get element() {
54
+ return this._element;
55
+ }
56
+ isActive(tab) {
57
+ return (this.selectedIndex > -1 &&
58
+ this.tabs[this.selectedIndex].value === tab);
59
+ }
60
+ indexOf(id) {
61
+ return this.tabs.findIndex((tab) => tab.value.panelId === id);
62
+ }
63
+ constructor(accessor, group) {
64
+ super();
65
+ this.accessor = accessor;
66
+ this.group = group;
67
+ this.tabs = [];
68
+ this.selectedIndex = -1;
69
+ this._hidden = false;
70
+ this._onDrop = new Emitter();
71
+ this.onDrop = this._onDrop.event;
72
+ this.addDisposables(this._onDrop);
73
+ this._element = document.createElement('div');
74
+ this._element.className = 'tabs-and-actions-container';
75
+ this.height = accessor.options.tabHeight;
76
+ toggleClass(this._element, 'dv-full-width-single-tab', this.accessor.options.singleTabMode === 'fullwidth');
77
+ this.addDisposables(this.accessor.onDidAddPanel((e) => {
78
+ if (e.api.group === this.group) {
79
+ toggleClass(this._element, 'dv-single-tab', this.size === 1);
80
+ }
81
+ }), this.accessor.onDidRemovePanel((e) => {
82
+ if (e.api.group === this.group) {
83
+ toggleClass(this._element, 'dv-single-tab', this.size === 1);
84
+ }
85
+ }));
86
+ this.actionContainer = document.createElement('div');
87
+ this.actionContainer.className = 'action-container';
88
+ this.tabContainer = document.createElement('div');
89
+ this.tabContainer.className = 'tabs-container';
90
+ this.voidContainer = new VoidContainer(this.accessor, this.group);
91
+ this._element.appendChild(this.tabContainer);
92
+ this._element.appendChild(this.voidContainer.element);
93
+ this._element.appendChild(this.actionContainer);
94
+ this.addDisposables(this.voidContainer, this.voidContainer.onDrop((event) => {
95
+ this._onDrop.fire({
96
+ event: event.nativeEvent,
97
+ index: this.tabs.length,
98
+ });
99
+ }), addDisposableListener(this.tabContainer, 'mousedown', (event) => {
100
+ if (event.defaultPrevented) {
101
+ return;
102
+ }
103
+ const isLeftClick = event.button === 0;
104
+ if (isLeftClick) {
105
+ this.accessor.doSetGroupActive(this.group);
106
+ }
107
+ }));
108
+ }
109
+ setActive(_isGroupActive) {
110
+ // noop
111
+ }
112
+ addTab(tab, index = this.tabs.length) {
113
+ if (index < 0 || index > this.tabs.length) {
114
+ throw new Error('invalid location');
115
+ }
116
+ this.tabContainer.insertBefore(tab.value.element, this.tabContainer.children[index]);
117
+ this.tabs = [
118
+ ...this.tabs.slice(0, index),
119
+ tab,
120
+ ...this.tabs.slice(index),
121
+ ];
122
+ if (this.selectedIndex < 0) {
123
+ this.selectedIndex = index;
124
+ }
125
+ }
126
+ delete(id) {
127
+ const index = this.tabs.findIndex((tab) => tab.value.panelId === id);
128
+ const tabToRemove = this.tabs.splice(index, 1)[0];
129
+ const { value, disposable } = tabToRemove;
130
+ disposable.dispose();
131
+ value.element.remove();
132
+ }
133
+ setActivePanel(panel) {
134
+ this.tabs.forEach((tab) => {
135
+ const isActivePanel = panel.id === tab.value.panelId;
136
+ tab.value.setActive(isActivePanel);
137
+ });
138
+ }
139
+ openPanel(panel, index = this.tabs.length) {
140
+ var _a;
141
+ if (this.tabs.find((tab) => tab.value.panelId === panel.id)) {
142
+ return;
143
+ }
144
+ const tabToAdd = new Tab(panel.id, this.accessor, this.group);
145
+ if (!((_a = panel.view) === null || _a === void 0 ? void 0 : _a.tab)) {
146
+ throw new Error('invalid header component');
147
+ }
148
+ tabToAdd.setContent(panel.view.tab);
149
+ const disposable = CompositeDisposable.from(tabToAdd.onChanged((event) => {
150
+ var _a;
151
+ const alreadyFocused = panel.id === ((_a = this.group.model.activePanel) === null || _a === void 0 ? void 0 : _a.id) &&
152
+ this.group.model.isContentFocused;
153
+ const isLeftClick = event.button === 0;
154
+ if (!isLeftClick || event.defaultPrevented) {
155
+ return;
156
+ }
157
+ this.group.model.openPanel(panel, {
158
+ skipFocus: alreadyFocused,
159
+ });
160
+ }), tabToAdd.onDrop((event) => {
161
+ this._onDrop.fire({
162
+ event: event.nativeEvent,
163
+ index: this.tabs.findIndex((x) => x.value === tabToAdd),
164
+ });
165
+ }));
166
+ const value = { value: tabToAdd, disposable };
167
+ this.addTab(value, index);
168
+ }
169
+ closePanel(panel) {
170
+ this.delete(panel.id);
171
+ }
172
+ dispose() {
173
+ super.dispose();
174
+ this.tabs.forEach((tab) => {
175
+ tab.disposable.dispose();
176
+ });
177
+ this.tabs = [];
178
+ }
179
+ }
@@ -0,0 +1,15 @@
1
+ import { DroptargetEvent } from '../../../dnd/droptarget';
2
+ import { DockviewComponent } from '../../dockviewComponent';
3
+ import { Event } from '../../../events';
4
+ import { CompositeDisposable } from '../../../lifecycle';
5
+ import { DockviewGroupPanel } from '../../dockviewGroupPanel';
6
+ export declare class VoidContainer extends CompositeDisposable {
7
+ private readonly accessor;
8
+ private readonly group;
9
+ private readonly _element;
10
+ private readonly voidDropTarget;
11
+ private readonly _onDrop;
12
+ readonly onDrop: Event<DroptargetEvent>;
13
+ get element(): HTMLElement;
14
+ constructor(accessor: DockviewComponent, group: DockviewGroupPanel);
15
+ }
@@ -0,0 +1,47 @@
1
+ import { last } from '../../../array';
2
+ import { getPanelData } from '../../../dnd/dataTransfer';
3
+ import { Droptarget } from '../../../dnd/droptarget';
4
+ import { GroupDragHandler } from '../../../dnd/groupDragHandler';
5
+ import { addDisposableListener, Emitter } from '../../../events';
6
+ import { CompositeDisposable } from '../../../lifecycle';
7
+ import { DockviewDropTargets } from '../../types';
8
+ export class VoidContainer extends CompositeDisposable {
9
+ get element() {
10
+ return this._element;
11
+ }
12
+ constructor(accessor, group) {
13
+ super();
14
+ this.accessor = accessor;
15
+ this.group = group;
16
+ this._onDrop = new Emitter();
17
+ this.onDrop = this._onDrop.event;
18
+ this._element = document.createElement('div');
19
+ this._element.className = 'void-container';
20
+ this._element.tabIndex = 0;
21
+ this._element.draggable = true;
22
+ this.addDisposables(this._onDrop, addDisposableListener(this._element, 'click', () => {
23
+ this.accessor.doSetGroupActive(this.group);
24
+ }));
25
+ const handler = new GroupDragHandler(this._element, accessor.id, group);
26
+ this.voidDropTarget = new Droptarget(this._element, {
27
+ acceptedTargetZones: ['center'],
28
+ canDisplayOverlay: (event, position) => {
29
+ var _a;
30
+ const data = getPanelData();
31
+ if (data && this.accessor.id === data.viewId) {
32
+ if (data.panelId === null &&
33
+ data.groupId === this.group.id) {
34
+ // don't allow group move to drop on self
35
+ return false;
36
+ }
37
+ // don't show the overlay if the tab being dragged is the last panel of this group
38
+ return ((_a = last(this.group.panels)) === null || _a === void 0 ? void 0 : _a.id) !== data.panelId;
39
+ }
40
+ return group.model.canDisplayOverlay(event, position, DockviewDropTargets.Panel);
41
+ },
42
+ });
43
+ this.addDisposables(handler, this.voidDropTarget.onDrop((event) => {
44
+ this._onDrop.fire(event);
45
+ }), this.voidDropTarget);
46
+ }
47
+ }
@@ -0,0 +1,18 @@
1
+ import { IWatermarkRenderer, WatermarkRendererInitParameters } from '../../types';
2
+ import { CompositeDisposable } from '../../../lifecycle';
3
+ import { DockviewGroupPanel } from '../../dockviewGroupPanel';
4
+ import { PanelUpdateEvent } from '../../../panel/types';
5
+ export declare class Watermark extends CompositeDisposable implements IWatermarkRenderer {
6
+ private _element;
7
+ private group;
8
+ private params;
9
+ get element(): HTMLElement;
10
+ constructor();
11
+ update(_event: PanelUpdateEvent): void;
12
+ focus(): void;
13
+ layout(_width: number, _height: number): void;
14
+ init(_params: WatermarkRendererInitParameters): void;
15
+ updateParentGroup(group: DockviewGroupPanel, _visible: boolean): void;
16
+ dispose(): void;
17
+ private render;
18
+ }
@@ -0,0 +1,60 @@
1
+ import { addDisposableListener } from '../../../events';
2
+ import { toggleClass } from '../../../dom';
3
+ import { CompositeDisposable } from '../../../lifecycle';
4
+ import { createCloseButton } from '../../../svg';
5
+ export class Watermark extends CompositeDisposable {
6
+ get element() {
7
+ return this._element;
8
+ }
9
+ constructor() {
10
+ super();
11
+ this._element = document.createElement('div');
12
+ this._element.className = 'watermark';
13
+ const title = document.createElement('div');
14
+ title.className = 'watermark-title';
15
+ const emptySpace = document.createElement('span');
16
+ emptySpace.style.flexGrow = '1';
17
+ const content = document.createElement('div');
18
+ content.className = 'watermark-content';
19
+ this._element.appendChild(title);
20
+ this._element.appendChild(content);
21
+ const actionsContainer = document.createElement('div');
22
+ actionsContainer.className = 'actions-container';
23
+ const closeAnchor = document.createElement('div');
24
+ closeAnchor.className = 'close-action';
25
+ closeAnchor.appendChild(createCloseButton());
26
+ actionsContainer.appendChild(closeAnchor);
27
+ title.appendChild(emptySpace);
28
+ title.appendChild(actionsContainer);
29
+ this.addDisposables(addDisposableListener(closeAnchor, 'click', (ev) => {
30
+ var _a;
31
+ ev.preventDefault();
32
+ if (this.group) {
33
+ (_a = this.params) === null || _a === void 0 ? void 0 : _a.containerApi.removeGroup(this.group);
34
+ }
35
+ }));
36
+ }
37
+ update(_event) {
38
+ // noop
39
+ }
40
+ focus() {
41
+ // noop
42
+ }
43
+ layout(_width, _height) {
44
+ // noop
45
+ }
46
+ init(_params) {
47
+ this.render();
48
+ }
49
+ updateParentGroup(group, _visible) {
50
+ this.group = group;
51
+ this.render();
52
+ }
53
+ dispose() {
54
+ super.dispose();
55
+ }
56
+ render() {
57
+ const isOneGroup = !!(this.params && this.params.containerApi.size <= 1);
58
+ toggleClass(this.element, 'has-actions', isOneGroup);
59
+ }
60
+ }
@@ -0,0 +1,12 @@
1
+ import { GroupviewPanelState } from './types';
2
+ import { DockviewGroupPanel } from './dockviewGroupPanel';
3
+ import { IDockviewPanel } from './dockviewPanel';
4
+ import { IDockviewComponent } from './dockviewComponent';
5
+ export interface IPanelDeserializer {
6
+ fromJSON(panelData: GroupviewPanelState, group: DockviewGroupPanel): IDockviewPanel;
7
+ }
8
+ export declare class DefaultDockviewDeserialzier implements IPanelDeserializer {
9
+ private readonly layout;
10
+ constructor(layout: IDockviewComponent);
11
+ fromJSON(panelData: GroupviewPanelState, group: DockviewGroupPanel): IDockviewPanel;
12
+ }
@@ -0,0 +1,40 @@
1
+ import { DockviewPanel } from './dockviewPanel';
2
+ import { createComponent } from '../panel/componentFactory';
3
+ import { DefaultTab } from './components/tab/defaultTab';
4
+ import { DockviewPanelModel } from './dockviewPanelModel';
5
+ import { DockviewApi } from '../api/component.api';
6
+ export class DefaultDockviewDeserialzier {
7
+ constructor(layout) {
8
+ this.layout = layout;
9
+ }
10
+ fromJSON(panelData, group) {
11
+ var _a, _b, _c;
12
+ const panelId = panelData.id;
13
+ const params = panelData.params;
14
+ const title = panelData.title;
15
+ const viewData = panelData.view;
16
+ const contentComponent = viewData
17
+ ? viewData.content.id
18
+ : panelData.contentComponent || 'unknown';
19
+ const tabComponent = viewData
20
+ ? (_a = viewData.tab) === null || _a === void 0 ? void 0 : _a.id
21
+ : panelData.tabComponent;
22
+ let tab;
23
+ if (tabComponent) {
24
+ tab = createComponent(panelId, tabComponent, this.layout.options.tabComponents, this.layout.options.frameworkTabComponents, (_b = this.layout.options.frameworkComponentFactory) === null || _b === void 0 ? void 0 : _b.tab, () => new DefaultTab());
25
+ }
26
+ else if (this.layout.options.defaultTabComponent) {
27
+ tab = createComponent(panelId, this.layout.options.defaultTabComponent, this.layout.options.tabComponents, this.layout.options.frameworkTabComponents, (_c = this.layout.options.frameworkComponentFactory) === null || _c === void 0 ? void 0 : _c.tab, () => new DefaultTab());
28
+ }
29
+ else {
30
+ tab = new DefaultTab();
31
+ }
32
+ const view = new DockviewPanelModel(this.layout, panelId, contentComponent, tabComponent);
33
+ const panel = new DockviewPanel(panelId, this.layout, new DockviewApi(this.layout), group, view);
34
+ panel.init({
35
+ title: title || panelId,
36
+ params: params || {},
37
+ });
38
+ return panel;
39
+ }
40
+ }
@@ -0,0 +1,126 @@
1
+ import { SerializedGridObject } from '../gridview/gridview';
2
+ import { Position } from '../dnd/droptarget';
3
+ import { IDockviewPanel } from './dockviewPanel';
4
+ import { Event } from '../events';
5
+ import { IWatermarkRenderer, GroupviewPanelState } from './types';
6
+ import { AddGroupOptions, AddPanelOptions, DockviewComponentOptions, MovementOptions } from './options';
7
+ import { BaseGrid, IBaseGrid } from '../gridview/baseComponentGridview';
8
+ import { DockviewApi } from '../api/component.api';
9
+ import { Orientation } from '../splitview/splitview';
10
+ import { GroupOptions, GroupPanelViewState, GroupviewDropEvent } from './dockviewGroupPanelModel';
11
+ import { DockviewGroupPanel, IDockviewGroupPanel } from './dockviewGroupPanel';
12
+ export interface PanelReference {
13
+ update: (event: {
14
+ params: {
15
+ [key: string]: any;
16
+ };
17
+ }) => void;
18
+ remove: () => void;
19
+ }
20
+ export interface SerializedDockview {
21
+ grid: {
22
+ root: SerializedGridObject<GroupPanelViewState>;
23
+ height: number;
24
+ width: number;
25
+ orientation: Orientation;
26
+ };
27
+ panels: {
28
+ [key: string]: GroupviewPanelState;
29
+ };
30
+ activeGroup?: string;
31
+ options?: {
32
+ tabHeight?: number;
33
+ };
34
+ }
35
+ export type DockviewComponentUpdateOptions = Pick<DockviewComponentOptions, 'orientation' | 'components' | 'frameworkComponents' | 'tabComponents' | 'frameworkTabComponents' | 'showDndOverlay' | 'watermarkFrameworkComponent' | 'defaultTabComponent' | 'createGroupControlElement'>;
36
+ export interface DockviewDropEvent extends GroupviewDropEvent {
37
+ api: DockviewApi;
38
+ group: DockviewGroupPanel | null;
39
+ }
40
+ export interface IDockviewComponent extends IBaseGrid<DockviewGroupPanel> {
41
+ readonly activePanel: IDockviewPanel | undefined;
42
+ readonly totalPanels: number;
43
+ readonly panels: IDockviewPanel[];
44
+ readonly onDidDrop: Event<DockviewDropEvent>;
45
+ readonly orientation: Orientation;
46
+ tabHeight: number | undefined;
47
+ updateOptions(options: DockviewComponentUpdateOptions): void;
48
+ moveGroupOrPanel(referenceGroup: DockviewGroupPanel, groupId: string, itemId: string, target: Position, index?: number): void;
49
+ doSetGroupActive: (group: DockviewGroupPanel, skipFocus?: boolean) => void;
50
+ removeGroup: (group: DockviewGroupPanel) => void;
51
+ options: DockviewComponentOptions;
52
+ addPanel(options: AddPanelOptions): IDockviewPanel;
53
+ removePanel(panel: IDockviewPanel): void;
54
+ getGroupPanel: (id: string) => IDockviewPanel | undefined;
55
+ createWatermarkComponent(): IWatermarkRenderer;
56
+ addGroup(options?: AddGroupOptions): IDockviewGroupPanel;
57
+ closeAllGroups(): void;
58
+ moveToNext(options?: MovementOptions): void;
59
+ moveToPrevious(options?: MovementOptions): void;
60
+ setActivePanel(panel: IDockviewPanel): void;
61
+ focus(): void;
62
+ toJSON(): SerializedDockview;
63
+ fromJSON(data: SerializedDockview): void;
64
+ readonly onDidRemovePanel: Event<IDockviewPanel>;
65
+ readonly onDidAddPanel: Event<IDockviewPanel>;
66
+ readonly onDidLayoutFromJSON: Event<void>;
67
+ readonly onDidActivePanelChange: Event<IDockviewPanel | undefined>;
68
+ }
69
+ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> implements IDockviewComponent {
70
+ private readonly nextGroupId;
71
+ private readonly _deserializer;
72
+ private readonly _api;
73
+ private _options;
74
+ private watermark;
75
+ private readonly _onDidDrop;
76
+ readonly onDidDrop: Event<DockviewDropEvent>;
77
+ private readonly _onDidRemovePanel;
78
+ readonly onDidRemovePanel: Event<IDockviewPanel>;
79
+ private readonly _onDidAddPanel;
80
+ readonly onDidAddPanel: Event<IDockviewPanel>;
81
+ private readonly _onDidLayoutFromJSON;
82
+ readonly onDidLayoutFromJSON: Event<void>;
83
+ private readonly _onDidActivePanelChange;
84
+ readonly onDidActivePanelChange: Event<IDockviewPanel | undefined>;
85
+ get orientation(): Orientation;
86
+ get totalPanels(): number;
87
+ get panels(): IDockviewPanel[];
88
+ get options(): DockviewComponentOptions;
89
+ get activePanel(): IDockviewPanel | undefined;
90
+ set tabHeight(height: number | undefined);
91
+ get tabHeight(): number | undefined;
92
+ constructor(element: HTMLElement, options: DockviewComponentOptions);
93
+ private orthogonalize;
94
+ updateOptions(options: DockviewComponentUpdateOptions): void;
95
+ focus(): void;
96
+ getGroupPanel(id: string): IDockviewPanel | undefined;
97
+ setActivePanel(panel: IDockviewPanel): void;
98
+ moveToNext(options?: MovementOptions): void;
99
+ moveToPrevious(options?: MovementOptions): void;
100
+ /**
101
+ * Serialize the current state of the layout
102
+ *
103
+ * @returns A JSON respresentation of the layout
104
+ */
105
+ toJSON(): SerializedDockview;
106
+ fromJSON(data: SerializedDockview): void;
107
+ clear(): void;
108
+ closeAllGroups(): void;
109
+ addPanel(options: AddPanelOptions): IDockviewPanel;
110
+ removePanel(panel: IDockviewPanel, options?: {
111
+ removeEmptyGroup: boolean;
112
+ skipDispose: boolean;
113
+ }): void;
114
+ createWatermarkComponent(): IWatermarkRenderer;
115
+ private updateWatermark;
116
+ addGroup(options?: AddGroupOptions): DockviewGroupPanel;
117
+ removeGroup(group: DockviewGroupPanel, skipActive?: boolean): void;
118
+ moveGroupOrPanel(referenceGroup: DockviewGroupPanel, groupId: string, itemId: string | undefined, target: Position, index?: number): void;
119
+ private moveGroup;
120
+ doSetGroupActive(group: DockviewGroupPanel | undefined, skipFocus?: boolean): void;
121
+ createGroup(options?: GroupOptions): DockviewGroupPanel;
122
+ private createPanel;
123
+ private createGroupAtLocation;
124
+ private findGroup;
125
+ dispose(): void;
126
+ }