dockview 1.5.1 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +52 -52
  3. package/dist/cjs/actionbar/actionsContainer.d.ts +7 -7
  4. package/dist/cjs/actionbar/actionsContainer.js +26 -26
  5. package/dist/cjs/api/component.api.d.ts +145 -144
  6. package/dist/cjs/api/component.api.js +578 -571
  7. package/dist/cjs/api/component.api.js.map +1 -1
  8. package/dist/cjs/api/{groupPanelApi.d.ts → dockviewPanelApi.d.ts} +34 -34
  9. package/dist/cjs/api/{groupPanelApi.js → dockviewPanelApi.js} +84 -86
  10. package/dist/cjs/api/dockviewPanelApi.js.map +1 -0
  11. package/dist/cjs/api/gridviewPanelApi.d.ts +37 -36
  12. package/dist/cjs/api/gridviewPanelApi.js +47 -47
  13. package/dist/cjs/api/gridviewPanelApi.js.map +1 -1
  14. package/dist/cjs/api/panelApi.d.ts +88 -81
  15. package/dist/cjs/api/panelApi.js +137 -121
  16. package/dist/cjs/api/panelApi.js.map +1 -1
  17. package/dist/cjs/api/paneviewPanelApi.d.ts +26 -26
  18. package/dist/cjs/api/paneviewPanelApi.js +57 -57
  19. package/dist/cjs/api/splitviewPanelApi.d.ts +32 -32
  20. package/dist/cjs/api/splitviewPanelApi.js +47 -47
  21. package/dist/cjs/array.d.ts +13 -13
  22. package/dist/cjs/array.js +77 -77
  23. package/dist/cjs/dnd/abstractDragHandler.d.ts +11 -11
  24. package/dist/cjs/dnd/abstractDragHandler.js +115 -115
  25. package/dist/cjs/dnd/abstractDragHandler.js.map +1 -1
  26. package/dist/cjs/dnd/dataTransfer.d.ts +31 -31
  27. package/dist/cjs/dnd/dataTransfer.js +100 -100
  28. package/dist/cjs/dnd/dataTransfer.js.map +1 -1
  29. package/dist/cjs/dnd/dnd.d.ts +27 -27
  30. package/dist/cjs/dnd/dnd.js +59 -64
  31. package/dist/cjs/dnd/dnd.js.map +1 -1
  32. package/dist/cjs/dnd/droptarget.d.ts +42 -37
  33. package/dist/cjs/dnd/droptarget.js +279 -201
  34. package/dist/cjs/dnd/droptarget.js.map +1 -1
  35. package/dist/cjs/dnd/ghost.d.ts +1 -0
  36. package/dist/cjs/dnd/ghost.js +15 -0
  37. package/dist/cjs/dnd/ghost.js.map +1 -0
  38. package/dist/cjs/dnd/groupDragHandler.d.ts +11 -0
  39. package/dist/cjs/dnd/groupDragHandler.js +62 -0
  40. package/dist/cjs/dnd/groupDragHandler.js.map +1 -0
  41. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +27 -27
  42. package/dist/cjs/dockview/components/tab/defaultTab.js +121 -121
  43. package/dist/cjs/dockview/components/watermark/watermark.d.ts +20 -20
  44. package/dist/cjs/dockview/components/watermark/watermark.js +101 -101
  45. package/dist/cjs/dockview/defaultGroupPanelView.d.ts +29 -29
  46. package/dist/cjs/dockview/defaultGroupPanelView.js +68 -68
  47. package/dist/cjs/dockview/deserializer.d.ts +6 -5
  48. package/dist/cjs/dockview/deserializer.js +2 -2
  49. package/dist/cjs/dockview/dockviewComponent.d.ts +133 -125
  50. package/dist/cjs/dockview/dockviewComponent.js +795 -614
  51. package/dist/cjs/dockview/dockviewComponent.js.map +1 -1
  52. package/dist/{esm/dockview/dockviewGroupPanel.d.ts → cjs/dockview/dockviewPanel.d.ts} +42 -31
  53. package/dist/cjs/dockview/{dockviewGroupPanel.js → dockviewPanel.js} +161 -157
  54. package/dist/cjs/dockview/dockviewPanel.js.map +1 -0
  55. package/dist/cjs/dockview/options.d.ts +110 -88
  56. package/dist/cjs/dockview/options.js +31 -2
  57. package/dist/cjs/dockview/options.js.map +1 -1
  58. package/dist/cjs/dockview/validation.d.ts +2 -0
  59. package/dist/cjs/dockview/validation.js +135 -0
  60. package/dist/cjs/dockview/validation.js.map +1 -0
  61. package/dist/cjs/dom.d.ts +14 -14
  62. package/dist/cjs/dom.js +182 -182
  63. package/dist/cjs/events.d.ts +30 -30
  64. package/dist/cjs/events.js +129 -129
  65. package/dist/cjs/gridview/baseComponentGridview.d.ts +87 -87
  66. package/dist/cjs/gridview/baseComponentGridview.js +278 -279
  67. package/dist/cjs/gridview/baseComponentGridview.js.map +1 -1
  68. package/dist/cjs/gridview/basePanelView.d.ts +43 -43
  69. package/dist/cjs/gridview/basePanelView.js +123 -123
  70. package/dist/cjs/gridview/branchNode.d.ts +49 -46
  71. package/dist/cjs/gridview/branchNode.js +342 -342
  72. package/dist/cjs/gridview/branchNode.js.map +1 -1
  73. package/dist/cjs/gridview/gridview.d.ts +132 -123
  74. package/dist/cjs/gridview/gridview.js +510 -479
  75. package/dist/cjs/gridview/gridview.js.map +1 -1
  76. package/dist/cjs/gridview/gridviewComponent.d.ts +85 -85
  77. package/dist/cjs/gridview/gridviewComponent.js +324 -325
  78. package/dist/cjs/gridview/gridviewComponent.js.map +1 -1
  79. package/dist/cjs/gridview/gridviewPanel.d.ts +60 -60
  80. package/dist/cjs/gridview/gridviewPanel.js +201 -202
  81. package/dist/cjs/gridview/gridviewPanel.js.map +1 -1
  82. package/dist/cjs/gridview/leafNode.d.ts +34 -31
  83. package/dist/cjs/gridview/leafNode.js +170 -165
  84. package/dist/cjs/gridview/leafNode.js.map +1 -1
  85. package/dist/cjs/gridview/options.d.ts +18 -18
  86. package/dist/cjs/gridview/options.js +2 -2
  87. package/dist/cjs/gridview/types.d.ts +3 -3
  88. package/dist/cjs/gridview/types.js +2 -2
  89. package/dist/cjs/groupview/dnd.d.ts +6 -5
  90. package/dist/cjs/groupview/dnd.js +10 -9
  91. package/dist/cjs/groupview/dnd.js.map +1 -1
  92. package/dist/cjs/groupview/groupview.d.ts +177 -177
  93. package/dist/cjs/groupview/groupview.js +607 -589
  94. package/dist/cjs/groupview/groupview.js.map +1 -1
  95. package/dist/cjs/groupview/groupviewPanel.d.ts +35 -35
  96. package/dist/cjs/groupview/groupviewPanel.js +128 -128
  97. package/dist/cjs/groupview/panel/content.d.ts +30 -30
  98. package/dist/cjs/groupview/panel/content.js +100 -100
  99. package/dist/cjs/groupview/tab.d.ts +31 -41
  100. package/dist/cjs/groupview/tab.js +124 -120
  101. package/dist/cjs/groupview/tab.js.map +1 -1
  102. package/dist/cjs/groupview/titlebar/tabsContainer.d.ts +65 -68
  103. package/dist/cjs/groupview/titlebar/tabsContainer.js +251 -258
  104. package/dist/cjs/groupview/titlebar/tabsContainer.js.map +1 -1
  105. package/dist/cjs/groupview/titlebar/voidContainer.d.ts +15 -0
  106. package/dist/cjs/groupview/titlebar/voidContainer.js +74 -0
  107. package/dist/cjs/groupview/titlebar/voidContainer.js.map +1 -0
  108. package/dist/cjs/groupview/types.d.ts +68 -52
  109. package/dist/cjs/groupview/types.js +2 -2
  110. package/dist/cjs/hostedContainer.d.ts +23 -23
  111. package/dist/cjs/hostedContainer.js +73 -73
  112. package/dist/cjs/index.d.ts +30 -30
  113. package/dist/cjs/index.js +47 -46
  114. package/dist/cjs/index.js.map +1 -1
  115. package/dist/cjs/lifecycle.d.ts +22 -22
  116. package/dist/cjs/lifecycle.js +88 -88
  117. package/dist/cjs/math.d.ts +4 -4
  118. package/dist/cjs/math.js +15 -15
  119. package/dist/cjs/panel/componentFactory.d.ts +8 -8
  120. package/dist/cjs/panel/componentFactory.js +30 -30
  121. package/dist/cjs/panel/types.d.ts +33 -33
  122. package/dist/cjs/panel/types.js +2 -2
  123. package/dist/cjs/paneview/defaultPaneviewHeader.d.ts +21 -21
  124. package/dist/cjs/paneview/defaultPaneviewHeader.js +90 -90
  125. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +19 -19
  126. package/dist/cjs/paneview/draggablePaneviewPanel.js +130 -129
  127. package/dist/cjs/paneview/draggablePaneviewPanel.js.map +1 -1
  128. package/dist/cjs/paneview/options.d.ts +27 -27
  129. package/dist/cjs/paneview/options.js +2 -2
  130. package/dist/cjs/paneview/paneview.d.ts +40 -40
  131. package/dist/cjs/paneview/paneview.js +201 -201
  132. package/dist/cjs/paneview/paneviewComponent.d.ts +129 -129
  133. package/dist/cjs/paneview/paneviewComponent.js +394 -394
  134. package/dist/cjs/paneview/paneviewComponent.js.map +1 -1
  135. package/dist/cjs/paneview/paneviewPanel.d.ts +92 -89
  136. package/dist/cjs/paneview/paneviewPanel.js +275 -274
  137. package/dist/cjs/paneview/paneviewPanel.js.map +1 -1
  138. package/dist/cjs/react/deserializer.d.ts +10 -9
  139. package/dist/cjs/react/deserializer.js +43 -43
  140. package/dist/cjs/react/deserializer.js.map +1 -1
  141. package/dist/cjs/react/dockview/defaultTab.d.ts +4 -4
  142. package/dist/cjs/react/dockview/defaultTab.js +72 -72
  143. package/dist/cjs/react/dockview/dockview.d.ts +35 -34
  144. package/dist/cjs/react/dockview/dockview.js +213 -212
  145. package/dist/cjs/react/dockview/dockview.js.map +1 -1
  146. package/dist/cjs/react/dockview/groupControlsRenderer.d.ts +43 -43
  147. package/dist/cjs/react/dockview/groupControlsRenderer.js +86 -86
  148. package/dist/cjs/react/dockview/reactContentPart.d.ts +30 -30
  149. package/dist/cjs/react/dockview/reactContentPart.js +58 -58
  150. package/dist/cjs/react/dockview/reactHeaderPart.d.ts +26 -26
  151. package/dist/cjs/react/dockview/reactHeaderPart.js +55 -55
  152. package/dist/cjs/react/dockview/reactWatermarkPart.d.ts +29 -29
  153. package/dist/cjs/react/dockview/reactWatermarkPart.js +65 -65
  154. package/dist/cjs/react/dockview/v2/reactContentRenderer.d.ts +29 -29
  155. package/dist/cjs/react/dockview/v2/reactContentRenderer.js +87 -87
  156. package/dist/cjs/react/dockview/v2/reactGroupPanelView.d.ts +7 -7
  157. package/dist/cjs/react/dockview/v2/reactGroupPanelView.js +34 -34
  158. package/dist/cjs/react/dockview/v2/webviewContentRenderer.d.ts +18 -18
  159. package/dist/cjs/react/dockview/v2/webviewContentRenderer.js +45 -45
  160. package/dist/cjs/react/gridview/gridview.d.ts +24 -24
  161. package/dist/cjs/react/gridview/gridview.js +112 -112
  162. package/dist/cjs/react/gridview/view.d.ts +11 -11
  163. package/dist/cjs/react/gridview/view.js +41 -40
  164. package/dist/cjs/react/gridview/view.js.map +1 -1
  165. package/dist/cjs/react/index.d.ts +9 -9
  166. package/dist/cjs/react/index.js +23 -23
  167. package/dist/cjs/react/paneview/paneview.d.ts +30 -30
  168. package/dist/cjs/react/paneview/paneview.js +155 -155
  169. package/dist/cjs/react/paneview/view.d.ts +20 -20
  170. package/dist/cjs/react/paneview/view.js +44 -44
  171. package/dist/cjs/react/react.d.ts +36 -36
  172. package/dist/cjs/react/react.js +194 -194
  173. package/dist/cjs/react/splitview/splitview.d.ts +24 -24
  174. package/dist/cjs/react/splitview/splitview.js +108 -108
  175. package/dist/cjs/react/splitview/view.d.ts +10 -10
  176. package/dist/cjs/react/splitview/view.js +40 -40
  177. package/dist/cjs/react/svg.d.ts +3 -3
  178. package/dist/cjs/react/svg.js +35 -35
  179. package/dist/cjs/react/types.d.ts +7 -7
  180. package/dist/cjs/react/types.js +2 -2
  181. package/dist/cjs/splitview/core/options.d.ts +26 -26
  182. package/dist/cjs/splitview/core/options.js +2 -2
  183. package/dist/cjs/splitview/core/splitview.d.ts +127 -124
  184. package/dist/cjs/splitview/core/splitview.js +908 -908
  185. package/dist/cjs/splitview/core/splitview.js.map +1 -1
  186. package/dist/cjs/splitview/core/viewItem.d.ts +25 -25
  187. package/dist/cjs/splitview/core/viewItem.js +124 -124
  188. package/dist/cjs/splitview/splitviewComponent.d.ts +101 -101
  189. package/dist/cjs/splitview/splitviewComponent.js +373 -373
  190. package/dist/cjs/splitview/splitviewComponent.js.map +1 -1
  191. package/dist/cjs/splitview/splitviewPanel.d.ts +45 -42
  192. package/dist/cjs/splitview/splitviewPanel.js +179 -178
  193. package/dist/cjs/splitview/splitviewPanel.js.map +1 -1
  194. package/dist/cjs/svg.d.ts +3 -3
  195. package/dist/cjs/svg.js +43 -43
  196. package/dist/cjs/types.d.ts +8 -7
  197. package/dist/cjs/types.js +7 -2
  198. package/dist/cjs/types.js.map +1 -1
  199. package/dist/dockview.amd.js +7168 -6739
  200. package/dist/dockview.amd.min.js +2 -2
  201. package/dist/dockview.amd.min.noStyle.js +2 -2
  202. package/dist/dockview.amd.noStyle.js +7176 -6747
  203. package/dist/dockview.cjs.js +7167 -6738
  204. package/dist/dockview.esm.js +7152 -6726
  205. package/dist/dockview.esm.min.js +2 -2
  206. package/dist/dockview.js +7168 -6739
  207. package/dist/dockview.min.js +2 -2
  208. package/dist/dockview.min.noStyle.js +2 -2
  209. package/dist/dockview.noStyle.js +7176 -6747
  210. package/dist/esm/actionbar/actionsContainer.d.ts +7 -7
  211. package/dist/esm/actionbar/actionsContainer.js +17 -17
  212. package/dist/esm/api/component.api.d.ts +145 -144
  213. package/dist/esm/api/component.api.js +329 -326
  214. package/dist/esm/api/{groupPanelApi.d.ts → dockviewPanelApi.d.ts} +34 -34
  215. package/dist/esm/api/{groupPanelApi.js → dockviewPanelApi.js} +48 -50
  216. package/dist/esm/api/gridviewPanelApi.d.ts +37 -36
  217. package/dist/esm/api/gridviewPanelApi.js +25 -25
  218. package/dist/esm/api/panelApi.d.ts +88 -81
  219. package/dist/esm/api/panelApi.js +95 -79
  220. package/dist/esm/api/paneviewPanelApi.d.ts +26 -26
  221. package/dist/esm/api/paneviewPanelApi.js +27 -27
  222. package/dist/esm/api/splitviewPanelApi.d.ts +32 -32
  223. package/dist/esm/api/splitviewPanelApi.js +25 -25
  224. package/dist/esm/array.d.ts +13 -13
  225. package/dist/esm/array.js +67 -67
  226. package/dist/esm/dnd/abstractDragHandler.d.ts +11 -11
  227. package/dist/esm/dnd/abstractDragHandler.js +37 -37
  228. package/dist/esm/dnd/dataTransfer.d.ts +31 -31
  229. package/dist/esm/dnd/dataTransfer.js +69 -69
  230. package/dist/esm/dnd/dnd.d.ts +27 -27
  231. package/dist/esm/dnd/dnd.js +36 -41
  232. package/dist/esm/dnd/droptarget.d.ts +42 -37
  233. package/dist/esm/dnd/droptarget.js +249 -167
  234. package/dist/esm/dnd/ghost.d.ts +1 -0
  235. package/dist/esm/dnd/ghost.js +10 -0
  236. package/dist/esm/dnd/groupDragHandler.d.ts +11 -0
  237. package/dist/esm/dnd/groupDragHandler.js +38 -0
  238. package/dist/esm/dockview/components/tab/defaultTab.d.ts +27 -27
  239. package/dist/esm/dockview/components/tab/defaultTab.js +79 -79
  240. package/dist/esm/dockview/components/watermark/watermark.d.ts +20 -20
  241. package/dist/esm/dockview/components/watermark/watermark.js +70 -70
  242. package/dist/esm/dockview/defaultGroupPanelView.d.ts +29 -29
  243. package/dist/esm/dockview/defaultGroupPanelView.js +44 -44
  244. package/dist/esm/dockview/deserializer.d.ts +6 -5
  245. package/dist/esm/dockview/deserializer.js +1 -1
  246. package/dist/esm/dockview/dockviewComponent.d.ts +133 -125
  247. package/dist/esm/dockview/dockviewComponent.js +632 -468
  248. package/dist/{cjs/dockview/dockviewGroupPanel.d.ts → esm/dockview/dockviewPanel.d.ts} +42 -31
  249. package/dist/esm/dockview/{dockviewGroupPanel.js → dockviewPanel.js} +111 -107
  250. package/dist/esm/dockview/options.d.ts +110 -88
  251. package/dist/esm/dockview/options.js +24 -1
  252. package/dist/esm/dockview/validation.d.ts +2 -0
  253. package/dist/esm/dockview/validation.js +86 -0
  254. package/dist/esm/dom.d.ts +14 -14
  255. package/dist/esm/dom.js +113 -113
  256. package/dist/esm/events.d.ts +30 -30
  257. package/dist/esm/events.js +88 -88
  258. package/dist/esm/gridview/baseComponentGridview.d.ts +87 -87
  259. package/dist/esm/gridview/baseComponentGridview.js +188 -189
  260. package/dist/esm/gridview/basePanelView.d.ts +43 -43
  261. package/dist/esm/gridview/basePanelView.js +74 -74
  262. package/dist/esm/gridview/branchNode.d.ts +49 -46
  263. package/dist/esm/gridview/branchNode.js +218 -218
  264. package/dist/esm/gridview/gridview.d.ts +132 -123
  265. package/dist/esm/gridview/gridview.js +423 -397
  266. package/dist/esm/gridview/gridviewComponent.d.ts +85 -85
  267. package/dist/esm/gridview/gridviewComponent.js +237 -238
  268. package/dist/esm/gridview/gridviewPanel.d.ts +60 -60
  269. package/dist/esm/gridview/gridviewPanel.js +138 -138
  270. package/dist/esm/gridview/leafNode.d.ts +34 -31
  271. package/dist/esm/gridview/leafNode.js +103 -98
  272. package/dist/esm/gridview/options.d.ts +18 -18
  273. package/dist/esm/gridview/options.js +1 -1
  274. package/dist/esm/gridview/types.d.ts +3 -3
  275. package/dist/esm/gridview/types.js +1 -1
  276. package/dist/esm/groupview/dnd.d.ts +6 -5
  277. package/dist/esm/groupview/dnd.js +7 -6
  278. package/dist/esm/groupview/groupview.d.ts +177 -177
  279. package/dist/esm/groupview/groupview.js +462 -444
  280. package/dist/esm/groupview/groupviewPanel.d.ts +35 -35
  281. package/dist/esm/groupview/groupviewPanel.js +61 -61
  282. package/dist/esm/groupview/panel/content.d.ts +30 -30
  283. package/dist/esm/groupview/panel/content.js +73 -73
  284. package/dist/esm/groupview/tab.d.ts +31 -41
  285. package/dist/esm/groupview/tab.js +94 -90
  286. package/dist/esm/groupview/titlebar/tabsContainer.d.ts +65 -68
  287. package/dist/esm/groupview/titlebar/tabsContainer.js +183 -190
  288. package/dist/esm/groupview/titlebar/voidContainer.d.ts +15 -0
  289. package/dist/esm/groupview/titlebar/voidContainer.js +47 -0
  290. package/dist/esm/groupview/types.d.ts +68 -52
  291. package/dist/esm/groupview/types.js +1 -1
  292. package/dist/esm/hostedContainer.d.ts +23 -23
  293. package/dist/esm/hostedContainer.js +63 -63
  294. package/dist/esm/index.d.ts +30 -30
  295. package/dist/esm/index.js +23 -23
  296. package/dist/esm/lifecycle.d.ts +22 -22
  297. package/dist/esm/lifecycle.js +39 -39
  298. package/dist/esm/math.d.ts +4 -4
  299. package/dist/esm/math.js +10 -10
  300. package/dist/esm/panel/componentFactory.d.ts +8 -8
  301. package/dist/esm/panel/componentFactory.js +24 -24
  302. package/dist/esm/panel/types.d.ts +33 -33
  303. package/dist/esm/panel/types.js +1 -1
  304. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +21 -21
  305. package/dist/esm/paneview/defaultPaneviewHeader.js +63 -63
  306. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +19 -19
  307. package/dist/esm/paneview/draggablePaneviewPanel.js +91 -90
  308. package/dist/esm/paneview/options.d.ts +27 -27
  309. package/dist/esm/paneview/options.js +1 -1
  310. package/dist/esm/paneview/paneview.d.ts +40 -40
  311. package/dist/esm/paneview/paneview.js +145 -145
  312. package/dist/esm/paneview/paneviewComponent.d.ts +129 -129
  313. package/dist/esm/paneview/paneviewComponent.js +270 -270
  314. package/dist/esm/paneview/paneviewPanel.d.ts +92 -89
  315. package/dist/esm/paneview/paneviewPanel.js +192 -191
  316. package/dist/esm/react/deserializer.d.ts +10 -9
  317. package/dist/esm/react/deserializer.js +38 -38
  318. package/dist/esm/react/dockview/defaultTab.d.ts +4 -4
  319. package/dist/esm/react/dockview/defaultTab.js +34 -34
  320. package/dist/esm/react/dockview/dockview.d.ts +35 -34
  321. package/dist/esm/react/dockview/dockview.js +158 -157
  322. package/dist/esm/react/dockview/groupControlsRenderer.d.ts +43 -43
  323. package/dist/esm/react/dockview/groupControlsRenderer.js +68 -68
  324. package/dist/esm/react/dockview/reactContentPart.d.ts +30 -30
  325. package/dist/esm/react/dockview/reactContentPart.js +49 -49
  326. package/dist/esm/react/dockview/reactHeaderPart.d.ts +26 -26
  327. package/dist/esm/react/dockview/reactHeaderPart.js +46 -46
  328. package/dist/esm/react/dockview/reactWatermarkPart.d.ts +29 -29
  329. package/dist/esm/react/dockview/reactWatermarkPart.js +55 -55
  330. package/dist/esm/react/dockview/v2/reactContentRenderer.d.ts +29 -29
  331. package/dist/esm/react/dockview/v2/reactContentRenderer.js +69 -69
  332. package/dist/esm/react/dockview/v2/reactGroupPanelView.d.ts +7 -7
  333. package/dist/esm/react/dockview/v2/reactGroupPanelView.js +12 -12
  334. package/dist/esm/react/dockview/v2/webviewContentRenderer.d.ts +18 -18
  335. package/dist/esm/react/dockview/v2/webviewContentRenderer.js +36 -36
  336. package/dist/esm/react/gridview/gridview.d.ts +24 -24
  337. package/dist/esm/react/gridview/gridview.js +70 -70
  338. package/dist/esm/react/gridview/view.d.ts +11 -11
  339. package/dist/esm/react/gridview/view.js +19 -18
  340. package/dist/esm/react/index.d.ts +9 -9
  341. package/dist/esm/react/index.js +7 -7
  342. package/dist/esm/react/paneview/paneview.d.ts +30 -30
  343. package/dist/esm/react/paneview/paneview.js +100 -100
  344. package/dist/esm/react/paneview/view.d.ts +20 -20
  345. package/dist/esm/react/paneview/view.js +35 -35
  346. package/dist/esm/react/react.d.ts +36 -36
  347. package/dist/esm/react/react.js +125 -125
  348. package/dist/esm/react/splitview/splitview.d.ts +24 -24
  349. package/dist/esm/react/splitview/splitview.js +66 -66
  350. package/dist/esm/react/splitview/view.d.ts +10 -10
  351. package/dist/esm/react/splitview/view.js +18 -18
  352. package/dist/esm/react/svg.d.ts +3 -3
  353. package/dist/esm/react/svg.js +7 -7
  354. package/dist/esm/react/types.d.ts +7 -7
  355. package/dist/esm/react/types.js +1 -1
  356. package/dist/esm/splitview/core/options.d.ts +26 -26
  357. package/dist/esm/splitview/core/options.js +1 -1
  358. package/dist/esm/splitview/core/splitview.d.ts +127 -124
  359. package/dist/esm/splitview/core/splitview.js +689 -689
  360. package/dist/esm/splitview/core/viewItem.d.ts +25 -25
  361. package/dist/esm/splitview/core/viewItem.js +79 -79
  362. package/dist/esm/splitview/splitviewComponent.d.ts +101 -101
  363. package/dist/esm/splitview/splitviewComponent.js +249 -249
  364. package/dist/esm/splitview/splitviewPanel.d.ts +45 -42
  365. package/dist/esm/splitview/splitviewPanel.js +108 -107
  366. package/dist/esm/svg.d.ts +3 -3
  367. package/dist/esm/svg.js +31 -31
  368. package/dist/esm/types.d.ts +8 -7
  369. package/dist/esm/types.js +3 -1
  370. package/dist/styles/dockview.css +23 -26
  371. package/package.json +12 -16
  372. package/dist/cjs/api/groupPanelApi.js.map +0 -1
  373. package/dist/cjs/dockview/dockviewGroupPanel.js.map +0 -1
  374. package/dist/cjs/groupview/groupPanel.d.ts +0 -32
  375. package/dist/cjs/groupview/groupPanel.js +0 -3
  376. package/dist/cjs/groupview/groupPanel.js.map +0 -1
  377. package/dist/esm/groupview/groupPanel.d.ts +0 -32
  378. package/dist/esm/groupview/groupPanel.js +0 -1
@@ -1,615 +1,796 @@
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 dockviewGroupPanel_1 = require("./dockviewGroupPanel");
70
- var lifecycle_1 = require("../lifecycle");
71
- var events_1 = require("../events");
72
- var watermark_1 = require("./components/watermark/watermark");
73
- var math_1 = require("../math");
74
- var componentFactory_1 = require("../panel/componentFactory");
75
- var baseComponentGridview_1 = require("../gridview/baseComponentGridview");
76
- var component_api_1 = require("../api/component.api");
77
- var splitview_1 = require("../splitview/core/splitview");
78
- var defaultTab_1 = require("./components/tab/defaultTab");
79
- var groupviewPanel_1 = require("../groupview/groupviewPanel");
80
- var defaultGroupPanelView_1 = require("./defaultGroupPanelView");
81
- var nextGroupId = (0, math_1.sequentialNumberGenerator)();
82
- var DockviewComponent = /** @class */ (function (_super) {
83
- __extends(DockviewComponent, _super);
84
- function DockviewComponent(element, options) {
85
- var _this = _super.call(this, element, {
86
- proportionalLayout: true,
87
- orientation: options.orientation || splitview_1.Orientation.HORIZONTAL,
88
- styles: options.styles,
89
- }) || this;
90
- _this._onDidDrop = new events_1.Emitter();
91
- _this.onDidDrop = _this._onDidDrop.event;
92
- _this._onDidRemovePanel = new events_1.Emitter();
93
- _this.onDidRemovePanel = _this._onDidRemovePanel.event;
94
- _this._onDidAddPanel = new events_1.Emitter();
95
- _this.onDidAddPanel = _this._onDidAddPanel.event;
96
- _this._onDidLayoutFromJSON = new events_1.Emitter();
97
- _this.onDidLayoutFromJSON = _this._onDidLayoutFromJSON.event;
98
- _this._onDidActivePanelChange = new events_1.Emitter();
99
- _this.onDidActivePanelChange = _this._onDidActivePanelChange.event;
100
- _this.addDisposables(_this._onDidDrop, events_1.Event.any(_this.onDidAddPanel, _this.onDidRemovePanel, _this.onDidActivePanelChange)(function () {
101
- _this._bufferOnDidLayoutChange.fire();
102
- }));
103
- _this._options = options;
104
- if (!_this.options.components) {
105
- _this.options.components = {};
106
- }
107
- if (!_this.options.frameworkComponents) {
108
- _this.options.frameworkComponents = {};
109
- }
110
- if (!_this.options.frameworkTabComponents) {
111
- _this.options.frameworkTabComponents = {};
112
- }
113
- if (!_this.options.tabComponents) {
114
- _this.options.tabComponents = {};
115
- }
116
- if (!_this.options.watermarkComponent &&
117
- !_this.options.watermarkFrameworkComponent) {
118
- _this.options.watermarkComponent = watermark_1.Watermark;
119
- }
120
- _this._api = new component_api_1.DockviewApi(_this);
121
- return _this;
122
- }
123
- Object.defineProperty(DockviewComponent.prototype, "totalPanels", {
124
- get: function () {
125
- return this.panels.length;
126
- },
127
- enumerable: false,
128
- configurable: true
129
- });
130
- Object.defineProperty(DockviewComponent.prototype, "panels", {
131
- get: function () {
132
- return this.groups.flatMap(function (group) { return group.panels; });
133
- },
134
- enumerable: false,
135
- configurable: true
136
- });
137
- Object.defineProperty(DockviewComponent.prototype, "deserializer", {
138
- get: function () {
139
- return this._deserializer;
140
- },
141
- set: function (value) {
142
- this._deserializer = value;
143
- },
144
- enumerable: false,
145
- configurable: true
146
- });
147
- Object.defineProperty(DockviewComponent.prototype, "options", {
148
- get: function () {
149
- return this._options;
150
- },
151
- enumerable: false,
152
- configurable: true
153
- });
154
- Object.defineProperty(DockviewComponent.prototype, "activePanel", {
155
- get: function () {
156
- var activeGroup = this.activeGroup;
157
- if (!activeGroup) {
158
- return undefined;
159
- }
160
- return activeGroup.activePanel;
161
- },
162
- enumerable: false,
163
- configurable: true
164
- });
165
- Object.defineProperty(DockviewComponent.prototype, "tabHeight", {
166
- get: function () {
167
- return this.options.tabHeight;
168
- },
169
- set: function (height) {
170
- this.options.tabHeight = height;
171
- this._groups.forEach(function (value) {
172
- value.value.model.header.height = height;
173
- });
174
- },
175
- enumerable: false,
176
- configurable: true
177
- });
178
- DockviewComponent.prototype.updateOptions = function (options) {
179
- var hasOrientationChanged = typeof options.orientation === 'string' &&
180
- this.gridview.orientation !== options.orientation;
181
- this._options = __assign(__assign({}, this.options), options);
182
- if (hasOrientationChanged) {
183
- this.gridview.orientation = options.orientation;
184
- }
185
- this.layout(this.gridview.width, this.gridview.height, true);
186
- };
187
- DockviewComponent.prototype.focus = function () {
188
- var _a;
189
- (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();
190
- };
191
- DockviewComponent.prototype.getGroupPanel = function (id) {
192
- return this.panels.find(function (panel) { return panel.id === id; });
193
- };
194
- DockviewComponent.prototype.setActivePanel = function (panel) {
195
- this.doSetGroupActive(panel.group);
196
- panel.group.model.openPanel(panel);
197
- };
198
- DockviewComponent.prototype.moveToNext = function (options) {
199
- var _a;
200
- if (options === void 0) { options = {}; }
201
- if (!options.group) {
202
- if (!this.activeGroup) {
203
- return;
204
- }
205
- options.group = this.activeGroup;
206
- }
207
- if (options.includePanel && options.group) {
208
- if (options.group.activePanel !==
209
- options.group.panels[options.group.panels.length - 1]) {
210
- options.group.model.moveToNext({ suppressRoll: true });
211
- return;
212
- }
213
- }
214
- var location = (0, gridview_1.getGridLocation)(options.group.element);
215
- var next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;
216
- this.doSetGroupActive(next);
217
- };
218
- DockviewComponent.prototype.moveToPrevious = function (options) {
219
- var _a;
220
- if (options === void 0) { options = {}; }
221
- if (!options.group) {
222
- if (!this.activeGroup) {
223
- return;
224
- }
225
- options.group = this.activeGroup;
226
- }
227
- if (options.includePanel && options.group) {
228
- if (options.group.activePanel !==
229
- options.group.panels[0]) {
230
- options.group.model.moveToPrevious({ suppressRoll: true });
231
- return;
232
- }
233
- }
234
- var location = (0, gridview_1.getGridLocation)(options.group.element);
235
- var next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;
236
- if (next) {
237
- this.doSetGroupActive(next);
238
- }
239
- };
240
- /**
241
- * Serialize the current state of the layout
242
- *
243
- * @returns A JSON respresentation of the layout
244
- */
245
- DockviewComponent.prototype.toJSON = function () {
246
- var _a;
247
- var data = this.gridview.serialize();
248
- var panels = this.panels.reduce(function (collection, panel) {
249
- collection[panel.id] = panel.toJSON();
250
- return collection;
251
- }, {});
252
- return {
253
- grid: data,
254
- panels: panels,
255
- activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,
256
- options: { tabHeight: this.tabHeight },
257
- };
258
- };
259
- DockviewComponent.prototype.fromJSON = function (data) {
260
- var _this = this;
261
- this.clear();
262
- if (!this.deserializer) {
263
- throw new Error('invalid deserializer');
264
- }
265
- var grid = data.grid, panels = data.panels, options = data.options, activeGroup = data.activeGroup;
266
- if (typeof (options === null || options === void 0 ? void 0 : options.tabHeight) === 'number') {
267
- this.tabHeight = options.tabHeight;
268
- }
269
- if (!this.deserializer) {
270
- throw new Error('no deserializer provided');
271
- }
272
- this.gridview.deserialize(grid, {
273
- fromJSON: function (node) {
274
- var e_1, _a;
275
- var _b = node.data, id = _b.id, locked = _b.locked, hideHeader = _b.hideHeader, views = _b.views, activeView = _b.activeView;
276
- var group = _this.createGroup({
277
- id: id,
278
- locked: !!locked,
279
- hideHeader: !!hideHeader,
280
- });
281
- _this._onDidAddGroup.fire(group);
282
- try {
283
- for (var views_1 = __values(views), views_1_1 = views_1.next(); !views_1_1.done; views_1_1 = views_1.next()) {
284
- var child = views_1_1.value;
285
- var panel = _this.deserializer.fromJSON(panels[child], group);
286
- var isActive = typeof activeView === 'string' && activeView === panel.id;
287
- group.model.openPanel(panel, {
288
- skipSetPanelActive: !isActive,
289
- skipSetGroupActive: true
290
- });
291
- }
292
- }
293
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
294
- finally {
295
- try {
296
- if (views_1_1 && !views_1_1.done && (_a = views_1.return)) _a.call(views_1);
297
- }
298
- finally { if (e_1) throw e_1.error; }
299
- }
300
- if (!group.activePanel && group.panels.length > 0) {
301
- group.model.openPanel(group.panels[group.panels.length - 1], {
302
- skipSetGroupActive: true
303
- });
304
- }
305
- return group;
306
- }
307
- });
308
- if (typeof activeGroup === 'string') {
309
- var panel = this.getPanel(activeGroup);
310
- if (panel) {
311
- this.doSetGroupActive(panel);
312
- }
313
- }
314
- this.gridview.layout(this.width, this.height);
315
- this._onDidLayoutFromJSON.fire();
316
- };
317
- DockviewComponent.prototype.clear = function () {
318
- var e_2, _a;
319
- var groups = Array.from(this._groups.values()).map(function (_) { return _.value; });
320
- var hasActiveGroup = !!this.activeGroup;
321
- var hasActivePanel = !!this.activePanel;
322
- try {
323
- for (var groups_1 = __values(groups), groups_1_1 = groups_1.next(); !groups_1_1.done; groups_1_1 = groups_1.next()) {
324
- var group = groups_1_1.value;
325
- // remove the group will automatically remove the panels
326
- this.removeGroup(group, true);
327
- }
328
- }
329
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
330
- finally {
331
- try {
332
- if (groups_1_1 && !groups_1_1.done && (_a = groups_1.return)) _a.call(groups_1);
333
- }
334
- finally { if (e_2) throw e_2.error; }
335
- }
336
- if (hasActiveGroup) {
337
- this.doSetGroupActive(undefined);
338
- }
339
- if (hasActivePanel) {
340
- this._onDidActivePanelChange.fire(undefined);
341
- }
342
- this.gridview.clear();
343
- };
344
- DockviewComponent.prototype.closeAllGroups = function () {
345
- var e_3, _a;
346
- try {
347
- for (var _b = __values(this._groups.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
348
- var entry = _c.value;
349
- var _d = __read(entry, 2), _1 = _d[0], group = _d[1];
350
- group.value.model.closeAllPanels();
351
- }
352
- }
353
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
354
- finally {
355
- try {
356
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
357
- }
358
- finally { if (e_3) throw e_3.error; }
359
- }
360
- };
361
- DockviewComponent.prototype.addPanel = function (options) {
362
- var _a, _b;
363
- if (this.panels.find(function (_) { return _.id === options.id; })) {
364
- throw new Error("panel with id ".concat(options.id, " already exists"));
365
- }
366
- var referenceGroup;
367
- if ((_a = options.position) === null || _a === void 0 ? void 0 : _a.referencePanel) {
368
- var referencePanel = this.getGroupPanel(options.position.referencePanel);
369
- if (!referencePanel) {
370
- throw new Error("referencePanel ".concat(options.position.referencePanel, " does not exist"));
371
- }
372
- referenceGroup = this.findGroup(referencePanel);
373
- }
374
- else {
375
- referenceGroup = this.activeGroup;
376
- }
377
- var panel;
378
- if (referenceGroup) {
379
- var target = (0, baseComponentGridview_1.toTarget)(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');
380
- if (target === droptarget_1.Position.Center) {
381
- panel = this.createPanel(options, referenceGroup);
382
- referenceGroup.model.openPanel(panel);
383
- }
384
- else {
385
- var location_1 = (0, gridview_1.getGridLocation)(referenceGroup.element);
386
- var relativeLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, location_1, target);
387
- var group = this.createGroupAtLocation(relativeLocation);
388
- panel = this.createPanel(options, group);
389
- group.model.openPanel(panel);
390
- }
391
- }
392
- else {
393
- var group = this.createGroupAtLocation();
394
- panel = this.createPanel(options, group);
395
- group.model.openPanel(panel);
396
- }
397
- return panel;
398
- };
399
- DockviewComponent.prototype.removePanel = function (panel, options) {
400
- if (options === void 0) { options = {
401
- removeEmptyGroup: true,
402
- skipDispose: false,
403
- }; }
404
- var group = panel.group;
405
- if (!group) {
406
- throw new Error("cannot remove panel ".concat(panel.id, ". it's missing a group."));
407
- }
408
- group.model.removePanel(panel);
409
- panel.dispose();
410
- var retainGroupForWatermark = this.size === 1;
411
- if (!retainGroupForWatermark &&
412
- group.size === 0 &&
413
- options.removeEmptyGroup) {
414
- this.removeGroup(group);
415
- }
416
- };
417
- DockviewComponent.prototype.createWatermarkComponent = function () {
418
- var _a;
419
- return (0, componentFactory_1.createComponent)('watermark-id', 'watermark-name', this.options.watermarkComponent
420
- ? { 'watermark-name': this.options.watermarkComponent }
421
- : {}, this.options.watermarkFrameworkComponent
422
- ? { 'watermark-name': this.options.watermarkFrameworkComponent }
423
- : {}, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.watermark);
424
- };
425
- DockviewComponent.prototype.addEmptyGroup = function (options) {
426
- var group = this.createGroup();
427
- if (options) {
428
- var referencePanel = this.panels.find(function (panel) { return panel.id === options.referencePanel; });
429
- if (!referencePanel) {
430
- throw new Error("reference panel ".concat(options.referencePanel, " does not exist"));
431
- }
432
- var referenceGroup = this.findGroup(referencePanel);
433
- if (!referenceGroup) {
434
- throw new Error("reference group for reference panel ".concat(options.referencePanel, " does not exist"));
435
- }
436
- var target = (0, baseComponentGridview_1.toTarget)(options.direction || 'within');
437
- var location_2 = (0, gridview_1.getGridLocation)(referenceGroup.element);
438
- var relativeLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, location_2, target);
439
- this.doAddGroup(group, relativeLocation);
440
- }
441
- else {
442
- this.doAddGroup(group);
443
- }
444
- };
445
- DockviewComponent.prototype.removeGroup = function (group, skipActive) {
446
- var e_4, _a;
447
- if (skipActive === void 0) { skipActive = false; }
448
- var panels = __spreadArray([], __read(group.panels), false); // reassign since group panels will mutate
449
- try {
450
- for (var panels_1 = __values(panels), panels_1_1 = panels_1.next(); !panels_1_1.done; panels_1_1 = panels_1.next()) {
451
- var panel = panels_1_1.value;
452
- this.removePanel(panel, {
453
- removeEmptyGroup: false,
454
- skipDispose: false,
455
- });
456
- }
457
- }
458
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
459
- finally {
460
- try {
461
- if (panels_1_1 && !panels_1_1.done && (_a = panels_1.return)) _a.call(panels_1);
462
- }
463
- finally { if (e_4) throw e_4.error; }
464
- }
465
- _super.prototype.doRemoveGroup.call(this, group, { skipActive: skipActive });
466
- };
467
- DockviewComponent.prototype.moveGroupOrPanel = function (referenceGroup, groupId, itemId, target, index) {
468
- var _a;
469
- var sourceGroup = groupId
470
- ? (_a = this._groups.get(groupId)) === null || _a === void 0 ? void 0 : _a.value
471
- : undefined;
472
- if (!target || target === droptarget_1.Position.Center) {
473
- var groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(itemId)) ||
474
- this.panels.find(function (panel) { return panel.id === itemId; });
475
- if (!groupItem) {
476
- throw new Error("No panel with id ".concat(itemId));
477
- }
478
- if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
479
- this.doRemoveGroup(sourceGroup);
480
- }
481
- referenceGroup.model.openPanel(groupItem, { index: index });
482
- }
483
- else {
484
- var referenceLocation = (0, gridview_1.getGridLocation)(referenceGroup.element);
485
- var targetLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, target);
486
- if (sourceGroup && sourceGroup.size < 2) {
487
- var _b = __read((0, array_1.tail)(targetLocation), 2), targetParentLocation = _b[0], to = _b[1];
488
- var sourceLocation = (0, gridview_1.getGridLocation)(sourceGroup.element);
489
- var _c = __read((0, array_1.tail)(sourceLocation), 2), sourceParentLocation = _c[0], from = _c[1];
490
- if ((0, array_1.sequenceEquals)(sourceParentLocation, targetParentLocation)) {
491
- // special case when 'swapping' two views within same grid location
492
- // if a group has one tab - we are essentially moving the 'group'
493
- // which is equivalent to swapping two views in this case
494
- this.gridview.moveView(sourceParentLocation, from, to);
495
- }
496
- else {
497
- // source group will become empty so delete the group
498
- var targetGroup = this.doRemoveGroup(sourceGroup, {
499
- skipActive: true,
500
- skipDispose: true,
501
- });
502
- // after deleting the group we need to re-evaulate the ref location
503
- var updatedReferenceLocation = (0, gridview_1.getGridLocation)(referenceGroup.element);
504
- var location_3 = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, updatedReferenceLocation, target);
505
- this.doAddGroup(targetGroup, location_3);
506
- }
507
- }
508
- else {
509
- var groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(itemId)) ||
510
- this.panels.find(function (panel) { return panel.id === itemId; });
511
- if (!groupItem) {
512
- throw new Error("No panel with id ".concat(itemId));
513
- }
514
- var dropLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, target);
515
- var group = this.createGroupAtLocation(dropLocation);
516
- group.model.openPanel(groupItem);
517
- }
518
- }
519
- };
520
- DockviewComponent.prototype.doSetGroupActive = function (group, skipFocus) {
521
- var _a, _b;
522
- var isGroupAlreadyFocused = this._activeGroup === group;
523
- _super.prototype.doSetGroupActive.call(this, group, skipFocus);
524
- if (!isGroupAlreadyFocused && ((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.activePanel)) {
525
- this._onDidActivePanelChange.fire((_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.activePanel);
526
- }
527
- };
528
- DockviewComponent.prototype.createGroup = function (options) {
529
- var _this = this;
530
- if (!options) {
531
- options = { tabHeight: this.tabHeight };
532
- }
533
- if (typeof options.tabHeight !== 'number') {
534
- options.tabHeight = this.tabHeight;
535
- }
536
- var id = options === null || options === void 0 ? void 0 : options.id;
537
- if (id && this._groups.has(options.id)) {
538
- console.warn("Duplicate group id ".concat(options === null || options === void 0 ? void 0 : options.id, ". reassigning group id to avoid errors"));
539
- id = undefined;
540
- }
541
- if (!id) {
542
- id = nextGroupId.next();
543
- while (this._groups.has(id)) {
544
- id = nextGroupId.next();
545
- }
546
- }
547
- var view = new groupviewPanel_1.GroupPanel(this, id, options);
548
- view.init({ params: {}, accessor: null }); // required to initialized .part and allow for correct disposal of group
549
- if (!this._groups.has(view.id)) {
550
- var disposable = new lifecycle_1.CompositeDisposable(view.model.onMove(function (event) {
551
- var groupId = event.groupId, itemId = event.itemId, target = event.target, index = event.index;
552
- _this.moveGroupOrPanel(view, groupId, itemId, target, index);
553
- }), view.model.onDidDrop(function (event) {
554
- _this._onDidDrop.fire(__assign(__assign({}, event), { api: _this._api, group: view }));
555
- }), view.model.onDidAddPanel(function (event) {
556
- _this._onDidAddPanel.fire(event.panel);
557
- }), view.model.onDidRemovePanel(function (event) {
558
- _this._onDidRemovePanel.fire(event.panel);
559
- }), view.model.onDidActivePanelChange(function (event) {
560
- _this._onDidActivePanelChange.fire(event.panel);
561
- }));
562
- this._groups.set(view.id, { value: view, disposable: disposable });
563
- }
564
- // TODO: must be called after the above listeners have been setup,
565
- // not an ideal pattern
566
- view.initialize();
567
- if (typeof this.options.tabHeight === 'number') {
568
- view.model.header.height = this.options.tabHeight;
569
- }
570
- return view;
571
- };
572
- DockviewComponent.prototype.createPanel = function (options, group) {
573
- var view = new defaultGroupPanelView_1.DefaultGroupPanelView({
574
- content: this.createContentComponent(options.id, options.component),
575
- tab: this.createTabComponent(options.id, options.tabComponent || this.options.defaultTabComponent),
576
- });
577
- var panel = new dockviewGroupPanel_1.DockviewGroupPanel(options.id, this, this._api, group);
578
- panel.init({
579
- view: view,
580
- title: options.title || options.id,
581
- params: (options === null || options === void 0 ? void 0 : options.params) || {},
582
- });
583
- return panel;
584
- };
585
- DockviewComponent.prototype.createContentComponent = function (id, componentName) {
586
- var _a;
587
- return (0, componentFactory_1.createComponent)(id, componentName, this.options.components || {}, this.options.frameworkComponents, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.content);
588
- };
589
- DockviewComponent.prototype.createTabComponent = function (id, componentName) {
590
- var _a;
591
- return (0, componentFactory_1.createComponent)(id, componentName, this.options.tabComponents || {}, this.options.frameworkTabComponents, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.tab, function () { return new defaultTab_1.DefaultTab(); });
592
- };
593
- DockviewComponent.prototype.createGroupAtLocation = function (location) {
594
- if (location === void 0) { location = [0]; }
595
- var group = this.createGroup();
596
- this.doAddGroup(group, location);
597
- return group;
598
- };
599
- DockviewComponent.prototype.findGroup = function (panel) {
600
- var _a;
601
- return (_a = Array.from(this._groups.values()).find(function (group) {
602
- return group.value.model.containsPanel(panel);
603
- })) === null || _a === void 0 ? void 0 : _a.value;
604
- };
605
- DockviewComponent.prototype.dispose = function () {
606
- _super.prototype.dispose.call(this);
607
- this._onDidActivePanelChange.dispose();
608
- this._onDidAddPanel.dispose();
609
- this._onDidRemovePanel.dispose();
610
- this._onDidLayoutFromJSON.dispose();
611
- };
612
- return DockviewComponent;
613
- }(baseComponentGridview_1.BaseGrid));
614
- 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 __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 math_1 = require("../math");
74
+ var componentFactory_1 = require("../panel/componentFactory");
75
+ var options_1 = require("./options");
76
+ var baseComponentGridview_1 = require("../gridview/baseComponentGridview");
77
+ var component_api_1 = require("../api/component.api");
78
+ var splitview_1 = require("../splitview/core/splitview");
79
+ var defaultTab_1 = require("./components/tab/defaultTab");
80
+ var groupviewPanel_1 = require("../groupview/groupviewPanel");
81
+ var defaultGroupPanelView_1 = require("./defaultGroupPanelView");
82
+ var dataTransfer_1 = require("../dnd/dataTransfer");
83
+ var dnd_1 = require("../groupview/dnd");
84
+ var DockviewComponent = /** @class */ (function (_super) {
85
+ __extends(DockviewComponent, _super);
86
+ function DockviewComponent(element, options) {
87
+ var _this = _super.call(this, element, {
88
+ proportionalLayout: true,
89
+ orientation: options.orientation || splitview_1.Orientation.HORIZONTAL,
90
+ styles: options.styles,
91
+ }) || this;
92
+ _this.nextGroupId = (0, math_1.sequentialNumberGenerator)();
93
+ _this.watermark = null;
94
+ _this._onDidDrop = new events_1.Emitter();
95
+ _this.onDidDrop = _this._onDidDrop.event;
96
+ _this._onDidRemovePanel = new events_1.Emitter();
97
+ _this.onDidRemovePanel = _this._onDidRemovePanel.event;
98
+ _this._onDidAddPanel = new events_1.Emitter();
99
+ _this.onDidAddPanel = _this._onDidAddPanel.event;
100
+ _this._onDidLayoutFromJSON = new events_1.Emitter();
101
+ _this.onDidLayoutFromJSON = _this._onDidLayoutFromJSON.event;
102
+ _this._onDidActivePanelChange = new events_1.Emitter();
103
+ _this.onDidActivePanelChange = _this._onDidActivePanelChange.event;
104
+ _this.element.classList.add('dv-dockview');
105
+ _this.addDisposables(_this._onDidDrop, events_1.Event.any(_this.onDidAddGroup, _this.onDidRemoveGroup)(function () {
106
+ _this.updateWatermark();
107
+ }), events_1.Event.any(_this.onDidAddPanel, _this.onDidRemovePanel, _this.onDidActivePanelChange)(function () {
108
+ _this._bufferOnDidLayoutChange.fire();
109
+ }));
110
+ _this._options = options;
111
+ if (!_this.options.components) {
112
+ _this.options.components = {};
113
+ }
114
+ if (!_this.options.frameworkComponents) {
115
+ _this.options.frameworkComponents = {};
116
+ }
117
+ if (!_this.options.frameworkTabComponents) {
118
+ _this.options.frameworkTabComponents = {};
119
+ }
120
+ if (!_this.options.tabComponents) {
121
+ _this.options.tabComponents = {};
122
+ }
123
+ if (!_this.options.watermarkComponent &&
124
+ !_this.options.watermarkFrameworkComponent) {
125
+ _this.options.watermarkComponent = watermark_1.Watermark;
126
+ }
127
+ var dropTarget = new droptarget_1.Droptarget(_this.element, {
128
+ canDisplayOverlay: function (event, position) {
129
+ var data = (0, dataTransfer_1.getPanelData)();
130
+ if (data) {
131
+ if (data.viewId !== _this.id) {
132
+ return false;
133
+ }
134
+ return true;
135
+ }
136
+ if (_this.options.showDndOverlay) {
137
+ return _this.options.showDndOverlay({
138
+ nativeEvent: event,
139
+ position: position,
140
+ target: dnd_1.DockviewDropTargets.Edge,
141
+ getData: dataTransfer_1.getPanelData,
142
+ });
143
+ }
144
+ return false;
145
+ },
146
+ acceptedTargetZones: ['top', 'bottom', 'left', 'right'],
147
+ overlayModel: {
148
+ activationSize: { type: 'pixels', value: 10 },
149
+ size: { type: 'pixels', value: 20 },
150
+ },
151
+ });
152
+ _this.addDisposables(dropTarget, dropTarget.onDrop(function (event) {
153
+ var data = (0, dataTransfer_1.getPanelData)();
154
+ if (data) {
155
+ _this.moveGroupOrPanel(_this.orthogonalize(event.position), data.groupId, data.panelId || undefined, 'center');
156
+ }
157
+ else {
158
+ _this._onDidDrop.fire(__assign(__assign({}, event), { api: _this._api, group: null, getData: dataTransfer_1.getPanelData }));
159
+ }
160
+ }));
161
+ _this._api = new component_api_1.DockviewApi(_this);
162
+ _this.updateWatermark();
163
+ return _this;
164
+ }
165
+ Object.defineProperty(DockviewComponent.prototype, "orientation", {
166
+ get: function () {
167
+ return this.gridview.orientation;
168
+ },
169
+ enumerable: false,
170
+ configurable: true
171
+ });
172
+ Object.defineProperty(DockviewComponent.prototype, "totalPanels", {
173
+ get: function () {
174
+ return this.panels.length;
175
+ },
176
+ enumerable: false,
177
+ configurable: true
178
+ });
179
+ Object.defineProperty(DockviewComponent.prototype, "panels", {
180
+ get: function () {
181
+ return this.groups.flatMap(function (group) { return group.panels; });
182
+ },
183
+ enumerable: false,
184
+ configurable: true
185
+ });
186
+ Object.defineProperty(DockviewComponent.prototype, "deserializer", {
187
+ get: function () {
188
+ return this._deserializer;
189
+ },
190
+ set: function (value) {
191
+ this._deserializer = value;
192
+ },
193
+ enumerable: false,
194
+ configurable: true
195
+ });
196
+ Object.defineProperty(DockviewComponent.prototype, "options", {
197
+ get: function () {
198
+ return this._options;
199
+ },
200
+ enumerable: false,
201
+ configurable: true
202
+ });
203
+ Object.defineProperty(DockviewComponent.prototype, "activePanel", {
204
+ get: function () {
205
+ var activeGroup = this.activeGroup;
206
+ if (!activeGroup) {
207
+ return undefined;
208
+ }
209
+ return activeGroup.activePanel;
210
+ },
211
+ enumerable: false,
212
+ configurable: true
213
+ });
214
+ Object.defineProperty(DockviewComponent.prototype, "tabHeight", {
215
+ get: function () {
216
+ return this.options.tabHeight;
217
+ },
218
+ set: function (height) {
219
+ this.options.tabHeight = height;
220
+ this._groups.forEach(function (value) {
221
+ value.value.model.header.height = height;
222
+ });
223
+ },
224
+ enumerable: false,
225
+ configurable: true
226
+ });
227
+ DockviewComponent.prototype.orthogonalize = function (position) {
228
+ switch (position) {
229
+ case 'top':
230
+ case 'bottom':
231
+ if (this.gridview.orientation === splitview_1.Orientation.HORIZONTAL) {
232
+ // we need to add to a vertical splitview but the current root is a horizontal splitview.
233
+ // insert a vertical splitview at the root level and add the existing view as a child
234
+ this.gridview.insertOrthogonalSplitviewAtRoot();
235
+ }
236
+ break;
237
+ case 'left':
238
+ case 'right':
239
+ if (this.gridview.orientation === splitview_1.Orientation.VERTICAL) {
240
+ // we need to add to a horizontal splitview but the current root is a vertical splitview.
241
+ // insert a horiziontal splitview at the root level and add the existing view as a child
242
+ this.gridview.insertOrthogonalSplitviewAtRoot();
243
+ }
244
+ break;
245
+ default:
246
+ break;
247
+ }
248
+ switch (position) {
249
+ case 'top':
250
+ case 'left':
251
+ return this.createGroupAtLocation([0]); // insert into first position
252
+ case 'bottom':
253
+ case 'right':
254
+ return this.createGroupAtLocation([this.gridview.length]); // insert into last position
255
+ default:
256
+ throw new Error("unsupported position ".concat(position));
257
+ }
258
+ };
259
+ DockviewComponent.prototype.updateOptions = function (options) {
260
+ var hasOrientationChanged = typeof options.orientation === 'string' &&
261
+ this.gridview.orientation !== options.orientation;
262
+ this._options = __assign(__assign({}, this.options), options);
263
+ if (hasOrientationChanged) {
264
+ this.gridview.orientation = options.orientation;
265
+ }
266
+ this.layout(this.gridview.width, this.gridview.height, true);
267
+ };
268
+ DockviewComponent.prototype.focus = function () {
269
+ var _a;
270
+ (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.focus();
271
+ };
272
+ DockviewComponent.prototype.getGroupPanel = function (id) {
273
+ return this.panels.find(function (panel) { return panel.id === id; });
274
+ };
275
+ DockviewComponent.prototype.setActivePanel = function (panel) {
276
+ this.doSetGroupActive(panel.group);
277
+ panel.group.model.openPanel(panel);
278
+ };
279
+ DockviewComponent.prototype.moveToNext = function (options) {
280
+ var _a;
281
+ if (options === void 0) { options = {}; }
282
+ if (!options.group) {
283
+ if (!this.activeGroup) {
284
+ return;
285
+ }
286
+ options.group = this.activeGroup;
287
+ }
288
+ if (options.includePanel && options.group) {
289
+ if (options.group.activePanel !==
290
+ options.group.panels[options.group.panels.length - 1]) {
291
+ options.group.model.moveToNext({ suppressRoll: true });
292
+ return;
293
+ }
294
+ }
295
+ var location = (0, gridview_1.getGridLocation)(options.group.element);
296
+ var next = (_a = this.gridview.next(location)) === null || _a === void 0 ? void 0 : _a.view;
297
+ this.doSetGroupActive(next);
298
+ };
299
+ DockviewComponent.prototype.moveToPrevious = function (options) {
300
+ var _a;
301
+ if (options === void 0) { options = {}; }
302
+ if (!options.group) {
303
+ if (!this.activeGroup) {
304
+ return;
305
+ }
306
+ options.group = this.activeGroup;
307
+ }
308
+ if (options.includePanel && options.group) {
309
+ if (options.group.activePanel !== options.group.panels[0]) {
310
+ options.group.model.moveToPrevious({ suppressRoll: true });
311
+ return;
312
+ }
313
+ }
314
+ var location = (0, gridview_1.getGridLocation)(options.group.element);
315
+ var next = (_a = this.gridview.previous(location)) === null || _a === void 0 ? void 0 : _a.view;
316
+ if (next) {
317
+ this.doSetGroupActive(next);
318
+ }
319
+ };
320
+ /**
321
+ * Serialize the current state of the layout
322
+ *
323
+ * @returns A JSON respresentation of the layout
324
+ */
325
+ DockviewComponent.prototype.toJSON = function () {
326
+ var _a;
327
+ var data = this.gridview.serialize();
328
+ var panels = this.panels.reduce(function (collection, panel) {
329
+ collection[panel.id] = panel.toJSON();
330
+ return collection;
331
+ }, {});
332
+ return {
333
+ grid: data,
334
+ panels: panels,
335
+ activeGroup: (_a = this.activeGroup) === null || _a === void 0 ? void 0 : _a.id,
336
+ options: { tabHeight: this.tabHeight },
337
+ };
338
+ };
339
+ DockviewComponent.prototype.fromJSON = function (data) {
340
+ var _this = this;
341
+ this.clear();
342
+ if (!this.deserializer) {
343
+ throw new Error('no deserializer provided');
344
+ }
345
+ var grid = data.grid, panels = data.panels, options = data.options, activeGroup = data.activeGroup;
346
+ if (typeof (options === null || options === void 0 ? void 0 : options.tabHeight) === 'number') {
347
+ this.tabHeight = options.tabHeight;
348
+ }
349
+ if (grid.root.type !== 'branch' || !Array.isArray(grid.root.data)) {
350
+ throw new Error('root must be of type branch');
351
+ }
352
+ this.gridview.deserialize(grid, {
353
+ fromJSON: function (node) {
354
+ var e_1, _a;
355
+ var _b = node.data, id = _b.id, locked = _b.locked, hideHeader = _b.hideHeader, views = _b.views, activeView = _b.activeView;
356
+ var group = _this.createGroup({
357
+ id: id,
358
+ locked: !!locked,
359
+ hideHeader: !!hideHeader,
360
+ });
361
+ _this._onDidAddGroup.fire(group);
362
+ try {
363
+ for (var views_1 = __values(views), views_1_1 = views_1.next(); !views_1_1.done; views_1_1 = views_1.next()) {
364
+ var child = views_1_1.value;
365
+ var panel = _this.deserializer.fromJSON(panels[child], group);
366
+ var isActive = typeof activeView === 'string' &&
367
+ activeView === panel.id;
368
+ group.model.openPanel(panel, {
369
+ skipSetPanelActive: !isActive,
370
+ skipSetGroupActive: true,
371
+ });
372
+ }
373
+ }
374
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
375
+ finally {
376
+ try {
377
+ if (views_1_1 && !views_1_1.done && (_a = views_1.return)) _a.call(views_1);
378
+ }
379
+ finally { if (e_1) throw e_1.error; }
380
+ }
381
+ if (!group.activePanel && group.panels.length > 0) {
382
+ group.model.openPanel(group.panels[group.panels.length - 1], {
383
+ skipSetGroupActive: true,
384
+ });
385
+ }
386
+ return group;
387
+ },
388
+ });
389
+ if (typeof activeGroup === 'string') {
390
+ var panel = this.getPanel(activeGroup);
391
+ if (panel) {
392
+ this.doSetGroupActive(panel);
393
+ }
394
+ }
395
+ this.gridview.layout(this.width, this.height);
396
+ this._onDidLayoutFromJSON.fire();
397
+ };
398
+ DockviewComponent.prototype.clear = function () {
399
+ var e_2, _a;
400
+ var groups = Array.from(this._groups.values()).map(function (_) { return _.value; });
401
+ var hasActiveGroup = !!this.activeGroup;
402
+ var hasActivePanel = !!this.activePanel;
403
+ try {
404
+ for (var groups_1 = __values(groups), groups_1_1 = groups_1.next(); !groups_1_1.done; groups_1_1 = groups_1.next()) {
405
+ var group = groups_1_1.value;
406
+ // remove the group will automatically remove the panels
407
+ this.removeGroup(group, true);
408
+ }
409
+ }
410
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
411
+ finally {
412
+ try {
413
+ if (groups_1_1 && !groups_1_1.done && (_a = groups_1.return)) _a.call(groups_1);
414
+ }
415
+ finally { if (e_2) throw e_2.error; }
416
+ }
417
+ if (hasActiveGroup) {
418
+ this.doSetGroupActive(undefined);
419
+ }
420
+ if (hasActivePanel) {
421
+ this._onDidActivePanelChange.fire(undefined);
422
+ }
423
+ this.gridview.clear();
424
+ };
425
+ DockviewComponent.prototype.closeAllGroups = function () {
426
+ var e_3, _a;
427
+ try {
428
+ for (var _b = __values(this._groups.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
429
+ var entry = _c.value;
430
+ var _d = __read(entry, 2), _ = _d[0], group = _d[1];
431
+ group.value.model.closeAllPanels();
432
+ }
433
+ }
434
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
435
+ finally {
436
+ try {
437
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
438
+ }
439
+ finally { if (e_3) throw e_3.error; }
440
+ }
441
+ };
442
+ DockviewComponent.prototype.addPanel = function (options) {
443
+ var _a, _b;
444
+ if (this.panels.find(function (_) { return _.id === options.id; })) {
445
+ throw new Error("panel with id ".concat(options.id, " already exists"));
446
+ }
447
+ var referenceGroup;
448
+ if (options.position) {
449
+ if ((0, options_1.isPanelOptionsWithPanel)(options.position)) {
450
+ var referencePanel = typeof options.position.referencePanel === 'string'
451
+ ? this.getGroupPanel(options.position.referencePanel)
452
+ : options.position.referencePanel;
453
+ if (!referencePanel) {
454
+ throw new Error("referencePanel ".concat(options.position.referencePanel, " does not exist"));
455
+ }
456
+ referenceGroup = this.findGroup(referencePanel);
457
+ }
458
+ else if ((0, options_1.isPanelOptionsWithGroup)(options.position)) {
459
+ referenceGroup =
460
+ typeof options.position.referenceGroup === 'string'
461
+ ? (_a = this._groups.get(options.position.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value
462
+ : options.position.referenceGroup;
463
+ if (!referenceGroup) {
464
+ throw new Error("referencePanel ".concat(options.position.referenceGroup, " does not exist"));
465
+ }
466
+ }
467
+ else {
468
+ var group = this.orthogonalize((0, droptarget_1.directionToPosition)(options.position.direction));
469
+ var panel_1 = this.createPanel(options, group);
470
+ group.model.openPanel(panel_1);
471
+ return panel_1;
472
+ }
473
+ }
474
+ else {
475
+ referenceGroup = this.activeGroup;
476
+ }
477
+ var panel;
478
+ if (referenceGroup) {
479
+ var target = (0, baseComponentGridview_1.toTarget)(((_b = options.position) === null || _b === void 0 ? void 0 : _b.direction) || 'within');
480
+ if (target === 'center') {
481
+ panel = this.createPanel(options, referenceGroup);
482
+ referenceGroup.model.openPanel(panel);
483
+ }
484
+ else {
485
+ var location_1 = (0, gridview_1.getGridLocation)(referenceGroup.element);
486
+ var relativeLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, location_1, target);
487
+ var group = this.createGroupAtLocation(relativeLocation);
488
+ panel = this.createPanel(options, group);
489
+ group.model.openPanel(panel);
490
+ }
491
+ }
492
+ else {
493
+ var group = this.createGroupAtLocation();
494
+ panel = this.createPanel(options, group);
495
+ group.model.openPanel(panel);
496
+ }
497
+ return panel;
498
+ };
499
+ DockviewComponent.prototype.removePanel = function (panel, options) {
500
+ if (options === void 0) { options = {
501
+ removeEmptyGroup: true,
502
+ skipDispose: false,
503
+ }; }
504
+ var group = panel.group;
505
+ if (!group) {
506
+ throw new Error("cannot remove panel ".concat(panel.id, ". it's missing a group."));
507
+ }
508
+ group.model.removePanel(panel);
509
+ panel.dispose();
510
+ if (group.size === 0 && options.removeEmptyGroup) {
511
+ this.removeGroup(group);
512
+ }
513
+ };
514
+ DockviewComponent.prototype.createWatermarkComponent = function () {
515
+ var _a;
516
+ return (0, componentFactory_1.createComponent)('watermark-id', 'watermark-name', this.options.watermarkComponent
517
+ ? { 'watermark-name': this.options.watermarkComponent }
518
+ : {}, this.options.watermarkFrameworkComponent
519
+ ? { 'watermark-name': this.options.watermarkFrameworkComponent }
520
+ : {}, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.watermark);
521
+ };
522
+ DockviewComponent.prototype.updateWatermark = function () {
523
+ if (this.groups.length === 0) {
524
+ if (!this.watermark) {
525
+ this.watermark = this.createWatermarkComponent();
526
+ this.watermark.init({
527
+ containerApi: new component_api_1.DockviewApi(this),
528
+ params: {},
529
+ title: '',
530
+ api: null,
531
+ });
532
+ var watermarkContainer = document.createElement('div');
533
+ watermarkContainer.className = 'dv-watermark-container';
534
+ watermarkContainer.appendChild(this.watermark.element);
535
+ this.element.appendChild(watermarkContainer);
536
+ }
537
+ }
538
+ else if (this.watermark) {
539
+ this.watermark.element.parentElement.remove();
540
+ this.watermark.dispose();
541
+ this.watermark = null;
542
+ }
543
+ };
544
+ DockviewComponent.prototype.addGroup = function (options) {
545
+ var _a;
546
+ var group = this.createGroup();
547
+ if (options) {
548
+ var referenceGroup = void 0;
549
+ if ((0, options_1.isGroupOptionsWithPanel)(options)) {
550
+ var referencePanel = typeof options.referencePanel === 'string'
551
+ ? this.panels.find(function (panel) { return panel.id === options.referencePanel; })
552
+ : options.referencePanel;
553
+ if (!referencePanel) {
554
+ throw new Error("reference panel ".concat(options.referencePanel, " does not exist"));
555
+ }
556
+ referenceGroup = this.findGroup(referencePanel);
557
+ if (!referenceGroup) {
558
+ throw new Error("reference group for reference panel ".concat(options.referencePanel, " does not exist"));
559
+ }
560
+ }
561
+ else if ((0, options_1.isGroupOptionsWithGroup)(options)) {
562
+ referenceGroup =
563
+ typeof options.referenceGroup === 'string'
564
+ ? (_a = this._groups.get(options.referenceGroup)) === null || _a === void 0 ? void 0 : _a.value
565
+ : options.referenceGroup;
566
+ if (!referenceGroup) {
567
+ throw new Error("reference group ".concat(options.referenceGroup, " does not exist"));
568
+ }
569
+ }
570
+ else {
571
+ var group_1 = this.orthogonalize((0, droptarget_1.directionToPosition)(options.direction));
572
+ return group_1;
573
+ }
574
+ var target = (0, baseComponentGridview_1.toTarget)(options.direction || 'within');
575
+ var location_2 = (0, gridview_1.getGridLocation)(referenceGroup.element);
576
+ var relativeLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, location_2, target);
577
+ this.doAddGroup(group, relativeLocation);
578
+ return group;
579
+ }
580
+ else {
581
+ this.doAddGroup(group);
582
+ return group;
583
+ }
584
+ };
585
+ DockviewComponent.prototype.removeGroup = function (group, skipActive) {
586
+ var e_4, _a;
587
+ if (skipActive === void 0) { skipActive = false; }
588
+ var panels = __spreadArray([], __read(group.panels), false); // reassign since group panels will mutate
589
+ try {
590
+ for (var panels_1 = __values(panels), panels_1_1 = panels_1.next(); !panels_1_1.done; panels_1_1 = panels_1.next()) {
591
+ var panel = panels_1_1.value;
592
+ this.removePanel(panel, {
593
+ removeEmptyGroup: false,
594
+ skipDispose: false,
595
+ });
596
+ }
597
+ }
598
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
599
+ finally {
600
+ try {
601
+ if (panels_1_1 && !panels_1_1.done && (_a = panels_1.return)) _a.call(panels_1);
602
+ }
603
+ finally { if (e_4) throw e_4.error; }
604
+ }
605
+ _super.prototype.doRemoveGroup.call(this, group, { skipActive: skipActive });
606
+ };
607
+ DockviewComponent.prototype.moveGroupOrPanel = function (referenceGroup, groupId, itemId, target, index) {
608
+ var _a;
609
+ var sourceGroup = groupId
610
+ ? (_a = this._groups.get(groupId)) === null || _a === void 0 ? void 0 : _a.value
611
+ : undefined;
612
+ if (itemId === undefined) {
613
+ if (sourceGroup) {
614
+ this.moveGroup(sourceGroup, referenceGroup, target);
615
+ }
616
+ return;
617
+ }
618
+ if (!target || target === 'center') {
619
+ var groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(itemId)) ||
620
+ this.panels.find(function (panel) { return panel.id === itemId; });
621
+ if (!groupItem) {
622
+ throw new Error("No panel with id ".concat(itemId));
623
+ }
624
+ if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
625
+ this.doRemoveGroup(sourceGroup);
626
+ }
627
+ referenceGroup.model.openPanel(groupItem, { index: index });
628
+ }
629
+ else {
630
+ var referenceLocation = (0, gridview_1.getGridLocation)(referenceGroup.element);
631
+ var targetLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, target);
632
+ if (sourceGroup && sourceGroup.size < 2) {
633
+ var _b = __read((0, array_1.tail)(targetLocation), 2), targetParentLocation = _b[0], to = _b[1];
634
+ var sourceLocation = (0, gridview_1.getGridLocation)(sourceGroup.element);
635
+ var _c = __read((0, array_1.tail)(sourceLocation), 2), sourceParentLocation = _c[0], from = _c[1];
636
+ if ((0, array_1.sequenceEquals)(sourceParentLocation, targetParentLocation)) {
637
+ // special case when 'swapping' two views within same grid location
638
+ // if a group has one tab - we are essentially moving the 'group'
639
+ // which is equivalent to swapping two views in this case
640
+ this.gridview.moveView(sourceParentLocation, from, to);
641
+ }
642
+ else {
643
+ // source group will become empty so delete the group
644
+ var targetGroup = this.doRemoveGroup(sourceGroup, {
645
+ skipActive: true,
646
+ skipDispose: true,
647
+ });
648
+ // after deleting the group we need to re-evaulate the ref location
649
+ var updatedReferenceLocation = (0, gridview_1.getGridLocation)(referenceGroup.element);
650
+ var location_3 = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, updatedReferenceLocation, target);
651
+ this.doAddGroup(targetGroup, location_3);
652
+ }
653
+ }
654
+ else {
655
+ var groupItem = (sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.removePanel(itemId)) ||
656
+ this.panels.find(function (panel) { return panel.id === itemId; });
657
+ if (!groupItem) {
658
+ throw new Error("No panel with id ".concat(itemId));
659
+ }
660
+ var dropLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, target);
661
+ var group = this.createGroupAtLocation(dropLocation);
662
+ group.model.openPanel(groupItem);
663
+ }
664
+ }
665
+ };
666
+ DockviewComponent.prototype.moveGroup = function (sourceGroup, referenceGroup, target) {
667
+ var e_5, _a;
668
+ if (sourceGroup) {
669
+ if (!target || target === 'center') {
670
+ var activePanel = sourceGroup.activePanel;
671
+ var panels = __spreadArray([], __read(sourceGroup.panels), false).map(function (p) {
672
+ return sourceGroup.model.removePanel(p.id);
673
+ });
674
+ if ((sourceGroup === null || sourceGroup === void 0 ? void 0 : sourceGroup.model.size) === 0) {
675
+ this.doRemoveGroup(sourceGroup);
676
+ }
677
+ try {
678
+ for (var panels_2 = __values(panels), panels_2_1 = panels_2.next(); !panels_2_1.done; panels_2_1 = panels_2.next()) {
679
+ var panel = panels_2_1.value;
680
+ referenceGroup.model.openPanel(panel, {
681
+ skipSetPanelActive: panel !== activePanel,
682
+ });
683
+ }
684
+ }
685
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
686
+ finally {
687
+ try {
688
+ if (panels_2_1 && !panels_2_1.done && (_a = panels_2.return)) _a.call(panels_2);
689
+ }
690
+ finally { if (e_5) throw e_5.error; }
691
+ }
692
+ }
693
+ else {
694
+ this.gridview.removeView((0, gridview_1.getGridLocation)(sourceGroup.element));
695
+ var referenceLocation = (0, gridview_1.getGridLocation)(referenceGroup.element);
696
+ var dropLocation = (0, gridview_1.getRelativeLocation)(this.gridview.orientation, referenceLocation, target);
697
+ this.gridview.addView(sourceGroup, splitview_1.Sizing.Distribute, dropLocation);
698
+ }
699
+ }
700
+ };
701
+ DockviewComponent.prototype.doSetGroupActive = function (group, skipFocus) {
702
+ var _a, _b;
703
+ var isGroupAlreadyFocused = this._activeGroup === group;
704
+ _super.prototype.doSetGroupActive.call(this, group, skipFocus);
705
+ if (!isGroupAlreadyFocused && ((_a = this._activeGroup) === null || _a === void 0 ? void 0 : _a.activePanel)) {
706
+ this._onDidActivePanelChange.fire((_b = this._activeGroup) === null || _b === void 0 ? void 0 : _b.activePanel);
707
+ }
708
+ };
709
+ DockviewComponent.prototype.createGroup = function (options) {
710
+ var _this = this;
711
+ if (!options) {
712
+ options = { tabHeight: this.tabHeight };
713
+ }
714
+ if (typeof options.tabHeight !== 'number') {
715
+ options.tabHeight = this.tabHeight;
716
+ }
717
+ var id = options === null || options === void 0 ? void 0 : options.id;
718
+ if (id && this._groups.has(options.id)) {
719
+ console.warn("Duplicate group id ".concat(options === null || options === void 0 ? void 0 : options.id, ". reassigning group id to avoid errors"));
720
+ id = undefined;
721
+ }
722
+ if (!id) {
723
+ id = this.nextGroupId.next();
724
+ while (this._groups.has(id)) {
725
+ id = this.nextGroupId.next();
726
+ }
727
+ }
728
+ var view = new groupviewPanel_1.GroupPanel(this, id, options);
729
+ view.init({ params: {}, accessor: null }); // required to initialized .part and allow for correct disposal of group
730
+ if (!this._groups.has(view.id)) {
731
+ var disposable = new lifecycle_1.CompositeDisposable(view.model.onMove(function (event) {
732
+ var groupId = event.groupId, itemId = event.itemId, target = event.target, index = event.index;
733
+ _this.moveGroupOrPanel(view, groupId, itemId, target, index);
734
+ }), view.model.onDidDrop(function (event) {
735
+ _this._onDidDrop.fire(__assign(__assign({}, event), { api: _this._api, group: view }));
736
+ }), view.model.onDidAddPanel(function (event) {
737
+ _this._onDidAddPanel.fire(event.panel);
738
+ }), view.model.onDidRemovePanel(function (event) {
739
+ _this._onDidRemovePanel.fire(event.panel);
740
+ }), view.model.onDidActivePanelChange(function (event) {
741
+ _this._onDidActivePanelChange.fire(event.panel);
742
+ }));
743
+ this._groups.set(view.id, { value: view, disposable: disposable });
744
+ }
745
+ // TODO: must be called after the above listeners have been setup,
746
+ // not an ideal pattern
747
+ view.initialize();
748
+ if (typeof this.options.tabHeight === 'number') {
749
+ view.model.header.height = this.options.tabHeight;
750
+ }
751
+ return view;
752
+ };
753
+ DockviewComponent.prototype.createPanel = function (options, group) {
754
+ var view = new defaultGroupPanelView_1.DefaultGroupPanelView({
755
+ content: this.createContentComponent(options.id, options.component),
756
+ tab: this.createTabComponent(options.id, options.tabComponent || this.options.defaultTabComponent),
757
+ });
758
+ var panel = new dockviewPanel_1.DockviewPanel(options.id, this, this._api, group);
759
+ panel.init({
760
+ view: view,
761
+ title: options.title || options.id,
762
+ params: (options === null || options === void 0 ? void 0 : options.params) || {},
763
+ });
764
+ return panel;
765
+ };
766
+ DockviewComponent.prototype.createContentComponent = function (id, componentName) {
767
+ var _a;
768
+ return (0, componentFactory_1.createComponent)(id, componentName, this.options.components || {}, this.options.frameworkComponents, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.content);
769
+ };
770
+ DockviewComponent.prototype.createTabComponent = function (id, componentName) {
771
+ var _a;
772
+ return (0, componentFactory_1.createComponent)(id, componentName, this.options.tabComponents || {}, this.options.frameworkTabComponents, (_a = this.options.frameworkComponentFactory) === null || _a === void 0 ? void 0 : _a.tab, function () { return new defaultTab_1.DefaultTab(); });
773
+ };
774
+ DockviewComponent.prototype.createGroupAtLocation = function (location) {
775
+ if (location === void 0) { location = [0]; }
776
+ var group = this.createGroup();
777
+ this.doAddGroup(group, location);
778
+ return group;
779
+ };
780
+ DockviewComponent.prototype.findGroup = function (panel) {
781
+ var _a;
782
+ return (_a = Array.from(this._groups.values()).find(function (group) {
783
+ return group.value.model.containsPanel(panel);
784
+ })) === null || _a === void 0 ? void 0 : _a.value;
785
+ };
786
+ DockviewComponent.prototype.dispose = function () {
787
+ _super.prototype.dispose.call(this);
788
+ this._onDidActivePanelChange.dispose();
789
+ this._onDidAddPanel.dispose();
790
+ this._onDidRemovePanel.dispose();
791
+ this._onDidLayoutFromJSON.dispose();
792
+ };
793
+ return DockviewComponent;
794
+ }(baseComponentGridview_1.BaseGrid));
795
+ exports.DockviewComponent = DockviewComponent;
615
796
  //# sourceMappingURL=dockviewComponent.js.map