|
|
import { app } from "../../../scripts/app.js";
|
|
|
import { addMenuHandler, addNode } from "./common/utils.js";
|
|
|
|
|
|
const nodePxOffsets = 80;
|
|
|
|
|
|
function getXYInputNodes() {
|
|
|
return [
|
|
|
"XY Input: Seeds++ Batch",
|
|
|
"XY Input: Add/Return Noise",
|
|
|
"XY Input: Steps",
|
|
|
"XY Input: CFG Scale",
|
|
|
"XY Input: Sampler/Scheduler",
|
|
|
"XY Input: Denoise",
|
|
|
"XY Input: VAE",
|
|
|
"XY Input: Prompt S/R",
|
|
|
"XY Input: Aesthetic Score",
|
|
|
"XY Input: Refiner On/Off",
|
|
|
"XY Input: Checkpoint",
|
|
|
"XY Input: Clip Skip",
|
|
|
"XY Input: LoRA",
|
|
|
"XY Input: LoRA Plot",
|
|
|
"XY Input: LoRA Stacks",
|
|
|
"XY Input: Control Net",
|
|
|
"XY Input: Control Net Plot",
|
|
|
"XY Input: Manual XY Entry"
|
|
|
];
|
|
|
}
|
|
|
|
|
|
function showAddXYInputMenu(type, e, menu, node) {
|
|
|
const specialNodes = [
|
|
|
"XY Input: LoRA Plot",
|
|
|
"XY Input: Control Net Plot",
|
|
|
"XY Input: Manual XY Entry"
|
|
|
];
|
|
|
|
|
|
const values = getXYInputNodes().map(nodeType => {
|
|
|
return {
|
|
|
content: nodeType,
|
|
|
callback: function() {
|
|
|
const newNode = addNode(nodeType, node);
|
|
|
|
|
|
|
|
|
const shiftX = -(newNode.size[0] + 35);
|
|
|
newNode.pos[0] += shiftX;
|
|
|
|
|
|
if (specialNodes.includes(nodeType)) {
|
|
|
newNode.pos[1] += 20;
|
|
|
|
|
|
newNode.connect(0, node, 1);
|
|
|
newNode.connect(1, node, 2);
|
|
|
} else if (type === 'X') {
|
|
|
newNode.pos[1] += 20;
|
|
|
newNode.connect(0, node, 1);
|
|
|
} else {
|
|
|
newNode.pos[1] += node.size[1] + 45;
|
|
|
newNode.connect(0, node, 2);
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
});
|
|
|
|
|
|
new LiteGraph.ContextMenu(values, {
|
|
|
event: e,
|
|
|
callback: null,
|
|
|
parentMenu: menu,
|
|
|
node: node
|
|
|
});
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
app.registerExtension({
|
|
|
name: "efficiency.addXYinputs",
|
|
|
async beforeRegisterNodeDef(nodeType, nodeData, app) {
|
|
|
if (nodeData.name === "XY Plot") {
|
|
|
addMenuHandler(nodeType, function(insertOption) {
|
|
|
insertOption({
|
|
|
content: "βοΈ Add π input...",
|
|
|
has_submenu: true,
|
|
|
callback: (value, options, e, menu, node) => showAddXYInputMenu('X', e, menu, node)
|
|
|
});
|
|
|
insertOption({
|
|
|
content: "βοΈ Add π input...",
|
|
|
has_submenu: true,
|
|
|
callback: (value, options, e, menu, node) => showAddXYInputMenu('Y', e, menu, node)
|
|
|
});
|
|
|
});
|
|
|
}
|
|
|
},
|
|
|
});
|
|
|
|