86 lines
3.0 KiB
JavaScript
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
|
|
};
|
|
},
|
|
});
|