mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2025-01-11 02:15:17 +00:00
Compare commits
14 Commits
76649815d3
...
28d5474d76
Author | SHA1 | Date | |
---|---|---|---|
|
28d5474d76 | ||
|
e231676a77 | ||
|
2307ff6746 | ||
|
d0f3752e33 | ||
|
c515bdf371 | ||
|
4209edf48d | ||
|
d055325783 | ||
|
eeab420c70 | ||
|
916d1e14a9 | ||
|
c496e53519 | ||
|
7da85fac3f | ||
|
b65b83af6f | ||
|
c8a3492c22 | ||
|
5cbf79787f |
58
.github/workflows/update-frontend.yml
vendored
Normal file
58
.github/workflows/update-frontend.yml
vendored
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
name: Update Frontend Release
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: "Frontend version to update to (e.g., 1.0.0)"
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update-frontend:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout ComfyUI
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: '3.10'
|
||||||
|
- name: Install requirements
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
|
||||||
|
pip install -r requirements.txt
|
||||||
|
pip install wait-for-it
|
||||||
|
# Frontend asset will be downloaded to ComfyUI/web_custom_versions/Comfy-Org_ComfyUI_frontend/{version}
|
||||||
|
- name: Start ComfyUI server
|
||||||
|
run: |
|
||||||
|
python main.py --cpu --front-end-version Comfy-Org/ComfyUI_frontend@${{ github.event.inputs.version }} 2>&1 | tee console_output.log &
|
||||||
|
wait-for-it --service 127.0.0.1:8188 -t 30
|
||||||
|
- name: Configure Git
|
||||||
|
run: |
|
||||||
|
git config --global user.name "GitHub Action"
|
||||||
|
git config --global user.email "action@github.com"
|
||||||
|
# Replace existing frontend content with the new version and remove .js.map files
|
||||||
|
# See https://github.com/Comfy-Org/ComfyUI_frontend/issues/2145 for why we remove .js.map files
|
||||||
|
- name: Update frontend content
|
||||||
|
run: |
|
||||||
|
rm -rf web/
|
||||||
|
cp -r web_custom_versions/Comfy-Org_ComfyUI_frontend/${{ github.event.inputs.version }} web/
|
||||||
|
rm web/**/*.js.map
|
||||||
|
- name: Create Pull Request
|
||||||
|
uses: peter-evans/create-pull-request@v7
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.PR_BOT_PAT }}
|
||||||
|
commit-message: "Update frontend to v${{ github.event.inputs.version }}"
|
||||||
|
title: "Frontend Update: v${{ github.event.inputs.version }}"
|
||||||
|
body: |
|
||||||
|
Automated PR to update frontend content to version ${{ github.event.inputs.version }}
|
||||||
|
|
||||||
|
This PR was created automatically by the frontend update workflow.
|
||||||
|
branch: release-${{ github.event.inputs.version }}
|
||||||
|
base: master
|
||||||
|
labels: Frontend,dependencies
|
@ -17,7 +17,7 @@
|
|||||||
/app/ @yoland68 @robinjhuang @huchenlei @webfiltered @pythongosssss @ltdrdata
|
/app/ @yoland68 @robinjhuang @huchenlei @webfiltered @pythongosssss @ltdrdata
|
||||||
|
|
||||||
# Frontend assets
|
# Frontend assets
|
||||||
/web/ @huchenlei @webfiltered @pythongosssss
|
/web/ @huchenlei @webfiltered @pythongosssss @yoland68 @robinjhuang
|
||||||
|
|
||||||
# Extra nodes
|
# Extra nodes
|
||||||
/comfy_extras/ @yoland68 @robinjhuang @huchenlei @pythongosssss @ltdrdata @Kosinkadink
|
/comfy_extras/ @yoland68 @robinjhuang @huchenlei @pythongosssss @ltdrdata @Kosinkadink
|
||||||
|
@ -240,7 +240,6 @@ UV is an extremely fast Python package and project manager, written in Rust. For
|
|||||||
```bash
|
```bash
|
||||||
git clone https://github.com/comfyanonymous/ComfyUI.git # Clone this repo
|
git clone https://github.com/comfyanonymous/ComfyUI.git # Clone this repo
|
||||||
cd ComfyUI # Move to created folder
|
cd ComfyUI # Move to created folder
|
||||||
uv init # Start uv project in current folder
|
|
||||||
uv add --requirements requirements.txt # Add dependencies
|
uv add --requirements requirements.txt # Add dependencies
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
from aiohttp import web
|
from aiohttp import web
|
||||||
|
import logging
|
||||||
|
|
||||||
|
|
||||||
class AppSettings():
|
class AppSettings():
|
||||||
@ -11,8 +12,12 @@ class AppSettings():
|
|||||||
file = self.user_manager.get_request_user_filepath(
|
file = self.user_manager.get_request_user_filepath(
|
||||||
request, "comfy.settings.json")
|
request, "comfy.settings.json")
|
||||||
if os.path.isfile(file):
|
if os.path.isfile(file):
|
||||||
with open(file) as f:
|
try:
|
||||||
return json.load(f)
|
with open(file) as f:
|
||||||
|
return json.load(f)
|
||||||
|
except:
|
||||||
|
logging.error(f"The user settings file is corrupted: {file}")
|
||||||
|
return {}
|
||||||
else:
|
else:
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
@ -442,7 +442,7 @@ class HookKeyframeGroup:
|
|||||||
return False
|
return False
|
||||||
if curr_t == self._curr_t:
|
if curr_t == self._curr_t:
|
||||||
return False
|
return False
|
||||||
max_sigma = torch.max(transformer_options["sigmas"])
|
max_sigma = torch.max(transformer_options["sample_sigmas"])
|
||||||
prev_index = self._current_index
|
prev_index = self._current_index
|
||||||
prev_strength = self._current_strength
|
prev_strength = self._current_strength
|
||||||
# if met guaranteed steps, look for next keyframe in case need to switch
|
# if met guaranteed steps, look for next keyframe in case need to switch
|
||||||
|
@ -70,8 +70,14 @@ def get_ancestral_step(sigma_from, sigma_to, eta=1.):
|
|||||||
return sigma_down, sigma_up
|
return sigma_down, sigma_up
|
||||||
|
|
||||||
|
|
||||||
def default_noise_sampler(x):
|
def default_noise_sampler(x, seed=None):
|
||||||
return lambda sigma, sigma_next: torch.randn_like(x)
|
if seed is not None:
|
||||||
|
generator = torch.Generator(device=x.device)
|
||||||
|
generator.manual_seed(seed)
|
||||||
|
else:
|
||||||
|
generator = None
|
||||||
|
|
||||||
|
return lambda sigma, sigma_next: torch.randn(x.size(), dtype=x.dtype, layout=x.layout, device=x.device, generator=generator)
|
||||||
|
|
||||||
|
|
||||||
class BatchedBrownianTree:
|
class BatchedBrownianTree:
|
||||||
@ -168,7 +174,8 @@ def sample_euler_ancestral(model, x, sigmas, extra_args=None, callback=None, dis
|
|||||||
return sample_euler_ancestral_RF(model, x, sigmas, extra_args, callback, disable, eta, s_noise, noise_sampler)
|
return sample_euler_ancestral_RF(model, x, sigmas, extra_args, callback, disable, eta, s_noise, noise_sampler)
|
||||||
"""Ancestral sampling with Euler method steps."""
|
"""Ancestral sampling with Euler method steps."""
|
||||||
extra_args = {} if extra_args is None else extra_args
|
extra_args = {} if extra_args is None else extra_args
|
||||||
noise_sampler = default_noise_sampler(x) if noise_sampler is None else noise_sampler
|
seed = extra_args.get("seed", None)
|
||||||
|
noise_sampler = default_noise_sampler(x, seed=seed) if noise_sampler is None else noise_sampler
|
||||||
s_in = x.new_ones([x.shape[0]])
|
s_in = x.new_ones([x.shape[0]])
|
||||||
for i in trange(len(sigmas) - 1, disable=disable):
|
for i in trange(len(sigmas) - 1, disable=disable):
|
||||||
denoised = model(x, sigmas[i] * s_in, **extra_args)
|
denoised = model(x, sigmas[i] * s_in, **extra_args)
|
||||||
@ -189,7 +196,8 @@ def sample_euler_ancestral(model, x, sigmas, extra_args=None, callback=None, dis
|
|||||||
def sample_euler_ancestral_RF(model, x, sigmas, extra_args=None, callback=None, disable=None, eta=1.0, s_noise=1., noise_sampler=None):
|
def sample_euler_ancestral_RF(model, x, sigmas, extra_args=None, callback=None, disable=None, eta=1.0, s_noise=1., noise_sampler=None):
|
||||||
"""Ancestral sampling with Euler method steps."""
|
"""Ancestral sampling with Euler method steps."""
|
||||||
extra_args = {} if extra_args is None else extra_args
|
extra_args = {} if extra_args is None else extra_args
|
||||||
noise_sampler = default_noise_sampler(x) if noise_sampler is None else noise_sampler
|
seed = extra_args.get("seed", None)
|
||||||
|
noise_sampler = default_noise_sampler(x, seed=seed) if noise_sampler is None else noise_sampler
|
||||||
s_in = x.new_ones([x.shape[0]])
|
s_in = x.new_ones([x.shape[0]])
|
||||||
for i in trange(len(sigmas) - 1, disable=disable):
|
for i in trange(len(sigmas) - 1, disable=disable):
|
||||||
denoised = model(x, sigmas[i] * s_in, **extra_args)
|
denoised = model(x, sigmas[i] * s_in, **extra_args)
|
||||||
@ -290,7 +298,8 @@ def sample_dpm_2_ancestral(model, x, sigmas, extra_args=None, callback=None, dis
|
|||||||
|
|
||||||
"""Ancestral sampling with DPM-Solver second-order steps."""
|
"""Ancestral sampling with DPM-Solver second-order steps."""
|
||||||
extra_args = {} if extra_args is None else extra_args
|
extra_args = {} if extra_args is None else extra_args
|
||||||
noise_sampler = default_noise_sampler(x) if noise_sampler is None else noise_sampler
|
seed = extra_args.get("seed", None)
|
||||||
|
noise_sampler = default_noise_sampler(x, seed=seed) if noise_sampler is None else noise_sampler
|
||||||
s_in = x.new_ones([x.shape[0]])
|
s_in = x.new_ones([x.shape[0]])
|
||||||
for i in trange(len(sigmas) - 1, disable=disable):
|
for i in trange(len(sigmas) - 1, disable=disable):
|
||||||
denoised = model(x, sigmas[i] * s_in, **extra_args)
|
denoised = model(x, sigmas[i] * s_in, **extra_args)
|
||||||
@ -318,7 +327,8 @@ def sample_dpm_2_ancestral(model, x, sigmas, extra_args=None, callback=None, dis
|
|||||||
def sample_dpm_2_ancestral_RF(model, x, sigmas, extra_args=None, callback=None, disable=None, eta=1., s_noise=1., noise_sampler=None):
|
def sample_dpm_2_ancestral_RF(model, x, sigmas, extra_args=None, callback=None, disable=None, eta=1., s_noise=1., noise_sampler=None):
|
||||||
"""Ancestral sampling with DPM-Solver second-order steps."""
|
"""Ancestral sampling with DPM-Solver second-order steps."""
|
||||||
extra_args = {} if extra_args is None else extra_args
|
extra_args = {} if extra_args is None else extra_args
|
||||||
noise_sampler = default_noise_sampler(x) if noise_sampler is None else noise_sampler
|
seed = extra_args.get("seed", None)
|
||||||
|
noise_sampler = default_noise_sampler(x, seed=seed) if noise_sampler is None else noise_sampler
|
||||||
s_in = x.new_ones([x.shape[0]])
|
s_in = x.new_ones([x.shape[0]])
|
||||||
for i in trange(len(sigmas) - 1, disable=disable):
|
for i in trange(len(sigmas) - 1, disable=disable):
|
||||||
denoised = model(x, sigmas[i] * s_in, **extra_args)
|
denoised = model(x, sigmas[i] * s_in, **extra_args)
|
||||||
@ -465,7 +475,7 @@ class DPMSolver(nn.Module):
|
|||||||
return x_3, eps_cache
|
return x_3, eps_cache
|
||||||
|
|
||||||
def dpm_solver_fast(self, x, t_start, t_end, nfe, eta=0., s_noise=1., noise_sampler=None):
|
def dpm_solver_fast(self, x, t_start, t_end, nfe, eta=0., s_noise=1., noise_sampler=None):
|
||||||
noise_sampler = default_noise_sampler(x) if noise_sampler is None else noise_sampler
|
noise_sampler = default_noise_sampler(x, seed=self.extra_args.get("seed", None)) if noise_sampler is None else noise_sampler
|
||||||
if not t_end > t_start and eta:
|
if not t_end > t_start and eta:
|
||||||
raise ValueError('eta must be 0 for reverse sampling')
|
raise ValueError('eta must be 0 for reverse sampling')
|
||||||
|
|
||||||
@ -504,7 +514,7 @@ class DPMSolver(nn.Module):
|
|||||||
return x
|
return x
|
||||||
|
|
||||||
def dpm_solver_adaptive(self, x, t_start, t_end, order=3, rtol=0.05, atol=0.0078, h_init=0.05, pcoeff=0., icoeff=1., dcoeff=0., accept_safety=0.81, eta=0., s_noise=1., noise_sampler=None):
|
def dpm_solver_adaptive(self, x, t_start, t_end, order=3, rtol=0.05, atol=0.0078, h_init=0.05, pcoeff=0., icoeff=1., dcoeff=0., accept_safety=0.81, eta=0., s_noise=1., noise_sampler=None):
|
||||||
noise_sampler = default_noise_sampler(x) if noise_sampler is None else noise_sampler
|
noise_sampler = default_noise_sampler(x, seed=self.extra_args.get("seed", None)) if noise_sampler is None else noise_sampler
|
||||||
if order not in {2, 3}:
|
if order not in {2, 3}:
|
||||||
raise ValueError('order should be 2 or 3')
|
raise ValueError('order should be 2 or 3')
|
||||||
forward = t_end > t_start
|
forward = t_end > t_start
|
||||||
@ -591,7 +601,8 @@ def sample_dpmpp_2s_ancestral(model, x, sigmas, extra_args=None, callback=None,
|
|||||||
|
|
||||||
"""Ancestral sampling with DPM-Solver++(2S) second-order steps."""
|
"""Ancestral sampling with DPM-Solver++(2S) second-order steps."""
|
||||||
extra_args = {} if extra_args is None else extra_args
|
extra_args = {} if extra_args is None else extra_args
|
||||||
noise_sampler = default_noise_sampler(x) if noise_sampler is None else noise_sampler
|
seed = extra_args.get("seed", None)
|
||||||
|
noise_sampler = default_noise_sampler(x, seed=seed) if noise_sampler is None else noise_sampler
|
||||||
s_in = x.new_ones([x.shape[0]])
|
s_in = x.new_ones([x.shape[0]])
|
||||||
sigma_fn = lambda t: t.neg().exp()
|
sigma_fn = lambda t: t.neg().exp()
|
||||||
t_fn = lambda sigma: sigma.log().neg()
|
t_fn = lambda sigma: sigma.log().neg()
|
||||||
@ -625,7 +636,8 @@ def sample_dpmpp_2s_ancestral(model, x, sigmas, extra_args=None, callback=None,
|
|||||||
def sample_dpmpp_2s_ancestral_RF(model, x, sigmas, extra_args=None, callback=None, disable=None, eta=1., s_noise=1., noise_sampler=None):
|
def sample_dpmpp_2s_ancestral_RF(model, x, sigmas, extra_args=None, callback=None, disable=None, eta=1., s_noise=1., noise_sampler=None):
|
||||||
"""Ancestral sampling with DPM-Solver++(2S) second-order steps."""
|
"""Ancestral sampling with DPM-Solver++(2S) second-order steps."""
|
||||||
extra_args = {} if extra_args is None else extra_args
|
extra_args = {} if extra_args is None else extra_args
|
||||||
noise_sampler = default_noise_sampler(x) if noise_sampler is None else noise_sampler
|
seed = extra_args.get("seed", None)
|
||||||
|
noise_sampler = default_noise_sampler(x, seed=seed) if noise_sampler is None else noise_sampler
|
||||||
s_in = x.new_ones([x.shape[0]])
|
s_in = x.new_ones([x.shape[0]])
|
||||||
sigma_fn = lambda lbda: (lbda.exp() + 1) ** -1
|
sigma_fn = lambda lbda: (lbda.exp() + 1) ** -1
|
||||||
lambda_fn = lambda sigma: ((1-sigma)/sigma).log()
|
lambda_fn = lambda sigma: ((1-sigma)/sigma).log()
|
||||||
@ -882,7 +894,8 @@ def DDPMSampler_step(x, sigma, sigma_prev, noise, noise_sampler):
|
|||||||
|
|
||||||
def generic_step_sampler(model, x, sigmas, extra_args=None, callback=None, disable=None, noise_sampler=None, step_function=None):
|
def generic_step_sampler(model, x, sigmas, extra_args=None, callback=None, disable=None, noise_sampler=None, step_function=None):
|
||||||
extra_args = {} if extra_args is None else extra_args
|
extra_args = {} if extra_args is None else extra_args
|
||||||
noise_sampler = default_noise_sampler(x) if noise_sampler is None else noise_sampler
|
seed = extra_args.get("seed", None)
|
||||||
|
noise_sampler = default_noise_sampler(x, seed=seed) if noise_sampler is None else noise_sampler
|
||||||
s_in = x.new_ones([x.shape[0]])
|
s_in = x.new_ones([x.shape[0]])
|
||||||
|
|
||||||
for i in trange(len(sigmas) - 1, disable=disable):
|
for i in trange(len(sigmas) - 1, disable=disable):
|
||||||
@ -902,7 +915,8 @@ def sample_ddpm(model, x, sigmas, extra_args=None, callback=None, disable=None,
|
|||||||
@torch.no_grad()
|
@torch.no_grad()
|
||||||
def sample_lcm(model, x, sigmas, extra_args=None, callback=None, disable=None, noise_sampler=None):
|
def sample_lcm(model, x, sigmas, extra_args=None, callback=None, disable=None, noise_sampler=None):
|
||||||
extra_args = {} if extra_args is None else extra_args
|
extra_args = {} if extra_args is None else extra_args
|
||||||
noise_sampler = default_noise_sampler(x) if noise_sampler is None else noise_sampler
|
seed = extra_args.get("seed", None)
|
||||||
|
noise_sampler = default_noise_sampler(x, seed=seed) if noise_sampler is None else noise_sampler
|
||||||
s_in = x.new_ones([x.shape[0]])
|
s_in = x.new_ones([x.shape[0]])
|
||||||
for i in trange(len(sigmas) - 1, disable=disable):
|
for i in trange(len(sigmas) - 1, disable=disable):
|
||||||
denoised = model(x, sigmas[i] * s_in, **extra_args)
|
denoised = model(x, sigmas[i] * s_in, **extra_args)
|
||||||
@ -1153,7 +1167,8 @@ def sample_euler_cfg_pp(model, x, sigmas, extra_args=None, callback=None, disabl
|
|||||||
def sample_euler_ancestral_cfg_pp(model, x, sigmas, extra_args=None, callback=None, disable=None, eta=1., s_noise=1., noise_sampler=None):
|
def sample_euler_ancestral_cfg_pp(model, x, sigmas, extra_args=None, callback=None, disable=None, eta=1., s_noise=1., noise_sampler=None):
|
||||||
"""Ancestral sampling with Euler method steps."""
|
"""Ancestral sampling with Euler method steps."""
|
||||||
extra_args = {} if extra_args is None else extra_args
|
extra_args = {} if extra_args is None else extra_args
|
||||||
noise_sampler = default_noise_sampler(x) if noise_sampler is None else noise_sampler
|
seed = extra_args.get("seed", None)
|
||||||
|
noise_sampler = default_noise_sampler(x, seed=seed) if noise_sampler is None else noise_sampler
|
||||||
|
|
||||||
temp = [0]
|
temp = [0]
|
||||||
def post_cfg_function(args):
|
def post_cfg_function(args):
|
||||||
@ -1179,7 +1194,8 @@ def sample_euler_ancestral_cfg_pp(model, x, sigmas, extra_args=None, callback=No
|
|||||||
def sample_dpmpp_2s_ancestral_cfg_pp(model, x, sigmas, extra_args=None, callback=None, disable=None, eta=1., s_noise=1., noise_sampler=None):
|
def sample_dpmpp_2s_ancestral_cfg_pp(model, x, sigmas, extra_args=None, callback=None, disable=None, eta=1., s_noise=1., noise_sampler=None):
|
||||||
"""Ancestral sampling with DPM-Solver++(2S) second-order steps."""
|
"""Ancestral sampling with DPM-Solver++(2S) second-order steps."""
|
||||||
extra_args = {} if extra_args is None else extra_args
|
extra_args = {} if extra_args is None else extra_args
|
||||||
noise_sampler = default_noise_sampler(x) if noise_sampler is None else noise_sampler
|
seed = extra_args.get("seed", None)
|
||||||
|
noise_sampler = default_noise_sampler(x, seed=seed) if noise_sampler is None else noise_sampler
|
||||||
|
|
||||||
temp = [0]
|
temp = [0]
|
||||||
def post_cfg_function(args):
|
def post_cfg_function(args):
|
||||||
|
@ -402,7 +402,20 @@ class ModelPatcher:
|
|||||||
def add_object_patch(self, name, obj):
|
def add_object_patch(self, name, obj):
|
||||||
self.object_patches[name] = obj
|
self.object_patches[name] = obj
|
||||||
|
|
||||||
def get_model_object(self, name):
|
def get_model_object(self, name: str) -> torch.nn.Module:
|
||||||
|
"""Retrieves a nested attribute from an object using dot notation considering
|
||||||
|
object patches.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
name (str): The attribute path using dot notation (e.g. "model.layer.weight")
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
The value of the requested attribute
|
||||||
|
|
||||||
|
Example:
|
||||||
|
patcher = ModelPatcher()
|
||||||
|
weight = patcher.get_model_object("layer1.conv.weight")
|
||||||
|
"""
|
||||||
if name in self.object_patches:
|
if name in self.object_patches:
|
||||||
return self.object_patches[name]
|
return self.object_patches[name]
|
||||||
else:
|
else:
|
||||||
|
@ -849,7 +849,7 @@ class CFGGuider:
|
|||||||
self.conds = process_conds(self.inner_model, noise, self.conds, device, latent_image, denoise_mask, seed)
|
self.conds = process_conds(self.inner_model, noise, self.conds, device, latent_image, denoise_mask, seed)
|
||||||
|
|
||||||
extra_model_options = comfy.model_patcher.create_model_options_clone(self.model_options)
|
extra_model_options = comfy.model_patcher.create_model_options_clone(self.model_options)
|
||||||
extra_model_options.setdefault("transformer_options", {})["sigmas"] = sigmas
|
extra_model_options.setdefault("transformer_options", {})["sample_sigmas"] = sigmas
|
||||||
extra_args = {"model_options": extra_model_options, "seed": seed}
|
extra_args = {"model_options": extra_model_options, "seed": seed}
|
||||||
|
|
||||||
executor = comfy.patcher_extension.WrapperExecutor.new_class_executor(
|
executor = comfy.patcher_extension.WrapperExecutor.new_class_executor(
|
||||||
|
@ -111,7 +111,7 @@ class CLIP:
|
|||||||
model_management.load_models_gpu([self.patcher], force_full_load=True)
|
model_management.load_models_gpu([self.patcher], force_full_load=True)
|
||||||
self.layer_idx = None
|
self.layer_idx = None
|
||||||
self.use_clip_schedule = False
|
self.use_clip_schedule = False
|
||||||
logging.info("CLIP model load device: {}, offload device: {}, current: {}, dtype: {}".format(load_device, offload_device, params['device'], dtype))
|
logging.info("CLIP/text encoder model load device: {}, offload device: {}, current: {}, dtype: {}".format(load_device, offload_device, params['device'], dtype))
|
||||||
|
|
||||||
def clone(self):
|
def clone(self):
|
||||||
n = CLIP(no_init=True)
|
n = CLIP(no_init=True)
|
||||||
@ -898,7 +898,7 @@ def load_state_dict_guess_config(sd, output_vae=True, output_clip=True, output_c
|
|||||||
if output_model:
|
if output_model:
|
||||||
model_patcher = comfy.model_patcher.ModelPatcher(model, load_device=load_device, offload_device=model_management.unet_offload_device())
|
model_patcher = comfy.model_patcher.ModelPatcher(model, load_device=load_device, offload_device=model_management.unet_offload_device())
|
||||||
if inital_load_device != torch.device("cpu"):
|
if inital_load_device != torch.device("cpu"):
|
||||||
logging.info("loaded straight to GPU")
|
logging.info("loaded diffusion model directly to GPU")
|
||||||
model_management.load_models_gpu([model_patcher], force_full_load=True)
|
model_management.load_models_gpu([model_patcher], force_full_load=True)
|
||||||
|
|
||||||
return (model_patcher, clip, vae, clipvision)
|
return (model_patcher, clip, vae, clipvision)
|
||||||
|
@ -227,8 +227,9 @@ class T5(torch.nn.Module):
|
|||||||
super().__init__()
|
super().__init__()
|
||||||
self.num_layers = config_dict["num_layers"]
|
self.num_layers = config_dict["num_layers"]
|
||||||
model_dim = config_dict["d_model"]
|
model_dim = config_dict["d_model"]
|
||||||
|
inner_dim = config_dict["d_kv"] * config_dict["num_heads"]
|
||||||
|
|
||||||
self.encoder = T5Stack(self.num_layers, model_dim, model_dim, config_dict["d_ff"], config_dict["dense_act_fn"], config_dict["is_gated_act"], config_dict["num_heads"], config_dict["model_type"] != "umt5", dtype, device, operations)
|
self.encoder = T5Stack(self.num_layers, model_dim, inner_dim, config_dict["d_ff"], config_dict["dense_act_fn"], config_dict["is_gated_act"], config_dict["num_heads"], config_dict["model_type"] != "umt5", dtype, device, operations)
|
||||||
self.dtype = dtype
|
self.dtype = dtype
|
||||||
self.shared = operations.Embedding(config_dict["vocab_size"], model_dim, device=device, dtype=dtype)
|
self.shared = operations.Embedding(config_dict["vocab_size"], model_dim, device=device, dtype=dtype)
|
||||||
|
|
||||||
|
@ -693,7 +693,25 @@ def copy_to_param(obj, attr, value):
|
|||||||
prev = getattr(obj, attrs[-1])
|
prev = getattr(obj, attrs[-1])
|
||||||
prev.data.copy_(value)
|
prev.data.copy_(value)
|
||||||
|
|
||||||
def get_attr(obj, attr):
|
def get_attr(obj, attr: str):
|
||||||
|
"""Retrieves a nested attribute from an object using dot notation.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
obj: The object to get the attribute from
|
||||||
|
attr (str): The attribute path using dot notation (e.g. "model.layer.weight")
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
The value of the requested attribute
|
||||||
|
|
||||||
|
Example:
|
||||||
|
model = MyModel()
|
||||||
|
weight = get_attr(model, "layer1.conv.weight")
|
||||||
|
# Equivalent to: model.layer1.conv.weight
|
||||||
|
|
||||||
|
Important:
|
||||||
|
Always prefer `comfy.model_patcher.ModelPatcher.get_model_object` when
|
||||||
|
accessing nested model objects under `ModelPatcher.model`.
|
||||||
|
"""
|
||||||
attrs = attr.split(".")
|
attrs = attr.split(".")
|
||||||
for name in attrs:
|
for name in attrs:
|
||||||
obj = getattr(obj, name)
|
obj = getattr(obj, name)
|
||||||
|
22
nodes.py
22
nodes.py
@ -913,6 +913,9 @@ class CLIPLoader:
|
|||||||
def INPUT_TYPES(s):
|
def INPUT_TYPES(s):
|
||||||
return {"required": { "clip_name": (folder_paths.get_filename_list("text_encoders"), ),
|
return {"required": { "clip_name": (folder_paths.get_filename_list("text_encoders"), ),
|
||||||
"type": (["stable_diffusion", "stable_cascade", "sd3", "stable_audio", "mochi", "ltxv", "pixart"], ),
|
"type": (["stable_diffusion", "stable_cascade", "sd3", "stable_audio", "mochi", "ltxv", "pixart"], ),
|
||||||
|
},
|
||||||
|
"optional": {
|
||||||
|
"device": (["default", "cpu"], {"advanced": True}),
|
||||||
}}
|
}}
|
||||||
RETURN_TYPES = ("CLIP",)
|
RETURN_TYPES = ("CLIP",)
|
||||||
FUNCTION = "load_clip"
|
FUNCTION = "load_clip"
|
||||||
@ -921,7 +924,7 @@ class CLIPLoader:
|
|||||||
|
|
||||||
DESCRIPTION = "[Recipes]\n\nstable_diffusion: clip-l\nstable_cascade: clip-g\nsd3: t5 / clip-g / clip-l\nstable_audio: t5\nmochi: t5"
|
DESCRIPTION = "[Recipes]\n\nstable_diffusion: clip-l\nstable_cascade: clip-g\nsd3: t5 / clip-g / clip-l\nstable_audio: t5\nmochi: t5"
|
||||||
|
|
||||||
def load_clip(self, clip_name, type="stable_diffusion"):
|
def load_clip(self, clip_name, type="stable_diffusion", device="default"):
|
||||||
if type == "stable_cascade":
|
if type == "stable_cascade":
|
||||||
clip_type = comfy.sd.CLIPType.STABLE_CASCADE
|
clip_type = comfy.sd.CLIPType.STABLE_CASCADE
|
||||||
elif type == "sd3":
|
elif type == "sd3":
|
||||||
@ -937,8 +940,12 @@ class CLIPLoader:
|
|||||||
else:
|
else:
|
||||||
clip_type = comfy.sd.CLIPType.STABLE_DIFFUSION
|
clip_type = comfy.sd.CLIPType.STABLE_DIFFUSION
|
||||||
|
|
||||||
|
model_options = {}
|
||||||
|
if device == "cpu":
|
||||||
|
model_options["load_device"] = model_options["offload_device"] = torch.device("cpu")
|
||||||
|
|
||||||
clip_path = folder_paths.get_full_path_or_raise("text_encoders", clip_name)
|
clip_path = folder_paths.get_full_path_or_raise("text_encoders", clip_name)
|
||||||
clip = comfy.sd.load_clip(ckpt_paths=[clip_path], embedding_directory=folder_paths.get_folder_paths("embeddings"), clip_type=clip_type)
|
clip = comfy.sd.load_clip(ckpt_paths=[clip_path], embedding_directory=folder_paths.get_folder_paths("embeddings"), clip_type=clip_type, model_options=model_options)
|
||||||
return (clip,)
|
return (clip,)
|
||||||
|
|
||||||
class DualCLIPLoader:
|
class DualCLIPLoader:
|
||||||
@ -947,6 +954,9 @@ class DualCLIPLoader:
|
|||||||
return {"required": { "clip_name1": (folder_paths.get_filename_list("text_encoders"), ),
|
return {"required": { "clip_name1": (folder_paths.get_filename_list("text_encoders"), ),
|
||||||
"clip_name2": (folder_paths.get_filename_list("text_encoders"), ),
|
"clip_name2": (folder_paths.get_filename_list("text_encoders"), ),
|
||||||
"type": (["sdxl", "sd3", "flux", "hunyuan_video"], ),
|
"type": (["sdxl", "sd3", "flux", "hunyuan_video"], ),
|
||||||
|
},
|
||||||
|
"optional": {
|
||||||
|
"device": (["default", "cpu"], {"advanced": True}),
|
||||||
}}
|
}}
|
||||||
RETURN_TYPES = ("CLIP",)
|
RETURN_TYPES = ("CLIP",)
|
||||||
FUNCTION = "load_clip"
|
FUNCTION = "load_clip"
|
||||||
@ -955,7 +965,7 @@ class DualCLIPLoader:
|
|||||||
|
|
||||||
DESCRIPTION = "[Recipes]\n\nsdxl: clip-l, clip-g\nsd3: clip-l, clip-g / clip-l, t5 / clip-g, t5\nflux: clip-l, t5"
|
DESCRIPTION = "[Recipes]\n\nsdxl: clip-l, clip-g\nsd3: clip-l, clip-g / clip-l, t5 / clip-g, t5\nflux: clip-l, t5"
|
||||||
|
|
||||||
def load_clip(self, clip_name1, clip_name2, type):
|
def load_clip(self, clip_name1, clip_name2, type, device="default"):
|
||||||
clip_path1 = folder_paths.get_full_path_or_raise("text_encoders", clip_name1)
|
clip_path1 = folder_paths.get_full_path_or_raise("text_encoders", clip_name1)
|
||||||
clip_path2 = folder_paths.get_full_path_or_raise("text_encoders", clip_name2)
|
clip_path2 = folder_paths.get_full_path_or_raise("text_encoders", clip_name2)
|
||||||
if type == "sdxl":
|
if type == "sdxl":
|
||||||
@ -967,7 +977,11 @@ class DualCLIPLoader:
|
|||||||
elif type == "hunyuan_video":
|
elif type == "hunyuan_video":
|
||||||
clip_type = comfy.sd.CLIPType.HUNYUAN_VIDEO
|
clip_type = comfy.sd.CLIPType.HUNYUAN_VIDEO
|
||||||
|
|
||||||
clip = comfy.sd.load_clip(ckpt_paths=[clip_path1, clip_path2], embedding_directory=folder_paths.get_folder_paths("embeddings"), clip_type=clip_type)
|
model_options = {}
|
||||||
|
if device == "cpu":
|
||||||
|
model_options["load_device"] = model_options["offload_device"] = torch.device("cpu")
|
||||||
|
|
||||||
|
clip = comfy.sd.load_clip(ckpt_paths=[clip_path1, clip_path2], embedding_directory=folder_paths.get_folder_paths("embeddings"), clip_type=clip_type, model_options=model_options)
|
||||||
return (clip,)
|
return (clip,)
|
||||||
|
|
||||||
class CLIPVisionLoader:
|
class CLIPVisionLoader:
|
||||||
|
@ -4,7 +4,8 @@ lint.ignore = ["ALL"]
|
|||||||
# Enable specific rules
|
# Enable specific rules
|
||||||
lint.select = [
|
lint.select = [
|
||||||
"S307", # suspicious-eval-usage
|
"S307", # suspicious-eval-usage
|
||||||
"T201", # print-usage
|
"S102", # exec
|
||||||
|
"T", # print-usage
|
||||||
"W",
|
"W",
|
||||||
# The "F" series in Ruff stands for "Pyflakes" rules, which catch various Python syntax errors and undefined names.
|
# The "F" series in Ruff stands for "Pyflakes" rules, which catch various Python syntax errors and undefined names.
|
||||||
# See all rules here: https://docs.astral.sh/ruff/rules/#pyflakes-f
|
# See all rules here: https://docs.astral.sh/ruff/rules/#pyflakes-f
|
||||||
|
4
web/assets/BaseViewTemplate-CsEJhGbv.js → web/assets/BaseViewTemplate-BNGF4K22.js
generated
vendored
4
web/assets/BaseViewTemplate-CsEJhGbv.js → web/assets/BaseViewTemplate-BNGF4K22.js
generated
vendored
@ -1,4 +1,4 @@
|
|||||||
import { d as defineComponent, o as openBlock, f as createElementBlock, J as renderSlot, T as normalizeClass } from "./index-C4Fk50Nx.js";
|
import { d as defineComponent, o as openBlock, f as createElementBlock, J as renderSlot, T as normalizeClass } from "./index-DjNHn37O.js";
|
||||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||||
__name: "BaseViewTemplate",
|
__name: "BaseViewTemplate",
|
||||||
props: {
|
props: {
|
||||||
@ -20,4 +20,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|||||||
export {
|
export {
|
||||||
_sfc_main as _
|
_sfc_main as _
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=BaseViewTemplate-CsEJhGbv.js.map
|
//# sourceMappingURL=BaseViewTemplate-BNGF4K22.js.map
|
6
web/assets/DownloadGitView-DP1MIWYX.js → web/assets/DownloadGitView-DeC7MBzG.js
generated
vendored
6
web/assets/DownloadGitView-DP1MIWYX.js → web/assets/DownloadGitView-DeC7MBzG.js
generated
vendored
@ -1,7 +1,7 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
import { d as defineComponent, o as openBlock, k as createBlock, M as withCtx, H as createBaseVNode, X as toDisplayString, N as createVNode, j as unref, l as script, bW as useRouter } from "./index-C4Fk50Nx.js";
|
import { d as defineComponent, o as openBlock, k as createBlock, M as withCtx, H as createBaseVNode, X as toDisplayString, N as createVNode, j as unref, l as script, bW as useRouter } from "./index-DjNHn37O.js";
|
||||||
import { _ as _sfc_main$1 } from "./BaseViewTemplate-CsEJhGbv.js";
|
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BNGF4K22.js";
|
||||||
const _hoisted_1 = { class: "max-w-screen-sm flex flex-col gap-8 p-8 bg-[url('/assets/images/Git-Logo-White.svg')] bg-no-repeat bg-right-top bg-origin-padding" };
|
const _hoisted_1 = { class: "max-w-screen-sm flex flex-col gap-8 p-8 bg-[url('/assets/images/Git-Logo-White.svg')] bg-no-repeat bg-right-top bg-origin-padding" };
|
||||||
const _hoisted_2 = { class: "mt-24 text-4xl font-bold text-red-500" };
|
const _hoisted_2 = { class: "mt-24 text-4xl font-bold text-red-500" };
|
||||||
const _hoisted_3 = { class: "space-y-4" };
|
const _hoisted_3 = { class: "space-y-4" };
|
||||||
@ -55,4 +55,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|||||||
export {
|
export {
|
||||||
_sfc_main as default
|
_sfc_main as default
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=DownloadGitView-DP1MIWYX.js.map
|
//# sourceMappingURL=DownloadGitView-DeC7MBzG.js.map
|
10
web/assets/ExtensionPanel-CxijYN47.js → web/assets/ExtensionPanel-D4Phn0Zr.js
generated
vendored
10
web/assets/ExtensionPanel-CxijYN47.js → web/assets/ExtensionPanel-D4Phn0Zr.js
generated
vendored
@ -1,9 +1,9 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
import { d as defineComponent, ab as ref, cn as FilterMatchMode, cs as useExtensionStore, a as useSettingStore, m as onMounted, c as computed, o as openBlock, k as createBlock, M as withCtx, N as createVNode, co as SearchBox, j as unref, bZ as script, H as createBaseVNode, f as createElementBlock, E as renderList, X as toDisplayString, aE as createTextVNode, F as Fragment, l as script$1, I as createCommentVNode, aI as script$3, bO as script$4, c4 as script$5, cp as _sfc_main$1 } from "./index-C4Fk50Nx.js";
|
import { d as defineComponent, ab as ref, cn as FilterMatchMode, cs as useExtensionStore, a as useSettingStore, m as onMounted, c as computed, o as openBlock, k as createBlock, M as withCtx, N as createVNode, co as SearchBox, j as unref, bZ as script, H as createBaseVNode, f as createElementBlock, E as renderList, X as toDisplayString, aE as createTextVNode, F as Fragment, l as script$1, I as createCommentVNode, aI as script$3, bO as script$4, c4 as script$5, cp as _sfc_main$1 } from "./index-DjNHn37O.js";
|
||||||
import { s as script$2, a as script$6 } from "./index-CK0rrCYF.js";
|
import { s as script$2, a as script$6 } from "./index-B5F0uxTQ.js";
|
||||||
import "./index-lMQBwSDj.js";
|
import "./index-B-aVupP5.js";
|
||||||
import "./index-B7ycxfFq.js";
|
import "./index-5HFeZax4.js";
|
||||||
const _hoisted_1 = { class: "flex justify-end" };
|
const _hoisted_1 = { class: "flex justify-end" };
|
||||||
const _sfc_main = /* @__PURE__ */ defineComponent({
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
||||||
__name: "ExtensionPanel",
|
__name: "ExtensionPanel",
|
||||||
@ -180,4 +180,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|||||||
export {
|
export {
|
||||||
_sfc_main as default
|
_sfc_main as default
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=ExtensionPanel-CxijYN47.js.map
|
//# sourceMappingURL=ExtensionPanel-D4Phn0Zr.js.map
|
14
web/assets/GraphView-DswvqURL.js → web/assets/GraphView-HVeNbkaW.js
generated
vendored
14
web/assets/GraphView-DswvqURL.js → web/assets/GraphView-HVeNbkaW.js
generated
vendored
@ -1,11 +1,11 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
import { d as defineComponent, u as useExecutionStore, c as computed, a as useSettingStore, b as useWorkflowStore, e as useTitle, o as openBlock, f as createElementBlock, g as useWorkspaceStore, w as watchEffect, h as app, r as resolveDirective, i as withDirectives, v as vShow, j as unref, k as createBlock, n as normalizeStyle, s as showNativeMenu, l as script$d, _ as _export_sfc, m as onMounted, p as onBeforeUnmount, B as BaseStyle, q as script$e, t as getWidth, x as getHeight, y as getOuterWidth, z as getOuterHeight, A as getVNodeProp, C as isArray, D as mergeProps, F as Fragment, E as renderList, G as resolveDynamicComponent, H as createBaseVNode, I as createCommentVNode, J as renderSlot, K as useSidebarTabStore, L as useBottomPanelStore, M as withCtx, N as createVNode, O as getAttribute, P as findSingle, Q as focus, R as equals, S as Ripple, T as normalizeClass, U as getOffset, V as script$f, W as script$g, X as toDisplayString, Y as script$h, Z as markRaw, $ as defineStore, a0 as shallowRef, a1 as useI18n, a2 as useCommandStore, a3 as LiteGraph, a4 as useColorPaletteStore, a5 as watch, a6 as useNodeDefStore, a7 as BadgePosition, a8 as LGraphBadge, a9 as _, aa as NodeBadgeMode, ab as ref, ac as useEventListener, ad as nextTick, ae as st, af as normalizeI18nKey, ag as LGraphGroup, ah as LGraphNode, ai as EditableText, aj as isNotEmpty, ak as UniqueComponentId, al as ZIndex, am as resolveFieldData, an as OverlayEventBus, ao as isEmpty, ap as addStyle, aq as relativePosition, ar as absolutePosition, as as ConnectedOverlayScrollHandler, at as isTouchDevice, au as findLastIndex, av as script$i, aw as script$j, ax as script$k, ay as script$l, az as script$m, aA as script$n, aB as resolveComponent, aC as Transition, aD as createSlots, aE as createTextVNode, aF as useNodeFrequencyStore, aG as useNodeBookmarkStore, aH as highlightQuery, aI as script$o, aJ as formatNumberWithSuffix, aK as NodeSourceType, aL as pushScopeId, aM as popScopeId, aN as NodePreview, aO as NodeSearchFilter, aP as script$p, aQ as SearchFilterChip, aR as useLitegraphService, aS as storeToRefs, aT as isRef, aU as toRaw, aV as LinkReleaseTriggerAction, aW as script$q, aX as useUserStore, aY as useDialogStore, aZ as SettingDialogHeader, a_ as SettingDialogContent, a$ as useKeybindingStore, b0 as Teleport, b1 as LinkMarkerShape, b2 as useModelToNodeStore, b3 as CanvasPointer, b4 as IS_CONTROL_WIDGET, b5 as updateControlWidgetLabel, b6 as useColorPaletteService, b7 as setStorageValue, b8 as api, b9 as usePragmaticDroppable, ba as LGraph, bb as LLink, bc as DragAndScale, bd as LGraphCanvas, be as ContextMenu, bf as ChangeTracker, bg as useWorkflowService, bh as ComfyNodeDefImpl, bi as ComfyModelDef, bj as script$r, bk as script$s, bl as script$t, bm as script$u, bn as script$v, bo as normalizeProps, bp as ToastEventBus, bq as setAttribute, br as TransitionGroup, bs as useToast, bt as useToastStore, bu as resolve, bv as nestedPosition, bw as script$w, bx as isPrintableCharacter, by as useQueueSettingsStore, bz as script$x, bA as useQueuePendingTaskCountStore, bB as useLocalStorage, bC as useDraggable, bD as watchDebounced, bE as inject, bF as useElementBounding, bG as lodashExports, bH as useEventBus, bI as script$z, bJ as guardReactiveProps, bK as useMenuItemStore, bL as usePragmaticDraggable, bM as withModifiers, bN as script$B, bO as script$C, bP as provide, bQ as script$D, bR as useDialogService, bS as LGraphEventMode, bT as useQueueStore, bU as i18n, bV as useModelStore } from "./index-C4Fk50Nx.js";
|
import { d as defineComponent, u as useExecutionStore, c as computed, a as useSettingStore, b as useWorkflowStore, e as useTitle, o as openBlock, f as createElementBlock, g as useWorkspaceStore, w as watchEffect, h as app, r as resolveDirective, i as withDirectives, v as vShow, j as unref, k as createBlock, n as normalizeStyle, s as showNativeMenu, l as script$d, _ as _export_sfc, m as onMounted, p as onBeforeUnmount, B as BaseStyle, q as script$e, t as getWidth, x as getHeight, y as getOuterWidth, z as getOuterHeight, A as getVNodeProp, C as isArray, D as mergeProps, F as Fragment, E as renderList, G as resolveDynamicComponent, H as createBaseVNode, I as createCommentVNode, J as renderSlot, K as useSidebarTabStore, L as useBottomPanelStore, M as withCtx, N as createVNode, O as getAttribute, P as findSingle, Q as focus, R as equals, S as Ripple, T as normalizeClass, U as getOffset, V as script$f, W as script$g, X as toDisplayString, Y as script$h, Z as markRaw, $ as defineStore, a0 as shallowRef, a1 as useI18n, a2 as useCommandStore, a3 as LiteGraph, a4 as useColorPaletteStore, a5 as watch, a6 as useNodeDefStore, a7 as BadgePosition, a8 as LGraphBadge, a9 as _, aa as NodeBadgeMode, ab as ref, ac as useEventListener, ad as nextTick, ae as st, af as normalizeI18nKey, ag as LGraphGroup, ah as LGraphNode, ai as EditableText, aj as isNotEmpty, ak as UniqueComponentId, al as ZIndex, am as resolveFieldData, an as OverlayEventBus, ao as isEmpty, ap as addStyle, aq as relativePosition, ar as absolutePosition, as as ConnectedOverlayScrollHandler, at as isTouchDevice, au as findLastIndex, av as script$i, aw as script$j, ax as script$k, ay as script$l, az as script$m, aA as script$n, aB as resolveComponent, aC as Transition, aD as createSlots, aE as createTextVNode, aF as useNodeFrequencyStore, aG as useNodeBookmarkStore, aH as highlightQuery, aI as script$o, aJ as formatNumberWithSuffix, aK as NodeSourceType, aL as pushScopeId, aM as popScopeId, aN as NodePreview, aO as NodeSearchFilter, aP as script$p, aQ as SearchFilterChip, aR as useLitegraphService, aS as storeToRefs, aT as isRef, aU as toRaw, aV as LinkReleaseTriggerAction, aW as script$q, aX as useUserStore, aY as useDialogStore, aZ as SettingDialogHeader, a_ as SettingDialogContent, a$ as useKeybindingStore, b0 as Teleport, b1 as LinkMarkerShape, b2 as useModelToNodeStore, b3 as CanvasPointer, b4 as IS_CONTROL_WIDGET, b5 as updateControlWidgetLabel, b6 as useColorPaletteService, b7 as setStorageValue, b8 as api, b9 as usePragmaticDroppable, ba as LGraph, bb as LLink, bc as DragAndScale, bd as LGraphCanvas, be as ContextMenu, bf as ChangeTracker, bg as useWorkflowService, bh as ComfyNodeDefImpl, bi as ComfyModelDef, bj as script$r, bk as script$s, bl as script$t, bm as script$u, bn as script$v, bo as normalizeProps, bp as ToastEventBus, bq as setAttribute, br as TransitionGroup, bs as useToast, bt as useToastStore, bu as resolve, bv as nestedPosition, bw as script$w, bx as isPrintableCharacter, by as useQueueSettingsStore, bz as script$x, bA as useQueuePendingTaskCountStore, bB as useLocalStorage, bC as useDraggable, bD as watchDebounced, bE as inject, bF as useElementBounding, bG as lodashExports, bH as useEventBus, bI as script$z, bJ as guardReactiveProps, bK as useMenuItemStore, bL as usePragmaticDraggable, bM as withModifiers, bN as script$B, bO as script$C, bP as provide, bQ as script$D, bR as useDialogService, bS as LGraphEventMode, bT as useQueueStore, bU as i18n, bV as useModelStore } from "./index-DjNHn37O.js";
|
||||||
import { s as script$y } from "./index-hdfnBvYs.js";
|
import { s as script$y } from "./index-jXPKy3pP.js";
|
||||||
import { s as script$A } from "./index-lMQBwSDj.js";
|
import { s as script$A } from "./index-B-aVupP5.js";
|
||||||
import { u as useKeybindingService } from "./keybindingService-D48fkLBy.js";
|
import { u as useKeybindingService } from "./keybindingService-Bx7YdkXn.js";
|
||||||
import { u as useServerConfigStore } from "./serverConfigStore-BawYAb1j.js";
|
import { u as useServerConfigStore } from "./serverConfigStore-CvyKFVuP.js";
|
||||||
import "./index-B7ycxfFq.js";
|
import "./index-5HFeZax4.js";
|
||||||
const DEFAULT_TITLE = "ComfyUI";
|
const DEFAULT_TITLE = "ComfyUI";
|
||||||
const TITLE_SUFFIX = " - ComfyUI";
|
const TITLE_SUFFIX = " - ComfyUI";
|
||||||
const _sfc_main$t = /* @__PURE__ */ defineComponent({
|
const _sfc_main$t = /* @__PURE__ */ defineComponent({
|
||||||
@ -9891,4 +9891,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|||||||
export {
|
export {
|
||||||
_sfc_main as default
|
_sfc_main as default
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=GraphView-DswvqURL.js.map
|
//# sourceMappingURL=GraphView-HVeNbkaW.js.map
|
6
web/assets/InstallView-AV2llYNm.js → web/assets/InstallView-CAcYt0HL.js
generated
vendored
6
web/assets/InstallView-AV2llYNm.js → web/assets/InstallView-CAcYt0HL.js
generated
vendored
@ -1,7 +1,7 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value2) => __defProp(target, "name", { value: value2, configurable: true });
|
var __name = (target, value2) => __defProp(target, "name", { value: value2, configurable: true });
|
||||||
import { B as BaseStyle, q as script$6, o as openBlock, f as createElementBlock, D as mergeProps, c1 as findIndexInList, c2 as find, aB as resolveComponent, k as createBlock, G as resolveDynamicComponent, M as withCtx, H as createBaseVNode, X as toDisplayString, J as renderSlot, I as createCommentVNode, T as normalizeClass, P as findSingle, F as Fragment, aC as Transition, i as withDirectives, v as vShow, ak as UniqueComponentId, d as defineComponent, ab as ref, c3 as useModel, N as createVNode, j as unref, c4 as script$7, bQ as script$8, bM as withModifiers, aP as script$9, a1 as useI18n, c as computed, aI as script$a, aE as createTextVNode, c0 as electronAPI, m as onMounted, r as resolveDirective, av as script$b, c5 as script$c, c6 as script$d, l as script$e, bZ as script$f, c7 as MigrationItems, w as watchEffect, E as renderList, c8 as script$g, bW as useRouter, aL as pushScopeId, aM as popScopeId, aU as toRaw, _ as _export_sfc } from "./index-C4Fk50Nx.js";
|
import { B as BaseStyle, q as script$6, o as openBlock, f as createElementBlock, D as mergeProps, c1 as findIndexInList, c2 as find, aB as resolveComponent, k as createBlock, G as resolveDynamicComponent, M as withCtx, H as createBaseVNode, X as toDisplayString, J as renderSlot, I as createCommentVNode, T as normalizeClass, P as findSingle, F as Fragment, aC as Transition, i as withDirectives, v as vShow, ak as UniqueComponentId, d as defineComponent, ab as ref, c3 as useModel, N as createVNode, j as unref, c4 as script$7, bQ as script$8, bM as withModifiers, aP as script$9, a1 as useI18n, c as computed, aI as script$a, aE as createTextVNode, c0 as electronAPI, m as onMounted, r as resolveDirective, av as script$b, c5 as script$c, c6 as script$d, l as script$e, bZ as script$f, c7 as MigrationItems, w as watchEffect, E as renderList, c8 as script$g, bW as useRouter, aL as pushScopeId, aM as popScopeId, aU as toRaw, _ as _export_sfc } from "./index-DjNHn37O.js";
|
||||||
import { _ as _sfc_main$5 } from "./BaseViewTemplate-CsEJhGbv.js";
|
import { _ as _sfc_main$5 } from "./BaseViewTemplate-BNGF4K22.js";
|
||||||
var classes$4 = {
|
var classes$4 = {
|
||||||
root: /* @__PURE__ */ __name(function root(_ref) {
|
root: /* @__PURE__ */ __name(function root(_ref) {
|
||||||
var instance = _ref.instance;
|
var instance = _ref.instance;
|
||||||
@ -1285,4 +1285,4 @@ const InstallView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-
|
|||||||
export {
|
export {
|
||||||
InstallView as default
|
InstallView as default
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=InstallView-AV2llYNm.js.map
|
//# sourceMappingURL=InstallView-CAcYt0HL.js.map
|
12
web/assets/KeybindingPanel-CxaJ1IiJ.js → web/assets/KeybindingPanel-Dc3C4lG1.js
generated
vendored
12
web/assets/KeybindingPanel-CxaJ1IiJ.js → web/assets/KeybindingPanel-Dc3C4lG1.js
generated
vendored
@ -1,10 +1,10 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
import { d as defineComponent, c as computed, o as openBlock, f as createElementBlock, F as Fragment, E as renderList, N as createVNode, M as withCtx, aE as createTextVNode, X as toDisplayString, j as unref, aI as script, I as createCommentVNode, ab as ref, cn as FilterMatchMode, a$ as useKeybindingStore, a2 as useCommandStore, a1 as useI18n, af as normalizeI18nKey, w as watchEffect, bs as useToast, r as resolveDirective, k as createBlock, co as SearchBox, H as createBaseVNode, l as script$2, av as script$4, bM as withModifiers, bZ as script$5, aP as script$6, i as withDirectives, cp as _sfc_main$2, aL as pushScopeId, aM as popScopeId, cq as KeyComboImpl, cr as KeybindingImpl, _ as _export_sfc } from "./index-C4Fk50Nx.js";
|
import { d as defineComponent, c as computed, o as openBlock, f as createElementBlock, F as Fragment, E as renderList, N as createVNode, M as withCtx, aE as createTextVNode, X as toDisplayString, j as unref, aI as script, I as createCommentVNode, ab as ref, cn as FilterMatchMode, a$ as useKeybindingStore, a2 as useCommandStore, a1 as useI18n, af as normalizeI18nKey, w as watchEffect, bs as useToast, r as resolveDirective, k as createBlock, co as SearchBox, H as createBaseVNode, l as script$2, av as script$4, bM as withModifiers, bZ as script$5, aP as script$6, i as withDirectives, cp as _sfc_main$2, aL as pushScopeId, aM as popScopeId, cq as KeyComboImpl, cr as KeybindingImpl, _ as _export_sfc } from "./index-DjNHn37O.js";
|
||||||
import { s as script$1, a as script$3 } from "./index-CK0rrCYF.js";
|
import { s as script$1, a as script$3 } from "./index-B5F0uxTQ.js";
|
||||||
import { u as useKeybindingService } from "./keybindingService-D48fkLBy.js";
|
import { u as useKeybindingService } from "./keybindingService-Bx7YdkXn.js";
|
||||||
import "./index-lMQBwSDj.js";
|
import "./index-B-aVupP5.js";
|
||||||
import "./index-B7ycxfFq.js";
|
import "./index-5HFeZax4.js";
|
||||||
const _hoisted_1$1 = {
|
const _hoisted_1$1 = {
|
||||||
key: 0,
|
key: 0,
|
||||||
class: "px-2"
|
class: "px-2"
|
||||||
@ -281,4 +281,4 @@ const KeybindingPanel = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "d
|
|||||||
export {
|
export {
|
||||||
KeybindingPanel as default
|
KeybindingPanel as default
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=KeybindingPanel-CxaJ1IiJ.js.map
|
//# sourceMappingURL=KeybindingPanel-Dc3C4lG1.js.map
|
@ -1,9 +1,9 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
import { d as defineComponent, a1 as useI18n, ab as ref, m as onMounted, o as openBlock, k as createBlock, M as withCtx, H as createBaseVNode, X as toDisplayString, N as createVNode, j as unref, aI as script, l as script$2, c0 as electronAPI } from "./index-C4Fk50Nx.js";
|
import { d as defineComponent, a1 as useI18n, ab as ref, m as onMounted, o as openBlock, k as createBlock, M as withCtx, H as createBaseVNode, X as toDisplayString, N as createVNode, j as unref, aI as script, l as script$2, c0 as electronAPI } from "./index-DjNHn37O.js";
|
||||||
import { s as script$1 } from "./index-hdfnBvYs.js";
|
import { s as script$1 } from "./index-jXPKy3pP.js";
|
||||||
import { _ as _sfc_main$1 } from "./BaseViewTemplate-CsEJhGbv.js";
|
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BNGF4K22.js";
|
||||||
import "./index-B7ycxfFq.js";
|
import "./index-5HFeZax4.js";
|
||||||
const _hoisted_1 = { class: "comfy-installer grow flex flex-col gap-4 text-neutral-300 max-w-110" };
|
const _hoisted_1 = { class: "comfy-installer grow flex flex-col gap-4 text-neutral-300 max-w-110" };
|
||||||
const _hoisted_2 = { class: "text-2xl font-semibold text-neutral-100" };
|
const _hoisted_2 = { class: "text-2xl font-semibold text-neutral-100" };
|
||||||
const _hoisted_3 = { class: "m-1 text-neutral-300" };
|
const _hoisted_3 = { class: "m-1 text-neutral-300" };
|
||||||
@ -72,4 +72,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|||||||
export {
|
export {
|
||||||
_sfc_main as default
|
_sfc_main as default
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=ManualConfigurationView-BA4Vtud8.js.map
|
//# sourceMappingURL=ManualConfigurationView-Bi_qHE-n.js.map
|
6
web/assets/NotSupportedView-CRaD8u74.js → web/assets/NotSupportedView-Drz3x2d-.js
generated
vendored
6
web/assets/NotSupportedView-CRaD8u74.js → web/assets/NotSupportedView-Drz3x2d-.js
generated
vendored
@ -1,7 +1,7 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
import { d as defineComponent, bW as useRouter, r as resolveDirective, o as openBlock, k as createBlock, M as withCtx, H as createBaseVNode, X as toDisplayString, N as createVNode, j as unref, l as script, i as withDirectives } from "./index-C4Fk50Nx.js";
|
import { d as defineComponent, bW as useRouter, r as resolveDirective, o as openBlock, k as createBlock, M as withCtx, H as createBaseVNode, X as toDisplayString, N as createVNode, j as unref, l as script, i as withDirectives } from "./index-DjNHn37O.js";
|
||||||
import { _ as _sfc_main$1 } from "./BaseViewTemplate-CsEJhGbv.js";
|
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BNGF4K22.js";
|
||||||
const _imports_0 = "" + new URL("images/sad_girl.png", import.meta.url).href;
|
const _imports_0 = "" + new URL("images/sad_girl.png", import.meta.url).href;
|
||||||
const _hoisted_1 = { class: "sad-container" };
|
const _hoisted_1 = { class: "sad-container" };
|
||||||
const _hoisted_2 = /* @__PURE__ */ createBaseVNode("img", {
|
const _hoisted_2 = /* @__PURE__ */ createBaseVNode("img", {
|
||||||
@ -83,4 +83,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|||||||
export {
|
export {
|
||||||
_sfc_main as default
|
_sfc_main as default
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=NotSupportedView-CRaD8u74.js.map
|
//# sourceMappingURL=NotSupportedView-Drz3x2d-.js.map
|
6
web/assets/ServerConfigPanel-TLv4HMGK.js → web/assets/ServerConfigPanel-Be4StJmv.js
generated
vendored
6
web/assets/ServerConfigPanel-TLv4HMGK.js → web/assets/ServerConfigPanel-Be4StJmv.js
generated
vendored
@ -1,7 +1,7 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
import { H as createBaseVNode, o as openBlock, f as createElementBlock, Z as markRaw, d as defineComponent, a as useSettingStore, aS as storeToRefs, a5 as watch, cO as useCopyToClipboard, a1 as useI18n, k as createBlock, M as withCtx, j as unref, bZ as script, X as toDisplayString, E as renderList, F as Fragment, N as createVNode, l as script$1, I as createCommentVNode, bQ as script$2, cP as FormItem, cp as _sfc_main$1, c0 as electronAPI } from "./index-C4Fk50Nx.js";
|
import { H as createBaseVNode, o as openBlock, f as createElementBlock, Z as markRaw, d as defineComponent, a as useSettingStore, aS as storeToRefs, a5 as watch, cO as useCopyToClipboard, a1 as useI18n, k as createBlock, M as withCtx, j as unref, bZ as script, X as toDisplayString, E as renderList, F as Fragment, N as createVNode, l as script$1, I as createCommentVNode, bQ as script$2, cP as FormItem, cp as _sfc_main$1, c0 as electronAPI } from "./index-DjNHn37O.js";
|
||||||
import { u as useServerConfigStore } from "./serverConfigStore-BawYAb1j.js";
|
import { u as useServerConfigStore } from "./serverConfigStore-CvyKFVuP.js";
|
||||||
const _hoisted_1$1 = {
|
const _hoisted_1$1 = {
|
||||||
viewBox: "0 0 24 24",
|
viewBox: "0 0 24 24",
|
||||||
width: "1.2em",
|
width: "1.2em",
|
||||||
@ -155,4 +155,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|||||||
export {
|
export {
|
||||||
_sfc_main as default
|
_sfc_main as default
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=ServerConfigPanel-TLv4HMGK.js.map
|
//# sourceMappingURL=ServerConfigPanel-Be4StJmv.js.map
|
6
web/assets/ServerStartView-CiO_acWT.js → web/assets/ServerStartView-CIDTUh4x.js
generated
vendored
6
web/assets/ServerStartView-CiO_acWT.js → web/assets/ServerStartView-CIDTUh4x.js
generated
vendored
@ -1,7 +1,7 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
import { d as defineComponent, a1 as useI18n, ab as ref, b_ as ProgressStatus, m as onMounted, o as openBlock, k as createBlock, M as withCtx, H as createBaseVNode, aE as createTextVNode, X as toDisplayString, j as unref, f as createElementBlock, I as createCommentVNode, N as createVNode, l as script, i as withDirectives, v as vShow, b$ as BaseTerminal, aL as pushScopeId, aM as popScopeId, c0 as electronAPI, _ as _export_sfc } from "./index-C4Fk50Nx.js";
|
import { d as defineComponent, a1 as useI18n, ab as ref, b_ as ProgressStatus, m as onMounted, o as openBlock, k as createBlock, M as withCtx, H as createBaseVNode, aE as createTextVNode, X as toDisplayString, j as unref, f as createElementBlock, I as createCommentVNode, N as createVNode, l as script, i as withDirectives, v as vShow, b$ as BaseTerminal, aL as pushScopeId, aM as popScopeId, c0 as electronAPI, _ as _export_sfc } from "./index-DjNHn37O.js";
|
||||||
import { _ as _sfc_main$1 } from "./BaseViewTemplate-CsEJhGbv.js";
|
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BNGF4K22.js";
|
||||||
const _withScopeId = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-42c1131d"), n = n(), popScopeId(), n), "_withScopeId");
|
const _withScopeId = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-42c1131d"), n = n(), popScopeId(), n), "_withScopeId");
|
||||||
const _hoisted_1 = { class: "text-2xl font-bold" };
|
const _hoisted_1 = { class: "text-2xl font-bold" };
|
||||||
const _hoisted_2 = { key: 0 };
|
const _hoisted_2 = { key: 0 };
|
||||||
@ -95,4 +95,4 @@ const ServerStartView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "d
|
|||||||
export {
|
export {
|
||||||
ServerStartView as default
|
ServerStartView as default
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=ServerStartView-CiO_acWT.js.map
|
//# sourceMappingURL=ServerStartView-CIDTUh4x.js.map
|
6
web/assets/UserSelectView-2l9Kbchu.js → web/assets/UserSelectView-B3jYchWu.js
generated
vendored
6
web/assets/UserSelectView-2l9Kbchu.js → web/assets/UserSelectView-B3jYchWu.js
generated
vendored
@ -1,7 +1,7 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
import { d as defineComponent, aX as useUserStore, bW as useRouter, ab as ref, c as computed, m as onMounted, o as openBlock, k as createBlock, M as withCtx, H as createBaseVNode, X as toDisplayString, N as createVNode, bX as withKeys, j as unref, av as script, bQ as script$1, bY as script$2, bZ as script$3, aE as createTextVNode, I as createCommentVNode, l as script$4 } from "./index-C4Fk50Nx.js";
|
import { d as defineComponent, aX as useUserStore, bW as useRouter, ab as ref, c as computed, m as onMounted, o as openBlock, k as createBlock, M as withCtx, H as createBaseVNode, X as toDisplayString, N as createVNode, bX as withKeys, j as unref, av as script, bQ as script$1, bY as script$2, bZ as script$3, aE as createTextVNode, I as createCommentVNode, l as script$4 } from "./index-DjNHn37O.js";
|
||||||
import { _ as _sfc_main$1 } from "./BaseViewTemplate-CsEJhGbv.js";
|
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BNGF4K22.js";
|
||||||
const _hoisted_1 = {
|
const _hoisted_1 = {
|
||||||
id: "comfy-user-selection",
|
id: "comfy-user-selection",
|
||||||
class: "min-w-84 relative rounded-lg bg-[var(--comfy-menu-bg)] p-5 px-10 shadow-lg"
|
class: "min-w-84 relative rounded-lg bg-[var(--comfy-menu-bg)] p-5 px-10 shadow-lg"
|
||||||
@ -99,4 +99,4 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|||||||
export {
|
export {
|
||||||
_sfc_main as default
|
_sfc_main as default
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=UserSelectView-2l9Kbchu.js.map
|
//# sourceMappingURL=UserSelectView-B3jYchWu.js.map
|
6
web/assets/WelcomeView-CB7Th_kO.js → web/assets/WelcomeView-N0ZXLjdi.js
generated
vendored
6
web/assets/WelcomeView-CB7Th_kO.js → web/assets/WelcomeView-N0ZXLjdi.js
generated
vendored
@ -1,7 +1,7 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
import { d as defineComponent, bW as useRouter, o as openBlock, k as createBlock, M as withCtx, H as createBaseVNode, X as toDisplayString, N as createVNode, j as unref, l as script, aL as pushScopeId, aM as popScopeId, _ as _export_sfc } from "./index-C4Fk50Nx.js";
|
import { d as defineComponent, bW as useRouter, o as openBlock, k as createBlock, M as withCtx, H as createBaseVNode, X as toDisplayString, N as createVNode, j as unref, l as script, aL as pushScopeId, aM as popScopeId, _ as _export_sfc } from "./index-DjNHn37O.js";
|
||||||
import { _ as _sfc_main$1 } from "./BaseViewTemplate-CsEJhGbv.js";
|
import { _ as _sfc_main$1 } from "./BaseViewTemplate-BNGF4K22.js";
|
||||||
const _withScopeId = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-7dfaf74c"), n = n(), popScopeId(), n), "_withScopeId");
|
const _withScopeId = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-7dfaf74c"), n = n(), popScopeId(), n), "_withScopeId");
|
||||||
const _hoisted_1 = { class: "flex flex-col items-center justify-center gap-8 p-8" };
|
const _hoisted_1 = { class: "flex flex-col items-center justify-center gap-8 p-8" };
|
||||||
const _hoisted_2 = { class: "animated-gradient-text text-glow select-none" };
|
const _hoisted_2 = { class: "animated-gradient-text text-glow select-none" };
|
||||||
@ -37,4 +37,4 @@ const WelcomeView = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-
|
|||||||
export {
|
export {
|
||||||
WelcomeView as default
|
WelcomeView as default
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=WelcomeView-CB7Th_kO.js.map
|
//# sourceMappingURL=WelcomeView-N0ZXLjdi.js.map
|
4
web/assets/index-B7ycxfFq.js → web/assets/index-5HFeZax4.js
generated
vendored
4
web/assets/index-B7ycxfFq.js → web/assets/index-5HFeZax4.js
generated
vendored
@ -1,6 +1,6 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
import { ct as script$1, H as createBaseVNode, o as openBlock, f as createElementBlock, D as mergeProps } from "./index-C4Fk50Nx.js";
|
import { ct as script$1, H as createBaseVNode, o as openBlock, f as createElementBlock, D as mergeProps } from "./index-DjNHn37O.js";
|
||||||
var script = {
|
var script = {
|
||||||
name: "PlusIcon",
|
name: "PlusIcon",
|
||||||
"extends": script$1
|
"extends": script$1
|
||||||
@ -24,4 +24,4 @@ script.render = render;
|
|||||||
export {
|
export {
|
||||||
script as s
|
script as s
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=index-B7ycxfFq.js.map
|
//# sourceMappingURL=index-5HFeZax4.js.map
|
4
web/assets/index-lMQBwSDj.js → web/assets/index-B-aVupP5.js
generated
vendored
4
web/assets/index-lMQBwSDj.js → web/assets/index-B-aVupP5.js
generated
vendored
@ -1,6 +1,6 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
import { ct as script$1, H as createBaseVNode, o as openBlock, f as createElementBlock, D as mergeProps } from "./index-C4Fk50Nx.js";
|
import { ct as script$1, H as createBaseVNode, o as openBlock, f as createElementBlock, D as mergeProps } from "./index-DjNHn37O.js";
|
||||||
var script = {
|
var script = {
|
||||||
name: "BarsIcon",
|
name: "BarsIcon",
|
||||||
"extends": script$1
|
"extends": script$1
|
||||||
@ -26,4 +26,4 @@ script.render = render;
|
|||||||
export {
|
export {
|
||||||
script as s
|
script as s
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=index-lMQBwSDj.js.map
|
//# sourceMappingURL=index-B-aVupP5.js.map
|
8
web/assets/index-CK0rrCYF.js → web/assets/index-B5F0uxTQ.js
generated
vendored
8
web/assets/index-CK0rrCYF.js → web/assets/index-B5F0uxTQ.js
generated
vendored
@ -1,8 +1,8 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
import { B as BaseStyle, q as script$s, ct as script$t, H as createBaseVNode, o as openBlock, f as createElementBlock, D as mergeProps, X as toDisplayString, S as Ripple, r as resolveDirective, i as withDirectives, k as createBlock, G as resolveDynamicComponent, bY as script$u, aB as resolveComponent, T as normalizeClass, aD as createSlots, M as withCtx, bz as script$v, bw as script$w, F as Fragment, E as renderList, aE as createTextVNode, bq as setAttribute, ak as UniqueComponentId, bo as normalizeProps, J as renderSlot, I as createCommentVNode, R as equals, bk as script$x, c8 as script$y, cu as getFirstFocusableElement, an as OverlayEventBus, A as getVNodeProp, am as resolveFieldData, cv as invokeElementMethod, O as getAttribute, cw as getNextElementSibling, y as getOuterWidth, cx as getPreviousElementSibling, l as script$z, ay as script$A, W as script$B, bn as script$D, aj as isNotEmpty, bM as withModifiers, z as getOuterHeight, cy as _default, al as ZIndex, Q as focus, ap as addStyle, ar as absolutePosition, as as ConnectedOverlayScrollHandler, at as isTouchDevice, cz as FilterOperator, ax as script$E, cA as FocusTrap, N as createVNode, aC as Transition, bX as withKeys, cB as getIndex, aW as script$G, cC as isClickable, cD as clearSelection, cE as localeComparator, cF as sort, cG as FilterService, cn as FilterMatchMode, P as findSingle, c1 as findIndexInList, c2 as find, cH as exportCSV, U as getOffset, cI as getHiddenElementOuterWidth, cJ as getHiddenElementOuterHeight, cK as reorderArray, cL as getWindowScrollTop, cM as removeClass, cN as addClass, ao as isEmpty, aw as script$H, az as script$I } from "./index-C4Fk50Nx.js";
|
import { B as BaseStyle, q as script$s, ct as script$t, H as createBaseVNode, o as openBlock, f as createElementBlock, D as mergeProps, X as toDisplayString, S as Ripple, r as resolveDirective, i as withDirectives, k as createBlock, G as resolveDynamicComponent, bY as script$u, aB as resolveComponent, T as normalizeClass, aD as createSlots, M as withCtx, bz as script$v, bw as script$w, F as Fragment, E as renderList, aE as createTextVNode, bq as setAttribute, ak as UniqueComponentId, bo as normalizeProps, J as renderSlot, I as createCommentVNode, R as equals, bk as script$x, c8 as script$y, cu as getFirstFocusableElement, an as OverlayEventBus, A as getVNodeProp, am as resolveFieldData, cv as invokeElementMethod, O as getAttribute, cw as getNextElementSibling, y as getOuterWidth, cx as getPreviousElementSibling, l as script$z, ay as script$A, W as script$B, bn as script$D, aj as isNotEmpty, bM as withModifiers, z as getOuterHeight, cy as _default, al as ZIndex, Q as focus, ap as addStyle, ar as absolutePosition, as as ConnectedOverlayScrollHandler, at as isTouchDevice, cz as FilterOperator, ax as script$E, cA as FocusTrap, N as createVNode, aC as Transition, bX as withKeys, cB as getIndex, aW as script$G, cC as isClickable, cD as clearSelection, cE as localeComparator, cF as sort, cG as FilterService, cn as FilterMatchMode, P as findSingle, c1 as findIndexInList, c2 as find, cH as exportCSV, U as getOffset, cI as getHiddenElementOuterWidth, cJ as getHiddenElementOuterHeight, cK as reorderArray, cL as getWindowScrollTop, cM as removeClass, cN as addClass, ao as isEmpty, aw as script$H, az as script$I } from "./index-DjNHn37O.js";
|
||||||
import { s as script$C } from "./index-lMQBwSDj.js";
|
import { s as script$C } from "./index-B-aVupP5.js";
|
||||||
import { s as script$F } from "./index-B7ycxfFq.js";
|
import { s as script$F } from "./index-5HFeZax4.js";
|
||||||
var ColumnStyle = BaseStyle.extend({
|
var ColumnStyle = BaseStyle.extend({
|
||||||
name: "column"
|
name: "column"
|
||||||
});
|
});
|
||||||
@ -8783,4 +8783,4 @@ export {
|
|||||||
script as a,
|
script as a,
|
||||||
script$r as s
|
script$r as s
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=index-CK0rrCYF.js.map
|
//# sourceMappingURL=index-B5F0uxTQ.js.map
|
4
web/assets/index-5Sv744Dr.js → web/assets/index-Bordpmzt.js
generated
vendored
4
web/assets/index-5Sv744Dr.js → web/assets/index-Bordpmzt.js
generated
vendored
@ -1,6 +1,6 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
import { ca as ComfyDialog, cb as $el, cc as ComfyApp, h as app, a3 as LiteGraph, bd as LGraphCanvas, cd as useExtensionService, ce as processDynamicPrompt, cf as isElectron, c0 as electronAPI, bR as useDialogService, cg as t, ch as DraggableList, bt as useToastStore, ah as LGraphNode, ci as applyTextReplacements, cj as ComfyWidgets, ck as addValueControlWidgets, a6 as useNodeDefStore, cl as serialise, cm as deserialiseAndCreate, b8 as api, a as useSettingStore, ag as LGraphGroup, ad as nextTick } from "./index-C4Fk50Nx.js";
|
import { ca as ComfyDialog, cb as $el, cc as ComfyApp, h as app, a3 as LiteGraph, bd as LGraphCanvas, cd as useExtensionService, ce as processDynamicPrompt, cf as isElectron, c0 as electronAPI, bR as useDialogService, cg as t, ch as DraggableList, bt as useToastStore, ah as LGraphNode, ci as applyTextReplacements, cj as ComfyWidgets, ck as addValueControlWidgets, a6 as useNodeDefStore, cl as serialise, cm as deserialiseAndCreate, b8 as api, a as useSettingStore, ag as LGraphGroup, ad as nextTick } from "./index-DjNHn37O.js";
|
||||||
class ClipspaceDialog extends ComfyDialog {
|
class ClipspaceDialog extends ComfyDialog {
|
||||||
static {
|
static {
|
||||||
__name(this, "ClipspaceDialog");
|
__name(this, "ClipspaceDialog");
|
||||||
@ -53211,4 +53211,4 @@ app.registerExtension({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
//# sourceMappingURL=index-5Sv744Dr.js.map
|
//# sourceMappingURL=index-Bordpmzt.js.map
|
60
web/assets/index-C4Fk50Nx.js → web/assets/index-DjNHn37O.js
generated
vendored
60
web/assets/index-C4Fk50Nx.js → web/assets/index-DjNHn37O.js
generated
vendored
@ -1,4 +1,4 @@
|
|||||||
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./GraphView-DswvqURL.js","./index-hdfnBvYs.js","./index-B7ycxfFq.js","./index-lMQBwSDj.js","./keybindingService-D48fkLBy.js","./serverConfigStore-BawYAb1j.js","./GraphView-CIRWBKTm.css","./UserSelectView-2l9Kbchu.js","./BaseViewTemplate-CsEJhGbv.js","./ServerStartView-CiO_acWT.js","./ServerStartView-CnyN4Ib6.css","./InstallView-AV2llYNm.js","./InstallView-CwQdoH-C.css","./WelcomeView-CB7Th_kO.js","./WelcomeView-Brz3-luE.css","./NotSupportedView-CRaD8u74.js","./NotSupportedView-bFzHmqNj.css","./DownloadGitView-DP1MIWYX.js","./ManualConfigurationView-BA4Vtud8.js","./ManualConfigurationView-B6ecEClB.css","./KeybindingPanel-CxaJ1IiJ.js","./index-CK0rrCYF.js","./KeybindingPanel-DvrUYZ4S.css","./ExtensionPanel-CxijYN47.js","./ServerConfigPanel-TLv4HMGK.js","./index-5Sv744Dr.js","./index-BRhY6FpL.css"])))=>i.map(i=>d[i]);
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./GraphView-HVeNbkaW.js","./index-jXPKy3pP.js","./index-5HFeZax4.js","./index-B-aVupP5.js","./keybindingService-Bx7YdkXn.js","./serverConfigStore-CvyKFVuP.js","./GraphView-CIRWBKTm.css","./UserSelectView-B3jYchWu.js","./BaseViewTemplate-BNGF4K22.js","./ServerStartView-CIDTUh4x.js","./ServerStartView-CnyN4Ib6.css","./InstallView-CAcYt0HL.js","./InstallView-CwQdoH-C.css","./WelcomeView-N0ZXLjdi.js","./WelcomeView-Brz3-luE.css","./NotSupportedView-Drz3x2d-.js","./NotSupportedView-bFzHmqNj.css","./DownloadGitView-DeC7MBzG.js","./ManualConfigurationView-Bi_qHE-n.js","./ManualConfigurationView-B6ecEClB.css","./KeybindingPanel-Dc3C4lG1.js","./index-B5F0uxTQ.js","./KeybindingPanel-DvrUYZ4S.css","./ExtensionPanel-D4Phn0Zr.js","./ServerConfigPanel-Be4StJmv.js","./index-Bordpmzt.js","./index-BRhY6FpL.css"])))=>i.map(i=>d[i]);
|
||||||
var __defProp2 = Object.defineProperty;
|
var __defProp2 = Object.defineProperty;
|
||||||
var __name = (target, value4) => __defProp2(target, "name", { value: value4, configurable: true });
|
var __name = (target, value4) => __defProp2(target, "name", { value: value4, configurable: true });
|
||||||
(/* @__PURE__ */ __name(function polyfill() {
|
(/* @__PURE__ */ __name(function polyfill() {
|
||||||
@ -38279,7 +38279,7 @@ class LGraphCanvas {
|
|||||||
} else if (e2.type == "keyup") {
|
} else if (e2.type == "keyup") {
|
||||||
if (e2.keyCode == 32) {
|
if (e2.keyCode == 32) {
|
||||||
this.read_only = false;
|
this.read_only = false;
|
||||||
this.dragging_canvas = this._previously_dragging_canvas ?? false;
|
this.dragging_canvas = (this._previously_dragging_canvas ?? false) && this.pointer.isDown;
|
||||||
this._previously_dragging_canvas = null;
|
this._previously_dragging_canvas = null;
|
||||||
}
|
}
|
||||||
if (this.selected_nodes) {
|
if (this.selected_nodes) {
|
||||||
@ -46123,7 +46123,7 @@ const router = createRouter({
|
|||||||
{
|
{
|
||||||
path: "",
|
path: "",
|
||||||
name: "GraphView",
|
name: "GraphView",
|
||||||
component: /* @__PURE__ */ __name(() => __vitePreload(() => import("./GraphView-DswvqURL.js"), true ? __vite__mapDeps([0,1,2,3,4,5,6]) : void 0, import.meta.url), "component"),
|
component: /* @__PURE__ */ __name(() => __vitePreload(() => import("./GraphView-HVeNbkaW.js"), true ? __vite__mapDeps([0,1,2,3,4,5,6]) : void 0, import.meta.url), "component"),
|
||||||
beforeEnter: /* @__PURE__ */ __name(async (to, from2, next2) => {
|
beforeEnter: /* @__PURE__ */ __name(async (to, from2, next2) => {
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
await userStore.initialize();
|
await userStore.initialize();
|
||||||
@ -46137,42 +46137,42 @@ const router = createRouter({
|
|||||||
{
|
{
|
||||||
path: "user-select",
|
path: "user-select",
|
||||||
name: "UserSelectView",
|
name: "UserSelectView",
|
||||||
component: /* @__PURE__ */ __name(() => __vitePreload(() => import("./UserSelectView-2l9Kbchu.js"), true ? __vite__mapDeps([7,8]) : void 0, import.meta.url), "component")
|
component: /* @__PURE__ */ __name(() => __vitePreload(() => import("./UserSelectView-B3jYchWu.js"), true ? __vite__mapDeps([7,8]) : void 0, import.meta.url), "component")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "server-start",
|
path: "server-start",
|
||||||
name: "ServerStartView",
|
name: "ServerStartView",
|
||||||
component: /* @__PURE__ */ __name(() => __vitePreload(() => import("./ServerStartView-CiO_acWT.js"), true ? __vite__mapDeps([9,8,10]) : void 0, import.meta.url), "component"),
|
component: /* @__PURE__ */ __name(() => __vitePreload(() => import("./ServerStartView-CIDTUh4x.js"), true ? __vite__mapDeps([9,8,10]) : void 0, import.meta.url), "component"),
|
||||||
beforeEnter: guardElectronAccess
|
beforeEnter: guardElectronAccess
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "install",
|
path: "install",
|
||||||
name: "InstallView",
|
name: "InstallView",
|
||||||
component: /* @__PURE__ */ __name(() => __vitePreload(() => import("./InstallView-AV2llYNm.js"), true ? __vite__mapDeps([11,8,12]) : void 0, import.meta.url), "component"),
|
component: /* @__PURE__ */ __name(() => __vitePreload(() => import("./InstallView-CAcYt0HL.js"), true ? __vite__mapDeps([11,8,12]) : void 0, import.meta.url), "component"),
|
||||||
beforeEnter: guardElectronAccess
|
beforeEnter: guardElectronAccess
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "welcome",
|
path: "welcome",
|
||||||
name: "WelcomeView",
|
name: "WelcomeView",
|
||||||
component: /* @__PURE__ */ __name(() => __vitePreload(() => import("./WelcomeView-CB7Th_kO.js"), true ? __vite__mapDeps([13,8,14]) : void 0, import.meta.url), "component"),
|
component: /* @__PURE__ */ __name(() => __vitePreload(() => import("./WelcomeView-N0ZXLjdi.js"), true ? __vite__mapDeps([13,8,14]) : void 0, import.meta.url), "component"),
|
||||||
beforeEnter: guardElectronAccess
|
beforeEnter: guardElectronAccess
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "not-supported",
|
path: "not-supported",
|
||||||
name: "NotSupportedView",
|
name: "NotSupportedView",
|
||||||
component: /* @__PURE__ */ __name(() => __vitePreload(() => import("./NotSupportedView-CRaD8u74.js"), true ? __vite__mapDeps([15,8,16]) : void 0, import.meta.url), "component"),
|
component: /* @__PURE__ */ __name(() => __vitePreload(() => import("./NotSupportedView-Drz3x2d-.js"), true ? __vite__mapDeps([15,8,16]) : void 0, import.meta.url), "component"),
|
||||||
beforeEnter: guardElectronAccess
|
beforeEnter: guardElectronAccess
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "download-git",
|
path: "download-git",
|
||||||
name: "DownloadGitView",
|
name: "DownloadGitView",
|
||||||
component: /* @__PURE__ */ __name(() => __vitePreload(() => import("./DownloadGitView-DP1MIWYX.js"), true ? __vite__mapDeps([17,8]) : void 0, import.meta.url), "component"),
|
component: /* @__PURE__ */ __name(() => __vitePreload(() => import("./DownloadGitView-DeC7MBzG.js"), true ? __vite__mapDeps([17,8]) : void 0, import.meta.url), "component"),
|
||||||
beforeEnter: guardElectronAccess
|
beforeEnter: guardElectronAccess
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "manual-configuration",
|
path: "manual-configuration",
|
||||||
name: "ManualConfigurationView",
|
name: "ManualConfigurationView",
|
||||||
component: /* @__PURE__ */ __name(() => __vitePreload(() => import("./ManualConfigurationView-BA4Vtud8.js"), true ? __vite__mapDeps([18,1,2,8,19]) : void 0, import.meta.url), "component"),
|
component: /* @__PURE__ */ __name(() => __vitePreload(() => import("./ManualConfigurationView-Bi_qHE-n.js"), true ? __vite__mapDeps([18,1,2,8,19]) : void 0, import.meta.url), "component"),
|
||||||
beforeEnter: guardElectronAccess
|
beforeEnter: guardElectronAccess
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -58027,7 +58027,7 @@ const _sfc_main$Z = /* @__PURE__ */ defineComponent({
|
|||||||
});
|
});
|
||||||
const config$1 = {
|
const config$1 = {
|
||||||
app_title: "ComfyUI",
|
app_title: "ComfyUI",
|
||||||
app_version: "1.6.17"
|
app_version: "1.6.18"
|
||||||
};
|
};
|
||||||
/*!
|
/*!
|
||||||
* shared v9.13.1
|
* shared v9.13.1
|
||||||
@ -116940,7 +116940,11 @@ const useSettingStore = /* @__PURE__ */ defineStore("setting", () => {
|
|||||||
}
|
}
|
||||||
__name(exists, "exists");
|
__name(exists, "exists");
|
||||||
async function set3(key, value4) {
|
async function set3(key, value4) {
|
||||||
const newValue2 = tryMigrateDeprecatedValue(settingsById.value[key], value4);
|
const clonedValue = _.cloneDeep(value4);
|
||||||
|
const newValue2 = tryMigrateDeprecatedValue(
|
||||||
|
settingsById.value[key],
|
||||||
|
clonedValue
|
||||||
|
);
|
||||||
const oldValue2 = get3(key);
|
const oldValue2 = get3(key);
|
||||||
if (newValue2 === oldValue2) return;
|
if (newValue2 === oldValue2) return;
|
||||||
onChange(settingsById.value[key], newValue2, oldValue2);
|
onChange(settingsById.value[key], newValue2, oldValue2);
|
||||||
@ -116949,7 +116953,7 @@ const useSettingStore = /* @__PURE__ */ defineStore("setting", () => {
|
|||||||
}
|
}
|
||||||
__name(set3, "set");
|
__name(set3, "set");
|
||||||
function get3(key) {
|
function get3(key) {
|
||||||
return settingValues.value[key] ?? getDefaultValue(key);
|
return _.cloneDeep(settingValues.value[key] ?? getDefaultValue(key));
|
||||||
}
|
}
|
||||||
__name(get3, "get");
|
__name(get3, "get");
|
||||||
function getDefaultValue(key) {
|
function getDefaultValue(key) {
|
||||||
@ -117954,7 +117958,7 @@ const useSystemStatsStore = /* @__PURE__ */ defineStore("systemStats", () => {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
const useAboutPanelStore = /* @__PURE__ */ defineStore("aboutPanel", () => {
|
const useAboutPanelStore = /* @__PURE__ */ defineStore("aboutPanel", () => {
|
||||||
const frontendVersion = "1.6.17";
|
const frontendVersion = "1.6.18";
|
||||||
const extensionStore = useExtensionStore();
|
const extensionStore = useExtensionStore();
|
||||||
const systemStatsStore = useSystemStatsStore();
|
const systemStatsStore = useSystemStatsStore();
|
||||||
const coreVersion = computed(
|
const coreVersion = computed(
|
||||||
@ -123467,13 +123471,13 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
|
|||||||
setup(__props) {
|
setup(__props) {
|
||||||
const props = __props;
|
const props = __props;
|
||||||
const KeybindingPanel = /* @__PURE__ */ defineAsyncComponent(
|
const KeybindingPanel = /* @__PURE__ */ defineAsyncComponent(
|
||||||
() => __vitePreload(() => import("./KeybindingPanel-CxaJ1IiJ.js"), true ? __vite__mapDeps([20,21,3,2,4,22]) : void 0, import.meta.url)
|
() => __vitePreload(() => import("./KeybindingPanel-Dc3C4lG1.js"), true ? __vite__mapDeps([20,21,3,2,4,22]) : void 0, import.meta.url)
|
||||||
);
|
);
|
||||||
const ExtensionPanel = /* @__PURE__ */ defineAsyncComponent(
|
const ExtensionPanel = /* @__PURE__ */ defineAsyncComponent(
|
||||||
() => __vitePreload(() => import("./ExtensionPanel-CxijYN47.js"), true ? __vite__mapDeps([23,21,3,2]) : void 0, import.meta.url)
|
() => __vitePreload(() => import("./ExtensionPanel-D4Phn0Zr.js"), true ? __vite__mapDeps([23,21,3,2]) : void 0, import.meta.url)
|
||||||
);
|
);
|
||||||
const ServerConfigPanel = /* @__PURE__ */ defineAsyncComponent(
|
const ServerConfigPanel = /* @__PURE__ */ defineAsyncComponent(
|
||||||
() => __vitePreload(() => import("./ServerConfigPanel-TLv4HMGK.js"), true ? __vite__mapDeps([24,5]) : void 0, import.meta.url)
|
() => __vitePreload(() => import("./ServerConfigPanel-Be4StJmv.js"), true ? __vite__mapDeps([24,5]) : void 0, import.meta.url)
|
||||||
);
|
);
|
||||||
const aboutPanelNode = {
|
const aboutPanelNode = {
|
||||||
key: "about",
|
key: "about",
|
||||||
@ -124637,7 +124641,7 @@ const useWorkflowTemplatesStore = /* @__PURE__ */ defineStore(
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
const _withScopeId$e = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-2d616ed7"), n = n(), popScopeId(), n), "_withScopeId$e");
|
const _withScopeId$e = /* @__PURE__ */ __name((n) => (pushScopeId("data-v-fc26284b"), n = n(), popScopeId(), n), "_withScopeId$e");
|
||||||
const _hoisted_1$w = {
|
const _hoisted_1$w = {
|
||||||
class: "flex h-96",
|
class: "flex h-96",
|
||||||
"data-testid": "template-workflows-content"
|
"data-testid": "template-workflows-content"
|
||||||
@ -124694,7 +124698,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
|
|||||||
workflowLoading.value = id3;
|
workflowLoading.value = id3;
|
||||||
let json;
|
let json;
|
||||||
if (selectedTab.value.moduleName === "default") {
|
if (selectedTab.value.moduleName === "default") {
|
||||||
json = await fetch(api.fileURL(`templates/${id3}.json`)).then(
|
json = await fetch(api.fileURL(`/templates/${id3}.json`)).then(
|
||||||
(r) => r.json()
|
(r) => r.json()
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
@ -124751,7 +124755,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const TemplateWorkflowsContent = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["__scopeId", "data-v-2d616ed7"]]);
|
const TemplateWorkflowsContent = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["__scopeId", "data-v-fc26284b"]]);
|
||||||
const useDialogService = /* @__PURE__ */ __name(() => {
|
const useDialogService = /* @__PURE__ */ __name(() => {
|
||||||
const dialogStore = useDialogStore();
|
const dialogStore = useDialogStore();
|
||||||
function showLoadWorkflowWarning(props) {
|
function showLoadWorkflowWarning(props) {
|
||||||
@ -124946,6 +124950,14 @@ const useKeybindingStore = /* @__PURE__ */ defineStore("keybinding", () => {
|
|||||||
const defaultKeybindings = ref({});
|
const defaultKeybindings = ref({});
|
||||||
const userKeybindings = ref({});
|
const userKeybindings = ref({});
|
||||||
const userUnsetKeybindings = ref({});
|
const userUnsetKeybindings = ref({});
|
||||||
|
function getUserKeybindings() {
|
||||||
|
return userKeybindings.value;
|
||||||
|
}
|
||||||
|
__name(getUserKeybindings, "getUserKeybindings");
|
||||||
|
function getUserUnsetKeybindings() {
|
||||||
|
return userUnsetKeybindings.value;
|
||||||
|
}
|
||||||
|
__name(getUserUnsetKeybindings, "getUserUnsetKeybindings");
|
||||||
const keybindingByKeyCombo = computed(() => {
|
const keybindingByKeyCombo = computed(() => {
|
||||||
const result = {
|
const result = {
|
||||||
...defaultKeybindings.value
|
...defaultKeybindings.value
|
||||||
@ -125065,8 +125077,8 @@ const useKeybindingStore = /* @__PURE__ */ defineStore("keybinding", () => {
|
|||||||
__name(isCommandKeybindingModified, "isCommandKeybindingModified");
|
__name(isCommandKeybindingModified, "isCommandKeybindingModified");
|
||||||
return {
|
return {
|
||||||
keybindings,
|
keybindings,
|
||||||
userKeybindings,
|
getUserKeybindings,
|
||||||
userUnsetKeybindings,
|
getUserUnsetKeybindings,
|
||||||
getKeybinding,
|
getKeybinding,
|
||||||
getKeybindingsByCommandId,
|
getKeybindingsByCommandId,
|
||||||
getKeybindingByCommandId,
|
getKeybindingByCommandId,
|
||||||
@ -164042,7 +164054,7 @@ const useExtensionService = /* @__PURE__ */ __name(() => {
|
|||||||
settingStore.get("Comfy.Extension.Disabled")
|
settingStore.get("Comfy.Extension.Disabled")
|
||||||
);
|
);
|
||||||
const extensions = await api.getExtensions();
|
const extensions = await api.getExtensions();
|
||||||
await __vitePreload(() => import("./index-5Sv744Dr.js"), true ? __vite__mapDeps([25,26]) : void 0, import.meta.url);
|
await __vitePreload(() => import("./index-Bordpmzt.js"), true ? __vite__mapDeps([25,26]) : void 0, import.meta.url);
|
||||||
extensionStore.captureCoreExtensions();
|
extensionStore.captureCoreExtensions();
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
extensions.filter((extension) => !extension.includes("extensions/core")).map(async (ext) => {
|
extensions.filter((extension) => !extension.includes("extensions/core")).map(async (ext) => {
|
||||||
@ -184710,4 +184722,4 @@ export {
|
|||||||
getOuterWidth as y,
|
getOuterWidth as y,
|
||||||
getOuterHeight as z
|
getOuterHeight as z
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=index-C4Fk50Nx.js.map
|
//# sourceMappingURL=index-DjNHn37O.js.map
|
6
web/assets/index-hdfnBvYs.js → web/assets/index-jXPKy3pP.js
generated
vendored
6
web/assets/index-hdfnBvYs.js → web/assets/index-jXPKy3pP.js
generated
vendored
@ -1,7 +1,7 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
import { B as BaseStyle, q as script$2, ak as UniqueComponentId, c9 as script$4, l as script$5, S as Ripple, aB as resolveComponent, o as openBlock, f as createElementBlock, D as mergeProps, H as createBaseVNode, J as renderSlot, T as normalizeClass, X as toDisplayString, I as createCommentVNode, k as createBlock, M as withCtx, G as resolveDynamicComponent, N as createVNode, aC as Transition, i as withDirectives, v as vShow } from "./index-C4Fk50Nx.js";
|
import { B as BaseStyle, q as script$2, ak as UniqueComponentId, c9 as script$4, l as script$5, S as Ripple, aB as resolveComponent, o as openBlock, f as createElementBlock, D as mergeProps, H as createBaseVNode, J as renderSlot, T as normalizeClass, X as toDisplayString, I as createCommentVNode, k as createBlock, M as withCtx, G as resolveDynamicComponent, N as createVNode, aC as Transition, i as withDirectives, v as vShow } from "./index-DjNHn37O.js";
|
||||||
import { s as script$3 } from "./index-B7ycxfFq.js";
|
import { s as script$3 } from "./index-5HFeZax4.js";
|
||||||
var theme = /* @__PURE__ */ __name(function theme2(_ref) {
|
var theme = /* @__PURE__ */ __name(function theme2(_ref) {
|
||||||
var dt = _ref.dt;
|
var dt = _ref.dt;
|
||||||
return "\n.p-panel {\n border: 1px solid ".concat(dt("panel.border.color"), ";\n border-radius: ").concat(dt("panel.border.radius"), ";\n background: ").concat(dt("panel.background"), ";\n color: ").concat(dt("panel.color"), ";\n}\n\n.p-panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: ").concat(dt("panel.header.padding"), ";\n background: ").concat(dt("panel.header.background"), ";\n color: ").concat(dt("panel.header.color"), ";\n border-style: solid;\n border-width: ").concat(dt("panel.header.border.width"), ";\n border-color: ").concat(dt("panel.header.border.color"), ";\n border-radius: ").concat(dt("panel.header.border.radius"), ";\n}\n\n.p-panel-toggleable .p-panel-header {\n padding: ").concat(dt("panel.toggleable.header.padding"), ";\n}\n\n.p-panel-title {\n line-height: 1;\n font-weight: ").concat(dt("panel.title.font.weight"), ";\n}\n\n.p-panel-content {\n padding: ").concat(dt("panel.content.padding"), ";\n}\n\n.p-panel-footer {\n padding: ").concat(dt("panel.footer.padding"), ";\n}\n");
|
return "\n.p-panel {\n border: 1px solid ".concat(dt("panel.border.color"), ";\n border-radius: ").concat(dt("panel.border.radius"), ";\n background: ").concat(dt("panel.background"), ";\n color: ").concat(dt("panel.color"), ";\n}\n\n.p-panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: ").concat(dt("panel.header.padding"), ";\n background: ").concat(dt("panel.header.background"), ";\n color: ").concat(dt("panel.header.color"), ";\n border-style: solid;\n border-width: ").concat(dt("panel.header.border.width"), ";\n border-color: ").concat(dt("panel.header.border.color"), ";\n border-radius: ").concat(dt("panel.header.border.radius"), ";\n}\n\n.p-panel-toggleable .p-panel-header {\n padding: ").concat(dt("panel.toggleable.header.padding"), ";\n}\n\n.p-panel-title {\n line-height: 1;\n font-weight: ").concat(dt("panel.title.font.weight"), ";\n}\n\n.p-panel-content {\n padding: ").concat(dt("panel.content.padding"), ";\n}\n\n.p-panel-footer {\n padding: ").concat(dt("panel.footer.padding"), ";\n}\n");
|
||||||
@ -170,4 +170,4 @@ script.render = render;
|
|||||||
export {
|
export {
|
||||||
script as s
|
script as s
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=index-hdfnBvYs.js.map
|
//# sourceMappingURL=index-jXPKy3pP.js.map
|
2
web/assets/index-DmMtlpqz.css → web/assets/index-t-sFBuUC.css
generated
vendored
2
web/assets/index-DmMtlpqz.css → web/assets/index-t-sFBuUC.css
generated
vendored
@ -3886,7 +3886,7 @@ audio.comfy-audio.empty-audio-widget {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.carousel[data-v-2d616ed7] {
|
.carousel[data-v-fc26284b] {
|
||||||
width: 66vw;
|
width: 66vw;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
8
web/assets/keybindingService-D48fkLBy.js → web/assets/keybindingService-Bx7YdkXn.js
generated
vendored
8
web/assets/keybindingService-D48fkLBy.js → web/assets/keybindingService-Bx7YdkXn.js
generated
vendored
@ -1,6 +1,6 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
import { a$ as useKeybindingStore, a2 as useCommandStore, a as useSettingStore, cq as KeyComboImpl, cr as KeybindingImpl } from "./index-C4Fk50Nx.js";
|
import { a$ as useKeybindingStore, a2 as useCommandStore, a as useSettingStore, cq as KeyComboImpl, cr as KeybindingImpl } from "./index-DjNHn37O.js";
|
||||||
const CORE_KEYBINDINGS = [
|
const CORE_KEYBINDINGS = [
|
||||||
{
|
{
|
||||||
combo: {
|
combo: {
|
||||||
@ -229,11 +229,11 @@ const useKeybindingService = /* @__PURE__ */ __name(() => {
|
|||||||
async function persistUserKeybindings() {
|
async function persistUserKeybindings() {
|
||||||
await settingStore.set(
|
await settingStore.set(
|
||||||
"Comfy.Keybinding.NewBindings",
|
"Comfy.Keybinding.NewBindings",
|
||||||
Object.values(keybindingStore.userKeybindings.value)
|
Object.values(keybindingStore.getUserKeybindings())
|
||||||
);
|
);
|
||||||
await settingStore.set(
|
await settingStore.set(
|
||||||
"Comfy.Keybinding.UnsetBindings",
|
"Comfy.Keybinding.UnsetBindings",
|
||||||
Object.values(keybindingStore.userUnsetKeybindings.value)
|
Object.values(keybindingStore.getUserUnsetKeybindings())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
__name(persistUserKeybindings, "persistUserKeybindings");
|
__name(persistUserKeybindings, "persistUserKeybindings");
|
||||||
@ -247,4 +247,4 @@ const useKeybindingService = /* @__PURE__ */ __name(() => {
|
|||||||
export {
|
export {
|
||||||
useKeybindingService as u
|
useKeybindingService as u
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=keybindingService-D48fkLBy.js.map
|
//# sourceMappingURL=keybindingService-Bx7YdkXn.js.map
|
4
web/assets/serverConfigStore-BawYAb1j.js → web/assets/serverConfigStore-CvyKFVuP.js
generated
vendored
4
web/assets/serverConfigStore-BawYAb1j.js → web/assets/serverConfigStore-CvyKFVuP.js
generated
vendored
@ -1,6 +1,6 @@
|
|||||||
var __defProp = Object.defineProperty;
|
var __defProp = Object.defineProperty;
|
||||||
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
||||||
import { $ as defineStore, ab as ref, c as computed } from "./index-C4Fk50Nx.js";
|
import { $ as defineStore, ab as ref, c as computed } from "./index-DjNHn37O.js";
|
||||||
const useServerConfigStore = defineStore("serverConfig", () => {
|
const useServerConfigStore = defineStore("serverConfig", () => {
|
||||||
const serverConfigById = ref({});
|
const serverConfigById = ref({});
|
||||||
const serverConfigs = computed(() => {
|
const serverConfigs = computed(() => {
|
||||||
@ -87,4 +87,4 @@ const useServerConfigStore = defineStore("serverConfig", () => {
|
|||||||
export {
|
export {
|
||||||
useServerConfigStore as u
|
useServerConfigStore as u
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=serverConfigStore-BawYAb1j.js.map
|
//# sourceMappingURL=serverConfigStore-CvyKFVuP.js.map
|
4
web/index.html
vendored
4
web/index.html
vendored
@ -6,8 +6,8 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
|
||||||
<link rel="stylesheet" type="text/css" href="user.css" />
|
<link rel="stylesheet" type="text/css" href="user.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="materialdesignicons.min.css" />
|
<link rel="stylesheet" type="text/css" href="materialdesignicons.min.css" />
|
||||||
<script type="module" crossorigin src="./assets/index-C4Fk50Nx.js"></script>
|
<script type="module" crossorigin src="./assets/index-DjNHn37O.js"></script>
|
||||||
<link rel="stylesheet" crossorigin href="./assets/index-DmMtlpqz.css">
|
<link rel="stylesheet" crossorigin href="./assets/index-t-sFBuUC.css">
|
||||||
</head>
|
</head>
|
||||||
<body class="litegraph grid">
|
<body class="litegraph grid">
|
||||||
<div id="vue-app"></div>
|
<div id="vue-app"></div>
|
||||||
|
Loading…
Reference in New Issue
Block a user