diff options
author | Connum <connum@gmail.com> | 2022-09-23 23:12:13 +0000 |
---|---|---|
committer | AUTOMATIC1111 <16777216c@gmail.com> | 2022-09-24 04:44:05 +0000 |
commit | 910a3d9427184cd5e8391add241fe91ff73bd40a (patch) | |
tree | 42d657bf7ffdb5a84f57ed39c2c503efc371d65d | |
parent | 0f77e1852ffa583a477edce7f7eabfb6aa6d5ec1 (diff) | |
download | stable-diffusion-webui-gfx803-910a3d9427184cd5e8391add241fe91ff73bd40a.tar.gz stable-diffusion-webui-gfx803-910a3d9427184cd5e8391add241fe91ff73bd40a.tar.bz2 stable-diffusion-webui-gfx803-910a3d9427184cd5e8391add241fe91ff73bd40a.zip |
make callback queue handling reusable and implement onUiTabChange()
-rw-r--r-- | script.js | 34 |
1 files changed, 25 insertions, 9 deletions
@@ -2,24 +2,40 @@ function gradioApp(){ return document.getElementsByTagName('gradio-app')[0].shadowRoot; } +function get_uiCurrentTab() { + return gradioApp().querySelector('.tabs button:not(.border-transparent)') +} + uiUpdateCallbacks = [] +uiTabChangeCallbacks = [] +let uiCurrentTab = null + function onUiUpdate(callback){ uiUpdateCallbacks.push(callback) } +function onUiTabChange(callback){ + uiTabChangeCallbacks.push(callback) +} -function uiUpdate(root){ - uiUpdateCallbacks.forEach(function(x){ - try { - x() - } catch (e) { - (console.error || console.log).call(console, e.message, e); - } - }) +function runCallback(x){ + try { + x() + } catch (e) { + (console.error || console.log).call(console, e.message, e); + } +} +function executeCallbacks(queue) { + queue.forEach(runCallback) } document.addEventListener("DOMContentLoaded", function() { var mutationObserver = new MutationObserver(function(m){ - uiUpdate(gradioApp()); + executeCallbacks(uiUpdateCallbacks); + const newTab = get_uiCurrentTab(); + if ( newTab && ( newTab !== uiCurrentTab ) ) { + uiCurrentTab = newTab; + executeCallbacks(uiTabChangeCallbacks); + } }); mutationObserver.observe( gradioApp(), { childList:true, subtree:true }) }); |