@@ -162,6 +162,8 @@ function getGroupedTab(dataSource: Tab[], enabledOnly = false) {
162162 return Object . entries ( groups ) as [ AllTabGroup , { show : boolean ; tabs : Tab [ ] } ] [ ]
163163}
164164
165+ interface GroupData { name : string ; index : number }
166+
165167function initGroupData ( tabs : Tab [ ] ) {
166168 return tabs . reduce ( ( groups , tab ) => {
167169 const group = tab . group
@@ -175,7 +177,7 @@ function initGroupData(tabs: Tab[]) {
175177 name : tab . title , index : tab . groupIndex ,
176178 } )
177179 return groups
178- } , { } as Record < AllTabGroup , { data : { name : string ; index : number } [ ] ; show : boolean } > )
180+ } , { } as Record < AllTabGroup , { data : GroupData [ ] ; show : boolean } > )
179181}
180182
181183function updateDisabledTabs ( disabledTabNames : string [ ] , disabledGroups : string [ ] = [ ] ) {
@@ -218,6 +220,12 @@ export function getSortedTabs(sourceTabs: Tab[]) {
218220 return tabs
219221}
220222
223+ function updateUngroupedData ( data : GroupData [ ] ) {
224+ if ( ! groupsData . value [ DEFAULT_TAB_GROUP ] )
225+ createGroup ( DEFAULT_TAB_GROUP )
226+ groupsData . value [ DEFAULT_TAB_GROUP ] . data = data
227+ }
228+
221229export function ungroupAllTabs ( ) {
222230 const tabs = allTabs . value . slice ( )
223231 const names : string [ ] = [ ]
@@ -227,7 +235,7 @@ export function ungroupAllTabs() {
227235 names . push ( tab . title )
228236 } )
229237 allTabs . value = tabs
230- groupsData . value [ DEFAULT_TAB_GROUP ] . data = names . map ( name => ( { name, index : - 1 } ) )
238+ updateUngroupedData ( names . map ( name => ( { name, index : - 1 } ) ) )
231239}
232240
233241export function resetAllTabs ( ) {
@@ -240,7 +248,7 @@ export function shouldHideTabGroup(groupName: string, tabLength: number) {
240248}
241249
242250export function removeTabGroup ( group : AllTabGroup ) {
243- const tabs = allTabs . value
251+ const tabs = allTabs . value . slice ( )
244252 const tabNames : string [ ] = [ ]
245253 tabs . forEach ( ( item ) => {
246254 if ( item . group === group ) {
@@ -251,7 +259,8 @@ export function removeTabGroup(group: AllTabGroup) {
251259 } )
252260 allTabs . value = tabs
253261 Reflect . deleteProperty ( groupsData . value , group )
254- groupsData . value [ DEFAULT_TAB_GROUP ] . data . push ( ...tabNames . map ( name => ( { name, index : - 1 } ) ) )
262+
263+ updateUngroupedData ( tabNames . map ( name => ( { name, index : - 1 } ) ) )
255264}
256265
257266export function checkGroupExist ( groupName : string ) {
0 commit comments