| 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; |
| }; |
| } |
| } |
| }, |
| }); |
|
|