diff --git a/src/lib/components/ComfyApp.svelte b/src/lib/components/ComfyApp.svelte index 4e31d75..5fe7a55 100644 --- a/src/lib/components/ComfyApp.svelte +++ b/src/lib/components/ComfyApp.svelte @@ -127,16 +127,9 @@ return; app.saveStateToLocalStorage(); - notify("Saved to local storage.") - console.debug(jsonToJsObject(JSON.stringify(app.serialize(), null, 2))) - // - // const date = new Date(); - // const formattedDate = date.toISOString().replace(/:/g, '-').replace(/\.\d{3}/g, '').replace('T', '_').replace("Z", ""); - // - // download(`workflow-${formattedDate}.json`, JSON.stringify(app.serialize()), "application/json") } - async function doLoadDefault(): void { + async function doLoadDefault() { var confirmed = confirm("Are you sure you want to clear the current workflow and load the default graph?"); if (confirmed) { await app.deserialize(defaultGraph) diff --git a/src/lib/components/ComfyApp.ts b/src/lib/components/ComfyApp.ts index ea0948a..1f208e0 100644 --- a/src/lib/components/ComfyApp.ts +++ b/src/lib/components/ComfyApp.ts @@ -28,8 +28,9 @@ import ComfyGraph from "$lib/ComfyGraph"; import { ComfyBackendNode } from "$lib/nodes/ComfyBackendNode"; import { get } from "svelte/store"; import uiState from "$lib/stores/uiState"; -import { download, promptToGraphVis, workflowToGraphVis } from "$lib/utils"; +import { download, jsonToJsObject, promptToGraphVis, workflowToGraphVis } from "$lib/utils"; import notify from "$lib/notify"; +import configState from "$lib/stores/configState"; export const COMFYBOX_SERIAL_VERSION = 1; @@ -189,9 +190,19 @@ export default class ComfyApp { } saveStateToLocalStorage() { - const savedWorkflow = this.serialize(); - const json = JSON.stringify(savedWorkflow); - localStorage.setItem("workflow", json) + try { + uiState.update(s => { s.isSavingToLocalStorage = true; return s; }) + const savedWorkflow = this.serialize(); + const json = JSON.stringify(savedWorkflow); + localStorage.setItem("workflow", json) + notify("Saved to local storage.") + } + catch (err) { + notify(`Failed saving to local storage:\n${err}`, { type: "error" }) + } + finally { + uiState.update(s => { s.isSavingToLocalStorage = false; return s; }) + } } static node_type_overrides: Record = {} @@ -473,7 +484,7 @@ export default class ComfyApp { } querySave() { - const promptFilename = true; // TODO + const promptFilename = get(configState).promptForWorkflowName; let filename = "workflow.json"; if (promptFilename) { @@ -493,6 +504,8 @@ export default class ComfyApp { const json = JSON.stringify(this.serialize(), null, indent) download(filename, json, "application/json") + + console.debug(jsonToJsObject(json)) } /** diff --git a/src/lib/defaultGraph.ts b/src/lib/defaultGraph.ts index 84e363c..7eb1fde 100644 --- a/src/lib/defaultGraph.ts +++ b/src/lib/defaultGraph.ts @@ -4,15 +4,15 @@ const defaultGraph: SerializedAppState = { createdBy: "ComfyBox", version: 1, workflow: { - last_node_id: 284, - last_link_id: 445, + last_node_id: 434, + last_link_id: 664, nodes: [ { - id: 33, + id: 35, type: "ui/text", pos: [ - -345.18967539843317, - 300.3925393984385 + -329.97997539843374, + 205.60113939843882 ], size: [ 210, @@ -36,66 +36,6 @@ const defaultGraph: SerializedAppState = { shape: 1 } ], - outputs: [ - { - name: "value", - type: "string", - links: [ - 30 - ] - }, - { - name: "changed", - type: -2, - links: null, - shape: 1 - } - ], - title: "UI.Text", - properties: { - tags: [], - defaultValue: "", - multiline: true, - hidden: false - }, - widgets_values: [ - "a fluffy corgi wearing sunglasses" - ], - color: "#223", - bgColor: "#335", - comfyValue: "a fluffy corgi wearing sunglasses", - shownOutputProperties: {}, - saveUserState: true - }, - { - id: 35, - type: "ui/text", - pos: [ - -343.9796753984334, - 391.14253939843877 - ], - size: [ - 210, - 78 - ], - flags: { - collapsed: true - }, - order: 1, - mode: 0, - inputs: [ - { - name: "value", - type: "string", - link: null - }, - { - name: "store", - type: -1, - link: null, - shape: 1 - } - ], outputs: [ { name: "value", @@ -131,8 +71,8 @@ const defaultGraph: SerializedAppState = { id: 75, type: "ui/combo", pos: [ - -340.57880653843677, - -12.063136000804299 + -252.5788065384366, + -9.863136000804298 ], size: [ 210, @@ -141,7 +81,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 2, + order: 1, mode: 0, inputs: [ { @@ -185,63 +125,6 @@ const defaultGraph: SerializedAppState = { shownOutputProperties: {}, saveUserState: false }, - { - id: 80, - type: "ui/combo", - pos: [ - -378.1190268824409, - 157.68165265758216 - ], - size: [ - 210, - 78 - ], - flags: { - collapsed: true - }, - order: 3, - mode: 0, - inputs: [ - { - name: "value", - type: "string", - link: null - }, - { - name: "store", - type: -1, - link: null, - shape: 1 - } - ], - outputs: [ - { - name: "value", - type: "string", - links: [ - 105 - ] - }, - { - name: "changed", - type: -2, - links: null, - shape: 1 - } - ], - title: "UI.Combo", - properties: { - tags: [], - defaultValue: null, - values: [] - }, - widgets_values: [], - color: "#223", - bgColor: "#335", - comfyValue: "A", - shownOutputProperties: {}, - saveUserState: false - }, { id: 91, type: "ui/combo", @@ -256,7 +139,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 4, + order: 2, mode: 0, inputs: [ { @@ -319,7 +202,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 5, + order: 3, mode: 0, inputs: [ { @@ -381,7 +264,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 6, + order: 4, mode: 0, inputs: [ { @@ -426,11 +309,11 @@ const defaultGraph: SerializedAppState = { hidden: false }, widgets_values: [ - "karras" + "normal" ], color: "#223", bgColor: "#335", - comfyValue: "karras", + comfyValue: "normal", shownOutputProperties: {}, saveUserState: true }, @@ -448,7 +331,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 7, + order: 5, mode: 0, inputs: [ { @@ -550,7 +433,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 8, + order: 6, mode: 0, inputs: [ { @@ -627,7 +510,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 9, + order: 7, mode: 0, inputs: [ { @@ -728,7 +611,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 10, + order: 8, mode: 0, inputs: [ { @@ -818,8 +701,8 @@ const defaultGraph: SerializedAppState = { id: 70, type: "basic/watch", pos: [ - -535.6060000000011, - 211.90199999999967 + -538.8660048828136, + 277.58201159667937 ], size: [ 140, @@ -828,7 +711,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 142, + order: 226, mode: 0, inputs: [ { @@ -849,8 +732,8 @@ const defaultGraph: SerializedAppState = { id: 57, type: "ui/combo", pos: [ - -1107.189, - 287.4150000000001 + -1110.4490048828125, + 353.09501159667974 ], size: [ 210, @@ -859,7 +742,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 11, + order: 9, mode: 0, inputs: [ { @@ -926,7 +809,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 104, + order: 137, mode: 0, inputs: [ { @@ -973,8 +856,8 @@ const defaultGraph: SerializedAppState = { id: 69, type: "basic/integer", pos: [ - -603.4780000000004, - 346.9650000000004 + -606.7380048828129, + 412.64501159668004 ], size: [ 210, @@ -983,7 +866,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 12, + order: 10, mode: 0, inputs: [], outputs: [ @@ -1017,7 +900,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 13, + order: 11, mode: 0, inputs: [ { @@ -1108,15 +991,15 @@ const defaultGraph: SerializedAppState = { id: 63, type: "utils/selector2", pos: [ - -696.2890000000004, - 187.11900000000014 + -699.5490048828129, + 252.79901159667983 ], size: [ 140, 66 ], flags: {}, - order: 141, + order: 225, mode: 0, inputs: [ { @@ -1160,8 +1043,8 @@ const defaultGraph: SerializedAppState = { id: 107, type: "actions/queue_events", pos: [ - -1155.0000000000002, - 321.07699999999994 + -1158.2600048828126, + 386.7570115966796 ], size: [ 142.79999999999998, @@ -1170,7 +1053,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 14, + order: 12, mode: 0, inputs: [], outputs: [ @@ -1206,8 +1089,8 @@ const defaultGraph: SerializedAppState = { id: 67, type: "math/operation", pos: [ - -522, - 346 + -525.2600048828125, + 411.68001159667966 ], size: [ 140, @@ -1216,7 +1099,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 54, + order: 75, mode: 0, inputs: [ { @@ -1252,8 +1135,8 @@ const defaultGraph: SerializedAppState = { id: 64, type: "basic/CompareValues", pos: [ - -813, - 208 + -816.2600048828125, + 273.68001159667966 ], size: [ 210, @@ -1262,7 +1145,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 50, + order: 72, mode: 0, inputs: [ { @@ -1304,8 +1187,8 @@ const defaultGraph: SerializedAppState = { id: 66, type: "basic/string", pos: [ - -943, - 209 + -946.2600048828125, + 274.68001159667966 ], size: [ 210, @@ -1314,7 +1197,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 15, + order: 13, mode: 0, inputs: [], outputs: [ @@ -1347,7 +1230,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 115, + order: 148, mode: 0, inputs: [ { @@ -1385,7 +1268,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 113, + order: 146, mode: 0, inputs: [ { @@ -1420,11 +1303,11 @@ const defaultGraph: SerializedAppState = { multiline: false }, widgets_values: [ - "1024" + "2" ], color: "#223", bgColor: "#335", - comfyValue: "1024", + comfyValue: "2", shownOutputProperties: {}, saveUserState: true }, @@ -1442,7 +1325,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 116, + order: 149, mode: 0, inputs: [ { @@ -1480,7 +1363,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 114, + order: 147, mode: 0, inputs: [ { @@ -1515,11 +1398,11 @@ const defaultGraph: SerializedAppState = { multiline: false }, widgets_values: [ - "1024" + "2" ], color: "#223", bgColor: "#335", - comfyValue: "1024", + comfyValue: "2", shownOutputProperties: {}, saveUserState: true }, @@ -1537,7 +1420,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 117, + order: 150, mode: 0, inputs: [ { @@ -1576,7 +1459,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 118, + order: 151, mode: 0, inputs: [ { @@ -1615,7 +1498,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 16, + order: 14, mode: 0, inputs: [ { @@ -1716,7 +1599,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 17, + order: 15, mode: 0, inputs: [], outputs: [ @@ -1761,7 +1644,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 51, + order: 73, mode: 0, inputs: [ { @@ -1806,8 +1689,8 @@ const defaultGraph: SerializedAppState = { id: 152, type: "basic/integer", pos: [ - -508.8369999999996, - 49.28399999999989 + -1182.3021221452946, + -604.6813949850745 ], size: [ 210, @@ -1816,7 +1699,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 18, + order: 16, mode: 0, inputs: [], outputs: [ @@ -1836,204 +1719,6 @@ const defaultGraph: SerializedAppState = { tags: [] } }, - { - id: 81, - type: "ui/slider", - pos: [ - -378, - 178 - ], - size: [ - 210, - 158 - ], - flags: { - collapsed: true - }, - order: 70, - mode: 0, - inputs: [ - { - name: "value", - type: "number", - link: null - }, - { - name: "store", - type: -1, - link: 224, - shape: 1 - } - ], - outputs: [ - { - name: "value", - type: "number", - links: [ - 106 - ] - }, - { - name: "changed", - type: -2, - links: null, - shape: 1 - }, - { - name: "min", - type: "number", - links: null - }, - { - name: "max", - type: "number", - links: null - }, - { - name: "step", - type: "number", - links: null - }, - { - name: "precision", - type: "number", - links: null - } - ], - title: "UI.Slider", - properties: { - tags: [], - defaultValue: 1, - min: -2, - max: 2, - step: 0.01, - precision: 0 - }, - widgets_values: [ - "0.000" - ], - color: "#223", - bgColor: "#335", - comfyValue: 0, - shownOutputProperties: { - min: { - type: "number", - index: 2 - }, - max: { - type: "number", - index: 3 - }, - step: { - type: "number", - index: 4 - }, - precision: { - type: "number", - index: 5 - } - }, - saveUserState: true - }, - { - id: 82, - type: "ui/slider", - pos: [ - -378, - 210 - ], - size: [ - 210, - 158 - ], - flags: { - collapsed: true - }, - order: 71, - mode: 0, - inputs: [ - { - name: "value", - type: "number", - link: null - }, - { - name: "store", - type: -1, - link: 225, - shape: 1 - } - ], - outputs: [ - { - name: "value", - type: "number", - links: [ - 107 - ] - }, - { - name: "changed", - type: -2, - links: null, - shape: 1 - }, - { - name: "min", - type: "number", - links: null - }, - { - name: "max", - type: "number", - links: null - }, - { - name: "step", - type: "number", - links: null - }, - { - name: "precision", - type: "number", - links: null - } - ], - title: "UI.Slider", - properties: { - tags: [], - defaultValue: 1, - min: -2, - max: 2, - step: 0.01, - precision: 0 - }, - widgets_values: [ - "0.000" - ], - color: "#223", - bgColor: "#335", - comfyValue: 0, - shownOutputProperties: { - min: { - type: "number", - index: 2 - }, - max: { - type: "number", - index: 3 - }, - step: { - type: "number", - index: 4 - }, - precision: { - type: "number", - index: 5 - } - }, - saveUserState: true - }, { id: 147, type: "actions/queue_events", @@ -2048,7 +1733,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 19, + order: 17, mode: 0, inputs: [], outputs: [ @@ -2093,7 +1778,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 20, + order: 18, mode: 0, inputs: [ { @@ -2140,206 +1825,6 @@ const defaultGraph: SerializedAppState = { shownOutputProperties: {}, saveUserState: true }, - { - id: 155, - type: "events/branch", - pos: [ - 735, - 798 - ], - size: [ - 140, - 46 - ], - flags: { - collapsed: true - }, - order: 82, - mode: 0, - inputs: [ - { - name: "in", - type: -1, - link: 227, - shape: 1 - }, - { - name: "cond", - type: "boolean", - link: 228 - } - ], - outputs: [ - { - name: "true", - type: -2, - links: null, - shape: 1, - slot_index: 0 - }, - { - name: "false", - type: -2, - links: [ - 229, - 233 - ], - shape: 1, - slot_index: 1 - } - ], - title: "Branch", - properties: { - tags: [] - } - }, - { - id: 156, - type: "events/branch", - pos: [ - 1955.1662000000001, - 360.7267458544923 - ], - size: [ - 140, - 46 - ], - flags: { - collapsed: true - }, - order: 81, - mode: 0, - inputs: [ - { - name: "in", - type: -1, - link: 230, - shape: 1 - }, - { - name: "cond", - type: "boolean", - link: 231 - } - ], - outputs: [ - { - name: "true", - type: -2, - links: null, - shape: 1 - }, - { - name: "false", - type: -2, - links: [ - 232 - ], - shape: 1, - slot_index: 1 - } - ], - title: "Branch", - properties: { - tags: [] - } - }, - { - id: 150, - type: "ui/button", - pos: [ - -551.8369999999995, - 88.28399999999995 - ], - size: [ - 210, - 78 - ], - flags: { - collapsed: true - }, - order: 21, - mode: 0, - inputs: [], - outputs: [ - { - name: "clicked", - type: -2, - links: [ - 222 - ], - shape: 1, - slot_index: 0 - }, - { - name: "isClicked", - type: "boolean", - links: null - } - ], - title: "UI.Button", - properties: { - tags: [], - defaultValue: false, - param: "bang" - }, - widgets_values: [ - "false" - ], - color: "#223", - bgColor: "#335", - comfyValue: false, - shownOutputProperties: {}, - saveUserState: true - }, - { - id: 151, - type: "actions/copy", - pos: [ - -442, - 59 - ], - size: [ - 210, - 78 - ], - flags: { - collapsed: true - }, - order: 53, - mode: 0, - inputs: [ - { - name: "in", - type: "*", - link: 223 - }, - { - name: "copy", - type: -1, - link: 222, - shape: 1 - } - ], - outputs: [ - { - name: "out", - type: -2, - links: [ - 224, - 225 - ], - shape: 1, - slot_index: 0 - } - ], - title: "Comfy.CopyAction", - properties: { - value: 0, - tags: [] - }, - saveUserState: true - }, { id: 39, type: "ui/slider", @@ -2354,8 +1839,8 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 22, - mode: 2, + order: 19, + mode: 0, inputs: [ { name: "value", @@ -2447,8 +1932,8 @@ const defaultGraph: SerializedAppState = { id: 177, type: "ui/combo", pos: [ - -339, - -254 + -411.6, + -256.41999999999996 ], size: [ 210, @@ -2457,7 +1942,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 23, + order: 20, mode: 0, inputs: [ { @@ -2507,50 +1992,12 @@ const defaultGraph: SerializedAppState = { shownOutputProperties: {}, saveUserState: true }, - { - id: 180, - type: "actions/set_node_mode", - pos: [ - -326, - -387 - ], - size: [ - 210, - 102 - ], - flags: {}, - order: 73, - mode: 0, - inputs: [ - { - name: "enabled", - type: "boolean", - link: 276, - slot_index: 0 - }, - { - name: "set", - type: -1, - link: 273, - shape: 1, - slot_index: 1 - } - ], - outputs: [], - title: "Comfy.SetNodeModeAction", - properties: { - targetTags: "useInternalVAE", - enable: false, - tags: [] - }, - saveUserState: true - }, { id: 181, type: "logic/NOT", pos: [ - -419, - -365 + -207.7999999999998, + -408.1200000000003 ], size: [ 140, @@ -2559,7 +2006,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 56, + order: 84, mode: 0, inputs: [ { @@ -2583,65 +2030,6 @@ const defaultGraph: SerializedAppState = { tags: [] } }, - { - id: 179, - type: "ui/checkbox", - pos: [ - -660, - -388 - ], - size: [ - 210, - 78 - ], - flags: {}, - order: 24, - mode: 0, - inputs: [ - { - name: "value", - type: "boolean", - link: null - }, - { - name: "store", - type: -1, - link: null, - shape: 1 - } - ], - outputs: [ - { - name: "value", - type: "boolean", - links: [ - 275 - ], - slot_index: 0 - }, - { - name: "changed", - type: -2, - links: [ - 273 - ], - shape: 1 - } - ], - title: "UI.Checkbox", - properties: { - tags: [], - defaultValue: false - }, - widgets_values: [ - "null" - ], - color: "#223", - bgColor: "#335", - comfyValue: false, - shownOutputProperties: {}, - saveUserState: true - }, { id: 184, type: "ui/combo", @@ -2656,8 +2044,8 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 25, - mode: 0, + order: 21, + mode: 2, inputs: [ { name: "value", @@ -2721,8 +2109,8 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 26, - mode: 0, + order: 22, + mode: 2, inputs: [ { name: "value", @@ -2785,8 +2173,8 @@ const defaultGraph: SerializedAppState = { 66 ], flags: {}, - order: 136, - mode: 2, + order: 192, + mode: 0, inputs: [ { name: "width", @@ -2845,7 +2233,7 @@ const defaultGraph: SerializedAppState = { 106 ], flags: {}, - order: 144, + order: 231, mode: 0, inputs: [ { @@ -2923,7 +2311,7 @@ const defaultGraph: SerializedAppState = { 46 ], flags: {}, - order: 145, + order: 232, mode: 0, inputs: [ { @@ -2971,7 +2359,7 @@ const defaultGraph: SerializedAppState = { 46 ], flags: {}, - order: 106, + order: 139, mode: 0, inputs: [ { @@ -3021,7 +2409,7 @@ const defaultGraph: SerializedAppState = { 46 ], flags: {}, - order: 101, + order: 134, mode: 0, inputs: [ { @@ -3069,7 +2457,7 @@ const defaultGraph: SerializedAppState = { 46 ], flags: {}, - order: 139, + order: 219, mode: 0, inputs: [ { @@ -3125,7 +2513,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 52, + order: 74, mode: 0, inputs: [ { @@ -3180,7 +2568,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 69, + order: 100, mode: 0, inputs: [ { @@ -3236,7 +2624,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 27, + order: 23, mode: 0, inputs: [], outputs: [ @@ -3270,8 +2658,8 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 28, - mode: 0, + order: 24, + mode: 2, inputs: [ { name: "value", @@ -3370,7 +2758,7 @@ const defaultGraph: SerializedAppState = { 122 ], flags: {}, - order: 72, + order: 101, mode: 0, inputs: [ { @@ -3419,15 +2807,15 @@ const defaultGraph: SerializedAppState = { id: 176, type: "VAELoader", pos: [ - -209, - -278 + -281.59999999999997, + -280.4200000000002 ], size: [ 140, 26 ], flags: {}, - order: 55, + order: 76, mode: 0, inputs: [ { @@ -3462,138 +2850,6 @@ const defaultGraph: SerializedAppState = { bgColor: "#653", saveUserState: true }, - { - id: 74, - type: "CheckpointLoaderSimple", - pos: [ - -227, - -38 - ], - size: [ - 184.79999999999998, - 66 - ], - flags: {}, - order: 49, - mode: 0, - inputs: [ - { - name: "ckpt_name", - type: "string", - link: 97, - config: {}, - widgetNodeType: "ui/combo", - serialize: true, - defaultWidgetNode: null - } - ], - outputs: [ - { - name: "MODEL", - type: "MODEL", - links: [ - 292 - ], - slot_index: 0 - }, - { - name: "CLIP", - type: "CLIP", - links: [ - 109 - ], - slot_index: 1 - }, - { - name: "VAE", - type: "VAE", - links: [ - 274 - ], - slot_index: 2 - } - ], - title: "CheckpointLoaderSimple", - properties: { - tags: [ - "txt2img", - "hr" - ] - }, - color: "#432", - bgColor: "#653", - saveUserState: true - }, - { - id: 103, - type: "ui/gallery", - pos: [ - 2076, - 65 - ], - size: [ - 210, - 142 - ], - flags: {}, - order: 102, - mode: 0, - inputs: [ - { - name: "images", - type: "IMAGE", - link: null - }, - { - name: "store", - type: -1, - link: 240, - shape: 1 - }, - { - name: "clear", - type: -1, - link: 232, - shape: 1 - } - ], - outputs: [ - { - name: "selected_index", - type: "number", - links: null - }, - { - name: "width", - type: "number", - links: null - }, - { - name: "height", - type: "number", - links: null - }, - { - name: "any_selected", - type: "boolean", - links: null - } - ], - title: "UI.Gallery", - properties: { - tags: [], - defaultValue: null, - index: 5, - updateMode: "append", - values: [] - }, - widgets_values: [], - color: "#223", - bgColor: "#335", - comfyValue: [], - shownOutputProperties: {}, - saveUserState: false - }, { id: 145, type: "events/filter", @@ -3608,7 +2864,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 68, + order: 99, mode: 0, inputs: [ { @@ -3650,318 +2906,6 @@ const defaultGraph: SerializedAppState = { tags: [] } }, - { - id: 119, - type: "KSampler", - pos: [ - 1569, - -90 - ], - size: [ - 241.79999999999998, - 206 - ], - flags: {}, - order: 109, - mode: 0, - inputs: [ - { - name: "model", - type: "MODEL", - link: 183, - config: {} - }, - { - name: "seed", - type: "number", - link: 175, - config: {}, - defaultWidgetNode: null, - widgetNodeType: "ui/slider", - serialize: true - }, - { - name: "steps", - type: "number", - link: 180, - config: {}, - defaultWidgetNode: null, - widgetNodeType: "ui/slider", - serialize: true - }, - { - name: "cfg", - type: "number", - link: 177, - config: {}, - defaultWidgetNode: null, - widgetNodeType: "ui/slider", - serialize: true - }, - { - name: "sampler_name", - type: "string", - link: 173, - config: {}, - defaultWidgetNode: null, - widgetNodeType: "ui/combo", - serialize: true - }, - { - name: "scheduler", - type: "string", - link: 174, - config: {}, - defaultWidgetNode: null, - widgetNodeType: "ui/combo", - serialize: true - }, - { - name: "positive", - type: "CONDITIONING", - link: 182, - slot_index: 6, - config: {} - }, - { - name: "negative", - type: "CONDITIONING", - link: 172, - slot_index: 7, - config: {} - }, - { - name: "latent_image", - type: "LATENT", - link: 170, - config: {} - }, - { - name: "denoise", - type: "number", - link: 169, - config: {}, - defaultWidgetNode: null, - widgetNodeType: "ui/slider", - serialize: true - } - ], - outputs: [ - { - name: "LATENT", - type: "LATENT", - links: [ - 179 - ], - slot_index: 0 - } - ], - title: "KSampler", - properties: { - tags: [ - "hr" - ] - }, - color: "#432", - bgColor: "#653", - saveUserState: true - }, - { - id: 79, - type: "LoraLoader", - pos: [ - -247, - 68 - ], - size: [ - 254.39999999999998, - 106 - ], - flags: {}, - order: 83, - mode: 0, - inputs: [ - { - name: "model", - type: "MODEL", - link: 292, - config: {} - }, - { - name: "clip", - type: "CLIP", - link: 109, - config: {} - }, - { - name: "lora_name", - type: "string", - link: 105, - config: {}, - defaultWidgetNode: null, - widgetNodeType: "ui/combo", - serialize: true - }, - { - name: "strength_model", - type: "number", - link: 106, - config: {}, - defaultWidgetNode: null, - widgetNodeType: "ui/slider", - serialize: true - }, - { - name: "strength_clip", - type: "number", - link: 107, - config: {}, - defaultWidgetNode: null, - widgetNodeType: "ui/slider", - serialize: true - } - ], - outputs: [ - { - name: "MODEL", - type: "MODEL", - links: [ - 112, - 183 - ], - slot_index: 0 - }, - { - name: "CLIP", - type: "CLIP", - links: [ - 110, - 111 - ], - slot_index: 1 - } - ], - title: "LoraLoader", - properties: { - tags: [ - "txt2img", - "hr" - ] - }, - color: "#432", - bgColor: "#653", - saveUserState: true - }, - { - id: 32, - type: "CLIPTextEncode", - pos: [ - -216, - 276 - ], - size: [ - 212.10067125600108, - 46 - ], - flags: {}, - order: 90, - mode: 0, - inputs: [ - { - name: "text", - type: "string", - link: 30, - config: {}, - serialize: true - }, - { - name: "clip", - type: "CLIP", - link: 110, - color_off: "orange", - color_on: "orange", - config: {} - } - ], - outputs: [ - { - name: "CONDITIONING", - type: "CONDITIONING", - links: [ - 33, - 182 - ], - color_off: "orange", - color_on: "orange", - slot_index: 0 - } - ], - title: "CLIPTextEncode", - properties: { - tags: [ - "txt2img", - "hr" - ] - }, - color: "#432", - bgColor: "#653", - saveUserState: true - }, - { - id: 34, - type: "CLIPTextEncode", - pos: [ - -214, - 367 - ], - size: [ - 216.60000000000002, - 46 - ], - flags: {}, - order: 91, - mode: 0, - inputs: [ - { - name: "text", - type: "string", - link: 31, - config: {}, - serialize: true - }, - { - name: "clip", - type: "CLIP", - link: 111, - color_off: "orange", - color_on: "orange", - config: {} - } - ], - outputs: [ - { - name: "CONDITIONING", - type: "CONDITIONING", - links: [ - 32, - 172 - ], - color_off: "orange", - color_on: "orange", - slot_index: 0 - } - ], - title: "CLIPTextEncode", - properties: { - tags: [ - "txt2img", - "hr" - ] - }, - color: "#432", - bgColor: "#653", - saveUserState: true - }, { id: 175, type: "VAEEncode", @@ -3974,8 +2918,8 @@ const defaultGraph: SerializedAppState = { 46 ], flags: {}, - order: 84, - mode: 0, + order: 114, + mode: 2, inputs: [ { name: "pixels", @@ -4015,15 +2959,15 @@ const defaultGraph: SerializedAppState = { id: 56, type: "utils/value_control", pos: [ - -979, - 277 + -982.2600048828125, + 342.68001159667966 ], size: [ 151.2, 126 ], flags: {}, - order: 140, + order: 224, mode: 0, inputs: [ { @@ -4087,7 +3031,7 @@ const defaultGraph: SerializedAppState = { title: "Comfy.ValueControl", properties: { tags: [], - value: 346653876594339, + value: 1050766615654456, action: "randomize", min: 0, max: 18446744073709552000, @@ -4099,8 +3043,8 @@ const defaultGraph: SerializedAppState = { id: 17, type: "ui/slider", pos: [ - -718, - 355 + -721.2600048828125, + 420.68001159667966 ], size: [ 210, @@ -4109,7 +3053,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 122, + order: 155, mode: 0, inputs: [ { @@ -4184,11 +3128,11 @@ const defaultGraph: SerializedAppState = { hidden: false }, widgets_values: [ - "346653876594339.000" + "0.000" ], color: "#223", bgColor: "#335", - comfyValue: 346653876594339, + comfyValue: 0, shownOutputProperties: { min: { type: "number", @@ -4221,13 +3165,13 @@ const defaultGraph: SerializedAppState = { 46 ], flags: {}, - order: 59, - mode: 0, + order: 94, + mode: 2, inputs: [ { name: "image", type: "string", - link: 317, + link: 628, config: {}, defaultWidgetNode: null, widgetNodeType: "ui/combo", @@ -4274,7 +3218,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 57, + order: 77, mode: 0, inputs: [ { @@ -4329,7 +3273,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 124, + order: 157, mode: 0, inputs: [ { @@ -4384,7 +3328,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 29, + order: 25, mode: 0, inputs: [ { @@ -4445,7 +3389,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 58, + order: 78, mode: 0, inputs: [ { @@ -4498,7 +3442,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 30, + order: 26, mode: 0, inputs: [], outputs: [ @@ -4531,8 +3475,8 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 31, - mode: 2, + order: 27, + mode: 0, inputs: [], outputs: [ { @@ -4581,8 +3525,8 @@ const defaultGraph: SerializedAppState = { 66 ], flags: {}, - order: 125, - mode: 2, + order: 158, + mode: 0, inputs: [ { name: "A", @@ -4642,7 +3586,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 32, + order: 28, mode: 2, inputs: [], outputs: [ @@ -4695,8 +3639,8 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 138, - mode: 2, + order: 208, + mode: 0, inputs: [ { name: "value", @@ -4797,8 +3741,8 @@ const defaultGraph: SerializedAppState = { 106 ], flags: {}, - order: 123, - mode: 0, + order: 156, + mode: 2, inputs: [ { name: "samples", @@ -4878,8 +3822,8 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 137, - mode: 2, + order: 199, + mode: 0, inputs: [ { name: "value", @@ -4983,8 +3927,8 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 92, - mode: 0, + order: 125, + mode: 2, inputs: [ { name: "value", @@ -5021,11 +3965,11 @@ const defaultGraph: SerializedAppState = { multiline: false }, widgets_values: [ - "2048" + "2" ], color: "#223", bgColor: "#335", - comfyValue: "2048", + comfyValue: "2", shownOutputProperties: {}, saveUserState: true }, @@ -5043,8 +3987,8 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 93, - mode: 0, + order: 126, + mode: 2, inputs: [ { name: "value", @@ -5081,63 +4025,14 @@ const defaultGraph: SerializedAppState = { multiline: false }, widgets_values: [ - "2048" + "2" ], color: "#223", bgColor: "#335", - comfyValue: "2048", + comfyValue: "2", shownOutputProperties: {}, saveUserState: true }, - { - id: 204, - type: "math/operation", - pos: [ - -330.4, - 1185.899999999999 - ], - size: [ - 140, - 46 - ], - flags: { - collapsed: true - }, - order: 61, - mode: 0, - inputs: [ - { - name: "A", - type: "number,array,object", - link: 320 - }, - { - name: "B", - type: "number", - link: 329 - } - ], - outputs: [ - { - name: "=", - type: "number", - links: [ - 327 - ], - slot_index: 0 - } - ], - title: "Operation", - properties: { - A: 2, - B: 1024, - OP: "*", - tags: [ - "i2i", - "i2iScaleSize" - ] - } - }, { id: 209, type: "string/toString", @@ -5152,8 +4047,8 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 85, - mode: 0, + order: 118, + mode: 2, inputs: [ { name: "in", @@ -5193,8 +4088,8 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 86, - mode: 0, + order: 119, + mode: 2, inputs: [ { name: "in", @@ -5220,55 +4115,6 @@ const defaultGraph: SerializedAppState = { ] } }, - { - id: 205, - type: "math/operation", - pos: [ - -344, - 1115 - ], - size: [ - 140, - 46 - ], - flags: { - collapsed: true - }, - order: 60, - mode: 0, - inputs: [ - { - name: "A", - type: "number,array,object", - link: 321 - }, - { - name: "B", - type: "number", - link: 328 - } - ], - outputs: [ - { - name: "=", - type: "number", - links: [ - 326 - ], - slot_index: 0 - } - ], - title: "Operation", - properties: { - A: 2, - B: 1024, - OP: "*", - tags: [ - "i2i", - "i2iScaleSize" - ] - } - }, { id: 211, type: "math/floor", @@ -5283,8 +4129,8 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 75, - mode: 0, + order: 110, + mode: 2, inputs: [ { name: "in", @@ -5325,7 +4171,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 112, + order: 145, mode: 0, inputs: [ { @@ -5352,7 +4198,7 @@ const defaultGraph: SerializedAppState = { title: "Operation", properties: { A: 2, - B: 512, + B: 1, OP: "*", tags: [] } @@ -5371,7 +4217,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 111, + order: 144, mode: 0, inputs: [ { @@ -5398,7 +4244,7 @@ const defaultGraph: SerializedAppState = { title: "Operation", properties: { A: 2, - B: 512, + B: 1, OP: "*", tags: [] } @@ -5415,7 +4261,7 @@ const defaultGraph: SerializedAppState = { 166 ], flags: {}, - order: 107, + order: 140, mode: 0, inputs: [ { @@ -5439,7 +4285,7 @@ const defaultGraph: SerializedAppState = { { name: "clear", type: -1, - link: 233, + link: 658, shape: 1 } ], @@ -5487,14 +4333,14 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 108, + order: 141, mode: 0, inputs: [ { name: "value", type: 0, link: 184, - label: "15.000" + label: "11.000" } ], outputs: [], @@ -5516,7 +4362,7 @@ const defaultGraph: SerializedAppState = { 66 ], flags: {}, - order: 128, + order: 161, mode: 2, inputs: [ { @@ -5579,7 +4425,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 126, + order: 159, mode: 2, inputs: [ { @@ -5686,7 +4532,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 127, + order: 160, mode: 2, inputs: [ { @@ -5792,8 +4638,8 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 74, - mode: 0, + order: 109, + mode: 2, inputs: [ { name: "in", @@ -5834,8 +4680,8 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 33, - mode: 0, + order: 29, + mode: 2, inputs: [ { name: "value", @@ -5936,7 +4782,7 @@ const defaultGraph: SerializedAppState = { 122 ], flags: {}, - order: 129, + order: 162, mode: 0, inputs: [ { @@ -5986,7 +4832,7 @@ const defaultGraph: SerializedAppState = { 122 ], flags: {}, - order: 130, + order: 163, mode: 0, inputs: [ { @@ -6038,7 +4884,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 34, + order: 30, mode: 0, inputs: [], outputs: [ @@ -6073,264 +4919,6 @@ const defaultGraph: SerializedAppState = { shownOutputProperties: {}, saveUserState: true }, - { - id: 104, - type: "ui/gallery", - pos: [ - 862.248693361997, - 640.4778575549986 - ], - size: [ - 210, - 142 - ], - flags: {}, - order: 103, - mode: 0, - inputs: [ - { - name: "images", - type: "OUTPUT", - link: null - }, - { - name: "store", - type: -1, - link: 243, - shape: 1 - }, - { - name: "clear", - type: -1, - link: 229, - shape: 1 - } - ], - outputs: [ - { - name: "selected_index", - type: "number", - links: [ - 168, - 184 - ], - slot_index: 0 - }, - { - name: "width", - type: "number", - links: [ - 356 - ], - slot_index: 1 - }, - { - name: "height", - type: "number", - links: [ - 357 - ], - slot_index: 2 - }, - { - name: "any_selected", - type: "boolean", - links: [ - 363 - ], - slot_index: 3 - } - ], - title: "UI.Gallery", - properties: { - tags: [], - defaultValue: null, - index: 0, - updateMode: "append", - values: [] - }, - widgets_values: [], - color: "#223", - bgColor: "#335", - comfyValue: [], - shownOutputProperties: {}, - saveUserState: false - }, - { - id: 127, - type: "actions/execute_subgraph", - pos: [ - 712, - 1076 - ], - size: [ - 226.79999999999998, - 78 - ], - flags: {}, - order: 96, - mode: 0, - inputs: [ - { - name: "execute", - type: -1, - link: 368, - shape: 1 - }, - { - name: "tag", - type: "string", - link: null - } - ], - outputs: [], - title: "Comfy.ExecuteSubgraphAction", - properties: { - tags: [], - targetTag: "txt2img", - tag: "txt2img" - }, - saveUserState: true - }, - { - id: 199, - type: "ui/image_upload", - pos: [ - -485, - 894 - ], - size: [ - 210, - 118 - ], - flags: {}, - order: 35, - mode: 0, - inputs: [], - outputs: [ - { - name: "filename", - type: "string", - links: [ - 317, - 372 - ], - slot_index: 0 - }, - { - name: "width", - type: "number", - links: [ - 328 - ], - slot_index: 1 - }, - { - name: "height", - type: "number", - links: [ - 329 - ], - slot_index: 2 - }, - { - name: "changed", - type: -2, - links: null, - shape: 1 - } - ], - title: "UI.ImageUpload", - properties: { - defaultValue: null, - tags: [ - "i2i" - ], - fileCount: "single" - }, - widgets_values: [], - color: "#223", - bgColor: "#335", - comfyValue: [], - shownOutputProperties: {}, - saveUserState: false - }, - { - id: 238, - type: "basic/string", - pos: [ - 184.80000000000013, - 1195.4999999999986 - ], - size: [ - 210, - 38 - ], - flags: { - collapsed: true - }, - order: 36, - mode: 0, - inputs: [], - outputs: [ - { - name: "string", - type: "string", - links: [ - 373 - ], - slot_index: 0 - } - ], - title: "Const String", - properties: { - value: "", - tags: [] - } - }, - { - id: 237, - type: "string/compare", - pos: [ - 239.80000000000004, - 1200.4999999999986 - ], - size: [ - 140, - 46 - ], - flags: { - collapsed: true - }, - order: 62, - mode: 0, - inputs: [ - { - name: "A", - type: "string", - link: 372 - }, - { - name: "B", - type: "string", - link: 373 - } - ], - outputs: [ - { - name: "==", - type: "boolean", - links: [ - 374 - ], - slot_index: 0 - } - ], - title: "Compare", - properties: { - tags: [] - } - }, { id: 235, type: "basic/string", @@ -6345,7 +4933,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 37, + order: 31, mode: 0, inputs: [], outputs: [ @@ -6378,7 +4966,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 76, + order: 108, mode: 0, inputs: [ { @@ -6421,7 +5009,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 87, + order: 117, mode: 0, inputs: [ { @@ -6459,7 +5047,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 38, + order: 32, mode: 0, inputs: [], outputs: [ @@ -6492,7 +5080,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 63, + order: 79, mode: 0, inputs: [ { @@ -6533,13 +5121,13 @@ const defaultGraph: SerializedAppState = { 206 ], flags: {}, - order: 121, + order: 154, mode: 0, inputs: [ { name: "model", type: "MODEL", - link: 112, + link: 601, color_off: "orange", color_on: "orange", config: {} @@ -6582,7 +5170,7 @@ const defaultGraph: SerializedAppState = { { name: "positive", type: "CONDITIONING", - link: 33, + link: 664, color_off: "orange", color_on: "orange", config: {} @@ -6590,7 +5178,7 @@ const defaultGraph: SerializedAppState = { { name: "negative", type: "CONDITIONING", - link: 32, + link: 663, color_off: "orange", color_on: "orange", config: {} @@ -6645,7 +5233,7 @@ const defaultGraph: SerializedAppState = { 46 ], flags: {}, - order: 131, + order: 164, mode: 0, inputs: [ { @@ -6697,7 +5285,7 @@ const defaultGraph: SerializedAppState = { 78 ], flags: {}, - order: 105, + order: 138, mode: 0, inputs: [ { @@ -6735,7 +5323,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 39, + order: 33, mode: 0, inputs: [], outputs: [ @@ -6766,7 +5354,7 @@ const defaultGraph: SerializedAppState = { 102 ], flags: {}, - order: 100, + order: 128, mode: 0, inputs: [ { @@ -6814,7 +5402,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: false }, - order: 40, + order: 34, mode: 0, inputs: [ { @@ -6867,7 +5455,7 @@ const defaultGraph: SerializedAppState = { }, widgets_values: [ "txt2img", - 1 + 0 ], color: "#223", bgColor: "#335", @@ -6889,7 +5477,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 41, + order: 35, mode: 0, inputs: [], outputs: [ @@ -6920,7 +5508,7 @@ const defaultGraph: SerializedAppState = { 98 ], flags: {}, - order: 66, + order: 82, mode: 0, inputs: [ { @@ -6969,7 +5557,7 @@ const defaultGraph: SerializedAppState = { 66 ], flags: {}, - order: 80, + order: 105, mode: 0, inputs: [ { @@ -7019,7 +5607,7 @@ const defaultGraph: SerializedAppState = { 150 ], flags: {}, - order: 64, + order: 80, mode: 0, inputs: [ { @@ -7075,7 +5663,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: false }, - order: 65, + order: 81, mode: 0, inputs: [ { @@ -7129,7 +5717,7 @@ const defaultGraph: SerializedAppState = { 102 ], flags: {}, - order: 77, + order: 102, mode: 0, inputs: [ { @@ -7175,7 +5763,7 @@ const defaultGraph: SerializedAppState = { 102 ], flags: {}, - order: 79, + order: 104, mode: 0, inputs: [ { @@ -7231,7 +5819,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 42, + order: 36, mode: 0, inputs: [], outputs: [ @@ -7247,8 +5835,8 @@ const defaultGraph: SerializedAppState = { ], title: "Const JSON", properties: { - json: "{ \value\: false, \noChangedEvent\: true }", - value: "[object Object]", + json: "{ \u000balue: false, \noChangedEvent: true }", + value: "null", type: "object", tags: [] }, @@ -7266,7 +5854,7 @@ const defaultGraph: SerializedAppState = { 102 ], flags: {}, - order: 99, + order: 127, mode: 0, inputs: [ { @@ -7314,7 +5902,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: false }, - order: 95, + order: 123, mode: 0, inputs: [ { @@ -7372,7 +5960,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: false }, - order: 89, + order: 116, mode: 0, inputs: [ { @@ -7400,7 +5988,7 @@ const defaultGraph: SerializedAppState = { 78 ], flags: {}, - order: 78, + order: 103, mode: 0, inputs: [ { @@ -7449,8 +6037,8 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: false }, - order: 88, - mode: 0, + order: 115, + mode: 2, inputs: [ { name: "value", @@ -7489,67 +6077,14 @@ const defaultGraph: SerializedAppState = { defaultValue: false }, widgets_values: [ - "true" + "false" ], color: "#223", bgColor: "#335", - comfyValue: true, + comfyValue: false, shownOutputProperties: {}, saveUserState: true }, - { - id: 233, - type: "events/branch", - pos: [ - 533, - 1099 - ], - size: [ - 140, - 46 - ], - flags: {}, - order: 94, - mode: 0, - inputs: [ - { - name: "in", - type: -1, - link: 439, - shape: 1 - }, - { - name: "cond", - type: "boolean", - link: 376 - } - ], - outputs: [ - { - name: "true", - type: -2, - links: [ - 368, - 441 - ], - shape: 1, - slot_index: 0 - }, - { - name: "false", - type: -2, - links: [ - 379 - ], - shape: 1, - slot_index: 1 - } - ], - title: "Branch", - properties: { - tags: [] - } - }, { id: 273, type: "actions/queue_events", @@ -7562,7 +6097,7 @@ const defaultGraph: SerializedAppState = { 66 ], flags: {}, - order: 43, + order: 37, mode: 0, inputs: [], outputs: [ @@ -7608,7 +6143,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 44, + order: 38, mode: 0, inputs: [], outputs: [ @@ -7657,7 +6192,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 67, + order: 83, mode: 0, inputs: [ { @@ -7715,7 +6250,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 98, + order: 130, mode: 0, inputs: [ { @@ -7754,7 +6289,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 45, + order: 39, mode: 0, inputs: [], outputs: [ @@ -7787,7 +6322,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 110, + order: 143, mode: 0, inputs: [ { @@ -7826,7 +6361,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 143, + order: 227, mode: 0, inputs: [ { @@ -7865,7 +6400,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 133, + order: 166, mode: 0, inputs: [ { @@ -7904,7 +6439,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 132, + order: 165, mode: 0, inputs: [ { @@ -7943,7 +6478,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 46, + order: 40, mode: 0, inputs: [], outputs: [ @@ -7962,51 +6497,12 @@ const defaultGraph: SerializedAppState = { tags: [] } }, - { - id: 279, - type: "actions/notify", - pos: [ - 737, - 1038 - ], - size: [ - 151.2, - 46 - ], - flags: { - collapsed: true - }, - order: 97, - mode: 0, - inputs: [ - { - name: "message", - type: "string", - link: 440 - }, - { - name: "trigger", - type: -1, - link: 441, - shape: 1, - slot_index: 1 - } - ], - outputs: [], - title: "Comfy.NotifyAction", - properties: { - tags: [], - message: "Nya.", - type: "info" - }, - saveUserState: true - }, { id: 280, type: "basic/string", pos: [ - 738, - 1009 + 1525.9631480090163, + 855.4472802404205 ], size: [ 210, @@ -8015,7 +6511,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 47, + order: 41, mode: 0, inputs: [], outputs: [ @@ -8048,7 +6544,7 @@ const defaultGraph: SerializedAppState = { flags: { collapsed: true }, - order: 48, + order: 42, mode: 0, inputs: [], outputs: [ @@ -8079,7 +6575,7 @@ const defaultGraph: SerializedAppState = { 46 ], flags: {}, - order: 120, + order: 153, mode: 0, inputs: [ { @@ -8136,7 +6632,7 @@ const defaultGraph: SerializedAppState = { 46 ], flags: {}, - order: 134, + order: 167, mode: 0, inputs: [ { @@ -8171,7 +6667,7 @@ const defaultGraph: SerializedAppState = { 46 ], flags: {}, - order: 119, + order: 152, mode: 0, inputs: [ { @@ -8228,7 +6724,7 @@ const defaultGraph: SerializedAppState = { 46 ], flags: {}, - order: 135, + order: 168, mode: 0, inputs: [ { @@ -8250,6 +6746,6445 @@ const defaultGraph: SerializedAppState = { sound: "notification.mp3" }, saveUserState: true + }, + { + id: 179, + type: "ui/checkbox", + pos: [ + -348.19999999999993, + -384.92000000000013 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 43, + mode: 0, + inputs: [ + { + name: "value", + type: "boolean", + link: null + }, + { + name: "store", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "boolean", + links: [ + 275 + ], + slot_index: 0 + }, + { + name: "changed", + type: -2, + links: [ + 273 + ], + shape: 1 + } + ], + title: "UI.Checkbox", + properties: { + tags: [], + defaultValue: false + }, + widgets_values: [ + "null" + ], + color: "#223", + bgColor: "#335", + comfyValue: false, + shownOutputProperties: {}, + saveUserState: true + }, + { + id: 80, + type: "ui/combo", + pos: [ + -852.9751221452975, + -565.4453949850752 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 44, + mode: 0, + inputs: [ + { + name: "value", + type: "string", + link: null + }, + { + name: "store", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "string", + links: [ + 105 + ] + }, + { + name: "changed", + type: -2, + links: null, + shape: 1 + } + ], + title: "UI.Combo", + properties: { + tags: [], + defaultValue: null, + values: [] + }, + widgets_values: [], + color: "#223", + bgColor: "#335", + comfyValue: "A", + shownOutputProperties: {}, + saveUserState: false + }, + { + id: 150, + type: "ui/button", + pos: [ + -1236.265122145295, + -579.6653949850739 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 45, + mode: 0, + inputs: [], + outputs: [ + { + name: "clicked", + type: -2, + links: [ + 222 + ], + shape: 1, + slot_index: 0 + }, + { + name: "isClicked", + type: "boolean", + links: null + } + ], + title: "UI.Button", + properties: { + tags: [], + defaultValue: false, + param: "bang" + }, + widgets_values: [ + "false" + ], + color: "#223", + bgColor: "#335", + comfyValue: false, + shownOutputProperties: {}, + saveUserState: true + }, + { + id: 81, + type: "ui/slider", + pos: [ + -835.41064453125, + -547.365478515625 + ], + size: [ + 210, + 158 + ], + flags: { + collapsed: true + }, + order: 229, + mode: 0, + inputs: [ + { + name: "value", + type: "number", + link: null + }, + { + name: "store", + type: -1, + link: 494, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "number", + links: [ + 106 + ] + }, + { + name: "changed", + type: -2, + links: [ + 496 + ], + shape: 1, + slot_index: 1 + }, + { + name: "min", + type: "number", + links: null + }, + { + name: "max", + type: "number", + links: null + }, + { + name: "step", + type: "number", + links: null + }, + { + name: "precision", + type: "number", + links: null + } + ], + title: "UI.Slider", + properties: { + tags: [], + defaultValue: 1, + min: -1, + max: 2, + step: 0.01, + precision: 0 + }, + widgets_values: [ + "0.000" + ], + color: "#223", + bgColor: "#335", + comfyValue: 0, + shownOutputProperties: { + min: { + type: "number", + index: 2 + }, + max: { + type: "number", + index: 3 + }, + step: { + type: "number", + index: 4 + }, + precision: { + type: "number", + index: 5 + } + }, + saveUserState: true + }, + { + id: 82, + type: "ui/slider", + pos: [ + -838.41064453125, + -526.365478515625 + ], + size: [ + 210, + 158 + ], + flags: { + collapsed: true + }, + order: 230, + mode: 0, + inputs: [ + { + name: "value", + type: "number", + link: null + }, + { + name: "store", + type: -1, + link: 489, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "number", + links: [ + 107 + ] + }, + { + name: "changed", + type: -2, + links: [ + 490 + ], + shape: 1, + slot_index: 1 + }, + { + name: "min", + type: "number", + links: null + }, + { + name: "max", + type: "number", + links: null + }, + { + name: "step", + type: "number", + links: null + }, + { + name: "precision", + type: "number", + links: null + } + ], + title: "UI.Slider", + properties: { + tags: [], + defaultValue: 1, + min: -1, + max: 2, + step: 0.01, + precision: 0 + }, + widgets_values: [ + "0.000" + ], + color: "#223", + bgColor: "#335", + comfyValue: 0, + shownOutputProperties: { + min: { + type: "number", + index: 2 + }, + max: { + type: "number", + index: 3 + }, + step: { + type: "number", + index: 4 + }, + precision: { + type: "number", + index: 5 + } + }, + saveUserState: true + }, + { + id: 318, + type: "events/sequence", + pos: [ + -964.41064453125, + -546.365478515625 + ], + size: [ + 140, + 66 + ], + flags: { + collapsed: true + }, + order: 172, + mode: 0, + inputs: [ + { + name: "", + type: -1, + link: 492, + shape: 1 + }, + { + name: "", + type: -1, + link: 493, + shape: 1 + }, + { + name: "", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "", + type: -2, + links: [ + 494 + ], + shape: 1, + slot_index: 0 + }, + { + name: "", + type: -2, + links: null, + shape: 1 + } + ], + title: "Sequence", + properties: { + tags: [] + } + }, + { + id: 316, + type: "events/sequence", + pos: [ + -962.41064453125, + -519.365478515625 + ], + size: [ + 140, + 66 + ], + flags: { + collapsed: true + }, + order: 170, + mode: 0, + inputs: [ + { + name: "", + type: -1, + link: 488, + shape: 1 + }, + { + name: "", + type: -1, + link: 498, + shape: 1 + }, + { + name: "", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "", + type: -2, + links: [ + 489 + ], + shape: 1, + slot_index: 0 + }, + { + name: "", + type: -2, + links: null, + shape: 1 + } + ], + title: "Sequence", + properties: { + tags: [] + } + }, + { + id: 319, + type: "events/branch", + pos: [ + -1267.4606445312504, + -512.8354785156248 + ], + size: [ + 140, + 46 + ], + flags: { + collapsed: true + }, + order: 173, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 496, + shape: 1 + }, + { + name: "cond", + type: "boolean", + link: 495 + } + ], + outputs: [ + { + name: "true", + type: -2, + links: [ + 497 + ], + shape: 1, + slot_index: 0 + }, + { + name: "false", + type: -2, + links: null, + shape: 1 + } + ], + title: "Branch", + properties: { + tags: [] + } + }, + { + id: 315, + type: "events/branch", + pos: [ + -1266.41064453125, + -540.365478515625 + ], + size: [ + 140, + 46 + ], + flags: { + collapsed: true + }, + order: 169, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 490, + shape: 1 + }, + { + name: "cond", + type: "boolean", + link: 487 + } + ], + outputs: [ + { + name: "true", + type: -2, + links: [ + 491 + ], + shape: 1 + }, + { + name: "false", + type: -2, + links: null, + shape: 1 + } + ], + title: "Branch", + properties: { + tags: [] + } + }, + { + id: 317, + type: "events/no_change", + pos: [ + -1157.41064453125, + -545.365478515625 + ], + size: [ + 159.6, + 26 + ], + flags: { + collapsed: true + }, + order: 171, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 491, + shape: 1, + slot_index: 0 + } + ], + outputs: [ + { + name: "out", + type: -2, + links: [ + 493 + ], + shape: 1, + slot_index: 0 + } + ], + title: "Comfy.NoChangeEvent", + properties: { + tags: [] + }, + saveUserState: true + }, + { + id: 151, + type: "actions/copy", + pos: [ + -1116.41064453125, + -594.365478515625 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 85, + mode: 0, + inputs: [ + { + name: "in", + type: "*", + link: 223 + }, + { + name: "copy", + type: -1, + link: 222, + shape: 1 + } + ], + outputs: [ + { + name: "out", + type: -2, + links: [ + 488, + 492 + ], + shape: 1, + slot_index: 0 + } + ], + title: "Comfy.CopyAction", + properties: { + value: 0, + tags: [] + }, + saveUserState: true + }, + { + id: 320, + type: "events/no_change", + pos: [ + -1155.41064453125, + -520.365478515625 + ], + size: [ + 159.6, + 26 + ], + flags: { + collapsed: true + }, + order: 175, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 497, + shape: 1, + slot_index: 0 + } + ], + outputs: [ + { + name: "out", + type: -2, + links: [ + 498 + ], + shape: 1, + slot_index: 0 + } + ], + title: "Comfy.NoChangeEvent", + properties: { + tags: [] + }, + saveUserState: true + }, + { + id: 336, + type: "ui/combo", + pos: [ + -854.0548037537221, + -421.2182846433528 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 46, + mode: 0, + inputs: [ + { + name: "value", + type: "string", + link: null + }, + { + name: "store", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "string", + links: [ + 503 + ] + }, + { + name: "changed", + type: -2, + links: null, + shape: 1 + } + ], + title: "UI.Combo", + properties: { + tags: [], + defaultValue: null, + values: [] + }, + widgets_values: [], + color: "#223", + bgColor: "#335", + comfyValue: "A", + shownOutputProperties: {}, + saveUserState: false + }, + { + id: 337, + type: "ui/slider", + pos: [ + -836.4903261396746, + -403.1383681739026 + ], + size: [ + 210, + 158 + ], + flags: { + collapsed: true + }, + order: 177, + mode: 0, + inputs: [ + { + name: "value", + type: "number", + link: null + }, + { + name: "store", + type: -1, + link: 506, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "number", + links: [ + 504 + ] + }, + { + name: "changed", + type: -2, + links: [ + 517 + ], + shape: 1, + slot_index: 1 + }, + { + name: "min", + type: "number", + links: null + }, + { + name: "max", + type: "number", + links: null + }, + { + name: "step", + type: "number", + links: null + }, + { + name: "precision", + type: "number", + links: null + } + ], + title: "UI.Slider", + properties: { + tags: [], + defaultValue: 1, + min: -1, + max: 2, + step: 0.01, + precision: 0 + }, + widgets_values: [ + "0.000" + ], + color: "#223", + bgColor: "#335", + comfyValue: 0, + shownOutputProperties: { + min: { + type: "number", + index: 2 + }, + max: { + type: "number", + index: 3 + }, + step: { + type: "number", + index: 4 + }, + precision: { + type: "number", + index: 5 + } + }, + saveUserState: true + }, + { + id: 338, + type: "ui/slider", + pos: [ + -839.4903261396746, + -382.13836817390256 + ], + size: [ + 210, + 158 + ], + flags: { + collapsed: true + }, + order: 178, + mode: 0, + inputs: [ + { + name: "value", + type: "number", + link: null + }, + { + name: "store", + type: -1, + link: 507, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "number", + links: [ + 505 + ] + }, + { + name: "changed", + type: -2, + links: [ + 510 + ], + shape: 1, + slot_index: 1 + }, + { + name: "min", + type: "number", + links: null + }, + { + name: "max", + type: "number", + links: null + }, + { + name: "step", + type: "number", + links: null + }, + { + name: "precision", + type: "number", + links: null + } + ], + title: "UI.Slider", + properties: { + tags: [], + defaultValue: 1, + min: -1, + max: 2, + step: 0.01, + precision: 0 + }, + widgets_values: [ + "0.000" + ], + color: "#223", + bgColor: "#335", + comfyValue: 0, + shownOutputProperties: { + min: { + type: "number", + index: 2 + }, + max: { + type: "number", + index: 3 + }, + step: { + type: "number", + index: 4 + }, + precision: { + type: "number", + index: 5 + } + }, + saveUserState: true + }, + { + id: 339, + type: "ui/button", + pos: [ + -1237.3448037537198, + -435.43828464335155 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 47, + mode: 0, + inputs: [], + outputs: [ + { + name: "clicked", + type: -2, + links: [ + 509 + ], + shape: 1, + slot_index: 0 + }, + { + name: "isClicked", + type: "boolean", + links: null + } + ], + title: "UI.Button", + properties: { + tags: [], + defaultValue: false, + param: "bang" + }, + widgets_values: [ + "false" + ], + color: "#223", + bgColor: "#335", + comfyValue: false, + shownOutputProperties: {}, + saveUserState: true + }, + { + id: 340, + type: "actions/copy", + pos: [ + -1117.490326139675, + -450.1383681739026 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 86, + mode: 0, + inputs: [ + { + name: "in", + type: "*", + link: 508 + }, + { + name: "copy", + type: -1, + link: 509, + shape: 1 + } + ], + outputs: [ + { + name: "out", + type: -2, + links: [ + 512, + 515 + ], + shape: 1, + slot_index: 0 + } + ], + title: "Comfy.CopyAction", + properties: { + value: 0, + tags: [] + }, + saveUserState: true + }, + { + id: 341, + type: "basic/integer", + pos: [ + -1183.3818037537194, + -460.4542846433521 + ], + size: [ + 210, + 38 + ], + flags: { + collapsed: true + }, + order: 48, + mode: 0, + inputs: [], + outputs: [ + { + name: "value", + type: "number", + links: [ + 508 + ], + label: "0", + slot_index: 0 + } + ], + title: "Const Integer", + properties: { + value: 0, + tags: [] + } + }, + { + id: 344, + type: "events/sequence", + pos: [ + -963.4903261396746, + -375.13836817390256 + ], + size: [ + 140, + 66 + ], + flags: { + collapsed: true + }, + order: 181, + mode: 0, + inputs: [ + { + name: "", + type: -1, + link: 512, + shape: 1 + }, + { + name: "", + type: -1, + link: 513, + shape: 1 + }, + { + name: "", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "", + type: -2, + links: [ + 507 + ], + shape: 1, + slot_index: 0 + }, + { + name: "", + type: -2, + links: null, + shape: 1 + } + ], + title: "Sequence", + properties: { + tags: [] + } + }, + { + id: 345, + type: "events/no_change", + pos: [ + -1158.4903261396748, + -401.1383681739026 + ], + size: [ + 159.6, + 26 + ], + flags: { + collapsed: true + }, + order: 182, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 514, + shape: 1, + slot_index: 0 + } + ], + outputs: [ + { + name: "out", + type: -2, + links: [ + 516 + ], + shape: 1, + slot_index: 0 + } + ], + title: "Comfy.NoChangeEvent", + properties: { + tags: [] + }, + saveUserState: true + }, + { + id: 346, + type: "events/sequence", + pos: [ + -965.4903261396746, + -402.1383681739026 + ], + size: [ + 140, + 66 + ], + flags: { + collapsed: true + }, + order: 183, + mode: 0, + inputs: [ + { + name: "", + type: -1, + link: 515, + shape: 1 + }, + { + name: "", + type: -1, + link: 516, + shape: 1 + }, + { + name: "", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "", + type: -2, + links: [ + 506 + ], + shape: 1, + slot_index: 0 + }, + { + name: "", + type: -2, + links: null, + shape: 1 + } + ], + title: "Sequence", + properties: { + tags: [] + } + }, + { + id: 348, + type: "events/no_change", + pos: [ + -1156.4903261396748, + -376.13836817390256 + ], + size: [ + 159.6, + 26 + ], + flags: { + collapsed: true + }, + order: 185, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 519, + shape: 1, + slot_index: 0 + } + ], + outputs: [ + { + name: "out", + type: -2, + links: [ + 513 + ], + shape: 1, + slot_index: 0 + } + ], + title: "Comfy.NoChangeEvent", + properties: { + tags: [] + }, + saveUserState: true + }, + { + id: 350, + type: "ui/combo", + pos: [ + -858.134485362147, + -281.0255907710794 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 49, + mode: 0, + inputs: [ + { + name: "value", + type: "string", + link: null + }, + { + name: "store", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "string", + links: [ + 520 + ] + }, + { + name: "changed", + type: -2, + links: null, + shape: 1 + } + ], + title: "UI.Combo", + properties: { + tags: [], + defaultValue: null, + values: [] + }, + widgets_values: [], + color: "#223", + bgColor: "#335", + comfyValue: "A", + shownOutputProperties: {}, + saveUserState: false + }, + { + id: 351, + type: "ui/slider", + pos: [ + -840.5700077480994, + -262.9456743016291 + ], + size: [ + 210, + 158 + ], + flags: { + collapsed: true + }, + order: 187, + mode: 0, + inputs: [ + { + name: "value", + type: "number", + link: null + }, + { + name: "store", + type: -1, + link: 523, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "number", + links: [ + 521 + ] + }, + { + name: "changed", + type: -2, + links: [ + 534 + ], + shape: 1, + slot_index: 1 + }, + { + name: "min", + type: "number", + links: null + }, + { + name: "max", + type: "number", + links: null + }, + { + name: "step", + type: "number", + links: null + }, + { + name: "precision", + type: "number", + links: null + } + ], + title: "UI.Slider", + properties: { + tags: [], + defaultValue: 1, + min: -1, + max: 2, + step: 0.01, + precision: 0 + }, + widgets_values: [ + "0.000" + ], + color: "#223", + bgColor: "#335", + comfyValue: 0, + shownOutputProperties: { + min: { + type: "number", + index: 2 + }, + max: { + type: "number", + index: 3 + }, + step: { + type: "number", + index: 4 + }, + precision: { + type: "number", + index: 5 + } + }, + saveUserState: true + }, + { + id: 352, + type: "ui/slider", + pos: [ + -843.5700077480994, + -241.94567430162894 + ], + size: [ + 210, + 158 + ], + flags: { + collapsed: true + }, + order: 188, + mode: 0, + inputs: [ + { + name: "value", + type: "number", + link: null + }, + { + name: "store", + type: -1, + link: 524, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "number", + links: [ + 522 + ] + }, + { + name: "changed", + type: -2, + links: [ + 527 + ], + shape: 1, + slot_index: 1 + }, + { + name: "min", + type: "number", + links: null + }, + { + name: "max", + type: "number", + links: null + }, + { + name: "step", + type: "number", + links: null + }, + { + name: "precision", + type: "number", + links: null + } + ], + title: "UI.Slider", + properties: { + tags: [], + defaultValue: 1, + min: -1, + max: 2, + step: 0.01, + precision: 0 + }, + widgets_values: [ + "0.000" + ], + color: "#223", + bgColor: "#335", + comfyValue: 0, + shownOutputProperties: { + min: { + type: "number", + index: 2 + }, + max: { + type: "number", + index: 3 + }, + step: { + type: "number", + index: 4 + }, + precision: { + type: "number", + index: 5 + } + }, + saveUserState: true + }, + { + id: 353, + type: "ui/button", + pos: [ + -1241.424485362144, + -295.2455907710783 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 50, + mode: 0, + inputs: [], + outputs: [ + { + name: "clicked", + type: -2, + links: [ + 526 + ], + shape: 1, + slot_index: 0 + }, + { + name: "isClicked", + type: "boolean", + links: null + } + ], + title: "UI.Button", + properties: { + tags: [], + defaultValue: false, + param: "bang" + }, + widgets_values: [ + "false" + ], + color: "#223", + bgColor: "#335", + comfyValue: false, + shownOutputProperties: {}, + saveUserState: true + }, + { + id: 354, + type: "actions/copy", + pos: [ + -1121.5700077480994, + -309.94567430162937 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 87, + mode: 0, + inputs: [ + { + name: "in", + type: "*", + link: 525 + }, + { + name: "copy", + type: -1, + link: 526, + shape: 1 + } + ], + outputs: [ + { + name: "out", + type: -2, + links: [ + 529, + 532 + ], + shape: 1, + slot_index: 0 + } + ], + title: "Comfy.CopyAction", + properties: { + value: 0, + tags: [] + }, + saveUserState: true + }, + { + id: 355, + type: "basic/integer", + pos: [ + -1187.4614853621438, + -320.26159077107883 + ], + size: [ + 210, + 38 + ], + flags: { + collapsed: true + }, + order: 51, + mode: 0, + inputs: [], + outputs: [ + { + name: "value", + type: "number", + links: [ + 525 + ], + label: "0", + slot_index: 0 + } + ], + title: "Const Integer", + properties: { + value: 0, + tags: [] + } + }, + { + id: 358, + type: "events/sequence", + pos: [ + -967.5700077480994, + -234.94567430162894 + ], + size: [ + 140, + 66 + ], + flags: { + collapsed: true + }, + order: 190, + mode: 0, + inputs: [ + { + name: "", + type: -1, + link: 529, + shape: 1 + }, + { + name: "", + type: -1, + link: 530, + shape: 1 + }, + { + name: "", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "", + type: -2, + links: [ + 524 + ], + shape: 1, + slot_index: 0 + }, + { + name: "", + type: -2, + links: null, + shape: 1 + } + ], + title: "Sequence", + properties: { + tags: [] + } + }, + { + id: 359, + type: "events/no_change", + pos: [ + -1162.5700077480992, + -260.945674301629 + ], + size: [ + 159.6, + 26 + ], + flags: { + collapsed: true + }, + order: 191, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 531, + shape: 1, + slot_index: 0 + } + ], + outputs: [ + { + name: "out", + type: -2, + links: [ + 533 + ], + shape: 1, + slot_index: 0 + } + ], + title: "Comfy.NoChangeEvent", + properties: { + tags: [] + }, + saveUserState: true + }, + { + id: 360, + type: "events/sequence", + pos: [ + -969.5700077480994, + -261.9456743016291 + ], + size: [ + 140, + 66 + ], + flags: { + collapsed: true + }, + order: 193, + mode: 0, + inputs: [ + { + name: "", + type: -1, + link: 532, + shape: 1 + }, + { + name: "", + type: -1, + link: 533, + shape: 1 + }, + { + name: "", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "", + type: -2, + links: [ + 523 + ], + shape: 1, + slot_index: 0 + }, + { + name: "", + type: -2, + links: null, + shape: 1 + } + ], + title: "Sequence", + properties: { + tags: [] + } + }, + { + id: 362, + type: "events/no_change", + pos: [ + -1160.5700077480992, + -235.94567430162894 + ], + size: [ + 159.6, + 26 + ], + flags: { + collapsed: true + }, + order: 195, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 536, + shape: 1, + slot_index: 0 + } + ], + outputs: [ + { + name: "out", + type: -2, + links: [ + 530 + ], + shape: 1, + slot_index: 0 + } + ], + title: "Comfy.NoChangeEvent", + properties: { + tags: [] + }, + saveUserState: true + }, + { + id: 364, + type: "ui/combo", + pos: [ + -866.9344853621461, + -143.5255907710794 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 52, + mode: 0, + inputs: [ + { + name: "value", + type: "string", + link: null + }, + { + name: "store", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "string", + links: [ + 537 + ] + }, + { + name: "changed", + type: -2, + links: null, + shape: 1 + } + ], + title: "UI.Combo", + properties: { + tags: [], + defaultValue: null, + values: [] + }, + widgets_values: [], + color: "#223", + bgColor: "#335", + comfyValue: "A", + shownOutputProperties: {}, + saveUserState: false + }, + { + id: 365, + type: "ui/slider", + pos: [ + -849.3700077480986, + -125.44567430162923 + ], + size: [ + 210, + 158 + ], + flags: { + collapsed: true + }, + order: 197, + mode: 0, + inputs: [ + { + name: "value", + type: "number", + link: null + }, + { + name: "store", + type: -1, + link: 540, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "number", + links: [ + 538 + ] + }, + { + name: "changed", + type: -2, + links: [ + 551 + ], + shape: 1, + slot_index: 1 + }, + { + name: "min", + type: "number", + links: null + }, + { + name: "max", + type: "number", + links: null + }, + { + name: "step", + type: "number", + links: null + }, + { + name: "precision", + type: "number", + links: null + } + ], + title: "UI.Slider", + properties: { + tags: [], + defaultValue: 1, + min: -1, + max: 2, + step: 0.01, + precision: 0 + }, + widgets_values: [ + "0.000" + ], + color: "#223", + bgColor: "#335", + comfyValue: 0, + shownOutputProperties: { + min: { + type: "number", + index: 2 + }, + max: { + type: "number", + index: 3 + }, + step: { + type: "number", + index: 4 + }, + precision: { + type: "number", + index: 5 + } + }, + saveUserState: true + }, + { + id: 366, + type: "ui/slider", + pos: [ + -852.3700077480986, + -104.44567430162917 + ], + size: [ + 210, + 158 + ], + flags: { + collapsed: true + }, + order: 198, + mode: 0, + inputs: [ + { + name: "value", + type: "number", + link: null + }, + { + name: "store", + type: -1, + link: 541, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "number", + links: [ + 539 + ] + }, + { + name: "changed", + type: -2, + links: [ + 544 + ], + shape: 1, + slot_index: 1 + }, + { + name: "min", + type: "number", + links: null + }, + { + name: "max", + type: "number", + links: null + }, + { + name: "step", + type: "number", + links: null + }, + { + name: "precision", + type: "number", + links: null + } + ], + title: "UI.Slider", + properties: { + tags: [], + defaultValue: 1, + min: -1, + max: 2, + step: 0.01, + precision: 0 + }, + widgets_values: [ + "0.000" + ], + color: "#223", + bgColor: "#335", + comfyValue: 0, + shownOutputProperties: { + min: { + type: "number", + index: 2 + }, + max: { + type: "number", + index: 3 + }, + step: { + type: "number", + index: 4 + }, + precision: { + type: "number", + index: 5 + } + }, + saveUserState: true + }, + { + id: 367, + type: "ui/button", + pos: [ + -1250.2244853621448, + -157.74559077107818 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 53, + mode: 0, + inputs: [], + outputs: [ + { + name: "clicked", + type: -2, + links: [ + 543 + ], + shape: 1, + slot_index: 0 + }, + { + name: "isClicked", + type: "boolean", + links: null + } + ], + title: "UI.Button", + properties: { + tags: [], + defaultValue: false, + param: "bang" + }, + widgets_values: [ + "false" + ], + color: "#223", + bgColor: "#335", + comfyValue: false, + shownOutputProperties: {}, + saveUserState: true + }, + { + id: 368, + type: "actions/copy", + pos: [ + -1130.3700077481, + -172.44567430162925 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 88, + mode: 0, + inputs: [ + { + name: "in", + type: "*", + link: 542 + }, + { + name: "copy", + type: -1, + link: 543, + shape: 1 + } + ], + outputs: [ + { + name: "out", + type: -2, + links: [ + 546, + 549 + ], + shape: 1, + slot_index: 0 + } + ], + title: "Comfy.CopyAction", + properties: { + value: 0, + tags: [] + }, + saveUserState: true + }, + { + id: 369, + type: "basic/integer", + pos: [ + -1196.2614853621444, + -182.76159077107872 + ], + size: [ + 210, + 38 + ], + flags: { + collapsed: true + }, + order: 54, + mode: 0, + inputs: [], + outputs: [ + { + name: "value", + type: "number", + links: [ + 542 + ], + label: "0", + slot_index: 0 + } + ], + title: "Const Integer", + properties: { + value: 0, + tags: [] + } + }, + { + id: 372, + type: "events/sequence", + pos: [ + -976.3700077480986, + -97.44567430162918 + ], + size: [ + 140, + 66 + ], + flags: { + collapsed: true + }, + order: 201, + mode: 0, + inputs: [ + { + name: "", + type: -1, + link: 546, + shape: 1 + }, + { + name: "", + type: -1, + link: 547, + shape: 1 + }, + { + name: "", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "", + type: -2, + links: [ + 541 + ], + shape: 1, + slot_index: 0 + }, + { + name: "", + type: -2, + links: null, + shape: 1 + } + ], + title: "Sequence", + properties: { + tags: [] + } + }, + { + id: 373, + type: "events/no_change", + pos: [ + -1171.3700077480999, + -123.44567430162923 + ], + size: [ + 159.6, + 26 + ], + flags: { + collapsed: true + }, + order: 202, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 548, + shape: 1, + slot_index: 0 + } + ], + outputs: [ + { + name: "out", + type: -2, + links: [ + 550 + ], + shape: 1, + slot_index: 0 + } + ], + title: "Comfy.NoChangeEvent", + properties: { + tags: [] + }, + saveUserState: true + }, + { + id: 374, + type: "events/sequence", + pos: [ + -978.3700077480986, + -124.44567430162923 + ], + size: [ + 140, + 66 + ], + flags: { + collapsed: true + }, + order: 203, + mode: 0, + inputs: [ + { + name: "", + type: -1, + link: 549, + shape: 1 + }, + { + name: "", + type: -1, + link: 550, + shape: 1 + }, + { + name: "", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "", + type: -2, + links: [ + 540 + ], + shape: 1, + slot_index: 0 + }, + { + name: "", + type: -2, + links: null, + shape: 1 + } + ], + title: "Sequence", + properties: { + tags: [] + } + }, + { + id: 376, + type: "events/no_change", + pos: [ + -1169.3700077480999, + -98.44567430162918 + ], + size: [ + 159.6, + 26 + ], + flags: { + collapsed: true + }, + order: 205, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 553, + shape: 1, + slot_index: 0 + } + ], + outputs: [ + { + name: "out", + type: -2, + links: [ + 547 + ], + shape: 1, + slot_index: 0 + } + ], + title: "Comfy.NoChangeEvent", + properties: { + tags: [] + }, + saveUserState: true + }, + { + id: 378, + type: "ui/combo", + pos: [ + -870.2344853621465, + -0.5255907710793659 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 55, + mode: 0, + inputs: [ + { + name: "value", + type: "string", + link: null + }, + { + name: "store", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "string", + links: [ + 554 + ] + }, + { + name: "changed", + type: -2, + links: null, + shape: 1 + } + ], + title: "UI.Combo", + properties: { + tags: [], + defaultValue: null, + values: [] + }, + widgets_values: [], + color: "#223", + bgColor: "#335", + comfyValue: "A", + shownOutputProperties: {}, + saveUserState: false + }, + { + id: 379, + type: "ui/slider", + pos: [ + -852.670007748099, + 17.554325698370793 + ], + size: [ + 210, + 158 + ], + flags: { + collapsed: true + }, + order: 207, + mode: 0, + inputs: [ + { + name: "value", + type: "number", + link: null + }, + { + name: "store", + type: -1, + link: 557, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "number", + links: [ + 555 + ] + }, + { + name: "changed", + type: -2, + links: [ + 568 + ], + shape: 1, + slot_index: 1 + }, + { + name: "min", + type: "number", + links: null + }, + { + name: "max", + type: "number", + links: null + }, + { + name: "step", + type: "number", + links: null + }, + { + name: "precision", + type: "number", + links: null + } + ], + title: "UI.Slider", + properties: { + tags: [], + defaultValue: 1, + min: -1, + max: 2, + step: 0.01, + precision: 0 + }, + widgets_values: [ + "0.000" + ], + color: "#223", + bgColor: "#335", + comfyValue: 0, + shownOutputProperties: { + min: { + type: "number", + index: 2 + }, + max: { + type: "number", + index: 3 + }, + step: { + type: "number", + index: 4 + }, + precision: { + type: "number", + index: 5 + } + }, + saveUserState: true + }, + { + id: 380, + type: "ui/slider", + pos: [ + -855.670007748099, + 38.55432569837085 + ], + size: [ + 210, + 158 + ], + flags: { + collapsed: true + }, + order: 209, + mode: 0, + inputs: [ + { + name: "value", + type: "number", + link: null + }, + { + name: "store", + type: -1, + link: 558, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "number", + links: [ + 556 + ] + }, + { + name: "changed", + type: -2, + links: [ + 561 + ], + shape: 1, + slot_index: 1 + }, + { + name: "min", + type: "number", + links: null + }, + { + name: "max", + type: "number", + links: null + }, + { + name: "step", + type: "number", + links: null + }, + { + name: "precision", + type: "number", + links: null + } + ], + title: "UI.Slider", + properties: { + tags: [], + defaultValue: 1, + min: -1, + max: 2, + step: 0.01, + precision: 0 + }, + widgets_values: [ + "0.000" + ], + color: "#223", + bgColor: "#335", + comfyValue: 0, + shownOutputProperties: { + min: { + type: "number", + index: 2 + }, + max: { + type: "number", + index: 3 + }, + step: { + type: "number", + index: 4 + }, + precision: { + type: "number", + index: 5 + } + }, + saveUserState: true + }, + { + id: 381, + type: "ui/button", + pos: [ + -1253.524485362144, + -14.745590771078136 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 56, + mode: 0, + inputs: [], + outputs: [ + { + name: "clicked", + type: -2, + links: [ + 560 + ], + shape: 1, + slot_index: 0 + }, + { + name: "isClicked", + type: "boolean", + links: null + } + ], + title: "UI.Button", + properties: { + tags: [], + defaultValue: false, + param: "bang" + }, + widgets_values: [ + "false" + ], + color: "#223", + bgColor: "#335", + comfyValue: false, + shownOutputProperties: {}, + saveUserState: true + }, + { + id: 382, + type: "actions/copy", + pos: [ + -1133.6700077480994, + -29.445674301629197 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 89, + mode: 0, + inputs: [ + { + name: "in", + type: "*", + link: 559 + }, + { + name: "copy", + type: -1, + link: 560, + shape: 1 + } + ], + outputs: [ + { + name: "out", + type: -2, + links: [ + 563, + 566 + ], + shape: 1, + slot_index: 0 + } + ], + title: "Comfy.CopyAction", + properties: { + value: 0, + tags: [] + }, + saveUserState: true + }, + { + id: 383, + type: "basic/integer", + pos: [ + -1199.5614853621437, + -39.76159077107865 + ], + size: [ + 210, + 38 + ], + flags: { + collapsed: true + }, + order: 57, + mode: 0, + inputs: [], + outputs: [ + { + name: "value", + type: "number", + links: [ + 559 + ], + label: "0", + slot_index: 0 + } + ], + title: "Const Integer", + properties: { + value: 0, + tags: [] + } + }, + { + id: 386, + type: "events/sequence", + pos: [ + -979.670007748099, + 45.55432569837086 + ], + size: [ + 140, + 66 + ], + flags: { + collapsed: true + }, + order: 211, + mode: 0, + inputs: [ + { + name: "", + type: -1, + link: 563, + shape: 1 + }, + { + name: "", + type: -1, + link: 564, + shape: 1 + }, + { + name: "", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "", + type: -2, + links: [ + 558 + ], + shape: 1, + slot_index: 0 + }, + { + name: "", + type: -2, + links: null, + shape: 1 + } + ], + title: "Sequence", + properties: { + tags: [] + } + }, + { + id: 387, + type: "events/no_change", + pos: [ + -1174.6700077480991, + 19.554325698370796 + ], + size: [ + 159.6, + 26 + ], + flags: { + collapsed: true + }, + order: 212, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 565, + shape: 1, + slot_index: 0 + } + ], + outputs: [ + { + name: "out", + type: -2, + links: [ + 567 + ], + shape: 1, + slot_index: 0 + } + ], + title: "Comfy.NoChangeEvent", + properties: { + tags: [] + }, + saveUserState: true + }, + { + id: 388, + type: "events/sequence", + pos: [ + -981.670007748099, + 18.554325698370793 + ], + size: [ + 140, + 66 + ], + flags: { + collapsed: true + }, + order: 213, + mode: 0, + inputs: [ + { + name: "", + type: -1, + link: 566, + shape: 1 + }, + { + name: "", + type: -1, + link: 567, + shape: 1 + }, + { + name: "", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "", + type: -2, + links: [ + 557 + ], + shape: 1, + slot_index: 0 + }, + { + name: "", + type: -2, + links: null, + shape: 1 + } + ], + title: "Sequence", + properties: { + tags: [] + } + }, + { + id: 390, + type: "events/no_change", + pos: [ + -1172.6700077480991, + 44.55432569837086 + ], + size: [ + 159.6, + 26 + ], + flags: { + collapsed: true + }, + order: 215, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 570, + shape: 1, + slot_index: 0 + } + ], + outputs: [ + { + name: "out", + type: -2, + links: [ + 564 + ], + shape: 1, + slot_index: 0 + } + ], + title: "Comfy.NoChangeEvent", + properties: { + tags: [] + }, + saveUserState: true + }, + { + id: 343, + type: "events/branch", + pos: [ + -1257.41064453125, + -398.365478515625 + ], + size: [ + 140, + 46 + ], + flags: { + collapsed: true + }, + order: 180, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 510, + shape: 1 + }, + { + name: "cond", + type: "boolean", + link: 571 + } + ], + outputs: [ + { + name: "true", + type: -2, + links: [ + 514 + ], + shape: 1 + }, + { + name: "false", + type: -2, + links: null, + shape: 1 + } + ], + title: "Branch", + properties: { + tags: [] + } + }, + { + id: 347, + type: "events/branch", + pos: [ + -1263.41064453125, + -372.365478515625 + ], + size: [ + 140, + 46 + ], + flags: { + collapsed: true + }, + order: 184, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 517, + shape: 1 + }, + { + name: "cond", + type: "boolean", + link: 572 + } + ], + outputs: [ + { + name: "true", + type: -2, + links: [ + 519 + ], + shape: 1, + slot_index: 0 + }, + { + name: "false", + type: -2, + links: null, + shape: 1 + } + ], + title: "Branch", + properties: { + tags: [] + } + }, + { + id: 361, + type: "events/branch", + pos: [ + -1263.9560990767047, + -233.09275124289772 + ], + size: [ + 140, + 46 + ], + flags: { + collapsed: true + }, + order: 194, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 534, + shape: 1 + }, + { + name: "cond", + type: "boolean", + link: 574, + slot_index: 1 + } + ], + outputs: [ + { + name: "true", + type: -2, + links: [ + 536 + ], + shape: 1, + slot_index: 0 + }, + { + name: "false", + type: -2, + links: null, + shape: 1 + } + ], + title: "Branch", + properties: { + tags: [] + } + }, + { + id: 371, + type: "events/branch", + pos: [ + -1269.774280894886, + -123.00184215198863 + ], + size: [ + 140, + 46 + ], + flags: { + collapsed: true + }, + order: 200, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 544, + shape: 1 + }, + { + name: "cond", + type: "boolean", + link: 575, + slot_index: 1 + } + ], + outputs: [ + { + name: "true", + type: -2, + links: [ + 548 + ], + shape: 1 + }, + { + name: "false", + type: -2, + links: null, + shape: 1 + } + ], + title: "Branch", + properties: { + tags: [] + } + }, + { + id: 357, + type: "events/branch", + pos: [ + -1264.41064453125, + -261.365478515625 + ], + size: [ + 140, + 46 + ], + flags: { + collapsed: true + }, + order: 189, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 527, + shape: 1 + }, + { + name: "cond", + type: "boolean", + link: 573, + slot_index: 1 + } + ], + outputs: [ + { + name: "true", + type: -2, + links: [ + 531 + ], + shape: 1 + }, + { + name: "false", + type: -2, + links: null, + shape: 1 + } + ], + title: "Branch", + properties: { + tags: [] + } + }, + { + id: 375, + type: "events/branch", + pos: [ + -1273.41064453125, + -97.365478515625 + ], + size: [ + 140, + 46 + ], + flags: { + collapsed: true + }, + order: 204, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 551, + shape: 1 + }, + { + name: "cond", + type: "boolean", + link: 576, + slot_index: 1 + } + ], + outputs: [ + { + name: "true", + type: -2, + links: [ + 553 + ], + shape: 1, + slot_index: 0 + }, + { + name: "false", + type: -2, + links: null, + shape: 1 + } + ], + title: "Branch", + properties: { + tags: [] + } + }, + { + id: 389, + type: "events/branch", + pos: [ + -1276.41064453125, + 46.634521484375 + ], + size: [ + 140, + 46 + ], + flags: { + collapsed: true + }, + order: 214, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 568, + shape: 1 + }, + { + name: "cond", + type: "boolean", + link: 578 + } + ], + outputs: [ + { + name: "true", + type: -2, + links: [ + 570 + ], + shape: 1, + slot_index: 0 + }, + { + name: "false", + type: -2, + links: null, + shape: 1 + } + ], + title: "Branch", + properties: { + tags: [] + } + }, + { + id: 385, + type: "events/branch", + pos: [ + -1279.41064453125, + 19.634521484375 + ], + size: [ + 140, + 46 + ], + flags: { + collapsed: true + }, + order: 210, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 561, + shape: 1 + }, + { + name: "cond", + type: "boolean", + link: 577 + } + ], + outputs: [ + { + name: "true", + type: -2, + links: [ + 565 + ], + shape: 1 + }, + { + name: "false", + type: -2, + links: null, + shape: 1 + } + ], + title: "Branch", + properties: { + tags: [] + } + }, + { + id: 313, + type: "ui/checkbox", + pos: [ + -1569.41064453125, + -238.365478515625 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 58, + mode: 0, + inputs: [ + { + name: "value", + type: "boolean", + link: null + }, + { + name: "store", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "boolean", + links: [ + 487, + 495, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578 + ], + slot_index: 0 + }, + { + name: "changed", + type: -2, + links: null, + shape: 1, + slot_index: 1 + } + ], + title: "UI.Checkbox", + properties: { + tags: [], + defaultValue: false + }, + widgets_values: [ + "true" + ], + color: "#223", + bgColor: "#335", + comfyValue: true, + shownOutputProperties: {}, + saveUserState: true + }, + { + id: 363, + type: "LoraLoader", + pos: [ + -736.41064453125, + -209.365478515625 + ], + size: [ + 254.39999999999998, + 106 + ], + flags: {}, + order: 196, + mode: 0, + inputs: [ + { + name: "model", + type: "MODEL", + link: 588, + config: {} + }, + { + name: "clip", + type: "CLIP", + link: 581, + config: {} + }, + { + name: "lora_name", + type: "string", + link: 537, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/combo", + serialize: true + }, + { + name: "strength_model", + type: "number", + link: 538, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/slider", + serialize: true + }, + { + name: "strength_clip", + type: "number", + link: 539, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/slider", + serialize: true + } + ], + outputs: [ + { + name: "MODEL", + type: "MODEL", + links: [ + 587 + ], + slot_index: 0 + }, + { + name: "CLIP", + type: "CLIP", + links: [ + 582 + ], + slot_index: 1 + } + ], + title: "LoraLoader", + properties: { + tags: [ + "txt2img", + "hr" + ] + }, + color: "#432", + bgColor: "#653", + saveUserState: true + }, + { + id: 349, + type: "LoraLoader", + pos: [ + -727.41064453125, + -347.365478515625 + ], + size: [ + 254.39999999999998, + 106 + ], + flags: {}, + order: 186, + mode: 0, + inputs: [ + { + name: "model", + type: "MODEL", + link: 589, + config: {} + }, + { + name: "clip", + type: "CLIP", + link: 580, + config: {} + }, + { + name: "lora_name", + type: "string", + link: 520, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/combo", + serialize: true + }, + { + name: "strength_model", + type: "number", + link: 521, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/slider", + serialize: true + }, + { + name: "strength_clip", + type: "number", + link: 522, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/slider", + serialize: true + } + ], + outputs: [ + { + name: "MODEL", + type: "MODEL", + links: [ + 588 + ], + slot_index: 0 + }, + { + name: "CLIP", + type: "CLIP", + links: [ + 581 + ], + slot_index: 1 + } + ], + title: "LoraLoader", + properties: { + tags: [ + "txt2img", + "hr" + ] + }, + color: "#432", + bgColor: "#653", + saveUserState: true + }, + { + id: 335, + type: "LoraLoader", + pos: [ + -723.41064453125, + -487.365478515625 + ], + size: [ + 254.39999999999998, + 106 + ], + flags: {}, + order: 176, + mode: 0, + inputs: [ + { + name: "model", + type: "MODEL", + link: 590, + config: {} + }, + { + name: "clip", + type: "CLIP", + link: 579, + config: {} + }, + { + name: "lora_name", + type: "string", + link: 503, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/combo", + serialize: true + }, + { + name: "strength_model", + type: "number", + link: 504, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/slider", + serialize: true + }, + { + name: "strength_clip", + type: "number", + link: 505, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/slider", + serialize: true + } + ], + outputs: [ + { + name: "MODEL", + type: "MODEL", + links: [ + 589 + ], + slot_index: 0 + }, + { + name: "CLIP", + type: "CLIP", + links: [ + 580 + ], + slot_index: 1 + } + ], + title: "LoraLoader", + properties: { + tags: [ + "txt2img", + "hr" + ] + }, + color: "#432", + bgColor: "#653", + saveUserState: true + }, + { + id: 79, + type: "LoraLoader", + pos: [ + -721.41064453125, + -631.365478515625 + ], + size: [ + 254.39999999999998, + 106 + ], + flags: {}, + order: 228, + mode: 0, + inputs: [ + { + name: "model", + type: "MODEL", + link: 292, + config: {} + }, + { + name: "clip", + type: "CLIP", + link: 109, + config: {} + }, + { + name: "lora_name", + type: "string", + link: 105, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/combo", + serialize: true + }, + { + name: "strength_model", + type: "number", + link: 106, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/slider", + serialize: true + }, + { + name: "strength_clip", + type: "number", + link: 107, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/slider", + serialize: true + } + ], + outputs: [ + { + name: "MODEL", + type: "MODEL", + links: [ + 590 + ], + slot_index: 0 + }, + { + name: "CLIP", + type: "CLIP", + links: [ + 579 + ], + slot_index: 1 + } + ], + title: "LoraLoader", + properties: { + tags: [ + "txt2img", + "hr" + ] + }, + color: "#432", + bgColor: "#653", + saveUserState: true + }, + { + id: 391, + type: "utils/reroute", + pos: [ + -435, + 16 + ], + size: [ + 75, + 26 + ], + flags: {}, + order: 216, + mode: 0, + inputs: [ + { + name: "", + type: "*", + link: 583 + } + ], + outputs: [ + { + name: "", + type: "CLIP", + links: [ + 584, + 585 + ], + slot_index: 0 + } + ], + title: "Comfy.Reroute", + properties: { + tags: [ + "txt2img", + "hr" + ], + showOutputText: false, + horizontal: false + }, + saveUserState: true + }, + { + id: 377, + type: "LoraLoader", + pos: [ + -739.41064453125, + -66.365478515625 + ], + size: [ + 254.39999999999998, + 106 + ], + flags: {}, + order: 206, + mode: 0, + inputs: [ + { + name: "model", + type: "MODEL", + link: 587, + config: {} + }, + { + name: "clip", + type: "CLIP", + link: 582, + config: {} + }, + { + name: "lora_name", + type: "string", + link: 554, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/combo", + serialize: true + }, + { + name: "strength_model", + type: "number", + link: 555, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/slider", + serialize: true + }, + { + name: "strength_clip", + type: "number", + link: 556, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/slider", + serialize: true + } + ], + outputs: [ + { + name: "MODEL", + type: "MODEL", + links: [ + 599, + 601, + 602 + ], + slot_index: 0 + }, + { + name: "CLIP", + type: "CLIP", + links: [ + 583 + ], + slot_index: 1 + } + ], + title: "LoraLoader", + properties: { + tags: [ + "txt2img", + "hr" + ] + }, + color: "#432", + bgColor: "#653", + saveUserState: true + }, + { + id: 392, + type: "utils/reroute", + pos: [ + -432, + -63 + ], + size: [ + 75, + 26 + ], + flags: {}, + order: 217, + mode: 0, + inputs: [ + { + name: "", + type: "*", + link: 599, + slot_index: 0 + } + ], + outputs: [ + { + name: "", + type: "MODEL", + links: [ + 600 + ], + slot_index: 0 + } + ], + title: "Comfy.Reroute", + properties: { + tags: [ + "txt2img", + "hr" + ], + showOutputText: false, + horizontal: false + }, + saveUserState: true + }, + { + id: 74, + type: "CheckpointLoaderSimple", + pos: [ + -139, + -36 + ], + size: [ + 184.79999999999998, + 66 + ], + flags: {}, + order: 71, + mode: 0, + inputs: [ + { + name: "ckpt_name", + type: "string", + link: 97, + config: {}, + widgetNodeType: "ui/combo", + serialize: true, + defaultWidgetNode: null + } + ], + outputs: [ + { + name: "MODEL", + type: "MODEL", + links: [ + 292 + ], + slot_index: 0 + }, + { + name: "CLIP", + type: "CLIP", + links: [ + 109 + ], + slot_index: 1 + }, + { + name: "VAE", + type: "VAE", + links: [ + 274 + ], + slot_index: 2 + } + ], + title: "CheckpointLoaderSimple", + properties: { + tags: [ + "txt2img", + "hr" + ] + }, + color: "#432", + bgColor: "#653", + saveUserState: true + }, + { + id: 33, + type: "ui/text", + pos: [ + -331.1103000000002, + 114.9386 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 59, + mode: 0, + inputs: [ + { + name: "value", + type: "string", + link: null + }, + { + name: "store", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "string", + links: [ + 30 + ] + }, + { + name: "changed", + type: -2, + links: null, + shape: 1 + } + ], + title: "UI.Text", + properties: { + tags: [], + defaultValue: "", + multiline: true, + hidden: false + }, + widgets_values: [ + "masterpiece, a fluffy corgi wearing sunglasses" + ], + color: "#223", + bgColor: "#335", + comfyValue: "masterpiece, a fluffy corgi wearing sunglasses", + shownOutputProperties: {}, + saveUserState: true + }, + { + id: 400, + type: "ui/combo", + pos: [ + -202, + -520 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 60, + mode: 2, + inputs: [ + { + name: "value", + type: "string", + link: null + }, + { + name: "store", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "string", + links: [ + 596 + ] + }, + { + name: "changed", + type: -2, + links: null, + shape: 1 + } + ], + title: "UI.Combo", + properties: { + tags: [ + "controlNet" + ], + defaultValue: null, + values: [] + }, + widgets_values: [], + color: "#223", + bgColor: "#335", + comfyValue: "A", + shownOutputProperties: {}, + saveUserState: false + }, + { + id: 412, + type: "ui/button", + pos: [ + 222.21750788554073, + -334.659448390596 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 61, + mode: 2, + inputs: [], + outputs: [ + { + name: "clicked", + type: -2, + links: [ + 621 + ], + shape: 1, + slot_index: 0 + }, + { + name: "isClicked", + type: "boolean", + links: null + } + ], + title: "UI.Button", + properties: { + tags: [ + "controlNet" + ], + defaultValue: false, + param: "bang" + }, + widgets_values: [ + "false" + ], + color: "#223", + bgColor: "#335", + comfyValue: false, + shownOutputProperties: {}, + saveUserState: true + }, + { + id: 414, + type: "basic/integer", + pos: [ + 276.18050788554115, + -359.67544839059656 + ], + size: [ + 210, + 38 + ], + flags: { + collapsed: true + }, + order: 62, + mode: 0, + inputs: [], + outputs: [ + { + name: "value", + type: "number", + links: [ + 620 + ], + label: "0", + slot_index: 0 + } + ], + title: "Const Integer", + properties: { + value: 0, + tags: [] + } + }, + { + id: 413, + type: "actions/copy", + pos: [ + 342, + -349 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 90, + mode: 0, + inputs: [ + { + name: "in", + type: "*", + link: 620 + }, + { + name: "copy", + type: -1, + link: 621, + shape: 1 + } + ], + outputs: [ + { + name: "out", + type: -2, + links: [ + 622 + ], + shape: 1, + slot_index: 0 + } + ], + title: "Comfy.CopyAction", + properties: { + value: 0, + tags: [] + }, + saveUserState: true + }, + { + id: 180, + type: "actions/set_node_mode", + pos: [ + -49, + -448 + ], + size: [ + 210, + 102 + ], + flags: {}, + order: 106, + mode: 0, + inputs: [ + { + name: "enabled", + type: "boolean", + link: 276, + slot_index: 0 + }, + { + name: "set", + type: -1, + link: 273, + shape: 1, + slot_index: 1 + } + ], + outputs: [], + title: "Comfy.SetNodeModeAction", + properties: { + targetTags: "useInternalVAE", + enable: false, + tags: [] + }, + saveUserState: true + }, + { + id: 402, + type: "ui/slider", + pos: [ + 512, + -352 + ], + size: [ + 210, + 158 + ], + flags: { + collapsed: true + }, + order: 107, + mode: 2, + inputs: [ + { + name: "value", + type: "number", + link: null + }, + { + name: "store", + type: -1, + link: 622, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "number", + links: [ + 603, + 616 + ], + slot_index: 0 + }, + { + name: "changed", + type: -2, + links: null, + shape: 1 + }, + { + name: "min", + type: "number", + links: null + }, + { + name: "max", + type: "number", + links: null + }, + { + name: "step", + type: "number", + links: null + }, + { + name: "precision", + type: "number", + links: null + } + ], + title: "UI.Slider", + properties: { + tags: [ + "controlNet" + ], + defaultValue: 1, + min: 0, + max: 10, + step: 0.01, + precision: 0 + }, + widgets_values: [ + "1.050" + ], + color: "#223", + bgColor: "#335", + comfyValue: 1.05, + shownOutputProperties: { + min: { + type: "number", + index: 2 + }, + max: { + type: "number", + index: 3 + }, + step: { + type: "number", + index: 4 + }, + precision: { + type: "number", + index: 5 + } + }, + saveUserState: true + }, + { + id: 238, + type: "basic/string", + pos: [ + 182, + 1180 + ], + size: [ + 210, + 38 + ], + flags: { + collapsed: true + }, + order: 63, + mode: 0, + inputs: [], + outputs: [ + { + name: "string", + type: "string", + links: [ + 373 + ], + slot_index: 0 + } + ], + title: "Const String", + properties: { + value: "", + tags: [] + } + }, + { + id: 237, + type: "string/compare", + pos: [ + 240, + 1200 + ], + size: [ + 140, + 46 + ], + flags: { + collapsed: true + }, + order: 93, + mode: 0, + inputs: [ + { + name: "A", + type: "string", + link: 627 + }, + { + name: "B", + type: "string", + link: 373 + } + ], + outputs: [ + { + name: "==", + type: "boolean", + links: [ + 374 + ], + slot_index: 0 + } + ], + title: "Compare", + properties: { + tags: [] + } + }, + { + id: 204, + type: "math/operation", + pos: [ + -330, + 1186 + ], + size: [ + 140, + 46 + ], + flags: { + collapsed: true + }, + order: 96, + mode: 2, + inputs: [ + { + name: "A", + type: "number,array,object", + link: 320 + }, + { + name: "B", + type: "number", + link: 629 + } + ], + outputs: [ + { + name: "=", + type: "number", + links: [ + 327 + ], + slot_index: 0 + } + ], + title: "Operation", + properties: { + A: 2, + B: 1, + OP: "*", + tags: [ + "i2i", + "i2iScaleSize" + ] + } + }, + { + id: 205, + type: "math/operation", + pos: [ + -344, + 1115 + ], + size: [ + 140, + 46 + ], + flags: { + collapsed: true + }, + order: 95, + mode: 2, + inputs: [ + { + name: "A", + type: "number,array,object", + link: 321 + }, + { + name: "B", + type: "number", + link: 630 + } + ], + outputs: [ + { + name: "=", + type: "number", + links: [ + 326 + ], + slot_index: 0 + } + ], + title: "Operation", + properties: { + A: 2, + B: 1, + OP: "*", + tags: [ + "i2i", + "i2iScaleSize" + ] + } + }, + { + id: 417, + type: "ui/image_upload", + pos: [ + 185, + -527 + ], + size: [ + 210, + 138 + ], + flags: {}, + order: 64, + mode: 2, + inputs: [], + outputs: [ + { + name: "filename", + type: "string", + links: [ + 626 + ], + slot_index: 0 + }, + { + name: "width", + type: "number", + links: null + }, + { + name: "height", + type: "number", + links: null + }, + { + name: "image_count", + type: "number", + links: [ + 631 + ], + slot_index: 3 + }, + { + name: "changed", + type: -2, + links: null, + shape: 1 + } + ], + title: "UI.ImageUpload", + properties: { + defaultValue: null, + tags: [ + "controlNet" + ], + fileCount: "single" + }, + widgets_values: [], + color: "#223", + bgColor: "#335", + comfyValue: [], + shownOutputProperties: {}, + saveUserState: false + }, + { + id: 419, + type: "basic/integer", + pos: [ + 531.5860255447035, + 1030.5762584522918 + ], + size: [ + 210, + 38 + ], + flags: { + collapsed: true + }, + order: 65, + mode: 0, + inputs: [], + outputs: [ + { + name: "value", + type: "number", + links: [ + 633 + ], + label: "0", + slot_index: 0 + } + ], + title: "Const Integer", + properties: { + value: 0, + tags: [] + } + }, + { + id: 421, + type: "logic/NOT", + pos: [ + 830.5229151014274, + 1007.3749060856503 + ], + size: [ + 140, + 26 + ], + flags: { + collapsed: true + }, + order: 120, + mode: 0, + inputs: [ + { + name: "in", + type: "boolean", + link: 635 + } + ], + outputs: [ + { + name: "out", + type: "boolean", + links: [ + 636 + ], + slot_index: 0 + } + ], + title: "NOT", + properties: { + tags: [] + } + }, + { + id: 233, + type: "events/branch", + pos: [ + 533, + 1099 + ], + size: [ + 140, + 46 + ], + flags: {}, + order: 124, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 439, + shape: 1 + }, + { + name: "cond", + type: "boolean", + link: 376 + } + ], + outputs: [ + { + name: "true", + type: -2, + links: [ + 637 + ], + shape: 1, + slot_index: 0 + }, + { + name: "false", + type: -2, + links: [ + 379 + ], + shape: 1, + slot_index: 1 + } + ], + title: "Branch", + properties: { + tags: [] + } + }, + { + id: 279, + type: "actions/notify", + pos: [ + 1524.5131480090158, + 884.0172802404205 + ], + size: [ + 151.2, + 46 + ], + flags: { + collapsed: true + }, + order: 131, + mode: 0, + inputs: [ + { + name: "message", + type: "string", + link: 440 + }, + { + name: "trigger", + type: -1, + link: 638, + shape: 1, + slot_index: 1 + } + ], + outputs: [], + title: "Comfy.NotifyAction", + properties: { + tags: [], + message: "Nya.", + type: "info" + }, + saveUserState: true + }, + { + id: 127, + type: "actions/execute_subgraph", + pos: [ + 1500, + 922 + ], + size: [ + 226.79999999999998, + 78 + ], + flags: {}, + order: 132, + mode: 0, + inputs: [ + { + name: "execute", + type: -1, + link: 639, + shape: 1 + }, + { + name: "tag", + type: "string", + link: null + } + ], + outputs: [], + title: "Comfy.ExecuteSubgraphAction", + properties: { + tags: [], + targetTag: "txt2img", + tag: "txt2img" + }, + saveUserState: true + }, + { + id: 416, + type: "basic/CompareValues", + pos: [ + 611.5229151014275, + 1021.3749060856503 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 92, + mode: 0, + inputs: [ + { + name: "A", + type: 0, + link: 633 + }, + { + name: "B", + type: 0, + link: 631 + } + ], + outputs: [ + { + name: "true", + type: "boolean", + links: [ + 634 + ], + slot_index: 0 + }, + { + name: "false", + type: "boolean", + links: null + } + ], + title: "GenericCompare", + properties: { + A: 0, + B: 1, + OP: "==", + enabled: true, + tags: [] + } + }, + { + id: 422, + type: "actions/notify", + pos: [ + 1243, + 1158 + ], + size: [ + 151.2, + 46 + ], + flags: { + collapsed: true + }, + order: 133, + mode: 0, + inputs: [ + { + name: "message", + type: "string", + link: 640 + }, + { + name: "trigger", + type: -1, + link: 641, + shape: 1, + slot_index: 1 + } + ], + outputs: [], + title: "Comfy.NotifyAction", + properties: { + tags: [], + message: "Nya.", + type: "error" + }, + saveUserState: true + }, + { + id: 418, + type: "ui/image_upload", + pos: [ + -649, + 1228 + ], + size: [ + 210, + 138 + ], + flags: {}, + order: 66, + mode: 2, + inputs: [], + outputs: [ + { + name: "filename", + type: "string", + links: [ + 627, + 628 + ], + slot_index: 0 + }, + { + name: "width", + type: "number", + links: [ + 630 + ], + slot_index: 1 + }, + { + name: "height", + type: "number", + links: [ + 629 + ], + slot_index: 2 + }, + { + name: "image_count", + type: "number", + links: null + }, + { + name: "changed", + type: -2, + links: null, + shape: 1 + } + ], + title: "UI.ImageUpload", + properties: { + defaultValue: null, + tags: [ + "i2i" + ], + fileCount: "single" + }, + widgets_values: [], + color: "#223", + bgColor: "#335", + comfyValue: [], + shownOutputProperties: {}, + saveUserState: false + }, + { + id: 119, + type: "KSampler", + pos: [ + 1569, + -90 + ], + size: [ + 241.79999999999998, + 206 + ], + flags: {}, + order: 142, + mode: 0, + inputs: [ + { + name: "model", + type: "MODEL", + link: 602, + config: {}, + slot_index: 0 + }, + { + name: "seed", + type: "number", + link: 175, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/slider", + serialize: true + }, + { + name: "steps", + type: "number", + link: 180, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/slider", + serialize: true + }, + { + name: "cfg", + type: "number", + link: 177, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/slider", + serialize: true + }, + { + name: "sampler_name", + type: "string", + link: 173, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/combo", + serialize: true + }, + { + name: "scheduler", + type: "string", + link: 174, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/combo", + serialize: true + }, + { + name: "positive", + type: "CONDITIONING", + link: 647, + slot_index: 6, + config: {} + }, + { + name: "negative", + type: "CONDITIONING", + link: 646, + slot_index: 7, + config: {} + }, + { + name: "latent_image", + type: "LATENT", + link: 170, + config: {} + }, + { + name: "denoise", + type: "number", + link: 169, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/slider", + serialize: true + } + ], + outputs: [ + { + name: "LATENT", + type: "LATENT", + links: [ + 179 + ], + slot_index: 0 + } + ], + title: "KSampler", + properties: { + tags: [ + "hr" + ] + }, + color: "#432", + bgColor: "#653", + saveUserState: true + }, + { + id: 32, + type: "CLIPTextEncode", + pos: [ + -202.11029999999997, + 89.88860000000001 + ], + size: [ + 212.10067125600108, + 46 + ], + flags: {}, + order: 174, + mode: 0, + inputs: [ + { + name: "text", + type: "string", + link: 30, + config: {}, + serialize: true + }, + { + name: "clip", + type: "CLIP", + link: 584, + color_off: "orange", + color_on: "orange", + config: {} + } + ], + outputs: [ + { + name: "CONDITIONING", + type: "CONDITIONING", + links: [ + 610, + 648 + ], + color_off: "orange", + color_on: "orange", + slot_index: 0 + } + ], + title: "CLIPTextEncode", + properties: { + tags: [ + "txt2img", + "hr" + ] + }, + color: "#432", + bgColor: "#653", + saveUserState: true + }, + { + id: 34, + type: "CLIPTextEncode", + pos: [ + -208, + 179 + ], + size: [ + 216.60000000000002, + 46 + ], + flags: {}, + order: 179, + mode: 0, + inputs: [ + { + name: "text", + type: "string", + link: 31, + config: {}, + serialize: true + }, + { + name: "clip", + type: "CLIP", + link: 585, + color_off: "orange", + color_on: "orange", + config: {} + } + ], + outputs: [ + { + name: "CONDITIONING", + type: "CONDITIONING", + links: [ + 611, + 649 + ], + color_off: "orange", + color_on: "orange", + slot_index: 0 + } + ], + title: "CLIPTextEncode", + properties: { + tags: [ + "txt2img", + "hr" + ] + }, + color: "#432", + bgColor: "#653", + saveUserState: true + }, + { + id: 428, + type: "ui/checkbox", + pos: [ + 148.20931895085073, + -741.6210814162781 + ], + size: [ + 210, + 78 + ], + flags: {}, + order: 67, + mode: 0, + inputs: [ + { + name: "value", + type: "boolean", + link: null + }, + { + name: "store", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "value", + type: "boolean", + links: [ + 651, + 653 + ], + slot_index: 0 + }, + { + name: "changed", + type: -2, + links: [ + 650 + ], + shape: 1, + slot_index: 1 + } + ], + title: "UI.Checkbox", + properties: { + tags: [], + defaultValue: false + }, + widgets_values: [ + "false" + ], + color: "#223", + bgColor: "#335", + comfyValue: false, + shownOutputProperties: {}, + saveUserState: true + }, + { + id: 429, + type: "actions/set_node_mode", + pos: [ + 415, + -717 + ], + size: [ + 210, + 102 + ], + flags: {}, + order: 97, + mode: 0, + inputs: [ + { + name: "enabled", + type: "boolean", + link: 651 + }, + { + name: "set", + type: -1, + link: 650, + shape: 1 + } + ], + outputs: [], + title: "Comfy.SetNodeModeAction", + properties: { + targetTags: "controlNet", + enable: true, + tags: [] + }, + saveUserState: true + }, + { + id: 399, + type: "DiffControlNetLoader", + pos: [ + -85, + -566 + ], + size: [ + 236.8, + 46 + ], + flags: {}, + order: 218, + mode: 2, + inputs: [ + { + name: "model", + type: "MODEL", + link: 600, + slot_index: 0, + config: {} + }, + { + name: "control_net_name", + type: "string", + link: 596, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/combo", + serialize: true + } + ], + outputs: [ + { + name: "CONTROL_NET", + type: "CONTROL_NET", + links: [ + 607, + 609 + ], + slot_index: 0 + } + ], + title: "DiffControlNetLoader", + properties: { + tags: [ + "txt2img", + "hr", + "controlNet" + ] + }, + color: "#432", + bgColor: "#653", + saveUserState: true + }, + { + id: 404, + type: "LoadImage", + pos: [ + 460, + -512 + ], + size: [ + 140, + 46 + ], + flags: { + collapsed: false + }, + order: 91, + mode: 2, + inputs: [ + { + name: "image", + type: "string", + link: 626, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/combo", + serialize: true + } + ], + outputs: [ + { + name: "IMAGE", + type: "IMAGE", + links: [ + 606, + 608 + ], + slot_index: 0 + }, + { + name: "MASK", + type: "MASK", + links: null + } + ], + title: "LoadImage", + properties: { + tags: [ + "txt2img", + "hr", + "controlNet" + ] + }, + color: "#432", + bgColor: "#653", + saveUserState: true + }, + { + id: 423, + type: "basic/string", + pos: [ + 1217, + 1124 + ], + size: [ + 210, + 38 + ], + flags: { + collapsed: true + }, + order: 68, + mode: 0, + inputs: [], + outputs: [ + { + name: "string", + type: "string", + links: [ + 640 + ], + slot_index: 0 + } + ], + title: "Const String", + properties: { + value: "Upload an image to be used with ControlNet, or disable it first.", + tags: [] + } + }, + { + id: 410, + type: "logic/AND", + pos: [ + 746, + 1005 + ], + size: [ + 140, + 46 + ], + flags: { + collapsed: true + }, + order: 111, + mode: 0, + inputs: [ + { + name: "a", + type: "boolean", + link: 655, + slot_index: 0 + }, + { + name: "b", + type: "boolean", + link: 634, + slot_index: 1 + } + ], + outputs: [ + { + name: "out", + type: "boolean", + links: [ + 635 + ], + slot_index: 0 + } + ], + title: "AND", + properties: { + tags: [] + } + }, + { + id: 430, + type: "basic/CompareValues", + pos: [ + 613, + 984 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 98, + mode: 0, + inputs: [ + { + name: "A", + type: 0, + link: 654, + slot_index: 0 + }, + { + name: "B", + type: 0, + link: 653 + } + ], + outputs: [ + { + name: "true", + type: "boolean", + links: [ + 655 + ], + slot_index: 0 + }, + { + name: "false", + type: "boolean", + links: null + } + ], + title: "GenericCompare", + properties: { + A: true, + B: false, + OP: "==", + enabled: true, + tags: [] + } + }, + { + id: 420, + type: "events/branch", + pos: [ + 926, + 960 + ], + size: [ + 140, + 46 + ], + flags: {}, + order: 129, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 637, + shape: 1 + }, + { + name: "cond", + type: "boolean", + link: 636 + } + ], + outputs: [ + { + name: "true", + type: -2, + links: [ + 638, + 639 + ], + shape: 1, + slot_index: 0 + }, + { + name: "false", + type: -2, + links: [ + 641 + ], + shape: 1 + } + ], + title: "Branch", + properties: { + tags: [] + } + }, + { + id: 431, + type: "basic/boolean", + pos: [ + 528, + 983 + ], + size: [ + 210, + 38 + ], + flags: { + collapsed: true + }, + order: 69, + mode: 0, + inputs: [], + outputs: [ + { + name: "bool", + type: "boolean", + links: [ + 654 + ], + slot_index: 0 + } + ], + title: "Const Boolean", + properties: { + value: true, + tags: [] + } + }, + { + id: 104, + type: "ui/gallery", + pos: [ + 862.248693361997, + 640.4778575549986 + ], + size: [ + 210, + 142 + ], + flags: {}, + order: 136, + mode: 0, + inputs: [ + { + name: "images", + type: "OUTPUT", + link: null + }, + { + name: "store", + type: -1, + link: 243, + shape: 1 + }, + { + name: "clear", + type: -1, + link: 657, + shape: 1 + } + ], + outputs: [ + { + name: "selected_index", + type: "number", + links: [ + 168, + 184 + ], + slot_index: 0 + }, + { + name: "width", + type: "number", + links: [ + 356 + ], + slot_index: 1 + }, + { + name: "height", + type: "number", + links: [ + 357 + ], + slot_index: 2 + }, + { + name: "any_selected", + type: "boolean", + links: [ + 363 + ], + slot_index: 3 + } + ], + title: "UI.Gallery", + properties: { + tags: [], + defaultValue: null, + index: 0, + updateMode: "append", + values: [] + }, + widgets_values: [], + color: "#223", + bgColor: "#335", + comfyValue: [], + shownOutputProperties: {}, + saveUserState: false + }, + { + id: 155, + type: "events/branch", + pos: [ + 615, + 827 + ], + size: [ + 140, + 46 + ], + flags: { + collapsed: true + }, + order: 113, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 227, + shape: 1 + }, + { + name: "cond", + type: "boolean", + link: 228 + } + ], + outputs: [ + { + name: "true", + type: -2, + links: null, + shape: 1, + slot_index: 0 + }, + { + name: "false", + type: -2, + links: [ + 656 + ], + shape: 1, + slot_index: 1 + } + ], + title: "Branch", + properties: { + tags: [] + } + }, + { + id: 103, + type: "ui/gallery", + pos: [ + 2076, + 65 + ], + size: [ + 210, + 142 + ], + flags: {}, + order: 135, + mode: 0, + inputs: [ + { + name: "images", + type: "IMAGE", + link: null + }, + { + name: "store", + type: -1, + link: 240, + shape: 1 + }, + { + name: "clear", + type: -1, + link: 661, + shape: 1 + } + ], + outputs: [ + { + name: "selected_index", + type: "number", + links: null + }, + { + name: "width", + type: "number", + links: null + }, + { + name: "height", + type: "number", + links: null + }, + { + name: "any_selected", + type: "boolean", + links: null + } + ], + title: "UI.Gallery", + properties: { + tags: [], + defaultValue: null, + index: 0, + updateMode: "append", + values: [] + }, + widgets_values: [], + color: "#223", + bgColor: "#335", + comfyValue: [], + shownOutputProperties: {}, + saveUserState: false + }, + { + id: 156, + type: "events/branch", + pos: [ + 1835, + 348 + ], + size: [ + 140, + 46 + ], + flags: { + collapsed: true + }, + order: 112, + mode: 0, + inputs: [ + { + name: "in", + type: -1, + link: 230, + shape: 1 + }, + { + name: "cond", + type: "boolean", + link: 231 + } + ], + outputs: [ + { + name: "true", + type: -2, + links: null, + shape: 1 + }, + { + name: "false", + type: -2, + links: [ + 660 + ], + shape: 1, + slot_index: 1 + } + ], + title: "Branch", + properties: { + tags: [] + } + }, + { + id: 432, + type: "events/sequence", + pos: [ + 716, + 825 + ], + size: [ + 140, + 66 + ], + flags: { + collapsed: true + }, + order: 122, + mode: 0, + inputs: [ + { + name: "", + type: -1, + link: 656, + shape: 1 + }, + { + name: "", + type: -1, + link: 659, + shape: 1 + }, + { + name: "", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "", + type: -2, + links: [ + 657 + ], + shape: 1, + slot_index: 0 + }, + { + name: "", + type: -2, + links: [ + 658 + ], + shape: 1, + slot_index: 1 + }, + { + name: "", + type: -2, + links: null, + shape: 1 + } + ], + title: "Sequence", + properties: { + tags: [] + } + }, + { + id: 433, + type: "ui/button", + pos: [ + 705, + 874 + ], + size: [ + 210, + 78 + ], + flags: { + collapsed: true + }, + order: 70, + mode: 0, + inputs: [], + outputs: [ + { + name: "clicked", + type: -2, + links: [ + 659, + 662 + ], + shape: 1, + slot_index: 0 + }, + { + name: "isClicked", + type: "boolean", + links: null + } + ], + title: "UI.Button", + properties: { + tags: [], + defaultValue: false, + param: "bang" + }, + widgets_values: [ + "false" + ], + color: "#223", + bgColor: "#335", + comfyValue: false, + shownOutputProperties: {}, + saveUserState: true + }, + { + id: 434, + type: "events/sequence", + pos: [ + 1968, + 366 + ], + size: [ + 140, + 66 + ], + flags: { + collapsed: true + }, + order: 121, + mode: 0, + inputs: [ + { + name: "", + type: -1, + link: 660, + shape: 1 + }, + { + name: "", + type: -1, + link: 662, + shape: 1 + }, + { + name: "", + type: -1, + link: null, + shape: 1 + } + ], + outputs: [ + { + name: "", + type: -2, + links: [ + 661 + ], + shape: 1, + slot_index: 0 + }, + { + name: "", + type: -2, + links: null, + shape: 1 + } + ], + title: "Sequence", + properties: { + tags: [] + } + }, + { + id: 401, + type: "ControlNetApply", + pos: [ + 677, + -594 + ], + size: [ + 211.6, + 86 + ], + flags: {}, + order: 220, + mode: 2, + inputs: [ + { + name: "conditioning", + type: "CONDITIONING", + link: 610, + config: {} + }, + { + name: "control_net", + type: "CONTROL_NET", + link: 607, + config: {} + }, + { + name: "image", + type: "IMAGE", + link: 606, + config: {} + }, + { + name: "strength", + type: "number", + link: 603, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/slider", + serialize: true + } + ], + outputs: [ + { + name: "CONDITIONING", + type: "CONDITIONING", + links: [ + 642 + ], + slot_index: 0 + } + ], + title: "ControlNetApply", + properties: { + tags: [ + "txt2img", + "hr", + "controlNet" + ] + }, + color: "#432", + bgColor: "#653", + saveUserState: true + }, + { + id: 406, + type: "ControlNetApply", + pos: [ + 675, + -468 + ], + size: [ + 211.6, + 86 + ], + flags: {}, + order: 221, + mode: 2, + inputs: [ + { + name: "conditioning", + type: "CONDITIONING", + link: 611, + config: {} + }, + { + name: "control_net", + type: "CONTROL_NET", + link: 609, + config: {} + }, + { + name: "image", + type: "IMAGE", + link: 608, + config: {} + }, + { + name: "strength", + type: "number", + link: 616, + config: {}, + defaultWidgetNode: null, + widgetNodeType: "ui/slider", + serialize: true + } + ], + outputs: [ + { + name: "CONDITIONING", + type: "CONDITIONING", + links: [ + 644 + ], + slot_index: 0 + } + ], + title: "ControlNetApply", + properties: { + tags: [ + "txt2img", + "hr", + "controlNet" + ] + }, + color: "#432", + bgColor: "#653", + saveUserState: true + }, + { + id: 427, + type: "utils/pick_first", + pos: [ + 951, + -438 + ], + size: [ + 210, + 122 + ], + flags: { + collapsed: false + }, + order: 223, + mode: 0, + inputs: [ + { + name: "A", + type: "*", + link: 644 + }, + { + name: "B", + type: "*", + link: 649 + }, + { + name: "C", + type: "*", + link: null + } + ], + outputs: [ + { + name: "", + type: "CONDITIONING", + links: [ + 646, + 663 + ], + slot_index: 0 + } + ], + title: "Comfy.PickFirst", + properties: { + tags: [ + "txt2img", + "hr" + ], + mode: "dataNonNull" + }, + color: "#232", + bgColor: "#353", + saveUserState: true + }, + { + id: 424, + type: "utils/pick_first", + pos: [ + 943, + -599 + ], + size: [ + 210, + 122 + ], + flags: { + collapsed: false + }, + order: 222, + mode: 0, + inputs: [ + { + name: "A", + type: "*", + link: 642 + }, + { + name: "B", + type: "*", + link: 648 + }, + { + name: "C", + type: "*", + link: null + } + ], + outputs: [ + { + name: "", + type: "CONDITIONING", + links: [ + 647, + 664 + ], + slot_index: 0 + } + ], + title: "Comfy.PickFirst", + properties: { + tags: [ + "txt2img", + "hr" + ], + mode: "dataNonNull" + }, + color: "#232", + bgColor: "#353", + saveUserState: true } ], links: [ @@ -8301,22 +13236,6 @@ const defaultGraph: SerializedAppState = { 0, "string" ], - [ - 32, - 34, - 0, - 16, - 7, - "CONDITIONING" - ], - [ - 33, - 32, - 0, - 16, - 6, - "CONDITIONING" - ], [ 38, 39, @@ -8509,30 +13428,6 @@ const defaultGraph: SerializedAppState = { 1, "CLIP" ], - [ - 110, - 79, - 1, - 32, - 1, - "CLIP" - ], - [ - 111, - 79, - 1, - 34, - 1, - "CLIP" - ], - [ - 112, - 79, - 0, - 16, - 0, - "MODEL" - ], [ 126, 91, @@ -8613,14 +13508,6 @@ const defaultGraph: SerializedAppState = { 8, "LATENT" ], - [ - 172, - 34, - 0, - 119, - 7, - "CONDITIONING" - ], [ 173, 20, @@ -8669,22 +13556,6 @@ const defaultGraph: SerializedAppState = { 2, "number" ], - [ - 182, - 32, - 0, - 119, - 6, - "CONDITIONING" - ], - [ - 183, - 79, - 0, - 119, - 0, - "MODEL" - ], [ 184, 104, @@ -8829,22 +13700,6 @@ const defaultGraph: SerializedAppState = { 0, "*" ], - [ - 224, - 151, - 0, - 81, - 1, - -1 - ], - [ - 225, - 151, - 0, - 82, - 1, - -1 - ], [ 227, 149, @@ -8861,14 +13716,6 @@ const defaultGraph: SerializedAppState = { 1, "boolean" ], - [ - 229, - 155, - 1, - 104, - 2, - -1 - ], [ 230, 145, @@ -8885,22 +13732,6 @@ const defaultGraph: SerializedAppState = { 1, "boolean" ], - [ - 232, - 156, - 1, - 103, - 2, - -1 - ], - [ - 233, - 155, - 1, - 116, - 3, - -1 - ], [ 239, 100, @@ -9221,14 +14052,6 @@ const defaultGraph: SerializedAppState = { 1, "*" ], - [ - 317, - 199, - 0, - 161, - 0, - "string" - ], [ 320, 203, @@ -9293,22 +14116,6 @@ const defaultGraph: SerializedAppState = { 0, "number" ], - [ - 328, - 199, - 1, - 205, - 1, - "number" - ], - [ - 329, - 199, - 2, - 204, - 1, - "number" - ], [ 331, 210, @@ -9429,14 +14236,6 @@ const defaultGraph: SerializedAppState = { 0, "string" ], - [ - 368, - 233, - 0, - 127, - 0, - -1 - ], [ 369, 235, @@ -9461,14 +14260,6 @@ const defaultGraph: SerializedAppState = { 0, "boolean" ], - [ - 372, - 199, - 0, - 237, - 0, - "string" - ], [ 373, 238, @@ -9677,14 +14468,6 @@ const defaultGraph: SerializedAppState = { 0, "string" ], - [ - 441, - 233, - 0, - 279, - 1, - -1 - ], [ 442, 282, @@ -9716,6 +14499,1142 @@ const defaultGraph: SerializedAppState = { 284, 1, -1 + ], + [ + 487, + 313, + 0, + 315, + 1, + "boolean" + ], + [ + 488, + 151, + 0, + 316, + 0, + -1 + ], + [ + 489, + 316, + 0, + 82, + 1, + -1 + ], + [ + 490, + 82, + 1, + 315, + 0, + -1 + ], + [ + 491, + 315, + 0, + 317, + 0, + -1 + ], + [ + 492, + 151, + 0, + 318, + 0, + -1 + ], + [ + 493, + 317, + 0, + 318, + 1, + -1 + ], + [ + 494, + 318, + 0, + 81, + 1, + -1 + ], + [ + 495, + 313, + 0, + 319, + 1, + "boolean" + ], + [ + 496, + 81, + 1, + 319, + 0, + -1 + ], + [ + 497, + 319, + 0, + 320, + 0, + -1 + ], + [ + 498, + 320, + 0, + 316, + 1, + -1 + ], + [ + 503, + 336, + 0, + 335, + 2, + "string" + ], + [ + 504, + 337, + 0, + 335, + 3, + "number" + ], + [ + 505, + 338, + 0, + 335, + 4, + "number" + ], + [ + 506, + 346, + 0, + 337, + 1, + -1 + ], + [ + 507, + 344, + 0, + 338, + 1, + -1 + ], + [ + 508, + 341, + 0, + 340, + 0, + "*" + ], + [ + 509, + 339, + 0, + 340, + 1, + -1 + ], + [ + 510, + 338, + 1, + 343, + 0, + -1 + ], + [ + 512, + 340, + 0, + 344, + 0, + -1 + ], + [ + 513, + 348, + 0, + 344, + 1, + -1 + ], + [ + 514, + 343, + 0, + 345, + 0, + -1 + ], + [ + 515, + 340, + 0, + 346, + 0, + -1 + ], + [ + 516, + 345, + 0, + 346, + 1, + -1 + ], + [ + 517, + 337, + 1, + 347, + 0, + -1 + ], + [ + 519, + 347, + 0, + 348, + 0, + -1 + ], + [ + 520, + 350, + 0, + 349, + 2, + "string" + ], + [ + 521, + 351, + 0, + 349, + 3, + "number" + ], + [ + 522, + 352, + 0, + 349, + 4, + "number" + ], + [ + 523, + 360, + 0, + 351, + 1, + -1 + ], + [ + 524, + 358, + 0, + 352, + 1, + -1 + ], + [ + 525, + 355, + 0, + 354, + 0, + "*" + ], + [ + 526, + 353, + 0, + 354, + 1, + -1 + ], + [ + 527, + 352, + 1, + 357, + 0, + -1 + ], + [ + 529, + 354, + 0, + 358, + 0, + -1 + ], + [ + 530, + 362, + 0, + 358, + 1, + -1 + ], + [ + 531, + 357, + 0, + 359, + 0, + -1 + ], + [ + 532, + 354, + 0, + 360, + 0, + -1 + ], + [ + 533, + 359, + 0, + 360, + 1, + -1 + ], + [ + 534, + 351, + 1, + 361, + 0, + -1 + ], + [ + 536, + 361, + 0, + 362, + 0, + -1 + ], + [ + 537, + 364, + 0, + 363, + 2, + "string" + ], + [ + 538, + 365, + 0, + 363, + 3, + "number" + ], + [ + 539, + 366, + 0, + 363, + 4, + "number" + ], + [ + 540, + 374, + 0, + 365, + 1, + -1 + ], + [ + 541, + 372, + 0, + 366, + 1, + -1 + ], + [ + 542, + 369, + 0, + 368, + 0, + "*" + ], + [ + 543, + 367, + 0, + 368, + 1, + -1 + ], + [ + 544, + 366, + 1, + 371, + 0, + -1 + ], + [ + 546, + 368, + 0, + 372, + 0, + -1 + ], + [ + 547, + 376, + 0, + 372, + 1, + -1 + ], + [ + 548, + 371, + 0, + 373, + 0, + -1 + ], + [ + 549, + 368, + 0, + 374, + 0, + -1 + ], + [ + 550, + 373, + 0, + 374, + 1, + -1 + ], + [ + 551, + 365, + 1, + 375, + 0, + -1 + ], + [ + 553, + 375, + 0, + 376, + 0, + -1 + ], + [ + 554, + 378, + 0, + 377, + 2, + "string" + ], + [ + 555, + 379, + 0, + 377, + 3, + "number" + ], + [ + 556, + 380, + 0, + 377, + 4, + "number" + ], + [ + 557, + 388, + 0, + 379, + 1, + -1 + ], + [ + 558, + 386, + 0, + 380, + 1, + -1 + ], + [ + 559, + 383, + 0, + 382, + 0, + "*" + ], + [ + 560, + 381, + 0, + 382, + 1, + -1 + ], + [ + 561, + 380, + 1, + 385, + 0, + -1 + ], + [ + 563, + 382, + 0, + 386, + 0, + -1 + ], + [ + 564, + 390, + 0, + 386, + 1, + -1 + ], + [ + 565, + 385, + 0, + 387, + 0, + -1 + ], + [ + 566, + 382, + 0, + 388, + 0, + -1 + ], + [ + 567, + 387, + 0, + 388, + 1, + -1 + ], + [ + 568, + 379, + 1, + 389, + 0, + -1 + ], + [ + 570, + 389, + 0, + 390, + 0, + -1 + ], + [ + 571, + 313, + 0, + 343, + 1, + "boolean" + ], + [ + 572, + 313, + 0, + 347, + 1, + "boolean" + ], + [ + 573, + 313, + 0, + 357, + 1, + "boolean" + ], + [ + 574, + 313, + 0, + 361, + 1, + "boolean" + ], + [ + 575, + 313, + 0, + 371, + 1, + "boolean" + ], + [ + 576, + 313, + 0, + 375, + 1, + "boolean" + ], + [ + 577, + 313, + 0, + 385, + 1, + "boolean" + ], + [ + 578, + 313, + 0, + 389, + 1, + "boolean" + ], + [ + 579, + 79, + 1, + 335, + 1, + "CLIP" + ], + [ + 580, + 335, + 1, + 349, + 1, + "CLIP" + ], + [ + 581, + 349, + 1, + 363, + 1, + "CLIP" + ], + [ + 582, + 363, + 1, + 377, + 1, + "CLIP" + ], + [ + 583, + 377, + 1, + 391, + 0, + "*" + ], + [ + 584, + 391, + 0, + 32, + 1, + "CLIP" + ], + [ + 585, + 391, + 0, + 34, + 1, + "CLIP" + ], + [ + 587, + 363, + 0, + 377, + 0, + "MODEL" + ], + [ + 588, + 349, + 0, + 363, + 0, + "MODEL" + ], + [ + 589, + 335, + 0, + 349, + 0, + "MODEL" + ], + [ + 590, + 79, + 0, + 335, + 0, + "MODEL" + ], + [ + 596, + 400, + 0, + 399, + 1, + "string" + ], + [ + 599, + 377, + 0, + 392, + 0, + "*" + ], + [ + 600, + 392, + 0, + 399, + 0, + "MODEL" + ], + [ + 601, + 377, + 0, + 16, + 0, + "MODEL" + ], + [ + 602, + 377, + 0, + 119, + 0, + "MODEL" + ], + [ + 603, + 402, + 0, + 401, + 3, + "number" + ], + [ + 606, + 404, + 0, + 401, + 2, + "IMAGE" + ], + [ + 607, + 399, + 0, + 401, + 1, + "CONTROL_NET" + ], + [ + 608, + 404, + 0, + 406, + 2, + "IMAGE" + ], + [ + 609, + 399, + 0, + 406, + 1, + "CONTROL_NET" + ], + [ + 610, + 32, + 0, + 401, + 0, + "CONDITIONING" + ], + [ + 611, + 34, + 0, + 406, + 0, + "CONDITIONING" + ], + [ + 616, + 402, + 0, + 406, + 3, + "number" + ], + [ + 620, + 414, + 0, + 413, + 0, + "*" + ], + [ + 621, + 412, + 0, + 413, + 1, + -1 + ], + [ + 622, + 413, + 0, + 402, + 1, + -1 + ], + [ + 626, + 417, + 0, + 404, + 0, + "string" + ], + [ + 627, + 418, + 0, + 237, + 0, + "string" + ], + [ + 628, + 418, + 0, + 161, + 0, + "string" + ], + [ + 629, + 418, + 2, + 204, + 1, + "number" + ], + [ + 630, + 418, + 1, + 205, + 1, + "number" + ], + [ + 631, + 417, + 3, + 416, + 1, + "number" + ], + [ + 633, + 419, + 0, + 416, + 0, + "number" + ], + [ + 634, + 416, + 0, + 410, + 1, + "boolean" + ], + [ + 635, + 410, + 0, + 421, + 0, + "boolean" + ], + [ + 636, + 421, + 0, + 420, + 1, + "boolean" + ], + [ + 637, + 233, + 0, + 420, + 0, + -1 + ], + [ + 638, + 420, + 0, + 279, + 1, + -1 + ], + [ + 639, + 420, + 0, + 127, + 0, + -1 + ], + [ + 640, + 423, + 0, + 422, + 0, + "string" + ], + [ + 641, + 420, + 1, + 422, + 1, + -1 + ], + [ + 642, + 401, + 0, + 424, + 0, + "*" + ], + [ + 644, + 406, + 0, + 427, + 0, + "*" + ], + [ + 646, + 427, + 0, + 119, + 7, + "CONDITIONING" + ], + [ + 647, + 424, + 0, + 119, + 6, + "CONDITIONING" + ], + [ + 648, + 32, + 0, + 424, + 1, + "*" + ], + [ + 649, + 34, + 0, + 427, + 1, + "*" + ], + [ + 650, + 428, + 1, + 429, + 1, + -1 + ], + [ + 651, + 428, + 0, + 429, + 0, + "boolean" + ], + [ + 653, + 428, + 0, + 430, + 1, + "boolean" + ], + [ + 654, + 431, + 0, + 430, + 0, + "boolean" + ], + [ + 655, + 430, + 0, + 410, + 0, + "boolean" + ], + [ + 656, + 155, + 1, + 432, + 0, + -1 + ], + [ + 657, + 432, + 0, + 104, + 2, + -1 + ], + [ + 658, + 432, + 1, + 116, + 3, + -1 + ], + [ + 659, + 433, + 0, + 432, + 1, + -1 + ], + [ + 660, + 156, + 1, + 434, + 0, + -1 + ], + [ + 661, + 434, + 0, + 103, + 2, + -1 + ], + [ + 662, + 433, + 0, + 434, + 1, + -1 + ], + [ + 663, + 427, + 0, + 16, + 7, + "CONDITIONING" + ], + [ + 664, + 424, + 0, + 16, + 6, + "CONDITIONING" ] ], groups: [ @@ -9742,8 +15661,8 @@ const defaultGraph: SerializedAppState = { { title: "Seed Randomizer", bounding: [ - -1167, - 115, + -1170, + 181, 749, 301 ], @@ -9768,6 +15687,16 @@ const defaultGraph: SerializedAppState = { 745 ], color: "#b58b2a" + }, + { + title: "LoRA", + bounding: [ + -1600, + -693, + 1146, + 772 + ], + color: "#A88" } ], config: {}, @@ -9837,7 +15766,8 @@ const defaultGraph: SerializedAppState = { "16", "58", "79", - "41" + "41", + "202" ], parent: "0" }, @@ -10382,7 +16312,7 @@ const defaultGraph: SerializedAppState = { id: "47", attrs: { title: "", - hidden: true, + hidden: false, disabled: false, direction: "horizontal", classes: "", @@ -10532,7 +16462,7 @@ const defaultGraph: SerializedAppState = { id: "55", nodeId: 80, attrs: { - title: "LoRA Name", + title: "Model", hidden: false, disabled: false, direction: "horizontal", @@ -10551,7 +16481,7 @@ const defaultGraph: SerializedAppState = { } }, children: [], - parent: "131" + parent: "157" }, 56: { dragItem: { @@ -10578,7 +16508,7 @@ const defaultGraph: SerializedAppState = { } }, children: [], - parent: "59" + parent: "157" }, 57: { dragItem: { @@ -10605,7 +16535,7 @@ const defaultGraph: SerializedAppState = { } }, children: [], - parent: "59" + parent: "157" }, 58: { dragItem: { @@ -10621,36 +16551,6 @@ const defaultGraph: SerializedAppState = { nodeDisabledState: "disabled", variant: "accordion", containerVariant: "block", - openOnStartup: true, - buttonVariant: "primary", - buttonSize: "large", - tags: [], - flexGrow: 100, - height: "auto", - showTitle: true, - blockVariant: "block" - } - }, - children: [ - "131", - "59" - ], - parent: "1" - }, - 59: { - dragItem: { - type: "container", - id: "59", - attrs: { - title: "", - hidden: false, - disabled: false, - direction: "horizontal", - classes: "", - style: "", - nodeDisabledState: "disabled", - variant: "block", - containerVariant: "block", openOnStartup: false, buttonVariant: "primary", buttonSize: "large", @@ -10662,11 +16562,14 @@ const defaultGraph: SerializedAppState = { } }, children: [ - "56", - "57", - "92" + "162", + "157", + "188", + "189", + "190", + "191" ], - parent: "58" + parent: "1" }, 64: { dragItem: { @@ -10930,7 +16833,7 @@ const defaultGraph: SerializedAppState = { nodeDisabledState: "disabled", variant: "accordion", containerVariant: "block", - openOnStartup: true, + openOnStartup: false, buttonVariant: "primary", buttonSize: "large", tags: [], @@ -11198,7 +17101,7 @@ const defaultGraph: SerializedAppState = { } }, children: [], - parent: "59" + parent: "157" }, 93: { dragItem: { @@ -11250,7 +17153,8 @@ const defaultGraph: SerializedAppState = { }, children: [ "34", - "93" + "93", + "213" ], parent: "95" }, @@ -11447,7 +17351,7 @@ const defaultGraph: SerializedAppState = { id: "108", attrs: { title: "", - hidden: false, + hidden: true, disabled: false, direction: "horizontal", classes: "", @@ -11477,7 +17381,7 @@ const defaultGraph: SerializedAppState = { id: "109", attrs: { title: "img2img", - hidden: false, + hidden: true, disabled: false, direction: "vertical", classes: "", @@ -11496,7 +17400,7 @@ const defaultGraph: SerializedAppState = { } }, children: [ - "117", + "211", "108" ], parent: "33" @@ -11583,33 +17487,6 @@ const defaultGraph: SerializedAppState = { ], parent: "104" }, - 117: { - dragItem: { - type: "container", - id: "117", - attrs: { - title: "", - hidden: false, - disabled: false, - direction: "vertical", - classes: "", - style: "", - nodeDisabledState: "disabled", - variant: "gallery", - containerVariant: "hidden", - openOnStartup: false, - buttonVariant: "primary", - buttonSize: "large", - tags: [ - "i2i" - ] - } - }, - children: [ - "121" - ], - parent: "109" - }, 118: { dragItem: { type: "widget", @@ -11682,37 +17559,13 @@ const defaultGraph: SerializedAppState = { children: [], parent: "122" }, - 121: { - dragItem: { - type: "widget", - id: "121", - nodeId: 199, - attrs: { - title: "Image", - hidden: false, - disabled: false, - direction: "vertical", - classes: "", - style: "", - nodeDisabledState: "hidden", - variant: "gallery", - containerVariant: "block", - openOnStartup: false, - buttonVariant: "primary", - buttonSize: "large", - tags: [] - } - }, - children: [], - parent: "117" - }, 122: { dragItem: { type: "container", id: "122", attrs: { title: "", - hidden: false, + hidden: true, disabled: false, direction: "horizontal", classes: "", @@ -11814,7 +17667,7 @@ const defaultGraph: SerializedAppState = { id: "127", attrs: { title: "", - hidden: false, + hidden: true, disabled: false, direction: "horizontal", classes: "", @@ -11887,12 +17740,12 @@ const defaultGraph: SerializedAppState = { ], parent: "33" }, - 131: { + 157: { dragItem: { type: "container", - id: "131", + id: "157", attrs: { - title: "", + title: "LoRA 1", hidden: false, disabled: false, direction: "horizontal", @@ -11900,6 +17753,35 @@ const defaultGraph: SerializedAppState = { style: "", nodeDisabledState: "disabled", variant: "gallery", + containerVariant: "hidden", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [ + "55", + "56", + "57", + "92" + ], + parent: "58" + }, + 162: { + dragItem: { + type: "widget", + id: "162", + nodeId: 313, + attrs: { + title: "Link Weights", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", containerVariant: "block", openOnStartup: false, buttonVariant: "primary", @@ -11907,24 +17789,823 @@ const defaultGraph: SerializedAppState = { tags: [] } }, + children: [], + parent: "58" + }, + 168: { + dragItem: { + type: "widget", + id: "168", + nodeId: 336, + attrs: { + title: "Model", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [], + parent: "188" + }, + 169: { + dragItem: { + type: "widget", + id: "169", + nodeId: 337, + attrs: { + title: "UNet", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [], + parent: "188" + }, + 170: { + dragItem: { + type: "widget", + id: "170", + nodeId: 338, + attrs: { + title: "TEnc", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [], + parent: "188" + }, + 171: { + dragItem: { + type: "widget", + id: "171", + nodeId: 339, + attrs: { + title: "🗙", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "flex-grow: 1;", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "secondary", + buttonSize: "small", + tags: [] + } + }, + children: [], + parent: "188" + }, + 173: { + dragItem: { + type: "widget", + id: "173", + nodeId: 350, + attrs: { + title: "Model", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [], + parent: "189" + }, + 174: { + dragItem: { + type: "widget", + id: "174", + nodeId: 351, + attrs: { + title: "UNet", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [], + parent: "189" + }, + 175: { + dragItem: { + type: "widget", + id: "175", + nodeId: 352, + attrs: { + title: "TEnc", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [], + parent: "189" + }, + 176: { + dragItem: { + type: "widget", + id: "176", + nodeId: 353, + attrs: { + title: "🗙", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "flex-grow: 1;", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "secondary", + buttonSize: "small", + tags: [] + } + }, + children: [], + parent: "189" + }, + 178: { + dragItem: { + type: "widget", + id: "178", + nodeId: 364, + attrs: { + title: "Model", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [], + parent: "190" + }, + 179: { + dragItem: { + type: "widget", + id: "179", + nodeId: 365, + attrs: { + title: "UNet", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [], + parent: "190" + }, + 180: { + dragItem: { + type: "widget", + id: "180", + nodeId: 366, + attrs: { + title: "TEnc", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [], + parent: "190" + }, + 181: { + dragItem: { + type: "widget", + id: "181", + nodeId: 367, + attrs: { + title: "🗙", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "flex-grow: 1;", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "secondary", + buttonSize: "small", + tags: [] + } + }, + children: [], + parent: "190" + }, + 183: { + dragItem: { + type: "widget", + id: "183", + nodeId: 378, + attrs: { + title: "Model", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [], + parent: "191" + }, + 184: { + dragItem: { + type: "widget", + id: "184", + nodeId: 379, + attrs: { + title: "UNet", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [], + parent: "191" + }, + 185: { + dragItem: { + type: "widget", + id: "185", + nodeId: 380, + attrs: { + title: "TEnc", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [], + parent: "191" + }, + 186: { + dragItem: { + type: "widget", + id: "186", + nodeId: 381, + attrs: { + title: "🗙", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "flex-grow: 1;", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "secondary", + buttonSize: "small", + tags: [] + } + }, + children: [], + parent: "191" + }, + 188: { + dragItem: { + type: "container", + id: "188", + attrs: { + title: "LoRA 2", + hidden: false, + disabled: false, + direction: "horizontal", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "hidden", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, children: [ - "55" + "168", + "169", + "170", + "171" ], parent: "58" + }, + 189: { + dragItem: { + type: "container", + id: "189", + attrs: { + title: "LoRA 3", + hidden: false, + disabled: false, + direction: "horizontal", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "hidden", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [ + "173", + "174", + "175", + "176" + ], + parent: "58" + }, + 190: { + dragItem: { + type: "container", + id: "190", + attrs: { + title: "LoRA 4", + hidden: false, + disabled: false, + direction: "horizontal", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "hidden", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [ + "178", + "179", + "180", + "181" + ], + parent: "58" + }, + 191: { + dragItem: { + type: "container", + id: "191", + attrs: { + title: "LoRA 5", + hidden: false, + disabled: false, + direction: "horizontal", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "hidden", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [ + "183", + "184", + "185", + "186" + ], + parent: "58" + }, + 198: { + dragItem: { + type: "widget", + id: "198", + nodeId: 400, + attrs: { + title: "Model", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "hidden", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [], + parent: "199" + }, + 199: { + dragItem: { + type: "container", + id: "199", + attrs: { + title: "", + hidden: true, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "hidden", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [ + "controlNet" + ] + } + }, + children: [ + "198" + ], + parent: "202" + }, + 200: { + dragItem: { + type: "widget", + id: "200", + nodeId: 402, + attrs: { + title: "Strength", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "hidden", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [], + parent: "201" + }, + 201: { + dragItem: { + type: "container", + id: "201", + attrs: { + title: "", + hidden: true, + disabled: false, + direction: "horizontal", + classes: "", + style: "controlNet", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "hidden", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [ + "controlNet" + ] + } + }, + children: [ + "200", + "207" + ], + parent: "202" + }, + 202: { + dragItem: { + type: "container", + id: "202", + attrs: { + title: "ControlNet", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "accordion", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [ + "212", + "208", + "199", + "201" + ], + parent: "1" + }, + 207: { + dragItem: { + type: "widget", + id: "207", + nodeId: 412, + attrs: { + title: "🗙", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "flex-grow: 1", + nodeDisabledState: "hidden", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "secondary", + buttonSize: "small", + tags: [] + } + }, + children: [], + parent: "201" + }, + 208: { + dragItem: { + type: "container", + id: "208", + attrs: { + title: "", + hidden: true, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [ + "controlNet" + ] + } + }, + children: [ + "209" + ], + parent: "202" + }, + 209: { + dragItem: { + type: "widget", + id: "209", + nodeId: 417, + attrs: { + title: "ControlNet Image", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "hidden", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [], + parent: "208" + }, + 210: { + dragItem: { + type: "widget", + id: "210", + nodeId: 418, + attrs: { + title: "Image", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "hidden", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [], + parent: "211" + }, + 211: { + dragItem: { + type: "container", + id: "211", + attrs: { + title: "", + hidden: true, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "hidden", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [ + "i2i" + ] + } + }, + children: [ + "210" + ], + parent: "109" + }, + 212: { + dragItem: { + type: "widget", + id: "212", + nodeId: 428, + attrs: { + title: "Enable", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "primary", + buttonSize: "large", + tags: [] + } + }, + children: [], + parent: "202" + }, + 213: { + dragItem: { + type: "widget", + id: "213", + nodeId: 433, + attrs: { + title: "🗑️", + hidden: false, + disabled: false, + direction: "vertical", + classes: "", + style: "flex-grow: 20;", + nodeDisabledState: "disabled", + variant: "gallery", + containerVariant: "block", + openOnStartup: false, + buttonVariant: "secondary", + buttonSize: "small", + tags: [] + } + }, + children: [], + parent: "94" } }, - currentId: 132, + currentId: 214, attrs: { - queuePromptButtonName: "Queue img2img", + queuePromptButtonName: "Queue txt2img", defaultSubgraph: "txt2img" } }, canvas: { offset: [ - 37.53040750483387, - -130.58436749955789 + 272.9053569395375, + 537.7665125964128 ], - scale: 0.8264462809917354 + scale: 0.8264462809917358 } } diff --git a/src/lib/nodes/ComfyGraphNode.ts b/src/lib/nodes/ComfyGraphNode.ts index 59cbda3..9d8924b 100644 --- a/src/lib/nodes/ComfyGraphNode.ts +++ b/src/lib/nodes/ComfyGraphNode.ts @@ -7,6 +7,7 @@ import type { ComfyWidgetNode } from "./ComfyWidgetNodes"; import type IComfyInputSlot from "$lib/IComfyInputSlot"; import uiState from "$lib/stores/uiState"; import { get } from "svelte/store"; +import configState from "$lib/stores/configState"; export type DefaultWidgetSpec = { defaultWidgetNode: new (name?: string) => ComfyWidgetNode, @@ -291,7 +292,7 @@ export default class ComfyGraphNode extends LGraphNode { } (o as any).saveUserState = this.saveUserState - if (!this.saveUserState) { + if (!this.saveUserState && (!get(uiState).isSavingToLocalStorage || get(configState).alwaysStripUserState)) { this.stripUserState(o) console.warn("[ComfyGraphNode] stripUserState", this, o) } diff --git a/src/lib/stores/configState.ts b/src/lib/stores/configState.ts new file mode 100644 index 0000000..ce7ae6b --- /dev/null +++ b/src/lib/stores/configState.ts @@ -0,0 +1,27 @@ +import { debounce } from '$lib/utils'; +import { get, writable } from 'svelte/store'; +import type { Writable } from 'svelte/store'; + +export type ConfigState = { + /** Strip user state even if saving to local storage */ + alwaysStripUserState: boolean, + + /** When saving, always prompt for a name to save the workflow as */ + promptForWorkflowName: boolean, +} + +type ConfigStateOps = { +} + +export type WritableConfigStateStore = Writable & ConfigStateOps; +const store: Writable = writable( + { + alwaysStripUserState: false, + promptForWorkflowName: false + }) + +const configStateStore: WritableConfigStateStore = +{ + ...store +} +export default configStateStore; diff --git a/src/lib/stores/uiState.ts b/src/lib/stores/uiState.ts index 8e11775..332fb10 100644 --- a/src/lib/stores/uiState.ts +++ b/src/lib/stores/uiState.ts @@ -9,6 +9,8 @@ export type UIState = { autoAddUI: boolean, uiUnlocked: boolean, uiEditMode: UIEditMode, + + isSavingToLocalStorage: boolean } export type WritableUIStateStore = Writable; @@ -18,7 +20,9 @@ const store: WritableUIStateStore = writable( nodesLocked: false, autoAddUI: true, uiUnlocked: false, - uiEditMode: "widgets" + uiEditMode: "widgets", + + isSavingToLocalStorage: false }) const uiStateStore: WritableUIStateStore = diff --git a/src/lib/widgets/ImageUploadWidget.svelte b/src/lib/widgets/ImageUploadWidget.svelte index a7886b5..9b78a13 100644 --- a/src/lib/widgets/ImageUploadWidget.svelte +++ b/src/lib/widgets/ImageUploadWidget.svelte @@ -52,16 +52,13 @@ } function onChange() { - console.warn("CHANGED", _value) $nodeValue = _value || [] } function onUpload() { - console.warn("UPLOADED", _value) } function onClear() { - console.warn("CLEARED", _value) } interface GradioUploadResponse { @@ -70,7 +67,7 @@ } async function upload_files(root: string, files: Array): Promise { - console.warn("UPLOADILFES", root, files); + console.debug("UPLOADILFES", root, files); const url = `http://${location.hostname}:8188` // TODO make configurable @@ -113,7 +110,6 @@ pending_upload = true; old_value = _value; - console.warn(_value) if (_value == null) _value = [] @@ -182,7 +178,6 @@ function getImageUrl(image: GradioFileData) { const baseUrl = `http://${location.hostname}:8188` // TODO make configurable - console.warn(image) const params = new URLSearchParams({ filename: image.name, subfolder: "", type: "input" }) return `${baseUrl}/view?${params}` } diff --git a/src/mobile/GenToolbar.svelte b/src/mobile/GenToolbar.svelte index 36647af..d7245d9 100644 --- a/src/mobile/GenToolbar.svelte +++ b/src/mobile/GenToolbar.svelte @@ -53,7 +53,6 @@ navigator.vibrate(20) app.saveStateToLocalStorage(); - notify("Saved to local storage.") }