diff --git a/src/extensions/core/index.ts b/src/extensions/core/index.ts index 1d6b08367..0d39c207a 100644 --- a/src/extensions/core/index.ts +++ b/src/extensions/core/index.ts @@ -10,6 +10,7 @@ import './load3d' import './maskeditor' import './nodeTemplates' import './noteNode' +import './previewAny' import './rerouteNode' import './saveImageExtraOutput' import './saveMesh' diff --git a/src/extensions/core/previewAny.ts b/src/extensions/core/previewAny.ts new file mode 100644 index 000000000..22ea3a5c3 --- /dev/null +++ b/src/extensions/core/previewAny.ts @@ -0,0 +1,50 @@ +/* +Preview Any - original implement from +https://github.com/rgthree/rgthree-comfy/blob/main/py/display_any.py +upstream requested in https://github.com/Kosinkadink/rfcs/blob/main/rfcs/0000-corenodes.md#preview-nodes + */ +import { IWidget } from '@comfyorg/litegraph' + +import { DOMWidget } from '@/scripts/domWidget' +import { ComfyWidgets } from '@/scripts/widgets' +import { useExtensionService } from '@/services/extensionService' + +useExtensionService().registerExtension({ + name: 'Comfy.PreviewAny', + async beforeRegisterNodeDef(nodeType, nodeData) { + if (nodeData.name === 'PreviewAny') { + const onNodeCreated = nodeType.prototype.onNodeCreated + + nodeType.prototype.onNodeCreated = function () { + onNodeCreated ? onNodeCreated.apply(this, []) : undefined + + const showValueWidget = ComfyWidgets['STRING']( + this, + 'preview', + ['STRING', { multiline: true }], + app + ).widget as DOMWidget + + showValueWidget.element.readOnly = true + + showValueWidget.serialize = false + } + + const onExecuted = nodeType.prototype.onExecuted + + nodeType.prototype.onExecuted = function (message) { + onExecuted === null || onExecuted === void 0 + ? void 0 + : onExecuted.apply(this, [message]) + + const previewWidget = this.widgets?.find( + (w: IWidget) => w.name === 'preview' + ) + + if (previewWidget) { + previewWidget.value = message.text[0] + } + } + } + } +})