aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorConnum <connum@gmail.com>2022-09-23 23:12:13 +0000
committerAUTOMATIC1111 <16777216c@gmail.com>2022-09-24 04:44:05 +0000
commit910a3d9427184cd5e8391add241fe91ff73bd40a (patch)
tree42d657bf7ffdb5a84f57ed39c2c503efc371d65d
parent0f77e1852ffa583a477edce7f7eabfb6aa6d5ec1 (diff)
downloadstable-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.js34
1 files changed, 25 insertions, 9 deletions
diff --git a/script.js b/script.js
index a1b93ae9..7f26e23b 100644
--- a/script.js
+++ b/script.js
@@ -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 })
});