@@ -79,24 +79,28 @@ export function nextZIndex(current?: number): number {
79
79
return ++ _zCount ;
80
80
}
81
81
82
+ function compareFindId ( item : PanelData | TabData | BoxData , id : string | ( ( item : PanelData | TabData | BoxData ) => boolean ) ) : boolean {
83
+ return item && ( typeof id === 'function' ? id ( item ) : item . id === id ) ;
84
+ }
85
+
82
86
83
- function findInPanel ( panel : PanelData , id : string , filter : Filter ) : PanelData | TabData | undefined {
84
- if ( panel . id === id && ( filter & Filter . Panel ) ) {
87
+ function findInPanel ( panel : PanelData , id : string | ( ( item : PanelData | TabData | BoxData ) => boolean ) , filter : Filter ) : PanelData | TabData | undefined {
88
+ if ( compareFindId ( panel , id ) && ( filter & Filter . Panel ) ) {
85
89
return panel ;
86
90
}
87
91
if ( filter & Filter . Tab ) {
88
92
for ( let tab of panel . tabs ) {
89
- if ( tab . id === id ) {
93
+ if ( compareFindId ( tab , id ) ) {
90
94
return tab ;
91
95
}
92
96
}
93
97
}
94
98
return undefined ;
95
99
}
96
100
97
- function findInBox ( box : BoxData | undefined , id : string , filter : Filter ) : PanelData | TabData | BoxData | undefined {
101
+ function findInBox ( box : BoxData | undefined , id : string | ( ( item : PanelData | TabData | BoxData ) => boolean ) , filter : Filter ) : PanelData | TabData | BoxData | undefined {
98
102
let result : PanelData | TabData | BoxData | undefined ;
99
- if ( ( filter | Filter . Box ) && box ?. id === id ) {
103
+ if ( ( filter | Filter . Box ) && compareFindId ( box , id ) ) {
100
104
return box ;
101
105
}
102
106
if ( ! box ?. children ) {
@@ -133,7 +137,7 @@ export enum Filter {
133
137
}
134
138
135
139
136
- export function find ( layout : LayoutData , id : string , filter : Filter = Filter . AnyTabPanel ) : PanelData | TabData | BoxData | undefined {
140
+ export function find ( layout : LayoutData , id : string | ( ( item : PanelData | TabData | BoxData ) => boolean ) , filter : Filter = Filter . AnyTabPanel ) : PanelData | TabData | BoxData | undefined {
137
141
let result : PanelData | TabData | BoxData | undefined ;
138
142
139
143
if ( filter & Filter . Docked ) {
0 commit comments