diff --git a/src/lib/components/ComfyApp.svelte b/src/lib/components/ComfyApp.svelte index d0bbafb..c43abec 100644 --- a/src/lib/components/ComfyApp.svelte +++ b/src/lib/components/ComfyApp.svelte @@ -5,6 +5,7 @@ import { Backpack, Gear } from 'radix-icons-svelte'; import ComfyUIPane from "./ComfyUIPane.svelte"; import ComfyApp from "./ComfyApp"; + import widgetState from "$lib/stores/widgetState"; import { LGraphNode } from "litegraph.js"; @@ -36,21 +37,10 @@ onMount(async () => { app = new ComfyApp(); - app.eventBus.on("nodeAdded", (node: LGraphNode) => { - uiPane.addNodeUI(node); - }); - - app.eventBus.on("nodeRemoved", (node: LGraphNode) => { - uiPane.removeNodeUI(node); - }); - - app.eventBus.on("configured", (graph: LGraph) => { - uiPane.configureFinished(graph); - }); - - app.eventBus.on("cleared", () => { - uiPane.clear(); - }); + app.eventBus.on("nodeAdded", widgetState.nodeAdded); + app.eventBus.on("nodeRemoved", widgetState.nodeRemoved); + app.eventBus.on("configured", widgetState.configureFinished); + app.eventBus.on("cleared", widgetState.clear); await app.setup(); refreshView(); diff --git a/src/lib/components/ComfyPane.svelte b/src/lib/components/ComfyPane.svelte index 07409d7..7f45d4e 100644 --- a/src/lib/components/ComfyPane.svelte +++ b/src/lib/components/ComfyPane.svelte @@ -1,13 +1,11 @@ @@ -40,56 +44,59 @@ {#each dragItems as dragItem(dragItem.id)} {@const node = dragItem.node} {@const id = node.id} - -
- - {#each items[id] as item, i} - {#if item.widget.type == "combo"} -
- -
- {:else if item.widget.type == "number"} -
- -
- {:else if item.widget.type == "text"} -
- -
- {/if} - {/each} - +
+ +
+ + {#each $widgetState[id] as item, i} + {#if item.widget.type == "combo"} +
+ +
+ {:else if item.widget.type == "number"} +
+ +
+ {:else if item.widget.type == "text"} +
+ +
+ {/if} + {/each} + +
{/each}
diff --git a/src/lib/components/ComfyUIPane.svelte b/src/lib/components/ComfyUIPane.svelte index 37f2197..b984d85 100644 --- a/src/lib/components/ComfyUIPane.svelte +++ b/src/lib/components/ComfyUIPane.svelte @@ -3,86 +3,26 @@ import type { IWidget } from "litegraph.js"; import ComfyApp from "./ComfyApp"; import ComfyPane from "./ComfyPane.svelte"; + import widgetState from "$lib/stores/widgetState"; export let app: ComfyApp; + let dragConfigured: boolean = false; + export let dragItemss: any[][] = [] - let dragItems = []; + export let totalId = 0; - export function clear() { - nodes = {}; - items = {}; - state = {}; - dragItems = [] + $: if(app && !dragConfigured) { + dragConfigured = true; + app.eventBus.on("nodeAdded", (node: LGraphNode) => { + dragItemss[0].push({ id: totalId++, node: node }); + }); } - - export function addNodeUI(node: LGraphNode) { - if (node.widgets) { - for (const [i, widget] of node.widgets.entries()) { - if (!nodes[node.id]) { - dragItems.push({ id: node.id, node: node }) - } - nodes[node.id] = node; - - node.onPropertyChanged = (k, v) => { - console.log("PROPCHANGE", k, v) - }; - - if (!items[node.id]) { - items[node.id] = [] - } - items[node.id].push({ node, widget }) - - if (!state[node.id]) { - state[node.id] = [] - } - state[node.id].push(widget.value); - } - } - - nodes = nodes; - items = items; - state = state; - } - - export function removeNodeUI(node: LGraphNode) { - delete nodes[node.id] - delete state[node.id] - delete items[node.id] - - dragItems = Array.from(dragItems.filter(e => e.id != node.id)); - console.log("REM", node.id, dragItems) - - nodes = nodes; - items = items; - state = state; - } - - export function configureFinished(graph: LGraph) { - for (const node of graph.computeExecutionOrder(false, null)) { - if (node.widgets_values) { - for (const [j, value] of node.widgets_values.entries()) { - state[node.id][j] = value; - } - } - } - - nodes = nodes; - state = state; - } - - export function getState() { - return state; - } - - let nodes: Record = {}; - let items: Record = {}; - let state: Record = {};
- - - + + +