dockview-core 1.8.4 → 1.9.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 (464) hide show
  1. package/README.md +58 -51
  2. package/dist/cjs/api/component.api.d.ts +467 -152
  3. package/dist/cjs/api/component.api.d.ts.map +1 -1
  4. package/dist/cjs/api/component.api.js +917 -592
  5. package/dist/cjs/api/component.api.js.map +1 -1
  6. package/dist/cjs/api/dockviewGroupPanelApi.d.ts +36 -29
  7. package/dist/cjs/api/dockviewGroupPanelApi.d.ts.map +1 -1
  8. package/dist/cjs/api/dockviewGroupPanelApi.js +83 -53
  9. package/dist/cjs/api/dockviewGroupPanelApi.js.map +1 -1
  10. package/dist/cjs/api/dockviewPanelApi.d.ts +64 -47
  11. package/dist/cjs/api/dockviewPanelApi.d.ts.map +1 -1
  12. package/dist/cjs/api/dockviewPanelApi.js +108 -88
  13. package/dist/cjs/api/dockviewPanelApi.js.map +1 -1
  14. package/dist/cjs/api/gridviewPanelApi.d.ts +37 -37
  15. package/dist/cjs/api/gridviewPanelApi.js +47 -47
  16. package/dist/cjs/api/gridviewPanelApi.js.map +1 -1
  17. package/dist/cjs/api/panelApi.d.ts +88 -88
  18. package/dist/cjs/api/panelApi.js +135 -135
  19. package/dist/cjs/api/panelApi.js.map +1 -1
  20. package/dist/cjs/api/paneviewPanelApi.d.ts +26 -26
  21. package/dist/cjs/api/paneviewPanelApi.js +57 -57
  22. package/dist/cjs/api/paneviewPanelApi.js.map +1 -1
  23. package/dist/cjs/api/splitviewPanelApi.d.ts +32 -32
  24. package/dist/cjs/api/splitviewPanelApi.js +47 -47
  25. package/dist/cjs/api/splitviewPanelApi.js.map +1 -1
  26. package/dist/cjs/array.d.ts +13 -13
  27. package/dist/cjs/array.js +67 -67
  28. package/dist/cjs/array.js.map +1 -1
  29. package/dist/cjs/constants.d.ts +6 -0
  30. package/dist/cjs/constants.d.ts.map +1 -0
  31. package/dist/cjs/constants.js +6 -0
  32. package/dist/cjs/constants.js.map +1 -0
  33. package/dist/cjs/dnd/abstractDragHandler.d.ts +12 -12
  34. package/dist/cjs/dnd/abstractDragHandler.js +141 -141
  35. package/dist/cjs/dnd/abstractDragHandler.js.map +1 -1
  36. package/dist/cjs/dnd/dataTransfer.d.ts +30 -31
  37. package/dist/cjs/dnd/dataTransfer.d.ts.map +1 -1
  38. package/dist/cjs/dnd/dataTransfer.js +99 -100
  39. package/dist/cjs/dnd/dataTransfer.js.map +1 -1
  40. package/dist/cjs/dnd/dnd.d.ts +32 -27
  41. package/dist/cjs/dnd/dnd.d.ts.map +1 -1
  42. package/dist/cjs/dnd/dnd.js +74 -59
  43. package/dist/cjs/dnd/dnd.js.map +1 -1
  44. package/dist/cjs/dnd/droptarget.d.ts +55 -53
  45. package/dist/cjs/dnd/droptarget.d.ts.map +1 -1
  46. package/dist/cjs/dnd/droptarget.js +305 -304
  47. package/dist/cjs/dnd/droptarget.js.map +1 -1
  48. package/dist/cjs/dnd/ghost.d.ts +1 -1
  49. package/dist/cjs/dnd/ghost.js +15 -15
  50. package/dist/cjs/dnd/groupDragHandler.d.ts +12 -12
  51. package/dist/cjs/dnd/groupDragHandler.js +77 -77
  52. package/dist/cjs/dnd/groupDragHandler.js.map +1 -1
  53. package/dist/cjs/dnd/overlay.d.ts +30 -43
  54. package/dist/cjs/dnd/overlay.d.ts.map +1 -1
  55. package/dist/cjs/dnd/overlay.js +412 -412
  56. package/dist/cjs/dnd/overlay.js.map +1 -1
  57. package/dist/cjs/dockview/components/panel/content.d.ts +43 -30
  58. package/dist/cjs/dockview/components/panel/content.d.ts.map +1 -1
  59. package/dist/cjs/dockview/components/panel/content.js +159 -100
  60. package/dist/cjs/dockview/components/panel/content.js.map +1 -1
  61. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +21 -21
  62. package/dist/cjs/dockview/components/tab/defaultTab.js +105 -105
  63. package/dist/cjs/dockview/components/tab/defaultTab.js.map +1 -1
  64. package/dist/cjs/dockview/components/tab/tab.d.ts +34 -34
  65. package/dist/cjs/dockview/components/tab/tab.js +120 -120
  66. package/dist/cjs/dockview/components/tab/tab.js.map +1 -1
  67. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +81 -81
  68. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +325 -325
  69. package/dist/cjs/dockview/components/titlebar/tabsContainer.js.map +1 -1
  70. package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts +17 -17
  71. package/dist/cjs/dockview/components/titlebar/voidContainer.js +77 -77
  72. package/dist/cjs/dockview/components/titlebar/voidContainer.js.map +1 -1
  73. package/dist/cjs/dockview/components/watermark/watermark.d.ts +18 -18
  74. package/dist/cjs/dockview/components/watermark/watermark.js +87 -87
  75. package/dist/cjs/dockview/components/watermark/watermark.js.map +1 -1
  76. package/dist/cjs/dockview/deserializer.d.ts +12 -12
  77. package/dist/cjs/dockview/deserializer.d.ts.map +1 -1
  78. package/dist/cjs/dockview/deserializer.js +35 -33
  79. package/dist/cjs/dockview/deserializer.js.map +1 -1
  80. package/dist/cjs/dockview/dockviewComponent.d.ts +171 -159
  81. package/dist/cjs/dockview/dockviewComponent.d.ts.map +1 -1
  82. package/dist/cjs/dockview/dockviewComponent.js +1354 -1156
  83. package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
  84. package/dist/cjs/dockview/dockviewFloatingGroupPanel.d.ts +23 -23
  85. package/dist/cjs/dockview/dockviewFloatingGroupPanel.js +34 -34
  86. package/dist/cjs/dockview/dockviewFloatingGroupPanel.js.map +1 -1
  87. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +30 -30
  88. package/dist/cjs/dockview/dockviewGroupPanel.d.ts.map +1 -1
  89. package/dist/cjs/dockview/dockviewGroupPanel.js +99 -97
  90. package/dist/cjs/dockview/dockviewGroupPanel.js.map +1 -1
  91. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +186 -185
  92. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts.map +1 -1
  93. package/dist/cjs/dockview/dockviewGroupPanelModel.js +626 -631
  94. package/dist/cjs/dockview/dockviewGroupPanelModel.js.map +1 -1
  95. package/dist/cjs/dockview/dockviewPanel.d.ts +48 -41
  96. package/dist/cjs/dockview/dockviewPanel.d.ts.map +1 -1
  97. package/dist/cjs/dockview/dockviewPanel.js +194 -171
  98. package/dist/cjs/dockview/dockviewPanel.js.map +1 -1
  99. package/dist/cjs/dockview/dockviewPanelModel.d.ts +35 -35
  100. package/dist/cjs/dockview/dockviewPanelModel.js +98 -98
  101. package/dist/cjs/dockview/dockviewPanelModel.js.map +1 -1
  102. package/dist/cjs/dockview/dockviewPopoutGroupPanel.d.ts +16 -0
  103. package/dist/cjs/dockview/dockviewPopoutGroupPanel.d.ts.map +1 -0
  104. package/dist/cjs/dockview/dockviewPopoutGroupPanel.js +50 -0
  105. package/dist/cjs/dockview/dockviewPopoutGroupPanel.js.map +1 -0
  106. package/dist/cjs/dockview/options.d.ts +138 -136
  107. package/dist/cjs/dockview/options.d.ts.map +1 -1
  108. package/dist/cjs/dockview/options.js +31 -31
  109. package/dist/cjs/dockview/options.js.map +1 -1
  110. package/dist/cjs/dockview/types.d.ts +65 -63
  111. package/dist/cjs/dockview/types.d.ts.map +1 -1
  112. package/dist/cjs/dockview/types.js +10 -10
  113. package/dist/cjs/dockview/types.js.map +1 -1
  114. package/dist/cjs/dom.d.ts +28 -16
  115. package/dist/cjs/dom.d.ts.map +1 -1
  116. package/dist/cjs/dom.js +276 -197
  117. package/dist/cjs/dom.js.map +1 -1
  118. package/dist/cjs/events.d.ts +47 -47
  119. package/dist/cjs/events.js +216 -216
  120. package/dist/cjs/events.js.map +1 -1
  121. package/dist/cjs/gridview/baseComponentGridview.d.ts +98 -87
  122. package/dist/cjs/gridview/baseComponentGridview.d.ts.map +1 -1
  123. package/dist/cjs/gridview/baseComponentGridview.js +289 -270
  124. package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
  125. package/dist/cjs/gridview/basePanelView.d.ts +40 -40
  126. package/dist/cjs/gridview/basePanelView.js +156 -156
  127. package/dist/cjs/gridview/basePanelView.js.map +1 -1
  128. package/dist/cjs/gridview/branchNode.d.ts +51 -49
  129. package/dist/cjs/gridview/branchNode.d.ts.map +1 -1
  130. package/dist/cjs/gridview/branchNode.js +370 -343
  131. package/dist/cjs/gridview/branchNode.js.map +1 -1
  132. package/dist/cjs/gridview/gridview.d.ts +140 -133
  133. package/dist/cjs/gridview/gridview.d.ts.map +1 -1
  134. package/dist/cjs/gridview/gridview.js +627 -547
  135. package/dist/cjs/gridview/gridview.js.map +1 -1
  136. package/dist/cjs/gridview/gridviewComponent.d.ts +80 -80
  137. package/dist/cjs/gridview/gridviewComponent.d.ts.map +1 -1
  138. package/dist/cjs/gridview/gridviewComponent.js +362 -360
  139. package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
  140. package/dist/cjs/gridview/gridviewPanel.d.ts +65 -65
  141. package/dist/cjs/gridview/gridviewPanel.js +214 -214
  142. package/dist/cjs/gridview/gridviewPanel.js.map +1 -1
  143. package/dist/cjs/gridview/leafNode.d.ts +34 -34
  144. package/dist/cjs/gridview/leafNode.d.ts.map +1 -1
  145. package/dist/cjs/gridview/leafNode.js +169 -170
  146. package/dist/cjs/gridview/leafNode.js.map +1 -1
  147. package/dist/cjs/gridview/options.d.ts +17 -18
  148. package/dist/cjs/gridview/options.d.ts.map +1 -1
  149. package/dist/cjs/gridview/options.js +2 -2
  150. package/dist/cjs/gridview/types.d.ts +3 -3
  151. package/dist/cjs/gridview/types.js +2 -2
  152. package/dist/cjs/index.d.ts +43 -42
  153. package/dist/cjs/index.d.ts.map +1 -1
  154. package/dist/cjs/index.js +61 -61
  155. package/dist/cjs/index.js.map +1 -1
  156. package/dist/cjs/lifecycle.d.ts +24 -23
  157. package/dist/cjs/lifecycle.d.ts.map +1 -1
  158. package/dist/cjs/lifecycle.js +73 -65
  159. package/dist/cjs/lifecycle.js.map +1 -1
  160. package/dist/cjs/math.d.ts +5 -5
  161. package/dist/cjs/math.js +34 -34
  162. package/dist/cjs/math.js.map +1 -1
  163. package/dist/cjs/overlayRenderContainer.d.ts +19 -0
  164. package/dist/cjs/overlayRenderContainer.d.ts.map +1 -0
  165. package/dist/cjs/overlayRenderContainer.js +170 -0
  166. package/dist/cjs/overlayRenderContainer.js.map +1 -0
  167. package/dist/cjs/panel/componentFactory.d.ts +11 -10
  168. package/dist/cjs/panel/componentFactory.d.ts.map +1 -1
  169. package/dist/cjs/panel/componentFactory.js +30 -30
  170. package/dist/cjs/panel/componentFactory.js.map +1 -1
  171. package/dist/cjs/panel/types.d.ts +33 -33
  172. package/dist/cjs/panel/types.js +2 -2
  173. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +21 -21
  174. package/dist/cjs/paneview/defaultPaneviewHeader.js +90 -90
  175. package/dist/cjs/paneview/defaultPaneviewHeader.js.map +1 -1
  176. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +21 -21
  177. package/dist/cjs/paneview/draggablePaneviewPanel.js +131 -131
  178. package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
  179. package/dist/cjs/paneview/options.d.ts +25 -28
  180. package/dist/cjs/paneview/options.d.ts.map +1 -1
  181. package/dist/cjs/paneview/options.js +2 -2
  182. package/dist/cjs/paneview/paneview.d.ts +40 -40
  183. package/dist/cjs/paneview/paneview.d.ts.map +1 -1
  184. package/dist/cjs/paneview/paneview.js +200 -201
  185. package/dist/cjs/paneview/paneview.js.map +1 -1
  186. package/dist/cjs/paneview/paneviewComponent.d.ts +128 -128
  187. package/dist/cjs/paneview/paneviewComponent.js +400 -397
  188. package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
  189. package/dist/cjs/paneview/paneviewPanel.d.ts +92 -92
  190. package/dist/cjs/paneview/paneviewPanel.d.ts.map +1 -1
  191. package/dist/cjs/paneview/paneviewPanel.js +275 -275
  192. package/dist/cjs/paneview/paneviewPanel.js.map +1 -1
  193. package/dist/cjs/popoutWindow.d.ts +18 -0
  194. package/dist/cjs/popoutWindow.d.ts.map +1 -0
  195. package/dist/cjs/popoutWindow.js +130 -0
  196. package/dist/cjs/popoutWindow.js.map +1 -0
  197. package/dist/cjs/resizable.d.ts +10 -7
  198. package/dist/cjs/resizable.d.ts.map +1 -1
  199. package/dist/cjs/resizable.js +79 -64
  200. package/dist/cjs/resizable.js.map +1 -1
  201. package/dist/cjs/splitview/options.d.ts +26 -27
  202. package/dist/cjs/splitview/options.d.ts.map +1 -1
  203. package/dist/cjs/splitview/options.js +2 -2
  204. package/dist/cjs/splitview/splitview.d.ts +129 -128
  205. package/dist/cjs/splitview/splitview.d.ts.map +1 -1
  206. package/dist/cjs/splitview/splitview.js +959 -936
  207. package/dist/cjs/splitview/splitview.js.map +1 -1
  208. package/dist/cjs/splitview/splitviewComponent.d.ts +101 -101
  209. package/dist/cjs/splitview/splitviewComponent.js +395 -392
  210. package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
  211. package/dist/cjs/splitview/splitviewPanel.d.ts +45 -45
  212. package/dist/cjs/splitview/splitviewPanel.d.ts.map +1 -1
  213. package/dist/cjs/splitview/splitviewPanel.js +179 -179
  214. package/dist/cjs/splitview/splitviewPanel.js.map +1 -1
  215. package/dist/cjs/splitview/viewItem.d.ts +25 -25
  216. package/dist/cjs/splitview/viewItem.js +119 -119
  217. package/dist/cjs/splitview/viewItem.js.map +1 -1
  218. package/dist/cjs/svg.d.ts +3 -3
  219. package/dist/cjs/svg.js +43 -43
  220. package/dist/cjs/types.d.ts +8 -2
  221. package/dist/cjs/types.d.ts.map +1 -1
  222. package/dist/cjs/types.js +2 -2
  223. package/dist/dockview-core.amd.js +8374 -7314
  224. package/dist/dockview-core.amd.js.map +1 -1
  225. package/dist/dockview-core.amd.min.js +2 -2
  226. package/dist/dockview-core.amd.min.js.map +1 -1
  227. package/dist/dockview-core.amd.min.noStyle.js +2 -2
  228. package/dist/dockview-core.amd.min.noStyle.js.map +1 -1
  229. package/dist/dockview-core.amd.noStyle.js +8328 -7268
  230. package/dist/dockview-core.amd.noStyle.js.map +1 -1
  231. package/dist/dockview-core.cjs.js +8374 -7314
  232. package/dist/dockview-core.cjs.js.map +1 -1
  233. package/dist/dockview-core.esm.js +8374 -7314
  234. package/dist/dockview-core.esm.js.map +1 -1
  235. package/dist/dockview-core.esm.min.js +2 -2
  236. package/dist/dockview-core.esm.min.js.map +1 -1
  237. package/dist/dockview-core.js +8374 -7314
  238. package/dist/dockview-core.js.map +1 -1
  239. package/dist/dockview-core.min.js +2 -2
  240. package/dist/dockview-core.min.js.map +1 -1
  241. package/dist/dockview-core.min.noStyle.js +2 -2
  242. package/dist/dockview-core.min.noStyle.js.map +1 -1
  243. package/dist/dockview-core.noStyle.js +8328 -7268
  244. package/dist/dockview-core.noStyle.js.map +1 -1
  245. package/dist/esm/api/component.api.d.ts +467 -152
  246. package/dist/esm/api/component.api.d.ts.map +1 -1
  247. package/dist/esm/api/component.api.js +656 -335
  248. package/dist/esm/api/component.api.js.map +1 -1
  249. package/dist/esm/api/dockviewGroupPanelApi.d.ts +36 -29
  250. package/dist/esm/api/dockviewGroupPanelApi.d.ts.map +1 -1
  251. package/dist/esm/api/dockviewGroupPanelApi.js +57 -27
  252. package/dist/esm/api/dockviewGroupPanelApi.js.map +1 -1
  253. package/dist/esm/api/dockviewPanelApi.d.ts +64 -47
  254. package/dist/esm/api/dockviewPanelApi.d.ts.map +1 -1
  255. package/dist/esm/api/dockviewPanelApi.js +69 -53
  256. package/dist/esm/api/dockviewPanelApi.js.map +1 -1
  257. package/dist/esm/api/gridviewPanelApi.d.ts +37 -37
  258. package/dist/esm/api/gridviewPanelApi.js +25 -25
  259. package/dist/esm/api/gridviewPanelApi.js.map +1 -1
  260. package/dist/esm/api/panelApi.d.ts +88 -88
  261. package/dist/esm/api/panelApi.js +93 -93
  262. package/dist/esm/api/paneviewPanelApi.d.ts +26 -26
  263. package/dist/esm/api/paneviewPanelApi.js +27 -27
  264. package/dist/esm/api/splitviewPanelApi.d.ts +32 -32
  265. package/dist/esm/api/splitviewPanelApi.js +25 -25
  266. package/dist/esm/array.d.ts +13 -13
  267. package/dist/esm/array.js +57 -57
  268. package/dist/esm/array.js.map +1 -1
  269. package/dist/esm/constants.d.ts +6 -0
  270. package/dist/esm/constants.d.ts.map +1 -0
  271. package/dist/esm/constants.js +3 -0
  272. package/dist/esm/constants.js.map +1 -0
  273. package/dist/esm/dnd/abstractDragHandler.d.ts +12 -12
  274. package/dist/esm/dnd/abstractDragHandler.js +63 -63
  275. package/dist/esm/dnd/abstractDragHandler.js.map +1 -1
  276. package/dist/esm/dnd/dataTransfer.d.ts +30 -31
  277. package/dist/esm/dnd/dataTransfer.d.ts.map +1 -1
  278. package/dist/esm/dnd/dataTransfer.js +66 -69
  279. package/dist/esm/dnd/dataTransfer.js.map +1 -1
  280. package/dist/esm/dnd/dnd.d.ts +32 -27
  281. package/dist/esm/dnd/dnd.d.ts.map +1 -1
  282. package/dist/esm/dnd/dnd.js +51 -36
  283. package/dist/esm/dnd/dnd.js.map +1 -1
  284. package/dist/esm/dnd/droptarget.d.ts +55 -53
  285. package/dist/esm/dnd/droptarget.d.ts.map +1 -1
  286. package/dist/esm/dnd/droptarget.js +275 -274
  287. package/dist/esm/dnd/droptarget.js.map +1 -1
  288. package/dist/esm/dnd/ghost.d.ts +1 -1
  289. package/dist/esm/dnd/ghost.js +11 -11
  290. package/dist/esm/dnd/groupDragHandler.d.ts +12 -12
  291. package/dist/esm/dnd/groupDragHandler.js +54 -54
  292. package/dist/esm/dnd/groupDragHandler.js.map +1 -1
  293. package/dist/esm/dnd/overlay.d.ts +30 -43
  294. package/dist/esm/dnd/overlay.d.ts.map +1 -1
  295. package/dist/esm/dnd/overlay.js +304 -304
  296. package/dist/esm/dnd/overlay.js.map +1 -1
  297. package/dist/esm/dockview/components/panel/content.d.ts +43 -30
  298. package/dist/esm/dockview/components/panel/content.d.ts.map +1 -1
  299. package/dist/esm/dockview/components/panel/content.js +131 -73
  300. package/dist/esm/dockview/components/panel/content.js.map +1 -1
  301. package/dist/esm/dockview/components/tab/defaultTab.d.ts +21 -21
  302. package/dist/esm/dockview/components/tab/defaultTab.js +67 -67
  303. package/dist/esm/dockview/components/tab/defaultTab.js.map +1 -1
  304. package/dist/esm/dockview/components/tab/tab.d.ts +34 -34
  305. package/dist/esm/dockview/components/tab/tab.js +90 -90
  306. package/dist/esm/dockview/components/tab/tab.js.map +1 -1
  307. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +81 -81
  308. package/dist/esm/dockview/components/titlebar/tabsContainer.js +239 -239
  309. package/dist/esm/dockview/components/titlebar/tabsContainer.js.map +1 -1
  310. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +17 -17
  311. package/dist/esm/dockview/components/titlebar/voidContainer.js +51 -51
  312. package/dist/esm/dockview/components/titlebar/voidContainer.js.map +1 -1
  313. package/dist/esm/dockview/components/watermark/watermark.d.ts +18 -18
  314. package/dist/esm/dockview/components/watermark/watermark.js +61 -61
  315. package/dist/esm/dockview/components/watermark/watermark.js.map +1 -1
  316. package/dist/esm/dockview/deserializer.d.ts +12 -12
  317. package/dist/esm/dockview/deserializer.d.ts.map +1 -1
  318. package/dist/esm/dockview/deserializer.js +30 -28
  319. package/dist/esm/dockview/deserializer.js.map +1 -1
  320. package/dist/esm/dockview/dockviewComponent.d.ts +171 -159
  321. package/dist/esm/dockview/dockviewComponent.d.ts.map +1 -1
  322. package/dist/esm/dockview/dockviewComponent.js +1078 -918
  323. package/dist/esm/dockview/dockviewComponent.js.map +1 -1
  324. package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts +23 -23
  325. package/dist/esm/dockview/dockviewFloatingGroupPanel.js +12 -12
  326. package/dist/esm/dockview/dockviewGroupPanel.d.ts +30 -30
  327. package/dist/esm/dockview/dockviewGroupPanel.d.ts.map +1 -1
  328. package/dist/esm/dockview/dockviewGroupPanel.js +53 -51
  329. package/dist/esm/dockview/dockviewGroupPanel.js.map +1 -1
  330. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +186 -185
  331. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts.map +1 -1
  332. package/dist/esm/dockview/dockviewGroupPanelModel.js +493 -498
  333. package/dist/esm/dockview/dockviewGroupPanelModel.js.map +1 -1
  334. package/dist/esm/dockview/dockviewPanel.d.ts +48 -41
  335. package/dist/esm/dockview/dockviewPanel.d.ts.map +1 -1
  336. package/dist/esm/dockview/dockviewPanel.js +123 -104
  337. package/dist/esm/dockview/dockviewPanel.js.map +1 -1
  338. package/dist/esm/dockview/dockviewPanelModel.d.ts +35 -35
  339. package/dist/esm/dockview/dockviewPanelModel.js +74 -74
  340. package/dist/esm/dockview/dockviewPanelModel.js.map +1 -1
  341. package/dist/esm/dockview/dockviewPopoutGroupPanel.d.ts +16 -0
  342. package/dist/esm/dockview/dockviewPopoutGroupPanel.d.ts.map +1 -0
  343. package/dist/esm/dockview/dockviewPopoutGroupPanel.js +28 -0
  344. package/dist/esm/dockview/dockviewPopoutGroupPanel.js.map +1 -0
  345. package/dist/esm/dockview/options.d.ts +138 -136
  346. package/dist/esm/dockview/options.d.ts.map +1 -1
  347. package/dist/esm/dockview/options.js +24 -24
  348. package/dist/esm/dockview/options.js.map +1 -1
  349. package/dist/esm/dockview/types.d.ts +65 -63
  350. package/dist/esm/dockview/types.d.ts.map +1 -1
  351. package/dist/esm/dockview/types.js +7 -7
  352. package/dist/esm/dockview/types.js.map +1 -1
  353. package/dist/esm/dom.d.ts +28 -16
  354. package/dist/esm/dom.d.ts.map +1 -1
  355. package/dist/esm/dom.js +181 -126
  356. package/dist/esm/dom.js.map +1 -1
  357. package/dist/esm/events.d.ts +47 -47
  358. package/dist/esm/events.js +156 -156
  359. package/dist/esm/events.js.map +1 -1
  360. package/dist/esm/gridview/baseComponentGridview.d.ts +98 -87
  361. package/dist/esm/gridview/baseComponentGridview.d.ts.map +1 -1
  362. package/dist/esm/gridview/baseComponentGridview.js +199 -184
  363. package/dist/esm/gridview/baseComponentGridview.js.map +1 -1
  364. package/dist/esm/gridview/basePanelView.d.ts +40 -40
  365. package/dist/esm/gridview/basePanelView.js +85 -85
  366. package/dist/esm/gridview/basePanelView.js.map +1 -1
  367. package/dist/esm/gridview/branchNode.d.ts +51 -49
  368. package/dist/esm/gridview/branchNode.d.ts.map +1 -1
  369. package/dist/esm/gridview/branchNode.js +240 -219
  370. package/dist/esm/gridview/branchNode.js.map +1 -1
  371. package/dist/esm/gridview/gridview.d.ts +140 -133
  372. package/dist/esm/gridview/gridview.d.ts.map +1 -1
  373. package/dist/esm/gridview/gridview.js +541 -461
  374. package/dist/esm/gridview/gridview.js.map +1 -1
  375. package/dist/esm/gridview/gridviewComponent.d.ts +80 -80
  376. package/dist/esm/gridview/gridviewComponent.d.ts.map +1 -1
  377. package/dist/esm/gridview/gridviewComponent.js +264 -262
  378. package/dist/esm/gridview/gridviewComponent.js.map +1 -1
  379. package/dist/esm/gridview/gridviewPanel.d.ts +65 -65
  380. package/dist/esm/gridview/gridviewPanel.js +151 -151
  381. package/dist/esm/gridview/gridviewPanel.js.map +1 -1
  382. package/dist/esm/gridview/leafNode.d.ts +34 -34
  383. package/dist/esm/gridview/leafNode.d.ts.map +1 -1
  384. package/dist/esm/gridview/leafNode.js +102 -103
  385. package/dist/esm/gridview/leafNode.js.map +1 -1
  386. package/dist/esm/gridview/options.d.ts +17 -18
  387. package/dist/esm/gridview/options.d.ts.map +1 -1
  388. package/dist/esm/gridview/options.js +1 -1
  389. package/dist/esm/gridview/types.d.ts +3 -3
  390. package/dist/esm/gridview/types.js +1 -1
  391. package/dist/esm/index.d.ts +43 -42
  392. package/dist/esm/index.d.ts.map +1 -1
  393. package/dist/esm/index.js +34 -34
  394. package/dist/esm/index.js.map +1 -1
  395. package/dist/esm/lifecycle.d.ts +24 -23
  396. package/dist/esm/lifecycle.d.ts.map +1 -1
  397. package/dist/esm/lifecycle.js +49 -41
  398. package/dist/esm/lifecycle.js.map +1 -1
  399. package/dist/esm/math.d.ts +5 -5
  400. package/dist/esm/math.js +28 -28
  401. package/dist/esm/math.js.map +1 -1
  402. package/dist/esm/overlayRenderContainer.d.ts +19 -0
  403. package/dist/esm/overlayRenderContainer.d.ts.map +1 -0
  404. package/dist/esm/overlayRenderContainer.js +125 -0
  405. package/dist/esm/overlayRenderContainer.js.map +1 -0
  406. package/dist/esm/panel/componentFactory.d.ts +11 -10
  407. package/dist/esm/panel/componentFactory.d.ts.map +1 -1
  408. package/dist/esm/panel/componentFactory.js +24 -24
  409. package/dist/esm/panel/componentFactory.js.map +1 -1
  410. package/dist/esm/panel/types.d.ts +33 -33
  411. package/dist/esm/panel/types.js +1 -1
  412. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +21 -21
  413. package/dist/esm/paneview/defaultPaneviewHeader.js +63 -63
  414. package/dist/esm/paneview/defaultPaneviewHeader.js.map +1 -1
  415. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +21 -21
  416. package/dist/esm/paneview/draggablePaneviewPanel.js +92 -92
  417. package/dist/esm/paneview/draggablePaneviewPanel.js.map +1 -1
  418. package/dist/esm/paneview/options.d.ts +25 -28
  419. package/dist/esm/paneview/options.d.ts.map +1 -1
  420. package/dist/esm/paneview/options.js +1 -1
  421. package/dist/esm/paneview/paneview.d.ts +40 -40
  422. package/dist/esm/paneview/paneview.d.ts.map +1 -1
  423. package/dist/esm/paneview/paneview.js +145 -145
  424. package/dist/esm/paneview/paneview.js.map +1 -1
  425. package/dist/esm/paneview/paneviewComponent.d.ts +128 -128
  426. package/dist/esm/paneview/paneviewComponent.js +276 -273
  427. package/dist/esm/paneview/paneviewComponent.js.map +1 -1
  428. package/dist/esm/paneview/paneviewPanel.d.ts +92 -92
  429. package/dist/esm/paneview/paneviewPanel.d.ts.map +1 -1
  430. package/dist/esm/paneview/paneviewPanel.js +192 -192
  431. package/dist/esm/paneview/paneviewPanel.js.map +1 -1
  432. package/dist/esm/popoutWindow.d.ts +18 -0
  433. package/dist/esm/popoutWindow.d.ts.map +1 -0
  434. package/dist/esm/popoutWindow.js +88 -0
  435. package/dist/esm/popoutWindow.js.map +1 -0
  436. package/dist/esm/resizable.d.ts +10 -7
  437. package/dist/esm/resizable.d.ts.map +1 -1
  438. package/dist/esm/resizable.js +48 -38
  439. package/dist/esm/resizable.js.map +1 -1
  440. package/dist/esm/splitview/options.d.ts +26 -27
  441. package/dist/esm/splitview/options.d.ts.map +1 -1
  442. package/dist/esm/splitview/options.js +1 -1
  443. package/dist/esm/splitview/splitview.d.ts +129 -128
  444. package/dist/esm/splitview/splitview.d.ts.map +1 -1
  445. package/dist/esm/splitview/splitview.js +721 -704
  446. package/dist/esm/splitview/splitview.js.map +1 -1
  447. package/dist/esm/splitview/splitviewComponent.d.ts +101 -101
  448. package/dist/esm/splitview/splitviewComponent.js +261 -258
  449. package/dist/esm/splitview/splitviewComponent.js.map +1 -1
  450. package/dist/esm/splitview/splitviewPanel.d.ts +45 -45
  451. package/dist/esm/splitview/splitviewPanel.d.ts.map +1 -1
  452. package/dist/esm/splitview/splitviewPanel.js +108 -108
  453. package/dist/esm/splitview/splitviewPanel.js.map +1 -1
  454. package/dist/esm/splitview/viewItem.d.ts +25 -25
  455. package/dist/esm/splitview/viewItem.js +74 -74
  456. package/dist/esm/splitview/viewItem.js.map +1 -1
  457. package/dist/esm/svg.d.ts +3 -3
  458. package/dist/esm/svg.js +31 -31
  459. package/dist/esm/types.d.ts +8 -2
  460. package/dist/esm/types.d.ts.map +1 -1
  461. package/dist/esm/types.js +1 -1
  462. package/dist/styles/dockview.css +33 -2
  463. package/package.json +30 -42
  464. package/LICENSE +0 -21
@@ -1,1157 +1,1355 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __assign = (this && this.__assign) || function () {
18
- __assign = Object.assign || function(t) {
19
- for (var s, i = 1, n = arguments.length; i < n; i++) {
20
- s = arguments[i];
21
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
- t[p] = s[p];
23
- }
24
- return t;
25
- };
26
- return __assign.apply(this, arguments);
27
- };
28
- var __values = (this && this.__values) || function(o) {
29
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
30
- if (m) return m.call(o);
31
- if (o && typeof o.length === "number") return {
32
- next: function () {
33
- if (o && i >= o.length) o = void 0;
34
- return { value: o && o[i++], done: !o };
35
- }
36
- };
37
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
38
- };
39
- var __read = (this && this.__read) || function (o, n) {
40
- var m = typeof Symbol === "function" && o[Symbol.iterator];
41
- if (!m) return o;
42
- var i = m.call(o), r, ar = [], e;
43
- try {
44
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
45
- }
46
- catch (error) { e = { error: error }; }
47
- finally {
48
- try {
49
- if (r && !r.done && (m = i["return"])) m.call(i);
50
- }
51
- finally { if (e) throw e.error; }
52
- }
53
- return ar;
54
- };
55
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
56
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
57
- if (ar || !(i in from)) {
58
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
59
- ar[i] = from[i];
60
- }
61
- }
62
- return to.concat(ar || Array.prototype.slice.call(from));
63
- };
64
- Object.defineProperty(exports, "__esModule", { value: true });
65
- exports.DockviewComponent = void 0;
66
- var gridview_1 = require("../gridview/gridview");
67
- var droptarget_1 = require("../dnd/droptarget");
68
- var array_1 = require("../array");
69
- var dockviewPanel_1 = require("./dockviewPanel");
70
- var lifecycle_1 = require("../lifecycle");
71
- var events_1 = require("../events");
72
- var watermark_1 = require("./components/watermark/watermark");
73
- var types_1 = require("./types");
74
- var math_1 = require("../math");
75
- var deserializer_1 = require("./deserializer");
76
- var componentFactory_1 = require("../panel/componentFactory");
77
- var options_1 = require("./options");
78
- var baseComponentGridview_1 = require("../gridview/baseComponentGridview");
79
- var component_api_1 = require("../api/component.api");
80
- var splitview_1 = require("../splitview/splitview");
81
- var dockviewGroupPanel_1 = require("./dockviewGroupPanel");
82
- var dockviewPanelModel_1 = require("./dockviewPanelModel");
83
- var dataTransfer_1 = require("../dnd/dataTransfer");
84
- var overlay_1 = require("../dnd/overlay");
85
- var dom_1 = require("../dom");
86
- var dockviewFloatingGroupPanel_1 = require("./dockviewFloatingGroupPanel");
87
- var DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE = 100;
88
- function typeValidate3(data, path) {
89
- if (typeof data.id !== 'string') {
90
- throw new Error("".concat(path, ".id must be a string"));
91
- }
92
- if (typeof data.activeView !== 'string' ||
93
- typeof data.activeView !== 'undefined') {
94
- throw new Error("".concat(path, ".activeView must be a string of undefined"));
95
- }
96
- }
97
- function typeValidate2(data, path) {
98
- if (typeof data.size !== 'number' && typeof data.size !== 'undefined') {
99
- throw new Error("".concat(path, ".size must be a number or undefined"));
100
- }
101
- if (typeof data.visible !== 'boolean' &&
102
- typeof data.visible !== 'undefined') {
103
- throw new Error("".concat(path, ".visible must be a boolean or undefined"));
104
- }
105
- if (data.type === 'leaf') {
106
- if (typeof data.data !== 'object' ||
107
- data.data === null ||
108
- Array.isArray(data.data)) {
109
- throw new Error('object must be a non-null object');
110
- }
111
- typeValidate3(data.data, "".concat(path, ".data"));
112
- }
113
- else if (data.type === 'branch') {
114
- if (!Array.isArray(data.data)) {
115
- throw new Error("".concat(path, ".data must be an array"));
116
- }
117
- }
118
- else {
119
- throw new Error("".concat(path, ".type must be onew of {'branch', 'leaf'}"));
120
- }
121
- }
122
- function typeValidate(data) {
123
- if (typeof data !== 'object' || data === null) {
124
- throw new Error('object must be a non-null object');
125
- }
126
- var grid = data.grid, panels = data.panels, activeGroup = data.activeGroup, floatingGroups = data.floatingGroups;
127
- if (typeof grid !== 'object' || grid === null) {
128
- throw new Error("'.grid' must be a non-null object");
129
- }
130
- if (typeof grid.height !== 'number') {
131
- throw new Error("'.grid.height' must be a number");
132
- }
133
- if (typeof grid.width !== 'number') {
134
- throw new Error("'.grid.width' must be a number");
135
- }
136
- if (typeof grid.root !== 'object' || grid.root === null) {
137
- throw new Error("'.grid.root' must be a non-null object");
138
- }
139
- if (grid.root.type !== 'branch') {
140
- throw new Error(".grid.root.type must be of type 'branch'");
141
- }
142
- if (grid.orientation !== splitview_1.Orientation.HORIZONTAL &&
143
- grid.orientation !== splitview_1.Orientation.VERTICAL) {
144
- throw new Error("'.grid.width' must be one of {".concat(splitview_1.Orientation.HORIZONTAL, ", ").concat(splitview_1.Orientation.VERTICAL, "}"));
145
- }
146
- typeValidate2(grid.root, '.grid.root');
147
- }
148
- var DockviewComponent = /** @class */ (function (_super) {
149
- __extends(DockviewComponent, _super);
150
- function DockviewComponent(options) {
151
- var _this = _super.call(this, {
152
- proportionalLayout: true,
153
- orientation: options.orientation || splitview_1.Orientation.HORIZONTAL,
154
- styles: options.styles,
155
- parentElement: options.parentElement,
156
- }) || this;
157
- _this.nextGroupId = (0, math_1.sequentialNumberGenerator)();
158
- _this._deserializer = new deserializer_1.DefaultDockviewDeserialzier(_this);
159
- _this.watermark = null;
160
- _this._onWillDragPanel = new events_1.Emitter();
161
- _this.onWillDragPanel = _this._onWillDragPanel.event;
162
- _this._onWillDragGroup = new events_1.Emitter();
163
- _this.onWillDragGroup = _this._onWillDragGroup.event;
164
- _this._onDidDrop = new events_1.Emitter();
165
- _this.onDidDrop = _this._onDidDrop.event;
166
- _this._onDidRemovePanel = new events_1.Emitter();
167
- _this.onDidRemovePanel = _this._onDidRemovePanel.event;
168
- _this._onDidAddPanel = new events_1.Emitter();
169
- _this.onDidAddPanel = _this._onDidAddPanel.event;
170
- _this._onDidLayoutFromJSON = new events_1.Emitter();
171
- _this.onDidLayoutFromJSON = _this._onDidLayoutFromJSON.event;
172
- _this._onDidActivePanelChange = new events_1.Emitter();
173
- _this.onDidActivePanelChange = _this._onDidActivePanelChange.event;
174
- _this.floatingGroups = [];
175
- (0, dom_1.toggleClass)(_this.gridview.element, 'dv-dockview', true);
176
- _this.addDisposables(_this._onWillDragPanel, _this._onWillDragGroup, _this._onDidActivePanelChange, _this._onDidAddPanel, _this._onDidRemovePanel, _this._onDidLayoutFromJSON, _this._onDidDrop, events_1.Event.any(_this.onDidAddGroup, _this.onDidRemoveGroup)(function () {
177
- _this.updateWatermark();
178
- }), events_1.Event.any(_this.onDidAddPanel, _this.onDidRemovePanel, _this.onDidActivePanelChange)(function () {
179
- _this._bufferOnDidLayoutChange.fire();
180
- }));
181
- _this._options = options;
182
- if (!_this.options.components) {
183
- _this.options.components = {};
184
- }
185
- if (!_this.options.frameworkComponents) {
186
- _this.options.frameworkComponents = {};
187
- }
188
- if (!_this.options.frameworkTabComponents) {
189
- _this.options.frameworkTabComponents = {};
190
- }
191
- if (!_this.options.tabComponents) {
192
- _this.options.tabComponents = {};
193
- }
194
- if (!_this.options.watermarkComponent &&
195
- !_this.options.watermarkFrameworkComponent) {
196
- _this.options.watermarkComponent = watermark_1.Watermark;
197
- }
198
- var dropTarget = new droptarget_1.Droptarget(_this.element, {
199
- canDisplayOverlay: function (event, position) {
200
- var data = (0, dataTransfer_1.getPanelData)();
201
- if (data) {
202
- if (data.viewId !== _this.id) {
203
- return false;
204
- }
205
- if (position === 'center') {
206
- // center drop target is only allowed if there are no panels in the grid
207
- // floating panels are allowed
208
- return _this.gridview.length === 0;
209
- }
210
- return true;
211
- }
212
- if (_this.options.showDndOverlay) {
213
- if (position === 'center' && _this.gridview.length !== 0) {
214
- /**
215
- * for external events only show the four-corner drag overlays, disable
216
- * the center position so that external drag events can fall through to the group
217
- * and panel drop target handlers
218
- */
219
- return false;
220
- }
221
- return _this.options.showDndOverlay({
222
- nativeEvent: event,
223
- position: position,
224
- target: types_1.DockviewDropTargets.Edge,
225
- getData: dataTransfer_1.getPanelData,
226
- });
227
- }
228
- return false;
229
- },
230
- acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
231
- overlayModel: {
232
- activationSize: { type: 'pixels', value: 10 },
233
- size: { type: 'pixels', value: 20 },
234
- },
235
- });
236
- _this.addDisposables(dropTarget.onDrop(function (event) {
237
- var data = (0, dataTransfer_1.getPanelData)();
238
- if (data) {
239
- _this.moveGroupOrPanel(_this.orthogonalize(event.position), data.groupId, data.panelId || undefined, 'center');
240
- }
241
- else {
242
- _this._onDidDrop.fire(__assign(__assign({}, event), { api: _this._api, group: null, getData: dataTransfer_1.getPanelData }));
243
- }
244
- }), dropTarget);
245
- _this._api = new component_api_1.DockviewApi(_this);
246
- _this.updateWatermark();
247
- return _this;
248
- }
249
- Object.defineProperty(DockviewComponent.prototype, "orientation", {
250
- get: function () {
251
- return this.gridview.orientation;
252
- },
253
- enumerable: false,
254
- configurable: true
255
- });
256
- Object.defineProperty(DockviewComponent.prototype, "totalPanels", {
257
- get: function () {
258
- return this.panels.length;
259
- },
260
- enumerable: false,
261
- configurable: true
262
- });
263
- Object.defineProperty(DockviewComponent.prototype, "panels", {
264
- get: function () {
265
- return this.groups.flatMap(function (group) { return group.panels; });
266
- },
267
- enumerable: false,
268
- configurable: true
269
- });
270
- Object.defineProperty(DockviewComponent.prototype, "options", {
271
- get: function () {
272
- return this._options;
273
- },
274
- enumerable: false,
275
- configurable: true
276
- });
277
- Object.defineProperty(DockviewComponent.prototype, "activePanel", {
278
- get: function () {
279
- var activeGroup = this.activeGroup;
280
- if (!activeGroup) {
281
- return undefined;
282
- }
283
- return activeGroup.activePanel;
284
- },
285
- enumerable: false,
286
- configurable: true
287
- });
288
- DockviewComponent.prototype.addFloatingGroup = function (item, coord, options) {
289
- var _this = this;
290
- var _a, _b, _c, _d, _e, _f;
291
- var group;
292
- if (item instanceof dockviewPanel_1.DockviewPanel) {
293
- group = this.createGroup();
294
- this.removePanel(item, {
295
- removeEmptyGroup: true,
296
- skipDispose: true,
297
- });
298
- group.model.openPanel(item);
299
- }
300
- else {
301
- group = item;
302
- var skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
303
- options.skipRemoveGroup;
304
- if (!skip) {
305
- this.doRemoveGroup(item, { skipDispose: true });
306
- }
307
- }
308
- group.model.isFloating = true;
309
- var overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number' ? Math.max(coord.x, 0) : 100;
310
- var overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number' ? Math.max(coord.y, 0) : 100;
311
- var overlay = new overlay_1.Overlay({
312
- container: this.gridview.element,
313
- content: group.element,
314
- height: (_a = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _a !== void 0 ? _a : 300,
315
- width: (_b = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _b !== void 0 ? _b : 300,
316
- left: overlayLeft,
317
- top: overlayTop,
318
- minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
319
- ? undefined
320
- : (_d = (_c = this.options.floatingGroupBounds) === null || _c === void 0 ? void 0 : _c.minimumWidthWithinViewport) !== null && _d !== void 0 ? _d : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
321
- minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'
322
- ? undefined
323
- : (_f = (_e = this.options.floatingGroupBounds) === null || _e === void 0 ? void 0 : _e.minimumHeightWithinViewport) !== null && _f !== void 0 ? _f : DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
324
- });
325
- var el = group.element.querySelector('.void-container');
326
- if (!el) {
327
- throw new Error('failed to find drag handle');
328
- }
329
- overlay.setupDrag(el, {
330
- inDragMode: typeof (options === null || options === void 0 ? void 0 : options.inDragMode) === 'boolean'
331
- ? options.inDragMode
332
- : false,
333
- });
334
- var floatingGroupPanel = new dockviewFloatingGroupPanel_1.DockviewFloatingGroupPanel(group, overlay);
335
- var disposable = (0, dom_1.watchElementResize)(group.element, function (entry) {
336
- var _a = entry.contentRect, width = _a.width, height = _a.height;
337
- group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel
338
- });
339
- floatingGroupPanel.addDisposables(overlay.onDidChange(function () {
340
- // this is either a resize or a move
341
- // to inform the panels .layout(...) the group with it's current size
342
- // don't care about resize since the above watcher handles that
343
- group.layout(group.height, group.width);
344
- }), overlay.onDidChangeEnd(function () {
345
- _this._bufferOnDidLayoutChange.fire();
346
- }), group.onDidChange(function (event) {
347
- overlay.setBounds({
348
- height: event === null || event === void 0 ? void 0 : event.height,
349
- width: event === null || event === void 0 ? void 0 : event.width,
350
- });
351
- }), {
352
- dispose: function () {
353
- disposable.dispose();
354
- group.model.isFloating = false;
355
- (0, array_1.remove)(_this.floatingGroups, floatingGroupPanel);
356
- _this.updateWatermark();
357
- },
358
- });
359
- this.floatingGroups.push(floatingGroupPanel);
360
- this.updateWatermark();
361
- };
362
- DockviewComponent.prototype.orthogonalize = function (position) {
363
- switch (position) {
364
- case 'top':
365
- case 'bottom':
366
- if (this.gridview.orientation === splitview_1.Orientation.HORIZONTAL) {
367
- // we need to add to a vertical splitview but the current root is a horizontal splitview.
368
- // insert a vertical splitview at the root level and add the existing view as a child
369
- this.gridview.insertOrthogonalSplitviewAtRoot();
370
- }
371
- break;
372
- case 'left':
373
- case 'right':
374
- if (this.gridview.orientation === splitview_1.Orientation.VERTICAL) {
375
- // we need to add to a horizontal splitview but the current root is a vertical splitview.
376
- // insert a horiziontal splitview at the root level and add the existing view as a child
377
- this.gridview.insertOrthogonalSplitviewAtRoot();
378
- }
379
- break;
380
- default:
381
- break;
382
- }
383
- switch (position) {
384
- case 'top':
385
- case 'left':
386
- case 'center':
387
- return this.createGroupAtLocation([0]); // insert into first position
388
- case 'bottom':
389
- case 'right':
390
- return this.createGroupAtLocation([this.gridview.length]); // insert into last position
391
- default:
392
- throw new Error("unsupported position ".concat(position));
393
- }
394
- };
395
- DockviewComponent.prototype.updateOptions = function (options) {
396
- var e_1, _a;
397
- var _b, _c;
398
- var hasOrientationChanged = typeof options.orientation === 'string' &&
399
- this.gridview.orientation !== options.orientation;
400
- var hasFloatingGroupOptionsChanged = options.floatingGroupBounds !== undefined &&
401
- options.floatingGroupBounds !== this.options.floatingGroupBounds;
402
- this._options = __assign(__assign({}, this.options), options);
403
- if (hasOrientationChanged) {
404
- this.gridview.orientation = options.orientation;
405
- }
406
- if (hasFloatingGroupOptionsChanged) {
407
- try {
408
- for (var _d = __values(this.floatingGroups), _e = _d.next(); !_e.done; _e = _d.next()) {
409
- var group = _e.value;
410
- switch (this.options.floatingGroupBounds) {
411
- case 'boundedWithinViewport':
412
- group.overlay.minimumInViewportHeight = undefined;
413
- group.overlay.minimumInViewportWidth = undefined;
414
- break;
415
- case undefined:
416
- group.overlay.minimumInViewportHeight =
417
- DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;
418
- group.overlay.minimumInViewportWidth =
419
- DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;
420
- break;
421
- default:
422
- group.overlay.minimumInViewportHeight =
423
- (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumHeightWithinViewport;
424
- group.overlay.minimumInViewportWidth =
425
- (_c = this.options.floatingGroupBounds) === null || _c === void 0 ? void 0 : _c.minimumWidthWithinViewport;
426
- }
427
- group.overlay.setBounds({});
428
- }
429
- }
430
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
431
- finally {
432
- try {
433
- if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
434
- }
435
- finally { if (e_1) throw e_1.error; }
436
- }
437
- }
438
- this.layout(this.gridview.width, this.gridview.height, true);
439
- };
440
- DockviewComponent.prototype.layout = function (width, height, forceResize) {
441
- var e_2, _a;
442
- _super.prototype.layout.call(this, width, height, forceResize);
443
- if (this.floatingGroups) {
444
- try {
445
- for (var _b = __values(this.floatingGroups), _c = _b.next(); !_c.done; _c = _b.next()) {
446
- var floating = _c.value;
447
- // ensure floting groups stay within visible boundaries
448
- floating.overlay.setBounds();
449
- }
450
- }
451
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
452
- finally {
453
- try {
454
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
455
- }
456
- finally { if (e_2) throw e_2.error; }
457
- }
458
- }
459
- };
460
- DockviewComponent.prototype.focus = function () {
461
- var _a;
462
- (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();
463
- };
464
- DockviewComponent.prototype.getGroupPanel = function (id) {
465
- return this.panels.find(function (panel) { return panel.id === id; });
466
- };
467
- DockviewComponent.prototype.setActivePanel = function (panel) {
468
- this.doSetGroupActive(panel.group);
469
- panel.group.model.openPanel(panel);
470
- };
471
- DockviewComponent.prototype.moveToNext = function (options) {
472
- var _a;
473
- if (options === void 0) { options = {}; }
474
- if (!options.group) {
475
- if (!this.activeGroup) {
476
- return;
477
- }
478
- options.group = this.activeGroup;
479
- }
480
- if (options.includePanel && options.group) {
481
- if (options.group.activePanel !==
482
- options.group.panels[options.group.panels.length - 1]) {
483
- options.group.model.moveToNext({ suppressRoll: true });
484
- return;
485
- }
486
- }
487
- var location = (0, gridview_1.getGridLocation)(options.group.element);
488
- var next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;
489
- this.doSetGroupActive(next);
490
- };
491
- DockviewComponent.prototype.moveToPrevious = function (options) {
492
- var _a;
493
- if (options === void 0) { options = {}; }
494
- if (!options.group) {
495
- if (!this.activeGroup) {
496
- return;
497
- }
498
- options.group = this.activeGroup;
499
- }
500
- if (options.includePanel && options.group) {
501
- if (options.group.activePanel !== options.group.panels[0]) {
502
- options.group.model.moveToPrevious({ suppressRoll: true });
503
- return;
504
- }
505
- }
506
- var location = (0, gridview_1.getGridLocation)(options.group.element);
507
- var next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;
508
- if (next) {
509
- this.doSetGroupActive(next);
510
- }
511
- };
512
- /**
513
- * Serialize the current state of the layout
514
- *
515
- * @returns A JSON respresentation of the layout
516
- */
517
- DockviewComponent.prototype.toJSON = function () {
518
- var _a;
519
- var data = this.gridview.serialize();
520
- var panels = this.panels.reduce(function (collection, panel) {
521
- collection[panel.id] = panel.toJSON();
522
- return collection;
523
- }, {});
524
- var floats = this.floatingGroups.map(function (floatingGroup) {
525
- return {
526
- data: floatingGroup.group.toJSON(),
527
- position: floatingGroup.overlay.toJSON(),
528
- };
529
- });
530
- var result = {
531
- grid: data,
532
- panels: panels,
533
- activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,
534
- };
535
- if (floats.length > 0) {
536
- result.floatingGroups = floats;
537
- }
538
- return result;
539
- };
540
- DockviewComponent.prototype.fromJSON = function (data) {
541
- var e_3, _a, e_4, _b, e_5, _c, e_6, _d, e_7, _e, e_8, _f;
542
- var _this = this;
543
- var _g;
544
- this.clear();
545
- if (typeof data !== 'object' || data === null) {
546
- throw new Error('serialized layout must be a non-null object');
547
- }
548
- var grid = data.grid, panels = data.panels, activeGroup = data.activeGroup;
549
- if (grid.root.type !== 'branch' || !Array.isArray(grid.root.data)) {
550
- throw new Error('root must be of type branch');
551
- }
552
- try {
553
- // take note of the existing dimensions
554
- var width = this.width;
555
- var height = this.height;
556
- var createGroupFromSerializedState_1 = function (data) {
557
- var e_9, _a;
558
- var id = data.id, locked = data.locked, hideHeader = data.hideHeader, views = data.views, activeView = data.activeView;
559
- if (typeof id !== 'string') {
560
- throw new Error('group id must be of type string');
561
- }
562
- var group = _this.createGroup({
563
- id: id,
564
- locked: !!locked,
565
- hideHeader: !!hideHeader,
566
- });
567
- var createdPanels = [];
568
- try {
569
- for (var views_1 = __values(views), views_1_1 = views_1.next(); !views_1_1.done; views_1_1 = views_1.next()) {
570
- var child = views_1_1.value;
571
- /**
572
- * Run the deserializer step seperately since this may fail to due corrupted external state.
573
- * In running this section first we avoid firing lots of 'add' events in the event of a failure
574
- * due to a corruption of input data.
575
- */
576
- var panel = _this._deserializer.fromJSON(panels[child], group);
577
- createdPanels.push(panel);
578
- }
579
- }
580
- catch (e_9_1) { e_9 = { error: e_9_1 }; }
581
- finally {
582
- try {
583
- if (views_1_1 && !views_1_1.done && (_a = views_1.return)) _a.call(views_1);
584
- }
585
- finally { if (e_9) throw e_9.error; }
586
- }
587
- _this._onDidAddGroup.fire(group);
588
- for (var i = 0; i < views.length; i++) {
589
- var panel = createdPanels[i];
590
- var isActive = typeof activeView === 'string' &&
591
- activeView === panel.id;
592
- group.model.openPanel(panel, {
593
- skipSetPanelActive: !isActive,
594
- skipSetGroupActive: true,
595
- });
596
- }
597
- if (!group.activePanel && group.panels.length > 0) {
598
- group.model.openPanel(group.panels[group.panels.length - 1], {
599
- skipSetGroupActive: true,
600
- });
601
- }
602
- return group;
603
- };
604
- this.gridview.deserialize(grid, {
605
- fromJSON: function (node) {
606
- return createGroupFromSerializedState_1(node.data);
607
- },
608
- });
609
- this.layout(width, height, true);
610
- var serializedFloatingGroups = (_g = data.floatingGroups) !== null && _g !== void 0 ? _g : [];
611
- try {
612
- for (var serializedFloatingGroups_1 = __values(serializedFloatingGroups), serializedFloatingGroups_1_1 = serializedFloatingGroups_1.next(); !serializedFloatingGroups_1_1.done; serializedFloatingGroups_1_1 = serializedFloatingGroups_1.next()) {
613
- var serializedFloatingGroup = serializedFloatingGroups_1_1.value;
614
- var data_1 = serializedFloatingGroup.data, position = serializedFloatingGroup.position;
615
- var group = createGroupFromSerializedState_1(data_1);
616
- this.addFloatingGroup(group, {
617
- x: position.left,
618
- y: position.top,
619
- height: position.height,
620
- width: position.width,
621
- }, { skipRemoveGroup: true, inDragMode: false });
622
- }
623
- }
624
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
625
- finally {
626
- try {
627
- if (serializedFloatingGroups_1_1 && !serializedFloatingGroups_1_1.done && (_a = serializedFloatingGroups_1.return)) _a.call(serializedFloatingGroups_1);
628
- }
629
- finally { if (e_3) throw e_3.error; }
630
- }
631
- try {
632
- for (var _h = __values(this.floatingGroups), _j = _h.next(); !_j.done; _j = _h.next()) {
633
- var floatingGroup = _j.value;
634
- floatingGroup.overlay.setBounds();
635
- }
636
- }
637
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
638
- finally {
639
- try {
640
- if (_j && !_j.done && (_b = _h.return)) _b.call(_h);
641
- }
642
- finally { if (e_4) throw e_4.error; }
643
- }
644
- if (typeof activeGroup === 'string') {
645
- var panel = this.getPanel(activeGroup);
646
- if (panel) {
647
- this.doSetGroupActive(panel);
648
- }
649
- }
650
- }
651
- catch (err) {
652
- try {
653
- /**
654
- * Takes all the successfully created groups and remove all of their panels.
655
- */
656
- for (var _k = __values(this.groups), _l = _k.next(); !_l.done; _l = _k.next()) {
657
- var group = _l.value;
658
- try {
659
- for (var _m = (e_6 = void 0, __values(group.panels)), _o = _m.next(); !_o.done; _o = _m.next()) {
660
- var panel = _o.value;
661
- this.removePanel(panel, {
662
- removeEmptyGroup: false,
663
- skipDispose: false,
664
- });
665
- }
666
- }
667
- catch (e_6_1) { e_6 = { error: e_6_1 }; }
668
- finally {
669
- try {
670
- if (_o && !_o.done && (_d = _m.return)) _d.call(_m);
671
- }
672
- finally { if (e_6) throw e_6.error; }
673
- }
674
- }
675
- }
676
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
677
- finally {
678
- try {
679
- if (_l && !_l.done && (_c = _k.return)) _c.call(_k);
680
- }
681
- finally { if (e_5) throw e_5.error; }
682
- }
683
- try {
684
- /**
685
- * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about
686
- * the underlying HTMLElement existing in the Gridview.
687
- */
688
- for (var _p = __values(this.groups), _q = _p.next(); !_q.done; _q = _p.next()) {
689
- var group = _q.value;
690
- group.dispose();
691
- this._groups.delete(group.id);
692
- this._onDidRemoveGroup.fire(group);
693
- }
694
- }
695
- catch (e_7_1) { e_7 = { error: e_7_1 }; }
696
- finally {
697
- try {
698
- if (_q && !_q.done && (_e = _p.return)) _e.call(_p);
699
- }
700
- finally { if (e_7) throw e_7.error; }
701
- }
702
- try {
703
- // iterate over a reassigned array since original array will be modified
704
- for (var _r = __values(__spreadArray([], __read(this.floatingGroups), false)), _s = _r.next(); !_s.done; _s = _r.next()) {
705
- var floatingGroup = _s.value;
706
- floatingGroup.dispose();
707
- }
708
- }
709
- catch (e_8_1) { e_8 = { error: e_8_1 }; }
710
- finally {
711
- try {
712
- if (_s && !_s.done && (_f = _r.return)) _f.call(_r);
713
- }
714
- finally { if (e_8) throw e_8.error; }
715
- }
716
- // fires clean-up events and clears the underlying HTML gridview.
717
- this.clear();
718
- /**
719
- * even though we have cleaned-up we still want to inform the caller of their error
720
- * and we'll do this through re-throwing the original error since afterall you would
721
- * expect trying to load a corrupted layout to result in an error and not silently fail...
722
- */
723
- throw err;
724
- }
725
- this._onDidLayoutFromJSON.fire();
726
- };
727
- DockviewComponent.prototype.clear = function () {
728
- var e_10, _a;
729
- var groups = Array.from(this._groups.values()).map(function (_) { return _.value; });
730
- var hasActiveGroup = !!this.activeGroup;
731
- var hasActivePanel = !!this.activePanel;
732
- try {
733
- for (var groups_1 = __values(groups), groups_1_1 = groups_1.next(); !groups_1_1.done; groups_1_1 = groups_1.next()) {
734
- var group = groups_1_1.value;
735
- // remove the group will automatically remove the panels
736
- this.removeGroup(group, { skipActive: true });
737
- }
738
- }
739
- catch (e_10_1) { e_10 = { error: e_10_1 }; }
740
- finally {
741
- try {
742
- if (groups_1_1 && !groups_1_1.done && (_a = groups_1.return)) _a.call(groups_1);
743
- }
744
- finally { if (e_10) throw e_10.error; }
745
- }
746
- if (hasActiveGroup) {
747
- this.doSetGroupActive(undefined);
748
- }
749
- if (hasActivePanel) {
750
- this._onDidActivePanelChange.fire(undefined);
751
- }
752
- this.gridview.clear();
753
- };
754
- DockviewComponent.prototype.closeAllGroups = function () {
755
- var e_11, _a;
756
- try {
757
- for (var _b = __values(this._groups.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
758
- var entry = _c.value;
759
- var _d = __read(entry, 2), _ = _d[0], group = _d[1];
760
- group.value.model.closeAllPanels();
761
- }
762
- }
763
- catch (e_11_1) { e_11 = { error: e_11_1 }; }
764
- finally {
765
- try {
766
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
767
- }
768
- finally { if (e_11) throw e_11.error; }
769
- }
770
- };
771
- DockviewComponent.prototype.addPanel = function (options) {
772
- var _a, _b;
773
- if (this.panels.find(function (_) { return _.id === options.id; })) {
774
- throw new Error("panel with id ".concat(options.id, " already exists"));
775
- }
776
- var referenceGroup;
777
- if (options.position && options.floating) {
778
- throw new Error('you can only provide one of: position, floating as arguments to .addPanel(...)');
779
- }
780
- if (options.position) {
781
- if ((0, options_1.isPanelOptionsWithPanel)(options.position)) {
782
- var referencePanel = typeof options.position.referencePanel === 'string'
783
- ? this.getGroupPanel(options.position.referencePanel)
784
- : options.position.referencePanel;
785
- if (!referencePanel) {
786
- throw new Error("referencePanel ".concat(options.position.referencePanel, " does not exist"));
787
- }
788
- referenceGroup = this.findGroup(referencePanel);
789
- }
790
- else if ((0, options_1.isPanelOptionsWithGroup)(options.position)) {
791
- referenceGroup =
792
- typeof options.position.referenceGroup === 'string'
793
- ? (_a = this._groups.get(options.position.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value
794
- : options.position.referenceGroup;
795
- if (!referenceGroup) {
796
- throw new Error("referencePanel ".concat(options.position.referenceGroup, " does not exist"));
797
- }
798
- }
799
- else {
800
- var group = this.orthogonalize((0, droptarget_1.directionToPosition)(options.position.direction));
801
- var panel_1 = this.createPanel(options, group);
802
- group.model.openPanel(panel_1);
803
- return panel_1;
804
- }
805
- }
806
- else {
807
- referenceGroup = this.activeGroup;
808
- }
809
- var panel;
810
- if (referenceGroup) {
811
- var target = (0, baseComponentGridview_1.toTarget)(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');
812
- if (options.floating) {
813
- var group = this.createGroup();
814
- panel = this.createPanel(options, group);
815
- group.model.openPanel(panel);
816
- var o = typeof options.floating === 'object' &&
817
- options.floating !== null
818
- ? options.floating
819
- : {};
820
- this.addFloatingGroup(group, o, {
821
- inDragMode: false,
822
- skipRemoveGroup: true,
823
- });
824
- }
825
- else if (referenceGroup.api.isFloating || target === 'center') {
826
- panel = this.createPanel(options, referenceGroup);
827
- referenceGroup.model.openPanel(panel);
828
- }
829
- else {
830
- var location_1 = (0, gridview_1.getGridLocation)(referenceGroup.element);
831
- var relativeLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, location_1, target);
832
- var group = this.createGroupAtLocation(relativeLocation);
833
- panel = this.createPanel(options, group);
834
- group.model.openPanel(panel);
835
- }
836
- }
837
- else if (options.floating) {
838
- var group = this.createGroup();
839
- panel = this.createPanel(options, group);
840
- group.model.openPanel(panel);
841
- var o = typeof options.floating === 'object' &&
842
- options.floating !== null
843
- ? options.floating
844
- : {};
845
- this.addFloatingGroup(group, o, {
846
- inDragMode: false,
847
- skipRemoveGroup: true,
848
- });
849
- }
850
- else {
851
- var group = this.createGroupAtLocation();
852
- panel = this.createPanel(options, group);
853
- group.model.openPanel(panel);
854
- }
855
- return panel;
856
- };
857
- DockviewComponent.prototype.removePanel = function (panel, options) {
858
- if (options === void 0) { options = {
859
- removeEmptyGroup: true,
860
- skipDispose: false,
861
- }; }
862
- var group = panel.group;
863
- if (!group) {
864
- throw new Error("cannot remove panel ".concat(panel.id, ". it's missing a group."));
865
- }
866
- group.model.removePanel(panel);
867
- if (!options.skipDispose) {
868
- panel.dispose();
869
- }
870
- if (group.size === 0 && options.removeEmptyGroup) {
871
- this.removeGroup(group);
872
- }
873
- };
874
- DockviewComponent.prototype.createWatermarkComponent = function () {
875
- var _a;
876
- return (0, componentFactory_1.createComponent)('watermark-id', 'watermark-name', this.options.watermarkComponent
877
- ? { 'watermark-name': this.options.watermarkComponent }
878
- : {}, this.options.watermarkFrameworkComponent
879
- ? { 'watermark-name': this.options.watermarkFrameworkComponent }
880
- : {}, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.watermark);
881
- };
882
- DockviewComponent.prototype.updateWatermark = function () {
883
- var _a, _b;
884
- if (this.groups.filter(function (x) { return !x.api.isFloating; }).length === 0) {
885
- if (!this.watermark) {
886
- this.watermark = this.createWatermarkComponent();
887
- this.watermark.init({
888
- containerApi: new component_api_1.DockviewApi(this),
889
- });
890
- var watermarkContainer = document.createElement('div');
891
- watermarkContainer.className = 'dv-watermark-container';
892
- watermarkContainer.appendChild(this.watermark.element);
893
- this.gridview.element.appendChild(watermarkContainer);
894
- }
895
- }
896
- else if (this.watermark) {
897
- this.watermark.element.parentElement.remove();
898
- (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);
899
- this.watermark = null;
900
- }
901
- };
902
- DockviewComponent.prototype.addGroup = function (options) {
903
- var _a;
904
- var group = this.createGroup();
905
- if (options) {
906
- var referenceGroup = void 0;
907
- if ((0, options_1.isGroupOptionsWithPanel)(options)) {
908
- var referencePanel = typeof options.referencePanel === 'string'
909
- ? this.panels.find(function (panel) { return panel.id === options.referencePanel; })
910
- : options.referencePanel;
911
- if (!referencePanel) {
912
- throw new Error("reference panel ".concat(options.referencePanel, " does not exist"));
913
- }
914
- referenceGroup = this.findGroup(referencePanel);
915
- if (!referenceGroup) {
916
- throw new Error("reference group for reference panel ".concat(options.referencePanel, " does not exist"));
917
- }
918
- }
919
- else if ((0, options_1.isGroupOptionsWithGroup)(options)) {
920
- referenceGroup =
921
- typeof options.referenceGroup === 'string'
922
- ? (_a = this._groups.get(options.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value
923
- : options.referenceGroup;
924
- if (!referenceGroup) {
925
- throw new Error("reference group ".concat(options.referenceGroup, " does not exist"));
926
- }
927
- }
928
- else {
929
- var group_1 = this.orthogonalize((0, droptarget_1.directionToPosition)(options.direction));
930
- return group_1;
931
- }
932
- var target = (0, baseComponentGridview_1.toTarget)(options.direction || 'within');
933
- var location_2 = (0, gridview_1.getGridLocation)(referenceGroup.element);
934
- var relativeLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, location_2, target);
935
- this.doAddGroup(group, relativeLocation);
936
- return group;
937
- }
938
- else {
939
- this.doAddGroup(group);
940
- return group;
941
- }
942
- };
943
- DockviewComponent.prototype.removeGroup = function (group, options) {
944
- var e_12, _a;
945
- var _b;
946
- var panels = __spreadArray([], __read(group.panels), false); // reassign since group panels will mutate
947
- try {
948
- for (var panels_1 = __values(panels), panels_1_1 = panels_1.next(); !panels_1_1.done; panels_1_1 = panels_1.next()) {
949
- var panel = panels_1_1.value;
950
- this.removePanel(panel, {
951
- removeEmptyGroup: false,
952
- skipDispose: (_b = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _b !== void 0 ? _b : false,
953
- });
954
- }
955
- }
956
- catch (e_12_1) { e_12 = { error: e_12_1 }; }
957
- finally {
958
- try {
959
- if (panels_1_1 && !panels_1_1.done && (_a = panels_1.return)) _a.call(panels_1);
960
- }
961
- finally { if (e_12) throw e_12.error; }
962
- }
963
- this.doRemoveGroup(group, options);
964
- };
965
- DockviewComponent.prototype.doRemoveGroup = function (group, options) {
966
- var floatingGroup = this.floatingGroups.find(function (_) { return _.group === group; });
967
- if (floatingGroup) {
968
- if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
969
- floatingGroup.group.dispose();
970
- this._groups.delete(group.id);
971
- // TODO: fire group removed event?
972
- }
973
- floatingGroup.dispose();
974
- return floatingGroup.group;
975
- }
976
- return _super.prototype.doRemoveGroup.call(this, group, options);
977
- };
978
- DockviewComponent.prototype.moveGroupOrPanel = function (destinationGroup, sourceGroupId, sourceItemId, destinationTarget, destinationIndex) {
979
- var _a;
980
- var sourceGroup = sourceGroupId
981
- ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value
982
- : undefined;
983
- if (sourceItemId === undefined) {
984
- if (sourceGroup) {
985
- this.moveGroup(sourceGroup, destinationGroup, destinationTarget);
986
- }
987
- return;
988
- }
989
- if (!destinationTarget || destinationTarget === 'center') {
990
- var groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) ||
991
- this.panels.find(function (panel) { return panel.id === sourceItemId; });
992
- if (!groupItem) {
993
- throw new Error("No panel with id ".concat(sourceItemId));
994
- }
995
- if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
996
- this.doRemoveGroup(sourceGroup);
997
- }
998
- destinationGroup.model.openPanel(groupItem, {
999
- index: destinationIndex,
1000
- });
1001
- }
1002
- else {
1003
- var referenceLocation = (0, gridview_1.getGridLocation)(destinationGroup.element);
1004
- var targetLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, destinationTarget);
1005
- if (sourceGroup && sourceGroup.size < 2) {
1006
- var _b = __read((0, array_1.tail)(targetLocation), 2), targetParentLocation = _b[0], to = _b[1];
1007
- var isFloating = this.floatingGroups.find(function (x) { return x.group === sourceGroup; });
1008
- if (!isFloating) {
1009
- var sourceLocation = (0, gridview_1.getGridLocation)(sourceGroup.element);
1010
- var _c = __read((0, array_1.tail)(sourceLocation), 2), sourceParentLocation = _c[0], from = _c[1];
1011
- if ((0, array_1.sequenceEquals)(sourceParentLocation, targetParentLocation)) {
1012
- // special case when 'swapping' two views within same grid location
1013
- // if a group has one tab - we are essentially moving the 'group'
1014
- // which is equivalent to swapping two views in this case
1015
- this.gridview.moveView(sourceParentLocation, from, to);
1016
- }
1017
- }
1018
- // source group will become empty so delete the group
1019
- var targetGroup = this.doRemoveGroup(sourceGroup, {
1020
- skipActive: true,
1021
- skipDispose: true,
1022
- });
1023
- // after deleting the group we need to re-evaulate the ref location
1024
- var updatedReferenceLocation = (0, gridview_1.getGridLocation)(destinationGroup.element);
1025
- var location_3 = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
1026
- this.doAddGroup(targetGroup, location_3);
1027
- }
1028
- else {
1029
- var groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) ||
1030
- this.panels.find(function (panel) { return panel.id === sourceItemId; });
1031
- if (!groupItem) {
1032
- throw new Error("No panel with id ".concat(sourceItemId));
1033
- }
1034
- var dropLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, destinationTarget);
1035
- var group = this.createGroupAtLocation(dropLocation);
1036
- group.model.openPanel(groupItem);
1037
- }
1038
- }
1039
- };
1040
- DockviewComponent.prototype.moveGroup = function (sourceGroup, referenceGroup, target) {
1041
- var e_13, _a;
1042
- if (sourceGroup) {
1043
- if (!target || target === 'center') {
1044
- var activePanel = sourceGroup.activePanel;
1045
- var panels = __spreadArray([], __read(sourceGroup.panels), false).map(function (p) {
1046
- return sourceGroup.model.removePanel(p.id);
1047
- });
1048
- if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
1049
- this.doRemoveGroup(sourceGroup);
1050
- }
1051
- try {
1052
- for (var panels_2 = __values(panels), panels_2_1 = panels_2.next(); !panels_2_1.done; panels_2_1 = panels_2.next()) {
1053
- var panel = panels_2_1.value;
1054
- referenceGroup.model.openPanel(panel, {
1055
- skipSetPanelActive: panel !== activePanel,
1056
- });
1057
- }
1058
- }
1059
- catch (e_13_1) { e_13 = { error: e_13_1 }; }
1060
- finally {
1061
- try {
1062
- if (panels_2_1 && !panels_2_1.done && (_a = panels_2.return)) _a.call(panels_2);
1063
- }
1064
- finally { if (e_13) throw e_13.error; }
1065
- }
1066
- }
1067
- else {
1068
- var floatingGroup = this.floatingGroups.find(function (x) { return x.group === sourceGroup; });
1069
- if (floatingGroup) {
1070
- floatingGroup.dispose();
1071
- }
1072
- else {
1073
- this.gridview.removeView((0, gridview_1.getGridLocation)(sourceGroup.element));
1074
- }
1075
- var referenceLocation = (0, gridview_1.getGridLocation)(referenceGroup.element);
1076
- var dropLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, target);
1077
- this.gridview.addView(sourceGroup, splitview_1.Sizing.Distribute, dropLocation);
1078
- }
1079
- }
1080
- };
1081
- DockviewComponent.prototype.doSetGroupActive = function (group, skipFocus) {
1082
- var _a, _b;
1083
- var isGroupAlreadyFocused = this._activeGroup === group;
1084
- _super.prototype.doSetGroupActive.call(this, group, skipFocus);
1085
- if (!isGroupAlreadyFocused && ((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.activePanel)) {
1086
- this._onDidActivePanelChange.fire((_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.activePanel);
1087
- }
1088
- };
1089
- DockviewComponent.prototype.createGroup = function (options) {
1090
- var _this = this;
1091
- if (!options) {
1092
- options = {};
1093
- }
1094
- var id = options === null || options === void 0 ? void 0 : options.id;
1095
- if (id && this._groups.has(options.id)) {
1096
- console.warn("Duplicate group id ".concat(options === null || options === void 0 ? void 0 : options.id, ". reassigning group id to avoid errors"));
1097
- id = undefined;
1098
- }
1099
- if (!id) {
1100
- id = this.nextGroupId.next();
1101
- while (this._groups.has(id)) {
1102
- id = this.nextGroupId.next();
1103
- }
1104
- }
1105
- var view = new dockviewGroupPanel_1.DockviewGroupPanel(this, id, options);
1106
- view.init({ params: {}, accessor: null }); // required to initialized .part and allow for correct disposal of group
1107
- if (!this._groups.has(view.id)) {
1108
- var disposable = new lifecycle_1.CompositeDisposable(view.model.onTabDragStart(function (event) {
1109
- _this._onWillDragPanel.fire(event);
1110
- }), view.model.onGroupDragStart(function (event) {
1111
- _this._onWillDragGroup.fire(event);
1112
- }), view.model.onMove(function (event) {
1113
- var groupId = event.groupId, itemId = event.itemId, target = event.target, index = event.index;
1114
- _this.moveGroupOrPanel(view, groupId, itemId, target, index);
1115
- }), view.model.onDidDrop(function (event) {
1116
- _this._onDidDrop.fire(__assign(__assign({}, event), { api: _this._api, group: view }));
1117
- }), view.model.onDidAddPanel(function (event) {
1118
- _this._onDidAddPanel.fire(event.panel);
1119
- }), view.model.onDidRemovePanel(function (event) {
1120
- _this._onDidRemovePanel.fire(event.panel);
1121
- }), view.model.onDidActivePanelChange(function (event) {
1122
- _this._onDidActivePanelChange.fire(event.panel);
1123
- }));
1124
- this._groups.set(view.id, { value: view, disposable: disposable });
1125
- }
1126
- // TODO: must be called after the above listeners have been setup,
1127
- // not an ideal pattern
1128
- view.initialize();
1129
- return view;
1130
- };
1131
- DockviewComponent.prototype.createPanel = function (options, group) {
1132
- var contentComponent = options.component;
1133
- var tabComponent = options.tabComponent || this.options.defaultTabComponent;
1134
- var view = new dockviewPanelModel_1.DockviewPanelModel(this, options.id, contentComponent, tabComponent);
1135
- var panel = new dockviewPanel_1.DockviewPanel(options.id, this, this._api, group, view);
1136
- panel.init({
1137
- title: options.title || options.id,
1138
- params: (options === null || options === void 0 ? void 0 : options.params) || {},
1139
- });
1140
- return panel;
1141
- };
1142
- DockviewComponent.prototype.createGroupAtLocation = function (location) {
1143
- if (location === void 0) { location = [0]; }
1144
- var group = this.createGroup();
1145
- this.doAddGroup(group, location);
1146
- return group;
1147
- };
1148
- DockviewComponent.prototype.findGroup = function (panel) {
1149
- var _a;
1150
- return (_a = Array.from(this._groups.values()).find(function (group) {
1151
- return group.value.model.containsPanel(panel);
1152
- })) === null || _a === void 0 ? void 0 : _a.value;
1153
- };
1154
- return DockviewComponent;
1155
- }(baseComponentGridview_1.BaseGrid));
1156
- exports.DockviewComponent = DockviewComponent;
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
28
+ var __read = (this && this.__read) || function (o, n) {
29
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
30
+ if (!m) return o;
31
+ var i = m.call(o), r, ar = [], e;
32
+ try {
33
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
34
+ }
35
+ catch (error) { e = { error: error }; }
36
+ finally {
37
+ try {
38
+ if (r && !r.done && (m = i["return"])) m.call(i);
39
+ }
40
+ finally { if (e) throw e.error; }
41
+ }
42
+ return ar;
43
+ };
44
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
45
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
46
+ if (ar || !(i in from)) {
47
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
48
+ ar[i] = from[i];
49
+ }
50
+ }
51
+ return to.concat(ar || Array.prototype.slice.call(from));
52
+ };
53
+ var __values = (this && this.__values) || function(o) {
54
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
55
+ if (m) return m.call(o);
56
+ if (o && typeof o.length === "number") return {
57
+ next: function () {
58
+ if (o && i >= o.length) o = void 0;
59
+ return { value: o && o[i++], done: !o };
60
+ }
61
+ };
62
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
63
+ };
64
+ Object.defineProperty(exports, "__esModule", { value: true });
65
+ exports.DockviewComponent = void 0;
66
+ var gridview_1 = require("../gridview/gridview");
67
+ var droptarget_1 = require("../dnd/droptarget");
68
+ var array_1 = require("../array");
69
+ var dockviewPanel_1 = require("./dockviewPanel");
70
+ var lifecycle_1 = require("../lifecycle");
71
+ var events_1 = require("../events");
72
+ var watermark_1 = require("./components/watermark/watermark");
73
+ var types_1 = require("./types");
74
+ var math_1 = require("../math");
75
+ var deserializer_1 = require("./deserializer");
76
+ var componentFactory_1 = require("../panel/componentFactory");
77
+ var options_1 = require("./options");
78
+ var baseComponentGridview_1 = require("../gridview/baseComponentGridview");
79
+ var component_api_1 = require("../api/component.api");
80
+ var splitview_1 = require("../splitview/splitview");
81
+ var dockviewGroupPanel_1 = require("./dockviewGroupPanel");
82
+ var dockviewPanelModel_1 = require("./dockviewPanelModel");
83
+ var dataTransfer_1 = require("../dnd/dataTransfer");
84
+ var overlay_1 = require("../dnd/overlay");
85
+ var dom_1 = require("../dom");
86
+ var dockviewFloatingGroupPanel_1 = require("./dockviewFloatingGroupPanel");
87
+ var dockviewPopoutGroupPanel_1 = require("./dockviewPopoutGroupPanel");
88
+ var constants_1 = require("../constants");
89
+ var overlayRenderContainer_1 = require("../overlayRenderContainer");
90
+ function getTheme(element) {
91
+ function toClassList(element) {
92
+ var list = [];
93
+ for (var i = 0; i < element.classList.length; i++) {
94
+ list.push(element.classList.item(i));
95
+ }
96
+ return list;
97
+ }
98
+ var theme = undefined;
99
+ var parent = element;
100
+ while (parent !== null) {
101
+ theme = toClassList(parent).find(function (cls) {
102
+ return cls.startsWith('dockview-theme-');
103
+ });
104
+ if (typeof theme === 'string') {
105
+ break;
106
+ }
107
+ parent = parent.parentElement;
108
+ }
109
+ return theme;
110
+ }
111
+ function typeValidate3(data, path) {
112
+ if (typeof data.id !== 'string') {
113
+ throw new Error("".concat(path, ".id must be a string"));
114
+ }
115
+ if (typeof data.activeView !== 'string' ||
116
+ typeof data.activeView !== 'undefined') {
117
+ throw new Error("".concat(path, ".activeView must be a string of undefined"));
118
+ }
119
+ }
120
+ function typeValidate2(data, path) {
121
+ if (typeof data.size !== 'number' && typeof data.size !== 'undefined') {
122
+ throw new Error("".concat(path, ".size must be a number or undefined"));
123
+ }
124
+ if (typeof data.visible !== 'boolean' &&
125
+ typeof data.visible !== 'undefined') {
126
+ throw new Error("".concat(path, ".visible must be a boolean or undefined"));
127
+ }
128
+ if (data.type === 'leaf') {
129
+ if (typeof data.data !== 'object' ||
130
+ data.data === null ||
131
+ Array.isArray(data.data)) {
132
+ throw new Error('object must be a non-null object');
133
+ }
134
+ typeValidate3(data.data, "".concat(path, ".data"));
135
+ }
136
+ else if (data.type === 'branch') {
137
+ if (!Array.isArray(data.data)) {
138
+ throw new Error("".concat(path, ".data must be an array"));
139
+ }
140
+ }
141
+ else {
142
+ throw new Error("".concat(path, ".type must be onew of {'branch', 'leaf'}"));
143
+ }
144
+ }
145
+ function typeValidate(data) {
146
+ if (typeof data !== 'object' || data === null) {
147
+ throw new Error('object must be a non-null object');
148
+ }
149
+ var grid = data.grid, panels = data.panels, activeGroup = data.activeGroup, floatingGroups = data.floatingGroups;
150
+ if (typeof grid !== 'object' || grid === null) {
151
+ throw new Error("'.grid' must be a non-null object");
152
+ }
153
+ if (typeof grid.height !== 'number') {
154
+ throw new Error("'.grid.height' must be a number");
155
+ }
156
+ if (typeof grid.width !== 'number') {
157
+ throw new Error("'.grid.width' must be a number");
158
+ }
159
+ if (typeof grid.root !== 'object' || grid.root === null) {
160
+ throw new Error("'.grid.root' must be a non-null object");
161
+ }
162
+ if (grid.root.type !== 'branch') {
163
+ throw new Error(".grid.root.type must be of type 'branch'");
164
+ }
165
+ if (grid.orientation !== splitview_1.Orientation.HORIZONTAL &&
166
+ grid.orientation !== splitview_1.Orientation.VERTICAL) {
167
+ throw new Error("'.grid.width' must be one of {".concat(splitview_1.Orientation.HORIZONTAL, ", ").concat(splitview_1.Orientation.VERTICAL, "}"));
168
+ }
169
+ typeValidate2(grid.root, '.grid.root');
170
+ }
171
+ var DockviewComponent = /** @class */ (function (_super) {
172
+ __extends(DockviewComponent, _super);
173
+ function DockviewComponent(options) {
174
+ var _a;
175
+ var _this = _super.call(this, {
176
+ proportionalLayout: true,
177
+ orientation: (_a = options.orientation) !== null && _a !== void 0 ? _a : splitview_1.Orientation.HORIZONTAL,
178
+ styles: options.styles,
179
+ parentElement: options.parentElement,
180
+ disableAutoResizing: options.disableAutoResizing,
181
+ }) || this;
182
+ _this.nextGroupId = (0, math_1.sequentialNumberGenerator)();
183
+ _this._deserializer = new deserializer_1.DefaultDockviewDeserialzier(_this);
184
+ _this.watermark = null;
185
+ _this._onWillDragPanel = new events_1.Emitter();
186
+ _this.onWillDragPanel = _this._onWillDragPanel.event;
187
+ _this._onWillDragGroup = new events_1.Emitter();
188
+ _this.onWillDragGroup = _this._onWillDragGroup.event;
189
+ _this._onDidDrop = new events_1.Emitter();
190
+ _this.onDidDrop = _this._onDidDrop.event;
191
+ _this._onDidRemovePanel = new events_1.Emitter();
192
+ _this.onDidRemovePanel = _this._onDidRemovePanel.event;
193
+ _this._onDidAddPanel = new events_1.Emitter();
194
+ _this.onDidAddPanel = _this._onDidAddPanel.event;
195
+ _this._onDidLayoutFromJSON = new events_1.Emitter();
196
+ _this.onDidLayoutFromJSON = _this._onDidLayoutFromJSON.event;
197
+ _this._onDidActivePanelChange = new events_1.Emitter();
198
+ _this.onDidActivePanelChange = _this._onDidActivePanelChange.event;
199
+ _this._floatingGroups = [];
200
+ _this._popoutGroups = [];
201
+ var gready = document.createElement('div');
202
+ gready.className = 'dv-overlay-render-container';
203
+ _this.gridview.element.appendChild(gready);
204
+ _this.overlayRenderContainer = new overlayRenderContainer_1.OverlayRenderContainer(gready);
205
+ (0, dom_1.toggleClass)(_this.gridview.element, 'dv-dockview', true);
206
+ (0, dom_1.toggleClass)(_this.element, 'dv-debug', !!options.debug);
207
+ _this.addDisposables(_this.overlayRenderContainer, _this._onWillDragPanel, _this._onWillDragGroup, _this._onDidActivePanelChange, _this._onDidAddPanel, _this._onDidRemovePanel, _this._onDidLayoutFromJSON, _this._onDidDrop, events_1.Event.any(_this.onDidAddGroup, _this.onDidRemoveGroup)(function () {
208
+ _this.updateWatermark();
209
+ }), events_1.Event.any(_this.onDidAddPanel, _this.onDidRemovePanel, _this.onDidActivePanelChange)(function () {
210
+ _this._bufferOnDidLayoutChange.fire();
211
+ }), lifecycle_1.Disposable.from(function () {
212
+ var e_1, _a, e_2, _b;
213
+ try {
214
+ // iterate over a copy of the array since .dispose() mutates the original array
215
+ for (var _c = __values(__spreadArray([], __read(_this._floatingGroups), false)), _d = _c.next(); !_d.done; _d = _c.next()) {
216
+ var group = _d.value;
217
+ group.dispose();
218
+ }
219
+ }
220
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
221
+ finally {
222
+ try {
223
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
224
+ }
225
+ finally { if (e_1) throw e_1.error; }
226
+ }
227
+ try {
228
+ // iterate over a copy of the array since .dispose() mutates the original array
229
+ for (var _e = __values(__spreadArray([], __read(_this._popoutGroups), false)), _f = _e.next(); !_f.done; _f = _e.next()) {
230
+ var group = _f.value;
231
+ group.dispose();
232
+ }
233
+ }
234
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
235
+ finally {
236
+ try {
237
+ if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
238
+ }
239
+ finally { if (e_2) throw e_2.error; }
240
+ }
241
+ }));
242
+ _this._options = options;
243
+ if (!_this.options.components) {
244
+ _this.options.components = {};
245
+ }
246
+ if (!_this.options.frameworkComponents) {
247
+ _this.options.frameworkComponents = {};
248
+ }
249
+ if (!_this.options.frameworkTabComponents) {
250
+ _this.options.frameworkTabComponents = {};
251
+ }
252
+ if (!_this.options.tabComponents) {
253
+ _this.options.tabComponents = {};
254
+ }
255
+ if (!_this.options.watermarkComponent &&
256
+ !_this.options.watermarkFrameworkComponent) {
257
+ _this.options.watermarkComponent = watermark_1.Watermark;
258
+ }
259
+ var dropTarget = new droptarget_1.Droptarget(_this.element, {
260
+ canDisplayOverlay: function (event, position) {
261
+ var data = (0, dataTransfer_1.getPanelData)();
262
+ if (data) {
263
+ if (data.viewId !== _this.id) {
264
+ return false;
265
+ }
266
+ if (position === 'center') {
267
+ // center drop target is only allowed if there are no panels in the grid
268
+ // floating panels are allowed
269
+ return _this.gridview.length === 0;
270
+ }
271
+ return true;
272
+ }
273
+ if (_this.options.showDndOverlay) {
274
+ if (position === 'center' && _this.gridview.length !== 0) {
275
+ /**
276
+ * for external events only show the four-corner drag overlays, disable
277
+ * the center position so that external drag events can fall through to the group
278
+ * and panel drop target handlers
279
+ */
280
+ return false;
281
+ }
282
+ return _this.options.showDndOverlay({
283
+ nativeEvent: event,
284
+ position: position,
285
+ target: types_1.DockviewDropTargets.Edge,
286
+ getData: dataTransfer_1.getPanelData,
287
+ });
288
+ }
289
+ return false;
290
+ },
291
+ acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
292
+ overlayModel: {
293
+ activationSize: { type: 'pixels', value: 10 },
294
+ size: { type: 'pixels', value: 20 },
295
+ },
296
+ });
297
+ _this.addDisposables(dropTarget.onDrop(function (event) {
298
+ var _a;
299
+ var data = (0, dataTransfer_1.getPanelData)();
300
+ if (data) {
301
+ _this.moveGroupOrPanel(_this.orthogonalize(event.position), data.groupId, (_a = data.panelId) !== null && _a !== void 0 ? _a : undefined, 'center');
302
+ }
303
+ else {
304
+ _this._onDidDrop.fire(__assign(__assign({}, event), { api: _this._api, group: null, getData: dataTransfer_1.getPanelData }));
305
+ }
306
+ }), dropTarget);
307
+ _this._api = new component_api_1.DockviewApi(_this);
308
+ _this.updateWatermark();
309
+ return _this;
310
+ }
311
+ Object.defineProperty(DockviewComponent.prototype, "orientation", {
312
+ get: function () {
313
+ return this.gridview.orientation;
314
+ },
315
+ enumerable: false,
316
+ configurable: true
317
+ });
318
+ Object.defineProperty(DockviewComponent.prototype, "totalPanels", {
319
+ get: function () {
320
+ return this.panels.length;
321
+ },
322
+ enumerable: false,
323
+ configurable: true
324
+ });
325
+ Object.defineProperty(DockviewComponent.prototype, "panels", {
326
+ get: function () {
327
+ return this.groups.flatMap(function (group) { return group.panels; });
328
+ },
329
+ enumerable: false,
330
+ configurable: true
331
+ });
332
+ Object.defineProperty(DockviewComponent.prototype, "options", {
333
+ get: function () {
334
+ return this._options;
335
+ },
336
+ enumerable: false,
337
+ configurable: true
338
+ });
339
+ Object.defineProperty(DockviewComponent.prototype, "activePanel", {
340
+ get: function () {
341
+ var activeGroup = this.activeGroup;
342
+ if (!activeGroup) {
343
+ return undefined;
344
+ }
345
+ return activeGroup.activePanel;
346
+ },
347
+ enumerable: false,
348
+ configurable: true
349
+ });
350
+ Object.defineProperty(DockviewComponent.prototype, "renderer", {
351
+ get: function () {
352
+ var _a;
353
+ return (_a = this.options.defaultRenderer) !== null && _a !== void 0 ? _a : 'onlyWhenVisibile';
354
+ },
355
+ enumerable: false,
356
+ configurable: true
357
+ });
358
+ DockviewComponent.prototype.addPopoutGroup = function (item, options) {
359
+ var _this = this;
360
+ var _a;
361
+ var group;
362
+ var box = options === null || options === void 0 ? void 0 : options.position;
363
+ if (item instanceof dockviewPanel_1.DockviewPanel) {
364
+ group = this.createGroup();
365
+ this.removePanel(item, {
366
+ removeEmptyGroup: true,
367
+ skipDispose: true,
368
+ });
369
+ group.model.openPanel(item);
370
+ if (!box) {
371
+ box = this.element.getBoundingClientRect();
372
+ }
373
+ }
374
+ else {
375
+ group = item;
376
+ if (!box) {
377
+ box = group.element.getBoundingClientRect();
378
+ }
379
+ var skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
380
+ options.skipRemoveGroup;
381
+ if (!skip) {
382
+ this.doRemoveGroup(item, { skipDispose: true });
383
+ }
384
+ }
385
+ var theme = getTheme(this.gridview.element);
386
+ var popoutWindow = new dockviewPopoutGroupPanel_1.DockviewPopoutGroupPanel("".concat(this.id, "-").concat(group.id), // globally unique within dockview
387
+ group, {
388
+ className: theme !== null && theme !== void 0 ? theme : '',
389
+ popoutUrl: (_a = options === null || options === void 0 ? void 0 : options.popoutUrl) !== null && _a !== void 0 ? _a : '/popout.html',
390
+ box: {
391
+ left: window.screenX + box.left,
392
+ top: window.screenY + box.top,
393
+ width: box.width,
394
+ height: box.height,
395
+ },
396
+ });
397
+ popoutWindow.addDisposables({
398
+ dispose: function () {
399
+ (0, array_1.remove)(_this._popoutGroups, popoutWindow);
400
+ _this.updateWatermark();
401
+ },
402
+ }, popoutWindow.window.onDidClose(function () {
403
+ _this.doAddGroup(group, [0]);
404
+ }));
405
+ this._popoutGroups.push(popoutWindow);
406
+ this.updateWatermark();
407
+ };
408
+ DockviewComponent.prototype.addFloatingGroup = function (item, coord, options) {
409
+ var _this = this;
410
+ var _a, _b, _c, _d, _e, _f;
411
+ var group;
412
+ if (item instanceof dockviewPanel_1.DockviewPanel) {
413
+ group = this.createGroup();
414
+ this.removePanel(item, {
415
+ removeEmptyGroup: true,
416
+ skipDispose: true,
417
+ });
418
+ group.model.openPanel(item);
419
+ }
420
+ else {
421
+ group = item;
422
+ var skip = typeof (options === null || options === void 0 ? void 0 : options.skipRemoveGroup) === 'boolean' &&
423
+ options.skipRemoveGroup;
424
+ if (!skip) {
425
+ this.doRemoveGroup(item, { skipDispose: true });
426
+ }
427
+ }
428
+ group.model.location = 'floating';
429
+ var overlayLeft = typeof (coord === null || coord === void 0 ? void 0 : coord.x) === 'number'
430
+ ? Math.max(coord.x, 0)
431
+ : constants_1.DEFAULT_FLOATING_GROUP_POSITION.left;
432
+ var overlayTop = typeof (coord === null || coord === void 0 ? void 0 : coord.y) === 'number'
433
+ ? Math.max(coord.y, 0)
434
+ : constants_1.DEFAULT_FLOATING_GROUP_POSITION.top;
435
+ var overlay = new overlay_1.Overlay({
436
+ container: this.gridview.element,
437
+ content: group.element,
438
+ height: (_a = coord === null || coord === void 0 ? void 0 : coord.height) !== null && _a !== void 0 ? _a : 300,
439
+ width: (_b = coord === null || coord === void 0 ? void 0 : coord.width) !== null && _b !== void 0 ? _b : 300,
440
+ left: overlayLeft,
441
+ top: overlayTop,
442
+ minimumInViewportWidth: this.options.floatingGroupBounds === 'boundedWithinViewport'
443
+ ? undefined
444
+ : (_d = (_c = this.options.floatingGroupBounds) === null || _c === void 0 ? void 0 : _c.minimumWidthWithinViewport) !== null && _d !== void 0 ? _d : constants_1.DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
445
+ minimumInViewportHeight: this.options.floatingGroupBounds === 'boundedWithinViewport'
446
+ ? undefined
447
+ : (_f = (_e = this.options.floatingGroupBounds) === null || _e === void 0 ? void 0 : _e.minimumHeightWithinViewport) !== null && _f !== void 0 ? _f : constants_1.DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE,
448
+ });
449
+ var el = group.element.querySelector('.void-container');
450
+ if (!el) {
451
+ throw new Error('failed to find drag handle');
452
+ }
453
+ overlay.setupDrag(el, {
454
+ inDragMode: typeof (options === null || options === void 0 ? void 0 : options.inDragMode) === 'boolean'
455
+ ? options.inDragMode
456
+ : false,
457
+ });
458
+ var floatingGroupPanel = new dockviewFloatingGroupPanel_1.DockviewFloatingGroupPanel(group, overlay);
459
+ var disposable = (0, dom_1.watchElementResize)(group.element, function (entry) {
460
+ var _a = entry.contentRect, width = _a.width, height = _a.height;
461
+ group.layout(width, height); // let the group know it's size is changing so it can fire events to the panel
462
+ });
463
+ floatingGroupPanel.addDisposables(overlay.onDidChange(function () {
464
+ // this is either a resize or a move
465
+ // to inform the panels .layout(...) the group with it's current size
466
+ // don't care about resize since the above watcher handles that
467
+ group.layout(group.height, group.width);
468
+ }), overlay.onDidChangeEnd(function () {
469
+ _this._bufferOnDidLayoutChange.fire();
470
+ }), group.onDidChange(function (event) {
471
+ overlay.setBounds({
472
+ height: event === null || event === void 0 ? void 0 : event.height,
473
+ width: event === null || event === void 0 ? void 0 : event.width,
474
+ });
475
+ }), {
476
+ dispose: function () {
477
+ disposable.dispose();
478
+ group.model.location = 'grid';
479
+ (0, array_1.remove)(_this._floatingGroups, floatingGroupPanel);
480
+ _this.updateWatermark();
481
+ },
482
+ });
483
+ this._floatingGroups.push(floatingGroupPanel);
484
+ this.updateWatermark();
485
+ };
486
+ DockviewComponent.prototype.orthogonalize = function (position) {
487
+ switch (position) {
488
+ case 'top':
489
+ case 'bottom':
490
+ if (this.gridview.orientation === splitview_1.Orientation.HORIZONTAL) {
491
+ // we need to add to a vertical splitview but the current root is a horizontal splitview.
492
+ // insert a vertical splitview at the root level and add the existing view as a child
493
+ this.gridview.insertOrthogonalSplitviewAtRoot();
494
+ }
495
+ break;
496
+ case 'left':
497
+ case 'right':
498
+ if (this.gridview.orientation === splitview_1.Orientation.VERTICAL) {
499
+ // we need to add to a horizontal splitview but the current root is a vertical splitview.
500
+ // insert a horiziontal splitview at the root level and add the existing view as a child
501
+ this.gridview.insertOrthogonalSplitviewAtRoot();
502
+ }
503
+ break;
504
+ default:
505
+ break;
506
+ }
507
+ switch (position) {
508
+ case 'top':
509
+ case 'left':
510
+ case 'center':
511
+ return this.createGroupAtLocation([0]); // insert into first position
512
+ case 'bottom':
513
+ case 'right':
514
+ return this.createGroupAtLocation([this.gridview.length]); // insert into last position
515
+ default:
516
+ throw new Error("unsupported position ".concat(position));
517
+ }
518
+ };
519
+ DockviewComponent.prototype.updateOptions = function (options) {
520
+ var e_3, _a;
521
+ var _b, _c;
522
+ var hasOrientationChanged = typeof options.orientation === 'string' &&
523
+ this.gridview.orientation !== options.orientation;
524
+ var hasFloatingGroupOptionsChanged = options.floatingGroupBounds !== undefined &&
525
+ options.floatingGroupBounds !== this.options.floatingGroupBounds;
526
+ this._options = __assign(__assign({}, this.options), options);
527
+ if (hasOrientationChanged) {
528
+ this.gridview.orientation = options.orientation;
529
+ }
530
+ if (hasFloatingGroupOptionsChanged) {
531
+ try {
532
+ for (var _d = __values(this._floatingGroups), _e = _d.next(); !_e.done; _e = _d.next()) {
533
+ var group = _e.value;
534
+ switch (this.options.floatingGroupBounds) {
535
+ case 'boundedWithinViewport':
536
+ group.overlay.minimumInViewportHeight = undefined;
537
+ group.overlay.minimumInViewportWidth = undefined;
538
+ break;
539
+ case undefined:
540
+ group.overlay.minimumInViewportHeight =
541
+ constants_1.DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;
542
+ group.overlay.minimumInViewportWidth =
543
+ constants_1.DEFAULT_FLOATING_GROUP_OVERFLOW_SIZE;
544
+ break;
545
+ default:
546
+ group.overlay.minimumInViewportHeight =
547
+ (_b = this.options.floatingGroupBounds) === null || _b === void 0 ? void 0 : _b.minimumHeightWithinViewport;
548
+ group.overlay.minimumInViewportWidth =
549
+ (_c = this.options.floatingGroupBounds) === null || _c === void 0 ? void 0 : _c.minimumWidthWithinViewport;
550
+ }
551
+ group.overlay.setBounds({});
552
+ }
553
+ }
554
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
555
+ finally {
556
+ try {
557
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
558
+ }
559
+ finally { if (e_3) throw e_3.error; }
560
+ }
561
+ }
562
+ this.layout(this.gridview.width, this.gridview.height, true);
563
+ };
564
+ DockviewComponent.prototype.layout = function (width, height, forceResize) {
565
+ var e_4, _a;
566
+ _super.prototype.layout.call(this, width, height, forceResize);
567
+ if (this._floatingGroups) {
568
+ try {
569
+ for (var _b = __values(this._floatingGroups), _c = _b.next(); !_c.done; _c = _b.next()) {
570
+ var floating = _c.value;
571
+ // ensure floting groups stay within visible boundaries
572
+ floating.overlay.setBounds();
573
+ }
574
+ }
575
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
576
+ finally {
577
+ try {
578
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
579
+ }
580
+ finally { if (e_4) throw e_4.error; }
581
+ }
582
+ }
583
+ };
584
+ DockviewComponent.prototype.focus = function () {
585
+ var _a;
586
+ (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();
587
+ };
588
+ DockviewComponent.prototype.getGroupPanel = function (id) {
589
+ return this.panels.find(function (panel) { return panel.id === id; });
590
+ };
591
+ DockviewComponent.prototype.setActivePanel = function (panel) {
592
+ this.doSetGroupActive(panel.group);
593
+ panel.group.model.openPanel(panel);
594
+ };
595
+ DockviewComponent.prototype.moveToNext = function (options) {
596
+ var _a;
597
+ if (options === void 0) { options = {}; }
598
+ if (!options.group) {
599
+ if (!this.activeGroup) {
600
+ return;
601
+ }
602
+ options.group = this.activeGroup;
603
+ }
604
+ if (options.includePanel && options.group) {
605
+ if (options.group.activePanel !==
606
+ options.group.panels[options.group.panels.length - 1]) {
607
+ options.group.model.moveToNext({ suppressRoll: true });
608
+ return;
609
+ }
610
+ }
611
+ var location = (0, gridview_1.getGridLocation)(options.group.element);
612
+ var next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;
613
+ this.doSetGroupAndPanelActive(next);
614
+ };
615
+ DockviewComponent.prototype.moveToPrevious = function (options) {
616
+ var _a;
617
+ if (options === void 0) { options = {}; }
618
+ if (!options.group) {
619
+ if (!this.activeGroup) {
620
+ return;
621
+ }
622
+ options.group = this.activeGroup;
623
+ }
624
+ if (options.includePanel && options.group) {
625
+ if (options.group.activePanel !== options.group.panels[0]) {
626
+ options.group.model.moveToPrevious({ suppressRoll: true });
627
+ return;
628
+ }
629
+ }
630
+ var location = (0, gridview_1.getGridLocation)(options.group.element);
631
+ var next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;
632
+ if (next) {
633
+ this.doSetGroupAndPanelActive(next);
634
+ }
635
+ };
636
+ /**
637
+ * Serialize the current state of the layout
638
+ *
639
+ * @returns A JSON respresentation of the layout
640
+ */
641
+ DockviewComponent.prototype.toJSON = function () {
642
+ var _a;
643
+ var data = this.gridview.serialize();
644
+ var panels = this.panels.reduce(function (collection, panel) {
645
+ collection[panel.id] = panel.toJSON();
646
+ return collection;
647
+ }, {});
648
+ var floats = this._floatingGroups.map(function (group) {
649
+ return {
650
+ data: group.group.toJSON(),
651
+ position: group.overlay.toJSON(),
652
+ };
653
+ });
654
+ var popoutGroups = this._popoutGroups.map(function (group) {
655
+ return {
656
+ data: group.group.toJSON(),
657
+ position: group.window.dimensions(),
658
+ };
659
+ });
660
+ var result = {
661
+ grid: data,
662
+ panels: panels,
663
+ activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,
664
+ };
665
+ if (floats.length > 0) {
666
+ result.floatingGroups = floats;
667
+ }
668
+ if (popoutGroups.length > 0) {
669
+ result.popoutGroups = popoutGroups;
670
+ }
671
+ return result;
672
+ };
673
+ DockviewComponent.prototype.fromJSON = function (data) {
674
+ var e_5, _a, e_6, _b, e_7, _c, e_8, _d, e_9, _e, e_10, _f, e_11, _g;
675
+ var _this = this;
676
+ var _h, _j;
677
+ this.clear();
678
+ if (typeof data !== 'object' || data === null) {
679
+ throw new Error('serialized layout must be a non-null object');
680
+ }
681
+ var grid = data.grid, panels = data.panels, activeGroup = data.activeGroup;
682
+ if (grid.root.type !== 'branch' || !Array.isArray(grid.root.data)) {
683
+ throw new Error('root must be of type branch');
684
+ }
685
+ try {
686
+ // take note of the existing dimensions
687
+ var width = this.width;
688
+ var height = this.height;
689
+ var createGroupFromSerializedState_1 = function (data) {
690
+ var e_12, _a;
691
+ var id = data.id, locked = data.locked, hideHeader = data.hideHeader, views = data.views, activeView = data.activeView;
692
+ if (typeof id !== 'string') {
693
+ throw new Error('group id must be of type string');
694
+ }
695
+ var group = _this.createGroup({
696
+ id: id,
697
+ locked: !!locked,
698
+ hideHeader: !!hideHeader,
699
+ });
700
+ var createdPanels = [];
701
+ try {
702
+ for (var views_1 = __values(views), views_1_1 = views_1.next(); !views_1_1.done; views_1_1 = views_1.next()) {
703
+ var child = views_1_1.value;
704
+ /**
705
+ * Run the deserializer step seperately since this may fail to due corrupted external state.
706
+ * In running this section first we avoid firing lots of 'add' events in the event of a failure
707
+ * due to a corruption of input data.
708
+ */
709
+ var panel = _this._deserializer.fromJSON(panels[child], group);
710
+ createdPanels.push(panel);
711
+ }
712
+ }
713
+ catch (e_12_1) { e_12 = { error: e_12_1 }; }
714
+ finally {
715
+ try {
716
+ if (views_1_1 && !views_1_1.done && (_a = views_1.return)) _a.call(views_1);
717
+ }
718
+ finally { if (e_12) throw e_12.error; }
719
+ }
720
+ _this._onDidAddGroup.fire(group);
721
+ for (var i = 0; i < views.length; i++) {
722
+ var panel = createdPanels[i];
723
+ var isActive = typeof activeView === 'string' &&
724
+ activeView === panel.id;
725
+ group.model.openPanel(panel, {
726
+ skipSetPanelActive: !isActive,
727
+ skipSetGroupActive: true,
728
+ });
729
+ }
730
+ if (!group.activePanel && group.panels.length > 0) {
731
+ group.model.openPanel(group.panels[group.panels.length - 1], {
732
+ skipSetGroupActive: true,
733
+ });
734
+ }
735
+ return group;
736
+ };
737
+ this.gridview.deserialize(grid, {
738
+ fromJSON: function (node) {
739
+ return createGroupFromSerializedState_1(node.data);
740
+ },
741
+ });
742
+ this.layout(width, height, true);
743
+ var serializedFloatingGroups = (_h = data.floatingGroups) !== null && _h !== void 0 ? _h : [];
744
+ try {
745
+ for (var serializedFloatingGroups_1 = __values(serializedFloatingGroups), serializedFloatingGroups_1_1 = serializedFloatingGroups_1.next(); !serializedFloatingGroups_1_1.done; serializedFloatingGroups_1_1 = serializedFloatingGroups_1.next()) {
746
+ var serializedFloatingGroup = serializedFloatingGroups_1_1.value;
747
+ var data_1 = serializedFloatingGroup.data, position = serializedFloatingGroup.position;
748
+ var group = createGroupFromSerializedState_1(data_1);
749
+ this.addFloatingGroup(group, {
750
+ x: position.left,
751
+ y: position.top,
752
+ height: position.height,
753
+ width: position.width,
754
+ }, { skipRemoveGroup: true, inDragMode: false });
755
+ }
756
+ }
757
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
758
+ finally {
759
+ try {
760
+ if (serializedFloatingGroups_1_1 && !serializedFloatingGroups_1_1.done && (_a = serializedFloatingGroups_1.return)) _a.call(serializedFloatingGroups_1);
761
+ }
762
+ finally { if (e_5) throw e_5.error; }
763
+ }
764
+ var serializedPopoutGroups = (_j = data.popoutGroups) !== null && _j !== void 0 ? _j : [];
765
+ try {
766
+ for (var serializedPopoutGroups_1 = __values(serializedPopoutGroups), serializedPopoutGroups_1_1 = serializedPopoutGroups_1.next(); !serializedPopoutGroups_1_1.done; serializedPopoutGroups_1_1 = serializedPopoutGroups_1.next()) {
767
+ var serializedPopoutGroup = serializedPopoutGroups_1_1.value;
768
+ var data_2 = serializedPopoutGroup.data, position = serializedPopoutGroup.position;
769
+ var group = createGroupFromSerializedState_1(data_2);
770
+ this.addPopoutGroup(group, {
771
+ skipRemoveGroup: true,
772
+ position: position !== null && position !== void 0 ? position : undefined,
773
+ });
774
+ }
775
+ }
776
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
777
+ finally {
778
+ try {
779
+ if (serializedPopoutGroups_1_1 && !serializedPopoutGroups_1_1.done && (_b = serializedPopoutGroups_1.return)) _b.call(serializedPopoutGroups_1);
780
+ }
781
+ finally { if (e_6) throw e_6.error; }
782
+ }
783
+ try {
784
+ for (var _k = __values(this._floatingGroups), _l = _k.next(); !_l.done; _l = _k.next()) {
785
+ var floatingGroup = _l.value;
786
+ floatingGroup.overlay.setBounds();
787
+ }
788
+ }
789
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
790
+ finally {
791
+ try {
792
+ if (_l && !_l.done && (_c = _k.return)) _c.call(_k);
793
+ }
794
+ finally { if (e_7) throw e_7.error; }
795
+ }
796
+ if (typeof activeGroup === 'string') {
797
+ var panel = this.getPanel(activeGroup);
798
+ if (panel) {
799
+ this.doSetGroupAndPanelActive(panel);
800
+ }
801
+ }
802
+ }
803
+ catch (err) {
804
+ try {
805
+ /**
806
+ * Takes all the successfully created groups and remove all of their panels.
807
+ */
808
+ for (var _m = __values(this.groups), _o = _m.next(); !_o.done; _o = _m.next()) {
809
+ var group = _o.value;
810
+ try {
811
+ for (var _p = (e_9 = void 0, __values(group.panels)), _q = _p.next(); !_q.done; _q = _p.next()) {
812
+ var panel = _q.value;
813
+ this.removePanel(panel, {
814
+ removeEmptyGroup: false,
815
+ skipDispose: false,
816
+ });
817
+ }
818
+ }
819
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
820
+ finally {
821
+ try {
822
+ if (_q && !_q.done && (_e = _p.return)) _e.call(_p);
823
+ }
824
+ finally { if (e_9) throw e_9.error; }
825
+ }
826
+ }
827
+ }
828
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
829
+ finally {
830
+ try {
831
+ if (_o && !_o.done && (_d = _m.return)) _d.call(_m);
832
+ }
833
+ finally { if (e_8) throw e_8.error; }
834
+ }
835
+ try {
836
+ /**
837
+ * To remove a group we cannot call this.removeGroup(...) since this makes assumptions about
838
+ * the underlying HTMLElement existing in the Gridview.
839
+ */
840
+ for (var _r = __values(this.groups), _s = _r.next(); !_s.done; _s = _r.next()) {
841
+ var group = _s.value;
842
+ group.dispose();
843
+ this._groups.delete(group.id);
844
+ this._onDidRemoveGroup.fire(group);
845
+ }
846
+ }
847
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
848
+ finally {
849
+ try {
850
+ if (_s && !_s.done && (_f = _r.return)) _f.call(_r);
851
+ }
852
+ finally { if (e_10) throw e_10.error; }
853
+ }
854
+ try {
855
+ // iterate over a reassigned array since original array will be modified
856
+ for (var _t = __values(__spreadArray([], __read(this._floatingGroups), false)), _u = _t.next(); !_u.done; _u = _t.next()) {
857
+ var floatingGroup = _u.value;
858
+ floatingGroup.dispose();
859
+ }
860
+ }
861
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
862
+ finally {
863
+ try {
864
+ if (_u && !_u.done && (_g = _t.return)) _g.call(_t);
865
+ }
866
+ finally { if (e_11) throw e_11.error; }
867
+ }
868
+ // fires clean-up events and clears the underlying HTML gridview.
869
+ this.clear();
870
+ /**
871
+ * even though we have cleaned-up we still want to inform the caller of their error
872
+ * and we'll do this through re-throwing the original error since afterall you would
873
+ * expect trying to load a corrupted layout to result in an error and not silently fail...
874
+ */
875
+ throw err;
876
+ }
877
+ this._onDidLayoutFromJSON.fire();
878
+ };
879
+ DockviewComponent.prototype.clear = function () {
880
+ var e_13, _a;
881
+ var groups = Array.from(this._groups.values()).map(function (_) { return _.value; });
882
+ var hasActiveGroup = !!this.activeGroup;
883
+ var hasActivePanel = !!this.activePanel;
884
+ try {
885
+ for (var groups_1 = __values(groups), groups_1_1 = groups_1.next(); !groups_1_1.done; groups_1_1 = groups_1.next()) {
886
+ var group = groups_1_1.value;
887
+ // remove the group will automatically remove the panels
888
+ this.removeGroup(group, { skipActive: true });
889
+ }
890
+ }
891
+ catch (e_13_1) { e_13 = { error: e_13_1 }; }
892
+ finally {
893
+ try {
894
+ if (groups_1_1 && !groups_1_1.done && (_a = groups_1.return)) _a.call(groups_1);
895
+ }
896
+ finally { if (e_13) throw e_13.error; }
897
+ }
898
+ if (hasActiveGroup) {
899
+ this.doSetGroupAndPanelActive(undefined);
900
+ }
901
+ if (hasActivePanel) {
902
+ this._onDidActivePanelChange.fire(undefined);
903
+ }
904
+ this.gridview.clear();
905
+ };
906
+ DockviewComponent.prototype.closeAllGroups = function () {
907
+ var e_14, _a;
908
+ try {
909
+ for (var _b = __values(this._groups.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
910
+ var entry = _c.value;
911
+ var _d = __read(entry, 2), _ = _d[0], group = _d[1];
912
+ group.value.model.closeAllPanels();
913
+ }
914
+ }
915
+ catch (e_14_1) { e_14 = { error: e_14_1 }; }
916
+ finally {
917
+ try {
918
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
919
+ }
920
+ finally { if (e_14) throw e_14.error; }
921
+ }
922
+ };
923
+ DockviewComponent.prototype.addPanel = function (options) {
924
+ var _a, _b;
925
+ if (this.panels.find(function (_) { return _.id === options.id; })) {
926
+ throw new Error("panel with id ".concat(options.id, " already exists"));
927
+ }
928
+ var referenceGroup;
929
+ if (options.position && options.floating) {
930
+ throw new Error('you can only provide one of: position, floating as arguments to .addPanel(...)');
931
+ }
932
+ if (options.position) {
933
+ if ((0, options_1.isPanelOptionsWithPanel)(options.position)) {
934
+ var referencePanel = typeof options.position.referencePanel === 'string'
935
+ ? this.getGroupPanel(options.position.referencePanel)
936
+ : options.position.referencePanel;
937
+ if (!referencePanel) {
938
+ throw new Error("referencePanel ".concat(options.position.referencePanel, " does not exist"));
939
+ }
940
+ referenceGroup = this.findGroup(referencePanel);
941
+ }
942
+ else if ((0, options_1.isPanelOptionsWithGroup)(options.position)) {
943
+ referenceGroup =
944
+ typeof options.position.referenceGroup === 'string'
945
+ ? (_a = this._groups.get(options.position.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value
946
+ : options.position.referenceGroup;
947
+ if (!referenceGroup) {
948
+ throw new Error("referencePanel ".concat(options.position.referenceGroup, " does not exist"));
949
+ }
950
+ }
951
+ else {
952
+ var group = this.orthogonalize((0, droptarget_1.directionToPosition)(options.position.direction));
953
+ var panel_1 = this.createPanel(options, group);
954
+ group.model.openPanel(panel_1);
955
+ return panel_1;
956
+ }
957
+ }
958
+ else {
959
+ referenceGroup = this.activeGroup;
960
+ }
961
+ var panel;
962
+ if (referenceGroup) {
963
+ var target = (0, baseComponentGridview_1.toTarget)(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');
964
+ if (options.floating) {
965
+ var group = this.createGroup();
966
+ var o = typeof options.floating === 'object' &&
967
+ options.floating !== null
968
+ ? options.floating
969
+ : {};
970
+ this.addFloatingGroup(group, o, {
971
+ inDragMode: false,
972
+ skipRemoveGroup: true,
973
+ });
974
+ this._onDidAddGroup.fire(group);
975
+ panel = this.createPanel(options, group);
976
+ group.model.openPanel(panel);
977
+ this.doSetGroupAndPanelActive(group);
978
+ }
979
+ else if (referenceGroup.api.location === 'floating' ||
980
+ target === 'center') {
981
+ panel = this.createPanel(options, referenceGroup);
982
+ referenceGroup.model.openPanel(panel);
983
+ }
984
+ else {
985
+ var location_1 = (0, gridview_1.getGridLocation)(referenceGroup.element);
986
+ var relativeLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, location_1, target);
987
+ var group = this.createGroupAtLocation(relativeLocation);
988
+ panel = this.createPanel(options, group);
989
+ group.model.openPanel(panel);
990
+ }
991
+ }
992
+ else if (options.floating) {
993
+ var group = this.createGroup();
994
+ var o = typeof options.floating === 'object' &&
995
+ options.floating !== null
996
+ ? options.floating
997
+ : {};
998
+ this.addFloatingGroup(group, o, {
999
+ inDragMode: false,
1000
+ skipRemoveGroup: true,
1001
+ });
1002
+ this._onDidAddGroup.fire(group);
1003
+ panel = this.createPanel(options, group);
1004
+ group.model.openPanel(panel);
1005
+ this.doSetGroupAndPanelActive(group);
1006
+ }
1007
+ else {
1008
+ var group = this.createGroupAtLocation();
1009
+ panel = this.createPanel(options, group);
1010
+ group.model.openPanel(panel);
1011
+ }
1012
+ return panel;
1013
+ };
1014
+ DockviewComponent.prototype.removePanel = function (panel, options) {
1015
+ if (options === void 0) { options = {
1016
+ removeEmptyGroup: true,
1017
+ skipDispose: false,
1018
+ }; }
1019
+ var group = panel.group;
1020
+ if (!group) {
1021
+ throw new Error("cannot remove panel ".concat(panel.id, ". it's missing a group."));
1022
+ }
1023
+ group.model.removePanel(panel);
1024
+ if (!options.skipDispose) {
1025
+ this.overlayRenderContainer.detatch(panel);
1026
+ panel.dispose();
1027
+ }
1028
+ if (group.size === 0 && options.removeEmptyGroup) {
1029
+ this.removeGroup(group);
1030
+ }
1031
+ };
1032
+ DockviewComponent.prototype.createWatermarkComponent = function () {
1033
+ var _a;
1034
+ return (0, componentFactory_1.createComponent)('watermark-id', 'watermark-name', this.options.watermarkComponent
1035
+ ? { 'watermark-name': this.options.watermarkComponent }
1036
+ : {}, this.options.watermarkFrameworkComponent
1037
+ ? { 'watermark-name': this.options.watermarkFrameworkComponent }
1038
+ : {}, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.watermark);
1039
+ };
1040
+ DockviewComponent.prototype.updateWatermark = function () {
1041
+ var _a, _b;
1042
+ if (this.groups.filter(function (x) { return x.api.location === 'grid'; }).length === 0) {
1043
+ if (!this.watermark) {
1044
+ this.watermark = this.createWatermarkComponent();
1045
+ this.watermark.init({
1046
+ containerApi: new component_api_1.DockviewApi(this),
1047
+ });
1048
+ var watermarkContainer = document.createElement('div');
1049
+ watermarkContainer.className = 'dv-watermark-container';
1050
+ watermarkContainer.appendChild(this.watermark.element);
1051
+ this.gridview.element.appendChild(watermarkContainer);
1052
+ }
1053
+ }
1054
+ else if (this.watermark) {
1055
+ this.watermark.element.parentElement.remove();
1056
+ (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);
1057
+ this.watermark = null;
1058
+ }
1059
+ };
1060
+ DockviewComponent.prototype.addGroup = function (options) {
1061
+ var _a;
1062
+ var group = this.createGroup();
1063
+ if (options) {
1064
+ var referenceGroup = void 0;
1065
+ if ((0, options_1.isGroupOptionsWithPanel)(options)) {
1066
+ var referencePanel = typeof options.referencePanel === 'string'
1067
+ ? this.panels.find(function (panel) { return panel.id === options.referencePanel; })
1068
+ : options.referencePanel;
1069
+ if (!referencePanel) {
1070
+ throw new Error("reference panel ".concat(options.referencePanel, " does not exist"));
1071
+ }
1072
+ referenceGroup = this.findGroup(referencePanel);
1073
+ if (!referenceGroup) {
1074
+ throw new Error("reference group for reference panel ".concat(options.referencePanel, " does not exist"));
1075
+ }
1076
+ }
1077
+ else if ((0, options_1.isGroupOptionsWithGroup)(options)) {
1078
+ referenceGroup =
1079
+ typeof options.referenceGroup === 'string'
1080
+ ? (_a = this._groups.get(options.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value
1081
+ : options.referenceGroup;
1082
+ if (!referenceGroup) {
1083
+ throw new Error("reference group ".concat(options.referenceGroup, " does not exist"));
1084
+ }
1085
+ }
1086
+ else {
1087
+ var group_1 = this.orthogonalize((0, droptarget_1.directionToPosition)(options.direction));
1088
+ return group_1;
1089
+ }
1090
+ var target = (0, baseComponentGridview_1.toTarget)(options.direction || 'within');
1091
+ var location_2 = (0, gridview_1.getGridLocation)(referenceGroup.element);
1092
+ var relativeLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, location_2, target);
1093
+ this.doAddGroup(group, relativeLocation);
1094
+ return group;
1095
+ }
1096
+ else {
1097
+ this.doAddGroup(group);
1098
+ return group;
1099
+ }
1100
+ };
1101
+ DockviewComponent.prototype.removeGroup = function (group, options) {
1102
+ var e_15, _a;
1103
+ var _b;
1104
+ var panels = __spreadArray([], __read(group.panels), false); // reassign since group panels will mutate
1105
+ try {
1106
+ for (var panels_1 = __values(panels), panels_1_1 = panels_1.next(); !panels_1_1.done; panels_1_1 = panels_1.next()) {
1107
+ var panel = panels_1_1.value;
1108
+ this.removePanel(panel, {
1109
+ removeEmptyGroup: false,
1110
+ skipDispose: (_b = options === null || options === void 0 ? void 0 : options.skipDispose) !== null && _b !== void 0 ? _b : false,
1111
+ });
1112
+ }
1113
+ }
1114
+ catch (e_15_1) { e_15 = { error: e_15_1 }; }
1115
+ finally {
1116
+ try {
1117
+ if (panels_1_1 && !panels_1_1.done && (_a = panels_1.return)) _a.call(panels_1);
1118
+ }
1119
+ finally { if (e_15) throw e_15.error; }
1120
+ }
1121
+ var activePanel = this.activePanel;
1122
+ this.doRemoveGroup(group, options);
1123
+ if (this.activePanel !== activePanel) {
1124
+ this._onDidActivePanelChange.fire(this.activePanel);
1125
+ }
1126
+ };
1127
+ DockviewComponent.prototype.doRemoveGroup = function (group, options) {
1128
+ if (group.api.location === 'floating') {
1129
+ var floatingGroup = this._floatingGroups.find(function (_) { return _.group === group; });
1130
+ if (floatingGroup) {
1131
+ if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
1132
+ floatingGroup.group.dispose();
1133
+ this._groups.delete(group.id);
1134
+ this._onDidRemoveGroup.fire(group);
1135
+ }
1136
+ (0, array_1.remove)(this._floatingGroups, floatingGroup);
1137
+ floatingGroup.dispose();
1138
+ if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
1139
+ var groups = Array.from(this._groups.values());
1140
+ this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
1141
+ }
1142
+ return floatingGroup.group;
1143
+ }
1144
+ throw new Error('failed to find floating group');
1145
+ }
1146
+ if (group.api.location === 'popout') {
1147
+ var selectedGroup = this._popoutGroups.find(function (_) { return _.group === group; });
1148
+ if (selectedGroup) {
1149
+ if (!(options === null || options === void 0 ? void 0 : options.skipDispose)) {
1150
+ selectedGroup.group.dispose();
1151
+ this._groups.delete(group.id);
1152
+ this._onDidRemoveGroup.fire(group);
1153
+ }
1154
+ selectedGroup.dispose();
1155
+ if (!(options === null || options === void 0 ? void 0 : options.skipActive) && this._activeGroup === group) {
1156
+ var groups = Array.from(this._groups.values());
1157
+ this.doSetGroupActive(groups.length > 0 ? groups[0].value : undefined);
1158
+ }
1159
+ return selectedGroup.group;
1160
+ }
1161
+ throw new Error('failed to find popout group');
1162
+ }
1163
+ return _super.prototype.doRemoveGroup.call(this, group, options);
1164
+ };
1165
+ DockviewComponent.prototype.moveGroupOrPanel = function (destinationGroup, sourceGroupId, sourceItemId, destinationTarget, destinationIndex) {
1166
+ var _a, _b, _c;
1167
+ var sourceGroup = sourceGroupId
1168
+ ? (_a = this._groups.get(sourceGroupId)) === null || _a === void 0 ? void 0 : _a.value
1169
+ : undefined;
1170
+ if (sourceItemId === undefined) {
1171
+ if (sourceGroup) {
1172
+ this.moveGroup(sourceGroup, destinationGroup, destinationTarget);
1173
+ }
1174
+ return;
1175
+ }
1176
+ if (!destinationTarget || destinationTarget === 'center') {
1177
+ var groupItem = (_b = sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) !== null && _b !== void 0 ? _b : this.panels.find(function (panel) { return panel.id === sourceItemId; });
1178
+ if (!groupItem) {
1179
+ throw new Error("No panel with id ".concat(sourceItemId));
1180
+ }
1181
+ if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
1182
+ this.doRemoveGroup(sourceGroup);
1183
+ }
1184
+ destinationGroup.model.openPanel(groupItem, {
1185
+ index: destinationIndex,
1186
+ });
1187
+ }
1188
+ else {
1189
+ var referenceLocation = (0, gridview_1.getGridLocation)(destinationGroup.element);
1190
+ var targetLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, destinationTarget);
1191
+ if (sourceGroup && sourceGroup.size < 2) {
1192
+ var _d = __read((0, array_1.tail)(targetLocation), 2), targetParentLocation = _d[0], to = _d[1];
1193
+ if (sourceGroup.api.location === 'grid') {
1194
+ var sourceLocation = (0, gridview_1.getGridLocation)(sourceGroup.element);
1195
+ var _e = __read((0, array_1.tail)(sourceLocation), 2), sourceParentLocation = _e[0], from = _e[1];
1196
+ if ((0, array_1.sequenceEquals)(sourceParentLocation, targetParentLocation)) {
1197
+ // special case when 'swapping' two views within same grid location
1198
+ // if a group has one tab - we are essentially moving the 'group'
1199
+ // which is equivalent to swapping two views in this case
1200
+ this.gridview.moveView(sourceParentLocation, from, to);
1201
+ }
1202
+ }
1203
+ // source group will become empty so delete the group
1204
+ var targetGroup = this.doRemoveGroup(sourceGroup, {
1205
+ skipActive: true,
1206
+ skipDispose: true,
1207
+ });
1208
+ // after deleting the group we need to re-evaulate the ref location
1209
+ var updatedReferenceLocation = (0, gridview_1.getGridLocation)(destinationGroup.element);
1210
+ var location_3 = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, updatedReferenceLocation, destinationTarget);
1211
+ this.doAddGroup(targetGroup, location_3);
1212
+ }
1213
+ else {
1214
+ var groupItem = (_c = sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(sourceItemId)) !== null && _c !== void 0 ? _c : this.panels.find(function (panel) { return panel.id === sourceItemId; });
1215
+ if (!groupItem) {
1216
+ throw new Error("No panel with id ".concat(sourceItemId));
1217
+ }
1218
+ var dropLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, destinationTarget);
1219
+ var group = this.createGroupAtLocation(dropLocation);
1220
+ group.model.openPanel(groupItem);
1221
+ }
1222
+ }
1223
+ };
1224
+ DockviewComponent.prototype.moveGroup = function (sourceGroup, referenceGroup, target) {
1225
+ var e_16, _a;
1226
+ if (sourceGroup) {
1227
+ if (!target || target === 'center') {
1228
+ var activePanel = sourceGroup.activePanel;
1229
+ var panels = __spreadArray([], __read(sourceGroup.panels), false).map(function (p) {
1230
+ return sourceGroup.model.removePanel(p.id);
1231
+ });
1232
+ if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
1233
+ this.doRemoveGroup(sourceGroup);
1234
+ }
1235
+ try {
1236
+ for (var panels_2 = __values(panels), panels_2_1 = panels_2.next(); !panels_2_1.done; panels_2_1 = panels_2.next()) {
1237
+ var panel = panels_2_1.value;
1238
+ referenceGroup.model.openPanel(panel, {
1239
+ skipSetPanelActive: panel !== activePanel,
1240
+ });
1241
+ }
1242
+ }
1243
+ catch (e_16_1) { e_16 = { error: e_16_1 }; }
1244
+ finally {
1245
+ try {
1246
+ if (panels_2_1 && !panels_2_1.done && (_a = panels_2.return)) _a.call(panels_2);
1247
+ }
1248
+ finally { if (e_16) throw e_16.error; }
1249
+ }
1250
+ }
1251
+ else {
1252
+ switch (sourceGroup.api.location) {
1253
+ case 'grid':
1254
+ this.gridview.removeView((0, gridview_1.getGridLocation)(sourceGroup.element));
1255
+ break;
1256
+ case 'floating': {
1257
+ var selectedFloatingGroup = this._floatingGroups.find(function (x) { return x.group === sourceGroup; });
1258
+ if (!selectedFloatingGroup) {
1259
+ throw new Error('failed to find floating group');
1260
+ }
1261
+ selectedFloatingGroup.dispose();
1262
+ break;
1263
+ }
1264
+ case 'popout': {
1265
+ var selectedPopoutGroup = this._popoutGroups.find(function (x) { return x.group === sourceGroup; });
1266
+ if (!selectedPopoutGroup) {
1267
+ throw new Error('failed to find popout group');
1268
+ }
1269
+ selectedPopoutGroup.dispose();
1270
+ }
1271
+ }
1272
+ var referenceLocation = (0, gridview_1.getGridLocation)(referenceGroup.element);
1273
+ var dropLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, target);
1274
+ this.gridview.addView(sourceGroup, splitview_1.Sizing.Distribute, dropLocation);
1275
+ }
1276
+ }
1277
+ };
1278
+ DockviewComponent.prototype.doSetGroupAndPanelActive = function (group, skipFocus) {
1279
+ var _a, _b;
1280
+ var activePanel = this.activePanel;
1281
+ _super.prototype.doSetGroupActive.call(this, group, skipFocus);
1282
+ if (((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.activePanel) !== activePanel) {
1283
+ this._onDidActivePanelChange.fire((_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.activePanel);
1284
+ }
1285
+ };
1286
+ DockviewComponent.prototype.createGroup = function (options) {
1287
+ var _this = this;
1288
+ if (!options) {
1289
+ options = {};
1290
+ }
1291
+ var id = options === null || options === void 0 ? void 0 : options.id;
1292
+ if (id && this._groups.has(options.id)) {
1293
+ console.warn("Duplicate group id ".concat(options === null || options === void 0 ? void 0 : options.id, ". reassigning group id to avoid errors"));
1294
+ id = undefined;
1295
+ }
1296
+ if (!id) {
1297
+ id = this.nextGroupId.next();
1298
+ while (this._groups.has(id)) {
1299
+ id = this.nextGroupId.next();
1300
+ }
1301
+ }
1302
+ var view = new dockviewGroupPanel_1.DockviewGroupPanel(this, id, options);
1303
+ view.init({ params: {}, accessor: null }); // required to initialized .part and allow for correct disposal of group
1304
+ if (!this._groups.has(view.id)) {
1305
+ var disposable = new lifecycle_1.CompositeDisposable(view.model.onTabDragStart(function (event) {
1306
+ _this._onWillDragPanel.fire(event);
1307
+ }), view.model.onGroupDragStart(function (event) {
1308
+ _this._onWillDragGroup.fire(event);
1309
+ }), view.model.onMove(function (event) {
1310
+ var groupId = event.groupId, itemId = event.itemId, target = event.target, index = event.index;
1311
+ _this.moveGroupOrPanel(view, groupId, itemId, target, index);
1312
+ }), view.model.onDidDrop(function (event) {
1313
+ _this._onDidDrop.fire(__assign(__assign({}, event), { api: _this._api, group: view }));
1314
+ }), view.model.onDidAddPanel(function (event) {
1315
+ _this._onDidAddPanel.fire(event.panel);
1316
+ }), view.model.onDidRemovePanel(function (event) {
1317
+ _this._onDidRemovePanel.fire(event.panel);
1318
+ }), view.model.onDidActivePanelChange(function (event) {
1319
+ _this._onDidActivePanelChange.fire(event.panel);
1320
+ }));
1321
+ this._groups.set(view.id, { value: view, disposable: disposable });
1322
+ }
1323
+ // TODO: must be called after the above listeners have been setup,
1324
+ // not an ideal pattern
1325
+ view.initialize();
1326
+ return view;
1327
+ };
1328
+ DockviewComponent.prototype.createPanel = function (options, group) {
1329
+ var _a, _b, _c;
1330
+ var contentComponent = options.component;
1331
+ var tabComponent = (_a = options.tabComponent) !== null && _a !== void 0 ? _a : this.options.defaultTabComponent;
1332
+ var view = new dockviewPanelModel_1.DockviewPanelModel(this, options.id, contentComponent, tabComponent);
1333
+ var panel = new dockviewPanel_1.DockviewPanel(options.id, this, this._api, group, view, { renderer: options.renderer });
1334
+ panel.init({
1335
+ title: (_b = options.title) !== null && _b !== void 0 ? _b : options.id,
1336
+ params: (_c = options === null || options === void 0 ? void 0 : options.params) !== null && _c !== void 0 ? _c : {},
1337
+ });
1338
+ return panel;
1339
+ };
1340
+ DockviewComponent.prototype.createGroupAtLocation = function (location) {
1341
+ if (location === void 0) { location = [0]; }
1342
+ var group = this.createGroup();
1343
+ this.doAddGroup(group, location);
1344
+ return group;
1345
+ };
1346
+ DockviewComponent.prototype.findGroup = function (panel) {
1347
+ var _a;
1348
+ return (_a = Array.from(this._groups.values()).find(function (group) {
1349
+ return group.value.model.containsPanel(panel);
1350
+ })) === null || _a === void 0 ? void 0 : _a.value;
1351
+ };
1352
+ return DockviewComponent;
1353
+ }(baseComponentGridview_1.BaseGrid));
1354
+ exports.DockviewComponent = DockviewComponent;
1157
1355
  //# sourceMappingURL=dockviewComponent.js.map