dockview-core 1.8.4 → 1.8.5

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