JasonSmithSO's picture
Upload 578 files
8866644 verified
import { app } from "../../../scripts/app.js";
app.registerExtension({
name: "comfy.easyUse.imageWidgets",
nodeCreated(node) {
if (["easy imageSize","easy imageSizeBySide","easy imageSizeByLongerSide","easy imageSizeShow", "easy imageRatio", "easy imagePixelPerfect"].includes(node.comfyClass)) {
const inputEl = document.createElement("textarea");
inputEl.className = "comfy-multiline-input";
inputEl.readOnly = true
const widget = node.addDOMWidget("info", "customtext", inputEl, {
getValue() {
return inputEl.value;
},
setValue(v) {
inputEl.value = v;
},
serialize: false
});
widget.inputEl = inputEl;
inputEl.addEventListener("input", () => {
widget.callback?.(widget.value);
});
}
},
beforeRegisterNodeDef(nodeType, nodeData, app) {
if (["easy imageSize","easy imageSizeBySide","easy imageSizeByLongerSide", "easy imageSizeShow", "easy imageRatio", "easy imagePixelPerfect"].includes(nodeData.name)) {
function populate(arr_text) {
var text = '';
for (let i = 0; i < arr_text.length; i++){
text += arr_text[i];
}
if (this.widgets) {
const pos = this.widgets.findIndex((w) => w.name === "info");
if (pos !== -1 && this.widgets[pos]) {
const w = this.widgets[pos]
w.value = text;
}
}
requestAnimationFrame(() => {
const sz = this.computeSize();
if (sz[0] < this.size[0]) {
sz[0] = this.size[0];
}
if (sz[1] < this.size[1]) {
sz[1] = this.size[1];
}
this.onResize?.(sz);
app.graph.setDirtyCanvas(true, false);
});
}
// When the node is executed we will be sent the input text, display this in the widget
const onExecuted = nodeType.prototype.onExecuted;
nodeType.prototype.onExecuted = function (message) {
onExecuted?.apply(this, arguments);
populate.call(this, message.text);
};
}
}
})