dockview-core 7.0.4 → 8.1.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 (380) 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/dataTransfer.d.ts +1 -0
  9. package/dist/cjs/dnd/dropTargetAnchorContainer.d.ts +12 -0
  10. package/dist/cjs/dnd/droptarget.d.ts +94 -0
  11. package/dist/cjs/dnd/ghost.d.ts +1 -0
  12. package/dist/cjs/dnd/pointer/longPress.d.ts +2 -2
  13. package/dist/cjs/dnd/pointer/pointerDragController.d.ts +5 -2
  14. package/dist/cjs/dnd/pointer/pointerDragSource.d.ts +1 -1
  15. package/dist/cjs/dnd/pointer/pointerDropTarget.d.ts +30 -1
  16. package/dist/cjs/dnd/pointer/pointerGhost.d.ts +1 -1
  17. package/dist/cjs/dockview/accessibilityMessages.d.ts +6 -0
  18. package/dist/cjs/dockview/advancedDnDService.d.ts +31 -0
  19. package/dist/cjs/dockview/components/panel/content.d.ts +1 -1
  20. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +2 -0
  21. package/dist/cjs/dockview/components/tab/tab.d.ts +2 -0
  22. package/dist/cjs/dockview/components/titlebar/floatingTitleBar.d.ts +2 -2
  23. package/dist/cjs/dockview/components/titlebar/groupDragSource.d.ts +1 -1
  24. package/dist/cjs/dockview/components/titlebar/tabGroupChip.d.ts +1 -1
  25. package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.d.ts +73 -2
  26. package/dist/cjs/dockview/components/titlebar/tabGroups.d.ts +1 -1
  27. package/dist/cjs/dockview/components/titlebar/tabReorderController.d.ts +295 -0
  28. package/dist/cjs/dockview/components/titlebar/tabs.d.ts +120 -50
  29. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +48 -0
  30. package/dist/cjs/dockview/dndCapabilities.d.ts +1 -1
  31. package/dist/cjs/dockview/dockviewComponent.d.ts +307 -19
  32. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +5 -0
  33. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +76 -2
  34. package/dist/cjs/dockview/dockviewPanel.d.ts +12 -0
  35. package/dist/cjs/dockview/dockviewShell.d.ts +48 -24
  36. package/dist/cjs/dockview/edgeGroupService.d.ts +20 -0
  37. package/dist/cjs/dockview/events.d.ts +6 -0
  38. package/dist/cjs/dockview/liveRegionService.d.ts +18 -5
  39. package/dist/cjs/dockview/moduleContracts.d.ts +485 -14
  40. package/dist/cjs/dockview/modules.d.ts +101 -22
  41. package/dist/cjs/dockview/options.d.ts +336 -30
  42. package/dist/cjs/dockview/optionsModules.d.ts +73 -0
  43. package/dist/cjs/dockview/popoutWindowService.d.ts +15 -10
  44. package/dist/cjs/dockview/rootDropTargetService.d.ts +11 -0
  45. package/dist/cjs/dockview/tabGroup.d.ts +3 -0
  46. package/dist/cjs/dockview/tabGroupAccent.d.ts +1 -1
  47. package/dist/cjs/dockview/tabGroupChipsService.d.ts +10 -0
  48. package/dist/cjs/dockview/theme.d.ts +2 -2
  49. package/dist/cjs/dockview/types.d.ts +3 -0
  50. package/dist/cjs/dom.d.ts +9 -1
  51. package/dist/cjs/events.d.ts +1 -1
  52. package/dist/cjs/gridview/baseComponentGridview.d.ts +2 -2
  53. package/dist/cjs/gridview/branchNode.d.ts +16 -0
  54. package/dist/cjs/gridview/gridview.d.ts +2 -0
  55. package/dist/cjs/index.d.ts +35 -29
  56. package/dist/cjs/lifecycle.d.ts +1 -0
  57. package/dist/cjs/overlay/overlay.d.ts +4 -2
  58. package/dist/cjs/overlay/overlayRenderContainer.d.ts +8 -0
  59. package/dist/cjs/paneview/paneview.d.ts +2 -1
  60. package/dist/cjs/paneview/paneviewComponent.d.ts +3 -0
  61. package/dist/cjs/paneview/paneviewPanel.d.ts +5 -0
  62. package/dist/cjs/scrollbar.d.ts +10 -0
  63. package/dist/cjs/splitview/viewItem.d.ts +10 -0
  64. package/dist/cjs/svg.d.ts +1 -0
  65. package/dist/cjs/types.d.ts +8 -0
  66. package/dist/dockview-core.js +18513 -19679
  67. package/dist/dockview-core.min.js +4138 -6
  68. package/dist/dockview-core.min.noStyle.js +6 -7
  69. package/dist/dockview-core.noStyle.js +18512 -19656
  70. package/dist/package/main.cjs.js +18123 -19267
  71. package/dist/package/main.cjs.min.js +6 -6
  72. package/dist/package/main.esm.min.mjs +6 -6
  73. package/dist/package/main.esm.mjs +18081 -19260
  74. package/package.json +81 -77
  75. package/dist/cjs/api/component.api.js +0 -1242
  76. package/dist/cjs/api/dockviewGroupPanelApi.js +0 -200
  77. package/dist/cjs/api/dockviewPanelApi.js +0 -172
  78. package/dist/cjs/api/entryPoints.js +0 -27
  79. package/dist/cjs/api/gridviewPanelApi.js +0 -45
  80. package/dist/cjs/api/panelApi.js +0 -133
  81. package/dist/cjs/api/paneviewPanelApi.js +0 -57
  82. package/dist/cjs/api/splitviewPanelApi.js +0 -47
  83. package/dist/cjs/array.js +0 -66
  84. package/dist/cjs/constants.js +0 -11
  85. package/dist/cjs/dnd/backend.js +0 -171
  86. package/dist/cjs/dnd/dataTransfer.js +0 -100
  87. package/dist/cjs/dnd/dnd.js +0 -74
  88. package/dist/cjs/dnd/dropOverlay.js +0 -197
  89. package/dist/cjs/dnd/dropTargetAnchorContainer.js +0 -104
  90. package/dist/cjs/dnd/droptarget.js +0 -362
  91. package/dist/cjs/dnd/ghost.js +0 -17
  92. package/dist/cjs/dnd/pointer/index.js +0 -13
  93. package/dist/cjs/dnd/pointer/longPress.js +0 -151
  94. package/dist/cjs/dnd/pointer/pointerDragController.js +0 -243
  95. package/dist/cjs/dnd/pointer/pointerDragSource.js +0 -197
  96. package/dist/cjs/dnd/pointer/pointerDropTarget.js +0 -198
  97. package/dist/cjs/dnd/pointer/pointerGhost.js +0 -44
  98. package/dist/cjs/dnd/pointer/types.js +0 -2
  99. package/dist/cjs/dockview/accessibilityMessages.js +0 -51
  100. package/dist/cjs/dockview/allModules.js +0 -25
  101. package/dist/cjs/dockview/components/panel/content.js +0 -213
  102. package/dist/cjs/dockview/components/popupService.js +0 -132
  103. package/dist/cjs/dockview/components/tab/defaultTab.js +0 -70
  104. package/dist/cjs/dockview/components/tab/tab.js +0 -281
  105. package/dist/cjs/dockview/components/titlebar/floatingTitleBar.js +0 -95
  106. package/dist/cjs/dockview/components/titlebar/groupDragSource.js +0 -218
  107. package/dist/cjs/dockview/components/titlebar/tabGroupChip.js +0 -104
  108. package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.js +0 -477
  109. package/dist/cjs/dockview/components/titlebar/tabGroups.js +0 -854
  110. package/dist/cjs/dockview/components/titlebar/tabOverflowControl.js +0 -19
  111. package/dist/cjs/dockview/components/titlebar/tabs.js +0 -2016
  112. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +0 -458
  113. package/dist/cjs/dockview/components/titlebar/voidContainer.js +0 -120
  114. package/dist/cjs/dockview/components/watermark/watermark.js +0 -40
  115. package/dist/cjs/dockview/deserializer.js +0 -39
  116. package/dist/cjs/dockview/dndCapabilities.js +0 -39
  117. package/dist/cjs/dockview/dockviewComponent.js +0 -3896
  118. package/dist/cjs/dockview/dockviewFloatingGroupPanel.js +0 -70
  119. package/dist/cjs/dockview/dockviewGroupPanel.js +0 -204
  120. package/dist/cjs/dockview/dockviewGroupPanelModel.js +0 -1514
  121. package/dist/cjs/dockview/dockviewPanel.js +0 -265
  122. package/dist/cjs/dockview/dockviewPanelModel.js +0 -105
  123. package/dist/cjs/dockview/dockviewShell.js +0 -744
  124. package/dist/cjs/dockview/edgeGroupService.js +0 -128
  125. package/dist/cjs/dockview/events.js +0 -67
  126. package/dist/cjs/dockview/floatingGroupService.js +0 -231
  127. package/dist/cjs/dockview/framework.js +0 -2
  128. package/dist/cjs/dockview/headerActionsService.js +0 -149
  129. package/dist/cjs/dockview/liveRegionService.js +0 -185
  130. package/dist/cjs/dockview/moduleContracts.js +0 -2
  131. package/dist/cjs/dockview/modules.js +0 -304
  132. package/dist/cjs/dockview/options.js +0 -103
  133. package/dist/cjs/dockview/popoutWindowService.js +0 -261
  134. package/dist/cjs/dockview/rootDropTargetService.js +0 -87
  135. package/dist/cjs/dockview/strictEventsSequencing.js +0 -63
  136. package/dist/cjs/dockview/tabGroup.js +0 -219
  137. package/dist/cjs/dockview/tabGroupAccent.js +0 -126
  138. package/dist/cjs/dockview/theme.js +0 -139
  139. package/dist/cjs/dockview/types.js +0 -2
  140. package/dist/cjs/dockview/validate.js +0 -76
  141. package/dist/cjs/dockview/watermarkService.js +0 -61
  142. package/dist/cjs/dom.js +0 -543
  143. package/dist/cjs/events.js +0 -296
  144. package/dist/cjs/framwork.js +0 -2
  145. package/dist/cjs/gridview/baseComponentGridview.js +0 -330
  146. package/dist/cjs/gridview/basePanelView.js +0 -162
  147. package/dist/cjs/gridview/branchNode.js +0 -372
  148. package/dist/cjs/gridview/gridview.js +0 -776
  149. package/dist/cjs/gridview/gridviewComponent.js +0 -363
  150. package/dist/cjs/gridview/gridviewPanel.js +0 -249
  151. package/dist/cjs/gridview/leafNode.js +0 -169
  152. package/dist/cjs/gridview/options.js +0 -17
  153. package/dist/cjs/gridview/types.js +0 -2
  154. package/dist/cjs/index.js +0 -105
  155. package/dist/cjs/lifecycle.js +0 -80
  156. package/dist/cjs/math.js +0 -38
  157. package/dist/cjs/overlay/overlay.js +0 -602
  158. package/dist/cjs/overlay/overlayRenderContainer.js +0 -309
  159. package/dist/cjs/panel/types.js +0 -2
  160. package/dist/cjs/paneview/defaultPaneviewHeader.js +0 -92
  161. package/dist/cjs/paneview/draggablePaneviewPanel.js +0 -141
  162. package/dist/cjs/paneview/options.js +0 -44
  163. package/dist/cjs/paneview/paneview.js +0 -203
  164. package/dist/cjs/paneview/paneviewComponent.js +0 -430
  165. package/dist/cjs/paneview/paneviewPanel.js +0 -275
  166. package/dist/cjs/popoutWindow.js +0 -244
  167. package/dist/cjs/resizable.js +0 -97
  168. package/dist/cjs/scrollbar.js +0 -169
  169. package/dist/cjs/splitview/options.js +0 -19
  170. package/dist/cjs/splitview/splitview.js +0 -999
  171. package/dist/cjs/splitview/splitviewComponent.js +0 -401
  172. package/dist/cjs/splitview/splitviewPanel.js +0 -179
  173. package/dist/cjs/splitview/viewItem.js +0 -119
  174. package/dist/cjs/svg.js +0 -43
  175. package/dist/cjs/types.js +0 -2
  176. package/dist/dockview-core.min.js.map +0 -1
  177. package/dist/dockview-core.min.noStyle.js.map +0 -1
  178. package/dist/esm/api/component.api.d.ts +0 -640
  179. package/dist/esm/api/component.api.js +0 -887
  180. package/dist/esm/api/dockviewGroupPanelApi.d.ts +0 -109
  181. package/dist/esm/api/dockviewGroupPanelApi.js +0 -155
  182. package/dist/esm/api/dockviewPanelApi.d.ts +0 -84
  183. package/dist/esm/api/dockviewPanelApi.js +0 -124
  184. package/dist/esm/api/entryPoints.d.ts +0 -9
  185. package/dist/esm/api/entryPoints.js +0 -21
  186. package/dist/esm/api/gridviewPanelApi.d.ts +0 -37
  187. package/dist/esm/api/gridviewPanelApi.js +0 -23
  188. package/dist/esm/api/panelApi.d.ts +0 -100
  189. package/dist/esm/api/panelApi.js +0 -87
  190. package/dist/esm/api/paneviewPanelApi.d.ts +0 -26
  191. package/dist/esm/api/paneviewPanelApi.js +0 -27
  192. package/dist/esm/api/splitviewPanelApi.d.ts +0 -32
  193. package/dist/esm/api/splitviewPanelApi.js +0 -25
  194. package/dist/esm/array.d.ts +0 -13
  195. package/dist/esm/array.js +0 -57
  196. package/dist/esm/constants.d.ts +0 -8
  197. package/dist/esm/constants.js +0 -8
  198. package/dist/esm/dnd/backend.d.ts +0 -70
  199. package/dist/esm/dnd/backend.js +0 -148
  200. package/dist/esm/dnd/dataTransfer.d.ts +0 -31
  201. package/dist/esm/dnd/dataTransfer.js +0 -67
  202. package/dist/esm/dnd/dnd.d.ts +0 -32
  203. package/dist/esm/dnd/dnd.js +0 -51
  204. package/dist/esm/dnd/dropOverlay.d.ts +0 -20
  205. package/dist/esm/dnd/dropOverlay.js +0 -192
  206. package/dist/esm/dnd/dropTargetAnchorContainer.d.ts +0 -16
  207. package/dist/esm/dnd/dropTargetAnchorContainer.js +0 -73
  208. package/dist/esm/dnd/droptarget.d.ts +0 -116
  209. package/dist/esm/dnd/droptarget.js +0 -316
  210. package/dist/esm/dnd/ghost.d.ts +0 -4
  211. package/dist/esm/dnd/ghost.js +0 -14
  212. package/dist/esm/dnd/pointer/index.d.ts +0 -11
  213. package/dist/esm/dnd/pointer/index.js +0 -5
  214. package/dist/esm/dnd/pointer/longPress.d.ts +0 -32
  215. package/dist/esm/dnd/pointer/longPress.js +0 -127
  216. package/dist/esm/dnd/pointer/pointerDragController.d.ts +0 -60
  217. package/dist/esm/dnd/pointer/pointerDragController.js +0 -193
  218. package/dist/esm/dnd/pointer/pointerDragSource.d.ts +0 -61
  219. package/dist/esm/dnd/pointer/pointerDragSource.js +0 -173
  220. package/dist/esm/dnd/pointer/pointerDropTarget.d.ts +0 -39
  221. package/dist/esm/dnd/pointer/pointerDropTarget.js +0 -168
  222. package/dist/esm/dnd/pointer/pointerGhost.d.ts +0 -30
  223. package/dist/esm/dnd/pointer/pointerGhost.js +0 -39
  224. package/dist/esm/dnd/pointer/types.d.ts +0 -16
  225. package/dist/esm/dnd/pointer/types.js +0 -1
  226. package/dist/esm/dockview/accessibilityMessages.d.ts +0 -32
  227. package/dist/esm/dockview/accessibilityMessages.js +0 -30
  228. package/dist/esm/dockview/allModules.d.ts +0 -8
  229. package/dist/esm/dockview/allModules.js +0 -22
  230. package/dist/esm/dockview/components/panel/content.d.ts +0 -54
  231. package/dist/esm/dockview/components/panel/content.js +0 -185
  232. package/dist/esm/dockview/components/popupService.d.ts +0 -21
  233. package/dist/esm/dockview/components/popupService.js +0 -108
  234. package/dist/esm/dockview/components/tab/defaultTab.d.ts +0 -12
  235. package/dist/esm/dockview/components/tab/defaultTab.js +0 -43
  236. package/dist/esm/dockview/components/tab/tab.d.ts +0 -44
  237. package/dist/esm/dockview/components/tab/tab.js +0 -242
  238. package/dist/esm/dockview/components/titlebar/floatingTitleBar.d.ts +0 -34
  239. package/dist/esm/dockview/components/titlebar/floatingTitleBar.js +0 -65
  240. package/dist/esm/dockview/components/titlebar/groupDragSource.d.ts +0 -51
  241. package/dist/esm/dockview/components/titlebar/groupDragSource.js +0 -178
  242. package/dist/esm/dockview/components/titlebar/tabGroupChip.d.ts +0 -37
  243. package/dist/esm/dockview/components/titlebar/tabGroupChip.js +0 -77
  244. package/dist/esm/dockview/components/titlebar/tabGroupIndicator.d.ts +0 -72
  245. package/dist/esm/dockview/components/titlebar/tabGroupIndicator.js +0 -360
  246. package/dist/esm/dockview/components/titlebar/tabGroups.d.ts +0 -107
  247. package/dist/esm/dockview/components/titlebar/tabGroups.js +0 -621
  248. package/dist/esm/dockview/components/titlebar/tabOverflowControl.d.ts +0 -8
  249. package/dist/esm/dockview/components/titlebar/tabOverflowControl.js +0 -16
  250. package/dist/esm/dockview/components/titlebar/tabs.d.ts +0 -167
  251. package/dist/esm/dockview/components/titlebar/tabs.js +0 -1653
  252. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +0 -104
  253. package/dist/esm/dockview/components/titlebar/tabsContainer.js +0 -359
  254. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +0 -21
  255. package/dist/esm/dockview/components/titlebar/voidContainer.js +0 -92
  256. package/dist/esm/dockview/components/watermark/watermark.d.ts +0 -8
  257. package/dist/esm/dockview/components/watermark/watermark.js +0 -14
  258. package/dist/esm/dockview/deserializer.d.ts +0 -12
  259. package/dist/esm/dockview/deserializer.js +0 -34
  260. package/dist/esm/dockview/dndCapabilities.d.ts +0 -19
  261. package/dist/esm/dockview/dndCapabilities.js +0 -36
  262. package/dist/esm/dockview/dockviewComponent.d.ts +0 -626
  263. package/dist/esm/dockview/dockviewComponent.js +0 -3214
  264. package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts +0 -45
  265. package/dist/esm/dockview/dockviewFloatingGroupPanel.js +0 -44
  266. package/dist/esm/dockview/dockviewGroupPanel.d.ts +0 -35
  267. package/dist/esm/dockview/dockviewGroupPanel.js +0 -142
  268. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +0 -358
  269. package/dist/esm/dockview/dockviewGroupPanelModel.js +0 -1180
  270. package/dist/esm/dockview/dockviewPanel.d.ts +0 -69
  271. package/dist/esm/dockview/dockviewPanel.js +0 -178
  272. package/dist/esm/dockview/dockviewPanelModel.d.ts +0 -37
  273. package/dist/esm/dockview/dockviewPanelModel.js +0 -81
  274. package/dist/esm/dockview/dockviewShell.d.ts +0 -150
  275. package/dist/esm/dockview/dockviewShell.js +0 -678
  276. package/dist/esm/dockview/edgeGroupService.d.ts +0 -38
  277. package/dist/esm/dockview/edgeGroupService.js +0 -63
  278. package/dist/esm/dockview/events.d.ts +0 -38
  279. package/dist/esm/dockview/events.js +0 -34
  280. package/dist/esm/dockview/floatingGroupService.d.ts +0 -37
  281. package/dist/esm/dockview/floatingGroupService.js +0 -150
  282. package/dist/esm/dockview/framework.d.ts +0 -65
  283. package/dist/esm/dockview/framework.js +0 -1
  284. package/dist/esm/dockview/headerActionsService.d.ts +0 -32
  285. package/dist/esm/dockview/headerActionsService.js +0 -86
  286. package/dist/esm/dockview/liveRegionService.d.ts +0 -53
  287. package/dist/esm/dockview/liveRegionService.js +0 -159
  288. package/dist/esm/dockview/moduleContracts.d.ts +0 -119
  289. package/dist/esm/dockview/moduleContracts.js +0 -1
  290. package/dist/esm/dockview/modules.d.ts +0 -110
  291. package/dist/esm/dockview/modules.js +0 -170
  292. package/dist/esm/dockview/options.d.ts +0 -474
  293. package/dist/esm/dockview/options.js +0 -77
  294. package/dist/esm/dockview/popoutWindowService.d.ts +0 -95
  295. package/dist/esm/dockview/popoutWindowService.js +0 -175
  296. package/dist/esm/dockview/rootDropTargetService.d.ts +0 -35
  297. package/dist/esm/dockview/rootDropTargetService.js +0 -82
  298. package/dist/esm/dockview/strictEventsSequencing.d.ts +0 -7
  299. package/dist/esm/dockview/strictEventsSequencing.js +0 -41
  300. package/dist/esm/dockview/tabGroup.d.ts +0 -99
  301. package/dist/esm/dockview/tabGroup.js +0 -144
  302. package/dist/esm/dockview/tabGroupAccent.d.ts +0 -65
  303. package/dist/esm/dockview/tabGroupAccent.js +0 -114
  304. package/dist/esm/dockview/theme.d.ts +0 -86
  305. package/dist/esm/dockview/theme.js +0 -136
  306. package/dist/esm/dockview/types.d.ts +0 -53
  307. package/dist/esm/dockview/types.js +0 -1
  308. package/dist/esm/dockview/validate.d.ts +0 -0
  309. package/dist/esm/dockview/validate.js +0 -76
  310. package/dist/esm/dockview/watermarkService.d.ts +0 -30
  311. package/dist/esm/dockview/watermarkService.js +0 -56
  312. package/dist/esm/dom.d.ts +0 -60
  313. package/dist/esm/dom.js +0 -375
  314. package/dist/esm/events.d.ts +0 -79
  315. package/dist/esm/events.js +0 -219
  316. package/dist/esm/framwork.d.ts +0 -4
  317. package/dist/esm/framwork.js +0 -1
  318. package/dist/esm/gridview/baseComponentGridview.d.ts +0 -111
  319. package/dist/esm/gridview/baseComponentGridview.js +0 -237
  320. package/dist/esm/gridview/basePanelView.d.ts +0 -40
  321. package/dist/esm/gridview/basePanelView.js +0 -91
  322. package/dist/esm/gridview/branchNode.d.ts +0 -57
  323. package/dist/esm/gridview/branchNode.js +0 -257
  324. package/dist/esm/gridview/gridview.d.ts +0 -158
  325. package/dist/esm/gridview/gridview.js +0 -681
  326. package/dist/esm/gridview/gridviewComponent.d.ts +0 -88
  327. package/dist/esm/gridview/gridviewComponent.js +0 -265
  328. package/dist/esm/gridview/gridviewPanel.d.ts +0 -77
  329. package/dist/esm/gridview/gridviewPanel.js +0 -182
  330. package/dist/esm/gridview/leafNode.d.ts +0 -34
  331. package/dist/esm/gridview/leafNode.js +0 -102
  332. package/dist/esm/gridview/options.d.ts +0 -15
  333. package/dist/esm/gridview/options.js +0 -14
  334. package/dist/esm/gridview/types.d.ts +0 -3
  335. package/dist/esm/gridview/types.js +0 -1
  336. package/dist/esm/index.d.ts +0 -58
  337. package/dist/esm/index.js +0 -44
  338. package/dist/esm/lifecycle.d.ts +0 -25
  339. package/dist/esm/lifecycle.js +0 -56
  340. package/dist/esm/math.d.ts +0 -5
  341. package/dist/esm/math.js +0 -32
  342. package/dist/esm/overlay/overlay.d.ts +0 -91
  343. package/dist/esm/overlay/overlay.js +0 -520
  344. package/dist/esm/overlay/overlayRenderContainer.d.ts +0 -24
  345. package/dist/esm/overlay/overlayRenderContainer.js +0 -249
  346. package/dist/esm/panel/types.d.ts +0 -33
  347. package/dist/esm/panel/types.js +0 -1
  348. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +0 -21
  349. package/dist/esm/paneview/defaultPaneviewHeader.js +0 -65
  350. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +0 -38
  351. package/dist/esm/paneview/draggablePaneviewPanel.js +0 -107
  352. package/dist/esm/paneview/options.d.ts +0 -30
  353. package/dist/esm/paneview/options.js +0 -22
  354. package/dist/esm/paneview/paneview.d.ts +0 -41
  355. package/dist/esm/paneview/paneview.js +0 -148
  356. package/dist/esm/paneview/paneviewComponent.d.ts +0 -133
  357. package/dist/esm/paneview/paneviewComponent.js +0 -306
  358. package/dist/esm/paneview/paneviewPanel.d.ts +0 -98
  359. package/dist/esm/paneview/paneviewPanel.js +0 -192
  360. package/dist/esm/popoutWindow.d.ts +0 -38
  361. package/dist/esm/popoutWindow.js +0 -170
  362. package/dist/esm/resizable.d.ts +0 -12
  363. package/dist/esm/resizable.js +0 -66
  364. package/dist/esm/scrollbar.d.ts +0 -15
  365. package/dist/esm/scrollbar.js +0 -139
  366. package/dist/esm/splitview/options.d.ts +0 -21
  367. package/dist/esm/splitview/options.js +0 -16
  368. package/dist/esm/splitview/splitview.d.ts +0 -145
  369. package/dist/esm/splitview/splitview.js +0 -770
  370. package/dist/esm/splitview/splitviewComponent.d.ts +0 -101
  371. package/dist/esm/splitview/splitviewComponent.js +0 -267
  372. package/dist/esm/splitview/splitviewPanel.d.ts +0 -45
  373. package/dist/esm/splitview/splitviewPanel.js +0 -108
  374. package/dist/esm/splitview/viewItem.d.ts +0 -25
  375. package/dist/esm/splitview/viewItem.js +0 -74
  376. package/dist/esm/svg.d.ts +0 -3
  377. package/dist/esm/svg.js +0 -31
  378. package/dist/esm/types.d.ts +0 -31
  379. package/dist/esm/types.js +0 -1
  380. 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;