diff --git a/.github/instructions/v3.example.instructions.md b/.github/instructions/v3.example.instructions.md new file mode 100644 index 0000000..1f637ae --- /dev/null +++ b/.github/instructions/v3.example.instructions.md @@ -0,0 +1,605 @@ +--- +applyTo: "**/*.py" +description: "ComfyUI v3 Node Examples" +--- + +# ComfyUI v3 Node Examples + +Real-world examples of v3 nodes demonstrating various features and patterns. + +## Basic Examples + +### Simple Image Processor + +```python +from comfy_api.latest import io, ui +import torch + +class ImageInvertV3(io.ComfyNode): + """Simple node that inverts image colors.""" + + @classmethod + def define_schema(cls): + return io.Schema( + node_id="ImageInvert_v3", + display_name="Invert Image", + category="image/filters", + description="Inverts the colors of an image", + inputs=[ + io.Image.Input("image", tooltip="Image to invert") + ], + outputs=[ + io.Image.Output("inverted", tooltip="Inverted image") + ] + ) + + @classmethod + def execute(cls, image): + # Invert: 1.0 - image + inverted = 1.0 - image + return io.NodeOutput(inverted, ui=ui.PreviewImage(inverted)) +``` + +### Math Operations + +```python +class MathOperationV3(io.ComfyNode): + """Performs math operations on two values.""" + + @classmethod + def define_schema(cls): + return io.Schema( + node_id="MathOperation_v3", + display_name="Math Operation", + category="utils/math", + inputs=[ + io.Float.Input("a", default=0.0), + io.Float.Input("b", default=0.0), + io.Combo.Input("operation", + options=["add", "subtract", "multiply", "divide", "power"], + default="add" + ) + ], + outputs=[ + io.Float.Output("result") + ] + ) + + @classmethod + def execute(cls, a, b, operation): + operations = { + "add": a + b, + "subtract": a - b, + "multiply": a * b, + "divide": a / b if b != 0 else 0, + "power": a ** b + } + result = operations[operation] + return io.NodeOutput(result) +``` + +## Async Examples + +### API Integration + +```python +import aiohttp + +class TextGeneratorV3(io.ComfyNode): + """Generates text using external API.""" + + @classmethod + def define_schema(cls): + return io.Schema( + node_id="TextGenerator_v3", + display_name="AI Text Generator", + category="text/generation", + inputs=[ + io.String.Input("prompt", multiline=True), + io.String.Input("api_url", default="http://localhost:11434/api/generate"), + io.String.Input("model", default="llama2"), + io.Float.Input("temperature", default=0.7, min=0.0, max=2.0) + ], + outputs=[ + io.String.Output("generated_text") + ] + ) + + @classmethod + async def execute(cls, prompt, api_url, model, temperature): + async with aiohttp.ClientSession() as session: + payload = { + "model": model, + "prompt": prompt, + "temperature": temperature, + "stream": False + } + + async with session.post(api_url, json=payload) as response: + if response.status == 200: + data = await response.json() + text = data.get("response", "") + return io.NodeOutput(text) + else: + raise RuntimeError(f"API error: {response.status}") +``` + +### Batch Processing with Progress + +```python +from comfy.utils import ProgressBar +import asyncio + +class BatchImageProcessorV3(io.ComfyNode): + """Processes images in batch with progress tracking.""" + + @classmethod + def define_schema(cls): + return io.Schema( + node_id="BatchImageProcessor_v3", + display_name="Batch Image Processor", + category="image/batch", + inputs=[ + io.Image.Input("images"), + io.Float.Input("process_time", default=0.1, min=0.01, max=1.0, + tooltip="Simulated processing time per image") + ], + outputs=[ + io.Image.Output("processed") + ], + hidden=[io.Hidden.unique_id] + ) + + @classmethod + async def execute(cls, images, process_time, **kwargs): + batch_size = images.shape[0] + pbar = ProgressBar(batch_size, node_id=cls.hidden.unique_id) + + processed = [] + for i in range(batch_size): + # Simulate async processing + await asyncio.sleep(process_time) + + # Example: Apply blur + import torch.nn.functional as F + blurred = F.gaussian_blur(images[i:i+1], kernel_size=5) + processed.append(blurred) + + pbar.update(1) + + result = torch.cat(processed, dim=0) + return io.NodeOutput(result, ui=ui.PreviewImage(result)) +``` + +## Advanced Examples + +### Model Loader with Resources + +```python +import folder_paths +import comfy.utils +import comfy.sd + +class CheckpointLoaderV3(io.ComfyNode): + """Loads checkpoint models with caching.""" + + @classmethod + def define_schema(cls): + return io.Schema( + node_id="CheckpointLoader_v3", + display_name="Load Checkpoint", + category="loaders", + inputs=[ + io.Combo.Input("ckpt_name", + options=folder_paths.get_filename_list("checkpoints"), + tooltip="Select checkpoint to load" + ) + ], + outputs=[ + io.Model.Output("model"), + io.Clip.Output("clip"), + io.Vae.Output("vae") + ] + ) + + @classmethod + def execute(cls, ckpt_name): + # Use resource caching + ckpt = cls.resources.get( + resources.TorchDictFolderFilename("checkpoints", ckpt_name) + ) + + # Load components + model, clip, vae = comfy.sd.load_checkpoint_guess_config( + ckpt, + embedding_directory=folder_paths.get_folder_paths("embeddings") + ) + + return io.NodeOutput(model, clip, vae) +``` + +### State Management Example + +```python +class IterativeRefinerV3(io.ComfyNode): + """Refines images iteratively with state tracking.""" + + @classmethod + def define_schema(cls): + return io.Schema( + node_id="IterativeRefiner_v3", + display_name="Iterative Refiner", + category="image/processing", + inputs=[ + io.Image.Input("image"), + io.Int.Input("iterations", default=3, min=1, max=10), + io.Boolean.Input("reset", default=False, + tooltip="Reset refinement history") + ], + outputs=[ + io.Image.Output("refined"), + io.Int.Output("total_iterations") + ] + ) + + @classmethod + def execute(cls, image, iterations, reset): + # Initialize or reset state + if reset or cls.state.history is None: + cls.state.history = [] + cls.state.total_iterations = 0 + + # Get last refined image or use input + current = cls.state.history[-1] if cls.state.history else image + + # Iterative refinement + for i in range(iterations): + # Example: Progressive sharpening + import torch.nn.functional as F + kernel = torch.tensor([[-1,-1,-1], + [-1, 9,-1], + [-1,-1,-1]], dtype=torch.float32) + kernel = kernel.view(1, 1, 3, 3) + kernel = kernel.repeat(current.shape[-1], 1, 1, 1) + + current = current.permute(0, 3, 1, 2) + sharpened = F.conv2d(current, kernel, padding=1, groups=current.shape[1]) + current = sharpened.permute(0, 2, 3, 1) + current = torch.clamp(current, 0, 1) + + # Update state + cls.state.history.append(current) + cls.state.total_iterations += iterations + + # Keep history size manageable + if len(cls.state.history) > 10: + cls.state.history.pop(0) + + return io.NodeOutput( + current, + cls.state.total_iterations, + ui=ui.PreviewImage(current) + ) +``` + +### Dynamic Inputs Example + +```python +class ImageBlenderV3(io.ComfyNode): + """Blends multiple images with weights.""" + + @classmethod + def define_schema(cls): + return io.Schema( + node_id="ImageBlender_v3", + display_name="Image Blender", + category="image/blend", + inputs=[ + io.AutoGrowDynamicInput("images", + template_input=io.Image.Input("image"), + min=2, + max=8 + ), + io.Combo.Input("mode", + options=["average", "weighted", "max", "min"], + default="average" + ) + ], + outputs=[ + io.Image.Output("blended") + ] + ) + + @classmethod + def execute(cls, mode, **kwargs): + # Collect all image inputs + images = [] + for key, value in sorted(kwargs.items()): + if key.startswith("image"): + images.append(value) + + if not images: + raise ValueError("No images provided") + + # Stack images + stacked = torch.stack(images, dim=0) + + # Blend based on mode + if mode == "average": + blended = torch.mean(stacked, dim=0) + elif mode == "weighted": + # Simple linear weighting + weights = torch.linspace(1, 0.1, len(images)) + weights = weights / weights.sum() + weights = weights.view(-1, 1, 1, 1, 1) + blended = (stacked * weights).sum(dim=0) + elif mode == "max": + blended = torch.max(stacked, dim=0)[0] + elif mode == "min": + blended = torch.min(stacked, dim=0)[0] + + return io.NodeOutput(blended, ui=ui.PreviewImage(blended)) +``` + +### Multi-Type Input Example + +```python +class UniversalInverterV3(io.ComfyNode): + """Inverts images, masks, or conditioning.""" + + @classmethod + def define_schema(cls): + return io.Schema( + node_id="UniversalInverter_v3", + display_name="Universal Inverter", + category="utils/invert", + inputs=[ + io.MultiType.Input("input", + types=[io.Image, io.Mask, io.Conditioning] + ), + io.Float.Input("strength", default=1.0, min=0.0, max=1.0) + ], + outputs=[ + io.MultiType.Output("inverted", + types=[io.Image, io.Mask, io.Conditioning] + ) + ] + ) + + @classmethod + def execute(cls, input, strength): + # Detect input type and process accordingly + if isinstance(input, torch.Tensor): + # Image or Mask + if input.dim() == 4: # Image [B,H,W,C] + inverted = 1.0 - input + inverted = input + (inverted - input) * strength + return io.NodeOutput(inverted, ui=ui.PreviewImage(inverted)) + else: # Mask [H,W] or [B,H,W] + inverted = 1.0 - input + inverted = input + (inverted - input) * strength + return io.NodeOutput(inverted, ui=ui.PreviewMask(inverted)) + + elif isinstance(input, list): # Conditioning + # Invert conditioning strength + inverted = [] + for cond, data in input: + new_data = data.copy() + if 'strength' in new_data: + new_data['strength'] = 1.0 - new_data['strength'] + inverted.append((cond, new_data)) + return io.NodeOutput(inverted) + + else: + raise ValueError(f"Unsupported input type: {type(input)}") +``` + +### Custom Type Example + +```python +class CustomDataProcessorV3(io.ComfyNode): + """Processes custom data types.""" + + @classmethod + def define_schema(cls): + return io.Schema( + node_id="CustomDataProcessor_v3", + display_name="Custom Data Processor", + category="utils/custom", + inputs=[ + io.Custom(io_type="MY_CUSTOM_TYPE").Input("custom_data",, + tooltip="Custom data type input" + ), + io.Float.Input("scale", default=1.0, min=0.1, max=10.0) + ], + outputs=[ + io.Custom(io_type="MY_CUSTOM_TYPE").Output("processed_data", + tooltip="Processed custom data" + ) + ] + ) + + @classmethod + def execute(cls, custom_data, scale): + # Process custom data type + # Assuming custom_data is a dict with 'value' and 'metadata' + processed = { + 'value': custom_data.get('value', 0) * scale, + 'metadata': custom_data.get('metadata', {}), + 'processed': True + } + + return io.NodeOutput(processed) +``` + +## Process Isolation Example + +### Node with Specific Dependencies + +```python +# manifest.yaml +""" +name: scientific_processor +version: 1.0.0 +dependencies: + - numpy==1.24.0 # Specific older version needed + - scipy==1.10.0 + - scikit-image==0.20.0 +isolated: true +share_torch: true +""" + +# __init__.py +from comfy_api.latest import io, io.ComfyNode, io.Schema +import numpy as np +from skimage import filters + +class ScientificProcessorV3(io.ComfyNode): + """Image processing with scientific libraries.""" + + @classmethod + def define_schema(cls): + return io.Schema( + node_id="ScientificProcessor_v3", + display_name="Scientific Processor", + category="image/scientific", + inputs=[ + io.Image.Input("image"), + io.Combo.Input("filter_type", + options=["gaussian", "sobel", "laplacian", "butterworth"], + default="gaussian" + ), + io.Float.Input("sigma", default=1.0, min=0.1, max=10.0) + ], + outputs=[ + io.Image.Output("filtered") + ] + ) + + @classmethod + def execute(cls, image, filter_type, sigma): + # Convert to numpy + img_np = image.cpu().numpy() + batch_size = img_np.shape[0] + + results = [] + for i in range(batch_size): + img = img_np[i] + + if filter_type == "gaussian": + filtered = filters.gaussian(img, sigma=sigma, channel_axis=-1) + elif filter_type == "sobel": + gray = np.mean(img, axis=-1) + filtered = filters.sobel(gray) + filtered = np.stack([filtered]*3, axis=-1) + elif filter_type == "laplacian": + gray = np.mean(img, axis=-1) + filtered = filters.laplace(gray) + filtered = np.stack([filtered]*3, axis=-1) + elif filter_type == "butterworth": + # Frequency domain filtering + for c in range(3): + channel = img[:,:,c] + fft = np.fft.fft2(channel) + fft_shift = np.fft.fftshift(fft) + # Apply Butterworth filter + H = 1 / (1 + (D/sigma)**4) # Simplified + filtered_fft = fft_shift * H + filtered[:,:,c] = np.real(np.fft.ifft2(np.fft.ifftshift(filtered_fft))) + + results.append(filtered) + + # Convert back to tensor + result = torch.from_numpy(np.stack(results)).float() + return io.NodeOutput(result, ui=ui.PreviewImage(result)) + +# Entry point for pyisolate +from pyisolate import ExtensionBase + +class ScientificExtension(ExtensionBase): + def on_module_loaded(self, module): + self.nodes = { + "ScientificProcessor_v3": ScientificProcessorV3 + } + +def create_extension(): + return ScientificExtension() +``` + +## Complete Workflow Example + +```python +class TextToImageWorkflowV3(io.ComfyNode): + """Complete text-to-image workflow in one node.""" + + @classmethod + def define_schema(cls): + return io.Schema( + node_id="TextToImageWorkflow_v3", + display_name="Text to Image Workflow", + category="workflows", + description="All-in-one text to image generation", + inputs=[ + io.String.Input("positive_prompt", multiline=True), + io.String.Input("negative_prompt", multiline=True, default=""), + io.Model.Input("model"), + io.Clip.Input("clip"), + io.Vae.Input("vae"), + io.Int.Input("seed", default=0, min=0, max=0xffffffffffffffff), + io.Int.Input("steps", default=20, min=1, max=150), + io.Float.Input("cfg", default=7.0, min=0.0, max=30.0), + io.Combo.Input("sampler_name", + options=comfy.samplers.KSampler.SAMPLERS, + default="euler" + ), + io.Combo.Input("scheduler", + options=comfy.samplers.KSampler.SCHEDULERS, + default="normal" + ), + io.Int.Input("width", default=1024, min=64, max=8192, step=8), + io.Int.Input("height", default=1024, min=64, max=8192, step=8), + io.Int.Input("batch_size", default=1, min=1, max=64) + ], + outputs=[ + io.Image.Output("images", is_output_list=True), + io.Latent.Output("latents") + ], + is_output_node=True + ) + + @classmethod + async def execute(cls, positive_prompt, negative_prompt, model, clip, vae, + seed, steps, cfg, sampler_name, scheduler, + width, height, batch_size): + import comfy.samplers + + # Encode prompts + positive_cond = clip.encode_from_text(positive_prompt) + negative_cond = clip.encode_from_text(negative_prompt) + + # Create empty latent + latent = torch.zeros([batch_size, 4, height // 8, width // 8]) + + # Set up sampler + sampler = comfy.samplers.KSampler( + model, steps, cfg, sampler_name, scheduler, + positive_cond, negative_cond, latent, + denoise=1.0, seed=seed + ) + + # Sample with progress callback + def callback(step, x0, x, total_steps): + # Could update progress here + pass + + samples = sampler.sample(latent, callback=callback) + + # Decode latents + images = vae.decode(samples["samples"]) + + return io.NodeOutput( + images, + samples, + ui=ui.PreviewImage(images) + ) +``` \ No newline at end of file diff --git a/.github/instructions/v3.migration.instructions.md b/.github/instructions/v3.migration.instructions.md new file mode 100644 index 0000000..5edc3a3 --- /dev/null +++ b/.github/instructions/v3.migration.instructions.md @@ -0,0 +1,530 @@ +--- +applyTo: "**/*.py" +description: "ComfyUI v3 Migration Guide" +--- + +# ComfyUI v3 Migration Guide + +This guide helps developers migrate existing v1 nodes to the new v3 schema and take advantage of async execution and process isolation. + +## Quick Start: The Core Changes + +1. **Inherit from `io.ComfyNode`**: Your node class now subclasses `io.ComfyNode`. +2. **Use `define_schema`**: All metadata (`INPUT_TYPES`, `CATEGORY`, etc.) moves into a single `@classmethod def define_schema(cls)` that returns an `io.Schema` object. +3. **Use `execute`**: The main logic function is now always a `@classmethod def execute(cls, ...)` method. +4. **Use Typed I/O**: Inputs and outputs are now strongly-typed objects from the `io` module (e.g., `io.Image.Input(...)`). +5. **Return `NodeOutput`**: The `execute` method must return an `io.NodeOutput` instance. +6. **Use `NODES_LIST`**: Node registration is done by adding the class to a `NODES_LIST` at the end of the file, replacing `NODE_CLASS_MAPPINGS` and `NODE_DISPLAY_NAME_MAPPINGS`. + +## Step-by-Step Migration + +### Step 1: Class Definition and Schema + +**V1:** +```python +class Canny: + CATEGORY = "image/preprocessors" + FUNCTION = "detect_edge" + RETURN_TYPES = ("IMAGE",) + + @classmethod + def INPUT_TYPES(s): + return {"required": { + "image": ("IMAGE",), + "low_threshold": ("FLOAT", {"default": 0.4}), + "high_threshold": ("FLOAT", {"default": 0.8}), + }} + + def detect_edge(self, image, low_threshold, high_threshold): + # ... logic ... + return (img_out,) + +NODE_CLASS_MAPPINGS = {"Canny": Canny} +``` + +**V3:** +```python +from comfy_api.latest import io + +class Canny(io.ComfyNode): + @classmethod + def define_schema(cls): + return io.Schema( + node_id="Canny_V3", + category="image/preprocessors", + inputs=[ + io.Image.Input("image"), + io.Float.Input("low_threshold", default=0.4), + io.Float.Input("high_threshold", default=0.8), + ], + outputs=[io.Image.Output()], + ) + + @classmethod + def execute(cls, image, low_threshold, high_threshold): + # ... logic ... + return io.NodeOutput(img_out) + +NODES_LIST = [Canny] +``` + +### Step 2: Naming and Registration (`node_id`, `display_name`, `NODES_LIST`) + +This is a critical step for ensuring your V3 node coexists with or replaces the V1 version correctly. + +1. **Remove Old Mappings**: Delete the `NODE_CLASS_MAPPINGS` and `NODE_DISPLAY_NAME_MAPPINGS` dictionaries. +2. **Create `NODES_LIST`**: Create a new list called `NODES_LIST` and add your V3 class to it. +3. **Set `node_id`**: The `node_id` in `Schema` **must** be the key from the old `NODE_CLASS_MAPPINGS`. +4. **Set `display_name` (Conditionally)**: + - Check if a key existed in the old `NODE_DISPLAY_NAME_MAPPINGS`. + - **If yes**: Set `display_name` to that value. + - **If no**: **Omit** the `display_name` parameter from `Schema` entirely. + +**Example:** + +**V1 Registration:** +```python +NODE_CLASS_MAPPINGS = { + "APG": APG, +} +NODE_DISPLAY_NAME_MAPPINGS = { + "APG": "Adaptive Projected Guidance", +} +``` + +**V3 `define_schema`:** +```python +@classmethod +def define_schema(cls): + return io.Schema( + node_id="APG_V3", # From MAPPINGS key + "_V3" + display_name="Adaptive Projected Guidance _V3", # From DISPLAY MAPPINGS value + " _V3" + # ... other parameters + ) + +NODES_LIST = [APG] # ... at end of file +``` + +### Step 3: Converting I/O + +| V1 Type (`string`) | V3 Class (`io.`) | Common `Input()` Options (as keyword arguments) | +|:-----------------------|:------------------------|:--------------------------------------------------------------------------| +| `STRING` | `io.String` | `default`, `multiline`, `dynamic_prompts`, `placeholder` | +| `INT` | `io.Int` | `default`, `min`, `max`, `step`, `display_mode`, `control_after_generate` | +| `FLOAT` | `io.Float` | `default`, `min`, `max`, `step`, `round`, `display_mode` | +| `BOOLEAN` | `io.Boolean` | `default`, `label_on`, `label_off` | +| `COMBO` | `io.Combo` | `options`, `default`, `upload`, `image_folder`, `remote` | +| (custom) | `io.MultiCombo` | `options`, `default`, `placeholder`, `chip` | +| `IMAGE` | `io.Image` | | +| `MASK` | `io.Mask` | | +| `MESH` | `io.Mesh` | | +| `HOOKS` | `io.Hooks` | | +| `HOOK_KEYFRAMES` | `io.HookKeyframes` | | +| `LATENT` | `io.Latent` | | +| `LATENT_OPERATION` | `io.LatentOperation` | | +| `LOAD3D_CAMERA` | `io.Load3DCamera` | | +| `LOAD_3D` | `io.Load3D` | | +| `LOAD_3D_ANIMATION` | `io.Load3DAnimation` | | +| `LOSS_MAP` | `io.LossMap` | | +| `LORA_MODEL` | `io.LoraModel` | | +| `CONDITIONING` | `io.Conditioning` | | +| `CLIP` | `io.Clip` | | +| `CLIP_VISION_OUTPUT` | `io.ClipVisionOutput` | | +| `NOISE` | `io.Noise` | | +| `VAE` | `io.Vae` | | +| `MODEL` | `io.Model` | | +| `CONTROL_NET` | `io.ControlNet` | | +| `SAMPLER` | `io.Sampler` | | +| `SIGMAS` | `io.Sigmas` | | +| `GUIDER` | `io.Guider` | | +| `CLIP_VISION` | `io.ClipVision` | | +| `UPSCALE_MODEL` | `io.UpscaleModel` | | +| `AUDIO` | `io.Audio` | | +| `VIDEO` | `io.Video` | | +| `VOXEL` | `io.Voxel` | | +| `WAN_CAMERA_EMBEDDING` | `io.WanCameraEmbedding` | | +| `WEBCAM` | `io.Webcam` | `default`, `socketless` | +| `*` | `io.AnyType` | Used for inputs that can accept any type, like the PreviewAny node. | + +#### Advanced Input Types + +**MultiType Input (accepts multiple types):** +```python +io.MultiType.Input("input", types=[io.Mask, io.Float, io.Int], optional=True) +``` + +**Combo with Remote Options:** +```python +io.Combo.Input( + "lora_name", + options=folder_paths.get_filename_list("loras"), + tooltip="The name of the LoRA." +) +``` + +**Optional Parameters:** +```python +io.Boolean.Input( + "case_sensitive", + default=True, + optional=True, # Makes this input optional + tooltip="Whether to use case-sensitive matching" +) +``` + + +### Step 4: Migrating Logic + +- **Execution Method**: Rename your old `FUNCTION` to `execute` and make it a `@classmethod`. +- **Return Value**: Wrap your return tuple in `io.NodeOutput()`. For UI updates, use the `ui` keyword argument: `io.NodeOutput(ui=ui.PreviewImage(image))`. +- **State**: Replace `self.variable` with `cls.state.variable`. +- **Hidden Inputs**: Replace `prompt` and `unique_id` parameters with `cls.hidden.prompt` and `cls.hidden.unique_id`. Request them in the schema with `hidden=[io.Hidden.prompt, io.Hidden.unique_id]`. +- **Optional Methods**: `IS_CHANGED` becomes `fingerprint_inputs`, and `VALIDATE_INPUTS` becomes `validate_inputs`. Both should be `@classmethod`. + +## Common Migration Patterns + +### 1. Hidden Inputs + +**V1:** +```python +"hidden": { + "prompt": "PROMPT", + "unique_id": "UNIQUE_ID" +} + +def execute(self, ..., prompt=None, unique_id=None): + ... # Use hidden inputs +``` + +**V3:** +```python +hidden=[ + io.Hidden.prompt, + io.Hidden.unique_id +] + +@classmethod +def execute(cls, ...): + # Access via **cls** + prompt = cls.hidden.prompt + unique_id = cls.hidden.unique_id +``` + +### 2. State Management + +**V1:** +```python +def __init__(self): + self.last_seed = None + self.cache = {} + +def execute(self, seed, ...): + if seed != self.last_seed: + self.cache.clear() + self.last_seed = seed +``` + +**V3:** +```python +@classmethod +def execute(cls, seed, ...): + if cls.state.last_seed != seed: + cls.state.cache = {} + cls.state.last_seed = seed +``` + +### 3. UI Output + +**V1:** +```python +def execute(self, image): + # Save preview manually + preview = save_temp_image(image) + return {"ui": {"images": preview}, "result": (image,)} +``` + +**V3:** +```python +@classmethod +def execute(cls, image): + return io.NodeOutput(image, ui=ui.PreviewImage(image)) +``` + +### 4. Dynamic Inputs + +**V1:** +```python +@classmethod +def INPUT_TYPES(s): + # Complex logic to generate dynamic inputs + inputs = {"required": {}} + for i in range(get_dynamic_count()): + inputs["required"][f"input_{i}"] = ("IMAGE",) + return inputs +``` + +**V3:** +```python +inputs=[ + io.AutoGrowDynamic.Input("images", + template_input=io.Image.Input("image"), + min=1, + max=10 + ) +] +``` + +### 5. Resource Loading + +**V1:** +```python +def execute(self, model_name): + # Direct file loading + model_path = folder_paths.get_full_path("checkpoints", model_name) + model = comfy.utils.load_torch_file(model_path) +``` + +**V3:** +```python +from comfy_api.latest import resources + +@classmethod +def execute(cls, model_name): + # Cached resource loading + model = cls.resources.get( + resources.TorchDictFolderFilename("checkpoints", model_name) + ) +``` + +## Making Nodes Async + +### Basic Async Node + +```python +class AsyncNodeV3(io.ComfyNode): + @classmethod + async def execute(cls, image, url): + # Network request without blocking + async with aiohttp.ClientSession() as session: + async with session.get(url) as response: + data = await response.json() + + # Process with the data + result = process_image_with_data(image, data) + return io.NodeOutput(result) +``` + +### Progress Tracking + +```python +@classmethod +async def execute(cls, images, unique_id): + from comfy.utils import ProgressBar + + batch_size = images.shape[0] + pbar = ProgressBar(batch_size, node_id=unique_id) + + results = [] + for i in range(batch_size): + # Async processing + result = await process_single(images[i]) + results.append(result) + pbar.update(1) + + return io.NodeOutput(torch.cat(results)) +``` + +## Enabling Process Isolation + +### 1. Create manifest.yaml + +```yaml +name: my_custom_nodes +version: 1.0.0 +description: My custom node collection +author: Your Name +dependencies: + - numpy==1.26.4 + - scikit-image>=0.22.0 + - opencv-python +isolated: true +share_torch: true +``` + +### 2. Update __init__.py + +```python +from pyisolate import ExtensionBase +from .nodes import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS + +class MyNodesExtension(ExtensionBase): + def on_module_loaded(self, module): + # Nodes are automatically registered + pass + + async def get_node_mappings(self): + return NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS + +# Extension entry point +def create_extension(): + return MyNodesExtension() +``` + +## Practical Migration Examples + +### Complete String Node Conversion + +This example shows a full conversion of the StringConcatenate node from v1 to v3: + +**V1 Implementation:** +```python +class StringConcatenate(): + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "string_a": (IO.STRING, {"multiline": True}), + "string_b": (IO.STRING, {"multiline": True}), + "delimiter": (IO.STRING, {"multiline": False, "default": ""}) + } + } + + RETURN_TYPES = (IO.STRING,) + FUNCTION = "execute" + CATEGORY = "utils/string" + + def execute(self, string_a, string_b, delimiter, **kwargs): + return delimiter.join((string_a, string_b)), +``` + +**V3 Implementation:** +```python +from comfy_api.latest import io, ui + +class StringConcatenate(io.ComfyNode): + """Concatenates two strings with an optional delimiter between them.""" + + @classmethod + def define_schema(cls): + return io.Schema( + node_id="StringConcatenate", + display_name="String Concatenate", + category="utils/string", + description="Concatenates two strings together with an optional delimiter between them.", + inputs=[ + io.String.Input( + "string_a", + display_name="String A", + multiline=True, + tooltip="The first string to concatenate" + ), + io.String.Input( + "string_b", + display_name="String B", + multiline=True, + tooltip="The second string to concatenate" + ), + io.String.Input( + "delimiter", + display_name="Delimiter", + default="", + multiline=False, + tooltip="The delimiter to insert between the two strings (empty by default)" + ), + ], + outputs=[ + io.String.Output( + "concatenated", + display_name="Concatenated String", + tooltip="The result of concatenating string_a and string_b with the delimiter" + ), + ], + ) + + @classmethod + def execute(cls, string_a: str, string_b: str, delimiter: str) -> io.NodeOutput: + """Concatenates two strings with an optional delimiter.""" + result = delimiter.join((string_a, string_b)) + return io.NodeOutput(result) +``` + +### Replacing V1 Nodes Strategy + +When replacing v1 nodes with v3 implementations: + +1. **Keep Original Node Names**: Don't add "V3" suffix to maintain compatibility +2. **Preserve All Parameters**: Keep same parameter names and defaults +3. **Maintain Return Structure**: v3 automatically generates v1-compatible returns +4. **Test Workflow Compatibility**: Ensure existing workflows continue to work + +Example migration workflow: +```bash +# 1. Create new branch +git checkout -b v3-node-migration + +# 2. Backup original +cp nodes_original.py nodes_original.py.bak + +# 3. Replace with v3 version +cp nodes_v3.py nodes_original.py + +# 4. Test with existing workflows +comfy-cli test-workflows ./test-workflows/ +``` + +## Testing Your Migration + +### 1. Backward Compatibility Test + +```python +# Your v3 node should work with v1 calls +def test_v1_compatibility(): + node = MyNodeV3() + inputs = node.INPUT_TYPES() + assert "required" in inputs + assert hasattr(node, "FUNCTION") + assert hasattr(node, "RETURN_TYPES") +``` + +### 2. Async Execution Test + +```python +import asyncio + +async def test_async_execution(): + result = await MyAsyncNode.execute(image=test_image) + assert result is not None +``` + +### 3. Isolation Test + +```bash +# Test with conflicting dependencies +comfy-cli test-node --isolated my_custom_nodes +``` + +## Best Practices + +1. **Keep nodes stateless** - Use `cls.state` for any mutable data +2. **Make I/O operations async** - Network, disk, database operations +3. **Use resource caching** - Via `cls.resources.get()` +4. **Declare all dependencies** - In manifest.yaml +5. **Test both sync and async** - Ensure compatibility +6. **Document type changes** - Help users update workflows + +## Common Issues + +### Issue: State not persisting +**Solution:** Use `cls.state` instead of instance variables + +### Issue: Hidden inputs not working +**Solution:** Access via `cls.hidden.unique_id` not function parameters + +### Issue: Async not executing +**Solution:** Ensure method is `async def` and use `await` for async calls + +### Issue: Import errors in isolation +**Solution:** Add all dependencies to manifest.yaml + +### Issue: Tensors not sharing +**Solution:** Enable `share_torch: true` in manifest.yaml \ No newline at end of file diff --git a/.github/instructions/v3.reference.instructions.md b/.github/instructions/v3.reference.instructions.md new file mode 100644 index 0000000..f945597 --- /dev/null +++ b/.github/instructions/v3.reference.instructions.md @@ -0,0 +1,635 @@ +--- +applyTo: "**/*.py" +description: "ComfyUI v3 API Reference" +--- + +# ComfyUI v3 API Reference + +Complete reference for the ComfyUI v3 node API, including all types, methods, and decorators. + +## Core Classes + +### ComfyNodeV3 + +Base class for all v3 nodes. + +```python +from comfy_api.latest import io + +class CustomNode(io.ComfyNode): + # Class properties set during execution + state: NodeState # Persistent state storage + resources: Resources # Resource loader with caching + hidden: HiddenHolder # Access to hidden inputs + + @classmethod + @abstractmethod + def define_schema(cls) -> io.ComfyNode: + """Define node schema. Must be overridden.""" + pass + + @classmethod + @abstractmethod + def execute(cls, **kwargs) -> io.NodeOutput: + """Execute node logic. Can be async.""" + pass + + @classmethod + def validate_inputs(cls, **kwargs) -> bool: + """Optional: Validate inputs before execution.""" + pass + + @classmethod + def fingerprint_inputs(cls, **kwargs) -> Any: + """Optional: Generate a fingerprint for caching.""" + pass + + @classmethod + def GET_SERIALIZERS(cls) -> list[Serializer]: + """Optional: Define custom serializers.""" + return [] +``` + +### io.ComfyNode + +Node definition schema. + +```python +@dataclass +class io.ComfyNode: + node_id: str # Globally unique ID + display_name: str = None # UI display name + category: str = "sd" # Node category + inputs: list[InputV3] = None # Input definitions + outputs: list[OutputV3] = None # Output definitions + hidden: list[Hidden] = None # Hidden inputs + description: str = "" # Tooltip description + is_input_list: bool = False # Handle list inputs + is_output_node: bool = False # Force execution + is_deprecated: bool = False # Mark as deprecated + is_experimental: bool = False # Mark as experimental + is_api_node: bool = False # API node flag + not_idempotent: bool = False # Disable caching +``` + +### NodeOutput + +Structured return value from `execute`. + +```python +class NodeOutput: + def __init__( + self, + *args: Any, # Output values + ui: UIOutput | dict = None, # UI elements + expand: dict = None, # Subgraph expansion + block_execution: str = None # Execution blocker + ): + pass +``` + +## Input Types + +### Basic Inputs + +```python +# Integer input +io.Int.Input( + id: str, + display_name: str = None, + optional: bool = False, + tooltip: str = None, + lazy: bool = None, + default: int = None, + min: int = None, + max: int = None, + step: int = None, + control_after_generate: bool = None, + display_mode: NumberDisplay = None, + socketless: bool = None, + force_input: bool = None +) + +# Float input +io.Float.Input( + id: str, + display_name: str = None, + optional: bool = False, + tooltip: str = None, + lazy: bool = None, + default: float = None, + min: float = None, + max: float = None, + step: float = None, + round: float = None, + display_mode: NumberDisplay = None, + socketless: bool = None, + force_input: bool = None +) + +# String input +io.String.Input( + id: str, + display_name: str = None, + optional: bool = False, + tooltip: str = None, + lazy: bool = None, + multiline: bool = False, + placeholder: str = None, + default: str = None, + dynamic_prompts: bool = None, + socketless: bool = None, + force_input: bool = None +) + +# Boolean input +io.Boolean.Input( + id: str, + display_name: str = None, + optional: bool = False, + tooltip: str = None, + lazy: bool = None, + default: bool = None, + label_on: str = None, + label_off: str = None, + socketless: bool = None, + force_input: bool = None +) + +# Combo (dropdown) input +io.Combo.Input( + id: str, + options: list[str] = None, + display_name: str = None, + optional: bool = False, + tooltip: str = None, + lazy: bool = None, + default: str = None, + control_after_generate: bool = None, + upload: UploadType = None, + image_folder: FolderType = None, + remote: RemoteOptions = None, + socketless: bool = None +) + +# Multi-select combo +io.MultiCombo.Input( + id: str, + options: list[str], + display_name: str = None, + optional: bool = False, + tooltip: str = None, + lazy: bool = None, + default: list[str] = None, + placeholder: str = None, + chip: bool = None, + control_after_generate: bool = None, + socketless: bool = None +) +# cusotm type +io.Custom(io_type="MY_TYPE").Input( + id: str, + display_name: str = None, + optional: bool = False, + tooltip: str = None, + lazy: bool = None, + placeholder: str = None, +) +``` + +### ComfyUI Types + +```python +# Core types +io.Image.Input(id, ...) # Type: torch.Tensor [B,H,W,C] +io.Mask.Input(id, ...) # Type: torch.Tensor [H,W] or [B,H,W] +io.Latent.Input(id, ...) # Type: dict with 'samples' tensor +io.Conditioning.Input(id, ...) # Type: list[tuple[tensor, dict]] +io.Model.Input(id, ...) # Type: ModelPatcher +io.Clip.Input(id, ...) # Type: CLIP +io.Vae.Input(id, ...) # Type: VAE +io.ControlNet.Input(id, ...) # Type: ControlNet + +# Sampling types +io.Sampler.Input(id, ...) # Type: Sampler +io.Sigmas.Input(id, ...) # Type: torch.Tensor +io.Noise.Input(id, ...) # Type: torch.Tensor +io.Guider.Input(id, ...) # Type: CFGGuider + +# Additional types +io.ClipVision.Input(id, ...) # Type: ClipVisionModel +io.ClipVisionOutput.Input(id, ...) # Type: ClipVisionOutput +io.StyleModel.Input(id, ...) # Type: StyleModel +io.Gligen.Input(id, ...) # Type: ModelPatcher +io.UpscaleModel.Input(id, ...) # Type: ImageModelDescriptor +io.Audio.Input(id, ...) # Type: dict with 'waveform' and 'sample_rate' +io.Video.Input(id, ...) # Type: VideoInput +io.Webcam.Input(id, ...) # Type: str (filepath) +io.WanCameraEmbedding.Input(id, ...) # Type: torch.Tensor +io.LoraModel.Input(id, ...) # Type: dict[str, Tensor] +io.Hooks.Input(id, ...) # Type: HookGroup +io.HookKeyframes.Input(id, ...) # Type: HookKeyframeGroup +io.SVG.Input(id, ...) # Type: SVG (custom class) +io.Voxel.Input(id, ...) # Type: Voxel data (custom class) +io.Mesh.Input(id, ...) # Type: Mesh data (custom class) +``` + +### Advanced Inputs + +```python +# Multi-type input (accepts multiple types) +io.MultiType.Input( + id: str | InputV3, # Can override from existing input + types: list[type[ComfyType]], + display_name: str = None, + optional: bool = False, + tooltip: str = None, + lazy: bool = None +) + +# Dynamic growing input +io.AutogrowDynamic.Input( + id: str, + template_input: InputV3, # Template for each new input + min: int = 1, # Minimum inputs + max: int = None # Maximum inputs +) + +# Custom type +@io.comfytype(io_type="MY_CUSTOM") +class MyCustom: + Type = MyDataClass + class Input(io.InputV3): + ... + class Output(io.OutputV3): + ... +``` + +## Output Types + +```python +# Basic output +io.Image.Output( + id: str = None, + display_name: str = None, + tooltip: str = None, + is_output_list: bool = False # Output is list +) + +# All ComfyUI types have corresponding outputs +io.Mask.Output(id, ...) +io.Latent.Output(id, ...) +io.Model.Output(id, ...) +io.Clip.Output(id, ...) +io.Vae.Output(id, ...) +io.Conditioning.Output(id, ...) +io.String.Output(id, ...) +io.Int.Output(id, ...) +io.Float.Output(id, ...) +io.Boolean.Output(id, ...) +# ... etc +``` + +## Hidden Inputs + +```python +from comfy_api.latest import Hidden + +# Available hidden inputs +Hidden.unique_id # Node's unique ID +Hidden.prompt # Complete prompt +Hidden.extra_pnginfo # PNG metadata dict +Hidden.dynprompt # Dynamic prompt object +Hidden.auth_token_comfy_org # ComfyOrg auth token +Hidden.api_key_comfy_org # ComfyOrg API key + +# Usage in schema +hidden=[ + Hidden.unique_id, + Hidden.prompt +] + +# Access in execute +unique_id = cls.hidden.unique_id +prompt = cls.hidden.prompt +``` + +## State Management + +```python +# NodeState interface +class NodeState: + def get_value(self, key: str) -> Any + def set_value(self, key: str, value: Any) + def pop(self, key: str) -> Any + def __contains__(self, key: str) -> bool + + # Attribute access + cls.state.my_value = 42 + value = cls.state.my_value + + # Dictionary access + cls.state["key"] = "value" + value = cls.state["key"] +``` + +## Practical Input/Output Examples + +### Enhanced Documentation with Tooltips and Display Names + +```python +# String input with full documentation +io.String.Input( + "prompt", + display_name="Text Prompt", + multiline=True, + default="A beautiful landscape", + tooltip="Enter the text description for image generation", + placeholder="Type your prompt here..." +) + +# Integer with constraints and UI hints +io.Int.Input( + "steps", + display_name="Sampling Steps", + default=20, + min=1, + max=150, + tooltip="Number of denoising steps. Higher values take longer but may produce better results", + display_mode=io.NumberDisplay.slider +) + +# Combo with dynamic options +io.Combo.Input( + "checkpoint", + options=folder_paths.get_filename_list("checkpoints"), + display_name="Model Checkpoint", + tooltip="Select the AI model to use for generation" +) + +# Output with documentation +io.Image.Output( + "generated_image", + display_name="Generated Image", + tooltip="The final generated image based on your prompt" +) + +# Combo with dynamic options and file upload +io.Combo.Input( + "audio_file", + options=sorted(folder_paths.filter_files_content_types(os.listdir(folder_paths.get_input_directory()), ["audio", "video"])), + display_name="Audio File", + tooltip="Select an audio file or upload a new one", + upload=io.UploadType.audio +) +``` + +### Return Pattern with NodeOutput + +```python +@classmethod +def execute(cls, text: str, count: int) -> io.NodeOutput: + # Single output + result = process_text(text, count) + return io.NodeOutput(result) + + # Multiple outputs + image, mask = generate_image_and_mask(text) + return io.NodeOutput(image, mask) + + # With UI preview + image = generate_image(text) + return io.NodeOutput(image, ui=ui.PreviewImage(image)) + + # With multiple UI elements + images = batch_generate(text, count) + previews = [ui.PreviewImage(img) for img in images] + return io.NodeOutput(images, ui={"images": previews}) +``` + +## Resource Management + +```python +# Load cached resources +from comfy_api.latest import resources + +# Load torch file +model = cls.resources.get( + resources.TorchDictFolderFilename( + folder_name="checkpoints", # Folder category + file_name="model.safetensors" + ) +) + +# With default value +model = cls.resources.get(key, default=None) + +# Custom resource types (future) +class MyResourceKey(ResourceKey): + Type = MyResourceType + def __init__(self, ...): + pass +``` + +## UI Output Classes + +```python +from comfy_api.latest import ui + +# Image preview +ui.PreviewImage( + image: torch.Tensor, + animated: bool = False +) + +# Mask preview +ui.PreviewMask( + mask: torch.Tensor, + animated: bool = False +) + +# Audio preview +ui.PreviewAudio( + values: list[SavedResult | dict] +) + +# Text output +ui.PreviewText( + value: str +) + +# 3D preview +ui.PreviewUI3D( + values: list[SavedResult | dict] +) +``` + +## Decorators and Helpers + +```python +# Create custom ComfyType +@io.comfytype(io_type="CUSTOM_TYPE") +class CustomType: + Type = CustomClass + class Input(io.InputV3): + ... + class Output(io.OutputV3): + ... + +# Custom serializer +class MySerializer(Serializer, io_type="MY_TYPE"): + @classmethod + def serialize(cls, obj: Any) -> str: + return json.dumps(obj) + + @classmethod + def deserialize(cls, s: str) -> Any: + return json.loads(s) +``` + +## Async Support + +```python +# Async execute +class AsyncNode(io.ComfyNode): + @classmethod + async def execute(cls, **kwargs): + result = await async_operation() + return io.NodeOutput(result) + +# Async validation +@classmethod +async def VALIDATE_INPUTS(cls, **kwargs): + is_valid = await check_validity() + return True if is_valid else "Error message" + +# Async lazy check +async def check_lazy_status(cls, **kwargs): + needed = await determine_needed_inputs() + return needed # List of input names +``` + +## Complete Example + +```python +from comfy_api.latest import io, ui, resources, io.ComfyNode, io.ComfyNode +import torch + +class AdvancedNodeV3(io.ComfyNode): + @classmethod + def define_schema(cls): + return io.ComfyNode( + node_id="AdvancedNode", + display_name="Advanced Node", + category="examples/advanced", + description="Demonstrates v3 features", + inputs=[ + # Basic inputs + io.Image.Input("image", tooltip="Input image"), + io.Model.Input("model", tooltip="Model to use"), + + # Configured inputs + io.Float.Input("strength", + default=0.75, + min=0.0, + max=1.0, + step=0.05, + display_mode=io.NumberDisplay.slider + ), + + # Multi-type + io.MultiType.Input("flexible", + types=[io.Image, io.Mask, io.Latent], + optional=True + ), + + # Dynamic + io.AutoGrowDynamic.Input("extra_images", + template_input=io.Image.Input("img"), + min=0, + max=5 + ) + ], + outputs=[ + io.Image.Output("result", tooltip="Processed image"), + io.Latent.Output("latent", is_output_list=True) + ], + hidden=[ + io.Hidden.unique_id, + io.Hidden.prompt + ], + is_output_node=True, + is_experimental=True + ) + + @classmethod + async def execute(cls, image, model, strength, flexible=None, **kwargs): + # Access state + if cls.state.last_model != model: + cls.state.cache = {} + cls.state.last_model = model + + # Load resources + weights = cls.resources.get( + resources.TorchDictFolderFilename("loras", "style.safetensors"), + default=None + ) + + # Access hidden + node_id = cls.hidden.unique_id + + # Process async + result = await process_with_model(image, model, strength) + + # Handle dynamic inputs + extra_images = [v for k, v in kwargs.items() if k.startswith("extra_")] + + # Return with UI + return io.NodeOutput( + result, + [latent], + ui=ui.PreviewImage(result) + ) + + @classmethod + async def fingerprint_inputs(cls, strength, **kwargs): + if strength < 0.1: + return "Strength too low for good results" + return True +``` + +## Type Reference + +### Type Mappings + +| v3 Type | Python Type | Shape/Format | +|---------|------------|--------------| +| `io.Image.Type` | `torch.Tensor` | `[B,H,W,C]` float32 0-1 | +| `io.Mask.Type` | `torch.Tensor` | `[H,W]` or `[B,H,W]` float32 | +| `io.Latent.Type` | `dict` | `{"samples": tensor, ...}` | +| `io.Conditioning.Type` | `list` | `[(tensor, dict), ...]` | +| `io.Audio.Type` | `dict` | `{"waveform": tensor, "sample_rate": int}` | +| `io.Int.Type` | `int` | Python integer | +| `io.Float.Type` | `float` | Python float | +| `io.String.Type` | `str` | Python string | +| `io.Boolean.Type` | `bool` | Python boolean | + +### Enum Types + +```python +# Number display modes +io.NumberDisplay.number # Standard input +io.NumberDisplay.slider # Slider widget +io.NumberDisplay.color # Color picker widget + +# Folder types +io.FolderType.input # Input folder +io.FolderType.output # Output folder +io.FolderType.temp # Temp folder + +# Upload types +io.UploadType.image +io.UploadType.audio +io.UploadType.video +io.UploadType.model +``` \ No newline at end of file diff --git a/ComfyUI-Easy-Use-Frontend b/ComfyUI-Easy-Use-Frontend index fadf19f..e3ee9ef 160000 --- a/ComfyUI-Easy-Use-Frontend +++ b/ComfyUI-Easy-Use-Frontend @@ -1 +1 @@ -Subproject commit fadf19fe360fc84df3781c8501f8c208a4eb19c5 +Subproject commit e3ee9efe9b7bcd2308bef7a4755e984181b4b045 diff --git a/locales/zh/main.json b/locales/zh/main.json index f8bbe90..9adc24e 100644 --- a/locales/zh/main.json +++ b/locales/zh/main.json @@ -3,7 +3,8 @@ "Hotkeys": "快捷键", "Nodes": "节点相关", "NodesMap": "管理节点组", - "StylesSelector": "样式选择器" + "StylesSelector": "样式选择器", + "MultiAngle": "摄影机多角度提示词" }, "nodeCategories": { "Util": "工具", diff --git a/locales/zh/settings.json b/locales/zh/settings.json index f53db76..490b8ef 100644 --- a/locales/zh/settings.json +++ b/locales/zh/settings.json @@ -71,5 +71,12 @@ "Grid": "网格", "List": "列表" } + }, + "EasyUse_MultiAngle_HollowMode": { + "name": "启用多角度镂空展示模式", + "tooltip": "在多角度节点中启用镂空展示模式,可以更直观地查看相机角度" + }, + "EasyUse_MultiAngle_AddAnglePrompt": { + "name": "启用添加多角度提示词" } } \ No newline at end of file diff --git a/py/nodes/prompt.py b/py/nodes/prompt.py index 5cf4892..9469d51 100644 --- a/py/nodes/prompt.py +++ b/py/nodes/prompt.py @@ -1,15 +1,13 @@ import json import os -from urllib.request import urlopen - import folder_paths from .. import easyCache from ..config import FOOOCUS_STYLES_DIR, MAX_SEED_NUM, PROMPT_TEMPLATE, RESOURCES_DIR from ..libs.log import log_node_info -from ..libs.utils import AlwaysEqualProxy from ..libs.wildcards import WildcardProcessor, get_wildcard_list, process +from urllib.request import urlopen from comfy_api.latest import io @@ -666,7 +664,7 @@ class multiAngle(io.ComfyNode): @classmethod def execute(cls, multi_angle=None, **kwargs): - if multi_angle is None or not isinstance(multi_angle, list): + if multi_angle is None: return io.NodeOutput([""]) if isinstance(multi_angle, str): diff --git a/web_version/v2/assets/extensions-CPPCvYdJ.js b/web_version/v2/assets/extensions-CPPCvYdJ.js new file mode 100644 index 0000000..275f2f5 --- /dev/null +++ b/web_version/v2/assets/extensions-CPPCvYdJ.js @@ -0,0 +1 @@ +var e,t,i,s,a,n,o,l,r,d,u,A,c,p,h,m,f=Object.defineProperty,g=e=>{throw TypeError(e)},v=(e,t,i)=>((e,t,i)=>t in e?f(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i),y=(e,t,i)=>t.has(e)||g("Cannot "+i),b=(e,t,i)=>(y(e,t,"read from private field"),i?i.call(e):t.get(e)),w=(e,t,i)=>t.has(e)?g("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,i),_=(e,t,i,s)=>(y(e,t,"write to private field"),s?s.call(e,i):t.set(e,i),i);import{d as S,h as x,s as L,a as k,T as E,b as N,c as C,e as I,f as T,g as O,i as M,j as D}from"./vendor-21JIUrgV.js";import{c as R}from"./lodash-CZi7izHi.js";import{r as P,m as G,t as z,u as V,o as j,a as W,c as U,b as F,d as X,e as Z,w as H,f as q,g as Y,h as K,i as J,j as B,F as Q,k as $,n as ee,l as te,v as ie,p as se,q as ae,s as ne,x as oe,y as le,z as re}from"./vue-3zBRwU9X.js";import{u as de,a as ue,b as Ae,c as ce}from"./vueuse-D8iors41.js";let pe=(null==(t=null==(e=window.comfyAPI)?void 0:e.app)?void 0:t.app)||null,he=(null==(s=null==(i=window.comfyAPI)?void 0:i.api)?void 0:s.api)||null,me=(null==(n=null==(a=window.comfyAPI)?void 0:a.ui)?void 0:n.$el)||null,fe=(null==(l=null==(o=window.comfyAPI)?void 0:o.dialog)?void 0:l.ComfyDialog)||null,ge=(null==(d=null==(r=window.comfyAPI)?void 0:r.widgets)?void 0:d.ComfyWidgets)||null,ve=(null==(A=null==(u=window.comfyAPI)?void 0:u.utils)?void 0:A.applyTextReplacements)||null,ye=(null==(p=null==(c=window.comfyAPI)?void 0:c.groupNode)?void 0:p.GroupNodeConfig)||null;const be=e=>{var t,i;return e?null==(i=null==(t=null==pe?void 0:pe.ui)?void 0:t.settings)?void 0:i.getSettingValue(e):null};function we(e,t=null){try{let i=e?be(e):null;return null==i&&(i=t?localStorage[t]:localStorage[e]||null),i}catch(i){return null}}function _e(e,t=e=>{}){var i;const s=null==(i=pe.ui.settings.settingsLookup)?void 0:i[e];s&&(s.onChange=e=>t(e))}async function Se(e,t,i=null){var s,a;if(!e)throw new Error("Invalid arguments");try{(null==(a=null==(s=null==pe?void 0:pe.ui)?void 0:s.settings)?void 0:a.setSettingValue)?pe.ui.settings.setSettingValue(e,t):await he.storeSetting(e,t),i&&(localStorage[i]="object"==typeof t?JSON.stringify(t):t)}catch(n){}}const xe={"Workflow created by":"工作流创建者","Watch more video content":"观看更多视频内容","Workflow Guide":"工作流指南","💎 View Checkpoint Info...":"💎 查看 Checkpoint 信息...","💎 View Lora Info...":"💎 查看 Lora 信息...","🔃 Reload Node":"🔃 刷新节点","Updated At:":"最近更新:","Created At:":"首次发布:","✏️ Edit":"✏️ 编辑","💾 Save":"💾 保存","No notes":"当前还没有备注内容","Saving Notes...":"正在保存备注...","Type your notes here":"在这里输入备注内容",ModelName:"模型名称","Models Required":"所需模型","Download Model":"下载模型","Source Url":"模型源地址",Notes:"备注",Type:"类型","Trained Words":"训练词",BaseModel:"基础算法",Details:"详情",Description:"描述",Download:"下载量",Source:"来源","Saving Preview...":"正在保存预览图...","Saving Succeed":"保存成功","Clean SuccessFully":"清理成功","Clean Failed":"清理失败","Saving Failed":"保存失败","No COMBO link":"沒有找到COMBO连接","Reboot ComfyUI":"重启ComfyUI","Are you sure you'd like to reboot the server?":"是否要重启ComfyUI?","NODES MAP":"管理节点与组",NodesMap:"节点与组","Nodes map sorting mode":"管理节点组排序模式","Search by Node ID/Name...":"通过节点ID/名称搜索...","No Nodes":"未找到节点","No nodes found in the map":"在工作流程中没有找到节点","No nodes found in the search":"未找到与搜索匹配的节点","Jump to this node":"跳转到该节点","Rename node":"重命名节点","Delete node":"删除节点","Rename group":"重命名组","Delete group":"删除组","Expand All":"展开所有组","Collapse All":"折叠所有组",Close:"关闭","Default automatic sorting, if set to manual, groups can be dragged and dropped and the sorting results saved.":"默认自动排序,如果设置为手动,组可以拖放并保存排序结果。","For drag and drop sorting, please find Nodes map sorting mode in Settings->EasyUse and change it to manual":"如需拖拽排序请在设置->EasyUse节点中找到管理节点组排序模式并修改成 manual",Queue:"队列","Cleanup Of VRAM Usage":"清理显存占用","Please stop all running tasks before cleaning GPU":"请在清理GPU之前停止所有运行中的任务",Always:"启用中",Bypass:"已忽略",Never:"已停用","Auto Sorting":"自动排序","Toggle `Show/Hide` can set mode of group, LongPress can set group nodes to never":"点击`启用中/已忽略`可设置组模式, 长按可停用该组节点","Enable Shift+Up/Down/Left/Right key and Shift+Ctrl+Alt+Left/Right to align selected nodes":"启用 Shift+上/下/左/右 和 Shift+Ctrl+Alt+左/右 键对齐选中的节点","Enable Shift+Ctrl+Left/Right key to normalize selected nodes":"启用 Shift+Ctrl+左/右 键规范化选中的节点","Enable Shift+g to add selected nodes to a group":"启用 Shift+g 键将选中的节点添加一个组","Enable Shift+r to unload models and node cache":"启用 Shift+r 键卸载模型和节点缓存","Enable Shift+m to toggle nodes map":"启用 Shift+m 键显隐管理节点组","Enable Up/Down/Left/Right key to jump nearest nodes":"启用 上/下/左/右 键跳转到最近的前后节点","Enable Alt+1~9 to paste nodes from nodes template":"启用 Alt+1~9 从节点模板粘贴到工作流中","Enable contextMenu auto nest subdirectories":"启用上下文菜单自动嵌套子目录","Enable right-click menu to add node A~Z sorting":"启用右键菜单中新建节点A~Z排序","Enable model thumbnails display":"启动模型预览图显示","Enable nodes runtime display":"启动节点运行时间显示","Enable chain get node and set node with parent nodes":"启用将获取点和设置点与父节点链在一起","Maximum number of model thumbnails displayed":"显示的模型缩略图的最大数量","Too many thumbnails will affect the first loading time, set the maximum value to not load the thumbnail function when there are too many models's thumbnail":"太多的缩略图会影响首次加载时间,当模型缩略图太多时,设置最大值以不加载缩略图功能","Too many thumbnails, have closed the display":"模型缩略图太多啦,为您关闭了显示","Shift+Up/Down/Left/Right can align selected nodes, Shift+Ctrl+Alt+Left/Right can distribute horizontal/vertical nodes":"Shift+上/下/左/右 可以对齐选中的节点, Shift+Ctrl+Alt+左/右 可以水平/垂直分布节点","Enable Shift+Ctrl+Left key to normalize width and Shift+Ctrl+Right key to normalize height":"启用 Shift+Ctrl+左 键规范化宽度和 Shift+Ctrl+右 键规范化高度","After v1.2.39, Ctrl+g can be used instead of it":"从v1.2.39开始,可以使用Ctrl+g代替","Styles Selector Display Type":"样式选择器显示类型","Styles Selector Display Type, if set to 'Grid', it will display as a Grid, if set to 'List', it will display as a list":"样式选择器显示类型,如果设置为“网格”,则显示为网格,如果设置为“列表”,则显示为列表","Use three shortcut buttons in the right-click menu":"在右键菜单中使用三个快捷按钮","Enable Nodes Map":"启用节点组管理","Display Groups Only":"仅显示组","Display Node ID":"显示节点ID","You need to refresh the page to update successfully":"您需要刷新页面以成功更新","Get styles list Failed":"获取样式列表失败","Get style image Failed":"获取样式图片失败","Empty All":"清空所有","Type here to search styles ...":"在此处输入以搜索样式 ...","Loading UserInfo...":"正在获取用户信息...","Please set the APIKEY first":"请先设置APIKEY","Setting APIKEY":"设置APIKEY","Save Account Info":"保存账号信息",Choose:"选择",Delete:"删除",Edit:"编辑","At least one account is required":"删除失败: 至少需要一个账户","APIKEY is not Empty":"APIKEY 不能为空","Add Account":"添加账号","Getting Your APIKEY":"获取您的APIKEY",Canceling:"正在取消","Cancel current run":"取消当前运行","Waiting for selection...":"等待选择中...","Using last selection":"使用上次选择","Pass Through":"跳过选择","Unknown Mode":"未知模式","Choose Selected Images":"选择选中的图片","Choose images to continue":"选择图片以继续","Please run first":"请先运行队列","Progress selected":"处理选中的图片","Progress selected image":"处理选中的图片","Please select images to continue":"请选择图片以继续",Background:"背景",Hat:"帽子",Hair:"头发",Body:"身体",Face:"脸部",Clothes:"衣服",Others:"其他",Glove:"手套",Glasses:"眼镜",Sunglasses:"太阳镜","Upper-clothes":"上衣","Top-clothes":"上衣","Bottom-clothes":"下身装","Torso-skin":"皮肤",Dress:"连衣裙",Belt:"腰带",Coat:"外套",Socks:"袜子",Pants:"裤子",Jumpsuits:"连体衣",Bag:"包",Scarf:"围巾",Skirt:"裙子","Left-arm":"左臂","Right-arm":"右臂","Left-leg":"左腿","Right-leg":"右腿","Left-foot":"左脚","Right-foot":"右脚","Left-shoe":"左鞋","Right-shoe":"右鞋","select mask components":"选择分割部位","select items":"选择项",Unlabelled:"未标记","shirt, blouse":"衬衫,女式衬衫","top, t-shirt, sweatshirt":"上衣,T恤,运动衫",sweater:"毛衣",cardigan:"开襟毛衣",jacket:"夹克",vest:"背心",pants:"长裤",shorts:"短裤",skirt:"裙子",coat:"外套",dress:"连衣裙",jumpsuit:"连体衣",cape:"斗篷",glasses:"眼镜",hat:"帽子","headband, head covering, hair accessory":"头带,头饰,发饰",tie:"领带",glove:"手套",watch:"手表",belt:"腰带","leg warmer":"护腿","tights, stockings":"紧身袜,丝袜",sock:"袜子",shoe:"鞋子","bag, wallet":"包,钱包",scarf:"围巾",umbrella:"雨伞",hood:"帽兜",collar:"领子",lapel:"翻领",epaulette:"肩章",sleeve:"袖子",pocket:"口袋",neckline:"领口",buckle:"扣环",zipper:"拉链",applique:"贴花",bead:"珠子",bow:"蝴蝶结",flower:"花朵装饰",fringe:"流苏",ribbon:"丝带",rivet:"铆钉",ruffle:"褶边",sequin:"亮片",tassel:"流苏穗",background:"背景",skin:"皮肤",nose:"鼻子",eyeglasses:"眼镜",left_eye:"左眼",right_eye:"右眼",left_eyebrow:"左眉毛",right_eyebrow:"右眉毛",left_ear:"左耳",right_ear:"右耳",mouth:"嘴巴",upper_lip:"上唇",lower_lip:"下唇",hair:"头发",earring:"耳环",necklace:"项链",neck:"脖子",clothing:"服装",s:"秒","No Node Templates Found":"未找到节点模板预设","Get Node Templates File Failed":"获取节点模板文件失败","Node template with {key} not set":"未设置快捷键为{key}的节点预设","ComfyUI Basic":"ComfyUI 基础节点","Recommend Nodes":"推荐节点","Others A~Z":"其他节点 A~Z","The maximum number of inputs is 20":"输入数量最大20个","The maximum number of outputs is 20":"输出数量最大20个","Stop recording":"停止录音","Voice input":"语音输入",Continue:"继续",Stop:"停止",now:"当前",prev:"上一步","Add New Tab":"添加新标签","Add Angle Prompt":"添加角度提示词",Hollow:"镂空展示",Reset:"重置","Angle Prompt":"角度词",Image:"图像",F:"前",B:"后",U:"顶",D:"底",L:"左",R:"右",Rotate:"旋转",Vertical:"垂直",Zoom:"缩放"},Le=(e,t=!1)=>{switch(we("Comfy.Locale")){case"zh-CN":case"zh":return xe[e]||e;default:return e}};const ke="comfyui-easyuse-",Ee="dark-theme",Ne={PIPE_LINE:"#7737AA",PIPE_LINE_SDXL:"#7737AA",INT:"#29699C",X_Y:"#38291f",XYPLOT:"#74DA5D",LORA_STACK:"#94dccd",CONTROL_NET_STACK:"#94dccd",FLOW_CONTROL:"#373780"},Ce=0x4000000000000,Ie=["loaders","latent","image","mask","sampling","_for_testing","advanced","utils","api","api node","加载器","Latent","图像","遮罩","采样","_用于测试","高级","工具","API","api 节点","chargeurs","latent","image","masque","échantillonnage","_pour_test","avancé","outils","nœud api","загрузчики","латентный","изображение","маска","выборка","_для_тестирования","расширенный","инструменты","api","api узел","로더","잠재","이미지","마스크","샘플링","_테스트용","고급","도구","api","api 노드","ローダー","潜在","画像","マスク","サンプリング","_テスト用","高度な","ツール","api","apiノード","cargadores","latente","imagen","máscara","muestreo","_para_pruebas","avanzado","herramientas","api","nodo api"],Te={selfie_multiclass_256x256:["Background","Hair","Body","Face","Clothes","Others"],human_parsing_lip:["Background","Hat","Hair","Glove","Sunglasses","Upper-clothes","Dress","Coat","Socks","Pants","Jumpsuits","Scarf","Skirt","Face","Left-arm","Right-arm","Left-leg","Right-leg","Left-shoe","Right-shoe"],"human_parts (deeplabv3p)":["Background","Face","Hair","Glasses","Top-clothes","Bottom-clothes","Torso-skin","Left-arm","Right-arm","Left-leg","Right-leg","Left-foot","Right-foot"],segformer_b3_clothes:{Background:0,Hat:1,Hair:2,Sunglasses:3,"Upper-clothes":4,Skirt:5,Pants:6,Dress:7,Belt:8,"Left-shoe":9,"Right-shoe":10,Face:11,"Left-leg":12,"Right-leg":13,"Left-arm":14,"Right-arm":15,Bag:16,Scarf:17},segformer_b3_fashion:{Unlabelled:0,"shirt, blouse":1,"top, t-shirt, sweatshirt":2,sweater:3,cardigan:4,jacket:5,vest:6,pants:7,shorts:8,skirt:9,coat:10,dress:11,jumpsuit:12,cape:13,glasses:14,hat:15,"headband, head covering, hair accessory":16,tie:17,glove:18,watch:19,belt:20,"leg warmer":21,"tights, stockings":22,sock:23,shoe:24,"bag, wallet":25,scarf:26,umbrella:27,hood:28,collar:29,lapel:30,epaulette:31,sleeve:32,pocket:33,neckline:34,buckle:35,zipper:36,applique:37,bead:38,bow:39,flower:40,fringe:41,ribbon:42,rivet:43,ruffle:44,sequin:45,tassel:46},face_parsing:["background","skin","nose","eyeglasses","left_eye","right_eye","left_eyebrow","right_eyebrow","left_ear","right_ear","mouth","upper_lip","lower_lip","hair","hat","earring","necklace","neck","clothing"]},Oe={ALWAYS:0,NEVER:2,BYPASS:4},Me="easyuse_nodes_map",De="data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABkAAD/4QMyaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA5LjEtYzAwMSA3OS4xNDYyODk5Nzc3LCAyMDIzLzA2LzI1LTIzOjU3OjE0ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjUuMyAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2RkFERDc2MUNDRkIxMUVGQjFENkE0NzFCNTUzRkQ0MCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2RkFERDc2MkNDRkIxMUVGQjFENkE0NzFCNTUzRkQ0MCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjUyMkMxRkIyQ0M0QzExRUZCMUQ2QTQ3MUI1NTNGRDQwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGQURENzYwQ0NGQjExRUZCMUQ2QTQ3MUI1NTNGRDQwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/+4ADkFkb2JlAGTAAAAAAf/bAIQAAQEBAQEBAQEBAQEB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",Re="rgba(24,24,27,.9)",Pe={ColorPalette:{version:112,id:"obsidian",name:"Obsidian",colors:{node_slot:{CLIP:"#FFD500",CLIP_VISION:"#A8DADC",CLIP_VISION_OUTPUT:"#ad7452",CONDITIONING:"#FFA931",CONTROL_NET:"#6EE7B7",IMAGE:"#64B5F6",LATENT:"#FF9CF9",MASK:"#81C784",MODEL:"#B39DDB",STYLE_MODEL:"#C2FFAE",VAE:"#FF6E6E",TAESD:"#DCC274",PIPE_LINE:"#7737AA",PIPE_LINE_SDXL:"#7737AA",INT:"#29699C",X_Y:"#38291f",XYPLOT:"#74DA5D",LORA_STACK:"#94dccd",CONTROL_NET_STACK:"#94dccd",FAST_MODEL_LOADER:"#ffd399",SAMPLING:"#60a5fa"},litegraph_base:{BACKGROUND_IMAGE:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQBJREFUeNrs1rEKwjAUhlETUkj3vP9rdmr1Ysammk2w5wdxuLgcMHyptfawuZX4pJSWZTnfnu/lnIe/jNNxHHGNn//HNbbv+4dr6V+11uF527arU7+u63qfa/bnmh8sWLBgwYJlqRf8MEptXPBXJXa37BSl3ixYsGDBMliwFLyCV/DeLIMFCxYsWLBMwSt4Be/NggXLYMGCBUvBK3iNruC9WbBgwYJlsGApeAWv4L1ZBgsWLFiwYJmCV/AK3psFC5bBggULloJX8BpdwXuzYMGCBctgwVLwCl7Be7MMFixYsGDBsu8FH1FaSmExVfAxBa/gvVmwYMGCZbBg/W4vAQYA5tRF9QYlv/QAAAAASUVORK5CYII=",CLEAR_BACKGROUND_COLOR:"#222222",NODE_TITLE_COLOR:"#d4d4d8",NODE_SELECTED_TITLE_COLOR:"#ffffff",NODE_TEXT_SIZE:14,NODE_TEXT_COLOR:"#ffffff",NODE_SUBTEXT_SIZE:12,NODE_DEFAULT_COLOR:"#09090b",NODE_DEFAULT_BGCOLOR:"rgba(24,24,27,.9)",NODE_DEFAULT_BOXCOLOR:"rgba(255,255,255,.75)",NODE_DEFAULT_SHAPE:2,NODE_BOX_OUTLINE_COLOR:"#60a5fa",NODE_BYPASS_BGCOLOR:"#FF00FF",NODE_ERROR_COLOUR:"#E00",DEFAULT_SHADOW_COLOR:"rgba(0,0,0,0)",DEFAULT_GROUP_FONT:24,WIDGET_BGCOLOR:"#242427",WIDGET_OUTLINE_COLOR:"#3f3f46",WIDGET_TEXT_COLOR:"#d4d4d8",WIDGET_SECONDARY_TEXT_COLOR:"#d4d4d8",LINK_COLOR:"#9A9",EVENT_LINK_COLOR:"#A86",CONNECTING_LINK_COLOR:"#AFA"},comfy_base:{"fg-color":"#fff","bg-color":"#09090b","comfy-menu-bg":"rgba(24,24,24,.9)","comfy-input-bg":"#262626","input-text":"#ddd","descrip-text":"#999","drag-text":"#ccc","error-text":"#ff4444","border-color":"#29292c","tr-even-bg-color":"rgba(28,28,28,.9)","tr-odd-bg-color":"rgba(19,19,19,.9)"}}},NODE_COLORS:{red:{color:"#af3535",bgcolor:Re,groupcolor:"#A88"},brown:{color:"#38291f",bgcolor:Re,groupcolor:"#b06634"},green:{color:"#346434",bgcolor:Re,groupcolor:"#8A8"},blue:{color:"#1f1f48",bgcolor:Re,groupcolor:"#88A"},pale_blue:{color:"#006691",bgcolor:Re,groupcolor:"#3f789e"},cyan:{color:"#008181",bgcolor:Re,groupcolor:"#8AA"},purple:{color:"#422342",bgcolor:Re,groupcolor:"#a1309b"},yellow:{color:"#c09430",bgcolor:Re,groupcolor:"#b58b2a"},black:{color:"rgba(0,0,0,.8)",bgcolor:Re,groupcolor:"#444"}}};let Ge=JSON.parse(JSON.stringify(Pe));delete Ge.NODE_COLORS,Ge.ColorPalette.id="obsidian_dark",Ge.ColorPalette.name="Obsidian Dark",Ge.ColorPalette.colors.litegraph_base.BACKGROUND_IMAGE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGlmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4xLWMwMDEgNzkuMTQ2Mjg5OSwgMjAyMy8wNi8yNS0yMDowMTo1NSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI1LjEgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyMy0xMS0xM1QwMDoxODowMiswMTowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMTEtMTVUMDI6MDQ6NTkrMDE6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMTEtMTVUMDI6MDQ6NTkrMDE6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmIyYzRhNjA5LWJmYTctYTg0MC1iOGFlLTk3MzE2ZjM1ZGIyNyIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjk0ZmNlZGU4LTE1MTctZmQ0MC04ZGU3LWYzOTgxM2E3ODk5ZiIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjIzMWIxMGIwLWI0ZmItMDI0ZS1iMTJlLTMwNTMwM2NkMDdjOCI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjMxYjEwYjAtYjRmYi0wMjRlLWIxMmUtMzA1MzAzY2QwN2M4IiBzdEV2dDp3aGVuPSIyMDIzLTExLTEzVDAwOjE4OjAyKzAxOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjUuMSAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ4OWY1NzlmLTJkNjUtZWQ0Zi04OTg0LTA4NGE2MGE1ZTMzNSIgc3RFdnQ6d2hlbj0iMjAyMy0xMS0xNVQwMjowNDo1OSswMTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDI1LjEgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiMmM0YTYwOS1iZmE3LWE4NDAtYjhhZS05NzMxNmYzNWRiMjciIHN0RXZ0OndoZW49IjIwMjMtMTEtMTVUMDI6MDQ6NTkrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyNS4xIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4OTe6GAAAAx0lEQVR42u3WMQoAIQxFwRzJys77X8vSLiRgITif7bYbgrwYc/mKXyBoY4VVBgsWLFiwYFmOlTv+9jfDOjHmr8u6eVkGCxYsWLBgmc5S8ApewXvgYRksWLBgKXidpeBdloL3wMOCBctgwVLwCl7BuyyDBQsWLFiwTGcpeAWv4D3wsAwWLFiwFLzOUvAuS8F74GHBgmWwYCl4Ba/gXZbBggULFixYprMUvIJX8B54WAYLFixYCl5nKXiXpeA98LBgwTJYsGC9tg1o8f4TTtqzNQAAAABJRU5ErkJggg==",Ge.ColorPalette.colors.litegraph_base.CLEAR_BACKGROUND_COLOR="#09090b";const ze="#FFFFFF",Ve={ColorPalette:{id:"milk_white",name:"Milk White",colors:{node_slot:{CLIP:"#FFA726",CLIP_VISION:"#5C6BC0",CLIP_VISION_OUTPUT:"#8D6E63",CONDITIONING:"#EF5350",CONTROL_NET:"#66BB6A",IMAGE:"#42A5F5",LATENT:"#AB47BC",MASK:"#9CCC65",MODEL:"#7E57C2",STYLE_MODEL:"#D4E157",VAE:"#FF7043",PIPE_LINE:"#7737AA",PIPE_LINE_SDXL:"#7737AA",INT:"#29699C",X_Y:"#38291f",XYPLOT:"#74DA5D",LORA_STACK:"#94dccd",CONTROL_NET_STACK:"#94dccd",FAST_MODEL_LOADER:"#ffd399",SAMPLING:"#60a5fa"},litegraph_base:{BACKGROUND_IMAGE:"data:image/gif;base64,R0lGODlhZABkALMAAAAAAP///+vr6+rq6ujo6Ofn5+bm5uXl5d3d3f///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAABkAGQAAAT/UMhJq7046827HkcoHkYxjgZhnGG6si5LqnIM0/fL4qwwIMAg0CAsEovBIxKhRDaNy2GUOX0KfVFrssrNdpdaqTeKBX+dZ+jYvEaTf+y4W66mC8PUdrE879f9d2mBeoNLfH+IhYBbhIx2jkiHiomQlGKPl4uZe3CaeZifnnijgkESBqipqqusra6vsLGys62SlZO4t7qbuby7CLa+wqGWxL3Gv3jByMOkjc2lw8vOoNSi0czAncXW3Njdx9Pf48/Z4Kbbx+fQ5evZ4u3k1fKR6cn03vHlp7T9/v8A/8Gbp4+gwXoFryXMB2qgwoMMHyKEqA5fxX322FG8tzBcRnMW/zlulPbRncmQGidKjMjyYsOSKEF2FBlJQMCbOHP6c9iSZs+UnGYCdbnSo1CZI5F64kn0p1KnTH02nSoV3dGTV7FFHVqVq1dtWcMmVQZTbNGu72zqXMuW7danVL+6e4t1bEy6MeueBYLXrNO5Ze36jQtWsOG97wIj1vt3St/DjTEORss4nNq2mDP3e7w4r1bFkSET5hy6s2TRlD2/mSxXtSHQhCunXo26NevCpmvD/UU6tuullzULH76q92zdZG/Ltv1a+W+osI/nRmyc+fRi1Xdbh+68+0vv10dH3+77KD/i6IdnX669/frn5Zsjh4/2PXju8+8bzc9/6fj27LFnX11/+IUnXWl7BJfegm79FyB9JOl3oHgSklefgxAC+FmFGpqHIYcCfkhgfCohSKKJVo044YUMttggiBkmp6KFXw1oII24oYhjiDByaKOOHcp3Y5BD/njikSkO+eBREQAAOw==",CLEAR_BACKGROUND_COLOR:"lightgray",NODE_TITLE_COLOR:"#222",NODE_SELECTED_TITLE_COLOR:"#000",NODE_TEXT_SIZE:14,NODE_TEXT_COLOR:"#444",NODE_SUBTEXT_SIZE:12,NODE_DEFAULT_COLOR:"#F7F7F7",NODE_DEFAULT_BGCOLOR:"#F5F5F5",NODE_DEFAULT_BOXCOLOR:"#555",NODE_DEFAULT_SHAPE:2,NODE_BOX_OUTLINE_COLOR:"#000",DEFAULT_SHADOW_COLOR:"rgba(0,0,0,0.1)",DEFAULT_GROUP_FONT:24,WIDGET_BGCOLOR:"#D4D4D4",WIDGET_OUTLINE_COLOR:"#999",WIDGET_TEXT_COLOR:"#222",WIDGET_SECONDARY_TEXT_COLOR:"#555",LINK_COLOR:"#9A9",EVENT_LINK_COLOR:"#FF9800",CONNECTING_LINK_COLOR:"#222"},comfy_base:{"fg-color":"#222","bg-color":"#DDD","comfy-menu-bg":"#F5F5F5","comfy-input-bg":"#C9C9C9","input-text":"#222","descrip-text":"#444","drag-text":"#555","error-text":"#F44336","border-color":"#bbb","tr-even-bg-color":"#f9f9f9","tr-odd-bg-color":"#fff","content-bg":"#e0e0e0","content-fg":"#222","content-hover-bg":"#adadad","content-hover-fg":"#222"}}},NODE_COLORS:{red:{color:"#af3535",bgcolor:ze,groupcolor:"#A88"},brown:{color:"#38291f",bgcolor:ze,groupcolor:"#b06634"},green:{color:"#346434",bgcolor:ze,groupcolor:"#8A8"},blue:{color:"#1f1f48",bgcolor:ze,groupcolor:"#88A"},pale_blue:{color:"#006691",bgcolor:ze,groupcolor:"#3f789e"},cyan:{color:"#008181",bgcolor:ze,groupcolor:"#8AA"},purple:{color:"#422342",bgcolor:ze,groupcolor:"#a1309b"},yellow:{color:"#c09430",bgcolor:ze,groupcolor:"#b58b2a"},black:{color:"rgba(0,0,0,.8)",bgcolor:ze,groupcolor:"#444"}}},je={addGroup:{id:"EasyUse.Hotkeys.AddGroup",name:"Enable Shift+g to add selected nodes to a group",tooltip:"After v1.2.39, Ctrl+g can be used instead of it",type:"boolean",defaultValue:!0},cleanVRAMUsed:{id:"EasyUse.Hotkeys.cleanVRAMUsed",name:"Enable Shift+r to unload models and node cache",type:"boolean",defaultValue:!0},toggleSiteMap:{id:"EasyUse.Hotkeys.toggleNodesMap",name:"Enable Shift+m to toggle nodes map",type:"boolean",defaultValue:!0},alignSelectedNodes:{id:"EasyUse.Hotkeys.AlignSelectedNodes",name:"Enable Shift+Up/Down/Left/Right key and Shift+Ctrl+Alt+Left/Right to align selected nodes",tooltip:"Shift+Up/Down/Left/Right can align selected nodes, Shift+Ctrl+Alt+Left/Right can distribute horizontal/vertical nodes",type:"boolean",defaultValue:!0},NormalizeSelectedNodes:{id:"EasyUse.Hotkeys.NormalizeSelectedNodes",name:"Enable Shift+Ctrl+Left/Right key to normalize selected nodes",tooltip:"Enable Shift+Ctrl+Left key to normalize width and Shift+Ctrl+Right key to normalize height",type:"boolean",defaultValue:!0},nodesTemplate:{id:"EasyUse.Hotkeys.NodesTemplate",name:"Enable Alt+1~9 to paste nodes from nodes template",type:"boolean",defaultValue:!0},jumpNearestNodes:{id:"EasyUse.Hotkeys.JumpNearestNodes",name:"Enable Up/Down/Left/Right key to jump nearest nodes",type:"boolean",defaultValue:!0},subDirectories:{id:"EasyUse.ContextMenu.SubDirectories",name:"Enable contextMenu auto nest subdirectories",type:"boolean",defaultValue:!1},modelsThumbnails:{id:"EasyUse.ContextMenu.ModelsThumbnails",name:"Enable model thumbnails display",type:"boolean",defaultValue:!1},rightMenuNodesSort:{id:"EasyUse.ContextMenu.NodesSort",name:"Enable right-click menu to add node A~Z sorting",type:"boolean",defaultValue:!0},quickOptions:{id:"EasyUse.ContextMenu.QuickOptions",name:"Use three shortcut buttons in the right-click menu",type:"combo",options:["At the forefront","At the end","Disable"],defaultValue:"At the forefront"},nodesRuntime:{id:"EasyUse.Nodes.Runtime",name:"Enable nodes runtime display",type:"boolean",defaultValue:!0},chainGetSet:{id:"EasyUse.Nodes.ChainGetSet",name:"Enable chain get node and set node with parent nodes",type:"boolean",defaultValue:!0},nodesMap:{id:"EasyUse.NodesMap.Sorting",name:"Nodes map sorting mode",tooltip:"Default automatic sorting, if set to manual, groups can be dragged and dropped and the sorting results saved.",type:"combo",options:["Auto sorting","Manual drag&drop sorting"],defaultValue:"Auto sorting"},displayNodesID:{id:"EasyUse.NodesMap.DisplayNodeID",name:"Display Node ID",type:"boolean",defaultValue:!0},onlyDisplayGroup:{id:"EasyUse.NodesMap.DisplayGroupOnly",name:"Display Groups Only",type:"boolean",defaultValue:!1},enableNodesMap:{id:"EasyUse.NodesMap.Enable",name:"Enable Nodes Map",tooltip:"You need to refresh the page to update successfully",type:"boolean",defaultValue:!0},stylesSelectorDisplay:{id:"EasyUse.StylesSelector.DisplayType",name:"Styles Selector Display Type",tooltip:"Styles Selector Display Type, if set to 'Grid', it will display as a Grid, if set to 'List', it will display as a list",type:"combo",options:["Grid","List"],defaultValue:"Grid"},enableAddAnglePrompt:{id:"EasyUse.MultiAngle.AddAnglePrompt",name:"Add angle prompt in easy multiAngle",type:"boolean",defaultValue:!1},enableHollowMode:{id:"EasyUse.MultiAngle.HollowMode",name:"Enable hollow display mode in easy multiAngle",type:"boolean",defaultValue:!1}};function We(e=100,t){return new Promise((i=>{setTimeout((()=>{i(t)}),e)}))}function Ue(e,t){if(e="number"==typeof e?e:e instanceof Date?e.getTime():parseInt(e),isNaN(e))return null;let i=new Date(e);(e=i.toString().split(/[\s\:]/g).slice(0,-2))[1]=["01","02","03","04","05","06","07","08","09","10","11","12"][i.getMonth()];let s={MM:1,dd:2,yyyy:3,hh:4,mm:5,ss:6};return t.replace(/([Mmdhs]|y{2})\1/g,(t=>e[s[t]]))}const Fe=/Mac|iPod|iPhone|iPad/.test(navigator.platform),Xe=e=>Fe?e.replace(/Ctrl/g,"⌘").replace(/Alt/g,"⌥").replace(/Shift/g,"⇧"):e;const Ze=new class{constructor(){v(this,"element",me(`div.${ke}toast`)),v(this,"children",HTMLElement),v(this,"container",document.body),v(this,"info_icon",`mdi mdi-information ${ke}theme`),v(this,"success_icon",`mdi mdi-check-circle ${ke}success`),v(this,"error_icon",`mdi mdi-close-circle ${ke}error`),v(this,"warn_icon",`mdi mdi-alert-circle ${ke}warning`),v(this,"loading_icon","mdi mdi-rotate-right loading"),this.container.appendChild(this.element)}async show(e){let t=me(`div.${ke}toast-container`,[me("div",[me("span",[...e.icon?[me("i",{className:e.icon})]:[],me("span",e.content)])])]);t.setAttribute("toast-id",e.id),this.element.replaceChildren(t),this.container.appendChild(this.element),await We(64),t.style.marginTop=`-${t.offsetHeight}px`,await We(64),t.classList.add("show"),e.duration&&(await We(e.duration),this.hide(e.id))}async hide(e){const t=document.querySelector(`.${ke}toast > [toast-id="${e}"]`);(null==t?void 0:t.classList.contains("show"))&&(t.classList.remove("show"),await We(750)),t&&t.remove()}async clearAllMessages(){let e=document.querySelector(`.${ke}container`);e&&(e.innerHTML="")}async info(e,t=3e3,i=[]){this.show({id:"toast-info",icon:this.info_icon,content:e,duration:t})}async success(e,t=3e3){this.show({id:"toast-success",icon:this.success_icon,content:e,duration:t})}async error(e,t=3e3){this.show({id:"toast-error",icon:this.error_icon,content:e,duration:t})}async warn(e,t=3e3){this.show({id:"toast-warn",icon:this.warn_icon,content:e,duration:t})}async showLoading(e,t=0){this.show({id:"toast-loading",icon:this.loading_icon,content:e,duration:t})}async hideLoading(){this.hide("toast-loading")}},He=S("groups",{state:e=>({groups:[],nodes:[],isWatching:!1}),getters:{groups_nodes(){var e;let t=[],i=[];const s=e=>{var t;return{info:e,children:(null==(t=e.sub_groups)?void 0:t.length)>0?e.sub_groups.map(s):[],bounds:{x1:e.pos[0],y1:e.pos[1],x2:e.pos[0]+e.size[0],y2:e.pos[1]+e.size[1]}}};if(t=this.groups.map(s),(null==(e=this.nodes)?void 0:e.length)>0){const e=(e,t)=>e[0]>=t.x1&&e[0]<=t.x2&&e[1]>=t.y1&&e[1]<=t.y2,s=(t,i)=>{let s=null,a=-1;const n=(i,o)=>{i.bounds&&e(t.pos,i.bounds)&&(o>a&&(a=o,s=i),i.children.forEach((e=>n(e,o+1))))};return i.forEach((e=>n(e,0))),s};this.nodes.forEach((e=>{const a=s(e,t);a?(a.children||(a.children=[]),a.children.push(e)):i.push({info:e})}))}return[...t,...i]}},actions:{setGroups(e){let t=R(e);t.forEach((e=>{e.sub_groups=[],t.forEach((t=>{t!==e&&t.pos[0]>e.pos[0]&&t.pos[0]e.pos[1]&&t.pos[1]{t=t.filter((t=>t!==e))}))})),this.groups="Manual drag&drop sorting"==we("EasyUse.NodesMap.Sorting")?R(t):R(t.sort(((e,t)=>e.pos[0]-t.pos[0])).sort(((e,t)=>e.pos[1]-t.pos[1])))},setNodes(e){this.nodes=R(e)},update(){var e,t,i;(((null==(e=pe.extensionManager)?void 0:e.activeSidebarTab)||(null==(i=null==(t=pe.extensionManager.sidebarTab)?void 0:t.activeSidebarTab)?void 0:i.id))===Me||this.isWatching)&&setTimeout((e=>{this.setGroups(pe.canvas.graph._groups),this.setNodes(pe.canvas.graph._nodes)}),1)},watchGraph(e=!1){e&&(this.isWatching=!0);let t=this;this.update();const i=pe.graph.onNodeAdded;pe.graph.onNodeAdded=function(e){t.update();const s=e.onRemoved;return e.onRemoved=function(){return t.update(),null==s?void 0:s.apply(this,arguments)},null==i?void 0:i.apply(this,arguments)},pe.canvas.onNodeMoved=function(e){t.update()};const s=LGraphCanvas.onNodeAlign;LGraphCanvas.onNodeAlign=function(e){return t.update(),null==s?void 0:s.apply(this,arguments)};const a=LGraphCanvas.onGroupAdd;LGraphCanvas.onGroupAdd=function(){return t.update(),null==a?void 0:a.apply(this,arguments)};const n=LGraphCanvas.onGroupAlign;LGraphCanvas.onGroupAlign=function(e){return t.update(),null==n?void 0:n.apply(this,arguments)};const o=LGraphCanvas.onMenuNodeRemove;LGraphCanvas.onMenuNodeRemove=function(e){return t.update(),null==o?void 0:o.apply(this,arguments)}},unwatchGraph(){this.isWatching=!1}}});const qe={BOX:1,ROUND:2,CIRCLE:3,CARD:4,ARROW:5,GRID:6,HollowCircle:7};function Ye(e,t,i={}){const{shape:s=qe.BOX,round_radius:a=LiteGraph.ROUND_RADIUS,title_height:n=LiteGraph.NODE_TITLE_HEIGHT,title_mode:o=LiteGraph.NORMAL_TITLE,color:l=LiteGraph.NODE_BOX_OUTLINE_COLOR,padding:r=6,collapsed:d=!1,thickness:u=1}=i;o===LiteGraph.TRANSPARENT_TITLE&&(t[1]-=n,t[3]+=n);const{lineWidth:A,strokeStyle:c}=e;e.lineWidth=u,e.globalAlpha=.8,e.strokeStyle=l,e.beginPath();const[p,h,m,f]=t;switch(s){case qe.BOX:e.rect(p-r,h-r,m+2*r,f+2*r);break;case qe.ROUND:case qe.CARD:{const t=a+r,i=s===qe.CARD&&d||s===qe.ROUND?[t]:[t,2,t,2];e.roundRect(p-r,h-r,m+2*r,f+2*r,i);break}case qe.CIRCLE:{const t=p+m/2,i=h+f/2,s=Math.max(m,f)/2+r;e.arc(t,i,s,0,2*Math.PI);break}}e.stroke(),e.lineWidth=A,e.strokeStyle=c,e.globalAlpha=1}function Ke(e,t,i){var s,a;let n=0,o=null==(s=e[0])?void 0:s.naturalWidth,l=null==(a=e[0])?void 0:a.naturalHeight;const r=e.length;let d,u,A,c,p;for(let h=1;h<=r;h++){const e=Math.ceil(r/h),s=t/h,a=s/o,m=i/e/l,f=Math.min(a,m,1),g=o*f,v=l*f,y=g*v*r;y>n&&(n=y,d=g,u=v,A=h,c=e,p=h*((s-g)/2))}return{cellWidth:d,cellHeight:u,cols:A,rows:c,shiftX:p}}class Je{constructor(e,t){this.type="custom",this.name=e,this.options=t,this.value=""}draw(e,t,i,s,a){((e,t,i)=>{const s=pe.canvas,a=s.graph_mouse;!s.pointer_is_down&&t.pointerDown&&(a[0]===t.pointerDown.pos[0]&&a[1]===t.pointerDown.pos[1]&&(t.imageIndex=t.pointerDown.index),t.pointerDown=null);const n=t.imgs??[];let{imageIndex:o}=t;const l=n.length;1!==l||o||(t.imageIndex=o=0);const r=t.size[0],d=t.size[1]-i-15;if(null==o){let o,u,A,c,p;const h=(e=>{if(!e.length||1===e.length)return!0;const t=e[0].naturalWidth/e[0].naturalHeight;for(let i=1;iMath.max(e,t.naturalWidth,t.naturalHeight)),0),t=[];t.length=n.length,t[0]={naturalWidth:e,naturalHeight:e},({cellWidth:o,cellHeight:u,cols:p,shiftX:A}=Ke(t,r,d))}let m=!1;t.imageRects=[];for(let r=0;r{let r="#333",d="#fff",u=!1;return LiteGraph.isInsideRectangle(a[0],a[1],i+t.pos[0],n+t.pos[1],o,o)&&(s.canvas.style.cursor="pointer",s.pointer_is_down?(r="#1e90ff",u=!0):(r="#eee",d="#000")),e.fillStyle=r,e.beginPath(),e.roundRect(i,n,o,o,[4]),e.fill(),e.fillStyle=d,e.font="12px Arial",e.textAlign="center",e.fillText(l,i+15,n+20),u};if(!(l>1))return;const w=(t.imageIndex??0)+1;if(b(r-40,d+i-40,30,`${w}/${l}`)){const e=w>=l?0:w;t.pointerDown&&t.pointerDown.index===e||(t.pointerDown={index:e,pos:[...a]})}b(r-40,i+10,30,"x")&&(t.pointerDown&&null===t.pointerDown.index||(t.pointerDown={index:null,pos:[...a]}))})(e,t,s)}computeLayoutSize(e,t){return{minHeight:220,minWidth:1}}}const Be=()=>(e,t)=>e.addCustomWidget(new Je(t.name,{serialize:!1}));function Qe(e,t,i,s,a,n){return e>=i&&e=s&&t=i&&e=s&&t=e[0]&&this.y+this.height>=e[1]}containsRect(e){return this.x<=e[0]&&this.y<=e[1]&&this.x+this.width>=e[0]+e[2]&&this.y+this.height>=e[1]+e[3]}overlaps(e){return this.xe[0]&&this.y+this.height>e[1]}findContainingCorner(e,t,i){return this.isInTopLeftCorner(e,t,i)?"NW":this.isInTopRightCorner(e,t,i)?"NE":this.isInBottomLeftCorner(e,t,i)?"SW":this.isInBottomRightCorner(e,t,i)?"SE":void 0}isInTopLeftCorner(e,t,i){return Qe(e,t,this.x,this.y,i,i)}isInTopRightCorner(e,t,i){return Qe(e,t,this.right-i,this.y,i,i)}isInBottomLeftCorner(e,t,i){return Qe(e,t,this.x,this.bottom-i,i,i)}isInBottomRightCorner(e,t,i){return Qe(e,t,this.right-i,this.bottom-i,i,i)}isInTopEdge(e,t,i){return Qe(e,t,this.x,this.y,this.width,i)}isInBottomEdge(e,t,i){return Qe(e,t,this.x,this.bottom-i,this.width,i)}isInLeftEdge(e,t,i){return Qe(e,t,this.x,this.y,i,this.height)}isInRightEdge(e,t,i){return Qe(e,t,this.right-i,this.y,i,this.height)}getCentre(){return[this.centreX,this.centreY]}getArea(){return this.width*this.height}getPerimeter(){return 2*(this.width+this.height)}getTopLeft(){return[this[0],this[1]]}getBottomRight(){return[this.right,this.bottom]}getSize(){return[this[2],this[3]]}getOffsetTo([e,t]){return[e-this[0],t-this[1]]}getOffsetFrom([e,t]){return[this[0]-e,this[1]-t]}resizeTopLeft(e,t){this[2]+=this[0]-e,this[3]+=this[1]-t,this[0]=e,this[1]=t}resizeBottomLeft(e,t){this[2]+=this[0]-e,this[3]=t-this[1],this[0]=e}resizeTopRight(e,t){this[2]=e-this[0],this[3]+=this[1]-t,this[1]=t}resizeBottomRight(e,t){this[2]=e-this[0],this[3]=t-this[1]}setWidthRightAnchored(e){const t=this[2];this[2]=e,this[0]+=t-e}setHeightBottomAnchored(e){const t=this[3];this[3]=e,this[1]+=t-e}toArray(){return this.export()}export(){return[this[0],this[1],this[2],this[3]]}_drawDebug(e,t="red"){const{strokeStyle:i,lineWidth:s}=e;try{e.strokeStyle=t,e.lineWidth=.5,e.beginPath(),e.strokeRect(this[0],this[1],this[2],this[3])}finally{e.strokeStyle=i,e.lineWidth=s}}}h=new WeakMap,m=new WeakMap;const et=(e,...t)=>function(...i){null==e||e.call(this,...i),t.forEach((e=>e.call(this,...i)))},tt=(e,...t)=>function(...i){try{t.forEach((e=>null==e?void 0:e.call(this,...i)))}catch(s){null==e||e.call(this,...i,s)}};let it=null;const st=new Image;st.src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3E%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='white' stroke-linecap='round' stroke-width='1.3' d='M9.18613 3.09999H6.81377M9.18613 12.9H7.55288c-3.08678 0-5.35171-2.99581-4.60305-6.08843l.3054-1.26158M14.7486 2.1721l-.5931 2.45c-.132.54533-.6065.92789-1.1508.92789h-2.2993c-.77173 0-1.33797-.74895-1.1508-1.5221l.5931-2.45c.132-.54533.6065-.9279 1.1508-.9279h2.2993c.7717 0 1.3379.74896 1.1508 1.52211Zm-8.3033 0-.59309 2.45c-.13201.54533-.60646.92789-1.15076.92789H2.4021c-.7717 0-1.33793-.74895-1.15077-1.5221l.59309-2.45c.13201-.54533.60647-.9279 1.15077-.9279h2.29935c.77169 0 1.33792.74896 1.15076 1.52211Zm8.3033 9.8-.5931 2.45c-.132.5453-.6065.9279-1.1508.9279h-2.2993c-.77173 0-1.33797-.749-1.1508-1.5221l.5931-2.45c.132-.5453.6065-.9279 1.1508-.9279h2.2993c.7717 0 1.3379.7489 1.1508 1.5221Z'/%3E%3C/svg%3E %3C/svg%3E";const at=["custom_obsidian","custom_obsidian_dark","custom_milk_white","obsidian_dark","obsidian","milk_white"],nt={"easy positive":"green","easy negative":"red","easy promptList":"cyan","easy promptLine":"cyan","easy promptConcat":"cyan","easy promptReplace":"cyan","easy forLoopStart":"blue","easy forLoopEnd":"blue","easy whileLoopStart":"blue","easy whileLoopEnd":"blue","easy loadImagesForLoop":"blue"};let ot=LGraphCanvas.node_colors,lt=null,rt=null,dt=null,ut=new $e;for(let Ja in je)At=je[Ja],pe.ui.settings.settingsLookup[At.id]||pe.ui.settings.addSetting(At);var At;function ct(e,t,i,s,a,n){var o,l,r;t.strokeStyle=s,t.fillStyle=a;const d=LiteGraph.NODE_TITLE_HEIGHT,{low_quality:u}=this,{collapsed:A}=e.flags,c=e.renderingShape,{title_mode:p}=e.constructor,h=p!=LiteGraph.TRANSPARENT_TITLE&&p!=LiteGraph.NO_TITLE,m=ut;m.set(e.boundingRect),m[0]-=e.pos[0],m[1]-=e.pos[1];let f=t.globalAlpha;if(t.lineWidth=1,t.beginPath(),c==LiteGraph.BOX_SHAPE||u?t.fillRect(m[0],m[1],m[2],m[3]):c==LiteGraph.ROUND_SHAPE||c==LiteGraph.CARD_SHAPE?t.roundRect(m[0],m[1],m[2],m[3],c==LiteGraph.CARD_SHAPE?[this.round_radius,this.round_radius,0,0]:[this.round_radius]):c==LiteGraph.CIRCLE_SHAPE&&t.arc(.5*i[0],.5*i[1],.5*i[0],0,2*Math.PI),t.strokeStyle=LiteGraph.WIDGET_OUTLINE_COLOR,t.stroke(),t.strokeStyle=s,t.fill(),e.has_errors&&!LiteGraph.use_legacy_node_error_indicator&&Ye(t,m,{shape:c,title_mode:p,title_height:d,padding:12,color:LiteGraph.NODE_ERROR_COLOUR,collapsed:A,thickness:10}),!A&&h&&(t.shadowColor="transparent",t.fillStyle="rgba(0,0,0,0.2)",t.fillRect(0,-1,m[2],2)),t.shadowColor="transparent",e.onDrawBackground&&e.onDrawBackground(t,this,this.canvas,this.graph_mouse),h||p==LiteGraph.TRANSPARENT_TITLE){const s="dark"==function(e){let t=e.replace("#","");return i=parseInt(t.substring(0,2),16),s=parseInt(t.substring(2,4),16),a=parseInt(t.substring(4,6),16),.299*i+.587*s+.114*a>127.5?"light":"dark";var i,s,a}((null==e?void 0:e.color)||"#ffffff");e.drawTitleBarBackground(t,{scale:this.ds.scale,low_quality:u});let a=!1;LiteGraph.node_box_coloured_by_mode&&LiteGraph.NODE_MODES_COLORS[e.mode]&&(a=LiteGraph.NODE_MODES_COLORS[e.mode]),LiteGraph.node_box_coloured_when_on&&(a=e.action_triggered?"#FFF":e.execute_triggered?"#AAA":a);let l=10;if(e.onDrawTitleBox)e.onDrawTitleBox(t,d,i,this.ds.scale);else if([LiteGraph.ROUND_SHAPE,LiteGraph.CIRCLE_SHAPE,LiteGraph.CARD_SHAPE].includes(c))if(u&&(t.fillStyle="black",t.beginPath(),t.arc(.5*d,-.5*d,.5*l+1,0,2*Math.PI),t.fill()),e.subgraph&&!e.skip_subgraph_button)t.save(),t.fillStyle="#3b82f6",t.beginPath(),t.roundRect(6,-24.5,22,20,5),t.fill(),u||(t.translate(25,23),t.scale(-1.5,1.5),t.drawImage(st,0,-d,l,l)),t.restore();else{const i=s?"#ffffff":LiteGraph.NODE_SELECTED_TITLE_COLOR,o=s?"#eeeeee":e.boxcolor||a||LiteGraph.NODE_DEFAULT_BOXCOLOR;t.fillStyle=n?i:o,t.beginPath(),t.fillRect(10,0-1.05*l-1,1.1*l,.125*l),t.fillRect(10,0-1.45*l-1,1.1*l,.125*l),t.fillRect(10,0-1.85*l-1,1.1*l,.125*l)}else u&&(t.fillStyle="black",t.fillRect(.5*(d-l)-1,-.5*(d+l)-1,l+2,l+2)),t.fillStyle=e.renderingBoxColor,t.fillRect(.5*(d-l),-.5*(d+l),l,l);if(t.globalAlpha=f,e.onDrawTitleText&&e.onDrawTitleText(t,d,i,this.ds.scale,this.title_text_font,n),!u){t.font=this.title_text_font;const i=e.getTitle()??`❌ ${e.type}`,a=String(i)+(e.pinned?"📌":"");a&&(t.fillStyle=n?s?"#ffffff":LiteGraph.NODE_SELECTED_TITLE_COLOR:s?"#ffffff":e.constructor.title_text_color||this.node_title_color,e.flags.collapsed?(t.textAlign="left",t.measureText(a),t.fillText(a.substr(0,20),d,LiteGraph.NODE_TITLE_TEXT_Y-d),t.textAlign="left"):(t.textAlign="left",t.fillText(a,d,LiteGraph.NODE_TITLE_TEXT_Y-d)))}null==(o=e.onDrawTitle)||o.call(e,t)}if(null==e?void 0:e.strokeStyles){for(const i of Object.values(e.strokeStyles)){const s=i.call(e);s&&Ye(t,m,{shape:c,title_height:d,title_mode:p,collapsed:A,...s})}null==e||e.drawProgressBar(t)}else if(n){null==(l=e.onBounding)||l.call(e,m),p==LiteGraph.TRANSPARENT_TITLE&&(m[1]-=d,m[3]+=d),t.lineWidth=2,t.globalAlpha=.8,t.beginPath();let a=0,n=0,o=1;c==LiteGraph.BOX_SHAPE?t.rect(a+m[0],a+m[1],n+m[2],n+m[3]):c==LiteGraph.ROUND_SHAPE||c==LiteGraph.CARD_SHAPE&&e.flags.collapsed?t.roundRect(a+m[0],a+m[1],n+m[2],n+m[3],[this.round_radius*o]):c==LiteGraph.CARD_SHAPE?t.roundRect(a+m[0],a+m[1],n+m[2],n+m[3],[this.round_radius*o,o,this.round_radius*o,o]):c==LiteGraph.CIRCLE_SHAPE&&t.arc(.5*i[0],.5*i[1],.5*i[0]+6,0,2*Math.PI),t.strokeStyle=LiteGraph.NODE_BOX_OUTLINE_COLOR,t.stroke(),t.strokeStyle=s,t.globalAlpha=1}null==(r=e.drawProgressBar)||r.call(e,t),e.execute_triggered>0&&e.execute_triggered--,e.action_triggered>0&&e.action_triggered--}function pt(e,t,i,s,a){return new LiteGraph.ContextMenu(LiteGraph.NODE_MODES,{event:i,callback:function(e){if(!a)return;var t=Object.values(LiteGraph.NODE_MODES).indexOf(e),i=function(e){t>=0&&LiteGraph.NODE_MODES[t]?e.changeMode(t):e.changeMode(LiteGraph.ALWAYS),it||(it=He()),it.update()},s=LGraphCanvas.active_canvas;if(!s.selected_nodes||Object.keys(s.selected_nodes).length<=1)i(a);else for(var n in s.selected_nodes)i(s.selected_nodes[n])},parentMenu:s,node:a}),!1}function ht(e,t,i,s,a){if(!a)throw"no node for color";var n=[];for(var o in n.push({value:null,content:"No color"}),LGraphCanvas.node_colors){var l=LGraphCanvas.node_colors[o];e={value:o,content:""+o+""};n.push(e)}return new LiteGraph.ContextMenu(n,{event:i,callback:function(e){if(!a)return;var t=e.value?LGraphCanvas.node_colors[e.value]:null,i=function(e){t?e.constructor===LiteGraph.LGraphGroup?e.color=t.groupcolor:(e.color=t.color,e.bgcolor=t.bgcolor):(delete e.color,delete e.bgcolor),it||(it=He()),it.update()},s=LGraphCanvas.active_canvas;if(!s.selected_nodes||Object.keys(s.selected_nodes).length<=1)i(a);else for(var n in s.selected_nodes)i(s.selected_nodes[n]);a.setDirtyCanvas(!0,!0)},parentMenu:s,node:a}),!1}function mt(e,t,i,s,a){var n=e.property||"title",o=a[n],l=document.createElement("div");l.is_modified=!1,l.className="graphdialog",l.innerHTML="",l.close=function(){l.parentNode&&l.parentNode.removeChild(l)},l.querySelector(".name").innerText=n;var r=l.querySelector(".value");r&&(r.value=o,r.addEventListener("blur",(function(e){this.focus()})),r.addEventListener("keydown",(function(e){if(l.is_modified=!0,27==e.keyCode)l.close();else if(13==e.keyCode)h();else if(13!=e.keyCode&&"textarea"!=e.target.localName)return;e.preventDefault(),e.stopPropagation()})));var d=LGraphCanvas.active_canvas.canvas,u=d.getBoundingClientRect(),A=-20,c=-20;u&&(A-=u.left,c-=u.top),event?(l.style.left=event.clientX+A+"px",l.style.top=event.clientY+c+"px"):(l.style.left=.5*d.width+A+"px",l.style.top=.5*d.height+c+"px"),l.querySelector("button").addEventListener("click",h),d.parentNode.appendChild(l),r&&r.focus();var p=null;function h(){r&&function(t){"Number"==e.type?t=Number(t):"Boolean"==e.type&&(t=Boolean(t));a[n]=t,l.parentNode&&l.parentNode.removeChild(l);a.setDirtyCanvas(!0,!0),it||(it=He());it.update()}(r.value)}l.addEventListener("mouseleave",(function(e){LiteGraph.dialog_close_on_mouse_leave&&!l.is_modified&&LiteGraph.dialog_close_on_mouse_leave&&(p=setTimeout(l.close,LiteGraph.dialog_close_on_mouse_leave_delay))})),l.addEventListener("mouseenter",(function(e){LiteGraph.dialog_close_on_mouse_leave&&p&&clearTimeout(p)}))}(e=>{try{pe.registerExtension(e)}catch(t){}})({name:"Comfy.EasyUse.UI",init(){var e,t;const i="Comfy.CustomColorPalettes",s="Comfy.Settings.Comfy.CustomColorPalettes";if(lt||(lt=we(i,s)),rt||(rt=we("Comfy.ColorPalette","Comfy.Settings.Comfy.ColorPalette")||"dark"),(!(null==(e=null==lt?void 0:lt.obsidian)?void 0:e.version)||lt.obsidian.version{(null==e?void 0:e.value)&&(null==e?void 0:e.oldValue)&&(await We(1),Object.assign(pe.canvas.default_connection_color_byType,Ne),Object.assign(LGraphCanvas.link_type_colors,Ne)),"custom_milk_white"==e.value&&document.body.classList.remove(Ee)})),setTimeout((e=>ft(we("Comfy.UseNewMenu")||"Disabled")),1);const t=null==(e=pe.ui.settings.settingsLookup)?void 0:e["Comfy.UseNewMenu"];t&&(t.onChange=e=>ft(e)),he.addEventListener("easyuse-toast",(e=>{const t=e.detail.content,i=e.detail.type,s=e.detail.duration;i?Ze.show({id:`toast-${i}`,icon:Ze[i+"_icon"],content:`${t}`,duration:s||3e3}):Ze.info(t,s)}))},async nodeCreated(e){if(nt.hasOwnProperty(e.comfyClass)){const t=nt[e.comfyClass],i=ot[t];if(!i)return;!e.bgcolor&&i.bgcolor&&(e.bgcolor=i.bgcolor),!e.color&&i.color&&(e.color=i.color)}}});const ft=e=>{var t;const i=(null==(t=document.getElementById("crystools-root"))?void 0:t.children)||null,s=we("Comfy.Workflow.WorkflowTabsPosition",null);if((null==i?void 0:i.length)>0&&s)if(dt||(dt=document.getElementById("MonitorUI")),"Disabled"==e){document.getElementById("crystools-root").appendChild(dt)}else{let e=document.getElementById("crystools-root-easyuse");if(e)e.appendChild(dt);else{const e=document.getElementsByClassName("comfyui-menu-right");e.length>0&&e[0].before(me("div",{id:"crystools-root-easyuse"},dt))}}};let gt={};const vt=(e,t)=>e.widgets.find((e=>e.name===t)),yt=(e,t,i=!1,s="")=>{var a;if(!t||((e,t,i)=>!!e.inputs&&e.inputs.some((e=>e.name===t&&e.link&&!i)))(e,t.name,i))return;gt[t.name]||(gt[t.name]={origType:t.type,origComputeSize:t.computeSize});const n=e.size;t.hidden=!i,t.type=i?gt[t.name].origType:"easyHidden"+s,t.computeSize=i?gt[t.name].origComputeSize:()=>[0,-4],null==(a=t.linkedWidgets)||a.forEach((s=>yt(e,s,":"+t.name,i)));const o=i?Math.max(e.computeSize()[1],n[1]):e.size[1];e.setSize([e.size[0],o])},bt=(e,t=0)=>{var i,s;if(e)return(null==(i=e.widgets)?void 0:i[t])?e.widgets[t].value:e.widgets_values?null==(s=e.widgets_values)?void 0:s[t]:void 0},wt=e=>e.setSize([e.size[0],e.computeSize()[1]]),_t=(e,t)=>graph.getNodeById(e),St=e=>{var t;try{return Object.values(null==(t=null==graph?void 0:graph.list_of_graphcanvas[0])?void 0:t.selected_nodes)}catch(i){return[]}};function xt(e,t,i){return e+(s=i,(.5-.5*Math.cos(Math.PI*s))*(t-e));var s}const Lt=(e,t=!0)=>{var i,s;const a=(null==(s=null==(i=e.graph)?void 0:i.list_of_graphcanvas)?void 0:s[0])||null;if(!a)return;const[n,o]=e.pos,[l,r]=e.size;(([e,t],i)=>{const s=i.ds,a=document.body.clientWidth,n=document.body.clientHeight,o=s.scale,l=.5*a/o-e,r=.5*n/o-t,d=Date.now()+250,u=s.offset[0],A=s.offset[1],c=()=>{const e=d-Date.now();if(!(Date.now(){const t=_t(e);t&&Lt(t)},Et=(e,t=(()=>graph.links??[])())=>t[e],Nt=e=>e.toLowerCase().replace(/_./g,(e=>e.replace("_","").toUpperCase())),Ct=e=>"easy getNode"===e.type,It=e=>"easy setNode"===e.type,Tt=e=>Ct(e)||It(e),Ot=(e=(()=>graph._nodes??[])())=>e.filter((e=>Tt(e)));let Mt={},Dt={};const Rt=(e,t,i=0)=>{e.widgets_values||(e.widgets_values=[]),e.widgets_values[i]=t,e.widgets[i].value=t},Pt=e=>graph.add(e),Gt=e=>graph.remove(e),zt=(e,t=0)=>{var i,s;if("Reroute"!==e.type)return[e,t];const a=e,n=null==(s=null==(i=a.inputs)?void 0:i[0])?void 0:s.link;if(!n)return[a,t];const o=Et(n);if(!o)return[a,t];const l=_t(o.origin_id);return l?(setTimeout((()=>{Gt(a)})),zt(l,o.origin_slot)):[a,t]},Vt=e=>{var t,i,s;if("Reroute"!==e.type)return e;const a=e,n=null==(i=null==(t=a.outputs)?void 0:t[0])?void 0:i.links;if(!n)return a;const o=n[0];if(!o)return a;const l=Et(o);if(!l)return a;const r=_t(l.target_id);return r?(1===(null==(s=a.outputs[0].links)?void 0:s.length)&&setTimeout((()=>{Gt(a)})),Vt(r)):a},jt=(e,t="width")=>{var i;const s=e[0],a="width"==t?0:1,n=null==(i=s.size)?void 0:i[a];n&&(e.forEach((e=>{e.size[a]=n})),LGraphCanvas.active_canvas.setDirty(!0,!0))},Wt=(e,t="horizontal")=>{if(e.length<3)return;const i="horizontal"===t?0:1;e.sort(((e,t)=>e.pos[i]-t.pos[i]));const s=Math.min(...e.map((e=>e.pos[i]))),a=(Math.max(...e.map((e=>e.pos[i]+e.size[i])))-s-e.reduce(((e,t)=>e+t.size[i]),0))/(e.length-1);let n=s;e.forEach((e=>{e.pos[i]=n,n+=e.size[i]+a})),LGraphCanvas.active_canvas.setDirty(!0,!0)},Ut="$$canvas-image-preview";const Ft="$$comfy_animation_preview";const Xt="video_upload",Zt=(e,t)=>{if(!e)return!1;const i=(e=>{var t;return null==(t=e.constructor)?void 0:t.nodeData})(e);if(!(null==i?void 0:i.input))return!1;return(e=>{if(!e)return[];const{required:t,optional:i}=e,s=[];if(t)for(const a of Object.values(t))s.push(a);if(i)for(const a of Object.values(i))s.push(a);return s})(i.input).some((e=>{var i;return null==(i=null==e?void 0:e[1])?void 0:i[t]}))};const Ht=e=>null==e?void 0:e.id.toString(),qt=e=>pe.nodeOutputs[Ht(e)],Yt=e=>pe.nodePreviewImages[Ht(e)];function Kt(e){var t;const i=Yt(e),s=qt(e);if((null==i?void 0:i.length)&&!e.isOutputFinal)return i;if(!(null==(t=null==s?void 0:s.images)?void 0:t.length))return(null==i?void 0:i.length)?i:void 0;const a=pe.getRandParam(),n=(e=>e.animatedImages?"":pe.getPreviewFormatParam())(e);return s.images.map((e=>{const t=new URLSearchParams(e);return he.apiURL(`/view?${t}${n}${a}`)}))}const Jt="video-preview",Bt={playsInline:!0,controls:!0,loop:!0},Qt=(e,t)=>{const{loadElement:i,onLoaded:s,onFailedLoading:a}=t,n=async(e,t=0)=>{const s=await Promise.race([i(e),(a=8192,new Promise((e=>setTimeout((()=>e(null)),a))))]);var a;return null===s&&t<1?n(e,t+1):s};return{showPreview:function(){var i;if(e.isLoading)return;const o=(null==(i=e.videos)?void 0:i.length)>0?e.videos.map((e=>{return t=e,he.apiURL(`/view?filename=${encodeURIComponent(t.filename)}&type=${t.type}&subfolder=${t.subfolder}&rand=${Math.random()}`);var t})):Kt(e);(null==o?void 0:o.length)&&((null==t?void 0:t.block)&&(e.isLoading=!0),(async e=>Promise.all(e.map((e=>n(e)))))(o).then((e=>{const t=e.filter((e=>null!==e));t.length&&(null==s||s(t))})).catch((()=>{null==a||a()})).finally((()=>{e.isLoading=!1})))}}},$t=e=>{e.previewMediaType="image";return Qt(e,{loadElement:e=>new Promise((t=>{const i=new Image;i.onload=()=>t(i),i.onerror=()=>t(null),i.src=e})),onLoaded:t=>{e.imageIndex=null,e.imgs=t},onFailedLoading:()=>{e.imgs=void 0}})},ei=e=>{e.previewMediaType="video";return Qt(e,{loadElement:e=>new Promise((t=>{const i=document.createElement("video");Object.assign(i,Bt),i.onloadeddata=()=>t(i),i.onerror=()=>t(null),i.src=e})),onLoaded:t=>{const i=t[0];var s,a;i&&(e.videoContainer||(e.imgs&&(e.imgs=void 0),e.videoContainer=(()=>{const e=document.createElement("div");return e.classList.add("comfy-img-preview"),e})(),e.videoContainer.style.pointerEvents="auto",s=e.videoContainer,(null==(a=e.widgets)?void 0:a.some((e=>e.name===Jt)))||e.addDOMWidget(Jt,"video",s,{hideOnZoom:!1,serialize:!1})),e.videoContainer.replaceChildren(i),e.imageOffset=64)},onFailedLoading:()=>{e.videoContainer=void 0}})};function ti(e,t){var i;if(e.flags.collapsed)return;const{showCanvasImagePreview:s,removeCanvasImagePreview:a}=function(){const e=Be();return{showCanvasImagePreview:function(t){var i;(null==(i=t.imgs)?void 0:i.length)&&t.widgets&&(t.widgets.find((e=>e.name===Ut))||e(t,{type:"IMAGE_PREVIEW",name:Ut}))},removeCanvasImagePreview:function(e){var t,i;if(!e.widgets)return;const s=e.widgets.findIndex((e=>e.name===Ut));s>-1&&(null==(i=(t=e.widgets[s]).onRemove)||i.call(t),e.widgets.splice(s,1))}}}(),{showVideoPreview:n,removeVideoPreview:o}={showVideoPreview:function(e){var t;(null==(t=e.video)?void 0:t.length)&&e.widgets&&e.widgets.findIndex((e=>e.name===Ft))},removeVideoPreview:function(e){var t,i;if(!e.widgets)return;const s=e.widgets.findIndex((e=>"video-preview"===e.name));s>-1&&(null==(i=(t=e.widgets[s]).onRemove)||i.call(t),e.widgets.splice(s,1))}},l=qt(e),r=Yt(e),d=l&&(e.images!==l.images||e.videos!==l.videos),u=r&&e.preview!==r;if(u&&(e.isOutputFinal=!1,e.isTwiceRendered&&(e.isTwiceRendered=!1),e.preview=r),d&&(e.isOutputFinal=!0,l.images&&(e.images=l.images),l.videos&&(e.videos=l.videos)),d||u){e.animatedImages=null==l?void 0:l.animated;const t=e.animatedImages&&l.images.some((e=>{var t;return null==(t=e.filename)?void 0:t.includes("webp")})),i=e.animatedImages&&!t||!!(A=this)&&(!!A.videoContainer||!!A.widgets&&Zt(A,Xt));d&&(null==l?void 0:l.videos)||i?ei(e).showPreview():$t(e).showPreview()}var A;e.id!=pe.runningNodeId&&!e.isTwiceRendered&&e.isOutputFinal&&(e.videos?ei(e.videos):$t(e).showPreview(),e.isTwiceRendered=!0),(null==(i=e.imgs)?void 0:i.length)&&(e.animatedImages||d&&(null==l?void 0:l.videos)?(a(e),n(e)):(o(e),s(e)))}const ii=["rescale_after_model","rescale","lora_name","upscale_method","image_output","add_noise","info","sampler_name","ckpt_B_name","ckpt_C_name","save_model","refiner_ckpt_name","num_loras","num_controlnet","mode","toggle","resolution","ratio","target_parameter","input_count","replace_count","downscale_mode","range_mode","text_combine_mode","input_mode","lora_count","ckpt_count","conditioning_mode","preset","use_tiled","use_batch","num_embeds","easing_mode","guider","scheduler","inpaint_mode","t5_type","rem_mode","encode","method"],si=["LIGHT - SD1.5 only (low strength)","STANDARD (medium strength)","VIT-G (medium strength)","REGULAR - FLUX and SD3.5 only (high strength)","PLUS (high strength)","PLUS (kolors genernal)","PLUS FACE (portraits)","FULL FACE - SD1.5 only (portraits stronger)","COMPOSITION"],ai=["FACEID","FACEID PLUS - SD1.5 only","FACEID PLUS V2","FACEID PLUS KOLORS","FACEID PORTRAIT (style transfer)","FACEID PORTRAIT UNNORM - SDXL only (strong)"],ni=["easy seed","easy latentNoisy","easy wildcards","easy preSampling","easy preSamplingAdvanced","easy preSamplingNoiseIn","easy preSamplingSdTurbo","easy preSamplingCascade","easy preSamplingDynamicCFG","easy preSamplingLayerDiffusion","easy fullkSampler","easy fullCascadeKSampler"],oi=["easy fullLoader","easy a1111Loader","easy comfyLoader","easy hyditLoader","easy pixArtLoader"],li=["easy fullkSampler","easy kSampler","easy kSamplerCustom","easy kSamplerTiled","easy kSamplerLayerDiffusion","easy kSamplerInpainting","easy kSamplerDownscaleUnet","easy kSamplerSDTurbo","easy fullCascadeKSampler","easy cascadeKSampler"],ri=["easy imageSize","easy imageSizeBySide","easy imageSizeByLongerSide","easy imageSizeShow","easy imageRatio","easy imagePixelPerfect"],di=["easy forLoopStart","easy forLoopEnd","easy whileLoopStart","easy whileLoopEnd"],ui=["easy anythingIndexSwitch","easy imageIndexSwitch","easy textIndexSwitch","easy conditioningIndexSwitch"],Ai=["easy anythingInversedSwitch"],ci=["easy loadImagesForLoop",...di,...ui,...Ai],pi={"easy anythingInversedSwitch":"out","easy anythingIndexSwitch":"value","easy imageIndexSwitch":"image","easy textIndexSwitch":"text","easy conditioningIndexSwitch":"cond"};function hi(e,t){var i;const s=e.comfyClass;let a=t.value;switch(t.name){case"range_mode":yt(e,vt(e,"step"),"step"==a),yt(e,vt(e,"num_steps"),"num_steps"==a),wt(e);break;case"text_combine_mode":yt(e,vt(e,"replace_text"),"replace"==a);break;case"lora_name":["lora_model_strength","lora_clip_strength"].map((t=>yt(e,vt(e,t),"None"!==a)));break;case"resolution":"自定义 x 自定义"===a&&(t.value="width x height (custom)"),["empty_latent_width","empty_latent_height","width","height"].map((t=>yt(e,vt(e,t),"width x height (custom)"===a)));break;case"ratio":["empty_latent_width","empty_latent_height"].map((t=>yt(e,vt(e,t),"custom"===a)));break;case"num_loras":var n=a+1,o=null==(i=vt(e,"mode"))?void 0:i.value;requestAnimationFrame((t=>{for(let i=0;iyt(e,vt(e,t),"simple"!==o)));for(let i=n;i<99;i++)["lora_"+i+"_name","lora_"+i+"_strength","lora_"+i+"_model_strength","lora_"+i+"_clip_strength"].map((t=>yt(e,vt(e,t),!1)));wt(e)}));break;case"num_controlnet":n=a+1,o=vt(e,"mode").value;for(let t=0;tyt(e,vt(e,t),!0))),["start_percent_"+t,"end_percent_"+t].map((t=>yt(e,vt(e,t),"simple"!==o)));for(let t=n;t<21;t++)["controlnet_"+t,"controlnet_"+t+"_strength","scale_soft_weight_"+t,"start_percent_"+t,"end_percent_"+t].map((t=>yt(e,vt(e,t),!1)));wt(e);break;case"mode":switch(null==e?void 0:e.comfyClass){case"easy loraStack":n=vt(e,"num_loras").value+1,o=a;for(let t=0;tyt(e,vt(e,t),"simple"!==o)));wt(e);break;case"easy controlnetStack":n=vt(e,"num_controlnet").value+1,o=a;for(let t=0;tyt(e,vt(e,t),"simple"!==o)));wt(e);break;case"easy icLightApply":o=a;["lighting","remove_bg"].map((t=>yt(e,vt(e,t),"Foreground"===o))),yt(e,vt(e,"source"),"Foreground"!==o),wt(e)}break;case"toggle":t.type="toggle",t.options={on:"Enabled",off:"Disabled"};break;case"t5_type":["clip_name","padding"].map((t=>yt(e,vt(e,t),"sd3"==a))),["t5_name","device","dtype"].map((t=>yt(e,vt(e,t),"t5v11"==a))),wt(e);break;case"preset":if("FLUX.1-dev"==a&&(t.value="REGULAR - FLUX and SD3.5 only (high strength)"),si.includes(a)){let t=vt(e,"use_tiled");yt(e,vt(e,"lora_strength")),yt(e,vt(e,"provider"),!!["REGULAR - FLUX and SD3.5 only (high strength)"].includes(a)),yt(e,vt(e,"weight_faceidv2")),yt(e,vt(e,"weight_kolors")),yt(e,vt(e,"use_tiled"),!0),yt(e,vt(e,"sharpening"),t&&t.value)}else ai.includes(a)&&(yt(e,vt(e,"weight_faceidv2"),!!["FACEID PLUS V2","FACEID PLUS KOLORS"].includes(a)),yt(e,vt(e,"weight_kolors"),!!["FACEID PLUS KOLORS"].includes(t.value)),["FACEID PLUS KOLORS","FACEID PORTRAIT (style transfer)","FACEID PORTRAIT UNNORM - SDXL only (strong)"].includes(a)?yt(e,vt(e,"lora_strength"),!1):yt(e,vt(e,"lora_strength"),!0),yt(e,vt(e,"provider"),!0),yt(e,vt(e,"use_tiled")),yt(e,vt(e,"sharpening")));wt(e);break;case"use_tiled":yt(e,vt(e,"sharpening"),!!a),wt(e);break;case"num_embeds":n=a+1;for(let t=0;tyt(e,vt(e,t),!1)));break;case"brushnet_random":case"brushnet_segmentation":["dtype","scale","start_at","end_at"].map((t=>yt(e,vt(e,t),!0))),["fitting","function"].map((t=>yt(e,vt(e,t),!1)));break;case"powerpaint":["dtype","fitting","function","scale","start_at","end_at"].map((t=>yt(e,vt(e,t),!0)))}wt(e);break;case"encode":yt(e,vt(e,"noise_mask"),!!["inpaint_model_conditioning","different_diffusion"].includes(a)),wt(e);break;case"image_output":yt(e,vt(e,"link_id"),!!["Sender","Sender&Save"].includes(a)),yt(e,vt(e,"decode_vae_name"),!!["Hide","Hide&Save"].includes(a)),["save_prefix","output_path","embed_workflow","number_padding","overwrite_existing"].map((t=>yt(e,vt(e,t),!!["Save","Hide&Save","Sender&Save"].includes(a))));break;case"add_noise":var l=vt(e,"control_before_generate"),r=vt(e,"control_after_generate")||l;"disable"===a?(yt(e,vt(e,"seed")),r&&(r.last_value=r.value,r.value="fixed",yt(e,r))):("enable"===a&&(t.value="enable (CPU)"),yt(e,vt(e,"seed"),!0),r&&((null==r?void 0:r.last_value)&&(r.value=r.last_value),yt(e,r,!0))),wt(e);break;case"guider":switch(a){case"Basic":case"IP2P+Basic":["cfg_negative"].map((t=>yt(e,vt(e,t))));break;case"CFG":case"IP2P+CFG":yt(e,vt(e,"cfg"),!0),yt(e,vt(e,"cfg_negative"));break;case"DualCFG":case"IP2P+DualCFG":["cfg","cfg_negative"].map((t=>yt(e,vt(e,t),!0)))}wt(e);break;case"scheduler":"easy preSamplingCustom"==s&&(["karrasADV","exponentialADV","polyExponential"].includes(a)?(["sigma_max","sigma_min"].map((t=>yt(e,vt(e,t),!0))),["denoise","beta_d","beta_min","eps_s","coeff"].map((t=>yt(e,vt(e,t))),!1),yt(e,vt(e,"rho"),"exponentialADV"!=a)):"vp"==a?(["sigma_max","sigma_min","denoise","rho","coeff"].map((t=>yt(e,vt(e,t)))),["beta_d","beta_min","eps_s"].map((t=>yt(e,vt(e,t),!0)))):(["sigma_max","sigma_min","beta_d","beta_min","eps_s","rho"].map((t=>yt(e,vt(e,t)))),yt(e,vt(e,"coeff"),"gits"==a),yt(e,vt(e,"denoise"),!0)),wt(e));break;case"conditioning_mode":["replace","concat","combine"].includes(a)?["average_strength","old_cond_start","old_cond_end","new_cond_start","new_cond_end"].map((t=>yt(e,vt(e,t)))):"average"==a?(yt(e,vt(e,"average_strength"),!0),["old_cond_start","old_cond_end","new_cond_start","new_cond_end"].map((t=>yt(e,vt(e,t),!1)))):"timestep"==a&&(["average_strength"].map((t=>yt(e,vt(e,t),!1))),["old_cond_start","old_cond_end","new_cond_start","new_cond_end"].map((t=>yt(e,vt(e,t),!0))));break;case"rescale":vt(e,"rescale_after_model").value,yt(e,vt(e,"width"),"to Width/Height"===a),yt(e,vt(e,"height"),"to Width/Height"===a),yt(e,vt(e,"percent"),"by percentage"===a),yt(e,vt(e,"longer_side"),"to longer side - maintain aspect"===a),wt(e);break;case"upscale_method":["factor","crop"].map((t=>yt(e,vt(e,t),"None"!==a)));break;case"target_parameter":switch(s){case"easy XYInputs: Steps":["first_step","last_step"].map((t=>yt(e,vt(e,t),"steps"==a))),["first_start_step","last_start_step"].map((t=>yt(e,vt(e,t),"start_at_step"==a))),["first_end_step","last_end_step"].map((t=>yt(e,vt(e,t),"end_at_step"==a)));break;case"easy XYInputs: Sampler/Scheduler":let t=vt(e,"input_count").value+1;for(let i=0;iyt(e,vt(e,t),"strength"==a))),["first_start_percent","last_start_percent"].map((t=>yt(e,vt(e,t),"start_percent"==a))),["first_end_percent","last_end_percent"].map((t=>yt(e,vt(e,t),"end_percent"==a))),["strength","start_percent","end_percent"].map((t=>yt(e,vt(e,t),a!=t))),wt(e)}case"replace_count":n=a+1;for(let t=0;tyt(e,vt(e,t),!d)));for(let t=n;t<11;t++)["lora_name_"+t,"model_str_"+t,"clip_str_"+t].map((t=>yt(e,vt(e,t),!1)));wt(e);break;case"ckpt_count":n=a+1;var u=-1!=vt(e,"input_mode").value.indexOf("ClipSkip"),A=-1!=vt(e,"input_mode").value.indexOf("VAE");for(let t=0;tyt(e,vt(e,t),!1)));wt(e);break;case"input_count":n=a+1;var c=vt(e,"target_parameter").value;for(let t=0;tyt(e,vt(e,i),!!t)));["model_strength","clip_strength"].map((i=>yt(e,vt(e,i),!t)));break;case"easy XYInputs: Checkpoint":n=vt(e,"ckpt_count").value+1,u=-1!=vt(e,"input_mode").value.indexOf("ClipSkip"),A=-1!=vt(e,"input_mode").value.indexOf("VAE");for(let i=0;ie.name===t));if(-1!==e){for(let t=e;t{var e;const t=this.computeSize();t[0]"info"===e.name));if(-1!==e&&this.widgets[e]){this.widgets[e].value=t}}requestAnimationFrame((()=>{var e;const t=this.computeSize();t[0]"prompt"==e.name));this.addWidget("button","get values from COMBO link","",(()=>{var t,s;const a=(null==(s=null==(t=this.outputs[1])?void 0:t.links)?void 0:s.length)>0?this.outputs[1].links[0]:null,n=i.graph._nodes.find((e=>{var t;return null==(t=e.inputs)?void 0:t.find((e=>e.link==a))}));if(a&&n){const t=n.inputs.find((e=>e.link==a)).widget.name,i=n.widgets.find((e=>e.name==t));let s=(null==i?void 0:i.options.values)||null;s&&(s=s.join("\n"),e.value=s)}else Ze.error(Le("No COMBO link"),3e3)}),{serialize:!1})}),oi.includes(t.name)){let t=function(e){var t="";for(let i=0;ie.name===t+"_prompt")),s="comfy-multiline-input wildcard_"+t+"_"+this.id.toString();if(-1==i&&e){const i=document.createElement("textarea");i.className=s,i.placeholder="Wildcard Prompt ("+t+")";const a=this.addDOMWidget(t+"_prompt","customtext",i,{getValue:e=>i.value,setValue(e){i.value=e},serialize:!1});a.inputEl=i,a.inputEl.readOnly=!0,i.addEventListener("input",(()=>{var e;null==(e=a.callback)||e.call(a,a.value)})),a.value=e}else if(this.widgets[i])if(e){this.widgets[i].value=e}else{this.widgets.splice(i,1);const e=document.getElementsByClassName(s);e&&e[0]&&e[0].remove()}}};e.prototype.onExecuted=function(e){null==r||r.apply(this,arguments);const s=t(e.positive),a=t(e.negative);i.call(this,s,"positive"),i.call(this,a,"negative")}}if(["easy sv3dLoader"].includes(t.name)){let t=function(e,t,i){switch(e){case"azimuth":return i.readOnly=!0,i.style.opacity=.6,"0:(0.0,0.0)"+(t>1?`\n${t-1}:(360.0,0.0)`:"");case"elevation":return i.readOnly=!0,i.style.opacity=.6,"0:(-90.0,0.0)"+(t>1?`\n${t-1}:(90.0,0.0)`:"");case"custom":return i.readOnly=!1,i.style.opacity=1,"0:(0.0,0.0)\n9:(180.0,0.0)\n20:(360.0,0.0)"}};e.prototype.onNodeCreated=async function(){o&&o.apply(this,[]);const e=this.widgets.find((e=>"easing_mode"==e.name)),i=this.widgets.find((e=>"batch_size"==e.name)),s=this.widgets.find((e=>"scheduler"==e.name));setTimeout((a=>{s.value||(s.value=t(e.value,i.value,s.inputEl))}),1),e.callback=e=>{s.value=t(e,i.value,s.inputEl)},i.callback=i=>{s.value=t(e.value,i,s.inputEl)}}}if(ni.includes(a)&&(e.prototype.onNodeCreated=async function(){o&&o.apply(this,[]);const e=this.widgets.find((e=>["seed_num","seed"].includes(e.name))),s=this.widgets.find((e=>["control before generate","control after generate","control_before_generate","control_after_generate"].includes(e.name)));if("easy seed"==t.name&&s){const t=this.addWidget("button","🎲 Manual Random Seed",null,(t=>{"fixed"!=s.value&&(s.value="fixed"),e.value=Math.floor(Math.random()*Ce),i.queuePrompt(0,1)}),{serialize:!1});e.linkedWidgets=[t,s]}},e.prototype.onAdded=async function(){n&&n.apply(this,[]);const e=this.widgets.find((e=>["seed_num","seed"].includes(e.name))),t=this.widgets.find((e=>["control before generate","control after generate","control_before_generate","control_after_generate"].includes(e.name)));t&&setTimeout((i=>{["control before generate","control_before_generate"].includes(t.name)&&0===e.value&&(e.value=Math.floor(Math.random()*Ce))}),1)}),"easy convertAnything"==a&&(e.prototype.onNodeCreated=async function(){o&&o.apply(this,[]);const e=this.widgets.find((e=>"output_type"==e.name)),t=t=>{this.outputs[0].type=e.value.toUpperCase(),this.outputs[0].name=e.value,this.outputs[0].label=e.value};setTimeout((e=>t()),10),e.callback=e=>t()}),"easy imageInsetCrop"==a){let t=function(e){const t=e.widgets[0];for(let i=1;i<=4;i++)"Pixels"===t.value?(e.widgets[i].options.step=80,void 0!==e.widgets[i].options.step2&&(e.widgets[i].options.step2=8),e.widgets[i].options.max=8192):(e.widgets[i].options.step=10,void 0!==e.widgets[i].options.step2&&(e.widgets[i].options.step2=1),e.widgets[i].options.max=99)};e.prototype.onAdded=async function(e){const i=this.widgets[0];let s=i.callback;i.callback=(...e)=>{t(this),s&&s.apply(i,[...e])},setTimeout((e=>{t(this)}),1)}}if(ci.includes(a)){const t=e=>{switch(a){case"easy forLoopStart":case"easy whileLoopStart":return 0;case"easy forLoopEnd":case"easy whileLoopEnd":return 1}},i=e=>{switch(a){case"easy forLoopStart":return 2;case"easy forLoopEnd":case"easy whileLoopEnd":return 0;case"easy whileLoopStart":return 1}};e.prototype.onNodeCreated=async function(){if("easy loadImagesForLoop"==a&&(this.outputs[0].shape=5),di.includes(a)){const e=this.inputs.findIndex((e=>"flow"===e.name)),s=this.outputs.findIndex((e=>"flow"===e.name));-1!==e&&(this.inputs[e].shape=5),-1!==s&&(this.outputs[s].shape=5),this.inputs=this.inputs.filter(((e,i)=>i<=t()||e.widget)),this.outputs=this.outputs.filter(((e,t)=>t<=i())),wt(this)}return ui.includes(a)&&("easy textIndexSwitch"==a&&(this.widgets=this.widgets.filter(((e,t)=>t<=2))),this.inputs=this.inputs.filter(((e,t)=>t<=1||e.widget)),wt(this)),null==o?void 0:o.apply(this,arguments)},e.prototype.onConnectionsChange=function(e,s,n,o){var l,r;if(o)if(1==e){let e=this.inputs.every((e=>null!==e.link||e.widget)),i=this.inputs.filter((e=>!["condition","index","total"].includes(e.name)));if(di.includes(a)){if(e){if(i.length>=20)return void Ze.warn(Le("The maximum number of inputs is 20"));let e=i[i.length-1],t=parseInt(e.name.split("initial_value")[1])+1;if(this.inputs.find((e=>e.name==="initial_value"+t)))return;let s="initial_value"+t,a="value"+t;this.addInput(s,"*"),this.addOutput(a,"*")}else if(!n){const e=t();let i=this.inputs.findLastIndex((e=>e.link));if(s>=e&&(-1===i||s>=i)){let e=this.inputs[s];if(!e.name||["condition","total"].includes(e.name))return;let t=parseInt(e.name.split("initial_value")[1])+1,i=this.inputs.findIndex((e=>e.name==="initial_value"+t)),a=this.outputs.findIndex((e=>e.name==="value"+t));-1!==i&&this.removeInput(i),-1!==a&&this.removeOutput(a)}}}else if(ui.includes(a))if(e){if(i.length>=20)return void Ze.warn(Le("The maximum number of inputs is 20"));let e=pi[a]+i.length;this.addInput(e,"*")}else n||s==this.inputs.length-2&&this.removeInput(s+1)}else if(2==e){let e=this.outputs.filter((e=>!["flow","index"].includes(e.name))),t=e.every((e=>{var t;return(null==(t=e.links)?void 0:t.length)>0}));if(di.includes(a)){if(t){if(e.length>=20)return void Ze.warn(Le("The maximum number of outputs is 20"));let t=e[e.length-1],i=parseInt(t.name.split("value")[1])+1;if(this.inputs.find((e=>e.name==="initial_value"+i)))return;if(this.outputs.find((e=>e.name==="value"+i)))return;let s="initial_value"+i,a="value"+i;this.addInput(s,"*"),this.addOutput(a,"*")}else if(!n){const e=i();let t=o.origin_slot,s=this.outputs.findLastIndex((e=>{var t;return(null==(t=e.links)?void 0:t.length)>0}));if(t>=e&&(-1===s||t>=s)){let e=this.outputs[t];if(!e.name||["flow","index"].includes(e.name))return;let i=parseInt(e.name.split("value")[1])+1,s=this.inputs.findIndex((e=>e.name==="initial_value"+i)),a=this.outputs.findIndex((e=>e.name==="value"+i));if(-1!==s&&(null==(l=this.inputs[s])?void 0:l.link))return;-1!==s&&this.removeInput(s),-1!==a&&this.removeOutput(a)}}}else if(Ai.includes(a))if(t){if(e.length>=20)return void Ze.warn(Le("The maximum number of outputs is 20"));let t=pi[a]+e.length;this.addOutput(t,"*")}else if(!n){let t=o.origin_slot;t==this.outputs.length-2&&0==(null==(r=e[t].links)?void 0:r.length)&&this.removeOutput(t+1)}}}}if(["easy fluxLoader","easy fullLoader"].includes(a)&&(e.prototype.onConnectionsChange=async function(e,t){d&&d.apply(this,[]);const i=this.inputs.find((e=>"model_override"===e.name)),s=this.inputs.find((e=>"vae_override"===e.name));let a=vt(this,"ckpt_name"),n=vt(this,"vae_name");if((null==i?void 0:i.link)&&0==t){const e=(null==a?void 0:a.options.values)||[];setTimeout((t=>{this.widgets[0].value=(null==e?void 0:e[0])||"None",yt(this,a,!(null==i?void 0:i.link))}),1)}else yt(this,a,!(null==i?void 0:i.link));if(!(null==s?void 0:s.link)||1!=t&&2!=t)yt(this,n,!(null==s?void 0:s.link));else{let e=this.widgets.findIndex((e=>"vae_name"==e.name));setTimeout((t=>{this.widgets[e].value="Baked VAE",yt(this,n,!(null==s?void 0:s.link))}),1)}}),li.includes(a)||-1!==a.indexOf("workflow")){const i=(null==(s=null==t?void 0:t.input)?void 0:s.required)||{};if(!i.image_output&&!i["图像输出"]&&!i["视频输出"])return;e.prototype.onDrawBackground=function(e){try{ti(this)}catch(t){}}}},nodeCreated(e){if(e.comfyClass.startsWith("easy ")){if(e.widgets)for(const i of e.widgets){if(!ii.includes(i.name))continue;let t=i.value;hi(e,i),Object.defineProperty(i,"value",{get:e=>t,set(s){s!==t&&(t=s,requestAnimationFrame((t=>{hi(e,i)})))}})}const t=e.comfyClass;if("easy preDetailerFix"==t){const t=e.widgets.find((e=>"customtext"===e.type));if(!t)return;t.dynamicPrompts=!1,t.inputEl.placeholder="wildcard spec: if kept empty, this option will be ignored",t.serializeValue=()=>t.value}if(["easy wildcards","easy wildcardsMatrix"].includes(t)){const t=e.widgets.find((e=>"text"==e.name));let i=1;Object.defineProperty(e.widgets[i],"value",{set:e=>{if("Select the LoRA to add to the text"!=e){let i=e;i.endsWith(".safetensors")&&(i=i.slice(0,-12)),t.value+=``}},get:e=>"Select the LoRA to add to the text"}),Object.defineProperty(e.widgets[i+1],"value",{set:e=>{"Select the Wildcard to add to the text"!=e&&(""!=t.value&&(t.value+=", "),t.value+=e)},get:e=>"Select the Wildcard to add to the text"}),e.widgets[i].serializeValue=e=>"Select the LoRA to add to the text",e.widgets[i+1].serializeValue=e=>"Select the Wildcard to add to the text"}if("easy prompt"==t){const t=e.widgets.find((e=>"text"==e.name));let i=1;Object.defineProperty(e.widgets[i],"value",{set:s=>{var a,n;"Select the prefix to add to the text"!=s&&(null==(n=null==(a=e.widgets[i])?void 0:a.options)?void 0:n.values.includes(s))&&(""==t.value?t.value+=s:t.value+=" "+s)},get:e=>"Select the prefix to add to the text"}),Object.defineProperty(e.widgets[i+1],"value",{set:s=>{var a,n;"👤Select the subject add to the text"!=s&&(null==(n=null==(a=e.widgets[i+1])?void 0:a.options)?void 0:n.values.includes(s))&&(""==t.value?t.value+=s:t.value+=" "+s)},get:e=>"👤Select the subject add to the text"}),Object.defineProperty(e.widgets[i+2],"value",{set:s=>{var a,n;"🎬Select the action add to the text"!=s&&(null==(n=null==(a=e.widgets[i+2])?void 0:a.options)?void 0:n.values.includes(s))&&(""==t.value?t.value+=s:t.value+=","+s)},get:e=>"🎬Select the action add to the text"}),Object.defineProperty(e.widgets[i+3],"value",{set:s=>{var a,n;"👚Select the clothes add to the text"!=s&&(null==(n=null==(a=e.widgets[i+3])?void 0:a.options)?void 0:n.values.includes(s))&&(""==t.value?t.value+=s:t.value+=","+s)},get:e=>"👚Select the clothes add to the text"}),Object.defineProperty(e.widgets[i+4],"value",{set:s=>{var a,n;"☀️Select the illumination environment add to the text"!=s&&(null==(n=null==(a=e.widgets[i+4])?void 0:a.options)?void 0:n.values.includes(s))&&(""==t.value?t.value+=s:t.value+=","+s)},get:e=>"☀️Select the illumination environment add to the text"}),Object.defineProperty(e.widgets[i+5],"value",{set:s=>{var a,n;"🎞️Select the background add to the text"!=s&&(null==(n=null==(a=e.widgets[i+5])?void 0:a.options)?void 0:n.values.includes(s))&&(""==t.value?t.value+=s:t.value+=" "+s)},get:e=>"🎞️Select the background add to the text"}),Object.defineProperty(e.widgets[i+6],"value",{set:s=>{var a,n;"🔞Select the nsfw add to the text"!=s&&(null==(n=null==(a=e.widgets[i+6])?void 0:a.options)?void 0:n.values.includes(s))&&(""==t.value?t.value+=s:t.value+=","+s)},get:e=>"🔞Select the nsfw add to the text"}),e.widgets[i].serializeValue=e=>"Select the prefix add to the text",e.widgets[i+1].serializeValue=e=>"👤Select the subject add to the text",e.widgets[i+2].serializeValue=e=>"🎬Select the action add to the text",e.widgets[i+3].serializeValue=e=>"👚Select the clothes add to the text",e.widgets[i+4].serializeValue=e=>"☀️Select the illumination environment add to the text",e.widgets[i+5].serializeValue=e=>"🎞️Select the background add to the text",e.widgets[i+6].serializeValue=e=>"🔞Select the nsfw add to the text"}if(ri.includes(t)){const t=document.createElement("textarea");t.className="comfy-multiline-input",t.readOnly=!0;const i=e.addDOMWidget("info","customtext",t,{getValue:e=>t.value,setValue:e=>t.value=e,serialize:!1});i.inputEl=t,t.addEventListener("input",(()=>{var e;null==(e=i.callback)||e.call(i,i.value)}))}}}});const mi=LiteGraph.LGraphNode;pe.registerExtension({name:"easy bookmark",registerCustomNodes(){class e extends mi{constructor(){super("🔖"),v(this,"type","easy bookmark"),v(this,"title","🔖"),v(this,"slot_start_y",-20),v(this,"___collapsed_width",0),v(this,"isVirtualNode",!0),v(this,"serialize_widgets",!0),v(this,"keypressBound",null),this.addWidget("text","shortcut_key","1",(e=>{""!==(e=e.trim()[0]||"1")&&(this.title="🔖 "+e)}),{y:8}),this.addWidget("number","zoom",1,(e=>{}),{y:8+LiteGraph.NODE_WIDGET_HEIGHT+4,max:2,min:.5,precision:2}),this.keypressBound=this.onKeypress.bind(this)}get _collapsed_width(){return this.___collapsed_width}set _collapsed_width(e){const t=pe.canvas,i=t.canvas.getContext("2d");if(i){const e=i.font;i.font=t.title_text_font,this.___collapsed_width=40+i.measureText(this.title).width,i.font=e}}onAdded(){setTimeout((e=>{const t=this.widgets[0].value;t&&(this.title="🔖 "+t)}),1),window.addEventListener("keydown",this.keypressBound)}onRemoved(){window.removeEventListener("keydown",this.keypressBound)}onKeypress(e){const t=e.target;["input","textarea"].includes(t.localName)||this.widgets[0]&&e.key.toLocaleLowerCase()===this.widgets[0].value.toLocaleLowerCase()&&this.canvasToBookmark()}canvasToBookmark(){var e,t;const i=pe.canvas;(null==(e=null==i?void 0:i.ds)?void 0:e.offset)&&(i.ds.offset[0]=16-this.pos[0],i.ds.offset[1]=40-this.pos[1]),null!=(null==(t=null==i?void 0:i.ds)?void 0:t.scale)&&(i.ds.scale=Number(this.widgets[1].value||1)),i.setDirty(!0,!0)}}LiteGraph.registerNodeType("easy bookmark",Object.assign(e,{title:"Bookmark 🔖"})),e.category="EasyUse/Util"}}),pe.registerExtension({name:"Comfy.EasyUse.ChainNode",init(){pe.canvas._mousemove_callback=e=>{we("EasyUse.Nodes.ChainGetSet",null)&&((e=!1,t={})=>{var i,s,a,n,o;const l=Ot();if(!l||l.length<1)return;const r=St();if(0===r.length)return;let d=t.inputX||160,u=t.ouputX||60;if(r.filter((e=>Tt(e))).length>1)return;for(const c of r){let n=t.inputY||10,o=t.outputY||30;const l=[],A=c.id;if(c.graph){Mt[A]||(Mt[A]=[]);for(const e of c.inputs??[]){const t=e.link;if(!t)continue;const{origin_id:i,target_slot:s}=Et(t),a=_t(i);if(!a)continue;if(!Tt(a))continue;let o=c.getConnectionPos(!0,s);Mt[A][s]||(Mt[A][s]=o),!Mt[A]||Mt[A][s][1]===o[1]&&Mt[A][s][0]===o[0]||(d=o[0]-Mt[A][s][0],n=o[1]-Mt[A][s][1],a.pos=[a.pos[0]+d,a.pos[1]+n]),Mt[A][s]=o,l.push(a)}Dt[A]||(Dt[A]=[]);for(const e of c.outputs??[])if(e.links&&c.graph)for(const t of e.links){const{target_id:e,target_slot:s,origin_slot:a}=Et(t),n=_t(e);if(!n)continue;if(!Tt(n))continue;const r=null==(i=n.outputs)?void 0:i.links;if((null==r?void 0:r.length)>1)return;const d=c.getConnectionPos(!1,a);Dt[A][a]||(Dt[A][a]=d),!Dt[A]||Dt[A][a][0]===d[0]&&Dt[A][a][1]===d[1]||(u=d[0]-Dt[A][a][0],o=d[1]-Dt[A][a][1],n.pos=[n.pos[0]+u,n.pos[1]+o]),Dt[A][a]=d,l.push(n)}if(e&&1===r.length){const e=[c,...l];(null==(a=null==(s=c.graph)?void 0:s.list_of_graphcanvas)?void 0:a[0]).selectNodes(e)}}}const A=r[0];if(!A)return;(null==(o=null==(n=A.graph)?void 0:n.list_of_graphcanvas)?void 0:o[0]).setDirty(!0,!0)})()};const e=LGraphCanvas.prototype.showLinkMenu;LGraphCanvas.prototype.showLinkMenu=tt(e,(function(t,i){return i.shiftKey?(((e,t=!1)=>{var i,s,a,n,o,l,r,d,u,A;const{type:c}=e;if("*"===c)return;let{origin_id:p,target_id:h,origin_slot:m,target_slot:f}=e,g=_t(p),v=_t(h);if(!g||!v)return!1;if("Reroute"===g.type){let e=0;[g,e]=zt(g),p=null==g?void 0:g.id,m=e,void 0!==m&&-1!==m||(m=0)}if("Reroute"===v.type&&(v=Vt(v),h=null==v?void 0:v.id,f=null==v?void 0:v.inputs.findIndex((e=>e.type===c)),void 0!==f&&-1!==f||(f=0)),void 0===p||void 0===h||!g||!v)return!1;if(t&&(Tt(g)||Tt(v)))return!1;let y=Nt((null==(i=v.getInputInfo(f))?void 0:i.name)??c.toLowerCase());y||(y=Nt((null==(a=null==(s=null==g?void 0:g.outputs)?void 0:s[m])?void 0:a.name)??(null==(o=null==(n=null==g?void 0:g.outputs)?void 0:n[m])?void 0:o.type.toString())??y+`_from_${p}_to_${h}`));let b,w=!1,_=!1;if(Tt(g))y=bt(g),_=!0;else{const e=null==(r=null==(l=g.outputs)?void 0:l[m])?void 0:r.links;if(e)for(const t of e){const e=_t((null==(d=Et(t))?void 0:d.target_id)??-1);e&&Tt(e)&&It(e)&&(y=bt(e),_=!0)}if(!_){for(const e of Ot()){if(y!==bt(e)||!It(e))continue;const t=null==(u=e.inputs[0])?void 0:u.link;(null==(A=Et(t))?void 0:A.origin_id)===g.id?_=!0:w=!0}w&&(y+=`_from_${p}_to_${h}`)}}if(!_){b=LiteGraph.createNode("easy setNode"),b.is_auto_link=!0;const e=g.getConnectionPos(!1,m);b.pos=[e[0]+20,e[1]],b.inputs[0].name=y,b.inputs[0].type=c,b.inputs[0].widget=v.inputs[f].widget,Rt(b,y),Pt(b),b.flags.collapsed=!0;let t=[];g.widgets?t=Object.values(g.widgets).map((e=>e.value)):g.widgets_values&&(t=JSON.parse(JSON.stringify(g.widgets_values))),g.connect(m,b,0),g.widgets_values=t,"PrimitiveNode"===g.type&&setTimeout((()=>{if(g){g.connect(m,b,0);for(const[e,i]of t.entries())Rt(g,i,e);null!==b&&b.setSize(b.computeSize())}}))}const S=LiteGraph.createNode("easy getNode"),x=v.getConnectionPos(!0,f);S.pos=[x[0]-150,x[1]],S.outputs[0].name=y,S.outputs[0].type=c,S.outputs[0].widget=v.inputs[f].widget,Pt(S),Rt(S,y),null===S||(S.flags.collapsed=!0,S.setSize(S.computeSize()),S.connect(0,v,f))})(t),!1):(e.apply(this,[t,i]),!1)}))}});const fi=async()=>{try{const{Running:e,Pending:t}=await he.getQueue();if(e.length>0||t.length>0)return void Ze.error(Le("Clean Failed")+":"+Le("Please stop all running tasks before cleaning GPU"));200==(await he.fetchApi("/easyuse/cleangpu",{method:"POST"})).status?Ze.success(Le("Clean SuccessFully")):Ze.error(Le("Clean Failed"))}catch(e){}};let gi={},vi=!1;function yi(e,t,i,s,a){var n=LGraphCanvas.active_canvas,o=n.getCanvasWindow(),l=n.graph;if(l)return function e(t,s){var r=LiteGraph.getNodeTypesCategories(n.filter||l.filter).filter((function(e){return e.startsWith(t)})),d=[];r.map((function(i){if(i){var s=new RegExp("^("+t+")"),a=i.replace(s,"").split("/")[0],n=""===t?a+"/":t+a+"/",o=a;-1!=o.indexOf("::")&&(o=o.split("::")[1]),-1===d.findIndex((function(e){return e.value===n}))&&d.push({value:n,content:o,has_submenu:!0,callback:function(t,i,s,a){e(t.value,a)}})}})),LiteGraph.getNodeTypesInCategory(t.slice(0,-1),n.filter||l.filter).map((function(e){if(!e.skip_list){var t={value:e.type,content:e.title,has_submenu:!1,callback:function(e,t,i,s){var o=s.getFirstEvent();n.graph.beforeChange();var l=LiteGraph.createNode(e.value);l&&(l.pos=n.convertEventToCanvasOffset(o),n.graph.add(l)),a&&a(l),n.graph.afterChange()}};d.push(t)}}));const u=we("EasyUse.ContextMenu.NodesSort",null);""===t&&u&&(d=function(e){let t=[],i=[];return e.forEach((e=>{(null==e?void 0:e.value)&&Ie.includes(e.value.split("/")[0])?t.push(e):i.push(e)})),[{title:Le("ComfyUI Basic"),is_category_title:!0},...t,{title:Le("Others A~Z"),is_category_title:!0},...i.sort(((e,t)=>e.content.localeCompare(t.content)))]}(d)),new LiteGraph.ContextMenu(d,{event:i,parentMenu:s},o)}("",s),!1}function bi(e){try{return encodeURIComponent(e).replace(/[!'()*]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`))}catch(t){return e}}function wi(e,t,i){var s=this;i=i||{};var a=document.createElement("div");a.className="litemenu-entry submenu";var n=!1;function o(e){var t=this.value,a=!0;(s.current_submenu&&s.current_submenu.close(e),i.callback)&&(!0===i.callback.call(this,t,i,e,s,i.node)&&(a=!1));if(t){if(t.callback&&!i.ignore_item_callbacks&&!0!==t.disabled)!0===t.callback.call(this,t,i,e,s,i.extra)&&(a=!1);if(t.submenu){if(!t.submenu.options)throw"ContextMenu submenu needs options";new s.constructor(t.submenu.options,{callback:t.submenu.callback,event:e,parentMenu:s,ignore_item_callbacks:t.submenu.ignore_item_callbacks,title:t.submenu.title,extra:t.submenu.extra,autoopen:i.autoopen}),a=!1}}a&&!s.lock&&s.close()}return null===t?a.classList.add("separator"):t.is_category_title?(a.classList.remove("litemenu-entry"),a.classList.remove("submenu"),a.classList.add("litemenu-title"),a.innerHTML=t.title):(a.innerHTML=t&&t.title?t.title:e,a.value=t,t&&(t.disabled&&(n=!0,a.classList.add("disabled")),(t.submenu||t.has_submenu)&&a.classList.add("has_submenu")),"function"==typeof t?(a.dataset.value=e,a.onclick_callback=t):a.dataset.value=t,t.className&&(a.className+=" "+t.className)),a&&(null==t?void 0:t.thumbnail)&&(a.addEventListener("mouseenter",Si(a,t,this.root),{passive:!0}),a.addEventListener("mouseleave",xi(),{passive:!0}),a.addEventListener("click",xi(),{passive:!0})),this.root.appendChild(a),n||a.addEventListener("click",o),!n&&i.autoopen&&LiteGraph.pointerListenerAdd(a,"enter",(function(e){var t=this.value;if(!t||!t.has_submenu)return;o.call(this,e)})),a}pe.registerExtension({name:"Comfy.EasyUse.ContextMenu",async setup(){LGraphCanvas.onMenuAdd=yi,_i();const e=LiteGraph.ContextMenu;LiteGraph.ContextMenu=function(t,i){if(!(null==i?void 0:i.callback)||t.some((e=>"string"!=typeof e))){if(i.parentMenu);else if(i.extra);else if(i.scale);else{const e=we("EasyUse.ContextMenu.QuickOptions",null);if(i.hasOwnProperty("extra")&&"Disable"!==e){if("At the forefront"==e?t.unshift(null):t.push(null),s=window.location.host,["192.168.","10.","127.",/^172\.((1[6-9]|2[0-9]|3[0-1])\.)/].some((e=>"string"==typeof e?s.startsWith(e):e.test(s)))){const i={content:`${Le("Reboot ComfyUI")}`,callback:e=>(async()=>{if(confirm(Le("Are you sure you'd like to reboot the server?")))try{he.fetchApi("/easyuse/reboot")}catch(e){}})()};"At the forefront"==e?t.unshift(i):t.push(i)}const i=we("EasyUse.Hotkeys.cleanVRAMUsed",null)?"("+Xe("Shift+r")+")":"",a={content:`${Le("Cleanup Of VRAM Usage")} ${i}`,callback:e=>fi()};"At the forefront"==e?t.unshift(a):t.push(a);const n=we("EasyUse.Hotkeys.toggleNodesMap",null)?"("+Xe("Shift+m")+")":"",o={content:`${Le("Nodes Map")} ${n}`,callback:e=>{var t,i,s;const a=(null==(t=pe.extensionManager)?void 0:t.sidebarTab)||pe.extensionManager,n=(null==(i=pe.extensionManager.sidebarTab)?void 0:i.activeSidebarTabId)||(null==(s=pe.extensionManager)?void 0:s.activeSidebarTab);a.activeSidebarTabId=n==Me?null:Me}};"At the forefront"==e?t.unshift(o):t.push(o)}}return e.apply(this,[...arguments])}{const s=function(e,t){const i=we("EasyUse.ContextMenu.ModelsThumbnails",null),s=we("EasyUse.ContextMenu.SubDirectories",null);if(!i&&!s)return null;if(vi)return null;const a=["ckpt","pt","bin","pth","safetensors","gguf"];if((null==e?void 0:e.length)>0){const t=null==(n=e[e.length-1])?void 0:n.substring(n.lastIndexOf(".")+1);if(!a.includes(t))return null}var n;const o=t.callback,l=[...e];t.callback=null;const r=(e,t)=>{["None","无","無","なし"].includes(e.content)?o("None",t):o(l.find((t=>t.endsWith(e.content)),t))};if(i&&!s)return e.map((e=>{var t,i;let s=null==(t=gi[e])?void 0:t.folder,a=null==(i=gi[e])?void 0:i.pathIndex;const n=window.location.protocol,o=window.location.host;let l=s?`${`${n}//${o}`}/api/experiment/models/preview/${s}/${a}/${bi(e)}`:"";return{folder:s,content:e,fullName:e,title:me("div.comfyui-easyuse-contextmenu-model",{},[me("span",{},e)]).outerHTML,thumbnail:l,callback:r}}));const d=e,u={},A=[],c=[];for(const f of d){const e=f.indexOf("/")>-1?"/":"\\",t=f.split(e);if(t.length>1){const i=t.shift();u[i]=u[i]||[],u[i].push({value:t.join(e),fullValue:f})}else"CHOOSE"===f||f.startsWith("DISABLE ")?A.push({value:f,fullValue:f}):c.push({value:f,fullValue:f})}const p=Object.values(u).length,h=[],m=(e,t="",s)=>{var a,n;let o;o=me("div.comfyui-easyuse-contextmenu-model",{},[me("span",{},e)]);let l=null==(a=gi[s])?void 0:a.folder,d=null==(n=gi[s])?void 0:n.pathIndex;const u=window.location.protocol,A=window.location.host;let c=l?`${`${u}//${A}`}/api/experiment/models/preview/${l}/${d}/${bi(s)}`:"";return{folder:l,content:e,fullName:s,thumbnail:i?c:null,title:o.outerHTML,callback:r}};if(p>0){const e=(t,i)=>{let s=[],a=[];const n=t.map((({value:e,fullValue:t})=>{const n={},o=e.indexOf("/")>-1?"/":"\\",l=e.split(o);if(l.length>1){const e=l.shift();n[e]=n[e]||[],n[e].push({value:l.join(o),fullValue:t})}if(Object.values(u).length>0){let i=Object.keys(n)[0];i&&n[i]?s.push({key:i,value:n[i][0]}):a.push(m(e,i,t))}return m(e,i,t)}));if(s.length>0){let t={};return s.forEach((e=>{t[e.key]=t[e.key]||[],t[e.key].push(e.value)})),[...Object.entries(t).map((t=>({content:t[0],has_submenu:!0,callback:()=>{},submenu:{options:e(t[1],t[0])}}))),...a]}return n};for(const[t,i]of Object.entries(u))h.push({content:t,has_submenu:!0,callback:()=>{},submenu:{options:e(i,t)}})}h.push(...c.map((e=>m(e.value,"",e.fullValue)))),A.length>0&&h.push(...A.map((e=>m(e.value,"",e.fullValue))));return h}(t,i);return s?e.call(this,s,i):e.apply(this,[...arguments])}var s},LiteGraph.ContextMenu.prototype=e.prototype,we("EasyUse.ContextMenu.NodesSort")&&(LiteGraph.ContextMenu.prototype.addItem=wi),document.getElementById("graph-canvas").addEventListener("mouseenter",(e=>{setTimeout((e=>{const t=document.getElementById("easyuse-model-thumbnail");t&&0!=t.style.opacity&&(t.style.display="none",t.style.opacity=0,t.style.left="0px",t.style.top="0px")}),100)}))},async beforeRegisterNodeDef(e,t,i){const s=e.prototype.onNodeCreated;["CheckpointLoader|pysssss","LoraLoader|pysssss"].includes(t.name)&&(e.prototype.onNodeCreated=async function(){s&&s.apply(this,[]);let e=vt(this,"lora_name")||vt(this,"ckpt_name");if(e){let t=e.onClick;e.onClick=function(e){return vi=!0,setTimeout((e=>{vi=!1}),500),t.call(this,e)}}})}});const _i=async()=>{["checkpoints","loras","diffusion_models"].map((async e=>{const t=await he.getModels(e);(null==t?void 0:t.length)>0&&t.map((t=>{gi[t.name]={folder:e,pathIndex:t.pathIndex}}))}))},Si=(e,t,i)=>s=>{var a;const n=t=>{setTimeout((s=>{const a=i.getBoundingClientRect();if(!a)return;const n=document.body.getBoundingClientRect();if(!n)return;const{left:o,top:l}=((e,t,i)=>{const{x:s}=e.getBoundingClientRect();let{top:a,left:n}=t;const{width:o,height:l}=i;return s<=o&&(n+=t.width),t.top<=l||(a=l),{left:n,top:a}})(e,a,n),r=document.getElementById("easyuse-model-thumbnail");r.src=t,r.style.left=`${o}px`,r.style.top=`${l}px`,r.style.display="block",r.style.opacity=1,r.onerror=e=>{r.src=De}}),10)};if(null==(a=null==gi?void 0:gi[t.fullName])?void 0:a.img){let e=gi[t.fullName].img;n("no_preview_image"==e?De:e.src)}else{let e=new Image;e.src=t.thumbnail,e.onload=i=>{gi[t.fullName].img=e,n(t.thumbnail)},e.onerror=i=>{e=null,gi[t.fullName].img="no_preview_image",n(De)}}},xi=()=>e=>{const t=document.getElementById("easyuse-model-thumbnail");t&&0!=t.style.opacity&&(t.style.display="none",t.style.opacity=0,t.style.left="0px",t.style.top="0px")};class Li extends fe{constructor(){super(),this.element.classList.add("easyuse-model-metadata")}show(e){super.show(me("div",Object.keys(e).map((t=>me("div",[me("label",{textContent:t}),me("span",{textContent:e[t]})])))))}}class ki extends fe{constructor(e){super(),this.name=e,this.element.classList.add("easyuse-model-info")}get customNotes(){return this.metadata["easyuse.notes"]}set customNotes(e){this.metadata["easyuse.notes"]=e}get hash(){return this.metadata["easyuse.sha256"]}async show(e,t){this.type=e;const i=he.fetchApi("/easyuse/metadata/"+encodeURIComponent(`${e}/${t}`));this.info=me("div",{style:{flex:"auto"}}),this.imgCurrent=0,this.imgList=me("div.easyuse-preview-list",{style:{display:"none"}}),this.imgWrapper=me("div.easyuse-preview",[me("div.easyuse-preview-group",[this.imgList])]),this.main=me("main",{style:{display:"flex"}},[this.imgWrapper,this.info]),this.content=me("div.easyuse-model-content",[me("div.easyuse-model-header",[me("h2",{textContent:this.name})]),this.main]);const s=me("div",{textContent:"ℹ️ Loading...",parent:this.content});super.show(this.content),this.metadata=await(await i).json(),this.viewMetadata.style.cursor=this.viewMetadata.style.opacity="",this.viewMetadata.removeAttribute("disabled"),s.remove(),this.addInfo()}createButtons(){const e=super.createButtons();return this.viewMetadata=me("button",{type:"button",textContent:"View raw metadata",disabled:"disabled",style:{opacity:.5,cursor:"not-allowed"},onclick:e=>{this.metadata&&(new Li).show(this.metadata)}}),e.unshift(this.viewMetadata),e}parseNote(){if(!this.customNotes)return[];let e=[];const t=new RegExp("(\\bhttps?:\\/\\/[^\\s]+)","g");let i,s=0;do{let a;i=t.exec(this.customNotes);let n=0;i?(a=i.index,n=i.index+i[0].length):a=this.customNotes.length;let o=this.customNotes.substring(s,a);o&&(o=o.replaceAll("\n","
"),e.push(me("span",{innerHTML:o}))),i&&e.push(me("a",{href:i[0],textContent:i[0],target:"_blank"})),s=n}while(i);return e}addInfoEntry(e,t){return me("p",{parent:this.info},["string"==typeof e?me("label",{textContent:e+": "}):e,"string"==typeof t?me("span",{textContent:t}):t])}async getCivitaiDetails(){const e=await fetch("https://civitai.com/api/v1/model-versions/by-hash/"+this.hash);if(200===e.status)return await e.json();throw 404===e.status?new Error("Model not found"):new Error(`Error loading info (${e.status}) ${e.statusText}`)}addCivitaiInfo(){const e=this.getCivitaiDetails(),t=me("span",{textContent:"ℹ️ Loading..."});return this.addInfoEntry(me("label",[me("img",{style:{width:"18px",position:"relative",top:"3px",margin:"0 5px 0 0"},src:"https://civitai.com/favicon.ico"}),me("span",{textContent:"Civitai: "})]),t),e.then((e=>{var t,i;this.imgWrapper.style.display="block";let s=this.element.querySelector(".easyuse-model-header");s&&s.replaceChildren(me("h2",{textContent:this.name}),me("div.easyuse-model-header-remark",[me("h5",{textContent:Le("Updated At:")+Ue(new Date(e.updatedAt),"yyyy/MM/dd")}),me("h5",{textContent:Le("Created At:")+Ue(new Date(e.updatedAt),"yyyy/MM/dd")})]));let a=null,n=this.parseNote.call(this),o=Le("✏️ Edit"),l=me("div.easyuse-model-detail-textarea",[me("p",(null==n?void 0:n.length)>0?n:{textContent:Le("No notes")})]);if(n&&0!=n.length?l.classList.remove("empty"):l.classList.add("empty"),this.info.replaceChildren(me("div.easyuse-model-detail",[me("div.easyuse-model-detail-head.flex-b",[me("span",Le("Notes")),me("a",{textContent:o,href:"#",style:{fontSize:"12px",float:"right",color:"var(--warning-color)",textDecoration:"none"},onclick:async e=>{if(e.preventDefault(),a){if(a.value!=this.customNotes){Ze.showLoading(Le("Saving Notes...")),this.customNotes=a.value;const e=await he.fetchApi("/easyuse/metadata/notes/"+encodeURIComponent(`${this.type}/${this.name}`),{method:"POST",body:this.customNotes});if(Ze.hideLoading(),200!==e.status)return Ze.error(Le("Saving Failed")),void alert(`Error saving notes (${e.status}) ${e.statusText}`);Ze.success(Le("Saving Succeed")),n=this.parseNote.call(this),l.replaceChildren(me("p",(null==n?void 0:n.length)>0?n:{textContent:Le("No notes")})),a.value?l.classList.remove("empty"):l.classList.add("empty")}else l.replaceChildren(me("p",{textContent:Le("No notes")})),l.classList.add("empty");e.target.textContent=o,a.remove(),a=null}else e.target.textContent="💾 Save",a=me("textarea",{placeholder:Le("Type your notes here"),style:{width:"100%",minWidth:"200px",minHeight:"50px",height:"100px"},textContent:this.customNotes}),l.replaceChildren(a),a.focus()}})]),l]),me("div.easyuse-model-detail",[me("div.easyuse-model-detail-head",{textContent:Le("Details")}),me("div.easyuse-model-detail-body",[me("div.easyuse-model-detail-item",[me("div.easyuse-model-detail-item-label",{textContent:Le("Type")}),me("div.easyuse-model-detail-item-value",{textContent:e.model.type})]),me("div.easyuse-model-detail-item",[me("div.easyuse-model-detail-item-label",{textContent:Le("BaseModel")}),me("div.easyuse-model-detail-item-value",{textContent:e.baseModel})]),me("div.easyuse-model-detail-item",[me("div.easyuse-model-detail-item-label",{textContent:Le("Download")}),me("div.easyuse-model-detail-item-value",{textContent:(null==(t=e.stats)?void 0:t.downloadCount)||0})]),me("div.easyuse-model-detail-item",[me("div.easyuse-model-detail-item-label",{textContent:Le("Trained Words")}),me("div.easyuse-model-detail-item-value",{textContent:(null==e?void 0:e.trainedWords.join(","))||"-"})]),me("div.easyuse-model-detail-item",[me("div.easyuse-model-detail-item-label",{textContent:Le("Source")}),me("div.easyuse-model-detail-item-value",[me("label",[me("img",{style:{width:"14px",position:"relative",top:"3px",margin:"0 5px 0 0"},src:"https://civitai.com/favicon.ico"}),me("a",{href:"https://civitai.com/models/"+e.modelId,textContent:"View "+e.model.name,target:"_blank"})])])])])])),null==(i=e.images)?void 0:i.length){this.imgCurrent=0,this.isSaving=!1,e.images.map((e=>e.url&&this.imgList.appendChild(me("div.easyuse-preview-slide",[me("div.easyuse-preview-slide-content",[me("img",{src:e.url}),me("div.save",{textContent:"Save as preview",onclick:async()=>{if(this.isSaving)return;this.isSaving=!0,Ze.showLoading(Le("Saving Preview..."));const t=await(await fetch(e.url)).blob(),i="temp_preview."+new URL(e.url).pathname.split(".")[1],s=new FormData;s.append("image",new File([t],i)),s.append("overwrite","true"),s.append("type","temp");if(200!==(await he.fetchApi("/upload/image",{method:"POST",body:s})).status)return this.isSaving=!1,Ze.error(Le("Saving Failed")),Ze.hideLoading(),void alert(`Error saving preview (${req.status}) ${req.statusText}`);await he.fetchApi("/easyuse/save/"+encodeURIComponent(`${this.type}/${this.name}`),{method:"POST",body:JSON.stringify({filename:i,type:"temp"}),headers:{"content-type":"application/json"}}).then((e=>{Ze.success(Le("Saving Succeed")),Ze.hideLoading()})),this.isSaving=!1,app.refreshComboInNodes()}})])]))));let t=this;this.imgDistance=(-660*this.imgCurrent).toString(),this.imgList.style.display="",this.imgList.style.transform="translate3d("+this.imgDistance+"px, 0px, 0px)",this.slides=this.imgList.querySelectorAll(".easyuse-preview-slide"),this.slideLeftButton=me("button.left",{parent:this.imgWrapper,style:{display:e.images.length<=2?"none":"block"},innerHTML:'',onclick:()=>{e.images.length<=2||(t.imgList.classList.remove("no-transition"),0==t.imgCurrent?(t.imgCurrent=e.images.length/2-1,this.slides[this.slides.length-1].style.transform="translate3d("+(-660*(this.imgCurrent+1)).toString()+"px, 0px, 0px)",this.slides[this.slides.length-2].style.transform="translate3d("+(-660*(this.imgCurrent+1)).toString()+"px, 0px, 0px)",t.imgList.style.transform="translate3d(660px, 0px, 0px)",setTimeout((e=>{this.slides[this.slides.length-1].style.transform="translate3d(0px, 0px, 0px)",this.slides[this.slides.length-2].style.transform="translate3d(0px, 0px, 0px)",t.imgDistance=(-660*this.imgCurrent).toString(),t.imgList.style.transform="translate3d("+t.imgDistance+"px, 0px, 0px)",t.imgList.classList.add("no-transition")}),500)):(t.imgCurrent=t.imgCurrent-1,t.imgDistance=(-660*this.imgCurrent).toString(),t.imgList.style.transform="translate3d("+t.imgDistance+"px, 0px, 0px)"))}}),this.slideRightButton=me("button.right",{parent:this.imgWrapper,style:{display:e.images.length<=2?"none":"block"},innerHTML:'',onclick:()=>{if(!(e.images.length<=2))if(t.imgList.classList.remove("no-transition"),t.imgCurrent>=e.images.length/2-1){t.imgCurrent=0;const i=e.images.length/2;this.slides[0].style.transform="translate3d("+(660*i).toString()+"px, 0px, 0px)",this.slides[1].style.transform="translate3d("+(660*i).toString()+"px, 0px, 0px)",t.imgList.style.transform="translate3d("+(-660*i).toString()+"px, 0px, 0px)",setTimeout((e=>{this.slides[0].style.transform="translate3d(0px, 0px, 0px)",this.slides[1].style.transform="translate3d(0px, 0px, 0px)",t.imgDistance=(-660*this.imgCurrent).toString(),t.imgList.style.transform="translate3d("+t.imgDistance+"px, 0px, 0px)",t.imgList.classList.add("no-transition")}),500)}else t.imgCurrent=t.imgCurrent+1,t.imgDistance=(-660*this.imgCurrent).toString(),t.imgList.style.transform="translate3d("+t.imgDistance+"px, 0px, 0px)"}})}return e.description&&me("div",{parent:this.content,innerHTML:e.description,style:{marginTop:"10px"}}),e})).catch((e=>{this.imgWrapper.style.display="none",t.textContent="⚠️ "+e.message})).finally((e=>{}))}}class Ei extends ki{async addInfo(){await this.addCivitaiInfo()}}class Ni extends ki{getTagFrequency(){if(!this.metadata.ss_tag_frequency)return[];const e=JSON.parse(this.metadata.ss_tag_frequency),t={};for(const i in e){const s=e[i];for(const e in s)e in t?t[e]+=s[e]:t[e]=s[e]}return Object.entries(t).sort(((e,t)=>t[1]-e[1]))}getResolutions(){let e=[];if(this.metadata.ss_bucket_info){const t=JSON.parse(this.metadata.ss_bucket_info);if(null==t?void 0:t.buckets)for(const{resolution:i,count:s}of Object.values(t.buckets))e.push([s,`${i.join("x")} * ${s}`])}e=e.sort(((e,t)=>t[0]-e[0])).map((e=>e[1]));let t=this.metadata.ss_resolution;if(t){const i=t.split(","),s=i[0].replace("(",""),a=i[1].replace(")","");e.push(`${s.trim()}x${a.trim()} (Base res)`)}else(t=this.metadata["modelspec.resolution"])&&e.push(t+" (Base res");return e.length||e.push("⚠️ Unknown"),e}getTagList(e){return e.map((e=>me("li.easyuse-model-tag",{dataset:{tag:e[0]},$:e=>{e.onclick=()=>{e.classList.toggle("easyuse-model-tag--selected")}}},[me("p",{textContent:e[0]}),me("span",{textContent:e[1]})])))}addTags(){let e,t=this.getTagFrequency();if(null==t?void 0:t.length){const i=t.length;let s;i>500&&(t=t.slice(0,500),e=me("p",[me("span",{textContent:"⚠️ Only showing first 500 tags "}),me("a",{href:"#",textContent:`Show all ${i}`,onclick:()=>{s.replaceChildren(...this.getTagList(this.getTagFrequency())),e.remove()}})])),s=me("ol.easyuse-model-tags-list",this.getTagList(t)),this.tags=me("div",[s])}else this.tags=me("p",{textContent:"⚠️ No tag frequency metadata found"});this.content.append(this.tags),e&&this.content.append(e)}async addInfo(){const e=this.addCivitaiInfo();this.addTags();const t=await e;t&&me("div",{parent:this.content,innerHTML:t.description,style:{maxHeight:"250px",overflow:"auto"}})}createButtons(){const e=super.createButtons();function t(e,t){const i=me("textarea",{parent:document.body,style:{position:"fixed"},textContent:t.map((e=>e.dataset.tag)).join(", ")});i.select();try{document.execCommand("copy"),e.target.dataset.text||(e.target.dataset.text=e.target.textContent),e.target.textContent="Copied "+t.length+" tags",setTimeout((()=>{e.target.textContent=e.target.dataset.text}),1e3)}catch(s){prompt("Copy to clipboard: Ctrl+C, Enter",text)}finally{document.body.removeChild(i)}}return e.unshift(me("button",{type:"button",textContent:"Copy Selected",onclick:e=>{t(e,[...this.tags.querySelectorAll(".easyuse-model-tag--selected")])}}),me("button",{type:"button",textContent:"Copy All",onclick:e=>{t(e,[...this.tags.querySelectorAll(".easyuse-model-tag")])}})),e}}const Ci={pipe:{category:"Easy Pipe",nodes:["easy pipeIn","easy pipeOut","easy pipeEdit","easy pipeEditPrompt","easy pipeBatchIndex"],input:{pipe:"pipe"},output:{pipe:"pipe"},widget:{optional_positive:"optional_positive",optional_negative:"optional_negative"}},loaders:{category:"Easy Loaders",nodes:["easy fullLoader","easy a1111Loader","easy comfyLoader","easy kolorsLoader","easy hunyuanDiTLoader","easy pixArtLoader","easy fluxLoader"],input:{optional_lora_stack:"optional_lora_stack",optional_controlnet_stack:"optional_controlnet_stack",positive:"positive",negative:"negative"},output:{pipe:"pipe",model:"model",vae:"vae",clip:null,positive:null,negative:null,latent:null},widget:{ckpt_name:"ckpt_name",vae_name:"vae_name",clip_skip:"clip_skip",lora_name:"lora_name",resolution:"resolution",empty_latent_width:"empty_latent_width",empty_latent_height:"empty_latent_height",positive:"positive",negative:"negative",batch_size:"batch_size",a1111_prompt_style:"a1111_prompt_style"}},preSampling:{category:"Easy PreSampling",nodes:["easy preSampling","easy preSamplingAdvanced","easy preSamplingDynamicCFG","easy preSamplingNoiseIn","easy preSamplingCustom","easy preSamplingLayerDiffusion","easy fullkSampler"],input:{pipe:"pipe",image_to_latent:"image_to_latent",latent:"latent"},output:{pipe:"pipe"},widget:{steps:"steps",cfg:"cfg",cfg_scale_min:"cfg",sampler_name:"sampler_name",scheduler:"scheduler",denoise:"denoise",seed_num:"seed_num",seed:"seed"}},samplers:{category:"Custom Sampler",nodes:["KSamplerSelect","SamplerEulerAncestral","SamplerEulerAncestralCFG++","SamplerLMS","SamplerDPMPP_3M_SDE","SamplerDPMPP_2M_SDE","SamplerDPMPP_SDE","SamplerDPMAdaptative","SamplerLCMUpscale","SamplerTCD","SamplerTCD EulerA"],output:{SAMPLER:"SAMPLER"}},sigmas:{category:"Custom Sigmas",nodes:["BasicScheduler","KarrasScheduler","ExponentialScheduler","PolyexponentialScheduler","VPScheduler","BetaSamplingScheduler","SDTurboScheduler","SplitSigmas","SplitSigmasDenoise","FlipSigmas","AlignYourStepsScheduler","GITSScheduler"],output:{SIGMAS:"SIGMAS"}},kSampler:{category:"Easy kSampler",nodes:["easy kSampler","easy kSamplerTiled","easy kSamplerCustom","easy kSamplerInpainting","easy kSamplerDownscaleUnet","easy kSamplerLayerDiffusion"],input:{pipe:"pipe",model:"model"},output:{pipe:"pipe",image:"image"},widget:{image_output:"image_output",save_prefix:"save_prefix",link_id:"link_id"}},controlNet:{category:"Easy ControlNet",nodes:["easy controlnetLoader","easy controlnetLoaderADV","easy controlnetLoader++","easy instantIDApply","easy instantIDApplyADV"],input:{pipe:"pipe",image:"image",image_kps:"image_kps",control_net:"control_net",positive:"positive",negative:"negative",mask:"mask"},output:{pipe:"pipe",positive:"positive",negative:"negative"},widget:{control_net_name:"control_net_name",strength:["strength","cn_strength"],scale_soft_weights:["scale_soft_weights","cn_soft_weights"],cn_strength:["strength","cn_strength"],cn_soft_weights:["scale_soft_weights","cn_soft_weights"]}},adapter:{category:"Easy Adapter",nodes:["easy ipadapterApply","easy ipadapterApplyADV","easy ipadapterApplyFaceIDKolors","easy ipadapterStyleComposition","easy ipadapterApplyFromParams","easy pulIDApply","easy pulIDApplyADV"],input:{model:"model",image:"image",image_style:"image",attn_mask:"attn_mask",optional_ipadapter:"optional_ipadapter"},output:{model:"model",tiles:"tiles",masks:"masks",ipadapter:"ipadapter"},widget:{preset:"preset",lora_strength:"lora_strength",provider:"provider",weight:"weight",weight_faceidv2:"weight_faceidv2",start_at:"start_at",end_at:"end_at",cache_mode:"cache_mode",use_tiled:"use_tiled",insightface:"insightface",pulid_file:"pulid_file"}},positive:{category:"Easy Positive",nodes:["easy positive","easy wildcards"],input:{},output:{text:"positive",positive:"text"},widget:{text:"positive",positive:"text"}},loadImage:{category:"Easy LoadImage",nodes:["easy loadImageBase64","LoadImage","LoadImageMask"],input:{pipe:"pipe",image:"image",mask:"mask"},output:{IMAGE:"IMAGE",MASK:"MASK"},widget:{image:"image",base64_data:"base64_data",channel:"channel"}},saveImage:{category:"Save/Preview Image",nodes:["SaveImage","PreviewImage"]},inPaint:{category:"Easy Inpaint",nodes:["easy applyBrushNet","easy applyPowerPaint","easy applyInpaint"],input:{},output:{pipe:"pipe"},widget:{dtype:"dtype",fitting:"fitting",function:"function",scale:"scale",start_at:"start_at",end_at:"end_at"}},showAny:{category:"Show Anything",nodes:["easy showAnything","Preview Any"],input:{anything:"anything"},output:{output:"output"}},saveText:{category:"Save Text",nodes:["easy saveText"],input:{image:"image",text:"text",output_file_path:"output_file_path",file_name:"file_name",file_extension:"file_extension",overwrite:"overwrite"},output:{text:"text",image:"image"},widget:{image:"image",text:"text",output_file_path:"output_file_path",file_name:"file_name",file_extension:"file_extension",overwrite:"overwrite"}},persona:{category:"LLM Party Persona",nodes:["load_persona","classify_persona","classify_persona_plus","custom_persona","translate_persona","flux_persona"],input:{file_content:"file_content"},output:{system_prompt:"system_prompt"},widget:{is_enable:"is_enable"}},llmModelLoader:{category:"LLM Model Loader",nodes:["LLM_api_loader","genai_api_loader","LLM_local_loader"],output:{model:"model"}},llmModelChain:{category:"LLM Model Chain",nodes:["LLM","LLM_local"],input:{model:"model",image:"images",images:"image",extra_parameters:"extra_parameters",system_prompt_input:"system_prompt_input",user_prompt_input:"user_prompt_input",tools:"tools",file_content:"file_content"},output:{assistant_response:"assistant_response",history:"history",tool:"tool",image:"image"},widget:{system_prompt:"system_prompt",user_prompt:"user_prompt",temperature:"temperature",is_memory:"is_memory",is_tools_in_sys_prompt:"is_tools_in_sys_prompt",max_length:"max_length",main_brain:"main_brain",conversation_rounds:"conversation_rounds",history_record:"history_record",is_enable:"is_enable"}},maskModify:{category:"Mask Modify",nodes:["CropMask","ThresholdMask","GrowMask","FeatherMask","LayerMask: MaskGrain","LayerMask: MaskEdgeUltraDetail","LayerMask: MaskEdgeUltraDetail V2"],input:{mask:"mask"},output:{MASK:"MASK",mask:"mask",image:"image"}},maskModifyWAS:{category:"Mask Modify (WAS)",nodes:["Mask Dilate Region","Mask Gaussian Region"],input:{masks:"masks"},output:{MASKS:"MASKS"}},indextts_emotions:{category:"IndexTTS Emotions",nodes:["easy indexTTSEmotionVector","easy indexTTSEmotionText","easy indexTTSEmotionAudio"],input:{reference_audio:"reference_audio"},output:{emotions:"emotions"}},indextts_generate:{category:"IndexTTS Generate",nodes:["easy indexTTSGenerate","easy indexTTSGenerateSimple"],input:{indextts_model:"indextts_model",reference_audio:"reference_audio",reference_audios:"reference_audios",emotions:"emotions"},output:{audio:"audio",seed:"seed",subtitle:"subtitle"},widget:{text:"text",unload_model:"unload_model",seed:"seed"}},fast_loaders:{category:"Fast Loaders",nodes:["fast ckptLoader","fast unetLoader"],input:{"开始加载":"开始加载"},output:{"模型加载器":"模型加载器",MODEL:"MODEL",VAE:"VAE",CLIP:"CLIP"}},fast_inputs:{category:"Fast Inputs",nodes:["fast sdInput","fast fluxInput","fast hiDreamInput","fast videoInput","fast qwenImageInput"],input:{"模型加载器":"模型加载器","更多Controlnet":"更多Controlnet","图像":"图像","遮罩":"遮罩","功能节点":"功能节点"},output:{"采样":"采样","正面条件":"正面条件","负面条件":"负面条件","潜空间":"潜空间"},widget:{Sigmas:"Sigmas","分离Sigmas步数":"分离Sigmas步数","分离降噪":"分离降噪","降噪":"降噪","添加噪声":"添加噪声",seed:"seed","生成数量":"生成数量"}},fast_outputResult:{category:"Fast Outputs",nodes:["fast outputResult","fast outputResultVideo","fast outputLatent"],input:{"采样":"采样","噪声":"噪声","模型加载器":"模型加载器"},output:{"图像":"图像序列","图像序列":"图像","输出":"输出","降噪输出":"降噪输出",VAE:"VAE"},widget:{"采样预览":"采样预览","VAE解码":"VAE解码","图像输出":"视频输出","视频输出":"图像输出","保存路径":"保存路径"}},fast_loadImage:{category:"Fast LoadImage",nodes:["fast loadImage","fast loadImageList"],output:{"图像":"图像","遮罩":"遮罩","文件名":"文件名"},widget:{"模式":"模式","图像":"图像","路径":"路径","最大张数":"最大张数","开始索引":"开始索引",Base64:"Base64","链接":"链接"}}};function Ii(e,t,i){return function(){!function(e,t,i){var s;const a=LiteGraph.createNode(t);if(a){if(pe.graph.add(a),a.pos=e.pos.slice(),a.size=e.size.slice(),(null==(s=e.widgets)?void 0:s.length)>0&&e.widgets.forEach((e=>{var t,s,n;if(null==(s=null==(t=Ci[i])?void 0:t.widget)?void 0:s[e.name]){const t=Ci[i].widget[e.name];if(t&&a.widgets){const i=(n=t,a.widgets.find((e=>"object"==typeof n?n.includes(e.name):e.name===n)));i&&(i.value=e.value,"seed_num"==e.name&&(i.linkedWidgets[0].value=e.linkedWidgets[0].value),"converted-widget"==e.type&&Gi(a,i,e))}}})),e.inputs&&e.inputs.forEach(((t,s)=>{var n,o,l;if(t&&t.link&&(null==(o=null==(n=Ci[i])?void 0:n.input)?void 0:o[t.name])){const s=null==(l=Ci[i])?void 0:l.input[t.name];if(null===s)return;const n=a.findInputSlot(s);if(-1!==n){const i=e.graph.links[t.link];if(i){const t=e.graph.getNodeById(i.origin_id);t&&t.connect(i.origin_slot,a,n)}}}})),e.outputs&&e.outputs.forEach(((t,s)=>{var n,o;if(t&&t.links&&(null==(o=null==(n=Ci[i])?void 0:n.output)?void 0:o[t.name])){const s=Ci[i].output[t.name];if(null===s)return;const n=a.findOutputSlot(s);-1!==n&&t.links.forEach((t=>{const i=e.graph.links[t];if(i){const t=e.graph.getNodeById(i.target_id);t&&a.connect(n,t,i.target_slot)}}))}})),pe.graph.remove(e),"easy fullkSampler"==a.type){const e=a.outputs[0].links;if(e&&e[0]){const t=pe.graph._nodes.find((t=>t.inputs&&t.inputs[0]&&t.inputs[0].link==e[0]));t&&pe.graph.remove(t)}}else if(Ci.preSampling.nodes.includes(a.type)){const e=a.outputs[0].links;if(!e||!e[0]){const e=LiteGraph.createNode("easy kSampler");pe.graph.add(e),e.pos=a.pos.slice(),e.pos[0]=e.pos[0]+a.size[0]+20;const t=a.findInputSlot("pipe");-1!==t&&a&&a.connect(0,e,t)}}a.setSize([a.size[0],a.computeSize()[1]])}}(e,t,i)}}const Ti=(e,t)=>{const i=e.prototype.getExtraMenuOptions;e.prototype.getExtraMenuOptions=function(){const e=i.apply(this,arguments);return t.apply(this,arguments),e}},Oi=(e,t,i,s,a=!0)=>{Ti(s,(function(s,n){n.unshift({content:e,has_submenu:a,callback:(e,s,a,n,o)=>Mi(e,s,a,n,o,t,i)}),"loaders"==t&&(n.unshift({content:Le("💎 View Lora Info..."),callback:(e,t,i,s,a)=>{let n=a.widgets.find((e=>"lora_name"==e.name)).value;n&&"None"!=n&&new Ni(n).show("loras",n)}}),n.unshift({content:Le("💎 View Checkpoint Info..."),callback:(e,t,i,s,a)=>{let n=a.widgets[0].value;n&&"None"!=n&&new Ei(n).show("checkpoints",n)}}))}))},Mi=(e,t,i,s,a,n,o)=>{const l=[];return o.map((e=>{a.type!==e&&l.push({content:`${e}`,callback:Ii(a,e,n)})})),new LiteGraph.ContextMenu(l,{event:i,callback:null,parentMenu:s,node:a}),!1},Di="converted-widget",Ri=Symbol();function Pi(e,t,i=""){if(t.origType=t.type,t.origComputeSize=t.computeSize,t.origSerializeValue=t.serializeValue,t.computeSize=()=>[0,-4],t.type=Di+i,t.serializeValue=()=>{if(!e.inputs)return;let i=e.inputs.find((e=>{var i;return(null==(i=e.widget)?void 0:i.name)===t.name}));return i&&i.link?t.origSerializeValue?t.origSerializeValue():t.value:void 0},t.linkedWidgets)for(const s of t.linkedWidgets)Pi(e,s,":"+t.name)}function Gi(e,t,i){Pi(e,t);const{type:s}=function(e){let t=e[0];t instanceof Array&&(t="COMBO");return{type:t}}(i),a=e.size;t.options&&t.options.forceInput||e.addInput(t.name,s,{widget:{name:t.name,[Ri]:()=>i}});for(const n of e.widgets)n.last_y+=LiteGraph.NODE_SLOT_HEIGHT;e.setSize([Math.max(a[0],e.size[0]),Math.max(a[1],e.size[1])])}const zi=function(e){var t,i,s,a;const n=e.constructor.type,o=e.properties.origVals||{},l=o.title||e.title,r=o.color||e.color,d=o.bgcolor||e.bgcolor,u=e,A={size:[...e.size],color:r,bgcolor:d,pos:[...e.pos]};let c=[],p=[];if(e.inputs)for(const g of e.inputs)if(g.link){const t=g.name,i=e.findInputSlot(t),s=e.getInputNode(i),a=e.getInputLink(i);c.push([a.origin_slot,s,t])}if(e.outputs)for(const g of e.outputs)if(g.links){const e=g.name;for(const t of g.links){const i=graph.links[t],s=graph._nodes_by_id[i.target_id];p.push([e,s,i.target_slot])}}pe.graph.remove(e);let h=pe.graph.add(LiteGraph.createNode(n,l,A));function m(){if(u.widgets)for(let e of u.widgets)if("converted-widget"===e.type){const t=h.widgets.find((t=>t.name===e.name));for(let i of u.inputs)i.name===e.name&&Gi(h,t,i.widget)}for(let e of c){const[t,i,s]=e;i.connect(t,h.id,s)}for(let e of p){const[t,i,s]=e;h.connect(t,i,s)}}h.inputs.map(((t,i)=>{h.inputs[i].label=e.inputs[i].label})),h.outputs.map(((t,i)=>{h.outputs[i].label=e.outputs[i].label}));let f=u.widgets_values;if(!f&&(null==(t=h.widgets)?void 0:t.length)>0)return h.widgets.forEach(((e,t)=>{const i=u.widgets[t];e.name===i.name&&e.type===i.type&&(e.value=i.value)})),void m();if(f){let e=function(e,t){var i,s,a,n,o,l;if(!0===e||!1===e){if((null==(i=t.options)?void 0:i.on)&&(null==(s=t.options)?void 0:s.off))return{value:e,pass:!0}}else if("number"==typeof e){if((null==(a=t.options)?void 0:a.min)<=e&&e<=(null==(n=t.options)?void 0:n.max))return{value:e,pass:!0}}else{if(null==(l=null==(o=t.options)?void 0:o.values)?void 0:l.includes(e))return{value:e,pass:!0};if(t.inputEl&&"string"==typeof e)return{value:e,pass:!0}}return{value:t.value,pass:!1}},t=!1;const n=(null==f?void 0:f.length)<=(null==(i=h.widgets)?void 0:i.length);let o=n?0:f.length-1;const l=i=>{var s;const a=u.widgets[i];let l=h.widgets[i];if(l.name===a.name&&l.type===a.type){for(;(n?o=0)&&!t;){let{value:t,pass:i}=e(f[o],l);if(i&&null!==t){l.value=t;break}o+=n?1:-1}o++,n||(o=f.length-((null==(s=h.widgets)?void 0:s.length)-1-i))}};if(n&&(null==(s=h.widgets)?void 0:s.length)>0)for(let i=0;i0)for(let i=h.widgets.length-1;i>=0;i--)l(i)}m()};pe.registerExtension({name:"Comfy.EasyUse.ExtraMenu",async beforeRegisterNodeDef(e,t,i){Ti(e,(function(e,i){i.unshift({content:Le("🔃 Reload Node"),callback:(e,t,i,s,a)=>{let n=LGraphCanvas.active_canvas;if(!n.selected_nodes||Object.keys(n.selected_nodes).length<=1)zi(a);else for(let o in n.selected_nodes)zi(n.selected_nodes[o])}}),"easy ckptNames"==t.name&&i.unshift({content:Le("💎 View Checkpoint Info..."),callback:(e,t,i,s,a)=>{a.widgets[0].value}})}));for(const s in Ci)Ci[s].nodes.includes(t.name)&&Oi(`↪️ Swap ${Ci[s].category}`,s,Ci[s].nodes,e)}});const Vi=LiteGraph.LGraphNode,ji="➡️";pe.registerExtension({name:"easy setNode",registerCustomNodes(){class e extends Vi{constructor(t){super("Set"),v(this,"defaultVisibility",!0),v(this,"serialize_widgets",!0),this.properties||(this.properties={previousName:""}),this.properties.showOutputText=e.defaultVisibility;const i=this;i.color=LGraphCanvas.node_colors.blue.color,this.addWidget("text","Constant","",((e,t,s,a,n)=>{i.validateName(i.graph),""!==this.widgets[0].value&&(this.title=ji+this.widgets[0].value),this.properties.previousName=this.widgets[0].value,this.update()}),{}),this.addInput("*","*"),this.onConnectionsChange=function(e,t,s,a,n){if(1!=e||s||(this.inputs[t].type="*",this.inputs[t].name="*",this.title="Set"),a&&i.graph&&1==e&&s){const e=i.graph._nodes.find((e=>e.id==a.origin_id)).outputs[a.origin_slot];if(!e)return;const t=e.type,s=i.is_auto_link?this.widgets[0].value:e.name;"Set"===this.title&&(this.title=ji+s,this.widgets[0].value=s),"*"===this.widgets[0].value&&(this.widgets[0].value=s),this.validateName(i.graph),this.inputs[0]&&(this.inputs[0].type=t,this.inputs[0].name=s),setTimeout((e=>{this.title=ji+this.widgets[0].value,this.properties.previousName=this.widgets[0].value}),1)}this.update()},this.validateName=function(e){let t=i.widgets[0].value;if(""!=t){let s=0,a=[];do{a=e._nodes.filter((e=>e!=this&&("easy setNode"==e.type&&e.widgets[0].value===t))),a.length>0&&(t=i.widgets[0].value+s),s++}while(a.length>0);i.widgets[0].value=t,this.update()}},this.clone=function(){const t=e.prototype.clone.apply(this);return t.inputs[0].name="*",t.inputs[0].type="*",t.properties.previousName="",t.size=t.computeSize(),t},this.onAdded=function(e){this.validateName(e)},this.update=function(){if(i.graph){this.findGetters(i.graph).forEach((e=>{e.setType(this.inputs[0].type)})),this.widgets[0].value&&this.findGetters(i.graph,!0).forEach((e=>{e.setName(this.widgets[0].value)}));i.graph._nodes.filter((e=>"easy getNode"==e.type)).forEach((e=>{e.setComboValues&&e.setComboValues()}))}},this.findGetters=function(e,t){const i=t?this.properties.previousName:this.widgets[0].value;return e._nodes.filter((e=>"easy getNode"==e.type&&e.widgets[0].value===i&&""!=i))},this.isVirtualNode=!0}onRemoved(){this.graph._nodes.filter((e=>"easy getNode"==e.type)).forEach((e=>{e.setComboValues&&e.setComboValues([this])}))}}LiteGraph.registerNodeType("easy setNode",Object.assign(e,{title:"Set"})),e.category="EasyUse/Util"}}),pe.registerExtension({name:"easy getNode",registerCustomNodes(){class e extends Vi{constructor(t){super("Get"),v(this,"defaultVisibility",!0),v(this,"serialize_widgets",!0),this.properties||(this.properties={}),this.properties.showOutputText=e.defaultVisibility;const i=this;i.color=LGraphCanvas.node_colors.blue.color,this.addWidget("combo","Constant","",(e=>{this.onRename()}),{values:()=>i.graph._nodes.filter((e=>"easy setNode"==e.type)).map((e=>e.widgets[0].value)).sort()}),this.addOutput("*","*"),this.onConnectionsChange=function(e,t,i,s,a){this.validateLinks(),2!=e||i?(this.onRename(),setTimeout((e=>{this.title="⬅️"+this.widgets[0].value}),1)):(this.outputs[t].type="*",this.outputs[t].name="*",this.title="Get")},this.setName=function(e){i.widgets[0].value=e,i.onRename(),i.serialize()},this.onRename=function(e=0){const t=this.findSetter(i.graph);if(t){const i=t.inputs[0].type,s=t.inputs[0].name;this.setType(i,s),this.outputs[e].type=i,this.outputs[e].name=s,this.title="⬅️"+t.widgets[0].value}else this.setType("*","*"),this.outputs[e].type="*",this.outputs[e].name="*"},this.clone=function(){const t=e.prototype.clone.apply(this);return t.size=t.computeSize(),t},this.validateLinks=function(){"*"!=this.outputs[0].type&&this.outputs[0].links&&this.outputs[0].links.forEach((e=>{const t=i.graph.links[e];t&&t.type!=this.outputs[0].type&&"*"!=t.type&&i.graph.removeLink(e)}))},this.setType=function(e,t){this.outputs[0].name=t,this.outputs[0].type=e,this.validateLinks()},this.findSetter=function(e){const t=this.widgets[0].value;return e._nodes.find((e=>"easy setNode"==e.type&&e.widgets[0].value===t&&""!=t))},this.isVirtualNode=!0}getInputLink(e){const t=this.findSetter(this.graph);if(t){const i=t.inputs[e];return this.graph.links[i.link]}throw new Error("No setter found for "+this.widgets[0].value+"("+this.type+")")}onAdded(e){}}LiteGraph.registerNodeType("easy getNode",Object.assign(e,{title:"Get"})),e.category="EasyUse/Util"}}),he.addEventListener("easyuse-global-seed",(function(e){let t=app.graph._nodes_by_id;for(let i in t){let s=t[i];if("easy globalSeed"==s.type){if(s.widgets){const t=s.widgets.find((e=>"value"==e.name));s.widgets.find((e=>"last_seed"==e.name)).value=t.value,t.value=e.detail.value}}else if(s.widgets){const t=s.widgets.find((e=>"seed_num"==e.name||"seed"==e.name||"noise_seed"==e.name));t&&null!=e.detail.seed_map[s.id]&&(t.value=e.detail.seed_map[s.id])}}}));const Wi=he.queuePrompt;he.queuePrompt=async function(e,{output:t,workflow:i},s={}){i.seed_widgets={};for(let a in app.graph._nodes_by_id){let e=app.graph._nodes_by_id[a].widgets;if(e)for(let t in e)"seed_num"!=e[t].name&&"seed"!=e[t].name&&"noise_seed"!=e[t].name||"converted-widget"==e[t].type||(i.seed_widgets[a]=parseInt(t))}return await Wi.call(he,e,{output:t,workflow:i},s)};const Ui=["easy imageSave","easy fullkSampler","easy kSampler","easy kSamplerTiled","easy kSamplerInpainting","easy kSamplerDownscaleUnet","easy kSamplerSDTurbo","easy detailerFix"];pe.registerExtension({name:"Comfy.EasyUse.SaveImageExtraOutput",async beforeRegisterNodeDef(e,t,i){if(Ui.includes(t.name)){const t=e.prototype.onNodeCreated;e.prototype.onNodeCreated=function(){const e=t?t.apply(this,arguments):void 0,s=this.widgets.find((e=>"filename_prefix"===e.name||"save_prefix"===e.name));return s.serializeValue=()=>ve(i,s.value),e}}else{const t=e.prototype.onNodeCreated;e.prototype.onNodeCreated=function(){const e=t?t.apply(this,arguments):void 0;return this.properties&&"Node name for S&R"in this.properties||this.addProperty("Node name for S&R",this.constructor.type,"string"),e}}}});const Fi=["easy wildcards","easy positive","easy negative","easy stylesSelector","easy promptConcat","easy promptReplace"],Xi=["easy preSampling","easy preSamplingAdvanced","easy preSamplingNoiseIn","easy preSamplingCustom","easy preSamplingDynamicCFG","easy preSamplingSdTurbo","easy preSamplingLayerDiffusion"],Zi=["easy kSampler","easy kSamplerTiled","easy kSamplerInpainting","easy kSamplerDownscaleUnet","easy kSamplerSDTurbo"],Hi=["easy controlnetLoader","easy controlnetLoaderADV"],qi=["easy instantIDApply","easy instantIDApplyADV"],Yi=["easy ipadapterApply","easy ipadapterApplyADV","easy ipadapterApplyFaceIDKolors","easy ipadapterStyleComposition"],Ki=["easy pipeIn","easy pipeOut","easy pipeEdit","easy pipeEditPrompt"],Ji=["easy XYPlot","easy XYPlotAdvanced"],Bi=["easy setNode"],Qi=["RescaleCFG","LoraLoaderModelOnly","LoraLoader","FreeU","FreeU_v2",...Yi,...Bi],$i={"easy seed":{from:{INT:[...Xi,"easy fullkSampler"]}},"easy positive":{from:{STRING:[...Fi]}},"easy negative":{from:{STRING:[...Fi]}},"easy wildcards":{from:{STRING:["easy showAnything",...Fi]}},"easy stylesSelector":{from:{STRING:["easy showAnything",...Fi]}},"easy promptConcat":{from:{STRING:["easy showAnything",...Fi]}},"easy promptReplace":{from:{STRING:["easy showAnything",...Fi]}},"easy fullLoader":{from:{PIPE_LINE:[...Xi,"easy fullkSampler",...Ki,...Bi],MODEL:Qi},to:{STRING:[...Fi]}},"easy a1111Loader":{from:{PIPE_LINE:[...Xi,...Hi,...qi,...Ki,...Bi],MODEL:Qi},to:{STRING:[...Fi]}},"easy comfyLoader":{from:{PIPE_LINE:[...Xi,...Hi,...qi,...Ki,...Bi],MODEL:Qi},to:{STRING:[...Fi]}},"easy hunyuanDiTLoader":{from:{PIPE_LINE:[...Xi,...Hi,...qi,...Ki,...Bi],MODEL:Qi},to:{STRING:[...Fi]}},"easy kolorsLoader":{from:{PIPE_LINE:[...Xi,...Hi,...qi,...Ki,...Bi],MODEL:Qi},to:{STRING:[...Fi]}},"easy pixArtLoader":{from:{PIPE_LINE:[...Xi,...Hi,...qi,...Ki,...Bi],MODEL:Qi},to:{STRING:[...Fi]}},"easy fluxLoader":{from:{PIPE_LINE:[...Xi,...Hi,...qi,...Ki,...Bi],MODEL:Qi},to:{STRING:[...Fi]}},"easy svdLoader":{from:{PIPE_LINE:["easy preSampling","easy preSamplingAdvanced","easy preSamplingDynamicCFG",...Ki,...Bi],MODEL:Qi},to:{STRING:[...Fi]}},"easy zero123Loader":{from:{PIPE_LINE:["easy preSampling","easy preSamplingAdvanced","easy preSamplingDynamicCFG",...Ki,...Bi],MODEL:Qi},to:{STRING:[...Fi]}},"easy sv3dLoader":{from:{PIPE_LINE:["easy preSampling","easy preSamplingAdvanced","easy preSamplingDynamicCFG",...Ki,...Bi],MODEL:Qi},to:{STRING:[...Fi]}},"easy preSampling":{from:{PIPE_LINE:[...Zi,...Ki,...Hi,...Ji,...Bi]}},"easy preSamplingAdvanced":{from:{PIPE_LINE:[...Zi,...Ki,...Hi,...Ji,...Bi]}},"easy preSamplingDynamicCFG":{from:{PIPE_LINE:[...Zi,...Ki,...Hi,...Ji,...Bi]}},"easy preSamplingCustom":{from:{PIPE_LINE:[...Zi,...Ki,...Hi,...Ji,...Bi]}},"easy preSamplingLayerDiffusion":{from:{PIPE_LINE:["easy kSamplerLayerDiffusion",...Zi,...Ki,...Hi,...Ji,...Bi]}},"easy preSamplingNoiseIn":{from:{PIPE_LINE:[...Zi,...Ki,...Hi,...Ji,...Bi]}},"easy fullkSampler":{from:{PIPE_LINE:[...Ki.reverse(),"easy preDetailerFix","easy preMaskDetailerFix",...Xi,...Bi]}},"easy kSampler":{from:{PIPE_LINE:[...Ki.reverse(),"easy preDetailerFix","easy preMaskDetailerFix","easy hiresFix",...Xi,...Bi]}},"easy controlnetLoader":{from:{PIPE_LINE:[...Xi,...Hi,...qi,...Ki,...Bi]}},"easy controlnetLoaderADV":{from:{PIPE_LINE:[...Xi,...Hi,...qi,...Ki,...Bi]}},"easy instantIDApply":{from:{PIPE_LINE:[...Xi,...Hi,...qi,...Ki,...Bi],MODEL:Qi},to:{COMBO:["easy promptLine"]}},"easy instantIDApplyADV":{from:{PIPE_LINE:[...Xi,...Hi,...qi,...Ki,...Bi],MODEL:Qi},to:{COMBO:["easy promptLine"]}},"easy ipadapterApply":{to:{COMBO:["easy promptLine"]}},"easy ipadapterApplyADV":{to:{STRING:["easy sliderControl",...Fi],COMBO:["easy promptLine"]}},"easy ipadapterStyleComposition":{to:{COMBO:["easy promptLine"]}},"easy preDetailerFix":{from:{PIPE_LINE:["easy detailerFix",...Ki,...Bi]},to:{PIPE_LINE:["easy ultralyticsDetectorPipe","easy samLoaderPipe","easy kSampler","easy fullkSampler"]}},"easy preMaskDetailerFix":{from:{PIPE_LINE:["easy detailerFix",...Ki,...Bi]}},"easy samLoaderPipe":{from:{PIPE_LINE:["easy preDetailerFix",...Ki,...Bi]}},"easy ultralyticsDetectorPipe":{from:{PIPE_LINE:["easy preDetailerFix",...Ki,...Bi]}},"easy cascadeLoader":{from:{PIPE_LINE:["easy fullCascadeKSampler","easy preSamplingCascade",...Hi,...Ki,...Bi],MODEL:Qi.filter((e=>!Yi.includes(e)))}},"easy fullCascadeKSampler":{from:{PIPE_LINE:["easy preSampling","easy preSamplingAdvanced",...Ki,...Bi]}},"easy preSamplingCascade":{from:{PIPE_LINE:["easy cascadeKSampler",...Ki,...Bi]}},"easy cascadeKSampler":{from:{PIPE_LINE:["easy preSampling","easy preSamplingAdvanced",...Ki,...Bi]}},"easy pipeEdit":{from:{PIPE_LINE:[...Xi,...Hi,...qi,...Bi]},to:{PIPE_LINE:[...Xi,...Hi,...qi,...Ki,...Bi]}},"easy pipeEditPrompt":{from:{PIPE_LINE:[...Xi,...Hi,...qi,...Bi]},to:{PIPE_LINE:[...Xi,...Hi,...qi,...Ki,...Bi]}}};class es extends Error{constructor(e="Attempted to access LGraph reference that was null or undefined.",t){super(e,{cause:t}),this.name="NullGraphError"}}pe.registerExtension({name:"Comfy.EasyUse.Suggestions",async setup(e){const t=LGraphCanvas.prototype.createDefaultNodeForSlot;LGraphCanvas.prototype.createDefaultNodeForSlot=function(e){var i;const s=Object.assign({nodeFrom:null,slotFrom:null,nodeTo:null,slotTo:null,position:[],nodeType:null,posAdd:[0,0],posSizeFix:[0,0]},e||{}),a=this,n=s.nodeFrom&&null!==s.slotFrom,o=!n&&s.nodeTo&&null!==s.slotTo,l=n?s.nodeFrom:s.nodeTo;if(!l||!Object.keys($i).includes(l.type))return t.call(this,e);if(!n&&!o)return!1;if(!s.nodeType)return!1;const r=n?s.nodeFrom:s.nodeTo;if(!r)throw new TypeError("nodeX was null when creating default node for slot.");const d=r.type;let u=n?s.slotFrom:s.slotTo,A=!1;switch(typeof u){case"string":A=n?r.findOutputSlot(u,!1):r.findInputSlot(u,!1),u=n?r.outputs[u]:r.inputs[u];break;case"object":if(null===u)return!1;A=n?r.findOutputSlot(u.name):r.findInputSlot(u.name);break;case"number":A=u,u=n?r.outputs[u]:r.inputs[u];break;default:return!1}var c=u.type==LiteGraph.EVENT?"_event_":u.type,p=n?LiteGraph.slot_types_default_out:LiteGraph.slot_types_default_in;if(null==p?void 0:p[c]){let e=!1;const t=n?"from":"to";if($i[d]&&$i[d][t]&&(null==(i=$i[d][t][c])?void 0:i.length)>0){for(var h in $i[d][t][c])if(s.nodeType==$i[d][t][c][h]||"AUTO"==s.nodeType){e=$i[d][t][c][h];break}}else if("object"==typeof p[c]||"array"==typeof p[c]){for(var h in p[c])if(s.nodeType==p[c][h]||"AUTO"==s.nodeType){e=p[c][h];break}}else s.nodeType!=p[c]&&"AUTO"!=s.nodeType||(e=p[c]);if(e){var m=!1;"object"==typeof e&&e.node&&(m=e,e=e.node);var f=LiteGraph.createNode(e);if(f){if(m){if(m.properties)for(var g in m.properties)f.addProperty(g,m.properties[g]);if(m.inputs)for(var g in f.inputs=[],m.inputs)f.addOutput(m.inputs[g][0],m.inputs[g][1]);if(m.outputs)for(var g in f.outputs=[],m.outputs)f.addOutput(m.outputs[g][0],m.outputs[g][1]);m.title&&(f.title=m.title),m.json&&f.configure(m.json)}a.graph.add(f),f.pos=[s.position[0]+s.posAdd[0]+(s.posSizeFix[0]?s.posSizeFix[0]*f.size[0]:0),s.position[1]+s.posAdd[1]+(s.posSizeFix[1]?s.posSizeFix[1]*f.size[1]:0)];const e={node:f,opts:s};if(!this.canvas.dispatchEvent(new CustomEvent("connect-new-default-node",{detail:e,cancelable:!0})))return!0;if(n){if(!s.nodeFrom)throw new TypeError("createDefaultNodeForSlot - nodeFrom was null");s.nodeFrom.connectByType(A,f,c)}else{if(!s.nodeTo)throw new TypeError("createDefaultNodeForSlot - nodeTo was null");s.nodeTo.connectByTypeOutput(A,f,c)}return!0}}}return!1};let i=LGraphCanvas.prototype.showConnectionMenu;LGraphCanvas.prototype.showConnectionMenu=function(e){var t;const s=Object.assign({nodeFrom:null,slotFrom:null,nodeTo:null,slotTo:null,e:void 0,allow_searchbox:this.allow_searchbox,showSearchBox:this.showSearchBox},e||{}),a=this,{graph:n}=this,{afterRerouteId:o}=s,l=s.nodeFrom&&s.slotFrom,r=!l&&s.nodeTo&&s.slotTo,d=l?s.nodeFrom:s.nodeTo;if(!d||!Object.keys($i).includes(d.type))return i.call(this,e);if(!l&&!r)return!1;const u=l?s.nodeFrom:s.nodeTo;if(!u)throw new TypeError("nodeX was null when creating default node for slot.");let A=l?s.slotFrom:s.slotTo,c=!1;switch(typeof A){case"string":c=l?u.findOutputSlot(A,!1):u.findInputSlot(A,!1),A=l?u.outputs[A]:u.inputs[A];break;case"object":if(null===A)return;c=l?u.findOutputSlot(A.name):u.findInputSlot(A.name);break;case"number":c=A,A=l?u.outputs[A]:u.inputs[A];break;default:return!1}const p=["Add Node","Add Reroute",null];s.allow_searchbox&&p.push("Search",null);var h=A.type==LiteGraph.EVENT?"_event_":A.type,m=l?LiteGraph.slot_types_default_out:LiteGraph.slot_types_default_in,f=u.type;if(m&&m[h]){const e=l?"from":"to";if($i[f]&&$i[f][e]&&(null==(t=$i[f][e][h])?void 0:t.length)>0)for(var g in $i[f][e][h])p.push($i[f][e][h][g]);else if("object"==typeof m[h]||"array"==typeof m[h])for(var g in m[h])p.push(m[h][g]);else p.push(m[h])}var v=new LiteGraph.ContextMenu(p,{event:s.e,extra:A,title:(A&&""!=A.name?A.name+(h?" | ":""):"")+(A&&h?h:""),callback:function(e,t,i){var r,d;switch(e){case"Add Node":LGraphCanvas.onMenuAdd(null,null,i,v,(function(e){var t,i;e&&(l?null==(t=s.nodeFrom)||t.connectByType(c,e,h,{afterRerouteId:o}):null==(i=s.nodeTo)||i.connectByTypeOutput(c,e,h,{afterRerouteId:o}))}));break;case"Add Reroute":const u=l?s.nodeFrom:s.nodeTo,p=t.extra;if(!n)throw new es;if(!u)throw new TypeError("Cannot add reroute: node was null");if(!p)throw new TypeError("Cannot add reroute: slot was null");if(!s.e)throw new TypeError("Cannot add reroute: CanvasPointerEvent was null");if(!u.connectFloatingReroute([s.e.canvasX,s.e.canvasY],p,o))throw new Error("Failed to create reroute");a.dirty_canvas=!0,a.dirty_bgcanvas=!0;break;case"Search":l?s.showSearchBox(i,{node_from:s.nodeFrom,slot_from:A,type_filter_in:h}):s.showSearchBox(i,{node_to:s.nodeTo,slot_from:A,type_filter_out:h});break;default:const m={position:[(null==(r=s.e)?void 0:r.canvasX)??0,(null==(d=s.e)?void 0:d.canvasY)??0],nodeType:e,afterRerouteId:o};a.createDefaultNodeForSlot(Object.assign(s,m))}}});return v}}}),pe.registerExtension({name:"Comfy.EasyUse.TimeTaken",setup(){let e=new Map,t=0;he.addEventListener("execution_start",(e=>{graph&&graph._nodes.forEach((e=>{e.executionDuration&&delete e.executionDuration}))})),he.addEventListener("executing",(i=>{if(!we("EasyUse.Nodes.Runtime",null))return;const s=(null==i?void 0:i.node)||(null==i?void 0:i.detail)||null,a=e.get(t);if(e.delete(t),t&&a){const e=Date.now()-a,i=_t(t);i&&(i.executionDuration||(i.executionDuration=0),i.executionDuration=i.executionDuration+e/1e3)}t=s,e.set(s,Date.now())}))},beforeRegisterNodeDef(e,t){const i=e.prototype.onDrawForeground;e.prototype.onDrawForeground=function(...e){const[t]=e;return function(e,t){if(!t)return;t=parseFloat(t).toFixed(3)+Le("s"),e.save(),e.fillStyle=LiteGraph.NODE_DEFAULT_BGCOLOR,function(e,t,i,s,a,n){e.beginPath(),e.moveTo(t+n,i),e.lineTo(t+s-n,i),e.arcTo(t+s,i,t+s,i+n,n),e.lineTo(t+s,i+a-n),e.arcTo(t+s,i+a,t+s-n,i+a,n),e.lineTo(t+n,i+a),e.arcTo(t,i+a,t,i+a-n,n),e.lineTo(t,i+n),e.arcTo(t,i,t+n,i,n),e.closePath()}(e,0,-LiteGraph.NODE_TITLE_HEIGHT-20,e.measureText(t).width+10,LiteGraph.NODE_TITLE_HEIGHT-10,4),e.fill(),function(e,t,i,s,a="#000",n=12,o="Inter"){e.font=`${n}px ${o}`,e.fillStyle=a,e.fillText(t,i,s)}(e,t,8,-LiteGraph.NODE_TITLE_HEIGHT-6,LiteGraph.NODE_TITLE_COLOR),e.restore()}(t,this.executionDuration),null==i?void 0:i.apply(this,e)}}});let ts=null;pe.registerExtension({name:"Comfy.EasyUse.HotKeys",setup(){if(void 0!==x){x("up,down,left,right",(function(e,t){var i,s,a,n,o,l,r,d,u,A,c,p,h,m,f;e.preventDefault();if(!we("EasyUse.Hotkeys.JumpNearestNodes",null))return;const g=St();if(0===g.length)return;const v=g[0];switch(t.key){case"up":case"left":let e=null;if(Ct(v)){const e=null==(i=v.widgets_values)?void 0:i[0],t=null==(s=v.graph)?void 0:s._nodes,a=null==t?void 0:t.find((t=>{var i;if(It(t)){if((null==(i=t.widgets_values)?void 0:i[0])===e)return t}return null}));a&&Lt(a)}else if((null==(a=v.inputs)?void 0:a.length)>0){for(let t=0;t{var i;if(Ct(t)){if((null==(i=t.widgets_values)?void 0:i[0])===e)return t}return null}));i&&Lt(i)}else if((null==(A=v.outputs)?void 0:A.length)>0){for(let e=0;e0&&v.outputs[e].links[0]){t=v.outputs[e].links[0];break}if(t){const e=null==(p=v.graph)?void 0:p.links;if(e[t]){const i=null==(h=e[t])?void 0:h.target_id,s=null==(f=null==(m=v.graph)?void 0:m._nodes_by_id)?void 0:f[i];s&&Lt(s)}}}}})),x("shift+up,shift+down,shift+left,shift+right,shift+alt+⌘+left,shift+alt+⌘+right,shift+alt+ctrl+left,shift+alt+ctrl+right",(function(e,t){e.preventDefault();if(!we("EasyUse.Hotkeys.AlignSelectedNodes",null))return;const i=St();if(i.length<=1)return;const s=i;switch(t.key){case"shift+up":LGraphCanvas.alignNodes(s,"top",s[0]);break;case"shift+down":LGraphCanvas.alignNodes(s,"bottom",s[0]);break;case"shift+left":LGraphCanvas.alignNodes(s,"left",s[0]);break;case"shift+right":LGraphCanvas.alignNodes(s,"right",s[0]);break;case"shift+alt+ctrl+left":case"shift+alt+⌘+left":Wt(s,"horizontal");break;case"shift+alt+ctrl+right":case"shift+alt+⌘+right":Wt(s,"vertical")}ts||(ts=He()),ts&&ts.update()})),x("shift+⌘+left,shift+⌘+right,shift+ctrl+left,shift+ctrl+right",(function(e,t){e.preventDefault();if(!we("EasyUse.Hotkeys.NormalizeSelectedNodes",null))return;const i=St();if(i.length<=1)return;const s=i;switch(t.key){case"shift+ctrl+left":case"shift+⌘+left":jt(s,"width");break;case"shift+ctrl+right":case"shift+⌘+right":jt(s,"height")}ts||(ts=He()),ts&&ts.update()})),x("shift+g",(function(e,t){e.preventDefault();we("EasyUse.Hotkeys.AddGroup",null)&&(ss(),ts||(ts=He()),ts&&ts.update())})),x("shift+r",(function(e,t){e.preventDefault();we("EasyUse.Hotkeys.cleanVRAMused",null)&&fi()})),x("shift+m",(function(e,t){var i,s,a;if(!we("EasyUse.Hotkeys.toggleNodesMap",null))return;let n=(null==(i=pe.extensionManager)?void 0:i.sidebarTab)||pe.extensionManager,o=(null==(s=pe.extensionManager.sidebarTab)?void 0:s.activeSidebarTabId)||(null==(a=pe.extensionManager)?void 0:a.activeSidebarTab);n.activeSidebarTabId=o==Me?null:Me}));const e=[];Array.from(Array(10).keys()).forEach((t=>e.push(`alt+${t}`))),x(e.join(","),(async function(e,t){e.preventDefault();if(!we("EasyUse.Hotkeys.NodesTemplate",null))return;const i=t.key;let s=parseInt(i.split("+")[1]);const a=await he.getUserData("comfy.templates.json");let n=null;if(200==a.status)try{n=await a.json()}catch(l){Ze.error(Le("Get Node Templates File Failed"))}else localStorage["Comfy.NodeTemplates"]?n=JSON.parse(localStorage["Comfy.NodeTemplates"]):Ze.warn(Le("No Node Templates Found"));if(!n)return void Ze.warn(Le("No Node Templates Found"));s=0===s?9:s-1;const o=n[s];if(o)try{const e=(null==o?void 0:o.name)||"Group",t=(null==o?void 0:o.data)?JSON.parse(o.data):[];is((async()=>{await ye.registerFromWorkflow(t.groupNodes,{}),localStorage.litegrapheditor_clipboard=o.data,pe.canvas.pasteFromClipboard(),t.groupNodes||ss(e)}))}catch(l){Ze.error(l)}else Ze.warn(Le("Node template with {key} not set").replace("{key}",i))}));const t=async function(e){if(("b"===e.key||"m"==e.key)&&(e.metaKey||e.ctrlKey)){if(0===St().length)return;ts||(ts=He()),ts&&ts.update()}};window.addEventListener("keydown",t,!0)}}});const is=async e=>{const t=localStorage.litegrapheditor_clipboard;await e(),localStorage.litegrapheditor_clipboard=t},ss=e=>{const t=St();if(0===t.length)return;const i=t;let s=new LiteGraph.LGraphGroup;s.title=e||"Group",((e,t=[],i=20)=>{var s,a,n,o,l,r,d,u,A,c;for(var p of(a=n=o=l=-1,r=d=u=A=-1,[e._nodes,t]))for(var h in p)r=(c=p[h]).pos[0],d=c.pos[1],u=c.pos[0]+c.size[0],A=c.pos[1]+c.size[1],"Reroute"!=c.type&&(d-=LiteGraph.NODE_TITLE_HEIGHT),(null==(s=c.flags)?void 0:s.collapsed)&&(A=d+LiteGraph.NODE_TITLE_HEIGHT,(null==c?void 0:c._collapsed_width)&&(u=r+Math.round(c._collapsed_width))),(-1==a||ro)&&(o=u),(-1==l||A>l)&&(l=A);n-=Math.round(1.4*e.font_size),e.pos=[a-i,n-i],e.size=[o-a+2*i,l-n+2*i]})(s,i),pe.canvas.graph.add(s)},as="easy imageChooser",ns=e=>(null==e?void 0:e.comfyClass)===as;pe.registerExtension({name:"Comfy.EasyUse.imageChooser",setup(){const e=he.interrupt;he.interrupt=function(){var t;(null==(t=pe.graph)?void 0:t._nodes_by_id)&&(()=>{var e;Object.values(null==(e=pe.graph)?void 0:e._nodes_by_id).forEach((e=>{ns(e)&&e.cancelSelection("interrupt")}))})(),e.apply(this,arguments)},he.addEventListener("easyuse-image-choose",(e=>{var t;const i=e.detail,s=pe.graph._nodes_by_id[i.id];if(!s||!ns(s))return;s.setExecutingState(!1),s.selected_images.clear(),s.anti_selected.clear(),s.isWaitingSelection=["Always Pause","Keep Last Selection"].includes(s.currentMode),s.isCanceling=!1,s.overIndex=null;const a=(null==(t=i.urls)?void 0:t.map(((e,t)=>({index:t,filename:e.filename,subfolder:e.subfolder,type:e.type}))))||[];s.imageData=a,s.imgs=[],a.forEach((e=>{const t=new Image;t.onload=()=>{pe.graph.setDirtyCanvas(!0)},t.src=`/view?filename=${encodeURIComponent(e.filename)}${(e=>`&type=${e.type}&subfolder=${e.subfolder}&rand=${e.random}`)(e)}`,s.imgs.push(t)})),s.update(),"Always Pause"===s.currentMode&&s.setExecutingState(!0)})),he.addEventListener("easyuse-image-keep-selection",(e=>{const t=e.detail,i=pe.graph._nodes_by_id[t.id];i&&ns(i)&&(i.isWaitingSelection=!1,i.isCancelling=!1,t.selected&&Array.isArray(t.selected)&&(i.selected_images.clear(),t.selected.forEach((e=>{i.selected_images.add(e)}))),i.update())}))},beforeRegisterNodeDef(e,t){if(t.name==as){e.prototype.confirmSelection=function(){he.fetchApi("/easyuse/image_chooser_message",{method:"POST",body:JSON.stringify({node_id:this.id.toString(),action:"select",selected:Array.from(this.selected_images)})}).catch((e=>{})).finally((e=>{this.isWaitingSelection=!1,this.update(),this.setExecutingState(!1)}))},e.prototype.cancelSelection=function(e){he.fetchApi("/easyuse/image_chooser_message",{method:"POST",body:JSON.stringify({node_id:this.id.toString(),action:"cancel",selected:[]})}).catch((e=>{})).finally((e=>{this.isCanceling=!1,this.isWaitingSelection=!1,this.update(),this.setExecutingState(!1)}))},e.prototype.updateWidgets=function(){var e;if(!this.confirm_button_widget||!this.cancel_button_widget)return;const t=this.selected_images.size,i=(null==(e=this.imgs)?void 0:e.length)||0;if(this.isCanceling)this.confirm_button_widget.name=Le("Canceling"),this.cancel_button_widget.name="",this.confirm_button_widget.disabled=!0,this.cancel_button_widget.disabled=!0;else if(this.isWaitingSelection)t>0?(this.confirm_button_widget.name=t>1?`${Le("Progress selected")} (${t}/${i})`:`${Le("Progress selected image")}`,this.confirm_button_widget.disabled=!1):(this.confirm_button_widget.name=Le("Please select images to continue"),this.confirm_button_widget.disabled=!0),this.cancel_button_widget.name=Le("Cancel current run"),this.cancel_button_widget.disabled=!1;else{const e={"Always Pause":Le("Waiting for selection..."),"Keep Last Selection":Le("Using last selection")};this.confirm_button_widget.name=(t>0&&"Always Pause"==this.currentMode?Le("Please run first"):null==e?void 0:e[this.currentMode])||Le("Unknown Mode"),this.cancel_button_widget.name="",this.confirm_button_widget.disabled=!0,this.cancel_button_widget.disabled=!0}this.setDirtyCanvas(!0,!0)},e.prototype.serialize=function(){const e=LiteGraph.LGraphNode.prototype.serialize.call(this);return e.isWaitingSelection=this.isWaitingSelection,e.currentMode=this.currentMode,this.imageData&&this.imageData.length>0&&(e.imageData=this.imageData),this.selected_images&&this.selected_images.size>0&&(e.selected_images=Array.from(this.selected_images)),e.isExecuting=this.isExecuting||!1,e},e.prototype.configure=function(e){LiteGraph.LGraphNode.prototype.configure.call(this,e),this.isWaitingSelection=e.isWaitingSelection||!1,this.currentMode=e.currentMode||"Always Pause",this.imgs=[],this.updateWidgets()},e.prototype.setExecutingState=function(e){this.isExecuting=e,pe.graph&&pe.graph.setDirtyCanvas(!0,!1)};const t=e.prototype.update;e.prototype.update=function(){null==t||t.call(this,arguments),this.updateWidgets()};const i=e.prototype.onNodeCreated;e.prototype.onNodeCreated=function(){null==i||i.call(this,arguments),this.selected_images=new Set,this.anti_selected=new Set,this.currentMode="Always Pause",this.isWaitingSelection=!1,this.isCanceling=!1,this.imageData=[],this.imgs,this.confirm_button_widget=this.addWidget("button","","",(()=>{this.confirmSelection()})),this.cancel_button_widget=this.addWidget("button","","",(()=>{this.cancelSelection()})),this.confirm_button_widget.serialize=!1,this.cancel_button_widget.serialize=!1,setTimeout((e=>{const t=vt(this,"mode");t.callback=e=>{requestAnimationFrame((t=>{this.currentMode=e,this.updateWidgets(),this.setDirtyCanvas(!0,!0)}))},this.currentMode=t.value||"Always Pause",this.updateWidgets()}),1),Object.defineProperty(this.confirm_button_widget,"clicked",{get:function(){return this._clicked},set:function(e){this._clicked=e&&""!=this.name}}),Object.defineProperty(this.cancel_button_widget,"clicked",{get:function(){return this._clicked},set:function(e){this._clicked=e&&""!=this.name}}),Object.defineProperty(this,"imageIndex",{get:function(){return null},set:function(e){this.overIndex=e}}),Object.defineProperty(this,"imagey",{get:function(){var e,t;return(null==(t=null==(e=this.widgets)?void 0:e[this.widgets.length-1])?void 0:t.last_y)+LiteGraph.NODE_WIDGET_HEIGHT},set:function(e){this.imagey=e}});const e=this.onMouseDown;this.onMouseDown=function(t,i,s){if(t.isPrimary){const e=os(this,i);e>=0&&this.toggleImageSelection(e)}return e&&e.apply(this,arguments)},this.update()},e.prototype.onDrawBackground,e.prototype.onDrawBackground=function(e){!function(e,t,i=0){var s,a;if(!e.imgs||!e.imgs.length)return;const n=pe.canvas,o=n.graph_mouse,l=15,r=e.size[0];let d=e.size[1]-i-l;d<200&&(d=200,requestAnimationFrame((t=>{e.size[1]=i+l+200})));if(null==e.imageIndex){let a,l,u,A;if(rs(e.imgs))({cellWidth:a,cellHeight:l,cols:A,shiftX:u}=ds(e.imgs,r,d));else{const t=e.imgs.reduce(((e,t)=>Math.max(e,t.naturalWidth,t.naturalHeight)),0),i=[];i.length=null==(s=e.imgs)?void 0:s.length,i[0]={naturalWidth:t,naturalHeight:t},({cellWidth:a,cellHeight:l,cols:A,shiftX:u}=ds(i,r,d))}let c=!1,p=e.imgs.length;e.imageRects=[];for(let s=0;s{ls(e,i,t)}));t.strokeStyle="#F88",null==(a=null==e?void 0:e.anti_selected)||a.forEach((i=>{ls(e,i,t)}))}(this,e,this.imagey||0)},e.prototype.toggleImageSelection=function(e){this.selected_images.has(e)?this.selected_images.delete(e):this.selected_images.add(e),this.update()}}}});const os=(e,t)=>{var i,s;if((null==(i=e.imgs)?void 0:i.length)>1)for(var a=0;a0&&i0&&se.imagey)return 0;return-1};function ls(e,t,i){var s;if(e.imageRects)s=e.imageRects[t];else{const t=e.imagey;s=[1,t+1,e.size[0]-2,e.size[1]-t-2]}i.strokeRect(s[0]+1,s[1]+1,s[2]-2,s[3]-2)}const rs=e=>{if(!e.length||1===e.length)return!0;const t=e[0].naturalWidth/e[0].naturalHeight;for(let i=1;is&&(s=y,l=g,r=v,d=c,u=e,A=c*((p-g)/2))}return{cellWidth:l,cellHeight:r,cols:d,rows:u,shiftX:A}}Number.prototype.div=function(e){return function(e,t){let i,s,a=0,n=0,o="string"==typeof e?e:e.toString(),l="string"==typeof t?t:t.toString();try{a=o.toString().split(".")[1].length}catch(r){}try{n=l.toString().split(".")[1].length}catch(r){}return i=Number(o.toString().replace(".","")),s=Number(l.toString().replace(".","")),i/s*Math.pow(10,n-a)}(this,e)};let us=[],As=0;const cs={sd3:6.5,"sd3-turbo":4};class ps extends fe{constructor(){super(),this.lists=[],this.dialog_div=null,this.user_div=null}addItem(e,t){return me("div.easyuse-account-dialog-item",[me("input",{type:"text",placeholder:"Enter name",oninput:e=>{const t=Array.prototype.indexOf.call(this.dialog_div.querySelectorAll(".easyuse-account-dialog-item"),e.target.parentNode);us[t].name=e.target.value},value:us[e].name}),me("input.key",{type:"text",oninput:e=>{const t=Array.prototype.indexOf.call(this.dialog_div.querySelectorAll(".easyuse-account-dialog-item"),e.target.parentNode);us[t].key=e.target.value},placeholder:"Enter APIKEY",value:us[e].key}),me("button.choose",{textContent:Le("Choose"),onclick:async e=>{var i,s,a;const n=Array.prototype.indexOf.call(this.dialog_div.querySelectorAll(".easyuse-account-dialog-item"),e.target.parentNode);let o=us[n].name,l=us[n].key;if(!o)return void Ze.error(Le("Please enter the account name"));if(!l)return void Ze.error(Le("Please enter the APIKEY"));let r=!0;for(let t=0;t{(new ps).show(t)}},[me("div.user",[me("div.avatar",n?[me("img",{src:n})]:"😀"),me("div.info",[me("h5.name",o),me("h6.remark","Credits: "+l)])]),me("div.edit",{textContent:Le("Edit")})])),Ze.success(Le("Save Succeed"))}else Ze.success(Le("Save Succeed"));this.close()}else Ze.error(Le("Save Failed"))}}),me("button.delete",{textContent:Le("Delete"),onclick:e=>{const t=Array.prototype.indexOf.call(this.dialog_div.querySelectorAll(".easyuse-account-dialog-item"),e.target.parentNode);us.length<=1?Ze.error(Le("At least one account is required")):(us.splice(t,1),this.dialog_div.removeChild(e.target.parentNode))}})])}show(e){us.forEach(((t,i)=>{this.lists.push(this.addItem(i,e))})),this.dialog_div=me("div.easyuse-account-dialog",this.lists),super.show(me("div.easyuse-account-dialog-main",[me("div",[me("a",{href:"https://platform.stability.ai/account/keys",target:"_blank",textContent:Le("Getting Your APIKEY")})]),this.dialog_div]))}createButtons(){const e=super.createButtons();return e.unshift(me("button",{type:"button",textContent:Le("Save Account Info"),onclick:e=>{let t=!0;for(let i=0;i{200==e.status?Ze.success(Le("Save Succeed")):Ze.error(Le("Save Failed"))}))}else Ze.error(Le("APIKEY is not Empty"))}})),e.unshift(me("button",{type:"button",textContent:Le("Add Account"),onclick:e=>{const t="Account "+us.length.toString();us.push({name:t,key:""});const i=this.addItem(us.length-1);this.lists.push(i),this.dialog_div.appendChild(i)}})),e}}pe.registerExtension({name:"Comfy.EasyUse.API.SD3",async beforeRegisterNodeDef(e,t,i){if("easy stableDiffusion3API"==t.name){const t=e.prototype.onNodeCreated;e.prototype.onNodeCreated=async function(){var e,i,s;t&&(null==t||t.apply(this,arguments));const a=this.widgets.find((e=>["seed_num","seed"].includes(e.name))),n=this.widgets.find((e=>["control_before_generate","control_after_generate"].includes(e.name)));let o=this.widgets.find((e=>"model"==e.name));o.callback=e=>{l.value="-"+cs[e]};const l=this.addWidget("text","cost_credit","0",(e=>{}),{serialize:!1});l.disabled=!0,n&&setTimeout((e=>{"control before generate"==n.name&&0===a.value&&(a.value=Math.floor(4294967294*Math.random())),l.value="-"+cs[o.value]}),100);let r=me("div.easyuse-account-user",[Le("Loading UserInfo...")]);this.addDOMWidget("account","btn",me("div.easyuse-account",r)),he.addEventListener("stable-diffusion-api-generate-succeed",(async({detail:e})=>{var t;let i=r.querySelectorAll(".remark");if(i&&i[0]){const t=(null==e?void 0:e.model)?cs[e.model]:0;if(t){let e=function(e,t){let i,s,a,n,o,l;o="string"==typeof e?e:e.toString(),l="string"==typeof t?t:t.toString();try{i=o.split(".")[1].length}catch(r){i=0}try{s=l.split(".")[1].length}catch(r){s=0}return a=Math.pow(10,Math.max(i,s)),n=i>=s?i:s,((e*a-t*a)/a).toFixed(n)}(parseFloat(i[0].innerText.replace(/Credits: /g,"")),t);e>0&&(i[0].innerText="Credits: "+e.toString())}}await We(1e4);const s=await he.fetchApi("/easyuse/stability/balance");if(200==s.status){const e=await s.json();if(null==e?void 0:e.balance){const s=(null==(t=e.balance)?void 0:t.credits)||0;i&&i[0]&&(i[0].innerText="Credits: "+s)}}}));const d=await he.fetchApi("/easyuse/stability/api_keys");if(200==d.status){let t=await d.json();if(us=t.keys,As=t.current,us.length>0&&void 0!==As){const t=us[As].key,a=us[As].name;if(t){const t=await he.fetchApi("/easyuse/stability/user_info");if(200==t.status){const a=await t.json();if((null==a?void 0:a.account)&&(null==a?void 0:a.balance)){const t=(null==(e=a.account)?void 0:e.profile_picture)||null,n=(null==(i=a.account)?void 0:i.email)||null,o=(null==(s=a.balance)?void 0:s.credits)||0;r.replaceChildren(me("div.easyuse-account-user-info",{onclick:e=>{(new ps).show(r)}},[me("div.user",[me("div.avatar",t?[me("img",{src:t})]:"😀"),me("div.info",[me("h5.name",n),me("h6.remark","Credits: "+o)])]),me("div.edit",{textContent:Le("Edit")})]))}}}else r.replaceChildren(me("div.easyuse-account-user-info",{onclick:e=>{(new ps).show(r)}},[me("div.user",[me("div.avatar","😀"),me("div.info",[me("h5.name",a),me("h6.remark",Le("Click to set the APIKEY first"))])]),me("div.edit",{textContent:Le("Edit")})]))}}}}}});let hs=null;function ms(){hs&&(hs.removeEventListeners(),hs.dropdown.remove(),hs=null)}function fs(e,t,i,s=!1){ms(),new gs(e,t,i,s)}class gs{constructor(e,t,i,s=!1){this.dropdown=document.createElement("ul"),this.dropdown.setAttribute("role","listbox"),this.dropdown.classList.add("easy-dropdown"),this.selectedIndex=-1,this.inputEl=e,this.suggestions=t,this.onSelect=i,this.isDict=s,this.focusedDropdown=this.dropdown,this.buildDropdown(),this.onKeyDownBound=this.onKeyDown.bind(this),this.onWheelBound=this.onWheel.bind(this),this.onClickBound=this.onClick.bind(this),this.addEventListeners()}buildDropdown(){this.isDict?this.buildNestedDropdown(this.suggestions,this.dropdown):this.suggestions.forEach(((e,t)=>{this.addListItem(e,t,this.dropdown)}));const e=this.inputEl.getBoundingClientRect();this.dropdown.style.top=e.top+e.height-10+"px",this.dropdown.style.left=e.left+"px",document.body.appendChild(this.dropdown),hs=this}buildNestedDropdown(e,t){let i=0;Object.keys(e).forEach((s=>{const a=e[s];if("object"==typeof a&&null!==a){const e=document.createElement("ul");e.setAttribute("role","listbox"),e.classList.add("easy-nested-dropdown");const n=document.createElement("li");n.classList.add("folder"),n.textContent=s,n.appendChild(e),n.addEventListener("mouseover",this.onMouseOver.bind(this,i,t)),t.appendChild(n),this.buildNestedDropdown(a,e),i+=1}else{const e=document.createElement("li");e.classList.add("item"),e.setAttribute("role","option"),e.textContent=s,e.addEventListener("mouseover",this.onMouseOver.bind(this,i,t)),e.addEventListener("mousedown",this.onMouseDown.bind(this,s)),t.appendChild(e),i+=1}}))}addListItem(e,t,i){const s=document.createElement("li");s.setAttribute("role","option"),s.textContent=e,s.addEventListener("mouseover",this.onMouseOver.bind(this,t)),s.addEventListener("mousedown",this.onMouseDown.bind(this,e)),i.appendChild(s)}addEventListeners(){document.addEventListener("keydown",this.onKeyDownBound),this.dropdown.addEventListener("wheel",this.onWheelBound),document.addEventListener("click",this.onClickBound)}removeEventListeners(){document.removeEventListener("keydown",this.onKeyDownBound),this.dropdown.removeEventListener("wheel",this.onWheelBound),document.removeEventListener("click",this.onClickBound)}onMouseOver(e,t){t&&(this.focusedDropdown=t),this.selectedIndex=e,this.updateSelection()}onMouseOut(){this.selectedIndex=-1,this.updateSelection()}onMouseDown(e,t){t.preventDefault(),this.onSelect(e),this.dropdown.remove(),this.removeEventListeners()}onKeyDown(e){const t=Array.from(this.focusedDropdown.children),i=t[this.selectedIndex];if(hs)if(38===e.keyCode)e.preventDefault(),this.selectedIndex=Math.max(0,this.selectedIndex-1),this.updateSelection();else if(40===e.keyCode)e.preventDefault(),this.selectedIndex=Math.min(t.length-1,this.selectedIndex+1),this.updateSelection();else if(39===e.keyCode){if(e.preventDefault(),i&&i.classList.contains("folder")){const e=i.querySelector(".easy-nested-dropdown");e&&(this.focusedDropdown=e,this.selectedIndex=0,this.updateSelection())}}else if(37===e.keyCode&&this.focusedDropdown!==this.dropdown){const e=this.focusedDropdown.closest(".easy-dropdown, .easy-nested-dropdown").parentNode.closest(".easy-dropdown, .easy-nested-dropdown");e&&(this.focusedDropdown=e,this.selectedIndex=Array.from(e.children).indexOf(this.focusedDropdown.parentNode),this.updateSelection())}else if((13===e.keyCode||9===e.keyCode)&&this.selectedIndex>=0){e.preventDefault(),i.classList.contains("item")&&(this.onSelect(t[this.selectedIndex].textContent),this.dropdown.remove(),this.removeEventListeners());const s=i.querySelector(".easy-nested-dropdown");s&&(this.focusedDropdown=s,this.selectedIndex=0,this.updateSelection())}else 27===e.keyCode&&(this.dropdown.remove(),this.removeEventListeners())}onWheel(e){const t=parseInt(this.dropdown.style.top);localStorage.getItem("Comfy.Settings.Comfy.InvertMenuScrolling")?this.dropdown.style.top=t+(e.deltaY<0?10:-10)+"px":this.dropdown.style.top=t+(e.deltaY<0?-10:10)+"px"}onClick(e){this.dropdown.contains(e.target)||e.target===this.inputEl||(this.dropdown.remove(),this.removeEventListeners())}updateSelection(){Array.from(this.focusedDropdown.children).forEach(((e,t)=>{t===this.selectedIndex?e.classList.add("selected"):e.classList.remove("selected")}))}}function vs(e){const t=e.min||0,i=e.max||0,s=e.step||1;if(0===s)return[];const a=[];let n=t;for(;n<=i;){if(Number.isInteger(s))a.push(Math.round(n)+"; ");else{let e=n.toFixed(3);-0==e&&(e="0.000"),/\.\d{3}$/.test(e)||(e+="0"),a.push(e+"; ")}n+=s}return i>=0&&t>=0?a:a.reverse()}let ys={},bs={};function ws(e,t){String(e.id);const i=t.name,s=t.value.replace(/^(loader|preSampling):\s/,"");bs[i]?bs[i]!=ys[s]&&(bs[i]=ys[s]):bs={...bs,[i]:ys[s]}}pe.registerExtension({name:"Comfy.EasyUse.XYPlot",async beforeRegisterNodeDef(e,t,i){if("easy XYPlot"===t.name){ys=t.input.hidden.plot_dict[0];for(const e in ys){const t=ys[e];if(Array.isArray(t)){let i=[];for(const e of t)i.push(e+"; ");ys[e]=i}else ys[e]="object"==typeof t?"seed"==e?t+"; ":vs(t):t+"; "}ys.None=[],ys["---------------------"]=[]}},nodeCreated(e){"easy XYPlot"===e.comfyClass&&(function(e){if(e.widgets)for(const t of e.widgets)if("x_axis"===t.name||"y_axis"===t.name){let i=t.value;Object.defineProperty(t,"value",{get:()=>i,set(s){s!==i&&(i=s,ws(e,t))}})}}(e),function(e){if(e.widgets){const t=e.widgets.filter((e=>"customtext"===e.type&&!1!==e.dynamicPrompts||e.dynamicPrompts));for(const e of t){let t=function(e,t,s,a){return e&&(t[s]=e),t.map((e=>i(e,a))).filter((e=>""!==e)).join("")},i=function(e,t){if(e=s(e),a(e,t))return e+"; ";let i=n(e,t);return 1===i.length||2===i.length?i[0]:a(o(e),t)?o(e)+"; ":""},s=function(e){return e.replace(/(\n|;| )/g,"")},a=function(e,t){return t.includes(e+"; ")},n=function(e,t){return t.filter((t=>t.toLowerCase().includes(e.toLowerCase())))},o=function(e){return Number(e)?Number(e).toFixed(3):["0","0.","0.0","0.00","00"].includes(e)?"0.000":e};const l=function(){const i=e.name[0]+"_axis";let s=(null==bs?void 0:bs[i])||[];if(0===s.length)return;const a=e.inputEl.value,n=e.inputEl.selectionStart;let o=a.split("; ");const l=a.substring(0,n).split("; ").length-1,r=o[l].replace(/\n/g,"").toLowerCase(),d=s.filter((e=>e.toLowerCase().includes(r))).map((e=>e.replace(/; /g,"")));if(d.length>0)fs(e.inputEl,d,(i=>{const a=t(i,o,l,s);e.inputEl.value=a}));else{ms();const i=t(null,o,l,s);e.inputEl.value=i}};e.inputEl.removeEventListener("input",l),e.inputEl.addEventListener("input",l),e.inputEl.removeEventListener("mouseup",l),e.inputEl.addEventListener("mouseup",l)}}}(e))}});const _s=S("domWidget",(()=>{const e=P(new Map);return{widgetStates:e,registerWidget:t=>{e.value.set(t.id,{widget:G(t),visible:!0,readonly:!1,zIndex:0,pos:[0,0],size:[0,0]})},unregisterWidget:t=>{e.value.delete(t)}}})),Ss=e=>"element"in e&&!!e.element,xs=e=>"component"in e&&!!e.component,Ls=class e{constructor(e){this.type=e.type,this.name=e.name,this.options=e.options,this.id="undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})),this.node=e.node,this.y=0}get value(){var e,t;return(null==(t=(e=this.options).getValue)?void 0:t.call(e))??""}set value(e){var t,i,s;null==(i=(t=this.options).setValue)||i.call(t,e),null==(s=this.callback)||s.call(this,this.value)}get margin(){return this.options.margin??e.DEFAULT_MARGIN}isVisible(){return!["hidden"].includes(this.type)&&this.node.isWidgetVisible(this)}draw(e,t,i,s,a,n){var o,l;if(this.options.hideOnZoom&&n&&this.isVisible()){const t=e.fillStyle;e.beginPath(),e.fillStyle=LiteGraph.WIDGET_BGCOLOR,e.rect(this.margin,s+this.margin,i-2*this.margin,(this.computedHeight??a)-2*this.margin),e.fill(),e.fillStyle=t}null==(l=(o=this.options).onDraw)||l.call(o,this)}onRemove(){_s().unregisterWidget(this.id)}};v(Ls,"DEFAULT_MARGIN",10);let ks=Ls;class Es extends ks{constructor(e){super({...e,type:"custom"}),this.component=e.component,this.inputSpec=e.inputSpec}computeLayoutSize(){var e,t,i,s;return{minHeight:(null==(t=(e=this.options).getMinHeight)?void 0:t.call(e))??45,maxHeight:(null==(s=(i=this.options).getMaxHeight)?void 0:s.call(i))??45,minWidth:120}}serializeValue(){return z(this.value)}}const Ns={class:"w-full flex justify-between items-center"},Cs={class:"flex justify-start items-center flex-1 gap-2"},Is={class:"flex justify-end items-center tool ml-2 position-relative"},Ts={__name:"promptAwait",props:{widget:{required:!0},widgetModifiers:{}},emits:["update:widget"],setup(e){const t=V(e,"widget"),i=P(!1),s=P(!1);let a=null;const n=()=>{if(s.value)return;const e=window.SpeechRecognition||window.webkitSpeechRecognition;e&&(s.value=!0,a||(a=new e,a.interimResults=!1),a.start(),a.addEventListener("result",(e=>{var i;const s=e.results[0][0].transcript;let a=null==(i=t.value)?void 0:i.node,n=vt(a,"prompt");n&&(n.value+=s)})),a.addEventListener("end",(()=>{s.value=!1,a=null})),a.addEventListener("error",(e=>{})))},o=()=>{s.value&&a&&a.stop()};j((e=>{he.addEventListener("easyuse_prompt_await",(e=>{var s,a,n,o,l,d;const u=e.detail.id,A=-1!==(null==(s=t.value)?void 0:s.node.id).toString().indexOf(":")?(null==(a=t.value)?void 0:a.node.id).toString().split(":")[0]:null==(n=t.value)?void 0:n.node.id;parseInt(u)===parseInt(A)&&(i.value=!0,r("last_seed",(null==(o=t.value.value)?void 0:o.seed)||0),(null==(l=t.value.value)?void 0:l.unlock)?r("seed",Math.floor(Math.random()*Ce)):r("seed",(null==(d=t.value.value)?void 0:d.last_seed)||0))}));const s=he.interrupt;he.interrupt=function(){!i.value&&pe.runningNodeId||(l(JSON.stringify({result:-1,prompt:"",select:"now"}),!0),i.value=!1),s.apply(this,arguments)}}));const l=(e,s)=>{var a,n,o,l,d,u,A,c,p;if(!i.value&&!s)return;const h=new FormData,m=null==(a=t.value)?void 0:a.node,f=-1!==(null==(n=t.value)?void 0:n.node.id).toString().indexOf(":")?(null==(o=t.value)?void 0:o.node.id).toString().split(":")[0]:null==(l=t.value)?void 0:l.node.id,g=(null==(d=vt(m,"prompt"))?void 0:d.value)||"";let v=null==(u=t.value.value)?void 0:u.select,y=(null==(A=t.value.value)?void 0:A.last_seed)||0,b=(null==(c=t.value.value)?void 0:c.seed)||0,w=(null==(p=t.value.value)?void 0:p.unlock)||!1;h.append("message",JSON.stringify({result:e,prompt:g,select:v,last_seed:y,seed:b,unlock:w})),h.append("id",f),i.value=!1,he.fetchApi("/easyuse/message_callback",{method:"POST",body:h}).then((e=>{r("select","now")}))},r=(e,i)=>{t.value.value||(t.value.value={}),t.value.value[e]=i};return(e,a)=>(W(),U("div",Ns,[F("div",Cs,[X(Z(L),{disabled:!Boolean(i.value),label:Z(Le)("Continue"),size:"small",style:{height:"20px","font-size":"12px","white-space":"nowrap",padding:"0 8px"},onClick:a[0]||(a[0]=e=>l(1))},null,8,["disabled","label"]),X(Z(L),{disabled:!Boolean(i.value),label:Z(Le)("Stop"),severity:"danger",size:"small",style:{height:"20px","font-size":"12px","white-space":"nowrap",padding:"0 8px"},onClick:a[1]||(a[1]=e=>l(-1))},null,8,["disabled","label"]),X(Z(k),{class:"easyuse-prompt-await-select",modelValue:t.value.value.select,"onUpdate:modelValue":a[2]||(a[2]=e=>t.value.value.select=e),options:[{name:Z(Le)("now"),value:"now"},{name:Z(Le)("prev"),value:"prev"}],optionLabel:"name",optionValue:"value",size:"small",style:{flex:"1",height:"24px","line-height":"10px","min-width":"70px","max-width":"100px"}},null,8,["modelValue","options"])]),F("div",Is,[H(X(Z(L),{style:{"--p-button-sm-font-size":"11px"},size:"small",icon:t.value.value.unlock?"pi pi-unlock":"pi pi-lock",severity:t.value.value.unlock?"contrast":"warn",variant:"text",onClick:a[3]||(a[3]=e=>t.value.value.unlock=!t.value.value.unlock),rounded:""},null,8,["icon","severity"]),[[Z(E),{value:t.value.value.unlock?"随机种子":"锁定种子值",class:"jm-tooltip"},"top"]]),s.value?H((W(),q(Z(L),{key:0,size:"small",icon:"pi pi-pause-circle",severity:"info",variant:"outlined",onClick:o,rounded:""},null,512)),[[Z(E),{value:Z(Le)("Stop Recording"),class:"jm-tooltip"},"top"]]):H((W(),q(Z(L),{key:1,size:"small",icon:"pi pi-microphone",severity:"contrast",variant:"text",onClick:n,rounded:""},null,512)),[[Z(E),{value:Z(Le)("Voice input"),class:"jm-tooltip"},"top"]])])]))}},Os={class:"easyuse-multiselect"},Ms={__name:"multiSelectWidget",props:Y(["widget"],{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){var t,i,s,a;const n=Object.keys(Te).reduce(((e,t)=>(Array.isArray(Te[t])?e[t]=Te[t].map(((e,t)=>({label:e,value:t}))):"object"==typeof Te[t]?e[t]=Object.entries(Te[t]).map((([e,t])=>({label:e,value:t}))):e[t]=[],e)),{}),o=V(e,"modelValue"),l=e.widget.inputSpec,r=(null==(t=l.multi_select)?void 0:t.max_selected_labels)??3,d=l.optionLabel??"label",u=l.optionValue??"value",A=(null==(i=l.multi_select)?void 0:i.placeholder)?Le(null==(s=l.multi_select)?void 0:s.placeholder):Le("select items"),c=(null==(a=l.multi_select)?void 0:a.chip)?"chip":"comma",p=P(l.options??[]),h=e=>{e&&n[e]?p.value=n[e].map(((e,t)=>({label:Le(e.label),value:e.value}))):p.value=[]};return j((t=>{if("easy humanSegmentation"==e.widget.node.type){const t=vt(e.widget.node,"method");h(t.value),t.callback=e=>{o.value=[],h(e)}}})),(e,t)=>(W(),U("div",Os,[X(Z(N),{modelValue:o.value,"onUpdate:modelValue":t[0]||(t[0]=e=>o.value=e),options:p.value,optionLabel:Z(d),optionValue:Z(u),appendTo:"self",filter:"",placeholder:Z(A),"max-selected-labels":Z(r),display:Z(c),class:"w-full easyuse-multiselect-container"},null,8,["modelValue","options","optionLabel","optionValue","placeholder","max-selected-labels","display"])]))}},Ds={class:"flex flex-col easyuse-multiangle-widget"},Rs={class:"easyuse-multiangle-tabs flex items-center gap-1 px-1 relative z-10 overflow-x-auto no-scrollbar w-full min-w-0"},Ps=["onClick"],Gs={class:"tab-number"},zs=["onClick"],Vs=["title"],js={class:"easyuse-multiangle-content flex flex-col gap-2"},Ws=["title"],Us={class:"settings-item flex items-center"},Fs={for:"add-angle-prompt",class:"whitespace-nowrap"},Xs={class:"settings-item flex items-center"},Zs={for:"hollow-mode",class:"whitespace-nowrap"},Hs=["title"],qs=["onDblclick"],Ys={key:0},Ks={key:0,style:{filter:"grayscale(10)"}},Js={key:0,class:"absolute inset-0 flex flex-col items-center justify-center",style:{"pointer-events":"none"}},Bs={key:1,class:"easyuse-cube-face-label"},Qs={class:"flex flex-col gap-2 px-2 w-full easyuse-mulitangle-slider"},$s={class:"flex flex-col gap-2 w-full"},ea={class:"flex justify-between items-center"},ta={class:"font-semibold opacity-80"},ia={class:"font-mono text-primary font-bold"},sa={class:"flex flex-col gap-2 w-full"},aa={class:"flex justify-between items-center"},na={class:"font-semibold opacity-80"},oa={class:"font-mono text-primary font-bold"},la={class:"flex flex-col gap-2 w-full"},ra={class:"flex justify-between items-center"},da={class:"font-semibold opacity-80"},ua={class:"font-mono text-primary font-bold"},Aa={__name:"multiAngleWidget",props:{modelValue:{required:!0},modelModifiers:{}},emits:Y(["update:value","change"],["update:modelValue"]),setup(e,{emit:t}){const i=t,s=V(e,"modelValue");Array.isArray(s.value)&&0!==s.value.length||(s.value=[{rotate:0,vertical:0,zoom:5,add_angle_prompt:!0}]);const a=P(0),n=s.value[a.value]||{rotate:0,vertical:0,zoom:5,add_angle_prompt:!1},o=P(n.rotate??0),l=P(n.vertical??0),r=P(n.zoom??5),d=P(n.add_angle_prompt??!1),u=P(we("EasyUse.MultiAngle.HollowMode")||!1),A=P(!1),c=()=>{A.value=!A.value},p=()=>{A.value&&(A.value=!1)};j((()=>{window.addEventListener("click",p)})),K((()=>{window.removeEventListener("click",p),L()})),J((()=>{var e;return null==(e=s.value)?void 0:e[a.value]}),(e=>{if(e){let t=we("EasyUse.MultiAngle.AddAnglePrompt")??!1;void 0!==e.rotate&&(o.value=e.rotate),void 0!==e.vertical&&(l.value=e.vertical),void 0!==e.zoom&&(r.value=e.zoom),null!=t&&(t.value=t)}}),{deep:!0}),J(u,(e=>{Se("EasyUse.MultiAngle.HollowMode",e)})),J(d,(e=>{Se("EasyUse.MultiAngle.AddAnglePrompt",e),s.value.forEach((t=>{t.add_angle_prompt=e})),i("update:value",JSON.parse(JSON.stringify(s.value))),i("change",JSON.parse(JSON.stringify(s.value)))}));const h=e=>{a.value=e;const t=s.value[e];t&&(o.value=t.rotate??0,l.value=t.vertical??0,r.value=t.zoom??5,d.value=t.add_angle_prompt??!0)},m=()=>{s.value[a.value];const e={rotate:o.value,vertical:l.value,zoom:r.value,add_angle_prompt:d.value};s.value.push(JSON.parse(JSON.stringify(e))),a.value=s.value.length-1,h(a.value)},f=(e=!1)=>{e&&(A.value=!1);const t={rotate:o.value,vertical:l.value,zoom:r.value,add_angle_prompt:d.value};Array.isArray(s.value)||(s.value=[]),s.value[a.value]=JSON.parse(JSON.stringify(t)),i("update:value",JSON.parse(JSON.stringify(s.value))),i("change",JSON.parse(JSON.stringify(s.value)))},g=()=>{o.value=0,l.value=0,r.value=5,f()},v=B((()=>[{name:"front",text:"",style:{transform:"translateZ(40px)"}},{name:"back",text:Le("B"),style:{transform:"rotateY(180deg) translateZ(40px)"}},{name:"up",text:Le("U"),style:{transform:"rotateX(90deg) translateZ(40px)"}},{name:"down",text:Le("D"),style:{transform:"rotateX(-90deg) translateZ(40px)"}},{name:"left",text:Le("L"),style:{transform:"rotateY(-90deg) translateZ(40px)"}},{name:"right",text:Le("R"),style:{transform:"rotateY(90deg) translateZ(40px)"}},{name:"center",style:{transform:"translateZ(0.1px)",border:"none",background:"transparent",backfaceVisibility:"hidden"}},{name:"center-back",style:{transform:"rotateY(180deg) translateZ(0.1px)",border:"none",backfaceVisibility:"hidden",background:"transparent"}}])),y=P(!1),b={x:0,y:0},w={rotate:0,vertical:0},_=e=>{const t=e.deltaY;let i=r.value-.05*t;i=Math.max(0,Math.min(10,i)),r.value=Math.round(10*i)/10,f()},S=e=>{y.value=!0,b.x=e.clientX??e.touches[0].clientX,b.y=e.clientY??e.touches[0].clientY,w.rotate=o.value,w.vertical=l.value,window.addEventListener("mousemove",x),window.addEventListener("mouseup",L),window.addEventListener("touchmove",x),window.addEventListener("touchend",L)},x=e=>{if(!y.value)return;const t=e.clientX??e.touches[0].clientX,i=e.clientY??e.touches[0].clientY,s=t-b.x,a=i-b.y;let n=w.rotate+.5*s,r=w.vertical+.5*a;n=(n%360+360)%360,r=Math.max(-30,Math.min(90,r)),o.value=Math.round(n),l.value=Math.round(r),f()},L=()=>{y.value=!1,window.removeEventListener("mousemove",x),window.removeEventListener("mouseup",L),window.removeEventListener("touchmove",x),window.removeEventListener("touchend",L)},k=B((()=>({transform:`scale(${1+.1*r.value}) rotateX(${-l.value}deg) rotateY(${-o.value}deg)`})));return(e,t)=>(W(),U("div",Ds,[F("div",Rs,[(W(!0),U(Q,null,$(s.value,((e,t)=>(W(),U("div",{key:t,class:ee(["tab-item whitespace-nowrap flex-shrink-0",{active:a.value===t}]),onClick:e=>h(t)},[F("span",Gs,se(t+1),1),s.value.length>1&&0!==t?(W(),U("i",{key:0,class:"pi pi-times tab-close",onClick:te((e=>(e=>{s.value.length<=1||(s.value.splice(e,1),a.value>=s.value.length&&(a.value=s.value.length-1),h(a.value))})(t)),["stop"])},null,8,zs)):ae("",!0)],10,Ps)))),128)),F("button",{class:"tab-add-btn flex-shrink-0",onClick:m,title:Z(Le)("Add New Tab")},t[9]||(t[9]=[F("i",{class:"pi pi-plus"},null,-1)]),8,Vs)]),F("div",js,[F("div",{class:ee(["easyuse-multiangle-cube w-full flex items-center justify-center bg-black overflow-hidden select-none",{"is-hollow":u.value}]),onMousedown:S,onTouchstart:S,onWheel:te(_,["prevent"])},[F("div",{class:"settings-icon",onMousedown:t[4]||(t[4]=te((()=>{}),["stop"])),onClick:te(c,["stop"]),title:Z(Le)("Settings")},[t[10]||(t[10]=F("i",{class:"pi pi-cog"},null,-1)),A.value?(W(),U("div",{key:0,class:"settings-dropdown",onClick:t[3]||(t[3]=te((()=>{}),["stop"]))},[F("div",Us,[H(F("input",{type:"checkbox","onUpdate:modelValue":t[0]||(t[0]=e=>d.value=e),onChange:t[1]||(t[1]=e=>f(!1)),id:"add-angle-prompt"},null,544),[[ie,d.value]]),F("label",Fs,se(Z(Le)("Angle Prompt")),1)]),F("div",Xs,[H(F("input",{type:"checkbox","onUpdate:modelValue":t[2]||(t[2]=e=>u.value=e),id:"hollow-mode"},null,512),[[ie,u.value]]),F("label",Zs,se(Z(Le)("Hollow")),1)])])):ae("",!0)],40,Ws),F("div",{class:"reset-icon",onMousedown:t[5]||(t[5]=te((()=>{}),["stop"])),onClick:te(g,["stop"]),title:Z(Le)("Reset")},t[11]||(t[11]=[F("i",{class:"pi pi-refresh"},null,-1)]),40,Hs),F("div",{class:"relative transition-transform duration-75 ease-out",style:ne([{"transform-style":"preserve-3d",width:"80px",height:"80px"},k.value])},[(W(!0),U(Q,null,$(v.value,(e=>(W(),U("div",{key:e.name,class:"absolute flex items-center justify-center font-bold text-xs easyuse-multiangle-cube-face",style:ne([{width:"80px",height:"80px","backface-visibility":"visible"},e.style]),onDblclick:te((t=>(e=>{switch(e){case"front":o.value=0;break;case"back":o.value=180;break;case"left":o.value=270;break;case"right":o.value=90;break;case"up":l.value=90;break;case"down":l.value=-30}f()})(e.name)),["stop"])},["center"===e.name?(W(),U(Q,{key:0},[u.value?(W(),U("div",Ys,t[12]||(t[12]=[F("div",{style:{"font-size":"20px","text-align":"center"}},"🤓",-1),F("div",{style:{"font-size":"12px","text-align":"center","margin-top":"-6px"}},"👕",-1),F("div",{style:{"font-size":"12px","text-align":"center","margin-top":"-6px"}},"👖",-1)]))):ae("",!0)],64)):"center-back"===e.name?(W(),U(Q,{key:1},[u.value?(W(),U("div",Ks,t[13]||(t[13]=[F("div",{style:{"font-size":"20px","text-align":"center"}},"🌕",-1),F("div",{style:{"font-size":"12px","text-align":"center","margin-top":"-6px"}},"👕",-1),F("div",{style:{"font-size":"12px","text-align":"center","margin-top":"-6px"}},"👖",-1)]))):ae("",!0)],64)):(W(),U(Q,{key:2},["front"!==e.name||u.value?ae("",!0):(W(),U("div",Js,t[14]||(t[14]=[F("div",{style:{"font-size":"20px","text-align":"center"}},"🤓",-1),F("div",{style:{"font-size":"12px","text-align":"center","margin-top":"-6px"}},"👕",-1),F("div",{style:{"font-size":"12px","text-align":"center","margin-top":"-6px"}},"👖",-1)]))),e.text?(W(),U("div",Bs,se(e.text),1)):ae("",!0)],64))],44,qs)))),128))],4)],34),F("div",Qs,[F("div",$s,[F("div",ea,[F("span",ta,se(Z(Le)("Rotate")),1),F("span",ia,se(o.value)+"°",1)]),X(Z(C),{modelValue:o.value,"onUpdate:modelValue":[t[6]||(t[6]=e=>o.value=e),f],min:0,max:360,class:"w-full"},null,8,["modelValue"])]),F("div",sa,[F("div",aa,[F("span",na,se(Z(Le)("Vertical")),1),F("span",oa,se(l.value)+"°",1)]),X(Z(C),{modelValue:l.value,"onUpdate:modelValue":[t[7]||(t[7]=e=>l.value=e),f],min:-30,max:90,class:"w-full"},null,8,["modelValue"])]),F("div",la,[F("div",ra,[F("span",da,se(Z(Le)("Zoom")),1),F("span",ua,se(r.value),1)]),X(Z(C),{modelValue:r.value,"onUpdate:modelValue":[t[8]||(t[8]=e=>r.value=e),f],min:0,max:10,step:.1,class:"w-full"},null,8,["modelValue"])])])])]))}},ca=(e,t)=>{const i=e.__vccOpts||e;for(const[s,a]of t)i[s]=a;return i},pa={class:"relative rounded-t-lg overflow-hidden select-none"},ha={key:1,class:"w-full h-full flex items-center justify-center"},ma=ca({__name:"baseThumbnail",props:{hoverZoom:{type:"number",default:4},isHovered:{type:Boolean,default:!1}},setup(e){const t=P(!1),i=P(null);return j((()=>{var e;Array.from((null==(e=i.value)?void 0:e.getElementsByTagName("img"))??[]).forEach((e=>{de(e,"error",(()=>{t.value=!0}))}))})),(s,a)=>(W(),U("div",pa,[t.value?(W(),U("div",ha,a[0]||(a[0]=[F("i",{class:"pi pi-file text-4xl"},null,-1)]))):(W(),U("div",{key:0,ref_key:"contentRef",ref:i,class:"w-full h-full transform-gpu transition-transform duration-1000 ease-out",style:ne(e.isHovered?{transform:`scale(${1+e.hoverZoom/100})`}:void 0)},[oe(s.$slots,"default",{},void 0,!0)],4))]))}},[["__scopeId","data-v-604a4248"]]),fa=["src","alt"],ga=ca({__name:"lazyImage",props:{src:{type:String,required:!0},alt:{type:String,default:""},imageClass:{type:[String,Array,Object],default:""},imageStyle:{type:[String,Object],default:()=>({})},placeholderClass:{type:[String,Array,Object],default:""},errorClass:{type:[String,Array,Object],default:""},rootMargin:{type:String,default:"50px"},threshold:{type:Number,default:.1},immediate:{type:Boolean,default:!1}},emits:["load","error","visible"],setup(e,{emit:t}){const i=e,s=t,a=P(null),n=P(i.immediate),o=P(!1),l=P(!1),r=B((()=>i.src));J((()=>i.src),(()=>{o.value=!1,l.value=!1,i.immediate||(n.value=!1)}),{immediate:!0});const{stop:d}=ue(a,(([e])=>{(null==e?void 0:e.isIntersecting)&&!n.value&&(n.value=!0,s("visible"),d())}),{rootMargin:i.rootMargin,threshold:i.threshold}),u=e=>{o.value=!0,l.value=!1,s("load",e)},A=e=>{l.value=!0,o.value=!1,s("error",e)};return(t,i)=>(W(),U("div",{ref_key:"containerRef",ref:a,class:"lazy-image-container"},[l.value?(W(),U("div",{key:0,class:ee(["lazy-image-error","w-full h-full flex items-center justify-center bg-surface-100 dark:bg-surface-800",e.errorClass])},[oe(t.$slots,"error",{},(()=>[i[0]||(i[0]=F("i",{class:"pi pi-exclamation-triangle text-2xl text-surface-400"},null,-1))]),!0)],2)):n.value&&r.value?(W(),U("img",{key:1,src:r.value,alt:e.alt,class:ee(e.imageClass),style:ne(e.imageStyle),draggable:"false",onLoad:u,onError:A},null,46,fa)):n.value?ae("",!0):(W(),U("div",{key:2,class:ee(["lazy-image-placeholder","w-full h-full flex items-center justify-center bg-surface-100 dark:bg-surface-800",e.placeholderClass])},[oe(t.$slots,"placeholder",{},(()=>[i[1]||(i[1]=F("i",{class:"pi pi-image text-2xl text-surface-400"},null,-1))]),!0)],2))],512))}},[["__scopeId","data-v-4bfc03bf"]]),va={class:"overflow-hidden w-full h-full flex items-center justify-center"},ya={__name:"defaultThumbnail",props:{src:{type:String,required:!0},alt:{type:String,required:!0},hoverZoom:{type:Number,required:!0},isHovered:{type:Boolean,default:!1},isVideo:{type:Boolean,default:!1},rootMargin:{type:String,default:"50px"},threshold:{type:Number,default:.1},immediate:{type:Boolean,default:!1}},emits:["load","error","visible"],setup(e,{emit:t}){const i=e,{src:s,isVideo:a}=i;return a??(null==s||s.toLowerCase().endsWith(".webp")),(t,i)=>(W(),q(ma,{"hover-zoom":e.hoverZoom,"is-hovered":e.isHovered},{default:le((()=>[F("div",va,[X(ga,{src:Z(s),"image-class":["transform-gpu transition-transform duration-300 ease-out","w-full h-full object-cover"],"image-style":e.isHovered?{transform:`scale(${1+e.hoverZoom/100})`}:void 0,"root-margin":e.rootMargin,threshold:e.threshold,immediate:e.immediate,onLoad:i[0]||(i[0]=e=>t.$emit("load",e)),onError:i[1]||(i[1]=e=>t.$emit("error",e)),onVisible:i[2]||(i[2]=e=>t.$emit("visible",e))},{placeholder:le((()=>[oe(t.$slots,"placeholder",{},(()=>[i[3]||(i[3]=F("i",{class:"pi pi-image text-2xl text-surface-400"},null,-1))]))])),error:le((()=>[oe(t.$slots,"error",{},(()=>[i[4]||(i[4]=F("i",{class:"pi pi-exclamation-triangle text-2xl text-surface-400"},null,-1))]))])),_:3},8,["src","image-style","root-margin","threshold","immediate"])])])),_:3},8,["hover-zoom","is-hovered"]))}},ba={class:"overflow-hidden w-full h-full flex items-center justify-center relative"},wa={__name:"compareSliderThumbnail",props:{baseImageSrc:{type:String,required:!0},overlayImageSrc:{type:String,required:!0},alt:{type:String,required:!0},isHovered:{type:Boolean,default:!1},isVideo:{type:Boolean,default:!1},rootMargin:{type:String,default:"50px"},threshold:{type:Number,default:.1},immediate:{type:Boolean,default:!1}},emits:["load","error","visible"],setup(e,{emit:t}){var i,s;const a=e;a.isVideo||(null==(i=a.baseImageSrc)?void 0:i.toLowerCase().endsWith(".webp"))||null==(s=a.overlayImageSrc)||s.toLowerCase().endsWith(".webp");const n=P(50),o=P(null),{elementX:l,elementWidth:r,isOutside:d}=Ae(o);return J([()=>a.isHovered,l,r,d],(([e,t,i,s])=>{e&&(s||(n.value=t/i*100))})),(t,i)=>(W(),q(ma,{"is-hovered":e.isHovered},{default:le((()=>[F("div",ba,[X(ga,{src:e.baseImageSrc,"image-class":["transform-gpu transition-transform duration-300 ease-out","w-full h-full object-cover block"],"root-margin":e.rootMargin,threshold:e.threshold,immediate:e.immediate,onLoad:i[0]||(i[0]=e=>t.$emit("load",e)),onError:i[1]||(i[1]=e=>t.$emit("error",e)),onVisible:i[2]||(i[2]=e=>t.$emit("visible",e))},{placeholder:le((()=>[oe(t.$slots,"placeholder",{},(()=>[i[3]||(i[3]=F("i",{class:"pi pi-image text-2xl text-surface-400"},null,-1))]))])),error:le((()=>[oe(t.$slots,"error",{},(()=>[i[4]||(i[4]=F("i",{class:"pi pi-exclamation-triangle text-2xl text-surface-400"},null,-1))]))])),_:3},8,["src","root-margin","threshold","immediate"]),F("div",{ref_key:"containerRef",ref:o,class:"absolute inset-0"},[X(ga,{src:e.overlayImageSrc,"image-class":["transform-gpu transition-transform duration-300 ease-out","w-full h-full object-cover block"],"image-style":{clipPath:`inset(0 ${100-n.value}% 0 0)`},"root-margin":e.rootMargin,threshold:e.threshold,immediate:e.immediate},{placeholder:le((()=>[oe(t.$slots,"placeholder",{},(()=>[i[5]||(i[5]=F("i",{class:"pi pi-image text-2xl text-surface-400"},null,-1))]))])),error:le((()=>[oe(t.$slots,"error",{},(()=>[i[6]||(i[6]=F("i",{class:"pi pi-exclamation-triangle text-2xl text-surface-400"},null,-1))]))])),_:3},8,["src","image-style","root-margin","threshold","immediate"]),F("div",{class:"absolute inset-y-0 bg-white/30 backdrop-blur-sm z-10 pointer-events-none",style:ne({left:`${n.value}%`,width:"1px"})},null,4)],512)])])),_:3},8,["is-hovered"]))}},_a={class:"selector-card-wrapper"},Sa={class:"card-image-container"},xa={key:2,class:"selection-badge"},La={class:"card-content"},ka={class:"card-title"},Ea=ca({__name:"selectorCard",props:{item:{type:Object,required:!0},uniqueKey:{type:String,default:"id"},selectable:{type:Boolean,default:!1},isSelected:{type:Boolean,default:!1},multiple:{type:Boolean,default:!1},showDescription:{type:Boolean,default:!0},showMeta:{type:Boolean,default:!1},showActions:{type:Boolean,default:!1},actions:{type:Array,default:()=>[]},itemFields:{type:Object,default:()=>({id:"id",title:"title",description:"description",image:"image",meta:"meta"})},locale:{type:String,default:"en"}},emits:["select","action","item-hover","item-leave"],setup(e,{emit:t}){const i=e,s=t,a=P(null),n=ce(a),o=()=>{i.selectable&&s("select",i.item)},l=()=>{s("item-hover",i.item)},r=()=>{s("item-leave",i.item)};return(t,i)=>(W(),U("div",_a,[F("div",{ref_key:"cardRef",ref:a,class:ee(["card-item",{selected:e.isSelected,clickable:e.selectable}]),onClick:o,onMouseenter:l,onMouseleave:r},[F("div",Sa,["compareSlider"===e.item.thumbnailVariant?(W(),q(wa,{key:0,"base-image-src":e.item.thumbnail[0],"overlay-image-src":e.item.thumbnail[1],alt:t.title,"is-hovered":Z(n),"is-video":"video"===e.item.mediaType||"webp"===e.item.mediaSubtype,class:"card-image"},null,8,["base-image-src","overlay-image-src","alt","is-hovered","is-video"])):(W(),q(ya,{key:1,src:e.item.thumbnail||"",alt:"zh"==e.locale?e.item.name_cn:e.item.name,"hover-zoom":4,"is-hovered":!1,class:"card-image"},null,8,["src","alt"])),e.selectable&&e.isSelected?(W(),U("div",xa,i[0]||(i[0]=[F("i",{class:"pi pi-check text-white"},null,-1)]))):ae("",!0)]),F("div",La,[F("div",ka,se("zh"==e.locale?e.item.name_cn:e.item.name),1)])],34)]))}},[["__scopeId","data-v-88af28b0"]]),Na={class:"list-item"},Ca=["name","checked"],Ia={class:"list-item-content"},Ta={class:"list-title"},Oa=ca({__name:"selectorList",props:{item:{type:Object,required:!0},uniqueKey:{type:String,default:"id"},selectable:{type:Boolean,default:!1},isSelected:{type:Boolean,default:!1},multiple:{type:Boolean,default:!1},showDescription:{type:Boolean,default:!0},showActions:{type:Boolean,default:!1},actions:{type:Array,default:()=>[]},itemFields:{type:Object,default:()=>({id:"id",title:"title",description:"description"})},locale:{type:String,default:"en"}},emits:["select","action","item-hover","item-leave"],setup(e,{emit:t}){const i=e,s=t,a=()=>{i.selectable&&s("select",i.item)},n=()=>{s("item-hover",i.item)},o=()=>{s("item-leave",i.item)};return(t,i)=>(W(),U("div",Na,[F("span",{class:ee(["list-item__tag",{selected:e.isSelected}]),onClick:a,onMouseenter:n,onMouseleave:o},[e.selectable?(W(),U("input",{key:0,type:"checkbox",name:e.item.name,checked:e.isSelected,onClick:i[0]||(i[0]=te((()=>{}),["stop"]))},null,8,Ca)):ae("",!0),F("span",Ia,[F("div",Ta,se("zh"==e.locale?e.item.name_cn:e.item.name),1)])],34)]))}},[["__scopeId","data-v-c93b1734"]]),Ma=S("graphStore",{state:e=>({selectors:[],selectors_styles:{},seg_selectors:[],slider_controls:[]}),actions:{setSelectors(e){this.selectors=R(e)},setStyles(e,t){this.selectors_styles[e]||(this.selectors_styles[e]=t)},setSegSelectors(e){this.seg_selectors=R(e)},setSliderControls(e){this.slider_controls=R(e)}}}),Da={class:"easyuse-styles-selector"},Ra={class:"easyuse-styles-selector-header flex justify-between gap-2"},Pa={class:"flex align-center gap-1"},Ga={class:"flex-1"},za={key:0,class:"grid-container gap-2"},Va={key:1,class:"list-container"},ja={key:0,class:"easyuse-styles-selector-previewer"},Wa={class:"easyuse-styles-selector-previewer__text"},Ua=["src"],Fa={class:"title"},Xa={class:"easyuse-styles-selector-previewer__prompt"},Za={key:0},Ha={class:"comfyui-easyuse-success"},qa={key:1},Ya={class:"comfyui-easyuse-error"},Ka={__name:"stylesSelector",props:Y(["widget"],{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=Ma(),{selectors_styles:i}=I(t),s=P(""),a=V(e,"modelValue");e.widget.inputSpec;const n=B((e=>we("Comfy.Locale")||"en")),o=P(we("EasyUse.StylesSelector.DisplayType")||"Grid");"Gird"==o.value&&(o.value="Grid",Se("EasyUse.StylesSelector.DisplayType","Grid"));const l=P([]),r=P("");J((e=>o.value),(e=>{Se("EasyUse.StylesSelector.DisplayType",e)}));const d=B((()=>{if(!r.value.trim())return l.value;const e=a.value||[],t=r.value.toLowerCase(),i=[],s=[];return l.value.forEach((a=>{if(e.includes(a.name))i.push(a);else{const e="zh"===n.value&&a.name_cn?a.name_cn:a.name,i=a.prompt||"",o=a.negative_prompt||"";(e.toLowerCase().includes(t)||i.toLowerCase().includes(t)||o.toLowerCase().includes(t))&&s.push(a)}})),[...i,...s]})),u=re({name:"",positive:"",negative:"",src:""}),A=async e=>{if(i.value[e])return!0;const s=await he.fetchApi(`/easyuse/prompt/styles?name=${e}`);if(200===s.status){let i=(await s.json()).map(((e,t)=>(e.index=t,e)));return await t.setStyles(e,i),!0}return Ze.error(Le("Get styles list Failed")),!1},c=e=>{var t,i;u.name="zh"==n.value&&e.name_cn?e.name_cn:e.name,u.src=e.thumbnailVariant&&"default"!=e.thumbnailVariant?(null==(t=e.thumbnail)?void 0:t[1])||(null==(i=e.thumbnail)?void 0:i[0]):e.thumbnail,u.positive=e.prompt,u.negative=e.negative_prompt},p=()=>{u.name="",u.src="",u.positive="",u.negative=""},h=e=>{const t=a.value||[],n=R(i.value[s.value]);l.value=[...n.sort(((e,t)=>e.index-t.index)).sort(((e,i)=>t.includes(i.name)-t.includes(e.name)))]},m=e=>(a.value||[]).includes(e.name),f=e=>{let t=[...a.value||[]];const i=e.name,s=t.findIndex((e=>e===i));s>-1?t.splice(s,1):t.push(i),a.value=t},g=()=>{a.value=[]};return j((t=>{const i=vt(e.widget.node,"styles");let a=i.value;s.value=a,A(a).then((e=>e&&h())),i.callback=e=>{s.value=e,g(),A(e).then((e=>e&&h()))}})),(t,i)=>(W(),U("div",Da,[F("div",Ra,[F("div",Pa,[H(X(Z(L),{icon:"pi pi-trash",severity:"secondary",outlined:"",size:"small",onClick:g},null,512),[[Z(E),Z(Le)("Reset")]])]),F("div",Ga,[X(Z(M),null,{default:le((()=>[X(Z(T),{class:"pi pi-search"}),X(Z(O),{modelValue:r.value,"onUpdate:modelValue":i[0]||(i[0]=e=>r.value=e),placeholder:Z(Le)("Search styles..."),class:"w-full"},null,8,["modelValue","placeholder"])])),_:1})]),X(Z(D),{modelValue:o.value,"onUpdate:modelValue":i[1]||(i[1]=e=>o.value=e),options:["Grid","List"],"allow-empty":!1},{option:le((({option:e})=>[F("i",{class:ee(["List"===e?"pi pi-bars":"pi pi-table"])},null,2)])),_:1},8,["modelValue"])]),F("div",{class:"easyuse-styles-selector-content",onMouseleave:i[2]||(i[2]=t=>h(e.widget.node.name))},["Grid"===o.value?(W(),U("div",za,[(W(!0),U(Q,null,$(d.value,((e,t)=>(W(),q(Ea,{key:`${e.name}-${t}`,item:e,"unique-key":"name",locale:n.value,selectable:!0,"is-selected":m(e),"show-description":!0,"preview-enabled":!0,onSelect:f,onItemHover:c,onItemLeave:p},null,8,["item","locale","is-selected"])))),128))])):(W(),U("div",Va,[(W(!0),U(Q,null,$(d.value,((e,t)=>(W(),q(Oa,{key:`${e.name}-${t}`,item:e,"unique-key":"name",locale:n.value,selectable:!0,"is-selected":m(e),"show-description":!0,onSelect:f,onItemHover:c,onItemLeave:p},null,8,["item","locale","is-selected"])))),128))]))],32),(null==u?void 0:u.positive)||(null==u?void 0:u.negative)?(W(),U("div",ja,[F("div",Wa,[F("img",{src:u.src,alt:"",style:{width:"100%",height:"auto","object-fit":"contain","border-radius":"6px"}},null,8,Ua),F("span",Fa,se(u.name),1),F("div",Xa,[u.positive?(W(),U("h6",Za,[F("span",Ha,se(Z(Le)("Positive"))+":",1),F("span",null,se(u.positive),1)])):ae("",!0),u.negative?(W(),U("h6",qa,[F("span",Ya,se(Z(Le)("Negative"))+":",1),F("span",null,se(u.negative),1)])):ae("",!0)])])])):ae("",!0)]))}};pe.registerExtension({name:"Comfy.EasyUse.CustomWidget",getCustomWidgets:e=>({EASY_PROMPT_AWAIT_BAR:(e,t,i,s)=>{const a=P({select:"now",unlock:!0,last_seed:0,seed:0}),n=new Es({node:e,name:t,component:Ts,inputSpec:{type:"custom",name:t},options:{getValue:()=>a.value,setValue:e=>{e&&(a.value=e)}}});return e.addCustomWidget(n),e.onRemoved=et(e.onRemoved,(()=>{var e;null==(e=n.onRemove)||e.call(n)})),e.onResize=et(e.onResize,(()=>{var t,i;null==(t=n.options.beforeResize)||t.call(n,e),null==(i=n.options.afterResize)||i.call(n,e)})),_s().registerWidget(n),n},EASY_COMBO:(e,t,i,s)=>{const a=P([]),n={type:"custom",name:t,options:null==i?void 0:i[1].options,multi_select:null==i?void 0:i[1].multi_select},o=!!["obsidian","obsidian_dark","milk_white"].includes(we("Comfy.ColorPalette"))?22:26,l=new Es({node:e,name:t,component:Ms,inputSpec:n,options:{margin:0,getMinHeight:()=>o,getMaxHeight:()=>o,getValue:()=>a.value,setValue:e=>{e&&(Array.isArray(e)?a.value=e:a.value=e.split(",").map((e=>parseInt(e))))}}});return e.addCustomWidget(l),e.onRemoved=et(e.onRemoved,(()=>{var e;null==(e=l.onRemove)||e.call(l)})),e.onResize=et(e.onResize,(()=>{var t,i;null==(t=l.options.beforeResize)||t.call(l,e),null==(i=l.options.afterResize)||i.call(l,e)})),_s().registerWidget(l),l},EASY_PROMPT_STYLES:(e,t,i,s)=>{const a=P([]),n=new Es({node:e,name:t,component:Ka,inputSpec:{type:"custom",name:t},options:{margin:10,getMinHeight:()=>180,getMaxHeight:()=>e.size[1]-75,getValue:()=>a.value,setValue:e=>{e&&(Array.isArray(e)?a.value=e:a.value=e.split(","))}}});return e.addCustomWidget(n),e.onRemoved=et(e.onRemoved,(()=>{var e;null==(e=n.onRemove)||e.call(n)})),e.onResize=et(e.onResize,(()=>{var t,i;null==(t=n.options.beforeResize)||t.call(n,e),null==(i=n.options.afterResize)||i.call(n,e)})),_s().registerWidget(n),n},EASY_MULTI_ANGLE:(e,t,i,s)=>{const a=P([{rotate:0,vertical:0,zoom:5,add_angle_prompt:!0}]),n=new Es({node:e,name:t,component:Aa,inputSpec:{type:"custom",name:t},options:{margin:10,getMinHeight:()=>350,getMaxHeight:()=>e.size[1]-80,getValue:()=>a.value,setValue:e=>{e&&(Array.isArray(e)?a.value=e:a.value=e.split(","))}}});return e.addCustomWidget(n),e.onRemoved=et(e.onRemoved,(()=>{var e;null==(e=n.onRemove)||e.call(n)})),e.onResize=et(e.onResize,(()=>{var t,i;null==(t=n.options.beforeResize)||t.call(n,e),null==(i=n.options.afterResize)||i.call(n,e)})),_s().registerWidget(n),n}})});export{Le as $,Oe as N,ca as _,pe as a,He as b,we as c,fi as d,xs as e,_s as f,vt as g,et as h,Ss as i,kt as j,Me as k,he as l,_e as m,We as s,Ze as t,Ma as u}; diff --git a/web_version/v2/assets/extensions-D2kRhbC_.js b/web_version/v2/assets/extensions-D2kRhbC_.js deleted file mode 100644 index 17c5fb9..0000000 --- a/web_version/v2/assets/extensions-D2kRhbC_.js +++ /dev/null @@ -1 +0,0 @@ -var e,t,i,s,n,a,o,l,r,d,u,A,c,p,h,m,f=Object.defineProperty,g=e=>{throw TypeError(e)},v=(e,t,i)=>((e,t,i)=>t in e?f(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i)(e,"symbol"!=typeof t?t+"":t,i),y=(e,t,i)=>t.has(e)||g("Cannot "+i),b=(e,t,i)=>(y(e,t,"read from private field"),i?i.call(e):t.get(e)),w=(e,t,i)=>t.has(e)?g("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,i),_=(e,t,i,s)=>(y(e,t,"write to private field"),s?s.call(e,i):t.set(e,i),i);import{d as S,h as L,s as x,a as k,T as E,b as N,c as C,e as I,f as T,g as O,i as M,j as D}from"./vendor-BLbrPL4H.js";import{c as R}from"./lodash-CZi7izHi.js";import{r as P,m as G,t as z,u as V,o as j,a as W,c as U,b as F,d as X,e as Z,w as q,f as H,g as Y,h as K,i as J,j as B,F as Q,k as $,l as ee,n as te,v as ie,p as se,q as ne,s as ae,x as oe,y as le,z as re,A as de}from"./vue-C8DvX6GQ.js";import{u as ue,a as Ae,b as ce,c as pe}from"./vueuse-BtwMN4bF.js";let he=(null==(t=null==(e=window.comfyAPI)?void 0:e.app)?void 0:t.app)||null,me=(null==(s=null==(i=window.comfyAPI)?void 0:i.api)?void 0:s.api)||null,fe=(null==(a=null==(n=window.comfyAPI)?void 0:n.ui)?void 0:a.$el)||null,ge=(null==(l=null==(o=window.comfyAPI)?void 0:o.dialog)?void 0:l.ComfyDialog)||null,ve=(null==(d=null==(r=window.comfyAPI)?void 0:r.widgets)?void 0:d.ComfyWidgets)||null,ye=(null==(A=null==(u=window.comfyAPI)?void 0:u.utils)?void 0:A.applyTextReplacements)||null,be=(null==(p=null==(c=window.comfyAPI)?void 0:c.groupNode)?void 0:p.GroupNodeConfig)||null;const we=e=>{var t,i;return e?null==(i=null==(t=null==he?void 0:he.ui)?void 0:t.settings)?void 0:i.getSettingValue(e):null};function _e(e,t=null){try{let i=e?we(e):null;return null==i&&(i=t?localStorage[t]:localStorage[e]||null),i}catch(i){return null}}function Se(e,t=e=>{}){var i;const s=null==(i=he.ui.settings.settingsLookup)?void 0:i[e];s&&(s.onChange=e=>t(e))}async function Le(e,t,i=null){var s,n;if(!e)throw new Error("Invalid arguments");try{(null==(n=null==(s=null==he?void 0:he.ui)?void 0:s.settings)?void 0:n.setSettingValue)?he.ui.settings.setSettingValue(e,t):await me.storeSetting(e,t),i&&(localStorage[i]="object"==typeof t?JSON.stringify(t):t)}catch(a){}}const xe={"Workflow created by":"工作流创建者","Watch more video content":"观看更多视频内容","Workflow Guide":"工作流指南","💎 View Checkpoint Info...":"💎 查看 Checkpoint 信息...","💎 View Lora Info...":"💎 查看 Lora 信息...","🔃 Reload Node":"🔃 刷新节点","Updated At:":"最近更新:","Created At:":"首次发布:","✏️ Edit":"✏️ 编辑","💾 Save":"💾 保存","No notes":"当前还没有备注内容","Saving Notes...":"正在保存备注...","Type your notes here":"在这里输入备注内容",ModelName:"模型名称","Models Required":"所需模型","Download Model":"下载模型","Source Url":"模型源地址",Notes:"备注",Type:"类型","Trained Words":"训练词",BaseModel:"基础算法",Details:"详情",Description:"描述",Download:"下载量",Source:"来源","Saving Preview...":"正在保存预览图...","Saving Succeed":"保存成功","Clean SuccessFully":"清理成功","Clean Failed":"清理失败","Saving Failed":"保存失败","No COMBO link":"沒有找到COMBO连接","Reboot ComfyUI":"重启ComfyUI","Are you sure you'd like to reboot the server?":"是否要重启ComfyUI?","NODES MAP":"管理节点与组",NodesMap:"节点与组","Nodes map sorting mode":"管理节点组排序模式","Search by Node ID/Name...":"通过节点ID/名称搜索...","No Nodes":"未找到节点","No nodes found in the map":"在工作流程中没有找到节点","No nodes found in the search":"未找到与搜索匹配的节点","Jump to this node":"跳转到该节点","Rename node":"重命名节点","Delete node":"删除节点","Rename group":"重命名组","Delete group":"删除组","Expand All":"展开所有组","Collapse All":"折叠所有组",Close:"关闭","Default automatic sorting, if set to manual, groups can be dragged and dropped and the sorting results saved.":"默认自动排序,如果设置为手动,组可以拖放并保存排序结果。","For drag and drop sorting, please find Nodes map sorting mode in Settings->EasyUse and change it to manual":"如需拖拽排序请在设置->EasyUse节点中找到管理节点组排序模式并修改成 manual",Queue:"队列","Cleanup Of VRAM Usage":"清理显存占用","Please stop all running tasks before cleaning GPU":"请在清理GPU之前停止所有运行中的任务",Always:"启用中",Bypass:"已忽略",Never:"已停用","Auto Sorting":"自动排序","Toggle `Show/Hide` can set mode of group, LongPress can set group nodes to never":"点击`启用中/已忽略`可设置组模式, 长按可停用该组节点","Enable Shift+Up/Down/Left/Right key and Shift+Ctrl+Alt+Left/Right to align selected nodes":"启用 Shift+上/下/左/右 和 Shift+Ctrl+Alt+左/右 键对齐选中的节点","Enable Shift+Ctrl+Left/Right key to normalize selected nodes":"启用 Shift+Ctrl+左/右 键规范化选中的节点","Enable Shift+g to add selected nodes to a group":"启用 Shift+g 键将选中的节点添加一个组","Enable Shift+r to unload models and node cache":"启用 Shift+r 键卸载模型和节点缓存","Enable Shift+m to toggle nodes map":"启用 Shift+m 键显隐管理节点组","Enable Up/Down/Left/Right key to jump nearest nodes":"启用 上/下/左/右 键跳转到最近的前后节点","Enable Alt+1~9 to paste nodes from nodes template":"启用 Alt+1~9 从节点模板粘贴到工作流中","Enable contextMenu auto nest subdirectories":"启用上下文菜单自动嵌套子目录","Enable right-click menu to add node A~Z sorting":"启用右键菜单中新建节点A~Z排序","Enable model thumbnails display":"启动模型预览图显示","Enable nodes runtime display":"启动节点运行时间显示","Enable chain get node and set node with parent nodes":"启用将获取点和设置点与父节点链在一起","Maximum number of model thumbnails displayed":"显示的模型缩略图的最大数量","Too many thumbnails will affect the first loading time, set the maximum value to not load the thumbnail function when there are too many models's thumbnail":"太多的缩略图会影响首次加载时间,当模型缩略图太多时,设置最大值以不加载缩略图功能","Too many thumbnails, have closed the display":"模型缩略图太多啦,为您关闭了显示","Shift+Up/Down/Left/Right can align selected nodes, Shift+Ctrl+Alt+Left/Right can distribute horizontal/vertical nodes":"Shift+上/下/左/右 可以对齐选中的节点, Shift+Ctrl+Alt+左/右 可以水平/垂直分布节点","Enable Shift+Ctrl+Left key to normalize width and Shift+Ctrl+Right key to normalize height":"启用 Shift+Ctrl+左 键规范化宽度和 Shift+Ctrl+右 键规范化高度","After v1.2.39, Ctrl+g can be used instead of it":"从v1.2.39开始,可以使用Ctrl+g代替","Styles Selector Display Type":"样式选择器显示类型","Styles Selector Display Type, if set to 'Grid', it will display as a Grid, if set to 'List', it will display as a list":"样式选择器显示类型,如果设置为“网格”,则显示为网格,如果设置为“列表”,则显示为列表","Use three shortcut buttons in the right-click menu":"在右键菜单中使用三个快捷按钮","Enable Nodes Map":"启用节点组管理","Display Groups Only":"仅显示组","Display Node ID":"显示节点ID","You need to refresh the page to update successfully":"您需要刷新页面以成功更新","Get styles list Failed":"获取样式列表失败","Get style image Failed":"获取样式图片失败","Empty All":"清空所有","Type here to search styles ...":"在此处输入以搜索样式 ...","Loading UserInfo...":"正在获取用户信息...","Please set the APIKEY first":"请先设置APIKEY","Setting APIKEY":"设置APIKEY","Save Account Info":"保存账号信息",Choose:"选择",Delete:"删除",Edit:"编辑","At least one account is required":"删除失败: 至少需要一个账户","APIKEY is not Empty":"APIKEY 不能为空","Add Account":"添加账号","Getting Your APIKEY":"获取您的APIKEY",Canceling:"正在取消","Cancel current run":"取消当前运行","Waiting for selection...":"等待选择中...","Using last selection":"使用上次选择","Pass Through":"跳过选择","Unknown Mode":"未知模式","Choose Selected Images":"选择选中的图片","Choose images to continue":"选择图片以继续","Please run first":"请先运行队列","Progress selected":"处理选中的图片","Progress selected image":"处理选中的图片","Please select images to continue":"请选择图片以继续",Background:"背景",Hat:"帽子",Hair:"头发",Body:"身体",Face:"脸部",Clothes:"衣服",Others:"其他",Glove:"手套",Glasses:"眼镜",Sunglasses:"太阳镜","Upper-clothes":"上衣","Top-clothes":"上衣","Bottom-clothes":"下身装","Torso-skin":"皮肤",Dress:"连衣裙",Belt:"腰带",Coat:"外套",Socks:"袜子",Pants:"裤子",Jumpsuits:"连体衣",Bag:"包",Scarf:"围巾",Skirt:"裙子","Left-arm":"左臂","Right-arm":"右臂","Left-leg":"左腿","Right-leg":"右腿","Left-foot":"左脚","Right-foot":"右脚","Left-shoe":"左鞋","Right-shoe":"右鞋","select mask components":"选择分割部位","select items":"选择项",Unlabelled:"未标记","shirt, blouse":"衬衫,女式衬衫","top, t-shirt, sweatshirt":"上衣,T恤,运动衫",sweater:"毛衣",cardigan:"开襟毛衣",jacket:"夹克",vest:"背心",pants:"长裤",shorts:"短裤",skirt:"裙子",coat:"外套",dress:"连衣裙",jumpsuit:"连体衣",cape:"斗篷",glasses:"眼镜",hat:"帽子","headband, head covering, hair accessory":"头带,头饰,发饰",tie:"领带",glove:"手套",watch:"手表",belt:"腰带","leg warmer":"护腿","tights, stockings":"紧身袜,丝袜",sock:"袜子",shoe:"鞋子","bag, wallet":"包,钱包",scarf:"围巾",umbrella:"雨伞",hood:"帽兜",collar:"领子",lapel:"翻领",epaulette:"肩章",sleeve:"袖子",pocket:"口袋",neckline:"领口",buckle:"扣环",zipper:"拉链",applique:"贴花",bead:"珠子",bow:"蝴蝶结",flower:"花朵装饰",fringe:"流苏",ribbon:"丝带",rivet:"铆钉",ruffle:"褶边",sequin:"亮片",tassel:"流苏穗",background:"背景",skin:"皮肤",nose:"鼻子",eyeglasses:"眼镜",left_eye:"左眼",right_eye:"右眼",left_eyebrow:"左眉毛",right_eyebrow:"右眉毛",left_ear:"左耳",right_ear:"右耳",mouth:"嘴巴",upper_lip:"上唇",lower_lip:"下唇",hair:"头发",earring:"耳环",necklace:"项链",neck:"脖子",clothing:"服装",s:"秒","No Node Templates Found":"未找到节点模板预设","Get Node Templates File Failed":"获取节点模板文件失败","Node template with {key} not set":"未设置快捷键为{key}的节点预设","ComfyUI Basic":"ComfyUI 基础节点","Recommend Nodes":"推荐节点","Others A~Z":"其他节点 A~Z","The maximum number of inputs is 20":"输入数量最大20个","The maximum number of outputs is 20":"输出数量最大20个","Stop recording":"停止录音","Voice input":"语音输入",Continue:"继续",Stop:"停止",now:"当前",prev:"上一步","Add New Tab":"添加新标签","Add Angle Prompt":"添加角度提示词",Reset:"重置","Angle Prompt":"角度词",Image:"图像",Back:"后面",Top:"顶部",Bottom:"底部",Left:"左侧",Right:"右侧",Rotate:"旋转",Vertical:"垂直",Zoom:"缩放"},ke=(e,t=!1)=>{switch(_e("Comfy.Locale")){case"zh-CN":case"zh":return xe[e]||e;default:return e}};const Ee="comfyui-easyuse-",Ne="dark-theme",Ce={PIPE_LINE:"#7737AA",PIPE_LINE_SDXL:"#7737AA",INT:"#29699C",X_Y:"#38291f",XYPLOT:"#74DA5D",LORA_STACK:"#94dccd",CONTROL_NET_STACK:"#94dccd",FLOW_CONTROL:"#373780"},Ie=0x4000000000000,Te=["loaders","latent","image","mask","sampling","_for_testing","advanced","utils","api","api node","加载器","Latent","图像","遮罩","采样","_用于测试","高级","工具","API","api 节点","chargeurs","latent","image","masque","échantillonnage","_pour_test","avancé","outils","nœud api","загрузчики","латентный","изображение","маска","выборка","_для_тестирования","расширенный","инструменты","api","api узел","로더","잠재","이미지","마스크","샘플링","_테스트용","고급","도구","api","api 노드","ローダー","潜在","画像","マスク","サンプリング","_テスト用","高度な","ツール","api","apiノード","cargadores","latente","imagen","máscara","muestreo","_para_pruebas","avanzado","herramientas","api","nodo api"],Oe={selfie_multiclass_256x256:["Background","Hair","Body","Face","Clothes","Others"],human_parsing_lip:["Background","Hat","Hair","Glove","Sunglasses","Upper-clothes","Dress","Coat","Socks","Pants","Jumpsuits","Scarf","Skirt","Face","Left-arm","Right-arm","Left-leg","Right-leg","Left-shoe","Right-shoe"],"human_parts (deeplabv3p)":["Background","Face","Hair","Glasses","Top-clothes","Bottom-clothes","Torso-skin","Left-arm","Right-arm","Left-leg","Right-leg","Left-foot","Right-foot"],segformer_b3_clothes:{Background:0,Hat:1,Hair:2,Sunglasses:3,"Upper-clothes":4,Skirt:5,Pants:6,Dress:7,Belt:8,"Left-shoe":9,"Right-shoe":10,Face:11,"Left-leg":12,"Right-leg":13,"Left-arm":14,"Right-arm":15,Bag:16,Scarf:17},segformer_b3_fashion:{Unlabelled:0,"shirt, blouse":1,"top, t-shirt, sweatshirt":2,sweater:3,cardigan:4,jacket:5,vest:6,pants:7,shorts:8,skirt:9,coat:10,dress:11,jumpsuit:12,cape:13,glasses:14,hat:15,"headband, head covering, hair accessory":16,tie:17,glove:18,watch:19,belt:20,"leg warmer":21,"tights, stockings":22,sock:23,shoe:24,"bag, wallet":25,scarf:26,umbrella:27,hood:28,collar:29,lapel:30,epaulette:31,sleeve:32,pocket:33,neckline:34,buckle:35,zipper:36,applique:37,bead:38,bow:39,flower:40,fringe:41,ribbon:42,rivet:43,ruffle:44,sequin:45,tassel:46},face_parsing:["background","skin","nose","eyeglasses","left_eye","right_eye","left_eyebrow","right_eyebrow","left_ear","right_ear","mouth","upper_lip","lower_lip","hair","hat","earring","necklace","neck","clothing"]},Me={ALWAYS:0,NEVER:2,BYPASS:4},De="easyuse_nodes_map",Re="data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABkAAD/4QMyaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA5LjEtYzAwMSA3OS4xNDYyODk5Nzc3LCAyMDIzLzA2LzI1LTIzOjU3OjE0ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjUuMyAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2RkFERDc2MUNDRkIxMUVGQjFENkE0NzFCNTUzRkQ0MCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2RkFERDc2MkNDRkIxMUVGQjFENkE0NzFCNTUzRkQ0MCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjUyMkMxRkIyQ0M0QzExRUZCMUQ2QTQ3MUI1NTNGRDQwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGQURENzYwQ0NGQjExRUZCMUQ2QTQ3MUI1NTNGRDQwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/+4ADkFkb2JlAGTAAAAAAf/bAIQAAQEBAQEBAQEBAQEB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",Pe="rgba(24,24,27,.9)",Ge={ColorPalette:{version:112,id:"obsidian",name:"Obsidian",colors:{node_slot:{CLIP:"#FFD500",CLIP_VISION:"#A8DADC",CLIP_VISION_OUTPUT:"#ad7452",CONDITIONING:"#FFA931",CONTROL_NET:"#6EE7B7",IMAGE:"#64B5F6",LATENT:"#FF9CF9",MASK:"#81C784",MODEL:"#B39DDB",STYLE_MODEL:"#C2FFAE",VAE:"#FF6E6E",TAESD:"#DCC274",PIPE_LINE:"#7737AA",PIPE_LINE_SDXL:"#7737AA",INT:"#29699C",X_Y:"#38291f",XYPLOT:"#74DA5D",LORA_STACK:"#94dccd",CONTROL_NET_STACK:"#94dccd",FAST_MODEL_LOADER:"#ffd399",SAMPLING:"#60a5fa"},litegraph_base:{BACKGROUND_IMAGE:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQBJREFUeNrs1rEKwjAUhlETUkj3vP9rdmr1Ysammk2w5wdxuLgcMHyptfawuZX4pJSWZTnfnu/lnIe/jNNxHHGNn//HNbbv+4dr6V+11uF527arU7+u63qfa/bnmh8sWLBgwYJlqRf8MEptXPBXJXa37BSl3ixYsGDBMliwFLyCV/DeLIMFCxYsWLBMwSt4Be/NggXLYMGCBUvBK3iNruC9WbBgwYJlsGApeAWv4L1ZBgsWLFiwYJmCV/AK3psFC5bBggULloJX8BpdwXuzYMGCBctgwVLwCl7Be7MMFixYsGDBsu8FH1FaSmExVfAxBa/gvVmwYMGCZbBg/W4vAQYA5tRF9QYlv/QAAAAASUVORK5CYII=",CLEAR_BACKGROUND_COLOR:"#222222",NODE_TITLE_COLOR:"#d4d4d8",NODE_SELECTED_TITLE_COLOR:"#ffffff",NODE_TEXT_SIZE:14,NODE_TEXT_COLOR:"#ffffff",NODE_SUBTEXT_SIZE:12,NODE_DEFAULT_COLOR:"#09090b",NODE_DEFAULT_BGCOLOR:"rgba(24,24,27,.9)",NODE_DEFAULT_BOXCOLOR:"rgba(255,255,255,.75)",NODE_DEFAULT_SHAPE:2,NODE_BOX_OUTLINE_COLOR:"#60a5fa",NODE_BYPASS_BGCOLOR:"#FF00FF",NODE_ERROR_COLOUR:"#E00",DEFAULT_SHADOW_COLOR:"rgba(0,0,0,0)",DEFAULT_GROUP_FONT:24,WIDGET_BGCOLOR:"#242427",WIDGET_OUTLINE_COLOR:"#3f3f46",WIDGET_TEXT_COLOR:"#d4d4d8",WIDGET_SECONDARY_TEXT_COLOR:"#d4d4d8",LINK_COLOR:"#9A9",EVENT_LINK_COLOR:"#A86",CONNECTING_LINK_COLOR:"#AFA"},comfy_base:{"fg-color":"#fff","bg-color":"#09090b","comfy-menu-bg":"rgba(24,24,24,.9)","comfy-input-bg":"#262626","input-text":"#ddd","descrip-text":"#999","drag-text":"#ccc","error-text":"#ff4444","border-color":"#29292c","tr-even-bg-color":"rgba(28,28,28,.9)","tr-odd-bg-color":"rgba(19,19,19,.9)"}}},NODE_COLORS:{red:{color:"#af3535",bgcolor:Pe,groupcolor:"#A88"},brown:{color:"#38291f",bgcolor:Pe,groupcolor:"#b06634"},green:{color:"#346434",bgcolor:Pe,groupcolor:"#8A8"},blue:{color:"#1f1f48",bgcolor:Pe,groupcolor:"#88A"},pale_blue:{color:"#006691",bgcolor:Pe,groupcolor:"#3f789e"},cyan:{color:"#008181",bgcolor:Pe,groupcolor:"#8AA"},purple:{color:"#422342",bgcolor:Pe,groupcolor:"#a1309b"},yellow:{color:"#c09430",bgcolor:Pe,groupcolor:"#b58b2a"},black:{color:"rgba(0,0,0,.8)",bgcolor:Pe,groupcolor:"#444"}}};let ze=JSON.parse(JSON.stringify(Ge));delete ze.NODE_COLORS,ze.ColorPalette.id="obsidian_dark",ze.ColorPalette.name="Obsidian Dark",ze.ColorPalette.colors.litegraph_base.BACKGROUND_IMAGE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGlmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4xLWMwMDEgNzkuMTQ2Mjg5OSwgMjAyMy8wNi8yNS0yMDowMTo1NSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI1LjEgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyMy0xMS0xM1QwMDoxODowMiswMTowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMTEtMTVUMDI6MDQ6NTkrMDE6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMTEtMTVUMDI6MDQ6NTkrMDE6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmIyYzRhNjA5LWJmYTctYTg0MC1iOGFlLTk3MzE2ZjM1ZGIyNyIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjk0ZmNlZGU4LTE1MTctZmQ0MC04ZGU3LWYzOTgxM2E3ODk5ZiIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjIzMWIxMGIwLWI0ZmItMDI0ZS1iMTJlLTMwNTMwM2NkMDdjOCI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjMxYjEwYjAtYjRmYi0wMjRlLWIxMmUtMzA1MzAzY2QwN2M4IiBzdEV2dDp3aGVuPSIyMDIzLTExLTEzVDAwOjE4OjAyKzAxOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjUuMSAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ4OWY1NzlmLTJkNjUtZWQ0Zi04OTg0LTA4NGE2MGE1ZTMzNSIgc3RFdnQ6d2hlbj0iMjAyMy0xMS0xNVQwMjowNDo1OSswMTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDI1LjEgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiMmM0YTYwOS1iZmE3LWE4NDAtYjhhZS05NzMxNmYzNWRiMjciIHN0RXZ0OndoZW49IjIwMjMtMTEtMTVUMDI6MDQ6NTkrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyNS4xIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4OTe6GAAAAx0lEQVR42u3WMQoAIQxFwRzJys77X8vSLiRgITif7bYbgrwYc/mKXyBoY4VVBgsWLFiwYFmOlTv+9jfDOjHmr8u6eVkGCxYsWLBgmc5S8ApewXvgYRksWLBgKXidpeBdloL3wMOCBctgwVLwCl7BuyyDBQsWLFiwTGcpeAWv4D3wsAwWLFiwFLzOUvAuS8F74GHBgmWwYCl4Ba/gXZbBggULFixYprMUvIJX8B54WAYLFixYCl5nKXiXpeA98LBgwTJYsGC9tg1o8f4TTtqzNQAAAABJRU5ErkJggg==",ze.ColorPalette.colors.litegraph_base.CLEAR_BACKGROUND_COLOR="#09090b";const Ve="#FFFFFF",je={ColorPalette:{id:"milk_white",name:"Milk White",colors:{node_slot:{CLIP:"#FFA726",CLIP_VISION:"#5C6BC0",CLIP_VISION_OUTPUT:"#8D6E63",CONDITIONING:"#EF5350",CONTROL_NET:"#66BB6A",IMAGE:"#42A5F5",LATENT:"#AB47BC",MASK:"#9CCC65",MODEL:"#7E57C2",STYLE_MODEL:"#D4E157",VAE:"#FF7043",PIPE_LINE:"#7737AA",PIPE_LINE_SDXL:"#7737AA",INT:"#29699C",X_Y:"#38291f",XYPLOT:"#74DA5D",LORA_STACK:"#94dccd",CONTROL_NET_STACK:"#94dccd",FAST_MODEL_LOADER:"#ffd399",SAMPLING:"#60a5fa"},litegraph_base:{BACKGROUND_IMAGE:"data:image/gif;base64,R0lGODlhZABkALMAAAAAAP///+vr6+rq6ujo6Ofn5+bm5uXl5d3d3f///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAABkAGQAAAT/UMhJq7046827HkcoHkYxjgZhnGG6si5LqnIM0/fL4qwwIMAg0CAsEovBIxKhRDaNy2GUOX0KfVFrssrNdpdaqTeKBX+dZ+jYvEaTf+y4W66mC8PUdrE879f9d2mBeoNLfH+IhYBbhIx2jkiHiomQlGKPl4uZe3CaeZifnnijgkESBqipqqusra6vsLGys62SlZO4t7qbuby7CLa+wqGWxL3Gv3jByMOkjc2lw8vOoNSi0czAncXW3Njdx9Pf48/Z4Kbbx+fQ5evZ4u3k1fKR6cn03vHlp7T9/v8A/8Gbp4+gwXoFryXMB2qgwoMMHyKEqA5fxX322FG8tzBcRnMW/zlulPbRncmQGidKjMjyYsOSKEF2FBlJQMCbOHP6c9iSZs+UnGYCdbnSo1CZI5F64kn0p1KnTH02nSoV3dGTV7FFHVqVq1dtWcMmVQZTbNGu72zqXMuW7danVL+6e4t1bEy6MeueBYLXrNO5Ze36jQtWsOG97wIj1vt3St/DjTEORss4nNq2mDP3e7w4r1bFkSET5hy6s2TRlD2/mSxXtSHQhCunXo26NevCpmvD/UU6tuullzULH76q92zdZG/Ltv1a+W+osI/nRmyc+fRi1Xdbh+68+0vv10dH3+77KD/i6IdnX669/frn5Zsjh4/2PXju8+8bzc9/6fj27LFnX11/+IUnXWl7BJfegm79FyB9JOl3oHgSklefgxAC+FmFGpqHIYcCfkhgfCohSKKJVo044YUMttggiBkmp6KFXw1oII24oYhjiDByaKOOHcp3Y5BD/njikSkO+eBREQAAOw==",CLEAR_BACKGROUND_COLOR:"lightgray",NODE_TITLE_COLOR:"#222",NODE_SELECTED_TITLE_COLOR:"#000",NODE_TEXT_SIZE:14,NODE_TEXT_COLOR:"#444",NODE_SUBTEXT_SIZE:12,NODE_DEFAULT_COLOR:"#F7F7F7",NODE_DEFAULT_BGCOLOR:"#F5F5F5",NODE_DEFAULT_BOXCOLOR:"#555",NODE_DEFAULT_SHAPE:2,NODE_BOX_OUTLINE_COLOR:"#000",DEFAULT_SHADOW_COLOR:"rgba(0,0,0,0.1)",DEFAULT_GROUP_FONT:24,WIDGET_BGCOLOR:"#D4D4D4",WIDGET_OUTLINE_COLOR:"#999",WIDGET_TEXT_COLOR:"#222",WIDGET_SECONDARY_TEXT_COLOR:"#555",LINK_COLOR:"#9A9",EVENT_LINK_COLOR:"#FF9800",CONNECTING_LINK_COLOR:"#222"},comfy_base:{"fg-color":"#222","bg-color":"#DDD","comfy-menu-bg":"#F5F5F5","comfy-input-bg":"#C9C9C9","input-text":"#222","descrip-text":"#444","drag-text":"#555","error-text":"#F44336","border-color":"#bbb","tr-even-bg-color":"#f9f9f9","tr-odd-bg-color":"#fff","content-bg":"#e0e0e0","content-fg":"#222","content-hover-bg":"#adadad","content-hover-fg":"#222"}}},NODE_COLORS:{red:{color:"#af3535",bgcolor:Ve,groupcolor:"#A88"},brown:{color:"#38291f",bgcolor:Ve,groupcolor:"#b06634"},green:{color:"#346434",bgcolor:Ve,groupcolor:"#8A8"},blue:{color:"#1f1f48",bgcolor:Ve,groupcolor:"#88A"},pale_blue:{color:"#006691",bgcolor:Ve,groupcolor:"#3f789e"},cyan:{color:"#008181",bgcolor:Ve,groupcolor:"#8AA"},purple:{color:"#422342",bgcolor:Ve,groupcolor:"#a1309b"},yellow:{color:"#c09430",bgcolor:Ve,groupcolor:"#b58b2a"},black:{color:"rgba(0,0,0,.8)",bgcolor:Ve,groupcolor:"#444"}}},We={addGroup:{id:"EasyUse.Hotkeys.AddGroup",name:"Enable Shift+g to add selected nodes to a group",tooltip:"After v1.2.39, Ctrl+g can be used instead of it",type:"boolean",defaultValue:!0},cleanVRAMUsed:{id:"EasyUse.Hotkeys.cleanVRAMUsed",name:"Enable Shift+r to unload models and node cache",type:"boolean",defaultValue:!0},toggleSiteMap:{id:"EasyUse.Hotkeys.toggleNodesMap",name:"Enable Shift+m to toggle nodes map",type:"boolean",defaultValue:!0},alignSelectedNodes:{id:"EasyUse.Hotkeys.AlignSelectedNodes",name:"Enable Shift+Up/Down/Left/Right key and Shift+Ctrl+Alt+Left/Right to align selected nodes",tooltip:"Shift+Up/Down/Left/Right can align selected nodes, Shift+Ctrl+Alt+Left/Right can distribute horizontal/vertical nodes",type:"boolean",defaultValue:!0},NormalizeSelectedNodes:{id:"EasyUse.Hotkeys.NormalizeSelectedNodes",name:"Enable Shift+Ctrl+Left/Right key to normalize selected nodes",tooltip:"Enable Shift+Ctrl+Left key to normalize width and Shift+Ctrl+Right key to normalize height",type:"boolean",defaultValue:!0},nodesTemplate:{id:"EasyUse.Hotkeys.NodesTemplate",name:"Enable Alt+1~9 to paste nodes from nodes template",type:"boolean",defaultValue:!0},jumpNearestNodes:{id:"EasyUse.Hotkeys.JumpNearestNodes",name:"Enable Up/Down/Left/Right key to jump nearest nodes",type:"boolean",defaultValue:!0},subDirectories:{id:"EasyUse.ContextMenu.SubDirectories",name:"Enable contextMenu auto nest subdirectories",type:"boolean",defaultValue:!1},modelsThumbnails:{id:"EasyUse.ContextMenu.ModelsThumbnails",name:"Enable model thumbnails display",type:"boolean",defaultValue:!1},rightMenuNodesSort:{id:"EasyUse.ContextMenu.NodesSort",name:"Enable right-click menu to add node A~Z sorting",type:"boolean",defaultValue:!0},quickOptions:{id:"EasyUse.ContextMenu.QuickOptions",name:"Use three shortcut buttons in the right-click menu",type:"combo",options:["At the forefront","At the end","Disable"],defaultValue:"At the forefront"},nodesRuntime:{id:"EasyUse.Nodes.Runtime",name:"Enable nodes runtime display",type:"boolean",defaultValue:!0},chainGetSet:{id:"EasyUse.Nodes.ChainGetSet",name:"Enable chain get node and set node with parent nodes",type:"boolean",defaultValue:!0},nodesMap:{id:"EasyUse.NodesMap.Sorting",name:"Nodes map sorting mode",tooltip:"Default automatic sorting, if set to manual, groups can be dragged and dropped and the sorting results saved.",type:"combo",options:["Auto sorting","Manual drag&drop sorting"],defaultValue:"Auto sorting"},displayNodesID:{id:"EasyUse.NodesMap.DisplayNodeID",name:"Display Node ID",type:"boolean",defaultValue:!0},onlyDisplayGroup:{id:"EasyUse.NodesMap.DisplayGroupOnly",name:"Display Groups Only",type:"boolean",defaultValue:!1},enableNodesMap:{id:"EasyUse.NodesMap.Enable",name:"Enable Nodes Map",tooltip:"You need to refresh the page to update successfully",type:"boolean",defaultValue:!0},stylesSelectorDisplay:{id:"EasyUse.StylesSelector.DisplayType",name:"Styles Selector Display Type",tooltip:"Styles Selector Display Type, if set to 'Grid', it will display as a Grid, if set to 'List', it will display as a list",type:"combo",options:["Grid","List"],defaultValue:"Grid"}};function Ue(e=100,t){return new Promise((i=>{setTimeout((()=>{i(t)}),e)}))}function Fe(e,t){if(e="number"==typeof e?e:e instanceof Date?e.getTime():parseInt(e),isNaN(e))return null;let i=new Date(e);(e=i.toString().split(/[\s\:]/g).slice(0,-2))[1]=["01","02","03","04","05","06","07","08","09","10","11","12"][i.getMonth()];let s={MM:1,dd:2,yyyy:3,hh:4,mm:5,ss:6};return t.replace(/([Mmdhs]|y{2})\1/g,(t=>e[s[t]]))}const Xe=/Mac|iPod|iPhone|iPad/.test(navigator.platform),Ze=e=>Xe?e.replace(/Ctrl/g,"⌘").replace(/Alt/g,"⌥").replace(/Shift/g,"⇧"):e;const qe=new class{constructor(){v(this,"element",fe(`div.${Ee}toast`)),v(this,"children",HTMLElement),v(this,"container",document.body),v(this,"info_icon",`mdi mdi-information ${Ee}theme`),v(this,"success_icon",`mdi mdi-check-circle ${Ee}success`),v(this,"error_icon",`mdi mdi-close-circle ${Ee}error`),v(this,"warn_icon",`mdi mdi-alert-circle ${Ee}warning`),v(this,"loading_icon","mdi mdi-rotate-right loading"),this.container.appendChild(this.element)}async show(e){let t=fe(`div.${Ee}toast-container`,[fe("div",[fe("span",[...e.icon?[fe("i",{className:e.icon})]:[],fe("span",e.content)])])]);t.setAttribute("toast-id",e.id),this.element.replaceChildren(t),this.container.appendChild(this.element),await Ue(64),t.style.marginTop=`-${t.offsetHeight}px`,await Ue(64),t.classList.add("show"),e.duration&&(await Ue(e.duration),this.hide(e.id))}async hide(e){const t=document.querySelector(`.${Ee}toast > [toast-id="${e}"]`);(null==t?void 0:t.classList.contains("show"))&&(t.classList.remove("show"),await Ue(750)),t&&t.remove()}async clearAllMessages(){let e=document.querySelector(`.${Ee}container`);e&&(e.innerHTML="")}async info(e,t=3e3,i=[]){this.show({id:"toast-info",icon:this.info_icon,content:e,duration:t})}async success(e,t=3e3){this.show({id:"toast-success",icon:this.success_icon,content:e,duration:t})}async error(e,t=3e3){this.show({id:"toast-error",icon:this.error_icon,content:e,duration:t})}async warn(e,t=3e3){this.show({id:"toast-warn",icon:this.warn_icon,content:e,duration:t})}async showLoading(e,t=0){this.show({id:"toast-loading",icon:this.loading_icon,content:e,duration:t})}async hideLoading(){this.hide("toast-loading")}},He=S("groups",{state:e=>({groups:[],nodes:[],isWatching:!1}),getters:{groups_nodes(){var e;let t=[],i=[];const s=e=>{var t;return{info:e,children:(null==(t=e.sub_groups)?void 0:t.length)>0?e.sub_groups.map(s):[],bounds:{x1:e.pos[0],y1:e.pos[1],x2:e.pos[0]+e.size[0],y2:e.pos[1]+e.size[1]}}};if(t=this.groups.map(s),(null==(e=this.nodes)?void 0:e.length)>0){const e=(e,t)=>e[0]>=t.x1&&e[0]<=t.x2&&e[1]>=t.y1&&e[1]<=t.y2,s=(t,i)=>{let s=null,n=-1;const a=(i,o)=>{i.bounds&&e(t.pos,i.bounds)&&(o>n&&(n=o,s=i),i.children.forEach((e=>a(e,o+1))))};return i.forEach((e=>a(e,0))),s};this.nodes.forEach((e=>{const n=s(e,t);n?(n.children||(n.children=[]),n.children.push(e)):i.push({info:e})}))}return[...t,...i]}},actions:{setGroups(e){let t=R(e);t.forEach((e=>{e.sub_groups=[],t.forEach((t=>{t!==e&&t.pos[0]>e.pos[0]&&t.pos[0]e.pos[1]&&t.pos[1]{t=t.filter((t=>t!==e))}))})),this.groups="Manual drag&drop sorting"==_e("EasyUse.NodesMap.Sorting")?R(t):R(t.sort(((e,t)=>e.pos[0]-t.pos[0])).sort(((e,t)=>e.pos[1]-t.pos[1])))},setNodes(e){this.nodes=R(e)},update(){var e,t,i;(((null==(e=he.extensionManager)?void 0:e.activeSidebarTab)||(null==(i=null==(t=he.extensionManager.sidebarTab)?void 0:t.activeSidebarTab)?void 0:i.id))===De||this.isWatching)&&setTimeout((e=>{this.setGroups(he.canvas.graph._groups),this.setNodes(he.canvas.graph._nodes)}),1)},watchGraph(e=!1){e&&(this.isWatching=!0);let t=this;this.update();const i=he.graph.onNodeAdded;he.graph.onNodeAdded=function(e){t.update();const s=e.onRemoved;return e.onRemoved=function(){return t.update(),null==s?void 0:s.apply(this,arguments)},null==i?void 0:i.apply(this,arguments)},he.canvas.onNodeMoved=function(e){t.update()};const s=LGraphCanvas.onNodeAlign;LGraphCanvas.onNodeAlign=function(e){return t.update(),null==s?void 0:s.apply(this,arguments)};const n=LGraphCanvas.onGroupAdd;LGraphCanvas.onGroupAdd=function(){return t.update(),null==n?void 0:n.apply(this,arguments)};const a=LGraphCanvas.onGroupAlign;LGraphCanvas.onGroupAlign=function(e){return t.update(),null==a?void 0:a.apply(this,arguments)};const o=LGraphCanvas.onMenuNodeRemove;LGraphCanvas.onMenuNodeRemove=function(e){return t.update(),null==o?void 0:o.apply(this,arguments)}},unwatchGraph(){this.isWatching=!1}}});const Ye={BOX:1,ROUND:2,CIRCLE:3,CARD:4,ARROW:5,GRID:6,HollowCircle:7};function Ke(e,t,i={}){const{shape:s=Ye.BOX,round_radius:n=LiteGraph.ROUND_RADIUS,title_height:a=LiteGraph.NODE_TITLE_HEIGHT,title_mode:o=LiteGraph.NORMAL_TITLE,color:l=LiteGraph.NODE_BOX_OUTLINE_COLOR,padding:r=6,collapsed:d=!1,thickness:u=1}=i;o===LiteGraph.TRANSPARENT_TITLE&&(t[1]-=a,t[3]+=a);const{lineWidth:A,strokeStyle:c}=e;e.lineWidth=u,e.globalAlpha=.8,e.strokeStyle=l,e.beginPath();const[p,h,m,f]=t;switch(s){case Ye.BOX:e.rect(p-r,h-r,m+2*r,f+2*r);break;case Ye.ROUND:case Ye.CARD:{const t=n+r,i=s===Ye.CARD&&d||s===Ye.ROUND?[t]:[t,2,t,2];e.roundRect(p-r,h-r,m+2*r,f+2*r,i);break}case Ye.CIRCLE:{const t=p+m/2,i=h+f/2,s=Math.max(m,f)/2+r;e.arc(t,i,s,0,2*Math.PI);break}}e.stroke(),e.lineWidth=A,e.strokeStyle=c,e.globalAlpha=1}function Je(e,t,i){var s,n;let a=0,o=null==(s=e[0])?void 0:s.naturalWidth,l=null==(n=e[0])?void 0:n.naturalHeight;const r=e.length;let d,u,A,c,p;for(let h=1;h<=r;h++){const e=Math.ceil(r/h),s=t/h,n=s/o,m=i/e/l,f=Math.min(n,m,1),g=o*f,v=l*f,y=g*v*r;y>a&&(a=y,d=g,u=v,A=h,c=e,p=h*((s-g)/2))}return{cellWidth:d,cellHeight:u,cols:A,rows:c,shiftX:p}}class Be{constructor(e,t){this.type="custom",this.name=e,this.options=t,this.value=""}draw(e,t,i,s,n){((e,t,i)=>{const s=he.canvas,n=s.graph_mouse;!s.pointer_is_down&&t.pointerDown&&(n[0]===t.pointerDown.pos[0]&&n[1]===t.pointerDown.pos[1]&&(t.imageIndex=t.pointerDown.index),t.pointerDown=null);const a=t.imgs??[];let{imageIndex:o}=t;const l=a.length;1!==l||o||(t.imageIndex=o=0);const r=t.size[0],d=t.size[1]-i-15;if(null==o){let o,u,A,c,p;const h=(e=>{if(!e.length||1===e.length)return!0;const t=e[0].naturalWidth/e[0].naturalHeight;for(let i=1;iMath.max(e,t.naturalWidth,t.naturalHeight)),0),t=[];t.length=a.length,t[0]={naturalWidth:e,naturalHeight:e},({cellWidth:o,cellHeight:u,cols:p,shiftX:A}=Je(t,r,d))}let m=!1;t.imageRects=[];for(let r=0;r{let r="#333",d="#fff",u=!1;return LiteGraph.isInsideRectangle(n[0],n[1],i+t.pos[0],a+t.pos[1],o,o)&&(s.canvas.style.cursor="pointer",s.pointer_is_down?(r="#1e90ff",u=!0):(r="#eee",d="#000")),e.fillStyle=r,e.beginPath(),e.roundRect(i,a,o,o,[4]),e.fill(),e.fillStyle=d,e.font="12px Arial",e.textAlign="center",e.fillText(l,i+15,a+20),u};if(!(l>1))return;const w=(t.imageIndex??0)+1;if(b(r-40,d+i-40,30,`${w}/${l}`)){const e=w>=l?0:w;t.pointerDown&&t.pointerDown.index===e||(t.pointerDown={index:e,pos:[...n]})}b(r-40,i+10,30,"x")&&(t.pointerDown&&null===t.pointerDown.index||(t.pointerDown={index:null,pos:[...n]}))})(e,t,s)}computeLayoutSize(e,t){return{minHeight:220,minWidth:1}}}const Qe=()=>(e,t)=>e.addCustomWidget(new Be(t.name,{serialize:!1}));function $e(e,t,i,s,n,a){return e>=i&&e=s&&t=i&&e=s&&t=e[0]&&this.y+this.height>=e[1]}containsRect(e){return this.x<=e[0]&&this.y<=e[1]&&this.x+this.width>=e[0]+e[2]&&this.y+this.height>=e[1]+e[3]}overlaps(e){return this.xe[0]&&this.y+this.height>e[1]}findContainingCorner(e,t,i){return this.isInTopLeftCorner(e,t,i)?"NW":this.isInTopRightCorner(e,t,i)?"NE":this.isInBottomLeftCorner(e,t,i)?"SW":this.isInBottomRightCorner(e,t,i)?"SE":void 0}isInTopLeftCorner(e,t,i){return $e(e,t,this.x,this.y,i,i)}isInTopRightCorner(e,t,i){return $e(e,t,this.right-i,this.y,i,i)}isInBottomLeftCorner(e,t,i){return $e(e,t,this.x,this.bottom-i,i,i)}isInBottomRightCorner(e,t,i){return $e(e,t,this.right-i,this.bottom-i,i,i)}isInTopEdge(e,t,i){return $e(e,t,this.x,this.y,this.width,i)}isInBottomEdge(e,t,i){return $e(e,t,this.x,this.bottom-i,this.width,i)}isInLeftEdge(e,t,i){return $e(e,t,this.x,this.y,i,this.height)}isInRightEdge(e,t,i){return $e(e,t,this.right-i,this.y,i,this.height)}getCentre(){return[this.centreX,this.centreY]}getArea(){return this.width*this.height}getPerimeter(){return 2*(this.width+this.height)}getTopLeft(){return[this[0],this[1]]}getBottomRight(){return[this.right,this.bottom]}getSize(){return[this[2],this[3]]}getOffsetTo([e,t]){return[e-this[0],t-this[1]]}getOffsetFrom([e,t]){return[this[0]-e,this[1]-t]}resizeTopLeft(e,t){this[2]+=this[0]-e,this[3]+=this[1]-t,this[0]=e,this[1]=t}resizeBottomLeft(e,t){this[2]+=this[0]-e,this[3]=t-this[1],this[0]=e}resizeTopRight(e,t){this[2]=e-this[0],this[3]+=this[1]-t,this[1]=t}resizeBottomRight(e,t){this[2]=e-this[0],this[3]=t-this[1]}setWidthRightAnchored(e){const t=this[2];this[2]=e,this[0]+=t-e}setHeightBottomAnchored(e){const t=this[3];this[3]=e,this[1]+=t-e}toArray(){return this.export()}export(){return[this[0],this[1],this[2],this[3]]}_drawDebug(e,t="red"){const{strokeStyle:i,lineWidth:s}=e;try{e.strokeStyle=t,e.lineWidth=.5,e.beginPath(),e.strokeRect(this[0],this[1],this[2],this[3])}finally{e.strokeStyle=i,e.lineWidth=s}}}h=new WeakMap,m=new WeakMap;const tt=(e,...t)=>function(...i){null==e||e.call(this,...i),t.forEach((e=>e.call(this,...i)))},it=(e,...t)=>function(...i){try{t.forEach((e=>null==e?void 0:e.call(this,...i)))}catch(s){null==e||e.call(this,...i,s)}};let st=null;const nt=new Image;nt.src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' width='16' height='16'%3E%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='white' stroke-linecap='round' stroke-width='1.3' d='M9.18613 3.09999H6.81377M9.18613 12.9H7.55288c-3.08678 0-5.35171-2.99581-4.60305-6.08843l.3054-1.26158M14.7486 2.1721l-.5931 2.45c-.132.54533-.6065.92789-1.1508.92789h-2.2993c-.77173 0-1.33797-.74895-1.1508-1.5221l.5931-2.45c.132-.54533.6065-.9279 1.1508-.9279h2.2993c.7717 0 1.3379.74896 1.1508 1.52211Zm-8.3033 0-.59309 2.45c-.13201.54533-.60646.92789-1.15076.92789H2.4021c-.7717 0-1.33793-.74895-1.15077-1.5221l.59309-2.45c.13201-.54533.60647-.9279 1.15077-.9279h2.29935c.77169 0 1.33792.74896 1.15076 1.52211Zm8.3033 9.8-.5931 2.45c-.132.5453-.6065.9279-1.1508.9279h-2.2993c-.77173 0-1.33797-.749-1.1508-1.5221l.5931-2.45c.132-.5453.6065-.9279 1.1508-.9279h2.2993c.7717 0 1.3379.7489 1.1508 1.5221Z'/%3E%3C/svg%3E %3C/svg%3E";const at=["custom_obsidian","custom_obsidian_dark","custom_milk_white","obsidian_dark","obsidian","milk_white"],ot={"easy positive":"green","easy negative":"red","easy promptList":"cyan","easy promptLine":"cyan","easy promptConcat":"cyan","easy promptReplace":"cyan","easy forLoopStart":"blue","easy forLoopEnd":"blue","easy whileLoopStart":"blue","easy whileLoopEnd":"blue","easy loadImagesForLoop":"blue"};let lt=LGraphCanvas.node_colors,rt=null,dt=null,ut=null,At=new et;for(let Zn in We)ct=We[Zn],he.ui.settings.settingsLookup[ct.id]||he.ui.settings.addSetting(ct);var ct;function pt(e,t,i,s,n,a){var o,l,r;t.strokeStyle=s,t.fillStyle=n;const d=LiteGraph.NODE_TITLE_HEIGHT,{low_quality:u}=this,{collapsed:A}=e.flags,c=e.renderingShape,{title_mode:p}=e.constructor,h=p!=LiteGraph.TRANSPARENT_TITLE&&p!=LiteGraph.NO_TITLE,m=At;m.set(e.boundingRect),m[0]-=e.pos[0],m[1]-=e.pos[1];let f=t.globalAlpha;if(t.lineWidth=1,t.beginPath(),c==LiteGraph.BOX_SHAPE||u?t.fillRect(m[0],m[1],m[2],m[3]):c==LiteGraph.ROUND_SHAPE||c==LiteGraph.CARD_SHAPE?t.roundRect(m[0],m[1],m[2],m[3],c==LiteGraph.CARD_SHAPE?[this.round_radius,this.round_radius,0,0]:[this.round_radius]):c==LiteGraph.CIRCLE_SHAPE&&t.arc(.5*i[0],.5*i[1],.5*i[0],0,2*Math.PI),t.strokeStyle=LiteGraph.WIDGET_OUTLINE_COLOR,t.stroke(),t.strokeStyle=s,t.fill(),e.has_errors&&!LiteGraph.use_legacy_node_error_indicator&&Ke(t,m,{shape:c,title_mode:p,title_height:d,padding:12,color:LiteGraph.NODE_ERROR_COLOUR,collapsed:A,thickness:10}),!A&&h&&(t.shadowColor="transparent",t.fillStyle="rgba(0,0,0,0.2)",t.fillRect(0,-1,m[2],2)),t.shadowColor="transparent",e.onDrawBackground&&e.onDrawBackground(t,this,this.canvas,this.graph_mouse),h||p==LiteGraph.TRANSPARENT_TITLE){const s="dark"==function(e){let t=e.replace("#","");return i=parseInt(t.substring(0,2),16),s=parseInt(t.substring(2,4),16),n=parseInt(t.substring(4,6),16),.299*i+.587*s+.114*n>127.5?"light":"dark";var i,s,n}((null==e?void 0:e.color)||"#ffffff");e.drawTitleBarBackground(t,{scale:this.ds.scale,low_quality:u});let n=!1;LiteGraph.node_box_coloured_by_mode&&LiteGraph.NODE_MODES_COLORS[e.mode]&&(n=LiteGraph.NODE_MODES_COLORS[e.mode]),LiteGraph.node_box_coloured_when_on&&(n=e.action_triggered?"#FFF":e.execute_triggered?"#AAA":n);let l=10;if(e.onDrawTitleBox)e.onDrawTitleBox(t,d,i,this.ds.scale);else if([LiteGraph.ROUND_SHAPE,LiteGraph.CIRCLE_SHAPE,LiteGraph.CARD_SHAPE].includes(c))if(u&&(t.fillStyle="black",t.beginPath(),t.arc(.5*d,-.5*d,.5*l+1,0,2*Math.PI),t.fill()),e.subgraph&&!e.skip_subgraph_button)t.save(),t.fillStyle="#3b82f6",t.beginPath(),t.roundRect(6,-24.5,22,20,5),t.fill(),u||(t.translate(25,23),t.scale(-1.5,1.5),t.drawImage(nt,0,-d,l,l)),t.restore();else{const i=s?"#ffffff":LiteGraph.NODE_SELECTED_TITLE_COLOR,o=s?"#eeeeee":e.boxcolor||n||LiteGraph.NODE_DEFAULT_BOXCOLOR;t.fillStyle=a?i:o,t.beginPath(),t.fillRect(10,0-1.05*l-1,1.1*l,.125*l),t.fillRect(10,0-1.45*l-1,1.1*l,.125*l),t.fillRect(10,0-1.85*l-1,1.1*l,.125*l)}else u&&(t.fillStyle="black",t.fillRect(.5*(d-l)-1,-.5*(d+l)-1,l+2,l+2)),t.fillStyle=e.renderingBoxColor,t.fillRect(.5*(d-l),-.5*(d+l),l,l);if(t.globalAlpha=f,e.onDrawTitleText&&e.onDrawTitleText(t,d,i,this.ds.scale,this.title_text_font,a),!u){t.font=this.title_text_font;const i=e.getTitle()??`❌ ${e.type}`,n=String(i)+(e.pinned?"📌":"");n&&(t.fillStyle=a?s?"#ffffff":LiteGraph.NODE_SELECTED_TITLE_COLOR:s?"#ffffff":e.constructor.title_text_color||this.node_title_color,e.flags.collapsed?(t.textAlign="left",t.measureText(n),t.fillText(n.substr(0,20),d,LiteGraph.NODE_TITLE_TEXT_Y-d),t.textAlign="left"):(t.textAlign="left",t.fillText(n,d,LiteGraph.NODE_TITLE_TEXT_Y-d)))}null==(o=e.onDrawTitle)||o.call(e,t)}if(null==e?void 0:e.strokeStyles){for(const i of Object.values(e.strokeStyles)){const s=i.call(e);s&&Ke(t,m,{shape:c,title_height:d,title_mode:p,collapsed:A,...s})}null==e||e.drawProgressBar(t)}else if(a){null==(l=e.onBounding)||l.call(e,m),p==LiteGraph.TRANSPARENT_TITLE&&(m[1]-=d,m[3]+=d),t.lineWidth=2,t.globalAlpha=.8,t.beginPath();let n=0,a=0,o=1;c==LiteGraph.BOX_SHAPE?t.rect(n+m[0],n+m[1],a+m[2],a+m[3]):c==LiteGraph.ROUND_SHAPE||c==LiteGraph.CARD_SHAPE&&e.flags.collapsed?t.roundRect(n+m[0],n+m[1],a+m[2],a+m[3],[this.round_radius*o]):c==LiteGraph.CARD_SHAPE?t.roundRect(n+m[0],n+m[1],a+m[2],a+m[3],[this.round_radius*o,o,this.round_radius*o,o]):c==LiteGraph.CIRCLE_SHAPE&&t.arc(.5*i[0],.5*i[1],.5*i[0]+6,0,2*Math.PI),t.strokeStyle=LiteGraph.NODE_BOX_OUTLINE_COLOR,t.stroke(),t.strokeStyle=s,t.globalAlpha=1}null==(r=e.drawProgressBar)||r.call(e,t),e.execute_triggered>0&&e.execute_triggered--,e.action_triggered>0&&e.action_triggered--}function ht(e,t,i,s,n){return new LiteGraph.ContextMenu(LiteGraph.NODE_MODES,{event:i,callback:function(e){if(!n)return;var t=Object.values(LiteGraph.NODE_MODES).indexOf(e),i=function(e){t>=0&&LiteGraph.NODE_MODES[t]?e.changeMode(t):e.changeMode(LiteGraph.ALWAYS),st||(st=He()),st.update()},s=LGraphCanvas.active_canvas;if(!s.selected_nodes||Object.keys(s.selected_nodes).length<=1)i(n);else for(var a in s.selected_nodes)i(s.selected_nodes[a])},parentMenu:s,node:n}),!1}function mt(e,t,i,s,n){if(!n)throw"no node for color";var a=[];for(var o in a.push({value:null,content:"No color"}),LGraphCanvas.node_colors){var l=LGraphCanvas.node_colors[o];e={value:o,content:""+o+""};a.push(e)}return new LiteGraph.ContextMenu(a,{event:i,callback:function(e){if(!n)return;var t=e.value?LGraphCanvas.node_colors[e.value]:null,i=function(e){t?e.constructor===LiteGraph.LGraphGroup?e.color=t.groupcolor:(e.color=t.color,e.bgcolor=t.bgcolor):(delete e.color,delete e.bgcolor),st||(st=He()),st.update()},s=LGraphCanvas.active_canvas;if(!s.selected_nodes||Object.keys(s.selected_nodes).length<=1)i(n);else for(var a in s.selected_nodes)i(s.selected_nodes[a]);n.setDirtyCanvas(!0,!0)},parentMenu:s,node:n}),!1}function ft(e,t,i,s,n){var a=e.property||"title",o=n[a],l=document.createElement("div");l.is_modified=!1,l.className="graphdialog",l.innerHTML="",l.close=function(){l.parentNode&&l.parentNode.removeChild(l)},l.querySelector(".name").innerText=a;var r=l.querySelector(".value");r&&(r.value=o,r.addEventListener("blur",(function(e){this.focus()})),r.addEventListener("keydown",(function(e){if(l.is_modified=!0,27==e.keyCode)l.close();else if(13==e.keyCode)h();else if(13!=e.keyCode&&"textarea"!=e.target.localName)return;e.preventDefault(),e.stopPropagation()})));var d=LGraphCanvas.active_canvas.canvas,u=d.getBoundingClientRect(),A=-20,c=-20;u&&(A-=u.left,c-=u.top),event?(l.style.left=event.clientX+A+"px",l.style.top=event.clientY+c+"px"):(l.style.left=.5*d.width+A+"px",l.style.top=.5*d.height+c+"px"),l.querySelector("button").addEventListener("click",h),d.parentNode.appendChild(l),r&&r.focus();var p=null;function h(){r&&function(t){"Number"==e.type?t=Number(t):"Boolean"==e.type&&(t=Boolean(t));n[a]=t,l.parentNode&&l.parentNode.removeChild(l);n.setDirtyCanvas(!0,!0),st||(st=He());st.update()}(r.value)}l.addEventListener("mouseleave",(function(e){LiteGraph.dialog_close_on_mouse_leave&&!l.is_modified&&LiteGraph.dialog_close_on_mouse_leave&&(p=setTimeout(l.close,LiteGraph.dialog_close_on_mouse_leave_delay))})),l.addEventListener("mouseenter",(function(e){LiteGraph.dialog_close_on_mouse_leave&&p&&clearTimeout(p)}))}(e=>{try{he.registerExtension(e)}catch(t){}})({name:"Comfy.EasyUse.UI",init(){var e,t;const i="Comfy.CustomColorPalettes",s="Comfy.Settings.Comfy.CustomColorPalettes";if(rt||(rt=_e(i,s)),dt||(dt=_e("Comfy.ColorPalette","Comfy.Settings.Comfy.ColorPalette")||"dark"),(!(null==(e=null==rt?void 0:rt.obsidian)?void 0:e.version)||rt.obsidian.version{(null==e?void 0:e.value)&&(null==e?void 0:e.oldValue)&&(await Ue(1),Object.assign(he.canvas.default_connection_color_byType,Ce),Object.assign(LGraphCanvas.link_type_colors,Ce)),"custom_milk_white"==e.value&&document.body.classList.remove(Ne)})),setTimeout((e=>gt(_e("Comfy.UseNewMenu")||"Disabled")),1);const t=null==(e=he.ui.settings.settingsLookup)?void 0:e["Comfy.UseNewMenu"];t&&(t.onChange=e=>gt(e)),me.addEventListener("easyuse-toast",(e=>{const t=e.detail.content,i=e.detail.type,s=e.detail.duration;i?qe.show({id:`toast-${i}`,icon:qe[i+"_icon"],content:`${t}`,duration:s||3e3}):qe.info(t,s)}))},async nodeCreated(e){if(ot.hasOwnProperty(e.comfyClass)){const t=ot[e.comfyClass],i=lt[t];if(!i)return;!e.bgcolor&&i.bgcolor&&(e.bgcolor=i.bgcolor),!e.color&&i.color&&(e.color=i.color)}}});const gt=e=>{var t;const i=(null==(t=document.getElementById("crystools-root"))?void 0:t.children)||null,s=_e("Comfy.Workflow.WorkflowTabsPosition",null);if((null==i?void 0:i.length)>0&&s)if(ut||(ut=document.getElementById("MonitorUI")),"Disabled"==e){document.getElementById("crystools-root").appendChild(ut)}else{let e=document.getElementById("crystools-root-easyuse");if(e)e.appendChild(ut);else{const e=document.getElementsByClassName("comfyui-menu-right");e.length>0&&e[0].before(fe("div",{id:"crystools-root-easyuse"},ut))}}};let vt={};const yt=(e,t)=>e.widgets.find((e=>e.name===t)),bt=(e,t,i=!1,s="")=>{var n;if(!t||((e,t,i)=>!!e.inputs&&e.inputs.some((e=>e.name===t&&e.link&&!i)))(e,t.name,i))return;vt[t.name]||(vt[t.name]={origType:t.type,origComputeSize:t.computeSize});const a=e.size;t.hidden=!i,t.type=i?vt[t.name].origType:"easyHidden"+s,t.computeSize=i?vt[t.name].origComputeSize:()=>[0,-4],null==(n=t.linkedWidgets)||n.forEach((s=>bt(e,s,":"+t.name,i)));const o=i?Math.max(e.computeSize()[1],a[1]):e.size[1];e.setSize([e.size[0],o])},wt=(e,t=0)=>{var i,s;if(e)return(null==(i=e.widgets)?void 0:i[t])?e.widgets[t].value:e.widgets_values?null==(s=e.widgets_values)?void 0:s[t]:void 0},_t=e=>e.setSize([e.size[0],e.computeSize()[1]]),St=(e,t)=>graph.getNodeById(e),Lt=e=>{var t;try{return Object.values(null==(t=null==graph?void 0:graph.list_of_graphcanvas[0])?void 0:t.selected_nodes)}catch(i){return[]}};function xt(e,t,i){return e+(s=i,(.5-.5*Math.cos(Math.PI*s))*(t-e));var s}const kt=(e,t=!0)=>{var i,s;const n=(null==(s=null==(i=e.graph)?void 0:i.list_of_graphcanvas)?void 0:s[0])||null;if(!n)return;const[a,o]=e.pos,[l,r]=e.size;(([e,t],i)=>{const s=i.ds,n=document.body.clientWidth,a=document.body.clientHeight,o=s.scale,l=.5*n/o-e,r=.5*a/o-t,d=Date.now()+250,u=s.offset[0],A=s.offset[1],c=()=>{const e=d-Date.now();if(!(Date.now(){const t=St(e);t&&kt(t)},Nt=(e,t=(()=>graph.links??[])())=>t[e],Ct=e=>e.toLowerCase().replace(/_./g,(e=>e.replace("_","").toUpperCase())),It=e=>"easy getNode"===e.type,Tt=e=>"easy setNode"===e.type,Ot=e=>It(e)||Tt(e),Mt=(e=(()=>graph._nodes??[])())=>e.filter((e=>Ot(e)));let Dt={},Rt={};const Pt=(e,t,i=0)=>{e.widgets_values||(e.widgets_values=[]),e.widgets_values[i]=t,e.widgets[i].value=t},Gt=e=>graph.add(e),zt=e=>graph.remove(e),Vt=(e,t=0)=>{var i,s;if("Reroute"!==e.type)return[e,t];const n=e,a=null==(s=null==(i=n.inputs)?void 0:i[0])?void 0:s.link;if(!a)return[n,t];const o=Nt(a);if(!o)return[n,t];const l=St(o.origin_id);return l?(setTimeout((()=>{zt(n)})),Vt(l,o.origin_slot)):[n,t]},jt=e=>{var t,i,s;if("Reroute"!==e.type)return e;const n=e,a=null==(i=null==(t=n.outputs)?void 0:t[0])?void 0:i.links;if(!a)return n;const o=a[0];if(!o)return n;const l=Nt(o);if(!l)return n;const r=St(l.target_id);return r?(1===(null==(s=n.outputs[0].links)?void 0:s.length)&&setTimeout((()=>{zt(n)})),jt(r)):n},Wt=(e,t="width")=>{var i;const s=e[0],n="width"==t?0:1,a=null==(i=s.size)?void 0:i[n];a&&(e.forEach((e=>{e.size[n]=a})),LGraphCanvas.active_canvas.setDirty(!0,!0))},Ut=(e,t="horizontal")=>{if(e.length<3)return;const i="horizontal"===t?0:1;e.sort(((e,t)=>e.pos[i]-t.pos[i]));const s=Math.min(...e.map((e=>e.pos[i]))),n=(Math.max(...e.map((e=>e.pos[i]+e.size[i])))-s-e.reduce(((e,t)=>e+t.size[i]),0))/(e.length-1);let a=s;e.forEach((e=>{e.pos[i]=a,a+=e.size[i]+n})),LGraphCanvas.active_canvas.setDirty(!0,!0)},Ft="$$canvas-image-preview";const Xt="$$comfy_animation_preview";const Zt="video_upload",qt=(e,t)=>{if(!e)return!1;const i=(e=>{var t;return null==(t=e.constructor)?void 0:t.nodeData})(e);if(!(null==i?void 0:i.input))return!1;return(e=>{if(!e)return[];const{required:t,optional:i}=e,s=[];if(t)for(const n of Object.values(t))s.push(n);if(i)for(const n of Object.values(i))s.push(n);return s})(i.input).some((e=>{var i;return null==(i=null==e?void 0:e[1])?void 0:i[t]}))};const Ht=e=>null==e?void 0:e.id.toString(),Yt=e=>he.nodeOutputs[Ht(e)],Kt=e=>he.nodePreviewImages[Ht(e)];function Jt(e){var t;const i=Kt(e),s=Yt(e);if((null==i?void 0:i.length)&&!e.isOutputFinal)return i;if(!(null==(t=null==s?void 0:s.images)?void 0:t.length))return(null==i?void 0:i.length)?i:void 0;const n=he.getRandParam(),a=(e=>e.animatedImages?"":he.getPreviewFormatParam())(e);return s.images.map((e=>{const t=new URLSearchParams(e);return me.apiURL(`/view?${t}${a}${n}`)}))}const Bt="video-preview",Qt={playsInline:!0,controls:!0,loop:!0},$t=(e,t)=>{const{loadElement:i,onLoaded:s,onFailedLoading:n}=t,a=async(e,t=0)=>{const s=await Promise.race([i(e),(n=8192,new Promise((e=>setTimeout((()=>e(null)),n))))]);var n;return null===s&&t<1?a(e,t+1):s};return{showPreview:function(){var i;if(e.isLoading)return;const o=(null==(i=e.videos)?void 0:i.length)>0?e.videos.map((e=>{return t=e,me.apiURL(`/view?filename=${encodeURIComponent(t.filename)}&type=${t.type}&subfolder=${t.subfolder}&rand=${Math.random()}`);var t})):Jt(e);(null==o?void 0:o.length)&&((null==t?void 0:t.block)&&(e.isLoading=!0),(async e=>Promise.all(e.map((e=>a(e)))))(o).then((e=>{const t=e.filter((e=>null!==e));t.length&&(null==s||s(t))})).catch((()=>{null==n||n()})).finally((()=>{e.isLoading=!1})))}}},ei=e=>{e.previewMediaType="image";return $t(e,{loadElement:e=>new Promise((t=>{const i=new Image;i.onload=()=>t(i),i.onerror=()=>t(null),i.src=e})),onLoaded:t=>{e.imageIndex=null,e.imgs=t},onFailedLoading:()=>{e.imgs=void 0}})},ti=e=>{e.previewMediaType="video";return $t(e,{loadElement:e=>new Promise((t=>{const i=document.createElement("video");Object.assign(i,Qt),i.onloadeddata=()=>t(i),i.onerror=()=>t(null),i.src=e})),onLoaded:t=>{const i=t[0];var s,n;i&&(e.videoContainer||(e.imgs&&(e.imgs=void 0),e.videoContainer=(()=>{const e=document.createElement("div");return e.classList.add("comfy-img-preview"),e})(),e.videoContainer.style.pointerEvents="auto",s=e.videoContainer,(null==(n=e.widgets)?void 0:n.some((e=>e.name===Bt)))||e.addDOMWidget(Bt,"video",s,{hideOnZoom:!1,serialize:!1})),e.videoContainer.replaceChildren(i),e.imageOffset=64)},onFailedLoading:()=>{e.videoContainer=void 0}})};function ii(e,t){var i;if(e.flags.collapsed)return;const{showCanvasImagePreview:s,removeCanvasImagePreview:n}=function(){const e=Qe();return{showCanvasImagePreview:function(t){var i;(null==(i=t.imgs)?void 0:i.length)&&t.widgets&&(t.widgets.find((e=>e.name===Ft))||e(t,{type:"IMAGE_PREVIEW",name:Ft}))},removeCanvasImagePreview:function(e){var t,i;if(!e.widgets)return;const s=e.widgets.findIndex((e=>e.name===Ft));s>-1&&(null==(i=(t=e.widgets[s]).onRemove)||i.call(t),e.widgets.splice(s,1))}}}(),{showVideoPreview:a,removeVideoPreview:o}={showVideoPreview:function(e){var t;(null==(t=e.video)?void 0:t.length)&&e.widgets&&e.widgets.findIndex((e=>e.name===Xt))},removeVideoPreview:function(e){var t,i;if(!e.widgets)return;const s=e.widgets.findIndex((e=>"video-preview"===e.name));s>-1&&(null==(i=(t=e.widgets[s]).onRemove)||i.call(t),e.widgets.splice(s,1))}},l=Yt(e),r=Kt(e),d=l&&(e.images!==l.images||e.videos!==l.videos),u=r&&e.preview!==r;if(u&&(e.isOutputFinal=!1,e.isTwiceRendered&&(e.isTwiceRendered=!1),e.preview=r),d&&(e.isOutputFinal=!0,l.images&&(e.images=l.images),l.videos&&(e.videos=l.videos)),d||u){e.animatedImages=null==l?void 0:l.animated;const t=e.animatedImages&&l.images.some((e=>{var t;return null==(t=e.filename)?void 0:t.includes("webp")})),i=e.animatedImages&&!t||!!(A=this)&&(!!A.videoContainer||!!A.widgets&&qt(A,Zt));d&&(null==l?void 0:l.videos)||i?ti(e).showPreview():ei(e).showPreview()}var A;e.id!=he.runningNodeId&&!e.isTwiceRendered&&e.isOutputFinal&&(e.videos?ti(e.videos):ei(e).showPreview(),e.isTwiceRendered=!0),(null==(i=e.imgs)?void 0:i.length)&&(e.animatedImages||d&&(null==l?void 0:l.videos)?(n(e),a(e)):(o(e),s(e)))}const si=["rescale_after_model","rescale","lora_name","upscale_method","image_output","add_noise","info","sampler_name","ckpt_B_name","ckpt_C_name","save_model","refiner_ckpt_name","num_loras","num_controlnet","mode","toggle","resolution","ratio","target_parameter","input_count","replace_count","downscale_mode","range_mode","text_combine_mode","input_mode","lora_count","ckpt_count","conditioning_mode","preset","use_tiled","use_batch","num_embeds","easing_mode","guider","scheduler","inpaint_mode","t5_type","rem_mode","encode","method"],ni=["LIGHT - SD1.5 only (low strength)","STANDARD (medium strength)","VIT-G (medium strength)","REGULAR - FLUX and SD3.5 only (high strength)","PLUS (high strength)","PLUS (kolors genernal)","PLUS FACE (portraits)","FULL FACE - SD1.5 only (portraits stronger)","COMPOSITION"],ai=["FACEID","FACEID PLUS - SD1.5 only","FACEID PLUS V2","FACEID PLUS KOLORS","FACEID PORTRAIT (style transfer)","FACEID PORTRAIT UNNORM - SDXL only (strong)"],oi=["easy seed","easy latentNoisy","easy wildcards","easy preSampling","easy preSamplingAdvanced","easy preSamplingNoiseIn","easy preSamplingSdTurbo","easy preSamplingCascade","easy preSamplingDynamicCFG","easy preSamplingLayerDiffusion","easy fullkSampler","easy fullCascadeKSampler"],li=["easy fullLoader","easy a1111Loader","easy comfyLoader","easy hyditLoader","easy pixArtLoader"],ri=["easy fullkSampler","easy kSampler","easy kSamplerCustom","easy kSamplerTiled","easy kSamplerLayerDiffusion","easy kSamplerInpainting","easy kSamplerDownscaleUnet","easy kSamplerSDTurbo","easy fullCascadeKSampler","easy cascadeKSampler"],di=["easy imageSize","easy imageSizeBySide","easy imageSizeByLongerSide","easy imageSizeShow","easy imageRatio","easy imagePixelPerfect"],ui=["easy forLoopStart","easy forLoopEnd","easy whileLoopStart","easy whileLoopEnd"],Ai=["easy anythingIndexSwitch","easy imageIndexSwitch","easy textIndexSwitch","easy conditioningIndexSwitch"],ci=["easy anythingInversedSwitch"],pi=["easy loadImagesForLoop",...ui,...Ai,...ci],hi={"easy anythingInversedSwitch":"out","easy anythingIndexSwitch":"value","easy imageIndexSwitch":"image","easy textIndexSwitch":"text","easy conditioningIndexSwitch":"cond"};function mi(e,t){var i;const s=e.comfyClass;let n=t.value;switch(t.name){case"range_mode":bt(e,yt(e,"step"),"step"==n),bt(e,yt(e,"num_steps"),"num_steps"==n),_t(e);break;case"text_combine_mode":bt(e,yt(e,"replace_text"),"replace"==n);break;case"lora_name":["lora_model_strength","lora_clip_strength"].map((t=>bt(e,yt(e,t),"None"!==n)));break;case"resolution":"自定义 x 自定义"===n&&(t.value="width x height (custom)"),["empty_latent_width","empty_latent_height","width","height"].map((t=>bt(e,yt(e,t),"width x height (custom)"===n)));break;case"ratio":["empty_latent_width","empty_latent_height"].map((t=>bt(e,yt(e,t),"custom"===n)));break;case"num_loras":var a=n+1,o=null==(i=yt(e,"mode"))?void 0:i.value;requestAnimationFrame((t=>{for(let i=0;ibt(e,yt(e,t),"simple"!==o)));for(let i=a;i<99;i++)["lora_"+i+"_name","lora_"+i+"_strength","lora_"+i+"_model_strength","lora_"+i+"_clip_strength"].map((t=>bt(e,yt(e,t),!1)));_t(e)}));break;case"num_controlnet":a=n+1,o=yt(e,"mode").value;for(let t=0;tbt(e,yt(e,t),!0))),["start_percent_"+t,"end_percent_"+t].map((t=>bt(e,yt(e,t),"simple"!==o)));for(let t=a;t<21;t++)["controlnet_"+t,"controlnet_"+t+"_strength","scale_soft_weight_"+t,"start_percent_"+t,"end_percent_"+t].map((t=>bt(e,yt(e,t),!1)));_t(e);break;case"mode":switch(null==e?void 0:e.comfyClass){case"easy loraStack":a=yt(e,"num_loras").value+1,o=n;for(let t=0;tbt(e,yt(e,t),"simple"!==o)));_t(e);break;case"easy controlnetStack":a=yt(e,"num_controlnet").value+1,o=n;for(let t=0;tbt(e,yt(e,t),"simple"!==o)));_t(e);break;case"easy icLightApply":o=n;["lighting","remove_bg"].map((t=>bt(e,yt(e,t),"Foreground"===o))),bt(e,yt(e,"source"),"Foreground"!==o),_t(e)}break;case"toggle":t.type="toggle",t.options={on:"Enabled",off:"Disabled"};break;case"t5_type":["clip_name","padding"].map((t=>bt(e,yt(e,t),"sd3"==n))),["t5_name","device","dtype"].map((t=>bt(e,yt(e,t),"t5v11"==n))),_t(e);break;case"preset":if("FLUX.1-dev"==n&&(t.value="REGULAR - FLUX and SD3.5 only (high strength)"),ni.includes(n)){let t=yt(e,"use_tiled");bt(e,yt(e,"lora_strength")),bt(e,yt(e,"provider"),!!["REGULAR - FLUX and SD3.5 only (high strength)"].includes(n)),bt(e,yt(e,"weight_faceidv2")),bt(e,yt(e,"weight_kolors")),bt(e,yt(e,"use_tiled"),!0),bt(e,yt(e,"sharpening"),t&&t.value)}else ai.includes(n)&&(bt(e,yt(e,"weight_faceidv2"),!!["FACEID PLUS V2","FACEID PLUS KOLORS"].includes(n)),bt(e,yt(e,"weight_kolors"),!!["FACEID PLUS KOLORS"].includes(t.value)),["FACEID PLUS KOLORS","FACEID PORTRAIT (style transfer)","FACEID PORTRAIT UNNORM - SDXL only (strong)"].includes(n)?bt(e,yt(e,"lora_strength"),!1):bt(e,yt(e,"lora_strength"),!0),bt(e,yt(e,"provider"),!0),bt(e,yt(e,"use_tiled")),bt(e,yt(e,"sharpening")));_t(e);break;case"use_tiled":bt(e,yt(e,"sharpening"),!!n),_t(e);break;case"num_embeds":a=n+1;for(let t=0;tbt(e,yt(e,t),!1)));break;case"brushnet_random":case"brushnet_segmentation":["dtype","scale","start_at","end_at"].map((t=>bt(e,yt(e,t),!0))),["fitting","function"].map((t=>bt(e,yt(e,t),!1)));break;case"powerpaint":["dtype","fitting","function","scale","start_at","end_at"].map((t=>bt(e,yt(e,t),!0)))}_t(e);break;case"encode":bt(e,yt(e,"noise_mask"),!!["inpaint_model_conditioning","different_diffusion"].includes(n)),_t(e);break;case"image_output":bt(e,yt(e,"link_id"),!!["Sender","Sender&Save"].includes(n)),bt(e,yt(e,"decode_vae_name"),!!["Hide","Hide&Save"].includes(n)),["save_prefix","output_path","embed_workflow","number_padding","overwrite_existing"].map((t=>bt(e,yt(e,t),!!["Save","Hide&Save","Sender&Save"].includes(n))));break;case"add_noise":var l=yt(e,"control_before_generate"),r=yt(e,"control_after_generate")||l;"disable"===n?(bt(e,yt(e,"seed")),r&&(r.last_value=r.value,r.value="fixed",bt(e,r))):("enable"===n&&(t.value="enable (CPU)"),bt(e,yt(e,"seed"),!0),r&&((null==r?void 0:r.last_value)&&(r.value=r.last_value),bt(e,r,!0))),_t(e);break;case"guider":switch(n){case"Basic":case"IP2P+Basic":["cfg_negative"].map((t=>bt(e,yt(e,t))));break;case"CFG":case"IP2P+CFG":bt(e,yt(e,"cfg"),!0),bt(e,yt(e,"cfg_negative"));break;case"DualCFG":case"IP2P+DualCFG":["cfg","cfg_negative"].map((t=>bt(e,yt(e,t),!0)))}_t(e);break;case"scheduler":"easy preSamplingCustom"==s&&(["karrasADV","exponentialADV","polyExponential"].includes(n)?(["sigma_max","sigma_min"].map((t=>bt(e,yt(e,t),!0))),["denoise","beta_d","beta_min","eps_s","coeff"].map((t=>bt(e,yt(e,t))),!1),bt(e,yt(e,"rho"),"exponentialADV"!=n)):"vp"==n?(["sigma_max","sigma_min","denoise","rho","coeff"].map((t=>bt(e,yt(e,t)))),["beta_d","beta_min","eps_s"].map((t=>bt(e,yt(e,t),!0)))):(["sigma_max","sigma_min","beta_d","beta_min","eps_s","rho"].map((t=>bt(e,yt(e,t)))),bt(e,yt(e,"coeff"),"gits"==n),bt(e,yt(e,"denoise"),!0)),_t(e));break;case"conditioning_mode":["replace","concat","combine"].includes(n)?["average_strength","old_cond_start","old_cond_end","new_cond_start","new_cond_end"].map((t=>bt(e,yt(e,t)))):"average"==n?(bt(e,yt(e,"average_strength"),!0),["old_cond_start","old_cond_end","new_cond_start","new_cond_end"].map((t=>bt(e,yt(e,t),!1)))):"timestep"==n&&(["average_strength"].map((t=>bt(e,yt(e,t),!1))),["old_cond_start","old_cond_end","new_cond_start","new_cond_end"].map((t=>bt(e,yt(e,t),!0))));break;case"rescale":yt(e,"rescale_after_model").value,bt(e,yt(e,"width"),"to Width/Height"===n),bt(e,yt(e,"height"),"to Width/Height"===n),bt(e,yt(e,"percent"),"by percentage"===n),bt(e,yt(e,"longer_side"),"to longer side - maintain aspect"===n),_t(e);break;case"upscale_method":["factor","crop"].map((t=>bt(e,yt(e,t),"None"!==n)));break;case"target_parameter":switch(s){case"easy XYInputs: Steps":["first_step","last_step"].map((t=>bt(e,yt(e,t),"steps"==n))),["first_start_step","last_start_step"].map((t=>bt(e,yt(e,t),"start_at_step"==n))),["first_end_step","last_end_step"].map((t=>bt(e,yt(e,t),"end_at_step"==n)));break;case"easy XYInputs: Sampler/Scheduler":let t=yt(e,"input_count").value+1;for(let i=0;ibt(e,yt(e,t),"strength"==n))),["first_start_percent","last_start_percent"].map((t=>bt(e,yt(e,t),"start_percent"==n))),["first_end_percent","last_end_percent"].map((t=>bt(e,yt(e,t),"end_percent"==n))),["strength","start_percent","end_percent"].map((t=>bt(e,yt(e,t),n!=t))),_t(e)}case"replace_count":a=n+1;for(let t=0;tbt(e,yt(e,t),!d)));for(let t=a;t<11;t++)["lora_name_"+t,"model_str_"+t,"clip_str_"+t].map((t=>bt(e,yt(e,t),!1)));_t(e);break;case"ckpt_count":a=n+1;var u=-1!=yt(e,"input_mode").value.indexOf("ClipSkip"),A=-1!=yt(e,"input_mode").value.indexOf("VAE");for(let t=0;tbt(e,yt(e,t),!1)));_t(e);break;case"input_count":a=n+1;var c=yt(e,"target_parameter").value;for(let t=0;tbt(e,yt(e,i),!!t)));["model_strength","clip_strength"].map((i=>bt(e,yt(e,i),!t)));break;case"easy XYInputs: Checkpoint":a=yt(e,"ckpt_count").value+1,u=-1!=yt(e,"input_mode").value.indexOf("ClipSkip"),A=-1!=yt(e,"input_mode").value.indexOf("VAE");for(let i=0;ie.name===t));if(-1!==e){for(let t=e;t{var e;const t=this.computeSize();t[0]"info"===e.name));if(-1!==e&&this.widgets[e]){this.widgets[e].value=t}}requestAnimationFrame((()=>{var e;const t=this.computeSize();t[0]"prompt"==e.name));this.addWidget("button","get values from COMBO link","",(()=>{var t,s;const n=(null==(s=null==(t=this.outputs[1])?void 0:t.links)?void 0:s.length)>0?this.outputs[1].links[0]:null,a=i.graph._nodes.find((e=>{var t;return null==(t=e.inputs)?void 0:t.find((e=>e.link==n))}));if(n&&a){const t=a.inputs.find((e=>e.link==n)).widget.name,i=a.widgets.find((e=>e.name==t));let s=(null==i?void 0:i.options.values)||null;s&&(s=s.join("\n"),e.value=s)}else qe.error(ke("No COMBO link"),3e3)}),{serialize:!1})}),li.includes(t.name)){let t=function(e){var t="";for(let i=0;ie.name===t+"_prompt")),s="comfy-multiline-input wildcard_"+t+"_"+this.id.toString();if(-1==i&&e){const i=document.createElement("textarea");i.className=s,i.placeholder="Wildcard Prompt ("+t+")";const n=this.addDOMWidget(t+"_prompt","customtext",i,{getValue:e=>i.value,setValue(e){i.value=e},serialize:!1});n.inputEl=i,n.inputEl.readOnly=!0,i.addEventListener("input",(()=>{var e;null==(e=n.callback)||e.call(n,n.value)})),n.value=e}else if(this.widgets[i])if(e){this.widgets[i].value=e}else{this.widgets.splice(i,1);const e=document.getElementsByClassName(s);e&&e[0]&&e[0].remove()}}};e.prototype.onExecuted=function(e){null==r||r.apply(this,arguments);const s=t(e.positive),n=t(e.negative);i.call(this,s,"positive"),i.call(this,n,"negative")}}if(["easy sv3dLoader"].includes(t.name)){let t=function(e,t,i){switch(e){case"azimuth":return i.readOnly=!0,i.style.opacity=.6,"0:(0.0,0.0)"+(t>1?`\n${t-1}:(360.0,0.0)`:"");case"elevation":return i.readOnly=!0,i.style.opacity=.6,"0:(-90.0,0.0)"+(t>1?`\n${t-1}:(90.0,0.0)`:"");case"custom":return i.readOnly=!1,i.style.opacity=1,"0:(0.0,0.0)\n9:(180.0,0.0)\n20:(360.0,0.0)"}};e.prototype.onNodeCreated=async function(){o&&o.apply(this,[]);const e=this.widgets.find((e=>"easing_mode"==e.name)),i=this.widgets.find((e=>"batch_size"==e.name)),s=this.widgets.find((e=>"scheduler"==e.name));setTimeout((n=>{s.value||(s.value=t(e.value,i.value,s.inputEl))}),1),e.callback=e=>{s.value=t(e,i.value,s.inputEl)},i.callback=i=>{s.value=t(e.value,i,s.inputEl)}}}if(oi.includes(n)&&(e.prototype.onNodeCreated=async function(){o&&o.apply(this,[]);const e=this.widgets.find((e=>["seed_num","seed"].includes(e.name))),s=this.widgets.find((e=>["control before generate","control after generate","control_before_generate","control_after_generate"].includes(e.name)));if("easy seed"==t.name&&s){const t=this.addWidget("button","🎲 Manual Random Seed",null,(t=>{"fixed"!=s.value&&(s.value="fixed"),e.value=Math.floor(Math.random()*Ie),i.queuePrompt(0,1)}),{serialize:!1});e.linkedWidgets=[t,s]}},e.prototype.onAdded=async function(){a&&a.apply(this,[]);const e=this.widgets.find((e=>["seed_num","seed"].includes(e.name))),t=this.widgets.find((e=>["control before generate","control after generate","control_before_generate","control_after_generate"].includes(e.name)));t&&setTimeout((i=>{["control before generate","control_before_generate"].includes(t.name)&&0===e.value&&(e.value=Math.floor(Math.random()*Ie))}),1)}),"easy convertAnything"==n&&(e.prototype.onNodeCreated=async function(){o&&o.apply(this,[]);const e=this.widgets.find((e=>"output_type"==e.name)),t=t=>{this.outputs[0].type=e.value.toUpperCase(),this.outputs[0].name=e.value,this.outputs[0].label=e.value};setTimeout((e=>t()),10),e.callback=e=>t()}),"easy imageInsetCrop"==n){let t=function(e){const t=e.widgets[0];for(let i=1;i<=4;i++)"Pixels"===t.value?(e.widgets[i].options.step=80,void 0!==e.widgets[i].options.step2&&(e.widgets[i].options.step2=8),e.widgets[i].options.max=8192):(e.widgets[i].options.step=10,void 0!==e.widgets[i].options.step2&&(e.widgets[i].options.step2=1),e.widgets[i].options.max=99)};e.prototype.onAdded=async function(e){const i=this.widgets[0];let s=i.callback;i.callback=(...e)=>{t(this),s&&s.apply(i,[...e])},setTimeout((e=>{t(this)}),1)}}if(pi.includes(n)){const t=e=>{switch(n){case"easy forLoopStart":case"easy whileLoopStart":return 0;case"easy forLoopEnd":case"easy whileLoopEnd":return 1}},i=e=>{switch(n){case"easy forLoopStart":return 2;case"easy forLoopEnd":case"easy whileLoopEnd":return 0;case"easy whileLoopStart":return 1}};e.prototype.onNodeCreated=async function(){if("easy loadImagesForLoop"==n&&(this.outputs[0].shape=5),ui.includes(n)){const e=this.inputs.findIndex((e=>"flow"===e.name)),s=this.outputs.findIndex((e=>"flow"===e.name));-1!==e&&(this.inputs[e].shape=5),-1!==s&&(this.outputs[s].shape=5),this.inputs=this.inputs.filter(((e,i)=>i<=t()||e.widget)),this.outputs=this.outputs.filter(((e,t)=>t<=i())),_t(this)}return Ai.includes(n)&&("easy textIndexSwitch"==n&&(this.widgets=this.widgets.filter(((e,t)=>t<=2))),this.inputs=this.inputs.filter(((e,t)=>t<=1||e.widget)),_t(this)),null==o?void 0:o.apply(this,arguments)},e.prototype.onConnectionsChange=function(e,s,a,o){var l,r;if(o)if(1==e){let e=this.inputs.every((e=>null!==e.link||e.widget)),i=this.inputs.filter((e=>!["condition","index","total"].includes(e.name)));if(ui.includes(n)){if(e){if(i.length>=20)return void qe.warn(ke("The maximum number of inputs is 20"));let e=i[i.length-1],t=parseInt(e.name.split("initial_value")[1])+1;if(this.inputs.find((e=>e.name==="initial_value"+t)))return;let s="initial_value"+t,n="value"+t;this.addInput(s,"*"),this.addOutput(n,"*")}else if(!a){const e=t();let i=this.inputs.findLastIndex((e=>e.link));if(s>=e&&(-1===i||s>=i)){let e=this.inputs[s];if(!e.name||["condition","total"].includes(e.name))return;let t=parseInt(e.name.split("initial_value")[1])+1,i=this.inputs.findIndex((e=>e.name==="initial_value"+t)),n=this.outputs.findIndex((e=>e.name==="value"+t));-1!==i&&this.removeInput(i),-1!==n&&this.removeOutput(n)}}}else if(Ai.includes(n))if(e){if(i.length>=20)return void qe.warn(ke("The maximum number of inputs is 20"));let e=hi[n]+i.length;this.addInput(e,"*")}else a||s==this.inputs.length-2&&this.removeInput(s+1)}else if(2==e){let e=this.outputs.filter((e=>!["flow","index"].includes(e.name))),t=e.every((e=>{var t;return(null==(t=e.links)?void 0:t.length)>0}));if(ui.includes(n)){if(t){if(e.length>=20)return void qe.warn(ke("The maximum number of outputs is 20"));let t=e[e.length-1],i=parseInt(t.name.split("value")[1])+1;if(this.inputs.find((e=>e.name==="initial_value"+i)))return;if(this.outputs.find((e=>e.name==="value"+i)))return;let s="initial_value"+i,n="value"+i;this.addInput(s,"*"),this.addOutput(n,"*")}else if(!a){const e=i();let t=o.origin_slot,s=this.outputs.findLastIndex((e=>{var t;return(null==(t=e.links)?void 0:t.length)>0}));if(t>=e&&(-1===s||t>=s)){let e=this.outputs[t];if(!e.name||["flow","index"].includes(e.name))return;let i=parseInt(e.name.split("value")[1])+1,s=this.inputs.findIndex((e=>e.name==="initial_value"+i)),n=this.outputs.findIndex((e=>e.name==="value"+i));if(-1!==s&&(null==(l=this.inputs[s])?void 0:l.link))return;-1!==s&&this.removeInput(s),-1!==n&&this.removeOutput(n)}}}else if(ci.includes(n))if(t){if(e.length>=20)return void qe.warn(ke("The maximum number of outputs is 20"));let t=hi[n]+e.length;this.addOutput(t,"*")}else if(!a){let t=o.origin_slot;t==this.outputs.length-2&&0==(null==(r=e[t].links)?void 0:r.length)&&this.removeOutput(t+1)}}}}if(["easy fluxLoader","easy fullLoader"].includes(n)&&(e.prototype.onConnectionsChange=async function(e,t){d&&d.apply(this,[]);const i=this.inputs.find((e=>"model_override"===e.name)),s=this.inputs.find((e=>"vae_override"===e.name));let n=yt(this,"ckpt_name"),a=yt(this,"vae_name");if((null==i?void 0:i.link)&&0==t){const e=(null==n?void 0:n.options.values)||[];setTimeout((t=>{this.widgets[0].value=(null==e?void 0:e[0])||"None",bt(this,n,!(null==i?void 0:i.link))}),1)}else bt(this,n,!(null==i?void 0:i.link));if(!(null==s?void 0:s.link)||1!=t&&2!=t)bt(this,a,!(null==s?void 0:s.link));else{let e=this.widgets.findIndex((e=>"vae_name"==e.name));setTimeout((t=>{this.widgets[e].value="Baked VAE",bt(this,a,!(null==s?void 0:s.link))}),1)}}),ri.includes(n)||-1!==n.indexOf("workflow")){const i=(null==(s=null==t?void 0:t.input)?void 0:s.required)||{};if(!i.image_output&&!i["图像输出"]&&!i["视频输出"])return;e.prototype.onDrawBackground=function(e){try{ii(this)}catch(t){}}}},nodeCreated(e){if(e.comfyClass.startsWith("easy ")){if(e.widgets)for(const i of e.widgets){if(!si.includes(i.name))continue;let t=i.value;mi(e,i),Object.defineProperty(i,"value",{get:e=>t,set(s){s!==t&&(t=s,requestAnimationFrame((t=>{mi(e,i)})))}})}const t=e.comfyClass;if("easy preDetailerFix"==t){const t=e.widgets.find((e=>"customtext"===e.type));if(!t)return;t.dynamicPrompts=!1,t.inputEl.placeholder="wildcard spec: if kept empty, this option will be ignored",t.serializeValue=()=>t.value}if(["easy wildcards","easy wildcardsMatrix"].includes(t)){const t=e.widgets.find((e=>"text"==e.name));let i=1;Object.defineProperty(e.widgets[i],"value",{set:e=>{if("Select the LoRA to add to the text"!=e){let i=e;i.endsWith(".safetensors")&&(i=i.slice(0,-12)),t.value+=``}},get:e=>"Select the LoRA to add to the text"}),Object.defineProperty(e.widgets[i+1],"value",{set:e=>{"Select the Wildcard to add to the text"!=e&&(""!=t.value&&(t.value+=", "),t.value+=e)},get:e=>"Select the Wildcard to add to the text"}),e.widgets[i].serializeValue=e=>"Select the LoRA to add to the text",e.widgets[i+1].serializeValue=e=>"Select the Wildcard to add to the text"}if("easy prompt"==t){const t=e.widgets.find((e=>"text"==e.name));let i=1;Object.defineProperty(e.widgets[i],"value",{set:s=>{var n,a;"Select the prefix to add to the text"!=s&&(null==(a=null==(n=e.widgets[i])?void 0:n.options)?void 0:a.values.includes(s))&&(""==t.value?t.value+=s:t.value+=" "+s)},get:e=>"Select the prefix to add to the text"}),Object.defineProperty(e.widgets[i+1],"value",{set:s=>{var n,a;"👤Select the subject add to the text"!=s&&(null==(a=null==(n=e.widgets[i+1])?void 0:n.options)?void 0:a.values.includes(s))&&(""==t.value?t.value+=s:t.value+=" "+s)},get:e=>"👤Select the subject add to the text"}),Object.defineProperty(e.widgets[i+2],"value",{set:s=>{var n,a;"🎬Select the action add to the text"!=s&&(null==(a=null==(n=e.widgets[i+2])?void 0:n.options)?void 0:a.values.includes(s))&&(""==t.value?t.value+=s:t.value+=","+s)},get:e=>"🎬Select the action add to the text"}),Object.defineProperty(e.widgets[i+3],"value",{set:s=>{var n,a;"👚Select the clothes add to the text"!=s&&(null==(a=null==(n=e.widgets[i+3])?void 0:n.options)?void 0:a.values.includes(s))&&(""==t.value?t.value+=s:t.value+=","+s)},get:e=>"👚Select the clothes add to the text"}),Object.defineProperty(e.widgets[i+4],"value",{set:s=>{var n,a;"☀️Select the illumination environment add to the text"!=s&&(null==(a=null==(n=e.widgets[i+4])?void 0:n.options)?void 0:a.values.includes(s))&&(""==t.value?t.value+=s:t.value+=","+s)},get:e=>"☀️Select the illumination environment add to the text"}),Object.defineProperty(e.widgets[i+5],"value",{set:s=>{var n,a;"🎞️Select the background add to the text"!=s&&(null==(a=null==(n=e.widgets[i+5])?void 0:n.options)?void 0:a.values.includes(s))&&(""==t.value?t.value+=s:t.value+=" "+s)},get:e=>"🎞️Select the background add to the text"}),Object.defineProperty(e.widgets[i+6],"value",{set:s=>{var n,a;"🔞Select the nsfw add to the text"!=s&&(null==(a=null==(n=e.widgets[i+6])?void 0:n.options)?void 0:a.values.includes(s))&&(""==t.value?t.value+=s:t.value+=","+s)},get:e=>"🔞Select the nsfw add to the text"}),e.widgets[i].serializeValue=e=>"Select the prefix add to the text",e.widgets[i+1].serializeValue=e=>"👤Select the subject add to the text",e.widgets[i+2].serializeValue=e=>"🎬Select the action add to the text",e.widgets[i+3].serializeValue=e=>"👚Select the clothes add to the text",e.widgets[i+4].serializeValue=e=>"☀️Select the illumination environment add to the text",e.widgets[i+5].serializeValue=e=>"🎞️Select the background add to the text",e.widgets[i+6].serializeValue=e=>"🔞Select the nsfw add to the text"}if(di.includes(t)){const t=document.createElement("textarea");t.className="comfy-multiline-input",t.readOnly=!0;const i=e.addDOMWidget("info","customtext",t,{getValue:e=>t.value,setValue:e=>t.value=e,serialize:!1});i.inputEl=t,t.addEventListener("input",(()=>{var e;null==(e=i.callback)||e.call(i,i.value)}))}}}});const fi=LiteGraph.LGraphNode;he.registerExtension({name:"easy bookmark",registerCustomNodes(){class e extends fi{constructor(){super("🔖"),v(this,"type","easy bookmark"),v(this,"title","🔖"),v(this,"slot_start_y",-20),v(this,"___collapsed_width",0),v(this,"isVirtualNode",!0),v(this,"serialize_widgets",!0),v(this,"keypressBound",null),this.addWidget("text","shortcut_key","1",(e=>{""!==(e=e.trim()[0]||"1")&&(this.title="🔖 "+e)}),{y:8}),this.addWidget("number","zoom",1,(e=>{}),{y:8+LiteGraph.NODE_WIDGET_HEIGHT+4,max:2,min:.5,precision:2}),this.keypressBound=this.onKeypress.bind(this)}get _collapsed_width(){return this.___collapsed_width}set _collapsed_width(e){const t=he.canvas,i=t.canvas.getContext("2d");if(i){const e=i.font;i.font=t.title_text_font,this.___collapsed_width=40+i.measureText(this.title).width,i.font=e}}onAdded(){setTimeout((e=>{const t=this.widgets[0].value;t&&(this.title="🔖 "+t)}),1),window.addEventListener("keydown",this.keypressBound)}onRemoved(){window.removeEventListener("keydown",this.keypressBound)}onKeypress(e){const t=e.target;["input","textarea"].includes(t.localName)||this.widgets[0]&&e.key.toLocaleLowerCase()===this.widgets[0].value.toLocaleLowerCase()&&this.canvasToBookmark()}canvasToBookmark(){var e,t;const i=he.canvas;(null==(e=null==i?void 0:i.ds)?void 0:e.offset)&&(i.ds.offset[0]=16-this.pos[0],i.ds.offset[1]=40-this.pos[1]),null!=(null==(t=null==i?void 0:i.ds)?void 0:t.scale)&&(i.ds.scale=Number(this.widgets[1].value||1)),i.setDirty(!0,!0)}}LiteGraph.registerNodeType("easy bookmark",Object.assign(e,{title:"Bookmark 🔖"})),e.category="EasyUse/Util"}}),he.registerExtension({name:"Comfy.EasyUse.ChainNode",init(){he.canvas._mousemove_callback=e=>{_e("EasyUse.Nodes.ChainGetSet",null)&&((e=!1,t={})=>{var i,s,n,a,o;const l=Mt();if(!l||l.length<1)return;const r=Lt();if(0===r.length)return;let d=t.inputX||160,u=t.ouputX||60;if(r.filter((e=>Ot(e))).length>1)return;for(const c of r){let a=t.inputY||10,o=t.outputY||30;const l=[],A=c.id;if(c.graph){Dt[A]||(Dt[A]=[]);for(const e of c.inputs??[]){const t=e.link;if(!t)continue;const{origin_id:i,target_slot:s}=Nt(t),n=St(i);if(!n)continue;if(!Ot(n))continue;let o=c.getConnectionPos(!0,s);Dt[A][s]||(Dt[A][s]=o),!Dt[A]||Dt[A][s][1]===o[1]&&Dt[A][s][0]===o[0]||(d=o[0]-Dt[A][s][0],a=o[1]-Dt[A][s][1],n.pos=[n.pos[0]+d,n.pos[1]+a]),Dt[A][s]=o,l.push(n)}Rt[A]||(Rt[A]=[]);for(const e of c.outputs??[])if(e.links&&c.graph)for(const t of e.links){const{target_id:e,target_slot:s,origin_slot:n}=Nt(t),a=St(e);if(!a)continue;if(!Ot(a))continue;const r=null==(i=a.outputs)?void 0:i.links;if((null==r?void 0:r.length)>1)return;const d=c.getConnectionPos(!1,n);Rt[A][n]||(Rt[A][n]=d),!Rt[A]||Rt[A][n][0]===d[0]&&Rt[A][n][1]===d[1]||(u=d[0]-Rt[A][n][0],o=d[1]-Rt[A][n][1],a.pos=[a.pos[0]+u,a.pos[1]+o]),Rt[A][n]=d,l.push(a)}if(e&&1===r.length){const e=[c,...l];(null==(n=null==(s=c.graph)?void 0:s.list_of_graphcanvas)?void 0:n[0]).selectNodes(e)}}}const A=r[0];if(!A)return;(null==(o=null==(a=A.graph)?void 0:a.list_of_graphcanvas)?void 0:o[0]).setDirty(!0,!0)})()};const e=LGraphCanvas.prototype.showLinkMenu;LGraphCanvas.prototype.showLinkMenu=it(e,(function(t,i){return i.shiftKey?(((e,t=!1)=>{var i,s,n,a,o,l,r,d,u,A;const{type:c}=e;if("*"===c)return;let{origin_id:p,target_id:h,origin_slot:m,target_slot:f}=e,g=St(p),v=St(h);if(!g||!v)return!1;if("Reroute"===g.type){let e=0;[g,e]=Vt(g),p=null==g?void 0:g.id,m=e,void 0!==m&&-1!==m||(m=0)}if("Reroute"===v.type&&(v=jt(v),h=null==v?void 0:v.id,f=null==v?void 0:v.inputs.findIndex((e=>e.type===c)),void 0!==f&&-1!==f||(f=0)),void 0===p||void 0===h||!g||!v)return!1;if(t&&(Ot(g)||Ot(v)))return!1;let y=Ct((null==(i=v.getInputInfo(f))?void 0:i.name)??c.toLowerCase());y||(y=Ct((null==(n=null==(s=null==g?void 0:g.outputs)?void 0:s[m])?void 0:n.name)??(null==(o=null==(a=null==g?void 0:g.outputs)?void 0:a[m])?void 0:o.type.toString())??y+`_from_${p}_to_${h}`));let b,w=!1,_=!1;if(Ot(g))y=wt(g),_=!0;else{const e=null==(r=null==(l=g.outputs)?void 0:l[m])?void 0:r.links;if(e)for(const t of e){const e=St((null==(d=Nt(t))?void 0:d.target_id)??-1);e&&Ot(e)&&Tt(e)&&(y=wt(e),_=!0)}if(!_){for(const e of Mt()){if(y!==wt(e)||!Tt(e))continue;const t=null==(u=e.inputs[0])?void 0:u.link;(null==(A=Nt(t))?void 0:A.origin_id)===g.id?_=!0:w=!0}w&&(y+=`_from_${p}_to_${h}`)}}if(!_){b=LiteGraph.createNode("easy setNode"),b.is_auto_link=!0;const e=g.getConnectionPos(!1,m);b.pos=[e[0]+20,e[1]],b.inputs[0].name=y,b.inputs[0].type=c,b.inputs[0].widget=v.inputs[f].widget,Pt(b,y),Gt(b),b.flags.collapsed=!0;let t=[];g.widgets?t=Object.values(g.widgets).map((e=>e.value)):g.widgets_values&&(t=JSON.parse(JSON.stringify(g.widgets_values))),g.connect(m,b,0),g.widgets_values=t,"PrimitiveNode"===g.type&&setTimeout((()=>{if(g){g.connect(m,b,0);for(const[e,i]of t.entries())Pt(g,i,e);null!==b&&b.setSize(b.computeSize())}}))}const S=LiteGraph.createNode("easy getNode"),L=v.getConnectionPos(!0,f);S.pos=[L[0]-150,L[1]],S.outputs[0].name=y,S.outputs[0].type=c,S.outputs[0].widget=v.inputs[f].widget,Gt(S),Pt(S,y),null===S||(S.flags.collapsed=!0,S.setSize(S.computeSize()),S.connect(0,v,f))})(t),!1):(e.apply(this,[t,i]),!1)}))}});const gi=async()=>{try{const{Running:e,Pending:t}=await me.getQueue();if(e.length>0||t.length>0)return void qe.error(ke("Clean Failed")+":"+ke("Please stop all running tasks before cleaning GPU"));200==(await me.fetchApi("/easyuse/cleangpu",{method:"POST"})).status?qe.success(ke("Clean SuccessFully")):qe.error(ke("Clean Failed"))}catch(e){}};let vi={},yi=!1;function bi(e,t,i,s,n){var a=LGraphCanvas.active_canvas,o=a.getCanvasWindow(),l=a.graph;if(l)return function e(t,s){var r=LiteGraph.getNodeTypesCategories(a.filter||l.filter).filter((function(e){return e.startsWith(t)})),d=[];r.map((function(i){if(i){var s=new RegExp("^("+t+")"),n=i.replace(s,"").split("/")[0],a=""===t?n+"/":t+n+"/",o=n;-1!=o.indexOf("::")&&(o=o.split("::")[1]),-1===d.findIndex((function(e){return e.value===a}))&&d.push({value:a,content:o,has_submenu:!0,callback:function(t,i,s,n){e(t.value,n)}})}})),LiteGraph.getNodeTypesInCategory(t.slice(0,-1),a.filter||l.filter).map((function(e){if(!e.skip_list){var t={value:e.type,content:e.title,has_submenu:!1,callback:function(e,t,i,s){var o=s.getFirstEvent();a.graph.beforeChange();var l=LiteGraph.createNode(e.value);l&&(l.pos=a.convertEventToCanvasOffset(o),a.graph.add(l)),n&&n(l),a.graph.afterChange()}};d.push(t)}}));const u=_e("EasyUse.ContextMenu.NodesSort",null);""===t&&u&&(d=function(e){let t=[],i=[];return e.forEach((e=>{(null==e?void 0:e.value)&&Te.includes(e.value.split("/")[0])?t.push(e):i.push(e)})),[{title:ke("ComfyUI Basic"),is_category_title:!0},...t,{title:ke("Others A~Z"),is_category_title:!0},...i.sort(((e,t)=>e.content.localeCompare(t.content)))]}(d)),new LiteGraph.ContextMenu(d,{event:i,parentMenu:s},o)}("",s),!1}function wi(e){try{return encodeURIComponent(e).replace(/[!'()*]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`))}catch(t){return e}}function _i(e,t,i){var s=this;i=i||{};var n=document.createElement("div");n.className="litemenu-entry submenu";var a=!1;function o(e){var t=this.value,n=!0;(s.current_submenu&&s.current_submenu.close(e),i.callback)&&(!0===i.callback.call(this,t,i,e,s,i.node)&&(n=!1));if(t){if(t.callback&&!i.ignore_item_callbacks&&!0!==t.disabled)!0===t.callback.call(this,t,i,e,s,i.extra)&&(n=!1);if(t.submenu){if(!t.submenu.options)throw"ContextMenu submenu needs options";new s.constructor(t.submenu.options,{callback:t.submenu.callback,event:e,parentMenu:s,ignore_item_callbacks:t.submenu.ignore_item_callbacks,title:t.submenu.title,extra:t.submenu.extra,autoopen:i.autoopen}),n=!1}}n&&!s.lock&&s.close()}return null===t?n.classList.add("separator"):t.is_category_title?(n.classList.remove("litemenu-entry"),n.classList.remove("submenu"),n.classList.add("litemenu-title"),n.innerHTML=t.title):(n.innerHTML=t&&t.title?t.title:e,n.value=t,t&&(t.disabled&&(a=!0,n.classList.add("disabled")),(t.submenu||t.has_submenu)&&n.classList.add("has_submenu")),"function"==typeof t?(n.dataset.value=e,n.onclick_callback=t):n.dataset.value=t,t.className&&(n.className+=" "+t.className)),n&&(null==t?void 0:t.thumbnail)&&(n.addEventListener("mouseenter",Li(n,t,this.root),{passive:!0}),n.addEventListener("mouseleave",xi(),{passive:!0}),n.addEventListener("click",xi(),{passive:!0})),this.root.appendChild(n),a||n.addEventListener("click",o),!a&&i.autoopen&&LiteGraph.pointerListenerAdd(n,"enter",(function(e){var t=this.value;if(!t||!t.has_submenu)return;o.call(this,e)})),n}he.registerExtension({name:"Comfy.EasyUse.ContextMenu",async setup(){LGraphCanvas.onMenuAdd=bi,Si();const e=LiteGraph.ContextMenu;LiteGraph.ContextMenu=function(t,i){if(!(null==i?void 0:i.callback)||t.some((e=>"string"!=typeof e))){if(i.parentMenu);else if(i.extra);else if(i.scale);else{const e=_e("EasyUse.ContextMenu.QuickOptions",null);if(i.hasOwnProperty("extra")&&"Disable"!==e){if("At the forefront"==e?t.unshift(null):t.push(null),s=window.location.host,["192.168.","10.","127.",/^172\.((1[6-9]|2[0-9]|3[0-1])\.)/].some((e=>"string"==typeof e?s.startsWith(e):e.test(s)))){const i={content:`${ke("Reboot ComfyUI")}`,callback:e=>(async()=>{if(confirm(ke("Are you sure you'd like to reboot the server?")))try{me.fetchApi("/easyuse/reboot")}catch(e){}})()};"At the forefront"==e?t.unshift(i):t.push(i)}const i=_e("EasyUse.Hotkeys.cleanVRAMUsed",null)?"("+Ze("Shift+r")+")":"",n={content:`${ke("Cleanup Of VRAM Usage")} ${i}`,callback:e=>gi()};"At the forefront"==e?t.unshift(n):t.push(n);const a=_e("EasyUse.Hotkeys.toggleNodesMap",null)?"("+Ze("Shift+m")+")":"",o={content:`${ke("Nodes Map")} ${a}`,callback:e=>{var t,i,s;const n=(null==(t=he.extensionManager)?void 0:t.sidebarTab)||he.extensionManager,a=(null==(i=he.extensionManager.sidebarTab)?void 0:i.activeSidebarTabId)||(null==(s=he.extensionManager)?void 0:s.activeSidebarTab);n.activeSidebarTabId=a==De?null:De}};"At the forefront"==e?t.unshift(o):t.push(o)}}return e.apply(this,[...arguments])}{const s=function(e,t){const i=_e("EasyUse.ContextMenu.ModelsThumbnails",null),s=_e("EasyUse.ContextMenu.SubDirectories",null);if(!i&&!s)return null;if(yi)return null;const n=["ckpt","pt","bin","pth","safetensors","gguf"];if((null==e?void 0:e.length)>0){const t=null==(a=e[e.length-1])?void 0:a.substring(a.lastIndexOf(".")+1);if(!n.includes(t))return null}var a;const o=t.callback,l=[...e];t.callback=null;const r=(e,t)=>{["None","无","無","なし"].includes(e.content)?o("None",t):o(l.find((t=>t.endsWith(e.content)),t))};if(i&&!s)return e.map((e=>{var t,i;let s=null==(t=vi[e])?void 0:t.folder,n=null==(i=vi[e])?void 0:i.pathIndex;const a=window.location.protocol,o=window.location.host;let l=s?`${`${a}//${o}`}/api/experiment/models/preview/${s}/${n}/${wi(e)}`:"";return{folder:s,content:e,fullName:e,title:fe("div.comfyui-easyuse-contextmenu-model",{},[fe("span",{},e)]).outerHTML,thumbnail:l,callback:r}}));const d=e,u={},A=[],c=[];for(const f of d){const e=f.indexOf("/")>-1?"/":"\\",t=f.split(e);if(t.length>1){const i=t.shift();u[i]=u[i]||[],u[i].push({value:t.join(e),fullValue:f})}else"CHOOSE"===f||f.startsWith("DISABLE ")?A.push({value:f,fullValue:f}):c.push({value:f,fullValue:f})}const p=Object.values(u).length,h=[],m=(e,t="",s)=>{var n,a;let o;o=fe("div.comfyui-easyuse-contextmenu-model",{},[fe("span",{},e)]);let l=null==(n=vi[s])?void 0:n.folder,d=null==(a=vi[s])?void 0:a.pathIndex;const u=window.location.protocol,A=window.location.host;let c=l?`${`${u}//${A}`}/api/experiment/models/preview/${l}/${d}/${wi(s)}`:"";return{folder:l,content:e,fullName:s,thumbnail:i?c:null,title:o.outerHTML,callback:r}};if(p>0){const e=(t,i)=>{let s=[],n=[];const a=t.map((({value:e,fullValue:t})=>{const a={},o=e.indexOf("/")>-1?"/":"\\",l=e.split(o);if(l.length>1){const e=l.shift();a[e]=a[e]||[],a[e].push({value:l.join(o),fullValue:t})}if(Object.values(u).length>0){let i=Object.keys(a)[0];i&&a[i]?s.push({key:i,value:a[i][0]}):n.push(m(e,i,t))}return m(e,i,t)}));if(s.length>0){let t={};return s.forEach((e=>{t[e.key]=t[e.key]||[],t[e.key].push(e.value)})),[...Object.entries(t).map((t=>({content:t[0],has_submenu:!0,callback:()=>{},submenu:{options:e(t[1],t[0])}}))),...n]}return a};for(const[t,i]of Object.entries(u))h.push({content:t,has_submenu:!0,callback:()=>{},submenu:{options:e(i,t)}})}h.push(...c.map((e=>m(e.value,"",e.fullValue)))),A.length>0&&h.push(...A.map((e=>m(e.value,"",e.fullValue))));return h}(t,i);return s?e.call(this,s,i):e.apply(this,[...arguments])}var s},LiteGraph.ContextMenu.prototype=e.prototype,_e("EasyUse.ContextMenu.NodesSort")&&(LiteGraph.ContextMenu.prototype.addItem=_i),document.getElementById("graph-canvas").addEventListener("mouseenter",(e=>{setTimeout((e=>{const t=document.getElementById("easyuse-model-thumbnail");t&&0!=t.style.opacity&&(t.style.display="none",t.style.opacity=0,t.style.left="0px",t.style.top="0px")}),100)}))},async beforeRegisterNodeDef(e,t,i){const s=e.prototype.onNodeCreated;["CheckpointLoader|pysssss","LoraLoader|pysssss"].includes(t.name)&&(e.prototype.onNodeCreated=async function(){s&&s.apply(this,[]);let e=yt(this,"lora_name")||yt(this,"ckpt_name");if(e){let t=e.onClick;e.onClick=function(e){return yi=!0,setTimeout((e=>{yi=!1}),500),t.call(this,e)}}})}});const Si=async()=>{["checkpoints","loras","diffusion_models"].map((async e=>{const t=await me.getModels(e);(null==t?void 0:t.length)>0&&t.map((t=>{vi[t.name]={folder:e,pathIndex:t.pathIndex}}))}))},Li=(e,t,i)=>s=>{var n;const a=t=>{setTimeout((s=>{const n=i.getBoundingClientRect();if(!n)return;const a=document.body.getBoundingClientRect();if(!a)return;const{left:o,top:l}=((e,t,i)=>{const{x:s}=e.getBoundingClientRect();let{top:n,left:a}=t;const{width:o,height:l}=i;return s<=o&&(a+=t.width),t.top<=l||(n=l),{left:a,top:n}})(e,n,a),r=document.getElementById("easyuse-model-thumbnail");r.src=t,r.style.left=`${o}px`,r.style.top=`${l}px`,r.style.display="block",r.style.opacity=1,r.onerror=e=>{r.src=Re}}),10)};if(null==(n=null==vi?void 0:vi[t.fullName])?void 0:n.img){let e=vi[t.fullName].img;a("no_preview_image"==e?Re:e.src)}else{let e=new Image;e.src=t.thumbnail,e.onload=i=>{vi[t.fullName].img=e,a(t.thumbnail)},e.onerror=i=>{e=null,vi[t.fullName].img="no_preview_image",a(Re)}}},xi=()=>e=>{const t=document.getElementById("easyuse-model-thumbnail");t&&0!=t.style.opacity&&(t.style.display="none",t.style.opacity=0,t.style.left="0px",t.style.top="0px")};class ki extends ge{constructor(){super(),this.element.classList.add("easyuse-model-metadata")}show(e){super.show(fe("div",Object.keys(e).map((t=>fe("div",[fe("label",{textContent:t}),fe("span",{textContent:e[t]})])))))}}class Ei extends ge{constructor(e){super(),this.name=e,this.element.classList.add("easyuse-model-info")}get customNotes(){return this.metadata["easyuse.notes"]}set customNotes(e){this.metadata["easyuse.notes"]=e}get hash(){return this.metadata["easyuse.sha256"]}async show(e,t){this.type=e;const i=me.fetchApi("/easyuse/metadata/"+encodeURIComponent(`${e}/${t}`));this.info=fe("div",{style:{flex:"auto"}}),this.imgCurrent=0,this.imgList=fe("div.easyuse-preview-list",{style:{display:"none"}}),this.imgWrapper=fe("div.easyuse-preview",[fe("div.easyuse-preview-group",[this.imgList])]),this.main=fe("main",{style:{display:"flex"}},[this.imgWrapper,this.info]),this.content=fe("div.easyuse-model-content",[fe("div.easyuse-model-header",[fe("h2",{textContent:this.name})]),this.main]);const s=fe("div",{textContent:"ℹ️ Loading...",parent:this.content});super.show(this.content),this.metadata=await(await i).json(),this.viewMetadata.style.cursor=this.viewMetadata.style.opacity="",this.viewMetadata.removeAttribute("disabled"),s.remove(),this.addInfo()}createButtons(){const e=super.createButtons();return this.viewMetadata=fe("button",{type:"button",textContent:"View raw metadata",disabled:"disabled",style:{opacity:.5,cursor:"not-allowed"},onclick:e=>{this.metadata&&(new ki).show(this.metadata)}}),e.unshift(this.viewMetadata),e}parseNote(){if(!this.customNotes)return[];let e=[];const t=new RegExp("(\\bhttps?:\\/\\/[^\\s]+)","g");let i,s=0;do{let n;i=t.exec(this.customNotes);let a=0;i?(n=i.index,a=i.index+i[0].length):n=this.customNotes.length;let o=this.customNotes.substring(s,n);o&&(o=o.replaceAll("\n","
"),e.push(fe("span",{innerHTML:o}))),i&&e.push(fe("a",{href:i[0],textContent:i[0],target:"_blank"})),s=a}while(i);return e}addInfoEntry(e,t){return fe("p",{parent:this.info},["string"==typeof e?fe("label",{textContent:e+": "}):e,"string"==typeof t?fe("span",{textContent:t}):t])}async getCivitaiDetails(){const e=await fetch("https://civitai.com/api/v1/model-versions/by-hash/"+this.hash);if(200===e.status)return await e.json();throw 404===e.status?new Error("Model not found"):new Error(`Error loading info (${e.status}) ${e.statusText}`)}addCivitaiInfo(){const e=this.getCivitaiDetails(),t=fe("span",{textContent:"ℹ️ Loading..."});return this.addInfoEntry(fe("label",[fe("img",{style:{width:"18px",position:"relative",top:"3px",margin:"0 5px 0 0"},src:"https://civitai.com/favicon.ico"}),fe("span",{textContent:"Civitai: "})]),t),e.then((e=>{var t,i;this.imgWrapper.style.display="block";let s=this.element.querySelector(".easyuse-model-header");s&&s.replaceChildren(fe("h2",{textContent:this.name}),fe("div.easyuse-model-header-remark",[fe("h5",{textContent:ke("Updated At:")+Fe(new Date(e.updatedAt),"yyyy/MM/dd")}),fe("h5",{textContent:ke("Created At:")+Fe(new Date(e.updatedAt),"yyyy/MM/dd")})]));let n=null,a=this.parseNote.call(this),o=ke("✏️ Edit"),l=fe("div.easyuse-model-detail-textarea",[fe("p",(null==a?void 0:a.length)>0?a:{textContent:ke("No notes")})]);if(a&&0!=a.length?l.classList.remove("empty"):l.classList.add("empty"),this.info.replaceChildren(fe("div.easyuse-model-detail",[fe("div.easyuse-model-detail-head.flex-b",[fe("span",ke("Notes")),fe("a",{textContent:o,href:"#",style:{fontSize:"12px",float:"right",color:"var(--warning-color)",textDecoration:"none"},onclick:async e=>{if(e.preventDefault(),n){if(n.value!=this.customNotes){qe.showLoading(ke("Saving Notes...")),this.customNotes=n.value;const e=await me.fetchApi("/easyuse/metadata/notes/"+encodeURIComponent(`${this.type}/${this.name}`),{method:"POST",body:this.customNotes});if(qe.hideLoading(),200!==e.status)return qe.error(ke("Saving Failed")),void alert(`Error saving notes (${e.status}) ${e.statusText}`);qe.success(ke("Saving Succeed")),a=this.parseNote.call(this),l.replaceChildren(fe("p",(null==a?void 0:a.length)>0?a:{textContent:ke("No notes")})),n.value?l.classList.remove("empty"):l.classList.add("empty")}else l.replaceChildren(fe("p",{textContent:ke("No notes")})),l.classList.add("empty");e.target.textContent=o,n.remove(),n=null}else e.target.textContent="💾 Save",n=fe("textarea",{placeholder:ke("Type your notes here"),style:{width:"100%",minWidth:"200px",minHeight:"50px",height:"100px"},textContent:this.customNotes}),l.replaceChildren(n),n.focus()}})]),l]),fe("div.easyuse-model-detail",[fe("div.easyuse-model-detail-head",{textContent:ke("Details")}),fe("div.easyuse-model-detail-body",[fe("div.easyuse-model-detail-item",[fe("div.easyuse-model-detail-item-label",{textContent:ke("Type")}),fe("div.easyuse-model-detail-item-value",{textContent:e.model.type})]),fe("div.easyuse-model-detail-item",[fe("div.easyuse-model-detail-item-label",{textContent:ke("BaseModel")}),fe("div.easyuse-model-detail-item-value",{textContent:e.baseModel})]),fe("div.easyuse-model-detail-item",[fe("div.easyuse-model-detail-item-label",{textContent:ke("Download")}),fe("div.easyuse-model-detail-item-value",{textContent:(null==(t=e.stats)?void 0:t.downloadCount)||0})]),fe("div.easyuse-model-detail-item",[fe("div.easyuse-model-detail-item-label",{textContent:ke("Trained Words")}),fe("div.easyuse-model-detail-item-value",{textContent:(null==e?void 0:e.trainedWords.join(","))||"-"})]),fe("div.easyuse-model-detail-item",[fe("div.easyuse-model-detail-item-label",{textContent:ke("Source")}),fe("div.easyuse-model-detail-item-value",[fe("label",[fe("img",{style:{width:"14px",position:"relative",top:"3px",margin:"0 5px 0 0"},src:"https://civitai.com/favicon.ico"}),fe("a",{href:"https://civitai.com/models/"+e.modelId,textContent:"View "+e.model.name,target:"_blank"})])])])])])),null==(i=e.images)?void 0:i.length){this.imgCurrent=0,this.isSaving=!1,e.images.map((e=>e.url&&this.imgList.appendChild(fe("div.easyuse-preview-slide",[fe("div.easyuse-preview-slide-content",[fe("img",{src:e.url}),fe("div.save",{textContent:"Save as preview",onclick:async()=>{if(this.isSaving)return;this.isSaving=!0,qe.showLoading(ke("Saving Preview..."));const t=await(await fetch(e.url)).blob(),i="temp_preview."+new URL(e.url).pathname.split(".")[1],s=new FormData;s.append("image",new File([t],i)),s.append("overwrite","true"),s.append("type","temp");if(200!==(await me.fetchApi("/upload/image",{method:"POST",body:s})).status)return this.isSaving=!1,qe.error(ke("Saving Failed")),qe.hideLoading(),void alert(`Error saving preview (${req.status}) ${req.statusText}`);await me.fetchApi("/easyuse/save/"+encodeURIComponent(`${this.type}/${this.name}`),{method:"POST",body:JSON.stringify({filename:i,type:"temp"}),headers:{"content-type":"application/json"}}).then((e=>{qe.success(ke("Saving Succeed")),qe.hideLoading()})),this.isSaving=!1,app.refreshComboInNodes()}})])]))));let t=this;this.imgDistance=(-660*this.imgCurrent).toString(),this.imgList.style.display="",this.imgList.style.transform="translate3d("+this.imgDistance+"px, 0px, 0px)",this.slides=this.imgList.querySelectorAll(".easyuse-preview-slide"),this.slideLeftButton=fe("button.left",{parent:this.imgWrapper,style:{display:e.images.length<=2?"none":"block"},innerHTML:'',onclick:()=>{e.images.length<=2||(t.imgList.classList.remove("no-transition"),0==t.imgCurrent?(t.imgCurrent=e.images.length/2-1,this.slides[this.slides.length-1].style.transform="translate3d("+(-660*(this.imgCurrent+1)).toString()+"px, 0px, 0px)",this.slides[this.slides.length-2].style.transform="translate3d("+(-660*(this.imgCurrent+1)).toString()+"px, 0px, 0px)",t.imgList.style.transform="translate3d(660px, 0px, 0px)",setTimeout((e=>{this.slides[this.slides.length-1].style.transform="translate3d(0px, 0px, 0px)",this.slides[this.slides.length-2].style.transform="translate3d(0px, 0px, 0px)",t.imgDistance=(-660*this.imgCurrent).toString(),t.imgList.style.transform="translate3d("+t.imgDistance+"px, 0px, 0px)",t.imgList.classList.add("no-transition")}),500)):(t.imgCurrent=t.imgCurrent-1,t.imgDistance=(-660*this.imgCurrent).toString(),t.imgList.style.transform="translate3d("+t.imgDistance+"px, 0px, 0px)"))}}),this.slideRightButton=fe("button.right",{parent:this.imgWrapper,style:{display:e.images.length<=2?"none":"block"},innerHTML:'',onclick:()=>{if(!(e.images.length<=2))if(t.imgList.classList.remove("no-transition"),t.imgCurrent>=e.images.length/2-1){t.imgCurrent=0;const i=e.images.length/2;this.slides[0].style.transform="translate3d("+(660*i).toString()+"px, 0px, 0px)",this.slides[1].style.transform="translate3d("+(660*i).toString()+"px, 0px, 0px)",t.imgList.style.transform="translate3d("+(-660*i).toString()+"px, 0px, 0px)",setTimeout((e=>{this.slides[0].style.transform="translate3d(0px, 0px, 0px)",this.slides[1].style.transform="translate3d(0px, 0px, 0px)",t.imgDistance=(-660*this.imgCurrent).toString(),t.imgList.style.transform="translate3d("+t.imgDistance+"px, 0px, 0px)",t.imgList.classList.add("no-transition")}),500)}else t.imgCurrent=t.imgCurrent+1,t.imgDistance=(-660*this.imgCurrent).toString(),t.imgList.style.transform="translate3d("+t.imgDistance+"px, 0px, 0px)"}})}return e.description&&fe("div",{parent:this.content,innerHTML:e.description,style:{marginTop:"10px"}}),e})).catch((e=>{this.imgWrapper.style.display="none",t.textContent="⚠️ "+e.message})).finally((e=>{}))}}class Ni extends Ei{async addInfo(){await this.addCivitaiInfo()}}class Ci extends Ei{getTagFrequency(){if(!this.metadata.ss_tag_frequency)return[];const e=JSON.parse(this.metadata.ss_tag_frequency),t={};for(const i in e){const s=e[i];for(const e in s)e in t?t[e]+=s[e]:t[e]=s[e]}return Object.entries(t).sort(((e,t)=>t[1]-e[1]))}getResolutions(){let e=[];if(this.metadata.ss_bucket_info){const t=JSON.parse(this.metadata.ss_bucket_info);if(null==t?void 0:t.buckets)for(const{resolution:i,count:s}of Object.values(t.buckets))e.push([s,`${i.join("x")} * ${s}`])}e=e.sort(((e,t)=>t[0]-e[0])).map((e=>e[1]));let t=this.metadata.ss_resolution;if(t){const i=t.split(","),s=i[0].replace("(",""),n=i[1].replace(")","");e.push(`${s.trim()}x${n.trim()} (Base res)`)}else(t=this.metadata["modelspec.resolution"])&&e.push(t+" (Base res");return e.length||e.push("⚠️ Unknown"),e}getTagList(e){return e.map((e=>fe("li.easyuse-model-tag",{dataset:{tag:e[0]},$:e=>{e.onclick=()=>{e.classList.toggle("easyuse-model-tag--selected")}}},[fe("p",{textContent:e[0]}),fe("span",{textContent:e[1]})])))}addTags(){let e,t=this.getTagFrequency();if(null==t?void 0:t.length){const i=t.length;let s;i>500&&(t=t.slice(0,500),e=fe("p",[fe("span",{textContent:"⚠️ Only showing first 500 tags "}),fe("a",{href:"#",textContent:`Show all ${i}`,onclick:()=>{s.replaceChildren(...this.getTagList(this.getTagFrequency())),e.remove()}})])),s=fe("ol.easyuse-model-tags-list",this.getTagList(t)),this.tags=fe("div",[s])}else this.tags=fe("p",{textContent:"⚠️ No tag frequency metadata found"});this.content.append(this.tags),e&&this.content.append(e)}async addInfo(){const e=this.addCivitaiInfo();this.addTags();const t=await e;t&&fe("div",{parent:this.content,innerHTML:t.description,style:{maxHeight:"250px",overflow:"auto"}})}createButtons(){const e=super.createButtons();function t(e,t){const i=fe("textarea",{parent:document.body,style:{position:"fixed"},textContent:t.map((e=>e.dataset.tag)).join(", ")});i.select();try{document.execCommand("copy"),e.target.dataset.text||(e.target.dataset.text=e.target.textContent),e.target.textContent="Copied "+t.length+" tags",setTimeout((()=>{e.target.textContent=e.target.dataset.text}),1e3)}catch(s){prompt("Copy to clipboard: Ctrl+C, Enter",text)}finally{document.body.removeChild(i)}}return e.unshift(fe("button",{type:"button",textContent:"Copy Selected",onclick:e=>{t(e,[...this.tags.querySelectorAll(".easyuse-model-tag--selected")])}}),fe("button",{type:"button",textContent:"Copy All",onclick:e=>{t(e,[...this.tags.querySelectorAll(".easyuse-model-tag")])}})),e}}const Ii={pipe:{category:"Easy Pipe",nodes:["easy pipeIn","easy pipeOut","easy pipeEdit","easy pipeEditPrompt","easy pipeBatchIndex"],input:{pipe:"pipe"},output:{pipe:"pipe"},widget:{optional_positive:"optional_positive",optional_negative:"optional_negative"}},loaders:{category:"Easy Loaders",nodes:["easy fullLoader","easy a1111Loader","easy comfyLoader","easy kolorsLoader","easy hunyuanDiTLoader","easy pixArtLoader","easy fluxLoader"],input:{optional_lora_stack:"optional_lora_stack",optional_controlnet_stack:"optional_controlnet_stack",positive:"positive",negative:"negative"},output:{pipe:"pipe",model:"model",vae:"vae",clip:null,positive:null,negative:null,latent:null},widget:{ckpt_name:"ckpt_name",vae_name:"vae_name",clip_skip:"clip_skip",lora_name:"lora_name",resolution:"resolution",empty_latent_width:"empty_latent_width",empty_latent_height:"empty_latent_height",positive:"positive",negative:"negative",batch_size:"batch_size",a1111_prompt_style:"a1111_prompt_style"}},preSampling:{category:"Easy PreSampling",nodes:["easy preSampling","easy preSamplingAdvanced","easy preSamplingDynamicCFG","easy preSamplingNoiseIn","easy preSamplingCustom","easy preSamplingLayerDiffusion","easy fullkSampler"],input:{pipe:"pipe",image_to_latent:"image_to_latent",latent:"latent"},output:{pipe:"pipe"},widget:{steps:"steps",cfg:"cfg",cfg_scale_min:"cfg",sampler_name:"sampler_name",scheduler:"scheduler",denoise:"denoise",seed_num:"seed_num",seed:"seed"}},samplers:{category:"Custom Sampler",nodes:["KSamplerSelect","SamplerEulerAncestral","SamplerEulerAncestralCFG++","SamplerLMS","SamplerDPMPP_3M_SDE","SamplerDPMPP_2M_SDE","SamplerDPMPP_SDE","SamplerDPMAdaptative","SamplerLCMUpscale","SamplerTCD","SamplerTCD EulerA"],output:{SAMPLER:"SAMPLER"}},sigmas:{category:"Custom Sigmas",nodes:["BasicScheduler","KarrasScheduler","ExponentialScheduler","PolyexponentialScheduler","VPScheduler","BetaSamplingScheduler","SDTurboScheduler","SplitSigmas","SplitSigmasDenoise","FlipSigmas","AlignYourStepsScheduler","GITSScheduler"],output:{SIGMAS:"SIGMAS"}},kSampler:{category:"Easy kSampler",nodes:["easy kSampler","easy kSamplerTiled","easy kSamplerCustom","easy kSamplerInpainting","easy kSamplerDownscaleUnet","easy kSamplerLayerDiffusion"],input:{pipe:"pipe",model:"model"},output:{pipe:"pipe",image:"image"},widget:{image_output:"image_output",save_prefix:"save_prefix",link_id:"link_id"}},controlNet:{category:"Easy ControlNet",nodes:["easy controlnetLoader","easy controlnetLoaderADV","easy controlnetLoader++","easy instantIDApply","easy instantIDApplyADV"],input:{pipe:"pipe",image:"image",image_kps:"image_kps",control_net:"control_net",positive:"positive",negative:"negative",mask:"mask"},output:{pipe:"pipe",positive:"positive",negative:"negative"},widget:{control_net_name:"control_net_name",strength:["strength","cn_strength"],scale_soft_weights:["scale_soft_weights","cn_soft_weights"],cn_strength:["strength","cn_strength"],cn_soft_weights:["scale_soft_weights","cn_soft_weights"]}},adapter:{category:"Easy Adapter",nodes:["easy ipadapterApply","easy ipadapterApplyADV","easy ipadapterApplyFaceIDKolors","easy ipadapterStyleComposition","easy ipadapterApplyFromParams","easy pulIDApply","easy pulIDApplyADV"],input:{model:"model",image:"image",image_style:"image",attn_mask:"attn_mask",optional_ipadapter:"optional_ipadapter"},output:{model:"model",tiles:"tiles",masks:"masks",ipadapter:"ipadapter"},widget:{preset:"preset",lora_strength:"lora_strength",provider:"provider",weight:"weight",weight_faceidv2:"weight_faceidv2",start_at:"start_at",end_at:"end_at",cache_mode:"cache_mode",use_tiled:"use_tiled",insightface:"insightface",pulid_file:"pulid_file"}},positive:{category:"Easy Positive",nodes:["easy positive","easy wildcards"],input:{},output:{text:"positive",positive:"text"},widget:{text:"positive",positive:"text"}},loadImage:{category:"Easy LoadImage",nodes:["easy loadImageBase64","LoadImage","LoadImageMask"],input:{pipe:"pipe",image:"image",mask:"mask"},output:{IMAGE:"IMAGE",MASK:"MASK"},widget:{image:"image",base64_data:"base64_data",channel:"channel"}},saveImage:{category:"Save/Preview Image",nodes:["SaveImage","PreviewImage"]},inPaint:{category:"Easy Inpaint",nodes:["easy applyBrushNet","easy applyPowerPaint","easy applyInpaint"],input:{},output:{pipe:"pipe"},widget:{dtype:"dtype",fitting:"fitting",function:"function",scale:"scale",start_at:"start_at",end_at:"end_at"}},showAny:{category:"Show Anything",nodes:["easy showAnything","Preview Any"],input:{anything:"anything"},output:{output:"output"}},saveText:{category:"Save Text",nodes:["easy saveText"],input:{image:"image",text:"text",output_file_path:"output_file_path",file_name:"file_name",file_extension:"file_extension",overwrite:"overwrite"},output:{text:"text",image:"image"},widget:{image:"image",text:"text",output_file_path:"output_file_path",file_name:"file_name",file_extension:"file_extension",overwrite:"overwrite"}},persona:{category:"LLM Party Persona",nodes:["load_persona","classify_persona","classify_persona_plus","custom_persona","translate_persona","flux_persona"],input:{file_content:"file_content"},output:{system_prompt:"system_prompt"},widget:{is_enable:"is_enable"}},llmModelLoader:{category:"LLM Model Loader",nodes:["LLM_api_loader","genai_api_loader","LLM_local_loader"],output:{model:"model"}},llmModelChain:{category:"LLM Model Chain",nodes:["LLM","LLM_local"],input:{model:"model",image:"images",images:"image",extra_parameters:"extra_parameters",system_prompt_input:"system_prompt_input",user_prompt_input:"user_prompt_input",tools:"tools",file_content:"file_content"},output:{assistant_response:"assistant_response",history:"history",tool:"tool",image:"image"},widget:{system_prompt:"system_prompt",user_prompt:"user_prompt",temperature:"temperature",is_memory:"is_memory",is_tools_in_sys_prompt:"is_tools_in_sys_prompt",max_length:"max_length",main_brain:"main_brain",conversation_rounds:"conversation_rounds",history_record:"history_record",is_enable:"is_enable"}},maskModify:{category:"Mask Modify",nodes:["CropMask","ThresholdMask","GrowMask","FeatherMask","LayerMask: MaskGrain","LayerMask: MaskEdgeUltraDetail","LayerMask: MaskEdgeUltraDetail V2"],input:{mask:"mask"},output:{MASK:"MASK",mask:"mask",image:"image"}},maskModifyWAS:{category:"Mask Modify (WAS)",nodes:["Mask Dilate Region","Mask Gaussian Region"],input:{masks:"masks"},output:{MASKS:"MASKS"}},indextts_emotions:{category:"IndexTTS Emotions",nodes:["easy indexTTSEmotionVector","easy indexTTSEmotionText","easy indexTTSEmotionAudio"],input:{reference_audio:"reference_audio"},output:{emotions:"emotions"}},indextts_generate:{category:"IndexTTS Generate",nodes:["easy indexTTSGenerate","easy indexTTSGenerateSimple"],input:{indextts_model:"indextts_model",reference_audio:"reference_audio",reference_audios:"reference_audios",emotions:"emotions"},output:{audio:"audio",seed:"seed",subtitle:"subtitle"},widget:{text:"text",unload_model:"unload_model",seed:"seed"}},fast_loaders:{category:"Fast Loaders",nodes:["fast ckptLoader","fast unetLoader"],input:{"开始加载":"开始加载"},output:{"模型加载器":"模型加载器",MODEL:"MODEL",VAE:"VAE",CLIP:"CLIP"}},fast_inputs:{category:"Fast Inputs",nodes:["fast sdInput","fast fluxInput","fast hiDreamInput","fast videoInput","fast qwenImageInput"],input:{"模型加载器":"模型加载器","更多Controlnet":"更多Controlnet","图像":"图像","遮罩":"遮罩","功能节点":"功能节点"},output:{"采样":"采样","正面条件":"正面条件","负面条件":"负面条件","潜空间":"潜空间"},widget:{Sigmas:"Sigmas","分离Sigmas步数":"分离Sigmas步数","分离降噪":"分离降噪","降噪":"降噪","添加噪声":"添加噪声",seed:"seed","生成数量":"生成数量"}},fast_outputResult:{category:"Fast Outputs",nodes:["fast outputResult","fast outputResultVideo","fast outputLatent"],input:{"采样":"采样","噪声":"噪声","模型加载器":"模型加载器"},output:{"图像":"图像序列","图像序列":"图像","输出":"输出","降噪输出":"降噪输出",VAE:"VAE"},widget:{"采样预览":"采样预览","VAE解码":"VAE解码","图像输出":"视频输出","视频输出":"图像输出","保存路径":"保存路径"}},fast_loadImage:{category:"Fast LoadImage",nodes:["fast loadImage","fast loadImageList"],output:{"图像":"图像","遮罩":"遮罩","文件名":"文件名"},widget:{"模式":"模式","图像":"图像","路径":"路径","最大张数":"最大张数","开始索引":"开始索引",Base64:"Base64","链接":"链接"}}};function Ti(e,t,i){return function(){!function(e,t,i){var s;const n=LiteGraph.createNode(t);if(n){if(he.graph.add(n),n.pos=e.pos.slice(),n.size=e.size.slice(),(null==(s=e.widgets)?void 0:s.length)>0&&e.widgets.forEach((e=>{var t,s,a;if(null==(s=null==(t=Ii[i])?void 0:t.widget)?void 0:s[e.name]){const t=Ii[i].widget[e.name];if(t&&n.widgets){const i=(a=t,n.widgets.find((e=>"object"==typeof a?a.includes(e.name):e.name===a)));i&&(i.value=e.value,"seed_num"==e.name&&(i.linkedWidgets[0].value=e.linkedWidgets[0].value),"converted-widget"==e.type&&zi(n,i,e))}}})),e.inputs&&e.inputs.forEach(((t,s)=>{var a,o,l;if(t&&t.link&&(null==(o=null==(a=Ii[i])?void 0:a.input)?void 0:o[t.name])){const s=null==(l=Ii[i])?void 0:l.input[t.name];if(null===s)return;const a=n.findInputSlot(s);if(-1!==a){const i=e.graph.links[t.link];if(i){const t=e.graph.getNodeById(i.origin_id);t&&t.connect(i.origin_slot,n,a)}}}})),e.outputs&&e.outputs.forEach(((t,s)=>{var a,o;if(t&&t.links&&(null==(o=null==(a=Ii[i])?void 0:a.output)?void 0:o[t.name])){const s=Ii[i].output[t.name];if(null===s)return;const a=n.findOutputSlot(s);-1!==a&&t.links.forEach((t=>{const i=e.graph.links[t];if(i){const t=e.graph.getNodeById(i.target_id);t&&n.connect(a,t,i.target_slot)}}))}})),he.graph.remove(e),"easy fullkSampler"==n.type){const e=n.outputs[0].links;if(e&&e[0]){const t=he.graph._nodes.find((t=>t.inputs&&t.inputs[0]&&t.inputs[0].link==e[0]));t&&he.graph.remove(t)}}else if(Ii.preSampling.nodes.includes(n.type)){const e=n.outputs[0].links;if(!e||!e[0]){const e=LiteGraph.createNode("easy kSampler");he.graph.add(e),e.pos=n.pos.slice(),e.pos[0]=e.pos[0]+n.size[0]+20;const t=n.findInputSlot("pipe");-1!==t&&n&&n.connect(0,e,t)}}n.setSize([n.size[0],n.computeSize()[1]])}}(e,t,i)}}const Oi=(e,t)=>{const i=e.prototype.getExtraMenuOptions;e.prototype.getExtraMenuOptions=function(){const e=i.apply(this,arguments);return t.apply(this,arguments),e}},Mi=(e,t,i,s,n=!0)=>{Oi(s,(function(s,a){a.unshift({content:e,has_submenu:n,callback:(e,s,n,a,o)=>Di(e,s,n,a,o,t,i)}),"loaders"==t&&(a.unshift({content:ke("💎 View Lora Info..."),callback:(e,t,i,s,n)=>{let a=n.widgets.find((e=>"lora_name"==e.name)).value;a&&"None"!=a&&new Ci(a).show("loras",a)}}),a.unshift({content:ke("💎 View Checkpoint Info..."),callback:(e,t,i,s,n)=>{let a=n.widgets[0].value;a&&"None"!=a&&new Ni(a).show("checkpoints",a)}}))}))},Di=(e,t,i,s,n,a,o)=>{const l=[];return o.map((e=>{n.type!==e&&l.push({content:`${e}`,callback:Ti(n,e,a)})})),new LiteGraph.ContextMenu(l,{event:i,callback:null,parentMenu:s,node:n}),!1},Ri="converted-widget",Pi=Symbol();function Gi(e,t,i=""){if(t.origType=t.type,t.origComputeSize=t.computeSize,t.origSerializeValue=t.serializeValue,t.computeSize=()=>[0,-4],t.type=Ri+i,t.serializeValue=()=>{if(!e.inputs)return;let i=e.inputs.find((e=>{var i;return(null==(i=e.widget)?void 0:i.name)===t.name}));return i&&i.link?t.origSerializeValue?t.origSerializeValue():t.value:void 0},t.linkedWidgets)for(const s of t.linkedWidgets)Gi(e,s,":"+t.name)}function zi(e,t,i){Gi(e,t);const{type:s}=function(e){let t=e[0];t instanceof Array&&(t="COMBO");return{type:t}}(i),n=e.size;t.options&&t.options.forceInput||e.addInput(t.name,s,{widget:{name:t.name,[Pi]:()=>i}});for(const a of e.widgets)a.last_y+=LiteGraph.NODE_SLOT_HEIGHT;e.setSize([Math.max(n[0],e.size[0]),Math.max(n[1],e.size[1])])}const Vi=function(e){var t,i,s,n;const a=e.constructor.type,o=e.properties.origVals||{},l=o.title||e.title,r=o.color||e.color,d=o.bgcolor||e.bgcolor,u=e,A={size:[...e.size],color:r,bgcolor:d,pos:[...e.pos]};let c=[],p=[];if(e.inputs)for(const g of e.inputs)if(g.link){const t=g.name,i=e.findInputSlot(t),s=e.getInputNode(i),n=e.getInputLink(i);c.push([n.origin_slot,s,t])}if(e.outputs)for(const g of e.outputs)if(g.links){const e=g.name;for(const t of g.links){const i=graph.links[t],s=graph._nodes_by_id[i.target_id];p.push([e,s,i.target_slot])}}he.graph.remove(e);let h=he.graph.add(LiteGraph.createNode(a,l,A));function m(){if(u.widgets)for(let e of u.widgets)if("converted-widget"===e.type){const t=h.widgets.find((t=>t.name===e.name));for(let i of u.inputs)i.name===e.name&&zi(h,t,i.widget)}for(let e of c){const[t,i,s]=e;i.connect(t,h.id,s)}for(let e of p){const[t,i,s]=e;h.connect(t,i,s)}}h.inputs.map(((t,i)=>{h.inputs[i].label=e.inputs[i].label})),h.outputs.map(((t,i)=>{h.outputs[i].label=e.outputs[i].label}));let f=u.widgets_values;if(!f&&(null==(t=h.widgets)?void 0:t.length)>0)return h.widgets.forEach(((e,t)=>{const i=u.widgets[t];e.name===i.name&&e.type===i.type&&(e.value=i.value)})),void m();if(f){let e=function(e,t){var i,s,n,a,o,l;if(!0===e||!1===e){if((null==(i=t.options)?void 0:i.on)&&(null==(s=t.options)?void 0:s.off))return{value:e,pass:!0}}else if("number"==typeof e){if((null==(n=t.options)?void 0:n.min)<=e&&e<=(null==(a=t.options)?void 0:a.max))return{value:e,pass:!0}}else{if(null==(l=null==(o=t.options)?void 0:o.values)?void 0:l.includes(e))return{value:e,pass:!0};if(t.inputEl&&"string"==typeof e)return{value:e,pass:!0}}return{value:t.value,pass:!1}},t=!1;const a=(null==f?void 0:f.length)<=(null==(i=h.widgets)?void 0:i.length);let o=a?0:f.length-1;const l=i=>{var s;const n=u.widgets[i];let l=h.widgets[i];if(l.name===n.name&&l.type===n.type){for(;(a?o=0)&&!t;){let{value:t,pass:i}=e(f[o],l);if(i&&null!==t){l.value=t;break}o+=a?1:-1}o++,a||(o=f.length-((null==(s=h.widgets)?void 0:s.length)-1-i))}};if(a&&(null==(s=h.widgets)?void 0:s.length)>0)for(let i=0;i0)for(let i=h.widgets.length-1;i>=0;i--)l(i)}m()};he.registerExtension({name:"Comfy.EasyUse.ExtraMenu",async beforeRegisterNodeDef(e,t,i){Oi(e,(function(e,i){i.unshift({content:ke("🔃 Reload Node"),callback:(e,t,i,s,n)=>{let a=LGraphCanvas.active_canvas;if(!a.selected_nodes||Object.keys(a.selected_nodes).length<=1)Vi(n);else for(let o in a.selected_nodes)Vi(a.selected_nodes[o])}}),"easy ckptNames"==t.name&&i.unshift({content:ke("💎 View Checkpoint Info..."),callback:(e,t,i,s,n)=>{n.widgets[0].value}})}));for(const s in Ii)Ii[s].nodes.includes(t.name)&&Mi(`↪️ Swap ${Ii[s].category}`,s,Ii[s].nodes,e)}});const ji=LiteGraph.LGraphNode,Wi="➡️";he.registerExtension({name:"easy setNode",registerCustomNodes(){class e extends ji{constructor(t){super("Set"),v(this,"defaultVisibility",!0),v(this,"serialize_widgets",!0),this.properties||(this.properties={previousName:""}),this.properties.showOutputText=e.defaultVisibility;const i=this;i.color=LGraphCanvas.node_colors.blue.color,this.addWidget("text","Constant","",((e,t,s,n,a)=>{i.validateName(i.graph),""!==this.widgets[0].value&&(this.title=Wi+this.widgets[0].value),this.properties.previousName=this.widgets[0].value,this.update()}),{}),this.addInput("*","*"),this.onConnectionsChange=function(e,t,s,n,a){if(1!=e||s||(this.inputs[t].type="*",this.inputs[t].name="*",this.title="Set"),n&&i.graph&&1==e&&s){const e=i.graph._nodes.find((e=>e.id==n.origin_id)).outputs[n.origin_slot];if(!e)return;const t=e.type,s=i.is_auto_link?this.widgets[0].value:e.name;"Set"===this.title&&(this.title=Wi+s,this.widgets[0].value=s),"*"===this.widgets[0].value&&(this.widgets[0].value=s),this.validateName(i.graph),this.inputs[0]&&(this.inputs[0].type=t,this.inputs[0].name=s),setTimeout((e=>{this.title=Wi+this.widgets[0].value,this.properties.previousName=this.widgets[0].value}),1)}this.update()},this.validateName=function(e){let t=i.widgets[0].value;if(""!=t){let s=0,n=[];do{n=e._nodes.filter((e=>e!=this&&("easy setNode"==e.type&&e.widgets[0].value===t))),n.length>0&&(t=i.widgets[0].value+s),s++}while(n.length>0);i.widgets[0].value=t,this.update()}},this.clone=function(){const t=e.prototype.clone.apply(this);return t.inputs[0].name="*",t.inputs[0].type="*",t.properties.previousName="",t.size=t.computeSize(),t},this.onAdded=function(e){this.validateName(e)},this.update=function(){if(i.graph){this.findGetters(i.graph).forEach((e=>{e.setType(this.inputs[0].type)})),this.widgets[0].value&&this.findGetters(i.graph,!0).forEach((e=>{e.setName(this.widgets[0].value)}));i.graph._nodes.filter((e=>"easy getNode"==e.type)).forEach((e=>{e.setComboValues&&e.setComboValues()}))}},this.findGetters=function(e,t){const i=t?this.properties.previousName:this.widgets[0].value;return e._nodes.filter((e=>"easy getNode"==e.type&&e.widgets[0].value===i&&""!=i))},this.isVirtualNode=!0}onRemoved(){this.graph._nodes.filter((e=>"easy getNode"==e.type)).forEach((e=>{e.setComboValues&&e.setComboValues([this])}))}}LiteGraph.registerNodeType("easy setNode",Object.assign(e,{title:"Set"})),e.category="EasyUse/Util"}}),he.registerExtension({name:"easy getNode",registerCustomNodes(){class e extends ji{constructor(t){super("Get"),v(this,"defaultVisibility",!0),v(this,"serialize_widgets",!0),this.properties||(this.properties={}),this.properties.showOutputText=e.defaultVisibility;const i=this;i.color=LGraphCanvas.node_colors.blue.color,this.addWidget("combo","Constant","",(e=>{this.onRename()}),{values:()=>i.graph._nodes.filter((e=>"easy setNode"==e.type)).map((e=>e.widgets[0].value)).sort()}),this.addOutput("*","*"),this.onConnectionsChange=function(e,t,i,s,n){this.validateLinks(),2!=e||i?(this.onRename(),setTimeout((e=>{this.title="⬅️"+this.widgets[0].value}),1)):(this.outputs[t].type="*",this.outputs[t].name="*",this.title="Get")},this.setName=function(e){i.widgets[0].value=e,i.onRename(),i.serialize()},this.onRename=function(e=0){const t=this.findSetter(i.graph);if(t){const i=t.inputs[0].type,s=t.inputs[0].name;this.setType(i,s),this.outputs[e].type=i,this.outputs[e].name=s,this.title="⬅️"+t.widgets[0].value}else this.setType("*","*"),this.outputs[e].type="*",this.outputs[e].name="*"},this.clone=function(){const t=e.prototype.clone.apply(this);return t.size=t.computeSize(),t},this.validateLinks=function(){"*"!=this.outputs[0].type&&this.outputs[0].links&&this.outputs[0].links.forEach((e=>{const t=i.graph.links[e];t&&t.type!=this.outputs[0].type&&"*"!=t.type&&i.graph.removeLink(e)}))},this.setType=function(e,t){this.outputs[0].name=t,this.outputs[0].type=e,this.validateLinks()},this.findSetter=function(e){const t=this.widgets[0].value;return e._nodes.find((e=>"easy setNode"==e.type&&e.widgets[0].value===t&&""!=t))},this.isVirtualNode=!0}getInputLink(e){const t=this.findSetter(this.graph);if(t){const i=t.inputs[e];return this.graph.links[i.link]}throw new Error("No setter found for "+this.widgets[0].value+"("+this.type+")")}onAdded(e){}}LiteGraph.registerNodeType("easy getNode",Object.assign(e,{title:"Get"})),e.category="EasyUse/Util"}}),me.addEventListener("easyuse-global-seed",(function(e){let t=app.graph._nodes_by_id;for(let i in t){let s=t[i];if("easy globalSeed"==s.type){if(s.widgets){const t=s.widgets.find((e=>"value"==e.name));s.widgets.find((e=>"last_seed"==e.name)).value=t.value,t.value=e.detail.value}}else if(s.widgets){const t=s.widgets.find((e=>"seed_num"==e.name||"seed"==e.name||"noise_seed"==e.name));t&&null!=e.detail.seed_map[s.id]&&(t.value=e.detail.seed_map[s.id])}}}));const Ui=me.queuePrompt;me.queuePrompt=async function(e,{output:t,workflow:i},s={}){i.seed_widgets={};for(let n in app.graph._nodes_by_id){let e=app.graph._nodes_by_id[n].widgets;if(e)for(let t in e)"seed_num"!=e[t].name&&"seed"!=e[t].name&&"noise_seed"!=e[t].name||"converted-widget"==e[t].type||(i.seed_widgets[n]=parseInt(t))}return await Ui.call(me,e,{output:t,workflow:i},s)};const Fi=["easy imageSave","easy fullkSampler","easy kSampler","easy kSamplerTiled","easy kSamplerInpainting","easy kSamplerDownscaleUnet","easy kSamplerSDTurbo","easy detailerFix"];he.registerExtension({name:"Comfy.EasyUse.SaveImageExtraOutput",async beforeRegisterNodeDef(e,t,i){if(Fi.includes(t.name)){const t=e.prototype.onNodeCreated;e.prototype.onNodeCreated=function(){const e=t?t.apply(this,arguments):void 0,s=this.widgets.find((e=>"filename_prefix"===e.name||"save_prefix"===e.name));return s.serializeValue=()=>ye(i,s.value),e}}else{const t=e.prototype.onNodeCreated;e.prototype.onNodeCreated=function(){const e=t?t.apply(this,arguments):void 0;return this.properties&&"Node name for S&R"in this.properties||this.addProperty("Node name for S&R",this.constructor.type,"string"),e}}}});const Xi=["easy wildcards","easy positive","easy negative","easy stylesSelector","easy promptConcat","easy promptReplace"],Zi=["easy preSampling","easy preSamplingAdvanced","easy preSamplingNoiseIn","easy preSamplingCustom","easy preSamplingDynamicCFG","easy preSamplingSdTurbo","easy preSamplingLayerDiffusion"],qi=["easy kSampler","easy kSamplerTiled","easy kSamplerInpainting","easy kSamplerDownscaleUnet","easy kSamplerSDTurbo"],Hi=["easy controlnetLoader","easy controlnetLoaderADV"],Yi=["easy instantIDApply","easy instantIDApplyADV"],Ki=["easy ipadapterApply","easy ipadapterApplyADV","easy ipadapterApplyFaceIDKolors","easy ipadapterStyleComposition"],Ji=["easy pipeIn","easy pipeOut","easy pipeEdit","easy pipeEditPrompt"],Bi=["easy XYPlot","easy XYPlotAdvanced"],Qi=["easy setNode"],$i=["RescaleCFG","LoraLoaderModelOnly","LoraLoader","FreeU","FreeU_v2",...Ki,...Qi],es={"easy seed":{from:{INT:[...Zi,"easy fullkSampler"]}},"easy positive":{from:{STRING:[...Xi]}},"easy negative":{from:{STRING:[...Xi]}},"easy wildcards":{from:{STRING:["easy showAnything",...Xi]}},"easy stylesSelector":{from:{STRING:["easy showAnything",...Xi]}},"easy promptConcat":{from:{STRING:["easy showAnything",...Xi]}},"easy promptReplace":{from:{STRING:["easy showAnything",...Xi]}},"easy fullLoader":{from:{PIPE_LINE:[...Zi,"easy fullkSampler",...Ji,...Qi],MODEL:$i},to:{STRING:[...Xi]}},"easy a1111Loader":{from:{PIPE_LINE:[...Zi,...Hi,...Yi,...Ji,...Qi],MODEL:$i},to:{STRING:[...Xi]}},"easy comfyLoader":{from:{PIPE_LINE:[...Zi,...Hi,...Yi,...Ji,...Qi],MODEL:$i},to:{STRING:[...Xi]}},"easy hunyuanDiTLoader":{from:{PIPE_LINE:[...Zi,...Hi,...Yi,...Ji,...Qi],MODEL:$i},to:{STRING:[...Xi]}},"easy kolorsLoader":{from:{PIPE_LINE:[...Zi,...Hi,...Yi,...Ji,...Qi],MODEL:$i},to:{STRING:[...Xi]}},"easy pixArtLoader":{from:{PIPE_LINE:[...Zi,...Hi,...Yi,...Ji,...Qi],MODEL:$i},to:{STRING:[...Xi]}},"easy fluxLoader":{from:{PIPE_LINE:[...Zi,...Hi,...Yi,...Ji,...Qi],MODEL:$i},to:{STRING:[...Xi]}},"easy svdLoader":{from:{PIPE_LINE:["easy preSampling","easy preSamplingAdvanced","easy preSamplingDynamicCFG",...Ji,...Qi],MODEL:$i},to:{STRING:[...Xi]}},"easy zero123Loader":{from:{PIPE_LINE:["easy preSampling","easy preSamplingAdvanced","easy preSamplingDynamicCFG",...Ji,...Qi],MODEL:$i},to:{STRING:[...Xi]}},"easy sv3dLoader":{from:{PIPE_LINE:["easy preSampling","easy preSamplingAdvanced","easy preSamplingDynamicCFG",...Ji,...Qi],MODEL:$i},to:{STRING:[...Xi]}},"easy preSampling":{from:{PIPE_LINE:[...qi,...Ji,...Hi,...Bi,...Qi]}},"easy preSamplingAdvanced":{from:{PIPE_LINE:[...qi,...Ji,...Hi,...Bi,...Qi]}},"easy preSamplingDynamicCFG":{from:{PIPE_LINE:[...qi,...Ji,...Hi,...Bi,...Qi]}},"easy preSamplingCustom":{from:{PIPE_LINE:[...qi,...Ji,...Hi,...Bi,...Qi]}},"easy preSamplingLayerDiffusion":{from:{PIPE_LINE:["easy kSamplerLayerDiffusion",...qi,...Ji,...Hi,...Bi,...Qi]}},"easy preSamplingNoiseIn":{from:{PIPE_LINE:[...qi,...Ji,...Hi,...Bi,...Qi]}},"easy fullkSampler":{from:{PIPE_LINE:[...Ji.reverse(),"easy preDetailerFix","easy preMaskDetailerFix",...Zi,...Qi]}},"easy kSampler":{from:{PIPE_LINE:[...Ji.reverse(),"easy preDetailerFix","easy preMaskDetailerFix","easy hiresFix",...Zi,...Qi]}},"easy controlnetLoader":{from:{PIPE_LINE:[...Zi,...Hi,...Yi,...Ji,...Qi]}},"easy controlnetLoaderADV":{from:{PIPE_LINE:[...Zi,...Hi,...Yi,...Ji,...Qi]}},"easy instantIDApply":{from:{PIPE_LINE:[...Zi,...Hi,...Yi,...Ji,...Qi],MODEL:$i},to:{COMBO:["easy promptLine"]}},"easy instantIDApplyADV":{from:{PIPE_LINE:[...Zi,...Hi,...Yi,...Ji,...Qi],MODEL:$i},to:{COMBO:["easy promptLine"]}},"easy ipadapterApply":{to:{COMBO:["easy promptLine"]}},"easy ipadapterApplyADV":{to:{STRING:["easy sliderControl",...Xi],COMBO:["easy promptLine"]}},"easy ipadapterStyleComposition":{to:{COMBO:["easy promptLine"]}},"easy preDetailerFix":{from:{PIPE_LINE:["easy detailerFix",...Ji,...Qi]},to:{PIPE_LINE:["easy ultralyticsDetectorPipe","easy samLoaderPipe","easy kSampler","easy fullkSampler"]}},"easy preMaskDetailerFix":{from:{PIPE_LINE:["easy detailerFix",...Ji,...Qi]}},"easy samLoaderPipe":{from:{PIPE_LINE:["easy preDetailerFix",...Ji,...Qi]}},"easy ultralyticsDetectorPipe":{from:{PIPE_LINE:["easy preDetailerFix",...Ji,...Qi]}},"easy cascadeLoader":{from:{PIPE_LINE:["easy fullCascadeKSampler","easy preSamplingCascade",...Hi,...Ji,...Qi],MODEL:$i.filter((e=>!Ki.includes(e)))}},"easy fullCascadeKSampler":{from:{PIPE_LINE:["easy preSampling","easy preSamplingAdvanced",...Ji,...Qi]}},"easy preSamplingCascade":{from:{PIPE_LINE:["easy cascadeKSampler",...Ji,...Qi]}},"easy cascadeKSampler":{from:{PIPE_LINE:["easy preSampling","easy preSamplingAdvanced",...Ji,...Qi]}},"easy pipeEdit":{from:{PIPE_LINE:[...Zi,...Hi,...Yi,...Qi]},to:{PIPE_LINE:[...Zi,...Hi,...Yi,...Ji,...Qi]}},"easy pipeEditPrompt":{from:{PIPE_LINE:[...Zi,...Hi,...Yi,...Qi]},to:{PIPE_LINE:[...Zi,...Hi,...Yi,...Ji,...Qi]}}};class ts extends Error{constructor(e="Attempted to access LGraph reference that was null or undefined.",t){super(e,{cause:t}),this.name="NullGraphError"}}he.registerExtension({name:"Comfy.EasyUse.Suggestions",async setup(e){const t=LGraphCanvas.prototype.createDefaultNodeForSlot;LGraphCanvas.prototype.createDefaultNodeForSlot=function(e){var i;const s=Object.assign({nodeFrom:null,slotFrom:null,nodeTo:null,slotTo:null,position:[],nodeType:null,posAdd:[0,0],posSizeFix:[0,0]},e||{}),n=this,a=s.nodeFrom&&null!==s.slotFrom,o=!a&&s.nodeTo&&null!==s.slotTo,l=a?s.nodeFrom:s.nodeTo;if(!l||!Object.keys(es).includes(l.type))return t.call(this,e);if(!a&&!o)return!1;if(!s.nodeType)return!1;const r=a?s.nodeFrom:s.nodeTo;if(!r)throw new TypeError("nodeX was null when creating default node for slot.");const d=r.type;let u=a?s.slotFrom:s.slotTo,A=!1;switch(typeof u){case"string":A=a?r.findOutputSlot(u,!1):r.findInputSlot(u,!1),u=a?r.outputs[u]:r.inputs[u];break;case"object":if(null===u)return!1;A=a?r.findOutputSlot(u.name):r.findInputSlot(u.name);break;case"number":A=u,u=a?r.outputs[u]:r.inputs[u];break;default:return!1}var c=u.type==LiteGraph.EVENT?"_event_":u.type,p=a?LiteGraph.slot_types_default_out:LiteGraph.slot_types_default_in;if(null==p?void 0:p[c]){let e=!1;const t=a?"from":"to";if(es[d]&&es[d][t]&&(null==(i=es[d][t][c])?void 0:i.length)>0){for(var h in es[d][t][c])if(s.nodeType==es[d][t][c][h]||"AUTO"==s.nodeType){e=es[d][t][c][h];break}}else if("object"==typeof p[c]||"array"==typeof p[c]){for(var h in p[c])if(s.nodeType==p[c][h]||"AUTO"==s.nodeType){e=p[c][h];break}}else s.nodeType!=p[c]&&"AUTO"!=s.nodeType||(e=p[c]);if(e){var m=!1;"object"==typeof e&&e.node&&(m=e,e=e.node);var f=LiteGraph.createNode(e);if(f){if(m){if(m.properties)for(var g in m.properties)f.addProperty(g,m.properties[g]);if(m.inputs)for(var g in f.inputs=[],m.inputs)f.addOutput(m.inputs[g][0],m.inputs[g][1]);if(m.outputs)for(var g in f.outputs=[],m.outputs)f.addOutput(m.outputs[g][0],m.outputs[g][1]);m.title&&(f.title=m.title),m.json&&f.configure(m.json)}n.graph.add(f),f.pos=[s.position[0]+s.posAdd[0]+(s.posSizeFix[0]?s.posSizeFix[0]*f.size[0]:0),s.position[1]+s.posAdd[1]+(s.posSizeFix[1]?s.posSizeFix[1]*f.size[1]:0)];const e={node:f,opts:s};if(!this.canvas.dispatchEvent(new CustomEvent("connect-new-default-node",{detail:e,cancelable:!0})))return!0;if(a){if(!s.nodeFrom)throw new TypeError("createDefaultNodeForSlot - nodeFrom was null");s.nodeFrom.connectByType(A,f,c)}else{if(!s.nodeTo)throw new TypeError("createDefaultNodeForSlot - nodeTo was null");s.nodeTo.connectByTypeOutput(A,f,c)}return!0}}}return!1};let i=LGraphCanvas.prototype.showConnectionMenu;LGraphCanvas.prototype.showConnectionMenu=function(e){var t;const s=Object.assign({nodeFrom:null,slotFrom:null,nodeTo:null,slotTo:null,e:void 0,allow_searchbox:this.allow_searchbox,showSearchBox:this.showSearchBox},e||{}),n=this,{graph:a}=this,{afterRerouteId:o}=s,l=s.nodeFrom&&s.slotFrom,r=!l&&s.nodeTo&&s.slotTo,d=l?s.nodeFrom:s.nodeTo;if(!d||!Object.keys(es).includes(d.type))return i.call(this,e);if(!l&&!r)return!1;const u=l?s.nodeFrom:s.nodeTo;if(!u)throw new TypeError("nodeX was null when creating default node for slot.");let A=l?s.slotFrom:s.slotTo,c=!1;switch(typeof A){case"string":c=l?u.findOutputSlot(A,!1):u.findInputSlot(A,!1),A=l?u.outputs[A]:u.inputs[A];break;case"object":if(null===A)return;c=l?u.findOutputSlot(A.name):u.findInputSlot(A.name);break;case"number":c=A,A=l?u.outputs[A]:u.inputs[A];break;default:return!1}const p=["Add Node","Add Reroute",null];s.allow_searchbox&&p.push("Search",null);var h=A.type==LiteGraph.EVENT?"_event_":A.type,m=l?LiteGraph.slot_types_default_out:LiteGraph.slot_types_default_in,f=u.type;if(m&&m[h]){const e=l?"from":"to";if(es[f]&&es[f][e]&&(null==(t=es[f][e][h])?void 0:t.length)>0)for(var g in es[f][e][h])p.push(es[f][e][h][g]);else if("object"==typeof m[h]||"array"==typeof m[h])for(var g in m[h])p.push(m[h][g]);else p.push(m[h])}var v=new LiteGraph.ContextMenu(p,{event:s.e,extra:A,title:(A&&""!=A.name?A.name+(h?" | ":""):"")+(A&&h?h:""),callback:function(e,t,i){var r,d;switch(e){case"Add Node":LGraphCanvas.onMenuAdd(null,null,i,v,(function(e){var t,i;e&&(l?null==(t=s.nodeFrom)||t.connectByType(c,e,h,{afterRerouteId:o}):null==(i=s.nodeTo)||i.connectByTypeOutput(c,e,h,{afterRerouteId:o}))}));break;case"Add Reroute":const u=l?s.nodeFrom:s.nodeTo,p=t.extra;if(!a)throw new ts;if(!u)throw new TypeError("Cannot add reroute: node was null");if(!p)throw new TypeError("Cannot add reroute: slot was null");if(!s.e)throw new TypeError("Cannot add reroute: CanvasPointerEvent was null");if(!u.connectFloatingReroute([s.e.canvasX,s.e.canvasY],p,o))throw new Error("Failed to create reroute");n.dirty_canvas=!0,n.dirty_bgcanvas=!0;break;case"Search":l?s.showSearchBox(i,{node_from:s.nodeFrom,slot_from:A,type_filter_in:h}):s.showSearchBox(i,{node_to:s.nodeTo,slot_from:A,type_filter_out:h});break;default:const m={position:[(null==(r=s.e)?void 0:r.canvasX)??0,(null==(d=s.e)?void 0:d.canvasY)??0],nodeType:e,afterRerouteId:o};n.createDefaultNodeForSlot(Object.assign(s,m))}}});return v}}}),he.registerExtension({name:"Comfy.EasyUse.TimeTaken",setup(){let e=new Map,t=0;me.addEventListener("execution_start",(e=>{graph&&graph._nodes.forEach((e=>{e.executionDuration&&delete e.executionDuration}))})),me.addEventListener("executing",(i=>{if(!_e("EasyUse.Nodes.Runtime",null))return;const s=(null==i?void 0:i.node)||(null==i?void 0:i.detail)||null,n=e.get(t);if(e.delete(t),t&&n){const e=Date.now()-n,i=St(t);i&&(i.executionDuration||(i.executionDuration=0),i.executionDuration=i.executionDuration+e/1e3)}t=s,e.set(s,Date.now())}))},beforeRegisterNodeDef(e,t){const i=e.prototype.onDrawForeground;e.prototype.onDrawForeground=function(...e){const[t]=e;return function(e,t){if(!t)return;t=parseFloat(t).toFixed(3)+ke("s"),e.save(),e.fillStyle=LiteGraph.NODE_DEFAULT_BGCOLOR,function(e,t,i,s,n,a){e.beginPath(),e.moveTo(t+a,i),e.lineTo(t+s-a,i),e.arcTo(t+s,i,t+s,i+a,a),e.lineTo(t+s,i+n-a),e.arcTo(t+s,i+n,t+s-a,i+n,a),e.lineTo(t+a,i+n),e.arcTo(t,i+n,t,i+n-a,a),e.lineTo(t,i+a),e.arcTo(t,i,t+a,i,a),e.closePath()}(e,0,-LiteGraph.NODE_TITLE_HEIGHT-20,e.measureText(t).width+10,LiteGraph.NODE_TITLE_HEIGHT-10,4),e.fill(),function(e,t,i,s,n="#000",a=12,o="Inter"){e.font=`${a}px ${o}`,e.fillStyle=n,e.fillText(t,i,s)}(e,t,8,-LiteGraph.NODE_TITLE_HEIGHT-6,LiteGraph.NODE_TITLE_COLOR),e.restore()}(t,this.executionDuration),null==i?void 0:i.apply(this,e)}}});let is=null;he.registerExtension({name:"Comfy.EasyUse.HotKeys",setup(){if(void 0!==L){L("up,down,left,right",(function(e,t){var i,s,n,a,o,l,r,d,u,A,c,p,h,m,f;e.preventDefault();if(!_e("EasyUse.Hotkeys.JumpNearestNodes",null))return;const g=Lt();if(0===g.length)return;const v=g[0];switch(t.key){case"up":case"left":let e=null;if(It(v)){const e=null==(i=v.widgets_values)?void 0:i[0],t=null==(s=v.graph)?void 0:s._nodes,n=null==t?void 0:t.find((t=>{var i;if(Tt(t)){if((null==(i=t.widgets_values)?void 0:i[0])===e)return t}return null}));n&&kt(n)}else if((null==(n=v.inputs)?void 0:n.length)>0){for(let t=0;t{var i;if(It(t)){if((null==(i=t.widgets_values)?void 0:i[0])===e)return t}return null}));i&&kt(i)}else if((null==(A=v.outputs)?void 0:A.length)>0){for(let e=0;e0&&v.outputs[e].links[0]){t=v.outputs[e].links[0];break}if(t){const e=null==(p=v.graph)?void 0:p.links;if(e[t]){const i=null==(h=e[t])?void 0:h.target_id,s=null==(f=null==(m=v.graph)?void 0:m._nodes_by_id)?void 0:f[i];s&&kt(s)}}}}})),L("shift+up,shift+down,shift+left,shift+right,shift+alt+⌘+left,shift+alt+⌘+right,shift+alt+ctrl+left,shift+alt+ctrl+right",(function(e,t){e.preventDefault();if(!_e("EasyUse.Hotkeys.AlignSelectedNodes",null))return;const i=Lt();if(i.length<=1)return;const s=i;switch(t.key){case"shift+up":LGraphCanvas.alignNodes(s,"top",s[0]);break;case"shift+down":LGraphCanvas.alignNodes(s,"bottom",s[0]);break;case"shift+left":LGraphCanvas.alignNodes(s,"left",s[0]);break;case"shift+right":LGraphCanvas.alignNodes(s,"right",s[0]);break;case"shift+alt+ctrl+left":case"shift+alt+⌘+left":Ut(s,"horizontal");break;case"shift+alt+ctrl+right":case"shift+alt+⌘+right":Ut(s,"vertical")}is||(is=He()),is&&is.update()})),L("shift+⌘+left,shift+⌘+right,shift+ctrl+left,shift+ctrl+right",(function(e,t){e.preventDefault();if(!_e("EasyUse.Hotkeys.NormalizeSelectedNodes",null))return;const i=Lt();if(i.length<=1)return;const s=i;switch(t.key){case"shift+ctrl+left":case"shift+⌘+left":Wt(s,"width");break;case"shift+ctrl+right":case"shift+⌘+right":Wt(s,"height")}is||(is=He()),is&&is.update()})),L("shift+g",(function(e,t){e.preventDefault();_e("EasyUse.Hotkeys.AddGroup",null)&&(ns(),is||(is=He()),is&&is.update())})),L("shift+r",(function(e,t){e.preventDefault();_e("EasyUse.Hotkeys.cleanVRAMused",null)&&gi()})),L("shift+m",(function(e,t){var i,s,n;if(!_e("EasyUse.Hotkeys.toggleNodesMap",null))return;let a=(null==(i=he.extensionManager)?void 0:i.sidebarTab)||he.extensionManager,o=(null==(s=he.extensionManager.sidebarTab)?void 0:s.activeSidebarTabId)||(null==(n=he.extensionManager)?void 0:n.activeSidebarTab);a.activeSidebarTabId=o==De?null:De}));const e=[];Array.from(Array(10).keys()).forEach((t=>e.push(`alt+${t}`))),L(e.join(","),(async function(e,t){e.preventDefault();if(!_e("EasyUse.Hotkeys.NodesTemplate",null))return;const i=t.key;let s=parseInt(i.split("+")[1]);const n=await me.getUserData("comfy.templates.json");let a=null;if(200==n.status)try{a=await n.json()}catch(l){qe.error(ke("Get Node Templates File Failed"))}else localStorage["Comfy.NodeTemplates"]?a=JSON.parse(localStorage["Comfy.NodeTemplates"]):qe.warn(ke("No Node Templates Found"));if(!a)return void qe.warn(ke("No Node Templates Found"));s=0===s?9:s-1;const o=a[s];if(o)try{const e=(null==o?void 0:o.name)||"Group",t=(null==o?void 0:o.data)?JSON.parse(o.data):[];ss((async()=>{await be.registerFromWorkflow(t.groupNodes,{}),localStorage.litegrapheditor_clipboard=o.data,he.canvas.pasteFromClipboard(),t.groupNodes||ns(e)}))}catch(l){qe.error(l)}else qe.warn(ke("Node template with {key} not set").replace("{key}",i))}));const t=async function(e){if(("b"===e.key||"m"==e.key)&&(e.metaKey||e.ctrlKey)){if(0===Lt().length)return;is||(is=He()),is&&is.update()}};window.addEventListener("keydown",t,!0)}}});const ss=async e=>{const t=localStorage.litegrapheditor_clipboard;await e(),localStorage.litegrapheditor_clipboard=t},ns=e=>{const t=Lt();if(0===t.length)return;const i=t;let s=new LiteGraph.LGraphGroup;s.title=e||"Group",((e,t=[],i=20)=>{var s,n,a,o,l,r,d,u,A,c;for(var p of(n=a=o=l=-1,r=d=u=A=-1,[e._nodes,t]))for(var h in p)r=(c=p[h]).pos[0],d=c.pos[1],u=c.pos[0]+c.size[0],A=c.pos[1]+c.size[1],"Reroute"!=c.type&&(d-=LiteGraph.NODE_TITLE_HEIGHT),(null==(s=c.flags)?void 0:s.collapsed)&&(A=d+LiteGraph.NODE_TITLE_HEIGHT,(null==c?void 0:c._collapsed_width)&&(u=r+Math.round(c._collapsed_width))),(-1==n||ro)&&(o=u),(-1==l||A>l)&&(l=A);a-=Math.round(1.4*e.font_size),e.pos=[n-i,a-i],e.size=[o-n+2*i,l-a+2*i]})(s,i),he.canvas.graph.add(s)},as="easy imageChooser",os=e=>(null==e?void 0:e.comfyClass)===as;he.registerExtension({name:"Comfy.EasyUse.imageChooser",setup(){const e=me.interrupt;me.interrupt=function(){var t;(null==(t=he.graph)?void 0:t._nodes_by_id)&&(()=>{var e;Object.values(null==(e=he.graph)?void 0:e._nodes_by_id).forEach((e=>{os(e)&&e.cancelSelection("interrupt")}))})(),e.apply(this,arguments)},me.addEventListener("easyuse-image-choose",(e=>{var t;const i=e.detail,s=he.graph._nodes_by_id[i.id];if(!s||!os(s))return;s.setExecutingState(!1),s.selected_images.clear(),s.anti_selected.clear(),s.isWaitingSelection=["Always Pause","Keep Last Selection"].includes(s.currentMode),s.isCanceling=!1,s.overIndex=null;const n=(null==(t=i.urls)?void 0:t.map(((e,t)=>({index:t,filename:e.filename,subfolder:e.subfolder,type:e.type}))))||[];s.imageData=n,s.imgs=[],n.forEach((e=>{const t=new Image;t.onload=()=>{he.graph.setDirtyCanvas(!0)},t.src=`/view?filename=${encodeURIComponent(e.filename)}${(e=>`&type=${e.type}&subfolder=${e.subfolder}&rand=${e.random}`)(e)}`,s.imgs.push(t)})),s.update(),"Always Pause"===s.currentMode&&s.setExecutingState(!0)})),me.addEventListener("easyuse-image-keep-selection",(e=>{const t=e.detail,i=he.graph._nodes_by_id[t.id];i&&os(i)&&(i.isWaitingSelection=!1,i.isCancelling=!1,t.selected&&Array.isArray(t.selected)&&(i.selected_images.clear(),t.selected.forEach((e=>{i.selected_images.add(e)}))),i.update())}))},beforeRegisterNodeDef(e,t){if(t.name==as){e.prototype.confirmSelection=function(){me.fetchApi("/easyuse/image_chooser_message",{method:"POST",body:JSON.stringify({node_id:this.id.toString(),action:"select",selected:Array.from(this.selected_images)})}).catch((e=>{})).finally((e=>{this.isWaitingSelection=!1,this.update(),this.setExecutingState(!1)}))},e.prototype.cancelSelection=function(e){me.fetchApi("/easyuse/image_chooser_message",{method:"POST",body:JSON.stringify({node_id:this.id.toString(),action:"cancel",selected:[]})}).catch((e=>{})).finally((e=>{this.isCanceling=!1,this.isWaitingSelection=!1,this.update(),this.setExecutingState(!1)}))},e.prototype.updateWidgets=function(){var e;if(!this.confirm_button_widget||!this.cancel_button_widget)return;const t=this.selected_images.size,i=(null==(e=this.imgs)?void 0:e.length)||0;if(this.isCanceling)this.confirm_button_widget.name=ke("Canceling"),this.cancel_button_widget.name="",this.confirm_button_widget.disabled=!0,this.cancel_button_widget.disabled=!0;else if(this.isWaitingSelection)t>0?(this.confirm_button_widget.name=t>1?`${ke("Progress selected")} (${t}/${i})`:`${ke("Progress selected image")}`,this.confirm_button_widget.disabled=!1):(this.confirm_button_widget.name=ke("Please select images to continue"),this.confirm_button_widget.disabled=!0),this.cancel_button_widget.name=ke("Cancel current run"),this.cancel_button_widget.disabled=!1;else{const e={"Always Pause":ke("Waiting for selection..."),"Keep Last Selection":ke("Using last selection")};this.confirm_button_widget.name=(t>0&&"Always Pause"==this.currentMode?ke("Please run first"):null==e?void 0:e[this.currentMode])||ke("Unknown Mode"),this.cancel_button_widget.name="",this.confirm_button_widget.disabled=!0,this.cancel_button_widget.disabled=!0}this.setDirtyCanvas(!0,!0)},e.prototype.serialize=function(){const e=LiteGraph.LGraphNode.prototype.serialize.call(this);return e.isWaitingSelection=this.isWaitingSelection,e.currentMode=this.currentMode,this.imageData&&this.imageData.length>0&&(e.imageData=this.imageData),this.selected_images&&this.selected_images.size>0&&(e.selected_images=Array.from(this.selected_images)),e.isExecuting=this.isExecuting||!1,e},e.prototype.configure=function(e){LiteGraph.LGraphNode.prototype.configure.call(this,e),this.isWaitingSelection=e.isWaitingSelection||!1,this.currentMode=e.currentMode||"Always Pause",this.imgs=[],this.updateWidgets()},e.prototype.setExecutingState=function(e){this.isExecuting=e,he.graph&&he.graph.setDirtyCanvas(!0,!1)};const t=e.prototype.update;e.prototype.update=function(){null==t||t.call(this,arguments),this.updateWidgets()};const i=e.prototype.onNodeCreated;e.prototype.onNodeCreated=function(){null==i||i.call(this,arguments),this.selected_images=new Set,this.anti_selected=new Set,this.currentMode="Always Pause",this.isWaitingSelection=!1,this.isCanceling=!1,this.imageData=[],this.imgs,this.confirm_button_widget=this.addWidget("button","","",(()=>{this.confirmSelection()})),this.cancel_button_widget=this.addWidget("button","","",(()=>{this.cancelSelection()})),this.confirm_button_widget.serialize=!1,this.cancel_button_widget.serialize=!1,setTimeout((e=>{const t=yt(this,"mode");t.callback=e=>{requestAnimationFrame((t=>{this.currentMode=e,this.updateWidgets(),this.setDirtyCanvas(!0,!0)}))},this.currentMode=t.value||"Always Pause",this.updateWidgets()}),1),Object.defineProperty(this.confirm_button_widget,"clicked",{get:function(){return this._clicked},set:function(e){this._clicked=e&&""!=this.name}}),Object.defineProperty(this.cancel_button_widget,"clicked",{get:function(){return this._clicked},set:function(e){this._clicked=e&&""!=this.name}}),Object.defineProperty(this,"imageIndex",{get:function(){return null},set:function(e){this.overIndex=e}}),Object.defineProperty(this,"imagey",{get:function(){var e,t;return(null==(t=null==(e=this.widgets)?void 0:e[this.widgets.length-1])?void 0:t.last_y)+LiteGraph.NODE_WIDGET_HEIGHT},set:function(e){this.imagey=e}});const e=this.onMouseDown;this.onMouseDown=function(t,i,s){if(t.isPrimary){const e=ls(this,i);e>=0&&this.toggleImageSelection(e)}return e&&e.apply(this,arguments)},this.update()},e.prototype.onDrawBackground,e.prototype.onDrawBackground=function(e){!function(e,t,i=0){var s,n;if(!e.imgs||!e.imgs.length)return;const a=he.canvas,o=a.graph_mouse,l=15,r=e.size[0];let d=e.size[1]-i-l;d<200&&(d=200,requestAnimationFrame((t=>{e.size[1]=i+l+200})));if(null==e.imageIndex){let n,l,u,A;if(ds(e.imgs))({cellWidth:n,cellHeight:l,cols:A,shiftX:u}=us(e.imgs,r,d));else{const t=e.imgs.reduce(((e,t)=>Math.max(e,t.naturalWidth,t.naturalHeight)),0),i=[];i.length=null==(s=e.imgs)?void 0:s.length,i[0]={naturalWidth:t,naturalHeight:t},({cellWidth:n,cellHeight:l,cols:A,shiftX:u}=us(i,r,d))}let c=!1,p=e.imgs.length;e.imageRects=[];for(let s=0;s{rs(e,i,t)}));t.strokeStyle="#F88",null==(n=null==e?void 0:e.anti_selected)||n.forEach((i=>{rs(e,i,t)}))}(this,e,this.imagey||0)},e.prototype.toggleImageSelection=function(e){this.selected_images.has(e)?this.selected_images.delete(e):this.selected_images.add(e),this.update()}}}});const ls=(e,t)=>{var i,s;if((null==(i=e.imgs)?void 0:i.length)>1)for(var n=0;n0&&i0&&se.imagey)return 0;return-1};function rs(e,t,i){var s;if(e.imageRects)s=e.imageRects[t];else{const t=e.imagey;s=[1,t+1,e.size[0]-2,e.size[1]-t-2]}i.strokeRect(s[0]+1,s[1]+1,s[2]-2,s[3]-2)}const ds=e=>{if(!e.length||1===e.length)return!0;const t=e[0].naturalWidth/e[0].naturalHeight;for(let i=1;is&&(s=y,l=g,r=v,d=c,u=e,A=c*((p-g)/2))}return{cellWidth:l,cellHeight:r,cols:d,rows:u,shiftX:A}}Number.prototype.div=function(e){return function(e,t){let i,s,n=0,a=0,o="string"==typeof e?e:e.toString(),l="string"==typeof t?t:t.toString();try{n=o.toString().split(".")[1].length}catch(r){}try{a=l.toString().split(".")[1].length}catch(r){}return i=Number(o.toString().replace(".","")),s=Number(l.toString().replace(".","")),i/s*Math.pow(10,a-n)}(this,e)};let As=[],cs=0;const ps={sd3:6.5,"sd3-turbo":4};class hs extends ge{constructor(){super(),this.lists=[],this.dialog_div=null,this.user_div=null}addItem(e,t){return fe("div.easyuse-account-dialog-item",[fe("input",{type:"text",placeholder:"Enter name",oninput:e=>{const t=Array.prototype.indexOf.call(this.dialog_div.querySelectorAll(".easyuse-account-dialog-item"),e.target.parentNode);As[t].name=e.target.value},value:As[e].name}),fe("input.key",{type:"text",oninput:e=>{const t=Array.prototype.indexOf.call(this.dialog_div.querySelectorAll(".easyuse-account-dialog-item"),e.target.parentNode);As[t].key=e.target.value},placeholder:"Enter APIKEY",value:As[e].key}),fe("button.choose",{textContent:ke("Choose"),onclick:async e=>{var i,s,n;const a=Array.prototype.indexOf.call(this.dialog_div.querySelectorAll(".easyuse-account-dialog-item"),e.target.parentNode);let o=As[a].name,l=As[a].key;if(!o)return void qe.error(ke("Please enter the account name"));if(!l)return void qe.error(ke("Please enter the APIKEY"));let r=!0;for(let t=0;t{(new hs).show(t)}},[fe("div.user",[fe("div.avatar",a?[fe("img",{src:a})]:"😀"),fe("div.info",[fe("h5.name",o),fe("h6.remark","Credits: "+l)])]),fe("div.edit",{textContent:ke("Edit")})])),qe.success(ke("Save Succeed"))}else qe.success(ke("Save Succeed"));this.close()}else qe.error(ke("Save Failed"))}}),fe("button.delete",{textContent:ke("Delete"),onclick:e=>{const t=Array.prototype.indexOf.call(this.dialog_div.querySelectorAll(".easyuse-account-dialog-item"),e.target.parentNode);As.length<=1?qe.error(ke("At least one account is required")):(As.splice(t,1),this.dialog_div.removeChild(e.target.parentNode))}})])}show(e){As.forEach(((t,i)=>{this.lists.push(this.addItem(i,e))})),this.dialog_div=fe("div.easyuse-account-dialog",this.lists),super.show(fe("div.easyuse-account-dialog-main",[fe("div",[fe("a",{href:"https://platform.stability.ai/account/keys",target:"_blank",textContent:ke("Getting Your APIKEY")})]),this.dialog_div]))}createButtons(){const e=super.createButtons();return e.unshift(fe("button",{type:"button",textContent:ke("Save Account Info"),onclick:e=>{let t=!0;for(let i=0;i{200==e.status?qe.success(ke("Save Succeed")):qe.error(ke("Save Failed"))}))}else qe.error(ke("APIKEY is not Empty"))}})),e.unshift(fe("button",{type:"button",textContent:ke("Add Account"),onclick:e=>{const t="Account "+As.length.toString();As.push({name:t,key:""});const i=this.addItem(As.length-1);this.lists.push(i),this.dialog_div.appendChild(i)}})),e}}he.registerExtension({name:"Comfy.EasyUse.API.SD3",async beforeRegisterNodeDef(e,t,i){if("easy stableDiffusion3API"==t.name){const t=e.prototype.onNodeCreated;e.prototype.onNodeCreated=async function(){var e,i,s;t&&(null==t||t.apply(this,arguments));const n=this.widgets.find((e=>["seed_num","seed"].includes(e.name))),a=this.widgets.find((e=>["control_before_generate","control_after_generate"].includes(e.name)));let o=this.widgets.find((e=>"model"==e.name));o.callback=e=>{l.value="-"+ps[e]};const l=this.addWidget("text","cost_credit","0",(e=>{}),{serialize:!1});l.disabled=!0,a&&setTimeout((e=>{"control before generate"==a.name&&0===n.value&&(n.value=Math.floor(4294967294*Math.random())),l.value="-"+ps[o.value]}),100);let r=fe("div.easyuse-account-user",[ke("Loading UserInfo...")]);this.addDOMWidget("account","btn",fe("div.easyuse-account",r)),me.addEventListener("stable-diffusion-api-generate-succeed",(async({detail:e})=>{var t;let i=r.querySelectorAll(".remark");if(i&&i[0]){const t=(null==e?void 0:e.model)?ps[e.model]:0;if(t){let e=function(e,t){let i,s,n,a,o,l;o="string"==typeof e?e:e.toString(),l="string"==typeof t?t:t.toString();try{i=o.split(".")[1].length}catch(r){i=0}try{s=l.split(".")[1].length}catch(r){s=0}return n=Math.pow(10,Math.max(i,s)),a=i>=s?i:s,((e*n-t*n)/n).toFixed(a)}(parseFloat(i[0].innerText.replace(/Credits: /g,"")),t);e>0&&(i[0].innerText="Credits: "+e.toString())}}await Ue(1e4);const s=await me.fetchApi("/easyuse/stability/balance");if(200==s.status){const e=await s.json();if(null==e?void 0:e.balance){const s=(null==(t=e.balance)?void 0:t.credits)||0;i&&i[0]&&(i[0].innerText="Credits: "+s)}}}));const d=await me.fetchApi("/easyuse/stability/api_keys");if(200==d.status){let t=await d.json();if(As=t.keys,cs=t.current,As.length>0&&void 0!==cs){const t=As[cs].key,n=As[cs].name;if(t){const t=await me.fetchApi("/easyuse/stability/user_info");if(200==t.status){const n=await t.json();if((null==n?void 0:n.account)&&(null==n?void 0:n.balance)){const t=(null==(e=n.account)?void 0:e.profile_picture)||null,a=(null==(i=n.account)?void 0:i.email)||null,o=(null==(s=n.balance)?void 0:s.credits)||0;r.replaceChildren(fe("div.easyuse-account-user-info",{onclick:e=>{(new hs).show(r)}},[fe("div.user",[fe("div.avatar",t?[fe("img",{src:t})]:"😀"),fe("div.info",[fe("h5.name",a),fe("h6.remark","Credits: "+o)])]),fe("div.edit",{textContent:ke("Edit")})]))}}}else r.replaceChildren(fe("div.easyuse-account-user-info",{onclick:e=>{(new hs).show(r)}},[fe("div.user",[fe("div.avatar","😀"),fe("div.info",[fe("h5.name",n),fe("h6.remark",ke("Click to set the APIKEY first"))])]),fe("div.edit",{textContent:ke("Edit")})]))}}}}}});let ms=null;function fs(){ms&&(ms.removeEventListeners(),ms.dropdown.remove(),ms=null)}function gs(e,t,i,s=!1){fs(),new vs(e,t,i,s)}class vs{constructor(e,t,i,s=!1){this.dropdown=document.createElement("ul"),this.dropdown.setAttribute("role","listbox"),this.dropdown.classList.add("easy-dropdown"),this.selectedIndex=-1,this.inputEl=e,this.suggestions=t,this.onSelect=i,this.isDict=s,this.focusedDropdown=this.dropdown,this.buildDropdown(),this.onKeyDownBound=this.onKeyDown.bind(this),this.onWheelBound=this.onWheel.bind(this),this.onClickBound=this.onClick.bind(this),this.addEventListeners()}buildDropdown(){this.isDict?this.buildNestedDropdown(this.suggestions,this.dropdown):this.suggestions.forEach(((e,t)=>{this.addListItem(e,t,this.dropdown)}));const e=this.inputEl.getBoundingClientRect();this.dropdown.style.top=e.top+e.height-10+"px",this.dropdown.style.left=e.left+"px",document.body.appendChild(this.dropdown),ms=this}buildNestedDropdown(e,t){let i=0;Object.keys(e).forEach((s=>{const n=e[s];if("object"==typeof n&&null!==n){const e=document.createElement("ul");e.setAttribute("role","listbox"),e.classList.add("easy-nested-dropdown");const a=document.createElement("li");a.classList.add("folder"),a.textContent=s,a.appendChild(e),a.addEventListener("mouseover",this.onMouseOver.bind(this,i,t)),t.appendChild(a),this.buildNestedDropdown(n,e),i+=1}else{const e=document.createElement("li");e.classList.add("item"),e.setAttribute("role","option"),e.textContent=s,e.addEventListener("mouseover",this.onMouseOver.bind(this,i,t)),e.addEventListener("mousedown",this.onMouseDown.bind(this,s)),t.appendChild(e),i+=1}}))}addListItem(e,t,i){const s=document.createElement("li");s.setAttribute("role","option"),s.textContent=e,s.addEventListener("mouseover",this.onMouseOver.bind(this,t)),s.addEventListener("mousedown",this.onMouseDown.bind(this,e)),i.appendChild(s)}addEventListeners(){document.addEventListener("keydown",this.onKeyDownBound),this.dropdown.addEventListener("wheel",this.onWheelBound),document.addEventListener("click",this.onClickBound)}removeEventListeners(){document.removeEventListener("keydown",this.onKeyDownBound),this.dropdown.removeEventListener("wheel",this.onWheelBound),document.removeEventListener("click",this.onClickBound)}onMouseOver(e,t){t&&(this.focusedDropdown=t),this.selectedIndex=e,this.updateSelection()}onMouseOut(){this.selectedIndex=-1,this.updateSelection()}onMouseDown(e,t){t.preventDefault(),this.onSelect(e),this.dropdown.remove(),this.removeEventListeners()}onKeyDown(e){const t=Array.from(this.focusedDropdown.children),i=t[this.selectedIndex];if(ms)if(38===e.keyCode)e.preventDefault(),this.selectedIndex=Math.max(0,this.selectedIndex-1),this.updateSelection();else if(40===e.keyCode)e.preventDefault(),this.selectedIndex=Math.min(t.length-1,this.selectedIndex+1),this.updateSelection();else if(39===e.keyCode){if(e.preventDefault(),i&&i.classList.contains("folder")){const e=i.querySelector(".easy-nested-dropdown");e&&(this.focusedDropdown=e,this.selectedIndex=0,this.updateSelection())}}else if(37===e.keyCode&&this.focusedDropdown!==this.dropdown){const e=this.focusedDropdown.closest(".easy-dropdown, .easy-nested-dropdown").parentNode.closest(".easy-dropdown, .easy-nested-dropdown");e&&(this.focusedDropdown=e,this.selectedIndex=Array.from(e.children).indexOf(this.focusedDropdown.parentNode),this.updateSelection())}else if((13===e.keyCode||9===e.keyCode)&&this.selectedIndex>=0){e.preventDefault(),i.classList.contains("item")&&(this.onSelect(t[this.selectedIndex].textContent),this.dropdown.remove(),this.removeEventListeners());const s=i.querySelector(".easy-nested-dropdown");s&&(this.focusedDropdown=s,this.selectedIndex=0,this.updateSelection())}else 27===e.keyCode&&(this.dropdown.remove(),this.removeEventListeners())}onWheel(e){const t=parseInt(this.dropdown.style.top);localStorage.getItem("Comfy.Settings.Comfy.InvertMenuScrolling")?this.dropdown.style.top=t+(e.deltaY<0?10:-10)+"px":this.dropdown.style.top=t+(e.deltaY<0?-10:10)+"px"}onClick(e){this.dropdown.contains(e.target)||e.target===this.inputEl||(this.dropdown.remove(),this.removeEventListeners())}updateSelection(){Array.from(this.focusedDropdown.children).forEach(((e,t)=>{t===this.selectedIndex?e.classList.add("selected"):e.classList.remove("selected")}))}}function ys(e){const t=e.min||0,i=e.max||0,s=e.step||1;if(0===s)return[];const n=[];let a=t;for(;a<=i;){if(Number.isInteger(s))n.push(Math.round(a)+"; ");else{let e=a.toFixed(3);-0==e&&(e="0.000"),/\.\d{3}$/.test(e)||(e+="0"),n.push(e+"; ")}a+=s}return i>=0&&t>=0?n:n.reverse()}let bs={},ws={};function _s(e,t){String(e.id);const i=t.name,s=t.value.replace(/^(loader|preSampling):\s/,"");ws[i]?ws[i]!=bs[s]&&(ws[i]=bs[s]):ws={...ws,[i]:bs[s]}}he.registerExtension({name:"Comfy.EasyUse.XYPlot",async beforeRegisterNodeDef(e,t,i){if("easy XYPlot"===t.name){bs=t.input.hidden.plot_dict[0];for(const e in bs){const t=bs[e];if(Array.isArray(t)){let i=[];for(const e of t)i.push(e+"; ");bs[e]=i}else bs[e]="object"==typeof t?"seed"==e?t+"; ":ys(t):t+"; "}bs.None=[],bs["---------------------"]=[]}},nodeCreated(e){"easy XYPlot"===e.comfyClass&&(function(e){if(e.widgets)for(const t of e.widgets)if("x_axis"===t.name||"y_axis"===t.name){let i=t.value;Object.defineProperty(t,"value",{get:()=>i,set(s){s!==i&&(i=s,_s(e,t))}})}}(e),function(e){if(e.widgets){const t=e.widgets.filter((e=>"customtext"===e.type&&!1!==e.dynamicPrompts||e.dynamicPrompts));for(const e of t){let t=function(e,t,s,n){return e&&(t[s]=e),t.map((e=>i(e,n))).filter((e=>""!==e)).join("")},i=function(e,t){if(e=s(e),n(e,t))return e+"; ";let i=a(e,t);return 1===i.length||2===i.length?i[0]:n(o(e),t)?o(e)+"; ":""},s=function(e){return e.replace(/(\n|;| )/g,"")},n=function(e,t){return t.includes(e+"; ")},a=function(e,t){return t.filter((t=>t.toLowerCase().includes(e.toLowerCase())))},o=function(e){return Number(e)?Number(e).toFixed(3):["0","0.","0.0","0.00","00"].includes(e)?"0.000":e};const l=function(){const i=e.name[0]+"_axis";let s=(null==ws?void 0:ws[i])||[];if(0===s.length)return;const n=e.inputEl.value,a=e.inputEl.selectionStart;let o=n.split("; ");const l=n.substring(0,a).split("; ").length-1,r=o[l].replace(/\n/g,"").toLowerCase(),d=s.filter((e=>e.toLowerCase().includes(r))).map((e=>e.replace(/; /g,"")));if(d.length>0)gs(e.inputEl,d,(i=>{const n=t(i,o,l,s);e.inputEl.value=n}));else{fs();const i=t(null,o,l,s);e.inputEl.value=i}};e.inputEl.removeEventListener("input",l),e.inputEl.addEventListener("input",l),e.inputEl.removeEventListener("mouseup",l),e.inputEl.addEventListener("mouseup",l)}}}(e))}});const Ss=S("domWidget",(()=>{const e=P(new Map);return{widgetStates:e,registerWidget:t=>{e.value.set(t.id,{widget:G(t),visible:!0,readonly:!1,zIndex:0,pos:[0,0],size:[0,0]})},unregisterWidget:t=>{e.value.delete(t)}}})),Ls=e=>"element"in e&&!!e.element,xs=e=>"component"in e&&!!e.component,ks=class e{constructor(e){this.type=e.type,this.name=e.name,this.options=e.options,this.id="undefined"!=typeof crypto&&"function"==typeof crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})),this.node=e.node,this.y=0}get value(){var e,t;return(null==(t=(e=this.options).getValue)?void 0:t.call(e))??""}set value(e){var t,i,s;null==(i=(t=this.options).setValue)||i.call(t,e),null==(s=this.callback)||s.call(this,this.value)}get margin(){return this.options.margin??e.DEFAULT_MARGIN}isVisible(){return!["hidden"].includes(this.type)&&this.node.isWidgetVisible(this)}draw(e,t,i,s,n,a){var o,l;if(this.options.hideOnZoom&&a&&this.isVisible()){const t=e.fillStyle;e.beginPath(),e.fillStyle=LiteGraph.WIDGET_BGCOLOR,e.rect(this.margin,s+this.margin,i-2*this.margin,(this.computedHeight??n)-2*this.margin),e.fill(),e.fillStyle=t}null==(l=(o=this.options).onDraw)||l.call(o,this)}onRemove(){Ss().unregisterWidget(this.id)}};v(ks,"DEFAULT_MARGIN",10);let Es=ks;class Ns extends Es{constructor(e){super({...e,type:"custom"}),this.component=e.component,this.inputSpec=e.inputSpec}computeLayoutSize(){var e,t,i,s;return{minHeight:(null==(t=(e=this.options).getMinHeight)?void 0:t.call(e))??45,maxHeight:(null==(s=(i=this.options).getMaxHeight)?void 0:s.call(i))??45,minWidth:120}}serializeValue(){return z(this.value)}}const Cs={class:"w-full flex justify-between items-center"},Is={class:"flex justify-start items-center flex-1 gap-2"},Ts={class:"flex justify-end items-center tool ml-2 position-relative"},Os={__name:"promptAwait",props:{widget:{required:!0},widgetModifiers:{}},emits:["update:widget"],setup(e){const t=V(e,"widget"),i=P(!1),s=P(!1);let n=null;const a=()=>{if(s.value)return;const e=window.SpeechRecognition||window.webkitSpeechRecognition;e&&(s.value=!0,n||(n=new e,n.interimResults=!1),n.start(),n.addEventListener("result",(e=>{var i;const s=e.results[0][0].transcript;let n=null==(i=t.value)?void 0:i.node,a=yt(n,"prompt");a&&(a.value+=s)})),n.addEventListener("end",(()=>{s.value=!1,n=null})),n.addEventListener("error",(e=>{})))},o=()=>{s.value&&n&&n.stop()};j((e=>{me.addEventListener("easyuse_prompt_await",(e=>{var s,n,a,o,l,d;const u=e.detail.id,A=-1!==(null==(s=t.value)?void 0:s.node.id).toString().indexOf(":")?(null==(n=t.value)?void 0:n.node.id).toString().split(":")[0]:null==(a=t.value)?void 0:a.node.id;parseInt(u)===parseInt(A)&&(i.value=!0,r("last_seed",(null==(o=t.value.value)?void 0:o.seed)||0),(null==(l=t.value.value)?void 0:l.unlock)?r("seed",Math.floor(Math.random()*Ie)):r("seed",(null==(d=t.value.value)?void 0:d.last_seed)||0))}));const s=me.interrupt;me.interrupt=function(){!i.value&&he.runningNodeId||(l(JSON.stringify({result:-1,prompt:"",select:"now"}),!0),i.value=!1),s.apply(this,arguments)}}));const l=(e,s)=>{var n,a,o,l,d,u,A,c,p;if(!i.value&&!s)return;const h=new FormData,m=null==(n=t.value)?void 0:n.node,f=-1!==(null==(a=t.value)?void 0:a.node.id).toString().indexOf(":")?(null==(o=t.value)?void 0:o.node.id).toString().split(":")[0]:null==(l=t.value)?void 0:l.node.id,g=(null==(d=yt(m,"prompt"))?void 0:d.value)||"";let v=null==(u=t.value.value)?void 0:u.select,y=(null==(A=t.value.value)?void 0:A.last_seed)||0,b=(null==(c=t.value.value)?void 0:c.seed)||0,w=(null==(p=t.value.value)?void 0:p.unlock)||!1;h.append("message",JSON.stringify({result:e,prompt:g,select:v,last_seed:y,seed:b,unlock:w})),h.append("id",f),i.value=!1,me.fetchApi("/easyuse/message_callback",{method:"POST",body:h}).then((e=>{r("select","now")}))},r=(e,i)=>{t.value.value||(t.value.value={}),t.value.value[e]=i};return(e,n)=>(W(),U("div",Cs,[F("div",Is,[X(Z(x),{disabled:!Boolean(i.value),label:Z(ke)("Continue"),size:"small",style:{height:"20px","font-size":"12px","white-space":"nowrap",padding:"0 8px"},onClick:n[0]||(n[0]=e=>l(1))},null,8,["disabled","label"]),X(Z(x),{disabled:!Boolean(i.value),label:Z(ke)("Stop"),severity:"danger",size:"small",style:{height:"20px","font-size":"12px","white-space":"nowrap",padding:"0 8px"},onClick:n[1]||(n[1]=e=>l(-1))},null,8,["disabled","label"]),X(Z(k),{class:"easyuse-prompt-await-select",modelValue:t.value.value.select,"onUpdate:modelValue":n[2]||(n[2]=e=>t.value.value.select=e),options:[{name:Z(ke)("now"),value:"now"},{name:Z(ke)("prev"),value:"prev"}],optionLabel:"name",optionValue:"value",size:"small",style:{flex:"1",height:"24px","line-height":"10px","min-width":"70px","max-width":"100px"}},null,8,["modelValue","options"])]),F("div",Ts,[q(X(Z(x),{style:{"--p-button-sm-font-size":"11px"},size:"small",icon:t.value.value.unlock?"pi pi-unlock":"pi pi-lock",severity:t.value.value.unlock?"contrast":"warn",variant:"text",onClick:n[3]||(n[3]=e=>t.value.value.unlock=!t.value.value.unlock),rounded:""},null,8,["icon","severity"]),[[Z(E),{value:t.value.value.unlock?"随机种子":"锁定种子值",class:"jm-tooltip"},"top"]]),s.value?q((W(),H(Z(x),{key:0,size:"small",icon:"pi pi-pause-circle",severity:"info",variant:"outlined",onClick:o,rounded:""},null,512)),[[Z(E),{value:Z(ke)("Stop Recording"),class:"jm-tooltip"},"top"]]):q((W(),H(Z(x),{key:1,size:"small",icon:"pi pi-microphone",severity:"contrast",variant:"text",onClick:a,rounded:""},null,512)),[[Z(E),{value:Z(ke)("Voice input"),class:"jm-tooltip"},"top"]])])]))}},Ms={class:"easyuse-multiselect"},Ds={__name:"multiSelectWidget",props:Y(["widget"],{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){var t,i,s,n;const a=Object.keys(Oe).reduce(((e,t)=>(Array.isArray(Oe[t])?e[t]=Oe[t].map(((e,t)=>({label:e,value:t}))):"object"==typeof Oe[t]?e[t]=Object.entries(Oe[t]).map((([e,t])=>({label:e,value:t}))):e[t]=[],e)),{}),o=V(e,"modelValue"),l=e.widget.inputSpec,r=(null==(t=l.multi_select)?void 0:t.max_selected_labels)??3,d=l.optionLabel??"label",u=l.optionValue??"value",A=(null==(i=l.multi_select)?void 0:i.placeholder)?ke(null==(s=l.multi_select)?void 0:s.placeholder):ke("select items"),c=(null==(n=l.multi_select)?void 0:n.chip)?"chip":"comma",p=P(l.options??[]),h=e=>{e&&a[e]?p.value=a[e].map(((e,t)=>({label:ke(e.label),value:e.value}))):p.value=[]};return j((t=>{if("easy humanSegmentation"==e.widget.node.type){const t=yt(e.widget.node,"method");h(t.value),t.callback=e=>{o.value=[],h(e)}}})),(e,t)=>(W(),U("div",Ms,[X(Z(N),{modelValue:o.value,"onUpdate:modelValue":t[0]||(t[0]=e=>o.value=e),options:p.value,optionLabel:Z(d),optionValue:Z(u),appendTo:"self",filter:"",placeholder:Z(A),"max-selected-labels":Z(r),display:Z(c),class:"w-full easyuse-multiselect-container"},null,8,["modelValue","options","optionLabel","optionValue","placeholder","max-selected-labels","display"])]))}},Rs={class:"flex flex-col easyuse-multiangle-widget"},Ps={class:"flex items-center gap-1 px-1 relative z-10",style:{"margin-bottom":"-1px"}},Gs=["onClick"],zs={class:"tab-number"},Vs=["onClick"],js=["title"],Ws={class:"easyuse-multiangle-content flex flex-col gap-2"},Us=["title"],Fs={for:"add-angle-prompt"},Xs=["title"],Zs={key:0},qs={class:"flex flex-col gap-2 px-2 w-full easyuse-mulitangle-slider"},Hs={class:"flex flex-col gap-2 w-full"},Ys={class:"flex justify-between items-center"},Ks={class:"font-semibold opacity-80"},Js={class:"font-mono text-primary font-bold"},Bs={class:"flex flex-col gap-2 w-full"},Qs={class:"flex justify-between items-center"},$s={class:"font-semibold opacity-80"},en={class:"font-mono text-primary font-bold"},tn={class:"flex flex-col gap-2 w-full"},sn={class:"flex justify-between items-center"},nn={class:"font-semibold opacity-80"},an={class:"font-mono text-primary font-bold"},on={__name:"multiAngleWidget",props:{modelValue:{required:!0},modelModifiers:{}},emits:Y(["update:value","change"],["update:modelValue"]),setup(e,{emit:t}){const i=t,s=V(e,"modelValue");Array.isArray(s.value)&&0!==s.value.length||(s.value=[{rotate:0,vertical:0,zoom:5,add_angle_prompt:!0}]);const n=P(0),a=s.value[n.value]||{rotate:0,vertical:0,zoom:5,add_angle_prompt:!0},o=P(a.rotate??0),l=P(a.vertical??0),r=P(a.zoom??5),d=P(a.add_angle_prompt??!0);K((()=>{var e;return null==(e=s.value)?void 0:e[n.value]}),(e=>{e&&(void 0!==e.rotate&&(o.value=e.rotate),void 0!==e.vertical&&(l.value=e.vertical),void 0!==e.zoom&&(r.value=e.zoom),void 0!==e.add_angle_prompt&&(d.value=e.add_angle_prompt))}),{deep:!0});const u=e=>{n.value=e;const t=s.value[e];t&&(o.value=t.rotate??0,l.value=t.vertical??0,r.value=t.zoom??5,d.value=t.add_angle_prompt??!0)},A=()=>{if(s.value.length>=5)return;s.value.push(JSON.parse(JSON.stringify({rotate:0,vertical:0,zoom:5,add_angle_prompt:!0}))),n.value=s.value.length-1,u(n.value)},c=()=>{const e={rotate:o.value,vertical:l.value,zoom:r.value,add_angle_prompt:d.value};Array.isArray(s.value)||(s.value=[]),s.value[n.value]=JSON.parse(JSON.stringify(e)),i("update:value",JSON.parse(JSON.stringify(s.value))),i("change",JSON.parse(JSON.stringify(s.value)))},p=()=>{o.value=0,l.value=0,r.value=5,d.value=!0,c()},h=J((()=>[{name:"front",style:{transform:"translateZ(40px)",background:"var(--p-content-border-color)"}},{name:"back",text:ke("Back"),style:{transform:"rotateY(180deg) translateZ(40px)"}},{name:"top",text:ke("Top"),style:{transform:"rotateX(90deg) translateZ(40px)"}},{name:"bottom",text:ke("Bottom"),style:{transform:"rotateX(-90deg) translateZ(40px)"}},{name:"left",text:ke("Left"),style:{transform:"rotateY(-90deg) translateZ(40px)"}},{name:"right",text:ke("Right"),style:{transform:"rotateY(90deg) translateZ(40px)"}}])),m=P(!1),f={x:0,y:0},g={rotate:0,vertical:0},v=e=>{const t=e.deltaY;let i=r.value-.05*t;i=Math.max(0,Math.min(10,i)),r.value=Math.round(10*i)/10,c()},y=e=>{m.value=!0,f.x=e.clientX??e.touches[0].clientX,f.y=e.clientY??e.touches[0].clientY,g.rotate=o.value,g.vertical=l.value,window.addEventListener("mousemove",b),window.addEventListener("mouseup",w),window.addEventListener("touchmove",b),window.addEventListener("touchend",w)},b=e=>{if(!m.value)return;const t=e.clientX??e.touches[0].clientX,i=e.clientY??e.touches[0].clientY,s=t-f.x,n=i-f.y;let a=g.rotate+.5*s,r=g.vertical+.5*n;a=(a%360+360)%360,r=Math.max(-30,Math.min(90,r)),o.value=Math.round(a),l.value=Math.round(r),c()},w=()=>{m.value=!1,window.removeEventListener("mousemove",b),window.removeEventListener("mouseup",w),window.removeEventListener("touchmove",b),window.removeEventListener("touchend",w)};B(w);const _=J((()=>({transform:`scale(${1+.1*r.value}) rotateX(${-l.value}deg) rotateY(${-o.value}deg)`})));return(e,t)=>(W(),U("div",Rs,[F("div",Ps,[(W(!0),U(Q,null,$(s.value,((e,t)=>(W(),U("div",{key:t,class:ae(["tab-item",{active:n.value===t}]),onClick:e=>u(t)},[F("span",zs,se(t+1),1),s.value.length>1&&0!==t?(W(),U("i",{key:0,class:"pi pi-times tab-close",onClick:te((e=>(e=>{s.value.length<=1||(s.value.splice(e,1),n.value>=s.value.length&&(n.value=s.value.length-1),u(n.value))})(t)),["stop"])},null,8,Vs)):ee("",!0)],10,Gs)))),128)),s.value.length<5?(W(),U("button",{key:0,class:"tab-add-btn",onClick:A,title:Z(ke)("Add New Tab")},t[7]||(t[7]=[F("i",{class:"pi pi-plus"},null,-1)]),8,js)):ee("",!0)]),F("div",Ws,[F("div",{class:"easyuse-multiangle-cube w-full flex items-center justify-center bg-black overflow-hidden select-none",onMousedown:y,onTouchstart:y,onWheel:te(v,["prevent"])},[F("div",{class:"add-prompt-checkbox",onMousedown:t[1]||(t[1]=te((()=>{}),["stop"])),onClick:t[2]||(t[2]=te((()=>{}),["stop"])),title:Z(ke)("Add Angle Prompt")},[q(F("input",{type:"checkbox","onUpdate:modelValue":t[0]||(t[0]=e=>d.value=e),onChange:c,id:"add-angle-prompt"},null,544),[[ie,d.value]]),F("label",Fs,se(Z(ke)("Angle Prompt")),1)],40,Us),F("div",{class:"reset-icon",onMousedown:t[3]||(t[3]=te((()=>{}),["stop"])),onClick:te(p,["stop"]),title:Z(ke)("Reset")},t[8]||(t[8]=[F("i",{class:"pi pi-refresh"},null,-1)]),40,Xs),F("div",{class:"relative transition-transform duration-75 ease-out",style:ne([{"transform-style":"preserve-3d",width:"80px",height:"80px"},_.value])},[(W(!0),U(Q,null,$(h.value,(e=>(W(),U("div",{key:e.name,class:"absolute flex items-center justify-center font-bold text-xs easyuse-multiangle-cube-face",style:ne([{width:"80px",height:"80px","backface-visibility":"hidden"},e.style])},["front"===e.name?(W(),U("div",Zs,t[9]||(t[9]=[F("div",{style:{"font-size":"20px","text-align":"center"}},"🤓",-1),F("div",{style:{"font-size":"12px","text-align":"center","margin-top":"-6px"}},"👕",-1),F("div",{style:{"font-size":"12px","text-align":"center","margin-top":"-6px"}},"👖",-1)]))):(W(),U(Q,{key:1},[oe(se(e.text),1)],64))],4)))),128))],4)],32),F("div",qs,[F("div",Hs,[F("div",Ys,[F("span",Ks,se(Z(ke)("Rotate")),1),F("span",Js,se(o.value)+"°",1)]),X(Z(C),{modelValue:o.value,"onUpdate:modelValue":[t[4]||(t[4]=e=>o.value=e),c],min:0,max:360,class:"w-full"},null,8,["modelValue"])]),F("div",Bs,[F("div",Qs,[F("span",$s,se(Z(ke)("Vertical")),1),F("span",en,se(l.value)+"°",1)]),X(Z(C),{modelValue:l.value,"onUpdate:modelValue":[t[5]||(t[5]=e=>l.value=e),c],min:-30,max:90,class:"w-full"},null,8,["modelValue"])]),F("div",tn,[F("div",sn,[F("span",nn,se(Z(ke)("Zoom")),1),F("span",an,se(r.value),1)]),X(Z(C),{modelValue:r.value,"onUpdate:modelValue":[t[6]||(t[6]=e=>r.value=e),c],min:0,max:10,step:.1,class:"w-full"},null,8,["modelValue"])])])])]))}},ln=(e,t)=>{const i=e.__vccOpts||e;for(const[s,n]of t)i[s]=n;return i},rn={class:"relative rounded-t-lg overflow-hidden select-none"},dn={key:1,class:"w-full h-full flex items-center justify-center"},un=ln({__name:"baseThumbnail",props:{hoverZoom:{type:"number",default:4},isHovered:{type:Boolean,default:!1}},setup(e){const t=P(!1),i=P(null);return j((()=>{var e;Array.from((null==(e=i.value)?void 0:e.getElementsByTagName("img"))??[]).forEach((e=>{ue(e,"error",(()=>{t.value=!0}))}))})),(s,n)=>(W(),U("div",rn,[t.value?(W(),U("div",dn,n[0]||(n[0]=[F("i",{class:"pi pi-file text-4xl"},null,-1)]))):(W(),U("div",{key:0,ref_key:"contentRef",ref:i,class:"w-full h-full transform-gpu transition-transform duration-1000 ease-out",style:ne(e.isHovered?{transform:`scale(${1+e.hoverZoom/100})`}:void 0)},[le(s.$slots,"default",{},void 0,!0)],4))]))}},[["__scopeId","data-v-604a4248"]]),An=["src","alt"],cn=ln({__name:"lazyImage",props:{src:{type:String,required:!0},alt:{type:String,default:""},imageClass:{type:[String,Array,Object],default:""},imageStyle:{type:[String,Object],default:()=>({})},placeholderClass:{type:[String,Array,Object],default:""},errorClass:{type:[String,Array,Object],default:""},rootMargin:{type:String,default:"50px"},threshold:{type:Number,default:.1},immediate:{type:Boolean,default:!1}},emits:["load","error","visible"],setup(e,{emit:t}){const i=e,s=t,n=P(null),a=P(i.immediate),o=P(!1),l=P(!1),r=J((()=>i.src));K((()=>i.src),(()=>{o.value=!1,l.value=!1,i.immediate||(a.value=!1)}),{immediate:!0});const{stop:d}=Ae(n,(([e])=>{(null==e?void 0:e.isIntersecting)&&!a.value&&(a.value=!0,s("visible"),d())}),{rootMargin:i.rootMargin,threshold:i.threshold}),u=e=>{o.value=!0,l.value=!1,s("load",e)},A=e=>{l.value=!0,o.value=!1,s("error",e)};return(t,i)=>(W(),U("div",{ref_key:"containerRef",ref:n,class:"lazy-image-container"},[l.value?(W(),U("div",{key:0,class:ae(["lazy-image-error","w-full h-full flex items-center justify-center bg-surface-100 dark:bg-surface-800",e.errorClass])},[le(t.$slots,"error",{},(()=>[i[0]||(i[0]=F("i",{class:"pi pi-exclamation-triangle text-2xl text-surface-400"},null,-1))]),!0)],2)):a.value&&r.value?(W(),U("img",{key:1,src:r.value,alt:e.alt,class:ae(e.imageClass),style:ne(e.imageStyle),draggable:"false",onLoad:u,onError:A},null,46,An)):a.value?ee("",!0):(W(),U("div",{key:2,class:ae(["lazy-image-placeholder","w-full h-full flex items-center justify-center bg-surface-100 dark:bg-surface-800",e.placeholderClass])},[le(t.$slots,"placeholder",{},(()=>[i[1]||(i[1]=F("i",{class:"pi pi-image text-2xl text-surface-400"},null,-1))]),!0)],2))],512))}},[["__scopeId","data-v-4bfc03bf"]]),pn={class:"overflow-hidden w-full h-full flex items-center justify-center"},hn={__name:"defaultThumbnail",props:{src:{type:String,required:!0},alt:{type:String,required:!0},hoverZoom:{type:Number,required:!0},isHovered:{type:Boolean,default:!1},isVideo:{type:Boolean,default:!1},rootMargin:{type:String,default:"50px"},threshold:{type:Number,default:.1},immediate:{type:Boolean,default:!1}},emits:["load","error","visible"],setup(e,{emit:t}){const i=e,{src:s,isVideo:n}=i;return n??(null==s||s.toLowerCase().endsWith(".webp")),(t,i)=>(W(),H(un,{"hover-zoom":e.hoverZoom,"is-hovered":e.isHovered},{default:re((()=>[F("div",pn,[X(cn,{src:Z(s),"image-class":["transform-gpu transition-transform duration-300 ease-out","w-full h-full object-cover"],"image-style":e.isHovered?{transform:`scale(${1+e.hoverZoom/100})`}:void 0,"root-margin":e.rootMargin,threshold:e.threshold,immediate:e.immediate,onLoad:i[0]||(i[0]=e=>t.$emit("load",e)),onError:i[1]||(i[1]=e=>t.$emit("error",e)),onVisible:i[2]||(i[2]=e=>t.$emit("visible",e))},{placeholder:re((()=>[le(t.$slots,"placeholder",{},(()=>[i[3]||(i[3]=F("i",{class:"pi pi-image text-2xl text-surface-400"},null,-1))]))])),error:re((()=>[le(t.$slots,"error",{},(()=>[i[4]||(i[4]=F("i",{class:"pi pi-exclamation-triangle text-2xl text-surface-400"},null,-1))]))])),_:3},8,["src","image-style","root-margin","threshold","immediate"])])])),_:3},8,["hover-zoom","is-hovered"]))}},mn={class:"overflow-hidden w-full h-full flex items-center justify-center relative"},fn={__name:"compareSliderThumbnail",props:{baseImageSrc:{type:String,required:!0},overlayImageSrc:{type:String,required:!0},alt:{type:String,required:!0},isHovered:{type:Boolean,default:!1},isVideo:{type:Boolean,default:!1},rootMargin:{type:String,default:"50px"},threshold:{type:Number,default:.1},immediate:{type:Boolean,default:!1}},emits:["load","error","visible"],setup(e,{emit:t}){var i,s;const n=e;n.isVideo||(null==(i=n.baseImageSrc)?void 0:i.toLowerCase().endsWith(".webp"))||null==(s=n.overlayImageSrc)||s.toLowerCase().endsWith(".webp");const a=P(50),o=P(null),{elementX:l,elementWidth:r,isOutside:d}=ce(o);return K([()=>n.isHovered,l,r,d],(([e,t,i,s])=>{e&&(s||(a.value=t/i*100))})),(t,i)=>(W(),H(un,{"is-hovered":e.isHovered},{default:re((()=>[F("div",mn,[X(cn,{src:e.baseImageSrc,"image-class":["transform-gpu transition-transform duration-300 ease-out","w-full h-full object-cover block"],"root-margin":e.rootMargin,threshold:e.threshold,immediate:e.immediate,onLoad:i[0]||(i[0]=e=>t.$emit("load",e)),onError:i[1]||(i[1]=e=>t.$emit("error",e)),onVisible:i[2]||(i[2]=e=>t.$emit("visible",e))},{placeholder:re((()=>[le(t.$slots,"placeholder",{},(()=>[i[3]||(i[3]=F("i",{class:"pi pi-image text-2xl text-surface-400"},null,-1))]))])),error:re((()=>[le(t.$slots,"error",{},(()=>[i[4]||(i[4]=F("i",{class:"pi pi-exclamation-triangle text-2xl text-surface-400"},null,-1))]))])),_:3},8,["src","root-margin","threshold","immediate"]),F("div",{ref_key:"containerRef",ref:o,class:"absolute inset-0"},[X(cn,{src:e.overlayImageSrc,"image-class":["transform-gpu transition-transform duration-300 ease-out","w-full h-full object-cover block"],"image-style":{clipPath:`inset(0 ${100-a.value}% 0 0)`},"root-margin":e.rootMargin,threshold:e.threshold,immediate:e.immediate},{placeholder:re((()=>[le(t.$slots,"placeholder",{},(()=>[i[5]||(i[5]=F("i",{class:"pi pi-image text-2xl text-surface-400"},null,-1))]))])),error:re((()=>[le(t.$slots,"error",{},(()=>[i[6]||(i[6]=F("i",{class:"pi pi-exclamation-triangle text-2xl text-surface-400"},null,-1))]))])),_:3},8,["src","image-style","root-margin","threshold","immediate"]),F("div",{class:"absolute inset-y-0 bg-white/30 backdrop-blur-sm z-10 pointer-events-none",style:ne({left:`${a.value}%`,width:"1px"})},null,4)],512)])])),_:3},8,["is-hovered"]))}},gn={class:"selector-card-wrapper"},vn={class:"card-image-container"},yn={key:2,class:"selection-badge"},bn={class:"card-content"},wn={class:"card-title"},_n=ln({__name:"selectorCard",props:{item:{type:Object,required:!0},uniqueKey:{type:String,default:"id"},selectable:{type:Boolean,default:!1},isSelected:{type:Boolean,default:!1},multiple:{type:Boolean,default:!1},showDescription:{type:Boolean,default:!0},showMeta:{type:Boolean,default:!1},showActions:{type:Boolean,default:!1},actions:{type:Array,default:()=>[]},itemFields:{type:Object,default:()=>({id:"id",title:"title",description:"description",image:"image",meta:"meta"})},locale:{type:String,default:"en"}},emits:["select","action","item-hover","item-leave"],setup(e,{emit:t}){const i=e,s=t,n=P(null),a=pe(n),o=()=>{i.selectable&&s("select",i.item)},l=()=>{s("item-hover",i.item)},r=()=>{s("item-leave",i.item)};return(t,i)=>(W(),U("div",gn,[F("div",{ref_key:"cardRef",ref:n,class:ae(["card-item",{selected:e.isSelected,clickable:e.selectable}]),onClick:o,onMouseenter:l,onMouseleave:r},[F("div",vn,["compareSlider"===e.item.thumbnailVariant?(W(),H(fn,{key:0,"base-image-src":e.item.thumbnail[0],"overlay-image-src":e.item.thumbnail[1],alt:t.title,"is-hovered":Z(a),"is-video":"video"===e.item.mediaType||"webp"===e.item.mediaSubtype,class:"card-image"},null,8,["base-image-src","overlay-image-src","alt","is-hovered","is-video"])):(W(),H(hn,{key:1,src:e.item.thumbnail||"",alt:"zh"==e.locale?e.item.name_cn:e.item.name,"hover-zoom":4,"is-hovered":!1,class:"card-image"},null,8,["src","alt"])),e.selectable&&e.isSelected?(W(),U("div",yn,i[0]||(i[0]=[F("i",{class:"pi pi-check text-white"},null,-1)]))):ee("",!0)]),F("div",bn,[F("div",wn,se("zh"==e.locale?e.item.name_cn:e.item.name),1)])],34)]))}},[["__scopeId","data-v-88af28b0"]]),Sn={class:"list-item"},Ln=["name","checked"],xn={class:"list-item-content"},kn={class:"list-title"},En=ln({__name:"selectorList",props:{item:{type:Object,required:!0},uniqueKey:{type:String,default:"id"},selectable:{type:Boolean,default:!1},isSelected:{type:Boolean,default:!1},multiple:{type:Boolean,default:!1},showDescription:{type:Boolean,default:!0},showActions:{type:Boolean,default:!1},actions:{type:Array,default:()=>[]},itemFields:{type:Object,default:()=>({id:"id",title:"title",description:"description"})},locale:{type:String,default:"en"}},emits:["select","action","item-hover","item-leave"],setup(e,{emit:t}){const i=e,s=t,n=()=>{i.selectable&&s("select",i.item)},a=()=>{s("item-hover",i.item)},o=()=>{s("item-leave",i.item)};return(t,i)=>(W(),U("div",Sn,[F("span",{class:ae(["list-item__tag",{selected:e.isSelected}]),onClick:n,onMouseenter:a,onMouseleave:o},[e.selectable?(W(),U("input",{key:0,type:"checkbox",name:e.item.name,checked:e.isSelected,onClick:i[0]||(i[0]=te((()=>{}),["stop"]))},null,8,Ln)):ee("",!0),F("span",xn,[F("div",kn,se("zh"==e.locale?e.item.name_cn:e.item.name),1)])],34)]))}},[["__scopeId","data-v-c93b1734"]]),Nn=S("graphStore",{state:e=>({selectors:[],selectors_styles:{},seg_selectors:[],slider_controls:[]}),actions:{setSelectors(e){this.selectors=R(e)},setStyles(e,t){this.selectors_styles[e]||(this.selectors_styles[e]=t)},setSegSelectors(e){this.seg_selectors=R(e)},setSliderControls(e){this.slider_controls=R(e)}}}),Cn={class:"easyuse-styles-selector"},In={class:"easyuse-styles-selector-header flex justify-between gap-2"},Tn={class:"flex align-center gap-1"},On={class:"flex-1"},Mn={key:0,class:"grid-container gap-2"},Dn={key:1,class:"list-container"},Rn={key:0,class:"easyuse-styles-selector-previewer"},Pn={class:"easyuse-styles-selector-previewer__text"},Gn=["src"],zn={class:"title"},Vn={class:"easyuse-styles-selector-previewer__prompt"},jn={key:0},Wn={class:"comfyui-easyuse-success"},Un={key:1},Fn={class:"comfyui-easyuse-error"},Xn={__name:"stylesSelector",props:Y(["widget"],{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=Nn(),{selectors_styles:i}=I(t),s=P(""),n=V(e,"modelValue");e.widget.inputSpec;const a=J((e=>_e("Comfy.Locale")||"en")),o=P(_e("EasyUse.StylesSelector.DisplayType")||"Grid");"Gird"==o.value&&(o.value="Grid",Le("EasyUse.StylesSelector.DisplayType","Grid"));const l=P([]),r=P("");K((e=>o.value),(e=>{Le("EasyUse.StylesSelector.DisplayType",e)}));const d=J((()=>{if(!r.value.trim())return l.value;const e=n.value||[],t=r.value.toLowerCase(),i=[],s=[];return l.value.forEach((n=>{if(e.includes(n.name))i.push(n);else{const e="zh"===a.value&&n.name_cn?n.name_cn:n.name,i=n.prompt||"",o=n.negative_prompt||"";(e.toLowerCase().includes(t)||i.toLowerCase().includes(t)||o.toLowerCase().includes(t))&&s.push(n)}})),[...i,...s]})),u=de({name:"",positive:"",negative:"",src:""}),A=async e=>{if(i.value[e])return!0;const s=await me.fetchApi(`/easyuse/prompt/styles?name=${e}`);if(200===s.status){let i=(await s.json()).map(((e,t)=>(e.index=t,e)));return await t.setStyles(e,i),!0}return qe.error(ke("Get styles list Failed")),!1},c=e=>{var t,i;u.name="zh"==a.value&&e.name_cn?e.name_cn:e.name,u.src=e.thumbnailVariant&&"default"!=e.thumbnailVariant?(null==(t=e.thumbnail)?void 0:t[1])||(null==(i=e.thumbnail)?void 0:i[0]):e.thumbnail,u.positive=e.prompt,u.negative=e.negative_prompt},p=()=>{u.name="",u.src="",u.positive="",u.negative=""},h=e=>{const t=n.value||[],a=R(i.value[s.value]);l.value=[...a.sort(((e,t)=>e.index-t.index)).sort(((e,i)=>t.includes(i.name)-t.includes(e.name)))]},m=e=>(n.value||[]).includes(e.name),f=e=>{let t=[...n.value||[]];const i=e.name,s=t.findIndex((e=>e===i));s>-1?t.splice(s,1):t.push(i),n.value=t},g=()=>{n.value=[]};return j((t=>{const i=yt(e.widget.node,"styles");let n=i.value;s.value=n,A(n).then((e=>e&&h())),i.callback=e=>{s.value=e,g(),A(e).then((e=>e&&h()))}})),(t,i)=>(W(),U("div",Cn,[F("div",In,[F("div",Tn,[q(X(Z(x),{icon:"pi pi-trash",severity:"secondary",outlined:"",size:"small",onClick:g},null,512),[[Z(E),Z(ke)("Reset")]])]),F("div",On,[X(Z(M),null,{default:re((()=>[X(Z(T),{class:"pi pi-search"}),X(Z(O),{modelValue:r.value,"onUpdate:modelValue":i[0]||(i[0]=e=>r.value=e),placeholder:Z(ke)("Search styles..."),class:"w-full"},null,8,["modelValue","placeholder"])])),_:1})]),X(Z(D),{modelValue:o.value,"onUpdate:modelValue":i[1]||(i[1]=e=>o.value=e),options:["Grid","List"],"allow-empty":!1},{option:re((({option:e})=>[F("i",{class:ae(["List"===e?"pi pi-bars":"pi pi-table"])},null,2)])),_:1},8,["modelValue"])]),F("div",{class:"easyuse-styles-selector-content",onMouseleave:i[2]||(i[2]=t=>h(e.widget.node.name))},["Grid"===o.value?(W(),U("div",Mn,[(W(!0),U(Q,null,$(d.value,((e,t)=>(W(),H(_n,{key:`${e.name}-${t}`,item:e,"unique-key":"name",locale:a.value,selectable:!0,"is-selected":m(e),"show-description":!0,"preview-enabled":!0,onSelect:f,onItemHover:c,onItemLeave:p},null,8,["item","locale","is-selected"])))),128))])):(W(),U("div",Dn,[(W(!0),U(Q,null,$(d.value,((e,t)=>(W(),H(En,{key:`${e.name}-${t}`,item:e,"unique-key":"name",locale:a.value,selectable:!0,"is-selected":m(e),"show-description":!0,onSelect:f,onItemHover:c,onItemLeave:p},null,8,["item","locale","is-selected"])))),128))]))],32),(null==u?void 0:u.positive)||(null==u?void 0:u.negative)?(W(),U("div",Rn,[F("div",Pn,[F("img",{src:u.src,alt:"",style:{width:"100%",height:"auto","object-fit":"contain","border-radius":"6px"}},null,8,Gn),F("span",zn,se(u.name),1),F("div",Vn,[u.positive?(W(),U("h6",jn,[F("span",Wn,se(Z(ke)("Positive"))+":",1),F("span",null,se(u.positive),1)])):ee("",!0),u.negative?(W(),U("h6",Un,[F("span",Fn,se(Z(ke)("Negative"))+":",1),F("span",null,se(u.negative),1)])):ee("",!0)])])])):ee("",!0)]))}};he.registerExtension({name:"Comfy.EasyUse.CustomWidget",getCustomWidgets:e=>({EASY_PROMPT_AWAIT_BAR:(e,t,i,s)=>{const n=P({select:"now",unlock:!0,last_seed:0,seed:0}),a=new Ns({node:e,name:t,component:Os,inputSpec:{type:"custom",name:t},options:{getValue:()=>n.value,setValue:e=>{e&&(n.value=e)}}});return e.addCustomWidget(a),e.onRemoved=tt(e.onRemoved,(()=>{var e;null==(e=a.onRemove)||e.call(a)})),e.onResize=tt(e.onResize,(()=>{var t,i;null==(t=a.options.beforeResize)||t.call(a,e),null==(i=a.options.afterResize)||i.call(a,e)})),Ss().registerWidget(a),a},EASY_COMBO:(e,t,i,s)=>{const n=P([]),a={type:"custom",name:t,options:null==i?void 0:i[1].options,multi_select:null==i?void 0:i[1].multi_select},o=!!["obsidian","obsidian_dark","milk_white"].includes(_e("Comfy.ColorPalette"))?22:26,l=new Ns({node:e,name:t,component:Ds,inputSpec:a,options:{margin:0,getMinHeight:()=>o,getMaxHeight:()=>o,getValue:()=>n.value,setValue:e=>{e&&(Array.isArray(e)?n.value=e:n.value=e.split(",").map((e=>parseInt(e))))}}});return e.addCustomWidget(l),e.onRemoved=tt(e.onRemoved,(()=>{var e;null==(e=l.onRemove)||e.call(l)})),e.onResize=tt(e.onResize,(()=>{var t,i;null==(t=l.options.beforeResize)||t.call(l,e),null==(i=l.options.afterResize)||i.call(l,e)})),Ss().registerWidget(l),l},EASY_PROMPT_STYLES:(e,t,i,s)=>{const n=P([]),a=new Ns({node:e,name:t,component:Xn,inputSpec:{type:"custom",name:t},options:{margin:10,getMinHeight:()=>180,getMaxHeight:()=>e.size[1]-75,getValue:()=>n.value,setValue:e=>{e&&(Array.isArray(e)?n.value=e:n.value=e.split(","))}}});return e.addCustomWidget(a),e.onRemoved=tt(e.onRemoved,(()=>{var e;null==(e=a.onRemove)||e.call(a)})),e.onResize=tt(e.onResize,(()=>{var t,i;null==(t=a.options.beforeResize)||t.call(a,e),null==(i=a.options.afterResize)||i.call(a,e)})),Ss().registerWidget(a),a},EASY_MULTI_ANGLE:(e,t,i,s)=>{const n=P([{rotate:0,vertical:0,zoom:5,add_angle_prompt:!0}]),a=new Ns({node:e,name:t,component:on,inputSpec:{type:"custom",name:t},options:{margin:10,getMinHeight:()=>350,getMaxHeight:()=>e.size[1]-80,getValue:()=>n.value,setValue:e=>{e&&(Array.isArray(e)?n.value=e:n.value=e.split(","))}}});return e.addCustomWidget(a),e.onRemoved=tt(e.onRemoved,(()=>{var e;null==(e=a.onRemove)||e.call(a)})),e.onResize=tt(e.onResize,(()=>{var t,i;null==(t=a.options.beforeResize)||t.call(a,e),null==(i=a.options.afterResize)||i.call(a,e)})),Ss().registerWidget(a),a}})});export{ke as $,Me as N,ln as _,he as a,He as b,_e as c,gi as d,xs as e,Ss as f,yt as g,tt as h,Ls as i,Et as j,De as k,me as l,Se as m,Ue as s,qe as t,Nn as u}; diff --git a/web_version/v2/assets/primevue-B4A7h1ix.js b/web_version/v2/assets/primevue-CjzBNgZL.js similarity index 99% rename from web_version/v2/assets/primevue-B4A7h1ix.js rename to web_version/v2/assets/primevue-CjzBNgZL.js index 84df3a1..353db57 100644 --- a/web_version/v2/assets/primevue-B4A7h1ix.js +++ b/web_version/v2/assets/primevue-CjzBNgZL.js @@ -1 +1 @@ -import{r as e,B as t,C as n,o,D as i,h as r,E as l,a,c as u,b as s,A as c}from"./vue-C8DvX6GQ.js";import{s as d,a as v,i as f,b as m,r as p,c as h,m as g,d as y,e as b,u as C,f as S,t as $,g as w,h as P,j as O,k as T,l as _,n as j,E as L,o as x,p as N,q as V,v as M,w as k,x as D,y as E}from"./primeuix-Zf0UbZPU.js";var A={_loadedStyleNames:new Set,getLoadedStyleNames:function(){return this._loadedStyleNames},isStyleNameLoaded:function(e){return this._loadedStyleNames.has(e)},setLoadedStyleName:function(e){this._loadedStyleNames.add(e)},deleteLoadedStyleName:function(e){this._loadedStyleNames.delete(e)},clearLoadedStyleNames:function(){this._loadedStyleNames.clear()}};function I(e){return(I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function B(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function F(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},u=e(!1),s=e(l),c=e(null),p=m()?window.document:void 0,h=a.document,g=void 0===h?p:h,y=a.immediate,b=void 0===y||y,C=a.manual,S=void 0!==C&&C,$=a.name,w=void 0===$?"style_".concat(++R):$,P=a.id,O=void 0===P?void 0:P,T=a.media,_=void 0===T?void 0:T,j=a.nonce,L=void 0===j?void 0:j,x=a.first,N=void 0!==x&&x,V=a.onMounted,M=void 0===V?void 0:V,k=a.onUpdated,D=void 0===k?void 0:k,E=a.onLoad,A=void 0===E?void 0:E,I=a.props,B=void 0===I?{}:I,U=function(){},z=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(g){var n=F(F({},B),t),o=n.name||w,i=n.id||O,a=n.nonce||L;c.value=g.querySelector('style[data-primevue-style-id="'.concat(o,'"]'))||g.getElementById(i)||g.createElement("style"),c.value.isConnected||(s.value=e||l,d(c.value,{type:"text/css",id:i,media:_,nonce:a}),N?g.head.prepend(c.value):g.head.appendChild(c.value),v(c.value,"data-primevue-style-id",o),d(c.value,n),c.value.onload=function(e){return null==A?void 0:A(e,{name:o})},null==M||M(o)),u.value||(U=r(s,(function(e){c.value.textContent=e,null==D||D(o)}),{immediate:!0}),u.value=!0)}};return b&&!S&&function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];n()?o(e):t?e():i(e)}(z),{id:O,name:w,el:c,css:s,unload:function(){g&&u.value&&(U(),f(c.value)&&g.head.removeChild(c.value),u.value=!1)},load:z,isLoaded:t(u)}}function W(e){return(W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Z(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,i,r,l,a=[],u=!0,s=!1;try{if(r=(n=n.call(e)).next,0===t);else for(;!(u=(o=r.call(n)).done)&&(a.push(o.value),a.length!==t);u=!0);}catch(c){s=!0,i=c}finally{try{if(!u&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw i}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return H(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?H(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);n1&&void 0!==arguments[1]?arguments[1]:{},n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(e){return e})(p(e,{dt:b}));return h(n)?z(g(n),q({name:this.name},t)):{}},loadCSS:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.load(this.css,e)},loadTheme:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return this.load(this.theme,t,(function(){var o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return y.transformCSS(t.name||e.name,"".concat(o).concat(n))}))},getCommonTheme:function(e){return y.getCommon(this.name,e)},getComponentTheme:function(e){return y.getComponent(this.name,e)},getDirectiveTheme:function(e){return y.getDirective(this.name,e)},getPresetTheme:function(e,t,n){return y.getCustomPreset(this.name,e,t,n)},getLayerOrderThemeCSS:function(){return y.getLayerOrderCSS(this.name)},getStyleSheet:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.css){var n=p(this.css,{dt:b})||"",o=g("".concat(n).concat(e)),i=Object.entries(t).reduce((function(e,t){var n=Z(t,2),o=n[0],i=n[1];return e.push("".concat(o,'="').concat(i,'"'))&&e}),[]).join(" ");return h(o)?'"):""}return""},getCommonThemeStyleSheet:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return y.getCommonStyleSheet(this.name,e,t)},getThemeStyleSheet:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[y.getStyleSheet(this.name,e,t)];if(this.theme){var o="base"===this.name?"global-style":"".concat(this.name,"-style"),i=p(this.theme,{dt:b}),r=g(y.transformCSS(o,i)),l=Object.entries(t).reduce((function(e,t){var n=Z(t,2),o=n[0],i=n[1];return e.push("".concat(o,'="').concat(i,'"'))&&e}),[]).join(" ");h(r)&&n.push('"))}return n.join("")},extend:function(e){return q(q({},this),{},{css:void 0,theme:void 0},e)}},K=J.extend({name:"common"});function Q(e){return(Q="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function X(e){return ie(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||ne(e)||te()}function ee(e,t){return ie(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,i,r,l,a=[],u=!0,s=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(o=r.call(n)).done)&&(a.push(o.value),a.length!==t);u=!0);}catch(c){s=!0,i=c}finally{try{if(!u&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw i}}return a}}(e,t)||ne(e,t)||te()}function te(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function ne(e,t){if(e){if("string"==typeof e)return oe(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?oe(e,t):void 0}}function oe(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);n1?t-1:0),o=1;o0&&void 0!==arguments[0]?arguments[0]:function(){};A.clearLoadedStyleNames(),P.on("theme:change",e)},_getHostInstance:function(e){return e?this.$options.hostName?e.$.type.name===this.$options.hostName?e:this._getHostInstance(e.$parentInstance):e.$parentInstance:void 0},_getPropValue:function(e){var t;return this[e]||(null===(t=this._getHostInstance(this))||void 0===t?void 0:t[e])},_getOptionValue:function(e){return O(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",arguments.length>2&&void 0!==arguments[2]?arguments[2]:{})},_getPTValue:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=/./g.test(n)&&!!o[n.split(".")[0]],l=this._getPropValue("ptOptions")||(null===(e=this.$primevueConfig)||void 0===e?void 0:e.ptOptions)||{},a=l.mergeSections,u=void 0===a||a,s=l.mergeProps,c=void 0!==s&&s,d=i?r?this._useGlobalPT(this._getPTClassValue,n,o):this._useDefaultPT(this._getPTClassValue,n,o):void 0,v=r?void 0:this._getPTSelf(t,this._getPTClassValue,n,le(le({},o),{},{global:d||{}})),f=this._getPTDatasets(n);return u||!u&&v?c?this._mergeProps(c,d,v,f):le(le(le({},d),v),f):le(le({},v),f)},_getPTSelf:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length,n=new Array(t>1?t-1:0),o=1;o0&&void 0!==arguments[0]?arguments[0]:"",o="data-pc-",i="root"===n&&h(null===(e=this.pt)||void 0===e?void 0:e["data-pc-section"]);return"transition"!==n&&le(le({},"root"===n&&le(le(ae({},"".concat(o,"name"),$(i?null===(t=this.pt)||void 0===t?void 0:t["data-pc-section"]:this.$.type.name)),i&&ae({},"".concat(o,"extend"),$(this.$.type.name))),m()&&ae({},"".concat(this.$attrSelector),""))),{},ae({},"".concat(o,"section"),$(n)))},_getPTClassValue:function(){var e=this._getOptionValue.apply(this,arguments);return T(e)||_(e)?{class:e}:e},_getPT:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",o=arguments.length>2?arguments[2]:void 0,i=function(e){var i,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],l=o?o(e):e,a=$(n),u=$(t.$name);return null!==(i=r?a!==u?null==l?void 0:l[a]:void 0:null==l?void 0:l[a])&&void 0!==i?i:l};return null!=e&&e.hasOwnProperty("_usept")?{_usept:e._usept,originalValue:i(e.originalValue),value:i(e.value)}:i(e,!0)},_usePT:function(e,t,n,o){var i=function(e){return t(e,n,o)};if(null!=e&&e.hasOwnProperty("_usept")){var r,l=e._usept||(null===(r=this.$primevueConfig)||void 0===r?void 0:r.ptOptions)||{},a=l.mergeSections,u=void 0===a||a,s=l.mergeProps,c=void 0!==s&&s,d=i(e.originalValue),v=i(e.value);if(void 0===d&&void 0===v)return;return T(v)?v:T(d)?d:u||!u&&v?c?this._mergeProps(c,d,v):le(le({},d),v):v}return i(e)},_useGlobalPT:function(e,t,n){return this._usePT(this.globalPT,e,t,n)},_useDefaultPT:function(e,t,n){return this._usePT(this.defaultPT,e,t,n)},ptm:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this._getPTValue(this.pt,e,le(le({},this.$params),t))},ptmi:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return l(this.$_attrsWithoutPT,this.ptm(e,t))},ptmo:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._getPTValue(e,t,le({instance:this},n),!1)},cx:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.isUnstyled?void 0:this._getOptionValue(this.$style.classes,e,le(le({},this.$params),t))},sx:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!(arguments.length>1&&void 0!==arguments[1])||arguments[1]){var n=this._getOptionValue(this.$style.inlineStyles,e,le(le({},this.$params),t));return[this._getOptionValue(K.inlineStyles,e,le(le({},this.$params),t)),n]}}},computed:{globalPT:function(){var e,t=this;return this._getPT(null===(e=this.$primevueConfig)||void 0===e?void 0:e.pt,void 0,(function(e){return p(e,{instance:t})}))},defaultPT:function(){var e,t=this;return this._getPT(null===(e=this.$primevueConfig)||void 0===e?void 0:e.pt,void 0,(function(e){return t._getOptionValue(e,t.$name,le({},t.$params))||p(e,le({},t.$params))}))},isUnstyled:function(){var e;return void 0!==this.unstyled?this.unstyled:null===(e=this.$primevueConfig)||void 0===e?void 0:e.unstyled},$inProps:function(){var e,t=Object.keys((null===(e=this.$.vnode)||void 0===e?void 0:e.props)||{});return Object.fromEntries(Object.entries(this.$props).filter((function(e){var n=ee(e,1)[0];return null==t?void 0:t.includes(n)})))},$theme:function(){var e;return null===(e=this.$primevueConfig)||void 0===e?void 0:e.theme},$style:function(){return le(le({classes:void 0,inlineStyles:void 0,load:function(){},loadCSS:function(){},loadTheme:function(){}},(this._getHostInstance(this)||{}).$style),this.$options.style)},$styleOptions:function(){var e;return{nonce:null===(e=this.$primevueConfig)||void 0===e||null===(e=e.csp)||void 0===e?void 0:e.nonce}},$primevueConfig:function(){var e;return null===(e=this.$primevue)||void 0===e?void 0:e.config},$name:function(){return this.$options.hostName||this.$.type.name},$params:function(){var e=this._getHostInstance(this)||this.$parent;return{instance:this,props:this.$props,state:this.$data,attrs:this.$attrs,parent:{instance:e,props:null==e?void 0:e.$props,state:null==e?void 0:e.$data,attrs:null==e?void 0:e.$attrs}}},$_attrsPT:function(){return Object.entries(this.$attrs||{}).filter((function(e){var t=ee(e,1)[0];return null==t?void 0:t.startsWith("pt:")})).reduce((function(e,t){var n=ee(t,2),o=n[0],i=n[1],r=X(o.split(":")).slice(1);return null==r||r.reduce((function(e,t,n,o){return!e[t]&&(e[t]=n===o.length-1?i:{}),e[t]}),e),e}),{})},$_attrsWithoutPT:function(){return Object.entries(this.$attrs||{}).filter((function(e){var t=ee(e,1)[0];return!(null!=t&&t.startsWith("pt:"))})).reduce((function(e,t){var n=ee(t,2),o=n[0],i=n[1];return e[o]=i,e}),{})}}},se=J.extend({name:"baseicon",css:"\n.p-icon {\n display: inline-block;\n vertical-align: baseline;\n}\n\n.p-icon-spin {\n -webkit-animation: p-icon-spin 2s infinite linear;\n animation: p-icon-spin 2s infinite linear;\n}\n\n@-webkit-keyframes p-icon-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg);\n }\n}\n\n@keyframes p-icon-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg);\n }\n}\n"});function ce(e){return(ce="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function de(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function ve(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,o=Array(t);n0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},l=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=function(){var e=we._getOptionValue.apply(we,arguments);return T(e)||_(e)?{class:e}:e},u=(null===(e=n.binding)||void 0===e||null===(e=e.value)||void 0===e?void 0:e.ptOptions)||(null===(t=n.$primevueConfig)||void 0===t?void 0:t.ptOptions)||{},s=u.mergeSections,c=void 0===s||s,d=u.mergeProps,v=void 0!==d&&d,f=l?we._useDefaultPT(n,n.defaultPT(),a,i,r):void 0,m=we._usePT(n,we._getPT(o,n.$name),a,i,Se(Se({},r),{},{global:f||{}})),p=we._getPTDatasets(n,i);return c||!c&&m?v?we._mergeProps(n,v,f,m,p):Se(Se(Se({},f),m),p):Se(Se({},m),p)},_getPTDatasets:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n="data-pc-";return Se(Se({},"root"===t&&$e({},"".concat(n,"name"),$(e.$name))),{},$e({},"".concat(n,"section"),$(t)))},_getPT:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,o=function(e){var o,i=n?n(e):e,r=$(t);return null!==(o=null==i?void 0:i[r])&&void 0!==o?o:i};return null!=e&&e.hasOwnProperty("_usept")?{_usept:e._usept,originalValue:o(e.originalValue),value:o(e.value)}:o(e)},_usePT:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0,o=arguments.length>3?arguments[3]:void 0,i=arguments.length>4?arguments[4]:void 0,r=function(e){return n(e,o,i)};if(null!=t&&t.hasOwnProperty("_usept")){var l,a=t._usept||(null===(l=e.$primevueConfig)||void 0===l?void 0:l.ptOptions)||{},u=a.mergeSections,s=void 0===u||u,c=a.mergeProps,d=void 0!==c&&c,v=r(t.originalValue),f=r(t.value);if(void 0===v&&void 0===f)return;return T(f)?f:T(v)?v:s||!s&&f?d?we._mergeProps(e,d,v,f):Se(Se({},v),f):f}return r(t)},_useDefaultPT:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,o=arguments.length>3?arguments[3]:void 0,i=arguments.length>4?arguments[4]:void 0;return we._usePT(e,t,n,o,i)},_loadStyles:function(e,t,n){var o,i=we._getConfig(t,n),r={nonce:null==i||null===(o=i.csp)||void 0===o?void 0:o.nonce};we._loadCoreStyles(e.$instance,r),we._loadThemeStyles(e.$instance,r),we._loadScopedThemeStyles(e.$instance,r),we._themeChangeListener((function(){return we._loadThemeStyles(e.$instance,r)}))},_loadCoreStyles:function(){var e,t,n,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1?arguments[1]:void 0;!A.isStyleNameLoaded(null===(e=o.$style)||void 0===e?void 0:e.name)&&null!==(t=o.$style)&&void 0!==t&&t.name&&(J.loadCSS(i),null===(n=o.$style)||void 0===n||n.loadCSS(i),A.setLoadedStyleName(o.$style.name))},_loadThemeStyles:function(){var e,t,n,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1?arguments[1]:void 0;if(!(null!=o&&o.isUnstyled()||"none"===(null==o||null===(e=o.theme)||void 0===e?void 0:e.call(o)))){if(!y.isStyleNameLoaded("common")){var r,l,a=(null===(r=o.$style)||void 0===r||null===(l=r.getCommonTheme)||void 0===l?void 0:l.call(r))||{},u=a.primitive,s=a.semantic,c=a.global,d=a.style;J.load(null==u?void 0:u.css,Se({name:"primitive-variables"},i)),J.load(null==s?void 0:s.css,Se({name:"semantic-variables"},i)),J.load(null==c?void 0:c.css,Se({name:"global-variables"},i)),J.loadTheme(Se({name:"global-style"},i),d),y.setLoadedStyleName("common")}if(!y.isStyleNameLoaded(null===(t=o.$style)||void 0===t?void 0:t.name)&&null!==(n=o.$style)&&void 0!==n&&n.name){var v,f,m,p,h=(null===(v=o.$style)||void 0===v||null===(f=v.getDirectiveTheme)||void 0===f?void 0:f.call(v))||{},g=h.css,b=h.style;null===(m=o.$style)||void 0===m||m.load(g,Se({name:"".concat(o.$style.name,"-variables")},i)),null===(p=o.$style)||void 0===p||p.loadTheme(Se({name:"".concat(o.$style.name,"-style")},i),b),y.setLoadedStyleName(o.$style.name)}if(!y.isStyleNameLoaded("layer-order")){var C,S,$=null===(C=o.$style)||void 0===C||null===(S=C.getLayerOrderThemeCSS)||void 0===S?void 0:S.call(C);J.load($,Se({name:"layer-order",first:!0},i)),y.setLoadedStyleName("layer-order")}}},_loadScopedThemeStyles:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=e.preset();if(n&&e.$attrSelector){var o,i,r,l=((null===(o=e.$style)||void 0===o||null===(i=o.getPresetTheme)||void 0===i?void 0:i.call(o,n,"[".concat(e.$attrSelector,"]")))||{}).css,a=null===(r=e.$style)||void 0===r?void 0:r.load(l,Se({name:"".concat(e.$attrSelector,"-").concat(e.$style.name)},t));e.scopedStyleEl=a.el}},_themeChangeListener:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){};A.clearLoadedStyleNames(),P.on("theme:change",e)},_hook:function(e,t,n,o,i,r){var l,a,u="on".concat(N(t)),s=we._getConfig(o,i),c=null==n?void 0:n.$instance,d=we._usePT(c,we._getPT(null==o||null===(l=o.value)||void 0===l?void 0:l.pt,e),we._getOptionValue,"hooks.".concat(u)),v=we._useDefaultPT(c,null==s||null===(a=s.pt)||void 0===a||null===(a=a.directives)||void 0===a?void 0:a[e],we._getOptionValue,"hooks.".concat(u)),f={el:n,binding:o,vnode:i,prevVnode:r};null==d||d(c,f),null==v||v(c,f)},_mergeProps:function(){for(var e=arguments.length>1?arguments[1]:void 0,t=arguments.length,n=new Array(t>2?t-2:0),o=2;o1&&void 0!==arguments[1]?arguments[1]:{},n=function(n,o,i,r,l){var a,u,s,c;o._$instances=o._$instances||{};var d=we._getConfig(i,r),v=o._$instances[e]||{},f=j(v)?Se(Se({},t),null==t?void 0:t.methods):{};o._$instances[e]=Se(Se({},v),{},{$name:e,$host:o,$binding:i,$modifiers:null==i?void 0:i.modifiers,$value:null==i?void 0:i.value,$el:v.$el||o||void 0,$style:Se({classes:void 0,inlineStyles:void 0,load:function(){},loadCSS:function(){},loadTheme:function(){}},null==t?void 0:t.style),$primevueConfig:d,$attrSelector:null===(a=o.$pd)||void 0===a||null===(a=a[e])||void 0===a?void 0:a.attrSelector,defaultPT:function(){return we._getPT(null==d?void 0:d.pt,void 0,(function(t){var n;return null==t||null===(n=t.directives)||void 0===n?void 0:n[e]}))},isUnstyled:function(){var e,t;return void 0!==(null===(e=o.$instance)||void 0===e||null===(e=e.$binding)||void 0===e||null===(e=e.value)||void 0===e?void 0:e.unstyled)?null===(t=o.$instance)||void 0===t||null===(t=t.$binding)||void 0===t||null===(t=t.value)||void 0===t?void 0:t.unstyled:null==d?void 0:d.unstyled},theme:function(){var e;return null===(e=o.$instance)||void 0===e||null===(e=e.$primevueConfig)||void 0===e?void 0:e.theme},preset:function(){var e;return null===(e=o.$instance)||void 0===e||null===(e=e.$binding)||void 0===e||null===(e=e.value)||void 0===e?void 0:e.dt},ptm:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return we._getPTValue(o.$instance,null===(e=o.$instance)||void 0===e||null===(e=e.$binding)||void 0===e||null===(e=e.value)||void 0===e?void 0:e.pt,t,Se({},n))},ptmo:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return we._getPTValue(o.$instance,e,t,n,!1)},cx:function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return null!==(e=o.$instance)&&void 0!==e&&e.isUnstyled()?void 0:we._getOptionValue(null===(t=o.$instance)||void 0===t||null===(t=t.$style)||void 0===t?void 0:t.classes,n,Se({},i))},sx:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?we._getOptionValue(null===(e=o.$instance)||void 0===e||null===(e=e.$style)||void 0===e?void 0:e.inlineStyles,t,Se({},n)):void 0}},f),o.$instance=o._$instances[e],null===(u=(s=o.$instance)[n])||void 0===u||u.call(s,o,i,r,l),o["$".concat(e)]=o.$instance,we._hook(e,n,o,i,r,l),o.$pd||(o.$pd={}),o.$pd[e]=Se(Se({},null===(c=o.$pd)||void 0===c?void 0:c[e]),{},{name:e,instance:o.$instance})};return{created:function(t,o,i,r){t.$pd||(t.$pd={}),t.$pd[e]={name:e,attrSelector:C("pd")},n("created",t,o,i,r)},beforeMount:function(e,t,o,i){we._loadStyles(e,t,o),n("beforeMount",e,t,o,i),function(e){var t,n,o,i,r,l=null===(t=e.$instance)||void 0===t?void 0:t.watch;null==l||null===(n=l.config)||void 0===n||n.call(e.$instance,null===(o=e.$instance)||void 0===o?void 0:o.$primevueConfig),he.on("config:change",(function(t){var n,o=t.newValue,i=t.oldValue;return null==l||null===(n=l.config)||void 0===n?void 0:n.call(e.$instance,o,i)})),null==l||null===(i=l["config.ripple"])||void 0===i||i.call(e.$instance,null===(r=e.$instance)||void 0===r||null===(r=r.$primevueConfig)||void 0===r?void 0:r.ripple),he.on("config:ripple:change",(function(t){var n,o=t.newValue,i=t.oldValue;return null==l||null===(n=l["config.ripple"])||void 0===n?void 0:n.call(e.$instance,o,i)}))}(e)},mounted:function(e,t,o,i){we._loadStyles(e,t,o),n("mounted",e,t,o,i)},beforeUpdate:function(e,t,o,i){n("beforeUpdate",e,t,o,i)},updated:function(e,t,o,i){we._loadStyles(e,t,o),n("updated",e,t,o,i)},beforeUnmount:function(e,t,o,i){n("beforeUnmount",e,t,o,i)},unmounted:function(e,t,o,i){var r;null===(r=e.$instance)||void 0===r||null===(r=r.scopedStyleEl)||void 0===r||null===(r=r.value)||void 0===r||r.remove(),n("unmounted",e,t,o,i)}}},extend:function(){var e=ye(we._getMeta.apply(we,arguments),2),t=e[0],n=e[1];return Se({extend:function(){var e=ye(we._getMeta.apply(we,arguments),2),t=e[0],o=e[1];return we.extend(t,Se(Se(Se({},n),null==n?void 0:n.methods),o))}},we._extend(t,n))}},Pe="startsWith",Oe="contains",Te="notContains",_e="endsWith",je="equals",Le="notEquals",xe="lt",Ne="lte",Ve="gt",Me="gte",ke="dateIs",De="dateIsNot",Ee="dateBefore",Ae="dateAfter";function Ie(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Be(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Be(e,t):void 0}}(e))||t){n&&(e=n);var o=0,i=function(){};return{s:i,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,l=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return l=e.done,e},e:function(e){a=!0,r=e},f:function(){try{l||null==n.return||n.return()}finally{if(a)throw r}}}}function Be(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);nt.getTime():e>t)},gte:function(e,t){return null==t||null!=e&&(e.getTime&&t.getTime?e.getTime()>=t.getTime():e>=t)},dateIs:function(e,t){return null==t||null!=e&&e.toDateString()===t.toDateString()},dateIsNot:function(e,t){return null==t||null!=e&&e.toDateString()!==t.toDateString()},dateBefore:function(e,t){return null==t||null!=e&&e.getTime()t.getTime()}},register:function(e,t){this.filters[e]=t}};function Ue(e){return(Ue="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Re(e,t,n){return t&&function(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:function(){};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.element=t,this.listener=n}),[{key:"bindScrollListener",value:function(){this.scrollableParents=D(this.element);for(var e=0;e0&&void 0!==arguments[0]?arguments[0]:"pv_id_")}var He={name:"BlankIcon",extends:me};He.render=function(e,t,n,o,i,r){return a(),u("svg",l({width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.pti()),t[0]||(t[0]=[s("rect",{width:"1",height:"1",fill:"currentColor","fill-opacity":"0"},null,-1)]),16)};var Ye={name:"CheckIcon",extends:me};Ye.render=function(e,t,n,o,i,r){return a(),u("svg",l({width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.pti()),t[0]||(t[0]=[s("path",{d:"M4.86199 11.5948C4.78717 11.5923 4.71366 11.5745 4.64596 11.5426C4.57826 11.5107 4.51779 11.4652 4.46827 11.4091L0.753985 7.69483C0.683167 7.64891 0.623706 7.58751 0.580092 7.51525C0.536478 7.44299 0.509851 7.36177 0.502221 7.27771C0.49459 7.19366 0.506156 7.10897 0.536046 7.03004C0.565935 6.95111 0.613367 6.88 0.674759 6.82208C0.736151 6.76416 0.8099 6.72095 0.890436 6.69571C0.970973 6.67046 1.05619 6.66385 1.13966 6.67635C1.22313 6.68886 1.30266 6.72017 1.37226 6.76792C1.44186 6.81567 1.4997 6.8786 1.54141 6.95197L4.86199 10.2503L12.6397 2.49483C12.7444 2.42694 12.8689 2.39617 12.9932 2.40745C13.1174 2.41873 13.2343 2.47141 13.3251 2.55705C13.4159 2.64268 13.4753 2.75632 13.4938 2.87973C13.5123 3.00315 13.4888 3.1292 13.4271 3.23768L5.2557 11.4091C5.20618 11.4652 5.14571 11.5107 5.07801 11.5426C5.01031 11.5745 4.9368 11.5923 4.86199 11.5948Z",fill:"currentColor"},null,-1)]),16)};var qe={name:"ChevronDownIcon",extends:me};qe.render=function(e,t,n,o,i,r){return a(),u("svg",l({width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.pti()),t[0]||(t[0]=[s("path",{d:"M7.01744 10.398C6.91269 10.3985 6.8089 10.378 6.71215 10.3379C6.61541 10.2977 6.52766 10.2386 6.45405 10.1641L1.13907 4.84913C1.03306 4.69404 0.985221 4.5065 1.00399 4.31958C1.02276 4.13266 1.10693 3.95838 1.24166 3.82747C1.37639 3.69655 1.55301 3.61742 1.74039 3.60402C1.92777 3.59062 2.11386 3.64382 2.26584 3.75424L7.01744 8.47394L11.769 3.75424C11.9189 3.65709 12.097 3.61306 12.2748 3.62921C12.4527 3.64535 12.6199 3.72073 12.7498 3.84328C12.8797 3.96582 12.9647 4.12842 12.9912 4.30502C13.0177 4.48162 12.9841 4.662 12.8958 4.81724L7.58083 10.1322C7.50996 10.2125 7.42344 10.2775 7.32656 10.3232C7.22968 10.3689 7.12449 10.3944 7.01744 10.398Z",fill:"currentColor"},null,-1)]),16)};var Ge={name:"SearchIcon",extends:me};Ge.render=function(e,t,n,o,i,r){return a(),u("svg",l({width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.pti()),t[0]||(t[0]=[s("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M2.67602 11.0265C3.6661 11.688 4.83011 12.0411 6.02086 12.0411C6.81149 12.0411 7.59438 11.8854 8.32483 11.5828C8.87005 11.357 9.37808 11.0526 9.83317 10.6803L12.9769 13.8241C13.0323 13.8801 13.0983 13.9245 13.171 13.9548C13.2438 13.985 13.3219 14.0003 13.4007 14C13.4795 14.0003 13.5575 13.985 13.6303 13.9548C13.7031 13.9245 13.7691 13.8801 13.8244 13.8241C13.9367 13.7116 13.9998 13.5592 13.9998 13.4003C13.9998 13.2414 13.9367 13.089 13.8244 12.9765L10.6807 9.8328C11.053 9.37773 11.3573 8.86972 11.5831 8.32452C11.8857 7.59408 12.0414 6.81119 12.0414 6.02056C12.0414 4.8298 11.6883 3.66579 11.0268 2.67572C10.3652 1.68564 9.42494 0.913972 8.32483 0.45829C7.22472 0.00260857 6.01418 -0.116618 4.84631 0.115686C3.67844 0.34799 2.60568 0.921393 1.76369 1.76338C0.921698 2.60537 0.348296 3.67813 0.115991 4.84601C-0.116313 6.01388 0.00291375 7.22441 0.458595 8.32452C0.914277 9.42464 1.68595 10.3649 2.67602 11.0265ZM3.35565 2.0158C4.14456 1.48867 5.07206 1.20731 6.02086 1.20731C7.29317 1.20731 8.51338 1.71274 9.41304 2.6124C10.3127 3.51206 10.8181 4.73226 10.8181 6.00457C10.8181 6.95337 10.5368 7.88088 10.0096 8.66978C9.48251 9.45868 8.73328 10.0736 7.85669 10.4367C6.98011 10.7997 6.01554 10.8947 5.08496 10.7096C4.15439 10.5245 3.2996 10.0676 2.62869 9.39674C1.95778 8.72583 1.50089 7.87104 1.31579 6.94046C1.13068 6.00989 1.22568 5.04532 1.58878 4.16874C1.95187 3.29215 2.56675 2.54292 3.35565 2.0158Z",fill:"currentColor"},null,-1)]),16)};var Je={name:"TimesIcon",extends:me};Je.render=function(e,t,n,o,i,r){return a(),u("svg",l({width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.pti()),t[0]||(t[0]=[s("path",{d:"M8.01186 7.00933L12.27 2.75116C12.341 2.68501 12.398 2.60524 12.4375 2.51661C12.4769 2.42798 12.4982 2.3323 12.4999 2.23529C12.5016 2.13827 12.4838 2.0419 12.4474 1.95194C12.4111 1.86197 12.357 1.78024 12.2884 1.71163C12.2198 1.64302 12.138 1.58893 12.0481 1.55259C11.9581 1.51625 11.8617 1.4984 11.7647 1.50011C11.6677 1.50182 11.572 1.52306 11.4834 1.56255C11.3948 1.60204 11.315 1.65898 11.2488 1.72997L6.99067 5.98814L2.7325 1.72997C2.59553 1.60234 2.41437 1.53286 2.22718 1.53616C2.03999 1.53946 1.8614 1.61529 1.72901 1.74767C1.59663 1.88006 1.5208 2.05865 1.5175 2.24584C1.5142 2.43303 1.58368 2.61419 1.71131 2.75116L5.96948 7.00933L1.71131 11.2675C1.576 11.403 1.5 11.5866 1.5 11.7781C1.5 11.9696 1.576 12.1532 1.71131 12.2887C1.84679 12.424 2.03043 12.5 2.2219 12.5C2.41338 12.5 2.59702 12.424 2.7325 12.2887L6.99067 8.03052L11.2488 12.2887C11.3843 12.424 11.568 12.5 11.7594 12.5C11.9509 12.5 12.1346 12.424 12.27 12.2887C12.4053 12.1532 12.4813 11.9696 12.4813 11.7781C12.4813 11.5866 12.4053 11.403 12.27 11.2675L8.01186 7.00933Z",fill:"currentColor"},null,-1)]),16)};var Ke={name:"BaseEditableHolder",extends:ue,emits:["update:modelValue","value-change"],props:{modelValue:{type:null,default:void 0},defaultValue:{type:null,default:void 0},name:{type:String,default:void 0},invalid:{type:Boolean,default:void 0},disabled:{type:Boolean,default:!1},formControl:{type:Object,default:void 0}},inject:{$parentInstance:{default:void 0},$pcForm:{default:void 0},$pcFormField:{default:void 0}},data:function(){return{d_value:this.defaultValue||this.modelValue}},watch:{modelValue:function(e){this.d_value=e},defaultValue:function(e){this.d_value=e},$formName:{immediate:!0,handler:function(e){var t,n;this.formField=(null===(t=this.$pcForm)||void 0===t||null===(n=t.register)||void 0===n?void 0:n.call(t,e,this.$formControl))||{}}},$formControl:{immediate:!0,handler:function(e){var t,n;this.formField=(null===(t=this.$pcForm)||void 0===t||null===(n=t.register)||void 0===n?void 0:n.call(t,this.$formName,e))||{}}},$formDefaultValue:{immediate:!0,handler:function(e){this.d_value!==e&&(this.d_value=e)}}},formField:{},methods:{writeValue:function(e,t){var n,o;this.controlled&&(this.d_value=e,this.$emit("update:modelValue",e)),this.$emit("value-change",e),null===(n=(o=this.formField).onChange)||void 0===n||n.call(o,{originalEvent:t,value:e})}},computed:{$filled:function(){return h(this.d_value)},$invalid:function(){var e,t,n,o;return null!==(e=null!==(t=this.invalid)&&void 0!==t?t:null===(n=this.$pcFormField)||void 0===n||null===(n=n.$field)||void 0===n?void 0:n.invalid)&&void 0!==e?e:null===(o=this.$pcForm)||void 0===o||null===(o=o.states)||void 0===o||null===(o=o[this.$formName])||void 0===o?void 0:o.invalid},$formName:function(){var e;return this.name||(null===(e=this.$formControl)||void 0===e?void 0:e.name)},$formControl:function(){var e;return this.formControl||(null===(e=this.$pcFormField)||void 0===e?void 0:e.formControl)},$formDefaultValue:function(){var e,t,n,o;return null!==(e=null!==(t=this.d_value)&&void 0!==t?t:null===(n=this.$pcFormField)||void 0===n?void 0:n.initialValue)&&void 0!==e?e:null===(o=this.$pcForm)||void 0===o||null===(o=o.initialValues)||void 0===o?void 0:o[this.$formName]},controlled:function(){return this.$inProps.hasOwnProperty("modelValue")||!this.$inProps.hasOwnProperty("modelValue")&&!this.$inProps.hasOwnProperty("defaultValue")},filled:function(){return this.$filled}}},Qe={name:"BaseInput",extends:Ke,props:{size:{type:String,default:null},fluid:{type:Boolean,default:null},variant:{type:String,default:null}},inject:{$parentInstance:{default:void 0},$pcFluid:{default:void 0}},computed:{$variant:function(){var e;return null!==(e=this.variant)&&void 0!==e?e:this.$primevue.config.inputStyle||this.$primevue.config.inputVariant},$fluid:function(){var e;return null!==(e=this.fluid)&&void 0!==e?e:!!this.$pcFluid},hasFluid:function(){return this.$fluid}}},Xe={name:"MinusIcon",extends:me};Xe.render=function(e,t,n,o,i,r){return a(),u("svg",l({width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.pti()),t[0]||(t[0]=[s("path",{d:"M13.2222 7.77778H0.777778C0.571498 7.77778 0.373667 7.69584 0.227806 7.54998C0.0819442 7.40412 0 7.20629 0 7.00001C0 6.79373 0.0819442 6.5959 0.227806 6.45003C0.373667 6.30417 0.571498 6.22223 0.777778 6.22223H13.2222C13.4285 6.22223 13.6263 6.30417 13.7722 6.45003C13.9181 6.5959 14 6.79373 14 7.00001C14 7.20629 13.9181 7.40412 13.7722 7.54998C13.6263 7.69584 13.4285 7.77778 13.2222 7.77778Z",fill:"currentColor"},null,-1)]),16)};var et={name:"TimesCircleIcon",extends:me};et.render=function(e,t,n,o,i,r){return a(),u("svg",l({width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.pti()),t[0]||(t[0]=[s("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M7 14C5.61553 14 4.26215 13.5895 3.11101 12.8203C1.95987 12.0511 1.06266 10.9579 0.532846 9.67879C0.00303296 8.3997 -0.13559 6.99224 0.134506 5.63437C0.404603 4.2765 1.07129 3.02922 2.05026 2.05026C3.02922 1.07129 4.2765 0.404603 5.63437 0.134506C6.99224 -0.13559 8.3997 0.00303296 9.67879 0.532846C10.9579 1.06266 12.0511 1.95987 12.8203 3.11101C13.5895 4.26215 14 5.61553 14 7C14 8.85652 13.2625 10.637 11.9497 11.9497C10.637 13.2625 8.85652 14 7 14ZM7 1.16667C5.84628 1.16667 4.71846 1.50879 3.75918 2.14976C2.79989 2.79074 2.05222 3.70178 1.61071 4.76768C1.16919 5.83358 1.05367 7.00647 1.27876 8.13803C1.50384 9.26958 2.05941 10.309 2.87521 11.1248C3.69102 11.9406 4.73042 12.4962 5.86198 12.7212C6.99353 12.9463 8.16642 12.8308 9.23232 12.3893C10.2982 11.9478 11.2093 11.2001 11.8502 10.2408C12.4912 9.28154 12.8333 8.15373 12.8333 7C12.8333 5.45291 12.2188 3.96918 11.1248 2.87521C10.0308 1.78125 8.5471 1.16667 7 1.16667ZM4.66662 9.91668C4.58998 9.91704 4.51404 9.90209 4.44325 9.87271C4.37246 9.84333 4.30826 9.8001 4.2544 9.74557C4.14516 9.6362 4.0838 9.48793 4.0838 9.33335C4.0838 9.17876 4.14516 9.0305 4.2544 8.92113L6.17553 7L4.25443 5.07891C4.15139 4.96832 4.09529 4.82207 4.09796 4.67094C4.10063 4.51982 4.16185 4.37563 4.26872 4.26876C4.3756 4.16188 4.51979 4.10066 4.67091 4.09799C4.82204 4.09532 4.96829 4.15142 5.07887 4.25446L6.99997 6.17556L8.92106 4.25446C9.03164 4.15142 9.1779 4.09532 9.32903 4.09799C9.48015 4.10066 9.62434 4.16188 9.73121 4.26876C9.83809 4.37563 9.89931 4.51982 9.90198 4.67094C9.90464 4.82207 9.84855 4.96832 9.74551 5.07891L7.82441 7L9.74554 8.92113C9.85478 9.0305 9.91614 9.17876 9.91614 9.33335C9.91614 9.48793 9.85478 9.6362 9.74554 9.74557C9.69168 9.8001 9.62748 9.84333 9.55669 9.87271C9.4859 9.90209 9.40996 9.91704 9.33332 9.91668C9.25668 9.91704 9.18073 9.90209 9.10995 9.87271C9.03916 9.84333 8.97495 9.8001 8.9211 9.74557L6.99997 7.82444L5.07884 9.74557C5.02499 9.8001 4.96078 9.84333 4.88999 9.87271C4.81921 9.90209 4.74326 9.91704 4.66662 9.91668Z",fill:"currentColor"},null,-1)]),16)};var tt={name:"AngleRightIcon",extends:me};function nt(e){return(nt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ot(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function it(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},u=e(!1),s=e(l),c=e(null),p=m()?window.document:void 0,h=a.document,g=void 0===h?p:h,y=a.immediate,b=void 0===y||y,C=a.manual,S=void 0!==C&&C,$=a.name,w=void 0===$?"style_".concat(++R):$,P=a.id,O=void 0===P?void 0:P,T=a.media,_=void 0===T?void 0:T,j=a.nonce,L=void 0===j?void 0:j,x=a.first,N=void 0!==x&&x,V=a.onMounted,M=void 0===V?void 0:V,k=a.onUpdated,D=void 0===k?void 0:k,E=a.onLoad,A=void 0===E?void 0:E,I=a.props,B=void 0===I?{}:I,U=function(){},z=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(g){var n=F(F({},B),t),o=n.name||w,i=n.id||O,a=n.nonce||L;c.value=g.querySelector('style[data-primevue-style-id="'.concat(o,'"]'))||g.getElementById(i)||g.createElement("style"),c.value.isConnected||(s.value=e||l,d(c.value,{type:"text/css",id:i,media:_,nonce:a}),N?g.head.prepend(c.value):g.head.appendChild(c.value),v(c.value,"data-primevue-style-id",o),d(c.value,n),c.value.onload=function(e){return null==A?void 0:A(e,{name:o})},null==M||M(o)),u.value||(U=r(s,(function(e){c.value.textContent=e,null==D||D(o)}),{immediate:!0}),u.value=!0)}};return b&&!S&&function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];n()?o(e):t?e():i(e)}(z),{id:O,name:w,el:c,css:s,unload:function(){g&&u.value&&(U(),f(c.value)&&g.head.removeChild(c.value),u.value=!1)},load:z,isLoaded:t(u)}}function W(e){return(W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Z(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,i,r,l,a=[],u=!0,s=!1;try{if(r=(n=n.call(e)).next,0===t);else for(;!(u=(o=r.call(n)).done)&&(a.push(o.value),a.length!==t);u=!0);}catch(c){s=!0,i=c}finally{try{if(!u&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw i}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return H(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?H(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);n1&&void 0!==arguments[1]?arguments[1]:{},n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(e){return e})(p(e,{dt:b}));return h(n)?z(g(n),q({name:this.name},t)):{}},loadCSS:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.load(this.css,e)},loadTheme:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return this.load(this.theme,t,(function(){var o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return y.transformCSS(t.name||e.name,"".concat(o).concat(n))}))},getCommonTheme:function(e){return y.getCommon(this.name,e)},getComponentTheme:function(e){return y.getComponent(this.name,e)},getDirectiveTheme:function(e){return y.getDirective(this.name,e)},getPresetTheme:function(e,t,n){return y.getCustomPreset(this.name,e,t,n)},getLayerOrderThemeCSS:function(){return y.getLayerOrderCSS(this.name)},getStyleSheet:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.css){var n=p(this.css,{dt:b})||"",o=g("".concat(n).concat(e)),i=Object.entries(t).reduce((function(e,t){var n=Z(t,2),o=n[0],i=n[1];return e.push("".concat(o,'="').concat(i,'"'))&&e}),[]).join(" ");return h(o)?'"):""}return""},getCommonThemeStyleSheet:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return y.getCommonStyleSheet(this.name,e,t)},getThemeStyleSheet:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[y.getStyleSheet(this.name,e,t)];if(this.theme){var o="base"===this.name?"global-style":"".concat(this.name,"-style"),i=p(this.theme,{dt:b}),r=g(y.transformCSS(o,i)),l=Object.entries(t).reduce((function(e,t){var n=Z(t,2),o=n[0],i=n[1];return e.push("".concat(o,'="').concat(i,'"'))&&e}),[]).join(" ");h(r)&&n.push('"))}return n.join("")},extend:function(e){return q(q({},this),{},{css:void 0,theme:void 0},e)}},K=J.extend({name:"common"});function Q(e){return(Q="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function X(e){return ie(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||ne(e)||te()}function ee(e,t){return ie(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,i,r,l,a=[],u=!0,s=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(o=r.call(n)).done)&&(a.push(o.value),a.length!==t);u=!0);}catch(c){s=!0,i=c}finally{try{if(!u&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw i}}return a}}(e,t)||ne(e,t)||te()}function te(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function ne(e,t){if(e){if("string"==typeof e)return oe(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?oe(e,t):void 0}}function oe(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);n1?t-1:0),o=1;o0&&void 0!==arguments[0]?arguments[0]:function(){};A.clearLoadedStyleNames(),P.on("theme:change",e)},_getHostInstance:function(e){return e?this.$options.hostName?e.$.type.name===this.$options.hostName?e:this._getHostInstance(e.$parentInstance):e.$parentInstance:void 0},_getPropValue:function(e){var t;return this[e]||(null===(t=this._getHostInstance(this))||void 0===t?void 0:t[e])},_getOptionValue:function(e){return O(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",arguments.length>2&&void 0!==arguments[2]?arguments[2]:{})},_getPTValue:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=/./g.test(n)&&!!o[n.split(".")[0]],l=this._getPropValue("ptOptions")||(null===(e=this.$primevueConfig)||void 0===e?void 0:e.ptOptions)||{},a=l.mergeSections,u=void 0===a||a,s=l.mergeProps,c=void 0!==s&&s,d=i?r?this._useGlobalPT(this._getPTClassValue,n,o):this._useDefaultPT(this._getPTClassValue,n,o):void 0,v=r?void 0:this._getPTSelf(t,this._getPTClassValue,n,le(le({},o),{},{global:d||{}})),f=this._getPTDatasets(n);return u||!u&&v?c?this._mergeProps(c,d,v,f):le(le(le({},d),v),f):le(le({},v),f)},_getPTSelf:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length,n=new Array(t>1?t-1:0),o=1;o0&&void 0!==arguments[0]?arguments[0]:"",o="data-pc-",i="root"===n&&h(null===(e=this.pt)||void 0===e?void 0:e["data-pc-section"]);return"transition"!==n&&le(le({},"root"===n&&le(le(ae({},"".concat(o,"name"),$(i?null===(t=this.pt)||void 0===t?void 0:t["data-pc-section"]:this.$.type.name)),i&&ae({},"".concat(o,"extend"),$(this.$.type.name))),m()&&ae({},"".concat(this.$attrSelector),""))),{},ae({},"".concat(o,"section"),$(n)))},_getPTClassValue:function(){var e=this._getOptionValue.apply(this,arguments);return T(e)||_(e)?{class:e}:e},_getPT:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",o=arguments.length>2?arguments[2]:void 0,i=function(e){var i,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],l=o?o(e):e,a=$(n),u=$(t.$name);return null!==(i=r?a!==u?null==l?void 0:l[a]:void 0:null==l?void 0:l[a])&&void 0!==i?i:l};return null!=e&&e.hasOwnProperty("_usept")?{_usept:e._usept,originalValue:i(e.originalValue),value:i(e.value)}:i(e,!0)},_usePT:function(e,t,n,o){var i=function(e){return t(e,n,o)};if(null!=e&&e.hasOwnProperty("_usept")){var r,l=e._usept||(null===(r=this.$primevueConfig)||void 0===r?void 0:r.ptOptions)||{},a=l.mergeSections,u=void 0===a||a,s=l.mergeProps,c=void 0!==s&&s,d=i(e.originalValue),v=i(e.value);if(void 0===d&&void 0===v)return;return T(v)?v:T(d)?d:u||!u&&v?c?this._mergeProps(c,d,v):le(le({},d),v):v}return i(e)},_useGlobalPT:function(e,t,n){return this._usePT(this.globalPT,e,t,n)},_useDefaultPT:function(e,t,n){return this._usePT(this.defaultPT,e,t,n)},ptm:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this._getPTValue(this.pt,e,le(le({},this.$params),t))},ptmi:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return l(this.$_attrsWithoutPT,this.ptm(e,t))},ptmo:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._getPTValue(e,t,le({instance:this},n),!1)},cx:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.isUnstyled?void 0:this._getOptionValue(this.$style.classes,e,le(le({},this.$params),t))},sx:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!(arguments.length>1&&void 0!==arguments[1])||arguments[1]){var n=this._getOptionValue(this.$style.inlineStyles,e,le(le({},this.$params),t));return[this._getOptionValue(K.inlineStyles,e,le(le({},this.$params),t)),n]}}},computed:{globalPT:function(){var e,t=this;return this._getPT(null===(e=this.$primevueConfig)||void 0===e?void 0:e.pt,void 0,(function(e){return p(e,{instance:t})}))},defaultPT:function(){var e,t=this;return this._getPT(null===(e=this.$primevueConfig)||void 0===e?void 0:e.pt,void 0,(function(e){return t._getOptionValue(e,t.$name,le({},t.$params))||p(e,le({},t.$params))}))},isUnstyled:function(){var e;return void 0!==this.unstyled?this.unstyled:null===(e=this.$primevueConfig)||void 0===e?void 0:e.unstyled},$inProps:function(){var e,t=Object.keys((null===(e=this.$.vnode)||void 0===e?void 0:e.props)||{});return Object.fromEntries(Object.entries(this.$props).filter((function(e){var n=ee(e,1)[0];return null==t?void 0:t.includes(n)})))},$theme:function(){var e;return null===(e=this.$primevueConfig)||void 0===e?void 0:e.theme},$style:function(){return le(le({classes:void 0,inlineStyles:void 0,load:function(){},loadCSS:function(){},loadTheme:function(){}},(this._getHostInstance(this)||{}).$style),this.$options.style)},$styleOptions:function(){var e;return{nonce:null===(e=this.$primevueConfig)||void 0===e||null===(e=e.csp)||void 0===e?void 0:e.nonce}},$primevueConfig:function(){var e;return null===(e=this.$primevue)||void 0===e?void 0:e.config},$name:function(){return this.$options.hostName||this.$.type.name},$params:function(){var e=this._getHostInstance(this)||this.$parent;return{instance:this,props:this.$props,state:this.$data,attrs:this.$attrs,parent:{instance:e,props:null==e?void 0:e.$props,state:null==e?void 0:e.$data,attrs:null==e?void 0:e.$attrs}}},$_attrsPT:function(){return Object.entries(this.$attrs||{}).filter((function(e){var t=ee(e,1)[0];return null==t?void 0:t.startsWith("pt:")})).reduce((function(e,t){var n=ee(t,2),o=n[0],i=n[1],r=X(o.split(":")).slice(1);return null==r||r.reduce((function(e,t,n,o){return!e[t]&&(e[t]=n===o.length-1?i:{}),e[t]}),e),e}),{})},$_attrsWithoutPT:function(){return Object.entries(this.$attrs||{}).filter((function(e){var t=ee(e,1)[0];return!(null!=t&&t.startsWith("pt:"))})).reduce((function(e,t){var n=ee(t,2),o=n[0],i=n[1];return e[o]=i,e}),{})}}},se=J.extend({name:"baseicon",css:"\n.p-icon {\n display: inline-block;\n vertical-align: baseline;\n}\n\n.p-icon-spin {\n -webkit-animation: p-icon-spin 2s infinite linear;\n animation: p-icon-spin 2s infinite linear;\n}\n\n@-webkit-keyframes p-icon-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg);\n }\n}\n\n@keyframes p-icon-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(359deg);\n transform: rotate(359deg);\n }\n}\n"});function ce(e){return(ce="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function de(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function ve(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,o=Array(t);n0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},l=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=function(){var e=we._getOptionValue.apply(we,arguments);return T(e)||_(e)?{class:e}:e},u=(null===(e=n.binding)||void 0===e||null===(e=e.value)||void 0===e?void 0:e.ptOptions)||(null===(t=n.$primevueConfig)||void 0===t?void 0:t.ptOptions)||{},s=u.mergeSections,c=void 0===s||s,d=u.mergeProps,v=void 0!==d&&d,f=l?we._useDefaultPT(n,n.defaultPT(),a,i,r):void 0,m=we._usePT(n,we._getPT(o,n.$name),a,i,Se(Se({},r),{},{global:f||{}})),p=we._getPTDatasets(n,i);return c||!c&&m?v?we._mergeProps(n,v,f,m,p):Se(Se(Se({},f),m),p):Se(Se({},m),p)},_getPTDatasets:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n="data-pc-";return Se(Se({},"root"===t&&$e({},"".concat(n,"name"),$(e.$name))),{},$e({},"".concat(n,"section"),$(t)))},_getPT:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,o=function(e){var o,i=n?n(e):e,r=$(t);return null!==(o=null==i?void 0:i[r])&&void 0!==o?o:i};return null!=e&&e.hasOwnProperty("_usept")?{_usept:e._usept,originalValue:o(e.originalValue),value:o(e.value)}:o(e)},_usePT:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0,o=arguments.length>3?arguments[3]:void 0,i=arguments.length>4?arguments[4]:void 0,r=function(e){return n(e,o,i)};if(null!=t&&t.hasOwnProperty("_usept")){var l,a=t._usept||(null===(l=e.$primevueConfig)||void 0===l?void 0:l.ptOptions)||{},u=a.mergeSections,s=void 0===u||u,c=a.mergeProps,d=void 0!==c&&c,v=r(t.originalValue),f=r(t.value);if(void 0===v&&void 0===f)return;return T(f)?f:T(v)?v:s||!s&&f?d?we._mergeProps(e,d,v,f):Se(Se({},v),f):f}return r(t)},_useDefaultPT:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,o=arguments.length>3?arguments[3]:void 0,i=arguments.length>4?arguments[4]:void 0;return we._usePT(e,t,n,o,i)},_loadStyles:function(e,t,n){var o,i=we._getConfig(t,n),r={nonce:null==i||null===(o=i.csp)||void 0===o?void 0:o.nonce};we._loadCoreStyles(e.$instance,r),we._loadThemeStyles(e.$instance,r),we._loadScopedThemeStyles(e.$instance,r),we._themeChangeListener((function(){return we._loadThemeStyles(e.$instance,r)}))},_loadCoreStyles:function(){var e,t,n,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1?arguments[1]:void 0;!A.isStyleNameLoaded(null===(e=o.$style)||void 0===e?void 0:e.name)&&null!==(t=o.$style)&&void 0!==t&&t.name&&(J.loadCSS(i),null===(n=o.$style)||void 0===n||n.loadCSS(i),A.setLoadedStyleName(o.$style.name))},_loadThemeStyles:function(){var e,t,n,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1?arguments[1]:void 0;if(!(null!=o&&o.isUnstyled()||"none"===(null==o||null===(e=o.theme)||void 0===e?void 0:e.call(o)))){if(!y.isStyleNameLoaded("common")){var r,l,a=(null===(r=o.$style)||void 0===r||null===(l=r.getCommonTheme)||void 0===l?void 0:l.call(r))||{},u=a.primitive,s=a.semantic,c=a.global,d=a.style;J.load(null==u?void 0:u.css,Se({name:"primitive-variables"},i)),J.load(null==s?void 0:s.css,Se({name:"semantic-variables"},i)),J.load(null==c?void 0:c.css,Se({name:"global-variables"},i)),J.loadTheme(Se({name:"global-style"},i),d),y.setLoadedStyleName("common")}if(!y.isStyleNameLoaded(null===(t=o.$style)||void 0===t?void 0:t.name)&&null!==(n=o.$style)&&void 0!==n&&n.name){var v,f,m,p,h=(null===(v=o.$style)||void 0===v||null===(f=v.getDirectiveTheme)||void 0===f?void 0:f.call(v))||{},g=h.css,b=h.style;null===(m=o.$style)||void 0===m||m.load(g,Se({name:"".concat(o.$style.name,"-variables")},i)),null===(p=o.$style)||void 0===p||p.loadTheme(Se({name:"".concat(o.$style.name,"-style")},i),b),y.setLoadedStyleName(o.$style.name)}if(!y.isStyleNameLoaded("layer-order")){var C,S,$=null===(C=o.$style)||void 0===C||null===(S=C.getLayerOrderThemeCSS)||void 0===S?void 0:S.call(C);J.load($,Se({name:"layer-order",first:!0},i)),y.setLoadedStyleName("layer-order")}}},_loadScopedThemeStyles:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=e.preset();if(n&&e.$attrSelector){var o,i,r,l=((null===(o=e.$style)||void 0===o||null===(i=o.getPresetTheme)||void 0===i?void 0:i.call(o,n,"[".concat(e.$attrSelector,"]")))||{}).css,a=null===(r=e.$style)||void 0===r?void 0:r.load(l,Se({name:"".concat(e.$attrSelector,"-").concat(e.$style.name)},t));e.scopedStyleEl=a.el}},_themeChangeListener:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){};A.clearLoadedStyleNames(),P.on("theme:change",e)},_hook:function(e,t,n,o,i,r){var l,a,u="on".concat(N(t)),s=we._getConfig(o,i),c=null==n?void 0:n.$instance,d=we._usePT(c,we._getPT(null==o||null===(l=o.value)||void 0===l?void 0:l.pt,e),we._getOptionValue,"hooks.".concat(u)),v=we._useDefaultPT(c,null==s||null===(a=s.pt)||void 0===a||null===(a=a.directives)||void 0===a?void 0:a[e],we._getOptionValue,"hooks.".concat(u)),f={el:n,binding:o,vnode:i,prevVnode:r};null==d||d(c,f),null==v||v(c,f)},_mergeProps:function(){for(var e=arguments.length>1?arguments[1]:void 0,t=arguments.length,n=new Array(t>2?t-2:0),o=2;o1&&void 0!==arguments[1]?arguments[1]:{},n=function(n,o,i,r,l){var a,u,s,c;o._$instances=o._$instances||{};var d=we._getConfig(i,r),v=o._$instances[e]||{},f=j(v)?Se(Se({},t),null==t?void 0:t.methods):{};o._$instances[e]=Se(Se({},v),{},{$name:e,$host:o,$binding:i,$modifiers:null==i?void 0:i.modifiers,$value:null==i?void 0:i.value,$el:v.$el||o||void 0,$style:Se({classes:void 0,inlineStyles:void 0,load:function(){},loadCSS:function(){},loadTheme:function(){}},null==t?void 0:t.style),$primevueConfig:d,$attrSelector:null===(a=o.$pd)||void 0===a||null===(a=a[e])||void 0===a?void 0:a.attrSelector,defaultPT:function(){return we._getPT(null==d?void 0:d.pt,void 0,(function(t){var n;return null==t||null===(n=t.directives)||void 0===n?void 0:n[e]}))},isUnstyled:function(){var e,t;return void 0!==(null===(e=o.$instance)||void 0===e||null===(e=e.$binding)||void 0===e||null===(e=e.value)||void 0===e?void 0:e.unstyled)?null===(t=o.$instance)||void 0===t||null===(t=t.$binding)||void 0===t||null===(t=t.value)||void 0===t?void 0:t.unstyled:null==d?void 0:d.unstyled},theme:function(){var e;return null===(e=o.$instance)||void 0===e||null===(e=e.$primevueConfig)||void 0===e?void 0:e.theme},preset:function(){var e;return null===(e=o.$instance)||void 0===e||null===(e=e.$binding)||void 0===e||null===(e=e.value)||void 0===e?void 0:e.dt},ptm:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return we._getPTValue(o.$instance,null===(e=o.$instance)||void 0===e||null===(e=e.$binding)||void 0===e||null===(e=e.value)||void 0===e?void 0:e.pt,t,Se({},n))},ptmo:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return we._getPTValue(o.$instance,e,t,n,!1)},cx:function(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return null!==(e=o.$instance)&&void 0!==e&&e.isUnstyled()?void 0:we._getOptionValue(null===(t=o.$instance)||void 0===t||null===(t=t.$style)||void 0===t?void 0:t.classes,n,Se({},i))},sx:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?we._getOptionValue(null===(e=o.$instance)||void 0===e||null===(e=e.$style)||void 0===e?void 0:e.inlineStyles,t,Se({},n)):void 0}},f),o.$instance=o._$instances[e],null===(u=(s=o.$instance)[n])||void 0===u||u.call(s,o,i,r,l),o["$".concat(e)]=o.$instance,we._hook(e,n,o,i,r,l),o.$pd||(o.$pd={}),o.$pd[e]=Se(Se({},null===(c=o.$pd)||void 0===c?void 0:c[e]),{},{name:e,instance:o.$instance})};return{created:function(t,o,i,r){t.$pd||(t.$pd={}),t.$pd[e]={name:e,attrSelector:C("pd")},n("created",t,o,i,r)},beforeMount:function(e,t,o,i){we._loadStyles(e,t,o),n("beforeMount",e,t,o,i),function(e){var t,n,o,i,r,l=null===(t=e.$instance)||void 0===t?void 0:t.watch;null==l||null===(n=l.config)||void 0===n||n.call(e.$instance,null===(o=e.$instance)||void 0===o?void 0:o.$primevueConfig),he.on("config:change",(function(t){var n,o=t.newValue,i=t.oldValue;return null==l||null===(n=l.config)||void 0===n?void 0:n.call(e.$instance,o,i)})),null==l||null===(i=l["config.ripple"])||void 0===i||i.call(e.$instance,null===(r=e.$instance)||void 0===r||null===(r=r.$primevueConfig)||void 0===r?void 0:r.ripple),he.on("config:ripple:change",(function(t){var n,o=t.newValue,i=t.oldValue;return null==l||null===(n=l["config.ripple"])||void 0===n?void 0:n.call(e.$instance,o,i)}))}(e)},mounted:function(e,t,o,i){we._loadStyles(e,t,o),n("mounted",e,t,o,i)},beforeUpdate:function(e,t,o,i){n("beforeUpdate",e,t,o,i)},updated:function(e,t,o,i){we._loadStyles(e,t,o),n("updated",e,t,o,i)},beforeUnmount:function(e,t,o,i){n("beforeUnmount",e,t,o,i)},unmounted:function(e,t,o,i){var r;null===(r=e.$instance)||void 0===r||null===(r=r.scopedStyleEl)||void 0===r||null===(r=r.value)||void 0===r||r.remove(),n("unmounted",e,t,o,i)}}},extend:function(){var e=ye(we._getMeta.apply(we,arguments),2),t=e[0],n=e[1];return Se({extend:function(){var e=ye(we._getMeta.apply(we,arguments),2),t=e[0],o=e[1];return we.extend(t,Se(Se(Se({},n),null==n?void 0:n.methods),o))}},we._extend(t,n))}},Pe="startsWith",Oe="contains",Te="notContains",_e="endsWith",je="equals",Le="notEquals",xe="lt",Ne="lte",Ve="gt",Me="gte",ke="dateIs",De="dateIsNot",Ee="dateBefore",Ae="dateAfter";function Ie(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Be(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Be(e,t):void 0}}(e))||t){n&&(e=n);var o=0,i=function(){};return{s:i,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,l=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return l=e.done,e},e:function(e){a=!0,r=e},f:function(){try{l||null==n.return||n.return()}finally{if(a)throw r}}}}function Be(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);nt.getTime():e>t)},gte:function(e,t){return null==t||null!=e&&(e.getTime&&t.getTime?e.getTime()>=t.getTime():e>=t)},dateIs:function(e,t){return null==t||null!=e&&e.toDateString()===t.toDateString()},dateIsNot:function(e,t){return null==t||null!=e&&e.toDateString()!==t.toDateString()},dateBefore:function(e,t){return null==t||null!=e&&e.getTime()t.getTime()}},register:function(e,t){this.filters[e]=t}};function Ue(e){return(Ue="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Re(e,t,n){return t&&function(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:function(){};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.element=t,this.listener=n}),[{key:"bindScrollListener",value:function(){this.scrollableParents=D(this.element);for(var e=0;e0&&void 0!==arguments[0]?arguments[0]:"pv_id_")}var He={name:"BlankIcon",extends:me};He.render=function(e,t,n,o,i,r){return a(),u("svg",l({width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.pti()),t[0]||(t[0]=[s("rect",{width:"1",height:"1",fill:"currentColor","fill-opacity":"0"},null,-1)]),16)};var Ye={name:"CheckIcon",extends:me};Ye.render=function(e,t,n,o,i,r){return a(),u("svg",l({width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.pti()),t[0]||(t[0]=[s("path",{d:"M4.86199 11.5948C4.78717 11.5923 4.71366 11.5745 4.64596 11.5426C4.57826 11.5107 4.51779 11.4652 4.46827 11.4091L0.753985 7.69483C0.683167 7.64891 0.623706 7.58751 0.580092 7.51525C0.536478 7.44299 0.509851 7.36177 0.502221 7.27771C0.49459 7.19366 0.506156 7.10897 0.536046 7.03004C0.565935 6.95111 0.613367 6.88 0.674759 6.82208C0.736151 6.76416 0.8099 6.72095 0.890436 6.69571C0.970973 6.67046 1.05619 6.66385 1.13966 6.67635C1.22313 6.68886 1.30266 6.72017 1.37226 6.76792C1.44186 6.81567 1.4997 6.8786 1.54141 6.95197L4.86199 10.2503L12.6397 2.49483C12.7444 2.42694 12.8689 2.39617 12.9932 2.40745C13.1174 2.41873 13.2343 2.47141 13.3251 2.55705C13.4159 2.64268 13.4753 2.75632 13.4938 2.87973C13.5123 3.00315 13.4888 3.1292 13.4271 3.23768L5.2557 11.4091C5.20618 11.4652 5.14571 11.5107 5.07801 11.5426C5.01031 11.5745 4.9368 11.5923 4.86199 11.5948Z",fill:"currentColor"},null,-1)]),16)};var qe={name:"ChevronDownIcon",extends:me};qe.render=function(e,t,n,o,i,r){return a(),u("svg",l({width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.pti()),t[0]||(t[0]=[s("path",{d:"M7.01744 10.398C6.91269 10.3985 6.8089 10.378 6.71215 10.3379C6.61541 10.2977 6.52766 10.2386 6.45405 10.1641L1.13907 4.84913C1.03306 4.69404 0.985221 4.5065 1.00399 4.31958C1.02276 4.13266 1.10693 3.95838 1.24166 3.82747C1.37639 3.69655 1.55301 3.61742 1.74039 3.60402C1.92777 3.59062 2.11386 3.64382 2.26584 3.75424L7.01744 8.47394L11.769 3.75424C11.9189 3.65709 12.097 3.61306 12.2748 3.62921C12.4527 3.64535 12.6199 3.72073 12.7498 3.84328C12.8797 3.96582 12.9647 4.12842 12.9912 4.30502C13.0177 4.48162 12.9841 4.662 12.8958 4.81724L7.58083 10.1322C7.50996 10.2125 7.42344 10.2775 7.32656 10.3232C7.22968 10.3689 7.12449 10.3944 7.01744 10.398Z",fill:"currentColor"},null,-1)]),16)};var Ge={name:"SearchIcon",extends:me};Ge.render=function(e,t,n,o,i,r){return a(),u("svg",l({width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.pti()),t[0]||(t[0]=[s("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M2.67602 11.0265C3.6661 11.688 4.83011 12.0411 6.02086 12.0411C6.81149 12.0411 7.59438 11.8854 8.32483 11.5828C8.87005 11.357 9.37808 11.0526 9.83317 10.6803L12.9769 13.8241C13.0323 13.8801 13.0983 13.9245 13.171 13.9548C13.2438 13.985 13.3219 14.0003 13.4007 14C13.4795 14.0003 13.5575 13.985 13.6303 13.9548C13.7031 13.9245 13.7691 13.8801 13.8244 13.8241C13.9367 13.7116 13.9998 13.5592 13.9998 13.4003C13.9998 13.2414 13.9367 13.089 13.8244 12.9765L10.6807 9.8328C11.053 9.37773 11.3573 8.86972 11.5831 8.32452C11.8857 7.59408 12.0414 6.81119 12.0414 6.02056C12.0414 4.8298 11.6883 3.66579 11.0268 2.67572C10.3652 1.68564 9.42494 0.913972 8.32483 0.45829C7.22472 0.00260857 6.01418 -0.116618 4.84631 0.115686C3.67844 0.34799 2.60568 0.921393 1.76369 1.76338C0.921698 2.60537 0.348296 3.67813 0.115991 4.84601C-0.116313 6.01388 0.00291375 7.22441 0.458595 8.32452C0.914277 9.42464 1.68595 10.3649 2.67602 11.0265ZM3.35565 2.0158C4.14456 1.48867 5.07206 1.20731 6.02086 1.20731C7.29317 1.20731 8.51338 1.71274 9.41304 2.6124C10.3127 3.51206 10.8181 4.73226 10.8181 6.00457C10.8181 6.95337 10.5368 7.88088 10.0096 8.66978C9.48251 9.45868 8.73328 10.0736 7.85669 10.4367C6.98011 10.7997 6.01554 10.8947 5.08496 10.7096C4.15439 10.5245 3.2996 10.0676 2.62869 9.39674C1.95778 8.72583 1.50089 7.87104 1.31579 6.94046C1.13068 6.00989 1.22568 5.04532 1.58878 4.16874C1.95187 3.29215 2.56675 2.54292 3.35565 2.0158Z",fill:"currentColor"},null,-1)]),16)};var Je={name:"TimesIcon",extends:me};Je.render=function(e,t,n,o,i,r){return a(),u("svg",l({width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.pti()),t[0]||(t[0]=[s("path",{d:"M8.01186 7.00933L12.27 2.75116C12.341 2.68501 12.398 2.60524 12.4375 2.51661C12.4769 2.42798 12.4982 2.3323 12.4999 2.23529C12.5016 2.13827 12.4838 2.0419 12.4474 1.95194C12.4111 1.86197 12.357 1.78024 12.2884 1.71163C12.2198 1.64302 12.138 1.58893 12.0481 1.55259C11.9581 1.51625 11.8617 1.4984 11.7647 1.50011C11.6677 1.50182 11.572 1.52306 11.4834 1.56255C11.3948 1.60204 11.315 1.65898 11.2488 1.72997L6.99067 5.98814L2.7325 1.72997C2.59553 1.60234 2.41437 1.53286 2.22718 1.53616C2.03999 1.53946 1.8614 1.61529 1.72901 1.74767C1.59663 1.88006 1.5208 2.05865 1.5175 2.24584C1.5142 2.43303 1.58368 2.61419 1.71131 2.75116L5.96948 7.00933L1.71131 11.2675C1.576 11.403 1.5 11.5866 1.5 11.7781C1.5 11.9696 1.576 12.1532 1.71131 12.2887C1.84679 12.424 2.03043 12.5 2.2219 12.5C2.41338 12.5 2.59702 12.424 2.7325 12.2887L6.99067 8.03052L11.2488 12.2887C11.3843 12.424 11.568 12.5 11.7594 12.5C11.9509 12.5 12.1346 12.424 12.27 12.2887C12.4053 12.1532 12.4813 11.9696 12.4813 11.7781C12.4813 11.5866 12.4053 11.403 12.27 11.2675L8.01186 7.00933Z",fill:"currentColor"},null,-1)]),16)};var Ke={name:"BaseEditableHolder",extends:ue,emits:["update:modelValue","value-change"],props:{modelValue:{type:null,default:void 0},defaultValue:{type:null,default:void 0},name:{type:String,default:void 0},invalid:{type:Boolean,default:void 0},disabled:{type:Boolean,default:!1},formControl:{type:Object,default:void 0}},inject:{$parentInstance:{default:void 0},$pcForm:{default:void 0},$pcFormField:{default:void 0}},data:function(){return{d_value:this.defaultValue||this.modelValue}},watch:{modelValue:function(e){this.d_value=e},defaultValue:function(e){this.d_value=e},$formName:{immediate:!0,handler:function(e){var t,n;this.formField=(null===(t=this.$pcForm)||void 0===t||null===(n=t.register)||void 0===n?void 0:n.call(t,e,this.$formControl))||{}}},$formControl:{immediate:!0,handler:function(e){var t,n;this.formField=(null===(t=this.$pcForm)||void 0===t||null===(n=t.register)||void 0===n?void 0:n.call(t,this.$formName,e))||{}}},$formDefaultValue:{immediate:!0,handler:function(e){this.d_value!==e&&(this.d_value=e)}}},formField:{},methods:{writeValue:function(e,t){var n,o;this.controlled&&(this.d_value=e,this.$emit("update:modelValue",e)),this.$emit("value-change",e),null===(n=(o=this.formField).onChange)||void 0===n||n.call(o,{originalEvent:t,value:e})}},computed:{$filled:function(){return h(this.d_value)},$invalid:function(){var e,t,n,o;return null!==(e=null!==(t=this.invalid)&&void 0!==t?t:null===(n=this.$pcFormField)||void 0===n||null===(n=n.$field)||void 0===n?void 0:n.invalid)&&void 0!==e?e:null===(o=this.$pcForm)||void 0===o||null===(o=o.states)||void 0===o||null===(o=o[this.$formName])||void 0===o?void 0:o.invalid},$formName:function(){var e;return this.name||(null===(e=this.$formControl)||void 0===e?void 0:e.name)},$formControl:function(){var e;return this.formControl||(null===(e=this.$pcFormField)||void 0===e?void 0:e.formControl)},$formDefaultValue:function(){var e,t,n,o;return null!==(e=null!==(t=this.d_value)&&void 0!==t?t:null===(n=this.$pcFormField)||void 0===n?void 0:n.initialValue)&&void 0!==e?e:null===(o=this.$pcForm)||void 0===o||null===(o=o.initialValues)||void 0===o?void 0:o[this.$formName]},controlled:function(){return this.$inProps.hasOwnProperty("modelValue")||!this.$inProps.hasOwnProperty("modelValue")&&!this.$inProps.hasOwnProperty("defaultValue")},filled:function(){return this.$filled}}},Qe={name:"BaseInput",extends:Ke,props:{size:{type:String,default:null},fluid:{type:Boolean,default:null},variant:{type:String,default:null}},inject:{$parentInstance:{default:void 0},$pcFluid:{default:void 0}},computed:{$variant:function(){var e;return null!==(e=this.variant)&&void 0!==e?e:this.$primevue.config.inputStyle||this.$primevue.config.inputVariant},$fluid:function(){var e;return null!==(e=this.fluid)&&void 0!==e?e:!!this.$pcFluid},hasFluid:function(){return this.$fluid}}},Xe={name:"MinusIcon",extends:me};Xe.render=function(e,t,n,o,i,r){return a(),u("svg",l({width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.pti()),t[0]||(t[0]=[s("path",{d:"M13.2222 7.77778H0.777778C0.571498 7.77778 0.373667 7.69584 0.227806 7.54998C0.0819442 7.40412 0 7.20629 0 7.00001C0 6.79373 0.0819442 6.5959 0.227806 6.45003C0.373667 6.30417 0.571498 6.22223 0.777778 6.22223H13.2222C13.4285 6.22223 13.6263 6.30417 13.7722 6.45003C13.9181 6.5959 14 6.79373 14 7.00001C14 7.20629 13.9181 7.40412 13.7722 7.54998C13.6263 7.69584 13.4285 7.77778 13.2222 7.77778Z",fill:"currentColor"},null,-1)]),16)};var et={name:"TimesCircleIcon",extends:me};et.render=function(e,t,n,o,i,r){return a(),u("svg",l({width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.pti()),t[0]||(t[0]=[s("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M7 14C5.61553 14 4.26215 13.5895 3.11101 12.8203C1.95987 12.0511 1.06266 10.9579 0.532846 9.67879C0.00303296 8.3997 -0.13559 6.99224 0.134506 5.63437C0.404603 4.2765 1.07129 3.02922 2.05026 2.05026C3.02922 1.07129 4.2765 0.404603 5.63437 0.134506C6.99224 -0.13559 8.3997 0.00303296 9.67879 0.532846C10.9579 1.06266 12.0511 1.95987 12.8203 3.11101C13.5895 4.26215 14 5.61553 14 7C14 8.85652 13.2625 10.637 11.9497 11.9497C10.637 13.2625 8.85652 14 7 14ZM7 1.16667C5.84628 1.16667 4.71846 1.50879 3.75918 2.14976C2.79989 2.79074 2.05222 3.70178 1.61071 4.76768C1.16919 5.83358 1.05367 7.00647 1.27876 8.13803C1.50384 9.26958 2.05941 10.309 2.87521 11.1248C3.69102 11.9406 4.73042 12.4962 5.86198 12.7212C6.99353 12.9463 8.16642 12.8308 9.23232 12.3893C10.2982 11.9478 11.2093 11.2001 11.8502 10.2408C12.4912 9.28154 12.8333 8.15373 12.8333 7C12.8333 5.45291 12.2188 3.96918 11.1248 2.87521C10.0308 1.78125 8.5471 1.16667 7 1.16667ZM4.66662 9.91668C4.58998 9.91704 4.51404 9.90209 4.44325 9.87271C4.37246 9.84333 4.30826 9.8001 4.2544 9.74557C4.14516 9.6362 4.0838 9.48793 4.0838 9.33335C4.0838 9.17876 4.14516 9.0305 4.2544 8.92113L6.17553 7L4.25443 5.07891C4.15139 4.96832 4.09529 4.82207 4.09796 4.67094C4.10063 4.51982 4.16185 4.37563 4.26872 4.26876C4.3756 4.16188 4.51979 4.10066 4.67091 4.09799C4.82204 4.09532 4.96829 4.15142 5.07887 4.25446L6.99997 6.17556L8.92106 4.25446C9.03164 4.15142 9.1779 4.09532 9.32903 4.09799C9.48015 4.10066 9.62434 4.16188 9.73121 4.26876C9.83809 4.37563 9.89931 4.51982 9.90198 4.67094C9.90464 4.82207 9.84855 4.96832 9.74551 5.07891L7.82441 7L9.74554 8.92113C9.85478 9.0305 9.91614 9.17876 9.91614 9.33335C9.91614 9.48793 9.85478 9.6362 9.74554 9.74557C9.69168 9.8001 9.62748 9.84333 9.55669 9.87271C9.4859 9.90209 9.40996 9.91704 9.33332 9.91668C9.25668 9.91704 9.18073 9.90209 9.10995 9.87271C9.03916 9.84333 8.97495 9.8001 8.9211 9.74557L6.99997 7.82444L5.07884 9.74557C5.02499 9.8001 4.96078 9.84333 4.88999 9.87271C4.81921 9.90209 4.74326 9.91704 4.66662 9.91668Z",fill:"currentColor"},null,-1)]),16)};var tt={name:"AngleRightIcon",extends:me};function nt(e){return(nt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ot(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function it(e){for(var t=1;te})}catch(wi){}const xo=yo?e=>yo.createHTML(e):e=>e,So="undefined"!=typeof document?document:null,Co=So&&So.createElement("template"),wo={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r="svg"===t?So.createElementNS("http://www.w3.org/2000/svg",e):"mathml"===t?So.createElementNS("http://www.w3.org/1998/Math/MathML",e):n?So.createElement(e,{is:n}):So.createElement(e);return"select"===e&&s&&null!=s.multiple&&r.setAttribute("multiple",s.multiple),r},createText:e=>So.createTextNode(e),createComment:e=>So.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>So.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),r!==o&&(r=r.nextSibling););else{Co.innerHTML=xo("svg"===s?`${e}`:"mathml"===s?`${e}`:e);const r=Co.content;if("svg"===s||"mathml"===s){const e=r.firstChild;for(;e.firstChild;)r.appendChild(e.firstChild);r.removeChild(e)}t.insertBefore(r,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ko="transition",Ao="animation",To=Symbol("_vtc"),Eo={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Oo=l({},On,Eo),Fo=(e=>(e.displayName="Transition",e.props=Oo,e))(((e,{slots:t})=>mo(Ln,function(e){const t={};for(const l in e)l in Eo||(t[l]=e[l]);if(!1===e.css)return t;const{name:n="v",type:s,duration:r,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:c=`${n}-enter-to`,appearFromClass:a=o,appearActiveClass:u=i,appearToClass:f=c,leaveFromClass:p=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:h=`${n}-leave-to`}=e,v=function(e){if(null==e)return null;if(_(e))return[jo(e.enter),jo(e.leave)];{const t=jo(e);return[t,t]}}(r),g=v&&v[0],m=v&&v[1],{onBeforeEnter:y,onEnter:b,onEnterCancelled:x,onLeave:S,onLeaveCancelled:C,onBeforeAppear:w=y,onAppear:k=b,onAppearCancelled:A=x}=t,T=(e,t,n,s)=>{e._enterCancelled=s,$o(e,t?f:c),$o(e,t?u:i),n&&n()},E=(e,t)=>{e._isLeaving=!1,$o(e,p),$o(e,h),$o(e,d),t&&t()},O=e=>(t,n)=>{const r=e?k:b,i=()=>T(t,e,n);Mo(r,[t,i]),Do((()=>{$o(t,e?a:o),Po(t,e?f:c),Lo(r)||Ro(t,s,g,i)}))};return l(t,{onBeforeEnter(e){Mo(y,[e]),Po(e,o),Po(e,i)},onBeforeAppear(e){Mo(w,[e]),Po(e,a),Po(e,u)},onEnter:O(!1),onAppear:O(!0),onLeave(e,t){e._isLeaving=!0;const n=()=>E(e,t);Po(e,p),e._enterCancelled?(Po(e,d),Uo()):(Uo(),Po(e,d)),Do((()=>{e._isLeaving&&($o(e,p),Po(e,h),Lo(S)||Ro(e,s,m,n))})),Mo(S,[e,n])},onEnterCancelled(e){T(e,!1,void 0,!0),Mo(x,[e])},onAppearCancelled(e){T(e,!0,void 0,!0),Mo(A,[e])},onLeaveCancelled(e){E(e),Mo(C,[e])}})}(e),t))),Mo=(e,t=[])=>{f(e)?e.forEach((e=>e(...t))):e&&e(...t)},Lo=e=>!!e&&(f(e)?e.some((e=>e.length>1)):e.length>1);function jo(e){return V(e)}function Po(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.add(t))),(e[To]||(e[To]=new Set)).add(t)}function $o(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.remove(t)));const n=e[To];n&&(n.delete(t),n.size||(e[To]=void 0))}function Do(e){requestAnimationFrame((()=>{requestAnimationFrame(e)}))}let Vo=0;function Ro(e,t,n,s){const r=e._endId=++Vo,o=()=>{r===e._endId&&s()};if(null!=n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=function(e,t){const n=window.getComputedStyle(e),s=e=>(n[e]||"").split(", "),r=s(`${ko}Delay`),o=s(`${ko}Duration`),i=Io(r,o),l=s(`${Ao}Delay`),c=s(`${Ao}Duration`),a=Io(l,c);let u=null,f=0,p=0;t===ko?i>0&&(u=ko,f=i,p=o.length):t===Ao?a>0&&(u=Ao,f=a,p=c.length):(f=Math.max(i,a),u=f>0?i>a?ko:Ao:null,p=u?u===ko?o.length:c.length:0);const d=u===ko&&/\b(transform|all)(,|$)/.test(s(`${ko}Property`).toString());return{type:u,timeout:f,propCount:p,hasTransform:d}}(e,t);if(!i)return s();const a=i+"end";let u=0;const f=()=>{e.removeEventListener(a,p),o()},p=t=>{t.target===e&&++u>=c&&f()};setTimeout((()=>{uNo(t)+No(e[n]))))}function No(e){return"auto"===e?0:1e3*Number(e.slice(0,-1).replace(",","."))}function Uo(){return document.body.offsetHeight}const Bo=Symbol("_vod"),Wo=Symbol("_vsh"),Ho={beforeMount(e,{value:t},{transition:n}){e[Bo]="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):Ko(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),Ko(e,!0),s.enter(e)):s.leave(e,(()=>{Ko(e,!1)})):Ko(e,t))},beforeUnmount(e,{value:t}){Ko(e,t)}};function Ko(e,t){e.style.display=t?e[Bo]:"none",e[Wo]=!t}const qo=Symbol(""),zo=/(^|;)\s*display\s*:/;const Go=/\s*!important$/;function Jo(e,t,n){if(f(n))n.forEach((n=>Jo(e,t,n)));else if(null==n&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=function(e,t){const n=Xo[t];if(n)return n;let s=E(t);if("filter"!==s&&s in e)return Xo[t]=s;s=M(s);for(let r=0;r{if(e._vts){if(e._vts<=n.attached)return}else e._vts=Date.now();Kt(function(e,t){if(f(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e&&e(t)))}return t}(e,n.value),t,5,[e])};return n.value=e,n.attached=li(),n}(s,r);ti(e,n,i,l)}else i&&(!function(e,t,n,s){e.removeEventListener(t,n,s)}(e,n,i,l),o[t]=void 0)}}const ri=/(?:Once|Passive|Capture)$/;let oi=0;const ii=Promise.resolve(),li=()=>oi||(ii.then((()=>oi=0)),oi=Date.now());const ci=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123;const ai=e=>{const t=e.props["onUpdate:modelValue"]||!1;return f(t)?e=>P(t,e):t},ui=Symbol("_assign"),fi={deep:!0,created(e,t,n){e[ui]=ai(n),ti(e,"change",(()=>{const t=e._modelValue,n=function(e){return"_value"in e?e._value:e.value}(e),s=e.checked,r=e[ui];if(f(t)){const e=Z(t,n),o=-1!==e;if(s&&!o)r(t.concat(n));else if(!s&&o){const n=[...t];n.splice(e,1),r(n)}}else if(d(t)){const e=new Set(t);s?e.add(n):e.delete(n),r(e)}else r(di(e,s))}))},mounted:pi,beforeUpdate(e,t,n){e[ui]=ai(n),pi(e,t,n)}};function pi(e,{value:t,oldValue:n},s){let r;if(e._modelValue=t,f(t))r=Z(t,s.props.value)>-1;else if(d(t))r=t.has(s.props.value);else{if(t===n)return;r=J(t,di(e,!0))}e.checked!==r&&(e.checked=r)}function di(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const hi=["ctrl","shift","alt","meta"],vi={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&0!==e.button,middle:e=>"button"in e&&1!==e.button,right:e=>"button"in e&&2!==e.button,exact:(e,t)=>hi.some((n=>e[`${n}Key`]&&!t.includes(n)))},gi=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(n,...s)=>{for(let e=0;e{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=n=>{if(!("key"in n))return;const s=F(n.key);return t.some((e=>e===s||mi[e]===s))?e(n):void 0})},yi=l({patchProp:(e,t,n,s,r,l)=>{const c="svg"===r;"class"===t?function(e,t,n){const s=e[To];s&&(t=(t?[t,...s]:[...s]).join(" ")),null==t?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}(e,s,c):"style"===t?function(e,t,n){const s=e.style,r=g(n);let o=!1;if(n&&!r){if(t)if(g(t))for(const e of t.split(";")){const t=e.slice(0,e.indexOf(":")).trim();null==n[t]&&Jo(s,t,"")}else for(const e in t)null==n[e]&&Jo(s,e,"");for(const e in n)"display"===e&&(o=!0),Jo(s,e,n[e])}else if(r){if(t!==n){const e=s[qo];e&&(n+=";"+e),s.cssText=n,o=zo.test(n)}}else t&&e.removeAttribute("style");Bo in e&&(e[Bo]=o?s.display:"",e[Wo]&&(s.display="none"))}(e,n,s):o(t)?i(t)||si(e,t,0,s,l):("."===t[0]?(t=t.slice(1),1):"^"===t[0]?(t=t.slice(1),0):function(e,t,n,s){if(s)return"innerHTML"===t||"textContent"===t||!!(t in e&&ci(t)&&v(n));if("spellcheck"===t||"draggable"===t||"translate"===t||"autocorrect"===t)return!1;if("form"===t)return!1;if("list"===t&&"INPUT"===e.tagName)return!1;if("type"===t&&"TEXTAREA"===e.tagName)return!1;if("width"===t||"height"===t){const t=e.tagName;if("IMG"===t||"VIDEO"===t||"CANVAS"===t||"SOURCE"===t)return!1}if(ci(t)&&g(n))return!1;return t in e}(e,t,s,c))?(ei(e,t,s),e.tagName.includes("-")||"value"!==t&&"checked"!==t&&"selected"!==t||Yo(e,t,s,c,0,"value"!==t)):!e._isVueCE||!/[A-Z]/.test(t)&&g(s)?("true-value"===t?e._trueValue=s:"false-value"===t&&(e._falseValue=s),Yo(e,t,s,c)):ei(e,E(t),s,0,t)}},wo);let bi;function xi(){return bi||(bi=rr(yi))}const Si=(...e)=>{xi().render(...e)},Ci=(...e)=>{const t=xi().createApp(...e),{mount:n}=t;return t.mount=e=>{const s=function(e){if(g(e)){return document.querySelector(e)}return e}(e);if(!s)return;const r=t._component;v(r)||r.render||r.template||(r.template=s.innerHTML),1===s.nodeType&&(s.textContent="");const o=n(s,!1,function(e){if(e instanceof SVGElement)return"svg";if("function"==typeof MathMLElement&&e instanceof MathMLElement)return"mathml"}(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),o},t};export{Si as $,pt as A,dt as B,no as C,en as D,Xr as E,Tr as F,re as G,Ct as H,vt as I,Dt as J,Rs as K,oe as L,ie as M,Is as N,jt as O,is as P,as as Q,cs as R,Fo as S,Cn as T,q as U,ds as V,kt as W,Ot as X,pr as Y,_i as Z,Ho as _,jr as a,mo as a0,Ci as a1,Wr as b,Vr as c,Hr as d,Et as e,Rr as f,xs as g,dr as h,go as i,Yn as j,ps as k,zr as l,bt as m,gi as n,Zn as o,Q as p,N as q,wt as r,K as s,yt as t,mr as u,fi as v,pn as w,qr as x,hs as y,fn as z}; +**/let yo;const bo="undefined"!=typeof window&&window.trustedTypes;if(bo)try{yo=bo.createPolicy("vue",{createHTML:e=>e})}catch(wi){}const xo=yo?e=>yo.createHTML(e):e=>e,So="undefined"!=typeof document?document:null,Co=So&&So.createElement("template"),wo={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r="svg"===t?So.createElementNS("http://www.w3.org/2000/svg",e):"mathml"===t?So.createElementNS("http://www.w3.org/1998/Math/MathML",e):n?So.createElement(e,{is:n}):So.createElement(e);return"select"===e&&s&&null!=s.multiple&&r.setAttribute("multiple",s.multiple),r},createText:e=>So.createTextNode(e),createComment:e=>So.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>So.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),r!==o&&(r=r.nextSibling););else{Co.innerHTML=xo("svg"===s?`${e}`:"mathml"===s?`${e}`:e);const r=Co.content;if("svg"===s||"mathml"===s){const e=r.firstChild;for(;e.firstChild;)r.appendChild(e.firstChild);r.removeChild(e)}t.insertBefore(r,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ko="transition",Ao="animation",To=Symbol("_vtc"),Eo={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Oo=l({},On,Eo),Fo=(e=>(e.displayName="Transition",e.props=Oo,e))(((e,{slots:t})=>mo(Ln,function(e){const t={};for(const l in e)l in Eo||(t[l]=e[l]);if(!1===e.css)return t;const{name:n="v",type:s,duration:r,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:c=`${n}-enter-to`,appearFromClass:a=o,appearActiveClass:u=i,appearToClass:f=c,leaveFromClass:p=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:h=`${n}-leave-to`}=e,v=function(e){if(null==e)return null;if(_(e))return[jo(e.enter),jo(e.leave)];{const t=jo(e);return[t,t]}}(r),g=v&&v[0],m=v&&v[1],{onBeforeEnter:y,onEnter:b,onEnterCancelled:x,onLeave:S,onLeaveCancelled:C,onBeforeAppear:w=y,onAppear:k=b,onAppearCancelled:A=x}=t,T=(e,t,n,s)=>{e._enterCancelled=s,$o(e,t?f:c),$o(e,t?u:i),n&&n()},E=(e,t)=>{e._isLeaving=!1,$o(e,p),$o(e,h),$o(e,d),t&&t()},O=e=>(t,n)=>{const r=e?k:b,i=()=>T(t,e,n);Mo(r,[t,i]),Do((()=>{$o(t,e?a:o),Po(t,e?f:c),Lo(r)||Ro(t,s,g,i)}))};return l(t,{onBeforeEnter(e){Mo(y,[e]),Po(e,o),Po(e,i)},onBeforeAppear(e){Mo(w,[e]),Po(e,a),Po(e,u)},onEnter:O(!1),onAppear:O(!0),onLeave(e,t){e._isLeaving=!0;const n=()=>E(e,t);Po(e,p),e._enterCancelled?(Po(e,d),Uo()):(Uo(),Po(e,d)),Do((()=>{e._isLeaving&&($o(e,p),Po(e,h),Lo(S)||Ro(e,s,m,n))})),Mo(S,[e,n])},onEnterCancelled(e){T(e,!1,void 0,!0),Mo(x,[e])},onAppearCancelled(e){T(e,!0,void 0,!0),Mo(A,[e])},onLeaveCancelled(e){E(e),Mo(C,[e])}})}(e),t))),Mo=(e,t=[])=>{f(e)?e.forEach((e=>e(...t))):e&&e(...t)},Lo=e=>!!e&&(f(e)?e.some((e=>e.length>1)):e.length>1);function jo(e){return V(e)}function Po(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.add(t))),(e[To]||(e[To]=new Set)).add(t)}function $o(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.remove(t)));const n=e[To];n&&(n.delete(t),n.size||(e[To]=void 0))}function Do(e){requestAnimationFrame((()=>{requestAnimationFrame(e)}))}let Vo=0;function Ro(e,t,n,s){const r=e._endId=++Vo,o=()=>{r===e._endId&&s()};if(null!=n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=function(e,t){const n=window.getComputedStyle(e),s=e=>(n[e]||"").split(", "),r=s(`${ko}Delay`),o=s(`${ko}Duration`),i=Io(r,o),l=s(`${Ao}Delay`),c=s(`${Ao}Duration`),a=Io(l,c);let u=null,f=0,p=0;t===ko?i>0&&(u=ko,f=i,p=o.length):t===Ao?a>0&&(u=Ao,f=a,p=c.length):(f=Math.max(i,a),u=f>0?i>a?ko:Ao:null,p=u?u===ko?o.length:c.length:0);const d=u===ko&&/\b(transform|all)(,|$)/.test(s(`${ko}Property`).toString());return{type:u,timeout:f,propCount:p,hasTransform:d}}(e,t);if(!i)return s();const a=i+"end";let u=0;const f=()=>{e.removeEventListener(a,p),o()},p=t=>{t.target===e&&++u>=c&&f()};setTimeout((()=>{uNo(t)+No(e[n]))))}function No(e){return"auto"===e?0:1e3*Number(e.slice(0,-1).replace(",","."))}function Uo(){return document.body.offsetHeight}const Bo=Symbol("_vod"),Wo=Symbol("_vsh"),Ho={beforeMount(e,{value:t},{transition:n}){e[Bo]="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):Ko(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),Ko(e,!0),s.enter(e)):s.leave(e,(()=>{Ko(e,!1)})):Ko(e,t))},beforeUnmount(e,{value:t}){Ko(e,t)}};function Ko(e,t){e.style.display=t?e[Bo]:"none",e[Wo]=!t}const qo=Symbol(""),zo=/(^|;)\s*display\s*:/;const Go=/\s*!important$/;function Jo(e,t,n){if(f(n))n.forEach((n=>Jo(e,t,n)));else if(null==n&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=function(e,t){const n=Xo[t];if(n)return n;let s=E(t);if("filter"!==s&&s in e)return Xo[t]=s;s=M(s);for(let r=0;r{if(e._vts){if(e._vts<=n.attached)return}else e._vts=Date.now();Kt(function(e,t){if(f(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e&&e(t)))}return t}(e,n.value),t,5,[e])};return n.value=e,n.attached=li(),n}(s,r);ti(e,n,i,l)}else i&&(!function(e,t,n,s){e.removeEventListener(t,n,s)}(e,n,i,l),o[t]=void 0)}}const ri=/(?:Once|Passive|Capture)$/;let oi=0;const ii=Promise.resolve(),li=()=>oi||(ii.then((()=>oi=0)),oi=Date.now());const ci=e=>111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123;const ai=e=>{const t=e.props["onUpdate:modelValue"]||!1;return f(t)?e=>P(t,e):t},ui=Symbol("_assign"),fi={deep:!0,created(e,t,n){e[ui]=ai(n),ti(e,"change",(()=>{const t=e._modelValue,n=function(e){return"_value"in e?e._value:e.value}(e),s=e.checked,r=e[ui];if(f(t)){const e=Z(t,n),o=-1!==e;if(s&&!o)r(t.concat(n));else if(!s&&o){const n=[...t];n.splice(e,1),r(n)}}else if(d(t)){const e=new Set(t);s?e.add(n):e.delete(n),r(e)}else r(di(e,s))}))},mounted:pi,beforeUpdate(e,t,n){e[ui]=ai(n),pi(e,t,n)}};function pi(e,{value:t,oldValue:n},s){let r;if(e._modelValue=t,f(t))r=Z(t,s.props.value)>-1;else if(d(t))r=t.has(s.props.value);else{if(t===n)return;r=J(t,di(e,!0))}e.checked!==r&&(e.checked=r)}function di(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const hi=["ctrl","shift","alt","meta"],vi={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&0!==e.button,middle:e=>"button"in e&&1!==e.button,right:e=>"button"in e&&2!==e.button,exact:(e,t)=>hi.some((n=>e[`${n}Key`]&&!t.includes(n)))},gi=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(n,...s)=>{for(let e=0;e{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=n=>{if(!("key"in n))return;const s=F(n.key);return t.some((e=>e===s||mi[e]===s))?e(n):void 0})},yi=l({patchProp:(e,t,n,s,r,l)=>{const c="svg"===r;"class"===t?function(e,t,n){const s=e[To];s&&(t=(t?[t,...s]:[...s]).join(" ")),null==t?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}(e,s,c):"style"===t?function(e,t,n){const s=e.style,r=g(n);let o=!1;if(n&&!r){if(t)if(g(t))for(const e of t.split(";")){const t=e.slice(0,e.indexOf(":")).trim();null==n[t]&&Jo(s,t,"")}else for(const e in t)null==n[e]&&Jo(s,e,"");for(const e in n)"display"===e&&(o=!0),Jo(s,e,n[e])}else if(r){if(t!==n){const e=s[qo];e&&(n+=";"+e),s.cssText=n,o=zo.test(n)}}else t&&e.removeAttribute("style");Bo in e&&(e[Bo]=o?s.display:"",e[Wo]&&(s.display="none"))}(e,n,s):o(t)?i(t)||si(e,t,0,s,l):("."===t[0]?(t=t.slice(1),1):"^"===t[0]?(t=t.slice(1),0):function(e,t,n,s){if(s)return"innerHTML"===t||"textContent"===t||!!(t in e&&ci(t)&&v(n));if("spellcheck"===t||"draggable"===t||"translate"===t||"autocorrect"===t)return!1;if("form"===t)return!1;if("list"===t&&"INPUT"===e.tagName)return!1;if("type"===t&&"TEXTAREA"===e.tagName)return!1;if("width"===t||"height"===t){const t=e.tagName;if("IMG"===t||"VIDEO"===t||"CANVAS"===t||"SOURCE"===t)return!1}if(ci(t)&&g(n))return!1;return t in e}(e,t,s,c))?(ei(e,t,s),e.tagName.includes("-")||"value"!==t&&"checked"!==t&&"selected"!==t||Yo(e,t,s,c,0,"value"!==t)):!e._isVueCE||!/[A-Z]/.test(t)&&g(s)?("true-value"===t?e._trueValue=s:"false-value"===t&&(e._falseValue=s),Yo(e,t,s,c)):ei(e,E(t),s,0,t)}},wo);let bi;function xi(){return bi||(bi=rr(yi))}const Si=(...e)=>{xi().render(...e)},Ci=(...e)=>{const t=xi().createApp(...e),{mount:n}=t;return t.mount=e=>{const s=function(e){if(g(e)){return document.querySelector(e)}return e}(e);if(!s)return;const r=t._component;v(r)||r.render||r.template||(r.template=s.innerHTML),1===s.nodeType&&(s.textContent="");const o=n(s,!1,function(e){if(e instanceof SVGElement)return"svg";if("function"==typeof MathMLElement&&e instanceof MathMLElement)return"mathml"}(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),o},t};export{Si as $,dt as A,no as B,en as C,Xr as D,re as E,Tr as F,Ct as G,vt as H,Dt as I,Rs as J,oe as K,ie as L,Is as M,jt as N,qr as O,is as P,as as Q,cs as R,Fo as S,Cn as T,q as U,ds as V,kt as W,Ot as X,pr as Y,_i as Z,Ho as _,jr as a,mo as a0,Ci as a1,Wr as b,Vr as c,Hr as d,Et as e,Rr as f,xs as g,Yn as h,dr as i,go as j,ps as k,gi as l,bt as m,K as n,Zn as o,Q as p,zr as q,wt as r,N as s,yt as t,mr as u,fi as v,pn as w,hs as x,fn as y,pt as z}; diff --git a/web_version/v2/assets/vueuse-BtwMN4bF.js b/web_version/v2/assets/vueuse-BtwMN4bF.js deleted file mode 100644 index 4af115c..0000000 --- a/web_version/v2/assets/vueuse-BtwMN4bF.js +++ /dev/null @@ -1 +0,0 @@ -import{L as e,M as t,o as n,D as o,h as s,C as l,W as u,i,X as a,Y as r,e as c}from"./vue-C8DvX6GQ.js";function v(n){return!!e()&&(t(n),!0)}const d="undefined"!=typeof window&&"undefined"!=typeof document;"undefined"!=typeof WorkerGlobalScope&&(globalThis,WorkerGlobalScope);const f=e=>null!=e,p=Object.prototype.toString,m=e=>"[object Object]"===p.call(e),h=()=>{};function g(e){return Array.isArray(e)?e:[e]}function w(e,t=!0,s){l()?n(e,s):t?e():o(e)}const y=d?window:void 0;function b(e){var t;const n=a(e);return null!=(t=null==n?void 0:n.$el)?t:n}function O(...e){const t=[],n=()=>{t.forEach((e=>e())),t.length=0},o=i((()=>{const t=g(a(e[0])).filter((e=>null!=e));return t.every((e=>"string"!=typeof e))?t:void 0})),l=(u=([e,o,s,l])=>{if(n(),!(null==e?void 0:e.length)||!(null==o?void 0:o.length)||!(null==s?void 0:s.length))return;const u=m(l)?{...l}:l;t.push(...e.flatMap((e=>o.flatMap((t=>s.map((n=>((e,t,n,o)=>(e.addEventListener(t,n,o),()=>e.removeEventListener(t,n,o)))(e,t,n,u))))))))},r={flush:"post"},s((()=>{var t,n;return[null!=(n=null==(t=o.value)?void 0:t.map((e=>b(e))))?n:[y].filter((e=>null!=e)),g(a(o.value?e[1]:e[0])),g(c(o.value?e[2]:e[1])),a(o.value?e[3]:e[2])]}),u,{...r,immediate:!0}));var u,r;return v(n),()=>{l(),n()}}function x(e){const t=function(){const e=u(!1),t=l();return t&&n((()=>{e.value=!0}),t),e}();return i((()=>(t.value,Boolean(e()))))}function E(e,t,n={}){const{window:o=y,...l}=n;let u;const r=x((()=>o&&"MutationObserver"in o)),c=()=>{u&&(u.disconnect(),u=void 0)},d=i((()=>{const t=g(a(e)).map(b).filter(f);return new Set(t)})),p=s((()=>d.value),(e=>{c(),r.value&&e.size&&(u=new MutationObserver(t),e.forEach((e=>u.observe(e,l))))}),{immediate:!0,flush:"post"}),m=()=>{p(),c()};return v(m),{isSupported:r,stop:m,takeRecords:()=>null==u?void 0:u.takeRecords()}}function X(e,t,n={}){const{window:o=y,...l}=n;let u;const r=x((()=>o&&"ResizeObserver"in o)),c=()=>{u&&(u.disconnect(),u=void 0)},d=i((()=>{const t=a(e);return Array.isArray(t)?t.map((e=>b(e))):[b(t)]})),f=s(d,(e=>{if(c(),r.value&&o){u=new ResizeObserver(t);for(const t of e)t&&u.observe(t,l)}}),{immediate:!0,flush:"post"}),p=()=>{c(),f()};return v(p),{isSupported:r,stop:p}}function Y(e,t={}){const{reset:n=!0,windowResize:o=!0,windowScroll:l=!0,immediate:i=!0,updateTiming:a="sync"}=t,r=u(0),c=u(0),v=u(0),d=u(0),f=u(0),p=u(0),m=u(0),h=u(0);function g(){const t=b(e);if(!t)return void(n&&(r.value=0,c.value=0,v.value=0,d.value=0,f.value=0,p.value=0,m.value=0,h.value=0));const o=t.getBoundingClientRect();r.value=o.height,c.value=o.bottom,v.value=o.left,d.value=o.right,f.value=o.top,p.value=o.width,m.value=o.x,h.value=o.y}function y(){"sync"===a?g():"next-frame"===a&&requestAnimationFrame((()=>g()))}return X(e,y),s((()=>b(e)),(e=>!e&&y())),E(e,y,{attributeFilter:["style","class"]}),l&&O("scroll",y,{capture:!0,passive:!0}),o&&O("resize",y,{passive:!0}),w((()=>{i&&y()})),{height:r,bottom:c,left:v,right:d,top:f,width:p,x:m,y:h,update:y}}function M(e,t={}){const{delayEnter:n=0,delayLeave:o=0,triggerOnRemoval:s=!1,window:l=y}=t,a=u(!1);let c;const d=e=>{const t=e?n:o;c&&(clearTimeout(c),c=void 0),t?c=setTimeout((()=>a.value=e),t):a.value=e};return l?(O(e,"mouseenter",(()=>d(!0)),{passive:!0}),O(e,"mouseleave",(()=>d(!1)),{passive:!0}),s&&function(e,t,n={}){const{window:o=y,document:s=(null==o?void 0:o.document),flush:l="sync"}=n;if(!o||!s)return h;let u;const i=e=>{null==u||u(),u=e},a=r((()=>{const n=b(e);if(n){const{stop:e}=E(s,(e=>{e.map((e=>[...e.removedNodes])).flat().some((e=>e===n||e.contains(n)))&&t(e)}),{window:o,childList:!0,subtree:!0});i(e)}}),{flush:l}),c=()=>{a(),i()};v(c)}(i((()=>b(e))),(()=>d(!1))),a):a}function R(e,t,n={}){const{root:o,rootMargin:l="0px",threshold:r=0,window:c=y,immediate:d=!0}=n,p=x((()=>c&&"IntersectionObserver"in c)),m=i((()=>g(a(e)).map(b).filter(f)));let w=h;const O=u(d),E=p.value?s((()=>[m.value,b(o),O.value]),(([e,n])=>{if(w(),!O.value)return;if(!e.length)return;const o=new IntersectionObserver(t,{root:b(n),rootMargin:l,threshold:r});e.forEach((e=>e&&o.observe(e))),w=()=>{o.disconnect(),w=h}}),{immediate:d,flush:"post"}):h,X=()=>{w(),E(),O.value=!1};return v(X),{isSupported:p,isActive:O,pause(){w(),O.value=!1},resume(){O.value=!0},stop:X}}const S={page:e=>[e.pageX,e.pageY],client:e=>[e.clientX,e.clientY],screen:e=>[e.screenX,e.screenY],movement:e=>e instanceof MouseEvent?[e.movementX,e.movementY]:null};function T(e,t={}){const{windowResize:n=!0,windowScroll:o=!0,handleOutside:l=!0,window:i=y}=t,a=t.type||"page",{x:r,y:c,sourceType:v}=function(e={}){const{type:t="page",touch:n=!0,resetOnTouchEnds:o=!1,initialValue:s={x:0,y:0},window:l=y,target:i=l,scroll:a=!0,eventFilter:r}=e;let c=null,v=0,d=0;const f=u(s.x),p=u(s.y),m=u(null),h="function"==typeof t?t:S[t],g=e=>{const t=h(e);c=e,t&&([f.value,p.value]=t,m.value="mouse"),l&&(v=l.scrollX,d=l.scrollY)},w=e=>{if(e.touches.length>0){const t=h(e.touches[0]);t&&([f.value,p.value]=t,m.value="touch")}},b=()=>{if(!c||!l)return;const e=h(c);c instanceof MouseEvent&&e&&(f.value=e[0]+l.scrollX-v,p.value=e[1]+l.scrollY-d)},x=()=>{f.value=s.x,p.value=s.y},E=r?e=>r((()=>g(e)),{}):e=>g(e),X=r?e=>r((()=>w(e)),{}):e=>w(e),Y=r?()=>r((()=>b()),{}):()=>b();if(i){const e={passive:!0};O(i,["mousemove","dragover"],E,e),n&&"movement"!==t&&(O(i,["touchstart","touchmove"],X,e),o&&O(i,"touchend",x,e)),a&&"page"===t&&O(l,"scroll",Y,e)}return{x:f,y:p,sourceType:m}}(t),d=u(null!=e?e:null==i?void 0:i.document.body),f=u(0),p=u(0),m=u(0),h=u(0),g=u(0),x=u(0),Y=u(!0);function M(){if(!i)return;const e=b(d);if(!(e&&e instanceof Element))return;const{left:t,top:n,width:o,height:s}=e.getBoundingClientRect();m.value=t+("page"===a?i.pageXOffset:0),h.value=n+("page"===a?i.pageYOffset:0),g.value=s,x.value=o;const u=r.value-m.value,v=c.value-h.value;Y.value=0===o||0===s||u<0||v<0||u>o||v>s,l&&(f.value=u,p.value=v)}const R=[];if(w((()=>{M()})),i){const{stop:e}=X(d,M),{stop:t}=E(d,M,{attributeFilter:["style","class"]}),l=s([d,r,c],M);R.push(e,t,l),O(document,"mouseleave",(()=>Y.value=!0),{passive:!0}),o&&R.push(O("scroll",M,{capture:!0,passive:!0})),n&&R.push(O("resize",M,{passive:!0}))}return{x:r,y:c,sourceType:v,elementX:f,elementY:p,elementPositionX:m,elementPositionY:h,elementHeight:g,elementWidth:x,isOutside:Y,stop:function(){R.forEach((e=>e())),R.length=0}}}export{R as a,T as b,M as c,Y as d,O as u}; diff --git a/web_version/v2/assets/vueuse-D8iors41.js b/web_version/v2/assets/vueuse-D8iors41.js new file mode 100644 index 0000000..a76c9e8 --- /dev/null +++ b/web_version/v2/assets/vueuse-D8iors41.js @@ -0,0 +1 @@ +import{K as e,L as t,o as n,C as o,i as s,B as l,W as u,j as i,X as a,Y as r,e as c}from"./vue-3zBRwU9X.js";function v(n){return!!e()&&(t(n),!0)}const d="undefined"!=typeof window&&"undefined"!=typeof document;"undefined"!=typeof WorkerGlobalScope&&(globalThis,WorkerGlobalScope);const f=e=>null!=e,p=Object.prototype.toString,m=e=>"[object Object]"===p.call(e),h=()=>{};function g(e){return Array.isArray(e)?e:[e]}function w(e,t=!0,s){l()?n(e,s):t?e():o(e)}const y=d?window:void 0;function b(e){var t;const n=a(e);return null!=(t=null==n?void 0:n.$el)?t:n}function O(...e){const t=[],n=()=>{t.forEach((e=>e())),t.length=0},o=i((()=>{const t=g(a(e[0])).filter((e=>null!=e));return t.every((e=>"string"!=typeof e))?t:void 0})),l=(u=([e,o,s,l])=>{if(n(),!(null==e?void 0:e.length)||!(null==o?void 0:o.length)||!(null==s?void 0:s.length))return;const u=m(l)?{...l}:l;t.push(...e.flatMap((e=>o.flatMap((t=>s.map((n=>((e,t,n,o)=>(e.addEventListener(t,n,o),()=>e.removeEventListener(t,n,o)))(e,t,n,u))))))))},r={flush:"post"},s((()=>{var t,n;return[null!=(n=null==(t=o.value)?void 0:t.map((e=>b(e))))?n:[y].filter((e=>null!=e)),g(a(o.value?e[1]:e[0])),g(c(o.value?e[2]:e[1])),a(o.value?e[3]:e[2])]}),u,{...r,immediate:!0}));var u,r;return v(n),()=>{l(),n()}}function x(e){const t=function(){const e=u(!1),t=l();return t&&n((()=>{e.value=!0}),t),e}();return i((()=>(t.value,Boolean(e()))))}function E(e,t,n={}){const{window:o=y,...l}=n;let u;const r=x((()=>o&&"MutationObserver"in o)),c=()=>{u&&(u.disconnect(),u=void 0)},d=i((()=>{const t=g(a(e)).map(b).filter(f);return new Set(t)})),p=s((()=>d.value),(e=>{c(),r.value&&e.size&&(u=new MutationObserver(t),e.forEach((e=>u.observe(e,l))))}),{immediate:!0,flush:"post"}),m=()=>{p(),c()};return v(m),{isSupported:r,stop:m,takeRecords:()=>null==u?void 0:u.takeRecords()}}function X(e,t,n={}){const{window:o=y,...l}=n;let u;const r=x((()=>o&&"ResizeObserver"in o)),c=()=>{u&&(u.disconnect(),u=void 0)},d=i((()=>{const t=a(e);return Array.isArray(t)?t.map((e=>b(e))):[b(t)]})),f=s(d,(e=>{if(c(),r.value&&o){u=new ResizeObserver(t);for(const t of e)t&&u.observe(t,l)}}),{immediate:!0,flush:"post"}),p=()=>{c(),f()};return v(p),{isSupported:r,stop:p}}function Y(e,t={}){const{reset:n=!0,windowResize:o=!0,windowScroll:l=!0,immediate:i=!0,updateTiming:a="sync"}=t,r=u(0),c=u(0),v=u(0),d=u(0),f=u(0),p=u(0),m=u(0),h=u(0);function g(){const t=b(e);if(!t)return void(n&&(r.value=0,c.value=0,v.value=0,d.value=0,f.value=0,p.value=0,m.value=0,h.value=0));const o=t.getBoundingClientRect();r.value=o.height,c.value=o.bottom,v.value=o.left,d.value=o.right,f.value=o.top,p.value=o.width,m.value=o.x,h.value=o.y}function y(){"sync"===a?g():"next-frame"===a&&requestAnimationFrame((()=>g()))}return X(e,y),s((()=>b(e)),(e=>!e&&y())),E(e,y,{attributeFilter:["style","class"]}),l&&O("scroll",y,{capture:!0,passive:!0}),o&&O("resize",y,{passive:!0}),w((()=>{i&&y()})),{height:r,bottom:c,left:v,right:d,top:f,width:p,x:m,y:h,update:y}}function R(e,t={}){const{delayEnter:n=0,delayLeave:o=0,triggerOnRemoval:s=!1,window:l=y}=t,a=u(!1);let c;const d=e=>{const t=e?n:o;c&&(clearTimeout(c),c=void 0),t?c=setTimeout((()=>a.value=e),t):a.value=e};return l?(O(e,"mouseenter",(()=>d(!0)),{passive:!0}),O(e,"mouseleave",(()=>d(!1)),{passive:!0}),s&&function(e,t,n={}){const{window:o=y,document:s=(null==o?void 0:o.document),flush:l="sync"}=n;if(!o||!s)return h;let u;const i=e=>{null==u||u(),u=e},a=r((()=>{const n=b(e);if(n){const{stop:e}=E(s,(e=>{e.map((e=>[...e.removedNodes])).flat().some((e=>e===n||e.contains(n)))&&t(e)}),{window:o,childList:!0,subtree:!0});i(e)}}),{flush:l}),c=()=>{a(),i()};v(c)}(i((()=>b(e))),(()=>d(!1))),a):a}function S(e,t,n={}){const{root:o,rootMargin:l="0px",threshold:r=0,window:c=y,immediate:d=!0}=n,p=x((()=>c&&"IntersectionObserver"in c)),m=i((()=>g(a(e)).map(b).filter(f)));let w=h;const O=u(d),E=p.value?s((()=>[m.value,b(o),O.value]),(([e,n])=>{if(w(),!O.value)return;if(!e.length)return;const o=new IntersectionObserver(t,{root:b(n),rootMargin:l,threshold:r});e.forEach((e=>e&&o.observe(e))),w=()=>{o.disconnect(),w=h}}),{immediate:d,flush:"post"}):h,X=()=>{w(),E(),O.value=!1};return v(X),{isSupported:p,isActive:O,pause(){w(),O.value=!1},resume(){O.value=!0},stop:X}}const M={page:e=>[e.pageX,e.pageY],client:e=>[e.clientX,e.clientY],screen:e=>[e.screenX,e.screenY],movement:e=>e instanceof MouseEvent?[e.movementX,e.movementY]:null};function T(e,t={}){const{windowResize:n=!0,windowScroll:o=!0,handleOutside:l=!0,window:i=y}=t,a=t.type||"page",{x:r,y:c,sourceType:v}=function(e={}){const{type:t="page",touch:n=!0,resetOnTouchEnds:o=!1,initialValue:s={x:0,y:0},window:l=y,target:i=l,scroll:a=!0,eventFilter:r}=e;let c=null,v=0,d=0;const f=u(s.x),p=u(s.y),m=u(null),h="function"==typeof t?t:M[t],g=e=>{const t=h(e);c=e,t&&([f.value,p.value]=t,m.value="mouse"),l&&(v=l.scrollX,d=l.scrollY)},w=e=>{if(e.touches.length>0){const t=h(e.touches[0]);t&&([f.value,p.value]=t,m.value="touch")}},b=()=>{if(!c||!l)return;const e=h(c);c instanceof MouseEvent&&e&&(f.value=e[0]+l.scrollX-v,p.value=e[1]+l.scrollY-d)},x=()=>{f.value=s.x,p.value=s.y},E=r?e=>r((()=>g(e)),{}):e=>g(e),X=r?e=>r((()=>w(e)),{}):e=>w(e),Y=r?()=>r((()=>b()),{}):()=>b();if(i){const e={passive:!0};O(i,["mousemove","dragover"],E,e),n&&"movement"!==t&&(O(i,["touchstart","touchmove"],X,e),o&&O(i,"touchend",x,e)),a&&"page"===t&&O(l,"scroll",Y,e)}return{x:f,y:p,sourceType:m}}(t),d=u(null!=e?e:null==i?void 0:i.document.body),f=u(0),p=u(0),m=u(0),h=u(0),g=u(0),x=u(0),Y=u(!0);function R(){if(!i)return;const e=b(d);if(!(e&&e instanceof Element))return;const{left:t,top:n,width:o,height:s}=e.getBoundingClientRect();m.value=t+("page"===a?i.pageXOffset:0),h.value=n+("page"===a?i.pageYOffset:0),g.value=s,x.value=o;const u=r.value-m.value,v=c.value-h.value;Y.value=0===o||0===s||u<0||v<0||u>o||v>s,l&&(f.value=u,p.value=v)}const S=[];if(w((()=>{R()})),i){const{stop:e}=X(d,R),{stop:t}=E(d,R,{attributeFilter:["style","class"]}),l=s([d,r,c],R);S.push(e,t,l),O(document,"mouseleave",(()=>Y.value=!0),{passive:!0}),o&&S.push(O("scroll",R,{capture:!0,passive:!0})),n&&S.push(O("resize",R,{passive:!0}))}return{x:r,y:c,sourceType:v,elementX:f,elementY:p,elementPositionX:m,elementPositionY:h,elementHeight:g,elementWidth:x,isOutside:Y,stop:function(){S.forEach((e=>e())),S.length=0}}}export{S as a,T as b,R as c,Y as d,O as u}; diff --git a/web_version/v2/easyuse.js b/web_version/v2/easyuse.js index 0ce0eb9..89234b7 100644 --- a/web_version/v2/easyuse.js +++ b/web_version/v2/easyuse.js @@ -1,2 +1,2 @@ -!function(){"use strict";try{if("undefined"!=typeof document){var e=document.createElement("style");e.appendChild(document.createTextNode('@charset "UTF-8";.easyuse-prompt-await-select .p-select-label{font-size:12px!important}.easyuse-prompt-await-select .p-select-dropdown{width:1.5rem!important}.easyuse-prompt-await-select .p-select-dropdown svg{width:12px!important;height:12px!important}.easyuse-multiselect{font-size:12px;padding:0 15px;--p-chip-remove-icon-size: .75rem;--p-chip-remove-icon-focus-ring-width: var(--p-focus-ring-width);--p-chip-remove-icon-focus-ring-style: var(--p-focus-ring-style);--p-chip-remove-icon-focus-ring-color: var(--p-focus-ring-color);--p-chip-remove-icon-focus-ring-offset: var(--p-focus-ring-offset);--p-chip-remove-icon-focus-ring-shadow: var(--p-form-field-focus-ring-shadow);--p-chip-icon-size: .75rem;--p-chip-image-width: 2rem;--p-chip-image-height: 2rem;--p-chip-border-radius: 16px;--p-chip-padding-x: .25rem;--p-chip-padding-y: .5rem;--p-chip-gap: .25rem;--p-chip-transition-duration: var(--p-transition-duration);--p-chip-remove-icon-color: var(--input-text);--p-chip-icon-color: var(--input-text);--p-chip-background: var(--content-bg);--p-chip-color: var(--input-text);--p-checkbox-icon-size: .875rem;--p-checkbox-icon-color: var(--p-form-field-color);--p-checkbox-icon-checked-color: var(--p-primary-contrast-color);--p-checkbox-icon-checked-hover-color: var(--p-primary-contrast-color);--p-checkbox-icon-disabled-color: var(--p-form-field-disabled-color);--p-checkbox-icon-lg-size: 1rem;--p-checkbox-icon-sm-size: .75rem;--p-checkbox-border-radius: var(--p-border-radius-sm);--p-checkbox-width: 1rem;--p-checkbox-height: 1rem;--p-checkbox-background: var(--p-form-field-background);--p-checkbox-checked-background: var(--p-primary-color);--p-checkbox-checked-hover-background: var(--p-primary-hover-color);--p-checkbox-disabled-background: var(--p-form-field-disabled-background);--p-checkbox-filled-background: var(--p-form-field-filled-background);--p-checkbox-border-color: var(--p-form-field-border-color);--p-checkbox-hover-border-color: var(--p-form-field-hover-border-color);--p-checkbox-focus-border-color: var(--p-form-field-border-color);--p-checkbox-checked-border-color: var(--p-primary-color);--p-checkbox-checked-hover-border-color: var(--p-primary-hover-color);--p-checkbox-checked-focus-border-color: var(--p-primary-color);--p-checkbox-checked-disabled-border-color: var(--p-form-field-border-color);--p-checkbox-invalid-border-color: var(--p-form-field-invalid-border-color);--p-checkbox-shadow: var(--p-form-field-shadow);--p-checkbox-transition-duration: var(--p-form-field-transition-duration);--p-checkbox-lg-width: 1.5rem;--p-checkbox-lg-height: 1.5rem;--p-checkbox-sm-width: 1rem;--p-checkbox-sm-height: 1rem;--p-checkbox-focus-ring-width: var(--p-focus-ring-width);--p-checkbox-focus-ring-style: var(--p-focus-ring-style);--p-checkbox-focus-ring-color: var(--p-focus-ring-color);--p-checkbox-focus-ring-offset: var(--p-focus-ring-offset);--p-checkbox-focus-ring-shadow: var(--p-focus-ring-shadow);--p-multiselect-empty-message-padding: var(--p-list-option-padding);--p-multiselect-clear-icon-color: var(--p-form-field-icon-color);--p-multiselect-chip-border-radius: var(--p-border-radius-sm);--p-multiselect-option-group-background: var(--p-list-option-group-background);--p-multiselect-option-group-color: var(--p-list-option-group-color);--p-multiselect-option-group-font-weight: var(--p-list-option-group-font-weight);--p-multiselect-option-group-padding: var(--p-list-option-group-padding);--p-multiselect-option-focus-background: var(--p-list-option-focus-background);--p-multiselect-option-selected-background: var(--p-list-option-selected-background);--p-multiselect-option-selected-focus-background: var(--p-list-option-selected-focus-background);--p-multiselect-option-color: var(--p-list-option-color);--p-multiselect-option-focus-color: var(--p-list-option-focus-color);--p-multiselect-option-selected-color: var(--p-list-option-selected-color);--p-multiselect-option-selected-focus-color: var(--p-list-option-selected-focus-color);--p-multiselect-option-padding: .25rem;--p-multiselect-option-border-radius: var(--p-list-option-border-radius);--p-multiselect-option-gap: .5rem;--p-multiselect-list-padding: var(--p-list-padding);--p-multiselect-list-gap: var(--p-list-gap);--p-multiselect-list-header-padding: .25rem;--p-multiselect-overlay-background: var(--p-overlay-select-background);--p-multiselect-overlay-border-color: var(--p-overlay-select-border-color);--p-multiselect-overlay-border-radius: var(--p-overlay-select-border-radius);--p-multiselect-overlay-color: var(--p-overlay-select-color);--p-multiselect-overlay-shadow: var(--p-overlay-select-shadow);--p-multiselect-dropdown-width: 1.25rem;--p-multiselect-dropdown-color: var(--input-text);--p-multiselect-background: var(--comfy-input-bg);--p-multiselect-disabled-background: var(--p-form-field-disabled-background);--p-multiselect-filled-background: var(--p-form-field-filled-background);--p-multiselect-filled-hover-background: var(--p-form-field-filled-hover-background);--p-multiselect-filled-focus-background: var(--p-form-field-filled-focus-background);--p-multiselect-border-color: var(--border-color);--p-multiselect-hover-border-color: var(--border-color);--p-multiselect-focus-border-color: var(--border-color);--p-multiselect-invalid-border-color: var(--p-form-field-invalid-border-color);--p-multiselect-color: var(--p-form-field-color);--p-multiselect-disabled-color: var(--p-form-field-disabled-color);--p-multiselect-placeholder-color:var(--descrip-text);--p-multiselect-invalid-placeholder-color: var(--p-form-field-invalid-placeholder-color);--p-multiselect-shadow: var(--p-form-field-shadow);--p-multiselect-padding-x: 8px;--p-multiselect-padding-y: 2px;--p-multiselect-border-radius: 10px;--p-multiselect-transition-duration: var(--p-form-field-transition-duration);--p-multiselect-lg-font-size: var(--p-form-field-lg-font-size);--p-multiselect-lg-padding-x: var(--p-form-field-lg-padding-x);--p-multiselect-lg-padding-y: var(--p-form-field-lg-padding-y);--p-multiselect-sm-font-size: var(--p-form-field-sm-font-size);--p-multiselect-sm-padding-x: var(--p-form-field-sm-padding-x);--p-multiselect-sm-padding-y: var(--p-form-field-sm-padding-y);--p-multiselect-focus-ring-width: var(--p-form-field-focus-ring-width);--p-multiselect-focus-ring-style: var(--p-form-field-focus-ring-style);--p-multiselect-focus-ring-color: var(--p-form-field-focus-ring-color);--p-multiselect-focus-ring-offset: var(--p-form-field-focus-ring-offset);--p-multiselect-focus-ring-shadow: var(--p-form-field-focus-ring-shadow);--p-icon-size: .7rem;--p-inputtext-padding-y: .15rem;--p-inputtext-padding-x: .25rem}.easyuse-multiselect .p-multiselect-list{flex-wrap:wrap;flex-direction:row}.comfyui-easyuse .easyuse-multiselect{font-size:11px;--p-multiselect-padding-y: 2px;padding:0 10px;--p-multiselect-border-radius: var(--p-form-field-border-radius);--p-multiselect-placeholder-color: #d4d4d8;--p-multiselect-dropdown-color: var(--input-text);--p-multiselect-border-color: var(--p-form-field-border-color);--p-multiselect-hover-border-color: var(--p-form-field-hover-border-color);--p-multiselect-focus-border-color: var(--p-form-field-focus-border-color)}.easyuse-multiangle-widget{font-size:12px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.tab-item{display:flex;align-items:center;gap:2px;padding:6px 8px;border-radius:6px 6px 0 0;background:transparent;border:1px solid transparent;cursor:pointer;transition:all .2s;font-size:11px;color:var(--p-text-muted-color);margin-bottom:-1px}.tab-item:hover{color:var(--p-primary-color)}.tab-item.active{background:#000;color:var(--p-primary-color);border:1px solid var(--p-content-border-color);border-bottom-color:#000;z-index:2;font-weight:600}.tab-number{font-weight:inherit;font-size:11px}.easyuse-multiangle-content{border:1px solid var(--p-content-border-color);background:var(--p-content-background);border-radius:0 6px 6px 0;overflow:hidden}.tab-close{font-size:10px;opacity:.7;transition:opacity .2s}.tab-close:hover{opacity:1}.tab-add-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;background:var(--p-content-background);border:none;cursor:pointer;transition:all .2s;color:var(--p-text-secondary-color)}.tab-add-btn:hover{border-color:var(--p-primary-color);color:var(--p-primary-color);background:var(--p-primary-color-subtle)}.tab-add-btn i{font-size:10px}.easyuse-multiangle-widget{font-size:12px;--p-slider-handle-width: 16px;--p-slider-handle-height: 16px;--p-slider-handle-border-radius: 50%;--p-slider-handle-background: var(--p-content-border-color);--p-slider-handle-hover-background: var(--p-content-border-color);--p-slider-handle-focus-ring-width: var(--p-focus-ring-width);--p-slider-handle-focus-ring-style: var(--p-focus-ring-style);--p-slider-handle-focus-ring-color: var(--p-focus-ring-color);--p-slider-handle-focus-ring-offset: var(--p-focus-ring-offset);--p-slider-handle-focus-ring-shadow: var(--p-focus-ring-shadow);--p-slider-handle-content-border-radius: 50%;--p-slider-handle-content-hover-background: var(--p-content-background);--p-slider-handle-content-width: 8px;--p-slider-handle-content-height: 8px;--p-slider-handle-content-shadow: 0px .5px 0px 0px rgba(0, 0, 0, .08), 0px 1px 1px 0px rgba(0, 0, 0, .14);--p-slider-range-background: var(--p-primary-color);--p-slider-track-background: var(--p-content-border-color);--p-slider-track-border-radius: var(--p-content-border-radius);--p-slider-track-size: 3px;--p-slider-transition-duration: var(--p-transition-duration);--p-slider-handle-content-background: var(--p-surface-0)}.easyuse-multiangle-cube-face{border:4px solid var(--p-content-border-color);background:var(--p-content-background);color:var(--p-)}.easyuse-multiangle-cube-face:hover{border-color:var(--p-primary-color);box-shadow:0 0 10px var(--p-primary-color)}.easyuse-multiangle-cube{position:relative;overflow:hidden;cursor:grab;perspective:800px;height:200px;border-radius:0 4px 8px 8px}.easyuse-multiangle-cube:active{cursor:grabbing}.easyuse-multiangle-cube .add-prompt-checkbox{position:absolute;top:4px;left:4px;display:flex;align-items:center;gap:0px;font-size:8px;color:#ddd;cursor:pointer;z-index:10}.easyuse-multiangle-cube .add-prompt-checkbox input[type=checkbox]{cursor:pointer;width:12px;height:12px}.easyuse-multiangle-cube .add-prompt-checkbox label{cursor:pointer;-webkit-user-select:none;user-select:none}.easyuse-multiangle-cube .add-prompt-checkbox:hover{color:var(--p-primary-color)}.easyuse-multiangle-cube .reset-icon{position:absolute;top:6px;right:6px;color:#ddd;cursor:pointer}.easyuse-multiangle-cube .reset-icon i{font-size:12px!important}.easyuse-multiangle-cube .reset-icon:hover{color:var(--p-primary-color)}.easyuse-mulitangle-slider{font-size:10px;padding-bottom:14px}img[data-v-604a4248]{transition:transform 1s cubic-bezier(.2,0,.4,1)}.lazy-image-container[data-v-4bfc03bf]{position:relative;width:100%;height:100%}.lazy-image-placeholder[data-v-4bfc03bf],.lazy-image-error[data-v-4bfc03bf]{transition:background-color .2s ease}img[data-v-4bfc03bf]{transition:opacity .3s ease}.selector-card-wrapper[data-v-88af28b0]{width:100%}.card-item[data-v-88af28b0]{border:1px solid var(--border-color);border-radius:var(--border-radius);background:var(--comfy-menu-bg);border-radius:8px;overflow:hidden;transition:all .2s ease;box-shadow:0 1px 3px #0000001a}.dark .card-item[data-v-88af28b0]{background-color:var(--surface-900);border-color:var(--surface-700)}.card-item[data-v-88af28b0]:hover{box-shadow:0 4px 12px #00000026;border:1px solid var(--input-text)}.card-item.clickable[data-v-88af28b0]{cursor:pointer}.card-item.selected[data-v-88af28b0]{border:1px solid var(--success-color, #4CAF50)}.card-image-container[data-v-88af28b0]{position:relative}.card-image[data-v-88af28b0]{width:100%;height:80px;object-fit:cover;transition:transform .2s ease;background:var(--bg-color)}.card-item:hover .card-image[data-v-88af28b0]{transform:scale(1.05)}.selection-badge[data-v-88af28b0]{position:absolute;top:4px;right:4px;width:10px;height:10px;background-color:var(--success-color, #4CAF50);border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px #0000004d;z-index:10;animation:scaleIn-88af28b0 .2s ease-out}.selection-badge i[data-v-88af28b0]{font-size:6px;font-weight:700;color:#fff}@keyframes scaleIn-88af28b0{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}.card-actions[data-v-88af28b0]{position:absolute;top:8px;left:8px;display:flex;gap:4px;opacity:0;transition:opacity .2s ease}.card-item:hover .card-actions[data-v-88af28b0]{opacity:1}.card-content[data-v-88af28b0]{padding:2px 4px}.card-title[data-v-88af28b0]{color:var(--input-text);font-size:8px;font-weight:400;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.25;transition:color .2s ease}.dark .card-title[data-v-88af28b0]{color:var(--surface-0)}.card-item.selected .card-title[data-v-88af28b0]{color:var(--primary-600);font-weight:500}.dark .card-item.selected .card-title[data-v-88af28b0]{color:var(--primary-300)}.list-item[data-v-c93b1734]{display:inline-block;position:relative}.list-item__tag[data-v-c93b1734]{display:inline-block;vertical-align:middle;margin-top:8px;margin-right:8px;padding:4px;color:var(--input-text);background-color:var(--bg-color);border-radius:var(--border-radius);border:1px solid var(--border-color);font-size:11px;cursor:pointer;overflow:hidden;position:relative;transition:all .2s ease}.list-item__tag[data-v-c93b1734]:hover{filter:brightness(1.2)}.list-item__tag input[type=checkbox][data-v-c93b1734]{--ring-color: transparent;position:relative;box-shadow:none;background:linear-gradient(135deg,var(--comfy-menu-bg) 0%,var(--comfy-input-bg) 60%);display:inline-block;flex-shrink:0;vertical-align:middle;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border-color);background-origin:border-box;padding:0;width:1rem;height:1rem;border-radius:4px;color:var(--theme-color);-webkit-user-select:none;user-select:none;margin-right:4px}.list-item__tag input[type=checkbox][data-v-c93b1734]:checked{border:1px solid var(--theme-color);background-color:var(--theme-color);background-image:url("data:image/svg+xml,%3csvg viewBox=\'0 0 16 16\' fill=\'white\' xmlns=\'http://www.w3.org/2000/svg\'%3e%3cpath d=\'M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z\'/%3e%3c/svg%3e")}.list-item-content[data-v-c93b1734]{margin:0 4px;vertical-align:middle;display:inline-block}.list-title[data-v-c93b1734]{color:inherit;font-size:10px;font-weight:500;margin:0;line-height:1.4;word-break:break-word;display:block}.list-description[data-v-c93b1734]{color:var(--input-text);font-size:10px;line-height:1.4;margin:2px 0 0;opacity:.8;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}@media (max-width: 768px){.list-item__tag[data-v-c93b1734]{padding:6px;margin-right:6px;margin-top:6px}}@media (max-width: 480px){.list-item__tag[data-v-c93b1734]{padding:4px;margin-right:4px;margin-top:4px}.list-title[data-v-c93b1734]{font-size:11px}.list-description[data-v-c93b1734]{font-size:9px}}.easyuse-styles-selector{position:relative;height:calc(100% - 10px);--p-inputtext-padding-y: 4px;--p-form-field-padding-x: 6px;--p-button-sm-padding-y: 0px;--p-icon-size: 12px;--p-button-icon-only-width: 24px;--p-button-sm-font-size: 12px;--p-togglebutton-content-left: 2px;--p-togglebutton-content-top: 2px}.easyuse-styles-selector .p-inputtext{font-size:11px}.easyuse-styles-selector .p-togglebutton{padding:0 6px}.easyuse-styles-selector-content{list-style:none;padding:0;margin:0;min-height:150px;height:calc(100% - 12px);overflow-y:auto;overflow-x:hidden}.easyuse-styles-selector-content .grid-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));padding:4px 0;gap:8px}.easyuse-styles-selector-content .list-container{list-style:none;padding:6px 0;margin:0;display:flex;flex-wrap:wrap}.easyuse-styles-selector-previewer{position:absolute;top:0;left:-150px;width:130px;padding:8px;z-index:2;border-radius:var(--border-radius);background:var(--comfy-menu-bg);overflow:hidden;box-shadow:0 4px 12px #00000026}.easyuse-styles-selector-previewer__text{color:var(--input-text);word-wrap:break-word}.easyuse-styles-selector-previewer__text .title{line-height:1;font-size:10px}.easyuse-styles-selector-previewer__text h6{line-height:1;font-size:8px;margin:8px 0;white-space:wrap}.easyuse-styles-selector-previewer__text h6 .comfyui-easyuse-success{color:#22c55e;font-weight:600}.easyuse-styles-selector-previewer__text h6 .comfyui-easyuse-error{color:#ef4444;font-weight:600}.easyuse-styles-selector-previewer__text h6 span:last-child{color:var(--input-text);font-weight:400;margin-left:4px}\n@charset "UTF-8";.dom-widget[data-v-f8c9efe3]>*{@apply h-full w-full;}.easyuse-model-info{color:#fff;max-width:90vw;font-family:var(--font-family)}.easyuse-model-content{display:flex;flex-direction:column;overflow:hidden}.easyuse-model-header{margin:0 0 15px}.easyuse-model-header-remark{display:flex;align-items:center;margin-top:5px}.easyuse-model-info h2{text-align:left;margin:0}.easyuse-model-info h5{text-align:left;margin:0 15px 0 0;font-weight:400;color:var(--descrip-text)}.easyuse-model-info p{margin:5px 0}.easyuse-model-info a{color:var(--theme-color-light)}.easyuse-model-info a:hover{text-decoration:underline}.easyuse-model-tags-list{display:flex;flex-wrap:wrap;list-style:none;gap:10px;max-height:200px;overflow:auto;margin:10px 0;padding:0}.easyuse-model-tag{background-color:var(--comfy-input-bg);border:2px solid var(--border-color);color:var(--input-text);display:flex;align-items:center;gap:5px;border-radius:5px;padding:2px 5px;cursor:pointer}.easyuse-model-tag--selected span:before{content:"✅";position:absolute;background-color:var(--theme-color-light);left:0;top:0;right:0;bottom:0;text-align:center}.easyuse-model-tag:hover{border:2px solid var(--theme-color-light)}.easyuse-model-tag p{margin:0}.easyuse-model-tag span{text-align:center;border-radius:5px;background-color:var(--theme-color-light);padding:2px;position:relative;min-width:20px;overflow:hidden;color:#fff}.easyuse-model-metadata .comfy-modal-content{max-width:100%}.easyuse-model-metadata label{margin-right:1ch;color:#ccc}.easyuse-model-metadata span{color:var(--theme-color-light)}.easyuse-preview{max-width:660px;margin-right:15px;position:relative}.easyuse-preview-group{position:relative;overflow:hidden;border-radius:.5rem;width:660px}.easyuse-preview-list{display:flex;flex-wrap:nowrap;width:100%;transition:all .5s ease-in-out}.easyuse-preview-list.no-transition{transition:none}.easyuse-preview-slide{display:flex;flex-basis:calc(50% - 5px);flex-grow:0;flex-shrink:0;position:relative;justify-content:center;align-items:center;padding-right:5px;padding-left:0}.easyuse-preview-slide:nth-child(2n){padding-left:5px;padding-right:0}.easyuse-preview-slide-content{position:relative;min-height:150px;width:100%}.easyuse-preview-slide-content .save{position:absolute;right:6px;z-index:12;bottom:6px;display:flex;align-items:center;height:26px;padding:0 9px;color:var(--input-text);font-size:12px;line-height:26px;background:#00000080;border-radius:13px;cursor:pointer;min-width:80px;text-align:center}.easyuse-preview-slide-content .save:hover{filter:brightness(120%);will-change:auto}.easyuse-preview-slide-content img{border-radius:14px;object-position:center center;max-width:100%;max-height:700px;border-style:none;vertical-align:middle}.easyuse-preview button{position:absolute;z-index:10;top:50%;display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:15px;border:1px solid rgba(66,63,78,.15);background-color:#423f4e80;color:#fffc;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transform:translateY(-50%)}.easyuse-preview button.left{left:10px}.easyuse-preview button.right{right:10px}.easyuse-model-detail{margin-top:16px;overflow:hidden;border:1px solid var(--border-color);border-radius:8px;width:300px}.easyuse-model-detail-head{height:40px;padding:0 10px;font-weight:500;font-size:14px;font-style:normal;line-height:40px}.easyuse-model-detail-body{box-sizing:border-box;font-size:12px}.easyuse-model-detail-item{display:flex;justify-content:flex-start;border-top:1px solid var(--border-color)}.easyuse-model-detail-item-label{flex-shrink:0;width:88px;padding-top:5px;padding-bottom:5px;padding-left:10px;border-right:1px solid var(--border-color);color:var(--input-text);font-weight:400}.easyuse-model-detail-item-value{display:flex;flex-wrap:wrap;padding:5px 10px;color:var(--input-text)}.easyuse-model-detail-textarea{border-top:1px solid var(--border-color);padding:10px;height:100px;overflow-y:auto;font-size:12px}.easyuse-model-detail-textarea textarea{width:100%;height:100%;border:0;background-color:transparent;color:var(--input-text)}.easyuse-model-detail-textarea textarea::placeholder{color:var(--descrip-text)}.easyuse-model-detail-textarea.empty{display:flex;justify-content:center;align-items:center;color:var(--descrip-text)}.easyuse-model-notes{background-color:#00000040;padding:5px;margin-top:5px}.easyuse-model-notes:empty{display:none}.easyuse-account-user{font-size:10px;color:var(--descrip-text);text-align:center}.easyuse-account-user-info{display:flex;justify-content:space-between;align-items:center;padding-bottom:10px;cursor:pointer}.easyuse-account-user-info .user{display:flex;align-items:center}.easyuse-account-user-info .edit{padding:5px 10px;background:var(--comfy-menu-bg);border-radius:4px}.easyuse-account-user-info:hover{filter:brightness(110%)}.easyuse-account-user-info h5{margin:0;font-size:10px;text-align:left}.easyuse-account-user-info h6{margin:0;font-size:8px;text-align:left;font-weight:300}.easyuse-account-user-info .remark{margin-top:4px}.easyuse-account-user-info .avatar{width:36px;height:36px;background:var(--comfy-input-bg);border-radius:50%;margin-right:5px;display:flex;justify-content:center;align-items:center;font-size:16px;overflow:hidden}.easyuse-account-user-info .avatar img{width:100%;height:100%}.easyuse-account-dialog{width:600px}.easyuse-account-dialog-main a,.easyuse-account-dialog-main a:visited{font-weight:400;color:var(--theme-color-light)}.easyuse-account-dialog-item{display:flex;justify-content:flex-start;align-items:center;padding:10px 0;border-bottom:1px solid var(--border-color)}.easyuse-account-dialog-item input{padding:5px;margin-right:5px}.easyuse-account-dialog-item input.key{flex:1}.easyuse-account-dialog-item button{cursor:pointer;margin-left:5px!important;padding:5px!important;font-size:16px!important}.easyuse-account-dialog-item button:hover{filter:brightness(120%)}.easyuse-account-dialog-item button.choose{background:var(--theme-color)}.easyuse-account-dialog-item button.delete{background:var(--error-color)}.easy-dropdown,.easy-nested-dropdown{position:relative;box-sizing:border-box;background-color:#171717;box-shadow:0 4px 4px #ffffff40;padding:0;margin:0;list-style:none;z-index:1000;overflow:visible;max-height:fit-content;max-width:fit-content}.easy-dropdown{position:absolute;border-radius:0}.easy-dropdown li.item,.easy-nested-dropdown li.item{font-weight:400;min-width:max-content}.easy-dropdown li.folder,.easy-nested-dropdown li.folder{cursor:default;position:relative;border-right:3px solid cyan}.easy-dropdown li.folder:after,.easy-nested-dropdown li.folder:after{content:">";position:absolute;right:2px;font-weight:400}.easy-dropdown li,.easy-nested-dropdown li{padding:4px 10px;cursor:pointer;font-family:system-ui;font-size:.7rem;position:relative}.easy-nested-dropdown{position:absolute;top:0;left:100%;margin:0;border:none;display:none}.easy-dropdown li.selected>.easy-nested-dropdown,.easy-nested-dropdown li.selected>.easy-nested-dropdown{display:block;border:none}.easy-dropdown li.selected,.easy-nested-dropdown li.selected{background-color:#e5e5e5;border:none}#crystools-root-easyuse{flex-direction:row;justify-content:center;flex-shrink:1;width:min-content;min-width:max-content;height:100%;margin:0 auto}#crystools-root-easyuse .crystools-monitor-container{width:100%;cursor:crosshair;display:flex;flex-wrap:wrap;flex-direction:row;justify-content:flex-end;gap:5px;height:100%}#crystools-root-easyuse .crystools-monitor-container .crystools-monitor{background-color:var(--comfy-input-bg);position:relative;align-items:center;flex-direction:row;width:40px;height:100%}#crystools-root-easyuse .crystools-monitor-container .crystools-monitor .crystools-text{font-size:10px;text-align:right;margin-left:3px;position:absolute;font-weight:100;bottom:2px;z-index:10}#crystools-root-easyuse .crystools-monitor-container .crystools-content{position:relative;height:100%}#crystools-root-easyuse .crystools-monitor-container .crystools-slider{position:absolute;height:100%;width:0;box-shadow:inset 2px 2px 10px #0003}#crystools-root-easyuse .crystools-monitor-container .crystools-label{position:relative;width:100%;color:var(--input-text);font-weight:500;font-size:11px;left:2px;top:4px;text-align:right}:root{--theme-color:var(--p-primary-color, #60a5fa);--theme-color-light: var(--p-primary-hover-color, #93c5fd);--success-color: #52c41a;--error-color: #ff4d4f;--warning-color: #faad14;--font-family: Inter, -apple-system, BlinkMacSystemFont, Helvetica Neue, sans-serif;--p-inputtext-background: var(--p-form-field-background);--p-inputtext-disabled-background: var(--p-form-field-disabled-background);--p-inputtext-filled-background: var(--p-form-field-filled-background);--p-inputtext-filled-focus-background: var(--p-form-field-filled-focus-background);--p-inputtext-border-color: var(--p-form-field-border-color);--p-inputtext-hover-border-color: var(--p-form-field-hover-border-color);--p-inputtext-focus-border-color: var(--p-form-field-focus-border-color);--p-inputtext-invalid-border-color: var(--p-form-field-invalid-border-color);--p-inputtext-color: var(--p-form-field-color);--p-inputtext-disabled-color: var(--p-form-field-disabled-color);--p-inputtext-placeholder-color: var(--p-form-field-placeholder-color);--p-inputtext-shadow: var(--p-form-field-shadow);--p-inputtext-padding-x: var(--p-form-field-padding-x);--p-inputtext-padding-y: var(--p-form-field-padding-y);--p-inputtext-border-radius: var(--p-form-field-border-radius);--p-inputtext-focus-ring-width: var(--p-form-field-focus-ring-width);--p-inputtext-focus-ring-style: var(--p-form-field-focus-ring-style);--p-inputtext-focus-ring-color: var(--p-form-field-focus-ring-color);--p-inputtext-focus-ring-offset: var(--p-form-field-focus-ring-offset);--p-inputtext-focus-ring-shadow: var(--p-form-field-focus-ring-shadow);--p-inputtext-transition-duration: var(--p-form-field-transition-duration);--p-inputtext-sm-font-size: .875rem;--p-inputtext-sm-padding-x: .625rem;--p-inputtext-sm-padding-y: .375rem;--p-inputtext-lg-font-size: 1.125rem;--p-inputtext-lg-padding-x: .875rem;--p-inputtext-lg-padding-y: .625rem;--p-tooltip-max-width: 12.5rem;--p-tooltip-gutter: .25rem;--p-tooltip-shadow: var(--p-overlay-popover-shadow);--p-tooltip-padding: .5rem .75rem;--p-tooltip-border-radius: var(--p-overlay-popover-border-radius);--p-tooltip-background: var(--p-surface-700);--p-tooltip-color: var(--p-surface-0)}.comfyui-easyuse-theme,.comfyui-easyuse-primary{color:var(--theme-color-light)}.comfyui-easyuse-theme.point:hover,.comfyui-easyuse-primary.point:hover{opacity:.8}.comfyui-easyuse-success{color:var(--success-color)}.comfyui-easyuse-success.point:hover{opacity:.8}.comfyui-easyuse-error{color:var(--error-color)}.comfyui-easyuse-error.point:hover{opacity:.8}.comfyui-easyuse-warning,.comfyui-easyuse--warn{color:var(--warning-color)}.comfyui-easyuse-warning.point:hover,.comfyui-easyuse--warn.point:hover{opacity:.8}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.grid{display:grid}.gap-0\\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-10{gap:2.5rem}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-2\\.5{gap:.625rem}.gap-20{gap:5rem}.gap-3{gap:.75rem}.gap-3\\.5{gap:.875rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-7{gap:1.75rem}.gap-8{gap:2rem}.gap-\\[0\\.28rem\\]{gap:.28rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.gap-y-6{row-gap:1.5rem}@media (min-width: 576px){.sm\\:col-span-4{grid-column:span 4/span 4}.sm\\:col-span-6{grid-column:span 6/span 6}.sm\\:ml-8{margin-left:2rem}.sm\\:mt-0{margin-top:0}.sm\\:flex{display:flex}.sm\\:h-60{height:15rem}.sm\\:\\!w-64{width:16rem!important}.sm\\:w-40{width:10rem}.sm\\:w-44{width:11rem}.sm\\:w-56{width:14rem}.sm\\:w-60{width:15rem}.sm\\:w-64{width:16rem}.sm\\:w-80{width:20rem}.sm\\:w-96{width:24rem}.sm\\:w-\\[30rem\\]{width:30rem}.sm\\:w-auto{width:auto}.sm\\:min-w-\\[30rem\\]{min-width:30rem}.sm\\:flex-row{flex-direction:row}.sm\\:flex-col{flex-direction:column}.sm\\:flex-nowrap{flex-wrap:nowrap}.sm\\:items-start{align-items:flex-start}.sm\\:items-end{align-items:flex-end}.sm\\:items-center{align-items:center}.sm\\:justify-center{justify-content:center}.sm\\:justify-between{justify-content:space-between}.sm\\:gap-2{gap:.5rem}.sm\\:p-20{padding:5rem}.sm\\:px-10{padding-left:2.5rem;padding-right:2.5rem}.sm\\:py-10{padding-bottom:2.5rem;padding-top:2.5rem}.sm\\:py-5{padding-bottom:1.25rem;padding-top:1.25rem}.sm\\:pt-32{padding-top:8rem}.sm\\:text-left{text-align:left}.sm\\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 768px){.md\\:-bottom-12{bottom:-3rem}.md\\:-bottom-28{bottom:-7rem}.md\\:-bottom-8{bottom:-2rem}.md\\:-bottom-\\[26rem\\]{bottom:-26rem}.md\\:-left-12{left:-3rem}.md\\:-left-28{left:-7rem}.md\\:-left-32{left:-8rem}.md\\:-left-4{left:-1rem}.md\\:-left-48{left:-12rem}.md\\:-left-\\[22rem\\]{left:-22rem}.md\\:bottom-0{bottom:0}.md\\:left-10{left:2.5rem}.md\\:left-\\[32rem\\]{left:32rem}.md\\:left-\\[42rem\\]{left:42rem}.md\\:top-1\\/2{top:50%}.md\\:top-32{top:8rem}.md\\:top-8{top:2rem}.md\\:col-span-2{grid-column:span 2/span 2}.md\\:col-span-4{grid-column:span 4/span 4}.md\\:col-span-6{grid-column:span 6/span 6}.md\\:ml-auto{margin-left:auto}.md\\:block{display:block}.md\\:flex{display:flex}.md\\:hidden{display:none}.md\\:h-\\[20rem\\]{height:20rem}.md\\:h-\\[32rem\\]{height:32rem}.md\\:\\!w-80{width:20rem!important}.md\\:w-2\\/12{width:16.666667%}.md\\:w-40{width:10rem}.md\\:w-5\\/12{width:41.666667%}.md\\:w-56{width:14rem}.md\\:w-6\\/12{width:50%}.md\\:w-60{width:15rem}.md\\:w-8\\/12{width:66.666667%}.md\\:w-80{width:20rem}.md\\:w-\\[100rem\\]{width:100rem}.md\\:w-\\[26rem\\]{width:26rem}.md\\:w-\\[30rem\\]{width:30rem}.md\\:w-\\[50rem\\]{width:50rem}.md\\:w-\\[52rem\\]{width:52rem}.md\\:w-\\[60rem\\]{width:60rem}.md\\:w-\\[95rem\\]{width:95rem}.md\\:w-screen{width:100vw}.md\\:flex-initial{flex:0 1 auto}.md\\:-translate-y-1\\/2{--tw-translate-y: -50% }.md\\:-translate-y-1\\/2,.md\\:translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.md\\:translate-x-0{--tw-translate-x: 0px }.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:flex-row{flex-direction:row}.md\\:flex-col{flex-direction:column}.md\\:items-end{align-items:flex-end}.md\\:items-center{align-items:center}.md\\:justify-start{justify-content:flex-start}.md\\:justify-center{justify-content:center}.md\\:gap-20{gap:5rem}.md\\:gap-4{gap:1rem}.md\\:p-5{padding:1.25rem}.md\\:p-8{padding:2rem}}@media (min-width: 992px){.lg\\:left-20{left:5rem}.lg\\:left-\\[36rem\\]{left:36rem}.lg\\:left-\\[50rem\\]{left:50rem}.lg\\:col-span-1{grid-column:span 1/span 1}.lg\\:col-span-2{grid-column:span 2/span 2}.lg\\:col-span-4{grid-column:span 4/span 4}.lg\\:col-span-6{grid-column:span 6/span 6}.lg\\:mb-0{margin-bottom:0}.lg\\:mt-0{margin-top:0}.lg\\:mt-20{margin-top:5rem}.lg\\:flex{display:flex}.lg\\:hidden{display:none}.lg\\:h-10{height:2.5rem}.lg\\:h-32{height:8rem}.lg\\:h-\\[28rem\\]{height:28rem}.lg\\:\\!w-\\[30rem\\]{width:30rem!important}.lg\\:w-3\\/12{width:25%}.lg\\:w-32{width:8rem}.lg\\:w-\\[28rem\\]{width:28rem}.lg\\:w-\\[64rem\\]{width:64rem}.lg\\:w-fit{width:-moz-fit-content;width:fit-content}.lg\\:max-w-6xl{max-width:72rem}.lg\\:flex-row{flex-direction:row}.lg\\:gap-0{gap:0}.lg\\:rounded-2xl{border-radius:1rem}.lg\\:rounded-3xl{border-radius:1.5rem}.lg\\:rounded-xl{border-radius:.75rem}.lg\\:p-7{padding:1.75rem}.lg\\:px-2{padding-left:.5rem;padding-right:.5rem}.lg\\:px-20{padding-left:5rem;padding-right:5rem}.lg\\:px-56{padding-left:14rem;padding-right:14rem}.lg\\:px-8{padding-left:2rem;padding-right:2rem}.lg\\:px-9{padding-left:2.25rem;padding-right:2.25rem}.lg\\:py-20{padding-bottom:5rem;padding-top:5rem}.lg\\:py-7{padding-bottom:1.75rem;padding-top:1.75rem}.lg\\:pt-0{padding-top:0}.lg\\:text-2xl{font-size:1.5rem;line-height:2rem}.lg\\:text-5xl{font-size:3rem;line-height:1}.lg\\:text-base{font-size:1rem;line-height:1.5rem}.lg\\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width: 1200px){.xl\\:-left-12{left:-3rem}.xl\\:-left-28{left:-7rem}.xl\\:bottom-0{bottom:0}.xl\\:left-36{left:9rem}.xl\\:left-\\[42rem\\]{left:42rem}.xl\\:left-\\[60rem\\]{left:60rem}.xl\\:col-span-3{grid-column:span 3/span 3}.xl\\:col-span-4{grid-column:span 4/span 4}.xl\\:col-span-6{grid-column:span 6/span 6}.xl\\:block{display:block}.xl\\:flex{display:flex}.xl\\:hidden{display:none}.xl\\:h-\\[36\\.25rem\\]{height:36.25rem}.xl\\:\\!w-40{width:10rem!important}.xl\\:w-3\\/12{width:25%}.xl\\:w-6\\/12{width:50%}.xl\\:w-96{width:24rem}.xl\\:w-\\[29rem\\]{width:29rem}.xl\\:max-w-36{max-width:9rem}.xl\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\\:flex-row{flex-direction:row}.xl\\:items-start{align-items:flex-start}.xl\\:items-center{align-items:center}.xl\\:gap-1{gap:.25rem}.xl\\:gap-6{gap:1.5rem}.xl\\:text-left{text-align:left}}.comfyui-easyuse-toast{position:fixed;z-index:99999;top:0;left:0;height:0;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:start}.comfyui-easyuse-toast-container{position:relative;height:fit-content;padding:4px;margin-top:-100px;opacity:0;z-index:3;-webkit-transition:all .3s ease-in-out;-khtml-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-ms-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.comfyui-easyuse-toast-container:last-child{z-index:1}.comfyui-easyuse-toast-container.show{opacity:1;margin-top:0!important;transform:translateY(0)}.comfyui-easyuse-toast-container:not(.show){z-index:1}.comfyui-easyuse-toast-container>div{position:relative;background:var(--comfy-menu-bg);color:var(--input-text);height:fit-content;box-shadow:0 0 10px #000000e0;padding:9px 12px;border-radius:var(--border-radius);font-size:14px;pointer-events:all;margin-top:40px;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;-o-justify-content:center;justify-content:center;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-toast-container>div>span{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;-o-justify-content:center;justify-content:center;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-toast-container>div>span i{font-size:16px;margin-right:8px}.comfyui-easyuse-toast-container>div>span i.loading{animation:loading-rotate 1s linear infinite}.comfyui-easyuse-toast-container a{cursor:pointer;text-decoration:underline;color:var(--theme-color-light);margin-left:4px;display:inline-block;line-height:1}.comfyui-easyuse-toast-container a:hover{color:var(--theme-color-light);text-decoration:none}@keyframes loading-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.comfyui-easyuse-chooser-dialog{max-width:600px}.comfyui-easyuse-chooser-dialog-title{font-size:18px;font-weight:700;text-align:center;color:var(--input-text);margin:0}.comfyui-easyuse-chooser-dialog-images{margin-top:10px;display:flex;flex-wrap:wrap;width:100%;box-sizing:border-box}.comfyui-easyuse-chooser-dialog-images img{width:50%;height:auto;cursor:pointer;box-sizing:border-box;filter:brightness(80%)}.comfyui-easyuse-chooser-dialog-images img:hover{filter:brightness(100%)}.comfyui-easyuse-chooser-dialog-images img.selected{border:4px solid var(--success-color)}.comfyui-easyuse-chooser-dialog-hidden{display:none;height:0}.comfyui-easyuse-contextmenu{--height: 26px;--padding: 8px;font-family:var(--font-family);position:fixed;top:0;left:0;width:100%;max-width:200px;min-width:100px;min-height:100px;padding:var(--padding) 0;box-shadow:0 0 10px #00000040;background-color:var(--tr-odd-bg-color);border-radius:var(--border-radius);z-index:10;will-change:transform}.comfyui-easyuse-contextmenu-item-divider{height:1px;width:100%;background-color:var(--border-color);margin:var(--padding) 0}.comfyui-easyuse-contextmenu-item-content{height:var(--height);padding:0 12px;cursor:pointer;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-contextmenu-item-content span{font-size:11px;color:var(--input-text);display:-webkit-box;-webkit-line-clamp:1;overflow:hidden;word-break:break-all;text-overflow:ellipsis;-webkit-box-orient:vertical;-webkit-box-flex:1;-ms-flex:1;-webkit-flex:1;flex:1}.comfyui-easyuse-contextmenu-item-content i{color:var(--input-text);margin-left:4px;display:block;width:0;height:0;border-width:4px 4px 0;border-style:solid;border-color:var(--descrip-text) transparent transparent;-webkit-transform:scaleY(.8) rotate(-90deg);-khtml-transform:scaleY(.8) rotate(-90deg);-moz-transform:scaleY(.8) rotate(-90deg);-ms-transform:scaleY(.8) rotate(-90deg);-o-transform:scaleY(.8) rotate(-90deg);transform:scaleY(.8) rotate(-90deg)}.comfyui-easyuse-contextmenu-item-content:hover{background:var(--theme-color)}.comfyui-easyuse-contextmenu-item.disabled .comfyui-easyuse-contextmenu-item-content span{color:var(--border-color);cursor:default}.comfyui-easyuse-contextmenu-item.disabled .comfyui-easyuse-contextmenu-item-content:hover{background:transparent}.comfyui-easyuse-contextmenu-submenu{font-family:var(--font-family);position:absolute;top:0;left:200px;max-width:200px;width:200px;min-width:100px;min-height:--height;padding:var(--padding) 0;box-shadow:0 0 10px #00000040;background-color:var(--tr-odd-bg-color);border-radius:var(--border-radius);z-index:10;will-change:transform}.comfyui-easyuse-contextmenu-model{position:relative}#easyuse-model-thumbnail{display:none;position:fixed;z-index:9999;width:200px;height:auto;opacity:0;-webkit-transition:all .5s cubic-bezier(.55,0,.1,1);-khtml-transition:all .5s cubic-bezier(.55,0,.1,1);-moz-transition:all .5s cubic-bezier(.55,0,.1,1);-ms-transition:all .5s cubic-bezier(.55,0,.1,1);-o-transition:all .5s cubic-bezier(.55,0,.1,1);transition:all .5s cubic-bezier(.55,0,.1,1)}.comfyui-easyuse-slider{width:100%;height:100%;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-slider-item{height:inherit;min-width:25px;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;-o-justify-content:center;justify-content:center;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;-webkit-flex-direction:column;-khtml-flex-direction:column;-moz-flex-direction:column;-ms-flex-direction:column;-o-flex-direction:column;flex-direction:column}.comfyui-easyuse-slider-item-input{height:15px;font-size:10px;color:var(--input-text)}.comfyui-easyuse-slider-item-label{height:15px;border:none;color:var(--descrip-text);font-size:8px}.comfyui-easyuse-slider-item-scroll{width:5px;height:calc(100% - 30px);background:var(--comfy-input-bg);border-radius:10px;position:relative}.comfyui-easyuse-slider-item-bar{width:10px;height:10px;background:linear-gradient(to bottom,var(--input-text),var(--descrip-text));border-radius:100%;box-shadow:0 2px 10px var(--bg-color);position:absolute;top:0;left:-2.5px;cursor:pointer;z-index:1}.comfyui-easyuse-slider-item-area{width:100%;border-radius:20px;position:absolute;bottom:0;background:var(--input-text);z-index:0}.comfyui-easyuse-slider-item.positive .comfyui-easyuse-slider-item-label{color:var(--success-color)}.comfyui-easyuse-slider-item.positive .comfyui-easyuse-slider-item-area{background:var(--success-color)}.comfyui-easyuse-slider-item.negative .comfyui-easyuse-slider-item-label{color:var(--error-color)}.comfyui-easyuse-slider-item.negative .comfyui-easyuse-slider-item-area{background:var(--error-color)}.comfyui-easyuse-map{height:100%;background:var(--comfy-menu-bg)}.comfyui-easyuse-map .p-splitter-gutter-handle{height:1px!important}.comfyui-easyuse-map-nodes{height:100%;position:relative}.comfyui-easyuse-map-nodes__header{position:absolute;z-index:2;top:0;left:0;width:100%;padding:.25rem 0 .25rem .5rem;height:2.8rem;background:var(--comfy-menu-bg);border-bottom:1px solid var(--border-color);display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;-webkit-backdrop-filter:saturate(180%) blur(40px);-khtml-backdrop-filter:saturate(180%) blur(40px);-moz-backdrop-filter:saturate(180%) blur(40px);-ms-backdrop-filter:saturate(180%) blur(40px);-o-backdrop-filter:saturate(180%) blur(40px);backdrop-filter:saturate(180%) blur(40px)}.comfyui-easyuse-map-nodes__header .title{font-size:13px;color:var(--input-text);font-weight:400;line-height:1.5;-webkit-user-select:none;user-select:none}.comfyui-easyuse-map-nodes__header .toolbar{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-map-nodes__header .toolbar .icon{font-size:.85rem;margin-left:.25rem;cursor:pointer}.comfyui-easyuse-map-nodes__content{position:relative;padding:2.8rem 0 0;height:100%;overflow:auto}.comfyui-easyuse-map-nodes__content-searchbox{padding:1rem}.comfyui-easyuse-map-nodes__content dl .label{padding-left:1rem}.comfyui-easyuse-map-nodes__content ul,.comfyui-easyuse-map-nodes__content ol,.comfyui-easyuse-map-nodes__content dl{list-style-type:none;padding:0;margin:0}.comfyui-easyuse-map-nodes__content ul .toolbar span,.comfyui-easyuse-map-nodes__content ol .toolbar span,.comfyui-easyuse-map-nodes__content dl .toolbar span{font-size:13px}.comfyui-easyuse-map-nodes__content ul .toolbar span.pi-eye,.comfyui-easyuse-map-nodes__content ol .toolbar span.pi-eye,.comfyui-easyuse-map-nodes__content dl .toolbar span.pi-eye{color:var(--input-text)}.comfyui-easyuse-map-nodes__content ul .toolbar span.pi-eye-slash,.comfyui-easyuse-map-nodes__content ol .toolbar span.pi-eye-slash,.comfyui-easyuse-map-nodes__content dl .toolbar span.pi-eye-slash{color:var(--descrip-text)}.comfyui-easyuse-map-nodes__content ul .toolbar span.pi-eye-slash.never,.comfyui-easyuse-map-nodes__content ol .toolbar span.pi-eye-slash.never,.comfyui-easyuse-map-nodes__content dl .toolbar span.pi-eye-slash.never{opacity:.5}.comfyui-easyuse-map-nodes__content ol{padding:0;padding-block-start:2px;padding-inline-start:1rem}.comfyui-easyuse-map-nodes__content .no_result{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;-o-justify-content:center;justify-content:center;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;text-align:center}.comfyui-easyuse-map-nodes .p-contextmenu{display:block!important;position:fixed!important;z-index:1000!important}.comfyui-easyuse-map-nodes-group{position:relative;overflow:hidden;width:100%;height:2rem;cursor:default;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;pointer-events:auto}.comfyui-easyuse-map-nodes-group .left,.comfyui-easyuse-map-nodes-group .right{height:100%;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-map-nodes-group .left{padding-left:.5rem;margin-right:.25rem;-webkit-box-flex:1;-ms-flex:1;-webkit-flex:1;flex:1}.comfyui-easyuse-map-nodes-group .icon{font-size:.85rem;margin-right:.25rem}.comfyui-easyuse-map-nodes-group .label{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;height:100%;width:100%;min-width:80px}.comfyui-easyuse-map-nodes-group .label span{font-size:14px;color:var(--input-text);font-weight:400;line-height:1.5;display:-webkit-box;-webkit-line-clamp:1;overflow:hidden;word-break:break-all;text-overflow:ellipsis;-webkit-box-orient:vertical;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.comfyui-easyuse-map-nodes-group:hover{background:var(--content-hover-bg)!important}.comfyui-easyuse-map-nodes-group.active{background:var(--theme-color)!important}.comfyui-easyuse-map-nodes-group.active .label{color:#fff;cursor:default}.comfyui-easyuse-map-nodes-group.never .label{color:var(--descrip-text);opacity:.4}.comfyui-easyuse-map-nodes-group.bypass .label{color:var(--descrip-text)}.comfyui-easyuse-map-nodes-node{height:2rem;cursor:default;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;position:relative;overflow:hidden;pointer-events:auto}.comfyui-easyuse-map-nodes-node .node_id{background:#0b2000;padding:.25rem;margin:0 0 0 .25rem;border-radius:.25rem;text-align:center;color:#fff;font-size:12px}.comfyui-easyuse-map-nodes-node .left{height:100%;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-map-nodes-node .label{text-indent:.5rem;font-size:14px;color:var(--input-text);font-weight:400;line-height:1.5;-webkit-box-flex:1;-ms-flex:1;-webkit-flex:1;flex:1;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;margin-right:.25rem;height:2rem;line-height:2rem;width:100%;display:-webkit-box;-webkit-line-clamp:1;overflow:hidden;word-break:break-all;text-overflow:ellipsis;-webkit-box-orient:vertical}.comfyui-easyuse-map-nodes-node .label.error{color:var(--error-color)}.comfyui-easyuse-map-nodes-node:hover{background:var(--content-hover-bg)!important}.comfyui-easyuse-map-nodes-node.never .label{color:var(--descrip-text);opacity:.5}.comfyui-easyuse-map-nodes-node.bypass .label{color:#f0f;opacity:.5}.comfyui-easyuse-toolbar{border-radius:0 12px 12px 0;min-width:50px;height:24px;position:fixed;bottom:85px;left:0;display:flex;align-items:center;z-index:1000;background-color:var(--comfy-menu-bg);border:1px solid var(--bg-color);-webkit-backdrop-filter:saturate(180%) blur(40px);-khtml-backdrop-filter:saturate(180%) blur(40px);-moz-backdrop-filter:saturate(180%) blur(40px);-ms-backdrop-filter:saturate(180%) blur(40px);-o-backdrop-filter:saturate(180%) blur(40px);backdrop-filter:saturate(180%) blur(40px)}.comfyui-easyuse-toolbar-icon{height:100%;padding:0 4px;display:flex;justify-content:center;align-items:center;font-size:12px;color:var(--input-text);transition:all .3s ease-in-out;cursor:pointer}.comfyui-easyuse-toolbar-icon svg{width:14px;height:14px}.comfyui-easyuse-toolbar-icon:hover.group{color:var(--warning-color)}.comfyui-easyuse-toolbar-icon:hover.rocket{color:var(--theme-color)}.comfyui-easyuse-toolbar-nodes-map{position:absolute;top:50px;left:10px;width:200px;border-radius:12px;min-height:100px;max-height:600px;color:var(--descrip-text);background-color:var(--comfy-menu-bg);border:1px solid var(--bg-color);-webkit-backdrop-filter:saturate(180%) blur(40px);-khtml-backdrop-filter:saturate(180%) blur(40px);-moz-backdrop-filter:saturate(180%) blur(40px);-ms-backdrop-filter:saturate(180%) blur(40px);-o-backdrop-filter:saturate(180%) blur(40px);backdrop-filter:saturate(180%) blur(40px);z-index:399;padding-top:0;overflow:hidden}.comfyui-easyuse-toolbar-nodes-map .no-result-placeholder-content{-webkit-transform:scale(.8);-khtml-transform:scale(.8);-moz-transform:scale(.8);-ms-transform:scale(.8);-o-transform:scale(.8);transform:scale(.8)}.comfyui-easyuse-toolbar-nodes-map .comfyui-easyuse-map-nodes{min-height:100px;max-height:600px}.comfyui-easyuse-toolbar-nodes-map .comfyui-easyuse-map-nodes__header:before{content:"…";position:absolute;left:.25rem;top:2.75rem;transform:translateY(-2rem) rotate(90deg);width:.5rem;height:.5rem;display:inline-block;overflow:hidden;line-height:5px;padding:3px 4px;cursor:move;vertical-align:middle;font-size:12px;font-family:sans-serif;letter-spacing:2px;color:var(--drag-text);z-index:3;text-shadow:1px 0 1px black}.comfyui-easyuse-toolbar-nodes-map .comfyui-easyuse-map-nodes__header .title{cursor:move;padding-left:.25rem}.comfyui-easyuse-toolbar-nodes-map .comfyui-easyuse-map-nodes__content{max-height:calc(600px - 2.7rem)}.no-result-placeholder{display:flex;justify-content:center;align-items:center;height:100%}.no-result-placeholder-content{text-align:center;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-direction:column;-khtml-flex-direction:column;-moz-flex-direction:column;-ms-flex-direction:column;-o-flex-direction:column;flex-direction:column;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between}.no-result-placeholder .p-card{background-color:transparent!important;box-shadow:none;text-align:center}.no-result-placeholder h3{color:var(--input-text);margin-bottom:.5rem}.no-result-placeholder p{color:var(--descrip-text);margin-bottom:1rem;margin-top:0}#comfyui-easyuse-components{position:absolute;top:0;left:0;z-index:3}.comfyui-easyuse{--primary-bg:var(--theme-color)!important;--primary-hover-bg: var(--theme-color-light)!important;--p-datatable-header-cell-padding: .15rem 1rem;--p-datatable-body-cell-padding: .15rem 1rem;--border-color-solid: var(--border-color);--border-radius: 8px}.comfyui-easyuse.dark-theme{--fg-color: #fff;--bg-color: #242427;--content-bg:#18181b;--content-fg:#fff;--content-hover-bg: #27272a;--comfy-menu-bg: rgba(24,24,27,.9);--comfy-input-bg: #242427;--input-text: #ffffff;--descrip-text: #71717a;--drag-text: #ccc;--error-text: #ff4444;--border-color: #3f3f46;--border-color-solid: #2a2a2e;--tr-even-bg-color: rgba(28,28,28,.9);--tr-odd-bg-color: rgba(19,19,19,.9)}.comfyui-easyuse ::-webkit-scrollbar{width:0em}.comfyui-easyuse ::-webkit-scrollbar-track{background-color:transparent}.comfyui-easyuse ::-webkit-scrollbar-thumb{background-color:transparent;border-radius:2px}.comfyui-easyuse ::-webkit-scrollbar-thumb:hover{background-color:transparent}.comfyui-easyuse body{font-family:var(--font-family)!important;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.comfyui-easyuse textarea{font-family:var(--font-family)!important}.comfyui-easyuse hr{border:1px solid var(--border-color)}.comfyui-easyuse .comfy-multiline-input{background-color:transparent;border:1px solid var(--border-color-solid);border-radius:var(--border-radius);padding:8px;font-size:12px}.comfyui-easyuse #comfy-settings-dialog{border:1px solid var(--border-color);background:transparent;-webkit-backdrop-filter:blur(8px) brightness(120%);backdrop-filter:blur(8px) brightness(120%);box-shadow:none}.comfyui-easyuse .comfy-modal{border:1px solid var(--border-color);box-shadow:none;-webkit-backdrop-filter:blur(8px) brightness(120%);backdrop-filter:blur(8px) brightness(120%)}.comfyui-easyuse .cm-title{background-color:transparent!important}.comfyui-easyuse .cm-notice-board{border-radius:10px!important;border:1px solid var(--border-color)!important}.comfyui-easyuse .cm-menu-container{margin-bottom:50px!important}.comfyui-easyuse .cn-manager-custom_milk_white .tg-column-name,.comfyui-easyuse .cmm-manager-custom_milk_white .tg-column-name{color:var(--input-text)}.comfyui-easyuse .cn-manager-custom_milk_white .tg-body-message,.comfyui-easyuse .cmm-manager-custom_milk_white .tg-body-message{text-align:center;color:var(--descrip-text)!important}.comfyui-easyuse .cn-manager-custom_milk_white .tg-body-frame .tg-cell,.comfyui-easyuse .cmm-manager-custom_milk_white .tg-body-frame .tg-cell{color:var(--input-text)}.comfyui-easyuse .cn-manager-custom_milk_white .tg-body-frame .cn-node-name a,.comfyui-easyuse .cn-manager-custom_milk_white .tg-body-frame .cmm-node-name a,.comfyui-easyuse .cmm-manager-custom_milk_white .tg-body-frame .cn-node-name a,.comfyui-easyuse .cmm-manager-custom_milk_white .tg-body-frame .cmm-node-name a{color:var(--theme-color)!important}.comfyui-easyuse .comfy-menu{border-radius:16px;box-shadow:0 0 1px var(--descrip-text);-webkit-backdrop-filter:blur(8px) brightness(120%);backdrop-filter:blur(8px) brightness(120%)}.comfyui-easyuse .comfy-menu button.comfy-settings-btn{font-size:12px}.comfyui-easyuse .comfy-menu-btns{margin-bottom:4px}.comfyui-easyuse .comfy-menu button,.comfyui-easyuse .comfy-modal button{font-size:14px;padding:4px 0;margin-bottom:4px}.comfyui-easyuse .comfy-menu-btns button,.comfyui-easyuse .comfy-list-actions button{font-size:10px}.comfyui-easyuse .comfy-menu>button,.comfyui-easyuse .comfy-menu-btns button,.comfyui-easyuse .comfy-menu .comfy-list button,.comfyui-easyuse .comfy-modal button{border-width:1px}.comfyui-easyuse #comfy-dev-save-api-button{justify-content:center}.comfyui-easyuse #queue-button{position:relative;overflow:hidden;min-height:30px;z-index:1}.comfyui-easyuse #queue-button:after{clear:both;content:attr(data-attr);background:green;color:#fff;width:var(--process-bar-width);height:100%;position:absolute;top:0;left:0;z-index:0;text-align:center;display:flex;justify-content:center;align-items:center}.comfyui-easyuse #shareButton{background:linear-gradient(to left,var(--theme-color),var(--theme-color-light))!important;color:#fff!important}.comfyui-easyuse .litegraph.litecontextmenu{--height: 24px;--padding: 6px;font-family:var(--font-family);padding:var(--padding) 0;border-radius:var(--border-radius);-webkit-backdrop-filter:blur(8px) brightness(120%);backdrop-filter:blur(8px) brightness(120%)}.comfyui-easyuse .litegraph.litecontextmenu .litemenu-title{padding:var(--padding)}.comfyui-easyuse .litegraph.litecontextmenu>div:first-child.litemenu-title{margin-top:-6px}.comfyui-easyuse .litegraph.litecontextmenu .submenu{height:var(--height);line-height:var(--height);padding:0 18px 0 12px;margin:0;background:transparent!important}.comfyui-easyuse .litegraph.litecontextmenu .submenu.has_submenu{border-right:none;position:relative}.comfyui-easyuse .litegraph.litecontextmenu .submenu.has_submenu:after{content:"";display:block;width:0;height:0;border-width:4px 4px 0;border-style:solid;border-color:var(--input-text) transparent transparent;transform:translateY(-50%) rotate(-90deg);top:50%;position:absolute}.comfyui-easyuse .litegraph.litecontextmenu .submenu.separator{height:1px;width:100%;background-color:var(--border-color)!important;margin:var(--padding) 0;border:none}.comfyui-easyuse .litegraph.litecontextmenu .submenu:last-child.separator{display:none}.comfyui-easyuse .litegraph.litecontextmenu .submenu:hover:not(.separator){background:var(--theme-color)!important}.comfyui-easyuse .litegraph.lite-search-item{background-color:var(--comfy-input-bg)!important;filter:brightness(100%)}.comfyui-easyuse .litegraph.lite-search-item:hover{filter:brightness(120%);color:var(--input-text)}.comfyui-easyuse .graphdialog{-webkit-backdrop-filter:blur(8px) brightness(120%);backdrop-filter:blur(8px) brightness(120%)}.comfyui-easyuse .graphdialog button{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;-o-justify-content:center;justify-content:center;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse .comfyui-menu{background:var(--comfy-menu-bg);border-bottom:1px solid var(--bg-color)}.comfyui-easyuse .side-tool-bar-container:not(.bg-transparent){background:var(--comfy-menu-bg);border-right:1px solid var(--bg-color)}.comfyui-easyuse .comfy-modal-content{width:100%}.comfyui-easyuse-poseEditor{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;-o-justify-content:center;justify-content:center;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;text-align:center;font-size:18px;line-height:1.5}.comfyui-easyuse .dom-widget{padding:0 4px}.comfyui-easyuse .pi.pi-circle-fill[data-testid=noColor]{color:#000!important}.comfyui-easyuse .pi.pi-circle-fill[data-testid=red]{color:#af3535!important}.comfyui-easyuse .pi.pi-circle-fill[data-testid=brown]{color:#38291f!important}.comfyui-easyuse .pi.pi-circle-fill[data-testid=green]{color:#346434!important}.comfyui-easyuse .pi.pi-circle-fill[data-testid=blue]{color:#1f1f48!important}.comfyui-easyuse .pi.pi-circle-fill[data-testid=pale_blue]{color:#006691!important}.comfyui-easyuse .pi.pi-circle-fill[data-testid=cyan]{color:#008181!important}.comfyui-easyuse .pi.pi-circle-fill[data-testid=purple]{color:#422342!important}.comfyui-easyuse .pi.pi-circle-fill[data-testid=yellow]{color:#c09430!important}.comfyui-easyuse .pi.pi-circle-fill[data-testid=black]{color:#000c!important}')),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}}(); -var e;import{u as o,a as t,s as n,g as a,b as s,c as l,j as i,N as d,$ as u,t as r,d as c,_ as p,i as v,e as m,f as g,h,k as f,l as y,m as w}from"./assets/extensions-D2kRhbC_.js";import{h as _,r as x,o as b,a as C,c as M,F as k,k as S,s as $,b as N,p as D,q as E,l as A,f as V,e as z,d as H,z as P,i as T,Z as G,n as O,y as U,P as I,w as R,W as j,m as L,_ as B,R as Y,$ as W,a0 as F,a1 as q}from"./assets/vue-C8DvX6GQ.js";import{e as Z,s as K,k as X,g as J,T as Q,f as ee,i as oe,l as te,d as ne,m as ae}from"./assets/vendor-BLbrPL4H.js";import{c as se}from"./assets/lodash-CZi7izHi.js";import{d as le,u as ie}from"./assets/vueuse-BtwMN4bF.js";import{P as de}from"./assets/primevue-B4A7h1ix.js";import"./assets/primeuix-Zf0UbZPU.js";const ue=["data-id"],re=["onMousedown","onDblclick"],ce="comfyui-easyuse-slider",pe="ipadapter layer weights",ve={__name:"sliderControl",props:{id:{type:String|Number,default:""},mode:{type:String,default:""},type:{type:String,default:""},values:{type:Array,default:[]},show:{type:Boolean,default:!1}},emits:["changeValues","showSlider"],setup(e,{emit:o}){const t=e,n=o,a=(e,o,t)=>(e-o)/(t-o)*100,s=(e,o,n=void 0)=>{if(t.mode===pe){let t={3:2.5,6:1}[o]||0;return{default:12==e?t:0,min:-1,max:3,step:.05,value:void 0!==n?n:12==e?t:0,top:void 0!==n?100-a(n,-1,3)+"%":null,height:void 0!==n?a(n,-1,3)+"%":null}}};_((e=>t.mode),(async(e,o)=>{var a;if(e!==o&&e===pe)if(!o&&(null==(a=t.values)?void 0:a.length)>0){const e=t.values.map((e=>{const o=e.split(":");return s(t.values.length,o[0],parseFloat(o[1]))}));await n("changeValues",e)}else{let e="sd1"==t.type?16:12,o=Array.from({length:e},((o,t)=>s(e,t)));await n("changeValues",o)}n("showSlider")}),{immediate:!0}),_((e=>t.type),((e,o)=>{if(e!=o&&t.mode==pe){let e="sd1"==t.type?16:12,o=Array.from({length:e},((o,t)=>s(e,t)));n("changeValues",o)}}));const l=x(null),i=x(null);return b((()=>{document.onmouseup=e=>document.onmousemove=null})),(o,s)=>{var d;return C(),M("div",{class:$(ce),"data-id":e.id},[(null==(d=e.values)?void 0:d.length)>0&&e.show?(C(!0),M(k,{key:0},S(e.values,((o,s)=>(C(),M("div",{class:$([ce+"-item",{positive:3==s&&"sdxl"==e.type&&e.mode==pe},{negative:6==s&&"sdxl"==e.type&&e.mode==pe}]),key:s},[N("div",{class:$(ce+"-item-input")},D(o.value),3),N("div",{class:$(ce+"-item-scroll"),ref_for:!0,ref_key:"scroll",ref:l},[N("div",{class:$(ce+"-item-bar"),ref_for:!0,ref_key:"bar",ref:i,style:E({top:o.top||100-a(o.default,o.min,o.max)+"%"}),onMousedown:e=>((e,o,a)=>{let s=e||window.event,d=l.value[a],u=i.value[a],r=se(t.values),c=s.clientY-u.offsetTop;document.onmousemove=e=>{let t=(e||window.event).clientY-c;t<0?t=0:t>d.offsetHeight-u.offsetHeight&&(t=d.offsetHeight-u.offsetHeight);let s=(o.max-o.min)/o.step,l=(d.offsetHeight-u.offsetHeight)/s;t=Math.round(t/l)*l;const i=Math.floor(t/(d.offsetHeight-u.offsetHeight)*100)+"%",p=Math.floor((d.offsetHeight-u.offsetHeight-t)/(d.offsetHeight-u.offsetHeight)*100)+"%",v=parseFloat(parseFloat(o.max-(o.max-o.min)*(t/(d.offsetHeight-u.offsetHeight))).toFixed(2));r[a]={...r[a],top:i,height:p,value:v},n("changeValues",r),window.getSelection?window.getSelection().removeAllRanges():document.selection.empty()}})(e,o,s),onDblclick:e=>((e,o,a)=>{let s=se(t.values);s[a]={...s[a],top:null,height:null,value:o.default},n("changeValues",s)})(0,o,s)},null,46,re),N("div",{class:$(ce+"-item-area"),style:E({height:o.height||a(o.default,o.min,o.max)+"%"})},null,6)],2),N("div",{class:$(ce+"-item-label")},[N("span",null,D(o.label),1)],2)],2)))),128)):A("",!0)],8,ue)}}},me={__name:"index",setup(e){const s=o(),{slider_controls:l}=Z(s),i=x({}),d=async e=>{var o,t,d,u,r;await n(1);const c=a(e,"mode"),p=a(e,"model_type"),v=(null==(o=e.properties.values)?void 0:o.length)>0?e.properties.values:[];(null==(t=e.flags)?void 0:t.collapsed)&&e.collapse();let m=se(l.value);m.push({id:e.id,type:p.value,mode:c.value,value:v,show:!1});const g=m.length-1;await s.setSliderControls(m);let h=null==(r=null==(u=null==(d=i.value[e.id])?void 0:d._)?void 0:u.vnode)?void 0:r.el;if(!h)return;e.addDOMWidget("values","btn",h,{setValue(){},getValue(){var o;const t=(null==(o=l.value)?void 0:o[g].value)||[];return e.properties.values=t.map(((e,o)=>`${o}:${e.value}`)),e.properties.values.join(",")}}),e.properties.values||e.setProperty("values",[]),e.setSize("sdxl"==p.value?[375,320]:[455,320]),p.callback=o=>{m=se(l.value),m[g].type!=o&&(e.setSize("sdxl"==o?[375,320]:[455,320]),m[g].value=[],m[g].type=o,s.setSliderControls(m))};const f=e.onRemoved;e.onRemoved=function(){if(f&&(null==f||f.apply(this,arguments)),void 0!==l.value.findIndex((o=>o.id==e.id))){let e=se(l.value);e.splice(g,1),s.setSliderControls(e)}return f}};return b((e=>{t.registerExtension({name:"Comfy.EasyUse.Components",async beforeRegisterNodeDef(e,o){const t=e.prototype.onNodeCreated;"easy sliderControl"==o.name&&(e.prototype.onNodeCreated=async function(){return t&&(null==t||t.apply(this,arguments)),await d(this),t}),"easy poseEditor"==o.name&&(e.prototype.onNodeCreated=async function(){t&&(null==t||t.apply(this,arguments));const e=document.createElement("div");return e.className="comfyui-easyuse-poseEditor",e.innerHTML='
This node is about to be removed, you can use ComfyUI_Custom_Nodes_AlekPet to replace it.
',this.addDOMWidget("editor","btn",e),t})}})})),(e,o)=>(C(!0),M(k,null,S(z(l),((e,o)=>(C(),V(ve,{ref_for:!0,ref:o=>{o&&(i.value[e.id]=o)},type:e.type,key:o,id:e.id,show:e.show,mode:e.mode,values:e.value,onChangeValues:e=>((e,o)=>{let t=se(l.value);t[o].value=e,s.setSliderControls(t)})(e,o),onShowSlider:e=>(e=>{let o=se(l.value);o[e].show=!0,s.setSliderControls(o)})(o)},null,8,["type","id","show","mode","values","onChangeValues","onShowSlider"])))),128))}},ge={class:"no-result-placeholder"},he={class:"no-result-placeholder-content"},fe={key:0},ye={__name:"noResultsPlaceholder",props:{icon:{type:String,default:"",required:!1},iconSize:{type:String,default:"3rem",required:!1},title:{type:String,required:!0},message:{type:String,required:!1},buttonLabel:{type:String,default:"",required:!1}},emits:["action"],setup:e=>(o,t)=>(C(),M("div",ge,[H(z(X),null,{content:P((()=>[N("div",he,[N("i",{class:$(e.icon),style:E({"font-size":e.iconSize,"margin-bottom":".5rem"})},null,6),N("h3",null,D(e.title),1),e.message?(C(),M("p",fe,D(e.message),1)):A("",!0),e.buttonLabel?(C(),V(z(K),{key:1,label:e.buttonLabel,onClick:t[0]||(t[0]=e=>o.$emit("action")),class:"p-button-text"},null,8,["label"])):A("",!0)])])),_:1})]))},we={class:"left flex-1"},_e={key:0,class:"node_id"},xe={key:1,class:"edit"},be={class:"right toolbar"},Ce={__name:"node",props:{node:{type:Object,default:{}}},emits:["mousedown","mouseup","changeMode"],setup(e){const o=s(),n=T((e=>l("EasyUse.NodesMap.DisplayNodeID"))),a=e,u=x(!1),r=x(null),c=x("");_((e=>a.node.is_edit),(e=>{e&&(c.value=a.node.title)}));const p=async()=>{let e=t.canvas.graph._nodes.find((e=>e.id==a.node.id));e?(e.is_edit=!1,e.title=c.value,await o.setNodes(t.canvas.graph._nodes),u.value=!1):u.value=!1};return(o,t)=>{var a;return C(),M("div",{draggable:!1,class:$(["comfyui-easyuse-map-nodes-node",{never:void 0!==e.node.mode&&e.node.mode==z(d).NEVER},{bypass:void 0!==e.node.mode&&e.node.mode==z(d).BYPASS}])},[N("div",we,[n.value?(C(),M("span",_e,D(e.node.id),1)):A("",!0),(null==(a=e.node)?void 0:a.is_edit)?(C(),M("div",xe,[H(z(J),{ref_key:"modifyRef",ref:r,modelValue:c.value,"onUpdate:modelValue":t[0]||(t[0]=e=>c.value=e),variant:"outline",size:"small",type:"text",onBlur:p,onKeydown:[G(p,["enter"]),G(p,["esc"])],style:{width:"100%"}},null,8,["modelValue"])])):void 0!==e.node.title?(C(),M("span",{key:2,class:"label",onDblclick:t[1]||(t[1]=O((o=>z(i)(e.node.id)),["stop"]))},D(e.node.title),33)):(C(),M("span",{key:3,class:"label error",onDblclick:t[2]||(t[2]=O((o=>z(i)(e.node.id)),["stop"]))},D(e.node.type),33))]),N("div",be,[H(z(K),{size:"small",icon:e.node.mode==z(d).ALWAYS?"pi pi-eye":"pi pi-eye-slash",text:"",rounded:"",severity:"secondary",onClick:t[3]||(t[3]=O((e=>o.$emit("changeMode")),["stop"])),onMousedown:t[4]||(t[4]=O((e=>o.$emit("mousedown")),["stop"])),onMouseup:t[5]||(t[5]=O((e=>o.$emit("mouseup")),["stop"]))},null,8,["icon"])])],2)}}},Me={class:"left flex-1"},ke={key:1,class:"edit"},Se={key:2,class:"label"},$e={class:"right toolbar"},Ne={key:0,class:"child"},De={__name:"group",props:{item:{type:Object,default:{}}},emits:["mousedown","mouseup","changeMode"],setup(e){const o=e,n=s(),a=x(!1),l=x(null),i=x("");_((e=>o.item.info.is_edit),(e=>{e&&(i.value=o.item.info.title)}));const u=e=>{var a,s;let l=o.item;if(!(null==(a=l.info)?void 0:a.is_edit)&&(null==(s=l.children)?void 0:s.length)>0){let e=t.canvas.graph._groups.find((e=>e.pos[0]==l.info.pos[0]&&e.pos[1]==l.info.pos[1]));e&&(e.show_nodes=!e.show_nodes,n.setGroups(t.canvas.graph._groups))}},r=async()=>{let e=o.item,s=t.canvas.graph._groups.find((o=>o.pos[0]==e.info.pos[0]&&o.pos[1]==e.info.pos[1]));s?(s.is_edit=!1,s.title=i.value,await n.setGroups(t.canvas.graph._groups),a.value=!1):a.value=!1};return(o,t)=>{var n,a,s;return C(),M(k,null,[N("div",{class:$("comfyui-easyuse-map-nodes-group"),onClick:u},[N("div",Me,[e.item.children?(C(),M("i",{key:0,class:$(["icon",e.item.info.show_nodes?"pi pi-folder-open":"pi pi-folder"]),style:E({color:e.item.info.color})},null,6)):A("",!0),(null==(n=e.item.info)?void 0:n.is_edit)?(C(),M("div",ke,[H(z(J),{ref_key:"modifyRef",ref:l,modelValue:i.value,"onUpdate:modelValue":t[0]||(t[0]=e=>i.value=e),variant:"outline",size:"small",type:"text",onBlur:r,onKeydown:[G(r,["enter"]),G(r,["esc"])],style:{width:"100%"}},null,8,["modelValue"])])):(C(),M("div",Se,[N("span",null,D(e.item.info.title),1)]))]),N("div",$e,[(null==(a=e.item.children)?void 0:a.length)>0?(C(),V(z(K),{key:0,size:"small",icon:e.item.children.find((e=>e.mode==z(d).ALWAYS))?"pi pi-eye":"pi pi-eye-slash",text:"",rounded:"",severity:"secondary",onClick:t[1]||(t[1]=O((e=>o.$emit("changeMode")),["stop"])),onMousedown:t[2]||(t[2]=O((e=>o.$emit("mousedown")),["stop"])),onMouseup:t[3]||(t[3]=O((e=>o.$emit("mouseup")),["stop"]))},null,8,["icon"])):A("",!0)])]),(null==(s=e.item.children)?void 0:s.length)>0&&e.item.info.show_nodes?(C(),M("div",Ne,[U(o.$slots,"default")])):A("",!0)],64)}}},Ee={__name:"tree",props:{item:Object,index:Number,showGroupOnly:Boolean},emits:["dragstart","dragend","dragover","contextmenu","changeGroupMode","changeNodeMode","mousedown","mouseup"],setup:e=>(o,t)=>{var n,a,s,l;const i=I("Tree",!0);return C(),M("li",{onDragstart:t[10]||(t[10]=t=>o.$emit("dragstart",t,e.index)),onDragend:t[11]||(t[11]=t=>o.$emit("dragend",t,e.index)),onDragover:t[12]||(t[12]=t=>o.$emit("dragover",t,e.index)),draggable:!0,onContextmenu:t[13]||(t[13]=O((t=>o.$emit("contextmenu",t,e.item)),["stop"]))},[(null==(n=e.item.children)?void 0:n.length)||(null==(s=null==(a=e.item)?void 0:a.info)?void 0:s.sub_groups)?(C(),V(De,{key:0,item:e.item,onChangeMode:t[4]||(t[4]=t=>o.$emit("changeGroupMode",e.item)),onMousedown:t[5]||(t[5]=t=>o.$emit("mousedown",e.item,"group")),onMouseup:t[6]||(t[6]=e=>o.$emit("mouseup"))},{default:P((()=>[N("ol",null,[(C(!0),M(k,null,S(e.item.children,((n,a)=>(C(),V(i,{key:a,item:n,index:a,showGroupOnly:e.showGroupOnly,onDragstart:e=>o.$emit("dragstart",e,a),onDragend:e=>o.$emit("dragend",e,a),onDragover:e=>o.$emit("dragover",e,a),onContextmenu:e=>o.$emit("contextmenu",e,n),onChangeGroupMode:t[0]||(t[0]=e=>o.$emit("changeGroupMode",e)),onChangeNodeMode:t[1]||(t[1]=e=>o.$emit("changeNodeMode",e)),onMousedown:t[2]||(t[2]=e=>o.$emit("mousedown",e[0],e[1])),onMouseup:t[3]||(t[3]=e=>o.$emit("mouseup"))},null,8,["item","index","showGroupOnly","onDragstart","onDragend","onDragover","onContextmenu"])))),128))])])),_:1},8,["item"])):e.showGroupOnly?A("",!0):(C(),V(Ce,{key:1,node:(null==(l=e.item)?void 0:l.info)||e.item,onChangeMode:t[7]||(t[7]=t=>{var n;return o.$emit("changeNodeMode",(null==(n=e.item)?void 0:n.info)||e.item)}),onMousedown:t[8]||(t[8]=t=>{var n;return o.$emit("mousedown",(null==(n=e.item)?void 0:n.info)||e.item,"node")}),onMouseup:t[9]||(t[9]=e=>o.$emit("mouseup"))},null,8,["node"]))],32)}},Ae={class:"title"},Ve={class:"toolbar"},ze={key:0},He={key:1},Pe={key:2,class:"no_result",style:{height:"100%"}},Te="comfyui-easyuse-map-nodes",Ge={__name:"nodesMap",emits:["handleHeader"],setup(e){const o=s(),{groups_nodes:n,groups:a,nodes:c}=Z(o),p=T((e=>l("EasyUse.NodesMap.DisplayGroupOnly"))),v=x(!1),m=e=>{v.value=!v.value,t.canvas.graph._groups.forEach((e=>{e.show_nodes=v.value})),o.setGroups(t.canvas.graph._groups)},g=x(""),h=T((e=>(null==c?void 0:c.value.filter((e=>{var o,t,n,a;return(null==(t=null==(o=e.id)?void 0:o.toString())?void 0:t.includes(g.value))||(null==(n=e.type)?void 0:n.includes(g.value))||(null==(a=e.title)?void 0:a.includes(g.value))})))||[])),f=x(null),y=x(!1),w=T((()=>y.value?[{label:u("Jump to this node"),icon:"pi pi-arrow-circle-right",visible:!0,command:()=>E(_.value)},{label:u("Rename node"),icon:"pi pi-file-edit",visible:!0,command:()=>G(_.value)},{label:u("Delete node"),icon:"pi pi-trash",command:()=>I(_.value),visible:!0}]:[{label:u("Rename group"),icon:"pi pi-file-edit",visible:!0,command:()=>j(_.value)},{label:u("Delete group"),icon:"pi pi-trash",command:()=>L(_.value),visible:!0}])),_=x(null),b=(e,o)=>{_.value=o,y.value=!o.children,f.value.show(e)},E=e=>{i((null==e?void 0:e.info)?e.info.id:e.id)},G=e=>{e.info?e.info.is_edit=!0:e.is_edit=!0},I=e=>{const n=e.info?e.info.id:e.id;t.canvas.graph.beforeChange(),t.canvas.graph._nodes.splice(t.canvas.graph._nodes.findIndex((e=>e.id==n)),1),t.canvas.graph.afterChange(),t.canvas.setDirty(!0,!0),o.setNodes(t.canvas.graph._nodes)},j=e=>{e.info.is_edit=!0},L=e=>{t.canvas.graph.beforeChange(),t.canvas.graph._groups.splice(t.canvas.graph._groups.findIndex((o=>o.id==e.info.id)),1),t.canvas.graph.afterChange(),t.canvas.setDirty(!0,!0),o.setGroups(t.canvas.graph._groups)};let B,Y=0,W=0,F=!1;const q=(e,n=!1)=>{if(F)return void(F=!1);const a=e.children.find((e=>e.mode==d.ALWAYS)),s=e.children.map((e=>e.id));t.canvas.graph._nodes.forEach((e=>{s.includes(e.id)&&(e.mode=a?n?d.NEVER:d.BYPASS:d.ALWAYS,e.graph.change())})),o.setNodes(t.canvas.graph._nodes)},X=(e,n=!1)=>{if(F)return void(F=!1);const a=e.mode==d.ALWAYS,s=t.canvas.graph._nodes.find((o=>o.id==e.id));s&&(s.mode=a?n?d.NEVER:d.BYPASS:d.ALWAYS,s.graph.change(),o.setNodes(t.canvas.graph._nodes))},ne=(e,o="group")=>{Y=(new Date).getTime(),clearTimeout(B),B=setTimeout((t=>{"group"==o?q(e,!0):X(e,!0)}),500)},ae=e=>{W=(new Date).getTime(),W-Y>500&&(F=!0),clearTimeout(B)};let se=x(null),le=x(null);x(!1);const ie=(e,o)=>{se.value=o,e.currentTarget.style.opacity="0.6",e.currentTarget.style.border="1px dashed yellow",e.dataTransfer.effectAllowed="move"},de=(e,n)=>{e.target.style.opacity="1",e.currentTarget.style.border="1px dashed transparent";if("Manual drag&drop sorting"!==l("EasyUse.NodesMap.Sorting"))return void r.warn(u("For drag and drop sorting, please find Nodes map sorting mode in Settings->EasyUse and change it to manual"));let a=t.canvas.graph._groups,s=a[se.value],i=a[le.value];t.canvas.graph._groups[se.value]=i,t.canvas.graph._groups[le.value]=s,o.setGroups(t.canvas.graph._groups)},ue=(e,o)=>{e.preventDefault(),e.currentIndex!=se.value&&(le.value=o)};return(e,o)=>{var t,s,l;return C(),M("div",{class:$(Te)},[N("div",{class:$(Te+"__header"),onMousedown:o[0]||(o[0]=o=>e.$emit("handleHeader",o))},[N("div",Ae,D(z(u)("NODES MAP")),1),N("div",Ve,[(null==(t=z(a))?void 0:t.length)>0?R((C(),V(z(K),{key:0,icon:v.value?"pi pi-angle-double-down":"pi pi-angle-double-up",text:"",rounded:"",severity:"secondary",onClick:O(m,["stop"]),size:"small"},null,8,["icon"])),[[z(Q),v.value?z(u)("Collapse All"):z(u)("Expand All"),void 0,{top:!0}]]):A("",!0),U(e.$slots,"icon")])],34),N("div",{class:$(Te+"__content")},[N("div",{class:$(Te+"__content-searchbox")},[H(z(oe),null,{default:P((()=>[H(z(J),{class:"search-box-input",modelValue:g.value,"onUpdate:modelValue":o[1]||(o[1]=e=>g.value=e),placeholder:z(u)("Search by Node ID/Name..."),variant:"outlined",style:{width:"100%"}},null,8,["modelValue","placeholder"]),g.value?(C(),V(z(ee),{key:1,class:"pi pi-times",onClick:o[2]||(o[2]=e=>g.value="")})):(C(),V(z(ee),{key:0,class:"pi pi-search"}))])),_:1})],2),(null==(s=h.value)?void 0:s.length)>0&&g.value?(C(),M("ul",ze,[(C(!0),M(k,null,S(h.value,((e,o)=>(C(),M("li",{key:o},[H(Ce,{node:e,onChangeMode:o=>X(e),onMousedown:o=>ne(e,"node"),onMouseup:ae},null,8,["node","onChangeMode","onMousedown"])])))),128))])):(null==(l=z(n))?void 0:l.length)>0&&!g.value?(C(),M("ul",He,[(C(!0),M(k,null,S(z(n),((e,o)=>(C(),V(Ee,{key:o,item:e,index:o,showGroupOnly:p.value,onDragstart:ie,onDragend:de,onDragover:ue,onContextmenu:b,onChangeGroupMode:q,onChangeNodeMode:X,onMousedown:ne,onMouseup:ae},null,8,["item","index","showGroupOnly"])))),128))])):(C(),M("div",Pe,[H(ye,{icon:"pi pi-sitemap",title:z(u)("No Nodes",!0),message:g.value?z(u)("No nodes found in the search"):z(u)("No nodes found in the map",!0)},null,8,["title","message"])]))],2),H(z(te),{ref_key:"menuRef",ref:f,model:w.value,autoZIndex:!1,appendTo:"self"},null,8,["model"])])}}},Oe="comfyui-easyuse-toolbar",Ue={__name:"index",setup(e){const o=s(),t=x(!1);_((e=>t.value),(e=>{e?o.watchGraph(!0):o.unwatchGraph()}));const n=x(null),a=e=>{const o=n.value;var t=e.clientX||0,a=e.clientY||0,s=o.offsetLeft,l=o.offsetTop;function i(e){var n=e.clientX,i=e.clientY,d=n-t,u=i-a;o.style.left=s+d+"px",o.style.top=l+u+"px"}document.addEventListener("mousemove",i),document.addEventListener("mouseup",(function e(){document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",e)}))};return(e,o)=>(C(),M(k,null,[N("div",{class:$(["flex-c",Oe])},[N("div",{class:$(["group flex-c",Oe+"-icon"]),onClick:o[0]||(o[0]=e=>t.value=!t.value)},o[3]||(o[3]=[N("svg",{class:"icon",t:"1714565543756",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"22538",width:"200",height:"200"},[N("path",{d:"M871.616 64H152.384c-31.488 0-60.416 25.28-60.416 58.24v779.52c0 32.896 26.24 58.24 60.352 58.24h719.232c34.112 0 60.352-25.344 60.352-58.24V122.24c0.128-32.96-28.8-58.24-60.288-58.24zM286.272 512c-23.616 0-44.672-20.224-44.672-43.008 0-22.784 20.992-43.008 44.608-43.008 23.616 0 44.608 20.224 44.608 43.008A43.328 43.328 0 0 1 286.272 512z m0-202.496c-23.616 0-44.608-20.224-44.608-43.008 0-22.784 20.992-43.008 44.608-43.008 23.616 0 44.608 20.224 44.608 43.008a43.456 43.456 0 0 1-44.608 43.008zM737.728 512H435.904c-23.68 0-44.672-20.224-44.672-43.008 0-22.784 20.992-43.008 44.608-43.008h299.264c23.616 0 44.608 20.224 44.608 43.008a42.752 42.752 0 0 1-41.984 43.008z m0-202.496H435.904c-23.616 0-44.608-20.224-44.608-43.008 0-22.784 20.992-43.008 44.608-43.008h299.264c23.616 0 44.608 20.224 44.608 43.008a42.88 42.88 0 0 1-42.048 43.008z","p-id":"22539",fill:"currentColor"})],-1)]),2),N("div",{class:$(["rocket flex-c",Oe+"-icon"]),onClick:o[1]||(o[1]=(...e)=>z(c)&&z(c)(...e))},o[4]||(o[4]=[N("svg",{class:"icon",t:"1714565020764",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"7999",width:"200",height:"200"},[N("path",{d:"M810.438503 379.664884l-71.187166-12.777183C737.426025 180.705882 542.117647 14.602496 532.991087 7.301248c-12.777184-10.951872-32.855615-10.951872-47.45811 0-9.12656 7.301248-204.434938 175.229947-206.26025 359.586453l-67.536542 10.951871c-18.253119 3.650624-31.030303 18.253119-31.030303 36.506239v189.832442c0 10.951872 5.475936 21.903743 12.777184 27.379679 7.301248 5.475936 14.602496 9.12656 23.729055 9.12656h5.475936l133.247772-23.729055c40.156863 47.458111 91.265597 73.012478 151.500891 73.012477 60.235294 0 111.344029-27.379679 151.500891-74.837789l136.898396 23.729055h5.475936c9.12656 0 16.427807-3.650624 23.729055-9.12656 9.12656-7.301248 12.777184-16.427807 12.777184-27.379679V412.520499c1.825312-14.602496-10.951872-29.204991-27.379679-32.855615zM620.606061 766.631016H401.568627c-20.078431 0-36.506239 16.427807-36.506238 36.506239v109.518716c0 14.602496 9.12656 29.204991 23.729055 34.680927 14.602496 5.475936 31.030303 1.825312 40.156863-9.126559l16.427807-18.25312 32.855615 80.313726c5.475936 14.602496 18.253119 23.729055 34.680927 23.729055 16.427807 0 27.379679-9.12656 34.680927-23.729055l32.855615-80.313726 16.427807 18.25312c10.951872 10.951872 25.554367 14.602496 40.156863 9.126559 14.602496-5.475936 23.729055-18.253119 23.729055-34.680927v-109.518716c-3.650624-20.078431-20.078431-36.506239-40.156862-36.506239z",fill:"currentColor","p-id":"8000"})],-1)]),2)]),t.value?(C(),M("div",{key:0,ref_key:"nodesMapRef",ref:n,class:$(Oe+"-nodes-map")},[H(Ge,{onHandleHeader:a},{icon:P((()=>[R(H(z(K),{icon:"pi pi-times",text:"",rounded:"",severity:"secondary",onClick:o[2]||(o[2]=e=>t.value=!1),size:"small"},null,512),[[z(Q),z(u)("Close"),void 0,{top:!0}]])])),_:1})],2)):A("",!0)],64))}},Ie=ne("fastCanvas",(()=>{const e=j(null),o=x([]);return{canvas:e,selectedItems:o,updateSelectedItems:()=>{var t;const n=Array.from((null==(t=e.value)?void 0:t.selectedItems)??[]);o.value=n.map((e=>L(e)))},getCanvas:()=>(e.value||(e.value=t.canvas,e.value.render_canvas_border=!1),e.value)}}));function Re(e={}){const{useTransform:o=!1}=e,t=Ie().getCanvas(),{canvasPosToClientPos:n}=((e,o)=>{const{left:t,top:n}=le(e);return{clientPosToCanvasPos:e=>{const{offset:a,scale:s}=o.ds;return[(e[0]-t.value)/s-a[0],(e[1]-n.value)/s-a[1]]},canvasPosToClientPos:e=>{const{offset:a,scale:s}=o.ds;return[(e[0]+a[0])*s+t.value,(e[1]+a[1])*s+n.value]}}})(t.canvas,t),a=x({pos:[0,0],size:[0,0]});return{style:T((()=>{const{pos:e,size:s,scale:l=t.ds.scale}=a.value,[i,d]=n(e),[u,r]=s;return o?{position:"fixed",transformOrigin:"0 0",transform:`scale(${l})`,left:`${i}px`,top:`${d}px`,width:`${u}px`,height:`${r}px`}:{position:"fixed",left:`${i}px`,top:`${d}px`,width:u*l+"px",height:r*l+"px"}})),updatePosition:e=>{a.value=e}}}const je=(e={})=>{const o=x({}),{margin:t=4}=e,n=(e,o,n,a)=>{if(!n&&a){const{scale:n,offset:s}=a,l=function(e,o){const t=Math.max(e.x,o.x),n=Math.max(e.y,o.y),a=Math.min(e.x+e.width,o.x+o.width),s=Math.min(e.y+e.height,o.y+o.height);return t>=a||n>=s?null:[t,n,a-t,s-n]}({x:e.left-o.left,y:e.top-o.top,width:e.width,height:e.height},{x:(a.x+s[0]-t)*n,y:(a.y+s[1]-t)*n,width:(a.width+2*t)*n,height:(a.height+2*t)*n});if(!l)return"";const i=(l[0]-e.left+o.left)/n+"px",d=(l[1]-e.top+o.top)/n+"px",u=l[2]/n+"px",r=l[3]/n+"px";return`polygon(0% 0%, 0% 100%, ${i} 100%, ${i} ${d}, calc(${i} + ${u}) ${d}, calc(${i} + ${u}) calc(${d} + ${r}), ${i} calc(${d} + ${r}), ${i} 100%, 100% 100%, 100% 0%)`}return""};return{style:o,updateClipPath:(e,t,a,s)=>{const l=e.getBoundingClientRect(),i=t.getBoundingClientRect(),d=n(l,i,a,s);o.value={clipPath:d||"none",willChange:"clip-path"}}}},Le=["title"],Be=p({__name:"domWidget",props:{widgetState:{type:Object,default:()=>({widget:{},visible:!0,readonly:!1,zIndex:0})}},emits:["update:widgetValue"],setup(e,{emit:o}){var t,n;const a=e.widgetState.widget,s=o,i=x(void 0),{style:d,updatePosition:u}=Re({useTransform:!0}),{style:r,updateClipPath:c}=je(),p=T((()=>({...d.value,...h.value?r.value:{},zIndex:e.widgetState.zIndex,pointerEvents:e.widgetState.readonly||a.computedDisabled?"none":"auto",opacity:a.computedDisabled?.5:1}))),g=Ie(),h=T((e=>l("Comfy.DOMClippingEnabled")));if(_((()=>e.widgetState),(e=>{u(e),h.value&&(()=>{const e=g.canvas;if(!e||!i.value)return;const o=Object.values(e.selected_nodes??{})[0];if(!o)return;const t=o===a.node,n=null==o?void 0:o.renderArea,s=e.ds.offset,l=e.ds.scale,d=n?{x:n[0],y:n[1],width:n[2],height:n[3],scale:l,offset:[s[0],s[1]]}:void 0;c(i.value,e.canvas,t,d)})()}),{deep:!0}),_((()=>e.widgetState.visible),((e,o)=>{var t,n;!e&&o&&(null==(n=(t=a.options).onHide)||n.call(t,a))})),v(a)){a.element.blur&&ie(document,"mousedown",(e=>{a.element.contains(e.target)||a.element.blur()}));for(const e of a.options.selectOn??["focus","click"])ie(a.element,e,(()=>{const e=g.canvas;null==e||e.selectNode(a.node),null==e||e.bringToFront(a.node)}))}const f=a.node.constructor.nodeData,y=null==(n=null==(t=null==f?void 0:f.inputs)?void 0:t[a.name])?void 0:n.tooltip;return b((()=>{v(a)&&i.value&&i.value.appendChild(a.element)})),(o,t)=>R((C(),M("div",{ref_key:"widgetElement",ref:i,class:"dom-widget",title:z(y),style:E(p.value)},[z(m)(z(a))?(C(),V(Y(z(a).component),{key:0,"model-value":z(a).value,widget:z(a),"onUpdate:modelValue":t[0]||(t[0]=e=>s("update:widgetValue",e))},null,8,["model-value","widget"])):A("",!0)],12,Le)),[[B,e.widgetState.visible]])}},[["__scopeId","data-v-f8c9efe3"]]),Ye={class:"isolate"},We={__name:"domWidgets",setup(e){const o=Ie(),t=g(),n=T((()=>Array.from(t.widgetStates.values())));return _((()=>o.canvas),(e=>{e&&(e.onDrawForeground=h(e.onDrawForeground,(()=>{(()=>{var e;const n=o.canvas;if(!n)return;const a=n.low_quality;for(const o of t.widgetStates.values()){const t=o.widget,s=t.node,l=n.isNodeVisible(s)&&!(t.options.hideOnZoom&&a)&&t.isVisible();if(o.visible=l,l){const a=t.margin;o.pos=[s.pos[0]+a,s.pos[1]+a+t.y],o.size=[(t.width??s.width)-2*a,(t.computedHeight??50)-2*a],o.zIndex=(null==(e=n.graph)?void 0:e.nodes.indexOf(s))??-1,o.readonly=n.read_only}}})()})))}),{immediate:!0}),(e,o)=>(C(),M("div",Ye,[(C(!0),M(k,null,S(n.value,(e=>(C(),V(Be,{key:e.widget.id,"widget-state":e,"onUpdate:widgetValue":o=>e.widget.value=o},null,8,["widget-state","onUpdate:widgetValue"])))),128))]))}},Fe={__name:"index",setup(e){const o=s();return b((e=>{o.watchGraph()})),(e,o)=>(C(),M("div",{class:$("comfyui-easyuse-map")},[H(Ge)]))}},qe="Comfy.UseNewMenu",Ze={__name:"App",setup(e){const o=x(null);return b((e=>{try{(async()=>{l("EasyUse.NodesMap.Enable",null)&&t.extensionManager.registerSidebarTab({id:f,icon:"pi pi-sitemap",title:u("NodesMap",!0),tooltip:u("NodesMap",!0),type:"custom",render:e=>{e.style.height="100%",W(F(Fe,{}),e)}});const e=await y.fetchApi("/easyuse/version");if(200===e.status){let o=await e.json();o.version&&t.registerExtension({name:"EasyUse Version",aboutPageBadges:[{label:"EasyUse v"+o.version,url:"https://github.com/yolain/ComfyUI-Easy-Use",icon:"pi pi-github"}]})}o.value=l(qe),w(qe,(e=>{o.value=e}))})()}catch(n){}})),(e,t)=>(C(),M(k,null,[H(me),t[0]||(t[0]=N("img",{id:"easyuse-model-thumbnail"},null,-1)),"Disabled"==o.value?(C(),V(Ue,{key:0})):A("",!0),H(We)],64))}},Ke=null==(e=document.getElementsByClassName("graph-canvas-container"))?void 0:e[0],Xe=document.createElement("div");Xe.id="comfyui-easyuse-components",Ke?Ke.append(Xe):document.body.append(Xe);const Je=q(Ze);Je.use(de),Je.use(ae()),Je.mount("#"+Xe.id); +!function(){"use strict";try{if("undefined"!=typeof document){var e=document.createElement("style");e.appendChild(document.createTextNode('@charset "UTF-8";.easyuse-prompt-await-select .p-select-label{font-size:12px!important}.easyuse-prompt-await-select .p-select-dropdown{width:1.5rem!important}.easyuse-prompt-await-select .p-select-dropdown svg{width:12px!important;height:12px!important}.easyuse-multiselect{font-size:12px;padding:0 15px;--p-chip-remove-icon-size: .75rem;--p-chip-remove-icon-focus-ring-width: var(--p-focus-ring-width);--p-chip-remove-icon-focus-ring-style: var(--p-focus-ring-style);--p-chip-remove-icon-focus-ring-color: var(--p-focus-ring-color);--p-chip-remove-icon-focus-ring-offset: var(--p-focus-ring-offset);--p-chip-remove-icon-focus-ring-shadow: var(--p-form-field-focus-ring-shadow);--p-chip-icon-size: .75rem;--p-chip-image-width: 2rem;--p-chip-image-height: 2rem;--p-chip-border-radius: 16px;--p-chip-padding-x: .25rem;--p-chip-padding-y: .5rem;--p-chip-gap: .25rem;--p-chip-transition-duration: var(--p-transition-duration);--p-chip-remove-icon-color: var(--input-text);--p-chip-icon-color: var(--input-text);--p-chip-background: var(--content-bg);--p-chip-color: var(--input-text);--p-checkbox-icon-size: .875rem;--p-checkbox-icon-color: var(--p-form-field-color);--p-checkbox-icon-checked-color: var(--p-primary-contrast-color);--p-checkbox-icon-checked-hover-color: var(--p-primary-contrast-color);--p-checkbox-icon-disabled-color: var(--p-form-field-disabled-color);--p-checkbox-icon-lg-size: 1rem;--p-checkbox-icon-sm-size: .75rem;--p-checkbox-border-radius: var(--p-border-radius-sm);--p-checkbox-width: 1rem;--p-checkbox-height: 1rem;--p-checkbox-background: var(--p-form-field-background);--p-checkbox-checked-background: var(--p-primary-color);--p-checkbox-checked-hover-background: var(--p-primary-hover-color);--p-checkbox-disabled-background: var(--p-form-field-disabled-background);--p-checkbox-filled-background: var(--p-form-field-filled-background);--p-checkbox-border-color: var(--p-form-field-border-color);--p-checkbox-hover-border-color: var(--p-form-field-hover-border-color);--p-checkbox-focus-border-color: var(--p-form-field-border-color);--p-checkbox-checked-border-color: var(--p-primary-color);--p-checkbox-checked-hover-border-color: var(--p-primary-hover-color);--p-checkbox-checked-focus-border-color: var(--p-primary-color);--p-checkbox-checked-disabled-border-color: var(--p-form-field-border-color);--p-checkbox-invalid-border-color: var(--p-form-field-invalid-border-color);--p-checkbox-shadow: var(--p-form-field-shadow);--p-checkbox-transition-duration: var(--p-form-field-transition-duration);--p-checkbox-lg-width: 1.5rem;--p-checkbox-lg-height: 1.5rem;--p-checkbox-sm-width: 1rem;--p-checkbox-sm-height: 1rem;--p-checkbox-focus-ring-width: var(--p-focus-ring-width);--p-checkbox-focus-ring-style: var(--p-focus-ring-style);--p-checkbox-focus-ring-color: var(--p-focus-ring-color);--p-checkbox-focus-ring-offset: var(--p-focus-ring-offset);--p-checkbox-focus-ring-shadow: var(--p-focus-ring-shadow);--p-multiselect-empty-message-padding: var(--p-list-option-padding);--p-multiselect-clear-icon-color: var(--p-form-field-icon-color);--p-multiselect-chip-border-radius: var(--p-border-radius-sm);--p-multiselect-option-group-background: var(--p-list-option-group-background);--p-multiselect-option-group-color: var(--p-list-option-group-color);--p-multiselect-option-group-font-weight: var(--p-list-option-group-font-weight);--p-multiselect-option-group-padding: var(--p-list-option-group-padding);--p-multiselect-option-focus-background: var(--p-list-option-focus-background);--p-multiselect-option-selected-background: var(--p-list-option-selected-background);--p-multiselect-option-selected-focus-background: var(--p-list-option-selected-focus-background);--p-multiselect-option-color: var(--p-list-option-color);--p-multiselect-option-focus-color: var(--p-list-option-focus-color);--p-multiselect-option-selected-color: var(--p-list-option-selected-color);--p-multiselect-option-selected-focus-color: var(--p-list-option-selected-focus-color);--p-multiselect-option-padding: .25rem;--p-multiselect-option-border-radius: var(--p-list-option-border-radius);--p-multiselect-option-gap: .5rem;--p-multiselect-list-padding: var(--p-list-padding);--p-multiselect-list-gap: var(--p-list-gap);--p-multiselect-list-header-padding: .25rem;--p-multiselect-overlay-background: var(--p-overlay-select-background);--p-multiselect-overlay-border-color: var(--p-overlay-select-border-color);--p-multiselect-overlay-border-radius: var(--p-overlay-select-border-radius);--p-multiselect-overlay-color: var(--p-overlay-select-color);--p-multiselect-overlay-shadow: var(--p-overlay-select-shadow);--p-multiselect-dropdown-width: 1.25rem;--p-multiselect-dropdown-color: var(--input-text);--p-multiselect-background: var(--comfy-input-bg);--p-multiselect-disabled-background: var(--p-form-field-disabled-background);--p-multiselect-filled-background: var(--p-form-field-filled-background);--p-multiselect-filled-hover-background: var(--p-form-field-filled-hover-background);--p-multiselect-filled-focus-background: var(--p-form-field-filled-focus-background);--p-multiselect-border-color: var(--border-color);--p-multiselect-hover-border-color: var(--border-color);--p-multiselect-focus-border-color: var(--border-color);--p-multiselect-invalid-border-color: var(--p-form-field-invalid-border-color);--p-multiselect-color: var(--p-form-field-color);--p-multiselect-disabled-color: var(--p-form-field-disabled-color);--p-multiselect-placeholder-color:var(--descrip-text);--p-multiselect-invalid-placeholder-color: var(--p-form-field-invalid-placeholder-color);--p-multiselect-shadow: var(--p-form-field-shadow);--p-multiselect-padding-x: 8px;--p-multiselect-padding-y: 2px;--p-multiselect-border-radius: 10px;--p-multiselect-transition-duration: var(--p-form-field-transition-duration);--p-multiselect-lg-font-size: var(--p-form-field-lg-font-size);--p-multiselect-lg-padding-x: var(--p-form-field-lg-padding-x);--p-multiselect-lg-padding-y: var(--p-form-field-lg-padding-y);--p-multiselect-sm-font-size: var(--p-form-field-sm-font-size);--p-multiselect-sm-padding-x: var(--p-form-field-sm-padding-x);--p-multiselect-sm-padding-y: var(--p-form-field-sm-padding-y);--p-multiselect-focus-ring-width: var(--p-form-field-focus-ring-width);--p-multiselect-focus-ring-style: var(--p-form-field-focus-ring-style);--p-multiselect-focus-ring-color: var(--p-form-field-focus-ring-color);--p-multiselect-focus-ring-offset: var(--p-form-field-focus-ring-offset);--p-multiselect-focus-ring-shadow: var(--p-form-field-focus-ring-shadow);--p-icon-size: .7rem;--p-inputtext-padding-y: .15rem;--p-inputtext-padding-x: .25rem}.easyuse-multiselect .p-multiselect-list{flex-wrap:wrap;flex-direction:row}.comfyui-easyuse .easyuse-multiselect{font-size:11px;--p-multiselect-padding-y: 2px;padding:0 10px;--p-multiselect-border-radius: var(--p-form-field-border-radius);--p-multiselect-placeholder-color: #d4d4d8;--p-multiselect-dropdown-color: var(--input-text);--p-multiselect-border-color: var(--p-form-field-border-color);--p-multiselect-hover-border-color: var(--p-form-field-hover-border-color);--p-multiselect-focus-border-color: var(--p-form-field-focus-border-color)}.easyuse-multiangle-widget{font-size:12px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.easyuse-multiangle-tabs{overflow-y:auto;margin-bottom:-1px}.tab-item{display:flex;align-items:center;gap:4px;padding:6px 10px;border-radius:6px 6px 0 0;background:transparent;border:1px solid transparent;cursor:pointer;transition:all .2s;font-size:11px;color:var(--p-text-muted-color);margin-bottom:-1px}.tab-item:hover{color:var(--p-primary-color)}.tab-item.active{background:#000;color:var(--p-primary-color);border:1px solid var(--p-content-border-color);border-bottom-color:#000;z-index:2;font-weight:600}.tab-number{font-weight:inherit;font-size:11px}.easyuse-multiangle-content{border:1px solid var(--p-content-border-color);background:var(--p-content-background);border-radius:0 6px 6px 0;overflow:hidden}.tab-close{font-size:10px;opacity:.7;transition:opacity .2s}.tab-close:hover{opacity:1}.tab-add-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;background:transparent;border:none;cursor:pointer;transition:all .2s;color:var(--p-text-secondary-color)}.tab-add-btn:hover{border-color:var(--p-primary-color);color:var(--p-primary-color);background:transparent}.tab-add-btn i{font-size:10px}.easyuse-multiangle-widget{font-size:12px;--p-slider-handle-width: 16px;--p-slider-handle-height: 16px;--p-slider-handle-border-radius: 50%;--p-slider-handle-background: var(--p-content-border-color);--p-slider-handle-hover-background: var(--p-content-border-color);--p-slider-handle-focus-ring-width: var(--p-focus-ring-width);--p-slider-handle-focus-ring-style: var(--p-focus-ring-style);--p-slider-handle-focus-ring-color: var(--p-focus-ring-color);--p-slider-handle-focus-ring-offset: var(--p-focus-ring-offset);--p-slider-handle-focus-ring-shadow: var(--p-focus-ring-shadow);--p-slider-handle-content-border-radius: 50%;--p-slider-handle-content-hover-background: var(--p-content-background);--p-slider-handle-content-width: 8px;--p-slider-handle-content-height: 8px;--p-slider-handle-content-shadow: 0px .5px 0px 0px rgba(0, 0, 0, .08), 0px 1px 1px 0px rgba(0, 0, 0, .14);--p-slider-range-background: var(--p-primary-color);--p-slider-track-background: var(--p-content-border-color);--p-slider-track-border-radius: var(--p-content-border-radius);--p-slider-track-size: 3px;--p-slider-transition-duration: var(--p-transition-duration);--p-slider-handle-content-background: var(--p-surface-0)}.easyuse-multiangle-cube-face{border:4px solid var(--p-content-border-color);color:var(--p-text-muted-color);background:rgba(from var(--p-content-color) r g b / .1)}.easyuse-multiangle-cube-face:hover{border-color:var(--p-primary-color);box-shadow:0 0 10px var(--p-primary-color)}.easyuse-multiangle-cube{position:relative;overflow:hidden;cursor:grab;perspective:800px;height:200px;border-radius:0 4px 8px 8px}.easyuse-multiangle-cube:active{cursor:grabbing}.easyuse-multiangle-cube .settings-icon{position:absolute;top:6px;left:6px;color:#ddd;cursor:pointer;z-index:20}.easyuse-multiangle-cube .settings-icon i{font-size:12px}.easyuse-multiangle-cube .settings-icon:hover{color:var(--p-primary-color)}.easyuse-multiangle-cube .settings-dropdown{position:absolute;top:100%;left:0;background:var(--p-content-background);border:1px solid var(--p-content-border-color);border-radius:4px;padding:4px;display:flex;flex-direction:column;gap:4px;min-width:100px;box-shadow:0 2px 10px #0003}.settings-item{display:flex;align-items:center;gap:6px;font-size:10px;color:var(--p-text-color)}.settings-item label{cursor:pointer}.easyuse-multiangle-cube:not(.is-hollow) .easyuse-multiangle-cube-face{background:var(--p-content-background)}.easyuse-cube-face-label{width:24px;height:24px;border-radius:50%;background:#000000e6;display:flex;align-items:center;justify-content:center;font-size:10px;color:#ffffffe6;pointer-events:none;line-height:1}.easyuse-multiangle-cube .reset-icon{position:absolute;top:6px;right:6px;color:#ddd;cursor:pointer}.easyuse-multiangle-cube .reset-icon i{font-size:12px!important}.easyuse-multiangle-cube .reset-icon:hover{color:var(--p-primary-color)}.easyuse-mulitangle-slider{font-size:10px;padding-bottom:14px}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}img[data-v-604a4248]{transition:transform 1s cubic-bezier(.2,0,.4,1)}.lazy-image-container[data-v-4bfc03bf]{position:relative;width:100%;height:100%}.lazy-image-placeholder[data-v-4bfc03bf],.lazy-image-error[data-v-4bfc03bf]{transition:background-color .2s ease}img[data-v-4bfc03bf]{transition:opacity .3s ease}.selector-card-wrapper[data-v-88af28b0]{width:100%}.card-item[data-v-88af28b0]{border:1px solid var(--border-color);border-radius:var(--border-radius);background:var(--comfy-menu-bg);border-radius:8px;overflow:hidden;transition:all .2s ease;box-shadow:0 1px 3px #0000001a}.dark .card-item[data-v-88af28b0]{background-color:var(--surface-900);border-color:var(--surface-700)}.card-item[data-v-88af28b0]:hover{box-shadow:0 4px 12px #00000026;border:1px solid var(--input-text)}.card-item.clickable[data-v-88af28b0]{cursor:pointer}.card-item.selected[data-v-88af28b0]{border:1px solid var(--success-color, #4CAF50)}.card-image-container[data-v-88af28b0]{position:relative}.card-image[data-v-88af28b0]{width:100%;height:80px;object-fit:cover;transition:transform .2s ease;background:var(--bg-color)}.card-item:hover .card-image[data-v-88af28b0]{transform:scale(1.05)}.selection-badge[data-v-88af28b0]{position:absolute;top:4px;right:4px;width:10px;height:10px;background-color:var(--success-color, #4CAF50);border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px #0000004d;z-index:10;animation:scaleIn-88af28b0 .2s ease-out}.selection-badge i[data-v-88af28b0]{font-size:6px;font-weight:700;color:#fff}@keyframes scaleIn-88af28b0{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}.card-actions[data-v-88af28b0]{position:absolute;top:8px;left:8px;display:flex;gap:4px;opacity:0;transition:opacity .2s ease}.card-item:hover .card-actions[data-v-88af28b0]{opacity:1}.card-content[data-v-88af28b0]{padding:2px 4px}.card-title[data-v-88af28b0]{color:var(--input-text);font-size:8px;font-weight:400;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.25;transition:color .2s ease}.dark .card-title[data-v-88af28b0]{color:var(--surface-0)}.card-item.selected .card-title[data-v-88af28b0]{color:var(--primary-600);font-weight:500}.dark .card-item.selected .card-title[data-v-88af28b0]{color:var(--primary-300)}.list-item[data-v-c93b1734]{display:inline-block;position:relative}.list-item__tag[data-v-c93b1734]{display:inline-block;vertical-align:middle;margin-top:8px;margin-right:8px;padding:4px;color:var(--input-text);background-color:var(--bg-color);border-radius:var(--border-radius);border:1px solid var(--border-color);font-size:11px;cursor:pointer;overflow:hidden;position:relative;transition:all .2s ease}.list-item__tag[data-v-c93b1734]:hover{filter:brightness(1.2)}.list-item__tag input[type=checkbox][data-v-c93b1734]{--ring-color: transparent;position:relative;box-shadow:none;background:linear-gradient(135deg,var(--comfy-menu-bg) 0%,var(--comfy-input-bg) 60%);display:inline-block;flex-shrink:0;vertical-align:middle;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border-color);background-origin:border-box;padding:0;width:1rem;height:1rem;border-radius:4px;color:var(--theme-color);-webkit-user-select:none;user-select:none;margin-right:4px}.list-item__tag input[type=checkbox][data-v-c93b1734]:checked{border:1px solid var(--theme-color);background-color:var(--theme-color);background-image:url("data:image/svg+xml,%3csvg viewBox=\'0 0 16 16\' fill=\'white\' xmlns=\'http://www.w3.org/2000/svg\'%3e%3cpath d=\'M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z\'/%3e%3c/svg%3e")}.list-item-content[data-v-c93b1734]{margin:0 4px;vertical-align:middle;display:inline-block}.list-title[data-v-c93b1734]{color:inherit;font-size:10px;font-weight:500;margin:0;line-height:1.4;word-break:break-word;display:block}.list-description[data-v-c93b1734]{color:var(--input-text);font-size:10px;line-height:1.4;margin:2px 0 0;opacity:.8;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}@media (max-width: 768px){.list-item__tag[data-v-c93b1734]{padding:6px;margin-right:6px;margin-top:6px}}@media (max-width: 480px){.list-item__tag[data-v-c93b1734]{padding:4px;margin-right:4px;margin-top:4px}.list-title[data-v-c93b1734]{font-size:11px}.list-description[data-v-c93b1734]{font-size:9px}}.easyuse-styles-selector{position:relative;height:calc(100% - 10px);--p-inputtext-padding-y: 4px;--p-form-field-padding-x: 6px;--p-button-sm-padding-y: 0px;--p-icon-size: 12px;--p-button-icon-only-width: 24px;--p-button-sm-font-size: 12px;--p-togglebutton-content-left: 2px;--p-togglebutton-content-top: 2px}.easyuse-styles-selector .p-inputtext{font-size:11px}.easyuse-styles-selector .p-togglebutton{padding:0 6px}.easyuse-styles-selector-content{list-style:none;padding:0;margin:0;min-height:150px;height:calc(100% - 12px);overflow-y:auto;overflow-x:hidden}.easyuse-styles-selector-content .grid-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));padding:4px 0;gap:8px}.easyuse-styles-selector-content .list-container{list-style:none;padding:6px 0;margin:0;display:flex;flex-wrap:wrap}.easyuse-styles-selector-previewer{position:absolute;top:0;left:-150px;width:130px;padding:8px;z-index:2;border-radius:var(--border-radius);background:var(--comfy-menu-bg);overflow:hidden;box-shadow:0 4px 12px #00000026}.easyuse-styles-selector-previewer__text{color:var(--input-text);word-wrap:break-word}.easyuse-styles-selector-previewer__text .title{line-height:1;font-size:10px}.easyuse-styles-selector-previewer__text h6{line-height:1;font-size:8px;margin:8px 0;white-space:wrap}.easyuse-styles-selector-previewer__text h6 .comfyui-easyuse-success{color:#22c55e;font-weight:600}.easyuse-styles-selector-previewer__text h6 .comfyui-easyuse-error{color:#ef4444;font-weight:600}.easyuse-styles-selector-previewer__text h6 span:last-child{color:var(--input-text);font-weight:400;margin-left:4px}\n@charset "UTF-8";.dom-widget[data-v-f8c9efe3]>*{@apply h-full w-full;}.easyuse-model-info{color:#fff;max-width:90vw;font-family:var(--font-family)}.easyuse-model-content{display:flex;flex-direction:column;overflow:hidden}.easyuse-model-header{margin:0 0 15px}.easyuse-model-header-remark{display:flex;align-items:center;margin-top:5px}.easyuse-model-info h2{text-align:left;margin:0}.easyuse-model-info h5{text-align:left;margin:0 15px 0 0;font-weight:400;color:var(--descrip-text)}.easyuse-model-info p{margin:5px 0}.easyuse-model-info a{color:var(--theme-color-light)}.easyuse-model-info a:hover{text-decoration:underline}.easyuse-model-tags-list{display:flex;flex-wrap:wrap;list-style:none;gap:10px;max-height:200px;overflow:auto;margin:10px 0;padding:0}.easyuse-model-tag{background-color:var(--comfy-input-bg);border:2px solid var(--border-color);color:var(--input-text);display:flex;align-items:center;gap:5px;border-radius:5px;padding:2px 5px;cursor:pointer}.easyuse-model-tag--selected span:before{content:"✅";position:absolute;background-color:var(--theme-color-light);left:0;top:0;right:0;bottom:0;text-align:center}.easyuse-model-tag:hover{border:2px solid var(--theme-color-light)}.easyuse-model-tag p{margin:0}.easyuse-model-tag span{text-align:center;border-radius:5px;background-color:var(--theme-color-light);padding:2px;position:relative;min-width:20px;overflow:hidden;color:#fff}.easyuse-model-metadata .comfy-modal-content{max-width:100%}.easyuse-model-metadata label{margin-right:1ch;color:#ccc}.easyuse-model-metadata span{color:var(--theme-color-light)}.easyuse-preview{max-width:660px;margin-right:15px;position:relative}.easyuse-preview-group{position:relative;overflow:hidden;border-radius:.5rem;width:660px}.easyuse-preview-list{display:flex;flex-wrap:nowrap;width:100%;transition:all .5s ease-in-out}.easyuse-preview-list.no-transition{transition:none}.easyuse-preview-slide{display:flex;flex-basis:calc(50% - 5px);flex-grow:0;flex-shrink:0;position:relative;justify-content:center;align-items:center;padding-right:5px;padding-left:0}.easyuse-preview-slide:nth-child(2n){padding-left:5px;padding-right:0}.easyuse-preview-slide-content{position:relative;min-height:150px;width:100%}.easyuse-preview-slide-content .save{position:absolute;right:6px;z-index:12;bottom:6px;display:flex;align-items:center;height:26px;padding:0 9px;color:var(--input-text);font-size:12px;line-height:26px;background:#00000080;border-radius:13px;cursor:pointer;min-width:80px;text-align:center}.easyuse-preview-slide-content .save:hover{filter:brightness(120%);will-change:auto}.easyuse-preview-slide-content img{border-radius:14px;object-position:center center;max-width:100%;max-height:700px;border-style:none;vertical-align:middle}.easyuse-preview button{position:absolute;z-index:10;top:50%;display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:15px;border:1px solid rgba(66,63,78,.15);background-color:#423f4e80;color:#fffc;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transform:translateY(-50%)}.easyuse-preview button.left{left:10px}.easyuse-preview button.right{right:10px}.easyuse-model-detail{margin-top:16px;overflow:hidden;border:1px solid var(--border-color);border-radius:8px;width:300px}.easyuse-model-detail-head{height:40px;padding:0 10px;font-weight:500;font-size:14px;font-style:normal;line-height:40px}.easyuse-model-detail-body{box-sizing:border-box;font-size:12px}.easyuse-model-detail-item{display:flex;justify-content:flex-start;border-top:1px solid var(--border-color)}.easyuse-model-detail-item-label{flex-shrink:0;width:88px;padding-top:5px;padding-bottom:5px;padding-left:10px;border-right:1px solid var(--border-color);color:var(--input-text);font-weight:400}.easyuse-model-detail-item-value{display:flex;flex-wrap:wrap;padding:5px 10px;color:var(--input-text)}.easyuse-model-detail-textarea{border-top:1px solid var(--border-color);padding:10px;height:100px;overflow-y:auto;font-size:12px}.easyuse-model-detail-textarea textarea{width:100%;height:100%;border:0;background-color:transparent;color:var(--input-text)}.easyuse-model-detail-textarea textarea::placeholder{color:var(--descrip-text)}.easyuse-model-detail-textarea.empty{display:flex;justify-content:center;align-items:center;color:var(--descrip-text)}.easyuse-model-notes{background-color:#00000040;padding:5px;margin-top:5px}.easyuse-model-notes:empty{display:none}.easyuse-account-user{font-size:10px;color:var(--descrip-text);text-align:center}.easyuse-account-user-info{display:flex;justify-content:space-between;align-items:center;padding-bottom:10px;cursor:pointer}.easyuse-account-user-info .user{display:flex;align-items:center}.easyuse-account-user-info .edit{padding:5px 10px;background:var(--comfy-menu-bg);border-radius:4px}.easyuse-account-user-info:hover{filter:brightness(110%)}.easyuse-account-user-info h5{margin:0;font-size:10px;text-align:left}.easyuse-account-user-info h6{margin:0;font-size:8px;text-align:left;font-weight:300}.easyuse-account-user-info .remark{margin-top:4px}.easyuse-account-user-info .avatar{width:36px;height:36px;background:var(--comfy-input-bg);border-radius:50%;margin-right:5px;display:flex;justify-content:center;align-items:center;font-size:16px;overflow:hidden}.easyuse-account-user-info .avatar img{width:100%;height:100%}.easyuse-account-dialog{width:600px}.easyuse-account-dialog-main a,.easyuse-account-dialog-main a:visited{font-weight:400;color:var(--theme-color-light)}.easyuse-account-dialog-item{display:flex;justify-content:flex-start;align-items:center;padding:10px 0;border-bottom:1px solid var(--border-color)}.easyuse-account-dialog-item input{padding:5px;margin-right:5px}.easyuse-account-dialog-item input.key{flex:1}.easyuse-account-dialog-item button{cursor:pointer;margin-left:5px!important;padding:5px!important;font-size:16px!important}.easyuse-account-dialog-item button:hover{filter:brightness(120%)}.easyuse-account-dialog-item button.choose{background:var(--theme-color)}.easyuse-account-dialog-item button.delete{background:var(--error-color)}.easy-dropdown,.easy-nested-dropdown{position:relative;box-sizing:border-box;background-color:#171717;box-shadow:0 4px 4px #ffffff40;padding:0;margin:0;list-style:none;z-index:1000;overflow:visible;max-height:fit-content;max-width:fit-content}.easy-dropdown{position:absolute;border-radius:0}.easy-dropdown li.item,.easy-nested-dropdown li.item{font-weight:400;min-width:max-content}.easy-dropdown li.folder,.easy-nested-dropdown li.folder{cursor:default;position:relative;border-right:3px solid cyan}.easy-dropdown li.folder:after,.easy-nested-dropdown li.folder:after{content:">";position:absolute;right:2px;font-weight:400}.easy-dropdown li,.easy-nested-dropdown li{padding:4px 10px;cursor:pointer;font-family:system-ui;font-size:.7rem;position:relative}.easy-nested-dropdown{position:absolute;top:0;left:100%;margin:0;border:none;display:none}.easy-dropdown li.selected>.easy-nested-dropdown,.easy-nested-dropdown li.selected>.easy-nested-dropdown{display:block;border:none}.easy-dropdown li.selected,.easy-nested-dropdown li.selected{background-color:#e5e5e5;border:none}#crystools-root-easyuse{flex-direction:row;justify-content:center;flex-shrink:1;width:min-content;min-width:max-content;height:100%;margin:0 auto}#crystools-root-easyuse .crystools-monitor-container{width:100%;cursor:crosshair;display:flex;flex-wrap:wrap;flex-direction:row;justify-content:flex-end;gap:5px;height:100%}#crystools-root-easyuse .crystools-monitor-container .crystools-monitor{background-color:var(--comfy-input-bg);position:relative;align-items:center;flex-direction:row;width:40px;height:100%}#crystools-root-easyuse .crystools-monitor-container .crystools-monitor .crystools-text{font-size:10px;text-align:right;margin-left:3px;position:absolute;font-weight:100;bottom:2px;z-index:10}#crystools-root-easyuse .crystools-monitor-container .crystools-content{position:relative;height:100%}#crystools-root-easyuse .crystools-monitor-container .crystools-slider{position:absolute;height:100%;width:0;box-shadow:inset 2px 2px 10px #0003}#crystools-root-easyuse .crystools-monitor-container .crystools-label{position:relative;width:100%;color:var(--input-text);font-weight:500;font-size:11px;left:2px;top:4px;text-align:right}:root{--theme-color:var(--p-primary-color, #60a5fa);--theme-color-light: var(--p-primary-hover-color, #93c5fd);--success-color: #52c41a;--error-color: #ff4d4f;--warning-color: #faad14;--font-family: Inter, -apple-system, BlinkMacSystemFont, Helvetica Neue, sans-serif;--p-inputtext-background: var(--p-form-field-background);--p-inputtext-disabled-background: var(--p-form-field-disabled-background);--p-inputtext-filled-background: var(--p-form-field-filled-background);--p-inputtext-filled-focus-background: var(--p-form-field-filled-focus-background);--p-inputtext-border-color: var(--p-form-field-border-color);--p-inputtext-hover-border-color: var(--p-form-field-hover-border-color);--p-inputtext-focus-border-color: var(--p-form-field-focus-border-color);--p-inputtext-invalid-border-color: var(--p-form-field-invalid-border-color);--p-inputtext-color: var(--p-form-field-color);--p-inputtext-disabled-color: var(--p-form-field-disabled-color);--p-inputtext-placeholder-color: var(--p-form-field-placeholder-color);--p-inputtext-shadow: var(--p-form-field-shadow);--p-inputtext-padding-x: var(--p-form-field-padding-x);--p-inputtext-padding-y: var(--p-form-field-padding-y);--p-inputtext-border-radius: var(--p-form-field-border-radius);--p-inputtext-focus-ring-width: var(--p-form-field-focus-ring-width);--p-inputtext-focus-ring-style: var(--p-form-field-focus-ring-style);--p-inputtext-focus-ring-color: var(--p-form-field-focus-ring-color);--p-inputtext-focus-ring-offset: var(--p-form-field-focus-ring-offset);--p-inputtext-focus-ring-shadow: var(--p-form-field-focus-ring-shadow);--p-inputtext-transition-duration: var(--p-form-field-transition-duration);--p-inputtext-sm-font-size: .875rem;--p-inputtext-sm-padding-x: .625rem;--p-inputtext-sm-padding-y: .375rem;--p-inputtext-lg-font-size: 1.125rem;--p-inputtext-lg-padding-x: .875rem;--p-inputtext-lg-padding-y: .625rem;--p-tooltip-max-width: 12.5rem;--p-tooltip-gutter: .25rem;--p-tooltip-shadow: var(--p-overlay-popover-shadow);--p-tooltip-padding: .5rem .75rem;--p-tooltip-border-radius: var(--p-overlay-popover-border-radius);--p-tooltip-background: var(--p-surface-700);--p-tooltip-color: var(--p-surface-0)}.comfyui-easyuse-theme,.comfyui-easyuse-primary{color:var(--theme-color-light)}.comfyui-easyuse-theme.point:hover,.comfyui-easyuse-primary.point:hover{opacity:.8}.comfyui-easyuse-success{color:var(--success-color)}.comfyui-easyuse-success.point:hover{opacity:.8}.comfyui-easyuse-error{color:var(--error-color)}.comfyui-easyuse-error.point:hover{opacity:.8}.comfyui-easyuse-warning,.comfyui-easyuse--warn{color:var(--warning-color)}.comfyui-easyuse-warning.point:hover,.comfyui-easyuse--warn.point:hover{opacity:.8}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.grid{display:grid}.gap-0\\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-10{gap:2.5rem}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-2\\.5{gap:.625rem}.gap-20{gap:5rem}.gap-3{gap:.75rem}.gap-3\\.5{gap:.875rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-7{gap:1.75rem}.gap-8{gap:2rem}.gap-\\[0\\.28rem\\]{gap:.28rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.gap-y-6{row-gap:1.5rem}@media (min-width: 576px){.sm\\:col-span-4{grid-column:span 4/span 4}.sm\\:col-span-6{grid-column:span 6/span 6}.sm\\:ml-8{margin-left:2rem}.sm\\:mt-0{margin-top:0}.sm\\:flex{display:flex}.sm\\:h-60{height:15rem}.sm\\:\\!w-64{width:16rem!important}.sm\\:w-40{width:10rem}.sm\\:w-44{width:11rem}.sm\\:w-56{width:14rem}.sm\\:w-60{width:15rem}.sm\\:w-64{width:16rem}.sm\\:w-80{width:20rem}.sm\\:w-96{width:24rem}.sm\\:w-\\[30rem\\]{width:30rem}.sm\\:w-auto{width:auto}.sm\\:min-w-\\[30rem\\]{min-width:30rem}.sm\\:flex-row{flex-direction:row}.sm\\:flex-col{flex-direction:column}.sm\\:flex-nowrap{flex-wrap:nowrap}.sm\\:items-start{align-items:flex-start}.sm\\:items-end{align-items:flex-end}.sm\\:items-center{align-items:center}.sm\\:justify-center{justify-content:center}.sm\\:justify-between{justify-content:space-between}.sm\\:gap-2{gap:.5rem}.sm\\:p-20{padding:5rem}.sm\\:px-10{padding-left:2.5rem;padding-right:2.5rem}.sm\\:py-10{padding-bottom:2.5rem;padding-top:2.5rem}.sm\\:py-5{padding-bottom:1.25rem;padding-top:1.25rem}.sm\\:pt-32{padding-top:8rem}.sm\\:text-left{text-align:left}.sm\\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 768px){.md\\:-bottom-12{bottom:-3rem}.md\\:-bottom-28{bottom:-7rem}.md\\:-bottom-8{bottom:-2rem}.md\\:-bottom-\\[26rem\\]{bottom:-26rem}.md\\:-left-12{left:-3rem}.md\\:-left-28{left:-7rem}.md\\:-left-32{left:-8rem}.md\\:-left-4{left:-1rem}.md\\:-left-48{left:-12rem}.md\\:-left-\\[22rem\\]{left:-22rem}.md\\:bottom-0{bottom:0}.md\\:left-10{left:2.5rem}.md\\:left-\\[32rem\\]{left:32rem}.md\\:left-\\[42rem\\]{left:42rem}.md\\:top-1\\/2{top:50%}.md\\:top-32{top:8rem}.md\\:top-8{top:2rem}.md\\:col-span-2{grid-column:span 2/span 2}.md\\:col-span-4{grid-column:span 4/span 4}.md\\:col-span-6{grid-column:span 6/span 6}.md\\:ml-auto{margin-left:auto}.md\\:block{display:block}.md\\:flex{display:flex}.md\\:hidden{display:none}.md\\:h-\\[20rem\\]{height:20rem}.md\\:h-\\[32rem\\]{height:32rem}.md\\:\\!w-80{width:20rem!important}.md\\:w-2\\/12{width:16.666667%}.md\\:w-40{width:10rem}.md\\:w-5\\/12{width:41.666667%}.md\\:w-56{width:14rem}.md\\:w-6\\/12{width:50%}.md\\:w-60{width:15rem}.md\\:w-8\\/12{width:66.666667%}.md\\:w-80{width:20rem}.md\\:w-\\[100rem\\]{width:100rem}.md\\:w-\\[26rem\\]{width:26rem}.md\\:w-\\[30rem\\]{width:30rem}.md\\:w-\\[50rem\\]{width:50rem}.md\\:w-\\[52rem\\]{width:52rem}.md\\:w-\\[60rem\\]{width:60rem}.md\\:w-\\[95rem\\]{width:95rem}.md\\:w-screen{width:100vw}.md\\:flex-initial{flex:0 1 auto}.md\\:-translate-y-1\\/2{--tw-translate-y: -50% }.md\\:-translate-y-1\\/2,.md\\:translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.md\\:translate-x-0{--tw-translate-x: 0px }.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:flex-row{flex-direction:row}.md\\:flex-col{flex-direction:column}.md\\:items-end{align-items:flex-end}.md\\:items-center{align-items:center}.md\\:justify-start{justify-content:flex-start}.md\\:justify-center{justify-content:center}.md\\:gap-20{gap:5rem}.md\\:gap-4{gap:1rem}.md\\:p-5{padding:1.25rem}.md\\:p-8{padding:2rem}}@media (min-width: 992px){.lg\\:left-20{left:5rem}.lg\\:left-\\[36rem\\]{left:36rem}.lg\\:left-\\[50rem\\]{left:50rem}.lg\\:col-span-1{grid-column:span 1/span 1}.lg\\:col-span-2{grid-column:span 2/span 2}.lg\\:col-span-4{grid-column:span 4/span 4}.lg\\:col-span-6{grid-column:span 6/span 6}.lg\\:mb-0{margin-bottom:0}.lg\\:mt-0{margin-top:0}.lg\\:mt-20{margin-top:5rem}.lg\\:flex{display:flex}.lg\\:hidden{display:none}.lg\\:h-10{height:2.5rem}.lg\\:h-32{height:8rem}.lg\\:h-\\[28rem\\]{height:28rem}.lg\\:\\!w-\\[30rem\\]{width:30rem!important}.lg\\:w-3\\/12{width:25%}.lg\\:w-32{width:8rem}.lg\\:w-\\[28rem\\]{width:28rem}.lg\\:w-\\[64rem\\]{width:64rem}.lg\\:w-fit{width:-moz-fit-content;width:fit-content}.lg\\:max-w-6xl{max-width:72rem}.lg\\:flex-row{flex-direction:row}.lg\\:gap-0{gap:0}.lg\\:rounded-2xl{border-radius:1rem}.lg\\:rounded-3xl{border-radius:1.5rem}.lg\\:rounded-xl{border-radius:.75rem}.lg\\:p-7{padding:1.75rem}.lg\\:px-2{padding-left:.5rem;padding-right:.5rem}.lg\\:px-20{padding-left:5rem;padding-right:5rem}.lg\\:px-56{padding-left:14rem;padding-right:14rem}.lg\\:px-8{padding-left:2rem;padding-right:2rem}.lg\\:px-9{padding-left:2.25rem;padding-right:2.25rem}.lg\\:py-20{padding-bottom:5rem;padding-top:5rem}.lg\\:py-7{padding-bottom:1.75rem;padding-top:1.75rem}.lg\\:pt-0{padding-top:0}.lg\\:text-2xl{font-size:1.5rem;line-height:2rem}.lg\\:text-5xl{font-size:3rem;line-height:1}.lg\\:text-base{font-size:1rem;line-height:1.5rem}.lg\\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width: 1200px){.xl\\:-left-12{left:-3rem}.xl\\:-left-28{left:-7rem}.xl\\:bottom-0{bottom:0}.xl\\:left-36{left:9rem}.xl\\:left-\\[42rem\\]{left:42rem}.xl\\:left-\\[60rem\\]{left:60rem}.xl\\:col-span-3{grid-column:span 3/span 3}.xl\\:col-span-4{grid-column:span 4/span 4}.xl\\:col-span-6{grid-column:span 6/span 6}.xl\\:block{display:block}.xl\\:flex{display:flex}.xl\\:hidden{display:none}.xl\\:h-\\[36\\.25rem\\]{height:36.25rem}.xl\\:\\!w-40{width:10rem!important}.xl\\:w-3\\/12{width:25%}.xl\\:w-6\\/12{width:50%}.xl\\:w-96{width:24rem}.xl\\:w-\\[29rem\\]{width:29rem}.xl\\:max-w-36{max-width:9rem}.xl\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\\:flex-row{flex-direction:row}.xl\\:items-start{align-items:flex-start}.xl\\:items-center{align-items:center}.xl\\:gap-1{gap:.25rem}.xl\\:gap-6{gap:1.5rem}.xl\\:text-left{text-align:left}}.comfyui-easyuse-toast{position:fixed;z-index:99999;top:0;left:0;height:0;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:start}.comfyui-easyuse-toast-container{position:relative;height:fit-content;padding:4px;margin-top:-100px;opacity:0;z-index:3;-webkit-transition:all .3s ease-in-out;-khtml-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-ms-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.comfyui-easyuse-toast-container:last-child{z-index:1}.comfyui-easyuse-toast-container.show{opacity:1;margin-top:0!important;transform:translateY(0)}.comfyui-easyuse-toast-container:not(.show){z-index:1}.comfyui-easyuse-toast-container>div{position:relative;background:var(--comfy-menu-bg);color:var(--input-text);height:fit-content;box-shadow:0 0 10px #000000e0;padding:9px 12px;border-radius:var(--border-radius);font-size:14px;pointer-events:all;margin-top:40px;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;-o-justify-content:center;justify-content:center;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-toast-container>div>span{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;-o-justify-content:center;justify-content:center;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-toast-container>div>span i{font-size:16px;margin-right:8px}.comfyui-easyuse-toast-container>div>span i.loading{animation:loading-rotate 1s linear infinite}.comfyui-easyuse-toast-container a{cursor:pointer;text-decoration:underline;color:var(--theme-color-light);margin-left:4px;display:inline-block;line-height:1}.comfyui-easyuse-toast-container a:hover{color:var(--theme-color-light);text-decoration:none}@keyframes loading-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.comfyui-easyuse-chooser-dialog{max-width:600px}.comfyui-easyuse-chooser-dialog-title{font-size:18px;font-weight:700;text-align:center;color:var(--input-text);margin:0}.comfyui-easyuse-chooser-dialog-images{margin-top:10px;display:flex;flex-wrap:wrap;width:100%;box-sizing:border-box}.comfyui-easyuse-chooser-dialog-images img{width:50%;height:auto;cursor:pointer;box-sizing:border-box;filter:brightness(80%)}.comfyui-easyuse-chooser-dialog-images img:hover{filter:brightness(100%)}.comfyui-easyuse-chooser-dialog-images img.selected{border:4px solid var(--success-color)}.comfyui-easyuse-chooser-dialog-hidden{display:none;height:0}.comfyui-easyuse-contextmenu{--height: 26px;--padding: 8px;font-family:var(--font-family);position:fixed;top:0;left:0;width:100%;max-width:200px;min-width:100px;min-height:100px;padding:var(--padding) 0;box-shadow:0 0 10px #00000040;background-color:var(--tr-odd-bg-color);border-radius:var(--border-radius);z-index:10;will-change:transform}.comfyui-easyuse-contextmenu-item-divider{height:1px;width:100%;background-color:var(--border-color);margin:var(--padding) 0}.comfyui-easyuse-contextmenu-item-content{height:var(--height);padding:0 12px;cursor:pointer;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-contextmenu-item-content span{font-size:11px;color:var(--input-text);display:-webkit-box;-webkit-line-clamp:1;overflow:hidden;word-break:break-all;text-overflow:ellipsis;-webkit-box-orient:vertical;-webkit-box-flex:1;-ms-flex:1;-webkit-flex:1;flex:1}.comfyui-easyuse-contextmenu-item-content i{color:var(--input-text);margin-left:4px;display:block;width:0;height:0;border-width:4px 4px 0;border-style:solid;border-color:var(--descrip-text) transparent transparent;-webkit-transform:scaleY(.8) rotate(-90deg);-khtml-transform:scaleY(.8) rotate(-90deg);-moz-transform:scaleY(.8) rotate(-90deg);-ms-transform:scaleY(.8) rotate(-90deg);-o-transform:scaleY(.8) rotate(-90deg);transform:scaleY(.8) rotate(-90deg)}.comfyui-easyuse-contextmenu-item-content:hover{background:var(--theme-color)}.comfyui-easyuse-contextmenu-item.disabled .comfyui-easyuse-contextmenu-item-content span{color:var(--border-color);cursor:default}.comfyui-easyuse-contextmenu-item.disabled .comfyui-easyuse-contextmenu-item-content:hover{background:transparent}.comfyui-easyuse-contextmenu-submenu{font-family:var(--font-family);position:absolute;top:0;left:200px;max-width:200px;width:200px;min-width:100px;min-height:--height;padding:var(--padding) 0;box-shadow:0 0 10px #00000040;background-color:var(--tr-odd-bg-color);border-radius:var(--border-radius);z-index:10;will-change:transform}.comfyui-easyuse-contextmenu-model{position:relative}#easyuse-model-thumbnail{display:none;position:fixed;z-index:9999;width:200px;height:auto;opacity:0;-webkit-transition:all .5s cubic-bezier(.55,0,.1,1);-khtml-transition:all .5s cubic-bezier(.55,0,.1,1);-moz-transition:all .5s cubic-bezier(.55,0,.1,1);-ms-transition:all .5s cubic-bezier(.55,0,.1,1);-o-transition:all .5s cubic-bezier(.55,0,.1,1);transition:all .5s cubic-bezier(.55,0,.1,1)}.comfyui-easyuse-slider{width:100%;height:100%;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-slider-item{height:inherit;min-width:25px;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;-o-justify-content:center;justify-content:center;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;-webkit-flex-direction:column;-khtml-flex-direction:column;-moz-flex-direction:column;-ms-flex-direction:column;-o-flex-direction:column;flex-direction:column}.comfyui-easyuse-slider-item-input{height:15px;font-size:10px;color:var(--input-text)}.comfyui-easyuse-slider-item-label{height:15px;border:none;color:var(--descrip-text);font-size:8px}.comfyui-easyuse-slider-item-scroll{width:5px;height:calc(100% - 30px);background:var(--comfy-input-bg);border-radius:10px;position:relative}.comfyui-easyuse-slider-item-bar{width:10px;height:10px;background:linear-gradient(to bottom,var(--input-text),var(--descrip-text));border-radius:100%;box-shadow:0 2px 10px var(--bg-color);position:absolute;top:0;left:-2.5px;cursor:pointer;z-index:1}.comfyui-easyuse-slider-item-area{width:100%;border-radius:20px;position:absolute;bottom:0;background:var(--input-text);z-index:0}.comfyui-easyuse-slider-item.positive .comfyui-easyuse-slider-item-label{color:var(--success-color)}.comfyui-easyuse-slider-item.positive .comfyui-easyuse-slider-item-area{background:var(--success-color)}.comfyui-easyuse-slider-item.negative .comfyui-easyuse-slider-item-label{color:var(--error-color)}.comfyui-easyuse-slider-item.negative .comfyui-easyuse-slider-item-area{background:var(--error-color)}.comfyui-easyuse-map{height:100%;background:var(--comfy-menu-bg)}.comfyui-easyuse-map .p-splitter-gutter-handle{height:1px!important}.comfyui-easyuse-map-nodes{height:100%;position:relative}.comfyui-easyuse-map-nodes__header{position:absolute;z-index:2;top:0;left:0;width:100%;padding:.25rem 0 .25rem .5rem;height:2.8rem;background:var(--comfy-menu-bg);border-bottom:1px solid var(--border-color);display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;-webkit-backdrop-filter:saturate(180%) blur(40px);-khtml-backdrop-filter:saturate(180%) blur(40px);-moz-backdrop-filter:saturate(180%) blur(40px);-ms-backdrop-filter:saturate(180%) blur(40px);-o-backdrop-filter:saturate(180%) blur(40px);backdrop-filter:saturate(180%) blur(40px)}.comfyui-easyuse-map-nodes__header .title{font-size:13px;color:var(--input-text);font-weight:400;line-height:1.5;-webkit-user-select:none;user-select:none}.comfyui-easyuse-map-nodes__header .toolbar{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-map-nodes__header .toolbar .icon{font-size:.85rem;margin-left:.25rem;cursor:pointer}.comfyui-easyuse-map-nodes__content{position:relative;padding:2.8rem 0 0;height:100%;overflow:auto}.comfyui-easyuse-map-nodes__content-searchbox{padding:1rem}.comfyui-easyuse-map-nodes__content dl .label{padding-left:1rem}.comfyui-easyuse-map-nodes__content ul,.comfyui-easyuse-map-nodes__content ol,.comfyui-easyuse-map-nodes__content dl{list-style-type:none;padding:0;margin:0}.comfyui-easyuse-map-nodes__content ul .toolbar span,.comfyui-easyuse-map-nodes__content ol .toolbar span,.comfyui-easyuse-map-nodes__content dl .toolbar span{font-size:13px}.comfyui-easyuse-map-nodes__content ul .toolbar span.pi-eye,.comfyui-easyuse-map-nodes__content ol .toolbar span.pi-eye,.comfyui-easyuse-map-nodes__content dl .toolbar span.pi-eye{color:var(--input-text)}.comfyui-easyuse-map-nodes__content ul .toolbar span.pi-eye-slash,.comfyui-easyuse-map-nodes__content ol .toolbar span.pi-eye-slash,.comfyui-easyuse-map-nodes__content dl .toolbar span.pi-eye-slash{color:var(--descrip-text)}.comfyui-easyuse-map-nodes__content ul .toolbar span.pi-eye-slash.never,.comfyui-easyuse-map-nodes__content ol .toolbar span.pi-eye-slash.never,.comfyui-easyuse-map-nodes__content dl .toolbar span.pi-eye-slash.never{opacity:.5}.comfyui-easyuse-map-nodes__content ol{padding:0;padding-block-start:2px;padding-inline-start:1rem}.comfyui-easyuse-map-nodes__content .no_result{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;-o-justify-content:center;justify-content:center;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;text-align:center}.comfyui-easyuse-map-nodes .p-contextmenu{display:block!important;position:fixed!important;z-index:1000!important}.comfyui-easyuse-map-nodes-group{position:relative;overflow:hidden;width:100%;height:2rem;cursor:default;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;pointer-events:auto}.comfyui-easyuse-map-nodes-group .left,.comfyui-easyuse-map-nodes-group .right{height:100%;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-map-nodes-group .left{padding-left:.5rem;margin-right:.25rem;-webkit-box-flex:1;-ms-flex:1;-webkit-flex:1;flex:1}.comfyui-easyuse-map-nodes-group .icon{font-size:.85rem;margin-right:.25rem}.comfyui-easyuse-map-nodes-group .label{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;height:100%;width:100%;min-width:80px}.comfyui-easyuse-map-nodes-group .label span{font-size:14px;color:var(--input-text);font-weight:400;line-height:1.5;display:-webkit-box;-webkit-line-clamp:1;overflow:hidden;word-break:break-all;text-overflow:ellipsis;-webkit-box-orient:vertical;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.comfyui-easyuse-map-nodes-group:hover{background:var(--content-hover-bg)!important}.comfyui-easyuse-map-nodes-group.active{background:var(--theme-color)!important}.comfyui-easyuse-map-nodes-group.active .label{color:#fff;cursor:default}.comfyui-easyuse-map-nodes-group.never .label{color:var(--descrip-text);opacity:.4}.comfyui-easyuse-map-nodes-group.bypass .label{color:var(--descrip-text)}.comfyui-easyuse-map-nodes-node{height:2rem;cursor:default;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;position:relative;overflow:hidden;pointer-events:auto}.comfyui-easyuse-map-nodes-node .node_id{background:#0b2000;padding:.25rem;margin:0 0 0 .25rem;border-radius:.25rem;text-align:center;color:#fff;font-size:12px}.comfyui-easyuse-map-nodes-node .left{height:100%;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-map-nodes-node .label{text-indent:.5rem;font-size:14px;color:var(--input-text);font-weight:400;line-height:1.5;-webkit-box-flex:1;-ms-flex:1;-webkit-flex:1;flex:1;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;margin-right:.25rem;height:2rem;line-height:2rem;width:100%;display:-webkit-box;-webkit-line-clamp:1;overflow:hidden;word-break:break-all;text-overflow:ellipsis;-webkit-box-orient:vertical}.comfyui-easyuse-map-nodes-node .label.error{color:var(--error-color)}.comfyui-easyuse-map-nodes-node:hover{background:var(--content-hover-bg)!important}.comfyui-easyuse-map-nodes-node.never .label{color:var(--descrip-text);opacity:.5}.comfyui-easyuse-map-nodes-node.bypass .label{color:#f0f;opacity:.5}.comfyui-easyuse-toolbar{border-radius:0 12px 12px 0;min-width:50px;height:24px;position:fixed;bottom:85px;left:0;display:flex;align-items:center;z-index:1000;background-color:var(--comfy-menu-bg);border:1px solid var(--bg-color);-webkit-backdrop-filter:saturate(180%) blur(40px);-khtml-backdrop-filter:saturate(180%) blur(40px);-moz-backdrop-filter:saturate(180%) blur(40px);-ms-backdrop-filter:saturate(180%) blur(40px);-o-backdrop-filter:saturate(180%) blur(40px);backdrop-filter:saturate(180%) blur(40px)}.comfyui-easyuse-toolbar-icon{height:100%;padding:0 4px;display:flex;justify-content:center;align-items:center;font-size:12px;color:var(--input-text);transition:all .3s ease-in-out;cursor:pointer}.comfyui-easyuse-toolbar-icon svg{width:14px;height:14px}.comfyui-easyuse-toolbar-icon:hover.group{color:var(--warning-color)}.comfyui-easyuse-toolbar-icon:hover.rocket{color:var(--theme-color)}.comfyui-easyuse-toolbar-nodes-map{position:absolute;top:50px;left:10px;width:200px;border-radius:12px;min-height:100px;max-height:600px;color:var(--descrip-text);background-color:var(--comfy-menu-bg);border:1px solid var(--bg-color);-webkit-backdrop-filter:saturate(180%) blur(40px);-khtml-backdrop-filter:saturate(180%) blur(40px);-moz-backdrop-filter:saturate(180%) blur(40px);-ms-backdrop-filter:saturate(180%) blur(40px);-o-backdrop-filter:saturate(180%) blur(40px);backdrop-filter:saturate(180%) blur(40px);z-index:399;padding-top:0;overflow:hidden}.comfyui-easyuse-toolbar-nodes-map .no-result-placeholder-content{-webkit-transform:scale(.8);-khtml-transform:scale(.8);-moz-transform:scale(.8);-ms-transform:scale(.8);-o-transform:scale(.8);transform:scale(.8)}.comfyui-easyuse-toolbar-nodes-map .comfyui-easyuse-map-nodes{min-height:100px;max-height:600px}.comfyui-easyuse-toolbar-nodes-map .comfyui-easyuse-map-nodes__header:before{content:"…";position:absolute;left:.25rem;top:2.75rem;transform:translateY(-2rem) rotate(90deg);width:.5rem;height:.5rem;display:inline-block;overflow:hidden;line-height:5px;padding:3px 4px;cursor:move;vertical-align:middle;font-size:12px;font-family:sans-serif;letter-spacing:2px;color:var(--drag-text);z-index:3;text-shadow:1px 0 1px black}.comfyui-easyuse-toolbar-nodes-map .comfyui-easyuse-map-nodes__header .title{cursor:move;padding-left:.25rem}.comfyui-easyuse-toolbar-nodes-map .comfyui-easyuse-map-nodes__content{max-height:calc(600px - 2.7rem)}.no-result-placeholder{display:flex;justify-content:center;align-items:center;height:100%}.no-result-placeholder-content{text-align:center;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-direction:column;-khtml-flex-direction:column;-moz-flex-direction:column;-ms-flex-direction:column;-o-flex-direction:column;flex-direction:column;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between}.no-result-placeholder .p-card{background-color:transparent!important;box-shadow:none;text-align:center}.no-result-placeholder h3{color:var(--input-text);margin-bottom:.5rem}.no-result-placeholder p{color:var(--descrip-text);margin-bottom:1rem;margin-top:0}#comfyui-easyuse-components{position:absolute;top:0;left:0;z-index:3}.comfyui-easyuse{--primary-bg:var(--theme-color)!important;--primary-hover-bg: var(--theme-color-light)!important;--p-datatable-header-cell-padding: .15rem 1rem;--p-datatable-body-cell-padding: .15rem 1rem;--border-color-solid: var(--border-color);--border-radius: 8px}.comfyui-easyuse.dark-theme{--fg-color: #fff;--bg-color: #242427;--content-bg:#18181b;--content-fg:#fff;--content-hover-bg: #27272a;--comfy-menu-bg: rgba(24,24,27,.9);--comfy-input-bg: #242427;--input-text: #ffffff;--descrip-text: #71717a;--drag-text: #ccc;--error-text: #ff4444;--border-color: #3f3f46;--border-color-solid: #2a2a2e;--tr-even-bg-color: rgba(28,28,28,.9);--tr-odd-bg-color: rgba(19,19,19,.9)}.comfyui-easyuse ::-webkit-scrollbar{width:0em}.comfyui-easyuse ::-webkit-scrollbar-track{background-color:transparent}.comfyui-easyuse ::-webkit-scrollbar-thumb{background-color:transparent;border-radius:2px}.comfyui-easyuse ::-webkit-scrollbar-thumb:hover{background-color:transparent}.comfyui-easyuse body{font-family:var(--font-family)!important;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.comfyui-easyuse textarea{font-family:var(--font-family)!important}.comfyui-easyuse hr{border:1px solid var(--border-color)}.comfyui-easyuse .comfy-multiline-input{background-color:transparent;border:1px solid var(--border-color-solid);border-radius:var(--border-radius);padding:8px;font-size:12px}.comfyui-easyuse #comfy-settings-dialog{border:1px solid var(--border-color);background:transparent;-webkit-backdrop-filter:blur(8px) brightness(120%);backdrop-filter:blur(8px) brightness(120%);box-shadow:none}.comfyui-easyuse .comfy-modal{border:1px solid var(--border-color);box-shadow:none;-webkit-backdrop-filter:blur(8px) brightness(120%);backdrop-filter:blur(8px) brightness(120%)}.comfyui-easyuse .cm-title{background-color:transparent!important}.comfyui-easyuse .cm-notice-board{border-radius:10px!important;border:1px solid var(--border-color)!important}.comfyui-easyuse .cm-menu-container{margin-bottom:50px!important}.comfyui-easyuse .cn-manager-custom_milk_white .tg-column-name,.comfyui-easyuse .cmm-manager-custom_milk_white .tg-column-name{color:var(--input-text)}.comfyui-easyuse .cn-manager-custom_milk_white .tg-body-message,.comfyui-easyuse .cmm-manager-custom_milk_white .tg-body-message{text-align:center;color:var(--descrip-text)!important}.comfyui-easyuse .cn-manager-custom_milk_white .tg-body-frame .tg-cell,.comfyui-easyuse .cmm-manager-custom_milk_white .tg-body-frame .tg-cell{color:var(--input-text)}.comfyui-easyuse .cn-manager-custom_milk_white .tg-body-frame .cn-node-name a,.comfyui-easyuse .cn-manager-custom_milk_white .tg-body-frame .cmm-node-name a,.comfyui-easyuse .cmm-manager-custom_milk_white .tg-body-frame .cn-node-name a,.comfyui-easyuse .cmm-manager-custom_milk_white .tg-body-frame .cmm-node-name a{color:var(--theme-color)!important}.comfyui-easyuse .comfy-menu{border-radius:16px;box-shadow:0 0 1px var(--descrip-text);-webkit-backdrop-filter:blur(8px) brightness(120%);backdrop-filter:blur(8px) brightness(120%)}.comfyui-easyuse .comfy-menu button.comfy-settings-btn{font-size:12px}.comfyui-easyuse .comfy-menu-btns{margin-bottom:4px}.comfyui-easyuse .comfy-menu button,.comfyui-easyuse .comfy-modal button{font-size:14px;padding:4px 0;margin-bottom:4px}.comfyui-easyuse .comfy-menu-btns button,.comfyui-easyuse .comfy-list-actions button{font-size:10px}.comfyui-easyuse .comfy-menu>button,.comfyui-easyuse .comfy-menu-btns button,.comfyui-easyuse .comfy-menu .comfy-list button,.comfyui-easyuse .comfy-modal button{border-width:1px}.comfyui-easyuse #comfy-dev-save-api-button{justify-content:center}.comfyui-easyuse #queue-button{position:relative;overflow:hidden;min-height:30px;z-index:1}.comfyui-easyuse #queue-button:after{clear:both;content:attr(data-attr);background:green;color:#fff;width:var(--process-bar-width);height:100%;position:absolute;top:0;left:0;z-index:0;text-align:center;display:flex;justify-content:center;align-items:center}.comfyui-easyuse #shareButton{background:linear-gradient(to left,var(--theme-color),var(--theme-color-light))!important;color:#fff!important}.comfyui-easyuse .litegraph.litecontextmenu{--height: 24px;--padding: 6px;font-family:var(--font-family);padding:var(--padding) 0;border-radius:var(--border-radius);-webkit-backdrop-filter:blur(8px) brightness(120%);backdrop-filter:blur(8px) brightness(120%)}.comfyui-easyuse .litegraph.litecontextmenu .litemenu-title{padding:var(--padding)}.comfyui-easyuse .litegraph.litecontextmenu>div:first-child.litemenu-title{margin-top:-6px}.comfyui-easyuse .litegraph.litecontextmenu .submenu{height:var(--height);line-height:var(--height);padding:0 18px 0 12px;margin:0;background:transparent!important}.comfyui-easyuse .litegraph.litecontextmenu .submenu.has_submenu{border-right:none;position:relative}.comfyui-easyuse .litegraph.litecontextmenu .submenu.has_submenu:after{content:"";display:block;width:0;height:0;border-width:4px 4px 0;border-style:solid;border-color:var(--input-text) transparent transparent;transform:translateY(-50%) rotate(-90deg);top:50%;position:absolute}.comfyui-easyuse .litegraph.litecontextmenu .submenu.separator{height:1px;width:100%;background-color:var(--border-color)!important;margin:var(--padding) 0;border:none}.comfyui-easyuse .litegraph.litecontextmenu .submenu:last-child.separator{display:none}.comfyui-easyuse .litegraph.litecontextmenu .submenu:hover:not(.separator){background:var(--theme-color)!important}.comfyui-easyuse .litegraph.lite-search-item{background-color:var(--comfy-input-bg)!important;filter:brightness(100%)}.comfyui-easyuse .litegraph.lite-search-item:hover{filter:brightness(120%);color:var(--input-text)}.comfyui-easyuse .graphdialog{-webkit-backdrop-filter:blur(8px) brightness(120%);backdrop-filter:blur(8px) brightness(120%)}.comfyui-easyuse .graphdialog button{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;-o-justify-content:center;justify-content:center;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse .comfyui-menu{background:var(--comfy-menu-bg);border-bottom:1px solid var(--bg-color)}.comfyui-easyuse .side-tool-bar-container:not(.bg-transparent){background:var(--comfy-menu-bg);border-right:1px solid var(--bg-color)}.comfyui-easyuse .comfy-modal-content{width:100%}.comfyui-easyuse-poseEditor{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;-o-justify-content:center;justify-content:center;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;text-align:center;font-size:18px;line-height:1.5}.comfyui-easyuse .dom-widget{padding:0 4px}.comfyui-easyuse .pi.pi-circle-fill[data-testid=noColor]{color:#000!important}.comfyui-easyuse .pi.pi-circle-fill[data-testid=red]{color:#af3535!important}.comfyui-easyuse .pi.pi-circle-fill[data-testid=brown]{color:#38291f!important}.comfyui-easyuse .pi.pi-circle-fill[data-testid=green]{color:#346434!important}.comfyui-easyuse .pi.pi-circle-fill[data-testid=blue]{color:#1f1f48!important}.comfyui-easyuse .pi.pi-circle-fill[data-testid=pale_blue]{color:#006691!important}.comfyui-easyuse .pi.pi-circle-fill[data-testid=cyan]{color:#008181!important}.comfyui-easyuse .pi.pi-circle-fill[data-testid=purple]{color:#422342!important}.comfyui-easyuse .pi.pi-circle-fill[data-testid=yellow]{color:#c09430!important}.comfyui-easyuse .pi.pi-circle-fill[data-testid=black]{color:#000c!important}')),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}}(); +var e;import{u as o,a as t,s as n,g as a,b as s,c as l,j as i,N as d,$ as u,t as r,d as c,_ as p,i as v,e as m,f as g,h,k as f,l as y,m as w}from"./assets/extensions-CPPCvYdJ.js";import{i as _,r as x,o as b,a as C,c as M,F as k,k as S,n as $,b as N,p as D,s as E,q as A,f as V,e as z,d as H,y as P,j as T,Z as G,l as O,x as U,P as I,w as R,W as j,m as L,_ as B,R as Y,$ as W,a0 as F,a1 as q}from"./assets/vue-3zBRwU9X.js";import{e as Z,s as K,k as X,g as J,T as Q,f as ee,i as oe,l as te,d as ne,m as ae}from"./assets/vendor-21JIUrgV.js";import{c as se}from"./assets/lodash-CZi7izHi.js";import{d as le,u as ie}from"./assets/vueuse-D8iors41.js";import{P as de}from"./assets/primevue-CjzBNgZL.js";import"./assets/primeuix-Zf0UbZPU.js";const ue=["data-id"],re=["onMousedown","onDblclick"],ce="comfyui-easyuse-slider",pe="ipadapter layer weights",ve={__name:"sliderControl",props:{id:{type:String|Number,default:""},mode:{type:String,default:""},type:{type:String,default:""},values:{type:Array,default:[]},show:{type:Boolean,default:!1}},emits:["changeValues","showSlider"],setup(e,{emit:o}){const t=e,n=o,a=(e,o,t)=>(e-o)/(t-o)*100,s=(e,o,n=void 0)=>{if(t.mode===pe){let t={3:2.5,6:1}[o]||0;return{default:12==e?t:0,min:-1,max:3,step:.05,value:void 0!==n?n:12==e?t:0,top:void 0!==n?100-a(n,-1,3)+"%":null,height:void 0!==n?a(n,-1,3)+"%":null}}};_((e=>t.mode),(async(e,o)=>{var a;if(e!==o&&e===pe)if(!o&&(null==(a=t.values)?void 0:a.length)>0){const e=t.values.map((e=>{const o=e.split(":");return s(t.values.length,o[0],parseFloat(o[1]))}));await n("changeValues",e)}else{let e="sd1"==t.type?16:12,o=Array.from({length:e},((o,t)=>s(e,t)));await n("changeValues",o)}n("showSlider")}),{immediate:!0}),_((e=>t.type),((e,o)=>{if(e!=o&&t.mode==pe){let e="sd1"==t.type?16:12,o=Array.from({length:e},((o,t)=>s(e,t)));n("changeValues",o)}}));const l=x(null),i=x(null);return b((()=>{document.onmouseup=e=>document.onmousemove=null})),(o,s)=>{var d;return C(),M("div",{class:$(ce),"data-id":e.id},[(null==(d=e.values)?void 0:d.length)>0&&e.show?(C(!0),M(k,{key:0},S(e.values,((o,s)=>(C(),M("div",{class:$([ce+"-item",{positive:3==s&&"sdxl"==e.type&&e.mode==pe},{negative:6==s&&"sdxl"==e.type&&e.mode==pe}]),key:s},[N("div",{class:$(ce+"-item-input")},D(o.value),3),N("div",{class:$(ce+"-item-scroll"),ref_for:!0,ref_key:"scroll",ref:l},[N("div",{class:$(ce+"-item-bar"),ref_for:!0,ref_key:"bar",ref:i,style:E({top:o.top||100-a(o.default,o.min,o.max)+"%"}),onMousedown:e=>((e,o,a)=>{let s=e||window.event,d=l.value[a],u=i.value[a],r=se(t.values),c=s.clientY-u.offsetTop;document.onmousemove=e=>{let t=(e||window.event).clientY-c;t<0?t=0:t>d.offsetHeight-u.offsetHeight&&(t=d.offsetHeight-u.offsetHeight);let s=(o.max-o.min)/o.step,l=(d.offsetHeight-u.offsetHeight)/s;t=Math.round(t/l)*l;const i=Math.floor(t/(d.offsetHeight-u.offsetHeight)*100)+"%",p=Math.floor((d.offsetHeight-u.offsetHeight-t)/(d.offsetHeight-u.offsetHeight)*100)+"%",v=parseFloat(parseFloat(o.max-(o.max-o.min)*(t/(d.offsetHeight-u.offsetHeight))).toFixed(2));r[a]={...r[a],top:i,height:p,value:v},n("changeValues",r),window.getSelection?window.getSelection().removeAllRanges():document.selection.empty()}})(e,o,s),onDblclick:e=>((e,o,a)=>{let s=se(t.values);s[a]={...s[a],top:null,height:null,value:o.default},n("changeValues",s)})(0,o,s)},null,46,re),N("div",{class:$(ce+"-item-area"),style:E({height:o.height||a(o.default,o.min,o.max)+"%"})},null,6)],2),N("div",{class:$(ce+"-item-label")},[N("span",null,D(o.label),1)],2)],2)))),128)):A("",!0)],8,ue)}}},me={__name:"index",setup(e){const s=o(),{slider_controls:l}=Z(s),i=x({}),d=async e=>{var o,t,d,u,r;await n(1);const c=a(e,"mode"),p=a(e,"model_type"),v=(null==(o=e.properties.values)?void 0:o.length)>0?e.properties.values:[];(null==(t=e.flags)?void 0:t.collapsed)&&e.collapse();let m=se(l.value);m.push({id:e.id,type:p.value,mode:c.value,value:v,show:!1});const g=m.length-1;await s.setSliderControls(m);let h=null==(r=null==(u=null==(d=i.value[e.id])?void 0:d._)?void 0:u.vnode)?void 0:r.el;if(!h)return;e.addDOMWidget("values","btn",h,{setValue(){},getValue(){var o;const t=(null==(o=l.value)?void 0:o[g].value)||[];return e.properties.values=t.map(((e,o)=>`${o}:${e.value}`)),e.properties.values.join(",")}}),e.properties.values||e.setProperty("values",[]),e.setSize("sdxl"==p.value?[375,320]:[455,320]),p.callback=o=>{m=se(l.value),m[g].type!=o&&(e.setSize("sdxl"==o?[375,320]:[455,320]),m[g].value=[],m[g].type=o,s.setSliderControls(m))};const f=e.onRemoved;e.onRemoved=function(){if(f&&(null==f||f.apply(this,arguments)),void 0!==l.value.findIndex((o=>o.id==e.id))){let e=se(l.value);e.splice(g,1),s.setSliderControls(e)}return f}};return b((e=>{t.registerExtension({name:"Comfy.EasyUse.Components",async beforeRegisterNodeDef(e,o){const t=e.prototype.onNodeCreated;"easy sliderControl"==o.name&&(e.prototype.onNodeCreated=async function(){return t&&(null==t||t.apply(this,arguments)),await d(this),t}),"easy poseEditor"==o.name&&(e.prototype.onNodeCreated=async function(){t&&(null==t||t.apply(this,arguments));const e=document.createElement("div");return e.className="comfyui-easyuse-poseEditor",e.innerHTML='
This node is about to be removed, you can use ComfyUI_Custom_Nodes_AlekPet to replace it.
',this.addDOMWidget("editor","btn",e),t})}})})),(e,o)=>(C(!0),M(k,null,S(z(l),((e,o)=>(C(),V(ve,{ref_for:!0,ref:o=>{o&&(i.value[e.id]=o)},type:e.type,key:o,id:e.id,show:e.show,mode:e.mode,values:e.value,onChangeValues:e=>((e,o)=>{let t=se(l.value);t[o].value=e,s.setSliderControls(t)})(e,o),onShowSlider:e=>(e=>{let o=se(l.value);o[e].show=!0,s.setSliderControls(o)})(o)},null,8,["type","id","show","mode","values","onChangeValues","onShowSlider"])))),128))}},ge={class:"no-result-placeholder"},he={class:"no-result-placeholder-content"},fe={key:0},ye={__name:"noResultsPlaceholder",props:{icon:{type:String,default:"",required:!1},iconSize:{type:String,default:"3rem",required:!1},title:{type:String,required:!0},message:{type:String,required:!1},buttonLabel:{type:String,default:"",required:!1}},emits:["action"],setup:e=>(o,t)=>(C(),M("div",ge,[H(z(X),null,{content:P((()=>[N("div",he,[N("i",{class:$(e.icon),style:E({"font-size":e.iconSize,"margin-bottom":".5rem"})},null,6),N("h3",null,D(e.title),1),e.message?(C(),M("p",fe,D(e.message),1)):A("",!0),e.buttonLabel?(C(),V(z(K),{key:1,label:e.buttonLabel,onClick:t[0]||(t[0]=e=>o.$emit("action")),class:"p-button-text"},null,8,["label"])):A("",!0)])])),_:1})]))},we={class:"left flex-1"},_e={key:0,class:"node_id"},xe={key:1,class:"edit"},be={class:"right toolbar"},Ce={__name:"node",props:{node:{type:Object,default:{}}},emits:["mousedown","mouseup","changeMode"],setup(e){const o=s(),n=T((e=>l("EasyUse.NodesMap.DisplayNodeID"))),a=e,u=x(!1),r=x(null),c=x("");_((e=>a.node.is_edit),(e=>{e&&(c.value=a.node.title)}));const p=async()=>{let e=t.canvas.graph._nodes.find((e=>e.id==a.node.id));e?(e.is_edit=!1,e.title=c.value,await o.setNodes(t.canvas.graph._nodes),u.value=!1):u.value=!1};return(o,t)=>{var a;return C(),M("div",{draggable:!1,class:$(["comfyui-easyuse-map-nodes-node",{never:void 0!==e.node.mode&&e.node.mode==z(d).NEVER},{bypass:void 0!==e.node.mode&&e.node.mode==z(d).BYPASS}])},[N("div",we,[n.value?(C(),M("span",_e,D(e.node.id),1)):A("",!0),(null==(a=e.node)?void 0:a.is_edit)?(C(),M("div",xe,[H(z(J),{ref_key:"modifyRef",ref:r,modelValue:c.value,"onUpdate:modelValue":t[0]||(t[0]=e=>c.value=e),variant:"outline",size:"small",type:"text",onBlur:p,onKeydown:[G(p,["enter"]),G(p,["esc"])],style:{width:"100%"}},null,8,["modelValue"])])):void 0!==e.node.title?(C(),M("span",{key:2,class:"label",onDblclick:t[1]||(t[1]=O((o=>z(i)(e.node.id)),["stop"]))},D(e.node.title),33)):(C(),M("span",{key:3,class:"label error",onDblclick:t[2]||(t[2]=O((o=>z(i)(e.node.id)),["stop"]))},D(e.node.type),33))]),N("div",be,[H(z(K),{size:"small",icon:e.node.mode==z(d).ALWAYS?"pi pi-eye":"pi pi-eye-slash",text:"",rounded:"",severity:"secondary",onClick:t[3]||(t[3]=O((e=>o.$emit("changeMode")),["stop"])),onMousedown:t[4]||(t[4]=O((e=>o.$emit("mousedown")),["stop"])),onMouseup:t[5]||(t[5]=O((e=>o.$emit("mouseup")),["stop"]))},null,8,["icon"])])],2)}}},Me={class:"left flex-1"},ke={key:1,class:"edit"},Se={key:2,class:"label"},$e={class:"right toolbar"},Ne={key:0,class:"child"},De={__name:"group",props:{item:{type:Object,default:{}}},emits:["mousedown","mouseup","changeMode"],setup(e){const o=e,n=s(),a=x(!1),l=x(null),i=x("");_((e=>o.item.info.is_edit),(e=>{e&&(i.value=o.item.info.title)}));const u=e=>{var a,s;let l=o.item;if(!(null==(a=l.info)?void 0:a.is_edit)&&(null==(s=l.children)?void 0:s.length)>0){let e=t.canvas.graph._groups.find((e=>e.pos[0]==l.info.pos[0]&&e.pos[1]==l.info.pos[1]));e&&(e.show_nodes=!e.show_nodes,n.setGroups(t.canvas.graph._groups))}},r=async()=>{let e=o.item,s=t.canvas.graph._groups.find((o=>o.pos[0]==e.info.pos[0]&&o.pos[1]==e.info.pos[1]));s?(s.is_edit=!1,s.title=i.value,await n.setGroups(t.canvas.graph._groups),a.value=!1):a.value=!1};return(o,t)=>{var n,a,s;return C(),M(k,null,[N("div",{class:$("comfyui-easyuse-map-nodes-group"),onClick:u},[N("div",Me,[e.item.children?(C(),M("i",{key:0,class:$(["icon",e.item.info.show_nodes?"pi pi-folder-open":"pi pi-folder"]),style:E({color:e.item.info.color})},null,6)):A("",!0),(null==(n=e.item.info)?void 0:n.is_edit)?(C(),M("div",ke,[H(z(J),{ref_key:"modifyRef",ref:l,modelValue:i.value,"onUpdate:modelValue":t[0]||(t[0]=e=>i.value=e),variant:"outline",size:"small",type:"text",onBlur:r,onKeydown:[G(r,["enter"]),G(r,["esc"])],style:{width:"100%"}},null,8,["modelValue"])])):(C(),M("div",Se,[N("span",null,D(e.item.info.title),1)]))]),N("div",$e,[(null==(a=e.item.children)?void 0:a.length)>0?(C(),V(z(K),{key:0,size:"small",icon:e.item.children.find((e=>e.mode==z(d).ALWAYS))?"pi pi-eye":"pi pi-eye-slash",text:"",rounded:"",severity:"secondary",onClick:t[1]||(t[1]=O((e=>o.$emit("changeMode")),["stop"])),onMousedown:t[2]||(t[2]=O((e=>o.$emit("mousedown")),["stop"])),onMouseup:t[3]||(t[3]=O((e=>o.$emit("mouseup")),["stop"]))},null,8,["icon"])):A("",!0)])]),(null==(s=e.item.children)?void 0:s.length)>0&&e.item.info.show_nodes?(C(),M("div",Ne,[U(o.$slots,"default")])):A("",!0)],64)}}},Ee={__name:"tree",props:{item:Object,index:Number,showGroupOnly:Boolean},emits:["dragstart","dragend","dragover","contextmenu","changeGroupMode","changeNodeMode","mousedown","mouseup"],setup:e=>(o,t)=>{var n,a,s,l;const i=I("Tree",!0);return C(),M("li",{onDragstart:t[10]||(t[10]=t=>o.$emit("dragstart",t,e.index)),onDragend:t[11]||(t[11]=t=>o.$emit("dragend",t,e.index)),onDragover:t[12]||(t[12]=t=>o.$emit("dragover",t,e.index)),draggable:!0,onContextmenu:t[13]||(t[13]=O((t=>o.$emit("contextmenu",t,e.item)),["stop"]))},[(null==(n=e.item.children)?void 0:n.length)||(null==(s=null==(a=e.item)?void 0:a.info)?void 0:s.sub_groups)?(C(),V(De,{key:0,item:e.item,onChangeMode:t[4]||(t[4]=t=>o.$emit("changeGroupMode",e.item)),onMousedown:t[5]||(t[5]=t=>o.$emit("mousedown",e.item,"group")),onMouseup:t[6]||(t[6]=e=>o.$emit("mouseup"))},{default:P((()=>[N("ol",null,[(C(!0),M(k,null,S(e.item.children,((n,a)=>(C(),V(i,{key:a,item:n,index:a,showGroupOnly:e.showGroupOnly,onDragstart:e=>o.$emit("dragstart",e,a),onDragend:e=>o.$emit("dragend",e,a),onDragover:e=>o.$emit("dragover",e,a),onContextmenu:e=>o.$emit("contextmenu",e,n),onChangeGroupMode:t[0]||(t[0]=e=>o.$emit("changeGroupMode",e)),onChangeNodeMode:t[1]||(t[1]=e=>o.$emit("changeNodeMode",e)),onMousedown:t[2]||(t[2]=e=>o.$emit("mousedown",e[0],e[1])),onMouseup:t[3]||(t[3]=e=>o.$emit("mouseup"))},null,8,["item","index","showGroupOnly","onDragstart","onDragend","onDragover","onContextmenu"])))),128))])])),_:1},8,["item"])):e.showGroupOnly?A("",!0):(C(),V(Ce,{key:1,node:(null==(l=e.item)?void 0:l.info)||e.item,onChangeMode:t[7]||(t[7]=t=>{var n;return o.$emit("changeNodeMode",(null==(n=e.item)?void 0:n.info)||e.item)}),onMousedown:t[8]||(t[8]=t=>{var n;return o.$emit("mousedown",(null==(n=e.item)?void 0:n.info)||e.item,"node")}),onMouseup:t[9]||(t[9]=e=>o.$emit("mouseup"))},null,8,["node"]))],32)}},Ae={class:"title"},Ve={class:"toolbar"},ze={key:0},He={key:1},Pe={key:2,class:"no_result",style:{height:"100%"}},Te="comfyui-easyuse-map-nodes",Ge={__name:"nodesMap",emits:["handleHeader"],setup(e){const o=s(),{groups_nodes:n,groups:a,nodes:c}=Z(o),p=T((e=>l("EasyUse.NodesMap.DisplayGroupOnly"))),v=x(!1),m=e=>{v.value=!v.value,t.canvas.graph._groups.forEach((e=>{e.show_nodes=v.value})),o.setGroups(t.canvas.graph._groups)},g=x(""),h=T((e=>(null==c?void 0:c.value.filter((e=>{var o,t,n,a;return(null==(t=null==(o=e.id)?void 0:o.toString())?void 0:t.includes(g.value))||(null==(n=e.type)?void 0:n.includes(g.value))||(null==(a=e.title)?void 0:a.includes(g.value))})))||[])),f=x(null),y=x(!1),w=T((()=>y.value?[{label:u("Jump to this node"),icon:"pi pi-arrow-circle-right",visible:!0,command:()=>E(_.value)},{label:u("Rename node"),icon:"pi pi-file-edit",visible:!0,command:()=>G(_.value)},{label:u("Delete node"),icon:"pi pi-trash",command:()=>I(_.value),visible:!0}]:[{label:u("Rename group"),icon:"pi pi-file-edit",visible:!0,command:()=>j(_.value)},{label:u("Delete group"),icon:"pi pi-trash",command:()=>L(_.value),visible:!0}])),_=x(null),b=(e,o)=>{_.value=o,y.value=!o.children,f.value.show(e)},E=e=>{i((null==e?void 0:e.info)?e.info.id:e.id)},G=e=>{e.info?e.info.is_edit=!0:e.is_edit=!0},I=e=>{const n=e.info?e.info.id:e.id;t.canvas.graph.beforeChange(),t.canvas.graph._nodes.splice(t.canvas.graph._nodes.findIndex((e=>e.id==n)),1),t.canvas.graph.afterChange(),t.canvas.setDirty(!0,!0),o.setNodes(t.canvas.graph._nodes)},j=e=>{e.info.is_edit=!0},L=e=>{t.canvas.graph.beforeChange(),t.canvas.graph._groups.splice(t.canvas.graph._groups.findIndex((o=>o.id==e.info.id)),1),t.canvas.graph.afterChange(),t.canvas.setDirty(!0,!0),o.setGroups(t.canvas.graph._groups)};let B,Y=0,W=0,F=!1;const q=(e,n=!1)=>{if(F)return void(F=!1);const a=e.children.find((e=>e.mode==d.ALWAYS)),s=e.children.map((e=>e.id));t.canvas.graph._nodes.forEach((e=>{s.includes(e.id)&&(e.mode=a?n?d.NEVER:d.BYPASS:d.ALWAYS,e.graph.change())})),o.setNodes(t.canvas.graph._nodes)},X=(e,n=!1)=>{if(F)return void(F=!1);const a=e.mode==d.ALWAYS,s=t.canvas.graph._nodes.find((o=>o.id==e.id));s&&(s.mode=a?n?d.NEVER:d.BYPASS:d.ALWAYS,s.graph.change(),o.setNodes(t.canvas.graph._nodes))},ne=(e,o="group")=>{Y=(new Date).getTime(),clearTimeout(B),B=setTimeout((t=>{"group"==o?q(e,!0):X(e,!0)}),500)},ae=e=>{W=(new Date).getTime(),W-Y>500&&(F=!0),clearTimeout(B)};let se=x(null),le=x(null);x(!1);const ie=(e,o)=>{se.value=o,e.currentTarget.style.opacity="0.6",e.currentTarget.style.border="1px dashed yellow",e.dataTransfer.effectAllowed="move"},de=(e,n)=>{e.target.style.opacity="1",e.currentTarget.style.border="1px dashed transparent";if("Manual drag&drop sorting"!==l("EasyUse.NodesMap.Sorting"))return void r.warn(u("For drag and drop sorting, please find Nodes map sorting mode in Settings->EasyUse and change it to manual"));let a=t.canvas.graph._groups,s=a[se.value],i=a[le.value];t.canvas.graph._groups[se.value]=i,t.canvas.graph._groups[le.value]=s,o.setGroups(t.canvas.graph._groups)},ue=(e,o)=>{e.preventDefault(),e.currentIndex!=se.value&&(le.value=o)};return(e,o)=>{var t,s,l;return C(),M("div",{class:$(Te)},[N("div",{class:$(Te+"__header"),onMousedown:o[0]||(o[0]=o=>e.$emit("handleHeader",o))},[N("div",Ae,D(z(u)("NODES MAP")),1),N("div",Ve,[(null==(t=z(a))?void 0:t.length)>0?R((C(),V(z(K),{key:0,icon:v.value?"pi pi-angle-double-down":"pi pi-angle-double-up",text:"",rounded:"",severity:"secondary",onClick:O(m,["stop"]),size:"small"},null,8,["icon"])),[[z(Q),v.value?z(u)("Collapse All"):z(u)("Expand All"),void 0,{top:!0}]]):A("",!0),U(e.$slots,"icon")])],34),N("div",{class:$(Te+"__content")},[N("div",{class:$(Te+"__content-searchbox")},[H(z(oe),null,{default:P((()=>[H(z(J),{class:"search-box-input",modelValue:g.value,"onUpdate:modelValue":o[1]||(o[1]=e=>g.value=e),placeholder:z(u)("Search by Node ID/Name..."),variant:"outlined",style:{width:"100%"}},null,8,["modelValue","placeholder"]),g.value?(C(),V(z(ee),{key:1,class:"pi pi-times",onClick:o[2]||(o[2]=e=>g.value="")})):(C(),V(z(ee),{key:0,class:"pi pi-search"}))])),_:1})],2),(null==(s=h.value)?void 0:s.length)>0&&g.value?(C(),M("ul",ze,[(C(!0),M(k,null,S(h.value,((e,o)=>(C(),M("li",{key:o},[H(Ce,{node:e,onChangeMode:o=>X(e),onMousedown:o=>ne(e,"node"),onMouseup:ae},null,8,["node","onChangeMode","onMousedown"])])))),128))])):(null==(l=z(n))?void 0:l.length)>0&&!g.value?(C(),M("ul",He,[(C(!0),M(k,null,S(z(n),((e,o)=>(C(),V(Ee,{key:o,item:e,index:o,showGroupOnly:p.value,onDragstart:ie,onDragend:de,onDragover:ue,onContextmenu:b,onChangeGroupMode:q,onChangeNodeMode:X,onMousedown:ne,onMouseup:ae},null,8,["item","index","showGroupOnly"])))),128))])):(C(),M("div",Pe,[H(ye,{icon:"pi pi-sitemap",title:z(u)("No Nodes",!0),message:g.value?z(u)("No nodes found in the search"):z(u)("No nodes found in the map",!0)},null,8,["title","message"])]))],2),H(z(te),{ref_key:"menuRef",ref:f,model:w.value,autoZIndex:!1,appendTo:"self"},null,8,["model"])])}}},Oe="comfyui-easyuse-toolbar",Ue={__name:"index",setup(e){const o=s(),t=x(!1);_((e=>t.value),(e=>{e?o.watchGraph(!0):o.unwatchGraph()}));const n=x(null),a=e=>{const o=n.value;var t=e.clientX||0,a=e.clientY||0,s=o.offsetLeft,l=o.offsetTop;function i(e){var n=e.clientX,i=e.clientY,d=n-t,u=i-a;o.style.left=s+d+"px",o.style.top=l+u+"px"}document.addEventListener("mousemove",i),document.addEventListener("mouseup",(function e(){document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",e)}))};return(e,o)=>(C(),M(k,null,[N("div",{class:$(["flex-c",Oe])},[N("div",{class:$(["group flex-c",Oe+"-icon"]),onClick:o[0]||(o[0]=e=>t.value=!t.value)},o[3]||(o[3]=[N("svg",{class:"icon",t:"1714565543756",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"22538",width:"200",height:"200"},[N("path",{d:"M871.616 64H152.384c-31.488 0-60.416 25.28-60.416 58.24v779.52c0 32.896 26.24 58.24 60.352 58.24h719.232c34.112 0 60.352-25.344 60.352-58.24V122.24c0.128-32.96-28.8-58.24-60.288-58.24zM286.272 512c-23.616 0-44.672-20.224-44.672-43.008 0-22.784 20.992-43.008 44.608-43.008 23.616 0 44.608 20.224 44.608 43.008A43.328 43.328 0 0 1 286.272 512z m0-202.496c-23.616 0-44.608-20.224-44.608-43.008 0-22.784 20.992-43.008 44.608-43.008 23.616 0 44.608 20.224 44.608 43.008a43.456 43.456 0 0 1-44.608 43.008zM737.728 512H435.904c-23.68 0-44.672-20.224-44.672-43.008 0-22.784 20.992-43.008 44.608-43.008h299.264c23.616 0 44.608 20.224 44.608 43.008a42.752 42.752 0 0 1-41.984 43.008z m0-202.496H435.904c-23.616 0-44.608-20.224-44.608-43.008 0-22.784 20.992-43.008 44.608-43.008h299.264c23.616 0 44.608 20.224 44.608 43.008a42.88 42.88 0 0 1-42.048 43.008z","p-id":"22539",fill:"currentColor"})],-1)]),2),N("div",{class:$(["rocket flex-c",Oe+"-icon"]),onClick:o[1]||(o[1]=(...e)=>z(c)&&z(c)(...e))},o[4]||(o[4]=[N("svg",{class:"icon",t:"1714565020764",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"7999",width:"200",height:"200"},[N("path",{d:"M810.438503 379.664884l-71.187166-12.777183C737.426025 180.705882 542.117647 14.602496 532.991087 7.301248c-12.777184-10.951872-32.855615-10.951872-47.45811 0-9.12656 7.301248-204.434938 175.229947-206.26025 359.586453l-67.536542 10.951871c-18.253119 3.650624-31.030303 18.253119-31.030303 36.506239v189.832442c0 10.951872 5.475936 21.903743 12.777184 27.379679 7.301248 5.475936 14.602496 9.12656 23.729055 9.12656h5.475936l133.247772-23.729055c40.156863 47.458111 91.265597 73.012478 151.500891 73.012477 60.235294 0 111.344029-27.379679 151.500891-74.837789l136.898396 23.729055h5.475936c9.12656 0 16.427807-3.650624 23.729055-9.12656 9.12656-7.301248 12.777184-16.427807 12.777184-27.379679V412.520499c1.825312-14.602496-10.951872-29.204991-27.379679-32.855615zM620.606061 766.631016H401.568627c-20.078431 0-36.506239 16.427807-36.506238 36.506239v109.518716c0 14.602496 9.12656 29.204991 23.729055 34.680927 14.602496 5.475936 31.030303 1.825312 40.156863-9.126559l16.427807-18.25312 32.855615 80.313726c5.475936 14.602496 18.253119 23.729055 34.680927 23.729055 16.427807 0 27.379679-9.12656 34.680927-23.729055l32.855615-80.313726 16.427807 18.25312c10.951872 10.951872 25.554367 14.602496 40.156863 9.126559 14.602496-5.475936 23.729055-18.253119 23.729055-34.680927v-109.518716c-3.650624-20.078431-20.078431-36.506239-40.156862-36.506239z",fill:"currentColor","p-id":"8000"})],-1)]),2)]),t.value?(C(),M("div",{key:0,ref_key:"nodesMapRef",ref:n,class:$(Oe+"-nodes-map")},[H(Ge,{onHandleHeader:a},{icon:P((()=>[R(H(z(K),{icon:"pi pi-times",text:"",rounded:"",severity:"secondary",onClick:o[2]||(o[2]=e=>t.value=!1),size:"small"},null,512),[[z(Q),z(u)("Close"),void 0,{top:!0}]])])),_:1})],2)):A("",!0)],64))}},Ie=ne("fastCanvas",(()=>{const e=j(null),o=x([]);return{canvas:e,selectedItems:o,updateSelectedItems:()=>{var t;const n=Array.from((null==(t=e.value)?void 0:t.selectedItems)??[]);o.value=n.map((e=>L(e)))},getCanvas:()=>(e.value||(e.value=t.canvas,e.value.render_canvas_border=!1),e.value)}}));function Re(e={}){const{useTransform:o=!1}=e,t=Ie().getCanvas(),{canvasPosToClientPos:n}=((e,o)=>{const{left:t,top:n}=le(e);return{clientPosToCanvasPos:e=>{const{offset:a,scale:s}=o.ds;return[(e[0]-t.value)/s-a[0],(e[1]-n.value)/s-a[1]]},canvasPosToClientPos:e=>{const{offset:a,scale:s}=o.ds;return[(e[0]+a[0])*s+t.value,(e[1]+a[1])*s+n.value]}}})(t.canvas,t),a=x({pos:[0,0],size:[0,0]});return{style:T((()=>{const{pos:e,size:s,scale:l=t.ds.scale}=a.value,[i,d]=n(e),[u,r]=s;return o?{position:"fixed",transformOrigin:"0 0",transform:`scale(${l})`,left:`${i}px`,top:`${d}px`,width:`${u}px`,height:`${r}px`}:{position:"fixed",left:`${i}px`,top:`${d}px`,width:u*l+"px",height:r*l+"px"}})),updatePosition:e=>{a.value=e}}}const je=(e={})=>{const o=x({}),{margin:t=4}=e,n=(e,o,n,a)=>{if(!n&&a){const{scale:n,offset:s}=a,l=function(e,o){const t=Math.max(e.x,o.x),n=Math.max(e.y,o.y),a=Math.min(e.x+e.width,o.x+o.width),s=Math.min(e.y+e.height,o.y+o.height);return t>=a||n>=s?null:[t,n,a-t,s-n]}({x:e.left-o.left,y:e.top-o.top,width:e.width,height:e.height},{x:(a.x+s[0]-t)*n,y:(a.y+s[1]-t)*n,width:(a.width+2*t)*n,height:(a.height+2*t)*n});if(!l)return"";const i=(l[0]-e.left+o.left)/n+"px",d=(l[1]-e.top+o.top)/n+"px",u=l[2]/n+"px",r=l[3]/n+"px";return`polygon(0% 0%, 0% 100%, ${i} 100%, ${i} ${d}, calc(${i} + ${u}) ${d}, calc(${i} + ${u}) calc(${d} + ${r}), ${i} calc(${d} + ${r}), ${i} 100%, 100% 100%, 100% 0%)`}return""};return{style:o,updateClipPath:(e,t,a,s)=>{const l=e.getBoundingClientRect(),i=t.getBoundingClientRect(),d=n(l,i,a,s);o.value={clipPath:d||"none",willChange:"clip-path"}}}},Le=["title"],Be=p({__name:"domWidget",props:{widgetState:{type:Object,default:()=>({widget:{},visible:!0,readonly:!1,zIndex:0})}},emits:["update:widgetValue"],setup(e,{emit:o}){var t,n;const a=e.widgetState.widget,s=o,i=x(void 0),{style:d,updatePosition:u}=Re({useTransform:!0}),{style:r,updateClipPath:c}=je(),p=T((()=>({...d.value,...h.value?r.value:{},zIndex:e.widgetState.zIndex,pointerEvents:e.widgetState.readonly||a.computedDisabled?"none":"auto",opacity:a.computedDisabled?.5:1}))),g=Ie(),h=T((e=>l("Comfy.DOMClippingEnabled")));if(_((()=>e.widgetState),(e=>{u(e),h.value&&(()=>{const e=g.canvas;if(!e||!i.value)return;const o=Object.values(e.selected_nodes??{})[0];if(!o)return;const t=o===a.node,n=null==o?void 0:o.renderArea,s=e.ds.offset,l=e.ds.scale,d=n?{x:n[0],y:n[1],width:n[2],height:n[3],scale:l,offset:[s[0],s[1]]}:void 0;c(i.value,e.canvas,t,d)})()}),{deep:!0}),_((()=>e.widgetState.visible),((e,o)=>{var t,n;!e&&o&&(null==(n=(t=a.options).onHide)||n.call(t,a))})),v(a)){a.element.blur&&ie(document,"mousedown",(e=>{a.element.contains(e.target)||a.element.blur()}));for(const e of a.options.selectOn??["focus","click"])ie(a.element,e,(()=>{const e=g.canvas;null==e||e.selectNode(a.node),null==e||e.bringToFront(a.node)}))}const f=a.node.constructor.nodeData,y=null==(n=null==(t=null==f?void 0:f.inputs)?void 0:t[a.name])?void 0:n.tooltip;return b((()=>{v(a)&&i.value&&i.value.appendChild(a.element)})),(o,t)=>R((C(),M("div",{ref_key:"widgetElement",ref:i,class:"dom-widget",title:z(y),style:E(p.value)},[z(m)(z(a))?(C(),V(Y(z(a).component),{key:0,"model-value":z(a).value,widget:z(a),"onUpdate:modelValue":t[0]||(t[0]=e=>s("update:widgetValue",e))},null,8,["model-value","widget"])):A("",!0)],12,Le)),[[B,e.widgetState.visible]])}},[["__scopeId","data-v-f8c9efe3"]]),Ye={class:"isolate"},We={__name:"domWidgets",setup(e){const o=Ie(),t=g(),n=T((()=>Array.from(t.widgetStates.values())));return _((()=>o.canvas),(e=>{e&&(e.onDrawForeground=h(e.onDrawForeground,(()=>{(()=>{var e;const n=o.canvas;if(!n)return;const a=n.low_quality;for(const o of t.widgetStates.values()){const t=o.widget,s=t.node,l=n.isNodeVisible(s)&&!(t.options.hideOnZoom&&a)&&t.isVisible();if(o.visible=l,l){const a=t.margin;o.pos=[s.pos[0]+a,s.pos[1]+a+t.y],o.size=[(t.width??s.width)-2*a,(t.computedHeight??50)-2*a],o.zIndex=(null==(e=n.graph)?void 0:e.nodes.indexOf(s))??-1,o.readonly=n.read_only}}})()})))}),{immediate:!0}),(e,o)=>(C(),M("div",Ye,[(C(!0),M(k,null,S(n.value,(e=>(C(),V(Be,{key:e.widget.id,"widget-state":e,"onUpdate:widgetValue":o=>e.widget.value=o},null,8,["widget-state","onUpdate:widgetValue"])))),128))]))}},Fe={__name:"index",setup(e){const o=s();return b((e=>{o.watchGraph()})),(e,o)=>(C(),M("div",{class:$("comfyui-easyuse-map")},[H(Ge)]))}},qe="Comfy.UseNewMenu",Ze={__name:"App",setup(e){const o=x(null);return b((e=>{try{(async()=>{l("EasyUse.NodesMap.Enable",null)&&t.extensionManager.registerSidebarTab({id:f,icon:"pi pi-sitemap",title:u("NodesMap",!0),tooltip:u("NodesMap",!0),type:"custom",render:e=>{e.style.height="100%",W(F(Fe,{}),e)}});const e=await y.fetchApi("/easyuse/version");if(200===e.status){let o=await e.json();o.version&&t.registerExtension({name:"EasyUse Version",aboutPageBadges:[{label:"EasyUse v"+o.version,url:"https://github.com/yolain/ComfyUI-Easy-Use",icon:"pi pi-github"}]})}o.value=l(qe),w(qe,(e=>{o.value=e}))})()}catch(n){}})),(e,t)=>(C(),M(k,null,[H(me),t[0]||(t[0]=N("img",{id:"easyuse-model-thumbnail"},null,-1)),"Disabled"==o.value?(C(),V(Ue,{key:0})):A("",!0),H(We)],64))}},Ke=null==(e=document.getElementsByClassName("graph-canvas-container"))?void 0:e[0],Xe=document.createElement("div");Xe.id="comfyui-easyuse-components",Ke?Ke.append(Xe):document.body.append(Xe);const Je=q(Ze);Je.use(de),Je.use(ae()),Je.mount("#"+Xe.id);