From d799ef7f9945373c78fb728a1003cffc45120fb1 Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Sun, 14 May 2023 14:13:28 +0100 Subject: [PATCH] Support list inputs --- show-text/showText.js | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/show-text/showText.js b/show-text/showText.js index bc20af9..fb1a117 100644 --- a/show-text/showText.js +++ b/show-text/showText.js @@ -7,29 +7,30 @@ app.registerExtension({ name: "pysssss.ShowText", async beforeRegisterNodeDef(nodeType, nodeData, app) { if (nodeData.name === "ShowText") { - // When the node is created we want to add a readonly text widget to display the text - const onNodeCreated = nodeType.prototype.onNodeCreated; - nodeType.prototype.onNodeCreated = function () { - const r = onNodeCreated?.apply(this, arguments); - - const w = ComfyWidgets["STRING"](this, "text", ["STRING", { multiline: true }], app).widget; - w.inputEl.readOnly = true; - w.inputEl.style.opacity = 0.6; - - return r; - }; - // 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); - this.widgets[0].value = message.text; - - if (this.size[1] < 180) { - this.setSize([this.size[0], 180]); + if (this.widgets) { + const pos = this.widgets.findIndex((w) => w.name === "text"); + if (pos !== -1) { + for (let i = pos; i < this.widgets.length; i++) { + this.widgets[i].onRemove?.(); + } + this.widgets.length = pos; + } } + + for (const list of message.text) { + const w = ComfyWidgets["STRING"](this, "text", ["STRING", { multiline: true }], app).widget; + w.inputEl.readOnly = true; + w.inputEl.style.opacity = 0.6; + w.value = list; + } + + this.onResize?.(this.size); }; } }, -}); \ No newline at end of file +});