dockview-core 7.0.3 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) hide show
  1. package/LICENCE.md +21 -0
  2. package/README.md +17 -86
  3. package/dist/cjs/api/component.api.d.ts +100 -9
  4. package/dist/cjs/api/dockviewGroupPanelApi.d.ts +45 -1
  5. package/dist/cjs/api/dockviewPanelApi.d.ts +21 -0
  6. package/dist/cjs/dismissableLayer.d.ts +57 -0
  7. package/dist/cjs/dnd/backend.d.ts +2 -2
  8. package/dist/cjs/dnd/dropTargetAnchorContainer.d.ts +12 -0
  9. package/dist/cjs/dnd/droptarget.d.ts +94 -0
  10. package/dist/cjs/dnd/ghost.d.ts +1 -0
  11. package/dist/cjs/dnd/pointer/longPress.d.ts +2 -2
  12. package/dist/cjs/dnd/pointer/pointerDragController.d.ts +5 -2
  13. package/dist/cjs/dnd/pointer/pointerDragSource.d.ts +1 -1
  14. package/dist/cjs/dnd/pointer/pointerDropTarget.d.ts +30 -1
  15. package/dist/cjs/dnd/pointer/pointerGhost.d.ts +1 -1
  16. package/dist/cjs/dockview/accessibilityMessages.d.ts +6 -0
  17. package/dist/cjs/dockview/advancedDnDService.d.ts +46 -0
  18. package/dist/cjs/dockview/components/panel/content.d.ts +1 -1
  19. package/dist/cjs/dockview/components/tab/defaultTab.d.ts +2 -0
  20. package/dist/cjs/dockview/components/tab/tab.d.ts +2 -0
  21. package/dist/cjs/dockview/components/titlebar/floatingTitleBar.d.ts +2 -2
  22. package/dist/cjs/dockview/components/titlebar/groupDragSource.d.ts +1 -1
  23. package/dist/cjs/dockview/components/titlebar/tabGroupChip.d.ts +1 -1
  24. package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.d.ts +73 -2
  25. package/dist/cjs/dockview/components/titlebar/tabGroups.d.ts +1 -1
  26. package/dist/cjs/dockview/components/titlebar/tabReorderController.d.ts +295 -0
  27. package/dist/cjs/dockview/components/titlebar/tabs.d.ts +120 -50
  28. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +48 -0
  29. package/dist/cjs/dockview/dndCapabilities.d.ts +1 -1
  30. package/dist/cjs/dockview/dockviewComponent.d.ts +303 -19
  31. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +5 -0
  32. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +52 -2
  33. package/dist/cjs/dockview/dockviewPanel.d.ts +12 -0
  34. package/dist/cjs/dockview/dockviewShell.d.ts +48 -24
  35. package/dist/cjs/dockview/edgeGroupService.d.ts +20 -0
  36. package/dist/cjs/dockview/events.d.ts +6 -0
  37. package/dist/cjs/dockview/liveRegionService.d.ts +18 -5
  38. package/dist/cjs/dockview/moduleContracts.d.ts +480 -14
  39. package/dist/cjs/dockview/modules.d.ts +101 -22
  40. package/dist/cjs/dockview/options.d.ts +337 -30
  41. package/dist/cjs/dockview/optionsModules.d.ts +73 -0
  42. package/dist/cjs/dockview/popoutWindowService.d.ts +15 -10
  43. package/dist/cjs/dockview/rootDropTargetService.d.ts +11 -0
  44. package/dist/cjs/dockview/tabGroupAccent.d.ts +1 -1
  45. package/dist/cjs/dockview/tabGroupChipsService.d.ts +10 -0
  46. package/dist/cjs/dockview/theme.d.ts +2 -2
  47. package/dist/cjs/dockview/types.d.ts +3 -0
  48. package/dist/cjs/dom.d.ts +9 -1
  49. package/dist/cjs/gridview/baseComponentGridview.d.ts +2 -2
  50. package/dist/cjs/gridview/gridview.d.ts +2 -0
  51. package/dist/cjs/index.d.ts +35 -29
  52. package/dist/cjs/lifecycle.d.ts +1 -0
  53. package/dist/cjs/overlay/overlay.d.ts +4 -2
  54. package/dist/cjs/overlay/overlayRenderContainer.d.ts +8 -0
  55. package/dist/cjs/paneview/paneview.d.ts +2 -1
  56. package/dist/cjs/paneview/paneviewComponent.d.ts +3 -0
  57. package/dist/cjs/paneview/paneviewPanel.d.ts +5 -0
  58. package/dist/cjs/svg.d.ts +1 -0
  59. package/dist/cjs/types.d.ts +8 -0
  60. package/dist/dockview-core.js +18391 -19679
  61. package/dist/dockview-core.min.js +4138 -6
  62. package/dist/dockview-core.min.noStyle.js +6 -7
  63. package/dist/dockview-core.noStyle.js +18390 -19656
  64. package/dist/package/main.cjs.js +18002 -19268
  65. package/dist/package/main.cjs.min.js +6 -6
  66. package/dist/package/main.esm.min.mjs +6 -6
  67. package/dist/package/main.esm.mjs +17959 -19260
  68. package/package.json +81 -77
  69. package/dist/cjs/api/component.api.js +0 -1242
  70. package/dist/cjs/api/dockviewGroupPanelApi.js +0 -200
  71. package/dist/cjs/api/dockviewPanelApi.js +0 -172
  72. package/dist/cjs/api/entryPoints.js +0 -27
  73. package/dist/cjs/api/gridviewPanelApi.js +0 -45
  74. package/dist/cjs/api/panelApi.js +0 -133
  75. package/dist/cjs/api/paneviewPanelApi.js +0 -57
  76. package/dist/cjs/api/splitviewPanelApi.js +0 -47
  77. package/dist/cjs/array.js +0 -66
  78. package/dist/cjs/constants.js +0 -11
  79. package/dist/cjs/dnd/backend.js +0 -171
  80. package/dist/cjs/dnd/dataTransfer.js +0 -100
  81. package/dist/cjs/dnd/dnd.js +0 -74
  82. package/dist/cjs/dnd/dropOverlay.js +0 -197
  83. package/dist/cjs/dnd/dropTargetAnchorContainer.js +0 -104
  84. package/dist/cjs/dnd/droptarget.js +0 -362
  85. package/dist/cjs/dnd/ghost.js +0 -17
  86. package/dist/cjs/dnd/pointer/index.js +0 -13
  87. package/dist/cjs/dnd/pointer/longPress.js +0 -151
  88. package/dist/cjs/dnd/pointer/pointerDragController.js +0 -243
  89. package/dist/cjs/dnd/pointer/pointerDragSource.js +0 -197
  90. package/dist/cjs/dnd/pointer/pointerDropTarget.js +0 -198
  91. package/dist/cjs/dnd/pointer/pointerGhost.js +0 -44
  92. package/dist/cjs/dnd/pointer/types.js +0 -2
  93. package/dist/cjs/dockview/accessibilityMessages.js +0 -51
  94. package/dist/cjs/dockview/allModules.js +0 -25
  95. package/dist/cjs/dockview/components/panel/content.js +0 -213
  96. package/dist/cjs/dockview/components/popupService.js +0 -132
  97. package/dist/cjs/dockview/components/tab/defaultTab.js +0 -70
  98. package/dist/cjs/dockview/components/tab/tab.js +0 -281
  99. package/dist/cjs/dockview/components/titlebar/floatingTitleBar.js +0 -95
  100. package/dist/cjs/dockview/components/titlebar/groupDragSource.js +0 -218
  101. package/dist/cjs/dockview/components/titlebar/tabGroupChip.js +0 -104
  102. package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.js +0 -477
  103. package/dist/cjs/dockview/components/titlebar/tabGroups.js +0 -854
  104. package/dist/cjs/dockview/components/titlebar/tabOverflowControl.js +0 -19
  105. package/dist/cjs/dockview/components/titlebar/tabs.js +0 -2016
  106. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +0 -458
  107. package/dist/cjs/dockview/components/titlebar/voidContainer.js +0 -120
  108. package/dist/cjs/dockview/components/watermark/watermark.js +0 -40
  109. package/dist/cjs/dockview/deserializer.js +0 -39
  110. package/dist/cjs/dockview/dndCapabilities.js +0 -39
  111. package/dist/cjs/dockview/dockviewComponent.js +0 -3896
  112. package/dist/cjs/dockview/dockviewFloatingGroupPanel.js +0 -70
  113. package/dist/cjs/dockview/dockviewGroupPanel.js +0 -204
  114. package/dist/cjs/dockview/dockviewGroupPanelModel.js +0 -1514
  115. package/dist/cjs/dockview/dockviewPanel.js +0 -265
  116. package/dist/cjs/dockview/dockviewPanelModel.js +0 -105
  117. package/dist/cjs/dockview/dockviewShell.js +0 -744
  118. package/dist/cjs/dockview/edgeGroupService.js +0 -128
  119. package/dist/cjs/dockview/events.js +0 -67
  120. package/dist/cjs/dockview/floatingGroupService.js +0 -231
  121. package/dist/cjs/dockview/framework.js +0 -2
  122. package/dist/cjs/dockview/headerActionsService.js +0 -149
  123. package/dist/cjs/dockview/liveRegionService.js +0 -185
  124. package/dist/cjs/dockview/moduleContracts.js +0 -2
  125. package/dist/cjs/dockview/modules.js +0 -304
  126. package/dist/cjs/dockview/options.js +0 -103
  127. package/dist/cjs/dockview/popoutWindowService.js +0 -261
  128. package/dist/cjs/dockview/rootDropTargetService.js +0 -87
  129. package/dist/cjs/dockview/strictEventsSequencing.js +0 -63
  130. package/dist/cjs/dockview/tabGroup.js +0 -219
  131. package/dist/cjs/dockview/tabGroupAccent.js +0 -126
  132. package/dist/cjs/dockview/theme.js +0 -139
  133. package/dist/cjs/dockview/types.js +0 -2
  134. package/dist/cjs/dockview/validate.js +0 -76
  135. package/dist/cjs/dockview/watermarkService.js +0 -61
  136. package/dist/cjs/dom.js +0 -543
  137. package/dist/cjs/events.js +0 -296
  138. package/dist/cjs/framwork.js +0 -2
  139. package/dist/cjs/gridview/baseComponentGridview.js +0 -330
  140. package/dist/cjs/gridview/basePanelView.js +0 -162
  141. package/dist/cjs/gridview/branchNode.js +0 -372
  142. package/dist/cjs/gridview/gridview.js +0 -776
  143. package/dist/cjs/gridview/gridviewComponent.js +0 -363
  144. package/dist/cjs/gridview/gridviewPanel.js +0 -249
  145. package/dist/cjs/gridview/leafNode.js +0 -169
  146. package/dist/cjs/gridview/options.js +0 -17
  147. package/dist/cjs/gridview/types.js +0 -2
  148. package/dist/cjs/index.js +0 -105
  149. package/dist/cjs/lifecycle.js +0 -80
  150. package/dist/cjs/math.js +0 -38
  151. package/dist/cjs/overlay/overlay.js +0 -602
  152. package/dist/cjs/overlay/overlayRenderContainer.js +0 -309
  153. package/dist/cjs/panel/types.js +0 -2
  154. package/dist/cjs/paneview/defaultPaneviewHeader.js +0 -92
  155. package/dist/cjs/paneview/draggablePaneviewPanel.js +0 -141
  156. package/dist/cjs/paneview/options.js +0 -44
  157. package/dist/cjs/paneview/paneview.js +0 -203
  158. package/dist/cjs/paneview/paneviewComponent.js +0 -430
  159. package/dist/cjs/paneview/paneviewPanel.js +0 -275
  160. package/dist/cjs/popoutWindow.js +0 -244
  161. package/dist/cjs/resizable.js +0 -97
  162. package/dist/cjs/scrollbar.js +0 -169
  163. package/dist/cjs/splitview/options.js +0 -19
  164. package/dist/cjs/splitview/splitview.js +0 -999
  165. package/dist/cjs/splitview/splitviewComponent.js +0 -401
  166. package/dist/cjs/splitview/splitviewPanel.js +0 -179
  167. package/dist/cjs/splitview/viewItem.js +0 -119
  168. package/dist/cjs/svg.js +0 -43
  169. package/dist/cjs/types.js +0 -2
  170. package/dist/dockview-core.min.js.map +0 -1
  171. package/dist/dockview-core.min.noStyle.js.map +0 -1
  172. package/dist/esm/api/component.api.d.ts +0 -640
  173. package/dist/esm/api/component.api.js +0 -887
  174. package/dist/esm/api/dockviewGroupPanelApi.d.ts +0 -109
  175. package/dist/esm/api/dockviewGroupPanelApi.js +0 -155
  176. package/dist/esm/api/dockviewPanelApi.d.ts +0 -84
  177. package/dist/esm/api/dockviewPanelApi.js +0 -124
  178. package/dist/esm/api/entryPoints.d.ts +0 -9
  179. package/dist/esm/api/entryPoints.js +0 -21
  180. package/dist/esm/api/gridviewPanelApi.d.ts +0 -37
  181. package/dist/esm/api/gridviewPanelApi.js +0 -23
  182. package/dist/esm/api/panelApi.d.ts +0 -100
  183. package/dist/esm/api/panelApi.js +0 -87
  184. package/dist/esm/api/paneviewPanelApi.d.ts +0 -26
  185. package/dist/esm/api/paneviewPanelApi.js +0 -27
  186. package/dist/esm/api/splitviewPanelApi.d.ts +0 -32
  187. package/dist/esm/api/splitviewPanelApi.js +0 -25
  188. package/dist/esm/array.d.ts +0 -13
  189. package/dist/esm/array.js +0 -57
  190. package/dist/esm/constants.d.ts +0 -8
  191. package/dist/esm/constants.js +0 -8
  192. package/dist/esm/dnd/backend.d.ts +0 -70
  193. package/dist/esm/dnd/backend.js +0 -148
  194. package/dist/esm/dnd/dataTransfer.d.ts +0 -31
  195. package/dist/esm/dnd/dataTransfer.js +0 -67
  196. package/dist/esm/dnd/dnd.d.ts +0 -32
  197. package/dist/esm/dnd/dnd.js +0 -51
  198. package/dist/esm/dnd/dropOverlay.d.ts +0 -20
  199. package/dist/esm/dnd/dropOverlay.js +0 -192
  200. package/dist/esm/dnd/dropTargetAnchorContainer.d.ts +0 -16
  201. package/dist/esm/dnd/dropTargetAnchorContainer.js +0 -73
  202. package/dist/esm/dnd/droptarget.d.ts +0 -116
  203. package/dist/esm/dnd/droptarget.js +0 -316
  204. package/dist/esm/dnd/ghost.d.ts +0 -4
  205. package/dist/esm/dnd/ghost.js +0 -14
  206. package/dist/esm/dnd/pointer/index.d.ts +0 -11
  207. package/dist/esm/dnd/pointer/index.js +0 -5
  208. package/dist/esm/dnd/pointer/longPress.d.ts +0 -32
  209. package/dist/esm/dnd/pointer/longPress.js +0 -127
  210. package/dist/esm/dnd/pointer/pointerDragController.d.ts +0 -60
  211. package/dist/esm/dnd/pointer/pointerDragController.js +0 -193
  212. package/dist/esm/dnd/pointer/pointerDragSource.d.ts +0 -61
  213. package/dist/esm/dnd/pointer/pointerDragSource.js +0 -173
  214. package/dist/esm/dnd/pointer/pointerDropTarget.d.ts +0 -39
  215. package/dist/esm/dnd/pointer/pointerDropTarget.js +0 -168
  216. package/dist/esm/dnd/pointer/pointerGhost.d.ts +0 -30
  217. package/dist/esm/dnd/pointer/pointerGhost.js +0 -39
  218. package/dist/esm/dnd/pointer/types.d.ts +0 -16
  219. package/dist/esm/dnd/pointer/types.js +0 -1
  220. package/dist/esm/dockview/accessibilityMessages.d.ts +0 -32
  221. package/dist/esm/dockview/accessibilityMessages.js +0 -30
  222. package/dist/esm/dockview/allModules.d.ts +0 -8
  223. package/dist/esm/dockview/allModules.js +0 -22
  224. package/dist/esm/dockview/components/panel/content.d.ts +0 -54
  225. package/dist/esm/dockview/components/panel/content.js +0 -185
  226. package/dist/esm/dockview/components/popupService.d.ts +0 -21
  227. package/dist/esm/dockview/components/popupService.js +0 -108
  228. package/dist/esm/dockview/components/tab/defaultTab.d.ts +0 -12
  229. package/dist/esm/dockview/components/tab/defaultTab.js +0 -43
  230. package/dist/esm/dockview/components/tab/tab.d.ts +0 -44
  231. package/dist/esm/dockview/components/tab/tab.js +0 -242
  232. package/dist/esm/dockview/components/titlebar/floatingTitleBar.d.ts +0 -34
  233. package/dist/esm/dockview/components/titlebar/floatingTitleBar.js +0 -65
  234. package/dist/esm/dockview/components/titlebar/groupDragSource.d.ts +0 -51
  235. package/dist/esm/dockview/components/titlebar/groupDragSource.js +0 -178
  236. package/dist/esm/dockview/components/titlebar/tabGroupChip.d.ts +0 -37
  237. package/dist/esm/dockview/components/titlebar/tabGroupChip.js +0 -77
  238. package/dist/esm/dockview/components/titlebar/tabGroupIndicator.d.ts +0 -72
  239. package/dist/esm/dockview/components/titlebar/tabGroupIndicator.js +0 -360
  240. package/dist/esm/dockview/components/titlebar/tabGroups.d.ts +0 -107
  241. package/dist/esm/dockview/components/titlebar/tabGroups.js +0 -621
  242. package/dist/esm/dockview/components/titlebar/tabOverflowControl.d.ts +0 -8
  243. package/dist/esm/dockview/components/titlebar/tabOverflowControl.js +0 -16
  244. package/dist/esm/dockview/components/titlebar/tabs.d.ts +0 -167
  245. package/dist/esm/dockview/components/titlebar/tabs.js +0 -1653
  246. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +0 -104
  247. package/dist/esm/dockview/components/titlebar/tabsContainer.js +0 -359
  248. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +0 -21
  249. package/dist/esm/dockview/components/titlebar/voidContainer.js +0 -92
  250. package/dist/esm/dockview/components/watermark/watermark.d.ts +0 -8
  251. package/dist/esm/dockview/components/watermark/watermark.js +0 -14
  252. package/dist/esm/dockview/deserializer.d.ts +0 -12
  253. package/dist/esm/dockview/deserializer.js +0 -34
  254. package/dist/esm/dockview/dndCapabilities.d.ts +0 -19
  255. package/dist/esm/dockview/dndCapabilities.js +0 -36
  256. package/dist/esm/dockview/dockviewComponent.d.ts +0 -626
  257. package/dist/esm/dockview/dockviewComponent.js +0 -3214
  258. package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts +0 -45
  259. package/dist/esm/dockview/dockviewFloatingGroupPanel.js +0 -44
  260. package/dist/esm/dockview/dockviewGroupPanel.d.ts +0 -35
  261. package/dist/esm/dockview/dockviewGroupPanel.js +0 -142
  262. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +0 -358
  263. package/dist/esm/dockview/dockviewGroupPanelModel.js +0 -1180
  264. package/dist/esm/dockview/dockviewPanel.d.ts +0 -69
  265. package/dist/esm/dockview/dockviewPanel.js +0 -178
  266. package/dist/esm/dockview/dockviewPanelModel.d.ts +0 -37
  267. package/dist/esm/dockview/dockviewPanelModel.js +0 -81
  268. package/dist/esm/dockview/dockviewShell.d.ts +0 -150
  269. package/dist/esm/dockview/dockviewShell.js +0 -678
  270. package/dist/esm/dockview/edgeGroupService.d.ts +0 -38
  271. package/dist/esm/dockview/edgeGroupService.js +0 -63
  272. package/dist/esm/dockview/events.d.ts +0 -38
  273. package/dist/esm/dockview/events.js +0 -34
  274. package/dist/esm/dockview/floatingGroupService.d.ts +0 -37
  275. package/dist/esm/dockview/floatingGroupService.js +0 -150
  276. package/dist/esm/dockview/framework.d.ts +0 -65
  277. package/dist/esm/dockview/framework.js +0 -1
  278. package/dist/esm/dockview/headerActionsService.d.ts +0 -32
  279. package/dist/esm/dockview/headerActionsService.js +0 -86
  280. package/dist/esm/dockview/liveRegionService.d.ts +0 -53
  281. package/dist/esm/dockview/liveRegionService.js +0 -159
  282. package/dist/esm/dockview/moduleContracts.d.ts +0 -119
  283. package/dist/esm/dockview/moduleContracts.js +0 -1
  284. package/dist/esm/dockview/modules.d.ts +0 -110
  285. package/dist/esm/dockview/modules.js +0 -170
  286. package/dist/esm/dockview/options.d.ts +0 -474
  287. package/dist/esm/dockview/options.js +0 -77
  288. package/dist/esm/dockview/popoutWindowService.d.ts +0 -95
  289. package/dist/esm/dockview/popoutWindowService.js +0 -175
  290. package/dist/esm/dockview/rootDropTargetService.d.ts +0 -35
  291. package/dist/esm/dockview/rootDropTargetService.js +0 -82
  292. package/dist/esm/dockview/strictEventsSequencing.d.ts +0 -7
  293. package/dist/esm/dockview/strictEventsSequencing.js +0 -41
  294. package/dist/esm/dockview/tabGroup.d.ts +0 -99
  295. package/dist/esm/dockview/tabGroup.js +0 -144
  296. package/dist/esm/dockview/tabGroupAccent.d.ts +0 -65
  297. package/dist/esm/dockview/tabGroupAccent.js +0 -114
  298. package/dist/esm/dockview/theme.d.ts +0 -86
  299. package/dist/esm/dockview/theme.js +0 -136
  300. package/dist/esm/dockview/types.d.ts +0 -53
  301. package/dist/esm/dockview/types.js +0 -1
  302. package/dist/esm/dockview/validate.d.ts +0 -0
  303. package/dist/esm/dockview/validate.js +0 -76
  304. package/dist/esm/dockview/watermarkService.d.ts +0 -30
  305. package/dist/esm/dockview/watermarkService.js +0 -56
  306. package/dist/esm/dom.d.ts +0 -60
  307. package/dist/esm/dom.js +0 -375
  308. package/dist/esm/events.d.ts +0 -79
  309. package/dist/esm/events.js +0 -219
  310. package/dist/esm/framwork.d.ts +0 -4
  311. package/dist/esm/framwork.js +0 -1
  312. package/dist/esm/gridview/baseComponentGridview.d.ts +0 -111
  313. package/dist/esm/gridview/baseComponentGridview.js +0 -237
  314. package/dist/esm/gridview/basePanelView.d.ts +0 -40
  315. package/dist/esm/gridview/basePanelView.js +0 -91
  316. package/dist/esm/gridview/branchNode.d.ts +0 -57
  317. package/dist/esm/gridview/branchNode.js +0 -257
  318. package/dist/esm/gridview/gridview.d.ts +0 -158
  319. package/dist/esm/gridview/gridview.js +0 -681
  320. package/dist/esm/gridview/gridviewComponent.d.ts +0 -88
  321. package/dist/esm/gridview/gridviewComponent.js +0 -265
  322. package/dist/esm/gridview/gridviewPanel.d.ts +0 -77
  323. package/dist/esm/gridview/gridviewPanel.js +0 -182
  324. package/dist/esm/gridview/leafNode.d.ts +0 -34
  325. package/dist/esm/gridview/leafNode.js +0 -102
  326. package/dist/esm/gridview/options.d.ts +0 -15
  327. package/dist/esm/gridview/options.js +0 -14
  328. package/dist/esm/gridview/types.d.ts +0 -3
  329. package/dist/esm/gridview/types.js +0 -1
  330. package/dist/esm/index.d.ts +0 -58
  331. package/dist/esm/index.js +0 -44
  332. package/dist/esm/lifecycle.d.ts +0 -25
  333. package/dist/esm/lifecycle.js +0 -56
  334. package/dist/esm/math.d.ts +0 -5
  335. package/dist/esm/math.js +0 -32
  336. package/dist/esm/overlay/overlay.d.ts +0 -91
  337. package/dist/esm/overlay/overlay.js +0 -520
  338. package/dist/esm/overlay/overlayRenderContainer.d.ts +0 -24
  339. package/dist/esm/overlay/overlayRenderContainer.js +0 -249
  340. package/dist/esm/panel/types.d.ts +0 -33
  341. package/dist/esm/panel/types.js +0 -1
  342. package/dist/esm/paneview/defaultPaneviewHeader.d.ts +0 -21
  343. package/dist/esm/paneview/defaultPaneviewHeader.js +0 -65
  344. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +0 -38
  345. package/dist/esm/paneview/draggablePaneviewPanel.js +0 -107
  346. package/dist/esm/paneview/options.d.ts +0 -30
  347. package/dist/esm/paneview/options.js +0 -22
  348. package/dist/esm/paneview/paneview.d.ts +0 -41
  349. package/dist/esm/paneview/paneview.js +0 -148
  350. package/dist/esm/paneview/paneviewComponent.d.ts +0 -133
  351. package/dist/esm/paneview/paneviewComponent.js +0 -306
  352. package/dist/esm/paneview/paneviewPanel.d.ts +0 -98
  353. package/dist/esm/paneview/paneviewPanel.js +0 -192
  354. package/dist/esm/popoutWindow.d.ts +0 -38
  355. package/dist/esm/popoutWindow.js +0 -170
  356. package/dist/esm/resizable.d.ts +0 -12
  357. package/dist/esm/resizable.js +0 -66
  358. package/dist/esm/scrollbar.d.ts +0 -15
  359. package/dist/esm/scrollbar.js +0 -139
  360. package/dist/esm/splitview/options.d.ts +0 -21
  361. package/dist/esm/splitview/options.js +0 -16
  362. package/dist/esm/splitview/splitview.d.ts +0 -145
  363. package/dist/esm/splitview/splitview.js +0 -770
  364. package/dist/esm/splitview/splitviewComponent.d.ts +0 -101
  365. package/dist/esm/splitview/splitviewComponent.js +0 -267
  366. package/dist/esm/splitview/splitviewPanel.d.ts +0 -45
  367. package/dist/esm/splitview/splitviewPanel.js +0 -108
  368. package/dist/esm/splitview/viewItem.d.ts +0 -25
  369. package/dist/esm/splitview/viewItem.js +0 -74
  370. package/dist/esm/svg.d.ts +0 -3
  371. package/dist/esm/svg.js +0 -31
  372. package/dist/esm/types.d.ts +0 -31
  373. package/dist/esm/types.js +0 -1
  374. package/dist/styles/dockview.css +0 -3436
@@ -8,9 +8,10 @@ import { DockviewMessages } from './accessibilityMessages';
8
8
  export type { DockviewMessages } from './accessibilityMessages';
9
9
  import { PanelTransfer } from '../dnd/dataTransfer';
10
10
  import { IDisposable } from '../lifecycle';
11
- import { Box } from '../types';
12
- import { DroptargetOverlayModel, Position } from '../dnd/droptarget';
11
+ import { Box, DragModifiers } from '../types';
12
+ import { DroptargetOverlayModel, Position, PositionResolver } from '../dnd/droptarget';
13
13
  import { GroupOptions } from './dockviewGroupPanelModel';
14
+ import { EdgeGroupPosition } from './dockviewShell';
14
15
  import { DockviewGroupDropLocation } from './events';
15
16
  import { IDockviewPanel } from './dockviewPanel';
16
17
  import { DockviewPanelRenderer } from '../overlay/overlayRenderContainer';
@@ -21,14 +22,14 @@ import { AcceptableEvent, IAcceptableEvent } from '../events';
21
22
  import { DockviewTheme } from './theme';
22
23
  import { ITabGroup } from './tabGroup';
23
24
  import { CspNonceProvider } from '../dom';
24
- export { CspNonceProvider };
25
+ export { type CspNonceProvider };
25
26
  import { DockviewTabGroupColorEntry } from './tabGroupAccent';
26
27
  export interface IHeaderActionsRenderer extends IDisposable {
27
28
  readonly element: HTMLElement;
28
29
  init(params: IGroupHeaderProps): void;
29
30
  }
30
- export type BuiltInContextMenuItem = 'close' | 'closeOthers' | 'closeAll' | 'separator';
31
- export type BuiltInChipContextMenuItem = 'separator' | 'colorPicker' | 'rename';
31
+ export type BuiltInContextMenuItem = 'close' | 'closeOthers' | 'closeAll' | 'closeLeft' | 'closeRight' | 'maximize' | 'float' | 'popout' | 'separator' | 'pin';
32
+ export type BuiltInChipContextMenuItem = 'separator' | 'colorPicker' | 'rename' | 'collapse' | 'close';
32
33
  export interface ContextMenuItemConfig {
33
34
  label?: string;
34
35
  /**
@@ -52,13 +53,13 @@ export interface DropOverlayModelParams {
52
53
  /** The group the target belongs to, where known (tab / header_space / content). */
53
54
  group?: DockviewGroupPanel;
54
55
  }
55
- /** A layout change to be announced — see the `getAnnouncement` option. */
56
+ /** A layout change to be announced; see the `getAnnouncement` option. */
56
57
  export interface LiveRegionEvent {
57
58
  /**
58
59
  * What changed: a panel was added (`'open'`) or removed (`'close'`); a
59
60
  * group was maximized (`'maximize'`) / restored (`'restore'`); or a group
60
61
  * moved to a floating window (`'float'`), back into the grid (`'dock'`), or
61
- * out to a popout window (`'popout'`). `panel` is the affected panel — for
62
+ * out to a popout window (`'popout'`). `panel` is the affected panel; for
62
63
  * group events, the group's active panel.
63
64
  */
64
65
  kind: 'open' | 'close' | 'maximize' | 'restore' | 'float' | 'dock' | 'popout';
@@ -89,6 +90,11 @@ export interface DockviewKeybindings {
89
90
  focusPrevGroup: string;
90
91
  /** Move focus from panel content to the focused group's tab strip. Default `ctrl+shift+\`. */
91
92
  focusTabs: string;
93
+ /**
94
+ * Pin / unpin the active panel's tab. Default `ctrl+shift+enter`. Inert
95
+ * unless the pinned-tabs feature is enabled (`pinnedTabs.enabled`).
96
+ */
97
+ togglePin: string;
92
98
  }
93
99
  export interface KeyboardNavigationOptions {
94
100
  /** Override individual {@link DockviewKeybindings}; unset keys keep their defaults. */
@@ -114,9 +120,23 @@ export interface IContextMenuItemComponentProps {
114
120
  close: () => void;
115
121
  componentProps?: object;
116
122
  }
123
+ /**
124
+ * Props passed to a `component` menu item rendered in the tab group chip
125
+ * context menu. Mirrors {@link IContextMenuItemComponentProps} but carries the
126
+ * `tabGroup` the chip represents in place of a single `panel`: a chip spans
127
+ * several panels, so there is no one panel to hand over.
128
+ */
129
+ export interface IChipContextMenuItemComponentProps {
130
+ tabGroup: ITabGroup;
131
+ group: DockviewGroupPanel;
132
+ api: DockviewApi;
133
+ /** Call to close the context menu */
134
+ close: () => void;
135
+ componentProps?: object;
136
+ }
117
137
  export interface IContextMenuItemRenderer extends IDisposable {
118
138
  readonly element: HTMLElement;
119
- init(props: IContextMenuItemComponentProps): void;
139
+ init(props: IContextMenuItemComponentProps | IChipContextMenuItemComponentProps): void;
120
140
  }
121
141
  export interface CreateContextMenuItemComponentOptions {
122
142
  id: string;
@@ -148,6 +168,124 @@ export interface FloatingGroupDragContext {
148
168
  * snapshotted at drag start.
149
169
  */
150
170
  readonly others: readonly Box[];
171
+ /** Modifier-key state from this frame's pointer event. */
172
+ readonly modifiers: DragModifiers;
173
+ }
174
+ /** A keyboard modifier that, while held, suspends Smart Guides snapping. */
175
+ export type SnapModifier = 'alt' | 'ctrl' | 'meta' | 'shift';
176
+ /** Which alignment sources Smart Guides snaps a dragged floating group to. */
177
+ export interface SmartGuidesSnapTargets {
178
+ /** Align to the other floating groups' edges + centers. Default `true`. */
179
+ floats?: boolean;
180
+ /** Align to the container's edges + center. Default `true`. */
181
+ container?: boolean;
182
+ /** Also emit inset guide lines this many px inside the container edges
183
+ * (e.g. a content margin). Default `undefined` (no inset lines). */
184
+ containerInset?: number;
185
+ /** Align to the underlying grid's splitter (sash) positions. Default
186
+ * `false`. */
187
+ splitters?: boolean;
188
+ }
189
+ /**
190
+ * Options for the Smart Guides module: Figma-style alignment guides + magnetic
191
+ * snapping while dragging a floating group. Omit `smartGuides` entirely to leave
192
+ * float dragging unchanged: the module is then inert and the drag loop is a
193
+ * byte-for-byte pass-through.
194
+ */
195
+ export interface SmartGuidesOptions {
196
+ /** Master switch. Defaults to `true` when `smartGuides` is present. */
197
+ enabled?: boolean;
198
+ /** Distance, in px, within which a dragged edge/center engages a snap.
199
+ * Default `8`. */
200
+ snapDistance?: number;
201
+ /** Extra px beyond `snapDistance` the pointer must travel before an engaged
202
+ * snap releases; asymmetric hysteresis that stops boundary oscillation.
203
+ * Default `4`. */
204
+ releaseDistance?: number;
205
+ /** Render the alignment guide lines while snapping. Default `true`. */
206
+ showGuides?: boolean;
207
+ /** Detect a dock/merge intent when the dragged float comes flush against
208
+ * another float (edge-adjacency) or overlaps its tab strip (tabset merge),
209
+ * and commit it on drop. Opt-in: Smart Guides is an alignment-only tool by
210
+ * default and never merges floating groups unless this is set. Default
211
+ * `false`. */
212
+ snapTogether?: boolean;
213
+ /** Which alignment sources to snap against (floats + container by default). */
214
+ snapTargets?: SmartGuidesSnapTargets;
215
+ /** Hold this modifier while dragging to temporarily suspend snapping +
216
+ * guides (Figma/Keynote parity). `false` disables the gate. Default
217
+ * `'alt'`. */
218
+ disableSnapModifier?: SnapModifier | false;
219
+ /** Extra class applied to the guide overlay layer, for theming. */
220
+ className?: string;
221
+ }
222
+ /**
223
+ * The CSS class the `MultiRowTabsModule` toggles on a group's tab list
224
+ * (`.dv-tabs-container`) to switch it into wrap layout. Shared here so core
225
+ * (the reorder controller's wrap detection + the SCSS rules) and the module
226
+ * agree on the one string; renaming it in one place would otherwise silently
227
+ * break the seam across the package boundary.
228
+ */
229
+ export declare const OVERFLOW_WRAP_TABS_CLASS = "dv-tabs-container--wrap";
230
+ /**
231
+ * The CSS class the `MultiRowTabsModule` adds alongside
232
+ * {@link OVERFLOW_WRAP_TABS_CLASS} once `overflow.maxRows` is set. It clips the
233
+ * wrapped strip to `--dv-max-tab-rows` rows (the surplus rows spill to the
234
+ * dropdown) so the header stops growing at the cap. Shared here so core (SCSS)
235
+ * and the module agree on the one string.
236
+ */
237
+ export declare const OVERFLOW_WRAP_TABS_CAPPED_CLASS = "dv-tabs-container--wrap-capped";
238
+ /**
239
+ * The custom property the `MultiRowTabsModule` sets on a capped wrapped strip to
240
+ * carry the `overflow.maxRows` value into the SCSS `max-height` calc. Shared for
241
+ * the same reason as the class names above.
242
+ */
243
+ export declare const OVERFLOW_MAX_TAB_ROWS_VARIABLE = "--dv-max-tab-rows";
244
+ /**
245
+ * The custom property the `MultiRowTabsModule` sets on a wrapped vertical
246
+ * (edge-group) tab list to pin every wrapped tab to a single, uniform height:
247
+ * the tallest tab's natural height, measured live by the controller. A vertical
248
+ * tab's natural height tracks its (rotated) title length, so a column only fits
249
+ * a handful of tabs and tiny per-tab height differences flip how many fit,
250
+ * ragged-ing the wrapped grid into a staircase. Pinning one height makes every
251
+ * column hold the same count, so the columns line up as a clean grid (the mirror
252
+ * of the horizontal wrap, whose tabs share the fixed row height). Shared here so
253
+ * core (SCSS) and the module agree on the one string. Only meaningful in vertical
254
+ * wrap; a horizontal strip never sets it and the SCSS falls back to auto height.
255
+ */
256
+ export declare const OVERFLOW_WRAP_TABS_VERTICAL_TAB_HEIGHT_VARIABLE = "--dv-wrap-vertical-tab-height";
257
+ /**
258
+ * Tab-header overflow behaviour. One shared block across the overflow axis:
259
+ * `mode` chooses dropdown vs wrap; the remaining fields enrich the dropdown.
260
+ * Each capability names the module it needs; without that module the field is
261
+ * ignored and the free single-row strip + dropdown is used.
262
+ */
263
+ export interface DockviewOverflowOptions {
264
+ /**
265
+ * What happens when tabs don't fit. Default `'dropdown'` (today's free
266
+ * path). `'wrap'` requires the `MultiRowTabsModule`.
267
+ */
268
+ mode?: 'dropdown' | 'wrap';
269
+ /**
270
+ * Wrap mode only: cap the number of header rows. The strip grows to at most
271
+ * `maxRows` rows; tabs that would land on a row beyond the cap spill into the
272
+ * overflow dropdown instead. Requires the `MultiRowTabsModule`. Default:
273
+ * unbounded (wrap grows to fit every tab).
274
+ */
275
+ maxRows?: number;
276
+ /**
277
+ * Filter input over the group's tabs. Reserved for `AdvancedOverflowModule`;
278
+ * ignored until that module is present. Default: false.
279
+ */
280
+ search?: boolean | {
281
+ placeholder?: string;
282
+ scope?: 'overflow' | 'group';
283
+ };
284
+ /**
285
+ * Order the dropdown by most-recently-activated. Reserved for
286
+ * `AdvancedOverflowModule`; ignored until present. Default: false.
287
+ */
288
+ mru?: boolean;
151
289
  }
152
290
  export interface DockviewOptions {
153
291
  /**
@@ -166,7 +304,7 @@ export interface DockviewOptions {
166
304
  * Adjust a floating group's position while it is being dragged. Runs on
167
305
  * each pointer-move frame with the proposed top-left (before the container
168
306
  * clamp) and returns an adjusted top-left, or nothing to leave it
169
- * unchanged. Use it for snapping, alignment, or custom bounds. Move only —
307
+ * unchanged. Use it for snapping, alignment, or custom bounds. Move only:
170
308
  * resizing a floating group is unaffected.
171
309
  *
172
310
  * `context.others` holds the bounds of the other floating groups (relative
@@ -177,6 +315,12 @@ export interface DockviewOptions {
177
315
  top: number;
178
316
  left: number;
179
317
  } | void;
318
+ /**
319
+ * Enable Smart Guides: alignment guides + magnetic snapping while a
320
+ * floating group is being dragged. Omit to disable entirely (float dragging
321
+ * is then unchanged). Provided by the Smart Guides module.
322
+ */
323
+ smartGuides?: SmartGuidesOptions;
180
324
  /**
181
325
  * Selects which element moves a floating group when dragged.
182
326
  *
@@ -184,7 +328,7 @@ export interface DockviewOptions {
184
328
  * above the group's tab bar. Dragging it moves the floating window;
185
329
  * shift+drag (mouse) / long-press (touch) redocks into the grid. Style
186
330
  * it with the `--dv-floating-titlebar-*` theme variables.
187
- * - `'tabbar'`: the legacy behaviour — the empty space in the tab bar
331
+ * - `'tabbar'`: the legacy behaviour, where the empty space in the tab bar
188
332
  * (the "void container") doubles as the move handle. No dedicated bar
189
333
  * is rendered.
190
334
  */
@@ -206,9 +350,29 @@ export interface DockviewOptions {
206
350
  * browsers, certain Safari versions, embedded webviews). Cross-window
207
351
  * HTML5 drag and the HTML5 native drag image are not available in this
208
352
  * mode.
209
- * - `'html5'`: HTML5 drag-and-drop only — disables touch / pen drag.
353
+ * - `'html5'`: HTML5 drag-and-drop only; disables touch / pen drag.
210
354
  */
211
355
  dndStrategy?: DockviewDndStrategy;
356
+ /**
357
+ * Override how a pointer location maps to a drop {@link Position} (or `null`
358
+ * for no drop) on the 5-way group/layout drop targets (the group content
359
+ * and the whole-layout edges), replacing the built-in cursor-quadrant logic.
360
+ * Tab/header reorder targets are unaffected. Unset ⇒ the default quadrant
361
+ * behaviour, unchanged. Read live, so it can be swapped via
362
+ * {@link DockviewApi.updateOptions}.
363
+ */
364
+ dropPositionResolver?: PositionResolver;
365
+ /**
366
+ * Show an aim-at-a-cell DnD compass over a group while dragging,
367
+ * instead of resolving the drop by which quadrant the cursor is in. Default
368
+ * off ⇒ the cursor-quadrant behaviour, unchanged. Provided by the DnD compass
369
+ * module. Pass an object to restrict which inner cells appear (`zones`) or to
370
+ * hide the outer whole-layout-edge cells (`edges: false`, default on).
371
+ */
372
+ dndCompass?: boolean | {
373
+ zones?: Position[];
374
+ edges?: boolean;
375
+ };
212
376
  locked?: boolean;
213
377
  className?: string;
214
378
  /**
@@ -217,6 +381,20 @@ export interface DockviewOptions {
217
381
  noPanelsOverlay?: 'emptyGroup' | 'watermark';
218
382
  theme?: DockviewTheme;
219
383
  disableTabsOverflowList?: boolean;
384
+ /**
385
+ * How the tab header behaves when there are more tabs than fit on one row.
386
+ *
387
+ * The single-row strip + chevron dropdown is the default and is free. The
388
+ * `'wrap'` mode (tabs wrap onto multiple rows and the header grows) requires
389
+ * the `MultiRowTabsModule`; without that module `'wrap'` is ignored and the
390
+ * dropdown is used. The `search`/`mru` fields enrich the
391
+ * dropdown and require the `AdvancedOverflowModule`; they are ignored when
392
+ * that module is absent.
393
+ *
394
+ * Omitting `overflow` is identical to today's behaviour
395
+ * (`mode: 'dropdown'`).
396
+ */
397
+ overflow?: DockviewOverflowOptions;
220
398
  /**
221
399
  * Select `native` to use built-in scrollbar behaviours and `custom` to use an internal implementation
222
400
  * that allows for improved scrollbar overlay UX.
@@ -227,8 +405,21 @@ export interface DockviewOptions {
227
405
  /**
228
406
  * Return the items to display in the tab context menu on right-click.
229
407
  *
230
- * Use built-in string shortcuts (`'close'`, `'closeOthers'`, `'closeAll'`, `'separator'`)
231
- * or provide a `ContextMenuItemConfig` object for custom items.
408
+ * Use built-in string shortcuts or provide a `ContextMenuItemConfig`
409
+ * object for custom items. The available shortcuts are:
410
+ * - `'close'`: close this panel
411
+ * - `'closeOthers'`: close every other panel in the group
412
+ * - `'closeAll'`: close every panel in the group
413
+ * - `'closeLeft'` / `'closeRight'`: close the panels before / after this
414
+ * one in the tab strip
415
+ * - `'maximize'`: maximize the group (renders as *Restore* and disables
416
+ * for non-grid panels, tracking the group's live maximized state)
417
+ * - `'float'`: move the panel into a floating window (disabled when
418
+ * already floating)
419
+ * - `'popout'`: move the panel into a new browser window (disabled when
420
+ * already popped out)
421
+ * - `'pin'`: toggle the panel's pinned state (PinnedTabs module)
422
+ * - `'separator'`: a divider line
232
423
  *
233
424
  * If omitted, no context menu is shown.
234
425
  * Return an empty array to suppress the menu for specific cases.
@@ -237,10 +428,14 @@ export interface DockviewOptions {
237
428
  /**
238
429
  * Return the items to display in the tab group chip context menu on right-click.
239
430
  *
240
- * Use built-in string shortcuts (`'separator'`, `'colorPicker'`, `'rename'`) or provide a
241
- * `ContextMenuItemConfig` object for custom items.
242
- * `'colorPicker'` renders a native grid of color swatches for the tab group.
243
- * `'rename'` renders an inline text input to rename the tab group.
431
+ * Use built-in string shortcuts or provide a `ContextMenuItemConfig`
432
+ * object for custom items. The available shortcuts are:
433
+ * - `'rename'`: renders an inline text input to rename the tab group
434
+ * - `'colorPicker'`: renders a grid of color swatches for the tab group
435
+ * - `'collapse'`: collapse the tab group (renders as *Expand* when the
436
+ * group is already collapsed)
437
+ * - `'close'`: close every panel belonging to the tab group
438
+ * - `'separator'`: a divider line
244
439
  *
245
440
  * If omitted, no context menu is shown on chip right-click.
246
441
  * Return an empty array to suppress the menu for specific cases.
@@ -261,7 +456,7 @@ export interface DockviewOptions {
261
456
  */
262
457
  createGroupDragGhostComponent?: (group: DockviewGroupPanel) => IGroupDragGhostRenderer;
263
458
  /**
264
- * Shape the drop overlay shown over a group's drop targets — the tab
459
+ * Shape the drop overlay shown over a group's drop targets: the tab
265
460
  * strip (`'tab'`), the header void space (`'header_space'`) and the
266
461
  * panel content area (`'content'`). Return a {@link DroptargetOverlayModel}
267
462
  * to override that target's default overlay (size, activation threshold,
@@ -274,7 +469,7 @@ export interface DockviewOptions {
274
469
  dropOverlayModel?: (params: DropOverlayModelParams) => DroptargetOverlayModel | undefined;
275
470
  /**
276
471
  * Built-in screen-reader announcements of layout changes (a visually-hidden
277
- * `aria-live` region narrating panel open/close etc.). On by default —
472
+ * `aria-live` region narrating panel open/close etc.). On by default;
278
473
  * set to `false` to disable, e.g. when the host app provides its own
279
474
  * announcement system. Honoured live via `updateOptions`.
280
475
  */
@@ -283,7 +478,7 @@ export interface DockviewOptions {
283
478
  * Localise or override the built-in announcement strings (the default
284
479
  * messages are English). Return a string to use it, `null` / `''` to
285
480
  * suppress that announcement, or `undefined` to keep the default. This is
286
- * how non-English apps translate announcements — core ships no message
481
+ * how non-English apps translate announcements; core ships no message
287
482
  * catalog, only the default strings + this hook.
288
483
  */
289
484
  getAnnouncement?: (event: LiveRegionEvent) => string | null | undefined;
@@ -295,11 +490,11 @@ export interface DockviewOptions {
295
490
  */
296
491
  announcer?: (event: AnnouncementEvent) => void;
297
492
  /**
298
- * Translate / override the strings dockview speaks to assistive technology
299
- * — both the LiveRegion announcements and the keyboard-docking narration.
300
- * Provide any subset of {@link DockviewMessages}; unset entries keep the
301
- * English defaults. (`getAnnouncement` still applies first, per-event, for
302
- * announcements.)
493
+ * Translate / override the strings dockview speaks to assistive technology,
494
+ * covering both the LiveRegion announcements and the keyboard-docking
495
+ * narration. Provide any subset of {@link DockviewMessages}; unset entries
496
+ * keep the English defaults. (`getAnnouncement` still applies first,
497
+ * per-event, for announcements.)
303
498
  */
304
499
  messages?: Partial<DockviewMessages>;
305
500
  /**
@@ -307,10 +502,10 @@ export interface DockviewOptions {
307
502
  * pass an object to override individual ones via `keymap`. Off by default
308
503
  * (opt-in while the feature matures). Enables:
309
504
  *
310
- * - **Switch tab** within the focused group — `Ctrl`+`]` / `Ctrl`+`[`.
311
- * - **Move focus between groups** — `F6` / `Shift`+`F6` (sequential) or
505
+ * - **Switch tab** within the focused group: `Ctrl`+`]` / `Ctrl`+`[`.
506
+ * - **Move focus between groups**: `F6` / `Shift`+`F6` (sequential) or
312
507
  * `Ctrl`+`Shift`+arrow keys (spatial: focus the group in that direction).
313
- * - **Dock the active panel** without a mouse — `Ctrl`+`M` arms a two-phase
508
+ * - **Dock the active panel** without a mouse: `Ctrl`+`M` arms a two-phase
314
509
  * move (arrows cycle the target group with a live drop preview +
315
510
  * screen-reader narration, `Enter` docks, `Escape` cancels).
316
511
  *
@@ -319,15 +514,54 @@ export interface DockviewOptions {
319
514
  * rebind for your platform.
320
515
  */
321
516
  keyboardNavigation?: boolean | KeyboardNavigationOptions;
517
+ /**
518
+ * Undo / redo for layout mutations (close / move / float / popout / add /
519
+ * maximize / tab-group changes). Off by default; set `{ enabled: true }`
520
+ * to record. Drive it via `api.undo()` / `api.redo()`; dockview binds no
521
+ * keys itself (that's the host app's call, and collides with the keyboard
522
+ * navigation keymap). Honoured live via `updateOptions`.
523
+ */
524
+ layoutHistory?: LayoutHistoryOptions;
525
+ /**
526
+ * VS Code-style "auto hide" for edge groups: render clickable activators in
527
+ * a collapsed edge group's strip so it can be pinned back. Off by default →
528
+ * today's baseline (an empty collapsed strip) is unchanged.
529
+ *
530
+ * A per-edge set: `true` applies to all four edges, or name edges
531
+ * individually (`{ left: true, bottom: true }`). An edge group at an edge
532
+ * not in the set stays a static collapsing sidebar. A per-group
533
+ * `api.setEdgeGroupAutoHide()` override wins over this default. Peek
534
+ * animation is tuned globally via `edgeGroupPeek`.
535
+ */
536
+ autoHideEdgeGroups?: EdgeGroupSet;
537
+ /**
538
+ * Let panels dragged to a layout edge create/fill an **edge group** that is
539
+ * invisible when empty (VS Code-style "drag a panel to the far edge → new
540
+ * sidebar"). Created on drop; torn down to zero footprint when its last
541
+ * panel leaves.
542
+ *
543
+ * A per-edge set: `true` enables dock-to-edge on all four edges, or name
544
+ * edges individually. Off by default.
545
+ *
546
+ * Requires the `AutoEdgeGroup` module (and the `EdgeGroup` module it builds
547
+ * on); a no-op if absent, where a root-edge drop splits the grid as usual.
548
+ * Distinct from `dndEdges`, which only shapes the outer drop overlay (and
549
+ * still splits the grid).
550
+ */
551
+ dockToEdgeGroups?: EdgeGroupSet;
552
+ /**
553
+ * Peek interaction tuning for `autoHideEdgeGroups` (global, not per-edge).
554
+ */
555
+ edgeGroupPeek?: EdgeGroupPeekOptions;
322
556
  /**
323
557
  * Replace the built-in tab group color palette with a user-defined list.
324
558
  *
325
559
  * Each entry has an `id` (stored on `tabGroup.color` and serialized),
326
- * a `value` (any CSS color expression — hex, rgb(), `var(...)`, etc.),
560
+ * a `value` (any CSS color expression: hex, rgb(), `var(...)`, etc.),
327
561
  * and an optional `label` shown in the context menu picker.
328
562
  *
329
563
  * If omitted, the default 9-color palette is used. The list fully
330
- * replaces the defaults — there is no merge.
564
+ * replaces the defaults; there is no merge.
331
565
  */
332
566
  tabGroupColors?: DockviewTabGroupColorEntry[];
333
567
  /**
@@ -341,7 +575,80 @@ export interface DockviewOptions {
341
575
  * custom chip renderers can still read it and roll their own visual.
342
576
  */
343
577
  tabGroupAccent?: 'palette' | 'off';
578
+ /**
579
+ * Pin tabs so they render before all unpinned tabs in their group, never
580
+ * overflow into the dropdown, and resist reorder across the pin boundary.
581
+ * Modelled on VS Code / Chrome pinned tabs. Owned by the PinnedTabs
582
+ * module; dormant unless `enabled` is set.
583
+ */
584
+ pinnedTabs?: PinnedTabsOptions;
344
585
  }
586
+ export interface PinnedTabsOptions {
587
+ /** Master switch. Default: undefined (dormant; pinning is a no-op). */
588
+ enabled?: boolean;
589
+ /**
590
+ * `'inline'` (default) keeps pinned tabs first within the existing strip;
591
+ * `'separate-row'` renders them on their own VS-Code-style row.
592
+ * (Phase 1 implements `'inline'` only.)
593
+ */
594
+ mode?: 'inline' | 'separate-row';
595
+ /**
596
+ * Render pinned tabs icon-only (title + close button hidden), VS-Code /
597
+ * Chrome style. Default false; dockview's default tab has no favicon, so
598
+ * pinned tabs stay labelled (with a pin glyph) unless you opt in. Best
599
+ * enabled alongside a custom tab renderer that shows an icon.
600
+ */
601
+ compact?: boolean;
602
+ /**
603
+ * Drag a tab across the pin boundary to toggle its pinned state
604
+ * (VS-Code-style). Default false; dragging across the boundary is clamped
605
+ * back, matching Chrome, where pinning is an explicit action only.
606
+ */
607
+ togglePinOnCrossBoundaryDrag?: boolean;
608
+ /**
609
+ * In `'inline'` mode, keep pinned tabs frozen to the left edge when the tab
610
+ * strip scrolls horizontally (Chrome-style sticky columns); each pinned tab
611
+ * sits at the cumulative width of the pinned tabs before it. Default true;
612
+ * set `false` to let pinned tabs scroll away with the rest. Ignored in
613
+ * `'separate-row'` mode, where the pinned row is always visible.
614
+ */
615
+ stickyScroll?: boolean;
616
+ /** Add a Pin/Unpin item to the tab context menu (requires ContextMenuModule). Default true. */
617
+ contextMenuItem?: boolean;
618
+ }
619
+ export interface LayoutHistoryOptions {
620
+ /** Record mutations. Default `false` (module is registered but inert). */
621
+ enabled?: boolean;
622
+ /** Max undo depth (bounded ring). Default `25`. */
623
+ depth?: number;
624
+ /** Also record mutations originating from `DockviewApi` calls (the app's
625
+ * own programmatic changes). Default `false`; only user gestures. */
626
+ undoableProgrammaticMutations?: boolean;
627
+ /** Clear the stacks when the whole layout is replaced via `fromJSON` /
628
+ * `clear`. Default `true`. */
629
+ clearOnFromJSON?: boolean;
630
+ /** Record sash-resize as undoable steps, coalescing a continuous drag into
631
+ * a single entry. Default `true`. */
632
+ recordResize?: boolean;
633
+ /** Debounce window (ms) for coalescing a continuous resize drag into one
634
+ * undo entry. Default `400`. */
635
+ coalesceMs?: number;
636
+ }
637
+ export interface EdgeGroupPeekOptions {
638
+ /** Slide the peek overlay in. Default true; ignored when the OS requests
639
+ * reduced motion. */
640
+ animate?: boolean;
641
+ }
642
+ /**
643
+ * A per-edge on/off set for edge-group options. A `boolean` applies to all
644
+ * four edges; an object opts edges in individually (an omitted or `false`
645
+ * edge is off).
646
+ */
647
+ export type EdgeGroupSet = boolean | Partial<Record<EdgeGroupPosition, boolean>>;
648
+ /** Whether `position` is enabled in a per-edge {@link EdgeGroupSet}. */
649
+ export declare function isEdgeGroupEnabled(set: EdgeGroupSet | undefined, position: EdgeGroupPosition): boolean;
650
+ /** Whether any edge is enabled in a per-edge {@link EdgeGroupSet}. */
651
+ export declare function isAnyEdgeGroupEnabled(set: EdgeGroupSet | undefined): boolean;
345
652
  export type TabAnimation = 'smooth' | 'default';
346
653
  export interface DockviewDndOverlayEvent extends IAcceptableEvent {
347
654
  /** Narrow with `instanceof DragEvent` before reading `dataTransfer`. */
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Maps dockview options to the modules that implement them, so setting an
3
+ * option for an absent module reports which module is missing instead of
4
+ * silently doing nothing.
5
+ *
6
+ * This is the "declared intent" diagnostic. It fires when the user asks for a
7
+ * feature via options, at construction and on every `updateOptions`. It
8
+ * deliberately does *not* fire on user interaction: right-clicking without the
9
+ * ContextMenu module stays silent (the browser's own menu shows), because the
10
+ * `?.` service-slot call sites can't tell a missing module from a feature the
11
+ * app never wanted.
12
+ *
13
+ * Rules are a flat list rather than a `Record<keyof DockviewOptions, ...>`
14
+ * because dockview's options are nested and value-gated: `overflow.mode:
15
+ * 'wrap'` needs MultiRowTabs while `overflow.search` needs AdvancedOverflow,
16
+ * so one top-level key maps to several modules depending on its contents. A
17
+ * rule per gated thing also lets `reason` name the exact path the user set,
18
+ * which is the whole point of the message.
19
+ *
20
+ * ## Adding a rule
21
+ *
22
+ * A rule is just "this option needs that module". Whether that makes it paid is
23
+ * not a judgement call: a module is enterprise iff it ships in
24
+ * `dockview-enterprise`'s `Modules` list. {@link ENTERPRISE_MODULE_NAMES}
25
+ * mirrors that list, and a test in dockview-enterprise fails if the two drift,
26
+ * so naming the right module is the only thing you have to get right here.
27
+ *
28
+ * The one trap is picking the module. Don't infer it from what core does at
29
+ * runtime: a core fallback that hands a paid feature to free builds would read
30
+ * as "the option is free" and turn one bug into two. Pick the module that
31
+ * *implements the documented feature*; if core also does it, that is a leak to
32
+ * fix in core, not a reason to drop the rule.
33
+ */
34
+ import { DockviewComponentOptions } from './options';
35
+ export interface OptionModuleRule {
36
+ /**
37
+ * The top-level option this rule gates on. Several rules may share one key
38
+ * (`overflow` gates both MultiRowTabs and AdvancedOverflow); `reason` carries
39
+ * the precise path. Kept separate from `reason` so the completeness test in
40
+ * dockview-enterprise can match rules to the options each module declares
41
+ * without parsing prose.
42
+ */
43
+ optionKey: keyof DockviewComponentOptions;
44
+ /**
45
+ * How the user expressed intent, quoted verbatim into the message. Name
46
+ * the exact option path and value, e.g. `overflow.mode: 'wrap'`.
47
+ */
48
+ reason: string;
49
+ /** The module that implements it. */
50
+ moduleName: string;
51
+ /**
52
+ * Whether `options` requests the feature. Receives the options the caller
53
+ * passed, never the merged set: every key of `DockviewOptions` is present
54
+ * (as `undefined`) on the merged object, so a presence test there is always
55
+ * true. An option left out, `undefined`, or explicitly disabled must return
56
+ * false: silence is correct for a feature nobody asked for.
57
+ */
58
+ when: (options: Partial<DockviewComponentOptions>) => boolean;
59
+ }
60
+ export declare const OPTION_MODULE_RULES: OptionModuleRule[];
61
+ /**
62
+ * Reports any option in `options` whose module isn't registered. Never throws.
63
+ *
64
+ * Reasons are grouped so each missing module produces exactly one message, however
65
+ * many of its options were set: `overflow: { mode: 'wrap', maxRows: 3 }` names
66
+ * both paths in a single MultiRowTabs error rather than repeating the install
67
+ * instructions twice. Logging is deduplicated per module+reasons (see
68
+ * `logMissingModule`), so re-validating on every `updateOptions` stays quiet.
69
+ *
70
+ * Pass the options the caller supplied, not the merged set; see
71
+ * {@link OptionModuleRule.when}.
72
+ */
73
+ export declare function validateOptionModules(options: Partial<DockviewComponentOptions>, isModuleRegistered: (moduleName: string) => boolean): void;
@@ -24,6 +24,18 @@ export interface PopoutGroupEntry {
24
24
  dropTargetContainer: DropTargetAnchorContainer;
25
25
  getWindow: () => Window;
26
26
  popoutUrl?: string;
27
+ /**
28
+ * The window-scoped popup service shared by every group in this popout
29
+ * window (resolved per-member via {@link IPopoutWindowService.findByGroup}
30
+ * so overflow/context menus render in the correct window regardless of
31
+ * which group is the anchor).
32
+ */
33
+ popupService: PopupService;
34
+ /**
35
+ * Promote a new anchor group after the current one leaves the window,
36
+ * rebinding anchor-relative state (focus routing) to it.
37
+ */
38
+ setAnchorGroup: (group: DockviewGroupPanel) => void;
27
39
  disposable: {
28
40
  dispose: () => DockviewGroupPanel | undefined;
29
41
  };
@@ -42,9 +54,6 @@ export interface IPopoutWindowService extends IDisposable {
42
54
  findByGroup(group: DockviewGroupPanel): PopoutGroupEntry | undefined;
43
55
  findReferenceGroupId(group: DockviewGroupPanel): string | undefined;
44
56
  observeGridviewSize(popoutWindow: PopoutWindow, gridview: Gridview, overlayRenderContainer: OverlayRenderContainer): IDisposable | undefined;
45
- getPopupService(groupId: string): PopupService | undefined;
46
- setPopupService(groupId: string, service: PopupService): void;
47
- deletePopupService(groupId: string): void;
48
57
  readonly restorationPromise: Promise<void>;
49
58
  scheduleRestoration(delayMs: number, work: () => void, onCancel?: () => void): Promise<void>;
50
59
  finishRestoration(promises: Promise<void>[]): void;
@@ -55,7 +64,6 @@ export interface IPopoutWindowService extends IDisposable {
55
64
  export declare class PopoutWindowService implements IPopoutWindowService {
56
65
  private readonly _host;
57
66
  private readonly _entries;
58
- private readonly _popupServices;
59
67
  private readonly _restorationCleanups;
60
68
  private _restorationPromise;
61
69
  private readonly _onDidRemove;
@@ -71,9 +79,9 @@ export declare class PopoutWindowService implements IPopoutWindowService {
71
79
  * The popout window's innerWidth/innerHeight are often 0/stale until it has
72
80
  * painted, and the nested gridview lays its children out to the size passed
73
81
  * to layout() (a plain group fills via CSS instead). To stop content
74
- * rendering into a zero box until a manual resize — and to avoid the race a
75
- * fixed number of animation frames had — observe the gridview element with
76
- * a ResizeObserver created in the POPOUT window's OWN realm. A parent-realm
82
+ * rendering into a zero box until a manual resize, and to avoid the race a
83
+ * fixed number of animation frames had, observe the gridview element with
84
+ * a ResizeObserver created in the popout window's own realm. A parent-realm
77
85
  * observer fires unreliably across the window boundary; a same-realm one
78
86
  * fires reliably, including the initial observation once the window is
79
87
  * sized.
@@ -82,9 +90,6 @@ export declare class PopoutWindowService implements IPopoutWindowService {
82
90
  * the popout realm has no ResizeObserver (e.g. jsdom).
83
91
  */
84
92
  observeGridviewSize(popoutWindow: PopoutWindow, gridview: Gridview, overlayRenderContainer: OverlayRenderContainer): IDisposable | undefined;
85
- getPopupService(groupId: string): PopupService | undefined;
86
- setPopupService(groupId: string, service: PopupService): void;
87
- deletePopupService(groupId: string): void;
88
93
  scheduleRestoration(delayMs: number, work: () => void, onCancel?: () => void): Promise<void>;
89
94
  finishRestoration(promises: Promise<void>[]): void;
90
95
  cancelPendingRestorations(): void;