// various functions for interation with ui.py not large enough to warrant putting them in separate files function set_theme(theme){ gradioURL = window.location.href if (!gradioURL.includes('?__theme=')) { window.location.replace(gradioURL + '?__theme=' + theme); } } function selected_gallery_index(){ var buttons = gradioApp().querySelectorAll('[style="display: block;"].tabitem .gallery-item') var button = gradioApp().querySelector('[style="display: block;"].tabitem .gallery-item.\\!ring-2') var result = -1 buttons.forEach(function(v, i){ if(v==button) { result = i } }) return result } function extract_image_from_gallery(gallery){ if(gallery.length == 1){ return gallery[0] } index = selected_gallery_index() if (index < 0 || index >= gallery.length){ return [null] } return gallery[index]; } function args_to_array(args){ res = [] for(var i=0;i label > textarea"); let neg_prompt = gradioApp().querySelector("#txt2img_neg_prompt > label > textarea"); if (selected_tab_id() == "tab_txt2img") { } else { pos_prompt = gradioApp().querySelector("#img2img_prompt > label > textarea"); neg_prompt = gradioApp().querySelector("#img2img_neg_prompt > label > textarea"); } pos_prompt.value = "" neg_prompt.value = "" //update prompt values on server-side pos_prompt.dispatchEvent( new Event("input", {bubbles: true}) ) neg_prompt.dispatchEvent( new Event("input", {bubbles: true}) ) return true } else return false } opts = {} function apply_settings(jsdata){ console.log(jsdata) opts = JSON.parse(jsdata) return jsdata } onUiUpdate(function(){ if(Object.keys(opts).length != 0) return; json_elem = gradioApp().getElementById('settings_json') if(json_elem == null) return; textarea = json_elem.querySelector('textarea') jsdata = textarea.value opts = JSON.parse(jsdata) Object.defineProperty(textarea, 'value', { set: function(newValue) { var valueProp = Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, 'value'); var oldValue = valueProp.get.call(textarea); valueProp.set.call(textarea, newValue); if (oldValue != newValue) { opts = JSON.parse(textarea.value) } }, get: function() { var valueProp = Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, 'value'); return valueProp.get.call(textarea); } }); json_elem.parentElement.style.display="none" if (!txt2img_textarea) { txt2img_textarea = gradioApp().querySelector("#txt2img_prompt > label > textarea"); txt2img_textarea?.addEventListener("input", () => update_token_counter("txt2img_token_button")); } if (!img2img_textarea) { img2img_textarea = gradioApp().querySelector("#img2img_prompt > label > textarea"); img2img_textarea?.addEventListener("input", () => update_token_counter("img2img_token_button")); } }) let txt2img_textarea, img2img_textarea = undefined; let wait_time = 800 let token_timeout; function update_txt2img_tokens(...args) { update_token_counter("txt2img_token_button") if (args.length == 2) return args[0] return args; } function update_img2img_tokens(...args) { update_token_counter("img2img_token_button") if (args.length == 2) return args[0] return args; } function update_token_counter(button_id) { if (token_timeout) clearTimeout(token_timeout); token_timeout = setTimeout(() => gradioApp().getElementById(button_id)?.click(), wait_time); } function restart_reload(){ document.body.innerHTML='

Reloading...

'; setTimeout(function(){location.reload()},2000) }