Update to 0.3.15 and improve models

- Cosmos now fully tested
 - Preliminary support for essential Cosmos prompt "upsampler"
 - Lumina tests
 - Tweaks to language and image resizing nodes
 - Fix for #31 all the samplers are now present again
This commit is contained in:
doctorpangloss 2025-02-24 21:27:15 -08:00
parent 693038738a
commit 048746f58b
163 changed files with 31749 additions and 55539 deletions

View File

@ -1,9 +1,12 @@
from aiohttp import web
from typing import Optional
from folder_paths import folder_names_and_paths, get_directory_by_type
from api_server.services.terminal_service import TerminalService
import app.logger
import os
from typing import Optional
from aiohttp import web
from ...services.terminal_service import TerminalService
from ....app.logger import get_logs as _logger_get_logs
from ....cmd.folder_paths import folder_names_and_paths, get_directory_by_type # pylint: disable=import-error
class InternalRoutes:
'''
@ -21,13 +24,13 @@ class InternalRoutes:
def setup_routes(self):
@self.routes.get('/logs')
async def get_logs(request):
return web.json_response("".join([(l["t"] + " - " + l["m"]) for l in app.logger.get_logs()]))
return web.json_response("".join([(l["t"] + " - " + l["m"]) for l in _logger_get_logs()]))
@self.routes.get('/logs/raw')
async def get_raw_logs(request):
self.terminal_service.update_size()
return web.json_response({
"entries": list(app.logger.get_logs()),
"entries": list(_logger_get_logs()),
"size": {"cols": self.terminal_service.cols, "rows": self.terminal_service.rows}
})
@ -43,7 +46,6 @@ class InternalRoutes:
return web.Response(status=200)
@self.routes.get('/folder_paths')
async def get_folder_paths(request):
response = {}
@ -64,7 +66,6 @@ class InternalRoutes:
)
return web.json_response([entry.name for entry in sorted_files], status=200)
def get_app(self):
if self._app is None:
self._app = web.Application()

View File

@ -133,7 +133,7 @@ class Configuration(dict):
self.config_files = []
self.cwd: Optional[str] = None
self.base_paths: list[str] = []
self.base_directory = Optional[str] = None
self.base_directory: Optional[str] = None
self.listen: str = "127.0.0.1"
self.port: int = 8188
self.enable_cors_header: Optional[str] = None

View File

@ -53,27 +53,29 @@ def _resolve_path_with_compatibility(path: Path | str) -> PurePosixPath | Path:
return Path(path).resolve()
def init_default_paths(folder_names_and_paths: FolderNames, configuration: Optional[Configuration] = None, create_all_directories=False, replace_existing=True):
def init_default_paths(folder_names_and_paths: FolderNames, configuration: Optional[Configuration] = None, create_all_directories=False, replace_existing=True, base_paths_from_configuration=True):
"""
Populates the folder names and paths object with the default, upstream model directories and custom_nodes directory.
:param folder_names_and_paths: the object to populate with paths
:param configuration: a configuration whose base_paths and other path settings will be used to set the values on this object
:param create_all_directories: create all the possible directories by calling create_directories() after the object is populated
:param replace_existing: when true, removes existing model paths objects for the built-in folder names; and, replaces the base paths
:param base_paths_from_configuration: when true (default), populates folder_names_and_paths using the configuration's base paths, otherwise does not alter base paths as passed from folder_names_and_paths.base_paths
:return:
"""
from ..cmd.main_pre import args
configuration = configuration or args
base_paths = [Path(configuration.cwd) if configuration.cwd is not None else None] + [Path(configuration.base_directory) if configuration.base_directory is not None else None] + configuration.base_paths
base_paths = [Path(path) for path in base_paths if path is not None]
if len(base_paths) == 0:
base_paths = [Path(os.getcwd())]
base_paths = reduce(lambda uniq_list, item: uniq_list.append(item) or uniq_list if item not in uniq_list else uniq_list, base_paths, [])
if replace_existing:
folder_names_and_paths.base_paths.clear()
for base_path in base_paths:
folder_names_and_paths.add_base_path(base_path)
if base_paths_from_configuration:
base_paths = [Path(configuration.cwd) if configuration.cwd is not None else None] + [Path(configuration.base_directory) if configuration.base_directory is not None else None] + configuration.base_paths
base_paths = [Path(path) for path in base_paths if path is not None]
if len(base_paths) == 0:
base_paths = [Path(os.getcwd())]
base_paths = reduce(lambda uniq_list, item: uniq_list.append(item) or uniq_list if item not in uniq_list else uniq_list, base_paths, [])
if replace_existing:
folder_names_and_paths.base_paths.clear()
for base_path in base_paths:
folder_names_and_paths.add_base_path(base_path)
hf_cache_paths = ModelPaths(["huggingface_cache"], supported_extensions=set())
# TODO: explore if there is a better way to do this
if "HF_HUB_CACHE" in os.environ:

View File

@ -18,7 +18,7 @@ supported_pt_extensions: set[str]
# Functions
def init_default_paths(folder_names_and_paths: FolderNames, configuration: Optional[Configuration] = None, create_all_directories: bool = ..., replace_existing: bool = ...): ...
def init_default_paths(folder_names_and_paths: FolderNames, configuration: Optional[Configuration] = None, create_all_directories: bool = ..., replace_existing: bool = ..., base_paths_from_configuration: bool = ...): ...
def map_legacy(folder_name: str) -> str: ...

View File

@ -39,6 +39,10 @@ warnings.filterwarnings("ignore", message="torch.utils._pytree._register_pytree_
warnings.filterwarnings("ignore", message="Torch was not compiled with flash attention.")
warnings.filterwarnings("ignore", message=".*Torch was not compiled with flash attention.*")
warnings.filterwarnings('ignore', category=FutureWarning, message=r'`torch\.cuda\.amp\.custom_fwd.*')
warnings.filterwarnings("ignore", message="Importing from timm.models.registry is deprecated, please import via timm.models", category=FutureWarning)
warnings.filterwarnings("ignore", message="Importing from timm.models.layers is deprecated, please import via timm.layers", category=FutureWarning)
warnings.filterwarnings("ignore", message="Inheritance class _InstrumentedApplication from web.Application is discouraged", category=DeprecationWarning)
warnings.filterwarnings("ignore", message="Please import `gaussian_filter` from the `scipy.ndimage` namespace; the `scipy.ndimage.filters` namespace is deprecated", category=DeprecationWarning)
from ..cli_args import args
@ -55,7 +59,6 @@ if args.oneapi_device_selector is not None:
os.environ['ONEAPI_DEVICE_SELECTOR'] = args.oneapi_device_selector
this_logger.info("Set oneapi device selector to: {}".format(args.oneapi_device_selector))
try:
from . import cuda_malloc
except Exception:
@ -66,6 +69,7 @@ os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "1"
os.environ["TORCHINDUCTOR_FX_GRAPH_CACHE"] = "1"
os.environ["TORCHINDUCTOR_AUTOGRAD_CACHE"] = "1"
def _fix_pytorch_240():
"""Fixes pytorch 2.4.0"""
torch_spec = importlib.util.find_spec("torch")

View File

@ -57,9 +57,9 @@ class TransformersManagedModel(ModelManageable, LanguageModel):
model.to(device=self.offload_device)
@staticmethod
def from_pretrained(ckpt_name: str, subfolder: Optional[str] = None) -> "TransformersManagedModel":
def from_pretrained(ckpt_name: str, subfolder: Optional[str] = None, config_dict: PretrainedConfig | dict | None = None) -> "TransformersManagedModel":
hub_kwargs = {}
if subfolder is not None and subfolder != "":
if subfolder is not None and subfolder.strip() != "":
hub_kwargs["subfolder"] = subfolder
repo_id = ckpt_name
with comfy_tqdm():
@ -77,7 +77,10 @@ class TransformersManagedModel(ModelManageable, LanguageModel):
except ImportError:
pass
config_dict, _ = PretrainedConfig.get_config_dict(ckpt_name, **hub_kwargs)
if config_dict is None:
config_dict, _ = PretrainedConfig.get_config_dict(ckpt_name, **hub_kwargs)
elif isinstance(config_dict, PretrainedConfig):
config_dict: dict = config_dict.to_dict()
model_type = config_dict["model_type"]
# language models prefer to use bfloat16 over float16
kwargs_to_try = ({"torch_dtype": unet_dtype(supported_dtypes=(torch.bfloat16, torch.float16, torch.float32)),

View File

View File

@ -6,11 +6,11 @@ from typing import List, Optional, Tuple
import torch
import torch.nn as nn
import torch.nn.functional as F
import comfy.ldm.common_dit
from comfy.ldm.modules.diffusionmodules.mmdit import TimestepEmbedder, RMSNorm
from comfy.ldm.modules.attention import optimized_attention_masked
from comfy.ldm.flux.layers import EmbedND
from ..common_dit import pad_to_patch_size
from ..modules.diffusionmodules.mmdit import TimestepEmbedder, RMSNorm
from ..modules.attention import optimized_attention_masked
from ..flux.layers import EmbedND
def modulate(x, scale):
@ -596,7 +596,7 @@ class NextDiT(nn.Module):
cap_feats = context
cap_mask = attention_mask
bs, c, h, w = x.shape
x = comfy.ldm.common_dit.pad_to_patch_size(x, (self.patch_size, self.patch_size))
x = pad_to_patch_size(x, (self.patch_size, self.patch_size))
"""
Forward pass of NextDiT.
t: (N,) tensor of diffusion timesteps

View File

@ -278,6 +278,8 @@ KNOWN_CHECKPOINTS: Final[KnownDownloadables] = KnownDownloadables([
HuggingFile("lllyasviel/flux1-dev-bnb-nf4", "flux1-dev-bnb-nf4-v2.safetensors"),
HuggingFile("silveroxides/flux1-nf4-weights", "flux1-schnell-bnb-nf4.safetensors"),
HuggingFile("Lightricks/LTX-Video", "ltx-video-2b-v0.9.safetensors"),
HuggingFile("Lightricks/LTX-Video", "ltx-video-2b-v0.9.1.safetensors"),
HuggingFile("Comfy-Org/Lumina_Image_2.0_Repackaged", "all_in_one/lumina_2.safetensors"),
], folder_name="checkpoints")
KNOWN_UNCLIP_CHECKPOINTS: Final[KnownDownloadables] = KnownDownloadables([
@ -440,6 +442,7 @@ KNOWN_VAES: Final[KnownDownloadables] = KnownDownloadables([
HuggingFile("Comfy-Org/mochi_preview_repackaged", "split_files/vae/mochi_vae.safetensors"),
HuggingFile("Comfy-Org/HunyuanVideo_repackaged", "split_files/vae/hunyuan_video_vae_bf16.safetensors"),
HuggingFile("comfyanonymous/cosmos_1.0_text_encoder_and_VAE_ComfyUI", "vae/cosmos_cv8x8x8_1.0.safetensors"),
HuggingFile("Comfy-Org/Lumina_Image_2.0_Repackaged", "split_files/vae/ae.safetensors", save_with_filename="lumina_image_2.0-ae.safetensors"),
], folder_name="vae")
KNOWN_HUGGINGFACE_MODEL_REPOS: Final[Set[str]] = {
@ -456,6 +459,7 @@ KNOWN_HUGGINGFACE_MODEL_REPOS: Final[Set[str]] = {
'google/paligemma2-28b-pt-896',
'google/paligemma-3b-ft-refcoco-seg-896',
'microsoft/phi-4',
'appmana/Cosmos-1.0-Prompt-Upsampler-12B-Text2World-hf'
}
KNOWN_UNET_MODELS: Final[KnownDownloadables] = KnownDownloadables([
@ -474,6 +478,7 @@ KNOWN_UNET_MODELS: Final[KnownDownloadables] = KnownDownloadables([
HuggingFile("mcmonkey/cosmos-1.0", "Cosmos-1_0-Diffusion-14B-Video2World.safetensors"),
HuggingFile("mcmonkey/cosmos-1.0", "Cosmos-1_0-Diffusion-7B-Text2World.safetensors"),
HuggingFile("mcmonkey/cosmos-1.0", "Cosmos-1_0-Diffusion-7B-Video2World.safetensors"),
HuggingFile("Comfy-Org/Lumina_Image_2.0_Repackaged", "split_files/diffusion_models/lumina_2_model_bf16.safetensors"),
], folder_names=["diffusion_models", "unet"])
KNOWN_CLIP_MODELS: Final[KnownDownloadables] = KnownDownloadables([
@ -490,6 +495,7 @@ KNOWN_CLIP_MODELS: Final[KnownDownloadables] = KnownDownloadables([
HuggingFile("zer0int/CLIP-GmP-ViT-L-14", "ViT-L-14-TEXT-detail-improved-hiT-GmP-TE-only-HF.safetensors"),
HuggingFile("comfyanonymous/cosmos_1.0_text_encoder_and_VAE_ComfyUI", "text_encoders/oldt5_xxl_fp16.safetensors"),
HuggingFile("comfyanonymous/cosmos_1.0_text_encoder_and_VAE_ComfyUI", "text_encoders/oldt5_xxl_fp8_e4m3fn_scaled.safetensors"),
HuggingFile("Comfy-Org/Lumina_Image_2.0_Repackaged", "split_files/text_encoders/gemma_2_2b_fp16.safetensors"),
], folder_names=["clip", "text_encoders"])
KNOWN_STYLE_MODELS: Final[KnownDownloadables] = KnownDownloadables([

View File

@ -1172,8 +1172,8 @@ def is_device_cuda(device):
def is_directml_enabled():
global directml_enabled
if directml_enabled:
global directml_device
if directml_device is not None:
return True
return False

View File

@ -975,7 +975,7 @@ class CLIPLoader:
elif type == "cosmos":
clip_type = sd.CLIPType.COSMOS
elif type == "lumina2":
clip_type = comfy.sd.CLIPType.LUMINA2
clip_type = sd.CLIPType.LUMINA2
else:
logging.warning(f"Unknown clip type argument passed: {type} for model {clip_name}")

View File

@ -1,6 +1,8 @@
KSAMPLER_NAMES = ["euler", "euler_ancestral", "heun", "heunpp2", "dpm_2", "dpm_2_ancestral",
"lms", "dpm_fast", "dpm_adaptive", "dpmpp_2s_ancestral", "dpmpp_sde", "dpmpp_sde_gpu",
"dpmpp_2m", "dpmpp_2m_sde", "dpmpp_2m_sde_gpu", "dpmpp_3m_sde", "dpmpp_3m_sde_gpu", "ddpm", "lcm"]
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",
"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", "res_multistep_ancestral", "res_multistep_ancestral_cfg_pp",
"gradient_estimation"]
SCHEDULER_NAMES = ["normal", "karras", "exponential", "sgm_uniform", "simple", "ddim_uniform", "beta", "linear_quadratic", "kl_optimal"]
SAMPLER_NAMES = KSAMPLER_NAMES + ["ddim", "uni_pc", "uni_pc_bh2"]

View File

@ -720,14 +720,6 @@ class Sampler:
sigma = float(sigmas[0])
return math.isclose(max_sigma, sigma, rel_tol=1e-05) or sigma > max_sigma
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",
"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", "res_multistep_ancestral", "res_multistep_ancestral_cfg_pp",
"gradient_estimation"]
class KSAMPLER(Sampler):
def __init__(self, sampler_function, extra_options={}, inpaint_options={}):
self.sampler_function = sampler_function
@ -1095,7 +1087,7 @@ class KSampler:
self.model = model
self.device = device
if scheduler not in self.SCHEDULERS:
scheduler = self.SCHEDULERS[0]
sheduler = self.SCHEDULERS[0]
if sampler not in self.SAMPLERS:
sampler = self.SAMPLERS[0]
self.scheduler = scheduler

View File

@ -291,6 +291,8 @@ class Llama2_(nn.Module):
class BaseLlama:
model: Llama2_
def get_input_embeddings(self):
return self.model.embed_tokens

View File

@ -1,10 +1,12 @@
from comfy import sd1_clip
from .llama import Gemma2_2B
from .spiece_tokenizer import SPieceTokenizer
import comfy.text_encoders.llama
from .. import sd1_clip
class Gemma2BTokenizer(sd1_clip.SDTokenizer):
def __init__(self, embedding_directory=None, tokenizer_data={}):
def __init__(self, embedding_directory=None, tokenizer_data=None):
if tokenizer_data is None:
tokenizer_data = {}
tokenizer = tokenizer_data.get("spiece_model", None)
super().__init__(tokenizer, pad_with_end=False, embedding_size=2304, embedding_key='gemma2_2b', tokenizer_class=SPieceTokenizer, has_end_token=False, pad_to_max_length=False, max_length=99999999, min_length=1, tokenizer_args={"add_bos": True, "add_eos": False})
@ -13,32 +15,41 @@ class Gemma2BTokenizer(sd1_clip.SDTokenizer):
class LuminaTokenizer(sd1_clip.SD1Tokenizer):
def __init__(self, embedding_directory=None, tokenizer_data={}):
def __init__(self, embedding_directory=None, tokenizer_data=None):
super().__init__(embedding_directory=embedding_directory, tokenizer_data=tokenizer_data, name="gemma2_2b", tokenizer=Gemma2BTokenizer)
if tokenizer_data is None:
tokenizer_data = {}
class Gemma2_2BModel(sd1_clip.SDClipModel):
def __init__(self, device="cpu", layer="hidden", layer_idx=-2, dtype=None, attention_mask=True, model_options={}):
def __init__(self, device="cpu", layer="hidden", layer_idx=-2, dtype=None, attention_mask=True, model_options=None, textmodel_json_config=None):
if model_options is None:
model_options = {}
llama_scaled_fp8 = model_options.get("llama_scaled_fp8", None)
if llama_scaled_fp8 is not None:
model_options = model_options.copy()
model_options["scaled_fp8"] = llama_scaled_fp8
super().__init__(device=device, layer=layer, layer_idx=layer_idx, textmodel_json_config={}, dtype=dtype, special_tokens={"start": 2, "pad": 0}, layer_norm_hidden_state=False, model_class=comfy.text_encoders.llama.Gemma2_2B, enable_attention_masks=attention_mask, return_attention_masks=attention_mask, model_options=model_options)
super().__init__(device=device, layer=layer, layer_idx=layer_idx, textmodel_json_config={}, dtype=dtype, special_tokens={"start": 2, "pad": 0}, layer_norm_hidden_state=False, model_class=Gemma2_2B, enable_attention_masks=attention_mask, return_attention_masks=attention_mask, model_options=model_options)
class LuminaModel(sd1_clip.SD1ClipModel):
def __init__(self, device="cpu", dtype=None, model_options={}):
def __init__(self, device="cpu", dtype=None, model_options=None):
super().__init__(device=device, dtype=dtype, name="gemma2_2b", clip_model=Gemma2_2BModel, model_options=model_options)
if model_options is None:
model_options = {}
def te(dtype_llama=None, llama_scaled_fp8=None):
class LuminaTEModel_(LuminaModel):
def __init__(self, device="cpu", dtype=None, model_options={}):
def __init__(self, device="cpu", dtype=None, model_options=None):
if model_options is None:
model_options = {}
if llama_scaled_fp8 is not None and "llama_scaled_fp8" not in model_options:
model_options = model_options.copy()
model_options["llama_scaled_fp8"] = llama_scaled_fp8
if dtype_llama is not None:
dtype = dtype_llama
super().__init__(device=device, dtype=dtype, model_options=model_options)
return LuminaTEModel_

View File

@ -1 +0,0 @@
{"version":3,"file":"BaseViewTemplate-DDUNNAbV.js","sources":["../../src/views/templates/BaseViewTemplate.vue"],"sourcesContent":["<template>\n <div\n class=\"font-sans w-screen h-screen flex flex-col pointer-events-auto\"\n :class=\"[\n props.dark\n ? 'text-neutral-300 bg-neutral-900 dark-theme'\n : 'text-neutral-900 bg-neutral-300'\n ]\"\n >\n <!-- Virtual top menu for native window (drag handle) -->\n <div\n v-show=\"isNativeWindow()\"\n ref=\"topMenuRef\"\n class=\"app-drag w-full h-[var(--comfy-topbar-height)]\"\n />\n <div\n class=\"flex-grow w-full flex items-center justify-center overflow-auto\"\n >\n <slot></slot>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { nextTick, onMounted, ref } from 'vue'\n\nimport { electronAPI, isElectron, isNativeWindow } from '@/utils/envUtil'\n\nconst props = withDefaults(\n defineProps<{\n dark?: boolean\n }>(),\n {\n dark: false\n }\n)\n\nconst darkTheme = {\n color: 'rgba(0, 0, 0, 0)',\n symbolColor: '#d4d4d4'\n}\n\nconst lightTheme = {\n color: 'rgba(0, 0, 0, 0)',\n symbolColor: '#171717'\n}\n\nconst topMenuRef = ref<HTMLDivElement | null>(null)\nonMounted(async () => {\n if (isElectron()) {\n await nextTick()\n\n electronAPI().changeTheme({\n ...(props.dark ? darkTheme : lightTheme),\n height: topMenuRef.value.getBoundingClientRect().height\n })\n }\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;AA4BA,UAAM,QAAQ;AASd,UAAM,YAAY;AAAA,MAChB,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAEA,UAAM,aAAa;AAAA,MACjB,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAEM,UAAA,aAAa,IAA2B,IAAI;AAClD,cAAU,YAAY;AACpB,UAAI,cAAc;AAChB,cAAM,SAAS;AAEf,oBAAA,EAAc,YAAY;AAAA,UACxB,GAAI,MAAM,OAAO,YAAY;AAAA,UAC7B,QAAQ,WAAW,MAAM,wBAAwB;AAAA,QAAA,CAClD;AAAA,MAAA;AAAA,IACH,CACD;;;;;;;;;;;;;;;;;;;;;"}

View File

@ -1,8 +1,4 @@
<<<<<<<< HEAD:comfy/web/assets/BaseViewTemplate-DDUNNAbV.js
import { d as defineComponent, U as ref, p as onMounted, b4 as isElectron, W as nextTick, b5 as electronAPI, o as openBlock, f as createElementBlock, i as withDirectives, v as vShow, j as unref, b6 as isNativeWindow, m as createBaseVNode, A as renderSlot, ai as normalizeClass } from "./index-BsGgXmrT.js";
========
import { d as defineComponent, T as ref, p as onMounted, b8 as isElectron, V as nextTick, b9 as electronAPI, o as openBlock, f as createElementBlock, i as withDirectives, v as vShow, j as unref, ba as isNativeWindow, m as createBaseVNode, A as renderSlot, aj as normalizeClass } from "./index-Bv0b06LE.js";
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/BaseViewTemplate-BTbuZf5t.js
import { d as defineComponent, T as ref, p as onMounted, bh as isElectron, V as nextTick, bi as electronAPI, o as openBlock, f as createElementBlock, i as withDirectives, v as vShow, j as unref, bj as isNativeWindow, m as createBaseVNode, A as renderSlot, Z as normalizeClass } from "./index-DIgj6hpb.js";
const _hoisted_1 = { class: "flex-grow w-full flex items-center justify-center overflow-auto" };
const _sfc_main = /* @__PURE__ */ defineComponent({
__name: "BaseViewTemplate",
@ -52,8 +48,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
export {
_sfc_main as _
};
<<<<<<<< HEAD:comfy/web/assets/BaseViewTemplate-DDUNNAbV.js
//# sourceMappingURL=BaseViewTemplate-DDUNNAbV.js.map
========
//# sourceMappingURL=BaseViewTemplate-BTbuZf5t.js.map
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/BaseViewTemplate-BTbuZf5t.js
//# sourceMappingURL=BaseViewTemplate-DaGOaycP.js.map

1
comfy/web/assets/BaseViewTemplate-DaGOaycP.js.map generated vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"BaseViewTemplate-DaGOaycP.js","sources":["../../src/views/templates/BaseViewTemplate.vue"],"sourcesContent":["<template>\n <div\n class=\"font-sans w-screen h-screen flex flex-col\"\n :class=\"[\n props.dark\n ? 'text-neutral-300 bg-neutral-900 dark-theme'\n : 'text-neutral-900 bg-neutral-300'\n ]\"\n >\n <!-- Virtual top menu for native window (drag handle) -->\n <div\n v-show=\"isNativeWindow()\"\n ref=\"topMenuRef\"\n class=\"app-drag w-full h-[var(--comfy-topbar-height)]\"\n />\n <div\n class=\"flex-grow w-full flex items-center justify-center overflow-auto\"\n >\n <slot></slot>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { nextTick, onMounted, ref } from 'vue'\n\nimport { electronAPI, isElectron, isNativeWindow } from '@/utils/envUtil'\n\nconst props = withDefaults(\n defineProps<{\n dark?: boolean\n }>(),\n {\n dark: false\n }\n)\n\nconst darkTheme = {\n color: 'rgba(0, 0, 0, 0)',\n symbolColor: '#d4d4d4'\n}\n\nconst lightTheme = {\n color: 'rgba(0, 0, 0, 0)',\n symbolColor: '#171717'\n}\n\nconst topMenuRef = ref<HTMLDivElement | null>(null)\nonMounted(async () => {\n if (isElectron()) {\n await nextTick()\n\n electronAPI().changeTheme({\n ...(props.dark ? darkTheme : lightTheme),\n height: topMenuRef.value.getBoundingClientRect().height\n })\n }\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;AA4BA,UAAM,QAAQ;AASd,UAAM,YAAY;AAAA,MAChB,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAEA,UAAM,aAAa;AAAA,MACjB,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAEM,UAAA,aAAa,IAA2B,IAAI;AAClD,cAAU,YAAY;AACpB,UAAI,cAAc;AAChB,cAAM,SAAS;AAEf,oBAAA,EAAc,YAAY;AAAA,UACxB,GAAI,MAAM,OAAO,YAAY;AAAA,UAC7B,QAAQ,WAAW,MAAM,wBAAwB;AAAA,QAAA,CAClD;AAAA,MAAA;AAAA,IACH,CACD;;;;;;;;;;;;;;;;;;;;;"}

View File

@ -1,5 +1,5 @@
import { d as defineComponent, o as openBlock, y as createBlock, z as withCtx, k as createVNode, j as unref, bE as script } from "./index-Bv0b06LE.js";
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BTbuZf5t.js";
import { d as defineComponent, o as openBlock, y as createBlock, z as withCtx, k as createVNode, j as unref, bN as script } from "./index-DIgj6hpb.js";
import { _ as _sfc_main$1 } from "./BaseViewTemplate-DaGOaycP.js";
const _sfc_main = /* @__PURE__ */ defineComponent({
__name: "DesktopStartView",
setup(__props) {
@ -16,4 +16,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
export {
_sfc_main as default
};
//# sourceMappingURL=DesktopStartView-D9r53Bue.js.map
//# sourceMappingURL=DesktopStartView-Dy1mcl-U.js.map

1
comfy/web/assets/DesktopStartView-Dy1mcl-U.js.map generated vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"DesktopStartView-Dy1mcl-U.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}

View File

@ -1 +0,0 @@
{"version":3,"file":"DesktopStartView-elroCqfp.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}

View File

@ -1,9 +1,10 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
import { d as defineComponent, T as ref, d8 as onUnmounted, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, E as toDisplayString, j as unref, bg as t, k as createVNode, bE as script, l as script$1, b9 as electronAPI, _ as _export_sfc } from "./index-Bv0b06LE.js";
import { s as script$2 } from "./index-A_bXPJCN.js";
import { _ as _sfc_main$1 } from "./TerminalOutputDrawer-CKr7Br7O.js";
import { _ as _sfc_main$2 } from "./BaseViewTemplate-BTbuZf5t.js";
import { d as defineComponent, T as ref, bU as onUnmounted, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, E as toDisplayString, j as unref, bp as t, k as createVNode, bN as script, l as script$1, bi as electronAPI, _ as _export_sfc } from "./index-DIgj6hpb.js";
import { s as script$2 } from "./index-CE2hpomb.js";
import { _ as _sfc_main$1 } from "./TerminalOutputDrawer-B_NZxAv8.js";
import { _ as _sfc_main$2 } from "./BaseViewTemplate-DaGOaycP.js";
import "./index-C_ACzX5-.js";
const _hoisted_1 = { class: "h-screen w-screen grid items-center justify-around overflow-y-auto" };
const _hoisted_2 = { class: "relative m-8 text-center" };
const _hoisted_3 = { class: "download-bg pi-download text-4xl font-bold" };
@ -55,4 +56,4 @@ const DesktopUpdateView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId",
export {
DesktopUpdateView as default
};
//# sourceMappingURL=DesktopUpdateView-C-R0415K.js.map
//# sourceMappingURL=DesktopUpdateView-dW35wQOR.js.map

1
comfy/web/assets/DesktopUpdateView-dW35wQOR.js.map generated vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"DesktopUpdateView-dW35wQOR.js","sources":["../../src/views/DesktopUpdateView.vue"],"sourcesContent":["<template>\n <BaseViewTemplate dark>\n <div\n class=\"h-screen w-screen grid items-center justify-around overflow-y-auto\"\n >\n <div class=\"relative m-8 text-center\">\n <!-- Header -->\n <h1 class=\"download-bg pi-download text-4xl font-bold\">\n {{ t('desktopUpdate.title') }}\n </h1>\n\n <div class=\"m-8\">\n <span>{{ t('desktopUpdate.description') }}</span>\n </div>\n\n <ProgressSpinner class=\"m-8 w-48 h-48\" />\n\n <!-- Console button -->\n <Button\n style=\"transform: translateX(-50%)\"\n class=\"fixed bottom-0 left-1/2 my-8\"\n :label=\"t('maintenance.consoleLogs')\"\n icon=\"pi pi-desktop\"\n icon-pos=\"left\"\n severity=\"secondary\"\n @click=\"toggleConsoleDrawer\"\n />\n\n <TerminalOutputDrawer\n v-model=\"terminalVisible\"\n :header=\"t('g.terminal')\"\n :default-message=\"t('desktopUpdate.terminalDefaultMessage')\"\n />\n </div>\n </div>\n <Toast />\n </BaseViewTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport Button from 'primevue/button'\nimport ProgressSpinner from 'primevue/progressspinner'\nimport Toast from 'primevue/toast'\nimport { onUnmounted, ref } from 'vue'\n\nimport TerminalOutputDrawer from '@/components/maintenance/TerminalOutputDrawer.vue'\nimport { t } from '@/i18n'\nimport { electronAPI } from '@/utils/envUtil'\n\nimport BaseViewTemplate from './templates/BaseViewTemplate.vue'\n\nconst electron = electronAPI()\n\nconst terminalVisible = ref(false)\n\nconst toggleConsoleDrawer = () => {\n terminalVisible.value = !terminalVisible.value\n}\n\nonUnmounted(() => electron.Validation.dispose())\n</script>\n\n<style scoped>\n.download-bg::before {\n @apply m-0 absolute text-muted;\n font-family: 'primeicons';\n top: -2rem;\n right: 2rem;\n speak: none;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n display: inline-block;\n -webkit-font-smoothing: antialiased;\n opacity: 0.02;\n font-size: min(14rem, 90vw);\n z-index: 0;\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAmDA,UAAM,WAAW,YAAY;AAEvB,UAAA,kBAAkB,IAAI,KAAK;AAEjC,UAAM,sBAAsB,6BAAM;AAChB,sBAAA,QAAQ,CAAC,gBAAgB;AAAA,IAC3C,GAF4B;AAI5B,gBAAY,MAAM,SAAS,WAAW,QAAA,CAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}

View File

@ -1,12 +1,7 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
<<<<<<<< HEAD:comfy/web/assets/DownloadGitView-BFcFCk37.js
import { d as defineComponent, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, E as toDisplayString, k as createVNode, j as unref, l as script, be as useRouter } from "./index-BsGgXmrT.js";
import { _ as _sfc_main$1 } from "./BaseViewTemplate-DDUNNAbV.js";
========
import { d as defineComponent, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, E as toDisplayString, k as createVNode, j as unref, l as script, bi as useRouter } from "./index-Bv0b06LE.js";
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BTbuZf5t.js";
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/DownloadGitView-PWqK5ke4.js
import { d as defineComponent, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, E as toDisplayString, k as createVNode, j as unref, l as script, br as useRouter } from "./index-DIgj6hpb.js";
import { _ as _sfc_main$1 } from "./BaseViewTemplate-DaGOaycP.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_2 = { class: "mt-24 text-4xl font-bold text-red-500" };
const _hoisted_3 = { class: "space-y-4" };
@ -60,8 +55,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
export {
_sfc_main as default
};
<<<<<<<< HEAD:comfy/web/assets/DownloadGitView-BFcFCk37.js
//# sourceMappingURL=DownloadGitView-BFcFCk37.js.map
========
//# sourceMappingURL=DownloadGitView-PWqK5ke4.js.map
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/DownloadGitView-PWqK5ke4.js
//# sourceMappingURL=DownloadGitView-La5U0bHp.js.map

View File

@ -1 +1 @@
{"version":3,"file":"DownloadGitView-BFcFCk37.js","sources":["../../src/views/DownloadGitView.vue"],"sourcesContent":["<template>\n <BaseViewTemplate>\n <div\n 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\"\n >\n <!-- Header -->\n <h1 class=\"mt-24 text-4xl font-bold text-red-500\">\n {{ $t('downloadGit.title') }}\n </h1>\n\n <!-- Message -->\n <div class=\"space-y-4\">\n <p class=\"text-xl\">\n {{ $t('downloadGit.message') }}\n </p>\n <p class=\"text-xl\">\n {{ $t('downloadGit.instructions') }}\n </p>\n <p class=\"text-m\">\n {{ $t('downloadGit.warning') }}\n </p>\n </div>\n\n <!-- Actions -->\n <div class=\"flex gap-4 flex-row-reverse\">\n <Button\n :label=\"$t('downloadGit.gitWebsite')\"\n icon=\"pi pi-external-link\"\n icon-pos=\"right\"\n @click=\"openGitDownloads\"\n severity=\"primary\"\n />\n <Button\n :label=\"$t('downloadGit.skip')\"\n icon=\"pi pi-exclamation-triangle\"\n @click=\"skipGit\"\n severity=\"secondary\"\n />\n </div>\n </div>\n </BaseViewTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport Button from 'primevue/button'\nimport { useRouter } from 'vue-router'\n\nimport BaseViewTemplate from '@/views/templates/BaseViewTemplate.vue'\n\nconst openGitDownloads = () => {\n window.open('https://git-scm.com/downloads/', '_blank')\n}\n\nconst skipGit = () => {\n console.warn('pushing')\n const router = useRouter()\n router.push('install')\n}\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAiDA,UAAM,mBAAmB,6BAAM;AACtB,aAAA,KAAK,kCAAkC,QAAQ;AAAA,IACxD,GAFyB;AAIzB,UAAM,UAAU,6BAAM;AACpB,cAAQ,KAAK,SAAS;AACtB,YAAM,SAAS,UAAU;AACzB,aAAO,KAAK,SAAS;AAAA,IACvB,GAJgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
{"version":3,"file":"DownloadGitView-La5U0bHp.js","sources":["../../src/views/DownloadGitView.vue"],"sourcesContent":["<template>\n <BaseViewTemplate>\n <div\n 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\"\n >\n <!-- Header -->\n <h1 class=\"mt-24 text-4xl font-bold text-red-500\">\n {{ $t('downloadGit.title') }}\n </h1>\n\n <!-- Message -->\n <div class=\"space-y-4\">\n <p class=\"text-xl\">\n {{ $t('downloadGit.message') }}\n </p>\n <p class=\"text-xl\">\n {{ $t('downloadGit.instructions') }}\n </p>\n <p class=\"text-m\">\n {{ $t('downloadGit.warning') }}\n </p>\n </div>\n\n <!-- Actions -->\n <div class=\"flex gap-4 flex-row-reverse\">\n <Button\n :label=\"$t('downloadGit.gitWebsite')\"\n icon=\"pi pi-external-link\"\n icon-pos=\"right\"\n @click=\"openGitDownloads\"\n severity=\"primary\"\n />\n <Button\n :label=\"$t('downloadGit.skip')\"\n icon=\"pi pi-exclamation-triangle\"\n @click=\"skipGit\"\n severity=\"secondary\"\n />\n </div>\n </div>\n </BaseViewTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport Button from 'primevue/button'\nimport { useRouter } from 'vue-router'\n\nimport BaseViewTemplate from '@/views/templates/BaseViewTemplate.vue'\n\nconst openGitDownloads = () => {\n window.open('https://git-scm.com/downloads/', '_blank')\n}\n\nconst skipGit = () => {\n console.warn('pushing')\n const router = useRouter()\n router.push('install')\n}\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAiDA,UAAM,mBAAmB,6BAAM;AACtB,aAAA,KAAK,kCAAkC,QAAQ;AAAA,IACxD,GAFyB;AAIzB,UAAM,UAAU,6BAAM;AACpB,cAAQ,KAAK,SAAS;AACtB,YAAM,SAAS,UAAU;AACzB,aAAO,KAAK,SAAS;AAAA,IACvB,GAJgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}

View File

@ -1,14 +1,8 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
<<<<<<<< HEAD:comfy/web/assets/ExtensionPanel-BPpLOa_B.js
import { d as defineComponent, U as ref, df as FilterMatchMode, dk as useExtensionStore, a as useSettingStore, p as onMounted, c as computed, o as openBlock, y as createBlock, z as withCtx, k as createVNode, dg as SearchBox, j as unref, bj as script, m as createBaseVNode, f as createElementBlock, D as renderList, E as toDisplayString, a7 as createTextVNode, F as Fragment, l as script$1, B as createCommentVNode, a4 as script$3, ax as script$4, bn as script$5, dh as _sfc_main$1 } from "./index-BsGgXmrT.js";
import { g as script$2, h as script$6 } from "./index-Br6dw1F6.js";
import "./index-COyiXDAn.js";
========
import { d as defineComponent, T as ref, dx as FilterMatchMode, dC as useExtensionStore, a as useSettingStore, p as onMounted, c as computed, o as openBlock, y as createBlock, z as withCtx, k as createVNode, dy as SearchBox, j as unref, bn as script, m as createBaseVNode, f as createElementBlock, D as renderList, E as toDisplayString, a8 as createTextVNode, F as Fragment, l as script$1, B as createCommentVNode, a5 as script$3, ay as script$4, br as script$5, dz as _sfc_main$1 } from "./index-Bv0b06LE.js";
import { g as script$2, h as script$6 } from "./index-CgMyWf7n.js";
import "./index-Dzu9WL4p.js";
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/ExtensionPanel-Ba57xrmg.js
import { d as defineComponent, T as ref, dI as FilterMatchMode, dN as useExtensionStore, a as useSettingStore, p as onMounted, c as computed, o as openBlock, y as createBlock, z as withCtx, k as createVNode, dJ as SearchBox, j as unref, bw as script, m as createBaseVNode, f as createElementBlock, D as renderList, E as toDisplayString, ak as createTextVNode, F as Fragment, l as script$1, B as createCommentVNode, ah as script$3, aI as script$4, bA as script$5, dK as _sfc_main$1 } from "./index-DIgj6hpb.js";
import { g as script$2, h as script$6 } from "./index-Czd3J-KM.js";
import "./index-D8hjiWMw.js";
const _hoisted_1 = { class: "flex justify-end" };
const _sfc_main = /* @__PURE__ */ defineComponent({
__name: "ExtensionPanel",
@ -185,8 +179,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
export {
_sfc_main as default
};
<<<<<<<< HEAD:comfy/web/assets/ExtensionPanel-BPpLOa_B.js
//# sourceMappingURL=ExtensionPanel-BPpLOa_B.js.map
========
//# sourceMappingURL=ExtensionPanel-Ba57xrmg.js.map
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/ExtensionPanel-Ba57xrmg.js
//# sourceMappingURL=ExtensionPanel-CSL3CfyH.js.map

File diff suppressed because one or more lines are too long

4676
comfy/web/assets/GraphView-CPk-0F87.js generated vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

1
comfy/web/assets/GraphView-J5fY4zmU.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
.comfy-menu-hamburger[data-v-82120b51] {
.comfy-menu-hamburger[data-v-4c2fbe7d] {
position: fixed;
z-index: 9999;
display: flex;
@ -68,27 +68,51 @@
z-index: 99999;
}
.group-title-editor.node-title-editor[data-v-12d3fd12] {
.selection-overlay-container[data-v-79be2f2e] > * {
pointer-events: auto;
}
.show-border[data-v-79be2f2e] {
border-radius: 0.375rem;
border-width: 2px;
border-style: dashed;
border-color: var(--border-color);
}
.color-picker-container[data-v-665d04c1] {
transform: translateX(-50%);
}
[data-v-665d04c1] .p-togglebutton {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
padding-left: 0.25rem;
padding-right: 0.25rem;
}
.selection-toolbox[data-v-5f2fc3fa] {
transform: translateX(-50%) translateY(-120%);
}
.group-title-editor.node-title-editor[data-v-4e10cee2] {
z-index: 9999;
padding: 0.25rem;
}
[data-v-12d3fd12] .editable-text {
[data-v-4e10cee2] .editable-text {
width: 100%;
height: 100%;
}
[data-v-12d3fd12] .editable-text input {
[data-v-4e10cee2] .editable-text input {
width: 100%;
height: 100%;
/* Override the default font size */
font-size: inherit;
}
[data-v-fd0a74bd] .highlight {
[data-v-186bfdc4] .highlight {
background-color: var(--p-primary-color);
color: var(--p-primary-contrast-color);
font-weight: bold;
border-radius: 0.25rem;
padding: 0rem 0.125rem;
padding: 0 0.125rem;
margin: -0.125rem 0.125rem;
}
@ -103,7 +127,7 @@
}
@media all and (max-width: 768px) {
.invisible-dialog-root {
margin-left: 0px;
margin-left: 0;
}
}
.node-search-box-dialog-mask {
@ -222,12 +246,12 @@
background-color: var(--comfy-menu-bg);
}
[data-v-26957f1f] .p-inputtext {
[data-v-2dc25459] .p-inputtext {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.comfyui-queue-button[data-v-91a628af] .p-splitbutton-dropdown {
.comfyui-queue-button[data-v-4579e2ce] .p-splitbutton-dropdown {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
@ -263,25 +287,18 @@
width: 0.75rem;
}
.top-menubar[data-v-56df69d2] .p-menubar-item-link svg {
display: none;
}
[data-v-56df69d2] .p-menubar-submenu.dropdown-direction-up {
[data-v-6a9cf415] .p-menubar-submenu.dropdown-direction-up {
top: auto;
bottom: 100%;
flex-direction: column-reverse;
}
.keybinding-tag[data-v-56df69d2] {
.keybinding-tag[data-v-6a9cf415] {
background: var(--p-content-hover-background);
border-color: var(--p-content-border-color);
border-style: solid;
}
<<<<<<<< HEAD:comfy/web/assets/GraphView-BL5xAPb-.css
.comfyui-menu[data-v-929e7543] {
========
.comfyui-menu[data-v-68d3b5b9] {
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/GraphView-Bo28XDd0.css
.comfyui-menu[data-v-99f99a6b] {
width: 100vw;
height: var(--comfy-topbar-height);
background: var(--comfy-menu-bg);
@ -294,29 +311,16 @@
order: 0;
grid-column: 1/-1;
}
<<<<<<<< HEAD:comfy/web/assets/GraphView-BL5xAPb-.css
.comfyui-menu.dropzone[data-v-929e7543] {
.comfyui-menu.dropzone[data-v-99f99a6b] {
background: var(--p-highlight-background);
}
.comfyui-menu.dropzone-active[data-v-929e7543] {
.comfyui-menu.dropzone-active[data-v-99f99a6b] {
background: var(--p-highlight-background-focus);
}
[data-v-929e7543] .p-menubar-item-label {
[data-v-99f99a6b] .p-menubar-item-label {
line-height: revert;
}
.comfyui-logo[data-v-929e7543] {
========
.comfyui-menu.dropzone[data-v-68d3b5b9] {
background: var(--p-highlight-background);
}
.comfyui-menu.dropzone-active[data-v-68d3b5b9] {
background: var(--p-highlight-background-focus);
}
[data-v-68d3b5b9] .p-menubar-item-label {
line-height: revert;
}
.comfyui-logo[data-v-68d3b5b9] {
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/GraphView-Bo28XDd0.css
.comfyui-logo[data-v-99f99a6b] {
font-size: 1.2em;
-webkit-user-select: none;
-moz-user-select: none;

View File

@ -1,9 +1,9 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
import { d as defineComponent, T as ref, bq as useModel, o as openBlock, f as createElementBlock, m as createBaseVNode, E as toDisplayString, k as createVNode, j as unref, br as script, bl as script$1, as as withModifiers, z as withCtx, ac as script$2, I as useI18n, c as computed, aj as normalizeClass, B as createCommentVNode, a5 as script$3, a8 as createTextVNode, b9 as electronAPI, _ as _export_sfc, p as onMounted, r as resolveDirective, bk as script$4, i as withDirectives, bs as script$5, bt as script$6, l as script$7, y as createBlock, bn as script$8, bu as MigrationItems, w as watchEffect, F as Fragment, D as renderList, bv as script$9, bw as mergeModels, bx as ValidationState, X as normalizeI18nKey, N as watch, by as checkMirrorReachable, bz as _sfc_main$7, bA as isInChina, bB as mergeValidationStates, bg as t, b3 as script$a, bC as CUDA_TORCH_URL, bD as NIGHTLY_CPU_TORCH_URL, bi as useRouter, ah as toRaw } from "./index-Bv0b06LE.js";
import { s as script$b, a as script$c, b as script$d, c as script$e, d as script$f } from "./index-SeIZOWJp.js";
import { d as defineComponent, T as ref, bz as useModel, o as openBlock, f as createElementBlock, m as createBaseVNode, E as toDisplayString, k as createVNode, j as unref, bA as script, bu as script$1, aD as withModifiers, z as withCtx, ao as script$2, I as useI18n, c as computed, Z as normalizeClass, B as createCommentVNode, ah as script$3, ak as createTextVNode, bi as electronAPI, _ as _export_sfc, p as onMounted, r as resolveDirective, bt as script$4, i as withDirectives, bB as script$5, bC as script$6, l as script$7, y as createBlock, bw as script$8, bD as MigrationItems, w as watchEffect, F as Fragment, D as renderList, bE as script$9, bF as mergeModels, bG as ValidationState, X as normalizeI18nKey, N as watch, bH as checkMirrorReachable, bI as _sfc_main$7, bJ as isInChina, bK as mergeValidationStates, bp as t, a8 as script$a, bL as CUDA_TORCH_URL, bM as NIGHTLY_CPU_TORCH_URL, br as useRouter, at as toRaw } from "./index-DIgj6hpb.js";
import { s as script$b, a as script$c, b as script$d, c as script$e, d as script$f } from "./index-BKScv1mm.js";
import { P as PYTHON_MIRROR, a as PYPI_MIRROR } from "./uvMirrors-B-HKMf6X.js";
import { _ as _sfc_main$8 } from "./BaseViewTemplate-BTbuZf5t.js";
import { _ as _sfc_main$8 } from "./BaseViewTemplate-DaGOaycP.js";
const _hoisted_1$5 = { class: "flex flex-col gap-6 w-[600px]" };
const _hoisted_2$5 = { class: "flex flex-col gap-4" };
const _hoisted_3$5 = { class: "text-2xl font-semibold text-neutral-100" };
@ -968,4 +968,4 @@ const InstallView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-
export {
InstallView as default
};
//# sourceMappingURL=InstallView-DW9xwU_F.js.map
//# sourceMappingURL=InstallView-BwawagSr.js.map

1
comfy/web/assets/InstallView-BwawagSr.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,16 +1,9 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
<<<<<<<< HEAD:comfy/web/assets/KeybindingPanel-BRfso_Vt.js
import { d as defineComponent, c as computed, o as openBlock, f as createElementBlock, F as Fragment, D as renderList, k as createVNode, z as withCtx, a7 as createTextVNode, E as toDisplayString, j as unref, a4 as script, B as createCommentVNode, U as ref, df as FilterMatchMode, an as useKeybindingStore, L as useCommandStore, K as useI18n, Y as normalizeI18nKey, w as watchEffect, aR as useToast, r as resolveDirective, y as createBlock, dg as SearchBox, m as createBaseVNode, l as script$2, bg as script$4, ar as withModifiers, bj as script$5, ab as script$6, i as withDirectives, dh as _sfc_main$2, di as KeyComboImpl, dj as KeybindingImpl, _ as _export_sfc } from "./index-BsGgXmrT.js";
import { g as script$1, h as script$3 } from "./index-Br6dw1F6.js";
import { u as useKeybindingService } from "./keybindingService-DoUb2RT6.js";
import "./index-COyiXDAn.js";
========
import { d as defineComponent, c as computed, o as openBlock, f as createElementBlock, F as Fragment, D as renderList, k as createVNode, z as withCtx, a8 as createTextVNode, E as toDisplayString, j as unref, a5 as script, B as createCommentVNode, T as ref, dx as FilterMatchMode, ao as useKeybindingStore, J as useCommandStore, I as useI18n, X as normalizeI18nKey, w as watchEffect, aV as useToast, r as resolveDirective, y as createBlock, dy as SearchBox, m as createBaseVNode, l as script$2, bk as script$4, as as withModifiers, bn as script$5, ac as script$6, i as withDirectives, dz as _sfc_main$2, dA as KeyComboImpl, dB as KeybindingImpl, _ as _export_sfc } from "./index-Bv0b06LE.js";
import { g as script$1, h as script$3 } from "./index-CgMyWf7n.js";
import { u as useKeybindingService } from "./keybindingService-DyjX-nxF.js";
import "./index-Dzu9WL4p.js";
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/KeybindingPanel-oavhFdkz.js
import { d as defineComponent, c as computed, o as openBlock, f as createElementBlock, F as Fragment, D as renderList, k as createVNode, z as withCtx, ak as createTextVNode, E as toDisplayString, j as unref, ah as script, B as createCommentVNode, T as ref, dI as FilterMatchMode, az as useKeybindingStore, J as useCommandStore, I as useI18n, X as normalizeI18nKey, w as watchEffect, b3 as useToast, r as resolveDirective, y as createBlock, dJ as SearchBox, m as createBaseVNode, l as script$2, bt as script$4, aD as withModifiers, bw as script$5, ao as script$6, i as withDirectives, dK as _sfc_main$2, dL as KeyComboImpl, dM as KeybindingImpl, _ as _export_sfc } from "./index-DIgj6hpb.js";
import { g as script$1, h as script$3 } from "./index-Czd3J-KM.js";
import { u as useKeybindingService } from "./keybindingService-CqDMAs0_.js";
import "./index-D8hjiWMw.js";
const _hoisted_1$1 = {
key: 0,
class: "px-2"
@ -296,8 +289,4 @@ const KeybindingPanel = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "d
export {
KeybindingPanel as default
};
<<<<<<<< HEAD:comfy/web/assets/KeybindingPanel-BRfso_Vt.js
//# sourceMappingURL=KeybindingPanel-BRfso_Vt.js.map
========
//# sourceMappingURL=KeybindingPanel-oavhFdkz.js.map
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/KeybindingPanel-oavhFdkz.js
//# sourceMappingURL=KeybindingPanel-BetULlhU.js.map

1
comfy/web/assets/KeybindingPanel-BetULlhU.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

770
comfy/web/assets/MaintenanceView-BFp9KqAr.js generated vendored Normal file
View File

@ -0,0 +1,770 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
import { d as defineComponent, bF as mergeModels, bz as useModel, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, Z as normalizeClass, i as withDirectives, v as vShow, k as createVNode, j as unref, bN as script, l as script$1, c as computed, bO as PrimeIcons, bp as t, ah as script$2, bi as electronAPI, ad as defineStore, T as ref, bP as useTimeout, N as watch, f as createElementBlock, B as createCommentVNode, ak as createTextVNode, E as toDisplayString, aE as mergeProps, bQ as script$3, _ as _export_sfc, r as resolveDirective, bR as script$4, b3 as useToast, bS as useConfirm, F as Fragment, bu as script$5, D as renderList, bT as script$6, p as onMounted, bU as onUnmounted, a2 as script$7, as as isRef } from "./index-DIgj6hpb.js";
import { s as script$8 } from "./index-CE2hpomb.js";
import "./index-mHcHTYAB.js";
import { _ as _sfc_main$7 } from "./TerminalOutputDrawer-B_NZxAv8.js";
import { _ as _sfc_main$8 } from "./BaseViewTemplate-DaGOaycP.js";
import "./index-DdgRmRKP.js";
import "./index-D8hjiWMw.js";
import "./index-Czd3J-KM.js";
import "./index-C_ACzX5-.js";
import "./index-BKScv1mm.js";
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
__name: "RefreshButton",
props: /* @__PURE__ */ mergeModels({
outlined: { type: Boolean, default: true },
disabled: { type: Boolean },
severity: { default: "secondary" }
}, {
"modelValue": { type: Boolean, ...{ required: true } },
"modelModifiers": {}
}),
emits: /* @__PURE__ */ mergeModels(["refresh"], ["update:modelValue"]),
setup(__props) {
const props = __props;
const active = useModel(__props, "modelValue");
return (_ctx, _cache) => {
return openBlock(), createBlock(unref(script$1), {
class: "relative p-button-icon-only",
outlined: props.outlined,
severity: props.severity,
disabled: active.value || props.disabled,
onClick: _cache[0] || (_cache[0] = (event) => _ctx.$emit("refresh", event))
}, {
default: withCtx(() => [
createBaseVNode("span", {
class: normalizeClass(["p-button-icon pi pi-refresh transition-all", { "opacity-0": active.value }]),
"data-pc-section": "icon"
}, null, 2),
_cache[1] || (_cache[1] = createBaseVNode("span", {
class: "p-button-label",
"data-pc-section": "label"
}, " ", -1)),
withDirectives(createVNode(unref(script), { class: "absolute w-1/2 h-1/2" }, null, 512), [
[vShow, active.value]
])
]),
_: 1
}, 8, ["outlined", "severity", "disabled"]);
};
}
});
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
__name: "StatusTag",
props: {
error: { type: Boolean },
refreshing: { type: Boolean }
},
setup(__props) {
const props = __props;
const icon = computed(() => {
if (props.refreshing) return PrimeIcons.QUESTION;
if (props.error) return PrimeIcons.TIMES;
return PrimeIcons.CHECK;
});
const severity = computed(() => {
if (props.refreshing) return "info";
if (props.error) return "danger";
return "success";
});
const value = computed(() => {
if (props.refreshing) return t("maintenance.refreshing");
if (props.error) return t("g.error");
return t("maintenance.OK");
});
return (_ctx, _cache) => {
return openBlock(), createBlock(unref(script$2), {
icon: icon.value,
severity: severity.value,
value: value.value
}, null, 8, ["icon", "severity", "value"]);
};
}
});
const electron = electronAPI();
const openUrl = /* @__PURE__ */ __name((url) => {
window.open(url, "_blank");
return true;
}, "openUrl");
const DESKTOP_MAINTENANCE_TASKS = [
{
id: "basePath",
execute: /* @__PURE__ */ __name(async () => await electron.setBasePath(), "execute"),
name: "Base path",
shortDescription: "Change the application base path.",
errorDescription: "Unable to open the base path. Please select a new one.",
description: "The base path is the default location where ComfyUI stores data. It is the location fo the python environment, and may also contain models, custom nodes, and other extensions.",
isInstallationFix: true,
button: {
icon: PrimeIcons.QUESTION,
text: "Select"
}
},
{
id: "git",
headerImg: "assets/images/Git-Logo-White.svg",
execute: /* @__PURE__ */ __name(() => openUrl("https://git-scm.com/downloads/"), "execute"),
name: "Download git",
shortDescription: "Open the git download page.",
errorDescription: "Git is missing. Please download and install git, then restart ComfyUI Desktop.",
description: "Git is required to download and manage custom nodes and other extensions. This task opens the download page in your default browser, where you can download the latest version of git. Once you have installed git, please restart ComfyUI Desktop.",
button: {
icon: PrimeIcons.EXTERNAL_LINK,
text: "Download"
}
},
{
id: "vcRedist",
execute: /* @__PURE__ */ __name(() => openUrl("https://aka.ms/vs/17/release/vc_redist.x64.exe"), "execute"),
name: "Download VC++ Redist",
shortDescription: "Download the latest VC++ Redistributable runtime.",
description: "The Visual C++ runtime libraries are required to run ComfyUI. You will need to download and install this file.",
button: {
icon: PrimeIcons.EXTERNAL_LINK,
text: "Download"
}
},
{
id: "reinstall",
severity: "danger",
requireConfirm: true,
execute: /* @__PURE__ */ __name(async () => {
await electron.reinstall();
return true;
}, "execute"),
name: "Reinstall ComfyUI",
shortDescription: "Deletes the desktop app config and load the welcome screen.",
description: "Delete the desktop app config, restart the app, and load the installation screen.",
confirmText: "Delete all saved config and reinstall?",
button: {
icon: PrimeIcons.EXCLAMATION_TRIANGLE,
text: "Reinstall"
}
},
{
id: "pythonPackages",
requireConfirm: true,
execute: /* @__PURE__ */ __name(async () => {
try {
await electron.uv.installRequirements();
return true;
} catch (error) {
return false;
}
}, "execute"),
name: "Install python packages",
shortDescription: "Installs the base python packages required to run ComfyUI.",
errorDescription: "Python packages that are required to run ComfyUI are not installed.",
description: "This will install the python packages required to run ComfyUI. This includes torch, torchvision, and other dependencies.",
usesTerminal: true,
isInstallationFix: true,
button: {
icon: PrimeIcons.DOWNLOAD,
text: "Install"
}
},
{
id: "uv",
execute: /* @__PURE__ */ __name(() => openUrl("https://docs.astral.sh/uv/getting-started/installation/"), "execute"),
name: "uv executable",
shortDescription: "uv installs and maintains the python environment.",
description: "This will open the download page for Astral's uv tool. uv is used to install python and manage python packages.",
button: {
icon: "pi pi-asterisk",
text: "Download"
}
},
{
id: "uvCache",
severity: "danger",
requireConfirm: true,
execute: /* @__PURE__ */ __name(async () => await electron.uv.clearCache(), "execute"),
name: "uv cache",
shortDescription: "Remove the Astral uv cache of python packages.",
description: "This will remove the uv cache directory and its contents. All downloaded python packages will need to be downloaded again.",
confirmText: "Delete uv cache of python packages?",
usesTerminal: true,
isInstallationFix: true,
button: {
icon: PrimeIcons.TRASH,
text: "Clear cache"
}
},
{
id: "venvDirectory",
severity: "danger",
requireConfirm: true,
execute: /* @__PURE__ */ __name(async () => await electron.uv.resetVenv(), "execute"),
name: "Reset virtual environment",
shortDescription: "Remove and recreate the .venv directory. This removes all python packages.",
description: "The python environment is where ComfyUI installs python and python packages. It is used to run the ComfyUI server.",
confirmText: "Delete the .venv directory?",
usesTerminal: true,
isInstallationFix: true,
button: {
icon: PrimeIcons.FOLDER,
text: "Recreate"
}
}
];
class MaintenanceTaskRunner {
static {
__name(this, "MaintenanceTaskRunner");
}
constructor(task) {
this.task = task;
}
_state;
/** The current state of the task. Setter also controls {@link resolved} as a side-effect. */
get state() {
return this._state;
}
/** Updates the task state and {@link resolved} status. */
setState(value) {
if (this._state === "error" && value === "OK") this.resolved = true;
if (value === "error") this.resolved &&= false;
this._state = value;
}
/** `true` if the task has been resolved (was `error`, now `OK`). This is a side-effect of the {@link state} setter. */
resolved;
/** Whether the task state is currently being refreshed. */
refreshing;
/** Whether the task is currently running. */
executing;
/** The error message that occurred when the task failed. */
error;
update(update) {
const state = update[this.task.id];
this.refreshing = state === void 0;
if (state) this.setState(state);
}
finaliseUpdate(update) {
this.refreshing = false;
this.setState(update[this.task.id] ?? "skipped");
}
/** Wraps the execution of a maintenance task, updating state and rethrowing errors. */
async execute(task) {
try {
this.executing = true;
const success = await task.execute();
if (!success) return false;
this.error = void 0;
return true;
} catch (error) {
this.error = error?.message;
throw error;
} finally {
this.executing = false;
}
}
}
const useMaintenanceTaskStore = defineStore("maintenanceTask", () => {
const electron2 = electronAPI();
const isRefreshing = ref(false);
const isRunningTerminalCommand = computed(
() => tasks.value.filter((task) => task.usesTerminal).some((task) => getRunner(task)?.executing)
);
const isRunningInstallationFix = computed(
() => tasks.value.filter((task) => task.isInstallationFix).some((task) => getRunner(task)?.executing)
);
const tasks = ref(DESKTOP_MAINTENANCE_TASKS);
const taskRunners = ref(
new Map(
DESKTOP_MAINTENANCE_TASKS.map((x) => [x.id, new MaintenanceTaskRunner(x)])
)
);
const anyErrors = computed(
() => tasks.value.some((task) => getRunner(task).state === "error")
);
const getRunner = /* @__PURE__ */ __name((task) => taskRunners.value.get(task.id), "getRunner");
const processUpdate = /* @__PURE__ */ __name((validationUpdate) => {
const update = validationUpdate;
isRefreshing.value = true;
for (const task of tasks.value) {
getRunner(task).update(update);
}
if (!update.inProgress && isRefreshing.value) {
isRefreshing.value = false;
for (const task of tasks.value) {
getRunner(task).finaliseUpdate(update);
}
}
}, "processUpdate");
const clearResolved = /* @__PURE__ */ __name(() => {
for (const task of tasks.value) {
getRunner(task).resolved &&= false;
}
}, "clearResolved");
const refreshDesktopTasks = /* @__PURE__ */ __name(async () => {
isRefreshing.value = true;
console.log("Refreshing desktop tasks");
await electron2.Validation.validateInstallation(processUpdate);
}, "refreshDesktopTasks");
const execute = /* @__PURE__ */ __name(async (task) => {
return getRunner(task).execute(task);
}, "execute");
return {
tasks,
isRefreshing,
isRunningTerminalCommand,
isRunningInstallationFix,
execute,
getRunner,
processUpdate,
clearResolved,
/** True if any tasks are in an error state. */
anyErrors,
refreshDesktopTasks
};
});
function useMinLoadingDurationRef(value, minDuration = 250) {
const current = ref(value.value);
const { ready, start } = useTimeout(minDuration, {
controls: true,
immediate: false
});
watch(value, (newValue) => {
if (newValue && !current.value) start();
current.value = newValue;
});
return computed(() => current.value || !ready.value);
}
__name(useMinLoadingDurationRef, "useMinLoadingDurationRef");
const _hoisted_1$3 = {
key: 0,
class: "pi pi-exclamation-triangle text-red-500 absolute m-2 top-0 -right-14 opacity-15",
style: { "font-size": "10rem" }
};
const _hoisted_2$3 = ["src"];
const _hoisted_3$3 = { class: "flex gap-4 mt-1" };
const _hoisted_4$3 = {
key: 0,
class: "task-card-ok pi pi-check"
};
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
__name: "TaskCard",
props: {
task: {}
},
emits: ["execute"],
setup(__props) {
const taskStore = useMaintenanceTaskStore();
const runner = computed(() => taskStore.getRunner(props.task));
const props = __props;
const description = computed(
() => runner.value.state === "error" ? props.task.errorDescription ?? props.task.shortDescription : props.task.shortDescription
);
const reactiveLoading = computed(() => runner.value.refreshing);
const reactiveExecuting = computed(() => runner.value.executing);
const isLoading = useMinLoadingDurationRef(reactiveLoading, 250);
const isExecuting = useMinLoadingDurationRef(reactiveExecuting, 250);
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", {
class: normalizeClass(["task-div max-w-48 min-h-52 grid relative", { "opacity-75": unref(isLoading) }])
}, [
createVNode(unref(script$3), mergeProps({
class: ["max-w-48 relative h-full overflow-hidden", { "opacity-65": runner.value.state !== "error" }]
}, (({ onClick, ...rest }) => rest)(_ctx.$attrs)), {
header: withCtx(() => [
runner.value.state === "error" ? (openBlock(), createElementBlock("i", _hoisted_1$3)) : createCommentVNode("", true),
_ctx.task.headerImg ? (openBlock(), createElementBlock("img", {
key: 1,
src: _ctx.task.headerImg,
class: "object-contain w-full h-full opacity-25 pt-4 px-4"
}, null, 8, _hoisted_2$3)) : createCommentVNode("", true)
]),
title: withCtx(() => [
createTextVNode(toDisplayString(_ctx.task.name), 1)
]),
content: withCtx(() => [
createTextVNode(toDisplayString(description.value), 1)
]),
footer: withCtx(() => [
createBaseVNode("div", _hoisted_3$3, [
createVNode(unref(script$1), {
icon: _ctx.task.button?.icon,
label: _ctx.task.button?.text,
class: "w-full",
raised: "",
"icon-pos": "right",
onClick: _cache[0] || (_cache[0] = (event) => _ctx.$emit("execute", event)),
loading: unref(isExecuting)
}, null, 8, ["icon", "label", "loading"])
])
]),
_: 1
}, 16, ["class"]),
!unref(isLoading) && runner.value.state === "OK" ? (openBlock(), createElementBlock("i", _hoisted_4$3)) : createCommentVNode("", true)
], 2);
};
}
});
const TaskCard = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-c3bd7658"]]);
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
__name: "TaskListStatusIcon",
props: {
state: {},
loading: {}
},
setup(__props) {
const tooltip = computed(() => {
if (props.state === "error") {
return t("g.error");
} else if (props.state === "OK") {
return t("maintenance.OK");
} else {
return t("maintenance.Skipped");
}
});
const cssClasses = computed(() => {
let classes;
if (props.state === "error") {
classes = `${PrimeIcons.EXCLAMATION_TRIANGLE} text-red-500`;
} else if (props.state === "OK") {
classes = `${PrimeIcons.CHECK} text-green-500`;
} else {
classes = PrimeIcons.MINUS;
}
return `text-3xl pi ${classes}`;
});
const props = __props;
return (_ctx, _cache) => {
const _directive_tooltip = resolveDirective("tooltip");
return !_ctx.state || _ctx.loading ? (openBlock(), createBlock(unref(script), {
key: 0,
class: "h-8 w-8"
})) : withDirectives((openBlock(), createElementBlock("i", {
key: 1,
class: normalizeClass(cssClasses.value)
}, null, 2)), [
[
_directive_tooltip,
{ value: tooltip.value, showDelay: 250 },
void 0,
{ top: true }
]
]);
};
}
});
const _hoisted_1$2 = { class: "text-center w-16" };
const _hoisted_2$2 = { class: "inline-block" };
const _hoisted_3$2 = { class: "whitespace-pre-line" };
const _hoisted_4$2 = { class: "text-right px-4" };
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
__name: "TaskListItem",
props: {
task: {}
},
emits: ["execute"],
setup(__props) {
const taskStore = useMaintenanceTaskStore();
const runner = computed(() => taskStore.getRunner(props.task));
const props = __props;
const severity = computed(
() => runner.value.state === "error" || runner.value.state === "warning" ? "primary" : "secondary"
);
const reactiveLoading = computed(() => runner.value.refreshing);
const reactiveExecuting = computed(() => runner.value.executing);
const isLoading = useMinLoadingDurationRef(reactiveLoading, 250);
const isExecuting = useMinLoadingDurationRef(reactiveExecuting, 250);
const infoPopover = ref();
const toggle = /* @__PURE__ */ __name((event) => {
infoPopover.value.toggle(event);
}, "toggle");
return (_ctx, _cache) => {
return openBlock(), createElementBlock("tr", {
class: normalizeClass(["border-neutral-700 border-solid border-y", {
"opacity-50": runner.value.resolved,
"opacity-75": unref(isLoading) && runner.value.resolved
}])
}, [
createBaseVNode("td", _hoisted_1$2, [
createVNode(_sfc_main$3, {
state: runner.value.state,
loading: unref(isLoading)
}, null, 8, ["state", "loading"])
]),
createBaseVNode("td", null, [
createBaseVNode("p", _hoisted_2$2, toDisplayString(_ctx.task.name), 1),
createVNode(unref(script$1), {
class: "inline-block mx-2",
type: "button",
icon: unref(PrimeIcons).INFO_CIRCLE,
severity: "secondary",
text: true,
onClick: toggle
}, null, 8, ["icon"]),
createVNode(unref(script$4), {
ref_key: "infoPopover",
ref: infoPopover,
class: "block m-1 max-w-64 min-w-32"
}, {
default: withCtx(() => [
createBaseVNode("span", _hoisted_3$2, toDisplayString(_ctx.task.description), 1)
]),
_: 1
}, 512)
]),
createBaseVNode("td", _hoisted_4$2, [
createVNode(unref(script$1), {
icon: _ctx.task.button?.icon,
label: _ctx.task.button?.text,
severity: severity.value,
"icon-pos": "right",
onClick: _cache[0] || (_cache[0] = (event) => _ctx.$emit("execute", event)),
loading: unref(isExecuting)
}, null, 8, ["icon", "label", "severity", "loading"])
])
], 2);
};
}
});
const _hoisted_1$1 = { class: "my-4" };
const _hoisted_2$1 = { class: "text-neutral-400 w-full text-center" };
const _hoisted_3$1 = {
key: 0,
class: "w-full border-collapse border-hidden"
};
const _hoisted_4$1 = {
key: 1,
class: "flex flex-wrap justify-evenly gap-8 pad-y my-4"
};
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
__name: "TaskListPanel",
props: {
displayAsList: {},
filter: {},
isRefreshing: { type: Boolean }
},
setup(__props) {
const toast = useToast();
const confirm = useConfirm();
const taskStore = useMaintenanceTaskStore();
const props = __props;
const executeTask = /* @__PURE__ */ __name(async (task) => {
let message;
try {
if (await taskStore.execute(task) === true) return;
message = t("maintenance.error.taskFailed");
} catch (error) {
message = error?.message;
}
toast.add({
severity: "error",
summary: t("maintenance.error.toastTitle"),
detail: message ?? t("maintenance.error.defaultDescription"),
life: 1e4
});
}, "executeTask");
const confirmButton = /* @__PURE__ */ __name(async (event, task) => {
if (!task.requireConfirm) {
await executeTask(task);
return;
}
confirm.require({
target: event.currentTarget,
message: task.confirmText ?? t("maintenance.confirmTitle"),
icon: "pi pi-exclamation-circle",
rejectProps: {
label: t("g.cancel"),
severity: "secondary",
outlined: true
},
acceptProps: {
label: task.button?.text ?? t("g.save"),
severity: task.severity ?? "primary"
},
// TODO: Not awaited.
accept: /* @__PURE__ */ __name(async () => {
await executeTask(task);
}, "accept")
});
}, "confirmButton");
return (_ctx, _cache) => {
return openBlock(), createElementBlock("section", _hoisted_1$1, [
_ctx.filter.tasks.length === 0 ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
createVNode(unref(script$5)),
createBaseVNode("p", _hoisted_2$1, toDisplayString(_ctx.$t("maintenance.allOk")), 1)
], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
_ctx.displayAsList === unref(PrimeIcons).LIST ? (openBlock(), createElementBlock("table", _hoisted_3$1, [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.filter.tasks, (task) => {
return openBlock(), createBlock(_sfc_main$2, {
key: task.id,
task,
onExecute: /* @__PURE__ */ __name((event) => confirmButton(event, task), "onExecute")
}, null, 8, ["task", "onExecute"]);
}), 128))
])) : (openBlock(), createElementBlock("div", _hoisted_4$1, [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.filter.tasks, (task) => {
return openBlock(), createBlock(TaskCard, {
key: task.id,
task,
onExecute: /* @__PURE__ */ __name((event) => confirmButton(event, task), "onExecute")
}, null, 8, ["task", "onExecute"]);
}), 128))
]))
], 64)),
createVNode(unref(script$6))
]);
};
}
});
const _hoisted_1 = { class: "min-w-full min-h-full font-sans w-screen h-screen grid justify-around text-neutral-300 bg-neutral-900 dark-theme overflow-y-auto" };
const _hoisted_2 = { class: "max-w-screen-sm w-screen m-8 relative" };
const _hoisted_3 = { class: "backspan pi-wrench text-4xl font-bold" };
const _hoisted_4 = { class: "w-full flex flex-wrap gap-4 items-center" };
const _hoisted_5 = { class: "grow" };
const _hoisted_6 = { class: "flex gap-4 items-center" };
const _hoisted_7 = { class: "max-sm:hidden" };
const _hoisted_8 = { class: "flex justify-between gap-4 flex-row" };
const _sfc_main = /* @__PURE__ */ defineComponent({
__name: "MaintenanceView",
setup(__props) {
const electron2 = electronAPI();
const toast = useToast();
const taskStore = useMaintenanceTaskStore();
const { clearResolved, processUpdate, refreshDesktopTasks } = taskStore;
const terminalVisible = ref(false);
const reactiveIsRefreshing = computed(() => taskStore.isRefreshing);
const isRefreshing = useMinLoadingDurationRef(reactiveIsRefreshing, 250);
const anyErrors = computed(() => taskStore.anyErrors);
const displayAsList = ref(PrimeIcons.TH_LARGE);
const errorFilter = computed(
() => taskStore.tasks.filter((x) => {
const { state, resolved } = taskStore.getRunner(x);
return state === "error" || resolved;
})
);
const filterOptions = ref([
{ icon: PrimeIcons.FILTER_FILL, value: "All", tasks: taskStore.tasks },
{ icon: PrimeIcons.EXCLAMATION_TRIANGLE, value: "Errors", tasks: errorFilter }
]);
const filter = ref(filterOptions.value[0]);
const completeValidation = /* @__PURE__ */ __name(async () => {
const isValid = await electron2.Validation.complete();
if (!isValid) {
toast.add({
severity: "error",
summary: t("g.error"),
detail: t("maintenance.error.cannotContinue"),
life: 5e3
});
}
}, "completeValidation");
const toggleConsoleDrawer = /* @__PURE__ */ __name(() => {
terminalVisible.value = !terminalVisible.value;
}, "toggleConsoleDrawer");
watch(
() => taskStore.isRunningTerminalCommand,
(value) => {
terminalVisible.value = value;
}
);
onMounted(async () => {
electron2.Validation.onUpdate(processUpdate);
const update = await electron2.Validation.getStatus();
if (Object.values(update).some((x) => x === "error")) {
filter.value = filterOptions.value[1];
}
processUpdate(update);
});
onUnmounted(() => electron2.Validation.dispose());
return (_ctx, _cache) => {
return openBlock(), createBlock(_sfc_main$8, { dark: "" }, {
default: withCtx(() => [
createBaseVNode("div", _hoisted_1, [
createBaseVNode("div", _hoisted_2, [
createBaseVNode("h1", _hoisted_3, toDisplayString(unref(t)("maintenance.title")), 1),
createBaseVNode("div", _hoisted_4, [
createBaseVNode("span", _hoisted_5, [
createTextVNode(toDisplayString(unref(t)("maintenance.status")) + ": ", 1),
createVNode(_sfc_main$5, {
refreshing: unref(isRefreshing),
error: anyErrors.value
}, null, 8, ["refreshing", "error"])
]),
createBaseVNode("div", _hoisted_6, [
createVNode(unref(script$7), {
modelValue: displayAsList.value,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => displayAsList.value = $event),
options: [unref(PrimeIcons).LIST, unref(PrimeIcons).TH_LARGE],
"allow-empty": false
}, {
option: withCtx((opts) => [
createBaseVNode("i", {
class: normalizeClass(opts.option)
}, null, 2)
]),
_: 1
}, 8, ["modelValue", "options"]),
createVNode(unref(script$7), {
modelValue: filter.value,
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => filter.value = $event),
options: filterOptions.value,
"allow-empty": false,
optionLabel: "value",
dataKey: "value",
"area-labelledby": "custom",
onChange: unref(clearResolved)
}, {
option: withCtx((opts) => [
createBaseVNode("i", {
class: normalizeClass(opts.option.icon)
}, null, 2),
createBaseVNode("span", _hoisted_7, toDisplayString(opts.option.value), 1)
]),
_: 1
}, 8, ["modelValue", "options", "onChange"]),
createVNode(_sfc_main$6, {
modelValue: unref(isRefreshing),
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => isRef(isRefreshing) ? isRefreshing.value = $event : null),
severity: "secondary",
onRefresh: unref(refreshDesktopTasks)
}, null, 8, ["modelValue", "onRefresh"])
])
]),
createVNode(_sfc_main$1, {
class: "border-neutral-700 border-solid border-x-0 border-y",
filter: filter.value,
displayAsList: displayAsList.value,
isRefreshing: unref(isRefreshing)
}, null, 8, ["filter", "displayAsList", "isRefreshing"]),
createBaseVNode("div", _hoisted_8, [
createVNode(unref(script$1), {
label: unref(t)("maintenance.consoleLogs"),
icon: "pi pi-desktop",
"icon-pos": "left",
severity: "secondary",
onClick: toggleConsoleDrawer
}, null, 8, ["label"]),
createVNode(unref(script$1), {
label: unref(t)("g.continue"),
icon: "pi pi-arrow-right",
"icon-pos": "left",
severity: anyErrors.value ? "secondary" : "primary",
onClick: _cache[3] || (_cache[3] = () => completeValidation()),
loading: unref(isRefreshing)
}, null, 8, ["label", "severity", "loading"])
])
]),
createVNode(_sfc_main$7, {
modelValue: terminalVisible.value,
"onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => terminalVisible.value = $event),
header: unref(t)("g.terminal"),
"default-message": unref(t)("maintenance.terminalDefaultMessage")
}, null, 8, ["modelValue", "header", "default-message"]),
createVNode(unref(script$8))
])
]),
_: 1
});
};
}
});
const MaintenanceView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-1073ace1"]]);
export {
MaintenanceView as default
};
//# sourceMappingURL=MaintenanceView-BFp9KqAr.js.map

1
comfy/web/assets/MaintenanceView-BFp9KqAr.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,87 +0,0 @@
.task-card-ok[data-v-c3bd7658] {
position: absolute;
right: -1rem;
bottom: -1rem;
grid-column: 1 / -1;
grid-row: 1 / -1;
--tw-text-opacity: 1;
color: rgb(150 206 76 / var(--tw-text-opacity));
opacity: 1;
transition-property: opacity;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
font-size: 4rem;
text-shadow: 0.25rem 0 0.5rem black;
z-index: 10;
}
.p-card {
&[data-v-c3bd7658] {
transition-property: opacity;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
--p-card-background: var(--p-button-secondary-background);
opacity: 0.9;
}
&.opacity-65[data-v-c3bd7658] {
opacity: 0.4;
}
&[data-v-c3bd7658]:hover {
opacity: 1;
}
}
[data-v-c3bd7658] .p-card-header {
z-index: 0;
}
[data-v-c3bd7658] .p-card-body {
z-index: 1;
flex-grow: 1;
justify-content: space-between;
}
.task-div {
> i[data-v-c3bd7658] {
pointer-events: none;
}
&:hover > i[data-v-c3bd7658] {
opacity: 0.2;
}
}
[data-v-dd50a7dd] .p-tag {
--p-tag-gap: 0.375rem;
}
.backspan[data-v-dd50a7dd]::before {
position: absolute;
margin: 0px;
color: var(--p-text-muted-color);
font-family: 'primeicons';
top: -2rem;
right: -2rem;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
display: inline-block;
-webkit-font-smoothing: antialiased;
opacity: 0.02;
font-size: min(14rem, 90vw);
z-index: 0;
}

View File

@ -63,10 +63,10 @@
}
}
[data-v-74b78f7d] .p-tag {
[data-v-1073ace1] .p-tag {
--p-tag-gap: 0.375rem;
}
.backspan[data-v-74b78f7d]::before {
.backspan[data-v-1073ace1]::before {
position: absolute;
margin: 0px;
color: var(--p-text-muted-color);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,12 +1,7 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
<<<<<<<< HEAD:comfy/web/assets/ManualConfigurationView-DlH3kpjW.js
import { d as defineComponent, K as useI18n, U as ref, p as onMounted, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, E as toDisplayString, k as createVNode, j as unref, a4 as script, a$ as script$1, l as script$2, b5 as electronAPI, _ as _export_sfc } from "./index-BsGgXmrT.js";
import { _ as _sfc_main$1 } from "./BaseViewTemplate-DDUNNAbV.js";
========
import { d as defineComponent, I as useI18n, T as ref, p as onMounted, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, E as toDisplayString, k as createVNode, j as unref, a5 as script, b3 as script$1, l as script$2, b9 as electronAPI, _ as _export_sfc } from "./index-Bv0b06LE.js";
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BTbuZf5t.js";
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/ManualConfigurationView-DTLyJ3VG.js
import { d as defineComponent, I as useI18n, T as ref, p as onMounted, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, E as toDisplayString, k as createVNode, j as unref, ah as script, a8 as script$1, l as script$2, bi as electronAPI, _ as _export_sfc } from "./index-DIgj6hpb.js";
import { _ as _sfc_main$1 } from "./BaseViewTemplate-DaGOaycP.js";
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_3 = { class: "m-1 text-neutral-300" };
@ -76,8 +71,4 @@ const ManualConfigurationView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scop
export {
ManualConfigurationView as default
};
<<<<<<<< HEAD:comfy/web/assets/ManualConfigurationView-DlH3kpjW.js
//# sourceMappingURL=ManualConfigurationView-DlH3kpjW.js.map
========
//# sourceMappingURL=ManualConfigurationView-DTLyJ3VG.js.map
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/ManualConfigurationView-DTLyJ3VG.js
//# sourceMappingURL=ManualConfigurationView-hsnBcOeR.js.map

View File

@ -1 +1 @@
{"version":3,"file":"ManualConfigurationView-DlH3kpjW.js","sources":["../../src/views/ManualConfigurationView.vue"],"sourcesContent":["<template>\n <BaseViewTemplate dark>\n <!-- Installation Path Section -->\n <div\n class=\"comfy-installer grow flex flex-col gap-4 text-neutral-300 max-w-110\"\n >\n <h2 class=\"text-2xl font-semibold text-neutral-100\">\n {{ $t('install.manualConfiguration.title') }}\n </h2>\n\n <p class=\"m-1 text-neutral-300\">\n <Tag\n icon=\"pi pi-exclamation-triangle\"\n severity=\"warn\"\n :value=\"t('icon.exclamation-triangle')\"\n ></Tag>\n <strong class=\"ml-2\">{{\n $t('install.gpuSelection.customComfyNeedsPython')\n }}</strong>\n </p>\n\n <div>\n <p class=\"m-1 mb-4\">\n {{ $t('install.manualConfiguration.requirements') }}:\n </p>\n <ul class=\"m-0\">\n <li>{{ $t('install.gpuSelection.customManualVenv') }}</li>\n <li>{{ $t('install.gpuSelection.customInstallRequirements') }}</li>\n </ul>\n </div>\n\n <p class=\"m-1\">{{ $t('install.manualConfiguration.createVenv') }}:</p>\n\n <Panel :header=\"t('install.manualConfiguration.virtualEnvironmentPath')\">\n <span class=\"font-mono\">{{ `${basePath}${sep}.venv${sep}` }}</span>\n </Panel>\n\n <p class=\"m-1\">\n {{ $t('install.manualConfiguration.restartWhenFinished') }}\n </p>\n\n <Button\n class=\"place-self-end\"\n :label=\"t('menuLabels.Restart')\"\n severity=\"warn\"\n icon=\"pi pi-refresh\"\n @click=\"restartApp('Manual configuration complete')\"\n />\n </div>\n </BaseViewTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport Button from 'primevue/button'\nimport Panel from 'primevue/panel'\nimport Tag from 'primevue/tag'\nimport { onMounted, ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport { electronAPI } from '@/utils/envUtil'\nimport BaseViewTemplate from '@/views/templates/BaseViewTemplate.vue'\n\nconst { t } = useI18n()\n\nconst electron = electronAPI()\n\nconst basePath = ref<string>(null)\nconst sep = ref<'\\\\' | '/'>('/')\n\nconst restartApp = (message?: string) => electron.restartApp(message)\n\nonMounted(async () => {\n basePath.value = await electron.getBasePath()\n if (basePath.value.indexOf('/') === -1) sep.value = '\\\\'\n})\n</script>\n\n<style scoped>\n.p-tag {\n --p-tag-gap: 0.5rem;\n}\n\n.comfy-installer {\n margin-top: max(1rem, max(0px, calc((100vh - 42rem) * 0.5)));\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AA8DM,UAAA,EAAE,EAAE,IAAI,QAAQ;AAEtB,UAAM,WAAW,YAAY;AAEvB,UAAA,WAAW,IAAY,IAAI;AAC3B,UAAA,MAAM,IAAgB,GAAG;AAE/B,UAAM,aAAa,wBAAC,YAAqB,SAAS,WAAW,OAAO,GAAjD;AAEnB,cAAU,YAAY;AACX,eAAA,QAAQ,MAAM,SAAS,YAAY;AAC5C,UAAI,SAAS,MAAM,QAAQ,GAAG,MAAM,QAAQ,QAAQ;AAAA,IAAA,CACrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
{"version":3,"file":"ManualConfigurationView-hsnBcOeR.js","sources":["../../src/views/ManualConfigurationView.vue"],"sourcesContent":["<template>\n <BaseViewTemplate dark>\n <!-- Installation Path Section -->\n <div\n class=\"comfy-installer grow flex flex-col gap-4 text-neutral-300 max-w-110\"\n >\n <h2 class=\"text-2xl font-semibold text-neutral-100\">\n {{ $t('install.manualConfiguration.title') }}\n </h2>\n\n <p class=\"m-1 text-neutral-300\">\n <Tag\n icon=\"pi pi-exclamation-triangle\"\n severity=\"warn\"\n :value=\"t('icon.exclamation-triangle')\"\n ></Tag>\n <strong class=\"ml-2\">{{\n $t('install.gpuSelection.customComfyNeedsPython')\n }}</strong>\n </p>\n\n <div>\n <p class=\"m-1 mb-4\">\n {{ $t('install.manualConfiguration.requirements') }}:\n </p>\n <ul class=\"m-0\">\n <li>{{ $t('install.gpuSelection.customManualVenv') }}</li>\n <li>{{ $t('install.gpuSelection.customInstallRequirements') }}</li>\n </ul>\n </div>\n\n <p class=\"m-1\">{{ $t('install.manualConfiguration.createVenv') }}:</p>\n\n <Panel :header=\"t('install.manualConfiguration.virtualEnvironmentPath')\">\n <span class=\"font-mono\">{{ `${basePath}${sep}.venv${sep}` }}</span>\n </Panel>\n\n <p class=\"m-1\">\n {{ $t('install.manualConfiguration.restartWhenFinished') }}\n </p>\n\n <Button\n class=\"place-self-end\"\n :label=\"t('menuLabels.Restart')\"\n severity=\"warn\"\n icon=\"pi pi-refresh\"\n @click=\"restartApp('Manual configuration complete')\"\n />\n </div>\n </BaseViewTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport Button from 'primevue/button'\nimport Panel from 'primevue/panel'\nimport Tag from 'primevue/tag'\nimport { onMounted, ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport { electronAPI } from '@/utils/envUtil'\nimport BaseViewTemplate from '@/views/templates/BaseViewTemplate.vue'\n\nconst { t } = useI18n()\n\nconst electron = electronAPI()\n\nconst basePath = ref<string>(null)\nconst sep = ref<'\\\\' | '/'>('/')\n\nconst restartApp = (message?: string) => electron.restartApp(message)\n\nonMounted(async () => {\n basePath.value = await electron.getBasePath()\n if (basePath.value.indexOf('/') === -1) sep.value = '\\\\'\n})\n</script>\n\n<style scoped>\n.p-tag {\n --p-tag-gap: 0.5rem;\n}\n\n.comfy-installer {\n margin-top: max(1rem, max(0px, calc((100vh - 42rem) * 0.5)));\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AA8DM,UAAA,EAAE,EAAE,IAAI,QAAQ;AAEtB,UAAM,WAAW,YAAY;AAEvB,UAAA,WAAW,IAAY,IAAI;AAC3B,UAAA,MAAM,IAAgB,GAAG;AAE/B,UAAM,aAAa,wBAAC,YAAqB,SAAS,WAAW,OAAO,GAAjD;AAEnB,cAAU,YAAY;AACX,eAAA,QAAQ,MAAM,SAAS,YAAY;AAC5C,UAAI,SAAS,MAAM,QAAQ,GAAG,MAAM,QAAQ,QAAQ;AAAA,IAAA,CACrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}

View File

@ -1,12 +1,7 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
<<<<<<<< HEAD:comfy/web/assets/MetricsConsentView-BgqqjOyd.js
import { _ as _sfc_main$1 } from "./BaseViewTemplate-DDUNNAbV.js";
import { d as defineComponent, aR as useToast, K as useI18n, U as ref, be as useRouter, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, E as toDisplayString, a7 as createTextVNode, k as createVNode, j as unref, bn as script, l as script$1, b5 as electronAPI } from "./index-BsGgXmrT.js";
========
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BTbuZf5t.js";
import { d as defineComponent, aV as useToast, I as useI18n, T as ref, bi as useRouter, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, E as toDisplayString, a8 as createTextVNode, k as createVNode, j as unref, br as script, l as script$1, b9 as electronAPI } from "./index-Bv0b06LE.js";
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/MetricsConsentView-C80fk2cl.js
import { _ as _sfc_main$1 } from "./BaseViewTemplate-DaGOaycP.js";
import { d as defineComponent, b3 as useToast, I as useI18n, T as ref, br as useRouter, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, E as toDisplayString, ak as createTextVNode, k as createVNode, j as unref, bA as script, l as script$1, bi as electronAPI } from "./index-DIgj6hpb.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" };
@ -88,8 +83,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
export {
_sfc_main as default
};
<<<<<<<< HEAD:comfy/web/assets/MetricsConsentView-BgqqjOyd.js
//# sourceMappingURL=MetricsConsentView-BgqqjOyd.js.map
========
//# sourceMappingURL=MetricsConsentView-C80fk2cl.js.map
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/MetricsConsentView-C80fk2cl.js
//# sourceMappingURL=MetricsConsentView-CVHnHa_u.js.map

View File

@ -1 +1 @@
{"version":3,"file":"MetricsConsentView-BgqqjOyd.js","sources":["../../src/views/MetricsConsentView.vue"],"sourcesContent":["<template>\n <BaseViewTemplate dark>\n <div class=\"h-full p-8 2xl:p-16 flex flex-col items-center justify-center\">\n <div\n class=\"bg-neutral-800 rounded-lg shadow-lg p-6 w-full max-w-[600px] flex flex-col gap-6\"\n >\n <h2 class=\"text-3xl font-semibold text-neutral-100\">\n {{ $t('install.helpImprove') }}\n </h2>\n <p class=\"text-neutral-400\">\n {{ $t('install.updateConsent') }}\n </p>\n <p class=\"text-neutral-400\">\n {{ $t('install.moreInfo') }}\n <a\n href=\"https://comfy.org/privacy\"\n target=\"_blank\"\n class=\"text-blue-400 hover:text-blue-300 underline\"\n >\n {{ $t('install.privacyPolicy') }} </a\n >.\n </p>\n <div class=\"flex items-center gap-4\">\n <ToggleSwitch\n v-model=\"allowMetrics\"\n aria-describedby=\"metricsDescription\"\n />\n <span id=\"metricsDescription\" class=\"text-neutral-100\">\n {{\n allowMetrics\n ? $t('install.metricsEnabled')\n : $t('install.metricsDisabled')\n }}\n </span>\n </div>\n <div class=\"flex pt-6 justify-end\">\n <Button\n :label=\"$t('g.ok')\"\n icon=\"pi pi-check\"\n :loading=\"isUpdating\"\n iconPos=\"right\"\n @click=\"updateConsent\"\n />\n </div>\n </div>\n </div>\n </BaseViewTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport Button from 'primevue/button'\nimport ToggleSwitch from 'primevue/toggleswitch'\nimport { useToast } from 'primevue/usetoast'\nimport { ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useRouter } from 'vue-router'\n\nimport { electronAPI } from '@/utils/envUtil'\n\nconst toast = useToast()\nconst { t } = useI18n()\n\nconst allowMetrics = ref(true)\nconst router = useRouter()\nconst isUpdating = ref(false)\n\nconst updateConsent = async () => {\n isUpdating.value = true\n try {\n await electronAPI().setMetricsConsent(allowMetrics.value)\n } catch (error) {\n toast.add({\n severity: 'error',\n summary: t('install.errorUpdatingConsent'),\n detail: t('install.errorUpdatingConsentDetail'),\n life: 3000\n })\n } finally {\n isUpdating.value = false\n }\n router.push('/')\n}\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA2DA,UAAM,QAAQ,SAAS;AACjB,UAAA,EAAE,EAAE,IAAI,QAAQ;AAEhB,UAAA,eAAe,IAAI,IAAI;AAC7B,UAAM,SAAS,UAAU;AACnB,UAAA,aAAa,IAAI,KAAK;AAE5B,UAAM,gBAAgB,mCAAY;AAChC,iBAAW,QAAQ;AACf,UAAA;AACF,cAAM,YAAY,EAAE,kBAAkB,aAAa,KAAK;AAAA,eACjD,OAAO;AACd,cAAM,IAAI;AAAA,UACR,UAAU;AAAA,UACV,SAAS,EAAE,8BAA8B;AAAA,UACzC,QAAQ,EAAE,oCAAoC;AAAA,UAC9C,MAAM;AAAA,QAAA,CACP;AAAA,MAAA,UACD;AACA,mBAAW,QAAQ;AAAA,MAAA;AAErB,aAAO,KAAK,GAAG;AAAA,IACjB,GAfsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
{"version":3,"file":"MetricsConsentView-CVHnHa_u.js","sources":["../../src/views/MetricsConsentView.vue"],"sourcesContent":["<template>\n <BaseViewTemplate dark>\n <div class=\"h-full p-8 2xl:p-16 flex flex-col items-center justify-center\">\n <div\n class=\"bg-neutral-800 rounded-lg shadow-lg p-6 w-full max-w-[600px] flex flex-col gap-6\"\n >\n <h2 class=\"text-3xl font-semibold text-neutral-100\">\n {{ $t('install.helpImprove') }}\n </h2>\n <p class=\"text-neutral-400\">\n {{ $t('install.updateConsent') }}\n </p>\n <p class=\"text-neutral-400\">\n {{ $t('install.moreInfo') }}\n <a\n href=\"https://comfy.org/privacy\"\n target=\"_blank\"\n class=\"text-blue-400 hover:text-blue-300 underline\"\n >\n {{ $t('install.privacyPolicy') }} </a\n >.\n </p>\n <div class=\"flex items-center gap-4\">\n <ToggleSwitch\n v-model=\"allowMetrics\"\n aria-describedby=\"metricsDescription\"\n />\n <span id=\"metricsDescription\" class=\"text-neutral-100\">\n {{\n allowMetrics\n ? $t('install.metricsEnabled')\n : $t('install.metricsDisabled')\n }}\n </span>\n </div>\n <div class=\"flex pt-6 justify-end\">\n <Button\n :label=\"$t('g.ok')\"\n icon=\"pi pi-check\"\n :loading=\"isUpdating\"\n iconPos=\"right\"\n @click=\"updateConsent\"\n />\n </div>\n </div>\n </div>\n </BaseViewTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport Button from 'primevue/button'\nimport ToggleSwitch from 'primevue/toggleswitch'\nimport { useToast } from 'primevue/usetoast'\nimport { ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\nimport { useRouter } from 'vue-router'\n\nimport { electronAPI } from '@/utils/envUtil'\n\nconst toast = useToast()\nconst { t } = useI18n()\n\nconst allowMetrics = ref(true)\nconst router = useRouter()\nconst isUpdating = ref(false)\n\nconst updateConsent = async () => {\n isUpdating.value = true\n try {\n await electronAPI().setMetricsConsent(allowMetrics.value)\n } catch (error) {\n toast.add({\n severity: 'error',\n summary: t('install.errorUpdatingConsent'),\n detail: t('install.errorUpdatingConsentDetail'),\n life: 3000\n })\n } finally {\n isUpdating.value = false\n }\n router.push('/')\n}\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA2DA,UAAM,QAAQ,SAAS;AACjB,UAAA,EAAE,EAAE,IAAI,QAAQ;AAEhB,UAAA,eAAe,IAAI,IAAI;AAC7B,UAAM,SAAS,UAAU;AACnB,UAAA,aAAa,IAAI,KAAK;AAE5B,UAAM,gBAAgB,mCAAY;AAChC,iBAAW,QAAQ;AACf,UAAA;AACF,cAAM,YAAY,EAAE,kBAAkB,aAAa,KAAK;AAAA,eACjD,OAAO;AACd,cAAM,IAAI;AAAA,UACR,UAAU;AAAA,UACV,SAAS,EAAE,8BAA8B;AAAA,UACzC,QAAQ,EAAE,oCAAoC;AAAA,UAC9C,MAAM;AAAA,QAAA,CACP;AAAA,MAAA,UACD;AACA,mBAAW,QAAQ;AAAA,MAAA;AAErB,aAAO,KAAK,GAAG;AAAA,IACjB,GAfsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}

View File

@ -1,12 +1,7 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
<<<<<<<< HEAD:comfy/web/assets/NotSupportedView-IH8EV0bV.js
import { d as defineComponent, be as useRouter, r as resolveDirective, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, E as toDisplayString, k as createVNode, j as unref, l as script, i as withDirectives, _ as _export_sfc } from "./index-BsGgXmrT.js";
import { _ as _sfc_main$1 } from "./BaseViewTemplate-DDUNNAbV.js";
========
import { d as defineComponent, bi as useRouter, r as resolveDirective, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, E as toDisplayString, k as createVNode, j as unref, l as script, i as withDirectives, _ as _export_sfc } from "./index-Bv0b06LE.js";
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BTbuZf5t.js";
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/NotSupportedView-B78ZVR9Z.js
import { d as defineComponent, br as useRouter, r as resolveDirective, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, E as toDisplayString, k as createVNode, j as unref, l as script, i as withDirectives, _ as _export_sfc } from "./index-DIgj6hpb.js";
import { _ as _sfc_main$1 } from "./BaseViewTemplate-DaGOaycP.js";
const _imports_0 = "" + new URL("images/sad_girl.png", import.meta.url).href;
const _hoisted_1 = { class: "sad-container" };
const _hoisted_2 = { class: "no-drag sad-text flex items-center" };
@ -88,8 +83,4 @@ const NotSupportedView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "
export {
NotSupportedView as default
};
<<<<<<<< HEAD:comfy/web/assets/NotSupportedView-IH8EV0bV.js
//# sourceMappingURL=NotSupportedView-IH8EV0bV.js.map
========
//# sourceMappingURL=NotSupportedView-B78ZVR9Z.js.map
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/NotSupportedView-B78ZVR9Z.js
//# sourceMappingURL=NotSupportedView-CMCKSnEd.js.map

View File

@ -1 +1 @@
{"version":3,"file":"NotSupportedView-IH8EV0bV.js","sources":["../../../../../../assets/images/sad_girl.png","../../src/views/NotSupportedView.vue"],"sourcesContent":["export default \"__VITE_PUBLIC_ASSET__b82952e7__\"","<template>\n <BaseViewTemplate>\n <div class=\"sad-container\">\n <!-- Right side image -->\n <img\n class=\"sad-girl\"\n src=\"/assets/images/sad_girl.png\"\n alt=\"Sad girl illustration\"\n />\n\n <div class=\"no-drag sad-text flex items-center\">\n <div class=\"flex flex-col gap-8 p-8 min-w-110\">\n <!-- Header -->\n <h1 class=\"text-4xl font-bold text-red-500\">\n {{ $t('notSupported.title') }}\n </h1>\n\n <!-- Message -->\n <div class=\"space-y-4\">\n <p class=\"text-xl\">\n {{ $t('notSupported.message') }}\n </p>\n <ul class=\"list-disc list-inside space-y-1 text-neutral-800\">\n <li>{{ $t('notSupported.supportedDevices.macos') }}</li>\n <li>{{ $t('notSupported.supportedDevices.windows') }}</li>\n </ul>\n </div>\n\n <!-- Actions -->\n <div class=\"flex gap-4\">\n <Button\n :label=\"$t('notSupported.learnMore')\"\n icon=\"pi pi-github\"\n @click=\"openDocs\"\n severity=\"secondary\"\n />\n <Button\n :label=\"$t('notSupported.reportIssue')\"\n icon=\"pi pi-flag\"\n @click=\"reportIssue\"\n severity=\"secondary\"\n />\n <Button\n :label=\"$t('notSupported.continue')\"\n icon=\"pi pi-arrow-right\"\n iconPos=\"right\"\n @click=\"continueToInstall\"\n severity=\"danger\"\n v-tooltip=\"$t('notSupported.continueTooltip')\"\n />\n </div>\n </div>\n </div>\n </div>\n </BaseViewTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport Button from 'primevue/button'\nimport { useRouter } from 'vue-router'\n\nimport BaseViewTemplate from '@/views/templates/BaseViewTemplate.vue'\n\nconst openDocs = () => {\n window.open(\n 'https://github.com/Comfy-Org/desktop#currently-supported-platforms',\n '_blank'\n )\n}\n\nconst reportIssue = () => {\n window.open('https://forum.comfy.org/c/v1-feedback/', '_blank')\n}\n\nconst router = useRouter()\nconst continueToInstall = () => {\n router.push('/install')\n}\n</script>\n\n<style scoped>\n.sad-container {\n @apply grid items-center justify-evenly;\n grid-template-columns: 25rem 1fr;\n\n & > * {\n grid-row: 1;\n }\n}\n\n.sad-text {\n grid-column: 1/3;\n}\n\n.sad-girl {\n grid-column: 2/3;\n width: min(75vw, 100vh);\n}\n</style>\n"],"names":[],"mappings":";;;;AAAA,MAAe,aAAA,KAAA,IAAA,IAAA,uBAAA,YAAA,GAAA,EAAA;;;;;;;;;;;;AC+Df,UAAM,WAAW,6BAAM;AACd,aAAA;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF,GALiB;AAOjB,UAAM,cAAc,6BAAM;AACjB,aAAA,KAAK,0CAA0C,QAAQ;AAAA,IAChE,GAFoB;AAIpB,UAAM,SAAS,UAAU;AACzB,UAAM,oBAAoB,6BAAM;AAC9B,aAAO,KAAK,UAAU;AAAA,IACxB,GAF0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
{"version":3,"file":"NotSupportedView-CMCKSnEd.js","sources":["../../../../../../assets/images/sad_girl.png","../../src/views/NotSupportedView.vue"],"sourcesContent":["export default \"__VITE_PUBLIC_ASSET__b82952e7__\"","<template>\n <BaseViewTemplate>\n <div class=\"sad-container\">\n <!-- Right side image -->\n <img\n class=\"sad-girl\"\n src=\"/assets/images/sad_girl.png\"\n alt=\"Sad girl illustration\"\n />\n\n <div class=\"no-drag sad-text flex items-center\">\n <div class=\"flex flex-col gap-8 p-8 min-w-110\">\n <!-- Header -->\n <h1 class=\"text-4xl font-bold text-red-500\">\n {{ $t('notSupported.title') }}\n </h1>\n\n <!-- Message -->\n <div class=\"space-y-4\">\n <p class=\"text-xl\">\n {{ $t('notSupported.message') }}\n </p>\n <ul class=\"list-disc list-inside space-y-1 text-neutral-800\">\n <li>{{ $t('notSupported.supportedDevices.macos') }}</li>\n <li>{{ $t('notSupported.supportedDevices.windows') }}</li>\n </ul>\n </div>\n\n <!-- Actions -->\n <div class=\"flex gap-4\">\n <Button\n :label=\"$t('notSupported.learnMore')\"\n icon=\"pi pi-github\"\n @click=\"openDocs\"\n severity=\"secondary\"\n />\n <Button\n :label=\"$t('notSupported.reportIssue')\"\n icon=\"pi pi-flag\"\n @click=\"reportIssue\"\n severity=\"secondary\"\n />\n <Button\n :label=\"$t('notSupported.continue')\"\n icon=\"pi pi-arrow-right\"\n iconPos=\"right\"\n @click=\"continueToInstall\"\n severity=\"danger\"\n v-tooltip=\"$t('notSupported.continueTooltip')\"\n />\n </div>\n </div>\n </div>\n </div>\n </BaseViewTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport Button from 'primevue/button'\nimport { useRouter } from 'vue-router'\n\nimport BaseViewTemplate from '@/views/templates/BaseViewTemplate.vue'\n\nconst openDocs = () => {\n window.open(\n 'https://github.com/Comfy-Org/desktop#currently-supported-platforms',\n '_blank'\n )\n}\n\nconst reportIssue = () => {\n window.open('https://forum.comfy.org/c/v1-feedback/', '_blank')\n}\n\nconst router = useRouter()\nconst continueToInstall = () => {\n router.push('/install')\n}\n</script>\n\n<style scoped>\n.sad-container {\n @apply grid items-center justify-evenly;\n grid-template-columns: 25rem 1fr;\n\n & > * {\n grid-row: 1;\n }\n}\n\n.sad-text {\n grid-column: 1/3;\n}\n\n.sad-girl {\n grid-column: 2/3;\n width: min(75vw, 100vh);\n}\n</style>\n"],"names":[],"mappings":";;;;AAAA,MAAe,aAAA,KAAA,IAAA,IAAA,uBAAA,YAAA,GAAA,EAAA;;;;;;;;;;;;AC+Df,UAAM,WAAW,6BAAM;AACd,aAAA;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF,GALiB;AAOjB,UAAM,cAAc,6BAAM;AACjB,aAAA,KAAK,0CAA0C,QAAQ;AAAA,IAChE,GAFoB;AAIpB,UAAM,SAAS,UAAU;AACzB,UAAM,oBAAoB,6BAAM;AAC9B,aAAO,KAAK,UAAU;AAAA,IACxB,GAF0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}

View File

@ -1,12 +1,7 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
<<<<<<<< HEAD:comfy/web/assets/ServerConfigPanel-u0ozNLZ4.js
import { o as openBlock, f as createElementBlock, m as createBaseVNode, H as markRaw, d as defineComponent, a as useSettingStore, ae as storeToRefs, O as watch, ds as useCopyToClipboard, K as useI18n, y as createBlock, z as withCtx, j as unref, bj as script, E as toDisplayString, D as renderList, F as Fragment, k as createVNode, l as script$1, B as createCommentVNode, bh as script$2, dt as FormItem, dh as _sfc_main$1, b5 as electronAPI } from "./index-BsGgXmrT.js";
import { u as useServerConfigStore } from "./serverConfigStore-B9riwnSX.js";
========
import { o as openBlock, f as createElementBlock, m as createBaseVNode, H as markRaw, d as defineComponent, a as useSettingStore, af as storeToRefs, N as watch, dJ as useCopyToClipboard, I as useI18n, y as createBlock, z as withCtx, j as unref, bn as script, E as toDisplayString, D as renderList, F as Fragment, k as createVNode, l as script$1, B as createCommentVNode, bl as script$2, dK as FormItem, dz as _sfc_main$1, b9 as electronAPI } from "./index-Bv0b06LE.js";
import { u as useServerConfigStore } from "./serverConfigStore-D2Vr0L0h.js";
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/ServerConfigPanel-BYrt6wyr.js
import { o as openBlock, f as createElementBlock, m as createBaseVNode, H as markRaw, d as defineComponent, a as useSettingStore, ar as storeToRefs, N as watch, dU as useCopyToClipboard, I as useI18n, y as createBlock, z as withCtx, j as unref, bw as script, E as toDisplayString, D as renderList, F as Fragment, k as createVNode, l as script$1, B as createCommentVNode, bu as script$2, dV as FormItem, dK as _sfc_main$1, bi as electronAPI } from "./index-DIgj6hpb.js";
import { u as useServerConfigStore } from "./serverConfigStore-3t3U367D.js";
const _hoisted_1$1 = {
viewBox: "0 0 24 24",
width: "1.2em",
@ -158,8 +153,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
export {
_sfc_main as default
};
<<<<<<<< HEAD:comfy/web/assets/ServerConfigPanel-u0ozNLZ4.js
//# sourceMappingURL=ServerConfigPanel-u0ozNLZ4.js.map
========
//# sourceMappingURL=ServerConfigPanel-BYrt6wyr.js.map
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/ServerConfigPanel-BYrt6wyr.js
//# sourceMappingURL=ServerConfigPanel-di9WinBR.js.map

View File

@ -1 +1 @@
{"version":3,"file":"ServerConfigPanel-u0ozNLZ4.js","sources":["../../src/components/dialog/content/setting/ServerConfigPanel.vue"],"sourcesContent":["<template>\n <PanelTemplate value=\"Server-Config\" class=\"server-config-panel\">\n <template #header>\n <div class=\"flex flex-col gap-2\">\n <Message\n v-if=\"modifiedConfigs.length > 0\"\n severity=\"info\"\n pt:text=\"w-full\"\n >\n <p>\n {{ $t('serverConfig.modifiedConfigs') }}\n </p>\n <ul>\n <li v-for=\"config in modifiedConfigs\" :key=\"config.id\">\n {{ config.name }}: {{ config.initialValue }} → {{ config.value }}\n </li>\n </ul>\n <div class=\"flex justify-end gap-2\">\n <Button\n :label=\"$t('serverConfig.revertChanges')\"\n @click=\"revertChanges\"\n outlined\n />\n <Button\n :label=\"$t('serverConfig.restart')\"\n @click=\"restartApp\"\n outlined\n severity=\"danger\"\n />\n </div>\n </Message>\n <Message v-if=\"commandLineArgs\" severity=\"secondary\" pt:text=\"w-full\">\n <template #icon>\n <i-lucide:terminal class=\"text-xl font-bold\" />\n </template>\n <div class=\"flex items-center justify-between\">\n <p>{{ commandLineArgs }}</p>\n <Button\n icon=\"pi pi-clipboard\"\n @click=\"copyCommandLineArgs\"\n severity=\"secondary\"\n text\n />\n </div>\n </Message>\n </div>\n </template>\n <div\n v-for=\"([label, items], i) in Object.entries(serverConfigsByCategory)\"\n :key=\"label\"\n >\n <Divider v-if=\"i > 0\" />\n <h3>{{ $t(`serverConfigCategories.${label}`, label) }}</h3>\n <div v-for=\"item in items\" :key=\"item.name\" class=\"mb-4\">\n <FormItem\n :item=\"translateItem(item)\"\n v-model:formValue=\"item.value\"\n :id=\"item.id\"\n :labelClass=\"{\n 'text-highlight': item.initialValue !== item.value\n }\"\n />\n </div>\n </div>\n </PanelTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport { storeToRefs } from 'pinia'\nimport Button from 'primevue/button'\nimport Divider from 'primevue/divider'\nimport Message from 'primevue/message'\nimport { watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport FormItem from '@/components/common/FormItem.vue'\nimport type { ServerConfig } from '@/constants/serverConfig'\nimport { useCopyToClipboard } from '@/hooks/clipboardHooks'\nimport { useServerConfigStore } from '@/stores/serverConfigStore'\nimport { useSettingStore } from '@/stores/settingStore'\nimport type { FormItem as FormItemType } from '@/types/settingTypes'\nimport { electronAPI } from '@/utils/envUtil'\n\nimport PanelTemplate from './PanelTemplate.vue'\n\nconst settingStore = useSettingStore()\nconst serverConfigStore = useServerConfigStore()\nconst {\n serverConfigsByCategory,\n serverConfigValues,\n launchArgs,\n commandLineArgs,\n modifiedConfigs\n} = storeToRefs(serverConfigStore)\n\nconst revertChanges = () => {\n serverConfigStore.revertChanges()\n}\n\nconst restartApp = () => {\n electronAPI().restartApp()\n}\n\nwatch(launchArgs, (newVal) => {\n settingStore.set('Comfy.Server.LaunchArgs', newVal)\n})\n\nwatch(serverConfigValues, (newVal) => {\n settingStore.set('Comfy.Server.ServerConfigValues', newVal)\n})\n\nconst { copyToClipboard } = useCopyToClipboard()\nconst copyCommandLineArgs = async () => {\n await copyToClipboard(commandLineArgs.value)\n}\n\nconst { t } = useI18n()\nconst translateItem = (item: ServerConfig<any>): FormItemType => {\n return {\n ...item,\n name: t(`serverConfigItems.${item.id}.name`, item.name),\n tooltip: item.tooltip\n ? t(`serverConfigItems.${item.id}.tooltip`, item.tooltip)\n : undefined\n }\n}\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqFA,UAAM,eAAe,gBAAgB;AACrC,UAAM,oBAAoB,qBAAqB;AACzC,UAAA;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACE,YAAY,iBAAiB;AAEjC,UAAM,gBAAgB,6BAAM;AAC1B,wBAAkB,cAAc;AAAA,IAClC,GAFsB;AAItB,UAAM,aAAa,6BAAM;AACvB,kBAAA,EAAc,WAAW;AAAA,IAC3B,GAFmB;AAIb,UAAA,YAAY,CAAC,WAAW;AACf,mBAAA,IAAI,2BAA2B,MAAM;AAAA,IAAA,CACnD;AAEK,UAAA,oBAAoB,CAAC,WAAW;AACvB,mBAAA,IAAI,mCAAmC,MAAM;AAAA,IAAA,CAC3D;AAEK,UAAA,EAAE,gBAAgB,IAAI,mBAAmB;AAC/C,UAAM,sBAAsB,mCAAY;AAChC,YAAA,gBAAgB,gBAAgB,KAAK;AAAA,IAC7C,GAF4B;AAItB,UAAA,EAAE,EAAE,IAAI,QAAQ;AAChB,UAAA,gBAAgB,wBAAC,SAA0C;AACxD,aAAA;AAAA,QACL,GAAG;AAAA,QACH,MAAM,EAAE,qBAAqB,KAAK,EAAE,SAAS,KAAK,IAAI;AAAA,QACtD,SAAS,KAAK,UACV,EAAE,qBAAqB,KAAK,EAAE,YAAY,KAAK,OAAO,IACtD;AAAA,MACN;AAAA,IACF,GARsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
{"version":3,"file":"ServerConfigPanel-di9WinBR.js","sources":["../../src/components/dialog/content/setting/ServerConfigPanel.vue"],"sourcesContent":["<template>\n <PanelTemplate value=\"Server-Config\" class=\"server-config-panel\">\n <template #header>\n <div class=\"flex flex-col gap-2\">\n <Message\n v-if=\"modifiedConfigs.length > 0\"\n severity=\"info\"\n pt:text=\"w-full\"\n >\n <p>\n {{ $t('serverConfig.modifiedConfigs') }}\n </p>\n <ul>\n <li v-for=\"config in modifiedConfigs\" :key=\"config.id\">\n {{ config.name }}: {{ config.initialValue }} → {{ config.value }}\n </li>\n </ul>\n <div class=\"flex justify-end gap-2\">\n <Button\n :label=\"$t('serverConfig.revertChanges')\"\n @click=\"revertChanges\"\n outlined\n />\n <Button\n :label=\"$t('serverConfig.restart')\"\n @click=\"restartApp\"\n outlined\n severity=\"danger\"\n />\n </div>\n </Message>\n <Message v-if=\"commandLineArgs\" severity=\"secondary\" pt:text=\"w-full\">\n <template #icon>\n <i-lucide:terminal class=\"text-xl font-bold\" />\n </template>\n <div class=\"flex items-center justify-between\">\n <p>{{ commandLineArgs }}</p>\n <Button\n icon=\"pi pi-clipboard\"\n @click=\"copyCommandLineArgs\"\n severity=\"secondary\"\n text\n />\n </div>\n </Message>\n </div>\n </template>\n <div\n v-for=\"([label, items], i) in Object.entries(serverConfigsByCategory)\"\n :key=\"label\"\n >\n <Divider v-if=\"i > 0\" />\n <h3>{{ $t(`serverConfigCategories.${label}`, label) }}</h3>\n <div v-for=\"item in items\" :key=\"item.name\" class=\"mb-4\">\n <FormItem\n :item=\"translateItem(item)\"\n v-model:formValue=\"item.value\"\n :id=\"item.id\"\n :labelClass=\"{\n 'text-highlight': item.initialValue !== item.value\n }\"\n />\n </div>\n </div>\n </PanelTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport { storeToRefs } from 'pinia'\nimport Button from 'primevue/button'\nimport Divider from 'primevue/divider'\nimport Message from 'primevue/message'\nimport { watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport FormItem from '@/components/common/FormItem.vue'\nimport { useCopyToClipboard } from '@/composables/useCopyToClipboard'\nimport type { ServerConfig } from '@/constants/serverConfig'\nimport { useServerConfigStore } from '@/stores/serverConfigStore'\nimport { useSettingStore } from '@/stores/settingStore'\nimport type { FormItem as FormItemType } from '@/types/settingTypes'\nimport { electronAPI } from '@/utils/envUtil'\n\nimport PanelTemplate from './PanelTemplate.vue'\n\nconst settingStore = useSettingStore()\nconst serverConfigStore = useServerConfigStore()\nconst {\n serverConfigsByCategory,\n serverConfigValues,\n launchArgs,\n commandLineArgs,\n modifiedConfigs\n} = storeToRefs(serverConfigStore)\n\nconst revertChanges = () => {\n serverConfigStore.revertChanges()\n}\n\nconst restartApp = () => {\n electronAPI().restartApp()\n}\n\nwatch(launchArgs, (newVal) => {\n settingStore.set('Comfy.Server.LaunchArgs', newVal)\n})\n\nwatch(serverConfigValues, (newVal) => {\n settingStore.set('Comfy.Server.ServerConfigValues', newVal)\n})\n\nconst { copyToClipboard } = useCopyToClipboard()\nconst copyCommandLineArgs = async () => {\n await copyToClipboard(commandLineArgs.value)\n}\n\nconst { t } = useI18n()\nconst translateItem = (item: ServerConfig<any>): FormItemType => {\n return {\n ...item,\n name: t(`serverConfigItems.${item.id}.name`, item.name),\n tooltip: item.tooltip\n ? t(`serverConfigItems.${item.id}.tooltip`, item.tooltip)\n : undefined\n }\n}\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqFA,UAAM,eAAe,gBAAgB;AACrC,UAAM,oBAAoB,qBAAqB;AACzC,UAAA;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACE,YAAY,iBAAiB;AAEjC,UAAM,gBAAgB,6BAAM;AAC1B,wBAAkB,cAAc;AAAA,IAClC,GAFsB;AAItB,UAAM,aAAa,6BAAM;AACvB,kBAAA,EAAc,WAAW;AAAA,IAC3B,GAFmB;AAIb,UAAA,YAAY,CAAC,WAAW;AACf,mBAAA,IAAI,2BAA2B,MAAM;AAAA,IAAA,CACnD;AAEK,UAAA,oBAAoB,CAAC,WAAW;AACvB,mBAAA,IAAI,mCAAmC,MAAM;AAAA,IAAA,CAC3D;AAEK,UAAA,EAAE,gBAAgB,IAAI,mBAAmB;AAC/C,UAAM,sBAAsB,mCAAY;AAChC,YAAA,gBAAgB,gBAAgB,KAAK;AAAA,IAC7C,GAF4B;AAItB,UAAA,EAAE,EAAE,IAAI,QAAQ;AAChB,UAAA,gBAAgB,wBAAC,SAA0C;AACxD,aAAA;AAAA,QACL,GAAG;AAAA,QACH,MAAM,EAAE,qBAAqB,KAAK,EAAE,SAAS,KAAK,IAAI;AAAA,QACtD,SAAS,KAAK,UACV,EAAE,qBAAqB,KAAK,EAAE,YAAY,KAAK,OAAO,IACtD;AAAA,MACN;AAAA,IACF,GARsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}

View File

@ -1,5 +1,5 @@
[data-v-e6ba9633] .xterm-helper-textarea {
[data-v-32a7f48f] .xterm-helper-textarea {
/* Hide this as it moves all over when uv is running */
display: none;
}

View File

@ -1,12 +1,7 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
<<<<<<<< HEAD:comfy/web/assets/ServerStartView-DgywG2so.js
import { d as defineComponent, K as useI18n, U as ref, bk as ProgressStatus, p as onMounted, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, a7 as createTextVNode, E as toDisplayString, j as unref, f as createElementBlock, B as createCommentVNode, k as createVNode, l as script, i as withDirectives, v as vShow, bl as BaseTerminal, b5 as electronAPI, _ as _export_sfc } from "./index-BsGgXmrT.js";
import { _ as _sfc_main$1 } from "./BaseViewTemplate-DDUNNAbV.js";
========
import { d as defineComponent, I as useI18n, T as ref, bo as ProgressStatus, p as onMounted, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, a8 as createTextVNode, E as toDisplayString, j as unref, f as createElementBlock, B as createCommentVNode, k as createVNode, l as script, i as withDirectives, v as vShow, bp as BaseTerminal, b9 as electronAPI, _ as _export_sfc } from "./index-Bv0b06LE.js";
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BTbuZf5t.js";
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/ServerStartView-B7TlHxYo.js
import { d as defineComponent, I as useI18n, T as ref, bx as ProgressStatus, p as onMounted, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, ak as createTextVNode, E as toDisplayString, j as unref, f as createElementBlock, B as createCommentVNode, k as createVNode, l as script, i as withDirectives, v as vShow, by as BaseTerminal, bi as electronAPI, _ as _export_sfc } from "./index-DIgj6hpb.js";
import { _ as _sfc_main$1 } from "./BaseViewTemplate-DaGOaycP.js";
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 };
@ -39,7 +34,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
terminal.options.disableStdin = true;
terminal.options.cursorInactiveStyle = "block";
}, "terminalCreated");
const reinstall = /* @__PURE__ */ __name(() => electron.reinstall(), "reinstall");
const troubleshoot = /* @__PURE__ */ __name(() => electron.startTroubleshooting(), "troubleshoot");
const reportIssue = /* @__PURE__ */ __name(() => {
window.open("https://forum.comfy.org/c/v1-feedback/", "_blank");
}, "reportIssue");
@ -75,9 +70,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
onClick: openLogs
}, null, 8, ["label"]),
createVNode(unref(script), {
icon: "pi pi-refresh",
label: unref(t)("serverStart.reinstall"),
onClick: reinstall
icon: "pi pi-wrench",
label: unref(t)("serverStart.troubleshoot"),
onClick: troubleshoot
}, null, 8, ["label"])
]),
!terminalVisible.value ? (openBlock(), createBlock(unref(script), {
@ -98,12 +93,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
};
}
});
const ServerStartView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-e6ba9633"]]);
const ServerStartView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-32a7f48f"]]);
export {
ServerStartView as default
};
<<<<<<<< HEAD:comfy/web/assets/ServerStartView-DgywG2so.js
//# sourceMappingURL=ServerStartView-DgywG2so.js.map
========
//# sourceMappingURL=ServerStartView-B7TlHxYo.js.map
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/ServerStartView-B7TlHxYo.js
//# sourceMappingURL=ServerStartView-CvFWnVGg.js.map

1
comfy/web/assets/ServerStartView-CvFWnVGg.js.map generated vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"ServerStartView-CvFWnVGg.js","sources":["../../src/views/ServerStartView.vue"],"sourcesContent":["<template>\n <BaseViewTemplate dark class=\"flex-col\">\n <div class=\"flex flex-col w-full h-full items-center\">\n <h2 class=\"text-2xl font-bold\">\n {{ t(`serverStart.process.${status}`) }}\n <span v-if=\"status === ProgressStatus.ERROR\">\n v{{ electronVersion }}\n </span>\n </h2>\n <div\n v-if=\"status === ProgressStatus.ERROR\"\n class=\"flex flex-col items-center gap-4\"\n >\n <div class=\"flex items-center my-4 gap-2\">\n <Button\n icon=\"pi pi-flag\"\n severity=\"secondary\"\n :label=\"t('serverStart.reportIssue')\"\n @click=\"reportIssue\"\n />\n <Button\n icon=\"pi pi-file\"\n severity=\"secondary\"\n :label=\"t('serverStart.openLogs')\"\n @click=\"openLogs\"\n />\n <Button\n icon=\"pi pi-wrench\"\n :label=\"t('serverStart.troubleshoot')\"\n @click=\"troubleshoot\"\n />\n </div>\n <Button\n v-if=\"!terminalVisible\"\n icon=\"pi pi-search\"\n severity=\"secondary\"\n :label=\"t('serverStart.showTerminal')\"\n @click=\"terminalVisible = true\"\n />\n </div>\n <BaseTerminal v-show=\"terminalVisible\" @created=\"terminalCreated\" />\n </div>\n </BaseViewTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport { ProgressStatus } from '@comfyorg/comfyui-electron-types'\nimport { Terminal } from '@xterm/xterm'\nimport Button from 'primevue/button'\nimport { Ref, onMounted, ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport BaseTerminal from '@/components/bottomPanel/tabs/terminal/BaseTerminal.vue'\nimport type { useTerminal } from '@/composables/bottomPanelTabs/useTerminal'\nimport { electronAPI } from '@/utils/envUtil'\nimport BaseViewTemplate from '@/views/templates/BaseViewTemplate.vue'\n\nconst electron = electronAPI()\nconst { t } = useI18n()\n\nconst status = ref<ProgressStatus>(ProgressStatus.INITIAL_STATE)\nconst electronVersion = ref<string>('')\nlet xterm: Terminal | undefined\n\nconst terminalVisible = ref(true)\n\nconst updateProgress = ({ status: newStatus }: { status: ProgressStatus }) => {\n status.value = newStatus\n\n // Make critical error screen more obvious.\n if (newStatus === ProgressStatus.ERROR) terminalVisible.value = false\n else xterm?.clear()\n}\n\nconst terminalCreated = (\n { terminal, useAutoSize }: ReturnType<typeof useTerminal>,\n root: Ref<HTMLElement>\n) => {\n xterm = terminal\n\n useAutoSize({ root, autoRows: true, autoCols: true })\n electron.onLogMessage((message: string) => {\n terminal.write(message)\n })\n\n terminal.options.cursorBlink = false\n terminal.options.disableStdin = true\n terminal.options.cursorInactiveStyle = 'block'\n}\n\nconst troubleshoot = () => electron.startTroubleshooting()\nconst reportIssue = () => {\n window.open('https://forum.comfy.org/c/v1-feedback/', '_blank')\n}\nconst openLogs = () => electron.openLogsFolder()\n\nonMounted(async () => {\n electron.sendReady()\n electron.onProgressUpdate(updateProgress)\n electronVersion.value = await electron.getElectronVersion()\n})\n</script>\n\n<style scoped>\n:deep(.xterm-helper-textarea) {\n /* Hide this as it moves all over when uv is running */\n display: none;\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAyDA,UAAM,WAAW,YAAY;AACvB,UAAA,EAAE,EAAE,IAAI,QAAQ;AAEhB,UAAA,SAAS,IAAoB,eAAe,aAAa;AACzD,UAAA,kBAAkB,IAAY,EAAE;AAClC,QAAA;AAEE,UAAA,kBAAkB,IAAI,IAAI;AAEhC,UAAM,iBAAiB,wBAAC,EAAE,QAAQ,gBAA4C;AAC5E,aAAO,QAAQ;AAGf,UAAI,cAAc,eAAe,MAAO,iBAAgB,QAAQ;AAAA,kBACpD,MAAM;AAAA,IACpB,GANuB;AAQvB,UAAM,kBAAkB,wBACtB,EAAE,UAAU,YAAA,GACZ,SACG;AACK,cAAA;AAER,kBAAY,EAAE,MAAM,UAAU,MAAM,UAAU,MAAM;AAC3C,eAAA,aAAa,CAAC,YAAoB;AACzC,iBAAS,MAAM,OAAO;AAAA,MAAA,CACvB;AAED,eAAS,QAAQ,cAAc;AAC/B,eAAS,QAAQ,eAAe;AAChC,eAAS,QAAQ,sBAAsB;AAAA,IACzC,GAdwB;AAgBlB,UAAA,eAAe,6BAAM,SAAS,qBAAqB,GAApC;AACrB,UAAM,cAAc,6BAAM;AACjB,aAAA,KAAK,0CAA0C,QAAQ;AAAA,IAChE,GAFoB;AAGd,UAAA,WAAW,6BAAM,SAAS,eAAe,GAA9B;AAEjB,cAAU,YAAY;AACpB,eAAS,UAAU;AACnB,eAAS,iBAAiB,cAAc;AACxB,sBAAA,QAAQ,MAAM,SAAS,mBAAmB;AAAA,IAAA,CAC3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}

View File

@ -1 +0,0 @@
{"version":3,"file":"ServerStartView-DgywG2so.js","sources":["../../src/views/ServerStartView.vue"],"sourcesContent":["<template>\n <BaseViewTemplate dark class=\"flex-col\">\n <div class=\"flex flex-col w-full h-full items-center\">\n <h2 class=\"text-2xl font-bold\">\n {{ t(`serverStart.process.${status}`) }}\n <span v-if=\"status === ProgressStatus.ERROR\">\n v{{ electronVersion }}\n </span>\n </h2>\n <div\n v-if=\"status === ProgressStatus.ERROR\"\n class=\"flex flex-col items-center gap-4\"\n >\n <div class=\"flex items-center my-4 gap-2\">\n <Button\n icon=\"pi pi-flag\"\n severity=\"secondary\"\n :label=\"t('serverStart.reportIssue')\"\n @click=\"reportIssue\"\n />\n <Button\n icon=\"pi pi-file\"\n severity=\"secondary\"\n :label=\"t('serverStart.openLogs')\"\n @click=\"openLogs\"\n />\n <Button\n icon=\"pi pi-refresh\"\n :label=\"t('serverStart.reinstall')\"\n @click=\"reinstall\"\n />\n </div>\n <Button\n v-if=\"!terminalVisible\"\n icon=\"pi pi-search\"\n severity=\"secondary\"\n :label=\"t('serverStart.showTerminal')\"\n @click=\"terminalVisible = true\"\n />\n </div>\n <BaseTerminal v-show=\"terminalVisible\" @created=\"terminalCreated\" />\n </div>\n </BaseViewTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport { ProgressStatus } from '@comfyorg/comfyui-electron-types'\nimport { Terminal } from '@xterm/xterm'\nimport Button from 'primevue/button'\nimport { Ref, onMounted, ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport BaseTerminal from '@/components/bottomPanel/tabs/terminal/BaseTerminal.vue'\nimport type { useTerminal } from '@/hooks/bottomPanelTabs/useTerminal'\nimport { electronAPI } from '@/utils/envUtil'\nimport BaseViewTemplate from '@/views/templates/BaseViewTemplate.vue'\n\nconst electron = electronAPI()\nconst { t } = useI18n()\n\nconst status = ref<ProgressStatus>(ProgressStatus.INITIAL_STATE)\nconst electronVersion = ref<string>('')\nlet xterm: Terminal | undefined\n\nconst terminalVisible = ref(true)\n\nconst updateProgress = ({ status: newStatus }: { status: ProgressStatus }) => {\n status.value = newStatus\n\n // Make critical error screen more obvious.\n if (newStatus === ProgressStatus.ERROR) terminalVisible.value = false\n else xterm?.clear()\n}\n\nconst terminalCreated = (\n { terminal, useAutoSize }: ReturnType<typeof useTerminal>,\n root: Ref<HTMLElement>\n) => {\n xterm = terminal\n\n useAutoSize({ root, autoRows: true, autoCols: true })\n electron.onLogMessage((message: string) => {\n terminal.write(message)\n })\n\n terminal.options.cursorBlink = false\n terminal.options.disableStdin = true\n terminal.options.cursorInactiveStyle = 'block'\n}\n\nconst reinstall = () => electron.reinstall()\nconst reportIssue = () => {\n window.open('https://forum.comfy.org/c/v1-feedback/', '_blank')\n}\nconst openLogs = () => electron.openLogsFolder()\n\nonMounted(async () => {\n electron.sendReady()\n electron.onProgressUpdate(updateProgress)\n electronVersion.value = await electron.getElectronVersion()\n})\n</script>\n\n<style scoped>\n:deep(.xterm-helper-textarea) {\n /* Hide this as it moves all over when uv is running */\n display: none;\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAyDA,UAAM,WAAW,YAAY;AACvB,UAAA,EAAE,EAAE,IAAI,QAAQ;AAEhB,UAAA,SAAS,IAAoB,eAAe,aAAa;AACzD,UAAA,kBAAkB,IAAY,EAAE;AAClC,QAAA;AAEE,UAAA,kBAAkB,IAAI,IAAI;AAEhC,UAAM,iBAAiB,wBAAC,EAAE,QAAQ,gBAA4C;AAC5E,aAAO,QAAQ;AAGf,UAAI,cAAc,eAAe,MAAO,iBAAgB,QAAQ;AAAA,kBACpD,MAAM;AAAA,IACpB,GANuB;AAQvB,UAAM,kBAAkB,wBACtB,EAAE,UAAU,YAAA,GACZ,SACG;AACK,cAAA;AAER,kBAAY,EAAE,MAAM,UAAU,MAAM,UAAU,MAAM;AAC3C,eAAA,aAAa,CAAC,YAAoB;AACzC,iBAAS,MAAM,OAAO;AAAA,MAAA,CACvB;AAED,eAAS,QAAQ,cAAc;AAC/B,eAAS,QAAQ,eAAe;AAChC,eAAS,QAAQ,sBAAsB;AAAA,IACzC,GAdwB;AAgBlB,UAAA,YAAY,6BAAM,SAAS,UAAU,GAAzB;AAClB,UAAM,cAAc,6BAAM;AACjB,aAAA,KAAK,0CAA0C,QAAQ;AAAA,IAChE,GAFoB;AAGd,UAAA,WAAW,6BAAM,SAAS,eAAe,GAA9B;AAEjB,cAAU,YAAY;AACpB,eAAS,UAAU;AACnB,eAAS,iBAAiB,cAAc;AACxB,sBAAA,QAAQ,MAAM,SAAS,mBAAmB;AAAA,IAAA,CAC3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}

View File

@ -1,391 +1,7 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
import { bG as BaseStyle, bH as script$2, bZ as ZIndex, bU as addClass, bL as focus, cy as blockBodyScroll, cA as unblockBodyScroll, cB as FocusTrap, l as script$3, ca as script$4, cl as script$5, bR as resolveComponent, r as resolveDirective, o as openBlock, y as createBlock, z as withCtx, f as createElementBlock, at as mergeProps, k as createVNode, bI as Transition, i as withDirectives, A as renderSlot, F as Fragment, m as createBaseVNode, aj as normalizeClass, E as toDisplayString, B as createCommentVNode, C as resolveDynamicComponent, dd as commonjsGlobal, de as getDefaultExportFromCjs, H as markRaw, df as xtermExports, p as onMounted, d8 as onUnmounted, d as defineComponent, bw as mergeModels, bq as useModel, bp as BaseTerminal, j as unref, b9 as electronAPI } from "./index-Bv0b06LE.js";
var theme = /* @__PURE__ */ __name(function theme2(_ref) {
var dt = _ref.dt;
return "\n.p-drawer {\n display: flex;\n flex-direction: column;\n transform: translate3d(0px, 0px, 0px);\n position: relative;\n transition: transform 0.3s;\n background: ".concat(dt("drawer.background"), ";\n color: ").concat(dt("drawer.color"), ";\n border: 1px solid ").concat(dt("drawer.border.color"), ";\n box-shadow: ").concat(dt("drawer.shadow"), ";\n}\n\n.p-drawer-content {\n overflow-y: auto;\n flex-grow: 1;\n padding: ").concat(dt("drawer.content.padding"), ";\n}\n\n.p-drawer-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-shrink: 0;\n padding: ").concat(dt("drawer.header.padding"), ";\n}\n\n.p-drawer-footer {\n padding: ").concat(dt("drawer.footer.padding"), ";\n}\n\n.p-drawer-title {\n font-weight: ").concat(dt("drawer.title.font.weight"), ";\n font-size: ").concat(dt("drawer.title.font.size"), ";\n}\n\n.p-drawer-full .p-drawer {\n transition: none;\n transform: none;\n width: 100vw !important;\n height: 100vh !important;\n max-height: 100%;\n top: 0px !important;\n left: 0px !important;\n border-width: 1px;\n}\n\n.p-drawer-left .p-drawer-enter-from,\n.p-drawer-left .p-drawer-leave-to {\n transform: translateX(-100%);\n}\n\n.p-drawer-right .p-drawer-enter-from,\n.p-drawer-right .p-drawer-leave-to {\n transform: translateX(100%);\n}\n\n.p-drawer-top .p-drawer-enter-from,\n.p-drawer-top .p-drawer-leave-to {\n transform: translateY(-100%);\n}\n\n.p-drawer-bottom .p-drawer-enter-from,\n.p-drawer-bottom .p-drawer-leave-to {\n transform: translateY(100%);\n}\n\n.p-drawer-full .p-drawer-enter-from,\n.p-drawer-full .p-drawer-leave-to {\n opacity: 0;\n}\n\n.p-drawer-full .p-drawer-enter-active,\n.p-drawer-full .p-drawer-leave-active {\n transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);\n}\n\n.p-drawer-left .p-drawer {\n width: 20rem;\n height: 100%;\n border-inline-end-width: 1px;\n}\n\n.p-drawer-right .p-drawer {\n width: 20rem;\n height: 100%;\n border-inline-start-width: 1px;\n}\n\n.p-drawer-top .p-drawer {\n height: 10rem;\n width: 100%;\n border-block-end-width: 1px;\n}\n\n.p-drawer-bottom .p-drawer {\n height: 10rem;\n width: 100%;\n border-block-start-width: 1px;\n}\n\n.p-drawer-left .p-drawer-content,\n.p-drawer-right .p-drawer-content,\n.p-drawer-top .p-drawer-content,\n.p-drawer-bottom .p-drawer-content {\n width: 100%;\n height: 100%;\n}\n\n.p-drawer-open {\n display: flex;\n}\n\n.p-drawer-mask:dir(rtl) {\n flex-direction: row-reverse;\n}\n");
}, "theme");
var inlineStyles = {
mask: /* @__PURE__ */ __name(function mask(_ref2) {
var position = _ref2.position, modal = _ref2.modal;
return {
position: "fixed",
height: "100%",
width: "100%",
left: 0,
top: 0,
display: "flex",
justifyContent: position === "left" ? "flex-start" : position === "right" ? "flex-end" : "center",
alignItems: position === "top" ? "flex-start" : position === "bottom" ? "flex-end" : "center",
pointerEvents: modal ? "auto" : "none"
};
}, "mask"),
root: {
pointerEvents: "auto"
}
};
var classes = {
mask: /* @__PURE__ */ __name(function mask2(_ref3) {
var instance = _ref3.instance, props = _ref3.props;
var positions = ["left", "right", "top", "bottom"];
var pos = positions.find(function(item) {
return item === props.position;
});
return ["p-drawer-mask", {
"p-overlay-mask p-overlay-mask-enter": props.modal,
"p-drawer-open": instance.containerVisible,
"p-drawer-full": instance.fullScreen
}, pos ? "p-drawer-".concat(pos) : ""];
}, "mask"),
root: /* @__PURE__ */ __name(function root(_ref4) {
var instance = _ref4.instance;
return ["p-drawer p-component", {
"p-drawer-full": instance.fullScreen
}];
}, "root"),
header: "p-drawer-header",
title: "p-drawer-title",
pcCloseButton: "p-drawer-close-button",
content: "p-drawer-content",
footer: "p-drawer-footer"
};
var DrawerStyle = BaseStyle.extend({
name: "drawer",
theme,
classes,
inlineStyles
});
var script$1 = {
name: "BaseDrawer",
"extends": script$2,
props: {
visible: {
type: Boolean,
"default": false
},
position: {
type: String,
"default": "left"
},
header: {
type: null,
"default": null
},
baseZIndex: {
type: Number,
"default": 0
},
autoZIndex: {
type: Boolean,
"default": true
},
dismissable: {
type: Boolean,
"default": true
},
showCloseIcon: {
type: Boolean,
"default": true
},
closeButtonProps: {
type: Object,
"default": /* @__PURE__ */ __name(function _default() {
return {
severity: "secondary",
text: true,
rounded: true
};
}, "_default")
},
closeIcon: {
type: String,
"default": void 0
},
modal: {
type: Boolean,
"default": true
},
blockScroll: {
type: Boolean,
"default": false
}
},
style: DrawerStyle,
provide: /* @__PURE__ */ __name(function provide() {
return {
$pcDrawer: this,
$parentInstance: this
};
}, "provide")
};
var script = {
name: "Drawer",
"extends": script$1,
inheritAttrs: false,
emits: ["update:visible", "show", "after-show", "hide", "after-hide"],
data: /* @__PURE__ */ __name(function data() {
return {
containerVisible: this.visible
};
}, "data"),
container: null,
mask: null,
content: null,
headerContainer: null,
footerContainer: null,
closeButton: null,
outsideClickListener: null,
documentKeydownListener: null,
watch: {
dismissable: /* @__PURE__ */ __name(function dismissable(newValue) {
if (newValue) {
this.enableDocumentSettings();
} else {
this.disableDocumentSettings();
}
}, "dismissable")
},
updated: /* @__PURE__ */ __name(function updated() {
if (this.visible) {
this.containerVisible = this.visible;
}
}, "updated"),
beforeUnmount: /* @__PURE__ */ __name(function beforeUnmount() {
this.disableDocumentSettings();
if (this.mask && this.autoZIndex) {
ZIndex.clear(this.mask);
}
this.container = null;
this.mask = null;
}, "beforeUnmount"),
methods: {
hide: /* @__PURE__ */ __name(function hide() {
this.$emit("update:visible", false);
}, "hide"),
onEnter: /* @__PURE__ */ __name(function onEnter() {
this.$emit("show");
this.focus();
this.bindDocumentKeyDownListener();
if (this.autoZIndex) {
ZIndex.set("modal", this.mask, this.baseZIndex || this.$primevue.config.zIndex.modal);
}
}, "onEnter"),
onAfterEnter: /* @__PURE__ */ __name(function onAfterEnter() {
this.enableDocumentSettings();
this.$emit("after-show");
}, "onAfterEnter"),
onBeforeLeave: /* @__PURE__ */ __name(function onBeforeLeave() {
if (this.modal) {
!this.isUnstyled && addClass(this.mask, "p-overlay-mask-leave");
}
}, "onBeforeLeave"),
onLeave: /* @__PURE__ */ __name(function onLeave() {
this.$emit("hide");
}, "onLeave"),
onAfterLeave: /* @__PURE__ */ __name(function onAfterLeave() {
if (this.autoZIndex) {
ZIndex.clear(this.mask);
}
this.unbindDocumentKeyDownListener();
this.containerVisible = false;
this.disableDocumentSettings();
this.$emit("after-hide");
}, "onAfterLeave"),
onMaskClick: /* @__PURE__ */ __name(function onMaskClick(event) {
if (this.dismissable && this.modal && this.mask === event.target) {
this.hide();
}
}, "onMaskClick"),
focus: /* @__PURE__ */ __name(function focus$1() {
var findFocusableElement = /* @__PURE__ */ __name(function findFocusableElement2(container) {
return container && container.querySelector("[autofocus]");
}, "findFocusableElement");
var focusTarget = this.$slots.header && findFocusableElement(this.headerContainer);
if (!focusTarget) {
focusTarget = this.$slots["default"] && findFocusableElement(this.container);
if (!focusTarget) {
focusTarget = this.$slots.footer && findFocusableElement(this.footerContainer);
if (!focusTarget) {
focusTarget = this.closeButton;
}
}
}
focusTarget && focus(focusTarget);
}, "focus$1"),
enableDocumentSettings: /* @__PURE__ */ __name(function enableDocumentSettings() {
if (this.dismissable && !this.modal) {
this.bindOutsideClickListener();
}
if (this.blockScroll) {
blockBodyScroll();
}
}, "enableDocumentSettings"),
disableDocumentSettings: /* @__PURE__ */ __name(function disableDocumentSettings() {
this.unbindOutsideClickListener();
if (this.blockScroll) {
unblockBodyScroll();
}
}, "disableDocumentSettings"),
onKeydown: /* @__PURE__ */ __name(function onKeydown(event) {
if (event.code === "Escape") {
this.hide();
}
}, "onKeydown"),
containerRef: /* @__PURE__ */ __name(function containerRef(el) {
this.container = el;
}, "containerRef"),
maskRef: /* @__PURE__ */ __name(function maskRef(el) {
this.mask = el;
}, "maskRef"),
contentRef: /* @__PURE__ */ __name(function contentRef(el) {
this.content = el;
}, "contentRef"),
headerContainerRef: /* @__PURE__ */ __name(function headerContainerRef(el) {
this.headerContainer = el;
}, "headerContainerRef"),
footerContainerRef: /* @__PURE__ */ __name(function footerContainerRef(el) {
this.footerContainer = el;
}, "footerContainerRef"),
closeButtonRef: /* @__PURE__ */ __name(function closeButtonRef(el) {
this.closeButton = el ? el.$el : void 0;
}, "closeButtonRef"),
bindDocumentKeyDownListener: /* @__PURE__ */ __name(function bindDocumentKeyDownListener() {
if (!this.documentKeydownListener) {
this.documentKeydownListener = this.onKeydown;
document.addEventListener("keydown", this.documentKeydownListener);
}
}, "bindDocumentKeyDownListener"),
unbindDocumentKeyDownListener: /* @__PURE__ */ __name(function unbindDocumentKeyDownListener() {
if (this.documentKeydownListener) {
document.removeEventListener("keydown", this.documentKeydownListener);
this.documentKeydownListener = null;
}
}, "unbindDocumentKeyDownListener"),
bindOutsideClickListener: /* @__PURE__ */ __name(function bindOutsideClickListener() {
var _this = this;
if (!this.outsideClickListener) {
this.outsideClickListener = function(event) {
if (_this.isOutsideClicked(event)) {
_this.hide();
}
};
document.addEventListener("click", this.outsideClickListener);
}
}, "bindOutsideClickListener"),
unbindOutsideClickListener: /* @__PURE__ */ __name(function unbindOutsideClickListener() {
if (this.outsideClickListener) {
document.removeEventListener("click", this.outsideClickListener);
this.outsideClickListener = null;
}
}, "unbindOutsideClickListener"),
isOutsideClicked: /* @__PURE__ */ __name(function isOutsideClicked(event) {
return this.container && !this.container.contains(event.target);
}, "isOutsideClicked")
},
computed: {
fullScreen: /* @__PURE__ */ __name(function fullScreen() {
return this.position === "full";
}, "fullScreen"),
closeAriaLabel: /* @__PURE__ */ __name(function closeAriaLabel() {
return this.$primevue.config.locale.aria ? this.$primevue.config.locale.aria.close : void 0;
}, "closeAriaLabel")
},
directives: {
focustrap: FocusTrap
},
components: {
Button: script$3,
Portal: script$4,
TimesIcon: script$5
}
};
var _hoisted_1 = ["aria-modal"];
function render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_Button = resolveComponent("Button");
var _component_Portal = resolveComponent("Portal");
var _directive_focustrap = resolveDirective("focustrap");
return openBlock(), createBlock(_component_Portal, null, {
"default": withCtx(function() {
return [$data.containerVisible ? (openBlock(), createElementBlock("div", mergeProps({
key: 0,
ref: $options.maskRef,
onMousedown: _cache[0] || (_cache[0] = function() {
return $options.onMaskClick && $options.onMaskClick.apply($options, arguments);
}),
"class": _ctx.cx("mask"),
style: _ctx.sx("mask", true, {
position: _ctx.position,
modal: _ctx.modal
})
}, _ctx.ptm("mask")), [createVNode(Transition, mergeProps({
name: "p-drawer",
onEnter: $options.onEnter,
onAfterEnter: $options.onAfterEnter,
onBeforeLeave: $options.onBeforeLeave,
onLeave: $options.onLeave,
onAfterLeave: $options.onAfterLeave,
appear: ""
}, _ctx.ptm("transition")), {
"default": withCtx(function() {
return [_ctx.visible ? withDirectives((openBlock(), createElementBlock("div", mergeProps({
key: 0,
ref: $options.containerRef,
"class": _ctx.cx("root"),
style: _ctx.sx("root"),
role: "complementary",
"aria-modal": _ctx.modal
}, _ctx.ptmi("root")), [_ctx.$slots.container ? renderSlot(_ctx.$slots, "container", {
key: 0,
closeCallback: $options.hide
}) : (openBlock(), createElementBlock(Fragment, {
key: 1
}, [createBaseVNode("div", mergeProps({
ref: $options.headerContainerRef,
"class": _ctx.cx("header")
}, _ctx.ptm("header")), [renderSlot(_ctx.$slots, "header", {
"class": normalizeClass(_ctx.cx("title"))
}, function() {
return [_ctx.header ? (openBlock(), createElementBlock("div", mergeProps({
key: 0,
"class": _ctx.cx("title")
}, _ctx.ptm("title")), toDisplayString(_ctx.header), 17)) : createCommentVNode("", true)];
}), _ctx.showCloseIcon ? (openBlock(), createBlock(_component_Button, mergeProps({
key: 0,
ref: $options.closeButtonRef,
type: "button",
"class": _ctx.cx("pcCloseButton"),
"aria-label": $options.closeAriaLabel,
unstyled: _ctx.unstyled,
onClick: $options.hide
}, _ctx.closeButtonProps, {
pt: _ctx.ptm("pcCloseButton"),
"data-pc-group-section": "iconcontainer"
}), {
icon: withCtx(function(slotProps) {
return [renderSlot(_ctx.$slots, "closeicon", {}, function() {
return [(openBlock(), createBlock(resolveDynamicComponent(_ctx.closeIcon ? "span" : "TimesIcon"), mergeProps({
"class": [_ctx.closeIcon, slotProps["class"]]
}, _ctx.ptm("pcCloseButton")["icon"]), null, 16, ["class"]))];
})];
}),
_: 3
}, 16, ["class", "aria-label", "unstyled", "onClick", "pt"])) : createCommentVNode("", true)], 16), createBaseVNode("div", mergeProps({
ref: $options.contentRef,
"class": _ctx.cx("content")
}, _ctx.ptm("content")), [renderSlot(_ctx.$slots, "default")], 16), _ctx.$slots.footer ? (openBlock(), createElementBlock("div", mergeProps({
key: 0,
ref: $options.footerContainerRef,
"class": _ctx.cx("footer")
}, _ctx.ptm("footer")), [renderSlot(_ctx.$slots, "footer")], 16)) : createCommentVNode("", true)], 64))], 16, _hoisted_1)), [[_directive_focustrap]]) : createCommentVNode("", true)];
}),
_: 3
}, 16, ["onEnter", "onAfterEnter", "onBeforeLeave", "onLeave", "onAfterLeave"])], 16)) : createCommentVNode("", true)];
}),
_: 3
});
}
__name(render, "render");
script.render = render;
import { bV as commonjsGlobal, bW as getDefaultExportFromCjs, H as markRaw, bX as xtermExports, p as onMounted, bU as onUnmounted, d as defineComponent, bF as mergeModels, bz as useModel, o as openBlock, y as createBlock, z as withCtx, k as createVNode, by as BaseTerminal, j as unref, bi as electronAPI } from "./index-DIgj6hpb.js";
import { s as script } from "./index-C_ACzX5-.js";
var addonSerialize$2 = { exports: {} };
var addonSerialize = addonSerialize$2.exports;
(function(module, exports) {
@ -1016,9 +632,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
const electron = electronAPI();
const buffer = useTerminalBuffer();
let xterm = null;
const terminalCreated = /* @__PURE__ */ __name(({ terminal, useAutoSize }, root2) => {
const terminalCreated = /* @__PURE__ */ __name(({ terminal, useAutoSize }, root) => {
xterm = terminal;
useAutoSize({ root: root2, autoRows: true, autoCols: true });
useAutoSize({ root, autoRows: true, autoCols: true });
terminal.write(props.defaultMessage);
buffer.copyTo(terminal);
terminal.options.cursorBlink = false;
@ -1055,7 +671,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
}
});
export {
_sfc_main as _,
script as s
_sfc_main as _
};
//# sourceMappingURL=TerminalOutputDrawer-CKr7Br7O.js.map
//# sourceMappingURL=TerminalOutputDrawer-B_NZxAv8.js.map

File diff suppressed because one or more lines are too long

View File

@ -1,12 +1,7 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
<<<<<<<< HEAD:comfy/web/assets/UserSelectView-DkeVSFwW.js
import { d as defineComponent, aj as useUserStore, be as useRouter, U as ref, c as computed, p as onMounted, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, E as toDisplayString, k as createVNode, bf as withKeys, j as unref, bg as script, bh as script$1, bi as script$2, bj as script$3, a7 as createTextVNode, B as createCommentVNode, l as script$4 } from "./index-BsGgXmrT.js";
import { _ as _sfc_main$1 } from "./BaseViewTemplate-DDUNNAbV.js";
========
import { d as defineComponent, ak as useUserStore, bi as useRouter, T as ref, c as computed, p as onMounted, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, E as toDisplayString, k as createVNode, bj as withKeys, j as unref, bk as script, bl as script$1, bm as script$2, bn as script$3, a8 as createTextVNode, B as createCommentVNode, l as script$4 } from "./index-Bv0b06LE.js";
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BTbuZf5t.js";
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/UserSelectView-C703HOyO.js
import { d as defineComponent, av as useUserStore, br as useRouter, T as ref, c as computed, p as onMounted, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, E as toDisplayString, k as createVNode, bs as withKeys, j as unref, bt as script, bu as script$1, bv as script$2, bw as script$3, ak as createTextVNode, B as createCommentVNode, l as script$4 } from "./index-DIgj6hpb.js";
import { _ as _sfc_main$1 } from "./BaseViewTemplate-DaGOaycP.js";
const _hoisted_1 = {
id: "comfy-user-selection",
class: "min-w-84 relative rounded-lg bg-[var(--comfy-menu-bg)] p-5 px-10 shadow-lg"
@ -103,8 +98,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
export {
_sfc_main as default
};
<<<<<<<< HEAD:comfy/web/assets/UserSelectView-DkeVSFwW.js
//# sourceMappingURL=UserSelectView-DkeVSFwW.js.map
========
//# sourceMappingURL=UserSelectView-C703HOyO.js.map
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/UserSelectView-C703HOyO.js
//# sourceMappingURL=UserSelectView-ByltuBH7.js.map

View File

@ -1 +1 @@
{"version":3,"file":"UserSelectView-DkeVSFwW.js","sources":["../../src/views/UserSelectView.vue"],"sourcesContent":["<template>\n <BaseViewTemplate dark>\n <main\n id=\"comfy-user-selection\"\n class=\"min-w-84 relative rounded-lg bg-[var(--comfy-menu-bg)] p-5 px-10 shadow-lg\"\n >\n <h1 class=\"my-2.5 mb-7 font-normal\">ComfyUI</h1>\n <div class=\"flex w-full flex-col items-center\">\n <div class=\"flex w-full flex-col gap-2\">\n <label for=\"new-user-input\">{{ $t('userSelect.newUser') }}:</label>\n <InputText\n id=\"new-user-input\"\n v-model=\"newUsername\"\n :placeholder=\"$t('userSelect.enterUsername')\"\n @keyup.enter=\"login\"\n />\n </div>\n <Divider />\n <div class=\"flex w-full flex-col gap-2\">\n <label for=\"existing-user-select\"\n >{{ $t('userSelect.existingUser') }}:</label\n >\n <Select\n v-model=\"selectedUser\"\n class=\"w-full\"\n inputId=\"existing-user-select\"\n :options=\"userStore.users\"\n option-label=\"username\"\n :placeholder=\"$t('userSelect.selectUser')\"\n :disabled=\"createNewUser\"\n />\n <Message v-if=\"error\" severity=\"error\">{{ error }}</Message>\n </div>\n <footer class=\"mt-5\">\n <Button :label=\"$t('userSelect.next')\" @click=\"login\" />\n </footer>\n </div>\n </main>\n </BaseViewTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport Button from 'primevue/button'\nimport Divider from 'primevue/divider'\nimport InputText from 'primevue/inputtext'\nimport Message from 'primevue/message'\nimport Select from 'primevue/select'\nimport { computed, onMounted, ref } from 'vue'\nimport { useRouter } from 'vue-router'\n\nimport { User, useUserStore } from '@/stores/userStore'\nimport BaseViewTemplate from '@/views/templates/BaseViewTemplate.vue'\n\nconst userStore = useUserStore()\nconst router = useRouter()\n\nconst selectedUser = ref<User | null>(null)\nconst newUsername = ref('')\nconst loginError = ref('')\n\nconst createNewUser = computed(() => newUsername.value.trim() !== '')\nconst newUserExistsError = computed(() => {\n return userStore.users.find((user) => user.username === newUsername.value)\n ? `User \"${newUsername.value}\" already exists`\n : ''\n})\nconst error = computed(() => newUserExistsError.value || loginError.value)\n\nconst login = async () => {\n try {\n const user = createNewUser.value\n ? await userStore.createUser(newUsername.value)\n : selectedUser.value\n\n if (!user) {\n throw new Error('No user selected')\n }\n\n userStore.login(user)\n router.push('/')\n } catch (err) {\n loginError.value = err.message ?? JSON.stringify(err)\n }\n}\n\nonMounted(async () => {\n if (!userStore.initialized) {\n await userStore.initialize()\n }\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAqDA,UAAM,YAAY,aAAa;AAC/B,UAAM,SAAS,UAAU;AAEnB,UAAA,eAAe,IAAiB,IAAI;AACpC,UAAA,cAAc,IAAI,EAAE;AACpB,UAAA,aAAa,IAAI,EAAE;AAEzB,UAAM,gBAAgB,SAAS,MAAM,YAAY,MAAM,WAAW,EAAE;AAC9D,UAAA,qBAAqB,SAAS,MAAM;AACxC,aAAO,UAAU,MAAM,KAAK,CAAC,SAAS,KAAK,aAAa,YAAY,KAAK,IACrE,SAAS,YAAY,KAAK,qBAC1B;AAAA,IAAA,CACL;AACD,UAAM,QAAQ,SAAS,MAAM,mBAAmB,SAAS,WAAW,KAAK;AAEzE,UAAM,QAAQ,mCAAY;AACpB,UAAA;AACI,cAAA,OAAO,cAAc,QACvB,MAAM,UAAU,WAAW,YAAY,KAAK,IAC5C,aAAa;AAEjB,YAAI,CAAC,MAAM;AACH,gBAAA,IAAI,MAAM,kBAAkB;AAAA,QAAA;AAGpC,kBAAU,MAAM,IAAI;AACpB,eAAO,KAAK,GAAG;AAAA,eACR,KAAK;AACZ,mBAAW,QAAQ,IAAI,WAAW,KAAK,UAAU,GAAG;AAAA,MAAA;AAAA,IAExD,GAfc;AAiBd,cAAU,YAAY;AAChB,UAAA,CAAC,UAAU,aAAa;AAC1B,cAAM,UAAU,WAAW;AAAA,MAAA;AAAA,IAC7B,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
{"version":3,"file":"UserSelectView-ByltuBH7.js","sources":["../../src/views/UserSelectView.vue"],"sourcesContent":["<template>\n <BaseViewTemplate dark>\n <main\n id=\"comfy-user-selection\"\n class=\"min-w-84 relative rounded-lg bg-[var(--comfy-menu-bg)] p-5 px-10 shadow-lg\"\n >\n <h1 class=\"my-2.5 mb-7 font-normal\">ComfyUI</h1>\n <div class=\"flex w-full flex-col items-center\">\n <div class=\"flex w-full flex-col gap-2\">\n <label for=\"new-user-input\">{{ $t('userSelect.newUser') }}:</label>\n <InputText\n id=\"new-user-input\"\n v-model=\"newUsername\"\n :placeholder=\"$t('userSelect.enterUsername')\"\n @keyup.enter=\"login\"\n />\n </div>\n <Divider />\n <div class=\"flex w-full flex-col gap-2\">\n <label for=\"existing-user-select\"\n >{{ $t('userSelect.existingUser') }}:</label\n >\n <Select\n v-model=\"selectedUser\"\n class=\"w-full\"\n inputId=\"existing-user-select\"\n :options=\"userStore.users\"\n option-label=\"username\"\n :placeholder=\"$t('userSelect.selectUser')\"\n :disabled=\"createNewUser\"\n />\n <Message v-if=\"error\" severity=\"error\">{{ error }}</Message>\n </div>\n <footer class=\"mt-5\">\n <Button :label=\"$t('userSelect.next')\" @click=\"login\" />\n </footer>\n </div>\n </main>\n </BaseViewTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport Button from 'primevue/button'\nimport Divider from 'primevue/divider'\nimport InputText from 'primevue/inputtext'\nimport Message from 'primevue/message'\nimport Select from 'primevue/select'\nimport { computed, onMounted, ref } from 'vue'\nimport { useRouter } from 'vue-router'\n\nimport { User, useUserStore } from '@/stores/userStore'\nimport BaseViewTemplate from '@/views/templates/BaseViewTemplate.vue'\n\nconst userStore = useUserStore()\nconst router = useRouter()\n\nconst selectedUser = ref<User | null>(null)\nconst newUsername = ref('')\nconst loginError = ref('')\n\nconst createNewUser = computed(() => newUsername.value.trim() !== '')\nconst newUserExistsError = computed(() => {\n return userStore.users.find((user) => user.username === newUsername.value)\n ? `User \"${newUsername.value}\" already exists`\n : ''\n})\nconst error = computed(() => newUserExistsError.value || loginError.value)\n\nconst login = async () => {\n try {\n const user = createNewUser.value\n ? await userStore.createUser(newUsername.value)\n : selectedUser.value\n\n if (!user) {\n throw new Error('No user selected')\n }\n\n userStore.login(user)\n router.push('/')\n } catch (err) {\n loginError.value = err.message ?? JSON.stringify(err)\n }\n}\n\nonMounted(async () => {\n if (!userStore.initialized) {\n await userStore.initialize()\n }\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAqDA,UAAM,YAAY,aAAa;AAC/B,UAAM,SAAS,UAAU;AAEnB,UAAA,eAAe,IAAiB,IAAI;AACpC,UAAA,cAAc,IAAI,EAAE;AACpB,UAAA,aAAa,IAAI,EAAE;AAEzB,UAAM,gBAAgB,SAAS,MAAM,YAAY,MAAM,WAAW,EAAE;AAC9D,UAAA,qBAAqB,SAAS,MAAM;AACxC,aAAO,UAAU,MAAM,KAAK,CAAC,SAAS,KAAK,aAAa,YAAY,KAAK,IACrE,SAAS,YAAY,KAAK,qBAC1B;AAAA,IAAA,CACL;AACD,UAAM,QAAQ,SAAS,MAAM,mBAAmB,SAAS,WAAW,KAAK;AAEzE,UAAM,QAAQ,mCAAY;AACpB,UAAA;AACI,cAAA,OAAO,cAAc,QACvB,MAAM,UAAU,WAAW,YAAY,KAAK,IAC5C,aAAa;AAEjB,YAAI,CAAC,MAAM;AACH,gBAAA,IAAI,MAAM,kBAAkB;AAAA,QAAA;AAGpC,kBAAU,MAAM,IAAI;AACpB,eAAO,KAAK,GAAG;AAAA,eACR,KAAK;AACZ,mBAAW,QAAQ,IAAI,WAAW,KAAK,UAAU,GAAG;AAAA,MAAA;AAAA,IAExD,GAfc;AAiBd,cAAU,YAAY;AAChB,UAAA,CAAC,UAAU,aAAa;AAC1B,cAAM,UAAU,WAAW;AAAA,MAAA;AAAA,IAC7B,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}

View File

@ -1,12 +1,7 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
<<<<<<<< HEAD:comfy/web/assets/WelcomeView-CXVMqRFA.js
import { d as defineComponent, be as useRouter, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, E as toDisplayString, k as createVNode, j as unref, l as script, _ as _export_sfc } from "./index-BsGgXmrT.js";
import { _ as _sfc_main$1 } from "./BaseViewTemplate-DDUNNAbV.js";
========
import { d as defineComponent, bi as useRouter, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, E as toDisplayString, k as createVNode, j as unref, l as script, _ as _export_sfc } from "./index-Bv0b06LE.js";
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BTbuZf5t.js";
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/WelcomeView-DIFvbWc2.js
import { d as defineComponent, br as useRouter, o as openBlock, y as createBlock, z as withCtx, m as createBaseVNode, E as toDisplayString, k as createVNode, j as unref, l as script, _ as _export_sfc } from "./index-DIgj6hpb.js";
import { _ as _sfc_main$1 } from "./BaseViewTemplate-DaGOaycP.js";
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 _sfc_main = /* @__PURE__ */ defineComponent({
@ -41,8 +36,4 @@ const WelcomeView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-
export {
WelcomeView as default
};
<<<<<<<< HEAD:comfy/web/assets/WelcomeView-CXVMqRFA.js
//# sourceMappingURL=WelcomeView-CXVMqRFA.js.map
========
//# sourceMappingURL=WelcomeView-DIFvbWc2.js.map
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/WelcomeView-DIFvbWc2.js
//# sourceMappingURL=WelcomeView-bWjYcpdL.js.map

View File

@ -1 +1 @@
{"version":3,"file":"WelcomeView-CXVMqRFA.js","sources":["../../src/views/WelcomeView.vue"],"sourcesContent":["<template>\n <BaseViewTemplate dark>\n <div class=\"flex flex-col items-center justify-center gap-8 p-8\">\n <!-- Header -->\n <h1 class=\"animated-gradient-text text-glow select-none\">\n {{ $t('welcome.title') }}\n </h1>\n\n <!-- Get Started Button -->\n <Button\n :label=\"$t('welcome.getStarted')\"\n icon=\"pi pi-arrow-right\"\n iconPos=\"right\"\n size=\"large\"\n rounded\n @click=\"navigateTo('/install')\"\n class=\"p-4 text-lg fade-in-up\"\n />\n </div>\n </BaseViewTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport Button from 'primevue/button'\nimport { useRouter } from 'vue-router'\n\nimport BaseViewTemplate from '@/views/templates/BaseViewTemplate.vue'\n\nconst router = useRouter()\nconst navigateTo = (path: string) => {\n router.push(path)\n}\n</script>\n\n<style scoped>\n.animated-gradient-text {\n @apply font-bold;\n font-size: clamp(2rem, 8vw, 4rem);\n background: linear-gradient(to right, #12c2e9, #c471ed, #f64f59, #12c2e9);\n background-size: 300% auto;\n background-clip: text;\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n animation: gradient 8s linear infinite;\n}\n\n.text-glow {\n filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.3));\n}\n\n@keyframes gradient {\n 0% {\n background-position: 0% center;\n }\n\n 100% {\n background-position: 300% center;\n }\n}\n\n.fade-in-up {\n animation: fadeInUp 1.5s ease-out;\n animation-fill-mode: both;\n}\n\n@keyframes fadeInUp {\n 0% {\n opacity: 0;\n transform: translateY(20px);\n }\n\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;AA4BA,UAAM,SAAS,UAAU;AACnB,UAAA,aAAa,wBAAC,SAAiB;AACnC,aAAO,KAAK,IAAI;AAAA,IAClB,GAFmB;;;;;;;;;;;;;;;;;;;;;;;"}
{"version":3,"file":"WelcomeView-bWjYcpdL.js","sources":["../../src/views/WelcomeView.vue"],"sourcesContent":["<template>\n <BaseViewTemplate dark>\n <div class=\"flex flex-col items-center justify-center gap-8 p-8\">\n <!-- Header -->\n <h1 class=\"animated-gradient-text text-glow select-none\">\n {{ $t('welcome.title') }}\n </h1>\n\n <!-- Get Started Button -->\n <Button\n :label=\"$t('welcome.getStarted')\"\n icon=\"pi pi-arrow-right\"\n iconPos=\"right\"\n size=\"large\"\n rounded\n @click=\"navigateTo('/install')\"\n class=\"p-4 text-lg fade-in-up\"\n />\n </div>\n </BaseViewTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport Button from 'primevue/button'\nimport { useRouter } from 'vue-router'\n\nimport BaseViewTemplate from '@/views/templates/BaseViewTemplate.vue'\n\nconst router = useRouter()\nconst navigateTo = (path: string) => {\n router.push(path)\n}\n</script>\n\n<style scoped>\n.animated-gradient-text {\n @apply font-bold;\n font-size: clamp(2rem, 8vw, 4rem);\n background: linear-gradient(to right, #12c2e9, #c471ed, #f64f59, #12c2e9);\n background-size: 300% auto;\n background-clip: text;\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n animation: gradient 8s linear infinite;\n}\n\n.text-glow {\n filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.3));\n}\n\n@keyframes gradient {\n 0% {\n background-position: 0% center;\n }\n\n 100% {\n background-position: 300% center;\n }\n}\n\n.fade-in-up {\n animation: fadeInUp 1.5s ease-out;\n animation-fill-mode: both;\n}\n\n@keyframes fadeInUp {\n 0% {\n opacity: 0;\n transform: translateY(20px);\n }\n\n 100% {\n opacity: 1;\n transform: translateY(0);\n }\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;AA4BA,UAAM,SAAS,UAAU;AACnB,UAAA,aAAa,wBAAC,SAAiB;AACnC,aAAO,KAAK,IAAI;AAAA,IAClB,GAFmB;;;;;;;;;;;;;;;;;;;;;;;"}

149
comfy/web/assets/index-A7qL4fzl.css generated vendored
View File

@ -1,149 +0,0 @@
.comfy-group-manage {
background: var(--bg-color);
color: var(--fg-color);
padding: 0;
font-family: Arial, Helvetica, sans-serif;
border-color: black;
margin: 20vh auto;
max-height: 60vh;
}
.comfy-group-manage-outer {
max-height: 60vh;
min-width: 500px;
display: flex;
flex-direction: column;
}
.comfy-group-manage-outer > header {
display: flex;
align-items: center;
gap: 10px;
justify-content: space-between;
background: var(--comfy-menu-bg);
padding: 15px 20px;
}
.comfy-group-manage-outer > header select {
background: var(--comfy-input-bg);
border: 1px solid var(--border-color);
color: var(--input-text);
padding: 5px 10px;
border-radius: 5px;
}
.comfy-group-manage h2 {
margin: 0;
font-weight: normal;
}
.comfy-group-manage main {
display: flex;
overflow: hidden;
}
.comfy-group-manage .drag-handle {
font-weight: bold;
}
.comfy-group-manage-list {
border-right: 1px solid var(--comfy-menu-bg);
}
.comfy-group-manage-list ul {
margin: 40px 0 0;
padding: 0;
list-style: none;
}
.comfy-group-manage-list-items {
max-height: calc(100% - 40px);
overflow-y: scroll;
overflow-x: hidden;
}
.comfy-group-manage-list li {
display: flex;
padding: 10px 20px 10px 10px;
cursor: pointer;
align-items: center;
gap: 5px;
}
.comfy-group-manage-list div {
display: flex;
flex-direction: column;
}
.comfy-group-manage-list li:not(.selected):hover div {
text-decoration: underline;
}
.comfy-group-manage-list li.selected {
background: var(--border-color);
}
.comfy-group-manage-list li span {
opacity: 0.7;
font-size: smaller;
}
.comfy-group-manage-node {
flex: auto;
background: var(--border-color);
display: flex;
flex-direction: column;
}
.comfy-group-manage-node > div {
overflow: auto;
}
.comfy-group-manage-node header {
display: flex;
background: var(--bg-color);
height: 40px;
}
.comfy-group-manage-node header a {
text-align: center;
flex: auto;
border-right: 1px solid var(--comfy-menu-bg);
border-bottom: 1px solid var(--comfy-menu-bg);
padding: 10px;
cursor: pointer;
font-size: 15px;
}
.comfy-group-manage-node header a:last-child {
border-right: none;
}
.comfy-group-manage-node header a:not(.active):hover {
text-decoration: underline;
}
.comfy-group-manage-node header a.active {
background: var(--border-color);
border-bottom: none;
}
.comfy-group-manage-node-page {
display: none;
overflow: auto;
}
.comfy-group-manage-node-page.active {
display: block;
}
.comfy-group-manage-node-page div {
padding: 10px;
display: flex;
align-items: center;
gap: 10px;
}
.comfy-group-manage-node-page input {
border: none;
color: var(--input-text);
background: var(--comfy-input-bg);
padding: 5px 10px;
}
.comfy-group-manage-node-page input[type="text"] {
flex: auto;
}
.comfy-group-manage-node-page label {
display: flex;
gap: 5px;
align-items: center;
}
.comfy-group-manage footer {
border-top: 1px solid var(--comfy-menu-bg);
padding: 10px;
display: flex;
gap: 10px;
}
.comfy-group-manage footer button {
font-size: 14px;
padding: 5px 10px;
border-radius: 0;
}
.comfy-group-manage footer button:first-child {
margin-right: auto;
}

166
comfy/web/assets/index-B8O-6_L7.css generated vendored Normal file
View File

@ -0,0 +1,166 @@
.comfy-group-manage {
background: var(--bg-color);
color: var(--fg-color);
padding: 0;
font-family: Arial, Helvetica, sans-serif;
border-color: black;
margin: 20vh auto;
max-height: 60vh;
}
.comfy-group-manage-outer {
max-height: 60vh;
min-width: 500px;
display: flex;
flex-direction: column;
}
.comfy-group-manage-outer > header {
display: flex;
align-items: center;
gap: 10px;
justify-content: space-between;
background: var(--comfy-menu-bg);
padding: 15px 20px;
}
.comfy-group-manage-outer > header select {
background: var(--comfy-input-bg);
border: 1px solid var(--border-color);
color: var(--input-text);
padding: 5px 10px;
border-radius: 5px;
}
.comfy-group-manage h2 {
margin: 0;
font-weight: normal;
}
.comfy-group-manage main {
display: flex;
overflow: hidden;
}
.comfy-group-manage .drag-handle {
font-weight: bold;
}
.comfy-group-manage-list {
border-right: 1px solid var(--comfy-menu-bg);
}
.comfy-group-manage-list ul {
margin: 40px 0 0;
padding: 0;
list-style: none;
}
.comfy-group-manage-list-items {
max-height: calc(100% - 40px);
overflow-y: scroll;
overflow-x: hidden;
}
.comfy-group-manage-list li {
display: flex;
padding: 10px 20px 10px 10px;
cursor: pointer;
align-items: center;
gap: 5px;
}
.comfy-group-manage-list div {
display: flex;
flex-direction: column;
}
.comfy-group-manage-list li:not(.selected):hover div {
text-decoration: underline;
}
.comfy-group-manage-list li.selected {
background: var(--border-color);
}
.comfy-group-manage-list li span {
opacity: 0.7;
font-size: smaller;
}
.comfy-group-manage-node {
flex: auto;
background: var(--border-color);
display: flex;
flex-direction: column;
}
.comfy-group-manage-node > div {
overflow: auto;
}
.comfy-group-manage-node header {
display: flex;
background: var(--bg-color);
height: 40px;
}
.comfy-group-manage-node header a {
text-align: center;
flex: auto;
border-right: 1px solid var(--comfy-menu-bg);
border-bottom: 1px solid var(--comfy-menu-bg);
padding: 10px;
cursor: pointer;
font-size: 15px;
}
.comfy-group-manage-node header a:last-child {
border-right: none;
}
.comfy-group-manage-node header a:not(.active):hover {
text-decoration: underline;
}
.comfy-group-manage-node header a.active {
background: var(--border-color);
border-bottom: none;
}
.comfy-group-manage-node-page {
display: none;
overflow: auto;
}
.comfy-group-manage-node-page.active {
display: block;
}
.comfy-group-manage-node-page div {
padding: 10px;
display: flex;
align-items: center;
gap: 10px;
}
.comfy-group-manage-node-page input {
border: none;
color: var(--input-text);
background: var(--comfy-input-bg);
padding: 5px 10px;
}
.comfy-group-manage-node-page input[type="text"] {
flex: auto;
}
.comfy-group-manage-node-page label {
display: flex;
gap: 5px;
align-items: center;
}
.comfy-group-manage footer {
border-top: 1px solid var(--comfy-menu-bg);
padding: 10px;
display: flex;
gap: 10px;
}
.comfy-group-manage footer button {
font-size: 14px;
padding: 5px 10px;
border-radius: 0;
}
.comfy-group-manage footer button:first-child {
margin-right: auto;
}
.spinner[data-v-852efd73] {
width: 50px;
height: 50px;
border: 4px solid #f3f3f3;
border-top: 4px solid #3498db;
border-radius: 50%;
animation: spin-852efd73 1s linear infinite;
}
@keyframes spin-852efd73 {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}

View File

@ -1,6 +1,6 @@
var __defProp = Object.defineProperty;
var __name = (target, value2) => __defProp(target, "name", { value: value2, configurable: true });
import { bt as BaseStyle, bu as script$6, o as openBlock, f as createElementBlock, as as mergeProps, cD as findIndexInList, b$ as find, bD as resolveComponent, y as createBlock, C as resolveDynamicComponent, z as withCtx, m as createBaseVNode, E as toDisplayString, A as renderSlot, B as createCommentVNode, ai as normalizeClass, bI as findSingle, F as Fragment, bE as Transition, i as withDirectives, v as vShow, bN as UniqueComponentId } from "./index-BsGgXmrT.js";
import { ce as BaseStyle, cf as script$6, o as openBlock, f as createElementBlock, aE as mergeProps, dk as findIndexInList, cD as find, co as resolveComponent, y as createBlock, C as resolveDynamicComponent, z as withCtx, m as createBaseVNode, E as toDisplayString, A as renderSlot, B as createCommentVNode, Z as normalizeClass, cg as findSingle, F as Fragment, c8 as Transition, i as withDirectives, v as vShow, cm as UniqueComponentId } from "./index-DIgj6hpb.js";
var classes$4 = {
root: /* @__PURE__ */ __name(function root(_ref) {
var instance = _ref.instance;
@ -536,4 +536,4 @@ export {
script as d,
script$4 as s
};
//# sourceMappingURL=index-DC_-jkme.js.map
//# sourceMappingURL=index-BKScv1mm.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
import { bG as BaseStyle, bX as script$5, o as openBlock, f as createElementBlock, at as mergeProps, m as createBaseVNode, bH as script$6, cF as script$7, cG as script$8, cl as script$9, bO as Ripple, r as resolveDirective, y as createBlock, C as resolveDynamicComponent, F as Fragment, E as toDisplayString, cx as normalizeProps, i as withDirectives, B as createCommentVNode, dg as ToastEventBus, bZ as ZIndex, ci as isEmpty, c8 as setAttribute, ca as script$a, bR as resolveComponent, z as withCtx, k as createVNode, dh as TransitionGroup, D as renderList } from "./index-Bv0b06LE.js";
import { ce as BaseStyle, cu as script$5, o as openBlock, f as createElementBlock, aE as mergeProps, m as createBaseVNode, cf as script$6, db as script$7, dc as script$8, cU as script$9, cl as Ripple, r as resolveDirective, y as createBlock, C as resolveDynamicComponent, F as Fragment, E as toDisplayString, d3 as normalizeProps, i as withDirectives, B as createCommentVNode, dG as ToastEventBus, cw as ZIndex, cR as isEmpty, cH as setAttribute, cJ as script$a, co as resolveComponent, z as withCtx, k as createVNode, dH as TransitionGroup, D as renderList } from "./index-DIgj6hpb.js";
function _typeof$2(o) {
"@babel/helpers - typeof";
return _typeof$2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) {
@ -615,4 +615,4 @@ export {
script$4 as b,
script as s
};
//# sourceMappingURL=index-A_bXPJCN.js.map
//# sourceMappingURL=index-CE2hpomb.js.map

1
comfy/web/assets/index-CE2hpomb.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

392
comfy/web/assets/index-C_ACzX5-.js generated vendored Normal file
View File

@ -0,0 +1,392 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
import { ce as BaseStyle, cf as script$2, cw as ZIndex, cr as addClass, ci as focus, d4 as blockBodyScroll, d6 as unblockBodyScroll, d7 as FocusTrap, l as script$3, cJ as script$4, cU as script$5, co as resolveComponent, r as resolveDirective, o as openBlock, y as createBlock, z as withCtx, f as createElementBlock, aE as mergeProps, k as createVNode, c8 as Transition, i as withDirectives, A as renderSlot, F as Fragment, m as createBaseVNode, Z as normalizeClass, E as toDisplayString, B as createCommentVNode, C as resolveDynamicComponent } from "./index-DIgj6hpb.js";
var theme = /* @__PURE__ */ __name(function theme2(_ref) {
var dt = _ref.dt;
return "\n.p-drawer {\n display: flex;\n flex-direction: column;\n transform: translate3d(0px, 0px, 0px);\n position: relative;\n transition: transform 0.3s;\n background: ".concat(dt("drawer.background"), ";\n color: ").concat(dt("drawer.color"), ";\n border: 1px solid ").concat(dt("drawer.border.color"), ";\n box-shadow: ").concat(dt("drawer.shadow"), ";\n}\n\n.p-drawer-content {\n overflow-y: auto;\n flex-grow: 1;\n padding: ").concat(dt("drawer.content.padding"), ";\n}\n\n.p-drawer-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-shrink: 0;\n padding: ").concat(dt("drawer.header.padding"), ";\n}\n\n.p-drawer-footer {\n padding: ").concat(dt("drawer.footer.padding"), ";\n}\n\n.p-drawer-title {\n font-weight: ").concat(dt("drawer.title.font.weight"), ";\n font-size: ").concat(dt("drawer.title.font.size"), ";\n}\n\n.p-drawer-full .p-drawer {\n transition: none;\n transform: none;\n width: 100vw !important;\n height: 100vh !important;\n max-height: 100%;\n top: 0px !important;\n left: 0px !important;\n border-width: 1px;\n}\n\n.p-drawer-left .p-drawer-enter-from,\n.p-drawer-left .p-drawer-leave-to {\n transform: translateX(-100%);\n}\n\n.p-drawer-right .p-drawer-enter-from,\n.p-drawer-right .p-drawer-leave-to {\n transform: translateX(100%);\n}\n\n.p-drawer-top .p-drawer-enter-from,\n.p-drawer-top .p-drawer-leave-to {\n transform: translateY(-100%);\n}\n\n.p-drawer-bottom .p-drawer-enter-from,\n.p-drawer-bottom .p-drawer-leave-to {\n transform: translateY(100%);\n}\n\n.p-drawer-full .p-drawer-enter-from,\n.p-drawer-full .p-drawer-leave-to {\n opacity: 0;\n}\n\n.p-drawer-full .p-drawer-enter-active,\n.p-drawer-full .p-drawer-leave-active {\n transition: opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1);\n}\n\n.p-drawer-left .p-drawer {\n width: 20rem;\n height: 100%;\n border-inline-end-width: 1px;\n}\n\n.p-drawer-right .p-drawer {\n width: 20rem;\n height: 100%;\n border-inline-start-width: 1px;\n}\n\n.p-drawer-top .p-drawer {\n height: 10rem;\n width: 100%;\n border-block-end-width: 1px;\n}\n\n.p-drawer-bottom .p-drawer {\n height: 10rem;\n width: 100%;\n border-block-start-width: 1px;\n}\n\n.p-drawer-left .p-drawer-content,\n.p-drawer-right .p-drawer-content,\n.p-drawer-top .p-drawer-content,\n.p-drawer-bottom .p-drawer-content {\n width: 100%;\n height: 100%;\n}\n\n.p-drawer-open {\n display: flex;\n}\n\n.p-drawer-mask:dir(rtl) {\n flex-direction: row-reverse;\n}\n");
}, "theme");
var inlineStyles = {
mask: /* @__PURE__ */ __name(function mask(_ref2) {
var position = _ref2.position, modal = _ref2.modal;
return {
position: "fixed",
height: "100%",
width: "100%",
left: 0,
top: 0,
display: "flex",
justifyContent: position === "left" ? "flex-start" : position === "right" ? "flex-end" : "center",
alignItems: position === "top" ? "flex-start" : position === "bottom" ? "flex-end" : "center",
pointerEvents: modal ? "auto" : "none"
};
}, "mask"),
root: {
pointerEvents: "auto"
}
};
var classes = {
mask: /* @__PURE__ */ __name(function mask2(_ref3) {
var instance = _ref3.instance, props = _ref3.props;
var positions = ["left", "right", "top", "bottom"];
var pos = positions.find(function(item) {
return item === props.position;
});
return ["p-drawer-mask", {
"p-overlay-mask p-overlay-mask-enter": props.modal,
"p-drawer-open": instance.containerVisible,
"p-drawer-full": instance.fullScreen
}, pos ? "p-drawer-".concat(pos) : ""];
}, "mask"),
root: /* @__PURE__ */ __name(function root(_ref4) {
var instance = _ref4.instance;
return ["p-drawer p-component", {
"p-drawer-full": instance.fullScreen
}];
}, "root"),
header: "p-drawer-header",
title: "p-drawer-title",
pcCloseButton: "p-drawer-close-button",
content: "p-drawer-content",
footer: "p-drawer-footer"
};
var DrawerStyle = BaseStyle.extend({
name: "drawer",
theme,
classes,
inlineStyles
});
var script$1 = {
name: "BaseDrawer",
"extends": script$2,
props: {
visible: {
type: Boolean,
"default": false
},
position: {
type: String,
"default": "left"
},
header: {
type: null,
"default": null
},
baseZIndex: {
type: Number,
"default": 0
},
autoZIndex: {
type: Boolean,
"default": true
},
dismissable: {
type: Boolean,
"default": true
},
showCloseIcon: {
type: Boolean,
"default": true
},
closeButtonProps: {
type: Object,
"default": /* @__PURE__ */ __name(function _default() {
return {
severity: "secondary",
text: true,
rounded: true
};
}, "_default")
},
closeIcon: {
type: String,
"default": void 0
},
modal: {
type: Boolean,
"default": true
},
blockScroll: {
type: Boolean,
"default": false
}
},
style: DrawerStyle,
provide: /* @__PURE__ */ __name(function provide() {
return {
$pcDrawer: this,
$parentInstance: this
};
}, "provide")
};
var script = {
name: "Drawer",
"extends": script$1,
inheritAttrs: false,
emits: ["update:visible", "show", "after-show", "hide", "after-hide"],
data: /* @__PURE__ */ __name(function data() {
return {
containerVisible: this.visible
};
}, "data"),
container: null,
mask: null,
content: null,
headerContainer: null,
footerContainer: null,
closeButton: null,
outsideClickListener: null,
documentKeydownListener: null,
watch: {
dismissable: /* @__PURE__ */ __name(function dismissable(newValue) {
if (newValue) {
this.enableDocumentSettings();
} else {
this.disableDocumentSettings();
}
}, "dismissable")
},
updated: /* @__PURE__ */ __name(function updated() {
if (this.visible) {
this.containerVisible = this.visible;
}
}, "updated"),
beforeUnmount: /* @__PURE__ */ __name(function beforeUnmount() {
this.disableDocumentSettings();
if (this.mask && this.autoZIndex) {
ZIndex.clear(this.mask);
}
this.container = null;
this.mask = null;
}, "beforeUnmount"),
methods: {
hide: /* @__PURE__ */ __name(function hide() {
this.$emit("update:visible", false);
}, "hide"),
onEnter: /* @__PURE__ */ __name(function onEnter() {
this.$emit("show");
this.focus();
this.bindDocumentKeyDownListener();
if (this.autoZIndex) {
ZIndex.set("modal", this.mask, this.baseZIndex || this.$primevue.config.zIndex.modal);
}
}, "onEnter"),
onAfterEnter: /* @__PURE__ */ __name(function onAfterEnter() {
this.enableDocumentSettings();
this.$emit("after-show");
}, "onAfterEnter"),
onBeforeLeave: /* @__PURE__ */ __name(function onBeforeLeave() {
if (this.modal) {
!this.isUnstyled && addClass(this.mask, "p-overlay-mask-leave");
}
}, "onBeforeLeave"),
onLeave: /* @__PURE__ */ __name(function onLeave() {
this.$emit("hide");
}, "onLeave"),
onAfterLeave: /* @__PURE__ */ __name(function onAfterLeave() {
if (this.autoZIndex) {
ZIndex.clear(this.mask);
}
this.unbindDocumentKeyDownListener();
this.containerVisible = false;
this.disableDocumentSettings();
this.$emit("after-hide");
}, "onAfterLeave"),
onMaskClick: /* @__PURE__ */ __name(function onMaskClick(event) {
if (this.dismissable && this.modal && this.mask === event.target) {
this.hide();
}
}, "onMaskClick"),
focus: /* @__PURE__ */ __name(function focus$1() {
var findFocusableElement = /* @__PURE__ */ __name(function findFocusableElement2(container) {
return container && container.querySelector("[autofocus]");
}, "findFocusableElement");
var focusTarget = this.$slots.header && findFocusableElement(this.headerContainer);
if (!focusTarget) {
focusTarget = this.$slots["default"] && findFocusableElement(this.container);
if (!focusTarget) {
focusTarget = this.$slots.footer && findFocusableElement(this.footerContainer);
if (!focusTarget) {
focusTarget = this.closeButton;
}
}
}
focusTarget && focus(focusTarget);
}, "focus$1"),
enableDocumentSettings: /* @__PURE__ */ __name(function enableDocumentSettings() {
if (this.dismissable && !this.modal) {
this.bindOutsideClickListener();
}
if (this.blockScroll) {
blockBodyScroll();
}
}, "enableDocumentSettings"),
disableDocumentSettings: /* @__PURE__ */ __name(function disableDocumentSettings() {
this.unbindOutsideClickListener();
if (this.blockScroll) {
unblockBodyScroll();
}
}, "disableDocumentSettings"),
onKeydown: /* @__PURE__ */ __name(function onKeydown(event) {
if (event.code === "Escape") {
this.hide();
}
}, "onKeydown"),
containerRef: /* @__PURE__ */ __name(function containerRef(el) {
this.container = el;
}, "containerRef"),
maskRef: /* @__PURE__ */ __name(function maskRef(el) {
this.mask = el;
}, "maskRef"),
contentRef: /* @__PURE__ */ __name(function contentRef(el) {
this.content = el;
}, "contentRef"),
headerContainerRef: /* @__PURE__ */ __name(function headerContainerRef(el) {
this.headerContainer = el;
}, "headerContainerRef"),
footerContainerRef: /* @__PURE__ */ __name(function footerContainerRef(el) {
this.footerContainer = el;
}, "footerContainerRef"),
closeButtonRef: /* @__PURE__ */ __name(function closeButtonRef(el) {
this.closeButton = el ? el.$el : void 0;
}, "closeButtonRef"),
bindDocumentKeyDownListener: /* @__PURE__ */ __name(function bindDocumentKeyDownListener() {
if (!this.documentKeydownListener) {
this.documentKeydownListener = this.onKeydown;
document.addEventListener("keydown", this.documentKeydownListener);
}
}, "bindDocumentKeyDownListener"),
unbindDocumentKeyDownListener: /* @__PURE__ */ __name(function unbindDocumentKeyDownListener() {
if (this.documentKeydownListener) {
document.removeEventListener("keydown", this.documentKeydownListener);
this.documentKeydownListener = null;
}
}, "unbindDocumentKeyDownListener"),
bindOutsideClickListener: /* @__PURE__ */ __name(function bindOutsideClickListener() {
var _this = this;
if (!this.outsideClickListener) {
this.outsideClickListener = function(event) {
if (_this.isOutsideClicked(event)) {
_this.hide();
}
};
document.addEventListener("click", this.outsideClickListener);
}
}, "bindOutsideClickListener"),
unbindOutsideClickListener: /* @__PURE__ */ __name(function unbindOutsideClickListener() {
if (this.outsideClickListener) {
document.removeEventListener("click", this.outsideClickListener);
this.outsideClickListener = null;
}
}, "unbindOutsideClickListener"),
isOutsideClicked: /* @__PURE__ */ __name(function isOutsideClicked(event) {
return this.container && !this.container.contains(event.target);
}, "isOutsideClicked")
},
computed: {
fullScreen: /* @__PURE__ */ __name(function fullScreen() {
return this.position === "full";
}, "fullScreen"),
closeAriaLabel: /* @__PURE__ */ __name(function closeAriaLabel() {
return this.$primevue.config.locale.aria ? this.$primevue.config.locale.aria.close : void 0;
}, "closeAriaLabel")
},
directives: {
focustrap: FocusTrap
},
components: {
Button: script$3,
Portal: script$4,
TimesIcon: script$5
}
};
var _hoisted_1 = ["aria-modal"];
function render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_Button = resolveComponent("Button");
var _component_Portal = resolveComponent("Portal");
var _directive_focustrap = resolveDirective("focustrap");
return openBlock(), createBlock(_component_Portal, null, {
"default": withCtx(function() {
return [$data.containerVisible ? (openBlock(), createElementBlock("div", mergeProps({
key: 0,
ref: $options.maskRef,
onMousedown: _cache[0] || (_cache[0] = function() {
return $options.onMaskClick && $options.onMaskClick.apply($options, arguments);
}),
"class": _ctx.cx("mask"),
style: _ctx.sx("mask", true, {
position: _ctx.position,
modal: _ctx.modal
})
}, _ctx.ptm("mask")), [createVNode(Transition, mergeProps({
name: "p-drawer",
onEnter: $options.onEnter,
onAfterEnter: $options.onAfterEnter,
onBeforeLeave: $options.onBeforeLeave,
onLeave: $options.onLeave,
onAfterLeave: $options.onAfterLeave,
appear: ""
}, _ctx.ptm("transition")), {
"default": withCtx(function() {
return [_ctx.visible ? withDirectives((openBlock(), createElementBlock("div", mergeProps({
key: 0,
ref: $options.containerRef,
"class": _ctx.cx("root"),
style: _ctx.sx("root"),
role: "complementary",
"aria-modal": _ctx.modal
}, _ctx.ptmi("root")), [_ctx.$slots.container ? renderSlot(_ctx.$slots, "container", {
key: 0,
closeCallback: $options.hide
}) : (openBlock(), createElementBlock(Fragment, {
key: 1
}, [createBaseVNode("div", mergeProps({
ref: $options.headerContainerRef,
"class": _ctx.cx("header")
}, _ctx.ptm("header")), [renderSlot(_ctx.$slots, "header", {
"class": normalizeClass(_ctx.cx("title"))
}, function() {
return [_ctx.header ? (openBlock(), createElementBlock("div", mergeProps({
key: 0,
"class": _ctx.cx("title")
}, _ctx.ptm("title")), toDisplayString(_ctx.header), 17)) : createCommentVNode("", true)];
}), _ctx.showCloseIcon ? (openBlock(), createBlock(_component_Button, mergeProps({
key: 0,
ref: $options.closeButtonRef,
type: "button",
"class": _ctx.cx("pcCloseButton"),
"aria-label": $options.closeAriaLabel,
unstyled: _ctx.unstyled,
onClick: $options.hide
}, _ctx.closeButtonProps, {
pt: _ctx.ptm("pcCloseButton"),
"data-pc-group-section": "iconcontainer"
}), {
icon: withCtx(function(slotProps) {
return [renderSlot(_ctx.$slots, "closeicon", {}, function() {
return [(openBlock(), createBlock(resolveDynamicComponent(_ctx.closeIcon ? "span" : "TimesIcon"), mergeProps({
"class": [_ctx.closeIcon, slotProps["class"]]
}, _ctx.ptm("pcCloseButton")["icon"]), null, 16, ["class"]))];
})];
}),
_: 3
}, 16, ["class", "aria-label", "unstyled", "onClick", "pt"])) : createCommentVNode("", true)], 16), createBaseVNode("div", mergeProps({
ref: $options.contentRef,
"class": _ctx.cx("content")
}, _ctx.ptm("content")), [renderSlot(_ctx.$slots, "default")], 16), _ctx.$slots.footer ? (openBlock(), createElementBlock("div", mergeProps({
key: 0,
ref: $options.footerContainerRef,
"class": _ctx.cx("footer")
}, _ctx.ptm("footer")), [renderSlot(_ctx.$slots, "footer")], 16)) : createCommentVNode("", true)], 64))], 16, _hoisted_1)), [[_directive_focustrap]]) : createCommentVNode("", true)];
}),
_: 3
}, 16, ["onEnter", "onAfterEnter", "onBeforeLeave", "onLeave", "onAfterLeave"])], 16)) : createCommentVNode("", true)];
}),
_: 3
});
}
__name(render, "render");
script.render = render;
export {
script as s
};
//# sourceMappingURL=index-C_ACzX5-.js.map

1
comfy/web/assets/index-C_ACzX5-.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

1
comfy/web/assets/index-CpICyVZm.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,12 +1,7 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
<<<<<<<< HEAD:comfy/web/assets/index-Br6dw1F6.js
import { bt as BaseStyle, bu as script$s, bT as script$t, o as openBlock, f as createElementBlock, as as mergeProps, m as createBaseVNode, E as toDisplayString, bM as Ripple, r as resolveDirective, i as withDirectives, y as createBlock, C as resolveDynamicComponent, bi as script$u, bD as resolveComponent, ai as normalizeClass, ci as createSlots, z as withCtx, aU as script$v, c9 as script$w, F as Fragment, D as renderList, a7 as createTextVNode, c3 as setAttribute, cp as normalizeProps, A as renderSlot, B as createCommentVNode, bU as script$x, c8 as equals, cu as script$y, br as script$z, cy as getFirstFocusableElement, c2 as OverlayEventBus, cO as getVNodeProp, c6 as resolveFieldData, dl as invokeElementMethod, bJ as getAttribute, cP as getNextElementSibling, bZ as getOuterWidth, cQ as getPreviousElementSibling, l as script$A, bL as script$B, bO as script$C, bC as script$E, c7 as isNotEmpty, ar as withModifiers, c$ as getOuterHeight, bN as UniqueComponentId, cS as _default, bv as ZIndex, bx as focus, bV as addStyle, b_ as absolutePosition, bW as ConnectedOverlayScrollHandler, bX as isTouchDevice, dm as FilterOperator, bB as script$F, cm as script$G, bA as FocusTrap, k as createVNode, bE as Transition, bf as withKeys, c0 as getIndex, co as script$H, cR as isClickable, cT as clearSelection, c4 as localeComparator, ch as sort, cA as FilterService, df as FilterMatchMode, bI as findSingle, cD as findIndexInList, b$ as find, dn as exportCSV, cL as getOffset, cU as isRTL, dp as getHiddenElementOuterWidth, dq as getHiddenElementOuterHeight, dr as reorderArray, bQ as removeClass, bw as addClass, cc as isEmpty, cB as script$I, ce as script$J } from "./index-BsGgXmrT.js";
import { s as script$D } from "./index-COyiXDAn.js";
========
import { bG as BaseStyle, bH as script$s, bX as script$t, o as openBlock, f as createElementBlock, at as mergeProps, m as createBaseVNode, E as toDisplayString, bO as Ripple, r as resolveDirective, i as withDirectives, y as createBlock, C as resolveDynamicComponent, bm as script$u, bR as resolveComponent, aj as normalizeClass, cp as createSlots, z as withCtx, aY as script$v, cf as script$w, F as Fragment, D as renderList, a8 as createTextVNode, c8 as setAttribute, cx as normalizeProps, A as renderSlot, B as createCommentVNode, bY as script$x, ce as equals, cF as script$y, bv as script$z, cJ as getFirstFocusableElement, c7 as OverlayEventBus, cZ as getVNodeProp, cc as resolveFieldData, dD as invokeElementMethod, bK as getAttribute, c_ as getNextElementSibling, c2 as getOuterWidth, c$ as getPreviousElementSibling, l as script$A, bN as script$B, bQ as script$C, cl as script$E, cd as isNotEmpty, as as withModifiers, da as getOuterHeight, bP as UniqueComponentId, d1 as _default, bZ as ZIndex, bL as focus, b_ as addStyle, c3 as absolutePosition, b$ as ConnectedOverlayScrollHandler, c0 as isTouchDevice, dE as FilterOperator, ca as script$F, ct as script$G, cB as FocusTrap, k as createVNode, bI as Transition, bj as withKeys, c5 as getIndex, cv as script$H, d0 as isClickable, d2 as clearSelection, c9 as localeComparator, co as sort, cL as FilterService, dx as FilterMatchMode, bJ as findSingle, cO as findIndexInList, c4 as find, dF as exportCSV, cW as getOffset, d3 as isRTL, dG as getHiddenElementOuterWidth, dH as getHiddenElementOuterHeight, dI as reorderArray, bT as removeClass, bU as addClass, ci as isEmpty, cM as script$I, ck as script$J } from "./index-Bv0b06LE.js";
import { s as script$D } from "./index-Dzu9WL4p.js";
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/index-CgMyWf7n.js
import { ce as BaseStyle, cf as script$s, cu as script$t, o as openBlock, f as createElementBlock, aE as mergeProps, m as createBaseVNode, E as toDisplayString, cl as Ripple, r as resolveDirective, i as withDirectives, y as createBlock, C as resolveDynamicComponent, bv as script$u, co as resolveComponent, Z as normalizeClass, cY as createSlots, z as withCtx, b6 as script$v, cO as script$w, F as Fragment, D as renderList, ak as createTextVNode, cH as setAttribute, d3 as normalizeProps, A as renderSlot, B as createCommentVNode, cv as script$x, cN as equals, db as script$y, bE as script$z, df as getFirstFocusableElement, cG as OverlayEventBus, dv as getVNodeProp, cL as resolveFieldData, dO as invokeElementMethod, ch as getAttribute, dw as getNextElementSibling, cB as getOuterWidth, dx as getPreviousElementSibling, l as script$A, ck as script$B, cn as script$C, cU as script$E, cM as isNotEmpty, aD as withModifiers, dD as getOuterHeight, cm as UniqueComponentId, dz as _default, cw as ZIndex, ci as focus, cx as addStyle, cC as absolutePosition, cy as ConnectedOverlayScrollHandler, cz as isTouchDevice, dP as FilterOperator, cJ as script$F, c$ as script$G, d7 as FocusTrap, k as createVNode, c8 as Transition, bs as withKeys, cE as getIndex, d1 as script$H, dy as isClickable, dA as clearSelection, cI as localeComparator, cX as sort, dh as FilterService, dI as FilterMatchMode, cg as findSingle, dk as findIndexInList, cD as find, dQ as exportCSV, ds as getOffset, dB as isRTL, dR as getHiddenElementOuterWidth, dS as getHiddenElementOuterHeight, dT as reorderArray, cq as removeClass, cr as addClass, cR as isEmpty, di as script$I, cT as script$J } from "./index-DIgj6hpb.js";
import { s as script$D } from "./index-D8hjiWMw.js";
var ColumnStyle = BaseStyle.extend({
name: "column"
});
@ -8792,8 +8787,4 @@ export {
script as h,
script$l as s
};
<<<<<<<< HEAD:comfy/web/assets/index-Br6dw1F6.js
//# sourceMappingURL=index-Br6dw1F6.js.map
========
//# sourceMappingURL=index-CgMyWf7n.js.map
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/index-CgMyWf7n.js
//# sourceMappingURL=index-Czd3J-KM.js.map

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
import { bT as script$1, o as openBlock, f as createElementBlock, as as mergeProps, m as createBaseVNode } from "./index-BsGgXmrT.js";
import { cu as script$1, o as openBlock, f as createElementBlock, aE as mergeProps, m as createBaseVNode } from "./index-DIgj6hpb.js";
var script = {
name: "BarsIcon",
"extends": script$1
@ -24,4 +24,4 @@ script.render = render;
export {
script as s
};
//# sourceMappingURL=index-COyiXDAn.js.map
//# sourceMappingURL=index-D8hjiWMw.js.map

View File

@ -1 +1 @@
{"version":3,"file":"index-COyiXDAn.js","sources":["../../../../../node_modules/@primevue/icons/bars/index.mjs"],"sourcesContent":["import BaseIcon from '@primevue/icons/baseicon';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode } from 'vue';\n\nvar script = {\n name: 'BarsIcon',\n \"extends\": BaseIcon\n};\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", mergeProps({\n width: \"14\",\n height: \"14\",\n viewBox: \"0 0 14 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, _ctx.pti()), _cache[0] || (_cache[0] = [createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\",\n 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\",\n fill: \"currentColor\"\n }, null, -1)]), 16);\n}\n\nscript.render = render;\n\nexport { script as default };\n//# sourceMappingURL=index.mjs.map\n"],"names":["BaseIcon","createElementVNode"],"mappings":";;;AAGG,IAAC,SAAS;AAAA,EACX,MAAM;AAAA,EACN,WAAWA;AACb;AAEA,SAAS,OAAO,MAAM,QAAQ,QAAQ,QAAQ,OAAO,UAAU;AAC7D,SAAO,UAAW,GAAE,mBAAmB,OAAO,WAAW;AAAA,IACvD,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,EACR,GAAE,KAAK,KAAK,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAACC,gBAAmB,QAAQ;AAAA,IACpE,aAAa;AAAA,IACb,aAAa;AAAA,IACb,GAAG;AAAA,IACH,MAAM;AAAA,EACP,GAAE,MAAM,EAAE,CAAC,IAAI,EAAE;AACpB;AAbS;AAeT,OAAO,SAAS;","x_google_ignoreList":[0]}
{"version":3,"file":"index-D8hjiWMw.js","sources":["../../../../../node_modules/@primevue/icons/bars/index.mjs"],"sourcesContent":["import BaseIcon from '@primevue/icons/baseicon';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode } from 'vue';\n\nvar script = {\n name: 'BarsIcon',\n \"extends\": BaseIcon\n};\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"svg\", mergeProps({\n width: \"14\",\n height: \"14\",\n viewBox: \"0 0 14 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, _ctx.pti()), _cache[0] || (_cache[0] = [createElementVNode(\"path\", {\n \"fill-rule\": \"evenodd\",\n \"clip-rule\": \"evenodd\",\n 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\",\n fill: \"currentColor\"\n }, null, -1)]), 16);\n}\n\nscript.render = render;\n\nexport { script as default };\n//# sourceMappingURL=index.mjs.map\n"],"names":["BaseIcon","createElementVNode"],"mappings":";;;AAGG,IAAC,SAAS;AAAA,EACX,MAAM;AAAA,EACN,WAAWA;AACb;AAEA,SAAS,OAAO,MAAM,QAAQ,QAAQ,QAAQ,OAAO,UAAU;AAC7D,SAAO,UAAW,GAAE,mBAAmB,OAAO,WAAW;AAAA,IACvD,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,EACR,GAAE,KAAK,KAAK,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAACC,gBAAmB,QAAQ;AAAA,IACpE,aAAa;AAAA,IACb,aAAa;AAAA,IACb,GAAG;AAAA,IACH,MAAM;AAAA,EACP,GAAE,MAAM,EAAE,CAAC,IAAI,EAAE;AACpB;AAbS;AAeT,OAAO,SAAS;","x_google_ignoreList":[0]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
import { bG as BaseStyle, bH as script$c, cV as getWidth, d9 as getHeight, c2 as getOuterWidth, da as getOuterHeight, d3 as isRTL, cZ as getVNodeProp, db as isArray, o as openBlock, f as createElementBlock, at as mergeProps, F as Fragment, D as renderList, y as createBlock, C as resolveDynamicComponent, m as createBaseVNode, B as createCommentVNode, A as renderSlot, bK as getAttribute, bJ as findSingle, bL as focus, ce as equals, bO as Ripple, r as resolveDirective, i as withDirectives, z as withCtx, aj as normalizeClass, cW as getOffset, cb as script$d, bQ as script$e, cd as isNotEmpty, bY as script$f, bP as UniqueComponentId, bZ as ZIndex, cc as resolveFieldData, c7 as OverlayEventBus, ci as isEmpty, b_ as addStyle, c1 as relativePosition, c3 as absolutePosition, b$ as ConnectedOverlayScrollHandler, c0 as isTouchDevice, cj as findLastIndex, bk as script$g, cM as script$h, ca as script$i, bN as script$j, ck as script$k, a9 as script$l, bR as resolveComponent, n as normalizeStyle, k as createVNode, E as toDisplayString, bI as Transition, cp as createSlots, a8 as createTextVNode, cv as script$m, cr as resolve, dc as nestedPosition, cf as script$n, ch as isPrintableCharacter, l as script$o, cI as script$p, cx as normalizeProps, cC as guardReactiveProps } from "./index-Bv0b06LE.js";
import { s as script$q } from "./index-Dzu9WL4p.js";
import { ce as BaseStyle, cf as script$c, dr as getWidth, dC as getHeight, cB as getOuterWidth, dD as getOuterHeight, dB as isRTL, dv as getVNodeProp, dE as isArray, o as openBlock, f as createElementBlock, aE as mergeProps, F as Fragment, D as renderList, y as createBlock, C as resolveDynamicComponent, m as createBaseVNode, B as createCommentVNode, A as renderSlot, ch as getAttribute, cg as findSingle, ci as focus, cN as equals, cl as Ripple, r as resolveDirective, i as withDirectives, z as withCtx, Z as normalizeClass, ds as getOffset, cK as script$d, cn as script$e, cM as isNotEmpty, cv as script$f, cm as UniqueComponentId, cw as ZIndex, cL as resolveFieldData, cG as OverlayEventBus, cR as isEmpty, cx as addStyle, cA as relativePosition, cC as absolutePosition, cy as ConnectedOverlayScrollHandler, cz as isTouchDevice, cS as findLastIndex, bt as script$g, di as script$h, cJ as script$i, ck as script$j, cT as script$k, al as script$l, co as resolveComponent, n as normalizeStyle, k as createVNode, E as toDisplayString, c8 as Transition, cY as createSlots, ak as createTextVNode, d1 as script$m, c_ as resolve, dF as nestedPosition, cO as script$n, cQ as isPrintableCharacter, l as script$o, de as script$p, d3 as normalizeProps, d8 as guardReactiveProps } from "./index-DIgj6hpb.js";
import { s as script$q } from "./index-D8hjiWMw.js";
var theme$6 = /* @__PURE__ */ __name(function theme(_ref) {
var dt = _ref.dt;
return "\n.p-splitter {\n display: flex;\n flex-wrap: nowrap;\n border: 1px solid ".concat(dt("splitter.border.color"), ";\n background: ").concat(dt("splitter.background"), ";\n border-radius: ").concat(dt("border.radius.md"), ";\n color: ").concat(dt("splitter.color"), ";\n}\n\n.p-splitter-vertical {\n flex-direction: column;\n}\n\n.p-splitter-gutter {\n flex-grow: 0;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1;\n background: ").concat(dt("splitter.gutter.background"), ";\n}\n\n.p-splitter-gutter-handle {\n border-radius: ").concat(dt("splitter.handle.border.radius"), ";\n background: ").concat(dt("splitter.handle.background"), ";\n transition: outline-color ").concat(dt("splitter.transition.duration"), ", box-shadow ").concat(dt("splitter.transition.duration"), ";\n outline-color: transparent;\n}\n\n.p-splitter-gutter-handle:focus-visible {\n box-shadow: ").concat(dt("splitter.handle.focus.ring.shadow"), ";\n outline: ").concat(dt("splitter.handle.focus.ring.width"), " ").concat(dt("splitter.handle.focus.ring.style"), " ").concat(dt("splitter.handle.focus.ring.color"), ";\n outline-offset: ").concat(dt("splitter.handle.focus.ring.offset"), ";\n}\n\n.p-splitter-horizontal.p-splitter-resizing {\n cursor: col-resize;\n user-select: none;\n}\n\n.p-splitter-vertical.p-splitter-resizing {\n cursor: row-resize;\n user-select: none;\n}\n\n.p-splitter-horizontal > .p-splitter-gutter > .p-splitter-gutter-handle {\n height: ").concat(dt("splitter.handle.size"), ";\n width: 100%;\n}\n\n.p-splitter-vertical > .p-splitter-gutter > .p-splitter-gutter-handle {\n width: ").concat(dt("splitter.handle.size"), ";\n height: 100%;\n}\n\n.p-splitter-horizontal > .p-splitter-gutter {\n cursor: col-resize;\n}\n\n.p-splitter-vertical > .p-splitter-gutter {\n cursor: row-resize;\n}\n\n.p-splitterpanel {\n flex-grow: 1;\n overflow: hidden;\n}\n\n.p-splitterpanel-nested {\n display: flex;\n}\n\n.p-splitterpanel .p-splitter {\n flex-grow: 1;\n border: 0 none;\n}\n");
@ -4990,4 +4990,4 @@ export {
script as h,
script$a as s
};
//# sourceMappingURL=index-C068lYT4.js.map
//# sourceMappingURL=index-DdgRmRKP.js.map

1
comfy/web/assets/index-DdgRmRKP.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

27
comfy/web/assets/index-Dzu9WL4p.js generated vendored
View File

@ -1,27 +0,0 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
import { bX as script$1, o as openBlock, f as createElementBlock, at as mergeProps, m as createBaseVNode } from "./index-Bv0b06LE.js";
var script = {
name: "BarsIcon",
"extends": script$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()), _cache[0] || (_cache[0] = [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)]), 16);
}
__name(render, "render");
script.render = render;
export {
script as s
};
//# sourceMappingURL=index-Dzu9WL4p.js.map

View File

@ -2039,12 +2039,12 @@
.-right-4{
right: -1rem;
}
<<<<<<<< HEAD:comfy/web/assets/index-ChXzdVeQ.css
========
.-top-10{
top: -2.5rem;
}
.bottom-0{
bottom: 0px;
}
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/index-CBxvvAzM.css
.bottom-\[10px\]{
bottom: 10px;
}
@ -2072,8 +2072,8 @@
.top-0{
top: 0px;
}
.top-2{
top: 0.5rem;
.top-12{
top: 3rem;
}
.top-\[50px\]{
top: 50px;
@ -2087,6 +2087,12 @@
.z-20{
z-index: 20;
}
.z-40{
z-index: 40;
}
.z-50{
z-index: 50;
}
.z-\[1000\]{
z-index: 1000;
}
@ -2464,6 +2470,9 @@
.items-center{
align-items: center;
}
.justify-start{
justify-content: flex-start;
}
.justify-end{
justify-content: flex-end;
}
@ -2479,6 +2488,9 @@
.justify-evenly{
justify-content: space-evenly;
}
.justify-items-center{
justify-items: center;
}
.gap-0{
gap: 0px;
}
@ -2538,6 +2550,9 @@
.overflow-x-hidden{
overflow-x: hidden;
}
.overflow-y-hidden{
overflow-y: hidden;
}
.truncate{
overflow: hidden;
text-overflow: ellipsis;
@ -2564,6 +2579,9 @@
.rounded-lg{
border-radius: 0.5rem;
}
.rounded-md{
border-radius: 0.375rem;
}
.rounded-none{
border-radius: 0px;
}
@ -2577,6 +2595,9 @@
.border-0{
border-width: 0px;
}
.border-2{
border-width: 2px;
}
.border-x-0{
border-left-width: 0px;
border-right-width: 0px;
@ -2600,19 +2621,21 @@
.border-solid{
border-style: solid;
}
.border-dashed{
border-style: dashed;
}
.border-hidden{
border-style: hidden;
}
.border-none{
border-style: none;
}
.border-\[var\(--border-color\)\]{
border-color: var(--border-color);
}
.border-neutral-700{
--tw-border-opacity: 1;
<<<<<<<< HEAD:comfy/web/assets/index-ChXzdVeQ.css
border-color: rgb(64 64 64 / var(--tw-border-opacity, 1));
========
border-color: rgb(64 64 64 / var(--tw-border-opacity));
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/index-CBxvvAzM.css
}
.bg-\[var\(--comfy-menu-bg\)\]{
background-color: var(--comfy-menu-bg);
@ -2632,6 +2655,14 @@
--tw-bg-opacity: 1;
background-color: rgb(243 246 250 / var(--tw-bg-opacity, 1));
}
.bg-gray-600{
--tw-bg-opacity: 1;
background-color: rgb(113 128 150 / var(--tw-bg-opacity, 1));
}
.bg-gray-700{
--tw-bg-opacity: 1;
background-color: rgb(74 85 104 / var(--tw-bg-opacity, 1));
}
.bg-gray-800{
--tw-bg-opacity: 1;
background-color: rgb(45 55 72 / var(--tw-bg-opacity, 1));
@ -2667,6 +2698,9 @@
.bg-transparent{
background-color: transparent;
}
.bg-opacity-30{
--tw-bg-opacity: 0.3;
}
.bg-opacity-50{
--tw-bg-opacity: 0.5;
}
@ -2738,6 +2772,10 @@
padding-top: 0.25rem;
padding-bottom: 0.25rem;
}
.py-2{
padding-top: 0.5rem;
padding-bottom: 0.5rem;
}
.pb-0{
padding-bottom: 0px;
}
@ -2867,7 +2905,7 @@
}
.text-white{
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity));
color: rgb(255 255 255 / var(--tw-text-opacity, 1));
}
.underline{
text-decoration-line: underline;
@ -3499,6 +3537,13 @@ dialog::backdrop {
height: var(--comfy-img-preview-height);
}
.comfy-img-preview video {
-o-object-fit: contain;
object-fit: contain;
height: 100%;
width: 100%;
}
.comfy-missing-nodes li button {
font-size: 12px;
margin-left: 5px;
@ -3605,8 +3650,6 @@ audio.comfy-audio.empty-audio-widget {
.hover\:opacity-100:hover{
opacity: 1;
}
<<<<<<<< HEAD:comfy/web/assets/index-ChXzdVeQ.css
========
@media (prefers-reduced-motion: no-preference){
.motion-safe\:w-0{
@ -3637,7 +3680,6 @@ audio.comfy-audio.empty-audio-widget {
opacity: 1;
}
}
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/index-CBxvvAzM.css
@media not all and (min-width: 640px){
.max-sm\:hidden{
@ -3743,29 +3785,17 @@ audio.comfy-audio.empty-audio-widget {
margin-bottom: 1rem;
}
<<<<<<<< HEAD:comfy/web/assets/index-ChXzdVeQ.css
.comfy-error-report[data-v-3faf7785] {
========
.comfy-error-report[data-v-e5000be2] {
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/index-CBxvvAzM.css
.comfy-error-report[data-v-dc563766] {
display: flex;
flex-direction: column;
gap: 1rem;
}
<<<<<<<< HEAD:comfy/web/assets/index-ChXzdVeQ.css
.action-container[data-v-3faf7785] {
========
.action-container[data-v-e5000be2] {
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/index-CBxvvAzM.css
.action-container[data-v-dc563766] {
display: flex;
gap: 1rem;
justify-content: flex-end;
}
<<<<<<<< HEAD:comfy/web/assets/index-ChXzdVeQ.css
.wrapper-pre[data-v-3faf7785] {
========
.wrapper-pre[data-v-e5000be2] {
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/index-CBxvvAzM.css
.wrapper-pre[data-v-dc563766] {
white-space: pre-wrap;
word-wrap: break-word;
}
@ -3783,7 +3813,7 @@ audio.comfy-audio.empty-audio-widget {
margin-left: auto;
}
.comfy-missing-models[data-v-f8d63775] {
.comfy-missing-models[data-v-c7d4793b] {
max-height: 300px;
overflow-y: auto;
}
@ -3834,15 +3864,6 @@ audio.comfy-audio.empty-audio-widget {
padding: 0px;
}
<<<<<<<< HEAD:comfy/web/assets/index-ChXzdVeQ.css
.form-input[data-v-1451da7b] .input-slider .p-inputnumber input,
.form-input[data-v-1451da7b] .input-slider .slider-part {
width: 5rem
}
.form-input[data-v-1451da7b] .p-inputtext,
.form-input[data-v-1451da7b] .p-select {
========
.form-input[data-v-a29c257f] .input-slider .p-inputnumber input,
.form-input[data-v-a29c257f] .input-slider .slider-part {
@ -3850,16 +3871,15 @@ audio.comfy-audio.empty-audio-widget {
}
.form-input[data-v-a29c257f] .p-inputtext,
.form-input[data-v-a29c257f] .p-select {
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/index-CBxvvAzM.css
width: 11rem
}
.settings-tab-panels {
padding-top: 0px !important;
padding-top: 0 !important;
}
.settings-container[data-v-2e21278f] {
.settings-container[data-v-79b17329] {
display: flex;
height: 70vh;
width: 60vw;
@ -3867,25 +3887,25 @@ audio.comfy-audio.empty-audio-widget {
overflow: hidden;
}
@media (max-width: 768px) {
.settings-container[data-v-2e21278f] {
.settings-container[data-v-79b17329] {
flex-direction: column;
height: auto;
width: 80vw;
}
.settings-sidebar[data-v-2e21278f] {
.settings-sidebar[data-v-79b17329] {
width: 100%;
}
.settings-content[data-v-2e21278f] {
.settings-content[data-v-79b17329] {
height: 350px;
}
}
/* Show a separator line above the Keybinding tab */
/* This indicates the start of custom setting panels */
.settings-sidebar[data-v-2e21278f] .p-listbox-option[aria-label='Keybinding'] {
.settings-sidebar[data-v-79b17329] .p-listbox-option[aria-label='Keybinding'] {
position: relative;
}
.settings-sidebar[data-v-2e21278f] .p-listbox-option[aria-label='Keybinding']::before {
.settings-sidebar[data-v-79b17329] .p-listbox-option[aria-label='Keybinding']::before {
position: absolute;
top: 0px;
left: 0px;
@ -3903,15 +3923,12 @@ audio.comfy-audio.empty-audio-widget {
margin-left: 0.5rem;
}
.p-card[data-v-ffc83afa] {
.p-card[data-v-3e2828a8] {
--p-card-body-padding: 10px 0 0 0;
overflow: hidden;
}
[data-v-ffc83afa] .p-card-subtitle {
text-align: center;
}
.carousel[data-v-d9962275] {
.carousel[data-v-86d0eb05] {
width: 66vw;
}
/**
@ -4210,7 +4227,7 @@ audio.comfy-audio.empty-audio-widget {
bottom: var(--bottom);
z-index: 2000;
max-height: calc(100vh - var(--limit) - 10px);
box-shadow: 3px 3px 5px 0px rgba(0, 0, 0, 0.3);
box-shadow: 3px 3px 5px 0 rgba(0, 0, 0, 0.3);
}
.comfyui-popup:not(.open) {
@ -4462,7 +4479,6 @@ audio.comfy-audio.empty-audio-widget {
bottom: 41px;
}
.editable-text[data-v-d670c40f] {
display: inline;
}
@ -4492,11 +4508,7 @@ audio.comfy-audio.empty-audio-widget {
word-break: break-all;
}
<<<<<<<< HEAD:comfy/web/assets/index-ChXzdVeQ.css
[data-v-243f3ee3] .tree-explorer-node-label {
========
[data-v-e3a237e6] .tree-explorer-node-label {
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/index-CBxvvAzM.css
width: 100%;
display: flex;
align-items: center;
@ -4509,17 +4521,10 @@ audio.comfy-audio.empty-audio-widget {
* By setting the position to relative on the parent and using an absolutely positioned pseudo-element,
* we can create a visual indicator for the drop target without affecting the layout of other elements.
*/
<<<<<<<< HEAD:comfy/web/assets/index-ChXzdVeQ.css
[data-v-243f3ee3] .p-tree-node-content:has(.tree-folder) {
position: relative;
}
[data-v-243f3ee3] .p-tree-node-content:has(.tree-folder.can-drop)::after {
========
[data-v-e3a237e6] .p-tree-node-content:has(.tree-folder) {
position: relative;
}
[data-v-e3a237e6] .p-tree-node-content:has(.tree-folder.can-drop)::after {
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/index-CBxvvAzM.css
content: '';
position: absolute;
top: 0;
@ -4602,15 +4607,15 @@ audio.comfy-audio.empty-audio-widget {
font-weight: bold;
}
.model-lib-model-icon-container[data-v-b45ea43e] {
.model-lib-model-icon-container[data-v-160e41a9] {
display: inline-block;
position: relative;
left: 0;
height: 1.5rem;
vertical-align: top;
width: 0px;
width: 0;
}
.model-lib-model-icon[data-v-b45ea43e] {
.model-lib-model-icon[data-v-160e41a9] {
background-size: cover;
background-position: center;
display: inline-block;
@ -4627,18 +4632,18 @@ audio.comfy-audio.empty-audio-widget {
width: 16px;
}
.slot_row[data-v-d9792337] {
.slot_row[data-v-1eb3b1db] {
padding: 2px;
}
/* Original N-Sidebar styles */
._sb_dot[data-v-d9792337] {
._sb_dot[data-v-1eb3b1db] {
width: 8px;
height: 8px;
border-radius: 50%;
background-color: grey;
}
.node_header[data-v-d9792337] {
.node_header[data-v-1eb3b1db] {
line-height: 1;
padding: 8px 13px 7px;
margin-bottom: 5px;
@ -4648,37 +4653,37 @@ audio.comfy-audio.empty-audio-widget {
display: flex;
align-items: center;
}
.headdot[data-v-d9792337] {
.headdot[data-v-1eb3b1db] {
width: 10px;
height: 10px;
float: inline-start;
margin-right: 8px;
}
.IMAGE[data-v-d9792337] {
.IMAGE[data-v-1eb3b1db] {
background-color: #64b5f6;
}
.VAE[data-v-d9792337] {
.VAE[data-v-1eb3b1db] {
background-color: #ff6e6e;
}
.LATENT[data-v-d9792337] {
.LATENT[data-v-1eb3b1db] {
background-color: #ff9cf9;
}
.MASK[data-v-d9792337] {
.MASK[data-v-1eb3b1db] {
background-color: #81c784;
}
.CONDITIONING[data-v-d9792337] {
.CONDITIONING[data-v-1eb3b1db] {
background-color: #ffa931;
}
.CLIP[data-v-d9792337] {
.CLIP[data-v-1eb3b1db] {
background-color: #ffd500;
}
.MODEL[data-v-d9792337] {
.MODEL[data-v-1eb3b1db] {
background-color: #b39ddb;
}
.CONTROL_NET[data-v-d9792337] {
.CONTROL_NET[data-v-1eb3b1db] {
background-color: #a5d6a7;
}
._sb_node_preview[data-v-d9792337] {
._sb_node_preview[data-v-1eb3b1db] {
background-color: var(--comfy-menu-bg);
font-family: 'Open Sans', sans-serif;
font-size: small;
@ -4695,7 +4700,7 @@ audio.comfy-audio.empty-audio-widget {
font-size: 12px;
padding-bottom: 10px;
}
._sb_node_preview ._sb_description[data-v-d9792337] {
._sb_node_preview ._sb_description[data-v-1eb3b1db] {
margin: 10px;
padding: 6px;
background: var(--border-color);
@ -4705,7 +4710,7 @@ audio.comfy-audio.empty-audio-widget {
font-size: 0.9rem;
word-break: break-word;
}
._sb_table[data-v-d9792337] {
._sb_table[data-v-1eb3b1db] {
display: grid;
grid-column-gap: 10px;
@ -4713,7 +4718,7 @@ audio.comfy-audio.empty-audio-widget {
width: 100%;
/* Imposta la larghezza della tabella al 100% del contenitore */
}
._sb_row[data-v-d9792337] {
._sb_row[data-v-1eb3b1db] {
display: grid;
grid-template-columns: 10px 1fr 1fr 1fr 10px;
grid-column-gap: 10px;
@ -4721,11 +4726,11 @@ audio.comfy-audio.empty-audio-widget {
padding-left: 9px;
padding-right: 9px;
}
._sb_row_string[data-v-d9792337] {
._sb_row_string[data-v-1eb3b1db] {
grid-template-columns: 10px 1fr 1fr 10fr 1fr;
}
._sb_col[data-v-d9792337] {
border: 0px solid #000;
._sb_col[data-v-1eb3b1db] {
border: 0 solid #000;
display: flex;
align-items: flex-end;
flex-direction: row-reverse;
@ -4733,10 +4738,10 @@ audio.comfy-audio.empty-audio-widget {
align-content: flex-start;
justify-content: flex-end;
}
._sb_inherit[data-v-d9792337] {
._sb_inherit[data-v-1eb3b1db] {
display: inherit;
}
._long_field[data-v-d9792337] {
._long_field[data-v-1eb3b1db] {
background: var(--bg-color);
border: 2px solid var(--border-color);
margin: 5px 5px 0 5px;
@ -4744,10 +4749,10 @@ audio.comfy-audio.empty-audio-widget {
line-height: 1.7;
text-wrap: nowrap;
}
._sb_arrow[data-v-d9792337] {
._sb_arrow[data-v-1eb3b1db] {
color: var(--fg-color);
}
._sb_preview_badge[data-v-d9792337] {
._sb_preview_badge[data-v-1eb3b1db] {
text-align: center;
background: var(--comfy-input-bg);
font-weight: bold;
@ -4784,22 +4789,17 @@ audio.comfy-audio.empty-audio-widget {
width: 100%
}
.p-selectbutton .p-button[data-v-bd06e12b] {
.p-selectbutton .p-button[data-v-c4e8f1c8] {
padding: 0.5rem;
}
.p-selectbutton .p-button .pi[data-v-bd06e12b] {
.p-selectbutton .p-button .pi[data-v-c4e8f1c8] {
font-size: 1.5rem;
}
.field[data-v-bd06e12b] {
.field[data-v-c4e8f1c8] {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.color-picker-container[data-v-bd06e12b] {
display: flex;
align-items: center;
gap: 0.5rem;
}
.scroll-container {
&[data-v-ad33a347] {

539
comfy/web/assets/index-SeIZOWJp.js generated vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

1
comfy/web/assets/index-mHcHTYAB.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,10 +1,6 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
<<<<<<<< HEAD:comfy/web/assets/keybindingService-DoUb2RT6.js
import { an as useKeybindingStore, L as useCommandStore, a as useSettingStore, di as KeyComboImpl, dj as KeybindingImpl } from "./index-BsGgXmrT.js";
========
import { ao as useKeybindingStore, J as useCommandStore, a as useSettingStore, dA as KeyComboImpl, dB as KeybindingImpl } from "./index-Bv0b06LE.js";
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/keybindingService-DyjX-nxF.js
import { az as useKeybindingStore, J as useCommandStore, a as useSettingStore, dL as KeyComboImpl, dM as KeybindingImpl } from "./index-DIgj6hpb.js";
const CORE_KEYBINDINGS = [
{
combo: {
@ -251,8 +247,4 @@ const useKeybindingService = /* @__PURE__ */ __name(() => {
export {
useKeybindingService as u
};
<<<<<<<< HEAD:comfy/web/assets/keybindingService-DoUb2RT6.js
//# sourceMappingURL=keybindingService-DoUb2RT6.js.map
========
//# sourceMappingURL=keybindingService-DyjX-nxF.js.map
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/keybindingService-DyjX-nxF.js
//# sourceMappingURL=keybindingService-CqDMAs0_.js.map

1
comfy/web/assets/keybindingService-CqDMAs0_.js.map generated vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,10 +1,6 @@
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
<<<<<<<< HEAD:comfy/web/assets/serverConfigStore-B9riwnSX.js
import { I as defineStore, U as ref, c as computed } from "./index-BsGgXmrT.js";
========
import { a1 as defineStore, T as ref, c as computed } from "./index-Bv0b06LE.js";
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/serverConfigStore-D2Vr0L0h.js
import { ad as defineStore, T as ref, c as computed } from "./index-DIgj6hpb.js";
const useServerConfigStore = defineStore("serverConfig", () => {
const serverConfigById = ref({});
const serverConfigs = computed(() => {
@ -91,8 +87,4 @@ const useServerConfigStore = defineStore("serverConfig", () => {
export {
useServerConfigStore as u
};
<<<<<<<< HEAD:comfy/web/assets/serverConfigStore-B9riwnSX.js
//# sourceMappingURL=serverConfigStore-B9riwnSX.js.map
========
//# sourceMappingURL=serverConfigStore-D2Vr0L0h.js.map
>>>>>>>> 96d891cb94d90f220e066cebad349887137f07a6:comfy/web/assets/serverConfigStore-D2Vr0L0h.js
//# sourceMappingURL=serverConfigStore-3t3U367D.js.map

File diff suppressed because one or more lines are too long

1
comfy/web/assets/uvMirrors-B-HKMf6X.js.map generated vendored Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"uvMirrors-B-HKMf6X.js","sources":["../../src/constants/uvMirrors.ts"],"sourcesContent":["export interface UVMirror {\n /**\n * The setting id defined for the mirror.\n */\n settingId: string\n /**\n * The default mirror to use.\n */\n mirror: string\n /**\n * The fallback mirror to use.\n */\n fallbackMirror: string\n /**\n * The path suffix to validate the mirror is reachable.\n */\n validationPathSuffix?: string\n}\n\nexport const PYTHON_MIRROR: UVMirror = {\n settingId: 'Comfy-Desktop.UV.PythonInstallMirror',\n mirror:\n 'https://github.com/astral-sh/python-build-standalone/releases/download',\n fallbackMirror:\n 'https://bgithub.xyz/astral-sh/python-build-standalone/releases/download',\n validationPathSuffix:\n '/20250115/cpython-3.10.16+20250115-aarch64-apple-darwin-debug-full.tar.zst.sha256'\n}\n\nexport const PYPI_MIRROR: UVMirror = {\n settingId: 'Comfy-Desktop.UV.PypiInstallMirror',\n mirror: 'https://pypi.org/simple/',\n fallbackMirror: 'https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple'\n}\n"],"names":[],"mappings":"AAmBO,MAAM,gBAA0B;AAAA,EACrC,WAAW;AAAA,EACX,QACE;AAAA,EACF,gBACE;AAAA,EACF,sBACE;AACJ;AAEO,MAAM,cAAwB;AAAA,EACnC,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,gBAAgB;AAClB;"}

View File

@ -0,0 +1,2 @@
// Shim for extensions\core\load3d\AnimationManager.ts
export const AnimationManager = window.comfyAPI.AnimationManager.AnimationManager;

View File

@ -0,0 +1,2 @@
// Shim for extensions\core\load3d\CameraManager.ts
export const CameraManager = window.comfyAPI.CameraManager.CameraManager;

View File

@ -0,0 +1,2 @@
// Shim for extensions\core\load3d\ControlsManager.ts
export const ControlsManager = window.comfyAPI.ControlsManager.ControlsManager;

Some files were not shown because too many files have changed in this diff Show More