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