dockview-core 5.1.0 → 6.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 (117) hide show
  1. package/README.md +3 -1
  2. package/dist/cjs/api/component.api.d.ts +93 -1
  3. package/dist/cjs/api/component.api.js +146 -0
  4. package/dist/cjs/api/dockviewGroupPanelApi.d.ts +26 -0
  5. package/dist/cjs/api/dockviewGroupPanelApi.js +21 -1
  6. package/dist/cjs/api/entryPoints.js +4 -5
  7. package/dist/cjs/array.js +7 -8
  8. package/dist/cjs/dnd/dataTransfer.d.ts +2 -1
  9. package/dist/cjs/dnd/dataTransfer.js +5 -4
  10. package/dist/cjs/dnd/droptarget.d.ts +12 -0
  11. package/dist/cjs/dnd/droptarget.js +38 -10
  12. package/dist/cjs/dnd/ghost.js +1 -2
  13. package/dist/cjs/dockview/components/panel/content.js +5 -1
  14. package/dist/cjs/dockview/components/popupService.d.ts +9 -2
  15. package/dist/cjs/dockview/components/popupService.js +24 -9
  16. package/dist/cjs/dockview/components/tab/tab.d.ts +8 -1
  17. package/dist/cjs/dockview/components/tab/tab.js +94 -6
  18. package/dist/cjs/dockview/components/titlebar/tabGroupChip.d.ts +30 -0
  19. package/dist/cjs/dockview/components/titlebar/tabGroupChip.js +95 -0
  20. package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.d.ts +71 -0
  21. package/dist/cjs/dockview/components/titlebar/tabGroupIndicator.js +471 -0
  22. package/dist/cjs/dockview/components/titlebar/tabGroups.d.ts +57 -0
  23. package/dist/cjs/dockview/components/titlebar/tabGroups.js +612 -0
  24. package/dist/cjs/dockview/components/titlebar/tabOverflowControl.js +1 -2
  25. package/dist/cjs/dockview/components/titlebar/tabs.d.ts +67 -0
  26. package/dist/cjs/dockview/components/titlebar/tabs.js +1464 -34
  27. package/dist/cjs/dockview/components/titlebar/tabsContainer.d.ts +6 -0
  28. package/dist/cjs/dockview/components/titlebar/tabsContainer.js +132 -14
  29. package/dist/cjs/dockview/contextMenu.d.ts +10 -0
  30. package/dist/cjs/dockview/contextMenu.js +298 -0
  31. package/dist/cjs/dockview/dockviewComponent.d.ts +60 -3
  32. package/dist/cjs/dockview/dockviewComponent.js +712 -126
  33. package/dist/cjs/dockview/dockviewGroupPanelModel.d.ts +83 -0
  34. package/dist/cjs/dockview/dockviewGroupPanelModel.js +619 -27
  35. package/dist/cjs/dockview/dockviewShell.d.ts +128 -0
  36. package/dist/cjs/dockview/dockviewShell.js +681 -0
  37. package/dist/cjs/dockview/events.d.ts +9 -0
  38. package/dist/cjs/dockview/framework.d.ts +14 -0
  39. package/dist/cjs/dockview/options.d.ts +97 -2
  40. package/dist/cjs/dockview/options.js +10 -5
  41. package/dist/cjs/dockview/tabGroup.d.ts +99 -0
  42. package/dist/cjs/dockview/tabGroup.js +219 -0
  43. package/dist/cjs/dockview/tabGroupAccent.d.ts +65 -0
  44. package/dist/cjs/dockview/tabGroupAccent.js +128 -0
  45. package/dist/cjs/dockview/theme.d.ts +56 -1
  46. package/dist/cjs/dockview/theme.js +103 -6
  47. package/dist/cjs/dockview/types.d.ts +2 -0
  48. package/dist/cjs/dom.js +19 -19
  49. package/dist/cjs/events.js +2 -2
  50. package/dist/cjs/gridview/baseComponentGridview.d.ts +1 -0
  51. package/dist/cjs/gridview/baseComponentGridview.js +6 -3
  52. package/dist/cjs/gridview/gridview.js +7 -7
  53. package/dist/cjs/index.d.ts +8 -5
  54. package/dist/cjs/index.js +6 -1
  55. package/dist/cjs/popoutWindow.js +3 -3
  56. package/dist/cjs/splitview/splitviewPanel.d.ts +1 -1
  57. package/dist/dockview-core.js +5188 -729
  58. package/dist/dockview-core.min.js +2 -2
  59. package/dist/dockview-core.min.js.map +1 -1
  60. package/dist/dockview-core.min.noStyle.js +2 -2
  61. package/dist/dockview-core.min.noStyle.js.map +1 -1
  62. package/dist/dockview-core.noStyle.js +5186 -727
  63. package/dist/esm/api/component.api.d.ts +93 -1
  64. package/dist/esm/api/component.api.js +118 -0
  65. package/dist/esm/api/dockviewGroupPanelApi.d.ts +26 -0
  66. package/dist/esm/api/dockviewGroupPanelApi.js +21 -1
  67. package/dist/esm/dnd/dataTransfer.d.ts +2 -1
  68. package/dist/esm/dnd/dataTransfer.js +2 -1
  69. package/dist/esm/dnd/droptarget.d.ts +12 -0
  70. package/dist/esm/dnd/droptarget.js +33 -5
  71. package/dist/esm/dockview/components/panel/content.js +5 -1
  72. package/dist/esm/dockview/components/popupService.d.ts +9 -2
  73. package/dist/esm/dockview/components/popupService.js +23 -9
  74. package/dist/esm/dockview/components/tab/tab.d.ts +8 -1
  75. package/dist/esm/dockview/components/tab/tab.js +96 -6
  76. package/dist/esm/dockview/components/titlebar/tabGroupChip.d.ts +30 -0
  77. package/dist/esm/dockview/components/titlebar/tabGroupChip.js +68 -0
  78. package/dist/esm/dockview/components/titlebar/tabGroupIndicator.d.ts +71 -0
  79. package/dist/esm/dockview/components/titlebar/tabGroupIndicator.js +354 -0
  80. package/dist/esm/dockview/components/titlebar/tabGroups.d.ts +57 -0
  81. package/dist/esm/dockview/components/titlebar/tabGroups.js +406 -0
  82. package/dist/esm/dockview/components/titlebar/tabs.d.ts +67 -0
  83. package/dist/esm/dockview/components/titlebar/tabs.js +1212 -25
  84. package/dist/esm/dockview/components/titlebar/tabsContainer.d.ts +6 -0
  85. package/dist/esm/dockview/components/titlebar/tabsContainer.js +105 -7
  86. package/dist/esm/dockview/contextMenu.d.ts +10 -0
  87. package/dist/esm/dockview/contextMenu.js +213 -0
  88. package/dist/esm/dockview/dockviewComponent.d.ts +60 -3
  89. package/dist/esm/dockview/dockviewComponent.js +460 -35
  90. package/dist/esm/dockview/dockviewGroupPanelModel.d.ts +83 -0
  91. package/dist/esm/dockview/dockviewGroupPanelModel.js +460 -4
  92. package/dist/esm/dockview/dockviewShell.d.ts +128 -0
  93. package/dist/esm/dockview/dockviewShell.js +621 -0
  94. package/dist/esm/dockview/events.d.ts +9 -0
  95. package/dist/esm/dockview/framework.d.ts +14 -0
  96. package/dist/esm/dockview/options.d.ts +97 -2
  97. package/dist/esm/dockview/options.js +5 -0
  98. package/dist/esm/dockview/tabGroup.d.ts +99 -0
  99. package/dist/esm/dockview/tabGroup.js +144 -0
  100. package/dist/esm/dockview/tabGroupAccent.d.ts +65 -0
  101. package/dist/esm/dockview/tabGroupAccent.js +116 -0
  102. package/dist/esm/dockview/theme.d.ts +56 -1
  103. package/dist/esm/dockview/theme.js +102 -5
  104. package/dist/esm/dockview/types.d.ts +2 -0
  105. package/dist/esm/dom.js +1 -1
  106. package/dist/esm/gridview/baseComponentGridview.d.ts +1 -0
  107. package/dist/esm/gridview/baseComponentGridview.js +4 -1
  108. package/dist/esm/index.d.ts +8 -5
  109. package/dist/esm/index.js +2 -1
  110. package/dist/esm/popoutWindow.js +1 -1
  111. package/dist/esm/splitview/splitviewPanel.d.ts +1 -1
  112. package/dist/package/main.cjs.js +5182 -753
  113. package/dist/package/main.cjs.min.js +2 -2
  114. package/dist/package/main.esm.min.mjs +2 -2
  115. package/dist/package/main.esm.mjs +5168 -753
  116. package/dist/styles/dockview.css +1968 -195
  117. package/package.json +5 -1
@@ -15,11 +15,14 @@ import { OverlayRenderContainer } from '../overlay/overlayRenderContainer';
15
15
  import { TitleEvent } from '../api/dockviewPanelApi';
16
16
  import { Contraints } from '../gridview/gridviewPanel';
17
17
  import { DropTargetAnchorContainer } from '../dnd/dropTargetAnchorContainer';
18
+ import { ITabGroup, SerializedTabGroup, TabGroupOptions } from './tabGroup';
19
+ import { EdgeGroupPosition } from './dockviewShell';
18
20
  interface GroupMoveEvent {
19
21
  groupId: string;
20
22
  itemId?: string;
21
23
  target: Position;
22
24
  index?: number;
25
+ tabGroupId?: string;
23
26
  }
24
27
  interface CoreGroupOptions {
25
28
  locked?: DockviewGroupPanelLocked;
@@ -39,10 +42,14 @@ export interface GroupPanelViewState extends CoreGroupOptions {
39
42
  views: string[];
40
43
  activeView?: string;
41
44
  id: string;
45
+ tabGroups?: SerializedTabGroup[];
42
46
  }
43
47
  export interface DockviewGroupChangeEvent {
44
48
  readonly panel: IDockviewPanel;
45
49
  }
50
+ export interface CreateTabGroupOptions extends TabGroupOptions {
51
+ id?: string;
52
+ }
46
53
  export declare class DockviewDidDropEvent extends DockviewEvent {
47
54
  private readonly options;
48
55
  get nativeEvent(): DragEvent;
@@ -125,6 +132,9 @@ export type DockviewGroupLocation = {
125
132
  type: 'popout';
126
133
  getWindow: () => Window;
127
134
  popoutUrl?: string;
135
+ } | {
136
+ type: 'edge';
137
+ position: EdgeGroupPosition;
128
138
  };
129
139
  export declare class DockviewGroupPanelModel extends CompositeDisposable implements IDockviewGroupPanelModel {
130
140
  private readonly container;
@@ -155,6 +165,8 @@ export declare class DockviewGroupPanelModel extends CompositeDisposable impleme
155
165
  private _height;
156
166
  private readonly _panels;
157
167
  private readonly _panelDisposables;
168
+ private readonly _tabGroupDisposables;
169
+ private readonly _pendingMicrotaskDisposables;
158
170
  private readonly _onMove;
159
171
  readonly onMove: Event<GroupMoveEvent>;
160
172
  private readonly _onDidDrop;
@@ -179,7 +191,39 @@ export declare class DockviewGroupPanelModel extends CompositeDisposable impleme
179
191
  readonly onDidActivePanelChange: Event<DockviewGroupChangeEvent>;
180
192
  private readonly _onUnhandledDragOverEvent;
181
193
  readonly onUnhandledDragOverEvent: Event<DockviewDndOverlayEvent>;
194
+ private readonly _tabGroups;
195
+ private readonly _tabGroupMap;
196
+ private readonly _panelToTabGroup;
197
+ private _tabGroupIdCounter;
198
+ private _pendingTabGroupUpdate;
199
+ private readonly _onDidCreateTabGroup;
200
+ readonly onDidCreateTabGroup: Event<{
201
+ tabGroup: ITabGroup;
202
+ }>;
203
+ private readonly _onDidDestroyTabGroup;
204
+ readonly onDidDestroyTabGroup: Event<{
205
+ tabGroup: ITabGroup;
206
+ }>;
207
+ private readonly _onDidAddPanelToTabGroup;
208
+ readonly onDidAddPanelToTabGroup: Event<{
209
+ tabGroup: ITabGroup;
210
+ panelId: string;
211
+ }>;
212
+ private readonly _onDidRemovePanelFromTabGroup;
213
+ readonly onDidRemovePanelFromTabGroup: Event<{
214
+ tabGroup: ITabGroup;
215
+ panelId: string;
216
+ }>;
217
+ private readonly _onDidTabGroupChange;
218
+ readonly onDidTabGroupChange: Event<{
219
+ tabGroup: ITabGroup;
220
+ }>;
221
+ private readonly _onDidTabGroupCollapsedChange;
222
+ readonly onDidTabGroupCollapsedChange: Event<{
223
+ tabGroup: ITabGroup;
224
+ }>;
182
225
  private readonly _api;
226
+ get tabGroups(): readonly ITabGroup[];
183
227
  get element(): HTMLElement;
184
228
  get activePanel(): IDockviewPanel | undefined;
185
229
  get locked(): DockviewGroupPanelLocked;
@@ -196,6 +240,45 @@ export declare class DockviewGroupPanelModel extends CompositeDisposable impleme
196
240
  get location(): DockviewGroupLocation;
197
241
  set location(value: DockviewGroupLocation);
198
242
  constructor(container: HTMLElement, accessor: DockviewComponent, id: string, options: GroupOptions, groupPanel: DockviewGroupPanel);
243
+ private _scheduleTabGroupUpdate;
244
+ createTabGroup(options?: CreateTabGroupOptions): ITabGroup;
245
+ dissolveTabGroup(tabGroupId: string): void;
246
+ addPanelToTabGroup(tabGroupId: string, panelId: string, index?: number): void;
247
+ /**
248
+ * Move a panel to a new index within its tab group.
249
+ * Updates both the group's panelIds order and the flat _panels array.
250
+ */
251
+ movePanelWithinGroup(tabGroupId: string, panelId: string, newIndex: number): void;
252
+ /**
253
+ * Move a panel from one tab group to another.
254
+ */
255
+ movePanelBetweenGroups(sourcePanelId: string, targetTabGroupId: string, targetIndex?: number): void;
256
+ /**
257
+ * Move an entire tab group to a new position in the tab bar.
258
+ * The group's internal panel order is preserved.
259
+ */
260
+ moveTabGroup(tabGroupId: string, targetIndex: number): void;
261
+ /**
262
+ * Ensure a panel is at the correct global index in _panels
263
+ * to maintain contiguity of its tab group members.
264
+ */
265
+ private _enforceContiguity;
266
+ /**
267
+ * Compute the global index in _panels for a group-local index.
268
+ * Finds where the group's panels start in the flat array and offsets.
269
+ */
270
+ private _computeGlobalIndex;
271
+ removePanelFromTabGroup(panelId: string): void;
272
+ getTabGroups(): readonly ITabGroup[];
273
+ updateTabGroups(): void;
274
+ refreshTabGroupAccent(): void;
275
+ getTabGroupForPanel(panelId: string): ITabGroup | undefined;
276
+ private _findTabGroupForPanel;
277
+ private _removeTabGroupInternal;
278
+ private _handleGroupCollapse;
279
+ private _handleGroupExpand;
280
+ /** Restore tab groups from serialized data (used by fromJSON) */
281
+ restoreTabGroups(serializedGroups: SerializedTabGroup[]): void;
199
282
  focusContent(): void;
200
283
  set renderContainer(value: OverlayRenderContainer | null);
201
284
  get renderContainer(): OverlayRenderContainer;