Spaces:
Running
on
Zero
Running
on
Zero
| import { app } from "../../scripts/app.js"; | |
| import { ComfyWidgets } from "../../scripts/widgets.js"; | |
| app.registerExtension({ | |
| name: "fnodes.DisplayAny", | |
| async beforeRegisterNodeDef(nodeType, nodeData, app) { | |
| if (!nodeData?.category?.startsWith("fnodes")) { | |
| return; | |
| } | |
| switch (nodeData.name) { | |
| case "DisplayAny-": | |
| const onExecutedDisplayAny = nodeType.prototype.onExecuted; | |
| nodeType.prototype.onExecuted = function (message) { | |
| onExecutedDisplayAny?.apply(this, arguments); | |
| updateWidget(this, "displaytext", message["text"].join("")); | |
| }; | |
| break; | |
| case "ImageScalerForSDModels-": | |
| case "GetImageSize-": | |
| case "ImageScaleBySpecifiedSide-": | |
| case "ComputeImageScaleRatio-": | |
| const onExecutedImage = nodeType.prototype.onExecuted; | |
| nodeType.prototype.onExecuted = function (message) { | |
| onExecutedImage?.apply(this, arguments); | |
| let value = message["width"].join("") + "x" + message["height"].join(""); | |
| if (nodeData.name === "GetImageSize-") { | |
| value += "x" + message["count"].join(""); | |
| } | |
| if (nodeData.name === "ComputeImageScaleRatio-") { | |
| value += "x" + message["rescale_ratio"].join(""); | |
| } | |
| updateWidget(this, "return_text", value); | |
| }; | |
| break; | |
| } | |
| // 辅助函数用于更新或创建widget | |
| function updateWidget(node, widgetName, value) { | |
| let textWidget = node.widgets && node.widgets.find(w => w.name === widgetName); | |
| if (!textWidget) { | |
| textWidget = ComfyWidgets["STRING"](node, widgetName, ["STRING", { multiline: true }], app).widget; | |
| textWidget.inputEl.readOnly = true; | |
| textWidget.inputEl.style.border = "none"; | |
| textWidget.inputEl.style.backgroundColor = "transparent"; | |
| } | |
| textWidget.value = value; | |
| } | |
| }, | |
| }); | |