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,444 +1,462 @@
1
- import { DockviewApi } from '../api/component.api';
2
- import { getPanelData } from '../dnd/dataTransfer';
3
- import { Droptarget, Position } from '../dnd/droptarget';
4
- import { isAncestor, toggleClass } from '../dom';
5
- import { addDisposableListener, Emitter } from '../events';
6
- import { CompositeDisposable } from '../lifecycle';
7
- import { ContentContainer } from './panel/content';
8
- import { TabsContainer } from './titlebar/tabsContainer';
9
- import { DockviewDropTargets } from './dnd';
10
- export class Groupview extends CompositeDisposable {
11
- constructor(container, accessor, id, options, parent) {
12
- super();
13
- this.container = container;
14
- this.accessor = accessor;
15
- this.id = id;
16
- this.options = options;
17
- this.parent = parent;
18
- this._isGroupActive = false;
19
- this._locked = false;
20
- this.mostRecentlyUsed = [];
21
- this._onDidChange = new Emitter();
22
- this.onDidChange = this._onDidChange.event;
23
- this._width = 0;
24
- this._height = 0;
25
- this._panels = [];
26
- this._onMove = new Emitter();
27
- this.onMove = this._onMove.event;
28
- this._onDidDrop = new Emitter();
29
- this.onDidDrop = this._onDidDrop.event;
30
- this._onDidAddPanel = new Emitter();
31
- this.onDidAddPanel = this._onDidAddPanel.event;
32
- this._onDidRemovePanel = new Emitter();
33
- this.onDidRemovePanel = this._onDidRemovePanel.event;
34
- this._onDidActivePanelChange = new Emitter();
35
- this.onDidActivePanelChange = this._onDidActivePanelChange.event;
36
- this.container.classList.add('groupview');
37
- this.tabsContainer = new TabsContainer(this.accessor, this.parent, {
38
- tabHeight: options.tabHeight,
39
- });
40
- this.contentContainer = new ContentContainer();
41
- this.dropTarget = new Droptarget(this.contentContainer.element, {
42
- validOverlays: 'all',
43
- canDisplayOverlay: (event, quadrant) => {
44
- if (this.locked && !quadrant) {
45
- return false;
46
- }
47
- const data = getPanelData();
48
- if (data && data.viewId === this.accessor.id) {
49
- const groupHasOnePanelAndIsActiveDragElement = this._panels.length === 1 && data.groupId === this.id;
50
- return !groupHasOnePanelAndIsActiveDragElement;
51
- }
52
- return this.canDisplayOverlay(event, DockviewDropTargets.Panel);
53
- },
54
- });
55
- container.append(this.tabsContainer.element, this.contentContainer.element);
56
- this.header.hidden = !!options.hideHeader;
57
- this.locked = !!options.locked;
58
- this.addDisposables(this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange, this.tabsContainer.onDrop((event) => {
59
- this.handleDropEvent(event.event, Position.Center, event.index);
60
- }), this.contentContainer.onDidFocus(() => {
61
- this.accessor.doSetGroupActive(this.parent, true);
62
- }), this.contentContainer.onDidBlur(() => {
63
- // noop
64
- }), this.dropTarget.onDrop((event) => {
65
- this.handleDropEvent(event.nativeEvent, event.position);
66
- }));
67
- }
68
- get element() {
69
- throw new Error('not supported');
70
- }
71
- get activePanel() {
72
- return this._activePanel;
73
- }
74
- get locked() {
75
- return this._locked;
76
- }
77
- set locked(value) {
78
- this._locked = value;
79
- }
80
- get isActive() {
81
- return this._isGroupActive;
82
- }
83
- get panels() {
84
- return this._panels;
85
- }
86
- get size() {
87
- return this._panels.length;
88
- }
89
- get isEmpty() {
90
- return this._panels.length === 0;
91
- }
92
- get minimumHeight() {
93
- return 100;
94
- }
95
- get maximumHeight() {
96
- return Number.MAX_SAFE_INTEGER;
97
- }
98
- get minimumWidth() {
99
- return 100;
100
- }
101
- get maximumWidth() {
102
- return Number.MAX_SAFE_INTEGER;
103
- }
104
- get hasWatermark() {
105
- return !!(this.watermark && this.container.contains(this.watermark.element));
106
- }
107
- get header() {
108
- return this.tabsContainer;
109
- }
110
- get isContentFocused() {
111
- if (!document.activeElement) {
112
- return false;
113
- }
114
- return isAncestor(document.activeElement, this.contentContainer.element);
115
- }
116
- initialize() {
117
- var _a, _b;
118
- if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {
119
- this.options.panels.forEach((panel) => {
120
- this.doAddPanel(panel);
121
- });
122
- }
123
- if ((_b = this.options) === null || _b === void 0 ? void 0 : _b.activePanel) {
124
- this.openPanel(this.options.activePanel);
125
- }
126
- // must be run after the constructor otherwise this.parent may not be
127
- // correctly initialized
128
- this.setActive(this.isActive, true, true);
129
- this.updateContainer();
130
- if (this.accessor.options.createGroupControlElement) {
131
- this._control = this.accessor.options.createGroupControlElement(this.parent);
132
- this.addDisposables(this._control);
133
- this._control.init({
134
- containerApi: new DockviewApi(this.accessor),
135
- api: this.parent.api,
136
- });
137
- this.tabsContainer.setActionElement(this._control.element);
138
- }
139
- }
140
- indexOf(panel) {
141
- return this.tabsContainer.indexOf(panel.id);
142
- }
143
- toJSON() {
144
- var _a;
145
- const result = {
146
- views: this.tabsContainer.panels,
147
- activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,
148
- id: this.id,
149
- };
150
- if (this.locked) {
151
- result.locked = true;
152
- }
153
- if (this.header.hidden) {
154
- result.hideHeader = true;
155
- }
156
- return result;
157
- }
158
- moveToNext(options) {
159
- if (!options) {
160
- options = {};
161
- }
162
- if (!options.panel) {
163
- options.panel = this.activePanel;
164
- }
165
- const index = options.panel ? this.panels.indexOf(options.panel) : -1;
166
- let normalizedIndex;
167
- if (index < this.panels.length - 1) {
168
- normalizedIndex = index + 1;
169
- }
170
- else if (!options.suppressRoll) {
171
- normalizedIndex = 0;
172
- }
173
- else {
174
- return;
175
- }
176
- this.openPanel(this.panels[normalizedIndex]);
177
- }
178
- moveToPrevious(options) {
179
- if (!options) {
180
- options = {};
181
- }
182
- if (!options.panel) {
183
- options.panel = this.activePanel;
184
- }
185
- if (!options.panel) {
186
- return;
187
- }
188
- const index = this.panels.indexOf(options.panel);
189
- let normalizedIndex;
190
- if (index > 0) {
191
- normalizedIndex = index - 1;
192
- }
193
- else if (!options.suppressRoll) {
194
- normalizedIndex = this.panels.length - 1;
195
- }
196
- else {
197
- return;
198
- }
199
- this.openPanel(this.panels[normalizedIndex]);
200
- }
201
- containsPanel(panel) {
202
- return this.panels.includes(panel);
203
- }
204
- init(_params) {
205
- //noop
206
- }
207
- update(_params) {
208
- //noop
209
- }
210
- focus() {
211
- var _a;
212
- (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();
213
- }
214
- openPanel(panel, options = {}) {
215
- if (typeof options.index !== 'number' ||
216
- options.index > this.panels.length) {
217
- options.index = this.panels.length;
218
- }
219
- const skipSetPanelActive = !!options.skipSetPanelActive;
220
- const skipSetGroupActive = !!options.skipSetGroupActive;
221
- // ensure the group is updated before we fire any events
222
- panel.updateParentGroup(this.parent, true);
223
- if (this._activePanel === panel) {
224
- if (!skipSetGroupActive) {
225
- this.accessor.doSetGroupActive(this.parent);
226
- }
227
- return;
228
- }
229
- this.doAddPanel(panel, options.index, skipSetPanelActive);
230
- if (!skipSetPanelActive) {
231
- this.doSetActivePanel(panel);
232
- }
233
- if (!skipSetGroupActive) {
234
- this.accessor.doSetGroupActive(this.parent, !!options.skipFocus);
235
- }
236
- this.updateContainer();
237
- }
238
- removePanel(groupItemOrId) {
239
- const id = typeof groupItemOrId === 'string'
240
- ? groupItemOrId
241
- : groupItemOrId.id;
242
- const panelToRemove = this._panels.find((panel) => panel.id === id);
243
- if (!panelToRemove) {
244
- throw new Error('invalid operation');
245
- }
246
- return this._removePanel(panelToRemove);
247
- }
248
- closeAllPanels() {
249
- if (this.panels.length > 0) {
250
- // take a copy since we will be edting the array as we iterate through
251
- const arrPanelCpy = [...this.panels];
252
- for (const panel of arrPanelCpy) {
253
- this.doClose(panel);
254
- }
255
- }
256
- else {
257
- this.accessor.removeGroup(this.parent);
258
- }
259
- }
260
- closePanel(panel) {
261
- this.doClose(panel);
262
- }
263
- doClose(panel) {
264
- this.accessor.removePanel(panel);
265
- }
266
- isPanelActive(panel) {
267
- return this._activePanel === panel;
268
- }
269
- updateActions(element) {
270
- this.tabsContainer.setActionElement(element);
271
- }
272
- setActive(isGroupActive, skipFocus = false, force = false) {
273
- var _a, _b;
274
- if (!force && this.isActive === isGroupActive) {
275
- if (!skipFocus) {
276
- (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();
277
- }
278
- return;
279
- }
280
- this._isGroupActive = isGroupActive;
281
- toggleClass(this.container, 'active-group', isGroupActive);
282
- toggleClass(this.container, 'inactive-group', !isGroupActive);
283
- this.tabsContainer.setActive(this.isActive);
284
- if (!this._activePanel && this.panels.length > 0) {
285
- this.doSetActivePanel(this.panels[0]);
286
- }
287
- this.updateContainer();
288
- if (isGroupActive) {
289
- if (!skipFocus) {
290
- (_b = this._activePanel) === null || _b === void 0 ? void 0 : _b.focus();
291
- }
292
- }
293
- }
294
- layout(width, height) {
295
- var _a;
296
- this._width = width;
297
- this._height = height;
298
- this.contentContainer.layout(this._width, this._height);
299
- if ((_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.layout) {
300
- this._activePanel.layout(this._width, this._height);
301
- }
302
- }
303
- _removePanel(panel) {
304
- const isActivePanel = this._activePanel === panel;
305
- this.doRemovePanel(panel);
306
- if (isActivePanel && this.panels.length > 0) {
307
- const nextPanel = this.mostRecentlyUsed[0];
308
- this.openPanel(nextPanel);
309
- }
310
- if (this._activePanel && this.panels.length === 0) {
311
- this.doSetActivePanel(undefined);
312
- }
313
- this.updateContainer();
314
- return panel;
315
- }
316
- doRemovePanel(panel) {
317
- const index = this.panels.indexOf(panel);
318
- if (this._activePanel === panel) {
319
- this.contentContainer.closePanel();
320
- }
321
- this.tabsContainer.delete(panel.id);
322
- this._panels.splice(index, 1);
323
- if (this.mostRecentlyUsed.includes(panel)) {
324
- this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);
325
- }
326
- this._onDidRemovePanel.fire({ panel });
327
- }
328
- doAddPanel(panel, index = this.panels.length, skipSetActive = false) {
329
- const existingPanel = this._panels.indexOf(panel);
330
- const hasExistingPanel = existingPanel > -1;
331
- this.tabsContainer.openPanel(panel, index);
332
- if (!skipSetActive) {
333
- this.contentContainer.openPanel(panel);
334
- }
335
- this.tabsContainer.show();
336
- this.contentContainer.show();
337
- if (hasExistingPanel) {
338
- // TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels
339
- return;
340
- }
341
- this.updateMru(panel);
342
- this.panels.splice(index, 0, panel);
343
- this._onDidAddPanel.fire({ panel });
344
- }
345
- doSetActivePanel(panel) {
346
- this._activePanel = panel;
347
- if (panel) {
348
- this.tabsContainer.setActivePanel(panel);
349
- panel.layout(this._width, this._height);
350
- this.updateMru(panel);
351
- this._onDidActivePanelChange.fire({ panel });
352
- }
353
- }
354
- updateMru(panel) {
355
- if (this.mostRecentlyUsed.includes(panel)) {
356
- this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);
357
- }
358
- this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];
359
- }
360
- updateContainer() {
361
- toggleClass(this.container, 'empty', this.isEmpty);
362
- this.panels.forEach((panel) => panel.updateParentGroup(this.parent, this.isActive));
363
- if (this.isEmpty && !this.watermark) {
364
- const watermark = this.accessor.createWatermarkComponent();
365
- watermark.init({
366
- containerApi: new DockviewApi(this.accessor),
367
- params: {},
368
- title: '',
369
- api: null,
370
- });
371
- this.watermark = watermark;
372
- addDisposableListener(this.watermark.element, 'click', () => {
373
- if (!this.isActive) {
374
- this.accessor.doSetGroupActive(this.parent);
375
- }
376
- });
377
- this.contentContainer.hide();
378
- this.tabsContainer.hide();
379
- this.container.appendChild(this.watermark.element);
380
- this.watermark.updateParentGroup(this.parent, true);
381
- }
382
- if (!this.isEmpty && this.watermark) {
383
- this.watermark.element.remove();
384
- this.watermark.dispose();
385
- this.watermark = undefined;
386
- this.contentContainer.show();
387
- this.tabsContainer.show();
388
- }
389
- }
390
- canDisplayOverlay(event, target) {
391
- // custom overlay handler
392
- if (this.accessor.options.showDndOverlay) {
393
- return this.accessor.options.showDndOverlay({
394
- nativeEvent: event,
395
- target,
396
- group: this.accessor.getPanel(this.id),
397
- getData: getPanelData,
398
- });
399
- }
400
- return false;
401
- }
402
- handleDropEvent(event, position, index) {
403
- const data = getPanelData();
404
- if (data) {
405
- const fromSameGroup = this.tabsContainer.indexOf(data.panelId) !== -1;
406
- if (fromSameGroup && this.tabsContainer.size === 1) {
407
- return;
408
- }
409
- const { groupId, panelId } = data;
410
- const isSameGroup = this.id === groupId;
411
- if (isSameGroup && !position) {
412
- const oldIndex = this.tabsContainer.indexOf(panelId);
413
- if (oldIndex === index) {
414
- return;
415
- }
416
- }
417
- this._onMove.fire({
418
- target: position,
419
- groupId: data.groupId,
420
- itemId: data.panelId,
421
- index,
422
- });
423
- }
424
- else {
425
- this._onDidDrop.fire({
426
- nativeEvent: event,
427
- position,
428
- index,
429
- getData: () => getPanelData(),
430
- });
431
- }
432
- }
433
- dispose() {
434
- var _a;
435
- super.dispose();
436
- (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.dispose();
437
- for (const panel of this.panels) {
438
- panel.dispose();
439
- }
440
- this.dropTarget.dispose();
441
- this.tabsContainer.dispose();
442
- this.contentContainer.dispose();
443
- }
444
- }
1
+ import { DockviewApi } from '../api/component.api';
2
+ import { getPanelData } from '../dnd/dataTransfer';
3
+ import { Droptarget } from '../dnd/droptarget';
4
+ import { isAncestor, toggleClass } from '../dom';
5
+ import { addDisposableListener, Emitter } from '../events';
6
+ import { CompositeDisposable } from '../lifecycle';
7
+ import { ContentContainer } from './panel/content';
8
+ import { TabsContainer } from './titlebar/tabsContainer';
9
+ import { DockviewDropTargets } from './dnd';
10
+ export class Groupview extends CompositeDisposable {
11
+ get element() {
12
+ throw new Error('not supported');
13
+ }
14
+ get activePanel() {
15
+ return this._activePanel;
16
+ }
17
+ get locked() {
18
+ return this._locked;
19
+ }
20
+ set locked(value) {
21
+ this._locked = value;
22
+ toggleClass(this.container, 'locked-groupview', value);
23
+ }
24
+ get isActive() {
25
+ return this._isGroupActive;
26
+ }
27
+ get panels() {
28
+ return this._panels;
29
+ }
30
+ get size() {
31
+ return this._panels.length;
32
+ }
33
+ get isEmpty() {
34
+ return this._panels.length === 0;
35
+ }
36
+ get minimumHeight() {
37
+ return 100;
38
+ }
39
+ get maximumHeight() {
40
+ return Number.MAX_SAFE_INTEGER;
41
+ }
42
+ get minimumWidth() {
43
+ return 100;
44
+ }
45
+ get maximumWidth() {
46
+ return Number.MAX_SAFE_INTEGER;
47
+ }
48
+ get hasWatermark() {
49
+ return !!(this.watermark && this.container.contains(this.watermark.element));
50
+ }
51
+ get header() {
52
+ return this.tabsContainer;
53
+ }
54
+ get isContentFocused() {
55
+ if (!document.activeElement) {
56
+ return false;
57
+ }
58
+ return isAncestor(document.activeElement, this.contentContainer.element);
59
+ }
60
+ constructor(container, accessor, id, options, groupPanel) {
61
+ super();
62
+ this.container = container;
63
+ this.accessor = accessor;
64
+ this.id = id;
65
+ this.options = options;
66
+ this.groupPanel = groupPanel;
67
+ this._isGroupActive = false;
68
+ this._locked = false;
69
+ this.mostRecentlyUsed = [];
70
+ this._onDidChange = new Emitter();
71
+ this.onDidChange = this._onDidChange.event;
72
+ this._width = 0;
73
+ this._height = 0;
74
+ this._panels = [];
75
+ this._onMove = new Emitter();
76
+ this.onMove = this._onMove.event;
77
+ this._onDidDrop = new Emitter();
78
+ this.onDidDrop = this._onDidDrop.event;
79
+ this._onDidAddPanel = new Emitter();
80
+ this.onDidAddPanel = this._onDidAddPanel.event;
81
+ this._onDidRemovePanel = new Emitter();
82
+ this.onDidRemovePanel = this._onDidRemovePanel.event;
83
+ this._onDidActivePanelChange = new Emitter();
84
+ this.onDidActivePanelChange = this._onDidActivePanelChange.event;
85
+ this.container.classList.add('groupview');
86
+ this.tabsContainer = new TabsContainer(this.accessor, this.groupPanel);
87
+ this.contentContainer = new ContentContainer();
88
+ this.dropTarget = new Droptarget(this.contentContainer.element, {
89
+ acceptedTargetZones: ['top', 'bottom', 'left', 'right', 'center'],
90
+ canDisplayOverlay: (event, position) => {
91
+ if (this.locked && position === 'center') {
92
+ return false;
93
+ }
94
+ const data = getPanelData();
95
+ if (data && data.viewId === this.accessor.id) {
96
+ if (data.groupId === this.id) {
97
+ if (position === 'center') {
98
+ // don't allow to drop on self for center position
99
+ return false;
100
+ }
101
+ if (data.panelId === null) {
102
+ // don't allow group move to drop anywhere on self
103
+ return false;
104
+ }
105
+ }
106
+ const groupHasOnePanelAndIsActiveDragElement = this._panels.length === 1 && data.groupId === this.id;
107
+ return !groupHasOnePanelAndIsActiveDragElement;
108
+ }
109
+ return this.canDisplayOverlay(event, position, DockviewDropTargets.Panel);
110
+ },
111
+ });
112
+ container.append(this.tabsContainer.element, this.contentContainer.element);
113
+ this.header.hidden = !!options.hideHeader;
114
+ this.locked = !!options.locked;
115
+ this.addDisposables(this._onMove, this._onDidChange, this._onDidDrop, this._onDidAddPanel, this._onDidRemovePanel, this._onDidActivePanelChange, this.tabsContainer.onDrop((event) => {
116
+ this.handleDropEvent(event.event, 'center', event.index);
117
+ }), this.contentContainer.onDidFocus(() => {
118
+ this.accessor.doSetGroupActive(this.groupPanel, true);
119
+ }), this.contentContainer.onDidBlur(() => {
120
+ // noop
121
+ }), this.dropTarget.onDrop((event) => {
122
+ this.handleDropEvent(event.nativeEvent, event.position);
123
+ }));
124
+ }
125
+ initialize() {
126
+ var _a, _b;
127
+ if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.panels) {
128
+ this.options.panels.forEach((panel) => {
129
+ this.doAddPanel(panel);
130
+ });
131
+ }
132
+ if ((_b = this.options) === null || _b === void 0 ? void 0 : _b.activePanel) {
133
+ this.openPanel(this.options.activePanel);
134
+ }
135
+ // must be run after the constructor otherwise this.parent may not be
136
+ // correctly initialized
137
+ this.setActive(this.isActive, true, true);
138
+ this.updateContainer();
139
+ if (this.accessor.options.createGroupControlElement) {
140
+ this._control = this.accessor.options.createGroupControlElement(this.groupPanel);
141
+ this.addDisposables(this._control);
142
+ this._control.init({
143
+ containerApi: new DockviewApi(this.accessor),
144
+ api: this.groupPanel.api,
145
+ });
146
+ this.tabsContainer.setActionElement(this._control.element);
147
+ }
148
+ }
149
+ indexOf(panel) {
150
+ return this.tabsContainer.indexOf(panel.id);
151
+ }
152
+ toJSON() {
153
+ var _a;
154
+ const result = {
155
+ views: this.tabsContainer.panels,
156
+ activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,
157
+ id: this.id,
158
+ };
159
+ if (this.locked) {
160
+ result.locked = true;
161
+ }
162
+ if (this.header.hidden) {
163
+ result.hideHeader = true;
164
+ }
165
+ return result;
166
+ }
167
+ moveToNext(options) {
168
+ if (!options) {
169
+ options = {};
170
+ }
171
+ if (!options.panel) {
172
+ options.panel = this.activePanel;
173
+ }
174
+ const index = options.panel ? this.panels.indexOf(options.panel) : -1;
175
+ let normalizedIndex;
176
+ if (index < this.panels.length - 1) {
177
+ normalizedIndex = index + 1;
178
+ }
179
+ else if (!options.suppressRoll) {
180
+ normalizedIndex = 0;
181
+ }
182
+ else {
183
+ return;
184
+ }
185
+ this.openPanel(this.panels[normalizedIndex]);
186
+ }
187
+ moveToPrevious(options) {
188
+ if (!options) {
189
+ options = {};
190
+ }
191
+ if (!options.panel) {
192
+ options.panel = this.activePanel;
193
+ }
194
+ if (!options.panel) {
195
+ return;
196
+ }
197
+ const index = this.panels.indexOf(options.panel);
198
+ let normalizedIndex;
199
+ if (index > 0) {
200
+ normalizedIndex = index - 1;
201
+ }
202
+ else if (!options.suppressRoll) {
203
+ normalizedIndex = this.panels.length - 1;
204
+ }
205
+ else {
206
+ return;
207
+ }
208
+ this.openPanel(this.panels[normalizedIndex]);
209
+ }
210
+ containsPanel(panel) {
211
+ return this.panels.includes(panel);
212
+ }
213
+ init(_params) {
214
+ //noop
215
+ }
216
+ update(_params) {
217
+ //noop
218
+ }
219
+ focus() {
220
+ var _a;
221
+ (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();
222
+ }
223
+ openPanel(panel, options = {}) {
224
+ if (typeof options.index !== 'number' ||
225
+ options.index > this.panels.length) {
226
+ options.index = this.panels.length;
227
+ }
228
+ const skipSetPanelActive = !!options.skipSetPanelActive;
229
+ const skipSetGroupActive = !!options.skipSetGroupActive;
230
+ // ensure the group is updated before we fire any events
231
+ panel.updateParentGroup(this.groupPanel, true);
232
+ if (this._activePanel === panel) {
233
+ if (!skipSetGroupActive) {
234
+ this.accessor.doSetGroupActive(this.groupPanel);
235
+ }
236
+ return;
237
+ }
238
+ this.doAddPanel(panel, options.index, skipSetPanelActive);
239
+ if (!skipSetPanelActive) {
240
+ this.doSetActivePanel(panel);
241
+ }
242
+ if (!skipSetGroupActive) {
243
+ this.accessor.doSetGroupActive(this.groupPanel, !!options.skipFocus);
244
+ }
245
+ this.updateContainer();
246
+ }
247
+ removePanel(groupItemOrId) {
248
+ const id = typeof groupItemOrId === 'string'
249
+ ? groupItemOrId
250
+ : groupItemOrId.id;
251
+ const panelToRemove = this._panels.find((panel) => panel.id === id);
252
+ if (!panelToRemove) {
253
+ throw new Error('invalid operation');
254
+ }
255
+ return this._removePanel(panelToRemove);
256
+ }
257
+ closeAllPanels() {
258
+ if (this.panels.length > 0) {
259
+ // take a copy since we will be edting the array as we iterate through
260
+ const arrPanelCpy = [...this.panels];
261
+ for (const panel of arrPanelCpy) {
262
+ this.doClose(panel);
263
+ }
264
+ }
265
+ else {
266
+ this.accessor.removeGroup(this.groupPanel);
267
+ }
268
+ }
269
+ closePanel(panel) {
270
+ this.doClose(panel);
271
+ }
272
+ doClose(panel) {
273
+ this.accessor.removePanel(panel);
274
+ }
275
+ isPanelActive(panel) {
276
+ return this._activePanel === panel;
277
+ }
278
+ updateActions(element) {
279
+ this.tabsContainer.setActionElement(element);
280
+ }
281
+ setActive(isGroupActive, skipFocus = false, force = false) {
282
+ var _a, _b;
283
+ if (!force && this.isActive === isGroupActive) {
284
+ if (!skipFocus) {
285
+ (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();
286
+ }
287
+ return;
288
+ }
289
+ this._isGroupActive = isGroupActive;
290
+ toggleClass(this.container, 'active-group', isGroupActive);
291
+ toggleClass(this.container, 'inactive-group', !isGroupActive);
292
+ this.tabsContainer.setActive(this.isActive);
293
+ if (!this._activePanel && this.panels.length > 0) {
294
+ this.doSetActivePanel(this.panels[0]);
295
+ }
296
+ this.updateContainer();
297
+ if (isGroupActive) {
298
+ if (!skipFocus) {
299
+ (_b = this._activePanel) === null || _b === void 0 ? void 0 : _b.focus();
300
+ }
301
+ }
302
+ }
303
+ layout(width, height) {
304
+ var _a;
305
+ this._width = width;
306
+ this._height = height;
307
+ this.contentContainer.layout(this._width, this._height);
308
+ if ((_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.layout) {
309
+ this._activePanel.layout(this._width, this._height);
310
+ }
311
+ }
312
+ _removePanel(panel) {
313
+ const isActivePanel = this._activePanel === panel;
314
+ this.doRemovePanel(panel);
315
+ if (isActivePanel && this.panels.length > 0) {
316
+ const nextPanel = this.mostRecentlyUsed[0];
317
+ this.openPanel(nextPanel);
318
+ }
319
+ if (this._activePanel && this.panels.length === 0) {
320
+ this.doSetActivePanel(undefined);
321
+ }
322
+ this.updateContainer();
323
+ return panel;
324
+ }
325
+ doRemovePanel(panel) {
326
+ const index = this.panels.indexOf(panel);
327
+ if (this._activePanel === panel) {
328
+ this.contentContainer.closePanel();
329
+ }
330
+ this.tabsContainer.delete(panel.id);
331
+ this._panels.splice(index, 1);
332
+ if (this.mostRecentlyUsed.includes(panel)) {
333
+ this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);
334
+ }
335
+ this._onDidRemovePanel.fire({ panel });
336
+ }
337
+ doAddPanel(panel, index = this.panels.length, skipSetActive = false) {
338
+ const existingPanel = this._panels.indexOf(panel);
339
+ const hasExistingPanel = existingPanel > -1;
340
+ this.tabsContainer.openPanel(panel, index);
341
+ if (!skipSetActive) {
342
+ this.contentContainer.openPanel(panel);
343
+ }
344
+ this.tabsContainer.show();
345
+ this.contentContainer.show();
346
+ if (hasExistingPanel) {
347
+ // TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels
348
+ return;
349
+ }
350
+ this.updateMru(panel);
351
+ this.panels.splice(index, 0, panel);
352
+ this._onDidAddPanel.fire({ panel });
353
+ }
354
+ doSetActivePanel(panel) {
355
+ this._activePanel = panel;
356
+ if (panel) {
357
+ this.tabsContainer.setActivePanel(panel);
358
+ panel.layout(this._width, this._height);
359
+ this.updateMru(panel);
360
+ this._onDidActivePanelChange.fire({ panel });
361
+ }
362
+ }
363
+ updateMru(panel) {
364
+ if (this.mostRecentlyUsed.includes(panel)) {
365
+ this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);
366
+ }
367
+ this.mostRecentlyUsed = [panel, ...this.mostRecentlyUsed];
368
+ }
369
+ updateContainer() {
370
+ toggleClass(this.container, 'empty', this.isEmpty);
371
+ this.panels.forEach((panel) => panel.updateParentGroup(this.groupPanel, this.isActive));
372
+ if (this.isEmpty && !this.watermark) {
373
+ const watermark = this.accessor.createWatermarkComponent();
374
+ watermark.init({
375
+ containerApi: new DockviewApi(this.accessor),
376
+ params: {},
377
+ title: '',
378
+ api: null,
379
+ });
380
+ this.watermark = watermark;
381
+ addDisposableListener(this.watermark.element, 'click', () => {
382
+ if (!this.isActive) {
383
+ this.accessor.doSetGroupActive(this.groupPanel);
384
+ }
385
+ });
386
+ this.tabsContainer.hide();
387
+ this.contentContainer.element.appendChild(this.watermark.element);
388
+ this.watermark.updateParentGroup(this.groupPanel, true);
389
+ }
390
+ if (!this.isEmpty && this.watermark) {
391
+ this.watermark.element.remove();
392
+ this.watermark.dispose();
393
+ this.watermark = undefined;
394
+ this.tabsContainer.show();
395
+ }
396
+ }
397
+ canDisplayOverlay(event, position, target) {
398
+ // custom overlay handler
399
+ if (this.accessor.options.showDndOverlay) {
400
+ return this.accessor.options.showDndOverlay({
401
+ nativeEvent: event,
402
+ target,
403
+ group: this.accessor.getPanel(this.id),
404
+ position,
405
+ getData: getPanelData,
406
+ });
407
+ }
408
+ return false;
409
+ }
410
+ handleDropEvent(event, position, index) {
411
+ const data = getPanelData();
412
+ if (data && data.viewId === this.accessor.id) {
413
+ if (data.panelId === null) {
414
+ // this is a group move dnd event
415
+ const { groupId } = data;
416
+ this._onMove.fire({
417
+ target: position,
418
+ groupId: groupId,
419
+ index,
420
+ });
421
+ return;
422
+ }
423
+ const fromSameGroup = this.tabsContainer.indexOf(data.panelId) !== -1;
424
+ if (fromSameGroup && this.tabsContainer.size === 1) {
425
+ return;
426
+ }
427
+ const { groupId, panelId } = data;
428
+ const isSameGroup = this.id === groupId;
429
+ if (isSameGroup && !position) {
430
+ const oldIndex = this.tabsContainer.indexOf(panelId);
431
+ if (oldIndex === index) {
432
+ return;
433
+ }
434
+ }
435
+ this._onMove.fire({
436
+ target: position,
437
+ groupId: data.groupId,
438
+ itemId: data.panelId,
439
+ index,
440
+ });
441
+ }
442
+ else {
443
+ this._onDidDrop.fire({
444
+ nativeEvent: event,
445
+ position,
446
+ index,
447
+ getData: () => getPanelData(),
448
+ });
449
+ }
450
+ }
451
+ dispose() {
452
+ var _a;
453
+ super.dispose();
454
+ (_a = this.watermark) === null || _a === void 0 ? void 0 : _a.dispose();
455
+ for (const panel of this.panels) {
456
+ panel.dispose();
457
+ }
458
+ this.dropTarget.dispose();
459
+ this.tabsContainer.dispose();
460
+ this.contentContainer.dispose();
461
+ }
462
+ }