@@ -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