Files
vanillacode314-SimpleWildca…/js/main.js
T
2023-12-01 18:08:18 +05:30

86 lines
3.0 KiB
JavaScript

const WILDCARD_NAME = "SimpleWildcard";
const CONCAT_NAME = "SimpleConcat";
import { app } from "../../../scripts/app.js";
import { ComfyWidgets } from "../../../scripts/widgets.js";
app.registerExtension({
name: WILDCARD_NAME,
async nodeCreated(node, nodeData, app) {
if (node?.comfyClass !== WILDCARD_NAME) return;
const input_files_widget_index = node.widgets?.findIndex(
(w) => w.name === "input_files",
);
const input_files_widget = node.widgets?.[input_files_widget_index];
const input_text_widget = node.widgets?.find(
(w) => w.name === "input_text",
);
let input_files = input_files_widget.value;
let ac;
Object.defineProperty(input_files_widget, "value", {
get() {
return input_files;
},
set(newValue) {
input_files = newValue;
ac?.abort();
ac = new AbortController();
fetch(`/simple-wildcards?path=${encodeURIComponent(newValue)}`, {
signal: ac.signal,
})
.then(async (res) => {
const data = await res.json();
input_text_widget.value = "*";
input_text_widget.options.values = data.items;
})
.catch((err) => {});
},
enumerable: true,
configurable: true,
});
const output_text_widget = node.widgets?.find(
(w) => w.name === "output_text",
);
output_text_widget.inputEl.placeholder = "output_text (autogenerated)";
output_text_widget.inputEl.disabled = true;
output_text_widget.inputEl.style.opacity = 0.6;
},
async beforeRegisterNodeDef(node, nodeData, app) {
if (node?.comfyClass !== WILDCARD_NAME) return;
const onExecuted = node.prototype.onExecuted;
node.prototype.onExecuted = function (message) {
onExecuted?.apply(this, arguments);
const output_text_widget = this.widgets?.find(
(w) => w.name === "output_text",
);
if (!output_text_widget) return;
output_text_widget.value = message.output_text.join("");
this.onResize?.(this.size); // onResize redraws the node
};
},
});
app.registerExtension({
name: CONCAT_NAME,
async nodeCreated(node, nodeData, app) {
if (node?.comfyClass !== CONCAT_NAME) return;
const output_text_widget = node.widgets?.find(
(w) => w.name === "output_text",
);
output_text_widget.inputEl.placeholder = "output_text (autogenerated)";
output_text_widget.inputEl.disabled = true;
output_text_widget.inputEl.style.opacity = 0.6;
},
async beforeRegisterNodeDef(node, nodeData, app) {
if (node?.comfyClass !== CONCAT_NAME) return;
const onExecuted = node.prototype.onExecuted;
node.prototype.onExecuted = function (message) {
onExecuted?.apply(this, arguments);
const output_text_widget = this.widgets?.find(
(w) => w.name === "output_text",
);
if (!output_text_widget) return;
output_text_widget.value = message.output_text.join("");
this.onResize?.(this.size); // onResize redraws the node
};
},
});