From 09cf2b5f5ba0e080bae094271a2694312c204443 Mon Sep 17 00:00:00 2001 From: "ilian.iliev" Date: Sat, 1 Apr 2023 17:59:56 +0300 Subject: [PATCH] Fixes for new SD version --- javascript/state.core.js | 35 ++++++++++++++++++++--------- javascript/state.ext.control-net.js | 27 ++++++++++++++-------- javascript/state.utils.js | 4 ---- style.css | 10 +++++++++ 4 files changed, 53 insertions(+), 23 deletions(-) create mode 100644 style.css diff --git a/javascript/state.core.js b/javascript/state.core.js index 4fdc215..a546271 100644 --- a/javascript/state.core.js +++ b/javascript/state.core.js @@ -134,12 +134,25 @@ state.core = (function () { } } } + // Use this when onUiTabChange is fixed + // onUiTabChange(function () { + // store.set('tab', gradioApp().querySelector('#tabs .tab-nav button.selected').textContent); + // }); + bindTabClickEvents(); + } - onUiTabChange(function () { - store.set('tab', get_uiCurrentTab().textContent); + function bindTabClickEvents() { + Array.from(gradioApp().querySelectorAll('#tabs .tab-nav button')).forEach(tab => { + tab.removeEventListener('click', storeTab); + tab.addEventListener('click', storeTab); }); } + function storeTab() { + store.set('tab', gradioApp().querySelector('#tabs .tab-nav button.selected').textContent); + bindTabClickEvents(); // dirty hack here... + } + function handleSavedInput(id) { const elements = gradioApp().querySelectorAll(`#${id} textarea, #${id} select, #${id} input`); @@ -192,7 +205,7 @@ state.core = (function () { function handleSavedMultiSelects(id) { - const select = gradioApp().querySelector(`#${id} .items-center.relative`); + const select = gradioApp().getElementById(`${id}`); try { let value = store.get(id); @@ -206,14 +219,17 @@ state.core = (function () { let input = select.querySelector('input'); let selectOption = function () { + if (! value.length) { state.utils.triggerMouseEvent(input, 'blur'); return; } + let option = value.pop(); - state.utils.triggerMouseEvent(input); + state.utils.triggerMouseEvent(input, 'focus'); + setTimeout(() => { - let items = Array.from(select.parentNode.querySelectorAll('ul li')); + let items = Array.from(select.querySelectorAll('ul li')); items.forEach(li => { if (li.lastChild.wholeText.trim() === option) { state.utils.triggerMouseEvent(li, 'mousedown'); @@ -226,14 +242,13 @@ state.core = (function () { selectOption(); } } + state.utils.onContentChange(select, function (el) { + const selected = Array.from(el.querySelectorAll('.token > span')).map(item => item.textContent); + store.set(id, selected); + }); } catch (error) { console.error('[state]: Error:', error); } - - state.utils.onContentChange(select, function (el) { - const selected = Array.from(el.querySelectorAll('.token > span')).map(item => item.textContent); - store.set(id, selected); - }); } function handleExtensions(config) { diff --git a/javascript/state.ext.control-net.js b/javascript/state.ext.control-net.js index 65c9b89..61e72e9 100644 --- a/javascript/state.ext.control-net.js +++ b/javascript/state.ext.control-net.js @@ -10,13 +10,16 @@ state.extensions['control-net'] = (function () { function handleToggle() { let value = store.get('toggled'); - let toggleBtn = container.querySelector('div.cursor-pointer'); + let toggleBtn = container.querySelector('div.cursor-pointer, .label-wrap'); + if (value && value === 'true') { state.utils.triggerEvent(toggleBtn, 'click'); + load(); } toggleBtn.addEventListener('click', function () { - let span = this.querySelector('.transition'); - store.set('toggled', !span.classList.contains('rotate-90')); + let span = this.querySelector('.transition, .icon'); + store.set('toggled', span.style.transform !== 'rotate(90deg)'); + load(); }); } @@ -124,12 +127,13 @@ state.extensions['control-net'] = (function () { } function load() { - handleToggle(); - handleTabs(); - handleCheckboxes(); - handleSelects(); - handleSliders(); - handleRadioButtons(); + setTimeout(function () { + handleTabs(); + handleCheckboxes(); + handleSelects(); + handleSliders(); + handleRadioButtons(); + }, 500); } function init() { @@ -137,6 +141,10 @@ state.extensions['control-net'] = (function () { container = gradioApp().getElementById('controlnet'); store = new state.Store('ext-control-net'); + if (! container) { + return; + } + let tabs = container.querySelectorAll('.tabitem'); if (tabs.length) { @@ -154,6 +162,7 @@ state.extensions['control-net'] = (function () { }]; } + handleToggle(); load(); } diff --git a/javascript/state.utils.js b/javascript/state.utils.js index c516842..11ebf5c 100644 --- a/javascript/state.utils.js +++ b/javascript/state.utils.js @@ -104,10 +104,6 @@ state.utils.html = { btn.innerHTML = text; btn.onclick = onclick || function () {}; btn.className = 'gr-button gr-button-lg gr-button-primary'; - this.setStyle(btn, { - 'margin-left': '5px', - 'margin-right': '5px' - }); return btn; } }; diff --git a/style.css b/style.css new file mode 100644 index 0000000..86c49f2 --- /dev/null +++ b/style.css @@ -0,0 +1,10 @@ +#settings_state_buttons button { + color: white; + background: rgb(249, 115, 22); + border-radius: 8px; + padding: 5px 15px; + font-weight: bold; + font-size: 16px; + margin-left: 5px; + margin-right: 5px; +} \ No newline at end of file