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,101 @@
1
+ import { CompositeDisposable, IDisposable } from '../lifecycle';
2
+ import { IView, LayoutPriority, Orientation, Sizing, Splitview } from './splitview';
3
+ import { SplitviewComponentOptions } from './options';
4
+ import { BaseComponentOptions } from '../panel/types';
5
+ import { Event } from '../events';
6
+ import { SplitviewPanel, ISplitviewPanel } from './splitviewPanel';
7
+ export interface SerializedSplitviewPanelData {
8
+ id: string;
9
+ component: string;
10
+ minimumSize?: number;
11
+ maximumSize?: number;
12
+ params?: {
13
+ [index: string]: any;
14
+ };
15
+ }
16
+ export interface SerializedSplitviewPanel {
17
+ snap?: boolean;
18
+ priority?: LayoutPriority;
19
+ data: SerializedSplitviewPanelData;
20
+ size: number;
21
+ }
22
+ export interface SerializedSplitview {
23
+ orientation: Orientation;
24
+ size: number;
25
+ activeView?: string;
26
+ views: SerializedSplitviewPanel[];
27
+ }
28
+ export interface AddSplitviewComponentOptions extends BaseComponentOptions {
29
+ index?: number;
30
+ minimumSize?: number;
31
+ maximumSize?: number;
32
+ }
33
+ export type SplitviewComponentUpdateOptions = Pick<SplitviewComponentOptions, 'orientation' | 'components' | 'frameworkComponents'>;
34
+ export interface ISplitviewComponent extends IDisposable {
35
+ readonly minimumSize: number;
36
+ readonly maximumSize: number;
37
+ readonly height: number;
38
+ readonly width: number;
39
+ readonly length: number;
40
+ readonly orientation: Orientation;
41
+ readonly onDidAddView: Event<IView>;
42
+ readonly onDidRemoveView: Event<IView>;
43
+ readonly onDidLayoutFromJSON: Event<void>;
44
+ readonly panels: SplitviewPanel[];
45
+ updateOptions(options: Partial<SplitviewComponentUpdateOptions>): void;
46
+ addPanel(options: AddSplitviewComponentOptions): ISplitviewPanel;
47
+ layout(width: number, height: number): void;
48
+ onDidLayoutChange: Event<void>;
49
+ toJSON(): SerializedSplitview;
50
+ fromJSON(serializedSplitview: SerializedSplitview): void;
51
+ focus(): void;
52
+ getPanel(id: string): ISplitviewPanel | undefined;
53
+ removePanel(panel: ISplitviewPanel, sizing?: Sizing): void;
54
+ setVisible(panel: ISplitviewPanel, visible: boolean): void;
55
+ movePanel(from: number, to: number): void;
56
+ clear(): void;
57
+ }
58
+ /**
59
+ * A high-level implementation of splitview that works using 'panels'
60
+ */
61
+ export declare class SplitviewComponent extends CompositeDisposable implements ISplitviewComponent {
62
+ private readonly element;
63
+ private _disposable;
64
+ private _splitview;
65
+ private _activePanel;
66
+ private _panels;
67
+ private _options;
68
+ private readonly _onDidLayoutfromJSON;
69
+ readonly onDidLayoutFromJSON: Event<void>;
70
+ private readonly _onDidAddView;
71
+ readonly onDidAddView: Event<IView>;
72
+ private readonly _onDidRemoveView;
73
+ readonly onDidRemoveView: Event<IView>;
74
+ private readonly _onDidLayoutChange;
75
+ readonly onDidLayoutChange: Event<void>;
76
+ get panels(): SplitviewPanel[];
77
+ get options(): SplitviewComponentOptions;
78
+ get length(): number;
79
+ get orientation(): Orientation;
80
+ get splitview(): Splitview;
81
+ set splitview(value: Splitview);
82
+ get minimumSize(): number;
83
+ get maximumSize(): number;
84
+ get height(): number;
85
+ get width(): number;
86
+ constructor(element: HTMLElement, options: SplitviewComponentOptions);
87
+ updateOptions(options: Partial<SplitviewComponentUpdateOptions>): void;
88
+ focus(): void;
89
+ movePanel(from: number, to: number): void;
90
+ setVisible(panel: SplitviewPanel, visible: boolean): void;
91
+ setActive(view: SplitviewPanel, skipFocus?: boolean): void;
92
+ removePanel(panel: SplitviewPanel, sizing?: Sizing): void;
93
+ getPanel(id: string): SplitviewPanel | undefined;
94
+ addPanel(options: AddSplitviewComponentOptions): ISplitviewPanel;
95
+ layout(width: number, height: number): void;
96
+ private doAddView;
97
+ toJSON(): SerializedSplitview;
98
+ fromJSON(serializedSplitview: SerializedSplitview): void;
99
+ clear(): void;
100
+ dispose(): void;
101
+ }
@@ -0,0 +1,249 @@
1
+ import { CompositeDisposable, MutableDisposable, } from '../lifecycle';
2
+ import { Orientation, Sizing, Splitview, } from './splitview';
3
+ import { Emitter } from '../events';
4
+ import { createComponent } from '../panel/componentFactory';
5
+ /**
6
+ * A high-level implementation of splitview that works using 'panels'
7
+ */
8
+ export class SplitviewComponent extends CompositeDisposable {
9
+ get panels() {
10
+ return this.splitview.getViews();
11
+ }
12
+ get options() {
13
+ return this._options;
14
+ }
15
+ get length() {
16
+ return this._panels.size;
17
+ }
18
+ get orientation() {
19
+ return this.splitview.orientation;
20
+ }
21
+ get splitview() {
22
+ return this._splitview;
23
+ }
24
+ set splitview(value) {
25
+ this._splitview = value;
26
+ this._disposable.value = new CompositeDisposable(this._splitview.onDidSashEnd(() => {
27
+ this._onDidLayoutChange.fire(undefined);
28
+ }), this._splitview.onDidAddView((e) => this._onDidAddView.fire(e)), this._splitview.onDidRemoveView((e) => this._onDidRemoveView.fire(e)));
29
+ }
30
+ get minimumSize() {
31
+ return this.splitview.minimumSize;
32
+ }
33
+ get maximumSize() {
34
+ return this.splitview.maximumSize;
35
+ }
36
+ get height() {
37
+ return this.splitview.orientation === Orientation.HORIZONTAL
38
+ ? this.splitview.orthogonalSize
39
+ : this.splitview.size;
40
+ }
41
+ get width() {
42
+ return this.splitview.orientation === Orientation.HORIZONTAL
43
+ ? this.splitview.size
44
+ : this.splitview.orthogonalSize;
45
+ }
46
+ constructor(element, options) {
47
+ super();
48
+ this.element = element;
49
+ this._disposable = new MutableDisposable();
50
+ this._panels = new Map();
51
+ this._onDidLayoutfromJSON = new Emitter();
52
+ this.onDidLayoutFromJSON = this._onDidLayoutfromJSON.event;
53
+ this._onDidAddView = new Emitter();
54
+ this.onDidAddView = this._onDidAddView.event;
55
+ this._onDidRemoveView = new Emitter();
56
+ this.onDidRemoveView = this._onDidRemoveView.event;
57
+ this._onDidLayoutChange = new Emitter();
58
+ this.onDidLayoutChange = this._onDidLayoutChange.event;
59
+ this._options = options;
60
+ if (!options.components) {
61
+ options.components = {};
62
+ }
63
+ if (!options.frameworkComponents) {
64
+ options.frameworkComponents = {};
65
+ }
66
+ this.splitview = new Splitview(this.element, options);
67
+ this.addDisposables(this._disposable, this._onDidAddView, this._onDidLayoutfromJSON, this._onDidRemoveView, this._onDidLayoutChange);
68
+ }
69
+ updateOptions(options) {
70
+ const hasOrientationChanged = typeof options.orientation === 'string' &&
71
+ this.options.orientation !== options.orientation;
72
+ this._options = Object.assign(Object.assign({}, this.options), options);
73
+ if (hasOrientationChanged) {
74
+ this.splitview.orientation = options.orientation;
75
+ }
76
+ this.splitview.layout(this.splitview.size, this.splitview.orthogonalSize);
77
+ }
78
+ focus() {
79
+ var _a;
80
+ (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();
81
+ }
82
+ movePanel(from, to) {
83
+ this.splitview.moveView(from, to);
84
+ }
85
+ setVisible(panel, visible) {
86
+ const index = this.panels.indexOf(panel);
87
+ this.splitview.setViewVisible(index, visible);
88
+ }
89
+ setActive(view, skipFocus) {
90
+ this._activePanel = view;
91
+ this.panels
92
+ .filter((v) => v !== view)
93
+ .forEach((v) => {
94
+ v.api._onDidActiveChange.fire({ isActive: false });
95
+ if (!skipFocus) {
96
+ v.focus();
97
+ }
98
+ });
99
+ view.api._onDidActiveChange.fire({ isActive: true });
100
+ if (!skipFocus) {
101
+ view.focus();
102
+ }
103
+ }
104
+ removePanel(panel, sizing) {
105
+ const disposable = this._panels.get(panel.id);
106
+ if (!disposable) {
107
+ throw new Error(`unknown splitview panel ${panel.id}`);
108
+ }
109
+ disposable.disposable.dispose();
110
+ disposable.value.dispose();
111
+ this._panels.delete(panel.id);
112
+ const index = this.panels.findIndex((_) => _ === panel);
113
+ this.splitview.removeView(index, sizing);
114
+ const panels = this.panels;
115
+ if (panels.length > 0) {
116
+ this.setActive(panels[panels.length - 1]);
117
+ }
118
+ }
119
+ getPanel(id) {
120
+ return this.panels.find((view) => view.id === id);
121
+ }
122
+ addPanel(options) {
123
+ if (this._panels.has(options.id)) {
124
+ throw new Error(`panel ${options.id} already exists`);
125
+ }
126
+ const view = createComponent(options.id, options.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper
127
+ ? {
128
+ createComponent: this.options.frameworkWrapper.createComponent,
129
+ }
130
+ : undefined);
131
+ view.orientation = this.splitview.orientation;
132
+ view.init({
133
+ params: options.params || {},
134
+ minimumSize: options.minimumSize,
135
+ maximumSize: options.maximumSize,
136
+ snap: options.snap,
137
+ priority: options.priority,
138
+ accessor: this,
139
+ });
140
+ const size = typeof options.size === 'number' ? options.size : Sizing.Distribute;
141
+ const index = typeof options.index === 'number' ? options.index : undefined;
142
+ this.splitview.addView(view, size, index);
143
+ this.doAddView(view);
144
+ this.setActive(view);
145
+ return view;
146
+ }
147
+ layout(width, height) {
148
+ const [size, orthogonalSize] = this.splitview.orientation === Orientation.HORIZONTAL
149
+ ? [width, height]
150
+ : [height, width];
151
+ this.splitview.layout(size, orthogonalSize);
152
+ }
153
+ doAddView(view) {
154
+ const disposable = view.api.onDidFocusChange((event) => {
155
+ if (!event.isFocused) {
156
+ return;
157
+ }
158
+ this.setActive(view, true);
159
+ });
160
+ this._panels.set(view.id, { disposable, value: view });
161
+ }
162
+ toJSON() {
163
+ var _a;
164
+ const views = this.splitview
165
+ .getViews()
166
+ .map((view, i) => {
167
+ const size = this.splitview.getViewSize(i);
168
+ return {
169
+ size,
170
+ data: view.toJSON(),
171
+ snap: !!view.snap,
172
+ priority: view.priority,
173
+ };
174
+ });
175
+ return {
176
+ views,
177
+ activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,
178
+ size: this.splitview.size,
179
+ orientation: this.splitview.orientation,
180
+ };
181
+ }
182
+ fromJSON(serializedSplitview) {
183
+ this.clear();
184
+ const { views, orientation, size, activeView } = serializedSplitview;
185
+ const queue = [];
186
+ this.splitview = new Splitview(this.element, {
187
+ orientation,
188
+ proportionalLayout: this.options.proportionalLayout,
189
+ descriptor: {
190
+ size,
191
+ views: views.map((view) => {
192
+ const data = view.data;
193
+ if (this._panels.has(data.id)) {
194
+ throw new Error(`panel ${data.id} already exists`);
195
+ }
196
+ const panel = createComponent(data.id, data.component, this.options.components || {}, this.options.frameworkComponents || {}, this.options.frameworkWrapper
197
+ ? {
198
+ createComponent: this.options.frameworkWrapper
199
+ .createComponent,
200
+ }
201
+ : undefined);
202
+ queue.push(() => {
203
+ panel.init({
204
+ params: data.params || {},
205
+ minimumSize: data.minimumSize,
206
+ maximumSize: data.maximumSize,
207
+ snap: view.snap,
208
+ priority: view.priority,
209
+ accessor: this,
210
+ });
211
+ });
212
+ panel.orientation = orientation;
213
+ this.doAddView(panel);
214
+ setTimeout(() => {
215
+ // the original onDidAddView events are missed since they are fired before we can subcribe to them
216
+ this._onDidAddView.fire(panel);
217
+ }, 0);
218
+ return { size: view.size, view: panel };
219
+ }),
220
+ },
221
+ });
222
+ this.layout(this.width, this.height);
223
+ queue.forEach((f) => f());
224
+ if (typeof activeView === 'string') {
225
+ const panel = this.getPanel(activeView);
226
+ if (panel) {
227
+ this.setActive(panel);
228
+ }
229
+ }
230
+ this._onDidLayoutfromJSON.fire();
231
+ }
232
+ clear() {
233
+ for (const [_, value] of this._panels.entries()) {
234
+ value.disposable.dispose();
235
+ value.value.dispose();
236
+ }
237
+ this._panels.clear();
238
+ this.splitview.dispose();
239
+ }
240
+ dispose() {
241
+ for (const [_, value] of this._panels.entries()) {
242
+ value.disposable.dispose();
243
+ value.value.dispose();
244
+ }
245
+ this._panels.clear();
246
+ this.splitview.dispose();
247
+ super.dispose();
248
+ }
249
+ }
@@ -0,0 +1,45 @@
1
+ import { ISerializableView, PanelViewInitParameters } from './options';
2
+ import { BasePanelView, BasePanelViewExported } from '../gridview/basePanelView';
3
+ import { SplitviewPanelApiImpl } from '../api/splitviewPanelApi';
4
+ import { LayoutPriority, Orientation } from './splitview';
5
+ import { Event } from '../events';
6
+ export interface ISplitviewPanel extends BasePanelViewExported<SplitviewPanelApiImpl> {
7
+ readonly priority: LayoutPriority | undefined;
8
+ readonly minimumSize: number;
9
+ readonly maximumSize: number;
10
+ readonly snap: boolean;
11
+ readonly orientation: Orientation;
12
+ }
13
+ export declare abstract class SplitviewPanel extends BasePanelView<SplitviewPanelApiImpl> implements ISerializableView, ISplitviewPanel {
14
+ private _evaluatedMinimumSize;
15
+ private _evaluatedMaximumSize;
16
+ private _minimumSize;
17
+ private _maximumSize;
18
+ private _priority?;
19
+ private _snap;
20
+ private _orientation?;
21
+ private readonly _onDidChange;
22
+ readonly onDidChange: Event<{
23
+ size?: number;
24
+ orthogonalSize?: number;
25
+ }>;
26
+ get priority(): LayoutPriority | undefined;
27
+ set orientation(value: Orientation);
28
+ get orientation(): Orientation;
29
+ get minimumSize(): number;
30
+ get maximumSize(): number;
31
+ get snap(): boolean;
32
+ constructor(id: string, componentName: string);
33
+ setVisible(isVisible: boolean): void;
34
+ setActive(isActive: boolean): void;
35
+ layout(size: number, orthogonalSize: number): void;
36
+ init(parameters: PanelViewInitParameters): void;
37
+ toJSON(): {
38
+ minimumSize: number | undefined;
39
+ maximumSize: number | undefined;
40
+ id: string;
41
+ component: string;
42
+ params?: Record<string, any> | undefined;
43
+ };
44
+ private updateConstraints;
45
+ }
@@ -0,0 +1,108 @@
1
+ import { BasePanelView, } from '../gridview/basePanelView';
2
+ import { SplitviewPanelApiImpl } from '../api/splitviewPanelApi';
3
+ import { Orientation } from './splitview';
4
+ import { Emitter } from '../events';
5
+ export class SplitviewPanel extends BasePanelView {
6
+ get priority() {
7
+ return this._priority;
8
+ }
9
+ set orientation(value) {
10
+ this._orientation = value;
11
+ }
12
+ get orientation() {
13
+ return this._orientation;
14
+ }
15
+ get minimumSize() {
16
+ const size = typeof this._minimumSize === 'function'
17
+ ? this._minimumSize()
18
+ : this._minimumSize;
19
+ if (size !== this._evaluatedMinimumSize) {
20
+ this._evaluatedMinimumSize = size;
21
+ this.updateConstraints();
22
+ }
23
+ return size;
24
+ }
25
+ get maximumSize() {
26
+ const size = typeof this._maximumSize === 'function'
27
+ ? this._maximumSize()
28
+ : this._maximumSize;
29
+ if (size !== this._evaluatedMaximumSize) {
30
+ this._evaluatedMaximumSize = size;
31
+ this.updateConstraints();
32
+ }
33
+ return size;
34
+ }
35
+ get snap() {
36
+ return this._snap;
37
+ }
38
+ constructor(id, componentName) {
39
+ super(id, componentName, new SplitviewPanelApiImpl(id));
40
+ this._evaluatedMinimumSize = 0;
41
+ this._evaluatedMaximumSize = Number.POSITIVE_INFINITY;
42
+ this._minimumSize = 0;
43
+ this._maximumSize = Number.POSITIVE_INFINITY;
44
+ this._snap = false;
45
+ this._onDidChange = new Emitter();
46
+ this.onDidChange = this._onDidChange.event;
47
+ this.api.initialize(this);
48
+ this.addDisposables(this._onDidChange, this.api.onVisibilityChange((event) => {
49
+ const { isVisible } = event;
50
+ const { accessor } = this._params;
51
+ accessor.setVisible(this, isVisible);
52
+ }), this.api.onActiveChange(() => {
53
+ const { accessor } = this._params;
54
+ accessor.setActive(this);
55
+ }), this.api.onDidConstraintsChangeInternal((event) => {
56
+ if (typeof event.minimumSize === 'number' ||
57
+ typeof event.minimumSize === 'function') {
58
+ this._minimumSize = event.minimumSize;
59
+ }
60
+ if (typeof event.maximumSize === 'number' ||
61
+ typeof event.maximumSize === 'function') {
62
+ this._maximumSize = event.maximumSize;
63
+ }
64
+ this.updateConstraints();
65
+ }), this.api.onDidSizeChange((event) => {
66
+ this._onDidChange.fire({ size: event.size });
67
+ }));
68
+ }
69
+ setVisible(isVisible) {
70
+ this.api._onDidVisibilityChange.fire({ isVisible });
71
+ }
72
+ setActive(isActive) {
73
+ this.api._onDidActiveChange.fire({ isActive });
74
+ }
75
+ layout(size, orthogonalSize) {
76
+ const [width, height] = this.orientation === Orientation.HORIZONTAL
77
+ ? [size, orthogonalSize]
78
+ : [orthogonalSize, size];
79
+ super.layout(width, height);
80
+ }
81
+ init(parameters) {
82
+ super.init(parameters);
83
+ this._priority = parameters.priority;
84
+ if (parameters.minimumSize) {
85
+ this._minimumSize = parameters.minimumSize;
86
+ }
87
+ if (parameters.maximumSize) {
88
+ this._maximumSize = parameters.maximumSize;
89
+ }
90
+ if (parameters.snap) {
91
+ this._snap = parameters.snap;
92
+ }
93
+ }
94
+ toJSON() {
95
+ const maximum = (value) => value === Number.MAX_SAFE_INTEGER ||
96
+ value === Number.POSITIVE_INFINITY
97
+ ? undefined
98
+ : value;
99
+ const minimum = (value) => (value <= 0 ? undefined : value);
100
+ return Object.assign(Object.assign({}, super.toJSON()), { minimumSize: minimum(this.minimumSize), maximumSize: maximum(this.maximumSize) });
101
+ }
102
+ updateConstraints() {
103
+ this.api._onDidConstraintsChange.fire({
104
+ maximumSize: this._evaluatedMaximumSize,
105
+ minimumSize: this._evaluatedMinimumSize,
106
+ });
107
+ }
108
+ }
@@ -0,0 +1,25 @@
1
+ import { IDisposable } from '../lifecycle';
2
+ import { IView, LayoutPriority } from './splitview';
3
+ export declare class ViewItem {
4
+ container: HTMLElement;
5
+ view: IView;
6
+ private disposable;
7
+ private _size;
8
+ private _cachedVisibleSize;
9
+ set size(size: number);
10
+ get size(): number;
11
+ get cachedVisibleSize(): number | undefined;
12
+ get visible(): boolean;
13
+ get minimumSize(): number;
14
+ get viewMinimumSize(): number;
15
+ get maximumSize(): number;
16
+ get viewMaximumSize(): number;
17
+ get priority(): LayoutPriority | undefined;
18
+ get snap(): boolean;
19
+ set enabled(enabled: boolean);
20
+ constructor(container: HTMLElement, view: IView, size: number | {
21
+ cachedVisibleSize: number;
22
+ }, disposable: IDisposable);
23
+ setVisible(visible: boolean, size?: number): void;
24
+ dispose(): IView;
25
+ }
@@ -0,0 +1,74 @@
1
+ import { clamp } from '../math';
2
+ export class ViewItem {
3
+ set size(size) {
4
+ this._size = size;
5
+ }
6
+ get size() {
7
+ return this._size;
8
+ }
9
+ get cachedVisibleSize() {
10
+ return this._cachedVisibleSize;
11
+ }
12
+ get visible() {
13
+ return typeof this._cachedVisibleSize === 'undefined';
14
+ }
15
+ get minimumSize() {
16
+ return this.visible ? this.view.minimumSize : 0;
17
+ }
18
+ get viewMinimumSize() {
19
+ return this.view.minimumSize;
20
+ }
21
+ get maximumSize() {
22
+ return this.visible ? this.view.maximumSize : 0;
23
+ }
24
+ get viewMaximumSize() {
25
+ return this.view.maximumSize;
26
+ }
27
+ get priority() {
28
+ return this.view.priority;
29
+ }
30
+ get snap() {
31
+ return !!this.view.snap;
32
+ }
33
+ set enabled(enabled) {
34
+ this.container.style.pointerEvents = enabled ? '' : 'none';
35
+ }
36
+ constructor(container, view, size, disposable) {
37
+ this.container = container;
38
+ this.view = view;
39
+ this.disposable = disposable;
40
+ this._cachedVisibleSize = undefined;
41
+ if (typeof size === 'number') {
42
+ this._size = size;
43
+ this._cachedVisibleSize = undefined;
44
+ container.classList.add('visible');
45
+ }
46
+ else {
47
+ this._size = 0;
48
+ this._cachedVisibleSize = size.cachedVisibleSize;
49
+ }
50
+ }
51
+ setVisible(visible, size) {
52
+ var _a;
53
+ if (visible === this.visible) {
54
+ return;
55
+ }
56
+ if (visible) {
57
+ this.size = clamp((_a = this._cachedVisibleSize) !== null && _a !== void 0 ? _a : 0, this.viewMinimumSize, this.viewMaximumSize);
58
+ this._cachedVisibleSize = undefined;
59
+ }
60
+ else {
61
+ this._cachedVisibleSize =
62
+ typeof size === 'number' ? size : this.size;
63
+ this.size = 0;
64
+ }
65
+ this.container.classList.toggle('visible', visible);
66
+ if (this.view.setVisible) {
67
+ this.view.setVisible(visible);
68
+ }
69
+ }
70
+ dispose() {
71
+ this.disposable.dispose();
72
+ return this.view;
73
+ }
74
+ }
@@ -0,0 +1,3 @@
1
+ export declare const createCloseButton: () => SVGSVGElement;
2
+ export declare const createExpandMoreButton: () => SVGSVGElement;
3
+ export declare const createChevronRightButton: () => SVGSVGElement;
@@ -0,0 +1,31 @@
1
+ const createSvgElementFromPath = (params) => {
2
+ const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
3
+ svg.setAttributeNS(null, 'height', params.height);
4
+ svg.setAttributeNS(null, 'width', params.width);
5
+ svg.setAttributeNS(null, 'viewBox', params.viewbox);
6
+ svg.setAttributeNS(null, 'aria-hidden', 'false');
7
+ svg.setAttributeNS(null, 'focusable', 'false');
8
+ svg.classList.add('dockview-svg');
9
+ const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
10
+ path.setAttributeNS(null, 'd', params.path);
11
+ svg.appendChild(path);
12
+ return svg;
13
+ };
14
+ export const createCloseButton = () => createSvgElementFromPath({
15
+ width: '11',
16
+ height: '11',
17
+ viewbox: '0 0 28 28',
18
+ path: 'M2.1 27.3L0 25.2L11.55 13.65L0 2.1L2.1 0L13.65 11.55L25.2 0L27.3 2.1L15.75 13.65L27.3 25.2L25.2 27.3L13.65 15.75L2.1 27.3Z',
19
+ });
20
+ export const createExpandMoreButton = () => createSvgElementFromPath({
21
+ width: '11',
22
+ height: '11',
23
+ viewbox: '0 0 24 15',
24
+ path: 'M12 14.15L0 2.15L2.15 0L12 9.9L21.85 0.0499992L24 2.2L12 14.15Z',
25
+ });
26
+ export const createChevronRightButton = () => createSvgElementFromPath({
27
+ width: '11',
28
+ height: '11',
29
+ viewbox: '0 0 15 25',
30
+ path: 'M2.15 24.1L0 21.95L9.9 12.05L0 2.15L2.15 0L14.2 12.05L2.15 24.1Z',
31
+ });
@@ -0,0 +1,2 @@
1
+ export type FunctionOrValue<T> = (() => T) | T;
2
+ export type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
@@ -0,0 +1 @@
1
+ export {};