From 2dde79f64095b6fbf5229a4611366a078f1776c1 Mon Sep 17 00:00:00 2001 From: XchanBik Date: Sat, 10 May 2025 12:22:46 +0200 Subject: [PATCH] Create nodes.py --- nodes.py | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 nodes.py diff --git a/nodes.py b/nodes.py new file mode 100644 index 0000000..822bde7 --- /dev/null +++ b/nodes.py @@ -0,0 +1,77 @@ + +### Contents of `bridge_nodes.py`: + +You can include the same Python code you mentioned: + +```python +# bridge_nodes.py + +bridge_store = {} + +class BridgeStoreNode: + @classmethod + def INPUT_TYPES(cls): + return { + "required": { + "data": ("ANY",), + "bridge_id": ("STRING", {"default": "my_key"}) + } + } + + RETURN_TYPES = () + FUNCTION = "store" + + CATEGORY = "bridge" + + def store(self, data, bridge_id): + # Store both data and its type for later use + bridge_store[bridge_id] = { + "data": data, + "type": type(data).__name__ + } + return () + + +class BridgeLoadNode: + @classmethod + def INPUT_TYPES(cls): + # Gather current keys in the store for dropdown UI + key_list = list(bridge_store.keys()) + if not key_list: + key_list = [""] + + return { + "required": { + "bridge_id": (key_list,) + } + } + + # Dynamically determine output type + def get_return_types(self, bridge_id=None): + if bridge_id in bridge_store: + type_name = bridge_store[bridge_id]["type"] + # Fallback: return as ANY if unknown + return (type_name,) if type_name in {"LATENT", "CONDITIONING", "IMAGE", "STRING"} else ("ANY",) + return ("ANY",) + + RETURN_TYPES = ("ANY",) # Default/fallback + RETURN_NAMES = ("data",) + FUNCTION = "load" + + CATEGORY = "bridge" + + def load(self, bridge_id): + if bridge_id not in bridge_store: + raise ValueError(f"[BridgeLoadNode] ID '{bridge_id}' not found.") + return (bridge_store[bridge_id]["data"],) + + +NODE_CLASS_MAPPINGS = { + "BridgeStore": BridgeStoreNode, + "BridgeLoad": BridgeLoadNode, +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "BridgeStore": "🔗 Bridge Store (ID)", + "BridgeLoad": "🔗 Bridge Load (Selector)", +}