|
|
|
@ -10,37 +10,54 @@ function getNumberDefaults(inputData, defaultStep) {
|
|
|
|
|
return { val: defaultVal, config: { min, max, step: 10.0 * step } };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function addRandomizeWidget(node, targetWidget, name, defaultValue = false) {
|
|
|
|
|
const randomize = node.addWidget("toggle", name, defaultValue, function (v) {}, {
|
|
|
|
|
on: "enabled",
|
|
|
|
|
off: "disabled",
|
|
|
|
|
serialize: false, // Don't include this in prompt.
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
randomize.afterQueued = () => {
|
|
|
|
|
if (randomize.value) {
|
|
|
|
|
const min = targetWidget.options?.min;
|
|
|
|
|
let max = targetWidget.options?.max;
|
|
|
|
|
if (min != null || max != null) {
|
|
|
|
|
if (max) {
|
|
|
|
|
// limit max to something that javascript can handle
|
|
|
|
|
max = Math.min(1125899906842624, max);
|
|
|
|
|
}
|
|
|
|
|
targetWidget.value = Math.floor(Math.random() * ((max ?? 9999999999) - (min ?? 0) + 1) + (min ?? 0));
|
|
|
|
|
} else {
|
|
|
|
|
targetWidget.value = Math.floor(Math.random() * 1125899906842624);
|
|
|
|
|
}
|
|
|
|
|
export function addValueControlWidget(node, targetWidget, defaultValue = "randomize", values) {
|
|
|
|
|
const valueControl = node.addWidget("combo", "control_after_generate", defaultValue, function (v) { }, {
|
|
|
|
|
values: ["fixed", "increment", "decrement", "randomize"],
|
|
|
|
|
serialize: false, // Don't include this in prompt.
|
|
|
|
|
});
|
|
|
|
|
valueControl.afterQueued = () => {
|
|
|
|
|
|
|
|
|
|
var v = valueControl.value;
|
|
|
|
|
|
|
|
|
|
let min = targetWidget.options.min;
|
|
|
|
|
let max = targetWidget.options.max;
|
|
|
|
|
// limit to something that javascript can handle
|
|
|
|
|
max = Math.min(1125899906842624, max);
|
|
|
|
|
min = Math.max(-1125899906842624, min);
|
|
|
|
|
let range = (max - min) / (targetWidget.options.step / 10);
|
|
|
|
|
|
|
|
|
|
//adjust values based on valueControl Behaviour
|
|
|
|
|
switch (v) {
|
|
|
|
|
case "fixed":
|
|
|
|
|
break;
|
|
|
|
|
case "increment":
|
|
|
|
|
targetWidget.value += targetWidget.options.step / 10;
|
|
|
|
|
break;
|
|
|
|
|
case "decrement":
|
|
|
|
|
targetWidget.value -= targetWidget.options.step / 10;
|
|
|
|
|
break;
|
|
|
|
|
case "randomize":
|
|
|
|
|
targetWidget.value = Math.floor(Math.random() * range) * (targetWidget.options.step / 10) + min;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
return randomize;
|
|
|
|
|
}
|
|
|
|
|
/*check if values are over or under their respective
|
|
|
|
|
* ranges and set them to min or max.*/
|
|
|
|
|
if (targetWidget.value < min)
|
|
|
|
|
targetWidget.value = min;
|
|
|
|
|
|
|
|
|
|
if (targetWidget.value > max)
|
|
|
|
|
targetWidget.value = max;
|
|
|
|
|
}
|
|
|
|
|
return valueControl;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
function seedWidget(node, inputName, inputData) {
|
|
|
|
|
const seed = ComfyWidgets.INT(node, inputName, inputData);
|
|
|
|
|
const randomize = addRandomizeWidget(node, seed.widget, "Random seed after every gen", true);
|
|
|
|
|
const seedControl = addValueControlWidget(node, seed.widget, "randomize");
|
|
|
|
|
|
|
|
|
|
seed.widget.linkedWidgets = [randomize];
|
|
|
|
|
return { widget: seed, randomize };
|
|
|
|
|
seed.widget.linkedWidgets = [seedControl];
|
|
|
|
|
return seed;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const MultilineSymbol = Symbol();
|
|
|
|
|