dockview-core 6.6.1 → 7.0.2

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 (153) hide show
  1. package/README.md +8 -1
  2. package/dist/cjs/api/component.api.d.ts +42 -21
  3. package/dist/cjs/api/component.api.js +111 -20
  4. package/dist/cjs/api/dockviewGroupPanelApi.d.ts +23 -8
  5. package/dist/cjs/api/dockviewGroupPanelApi.js +23 -0
  6. package/dist/cjs/api/dockviewPanelApi.d.ts +4 -3
  7. package/dist/cjs/api/dockviewPanelApi.js +8 -0
  8. package/dist/cjs/dnd/droptarget.d.ts +8 -0
  9. package/dist/cjs/dnd/droptarget.js +28 -0
  10. package/dist/cjs/dockview/accessibilityMessages.d.ts +32 -0
  11. package/dist/cjs/dockview/accessibilityMessages.js +51 -0
  12. package/dist/cjs/dockview/allModules.d.ts +8 -0
  13. package/dist/cjs/dockview/allModules.js +25 -0
  14. package/dist/cjs/dockview/components/panel/content.d.ts +2 -0
  15. package/dist/cjs/dockview/components/panel/content.js +35 -4
  16. package/dist/cjs/dockview/components/tab/tab.js +33 -5
  17. package/dist/cjs/dockview/components/titlebar/floatingTitleBar.d.ts +35 -0
  18. package/dist/cjs/dockview/components/titlebar/floatingTitleBar.js +95 -0
  19. package/dist/cjs/dockview/components/titlebar/groupDragSource.d.ts +52 -0
  20. package/dist/cjs/dockview/components/titlebar/groupDragSource.js +218 -0
  21. package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.d.ts +2 -1
  22. package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.js +31 -24
  23. package/dist/cjs/dockview/components/titlebar/tabGroups.js +1 -0
  24. package/dist/cjs/dockview/components/titlebar/tabs.d.ts +12 -0
  25. package/dist/cjs/dockview/components/titlebar/tabs.js +105 -2
  26. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +4 -0
  27. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +13 -3
  28. package/dist/cjs/dockview/components/titlebar/voidContainer.d.ts +1 -4
  29. package/dist/cjs/dockview/components/titlebar/voidContainer.js +31 -155
  30. package/dist/cjs/dockview/dockviewComponent.d.ts +299 -44
  31. package/dist/cjs/dockview/dockviewComponent.js +1787 -1041
  32. package/dist/cjs/dockview/dockviewFloatingGroupPanel.d.ts +33 -2
  33. package/dist/cjs/dockview/dockviewFloatingGroupPanel.js +39 -3
  34. package/dist/cjs/dockview/dockviewGroupPanel.d.ts +0 -1
  35. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +36 -14
  36. package/dist/cjs/dockview/dockviewGroupPanelModel.js +133 -101
  37. package/dist/cjs/dockview/dockviewPanel.d.ts +2 -2
  38. package/dist/cjs/dockview/edgeGroupService.d.ts +38 -0
  39. package/dist/cjs/dockview/edgeGroupService.js +128 -0
  40. package/dist/cjs/dockview/floatingGroupService.d.ts +37 -0
  41. package/dist/cjs/dockview/floatingGroupService.js +231 -0
  42. package/dist/cjs/dockview/headerActionsService.d.ts +32 -0
  43. package/dist/cjs/dockview/headerActionsService.js +149 -0
  44. package/dist/cjs/dockview/liveRegionService.d.ts +53 -0
  45. package/dist/cjs/dockview/liveRegionService.js +185 -0
  46. package/dist/cjs/dockview/moduleContracts.d.ts +119 -0
  47. package/dist/cjs/dockview/moduleContracts.js +2 -0
  48. package/dist/cjs/dockview/modules.d.ts +110 -0
  49. package/dist/cjs/dockview/modules.js +304 -0
  50. package/dist/cjs/dockview/options.d.ts +159 -6
  51. package/dist/cjs/dockview/options.js +8 -1
  52. package/dist/cjs/dockview/popoutWindowService.d.ts +95 -0
  53. package/dist/cjs/dockview/popoutWindowService.js +261 -0
  54. package/dist/cjs/dockview/rootDropTargetService.d.ts +35 -0
  55. package/dist/cjs/dockview/rootDropTargetService.js +87 -0
  56. package/dist/cjs/dockview/watermarkService.d.ts +30 -0
  57. package/dist/cjs/dockview/watermarkService.js +61 -0
  58. package/dist/cjs/gridview/baseComponentGridview.d.ts +1 -1
  59. package/dist/cjs/gridview/baseComponentGridview.js +3 -2
  60. package/dist/cjs/gridview/gridviewComponent.d.ts +3 -3
  61. package/dist/cjs/gridview/gridviewPanel.d.ts +1 -1
  62. package/dist/cjs/index.d.ts +11 -4
  63. package/dist/cjs/index.js +14 -1
  64. package/dist/cjs/overlay/overlay.d.ts +43 -1
  65. package/dist/cjs/overlay/overlay.js +57 -8
  66. package/dist/cjs/paneview/draggablePaneviewPanel.d.ts +2 -2
  67. package/dist/cjs/paneview/draggablePaneviewPanel.js +4 -4
  68. package/dist/cjs/paneview/paneviewComponent.d.ts +3 -3
  69. package/dist/cjs/paneview/paneviewComponent.js +5 -5
  70. package/dist/dockview-core.js +3201 -1280
  71. package/dist/dockview-core.min.js +2 -2
  72. package/dist/dockview-core.min.js.map +1 -1
  73. package/dist/dockview-core.min.noStyle.js +2 -2
  74. package/dist/dockview-core.min.noStyle.js.map +1 -1
  75. package/dist/dockview-core.noStyle.js +3200 -1279
  76. package/dist/esm/api/component.api.d.ts +42 -21
  77. package/dist/esm/api/component.api.js +63 -18
  78. package/dist/esm/api/dockviewGroupPanelApi.d.ts +23 -8
  79. package/dist/esm/api/dockviewGroupPanelApi.js +19 -0
  80. package/dist/esm/api/dockviewPanelApi.d.ts +4 -3
  81. package/dist/esm/api/dockviewPanelApi.js +7 -0
  82. package/dist/esm/dnd/droptarget.d.ts +8 -0
  83. package/dist/esm/dnd/droptarget.js +28 -0
  84. package/dist/esm/dockview/accessibilityMessages.d.ts +32 -0
  85. package/dist/esm/dockview/accessibilityMessages.js +30 -0
  86. package/dist/esm/dockview/allModules.d.ts +8 -0
  87. package/dist/esm/dockview/allModules.js +22 -0
  88. package/dist/esm/dockview/components/panel/content.d.ts +2 -0
  89. package/dist/esm/dockview/components/panel/content.js +36 -5
  90. package/dist/esm/dockview/components/tab/tab.js +33 -5
  91. package/dist/esm/dockview/components/titlebar/floatingTitleBar.d.ts +35 -0
  92. package/dist/esm/dockview/components/titlebar/floatingTitleBar.js +65 -0
  93. package/dist/esm/dockview/components/titlebar/groupDragSource.d.ts +52 -0
  94. package/dist/esm/dockview/components/titlebar/groupDragSource.js +178 -0
  95. package/dist/esm/dockview/components/titlebar/tabGroupIndicator.d.ts +2 -1
  96. package/dist/esm/dockview/components/titlebar/tabGroupIndicator.js +31 -24
  97. package/dist/esm/dockview/components/titlebar/tabGroups.js +1 -0
  98. package/dist/esm/dockview/components/titlebar/tabs.d.ts +12 -0
  99. package/dist/esm/dockview/components/titlebar/tabs.js +102 -2
  100. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +4 -0
  101. package/dist/esm/dockview/components/titlebar/tabsContainer.js +8 -2
  102. package/dist/esm/dockview/components/titlebar/voidContainer.d.ts +1 -4
  103. package/dist/esm/dockview/components/titlebar/voidContainer.js +33 -145
  104. package/dist/esm/dockview/dockviewComponent.d.ts +299 -44
  105. package/dist/esm/dockview/dockviewComponent.js +1420 -743
  106. package/dist/esm/dockview/dockviewFloatingGroupPanel.d.ts +33 -2
  107. package/dist/esm/dockview/dockviewFloatingGroupPanel.js +35 -3
  108. package/dist/esm/dockview/dockviewGroupPanel.d.ts +0 -1
  109. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +36 -14
  110. package/dist/esm/dockview/dockviewGroupPanelModel.js +109 -93
  111. package/dist/esm/dockview/dockviewPanel.d.ts +2 -2
  112. package/dist/esm/dockview/edgeGroupService.d.ts +38 -0
  113. package/dist/esm/dockview/edgeGroupService.js +63 -0
  114. package/dist/esm/dockview/floatingGroupService.d.ts +37 -0
  115. package/dist/esm/dockview/floatingGroupService.js +150 -0
  116. package/dist/esm/dockview/headerActionsService.d.ts +32 -0
  117. package/dist/esm/dockview/headerActionsService.js +86 -0
  118. package/dist/esm/dockview/liveRegionService.d.ts +53 -0
  119. package/dist/esm/dockview/liveRegionService.js +159 -0
  120. package/dist/esm/dockview/moduleContracts.d.ts +119 -0
  121. package/dist/esm/dockview/moduleContracts.js +1 -0
  122. package/dist/esm/dockview/modules.d.ts +110 -0
  123. package/dist/esm/dockview/modules.js +170 -0
  124. package/dist/esm/dockview/options.d.ts +159 -6
  125. package/dist/esm/dockview/options.js +8 -1
  126. package/dist/esm/dockview/popoutWindowService.d.ts +95 -0
  127. package/dist/esm/dockview/popoutWindowService.js +175 -0
  128. package/dist/esm/dockview/rootDropTargetService.d.ts +35 -0
  129. package/dist/esm/dockview/rootDropTargetService.js +82 -0
  130. package/dist/esm/dockview/watermarkService.d.ts +30 -0
  131. package/dist/esm/dockview/watermarkService.js +56 -0
  132. package/dist/esm/gridview/baseComponentGridview.d.ts +1 -1
  133. package/dist/esm/gridview/baseComponentGridview.js +2 -2
  134. package/dist/esm/gridview/gridviewComponent.d.ts +3 -3
  135. package/dist/esm/gridview/gridviewPanel.d.ts +1 -1
  136. package/dist/esm/index.d.ts +11 -4
  137. package/dist/esm/index.js +4 -0
  138. package/dist/esm/overlay/overlay.d.ts +43 -1
  139. package/dist/esm/overlay/overlay.js +53 -8
  140. package/dist/esm/paneview/draggablePaneviewPanel.d.ts +2 -2
  141. package/dist/esm/paneview/draggablePaneviewPanel.js +4 -4
  142. package/dist/esm/paneview/paneviewComponent.d.ts +3 -3
  143. package/dist/esm/paneview/paneviewComponent.js +5 -5
  144. package/dist/package/main.cjs.js +3236 -1315
  145. package/dist/package/main.cjs.min.js +2 -2
  146. package/dist/package/main.esm.min.mjs +2 -2
  147. package/dist/package/main.esm.mjs +3191 -1281
  148. package/dist/styles/dockview.css +275 -13
  149. package/package.json +10 -1
  150. package/dist/cjs/dockview/contextMenu.d.ts +0 -10
  151. package/dist/cjs/dockview/contextMenu.js +0 -313
  152. package/dist/esm/dockview/contextMenu.d.ts +0 -10
  153. package/dist/esm/dockview/contextMenu.js +0 -228
@@ -1,6 +1,7 @@
1
- import { SerializedGridObject } from '../gridview/gridview';
2
- import { Position } from '../dnd/droptarget';
1
+ import { SerializedGridObject, Gridview, SerializedGridview } from '../gridview/gridview';
2
+ import { DroptargetOverlayModel, Position } from '../dnd/droptarget';
3
3
  import { DockviewPanel, IDockviewPanel } from './dockviewPanel';
4
+ import { IDisposable } from '../lifecycle';
4
5
  import { Event, Emitter } from '../events';
5
6
  import { IWatermarkRenderer, GroupviewPanelState } from './types';
6
7
  import { AddGroupOptions, AddPanelOptions, DockviewComponentOptions, DockviewDndOverlayEvent, DockviewOptions, MovementOptions, DockviewHeaderPosition } from './options';
@@ -8,15 +9,23 @@ import { BaseGrid, IBaseGrid } from '../gridview/baseComponentGridview';
8
9
  import { DockviewApi } from '../api/component.api';
9
10
  import { Orientation } from '../splitview/splitview';
10
11
  import { GroupOptions, GroupPanelViewState, DockviewDidDropEvent, DockviewWillDropEvent } from './dockviewGroupPanelModel';
11
- import { DockviewWillShowOverlayLocationEvent, DockviewTabGroupChangeEvent, DockviewTabGroupCollapsedChangeEvent, DockviewTabGroupPanelChangeEvent } from './events';
12
+ import { DockviewWillShowOverlayLocationEvent, DockviewTabGroupChangeEvent, DockviewTabGroupCollapsedChangeEvent, DockviewTabGroupPanelChangeEvent, DockviewGroupDropLocation } from './events';
12
13
  import { DockviewGroupPanel } from './dockviewGroupPanel';
13
14
  import { Parameters } from '../panel/types';
14
15
  import { DockviewFloatingGroupPanel } from './dockviewFloatingGroupPanel';
15
16
  import { GroupDragEvent, TabDragEvent } from './components/titlebar/tabsContainer';
17
+ import { IFloatingGroupHost } from './floatingGroupService';
18
+ import { IPopoutWindowHost } from './popoutWindowService';
19
+ import { IWatermarkHost } from './watermarkService';
20
+ import { IEdgeGroupServiceHost } from './edgeGroupService';
21
+ import { IAccessibilityHost, IAdvancedDnDHost, IContextMenuHost, IContextMenuService, ITabGroupChipsHost } from './moduleContracts';
22
+ import { IHeaderActionsHost } from './headerActionsService';
16
23
  import { AnchoredBox, AnchorPosition, Box } from '../types';
17
24
  import { DockviewPanelRenderer, OverlayRenderContainer } from '../overlay/overlayRenderContainer';
18
25
  import { PopupService } from './components/popupService';
19
- import { ContextMenuController } from './contextMenu';
26
+ import { IRootDropTargetHost } from './rootDropTargetService';
27
+ import { ILiveRegionHost } from './liveRegionService';
28
+ import { IDragGhostSpec } from '../dnd/backend';
20
29
  import { DropTargetAnchorContainer } from '../dnd/dropTargetAnchorContainer';
21
30
  import { EdgeGroupPosition, EdgeGroupOptions, SerializedEdgeGroups } from './dockviewShell';
22
31
  import { DockviewGroupPanelApi } from '../api/dockviewGroupPanelApi';
@@ -32,7 +41,6 @@ export interface DockviewPopoutGroupOptions {
32
41
  * Defaults to `/popout.html` if not provided
33
42
  */
34
43
  popoutUrl?: string;
35
- referenceGroup?: DockviewGroupPanel;
36
44
  onDidOpen?: (event: {
37
45
  id: string;
38
46
  window: Window;
@@ -41,7 +49,15 @@ export interface DockviewPopoutGroupOptions {
41
49
  id: string;
42
50
  window: Window;
43
51
  }) => void;
52
+ }
53
+ interface DockviewPopoutGroupOptionsInternal extends DockviewPopoutGroupOptions {
54
+ referenceGroup?: DockviewGroupPanel;
44
55
  overridePopoutGroup?: DockviewGroupPanel;
56
+ /**
57
+ * Restore into a pre-built nested gridview (multi-group popout window)
58
+ * rather than creating one around a single group.
59
+ */
60
+ overridePopoutGridview?: Gridview;
45
61
  }
46
62
  export interface PanelReference {
47
63
  update: (event: {
@@ -52,11 +68,29 @@ export interface PanelReference {
52
68
  remove: () => void;
53
69
  }
54
70
  export interface SerializedFloatingGroup {
55
- data: GroupPanelViewState;
71
+ /**
72
+ * Legacy single-group form. Still written when a floating window hosts a
73
+ * single group (for stable round-trips) and always accepted on read.
74
+ */
75
+ data?: GroupPanelViewState;
76
+ /**
77
+ * Nested layout of the floating window. Written when the window hosts more
78
+ * than one group; mutually exclusive with `data`.
79
+ */
80
+ grid?: SerializedGridview<GroupPanelViewState>;
56
81
  position: AnchoredBox;
57
82
  }
58
83
  export interface SerializedPopoutGroup {
59
- data: GroupPanelViewState;
84
+ /**
85
+ * Legacy single-group form. Still written when a popout window hosts a
86
+ * single group (for stable round-trips) and always accepted on read.
87
+ */
88
+ data?: GroupPanelViewState;
89
+ /**
90
+ * Nested layout of the popout window. Written when the window hosts more
91
+ * than one group; mutually exclusive with `data`.
92
+ */
93
+ grid?: SerializedGridview<GroupPanelViewState>;
60
94
  url?: string;
61
95
  gridReferenceGroup?: string;
62
96
  position: Box | null;
@@ -108,16 +142,45 @@ export interface FloatingGroupOptions {
108
142
  height?: number;
109
143
  width?: number;
110
144
  position?: AnchorPosition;
145
+ /**
146
+ * Override the component-level `floatingGroupDragHandle` option for this
147
+ * group only. See {@link DockviewOptions.floatingGroupDragHandle}.
148
+ */
149
+ dragHandle?: 'titlebar' | 'tabbar';
111
150
  }
112
151
  interface FloatingGroupOptionsInternal extends FloatingGroupOptions {
113
152
  skipRemoveGroup?: boolean;
114
153
  inDragMode?: boolean;
115
154
  skipActiveGroup?: boolean;
116
155
  }
117
- export interface DockviewMaximizedGroupChanged {
156
+ export interface DockviewMaximizedGroupChangeEvent {
118
157
  group: DockviewGroupPanel;
119
158
  isMaximized: boolean;
120
159
  }
160
+ /** The coarse kind of a structural layout mutation (see `onWillMutateLayout`). */
161
+ export type DockviewLayoutMutationKind = 'add' | 'remove' | 'move' | 'float' | 'popout' | 'maximize' | 'tab-group' | 'load' | 'clear';
162
+ /**
163
+ * Who caused an operation: `'user'` for changes driven by direct interaction
164
+ * (drag-and-drop, tab UI, keyboard docking) and `'api'` for those entered
165
+ * through a {@link DockviewApi} method called by application code. Lets
166
+ * consumers (e.g. an undo stack, or a context-sync listener) treat the app's
167
+ * own programmatic changes differently from end-user gestures.
168
+ */
169
+ export type DockviewOrigin = 'user' | 'api';
170
+ export interface DockviewLayoutMutationEvent {
171
+ readonly kind: DockviewLayoutMutationKind;
172
+ readonly origin: DockviewOrigin;
173
+ }
174
+ /**
175
+ * Fired by `onDidActivePanelChange` when the active panel changes. Carries the
176
+ * {@link DockviewOrigin} so consumers can distinguish a user clicking a tab
177
+ * from a programmatic `setActive` call (e.g. to avoid feedback loops when
178
+ * syncing context off the active panel).
179
+ */
180
+ export interface DockviewActivePanelChangeEvent {
181
+ readonly panel: IDockviewPanel | undefined;
182
+ readonly origin: DockviewOrigin;
183
+ }
121
184
  export interface PopoutGroupChangeSizeEvent {
122
185
  width: number;
123
186
  height: number;
@@ -128,6 +191,18 @@ export interface PopoutGroupChangePositionEvent {
128
191
  screenY: number;
129
192
  group: DockviewGroupPanel;
130
193
  }
194
+ /** A spatial (visual) direction for group-to-group navigation. */
195
+ export type GroupNavigationDirection = 'left' | 'right' | 'up' | 'down';
196
+ /**
197
+ * A popout group currently open in its own window. `window` is the live
198
+ * `Window` handle of the popout, so consumers can route focus, attach
199
+ * per-document listeners, or place the window.
200
+ */
201
+ export interface PopoutGroup {
202
+ readonly id: string;
203
+ readonly group: DockviewGroupPanel;
204
+ readonly window: Window;
205
+ }
131
206
  export interface IDockviewComponent extends IBaseGrid<DockviewGroupPanel> {
132
207
  readonly activePanel: IDockviewPanel | undefined;
133
208
  readonly totalPanels: number;
@@ -135,22 +210,29 @@ export interface IDockviewComponent extends IBaseGrid<DockviewGroupPanel> {
135
210
  readonly orientation: Orientation;
136
211
  readonly onDidDrop: Event<DockviewDidDropEvent>;
137
212
  readonly onWillDrop: Event<DockviewWillDropEvent>;
213
+ readonly onWillMutateLayout: Event<DockviewLayoutMutationEvent>;
214
+ readonly onDidMutateLayout: Event<DockviewLayoutMutationEvent>;
215
+ currentOrigin(): DockviewOrigin;
216
+ withOrigin<T>(origin: DockviewOrigin, func: () => T): T;
138
217
  readonly onWillShowOverlay: Event<DockviewWillShowOverlayLocationEvent>;
139
218
  readonly onDidRemovePanel: Event<IDockviewPanel>;
140
219
  readonly onDidAddPanel: Event<IDockviewPanel>;
141
220
  readonly onDidLayoutFromJSON: Event<void>;
142
- readonly onDidActivePanelChange: Event<IDockviewPanel | undefined>;
221
+ readonly onDidActivePanelChange: Event<DockviewActivePanelChangeEvent>;
143
222
  readonly onWillDragPanel: Event<TabDragEvent>;
144
223
  readonly onWillDragGroup: Event<GroupDragEvent>;
145
224
  readonly onDidRemoveGroup: Event<DockviewGroupPanel>;
146
225
  readonly onDidAddGroup: Event<DockviewGroupPanel>;
147
226
  readonly onDidActiveGroupChange: Event<DockviewGroupPanel | undefined>;
148
- readonly onUnhandledDragOverEvent: Event<DockviewDndOverlayEvent>;
227
+ readonly onUnhandledDragOver: Event<DockviewDndOverlayEvent>;
149
228
  readonly onDidMovePanel: Event<MovePanelEvent>;
150
- readonly onDidMaximizedGroupChange: Event<DockviewMaximizedGroupChanged>;
229
+ readonly onDidMaximizedGroupChange: Event<DockviewMaximizedGroupChangeEvent>;
151
230
  readonly onDidPopoutGroupSizeChange: Event<PopoutGroupChangeSizeEvent>;
152
231
  readonly onDidPopoutGroupPositionChange: Event<PopoutGroupChangePositionEvent>;
232
+ readonly onDidAddPopoutGroup: Event<PopoutGroup>;
233
+ readonly onDidRemovePopoutGroup: Event<PopoutGroup>;
153
234
  readonly onDidOpenPopoutWindowFail: Event<void>;
235
+ getPopouts(): PopoutGroup[];
154
236
  readonly onDidCreateTabGroup: Event<DockviewTabGroupChangeEvent>;
155
237
  readonly onDidDestroyTabGroup: Event<DockviewTabGroupChangeEvent>;
156
238
  readonly onDidAddPanelToTabGroup: Event<DockviewTabGroupPanelChangeEvent>;
@@ -170,6 +252,7 @@ export interface IDockviewComponent extends IBaseGrid<DockviewGroupPanel> {
170
252
  createWatermarkComponent(): IWatermarkRenderer;
171
253
  addGroup(options?: AddGroupOptions): DockviewGroupPanel;
172
254
  closeAllGroups(): void;
255
+ adjacentGroupInDirection(group: DockviewGroupPanel, direction: GroupNavigationDirection): DockviewGroupPanel | undefined;
173
256
  moveToNext(options?: MovementOptions): void;
174
257
  moveToPrevious(options?: MovementOptions): void;
175
258
  setActivePanel(panel: IDockviewPanel): void;
@@ -177,18 +260,7 @@ export interface IDockviewComponent extends IBaseGrid<DockviewGroupPanel> {
177
260
  toJSON(): SerializedDockview;
178
261
  fromJSON(data: SerializedDockview): void;
179
262
  addFloatingGroup(item: IDockviewPanel | DockviewGroupPanel, options?: FloatingGroupOptions): void;
180
- addPopoutGroup(item: IDockviewPanel | DockviewGroupPanel, options?: {
181
- position?: Box;
182
- popoutUrl?: string;
183
- onDidOpen?: (event: {
184
- id: string;
185
- window: Window;
186
- }) => void;
187
- onWillClose?: (event: {
188
- id: string;
189
- window: Window;
190
- }) => void;
191
- }): Promise<boolean>;
263
+ addPopoutGroup(item: IDockviewPanel | DockviewGroupPanel, options?: DockviewPopoutGroupOptions): Promise<boolean>;
192
264
  fromJSON(data: any, options?: {
193
265
  reuseExistingPanels: boolean;
194
266
  }): void;
@@ -198,18 +270,16 @@ export interface IDockviewComponent extends IBaseGrid<DockviewGroupPanel> {
198
270
  isEdgeGroupVisible(position: EdgeGroupPosition): boolean;
199
271
  removeEdgeGroup(position: EdgeGroupPosition): void;
200
272
  }
201
- export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> implements IDockviewComponent {
273
+ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> implements IDockviewComponent, IFloatingGroupHost, IPopoutWindowHost, IWatermarkHost, IEdgeGroupServiceHost, ITabGroupChipsHost, IContextMenuHost, IRootDropTargetHost, IHeaderActionsHost, IAdvancedDnDHost, ILiveRegionHost, IAccessibilityHost {
202
274
  private readonly nextGroupId;
203
275
  private readonly _deserializer;
204
276
  private readonly _api;
277
+ private readonly _moduleRegistry;
205
278
  private _options;
206
279
  private _tabGroupColorPalette;
207
- private _watermark;
208
280
  private _shellThemeClassnames;
209
281
  readonly overlayRenderContainer: OverlayRenderContainer;
210
282
  readonly popupService: PopupService;
211
- private readonly _popoutPopupServices;
212
- readonly contextMenuController: ContextMenuController;
213
283
  readonly rootDropTargetContainer: DropTargetAnchorContainer;
214
284
  private readonly _onWillDragPanel;
215
285
  readonly onWillDragPanel: Event<TabDragEvent>;
@@ -219,10 +289,17 @@ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> impl
219
289
  readonly onDidDrop: Event<DockviewDidDropEvent>;
220
290
  private readonly _onWillDrop;
221
291
  readonly onWillDrop: Event<DockviewWillDropEvent>;
292
+ private _mutationDepth;
293
+ private _origin;
294
+ private _originDepth;
295
+ private readonly _onWillMutateLayout;
296
+ readonly onWillMutateLayout: Event<DockviewLayoutMutationEvent>;
297
+ private readonly _onDidMutateLayout;
298
+ readonly onDidMutateLayout: Event<DockviewLayoutMutationEvent>;
222
299
  private readonly _onWillShowOverlay;
223
300
  readonly onWillShowOverlay: Event<DockviewWillShowOverlayLocationEvent>;
224
- private readonly _onUnhandledDragOverEvent;
225
- readonly onUnhandledDragOverEvent: Event<DockviewDndOverlayEvent>;
301
+ private readonly _onUnhandledDragOver;
302
+ readonly onUnhandledDragOver: Event<DockviewDndOverlayEvent>;
226
303
  private readonly _onDidRemovePanel;
227
304
  readonly onDidRemovePanel: Event<IDockviewPanel>;
228
305
  private readonly _onDidAddPanel;
@@ -231,12 +308,16 @@ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> impl
231
308
  readonly onDidPopoutGroupSizeChange: Event<PopoutGroupChangeSizeEvent>;
232
309
  private readonly _onDidPopoutGroupPositionChange;
233
310
  readonly onDidPopoutGroupPositionChange: Event<PopoutGroupChangePositionEvent>;
311
+ private readonly _onDidAddPopoutGroup;
312
+ readonly onDidAddPopoutGroup: Event<PopoutGroup>;
313
+ private readonly _onDidRemovePopoutGroup;
314
+ readonly onDidRemovePopoutGroup: Event<PopoutGroup>;
234
315
  private readonly _onDidOpenPopoutWindowFail;
235
316
  readonly onDidOpenPopoutWindowFail: Event<void>;
236
317
  private readonly _onDidLayoutFromJSON;
237
318
  readonly onDidLayoutFromJSON: Event<void>;
238
319
  private readonly _onDidActivePanelChange;
239
- readonly onDidActivePanelChange: Event<IDockviewPanel | undefined>;
320
+ readonly onDidActivePanelChange: Event<DockviewActivePanelChangeEvent>;
240
321
  private readonly _onDidMovePanel;
241
322
  readonly onDidMovePanel: Event<MovePanelEvent>;
242
323
  private readonly _onDidCreateTabGroup;
@@ -250,20 +331,18 @@ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> impl
250
331
  private readonly _onDidTabGroupChange;
251
332
  readonly onDidTabGroupChange: Event<DockviewTabGroupChangeEvent>;
252
333
  private readonly _onDidTabGroupCollapsedChange;
253
- readonly onDidTabGroupCollapsedChange: Event<DockviewTabGroupChangeEvent>;
334
+ readonly onDidTabGroupCollapsedChange: Event<DockviewTabGroupCollapsedChangeEvent>;
335
+ fireDidCreateTabGroup(event: DockviewTabGroupChangeEvent): void;
336
+ fireDidDestroyTabGroup(event: DockviewTabGroupChangeEvent): void;
337
+ fireDidAddPanelToTabGroup(event: DockviewTabGroupPanelChangeEvent): void;
338
+ fireDidRemovePanelFromTabGroup(event: DockviewTabGroupPanelChangeEvent): void;
339
+ fireDidTabGroupChange(event: DockviewTabGroupChangeEvent): void;
340
+ fireDidTabGroupCollapsedChange(event: DockviewTabGroupCollapsedChangeEvent): void;
254
341
  private readonly _onDidMaximizedGroupChange;
255
- readonly onDidMaximizedGroupChange: Event<DockviewMaximizedGroupChanged>;
342
+ readonly onDidMaximizedGroupChange: Event<DockviewMaximizedGroupChangeEvent>;
256
343
  private _shellManager;
257
344
  private _floatingOverlayHost;
258
345
  private _inShellLayout;
259
- private readonly _edgeGroups;
260
- private readonly _edgeGroupDisposables;
261
- private readonly _floatingGroups;
262
- private readonly _popoutGroups;
263
- private readonly _rootDropTarget;
264
- private readonly _rootPointerDropTarget;
265
- private _popoutRestorationPromise;
266
- private readonly _popoutRestorationCleanups;
267
346
  private readonly _onDidRemoveGroup;
268
347
  readonly onDidRemoveGroup: Event<DockviewGroupPanel>;
269
348
  protected readonly _onDidAddGroup: Emitter<DockviewGroupPanel>;
@@ -281,7 +360,62 @@ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> impl
281
360
  get renderer(): DockviewPanelRenderer;
282
361
  get defaultHeaderPosition(): DockviewHeaderPosition;
283
362
  get api(): DockviewApi;
284
- get floatingGroups(): DockviewFloatingGroupPanel[];
363
+ get floatingGroups(): readonly DockviewFloatingGroupPanel[];
364
+ /**
365
+ * Boxes of the floating groups other than `exclude`, in coordinates
366
+ * relative to the floating overlay container. Supplied to a
367
+ * `transformFloatingGroupDrag` callback as `context.others` so it can
368
+ * align the dragged float against its siblings.
369
+ */
370
+ private _gatherFloatingGroupBoxes;
371
+ private get _floatingGroupService();
372
+ private get _popoutWindowService();
373
+ private get _watermarkService();
374
+ private get _edgeGroupService();
375
+ private get _rootDropTargetService();
376
+ private get _advancedDnDService();
377
+ get headerActionsService(): import("./headerActionsService").IHeaderActionsService | undefined;
378
+ isGridEmpty(): boolean;
379
+ rootDropTargetOverrideTarget(): import("../dnd/droptarget").DropTargetTargetModel | undefined;
380
+ dispatchUnhandledDragOver(nativeEvent: DragEvent | PointerEvent, position: Position): boolean;
381
+ fireWillDragPanel(event: TabDragEvent): void;
382
+ fireWillDragGroup(event: GroupDragEvent): void;
383
+ fireWillDrop(event: DockviewWillDropEvent): void;
384
+ fireWillShowOverlay(event: DockviewWillShowOverlayLocationEvent): void;
385
+ /**
386
+ * Resolve the custom group drag ghost (via the AdvancedDnD module), or
387
+ * `undefined` to fall back to the default chip. Returns `undefined` when
388
+ * the module is absent — the default ghost then renders.
389
+ */
390
+ buildGroupDragGhost(group: DockviewGroupPanel): IDragGhostSpec | undefined;
391
+ /**
392
+ * Resolve the app-supplied drop overlay model (via the AdvancedDnD module)
393
+ * for a group drop target, or `undefined` to keep the target's default.
394
+ */
395
+ resolveDropOverlayModel(location: DockviewGroupDropLocation, group?: DockviewGroupPanel): DroptargetOverlayModel | undefined;
396
+ /** Outermost element — the shell (incl. edge groups) once built, else the gridview. */
397
+ get rootElement(): HTMLElement;
398
+ /**
399
+ * The next / previous group in gridview (spatial) order, wrapping round.
400
+ * The keyboard accessibility module's focus navigation is built on this
401
+ * primitive — the only piece that needs the grid internals; the rest of
402
+ * the navigation logic lives in the AccessibilityService.
403
+ */
404
+ adjacentGroup(group: DockviewGroupPanel, reverse: boolean): DockviewGroupPanel | undefined;
405
+ /**
406
+ * The nearest grid group in a spatial direction from `group`, by
407
+ * comparing group centre points. Floating and popout groups sit outside
408
+ * the grid's geometry and are ignored. Returns `undefined` when there is
409
+ * no group in that direction.
410
+ */
411
+ adjacentGroupInDirection(group: DockviewGroupPanel, direction: GroupNavigationDirection): DockviewGroupPanel | undefined;
412
+ showDropPreview(group: DockviewGroupPanel, position: Position): IDisposable;
413
+ announce(message: string): void;
414
+ dockPanel(panel: IDockviewPanel, group: DockviewGroupPanel, position: Position): void;
415
+ get contextMenuService(): IContextMenuService | undefined;
416
+ get mountElement(): HTMLElement;
417
+ hasVisibleGridGroup(): boolean;
418
+ fireLayoutChange(): void;
285
419
  /**
286
420
  * Promise that resolves when all popout groups from the last fromJSON call are restored.
287
421
  * Useful for tests that need to wait for delayed popout creation.
@@ -296,8 +430,46 @@ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> impl
296
430
  * and dismisses on events from that window.
297
431
  */
298
432
  getPopupServiceForGroup(group: DockviewGroupPanel): PopupService;
299
- addPopoutGroup(itemToPopout: DockviewPanel | DockviewGroupPanel, options?: DockviewPopoutGroupOptions): Promise<boolean>;
433
+ addPopoutGroup(itemToPopout: DockviewPanel | DockviewGroupPanel, options?: DockviewPopoutGroupOptionsInternal): Promise<boolean>;
434
+ /** Enumerate the popout groups currently open in their own windows. */
435
+ getPopouts(): PopoutGroup[];
436
+ private _doAddPopoutGroup;
437
+ /**
438
+ * The popout window was blocked (e.g. by the browser's popup blocker —
439
+ * common when restoring popouts on load). Fall back gracefully so the
440
+ * group(s) end up valid and visible in the main grid rather than as
441
+ * orphans that later crash clear()/remove().
442
+ */
443
+ private handleBlockedPopout;
444
+ /**
445
+ * Wire a group that has been displaced from a floating / popout window back
446
+ * to the main grid's render & drop-target containers and dock it at the
447
+ * root. The caller is responsible for first detaching it from its old
448
+ * gridview — the detach strategy differs between the window-teardown path
449
+ * (`doRemoveGroup`) and the blocked-window path (`gridview.remove`).
450
+ */
451
+ private redockGroupToMainGrid;
452
+ /**
453
+ * Teardown for a popout window's `popoutWindowDisposable`. Runs when the
454
+ * window closes (by user, by `removeGroup`, or by component disposal):
455
+ * relocates every member group back to the main grid (or to a floating
456
+ * window when the anchor came from one), then disposes the nested gridview.
457
+ * `closeResult.returnedGroup` is read by the entry's `dispose()` contract.
458
+ */
459
+ private disposePopoutWindow;
300
460
  addFloatingGroup(item: DockviewPanel | DockviewGroupPanel, options?: FloatingGroupOptionsInternal): void;
461
+ private _doAddFloatingGroup;
462
+ /**
463
+ * Build an empty gridview configured to match the main grid's styling, for
464
+ * hosting a nested layout inside a floating or popout window.
465
+ */
466
+ private createNestedGridview;
467
+ /**
468
+ * Wrap a (populated) floating gridview in an overlay window: title bar /
469
+ * move handle, drag wiring, the floating-group service entry and the
470
+ * `floating` location tag for every member group.
471
+ */
472
+ private mountFloatingWindow;
301
473
  private orthogonalize;
302
474
  updateOptions(options: Partial<DockviewComponentOptions>): void;
303
475
  layout(width: number, height: number, forceResize?: boolean | undefined): void;
@@ -326,17 +498,30 @@ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> impl
326
498
  fromJSON(data: SerializedDockview, options?: {
327
499
  reuseExistingPanels: boolean;
328
500
  }): void;
501
+ private _doFromJSON;
502
+ /**
503
+ * Rebuild a floating / popout window's nested gridview from its serialized
504
+ * tree, collecting the member groups (in deserialization order) so the
505
+ * caller can mount or restore the window.
506
+ */
507
+ private deserializeNestedGridview;
508
+ private deserializeEdgeGroups;
509
+ private deserializeFloatingWindows;
510
+ private deserializePopoutWindows;
329
511
  clear(): void;
512
+ private _doClear;
330
513
  closeAllGroups(): void;
331
514
  addPanel<T extends object = Parameters>(options: AddPanelOptions<T>): DockviewPanel;
515
+ private _doAddPanel;
332
516
  removePanel(panel: IDockviewPanel, options?: {
333
517
  removeEmptyGroup: boolean;
334
518
  skipDispose?: boolean;
335
519
  skipSetActiveGroup?: boolean;
336
520
  }): void;
521
+ private _doRemovePanel;
337
522
  createWatermarkComponent(): IWatermarkRenderer;
338
- private updateWatermark;
339
523
  addGroup(options?: AddGroupOptions): DockviewGroupPanel;
524
+ private _doAddGroup;
340
525
  private getLocationOrientation;
341
526
  removeGroup(group: DockviewGroupPanel, options?: {
342
527
  skipActive?: boolean;
@@ -344,6 +529,27 @@ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> impl
344
529
  skipPopoutAssociated?: boolean;
345
530
  skipPopoutReturn?: boolean;
346
531
  } | undefined): void;
532
+ /**
533
+ * Detach a single group from the nested gridview of its floating / popout
534
+ * window, keeping the window and its remaining members alive, and reassign
535
+ * the window's anchor if the detached group was it.
536
+ *
537
+ * @returns `true` if the group was detached from a multi-member window;
538
+ * `false` if `group` is not in a nested window, or is the window's only
539
+ * member — in which case the caller is responsible for disposing the whole
540
+ * window.
541
+ */
542
+ private detachFromNestedWindow;
543
+ /**
544
+ * Dispose a group and forget it: remove it from `_groups` and fire the
545
+ * removed event.
546
+ */
547
+ private disposeGroupRecord;
548
+ /**
549
+ * When `removed` was the active group, fall the active selection back to
550
+ * the first remaining group (or clear it when none remain).
551
+ */
552
+ private activateFallbackGroupIfRemoved;
347
553
  protected doRemoveGroup(group: DockviewGroupPanel, options?: {
348
554
  skipActive?: boolean;
349
555
  skipDispose?: boolean;
@@ -354,18 +560,67 @@ export declare class DockviewComponent extends BaseGrid<DockviewGroupPanel> impl
354
560
  private _updatePositionsFrameId;
355
561
  private debouncedUpdateAllPositions;
356
562
  movingLock<T>(func: () => T): T;
563
+ /**
564
+ * Bracket a structural mutation with `onWillMutateLayout` /
565
+ * `onDidMutateLayout`. Re-entrant: nested calls (a compound operation such
566
+ * as a drag that relocates a panel) join the outermost transaction, so the
567
+ * events fire exactly once around the whole operation. `kind` reflects the
568
+ * outermost mutation.
569
+ */
570
+ mutation<T>(kind: DockviewLayoutMutationKind, func: () => T): T;
571
+ /**
572
+ * The origin of the operation currently in progress (`'user'` by default).
573
+ * Read inside a `mutation()` or active-panel change to learn whether the
574
+ * change was driven by application code (via the {@link DockviewApi}) or a
575
+ * user gesture.
576
+ */
577
+ currentOrigin(): DockviewOrigin;
578
+ /**
579
+ * Run `func` with the operation origin set to `origin`, restoring the
580
+ * previous value afterwards. Used by the DockviewApi boundary to tag
581
+ * programmatic operations as `'api'`, and by user-gesture handlers to tag
582
+ * `'user'`. Only the outermost caller sets the origin — a nested call (or a
583
+ * call made while a mutation is already in flight) keeps whatever the
584
+ * enclosing operation established, so the trigger always wins.
585
+ */
586
+ withOrigin<T>(origin: DockviewOrigin, func: () => T): T;
587
+ /**
588
+ * Fire `onDidActivePanelChange` with the panel and the current operation
589
+ * {@link DockviewOrigin}. Callers keep their own dedupe guards.
590
+ */
591
+ private fireActivePanelChange;
357
592
  moveGroupOrPanel(options: MoveGroupOrPanelOptions): void;
593
+ private _doMoveGroupOrPanel;
358
594
  private moveTabGroupToGroup;
359
595
  moveGroup(options: MoveGroupOptions): void;
596
+ maximizeGroup(panel: DockviewGroupPanel): void;
597
+ exitMaximizedGroup(): void;
598
+ private _doMoveGroup;
360
599
  doSetGroupActive(group: DockviewGroupPanel | undefined): void;
361
600
  doSetGroupAndPanelActive(group: DockviewGroupPanel | undefined): void;
362
601
  private getNextGroupId;
363
602
  createGroup(options?: GroupOptions): DockviewGroupPanel;
364
603
  private createPanel;
365
604
  private createGroupAtLocation;
605
+ /**
606
+ * Tag a group with the location and render / drop-target containers
607
+ * matching the gridview root it now lives in: the main grid, a floating
608
+ * window (shares the main containers), or a popout window (uses its own
609
+ * window-local containers).
610
+ */
611
+ private setGroupLocationForRoot;
612
+ /**
613
+ * Resolve which gridview root currently owns a group: the main grid, or
614
+ * the nested gridview of the floating / popout window it lives in.
615
+ */
616
+ getGridviewForGroup(group: DockviewGroupPanel): Gridview;
617
+ /**
618
+ * The groups that live within the same floating / popout window as `group`
619
+ * (including `group` itself). Empty when `group` is in the main grid.
620
+ */
621
+ private nestedWindowMembers;
366
622
  private findGroup;
367
623
  private orientationAtLocation;
368
- private updateDropTargetModel;
369
624
  private updateTheme;
370
625
  }
371
626
  export {};