diff --git a/javascript/active.js b/javascript/active.js
index e35e4c3..5af4cc9 100644
--- a/javascript/active.js
+++ b/javascript/active.js
@@ -1,63 +1,53 @@
(function(){
-var accordions = {};
-var enabled = {};
-onUiUpdate(() => {
- var accordion_id_prefix = "#dynthres_";
- var extension_checkbox_class = ".dynthres-enabled";
+ let accordions = {};
+ let enabled = {};
+ onUiUpdate(() => {
+ let accordion_id_prefix = "#dynthres_";
+ let extension_checkbox_class = ".dynthres-enabled";
- function triggerEvent(element, eventName) {
- var event = document.createEvent("HTMLEvents");
- event.initEvent(eventName, false, true);
- element.dispatchEvent(event);
- }
+ function attachEnabledButtonListener(checkbox, accordion) {
+ let span = accordion.querySelector('.label-wrap span');
+ let badge = document.createElement('input');
+ badge.type = "checkbox";
+ badge.checked = checkbox.checked;
+ badge.addEventListener('click', (e) => {
+ checkbox.checked = !checkbox.checked;
+ checkbox.dispatchEvent(new Event('change'));
+ e.stopPropagation();
+ });
- function updateActiveState(checkbox, accordion) {
- // change checkbox state
- const badge = accordion.querySelector('.label-wrap span input');
- badge.checked = checkbox.checked;
- }
+ badge.className = checkbox.className;
+ badge.classList.add('primary');
+ span.insertBefore(badge, span.firstChild);
+ let space = document.createElement('span');
+ space.innerHTML = " ";
+ span.insertBefore(space, badge.nextSibling);
- function attachEnabledButtonListener(checkbox, accordion) {
- // add checkbox
- const span = accordion.querySelector('.label-wrap span');
- const badge = document.createElement('input');
- badge.type = "checkbox";
- badge.checked = checkbox.checked;
- badge.addEventListener('click', (e) => {
- checkbox.checked = !checkbox.checked;
- triggerEvent(checkbox, 'change');
- e.stopPropagation();
- });
+ checkbox.addEventListener('click', () => {
+ let badge = accordion.querySelector('.label-wrap span input');
+ badge.checked = checkbox.checked;
+ });
+ checkbox.parentNode.style.display = "none";
+ }
- badge.className = checkbox.className;
- badge.classList.add('primary');
- span.insertBefore(badge, span.firstChild);
- var space = document.createElement('span');
- space.innerHTML = " ";
- span.insertBefore(space, badge.nextSibling);
+ if (Object.keys(accordions).length < 2) {
+ let accordion = gradioApp().querySelector(accordion_id_prefix + 'txt2img');
+ if (accordion) {
+ accordions.txt2img = accordion;
+ }
+ accordion = gradioApp().querySelector(accordion_id_prefix + 'img2img');
+ if (accordion) {
+ accordions.img2img = accordion;
+ }
+ }
- checkbox.addEventListener('click', () => {
- updateActiveState(checkbox, accordion);
- });
- checkbox.parentNode.style.display = "none";
- }
-
- if (Object.keys(accordions).length < 2) {
- var accordion = gradioApp().querySelector(accordion_id_prefix + 'txt2img');
- if (accordion)
- accordions.txt2img = accordion;
- accordion = gradioApp().querySelector(accordion_id_prefix + 'img2img');
- if (accordion)
- accordions.img2img = accordion;
- }
-
- if (Object.keys(accordions).length > 0 && accordions.txt2img && !enabled.txt2img) {
- enabled.txt2img = accordions.txt2img.querySelector(extension_checkbox_class + ' input');
- attachEnabledButtonListener(enabled.txt2img, accordions.txt2img);
- }
- if (Object.keys(accordions).length > 0 && accordions.img2img && !enabled.img2img) {
- enabled.img2img = accordions.img2img.querySelector(extension_checkbox_class + ' input');
- attachEnabledButtonListener(enabled.img2img, accordions.img2img);
- }
-});
+ if (Object.keys(accordions).length > 0 && accordions.txt2img && !enabled.txt2img) {
+ enabled.txt2img = accordions.txt2img.querySelector(extension_checkbox_class + ' input');
+ attachEnabledButtonListener(enabled.txt2img, accordions.txt2img);
+ }
+ if (Object.keys(accordions).length > 0 && accordions.img2img && !enabled.img2img) {
+ enabled.img2img = accordions.img2img.querySelector(extension_checkbox_class + ' input');
+ attachEnabledButtonListener(enabled.img2img, accordions.img2img);
+ }
+ });
})();
diff --git a/scripts/dynamic_thresholding.py b/scripts/dynamic_thresholding.py
index 7aff373..b88246b 100644
--- a/scripts/dynamic_thresholding.py
+++ b/scripts/dynamic_thresholding.py
@@ -44,24 +44,24 @@ class Script(scripts.Script):
# "Dynamic Thresholding (CFG Scale Fix)"
with gr.Accordion("Dynamic Thresholding (CFG Scale Fix)", open=False, elem_id="dynthres_" + ("img2img" if is_img2img else "txt2img")):
with gr.Row():
- enabled = gr.Checkbox(value=False, label="Dynamic Thresholding Enable", elem_classes=["dynthres-enabled"])
- gr.HTML(value=f"View the wiki for usage tips.
", elem_id='dynthres_wiki_link')
+ enabled = gr.Checkbox(value=False, label="Enable Dynamic Thresholding (CFG Scale Fix)", elem_classes=["dynthres-enabled"])
with gr.Group(visible=False) as accordion:
+ gr.HTML(value=f"View the wiki for usage tips.
", elem_id='dynthres_wiki_link')
mimic_scale = gr.Slider(minimum=1.0, maximum=30.0, step=0.5, label='Mimic CFG Scale', value=7.0, elem_id='dynthres_mimic_scale')
- with gr.Accordion("Advanced Options", open=False, elem_id='dynthres_advanced_opts'):
- with gr.Row():
- threshold_percentile = gr.Slider(minimum=90.0, value=100.0, maximum=100.0, step=0.05, label='Top percentile of latents to clamp', elem_id='dynthres_threshold_percentile')
- interpolate_phi = gr.Slider(minimum=0.0, maximum=1.0, step=0.01, label="Interpolate Phi", value=1.0, elem_id='dynthres_interpolate_phi')
- with gr.Row():
- mimic_mode = gr.Dropdown(dynthres_core.DynThresh.Modes, value="Constant", label="Mimic Scale Scheduler", elem_id='dynthres_mimic_mode')
- cfg_mode = gr.Dropdown(dynthres_core.DynThresh.Modes, value="Constant", label="CFG Scale Scheduler", elem_id='dynthres_cfg_mode')
- mimic_scale_min = gr.Slider(minimum=0.0, maximum=30.0, step=0.5, visible=False, label="Minimum value of the Mimic Scale Scheduler", elem_id='dynthres_mimic_scale_min')
- cfg_scale_min = gr.Slider(minimum=0.0, maximum=30.0, step=0.5, visible=False, label="Minimum value of the CFG Scale Scheduler", elem_id='dynthres_cfg_scale_min')
- sched_val = gr.Slider(minimum=0.0, maximum=40.0, step=0.5, value=4.0, visible=False, label="Scheduler Value", info="Value unique to the scheduler mode - for Power Up/Down, this is the power. For Linear/Cosine Repeating, this is the number of repeats per image.", elem_id='dynthres_sched_val')
- with gr.Row():
- separate_feature_channels = gr.Checkbox(value=True, label="Separate Feature Channels", elem_id='dynthres_separate_feature_channels')
- scaling_startpoint = gr.Radio(["ZERO", "MEAN"], value="MEAN", label="Scaling Startpoint")
- variability_measure = gr.Radio(["STD", "AD"], value="AD", label="Variability Measure")
+ with gr.Accordion("Advanced Options", open=False, elem_id='dynthres_advanced_opts'):
+ with gr.Row():
+ threshold_percentile = gr.Slider(minimum=90.0, value=100.0, maximum=100.0, step=0.05, label='Top percentile of latents to clamp', elem_id='dynthres_threshold_percentile')
+ interpolate_phi = gr.Slider(minimum=0.0, maximum=1.0, step=0.01, label="Interpolate Phi", value=1.0, elem_id='dynthres_interpolate_phi')
+ with gr.Row():
+ mimic_mode = gr.Dropdown(dynthres_core.DynThresh.Modes, value="Constant", label="Mimic Scale Scheduler", elem_id='dynthres_mimic_mode')
+ cfg_mode = gr.Dropdown(dynthres_core.DynThresh.Modes, value="Constant", label="CFG Scale Scheduler", elem_id='dynthres_cfg_mode')
+ mimic_scale_min = gr.Slider(minimum=0.0, maximum=30.0, step=0.5, visible=False, label="Minimum value of the Mimic Scale Scheduler", elem_id='dynthres_mimic_scale_min')
+ cfg_scale_min = gr.Slider(minimum=0.0, maximum=30.0, step=0.5, visible=False, label="Minimum value of the CFG Scale Scheduler", elem_id='dynthres_cfg_scale_min')
+ sched_val = gr.Slider(minimum=0.0, maximum=40.0, step=0.5, value=4.0, visible=False, label="Scheduler Value", info="Value unique to the scheduler mode - for Power Up/Down, this is the power. For Linear/Cosine Repeating, this is the number of repeats per image.", elem_id='dynthres_sched_val')
+ with gr.Row():
+ separate_feature_channels = gr.Checkbox(value=True, label="Separate Feature Channels", elem_id='dynthres_separate_feature_channels')
+ scaling_startpoint = gr.Radio(["ZERO", "MEAN"], value="MEAN", label="Scaling Startpoint")
+ variability_measure = gr.Radio(["STD", "AD"], value="AD", label="Variability Measure")
def shouldShowSchedulerValue(cfgMode, mimicMode):
sched_vis = cfgMode in MODES_WITH_VALUE or mimicMode in MODES_WITH_VALUE
return vis_change(sched_vis), vis_change(mimicMode != "Constant"), vis_change(cfgMode != "Constant")