// various functions for interation with ui.py not large enough to warrant putting them in separate files 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"); txt2img_textarea?.addEventListener("input", () => update_token_counter("txt2img_token_button")); txt2img_textarea?.addEventListener("keyup", (event) => submit_prompt(event, "txt2img_generate")); } if (!img2img_textarea) { img2img_textarea = gradioApp().querySelector("#img2img_prompt > label > textarea"); img2img_textarea?.addEventListener("input", () => update_token_counter("img2img_token_button")); img2img_textarea?.addEventListener("keyup", (event) => submit_prompt(event, "img2img_generate")); } }) 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 submit_prompt(event, generate_button_id) { if (event.altKey && event.keyCode === 13) { event.preventDefault(); gradioApp().getElementById(generate_button_id).click(); return; } } function restart_reload(){ document.body.innerHTML='

Reloading...

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