dockview-core 7.0.4 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) hide show
  1. package/LICENCE.md +21 -0
  2. package/README.md +17 -86
  3. package/dist/cjs/api/component.api.d.ts +100 -9
  4. package/dist/cjs/api/dockviewGroupPanelApi.d.ts +45 -1
  5. package/dist/cjs/api/dockviewPanelApi.d.ts +21 -0
  6. package/dist/cjs/dismissableLayer.d.ts +57 -0
  7. package/dist/cjs/dnd/backend.d.ts +2 -2
  8. package/dist/cjs/dnd/dropTargetAnchorContainer.d.ts +12 -0
  9. package/dist/cjs/dnd/droptarget.d.ts +94 -0
  10. package/dist/cjs/dnd/ghost.d.ts +1 -0
  11. package/dist/cjs/dnd/pointer/longPress.d.ts +2 -2
  12. package/dist/cjs/dnd/pointer/pointerDragController.d.ts +5 -2
  13. package/dist/cjs/dnd/pointer/pointerDragSource.d.ts +1 -1
  14. package/dist/cjs/dnd/pointer/pointerDropTarget.d.ts +30 -1
  15. package/dist/cjs/dnd/pointer/pointerGhost.d.ts +1 -1
  16. package/dist/cjs/dockview/accessibilityMessages.d.ts +6 -0
  17. package/dist/cjs/dockview/advancedDnDService.d.ts +46 -0
  18. package/dist/cjs/dockview/components/panel/content.d.ts +1 -1
  19. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +2 -0
  20. package/dist/cjs/dockview/components/tab/tab.d.ts +2 -0
  21. package/dist/cjs/dockview/components/titlebar/floatingTitleBar.d.ts +2 -2
  22. package/dist/cjs/dockview/components/titlebar/groupDragSource.d.ts +1 -1
  23. package/dist/cjs/dockview/components/titlebar/tabGroupChip.d.ts +1 -1
  24. package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.d.ts +73 -2
  25. package/dist/cjs/dockview/components/titlebar/tabGroups.d.ts +1 -1
  26. package/dist/cjs/dockview/components/titlebar/tabReorderController.d.ts +295 -0
  27. package/dist/cjs/dockview/components/titlebar/tabs.d.ts +120 -50
  28. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +48 -0
  29. package/dist/cjs/dockview/dndCapabilities.d.ts +1 -1
  30. package/dist/cjs/dockview/dockviewComponent.d.ts +303 -19
  31. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +5 -0
  32. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +52 -2
  33. package/dist/cjs/dockview/dockviewPanel.d.ts +12 -0
  34. package/dist/cjs/dockview/dockviewShell.d.ts +48 -24
  35. package/dist/cjs/dockview/edgeGroupService.d.ts +20 -0
  36. package/dist/cjs/dockview/events.d.ts +6 -0
  37. package/dist/cjs/dockview/liveRegionService.d.ts +18 -5
  38. package/dist/cjs/dockview/moduleContracts.d.ts +480 -14
  39. package/dist/cjs/dockview/modules.d.ts +101 -22
  40. package/dist/cjs/dockview/options.d.ts +337 -30
  41. package/dist/cjs/dockview/optionsModules.d.ts +73 -0
  42. package/dist/cjs/dockview/popoutWindowService.d.ts +15 -10
  43. package/dist/cjs/dockview/rootDropTargetService.d.ts +11 -0
  44. package/dist/cjs/dockview/tabGroupAccent.d.ts +1 -1
  45. package/dist/cjs/dockview/tabGroupChipsService.d.ts +10 -0
  46. package/dist/cjs/dockview/theme.d.ts +2 -2
  47. package/dist/cjs/dockview/types.d.ts +3 -0
  48. package/dist/cjs/dom.d.ts +9 -1
  49. package/dist/cjs/gridview/baseComponentGridview.d.ts +2 -2
  50. package/dist/cjs/gridview/gridview.d.ts +2 -0
  51. package/dist/cjs/index.d.ts +35 -29
  52. package/dist/cjs/lifecycle.d.ts +1 -0
  53. package/dist/cjs/overlay/overlay.d.ts +4 -2
  54. package/dist/cjs/overlay/overlayRenderContainer.d.ts +8 -0
  55. package/dist/cjs/paneview/paneview.d.ts +2 -1
  56. package/dist/cjs/paneview/paneviewComponent.d.ts +3 -0
  57. package/dist/cjs/paneview/paneviewPanel.d.ts +5 -0
  58. package/dist/cjs/svg.d.ts +1 -0
  59. package/dist/cjs/types.d.ts +8 -0
  60. package/dist/dockview-core.js +18391 -19679
  61. package/dist/dockview-core.min.js +4138 -6
  62. package/dist/dockview-core.min.noStyle.js +6 -7
  63. package/dist/dockview-core.noStyle.js +18390 -19656
  64. package/dist/package/main.cjs.js +18002 -19268
  65. package/dist/package/main.cjs.min.js +6 -6
  66. package/dist/package/main.esm.min.mjs +6 -6
  67. package/dist/package/main.esm.mjs +17959 -19260
  68. package/package.json +81 -77
  69. package/dist/cjs/api/component.api.js +0 -1242
  70. package/dist/cjs/api/dockviewGroupPanelApi.js +0 -200
  71. package/dist/cjs/api/dockviewPanelApi.js +0 -172
  72. package/dist/cjs/api/entryPoints.js +0 -27
  73. package/dist/cjs/api/gridviewPanelApi.js +0 -45
  74. package/dist/cjs/api/panelApi.js +0 -133
  75. package/dist/cjs/api/paneviewPanelApi.js +0 -57
  76. package/dist/cjs/api/splitviewPanelApi.js +0 -47
  77. package/dist/cjs/array.js +0 -66
  78. package/dist/cjs/constants.js +0 -11
  79. package/dist/cjs/dnd/backend.js +0 -171
  80. package/dist/cjs/dnd/dataTransfer.js +0 -100
  81. package/dist/cjs/dnd/dnd.js +0 -74
  82. package/dist/cjs/dnd/dropOverlay.js +0 -197
  83. package/dist/cjs/dnd/dropTargetAnchorContainer.js +0 -104
  84. package/dist/cjs/dnd/droptarget.js +0 -362
  85. package/dist/cjs/dnd/ghost.js +0 -17
  86. package/dist/cjs/dnd/pointer/index.js +0 -13
  87. package/dist/cjs/dnd/pointer/longPress.js +0 -151
  88. package/dist/cjs/dnd/pointer/pointerDragController.js +0 -243
  89. package/dist/cjs/dnd/pointer/pointerDragSource.js +0 -197
  90. package/dist/cjs/dnd/pointer/pointerDropTarget.js +0 -198
  91. package/dist/cjs/dnd/pointer/pointerGhost.js +0 -44
  92. package/dist/cjs/dnd/pointer/types.js +0 -2
  93. package/dist/cjs/dockview/accessibilityMessages.js +0 -51
  94. package/dist/cjs/dockview/allModules.js +0 -25
  95. package/dist/cjs/dockview/components/panel/content.js +0 -213
  96. package/dist/cjs/dockview/components/popupService.js +0 -132
  97. package/dist/cjs/dockview/components/tab/defaultTab.js +0 -70
  98. package/dist/cjs/dockview/components/tab/tab.js +0 -281
  99. package/dist/cjs/dockview/components/titlebar/floatingTitleBar.js +0 -95
  100. package/dist/cjs/dockview/components/titlebar/groupDragSource.js +0 -218
  101. package/dist/cjs/dockview/components/titlebar/tabGroupChip.js +0 -104
  102. package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.js +0 -477
  103. package/dist/cjs/dockview/components/titlebar/tabGroups.js +0 -854
  104. package/dist/cjs/dockview/components/titlebar/tabOverflowControl.js +0 -19
  105. package/dist/cjs/dockview/components/titlebar/tabs.js +0 -2016
  106. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +0 -458
  107. package/dist/cjs/dockview/components/titlebar/voidContainer.js +0 -120
  108. package/dist/cjs/dockview/components/watermark/watermark.js +0 -40
  109. package/dist/cjs/dockview/deserializer.js +0 -39
  110. package/dist/cjs/dockview/dndCapabilities.js +0 -39
  111. package/dist/cjs/dockview/dockviewComponent.js +0 -3896
  112. package/dist/cjs/dockview/dockviewFloatingGroupPanel.js +0 -70
  113. package/dist/cjs/dockview/dockviewGroupPanel.js +0 -204
  114. package/dist/cjs/dockview/dockviewGroupPanelModel.js +0 -1514
  115. package/dist/cjs/dockview/dockviewPanel.js +0 -265
  116. package/dist/cjs/dockview/dockviewPanelModel.js +0 -105
  117. package/dist/cjs/dockview/dockviewShell.js +0 -744
  118. package/dist/cjs/dockview/edgeGroupService.js +0 -128
  119. package/dist/cjs/dockview/events.js +0 -67
  120. package/dist/cjs/dockview/floatingGroupService.js +0 -231
  121. package/dist/cjs/dockview/framework.js +0 -2
  122. package/dist/cjs/dockview/headerActionsService.js +0 -149
  123. package/dist/cjs/dockview/liveRegionService.js +0 -185
  124. package/dist/cjs/dockview/moduleContracts.js +0 -2
  125. package/dist/cjs/dockview/modules.js +0 -304
  126. package/dist/cjs/dockview/options.js +0 -103
  127. package/dist/cjs/dockview/popoutWindowService.js +0 -261
  128. package/dist/cjs/dockview/rootDropTargetService.js +0 -87
  129. package/dist/cjs/dockview/strictEventsSequencing.js +0 -63
  130. package/dist/cjs/dockview/tabGroup.js +0 -219
  131. package/dist/cjs/dockview/tabGroupAccent.js +0 -126
  132. package/dist/cjs/dockview/theme.js +0 -139
  133. package/dist/cjs/dockview/types.js +0 -2
  134. package/dist/cjs/dockview/validate.js +0 -76
  135. package/dist/cjs/dockview/watermarkService.js +0 -61
  136. package/dist/cjs/dom.js +0 -543
  137. package/dist/cjs/events.js +0 -296
  138. package/dist/cjs/framwork.js +0 -2
  139. package/dist/cjs/gridview/baseComponentGridview.js +0 -330
  140. package/dist/cjs/gridview/basePanelView.js +0 -162
  141. package/dist/cjs/gridview/branchNode.js +0 -372
  142. package/dist/cjs/gridview/gridview.js +0 -776
  143. package/dist/cjs/gridview/gridviewComponent.js +0 -363
  144. package/dist/cjs/gridview/gridviewPanel.js +0 -249
  145. package/dist/cjs/gridview/leafNode.js +0 -169
  146. package/dist/cjs/gridview/options.js +0 -17
  147. package/dist/cjs/gridview/types.js +0 -2
  148. package/dist/cjs/index.js +0 -105
  149. package/dist/cjs/lifecycle.js +0 -80
  150. package/dist/cjs/math.js +0 -38
  151. package/dist/cjs/overlay/overlay.js +0 -602
  152. package/dist/cjs/overlay/overlayRenderContainer.js +0 -309
  153. package/dist/cjs/panel/types.js +0 -2
  154. package/dist/cjs/paneview/defaultPaneviewHeader.js +0 -92
  155. package/dist/cjs/paneview/draggablePaneviewPanel.js +0 -141
  156. package/dist/cjs/paneview/options.js +0 -44
  157. package/dist/cjs/paneview/paneview.js +0 -203
  158. package/dist/cjs/paneview/paneviewComponent.js +0 -430
  159. package/dist/cjs/paneview/paneviewPanel.js +0 -275
  160. package/dist/cjs/popoutWindow.js +0 -244
  161. package/dist/cjs/resizable.js +0 -97
  162. package/dist/cjs/scrollbar.js +0 -169
  163. package/dist/cjs/splitview/options.js +0 -19
  164. package/dist/cjs/splitview/splitview.js +0 -999
  165. package/dist/cjs/splitview/splitviewComponent.js +0 -401
  166. package/dist/cjs/splitview/splitviewPanel.js +0 -179
  167. package/dist/cjs/splitview/viewItem.js +0 -119
  168. package/dist/cjs/svg.js +0 -43
  169. package/dist/cjs/types.js +0 -2
  170. package/dist/dockview-core.min.js.map +0 -1
  171. package/dist/dockview-core.min.noStyle.js.map +0 -1
  172. package/dist/esm/api/component.api.d.ts +0 -640
  173. package/dist/esm/api/component.api.js +0 -887
  174. package/dist/esm/api/dockviewGroupPanelApi.d.ts +0 -109
  175. package/dist/esm/api/dockviewGroupPanelApi.js +0 -155
  176. package/dist/esm/api/dockviewPanelApi.d.ts +0 -84
  177. package/dist/esm/api/dockviewPanelApi.js +0 -124
  178. package/dist/esm/api/entryPoints.d.ts +0 -9
  179. package/dist/esm/api/entryPoints.js +0 -21
  180. package/dist/esm/api/gridviewPanelApi.d.ts +0 -37
  181. package/dist/esm/api/gridviewPanelApi.js +0 -23
  182. package/dist/esm/api/panelApi.d.ts +0 -100
  183. package/dist/esm/api/panelApi.js +0 -87
  184. package/dist/esm/api/paneviewPanelApi.d.ts +0 -26
  185. package/dist/esm/api/paneviewPanelApi.js +0 -27
  186. package/dist/esm/api/splitviewPanelApi.d.ts +0 -32
  187. package/dist/esm/api/splitviewPanelApi.js +0 -25
  188. package/dist/esm/array.d.ts +0 -13
  189. package/dist/esm/array.js +0 -57
  190. package/dist/esm/constants.d.ts +0 -8
  191. package/dist/esm/constants.js +0 -8
  192. package/dist/esm/dnd/backend.d.ts +0 -70
  193. package/dist/esm/dnd/backend.js +0 -148
  194. package/dist/esm/dnd/dataTransfer.d.ts +0 -31
  195. package/dist/esm/dnd/dataTransfer.js +0 -67
  196. package/dist/esm/dnd/dnd.d.ts +0 -32
  197. package/dist/esm/dnd/dnd.js +0 -51
  198. package/dist/esm/dnd/dropOverlay.d.ts +0 -20
  199. package/dist/esm/dnd/dropOverlay.js +0 -192
  200. package/dist/esm/dnd/dropTargetAnchorContainer.d.ts +0 -16
  201. package/dist/esm/dnd/dropTargetAnchorContainer.js +0 -73
  202. package/dist/esm/dnd/droptarget.d.ts +0 -116
  203. package/dist/esm/dnd/droptarget.js +0 -316
  204. package/dist/esm/dnd/ghost.d.ts +0 -4
  205. package/dist/esm/dnd/ghost.js +0 -14
  206. package/dist/esm/dnd/pointer/index.d.ts +0 -11
  207. package/dist/esm/dnd/pointer/index.js +0 -5
  208. package/dist/esm/dnd/pointer/longPress.d.ts +0 -32
  209. package/dist/esm/dnd/pointer/longPress.js +0 -127
  210. package/dist/esm/dnd/pointer/pointerDragController.d.ts +0 -60
  211. package/dist/esm/dnd/pointer/pointerDragController.js +0 -193
  212. package/dist/esm/dnd/pointer/pointerDragSource.d.ts +0 -61
  213. package/dist/esm/dnd/pointer/pointerDragSource.js +0 -173
  214. package/dist/esm/dnd/pointer/pointerDropTarget.d.ts +0 -39
  215. package/dist/esm/dnd/pointer/pointerDropTarget.js +0 -168
  216. package/dist/esm/dnd/pointer/pointerGhost.d.ts +0 -30
  217. package/dist/esm/dnd/pointer/pointerGhost.js +0 -39
  218. package/dist/esm/dnd/pointer/types.d.ts +0 -16
  219. package/dist/esm/dnd/pointer/types.js +0 -1
  220. package/dist/esm/dockview/accessibilityMessages.d.ts +0 -32
  221. package/dist/esm/dockview/accessibilityMessages.js +0 -30
  222. package/dist/esm/dockview/allModules.d.ts +0 -8
  223. package/dist/esm/dockview/allModules.js +0 -22
  224. package/dist/esm/dockview/components/panel/content.d.ts +0 -54
  225. package/dist/esm/dockview/components/panel/content.js +0 -185
  226. package/dist/esm/dockview/components/popupService.d.ts +0 -21
  227. package/dist/esm/dockview/components/popupService.js +0 -108
  228. package/dist/esm/dockview/components/tab/defaultTab.d.ts +0 -12
  229. package/dist/esm/dockview/components/tab/defaultTab.js +0 -43
  230. package/dist/esm/dockview/components/tab/tab.d.ts +0 -44
  231. package/dist/esm/dockview/components/tab/tab.js +0 -242
  232. package/dist/esm/dockview/components/titlebar/floatingTitleBar.d.ts +0 -34
  233. package/dist/esm/dockview/components/titlebar/floatingTitleBar.js +0 -65
  234. package/dist/esm/dockview/components/titlebar/groupDragSource.d.ts +0 -51
  235. package/dist/esm/dockview/components/titlebar/groupDragSource.js +0 -178
  236. package/dist/esm/dockview/components/titlebar/tabGroupChip.d.ts +0 -37
  237. package/dist/esm/dockview/components/titlebar/tabGroupChip.js +0 -77
  238. package/dist/esm/dockview/components/titlebar/tabGroupIndicator.d.ts +0 -72
  239. package/dist/esm/dockview/components/titlebar/tabGroupIndicator.js +0 -360
  240. package/dist/esm/dockview/components/titlebar/tabGroups.d.ts +0 -107
  241. package/dist/esm/dockview/components/titlebar/tabGroups.js +0 -621
  242. package/dist/esm/dockview/components/titlebar/tabOverflowControl.d.ts +0 -8
  243. package/dist/esm/dockview/components/titlebar/tabOverflowControl.js +0 -16
  244. package/dist/esm/dockview/components/titlebar/tabs.d.ts +0 -167
  245. package/dist/esm/dockview/components/titlebar/tabs.js +0 -1653
  246. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +0 -104
  247. package/dist/esm/dockview/components/titlebar/tabsContainer.js +0 -359
  248. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +0 -21
  249. package/dist/esm/dockview/components/titlebar/voidContainer.js +0 -92
  250. package/dist/esm/dockview/components/watermark/watermark.d.ts +0 -8
  251. package/dist/esm/dockview/components/watermark/watermark.js +0 -14
  252. package/dist/esm/dockview/deserializer.d.ts +0 -12
  253. package/dist/esm/dockview/deserializer.js +0 -34
  254. package/dist/esm/dockview/dndCapabilities.d.ts +0 -19
  255. package/dist/esm/dockview/dndCapabilities.js +0 -36
  256. package/dist/esm/dockview/dockviewComponent.d.ts +0 -626
  257. package/dist/esm/dockview/dockviewComponent.js +0 -3214
  258. package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts +0 -45
  259. package/dist/esm/dockview/dockviewFloatingGroupPanel.js +0 -44
  260. package/dist/esm/dockview/dockviewGroupPanel.d.ts +0 -35
  261. package/dist/esm/dockview/dockviewGroupPanel.js +0 -142
  262. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +0 -358
  263. package/dist/esm/dockview/dockviewGroupPanelModel.js +0 -1180
  264. package/dist/esm/dockview/dockviewPanel.d.ts +0 -69
  265. package/dist/esm/dockview/dockviewPanel.js +0 -178
  266. package/dist/esm/dockview/dockviewPanelModel.d.ts +0 -37
  267. package/dist/esm/dockview/dockviewPanelModel.js +0 -81
  268. package/dist/esm/dockview/dockviewShell.d.ts +0 -150
  269. package/dist/esm/dockview/dockviewShell.js +0 -678
  270. package/dist/esm/dockview/edgeGroupService.d.ts +0 -38
  271. package/dist/esm/dockview/edgeGroupService.js +0 -63
  272. package/dist/esm/dockview/events.d.ts +0 -38
  273. package/dist/esm/dockview/events.js +0 -34
  274. package/dist/esm/dockview/floatingGroupService.d.ts +0 -37
  275. package/dist/esm/dockview/floatingGroupService.js +0 -150
  276. package/dist/esm/dockview/framework.d.ts +0 -65
  277. package/dist/esm/dockview/framework.js +0 -1
  278. package/dist/esm/dockview/headerActionsService.d.ts +0 -32
  279. package/dist/esm/dockview/headerActionsService.js +0 -86
  280. package/dist/esm/dockview/liveRegionService.d.ts +0 -53
  281. package/dist/esm/dockview/liveRegionService.js +0 -159
  282. package/dist/esm/dockview/moduleContracts.d.ts +0 -119
  283. package/dist/esm/dockview/moduleContracts.js +0 -1
  284. package/dist/esm/dockview/modules.d.ts +0 -110
  285. package/dist/esm/dockview/modules.js +0 -170
  286. package/dist/esm/dockview/options.d.ts +0 -474
  287. package/dist/esm/dockview/options.js +0 -77
  288. package/dist/esm/dockview/popoutWindowService.d.ts +0 -95
  289. package/dist/esm/dockview/popoutWindowService.js +0 -175
  290. package/dist/esm/dockview/rootDropTargetService.d.ts +0 -35
  291. package/dist/esm/dockview/rootDropTargetService.js +0 -82
  292. package/dist/esm/dockview/strictEventsSequencing.d.ts +0 -7
  293. package/dist/esm/dockview/strictEventsSequencing.js +0 -41
  294. package/dist/esm/dockview/tabGroup.d.ts +0 -99
  295. package/dist/esm/dockview/tabGroup.js +0 -144
  296. package/dist/esm/dockview/tabGroupAccent.d.ts +0 -65
  297. package/dist/esm/dockview/tabGroupAccent.js +0 -114
  298. package/dist/esm/dockview/theme.d.ts +0 -86
  299. package/dist/esm/dockview/theme.js +0 -136
  300. package/dist/esm/dockview/types.d.ts +0 -53
  301. package/dist/esm/dockview/types.js +0 -1
  302. package/dist/esm/dockview/validate.d.ts +0 -0
  303. package/dist/esm/dockview/validate.js +0 -76
  304. package/dist/esm/dockview/watermarkService.d.ts +0 -30
  305. package/dist/esm/dockview/watermarkService.js +0 -56
  306. package/dist/esm/dom.d.ts +0 -60
  307. package/dist/esm/dom.js +0 -375
  308. package/dist/esm/events.d.ts +0 -79
  309. package/dist/esm/events.js +0 -219
  310. package/dist/esm/framwork.d.ts +0 -4
  311. package/dist/esm/framwork.js +0 -1
  312. package/dist/esm/gridview/baseComponentGridview.d.ts +0 -111
  313. package/dist/esm/gridview/baseComponentGridview.js +0 -237
  314. package/dist/esm/gridview/basePanelView.d.ts +0 -40
  315. package/dist/esm/gridview/basePanelView.js +0 -91
  316. package/dist/esm/gridview/branchNode.d.ts +0 -57
  317. package/dist/esm/gridview/branchNode.js +0 -257
  318. package/dist/esm/gridview/gridview.d.ts +0 -158
  319. package/dist/esm/gridview/gridview.js +0 -681
  320. package/dist/esm/gridview/gridviewComponent.d.ts +0 -88
  321. package/dist/esm/gridview/gridviewComponent.js +0 -265
  322. package/dist/esm/gridview/gridviewPanel.d.ts +0 -77
  323. package/dist/esm/gridview/gridviewPanel.js +0 -182
  324. package/dist/esm/gridview/leafNode.d.ts +0 -34
  325. package/dist/esm/gridview/leafNode.js +0 -102
  326. package/dist/esm/gridview/options.d.ts +0 -15
  327. package/dist/esm/gridview/options.js +0 -14
  328. package/dist/esm/gridview/types.d.ts +0 -3
  329. package/dist/esm/gridview/types.js +0 -1
  330. package/dist/esm/index.d.ts +0 -58
  331. package/dist/esm/index.js +0 -44
  332. package/dist/esm/lifecycle.d.ts +0 -25
  333. package/dist/esm/lifecycle.js +0 -56
  334. package/dist/esm/math.d.ts +0 -5
  335. package/dist/esm/math.js +0 -32
  336. package/dist/esm/overlay/overlay.d.ts +0 -91
  337. package/dist/esm/overlay/overlay.js +0 -520
  338. package/dist/esm/overlay/overlayRenderContainer.d.ts +0 -24
  339. package/dist/esm/overlay/overlayRenderContainer.js +0 -249
  340. package/dist/esm/panel/types.d.ts +0 -33
  341. package/dist/esm/panel/types.js +0 -1
  342. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +0 -21
  343. package/dist/esm/paneview/defaultPaneviewHeader.js +0 -65
  344. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +0 -38
  345. package/dist/esm/paneview/draggablePaneviewPanel.js +0 -107
  346. package/dist/esm/paneview/options.d.ts +0 -30
  347. package/dist/esm/paneview/options.js +0 -22
  348. package/dist/esm/paneview/paneview.d.ts +0 -41
  349. package/dist/esm/paneview/paneview.js +0 -148
  350. package/dist/esm/paneview/paneviewComponent.d.ts +0 -133
  351. package/dist/esm/paneview/paneviewComponent.js +0 -306
  352. package/dist/esm/paneview/paneviewPanel.d.ts +0 -98
  353. package/dist/esm/paneview/paneviewPanel.js +0 -192
  354. package/dist/esm/popoutWindow.d.ts +0 -38
  355. package/dist/esm/popoutWindow.js +0 -170
  356. package/dist/esm/resizable.d.ts +0 -12
  357. package/dist/esm/resizable.js +0 -66
  358. package/dist/esm/scrollbar.d.ts +0 -15
  359. package/dist/esm/scrollbar.js +0 -139
  360. package/dist/esm/splitview/options.d.ts +0 -21
  361. package/dist/esm/splitview/options.js +0 -16
  362. package/dist/esm/splitview/splitview.d.ts +0 -145
  363. package/dist/esm/splitview/splitview.js +0 -770
  364. package/dist/esm/splitview/splitviewComponent.d.ts +0 -101
  365. package/dist/esm/splitview/splitviewComponent.js +0 -267
  366. package/dist/esm/splitview/splitviewPanel.d.ts +0 -45
  367. package/dist/esm/splitview/splitviewPanel.js +0 -108
  368. package/dist/esm/splitview/viewItem.d.ts +0 -25
  369. package/dist/esm/splitview/viewItem.js +0 -74
  370. package/dist/esm/svg.d.ts +0 -3
  371. package/dist/esm/svg.js +0 -31
  372. package/dist/esm/types.d.ts +0 -31
  373. package/dist/esm/types.js +0 -1
  374. package/dist/styles/dockview.css +0 -3436
@@ -1,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,452 @@ 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 a panel's pinned flag is mutated via the gated
478
+ * `setPanelPinned`; the service's sole trigger to re-order the strip. */
479
+ readonly onDidPanelPinnedChange: Event<DockviewPanelPinnedChangeEvent>;
480
+ /** Fires after a `fromJSON` restore completes; the service seeds its
481
+ * pinned store from the restored panels' `isPinned` flags and re-asserts
482
+ * the invariant. */
483
+ readonly onDidLayoutFromJSON: Event<void>;
484
+ /** Fires when a panel is removed; the service prunes it from its pinned
485
+ * bookkeeping so a closed pinned panel's id can't leak. */
486
+ readonly onDidRemovePanel: Event<IDockviewPanel>;
487
+ }
488
+ /**
489
+ * Pinned-tabs module service. Its presence is what
490
+ * `DockviewComponent.setPanelPinned` checks (via `assertModule`) before
491
+ * mutating pinned state; the pinned-first ordering is enforced internally and
492
+ * reactively as panels are pinned/unpinned, added, or moved.
493
+ */
494
+ export interface IPinnedTabsService extends IDisposable {
495
+ /** Re-assert the pinned-first invariant on a single group's tab strip. */
496
+ enforceOrder(group: DockviewGroupPanel): void;
497
+ /** Pure predicate (handed to each group's `Tabs`); true keeps the panel
498
+ * out of the overflow dropdown. */
499
+ isExcludedFromOverflow(panelId: string): boolean;
500
+ /** Clamp/redirect a proposed header drop `index` against the group's pin
501
+ * boundary so the dragged panel lands on the correct side. May flip the
502
+ * panel's pinned state instead of clamping when
503
+ * `togglePinOnCrossBoundaryDrag` is enabled. */
504
+ resolveDropIndex(group: DockviewGroupPanel, panelId: string, index: number): number;
505
+ }
506
+ /**
507
+ * One rendered overflow row: the free `headerOverflow` tab renderer wrapped with
508
+ * activate-on-click, built by core and reused by the advanced overflow list so
509
+ * the row DOM + behaviour stay identical to the free dropdown.
510
+ */
511
+ export interface IOverflowRow {
512
+ /** The row wrapper (`.dv-tab`). Click-to-activate is already wired. */
513
+ readonly element: HTMLElement;
514
+ readonly panel: IDockviewPanel;
515
+ /**
516
+ * Expand the panel's tab group if collapsed, activate the panel (origin
517
+ * `'user'`) and close the popover, identical to clicking the row. Used by
518
+ * the keyboard controller (Enter).
519
+ */
520
+ activate(): void;
521
+ }
522
+ /**
523
+ * Core-provided builders handed to {@link IAdvancedOverflowService.renderOverflow}
524
+ * so the module can rebuild the free dropdown body (rows + group headers) in a
525
+ * custom order (search-filtered, MRU-ordered) without re-implementing the row
526
+ * DOM, the group-header DOM, or the window-bound popover open/close. The popover
527
+ * control stays in core so it renders in the correct document for popped-out
528
+ * groups (a `getPopupServiceForGroup(group)`-bound `PopupService`).
529
+ */
530
+ export interface IAdvancedOverflowRenderContext {
531
+ /** Build a single overflow row for a panel id, or `undefined` if the panel
532
+ * no longer exists in the group. */
533
+ buildRow(panelId: string): IOverflowRow | undefined;
534
+ /** Build the group-header element for an overflow tab-group id, or
535
+ * `undefined` when it is not an overflow group. */
536
+ buildGroupHeader(tabGroupId: string): HTMLElement | undefined;
537
+ /** Build the "Pinned" section header shown above the pinned overflow rows
538
+ * (see {@link AdvancedOverflowRenderParams.pinnedOverflowTabs}). */
539
+ buildPinnedHeader(): HTMLElement;
540
+ /** The overflow tab-group id a panel belongs to, or `undefined`. Used to
541
+ * interleave group headers against the filtered set (same rule as free). */
542
+ overflowGroupIdForPanel(panelId: string): string | undefined;
543
+ /** Open `body` in the group's window-bound popover at the chevron anchor. */
544
+ open(body: HTMLElement): void;
545
+ /** Close the popover. */
546
+ close(): void;
547
+ /** Restore focus to the chevron trigger (Esc). */
548
+ focusTrigger(): void;
549
+ }
550
+ /** The argument to {@link IAdvancedOverflowService.renderOverflow}. */
551
+ export interface AdvancedOverflowRenderParams {
552
+ readonly group: DockviewGroupPanel;
553
+ /** Overflow panel ids in free (tab DOM) order. */
554
+ readonly overflowTabs: string[];
555
+ /** Overflow tab-group ids. */
556
+ readonly overflowTabGroups: string[];
557
+ /** Pinned panel ids whose tabs have clipped out of the strip, rendered in
558
+ * a dedicated "Pinned" section at the top of the dropdown, above the search
559
+ * box and MRU list. Empty unless the PinnedTabs module is active and the
560
+ * pinned block itself overflows. */
561
+ readonly pinnedOverflowTabs: string[];
562
+ /** Core row/header builders + popover control (see the context type). */
563
+ readonly context: IAdvancedOverflowRenderContext;
564
+ }
565
+ /**
566
+ * The narrow surface the advanced overflow service reads from the host
567
+ * (`DockviewComponent`). The service self-wires MRU tracking off these events;
568
+ * the component never calls into it except through the rendering seam
569
+ * (`renderOverflow`).
570
+ */
571
+ export interface IAdvancedOverflowHost {
572
+ readonly options: DockviewComponentOptions;
573
+ readonly onDidAddGroup: Event<DockviewGroupPanel>;
574
+ readonly onDidRemoveGroup: Event<DockviewGroupPanel>;
575
+ readonly onDidActivePanelChange: Event<DockviewActivePanelChangeEvent>;
576
+ }
577
+ /**
578
+ * Advanced overflow module service. When registered, the tab-overflow dropdown
579
+ * upgrades in place into a command-palette tab switcher (search + MRU +
580
+ * keyboard). Absent, core renders the free flat list unchanged.
581
+ */
582
+ export interface IAdvancedOverflowService extends IDisposable {
583
+ /** Build AND open the advanced overflow popover for a group. */
584
+ renderOverflow(params: AdvancedOverflowRenderParams): void;
585
+ }