Skip to content

Commit 9e57a86

Browse files
committed
feat: popout persistance logic
1 parent c4f46a1 commit 9e57a86

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

packages/dockview-core/src/dockview/dockviewComponent.ts

+15-15
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ export interface SerializedFloatingGroup {
110110

111111
export interface SerializedPopoutGroup {
112112
data: GroupPanelViewState;
113-
gridReferenceGroup: string;
113+
gridReferenceGroup?: string;
114114
position: Box | null;
115115
}
116116

@@ -339,7 +339,7 @@ export class DockviewComponent
339339
private readonly _popoutGroups: {
340340
window: PopoutWindow;
341341
popoutGroup: DockviewGroupPanel;
342-
referenceGroup: DockviewGroupPanel;
342+
referenceGroup: string;
343343
disposable: IDisposable;
344344
}[] = [];
345345
private readonly _rootDropTarget: Droptarget;
@@ -676,7 +676,7 @@ export class DockviewComponent
676676
const value = {
677677
window: _window,
678678
popoutGroup: group,
679-
referenceGroup,
679+
referenceGroup: referenceGroup.id,
680680
disposable: popoutWindowDisposable,
681681
};
682682

@@ -1026,7 +1026,7 @@ export class DockviewComponent
10261026
(group) => {
10271027
return {
10281028
data: group.popoutGroup.toJSON() as GroupPanelViewState,
1029-
gridReferenceGroup: group.referenceGroup.id,
1029+
gridReferenceGroup: group.referenceGroup,
10301030
position: group.window.dimensions(),
10311031
};
10321032
}
@@ -1159,19 +1159,16 @@ export class DockviewComponent
11591159

11601160
const group = createGroupFromSerializedState(data);
11611161

1162-
if (!gridReferenceGroup) {
1163-
/**
1164-
* workaround to handle <= v1.9.2
1165-
*/
1166-
this.doAddGroup(group, [0]);
1167-
}
1168-
11691162
this.addPopoutGroup(
1170-
this.getPanel(gridReferenceGroup) ?? group,
1163+
(gridReferenceGroup
1164+
? this.getPanel(gridReferenceGroup)
1165+
: undefined) ?? group,
11711166
{
11721167
skipRemoveGroup: true,
11731168
position: position ?? undefined,
1174-
overridePopoutGroup: group,
1169+
overridePopoutGroup: gridReferenceGroup
1170+
? group
1171+
: undefined,
11751172
}
11761173
);
11771174
}
@@ -1581,8 +1578,11 @@ export class DockviewComponent
15811578
if (selectedGroup) {
15821579
if (!options?.skipDispose) {
15831580
if (!options?.skipPopoutAssociated) {
1584-
if (this._groups.has(selectedGroup.referenceGroup.id)) {
1585-
this.removeGroup(selectedGroup.referenceGroup);
1581+
const refGroup = this.getPanel(
1582+
selectedGroup.referenceGroup
1583+
);
1584+
if (refGroup) {
1585+
this.removeGroup(refGroup);
15861586
}
15871587
}
15881588

0 commit comments

Comments
 (0)