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,12 +1,13 @@
1
1
  /**
2
2
  * Service + host interfaces for the pluggable feature modules. Core references
3
- * only these interfaces — never a module's implementation — so each module is
3
+ * only these interfaces, never a module's implementation, so each module is
4
4
  * decoupled from core and independently testable / removable. Keep this file
5
5
  * implementation-free.
6
6
  */
7
7
  import { IDisposable } from '../lifecycle';
8
8
  import { Event } from '../events';
9
- import { DroptargetOverlayModel, Position } from '../dnd/droptarget';
9
+ import { DroptargetOverlayModel, Position, PositionResolver, PositionResolverArgs, PositionResolverResult } from '../dnd/droptarget';
10
+ import { Box } from '../types';
10
11
  import { IDragGhostSpec } from '../dnd/backend';
11
12
  import { DockviewApi } from '../api/component.api';
12
13
  import { DockviewGroupPanel } from './dockviewGroupPanel';
@@ -14,15 +15,23 @@ import { IDockviewPanel } from './dockviewPanel';
14
15
  import { ITabGroup } from './tabGroup';
15
16
  import { TabGroupColorPalette } from './tabGroupAccent';
16
17
  import { PopupService } from './components/popupService';
17
- import { DockviewComponentOptions } from './options';
18
- import { DockviewLayoutMutationEvent, GroupNavigationDirection } from './dockviewComponent';
18
+ import { DockviewComponentOptions, FloatingGroupDragContext, SmartGuidesOptions } from './options';
19
+ import { DockviewActivePanelChangeEvent, DockviewLayoutMutationEvent, DockviewLayoutMutationKind, DockviewOrigin, DockviewPanelPinnedChangeEvent, GroupNavigationDirection, SerializedDockview } from './dockviewComponent';
19
20
  import { DockviewWillDropEvent } from './dockviewGroupPanelModel';
21
+ import { EdgeGroupPosition } from './dockviewShell';
20
22
  import { GroupDragEvent, TabDragEvent } from './components/titlebar/tabsContainer';
21
23
  import { DockviewGroupDropLocation, DockviewTabGroupChangeEvent, DockviewTabGroupPanelChangeEvent, DockviewTabGroupCollapsedChangeEvent, DockviewWillShowOverlayLocationEvent } from './events';
22
24
  export interface IContextMenuHost {
23
25
  readonly options: DockviewComponentOptions;
24
26
  readonly api: DockviewApi;
25
27
  readonly tabGroupColorPalette: TabGroupColorPalette;
28
+ /**
29
+ * The PinnedTabs module service, or `undefined` when that module is not
30
+ * registered. The tab context menu auto-injects a Pin/Unpin item only when
31
+ * this is present (and pinning is enabled); it's an optional enhancement,
32
+ * never a hard dependency.
33
+ */
34
+ readonly pinnedTabsService: IPinnedTabsService | undefined;
26
35
  getPopupServiceForGroup(group: DockviewGroupPanel): PopupService;
27
36
  }
28
37
  export interface IContextMenuService {
@@ -49,10 +58,10 @@ export interface ITabGroupChipsService extends IDisposable {
49
58
  */
50
59
  attachToGroup(group: DockviewGroupPanel): IDisposable;
51
60
  }
52
- export interface IAccessibilityHost {
61
+ export interface IKeyboardNavigationHost {
53
62
  /**
54
63
  * The outermost dockview element (the shell, which also contains edge
55
- * groups). A getter — it must resolve to the shell once that exists, not
64
+ * groups). A getter: it must resolve to the shell once that exists, not
56
65
  * the inner gridview, or keydowns from edge groups are missed.
57
66
  */
58
67
  readonly rootElement: HTMLElement;
@@ -61,21 +70,37 @@ export interface IAccessibilityHost {
61
70
  readonly activeGroup: DockviewGroupPanel | undefined;
62
71
  readonly activePanel: IDockviewPanel | undefined;
63
72
  /**
64
- * The next / previous group in gridview (spatial) order, wrapping round —
65
- * the one piece of navigation that needs the grid internals. All other
66
- * focus logic lives in the service, using the public group API.
73
+ * Live popout `Window` handles + a signal when that set changes. Keyboard
74
+ * services attach their document listeners to each popout document too, so
75
+ * the keys work *inside* a popped-out window (a separate `document`).
76
+ */
77
+ getPopoutWindows(): Window[];
78
+ readonly onDidChangePopouts: Event<void>;
79
+ /**
80
+ * Does this dock own `node`, in *any* of its windows? True when the node is
81
+ * inside the main shell, or inside one of this component's popout documents.
82
+ * Replaces a single-document `rootElement.contains` so keyboard handling and
83
+ * focus gating recognise events/elements that live in a popout window.
84
+ */
85
+ ownsElement(node: Node): boolean;
86
+ /**
87
+ * The next / previous group in gridview (spatial) order, wrapping round.
88
+ * This is the one piece of navigation that needs the grid internals. All
89
+ * other focus logic lives in the service, using the public group API.
67
90
  */
68
91
  adjacentGroup(group: DockviewGroupPanel, reverse: boolean): DockviewGroupPanel | undefined;
69
- /** The nearest grid group in a spatial direction — drives Alt+Arrow nav. */
92
+ /** The nearest grid group in a spatial direction; drives Alt+Arrow nav. */
70
93
  adjacentGroupInDirection(group: DockviewGroupPanel, direction: GroupNavigationDirection): DockviewGroupPanel | undefined;
71
- /** Fires before / after a structural layout change — used to restore focus on close. */
94
+ /** Fires before / after a structural layout change; used to restore focus on close. */
72
95
  readonly onWillMutateLayout: Event<DockviewLayoutMutationEvent>;
73
96
  readonly onDidMutateLayout: Event<DockviewLayoutMutationEvent>;
74
97
  showDropPreview(group: DockviewGroupPanel, position: Position): IDisposable;
75
98
  announce(message: string): void;
76
99
  dockPanel(panel: IDockviewPanel, group: DockviewGroupPanel, position: Position): void;
100
+ /** Float the panel into a new floating group: the keyboard-move "float" terminal action. */
101
+ floatPanel(panel: IDockviewPanel): void;
77
102
  }
78
- export interface IAccessibilityService extends IDisposable {
103
+ export interface IKeyboardNavigationService extends IDisposable {
79
104
  }
80
105
  /**
81
106
  * Marker for the advanced keyboard docking service (spatial group focus +
@@ -109,11 +134,457 @@ export interface IAdvancedDnDService extends IDisposable {
109
134
  */
110
135
  resolveOverlayModel(location: DockviewGroupDropLocation, group?: DockviewGroupPanel): DroptargetOverlayModel | undefined;
111
136
  /**
112
- * Render the drop-preview overlay on a group at `position` — the same
113
- * overlay a mouse drag shows — without a live drag. Returns a disposable
137
+ * Render the drop-preview overlay on a group at `position` (the same
138
+ * overlay a mouse drag shows) without a live drag. Returns a disposable
114
139
  * that clears it. Used by keyboard docking so keyboard and mouse previews
115
140
  * are identical (single source of truth). Commit the move via the public
116
141
  * `api.moveGroupOrPanel({ to: { group, position } })`.
117
142
  */
118
143
  showPreviewOverlay(group: DockviewGroupPanel, position: Position): IDisposable;
119
144
  }
145
+ /**
146
+ * The narrow surface the layout-history service needs from the host
147
+ * (`DockviewComponent`). It reads/writes whole-layout snapshots and listens to
148
+ * the mutation-transaction boundary, the only place a *pre-image* can be taken
149
+ * before a mutation runs.
150
+ */
151
+ export interface ILayoutHistoryHost {
152
+ readonly options: DockviewComponentOptions;
153
+ toJSON(): SerializedDockview;
154
+ fromJSON(data: SerializedDockview, options?: {
155
+ reuseExistingPanels: boolean;
156
+ }): void;
157
+ /** Fires before a structural mutation; used to capture the pre-image. */
158
+ readonly onWillMutateLayout: Event<DockviewLayoutMutationEvent>;
159
+ /** Fires after a structural mutation; used to capture the post-image. */
160
+ readonly onDidMutateLayout: Event<DockviewLayoutMutationEvent>;
161
+ /** Coalesced (microtask-buffered) ping after any layout change; the only
162
+ * signal for sash resize, which does not go through the mutation boundary. */
163
+ readonly onDidLayoutChange: Event<void>;
164
+ /** Settles once any in-flight popout-window restoration (from `fromJSON`)
165
+ * completes. Popouts re-open asynchronously, so undo/redo holds its guard
166
+ * until this resolves. Already-resolved when nothing is restoring. */
167
+ readonly popoutRestorationPromise: Promise<void>;
168
+ }
169
+ /** Entry labels: the mutation kinds plus the synthetic `'resize'` (sash drag,
170
+ * which has no mutation-boundary kind of its own). */
171
+ export type LayoutHistoryKind = DockviewLayoutMutationKind | 'resize';
172
+ export interface LayoutHistoryChangeEvent {
173
+ readonly canUndo: boolean;
174
+ readonly canRedo: boolean;
175
+ readonly undoCount: number;
176
+ readonly redoCount: number;
177
+ readonly lastEntry?: {
178
+ kind: LayoutHistoryKind;
179
+ origin: DockviewOrigin;
180
+ };
181
+ }
182
+ export interface ILayoutHistoryService extends IDisposable {
183
+ readonly canUndo: boolean;
184
+ readonly canRedo: boolean;
185
+ readonly onDidChangeHistory: Event<LayoutHistoryChangeEvent>;
186
+ undo(): void;
187
+ redo(): void;
188
+ /** Drop both stacks (e.g. on document switch). */
189
+ clear(): void;
190
+ }
191
+ /**
192
+ * The narrow surface the DnD compass service needs from the host
193
+ * (`DockviewComponent`). The service owns the compass widget + the cell
194
+ * hit-test resolver; the component installs that resolver at the drop-target
195
+ * seam (`dropPositionResolver`) and surfaces the drag-over signal the widget
196
+ * follows. It never re-implements drop resolution or the commit path.
197
+ */
198
+ export interface IDndCompassHost {
199
+ readonly options: DockviewComponentOptions;
200
+ /**
201
+ * Fires on each drag-over with the hovered group + native event; the
202
+ * signal the compass widget mounts/follows. The service filters for
203
+ * `kind === 'content'`.
204
+ */
205
+ readonly onWillShowOverlay: Event<DockviewWillShowOverlayLocationEvent>;
206
+ /**
207
+ * Whether a drop at `position` on `group`'s content is actually allowed
208
+ * (the per-position `canDisplayOverlay` veto), used to gate which compass
209
+ * cells are shown, so only legal drops appear.
210
+ */
211
+ canDropOnGroup(group: DockviewGroupPanel, position: Position, event: DragEvent | PointerEvent): boolean;
212
+ /**
213
+ * The element the content drop target measures its quadrants against (the
214
+ * `dndPanelOverlay` outline: the whole group, or just its content). The
215
+ * compass paints its cells in this frame so they line up with where a drop
216
+ * actually resolves, not a different box.
217
+ */
218
+ getDropOverlayElement(group: DockviewGroupPanel): HTMLElement | undefined;
219
+ /** The layout root element: the (positioned) surface the outer-cell
220
+ * landing preview is drawn over (where a whole-layout-edge dock lands). */
221
+ getLayoutElement(): HTMLElement;
222
+ }
223
+ export interface IDndCompassService extends IDisposable {
224
+ /**
225
+ * The cell hit-test resolver, installed by the host at the drop-target seam
226
+ * in place of the default cursor-quadrant logic, or `undefined` when the
227
+ * compass is disabled (`dndCompass` unset), so the default behaviour runs.
228
+ */
229
+ readonly resolver: PositionResolver | undefined;
230
+ }
231
+ /**
232
+ * The narrow surface the Smart Guides service needs from the host
233
+ * (`DockviewComponent`). The service owns candidate generation, snap resolution
234
+ * and the guide overlay; it only reads the floating container (for guide
235
+ * geometry) and the drag-end signal from the host, never mutating layout. The
236
+ * per-frame snap itself is driven by the component composing the service into
237
+ * the float drag loop's `transformFloatingGroupDrag`, so it is not a host
238
+ * member.
239
+ */
240
+ export interface ISmartGuidesHost {
241
+ readonly options: DockviewComponentOptions;
242
+ /**
243
+ * The positioning parent for floating groups, in whose coordinate space the
244
+ * guide overlay is drawn (container-relative, never client/viewport space).
245
+ * This is the same element floats are placed in
246
+ * (`_floatingOverlayHost ?? gridview.element`).
247
+ */
248
+ getFloatingContainer(): HTMLElement;
249
+ /**
250
+ * Fires with the dragged group the first time a floating group move-drag
251
+ * actually moves; the signal to (re)build per-drag state from a clean slate.
252
+ * Tears down any session left over from a drag that ended without a normal
253
+ * pointerup (e.g. a redock long-press, which aborts without an end event).
254
+ */
255
+ readonly onDidStartFloatingGroupDrag: Event<DockviewGroupPanel>;
256
+ /**
257
+ * Fires with the dragged group when a floating group's move-drag ends
258
+ * (pointerup / cancel); the signal to tear down the guides and per-drag
259
+ * state. A resize-end fires it too; with no active drag session that is a
260
+ * harmless no-op.
261
+ */
262
+ readonly onDidEndFloatingGroupDrag: Event<DockviewGroupPanel>;
263
+ /**
264
+ * The live floating windows other than `exclude`, each with its group
265
+ * identity and container-relative box; the snap-together detector needs
266
+ * identity (which neighbour to dock into), not just geometry.
267
+ */
268
+ getFloatingGroupSnapshots(exclude: DockviewGroupPanel): readonly {
269
+ group: DockviewGroupPanel;
270
+ box: Box;
271
+ }[];
272
+ /**
273
+ * The underlying grid's splitter (sash) rectangles, in the same
274
+ * container-relative space, for the optional `snapTargets.splitters` source.
275
+ * Empty when there are no sashes.
276
+ */
277
+ getGridSplitterRects(): Box[];
278
+ /**
279
+ * Commit a snap-together: dock / merge the dragged float into a target group
280
+ * at `position`. Reuses the existing move primitive (`moveGroupOrPanel`) so
281
+ * events + undo cover it; a no-op when `dragged === target`.
282
+ */
283
+ mergeFloatInto(dragged: DockviewGroupPanel, target: DockviewGroupPanel, position: SmartGuidesSnapPosition): void;
284
+ }
285
+ /** Where a snapped-together float docks relative to its target. */
286
+ export type SmartGuidesSnapPosition = 'left' | 'right' | 'top' | 'bottom' | 'center';
287
+ /** Fired when a dragged float commits an alignment snap on drop. */
288
+ export interface SmartGuidesSnapEvent {
289
+ readonly group: DockviewGroupPanel;
290
+ /** Which axes were snapped at release. */
291
+ readonly axes: ('x' | 'y')[];
292
+ }
293
+ /** Fired when a dragged float commits a dock/merge on drop. */
294
+ export interface SmartGuidesSnapTogetherEvent {
295
+ readonly dragged: DockviewGroupPanel;
296
+ readonly target: DockviewGroupPanel;
297
+ readonly position: SmartGuidesSnapPosition;
298
+ }
299
+ export interface ISmartGuidesService extends IDisposable {
300
+ /**
301
+ * Snap the proposed drag position against the other floating groups,
302
+ * drawing an alignment guide on the snapped edge. Returns an adjusted
303
+ * top-left, or nothing to leave the proposed position unchanged, which is
304
+ * also the pass-through when `smartGuides` is unset / disabled.
305
+ */
306
+ transformFloatingGroupDrag(context: FloatingGroupDragContext): {
307
+ top: number;
308
+ left: number;
309
+ } | void;
310
+ /** Whether snapping is currently active (option present + enabled). */
311
+ readonly enabled: boolean;
312
+ /** Toggle snapping at runtime (overrides `smartGuides.enabled`). */
313
+ setEnabled(enabled: boolean): void;
314
+ /** Merge a partial option override in at runtime. */
315
+ updateOptions(options: Partial<SmartGuidesOptions>): void;
316
+ readonly onDidSnapFloat: Event<SmartGuidesSnapEvent>;
317
+ readonly onDidSnapTogether: Event<SmartGuidesSnapTogetherEvent>;
318
+ }
319
+ /**
320
+ * The narrow surface the auto-hide service needs from the host
321
+ * (`DockviewComponent`). Collapse/expand is delegated to the existing free
322
+ * edge-group machinery (`setEdgeGroupCollapsed` → shell); the module owns
323
+ * interaction + presentation, never layout/sizing.
324
+ */
325
+ export interface IAutoHideEdgeGroupHost {
326
+ readonly options: DockviewComponentOptions;
327
+ /** Fires when any group is added; the service filters for `location.type === 'edge'`. */
328
+ readonly onDidAddGroup: Event<DockviewGroupPanel>;
329
+ readonly onDidRemoveGroup: Event<DockviewGroupPanel>;
330
+ /** The edge group at a position, or undefined. */
331
+ getEdgeGroupPanel(position: EdgeGroupPosition): DockviewGroupPanel | undefined;
332
+ /** Collapse/expand an edge group: the single mutate path (fires
333
+ * `onDidCollapsedChange`, no-op guarded). */
334
+ setEdgeGroupCollapsed(group: DockviewGroupPanel, collapsed: boolean): void;
335
+ /** Whether this edge group should behave as an auto-hide (pinnable) tool
336
+ * window: the per-group flag resolved against the global
337
+ * `autoHideEdgeGroups` option. Lets static and auto-hiding edge groups
338
+ * co-exist. */
339
+ isEdgeGroupAutoHide(group: DockviewGroupPanel): boolean;
340
+ /** Fires when a group's resolved auto-hide state changes at runtime
341
+ * (per-group `setAutoHide`), so a controller can dock/undock retroactively. */
342
+ readonly onDidEdgeGroupAutoHideChange: Event<DockviewGroupPanel>;
343
+ /** The element the slide-out peek mounts on: the shell, which is also the
344
+ * `OverlayRenderContainer` root, so `always`-rendered content anchors in
345
+ * the same coordinate space as the peek. */
346
+ readonly overlayRoot: HTMLElement;
347
+ /** The size an edge group expands to; sizes the peek overlay. */
348
+ getEdgeGroupExpandedSize(position: EdgeGroupPosition): number;
349
+ /** Record the peek state so `group.api.isPeeking()` / `onDidPeekChange`
350
+ * reflect it (the module owns the actual overlay). */
351
+ setEdgeGroupPeeking(group: DockviewGroupPanel, peeking: boolean): void;
352
+ /** Reposition a single `renderer:'always'` panel's overlay over its
353
+ * reference container, optionally forcing it visible. The peek reparents a
354
+ * group's content container into the slide-out overlay; the always-rendered
355
+ * content is not reparented (its parent stays constant); it's re-anchored
356
+ * over the moving container and force-shown for the duration of the peek.
357
+ * `clip` (viewport rect) clips the overlay to the peek's reveal window so an
358
+ * `always` panel emerges from the strip's inner edge instead of sliding in
359
+ * from the screen edge; omit it to clear any clip. */
360
+ repositionPanelOverlay(panel: IDockviewPanel, forceVisible: boolean, clip?: DOMRect): void;
361
+ /** Announce a message to assistive technology via the shared live region
362
+ * (no-op when no live-region service / `announcements: false`). */
363
+ announce(message: string): void;
364
+ }
365
+ export interface IAutoHideEdgeGroupService extends IDisposable {
366
+ /** Peek (true) / close (false) the collapsed edge group at `position`. */
367
+ peek(position: EdgeGroupPosition, peek: boolean): void;
368
+ /** Pin (re-dock / expand) the edge group at `position`. */
369
+ pin(position: EdgeGroupPosition): void;
370
+ /** Auto-hide (collapse to strip) the edge group at `position`. */
371
+ autoHide(position: EdgeGroupPosition): void;
372
+ }
373
+ /**
374
+ * The narrow surface the two-band drag-reveal affordance needs from the host
375
+ * (`DockviewComponent`). It reuses the existing `onWillShowOverlay` /
376
+ * `onWillDrop` seams (no new core overlay code): on a layout-edge drag it
377
+ * classifies the pointer into an outer "dock as edge group" band and an inner
378
+ * "split the grid" band, drawing its own outer-band highlight and routing an
379
+ * outer-band drop to `revealEdgeGroupWithData`. The inner band falls through to
380
+ * core's default grid split.
381
+ *
382
+ * This service is what makes `dockToEdgeGroups` do anything: core implements no
383
+ * part of it, and gates the widened activation band on this service's presence.
384
+ */
385
+ export interface IAutoEdgeGroupHost {
386
+ readonly options: DockviewComponentOptions;
387
+ /** Fires before an edge drop overlay is shown; the affordance draws its
388
+ * outer-band highlight (or lets the inner band render the core overlay). */
389
+ readonly onWillShowOverlay: Event<DockviewWillShowOverlayLocationEvent>;
390
+ /** Fires before a layout-edge drop commits; the affordance preempts the
391
+ * outer band and reveals an edge group. */
392
+ readonly onWillDrop: Event<DockviewWillDropEvent>;
393
+ /** The element the outer-band highlight mounts on (the shell / overlay root). */
394
+ readonly overlayRoot: HTMLElement;
395
+ /** Viewport rect of the docked content area (the drop-target element), to
396
+ * classify a pointer's edge band and position the highlight. */
397
+ getDropZoneRect(): DOMRect;
398
+ /** Reveal (create-or-fill) the edge group at `position` and drop the dragged
399
+ * item into it. The primitive behind drag-revealed edges. */
400
+ revealEdgeGroupWithData(position: EdgeGroupPosition, data: {
401
+ groupId: string;
402
+ panelId?: string | null;
403
+ }, options?: {
404
+ autoHide?: boolean;
405
+ }): void;
406
+ }
407
+ export interface IAutoEdgeGroupService extends IDisposable {
408
+ /** The standalone position resolver installed on the group content drop
409
+ * targets: marks the outer band of the content area as an `edge` cell (so a
410
+ * drop there routes to `dockToLayoutEdge` → reveal) and otherwise resolves
411
+ * the normal cursor quadrant. `undefined` when disabled. */
412
+ readonly resolver: PositionResolver | undefined;
413
+ /** Edge-band detection only: an `edge` cell when the pointer is in the outer
414
+ * band, else `null`. Used to compose with another resolver (e.g. the
415
+ * DnD compass): the outer edge reveals an edge group and everything
416
+ * else falls through to the other resolver. */
417
+ resolveEdge(args: PositionResolverArgs): PositionResolverResult | null;
418
+ }
419
+ /**
420
+ * The narrow surface the multi-row (wrapping) tabs service needs from the host
421
+ * (`DockviewComponent`). The wrap layout itself is CSS; the service only toggles
422
+ * the wrap class on a group's tab list, measures the wrapped row count, and asks
423
+ * the host to relayout so the now-taller header shrinks the content area
424
+ * (the free header-aware content-sizing seam does the actual subtraction). It
425
+ * owns no tab model, overflow detection, or panel sizing math.
426
+ */
427
+ export interface IMultiRowTabsHost {
428
+ readonly options: DockviewComponentOptions;
429
+ /** Fires when any group is added; the service attaches a wrap controller. */
430
+ readonly onDidAddGroup: Event<DockviewGroupPanel>;
431
+ readonly onDidRemoveGroup: Event<DockviewGroupPanel>;
432
+ /** Fires after `updateOptions`; the service re-applies wrap to every group
433
+ * so a runtime `overflow.mode` change takes effect. */
434
+ readonly onDidOptionsChange: Event<void>;
435
+ /**
436
+ * The scrollable tab list element (`.dv-tabs-container`) for a group: the
437
+ * element the wrap class is toggled on and whose child tab geometry the
438
+ * row-count measurement reads. Undefined if the group has no tab header.
439
+ */
440
+ getTabsListElement(group: DockviewGroupPanel): HTMLElement | undefined;
441
+ /**
442
+ * Re-run a group's layout with its current dimensions so a header-height
443
+ * change (a new wrapped row) propagates to the content + active panel. Wraps
444
+ * the free `DockviewGroupPanel.relayout()`.
445
+ */
446
+ relayoutGroup(group: DockviewGroupPanel): void;
447
+ /**
448
+ * Force a set of the group's panels into the overflow dropdown regardless of
449
+ * horizontal fit: the wrap controller's surplus set (the tabs on rows
450
+ * beyond `overflow.maxRows`). In wrap mode nothing clips horizontally, so the
451
+ * free `OverflowObserver` never surfaces these; this seam routes them to the
452
+ * dropdown and re-evaluates it immediately. Passing `() => false` clears the
453
+ * forcing.
454
+ */
455
+ setForcedOverflow(group: DockviewGroupPanel, fn: (panelId: string) => boolean): void;
456
+ }
457
+ export interface IMultiRowTabsService extends IDisposable {
458
+ /** Whether wrap mode is currently active (`overflow.mode === 'wrap'`). */
459
+ readonly enabled: boolean;
460
+ }
461
+ /**
462
+ * The narrow surface the pinned-tabs service reads from the host
463
+ * (`DockviewComponent`). Pinned state itself lives on the panel
464
+ * (`panel.api.isPinned`, mutated through the gated
465
+ * `DockviewComponent.setPanelPinned`); the module only observes pinned-state
466
+ * changes and re-orders each group's tab strip so pinned tabs render first. No
467
+ * layout or sizing is touched.
468
+ */
469
+ export interface IPinnedTabsHost {
470
+ /** The owning component's id: the `viewId` a within-component drag payload
471
+ * (`PanelTransfer`) carries, so the pinned second row can originate a drag
472
+ * the main strip's drop targets accept. */
473
+ readonly id: string;
474
+ readonly options: DockviewComponentOptions;
475
+ readonly onDidAddGroup: Event<DockviewGroupPanel>;
476
+ readonly onDidRemoveGroup: Event<DockviewGroupPanel>;
477
+ /** Fires after `updateOptions`; the service re-applies the pinned-tabs
478
+ * presentation (mode / sticky) to every existing group so a runtime
479
+ * `pinnedTabs` change takes effect. New groups pick it up in
480
+ * `onDidAddGroup`; this retrofits the ones that already exist. */
481
+ readonly onDidOptionsChange: Event<void>;
482
+ /** Fires after a panel's pinned flag is mutated via the gated
483
+ * `setPanelPinned`; the service's sole trigger to re-order the strip. */
484
+ readonly onDidPanelPinnedChange: Event<DockviewPanelPinnedChangeEvent>;
485
+ /** Fires after a `fromJSON` restore completes; the service seeds its
486
+ * pinned store from the restored panels' `isPinned` flags and re-asserts
487
+ * the invariant. */
488
+ readonly onDidLayoutFromJSON: Event<void>;
489
+ /** Fires when a panel is removed; the service prunes it from its pinned
490
+ * bookkeeping so a closed pinned panel's id can't leak. */
491
+ readonly onDidRemovePanel: Event<IDockviewPanel>;
492
+ }
493
+ /**
494
+ * Pinned-tabs module service. Its presence is what
495
+ * `DockviewComponent.setPanelPinned` checks (via `assertModule`) before
496
+ * mutating pinned state; the pinned-first ordering is enforced internally and
497
+ * reactively as panels are pinned/unpinned, added, or moved.
498
+ */
499
+ export interface IPinnedTabsService extends IDisposable {
500
+ /** Re-assert the pinned-first invariant on a single group's tab strip. */
501
+ enforceOrder(group: DockviewGroupPanel): void;
502
+ /** Pure predicate (handed to each group's `Tabs`); true keeps the panel
503
+ * out of the overflow dropdown. */
504
+ isExcludedFromOverflow(panelId: string): boolean;
505
+ /** Clamp/redirect a proposed header drop `index` against the group's pin
506
+ * boundary so the dragged panel lands on the correct side. May flip the
507
+ * panel's pinned state instead of clamping when
508
+ * `togglePinOnCrossBoundaryDrag` is enabled. */
509
+ resolveDropIndex(group: DockviewGroupPanel, panelId: string, index: number): number;
510
+ }
511
+ /**
512
+ * One rendered overflow row: the free `headerOverflow` tab renderer wrapped with
513
+ * activate-on-click, built by core and reused by the advanced overflow list so
514
+ * the row DOM + behaviour stay identical to the free dropdown.
515
+ */
516
+ export interface IOverflowRow {
517
+ /** The row wrapper (`.dv-tab`). Click-to-activate is already wired. */
518
+ readonly element: HTMLElement;
519
+ readonly panel: IDockviewPanel;
520
+ /**
521
+ * Expand the panel's tab group if collapsed, activate the panel (origin
522
+ * `'user'`) and close the popover, identical to clicking the row. Used by
523
+ * the keyboard controller (Enter).
524
+ */
525
+ activate(): void;
526
+ }
527
+ /**
528
+ * Core-provided builders handed to {@link IAdvancedOverflowService.renderOverflow}
529
+ * so the module can rebuild the free dropdown body (rows + group headers) in a
530
+ * custom order (search-filtered, MRU-ordered) without re-implementing the row
531
+ * DOM, the group-header DOM, or the window-bound popover open/close. The popover
532
+ * control stays in core so it renders in the correct document for popped-out
533
+ * groups (a `getPopupServiceForGroup(group)`-bound `PopupService`).
534
+ */
535
+ export interface IAdvancedOverflowRenderContext {
536
+ /** Build a single overflow row for a panel id, or `undefined` if the panel
537
+ * no longer exists in the group. */
538
+ buildRow(panelId: string): IOverflowRow | undefined;
539
+ /** Build the group-header element for an overflow tab-group id, or
540
+ * `undefined` when it is not an overflow group. */
541
+ buildGroupHeader(tabGroupId: string): HTMLElement | undefined;
542
+ /** Build the "Pinned" section header shown above the pinned overflow rows
543
+ * (see {@link AdvancedOverflowRenderParams.pinnedOverflowTabs}). */
544
+ buildPinnedHeader(): HTMLElement;
545
+ /** The overflow tab-group id a panel belongs to, or `undefined`. Used to
546
+ * interleave group headers against the filtered set (same rule as free). */
547
+ overflowGroupIdForPanel(panelId: string): string | undefined;
548
+ /** Open `body` in the group's window-bound popover at the chevron anchor. */
549
+ open(body: HTMLElement): void;
550
+ /** Close the popover. */
551
+ close(): void;
552
+ /** Restore focus to the chevron trigger (Esc). */
553
+ focusTrigger(): void;
554
+ }
555
+ /** The argument to {@link IAdvancedOverflowService.renderOverflow}. */
556
+ export interface AdvancedOverflowRenderParams {
557
+ readonly group: DockviewGroupPanel;
558
+ /** Overflow panel ids in free (tab DOM) order. */
559
+ readonly overflowTabs: string[];
560
+ /** Overflow tab-group ids. */
561
+ readonly overflowTabGroups: string[];
562
+ /** Pinned panel ids whose tabs have clipped out of the strip, rendered in
563
+ * a dedicated "Pinned" section at the top of the dropdown, above the search
564
+ * box and MRU list. Empty unless the PinnedTabs module is active and the
565
+ * pinned block itself overflows. */
566
+ readonly pinnedOverflowTabs: string[];
567
+ /** Core row/header builders + popover control (see the context type). */
568
+ readonly context: IAdvancedOverflowRenderContext;
569
+ }
570
+ /**
571
+ * The narrow surface the advanced overflow service reads from the host
572
+ * (`DockviewComponent`). The service self-wires MRU tracking off these events;
573
+ * the component never calls into it except through the rendering seam
574
+ * (`renderOverflow`).
575
+ */
576
+ export interface IAdvancedOverflowHost {
577
+ readonly options: DockviewComponentOptions;
578
+ readonly onDidAddGroup: Event<DockviewGroupPanel>;
579
+ readonly onDidRemoveGroup: Event<DockviewGroupPanel>;
580
+ readonly onDidActivePanelChange: Event<DockviewActivePanelChangeEvent>;
581
+ }
582
+ /**
583
+ * Advanced overflow module service. When registered, the tab-overflow dropdown
584
+ * upgrades in place into a command-palette tab switcher (search + MRU +
585
+ * keyboard). Absent, core renders the free flat list unchanged.
586
+ */
587
+ export interface IAdvancedOverflowService extends IDisposable {
588
+ /** Build AND open the advanced overflow popover for a group. */
589
+ renderOverflow(params: AdvancedOverflowRenderParams): void;
590
+ }