dockview-core 7.0.3 → 8.0.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 (374) hide show
  1. package/LICENCE.md +21 -0
  2. package/README.md +17 -86
  3. package/dist/cjs/api/component.api.d.ts +100 -9
  4. package/dist/cjs/api/dockviewGroupPanelApi.d.ts +45 -1
  5. package/dist/cjs/api/dockviewPanelApi.d.ts +21 -0
  6. package/dist/cjs/dismissableLayer.d.ts +57 -0
  7. package/dist/cjs/dnd/backend.d.ts +2 -2
  8. package/dist/cjs/dnd/dropTargetAnchorContainer.d.ts +12 -0
  9. package/dist/cjs/dnd/droptarget.d.ts +94 -0
  10. package/dist/cjs/dnd/ghost.d.ts +1 -0
  11. package/dist/cjs/dnd/pointer/longPress.d.ts +2 -2
  12. package/dist/cjs/dnd/pointer/pointerDragController.d.ts +5 -2
  13. package/dist/cjs/dnd/pointer/pointerDragSource.d.ts +1 -1
  14. package/dist/cjs/dnd/pointer/pointerDropTarget.d.ts +30 -1
  15. package/dist/cjs/dnd/pointer/pointerGhost.d.ts +1 -1
  16. package/dist/cjs/dockview/accessibilityMessages.d.ts +6 -0
  17. package/dist/cjs/dockview/advancedDnDService.d.ts +46 -0
  18. package/dist/cjs/dockview/components/panel/content.d.ts +1 -1
  19. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +2 -0
  20. package/dist/cjs/dockview/components/tab/tab.d.ts +2 -0
  21. package/dist/cjs/dockview/components/titlebar/floatingTitleBar.d.ts +2 -2
  22. package/dist/cjs/dockview/components/titlebar/groupDragSource.d.ts +1 -1
  23. package/dist/cjs/dockview/components/titlebar/tabGroupChip.d.ts +1 -1
  24. package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.d.ts +73 -2
  25. package/dist/cjs/dockview/components/titlebar/tabGroups.d.ts +1 -1
  26. package/dist/cjs/dockview/components/titlebar/tabReorderController.d.ts +295 -0
  27. package/dist/cjs/dockview/components/titlebar/tabs.d.ts +120 -50
  28. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +48 -0
  29. package/dist/cjs/dockview/dndCapabilities.d.ts +1 -1
  30. package/dist/cjs/dockview/dockviewComponent.d.ts +303 -19
  31. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +5 -0
  32. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +52 -2
  33. package/dist/cjs/dockview/dockviewPanel.d.ts +12 -0
  34. package/dist/cjs/dockview/dockviewShell.d.ts +48 -24
  35. package/dist/cjs/dockview/edgeGroupService.d.ts +20 -0
  36. package/dist/cjs/dockview/events.d.ts +6 -0
  37. package/dist/cjs/dockview/liveRegionService.d.ts +18 -5
  38. package/dist/cjs/dockview/moduleContracts.d.ts +480 -14
  39. package/dist/cjs/dockview/modules.d.ts +101 -22
  40. package/dist/cjs/dockview/options.d.ts +337 -30
  41. package/dist/cjs/dockview/optionsModules.d.ts +73 -0
  42. package/dist/cjs/dockview/popoutWindowService.d.ts +15 -10
  43. package/dist/cjs/dockview/rootDropTargetService.d.ts +11 -0
  44. package/dist/cjs/dockview/tabGroupAccent.d.ts +1 -1
  45. package/dist/cjs/dockview/tabGroupChipsService.d.ts +10 -0
  46. package/dist/cjs/dockview/theme.d.ts +2 -2
  47. package/dist/cjs/dockview/types.d.ts +3 -0
  48. package/dist/cjs/dom.d.ts +9 -1
  49. package/dist/cjs/gridview/baseComponentGridview.d.ts +2 -2
  50. package/dist/cjs/gridview/gridview.d.ts +2 -0
  51. package/dist/cjs/index.d.ts +35 -29
  52. package/dist/cjs/lifecycle.d.ts +1 -0
  53. package/dist/cjs/overlay/overlay.d.ts +4 -2
  54. package/dist/cjs/overlay/overlayRenderContainer.d.ts +8 -0
  55. package/dist/cjs/paneview/paneview.d.ts +2 -1
  56. package/dist/cjs/paneview/paneviewComponent.d.ts +3 -0
  57. package/dist/cjs/paneview/paneviewPanel.d.ts +5 -0
  58. package/dist/cjs/svg.d.ts +1 -0
  59. package/dist/cjs/types.d.ts +8 -0
  60. package/dist/dockview-core.js +18391 -19679
  61. package/dist/dockview-core.min.js +4138 -6
  62. package/dist/dockview-core.min.noStyle.js +6 -7
  63. package/dist/dockview-core.noStyle.js +18390 -19656
  64. package/dist/package/main.cjs.js +18002 -19268
  65. package/dist/package/main.cjs.min.js +6 -6
  66. package/dist/package/main.esm.min.mjs +6 -6
  67. package/dist/package/main.esm.mjs +17959 -19260
  68. package/package.json +81 -77
  69. package/dist/cjs/api/component.api.js +0 -1242
  70. package/dist/cjs/api/dockviewGroupPanelApi.js +0 -200
  71. package/dist/cjs/api/dockviewPanelApi.js +0 -172
  72. package/dist/cjs/api/entryPoints.js +0 -27
  73. package/dist/cjs/api/gridviewPanelApi.js +0 -45
  74. package/dist/cjs/api/panelApi.js +0 -133
  75. package/dist/cjs/api/paneviewPanelApi.js +0 -57
  76. package/dist/cjs/api/splitviewPanelApi.js +0 -47
  77. package/dist/cjs/array.js +0 -66
  78. package/dist/cjs/constants.js +0 -11
  79. package/dist/cjs/dnd/backend.js +0 -171
  80. package/dist/cjs/dnd/dataTransfer.js +0 -100
  81. package/dist/cjs/dnd/dnd.js +0 -74
  82. package/dist/cjs/dnd/dropOverlay.js +0 -197
  83. package/dist/cjs/dnd/dropTargetAnchorContainer.js +0 -104
  84. package/dist/cjs/dnd/droptarget.js +0 -362
  85. package/dist/cjs/dnd/ghost.js +0 -17
  86. package/dist/cjs/dnd/pointer/index.js +0 -13
  87. package/dist/cjs/dnd/pointer/longPress.js +0 -151
  88. package/dist/cjs/dnd/pointer/pointerDragController.js +0 -243
  89. package/dist/cjs/dnd/pointer/pointerDragSource.js +0 -197
  90. package/dist/cjs/dnd/pointer/pointerDropTarget.js +0 -198
  91. package/dist/cjs/dnd/pointer/pointerGhost.js +0 -44
  92. package/dist/cjs/dnd/pointer/types.js +0 -2
  93. package/dist/cjs/dockview/accessibilityMessages.js +0 -51
  94. package/dist/cjs/dockview/allModules.js +0 -25
  95. package/dist/cjs/dockview/components/panel/content.js +0 -213
  96. package/dist/cjs/dockview/components/popupService.js +0 -132
  97. package/dist/cjs/dockview/components/tab/defaultTab.js +0 -70
  98. package/dist/cjs/dockview/components/tab/tab.js +0 -281
  99. package/dist/cjs/dockview/components/titlebar/floatingTitleBar.js +0 -95
  100. package/dist/cjs/dockview/components/titlebar/groupDragSource.js +0 -218
  101. package/dist/cjs/dockview/components/titlebar/tabGroupChip.js +0 -104
  102. package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.js +0 -477
  103. package/dist/cjs/dockview/components/titlebar/tabGroups.js +0 -854
  104. package/dist/cjs/dockview/components/titlebar/tabOverflowControl.js +0 -19
  105. package/dist/cjs/dockview/components/titlebar/tabs.js +0 -2016
  106. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +0 -458
  107. package/dist/cjs/dockview/components/titlebar/voidContainer.js +0 -120
  108. package/dist/cjs/dockview/components/watermark/watermark.js +0 -40
  109. package/dist/cjs/dockview/deserializer.js +0 -39
  110. package/dist/cjs/dockview/dndCapabilities.js +0 -39
  111. package/dist/cjs/dockview/dockviewComponent.js +0 -3896
  112. package/dist/cjs/dockview/dockviewFloatingGroupPanel.js +0 -70
  113. package/dist/cjs/dockview/dockviewGroupPanel.js +0 -204
  114. package/dist/cjs/dockview/dockviewGroupPanelModel.js +0 -1514
  115. package/dist/cjs/dockview/dockviewPanel.js +0 -265
  116. package/dist/cjs/dockview/dockviewPanelModel.js +0 -105
  117. package/dist/cjs/dockview/dockviewShell.js +0 -744
  118. package/dist/cjs/dockview/edgeGroupService.js +0 -128
  119. package/dist/cjs/dockview/events.js +0 -67
  120. package/dist/cjs/dockview/floatingGroupService.js +0 -231
  121. package/dist/cjs/dockview/framework.js +0 -2
  122. package/dist/cjs/dockview/headerActionsService.js +0 -149
  123. package/dist/cjs/dockview/liveRegionService.js +0 -185
  124. package/dist/cjs/dockview/moduleContracts.js +0 -2
  125. package/dist/cjs/dockview/modules.js +0 -304
  126. package/dist/cjs/dockview/options.js +0 -103
  127. package/dist/cjs/dockview/popoutWindowService.js +0 -261
  128. package/dist/cjs/dockview/rootDropTargetService.js +0 -87
  129. package/dist/cjs/dockview/strictEventsSequencing.js +0 -63
  130. package/dist/cjs/dockview/tabGroup.js +0 -219
  131. package/dist/cjs/dockview/tabGroupAccent.js +0 -126
  132. package/dist/cjs/dockview/theme.js +0 -139
  133. package/dist/cjs/dockview/types.js +0 -2
  134. package/dist/cjs/dockview/validate.js +0 -76
  135. package/dist/cjs/dockview/watermarkService.js +0 -61
  136. package/dist/cjs/dom.js +0 -543
  137. package/dist/cjs/events.js +0 -296
  138. package/dist/cjs/framwork.js +0 -2
  139. package/dist/cjs/gridview/baseComponentGridview.js +0 -330
  140. package/dist/cjs/gridview/basePanelView.js +0 -162
  141. package/dist/cjs/gridview/branchNode.js +0 -372
  142. package/dist/cjs/gridview/gridview.js +0 -776
  143. package/dist/cjs/gridview/gridviewComponent.js +0 -363
  144. package/dist/cjs/gridview/gridviewPanel.js +0 -249
  145. package/dist/cjs/gridview/leafNode.js +0 -169
  146. package/dist/cjs/gridview/options.js +0 -17
  147. package/dist/cjs/gridview/types.js +0 -2
  148. package/dist/cjs/index.js +0 -105
  149. package/dist/cjs/lifecycle.js +0 -80
  150. package/dist/cjs/math.js +0 -38
  151. package/dist/cjs/overlay/overlay.js +0 -602
  152. package/dist/cjs/overlay/overlayRenderContainer.js +0 -309
  153. package/dist/cjs/panel/types.js +0 -2
  154. package/dist/cjs/paneview/defaultPaneviewHeader.js +0 -92
  155. package/dist/cjs/paneview/draggablePaneviewPanel.js +0 -141
  156. package/dist/cjs/paneview/options.js +0 -44
  157. package/dist/cjs/paneview/paneview.js +0 -203
  158. package/dist/cjs/paneview/paneviewComponent.js +0 -430
  159. package/dist/cjs/paneview/paneviewPanel.js +0 -275
  160. package/dist/cjs/popoutWindow.js +0 -244
  161. package/dist/cjs/resizable.js +0 -97
  162. package/dist/cjs/scrollbar.js +0 -169
  163. package/dist/cjs/splitview/options.js +0 -19
  164. package/dist/cjs/splitview/splitview.js +0 -999
  165. package/dist/cjs/splitview/splitviewComponent.js +0 -401
  166. package/dist/cjs/splitview/splitviewPanel.js +0 -179
  167. package/dist/cjs/splitview/viewItem.js +0 -119
  168. package/dist/cjs/svg.js +0 -43
  169. package/dist/cjs/types.js +0 -2
  170. package/dist/dockview-core.min.js.map +0 -1
  171. package/dist/dockview-core.min.noStyle.js.map +0 -1
  172. package/dist/esm/api/component.api.d.ts +0 -640
  173. package/dist/esm/api/component.api.js +0 -887
  174. package/dist/esm/api/dockviewGroupPanelApi.d.ts +0 -109
  175. package/dist/esm/api/dockviewGroupPanelApi.js +0 -155
  176. package/dist/esm/api/dockviewPanelApi.d.ts +0 -84
  177. package/dist/esm/api/dockviewPanelApi.js +0 -124
  178. package/dist/esm/api/entryPoints.d.ts +0 -9
  179. package/dist/esm/api/entryPoints.js +0 -21
  180. package/dist/esm/api/gridviewPanelApi.d.ts +0 -37
  181. package/dist/esm/api/gridviewPanelApi.js +0 -23
  182. package/dist/esm/api/panelApi.d.ts +0 -100
  183. package/dist/esm/api/panelApi.js +0 -87
  184. package/dist/esm/api/paneviewPanelApi.d.ts +0 -26
  185. package/dist/esm/api/paneviewPanelApi.js +0 -27
  186. package/dist/esm/api/splitviewPanelApi.d.ts +0 -32
  187. package/dist/esm/api/splitviewPanelApi.js +0 -25
  188. package/dist/esm/array.d.ts +0 -13
  189. package/dist/esm/array.js +0 -57
  190. package/dist/esm/constants.d.ts +0 -8
  191. package/dist/esm/constants.js +0 -8
  192. package/dist/esm/dnd/backend.d.ts +0 -70
  193. package/dist/esm/dnd/backend.js +0 -148
  194. package/dist/esm/dnd/dataTransfer.d.ts +0 -31
  195. package/dist/esm/dnd/dataTransfer.js +0 -67
  196. package/dist/esm/dnd/dnd.d.ts +0 -32
  197. package/dist/esm/dnd/dnd.js +0 -51
  198. package/dist/esm/dnd/dropOverlay.d.ts +0 -20
  199. package/dist/esm/dnd/dropOverlay.js +0 -192
  200. package/dist/esm/dnd/dropTargetAnchorContainer.d.ts +0 -16
  201. package/dist/esm/dnd/dropTargetAnchorContainer.js +0 -73
  202. package/dist/esm/dnd/droptarget.d.ts +0 -116
  203. package/dist/esm/dnd/droptarget.js +0 -316
  204. package/dist/esm/dnd/ghost.d.ts +0 -4
  205. package/dist/esm/dnd/ghost.js +0 -14
  206. package/dist/esm/dnd/pointer/index.d.ts +0 -11
  207. package/dist/esm/dnd/pointer/index.js +0 -5
  208. package/dist/esm/dnd/pointer/longPress.d.ts +0 -32
  209. package/dist/esm/dnd/pointer/longPress.js +0 -127
  210. package/dist/esm/dnd/pointer/pointerDragController.d.ts +0 -60
  211. package/dist/esm/dnd/pointer/pointerDragController.js +0 -193
  212. package/dist/esm/dnd/pointer/pointerDragSource.d.ts +0 -61
  213. package/dist/esm/dnd/pointer/pointerDragSource.js +0 -173
  214. package/dist/esm/dnd/pointer/pointerDropTarget.d.ts +0 -39
  215. package/dist/esm/dnd/pointer/pointerDropTarget.js +0 -168
  216. package/dist/esm/dnd/pointer/pointerGhost.d.ts +0 -30
  217. package/dist/esm/dnd/pointer/pointerGhost.js +0 -39
  218. package/dist/esm/dnd/pointer/types.d.ts +0 -16
  219. package/dist/esm/dnd/pointer/types.js +0 -1
  220. package/dist/esm/dockview/accessibilityMessages.d.ts +0 -32
  221. package/dist/esm/dockview/accessibilityMessages.js +0 -30
  222. package/dist/esm/dockview/allModules.d.ts +0 -8
  223. package/dist/esm/dockview/allModules.js +0 -22
  224. package/dist/esm/dockview/components/panel/content.d.ts +0 -54
  225. package/dist/esm/dockview/components/panel/content.js +0 -185
  226. package/dist/esm/dockview/components/popupService.d.ts +0 -21
  227. package/dist/esm/dockview/components/popupService.js +0 -108
  228. package/dist/esm/dockview/components/tab/defaultTab.d.ts +0 -12
  229. package/dist/esm/dockview/components/tab/defaultTab.js +0 -43
  230. package/dist/esm/dockview/components/tab/tab.d.ts +0 -44
  231. package/dist/esm/dockview/components/tab/tab.js +0 -242
  232. package/dist/esm/dockview/components/titlebar/floatingTitleBar.d.ts +0 -34
  233. package/dist/esm/dockview/components/titlebar/floatingTitleBar.js +0 -65
  234. package/dist/esm/dockview/components/titlebar/groupDragSource.d.ts +0 -51
  235. package/dist/esm/dockview/components/titlebar/groupDragSource.js +0 -178
  236. package/dist/esm/dockview/components/titlebar/tabGroupChip.d.ts +0 -37
  237. package/dist/esm/dockview/components/titlebar/tabGroupChip.js +0 -77
  238. package/dist/esm/dockview/components/titlebar/tabGroupIndicator.d.ts +0 -72
  239. package/dist/esm/dockview/components/titlebar/tabGroupIndicator.js +0 -360
  240. package/dist/esm/dockview/components/titlebar/tabGroups.d.ts +0 -107
  241. package/dist/esm/dockview/components/titlebar/tabGroups.js +0 -621
  242. package/dist/esm/dockview/components/titlebar/tabOverflowControl.d.ts +0 -8
  243. package/dist/esm/dockview/components/titlebar/tabOverflowControl.js +0 -16
  244. package/dist/esm/dockview/components/titlebar/tabs.d.ts +0 -167
  245. package/dist/esm/dockview/components/titlebar/tabs.js +0 -1653
  246. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +0 -104
  247. package/dist/esm/dockview/components/titlebar/tabsContainer.js +0 -359
  248. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +0 -21
  249. package/dist/esm/dockview/components/titlebar/voidContainer.js +0 -92
  250. package/dist/esm/dockview/components/watermark/watermark.d.ts +0 -8
  251. package/dist/esm/dockview/components/watermark/watermark.js +0 -14
  252. package/dist/esm/dockview/deserializer.d.ts +0 -12
  253. package/dist/esm/dockview/deserializer.js +0 -34
  254. package/dist/esm/dockview/dndCapabilities.d.ts +0 -19
  255. package/dist/esm/dockview/dndCapabilities.js +0 -36
  256. package/dist/esm/dockview/dockviewComponent.d.ts +0 -626
  257. package/dist/esm/dockview/dockviewComponent.js +0 -3214
  258. package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts +0 -45
  259. package/dist/esm/dockview/dockviewFloatingGroupPanel.js +0 -44
  260. package/dist/esm/dockview/dockviewGroupPanel.d.ts +0 -35
  261. package/dist/esm/dockview/dockviewGroupPanel.js +0 -142
  262. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +0 -358
  263. package/dist/esm/dockview/dockviewGroupPanelModel.js +0 -1180
  264. package/dist/esm/dockview/dockviewPanel.d.ts +0 -69
  265. package/dist/esm/dockview/dockviewPanel.js +0 -178
  266. package/dist/esm/dockview/dockviewPanelModel.d.ts +0 -37
  267. package/dist/esm/dockview/dockviewPanelModel.js +0 -81
  268. package/dist/esm/dockview/dockviewShell.d.ts +0 -150
  269. package/dist/esm/dockview/dockviewShell.js +0 -678
  270. package/dist/esm/dockview/edgeGroupService.d.ts +0 -38
  271. package/dist/esm/dockview/edgeGroupService.js +0 -63
  272. package/dist/esm/dockview/events.d.ts +0 -38
  273. package/dist/esm/dockview/events.js +0 -34
  274. package/dist/esm/dockview/floatingGroupService.d.ts +0 -37
  275. package/dist/esm/dockview/floatingGroupService.js +0 -150
  276. package/dist/esm/dockview/framework.d.ts +0 -65
  277. package/dist/esm/dockview/framework.js +0 -1
  278. package/dist/esm/dockview/headerActionsService.d.ts +0 -32
  279. package/dist/esm/dockview/headerActionsService.js +0 -86
  280. package/dist/esm/dockview/liveRegionService.d.ts +0 -53
  281. package/dist/esm/dockview/liveRegionService.js +0 -159
  282. package/dist/esm/dockview/moduleContracts.d.ts +0 -119
  283. package/dist/esm/dockview/moduleContracts.js +0 -1
  284. package/dist/esm/dockview/modules.d.ts +0 -110
  285. package/dist/esm/dockview/modules.js +0 -170
  286. package/dist/esm/dockview/options.d.ts +0 -474
  287. package/dist/esm/dockview/options.js +0 -77
  288. package/dist/esm/dockview/popoutWindowService.d.ts +0 -95
  289. package/dist/esm/dockview/popoutWindowService.js +0 -175
  290. package/dist/esm/dockview/rootDropTargetService.d.ts +0 -35
  291. package/dist/esm/dockview/rootDropTargetService.js +0 -82
  292. package/dist/esm/dockview/strictEventsSequencing.d.ts +0 -7
  293. package/dist/esm/dockview/strictEventsSequencing.js +0 -41
  294. package/dist/esm/dockview/tabGroup.d.ts +0 -99
  295. package/dist/esm/dockview/tabGroup.js +0 -144
  296. package/dist/esm/dockview/tabGroupAccent.d.ts +0 -65
  297. package/dist/esm/dockview/tabGroupAccent.js +0 -114
  298. package/dist/esm/dockview/theme.d.ts +0 -86
  299. package/dist/esm/dockview/theme.js +0 -136
  300. package/dist/esm/dockview/types.d.ts +0 -53
  301. package/dist/esm/dockview/types.js +0 -1
  302. package/dist/esm/dockview/validate.d.ts +0 -0
  303. package/dist/esm/dockview/validate.js +0 -76
  304. package/dist/esm/dockview/watermarkService.d.ts +0 -30
  305. package/dist/esm/dockview/watermarkService.js +0 -56
  306. package/dist/esm/dom.d.ts +0 -60
  307. package/dist/esm/dom.js +0 -375
  308. package/dist/esm/events.d.ts +0 -79
  309. package/dist/esm/events.js +0 -219
  310. package/dist/esm/framwork.d.ts +0 -4
  311. package/dist/esm/framwork.js +0 -1
  312. package/dist/esm/gridview/baseComponentGridview.d.ts +0 -111
  313. package/dist/esm/gridview/baseComponentGridview.js +0 -237
  314. package/dist/esm/gridview/basePanelView.d.ts +0 -40
  315. package/dist/esm/gridview/basePanelView.js +0 -91
  316. package/dist/esm/gridview/branchNode.d.ts +0 -57
  317. package/dist/esm/gridview/branchNode.js +0 -257
  318. package/dist/esm/gridview/gridview.d.ts +0 -158
  319. package/dist/esm/gridview/gridview.js +0 -681
  320. package/dist/esm/gridview/gridviewComponent.d.ts +0 -88
  321. package/dist/esm/gridview/gridviewComponent.js +0 -265
  322. package/dist/esm/gridview/gridviewPanel.d.ts +0 -77
  323. package/dist/esm/gridview/gridviewPanel.js +0 -182
  324. package/dist/esm/gridview/leafNode.d.ts +0 -34
  325. package/dist/esm/gridview/leafNode.js +0 -102
  326. package/dist/esm/gridview/options.d.ts +0 -15
  327. package/dist/esm/gridview/options.js +0 -14
  328. package/dist/esm/gridview/types.d.ts +0 -3
  329. package/dist/esm/gridview/types.js +0 -1
  330. package/dist/esm/index.d.ts +0 -58
  331. package/dist/esm/index.js +0 -44
  332. package/dist/esm/lifecycle.d.ts +0 -25
  333. package/dist/esm/lifecycle.js +0 -56
  334. package/dist/esm/math.d.ts +0 -5
  335. package/dist/esm/math.js +0 -32
  336. package/dist/esm/overlay/overlay.d.ts +0 -91
  337. package/dist/esm/overlay/overlay.js +0 -520
  338. package/dist/esm/overlay/overlayRenderContainer.d.ts +0 -24
  339. package/dist/esm/overlay/overlayRenderContainer.js +0 -249
  340. package/dist/esm/panel/types.d.ts +0 -33
  341. package/dist/esm/panel/types.js +0 -1
  342. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +0 -21
  343. package/dist/esm/paneview/defaultPaneviewHeader.js +0 -65
  344. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +0 -38
  345. package/dist/esm/paneview/draggablePaneviewPanel.js +0 -107
  346. package/dist/esm/paneview/options.d.ts +0 -30
  347. package/dist/esm/paneview/options.js +0 -22
  348. package/dist/esm/paneview/paneview.d.ts +0 -41
  349. package/dist/esm/paneview/paneview.js +0 -148
  350. package/dist/esm/paneview/paneviewComponent.d.ts +0 -133
  351. package/dist/esm/paneview/paneviewComponent.js +0 -306
  352. package/dist/esm/paneview/paneviewPanel.d.ts +0 -98
  353. package/dist/esm/paneview/paneviewPanel.js +0 -192
  354. package/dist/esm/popoutWindow.d.ts +0 -38
  355. package/dist/esm/popoutWindow.js +0 -170
  356. package/dist/esm/resizable.d.ts +0 -12
  357. package/dist/esm/resizable.js +0 -66
  358. package/dist/esm/scrollbar.d.ts +0 -15
  359. package/dist/esm/scrollbar.js +0 -139
  360. package/dist/esm/splitview/options.d.ts +0 -21
  361. package/dist/esm/splitview/options.js +0 -16
  362. package/dist/esm/splitview/splitview.d.ts +0 -145
  363. package/dist/esm/splitview/splitview.js +0 -770
  364. package/dist/esm/splitview/splitviewComponent.d.ts +0 -101
  365. package/dist/esm/splitview/splitviewComponent.js +0 -267
  366. package/dist/esm/splitview/splitviewPanel.d.ts +0 -45
  367. package/dist/esm/splitview/splitviewPanel.js +0 -108
  368. package/dist/esm/splitview/viewItem.d.ts +0 -25
  369. package/dist/esm/splitview/viewItem.js +0 -74
  370. package/dist/esm/svg.d.ts +0 -3
  371. package/dist/esm/svg.js +0 -31
  372. package/dist/esm/types.d.ts +0 -31
  373. package/dist/esm/types.js +0 -1
  374. package/dist/styles/dockview.css +0 -3436
@@ -1,1514 +0,0 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __values = (this && this.__values) || function(o) {
18
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
19
- if (m) return m.call(o);
20
- if (o && typeof o.length === "number") return {
21
- next: function () {
22
- if (o && i >= o.length) o = void 0;
23
- return { value: o && o[i++], done: !o };
24
- }
25
- };
26
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
27
- };
28
- var __read = (this && this.__read) || function (o, n) {
29
- var m = typeof Symbol === "function" && o[Symbol.iterator];
30
- if (!m) return o;
31
- var i = m.call(o), r, ar = [], e;
32
- try {
33
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
34
- }
35
- catch (error) { e = { error: error }; }
36
- finally {
37
- try {
38
- if (r && !r.done && (m = i["return"])) m.call(i);
39
- }
40
- finally { if (e) throw e.error; }
41
- }
42
- return ar;
43
- };
44
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
45
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
46
- if (ar || !(i in from)) {
47
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
48
- ar[i] = from[i];
49
- }
50
- }
51
- return to.concat(ar || Array.prototype.slice.call(from));
52
- };
53
- Object.defineProperty(exports, "__esModule", { value: true });
54
- exports.DockviewGroupPanelModel = exports.DockviewWillDropEvent = exports.DockviewDidDropEvent = void 0;
55
- var component_api_1 = require("../api/component.api");
56
- var dataTransfer_1 = require("../dnd/dataTransfer");
57
- var dom_1 = require("../dom");
58
- var events_1 = require("../events");
59
- var events_2 = require("./events");
60
- var lifecycle_1 = require("../lifecycle");
61
- var content_1 = require("./components/panel/content");
62
- var tabsContainer_1 = require("./components/titlebar/tabsContainer");
63
- var options_1 = require("./options");
64
- var tabGroup_1 = require("./tabGroup");
65
- var DockviewDidDropEvent = /** @class */ (function (_super) {
66
- __extends(DockviewDidDropEvent, _super);
67
- function DockviewDidDropEvent(options) {
68
- var _this = _super.call(this) || this;
69
- _this.options = options;
70
- return _this;
71
- }
72
- Object.defineProperty(DockviewDidDropEvent.prototype, "nativeEvent", {
73
- /**
74
- * `PointerEvent` for touch drags has no `dataTransfer`; use
75
- * `getData()` for the dockview payload regardless of input method.
76
- */
77
- get: function () {
78
- return this.options.nativeEvent;
79
- },
80
- enumerable: false,
81
- configurable: true
82
- });
83
- Object.defineProperty(DockviewDidDropEvent.prototype, "position", {
84
- get: function () {
85
- return this.options.position;
86
- },
87
- enumerable: false,
88
- configurable: true
89
- });
90
- Object.defineProperty(DockviewDidDropEvent.prototype, "panel", {
91
- get: function () {
92
- return this.options.panel;
93
- },
94
- enumerable: false,
95
- configurable: true
96
- });
97
- Object.defineProperty(DockviewDidDropEvent.prototype, "group", {
98
- get: function () {
99
- return this.options.group;
100
- },
101
- enumerable: false,
102
- configurable: true
103
- });
104
- Object.defineProperty(DockviewDidDropEvent.prototype, "api", {
105
- get: function () {
106
- return this.options.api;
107
- },
108
- enumerable: false,
109
- configurable: true
110
- });
111
- DockviewDidDropEvent.prototype.getData = function () {
112
- return this.options.getData();
113
- };
114
- return DockviewDidDropEvent;
115
- }(events_1.DockviewEvent));
116
- exports.DockviewDidDropEvent = DockviewDidDropEvent;
117
- var DockviewWillDropEvent = /** @class */ (function (_super) {
118
- __extends(DockviewWillDropEvent, _super);
119
- function DockviewWillDropEvent(options) {
120
- var _this = _super.call(this, options) || this;
121
- _this._kind = options.kind;
122
- return _this;
123
- }
124
- Object.defineProperty(DockviewWillDropEvent.prototype, "kind", {
125
- get: function () {
126
- return this._kind;
127
- },
128
- enumerable: false,
129
- configurable: true
130
- });
131
- return DockviewWillDropEvent;
132
- }(DockviewDidDropEvent));
133
- exports.DockviewWillDropEvent = DockviewWillDropEvent;
134
- var DockviewGroupPanelModel = /** @class */ (function (_super) {
135
- __extends(DockviewGroupPanelModel, _super);
136
- function DockviewGroupPanelModel(container, accessor, id, options, groupPanel) {
137
- var _a, _b;
138
- var _this = _super.call(this) || this;
139
- _this.container = container;
140
- _this.accessor = accessor;
141
- _this.id = id;
142
- _this.options = options;
143
- _this.groupPanel = groupPanel;
144
- _this._isGroupActive = false;
145
- _this._locked = false;
146
- _this._location = { type: 'grid' };
147
- _this.mostRecentlyUsed = [];
148
- _this._overwriteRenderContainer = null;
149
- _this._overwriteDropTargetContainer = null;
150
- _this._onDidChange = new events_1.Emitter();
151
- _this.onDidChange = _this._onDidChange.event;
152
- _this._width = 0;
153
- _this._height = 0;
154
- _this._panels = [];
155
- _this._panelDisposables = new Map();
156
- _this._tabGroupDisposables = new Map();
157
- _this._pendingMicrotaskDisposables = new Set();
158
- _this._onMove = new events_1.Emitter();
159
- _this.onMove = _this._onMove.event;
160
- _this._onDidDrop = new events_1.Emitter();
161
- _this.onDidDrop = _this._onDidDrop.event;
162
- _this._onWillDrop = new events_1.Emitter();
163
- _this.onWillDrop = _this._onWillDrop.event;
164
- _this._onWillShowOverlay = new events_1.Emitter();
165
- _this.onWillShowOverlay = _this._onWillShowOverlay.event;
166
- _this._onTabDragStart = new events_1.Emitter();
167
- _this.onTabDragStart = _this._onTabDragStart.event;
168
- _this._onGroupDragStart = new events_1.Emitter();
169
- _this.onGroupDragStart = _this._onGroupDragStart.event;
170
- _this._onDidAddPanel = new events_1.Emitter();
171
- _this.onDidAddPanel = _this._onDidAddPanel.event;
172
- _this._onDidPanelTitleChange = new events_1.Emitter();
173
- _this.onDidPanelTitleChange = _this._onDidPanelTitleChange.event;
174
- _this._onDidPanelParametersChange = new events_1.Emitter();
175
- _this.onDidPanelParametersChange = _this._onDidPanelParametersChange.event;
176
- _this._onDidRemovePanel = new events_1.Emitter();
177
- _this.onDidRemovePanel = _this._onDidRemovePanel.event;
178
- _this._onDidActivePanelChange = new events_1.Emitter();
179
- _this.onDidActivePanelChange = _this._onDidActivePanelChange.event;
180
- _this._onUnhandledDragOver = new events_1.Emitter();
181
- _this.onUnhandledDragOver = _this._onUnhandledDragOver.event;
182
- _this._tabGroups = [];
183
- _this._tabGroupMap = new Map();
184
- _this._panelToTabGroup = new Map();
185
- _this._tabGroupIdCounter = 0;
186
- _this._pendingTabGroupUpdate = false;
187
- _this._onDidCreateTabGroup = new events_1.Emitter();
188
- _this.onDidCreateTabGroup = _this._onDidCreateTabGroup.event;
189
- _this._onDidDestroyTabGroup = new events_1.Emitter();
190
- _this.onDidDestroyTabGroup = _this._onDidDestroyTabGroup.event;
191
- _this._onDidAddPanelToTabGroup = new events_1.Emitter();
192
- _this.onDidAddPanelToTabGroup = _this._onDidAddPanelToTabGroup.event;
193
- _this._onDidRemovePanelFromTabGroup = new events_1.Emitter();
194
- _this.onDidRemovePanelFromTabGroup = _this._onDidRemovePanelFromTabGroup.event;
195
- _this._onDidTabGroupChange = new events_1.Emitter();
196
- _this.onDidTabGroupChange = _this._onDidTabGroupChange.event;
197
- _this._onDidTabGroupCollapsedChange = new events_1.Emitter();
198
- _this.onDidTabGroupCollapsedChange = _this._onDidTabGroupCollapsedChange.event;
199
- (0, dom_1.toggleClass)(_this.container, 'dv-groupview', true);
200
- // Each group is a navigable region, labelled by its active panel
201
- // (see `updateAccessibleLabel`, driven on activation / title change).
202
- _this.container.setAttribute('role', 'region');
203
- _this._api = new component_api_1.DockviewApi(_this.accessor);
204
- _this.tabsContainer = new tabsContainer_1.TabsContainer(_this.accessor, _this.groupPanel);
205
- _this.contentContainer = new content_1.ContentContainer(_this.accessor, _this);
206
- container.append(_this.tabsContainer.element, _this.contentContainer.element);
207
- _this.header.hidden = !!options.hideHeader;
208
- _this.locked = (_a = options.locked) !== null && _a !== void 0 ? _a : false;
209
- _this.headerPosition =
210
- (_b = options.headerPosition) !== null && _b !== void 0 ? _b : accessor.defaultHeaderPosition;
211
- _this.addDisposables(
212
- // Keep the region's accessible name in sync when the active
213
- // panel's title changes (no-op when a non-active title changes).
214
- _this._onDidPanelTitleChange.event(function () {
215
- return _this.updateAccessibleLabel();
216
- }), _this._onTabDragStart, _this._onGroupDragStart, _this._onWillShowOverlay, _this.tabsContainer.onTabDragStart(function (event) {
217
- _this._onTabDragStart.fire(event);
218
- }), _this.tabsContainer.onGroupDragStart(function (event) {
219
- _this._onGroupDragStart.fire(event);
220
- }), _this.tabsContainer.onDrop(function (event) {
221
- var e_1, _a;
222
- var _b;
223
- // Capture panel data before handleDropEvent (which may trigger moves)
224
- var dragData = (0, dataTransfer_1.getPanelData)();
225
- var draggedPanelId = (_b = dragData === null || dragData === void 0 ? void 0 : dragData.panelId) !== null && _b !== void 0 ? _b : null;
226
- _this.handleDropEvent('header', event.event, 'center', event.index);
227
- // Update tab group membership after the move completes
228
- if (draggedPanelId && event.targetTabGroupId) {
229
- // Compute the local index within the target tab group
230
- // from the global panel index so the panel is inserted
231
- // at the correct position, not just appended.
232
- var tabGroup = _this._tabGroupMap.get(event.targetTabGroupId);
233
- var localIndex = void 0;
234
- if (tabGroup) {
235
- var globalIdx = _this._panels.findIndex(function (p) { return p.id === draggedPanelId; });
236
- if (globalIdx !== -1) {
237
- // Count how many of this group's panels
238
- // appear before the dragged panel
239
- localIndex = 0;
240
- var _loop_1 = function (pid) {
241
- var pidIdx = _this._panels.findIndex(function (p) { return p.id === pid; });
242
- if (pidIdx < globalIdx) {
243
- localIndex++;
244
- }
245
- };
246
- try {
247
- for (var _c = __values(tabGroup.panelIds), _d = _c.next(); !_d.done; _d = _c.next()) {
248
- var pid = _d.value;
249
- _loop_1(pid);
250
- }
251
- }
252
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
253
- finally {
254
- try {
255
- if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
256
- }
257
- finally { if (e_1) throw e_1.error; }
258
- }
259
- }
260
- }
261
- _this.addPanelToTabGroup(event.targetTabGroupId, draggedPanelId, localIndex);
262
- }
263
- else if (draggedPanelId && event.targetTabGroupId === null) {
264
- // Dropped outside any group — remove from current group
265
- _this.removePanelFromTabGroup(draggedPanelId);
266
- }
267
- }), _this.contentContainer.onDidFocus(function () {
268
- _this.accessor.doSetGroupActive(_this.groupPanel);
269
- }), _this.contentContainer.onDidBlur(function () {
270
- // noop
271
- }), _this.contentContainer.dropTarget.onDrop(function (event) {
272
- _this.handleDropEvent('content', event.nativeEvent, event.position);
273
- }), _this.contentContainer.pointerDropTarget.onDrop(function (event) {
274
- _this.handleDropEvent('content', event.nativeEvent, event.position);
275
- }), _this.tabsContainer.onWillShowOverlay(function (event) {
276
- _this._onWillShowOverlay.fire(event);
277
- }), _this.contentContainer.dropTarget.onWillShowOverlay(function (event) {
278
- _this._onWillShowOverlay.fire(new events_2.DockviewWillShowOverlayLocationEvent(event, {
279
- kind: 'content',
280
- panel: _this.activePanel,
281
- api: _this._api,
282
- group: _this.groupPanel,
283
- getData: dataTransfer_1.getPanelData,
284
- }));
285
- }), _this.contentContainer.pointerDropTarget.onWillShowOverlay(function (event) {
286
- _this._onWillShowOverlay.fire(new events_2.DockviewWillShowOverlayLocationEvent(event, {
287
- kind: 'content',
288
- panel: _this.activePanel,
289
- api: _this._api,
290
- group: _this.groupPanel,
291
- getData: dataTransfer_1.getPanelData,
292
- }));
293
- }), _this._onMove, _this._onDidChange, _this._onDidDrop, _this._onWillDrop, _this._onDidAddPanel, _this._onDidRemovePanel, _this._onDidActivePanelChange, _this._onUnhandledDragOver, _this._onDidPanelTitleChange, _this._onDidPanelParametersChange, _this._onDidCreateTabGroup, _this._onDidDestroyTabGroup, _this._onDidAddPanelToTabGroup, _this._onDidRemovePanelFromTabGroup, _this._onDidTabGroupChange, _this._onDidTabGroupCollapsedChange, _this._onDidCreateTabGroup.event(function () {
294
- _this._scheduleTabGroupUpdate();
295
- }), _this._onDidDestroyTabGroup.event(function () {
296
- _this._scheduleTabGroupUpdate();
297
- }), _this._onDidAddPanelToTabGroup.event(function () {
298
- _this._scheduleTabGroupUpdate();
299
- }), _this._onDidRemovePanelFromTabGroup.event(function () {
300
- _this._scheduleTabGroupUpdate();
301
- }), _this._onDidTabGroupChange.event(function () {
302
- _this._scheduleTabGroupUpdate();
303
- }), _this._onDidTabGroupCollapsedChange.event(function () {
304
- _this._scheduleTabGroupUpdate();
305
- }));
306
- return _this;
307
- }
308
- Object.defineProperty(DockviewGroupPanelModel.prototype, "tabGroups", {
309
- get: function () {
310
- return this._tabGroups;
311
- },
312
- enumerable: false,
313
- configurable: true
314
- });
315
- Object.defineProperty(DockviewGroupPanelModel.prototype, "element", {
316
- get: function () {
317
- throw new Error('dockview: not supported');
318
- },
319
- enumerable: false,
320
- configurable: true
321
- });
322
- Object.defineProperty(DockviewGroupPanelModel.prototype, "activePanel", {
323
- get: function () {
324
- return this._activePanel;
325
- },
326
- enumerable: false,
327
- configurable: true
328
- });
329
- Object.defineProperty(DockviewGroupPanelModel.prototype, "contentContainerId", {
330
- /** DOM id of the content container (the group's tabpanel), referenced by each tab's `aria-controls`. */
331
- get: function () {
332
- return this.contentContainer.element.id;
333
- },
334
- enumerable: false,
335
- configurable: true
336
- });
337
- Object.defineProperty(DockviewGroupPanelModel.prototype, "contentDropTarget", {
338
- /** The group's content drop target — lets keyboard docking preview a drop here. */
339
- get: function () {
340
- return this.contentContainer.dropTarget;
341
- },
342
- enumerable: false,
343
- configurable: true
344
- });
345
- Object.defineProperty(DockviewGroupPanelModel.prototype, "locked", {
346
- get: function () {
347
- return this._locked;
348
- },
349
- set: function (value) {
350
- this._locked = value;
351
- (0, dom_1.toggleClass)(this.container, 'dv-locked-groupview', value === 'no-drop-target' || value);
352
- },
353
- enumerable: false,
354
- configurable: true
355
- });
356
- Object.defineProperty(DockviewGroupPanelModel.prototype, "isActive", {
357
- get: function () {
358
- return this._isGroupActive;
359
- },
360
- enumerable: false,
361
- configurable: true
362
- });
363
- Object.defineProperty(DockviewGroupPanelModel.prototype, "panels", {
364
- get: function () {
365
- return this._panels;
366
- },
367
- enumerable: false,
368
- configurable: true
369
- });
370
- Object.defineProperty(DockviewGroupPanelModel.prototype, "size", {
371
- get: function () {
372
- return this._panels.length;
373
- },
374
- enumerable: false,
375
- configurable: true
376
- });
377
- Object.defineProperty(DockviewGroupPanelModel.prototype, "isEmpty", {
378
- get: function () {
379
- return this._panels.length === 0;
380
- },
381
- enumerable: false,
382
- configurable: true
383
- });
384
- Object.defineProperty(DockviewGroupPanelModel.prototype, "hasWatermark", {
385
- get: function () {
386
- return !!(this.watermark && this.container.contains(this.watermark.element));
387
- },
388
- enumerable: false,
389
- configurable: true
390
- });
391
- Object.defineProperty(DockviewGroupPanelModel.prototype, "header", {
392
- get: function () {
393
- return this.tabsContainer;
394
- },
395
- enumerable: false,
396
- configurable: true
397
- });
398
- Object.defineProperty(DockviewGroupPanelModel.prototype, "isContentFocused", {
399
- get: function () {
400
- if (!document.activeElement) {
401
- return false;
402
- }
403
- return (0, dom_1.isAncestor)(document.activeElement, this.contentContainer.element);
404
- },
405
- enumerable: false,
406
- configurable: true
407
- });
408
- Object.defineProperty(DockviewGroupPanelModel.prototype, "headerPosition", {
409
- get: function () {
410
- var _a;
411
- return (_a = this._headerPosition) !== null && _a !== void 0 ? _a : 'top';
412
- },
413
- set: function (value) {
414
- var _a;
415
- this._headerPosition = value;
416
- (0, dom_1.removeClasses)(this.container, 'dv-groupview-header-top', 'dv-groupview-header-bottom', 'dv-groupview-header-left', 'dv-groupview-header-right');
417
- (0, dom_1.addClasses)(this.container, "dv-groupview-header-".concat(value));
418
- var direction = value === 'top' || value === 'bottom' ? 'horizontal' : 'vertical';
419
- this.tabsContainer.direction = direction;
420
- this.header.direction = direction;
421
- // resize the active panel to fit the new header direction
422
- // if not, the panel will overflow the tabs container
423
- if ((_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.layout) {
424
- this._activePanel.layout(this._width, this._height);
425
- }
426
- this.updateHeaderActions();
427
- },
428
- enumerable: false,
429
- configurable: true
430
- });
431
- Object.defineProperty(DockviewGroupPanelModel.prototype, "location", {
432
- get: function () {
433
- return this._location;
434
- },
435
- set: function (value) {
436
- var _this = this;
437
- this._location = value;
438
- (0, dom_1.toggleClass)(this.container, 'dv-groupview-floating', false);
439
- (0, dom_1.toggleClass)(this.container, 'dv-groupview-popout', false);
440
- (0, dom_1.toggleClass)(this.container, 'dv-groupview-edge', false);
441
- // Mouse and touch drop targets must agree on accepted zones.
442
- var applyZones = function (zones) {
443
- _this.contentContainer.dropTarget.setTargetZones(zones);
444
- _this.contentContainer.pointerDropTarget.setTargetZones(zones);
445
- };
446
- switch (value.type) {
447
- case 'grid':
448
- applyZones(['top', 'bottom', 'left', 'right', 'center']);
449
- break;
450
- case 'floating':
451
- // Floating windows host their own nested gridview, so an edge
452
- // drop splits the window's layout just like the main grid.
453
- applyZones(['top', 'bottom', 'left', 'right', 'center']);
454
- (0, dom_1.toggleClass)(this.container, 'dv-groupview-floating', true);
455
- break;
456
- case 'popout':
457
- // Popout windows host their own nested gridview, so an edge
458
- // drop splits the window's layout just like the main grid.
459
- applyZones(['top', 'bottom', 'left', 'right', 'center']);
460
- (0, dom_1.toggleClass)(this.container, 'dv-groupview-popout', true);
461
- break;
462
- case 'edge':
463
- applyZones(['center']);
464
- (0, dom_1.toggleClass)(this.container, 'dv-groupview-edge', true);
465
- break;
466
- }
467
- this.groupPanel.api._onDidLocationChange.fire({
468
- location: this.location,
469
- });
470
- },
471
- enumerable: false,
472
- configurable: true
473
- });
474
- DockviewGroupPanelModel.prototype._scheduleTabGroupUpdate = function () {
475
- var _this = this;
476
- if (this._pendingTabGroupUpdate) {
477
- return;
478
- }
479
- this._pendingTabGroupUpdate = true;
480
- queueMicrotask(function () {
481
- _this._pendingTabGroupUpdate = false;
482
- if (!_this.isDisposed) {
483
- _this.tabsContainer.updateTabGroups();
484
- }
485
- });
486
- };
487
- /**
488
- * Bracket a tab-group mutation as a layout transaction. `accessor` is
489
- * always a full {@link DockviewComponent} in production; the optional-call
490
- * fallback keeps partial test doubles (which omit `mutation`) working.
491
- * When nested inside a larger operation (a drag-driven move, fromJSON
492
- * restore) the component's depth counter folds it into the outer one.
493
- */
494
- DockviewGroupPanelModel.prototype._bracketTabGroupMutation = function (func) {
495
- return this.accessor.mutation
496
- ? this.accessor.mutation('tab-group', func)
497
- : func();
498
- };
499
- DockviewGroupPanelModel.prototype.createTabGroup = function (options) {
500
- var _this = this;
501
- return this._bracketTabGroupMutation(function () {
502
- return _this._doCreateTabGroup(options);
503
- });
504
- };
505
- DockviewGroupPanelModel.prototype._doCreateTabGroup = function (options) {
506
- var _this = this;
507
- var _a;
508
- var id = (_a = options === null || options === void 0 ? void 0 : options.id) !== null && _a !== void 0 ? _a : "tg-".concat(this.id, "-").concat(this._tabGroupIdCounter++);
509
- var tabGroup = new tabGroup_1.TabGroup(id, {
510
- label: options === null || options === void 0 ? void 0 : options.label,
511
- color: options === null || options === void 0 ? void 0 : options.color,
512
- collapsed: options === null || options === void 0 ? void 0 : options.collapsed,
513
- componentParams: options === null || options === void 0 ? void 0 : options.componentParams,
514
- });
515
- this._tabGroups.push(tabGroup);
516
- this._tabGroupMap.set(id, tabGroup);
517
- this._tabGroupDisposables.set(id, new lifecycle_1.CompositeDisposable(tabGroup.onDidChange(function () {
518
- _this._onDidTabGroupChange.fire({ tabGroup: tabGroup });
519
- }), tabGroup.onDidCollapseChange(function (isCollapsed) {
520
- if (isCollapsed) {
521
- _this._handleGroupCollapse(tabGroup);
522
- }
523
- else {
524
- _this._handleGroupExpand(tabGroup);
525
- }
526
- _this._onDidTabGroupCollapsedChange.fire({
527
- tabGroup: tabGroup,
528
- });
529
- }), tabGroup.onDidDestroy(function () {
530
- _this._removeTabGroupInternal(tabGroup);
531
- })));
532
- this._onDidCreateTabGroup.fire({ tabGroup: tabGroup });
533
- return tabGroup;
534
- };
535
- DockviewGroupPanelModel.prototype.dissolveTabGroup = function (tabGroupId) {
536
- var _this = this;
537
- var tabGroup = this._tabGroupMap.get(tabGroupId);
538
- if (!tabGroup) {
539
- return;
540
- }
541
- this._bracketTabGroupMutation(function () {
542
- var e_2, _a;
543
- // Remove all panels from the group (they stay in the flat panel list)
544
- var panelIds = __spreadArray([], __read(tabGroup.panelIds), false);
545
- try {
546
- for (var panelIds_1 = __values(panelIds), panelIds_1_1 = panelIds_1.next(); !panelIds_1_1.done; panelIds_1_1 = panelIds_1.next()) {
547
- var panelId = panelIds_1_1.value;
548
- tabGroup.removePanel(panelId);
549
- _this._panelToTabGroup.delete(panelId);
550
- _this._onDidRemovePanelFromTabGroup.fire({ tabGroup: tabGroup, panelId: panelId });
551
- }
552
- }
553
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
554
- finally {
555
- try {
556
- if (panelIds_1_1 && !panelIds_1_1.done && (_a = panelIds_1.return)) _a.call(panelIds_1);
557
- }
558
- finally { if (e_2) throw e_2.error; }
559
- }
560
- tabGroup.dispose();
561
- });
562
- };
563
- DockviewGroupPanelModel.prototype.addPanelToTabGroup = function (tabGroupId, panelId, index) {
564
- var _this = this;
565
- var tabGroup = this._tabGroupMap.get(tabGroupId);
566
- if (!tabGroup) {
567
- return;
568
- }
569
- // Ensure the panel actually exists in this group model
570
- if (!this._panels.some(function (p) { return p.id === panelId; })) {
571
- return;
572
- }
573
- // Remove from any existing group first
574
- var existingGroup = this.getTabGroupForPanel(panelId);
575
- if ((existingGroup === null || existingGroup === void 0 ? void 0 : existingGroup.id) === tabGroupId) {
576
- return; // already in this group — no mutation
577
- }
578
- this._bracketTabGroupMutation(function () {
579
- if (existingGroup) {
580
- _this.removePanelFromTabGroup(panelId);
581
- }
582
- tabGroup.addPanel(panelId, index);
583
- _this._panelToTabGroup.set(panelId, tabGroup);
584
- // Enforce contiguity: move the panel in the flat _panels array
585
- // to the correct global position matching its group-local index
586
- _this._enforceContiguity(tabGroup, panelId);
587
- _this._onDidAddPanelToTabGroup.fire({ tabGroup: tabGroup, panelId: panelId });
588
- });
589
- };
590
- /**
591
- * Move a panel to a new index within its tab group.
592
- * Updates both the group's panelIds order and the flat _panels array.
593
- */
594
- DockviewGroupPanelModel.prototype.movePanelWithinGroup = function (tabGroupId, panelId, newIndex) {
595
- var tabGroup = this._tabGroupMap.get(tabGroupId);
596
- if (!(tabGroup === null || tabGroup === void 0 ? void 0 : tabGroup.containsPanel(panelId))) {
597
- return;
598
- }
599
- // Remove and re-add at new index within the group
600
- tabGroup.removePanel(panelId);
601
- tabGroup.addPanel(panelId, newIndex);
602
- // Re-enforce contiguity in the flat array
603
- this._enforceContiguity(tabGroup, panelId);
604
- this.tabsContainer.updateTabGroups();
605
- };
606
- /**
607
- * Move a panel from one tab group to another.
608
- */
609
- DockviewGroupPanelModel.prototype.movePanelBetweenGroups = function (sourcePanelId, targetTabGroupId, targetIndex) {
610
- var sourceGroup = this._findTabGroupForPanel(sourcePanelId);
611
- var targetGroup = this._tabGroupMap.get(targetTabGroupId);
612
- if (!targetGroup) {
613
- return;
614
- }
615
- if (sourceGroup) {
616
- sourceGroup.removePanel(sourcePanelId);
617
- this._panelToTabGroup.delete(sourcePanelId);
618
- this._onDidRemovePanelFromTabGroup.fire({
619
- tabGroup: sourceGroup,
620
- panelId: sourcePanelId,
621
- });
622
- // Auto-destroy empty source group
623
- if (sourceGroup.isEmpty) {
624
- sourceGroup.dispose();
625
- }
626
- }
627
- targetGroup.addPanel(sourcePanelId, targetIndex);
628
- this._panelToTabGroup.set(sourcePanelId, targetGroup);
629
- this._enforceContiguity(targetGroup, sourcePanelId);
630
- this._onDidAddPanelToTabGroup.fire({
631
- tabGroup: targetGroup,
632
- panelId: sourcePanelId,
633
- });
634
- };
635
- /**
636
- * Move an entire tab group to a new position in the tab bar.
637
- * The group's internal panel order is preserved.
638
- */
639
- DockviewGroupPanelModel.prototype.moveTabGroup = function (tabGroupId, targetIndex) {
640
- var e_3, _a, _b, e_4, _c;
641
- var _this = this;
642
- var tabGroup = this._tabGroupMap.get(tabGroupId);
643
- if (!tabGroup || tabGroup.panelIds.length === 0) {
644
- return;
645
- }
646
- // Collect group panels in their current order
647
- var groupPanelIds = new Set(tabGroup.panelIds);
648
- var groupPanels = tabGroup.panelIds
649
- .map(function (pid) { return _this._panels.find(function (p) { return p.id === pid; }); })
650
- .filter(function (p) { return p !== undefined; });
651
- if (groupPanels.length === 0) {
652
- return;
653
- }
654
- // Count how many group panels sit before the target index so
655
- // we can compensate after removing them from the array.
656
- var groupPanelsBefore = 0;
657
- for (var i = 0; i < Math.min(targetIndex, this._panels.length); i++) {
658
- if (groupPanelIds.has(this._panels[i].id)) {
659
- groupPanelsBefore++;
660
- }
661
- }
662
- try {
663
- // Remove group panels from the flat array
664
- for (var groupPanels_1 = __values(groupPanels), groupPanels_1_1 = groupPanels_1.next(); !groupPanels_1_1.done; groupPanels_1_1 = groupPanels_1.next()) {
665
- var panel = groupPanels_1_1.value;
666
- var idx = this._panels.indexOf(panel);
667
- if (idx !== -1) {
668
- this._panels.splice(idx, 1);
669
- }
670
- }
671
- }
672
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
673
- finally {
674
- try {
675
- if (groupPanels_1_1 && !groupPanels_1_1.done && (_a = groupPanels_1.return)) _a.call(groupPanels_1);
676
- }
677
- finally { if (e_3) throw e_3.error; }
678
- }
679
- // Adjust target index to account for removed panels
680
- var adjustedIndex = targetIndex - groupPanelsBefore;
681
- // Clamp target index to valid range after removal
682
- var insertAt = Math.max(0, Math.min(adjustedIndex, this._panels.length));
683
- // Insert group panels at the target position
684
- (_b = this._panels).splice.apply(_b, __spreadArray([insertAt, 0], __read(groupPanels), false));
685
- try {
686
- // Rebuild the tabs container to match new order
687
- for (var _d = __values(this._panels), _e = _d.next(); !_e.done; _e = _d.next()) {
688
- var panel = _e.value;
689
- this.tabsContainer.delete(panel.id);
690
- }
691
- }
692
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
693
- finally {
694
- try {
695
- if (_e && !_e.done && (_c = _d.return)) _c.call(_d);
696
- }
697
- finally { if (e_4) throw e_4.error; }
698
- }
699
- for (var i = 0; i < this._panels.length; i++) {
700
- this.tabsContainer.openPanel(this._panels[i], i);
701
- }
702
- this.tabsContainer.updateTabGroups();
703
- };
704
- /**
705
- * Ensure a panel is at the correct global index in _panels
706
- * to maintain contiguity of its tab group members.
707
- */
708
- DockviewGroupPanelModel.prototype._enforceContiguity = function (tabGroup, panelId) {
709
- var panel = this._panels.find(function (p) { return p.id === panelId; });
710
- if (!panel) {
711
- return;
712
- }
713
- var localIndex = tabGroup.indexOfPanel(panelId);
714
- var globalIndex = this._computeGlobalIndex(tabGroup, localIndex);
715
- var currentIndex = this._panels.indexOf(panel);
716
- if (currentIndex === globalIndex) {
717
- return;
718
- }
719
- // Move panel in the flat array
720
- this._panels.splice(currentIndex, 1);
721
- var adjustedIndex = globalIndex > currentIndex ? globalIndex - 1 : globalIndex;
722
- this._panels.splice(adjustedIndex, 0, panel);
723
- // Reorder in the tabs container to match
724
- this.tabsContainer.delete(panelId);
725
- this.tabsContainer.openPanel(panel, adjustedIndex);
726
- };
727
- /**
728
- * Compute the global index in _panels for a group-local index.
729
- * Finds where the group's panels start in the flat array and offsets.
730
- */
731
- DockviewGroupPanelModel.prototype._computeGlobalIndex = function (tabGroup, localIndex) {
732
- var groupPanelIds = tabGroup.panelIds;
733
- if (groupPanelIds.length <= 1) {
734
- // Only one panel (the one being added), keep current position
735
- var panel = this._panels.find(function (p) { return p.id === groupPanelIds[0]; });
736
- return panel ? this._panels.indexOf(panel) : this._panels.length;
737
- }
738
- var _loop_2 = function (i) {
739
- if (i === localIndex) {
740
- return "continue";
741
- }
742
- var existingPanel = this_1._panels.find(function (p) { return p.id === groupPanelIds[i]; });
743
- if (existingPanel) {
744
- var existingGlobalIndex = this_1._panels.indexOf(existingPanel);
745
- return { value: Math.max(0, existingGlobalIndex + (localIndex - i)) };
746
- }
747
- };
748
- var this_1 = this;
749
- // Find the first existing group member (other than the one at localIndex)
750
- // to anchor the group position
751
- for (var i = 0; i < groupPanelIds.length; i++) {
752
- var state_1 = _loop_2(i);
753
- if (typeof state_1 === "object")
754
- return state_1.value;
755
- }
756
- return this._panels.length;
757
- };
758
- DockviewGroupPanelModel.prototype.removePanelFromTabGroup = function (panelId) {
759
- var _this = this;
760
- var tabGroup = this._findTabGroupForPanel(panelId);
761
- if (!tabGroup) {
762
- return;
763
- }
764
- this._bracketTabGroupMutation(function () {
765
- tabGroup.removePanel(panelId);
766
- _this._panelToTabGroup.delete(panelId);
767
- _this._onDidRemovePanelFromTabGroup.fire({ tabGroup: tabGroup, panelId: panelId });
768
- // Auto-destroy empty groups
769
- if (tabGroup.isEmpty) {
770
- tabGroup.dispose();
771
- }
772
- });
773
- };
774
- DockviewGroupPanelModel.prototype.getTabGroups = function () {
775
- return this._tabGroups;
776
- };
777
- DockviewGroupPanelModel.prototype.updateTabGroups = function () {
778
- this.tabsContainer.updateTabGroups();
779
- };
780
- DockviewGroupPanelModel.prototype.refreshTabGroupAccent = function () {
781
- this.tabsContainer.refreshTabGroupAccent();
782
- };
783
- DockviewGroupPanelModel.prototype.refreshWatermark = function () {
784
- var _a, _b;
785
- if (this.watermark) {
786
- this.watermark.element.remove();
787
- (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);
788
- this.watermark = undefined;
789
- }
790
- this.updateContainer();
791
- };
792
- DockviewGroupPanelModel.prototype.getTabGroupForPanel = function (panelId) {
793
- return this._findTabGroupForPanel(panelId);
794
- };
795
- DockviewGroupPanelModel.prototype._findTabGroupForPanel = function (panelId) {
796
- return this._panelToTabGroup.get(panelId);
797
- };
798
- DockviewGroupPanelModel.prototype._removeTabGroupInternal = function (tabGroup) {
799
- var e_5, _a;
800
- var _this = this;
801
- var index = this._tabGroups.indexOf(tabGroup);
802
- if (index !== -1) {
803
- this._tabGroups.splice(index, 1);
804
- this._tabGroupMap.delete(tabGroup.id);
805
- try {
806
- for (var _b = __values(tabGroup.panelIds), _c = _b.next(); !_c.done; _c = _b.next()) {
807
- var panelId = _c.value;
808
- this._panelToTabGroup.delete(panelId);
809
- }
810
- }
811
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
812
- finally {
813
- try {
814
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
815
- }
816
- finally { if (e_5) throw e_5.error; }
817
- }
818
- this._onDidDestroyTabGroup.fire({ tabGroup: tabGroup });
819
- // Dispose the external listeners (onDidChange, onDidCollapseChange)
820
- // we registered on this group. We cannot dispose synchronously
821
- // here because this method runs inside the onDidDestroy fire
822
- // loop — disposing the CompositeDisposable that holds the
823
- // onDidDestroy subscription would splice listeners mid-iteration.
824
- // Schedule cleanup on the next microtask instead.
825
- var tabGroupDisposable_1 = this._tabGroupDisposables.get(tabGroup.id);
826
- this._tabGroupDisposables.delete(tabGroup.id);
827
- if (tabGroupDisposable_1) {
828
- this._pendingMicrotaskDisposables.add(tabGroupDisposable_1);
829
- queueMicrotask(function () {
830
- _this._pendingMicrotaskDisposables.delete(tabGroupDisposable_1);
831
- tabGroupDisposable_1.dispose();
832
- });
833
- }
834
- }
835
- };
836
- DockviewGroupPanelModel.prototype._handleGroupCollapse = function (tabGroup) {
837
- if (!this._activePanel) {
838
- return;
839
- }
840
- // Only act if the active panel belongs to the collapsed group
841
- if (!tabGroup.containsPanel(this._activePanel.id)) {
842
- return;
843
- }
844
- var activePanelIndex = this._panels.indexOf(this._activePanel);
845
- // Search right first, then left, for a visible (non-collapsed-group) panel
846
- for (var i = activePanelIndex + 1; i < this._panels.length; i++) {
847
- var candidate = this._panels[i];
848
- var candidateGroup = this._findTabGroupForPanel(candidate.id);
849
- if (!(candidateGroup === null || candidateGroup === void 0 ? void 0 : candidateGroup.collapsed)) {
850
- this.doSetActivePanel(candidate);
851
- this.updateContainer();
852
- return;
853
- }
854
- }
855
- for (var i = activePanelIndex - 1; i >= 0; i--) {
856
- var candidate = this._panels[i];
857
- var candidateGroup = this._findTabGroupForPanel(candidate.id);
858
- if (!(candidateGroup === null || candidateGroup === void 0 ? void 0 : candidateGroup.collapsed)) {
859
- this.doSetActivePanel(candidate);
860
- this.updateContainer();
861
- return;
862
- }
863
- }
864
- // All tabs are in collapsed groups — show watermark
865
- this.contentContainer.closePanel();
866
- this.doSetActivePanel(undefined);
867
- this.updateContainer();
868
- };
869
- DockviewGroupPanelModel.prototype._handleGroupExpand = function (tabGroup) {
870
- if (this._activePanel) {
871
- return;
872
- }
873
- // Watermark is showing because all groups were collapsed.
874
- // Activate the first panel in the newly expanded group.
875
- var firstPanelId = tabGroup.panelIds[0];
876
- if (firstPanelId) {
877
- var panel = this._panels.find(function (p) { return p.id === firstPanelId; });
878
- if (panel) {
879
- this.doSetActivePanel(panel);
880
- this.updateContainer();
881
- }
882
- }
883
- };
884
- /** Restore tab groups from serialized data (used by fromJSON) */
885
- DockviewGroupPanelModel.prototype.restoreTabGroups = function (serializedGroups) {
886
- var e_6, _a, e_7, _b, e_8, _c;
887
- try {
888
- // Bump counter past any restored numeric suffixes to avoid ID collisions
889
- for (var serializedGroups_1 = __values(serializedGroups), serializedGroups_1_1 = serializedGroups_1.next(); !serializedGroups_1_1.done; serializedGroups_1_1 = serializedGroups_1.next()) {
890
- var data = serializedGroups_1_1.value;
891
- var match = /-(\d+)$/.exec(data.id);
892
- if (match) {
893
- var num = Number.parseInt(match[1], 10) + 1;
894
- if (num > this._tabGroupIdCounter) {
895
- this._tabGroupIdCounter = num;
896
- }
897
- }
898
- }
899
- }
900
- catch (e_6_1) { e_6 = { error: e_6_1 }; }
901
- finally {
902
- try {
903
- if (serializedGroups_1_1 && !serializedGroups_1_1.done && (_a = serializedGroups_1.return)) _a.call(serializedGroups_1);
904
- }
905
- finally { if (e_6) throw e_6.error; }
906
- }
907
- try {
908
- for (var serializedGroups_2 = __values(serializedGroups), serializedGroups_2_1 = serializedGroups_2.next(); !serializedGroups_2_1.done; serializedGroups_2_1 = serializedGroups_2.next()) {
909
- var data = serializedGroups_2_1.value;
910
- var tabGroup = this.createTabGroup({
911
- id: data.id,
912
- label: data.label,
913
- color: data.color,
914
- componentParams: data.componentParams,
915
- });
916
- var concreteGroup = this._tabGroupMap.get(tabGroup.id);
917
- var _loop_3 = function (panelId) {
918
- // Only add panels that actually exist in this group model
919
- if (this_2._panels.some(function (p) { return p.id === panelId; })) {
920
- tabGroup.addPanel(panelId);
921
- this_2._panelToTabGroup.set(panelId, concreteGroup);
922
- this_2._enforceContiguity(concreteGroup, panelId);
923
- }
924
- };
925
- var this_2 = this;
926
- try {
927
- for (var _d = (e_8 = void 0, __values(data.panelIds)), _e = _d.next(); !_e.done; _e = _d.next()) {
928
- var panelId = _e.value;
929
- _loop_3(panelId);
930
- }
931
- }
932
- catch (e_8_1) { e_8 = { error: e_8_1 }; }
933
- finally {
934
- try {
935
- if (_e && !_e.done && (_c = _d.return)) _c.call(_d);
936
- }
937
- finally { if (e_8) throw e_8.error; }
938
- }
939
- if (data.collapsed) {
940
- tabGroup.collapse();
941
- }
942
- // Auto-destroy if no valid panels were added
943
- if (tabGroup.isEmpty) {
944
- tabGroup.dispose();
945
- }
946
- }
947
- }
948
- catch (e_7_1) { e_7 = { error: e_7_1 }; }
949
- finally {
950
- try {
951
- if (serializedGroups_2_1 && !serializedGroups_2_1.done && (_b = serializedGroups_2.return)) _b.call(serializedGroups_2);
952
- }
953
- finally { if (e_7) throw e_7.error; }
954
- }
955
- };
956
- DockviewGroupPanelModel.prototype.focusContent = function () {
957
- this.contentContainer.element.focus();
958
- };
959
- DockviewGroupPanelModel.prototype.focusActiveTab = function () {
960
- this.tabsContainer.focusActiveTab();
961
- };
962
- Object.defineProperty(DockviewGroupPanelModel.prototype, "renderContainer", {
963
- get: function () {
964
- var _a;
965
- return ((_a = this._overwriteRenderContainer) !== null && _a !== void 0 ? _a : this.accessor.overlayRenderContainer);
966
- },
967
- set: function (value) {
968
- var _this = this;
969
- this.panels.forEach(function (panel) {
970
- _this.renderContainer.detatch(panel);
971
- });
972
- this._overwriteRenderContainer = value;
973
- this.panels.forEach(function (panel) {
974
- _this.rerender(panel);
975
- });
976
- },
977
- enumerable: false,
978
- configurable: true
979
- });
980
- Object.defineProperty(DockviewGroupPanelModel.prototype, "dropTargetContainer", {
981
- get: function () {
982
- var _a;
983
- return ((_a = this._overwriteDropTargetContainer) !== null && _a !== void 0 ? _a : this.accessor.rootDropTargetContainer);
984
- },
985
- set: function (value) {
986
- this._overwriteDropTargetContainer = value;
987
- },
988
- enumerable: false,
989
- configurable: true
990
- });
991
- DockviewGroupPanelModel.prototype.initialize = function () {
992
- var _this = this;
993
- if (this.options.panels) {
994
- this.options.panels.forEach(function (panel) {
995
- _this.doAddPanel(panel);
996
- });
997
- }
998
- if (this.options.activePanel) {
999
- this.openPanel(this.options.activePanel);
1000
- }
1001
- // must be run after the constructor otherwise this.parent may not be
1002
- // correctly initialized
1003
- this.setActive(this.isActive, true);
1004
- this.updateContainer();
1005
- this.updateHeaderActions();
1006
- };
1007
- DockviewGroupPanelModel.prototype.updateHeaderActions = function () {
1008
- var _a;
1009
- (_a = this.accessor.headerActionsService) === null || _a === void 0 ? void 0 : _a.refresh(this.groupPanel);
1010
- };
1011
- DockviewGroupPanelModel.prototype.attachHeaderAction = function (slot, element) {
1012
- switch (slot) {
1013
- case 'left':
1014
- this.tabsContainer.setLeftActionsElement(element);
1015
- break;
1016
- case 'right':
1017
- this.tabsContainer.setRightActionsElement(element);
1018
- break;
1019
- case 'prefix':
1020
- this.tabsContainer.setPrefixActionsElement(element);
1021
- break;
1022
- }
1023
- };
1024
- DockviewGroupPanelModel.prototype.rerender = function (panel) {
1025
- this.contentContainer.renderPanel(panel, { asActive: false });
1026
- };
1027
- DockviewGroupPanelModel.prototype.indexOf = function (panel) {
1028
- return this.tabsContainer.indexOf(panel.id);
1029
- };
1030
- DockviewGroupPanelModel.prototype.toJSON = function () {
1031
- var _a;
1032
- var result = {
1033
- views: this.tabsContainer.panels,
1034
- activeView: (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.id,
1035
- id: this.id,
1036
- };
1037
- if (this.locked !== false) {
1038
- result.locked = this.locked;
1039
- }
1040
- if (this.header.hidden) {
1041
- result.hideHeader = true;
1042
- }
1043
- if (this.headerPosition !== 'top') {
1044
- result.headerPosition = this.headerPosition;
1045
- }
1046
- if (this._tabGroups.length > 0) {
1047
- result.tabGroups = this._tabGroups.map(function (tg) { return tg.toJSON(); });
1048
- }
1049
- return result;
1050
- };
1051
- DockviewGroupPanelModel.prototype.moveToNext = function (options) {
1052
- var _a;
1053
- options !== null && options !== void 0 ? options : (options = {});
1054
- (_a = options.panel) !== null && _a !== void 0 ? _a : (options.panel = this.activePanel);
1055
- var index = options.panel ? this.panels.indexOf(options.panel) : -1;
1056
- var normalizedIndex;
1057
- if (index < this.panels.length - 1) {
1058
- normalizedIndex = index + 1;
1059
- }
1060
- else if (options.suppressRoll) {
1061
- return;
1062
- }
1063
- else {
1064
- normalizedIndex = 0;
1065
- }
1066
- this.openPanel(this.panels[normalizedIndex]);
1067
- };
1068
- DockviewGroupPanelModel.prototype.moveToPrevious = function (options) {
1069
- var _a;
1070
- options !== null && options !== void 0 ? options : (options = {});
1071
- (_a = options.panel) !== null && _a !== void 0 ? _a : (options.panel = this.activePanel);
1072
- if (!options.panel) {
1073
- return;
1074
- }
1075
- var index = this.panels.indexOf(options.panel);
1076
- var normalizedIndex;
1077
- if (index > 0) {
1078
- normalizedIndex = index - 1;
1079
- }
1080
- else if (options.suppressRoll) {
1081
- return;
1082
- }
1083
- else {
1084
- normalizedIndex = this.panels.length - 1;
1085
- }
1086
- this.openPanel(this.panels[normalizedIndex]);
1087
- };
1088
- DockviewGroupPanelModel.prototype.containsPanel = function (panel) {
1089
- return this.panels.includes(panel);
1090
- };
1091
- DockviewGroupPanelModel.prototype.init = function (_params) {
1092
- //noop
1093
- };
1094
- DockviewGroupPanelModel.prototype.update = function (_params) {
1095
- //noop
1096
- };
1097
- DockviewGroupPanelModel.prototype.focus = function () {
1098
- var _a;
1099
- (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.focus();
1100
- };
1101
- DockviewGroupPanelModel.prototype.openPanel = function (panel, options) {
1102
- /**
1103
- * set the panel group
1104
- * add the panel
1105
- * check if group active
1106
- * check if panel active
1107
- */
1108
- if (options === void 0) { options = {}; }
1109
- if (typeof options.index !== 'number' ||
1110
- options.index > this.panels.length) {
1111
- options.index = this.panels.length;
1112
- }
1113
- var skipSetActive = !!options.skipSetActive;
1114
- // ensure the group is updated before we fire any events
1115
- panel.updateParentGroup(this.groupPanel, {
1116
- skipSetActive: options.skipSetActive,
1117
- });
1118
- this.doAddPanel(panel, options.index, {
1119
- skipSetActive: skipSetActive,
1120
- });
1121
- if (this._activePanel === panel) {
1122
- this.contentContainer.renderPanel(panel, { asActive: true });
1123
- return;
1124
- }
1125
- if (!skipSetActive) {
1126
- this.doSetActivePanel(panel);
1127
- }
1128
- if (!options.skipSetGroupActive) {
1129
- this.accessor.doSetGroupActive(this.groupPanel);
1130
- }
1131
- if (!options.skipSetActive) {
1132
- this.updateContainer();
1133
- }
1134
- };
1135
- DockviewGroupPanelModel.prototype.removePanel = function (groupItemOrId, options) {
1136
- if (options === void 0) { options = {
1137
- skipSetActive: false,
1138
- }; }
1139
- var id = typeof groupItemOrId === 'string'
1140
- ? groupItemOrId
1141
- : groupItemOrId.id;
1142
- var panelToRemove = this._panels.find(function (panel) { return panel.id === id; });
1143
- if (!panelToRemove) {
1144
- throw new Error('invalid operation');
1145
- }
1146
- return this._removePanel(panelToRemove, options);
1147
- };
1148
- DockviewGroupPanelModel.prototype.closeAllPanels = function () {
1149
- var e_9, _a;
1150
- if (this.panels.length > 0) {
1151
- // take a copy since we will be edting the array as we iterate through
1152
- var arrPanelCpy = __spreadArray([], __read(this.panels), false);
1153
- try {
1154
- for (var arrPanelCpy_1 = __values(arrPanelCpy), arrPanelCpy_1_1 = arrPanelCpy_1.next(); !arrPanelCpy_1_1.done; arrPanelCpy_1_1 = arrPanelCpy_1.next()) {
1155
- var panel = arrPanelCpy_1_1.value;
1156
- this.doClose(panel);
1157
- }
1158
- }
1159
- catch (e_9_1) { e_9 = { error: e_9_1 }; }
1160
- finally {
1161
- try {
1162
- if (arrPanelCpy_1_1 && !arrPanelCpy_1_1.done && (_a = arrPanelCpy_1.return)) _a.call(arrPanelCpy_1);
1163
- }
1164
- finally { if (e_9) throw e_9.error; }
1165
- }
1166
- }
1167
- else {
1168
- this.accessor.removeGroup(this.groupPanel);
1169
- }
1170
- };
1171
- DockviewGroupPanelModel.prototype.closePanel = function (panel) {
1172
- this.doClose(panel);
1173
- };
1174
- DockviewGroupPanelModel.prototype.doClose = function (panel) {
1175
- var isLast = this.panels.length === 1 && this.accessor.groups.length === 1;
1176
- this.accessor.removePanel(panel, isLast && this.accessor.options.noPanelsOverlay === 'emptyGroup'
1177
- ? { removeEmptyGroup: false }
1178
- : undefined);
1179
- };
1180
- DockviewGroupPanelModel.prototype.isPanelActive = function (panel) {
1181
- return this._activePanel === panel;
1182
- };
1183
- DockviewGroupPanelModel.prototype.updateActions = function (element) {
1184
- this.tabsContainer.setRightActionsElement(element);
1185
- };
1186
- DockviewGroupPanelModel.prototype.setActive = function (isGroupActive, force) {
1187
- var _this = this;
1188
- if (force === void 0) { force = false; }
1189
- if (!force && this.isActive === isGroupActive) {
1190
- return;
1191
- }
1192
- this._isGroupActive = isGroupActive;
1193
- (0, dom_1.toggleClass)(this.container, 'dv-active-group', isGroupActive);
1194
- (0, dom_1.toggleClass)(this.container, 'dv-inactive-group', !isGroupActive);
1195
- this.tabsContainer.setActive(this.isActive);
1196
- if (!this._activePanel && this.panels.length > 0) {
1197
- var candidate = this._panels.find(function (p) {
1198
- var tg = _this._findTabGroupForPanel(p.id);
1199
- return !(tg === null || tg === void 0 ? void 0 : tg.collapsed);
1200
- });
1201
- if (candidate) {
1202
- this.doSetActivePanel(candidate);
1203
- }
1204
- }
1205
- this.updateContainer();
1206
- };
1207
- DockviewGroupPanelModel.prototype.layout = function (width, height) {
1208
- var _a;
1209
- this._width = width;
1210
- this._height = height;
1211
- this.contentContainer.layout(this._width, this._height);
1212
- if ((_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.layout) {
1213
- this._activePanel.layout(this._width, this._height);
1214
- }
1215
- };
1216
- DockviewGroupPanelModel.prototype._removePanel = function (panel, options) {
1217
- var isActivePanel = this._activePanel === panel;
1218
- this.doRemovePanel(panel);
1219
- if (isActivePanel && this.panels.length > 0) {
1220
- var nextPanel = this.mostRecentlyUsed[0];
1221
- this.openPanel(nextPanel, {
1222
- skipSetActive: options.skipSetActive,
1223
- skipSetGroupActive: options.skipSetActiveGroup,
1224
- });
1225
- }
1226
- if (this._activePanel && this.panels.length === 0) {
1227
- this.doSetActivePanel(undefined);
1228
- }
1229
- if (!options.skipSetActive) {
1230
- this.updateContainer();
1231
- }
1232
- return panel;
1233
- };
1234
- DockviewGroupPanelModel.prototype.doRemovePanel = function (panel) {
1235
- var index = this.panels.indexOf(panel);
1236
- if (this._activePanel === panel) {
1237
- this.contentContainer.closePanel();
1238
- }
1239
- this.tabsContainer.delete(panel.id);
1240
- this._panels.splice(index, 1);
1241
- if (this.mostRecentlyUsed.includes(panel)) {
1242
- var index_1 = this.mostRecentlyUsed.indexOf(panel);
1243
- this.mostRecentlyUsed.splice(index_1, 1);
1244
- }
1245
- var disposable = this._panelDisposables.get(panel.id);
1246
- if (disposable) {
1247
- disposable.dispose();
1248
- this._panelDisposables.delete(panel.id);
1249
- }
1250
- // Remove panel from its tab group (auto-destroys empty groups)
1251
- this.removePanelFromTabGroup(panel.id);
1252
- this._onDidRemovePanel.fire({ panel: panel });
1253
- };
1254
- DockviewGroupPanelModel.prototype.doAddPanel = function (panel, index, options) {
1255
- var _this = this;
1256
- if (index === void 0) { index = this.panels.length; }
1257
- if (options === void 0) { options = { skipSetActive: false }; }
1258
- var existingPanel = this._panels.indexOf(panel);
1259
- var hasExistingPanel = existingPanel > -1;
1260
- this.tabsContainer.show();
1261
- this.contentContainer.show();
1262
- this.tabsContainer.openPanel(panel, index);
1263
- if (!options.skipSetActive) {
1264
- this.contentContainer.openPanel(panel);
1265
- }
1266
- else if (panel.api.renderer === 'always') {
1267
- this.contentContainer.renderPanel(panel, { asActive: false });
1268
- }
1269
- if (hasExistingPanel) {
1270
- // TODO - need to ensure ordering hasn't changed and if it has need to re-order this.panels
1271
- return;
1272
- }
1273
- this.updateMru(panel);
1274
- this.panels.splice(index, 0, panel);
1275
- this._panelDisposables.set(panel.id, new lifecycle_1.CompositeDisposable(panel.api.onDidTitleChange(function (event) {
1276
- return _this._onDidPanelTitleChange.fire(event);
1277
- }), panel.api.onDidParametersChange(function (event) {
1278
- return _this._onDidPanelParametersChange.fire(event);
1279
- })));
1280
- this._onDidAddPanel.fire({ panel: panel });
1281
- };
1282
- DockviewGroupPanelModel.prototype.doSetActivePanel = function (panel) {
1283
- var _a, _b, _c;
1284
- if (this._activePanel === panel) {
1285
- return;
1286
- }
1287
- this._activePanel = panel;
1288
- if (panel) {
1289
- this.tabsContainer.setActivePanel(panel);
1290
- // Point the tabpanel's `aria-labelledby` at the now-active tab.
1291
- this.contentContainer.setLabelledBy(this.tabsContainer.getTabId(panel.id));
1292
- this.contentContainer.openPanel(panel);
1293
- panel.layout(this._width, this._height);
1294
- this.updateMru(panel);
1295
- // Refresh focus state to handle programmatic activation without DOM focus change
1296
- this.contentContainer.refreshFocusState();
1297
- this._onDidActivePanelChange.fire({
1298
- panel: panel,
1299
- // `currentOrigin` is always present on the real component;
1300
- // default to 'user' for minimal test accessors.
1301
- origin: (_c = (_b = (_a = this.accessor).currentOrigin) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : 'user',
1302
- });
1303
- }
1304
- this.updateAccessibleLabel();
1305
- };
1306
- /** Label the group region with its active panel's title (the WAI-ARIA region name). */
1307
- DockviewGroupPanelModel.prototype.updateAccessibleLabel = function () {
1308
- var _a;
1309
- var title = (_a = this._activePanel) === null || _a === void 0 ? void 0 : _a.title;
1310
- if (title) {
1311
- this.container.setAttribute('aria-label', title);
1312
- }
1313
- else {
1314
- this.container.removeAttribute('aria-label');
1315
- }
1316
- };
1317
- DockviewGroupPanelModel.prototype.updateMru = function (panel) {
1318
- if (this.mostRecentlyUsed.includes(panel)) {
1319
- this.mostRecentlyUsed.splice(this.mostRecentlyUsed.indexOf(panel), 1);
1320
- }
1321
- this.mostRecentlyUsed = __spreadArray([panel], __read(this.mostRecentlyUsed), false);
1322
- };
1323
- DockviewGroupPanelModel.prototype.updateContainer = function () {
1324
- var _this = this;
1325
- var _a, _b;
1326
- this.panels.forEach(function (panel) { return panel.runEvents(); });
1327
- var shouldShowWatermark = this.isEmpty || !this._activePanel;
1328
- if (shouldShowWatermark && !this.watermark) {
1329
- var watermark = this.accessor.createWatermarkComponent();
1330
- watermark.init({
1331
- containerApi: this._api,
1332
- group: this.groupPanel,
1333
- });
1334
- this.watermark = watermark;
1335
- (0, events_1.addDisposableListener)(this.watermark.element, 'pointerdown', function () {
1336
- if (!_this.isActive) {
1337
- _this.accessor.doSetGroupActive(_this.groupPanel);
1338
- }
1339
- });
1340
- this.contentContainer.element.appendChild(this.watermark.element);
1341
- }
1342
- if (!shouldShowWatermark && this.watermark) {
1343
- this.watermark.element.remove();
1344
- (_b = (_a = this.watermark).dispose) === null || _b === void 0 ? void 0 : _b.call(_a);
1345
- this.watermark = undefined;
1346
- }
1347
- };
1348
- DockviewGroupPanelModel.prototype.canDisplayOverlay = function (event, position, target) {
1349
- var firedEvent = new options_1.DockviewUnhandledDragOverEvent(event, target, position, dataTransfer_1.getPanelData, this.accessor.getPanel(this.id));
1350
- this._onUnhandledDragOver.fire(firedEvent);
1351
- return firedEvent.isAccepted;
1352
- };
1353
- DockviewGroupPanelModel.prototype.handleDropEvent = function (type, event, position, index) {
1354
- if (this.locked === 'no-drop-target') {
1355
- return;
1356
- }
1357
- function getKind() {
1358
- switch (type) {
1359
- case 'header':
1360
- return typeof index === 'number' ? 'tab' : 'header_space';
1361
- case 'content':
1362
- return 'content';
1363
- }
1364
- }
1365
- var panel = typeof index === 'number' ? this.panels[index] : undefined;
1366
- var willDropEvent = new DockviewWillDropEvent({
1367
- nativeEvent: event,
1368
- position: position,
1369
- panel: panel,
1370
- getData: function () { return (0, dataTransfer_1.getPanelData)(); },
1371
- kind: getKind(),
1372
- group: this.groupPanel,
1373
- api: this._api,
1374
- });
1375
- this._onWillDrop.fire(willDropEvent);
1376
- if (willDropEvent.defaultPrevented) {
1377
- return;
1378
- }
1379
- var data = (0, dataTransfer_1.getPanelData)();
1380
- if (data && data.viewId === this.accessor.id) {
1381
- if (type === 'content') {
1382
- if (data.groupId === this.id) {
1383
- // don't allow to drop on self for center position
1384
- if (position === 'center') {
1385
- return;
1386
- }
1387
- if (data.panelId === null && !data.tabGroupId) {
1388
- // Full-group drops on self are a no-op.
1389
- // Tab-group drags are partial moves: an edge drop
1390
- // splits the layout and creates a new group.
1391
- return;
1392
- }
1393
- }
1394
- }
1395
- if (type === 'header') {
1396
- if (data.groupId === this.id) {
1397
- if (data.panelId === null && !data.tabGroupId) {
1398
- return;
1399
- }
1400
- }
1401
- }
1402
- if (data.panelId === null) {
1403
- // this is a group move dnd event
1404
- var groupId_1 = data.groupId;
1405
- this._onMove.fire({
1406
- target: position,
1407
- groupId: groupId_1,
1408
- index: index,
1409
- tabGroupId: data.tabGroupId,
1410
- });
1411
- return;
1412
- }
1413
- var fromSameGroup = this.tabsContainer.indexOf(data.panelId) !== -1;
1414
- if (fromSameGroup && this.tabsContainer.size === 1) {
1415
- return;
1416
- }
1417
- var groupId = data.groupId, panelId = data.panelId;
1418
- var isSameGroup = this.id === groupId;
1419
- if (isSameGroup && !position) {
1420
- var oldIndex = this.tabsContainer.indexOf(panelId);
1421
- if (oldIndex === index) {
1422
- return;
1423
- }
1424
- }
1425
- this._onMove.fire({
1426
- target: position,
1427
- groupId: data.groupId,
1428
- itemId: data.panelId,
1429
- index: index,
1430
- });
1431
- }
1432
- else {
1433
- this._onDidDrop.fire(new DockviewDidDropEvent({
1434
- nativeEvent: event,
1435
- position: position,
1436
- panel: panel,
1437
- getData: function () { return (0, dataTransfer_1.getPanelData)(); },
1438
- group: this.groupPanel,
1439
- api: this._api,
1440
- }));
1441
- }
1442
- };
1443
- DockviewGroupPanelModel.prototype.updateDragAndDropState = function () {
1444
- this.tabsContainer.updateDragAndDropState();
1445
- };
1446
- DockviewGroupPanelModel.prototype.dispose = function () {
1447
- var e_10, _a, e_11, _b, e_12, _c, e_13, _d;
1448
- var _e, _f, _g;
1449
- _super.prototype.dispose.call(this);
1450
- (_e = this.watermark) === null || _e === void 0 ? void 0 : _e.element.remove();
1451
- (_g = (_f = this.watermark) === null || _f === void 0 ? void 0 : _f.dispose) === null || _g === void 0 ? void 0 : _g.call(_f);
1452
- this.watermark = undefined;
1453
- try {
1454
- // Dispose all tab groups
1455
- for (var _h = __values(__spreadArray([], __read(this._tabGroups), false)), _j = _h.next(); !_j.done; _j = _h.next()) {
1456
- var tabGroup = _j.value;
1457
- tabGroup.dispose();
1458
- }
1459
- }
1460
- catch (e_10_1) { e_10 = { error: e_10_1 }; }
1461
- finally {
1462
- try {
1463
- if (_j && !_j.done && (_a = _h.return)) _a.call(_h);
1464
- }
1465
- finally { if (e_10) throw e_10.error; }
1466
- }
1467
- try {
1468
- for (var _k = __values(this._tabGroupDisposables.values()), _l = _k.next(); !_l.done; _l = _k.next()) {
1469
- var disposable = _l.value;
1470
- disposable.dispose();
1471
- }
1472
- }
1473
- catch (e_11_1) { e_11 = { error: e_11_1 }; }
1474
- finally {
1475
- try {
1476
- if (_l && !_l.done && (_b = _k.return)) _b.call(_k);
1477
- }
1478
- finally { if (e_11) throw e_11.error; }
1479
- }
1480
- this._tabGroupDisposables.clear();
1481
- try {
1482
- // Dispose any microtask-deferred disposables that haven't run yet
1483
- for (var _m = __values(this._pendingMicrotaskDisposables), _o = _m.next(); !_o.done; _o = _m.next()) {
1484
- var disposable = _o.value;
1485
- disposable.dispose();
1486
- }
1487
- }
1488
- catch (e_12_1) { e_12 = { error: e_12_1 }; }
1489
- finally {
1490
- try {
1491
- if (_o && !_o.done && (_c = _m.return)) _c.call(_m);
1492
- }
1493
- finally { if (e_12) throw e_12.error; }
1494
- }
1495
- this._pendingMicrotaskDisposables.clear();
1496
- try {
1497
- for (var _p = __values(this.panels), _q = _p.next(); !_q.done; _q = _p.next()) {
1498
- var panel = _q.value;
1499
- panel.dispose();
1500
- }
1501
- }
1502
- catch (e_13_1) { e_13 = { error: e_13_1 }; }
1503
- finally {
1504
- try {
1505
- if (_q && !_q.done && (_d = _p.return)) _d.call(_p);
1506
- }
1507
- finally { if (e_13) throw e_13.error; }
1508
- }
1509
- this.tabsContainer.dispose();
1510
- this.contentContainer.dispose();
1511
- };
1512
- return DockviewGroupPanelModel;
1513
- }(lifecycle_1.CompositeDisposable));
1514
- exports.DockviewGroupPanelModel = DockviewGroupPanelModel;