dockview-core 1.8.4 → 1.9.0

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