// this code from ComfyUI_Custom_Nodes_AlekPet import { app } from "/scripts/app.js"; import { ComfyWidgets } from "/scripts/widgets.js"; app.registerExtension({ name: "Comfy.BMAB.PreviewText", async beforeRegisterNodeDef(nodeType, nodeData, app) { if (nodeData.name === "BMAB Preview Text") { const onNodeCreated = nodeType.prototype.onNodeCreated; nodeType.prototype.onNodeCreated = function () { const ret = onNodeCreated ? onNodeCreated.apply(this, arguments) : undefined; let BMABPreviewText = app.graph._nodes.filter((wi) => wi.type == nodeData.name), nodeName = `${nodeData.name}_${BMABPreviewText.length}`; console.log(`Create ${nodeData.name}: ${nodeName}`); const wi = ComfyWidgets.STRING(this, nodeName, ["STRING", {default: "", placeholder: "Text message output...", multiline: true,},], app); wi.widget.inputEl.readOnly = true; return ret; }; // Function set value const outSet = function (texts) { if (texts.length > 0) { let widget_id = this?.widgets.findIndex((w) => w.type == "customtext"); if (Array.isArray(texts)) texts = texts.filter((word) => word.trim() !== "").map((word) => word.trim()).join(" "); this.widgets[widget_id].value = texts; app.graph.setDirtyCanvas(true); } }; // onExecuted const onExecuted = nodeType.prototype.onExecuted; nodeType.prototype.onExecuted = function (texts) { onExecuted?.apply(this, arguments); outSet.call(this, texts?.string); }; // onConfigure const onConfigure = nodeType.prototype.onConfigure; nodeType.prototype.onConfigure = function (w) { onConfigure?.apply(this, arguments); if (w?.widgets_values?.length) { outSet.call(this, w.widgets_values); } }; } }, });