| 
									
										
										
										
											2022-08-31 22:19:30 +03:00
										 |  |  | function gradioApp(){ | 
					
						
							| 
									
										
										
										
											2022-09-02 23:25:29 +03:00
										 |  |  |     return document.getElementsByTagName('gradio-app')[0].shadowRoot; | 
					
						
							| 
									
										
										
										
											2022-08-31 22:19:30 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-24 01:12:13 +02:00
										 |  |  | function get_uiCurrentTab() { | 
					
						
							|  |  |  |     return gradioApp().querySelector('.tabs button:not(.border-transparent)') | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-11 02:22:46 -03:00
										 |  |  | function get_uiCurrentTabContent() { | 
					
						
							|  |  |  |     return gradioApp().querySelector('.tabitem[id^=tab_]:not([style*="display: none"])') | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-18 08:37:03 +03:00
										 |  |  | uiUpdateCallbacks = [] | 
					
						
							| 
									
										
										
										
											2022-09-24 01:12:13 +02:00
										 |  |  | uiTabChangeCallbacks = [] | 
					
						
							|  |  |  | let uiCurrentTab = null | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-18 08:37:03 +03:00
										 |  |  | function onUiUpdate(callback){ | 
					
						
							|  |  |  |     uiUpdateCallbacks.push(callback) | 
					
						
							| 
									
										
										
										
											2022-09-17 01:03:03 +01:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2022-09-24 01:12:13 +02:00
										 |  |  | function onUiTabChange(callback){ | 
					
						
							|  |  |  |     uiTabChangeCallbacks.push(callback) | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2022-09-17 01:03:03 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-24 01:12:13 +02:00
										 |  |  | function runCallback(x){ | 
					
						
							|  |  |  |     try { | 
					
						
							|  |  |  |         x() | 
					
						
							|  |  |  |     } catch (e) { | 
					
						
							|  |  |  |         (console.error || console.log).call(console, e.message, e); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | function executeCallbacks(queue) { | 
					
						
							|  |  |  |     queue.forEach(runCallback) | 
					
						
							| 
									
										
										
										
											2022-08-31 22:19:30 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | document.addEventListener("DOMContentLoaded", function() { | 
					
						
							|  |  |  |     var mutationObserver = new MutationObserver(function(m){ | 
					
						
							| 
									
										
										
										
											2022-09-24 01:12:13 +02:00
										 |  |  |         executeCallbacks(uiUpdateCallbacks); | 
					
						
							|  |  |  |         const newTab = get_uiCurrentTab(); | 
					
						
							|  |  |  |         if ( newTab && ( newTab !== uiCurrentTab ) ) { | 
					
						
							|  |  |  |             uiCurrentTab = newTab; | 
					
						
							|  |  |  |             executeCallbacks(uiTabChangeCallbacks); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-08-31 22:19:30 +03:00
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2022-09-02 23:25:29 +03:00
										 |  |  |     mutationObserver.observe( gradioApp(), { childList:true, subtree:true }) | 
					
						
							| 
									
										
										
										
											2022-08-31 22:19:30 +03:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2022-09-26 18:12:55 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-10 18:16:04 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Add a ctrl+enter as a shortcut to start a generation | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  |  document.addEventListener('keydown', function(e) { | 
					
						
							|  |  |  |     var handled = false; | 
					
						
							|  |  |  |     if (e.key !== undefined) { | 
					
						
							|  |  |  |         if((e.key == "Enter" && (e.metaKey || e.ctrlKey))) handled = true; | 
					
						
							|  |  |  |     } else if (e.keyCode !== undefined) { | 
					
						
							|  |  |  |         if((e.keyCode == 13 && (e.metaKey || e.ctrlKey))) handled = true; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2022-10-11 02:22:46 -03:00
										 |  |  |     if (handled) { | 
					
						
							|  |  |  |         button = get_uiCurrentTabContent().querySelector('button[id$=_generate]'); | 
					
						
							|  |  |  |         if (button) { | 
					
						
							|  |  |  |             button.click(); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-10-10 18:16:04 +02:00
										 |  |  |         e.preventDefault(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | }) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-26 18:12:55 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * checks that a UI element is not in another hidden element or tab content | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 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; | 
					
						
							|  |  |  | } |