| | import { app } from "../../scripts/app.js";
|
| |
|
| |
|
| |
|
| |
|
| | |
| | |
| |
|
| | function stripComments(str) {
|
| | return str.replace(/\/\*[\s\S]*?\*\/|\/\/.*/g,'');
|
| | }
|
| |
|
| | app.registerExtension({
|
| | name: "Comfy.DynamicPrompts",
|
| | nodeCreated(node) {
|
| | if (node.widgets) {
|
| |
|
| |
|
| | const widgets = node.widgets.filter(
|
| | (n) => n.dynamicPrompts
|
| | );
|
| | for (const widget of widgets) {
|
| |
|
| | widget.serializeValue = (workflowNode, widgetIndex) => {
|
| | let prompt = stripComments(widget.value);
|
| | while (prompt.replace("\\{", "").includes("{") && prompt.replace("\\}", "").includes("}")) {
|
| | const startIndex = prompt.replace("\\{", "00").indexOf("{");
|
| | const endIndex = prompt.replace("\\}", "00").indexOf("}");
|
| |
|
| | const optionsString = prompt.substring(startIndex + 1, endIndex);
|
| | const options = optionsString.split("|");
|
| |
|
| | const randomIndex = Math.floor(Math.random() * options.length);
|
| | const randomOption = options[randomIndex];
|
| |
|
| | prompt = prompt.substring(0, startIndex) + randomOption + prompt.substring(endIndex + 1);
|
| | }
|
| |
|
| |
|
| | if (workflowNode?.widgets_values)
|
| | workflowNode.widgets_values[widgetIndex] = prompt;
|
| |
|
| | return prompt;
|
| | };
|
| | }
|
| | }
|
| | },
|
| | });
|
| |
|