You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.3 KiB
35 lines
1.3 KiB
import { app } from "../../scripts/app.js"; |
|
import { applyTextReplacements } from "../../scripts/utils.js"; |
|
// Use widget values and dates in output filenames |
|
|
|
app.registerExtension({ |
|
name: "Comfy.SaveImageExtraOutput", |
|
async beforeRegisterNodeDef(nodeType, nodeData, app) { |
|
if (nodeData.name === "SaveImage") { |
|
const onNodeCreated = nodeType.prototype.onNodeCreated; |
|
// When the SaveImage node is created we want to override the serialization of the output name widget to run our S&R |
|
nodeType.prototype.onNodeCreated = function () { |
|
const r = onNodeCreated ? onNodeCreated.apply(this, arguments) : undefined; |
|
|
|
const widget = this.widgets.find((w) => w.name === "filename_prefix"); |
|
widget.serializeValue = () => { |
|
return applyTextReplacements(app, widget.value); |
|
}; |
|
|
|
return r; |
|
}; |
|
} else { |
|
// When any other node is created add a property to alias the node |
|
const onNodeCreated = nodeType.prototype.onNodeCreated; |
|
nodeType.prototype.onNodeCreated = function () { |
|
const r = onNodeCreated ? onNodeCreated.apply(this, arguments) : undefined; |
|
|
|
if (!this.properties || !("Node name for S&R" in this.properties)) { |
|
this.addProperty("Node name for S&R", this.constructor.type, "string"); |
|
} |
|
|
|
return r; |
|
}; |
|
} |
|
}, |
|
});
|
|
|