Allow dynamic widgets values (#162)

This commit is contained in:
Chenlei Hu
2024-07-18 17:45:42 -04:00
committed by GitHub
parent ab7436f87c
commit 71ac0dcccc
2 changed files with 5 additions and 11 deletions

View File

@@ -49,14 +49,7 @@ const zVector2 = z.union([
z.tuple([z.number(), z.number()]), z.tuple([z.number(), z.number()]),
]); ]);
const zWidgetValues = z.union([ const zWidgetValues = z.union([z.array(z.any()), z.record(z.any())]);
z.array(z.any()),
z.record(z.any()).transform((v) =>
Object.keys(v)
.sort((a, b) => Number(a) - Number(b))
.map((key) => v[key])
),
]);
const zComfyNode = z const zComfyNode = z
.object({ .object({

View File

@@ -82,9 +82,10 @@ describe("parseComfyWorkflow", () => {
workflow.nodes[0].widgets_values = undefined; workflow.nodes[0].widgets_values = undefined;
await expect(parseComfyWorkflow(JSON.stringify(workflow))).resolves.not.toThrow(); await expect(parseComfyWorkflow(JSON.stringify(workflow))).resolves.not.toThrow();
// Should automatically transform the legacy format object to array. // The object format of widgets_values is used by VHS nodes to perform
workflow.nodes[0].widgets_values = {0: "foo", 1: "bar"}; // dynamic widgets display.
workflow.nodes[0].widgets_values = {"foo": "bar"};
const parsedWorkflow = await parseComfyWorkflow(JSON.stringify(workflow)); const parsedWorkflow = await parseComfyWorkflow(JSON.stringify(workflow));
expect(parsedWorkflow.nodes[0].widgets_values).toEqual(["foo", "bar"]); expect(parsedWorkflow.nodes[0].widgets_values).toEqual({"foo": "bar"});
}); });
}); });