onUiUpdate(() => {
if (globalThis.DumpUnet) return;
const DumpUnet = {};
globalThis.DumpUnet = DumpUnet;
DumpUnet.applySizeCallback = function () {
if (globalThis.DumpUnet.applySizeCallbackCalled) return;
const app = gradioApp();
if (!app || app === document) return;
const labels = Array.of(...app.querySelectorAll('#tab_txt2img label'));
const width_label = labels.find(x => x.textContent.trim() === "Width");
const height_label = labels.find(x => x.textContent.trim() === "Height");
const steps_label = labels.find(x => x.textContent.trim() === "Sampling Steps");
if (!width_label || !height_label || !steps_label) return;
const width_slider = app.querySelector(`#${width_label.htmlFor}`);
const height_slider = app.querySelector(`#${height_label.htmlFor}`);
const steps_slider = app.querySelector(`#${steps_label.htmlFor}`)
if (!width_slider || !height_slider || !steps_slider) return;
//if (+width_slider.dataset.dumpunetHooked && +height_slider.dataset.dumpunetHooked) return
//
//const value_hook = ele => {
// const proto = Object.getPrototypeOf(ele);
// const old_desc = Object.getOwnPropertyDescriptor(proto, 'value');
// Object.defineProperty(ele, 'value', {
// get: function () { return old_desc.get.apply(this, arguments); },
// set: function () {
// const old_value = this.value;
// old_desc.set.apply(this, arguments);
// const new_value = this.value;
// const ev = new CustomEvent('imagesizesliderchange', { detail: { old_value: old_value }, bubbles: true });
// ele.dispatchEvent(ev);
// }
// });
// ele.dataset.dumpunetHooked = 1;
//};
//
//value_hook(width_slider);
//value_hook(height_slider);
globalThis.DumpUnet.applySizeCallbackCalled = true;
const update_info = () => {
const layer = app.querySelector('#dumpunet-layer select').value;
const info = JSON.parse(app.querySelector('#dumpunet-layer_setting').textContent)[layer];
const
w = +width_slider.value,
h = +height_slider.value,
iw = Math.max(1, Math.ceil(w / 64)),
ih = Math.max(1, Math.ceil(h / 64));
info[0][1] *= ih;
info[0][2] *= iw;
info[1][1] *= ih;
info[1][2] *= iw;
app.querySelector('#dumpunet-layerinfo').innerHTML = `
[Layer Info]
Name: ${layer}
Input: (${info[0].join(',')})
Outout: (${info[1].join(',')})
`.trim();
};
//app.addEventListener('imagesizesliderchange', e => {
// //console.log(e.detail.old_value, e.target.value);
// update_info();
//}, false);
app.addEventListener('input', update_info, false);
app.addEventListener('change', update_info, false);
update_info();
};
onUiUpdate(DumpUnet.applySizeCallback);
});