import json class AnyType(str): def __ne__(self, __value: object) -> bool: return False any_typ = AnyType("*") class VixUiCheckbox: @classmethod def INPUT_TYPES(cls): return { "required": { "state": ("BOOLEAN", {"default": False}), "display_name": ("STRING", {"default": "Display Name"}), "optional": ("BOOLEAN", {"default": True}), "advanced": ("BOOLEAN", {"default": True}), "order": ("INT", {"default": 99}), "custom_id": ("STRING", {"default": ""}), }, } RETURN_TYPES = ("BOOLEAN", "INT") RETURN_NAMES = ("bool", "int") CATEGORY = "Visionatrix/UI" FUNCTION = "do_it" @classmethod def do_it(cls, state, **kwargs) -> tuple: return state, int(state) class VixUiRangeFloat: @classmethod def INPUT_TYPES(cls): return { "required": { "value": ("FLOAT", {"default": 4.0}), "display_name": ("STRING", {"default": "Display Range"}), "optional": ("BOOLEAN", {"default": True}), "advanced": ("BOOLEAN", {"default": True}), "min": ("FLOAT", {"default": 1.0}), "max": ("FLOAT", {"default": 9.0}), "step": ("FLOAT", {"default": 0.1}), "order": ("INT", {"default": 99}), "custom_id": ("STRING", {"default": ""}), }, } FUNCTION = "do_it" CATEGORY = "Visionatrix/UI" RETURN_TYPES = ("FLOAT", ) @classmethod def do_it(cls, value, **kwargs) -> tuple: return (value, ) class VixUiRangeScaleFloat: @classmethod def INPUT_TYPES(cls): return { "required": { "value": ("FLOAT", {"default": 4.0}), "display_name": ("STRING", {"default": "Image Size Factor"}), "optional": ("BOOLEAN", {"default": True}), "advanced": ("BOOLEAN", {"default": True}), "min": ("FLOAT", {"default": 1.0}), "max": ("FLOAT", {"default": 9.0}), "step": ("FLOAT", {"default": 0.1}), "order": ("INT", {"default": 99}), "custom_id": ("STRING", {"default": ""}), }, } FUNCTION = "do_it" CATEGORY = "Visionatrix/UI" RETURN_TYPES = ("FLOAT", ) @classmethod def do_it(cls, value, **kwargs) -> tuple: return (value, ) class VixUiList: @classmethod def INPUT_TYPES(cls): return { "required": { "default_value": ("STRING", {}), "possible_values": ("STRING", {"default": "[]", "multiline": True}), "display_name": ("STRING", {"default": "Dropdown list"}), "optional": ("BOOLEAN", {"default": True}), "advanced": ("BOOLEAN", {"default": True}), "order": ("INT", {"default": 99}), "custom_id": ("STRING", {"default": ""}), }, } RETURN_TYPES = (any_typ,) FUNCTION = "do_it" CATEGORY = "Visionatrix/UI" @classmethod def do_it(cls, default_value, **kwargs) -> tuple: possible_values = json.loads(kwargs["possible_values"]) if isinstance(possible_values, dict) and default_value in possible_values: return (possible_values[default_value], ) return (default_value, ) class VixUiPrompt: @classmethod def INPUT_TYPES(cls): return { "required": { "text": ("STRING", {"default": "", "multiline": True, "dynamicPrompts": True}), "display_name": ("STRING", {"default": "Prompt"}), "optional": ("BOOLEAN", {"default": False}), "advanced": ("BOOLEAN", {"default": False}), "order": ("INT", {"default": 10}), "custom_id": ("STRING", {"default": ""}), }, } RETURN_TYPES = ("STRING",) FUNCTION = "do_it" CATEGORY = "Visionatrix/UI" @classmethod def do_it(cls, text, **kwargs) -> tuple: return (text, ) class VixUiCheckboxLogic: @classmethod def INPUT_TYPES(cls): return { "required": { "state": ("BOOLEAN", {"default": False}), "display_name": ("STRING", {"default": "Display Name"}), "optional": ("BOOLEAN", {"default": True}), "advanced": ("BOOLEAN", {"default": True}), "order": ("INT", {"default": 99}), "custom_id": ("STRING", {"default": ""}), }, "optional": { "input_off_state": (any_typ,), "input_on_state": (any_typ,), }, } RETURN_TYPES = (any_typ,) RETURN_NAMES = ("output_to",) CATEGORY = "Visionatrix/UI" FUNCTION = "do_it" @classmethod def do_it(cls, state, **kwargs) -> tuple: if state is False: return (kwargs["input_off_state"],) return (kwargs["input_on_state"],) class VixUiWorkflowMetadata: @classmethod def INPUT_TYPES(cls): return { "required": { "name": ("STRING", {}), "display_name": ("STRING", {}), "description": ("STRING", {"default": ""}), "author": ("STRING", {}), "homepage": ("STRING", {"default": ""}), "documentation": ("STRING", {"default": ""}), "license": ("STRING", {"default": ""}), "tags": ("STRING", {"default": "[\"general\"]", "multiline": True}), "version": ("STRING", {"default": "1.0.0"}) } } RETURN_TYPES = ("STRING",) FUNCTION = "do_it" CATEGORY = "Visionatrix/UI" @classmethod def do_it(cls, text, **kwargs) -> tuple: return (text, ) NODE_CLASS_MAPPINGS = { "VixUiCheckbox": VixUiCheckbox, "VixUiRangeFloat": VixUiRangeFloat, "VixUiRangeScaleFloat": VixUiRangeScaleFloat, "VixUiList": VixUiList, "VixUiPrompt": VixUiPrompt, "VixUiCheckboxLogic": VixUiCheckboxLogic, "VixUiWorkflowMetadata": VixUiWorkflowMetadata, } NODE_DISPLAY_NAME_MAPPINGS = { "VixUiCheckbox": "VixUI-Checkbox", "VixUiRangeFloat": "VixUI-RangeFloat", "VixUiRangeScaleFloat": "VixUI-RangeScaleFloat", "VixUiList": "VixUI-List", "VixUiPrompt": "VixUI-Prompt", "VixUiCheckboxLogic": "VixUI-CheckboxLogic", "VixUiWorkflowMetadata": "VixUI-WorkflowMetadata", }