@@ -21,19 +21,27 @@ function switchToInpaintUpload() {
2121    return  arguments ; 
2222} 
2323
24+ function  samSpecialTabForUI ( )  { 
25+     return  'sam_special_tab_for_ui'  in  opts  &&  opts . sam_special_tab_for_ui ; 
26+ } 
27+ 
2428function  samTabPrefix ( )  { 
25-     const  tabs  =  gradioApp ( ) . querySelector ( '#tabs' ) ; 
26-     if  ( tabs )  { 
27-         const  buttons  =  tabs . querySelectorAll ( 'button' ) ; 
28-         if  ( buttons )  { 
29-             if  ( buttons [ 0 ] . className . includes ( "selected" ) )  { 
30-                 return  "txt2img_sam_" 
31-             }  else  if  ( buttons [ 1 ] . className . includes ( "selected" ) )  { 
32-                 return  "img2img_sam_" 
29+     if  ( samSpecialTabForUI ( ) )  { 
30+         return  "img2img_sam_" ; 
31+     }  else  { 
32+         const  tabs  =  gradioApp ( ) . querySelector ( '#tabs' ) ; 
33+         if  ( tabs )  { 
34+             const  buttons  =  tabs . querySelectorAll ( 'button' ) ; 
35+             if  ( buttons )  { 
36+                 if  ( buttons [ 0 ] . className . includes ( "selected" ) )  { 
37+                     return  "txt2img_sam_" ; 
38+                 }  else  if  ( buttons [ 1 ] . className . includes ( "selected" ) )  { 
39+                     return  "img2img_sam_" ; 
40+                 } 
3341            } 
3442        } 
43+         return  "_sam_" ; 
3544    } 
36-     return  "_sam_" 
3745} 
3846
3947function  samImmediatelyGenerate ( )  { 
@@ -187,4 +195,23 @@ onUiUpdate(() => {
187195            samPrevImg [ samTabPrefix ( ) ]  =  null ; 
188196        } 
189197    } 
190- } ) 
198+ } ) ; 
199+ 
200+ 
201+ async  function  samWaitForOpts ( )  { 
202+     for  ( ;  ; )  { 
203+         if  ( window . opts  &&  Object . keys ( window . opts ) . length )  { 
204+             return  window . opts ; 
205+         } 
206+         await  new  Promise ( resolve  =>  setTimeout ( resolve ,  100 ) ) ; 
207+     } 
208+ } 
209+ 
210+ onUiLoaded ( async  ( )  =>  { 
211+     const  opts  =  await  samWaitForOpts ( ) ; 
212+     if  ( samSpecialTabForUI ( ) )  { 
213+         let  accordion  =  gradioApp ( ) . getElementById ( 'segment_anything_accordion_img2img' ) ; 
214+         let  tab  =  gradioApp ( ) . getElementById ( 'tab_segment_anything' ) ; 
215+         tab . appendChild ( accordion ) 
216+     } 
217+ } ) ; 
0 commit comments