mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-01-10 06:10:50 +08:00
Merge branch 'master' of github.com:comfyanonymous/ComfyUI
This commit is contained in:
commit
a3452f6e6a
@ -15,6 +15,7 @@
|
|||||||
# Python web server
|
# Python web server
|
||||||
/api_server/ @yoland68 @robinjhuang @huchenlei @webfiltered @pythongosssss @ltdrdata
|
/api_server/ @yoland68 @robinjhuang @huchenlei @webfiltered @pythongosssss @ltdrdata
|
||||||
/app/ @yoland68 @robinjhuang @huchenlei @webfiltered @pythongosssss @ltdrdata
|
/app/ @yoland68 @robinjhuang @huchenlei @webfiltered @pythongosssss @ltdrdata
|
||||||
|
/utils/ @yoland68 @robinjhuang @huchenlei @webfiltered @pythongosssss @ltdrdata
|
||||||
|
|
||||||
# Frontend assets
|
# Frontend assets
|
||||||
/web/ @huchenlei @webfiltered @pythongosssss @yoland68 @robinjhuang
|
/web/ @huchenlei @webfiltered @pythongosssss @yoland68 @robinjhuang
|
||||||
|
|||||||
@ -34,6 +34,7 @@ A vanilla, up-to-date fork of [ComfyUI](https://github.com/comfyanonymous/comfyu
|
|||||||
- [Mochi](https://comfyanonymous.github.io/ComfyUI_examples/mochi/)
|
- [Mochi](https://comfyanonymous.github.io/ComfyUI_examples/mochi/)
|
||||||
- [LTX-Video](https://comfyanonymous.github.io/ComfyUI_examples/ltxv/)
|
- [LTX-Video](https://comfyanonymous.github.io/ComfyUI_examples/ltxv/)
|
||||||
- [Hunyuan Video](https://comfyanonymous.github.io/ComfyUI_examples/hunyuan_video/)
|
- [Hunyuan Video](https://comfyanonymous.github.io/ComfyUI_examples/hunyuan_video/)
|
||||||
|
- [Nvidia Cosmos](https://comfyanonymous.github.io/ComfyUI_examples/cosmos/)
|
||||||
- [Stable Audio](https://comfyanonymous.github.io/ComfyUI_examples/audio/)
|
- [Stable Audio](https://comfyanonymous.github.io/ComfyUI_examples/audio/)
|
||||||
- Asynchronous Queue system
|
- Asynchronous Queue system
|
||||||
- Many optimizations: Only re-executes the parts of the workflow that changes between executions.
|
- Many optimizations: Only re-executes the parts of the workflow that changes between executions.
|
||||||
|
|||||||
@ -4,6 +4,31 @@ import os
|
|||||||
from ..cmd import folder_paths
|
from ..cmd import folder_paths
|
||||||
import glob
|
import glob
|
||||||
from aiohttp import web
|
from aiohttp import web
|
||||||
|
import json
|
||||||
|
import logging
|
||||||
|
from functools import lru_cache
|
||||||
|
|
||||||
|
from ..json_util import merge_json_recursive
|
||||||
|
|
||||||
|
# Extra locale files to load into main.json
|
||||||
|
EXTRA_LOCALE_FILES = [
|
||||||
|
"nodeDefs.json",
|
||||||
|
"commands.json",
|
||||||
|
"settings.json",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def safe_load_json_file(file_path: str) -> dict:
|
||||||
|
if not os.path.exists(file_path):
|
||||||
|
return {}
|
||||||
|
|
||||||
|
try:
|
||||||
|
with open(file_path, "r", encoding="utf-8") as f:
|
||||||
|
return json.load(f)
|
||||||
|
except json.JSONDecodeError:
|
||||||
|
logging.error(f"Error loading {file_path}")
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
from ..execution_context import context_folder_names_and_paths
|
from ..execution_context import context_folder_names_and_paths
|
||||||
|
|
||||||
@ -12,10 +37,70 @@ class CustomNodeManager:
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
# binds to context at init time
|
# binds to context at init time
|
||||||
self.folder_paths = folder_paths.folder_names_and_paths
|
self.folder_paths = folder_paths.folder_names_and_paths
|
||||||
"""
|
|
||||||
Placeholder to refactor the custom node management features from ComfyUI-Manager.
|
def build_translations(self):
|
||||||
Currently it only contains the custom workflow templates feature.
|
with context_folder_names_and_paths(self.folder_paths):
|
||||||
"""
|
return self._build_translations()
|
||||||
|
|
||||||
|
@lru_cache(maxsize=1)
|
||||||
|
def _build_translations(self):
|
||||||
|
"""Load all custom nodes translations during initialization. Translations are
|
||||||
|
expected to be loaded from `locales/` folder.
|
||||||
|
|
||||||
|
The folder structure is expected to be the following:
|
||||||
|
- custom_nodes/
|
||||||
|
- custom_node_1/
|
||||||
|
- locales/
|
||||||
|
- en/
|
||||||
|
- main.json
|
||||||
|
- commands.json
|
||||||
|
- settings.json
|
||||||
|
|
||||||
|
returned translations are expected to be in the following format:
|
||||||
|
{
|
||||||
|
"en": {
|
||||||
|
"nodeDefs": {...},
|
||||||
|
"commands": {...},
|
||||||
|
"settings": {...},
|
||||||
|
...{other main.json keys}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
translations = {}
|
||||||
|
|
||||||
|
for folder in folder_paths.get_folder_paths("custom_nodes"):
|
||||||
|
# Sort glob results for deterministic ordering
|
||||||
|
for custom_node_dir in sorted(glob.glob(os.path.join(folder, "*/"))):
|
||||||
|
locales_dir = os.path.join(custom_node_dir, "locales")
|
||||||
|
if not os.path.exists(locales_dir):
|
||||||
|
continue
|
||||||
|
|
||||||
|
for lang_dir in glob.glob(os.path.join(locales_dir, "*/")):
|
||||||
|
lang_code = os.path.basename(os.path.dirname(lang_dir))
|
||||||
|
|
||||||
|
if lang_code not in translations:
|
||||||
|
translations[lang_code] = {}
|
||||||
|
|
||||||
|
# Load main.json
|
||||||
|
main_file = os.path.join(lang_dir, "main.json")
|
||||||
|
node_translations = safe_load_json_file(main_file)
|
||||||
|
|
||||||
|
# Load extra locale files
|
||||||
|
for extra_file in EXTRA_LOCALE_FILES:
|
||||||
|
extra_file_path = os.path.join(lang_dir, extra_file)
|
||||||
|
key = extra_file.split(".")[0]
|
||||||
|
json_data = safe_load_json_file(extra_file_path)
|
||||||
|
if json_data:
|
||||||
|
node_translations[key] = json_data
|
||||||
|
|
||||||
|
if node_translations:
|
||||||
|
translations[lang_code] = merge_json_recursive(
|
||||||
|
translations[lang_code], node_translations
|
||||||
|
)
|
||||||
|
|
||||||
|
return translations
|
||||||
|
|
||||||
def add_routes(self, routes, webapp, loadedModules):
|
def add_routes(self, routes, webapp, loadedModules):
|
||||||
|
|
||||||
@routes.get("/workflow_templates")
|
@routes.get("/workflow_templates")
|
||||||
@ -27,15 +112,32 @@ class CustomNodeManager:
|
|||||||
for folder in folder_paths.get_folder_paths("custom_nodes")
|
for folder in folder_paths.get_folder_paths("custom_nodes")
|
||||||
for file in glob.glob(os.path.join(folder, '*/example_workflows/*.json'))
|
for file in glob.glob(os.path.join(folder, '*/example_workflows/*.json'))
|
||||||
]
|
]
|
||||||
workflow_templates_dict = {} # custom_nodes folder name -> example workflow names
|
workflow_templates_dict = (
|
||||||
|
{}
|
||||||
|
) # custom_nodes folder name -> example workflow names
|
||||||
for file in files:
|
for file in files:
|
||||||
custom_nodes_name = os.path.basename(os.path.dirname(os.path.dirname(file)))
|
custom_nodes_name = os.path.basename(
|
||||||
|
os.path.dirname(os.path.dirname(file))
|
||||||
|
)
|
||||||
workflow_name = os.path.splitext(os.path.basename(file))[0]
|
workflow_name = os.path.splitext(os.path.basename(file))[0]
|
||||||
workflow_templates_dict.setdefault(custom_nodes_name, []).append(workflow_name)
|
workflow_templates_dict.setdefault(custom_nodes_name, []).append(
|
||||||
|
workflow_name
|
||||||
|
)
|
||||||
return web.json_response(workflow_templates_dict)
|
return web.json_response(workflow_templates_dict)
|
||||||
|
|
||||||
# Serve workflow templates from custom nodes.
|
# Serve workflow templates from custom nodes.
|
||||||
for module_name, module_dir in loadedModules:
|
for module_name, module_dir in loadedModules:
|
||||||
workflows_dir = os.path.join(module_dir, 'example_workflows')
|
workflows_dir = os.path.join(module_dir, "example_workflows")
|
||||||
if os.path.exists(workflows_dir):
|
if os.path.exists(workflows_dir):
|
||||||
webapp.add_routes([web.static('/api/workflow_templates/' + module_name, workflows_dir)])
|
webapp.add_routes(
|
||||||
|
[
|
||||||
|
web.static(
|
||||||
|
"/api/workflow_templates/" + module_name, workflows_dir
|
||||||
|
)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
@routes.get("/i18n")
|
||||||
|
async def get_i18n(request):
|
||||||
|
"""Returns translations from all custom nodes' locales folders."""
|
||||||
|
return web.json_response(self.build_translations())
|
||||||
|
|||||||
@ -22,7 +22,10 @@ MAX_PREVIEW_RESOLUTION = args.preview_size
|
|||||||
def preview_to_image(latent_image) -> Image:
|
def preview_to_image(latent_image) -> Image:
|
||||||
latents_ubyte = (((latent_image + 1.0) / 2.0).clamp(0, 1) # change scale from -1..1 to 0..1
|
latents_ubyte = (((latent_image + 1.0) / 2.0).clamp(0, 1) # change scale from -1..1 to 0..1
|
||||||
.mul(0xFF) # to 0..255
|
.mul(0xFF) # to 0..255
|
||||||
).to(device="cpu", dtype=torch.uint8, non_blocking=model_management.device_supports_non_blocking(latent_image.device))
|
)
|
||||||
|
if comfy.model_management.directml_enabled:
|
||||||
|
latents_ubyte = latents_ubyte.to(dtype=torch.uint8)
|
||||||
|
latents_ubyte = latents_ubyte.to(device="cpu", dtype=torch.uint8, non_blocking=model_management.device_supports_non_blocking(latent_image.device))
|
||||||
|
|
||||||
return Image.fromarray(latents_ubyte.numpy())
|
return Image.fromarray(latents_ubyte.numpy())
|
||||||
|
|
||||||
|
|||||||
@ -365,6 +365,9 @@ class PromptServer(ExecutorToClientProgress):
|
|||||||
original_ref = json.loads(post.get("original_ref"))
|
original_ref = json.loads(post.get("original_ref"))
|
||||||
filename, output_dir = folder_paths.annotated_filepath(original_ref['filename'])
|
filename, output_dir = folder_paths.annotated_filepath(original_ref['filename'])
|
||||||
|
|
||||||
|
if not filename:
|
||||||
|
return web.Response(status=400)
|
||||||
|
|
||||||
# validation for security: prevent accessing arbitrary path
|
# validation for security: prevent accessing arbitrary path
|
||||||
if filename[0] == '/' or '..' in filename:
|
if filename[0] == '/' or '..' in filename:
|
||||||
return web.Response(status=400)
|
return web.Response(status=400)
|
||||||
@ -404,6 +407,10 @@ class PromptServer(ExecutorToClientProgress):
|
|||||||
async def view_image(request):
|
async def view_image(request):
|
||||||
if "filename" in request.rel_url.query:
|
if "filename" in request.rel_url.query:
|
||||||
filename = request.rel_url.query["filename"]
|
filename = request.rel_url.query["filename"]
|
||||||
|
|
||||||
|
if not filename:
|
||||||
|
return web.Response(status=400)
|
||||||
|
|
||||||
type = request.rel_url.query.get("type", "output")
|
type = request.rel_url.query.get("type", "output")
|
||||||
subfolder = request.rel_url.query["subfolder"] if "subfolder" in request.rel_url.query else None
|
subfolder = request.rel_url.query["subfolder"] if "subfolder" in request.rel_url.query else None
|
||||||
|
|
||||||
|
|||||||
@ -1,11 +1,10 @@
|
|||||||
import torch
|
|
||||||
import math
|
import math
|
||||||
|
|
||||||
|
import torch
|
||||||
|
|
||||||
from . import utils
|
from . import utils
|
||||||
|
|
||||||
|
|
||||||
def lcm(a, b): #TODO: eventually replace by math.lcm (added in python3.9)
|
|
||||||
return abs(a*b) // math.gcd(a, b)
|
|
||||||
|
|
||||||
class CONDRegular:
|
class CONDRegular:
|
||||||
def __init__(self, cond):
|
def __init__(self, cond):
|
||||||
self.cond = cond
|
self.cond = cond
|
||||||
@ -27,6 +26,7 @@ class CONDRegular:
|
|||||||
conds.append(x.cond)
|
conds.append(x.cond)
|
||||||
return torch.cat(conds)
|
return torch.cat(conds)
|
||||||
|
|
||||||
|
|
||||||
class CONDNoiseShape(CONDRegular):
|
class CONDNoiseShape(CONDRegular):
|
||||||
def process_cond(self, batch_size, device, area, **kwargs):
|
def process_cond(self, batch_size, device, area, **kwargs):
|
||||||
data = self.cond
|
data = self.cond
|
||||||
@ -43,12 +43,12 @@ class CONDCrossAttn(CONDRegular):
|
|||||||
s1 = self.cond.shape
|
s1 = self.cond.shape
|
||||||
s2 = other.cond.shape
|
s2 = other.cond.shape
|
||||||
if s1 != s2:
|
if s1 != s2:
|
||||||
if s1[0] != s2[0] or s1[2] != s2[2]: #these 2 cases should not happen
|
if s1[0] != s2[0] or s1[2] != s2[2]: # these 2 cases should not happen
|
||||||
return False
|
return False
|
||||||
|
|
||||||
mult_min = lcm(s1[1], s2[1])
|
mult_min = math.lcm(s1[1], s2[1])
|
||||||
diff = mult_min // min(s1[1], s2[1])
|
diff = mult_min // min(s1[1], s2[1])
|
||||||
if diff > 4: #arbitrary limit on the padding because it's probably going to impact performance negatively if it's too much
|
if diff > 4: # arbitrary limit on the padding because it's probably going to impact performance negatively if it's too much
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@ -57,16 +57,17 @@ class CONDCrossAttn(CONDRegular):
|
|||||||
crossattn_max_len = self.cond.shape[1]
|
crossattn_max_len = self.cond.shape[1]
|
||||||
for x in others:
|
for x in others:
|
||||||
c = x.cond
|
c = x.cond
|
||||||
crossattn_max_len = lcm(crossattn_max_len, c.shape[1])
|
crossattn_max_len = math.lcm(crossattn_max_len, c.shape[1])
|
||||||
conds.append(c)
|
conds.append(c)
|
||||||
|
|
||||||
out = []
|
out = []
|
||||||
for c in conds:
|
for c in conds:
|
||||||
if c.shape[1] < crossattn_max_len:
|
if c.shape[1] < crossattn_max_len:
|
||||||
c = c.repeat(1, crossattn_max_len // c.shape[1], 1) #padding with repeat doesn't change result
|
c = c.repeat(1, crossattn_max_len // c.shape[1], 1) # padding with repeat doesn't change result
|
||||||
out.append(c)
|
out.append(c)
|
||||||
return torch.cat(out)
|
return torch.cat(out)
|
||||||
|
|
||||||
|
|
||||||
class CONDConstant(CONDRegular):
|
class CONDConstant(CONDRegular):
|
||||||
def __init__(self, cond):
|
def __init__(self, cond):
|
||||||
self.cond = cond
|
self.cond = cond
|
||||||
|
|||||||
@ -4,105 +4,6 @@ import logging
|
|||||||
|
|
||||||
# conversion code from https://github.com/huggingface/diffusers/blob/main/scripts/convert_diffusers_to_original_stable_diffusion.py
|
# conversion code from https://github.com/huggingface/diffusers/blob/main/scripts/convert_diffusers_to_original_stable_diffusion.py
|
||||||
|
|
||||||
# =================#
|
|
||||||
# UNet Conversion #
|
|
||||||
# =================#
|
|
||||||
|
|
||||||
unet_conversion_map = [
|
|
||||||
# (stable-diffusion, HF Diffusers)
|
|
||||||
("time_embed.0.weight", "time_embedding.linear_1.weight"),
|
|
||||||
("time_embed.0.bias", "time_embedding.linear_1.bias"),
|
|
||||||
("time_embed.2.weight", "time_embedding.linear_2.weight"),
|
|
||||||
("time_embed.2.bias", "time_embedding.linear_2.bias"),
|
|
||||||
("input_blocks.0.0.weight", "conv_in.weight"),
|
|
||||||
("input_blocks.0.0.bias", "conv_in.bias"),
|
|
||||||
("out.0.weight", "conv_norm_out.weight"),
|
|
||||||
("out.0.bias", "conv_norm_out.bias"),
|
|
||||||
("out.2.weight", "conv_out.weight"),
|
|
||||||
("out.2.bias", "conv_out.bias"),
|
|
||||||
]
|
|
||||||
|
|
||||||
unet_conversion_map_resnet = [
|
|
||||||
# (stable-diffusion, HF Diffusers)
|
|
||||||
("in_layers.0", "norm1"),
|
|
||||||
("in_layers.2", "conv1"),
|
|
||||||
("out_layers.0", "norm2"),
|
|
||||||
("out_layers.3", "conv2"),
|
|
||||||
("emb_layers.1", "time_emb_proj"),
|
|
||||||
("skip_connection", "conv_shortcut"),
|
|
||||||
]
|
|
||||||
|
|
||||||
unet_conversion_map_layer = []
|
|
||||||
# hardcoded number of downblocks and resnets/attentions...
|
|
||||||
# would need smarter logic for other networks.
|
|
||||||
for i in range(4):
|
|
||||||
# loop over downblocks/upblocks
|
|
||||||
|
|
||||||
for j in range(2):
|
|
||||||
# loop over resnets/attentions for downblocks
|
|
||||||
hf_down_res_prefix = f"down_blocks.{i}.resnets.{j}."
|
|
||||||
sd_down_res_prefix = f"input_blocks.{3 * i + j + 1}.0."
|
|
||||||
unet_conversion_map_layer.append((sd_down_res_prefix, hf_down_res_prefix))
|
|
||||||
|
|
||||||
if i < 3:
|
|
||||||
# no attention layers in down_blocks.3
|
|
||||||
hf_down_atn_prefix = f"down_blocks.{i}.attentions.{j}."
|
|
||||||
sd_down_atn_prefix = f"input_blocks.{3 * i + j + 1}.1."
|
|
||||||
unet_conversion_map_layer.append((sd_down_atn_prefix, hf_down_atn_prefix))
|
|
||||||
|
|
||||||
for j in range(3):
|
|
||||||
# loop over resnets/attentions for upblocks
|
|
||||||
hf_up_res_prefix = f"up_blocks.{i}.resnets.{j}."
|
|
||||||
sd_up_res_prefix = f"output_blocks.{3 * i + j}.0."
|
|
||||||
unet_conversion_map_layer.append((sd_up_res_prefix, hf_up_res_prefix))
|
|
||||||
|
|
||||||
if i > 0:
|
|
||||||
# no attention layers in up_blocks.0
|
|
||||||
hf_up_atn_prefix = f"up_blocks.{i}.attentions.{j}."
|
|
||||||
sd_up_atn_prefix = f"output_blocks.{3 * i + j}.1."
|
|
||||||
unet_conversion_map_layer.append((sd_up_atn_prefix, hf_up_atn_prefix))
|
|
||||||
|
|
||||||
if i < 3:
|
|
||||||
# no downsample in down_blocks.3
|
|
||||||
hf_downsample_prefix = f"down_blocks.{i}.downsamplers.0.conv."
|
|
||||||
sd_downsample_prefix = f"input_blocks.{3 * (i + 1)}.0.op."
|
|
||||||
unet_conversion_map_layer.append((sd_downsample_prefix, hf_downsample_prefix))
|
|
||||||
|
|
||||||
# no upsample in up_blocks.3
|
|
||||||
hf_upsample_prefix = f"up_blocks.{i}.upsamplers.0."
|
|
||||||
sd_upsample_prefix = f"output_blocks.{3 * i + 2}.{1 if i == 0 else 2}."
|
|
||||||
unet_conversion_map_layer.append((sd_upsample_prefix, hf_upsample_prefix))
|
|
||||||
|
|
||||||
hf_mid_atn_prefix = "mid_block.attentions.0."
|
|
||||||
sd_mid_atn_prefix = "middle_block.1."
|
|
||||||
unet_conversion_map_layer.append((sd_mid_atn_prefix, hf_mid_atn_prefix))
|
|
||||||
|
|
||||||
for j in range(2):
|
|
||||||
hf_mid_res_prefix = f"mid_block.resnets.{j}."
|
|
||||||
sd_mid_res_prefix = f"middle_block.{2 * j}."
|
|
||||||
unet_conversion_map_layer.append((sd_mid_res_prefix, hf_mid_res_prefix))
|
|
||||||
|
|
||||||
|
|
||||||
def convert_unet_state_dict(unet_state_dict):
|
|
||||||
# buyer beware: this is a *brittle* function,
|
|
||||||
# and correct output requires that all of these pieces interact in
|
|
||||||
# the exact order in which I have arranged them.
|
|
||||||
mapping = {k: k for k in unet_state_dict.keys()}
|
|
||||||
for sd_name, hf_name in unet_conversion_map:
|
|
||||||
mapping[hf_name] = sd_name
|
|
||||||
for k, v in mapping.items():
|
|
||||||
if "resnets" in k:
|
|
||||||
for sd_part, hf_part in unet_conversion_map_resnet:
|
|
||||||
v = v.replace(hf_part, sd_part)
|
|
||||||
mapping[k] = v
|
|
||||||
for k, v in mapping.items():
|
|
||||||
for sd_part, hf_part in unet_conversion_map_layer:
|
|
||||||
v = v.replace(hf_part, sd_part)
|
|
||||||
mapping[k] = v
|
|
||||||
new_state_dict = {v: unet_state_dict[k] for k, v in mapping.items()}
|
|
||||||
return new_state_dict
|
|
||||||
|
|
||||||
|
|
||||||
# ================#
|
# ================#
|
||||||
# VAE Conversion #
|
# VAE Conversion #
|
||||||
# ================#
|
# ================#
|
||||||
@ -213,6 +114,7 @@ textenc_pattern = re.compile("|".join(protected.keys()))
|
|||||||
# Ordering is from https://github.com/pytorch/pytorch/blob/master/test/cpp/api/modules.cpp
|
# Ordering is from https://github.com/pytorch/pytorch/blob/master/test/cpp/api/modules.cpp
|
||||||
code2idx = {"q": 0, "k": 1, "v": 2}
|
code2idx = {"q": 0, "k": 1, "v": 2}
|
||||||
|
|
||||||
|
|
||||||
# This function exists because at the time of writing torch.cat can't do fp8 with cuda
|
# This function exists because at the time of writing torch.cat can't do fp8 with cuda
|
||||||
def cat_tensors(tensors):
|
def cat_tensors(tensors):
|
||||||
x = 0
|
x = 0
|
||||||
@ -229,6 +131,7 @@ def cat_tensors(tensors):
|
|||||||
|
|
||||||
return out
|
return out
|
||||||
|
|
||||||
|
|
||||||
def convert_text_enc_state_dict_v20(text_enc_dict, prefix=""):
|
def convert_text_enc_state_dict_v20(text_enc_dict, prefix=""):
|
||||||
new_state_dict = {}
|
new_state_dict = {}
|
||||||
capture_qkv_weight = {}
|
capture_qkv_weight = {}
|
||||||
@ -284,5 +187,3 @@ def convert_text_enc_state_dict_v20(text_enc_dict, prefix=""):
|
|||||||
|
|
||||||
def convert_text_enc_state_dict(text_enc_dict):
|
def convert_text_enc_state_dict(text_enc_dict):
|
||||||
return text_enc_dict
|
return text_enc_dict
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -665,7 +665,7 @@ class UniPC:
|
|||||||
|
|
||||||
if x_t is None:
|
if x_t is None:
|
||||||
if use_predictor:
|
if use_predictor:
|
||||||
pred_res = torch.einsum('k,bkchw->bchw', rhos_p, D1s)
|
pred_res = torch.tensordot(D1s, rhos_p, dims=([1], [0])) # torch.einsum('k,bkchw->bchw', rhos_p, D1s)
|
||||||
else:
|
else:
|
||||||
pred_res = 0
|
pred_res = 0
|
||||||
x_t = x_t_ - expand_dims(alpha_t * B_h, dims) * pred_res
|
x_t = x_t_ - expand_dims(alpha_t * B_h, dims) * pred_res
|
||||||
@ -673,7 +673,7 @@ class UniPC:
|
|||||||
if use_corrector:
|
if use_corrector:
|
||||||
model_t = self.model_fn(x_t, t)
|
model_t = self.model_fn(x_t, t)
|
||||||
if D1s is not None:
|
if D1s is not None:
|
||||||
corr_res = torch.einsum('k,bkchw->bchw', rhos_c[:-1], D1s)
|
corr_res = torch.tensordot(D1s, rhos_c[:-1], dims=([1], [0])) # torch.einsum('k,bkchw->bchw', rhos_c[:-1], D1s)
|
||||||
else:
|
else:
|
||||||
corr_res = 0
|
corr_res = 0
|
||||||
D1_t = (model_t - model_prev_0)
|
D1_t = (model_t - model_prev_0)
|
||||||
|
|||||||
26
comfy/json_util.py
Normal file
26
comfy/json_util.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
def merge_json_recursive(base, update):
|
||||||
|
"""Recursively merge two JSON-like objects.
|
||||||
|
- Dictionaries are merged recursively
|
||||||
|
- Lists are concatenated
|
||||||
|
- Other types are overwritten by the update value
|
||||||
|
|
||||||
|
Args:
|
||||||
|
base: Base JSON-like object
|
||||||
|
update: Update JSON-like object to merge into base
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Merged JSON-like object
|
||||||
|
"""
|
||||||
|
if not isinstance(base, dict) or not isinstance(update, dict):
|
||||||
|
if isinstance(base, list) and isinstance(update, list):
|
||||||
|
return base + update
|
||||||
|
return update
|
||||||
|
|
||||||
|
merged = base.copy()
|
||||||
|
for key, value in update.items():
|
||||||
|
if key in merged:
|
||||||
|
merged[key] = merge_json_recursive(merged[key], value)
|
||||||
|
else:
|
||||||
|
merged[key] = value
|
||||||
|
|
||||||
|
return merged
|
||||||
@ -41,7 +41,7 @@ def get_sigmas_polyexponential(n, sigma_min, sigma_max, rho=1., device='cpu'):
|
|||||||
def get_sigmas_vp(n, beta_d=19.9, beta_min=0.1, eps_s=1e-3, device='cpu'):
|
def get_sigmas_vp(n, beta_d=19.9, beta_min=0.1, eps_s=1e-3, device='cpu'):
|
||||||
"""Constructs a continuous VP noise schedule."""
|
"""Constructs a continuous VP noise schedule."""
|
||||||
t = torch.linspace(1, eps_s, n, device=device)
|
t = torch.linspace(1, eps_s, n, device=device)
|
||||||
sigmas = torch.sqrt(torch.exp(beta_d * t ** 2 / 2 + beta_min * t) - 1)
|
sigmas = torch.sqrt(torch.special.expm1(beta_d * t ** 2 / 2 + beta_min * t))
|
||||||
return append_zero(sigmas)
|
return append_zero(sigmas)
|
||||||
|
|
||||||
|
|
||||||
@ -1380,3 +1380,26 @@ def sample_res_multistep(model, x, sigmas, extra_args=None, callback=None, disab
|
|||||||
@torch.no_grad()
|
@torch.no_grad()
|
||||||
def sample_res_multistep_cfg_pp(model, x, sigmas, extra_args=None, callback=None, disable=None, s_churn=0., s_tmin=0., s_tmax=float('inf'), s_noise=1., noise_sampler=None):
|
def sample_res_multistep_cfg_pp(model, x, sigmas, extra_args=None, callback=None, disable=None, s_churn=0., s_tmin=0., s_tmax=float('inf'), s_noise=1., noise_sampler=None):
|
||||||
return res_multistep(model, x, sigmas, extra_args=extra_args, callback=callback, disable=disable, s_churn=s_churn, s_tmin=s_tmin, s_tmax=s_tmax, s_noise=s_noise, noise_sampler=noise_sampler, cfg_pp=True)
|
return res_multistep(model, x, sigmas, extra_args=extra_args, callback=callback, disable=disable, s_churn=s_churn, s_tmin=s_tmin, s_tmax=s_tmax, s_noise=s_noise, noise_sampler=noise_sampler, cfg_pp=True)
|
||||||
|
|
||||||
|
@torch.no_grad()
|
||||||
|
def sample_gradient_estimation(model, x, sigmas, extra_args=None, callback=None, disable=None, ge_gamma=2.):
|
||||||
|
"""Gradient-estimation sampler. Paper: https://openreview.net/pdf?id=o2ND9v0CeK"""
|
||||||
|
extra_args = {} if extra_args is None else extra_args
|
||||||
|
s_in = x.new_ones([x.shape[0]])
|
||||||
|
old_d = None
|
||||||
|
|
||||||
|
for i in trange(len(sigmas) - 1, disable=disable):
|
||||||
|
denoised = model(x, sigmas[i] * s_in, **extra_args)
|
||||||
|
d = to_d(x, sigmas[i], denoised)
|
||||||
|
if callback is not None:
|
||||||
|
callback({'x': x, 'i': i, 'sigma': sigmas[i], 'sigma_hat': sigmas[i], 'denoised': denoised})
|
||||||
|
dt = sigmas[i + 1] - sigmas[i]
|
||||||
|
if i == 0:
|
||||||
|
# Euler method
|
||||||
|
x = x + d * dt
|
||||||
|
else:
|
||||||
|
# Gradient estimation
|
||||||
|
d_bar = ge_gamma * d + (1 - ge_gamma) * old_d
|
||||||
|
x = x + d_bar * dt
|
||||||
|
old_d = d
|
||||||
|
return x
|
||||||
|
|||||||
@ -293,7 +293,7 @@ class GeneralDIT(nn.Module):
|
|||||||
x_B_T_H_W_D = self.x_embedder(x_B_C_T_H_W)
|
x_B_T_H_W_D = self.x_embedder(x_B_C_T_H_W)
|
||||||
|
|
||||||
if self.extra_per_block_abs_pos_emb:
|
if self.extra_per_block_abs_pos_emb:
|
||||||
extra_pos_emb = self.extra_pos_embedder(x_B_T_H_W_D, fps=fps, device=x_B_C_T_H_W.device)
|
extra_pos_emb = self.extra_pos_embedder(x_B_T_H_W_D, fps=fps, device=x_B_C_T_H_W.device, dtype=x_B_C_T_H_W.dtype)
|
||||||
else:
|
else:
|
||||||
extra_pos_emb = None
|
extra_pos_emb = None
|
||||||
|
|
||||||
|
|||||||
@ -41,12 +41,12 @@ def normalize(x: torch.Tensor, dim: Optional[List[int]] = None, eps: float = 0)
|
|||||||
|
|
||||||
|
|
||||||
class VideoPositionEmb(nn.Module):
|
class VideoPositionEmb(nn.Module):
|
||||||
def forward(self, x_B_T_H_W_C: torch.Tensor, fps=Optional[torch.Tensor], device=None) -> torch.Tensor:
|
def forward(self, x_B_T_H_W_C: torch.Tensor, fps=Optional[torch.Tensor], device=None, dtype=None) -> torch.Tensor:
|
||||||
"""
|
"""
|
||||||
It delegates the embedding generation to generate_embeddings function.
|
It delegates the embedding generation to generate_embeddings function.
|
||||||
"""
|
"""
|
||||||
B_T_H_W_C = x_B_T_H_W_C.shape
|
B_T_H_W_C = x_B_T_H_W_C.shape
|
||||||
embeddings = self.generate_embeddings(B_T_H_W_C, fps=fps, device=device)
|
embeddings = self.generate_embeddings(B_T_H_W_C, fps=fps, device=device, dtype=dtype)
|
||||||
|
|
||||||
return embeddings
|
return embeddings
|
||||||
|
|
||||||
@ -104,6 +104,7 @@ class VideoRopePosition3DEmb(VideoPositionEmb):
|
|||||||
w_ntk_factor: Optional[float] = None,
|
w_ntk_factor: Optional[float] = None,
|
||||||
t_ntk_factor: Optional[float] = None,
|
t_ntk_factor: Optional[float] = None,
|
||||||
device=None,
|
device=None,
|
||||||
|
dtype=None,
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
Generate embeddings for the given input size.
|
Generate embeddings for the given input size.
|
||||||
@ -189,13 +190,12 @@ class LearnablePosEmbAxis(VideoPositionEmb):
|
|||||||
self.pos_emb_w = nn.Parameter(torch.empty(len_w, model_channels, device=device, dtype=dtype))
|
self.pos_emb_w = nn.Parameter(torch.empty(len_w, model_channels, device=device, dtype=dtype))
|
||||||
self.pos_emb_t = nn.Parameter(torch.empty(len_t, model_channels, device=device, dtype=dtype))
|
self.pos_emb_t = nn.Parameter(torch.empty(len_t, model_channels, device=device, dtype=dtype))
|
||||||
|
|
||||||
|
def generate_embeddings(self, B_T_H_W_C: torch.Size, fps=Optional[torch.Tensor], device=None, dtype=None) -> torch.Tensor:
|
||||||
def generate_embeddings(self, B_T_H_W_C: torch.Size, fps=Optional[torch.Tensor], device=None) -> torch.Tensor:
|
|
||||||
B, T, H, W, _ = B_T_H_W_C
|
B, T, H, W, _ = B_T_H_W_C
|
||||||
if self.interpolation == "crop":
|
if self.interpolation == "crop":
|
||||||
emb_h_H = self.pos_emb_h[:H].to(device=device)
|
emb_h_H = self.pos_emb_h[:H].to(device=device, dtype=dtype)
|
||||||
emb_w_W = self.pos_emb_w[:W].to(device=device)
|
emb_w_W = self.pos_emb_w[:W].to(device=device, dtype=dtype)
|
||||||
emb_t_T = self.pos_emb_t[:T].to(device=device)
|
emb_t_T = self.pos_emb_t[:T].to(device=device, dtype=dtype)
|
||||||
emb = (
|
emb = (
|
||||||
repeat(emb_t_T, "t d-> b t h w d", b=B, h=H, w=W)
|
repeat(emb_t_T, "t d-> b t h w d", b=B, h=H, w=W)
|
||||||
+ repeat(emb_h_H, "h d-> b t h w d", b=B, t=T, w=W)
|
+ repeat(emb_h_H, "h d-> b t h w d", b=B, t=T, w=W)
|
||||||
|
|||||||
@ -18,6 +18,7 @@ import logging
|
|||||||
import torch
|
import torch
|
||||||
from torch import nn
|
from torch import nn
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
import math
|
||||||
|
|
||||||
from .cosmos_tokenizer.layers3d import (
|
from .cosmos_tokenizer.layers3d import (
|
||||||
EncoderFactorized,
|
EncoderFactorized,
|
||||||
@ -105,17 +106,23 @@ class CausalContinuousVideoTokenizer(nn.Module):
|
|||||||
z, posteriors = self.distribution(moments)
|
z, posteriors = self.distribution(moments)
|
||||||
latent_ch = z.shape[1]
|
latent_ch = z.shape[1]
|
||||||
latent_t = z.shape[2]
|
latent_t = z.shape[2]
|
||||||
dtype = z.dtype
|
in_dtype = z.dtype
|
||||||
mean = self.latent_mean.view(latent_ch, -1)[:, : latent_t].reshape([1, latent_ch, -1, 1, 1]).to(dtype=dtype, device=z.device) # pylint: disable=unsubscriptable-object
|
mean = self.latent_mean.view(latent_ch, -1)
|
||||||
std = self.latent_std.view(latent_ch, -1)[:, : latent_t].reshape([1, latent_ch, -1, 1, 1]).to(dtype=dtype, device=z.device) # pylint: disable=unsubscriptable-object
|
std = self.latent_std.view(latent_ch, -1)
|
||||||
|
|
||||||
|
mean = mean.repeat(1, math.ceil(latent_t / mean.shape[-1]))[:, : latent_t].reshape([1, latent_ch, -1, 1, 1]).to(dtype=in_dtype, device=z.device) # pylint: disable=unsubscriptable-object
|
||||||
|
std = std.repeat(1, math.ceil(latent_t / std.shape[-1]))[:, : latent_t].reshape([1, latent_ch, -1, 1, 1]).to(dtype=in_dtype, device=z.device) # pylint: disable=unsubscriptable-object
|
||||||
return ((z - mean) / std) * self.sigma_data
|
return ((z - mean) / std) * self.sigma_data
|
||||||
|
|
||||||
def decode(self, z):
|
def decode(self, z):
|
||||||
in_dtype = z.dtype
|
in_dtype = z.dtype
|
||||||
latent_ch = z.shape[1]
|
latent_ch = z.shape[1]
|
||||||
latent_t = z.shape[2]
|
latent_t = z.shape[2]
|
||||||
mean = self.latent_mean.view(latent_ch, -1)[:, : latent_t].reshape([1, latent_ch, -1, 1, 1]).to(dtype=in_dtype, device=z.device) # pylint: disable=unsubscriptable-object
|
mean = self.latent_mean.view(latent_ch, -1)
|
||||||
std = self.latent_std.view(latent_ch, -1)[:, : latent_t].reshape([1, latent_ch, -1, 1, 1]).to(dtype=in_dtype, device=z.device) # pylint: disable=unsubscriptable-object
|
std = self.latent_std.view(latent_ch, -1)
|
||||||
|
|
||||||
|
mean = mean.repeat(1, math.ceil(latent_t / mean.shape[-1]))[:, : latent_t].reshape([1, latent_ch, -1, 1, 1]).to(dtype=in_dtype, device=z.device) # pylint: disable=unsubscriptable-object
|
||||||
|
std = std.repeat(1, math.ceil(latent_t / std.shape[-1]))[:, : latent_t].reshape([1, latent_ch, -1, 1, 1]).to(dtype=in_dtype, device=z.device) # pylint: disable=unsubscriptable-object
|
||||||
|
|
||||||
z = z / self.sigma_data
|
z = z / self.sigma_data
|
||||||
z = z * std + mean
|
z = z * std + mean
|
||||||
|
|||||||
@ -111,9 +111,8 @@ class Flux(nn.Module):
|
|||||||
img = self.img_in(img)
|
img = self.img_in(img)
|
||||||
vec = self.time_in(timestep_embedding(timesteps, 256).to(img.dtype))
|
vec = self.time_in(timestep_embedding(timesteps, 256).to(img.dtype))
|
||||||
if self.params.guidance_embed:
|
if self.params.guidance_embed:
|
||||||
if guidance is None:
|
if guidance is not None:
|
||||||
raise ValueError("Didn't get guidance strength for guidance distilled model.")
|
vec = vec + self.guidance_in(timestep_embedding(guidance, 256).to(img.dtype))
|
||||||
vec = vec + self.guidance_in(timestep_embedding(guidance, 256).to(img.dtype))
|
|
||||||
|
|
||||||
vec = vec + self.vector_in(y[:, :self.params.vec_in_dim])
|
vec = vec + self.vector_in(y[:, :self.params.vec_in_dim])
|
||||||
txt = self.txt_in(txt)
|
txt = self.txt_in(txt)
|
||||||
@ -188,7 +187,7 @@ class Flux(nn.Module):
|
|||||||
img = self.final_layer(img, vec) # (N, T, patch_size ** 2 * out_channels)
|
img = self.final_layer(img, vec) # (N, T, patch_size ** 2 * out_channels)
|
||||||
return img
|
return img
|
||||||
|
|
||||||
def forward(self, x, timestep, context, y, guidance, control=None, transformer_options={}, **kwargs):
|
def forward(self, x, timestep, context, y, guidance=None, control=None, transformer_options={}, **kwargs):
|
||||||
bs, c, h, w = x.shape
|
bs, c, h, w = x.shape
|
||||||
patch_size = self.patch_size
|
patch_size = self.patch_size
|
||||||
x = common_dit.pad_to_patch_size(x, (patch_size, patch_size))
|
x = common_dit.pad_to_patch_size(x, (patch_size, patch_size))
|
||||||
|
|||||||
@ -231,9 +231,8 @@ class HunyuanVideo(nn.Module):
|
|||||||
vec = vec + self.vector_in(y[:, :self.params.vec_in_dim])
|
vec = vec + self.vector_in(y[:, :self.params.vec_in_dim])
|
||||||
|
|
||||||
if self.params.guidance_embed:
|
if self.params.guidance_embed:
|
||||||
if guidance is None:
|
if guidance is not None:
|
||||||
raise ValueError("Didn't get guidance strength for guidance distilled model.")
|
vec = vec + self.guidance_in(timestep_embedding(guidance, 256).to(img.dtype))
|
||||||
vec = vec + self.guidance_in(timestep_embedding(guidance, 256).to(img.dtype))
|
|
||||||
|
|
||||||
if txt_mask is not None and not torch.is_floating_point(txt_mask):
|
if txt_mask is not None and not torch.is_floating_point(txt_mask):
|
||||||
txt_mask = (txt_mask - 1).to(img.dtype) * torch.finfo(img.dtype).max
|
txt_mask = (txt_mask - 1).to(img.dtype) * torch.finfo(img.dtype).max
|
||||||
@ -305,7 +304,7 @@ class HunyuanVideo(nn.Module):
|
|||||||
img = img.reshape(initial_shape)
|
img = img.reshape(initial_shape)
|
||||||
return img
|
return img
|
||||||
|
|
||||||
def forward(self, x, timestep, context, y, guidance, attention_mask=None, control=None, transformer_options={}, **kwargs):
|
def forward(self, x, timestep, context, y, guidance=None, attention_mask=None, control=None, transformer_options={}, **kwargs):
|
||||||
bs, c, t, h, w = x.shape
|
bs, c, t, h, w = x.shape
|
||||||
patch_size = self.patch_size
|
patch_size = self.patch_size
|
||||||
t_len = ((t + (patch_size[0] // 2)) // patch_size[0])
|
t_len = ((t + (patch_size[0] // 2)) // patch_size[0])
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
# pytorch_diffusion + derived encoder decoder
|
# pytorch_diffusion + derived encoder decoder
|
||||||
import logging
|
import logging
|
||||||
import math
|
import math
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import torch
|
import torch
|
||||||
import torch.nn as nn
|
import torch.nn as nn
|
||||||
@ -712,9 +711,6 @@ class Decoder(nn.Module):
|
|||||||
padding=1)
|
padding=1)
|
||||||
|
|
||||||
def forward(self, z, **kwargs):
|
def forward(self, z, **kwargs):
|
||||||
# assert z.shape[1:] == self.z_shape[1:]
|
|
||||||
self.last_z_shape = z.shape
|
|
||||||
|
|
||||||
# timestep embedding
|
# timestep embedding
|
||||||
temb = None
|
temb = None
|
||||||
|
|
||||||
|
|||||||
@ -164,7 +164,9 @@ class BaseModel(torch.nn.Module):
|
|||||||
|
|
||||||
xc = xc.to(dtype)
|
xc = xc.to(dtype)
|
||||||
t = self.model_sampling.timestep(t).float()
|
t = self.model_sampling.timestep(t).float()
|
||||||
context = context.to(dtype)
|
if context is not None:
|
||||||
|
context = context.to(dtype)
|
||||||
|
|
||||||
extra_conds = {}
|
extra_conds = {}
|
||||||
for o in kwargs:
|
for o in kwargs:
|
||||||
extra = kwargs[o]
|
extra = kwargs[o]
|
||||||
@ -575,6 +577,10 @@ class SD_X4Upscaler(BaseModel):
|
|||||||
|
|
||||||
out['c_concat'] = conds.CONDNoiseShape(image)
|
out['c_concat'] = conds.CONDNoiseShape(image)
|
||||||
out['y'] = conds.CONDRegular(noise_level)
|
out['y'] = conds.CONDRegular(noise_level)
|
||||||
|
|
||||||
|
cross_attn = kwargs.get("cross_attn", None)
|
||||||
|
if cross_attn is not None:
|
||||||
|
out['c_crossattn'] = comfy.conds.CONDCrossAttn(cross_attn)
|
||||||
return out
|
return out
|
||||||
|
|
||||||
|
|
||||||
@ -838,7 +844,10 @@ class Flux(BaseModel):
|
|||||||
(h_tok, w_tok) = (math.ceil(shape[2] / self.diffusion_model.patch_size), math.ceil(shape[3] / self.diffusion_model.patch_size))
|
(h_tok, w_tok) = (math.ceil(shape[2] / self.diffusion_model.patch_size), math.ceil(shape[3] / self.diffusion_model.patch_size))
|
||||||
attention_mask = utils.upscale_dit_mask(attention_mask, mask_ref_size, (h_tok, w_tok))
|
attention_mask = utils.upscale_dit_mask(attention_mask, mask_ref_size, (h_tok, w_tok))
|
||||||
out['attention_mask'] = conds.CONDRegular(attention_mask)
|
out['attention_mask'] = conds.CONDRegular(attention_mask)
|
||||||
out['guidance'] = conds.CONDRegular(torch.FloatTensor([kwargs.get("guidance", 3.5)]))
|
|
||||||
|
guidance = kwargs.get("guidance", 3.5)
|
||||||
|
if guidance is not None:
|
||||||
|
out['guidance'] = conds.CONDRegular(torch.FloatTensor([guidance]))
|
||||||
return out
|
return out
|
||||||
|
|
||||||
|
|
||||||
@ -898,7 +907,10 @@ class HunyuanVideo(BaseModel):
|
|||||||
cross_attn = kwargs.get("cross_attn", None)
|
cross_attn = kwargs.get("cross_attn", None)
|
||||||
if cross_attn is not None:
|
if cross_attn is not None:
|
||||||
out['c_crossattn'] = conds.CONDRegular(cross_attn)
|
out['c_crossattn'] = conds.CONDRegular(cross_attn)
|
||||||
out['guidance'] = conds.CONDRegular(torch.FloatTensor([kwargs.get("guidance", 6.0)]))
|
|
||||||
|
guidance = kwargs.get("guidance", 6.0)
|
||||||
|
if guidance is not None:
|
||||||
|
out['guidance'] = conds.CONDRegular(torch.FloatTensor([guidance]))
|
||||||
return out
|
return out
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -259,7 +259,7 @@ def is_amd():
|
|||||||
|
|
||||||
MIN_WEIGHT_MEMORY_RATIO = 0.4
|
MIN_WEIGHT_MEMORY_RATIO = 0.4
|
||||||
if is_nvidia():
|
if is_nvidia():
|
||||||
MIN_WEIGHT_MEMORY_RATIO = 0.2
|
MIN_WEIGHT_MEMORY_RATIO = 0.1
|
||||||
|
|
||||||
ENABLE_PYTORCH_ATTENTION = False
|
ENABLE_PYTORCH_ATTENTION = False
|
||||||
if args.use_pytorch_cross_attention:
|
if args.use_pytorch_cross_attention:
|
||||||
@ -616,14 +616,11 @@ def _load_models_gpu(models: Sequence[ModelManageable], memory_required: int = 0
|
|||||||
vram_set_state = vram_state
|
vram_set_state = vram_state
|
||||||
lowvram_model_memory = 0
|
lowvram_model_memory = 0
|
||||||
if lowvram_available and (vram_set_state == VRAMState.LOW_VRAM or vram_set_state == VRAMState.NORMAL_VRAM) and not force_full_load:
|
if lowvram_available and (vram_set_state == VRAMState.LOW_VRAM or vram_set_state == VRAMState.NORMAL_VRAM) and not force_full_load:
|
||||||
model_size = loaded_model.model_memory_required(torch_dev)
|
|
||||||
loaded_memory = loaded_model.model_loaded_memory()
|
loaded_memory = loaded_model.model_loaded_memory()
|
||||||
current_free_mem = get_free_memory(torch_dev) + loaded_memory
|
current_free_mem = get_free_memory(torch_dev) + loaded_memory
|
||||||
|
|
||||||
lowvram_model_memory = max(64 * 1024 * 1024, (current_free_mem - minimum_memory_required), min(current_free_mem * MIN_WEIGHT_MEMORY_RATIO, current_free_mem - minimum_inference_memory()))
|
lowvram_model_memory = max(64 * 1024 * 1024, (current_free_mem - minimum_memory_required), min(current_free_mem * MIN_WEIGHT_MEMORY_RATIO, current_free_mem - minimum_inference_memory()))
|
||||||
lowvram_model_memory = max(0.1, lowvram_model_memory - loaded_memory)
|
lowvram_model_memory = max(0.1, lowvram_model_memory - loaded_memory)
|
||||||
if model_size <= lowvram_model_memory: # only switch to lowvram if really necessary
|
|
||||||
lowvram_model_memory = 0
|
|
||||||
|
|
||||||
if vram_set_state == VRAMState.NO_VRAM:
|
if vram_set_state == VRAMState.NO_VRAM:
|
||||||
lowvram_model_memory = 0.1
|
lowvram_model_memory = 0.1
|
||||||
|
|||||||
@ -64,6 +64,8 @@ class CLIPTextEncode(ComfyNodeABC):
|
|||||||
DESCRIPTION = "Encodes a text prompt using a CLIP model into an embedding that can be used to guide the diffusion model towards generating specific images."
|
DESCRIPTION = "Encodes a text prompt using a CLIP model into an embedding that can be used to guide the diffusion model towards generating specific images."
|
||||||
|
|
||||||
def encode(self, clip, text):
|
def encode(self, clip, text):
|
||||||
|
if clip is None:
|
||||||
|
raise RuntimeError("ERROR: clip input is invalid: None\n\nIf the clip is from a checkpoint loader node your checkpoint does not contain a valid clip or text encoder model.")
|
||||||
tokens = clip.tokenize(text)
|
tokens = clip.tokenize(text)
|
||||||
return (clip.encode_from_tokens_scheduled(tokens), )
|
return (clip.encode_from_tokens_scheduled(tokens), )
|
||||||
|
|
||||||
@ -970,6 +972,8 @@ class CLIPLoader:
|
|||||||
clip_type = sd.CLIPType.LTXV
|
clip_type = sd.CLIPType.LTXV
|
||||||
elif type == "pixart":
|
elif type == "pixart":
|
||||||
clip_type = sd.CLIPType.PIXART
|
clip_type = sd.CLIPType.PIXART
|
||||||
|
elif type == "cosmos":
|
||||||
|
clip_type = comfy.sd.CLIPType.COSMOS
|
||||||
else:
|
else:
|
||||||
logging.warning(f"Unknown clip type argument passed: {type} for model {clip_name}")
|
logging.warning(f"Unknown clip type argument passed: {type} for model {clip_name}")
|
||||||
|
|
||||||
|
|||||||
@ -62,7 +62,6 @@ def convert_cond(cond):
|
|||||||
temp = c[1].copy()
|
temp = c[1].copy()
|
||||||
model_conds = temp.get("model_conds", {})
|
model_conds = temp.get("model_conds", {})
|
||||||
if c[0] is not None:
|
if c[0] is not None:
|
||||||
model_conds["c_crossattn"] = conds.CONDCrossAttn(c[0]) # TODO: remove
|
|
||||||
temp["cross_attn"] = c[0]
|
temp["cross_attn"] = c[0]
|
||||||
temp["model_conds"] = model_conds
|
temp["model_conds"] = model_conds
|
||||||
temp["uuid"] = uuid.uuid4()
|
temp["uuid"] = uuid.uuid4()
|
||||||
|
|||||||
@ -724,7 +724,7 @@ class Sampler:
|
|||||||
KSAMPLER_NAMES = ["euler", "euler_cfg_pp", "euler_ancestral", "euler_ancestral_cfg_pp", "heun", "heunpp2", "dpm_2", "dpm_2_ancestral",
|
KSAMPLER_NAMES = ["euler", "euler_cfg_pp", "euler_ancestral", "euler_ancestral_cfg_pp", "heun", "heunpp2", "dpm_2", "dpm_2_ancestral",
|
||||||
"lms", "dpm_fast", "dpm_adaptive", "dpmpp_2s_ancestral", "dpmpp_2s_ancestral_cfg_pp", "dpmpp_sde", "dpmpp_sde_gpu",
|
"lms", "dpm_fast", "dpm_adaptive", "dpmpp_2s_ancestral", "dpmpp_2s_ancestral_cfg_pp", "dpmpp_sde", "dpmpp_sde_gpu",
|
||||||
"dpmpp_2m", "dpmpp_2m_cfg_pp", "dpmpp_2m_sde", "dpmpp_2m_sde_gpu", "dpmpp_3m_sde", "dpmpp_3m_sde_gpu", "ddpm", "lcm",
|
"dpmpp_2m", "dpmpp_2m_cfg_pp", "dpmpp_2m_sde", "dpmpp_2m_sde_gpu", "dpmpp_3m_sde", "dpmpp_3m_sde_gpu", "ddpm", "lcm",
|
||||||
"ipndm", "ipndm_v", "deis", "res_multistep", "res_multistep_cfg_pp"]
|
"ipndm", "ipndm_v", "deis", "res_multistep", "res_multistep_cfg_pp", "gradient_estimation"]
|
||||||
|
|
||||||
|
|
||||||
class KSAMPLER(Sampler):
|
class KSAMPLER(Sampler):
|
||||||
|
|||||||
@ -65,6 +65,9 @@ if hasattr(torch.serialization, "add_safe_globals"): # TODO: this was added in
|
|||||||
torch.serialization.add_safe_globals([ModelCheckpoint, scalar, dtype, Float64DType, encode])
|
torch.serialization.add_safe_globals([ModelCheckpoint, scalar, dtype, Float64DType, encode])
|
||||||
ALWAYS_SAFE_LOAD = True
|
ALWAYS_SAFE_LOAD = True
|
||||||
logging.debug("Checkpoint files will always be loaded safely.")
|
logging.debug("Checkpoint files will always be loaded safely.")
|
||||||
|
else:
|
||||||
|
logging.debug("Warning, you are using an old pytorch version and some ckpt/pt files might be loaded unsafely. Upgrading to 2.4 or above is recommended.")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# deprecate PROGRESS_BAR_ENABLED
|
# deprecate PROGRESS_BAR_ENABLED
|
||||||
@ -86,7 +89,16 @@ def load_torch_file(ckpt: str, safe_load=False, device=None):
|
|||||||
if ckpt is None:
|
if ckpt is None:
|
||||||
raise FileNotFoundError("the checkpoint was not found")
|
raise FileNotFoundError("the checkpoint was not found")
|
||||||
if ckpt.lower().endswith(".safetensors") or ckpt.lower().endswith(".sft"):
|
if ckpt.lower().endswith(".safetensors") or ckpt.lower().endswith(".sft"):
|
||||||
sd = safetensors.torch.load_file(Path(ckpt).resolve(strict=True), device=device.type)
|
try:
|
||||||
|
sd = safetensors.torch.load_file(Path(ckpt).resolve(strict=True), device=device.type)
|
||||||
|
except Exception as e:
|
||||||
|
if len(e.args) > 0:
|
||||||
|
message = e.args[0]
|
||||||
|
if "HeaderTooLarge" in message:
|
||||||
|
raise ValueError("{}\n\nFile path: {}\n\nThe safetensors file is corrupt or invalid. Make sure this is actually a safetensors file and not a ckpt or pt or other filetype.".format(message, ckpt))
|
||||||
|
if "MetadataIncompleteBuffer" in message:
|
||||||
|
raise ValueError("{}\n\nFile path: {}\n\nThe safetensors file is incomplete. Check the file size and make sure you have copied/downloaded it correctly.".format(message, ckpt))
|
||||||
|
raise e
|
||||||
elif ckpt.lower().endswith("index.json"):
|
elif ckpt.lower().endswith("index.json"):
|
||||||
# from accelerate
|
# from accelerate
|
||||||
index_filename = ckpt
|
index_filename = ckpt
|
||||||
|
|||||||
54
comfy/web/assets/BaseViewTemplate-BhQMaVFP.js
generated
vendored
Normal file
54
comfy/web/assets/BaseViewTemplate-BhQMaVFP.js
generated
vendored
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
import { d as defineComponent, ad as ref, t as onMounted, bT as isElectron, bV as electronAPI, af as nextTick, o as openBlock, f as createElementBlock, i as withDirectives, v as vShow, m as createBaseVNode, M as renderSlot, V as normalizeClass } from "./index-QvfM__ze.js";
|
||||||
|
const _hoisted_1 = { class: "flex-grow w-full flex items-center justify-center overflow-auto" };
|
||||||
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||||
|
__name: "BaseViewTemplate",
|
||||||
|
props: {
|
||||||
|
dark: { type: Boolean, default: false }
|
||||||
|
},
|
||||||
|
setup(__props) {
|
||||||
|
const props = __props;
|
||||||
|
const darkTheme = {
|
||||||
|
color: "rgba(0, 0, 0, 0)",
|
||||||
|
symbolColor: "#d4d4d4"
|
||||||
|
};
|
||||||
|
const lightTheme = {
|
||||||
|
color: "rgba(0, 0, 0, 0)",
|
||||||
|
symbolColor: "#171717"
|
||||||
|
};
|
||||||
|
const topMenuRef = ref(null);
|
||||||
|
const isNativeWindow = ref(false);
|
||||||
|
onMounted(async () => {
|
||||||
|
if (isElectron()) {
|
||||||
|
const windowStyle = await electronAPI().Config.getWindowStyle();
|
||||||
|
isNativeWindow.value = windowStyle === "custom";
|
||||||
|
await nextTick();
|
||||||
|
electronAPI().changeTheme({
|
||||||
|
...props.dark ? darkTheme : lightTheme,
|
||||||
|
height: topMenuRef.value.getBoundingClientRect().height
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return (_ctx, _cache) => {
|
||||||
|
return openBlock(), createElementBlock("div", {
|
||||||
|
class: normalizeClass(["font-sans w-screen h-screen flex flex-col pointer-events-auto", [
|
||||||
|
props.dark ? "text-neutral-300 bg-neutral-900 dark-theme" : "text-neutral-900 bg-neutral-300"
|
||||||
|
]])
|
||||||
|
}, [
|
||||||
|
withDirectives(createBaseVNode("div", {
|
||||||
|
ref_key: "topMenuRef",
|
||||||
|
ref: topMenuRef,
|
||||||
|
class: "app-drag w-full h-[var(--comfy-topbar-height)]"
|
||||||
|
}, null, 512), [
|
||||||
|
[vShow, isNativeWindow.value]
|
||||||
|
]),
|
||||||
|
createBaseVNode("div", _hoisted_1, [
|
||||||
|
renderSlot(_ctx.$slots, "default")
|
||||||
|
])
|
||||||
|
], 2);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
export {
|
||||||
|
_sfc_main as _
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=BaseViewTemplate-BhQMaVFP.js.map
|
||||||
22
comfy/web/assets/DesktopStartView-le6AjGZr.js
generated
vendored
Normal file
22
comfy/web/assets/DesktopStartView-le6AjGZr.js
generated
vendored
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import { d as defineComponent, o as openBlock, J as createBlock, P as withCtx, m as createBaseVNode, k as createVNode, j as unref, ch as script } from "./index-QvfM__ze.js";
|
||||||
|
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BhQMaVFP.js";
|
||||||
|
const _hoisted_1 = { class: "max-w-screen-sm w-screen p-8" };
|
||||||
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||||
|
__name: "DesktopStartView",
|
||||||
|
setup(__props) {
|
||||||
|
return (_ctx, _cache) => {
|
||||||
|
return openBlock(), createBlock(_sfc_main$1, { dark: "" }, {
|
||||||
|
default: withCtx(() => [
|
||||||
|
createBaseVNode("div", _hoisted_1, [
|
||||||
|
createVNode(unref(script), { mode: "indeterminate" })
|
||||||
|
])
|
||||||
|
]),
|
||||||
|
_: 1
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
export {
|
||||||
|
_sfc_main as default
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=DesktopStartView-le6AjGZr.js.map
|
||||||
@ -1,7 +1,12 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/DownloadGitView-B0K5WWed.js
|
||||||
import { d as defineComponent, o as openBlock, H as createBlock, N as withCtx, m as createBaseVNode, X as toDisplayString, k as createVNode, j as unref, l as script, c0 as useRouter } from "./index-Du3ctekX.js";
|
import { d as defineComponent, o as openBlock, H as createBlock, N as withCtx, m as createBaseVNode, X as toDisplayString, k as createVNode, j as unref, l as script, c0 as useRouter } from "./index-Du3ctekX.js";
|
||||||
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BG-_HPdC.js";
|
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BG-_HPdC.js";
|
||||||
|
========
|
||||||
|
import { d as defineComponent, o as openBlock, J as createBlock, P as withCtx, m as createBaseVNode, Z as toDisplayString, k as createVNode, j as unref, l as script, c2 as useRouter } from "./index-QvfM__ze.js";
|
||||||
|
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BhQMaVFP.js";
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/DownloadGitView-rPK_vYgU.js
|
||||||
const _hoisted_1 = { class: "max-w-screen-sm flex flex-col gap-8 p-8 bg-[url('/assets/images/Git-Logo-White.svg')] bg-no-repeat bg-right-top bg-origin-padding" };
|
const _hoisted_1 = { class: "max-w-screen-sm flex flex-col gap-8 p-8 bg-[url('/assets/images/Git-Logo-White.svg')] bg-no-repeat bg-right-top bg-origin-padding" };
|
||||||
const _hoisted_2 = { class: "mt-24 text-4xl font-bold text-red-500" };
|
const _hoisted_2 = { class: "mt-24 text-4xl font-bold text-red-500" };
|
||||||
const _hoisted_3 = { class: "space-y-4" };
|
const _hoisted_3 = { class: "space-y-4" };
|
||||||
@ -55,4 +60,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|||||||
export {
|
export {
|
||||||
_sfc_main as default
|
_sfc_main as default
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/DownloadGitView-B0K5WWed.js
|
||||||
//# sourceMappingURL=DownloadGitView-B0K5WWed.js.map
|
//# sourceMappingURL=DownloadGitView-B0K5WWed.js.map
|
||||||
|
========
|
||||||
|
//# sourceMappingURL=DownloadGitView-rPK_vYgU.js.map
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/DownloadGitView-rPK_vYgU.js
|
||||||
@ -1,8 +1,14 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/ExtensionPanel-DUEsdkuv.js
|
||||||
import { d as defineComponent, ab as ref, cr as FilterMatchMode, cw as useExtensionStore, a as useSettingStore, p as onMounted, c as computed, o as openBlock, H as createBlock, N as withCtx, k as createVNode, cs as SearchBox, j as unref, c4 as script, m as createBaseVNode, f as createElementBlock, G as renderList, X as toDisplayString, aF as createTextVNode, F as Fragment, l as script$1, J as createCommentVNode, aJ as script$3, b7 as script$4, ca as script$5, ct as _sfc_main$1 } from "./index-Du3ctekX.js";
|
import { d as defineComponent, ab as ref, cr as FilterMatchMode, cw as useExtensionStore, a as useSettingStore, p as onMounted, c as computed, o as openBlock, H as createBlock, N as withCtx, k as createVNode, cs as SearchBox, j as unref, c4 as script, m as createBaseVNode, f as createElementBlock, G as renderList, X as toDisplayString, aF as createTextVNode, F as Fragment, l as script$1, J as createCommentVNode, aJ as script$3, b7 as script$4, ca as script$5, ct as _sfc_main$1 } from "./index-Du3ctekX.js";
|
||||||
import { s as script$2, a as script$6 } from "./index-BV_B5E0F.js";
|
import { s as script$2, a as script$6 } from "./index-BV_B5E0F.js";
|
||||||
import "./index-Bg6k6_F8.js";
|
import "./index-Bg6k6_F8.js";
|
||||||
|
========
|
||||||
|
import { d as defineComponent, ad as ref, cu as FilterMatchMode, cz as useExtensionStore, a as useSettingStore, t as onMounted, c as computed, o as openBlock, J as createBlock, P as withCtx, k as createVNode, cv as SearchBox, j as unref, c6 as script, m as createBaseVNode, f as createElementBlock, I as renderList, Z as toDisplayString, aG as createTextVNode, H as Fragment, l as script$1, L as createCommentVNode, aK as script$3, b8 as script$4, cc as script$5, cw as _sfc_main$1 } from "./index-QvfM__ze.js";
|
||||||
|
import { s as script$2, a as script$6 } from "./index-DpF-ptbJ.js";
|
||||||
|
import "./index-Q1cQr26V.js";
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/ExtensionPanel-3jWrm6Zi.js
|
||||||
const _hoisted_1 = { class: "flex justify-end" };
|
const _hoisted_1 = { class: "flex justify-end" };
|
||||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||||
__name: "ExtensionPanel",
|
__name: "ExtensionPanel",
|
||||||
@ -179,4 +185,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|||||||
export {
|
export {
|
||||||
_sfc_main as default
|
_sfc_main as default
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/ExtensionPanel-DUEsdkuv.js
|
||||||
//# sourceMappingURL=ExtensionPanel-DUEsdkuv.js.map
|
//# sourceMappingURL=ExtensionPanel-DUEsdkuv.js.map
|
||||||
|
========
|
||||||
|
//# sourceMappingURL=ExtensionPanel-3jWrm6Zi.js.map
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/ExtensionPanel-3jWrm6Zi.js
|
||||||
412
comfy/web/assets/GraphView-CcbopFEU.js → comfy/web/assets/GraphView-CDDCHVO0.js
generated
vendored
412
comfy/web/assets/GraphView-CcbopFEU.js → comfy/web/assets/GraphView-CDDCHVO0.js
generated
vendored
@ -1,9 +1,16 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
import { d as defineComponent, u as useExecutionStore, c as computed, a as useSettingStore, b as useWorkflowStore, e as useTitle, o as openBlock, f as createElementBlock, g as useWorkspaceStore, w as watchEffect, h as app, r as resolveDirective, i as withDirectives, v as vShow, j as unref, k as createVNode, s as showNativeMenu, l as script$f, m as createBaseVNode, n as normalizeStyle, _ as _export_sfc, p as onMounted, q as onBeforeUnmount, B as BaseStyle, t as script$g, x as getWidth, y as getHeight, z as getOuterWidth, A as getOuterHeight, C as getVNodeProp, D as isArray, E as mergeProps, F as Fragment, G as renderList, H as createBlock, I as resolveDynamicComponent, J as createCommentVNode, K as renderSlot, L as useSidebarTabStore, M as useBottomPanelStore, N as withCtx, O as getAttribute, P as findSingle, Q as focus, R as equals, S as Ripple, T as normalizeClass, U as getOffset, V as script$h, W as script$i, X as toDisplayString, Y as script$j, Z as markRaw, $ as defineStore, a0 as shallowRef, a1 as useI18n, a2 as useCommandStore, a3 as LiteGraph, a4 as useColorPaletteStore, a5 as watch, a6 as useNodeDefStore, a7 as BadgePosition, a8 as LGraphBadge, a9 as _, aa as NodeBadgeMode, ab as ref, ac as useEventListener, ad as nextTick, ae as st, af as normalizeI18nKey, ag as LGraphGroup, ah as LGraphNode, ai as EditableText, aj as isNotEmpty, ak as script$k, al as UniqueComponentId, am as ZIndex, an as resolveFieldData, ao as OverlayEventBus, ap as isEmpty, aq as addStyle, ar as relativePosition, as as absolutePosition, at as ConnectedOverlayScrollHandler, au as isTouchDevice, av as findLastIndex, aw as script$l, ax as script$m, ay as script$n, az as script$o, aA as script$p, aB as script$q, aC as resolveComponent, aD as Transition, aE as createSlots, aF as createTextVNode, aG as useNodeFrequencyStore, aH as useNodeBookmarkStore, aI as highlightQuery, aJ as script$r, aK as formatNumberWithSuffix, aL as NodeSourceType, aM as NodePreview, aN as NodeSearchFilter, aO as script$s, aP as SearchFilterChip, aQ as useLitegraphService, aR as storeToRefs, aS as isRef, aT as toRaw, aU as LinkReleaseTriggerAction, aV as script$t, aW as useUserStore, aX as useDialogStore, aY as SettingDialogHeader, aZ as SettingDialogContent, a_ as useKeybindingStore, a$ as Teleport, b0 as usePragmaticDraggable, b1 as usePragmaticDroppable, b2 as withModifiers, b3 as useWorkflowService, b4 as useWorkflowBookmarkStore, b5 as script$u, b6 as script$v, b7 as script$w, b8 as LinkMarkerShape, b9 as useModelToNodeStore, ba as getStorageValue, bb as CanvasPointer, bc as IS_CONTROL_WIDGET, bd as updateControlWidgetLabel, be as useColorPaletteService, bf as setStorageValue, bg as api, bh as LGraph, bi as LLink, bj as DragAndScale, bk as LGraphCanvas, bl as ContextMenu, bm as ChangeTracker, bn as ComfyNodeDefImpl, bo as ComfyModelDef, bp as script$x, bq as script$y, br as script$z, bs as script$A, bt as normalizeProps, bu as ToastEventBus, bv as setAttribute, bw as TransitionGroup, bx as useToast, by as useToastStore, bz as resolve, bA as nestedPosition, bB as script$B, bC as isPrintableCharacter, bD as useQueueSettingsStore, bE as script$C, bF as useQueuePendingTaskCountStore, bG as useLocalStorage, bH as useDraggable, bI as watchDebounced, bJ as inject, bK as useElementBounding, bL as script$D, bM as lodashExports, bN as useEventBus, bO as script$E, bP as guardReactiveProps, bQ as useMenuItemStore, bR as isElectron, bS as provide, bT as electronAPI, bU as useDialogService, bV as LGraphEventMode, bW as useQueueStore, bX as DEFAULT_DARK_COLOR_PALETTE, bY as DEFAULT_LIGHT_COLOR_PALETTE, bZ as i18n, b_ as useErrorHandling, b$ as useModelStore } from "./index-Du3ctekX.js";
|
import { d as defineComponent, u as useExecutionStore, c as computed, a as useSettingStore, b as useWorkflowStore, e as useTitle, o as openBlock, f as createElementBlock, g as useWorkspaceStore, w as watchEffect, h as app, r as resolveDirective, i as withDirectives, v as vShow, j as unref, k as createVNode, s as showNativeMenu, l as script$f, m as createBaseVNode, n as normalizeStyle, _ as _export_sfc, p as onMounted, q as onBeforeUnmount, B as BaseStyle, t as script$g, x as getWidth, y as getHeight, z as getOuterWidth, A as getOuterHeight, C as getVNodeProp, D as isArray, E as mergeProps, F as Fragment, G as renderList, H as createBlock, I as resolveDynamicComponent, J as createCommentVNode, K as renderSlot, L as useSidebarTabStore, M as useBottomPanelStore, N as withCtx, O as getAttribute, P as findSingle, Q as focus, R as equals, S as Ripple, T as normalizeClass, U as getOffset, V as script$h, W as script$i, X as toDisplayString, Y as script$j, Z as markRaw, $ as defineStore, a0 as shallowRef, a1 as useI18n, a2 as useCommandStore, a3 as LiteGraph, a4 as useColorPaletteStore, a5 as watch, a6 as useNodeDefStore, a7 as BadgePosition, a8 as LGraphBadge, a9 as _, aa as NodeBadgeMode, ab as ref, ac as useEventListener, ad as nextTick, ae as st, af as normalizeI18nKey, ag as LGraphGroup, ah as LGraphNode, ai as EditableText, aj as isNotEmpty, ak as script$k, al as UniqueComponentId, am as ZIndex, an as resolveFieldData, ao as OverlayEventBus, ap as isEmpty, aq as addStyle, ar as relativePosition, as as absolutePosition, at as ConnectedOverlayScrollHandler, au as isTouchDevice, av as findLastIndex, aw as script$l, ax as script$m, ay as script$n, az as script$o, aA as script$p, aB as script$q, aC as resolveComponent, aD as Transition, aE as createSlots, aF as createTextVNode, aG as useNodeFrequencyStore, aH as useNodeBookmarkStore, aI as highlightQuery, aJ as script$r, aK as formatNumberWithSuffix, aL as NodeSourceType, aM as NodePreview, aN as NodeSearchFilter, aO as script$s, aP as SearchFilterChip, aQ as useLitegraphService, aR as storeToRefs, aS as isRef, aT as toRaw, aU as LinkReleaseTriggerAction, aV as script$t, aW as useUserStore, aX as useDialogStore, aY as SettingDialogHeader, aZ as SettingDialogContent, a_ as useKeybindingStore, a$ as Teleport, b0 as usePragmaticDraggable, b1 as usePragmaticDroppable, b2 as withModifiers, b3 as useWorkflowService, b4 as useWorkflowBookmarkStore, b5 as script$u, b6 as script$v, b7 as script$w, b8 as LinkMarkerShape, b9 as useModelToNodeStore, ba as getStorageValue, bb as CanvasPointer, bc as IS_CONTROL_WIDGET, bd as updateControlWidgetLabel, be as useColorPaletteService, bf as setStorageValue, bg as api, bh as LGraph, bi as LLink, bj as DragAndScale, bk as LGraphCanvas, bl as ContextMenu, bm as ChangeTracker, bn as ComfyNodeDefImpl, bo as ComfyModelDef, bp as script$x, bq as script$y, br as script$z, bs as script$A, bt as normalizeProps, bu as ToastEventBus, bv as setAttribute, bw as TransitionGroup, bx as useToast, by as useToastStore, bz as resolve, bA as nestedPosition, bB as script$B, bC as isPrintableCharacter, bD as useQueueSettingsStore, bE as script$C, bF as useQueuePendingTaskCountStore, bG as useLocalStorage, bH as useDraggable, bI as watchDebounced, bJ as inject, bK as useElementBounding, bL as script$D, bM as lodashExports, bN as useEventBus, bO as script$E, bP as guardReactiveProps, bQ as useMenuItemStore, bR as isElectron, bS as provide, bT as electronAPI, bU as useDialogService, bV as LGraphEventMode, bW as useQueueStore, bX as DEFAULT_DARK_COLOR_PALETTE, bY as DEFAULT_LIGHT_COLOR_PALETTE, bZ as i18n, b_ as useErrorHandling, b$ as useModelStore } from "./index-Du3ctekX.js";
|
||||||
import { s as script$F } from "./index-Bg6k6_F8.js";
|
import { s as script$F } from "./index-Bg6k6_F8.js";
|
||||||
import { u as useKeybindingService } from "./keybindingService-GjQNTASR.js";
|
import { u as useKeybindingService } from "./keybindingService-GjQNTASR.js";
|
||||||
import { u as useServerConfigStore } from "./serverConfigStore-B0br_pYH.js";
|
import { u as useServerConfigStore } from "./serverConfigStore-B0br_pYH.js";
|
||||||
|
========
|
||||||
|
import { d as defineComponent, u as useExecutionStore, c as computed, a as useSettingStore, b as useWorkflowStore, e as useTitle, o as openBlock, f as createElementBlock, g as useWorkspaceStore, w as watchEffect, h as app, r as resolveDirective, i as withDirectives, v as vShow, j as unref, k as createVNode, s as showNativeMenu, l as script$d, m as createBaseVNode, n as normalizeStyle, p as pushScopeId, q as popScopeId, _ as _export_sfc, t as onMounted, x as onBeforeUnmount, B as BaseStyle, y as script$e, z as getWidth, A as getHeight, C as getOuterWidth, D as getOuterHeight, E as getVNodeProp, F as isArray, G as mergeProps, H as Fragment, I as renderList, J as createBlock, K as resolveDynamicComponent, L as createCommentVNode, M as renderSlot, N as useSidebarTabStore, O as useBottomPanelStore, P as withCtx, Q as getAttribute, R as findSingle, S as focus, T as equals, U as Ripple, V as normalizeClass, W as getOffset, X as script$f, Y as script$g, Z as toDisplayString, $ as script$h, a0 as markRaw, a1 as defineStore, a2 as shallowRef, a3 as useI18n, a4 as useCommandStore, a5 as LiteGraph, a6 as useColorPaletteStore, a7 as watch, a8 as useNodeDefStore, a9 as BadgePosition, aa as LGraphBadge, ab as _, ac as NodeBadgeMode, ad as ref, ae as useEventListener, af as nextTick, ag as st, ah as normalizeI18nKey, ai as LGraphGroup, aj as LGraphNode, ak as EditableText, al as isNotEmpty, am as UniqueComponentId, an as ZIndex, ao as resolveFieldData, ap as OverlayEventBus, aq as isEmpty, ar as addStyle, as as relativePosition, at as absolutePosition, au as ConnectedOverlayScrollHandler, av as isTouchDevice, aw as findLastIndex, ax as script$i, ay as script$j, az as script$k, aA as script$l, aB as script$m, aC as script$n, aD as resolveComponent, aE as Transition, aF as createSlots, aG as createTextVNode, aH as useNodeFrequencyStore, aI as useNodeBookmarkStore, aJ as highlightQuery, aK as script$o, aL as formatNumberWithSuffix, aM as NodeSourceType, aN as NodePreview, aO as NodeSearchFilter, aP as script$p, aQ as SearchFilterChip, aR as useLitegraphService, aS as storeToRefs, aT as isRef, aU as toRaw, aV as LinkReleaseTriggerAction, aW as script$q, aX as useUserStore, aY as useDialogStore, aZ as SettingDialogHeader, a_ as SettingDialogContent, a$ as useKeybindingStore, b0 as Teleport, b1 as usePragmaticDraggable, b2 as usePragmaticDroppable, b3 as withModifiers, b4 as useWorkflowService, b5 as useWorkflowBookmarkStore, b6 as script$r, b7 as script$s, b8 as script$t, b9 as LinkMarkerShape, ba as useModelToNodeStore, bb as getStorageValue, bc as CanvasPointer, bd as IS_CONTROL_WIDGET, be as updateControlWidgetLabel, bf as useColorPaletteService, bg as setStorageValue, bh as api, bi as LGraph, bj as LLink, bk as DragAndScale, bl as LGraphCanvas, bm as ContextMenu, bn as ChangeTracker, bo as ComfyNodeDefImpl, bp as ComfyModelDef, bq as script$u, br as script$v, bs as script$w, bt as script$x, bu as script$y, bv as normalizeProps, bw as ToastEventBus, bx as setAttribute, by as TransitionGroup, bz as useToast, bA as useToastStore, bB as resolve, bC as nestedPosition, bD as script$z, bE as isPrintableCharacter, bF as useQueueSettingsStore, bG as script$A, bH as useQueuePendingTaskCountStore, bI as useLocalStorage, bJ as useDraggable, bK as watchDebounced, bL as inject, bM as useElementBounding, bN as script$B, bO as lodashExports, bP as useEventBus, bQ as script$C, bR as guardReactiveProps, bS as useMenuItemStore, bT as isElectron, bU as provide, bV as electronAPI, bW as useDialogService, bX as LGraphEventMode, bY as useQueueStore, bZ as DEFAULT_DARK_COLOR_PALETTE, b_ as DEFAULT_LIGHT_COLOR_PALETTE, b$ as i18n, c0 as useErrorHandling, c1 as useModelStore } from "./index-QvfM__ze.js";
|
||||||
|
import { s as script$D } from "./index-Q1cQr26V.js";
|
||||||
|
import { u as useKeybindingService } from "./keybindingService-Cak1En5n.js";
|
||||||
|
import { u as useServerConfigStore } from "./serverConfigStore-DCme3xlV.js";
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
const DEFAULT_TITLE = "ComfyUI";
|
const DEFAULT_TITLE = "ComfyUI";
|
||||||
const TITLE_SUFFIX = " - ComfyUI";
|
const TITLE_SUFFIX = " - ComfyUI";
|
||||||
const _sfc_main$u = /* @__PURE__ */ defineComponent({
|
const _sfc_main$u = /* @__PURE__ */ defineComponent({
|
||||||
@ -38,6 +45,10 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
|
========
|
||||||
|
const _withScopeId$9 = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-7ed57d1a"), n = n(), popScopeId(), n), "_withScopeId$9");
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
const _hoisted_1$q = { class: "window-actions-spacer" };
|
const _hoisted_1$q = { class: "window-actions-spacer" };
|
||||||
const _sfc_main$t = /* @__PURE__ */ defineComponent({
|
const _sfc_main$t = /* @__PURE__ */ defineComponent({
|
||||||
__name: "MenuHamburger",
|
__name: "MenuHamburger",
|
||||||
@ -71,7 +82,11 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
|
|||||||
class: "comfy-menu-hamburger no-drag",
|
class: "comfy-menu-hamburger no-drag",
|
||||||
style: normalizeStyle(positionCSS.value)
|
style: normalizeStyle(positionCSS.value)
|
||||||
}, [
|
}, [
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
withDirectives(createVNode(unref(script$f), {
|
withDirectives(createVNode(unref(script$f), {
|
||||||
|
========
|
||||||
|
withDirectives(createVNode(unref(script$d), {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
icon: "pi pi-bars",
|
icon: "pi pi-bars",
|
||||||
severity: "secondary",
|
severity: "secondary",
|
||||||
text: "",
|
text: "",
|
||||||
@ -587,8 +602,13 @@ var script$e = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
var _hoisted_1$p = ["onMousedown", "onTouchstart", "onTouchmove", "onTouchend"];
|
var _hoisted_1$p = ["onMousedown", "onTouchstart", "onTouchmove", "onTouchend"];
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
var _hoisted_2$b = ["aria-orientation", "aria-valuenow", "onKeydown"];
|
var _hoisted_2$b = ["aria-orientation", "aria-valuenow", "onKeydown"];
|
||||||
function render$l(_ctx, _cache, $props, $setup, $data, $options) {
|
function render$l(_ctx, _cache, $props, $setup, $data, $options) {
|
||||||
|
========
|
||||||
|
var _hoisted_2$j = ["aria-orientation", "aria-valuenow", "onKeydown"];
|
||||||
|
function render$j(_ctx, _cache, $props, $setup, $data, $options) {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
return openBlock(), createElementBlock("div", mergeProps({
|
return openBlock(), createElementBlock("div", mergeProps({
|
||||||
"class": _ctx.cx("root"),
|
"class": _ctx.cx("root"),
|
||||||
style: _ctx.sx("root"),
|
style: _ctx.sx("root"),
|
||||||
@ -631,7 +651,11 @@ function render$l(_ctx, _cache, $props, $setup, $data, $options) {
|
|||||||
return $options.onGutterKeyDown($event, i);
|
return $options.onGutterKeyDown($event, i);
|
||||||
}, "onKeydown"),
|
}, "onKeydown"),
|
||||||
ref_for: true
|
ref_for: true
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
}, _ctx.ptm("gutterHandle")), null, 16, _hoisted_2$b)], 16, _hoisted_1$p)) : createCommentVNode("", true)], 64);
|
}, _ctx.ptm("gutterHandle")), null, 16, _hoisted_2$b)], 16, _hoisted_1$p)) : createCommentVNode("", true)], 64);
|
||||||
|
========
|
||||||
|
}, _ctx.ptm("gutterHandle")), null, 16, _hoisted_2$j)], 16, _hoisted_1$p)) : createCommentVNode("", true)], 64);
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
}), 128))], 16);
|
}), 128))], 16);
|
||||||
}
|
}
|
||||||
__name(render$l, "render$l");
|
__name(render$l, "render$l");
|
||||||
@ -701,8 +725,13 @@ function render$k(_ctx, _cache, $props, $setup, $data, $options) {
|
|||||||
"class": _ctx.cx("root")
|
"class": _ctx.cx("root")
|
||||||
}, _ctx.ptmi("root", $options.getPTOptions)), [renderSlot(_ctx.$slots, "default")], 16);
|
}, _ctx.ptmi("root", $options.getPTOptions)), [renderSlot(_ctx.$slots, "default")], 16);
|
||||||
}
|
}
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
__name(render$k, "render$k");
|
__name(render$k, "render$k");
|
||||||
script$d.render = render$k;
|
script$d.render = render$k;
|
||||||
|
========
|
||||||
|
__name(render$i, "render$i");
|
||||||
|
script$b.render = render$i;
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
const _sfc_main$r = /* @__PURE__ */ defineComponent({
|
const _sfc_main$r = /* @__PURE__ */ defineComponent({
|
||||||
__name: "LiteGraphCanvasSplitterOverlay",
|
__name: "LiteGraphCanvasSplitterOverlay",
|
||||||
setup(__props) {
|
setup(__props) {
|
||||||
@ -1190,9 +1219,15 @@ var script$b = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
var _hoisted_1$o = ["aria-label", "tabindex"];
|
var _hoisted_1$o = ["aria-label", "tabindex"];
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
var _hoisted_2$a = ["aria-orientation"];
|
var _hoisted_2$a = ["aria-orientation"];
|
||||||
var _hoisted_3$9 = ["aria-label", "tabindex"];
|
var _hoisted_3$9 = ["aria-label", "tabindex"];
|
||||||
function render$i(_ctx, _cache, $props, $setup, $data, $options) {
|
function render$i(_ctx, _cache, $props, $setup, $data, $options) {
|
||||||
|
========
|
||||||
|
var _hoisted_2$i = ["aria-orientation"];
|
||||||
|
var _hoisted_3$h = ["aria-label", "tabindex"];
|
||||||
|
function render$g(_ctx, _cache, $props, $setup, $data, $options) {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
var _directive_ripple = resolveDirective("ripple");
|
var _directive_ripple = resolveDirective("ripple");
|
||||||
return openBlock(), createElementBlock("div", mergeProps({
|
return openBlock(), createElementBlock("div", mergeProps({
|
||||||
ref: "list",
|
ref: "list",
|
||||||
@ -1239,10 +1274,17 @@ function render$i(_ctx, _cache, $props, $setup, $data, $options) {
|
|||||||
"data-pc-group-section": "navigator"
|
"data-pc-group-section": "navigator"
|
||||||
}), [(openBlock(), createBlock(resolveDynamicComponent($options.templates.nexticon || "ChevronRightIcon"), mergeProps({
|
}), [(openBlock(), createBlock(resolveDynamicComponent($options.templates.nexticon || "ChevronRightIcon"), mergeProps({
|
||||||
"aria-hidden": "true"
|
"aria-hidden": "true"
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
}, _ctx.ptm("nextIcon")), null, 16))], 16, _hoisted_3$9)), [[_directive_ripple]]) : createCommentVNode("", true)], 16);
|
}, _ctx.ptm("nextIcon")), null, 16))], 16, _hoisted_3$9)), [[_directive_ripple]]) : createCommentVNode("", true)], 16);
|
||||||
}
|
}
|
||||||
__name(render$i, "render$i");
|
__name(render$i, "render$i");
|
||||||
script$b.render = render$i;
|
script$b.render = render$i;
|
||||||
|
========
|
||||||
|
}, _ctx.ptm("nextIcon")), null, 16))], 16, _hoisted_3$h)), [[_directive_ripple]]) : createCommentVNode("", true)], 16);
|
||||||
|
}
|
||||||
|
__name(render$g, "render$g");
|
||||||
|
script$9.render = render$g;
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
const _sfc_main$q = /* @__PURE__ */ defineComponent({
|
const _sfc_main$q = /* @__PURE__ */ defineComponent({
|
||||||
__name: "ExtensionSlot",
|
__name: "ExtensionSlot",
|
||||||
props: {
|
props: {
|
||||||
@ -1273,9 +1315,15 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
const _hoisted_1$n = { class: "flex flex-col h-full" };
|
const _hoisted_1$n = { class: "flex flex-col h-full" };
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
const _hoisted_2$9 = { class: "w-full flex justify-between" };
|
const _hoisted_2$9 = { class: "w-full flex justify-between" };
|
||||||
const _hoisted_3$8 = { class: "tabs-container" };
|
const _hoisted_3$8 = { class: "tabs-container" };
|
||||||
const _hoisted_4$4 = { class: "font-bold" };
|
const _hoisted_4$4 = { class: "font-bold" };
|
||||||
|
========
|
||||||
|
const _hoisted_2$h = { class: "w-full flex justify-between" };
|
||||||
|
const _hoisted_3$g = { class: "tabs-container" };
|
||||||
|
const _hoisted_4$6 = { class: "font-bold" };
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
const _hoisted_5$4 = { class: "flex-grow h-0" };
|
const _hoisted_5$4 = { class: "flex-grow h-0" };
|
||||||
const _sfc_main$p = /* @__PURE__ */ defineComponent({
|
const _sfc_main$p = /* @__PURE__ */ defineComponent({
|
||||||
__name: "BottomPanel",
|
__name: "BottomPanel",
|
||||||
@ -1283,15 +1331,24 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
|
|||||||
const bottomPanelStore = useBottomPanelStore();
|
const bottomPanelStore = useBottomPanelStore();
|
||||||
return (_ctx, _cache) => {
|
return (_ctx, _cache) => {
|
||||||
return openBlock(), createElementBlock("div", _hoisted_1$n, [
|
return openBlock(), createElementBlock("div", _hoisted_1$n, [
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
createVNode(unref(script$j), {
|
createVNode(unref(script$j), {
|
||||||
|
========
|
||||||
|
createVNode(unref(script$h), {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
value: unref(bottomPanelStore).activeBottomPanelTabId,
|
value: unref(bottomPanelStore).activeBottomPanelTabId,
|
||||||
"onUpdate:value": _cache[1] || (_cache[1] = ($event) => unref(bottomPanelStore).activeBottomPanelTabId = $event)
|
"onUpdate:value": _cache[1] || (_cache[1] = ($event) => unref(bottomPanelStore).activeBottomPanelTabId = $event)
|
||||||
}, {
|
}, {
|
||||||
default: withCtx(() => [
|
default: withCtx(() => [
|
||||||
createVNode(unref(script$b), { "pt:tabList": "border-none" }, {
|
createVNode(unref(script$b), { "pt:tabList": "border-none" }, {
|
||||||
default: withCtx(() => [
|
default: withCtx(() => [
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
createBaseVNode("div", _hoisted_2$9, [
|
createBaseVNode("div", _hoisted_2$9, [
|
||||||
createBaseVNode("div", _hoisted_3$8, [
|
createBaseVNode("div", _hoisted_3$8, [
|
||||||
|
========
|
||||||
|
createBaseVNode("div", _hoisted_2$h, [
|
||||||
|
createBaseVNode("div", _hoisted_3$g, [
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(bottomPanelStore).bottomPanelTabs, (tab) => {
|
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(bottomPanelStore).bottomPanelTabs, (tab) => {
|
||||||
return openBlock(), createBlock(unref(script$c), {
|
return openBlock(), createBlock(unref(script$c), {
|
||||||
key: tab.id,
|
key: tab.id,
|
||||||
@ -1299,7 +1356,11 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
|
|||||||
class: "p-3 border-none"
|
class: "p-3 border-none"
|
||||||
}, {
|
}, {
|
||||||
default: withCtx(() => [
|
default: withCtx(() => [
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
createBaseVNode("span", _hoisted_4$4, toDisplayString(tab.title.toUpperCase()), 1)
|
createBaseVNode("span", _hoisted_4$4, toDisplayString(tab.title.toUpperCase()), 1)
|
||||||
|
========
|
||||||
|
createBaseVNode("span", _hoisted_4$6, toDisplayString(tab.title.toUpperCase()), 1)
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
]),
|
]),
|
||||||
_: 2
|
_: 2
|
||||||
}, 1032, ["value"]);
|
}, 1032, ["value"]);
|
||||||
@ -1335,6 +1396,7 @@ const _hoisted_1$m = {
|
|||||||
width: "1.2em",
|
width: "1.2em",
|
||||||
height: "1.2em"
|
height: "1.2em"
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
function render$h(_ctx, _cache) {
|
function render$h(_ctx, _cache) {
|
||||||
return openBlock(), createElementBlock("svg", _hoisted_1$m, _cache[0] || (_cache[0] = [
|
return openBlock(), createElementBlock("svg", _hoisted_1$m, _cache[0] || (_cache[0] = [
|
||||||
createBaseVNode("path", {
|
createBaseVNode("path", {
|
||||||
@ -1345,11 +1407,26 @@ function render$h(_ctx, _cache) {
|
|||||||
}
|
}
|
||||||
__name(render$h, "render$h");
|
__name(render$h, "render$h");
|
||||||
const __unplugin_components_1$2 = markRaw({ name: "simple-line-icons-cursor", render: render$h });
|
const __unplugin_components_1$2 = markRaw({ name: "simple-line-icons-cursor", render: render$h });
|
||||||
|
========
|
||||||
|
const _hoisted_2$g = /* @__PURE__ */ createBaseVNode("path", {
|
||||||
|
fill: "currentColor",
|
||||||
|
d: "M921.088 103.232L584.832 889.024L465.52 544.512L121.328 440.48zM1004.46.769c-6.096 0-13.52 1.728-22.096 5.36L27.708 411.2c-34.383 14.592-36.56 42.704-4.847 62.464l395.296 123.584l129.36 403.264c9.28 15.184 20.496 22.72 31.263 22.72c11.936 0 23.296-9.152 31.04-27.248l408.272-953.728C1029.148 16.368 1022.86.769 1004.46.769"
|
||||||
|
}, null, -1);
|
||||||
|
const _hoisted_3$f = [
|
||||||
|
_hoisted_2$g
|
||||||
|
];
|
||||||
|
function render$f(_ctx, _cache) {
|
||||||
|
return openBlock(), createElementBlock("svg", _hoisted_1$m, [..._hoisted_3$f]);
|
||||||
|
}
|
||||||
|
__name(render$f, "render$f");
|
||||||
|
const __unplugin_components_1$2 = markRaw({ name: "simple-line-icons-cursor", render: render$f });
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
const _hoisted_1$l = {
|
const _hoisted_1$l = {
|
||||||
viewBox: "0 0 24 24",
|
viewBox: "0 0 24 24",
|
||||||
width: "1.2em",
|
width: "1.2em",
|
||||||
height: "1.2em"
|
height: "1.2em"
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
function render$g(_ctx, _cache) {
|
function render$g(_ctx, _cache) {
|
||||||
return openBlock(), createElementBlock("svg", _hoisted_1$l, _cache[0] || (_cache[0] = [
|
return openBlock(), createElementBlock("svg", _hoisted_1$l, _cache[0] || (_cache[0] = [
|
||||||
createBaseVNode("path", {
|
createBaseVNode("path", {
|
||||||
@ -1357,6 +1434,17 @@ function render$g(_ctx, _cache) {
|
|||||||
d: "M10.05 23q-.75 0-1.4-.337T7.575 21.7L1.2 12.375l.6-.575q.475-.475 1.125-.55t1.175.3L7 13.575V4q0-.425.288-.712T8 3t.713.288T9 4v13.425l-3.7-2.6l3.925 5.725q.125.2.35.325t.475.125H17q.825 0 1.413-.587T19 19V5q0-.425.288-.712T20 4t.713.288T21 5v14q0 1.65-1.175 2.825T17 23zM11 12V2q0-.425.288-.712T12 1t.713.288T13 2v10zm4 0V3q0-.425.288-.712T16 2t.713.288T17 3v9zm-2.85 4.5"
|
d: "M10.05 23q-.75 0-1.4-.337T7.575 21.7L1.2 12.375l.6-.575q.475-.475 1.125-.55t1.175.3L7 13.575V4q0-.425.288-.712T8 3t.713.288T9 4v13.425l-3.7-2.6l3.925 5.725q.125.2.35.325t.475.125H17q.825 0 1.413-.587T19 19V5q0-.425.288-.712T20 4t.713.288T21 5v14q0 1.65-1.175 2.825T17 23zM11 12V2q0-.425.288-.712T12 1t.713.288T13 2v10zm4 0V3q0-.425.288-.712T16 2t.713.288T17 3v9zm-2.85 4.5"
|
||||||
}, null, -1)
|
}, null, -1)
|
||||||
]));
|
]));
|
||||||
|
========
|
||||||
|
const _hoisted_2$f = /* @__PURE__ */ createBaseVNode("path", {
|
||||||
|
fill: "currentColor",
|
||||||
|
d: "M10.05 23q-.75 0-1.4-.337T7.575 21.7L1.2 12.375l.6-.575q.475-.475 1.125-.55t1.175.3L7 13.575V4q0-.425.288-.712T8 3t.713.288T9 4v13.425l-3.7-2.6l3.925 5.725q.125.2.35.325t.475.125H17q.825 0 1.413-.587T19 19V5q0-.425.288-.712T20 4t.713.288T21 5v14q0 1.65-1.175 2.825T17 23zM11 12V2q0-.425.288-.712T12 1t.713.288T13 2v10zm4 0V3q0-.425.288-.712T16 2t.713.288T17 3v9zm-2.85 4.5"
|
||||||
|
}, null, -1);
|
||||||
|
const _hoisted_3$e = [
|
||||||
|
_hoisted_2$f
|
||||||
|
];
|
||||||
|
function render$e(_ctx, _cache) {
|
||||||
|
return openBlock(), createElementBlock("svg", _hoisted_1$l, [..._hoisted_3$e]);
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
}
|
}
|
||||||
__name(render$g, "render$g");
|
__name(render$g, "render$g");
|
||||||
const __unplugin_components_0$2 = markRaw({ name: "material-symbols-pan-tool-outline", render: render$g });
|
const __unplugin_components_0$2 = markRaw({ name: "material-symbols-pan-tool-outline", render: render$g });
|
||||||
@ -2945,9 +3033,15 @@ function _toPrimitive$4(t, r) {
|
|||||||
}
|
}
|
||||||
__name(_toPrimitive$4, "_toPrimitive$4");
|
__name(_toPrimitive$4, "_toPrimitive$4");
|
||||||
var _hoisted_1$k = ["aria-activedescendant"];
|
var _hoisted_1$k = ["aria-activedescendant"];
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
var _hoisted_2$8 = ["id", "aria-label", "aria-setsize", "aria-posinset"];
|
var _hoisted_2$8 = ["id", "aria-label", "aria-setsize", "aria-posinset"];
|
||||||
var _hoisted_3$7 = ["id", "placeholder", "tabindex", "disabled", "aria-label", "aria-labelledby", "aria-expanded", "aria-controls", "aria-activedescendant", "aria-invalid"];
|
var _hoisted_3$7 = ["id", "placeholder", "tabindex", "disabled", "aria-label", "aria-labelledby", "aria-expanded", "aria-controls", "aria-activedescendant", "aria-invalid"];
|
||||||
var _hoisted_4$3 = ["disabled", "aria-expanded", "aria-controls"];
|
var _hoisted_4$3 = ["disabled", "aria-expanded", "aria-controls"];
|
||||||
|
========
|
||||||
|
var _hoisted_2$e = ["id", "aria-label", "aria-setsize", "aria-posinset"];
|
||||||
|
var _hoisted_3$d = ["id", "placeholder", "tabindex", "disabled", "aria-label", "aria-labelledby", "aria-expanded", "aria-controls", "aria-activedescendant", "aria-invalid"];
|
||||||
|
var _hoisted_4$5 = ["disabled", "aria-expanded", "aria-controls"];
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
var _hoisted_5$3 = ["id"];
|
var _hoisted_5$3 = ["id"];
|
||||||
var _hoisted_6$2 = ["id", "aria-label"];
|
var _hoisted_6$2 = ["id", "aria-label"];
|
||||||
var _hoisted_7$1 = ["id"];
|
var _hoisted_7$1 = ["id"];
|
||||||
@ -3097,7 +3191,11 @@ function render$e(_ctx, _cache, $props, $setup, $data, $options) {
|
|||||||
onChange: _cache[4] || (_cache[4] = function() {
|
onChange: _cache[4] || (_cache[4] = function() {
|
||||||
return $options.onChange && $options.onChange.apply($options, arguments);
|
return $options.onChange && $options.onChange.apply($options, arguments);
|
||||||
})
|
})
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
}, _ctx.ptm("input")), null, 16, _hoisted_3$7)], 16)], 16, _hoisted_1$k)) : createCommentVNode("", true), $data.searching || _ctx.loading ? renderSlot(_ctx.$slots, _ctx.$slots.loader ? "loader" : "loadingicon", {
|
}, _ctx.ptm("input")), null, 16, _hoisted_3$7)], 16)], 16, _hoisted_1$k)) : createCommentVNode("", true), $data.searching || _ctx.loading ? renderSlot(_ctx.$slots, _ctx.$slots.loader ? "loader" : "loadingicon", {
|
||||||
|
========
|
||||||
|
}, _ctx.ptm("input")), null, 16, _hoisted_3$d)], 16)], 16, _hoisted_1$k)) : createCommentVNode("", true), $data.searching || _ctx.loading ? renderSlot(_ctx.$slots, _ctx.$slots.loader ? "loader" : "loadingicon", {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
key: 2,
|
key: 2,
|
||||||
"class": normalizeClass(_ctx.cx("loader"))
|
"class": normalizeClass(_ctx.cx("loader"))
|
||||||
}, function() {
|
}, function() {
|
||||||
@ -3134,7 +3232,11 @@ function render$e(_ctx, _cache, $props, $setup, $data, $options) {
|
|||||||
return [(openBlock(), createBlock(resolveDynamicComponent(_ctx.dropdownIcon ? "span" : "ChevronDownIcon"), mergeProps({
|
return [(openBlock(), createBlock(resolveDynamicComponent(_ctx.dropdownIcon ? "span" : "ChevronDownIcon"), mergeProps({
|
||||||
"class": _ctx.dropdownIcon
|
"class": _ctx.dropdownIcon
|
||||||
}, _ctx.ptm("dropdownIcon")), null, 16, ["class"]))];
|
}, _ctx.ptm("dropdownIcon")), null, 16, ["class"]))];
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
})], 16, _hoisted_4$3)) : createCommentVNode("", true)];
|
})], 16, _hoisted_4$3)) : createCommentVNode("", true)];
|
||||||
|
========
|
||||||
|
})], 16, _hoisted_4$5)) : createCommentVNode("", true)];
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
}), createBaseVNode("span", mergeProps({
|
}), createBaseVNode("span", mergeProps({
|
||||||
role: "status",
|
role: "status",
|
||||||
"aria-live": "polite",
|
"aria-live": "polite",
|
||||||
@ -3280,8 +3382,13 @@ function render$e(_ctx, _cache, $props, $setup, $data, $options) {
|
|||||||
_: 3
|
_: 3
|
||||||
}, 8, ["appendTo"])], 16);
|
}, 8, ["appendTo"])], 16);
|
||||||
}
|
}
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
__name(render$e, "render$e");
|
__name(render$e, "render$e");
|
||||||
script$9.render = render$e;
|
script$9.render = render$e;
|
||||||
|
========
|
||||||
|
__name(render$c, "render$c");
|
||||||
|
script$7.render = render$c;
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
const _sfc_main$k = {
|
const _sfc_main$k = {
|
||||||
name: "AutoCompletePlus",
|
name: "AutoCompletePlus",
|
||||||
extends: script$9,
|
extends: script$9,
|
||||||
@ -3298,6 +3405,7 @@ const _sfc_main$k = {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
const _hoisted_1$j = { class: "option-container flex justify-between items-center px-2 py-0 cursor-pointer overflow-hidden w-full" };
|
const _hoisted_1$j = { class: "option-container flex justify-between items-center px-2 py-0 cursor-pointer overflow-hidden w-full" };
|
||||||
const _hoisted_2$7 = { class: "option-display-name font-semibold flex flex-col" };
|
const _hoisted_2$7 = { class: "option-display-name font-semibold flex flex-col" };
|
||||||
const _hoisted_3$6 = { key: 0 };
|
const _hoisted_3$6 = { key: 0 };
|
||||||
@ -3308,6 +3416,24 @@ const _hoisted_6$1 = {
|
|||||||
class: "option-category font-light text-sm text-muted overflow-hidden text-ellipsis whitespace-nowrap"
|
class: "option-category font-light text-sm text-muted overflow-hidden text-ellipsis whitespace-nowrap"
|
||||||
};
|
};
|
||||||
const _hoisted_7 = { class: "option-badges" };
|
const _hoisted_7 = { class: "option-badges" };
|
||||||
|
========
|
||||||
|
const _withScopeId$8 = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-fd0a74bd"), n = n(), popScopeId(), n), "_withScopeId$8");
|
||||||
|
const _hoisted_1$j = { class: "option-container flex justify-between items-center px-2 py-0 cursor-pointer overflow-hidden w-full" };
|
||||||
|
const _hoisted_2$d = { class: "option-display-name font-semibold flex flex-col" };
|
||||||
|
const _hoisted_3$c = { key: 0 };
|
||||||
|
const _hoisted_4$4 = /* @__PURE__ */ _withScopeId$8(() => /* @__PURE__ */ createBaseVNode("i", { class: "pi pi-bookmark-fill text-sm mr-1" }, null, -1));
|
||||||
|
const _hoisted_5$2 = [
|
||||||
|
_hoisted_4$4
|
||||||
|
];
|
||||||
|
const _hoisted_6$1 = ["innerHTML"];
|
||||||
|
const _hoisted_7 = /* @__PURE__ */ _withScopeId$8(() => /* @__PURE__ */ createBaseVNode("span", null, " ", -1));
|
||||||
|
const _hoisted_8 = ["innerHTML"];
|
||||||
|
const _hoisted_9 = {
|
||||||
|
key: 0,
|
||||||
|
class: "option-category font-light text-sm text-muted overflow-hidden text-ellipsis whitespace-nowrap"
|
||||||
|
};
|
||||||
|
const _hoisted_10 = { class: "option-badges" };
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
||||||
__name: "NodeSearchItem",
|
__name: "NodeSearchItem",
|
||||||
props: {
|
props: {
|
||||||
@ -3336,11 +3462,17 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|||||||
const props = __props;
|
const props = __props;
|
||||||
return (_ctx, _cache) => {
|
return (_ctx, _cache) => {
|
||||||
return openBlock(), createElementBlock("div", _hoisted_1$j, [
|
return openBlock(), createElementBlock("div", _hoisted_1$j, [
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
createBaseVNode("div", _hoisted_2$7, [
|
createBaseVNode("div", _hoisted_2$7, [
|
||||||
createBaseVNode("div", null, [
|
createBaseVNode("div", null, [
|
||||||
isBookmarked.value ? (openBlock(), createElementBlock("span", _hoisted_3$6, _cache[0] || (_cache[0] = [
|
isBookmarked.value ? (openBlock(), createElementBlock("span", _hoisted_3$6, _cache[0] || (_cache[0] = [
|
||||||
createBaseVNode("i", { class: "pi pi-bookmark-fill text-sm mr-1" }, null, -1)
|
createBaseVNode("i", { class: "pi pi-bookmark-fill text-sm mr-1" }, null, -1)
|
||||||
]))) : createCommentVNode("", true),
|
]))) : createCommentVNode("", true),
|
||||||
|
========
|
||||||
|
createBaseVNode("div", _hoisted_2$d, [
|
||||||
|
createBaseVNode("div", null, [
|
||||||
|
isBookmarked.value ? (openBlock(), createElementBlock("span", _hoisted_3$c, _hoisted_5$2)) : createCommentVNode("", true),
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
createBaseVNode("span", {
|
createBaseVNode("span", {
|
||||||
innerHTML: unref(highlightQuery)(_ctx.nodeDef.display_name, _ctx.currentQuery)
|
innerHTML: unref(highlightQuery)(_ctx.nodeDef.display_name, _ctx.currentQuery)
|
||||||
}, null, 8, _hoisted_4$2),
|
}, null, 8, _hoisted_4$2),
|
||||||
@ -3391,11 +3523,20 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|||||||
});
|
});
|
||||||
const NodeSearchItem = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__scopeId", "data-v-fd0a74bd"]]);
|
const NodeSearchItem = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__scopeId", "data-v-fd0a74bd"]]);
|
||||||
const _hoisted_1$i = { class: "comfy-vue-node-search-container flex justify-center items-center w-full min-w-96 pointer-events-auto" };
|
const _hoisted_1$i = { class: "comfy-vue-node-search-container flex justify-center items-center w-full min-w-96 pointer-events-auto" };
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
const _hoisted_2$6 = {
|
const _hoisted_2$6 = {
|
||||||
key: 0,
|
key: 0,
|
||||||
class: "comfy-vue-node-preview-container absolute left-[-350px] top-[50px]"
|
class: "comfy-vue-node-preview-container absolute left-[-350px] top-[50px]"
|
||||||
};
|
};
|
||||||
const _hoisted_3$5 = { class: "_dialog-body" };
|
const _hoisted_3$5 = { class: "_dialog-body" };
|
||||||
|
========
|
||||||
|
const _hoisted_2$c = {
|
||||||
|
key: 0,
|
||||||
|
class: "comfy-vue-node-preview-container absolute left-[-350px] top-[50px]"
|
||||||
|
};
|
||||||
|
const _hoisted_3$b = /* @__PURE__ */ createBaseVNode("h3", null, "Add node filter condition", -1);
|
||||||
|
const _hoisted_4$3 = { class: "_dialog-body" };
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
const _sfc_main$i = /* @__PURE__ */ defineComponent({
|
const _sfc_main$i = /* @__PURE__ */ defineComponent({
|
||||||
__name: "NodeSearchBox",
|
__name: "NodeSearchBox",
|
||||||
props: {
|
props: {
|
||||||
@ -3459,7 +3600,11 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
|
|||||||
}, "setHoverSuggestion");
|
}, "setHoverSuggestion");
|
||||||
return (_ctx, _cache) => {
|
return (_ctx, _cache) => {
|
||||||
return openBlock(), createElementBlock("div", _hoisted_1$i, [
|
return openBlock(), createElementBlock("div", _hoisted_1$i, [
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
enableNodePreview.value ? (openBlock(), createElementBlock("div", _hoisted_2$6, [
|
enableNodePreview.value ? (openBlock(), createElementBlock("div", _hoisted_2$6, [
|
||||||
|
========
|
||||||
|
enableNodePreview.value ? (openBlock(), createElementBlock("div", _hoisted_2$c, [
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
hoveredSuggestion.value ? (openBlock(), createBlock(NodePreview, {
|
hoveredSuggestion.value ? (openBlock(), createBlock(NodePreview, {
|
||||||
nodeDef: hoveredSuggestion.value,
|
nodeDef: hoveredSuggestion.value,
|
||||||
key: hoveredSuggestion.value?.name || ""
|
key: hoveredSuggestion.value?.name || ""
|
||||||
@ -3479,11 +3624,19 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
|
|||||||
modal: "",
|
modal: "",
|
||||||
onHide: reFocusInput
|
onHide: reFocusInput
|
||||||
}, {
|
}, {
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
header: withCtx(() => _cache[5] || (_cache[5] = [
|
header: withCtx(() => _cache[5] || (_cache[5] = [
|
||||||
createBaseVNode("h3", null, "Add node filter condition", -1)
|
createBaseVNode("h3", null, "Add node filter condition", -1)
|
||||||
])),
|
])),
|
||||||
default: withCtx(() => [
|
default: withCtx(() => [
|
||||||
createBaseVNode("div", _hoisted_3$5, [
|
createBaseVNode("div", _hoisted_3$5, [
|
||||||
|
========
|
||||||
|
header: withCtx(() => [
|
||||||
|
_hoisted_3$b
|
||||||
|
]),
|
||||||
|
default: withCtx(() => [
|
||||||
|
createBaseVNode("div", _hoisted_4$3, [
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
createVNode(NodeSearchFilter, { onAddFilter })
|
createVNode(NodeSearchFilter, { onAddFilter })
|
||||||
])
|
])
|
||||||
]),
|
]),
|
||||||
@ -3763,8 +3916,13 @@ function render$d(_ctx, _cache, $props, $setup, $data, $options) {
|
|||||||
pt: _ctx.ptm("pcBadge")
|
pt: _ctx.ptm("pcBadge")
|
||||||
}), null, 16, ["pt"])], 16);
|
}), null, 16, ["pt"])], 16);
|
||||||
}
|
}
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
__name(render$d, "render$d");
|
__name(render$d, "render$d");
|
||||||
script$8.render = render$d;
|
script$8.render = render$d;
|
||||||
|
========
|
||||||
|
__name(render$b, "render$b");
|
||||||
|
script$6.render = render$b;
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
||||||
__name: "SidebarIcon",
|
__name: "SidebarIcon",
|
||||||
props: {
|
props: {
|
||||||
@ -3891,8 +4049,14 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
const _hoisted_1$h = { class: "side-tool-bar-end" };
|
const _hoisted_1$h = { class: "side-tool-bar-end" };
|
||||||
const _hoisted_2$5 = {
|
const _hoisted_2$5 = {
|
||||||
|
========
|
||||||
|
const _withScopeId$7 = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-33cac83a"), n = n(), popScopeId(), n), "_withScopeId$7");
|
||||||
|
const _hoisted_1$h = { class: "side-tool-bar-end" };
|
||||||
|
const _hoisted_2$b = {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
key: 0,
|
key: 0,
|
||||||
class: "sidebar-content-container h-full overflow-y-auto overflow-x-hidden"
|
class: "sidebar-content-container h-full overflow-y-auto overflow-x-hidden"
|
||||||
};
|
};
|
||||||
@ -3944,7 +4108,11 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|||||||
])
|
])
|
||||||
], 2)
|
], 2)
|
||||||
], 8, ["to"])),
|
], 8, ["to"])),
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
selectedTab.value ? (openBlock(), createElementBlock("div", _hoisted_2$5, [
|
selectedTab.value ? (openBlock(), createElementBlock("div", _hoisted_2$5, [
|
||||||
|
========
|
||||||
|
selectedTab.value ? (openBlock(), createElementBlock("div", _hoisted_2$b, [
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
createVNode(_sfc_main$q, { extension: selectedTab.value }, null, 8, ["extension"])
|
createVNode(_sfc_main$q, { extension: selectedTab.value }, null, 8, ["extension"])
|
||||||
])) : createCommentVNode("", true)
|
])) : createCommentVNode("", true)
|
||||||
], 64);
|
], 64);
|
||||||
@ -3952,9 +4120,16 @@ const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
const SideToolbar = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__scopeId", "data-v-33cac83a"]]);
|
const SideToolbar = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__scopeId", "data-v-33cac83a"]]);
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
const _hoisted_1$g = { class: "workflow-label text-sm max-w-[150px] truncate inline-block" };
|
const _hoisted_1$g = { class: "workflow-label text-sm max-w-[150px] truncate inline-block" };
|
||||||
const _hoisted_2$4 = { class: "relative" };
|
const _hoisted_2$4 = { class: "relative" };
|
||||||
const _hoisted_3$4 = {
|
const _hoisted_3$4 = {
|
||||||
|
========
|
||||||
|
const _withScopeId$6 = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-8d011a31"), n = n(), popScopeId(), n), "_withScopeId$6");
|
||||||
|
const _hoisted_1$g = { class: "workflow-label text-sm max-w-[150px] truncate inline-block" };
|
||||||
|
const _hoisted_2$a = { class: "relative" };
|
||||||
|
const _hoisted_3$a = {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
key: 0,
|
key: 0,
|
||||||
class: "status-indicator"
|
class: "status-indicator"
|
||||||
};
|
};
|
||||||
@ -4024,9 +4199,15 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|||||||
{ bottom: true }
|
{ bottom: true }
|
||||||
]
|
]
|
||||||
]),
|
]),
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
createBaseVNode("div", _hoisted_2$4, [
|
createBaseVNode("div", _hoisted_2$4, [
|
||||||
!unref(workspaceStore).shiftDown && (_ctx.workflowOption.workflow.isModified || !_ctx.workflowOption.workflow.isPersisted) ? (openBlock(), createElementBlock("span", _hoisted_3$4, "•")) : createCommentVNode("", true),
|
!unref(workspaceStore).shiftDown && (_ctx.workflowOption.workflow.isModified || !_ctx.workflowOption.workflow.isPersisted) ? (openBlock(), createElementBlock("span", _hoisted_3$4, "•")) : createCommentVNode("", true),
|
||||||
createVNode(unref(script$f), {
|
createVNode(unref(script$f), {
|
||||||
|
========
|
||||||
|
createBaseVNode("div", _hoisted_2$a, [
|
||||||
|
!unref(workspaceStore).shiftDown && (_ctx.workflowOption.workflow.isModified || !_ctx.workflowOption.workflow.isPersisted) ? (openBlock(), createElementBlock("span", _hoisted_3$a, "•")) : createCommentVNode("", true),
|
||||||
|
createVNode(unref(script$d), {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
class: "close-button p-0 w-auto",
|
class: "close-button p-0 w-auto",
|
||||||
icon: "pi pi-times",
|
icon: "pi pi-times",
|
||||||
text: "",
|
text: "",
|
||||||
@ -4040,6 +4221,10 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
const WorkflowTab = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-8d011a31"]]);
|
const WorkflowTab = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-8d011a31"]]);
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
|
========
|
||||||
|
const _withScopeId$5 = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-54fadc45"), n = n(), popScopeId(), n), "_withScopeId$5");
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
const _hoisted_1$f = { class: "workflow-tabs-container flex flex-row max-w-full h-full" };
|
const _hoisted_1$f = { class: "workflow-tabs-container flex flex-row max-w-full h-full" };
|
||||||
const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
||||||
__name: "WorkflowTabs",
|
__name: "WorkflowTabs",
|
||||||
@ -4144,7 +4329,11 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|||||||
return (_ctx, _cache) => {
|
return (_ctx, _cache) => {
|
||||||
const _directive_tooltip = resolveDirective("tooltip");
|
const _directive_tooltip = resolveDirective("tooltip");
|
||||||
return openBlock(), createElementBlock("div", _hoisted_1$f, [
|
return openBlock(), createElementBlock("div", _hoisted_1$f, [
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
createVNode(unref(script$v), {
|
createVNode(unref(script$v), {
|
||||||
|
========
|
||||||
|
createVNode(unref(script$s), {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
class: "overflow-hidden no-drag",
|
class: "overflow-hidden no-drag",
|
||||||
"pt:content": {
|
"pt:content": {
|
||||||
class: "p-0 w-full",
|
class: "p-0 w-full",
|
||||||
@ -4153,7 +4342,11 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|||||||
"pt:barX": "h-1"
|
"pt:barX": "h-1"
|
||||||
}, {
|
}, {
|
||||||
default: withCtx(() => [
|
default: withCtx(() => [
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
createVNode(unref(script$u), {
|
createVNode(unref(script$u), {
|
||||||
|
========
|
||||||
|
createVNode(unref(script$r), {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
class: normalizeClass(["workflow-tabs bg-transparent", props.class]),
|
class: normalizeClass(["workflow-tabs bg-transparent", props.class]),
|
||||||
modelValue: selectedWorkflow.value,
|
modelValue: selectedWorkflow.value,
|
||||||
"onUpdate:modelValue": onWorkflowChange,
|
"onUpdate:modelValue": onWorkflowChange,
|
||||||
@ -4173,7 +4366,11 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|||||||
]),
|
]),
|
||||||
_: 1
|
_: 1
|
||||||
}, 8, ["pt:content"]),
|
}, 8, ["pt:content"]),
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
withDirectives(createVNode(unref(script$f), {
|
withDirectives(createVNode(unref(script$f), {
|
||||||
|
========
|
||||||
|
withDirectives(createVNode(unref(script$d), {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
class: "new-blank-workflow-button flex-shrink-0 no-drag",
|
class: "new-blank-workflow-button flex-shrink-0 no-drag",
|
||||||
icon: "pi pi-plus",
|
icon: "pi pi-plus",
|
||||||
text: "",
|
text: "",
|
||||||
@ -4183,7 +4380,11 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|||||||
}, null, 8, ["aria-label"]), [
|
}, null, 8, ["aria-label"]), [
|
||||||
[_directive_tooltip, { value: _ctx.$t("sideToolbar.newBlankWorkflow"), showDelay: 300 }]
|
[_directive_tooltip, { value: _ctx.$t("sideToolbar.newBlankWorkflow"), showDelay: 300 }]
|
||||||
]),
|
]),
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
createVNode(unref(script$w), {
|
createVNode(unref(script$w), {
|
||||||
|
========
|
||||||
|
createVNode(unref(script$t), {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
ref_key: "menu",
|
ref_key: "menu",
|
||||||
ref: menu,
|
ref: menu,
|
||||||
model: contextMenuItems.value
|
model: contextMenuItems.value
|
||||||
@ -4193,6 +4394,10 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
const WorkflowTabs = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-54fadc45"]]);
|
const WorkflowTabs = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-54fadc45"]]);
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
|
========
|
||||||
|
const _withScopeId$4 = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-38831d8e"), n = n(), popScopeId(), n), "_withScopeId$4");
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
const _hoisted_1$e = { class: "absolute top-0 left-0 w-auto max-w-full pointer-events-auto" };
|
const _hoisted_1$e = { class: "absolute top-0 left-0 w-auto max-w-full pointer-events-auto" };
|
||||||
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
||||||
__name: "SecondRowWorkflowTabs",
|
__name: "SecondRowWorkflowTabs",
|
||||||
@ -5461,10 +5666,17 @@ var script$1$3 = {
|
|||||||
computed: {
|
computed: {
|
||||||
iconComponent: /* @__PURE__ */ __name(function iconComponent() {
|
iconComponent: /* @__PURE__ */ __name(function iconComponent() {
|
||||||
return {
|
return {
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
info: !this.infoIcon && script$6,
|
info: !this.infoIcon && script$6,
|
||||||
success: !this.successIcon && script$y,
|
success: !this.successIcon && script$y,
|
||||||
warn: !this.warnIcon && script$7,
|
warn: !this.warnIcon && script$7,
|
||||||
error: !this.errorIcon && script$z
|
error: !this.errorIcon && script$z
|
||||||
|
========
|
||||||
|
info: !this.infoIcon && script$u,
|
||||||
|
success: !this.successIcon && script$v,
|
||||||
|
warn: !this.warnIcon && script$w,
|
||||||
|
error: !this.errorIcon && script$x
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
}[this.message.severity];
|
}[this.message.severity];
|
||||||
}, "iconComponent"),
|
}, "iconComponent"),
|
||||||
closeAriaLabel: /* @__PURE__ */ __name(function closeAriaLabel() {
|
closeAriaLabel: /* @__PURE__ */ __name(function closeAriaLabel() {
|
||||||
@ -5472,11 +5684,19 @@ var script$1$3 = {
|
|||||||
}, "closeAriaLabel")
|
}, "closeAriaLabel")
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
TimesIcon: script$A,
|
TimesIcon: script$A,
|
||||||
InfoCircleIcon: script$6,
|
InfoCircleIcon: script$6,
|
||||||
CheckIcon: script$y,
|
CheckIcon: script$y,
|
||||||
ExclamationTriangleIcon: script$7,
|
ExclamationTriangleIcon: script$7,
|
||||||
TimesCircleIcon: script$z
|
TimesCircleIcon: script$z
|
||||||
|
========
|
||||||
|
TimesIcon: script$y,
|
||||||
|
InfoCircleIcon: script$u,
|
||||||
|
CheckIcon: script$v,
|
||||||
|
ExclamationTriangleIcon: script$w,
|
||||||
|
TimesCircleIcon: script$x
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
},
|
},
|
||||||
directives: {
|
directives: {
|
||||||
ripple: Ripple
|
ripple: Ripple
|
||||||
@ -5895,6 +6115,20 @@ const _hoisted_1$c = {
|
|||||||
width: "1.2em",
|
width: "1.2em",
|
||||||
height: "1.2em"
|
height: "1.2em"
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
|
========
|
||||||
|
const _hoisted_2$9 = /* @__PURE__ */ createBaseVNode("path", {
|
||||||
|
fill: "none",
|
||||||
|
stroke: "currentColor",
|
||||||
|
"stroke-linecap": "round",
|
||||||
|
"stroke-linejoin": "round",
|
||||||
|
"stroke-width": "2",
|
||||||
|
d: "M6 4v16m4-16l10 8l-10 8z"
|
||||||
|
}, null, -1);
|
||||||
|
const _hoisted_3$9 = [
|
||||||
|
_hoisted_2$9
|
||||||
|
];
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
function render$9(_ctx, _cache) {
|
function render$9(_ctx, _cache) {
|
||||||
return openBlock(), createElementBlock("svg", _hoisted_1$c, _cache[0] || (_cache[0] = [
|
return openBlock(), createElementBlock("svg", _hoisted_1$c, _cache[0] || (_cache[0] = [
|
||||||
createBaseVNode("path", {
|
createBaseVNode("path", {
|
||||||
@ -5914,6 +6148,20 @@ const _hoisted_1$b = {
|
|||||||
width: "1.2em",
|
width: "1.2em",
|
||||||
height: "1.2em"
|
height: "1.2em"
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
|
========
|
||||||
|
const _hoisted_2$8 = /* @__PURE__ */ createBaseVNode("path", {
|
||||||
|
fill: "none",
|
||||||
|
stroke: "currentColor",
|
||||||
|
"stroke-linecap": "round",
|
||||||
|
"stroke-linejoin": "round",
|
||||||
|
"stroke-width": "2",
|
||||||
|
d: "m13 19l9-7l-9-7zM2 19l9-7l-9-7z"
|
||||||
|
}, null, -1);
|
||||||
|
const _hoisted_3$8 = [
|
||||||
|
_hoisted_2$8
|
||||||
|
];
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
function render$8(_ctx, _cache) {
|
function render$8(_ctx, _cache) {
|
||||||
return openBlock(), createElementBlock("svg", _hoisted_1$b, _cache[0] || (_cache[0] = [
|
return openBlock(), createElementBlock("svg", _hoisted_1$b, _cache[0] || (_cache[0] = [
|
||||||
createBaseVNode("path", {
|
createBaseVNode("path", {
|
||||||
@ -5933,6 +6181,20 @@ const _hoisted_1$a = {
|
|||||||
width: "1.2em",
|
width: "1.2em",
|
||||||
height: "1.2em"
|
height: "1.2em"
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
|
========
|
||||||
|
const _hoisted_2$7 = /* @__PURE__ */ createBaseVNode("path", {
|
||||||
|
fill: "none",
|
||||||
|
stroke: "currentColor",
|
||||||
|
"stroke-linecap": "round",
|
||||||
|
"stroke-linejoin": "round",
|
||||||
|
"stroke-width": "2",
|
||||||
|
d: "m6 3l14 9l-14 9z"
|
||||||
|
}, null, -1);
|
||||||
|
const _hoisted_3$7 = [
|
||||||
|
_hoisted_2$7
|
||||||
|
];
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
function render$7(_ctx, _cache) {
|
function render$7(_ctx, _cache) {
|
||||||
return openBlock(), createElementBlock("svg", _hoisted_1$a, _cache[0] || (_cache[0] = [
|
return openBlock(), createElementBlock("svg", _hoisted_1$a, _cache[0] || (_cache[0] = [
|
||||||
createBaseVNode("path", {
|
createBaseVNode("path", {
|
||||||
@ -5952,6 +6214,22 @@ const _hoisted_1$9 = {
|
|||||||
width: "1.2em",
|
width: "1.2em",
|
||||||
height: "1.2em"
|
height: "1.2em"
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
|
========
|
||||||
|
const _hoisted_2$6 = /* @__PURE__ */ createBaseVNode("g", {
|
||||||
|
fill: "none",
|
||||||
|
stroke: "currentColor",
|
||||||
|
"stroke-linecap": "round",
|
||||||
|
"stroke-linejoin": "round",
|
||||||
|
"stroke-width": "2"
|
||||||
|
}, [
|
||||||
|
/* @__PURE__ */ createBaseVNode("path", { d: "M16 12H3m13 6H3m7-12H3m18 12V8a2 2 0 0 0-2-2h-5" }),
|
||||||
|
/* @__PURE__ */ createBaseVNode("path", { d: "m16 8l-2-2l2-2" })
|
||||||
|
], -1);
|
||||||
|
const _hoisted_3$6 = [
|
||||||
|
_hoisted_2$6
|
||||||
|
];
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
function render$6(_ctx, _cache) {
|
function render$6(_ctx, _cache) {
|
||||||
return openBlock(), createElementBlock("svg", _hoisted_1$9, _cache[0] || (_cache[0] = [
|
return openBlock(), createElementBlock("svg", _hoisted_1$9, _cache[0] || (_cache[0] = [
|
||||||
createBaseVNode("g", {
|
createBaseVNode("g", {
|
||||||
@ -6210,16 +6488,26 @@ var script$1$2 = {
|
|||||||
}, "containerRef")
|
}, "containerRef")
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
AngleRightIcon: script$B
|
AngleRightIcon: script$B
|
||||||
|
========
|
||||||
|
AngleRightIcon: script$z
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
},
|
},
|
||||||
directives: {
|
directives: {
|
||||||
ripple: Ripple
|
ripple: Ripple
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var _hoisted_1$1$2 = ["tabindex"];
|
var _hoisted_1$1$2 = ["tabindex"];
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
var _hoisted_2$3 = ["id", "aria-label", "aria-disabled", "aria-expanded", "aria-haspopup", "aria-level", "aria-setsize", "aria-posinset", "data-p-active", "data-p-focused", "data-p-disabled"];
|
var _hoisted_2$3 = ["id", "aria-label", "aria-disabled", "aria-expanded", "aria-haspopup", "aria-level", "aria-setsize", "aria-posinset", "data-p-active", "data-p-focused", "data-p-disabled"];
|
||||||
var _hoisted_3$3 = ["onClick", "onMouseenter", "onMousemove"];
|
var _hoisted_3$3 = ["onClick", "onMouseenter", "onMousemove"];
|
||||||
var _hoisted_4$1 = ["href", "target"];
|
var _hoisted_4$1 = ["href", "target"];
|
||||||
|
========
|
||||||
|
var _hoisted_2$5 = ["id", "aria-label", "aria-disabled", "aria-expanded", "aria-haspopup", "aria-level", "aria-setsize", "aria-posinset", "data-p-active", "data-p-focused", "data-p-disabled"];
|
||||||
|
var _hoisted_3$5 = ["onClick", "onMouseenter", "onMousemove"];
|
||||||
|
var _hoisted_4$2 = ["href", "target"];
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
var _hoisted_5$1 = ["id"];
|
var _hoisted_5$1 = ["id"];
|
||||||
var _hoisted_6 = ["id"];
|
var _hoisted_6 = ["id"];
|
||||||
function render$1$1(_ctx, _cache, $props, $setup, $data, $options) {
|
function render$1$1(_ctx, _cache, $props, $setup, $data, $options) {
|
||||||
@ -6300,7 +6588,7 @@ function render$1$1(_ctx, _cache, $props, $setup, $data, $options) {
|
|||||||
key: 1,
|
key: 1,
|
||||||
"class": _ctx.cx("submenuIcon"),
|
"class": _ctx.cx("submenuIcon"),
|
||||||
ref_for: true
|
ref_for: true
|
||||||
}, $options.getPTOptions(processedItem, index, "submenuIcon")), null, 16, ["class"]))], 64)) : createCommentVNode("", true)], 16, _hoisted_4$1)), [[_directive_ripple]]) : (openBlock(), createBlock(resolveDynamicComponent($props.templates.item), {
|
}, $options.getPTOptions(processedItem, index, "submenuIcon")), null, 16, ["class"]))], 64)) : createCommentVNode("", true)], 16, _hoisted_4$2)), [[_directive_ripple]]) : (openBlock(), createBlock(resolveDynamicComponent($props.templates.item), {
|
||||||
key: 1,
|
key: 1,
|
||||||
item: processedItem.item,
|
item: processedItem.item,
|
||||||
hasSubmenu: $options.getItemProp(processedItem, "items"),
|
hasSubmenu: $options.getItemProp(processedItem, "items"),
|
||||||
@ -6332,9 +6620,14 @@ function render$1$1(_ctx, _cache, $props, $setup, $data, $options) {
|
|||||||
}),
|
}),
|
||||||
onItemMousemove: _cache[2] || (_cache[2] = function($event) {
|
onItemMousemove: _cache[2] || (_cache[2] = function($event) {
|
||||||
return _ctx.$emit("item-mousemove", $event);
|
return _ctx.$emit("item-mousemove", $event);
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
}),
|
}),
|
||||||
ref_for: true
|
ref_for: true
|
||||||
}, _ctx.ptm("submenu")), null, 16, ["id", "class", "style", "aria-labelledby", "menuId", "focusedItemId", "items", "templates", "activeItemPath", "level", "visible", "pt", "unstyled"])) : createCommentVNode("", true)], 16, _hoisted_2$3)) : createCommentVNode("", true), $options.isItemVisible(processedItem) && $options.getItemProp(processedItem, "separator") ? (openBlock(), createElementBlock("li", mergeProps({
|
}, _ctx.ptm("submenu")), null, 16, ["id", "class", "style", "aria-labelledby", "menuId", "focusedItemId", "items", "templates", "activeItemPath", "level", "visible", "pt", "unstyled"])) : createCommentVNode("", true)], 16, _hoisted_2$3)) : createCommentVNode("", true), $options.isItemVisible(processedItem) && $options.getItemProp(processedItem, "separator") ? (openBlock(), createElementBlock("li", mergeProps({
|
||||||
|
========
|
||||||
|
})
|
||||||
|
}, null, 8, ["id", "style", "aria-labelledby", "menuId", "focusedItemId", "items", "templates", "activeItemPath", "level", "visible", "pt", "unstyled"])) : createCommentVNode("", true)], 16, _hoisted_2$5)) : createCommentVNode("", true), $options.isItemVisible(processedItem) && $options.getItemProp(processedItem, "separator") ? (openBlock(), createElementBlock("li", mergeProps({
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
key: 1,
|
key: 1,
|
||||||
id: $options.getItemId(processedItem),
|
id: $options.getItemId(processedItem),
|
||||||
style: $options.getItemProp(processedItem, "style"),
|
style: $options.getItemProp(processedItem, "style"),
|
||||||
@ -7339,6 +7632,10 @@ function render$4(_ctx, _cache, $props, $setup, $data, $options) {
|
|||||||
}
|
}
|
||||||
__name(render$4, "render$4");
|
__name(render$4, "render$4");
|
||||||
script$3.render = render$4;
|
script$3.render = render$4;
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
|
========
|
||||||
|
const _withScopeId$3 = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-26957f1f"), n = n(), popScopeId(), n), "_withScopeId$3");
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
const _hoisted_1$6 = ["aria-label"];
|
const _hoisted_1$6 = ["aria-label"];
|
||||||
const minQueueCount = 1;
|
const minQueueCount = 1;
|
||||||
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
||||||
@ -7371,7 +7668,11 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|||||||
class: normalizeClass(["batch-count", props.class]),
|
class: normalizeClass(["batch-count", props.class]),
|
||||||
"aria-label": _ctx.$t("menu.batchCount")
|
"aria-label": _ctx.$t("menu.batchCount")
|
||||||
}, [
|
}, [
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
createVNode(unref(script$C), {
|
createVNode(unref(script$C), {
|
||||||
|
========
|
||||||
|
createVNode(unref(script$A), {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
class: "w-14",
|
class: "w-14",
|
||||||
modelValue: unref(batchCount),
|
modelValue: unref(batchCount),
|
||||||
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(batchCount) ? batchCount.value = $event : null),
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(batchCount) ? batchCount.value = $event : null),
|
||||||
@ -7406,6 +7707,10 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
const BatchCountEdit = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-26957f1f"]]);
|
const BatchCountEdit = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-26957f1f"]]);
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
|
========
|
||||||
|
const _withScopeId$2 = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-e9044686"), n = n(), popScopeId(), n), "_withScopeId$2");
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
const _hoisted_1$5 = { class: "queue-button-group flex" };
|
const _hoisted_1$5 = { class: "queue-button-group flex" };
|
||||||
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
||||||
__name: "ComfyQueueButton",
|
__name: "ComfyQueueButton",
|
||||||
@ -7683,7 +7988,11 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
return (_ctx, _cache) => {
|
return (_ctx, _cache) => {
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
return openBlock(), createBlock(unref(script$D), {
|
return openBlock(), createBlock(unref(script$D), {
|
||||||
|
========
|
||||||
|
return openBlock(), createBlock(unref(script$B), {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
class: normalizeClass(["actionbar w-fit", { "is-dragging": unref(isDragging), "is-docked": unref(isDocked) }]),
|
class: normalizeClass(["actionbar w-fit", { "is-dragging": unref(isDragging), "is-docked": unref(isDocked) }]),
|
||||||
style: normalizeStyle(unref(style))
|
style: normalizeStyle(unref(style))
|
||||||
}, {
|
}, {
|
||||||
@ -7712,6 +8021,7 @@ const _hoisted_1$4 = {
|
|||||||
width: "1.2em",
|
width: "1.2em",
|
||||||
height: "1.2em"
|
height: "1.2em"
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
function render$3(_ctx, _cache) {
|
function render$3(_ctx, _cache) {
|
||||||
return openBlock(), createElementBlock("svg", _hoisted_1$4, _cache[0] || (_cache[0] = [
|
return openBlock(), createElementBlock("svg", _hoisted_1$4, _cache[0] || (_cache[0] = [
|
||||||
createBaseVNode("path", {
|
createBaseVNode("path", {
|
||||||
@ -7719,6 +8029,17 @@ function render$3(_ctx, _cache) {
|
|||||||
d: "M5 21q-.825 0-1.412-.587T3 19V5q0-.825.588-1.412T5 3h14q.825 0 1.413.588T21 5v14q0 .825-.587 1.413T19 21zm0-5v3h14v-3zm0-2h14V5H5zm0 2v3z"
|
d: "M5 21q-.825 0-1.412-.587T3 19V5q0-.825.588-1.412T5 3h14q.825 0 1.413.588T21 5v14q0 .825-.587 1.413T19 21zm0-5v3h14v-3zm0-2h14V5H5zm0 2v3z"
|
||||||
}, null, -1)
|
}, null, -1)
|
||||||
]));
|
]));
|
||||||
|
========
|
||||||
|
const _hoisted_2$4 = /* @__PURE__ */ createBaseVNode("path", {
|
||||||
|
fill: "currentColor",
|
||||||
|
d: "M5 21q-.825 0-1.412-.587T3 19V5q0-.825.588-1.412T5 3h14q.825 0 1.413.588T21 5v14q0 .825-.587 1.413T19 21zm0-5v3h14v-3zm0-2h14V5H5zm0 2v3z"
|
||||||
|
}, null, -1);
|
||||||
|
const _hoisted_3$4 = [
|
||||||
|
_hoisted_2$4
|
||||||
|
];
|
||||||
|
function render$3(_ctx, _cache) {
|
||||||
|
return openBlock(), createElementBlock("svg", _hoisted_1$4, [..._hoisted_3$4]);
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
}
|
}
|
||||||
__name(render$3, "render$3");
|
__name(render$3, "render$3");
|
||||||
const __unplugin_components_1 = markRaw({ name: "material-symbols-dock-to-bottom-outline", render: render$3 });
|
const __unplugin_components_1 = markRaw({ name: "material-symbols-dock-to-bottom-outline", render: render$3 });
|
||||||
@ -7727,6 +8048,7 @@ const _hoisted_1$3 = {
|
|||||||
width: "1.2em",
|
width: "1.2em",
|
||||||
height: "1.2em"
|
height: "1.2em"
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
function render$2(_ctx, _cache) {
|
function render$2(_ctx, _cache) {
|
||||||
return openBlock(), createElementBlock("svg", _hoisted_1$3, _cache[0] || (_cache[0] = [
|
return openBlock(), createElementBlock("svg", _hoisted_1$3, _cache[0] || (_cache[0] = [
|
||||||
createBaseVNode("path", {
|
createBaseVNode("path", {
|
||||||
@ -7734,6 +8056,17 @@ function render$2(_ctx, _cache) {
|
|||||||
d: "M5 21q-.825 0-1.412-.587T3 19V5q0-.825.588-1.412T5 3h14q.825 0 1.413.588T21 5v14q0 .825-.587 1.413T19 21zm0-7h14V5H5z"
|
d: "M5 21q-.825 0-1.412-.587T3 19V5q0-.825.588-1.412T5 3h14q.825 0 1.413.588T21 5v14q0 .825-.587 1.413T19 21zm0-7h14V5H5z"
|
||||||
}, null, -1)
|
}, null, -1)
|
||||||
]));
|
]));
|
||||||
|
========
|
||||||
|
const _hoisted_2$3 = /* @__PURE__ */ createBaseVNode("path", {
|
||||||
|
fill: "currentColor",
|
||||||
|
d: "M5 21q-.825 0-1.412-.587T3 19V5q0-.825.588-1.412T5 3h14q.825 0 1.413.588T21 5v14q0 .825-.587 1.413T19 21zm0-7h14V5H5z"
|
||||||
|
}, null, -1);
|
||||||
|
const _hoisted_3$3 = [
|
||||||
|
_hoisted_2$3
|
||||||
|
];
|
||||||
|
function render$2(_ctx, _cache) {
|
||||||
|
return openBlock(), createElementBlock("svg", _hoisted_1$3, [..._hoisted_3$3]);
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
}
|
}
|
||||||
__name(render$2, "render$2");
|
__name(render$2, "render$2");
|
||||||
const __unplugin_components_0 = markRaw({ name: "material-symbols-dock-to-bottom", render: render$2 });
|
const __unplugin_components_0 = markRaw({ name: "material-symbols-dock-to-bottom", render: render$2 });
|
||||||
@ -7989,8 +8322,13 @@ var script$1 = {
|
|||||||
}, "getAriaSetSize")
|
}, "getAriaSetSize")
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
AngleRightIcon: script$B,
|
AngleRightIcon: script$B,
|
||||||
AngleDownIcon: script$E
|
AngleDownIcon: script$E
|
||||||
|
========
|
||||||
|
AngleRightIcon: script$z,
|
||||||
|
AngleDownIcon: script$C
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
},
|
},
|
||||||
directives: {
|
directives: {
|
||||||
ripple: Ripple
|
ripple: Ripple
|
||||||
@ -7999,7 +8337,7 @@ var script$1 = {
|
|||||||
var _hoisted_1$1$1 = ["id", "aria-label", "aria-disabled", "aria-expanded", "aria-haspopup", "aria-level", "aria-setsize", "aria-posinset", "data-p-active", "data-p-focused", "data-p-disabled"];
|
var _hoisted_1$1$1 = ["id", "aria-label", "aria-disabled", "aria-expanded", "aria-haspopup", "aria-level", "aria-setsize", "aria-posinset", "data-p-active", "data-p-focused", "data-p-disabled"];
|
||||||
var _hoisted_2$2 = ["onClick", "onMouseenter", "onMousemove"];
|
var _hoisted_2$2 = ["onClick", "onMouseenter", "onMousemove"];
|
||||||
var _hoisted_3$2 = ["href", "target"];
|
var _hoisted_3$2 = ["href", "target"];
|
||||||
var _hoisted_4 = ["id"];
|
var _hoisted_4$1 = ["id"];
|
||||||
var _hoisted_5 = ["id"];
|
var _hoisted_5 = ["id"];
|
||||||
function render$1(_ctx, _cache, $props, $setup, $data, $options) {
|
function render$1(_ctx, _cache, $props, $setup, $data, $options) {
|
||||||
var _component_MenubarSub = resolveComponent("MenubarSub", true);
|
var _component_MenubarSub = resolveComponent("MenubarSub", true);
|
||||||
@ -8060,7 +8398,7 @@ function render$1(_ctx, _cache, $props, $setup, $data, $options) {
|
|||||||
id: $options.getItemLabelId(processedItem),
|
id: $options.getItemLabelId(processedItem),
|
||||||
"class": _ctx.cx("itemLabel"),
|
"class": _ctx.cx("itemLabel"),
|
||||||
ref_for: true
|
ref_for: true
|
||||||
}, $options.getPTOptions(processedItem, index, "itemLabel")), toDisplayString($options.getItemLabel(processedItem)), 17, _hoisted_4), $options.getItemProp(processedItem, "items") ? (openBlock(), createElementBlock(Fragment, {
|
}, $options.getPTOptions(processedItem, index, "itemLabel")), toDisplayString($options.getItemLabel(processedItem)), 17, _hoisted_4$1), $options.getItemProp(processedItem, "items") ? (openBlock(), createElementBlock(Fragment, {
|
||||||
key: 2
|
key: 2
|
||||||
}, [$props.templates.submenuicon ? (openBlock(), createBlock(resolveDynamicComponent($props.templates.submenuicon), {
|
}, [$props.templates.submenuicon ? (openBlock(), createBlock(resolveDynamicComponent($props.templates.submenuicon), {
|
||||||
key: 0,
|
key: 0,
|
||||||
@ -8724,7 +9062,11 @@ var script = {
|
|||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
MenubarSub: script$1,
|
MenubarSub: script$1,
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
BarsIcon: script$F
|
BarsIcon: script$F
|
||||||
|
========
|
||||||
|
BarsIcon: script$D
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
function _typeof(o) {
|
function _typeof(o) {
|
||||||
@ -8847,6 +9189,10 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|||||||
}
|
}
|
||||||
__name(render, "render");
|
__name(render, "render");
|
||||||
script.render = render;
|
script.render = render;
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
|
========
|
||||||
|
const _withScopeId$1 = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-56df69d2"), n = n(), popScopeId(), n), "_withScopeId$1");
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
const _hoisted_1$1 = ["href"];
|
const _hoisted_1$1 = ["href"];
|
||||||
const _hoisted_2$1 = { class: "p-menubar-item-label" };
|
const _hoisted_2$1 = { class: "p-menubar-item-label" };
|
||||||
const _hoisted_3$1 = {
|
const _hoisted_3$1 = {
|
||||||
@ -8903,9 +9249,17 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
const CommandMenubar = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-56df69d2"]]);
|
const CommandMenubar = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-56df69d2"]]);
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
const _hoisted_1 = { class: "flex-grow min-w-0 app-drag h-full" };
|
const _hoisted_1 = { class: "flex-grow min-w-0 app-drag h-full" };
|
||||||
const _hoisted_2 = { class: "window-actions-spacer flex-shrink-0" };
|
const _hoisted_2 = { class: "window-actions-spacer flex-shrink-0" };
|
||||||
const _hoisted_3 = { class: "fixed top-0 left-0 app-drag w-full h-[var(--comfy-topbar-height)]" };
|
const _hoisted_3 = { class: "fixed top-0 left-0 app-drag w-full h-[var(--comfy-topbar-height)]" };
|
||||||
|
========
|
||||||
|
const _withScopeId = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-6e35440f"), n = n(), popScopeId(), n), "_withScopeId");
|
||||||
|
const _hoisted_1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createBaseVNode("h1", { class: "comfyui-logo mx-2 app-drag" }, "ComfyUI", -1));
|
||||||
|
const _hoisted_2 = { class: "flex-grow min-w-0 app-drag h-full" };
|
||||||
|
const _hoisted_3 = { class: "window-actions-spacer flex-shrink-0" };
|
||||||
|
const _hoisted_4 = { class: "fixed top-0 left-0 app-drag w-full h-[var(--comfy-topbar-height)]" };
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
||||||
__name: "TopMenubar",
|
__name: "TopMenubar",
|
||||||
setup(__props) {
|
setup(__props) {
|
||||||
@ -8958,9 +9312,15 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|||||||
ref: topMenuRef,
|
ref: topMenuRef,
|
||||||
class: normalizeClass(["comfyui-menu flex items-center", { dropzone: isDropZone.value, "dropzone-active": isDroppable.value }])
|
class: normalizeClass(["comfyui-menu flex items-center", { dropzone: isDropZone.value, "dropzone-active": isDroppable.value }])
|
||||||
}, [
|
}, [
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
_cache[1] || (_cache[1] = createBaseVNode("h1", { class: "comfyui-logo mx-2 app-drag" }, "ComfyUI", -1)),
|
_cache[1] || (_cache[1] = createBaseVNode("h1", { class: "comfyui-logo mx-2 app-drag" }, "ComfyUI", -1)),
|
||||||
createVNode(CommandMenubar),
|
createVNode(CommandMenubar),
|
||||||
createBaseVNode("div", _hoisted_1, [
|
createBaseVNode("div", _hoisted_1, [
|
||||||
|
========
|
||||||
|
_hoisted_1,
|
||||||
|
createVNode(CommandMenubar),
|
||||||
|
createBaseVNode("div", _hoisted_2, [
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
workflowTabsPosition.value === "Topbar" ? (openBlock(), createBlock(WorkflowTabs, { key: 0 })) : createCommentVNode("", true)
|
workflowTabsPosition.value === "Topbar" ? (openBlock(), createBlock(WorkflowTabs, { key: 0 })) : createCommentVNode("", true)
|
||||||
]),
|
]),
|
||||||
createBaseVNode("div", {
|
createBaseVNode("div", {
|
||||||
@ -8970,7 +9330,11 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|||||||
}, null, 512),
|
}, null, 512),
|
||||||
createVNode(Actionbar),
|
createVNode(Actionbar),
|
||||||
createVNode(_sfc_main$3, { class: "flex-shrink-0" }),
|
createVNode(_sfc_main$3, { class: "flex-shrink-0" }),
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
withDirectives(createVNode(unref(script$f), {
|
withDirectives(createVNode(unref(script$f), {
|
||||||
|
========
|
||||||
|
withDirectives(createVNode(unref(script$d), {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
class: "flex-shrink-0",
|
class: "flex-shrink-0",
|
||||||
icon: "pi pi-bars",
|
icon: "pi pi-bars",
|
||||||
severity: "secondary",
|
severity: "secondary",
|
||||||
@ -8981,14 +9345,22 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|||||||
}, null, 8, ["aria-label", "onContextmenu"]), [
|
}, null, 8, ["aria-label", "onContextmenu"]), [
|
||||||
[_directive_tooltip, { value: _ctx.$t("menu.hideMenu"), showDelay: 300 }]
|
[_directive_tooltip, { value: _ctx.$t("menu.hideMenu"), showDelay: 300 }]
|
||||||
]),
|
]),
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
withDirectives(createBaseVNode("div", _hoisted_2, null, 512), [
|
withDirectives(createBaseVNode("div", _hoisted_2, null, 512), [
|
||||||
|
========
|
||||||
|
withDirectives(createBaseVNode("div", _hoisted_3, null, 512), [
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
[vShow, menuSetting.value !== "Bottom"]
|
[vShow, menuSetting.value !== "Bottom"]
|
||||||
])
|
])
|
||||||
], 2), [
|
], 2), [
|
||||||
[vShow, showTopMenu.value]
|
[vShow, showTopMenu.value]
|
||||||
])
|
])
|
||||||
], 8, ["to"])),
|
], 8, ["to"])),
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
withDirectives(createBaseVNode("div", _hoisted_3, null, 512), [
|
withDirectives(createBaseVNode("div", _hoisted_3, null, 512), [
|
||||||
|
========
|
||||||
|
withDirectives(createBaseVNode("div", _hoisted_4, null, 512), [
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
[vShow, isNativeWindow.value && !showTopMenu.value]
|
[vShow, isNativeWindow.value && !showTopMenu.value]
|
||||||
])
|
])
|
||||||
], 64);
|
], 64);
|
||||||
@ -10015,6 +10387,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|||||||
const settingStore = useSettingStore();
|
const settingStore = useSettingStore();
|
||||||
const executionStore = useExecutionStore();
|
const executionStore = useExecutionStore();
|
||||||
const colorPaletteStore = useColorPaletteStore();
|
const colorPaletteStore = useColorPaletteStore();
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
|
========
|
||||||
|
const queueStore = useQueueStore();
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
watch(
|
watch(
|
||||||
() => colorPaletteStore.completedActivePalette,
|
() => colorPaletteStore.completedActivePalette,
|
||||||
(newTheme) => {
|
(newTheme) => {
|
||||||
@ -10033,6 +10409,25 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|||||||
},
|
},
|
||||||
{ immediate: true }
|
{ immediate: true }
|
||||||
);
|
);
|
||||||
|
if (isElectron()) {
|
||||||
|
watch(
|
||||||
|
() => queueStore.tasks,
|
||||||
|
(newTasks, oldTasks) => {
|
||||||
|
const oldRunningTaskIds = new Set(
|
||||||
|
oldTasks.filter((task) => task.isRunning).map((task) => task.promptId)
|
||||||
|
);
|
||||||
|
newTasks.filter(
|
||||||
|
(task) => oldRunningTaskIds.has(task.promptId) && task.isHistory
|
||||||
|
).forEach((task) => {
|
||||||
|
electronAPI().Events.incrementUserProperty(
|
||||||
|
`execution:${task.displayStatus.toLowerCase()}`,
|
||||||
|
1
|
||||||
|
);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
{ deep: true }
|
||||||
|
);
|
||||||
|
}
|
||||||
watchEffect(() => {
|
watchEffect(() => {
|
||||||
const fontSize = settingStore.get("Comfy.TextareaWidget.FontSize");
|
const fontSize = settingStore.get("Comfy.TextareaWidget.FontSize");
|
||||||
document.documentElement.style.setProperty(
|
document.documentElement.style.setProperty(
|
||||||
@ -10063,9 +10458,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
watchEffect(() => {
|
watchEffect(() => {
|
||||||
useQueueStore().maxHistoryItems = settingStore.get(
|
queueStore.maxHistoryItems = settingStore.get("Comfy.Queue.MaxHistoryItems");
|
||||||
"Comfy.Queue.MaxHistoryItems"
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
const init = /* @__PURE__ */ __name(() => {
|
const init = /* @__PURE__ */ __name(() => {
|
||||||
const coreCommands = useCoreCommands();
|
const coreCommands = useCoreCommands();
|
||||||
@ -10077,8 +10470,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|||||||
app.extensionManager = useWorkspaceStore();
|
app.extensionManager = useWorkspaceStore();
|
||||||
}, "init");
|
}, "init");
|
||||||
const queuePendingTaskCountStore = useQueuePendingTaskCountStore();
|
const queuePendingTaskCountStore = useQueuePendingTaskCountStore();
|
||||||
const onStatus = /* @__PURE__ */ __name((e) => {
|
const onStatus = /* @__PURE__ */ __name(async (e) => {
|
||||||
queuePendingTaskCountStore.update(e);
|
queuePendingTaskCountStore.update(e);
|
||||||
|
await queueStore.update();
|
||||||
}, "onStatus");
|
}, "onStatus");
|
||||||
const reconnectingMessage = {
|
const reconnectingMessage = {
|
||||||
severity: "error",
|
severity: "error",
|
||||||
@ -10145,4 +10539,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|||||||
export {
|
export {
|
||||||
_sfc_main as default
|
_sfc_main as default
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/GraphView-CcbopFEU.js
|
||||||
//# sourceMappingURL=GraphView-CcbopFEU.js.map
|
//# sourceMappingURL=GraphView-CcbopFEU.js.map
|
||||||
|
========
|
||||||
|
//# sourceMappingURL=GraphView-CDDCHVO0.js.map
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/GraphView-CDDCHVO0.js
|
||||||
0
comfy/web/assets/GraphView-CBuSWMt1.css → comfy/web/assets/GraphView-CqZ3opAX.css
generated
vendored
0
comfy/web/assets/GraphView-CBuSWMt1.css → comfy/web/assets/GraphView-CqZ3opAX.css
generated
vendored
91
comfy/web/assets/InstallView-DLb6JyWt.js → comfy/web/assets/InstallView-By3hC1fC.js
generated
vendored
91
comfy/web/assets/InstallView-DLb6JyWt.js → comfy/web/assets/InstallView-By3hC1fC.js
generated
vendored
@ -1,7 +1,12 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value2) => __defProp(target, "name", { value: value2, configurable: true });
|
var __name = (target, value2) => __defProp(target, "name", { value: value2, configurable: true });
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/InstallView-DLb6JyWt.js
|
||||||
import { B as BaseStyle, t as script$6, o as openBlock, f as createElementBlock, E as mergeProps, c7 as findIndexInList, c8 as find, aC as resolveComponent, H as createBlock, I as resolveDynamicComponent, N as withCtx, m as createBaseVNode, X as toDisplayString, K as renderSlot, J as createCommentVNode, T as normalizeClass, P as findSingle, F as Fragment, aD as Transition, i as withDirectives, v as vShow, al as UniqueComponentId, d as defineComponent, ab as ref, c9 as useModel, r as resolveDirective, k as createVNode, j as unref, ca as script$7, c2 as script$8, b2 as withModifiers, aF as createTextVNode, aO as script$9, a1 as useI18n, c as computed, aJ as script$a, bT as electronAPI, _ as _export_sfc, p as onMounted, aw as script$b, cb as script$c, cc as script$d, l as script$e, c4 as script$f, cd as MigrationItems, w as watchEffect, G as renderList, ce as script$g, c0 as useRouter, aT as toRaw } from "./index-Du3ctekX.js";
|
import { B as BaseStyle, t as script$6, o as openBlock, f as createElementBlock, E as mergeProps, c7 as findIndexInList, c8 as find, aC as resolveComponent, H as createBlock, I as resolveDynamicComponent, N as withCtx, m as createBaseVNode, X as toDisplayString, K as renderSlot, J as createCommentVNode, T as normalizeClass, P as findSingle, F as Fragment, aD as Transition, i as withDirectives, v as vShow, al as UniqueComponentId, d as defineComponent, ab as ref, c9 as useModel, r as resolveDirective, k as createVNode, j as unref, ca as script$7, c2 as script$8, b2 as withModifiers, aF as createTextVNode, aO as script$9, a1 as useI18n, c as computed, aJ as script$a, bT as electronAPI, _ as _export_sfc, p as onMounted, aw as script$b, cb as script$c, cc as script$d, l as script$e, c4 as script$f, cd as MigrationItems, w as watchEffect, G as renderList, ce as script$g, c0 as useRouter, aT as toRaw } from "./index-Du3ctekX.js";
|
||||||
import { _ as _sfc_main$5 } from "./BaseViewTemplate-BG-_HPdC.js";
|
import { _ as _sfc_main$5 } from "./BaseViewTemplate-BG-_HPdC.js";
|
||||||
|
========
|
||||||
|
import { B as BaseStyle, y as script$6, o as openBlock, f as createElementBlock, G as mergeProps, c9 as findIndexInList, ca as find, aD as resolveComponent, J as createBlock, K as resolveDynamicComponent, P as withCtx, m as createBaseVNode, Z as toDisplayString, M as renderSlot, L as createCommentVNode, V as normalizeClass, R as findSingle, H as Fragment, aE as Transition, i as withDirectives, v as vShow, am as UniqueComponentId, d as defineComponent, ad as ref, cb as useModel, k as createVNode, j as unref, cc as script$7, c4 as script$8, b3 as withModifiers, aP as script$9, a3 as useI18n, c as computed, aK as script$a, aG as createTextVNode, p as pushScopeId, q as popScopeId, bV as electronAPI, _ as _export_sfc, t as onMounted, r as resolveDirective, ax as script$b, cd as script$c, ce as script$d, l as script$e, c6 as script$f, cf as MigrationItems, w as watchEffect, I as renderList, cg as script$g, c2 as useRouter, aU as toRaw } from "./index-QvfM__ze.js";
|
||||||
|
import { _ as _sfc_main$5 } from "./BaseViewTemplate-BhQMaVFP.js";
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/InstallView-By3hC1fC.js
|
||||||
var classes$4 = {
|
var classes$4 = {
|
||||||
root: /* @__PURE__ */ __name(function root(_ref) {
|
root: /* @__PURE__ */ __name(function root(_ref) {
|
||||||
var instance = _ref.instance;
|
var instance = _ref.instance;
|
||||||
@ -542,6 +547,7 @@ const _hoisted_9$3 = { class: "text-sm text-neutral-400 mt-1" };
|
|||||||
const _hoisted_10$3 = { class: "flex items-center gap-4" };
|
const _hoisted_10$3 = { class: "flex items-center gap-4" };
|
||||||
const _hoisted_11$3 = { class: "flex-1" };
|
const _hoisted_11$3 = { class: "flex-1" };
|
||||||
const _hoisted_12$3 = { class: "text-lg font-medium text-neutral-100" };
|
const _hoisted_12$3 = { class: "text-lg font-medium text-neutral-100" };
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/InstallView-DLb6JyWt.js
|
||||||
const _hoisted_13$1 = { class: "text-sm text-neutral-400 mt-1" };
|
const _hoisted_13$1 = { class: "text-sm text-neutral-400 mt-1" };
|
||||||
const _hoisted_14$1 = { class: "text-neutral-300" };
|
const _hoisted_14$1 = { class: "text-neutral-300" };
|
||||||
const _hoisted_15 = { class: "font-medium mb-2" };
|
const _hoisted_15 = { class: "font-medium mb-2" };
|
||||||
@ -549,6 +555,20 @@ const _hoisted_16 = { class: "list-disc pl-6 space-y-1" };
|
|||||||
const _hoisted_17 = { class: "pi pi-info-circle text-neutral-400" };
|
const _hoisted_17 = { class: "pi pi-info-circle text-neutral-400" };
|
||||||
const _hoisted_18 = { class: "font-medium mt-4 mb-2" };
|
const _hoisted_18 = { class: "font-medium mt-4 mb-2" };
|
||||||
const _hoisted_19 = { class: "list-disc pl-6 space-y-1" };
|
const _hoisted_19 = { class: "list-disc pl-6 space-y-1" };
|
||||||
|
========
|
||||||
|
const _hoisted_13$2 = { class: "text-sm text-neutral-400 mt-1" };
|
||||||
|
const _hoisted_14$2 = { class: "text-neutral-300" };
|
||||||
|
const _hoisted_15$2 = { class: "font-medium mb-2" };
|
||||||
|
const _hoisted_16$2 = { class: "list-disc pl-6 space-y-1" };
|
||||||
|
const _hoisted_17$2 = { class: "font-medium mt-4 mb-2" };
|
||||||
|
const _hoisted_18$2 = { class: "list-disc pl-6 space-y-1" };
|
||||||
|
const _hoisted_19 = { class: "mt-4" };
|
||||||
|
const _hoisted_20 = {
|
||||||
|
href: "https://comfy.org/privacy",
|
||||||
|
target: "_blank",
|
||||||
|
class: "text-blue-400 hover:text-blue-300 underline"
|
||||||
|
};
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/InstallView-By3hC1fC.js
|
||||||
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
||||||
__name: "DesktopSettingsConfiguration",
|
__name: "DesktopSettingsConfiguration",
|
||||||
props: {
|
props: {
|
||||||
@ -607,6 +627,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|||||||
header: _ctx.$t("install.settings.dataCollectionDialog.title")
|
header: _ctx.$t("install.settings.dataCollectionDialog.title")
|
||||||
}, {
|
}, {
|
||||||
default: withCtx(() => [
|
default: withCtx(() => [
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/InstallView-DLb6JyWt.js
|
||||||
createBaseVNode("div", _hoisted_14$1, [
|
createBaseVNode("div", _hoisted_14$1, [
|
||||||
createBaseVNode("h4", _hoisted_15, toDisplayString(_ctx.$t("install.settings.dataCollectionDialog.whatWeCollect")), 1),
|
createBaseVNode("h4", _hoisted_15, toDisplayString(_ctx.$t("install.settings.dataCollectionDialog.whatWeCollect")), 1),
|
||||||
createBaseVNode("ul", _hoisted_16, [
|
createBaseVNode("ul", _hoisted_16, [
|
||||||
@ -628,6 +649,19 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|||||||
]),
|
]),
|
||||||
createBaseVNode("h4", _hoisted_18, toDisplayString(_ctx.$t("install.settings.dataCollectionDialog.whatWeDoNotCollect")), 1),
|
createBaseVNode("h4", _hoisted_18, toDisplayString(_ctx.$t("install.settings.dataCollectionDialog.whatWeDoNotCollect")), 1),
|
||||||
createBaseVNode("ul", _hoisted_19, [
|
createBaseVNode("ul", _hoisted_19, [
|
||||||
|
========
|
||||||
|
createBaseVNode("div", _hoisted_14$2, [
|
||||||
|
createBaseVNode("h4", _hoisted_15$2, toDisplayString(_ctx.$t("install.settings.dataCollectionDialog.whatWeCollect")), 1),
|
||||||
|
createBaseVNode("ul", _hoisted_16$2, [
|
||||||
|
createBaseVNode("li", null, toDisplayString(_ctx.$t("install.settings.dataCollectionDialog.collect.errorReports")), 1),
|
||||||
|
createBaseVNode("li", null, toDisplayString(_ctx.$t("install.settings.dataCollectionDialog.collect.systemInfo")), 1),
|
||||||
|
createBaseVNode("li", null, toDisplayString(_ctx.$t(
|
||||||
|
"install.settings.dataCollectionDialog.collect.userJourneyEvents"
|
||||||
|
)), 1)
|
||||||
|
]),
|
||||||
|
createBaseVNode("h4", _hoisted_17$2, toDisplayString(_ctx.$t("install.settings.dataCollectionDialog.whatWeDoNotCollect")), 1),
|
||||||
|
createBaseVNode("ul", _hoisted_18$2, [
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/InstallView-By3hC1fC.js
|
||||||
createBaseVNode("li", null, toDisplayString(_ctx.$t(
|
createBaseVNode("li", null, toDisplayString(_ctx.$t(
|
||||||
"install.settings.dataCollectionDialog.doNotCollect.personalInformation"
|
"install.settings.dataCollectionDialog.doNotCollect.personalInformation"
|
||||||
)), 1),
|
)), 1),
|
||||||
@ -640,6 +674,9 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|||||||
createBaseVNode("li", null, toDisplayString(_ctx.$t(
|
createBaseVNode("li", null, toDisplayString(_ctx.$t(
|
||||||
"install.settings.dataCollectionDialog.doNotCollect.customNodeConfigurations"
|
"install.settings.dataCollectionDialog.doNotCollect.customNodeConfigurations"
|
||||||
)), 1)
|
)), 1)
|
||||||
|
]),
|
||||||
|
createBaseVNode("div", _hoisted_19, [
|
||||||
|
createBaseVNode("a", _hoisted_20, toDisplayString(_ctx.$t("install.settings.dataCollectionDialog.viewFullPolicy")), 1)
|
||||||
])
|
])
|
||||||
])
|
])
|
||||||
]),
|
]),
|
||||||
@ -652,11 +689,45 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|||||||
const _imports_0 = "" + new URL("images/nvidia-logo.svg", import.meta.url).href;
|
const _imports_0 = "" + new URL("images/nvidia-logo.svg", import.meta.url).href;
|
||||||
const _imports_1 = "" + new URL("images/apple-mps-logo.png", import.meta.url).href;
|
const _imports_1 = "" + new URL("images/apple-mps-logo.png", import.meta.url).href;
|
||||||
const _imports_2 = "" + new URL("images/manual-configuration.svg", import.meta.url).href;
|
const _imports_2 = "" + new URL("images/manual-configuration.svg", import.meta.url).href;
|
||||||
|
const _withScopeId$1 = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-79125ff6"), n = n(), popScopeId(), n), "_withScopeId$1");
|
||||||
const _hoisted_1$3 = { class: "flex flex-col gap-6 w-[600px] h-[30rem] select-none" };
|
const _hoisted_1$3 = { class: "flex flex-col gap-6 w-[600px] h-[30rem] select-none" };
|
||||||
const _hoisted_2$3 = { class: "grow flex flex-col gap-4 text-neutral-300" };
|
const _hoisted_2$3 = { class: "grow flex flex-col gap-4 text-neutral-300" };
|
||||||
const _hoisted_3$3 = { class: "text-2xl font-semibold text-neutral-100" };
|
const _hoisted_3$3 = { class: "text-2xl font-semibold text-neutral-100" };
|
||||||
const _hoisted_4$3 = { class: "m-1 text-neutral-400" };
|
const _hoisted_4$3 = { class: "m-1 text-neutral-400" };
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/InstallView-DLb6JyWt.js
|
||||||
const _hoisted_5$2 = {
|
const _hoisted_5$2 = {
|
||||||
|
========
|
||||||
|
const _hoisted_5$2 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ createBaseVNode("img", {
|
||||||
|
class: "m-12",
|
||||||
|
alt: "NVIDIA logo",
|
||||||
|
width: "196",
|
||||||
|
height: "32",
|
||||||
|
src: _imports_0
|
||||||
|
}, null, -1));
|
||||||
|
const _hoisted_6$2 = [
|
||||||
|
_hoisted_5$2
|
||||||
|
];
|
||||||
|
const _hoisted_7$2 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ createBaseVNode("img", {
|
||||||
|
class: "rounded-lg hover-brighten",
|
||||||
|
alt: "Apple Metal Performance Shaders Logo",
|
||||||
|
width: "292",
|
||||||
|
ratio: "",
|
||||||
|
src: _imports_1
|
||||||
|
}, null, -1));
|
||||||
|
const _hoisted_8$2 = [
|
||||||
|
_hoisted_7$2
|
||||||
|
];
|
||||||
|
const _hoisted_9$2 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ createBaseVNode("img", {
|
||||||
|
class: "m-12",
|
||||||
|
alt: "Manual configuration",
|
||||||
|
width: "196",
|
||||||
|
src: _imports_2
|
||||||
|
}, null, -1));
|
||||||
|
const _hoisted_10$2 = [
|
||||||
|
_hoisted_9$2
|
||||||
|
];
|
||||||
|
const _hoisted_11$2 = {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/InstallView-By3hC1fC.js
|
||||||
key: 0,
|
key: 0,
|
||||||
class: "m-1"
|
class: "m-1"
|
||||||
};
|
};
|
||||||
@ -1094,6 +1165,10 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/InstallView-DLb6JyWt.js
|
||||||
|
========
|
||||||
|
const _withScopeId = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-0a97b0ae"), n = n(), popScopeId(), n), "_withScopeId");
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/InstallView-By3hC1fC.js
|
||||||
const _hoisted_1 = { class: "flex pt-6 justify-end" };
|
const _hoisted_1 = { class: "flex pt-6 justify-end" };
|
||||||
const _hoisted_2 = { class: "flex pt-6 justify-between" };
|
const _hoisted_2 = { class: "flex pt-6 justify-between" };
|
||||||
const _hoisted_3 = { class: "flex pt-6 justify-between" };
|
const _hoisted_3 = { class: "flex pt-6 justify-between" };
|
||||||
@ -1111,7 +1186,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|||||||
const highestStep = ref(0);
|
const highestStep = ref(0);
|
||||||
const handleStepChange = /* @__PURE__ */ __name((value2) => {
|
const handleStepChange = /* @__PURE__ */ __name((value2) => {
|
||||||
setHighestStep(value2);
|
setHighestStep(value2);
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/InstallView-DLb6JyWt.js
|
||||||
electronAPI().Config.trackEvent("install_stepper_change", {
|
electronAPI().Config.trackEvent("install_stepper_change", {
|
||||||
|
========
|
||||||
|
electronAPI().Events.trackEvent("install_stepper_change", {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/InstallView-By3hC1fC.js
|
||||||
step: value2
|
step: value2
|
||||||
});
|
});
|
||||||
}, "handleStepChange");
|
}, "handleStepChange");
|
||||||
@ -1142,7 +1221,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|||||||
if (detectedGpu === "mps" || detectedGpu === "nvidia") {
|
if (detectedGpu === "mps" || detectedGpu === "nvidia") {
|
||||||
device.value = detectedGpu;
|
device.value = detectedGpu;
|
||||||
}
|
}
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/InstallView-DLb6JyWt.js
|
||||||
electronAPI().Config.trackEvent("install_stepper_change", {
|
electronAPI().Config.trackEvent("install_stepper_change", {
|
||||||
|
========
|
||||||
|
electronAPI().Events.trackEvent("install_stepper_change", {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/InstallView-By3hC1fC.js
|
||||||
step: "0",
|
step: "0",
|
||||||
gpu: detectedGpu
|
gpu: detectedGpu
|
||||||
});
|
});
|
||||||
@ -1303,8 +1386,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/InstallView-DLb6JyWt.js
|
||||||
const InstallView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-76d7916c"]]);
|
const InstallView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-76d7916c"]]);
|
||||||
export {
|
export {
|
||||||
InstallView as default
|
InstallView as default
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=InstallView-DLb6JyWt.js.map
|
//# sourceMappingURL=InstallView-DLb6JyWt.js.map
|
||||||
|
========
|
||||||
|
const InstallView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-0a97b0ae"]]);
|
||||||
|
export {
|
||||||
|
InstallView as default
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=InstallView-By3hC1fC.js.map
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/InstallView-By3hC1fC.js
|
||||||
19
comfy/web/assets/InstallView-BATGdh8B.css → comfy/web/assets/InstallView-CxhfFC8Y.css
generated
vendored
19
comfy/web/assets/InstallView-BATGdh8B.css → comfy/web/assets/InstallView-CxhfFC8Y.css
generated
vendored
@ -2,13 +2,20 @@
|
|||||||
.p-tag[data-v-79125ff6] {
|
.p-tag[data-v-79125ff6] {
|
||||||
--p-tag-gap: 0.5rem;
|
--p-tag-gap: 0.5rem;
|
||||||
}
|
}
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/InstallView-BATGdh8B.css
|
||||||
.hover-brighten {
|
.hover-brighten {
|
||||||
&[data-v-79125ff6] {
|
&[data-v-79125ff6] {
|
||||||
|
========
|
||||||
|
.hover-brighten[data-v-79125ff6] {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/InstallView-CxhfFC8Y.css
|
||||||
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
|
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
|
||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
transition-duration: 150ms;
|
transition-duration: 150ms;
|
||||||
transition-property: filter, box-shadow;
|
transition-property: filter, box-shadow;
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/InstallView-BATGdh8B.css
|
||||||
}
|
}
|
||||||
|
========
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/InstallView-CxhfFC8Y.css
|
||||||
&[data-v-79125ff6]:hover {
|
&[data-v-79125ff6]:hover {
|
||||||
filter: brightness(107%) contrast(105%);
|
filter: brightness(107%) contrast(105%);
|
||||||
box-shadow: 0 0 0.25rem #ffffff79;
|
box-shadow: 0 0 0.25rem #ffffff79;
|
||||||
@ -22,7 +29,11 @@
|
|||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
transition-duration: 150ms;
|
transition-duration: 150ms;
|
||||||
}
|
}
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/InstallView-BATGdh8B.css
|
||||||
div.selected {
|
div.selected {
|
||||||
|
========
|
||||||
|
div.selected[data-v-79125ff6] {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/InstallView-CxhfFC8Y.css
|
||||||
.gpu-button[data-v-79125ff6]:not(.selected) {
|
.gpu-button[data-v-79125ff6]:not(.selected) {
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
@ -48,7 +59,11 @@ div.selected {
|
|||||||
.gpu-button[data-v-79125ff6]:hover {
|
.gpu-button[data-v-79125ff6]:hover {
|
||||||
--tw-bg-opacity: 0.75;
|
--tw-bg-opacity: 0.75;
|
||||||
}
|
}
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/InstallView-BATGdh8B.css
|
||||||
.gpu-button {
|
.gpu-button {
|
||||||
|
========
|
||||||
|
.gpu-button[data-v-79125ff6] {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/InstallView-CxhfFC8Y.css
|
||||||
&.selected[data-v-79125ff6] {
|
&.selected[data-v-79125ff6] {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(64 64 64 / var(--tw-bg-opacity, 1));
|
background-color: rgb(64 64 64 / var(--tw-bg-opacity, 1));
|
||||||
@ -76,6 +91,10 @@ div.selected {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/InstallView-BATGdh8B.css
|
||||||
[data-v-76d7916c] .p-steppanel {
|
[data-v-76d7916c] .p-steppanel {
|
||||||
|
========
|
||||||
|
[data-v-0a97b0ae] .p-steppanel {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/InstallView-CxhfFC8Y.css
|
||||||
background-color: transparent
|
background-color: transparent
|
||||||
}
|
}
|
||||||
@ -1,9 +1,16 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/KeybindingPanel-B_BiXc7p.js
|
||||||
import { d as defineComponent, c as computed, o as openBlock, f as createElementBlock, F as Fragment, G as renderList, k as createVNode, N as withCtx, aF as createTextVNode, X as toDisplayString, j as unref, aJ as script, J as createCommentVNode, ab as ref, cr as FilterMatchMode, a_ as useKeybindingStore, a2 as useCommandStore, a1 as useI18n, af as normalizeI18nKey, w as watchEffect, bx as useToast, r as resolveDirective, H as createBlock, cs as SearchBox, m as createBaseVNode, l as script$2, aw as script$4, b2 as withModifiers, c4 as script$5, aO as script$6, i as withDirectives, ct as _sfc_main$2, cu as KeyComboImpl, cv as KeybindingImpl, _ as _export_sfc } from "./index-Du3ctekX.js";
|
import { d as defineComponent, c as computed, o as openBlock, f as createElementBlock, F as Fragment, G as renderList, k as createVNode, N as withCtx, aF as createTextVNode, X as toDisplayString, j as unref, aJ as script, J as createCommentVNode, ab as ref, cr as FilterMatchMode, a_ as useKeybindingStore, a2 as useCommandStore, a1 as useI18n, af as normalizeI18nKey, w as watchEffect, bx as useToast, r as resolveDirective, H as createBlock, cs as SearchBox, m as createBaseVNode, l as script$2, aw as script$4, b2 as withModifiers, c4 as script$5, aO as script$6, i as withDirectives, ct as _sfc_main$2, cu as KeyComboImpl, cv as KeybindingImpl, _ as _export_sfc } from "./index-Du3ctekX.js";
|
||||||
import { s as script$1, a as script$3 } from "./index-BV_B5E0F.js";
|
import { s as script$1, a as script$3 } from "./index-BV_B5E0F.js";
|
||||||
import { u as useKeybindingService } from "./keybindingService-GjQNTASR.js";
|
import { u as useKeybindingService } from "./keybindingService-GjQNTASR.js";
|
||||||
import "./index-Bg6k6_F8.js";
|
import "./index-Bg6k6_F8.js";
|
||||||
|
========
|
||||||
|
import { d as defineComponent, c as computed, o as openBlock, f as createElementBlock, H as Fragment, I as renderList, k as createVNode, P as withCtx, aG as createTextVNode, Z as toDisplayString, j as unref, aK as script, L as createCommentVNode, ad as ref, cu as FilterMatchMode, a$ as useKeybindingStore, a4 as useCommandStore, a3 as useI18n, ah as normalizeI18nKey, w as watchEffect, bz as useToast, r as resolveDirective, J as createBlock, cv as SearchBox, m as createBaseVNode, l as script$2, ax as script$4, b3 as withModifiers, c6 as script$5, aP as script$6, i as withDirectives, cw as _sfc_main$2, p as pushScopeId, q as popScopeId, cx as KeyComboImpl, cy as KeybindingImpl, _ as _export_sfc } from "./index-QvfM__ze.js";
|
||||||
|
import { s as script$1, a as script$3 } from "./index-DpF-ptbJ.js";
|
||||||
|
import { u as useKeybindingService } from "./keybindingService-Cak1En5n.js";
|
||||||
|
import "./index-Q1cQr26V.js";
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/KeybindingPanel-D6O16W_1.js
|
||||||
const _hoisted_1$1 = {
|
const _hoisted_1$1 = {
|
||||||
key: 0,
|
key: 0,
|
||||||
class: "px-2"
|
class: "px-2"
|
||||||
@ -279,4 +286,8 @@ const KeybindingPanel = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "d
|
|||||||
export {
|
export {
|
||||||
KeybindingPanel as default
|
KeybindingPanel as default
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/KeybindingPanel-B_BiXc7p.js
|
||||||
//# sourceMappingURL=KeybindingPanel-B_BiXc7p.js.map
|
//# sourceMappingURL=KeybindingPanel-B_BiXc7p.js.map
|
||||||
|
========
|
||||||
|
//# sourceMappingURL=KeybindingPanel-D6O16W_1.js.map
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/KeybindingPanel-D6O16W_1.js
|
||||||
@ -1,7 +1,13 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/ManualConfigurationView-Cf62OEk9.js
|
||||||
import { d as defineComponent, a1 as useI18n, ab as ref, p as onMounted, o as openBlock, H as createBlock, N as withCtx, m as createBaseVNode, X as toDisplayString, k as createVNode, j as unref, aJ as script, bL as script$1, l as script$2, bT as electronAPI, _ as _export_sfc } from "./index-Du3ctekX.js";
|
import { d as defineComponent, a1 as useI18n, ab as ref, p as onMounted, o as openBlock, H as createBlock, N as withCtx, m as createBaseVNode, X as toDisplayString, k as createVNode, j as unref, aJ as script, bL as script$1, l as script$2, bT as electronAPI, _ as _export_sfc } from "./index-Du3ctekX.js";
|
||||||
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BG-_HPdC.js";
|
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BG-_HPdC.js";
|
||||||
|
========
|
||||||
|
import { d as defineComponent, a3 as useI18n, ad as ref, t as onMounted, o as openBlock, J as createBlock, P as withCtx, m as createBaseVNode, Z as toDisplayString, k as createVNode, j as unref, aK as script, bN as script$1, l as script$2, p as pushScopeId, q as popScopeId, bV as electronAPI, _ as _export_sfc } from "./index-QvfM__ze.js";
|
||||||
|
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BhQMaVFP.js";
|
||||||
|
const _withScopeId = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-dc169863"), n = n(), popScopeId(), n), "_withScopeId");
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/ManualConfigurationView-enyqGo0M.js
|
||||||
const _hoisted_1 = { class: "comfy-installer grow flex flex-col gap-4 text-neutral-300 max-w-110" };
|
const _hoisted_1 = { class: "comfy-installer grow flex flex-col gap-4 text-neutral-300 max-w-110" };
|
||||||
const _hoisted_2 = { class: "text-2xl font-semibold text-neutral-100" };
|
const _hoisted_2 = { class: "text-2xl font-semibold text-neutral-100" };
|
||||||
const _hoisted_3 = { class: "m-1 text-neutral-300" };
|
const _hoisted_3 = { class: "m-1 text-neutral-300" };
|
||||||
@ -71,4 +77,8 @@ const ManualConfigurationView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scop
|
|||||||
export {
|
export {
|
||||||
ManualConfigurationView as default
|
ManualConfigurationView as default
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/ManualConfigurationView-Cf62OEk9.js
|
||||||
//# sourceMappingURL=ManualConfigurationView-Cf62OEk9.js.map
|
//# sourceMappingURL=ManualConfigurationView-Cf62OEk9.js.map
|
||||||
|
========
|
||||||
|
//# sourceMappingURL=ManualConfigurationView-enyqGo0M.js.map
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/ManualConfigurationView-enyqGo0M.js
|
||||||
86
comfy/web/assets/MetricsConsentView-lSfLu4nr.js
generated
vendored
Normal file
86
comfy/web/assets/MetricsConsentView-lSfLu4nr.js
generated
vendored
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
var __defProp = Object.defineProperty;
|
||||||
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
|
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BhQMaVFP.js";
|
||||||
|
import { d as defineComponent, bz as useToast, a3 as useI18n, ad as ref, c2 as useRouter, o as openBlock, J as createBlock, P as withCtx, m as createBaseVNode, Z as toDisplayString, aG as createTextVNode, k as createVNode, j as unref, cc as script, l as script$1, bV as electronAPI } from "./index-QvfM__ze.js";
|
||||||
|
const _hoisted_1 = { class: "h-full p-8 2xl:p-16 flex flex-col items-center justify-center" };
|
||||||
|
const _hoisted_2 = { class: "bg-neutral-800 rounded-lg shadow-lg p-6 w-full max-w-[600px] flex flex-col gap-6" };
|
||||||
|
const _hoisted_3 = { class: "text-3xl font-semibold text-neutral-100" };
|
||||||
|
const _hoisted_4 = { class: "text-neutral-400" };
|
||||||
|
const _hoisted_5 = { class: "text-neutral-400" };
|
||||||
|
const _hoisted_6 = {
|
||||||
|
href: "https://comfy.org/privacy",
|
||||||
|
target: "_blank",
|
||||||
|
class: "text-blue-400 hover:text-blue-300 underline"
|
||||||
|
};
|
||||||
|
const _hoisted_7 = { class: "flex items-center gap-4" };
|
||||||
|
const _hoisted_8 = {
|
||||||
|
id: "metricsDescription",
|
||||||
|
class: "text-neutral-100"
|
||||||
|
};
|
||||||
|
const _hoisted_9 = { class: "flex pt-6 justify-end" };
|
||||||
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||||
|
__name: "MetricsConsentView",
|
||||||
|
setup(__props) {
|
||||||
|
const toast = useToast();
|
||||||
|
const { t } = useI18n();
|
||||||
|
const allowMetrics = ref(true);
|
||||||
|
const router = useRouter();
|
||||||
|
const isUpdating = ref(false);
|
||||||
|
const updateConsent = /* @__PURE__ */ __name(async () => {
|
||||||
|
isUpdating.value = true;
|
||||||
|
try {
|
||||||
|
await electronAPI().setMetricsConsent(allowMetrics.value);
|
||||||
|
} catch (error) {
|
||||||
|
toast.add({
|
||||||
|
severity: "error",
|
||||||
|
summary: t("install.errorUpdatingConsent"),
|
||||||
|
detail: t("install.errorUpdatingConsentDetail"),
|
||||||
|
life: 3e3
|
||||||
|
});
|
||||||
|
} finally {
|
||||||
|
isUpdating.value = false;
|
||||||
|
}
|
||||||
|
router.push("/");
|
||||||
|
}, "updateConsent");
|
||||||
|
return (_ctx, _cache) => {
|
||||||
|
const _component_BaseViewTemplate = _sfc_main$1;
|
||||||
|
return openBlock(), createBlock(_component_BaseViewTemplate, { dark: "" }, {
|
||||||
|
default: withCtx(() => [
|
||||||
|
createBaseVNode("div", _hoisted_1, [
|
||||||
|
createBaseVNode("div", _hoisted_2, [
|
||||||
|
createBaseVNode("h2", _hoisted_3, toDisplayString(_ctx.$t("install.helpImprove")), 1),
|
||||||
|
createBaseVNode("p", _hoisted_4, toDisplayString(_ctx.$t("install.updateConsent")), 1),
|
||||||
|
createBaseVNode("p", _hoisted_5, [
|
||||||
|
createTextVNode(toDisplayString(_ctx.$t("install.moreInfo")) + " ", 1),
|
||||||
|
createBaseVNode("a", _hoisted_6, toDisplayString(_ctx.$t("install.privacyPolicy")), 1),
|
||||||
|
createTextVNode(". ")
|
||||||
|
]),
|
||||||
|
createBaseVNode("div", _hoisted_7, [
|
||||||
|
createVNode(unref(script), {
|
||||||
|
modelValue: allowMetrics.value,
|
||||||
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => allowMetrics.value = $event),
|
||||||
|
"aria-describedby": "metricsDescription"
|
||||||
|
}, null, 8, ["modelValue"]),
|
||||||
|
createBaseVNode("span", _hoisted_8, toDisplayString(allowMetrics.value ? _ctx.$t("install.metricsEnabled") : _ctx.$t("install.metricsDisabled")), 1)
|
||||||
|
]),
|
||||||
|
createBaseVNode("div", _hoisted_9, [
|
||||||
|
createVNode(unref(script$1), {
|
||||||
|
label: _ctx.$t("g.ok"),
|
||||||
|
icon: "pi pi-check",
|
||||||
|
loading: isUpdating.value,
|
||||||
|
iconPos: "right",
|
||||||
|
onClick: updateConsent
|
||||||
|
}, null, 8, ["label", "loading"])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
]),
|
||||||
|
_: 1
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
export {
|
||||||
|
_sfc_main as default
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=MetricsConsentView-lSfLu4nr.js.map
|
||||||
19
comfy/web/assets/NotSupportedView-BiyVuLfX.css
generated
vendored
19
comfy/web/assets/NotSupportedView-BiyVuLfX.css
generated
vendored
@ -1,19 +0,0 @@
|
|||||||
|
|
||||||
.sad-container {
|
|
||||||
&[data-v-ebb20958] {
|
|
||||||
display: grid;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-evenly;
|
|
||||||
grid-template-columns: 25rem 1fr;
|
|
||||||
}
|
|
||||||
&[data-v-ebb20958] > * {
|
|
||||||
grid-row: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.sad-text[data-v-ebb20958] {
|
|
||||||
grid-column: 1/3;
|
|
||||||
}
|
|
||||||
.sad-girl[data-v-ebb20958] {
|
|
||||||
grid-column: 2/3;
|
|
||||||
width: min(75vw, 100vh);
|
|
||||||
}
|
|
||||||
26
comfy/web/assets/NotSupportedView-DQerxQzi.css
generated
vendored
Normal file
26
comfy/web/assets/NotSupportedView-DQerxQzi.css
generated
vendored
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/NotSupportedView-BiyVuLfX.css
|
||||||
|
.sad-container {
|
||||||
|
&[data-v-ebb20958] {
|
||||||
|
========
|
||||||
|
.sad-container[data-v-ebb20958] {
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/NotSupportedView-DQerxQzi.css
|
||||||
|
display: grid;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
grid-template-columns: 25rem 1fr;
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/NotSupportedView-BiyVuLfX.css
|
||||||
|
}
|
||||||
|
========
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/NotSupportedView-DQerxQzi.css
|
||||||
|
&[data-v-ebb20958] > * {
|
||||||
|
grid-row: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.sad-text[data-v-ebb20958] {
|
||||||
|
grid-column: 1/3;
|
||||||
|
}
|
||||||
|
.sad-girl[data-v-ebb20958] {
|
||||||
|
grid-column: 2/3;
|
||||||
|
width: min(75vw, 100vh);
|
||||||
|
}
|
||||||
@ -1,9 +1,16 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/NotSupportedView-DyADE5iE.js
|
||||||
import { d as defineComponent, c0 as useRouter, r as resolveDirective, o as openBlock, H as createBlock, N as withCtx, m as createBaseVNode, X as toDisplayString, k as createVNode, j as unref, l as script, i as withDirectives, _ as _export_sfc } from "./index-Du3ctekX.js";
|
import { d as defineComponent, c0 as useRouter, r as resolveDirective, o as openBlock, H as createBlock, N as withCtx, m as createBaseVNode, X as toDisplayString, k as createVNode, j as unref, l as script, i as withDirectives, _ as _export_sfc } from "./index-Du3ctekX.js";
|
||||||
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BG-_HPdC.js";
|
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BG-_HPdC.js";
|
||||||
|
========
|
||||||
|
import { d as defineComponent, c2 as useRouter, r as resolveDirective, o as openBlock, J as createBlock, P as withCtx, m as createBaseVNode, Z as toDisplayString, k as createVNode, j as unref, l as script, i as withDirectives, p as pushScopeId, q as popScopeId, _ as _export_sfc } from "./index-QvfM__ze.js";
|
||||||
|
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BhQMaVFP.js";
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/NotSupportedView-Vc8_xWgH.js
|
||||||
const _imports_0 = "" + new URL("images/sad_girl.png", import.meta.url).href;
|
const _imports_0 = "" + new URL("images/sad_girl.png", import.meta.url).href;
|
||||||
|
const _withScopeId = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-ebb20958"), n = n(), popScopeId(), n), "_withScopeId");
|
||||||
const _hoisted_1 = { class: "sad-container" };
|
const _hoisted_1 = { class: "sad-container" };
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/NotSupportedView-DyADE5iE.js
|
||||||
const _hoisted_2 = { class: "no-drag sad-text flex items-center" };
|
const _hoisted_2 = { class: "no-drag sad-text flex items-center" };
|
||||||
const _hoisted_3 = { class: "flex flex-col gap-8 p-8 min-w-110" };
|
const _hoisted_3 = { class: "flex flex-col gap-8 p-8 min-w-110" };
|
||||||
const _hoisted_4 = { class: "text-4xl font-bold text-red-500" };
|
const _hoisted_4 = { class: "text-4xl font-bold text-red-500" };
|
||||||
@ -11,6 +18,20 @@ const _hoisted_5 = { class: "space-y-4" };
|
|||||||
const _hoisted_6 = { class: "text-xl" };
|
const _hoisted_6 = { class: "text-xl" };
|
||||||
const _hoisted_7 = { class: "list-disc list-inside space-y-1 text-neutral-800" };
|
const _hoisted_7 = { class: "list-disc list-inside space-y-1 text-neutral-800" };
|
||||||
const _hoisted_8 = { class: "flex gap-4" };
|
const _hoisted_8 = { class: "flex gap-4" };
|
||||||
|
========
|
||||||
|
const _hoisted_2 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createBaseVNode("img", {
|
||||||
|
class: "sad-girl",
|
||||||
|
src: _imports_0,
|
||||||
|
alt: "Sad girl illustration"
|
||||||
|
}, null, -1));
|
||||||
|
const _hoisted_3 = { class: "no-drag sad-text flex items-center" };
|
||||||
|
const _hoisted_4 = { class: "flex flex-col gap-8 p-8 min-w-110" };
|
||||||
|
const _hoisted_5 = { class: "text-4xl font-bold text-red-500" };
|
||||||
|
const _hoisted_6 = { class: "space-y-4" };
|
||||||
|
const _hoisted_7 = { class: "text-xl" };
|
||||||
|
const _hoisted_8 = { class: "list-disc list-inside space-y-1 text-neutral-800" };
|
||||||
|
const _hoisted_9 = { class: "flex gap-4" };
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/NotSupportedView-Vc8_xWgH.js
|
||||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||||
__name: "NotSupportedView",
|
__name: "NotSupportedView",
|
||||||
setup(__props) {
|
setup(__props) {
|
||||||
@ -83,4 +104,8 @@ const NotSupportedView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "
|
|||||||
export {
|
export {
|
||||||
NotSupportedView as default
|
NotSupportedView as default
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/NotSupportedView-DyADE5iE.js
|
||||||
//# sourceMappingURL=NotSupportedView-DyADE5iE.js.map
|
//# sourceMappingURL=NotSupportedView-DyADE5iE.js.map
|
||||||
|
========
|
||||||
|
//# sourceMappingURL=NotSupportedView-Vc8_xWgH.js.map
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/NotSupportedView-Vc8_xWgH.js
|
||||||
@ -1,7 +1,12 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/ServerConfigPanel-DgJqhnkz.js
|
||||||
import { o as openBlock, f as createElementBlock, m as createBaseVNode, Z as markRaw, d as defineComponent, a as useSettingStore, aR as storeToRefs, a5 as watch, cR as useCopyToClipboard, a1 as useI18n, H as createBlock, N as withCtx, j as unref, c4 as script, X as toDisplayString, G as renderList, F as Fragment, k as createVNode, l as script$1, J as createCommentVNode, c2 as script$2, cS as FormItem, ct as _sfc_main$1, bT as electronAPI } from "./index-Du3ctekX.js";
|
import { o as openBlock, f as createElementBlock, m as createBaseVNode, Z as markRaw, d as defineComponent, a as useSettingStore, aR as storeToRefs, a5 as watch, cR as useCopyToClipboard, a1 as useI18n, H as createBlock, N as withCtx, j as unref, c4 as script, X as toDisplayString, G as renderList, F as Fragment, k as createVNode, l as script$1, J as createCommentVNode, c2 as script$2, cS as FormItem, ct as _sfc_main$1, bT as electronAPI } from "./index-Du3ctekX.js";
|
||||||
import { u as useServerConfigStore } from "./serverConfigStore-B0br_pYH.js";
|
import { u as useServerConfigStore } from "./serverConfigStore-B0br_pYH.js";
|
||||||
|
========
|
||||||
|
import { m as createBaseVNode, o as openBlock, f as createElementBlock, a0 as markRaw, d as defineComponent, a as useSettingStore, aS as storeToRefs, a7 as watch, cW as useCopyToClipboard, a3 as useI18n, J as createBlock, P as withCtx, j as unref, c6 as script, Z as toDisplayString, I as renderList, H as Fragment, k as createVNode, l as script$1, L as createCommentVNode, c4 as script$2, cX as FormItem, cw as _sfc_main$1, bV as electronAPI } from "./index-QvfM__ze.js";
|
||||||
|
import { u as useServerConfigStore } from "./serverConfigStore-DCme3xlV.js";
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/ServerConfigPanel-B-w0HFlz.js
|
||||||
const _hoisted_1$1 = {
|
const _hoisted_1$1 = {
|
||||||
viewBox: "0 0 24 24",
|
viewBox: "0 0 24 24",
|
||||||
width: "1.2em",
|
width: "1.2em",
|
||||||
@ -153,4 +158,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|||||||
export {
|
export {
|
||||||
_sfc_main as default
|
_sfc_main as default
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/ServerConfigPanel-DgJqhnkz.js
|
||||||
//# sourceMappingURL=ServerConfigPanel-DgJqhnkz.js.map
|
//# sourceMappingURL=ServerConfigPanel-DgJqhnkz.js.map
|
||||||
|
========
|
||||||
|
//# sourceMappingURL=ServerConfigPanel-B-w0HFlz.js.map
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/ServerConfigPanel-B-w0HFlz.js
|
||||||
101
comfy/web/assets/ServerStartView-48wfE1MS.js
generated
vendored
Normal file
101
comfy/web/assets/ServerStartView-48wfE1MS.js
generated
vendored
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
var __defProp = Object.defineProperty;
|
||||||
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
|
import { d as defineComponent, a3 as useI18n, ad as ref, c7 as ProgressStatus, t as onMounted, o as openBlock, J as createBlock, P as withCtx, m as createBaseVNode, aG as createTextVNode, Z as toDisplayString, j as unref, f as createElementBlock, L as createCommentVNode, k as createVNode, l as script, i as withDirectives, v as vShow, c8 as BaseTerminal, p as pushScopeId, q as popScopeId, bV as electronAPI, _ as _export_sfc } from "./index-QvfM__ze.js";
|
||||||
|
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BhQMaVFP.js";
|
||||||
|
const _withScopeId = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-4140d62b"), n = n(), popScopeId(), n), "_withScopeId");
|
||||||
|
const _hoisted_1 = { class: "flex flex-col w-full h-full items-center" };
|
||||||
|
const _hoisted_2 = { class: "text-2xl font-bold" };
|
||||||
|
const _hoisted_3 = { key: 0 };
|
||||||
|
const _hoisted_4 = {
|
||||||
|
key: 0,
|
||||||
|
class: "flex flex-col items-center gap-4"
|
||||||
|
};
|
||||||
|
const _hoisted_5 = { class: "flex items-center my-4 gap-2" };
|
||||||
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||||
|
__name: "ServerStartView",
|
||||||
|
setup(__props) {
|
||||||
|
const electron = electronAPI();
|
||||||
|
const { t } = useI18n();
|
||||||
|
const status = ref(ProgressStatus.INITIAL_STATE);
|
||||||
|
const electronVersion = ref("");
|
||||||
|
let xterm;
|
||||||
|
const terminalVisible = ref(true);
|
||||||
|
const updateProgress = /* @__PURE__ */ __name(({ status: newStatus }) => {
|
||||||
|
status.value = newStatus;
|
||||||
|
if (newStatus === ProgressStatus.ERROR) terminalVisible.value = false;
|
||||||
|
else xterm?.clear();
|
||||||
|
}, "updateProgress");
|
||||||
|
const terminalCreated = /* @__PURE__ */ __name(({ terminal, useAutoSize }, root) => {
|
||||||
|
xterm = terminal;
|
||||||
|
useAutoSize({ root, autoRows: true, autoCols: true });
|
||||||
|
electron.onLogMessage((message) => {
|
||||||
|
terminal.write(message);
|
||||||
|
});
|
||||||
|
terminal.options.cursorBlink = false;
|
||||||
|
terminal.options.disableStdin = true;
|
||||||
|
terminal.options.cursorInactiveStyle = "block";
|
||||||
|
}, "terminalCreated");
|
||||||
|
const reinstall = /* @__PURE__ */ __name(() => electron.reinstall(), "reinstall");
|
||||||
|
const reportIssue = /* @__PURE__ */ __name(() => {
|
||||||
|
window.open("https://forum.comfy.org/c/v1-feedback/", "_blank");
|
||||||
|
}, "reportIssue");
|
||||||
|
const openLogs = /* @__PURE__ */ __name(() => electron.openLogsFolder(), "openLogs");
|
||||||
|
onMounted(async () => {
|
||||||
|
electron.sendReady();
|
||||||
|
electron.onProgressUpdate(updateProgress);
|
||||||
|
electronVersion.value = await electron.getElectronVersion();
|
||||||
|
});
|
||||||
|
return (_ctx, _cache) => {
|
||||||
|
return openBlock(), createBlock(_sfc_main$1, {
|
||||||
|
dark: "",
|
||||||
|
class: "flex-col"
|
||||||
|
}, {
|
||||||
|
default: withCtx(() => [
|
||||||
|
createBaseVNode("div", _hoisted_1, [
|
||||||
|
createBaseVNode("h2", _hoisted_2, [
|
||||||
|
createTextVNode(toDisplayString(unref(t)(`serverStart.process.${status.value}`)) + " ", 1),
|
||||||
|
status.value === unref(ProgressStatus).ERROR ? (openBlock(), createElementBlock("span", _hoisted_3, " v" + toDisplayString(electronVersion.value), 1)) : createCommentVNode("", true)
|
||||||
|
]),
|
||||||
|
status.value === unref(ProgressStatus).ERROR ? (openBlock(), createElementBlock("div", _hoisted_4, [
|
||||||
|
createBaseVNode("div", _hoisted_5, [
|
||||||
|
createVNode(unref(script), {
|
||||||
|
icon: "pi pi-flag",
|
||||||
|
severity: "secondary",
|
||||||
|
label: unref(t)("serverStart.reportIssue"),
|
||||||
|
onClick: reportIssue
|
||||||
|
}, null, 8, ["label"]),
|
||||||
|
createVNode(unref(script), {
|
||||||
|
icon: "pi pi-file",
|
||||||
|
severity: "secondary",
|
||||||
|
label: unref(t)("serverStart.openLogs"),
|
||||||
|
onClick: openLogs
|
||||||
|
}, null, 8, ["label"]),
|
||||||
|
createVNode(unref(script), {
|
||||||
|
icon: "pi pi-refresh",
|
||||||
|
label: unref(t)("serverStart.reinstall"),
|
||||||
|
onClick: reinstall
|
||||||
|
}, null, 8, ["label"])
|
||||||
|
]),
|
||||||
|
!terminalVisible.value ? (openBlock(), createBlock(unref(script), {
|
||||||
|
key: 0,
|
||||||
|
icon: "pi pi-search",
|
||||||
|
severity: "secondary",
|
||||||
|
label: unref(t)("serverStart.showTerminal"),
|
||||||
|
onClick: _cache[0] || (_cache[0] = ($event) => terminalVisible.value = true)
|
||||||
|
}, null, 8, ["label"])) : createCommentVNode("", true)
|
||||||
|
])) : createCommentVNode("", true),
|
||||||
|
withDirectives(createVNode(BaseTerminal, { onCreated: terminalCreated }, null, 512), [
|
||||||
|
[vShow, terminalVisible.value]
|
||||||
|
])
|
||||||
|
])
|
||||||
|
]),
|
||||||
|
_: 1
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const ServerStartView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-4140d62b"]]);
|
||||||
|
export {
|
||||||
|
ServerStartView as default
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=ServerStartView-48wfE1MS.js.map
|
||||||
@ -1,7 +1,12 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/UserSelectView-CPq4bKTd.js
|
||||||
import { d as defineComponent, aW as useUserStore, c0 as useRouter, ab as ref, c as computed, p as onMounted, o as openBlock, H as createBlock, N as withCtx, m as createBaseVNode, X as toDisplayString, k as createVNode, c1 as withKeys, j as unref, aw as script, c2 as script$1, c3 as script$2, c4 as script$3, aF as createTextVNode, J as createCommentVNode, l as script$4 } from "./index-Du3ctekX.js";
|
import { d as defineComponent, aW as useUserStore, c0 as useRouter, ab as ref, c as computed, p as onMounted, o as openBlock, H as createBlock, N as withCtx, m as createBaseVNode, X as toDisplayString, k as createVNode, c1 as withKeys, j as unref, aw as script, c2 as script$1, c3 as script$2, c4 as script$3, aF as createTextVNode, J as createCommentVNode, l as script$4 } from "./index-Du3ctekX.js";
|
||||||
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BG-_HPdC.js";
|
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BG-_HPdC.js";
|
||||||
|
========
|
||||||
|
import { d as defineComponent, aX as useUserStore, c2 as useRouter, ad as ref, c as computed, t as onMounted, o as openBlock, J as createBlock, P as withCtx, m as createBaseVNode, Z as toDisplayString, k as createVNode, c3 as withKeys, j as unref, ax as script, c4 as script$1, c5 as script$2, c6 as script$3, aG as createTextVNode, L as createCommentVNode, l as script$4 } from "./index-QvfM__ze.js";
|
||||||
|
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BhQMaVFP.js";
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/UserSelectView-CXmVKOeK.js
|
||||||
const _hoisted_1 = {
|
const _hoisted_1 = {
|
||||||
id: "comfy-user-selection",
|
id: "comfy-user-selection",
|
||||||
class: "min-w-84 relative rounded-lg bg-[var(--comfy-menu-bg)] p-5 px-10 shadow-lg"
|
class: "min-w-84 relative rounded-lg bg-[var(--comfy-menu-bg)] p-5 px-10 shadow-lg"
|
||||||
@ -98,4 +103,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|||||||
export {
|
export {
|
||||||
_sfc_main as default
|
_sfc_main as default
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/UserSelectView-CPq4bKTd.js
|
||||||
//# sourceMappingURL=UserSelectView-CPq4bKTd.js.map
|
//# sourceMappingURL=UserSelectView-CPq4bKTd.js.map
|
||||||
|
========
|
||||||
|
//# sourceMappingURL=UserSelectView-CXmVKOeK.js.map
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/UserSelectView-CXmVKOeK.js
|
||||||
10
comfy/web/assets/WelcomeView-BmGjncl9.js → comfy/web/assets/WelcomeView-C8whKl15.js
generated
vendored
10
comfy/web/assets/WelcomeView-BmGjncl9.js → comfy/web/assets/WelcomeView-C8whKl15.js
generated
vendored
@ -1,7 +1,13 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/WelcomeView-BmGjncl9.js
|
||||||
import { d as defineComponent, c0 as useRouter, o as openBlock, H as createBlock, N as withCtx, m as createBaseVNode, X as toDisplayString, k as createVNode, j as unref, l as script, _ as _export_sfc } from "./index-Du3ctekX.js";
|
import { d as defineComponent, c0 as useRouter, o as openBlock, H as createBlock, N as withCtx, m as createBaseVNode, X as toDisplayString, k as createVNode, j as unref, l as script, _ as _export_sfc } from "./index-Du3ctekX.js";
|
||||||
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BG-_HPdC.js";
|
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BG-_HPdC.js";
|
||||||
|
========
|
||||||
|
import { d as defineComponent, c2 as useRouter, o as openBlock, J as createBlock, P as withCtx, m as createBaseVNode, Z as toDisplayString, k as createVNode, j as unref, l as script, p as pushScopeId, q as popScopeId, _ as _export_sfc } from "./index-QvfM__ze.js";
|
||||||
|
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BhQMaVFP.js";
|
||||||
|
const _withScopeId = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-7dfaf74c"), n = n(), popScopeId(), n), "_withScopeId");
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/WelcomeView-C8whKl15.js
|
||||||
const _hoisted_1 = { class: "flex flex-col items-center justify-center gap-8 p-8" };
|
const _hoisted_1 = { class: "flex flex-col items-center justify-center gap-8 p-8" };
|
||||||
const _hoisted_2 = { class: "animated-gradient-text text-glow select-none" };
|
const _hoisted_2 = { class: "animated-gradient-text text-glow select-none" };
|
||||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||||
@ -36,4 +42,8 @@ const WelcomeView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-
|
|||||||
export {
|
export {
|
||||||
WelcomeView as default
|
WelcomeView as default
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/WelcomeView-BmGjncl9.js
|
||||||
//# sourceMappingURL=WelcomeView-BmGjncl9.js.map
|
//# sourceMappingURL=WelcomeView-BmGjncl9.js.map
|
||||||
|
========
|
||||||
|
//# sourceMappingURL=WelcomeView-C8whKl15.js.map
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/WelcomeView-C8whKl15.js
|
||||||
29
comfy/web/assets/index-BwaYE8Fk.css → comfy/web/assets/index-Cf-n7v0V.css
generated
vendored
29
comfy/web/assets/index-BwaYE8Fk.css → comfy/web/assets/index-Cf-n7v0V.css
generated
vendored
@ -2367,6 +2367,9 @@
|
|||||||
.max-w-\[150px\]{
|
.max-w-\[150px\]{
|
||||||
max-width: 150px;
|
max-width: 150px;
|
||||||
}
|
}
|
||||||
|
.max-w-\[600px\]{
|
||||||
|
max-width: 600px;
|
||||||
|
}
|
||||||
.max-w-full{
|
.max-w-full{
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
@ -2665,6 +2668,9 @@
|
|||||||
.p-5{
|
.p-5{
|
||||||
padding: 1.25rem;
|
padding: 1.25rem;
|
||||||
}
|
}
|
||||||
|
.p-6{
|
||||||
|
padding: 1.5rem;
|
||||||
|
}
|
||||||
.p-8{
|
.p-8{
|
||||||
padding: 2rem;
|
padding: 2rem;
|
||||||
}
|
}
|
||||||
@ -2731,6 +2737,9 @@
|
|||||||
.text-2xl{
|
.text-2xl{
|
||||||
font-size: 1.5rem;
|
font-size: 1.5rem;
|
||||||
}
|
}
|
||||||
|
.text-3xl{
|
||||||
|
font-size: 1.875rem;
|
||||||
|
}
|
||||||
.text-4xl{
|
.text-4xl{
|
||||||
font-size: 2.25rem;
|
font-size: 2.25rem;
|
||||||
}
|
}
|
||||||
@ -2813,6 +2822,9 @@
|
|||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(239 68 68 / var(--tw-text-opacity, 1));
|
color: rgb(239 68 68 / var(--tw-text-opacity, 1));
|
||||||
}
|
}
|
||||||
|
.underline{
|
||||||
|
text-decoration-line: underline;
|
||||||
|
}
|
||||||
.no-underline{
|
.no-underline{
|
||||||
text-decoration-line: none;
|
text-decoration-line: none;
|
||||||
}
|
}
|
||||||
@ -3659,6 +3671,7 @@ audio.comfy-audio.empty-audio-widget {
|
|||||||
/* [Desktop] Electron window specific styles */
|
/* [Desktop] Electron window specific styles */
|
||||||
.app-drag {
|
.app-drag {
|
||||||
app-region: drag;
|
app-region: drag;
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/index-BwaYE8Fk.css
|
||||||
}
|
}
|
||||||
|
|
||||||
.no-drag {
|
.no-drag {
|
||||||
@ -3673,6 +3686,22 @@ audio.comfy-audio.empty-audio-widget {
|
|||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(64 64 64 / var(--tw-bg-opacity, 1));
|
background-color: rgb(64 64 64 / var(--tw-bg-opacity, 1));
|
||||||
}
|
}
|
||||||
|
========
|
||||||
|
}
|
||||||
|
|
||||||
|
.no-drag {
|
||||||
|
app-region: no-drag;
|
||||||
|
}
|
||||||
|
|
||||||
|
.window-actions-spacer {
|
||||||
|
width: calc(100vw - env(titlebar-area-width, 100vw));
|
||||||
|
}
|
||||||
|
/* End of [Desktop] Electron window specific styles */
|
||||||
|
.hover\:bg-neutral-700:hover{
|
||||||
|
--tw-bg-opacity: 1;
|
||||||
|
background-color: rgb(64 64 64 / var(--tw-bg-opacity));
|
||||||
|
}
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/index-Cf-n7v0V.css
|
||||||
.hover\:bg-opacity-75:hover{
|
.hover\:bg-opacity-75:hover{
|
||||||
--tw-bg-opacity: 0.75;
|
--tw-bg-opacity: 0.75;
|
||||||
}
|
}
|
||||||
9
comfy/web/assets/index-BV_B5E0F.js → comfy/web/assets/index-DpF-ptbJ.js
generated
vendored
9
comfy/web/assets/index-BV_B5E0F.js → comfy/web/assets/index-DpF-ptbJ.js
generated
vendored
@ -1,7 +1,12 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/index-BV_B5E0F.js
|
||||||
import { B as BaseStyle, t as script$s, bp as script$t, o as openBlock, f as createElementBlock, E as mergeProps, m as createBaseVNode, X as toDisplayString, S as Ripple, r as resolveDirective, i as withDirectives, H as createBlock, I as resolveDynamicComponent, c3 as script$u, aC as resolveComponent, T as normalizeClass, aE as createSlots, N as withCtx, bE as script$v, bB as script$w, F as Fragment, G as renderList, aF as createTextVNode, bv as setAttribute, bt as normalizeProps, K as renderSlot, J as createCommentVNode, ak as script$x, R as equals, bq as script$y, ce as script$z, cx as getFirstFocusableElement, ao as OverlayEventBus, C as getVNodeProp, an as resolveFieldData, cy as invokeElementMethod, O as getAttribute, cz as getNextElementSibling, z as getOuterWidth, cA as getPreviousElementSibling, l as script$A, az as script$B, W as script$C, bs as script$E, aj as isNotEmpty, b2 as withModifiers, A as getOuterHeight, al as UniqueComponentId, cB as _default, am as ZIndex, Q as focus, aq as addStyle, as as absolutePosition, at as ConnectedOverlayScrollHandler, au as isTouchDevice, cC as FilterOperator, ay as script$F, cD as script$G, cE as FocusTrap, k as createVNode, aD as Transition, c1 as withKeys, cF as getIndex, aV as script$H, cG as isClickable, cH as clearSelection, cI as localeComparator, cJ as sort, cK as FilterService, cr as FilterMatchMode, P as findSingle, c7 as findIndexInList, c8 as find, cL as exportCSV, U as getOffset, cM as getHiddenElementOuterWidth, cN as getHiddenElementOuterHeight, cO as reorderArray, cP as removeClass, cQ as addClass, ap as isEmpty, ax as script$I, aA as script$J } from "./index-Du3ctekX.js";
|
import { B as BaseStyle, t as script$s, bp as script$t, o as openBlock, f as createElementBlock, E as mergeProps, m as createBaseVNode, X as toDisplayString, S as Ripple, r as resolveDirective, i as withDirectives, H as createBlock, I as resolveDynamicComponent, c3 as script$u, aC as resolveComponent, T as normalizeClass, aE as createSlots, N as withCtx, bE as script$v, bB as script$w, F as Fragment, G as renderList, aF as createTextVNode, bv as setAttribute, bt as normalizeProps, K as renderSlot, J as createCommentVNode, ak as script$x, R as equals, bq as script$y, ce as script$z, cx as getFirstFocusableElement, ao as OverlayEventBus, C as getVNodeProp, an as resolveFieldData, cy as invokeElementMethod, O as getAttribute, cz as getNextElementSibling, z as getOuterWidth, cA as getPreviousElementSibling, l as script$A, az as script$B, W as script$C, bs as script$E, aj as isNotEmpty, b2 as withModifiers, A as getOuterHeight, al as UniqueComponentId, cB as _default, am as ZIndex, Q as focus, aq as addStyle, as as absolutePosition, at as ConnectedOverlayScrollHandler, au as isTouchDevice, cC as FilterOperator, ay as script$F, cD as script$G, cE as FocusTrap, k as createVNode, aD as Transition, c1 as withKeys, cF as getIndex, aV as script$H, cG as isClickable, cH as clearSelection, cI as localeComparator, cJ as sort, cK as FilterService, cr as FilterMatchMode, P as findSingle, c7 as findIndexInList, c8 as find, cL as exportCSV, U as getOffset, cM as getHiddenElementOuterWidth, cN as getHiddenElementOuterHeight, cO as reorderArray, cP as removeClass, cQ as addClass, ap as isEmpty, ax as script$I, aA as script$J } from "./index-Du3ctekX.js";
|
||||||
import { s as script$D } from "./index-Bg6k6_F8.js";
|
import { s as script$D } from "./index-Bg6k6_F8.js";
|
||||||
|
========
|
||||||
|
import { B as BaseStyle, y as script$s, cA as script$t, m as createBaseVNode, o as openBlock, f as createElementBlock, G as mergeProps, Z as toDisplayString, U as Ripple, r as resolveDirective, i as withDirectives, J as createBlock, K as resolveDynamicComponent, c5 as script$u, aD as resolveComponent, V as normalizeClass, aF as createSlots, P as withCtx, bG as script$v, bD as script$w, H as Fragment, I as renderList, aG as createTextVNode, bx as setAttribute, am as UniqueComponentId, bv as normalizeProps, M as renderSlot, L as createCommentVNode, T as equals, br as script$x, cg as script$y, cB as getFirstFocusableElement, ap as OverlayEventBus, E as getVNodeProp, ao as resolveFieldData, cC as invokeElementMethod, Q as getAttribute, cD as getNextElementSibling, C as getOuterWidth, cE as getPreviousElementSibling, l as script$z, aA as script$A, Y as script$B, bu as script$D, al as isNotEmpty, b3 as withModifiers, D as getOuterHeight, cF as _default, an as ZIndex, S as focus, ar as addStyle, at as absolutePosition, au as ConnectedOverlayScrollHandler, av as isTouchDevice, cG as FilterOperator, az as script$E, cH as script$F, cI as FocusTrap, k as createVNode, aE as Transition, c3 as withKeys, cJ as getIndex, aW as script$G, cK as isClickable, cL as clearSelection, cM as localeComparator, cN as sort, cO as FilterService, cu as FilterMatchMode, R as findSingle, c9 as findIndexInList, ca as find, cP as exportCSV, W as getOffset, cQ as getHiddenElementOuterWidth, cR as getHiddenElementOuterHeight, cS as reorderArray, cT as getWindowScrollTop, cU as removeClass, cV as addClass, aq as isEmpty, ay as script$H, aB as script$I } from "./index-QvfM__ze.js";
|
||||||
|
import { s as script$C } from "./index-Q1cQr26V.js";
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/index-DpF-ptbJ.js
|
||||||
var ColumnStyle = BaseStyle.extend({
|
var ColumnStyle = BaseStyle.extend({
|
||||||
name: "column"
|
name: "column"
|
||||||
});
|
});
|
||||||
@ -8829,4 +8834,8 @@ export {
|
|||||||
script as a,
|
script as a,
|
||||||
script$r as s
|
script$r as s
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/index-BV_B5E0F.js
|
||||||
//# sourceMappingURL=index-BV_B5E0F.js.map
|
//# sourceMappingURL=index-BV_B5E0F.js.map
|
||||||
|
========
|
||||||
|
//# sourceMappingURL=index-DpF-ptbJ.js.map
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/index-DpF-ptbJ.js
|
||||||
29
comfy/web/assets/index-Q1cQr26V.js
generated
vendored
Normal file
29
comfy/web/assets/index-Q1cQr26V.js
generated
vendored
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
var __defProp = Object.defineProperty;
|
||||||
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
|
import { cA as script$1, m as createBaseVNode, o as openBlock, f as createElementBlock, G as mergeProps } from "./index-QvfM__ze.js";
|
||||||
|
var script = {
|
||||||
|
name: "BarsIcon",
|
||||||
|
"extends": script$1
|
||||||
|
};
|
||||||
|
var _hoisted_1 = /* @__PURE__ */ createBaseVNode("path", {
|
||||||
|
"fill-rule": "evenodd",
|
||||||
|
"clip-rule": "evenodd",
|
||||||
|
d: "M13.3226 3.6129H0.677419C0.497757 3.6129 0.325452 3.54152 0.198411 3.41448C0.0713707 3.28744 0 3.11514 0 2.93548C0 2.75581 0.0713707 2.58351 0.198411 2.45647C0.325452 2.32943 0.497757 2.25806 0.677419 2.25806H13.3226C13.5022 2.25806 13.6745 2.32943 13.8016 2.45647C13.9286 2.58351 14 2.75581 14 2.93548C14 3.11514 13.9286 3.28744 13.8016 3.41448C13.6745 3.54152 13.5022 3.6129 13.3226 3.6129ZM13.3226 7.67741H0.677419C0.497757 7.67741 0.325452 7.60604 0.198411 7.479C0.0713707 7.35196 0 7.17965 0 6.99999C0 6.82033 0.0713707 6.64802 0.198411 6.52098C0.325452 6.39394 0.497757 6.32257 0.677419 6.32257H13.3226C13.5022 6.32257 13.6745 6.39394 13.8016 6.52098C13.9286 6.64802 14 6.82033 14 6.99999C14 7.17965 13.9286 7.35196 13.8016 7.479C13.6745 7.60604 13.5022 7.67741 13.3226 7.67741ZM0.677419 11.7419H13.3226C13.5022 11.7419 13.6745 11.6706 13.8016 11.5435C13.9286 11.4165 14 11.2442 14 11.0645C14 10.8848 13.9286 10.7125 13.8016 10.5855C13.6745 10.4585 13.5022 10.3871 13.3226 10.3871H0.677419C0.497757 10.3871 0.325452 10.4585 0.198411 10.5855C0.0713707 10.7125 0 10.8848 0 11.0645C0 11.2442 0.0713707 11.4165 0.198411 11.5435C0.325452 11.6706 0.497757 11.7419 0.677419 11.7419Z",
|
||||||
|
fill: "currentColor"
|
||||||
|
}, null, -1);
|
||||||
|
var _hoisted_2 = [_hoisted_1];
|
||||||
|
function render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||||
|
return openBlock(), createElementBlock("svg", mergeProps({
|
||||||
|
width: "14",
|
||||||
|
height: "14",
|
||||||
|
viewBox: "0 0 14 14",
|
||||||
|
fill: "none",
|
||||||
|
xmlns: "http://www.w3.org/2000/svg"
|
||||||
|
}, _ctx.pti()), _hoisted_2, 16);
|
||||||
|
}
|
||||||
|
__name(render, "render");
|
||||||
|
script.render = render;
|
||||||
|
export {
|
||||||
|
script as s
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=index-Q1cQr26V.js.map
|
||||||
18748
comfy/web/assets/index-Du3ctekX.js → comfy/web/assets/index-QvfM__ze.js
generated
vendored
18748
comfy/web/assets/index-Du3ctekX.js → comfy/web/assets/index-QvfM__ze.js
generated
vendored
File diff suppressed because one or more lines are too long
107
comfy/web/assets/index-B0PURvIW.js → comfy/web/assets/index-je62U6DH.js
generated
vendored
107
comfy/web/assets/index-B0PURvIW.js → comfy/web/assets/index-je62U6DH.js
generated
vendored
@ -1,6 +1,10 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/index-B0PURvIW.js
|
||||||
import { cf as ComfyDialog, cg as $el, ch as ComfyApp, h as app, a3 as LiteGraph, bk as LGraphCanvas, ci as useExtensionService, cj as processDynamicPrompt, bR as isElectron, bT as electronAPI, bU as useDialogService, ck as t, cl as DraggableList, by as useToastStore, ah as LGraphNode, cm as applyTextReplacements, cn as ComfyWidgets, co as addValueControlWidgets, a6 as useNodeDefStore, cp as serialise, cq as deserialiseAndCreate, bg as api, a as useSettingStore, ag as LGraphGroup, ad as nextTick } from "./index-Du3ctekX.js";
|
import { cf as ComfyDialog, cg as $el, ch as ComfyApp, h as app, a3 as LiteGraph, bk as LGraphCanvas, ci as useExtensionService, cj as processDynamicPrompt, bR as isElectron, bT as electronAPI, bU as useDialogService, ck as t, cl as DraggableList, by as useToastStore, ah as LGraphNode, cm as applyTextReplacements, cn as ComfyWidgets, co as addValueControlWidgets, a6 as useNodeDefStore, cp as serialise, cq as deserialiseAndCreate, bg as api, a as useSettingStore, ag as LGraphGroup, ad as nextTick } from "./index-Du3ctekX.js";
|
||||||
|
========
|
||||||
|
import { ci as ComfyDialog, cj as $el, ck as ComfyApp, h as app, a5 as LiteGraph, bl as LGraphCanvas, cl as useExtensionService, cm as processDynamicPrompt, bT as isElectron, bV as electronAPI, bW as useDialogService, cn as t, co as DraggableList, bA as useToastStore, aj as LGraphNode, cp as applyTextReplacements, cq as ComfyWidgets, cr as addValueControlWidgets, a8 as useNodeDefStore, cs as serialise, ct as deserialiseAndCreate, bh as api, a as useSettingStore, ai as LGraphGroup, af as nextTick, bO as lodashExports, bg as setStorageValue, bb as getStorageValue } from "./index-QvfM__ze.js";
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/index-je62U6DH.js
|
||||||
class ClipspaceDialog extends ComfyDialog {
|
class ClipspaceDialog extends ComfyDialog {
|
||||||
static {
|
static {
|
||||||
__name(this, "ClipspaceDialog");
|
__name(this, "ClipspaceDialog");
|
||||||
@ -49068,6 +49072,31 @@ var ColorComparisonMethod = /* @__PURE__ */ ((ColorComparisonMethod2) => {
|
|||||||
ColorComparisonMethod2["LAB"] = "lab";
|
ColorComparisonMethod2["LAB"] = "lab";
|
||||||
return ColorComparisonMethod2;
|
return ColorComparisonMethod2;
|
||||||
})(ColorComparisonMethod || {});
|
})(ColorComparisonMethod || {});
|
||||||
|
const saveBrushToCache = lodashExports.debounce(function(key, brush) {
|
||||||
|
try {
|
||||||
|
const brushString = JSON.stringify(brush);
|
||||||
|
setStorageValue(key, brushString);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Failed to save brush to cache:", error);
|
||||||
|
}
|
||||||
|
}, 300);
|
||||||
|
function loadBrushFromCache(key) {
|
||||||
|
try {
|
||||||
|
const brushString = getStorageValue(key);
|
||||||
|
if (brushString) {
|
||||||
|
const brush = JSON.parse(brushString);
|
||||||
|
console.log("Loaded brush from cache:", brush);
|
||||||
|
return brush;
|
||||||
|
} else {
|
||||||
|
console.log("No brush found in cache.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Failed to load brush from cache:", error);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
__name(loadBrushFromCache, "loadBrushFromCache");
|
||||||
class MaskEditorDialog extends ComfyDialog {
|
class MaskEditorDialog extends ComfyDialog {
|
||||||
static {
|
static {
|
||||||
__name(this, "MaskEditorDialog");
|
__name(this, "MaskEditorDialog");
|
||||||
@ -49932,13 +49961,18 @@ class BrushTool {
|
|||||||
this.brushAdjustmentSpeed = app.extensionManager.setting.get(
|
this.brushAdjustmentSpeed = app.extensionManager.setting.get(
|
||||||
"Comfy.MaskEditor.BrushAdjustmentSpeed"
|
"Comfy.MaskEditor.BrushAdjustmentSpeed"
|
||||||
);
|
);
|
||||||
this.brushSettings = {
|
const cachedBrushSettings = loadBrushFromCache("maskeditor_brush_settings");
|
||||||
size: 10,
|
if (cachedBrushSettings) {
|
||||||
opacity: 100,
|
this.brushSettings = cachedBrushSettings;
|
||||||
hardness: 1,
|
} else {
|
||||||
type: "arc"
|
this.brushSettings = {
|
||||||
/* Arc */
|
type: "arc",
|
||||||
};
|
size: 10,
|
||||||
|
opacity: 0.7,
|
||||||
|
hardness: 1,
|
||||||
|
smoothingPrecision: 10
|
||||||
|
};
|
||||||
|
}
|
||||||
this.maskBlendMode = "black";
|
this.maskBlendMode = "black";
|
||||||
}
|
}
|
||||||
createListeners() {
|
createListeners() {
|
||||||
@ -50000,6 +50034,10 @@ class BrushTool {
|
|||||||
"brushType",
|
"brushType",
|
||||||
async () => this.brushSettings.type
|
async () => this.brushSettings.type
|
||||||
);
|
);
|
||||||
|
this.messageBroker.createPullTopic(
|
||||||
|
"brushSmoothingPrecision",
|
||||||
|
async () => this.brushSettings.smoothingPrecision
|
||||||
|
);
|
||||||
this.messageBroker.createPullTopic(
|
this.messageBroker.createPullTopic(
|
||||||
"maskBlendMode",
|
"maskBlendMode",
|
||||||
async () => this.maskBlendMode
|
async () => this.maskBlendMode
|
||||||
@ -50108,7 +50146,7 @@ class BrushTool {
|
|||||||
dy = points[i + 1].y - points[i].y;
|
dy = points[i + 1].y - points[i].y;
|
||||||
totalLength += Math.sqrt(dx * dx + dy * dy);
|
totalLength += Math.sqrt(dx * dx + dy * dy);
|
||||||
}
|
}
|
||||||
const distanceBetweenPoints = this.brushSettings.size / this.smoothingPrecision * 6;
|
const distanceBetweenPoints = this.brushSettings.size / this.brushSettings.smoothingPrecision * 6;
|
||||||
const stepNr = Math.ceil(totalLength / distanceBetweenPoints);
|
const stepNr = Math.ceil(totalLength / distanceBetweenPoints);
|
||||||
let interpolatedPoints = points;
|
let interpolatedPoints = points;
|
||||||
if (stepNr > 0) {
|
if (stepNr > 0) {
|
||||||
@ -50139,7 +50177,7 @@ class BrushTool {
|
|||||||
const brush_size = await this.messageBroker.pull("brushSize");
|
const brush_size = await this.messageBroker.pull("brushSize");
|
||||||
const distance = Math.sqrt((p2.x - p1.x) ** 2 + (p2.y - p1.y) ** 2);
|
const distance = Math.sqrt((p2.x - p1.x) ** 2 + (p2.y - p1.y) ** 2);
|
||||||
const steps = Math.ceil(
|
const steps = Math.ceil(
|
||||||
distance / (brush_size / this.smoothingPrecision * 4)
|
distance / (brush_size / this.brushSettings.smoothingPrecision * 4)
|
||||||
);
|
);
|
||||||
const interpolatedOpacity = 1 / (1 + Math.exp(-6 * (this.brushSettings.opacity - 0.5))) - 1 / (1 + Math.exp(3));
|
const interpolatedOpacity = 1 / (1 + Math.exp(-6 * (this.brushSettings.opacity - 0.5))) - 1 / (1 + Math.exp(3));
|
||||||
this.init_shape(compositionOp);
|
this.init_shape(compositionOp);
|
||||||
@ -50391,18 +50429,23 @@ class BrushTool {
|
|||||||
}
|
}
|
||||||
setBrushSize(size) {
|
setBrushSize(size) {
|
||||||
this.brushSettings.size = size;
|
this.brushSettings.size = size;
|
||||||
|
saveBrushToCache("maskeditor_brush_settings", this.brushSettings);
|
||||||
}
|
}
|
||||||
setBrushOpacity(opacity) {
|
setBrushOpacity(opacity) {
|
||||||
this.brushSettings.opacity = opacity;
|
this.brushSettings.opacity = opacity;
|
||||||
|
saveBrushToCache("maskeditor_brush_settings", this.brushSettings);
|
||||||
}
|
}
|
||||||
setBrushHardness(hardness) {
|
setBrushHardness(hardness) {
|
||||||
this.brushSettings.hardness = hardness;
|
this.brushSettings.hardness = hardness;
|
||||||
|
saveBrushToCache("maskeditor_brush_settings", this.brushSettings);
|
||||||
}
|
}
|
||||||
setBrushType(type) {
|
setBrushType(type) {
|
||||||
this.brushSettings.type = type;
|
this.brushSettings.type = type;
|
||||||
|
saveBrushToCache("maskeditor_brush_settings", this.brushSettings);
|
||||||
}
|
}
|
||||||
setBrushSmoothingPrecision(precision) {
|
setBrushSmoothingPrecision(precision) {
|
||||||
this.smoothingPrecision = precision;
|
this.brushSettings.smoothingPrecision = precision;
|
||||||
|
saveBrushToCache("maskeditor_brush_settings", this.brushSettings);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
class UIManager {
|
class UIManager {
|
||||||
@ -50608,7 +50651,6 @@ class UIManager {
|
|||||||
const circle_shape = document.createElement("div");
|
const circle_shape = document.createElement("div");
|
||||||
circle_shape.id = "maskEditor_sidePanelBrushShapeCircle";
|
circle_shape.id = "maskEditor_sidePanelBrushShapeCircle";
|
||||||
circle_shape.classList.add(shapeColor);
|
circle_shape.classList.add(shapeColor);
|
||||||
circle_shape.style.background = "var(--p-button-text-primary-color)";
|
|
||||||
circle_shape.addEventListener("click", () => {
|
circle_shape.addEventListener("click", () => {
|
||||||
this.messageBroker.publish(
|
this.messageBroker.publish(
|
||||||
"setBrushShape",
|
"setBrushShape",
|
||||||
@ -50622,7 +50664,6 @@ class UIManager {
|
|||||||
const square_shape = document.createElement("div");
|
const square_shape = document.createElement("div");
|
||||||
square_shape.id = "maskEditor_sidePanelBrushShapeSquare";
|
square_shape.id = "maskEditor_sidePanelBrushShapeSquare";
|
||||||
square_shape.classList.add(shapeColor);
|
square_shape.classList.add(shapeColor);
|
||||||
square_shape.style.background = "";
|
|
||||||
square_shape.addEventListener("click", () => {
|
square_shape.addEventListener("click", () => {
|
||||||
this.messageBroker.publish(
|
this.messageBroker.publish(
|
||||||
"setBrushShape",
|
"setBrushShape",
|
||||||
@ -50633,6 +50674,13 @@ class UIManager {
|
|||||||
square_shape.style.background = "var(--p-button-text-primary-color)";
|
square_shape.style.background = "var(--p-button-text-primary-color)";
|
||||||
circle_shape.style.background = "";
|
circle_shape.style.background = "";
|
||||||
});
|
});
|
||||||
|
if ((await this.messageBroker.pull("brushSettings")).type === "arc") {
|
||||||
|
circle_shape.style.background = "var(--p-button-text-primary-color)";
|
||||||
|
square_shape.style.background = "";
|
||||||
|
} else {
|
||||||
|
circle_shape.style.background = "";
|
||||||
|
square_shape.style.background = "var(--p-button-text-primary-color)";
|
||||||
|
}
|
||||||
brush_shape_container.appendChild(circle_shape);
|
brush_shape_container.appendChild(circle_shape);
|
||||||
brush_shape_container.appendChild(square_shape);
|
brush_shape_container.appendChild(square_shape);
|
||||||
brush_shape_outer_container.appendChild(brush_shape_title);
|
brush_shape_outer_container.appendChild(brush_shape_title);
|
||||||
@ -50642,7 +50690,7 @@ class UIManager {
|
|||||||
1,
|
1,
|
||||||
100,
|
100,
|
||||||
1,
|
1,
|
||||||
10,
|
(await this.messageBroker.pull("brushSettings")).size,
|
||||||
(event, value) => {
|
(event, value) => {
|
||||||
this.messageBroker.publish("setBrushSize", parseInt(value));
|
this.messageBroker.publish("setBrushSize", parseInt(value));
|
||||||
this.updateBrushPreview();
|
this.updateBrushPreview();
|
||||||
@ -50654,7 +50702,7 @@ class UIManager {
|
|||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
0.01,
|
0.01,
|
||||||
0.7,
|
(await this.messageBroker.pull("brushSettings")).opacity,
|
||||||
(event, value) => {
|
(event, value) => {
|
||||||
this.messageBroker.publish("setBrushOpacity", parseFloat(value));
|
this.messageBroker.publish("setBrushOpacity", parseFloat(value));
|
||||||
this.updateBrushPreview();
|
this.updateBrushPreview();
|
||||||
@ -50666,7 +50714,7 @@ class UIManager {
|
|||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
0.01,
|
0.01,
|
||||||
1,
|
(await this.messageBroker.pull("brushSettings")).hardness,
|
||||||
(event, value) => {
|
(event, value) => {
|
||||||
this.messageBroker.publish("setBrushHardness", parseFloat(value));
|
this.messageBroker.publish("setBrushHardness", parseFloat(value));
|
||||||
this.updateBrushPreview();
|
this.updateBrushPreview();
|
||||||
@ -50678,7 +50726,7 @@ class UIManager {
|
|||||||
1,
|
1,
|
||||||
100,
|
100,
|
||||||
1,
|
1,
|
||||||
10,
|
(await this.messageBroker.pull("brushSettings")).smoothingPrecision,
|
||||||
(event, value) => {
|
(event, value) => {
|
||||||
this.messageBroker.publish(
|
this.messageBroker.publish(
|
||||||
"setBrushSmoothingPrecision",
|
"setBrushSmoothingPrecision",
|
||||||
@ -50686,7 +50734,30 @@ class UIManager {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
const resetBrushSettingsButton = document.createElement("button");
|
||||||
|
resetBrushSettingsButton.id = "resetBrushSettingsButton";
|
||||||
|
resetBrushSettingsButton.innerText = "Reset to Default";
|
||||||
|
resetBrushSettingsButton.addEventListener("click", () => {
|
||||||
|
this.messageBroker.publish(
|
||||||
|
"setBrushShape",
|
||||||
|
"arc"
|
||||||
|
/* Arc */
|
||||||
|
);
|
||||||
|
this.messageBroker.publish("setBrushSize", 10);
|
||||||
|
this.messageBroker.publish("setBrushOpacity", 0.7);
|
||||||
|
this.messageBroker.publish("setBrushHardness", 1);
|
||||||
|
this.messageBroker.publish("setBrushSmoothingPrecision", 10);
|
||||||
|
circle_shape.style.background = "var(--p-button-text-primary-color)";
|
||||||
|
square_shape.style.background = "";
|
||||||
|
thicknesSliderObj.slider.value = "10";
|
||||||
|
opacitySliderObj.slider.value = "0.7";
|
||||||
|
hardnessSliderObj.slider.value = "1";
|
||||||
|
brushSmoothingPrecisionSliderObj.slider.value = "10";
|
||||||
|
this.setBrushBorderRadius();
|
||||||
|
this.updateBrushPreview();
|
||||||
|
});
|
||||||
brush_settings_container.appendChild(brush_settings_title);
|
brush_settings_container.appendChild(brush_settings_title);
|
||||||
|
brush_settings_container.appendChild(resetBrushSettingsButton);
|
||||||
brush_settings_container.appendChild(brush_shape_outer_container);
|
brush_settings_container.appendChild(brush_shape_outer_container);
|
||||||
brush_settings_container.appendChild(thicknesSliderObj.container);
|
brush_settings_container.appendChild(thicknesSliderObj.container);
|
||||||
brush_settings_container.appendChild(opacitySliderObj.container);
|
brush_settings_container.appendChild(opacitySliderObj.container);
|
||||||
@ -53479,4 +53550,8 @@ app.registerExtension({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/index-B0PURvIW.js
|
||||||
//# sourceMappingURL=index-B0PURvIW.js.map
|
//# sourceMappingURL=index-B0PURvIW.js.map
|
||||||
|
========
|
||||||
|
//# sourceMappingURL=index-je62U6DH.js.map
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/index-je62U6DH.js
|
||||||
@ -1,6 +1,10 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/keybindingService-GjQNTASR.js
|
||||||
import { a_ as useKeybindingStore, a2 as useCommandStore, a as useSettingStore, cu as KeyComboImpl, cv as KeybindingImpl } from "./index-Du3ctekX.js";
|
import { a_ as useKeybindingStore, a2 as useCommandStore, a as useSettingStore, cu as KeyComboImpl, cv as KeybindingImpl } from "./index-Du3ctekX.js";
|
||||||
|
========
|
||||||
|
import { a$ as useKeybindingStore, a4 as useCommandStore, a as useSettingStore, cx as KeyComboImpl, cy as KeybindingImpl } from "./index-QvfM__ze.js";
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/keybindingService-Cak1En5n.js
|
||||||
const CORE_KEYBINDINGS = [
|
const CORE_KEYBINDINGS = [
|
||||||
{
|
{
|
||||||
combo: {
|
combo: {
|
||||||
@ -247,4 +251,8 @@ const useKeybindingService = /* @__PURE__ */ __name(() => {
|
|||||||
export {
|
export {
|
||||||
useKeybindingService as u
|
useKeybindingService as u
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/keybindingService-GjQNTASR.js
|
||||||
//# sourceMappingURL=keybindingService-GjQNTASR.js.map
|
//# sourceMappingURL=keybindingService-GjQNTASR.js.map
|
||||||
|
========
|
||||||
|
//# sourceMappingURL=keybindingService-Cak1En5n.js.map
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/keybindingService-Cak1En5n.js
|
||||||
@ -1,6 +1,10 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/serverConfigStore-B0br_pYH.js
|
||||||
import { $ as defineStore, ab as ref, c as computed } from "./index-Du3ctekX.js";
|
import { $ as defineStore, ab as ref, c as computed } from "./index-Du3ctekX.js";
|
||||||
|
========
|
||||||
|
import { a1 as defineStore, ad as ref, c as computed } from "./index-QvfM__ze.js";
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/serverConfigStore-DCme3xlV.js
|
||||||
const useServerConfigStore = defineStore("serverConfig", () => {
|
const useServerConfigStore = defineStore("serverConfig", () => {
|
||||||
const serverConfigById = ref({});
|
const serverConfigById = ref({});
|
||||||
const serverConfigs = computed(() => {
|
const serverConfigs = computed(() => {
|
||||||
@ -87,4 +91,8 @@ const useServerConfigStore = defineStore("serverConfig", () => {
|
|||||||
export {
|
export {
|
||||||
useServerConfigStore as u
|
useServerConfigStore as u
|
||||||
};
|
};
|
||||||
|
<<<<<<<< HEAD:comfy/web/assets/serverConfigStore-B0br_pYH.js
|
||||||
//# sourceMappingURL=serverConfigStore-B0br_pYH.js.map
|
//# sourceMappingURL=serverConfigStore-B0br_pYH.js.map
|
||||||
|
========
|
||||||
|
//# sourceMappingURL=serverConfigStore-DCme3xlV.js.map
|
||||||
|
>>>>>>>> 13fd4d6e45128f3aed95ee66151353e84daf2d13:comfy/web/assets/serverConfigStore-DCme3xlV.js
|
||||||
30
comfy/web/index.html
vendored
30
comfy/web/index.html
vendored
@ -1,15 +1,15 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>ComfyUI</title>
|
<title>ComfyUI</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
|
||||||
<link rel="stylesheet" type="text/css" href="user.css" />
|
<link rel="stylesheet" type="text/css" href="user.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="materialdesignicons.min.css" />
|
<link rel="stylesheet" type="text/css" href="materialdesignicons.min.css" />
|
||||||
<script type="module" crossorigin src="./assets/index-Du3ctekX.js"></script>
|
<script type="module" crossorigin src="./assets/index-QvfM__ze.js"></script>
|
||||||
<link rel="stylesheet" crossorigin href="./assets/index-BwaYE8Fk.css">
|
<link rel="stylesheet" crossorigin href="./assets/index-Cf-n7v0V.css">
|
||||||
</head>
|
</head>
|
||||||
<body class="litegraph grid">
|
<body class="litegraph grid">
|
||||||
<div id="vue-app"></div>
|
<div id="vue-app"></div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@ -39,7 +39,26 @@ class FluxGuidance:
|
|||||||
return (c, )
|
return (c, )
|
||||||
|
|
||||||
|
|
||||||
|
class FluxDisableGuidance:
|
||||||
|
@classmethod
|
||||||
|
def INPUT_TYPES(s):
|
||||||
|
return {"required": {
|
||||||
|
"conditioning": ("CONDITIONING", ),
|
||||||
|
}}
|
||||||
|
|
||||||
|
RETURN_TYPES = ("CONDITIONING",)
|
||||||
|
FUNCTION = "append"
|
||||||
|
|
||||||
|
CATEGORY = "advanced/conditioning/flux"
|
||||||
|
DESCRIPTION = "This node completely disables the guidance embed on Flux and Flux like models"
|
||||||
|
|
||||||
|
def append(self, conditioning):
|
||||||
|
c = node_helpers.conditioning_set_values(conditioning, {"guidance": None})
|
||||||
|
return (c, )
|
||||||
|
|
||||||
|
|
||||||
NODE_CLASS_MAPPINGS = {
|
NODE_CLASS_MAPPINGS = {
|
||||||
"CLIPTextEncodeFlux": CLIPTextEncodeFlux,
|
"CLIPTextEncodeFlux": CLIPTextEncodeFlux,
|
||||||
"FluxGuidance": FluxGuidance,
|
"FluxGuidance": FluxGuidance,
|
||||||
|
"FluxDisableGuidance": FluxDisableGuidance,
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,14 +1,18 @@
|
|||||||
import torch
|
import torch
|
||||||
|
|
||||||
|
|
||||||
import comfy.utils
|
import comfy.utils
|
||||||
from comfy.component_model.tensor_types import Latent
|
from comfy.component_model.tensor_types import Latent
|
||||||
from .nodes_post_processing import gaussian_kernel
|
from .nodes_post_processing import gaussian_kernel
|
||||||
|
|
||||||
|
|
||||||
def reshape_latent_to(target_shape, latent):
|
def reshape_latent_to(target_shape, latent, repeat_batch=True):
|
||||||
if latent.shape[1:] != target_shape[1:]:
|
if latent.shape[1:] != target_shape[1:]:
|
||||||
latent = comfy.utils.common_upscale(latent, target_shape[3], target_shape[2], "bilinear", "center")
|
latent = comfy.utils.common_upscale(latent, target_shape[-1], target_shape[-2], "bilinear", "center")
|
||||||
return comfy.utils.repeat_to_batch_size(latent, target_shape[0])
|
if repeat_batch:
|
||||||
|
return comfy.utils.repeat_to_batch_size(latent, target_shape[0])
|
||||||
|
else:
|
||||||
|
return latent
|
||||||
|
|
||||||
|
|
||||||
class LatentAdd:
|
class LatentAdd:
|
||||||
@ -123,8 +127,7 @@ class LatentBatch:
|
|||||||
s1 = samples1["samples"]
|
s1 = samples1["samples"]
|
||||||
s2 = samples2["samples"]
|
s2 = samples2["samples"]
|
||||||
|
|
||||||
if s1.shape[1:] != s2.shape[1:]:
|
s2 = reshape_latent_to(s1.shape, s2, repeat_batch=False)
|
||||||
s2 = comfy.utils.common_upscale(s2, s1.shape[3], s1.shape[2], "bilinear", "center")
|
|
||||||
s = torch.cat((s1, s2), dim=0)
|
s = torch.cat((s1, s2), dim=0)
|
||||||
samples_out["samples"] = s
|
samples_out["samples"] = s
|
||||||
samples_out["batch_index"] = samples1.get("batch_index", [x for x in range(0, s1.shape[0])]) + samples2.get("batch_index", [x for x in range(0, s2.shape[0])])
|
samples_out["batch_index"] = samples1.get("batch_index", [x for x in range(0, s1.shape[0])]) + samples2.get("batch_index", [x for x in range(0, s2.shape[0])])
|
||||||
|
|||||||
@ -22,9 +22,6 @@ class Load3D():
|
|||||||
"image": ("LOAD_3D", {}),
|
"image": ("LOAD_3D", {}),
|
||||||
"width": ("INT", {"default": 1024, "min": 1, "max": 4096, "step": 1}),
|
"width": ("INT", {"default": 1024, "min": 1, "max": 4096, "step": 1}),
|
||||||
"height": ("INT", {"default": 1024, "min": 1, "max": 4096, "step": 1}),
|
"height": ("INT", {"default": 1024, "min": 1, "max": 4096, "step": 1}),
|
||||||
"show_grid": ([True, False],),
|
|
||||||
"camera_type": (["perspective", "orthographic"],),
|
|
||||||
"view": (["front", "right", "top", "isometric"],),
|
|
||||||
"material": (["original", "normal", "wireframe", "depth"],),
|
"material": (["original", "normal", "wireframe", "depth"],),
|
||||||
"bg_color": ("STRING", {"default": "#000000", "multiline": False}),
|
"bg_color": ("STRING", {"default": "#000000", "multiline": False}),
|
||||||
"light_intensity": ("INT", {"default": 10, "min": 1, "max": 20, "step": 1}),
|
"light_intensity": ("INT", {"default": 10, "min": 1, "max": 20, "step": 1}),
|
||||||
@ -73,9 +70,6 @@ class Load3DAnimation():
|
|||||||
"image": ("LOAD_3D_ANIMATION", {}),
|
"image": ("LOAD_3D_ANIMATION", {}),
|
||||||
"width": ("INT", {"default": 1024, "min": 1, "max": 4096, "step": 1}),
|
"width": ("INT", {"default": 1024, "min": 1, "max": 4096, "step": 1}),
|
||||||
"height": ("INT", {"default": 1024, "min": 1, "max": 4096, "step": 1}),
|
"height": ("INT", {"default": 1024, "min": 1, "max": 4096, "step": 1}),
|
||||||
"show_grid": ([True, False],),
|
|
||||||
"camera_type": (["perspective", "orthographic"],),
|
|
||||||
"view": (["front", "right", "top", "isometric"],),
|
|
||||||
"material": (["original", "normal", "wireframe", "depth"],),
|
"material": (["original", "normal", "wireframe", "depth"],),
|
||||||
"bg_color": ("STRING", {"default": "#000000", "multiline": False}),
|
"bg_color": ("STRING", {"default": "#000000", "multiline": False}),
|
||||||
"light_intensity": ("INT", {"default": 10, "min": 1, "max": 20, "step": 1}),
|
"light_intensity": ("INT", {"default": 10, "min": 1, "max": 20, "step": 1}),
|
||||||
@ -114,9 +108,6 @@ class Preview3D():
|
|||||||
def INPUT_TYPES(s):
|
def INPUT_TYPES(s):
|
||||||
return {"required": {
|
return {"required": {
|
||||||
"model_file": ("STRING", {"default": "", "multiline": False}),
|
"model_file": ("STRING", {"default": "", "multiline": False}),
|
||||||
"show_grid": ([True, False],),
|
|
||||||
"camera_type": (["perspective", "orthographic"],),
|
|
||||||
"view": (["front", "right", "top", "isometric"],),
|
|
||||||
"material": (["original", "normal", "wireframe", "depth"],),
|
"material": (["original", "normal", "wireframe", "depth"],),
|
||||||
"bg_color": ("STRING", {"default": "#000000", "multiline": False}),
|
"bg_color": ("STRING", {"default": "#000000", "multiline": False}),
|
||||||
"light_intensity": ("INT", {"default": 10, "min": 1, "max": 20, "step": 1}),
|
"light_intensity": ("INT", {"default": 10, "min": 1, "max": 20, "step": 1}),
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import json
|
||||||
import pytest
|
import pytest
|
||||||
from aiohttp import web
|
from aiohttp import web
|
||||||
|
|
||||||
@ -23,7 +24,9 @@ def app(custom_node_manager):
|
|||||||
with context_folder_names_and_paths(fn):
|
with context_folder_names_and_paths(fn):
|
||||||
app = web.Application()
|
app = web.Application()
|
||||||
routes = web.RouteTableDef()
|
routes = web.RouteTableDef()
|
||||||
custom_node_manager.add_routes(routes, app, [("ComfyUI-TestExtension1", "ComfyUI-TestExtension1")])
|
custom_node_manager.add_routes(
|
||||||
|
routes, app, [("ComfyUI-TestExtension1", "ComfyUI-TestExtension1")]
|
||||||
|
)
|
||||||
app.add_routes(routes)
|
app.add_routes(routes)
|
||||||
return app
|
return app
|
||||||
|
|
||||||
@ -32,11 +35,12 @@ async def test_get_workflow_templates(aiohttp_client, app, tmp_path):
|
|||||||
client = await aiohttp_client(app)
|
client = await aiohttp_client(app)
|
||||||
# Setup temporary custom nodes file structure with 1 workflow file
|
# Setup temporary custom nodes file structure with 1 workflow file
|
||||||
custom_nodes_dir = tmp_path / "custom_nodes"
|
custom_nodes_dir = tmp_path / "custom_nodes"
|
||||||
example_workflows_dir = custom_nodes_dir / "ComfyUI-TestExtension1" / "example_workflows"
|
example_workflows_dir = (custom_nodes_dir / "ComfyUI-TestExtension1" / "example_workflows")
|
||||||
example_workflows_dir.mkdir(parents=True)
|
example_workflows_dir.mkdir(parents=True)
|
||||||
template_file = example_workflows_dir / "workflow1.json"
|
template_file = example_workflows_dir / "workflow1.json"
|
||||||
template_file.write_text('')
|
template_file.write_text("")
|
||||||
|
|
||||||
|
fn.clear()
|
||||||
fn.add(ModelPaths(folder_names=["custom_nodes"], additional_absolute_directory_paths=[custom_nodes_dir]))
|
fn.add(ModelPaths(folder_names=["custom_nodes"], additional_absolute_directory_paths=[custom_nodes_dir]))
|
||||||
|
|
||||||
with context_folder_names_and_paths(fn):
|
with context_folder_names_and_paths(fn):
|
||||||
@ -47,3 +51,104 @@ async def test_get_workflow_templates(aiohttp_client, app, tmp_path):
|
|||||||
assert "ComfyUI-TestExtension1" in workflows_dict
|
assert "ComfyUI-TestExtension1" in workflows_dict
|
||||||
assert isinstance(workflows_dict["ComfyUI-TestExtension1"], list)
|
assert isinstance(workflows_dict["ComfyUI-TestExtension1"], list)
|
||||||
assert workflows_dict["ComfyUI-TestExtension1"][0] == "workflow1"
|
assert workflows_dict["ComfyUI-TestExtension1"][0] == "workflow1"
|
||||||
|
|
||||||
|
|
||||||
|
async def test_build_translations_empty_when_no_locales(custom_node_manager, tmp_path):
|
||||||
|
custom_nodes_dir = tmp_path / "custom_nodes"
|
||||||
|
custom_nodes_dir.mkdir(parents=True)
|
||||||
|
|
||||||
|
fn.clear()
|
||||||
|
fn.add(ModelPaths(folder_names=["custom_nodes"], additional_absolute_directory_paths=[custom_nodes_dir]))
|
||||||
|
with context_folder_names_and_paths(fn):
|
||||||
|
translations = custom_node_manager.build_translations()
|
||||||
|
assert translations == {}
|
||||||
|
|
||||||
|
|
||||||
|
async def test_build_translations_loads_all_files(custom_node_manager, tmp_path):
|
||||||
|
# Setup test directory structure
|
||||||
|
custom_nodes_dir = tmp_path / "custom_nodes" / "test-extension"
|
||||||
|
locales_dir = custom_nodes_dir / "locales" / "en"
|
||||||
|
locales_dir.mkdir(parents=True)
|
||||||
|
|
||||||
|
# Create test translation files
|
||||||
|
main_content = {"title": "Test Extension"}
|
||||||
|
(locales_dir / "main.json").write_text(json.dumps(main_content))
|
||||||
|
|
||||||
|
node_defs = {"node1": "Node 1"}
|
||||||
|
(locales_dir / "nodeDefs.json").write_text(json.dumps(node_defs))
|
||||||
|
|
||||||
|
commands = {"cmd1": "Command 1"}
|
||||||
|
(locales_dir / "commands.json").write_text(json.dumps(commands))
|
||||||
|
|
||||||
|
settings = {"setting1": "Setting 1"}
|
||||||
|
(locales_dir / "settings.json").write_text(json.dumps(settings))
|
||||||
|
|
||||||
|
fn.clear()
|
||||||
|
fn.add(ModelPaths(folder_names=["custom_nodes"], additional_absolute_directory_paths=[tmp_path / "custom_nodes"]))
|
||||||
|
with context_folder_names_and_paths(fn):
|
||||||
|
translations = custom_node_manager.build_translations()
|
||||||
|
|
||||||
|
assert translations == {
|
||||||
|
"en": {
|
||||||
|
"title": "Test Extension",
|
||||||
|
"nodeDefs": {"node1": "Node 1"},
|
||||||
|
"commands": {"cmd1": "Command 1"},
|
||||||
|
"settings": {"setting1": "Setting 1"},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async def test_build_translations_handles_invalid_json(custom_node_manager, tmp_path):
|
||||||
|
# Setup test directory structure
|
||||||
|
custom_nodes_dir = tmp_path / "custom_nodes" / "test-extension"
|
||||||
|
locales_dir = custom_nodes_dir / "locales" / "en"
|
||||||
|
locales_dir.mkdir(parents=True)
|
||||||
|
|
||||||
|
# Create valid main.json
|
||||||
|
main_content = {"title": "Test Extension"}
|
||||||
|
(locales_dir / "main.json").write_text(json.dumps(main_content))
|
||||||
|
|
||||||
|
# Create invalid JSON file
|
||||||
|
(locales_dir / "nodeDefs.json").write_text("invalid json{")
|
||||||
|
|
||||||
|
fn.clear()
|
||||||
|
fn.add(ModelPaths(folder_names=["custom_nodes"], additional_absolute_directory_paths=[tmp_path / "custom_nodes"]))
|
||||||
|
with context_folder_names_and_paths(fn):
|
||||||
|
translations = custom_node_manager.build_translations()
|
||||||
|
|
||||||
|
assert translations == {
|
||||||
|
"en": {
|
||||||
|
"title": "Test Extension",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async def test_build_translations_merges_multiple_extensions(
|
||||||
|
custom_node_manager, tmp_path
|
||||||
|
):
|
||||||
|
# Setup test directory structure for two extensions
|
||||||
|
custom_nodes_dir = tmp_path / "custom_nodes"
|
||||||
|
ext1_dir = custom_nodes_dir / "extension1" / "locales" / "en"
|
||||||
|
ext2_dir = custom_nodes_dir / "extension2" / "locales" / "en"
|
||||||
|
ext1_dir.mkdir(parents=True)
|
||||||
|
ext2_dir.mkdir(parents=True)
|
||||||
|
|
||||||
|
# Create translation files for extension 1
|
||||||
|
ext1_main = {"title": "Extension 1", "shared": "Original"}
|
||||||
|
(ext1_dir / "main.json").write_text(json.dumps(ext1_main))
|
||||||
|
|
||||||
|
# Create translation files for extension 2
|
||||||
|
ext2_main = {"description": "Extension 2", "shared": "Override"}
|
||||||
|
(ext2_dir / "main.json").write_text(json.dumps(ext2_main))
|
||||||
|
fn.clear()
|
||||||
|
fn.add(ModelPaths(folder_names=["custom_nodes"], additional_absolute_directory_paths=[custom_nodes_dir]))
|
||||||
|
with context_folder_names_and_paths(fn):
|
||||||
|
translations = custom_node_manager.build_translations()
|
||||||
|
|
||||||
|
assert translations == {
|
||||||
|
"en": {
|
||||||
|
"title": "Extension 1",
|
||||||
|
"description": "Extension 2",
|
||||||
|
"shared": "Override", # Second extension should override first
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
71
tests/unit/utils/json_util_test.py
Normal file
71
tests/unit/utils/json_util_test.py
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
from comfy.json_util import merge_json_recursive
|
||||||
|
|
||||||
|
|
||||||
|
def test_merge_simple_dicts():
|
||||||
|
base = {"a": 1, "b": 2}
|
||||||
|
update = {"b": 3, "c": 4}
|
||||||
|
expected = {"a": 1, "b": 3, "c": 4}
|
||||||
|
assert merge_json_recursive(base, update) == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_merge_nested_dicts():
|
||||||
|
base = {"a": {"x": 1, "y": 2}, "b": 3}
|
||||||
|
update = {"a": {"y": 4, "z": 5}}
|
||||||
|
expected = {"a": {"x": 1, "y": 4, "z": 5}, "b": 3}
|
||||||
|
assert merge_json_recursive(base, update) == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_merge_lists():
|
||||||
|
base = {"a": [1, 2], "b": 3}
|
||||||
|
update = {"a": [3, 4]}
|
||||||
|
expected = {"a": [1, 2, 3, 4], "b": 3}
|
||||||
|
assert merge_json_recursive(base, update) == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_merge_nested_lists():
|
||||||
|
base = {"a": {"x": [1, 2]}}
|
||||||
|
update = {"a": {"x": [3, 4]}}
|
||||||
|
expected = {"a": {"x": [1, 2, 3, 4]}}
|
||||||
|
assert merge_json_recursive(base, update) == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_merge_mixed_types():
|
||||||
|
base = {"a": [1, 2], "b": {"x": 1}}
|
||||||
|
update = {"a": [3], "b": {"y": 2}}
|
||||||
|
expected = {"a": [1, 2, 3], "b": {"x": 1, "y": 2}}
|
||||||
|
assert merge_json_recursive(base, update) == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_merge_overwrite_non_dict():
|
||||||
|
base = {"a": 1}
|
||||||
|
update = {"a": {"x": 2}}
|
||||||
|
expected = {"a": {"x": 2}}
|
||||||
|
assert merge_json_recursive(base, update) == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_merge_empty_dicts():
|
||||||
|
base = {}
|
||||||
|
update = {"a": 1}
|
||||||
|
expected = {"a": 1}
|
||||||
|
assert merge_json_recursive(base, update) == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_merge_none_values():
|
||||||
|
base = {"a": None}
|
||||||
|
update = {"a": {"x": 1}}
|
||||||
|
expected = {"a": {"x": 1}}
|
||||||
|
assert merge_json_recursive(base, update) == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_merge_different_types():
|
||||||
|
base = {"a": [1, 2]}
|
||||||
|
update = {"a": "string"}
|
||||||
|
expected = {"a": "string"}
|
||||||
|
assert merge_json_recursive(base, update) == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_merge_complex_nested():
|
||||||
|
base = {"a": [1, 2], "b": {"x": [3, 4], "y": {"p": 1}}}
|
||||||
|
update = {"a": [5], "b": {"x": [6], "y": {"q": 2}}}
|
||||||
|
expected = {"a": [1, 2, 5], "b": {"x": [3, 4, 6], "y": {"p": 1, "q": 2}}}
|
||||||
|
assert merge_json_recursive(base, update) == expected
|
||||||
Loading…
Reference in New Issue
Block a user