| | function gradioApp() { |
| | const elems = document.getElementsByTagName('gradio-app') |
| | const elem = elems.length == 0 ? document : elems[0] |
| |
|
| | if (elem !== document) elem.getElementById = function(id){ return document.getElementById(id) } |
| | return elem.shadowRoot ? elem.shadowRoot : elem |
| | } |
| |
|
| | function get_uiCurrentTab() { |
| | return gradioApp().querySelector('#tabs button.selected') |
| | } |
| |
|
| | function get_uiCurrentTabContent() { |
| | return gradioApp().querySelector('.tabitem[id^=tab_]:not([style*="display: none"])') |
| | } |
| |
|
| | uiUpdateCallbacks = [] |
| | uiLoadedCallbacks = [] |
| | uiTabChangeCallbacks = [] |
| | optionsChangedCallbacks = [] |
| | let uiCurrentTab = null |
| |
|
| | function onUiUpdate(callback){ |
| | uiUpdateCallbacks.push(callback) |
| | } |
| | function onUiLoaded(callback){ |
| | uiLoadedCallbacks.push(callback) |
| | } |
| | function onUiTabChange(callback){ |
| | uiTabChangeCallbacks.push(callback) |
| | } |
| | function onOptionsChanged(callback){ |
| | optionsChangedCallbacks.push(callback) |
| | } |
| |
|
| | function runCallback(x, m){ |
| | try { |
| | x(m) |
| | } catch (e) { |
| | (console.error || console.log).call(console, e.message, e); |
| | } |
| | } |
| | function executeCallbacks(queue, m) { |
| | queue.forEach(function(x){runCallback(x, m)}) |
| | } |
| |
|
| | var executedOnLoaded = false; |
| |
|
| | document.addEventListener("DOMContentLoaded", function() { |
| | var mutationObserver = new MutationObserver(function(m){ |
| | if(!executedOnLoaded && gradioApp().querySelector('#txt2img_prompt')){ |
| | executedOnLoaded = true; |
| | executeCallbacks(uiLoadedCallbacks); |
| | } |
| |
|
| | executeCallbacks(uiUpdateCallbacks, m); |
| | const newTab = get_uiCurrentTab(); |
| | if ( newTab && ( newTab !== uiCurrentTab ) ) { |
| | uiCurrentTab = newTab; |
| | executeCallbacks(uiTabChangeCallbacks); |
| | } |
| | }); |
| | mutationObserver.observe( gradioApp(), { childList:true, subtree:true }) |
| | }); |
| |
|
| | |
| | |
| | |
| | document.addEventListener('keydown', function(e) { |
| | var handled = false; |
| | if (e.key !== undefined) { |
| | if((e.key == "Enter" && (e.metaKey || e.ctrlKey || e.altKey))) handled = true; |
| | } else if (e.keyCode !== undefined) { |
| | if((e.keyCode == 13 && (e.metaKey || e.ctrlKey || e.altKey))) handled = true; |
| | } |
| | if (handled) { |
| | button = get_uiCurrentTabContent().querySelector('button[id$=_generate]'); |
| | if (button) { |
| | button.click(); |
| | } |
| | e.preventDefault(); |
| | } |
| | }) |
| |
|
| | |
| | |
| | |
| | function uiElementIsVisible(el) { |
| | let isVisible = !el.closest('.\\!hidden'); |
| | if ( ! isVisible ) { |
| | return false; |
| | } |
| |
|
| | while( isVisible = el.closest('.tabitem')?.style.display !== 'none' ) { |
| | if ( ! isVisible ) { |
| | return false; |
| | } else if ( el.parentElement ) { |
| | el = el.parentElement |
| | } else { |
| | break; |
| | } |
| | } |
| | return isVisible; |
| | } |
| |
|