stable-diffusion-webui-forge/javascript/extensions.js
2025-07-28 14:52:53 +08:00

118 lines
3.2 KiB
JavaScript

function extensions_apply(_disabled_list, _update_list, disable_all) {
let disable = [];
let update = [];
const extensions_input = gradioApp().querySelectorAll(
'#extensions input[type="checkbox"]',
);
if (extensions_input.length == 0) {
throw Error("Extensions page not yet loaded.");
}
extensions_input.forEach(function (x) {
if (x.name.startsWith("enable_") && !x.checked) {
disable.push(x.name.substring(7));
}
if (x.name.startsWith("update_") && x.checked) {
update.push(x.name.substring(7));
}
});
restart_reload();
return [JSON.stringify(disable), JSON.stringify(update), disable_all];
}
function extensions_check() {
let disable = [];
gradioApp()
.querySelectorAll('#extensions input[type="checkbox"]')
.forEach(function (x) {
if (x.name.startsWith("enable_") && !x.checked) {
disable.push(x.name.substring(7));
}
});
gradioApp()
.querySelectorAll("#extensions .extension_status")
.forEach(function (x) {
x.innerHTML = "Loading...";
});
let id = randomId();
requestProgress(
id,
gradioApp().getElementById("extensions_installed_html"),
null,
function () { },
);
return [id, JSON.stringify(disable)];
}
function install_extension_from_index(button, url) {
button.disabled = "disabled";
button.value = "Installing...";
let textarea = gradioApp().querySelector("#extension_to_install textarea");
textarea.value = url;
updateInput(textarea);
gradioApp().querySelector("#install_extension_button").click();
}
function config_state_confirm_restore(
_,
config_state_name,
config_restore_type,
) {
if (config_state_name == "Current") {
return [false, config_state_name, config_restore_type];
}
let restored = "";
if (config_restore_type == "extensions") {
restored = "all saved extension versions";
} else if (config_restore_type == "webui") {
restored = "the webui version";
} else {
restored = "the webui version and all saved extension versions";
}
let confirmed = confirm(
"Are you sure you want to restore from this state?\nThis will reset " +
restored +
".",
);
if (confirmed) {
restart_reload();
gradioApp()
.querySelectorAll("#extensions .extension_status")
.forEach(function (x) {
x.innerHTML = "Loading...";
});
}
return [confirmed, config_state_name, config_restore_type];
}
function toggle_all_extensions(event) {
gradioApp()
.querySelectorAll("#extensions .extension_toggle")
.forEach(function (checkbox_el) {
checkbox_el.checked = event.target.checked;
});
}
function toggle_extension() {
let all_extensions_toggled = true;
for (const checkbox_el of gradioApp().querySelectorAll(
"#extensions .extension_toggle",
)) {
if (!checkbox_el.checked) {
all_extensions_toggled = false;
break;
}
}
gradioApp().querySelector("#extensions .all_extensions_toggle").checked =
all_extensions_toggled;
}