Spaces:
Paused
Paused
| import { app } from "scripts/app.js"; | |
| import { ComfyWidgets } from "scripts/widgets.js"; | |
| import type { LGraphNode as TLGraphNode } from "typings/litegraph.js"; | |
| import type { ComfyApp, ComfyNodeConstructor, ComfyObjectInfo } from "typings/comfy.js"; | |
| import { addConnectionLayoutSupport } from "./utils.js"; | |
| import { rgthree } from "./rgthree.js"; | |
| let hasShownAlertForUpdatingInt = false; | |
| app.registerExtension({ | |
| name: "rgthree.DisplayAny", | |
| async beforeRegisterNodeDef( | |
| nodeType: ComfyNodeConstructor, | |
| nodeData: ComfyObjectInfo, | |
| app: ComfyApp, | |
| ) { | |
| if (nodeData.name === "Display Any (rgthree)" || nodeData.name === "Display Int (rgthree)") { | |
| const onNodeCreated = nodeType.prototype.onNodeCreated; | |
| nodeType.prototype.onNodeCreated = function () { | |
| onNodeCreated ? onNodeCreated.apply(this, []) : undefined; | |
| (this as any).showValueWidget = ComfyWidgets["STRING"]( | |
| this, | |
| "output", | |
| ["STRING", { multiline: true }], | |
| app, | |
| ).widget; | |
| (this as any).showValueWidget.inputEl!.readOnly = true; | |
| (this as any).showValueWidget.serializeValue = async (node: TLGraphNode, index: number) => { | |
| const n = | |
| rgthree.getNodeFromInitialGraphToPromptSerializedWorkflowBecauseComfyUIBrokeStuff(node); | |
| if (n) { | |
| // Since we need a round trip to get the value, the serizalized value means nothing, and | |
| // saving it to the metadata would just be confusing. So, we clear it here. | |
| n.widgets_values![index] = ""; | |
| } else { | |
| console.warn( | |
| "No serialized node found in workflow. May be attributed to " + | |
| "https://github.com/comfyanonymous/ComfyUI/issues/2193", | |
| ); | |
| } | |
| return ""; | |
| }; | |
| }; | |
| addConnectionLayoutSupport(nodeType, app, [["Left"], ["Right"]]); | |
| const onExecuted = nodeType.prototype.onExecuted; | |
| nodeType.prototype.onExecuted = function (message: any) { | |
| onExecuted?.apply(this, [message]); | |
| (this as any).showValueWidget.value = message.text[0]; | |
| }; | |
| } | |
| }, | |
| // This ports Display Int to DisplayAny, but ComfyUI still shows an error. | |
| // If https://github.com/comfyanonymous/ComfyUI/issues/1527 is fixed, this could work. | |
| // async loadedGraphNode(node: TLGraphNode) { | |
| // if (node.type === "Display Int (rgthree)") { | |
| // replaceNode(node, "Display Any (rgthree)", new Map([["input", "source"]])); | |
| // if (!hasShownAlertForUpdatingInt) { | |
| // hasShownAlertForUpdatingInt = true; | |
| // setTimeout(() => { | |
| // alert( | |
| // "Don't worry, your 'Display Int' nodes have been updated to the new " + | |
| // "'Display Any' nodes! You can ignore the error message underneath (for that node)." + | |
| // "\n\nThanks.\n- rgthree", | |
| // ); | |
| // }, 128); | |
| // } | |
| // } | |
| // }, | |
| }); | |