diff --git a/README.md b/README.md index 306339da..99050730 100644 --- a/README.md +++ b/README.md @@ -315,6 +315,8 @@ NODE_CLASS_MAPPINGS.update({ * When you create the `pip_overrides.json` file, it changes the installation of specific pip packages to installations defined by the user. * Please refer to the `pip_overrides.json.template` file. +* Use `aria2` as downloader + * [howto](docs/en/use_aria2.md) ## Scanner When you run the `scan.sh` script: @@ -340,7 +342,8 @@ When you run the `scan.sh` script: * Currently, `vid2vid` is not being updated, causing compatibility issues. * If you encounter the error message `Overlapped Object has pending operation at deallocation on Comfyui Manager load` under Windows * Edit `config.ini` file: add `windows_selector_event_loop_policy = True` - +* if `SSL: CERTIFICATE_VERIFY_FAILED` error is occured. + * Edit `config.ini` file: add `bypass_ssl = True` ## Security policy * Edit `config.ini` file: add `security_level = ` @@ -380,6 +383,8 @@ When you run the `scan.sh` script: * https://github.com/SimithWang/comfyui-renameImages * https://github.com/icefairy64/comfyui-model-tilt * https://github.com/andrewharp/ComfyUI-EasyNodes +* https://github.com/SimithWang/comfyui-renameImages +* https://github.com/Tcheko243/ComfyUI-Photographer-Alpha7-Nodes ## Roadmap @@ -391,10 +396,10 @@ When you run the `scan.sh` script: - [ ] Auto migration for custom nodes with changed structures. - [ ] Version control feature for nodes. - [ ] List of currently used custom nodes. -- [ ] Download support multiple model download. -- [ ] Model download via url. +- [x] Download support multiple model download. +- [x] Model download via url. - [x] List sorting (custom nodes). -- [ ] List sorting (model). +- [x] List sorting (model). - [ ] Provides description of node. diff --git a/custom-node-list.json b/custom-node-list.json index 1e3c8d93..d1269f40 100644 --- a/custom-node-list.json +++ b/custom-node-list.json @@ -655,17 +655,6 @@ "install_type": "git-clone", "description": "This extension aims to add support for various random image diffusion models to ComfyUI." }, - { - "author": "Kaharos94", - "title": "ComfyUI-Saveaswebp", - "id": "save-webp", - "reference": "https://github.com/Kaharos94/ComfyUI-Saveaswebp", - "files": [ - "https://github.com/Kaharos94/ComfyUI-Saveaswebp" - ], - "install_type": "git-clone", - "description": "Save a picture as Webp file in Comfy + Workflow loading" - }, { "author": "SLAPaper", "title": "ComfyUI-Image-Selector", @@ -791,13 +780,13 @@ "author": "TinyTerra", "title": "ComfyUI_tinyterraNodes", "id": "ttn", - "reference": "https://github.com/tinyterra/ComfyUI_tinyterraNodes", + "reference": "https://github.com/TinyTerra/ComfyUI_tinyterraNodes", "files": [ "https://github.com/TinyTerra/ComfyUI_tinyterraNodes" ], "install_type": "git-clone", "nodename_pattern": "^ttN ", - "description": "This extension offers various pipe nodes, fullscreen image viewer based on node history, dynamic widgets, interface customization, and more." + "description": "This extension offers various pipe nodes, extensive XYZ plotting, fullscreen image viewer based on node history, dynamic widgets, interface customization, and more." }, { "author": "Jordach", @@ -821,17 +810,6 @@ "install_type": "git-clone", "description": "ComfyUI custom nodes to apply various image processing techniques." }, - { - "author": "bvhari", - "title": "LatentToRGB", - "id": "latent2rgb", - "reference": "https://github.com/bvhari/ComfyUI_LatentToRGB", - "files": [ - "https://github.com/bvhari/ComfyUI_LatentToRGB" - ], - "install_type": "git-clone", - "description": "ComfyUI custom node to convert latent to RGB." - }, { "author": "bvhari", "title": "ComfyUI_PerpWeight", @@ -1414,6 +1392,17 @@ "install_type": "git-clone", "description": "Nodes:MUJinjaRender, MUSimpleWildcard" }, + { + "author": "asagi4", + "title": "Adaptive Guidance for ComfyUI", + "id": "asagi-nodes", + "reference": "https://github.com/asagi4/ComfyUI-Adaptive-Guidance", + "files": [ + "https://github.com/asagi4/ComfyUI-Adaptive-Guidance" + ], + "install_type": "git-clone", + "description": "An implementation of adaptive guidance for ComfyUI\nSee [a/https://bcv-uniandes.github.io/adaptiveguidance-wp](https://bcv-uniandes.github.io/adaptiveguidance-wp)" + }, { "author": "jamesWalker55", "title": "ComfyUI - P2LDGAN Node", @@ -2588,6 +2577,17 @@ "install_type": "git-clone", "description": "Basic support for StyleGAN2 and StyleGAN3 models." }, + { + "author": "spacepxl", + "title": "ComfyUI-Florence-2", + "id": "florence2-spacepxl", + "reference": "https://github.com/spacepxl/ComfyUI-Florence-2", + "files": [ + "https://github.com/spacepxl/ComfyUI-Florence-2" + ], + "install_type": "git-clone", + "description": "[a/https://huggingface.co/microsoft/Florence-2-large-ft](https://huggingface.co/microsoft/Florence-2-large-ft)\nLarge or base model, support for captioning and bbox task modes, more coming soon." + }, { "author": "PTA", "title": "auto nodes layout", @@ -2951,7 +2951,7 @@ { "author": "kijai", "title": "ComfyUI-Florence2", - "id": "florence2", + "id": "florence2-kijai", "reference": "https://github.com/kijai/ComfyUI-Florence2", "files": [ "https://github.com/kijai/ComfyUI-Florence2" @@ -3006,7 +3006,7 @@ { "author": "mikkel", "title": "ComfyUI - Text Overlay Plugin", - "id": "textoverlay", + "id": "textoverlay-mikkel", "reference": "https://github.com/mikkel/ComfyUI-text-overlay", "files": [ "https://github.com/mikkel/ComfyUI-text-overlay" @@ -3017,7 +3017,7 @@ { "author": "avatechai", "title": "Avatar Graph", - "id": "avatar", + "id": "avatar-graph", "reference": "https://github.com/avatechai/avatar-graph-comfyui", "files": [ "https://github.com/avatechai/avatar-graph-comfyui" @@ -3230,7 +3230,7 @@ "https://github.com/drustan-hawk/primitive-types" ], "install_type": "git-clone", - "description": "This repository contains typed primitives for ComfyUI. The motivation for these primitives is that the standard primitive node cannot be routed." + "description": "Small collection of typed primitive nodes." }, { "author": "shadowcz007", @@ -3655,9 +3655,9 @@ "files": [ "https://github.com/Amorano/Jovimetrix" ], - "nodename_pattern": " \\(jov\\)$", + "nodename_pattern": " \\(JOV\\)$", "install_type": "git-clone", - "description": "Compose like Substance Designer. Webcams, Media Streams (in/out), Tick animation, Color correction, Geometry manipulation, Pixel shader, Polygonal shape generator, Remap images gometry and color, Heavily inspired by WAS and MTB Node Suites." + "description": "Webcam, MIDI, Spout and GLSL shader support. Animation via tick. Parameter manipulation with wave generator. Math operations, universal value converstion, shape mask generation, image channel ops, batch splitting/merging/randomizing, load image/video from URL, Dynamic bus routing, support for GIPHY, save output anywhere! flatten, crop, transform; check color blindness, make stereograms or stereoscopic images, and much more." }, { "author": "Umikaze-job", @@ -4632,6 +4632,17 @@ "install_type": "git-clone", "description": "Nodes: Save Text File, Download Image from URL, Groq LLM API, Generate Negative Prompt (experimental)" }, + { + "author": "AI2lab", + "title": "comfyUI-tool-2lab", + "id": "tool-2lab", + "reference": "https://github.com/AI2lab/comfyUI-tool-2lab", + "files": [ + "https://github.com/AI2lab/comfyUI-tool-2lab" + ], + "install_type": "git-clone", + "description": "tool set for developing workflow and publish to web api server" + }, { "author": "AI2lab", "title": "comfyUI-DeepSeek-2lab", @@ -4643,6 +4654,17 @@ "install_type": "git-clone", "description": "Unofficial implementation of DeepSeek for ComfyUI" }, + { + "author": "AI2lab", + "title": "comfyUI-siliconflow-api-2lab", + "id": "siliconflow", + "reference": "https://github.com/AI2lab/comfyUI-siliconflow-api-2lab", + "files": [ + "https://github.com/AI2lab/comfyUI-siliconflow-api-2lab" + ], + "install_type": "git-clone", + "description": "Unofficial implementation of siliconflow API for ComfyUI\nHow to use:apply api key in :https://cloud.siliconflow.cn/\nadd api key in config.json" + }, { "author": "SpaceKendo", "title": "Text to video for Stable Video Diffusion in ComfyUI", @@ -4674,7 +4696,7 @@ "https://github.com/NimaNzrii/comfyui-photoshop" ], "install_type": "git-clone", - "description": "Photoshop node inside of ComfyUi, send and get data from Photoshop" + "description": "Photoshop node inside of ComfyUi, send and get data from Photoshop." }, { "author": "Rui", @@ -5877,7 +5899,7 @@ "https://github.com/JaredTherriault/ComfyUI-JNodes" ], "install_type": "git-clone", - "description": "python and web UX improvements for ComfyUI.\n[w/'DynamicPrompts.js' and 'EditAttention.js' from the core, along with 'ImageFeed.js' and 'favicon.js' from the custom scripts of pythongosssss, are not compatible. Therefore, manual deletion of these files is required to use this web extension.]" + "description": "python and web UX improvements for ComfyUI: Lora/Embedding picker, web extension manager (enable/disable any extension without disabling python nodes), control any parameter with text prompts, image and video viewer, metadata viewer, token counter, comments in prompts, font control, and more! \n[w/'ImageFeed.js' from the custom scripts of pythongosssss is not compatible with this suite's ImageDrawer feature. Additionally, 'DynamicPrompts.js' and 'EditAttention.js' from the core, along with 'favicon.js' from the custom scripts of pythongosssss, are incompatible with advanced features of the suite. Please use the JNodes Extension Management setting in Settings > JNodes > Extension Management to disable these extensions by unchecking them to use the full functionality of the suite.]" }, { "author": "prozacgod", @@ -5899,7 +5921,7 @@ "https://github.com/Siberpone/lazy-pony-prompter" ], "install_type": "git-clone", - "description": "A pony prompt helper extension for AUTOMATIC1111's Stable Diffusion Web UI and ComfyUI that utilizes the full power of your favorite booru query syntax. Currently supports [a/Derpibooru](https://derpibooru/org) and [a/E621](https://e621.net/)." + "description": "A booru API powered prompt generator for A1111 and ComfyUI with flexible tag filtering system and customizable prompt templates." }, { "author": "dave-palt", @@ -6230,6 +6252,17 @@ "install_type": "git-clone", "description": "This project provides a Tensorrt implementation for fast image upscaling inside ComfyUI (3-4x faster)" }, + { + "author": "yuvraj108c", + "title": "ComfyUI YoloNasPose Tensorrt", + "id": "yolonaspose-tensorrt", + "reference": "https://github.com/yuvraj108c/ComfyUI-YoloNasPose-Tensorrt", + "files": [ + "https://github.com/yuvraj108c/ComfyUI-YoloNasPose-Tensorrt" + ], + "install_type": "git-clone", + "description": "This repo provides a ComfyUI Custom Node implementation of [a/YOLO-NAS-POSE](https://github.com/Deci-AI/super-gradients), powered by TensorRT for ultra fast pose estimation. It has been adapted to work with openpose controlnet (experimental)" + }, { "author": "blepping", "title": "ComfyUI-bleh", @@ -6728,6 +6761,17 @@ "install_type": "git-clone", "description": "ComfyUI Node - Hugging Face repositories GTP2 Prompt" }, + { + "author": "1038lab", + "title": "ComfyUI-latentSizeSelector", + "id": "ComfyUI-latentSizeSelector", + "reference": "https://github.com/1038lab/ComfyUI_LatentSizeSelector", + "files": [ + "https://github.com/1038lab/ComfyUI_LatentSizeSelector" + ], + "install_type": "git-clone", + "description": "You'll get a new node Latent Size Selector, you can pick the x and y sizes from a list." + }, { "author": "Klinter", "title": "Klinter_nodes", @@ -6984,6 +7028,7 @@ { "author": "munkyfoot", "title": "ComfyUI-TextOverlay", + "id": "textoverlay-munkyfoot", "reference": "https://github.com/Munkyfoot/ComfyUI-TextOverlay", "files": [ "https://github.com/Munkyfoot/ComfyUI-TextOverlay" @@ -7151,6 +7196,17 @@ "install_type": "git-clone", "description": "Partial redraw sampler and variant seed sampler" }, + { + "author": "11dogzi", + "title": "ComfUI-EGAdapterMadAssistant", + "id": "ergouzi-samplers", + "reference": "https://github.com/11dogzi/ComfUI-EGAdapterMadAssistant", + "files": [ + "https://github.com/11dogzi/ComfUI-EGAdapterMadAssistant" + ], + "install_type": "git-clone", + "description": "This is a hierarchical auxiliary project of the IPAdapter project, which uses a slider to quickly control the hierarchical weights and add fully random and semi random modes" + }, { "author": "BXYMartin", "title": "ComfyUI-InstantIDUtils", @@ -7289,7 +7345,7 @@ "https://github.com/ljleb/comfy-mecha" ], "install_type": "git-clone", - "description": "Model merging node pack with a focus on low memory footprint." + "description": "model merging nodes powered by sd-mecha, a memory efficient state dict recipe merger." }, { "author": "diSty", @@ -7423,14 +7479,14 @@ "description": "This node is mainly based on [a/OmDet](https://github.com/om-ai-lab/OmDet) for object detection, and it outputs related images, masks, and Labelme JSON information." }, { - "author": "Alysondao", + "author": "prodogape", "title": "Comfyui-Yolov8-JSON", - "reference": "https://github.com/Alysondao/Comfyui-Yolov8-JSON", + "reference": "https://github.com/prodogape/Comfyui-Yolov8-JSON", "files": [ - "https://github.com/Alysondao/Comfyui-Yolov8-JSON" + "https://github.com/prodogape/Comfyui-Yolov8-JSON" ], "install_type": "git-clone", - "description": "This node is mainly based on the Yolov8 model for object detection, and it outputs related images, masks, and JSON information." + "description": "This node is mainly based on the Yolov8 model for object detection, and it outputs related images, masks, and JSON information.[w/Repository url is changed. Please remove previous one and reinstall.]" }, { "author": "kingzcheung", @@ -7758,6 +7814,17 @@ "install_type": "git-clone", "description": "Unofficial implementation of [a/dreamtalk](https://github.com/ali-vilab/dreamtalk) for ComfyUI" }, + { + "author": "hay86", + "title": "ComfyUI Hallo", + "id": "hallo-hay86", + "reference": "https://github.com/hay86/ComfyUI_Hallo", + "files": [ + "https://github.com/hay86/ComfyUI_Hallo" + ], + "install_type": "git-clone", + "description": "Unofficial implementation of [a/hallo](https://github.com/fudan-generative-vision/hallo) for ComfyUI" + }, { "author": "hay86", "title": "ComfyUI OpenVoice", @@ -8130,7 +8197,7 @@ "description": "Use RetinaFace to detect and automatically crop faces." }, { - "author": "liusida", + "author": "Sida Liu", "title": "ComfyUI-SD3-nodes", "id": "sd3-nodes", "reference": "https://github.com/liusida/ComfyUI-SD3-nodes", @@ -8141,7 +8208,7 @@ "description": "Nodes that support Stable Diffusion 3 Medium better." }, { - "author": "liusida", + "author": "Sida Liu", "title": "ComfyUI-B-LoRA", "id": "b-lora", "reference": "https://github.com/liusida/ComfyUI-B-LoRA", @@ -8173,6 +8240,17 @@ "install_type": "git-clone", "description": "ComfyUI LayerDivider is custom nodes that generating layered psd files inside ComfyUI[w/Please follow readme and run install_windows_portable_win_py311_cu121 for ComfyUI embedded python.]" }, + { + "author": "jtydhr88", + "title": "ComfyUI Unique3D", + "id": "unique3d", + "reference": "https://github.com/jtydhr88/ComfyUI-Unique3D", + "files": [ + "https://github.com/jtydhr88/ComfyUI-Unique3D" + ], + "install_type": "git-clone", + "description": "ComfyUI Unique3D is custom nodes that running AiuniAI/Unique3D into ComfyUI[w/Please follow readme to install with ComfyUI embedded python.]" + }, { "author": "SeaArtLab", "title": "ComfyUI-Long-CLIP", @@ -8369,6 +8447,61 @@ "install_type": "git-clone", "description": "a comfyui custom node for [a/3d-photo-inpainting](https://github.com/vt-vl-lab/3d-photo-inpainting),then you can render one image to zoom-in/dolly zoom/swing motion/circle motion video" }, + { + "author": "AIFSH", + "title": "AIFSH/ComfyUI-AuraSR", + "id": "aurasr-aifsh", + "reference": "https://github.com/AIFSH/ComfyUI-AuraSR", + "files": [ + "https://github.com/AIFSH/ComfyUI-AuraSR" + ], + "install_type": "git-clone", + "description": "a node for [a/AuraSR](https://github.com/fal-ai/aura-sr)" + }, + { + "author": "AIFSH", + "title": "ComfyUI-MARS5-TTS", + "id": "mars5-tts", + "reference": "https://github.com/AIFSH/ComfyUI-MARS5-TTS", + "files": [ + "https://github.com/AIFSH/ComfyUI-MARS5-TTS" + ], + "install_type": "git-clone", + "description": "a comfyui custom node for [a/MARS5-TTS](https://github.com/Camb-ai/MARS5-TTS)" + }, + { + "author": "AIFSH", + "title": "ComfyUI-I2V-Adapter", + "id": "i2v-adapter", + "reference": "https://github.com/AIFSH/ComfyUI-I2V-Adapter", + "files": [ + "https://github.com/AIFSH/ComfyUI-I2V-Adapter" + ], + "install_type": "git-clone", + "description": "a comfyui custom node for [a/I2V-Adapter](https://github.com/KwaiVGI/I2V-Adapter)" + }, + { + "author": "AIFSH", + "title": "ComfyUI-MimicMotion", + "id": "mimicmotion-aifsh", + "reference": "https://github.com/AIFSH/ComfyUI-MimicMotion", + "files": [ + "https://github.com/AIFSH/ComfyUI-MimicMotion" + ], + "install_type": "git-clone", + "description": "a comfyui custom node for [a/MimicMotion](https://github.com/Tencent/MimicMotion)" + }, + { + "author": "AIFSH", + "title": "ComfyUI-DiffSynth-Studio", + "id": "diffsynth-studio", + "reference": "https://github.com/AIFSH/ComfyUI-DiffSynth-Studio", + "files": [ + "https://github.com/AIFSH/ComfyUI-DiffSynth-Studio" + ], + "install_type": "git-clone", + "description": "make [a/DiffSynth-Studio](https://github.com/modelscope/DiffSynth-Studio) available in ComfyUI" + }, { "author": "Koishi-Star", "title": "Euler-Smea-Dyn-Sampler", @@ -8435,6 +8568,17 @@ "install_type": "git-clone", "description": "A StoryDiffusion node for ComfyUI." }, + { + "author": "smthemex", + "title": "ComfyUI_MS_Diffusion", + "id": "MS_Diffusion", + "reference": "https://github.com/smthemex/ComfyUI_MS_Diffusion", + "files": [ + "https://github.com/smthemex/ComfyUI_MS_Diffusion" + ], + "install_type": "git-clone", + "description": "You can using MS-diffusion make story in comfyUI." + }, { "author": "smthemex", "title": "ComfyUI_Pic2Story", @@ -8512,6 +8656,17 @@ "install_type": "git-clone", "description": "You can use [a/Popspaper](https://popspaper.github.io/pOps/) method in comfyUI" }, + { + "author": "smthemex", + "title": "ComfyUI_Streamv2v_Plus", + "id": "streamv2v", + "reference": "https://github.com/smthemex/ComfyUI_Streamv2v_Plus", + "files": [ + "https://github.com/smthemex/ComfyUI_Streamv2v_Plus" + ], + "install_type": "git-clone", + "description": "[a/StreamV2V](https://github.com/Jeff-LiangF/streamv2v) for ComfyUI" + }, { "author": "choey", "title": "Comfy-Topaz", @@ -8577,6 +8732,17 @@ "install_type": "git-clone", "description": "Perturbed-Attention Guidance node for ComfyUI." }, + { + "author": "pamparamm", + "title": "ComfyUI Vectorscope CC", + "id": "vectorscope", + "reference": "https://github.com/pamparamm/ComfyUI-vectorscope-cc", + "files": [ + "https://github.com/pamparamm/ComfyUI-vectorscope-cc" + ], + "install_type": "git-clone", + "description": "ComfyUI port of a wonderful extension [a/SD Webui Vectorscope CC by Haoming02](https://github.com/Haoming02/sd-webui-vectorscope-cc).\nBased on (and probably incompatible with) [a/ComfyUI Diffusion Color Grading by Haoming02](https://github.com/Haoming02/comfyui-diffusion-cg)." + }, { "author": "unwdef", "title": "unwdef-nodes", @@ -8650,27 +8816,6 @@ "install_type": "git-clone", "description": "Nodes:Shadertoy, Shader, ColorChannelOffset." }, - { - "author": "turkyden", - "title": "ComfyUI-Sticker", - "reference": "https://github.com/turkyden/ComfyUI-Sticker", - "files": [ - "https://github.com/turkyden/ComfyUI-Sticker" - ], - "install_type": "git-clone", - "description": "image to sticker" - }, - { - "author": "turkyden", - "title": "ComfyUI-Comic", - "id": "comic", - "reference": "https://github.com/turkyden/ComfyUI-Comic", - "files": [ - "https://github.com/turkyden/ComfyUI-Comic" - ], - "install_type": "git-clone", - "description": "a comfyui plugin for image to comic" - }, { "author": "royceschultz", "title": "ComfyUI-TranscriptionTools", @@ -8879,6 +9024,17 @@ "install_type": "git-clone", "description": "A stylized node with simple operation. The effect is achieved by I2I and lora. The clay style is currently implemented.Comes with watermark function." }, + { + "author": "MinusZoneAI", + "title": "ComfyUI-TrainTools-MZ", + "id": "traintools", + "reference": "https://github.com/MinusZoneAI/ComfyUI-TrainTools-MZ", + "files": [ + "https://github.com/MinusZoneAI/ComfyUI-TrainTools-MZ" + ], + "install_type": "git-clone", + "description": "Nodes for fine-tuning lora in ComfyUI, dependent on training tools such as kohya-ss/sd-scripts" + }, { "author": "blueraincoatli", "title": "comfyUI_SillyNodes", @@ -8977,6 +9133,27 @@ "install_type": "git-clone", "description": "Original author is ByteDance.\nComfyUI sampler for HyperSDXL UNet\nPorted from: [a/https://huggingface.co/ByteDance/Hyper-SD](https://huggingface.co/ByteDance/Hyper-SD)" }, + { + "author": "fofr", + "title": "ComfyUI-Prompter-fofrAI", + "id": "prompter-fofr", + "reference": "https://github.com/fofr/ComfyUI-Prompter-fofrAI", + "files": [ + "https://github.com/fofr/ComfyUI-Prompter-fofrAI" + ], + "install_type": "git-clone", + "description": "A prompt helper. Use templates from [a/https://prompter.fofr.ai](https://prompter.fofr.ai) in ComfyUI." + }, + { + "author": "fofr", + "title": "comfyui-replicate", + "reference": "https://github.com/fofr/comfyui-replicate", + "files": [ + "https://github.com/fofr/comfyui-replicate" + ], + "install_type": "git-clone", + "description": "Run [a/Replicate models](https://replicate.com/explore) in ComfyUI." + }, { "author": "cfreilich", "title": "Virtuoso Nodes for ComfyUI", @@ -9032,16 +9209,6 @@ "install_type": "git-clone", "description": "workflow.json -> workflow_api.json" }, - { - "author": "nat-chan", - "title": "comfyui-paint", - "reference": "https://github.com/nat-chan/comfyui-paint", - "files": [ - "https://github.com/nat-chan/comfyui-paint" - ], - "install_type": "git-clone", - "description": "comfyui-paint" - }, { "author": "web3nomad", "title": "ComfyUI Invisible Watermark", @@ -9443,6 +9610,26 @@ "install_type": "git-clone", "description": "Takes two images and matches their sizes using various methods, detailed below." }, + { + "author": "christian-byrne", + "title": "comfyui-search-navigation", + "reference": "https://github.com/christian-byrne/comfyui-search-navigation", + "files": [ + "https://github.com/christian-byrne/comfyui-search-navigation" + ], + "install_type": "git-clone", + "description": "Search navigation extension." + }, + { + "author": "christian-byrne", + "title": "audio-separation-nodes-comfyui", + "reference": "https://github.com/christian-byrne/audio-separation-nodes-comfyui", + "files": [ + "https://github.com/christian-byrne/audio-separation-nodes-comfyui" + ], + "install_type": "git-clone", + "description": "Nodes:AudioSeparation, AudioCrop, AudioCombine, AudioTempoMatch." + }, { "author": "oztrkoguz", "title": "ComfyUI StoryCreater", @@ -10517,6 +10704,363 @@ "install_type": "git-clone", "description": "Edit embeddings with a curve. Actually should work on any 1D input tensor. Tested with IPAdapter-Plus." }, + { + "author": "zhulu111", + "title": "ComfyUI_Bxb", + "id": "ComfyUI_Bxb", + "reference": "https://github.com/zhulu111/ComfyUI_Bxb", + "files": [ + "https://github.com/zhulu111/ComfyUI_Bxb" + ], + "install_type": "git-clone", + "description": "sdBxb, a tool that converts ComfyUI workflows into WeChat Mini Program, Douyin Mini Program, and H5 with one click, and supports payments." + }, + { + "author": "lordgasmic", + "title": "comfyui_wildcards", + "reference": "https://github.com/lordgasmic/comfyui_wildcards", + "files": [ + "https://github.com/lordgasmic/comfyui_wildcards" + ], + "install_type": "git-clone", + "description": "This is an attempt to recreate the wildcards plugin for Automatic1111 but for ComfyUI." + }, + { + "author": "lordgasmic", + "title": "comfyui_save_image_with_options", + "reference": "https://github.com/lordgasmic/comfyui_save_image_with_options", + "files": [ + "https://github.com/lordgasmic/comfyui_save_image_with_options" + ], + "install_type": "git-clone", + "description": "Nodes:Save Image with Options" + }, + { + "author": "opvelll", + "title": "Comfy UI Text List Product", + "id": "listproduct", + "reference": "https://github.com/opvelll/ComfyUI_TextListProduct", + "files": [ + "https://github.com/opvelll/ComfyUI_TextListProduct" + ], + "install_type": "git-clone", + "description": "This is a custom node for Comfy UI. It mainly wraps itertools.product and can be used to create patterns by combining prompts. It is recommended to install this custom node in combination with the nodes from the WAS Node Suite." + }, + { + "author": "jakechai", + "title": "ComfyUI-JakeUpgrade", + "id": "jkupgrade", + "reference": "https://github.com/jakechai/ComfyUI-JakeUpgrade", + "files": [ + "https://github.com/jakechai/ComfyUI-JakeUpgrade" + ], + "install_type": "git-clone", + "description": "A ComfyUI workflow customization by Jake." + }, + { + "author": "celsojr2013", + "title": "ComfyUI SimpleTools Suit", + "reference": "https://github.com/celsojr2013/comfyui_simpletools", + "files": [ + "https://github.com/celsojr2013/comfyui_simpletools" + ], + "install_type": "git-clone", + "description": "Nodes:Simple Google Translator, Simple Resolution Solver.\nThis is a small set of simple nodes that help your workflow on ComfyUI." + }, + { + "author": "celsojr2013", + "title": "comfyui_jamworks_client", + "reference": "https://github.com/celsojr2013/comfyui_jamworks_client", + "files": [ + "https://github.com/celsojr2013/comfyui_jamworks_client" + ], + "install_type": "git-clone", + "description": "Nodes:Jamworks_Login, Jamworks_Download, Shell_Command.\nA Simple Client for Jamworks Platform DAM Integration" + }, + { + "author": "fablestudio", + "title": "ComfyUI-Showrunner-Utils", + "reference": "https://github.com/fablestudio/ComfyUI-Showrunner-Utils", + "files": [ + "https://github.com/fablestudio/ComfyUI-Showrunner-Utils" + ], + "install_type": "git-clone", + "description": "Comfyui Custom Nodes for Showrunner" + }, + { + "author": "MilitantHitchhiker", + "title": "Militant Hitchhiker's Switchblade Pack", + "id": "hitchhiker", + "reference": "https://github.com/MilitantHitchhiker/MilitantHitchhiker-SwitchbladePack", + "files": [ + "https://github.com/MilitantHitchhiker/MilitantHitchhiker-SwitchbladePack" + ], + "install_type": "git-clone", + "description": "Militant Hitchhiker's Switchblade Pack is a collection of custom nodes for ComfyUI that provide various multi-function capabilities." + }, + { + "author": "slyt", + "title": "comfyui-ollama-nodes", + "reference": "https://github.com/slyt/comfyui-ollama-nodes", + "files": [ + "https://github.com/slyt/comfyui-ollama-nodes" + ], + "install_type": "git-clone", + "description": "ComfyUI custom nodes for working with [a/Ollama](https://github.com/ollama/ollama).\nNOTE:Assumes that an Ollama server is running at http://127.0.0.1:11434 and accessible by the ComfyUI backend." + }, + { + "author": "zwng", + "title": "ComfyUI_Zwng_Nodes", + "id": "zwng", + "reference": "https://github.com/za-wa-n-go/ComfyUI_Zwng_Nodes", + "files": [ + "https://github.com/za-wa-n-go/ComfyUI_Zwng_Nodes" + ], + "install_type": "git-clone", + "description": "Simple nodes for loading image files.Nodes that include a simple remote connection to Photoshop, a node that can overlay and preview an image with a mask, and a node that can load images directly from a file path." + }, + { + "author": "RedRayz", + "title": "ComfyUI-Danbooru-To-WD", + "id": "danbooru2wd", + "reference": "https://github.com/RedRayz/ComfyUI-Danbooru-To-WD", + "files": [ + "https://github.com/RedRayz/ComfyUI-Danbooru-To-WD" + ], + "install_type": "git-clone", + "description": "Converts booru tags to a format suitable for Waifu Diffusion(or Danbooru based models)." + }, + { + "author": "Shibiko-AI", + "title": "Shibiko AI ComfyUI Tools", + "id": "shibiko-ai-tools", + "reference": "https://github.com/Shibiko-AI/ShibikoAI-ComfyUI-Tools", + "files": [ + "https://github.com/Shibiko-AI/ShibikoAI-ComfyUI-Tools" + ], + "install_type": "git-clone", + "description": "This is a collection of tools that I use to make my life easier when developing ComfyUI applications. It is a collection of tools that I have created to help me with my development process. I have decided to share these tools with the community in the hopes that they will be useful to others as well. I use this tools to further develop features for [a/https://shibiko.ai](https://shibiko.ai)" + }, + { + "author": "SaltAI", + "title": "SaltAI_AudioViz", + "id": "saltai-audioviz", + "reference": "https://github.com/get-salt-AI/SaltAI_AudioViz", + "files": [ + "https://github.com/get-salt-AI/SaltAI_AudioViz" + ], + "install_type": "git-clone", + "description": "SaltAI AudioViz contains ComfyUI nodes for generating complex audio reactive visualizations" + }, + { + "author": "SherryXieYuchen", + "title": "ComfyUI-Image-Inpainting", + "id": "image-inpainting", + "reference": "https://github.com/SherryXieYuchen/ComfyUI-Image-Inpainting", + "files": [ + "https://github.com/SherryXieYuchen/ComfyUI-Image-Inpainting" + ], + "install_type": "git-clone", + "description": "Nodes:VAE Encode Inpaint, VAE Decode Inpaint, ColorCorrection Inpaint, ImagePreprocess Inpaint, ImagePostprocess Inpaint, Load Model Inpaint, Inpainting (using Model)" + }, + { + "author": "zeroxoxo", + "title": "ComfyUI-Fast-Style-Transfer", + "id": "fast-style-transfer", + "reference": "https://github.com/zeroxoxo/ComfyUI-Fast-Style-Transfer", + "files": [ + "https://github.com/zeroxoxo/ComfyUI-Fast-Style-Transfer" + ], + "install_type": "git-clone", + "description": "ComfyUI node for fast neural style transfer. This is a simple conversion based on this: [a/https://github.com/rrmina/fast-neural-style-pytorch](https://github.com/rrmina/fast-neural-style-pytorch) Only basic inference functionality is ported for now." + }, + { + "author": "iwanders", + "title": "iwanders/ComfyUI_nodes", + "id": "iwanders-nodes", + "reference": "https://github.com/iwanders/ComfyUI_nodes", + "files": [ + "https://github.com/iwanders/ComfyUI_nodes" + ], + "install_type": "git-clone", + "description": "Nodes:IW SaveString, IW PrintString, IW ReplaceString, IW StringNode, IW StringConcat, IW TokenizerVocab, IW JsonPickItem." + }, + { + "author": "rhdunn", + "title": "comfyui-bus-plugin", + "id": "bus", + "reference": "https://github.com/rhdunn/comfyui-bus-plugin", + "files": [ + "https://github.com/rhdunn/comfyui-bus-plugin" + ], + "install_type": "git-clone", + "description": "A collection of nodes for rerouting multiple I/O lines together in a bus." + }, + { + "author": "hyunamy", + "title": "Comfy-UI on-complete-email-me", + "id": "hyunamy", + "reference": "https://github.com/hyunamy/comfy-ui-on-complete-email-me", + "files": [ + "https://github.com/hyunamy/comfy-ui-on-complete-email-me" + ], + "install_type": "git-clone", + "description": "A feature that sends an email via Gmail once image generation is completed in Comfy-ui." + }, + { + "author": "veighnsche", + "title": "comfyui_gr85", + "id": "gr85", + "reference": "https://github.com/veighnsche/comfyui_gr85", + "files": [ + "https://github.com/veighnsche/comfyui_gr85" + ], + "install_type": "git-clone", + "description": "Nodes:Image Dimension Resizer, Image Sizer, Random Ratio, Show Text, Random Title Character, Random Wildcard Tag Picker, Random Show Atm Loc Outfit, Contains Word, Elements Concatenator, ..." + }, + { + "author": "leiweiqiang", + "title": "ComfyUI-TRA", + "id": "tra", + "reference": "https://github.com/leiweiqiang/ComfyUI-TRA", + "files": [ + "https://github.com/leiweiqiang/ComfyUI-TRA" + ], + "install_type": "git-clone", + "description": "Nodes:TCL EbSynth, TCL Extract Frames (From File), TCL Extract Frames (From Video), TCL Combine Frames, TCL Save Video (From Frames)" + }, + { + "author": "hwhaocool", + "title": "ComfyUI-Select-Any", + "id": "select-any", + "reference": "https://github.com/hwhaocool/ComfyUI-Select-Any", + "files": [ + "https://github.com/hwhaocool/ComfyUI-Select-Any" + ], + "install_type": "git-clone", + "description": "a comfyui custom node, which can select value from inputs" + }, + { + "author": "mingqizhang", + "title": "ComfyUI_InSPyResNet_zmq", + "id": "inspy", + "reference": "https://github.com/mingqizhang/ComfyUI_InSPyResNet_zmq", + "files": [ + "https://github.com/mingqizhang/ComfyUI_InSPyResNet_zmq" + ], + "install_type": "git-clone", + "description": "Nodes:INSPY removebg ModelLoader, INSPY RMBG" + }, + { + "author": "GreenLandisaLie", + "title": "AuraSR-ComfyUI", + "id": "aurasr-greenlandisalie", + "reference": "https://github.com/GreenLandisaLie/AuraSR-ComfyUI", + "files": [ + "https://github.com/GreenLandisaLie/AuraSR-ComfyUI" + ], + "install_type": "git-clone", + "description": "ComfyUI implementation of [a/Aura-SR](https://github.com/fal-ai/aura-sr)" + }, + { + "author": "licyk", + "title": "ComfyUI-Restart-Sampler", + "id": "restart-sampler-licyk", + "reference": "https://github.com/licyk/ComfyUI-Restart-Sampler", + "files": [ + "https://github.com/licyk/ComfyUI-Restart-Sampler" + ], + "install_type": "git-clone", + "description": "This extension is a node that directly expands the functionality of KSampler, rather than being in the form of a custom node. [w/Workflows created using this feature are not compatible with other users.]" + }, + { + "author": "Fuou Marinas", + "title": "ComfyUI-FirstOrderMM", + "id": "fomm", + "reference": "https://github.com/FuouM/ComfyUI-FirstOrderMM", + "files": [ + "https://github.com/FuouM/ComfyUI-FirstOrderMM" + ], + "install_type": "git-clone", + "description": "Run [a/First Order Motion Model](https://github.com/AliaksandrSiarohin/first-order-model) for Image Animation in ComfyUI." + }, + { + "author": "my-opencode", + "title": "ComfyUI_IndustrialMagick", + "id": "industrialmagick", + "reference": "https://github.com/my-opencode/ComfyUI_IndustrialMagick", + "files": [ + "https://github.com/my-opencode/ComfyUI_IndustrialMagick" + ], + "install_type": "git-clone", + "description": "[a/ImageMagick](https://imagemagick.org/index.php) nodes for ComfyUI. Adds nodes to call ImageMagick subprocesses from ComfyUI.\nRequirements: [a/ImagMagick7](https://imagemagick.org/script/download.php), 'magick' command in your CLI environment." + }, + { + "author": "my-opencode", + "title": "ComfyUI_KSamplerTimer", + "id": "ksamplertimer", + "reference": "https://github.com/my-opencode/ComfyUI_KSamplerTimer", + "files": [ + "https://github.com/my-opencode/ComfyUI_KSamplerTimer" + ], + "install_type": "git-clone", + "description": "A custom node that returns the generation time of the KSampler. Intended for benchmarking or debugging." + }, + { + "author": "SEkINVR", + "title": "ComfyUI SaveAS", + "id": "saveas", + "reference": "https://github.com/SEkINVR/ComfyUI-SaveAs", + "files": [ + "https://github.com/SEkINVR/ComfyUI-SaveAs" + ], + "install_type": "git-clone", + "description": "This custom node for ComfyUI allows you to save images in multiple formats, including PNG, JPG, WebP, and ICO.\n[w/ComfyUI-Save-Multi-Format is renamed to SaveAs. Remove previous one and reinstall to this.]" + }, + { + "author": "MrSamSeen", + "title": "ComfyUI_SSStereoscope", + "id": "ssstereoscope", + "reference": "https://github.com/MrSamSeen/ComfyUI_SSStereoscope", + "files": [ + "https://github.com/MrSamSeen/ComfyUI_SSStereoscope" + ], + "install_type": "git-clone", + "description": "The SideBySide Node is a powerful tool designed for ComfyUI to generate stereoscopic images. It takes a base image and a corresponding depth map as inputs and produces a combined image that simulates a 3D effect when viewed with appropriate equipment." + }, + { + "author": "jroc22", + "title": "ComfyUI-CSV-prompt-builder", + "id": "csv-prompt-builder", + "reference": "https://github.com/jroc22/ComfyUI-CSV-prompt-builder", + "files": [ + "https://github.com/jroc22/ComfyUI-CSV-prompt-builder" + ], + "install_type": "git-clone", + "description": "This is a simple node for creating prompts using a .csv file. I created this node as an easy way to output different prompts each time a workflow is run." + }, + { + "author": "DeJoker", + "title": "Pipeline Parallel ComfyUI", + "reference": "https://github.com/DeJoker/pipeline-parallel-comfy", + "files": [ + "https://github.com/DeJoker/pipeline-parallel-comfy" + ], + "install_type": "git-clone", + "description": "provide extra api to run prompt request with parallel execution of independent node" + }, + { + "author": "yiwangsimple", + "title": "comfy-groqchat", + "reference": "https://github.com/yiwangsimple/ComfyUI_GroqChat", + "files": [ + "https://github.com/yiwangsimple/ComfyUI_GroqChat" + ], + "install_type": "git-clone", + "description": "Content generation with open source models in comfyui via graq api implementation." + }, + + @@ -10781,18 +11325,6 @@ "install_type": "copy", "description": "Nodes:tensor_trans_pil, Make Transparent mask, MergeImages, words_generatee, load_PIL image" }, - { - "author": "celsojr2013", - "title": "ComfyUI SimpleTools Suit", - "reference": "https://github.com/celsojr2013/comfyui_simpletools", - "files": [ - "https://github.com/celsojr2013/comfyui_simpletools/raw/main/google_translator.py", - "https://github.com/celsojr2013/comfyui_simpletools/raw/main/parameters.py", - "https://github.com/celsojr2013/comfyui_simpletools/raw/main/resolution_solver.py" - ], - "install_type": "copy", - "description": "Nodes:Simple Gooogle Translator Client, Simple Mustache Parameter Switcher, Simple Latent Resolution Solver." - }, { "author": "underclockeddev", "title": "Preview Subselection Node for ComfyUI", @@ -10870,9 +11402,16 @@ "install_type": "copy", "description": "Use LibreTranslation in ComfyUI [a/https://github.com/LibreTranslate/LibreTranslate](https://github.com/LibreTranslate/LibreTranslate)" }, - - - + { + "author": "ImmortalPie", + "title": "PonySwitch Node", + "reference": "https://github.com/ImmortalPie/ComfyUI-PonySwitch", + "files": [ + "https://github.com/ImmortalPie/ComfyUI-PonySwitch/raw/main/PonySwitch.py" + ], + "install_type": "copy", + "description": "The PonySwitch node is a custom node for ComfyUI that modifies prompts based on a toggle switch and adds configurable pony tags." + }, { "author": "theally", "title": "TheAlly's Custom Nodes", diff --git a/docs/en/use_aria2.md b/docs/en/use_aria2.md new file mode 100644 index 00000000..10a7c6dd --- /dev/null +++ b/docs/en/use_aria2.md @@ -0,0 +1,40 @@ +# Use `aria2` as downloader + +Two environment variables are needed to use `aria2` as the downloader. + +```bash +export COMFYUI_MANAGER_ARIA2_SERVER=http://127.0.0.1:6800 +export COMFYUI_MANAGER_ARIA2_SECRET=__YOU_MUST_CHANGE_IT__ +``` + +An example `docker-compose.yml` + +```yaml +services: + + aria2: + container_name: aria2 + image: p3terx/aria2-pro + environment: + - PUID=1000 + - PGID=1000 + - UMASK_SET=022 + - RPC_SECRET=__YOU_MUST_CHANGE_IT__ + - RPC_PORT=5080 + - DISK_CACHE=64M + - IPV6_MODE=false + - UPDATE_TRACKERS=false + - CUSTOM_TRACKER_URL= + volumes: + - ./config:/config + - ./downloads:/downloads + - ~/ComfyUI/models:/models + - ~/ComfyUI/custom_nodes:/custom_nodes + ports: + - 6800:6800 + restart: unless-stopped + logging: + driver: json-file + options: + max-size: 1m +``` diff --git a/extension-node-map.json b/extension-node-map.json index 1e9ef905..8e88977c 100644 --- a/extension-node-map.json +++ b/extension-node-map.json @@ -37,6 +37,23 @@ "title_aux": "ComfyUI-GPT2P" } ], + "https://github.com/1038lab/ComfyUI_LatentSizeSelector": [ + [ + "LatentSizeSelector" + ], + { + "title_aux": "ComfyUI-latentSizeSelector" + } + ], + "https://github.com/11dogzi/ComfUI-EGAdapterMadAssistant": [ + [ + "EGIPAdapter_Mad_Assistant", + "EGIPAdapter_Mad_AssistantV2" + ], + { + "title_aux": "ComfUI-EGAdapterMadAssistant" + } + ], "https://github.com/11dogzi/Comfyui-ergouzi-Nodes": [ [ "EG-YSZT-ZT", @@ -232,6 +249,28 @@ "title_aux": "ComfyUI-3d-photo-inpainting" } ], + "https://github.com/AIFSH/ComfyUI-AuraSR": [ + [ + "AuraSRNode" + ], + { + "title_aux": "AIFSH/ComfyUI-AuraSR" + } + ], + "https://github.com/AIFSH/ComfyUI-DiffSynth-Studio": [ + [ + "ControlNetPathLoader", + "DiffTextNode", + "DiffutoonNode", + "ExVideoNode", + "LoadVideo", + "PreViewVideo", + "SDPathLoader" + ], + { + "title_aux": "ComfyUI-DiffSynth-Studio" + } + ], "https://github.com/AIFSH/ComfyUI-FishSpeech": [ [ "FishSpeech_INFER", @@ -268,6 +307,18 @@ "title_aux": "ComfyUI-Hallo" } ], + "https://github.com/AIFSH/ComfyUI-I2V-Adapter": [ + [ + "I2V_AdapterNode", + "LoraPathLoader", + "MotionLoraLoader", + "PreViewVideo", + "PromptNode" + ], + { + "title_aux": "ComfyUI-I2V-Adapter" + } + ], "https://github.com/AIFSH/ComfyUI-IP_LAP": [ [ "CombineAudioVideo", @@ -288,6 +339,17 @@ "title_aux": "ComfyUI-Live2DViewer" } ], + "https://github.com/AIFSH/ComfyUI-MARS5-TTS": [ + [ + "LoadAudioPath", + "MARS5TTS_Node", + "PreViewAudio", + "TTSTextEncode" + ], + { + "title_aux": "ComfyUI-MARS5-TTS" + } + ], "https://github.com/AIFSH/ComfyUI-MimicBrush": [ [ "MimicBrushNode" @@ -296,6 +358,16 @@ "title_aux": "ComfyUI-MimicBrush" } ], + "https://github.com/AIFSH/ComfyUI-MimicMotion": [ + [ + "LoadVideo", + "MimicMotionNode", + "PreViewVideo" + ], + { + "title_aux": "ComfyUI-MimicMotion" + } + ], "https://github.com/AIFSH/ComfyUI-MuseTalk_FSH": [ [ "CombineAudioVideo", @@ -322,7 +394,7 @@ ], "https://github.com/AIFSH/ComfyUI-UVR5": [ [ - "LoadAudio", + "LoadAudioPath", "PreViewAudio", "UVR5_Node" ], @@ -354,7 +426,7 @@ ], "https://github.com/AIFSH/ComfyUI-XTTS": [ [ - "LoadAudio", + "LoadAudioPath", "LoadSRT", "PreViewAudio", "XTTS_INFER", @@ -366,8 +438,7 @@ ], "https://github.com/AIFSH/ComfyUI_V-Express": [ [ - "CombineAudioVideo", - "LoadAudio", + "LoadAudioPath", "LoadImagePath", "LoadVideo", "PreViewVideo", @@ -400,6 +471,8 @@ "OpenPoseKeyPose", "OpenPoseLineart", "OpenPoseMediaPipeFace", + "PreviewAudio", + "SaveAudioBL", "\u5b58\u50a8", "\u5bfc\u5165", "\u622a\u56fe", @@ -456,6 +529,7 @@ "> Get Mean Color", "> Int", "> Int to Text", + "> Layer Weights (for IPAMS)", "> Light Source Mask", "> Load Image", "> Load Image From Folder", @@ -541,6 +615,7 @@ [ "INPAINT_ApplyFooocusInpaint", "INPAINT_DenoiseToCompositingMask", + "INPAINT_ExpandMask", "INPAINT_InpaintWithModel", "INPAINT_LoadFooocusInpaint", "INPAINT_LoadInpaintModel", @@ -591,10 +666,12 @@ [ "ArgosTranslateCLIPTextEncodeNode", "ArgosTranslateTextNode", + "ColorsCorrectNode", "DeepTranslatorCLIPTextEncodeNode", "DeepTranslatorTextNode", "GoogleTranslateCLIPTextEncodeNode", "GoogleTranslateTextNode", + "HexToHueNode", "PainterNode", "PoseNode", "PreviewTextNode" @@ -603,25 +680,12 @@ "title_aux": "AlekPet/ComfyUI_Custom_Nodes_AlekPet" } ], - "https://github.com/Alysondao/Comfyui-Yolov8-JSON": [ - [ - "Apply Yolov8 Model", - "Apply Yolov8 Model Seg", - "Draw Labelme Json", - "Load Yolov8 Model", - "Load Yolov8 Model From Path", - "Save Labelme Json" - ], - { - "title_aux": "Comfyui-Yolov8-JSON" - } - ], "https://github.com/Amorano/Jovimetrix": [ [], { "author": "amorano", - "description": "Webcams, GLSL shader, Media Streaming, Tick animation, Image manipulation,", - "nodename_pattern": " \\(jov\\)$", + "description": "Jovimetrix integrates Webcam, MIDI, Spout and GLSL shader support.", + "nodename_pattern": " \\(JOV\\)$", "title": "Jovimetrix", "title_aux": "Jovimetrix Composition Nodes" } @@ -1142,6 +1206,7 @@ "PrimerePromptSwitch", "PrimereRefinerPrompt", "PrimereResolution", + "PrimereResolutionCoordinatorMPX", "PrimereResolutionMultiplier", "PrimereResolutionMultiplierMPX", "PrimereSamplers", @@ -1207,6 +1272,14 @@ "title_aux": "Prompt Injection Node for ComfyUI" } ], + "https://github.com/DeJoker/pipeline-parallel-comfy": [ + [ + "PipelineParallel" + ], + { + "title_aux": "Pipeline Parallel ComfyUI" + } + ], "https://github.com/Derfuu/Derfuu_ComfyUI_ModdedNodes": [ [], { @@ -1349,7 +1422,10 @@ ], "https://github.com/Extraltodeus/Uncond-Zero-for-ComfyUI": [ [ - "Uncond Zero" + "Conditioning combine positive and negative", + "Conditioning crop or fill", + "Uncond Zero", + "interrupt on NaN" ], { "title_aux": "Uncond-Zero-for-ComfyUI" @@ -1618,6 +1694,8 @@ "OpenposePreprocessor", "PiDiNetPreprocessor", "PixelPerfectResolution", + "RenderAnimalKps", + "RenderPeopleKps", "SAMPreprocessor", "SavePoseKpsAsJsonFile", "ScribblePreprocessor", @@ -1812,6 +1890,22 @@ "title_aux": "NX_PromptStyler" } ], + "https://github.com/FuouM/ComfyUI-FirstOrderMM": [ + [ + "FOMM_Partswap", + "FOMM_Runner", + "FOMM_Seg10Chooser", + "FOMM_Seg15Chooser", + "FOMM_Seg5Chooser" + ], + { + "author": "Fuou Marinas", + "description": "Run First Order Motion Model for Image Animation in ComfyUI.", + "nickname": "FOMM", + "title": "ComfyUI-FirstOrderMM", + "title_aux": "ComfyUI-FirstOrderMM" + } + ], "https://github.com/G-370/ComfyUI-SD3-Powerlab": [ [ "G370SD3PowerLab_AttentionToImage", @@ -1888,6 +1982,7 @@ [ "ImageRGBA2RGB", "ReActorBuildFaceModel", + "ReActorFaceBoost", "ReActorFaceSwap", "ReActorFaceSwapOpt", "ReActorImageDublicator", @@ -1904,10 +1999,13 @@ ], "https://github.com/GraftingRayman/ComfyUI_GraftingRayman": [ [ + "GR Checkered Board", "GR Flip Tile Random Inverted", "GR Flip Tile Random Red Ring", "GR Image Details Displayer", "GR Image Details Saver", + "GR Image Paste", + "GR Image Paste With Mask", "GR Image Resize", "GR Image Resize Methods", "GR Image Size", @@ -1916,6 +2014,8 @@ "GR Mask Create Random", "GR Mask Resize", "GR Multi Mask Create", + "GR Onomatopoeia", + "GR Prompt HUB", "GR Prompt Selector", "GR Prompt Selector Multi", "GR Stack Image", @@ -1927,6 +2027,14 @@ "title_aux": "GraftingRayman" } ], + "https://github.com/GreenLandisaLie/AuraSR-ComfyUI": [ + [ + "AuraSR.AuraSRUpscaler" + ], + { + "title_aux": "AuraSR-ComfyUI" + } + ], "https://github.com/Guillaume-Fgt/ComfyUI_StableCascadeLatentRatio": [ [ "StableCascadeLatentRatio" @@ -2065,6 +2173,14 @@ "title_aux": "ComfyUI-SizeFromArray" } ], + "https://github.com/ImmortalPie/ComfyUI-PonySwitch/raw/main/PonySwitch.py": [ + [ + "PonySwitch" + ], + { + "title_aux": "PonySwitch Node" + } + ], "https://github.com/Intersection98/ComfyUI_MX_post_processing-nodes": [ [ "MX_AlphaBlend", @@ -2352,14 +2468,6 @@ "title_aux": "comfy-plasma" } ], - "https://github.com/Kaharos94/ComfyUI-Saveaswebp": [ - [ - "Save_as_webp" - ], - { - "title_aux": "ComfyUI-Saveaswebp" - } - ], "https://github.com/Kangkang625/ComfyUI-paint-by-example": [ [ "PaintbyExamplePipeLoader", @@ -2371,8 +2479,16 @@ ], "https://github.com/KewkLW/ComfyUI-kewky_tools": [ [ - "FormattedTextOutput", - "TensorDebugPlus" + "CLIPInterrogator", + "FormattedPromptNode", + "IPAdapterBinApply", + "IPAdapterBinPreprocessor", + "ImageBatcher", + "LoadImagePlus", + "TensorDebugPlus", + "TextAppendNode", + "TextSearchNode", + "VRAM_Debug_Plus" ], { "title_aux": "ComfyUI-kewky_tools" @@ -2834,7 +2950,10 @@ "MaraScottSetInpaintingByMask_v1", "MaraScottUpscalerRefinerNode_v2", "MaraScottUpscalerRefinerNode_v3", - "MaraScott_Kijai_TokenCounter_v1" + "MaraScott_Kijai_TokenCounter_v1", + "McBoaty_Refiner_v4", + "McBoaty_TilePrompter_v4", + "McBoaty_Upscaler_v4" ], { "title_aux": "\ud83d\udc30 MaraScott Nodes" @@ -2851,8 +2970,10 @@ ], "https://github.com/MariusKM/ComfyUI-BadmanNodes": [ [ + "BadmanCLIPTextEncodeSDXLRegion", "BadmanIO", "BadmanIntUtil", + "BadmanStringSelect", "Badman_Blend", "Badman_Concat_String", "Badman_HexGenerator", @@ -2895,6 +3016,19 @@ "title_aux": "Mosaica" } ], + "https://github.com/MilitantHitchhiker/MilitantHitchhiker-SwitchbladePack": [ + [ + "IntegratedRandomPromptGenerator", + "TextAppender" + ], + { + "author": "Militant Hitchhiker", + "description": "Militant Hitchhiker's multi-function nodes.", + "nickname": "Switchblade", + "title": "Switchblade Pack", + "title_aux": "Militant Hitchhiker's Switchblade Pack" + } + ], "https://github.com/Miosp/ComfyUI-FBCNN": [ [ "JPEG artifacts removal FBCNN" @@ -2918,6 +3052,7 @@ [ "AnimeCosplayDir", "AspectRatioCondition", + "ChooseImage", "Colors", "CombinedCrop", "ConnectFloat", @@ -2935,6 +3070,7 @@ "HueSatLum", "HueShift", "ImageDimensions", + "ImageDimensionsBatch", "ImageOverlayResized", "ImageResizeLong", "ImageZigzag", @@ -2970,6 +3106,7 @@ "SplitImages", "StringJoin", "TimeStamp", + "TintnShift", "TricolorComposition", "WorkflowSettings", "WrapText", @@ -2997,6 +3134,14 @@ "title_aux": "ComfyUI-AnimateAnyone-Evolved" } ], + "https://github.com/MrSamSeen/ComfyUI_SSStereoscope": [ + [ + "SBS_by_SamSeen" + ], + { + "title_aux": "ComfyUI_SSStereoscope" + } + ], "https://github.com/Munkyfoot/ComfyUI-TextOverlay": [ [ "Text Overlay" @@ -3341,6 +3486,14 @@ "title_aux": "ComfyUI-Qais-Helper" } ], + "https://github.com/RedRayz/ComfyUI-Danbooru-To-WD": [ + [ + "DanbooruToWD" + ], + { + "title_aux": "ComfyUI-Danbooru-To-WD" + } + ], "https://github.com/RenderRift/ComfyUI-RenderRiftNodes": [ [ "AnalyseMetadata", @@ -3433,6 +3586,14 @@ "title_aux": "comfyui_io_helpers" } ], + "https://github.com/SEkINVR/ComfyUI-SaveAs": [ + [ + "ComfyUISaveAs" + ], + { + "title_aux": "ComfyUI SaveAS" + } + ], "https://github.com/SLAPaper/ComfyUI-Image-Selector": [ [ "ImageDuplicator", @@ -3493,12 +3654,12 @@ ], "https://github.com/SamKhoze/ComfyUI-DeepFuze": [ [ + "DeepFuze Save", "DeepFuzeAdavance", "DeepFuzeFaceSwap", "DeepfuzePreview", "LLM_node", "PlayBackAudio", - "SaveVideo [n-suite]", "TTS_generation" ], { @@ -3541,17 +3702,9 @@ "https://github.com/Scorpinaus/ComfyUI-DiffusersLoader": [ [ "CombinedDiffusersLoader", - "CombinedDiffusersSD15Loader", - "CombinedDiffusersSDXLLoader", "DiffusersClipLoader", "DiffusersUNETLoader", - "DiffusersVAELoader", - "SD15CLIPLoader", - "SD15UNETLoader", - "SD15VAELoader", - "SDXLCLIPLoader", - "SDXLUNETLoader", - "SDXLVAELoader" + "DiffusersVAELoader" ], { "title_aux": "Loaders for Diffusers-format checkpoints" @@ -3559,7 +3712,8 @@ ], "https://github.com/ScreamingHawk/comfyui-ollama-prompt-encode": [ [ - "OllamaCLIPTextEncode" + "OllamaCLIPTextEncode", + "OllamaPromptGenerator" ], { "author": "Michael Standen", @@ -3851,6 +4005,33 @@ "title_aux": "Eagleshadow Custom Nodes" } ], + "https://github.com/SherryXieYuchen/ComfyUI-Image-Inpainting": [ + [ + "CropImageByRect", + "INPAINT_ColorCorrection", + "INPAINT_CropImage", + "INPAINT_InpaintingWithModel", + "INPAINT_LoadModel", + "INPAINT_PasteBackCropImage", + "INPAINT_VAEDecode", + "INPAINT_VAEEncode", + "ImagePostprocess", + "ImagePreprocess" + ], + { + "title_aux": "ComfyUI-Image-Inpainting" + } + ], + "https://github.com/Shibiko-AI/ShibikoAI-ComfyUI-Tools": [ + [ + "Cascade", + "Luts", + "Waifu2x" + ], + { + "title_aux": "Shibiko AI ComfyUI Tools" + } + ], "https://github.com/ShmuelRonen/ComfyUI-SVDResizer": [ [ "SVDRsizer" @@ -4392,6 +4573,7 @@ "https://github.com/TRI3D-LC/tri3d-comfyui-nodes": [ [ "get_histogram_limits", + "main_light_layer", "main_scaled_paste", "simple_rescale_histogram", "tri3d-HistogramEqualization", @@ -4400,6 +4582,7 @@ "tri3d-adjust-neck", "tri3d-atr-parse", "tri3d-atr-parse-batch", + "tri3d-bgremove-mega", "tri3d-clear-memory", "tri3d-clipdrop-bgremove-api", "tri3d-clipdrop-bgreplace-api", @@ -4410,7 +4593,10 @@ "tri3d-extract-parts-batch", "tri3d-extract-parts-batch2", "tri3d-extract-parts-mask-batch", + "tri3d-extract-pascal-parts-batch", "tri3d-face-recognise", + "tri3d-facer_face_segment", + "tri3d-flexible_color_extract", "tri3d-float-to-image", "tri3d-fuzzification", "tri3d-get_histogram_limits", @@ -4421,17 +4607,23 @@ "tri3d-interaction-canny", "tri3d-levindabhi-cloth-seg", "tri3d-load-pose-json", + "tri3d-load_AEMatter_Model", + "tri3d-load_MVANet_Model", "tri3d-luminosity-match", "tri3d-main_transparent_background", + "tri3d-photoroom-bgremove-api", "tri3d-pose-adaption", "tri3d-pose-to-image", "tri3d-position-hands", "tri3d-position-parts-batch", + "tri3d-position-pascal-parts-batch", "tri3d-recolor-mask", "tri3d-recolor-mask-LAB_space", "tri3d-recolor-mask-LAB_space_manual", "tri3d-recolor-mask-RGB_space", "tri3d-renormalize_array", + "tri3d-run_AEMatter_inference", + "tri3d-run_MVANet_inference", "tri3d-scaled-paste", "tri3d-simple_bg_swap", "tri3d-simple_rescale_histogram", @@ -4600,6 +4792,7 @@ "https://github.com/TinyTerra/ComfyUI_tinyterraNodes": [ [ "ttN KSampler_v2", + "ttN advPlot combo", "ttN advPlot range", "ttN advPlot string", "ttN advanced xyPlot", @@ -4851,6 +5044,8 @@ "Diffusers Hub Model Down-Loader", "Diffusers Model Loader", "Export API", + "HSL to Hex", + "Hex to HSL", "Image Analyze", "Image Aspect Ratio", "Image Batch", @@ -5555,9 +5750,11 @@ [ "AiStoreAzureGPTLiam", "GetBetterDepthImage", + "LiamLibDisplayText", "LiamLibFillImage", "LiamLibImageToGray", "LiamLibLoadImage", + "LiamLibMergeText", "LiamLibSaveImg", "LiamLibSaveText", "OllamaApiTNodeLiam", @@ -5641,8 +5838,11 @@ ], "https://github.com/alisson-anjos/ComfyUI-Ollama-Describer": [ [ - "LLaVaDescriber", - "OllamaDescriber" + "InputText", + "OllamaImageDescriber", + "OllamaTextDescriber", + "ShowText", + "TextTransformer" ], { "title_aux": "ComfyUI-Ollama-Describer" @@ -5822,6 +6022,14 @@ "title_aux": "antrobots ComfyUI Nodepack" } ], + "https://github.com/asagi4/ComfyUI-Adaptive-Guidance": [ + [ + "AdaptiveGuidance" + ], + { + "title_aux": "Adaptive Guidance for ComfyUI" + } + ], "https://github.com/asagi4/ComfyUI-CADS": [ [ "CADS" @@ -6453,14 +6661,6 @@ "title_aux": "ImageProcessing" } ], - "https://github.com/bvhari/ComfyUI_LatentToRGB": [ - [ - "LatentToRGB" - ], - { - "title_aux": "LatentToRGB" - } - ], "https://github.com/bvhari/ComfyUI_PerpWeight": [ [ "CLIPTextEncodePerpWeight" @@ -6471,6 +6671,7 @@ ], "https://github.com/bvhari/ComfyUI_SUNoise": [ [ + "SUNoiseLatent", "SamplerDPM2Ancestral_SUN", "SamplerDPMPP2SAncestral_SUN", "SamplerDPMPP_2M_SDE_SUN", @@ -6520,9 +6721,21 @@ "title_aux": "comfyui-image-round" } ], - "https://github.com/celsojr2013/comfyui_simpletools/raw/main/google_translator.py": [ + "https://github.com/celsojr2013/comfyui_jamworks_client": [ [ - "GoogleTranslator" + "Jamworks_Download", + "Jamworks_Login", + "Shell_Command" + ], + { + "title_aux": "comfyui_jamworks_client" + } + ], + "https://github.com/celsojr2013/comfyui_simpletools": [ + [ + "GoogleTranslator", + "Parameters", + "ResolutionSolver" ], { "title_aux": "ComfyUI SimpleTools Suit" @@ -6533,6 +6746,8 @@ "ImageDirIterator", "Modelscopet2v", "Modelscopev2v", + "RemapRange", + "SplitImageChannels", "TextFileLineIterator", "VidDirIterator" ], @@ -7114,6 +7329,7 @@ "LayerUtility: Boolean", "LayerUtility: BooleanOperator", "LayerUtility: BooleanOperatorV2", + "LayerUtility: CheckMask", "LayerUtility: ColorImage", "LayerUtility: ColorImage V2", "LayerUtility: ColorPicker", @@ -7131,6 +7347,7 @@ "LayerUtility: GradientImage", "LayerUtility: GradientImage V2", "LayerUtility: HLFrequencyDetailRestore", + "LayerUtility: HSV Value", "LayerUtility: If", "LayerUtility: ImageAutoCrop", "LayerUtility: ImageAutoCrop V2", @@ -7163,6 +7380,7 @@ "LayerUtility: PromptTagger", "LayerUtility: PurgeVRAM", "LayerUtility: QWenImage2Prompt", + "LayerUtility: QueueStop", "LayerUtility: RGB Value", "LayerUtility: RestoreCropBox", "LayerUtility: SD3NegativeConditioning", @@ -7314,6 +7532,17 @@ "title_aux": "Use Everywhere (UE Nodes)" } ], + "https://github.com/christian-byrne/audio-separation-nodes-comfyui": [ + [ + "AudioCombine", + "AudioCrop", + "AudioSeparation", + "AudioTempoMatch" + ], + { + "title_aux": "audio-separation-nodes-comfyui" + } + ], "https://github.com/christian-byrne/img2colors-comfyui-node": [ [ "bmy_Img2ColorNode" @@ -7497,6 +7726,7 @@ "ConditioningZeroOut", "ControlNetApply", "ControlNetApplyAdvanced", + "ControlNetApplySD3", "ControlNetLoader", "CropMask", "DiffControlNetLoader", @@ -7514,6 +7744,7 @@ "FlipSigmas", "FreeU", "FreeU_V2", + "GITSScheduler", "GLIGENLoader", "GLIGENTextBoxApply", "GrowMask", @@ -7572,6 +7803,7 @@ "ModelMergeBlocks", "ModelMergeSD1", "ModelMergeSD2", + "ModelMergeSD3_2B", "ModelMergeSDXL", "ModelMergeSimple", "ModelMergeSubtract", @@ -7589,6 +7821,7 @@ "PhotoMakerLoader", "PolyexponentialScheduler", "PorterDuffImageComposite", + "PreviewAudio", "PreviewImage", "RandomNoise", "RebatchImages", @@ -7607,6 +7840,8 @@ "SamplerDPMPP_3M_SDE", "SamplerDPMPP_SDE", "SamplerEulerAncestral", + "SamplerEulerAncestralCFGPP", + "SamplerEulerCFGpp", "SamplerLCMUpscale", "SamplerLMS", "SaveAnimatedPNG", @@ -7794,6 +8029,8 @@ "IPAdapterMS", "IPAdapterModelLoader", "IPAdapterNoise", + "IPAdapterPreciseStyleTransfer", + "IPAdapterPreciseStyleTransferBatch", "IPAdapterPromptScheduleFromWeightsStrategy", "IPAdapterRegionalConditioning", "IPAdapterSaveEmbeds", @@ -7860,6 +8097,7 @@ "ImageHistogramMatch+", "ImageListToBatch+", "ImagePosterize+", + "ImagePreviewFromLatent+", "ImageRandomTransform+", "ImageRemoveAlpha+", "ImageRemoveBackground+", @@ -8047,12 +8285,17 @@ "https://github.com/daxcay/ComfyUI-DataSet": [ [ "DATASET_CaptionVisualizer", + "DATASET_LoadImage", "DATASET_OpenAIChat", "DATASET_OpenAIChatImage", + "DATASET_OpenAIChatImageBatch", + "DATASET_SaveImage", "DATASET_SearchAndReplace", "DATASET_TXTFileLoader", "DATASET_TXTFileSaver", + "DATASET_TXTFileSaverBatch", "DATASET_TagManipulatorByImageNames", + "DATASET_TriggerWords", "DATASET_xCopy" ], { @@ -8482,7 +8725,8 @@ "SaveImageAdvanced", "SavePosEmbeds", "VAEDecode_to_folder", - "VideoFrameSelector" + "VideoFrameSelector", + "WidthHeightPicker" ], { "title_aux": "Various custom nodes by Eden.art" @@ -8559,12 +8803,20 @@ ], { "author": "\"\u02f6\ud835\udfa2\u292c\u2ad2\u2d56s\u143c\u02f6\"", - "description": "\"Selector & Recourse. Presets & failsafes. Work flow.\"", + "description": "\"EXDYSA. Selector and Recourse. Presets & failsafes. Work flow.\"", "nickname": "\"Selector\"", "title": "\"Selector\"", "title_aux": "comfyui-selector" } ], + "https://github.com/fablestudio/ComfyUI-Showrunner-Utils": [ + [ + "AlignFace" + ], + { + "title_aux": "ComfyUI-Showrunner-Utils" + } + ], "https://github.com/fearnworks/ComfyUI_FearnworksNodes/raw/main/fw_nodes.py": [ [ "Count Files in Directory (FW)", @@ -8663,14 +8915,19 @@ "FL_ImagePixelator", "FL_ImageRandomizer", "FL_InfiniteZoom", + "FL_InpaintCrop", + "FL_Inpaint_Stitch", + "FL_KsamplerSettings", "FL_NFTGenerator", "FL_PaperDrawn", "FL_PixelArtShader", "FL_PixelSort", "FL_PromptSelector", "FL_RandomNumber", + "FL_RetroEffect", "FL_Ripple", - "FL_Shadertoy" + "FL_Shadertoy", + "FL_TD_Sampler" ], { "title_aux": "ComfyUI_Fill-Nodes" @@ -8818,6 +9075,15 @@ "title_aux": "ComfyUI-HyperSDXL1StepUnetScheduler (ByteDance)" } ], + "https://github.com/fofr/ComfyUI-Prompter-fofrAI": [ + [ + "List sampler \ud83e\udeb4", + "Prompt from template \ud83e\udeb4" + ], + { + "title_aux": "ComfyUI-Prompter-fofrAI" + } + ], "https://github.com/forever22777/comfyui-self-guidance": [ [ "CLIPConditioning", @@ -8895,8 +9161,13 @@ ], "https://github.com/fsdymy1024/ComfyUI_fsdymy": [ [ + "IPAdapterLayerWeight", "Preview Image Without Metadata", - "Save Image Without Metadata" + "PreviewImageWithoutMetadata", + "Save Image Without Metadata", + "SaveImageWithoutMetadata", + "ShowText", + "ZhiPuAiNode" ], { "title_aux": "ComfyUI_fsdymy" @@ -8913,48 +9184,6 @@ ], "https://github.com/get-salt-AI/SaltAI": [ [ - "LLMChat", - "LLMChatEngine", - "LLMChatMessageConcat", - "LLMChatMessages", - "LLMChatMessagesAdv", - "LLMComplete", - "LLMDirectoryReader", - "LLMHtmlComposer", - "LLMHtmlRepair", - "LLMJSONQueryEngine", - "LLMJsonComposer", - "LLMJsonRepair", - "LLMMarkdownComposer", - "LLMMarkdownRepair", - "LLMNotionReader", - "LLMPostProcessDocuments", - "LLMQueryEngine", - "LLMQueryEngineAdv", - "LLMRegexCreator", - "LLMRegexRepair", - "LLMRssReaderNode", - "LLMSemanticSplitterNodeParser", - "LLMSentenceSplitterNodeCreator", - "LLMServiceContextAdv", - "LLMServiceContextDefault", - "LLMSimpleWebPageReader", - "LLMSummaryIndex", - "LLMTrafilaturaWebReader", - "LLMTreeIndex", - "LLMVectorStoreIndex", - "LLMYamlComposer", - "LLMYamlRepair", - "OPAC", - "OPAC2Floats", - "OPACList2ExecList", - "OPACListVariance", - "OPACPerlinSettings", - "OPACTransformImages", - "OPCSLayerExtractor", - "OPCScheduler", - "OpenAIModel", - "ParallaxMotion", "SAIPrimitiveConverter", "SAIStringRegexSearchMatch", "SAIStringRegexSearchReplace", @@ -8972,7 +9201,7 @@ "SaltMasksToImages", "SaltOutput", "SaltRGBAFromMask", - "ScheduledImageAdjust" + "SaltWebsiteScreenshot" ], { "title_aux": "SaltAI-Open-Resources" @@ -9240,6 +9469,7 @@ "GlifConsistencyDecoder", "GlifPatchConsistencyDecoderTiled", "GlifVariable", + "GlifmojiLoader", "HFHubEmbeddingLoader", "HFHubLoraLoader", "ImageToMultipleOf", @@ -9347,54 +9577,62 @@ "textMaskOverlay_node" ], { - "author": "YFG", - "description": "This extension loads a model checkpoint file and extracts the model state dictionary or the entire model, treating all checkpoints as if they are in the root directory.", - "nickname": "\ud83e\udde0 YFG Smart Checkpoint Loader", - "title": "YFG Smart Checkpoint Loader", + "author": "Manny Gonzalez", + "description": "Utility custom nodes for special effects, image manipulation and quality of life tools.", + "nickname": "\ud83d\udc2f YFG Comical Nodes", + "title": "\ud83d\udc2f YFG Comical Nodes", "title_aux": "\ud83d\ude38 YFG Comical Nodes" } ], "https://github.com/griptape-ai/ComfyUI-Griptape": [ [ - "AudioTranscriptionTask", - "Calculator", - "CreateAgent", - "DateTime", - "EnvironmentConfig", - "ExpandAgent", - "ImageQueryTask", - "MergeTexts", - "ParallelImageQueryTask", - "PromptImageGenerationTask", - "PromptImageVariationTask", - "PromptTask", - "Rule", - "RunAgent", - "TextSummaryTask", - "ToolList", - "ToolTask", - "ToolkitTask", - "WebScraper", - "gtAudioTranscriptionClient", - "gtUIAmazonBedrockStableDiffusionImageGenerationDriver", - "gtUIAmazonBedrockStructureConfig", - "gtUIAmazonBedrockTitanImageGenerationDriver", - "gtUIAnthropicStructureConfig", - "gtUICLIPTextEncode", - "gtUIFetchImage", - "gtUIFileManager", - "gtUIGoogleStructureConfig", - "gtUIInputNode", - "gtUIKnowledgeBaseTool", - "gtUILeonardoImageGenerationDriver", - "gtUILoadAudio", - "gtUIOpenAiAudioTranscriptionDriver", - "gtUIOpenAiImageGenerationDriver", - "gtUIOpenAiStructureConfig", - "gtUIOutputImageNode", - "gtUIOutputStringNode", - "gtUITextToClipEncode", - "gtUIWebSearch" + "Griptape Agent Config: Amazon Bedrock", + "Griptape Agent Config: Anthropic", + "Griptape Agent Config: Google", + "Griptape Agent Config: LM Studio", + "Griptape Agent Config: Ollama", + "Griptape Agent Config: OpenAI", + "Griptape Audio Driver: OpenAI", + "Griptape Combine: Merge Inputs", + "Griptape Combine: Merge Texts", + "Griptape Combine: Rules List", + "Griptape Combine: Tool List", + "Griptape Config: Environment Variables", + "Griptape Convert: Text to CLIP Encode", + "Griptape Convert: Text to Combo", + "Griptape Create: Agent", + "Griptape Create: CLIP Text Encode", + "Griptape Create: Image Variation", + "Griptape Create: Image from Text", + "Griptape Create: Rules", + "Griptape Create: Text", + "Griptape Display: Artifact", + "Griptape Display: Data as Text", + "Griptape Display: Image", + "Griptape Display: Text", + "Griptape Driver: Amazon Bedrock Stable Diffusion", + "Griptape Driver: Amazon Bedrock Titan", + "Griptape Driver: Leonardo.AI", + "Griptape Driver: OpenAI Image Generation", + "Griptape Expand: Agent Nodes", + "Griptape Load: Audio", + "Griptape Load: Image From URL", + "Griptape Run: Agent", + "Griptape Run: Audio Transcription", + "Griptape Run: Image Description", + "Griptape Run: Parallel Image Description", + "Griptape Run: Prompt Task", + "Griptape Run: Text Summary", + "Griptape Run: Tool Task", + "Griptape Run: Toolkit Task", + "Griptape Set: Default Agent", + "Griptape Tool: Audio Transcription", + "Griptape Tool: Calculator", + "Griptape Tool: DateTime", + "Griptape Tool: FileManager", + "Griptape Tool: Griptape Cloud KnowledgeBase", + "Griptape Tool: WebScraper", + "Griptape Tool: WebSearch" ], { "author": "Jason Schleifer", @@ -9491,6 +9729,14 @@ "title_aux": "ComfyUI Dreamtalk" } ], + "https://github.com/hay86/ComfyUI_Hallo": [ + [ + "D_HalloNode" + ], + { + "title_aux": "ComfyUI Hallo" + } + ], "https://github.com/hay86/ComfyUI_MiniCPM-V": [ [ "D_MiniCPM_VQA" @@ -9525,6 +9771,10 @@ "CLIPTextEncode_party", "Dingding", "Dingding_tool", + "KG_csv_toolkit_developer", + "KG_csv_toolkit_user", + "KG_json_toolkit_developer", + "KG_json_toolkit_user", "KSampler_party", "LLM", "LLM_api_loader", @@ -9554,6 +9804,8 @@ "google_tool", "interpreter_tool", "keyword_tool", + "listen_audio", + "llama_guff_loader", "load_embeddings", "load_excel", "load_file", @@ -9567,10 +9819,13 @@ "omost_decode", "omost_setting", "openai_tts", + "openai_whisper", "play_audio", + "replace_string", "show_text_party", "start_dialog", "start_workflow", + "story_json_tool", "string_logic", "substring", "time_tool", @@ -9685,6 +9940,14 @@ "title_aux": "ComfyUI-layerdiffuse (layerdiffusion)" } ], + "https://github.com/huchenlei/ComfyUI-openpose-editor": [ + [ + "huchenlei.LoadOpenposeJSON" + ], + { + "title_aux": "ComfyUI-openpose-editor" + } + ], "https://github.com/huchenlei/ComfyUI_DanTagGen": [ [ "PromptDanTagGen" @@ -9747,6 +10010,14 @@ "title_aux": "hus' utils for ComfyUI" } ], + "https://github.com/hwhaocool/ComfyUI-Select-Any": [ + [ + "SelectAnyValues" + ], + { + "title_aux": "ComfyUI-Select-Any" + } + ], "https://github.com/hylarucoder/ComfyUI-Eagle-PNGInfo": [ [ "EagleImageNode", @@ -9758,6 +10029,15 @@ "title_aux": "Eagle PNGInfo" } ], + "https://github.com/hyunamy/comfy-ui-on-complete-email-me": [ + [ + "OnCompleteEmailMe", + "OnCompleteWebhook" + ], + { + "title_aux": "Comfy-UI on-complete-email-me" + } + ], "https://github.com/iFREEGROUP/comfyui-undistort": [ [ "IG_LoadCheckerboardImageForCalibrateCamera", @@ -9846,6 +10126,20 @@ "title_aux": "FaceSwap" } ], + "https://github.com/iwanders/ComfyUI_nodes": [ + [ + "IW_JsonPickItem", + "IW_StringConcat", + "IW_StringNode", + "IW_StringPrint", + "IW_StringReplace", + "IW_StringSave", + "IW_TokenizerVocab" + ], + { + "title_aux": "iwanders/ComfyUI_nodes" + } + ], "https://github.com/jags111/ComfyUI_Jags_Audiotools": [ [ "BatchJoinAudio", @@ -9975,6 +10269,170 @@ "title_aux": "Efficiency Nodes for ComfyUI Version 2.0+" } ], + "https://github.com/jakechai/ComfyUI-JakeUpgrade": [ + [ + "Animation Prompt JK", + "Animation Value JK", + "Base Image Parameters Extract JK", + "Base Model Parameters Extract JK", + "Base Model Parameters JK", + "Base Model Pipe Extract JK", + "Base Model Pipe JK", + "CM_BoolBinaryOperation JK", + "CM_BoolToInt JK", + "CM_BoolUnaryOperation JK", + "CM_BreakoutVec2 JK", + "CM_BreakoutVec3 JK", + "CM_BreakoutVec4 JK", + "CM_ComposeVec2 JK", + "CM_ComposeVec3 JK", + "CM_ComposeVec4 JK", + "CM_FloatBinaryCondition JK", + "CM_FloatBinaryOperation JK", + "CM_FloatToInt JK", + "CM_FloatToNumber JK", + "CM_FloatUnaryCondition JK", + "CM_FloatUnaryOperation JK", + "CM_IntBinaryCondition JK", + "CM_IntBinaryOperation JK", + "CM_IntToBool JK", + "CM_IntToFloat JK", + "CM_IntToNumber JK", + "CM_IntUnaryCondition JK", + "CM_IntUnaryOperation JK", + "CM_NumberBinaryCondition JK", + "CM_NumberBinaryOperation JK", + "CM_NumberToFloat JK", + "CM_NumberToInt JK", + "CM_NumberUnaryCondition JK", + "CM_NumberUnaryOperation JK", + "CM_Vec2BinaryCondition JK", + "CM_Vec2BinaryOperation JK", + "CM_Vec2FloatOperation_JK", + "CM_Vec2ToFloatBinaryOperation JK", + "CM_Vec2ToFloatUnaryOperation JK", + "CM_Vec2UnaryCondition JK", + "CM_Vec2UnaryOperation JK", + "CM_Vec3BinaryCondition JK", + "CM_Vec3BinaryOperation JK", + "CM_Vec3FloatOperation_JK", + "CM_Vec3ToFloatBinaryOperation JK", + "CM_Vec3ToFloatUnaryOperation JK", + "CM_Vec3UnaryCondition JK", + "CM_Vec3UnaryOperation JK", + "CM_Vec4BinaryCondition JK", + "CM_Vec4BinaryOperation JK", + "CM_Vec4FloatOperation_JK", + "CM_Vec4ToFloatBinaryOperation JK", + "CM_Vec4ToFloatUnaryOperation JK", + "CM_Vec4UnaryCondition JK", + "CM_Vec4UnaryOperation JK", + "CR Apply ControlNet JK", + "CR Apply Multi-ControlNet JK", + "CR Boolean JK", + "CR Clip Input Switch JK", + "CR Conditioning Input Switch JK", + "CR ControlNet Input Switch JK", + "CR Float Input Switch JK", + "CR Image Input Switch JK", + "CR Impact Pipe Input Switch JK", + "CR Int Input Switch JK", + "CR Latent Input Switch JK", + "CR LoRA Stack JK", + "CR Load LoRA JK", + "CR Mask Input Switch JK", + "CR Model Input Switch JK", + "CR Multi-ControlNet Stack JK", + "CR Pipe Input Switch JK", + "CR SD1.5 Aspect Ratio JK", + "CR SDXL Aspect Ratio JK", + "CR Switch Model and CLIP JK", + "CR Text Input Switch JK", + "CR VAE Input Switch JK", + "Ckpt Loader JK", + "Detailer Parameters JK", + "Embedding Picker JK", + "Embedding Picker Multi JK", + "Evaluate Examples JK", + "Evaluate Floats JK", + "Evaluate Ints JK", + "Evaluate Strings JK", + "HintImageEnchance JK", + "Image Upscale Parameters Extract JK", + "Ksampler Parameters JK", + "Latent Upscale Parameters Extract JK", + "Load Image With Metadata JK", + "Metadata Pipe Extract JK", + "Metadata Pipe JK", + "NodesState JK", + "Noise Injection Parameters JK", + "Orbit Poses JK", + "Pipe End JK", + "Project Setting JK", + "Refine 1 Parameters Extract JK", + "Refine 2 Parameters Extract JK", + "Refine Model Parameters JK", + "Refine Pipe Extract JK", + "Refine Pipe JK", + "Reroute Ckpt JK", + "Reroute List JK", + "Reroute Resize JK", + "Reroute Sampler JK", + "Reroute Upscale JK", + "Reroute Vae JK", + "SDXLPromptStylerAll", + "SDXLPromptStylerHorror", + "SDXLPromptStylerMisc", + "SDXLPromptStylerbyArtist", + "SDXLPromptStylerbyCamera", + "SDXLPromptStylerbyComposition", + "SDXLPromptStylerbyCyberpunkSurrealism", + "SDXLPromptStylerbyDepth", + "SDXLPromptStylerbyDiva", + "SDXLPromptStylerbyEnvironment", + "SDXLPromptStylerbyFantasySetting", + "SDXLPromptStylerbyFilter", + "SDXLPromptStylerbyFocus", + "SDXLPromptStylerbyFooocus", + "SDXLPromptStylerbyImpressionism", + "SDXLPromptStylerbyLighting", + "SDXLPromptStylerbyMarc", + "SDXLPromptStylerbyMileHigh", + "SDXLPromptStylerbyMood", + "SDXLPromptStylerbyMre", + "SDXLPromptStylerbyMythicalCreature", + "SDXLPromptStylerbyOriginal", + "SDXLPromptStylerbyQuantumRealism", + "SDXLPromptStylerbySai", + "SDXLPromptStylerbySteamPunkRealism", + "SDXLPromptStylerbySubject", + "SDXLPromptStylerbySurrealism", + "SDXLPromptStylerbyTheme", + "SDXLPromptStylerbyTimeofDay", + "SDXLPromptStylerbyTwri", + "SDXLPromptStylerbyWyvern", + "SDXLPromptbyCelticArt", + "SDXLPromptbyContemporaryNordicArt", + "SDXLPromptbyFashionArt", + "SDXLPromptbyGothicRevival", + "SDXLPromptbyIrishFolkArt", + "SDXLPromptbyRomanticNationalismArt", + "SDXLPromptbySportsArt", + "SDXLPromptbyStreetArt", + "SDXLPromptbyVikingArt", + "SDXLPromptbyWildlifeArt", + "Sampler Loader JK", + "Save Image with Metadata Flow JK", + "Save Image with Metadata JK", + "Upscale Model Loader JK", + "Upscale Model Parameters Extract JK", + "Upscale Model Parameters JK", + "Vae Loader JK" + ], + { + "title_aux": "ComfyUI-JakeUpgrade" + } + ], "https://github.com/jamal-alkharrat/ComfyUI_rotate_image": [ [ "RotateImage" @@ -10138,7 +10596,8 @@ [ "CLIPTextEncodeWithStats", "OpenPoseEditorAdv", - "SaveImgAdv" + "SaveImgAdv", + "SolidMaskAdv" ], { "title_aux": "ULTools for ComfyUI" @@ -10148,7 +10607,8 @@ [ "LCMScheduler", "SamplerLCMAlternative", - "SamplerLCMCycle" + "SamplerLCMCycle", + "SamplerLCMDualNoise" ], { "title_aux": "ComfyUI-sampler-lcm-alternative" @@ -10163,6 +10623,14 @@ "title_aux": "ComfyUI Deepface" } ], + "https://github.com/jroc22/ComfyUI-CSV-prompt-builder": [ + [ + "BuildPromptFromCSV" + ], + { + "title_aux": "ComfyUI-CSV-prompt-builder" + } + ], "https://github.com/jtrue/ComfyUI-JaRue": [ [ "Text2Image_jru", @@ -10184,6 +10652,16 @@ "title_aux": "ComfyUI LayerDivider" } ], + "https://github.com/jtydhr88/ComfyUI-Unique3D": [ + [ + "Unique3DLoadPipeline", + "Unique3DRun - Geo Reconstruct", + "Unique3DRun - MVPrediction" + ], + { + "title_aux": "ComfyUI Unique3D" + } + ], "https://github.com/ka-puna/comfyui-yanc": [ [ "YANC.ConcatStrings", @@ -10207,9 +10685,10 @@ ], "https://github.com/kadirnar/ComfyUI-Transformers": [ [ - "DepthEstimationPipeline", + "DepthEstimationInference", "ImageClassificationPipeline", "ImageSegmentationPipeline", + "LoadDepthModel", "ObjectDetectionPipeline" ], { @@ -10218,10 +10697,18 @@ ], "https://github.com/kadirnar/ComfyUI-YOLO": [ [ + "BBoxToCoco", "BBoxToXYWH", + "BBoxVisNode", + "CocoToNumber", "ConvertToDict", - "LoadUltralytics", + "CustomUltralyticsModelLoader", + "GetImageSize", + "ImageResizeAdvanced", + "SAMInference", + "SAMLoader", "UltralyticsInference", + "UltralyticsModelLoader", "UltralyticsVisualization" ], { @@ -10448,7 +10935,8 @@ "https://github.com/kijai/ComfyUI-CCSR": [ [ "CCSR_Model_Select", - "CCSR_Upscale" + "CCSR_Upscale", + "DownloadAndLoadCCSRModel" ], { "title_aux": "ComfyUI-CCSR" @@ -10487,6 +10975,7 @@ "DownloadAndLoadDynamiCrafterModel", "DynamiCrafterBatchInterpolation", "DynamiCrafterI2V", + "DynamiCrafterLoadInitNoise", "DynamiCrafterModelLoader", "ToonCrafterDecode", "ToonCrafterInterpolation" @@ -10507,6 +10996,15 @@ "title_aux": "ComfyUI-ELLA-wrapper" } ], + "https://github.com/kijai/ComfyUI-Florence2": [ + [ + "DownloadAndLoadFlorence2Model", + "Florence2Run" + ], + { + "title_aux": "ComfyUI-Florence2" + } + ], "https://github.com/kijai/ComfyUI-Geowizard": [ [ "geowizard_model_loader", @@ -10662,6 +11160,20 @@ "title_aux": "ComfyUI-LaVi-Bridge-Wrapper" } ], + "https://github.com/kijai/ComfyUI-LuminaWrapper": [ + [ + "DownloadAndLoadGemmaModel", + "DownloadAndLoadLuminaModel", + "GemmaSampler", + "LuminaGemmaTextEncode", + "LuminaGemmaTextEncodeArea", + "LuminaT2ISampler", + "LuminaTextAreaAppend" + ], + { + "title_aux": "ComfyUI-LuminaWrapper" + } + ], "https://github.com/kijai/ComfyUI-Marigold": [ [ "ColorizeDepthmap", @@ -10743,6 +11255,7 @@ "https://github.com/klinter007/klinter_nodes": [ [ "Filter", + "Florence2Captions2IPA", "PresentString", "SingleString", "SizeSelector", @@ -10934,12 +11447,25 @@ "https://github.com/latenightlabs/ComfyUI-LNL": [ [ "LNL_FrameSelector", - "LNL_FrameSelectorV2" + "LNL_FrameSelectorV2", + "LNL_FrameSelectorV3" ], { "title_aux": "LNL Frame Selector" } ], + "https://github.com/leiweiqiang/ComfyUI-TRA": [ + [ + "TclEbSynth", + "TclExtractFramesFromVideo", + "TclExtractFramesFromVideoFile", + "TclFrames2Video", + "TclSaveVideoFromFrames" + ], + { + "title_aux": "ComfyUI-TRA" + } + ], "https://github.com/leoleelxh/ComfyUI-LLMs": [ [ "\ud83d\uddbc\ufe0f LLMs_Vison_Ali", @@ -11011,8 +11537,10 @@ "Blocks Mecha Hyper", "Float Mecha Hyper", "Lora Mecha Recipe", + "Mecha Deserializer", "Mecha Merger", "Mecha Recipe List", + "Mecha Serializer", "Model Mecha Recipe" ], { @@ -11037,6 +11565,7 @@ "https://github.com/lks-ai/anynode": [ [ "AnyNode", + "AnyNodeAnthropic", "AnyNodeCodeViewer", "AnyNodeExport", "AnyNodeGemini", @@ -11046,7 +11575,7 @@ "author": "newsbubbles", "description": "This single node uses an LLM to generate a functionality based on your request. You can make the node do anything.", "nickname": "AnyNode", - "title": "AnyNode v0.1", + "title": "AnyNode v0.1.1", "title_aux": "ComfyUI AnyNode: Any Node you ask for" } ], @@ -11221,6 +11750,22 @@ "title_aux": "Wildcards" } ], + "https://github.com/lordgasmic/comfyui_save_image_with_options": [ + [ + "SaveImageWithOptions" + ], + { + "title_aux": "comfyui_save_image_with_options" + } + ], + "https://github.com/lordgasmic/comfyui_wildcards": [ + [ + "CLIPTextEncodeWithWildcards" + ], + { + "title_aux": "comfyui_wildcards" + } + ], "https://github.com/lquesada/ComfyUI-Inpaint-CropAndStitch": [ [ "InpaintCrop", @@ -11236,7 +11781,8 @@ [ "PromptCombinator", "PromptCombinatorExportGallery", - "PromptCombinatorMerger" + "PromptCombinatorMerger", + "PromptCombinatorRandomPrompt" ], { "title_aux": "ComfyUI-Prompt-Combinator" @@ -11286,6 +11832,7 @@ "FromDetailerPipe", "FromDetailerPipeSDXL", "FromDetailerPipe_v2", + "GITSSchedulerFuncProvider", "ImageListToImageBatch", "ImageMaskSwitch", "ImageReceiver", @@ -11528,6 +12075,8 @@ "RemoveControlNetFromRegionalPrompts //Inspire", "RetrieveBackendData //Inspire", "RetrieveBackendDataNumberKey //Inspire", + "ScheduledCFGGuider //Inspire", + "ScheduledPerpNegCFGGuider //Inspire", "SeedExplorer //Inspire", "SelectNthMask //Inspire", "ShowCachedInfo //Inspire", @@ -11612,7 +12161,7 @@ ], { "author": "\u02f6marduk191", - "description": "A node to set workflow settings.", + "description": "marduk191s nodes.", "nickname": "marduk191 workflow settings", "title": "marduk191 workflow settings", "title_aux": "marduk191 workflow settings" @@ -11801,6 +12350,7 @@ "PettyPaintFileExists", "PettyPaintImageColorsToMasks", "PettyPaintImageCompositeMasked", + "PettyPaintImageDims", "PettyPaintImagePlacement", "PettyPaintImageSave", "PettyPaintImageStore", @@ -11809,8 +12359,11 @@ "PettyPaintJsonMap", "PettyPaintJsonRead", "PettyPaintJsonReadArray", + "PettyPaintKSampler", + "PettyPaintKSamplerAdvanced", "PettyPaintLoRAStack", "PettyPaintLoadImage", + "PettyPaintLoadImageMasks", "PettyPaintLoadImages", "PettyPaintMap", "PettyPaintMasksToImages", @@ -11819,9 +12372,11 @@ "PettyPaintProcessor", "PettyPaintRemoveAddText", "PettyPaintSDTurboScheduler", + "PettyPaintStoryImage", "PettyPaintText", "PettyPaintTexts_to_Conditioning", - "PettyPaintToJson" + "PettyPaintToJson", + "PettyPaintVAEDecode" ], { "title_aux": "petty-paint-comfyui-node" @@ -11881,6 +12436,15 @@ "title_aux": "ComfyUI - Mask Bounding Box" } ], + "https://github.com/mingqizhang/ComfyUI_InSPyResNet_zmq": [ + [ + "INSPY removebg Apply", + "INSPY removebg ModelLoader" + ], + { + "title_aux": "ComfyUI_InSPyResNet_zmq" + } + ], "https://github.com/mirabarukaso/ComfyUI_Mira": [ [ "BooleanListInterpreter1", @@ -11979,6 +12543,27 @@ "title_aux": "PoseKeypoint Mask" } ], + "https://github.com/my-opencode/ComfyUI_IndustrialMagick": [ + [ + "IndustrialMagick", + "IndustrialMagickImageIngest" + ], + { + "title_aux": "ComfyUI_IndustrialMagick" + } + ], + "https://github.com/my-opencode/ComfyUI_KSamplerTimer": [ + [ + "KSamplerTimer" + ], + { + "author": "Ludovic Anterieur", + "description": "This extension provides a wrapper of the native KSampler which outputs generation time.", + "nickname": "\u23f1", + "title": "KSampler (timer)", + "title_aux": "ComfyUI_KSamplerTimer" + } + ], "https://github.com/nagolinc/ComfyUI_FastVAEDecorder_SDXL": [ [ "FastLatentToImage" @@ -12302,6 +12887,18 @@ "title_aux": "Quality of life Suit:V2" } ], + "https://github.com/opvelll/ComfyUI_TextListProduct": [ + [ + "ProductedString", + "TextListProduct", + "TextListProductWithSingleA", + "TextListProductWithSingleB", + "TextListProductWithSingleBoth" + ], + { + "title_aux": "Comfy UI Text List Product" + } + ], "https://github.com/osi1880vr/prompt_quill_comfyui": [ [ "PromptQuillGenerate", @@ -12373,6 +12970,15 @@ "title_aux": "Image Resize for ComfyUI" } ], + "https://github.com/pamparamm/ComfyUI-vectorscope-cc": [ + [ + "NormalizeLatent", + "VectorscopeCC" + ], + { + "title_aux": "ComfyUI Vectorscope CC" + } + ], "https://github.com/pamparamm/sd-perturbed-attention": [ [ "PerturbedAttention" @@ -12530,6 +13136,19 @@ "title_aux": "ComfyUI-OmDet" } ], + "https://github.com/prodogape/Comfyui-Yolov8-JSON": [ + [ + "Apply Yolov8 Model", + "Apply Yolov8 Model Seg", + "Draw Labelme Json", + "Load Yolov8 Model", + "Load Yolov8 Model From Path", + "Save Labelme Json" + ], + { + "title_aux": "Comfyui-Yolov8-JSON" + } + ], "https://github.com/pythongosssss/ComfyUI-Custom-Scripts": [ [ "CheckpointLoader|pysssss", @@ -12569,6 +13188,9 @@ ], "https://github.com/ramyma/A8R8_ComfyUI_nodes": [ [ + "AttentionCouple", + "AttentionCoupleRegion", + "AttentionCoupleRegions", "Base64ImageInput", "Base64ImageOutput" ], @@ -12683,6 +13305,23 @@ "title_aux": "rgthree's ComfyUI Nodes" } ], + "https://github.com/rhdunn/comfyui-bus-plugin": [ + [ + "ComfyBus.CLIPEncodedPromptBusNode", + "ComfyBus.CheckpointBusNode", + "ComfyBus.ImageBusNode", + "ComfyBus.ImageParameterBusNode", + "ComfyBus.ImageScaleToSideParameterBusNode", + "ComfyBus.ImageSizeBusNode", + "ComfyBus.LatentImageBusNode", + "ComfyBus.LatentImageParameterBusNode", + "ComfyBus.PromptBusNode", + "ComfyBus.PromptSDXLBusNode" + ], + { + "title_aux": "comfyui-bus-plugin" + } + ], "https://github.com/richinsley/Comfy-LFO": [ [ "LFO_Pulse", @@ -13136,26 +13775,6 @@ "title_aux": "comfy-easy-grids" } ], - "https://github.com/siliconflow/onediff_comfy_nodes": [ - [ - "CompareModel", - "ModelGraphLoader", - "ModelGraphSaver", - "ModelSpeedup", - "ModuleDeepCacheSpeedup", - "OneDiffCheckpointLoaderSimple", - "OneDiffControlNetLoader", - "OneDiffDeepCacheCheckpointLoaderSimple", - "SVDSpeedup", - "ShowImageDiff", - "VaeGraphLoader", - "VaeGraphSaver", - "VaeSpeedup" - ], - { - "title_aux": "OneDiff Nodes" - } - ], "https://github.com/sipherxyz/comfyui-art-venture": [ [ "AV_AwsBedrockClaudeApi", @@ -13244,6 +13863,21 @@ "title_aux": "ComfyUI-Coziness" } ], + "https://github.com/slyt/comfyui-ollama-nodes": [ + [ + "BooleanToString", + "DownloadHuggingfaceModel", + "FloatToString", + "GenerateOllama", + "IntToString", + "ListModels", + "ListToString", + "PullModel" + ], + { + "title_aux": "comfyui-ollama-nodes" + } + ], "https://github.com/smagnetize/kb-comfyui-nodes": [ [ "SingleImageDataUrlLoader" @@ -13302,6 +13936,16 @@ "title_aux": "ComfyUI_Llama3_8B" } ], + "https://github.com/smthemex/ComfyUI_MS_Diffusion": [ + [ + "MS_Comic_Type", + "MSdiffusion_Model_Loader", + "MSdiffusion_Sampler" + ], + { + "title_aux": "ComfyUI_MS_Diffusion" + } + ], "https://github.com/smthemex/ComfyUI_ParlerTTS": [ [ "PromptToAudio" @@ -13329,12 +13973,9 @@ "https://github.com/smthemex/ComfyUI_Pops": [ [ "Imgae_To_Path", - "Pops_Controlnet_Sampler", - "Pops_Ipadapter_Sampler", - "Pops_Mean_Sampler", "Pops_Prior_Embedding", "Pops_Repo_Choice", - "Pops_Unet_Sampler" + "Pops_Sampler" ], { "title_aux": "ComfyUI_Pops" @@ -13351,16 +13992,26 @@ ], "https://github.com/smthemex/ComfyUI_StoryDiffusion": [ [ - "Character_Batch", "Comic_Type", "Pre_Translate_prompt", - "Storydiffusion_Img2Img", - "Storydiffusion_Text2Img" + "Storydiffusion_Model_Loader", + "Storydiffusion_Sampler" ], { "title_aux": "ComfyUI_StoryDiffusion" } ], + "https://github.com/smthemex/ComfyUI_Streamv2v_Plus": [ + [ + "Load_Stream", + "Text2IMG", + "Video2Video", + "WebCam2Video" + ], + { + "title_aux": "ComfyUI_Streamv2v_Plus" + } + ], "https://github.com/space-nuko/ComfyUI-Disco-Diffusion": [ [ "DiscoDiffusion_DiscoDiffusion", @@ -13390,6 +14041,17 @@ "title_aux": "nui suite" } ], + "https://github.com/spacepxl/ComfyUI-Florence-2": [ + [ + "Florence2", + "Florence2Postprocess", + "Florence2PostprocessAll", + "LoadFlorence2Model" + ], + { + "title_aux": "ComfyUI-Florence-2" + } + ], "https://github.com/spacepxl/ComfyUI-HQ-Image-Save": [ [ "LoadEXR", @@ -13429,6 +14091,7 @@ "ExposureAdjust", "FrequencyCombine", "FrequencySeparate", + "GameOfLife", "GuidedFilterAlpha", "GuidedFilterImage", "ImageConstant", @@ -13513,6 +14176,7 @@ "https://github.com/ssitu/ComfyUI_UltimateSDUpscale": [ [ "UltimateSDUpscale", + "UltimateSDUpscaleCustomSample", "UltimateSDUpscaleNoUpscale" ], { @@ -13778,13 +14442,13 @@ ], "https://github.com/theUpsider/ComfyUI-Logic": [ [ - "Bool", - "Compare", - "DebugPrint", - "Float", - "If ANY execute A else B", - "Int", - "String" + "Bool-\ud83d\udd2c", + "Compare-\ud83d\udd2c", + "DebugPrint-\ud83d\udd2c", + "Float-\ud83d\udd2c", + "If ANY return A else B-\ud83d\udd2c", + "Int-\ud83d\udd2c", + "String-\ud83d\udd2c" ], { "title_aux": "ComfyUI-Logic" @@ -13911,6 +14575,7 @@ "https://github.com/traugdor/ComfyUI-quadMoons-nodes": [ [ "quadmoonCLIPTextEncode", + "quadmoonChangeBackground", "quadmoonConvertBoolToString", "quadmoonConvertFloatToString", "quadmoonConvertIntToString", @@ -14006,22 +14671,6 @@ "title_aux": "Hakkun-ComfyUI-nodes" } ], - "https://github.com/turkyden/ComfyUI-Comic": [ - [ - "ImageToComic" - ], - { - "title_aux": "ComfyUI-Comic" - } - ], - "https://github.com/turkyden/ComfyUI-Sticker": [ - [ - "ImageToSticker" - ], - { - "title_aux": "ComfyUI-Sticker" - } - ], "https://github.com/tusharbhutt/Endless-Nodes": [ [ "ESS Aesthetic Scoring", @@ -14140,6 +14789,27 @@ "title_aux": "Simple Wildcard" } ], + "https://github.com/veighnsche/comfyui_gr85": [ + [ + "GR85_ContainsWord", + "GR85_ElementsConcatenator", + "GR85_ImageDimensionResizer", + "GR85_ImageSizer", + "GR85_InsertCharacter", + "GR85_LlmEnhancer", + "GR85_NextSeed", + "GR85_RandomAtmLocOutfit", + "GR85_RandomRatio", + "GR85_RandomTitleCharacter", + "GR85_RandomWildcardTagPicker", + "GR85_ShowText", + "GR85_StrSafe", + "GR85_TagInjector" + ], + { + "title_aux": "comfyui_gr85" + } + ], "https://github.com/victorchall/comfyui_webcamcapture": [ [ "WebcamCapture" @@ -14495,6 +15165,14 @@ "title_aux": "comfyui_auto_danbooru" } ], + "https://github.com/yiwangsimple/ComfyUI_GroqChat": [ + [ + "GroqChatNode" + ], + { + "title_aux": "comfy-groqchat" + } + ], "https://github.com/yolain/ComfyUI-Easy-Use": [ [ "dynamicThresholdingFull", @@ -14543,6 +15221,7 @@ "easy globalSeed", "easy hiresFix", "easy humanSegmentation", + "easy hunyuanDiTLoader", "easy icLightApply", "easy if", "easy imageBatchToImageList", @@ -14629,6 +15308,7 @@ "easy showLoaderSettingsNames", "easy showSpentTime", "easy showTensorShape", + "easy sliderControl", "easy stableDiffusion3API", "easy string", "easy styleAlignedBatchAlign", @@ -14798,6 +15478,25 @@ "title_aux": "ComfyUI Whisper" } ], + "https://github.com/yuvraj108c/ComfyUI-YoloNasPose-Tensorrt": [ + [ + "YoloNasPoseTensorrt" + ], + { + "title_aux": "ComfyUI YoloNasPose Tensorrt" + } + ], + "https://github.com/za-wa-n-go/ComfyUI_Zwng_Nodes": [ + [ + "ZwngLoadImagePathOrURL", + "ZwngPreviewImageAndMask", + "ZwngSimpleGoogleTranslater", + "ZwngSimplePhotoshopConnector" + ], + { + "title_aux": "ComfyUI_Zwng_Nodes" + } + ], "https://github.com/zcfrank1st/Comfyui-Toolbox": [ [ "PreviewJson", @@ -14835,6 +15534,15 @@ "title_aux": "Cute Comfy" } ], + "https://github.com/zeroxoxo/ComfyUI-Fast-Style-Transfer": [ + [ + "FastStyleTransfer", + "TrainFastStyleTransfer" + ], + { + "title_aux": "ComfyUI-Fast-Style-Transfer" + } + ], "https://github.com/zfkun/ComfyUI_zfkun": [ [ "ZFLoadImagePath", @@ -14849,6 +15557,7 @@ ], "https://github.com/zhangp365/ComfyUI-utils-nodes": [ [ + "CheckpointLoaderSimpleWithSwitch", "ColorCorrectOfUtils", "ConcatTextOfUtils", "ImageBatchOneOrMore", @@ -14911,6 +15620,15 @@ "title_aux": "EasyCaptureNode for ComfyUI" } ], + "https://github.com/zhulu111/ComfyUI_Bxb": [ + [ + "sdBxb", + "sdBxb_textInput" + ], + { + "title_aux": "ComfyUI_Bxb" + } + ], "https://github.com/zohac/ComfyUI_ZC_DrawShape": [ [ "ZcDrawShape" diff --git a/github-stats.json b/github-stats.json index 6f977f97..6e3611fa 100644 --- a/github-stats.json +++ b/github-stats.json @@ -1,4827 +1,5112 @@ { "https://github.com/0xbitches/ComfyUI-LCM": { - "stars": 246, + "stars": 247, "last_update": "2023-11-11 21:24:33", - "author_account_age_days": 526 + "author_account_age_days": 540 }, "https://github.com/1038lab/ComfyUI-GPT2P": { "stars": 3, "last_update": "2024-06-10 16:56:29", - "author_account_age_days": 447 + "author_account_age_days": 461 + }, + "https://github.com/1038lab/ComfyUI_LatentSizeSelector": { + "stars": 0, + "last_update": "2024-07-02 06:54:59", + "author_account_age_days": 461 }, "https://github.com/11cafe/comfyui-workspace-manager": { - "stars": 775, - "last_update": "2024-06-18 17:20:37", - "author_account_age_days": 199 + "stars": 809, + "last_update": "2024-07-02 13:41:38", + "author_account_age_days": 213 + }, + "https://github.com/11dogzi/ComfUI-EGAdapterMadAssistant": { + "stars": 9, + "last_update": "2024-06-25 15:59:53", + "author_account_age_days": 134 }, "https://github.com/11dogzi/Comfyui-ergouzi-Nodes": { - "stars": 17, + "stars": 21, "last_update": "2024-05-23 00:08:39", - "author_account_age_days": 120 + "author_account_age_days": 134 }, "https://github.com/11dogzi/Comfyui-ergouzi-samplers": { - "stars": 15, - "last_update": "2024-06-17 11:44:41", - "author_account_age_days": 120 + "stars": 19, + "last_update": "2024-06-28 05:28:05", + "author_account_age_days": 134 }, "https://github.com/1mckw/Comfyui-Gelbooru": { "stars": 2, "last_update": "2024-05-27 07:45:00", - "author_account_age_days": 685 + "author_account_age_days": 699 }, "https://github.com/42lux/ComfyUI-safety-checker": { - "stars": 18, + "stars": 19, "last_update": "2024-05-22 22:11:59", - "author_account_age_days": 3693 + "author_account_age_days": 3707 }, "https://github.com/438443467/ComfyUI-GPT4V-Image-Captioner": { - "stars": 18, + "stars": 19, "last_update": "2024-06-13 05:51:56", - "author_account_age_days": 409 + "author_account_age_days": 423 }, "https://github.com/54rt1n/ComfyUI-DareMerge": { - "stars": 41, + "stars": 42, "last_update": "2024-05-22 22:20:39", - "author_account_age_days": 4045 + "author_account_age_days": 4059 }, "https://github.com/80sVectorz/ComfyUI-Static-Primitives": { "stars": 10, "last_update": "2024-05-23 11:20:57", - "author_account_age_days": 1465 + "author_account_age_days": 1479 }, "https://github.com/A4P7J1N7M05OT/ComfyUI-AutoColorGimp": { "stars": 0, "last_update": "2024-05-23 00:26:10", - "author_account_age_days": 467 + "author_account_age_days": 481 }, "https://github.com/A4P7J1N7M05OT/ComfyUI-PixelOE": { - "stars": 6, + "stars": 7, "last_update": "2024-06-02 14:57:59", - "author_account_age_days": 467 + "author_account_age_days": 481 }, "https://github.com/AARG-FAN/Image-Raster-for-ComfyUI": { - "stars": 62, - "last_update": "2024-06-17 10:00:11", - "author_account_age_days": 494 + "stars": 69, + "last_update": "2024-06-23 14:56:16", + "author_account_age_days": 508 }, "https://github.com/AI2lab/comfyUI-DeepSeek-2lab": { "stars": 3, - "last_update": "2024-06-06 23:11:12", - "author_account_age_days": 187 + "last_update": "2024-07-03 04:07:46", + "author_account_age_days": 201 + }, + "https://github.com/AI2lab/comfyUI-siliconflow-api-2lab": { + "stars": 3, + "last_update": "2024-06-29 18:08:21", + "author_account_age_days": 201 + }, + "https://github.com/AI2lab/comfyUI-tool-2lab": { + "stars": 8, + "last_update": "2024-06-29 17:58:35", + "author_account_age_days": 201 }, "https://github.com/AIFSH/ComfyUI-3d-photo-inpainting": { - "stars": 1, - "last_update": "2024-06-19 03:34:50", - "author_account_age_days": 226 + "stars": 5, + "last_update": "2024-06-19 13:59:49", + "author_account_age_days": 240 + }, + "https://github.com/AIFSH/ComfyUI-AuraSR": { + "stars": 11, + "last_update": "2024-06-27 14:00:16", + "author_account_age_days": 240 + }, + "https://github.com/AIFSH/ComfyUI-DiffSynth-Studio": { + "stars": 21, + "last_update": "2024-07-02 13:01:42", + "author_account_age_days": 240 }, "https://github.com/AIFSH/ComfyUI-FishSpeech": { "stars": 6, "last_update": "2024-05-23 01:18:49", - "author_account_age_days": 226 + "author_account_age_days": 240 }, "https://github.com/AIFSH/ComfyUI-GPT_SoVITS": { - "stars": 150, + "stars": 157, "last_update": "2024-06-14 07:05:01", - "author_account_age_days": 226 + "author_account_age_days": 240 }, "https://github.com/AIFSH/ComfyUI-Hallo": { - "stars": 26, - "last_update": "2024-06-17 23:58:36", - "author_account_age_days": 226 + "stars": 217, + "last_update": "2024-06-24 06:43:23", + "author_account_age_days": 240 + }, + "https://github.com/AIFSH/ComfyUI-I2V-Adapter": { + "stars": 3, + "last_update": "2024-07-02 01:59:49", + "author_account_age_days": 240 }, "https://github.com/AIFSH/ComfyUI-IP_LAP": { "stars": 23, "last_update": "2024-06-14 07:05:39", - "author_account_age_days": 226 + "author_account_age_days": 240 }, "https://github.com/AIFSH/ComfyUI-Live2DViewer": { "stars": 2, "last_update": "2024-06-14 07:04:49", - "author_account_age_days": 226 + "author_account_age_days": 240 + }, + "https://github.com/AIFSH/ComfyUI-MARS5-TTS": { + "stars": 14, + "last_update": "2024-07-02 02:00:28", + "author_account_age_days": 240 }, "https://github.com/AIFSH/ComfyUI-MimicBrush": { - "stars": 32, + "stars": 63, "last_update": "2024-06-17 22:26:53", - "author_account_age_days": 226 + "author_account_age_days": 240 + }, + "https://github.com/AIFSH/ComfyUI-MimicMotion": { + "stars": 161, + "last_update": "2024-07-02 13:59:07", + "author_account_age_days": 240 }, "https://github.com/AIFSH/ComfyUI-MuseTalk_FSH": { - "stars": 7, + "stars": 8, "last_update": "2024-06-14 07:05:19", - "author_account_age_days": 226 + "author_account_age_days": 240 }, "https://github.com/AIFSH/ComfyUI-RVC": { "stars": 9, "last_update": "2024-06-14 07:05:25", - "author_account_age_days": 226 + "author_account_age_days": 240 }, "https://github.com/AIFSH/ComfyUI-UVR5": { - "stars": 56, - "last_update": "2024-06-14 07:04:43", - "author_account_age_days": 226 + "stars": 63, + "last_update": "2024-06-20 07:31:20", + "author_account_age_days": 240 }, "https://github.com/AIFSH/ComfyUI-UniAnimate": { - "stars": 3, - "last_update": "2024-06-17 20:59:59", - "author_account_age_days": 226 + "stars": 26, + "last_update": "2024-06-30 09:20:25", + "author_account_age_days": 240 }, "https://github.com/AIFSH/ComfyUI-WhisperX": { - "stars": 20, + "stars": 21, "last_update": "2024-06-14 07:05:31", - "author_account_age_days": 226 + "author_account_age_days": 240 }, "https://github.com/AIFSH/ComfyUI-XTTS": { - "stars": 20, - "last_update": "2024-06-14 07:05:07", - "author_account_age_days": 226 + "stars": 24, + "last_update": "2024-06-24 09:45:59", + "author_account_age_days": 240 }, "https://github.com/AIFSH/ComfyUI_V-Express": { - "stars": 74, - "last_update": "2024-06-14 07:05:13", - "author_account_age_days": 226 + "stars": 77, + "last_update": "2024-06-23 09:54:57", + "author_account_age_days": 240 }, "https://github.com/AIGCTeam/ComfyUI_kkTranslator_nodes": { "stars": 5, "last_update": "2024-05-23 00:13:50", - "author_account_age_days": 205 + "author_account_age_days": 219 }, "https://github.com/AIGODLIKE/AIGODLIKE-COMFYUI-TRANSLATION": { - "stars": 928, - "last_update": "2024-06-18 03:10:38", - "author_account_age_days": 496 + "stars": 1010, + "last_update": "2024-07-01 03:49:28", + "author_account_age_days": 510 }, "https://github.com/AIGODLIKE/AIGODLIKE-ComfyUI-Studio": { - "stars": 202, + "stars": 204, "last_update": "2024-06-05 00:52:46", - "author_account_age_days": 496 + "author_account_age_days": 510 }, "https://github.com/AIGODLIKE/ComfyUI-CUP": { - "stars": 4, - "last_update": "2024-05-19 02:31:04", - "author_account_age_days": 496 + "stars": 5, + "last_update": "2024-06-21 03:43:20", + "author_account_age_days": 510 }, "https://github.com/AIGODLIKE/ComfyUI-ToonCrafter": { - "stars": 234, + "stars": 259, "last_update": "2024-06-18 08:04:40", - "author_account_age_days": 496 + "author_account_age_days": 510 }, "https://github.com/AInseven/ComfyUI-fastblend": { - "stars": 110, + "stars": 134, "last_update": "2024-06-14 07:13:21", - "author_account_age_days": 1677 + "author_account_age_days": 1691 }, "https://github.com/AIrjen/OneButtonPrompt": { - "stars": 733, + "stars": 741, "last_update": "2024-06-14 06:59:46", - "author_account_age_days": 437 + "author_account_age_days": 451 }, "https://github.com/ALatentPlace/ComfyUI_yanc": { - "stars": 17, - "last_update": "2024-06-14 09:04:57", - "author_account_age_days": 1454 + "stars": 22, + "last_update": "2024-06-30 10:04:17", + "author_account_age_days": 1468 }, "https://github.com/AbdullahAlfaraj/Comfy-Photoshop-SD": { - "stars": 175, + "stars": 182, "last_update": "2024-06-14 07:04:37", - "author_account_age_days": 3662 + "author_account_age_days": 3676 }, "https://github.com/AbyssYuan0/ComfyUI_BadgerTools": { "stars": 6, - "last_update": "2024-05-22 21:27:48", - "author_account_age_days": 484 + "last_update": "2024-06-19 11:46:19", + "author_account_age_days": 498 }, "https://github.com/Acly/comfyui-inpaint-nodes": { - "stars": 417, - "last_update": "2024-06-17 13:51:51", - "author_account_age_days": 3799 + "stars": 453, + "last_update": "2024-07-02 10:02:46", + "author_account_age_days": 3813 }, "https://github.com/Acly/comfyui-tooling-nodes": { - "stars": 208, - "last_update": "2024-06-12 15:44:54", - "author_account_age_days": 3799 + "stars": 211, + "last_update": "2024-06-24 15:56:37", + "author_account_age_days": 3813 }, "https://github.com/AiMiDi/ComfyUI-Aimidi-nodes": { "stars": 0, - "last_update": "2024-05-23 00:15:03", - "author_account_age_days": 1270 + "last_update": "2024-06-20 17:26:02", + "author_account_age_days": 1284 }, "https://github.com/AlekPet/ComfyUI_Custom_Nodes_AlekPet": { - "stars": 646, - "last_update": "2024-06-12 07:56:21", - "author_account_age_days": 2694 + "stars": 669, + "last_update": "2024-06-28 14:06:48", + "author_account_age_days": 2708 }, "https://github.com/Alysondao/Comfyui-Yolov8-JSON": { "stars": 12, - "last_update": "2024-06-17 10:00:48", - "author_account_age_days": 1025 + "last_update": "2024-07-03 03:59:38", + "author_account_age_days": 1039 }, "https://github.com/Amorano/Jovimetrix": { - "stars": 162, - "last_update": "2024-06-04 15:28:54", - "author_account_age_days": 5207 + "stars": 170, + "last_update": "2024-07-03 02:17:32", + "author_account_age_days": 5221 }, "https://github.com/AonekoSS/ComfyUI-LoRA-Tuner": { "stars": 4, "last_update": "2024-06-14 08:57:39", - "author_account_age_days": 4086 + "author_account_age_days": 4100 }, "https://github.com/AonekoSS/ComfyUI-SimpleCounter": { "stars": 1, "last_update": "2024-05-23 01:11:36", - "author_account_age_days": 4086 + "author_account_age_days": 4100 }, "https://github.com/ArcherFMY/Diffusion360_ComfyUI": { - "stars": 17, + "stars": 18, "last_update": "2024-05-28 03:14:17", - "author_account_age_days": 3384 + "author_account_age_days": 3398 }, "https://github.com/ArdeniusAI/CPlus_Ardenius": { "stars": 0, "last_update": "2024-06-14 07:13:26", - "author_account_age_days": 121 + "author_account_age_days": 135 }, "https://github.com/ArtBot2023/CharacterFaceSwap": { - "stars": 54, + "stars": 56, "last_update": "2024-05-22 20:53:09", - "author_account_age_days": 288 + "author_account_age_days": 302 }, "https://github.com/ArtVentureX/comfyui-animatediff": { - "stars": 632, + "stars": 640, "last_update": "2024-05-22 18:16:43", - "author_account_age_days": 400 + "author_account_age_days": 414 }, "https://github.com/AshMartian/ComfyUI-DirGir": { - "stars": 10, + "stars": 11, "last_update": "2024-05-29 22:28:55", - "author_account_age_days": 4581 + "author_account_age_days": 4595 }, "https://github.com/AuroBit/ComfyUI-AnimateAnyone-reproduction": { "stars": 34, "last_update": "2024-06-14 09:03:24", - "author_account_age_days": 384 + "author_account_age_days": 398 }, "https://github.com/AuroBit/ComfyUI-OOTDiffusion": { - "stars": 335, + "stars": 348, "last_update": "2024-06-14 08:11:00", - "author_account_age_days": 384 + "author_account_age_days": 398 }, "https://github.com/AustinMroz/ComfyUI-DynamicOversampling": { "stars": 0, "last_update": "2024-06-14 07:06:51", - "author_account_age_days": 4069 + "author_account_age_days": 4083 }, "https://github.com/AustinMroz/ComfyUI-SpliceTools": { "stars": 7, "last_update": "2024-06-14 07:07:21", - "author_account_age_days": 4069 + "author_account_age_days": 4083 }, "https://github.com/AustinMroz/ComfyUI-WorkflowCheckpointing": { - "stars": 1, - "last_update": "2024-06-19 07:00:19", - "author_account_age_days": 4069 + "stars": 5, + "last_update": "2024-07-03 08:07:48", + "author_account_age_days": 4083 }, "https://github.com/Auttasak-L/ComfyUI-ImageCropper": { "stars": 1, "last_update": "2024-05-23 05:04:53", - "author_account_age_days": 2644 + "author_account_age_days": 2658 }, "https://github.com/BAIS1C/ComfyUI_RSS_Feed_Reader": { "stars": 2, - "last_update": "2024-06-14 07:08:54", - "author_account_age_days": 484 + "last_update": "2024-06-20 03:42:00", + "author_account_age_days": 498 }, "https://github.com/BXYMartin/ComfyUI-InstantIDUtils": { "stars": 3, "last_update": "2024-05-23 00:08:50", - "author_account_age_days": 2438 + "author_account_age_days": 2452 }, "https://github.com/BadCafeCode/masquerade-nodes-comfyui": { - "stars": 304, + "stars": 310, "last_update": "2024-06-19 04:16:54", - "author_account_age_days": 425 + "author_account_age_days": 439 }, "https://github.com/Beinsezii/bsz-cui-extras": { - "stars": 20, + "stars": 21, "last_update": "2024-05-22 20:46:45", - "author_account_age_days": 2221 + "author_account_age_days": 2235 }, "https://github.com/BenNarum/SigmaWaveFormNode": { "stars": 5, - "last_update": "2024-06-14 14:00:10", - "author_account_age_days": 3067 + "last_update": "2024-06-20 15:20:35", + "author_account_age_days": 3081 }, "https://github.com/BennyKok/comfyui-deploy": { - "stars": 675, - "last_update": "2024-06-16 00:29:53", - "author_account_age_days": 2990 + "stars": 700, + "last_update": "2024-06-19 23:52:18", + "author_account_age_days": 3005 }, "https://github.com/Big-Idea-Technology/ComfyUI-Book-Tools": { - "stars": 15, - "last_update": "2024-06-14 07:06:33", - "author_account_age_days": 866 + "stars": 17, + "last_update": "2024-06-21 10:21:10", + "author_account_age_days": 880 }, "https://github.com/Big-Idea-Technology/ComfyUI_LLM_Node": { - "stars": 49, - "last_update": "2024-06-14 08:08:12", - "author_account_age_days": 866 + "stars": 50, + "last_update": "2024-06-21 10:13:50", + "author_account_age_days": 880 }, "https://github.com/Billius-AI/ComfyUI-Path-Helper": { - "stars": 13, + "stars": 14, "last_update": "2024-05-22 23:25:08", - "author_account_age_days": 129 + "author_account_age_days": 143 }, "https://github.com/BlakeOne/ComfyUI-CustomScheduler": { "stars": 11, "last_update": "2024-05-23 00:23:56", - "author_account_age_days": 2527 + "author_account_age_days": 2541 }, "https://github.com/BlakeOne/ComfyUI-NodePresets": { "stars": 11, "last_update": "2024-05-23 00:24:07", - "author_account_age_days": 2527 + "author_account_age_days": 2541 }, "https://github.com/BlakeOne/ComfyUI-NodeReset": { "stars": 1, "last_update": "2024-05-23 00:24:18", - "author_account_age_days": 2527 + "author_account_age_days": 2541 }, "https://github.com/BlakeOne/ComfyUI-SchedulerMixer": { "stars": 10, "last_update": "2024-05-23 00:23:44", - "author_account_age_days": 2527 + "author_account_age_days": 2541 }, "https://github.com/BlenderNeko/ComfyUI_ADV_CLIP_emb": { - "stars": 263, + "stars": 269, "last_update": "2024-05-22 14:56:13", - "author_account_age_days": 472 + "author_account_age_days": 486 }, "https://github.com/BlenderNeko/ComfyUI_Cutoff": { - "stars": 336, + "stars": 343, "last_update": "2024-05-22 15:01:45", - "author_account_age_days": 472 + "author_account_age_days": 486 }, "https://github.com/BlenderNeko/ComfyUI_Noise": { - "stars": 200, + "stars": 207, "last_update": "2024-06-10 16:38:48", - "author_account_age_days": 472 + "author_account_age_days": 486 }, "https://github.com/BlenderNeko/ComfyUI_SeeCoder": { - "stars": 35, + "stars": 36, "last_update": "2024-05-22 14:57:04", - "author_account_age_days": 472 + "author_account_age_days": 486 }, "https://github.com/BlenderNeko/ComfyUI_TiledKSampler": { - "stars": 289, + "stars": 295, "last_update": "2024-05-22 14:56:49", - "author_account_age_days": 472 + "author_account_age_days": 486 }, "https://github.com/CC-BryanOttho/ComfyUI_API_Manager": { - "stars": 10, + "stars": 13, "last_update": "2024-06-14 07:13:34", - "author_account_age_days": 479 + "author_account_age_days": 493 }, "https://github.com/CYBERLOOM-INC/ComfyUI-nodes-hnmr": { - "stars": 4, + "stars": 6, "last_update": "2024-05-22 17:55:41", - "author_account_age_days": 244 + "author_account_age_days": 258 }, "https://github.com/CavinHuang/comfyui-nodes-docs": { - "stars": 58, - "last_update": "2024-06-19 06:36:49", - "author_account_age_days": 2721 + "stars": 69, + "last_update": "2024-07-03 10:08:53", + "author_account_age_days": 2735 }, "https://github.com/Chan-0312/ComfyUI-EasyDeforum": { - "stars": 8, + "stars": 9, "last_update": "2024-05-22 23:22:14", - "author_account_age_days": 1861 + "author_account_age_days": 1875 }, "https://github.com/Chan-0312/ComfyUI-IPAnimate": { - "stars": 65, + "stars": 66, "last_update": "2024-05-22 23:22:03", - "author_account_age_days": 1861 + "author_account_age_days": 1875 }, "https://github.com/Chan-0312/ComfyUI-Prompt-Preview": { - "stars": 16, + "stars": 18, "last_update": "2024-06-14 09:01:37", - "author_account_age_days": 1861 + "author_account_age_days": 1875 }, "https://github.com/Chaoses-Ib/ComfyUI_Ib_CustomNodes": { - "stars": 12, + "stars": 13, "last_update": "2024-04-05 11:14:24", - "author_account_age_days": 1873 + "author_account_age_days": 1887 }, "https://github.com/Clybius/ComfyUI-Extra-Samplers": { - "stars": 54, + "stars": 57, "last_update": "2024-06-14 09:03:17", - "author_account_age_days": 1728 + "author_account_age_days": 1742 }, "https://github.com/Clybius/ComfyUI-Latent-Modifiers": { - "stars": 43, + "stars": 46, "last_update": "2024-06-14 09:02:44", - "author_account_age_days": 1728 + "author_account_age_days": 1742 }, "https://github.com/CosmicLaca/ComfyUI_Primere_Nodes": { - "stars": 79, - "last_update": "2024-06-18 16:21:26", - "author_account_age_days": 3650 + "stars": 85, + "last_update": "2024-06-29 07:14:23", + "author_account_age_days": 3664 }, "https://github.com/Danand/ComfyUI-ComfyCouple": { "stars": 21, "last_update": "2024-06-14 08:09:42", - "author_account_age_days": 4283 + "author_account_age_days": 4297 }, "https://github.com/DarKDinDoN/comfyui-checkpoint-automatic-config": { "stars": 3, "last_update": "2024-05-26 08:00:23", - "author_account_age_days": 4434 + "author_account_age_days": 4448 }, "https://github.com/DataCTE/prompt_injection": { - "stars": 57, - "last_update": "2024-06-15 16:06:59", - "author_account_age_days": 772 + "stars": 65, + "last_update": "2024-06-21 12:56:43", + "author_account_age_days": 786 + }, + "https://github.com/DeJoker/pipeline-parallel-comfy": { + "stars": 1, + "last_update": "2024-07-01 13:02:22", + "author_account_age_days": 2999 }, "https://github.com/Derfuu/Derfuu_ComfyUI_ModdedNodes": { - "stars": 290, - "last_update": "2024-06-17 21:28:45", - "author_account_age_days": 1769 + "stars": 300, + "last_update": "2024-06-22 02:12:19", + "author_account_age_days": 1783 }, "https://github.com/DigitalIO/ComfyUI-stable-wildcards": { "stars": 19, "last_update": "2024-05-24 21:15:08", - "author_account_age_days": 4033 + "author_account_age_days": 4047 }, "https://github.com/DimaChaichan/LAizypainter-Exporter-ComfyUI": { "stars": 7, "last_update": "2024-05-22 23:14:06", - "author_account_age_days": 3067 + "author_account_age_days": 3082 }, "https://github.com/DonBaronFactory/ComfyUI-Cre8it-Nodes": { "stars": 0, "last_update": "2024-05-22 23:24:30", - "author_account_age_days": 3482 + "author_account_age_days": 3496 }, "https://github.com/DrJKL/ComfyUI-Anchors": { - "stars": 4, - "last_update": "2024-06-14 07:12:14", - "author_account_age_days": 4989 + "stars": 5, + "last_update": "2024-06-20 18:23:00", + "author_account_age_days": 5003 }, "https://github.com/DrMWeigand/ComfyUI_ColorImageDetection": { - "stars": 1, + "stars": 2, "last_update": "2024-05-23 00:25:14", - "author_account_age_days": 1026 + "author_account_age_days": 1040 }, "https://github.com/Electrofried/ComfyUI-OpenAINode": { - "stars": 18, + "stars": 19, "last_update": "2024-06-14 09:01:22", - "author_account_age_days": 2615 + "author_account_age_days": 2629 }, "https://github.com/EllangoK/ComfyUI-post-processing-nodes": { - "stars": 144, + "stars": 146, "last_update": "2024-05-22 17:54:09", - "author_account_age_days": 2773 + "author_account_age_days": 2787 }, "https://github.com/ExponentialML/ComfyUI_ModelScopeT2V": { "stars": 25, "last_update": "2024-05-23 00:12:17", - "author_account_age_days": 1618 + "author_account_age_days": 1632 }, "https://github.com/ExponentialML/ComfyUI_Native_DynamiCrafter": { - "stars": 98, + "stars": 102, "last_update": "2024-06-08 02:33:02", - "author_account_age_days": 1618 + "author_account_age_days": 1632 }, "https://github.com/ExponentialML/ComfyUI_VisualStylePrompting": { - "stars": 252, + "stars": 255, "last_update": "2024-05-23 00:12:41", - "author_account_age_days": 1618 + "author_account_age_days": 1632 }, "https://github.com/Extraltodeus/ComfyUI-AutomaticCFG": { - "stars": 269, - "last_update": "2024-06-19 05:31:19", - "author_account_age_days": 3144 + "stars": 281, + "last_update": "2024-06-30 18:37:30", + "author_account_age_days": 3158 }, "https://github.com/Extraltodeus/LoadLoraWithTags": { - "stars": 37, - "last_update": "2024-06-03 03:04:45", - "author_account_age_days": 3144 + "stars": 41, + "last_update": "2024-06-22 21:05:44", + "author_account_age_days": 3158 }, "https://github.com/Extraltodeus/Stable-Diffusion-temperature-settings": { - "stars": 20, - "last_update": "2024-06-18 14:03:50", - "author_account_age_days": 3144 + "stars": 27, + "last_update": "2024-07-03 01:40:42", + "author_account_age_days": 3158 }, "https://github.com/Extraltodeus/Uncond-Zero-for-ComfyUI": { - "stars": 0, - "last_update": "2024-06-19 06:41:28", - "author_account_age_days": 3144 + "stars": 17, + "last_update": "2024-07-03 01:34:46", + "author_account_age_days": 3158 }, "https://github.com/Extraltodeus/Vector_Sculptor_ComfyUI": { - "stars": 80, - "last_update": "2024-06-03 03:04:03", - "author_account_age_days": 3144 + "stars": 85, + "last_update": "2024-06-22 21:06:08", + "author_account_age_days": 3158 }, "https://github.com/Extraltodeus/noise_latent_perlinpinpin": { - "stars": 22, - "last_update": "2024-06-03 03:04:40", - "author_account_age_days": 3144 + "stars": 23, + "last_update": "2024-06-22 21:05:57", + "author_account_age_days": 3158 }, "https://github.com/Extraltodeus/sigmas_tools_and_the_golden_scheduler": { - "stars": 43, - "last_update": "2024-06-11 19:48:04", - "author_account_age_days": 3144 + "stars": 45, + "last_update": "2024-06-22 21:05:34", + "author_account_age_days": 3158 }, "https://github.com/Fannovel16/ComfyUI-Frame-Interpolation": { - "stars": 335, - "last_update": "2024-05-21 00:52:49", - "author_account_age_days": 3126 + "stars": 343, + "last_update": "2024-06-20 16:25:59", + "author_account_age_days": 3140 }, "https://github.com/Fannovel16/ComfyUI-Loopchain": { - "stars": 27, + "stars": 30, "last_update": "2023-12-15 14:25:35", - "author_account_age_days": 3126 + "author_account_age_days": 3140 }, "https://github.com/Fannovel16/ComfyUI-MagickWand": { - "stars": 70, - "last_update": "2024-05-20 14:13:55", - "author_account_age_days": 3126 + "stars": 72, + "last_update": "2024-06-20 16:23:15", + "author_account_age_days": 3140 }, "https://github.com/Fannovel16/ComfyUI-MotionDiff": { - "stars": 145, - "last_update": "2024-05-21 00:51:03", - "author_account_age_days": 3126 + "stars": 148, + "last_update": "2024-06-20 16:29:32", + "author_account_age_days": 3140 }, "https://github.com/Fannovel16/ComfyUI-Video-Matting": { - "stars": 140, - "last_update": "2024-05-21 00:51:54", - "author_account_age_days": 3126 + "stars": 147, + "last_update": "2024-06-20 16:14:38", + "author_account_age_days": 3140 }, "https://github.com/Fannovel16/comfyui_controlnet_aux": { - "stars": 1554, - "last_update": "2024-06-18 12:43:54", - "author_account_age_days": 3126 + "stars": 1629, + "last_update": "2024-06-25 10:11:30", + "author_account_age_days": 3140 }, "https://github.com/Fantaxico/ComfyUI-GCP-Storage": { "stars": 0, "last_update": "2024-06-14 09:05:52", - "author_account_age_days": 530 + "author_account_age_days": 544 }, "https://github.com/Feidorian/feidorian-ComfyNodes": { "stars": 5, - "last_update": "2024-05-22 21:30:52", - "author_account_age_days": 2750 + "last_update": "2024-06-20 11:31:37", + "author_account_age_days": 2764 }, "https://github.com/Fictiverse/ComfyUI_Fictiverse": { "stars": 7, "last_update": "2024-06-05 19:03:21", - "author_account_age_days": 666 + "author_account_age_days": 680 }, "https://github.com/Fihade/IC-Light-ComfyUI-Node": { "stars": 5, - "last_update": "2024-05-23 01:20:21", - "author_account_age_days": 2742 + "last_update": "2024-07-02 03:47:17", + "author_account_age_days": 2756 }, "https://github.com/FizzleDorf/ComfyUI-AIT": { - "stars": 43, - "last_update": "2024-05-16 23:55:47", - "author_account_age_days": 1974 + "stars": 44, + "last_update": "2024-06-22 03:13:05", + "author_account_age_days": 1988 }, "https://github.com/FizzleDorf/ComfyUI_FizzNodes": { - "stars": 310, - "last_update": "2024-06-13 03:43:00", - "author_account_age_days": 1974 + "stars": 324, + "last_update": "2024-06-27 03:29:51", + "author_account_age_days": 1988 }, "https://github.com/FlyingFireCo/tiled_ksampler": { "stars": 56, "last_update": "2024-05-22 23:15:17", - "author_account_age_days": 627 + "author_account_age_days": 641 }, "https://github.com/ForeignGods/ComfyUI-Mana-Nodes": { - "stars": 176, + "stars": 179, "last_update": "2024-05-29 18:29:05", - "author_account_age_days": 1238 + "author_account_age_days": 1252 }, "https://github.com/Franck-Demongin/NX_PromptStyler": { "stars": 5, "last_update": "2024-05-22 23:25:21", - "author_account_age_days": 1766 + "author_account_age_days": 1780 }, "https://github.com/FredBill1/comfyui-fb-utils": { "stars": 0, "last_update": "2024-05-23 01:41:02", - "author_account_age_days": 2312 + "author_account_age_days": 2326 + }, + "https://github.com/Fucci-Mateo/ComfyUI-Airtable": { + "stars": 0, + "last_update": "2024-06-25 13:35:18", + "author_account_age_days": 887 + }, + "https://github.com/FuouM/ComfyUI-FirstOrderMM": { + "stars": 2, + "last_update": "2024-07-01 10:46:26", + "author_account_age_days": 1690 }, "https://github.com/G-370/ComfyUI-SD3-Powerlab": { - "stars": 16, - "last_update": "2024-06-19 02:28:26", - "author_account_age_days": 1514 + "stars": 17, + "last_update": "2024-06-22 19:17:18", + "author_account_age_days": 1528 }, "https://github.com/GMapeSplat/ComfyUI_ezXY": { - "stars": 22, + "stars": 23, "last_update": "2024-05-29 17:43:08", - "author_account_age_days": 1292 + "author_account_age_days": 1306 }, "https://github.com/GTSuya-Studio/ComfyUI-Gtsuya-Nodes": { "stars": 7, "last_update": "2024-05-22 21:31:52", - "author_account_age_days": 2551 + "author_account_age_days": 2565 }, "https://github.com/GavChap/ComfyUI-SD3LatentSelectRes": { - "stars": 2, - "last_update": "2024-06-17 13:42:14", - "author_account_age_days": 4562 + "stars": 7, + "last_update": "2024-06-19 11:01:41", + "author_account_age_days": 4576 }, "https://github.com/GentlemanHu/ComfyUI-SunoAI": { "stars": 10, "last_update": "2024-06-14 06:02:29", - "author_account_age_days": 2378 + "author_account_age_days": 2392 }, "https://github.com/Goktug/comfyui-saveimage-plus": { - "stars": 1, - "last_update": "2024-06-14 07:08:34", - "author_account_age_days": 4926 + "stars": 2, + "last_update": "2024-06-20 07:23:48", + "author_account_age_days": 4940 }, "https://github.com/Gourieff/comfyui-reactor-node": { - "stars": 1036, - "last_update": "2024-06-17 04:37:25", - "author_account_age_days": 1114 + "stars": 1085, + "last_update": "2024-07-03 09:36:19", + "author_account_age_days": 1128 }, "https://github.com/GraftingRayman/ComfyUI_GraftingRayman": { - "stars": 11, - "last_update": "2024-06-19 06:30:09", - "author_account_age_days": 157 + "stars": 20, + "last_update": "2024-07-02 19:10:43", + "author_account_age_days": 171 + }, + "https://github.com/GreenLandisaLie/AuraSR-ComfyUI": { + "stars": 43, + "last_update": "2024-07-02 05:53:38", + "author_account_age_days": 1206 }, "https://github.com/Guillaume-Fgt/ComfyUI_StableCascadeLatentRatio": { "stars": 3, "last_update": "2024-06-14 08:59:42", - "author_account_age_days": 1475 + "author_account_age_days": 1489 }, "https://github.com/HAL41/ComfyUI-aichemy-nodes": { "stars": 4, "last_update": "2024-05-22 23:10:19", - "author_account_age_days": 2840 + "author_account_age_days": 2854 }, "https://github.com/Hangover3832/ComfyUI-Hangover-Moondream": { "stars": 37, "last_update": "2024-06-14 08:08:20", - "author_account_age_days": 604 + "author_account_age_days": 619 }, "https://github.com/Hangover3832/ComfyUI-Hangover-Nodes": { "stars": 33, "last_update": "2024-06-14 08:08:28", - "author_account_age_days": 604 + "author_account_age_days": 619 }, "https://github.com/Hangover3832/ComfyUI-Hangover-Recognize_Anything": { - "stars": 14, + "stars": 15, "last_update": "2024-06-14 08:10:52", - "author_account_age_days": 604 + "author_account_age_days": 619 }, "https://github.com/Haoming02/comfyui-clear-screen": { "stars": 1, "last_update": "2024-06-14 08:59:35", - "author_account_age_days": 1326 + "author_account_age_days": 1340 }, "https://github.com/Haoming02/comfyui-diffusion-cg": { - "stars": 49, + "stars": 51, "last_update": "2024-06-14 07:10:28", - "author_account_age_days": 1326 + "author_account_age_days": 1340 }, "https://github.com/Haoming02/comfyui-floodgate": { "stars": 25, "last_update": "2024-06-14 07:11:55", - "author_account_age_days": 1326 + "author_account_age_days": 1340 }, "https://github.com/Haoming02/comfyui-menu-anchor": { "stars": 3, "last_update": "2024-06-14 07:10:37", - "author_account_age_days": 1326 + "author_account_age_days": 1340 }, "https://github.com/Haoming02/comfyui-prompt-format": { - "stars": 28, + "stars": 30, "last_update": "2024-06-14 07:12:02", - "author_account_age_days": 1326 + "author_account_age_days": 1340 }, "https://github.com/Haoming02/comfyui-tab-handler": { "stars": 4, "last_update": "2024-06-14 08:09:45", - "author_account_age_days": 1326 + "author_account_age_days": 1340 }, "https://github.com/HaydenReeve/ComfyUI-Better-Strings": { "stars": 0, "last_update": "2024-05-22 23:20:05", - "author_account_age_days": 2236 + "author_account_age_days": 2250 }, "https://github.com/HebelHuber/comfyui-enhanced-save-node": { "stars": 1, "last_update": "2024-06-14 08:59:28", - "author_account_age_days": 2318 + "author_account_age_days": 2332 }, "https://github.com/Hiero207/ComfyUI-Hiero-Nodes": { - "stars": 5, - "last_update": "2024-05-22 23:16:16", - "author_account_age_days": 1693 + "stars": 6, + "last_update": "2024-06-24 03:38:50", + "author_account_age_days": 1707 }, "https://github.com/Hopping-Mad-Games/ComfyUI_LiteLLM": { - "stars": 2, - "last_update": "2024-06-14 15:45:39", - "author_account_age_days": 183 + "stars": 3, + "last_update": "2024-06-29 19:44:47", + "author_account_age_days": 197 }, "https://github.com/IDGallagher/ComfyUI-IG-Nodes": { - "stars": 0, + "stars": 1, "last_update": "2024-06-04 00:24:47", - "author_account_age_days": 5475 + "author_account_age_days": 5489 }, "https://github.com/ITurchenko/ComfyUI-SizeFromArray": { "stars": 0, "last_update": "2024-05-24 14:09:58", - "author_account_age_days": 3703 + "author_account_age_days": 3717 }, "https://github.com/Intersection98/ComfyUI_MX_post_processing-nodes": { "stars": 9, "last_update": "2024-05-23 01:12:46", - "author_account_age_days": 2625 + "author_account_age_days": 2639 }, "https://github.com/Inzaniak/comfyui-ranbooru": { - "stars": 7, + "stars": 8, "last_update": "2024-05-22 23:12:23", - "author_account_age_days": 3904 + "author_account_age_days": 3918 }, "https://github.com/IsItDanOrAi/ComfyUI-Stereopsis": { - "stars": 2, - "last_update": "2024-05-23 00:22:46", - "author_account_age_days": 106 + "stars": 3, + "last_update": "2024-06-21 20:39:06", + "author_account_age_days": 120 }, "https://github.com/JPS-GER/ComfyUI_JPS-Nodes": { - "stars": 34, + "stars": 39, "last_update": "2024-05-22 20:39:14", - "author_account_age_days": 310 + "author_account_age_days": 324 }, "https://github.com/Jannchie/ComfyUI-J": { - "stars": 61, - "last_update": "2024-05-23 00:16:12", - "author_account_age_days": 2548 + "stars": 64, + "last_update": "2024-06-20 12:08:09", + "author_account_age_days": 2562 }, "https://github.com/JaredTherriault/ComfyUI-JNodes": { - "stars": 12, - "last_update": "2024-06-11 03:54:30", - "author_account_age_days": 3566 + "stars": 22, + "last_update": "2024-06-27 23:37:38", + "author_account_age_days": 3580 }, "https://github.com/JayLyu/ComfyUI_BaiKong_Node": { "stars": 0, - "last_update": "2024-06-18 16:07:31", - "author_account_age_days": 3263 + "last_update": "2024-06-20 16:36:32", + "author_account_age_days": 3277 }, "https://github.com/JcandZero/ComfyUI_GLM4Node": { "stars": 25, "last_update": "2024-05-22 23:12:46", - "author_account_age_days": 685 + "author_account_age_days": 699 }, "https://github.com/Jcd1230/rembg-comfyui-node": { - "stars": 120, + "stars": 121, "last_update": "2024-05-22 17:58:34", - "author_account_age_days": 4881 + "author_account_age_days": 4895 }, "https://github.com/JerryOrbachJr/ComfyUI-RandomSize": { "stars": 3, "last_update": "2024-05-22 23:18:51", - "author_account_age_days": 150 + "author_account_age_days": 164 }, "https://github.com/JettHu/ComfyUI-TCD": { - "stars": 83, + "stars": 91, "last_update": "2024-06-03 11:40:18", - "author_account_age_days": 2352 + "author_account_age_days": 2366 }, "https://github.com/JettHu/ComfyUI_TGate": { - "stars": 48, + "stars": 49, "last_update": "2024-05-26 08:29:23", - "author_account_age_days": 2352 + "author_account_age_days": 2366 }, "https://github.com/Jordach/comfy-plasma": { - "stars": 49, + "stars": 53, "last_update": "2024-05-22 18:08:28", - "author_account_age_days": 4507 + "author_account_age_days": 4521 }, "https://github.com/Kaharos94/ComfyUI-Saveaswebp": { - "stars": 31, - "last_update": "2024-05-22 18:06:48", - "author_account_age_days": 1189 + "stars": 33, + "last_update": "2024-06-21 23:01:48", + "author_account_age_days": 1203 }, "https://github.com/Kangkang625/ComfyUI-paint-by-example": { "stars": 14, "last_update": "2024-05-22 22:20:27", - "author_account_age_days": 908 + "author_account_age_days": 922 }, "https://github.com/KewkLW/ComfyUI-kewky_tools": { "stars": 3, - "last_update": "2024-05-23 01:20:32", - "author_account_age_days": 1682 + "last_update": "2024-06-29 00:27:17", + "author_account_age_days": 1696 }, "https://github.com/Koishi-Star/Euler-Smea-Dyn-Sampler": { - "stars": 133, + "stars": 135, "last_update": "2024-06-16 15:50:10", - "author_account_age_days": 1480 + "author_account_age_days": 1494 }, "https://github.com/KoreTeknology/ComfyUI-Universal-Styler": { - "stars": 5, + "stars": 12, "last_update": "2024-06-14 10:28:10", - "author_account_age_days": 3185 + "author_account_age_days": 3199 }, "https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet": { - "stars": 412, - "last_update": "2024-06-13 12:57:15", - "author_account_age_days": 3711 + "stars": 435, + "last_update": "2024-06-28 03:59:45", + "author_account_age_days": 3725 }, "https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved": { - "stars": 2239, - "last_update": "2024-06-17 12:20:18", - "author_account_age_days": 3711 + "stars": 2297, + "last_update": "2024-07-03 07:17:24", + "author_account_age_days": 3725 }, "https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite": { - "stars": 393, - "last_update": "2024-06-18 21:43:05", - "author_account_age_days": 3711 + "stars": 407, + "last_update": "2024-07-01 04:03:14", + "author_account_age_days": 3725 }, "https://github.com/KytraScript/ComfyUI_KytraWebhookHTTP": { "stars": 3, "last_update": "2024-05-23 00:21:43", - "author_account_age_days": 1774 + "author_account_age_days": 1788 }, "https://github.com/LEv145/images-grid-comfy-plugin": { - "stars": 129, + "stars": 130, "last_update": "2024-05-30 17:54:32", - "author_account_age_days": 2202 + "author_account_age_days": 2216 }, "https://github.com/LZpenguin/ComfyUI-Text": { - "stars": 5, - "last_update": "2024-06-19 03:37:22", - "author_account_age_days": 1974 + "stars": 22, + "last_update": "2024-06-20 13:38:16", + "author_account_age_days": 1988 }, "https://github.com/LarryJane491/Image-Captioning-in-ComfyUI": { - "stars": 29, + "stars": 30, "last_update": "2024-06-06 20:45:43", - "author_account_age_days": 158 + "author_account_age_days": 172 }, "https://github.com/LarryJane491/Lora-Training-in-Comfy": { - "stars": 257, + "stars": 277, "last_update": "2024-06-09 05:24:00", - "author_account_age_days": 158 + "author_account_age_days": 172 }, "https://github.com/Layer-norm/comfyui-lama-remover": { - "stars": 53, + "stars": 56, "last_update": "2024-05-25 00:12:04", - "author_account_age_days": 327 + "author_account_age_days": 341 }, "https://github.com/Lerc/canvas_tab": { - "stars": 127, + "stars": 126, "last_update": "2024-05-22 20:48:45", - "author_account_age_days": 5362 + "author_account_age_days": 5376 }, "https://github.com/Limitex/ComfyUI-Calculation": { "stars": 0, "last_update": "2024-05-22 22:18:40", - "author_account_age_days": 1269 + "author_account_age_days": 1283 }, "https://github.com/Limitex/ComfyUI-Diffusers": { - "stars": 107, + "stars": 115, "last_update": "2024-05-22 22:18:57", - "author_account_age_days": 1269 + "author_account_age_days": 1283 }, "https://github.com/Loewen-Hob/rembg-comfyui-node-better": { "stars": 32, "last_update": "2024-05-23 00:32:53", - "author_account_age_days": 465 + "author_account_age_days": 479 }, "https://github.com/LonicaMewinsky/ComfyUI-MakeFrame": { "stars": 23, "last_update": "2024-05-22 21:29:02", - "author_account_age_days": 970 + "author_account_age_days": 984 }, "https://github.com/LonicaMewinsky/ComfyUI-RawSaver": { - "stars": 1, + "stars": 2, "last_update": "2024-05-22 21:31:28", - "author_account_age_days": 970 + "author_account_age_days": 984 }, "https://github.com/Ludobico/ComfyUI-ScenarioPrompt": { - "stars": 13, - "last_update": "2024-06-14 23:40:08", - "author_account_age_days": 1027 + "stars": 14, + "last_update": "2024-06-21 06:43:02", + "author_account_age_days": 1041 }, "https://github.com/LyazS/comfyui-anime-seg": { "stars": 4, "last_update": "2024-05-22 23:21:49", - "author_account_age_days": 2852 + "author_account_age_days": 2866 }, "https://github.com/M1kep/ComfyLiterals": { "stars": 11, "last_update": "2024-05-22 20:31:38", - "author_account_age_days": 4253 + "author_account_age_days": 4267 }, "https://github.com/M1kep/ComfyUI-KepOpenAI": { "stars": 26, "last_update": "2024-05-22 20:33:54", - "author_account_age_days": 4253 + "author_account_age_days": 4267 }, "https://github.com/M1kep/ComfyUI-OtherVAEs": { "stars": 2, "last_update": "2024-05-22 20:33:41", - "author_account_age_days": 4253 + "author_account_age_days": 4267 }, "https://github.com/M1kep/Comfy_KepKitchenSink": { "stars": 0, "last_update": "2024-05-22 20:33:29", - "author_account_age_days": 4253 + "author_account_age_days": 4267 }, "https://github.com/M1kep/Comfy_KepListStuff": { - "stars": 26, - "last_update": "2024-05-22 20:31:26", - "author_account_age_days": 4253 + "stars": 28, + "last_update": "2024-06-22 00:51:28", + "author_account_age_days": 4267 }, "https://github.com/M1kep/Comfy_KepMatteAnything": { "stars": 10, "last_update": "2024-05-22 20:33:16", - "author_account_age_days": 4253 + "author_account_age_days": 4267 }, "https://github.com/M1kep/KepPromptLang": { "stars": 5, "last_update": "2024-05-22 20:32:56", - "author_account_age_days": 4253 + "author_account_age_days": 4267 }, "https://github.com/MNeMoNiCuZ/ComfyUI-mnemic-nodes": { - "stars": 26, + "stars": 27, "last_update": "2024-06-04 23:56:25", - "author_account_age_days": 1599 + "author_account_age_days": 1613 }, "https://github.com/Makeezi/ComfyUI-promptLAB": { "stars": 0, "last_update": "2024-05-23 01:24:51", - "author_account_age_days": 1776 + "author_account_age_days": 1790 }, "https://github.com/Mamaaaamooooo/batchImg-rembg-ComfyUI-nodes": { - "stars": 12, + "stars": 14, "last_update": "2024-06-14 10:24:17", - "author_account_age_days": 377 + "author_account_age_days": 391 }, "https://github.com/ManglerFTW/ComfyI2I": { - "stars": 139, + "stars": 143, "last_update": "2024-06-14 11:01:01", - "author_account_age_days": 650 + "author_account_age_days": 664 }, "https://github.com/MaraScott/ComfyUI_MaraScott_Nodes": { - "stars": 52, - "last_update": "2024-06-17 22:21:27", - "author_account_age_days": 4964 + "stars": 64, + "last_update": "2024-07-02 14:36:00", + "author_account_age_days": 4978 }, "https://github.com/MarcusNyne/m9-prompts-comfyui": { "stars": 1, "last_update": "2024-06-14 15:25:15", - "author_account_age_days": 1417 + "author_account_age_days": 1431 }, "https://github.com/MariusKM/ComfyUI-BadmanNodes": { - "stars": 0, - "last_update": "2024-06-14 12:01:26", - "author_account_age_days": 2225 + "stars": 1, + "last_update": "2024-06-21 15:20:22", + "author_account_age_days": 2239 }, "https://github.com/MarkoCa1/ComfyUI-Text": { "stars": 2, "last_update": "2024-05-23 00:15:39", - "author_account_age_days": 1628 + "author_account_age_days": 1642 }, "https://github.com/MarkoCa1/ComfyUI_Segment_Mask": { - "stars": 15, + "stars": 16, "last_update": "2024-05-23 00:15:51", - "author_account_age_days": 1628 + "author_account_age_days": 1642 }, "https://github.com/Mason-McGough/ComfyUI-Mosaica": { "stars": 4, "last_update": "2024-05-29 12:57:49", - "author_account_age_days": 3200 + "author_account_age_days": 3214 + }, + "https://github.com/MilitantHitchhiker/MilitantHitchhiker-SwitchbladePack": { + "stars": 3, + "last_update": "2024-06-24 22:04:33", + "author_account_age_days": 69 }, "https://github.com/Millyarde/Pomfy": { "stars": 7, "last_update": "2024-05-22 22:22:48", - "author_account_age_days": 902 + "author_account_age_days": 916 }, "https://github.com/MinusZoneAI/ComfyUI-Prompt-MZ": { - "stars": 64, - "last_update": "2024-06-17 04:43:45", - "author_account_age_days": 60 + "stars": 71, + "last_update": "2024-06-29 12:40:09", + "author_account_age_days": 74 }, "https://github.com/MinusZoneAI/ComfyUI-StylizePhoto-MZ": { - "stars": 16, + "stars": 17, "last_update": "2024-05-23 01:13:32", - "author_account_age_days": 60 + "author_account_age_days": 74 + }, + "https://github.com/MinusZoneAI/ComfyUI-TrainTools-MZ": { + "stars": 12, + "last_update": "2024-07-03 00:48:18", + "author_account_age_days": 74 }, "https://github.com/Miosp/ComfyUI-FBCNN": { "stars": 4, "last_update": "2024-05-24 12:13:08", - "author_account_age_days": 2510 + "author_account_age_days": 2524 }, "https://github.com/MitoshiroPJ/comfyui_slothful_attention": { - "stars": 5, + "stars": 6, "last_update": "2024-05-22 22:09:15", - "author_account_age_days": 3962 + "author_account_age_days": 3976 }, "https://github.com/MokkaBoss1/ComfyUI_Mokkaboss1": { - "stars": 15, - "last_update": "2024-06-18 18:18:28", - "author_account_age_days": 374 + "stars": 16, + "last_update": "2024-06-30 06:34:54", + "author_account_age_days": 388 }, "https://github.com/MrForExample/ComfyUI-3D-Pack": { - "stars": 1630, - "last_update": "2024-06-04 20:35:47", - "author_account_age_days": 1556 + "stars": 1716, + "last_update": "2024-06-23 18:40:51", + "author_account_age_days": 1570 }, "https://github.com/MrForExample/ComfyUI-AnimateAnyone-Evolved": { - "stars": 429, + "stars": 438, "last_update": "2024-06-14 12:02:47", - "author_account_age_days": 1556 + "author_account_age_days": 1570 + }, + "https://github.com/MrSamSeen/ComfyUI_SSStereoscope": { + "stars": 4, + "last_update": "2024-07-02 14:18:44", + "author_account_age_days": 3600 }, "https://github.com/Munkyfoot/ComfyUI-TextOverlay": { - "stars": 2, - "last_update": "2024-06-14 10:26:38", - "author_account_age_days": 3040 + "stars": 3, + "last_update": "2024-06-28 05:57:03", + "author_account_age_days": 3054 }, "https://github.com/Nestorchik/NStor-ComfyUI-Translation": { "stars": 1, "last_update": "2024-06-14 10:25:32", - "author_account_age_days": 1319 + "author_account_age_days": 1333 }, "https://github.com/NeuralSamurAI/Comfyui-Superprompt-Unofficial": { - "stars": 55, + "stars": 56, "last_update": "2024-05-23 00:22:08", - "author_account_age_days": 88 + "author_account_age_days": 102 }, "https://github.com/Nevysha/ComfyUI-nevysha-top-menu": { - "stars": 4, + "stars": 5, "last_update": "2024-05-23 00:17:31", - "author_account_age_days": 521 + "author_account_age_days": 535 }, "https://github.com/NicholasMcCarthy/ComfyUI_TravelSuite": { "stars": 13, "last_update": "2024-05-22 20:34:46", - "author_account_age_days": 5144 + "author_account_age_days": 5158 }, "https://github.com/NimaNzrii/comfyui-photoshop": { - "stars": 171, - "last_update": "2024-06-18 22:59:33", - "author_account_age_days": 239 + "stars": 243, + "last_update": "2024-06-29 01:18:19", + "author_account_age_days": 253 }, "https://github.com/NimaNzrii/comfyui-popup_preview": { - "stars": 34, + "stars": 35, "last_update": "2024-05-22 22:12:04", - "author_account_age_days": 239 + "author_account_age_days": 253 }, "https://github.com/Niutonian/ComfyUi-NoodleWebcam": { "stars": 27, "last_update": "2024-05-22 21:30:40", - "author_account_age_days": 1037 + "author_account_age_days": 1051 }, "https://github.com/Nlar/ComfyUI_CartoonSegmentation": { - "stars": 9, + "stars": 10, "last_update": "2024-05-22 23:15:37", - "author_account_age_days": 3826 + "author_account_age_days": 3840 }, "https://github.com/NotHarroweD/Harronode": { "stars": 5, "last_update": "2024-05-22 22:18:29", - "author_account_age_days": 1978 + "author_account_age_days": 1992 }, "https://github.com/Nourepide/ComfyUI-Allor": { - "stars": 172, + "stars": 179, "last_update": "2024-05-22 18:11:17", - "author_account_age_days": 2840 + "author_account_age_days": 2854 }, "https://github.com/Nuked88/ComfyUI-N-Nodes": { - "stars": 171, + "stars": 175, "last_update": "2024-05-21 19:52:44", - "author_account_age_days": 4474 + "author_account_age_days": 4488 }, "https://github.com/Nuked88/ComfyUI-N-Sidebar": { - "stars": 370, - "last_update": "2024-06-18 17:58:13", - "author_account_age_days": 4474 + "stars": 393, + "last_update": "2024-06-23 18:54:30", + "author_account_age_days": 4488 }, "https://github.com/Off-Live/ComfyUI-off-suite": { "stars": 0, "last_update": "2024-06-14 12:02:25", - "author_account_age_days": 1167 + "author_account_age_days": 1181 }, "https://github.com/OpenArt-AI/ComfyUI-Assistant": { "stars": 14, "last_update": "2024-05-22 22:16:57", - "author_account_age_days": 770 + "author_account_age_days": 784 }, "https://github.com/PCMonsterx/ComfyUI-CSV-Loader": { "stars": 11, "last_update": "2024-05-22 21:27:10", - "author_account_age_days": 1660 + "author_account_age_days": 1674 }, "https://github.com/ParisNeo/lollms_nodes_suite": { - "stars": 9, - "last_update": "2024-05-23 00:22:34", - "author_account_age_days": 4764 + "stars": 10, + "last_update": "2024-06-23 21:04:43", + "author_account_age_days": 4778 }, "https://github.com/ParmanBabra/ComfyUI-Malefish-Custom-Scripts": { "stars": 0, "last_update": "2024-05-22 21:26:35", - "author_account_age_days": 3638 + "author_account_age_days": 3652 }, "https://github.com/Pfaeff/pfaeff-comfyui": { "stars": 19, "last_update": "2024-05-22 18:21:10", - "author_account_age_days": 3202 + "author_account_age_days": 3216 }, "https://github.com/PnthrLeo/comfyUI-image-search": { "stars": 0, "last_update": "2024-06-14 07:06:45", - "author_account_age_days": 2546 + "author_account_age_days": 2560 }, "https://github.com/Pos13/comfyui-cyclist": { - "stars": 16, + "stars": 30, "last_update": "2024-06-19 09:21:53", - "author_account_age_days": 1512 + "author_account_age_days": 1526 }, "https://github.com/QaisMalkawi/ComfyUI-QaisHelper": { "stars": 2, "last_update": "2024-05-23 20:29:30", - "author_account_age_days": 1245 + "author_account_age_days": 1259 + }, + "https://github.com/RedRayz/ComfyUI-Danbooru-To-WD": { + "stars": 2, + "last_update": "2024-06-24 18:20:48", + "author_account_age_days": 1374 }, "https://github.com/RenderRift/ComfyUI-RenderRiftNodes": { "stars": 6, "last_update": "2024-05-22 22:16:41", - "author_account_age_days": 181 + "author_account_age_days": 195 }, "https://github.com/RomanKuschanow/ComfyUI-Advanced-Latent-Control": { "stars": 15, - "last_update": "2024-06-14 08:11:00", - "author_account_age_days": 1376 + "last_update": "2024-06-21 07:29:14", + "author_account_age_days": 1390 }, "https://github.com/Ron-Digital/ComfyUI-SceneGenerator": { "stars": 2, - "last_update": "2024-06-14 08:59:57", - "author_account_age_days": 924 + "last_update": "2024-06-28 19:36:30", + "author_account_age_days": 938 }, "https://github.com/Ryuukeisyou/comfyui_face_parsing": { - "stars": 44, - "last_update": "2024-05-22 22:21:46", - "author_account_age_days": 2407 + "stars": 50, + "last_update": "2024-06-28 08:11:47", + "author_account_age_days": 2421 }, "https://github.com/Ryuukeisyou/comfyui_io_helpers": { "stars": 1, "last_update": "2024-05-22 22:22:59", - "author_account_age_days": 2407 + "author_account_age_days": 2421 + }, + "https://github.com/SEkINVR/ComfyUI-Save-Multi-Format": { + "stars": 0, + "last_update": "2024-06-30 22:28:47", + "author_account_age_days": 666 + }, + "https://github.com/SEkINVR/ComfyUI-SaveAs": { + "stars": 0, + "last_update": "2024-06-30 22:28:47", + "author_account_age_days": 666 }, "https://github.com/SLAPaper/ComfyUI-Image-Selector": { - "stars": 58, + "stars": 60, "last_update": "2024-05-24 17:03:46", - "author_account_age_days": 3692 + "author_account_age_days": 3706 }, "https://github.com/SLAPaper/ComfyUI-dpmpp_2m_alt-Sampler": { "stars": 8, "last_update": "2024-06-18 19:22:50", - "author_account_age_days": 3692 + "author_account_age_days": 3706 }, "https://github.com/SOELexicon/ComfyUI-LexMSDBNodes": { "stars": 4, - "last_update": "2024-05-22 18:15:52", - "author_account_age_days": 4078 + "last_update": "2024-06-28 19:20:36", + "author_account_age_days": 4092 }, "https://github.com/SOELexicon/ComfyUI-LexTools": { - "stars": 23, - "last_update": "2024-05-23 09:39:07", - "author_account_age_days": 4078 + "stars": 25, + "last_update": "2024-06-28 19:25:13", + "author_account_age_days": 4092 }, "https://github.com/SamKhoze/ComfyUI-DeepFuze": { - "stars": 99, - "last_update": "2024-06-19 06:03:29", - "author_account_age_days": 1438 + "stars": 213, + "last_update": "2024-07-01 19:10:04", + "author_account_age_days": 1452 }, "https://github.com/SayanoAI/Comfy-RVC": { "stars": 2, - "last_update": "2024-06-14 08:57:33", - "author_account_age_days": 2598 + "last_update": "2024-06-25 02:50:53", + "author_account_age_days": 2612 }, "https://github.com/Scholar01/ComfyUI-Keyframe": { "stars": 10, "last_update": "2024-06-14 09:01:30", - "author_account_age_days": 3191 + "author_account_age_days": 3205 }, "https://github.com/Scorpinaus/ComfyUI-DiffusersLoader": { - "stars": 3, - "last_update": "2024-06-14 09:02:43", - "author_account_age_days": 1105 + "stars": 5, + "last_update": "2024-06-23 01:30:57", + "author_account_age_days": 1119 }, "https://github.com/ScreamingHawk/comfyui-ollama-prompt-encode": { "stars": 4, - "last_update": "2024-06-18 02:52:45", - "author_account_age_days": 4501 + "last_update": "2024-06-26 00:07:10", + "author_account_age_days": 4515 }, "https://github.com/SeaArtLab/ComfyUI-Long-CLIP": { - "stars": 59, + "stars": 62, "last_update": "2024-06-14 08:08:26", - "author_account_age_days": 71 + "author_account_age_days": 86 }, "https://github.com/SeargeDP/SeargeSDXL": { - "stars": 739, + "stars": 746, "last_update": "2024-05-22 00:28:26", - "author_account_age_days": 4166 + "author_account_age_days": 4180 }, "https://github.com/Seedsa/Fooocus_Nodes": { - "stars": 37, - "last_update": "2024-06-03 17:13:53", - "author_account_age_days": 2603 + "stars": 41, + "last_update": "2024-07-03 07:51:13", + "author_account_age_days": 2617 }, "https://github.com/Shadetail/ComfyUI_Eagleshadow": { "stars": 1, "last_update": "2024-06-15 13:04:49", - "author_account_age_days": 3392 + "author_account_age_days": 3406 + }, + "https://github.com/SherryXieYuchen/ComfyUI-Image-Inpainting": { + "stars": 2, + "last_update": "2024-07-03 03:39:49", + "author_account_age_days": 124 + }, + "https://github.com/Shibiko-AI/ShibikoAI-ComfyUI-Tools": { + "stars": 8, + "last_update": "2024-07-03 09:43:43", + "author_account_age_days": 411 }, "https://github.com/ShmuelRonen/ComfyUI-SVDResizer": { - "stars": 1, + "stars": 2, "last_update": "2024-06-14 11:50:52", - "author_account_age_days": 1200 + "author_account_age_days": 1214 }, "https://github.com/ShmuelRonen/ComfyUI_Gemini_Flash": { - "stars": 6, + "stars": 8, "last_update": "2024-06-15 17:12:05", - "author_account_age_days": 1200 + "author_account_age_days": 1214 }, "https://github.com/ShmuelRonen/ComfyUI_wav2lip": { - "stars": 45, - "last_update": "2024-06-15 10:03:53", - "author_account_age_days": 1200 + "stars": 53, + "last_update": "2024-06-30 17:29:26", + "author_account_age_days": 1214 }, "https://github.com/Shraknard/ComfyUI-Remover": { "stars": 4, "last_update": "2024-05-22 23:15:06", - "author_account_age_days": 2311 + "author_account_age_days": 2325 }, "https://github.com/Siberpone/lazy-pony-prompter": { - "stars": 23, - "last_update": "2024-05-22 23:12:00", - "author_account_age_days": 447 + "stars": 24, + "last_update": "2024-07-02 19:37:48", + "author_account_age_days": 461 }, "https://github.com/Smirnov75/ComfyUI-mxToolkit": { - "stars": 46, - "last_update": "2024-06-16 18:22:10", - "author_account_age_days": 1506 + "stars": 56, + "last_update": "2024-06-21 19:22:42", + "author_account_age_days": 1520 }, "https://github.com/SoftMeng/ComfyUI_ImageToText": { - "stars": 5, + "stars": 6, "last_update": "2024-06-14 08:08:36", - "author_account_age_days": 3518 + "author_account_age_days": 3532 }, "https://github.com/SoftMeng/ComfyUI_Mexx_Poster": { - "stars": 15, + "stars": 16, "last_update": "2024-06-14 07:06:27", - "author_account_age_days": 3518 + "author_account_age_days": 3532 }, "https://github.com/SoftMeng/ComfyUI_Mexx_Styler": { - "stars": 17, + "stars": 18, "last_update": "2024-06-14 07:09:03", - "author_account_age_days": 3518 + "author_account_age_days": 3532 }, "https://github.com/Sorcerio/MBM-Music-Visualizer": { - "stars": 14, + "stars": 15, "last_update": "2024-05-23 01:09:18", - "author_account_age_days": 4242 + "author_account_age_days": 4256 }, "https://github.com/SozeInc/ComfyUI-Mobile": { "stars": 0, "last_update": "2024-06-14 07:09:00", - "author_account_age_days": 74 + "author_account_age_days": 88 }, "https://github.com/SpaceKendo/ComfyUI-svd_txt2vid": { "stars": 6, "last_update": "2024-05-22 22:11:52", - "author_account_age_days": 203 + "author_account_age_days": 217 }, "https://github.com/Stability-AI/ComfyUI-SAI_API": { - "stars": 37, + "stars": 40, "last_update": "2024-06-06 14:18:15", - "author_account_age_days": 837 + "author_account_age_days": 851 }, "https://github.com/Stability-AI/stability-ComfyUI-nodes": { - "stars": 179, + "stars": 182, "last_update": "2024-05-22 15:30:47", - "author_account_age_days": 837 + "author_account_age_days": 851 }, "https://github.com/StartHua/ComfyUI_OOTDiffusion_CXH": { - "stars": 90, + "stars": 94, "last_update": "2024-06-14 08:12:12", - "author_account_age_days": 2830 + "author_account_age_days": 2844 }, "https://github.com/StartHua/ComfyUI_PCDMs": { "stars": 2, "last_update": "2024-05-22 23:21:14", - "author_account_age_days": 2830 + "author_account_age_days": 2844 }, "https://github.com/StartHua/ComfyUI_Seg_VITON": { - "stars": 164, + "stars": 170, "last_update": "2024-05-22 23:20:17", - "author_account_age_days": 2830 + "author_account_age_days": 2844 }, "https://github.com/StartHua/Comfyui_joytag": { "stars": 19, "last_update": "2024-05-22 23:20:28", - "author_account_age_days": 2830 + "author_account_age_days": 2844 }, "https://github.com/StartHua/Comfyui_segformer_b2_clothes": { - "stars": 36, + "stars": 37, "last_update": "2024-05-22 23:20:39", - "author_account_age_days": 2830 + "author_account_age_days": 2844 }, "https://github.com/SuperBeastsAI/ComfyUI-SuperBeasts": { - "stars": 98, + "stars": 109, "last_update": "2024-06-01 20:27:53", - "author_account_age_days": 84 + "author_account_age_days": 98 }, "https://github.com/SuperMasterBlasterLaser/ComfyUI_YOLO_Classifiers": { - "stars": 0, - "last_update": "2024-06-17 15:08:33", - "author_account_age_days": 3573 + "stars": 1, + "last_update": "2024-06-20 15:06:51", + "author_account_age_days": 3587 }, "https://github.com/Suzie1/ComfyUI_Comfyroll_CustomNodes": { - "stars": 471, + "stars": 492, "last_update": "2024-06-05 01:09:25", - "author_account_age_days": 2144 + "author_account_age_days": 2158 }, "https://github.com/Sxela/ComfyWarp": { "stars": 21, "last_update": "2024-05-22 20:47:11", - "author_account_age_days": 3367 + "author_account_age_days": 3381 }, "https://github.com/TGu-97/ComfyUI-TGu-utils": { "stars": 1, "last_update": "2024-05-22 21:07:45", - "author_account_age_days": 524 + "author_account_age_days": 538 }, "https://github.com/THtianhao/ComfyUI-FaceChain": { - "stars": 83, - "last_update": "2024-05-24 08:41:14", - "author_account_age_days": 3686 + "stars": 87, + "last_update": "2024-06-25 02:59:28", + "author_account_age_days": 3700 }, "https://github.com/THtianhao/ComfyUI-Portrait-Maker": { - "stars": 167, + "stars": 168, "last_update": "2024-05-22 21:18:05", - "author_account_age_days": 3686 + "author_account_age_days": 3700 }, "https://github.com/TJ16th/comfyUI_TJ_NormalLighting": { - "stars": 128, + "stars": 129, "last_update": "2024-05-23 00:25:37", - "author_account_age_days": 2530 + "author_account_age_days": 2544 }, "https://github.com/TMElyralab/Comfyui-MusePose": { - "stars": 250, - "last_update": "2024-06-12 11:44:33", - "author_account_age_days": 92 + "stars": 286, + "last_update": "2024-06-22 07:09:49", + "author_account_age_days": 106 }, "https://github.com/TRI3D-LC/ComfyUI-MiroBoard": { - "stars": 0, - "last_update": "2024-06-19 07:24:27", - "author_account_age_days": 433 + "stars": 3, + "last_update": "2024-07-02 16:21:56", + "author_account_age_days": 447 }, "https://github.com/TRI3D-LC/tri3d-comfyui-nodes": { - "stars": 17, - "last_update": "2024-06-13 06:05:42", - "author_account_age_days": 433 + "stars": 18, + "last_update": "2024-07-03 08:14:52", + "author_account_age_days": 447 }, "https://github.com/TW-CUI/TW-CUI-Util": { - "stars": 0, + "stars": 1, "last_update": "2024-06-17 03:03:57", - "author_account_age_days": 26 + "author_account_age_days": 40 }, "https://github.com/TaiTair/comfyui-simswap": { - "stars": 7, + "stars": 9, "last_update": "2024-05-28 21:58:53", - "author_account_age_days": 3561 + "author_account_age_days": 3575 }, "https://github.com/Taremin/comfyui-prompt-extranetworks": { "stars": 2, "last_update": "2024-05-22 23:08:34", - "author_account_age_days": 2210 + "author_account_age_days": 2224 }, "https://github.com/Taremin/comfyui-string-tools": { "stars": 1, "last_update": "2024-05-22 23:08:45", - "author_account_age_days": 2210 + "author_account_age_days": 2224 }, "https://github.com/Taremin/webui-monaco-prompt": { "stars": 24, "last_update": "2024-05-23 13:58:57", - "author_account_age_days": 2210 + "author_account_age_days": 2224 }, "https://github.com/TeaCrab/ComfyUI-TeaNodes": { "stars": 4, "last_update": "2024-05-22 20:44:05", - "author_account_age_days": 3212 + "author_account_age_days": 3226 }, "https://github.com/TemryL/ComfyS3": { - "stars": 15, - "last_update": "2024-06-15 17:03:52", - "author_account_age_days": 863 + "stars": 17, + "last_update": "2024-06-20 00:36:13", + "author_account_age_days": 877 }, "https://github.com/TemryL/ComfyUI-IDM-VTON": { - "stars": 195, - "last_update": "2024-06-18 17:59:20", - "author_account_age_days": 863 + "stars": 218, + "last_update": "2024-06-22 06:14:19", + "author_account_age_days": 877 }, "https://github.com/TencentQQGYLab/ComfyUI-ELLA": { - "stars": 281, + "stars": 293, "last_update": "2024-05-07 03:07:38", - "author_account_age_days": 92 + "author_account_age_days": 107 }, "https://github.com/TheBarret/ZSuite": { "stars": 6, - "last_update": "2024-05-22 21:29:14", - "author_account_age_days": 2707 + "last_update": "2024-06-25 10:19:11", + "author_account_age_days": 2721 }, "https://github.com/TheBill2001/comfyui-upscale-by-model": { - "stars": 1, + "stars": 2, "last_update": "2024-06-18 17:57:06", - "author_account_age_days": 1436 + "author_account_age_days": 1450 }, "https://github.com/TheMistoAI/ComfyUI-Anyline": { - "stars": 261, + "stars": 286, "last_update": "2024-06-12 11:34:17", - "author_account_age_days": 160 + "author_account_age_days": 174 }, "https://github.com/ThereforeGames/ComfyUI-Unprompted": { - "stars": 3, - "last_update": "2024-06-14 07:11:47", - "author_account_age_days": 930 + "stars": 6, + "last_update": "2024-06-23 21:38:03", + "author_account_age_days": 944 }, "https://github.com/TinyTerra/ComfyUI_tinyterraNodes": { - "stars": 317, - "last_update": "2024-06-17 12:37:41", - "author_account_age_days": 616 + "stars": 328, + "last_update": "2024-07-01 23:43:02", + "author_account_age_days": 630 }, "https://github.com/TripleHeadedMonkey/ComfyUI_MileHighStyler": { "stars": 18, "last_update": "2024-05-22 22:13:06", - "author_account_age_days": 855 + "author_account_age_days": 869 }, "https://github.com/Tropfchen/ComfyUI-Embedding_Picker": { - "stars": 25, + "stars": 28, "last_update": "2024-05-24 20:02:20", - "author_account_age_days": 3848 + "author_account_age_days": 3862 }, "https://github.com/Tropfchen/ComfyUI-yaResolutionSelector": { - "stars": 6, + "stars": 8, "last_update": "2024-05-24 19:48:43", - "author_account_age_days": 3848 + "author_account_age_days": 3862 }, "https://github.com/Trung0246/ComfyUI-0246": { "stars": 91, "last_update": "2024-05-24 03:45:59", - "author_account_age_days": 3375 + "author_account_age_days": 3389 }, "https://github.com/Ttl/ComfyUi_NNLatentUpscale": { - "stars": 162, + "stars": 168, "last_update": "2024-05-22 20:50:03", - "author_account_age_days": 4916 + "author_account_age_days": 4930 }, "https://github.com/TylerZoro/SD3-Scaling": { - "stars": 0, + "stars": 1, "last_update": "2024-06-15 16:59:22", - "author_account_age_days": 1280 + "author_account_age_days": 1294 }, "https://github.com/Umikaze-job/select_folder_path_easy": { "stars": 4, "last_update": "2024-05-22 21:30:13", - "author_account_age_days": 213 + "author_account_age_days": 227 }, "https://github.com/VAST-AI-Research/ComfyUI-Tripo": { - "stars": 64, + "stars": 69, "last_update": "2024-05-23 01:11:56", - "author_account_age_days": 237 + "author_account_age_days": 251 }, "https://github.com/WASasquatch/ASTERR": { - "stars": 12, + "stars": 14, "last_update": "2024-06-17 00:49:59", - "author_account_age_days": 4620 + "author_account_age_days": 4634 }, "https://github.com/WASasquatch/ComfyUI_Preset_Merger": { - "stars": 21, + "stars": 23, "last_update": "2024-06-17 00:52:28", - "author_account_age_days": 4620 + "author_account_age_days": 4634 }, "https://github.com/WASasquatch/FreeU_Advanced": { - "stars": 96, + "stars": 101, "last_update": "2024-06-17 04:40:22", - "author_account_age_days": 4620 + "author_account_age_days": 4634 }, "https://github.com/WASasquatch/PPF_Noise_ComfyUI": { "stars": 20, "last_update": "2024-06-14 10:27:23", - "author_account_age_days": 4620 + "author_account_age_days": 4634 }, "https://github.com/WASasquatch/PowerNoiseSuite": { - "stars": 53, + "stars": 56, "last_update": "2024-06-17 01:40:44", - "author_account_age_days": 4620 + "author_account_age_days": 4634 }, "https://github.com/WASasquatch/WAS_Extras": { - "stars": 23, + "stars": 25, "last_update": "2024-06-17 04:08:37", - "author_account_age_days": 4620 + "author_account_age_days": 4634 }, "https://github.com/WASasquatch/was-node-suite-comfyui": { - "stars": 924, - "last_update": "2024-06-17 03:26:50", - "author_account_age_days": 4620 + "stars": 949, + "last_update": "2024-07-02 13:15:45", + "author_account_age_days": 4634 }, "https://github.com/WebDev9000/WebDev9000-Nodes": { "stars": 1, "last_update": "2024-06-14 10:28:22", - "author_account_age_days": 3747 + "author_account_age_days": 3761 }, "https://github.com/Wicloz/ComfyUI-Simply-Nodes": { "stars": 1, - "last_update": "2024-06-14 10:28:41", - "author_account_age_days": 3638 + "last_update": "2024-06-20 15:49:25", + "author_account_age_days": 3652 }, "https://github.com/XmYx/deforum-comfy-nodes": { - "stars": 118, - "last_update": "2024-06-18 13:27:12", - "author_account_age_days": 2600 + "stars": 124, + "last_update": "2024-06-28 10:09:35", + "author_account_age_days": 2614 }, "https://github.com/Xyem/Xycuno-Oobabooga": { "stars": 3, "last_update": "2024-05-23 00:14:14", - "author_account_age_days": 4319 + "author_account_age_days": 4333 }, "https://github.com/YMC-GitHub/ymc-node-suite-comfyui": { "stars": 16, "last_update": "2024-05-22 21:15:51", - "author_account_age_days": 2690 + "author_account_age_days": 2704 }, "https://github.com/YOUR-WORST-TACO/ComfyUI-TacoNodes": { "stars": 14, "last_update": "2024-05-22 20:48:23", - "author_account_age_days": 3750 + "author_account_age_days": 3764 }, "https://github.com/Yanick112/ComfyUI-ToSVG": { - "stars": 13, + "stars": 15, "last_update": "2024-06-14 14:00:22", - "author_account_age_days": 808 + "author_account_age_days": 822 }, "https://github.com/YinBailiang/MergeBlockWeighted_fo_ComfyUI": { "stars": 14, - "last_update": "2024-05-22 18:04:22", - "author_account_age_days": 781 + "last_update": "2024-07-01 09:03:34", + "author_account_age_days": 795 }, "https://github.com/ZHO-ZHO-ZHO/ComfyUI-APISR": { - "stars": 315, + "stars": 320, "last_update": "2024-05-22 14:14:46", - "author_account_age_days": 334 + "author_account_age_days": 348 }, "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Animated-optical-illusions": { "stars": 17, "last_update": "2024-06-14 07:06:15", - "author_account_age_days": 334 + "author_account_age_days": 348 }, "https://github.com/ZHO-ZHO-ZHO/ComfyUI-ArtGallery": { - "stars": 349, + "stars": 361, "last_update": "2024-06-12 04:40:50", - "author_account_age_days": 334 + "author_account_age_days": 348 }, "https://github.com/ZHO-ZHO-ZHO/ComfyUI-BRIA_AI-RMBG": { - "stars": 555, + "stars": 573, "last_update": "2024-05-22 14:14:18", - "author_account_age_days": 334 + "author_account_age_days": 348 }, "https://github.com/ZHO-ZHO-ZHO/ComfyUI-BiRefNet-ZHO": { - "stars": 139, - "last_update": "2024-05-22 14:14:31", - "author_account_age_days": 334 + "stars": 152, + "last_update": "2024-06-27 03:38:19", + "author_account_age_days": 348 }, "https://github.com/ZHO-ZHO-ZHO/ComfyUI-DepthFM": { - "stars": 67, + "stars": 68, "last_update": "2024-05-22 14:14:03", - "author_account_age_days": 334 + "author_account_age_days": 348 }, "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Gemini": { - "stars": 585, + "stars": 596, "last_update": "2024-05-22 14:15:11", - "author_account_age_days": 334 + "author_account_age_days": 348 }, "https://github.com/ZHO-ZHO-ZHO/ComfyUI-InstantID": { - "stars": 1191, + "stars": 1215, "last_update": "2024-05-22 13:57:55", - "author_account_age_days": 334 + "author_account_age_days": 348 }, "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Phi-3-mini": { - "stars": 175, - "last_update": "2024-06-18 19:10:34", - "author_account_age_days": 334 + "stars": 181, + "last_update": "2024-06-30 08:41:40", + "author_account_age_days": 348 }, "https://github.com/ZHO-ZHO-ZHO/ComfyUI-PhotoMaker-ZHO": { - "stars": 746, + "stars": 755, "last_update": "2024-05-22 14:13:49", - "author_account_age_days": 334 + "author_account_age_days": 348 }, "https://github.com/ZHO-ZHO-ZHO/ComfyUI-PixArt-alpha-Diffusers": { - "stars": 43, + "stars": 44, "last_update": "2024-05-22 13:40:58", - "author_account_age_days": 334 + "author_account_age_days": 348 }, "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Q-Align": { "stars": 3, "last_update": "2024-05-22 14:15:52", - "author_account_age_days": 334 + "author_account_age_days": 348 }, "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Qwen-2": { - "stars": 54, + "stars": 60, "last_update": "2024-06-14 12:02:55", - "author_account_age_days": 334 + "author_account_age_days": 348 }, "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Qwen-VL-API": { - "stars": 180, + "stars": 182, "last_update": "2024-05-22 14:14:57", - "author_account_age_days": 334 + "author_account_age_days": 348 }, "https://github.com/ZHO-ZHO-ZHO/ComfyUI-SVD-ZHO": { - "stars": 94, + "stars": 95, "last_update": "2024-05-22 13:40:44", - "author_account_age_days": 334 + "author_account_age_days": 348 }, "https://github.com/ZHO-ZHO-ZHO/ComfyUI-SegMoE": { - "stars": 73, + "stars": 74, "last_update": "2024-05-22 13:41:14", - "author_account_age_days": 334 + "author_account_age_days": 348 }, "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Text_Image-Composite": { - "stars": 74, + "stars": 82, "last_update": "2024-05-31 12:03:55", - "author_account_age_days": 334 + "author_account_age_days": 348 }, "https://github.com/ZHO-ZHO-ZHO/ComfyUI-YoloWorld-EfficientSAM": { - "stars": 457, + "stars": 476, "last_update": "2024-05-22 13:01:07", - "author_account_age_days": 334 + "author_account_age_days": 348 }, "https://github.com/ZHO-ZHO-ZHO/comfyui-portrait-master-zh-cn": { - "stars": 1481, + "stars": 1491, "last_update": "2024-06-14 09:00:04", - "author_account_age_days": 334 + "author_account_age_days": 348 }, "https://github.com/ZaneA/ComfyUI-ImageReward": { "stars": 22, - "last_update": "2024-06-14 08:59:50", - "author_account_age_days": 5535 + "last_update": "2024-07-01 21:25:12", + "author_account_age_days": 5549 }, "https://github.com/ZeDarkAdam/ComfyUI-Embeddings-Tools": { - "stars": 1, - "last_update": "2024-05-23 01:19:25", - "author_account_age_days": 1188 + "stars": 2, + "last_update": "2024-06-23 19:19:40", + "author_account_age_days": 1202 }, "https://github.com/Zuellni/ComfyUI-Custom-Nodes": { "stars": 44, "last_update": "2023-09-19 12:11:26", - "author_account_age_days": 517 + "author_account_age_days": 531 }, "https://github.com/Zuellni/ComfyUI-ExLlama": { - "stars": 99, - "last_update": "2024-06-14 16:54:57", - "author_account_age_days": 517 + "stars": 101, + "last_update": "2024-06-26 14:01:12", + "author_account_age_days": 531 }, "https://github.com/Zuellni/ComfyUI-ExLlama-Nodes": { - "stars": 99, - "last_update": "2024-06-14 16:54:57", - "author_account_age_days": 517 + "stars": 101, + "last_update": "2024-06-26 14:01:12", + "author_account_age_days": 531 }, "https://github.com/Zuellni/ComfyUI-PickScore-Nodes": { "stars": 22, "last_update": "2024-06-15 08:23:16", - "author_account_age_days": 517 + "author_account_age_days": 531 }, "https://github.com/a1lazydog/ComfyUI-AudioScheduler": { - "stars": 90, + "stars": 91, "last_update": "2024-06-14 11:02:32", - "author_account_age_days": 4797 + "author_account_age_days": 4811 }, "https://github.com/aburahamu/ComfyUI-IsNiceParts": { "stars": 2, "last_update": "2024-06-14 12:01:40", - "author_account_age_days": 67 + "author_account_age_days": 81 }, "https://github.com/aburahamu/ComfyUI-RequestsPoster": { "stars": 2, "last_update": "2024-06-14 13:59:24", - "author_account_age_days": 67 + "author_account_age_days": 81 }, "https://github.com/abyz22/image_control": { "stars": 14, "last_update": "2024-05-22 23:10:07", - "author_account_age_days": 157 + "author_account_age_days": 171 }, "https://github.com/adbrasi/ComfyUI-TrashNodes-DownloadHuggingface": { "stars": 4, "last_update": "2024-05-22 23:24:45", - "author_account_age_days": 698 + "author_account_age_days": 712 }, "https://github.com/adieyal/comfyui-dynamicprompts": { - "stars": 179, - "last_update": "2024-06-14 20:46:45", - "author_account_age_days": 5011 + "stars": 188, + "last_update": "2024-06-25 18:29:52", + "author_account_age_days": 5025 }, "https://github.com/adriflex/ComfyUI_Blender_Texdiff": { "stars": 1, "last_update": "2024-05-22 23:14:18", - "author_account_age_days": 2217 + "author_account_age_days": 2231 }, "https://github.com/aegis72/aegisflow_utility_nodes": { - "stars": 22, + "stars": 24, "last_update": "2024-05-22 22:10:29", - "author_account_age_days": 578 + "author_account_age_days": 592 }, "https://github.com/aegis72/comfyui-styles-all": { - "stars": 29, + "stars": 33, "last_update": "2024-05-22 22:10:41", - "author_account_age_days": 578 + "author_account_age_days": 592 }, "https://github.com/ai-liam/comfyui-liam": { "stars": 2, - "last_update": "2024-06-11 03:14:52", - "author_account_age_days": 1516 + "last_update": "2024-06-22 03:27:52", + "author_account_age_days": 1530 }, "https://github.com/ai-liam/comfyui_liam_util": { "stars": 2, "last_update": "2024-05-22 22:21:23", - "author_account_age_days": 1516 + "author_account_age_days": 1530 }, "https://github.com/aianimation55/ComfyUI-FatLabels": { "stars": 4, "last_update": "2024-05-22 21:26:01", - "author_account_age_days": 268 + "author_account_age_days": 282 }, "https://github.com/al-swaiti/ComfyUI-CascadeResolutions": { - "stars": 1, - "last_update": "2024-06-14 10:27:51", - "author_account_age_days": 924 + "stars": 2, + "last_update": "2024-06-29 17:12:23", + "author_account_age_days": 938 }, "https://github.com/alessandrozonta/ComfyUI-CenterNode": { - "stars": 2, + "stars": 3, "last_update": "2024-05-23 01:17:52", - "author_account_age_days": 1191 + "author_account_age_days": 1205 }, "https://github.com/alessandrozonta/ComfyUI-Layers": { - "stars": 10, + "stars": 28, "last_update": "2024-06-14 09:04:36", - "author_account_age_days": 1191 + "author_account_age_days": 1205 }, "https://github.com/alessandrozonta/ComfyUI-OpenPose": { - "stars": 1, + "stars": 2, "last_update": "2024-06-14 13:59:36", - "author_account_age_days": 1191 + "author_account_age_days": 1205 }, "https://github.com/alexopus/ComfyUI-Image-Saver": { "stars": 31, - "last_update": "2024-06-16 11:31:41", - "author_account_age_days": 2674 + "last_update": "2024-06-29 19:31:28", + "author_account_age_days": 2688 }, "https://github.com/ali1234/comfyui-job-iterator": { - "stars": 60, + "stars": 63, "last_update": "2024-05-22 20:54:21", - "author_account_age_days": 4855 + "author_account_age_days": 4869 }, "https://github.com/alisson-anjos/ComfyUI-Ollama-Describer": { - "stars": 30, - "last_update": "2024-05-23 00:17:43", - "author_account_age_days": 595 + "stars": 36, + "last_update": "2024-06-29 16:19:33", + "author_account_age_days": 609 }, "https://github.com/alpertunga-bile/prompt-generator-comfyui": { - "stars": 63, - "last_update": "2024-06-09 18:31:22", - "author_account_age_days": 1267 + "stars": 66, + "last_update": "2024-07-01 09:08:11", + "author_account_age_days": 1281 }, "https://github.com/alsritter/asymmetric-tiling-comfyui": { "stars": 14, "last_update": "2024-05-22 20:43:07", - "author_account_age_days": 1989 + "author_account_age_days": 2003 }, "https://github.com/alt-key-project/comfyui-dream-project": { - "stars": 68, - "last_update": "2024-05-22 20:51:52", - "author_account_age_days": 655 + "stars": 71, + "last_update": "2024-07-01 05:34:14", + "author_account_age_days": 669 }, "https://github.com/alt-key-project/comfyui-dream-video-batches": { - "stars": 50, - "last_update": "2024-05-22 20:52:05", - "author_account_age_days": 655 + "stars": 52, + "last_update": "2024-07-01 05:37:03", + "author_account_age_days": 669 }, "https://github.com/an90ray/ComfyUI_RErouter_CustomNodes": { "stars": 0, "last_update": "2024-05-22 22:21:00", - "author_account_age_days": 183 + "author_account_age_days": 197 }, "https://github.com/andersxa/comfyui-PromptAttention": { - "stars": 20, - "last_update": "2024-05-22 18:16:30", - "author_account_age_days": 2948 + "stars": 21, + "last_update": "2024-06-20 11:09:25", + "author_account_age_days": 2962 }, "https://github.com/angeloshredder/StableCascadeResizer": { - "stars": 1, + "stars": 2, "last_update": "2024-05-23 00:12:55", - "author_account_age_days": 1823 + "author_account_age_days": 1837 }, "https://github.com/ansonkao/comfyui-geometry": { "stars": 7, "last_update": "2024-06-14 09:03:19", - "author_account_age_days": 340 + "author_account_age_days": 354 }, "https://github.com/antrobot1234/antrobots-comfyUI-nodepack": { "stars": 9, "last_update": "2024-05-28 14:44:16", - "author_account_age_days": 2857 + "author_account_age_days": 2871 }, "https://github.com/aria1th/ComfyUI-LogicUtils": { - "stars": 19, + "stars": 20, "last_update": "2024-05-23 01:27:16", - "author_account_age_days": 2340 + "author_account_age_days": 2354 + }, + "https://github.com/asagi4/ComfyUI-Adaptive-Guidance": { + "stars": 4, + "last_update": "2024-07-03 09:52:03", + "author_account_age_days": 449 }, "https://github.com/asagi4/ComfyUI-CADS": { - "stars": 32, + "stars": 33, "last_update": "2024-05-23 18:14:56", - "author_account_age_days": 435 + "author_account_age_days": 449 }, "https://github.com/asagi4/comfyui-prompt-control": { - "stars": 156, - "last_update": "2024-06-16 19:07:32", - "author_account_age_days": 435 + "stars": 165, + "last_update": "2024-06-20 13:48:26", + "author_account_age_days": 449 }, "https://github.com/asagi4/comfyui-utility-nodes": { "stars": 7, "last_update": "2024-05-25 11:40:49", - "author_account_age_days": 435 + "author_account_age_days": 449 }, "https://github.com/aszc-dev/ComfyUI-CoreMLSuite": { - "stars": 87, - "last_update": "2024-05-22 21:23:52", - "author_account_age_days": 2722 + "stars": 94, + "last_update": "2024-06-28 13:54:04", + "author_account_age_days": 2736 }, "https://github.com/atmaranto/ComfyUI-SaveAsScript": { - "stars": 44, + "stars": 49, "last_update": "2024-06-14 09:01:17", - "author_account_age_days": 2343 + "author_account_age_days": 2357 }, "https://github.com/audioscavenger/ComfyUI-Thumbnails": { - "stars": 4, + "stars": 10, "last_update": "2024-06-07 07:19:30", - "author_account_age_days": 4115 + "author_account_age_days": 4129 }, "https://github.com/audioscavenger/save-image-extended-comfyui": { - "stars": 16, - "last_update": "2024-06-18 04:57:11", - "author_account_age_days": 4115 + "stars": 20, + "last_update": "2024-06-27 18:28:01", + "author_account_age_days": 4129 }, "https://github.com/avatechai/avatar-graph-comfyui": { - "stars": 214, + "stars": 217, "last_update": "2024-05-22 21:14:14", - "author_account_age_days": 849 + "author_account_age_days": 863 }, "https://github.com/aws-samples/comfyui-llm-node-for-amazon-bedrock": { - "stars": 4, + "stars": 5, "last_update": "2024-06-12 15:04:39", - "author_account_age_days": 3553 + "author_account_age_days": 3567 }, "https://github.com/azure-dragon-ai/ComfyUI-ClipScore-Nodes": { "stars": 2, "last_update": "2024-05-22 23:16:28", - "author_account_age_days": 296 + "author_account_age_days": 310 }, "https://github.com/badayvedat/ComfyUI-fal-Connector": { "stars": 12, - "last_update": "2024-06-19 01:21:44", - "author_account_age_days": 1765 + "last_update": "2024-07-01 07:54:24", + "author_account_age_days": 1779 }, "https://github.com/badjeff/comfyui_lora_tag_loader": { - "stars": 40, + "stars": 43, "last_update": "2024-05-22 20:40:03", - "author_account_age_days": 5357 + "author_account_age_days": 5371 }, "https://github.com/baicai99/ComfyUI-FrameSkipping": { - "stars": 5, + "stars": 6, "last_update": "2024-06-18 10:25:55", - "author_account_age_days": 826 + "author_account_age_days": 840 }, "https://github.com/banodoco/steerable-motion": { - "stars": 739, + "stars": 748, "last_update": "2024-06-15 23:01:54", - "author_account_age_days": 396 + "author_account_age_days": 410 }, "https://github.com/bash-j/mikey_nodes": { - "stars": 79, + "stars": 82, "last_update": "2024-06-15 10:31:20", - "author_account_age_days": 4182 + "author_account_age_days": 4196 }, "https://github.com/bedovyy/ComfyUI_NAIDGenerator": { - "stars": 17, + "stars": 18, "last_update": "2024-06-14 09:04:39", - "author_account_age_days": 357 + "author_account_age_days": 371 }, "https://github.com/bilal-arikan/ComfyUI_TextAssets": { "stars": 2, "last_update": "2024-05-22 23:23:50", - "author_account_age_days": 3502 + "author_account_age_days": 3516 }, "https://github.com/bitaffinity/ComfyUI_HF_Inference": { "stars": 0, "last_update": "2024-06-14 10:23:29", - "author_account_age_days": 51 + "author_account_age_days": 65 }, "https://github.com/blepping/ComfyUI-bleh": { "stars": 31, "last_update": "2024-05-22 23:17:49", - "author_account_age_days": 149 + "author_account_age_days": 163 }, "https://github.com/blepping/ComfyUI-sonar": { "stars": 31, "last_update": "2024-05-22 23:18:26", - "author_account_age_days": 149 + "author_account_age_days": 163 }, "https://github.com/blepping/comfyui_jankhidiffusion": { - "stars": 88, + "stars": 92, "last_update": "2024-05-22 23:18:40", - "author_account_age_days": 149 + "author_account_age_days": 163 }, "https://github.com/blueraincoatli/comfyUI_SillyNodes": { "stars": 3, "last_update": "2024-06-09 13:30:57", - "author_account_age_days": 307 + "author_account_age_days": 321 }, "https://github.com/bmad4ever/ComfyUI-Bmad-DirtyUndoRedo": { "stars": 50, "last_update": "2024-05-22 18:11:51", - "author_account_age_days": 3531 + "author_account_age_days": 3545 }, "https://github.com/bmad4ever/comfyui_ab_samplercustom": { "stars": 5, - "last_update": "2024-05-22 18:12:18", - "author_account_age_days": 3531 + "last_update": "2024-06-21 00:02:39", + "author_account_age_days": 3545 }, "https://github.com/bmad4ever/comfyui_bmad_nodes": { - "stars": 47, + "stars": 48, "last_update": "2024-06-13 10:42:09", - "author_account_age_days": 3531 + "author_account_age_days": 3545 }, "https://github.com/bmad4ever/comfyui_lists_cartesian_product": { - "stars": 2, + "stars": 3, "last_update": "2024-05-22 20:18:07", - "author_account_age_days": 3531 + "author_account_age_days": 3545 }, "https://github.com/bmad4ever/comfyui_quilting": { "stars": 3, "last_update": "2024-06-18 01:23:37", - "author_account_age_days": 3531 + "author_account_age_days": 3545 }, "https://github.com/bmad4ever/comfyui_wfc_like": { "stars": 5, "last_update": "2024-06-02 23:06:37", - "author_account_age_days": 3531 + "author_account_age_days": 3545 }, "https://github.com/bobmagicii/comfykit-custom-nodes": { "stars": 1, "last_update": "2024-06-04 20:04:00", - "author_account_age_days": 4739 + "author_account_age_days": 4753 }, "https://github.com/bradsec/ComfyUI_ResolutionSelector": { - "stars": 7, - "last_update": "2024-05-22 20:44:31", - "author_account_age_days": 3651 + "stars": 8, + "last_update": "2024-06-30 03:38:12", + "author_account_age_days": 3665 }, "https://github.com/braintacles/braintacles-comfyui-nodes": { "stars": 1, "last_update": "2024-05-23 06:06:16", - "author_account_age_days": 426 + "author_account_age_days": 440 }, "https://github.com/brianfitzgerald/style_aligned_comfy": { - "stars": 246, + "stars": 258, "last_update": "2024-05-30 14:23:40", - "author_account_age_days": 4234 + "author_account_age_days": 4248 }, "https://github.com/bronkula/comfyui-fitsize": { "stars": 32, "last_update": "2024-05-22 21:32:34", - "author_account_age_days": 5150 + "author_account_age_days": 5164 }, "https://github.com/bruefire/ComfyUI-SeqImageLoader": { "stars": 28, "last_update": "2024-06-08 15:48:49", - "author_account_age_days": 2360 + "author_account_age_days": 2374 }, "https://github.com/budihartono/comfyui_otonx_nodes": { "stars": 1, "last_update": "2024-05-25 04:10:08", - "author_account_age_days": 4681 + "author_account_age_days": 4695 }, "https://github.com/bvhari/ComfyUI_ImageProcessing": { - "stars": 16, + "stars": 18, "last_update": "2024-05-22 18:08:40", - "author_account_age_days": 1169 + "author_account_age_days": 1183 }, "https://github.com/bvhari/ComfyUI_LatentToRGB": { "stars": 11, - "last_update": "2024-05-22 18:08:53", - "author_account_age_days": 1169 + "last_update": "2024-06-23 11:37:10", + "author_account_age_days": 1183 }, "https://github.com/bvhari/ComfyUI_PerpWeight": { - "stars": 10, + "stars": 12, "last_update": "2024-05-22 18:09:06", - "author_account_age_days": 1169 + "author_account_age_days": 1183 }, "https://github.com/bvhari/ComfyUI_SUNoise": { - "stars": 3, - "last_update": "2024-05-22 18:09:19", - "author_account_age_days": 1169 + "stars": 6, + "last_update": "2024-06-23 11:27:31", + "author_account_age_days": 1183 }, "https://github.com/cdb-boop/ComfyUI-Bringing-Old-Photos-Back-to-Life": { - "stars": 18, - "last_update": "2024-05-23 00:09:32", - "author_account_age_days": 1199 + "stars": 240, + "last_update": "2024-06-21 15:05:26", + "author_account_age_days": 1213 }, "https://github.com/cdb-boop/comfyui-image-round": { "stars": 0, "last_update": "2024-05-23 00:09:02", - "author_account_age_days": 1199 + "author_account_age_days": 1213 + }, + "https://github.com/celsojr2013/comfyui_jamworks_client": { + "stars": 0, + "last_update": "2024-06-23 12:35:44", + "author_account_age_days": 3407 + }, + "https://github.com/celsojr2013/comfyui_simpletools": { + "stars": 2, + "last_update": "2024-06-22 11:35:40", + "author_account_age_days": 3407 }, "https://github.com/cerspense/ComfyUI_cspnodes": { "stars": 24, - "last_update": "2024-06-14 07:12:08", - "author_account_age_days": 2676 + "last_update": "2024-06-27 22:39:06", + "author_account_age_days": 2690 }, "https://github.com/ceruleandeep/ComfyUI-LLaVA-Captioner": { - "stars": 76, + "stars": 78, "last_update": "2024-05-22 22:17:55", - "author_account_age_days": 1148 + "author_account_age_days": 1162 }, "https://github.com/chakib-belgaid/ComfyUI-autosize": { "stars": 0, "last_update": "2024-06-14 07:13:20", - "author_account_age_days": 3831 + "author_account_age_days": 3845 }, "https://github.com/chakib-belgaid/Comfyui_Prompt_styler": { "stars": 0, - "last_update": "2024-06-14 09:04:45", - "author_account_age_days": 3831 + "last_update": "2024-07-01 12:40:52", + "author_account_age_days": 3845 }, "https://github.com/chandlergis/ComfyUI-IMG_Query": { "stars": 1, "last_update": "2024-05-23 01:25:57", - "author_account_age_days": 351 + "author_account_age_days": 365 }, "https://github.com/chandlergis/ComfyUI_EmojiOverlay": { "stars": 0, "last_update": "2024-06-14 09:05:03", - "author_account_age_days": 351 + "author_account_age_days": 365 }, "https://github.com/chaojie/ComfyUI-AniPortrait": { - "stars": 226, + "stars": 228, "last_update": "2024-05-22 22:26:03", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-CameraCtrl-Wrapper": { - "stars": 15, + "stars": 16, "last_update": "2024-06-14 09:07:23", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-Champ": { "stars": 19, "last_update": "2024-05-22 22:26:47", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-DragAnything": { "stars": 66, "last_update": "2024-06-14 10:23:53", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-DragNUWA": { - "stars": 358, + "stars": 361, "last_update": "2024-06-14 10:25:01", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-DynamiCrafter": { - "stars": 108, + "stars": 111, "last_update": "2024-06-14 10:23:59", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-EasyAnimate": { "stars": 39, "last_update": "2024-05-22 22:24:00", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-Gemma": { "stars": 5, "last_update": "2024-05-22 22:27:47", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-I2VGEN-XL": { "stars": 27, "last_update": "2024-06-14 09:06:10", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-Img2Img-Turbo": { "stars": 36, "last_update": "2024-05-22 22:26:30", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-LaVIT": { "stars": 8, "last_update": "2024-06-14 10:27:44", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-LightGlue": { "stars": 48, "last_update": "2024-01-20 16:53:51", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-Moore-AnimateAnyone": { "stars": 201, "last_update": "2024-06-10 20:16:06", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-Motion-Vector-Extractor": { - "stars": 0, + "stars": 1, "last_update": "2024-06-14 10:26:15", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-MotionCtrl": { - "stars": 125, + "stars": 128, "last_update": "2024-06-14 10:26:02", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-MotionCtrl-SVD": { - "stars": 78, + "stars": 79, "last_update": "2024-06-14 10:26:30", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-MuseTalk": { - "stars": 139, + "stars": 148, "last_update": "2024-05-22 22:25:07", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-MuseV": { - "stars": 122, + "stars": 123, "last_update": "2024-05-22 22:25:31", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-Open-Sora": { - "stars": 86, + "stars": 87, "last_update": "2024-05-22 22:26:59", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-Open-Sora-Plan": { - "stars": 48, + "stars": 49, "last_update": "2024-05-29 16:15:10", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-Panda3d": { "stars": 13, "last_update": "2024-06-14 10:28:47", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-Pymunk": { "stars": 16, "last_update": "2024-06-14 12:02:32", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-RAFT": { "stars": 25, "last_update": "2024-06-14 11:02:00", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-SimDA": { "stars": 13, "last_update": "2024-06-14 12:02:39", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-Trajectory": { "stars": 5, "last_update": "2024-05-22 22:27:12", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-Video-Editing-X-Attention": { "stars": 17, "last_update": "2024-06-14 10:28:16", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI-dust3r": { - "stars": 14, + "stars": 15, "last_update": "2024-05-22 22:27:33", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaojie/ComfyUI_StreamingT2V": { - "stars": 23, + "stars": 25, "last_update": "2024-06-14 10:26:21", - "author_account_age_days": 4828 + "author_account_age_days": 4842 }, "https://github.com/chaosaiart/Chaosaiart-Nodes": { "stars": 47, "last_update": "2024-05-27 10:55:18", - "author_account_age_days": 328 + "author_account_age_days": 342 }, "https://github.com/chenpx976/ComfyUI-RunRunRun": { "stars": 0, "last_update": "2024-05-23 01:19:37", - "author_account_age_days": 3410 + "author_account_age_days": 3424 }, "https://github.com/chesnokovivan/ComfyUI-Novakid": { "stars": 0, "last_update": "2024-06-10 20:15:56", - "author_account_age_days": 1524 + "author_account_age_days": 1538 }, "https://github.com/chflame163/ComfyUI_FaceSimilarity": { - "stars": 8, + "stars": 11, "last_update": "2024-05-23 12:48:18", - "author_account_age_days": 439 + "author_account_age_days": 453 }, "https://github.com/chflame163/ComfyUI_LayerStyle": { - "stars": 615, - "last_update": "2024-06-17 12:12:21", - "author_account_age_days": 439 + "stars": 670, + "last_update": "2024-06-29 06:38:45", + "author_account_age_days": 453 }, "https://github.com/chflame163/ComfyUI_MSSpeech_TTS": { - "stars": 22, + "stars": 23, "last_update": "2024-05-25 02:39:56", - "author_account_age_days": 439 + "author_account_age_days": 453 }, "https://github.com/chflame163/ComfyUI_WordCloud": { - "stars": 68, + "stars": 70, "last_update": "2024-05-25 02:41:06", - "author_account_age_days": 439 + "author_account_age_days": 453 }, "https://github.com/chibiace/ComfyUI-Chibi-Nodes": { - "stars": 26, + "stars": 29, "last_update": "2024-05-22 21:16:12", - "author_account_age_days": 2844 + "author_account_age_days": 2858 }, "https://github.com/choey/Comfy-Topaz": { - "stars": 23, - "last_update": "2024-06-14 10:59:30", - "author_account_age_days": 5518 + "stars": 26, + "last_update": "2024-06-20 13:52:32", + "author_account_age_days": 5532 }, "https://github.com/chris-the-wiz/EmbeddingsCurveEditor_ComfyUI": { - "stars": 3, - "last_update": "2024-06-19 07:24:33", - "author_account_age_days": 1791 + "stars": 6, + "last_update": "2024-06-29 19:13:44", + "author_account_age_days": 1805 }, "https://github.com/chrisfreilich/virtuoso-nodes": { - "stars": 49, - "last_update": "2024-05-23 01:15:43", - "author_account_age_days": 727 + "stars": 50, + "last_update": "2024-06-30 18:26:54", + "author_account_age_days": 741 }, "https://github.com/chrisgoringe/cg-image-picker": { - "stars": 177, + "stars": 188, "last_update": "2024-06-12 18:50:30", - "author_account_age_days": 4060 + "author_account_age_days": 4074 }, "https://github.com/chrisgoringe/cg-noise": { "stars": 25, "last_update": "2024-06-14 08:10:52", - "author_account_age_days": 4060 + "author_account_age_days": 4074 }, "https://github.com/chrisgoringe/cg-prompt-info": { - "stars": 25, + "stars": 27, "last_update": "2024-05-22 21:07:33", - "author_account_age_days": 4060 + "author_account_age_days": 4074 }, "https://github.com/chrisgoringe/cg-use-everywhere": { - "stars": 329, - "last_update": "2024-06-06 05:23:41", - "author_account_age_days": 4060 + "stars": 349, + "last_update": "2024-07-01 05:43:31", + "author_account_age_days": 4074 }, "https://github.com/chrish-slingshot/CrasHUtils": { "stars": 11, - "last_update": "2024-05-22 21:15:25", - "author_account_age_days": 595 + "last_update": "2024-06-20 12:53:00", + "author_account_age_days": 609 + }, + "https://github.com/christian-byrne/audio-separation-nodes-comfyui": { + "stars": 0, + "last_update": "2024-07-03 10:13:04", + "author_account_age_days": 1357 + }, + "https://github.com/christian-byrne/comfyui-search-navigation": { + "stars": 5, + "last_update": "2024-06-26 04:41:12", + "author_account_age_days": 1357 }, "https://github.com/christian-byrne/img2colors-comfyui-node": { - "stars": 1, - "last_update": "2024-05-25 03:14:52", - "author_account_age_days": 1343 + "stars": 5, + "last_update": "2024-06-24 07:26:35", + "author_account_age_days": 1357 }, "https://github.com/christian-byrne/img2txt-comfyui-nodes": { - "stars": 23, - "last_update": "2024-05-28 14:02:16", - "author_account_age_days": 1343 + "stars": 29, + "last_update": "2024-06-23 22:15:59", + "author_account_age_days": 1357 }, "https://github.com/christian-byrne/size-match-compositing-nodes": { "stars": 2, - "last_update": "2024-06-01 05:49:27", - "author_account_age_days": 1343 + "last_update": "2024-06-23 21:00:23", + "author_account_age_days": 1357 }, "https://github.com/city96/ComfyUI_ColorMod": { - "stars": 39, + "stars": 41, "last_update": "2024-05-22 18:06:19", - "author_account_age_days": 492 + "author_account_age_days": 506 }, "https://github.com/city96/ComfyUI_DiT": { "stars": 2, "last_update": "2024-05-22 18:06:05", - "author_account_age_days": 492 + "author_account_age_days": 506 }, "https://github.com/city96/ComfyUI_ExtraModels": { - "stars": 275, - "last_update": "2024-06-19 08:45:39", - "author_account_age_days": 492 + "stars": 301, + "last_update": "2024-07-02 21:02:55", + "author_account_age_days": 506 }, "https://github.com/city96/ComfyUI_NetDist": { - "stars": 218, + "stars": 233, "last_update": "2024-05-22 18:05:10", - "author_account_age_days": 492 + "author_account_age_days": 506 }, "https://github.com/city96/SD-Advanced-Noise": { - "stars": 18, + "stars": 19, "last_update": "2024-05-22 18:05:35", - "author_account_age_days": 492 + "author_account_age_days": 506 }, "https://github.com/city96/SD-Latent-Interposer": { - "stars": 174, + "stars": 185, "last_update": "2024-06-17 05:27:08", - "author_account_age_days": 492 + "author_account_age_days": 506 }, "https://github.com/city96/SD-Latent-Upscaler": { - "stars": 111, + "stars": 113, "last_update": "2024-05-22 18:05:50", - "author_account_age_days": 492 + "author_account_age_days": 506 }, "https://github.com/civitai/comfy-nodes": { - "stars": 85, - "last_update": "2024-06-17 10:01:06", - "author_account_age_days": 593 + "stars": 87, + "last_update": "2024-06-23 03:35:42", + "author_account_age_days": 607 }, "https://github.com/claussteinmassl/ComfyUI-CS-CustomNodes": { "stars": 1, "last_update": "2024-06-14 09:03:10", - "author_account_age_days": 2695 + "author_account_age_days": 2709 }, "https://github.com/comfyanonymous/ComfyUI": { - "stars": 39239, - "last_update": "2024-06-19 09:22:29", - "author_account_age_days": 544 + "stars": 40948, + "last_update": "2024-07-03 00:22:56", + "author_account_age_days": 558 }, "https://github.com/comfyanonymous/ComfyUI_TensorRT": { - "stars": 281, - "last_update": "2024-06-18 14:23:14", - "author_account_age_days": 544 + "stars": 327, + "last_update": "2024-06-19 21:31:56", + "author_account_age_days": 558 }, "https://github.com/comfyanonymous/ComfyUI_experiments": { - "stars": 133, + "stars": 137, "last_update": "2024-05-22 15:29:49", - "author_account_age_days": 544 + "author_account_age_days": 558 }, "https://github.com/concarne000/ConCarneNode": { "stars": 4, "last_update": "2024-05-22 22:10:18", - "author_account_age_days": 1896 + "author_account_age_days": 1910 }, "https://github.com/conquestace/ComfyUI-ImageUploader": { - "stars": 1, + "stars": 2, "last_update": "2024-05-23 01:25:49", - "author_account_age_days": 4604 + "author_account_age_days": 4618 }, "https://github.com/coolzilj/ComfyUI-LJNodes": { - "stars": 51, + "stars": 59, "last_update": "2024-06-15 01:57:32", - "author_account_age_days": 4658 + "author_account_age_days": 4672 }, "https://github.com/coolzilj/ComfyUI-Photopea": { - "stars": 56, + "stars": 60, "last_update": "2024-06-14 08:10:57", - "author_account_age_days": 4658 + "author_account_age_days": 4672 }, "https://github.com/coreyryanhanson/ComfyQR": { "stars": 50, "last_update": "2024-06-14 09:01:36", - "author_account_age_days": 3051 + "author_account_age_days": 3065 }, "https://github.com/coreyryanhanson/ComfyQR-scanning-nodes": { "stars": 8, "last_update": "2024-06-14 09:02:46", - "author_account_age_days": 3051 + "author_account_age_days": 3065 }, "https://github.com/cozymantis/cozy-utils-comfyui-nodes": { "stars": 3, "last_update": "2024-05-23 00:10:45", - "author_account_age_days": 103 + "author_account_age_days": 117 }, "https://github.com/cozymantis/human-parser-comfyui-node": { - "stars": 47, + "stars": 54, "last_update": "2024-05-23 00:10:21", - "author_account_age_days": 103 + "author_account_age_days": 117 }, "https://github.com/cozymantis/pose-generator-comfyui-node": { - "stars": 26, + "stars": 29, "last_update": "2024-05-23 00:10:33", - "author_account_age_days": 103 + "author_account_age_days": 117 }, "https://github.com/crystian/ComfyUI-Crystools": { - "stars": 471, - "last_update": "2024-06-07 04:43:29", - "author_account_age_days": 4112 + "stars": 501, + "last_update": "2024-07-01 03:24:20", + "author_account_age_days": 4126 }, "https://github.com/crystian/ComfyUI-Crystools-save": { "stars": 29, - "last_update": "2024-05-22 22:20:15", - "author_account_age_days": 4112 + "last_update": "2024-07-01 01:19:58", + "author_account_age_days": 4126 }, "https://github.com/cubiq/ComfyUI_FaceAnalysis": { - "stars": 207, + "stars": 225, "last_update": "2024-06-14 08:08:35", - "author_account_age_days": 5006 + "author_account_age_days": 5020 }, "https://github.com/cubiq/ComfyUI_IPAdapter_plus": { - "stars": 2993, - "last_update": "2024-06-09 10:11:42", - "author_account_age_days": 5006 + "stars": 3146, + "last_update": "2024-06-28 11:03:36", + "author_account_age_days": 5020 }, "https://github.com/cubiq/ComfyUI_InstantID": { - "stars": 893, + "stars": 949, "last_update": "2024-06-14 09:03:05", - "author_account_age_days": 5006 + "author_account_age_days": 5020 }, "https://github.com/cubiq/ComfyUI_SimpleMath": { - "stars": 15, + "stars": 16, "last_update": "2024-06-14 09:02:50", - "author_account_age_days": 5006 + "author_account_age_days": 5020 }, "https://github.com/cubiq/ComfyUI_essentials": { - "stars": 318, - "last_update": "2024-06-15 08:07:12", - "author_account_age_days": 5006 + "stars": 346, + "last_update": "2024-07-01 12:32:41", + "author_account_age_days": 5020 }, "https://github.com/cubiq/PuLID_ComfyUI": { - "stars": 400, - "last_update": "2024-06-14 07:11:56", - "author_account_age_days": 5006 + "stars": 422, + "last_update": "2024-06-25 06:37:25", + "author_account_age_days": 5020 }, "https://github.com/cuongloveit/comfy_http_request": { "stars": 0, "last_update": "2024-06-14 11:00:11", - "author_account_age_days": 3247 + "author_account_age_days": 3261 }, "https://github.com/curiousjp/ComfyUI-MaskBatchPermutations": { - "stars": 3, + "stars": 4, "last_update": "2024-05-28 13:09:32", - "author_account_age_days": 1924 + "author_account_age_days": 1938 }, "https://github.com/czcz1024/Comfyui-FaceCompare": { "stars": 0, "last_update": "2024-06-14 07:13:32", - "author_account_age_days": 4229 + "author_account_age_days": 4243 }, "https://github.com/da2el-ai/ComfyUI-d2-size-selector": { - "stars": 1, + "stars": 2, "last_update": "2024-05-23 01:16:17", - "author_account_age_days": 384 + "author_account_age_days": 398 }, "https://github.com/da2el-ai/ComfyUI-d2-steps": { - "stars": 4, + "stars": 5, "last_update": "2024-05-23 01:16:06", - "author_account_age_days": 384 + "author_account_age_days": 398 }, "https://github.com/dagthomas/comfyui_dagthomas": { - "stars": 72, + "stars": 83, "last_update": "2024-06-16 22:39:37", - "author_account_age_days": 4066 + "author_account_age_days": 4080 }, "https://github.com/daniabib/ComfyUI_ProPainter_Nodes": { - "stars": 143, - "last_update": "2024-06-14 11:00:17", - "author_account_age_days": 2399 + "stars": 161, + "last_update": "2024-06-20 13:51:16", + "author_account_age_days": 2413 }, "https://github.com/daniel-lewis-ab/ComfyUI-Llama": { - "stars": 25, - "last_update": "2024-06-14 08:08:32", - "author_account_age_days": 3346 + "stars": 26, + "last_update": "2024-06-29 19:55:42", + "author_account_age_days": 3360 }, "https://github.com/daniel-lewis-ab/ComfyUI-TTS": { - "stars": 11, + "stars": 12, "last_update": "2024-06-14 08:09:49", - "author_account_age_days": 3346 + "author_account_age_days": 3360 }, "https://github.com/darkpixel/darkprompts": { "stars": 6, "last_update": "2024-05-23 19:48:02", - "author_account_age_days": 5319 + "author_account_age_days": 5333 }, "https://github.com/dave-palt/comfyui_DSP_imagehelpers": { "stars": 0, "last_update": "2024-05-22 23:12:11", - "author_account_age_days": 153 + "author_account_age_days": 167 }, "https://github.com/daxcay/ComfyUI-DRMN": { - "stars": 12, - "last_update": "2024-06-16 07:41:11", - "author_account_age_days": 90 + "stars": 18, + "last_update": "2024-07-02 14:58:04", + "author_account_age_days": 104 }, "https://github.com/daxcay/ComfyUI-DataSet": { - "stars": 12, - "last_update": "2024-06-16 07:41:11", - "author_account_age_days": 90 + "stars": 18, + "last_update": "2024-07-02 14:58:04", + "author_account_age_days": 104 }, "https://github.com/daxcay/ComfyUI-JDCN": { - "stars": 59, - "last_update": "2024-06-13 15:10:48", - "author_account_age_days": 90 + "stars": 62, + "last_update": "2024-06-25 10:16:30", + "author_account_age_days": 104 }, "https://github.com/daxcay/ComfyUI-NODEJS": { - "stars": 4, + "stars": 5, "last_update": "2024-06-13 14:30:45", - "author_account_age_days": 90 + "author_account_age_days": 104 }, "https://github.com/daxthin/DZ-FaceDetailer": { - "stars": 100, + "stars": 102, "last_update": "2024-06-17 10:00:30", - "author_account_age_days": 1226 + "author_account_age_days": 1240 }, "https://github.com/dchatel/comfyui_facetools": { - "stars": 43, - "last_update": "2024-06-17 15:45:08", - "author_account_age_days": 4530 + "stars": 45, + "last_update": "2024-06-26 10:26:43", + "author_account_age_days": 4544 }, "https://github.com/denfrost/Den_ComfyUI_Workflow": { - "stars": 1, - "last_update": "2024-06-14 08:57:51", - "author_account_age_days": 3491 + "stars": 4, + "last_update": "2024-06-20 14:57:57", + "author_account_age_days": 3505 }, "https://github.com/deroberon/StableZero123-comfyui": { - "stars": 132, + "stars": 135, "last_update": "2024-05-22 22:09:53", - "author_account_age_days": 5291 + "author_account_age_days": 5305 }, "https://github.com/deroberon/demofusion-comfyui": { "stars": 83, "last_update": "2024-05-22 22:09:42", - "author_account_age_days": 5291 + "author_account_age_days": 5305 }, "https://github.com/dfl/comfyui-clip-with-break": { "stars": 9, "last_update": "2024-05-22 23:23:15", - "author_account_age_days": 5969 + "author_account_age_days": 5983 }, "https://github.com/dfl/comfyui-tcd-scheduler": { - "stars": 76, + "stars": 79, "last_update": "2024-05-22 23:23:28", - "author_account_age_days": 5969 + "author_account_age_days": 5983 }, "https://github.com/diStyApps/ComfyUI_FrameMaker": { "stars": 10, "last_update": "2024-05-23 00:11:33", - "author_account_age_days": 4199 + "author_account_age_days": 4213 }, "https://github.com/dicksondickson/ComfyUI-Dickson-Nodes": { - "stars": 2, - "last_update": "2024-06-18 01:56:55", - "author_account_age_days": 3986 + "stars": 4, + "last_update": "2024-06-29 21:27:03", + "author_account_age_days": 4000 }, "https://github.com/digitaljohn/comfyui-propost": { - "stars": 103, - "last_update": "2024-05-22 23:24:19", - "author_account_age_days": 4512 + "stars": 107, + "last_update": "2024-07-02 15:28:37", + "author_account_age_days": 4527 }, "https://github.com/dimtoneff/ComfyUI-PixelArt-Detector": { - "stars": 162, + "stars": 167, "last_update": "2024-06-14 08:58:27", - "author_account_age_days": 3409 + "author_account_age_days": 3423 }, "https://github.com/diontimmer/ComfyUI-Vextra-Nodes": { - "stars": 60, - "last_update": "2024-05-22 17:55:21", - "author_account_age_days": 4765 + "stars": 61, + "last_update": "2024-06-20 16:48:44", + "author_account_age_days": 4779 }, "https://github.com/discopixel-studio/comfyui-discopixel": { "stars": 7, "last_update": "2024-06-14 09:03:19", - "author_account_age_days": 340 + "author_account_age_days": 354 }, "https://github.com/discus0434/comfyui-aesthetic-predictor-v2-5": { - "stars": 4, + "stars": 5, "last_update": "2024-06-14 08:12:05", - "author_account_age_days": 1465 + "author_account_age_days": 1479 }, "https://github.com/discus0434/comfyui-caching-embeddings": { "stars": 1, "last_update": "2024-06-14 08:59:36", - "author_account_age_days": 1465 + "author_account_age_days": 1479 }, "https://github.com/djbielejeski/a-person-mask-generator": { - "stars": 228, + "stars": 238, "last_update": "2024-06-15 04:06:44", - "author_account_age_days": 4278 + "author_account_age_days": 4292 }, "https://github.com/dmMaze/sketch2manga": { - "stars": 24, - "last_update": "2024-06-16 14:10:01", - "author_account_age_days": 1844 + "stars": 26, + "last_update": "2024-06-30 03:27:55", + "author_account_age_days": 1858 }, "https://github.com/dmarx/ComfyUI-AudioReactive": { "stars": 10, "last_update": "2024-05-22 22:12:53", - "author_account_age_days": 4499 + "author_account_age_days": 4513 }, "https://github.com/dmarx/ComfyUI-Keyframed": { "stars": 81, - "last_update": "2024-05-22 22:12:50", - "author_account_age_days": 4499 + "last_update": "2024-07-01 01:41:23", + "author_account_age_days": 4513 }, "https://github.com/drago87/ComfyUI_Dragos_Nodes": { "stars": 3, "last_update": "2024-05-22 21:32:15", - "author_account_age_days": 3764 + "author_account_age_days": 3778 }, "https://github.com/drustan-hawk/primitive-types": { "stars": 5, - "last_update": "2024-05-22 21:23:12", - "author_account_age_days": 284 + "last_update": "2024-06-30 06:10:23", + "author_account_age_days": 298 }, "https://github.com/e7mac/ComfyUI-ShadertoyGL": { "stars": 2, - "last_update": "2024-05-23 01:09:41", - "author_account_age_days": 4798 + "last_update": "2024-06-20 14:52:42", + "author_account_age_days": 4812 }, "https://github.com/ealkanat/comfyui_easy_padding": { - "stars": 12, + "stars": 13, "last_update": "2024-05-22 21:58:52", - "author_account_age_days": 2458 + "author_account_age_days": 2472 }, "https://github.com/edenartlab/eden_comfy_pipelines": { "stars": 40, - "last_update": "2024-06-06 21:49:00", - "author_account_age_days": 267 + "last_update": "2024-06-30 15:54:17", + "author_account_age_days": 281 }, "https://github.com/evanspearman/ComfyMath": { - "stars": 52, + "stars": 53, "last_update": "2023-08-27 03:29:04", - "author_account_age_days": 4233 + "author_account_age_days": 4247 }, "https://github.com/exdysa/comfyui-selector": { - "stars": 1, - "last_update": "2024-06-19 05:54:30", - "author_account_age_days": 990 + "stars": 2, + "last_update": "2024-07-03 03:12:15", + "author_account_age_days": 1004 + }, + "https://github.com/fablestudio/ComfyUI-Showrunner-Utils": { + "stars": 0, + "last_update": "2024-06-24 14:27:05", + "author_account_age_days": 2057 }, "https://github.com/failfa-st/failfast-comfyui-extensions": { - "stars": 128, + "stars": 129, "last_update": "2024-06-17 10:01:12", - "author_account_age_days": 268 + "author_account_age_days": 282 }, "https://github.com/fexli/fexli-util-node-comfyui": { "stars": 3, "last_update": "2024-05-22 21:27:36", - "author_account_age_days": 1554 + "author_account_age_days": 1568 }, "https://github.com/fexploit/ComfyUI-AutoLabel": { - "stars": 4, + "stars": 6, "last_update": "2024-06-14 08:09:41", - "author_account_age_days": 5039 + "author_account_age_days": 5053 }, "https://github.com/fexploit/ComfyUI-AutoTrimBG": { "stars": 2, "last_update": "2024-05-24 20:38:15", - "author_account_age_days": 5039 + "author_account_age_days": 5053 }, "https://github.com/fexploit/ComfyUI-Classifier": { "stars": 1, "last_update": "2024-06-14 16:58:31", - "author_account_age_days": 5039 + "author_account_age_days": 5053 }, "https://github.com/filipemeneses/comfy_pixelization": { - "stars": 28, + "stars": 30, "last_update": "2024-05-22 20:59:16", - "author_account_age_days": 3471 + "author_account_age_days": 3485 }, "https://github.com/filliptm/ComfyUI_Fill-Nodes": { - "stars": 116, - "last_update": "2024-06-09 08:42:25", - "author_account_age_days": 1731 + "stars": 119, + "last_update": "2024-06-23 23:33:10", + "author_account_age_days": 1745 }, "https://github.com/florestefano1975/ComfyUI-HiDiffusion": { - "stars": 131, + "stars": 135, "last_update": "2024-05-22 00:33:06", - "author_account_age_days": 188 + "author_account_age_days": 202 }, "https://github.com/florestefano1975/ComfyUI-StabilityAI-Suite": { "stars": 2, "last_update": "2024-06-14 09:05:46", - "author_account_age_days": 188 + "author_account_age_days": 202 }, "https://github.com/florestefano1975/comfyui-portrait-master": { - "stars": 749, - "last_update": "2024-05-22 00:30:41", - "author_account_age_days": 188 + "stars": 770, + "last_update": "2024-06-19 16:30:07", + "author_account_age_days": 202 }, "https://github.com/florestefano1975/comfyui-prompt-composer": { - "stars": 208, + "stars": 214, "last_update": "2024-05-22 00:34:06", - "author_account_age_days": 188 + "author_account_age_days": 202 }, "https://github.com/flowtyone/ComfyUI-Flowty-CRM": { - "stars": 123, + "stars": 128, "last_update": "2024-06-14 10:23:09", - "author_account_age_days": 268 + "author_account_age_days": 282 }, "https://github.com/flowtyone/ComfyUI-Flowty-LDSR": { - "stars": 162, + "stars": 165, "last_update": "2024-06-14 09:04:51", - "author_account_age_days": 268 + "author_account_age_days": 282 }, "https://github.com/flowtyone/ComfyUI-Flowty-TripoSR": { - "stars": 356, + "stars": 363, "last_update": "2024-06-16 00:53:22", - "author_account_age_days": 268 + "author_account_age_days": 282 }, "https://github.com/flyingshutter/As_ComfyUI_CustomNodes": { - "stars": 7, + "stars": 8, "last_update": "2024-05-22 18:07:19", - "author_account_age_days": 3490 + "author_account_age_days": 3504 }, "https://github.com/fmatray/ComfyUI_BattlemapGrid": { "stars": 0, "last_update": "2024-06-05 22:35:06", - "author_account_age_days": 3616 + "author_account_age_days": 3630 }, "https://github.com/fofr/ComfyUI-HyperSDXL1StepUnetScheduler": { - "stars": 10, - "last_update": "2024-05-23 01:15:32", - "author_account_age_days": 5102 + "stars": 12, + "last_update": "2024-06-20 11:51:50", + "author_account_age_days": 5116 + }, + "https://github.com/fofr/ComfyUI-Prompter-fofrAI": { + "stars": 29, + "last_update": "2024-06-29 22:10:29", + "author_account_age_days": 5116 + }, + "https://github.com/fofr/comfyui-replicate": { + "stars": 33, + "last_update": "2024-07-02 17:58:30", + "author_account_age_days": 1617 }, "https://github.com/forever22777/comfyui-self-guidance": { "stars": 6, "last_update": "2024-06-14 07:12:02", - "author_account_age_days": 319 + "author_account_age_days": 333 }, "https://github.com/foxtrot-roger/comfyui-rf-nodes": { "stars": 1, "last_update": "2024-05-22 23:09:13", - "author_account_age_days": 2315 + "author_account_age_days": 2329 }, "https://github.com/frankchieng/ComfyUI_Aniportrait": { - "stars": 43, - "last_update": "2024-05-23 00:23:20", - "author_account_age_days": 435 + "stars": 46, + "last_update": "2024-06-26 03:06:51", + "author_account_age_days": 449 }, "https://github.com/frankchieng/ComfyUI_MagicClothing": { - "stars": 408, - "last_update": "2024-05-23 00:23:32", - "author_account_age_days": 435 + "stars": 420, + "last_update": "2024-06-24 07:48:07", + "author_account_age_days": 449 }, "https://github.com/frankchieng/ComfyUI_llm_easyanimiate": { - "stars": 8, - "last_update": "2024-06-14 09:06:05", - "author_account_age_days": 435 + "stars": 9, + "last_update": "2024-06-26 03:13:32", + "author_account_age_days": 449 }, "https://github.com/fsdymy1024/ComfyUI_fsdymy": { - "stars": 2, - "last_update": "2024-05-23 01:21:16", - "author_account_age_days": 2200 + "stars": 6, + "last_update": "2024-07-01 17:58:52", + "author_account_age_days": 2214 }, "https://github.com/gemell1/ComfyUI_GMIC": { "stars": 5, "last_update": "2024-05-22 21:28:51", - "author_account_age_days": 1951 + "author_account_age_days": 1965 }, "https://github.com/get-salt-AI/SaltAI": { - "stars": 52, - "last_update": "2024-05-23 00:54:46", - "author_account_age_days": 111 + "stars": 59, + "last_update": "2024-06-26 00:32:47", + "author_account_age_days": 125 + }, + "https://github.com/get-salt-AI/SaltAI_AudioViz": { + "stars": 10, + "last_update": "2024-06-29 16:16:46", + "author_account_age_days": 125 }, "https://github.com/get-salt-AI/SaltAI_Language_Toolkit": { - "stars": 15, - "last_update": "2024-06-14 09:06:17", - "author_account_age_days": 111 + "stars": 19, + "last_update": "2024-06-25 23:49:29", + "author_account_age_days": 125 }, "https://github.com/get-salt-AI/SaltAI_LlamaIndex": { - "stars": 15, - "last_update": "2024-06-14 09:06:17", - "author_account_age_days": 111 + "stars": 19, + "last_update": "2024-06-25 23:49:29", + "author_account_age_days": 125 }, "https://github.com/ginlov/segment_to_mask_comfyui": { "stars": 1, "last_update": "2024-06-14 10:23:23", - "author_account_age_days": 2006 + "author_account_age_days": 2020 }, "https://github.com/giriss/comfy-image-saver": { - "stars": 143, + "stars": 147, "last_update": "2024-05-22 20:40:55", - "author_account_age_days": 4233 + "author_account_age_days": 4247 }, "https://github.com/githubYiheng/ComfyUI_Change_IMAGE_BOREDER": { "stars": 0, "last_update": "2024-05-23 01:20:09", - "author_account_age_days": 3898 + "author_account_age_days": 3912 }, "https://github.com/githubYiheng/ComfyUI_GetFileNameFromURL": { "stars": 0, "last_update": "2024-05-23 01:19:47", - "author_account_age_days": 3898 + "author_account_age_days": 3912 }, "https://github.com/githubYiheng/comfyui_kmeans_filter": { "stars": 0, "last_update": "2024-06-14 09:01:24", - "author_account_age_days": 3898 + "author_account_age_days": 3912 }, "https://github.com/githubYiheng/comfyui_meanshift_filter": { "stars": 0, "last_update": "2024-06-14 10:59:43", - "author_account_age_days": 3898 + "author_account_age_days": 3912 }, "https://github.com/githubYiheng/comfyui_private_postprocessor": { "stars": 0, "last_update": "2024-06-14 08:09:39", - "author_account_age_days": 3898 + "author_account_age_days": 3912 }, "https://github.com/glibsonoran/Plush-for-ComfyUI": { - "stars": 104, - "last_update": "2024-06-19 00:05:03", - "author_account_age_days": 2492 + "stars": 110, + "last_update": "2024-06-29 18:03:46", + "author_account_age_days": 2506 }, "https://github.com/glifxyz/ComfyUI-GlifNodes": { - "stars": 7, - "last_update": "2024-06-19 08:09:46", - "author_account_age_days": 568 + "stars": 10, + "last_update": "2024-07-02 12:56:24", + "author_account_age_days": 582 }, "https://github.com/glowcone/comfyui-base64-to-image": { "stars": 8, "last_update": "2024-06-14 09:01:12", - "author_account_age_days": 3740 + "author_account_age_days": 3754 }, "https://github.com/godspede/ComfyUI_Substring": { "stars": 0, - "last_update": "2024-05-22 23:15:48", - "author_account_age_days": 3108 + "last_update": "2024-07-01 01:05:38", + "author_account_age_days": 3122 }, "https://github.com/gokayfem/ComfyUI-Depth-Visualization": { - "stars": 48, + "stars": 49, "last_update": "2024-05-21 00:37:05", - "author_account_age_days": 1052 + "author_account_age_days": 1066 }, "https://github.com/gokayfem/ComfyUI-Dream-Interpreter": { - "stars": 67, + "stars": 66, "last_update": "2024-05-21 00:36:50", - "author_account_age_days": 1052 + "author_account_age_days": 1066 }, "https://github.com/gokayfem/ComfyUI-Texture-Simple": { - "stars": 29, + "stars": 30, "last_update": "2024-05-21 00:19:53", - "author_account_age_days": 1052 + "author_account_age_days": 1066 }, "https://github.com/gokayfem/ComfyUI_VLM_nodes": { - "stars": 273, + "stars": 295, "last_update": "2024-06-02 10:23:55", - "author_account_age_days": 1052 + "author_account_age_days": 1066 }, "https://github.com/gonzalu/ComfyUI_YFG_Comical": { - "stars": 13, - "last_update": "2024-06-14 01:34:14", - "author_account_age_days": 2456 + "stars": 14, + "last_update": "2024-07-02 02:05:08", + "author_account_age_days": 2470 }, "https://github.com/griptape-ai/ComfyUI-Griptape": { - "stars": 20, - "last_update": "2024-06-19 01:55:36", - "author_account_age_days": 515 + "stars": 42, + "last_update": "2024-07-03 02:19:12", + "author_account_age_days": 529 }, "https://github.com/guill/abracadabra-comfyui": { "stars": 1, "last_update": "2024-06-14 08:12:07", - "author_account_age_days": 4188 + "author_account_age_days": 4202 }, "https://github.com/guoyk93/yk-node-suite-comfyui": { "stars": 10, "last_update": "2024-06-17 10:00:36", - "author_account_age_days": 1484 + "author_account_age_days": 1498 }, "https://github.com/hackkhai/ComfyUI-Image-Matting": { - "stars": 12, - "last_update": "2024-05-23 00:11:45", - "author_account_age_days": 1846 + "stars": 14, + "last_update": "2024-06-20 11:25:12", + "author_account_age_days": 1860 }, "https://github.com/haohaocreates/ComfyUI-HH-Image-Selector": { "stars": 0, "last_update": "2024-06-14 08:13:19", - "author_account_age_days": 100 + "author_account_age_days": 114 }, "https://github.com/hay86/ComfyUI_AceNodes": { "stars": 8, - "last_update": "2024-06-05 07:54:59", - "author_account_age_days": 4662 + "last_update": "2024-07-02 08:17:41", + "author_account_age_days": 4676 }, "https://github.com/hay86/ComfyUI_DDColor": { - "stars": 1, + "stars": 2, "last_update": "2024-06-14 08:12:13", - "author_account_age_days": 4662 + "author_account_age_days": 4676 }, "https://github.com/hay86/ComfyUI_Dreamtalk": { - "stars": 7, - "last_update": "2024-06-14 09:02:55", - "author_account_age_days": 4662 + "stars": 8, + "last_update": "2024-07-02 08:15:01", + "author_account_age_days": 4676 + }, + "https://github.com/hay86/ComfyUI_Hallo": { + "stars": 19, + "last_update": "2024-07-02 08:19:11", + "author_account_age_days": 4676 }, "https://github.com/hay86/ComfyUI_MiniCPM-V": { - "stars": 5, - "last_update": "2024-05-29 07:27:09", - "author_account_age_days": 4662 + "stars": 10, + "last_update": "2024-07-02 08:09:38", + "author_account_age_days": 4676 }, "https://github.com/hay86/ComfyUI_OpenVoice": { - "stars": 3, - "last_update": "2024-05-23 00:18:52", - "author_account_age_days": 4662 + "stars": 5, + "last_update": "2024-07-02 08:16:20", + "author_account_age_days": 4676 }, "https://github.com/hayden-fr/ComfyUI-Image-Browsing": { "stars": 2, "last_update": "2024-05-22 20:54:07", - "author_account_age_days": 1932 + "author_account_age_days": 1946 }, "https://github.com/hayden-fr/ComfyUI-Model-Manager": { - "stars": 24, + "stars": 26, "last_update": "2024-05-22 20:53:55", - "author_account_age_days": 1932 + "author_account_age_days": 1946 }, "https://github.com/hben35096/ComfyUI-ToolBox": { "stars": 0, - "last_update": "2024-06-14 08:09:46", - "author_account_age_days": 342 + "last_update": "2024-06-26 18:27:22", + "author_account_age_days": 356 }, "https://github.com/heshengtao/comfyui_LLM_party": { - "stars": 113, - "last_update": "2024-06-19 04:29:30", - "author_account_age_days": 2890 + "stars": 139, + "last_update": "2024-07-03 09:21:42", + "author_account_age_days": 2904 }, "https://github.com/hhhzzyang/Comfyui_Lama": { - "stars": 36, + "stars": 37, "last_update": "2024-05-22 21:13:19", - "author_account_age_days": 502 + "author_account_age_days": 516 }, "https://github.com/hiforce/comfyui-hiforce-plugin": { - "stars": 2, + "stars": 3, "last_update": "2024-06-14 08:13:24", - "author_account_age_days": 1797 + "author_account_age_days": 1811 }, "https://github.com/hinablue/ComfyUI_3dPoseEditor": { - "stars": 112, - "last_update": "2024-05-22 22:23:35", - "author_account_age_days": 5106 + "stars": 124, + "last_update": "2024-06-21 17:38:40", + "author_account_age_days": 5120 }, "https://github.com/holchan/ComfyUI-ModelDownloader": { "stars": 2, "last_update": "2024-06-14 08:59:42", - "author_account_age_days": 1586 + "author_account_age_days": 1600 }, "https://github.com/huagetai/ComfyUI-Gaffer": { - "stars": 33, + "stars": 36, "last_update": "2024-06-19 00:58:38", - "author_account_age_days": 4627 + "author_account_age_days": 4641 }, "https://github.com/huagetai/ComfyUI_LightGradient": { - "stars": 7, + "stars": 8, "last_update": "2024-05-23 01:21:27", - "author_account_age_days": 4627 + "author_account_age_days": 4641 }, "https://github.com/huchenlei/ComfyUI-IC-Light-Native": { - "stars": 372, - "last_update": "2024-06-14 08:58:03", - "author_account_age_days": 2870 + "stars": 402, + "last_update": "2024-06-21 21:49:44", + "author_account_age_days": 2884 }, "https://github.com/huchenlei/ComfyUI-layerdiffuse": { - "stars": 1257, - "last_update": "2024-06-17 15:23:49", - "author_account_age_days": 2870 + "stars": 1281, + "last_update": "2024-06-20 21:41:48", + "author_account_age_days": 2884 }, "https://github.com/huchenlei/ComfyUI-openpose-editor": { - "stars": 13, - "last_update": "2024-06-14 08:58:09", - "author_account_age_days": 2870 + "stars": 25, + "last_update": "2024-06-26 21:15:34", + "author_account_age_days": 2884 }, "https://github.com/huchenlei/ComfyUI_DanTagGen": { - "stars": 49, - "last_update": "2024-06-14 08:58:15", - "author_account_age_days": 2870 + "stars": 50, + "last_update": "2024-06-21 21:46:47", + "author_account_age_days": 2884 }, "https://github.com/huchenlei/ComfyUI_densediffusion": { - "stars": 57, + "stars": 82, "last_update": "2024-06-11 00:39:28", - "author_account_age_days": 2870 + "author_account_age_days": 2884 }, "https://github.com/huchenlei/ComfyUI_omost": { - "stars": 294, - "last_update": "2024-06-14 12:45:52", - "author_account_age_days": 2870 + "stars": 338, + "last_update": "2024-06-26 21:16:52", + "author_account_age_days": 2884 }, "https://github.com/hughescr/ComfyUI-OpenPose-Keypoint-Extractor": { "stars": 6, "last_update": "2024-06-14 09:04:25", - "author_account_age_days": 5635 + "author_account_age_days": 5649 }, "https://github.com/humgate/simplecomfy": { "stars": 0, "last_update": "2024-06-14 08:58:21", - "author_account_age_days": 1361 + "author_account_age_days": 1375 }, "https://github.com/hustille/ComfyUI_Fooocus_KSampler": { - "stars": 58, + "stars": 59, "last_update": "2024-05-22 20:39:48", - "author_account_age_days": 434 + "author_account_age_days": 448 }, "https://github.com/hustille/ComfyUI_hus_utils": { "stars": 6, "last_update": "2024-05-22 20:39:34", - "author_account_age_days": 434 + "author_account_age_days": 448 + }, + "https://github.com/hwhaocool/ComfyUI-Select-Any": { + "stars": 1, + "last_update": "2024-06-27 14:00:28", + "author_account_age_days": 2897 }, "https://github.com/hylarucoder/ComfyUI-Eagle-PNGInfo": { "stars": 7, - "last_update": "2024-06-17 10:01:00", - "author_account_age_days": 3908 + "last_update": "2024-06-28 04:43:18", + "author_account_age_days": 3922 + }, + "https://github.com/hyunamy/comfy-ui-on-complete-email-me": { + "stars": 1, + "last_update": "2024-07-01 18:44:18", + "author_account_age_days": 3119 }, "https://github.com/iFREEGROUP/comfyui-undistort": { - "stars": 1, + "stars": 2, "last_update": "2024-06-14 08:59:52", - "author_account_age_days": 1551 + "author_account_age_days": 1566 }, "https://github.com/icesun963/ComfyUI_HFDownLoad": { "stars": 0, "last_update": "2024-06-14 08:59:58", - "author_account_age_days": 4100 + "author_account_age_days": 4114 }, "https://github.com/idrirap/ComfyUI-Lora-Auto-Trigger-Words": { - "stars": 94, - "last_update": "2024-05-22 21:25:49", - "author_account_age_days": 3044 + "stars": 98, + "last_update": "2024-06-20 15:56:56", + "author_account_age_days": 3058 }, "https://github.com/iemesowum/ComfyUI_IsaacNodes": { "stars": 0, "last_update": "2024-06-14 09:00:05", - "author_account_age_days": 5286 + "author_account_age_days": 5300 }, "https://github.com/if-ai/ComfyUI-IF_AI_HFDownloaderNode": { - "stars": 2, - "last_update": "2024-05-22 22:31:30", - "author_account_age_days": 2857 + "stars": 10, + "last_update": "2024-06-28 17:02:56", + "author_account_age_days": 2871 }, "https://github.com/if-ai/ComfyUI-IF_AI_WishperSpeechNode": { - "stars": 26, + "stars": 28, "last_update": "2024-05-22 22:02:55", - "author_account_age_days": 2857 + "author_account_age_days": 2871 }, "https://github.com/if-ai/ComfyUI-IF_AI_tools": { - "stars": 346, - "last_update": "2024-06-10 22:40:42", - "author_account_age_days": 2857 + "stars": 375, + "last_update": "2024-06-26 13:16:20", + "author_account_age_days": 2871 }, "https://github.com/imb101/ComfyUI-FaceSwap": { "stars": 28, "last_update": "2024-05-22 18:22:29", - "author_account_age_days": 883 + "author_account_age_days": 897 + }, + "https://github.com/iwanders/ComfyUI_nodes": { + "stars": 0, + "last_update": "2024-06-25 13:02:37", + "author_account_age_days": 4435 }, "https://github.com/jags111/ComfyUI_Jags_Audiotools": { - "stars": 32, + "stars": 37, "last_update": "2024-05-19 18:54:12", - "author_account_age_days": 3865 + "author_account_age_days": 3879 }, "https://github.com/jags111/ComfyUI_Jags_VectorMagic": { - "stars": 51, + "stars": 52, "last_update": "2024-05-19 18:49:42", - "author_account_age_days": 3865 + "author_account_age_days": 3879 }, "https://github.com/jags111/efficiency-nodes-comfyui": { - "stars": 681, - "last_update": "2024-06-17 07:23:01", - "author_account_age_days": 3865 + "stars": 712, + "last_update": "2024-06-23 09:42:43", + "author_account_age_days": 3879 + }, + "https://github.com/jakechai/ComfyUI-JakeUpgrade": { + "stars": 2, + "last_update": "2024-07-03 03:00:42", + "author_account_age_days": 1580 }, "https://github.com/jamal-alkharrat/ComfyUI_rotate_image": { "stars": 0, "last_update": "2024-05-22 23:19:02", - "author_account_age_days": 971 + "author_account_age_days": 985 }, "https://github.com/jamesWalker55/comfyui-p2ldgan": { "stars": 12, "last_update": "2024-05-22 18:19:04", - "author_account_age_days": 2522 + "author_account_age_days": 2536 }, "https://github.com/jamesWalker55/comfyui-various": { - "stars": 28, + "stars": 32, "last_update": "2024-05-22 18:19:17", - "author_account_age_days": 2522 + "author_account_age_days": 2536 }, "https://github.com/jax-explorer/fast_video_comfyui": { "stars": 0, "last_update": "2024-05-23 01:17:35", - "author_account_age_days": 571 + "author_account_age_days": 585 }, "https://github.com/jeffy5/comfyui-faceless-node": { - "stars": 12, + "stars": 18, "last_update": "2024-06-14 04:11:28", - "author_account_age_days": 2925 + "author_account_age_days": 2939 }, "https://github.com/jesenzhang/ComfyUI_StreamDiffusion": { - "stars": 105, + "stars": 106, "last_update": "2024-05-23 02:40:36", - "author_account_age_days": 3646 + "author_account_age_days": 3661 }, "https://github.com/jiaxiangc/ComfyUI-ResAdapter": { - "stars": 265, + "stars": 271, "last_update": "2024-05-23 00:22:23", - "author_account_age_days": 1281 + "author_account_age_days": 1295 }, "https://github.com/jitcoder/lora-info": { - "stars": 43, - "last_update": "2024-05-22 22:17:44", - "author_account_age_days": 4035 + "stars": 45, + "last_update": "2024-06-20 13:04:19", + "author_account_age_days": 4049 }, "https://github.com/jjkramhoeft/ComfyUI-Jjk-Nodes": { "stars": 4, "last_update": "2024-05-22 20:44:56", - "author_account_age_days": 3644 + "author_account_age_days": 3658 }, "https://github.com/jkrauss82/ultools-comfyui": { "stars": 5, - "last_update": "2024-06-14 08:12:15", - "author_account_age_days": 4206 + "last_update": "2024-06-23 15:33:07", + "author_account_age_days": 4220 }, "https://github.com/jmkl/ComfyUI-ricing": { "stars": 9, "last_update": "2024-05-22 20:54:35", - "author_account_age_days": 4592 + "author_account_age_days": 4606 }, "https://github.com/jojkaart/ComfyUI-sampler-lcm-alternative": { - "stars": 100, - "last_update": "2024-05-22 21:31:41", - "author_account_age_days": 4793 + "stars": 110, + "last_update": "2024-07-01 22:57:55", + "author_account_age_days": 4807 }, "https://github.com/jordoh/ComfyUI-Deepface": { - "stars": 10, + "stars": 11, "last_update": "2024-06-14 08:08:29", - "author_account_age_days": 4988 + "author_account_age_days": 5002 + }, + "https://github.com/jroc22/ComfyUI-CSV-prompt-builder": { + "stars": 2, + "last_update": "2024-07-03 01:20:35", + "author_account_age_days": 698 }, "https://github.com/jtrue/ComfyUI-JaRue": { "stars": 6, "last_update": "2024-06-14 09:01:12", - "author_account_age_days": 3924 + "author_account_age_days": 3938 }, "https://github.com/jtydhr88/ComfyUI-LayerDivider": { - "stars": 44, + "stars": 49, "last_update": "2024-06-15 15:02:53", - "author_account_age_days": 4748 + "author_account_age_days": 4762 + }, + "https://github.com/jtydhr88/ComfyUI-Unique3D": { + "stars": 103, + "last_update": "2024-06-30 13:40:42", + "author_account_age_days": 4762 }, "https://github.com/jtydhr88/ComfyUI-Workflow-Encrypt": { - "stars": 12, - "last_update": "2024-06-14 08:10:50", - "author_account_age_days": 4748 + "stars": 15, + "last_update": "2024-06-28 03:16:19", + "author_account_age_days": 4762 }, "https://github.com/juehackr/comfyui_fk_server": { - "stars": 28, - "last_update": "2024-06-17 14:20:57", - "author_account_age_days": 1107 + "stars": 46, + "last_update": "2024-07-02 12:36:58", + "author_account_age_days": 1121 }, "https://github.com/ka-puna/comfyui-yanc": { "stars": 6, "last_update": "2024-05-22 21:29:37", - "author_account_age_days": 2202 + "author_account_age_days": 2216 }, "https://github.com/kaanyalova/ComfyUI_ExtendedImageFormats": { "stars": 2, "last_update": "2024-06-03 13:20:01", - "author_account_age_days": 1261 + "author_account_age_days": 1275 }, "https://github.com/kadirnar/ComfyUI-Transformers": { - "stars": 16, - "last_update": "2024-05-23 12:34:26", - "author_account_age_days": 2324 + "stars": 19, + "last_update": "2024-06-22 22:44:39", + "author_account_age_days": 2338 }, "https://github.com/kadirnar/ComfyUI-YOLO": { - "stars": 3, - "last_update": "2024-06-18 22:20:23", - "author_account_age_days": 2324 + "stars": 16, + "last_update": "2024-06-24 13:44:07", + "author_account_age_days": 2338 }, "https://github.com/kale4eat/ComfyUI-path-util": { "stars": 0, "last_update": "2024-05-25 05:44:11", - "author_account_age_days": 1607 + "author_account_age_days": 1621 }, "https://github.com/kale4eat/ComfyUI-speech-dataset-toolkit": { - "stars": 5, + "stars": 7, "last_update": "2024-05-23 00:25:02", - "author_account_age_days": 1607 + "author_account_age_days": 1621 }, "https://github.com/kale4eat/ComfyUI-string-util": { "stars": 1, "last_update": "2024-05-23 00:24:40", - "author_account_age_days": 1607 + "author_account_age_days": 1621 }, "https://github.com/kale4eat/ComfyUI-text-file-util": { "stars": 0, "last_update": "2024-05-23 00:24:51", - "author_account_age_days": 1607 + "author_account_age_days": 1621 }, "https://github.com/katalist-ai/comfyUI-nsfw-detection": { "stars": 1, "last_update": "2024-05-23 01:23:32", - "author_account_age_days": 748 + "author_account_age_days": 762 }, "https://github.com/kealiu/ComfyUI-S3-Tools": { "stars": 1, "last_update": "2024-05-23 01:10:44", - "author_account_age_days": 4123 + "author_account_age_days": 4137 }, "https://github.com/kealiu/ComfyUI-Zero123-Porting": { "stars": 13, "last_update": "2024-05-23 01:11:13", - "author_account_age_days": 4123 + "author_account_age_days": 4137 }, "https://github.com/kealiu/ComfyUI-ZeroShot-MTrans": { - "stars": 128, + "stars": 130, "last_update": "2024-05-23 01:11:01", - "author_account_age_days": 4123 + "author_account_age_days": 4137 }, "https://github.com/kenjiqq/qq-nodes-comfyui": { "stars": 23, "last_update": "2024-05-22 21:34:53", - "author_account_age_days": 4884 + "author_account_age_days": 4898 }, "https://github.com/kft334/Knodes": { "stars": 3, "last_update": "2024-06-14 08:12:06", - "author_account_age_days": 954 + "author_account_age_days": 968 }, "https://github.com/kijai/ComfyUI-ADMotionDirector": { - "stars": 125, + "stars": 127, "last_update": "2024-06-19 09:13:35", - "author_account_age_days": 2178 + "author_account_age_days": 2192 }, "https://github.com/kijai/ComfyUI-APISR-KJ": { - "stars": 55, + "stars": 56, "last_update": "2024-05-21 16:30:21", - "author_account_age_days": 2178 + "author_account_age_days": 2192 }, "https://github.com/kijai/ComfyUI-BrushNet-Wrapper": { - "stars": 103, - "last_update": "2024-05-21 16:49:05", - "author_account_age_days": 2178 + "stars": 109, + "last_update": "2024-06-20 12:15:16", + "author_account_age_days": 2192 }, "https://github.com/kijai/ComfyUI-CCSR": { - "stars": 144, - "last_update": "2024-05-22 21:09:35", - "author_account_age_days": 2178 + "stars": 152, + "last_update": "2024-06-28 11:13:33", + "author_account_age_days": 2192 }, "https://github.com/kijai/ComfyUI-DDColor": { - "stars": 78, + "stars": 80, "last_update": "2024-05-21 16:04:26", - "author_account_age_days": 2178 + "author_account_age_days": 2192 }, "https://github.com/kijai/ComfyUI-DepthAnythingV2": { - "stars": 77, - "last_update": "2024-06-19 08:57:28", - "author_account_age_days": 2178 + "stars": 115, + "last_update": "2024-06-28 20:46:46", + "author_account_age_days": 2192 }, "https://github.com/kijai/ComfyUI-DiffusionLight": { - "stars": 48, + "stars": 51, "last_update": "2024-05-21 16:16:52", - "author_account_age_days": 2178 + "author_account_age_days": 2192 }, "https://github.com/kijai/ComfyUI-DynamiCrafterWrapper": { - "stars": 458, - "last_update": "2024-06-09 11:19:05", - "author_account_age_days": 2178 + "stars": 489, + "last_update": "2024-07-01 18:10:12", + "author_account_age_days": 2192 }, "https://github.com/kijai/ComfyUI-ELLA-wrapper": { - "stars": 103, + "stars": 104, "last_update": "2024-05-21 16:47:28", - "author_account_age_days": 2178 + "author_account_age_days": 2192 + }, + "https://github.com/kijai/ComfyUI-Florence2": { + "stars": 300, + "last_update": "2024-07-03 04:23:46", + "author_account_age_days": 2192 }, "https://github.com/kijai/ComfyUI-Geowizard": { - "stars": 81, + "stars": 83, "last_update": "2024-05-28 14:08:34", - "author_account_age_days": 2178 + "author_account_age_days": 2192 }, "https://github.com/kijai/ComfyUI-IC-Light": { - "stars": 382, + "stars": 433, "last_update": "2024-06-19 09:18:06", - "author_account_age_days": 2178 + "author_account_age_days": 2192 }, "https://github.com/kijai/ComfyUI-KJNodes": { - "stars": 328, - "last_update": "2024-06-19 09:05:21", - "author_account_age_days": 2178 + "stars": 350, + "last_update": "2024-06-25 21:16:52", + "author_account_age_days": 2192 }, "https://github.com/kijai/ComfyUI-LaVi-Bridge-Wrapper": { "stars": 19, "last_update": "2024-05-21 16:41:18", - "author_account_age_days": 2178 + "author_account_age_days": 2192 + }, + "https://github.com/kijai/ComfyUI-LuminaWrapper": { + "stars": 159, + "last_update": "2024-06-28 16:33:51", + "author_account_age_days": 2192 }, "https://github.com/kijai/ComfyUI-Marigold": { - "stars": 374, + "stars": 391, "last_update": "2024-06-19 09:10:03", - "author_account_age_days": 2178 + "author_account_age_days": 2192 }, "https://github.com/kijai/ComfyUI-SUPIR": { - "stars": 1160, - "last_update": "2024-05-21 14:56:36", - "author_account_age_days": 2178 + "stars": 1215, + "last_update": "2024-06-27 13:40:56", + "author_account_age_days": 2192 }, "https://github.com/kijai/ComfyUI-SVD": { "stars": 152, "last_update": "2024-05-22 21:09:54", - "author_account_age_days": 2178 + "author_account_age_days": 2192 }, "https://github.com/kijai/ComfyUI-depth-fm": { - "stars": 53, + "stars": 54, "last_update": "2024-05-22 21:10:15", - "author_account_age_days": 2178 + "author_account_age_days": 2192 }, "https://github.com/kijai/ComfyUI-moondream": { - "stars": 77, + "stars": 79, "last_update": "2024-05-22 21:10:33", - "author_account_age_days": 2178 + "author_account_age_days": 2192 }, "https://github.com/kinfolk0117/ComfyUI_GradientDeepShrink": { "stars": 23, "last_update": "2024-05-22 21:25:13", - "author_account_age_days": 463 + "author_account_age_days": 477 }, "https://github.com/kinfolk0117/ComfyUI_Pilgram": { "stars": 7, "last_update": "2024-05-22 21:25:24", - "author_account_age_days": 463 + "author_account_age_days": 477 }, "https://github.com/kinfolk0117/ComfyUI_SimpleTiles": { - "stars": 24, + "stars": 35, "last_update": "2024-05-22 21:25:01", - "author_account_age_days": 463 + "author_account_age_days": 477 }, "https://github.com/klinter007/klinter_nodes": { - "stars": 4, - "last_update": "2024-06-14 09:05:41", - "author_account_age_days": 420 + "stars": 5, + "last_update": "2024-06-25 05:15:24", + "author_account_age_days": 434 }, "https://github.com/knuknX/ComfyUI-Image-Tools": { "stars": 3, "last_update": "2024-06-14 09:05:58", - "author_account_age_days": 195 + "author_account_age_days": 209 }, "https://github.com/kohya-ss/ControlNet-LLLite-ComfyUI": { - "stars": 145, + "stars": 149, "last_update": "2024-05-22 20:44:44", - "author_account_age_days": 1804 + "author_account_age_days": 1818 }, "https://github.com/komojini/ComfyUI_SDXL_DreamBooth_LoRA_CustomNodes": { "stars": 3, "last_update": "2024-05-22 21:34:27", - "author_account_age_days": 578 + "author_account_age_days": 592 }, "https://github.com/komojini/komojini-comfyui-nodes": { "stars": 63, "last_update": "2024-05-22 21:34:39", - "author_account_age_days": 578 + "author_account_age_days": 592 }, "https://github.com/kunieone/ComfyUI_alkaid": { "stars": 0, "last_update": "2024-05-23 01:10:21", - "author_account_age_days": 2514 + "author_account_age_days": 2528 }, "https://github.com/kwaroran/abg-comfyui": { "stars": 22, "last_update": "2024-05-22 18:19:51", - "author_account_age_days": 602 + "author_account_age_days": 616 }, "https://github.com/l20richo/ComfyUI-Azure-Blob-Storage": { "stars": 2, - "last_update": "2024-06-14 10:24:05", - "author_account_age_days": 1162 + "last_update": "2024-06-22 16:53:47", + "author_account_age_days": 1176 }, "https://github.com/laksjdjf/Batch-Condition-ComfyUI": { "stars": 1, "last_update": "2024-05-22 20:42:42", - "author_account_age_days": 2826 + "author_account_age_days": 2840 }, "https://github.com/laksjdjf/LCMSampler-ComfyUI": { "stars": 14, "last_update": "2024-05-22 20:42:17", - "author_account_age_days": 2826 + "author_account_age_days": 2840 }, "https://github.com/laksjdjf/LoRTnoC-ComfyUI": { - "stars": 11, + "stars": 13, "last_update": "2024-05-22 20:42:29", - "author_account_age_days": 2826 + "author_account_age_days": 2840 }, "https://github.com/laksjdjf/cd-tuner_negpip-ComfyUI": { - "stars": 19, + "stars": 20, "last_update": "2024-05-22 20:42:04", - "author_account_age_days": 2826 + "author_account_age_days": 2840 }, "https://github.com/laksjdjf/cgem156-ComfyUI": { - "stars": 30, + "stars": 32, "last_update": "2024-06-08 01:09:03", - "author_account_age_days": 2826 + "author_account_age_days": 2840 }, "https://github.com/laksjdjf/pfg-ComfyUI": { "stars": 10, "last_update": "2024-05-22 20:41:41", - "author_account_age_days": 2826 + "author_account_age_days": 2840 }, "https://github.com/larsupb/LoRA-Merger-ComfyUI": { - "stars": 9, - "last_update": "2024-06-14 10:23:47", - "author_account_age_days": 3070 + "stars": 12, + "last_update": "2024-07-02 05:55:23", + "author_account_age_days": 3084 }, "https://github.com/latenightlabs/ComfyUI-LNL": { - "stars": 0, - "last_update": "2024-06-14 13:02:47", - "author_account_age_days": 145 + "stars": 19, + "last_update": "2024-06-28 17:27:55", + "author_account_age_days": 159 + }, + "https://github.com/leiweiqiang/ComfyUI-TRA": { + "stars": 2, + "last_update": "2024-06-29 17:46:46", + "author_account_age_days": 2619 }, "https://github.com/leoleelxh/ComfyUI-LLMs": { "stars": 7, "last_update": "2024-06-14 10:24:23", - "author_account_age_days": 4070 + "author_account_age_days": 4084 + }, + "https://github.com/licyk/ComfyUI-Restart-Sampler": { + "stars": 1, + "last_update": "2024-06-29 03:36:00", + "author_account_age_days": 1277 }, "https://github.com/lilly1987/ComfyUI_node_Lilly": { "stars": 49, "last_update": "2024-05-22 17:53:19", - "author_account_age_days": 2904 + "author_account_age_days": 2918 }, "https://github.com/linshier/comfyui-remote-tools": { "stars": 1, "last_update": "2024-05-28 07:44:23", - "author_account_age_days": 3786 + "author_account_age_days": 3801 }, "https://github.com/liusida/ComfyUI-AutoCropFaces": { - "stars": 18, - "last_update": "2024-06-14 10:24:37", - "author_account_age_days": 3202 + "stars": 26, + "last_update": "2024-06-21 00:41:53", + "author_account_age_days": 3216 }, "https://github.com/liusida/ComfyUI-B-LoRA": { - "stars": 13, + "stars": 18, "last_update": "2024-06-18 03:17:46", - "author_account_age_days": 3202 + "author_account_age_days": 3216 }, "https://github.com/liusida/ComfyUI-Debug": { "stars": 6, "last_update": "2024-06-14 10:25:26", - "author_account_age_days": 3202 + "author_account_age_days": 3216 }, "https://github.com/liusida/ComfyUI-Login": { - "stars": 37, - "last_update": "2024-06-19 03:30:09", - "author_account_age_days": 3202 + "stars": 42, + "last_update": "2024-06-27 13:31:34", + "author_account_age_days": 3216 }, "https://github.com/liusida/ComfyUI-SD3-nodes": { - "stars": 2, + "stars": 4, "last_update": "2024-06-14 13:01:41", - "author_account_age_days": 3202 + "author_account_age_days": 3216 }, "https://github.com/ljleb/comfy-mecha": { - "stars": 16, - "last_update": "2024-06-18 20:57:28", - "author_account_age_days": 2458 + "stars": 23, + "last_update": "2024-07-02 20:48:43", + "author_account_age_days": 2472 }, "https://github.com/lks-ai/ComfyUI-StableAudioSampler": { - "stars": 168, + "stars": 181, "last_update": "2024-06-17 18:54:17", - "author_account_age_days": 94 + "author_account_age_days": 108 }, "https://github.com/lks-ai/anynode": { - "stars": 405, - "last_update": "2024-06-14 10:25:56", - "author_account_age_days": 94 + "stars": 426, + "last_update": "2024-06-28 09:32:44", + "author_account_age_days": 108 }, "https://github.com/lldacing/comfyui-easyapi-nodes": { - "stars": 27, + "stars": 30, "last_update": "2024-05-24 02:51:26", - "author_account_age_days": 2088 + "author_account_age_days": 2102 }, "https://github.com/logtd/ComfyUI-FLATTEN": { - "stars": 61, + "stars": 89, "last_update": "2024-06-14 18:00:19", - "author_account_age_days": 117 + "author_account_age_days": 131 }, "https://github.com/logtd/ComfyUI-InstanceDiffusion": { - "stars": 140, + "stars": 145, "last_update": "2024-05-22 00:02:08", - "author_account_age_days": 117 + "author_account_age_days": 131 }, "https://github.com/logtd/ComfyUI-InversedNoise": { - "stars": 5, + "stars": 6, "last_update": "2024-05-22 00:10:18", - "author_account_age_days": 117 + "author_account_age_days": 131 }, "https://github.com/logtd/ComfyUI-RAVE_ATTN": { - "stars": 9, + "stars": 10, "last_update": "2024-05-22 00:20:03", - "author_account_age_days": 117 + "author_account_age_days": 131 }, "https://github.com/logtd/ComfyUI-RefSampling": { "stars": 4, "last_update": "2024-05-22 00:04:40", - "author_account_age_days": 117 + "author_account_age_days": 131 }, "https://github.com/logtd/ComfyUI-TrackingNodes": { "stars": 15, "last_update": "2024-05-22 00:03:27", - "author_account_age_days": 117 + "author_account_age_days": 131 }, "https://github.com/longgui0318/comfyui-llm-assistant": { "stars": 5, - "last_update": "2024-05-22 23:13:46", - "author_account_age_days": 4159 + "last_update": "2024-06-27 03:50:46", + "author_account_age_days": 4173 }, "https://github.com/longgui0318/comfyui-magic-clothing": { - "stars": 20, - "last_update": "2024-06-14 10:27:32", - "author_account_age_days": 4159 + "stars": 23, + "last_update": "2024-06-27 03:48:38", + "author_account_age_days": 4173 }, "https://github.com/longgui0318/comfyui-mask-util": { - "stars": 4, - "last_update": "2024-06-15 02:59:08", - "author_account_age_days": 4159 + "stars": 6, + "last_update": "2024-06-30 03:43:58", + "author_account_age_days": 4173 }, "https://github.com/longgui0318/comfyui-oms-diffusion": { - "stars": 20, - "last_update": "2024-06-14 10:27:32", - "author_account_age_days": 4159 + "stars": 23, + "last_update": "2024-06-27 03:48:38", + "author_account_age_days": 4173 + }, + "https://github.com/lordgasmic/comfyui_save_image_with_options": { + "stars": 0, + "last_update": "2024-06-20 16:39:23", + "author_account_age_days": 4776 + }, + "https://github.com/lordgasmic/comfyui_wildcards": { + "stars": 5, + "last_update": "2024-06-20 16:52:14", + "author_account_age_days": 4776 }, "https://github.com/lquesada/ComfyUI-Inpaint-CropAndStitch": { - "stars": 144, - "last_update": "2024-06-11 03:36:02", - "author_account_age_days": 4045 + "stars": 162, + "last_update": "2024-06-21 10:54:35", + "author_account_age_days": 4059 }, "https://github.com/lquesada/ComfyUI-Prompt-Combinator": { - "stars": 19, - "last_update": "2024-06-17 08:08:08", - "author_account_age_days": 4045 + "stars": 22, + "last_update": "2024-06-30 15:37:31", + "author_account_age_days": 4059 }, "https://github.com/ltdrdata/ComfyUI-Impact-Pack": { - "stars": 1373, - "last_update": "2024-06-18 16:40:52", - "author_account_age_days": 457 + "stars": 1427, + "last_update": "2024-07-02 15:10:30", + "author_account_age_days": 471 }, "https://github.com/ltdrdata/ComfyUI-Inspire-Pack": { - "stars": 286, - "last_update": "2024-06-18 18:01:15", - "author_account_age_days": 457 + "stars": 295, + "last_update": "2024-07-02 15:02:59", + "author_account_age_days": 471 }, "https://github.com/ltdrdata/ComfyUI-Manager": { - "stars": 4337, - "last_update": "2024-06-19 08:27:58", - "author_account_age_days": 457 + "stars": 4568, + "last_update": "2024-07-03 07:30:48", + "author_account_age_days": 471 }, "https://github.com/luandev/ComfyUI-CrewAI": { - "stars": 5, - "last_update": "2024-06-14 10:25:20", - "author_account_age_days": 3802 + "stars": 11, + "last_update": "2024-06-27 17:53:19", + "author_account_age_days": 3816 }, "https://github.com/m-sokes/ComfyUI-Sokes-Nodes": { "stars": 1, "last_update": "2024-05-22 20:36:07", - "author_account_age_days": 310 + "author_account_age_days": 324 }, "https://github.com/madtunebk/ComfyUI-ControlnetAux": { - "stars": 8, - "last_update": "2024-06-04 12:14:51", - "author_account_age_days": 456 + "stars": 9, + "last_update": "2024-06-28 16:16:51", + "author_account_age_days": 470 }, "https://github.com/mape/ComfyUI-mape-Helpers": { - "stars": 120, - "last_update": "2024-05-22 23:19:13", - "author_account_age_days": 5749 + "stars": 131, + "last_update": "2024-06-27 16:30:32", + "author_account_age_days": 5763 }, "https://github.com/maracman/ComfyUI-SubjectStyle-CSV": { "stars": 3, - "last_update": "2024-06-14 10:24:29", - "author_account_age_days": 1161 + "last_update": "2024-06-24 13:53:39", + "author_account_age_days": 1175 }, "https://github.com/marduk191/comfyui-marnodes": { "stars": 0, - "last_update": "2024-06-14 10:24:11", - "author_account_age_days": 4409 + "last_update": "2024-06-30 21:20:15", + "author_account_age_days": 4423 }, "https://github.com/marhensa/sdxl-recommended-res-calc": { - "stars": 51, + "stars": 54, "last_update": "2024-05-22 20:46:17", - "author_account_age_days": 4770 + "author_account_age_days": 4784 }, "https://github.com/martijnat/comfyui-previewlatent": { "stars": 29, "last_update": "2024-05-22 21:28:39", - "author_account_age_days": 2826 + "author_account_age_days": 2840 }, "https://github.com/massao000/ComfyUI_aspect_ratios": { "stars": 7, "last_update": "2024-05-22 22:23:10", - "author_account_age_days": 1402 + "author_account_age_days": 1416 }, "https://github.com/matan1905/ComfyUI-Serving-Toolkit": { - "stars": 38, + "stars": 39, "last_update": "2024-06-04 19:15:36", - "author_account_age_days": 2734 + "author_account_age_days": 2749 }, "https://github.com/mav-rik/facerestore_cf": { - "stars": 150, + "stars": 156, "last_update": "2024-05-22 20:53:23", - "author_account_age_days": 2915 + "author_account_age_days": 2929 }, "https://github.com/mbrostami/ComfyUI-HF": { "stars": 16, "last_update": "2024-05-27 21:45:33", - "author_account_age_days": 4316 + "author_account_age_days": 4330 }, "https://github.com/mbrostami/ComfyUI-TITrain": { "stars": 7, "last_update": "2024-05-27 21:50:06", - "author_account_age_days": 4316 + "author_account_age_days": 4330 }, "https://github.com/mcmonkeyprojects/sd-dynamic-thresholding": { - "stars": 1055, + "stars": 1065, "last_update": "2024-05-24 16:09:17", - "author_account_age_days": 2096 + "author_account_age_days": 2110 }, "https://github.com/meap158/ComfyUI-Background-Replacement": { - "stars": 35, + "stars": 41, "last_update": "2024-05-22 20:43:52", - "author_account_age_days": 3198 + "author_account_age_days": 3212 }, "https://github.com/meap158/ComfyUI-GPU-temperature-protection": { "stars": 3, "last_update": "2024-05-22 20:43:21", - "author_account_age_days": 3198 + "author_account_age_days": 3212 }, "https://github.com/meap158/ComfyUI-Prompt-Expansion": { - "stars": 61, + "stars": 62, "last_update": "2024-05-22 20:43:37", - "author_account_age_days": 3198 + "author_account_age_days": 3212 }, "https://github.com/melMass/comfy_mtb": { - "stars": 338, - "last_update": "2024-06-09 17:20:03", - "author_account_age_days": 3740 + "stars": 350, + "last_update": "2024-07-02 11:14:05", + "author_account_age_days": 3754 }, "https://github.com/mephisto83/petty-paint-comfyui-node": { - "stars": 1, - "last_update": "2024-06-15 20:16:58", - "author_account_age_days": 3667 + "stars": 2, + "last_update": "2024-06-20 21:21:52", + "author_account_age_days": 3681 }, "https://github.com/meshmesh-io/ComfyUI-MeshMesh": { "stars": 0, "last_update": "2024-05-23 00:10:09", - "author_account_age_days": 223 + "author_account_age_days": 237 }, "https://github.com/meshmesh-io/mm-comfyui-loopback": { "stars": 1, "last_update": "2024-05-23 00:09:57", - "author_account_age_days": 223 + "author_account_age_days": 237 }, "https://github.com/meshmesh-io/mm-comfyui-megamask": { "stars": 0, "last_update": "2024-05-23 00:09:47", - "author_account_age_days": 223 + "author_account_age_days": 237 }, "https://github.com/mihaiiancu/ComfyUI_Inpaint": { "stars": 9, "last_update": "2024-05-22 18:19:38", - "author_account_age_days": 2656 + "author_account_age_days": 2670 }, "https://github.com/mikkel/ComfyUI-text-overlay": { "stars": 29, "last_update": "2024-05-22 21:13:59", - "author_account_age_days": 5911 + "author_account_age_days": 5925 }, "https://github.com/mikkel/comfyui-mask-boundingbox": { - "stars": 24, + "stars": 25, "last_update": "2024-05-22 21:26:23", - "author_account_age_days": 5911 + "author_account_age_days": 5925 + }, + "https://github.com/mingqizhang/ComfyUI_InSPyResNet_zmq": { + "stars": 0, + "last_update": "2024-06-28 15:59:20", + "author_account_age_days": 2603 }, "https://github.com/mirabarukaso/ComfyUI_Mira": { - "stars": 20, + "stars": 22, "last_update": "2024-06-14 11:01:10", - "author_account_age_days": 1215 + "author_account_age_days": 1229 }, "https://github.com/modusCell/ComfyUI-dimension-node-modusCell": { "stars": 0, "last_update": "2024-05-22 22:08:50", - "author_account_age_days": 4598 + "author_account_age_days": 4612 }, "https://github.com/moyi7712/ComfyUI_Seamless_Patten": { - "stars": 7, - "last_update": "2024-06-19 03:07:36", - "author_account_age_days": 2295 + "stars": 8, + "last_update": "2024-06-22 02:18:14", + "author_account_age_days": 2310 }, "https://github.com/mozman/ComfyUI_mozman_nodes": { "stars": 0, "last_update": "2024-05-22 22:13:32", - "author_account_age_days": 4075 + "author_account_age_days": 4089 }, "https://github.com/mpiquero7164/ComfyUI-SaveImgPrompt": { "stars": 15, "last_update": "2023-08-14 11:27:09", - "author_account_age_days": 2603 + "author_account_age_days": 2617 }, "https://github.com/muzi12888/ComfyUI-PoseKeypoint-Mask": { "stars": 6, "last_update": "2024-06-14 13:26:02", - "author_account_age_days": 2940 + "author_account_age_days": 2954 + }, + "https://github.com/my-opencode/ComfyUI_IndustrialMagick": { + "stars": 1, + "last_update": "2024-06-29 19:18:54", + "author_account_age_days": 1389 + }, + "https://github.com/my-opencode/ComfyUI_KSamplerTimer": { + "stars": 0, + "last_update": "2024-06-29 02:11:33", + "author_account_age_days": 1389 }, "https://github.com/nagolinc/ComfyUI_FastVAEDecorder_SDXL": { "stars": 2, "last_update": "2024-05-22 20:44:17", - "author_account_age_days": 3669 + "author_account_age_days": 3683 }, "https://github.com/nagolinc/comfyui_openai_node": { "stars": 0, "last_update": "2024-06-15 15:59:07", - "author_account_age_days": 3669 + "author_account_age_days": 3683 }, "https://github.com/nat-chan/ComfyUI-graphToPrompt": { "stars": 0, "last_update": "2024-05-23 01:16:40", - "author_account_age_days": 2988 + "author_account_age_days": 3002 }, "https://github.com/nat-chan/comfyui-paint": { "stars": 2, "last_update": "2024-06-14 11:01:38", - "author_account_age_days": 2988 + "author_account_age_days": 3002 }, "https://github.com/nat-chan/comfyui-transceiver": { "stars": 3, "last_update": "2024-05-23 01:16:28", - "author_account_age_days": 2988 + "author_account_age_days": 3002 }, "https://github.com/nathannlu/ComfyUI-Cloud": { - "stars": 133, - "last_update": "2024-06-14 12:00:59", - "author_account_age_days": 2720 + "stars": 155, + "last_update": "2024-06-30 06:18:52", + "author_account_age_days": 2734 }, "https://github.com/nathannlu/ComfyUI-Pets": { "stars": 36, "last_update": "2024-06-14 11:00:42", - "author_account_age_days": 2720 + "author_account_age_days": 2734 }, "https://github.com/natto-maki/ComfyUI-NegiTools": { "stars": 26, "last_update": "2024-05-22 21:31:17", - "author_account_age_days": 272 + "author_account_age_days": 286 }, "https://github.com/nickve28/ComfyUI-Nich-Utils": { "stars": 8, - "last_update": "2024-05-23 00:22:57", - "author_account_age_days": 4023 + "last_update": "2024-06-22 05:29:37", + "author_account_age_days": 4037 }, "https://github.com/ningxiaoxiao/comfyui-NDI": { - "stars": 35, - "last_update": "2024-06-14 12:00:29", - "author_account_age_days": 2982 + "stars": 36, + "last_update": "2024-07-02 09:03:11", + "author_account_age_days": 2996 }, "https://github.com/nirbhay-faaya/ImgProcessing_ComfyUI": { "stars": 0, "last_update": "2024-06-14 12:01:14", - "author_account_age_days": 330 + "author_account_age_days": 344 }, "https://github.com/nirex0/ComfyUI_pytorch_openpose": { "stars": 2, "last_update": "2024-06-14 12:01:07", - "author_account_age_days": 3497 + "author_account_age_days": 3511 }, "https://github.com/nkchocoai/ComfyUI-Dart": { - "stars": 17, - "last_update": "2024-05-22 23:11:22", - "author_account_age_days": 154 + "stars": 18, + "last_update": "2024-06-23 04:56:49", + "author_account_age_days": 168 }, "https://github.com/nkchocoai/ComfyUI-PromptUtilities": { "stars": 6, - "last_update": "2024-05-22 23:10:42", - "author_account_age_days": 154 + "last_update": "2024-06-23 04:58:30", + "author_account_age_days": 168 }, "https://github.com/nkchocoai/ComfyUI-SaveImageWithMetaData": { "stars": 8, - "last_update": "2024-06-15 05:58:02", - "author_account_age_days": 154 + "last_update": "2024-06-23 04:57:38", + "author_account_age_days": 168 }, "https://github.com/nkchocoai/ComfyUI-SizeFromPresets": { "stars": 4, - "last_update": "2024-05-22 23:10:30", - "author_account_age_days": 154 + "last_update": "2024-06-23 04:40:00", + "author_account_age_days": 168 }, "https://github.com/nkchocoai/ComfyUI-TextOnSegs": { - "stars": 5, - "last_update": "2024-05-22 23:10:55", - "author_account_age_days": 154 + "stars": 7, + "last_update": "2024-06-23 04:52:29", + "author_account_age_days": 168 }, "https://github.com/noembryo/ComfyUI-noEmbryo": { - "stars": 12, + "stars": 13, "last_update": "2024-06-04 11:27:45", - "author_account_age_days": 2737 + "author_account_age_days": 2751 }, "https://github.com/nosiu/comfyui-instantId-faceswap": { - "stars": 164, + "stars": 176, "last_update": "2024-05-22 23:21:38", - "author_account_age_days": 3899 + "author_account_age_days": 3913 }, "https://github.com/noxinias/ComfyUI_NoxinNodes": { "stars": 7, "last_update": "2024-05-22 21:24:24", - "author_account_age_days": 2555 + "author_account_age_days": 2569 }, "https://github.com/ntc-ai/ComfyUI-DARE-LoRA-Merge": { "stars": 22, "last_update": "2024-05-22 22:22:14", - "author_account_age_days": 1712 + "author_account_age_days": 1726 }, "https://github.com/nuanarchy/ComfyUI-NuA-BIRD": { - "stars": 3, + "stars": 4, "last_update": "2024-06-18 05:35:49", - "author_account_age_days": 1087 + "author_account_age_days": 1101 }, "https://github.com/nuanarchy/ComfyUI-NuA-FlashFace": { - "stars": 10, + "stars": 13, "last_update": "2024-06-17 15:29:15", - "author_account_age_days": 1087 + "author_account_age_days": 1101 }, "https://github.com/nullquant/ComfyUI-BrushNet": { - "stars": 341, - "last_update": "2024-06-16 18:29:47", - "author_account_age_days": 1171 + "stars": 384, + "last_update": "2024-06-19 16:24:00", + "author_account_age_days": 1185 }, "https://github.com/olduvai-jp/ComfyUI-HfLoader": { "stars": 3, "last_update": "2024-05-23 00:14:52", - "author_account_age_days": 871 + "author_account_age_days": 885 }, "https://github.com/omar92/ComfyUI-QualityOfLifeSuit_Omar92": { - "stars": 108, + "stars": 110, "last_update": "2024-06-03 11:02:37", - "author_account_age_days": 4501 + "author_account_age_days": 4515 + }, + "https://github.com/opvelll/ComfyUI_TextListProduct": { + "stars": 0, + "last_update": "2024-06-22 02:11:26", + "author_account_age_days": 1563 }, "https://github.com/osi1880vr/prompt_quill_comfyui": { - "stars": 9, + "stars": 10, "last_update": "2024-06-13 17:24:12", - "author_account_age_days": 1071 + "author_account_age_days": 1085 }, "https://github.com/ostris/ostris_nodes_comfyui": { "stars": 19, "last_update": "2024-05-22 21:23:24", - "author_account_age_days": 2397 + "author_account_age_days": 2411 }, "https://github.com/ownimage/ComfyUI-ownimage": { "stars": 0, "last_update": "2024-05-22 22:22:37", - "author_account_age_days": 2778 + "author_account_age_days": 2792 }, "https://github.com/oyvindg/ComfyUI-TrollSuite": { "stars": 0, "last_update": "2024-05-22 21:32:03", - "author_account_age_days": 2324 + "author_account_age_days": 2338 }, "https://github.com/oztrkoguz/ComfyUI_StoryCreator": { - "stars": 16, + "stars": 19, "last_update": "2024-05-23 12:18:45", - "author_account_age_days": 836 + "author_account_age_days": 850 }, "https://github.com/palant/extended-saveimage-comfyui": { "stars": 10, "last_update": "2024-03-27 14:08:21", - "author_account_age_days": 5048 + "author_account_age_days": 5062 }, "https://github.com/palant/image-resize-comfyui": { "stars": 61, "last_update": "2024-01-18 20:59:55", - "author_account_age_days": 5048 + "author_account_age_days": 5062 }, "https://github.com/palant/integrated-nodes-comfyui": { - "stars": 31, + "stars": 32, "last_update": "2023-12-27 22:52:00", - "author_account_age_days": 5048 + "author_account_age_days": 5062 + }, + "https://github.com/pamparamm/ComfyUI-vectorscope-cc": { + "stars": 1, + "last_update": "2024-06-29 05:42:02", + "author_account_age_days": 2140 }, "https://github.com/pamparamm/sd-perturbed-attention": { - "stars": 171, - "last_update": "2024-06-15 14:49:56", - "author_account_age_days": 2125 + "stars": 179, + "last_update": "2024-06-29 05:44:18", + "author_account_age_days": 2140 }, "https://github.com/pants007/comfy-pants": { "stars": 2, "last_update": "2024-05-22 18:16:04", - "author_account_age_days": 2312 + "author_account_age_days": 2326 }, "https://github.com/paulo-coronado/comfy_clip_blip_node": { "stars": 25, "last_update": "2024-05-22 17:39:09", - "author_account_age_days": 2681 + "author_account_age_days": 2695 }, "https://github.com/philz1337x/ComfyUI-ClarityAI": { - "stars": 40, + "stars": 46, "last_update": "2024-05-23 01:19:05", - "author_account_age_days": 658 + "author_account_age_days": 672 }, "https://github.com/phineas-pta/comfyui-auto-nodes-layout": { - "stars": 20, - "last_update": "2024-06-18 19:17:38", - "author_account_age_days": 2283 + "stars": 25, + "last_update": "2024-06-19 21:38:47", + "author_account_age_days": 2297 }, "https://github.com/picturesonpictures/comfy_PoP": { - "stars": 13, - "last_update": "2024-05-22 20:51:32", - "author_account_age_days": 582 + "stars": 15, + "last_update": "2024-06-24 23:47:56", + "author_account_age_days": 596 }, "https://github.com/pkpkTech/ComfyUI-SaveAVIF": { "stars": 0, "last_update": "2024-05-22 22:19:21", - "author_account_age_days": 1498 + "author_account_age_days": 1512 }, "https://github.com/pkpkTech/ComfyUI-SaveQueues": { "stars": 1, "last_update": "2024-05-22 22:19:54", - "author_account_age_days": 1498 + "author_account_age_days": 1512 }, "https://github.com/pkpkTech/ComfyUI-TemporaryLoader": { "stars": 1, "last_update": "2024-05-22 22:19:44", - "author_account_age_days": 1498 + "author_account_age_days": 1512 }, "https://github.com/pkpkTech/ComfyUI-ngrok": { "stars": 3, "last_update": "2024-05-22 22:19:32", - "author_account_age_days": 1498 + "author_account_age_days": 1512 }, "https://github.com/portu-sim/comfyui_bmab": { - "stars": 22, + "stars": 26, "last_update": "2024-06-09 14:22:04", - "author_account_age_days": 317 + "author_account_age_days": 331 }, "https://github.com/prodogape/ComfyUI-EasyOCR": { - "stars": 5, - "last_update": "2024-06-14 13:01:27", - "author_account_age_days": 1025 + "stars": 6, + "last_update": "2024-07-03 05:54:03", + "author_account_age_days": 1039 }, "https://github.com/prodogape/ComfyUI-Minio": { "stars": 2, "last_update": "2024-05-23 00:13:38", - "author_account_age_days": 1025 + "author_account_age_days": 1039 }, "https://github.com/prodogape/ComfyUI-OmDet": { "stars": 2, "last_update": "2024-06-14 13:01:34", - "author_account_age_days": 1025 + "author_account_age_days": 1039 + }, + "https://github.com/prodogape/Comfyui-Yolov8-JSON": { + "stars": 12, + "last_update": "2024-07-03 03:59:38", + "author_account_age_days": 1039 }, "https://github.com/prozacgod/comfyui-pzc-multiworkspace": { "stars": 7, "last_update": "2024-05-22 23:11:46", - "author_account_age_days": 5563 + "author_account_age_days": 5577 }, "https://github.com/pythongosssss/ComfyUI-Custom-Scripts": { - "stars": 1317, - "last_update": "2024-06-10 11:49:03", - "author_account_age_days": 492 + "stars": 1364, + "last_update": "2024-06-29 20:47:22", + "author_account_age_days": 506 }, "https://github.com/pythongosssss/ComfyUI-WD14-Tagger": { - "stars": 413, - "last_update": "2024-05-25 18:12:08", - "author_account_age_days": 492 + "stars": 436, + "last_update": "2024-06-20 05:38:50", + "author_account_age_days": 506 }, "https://github.com/qwixiwp/queuetools": { "stars": 0, "last_update": "2024-06-14 10:27:57", - "author_account_age_days": 606 + "author_account_age_days": 620 }, "https://github.com/ramyma/A8R8_ComfyUI_nodes": { - "stars": 4, - "last_update": "2024-05-22 20:55:02", - "author_account_age_days": 3212 + "stars": 39, + "last_update": "2024-06-29 01:20:57", + "author_account_age_days": 3226 }, "https://github.com/randjtw/advance-aesthetic-score": { "stars": 0, "last_update": "2024-05-23 01:14:47", - "author_account_age_days": 755 + "author_account_age_days": 769 }, "https://github.com/ratulrafsan/Comfyui-SAL-VTON": { - "stars": 56, - "last_update": "2024-05-23 00:17:20", - "author_account_age_days": 4489 + "stars": 60, + "last_update": "2024-06-30 02:23:06", + "author_account_age_days": 4503 }, "https://github.com/rcfcu2000/zhihuige-nodes-comfyui": { "stars": 0, "last_update": "2024-05-22 22:13:55", - "author_account_age_days": 3419 + "author_account_age_days": 3433 }, "https://github.com/rcsaquino/comfyui-custom-nodes": { "stars": 1, "last_update": "2024-05-22 22:13:43", - "author_account_age_days": 1506 + "author_account_age_days": 1520 }, "https://github.com/receyuki/comfyui-prompt-reader-node": { - "stars": 206, - "last_update": "2024-06-06 23:39:40", - "author_account_age_days": 2587 + "stars": 214, + "last_update": "2024-06-28 07:20:59", + "author_account_age_days": 2601 }, "https://github.com/redhottensors/ComfyUI-ODE": { - "stars": 10, - "last_update": "2024-06-18 16:24:30", - "author_account_age_days": 134 + "stars": 22, + "last_update": "2024-06-23 22:16:53", + "author_account_age_days": 148 }, "https://github.com/redhottensors/ComfyUI-Prediction": { - "stars": 9, + "stars": 10, "last_update": "2024-06-14 10:25:44", - "author_account_age_days": 134 + "author_account_age_days": 148 }, "https://github.com/rgthree/rgthree-comfy": { - "stars": 686, - "last_update": "2024-06-18 03:20:51", - "author_account_age_days": 4969 + "stars": 731, + "last_update": "2024-07-03 04:39:25", + "author_account_age_days": 4983 + }, + "https://github.com/rhdunn/comfyui-bus-plugin": { + "stars": 1, + "last_update": "2024-06-26 17:38:32", + "author_account_age_days": 5645 }, "https://github.com/richinsley/Comfy-LFO": { "stars": 5, "last_update": "2024-05-22 20:46:30", - "author_account_age_days": 2675 + "author_account_age_days": 2689 }, "https://github.com/ricklove/comfyui-ricklove": { "stars": 0, "last_update": "2024-05-22 23:21:25", - "author_account_age_days": 4827 + "author_account_age_days": 4841 }, "https://github.com/risunobushi/comfyUI_FrequencySeparation_RGB-HSV": { - "stars": 8, + "stars": 12, "last_update": "2024-06-14 10:28:04", - "author_account_age_days": 642 + "author_account_age_days": 656 }, "https://github.com/rklaffehn/rk-comfy-nodes": { "stars": 2, "last_update": "2024-06-14 10:24:43", - "author_account_age_days": 287 + "author_account_age_days": 301 }, "https://github.com/romeobuilderotti/ComfyUI-PNG-Metadata": { "stars": 4, "last_update": "2024-05-22 21:29:25", - "author_account_age_days": 285 + "author_account_age_days": 299 }, "https://github.com/ronniebasak/ComfyUI-Tara-LLM-Integration": { - "stars": 70, - "last_update": "2024-06-14 10:24:55", - "author_account_age_days": 4149 + "stars": 73, + "last_update": "2024-06-25 09:06:23", + "author_account_age_days": 4163 }, "https://github.com/royceschultz/ComfyUI-Notifications": { - "stars": 4, + "stars": 6, "last_update": "2024-05-23 01:23:16", - "author_account_age_days": 2524 + "author_account_age_days": 2538 }, "https://github.com/royceschultz/ComfyUI-TranscriptionTools": { "stars": 12, "last_update": "2024-05-23 01:10:10", - "author_account_age_days": 2524 + "author_account_age_days": 2538 }, "https://github.com/rui40000/RUI-Nodes": { - "stars": 14, + "stars": 15, "last_update": "2024-05-22 22:12:26", - "author_account_age_days": 469 + "author_account_age_days": 483 }, "https://github.com/ruiqutech/ComfyUI-RuiquNodes": { "stars": 0, "last_update": "2024-05-23 01:21:50", - "author_account_age_days": 64 + "author_account_age_days": 78 }, "https://github.com/runtime44/comfyui_r44_nodes": { - "stars": 26, - "last_update": "2024-06-11 10:49:02", - "author_account_age_days": 162 + "stars": 31, + "last_update": "2024-07-01 08:02:04", + "author_account_age_days": 176 }, "https://github.com/saftle/suplex_comfy_nodes": { "stars": 0, "last_update": "2024-05-29 13:09:25", - "author_account_age_days": 4752 + "author_account_age_days": 4766 }, "https://github.com/sdfxai/SDFXBridgeForComfyUI": { - "stars": 4, + "stars": 6, "last_update": "2024-06-14 10:26:56", - "author_account_age_days": 229 + "author_account_age_days": 243 }, "https://github.com/seanlynch/comfyui-optical-flow": { "stars": 24, "last_update": "2024-05-22 20:52:17", - "author_account_age_days": 5300 + "author_account_age_days": 5314 }, "https://github.com/seanlynch/srl-nodes": { "stars": 3, - "last_update": "2024-05-22 21:08:00", - "author_account_age_days": 5300 + "last_update": "2024-06-30 13:47:38", + "author_account_age_days": 5314 }, "https://github.com/sergekatzmann/ComfyUI_Nimbus-Pack": { "stars": 2, "last_update": "2024-05-22 21:34:15", - "author_account_age_days": 3327 + "author_account_age_days": 3341 }, "https://github.com/shadowcz007/comfyui-Image-reward": { "stars": 20, "last_update": "2024-06-14 10:24:49", - "author_account_age_days": 3309 + "author_account_age_days": 3323 }, "https://github.com/shadowcz007/comfyui-consistency-decoder": { "stars": 2, "last_update": "2024-06-14 10:23:35", - "author_account_age_days": 3309 + "author_account_age_days": 3323 }, "https://github.com/shadowcz007/comfyui-edit-mask": { - "stars": 1, - "last_update": "2024-06-17 02:58:56", - "author_account_age_days": 3309 + "stars": 4, + "last_update": "2024-06-20 01:42:48", + "author_account_age_days": 3323 }, "https://github.com/shadowcz007/comfyui-mixlab-nodes": { - "stars": 873, - "last_update": "2024-06-19 03:10:50", - "author_account_age_days": 3309 + "stars": 899, + "last_update": "2024-06-23 08:50:32", + "author_account_age_days": 3323 }, "https://github.com/shadowcz007/comfyui-sound-lab": { - "stars": 43, - "last_update": "2024-06-17 09:49:50", - "author_account_age_days": 3309 + "stars": 59, + "last_update": "2024-06-20 02:07:31", + "author_account_age_days": 3323 }, "https://github.com/shadowcz007/comfyui-ultralytics-yolo": { "stars": 17, - "last_update": "2024-06-05 10:29:22", - "author_account_age_days": 3309 + "last_update": "2024-06-22 09:06:04", + "author_account_age_days": 3323 }, "https://github.com/shi3z/ComfyUI_Memeplex_DALLE": { "stars": 2, "last_update": "2024-05-23 00:14:25", - "author_account_age_days": 5088 + "author_account_age_days": 5102 }, "https://github.com/shiimizu/ComfyUI-PhotoMaker-Plus": { - "stars": 140, + "stars": 143, "last_update": "2024-04-17 09:02:51", - "author_account_age_days": 1760 + "author_account_age_days": 1774 }, "https://github.com/shiimizu/ComfyUI-TiledDiffusion": { - "stars": 206, + "stars": 215, "last_update": "2024-05-14 22:01:41", - "author_account_age_days": 1760 + "author_account_age_days": 1774 }, "https://github.com/shiimizu/ComfyUI_smZNodes": { - "stars": 148, + "stars": 154, "last_update": "2024-06-18 07:30:24", - "author_account_age_days": 1760 + "author_account_age_days": 1774 }, "https://github.com/shingo1228/ComfyUI-SDXL-EmptyLatentImage": { "stars": 25, "last_update": "2024-05-22 20:41:29", - "author_account_age_days": 2218 + "author_account_age_days": 2232 }, "https://github.com/shingo1228/ComfyUI-send-eagle-slim": { - "stars": 20, + "stars": 22, "last_update": "2024-05-22 20:41:15", - "author_account_age_days": 2218 + "author_account_age_days": 2232 }, "https://github.com/shinich39/comfyui-load-image-in-seq": { "stars": 3, - "last_update": "2024-05-23 00:20:53", - "author_account_age_days": 307 + "last_update": "2024-07-03 03:40:21", + "author_account_age_days": 321 }, "https://github.com/shinich39/comfyui-local-db": { "stars": 1, - "last_update": "2024-05-23 00:21:08", - "author_account_age_days": 307 + "last_update": "2024-07-03 03:42:46", + "author_account_age_days": 321 }, "https://github.com/shinich39/comfyui-ramdom-node": { "stars": 2, - "last_update": "2024-06-14 10:25:13", - "author_account_age_days": 307 + "last_update": "2024-07-03 03:11:28", + "author_account_age_days": 321 }, "https://github.com/shobhitic/ComfyUI-PlusMinusTextClip": { - "stars": 0, - "last_update": "2024-06-14 14:00:29", - "author_account_age_days": 4302 + "stars": 3, + "last_update": "2024-06-20 13:57:29", + "author_account_age_days": 4316 }, "https://github.com/shockz0rz/ComfyUI_InterpolateEverything": { "stars": 23, "last_update": "2024-05-22 18:13:49", - "author_account_age_days": 1621 + "author_account_age_days": 1635 }, "https://github.com/shockz0rz/comfy-easy-grids": { - "stars": 11, + "stars": 12, "last_update": "2024-05-22 18:14:05", - "author_account_age_days": 1621 + "author_account_age_days": 1635 }, "https://github.com/siliconflow/onediff_comfy_nodes": { - "stars": 11, - "last_update": "2024-05-22 22:23:22", - "author_account_age_days": 300 + "stars": 13, + "last_update": "2024-06-24 10:08:11", + "author_account_age_days": 314 }, "https://github.com/sipherxyz/comfyui-art-venture": { - "stars": 82, - "last_update": "2024-05-22 18:15:39", - "author_account_age_days": 1102 + "stars": 89, + "last_update": "2024-06-28 02:06:23", + "author_account_age_days": 1116 }, "https://github.com/skfoo/ComfyUI-Coziness": { - "stars": 21, + "stars": 22, "last_update": "2024-05-27 18:24:29", - "author_account_age_days": 2077 + "author_account_age_days": 2091 + }, + "https://github.com/slyt/comfyui-ollama-nodes": { + "stars": 0, + "last_update": "2024-06-25 03:31:41", + "author_account_age_days": 3948 }, "https://github.com/smagnetize/kb-comfyui-nodes": { "stars": 0, "last_update": "2024-06-14 12:00:45", - "author_account_age_days": 2709 + "author_account_age_days": 2723 }, "https://github.com/smthemex/ComfyUI_ChatGLM_API": { - "stars": 17, - "last_update": "2024-06-14 12:00:22", - "author_account_age_days": 349 + "stars": 18, + "last_update": "2024-06-25 04:10:29", + "author_account_age_days": 363 }, "https://github.com/smthemex/ComfyUI_CustomNet": { "stars": 4, - "last_update": "2024-06-14 11:01:27", - "author_account_age_days": 349 + "last_update": "2024-06-25 01:04:17", + "author_account_age_days": 363 }, "https://github.com/smthemex/ComfyUI_HiDiffusion_Pro": { - "stars": 22, - "last_update": "2024-06-18 02:10:24", - "author_account_age_days": 349 + "stars": 28, + "last_update": "2024-07-03 10:06:17", + "author_account_age_days": 363 }, "https://github.com/smthemex/ComfyUI_ID_Animator": { - "stars": 14, - "last_update": "2024-06-15 10:15:03", - "author_account_age_days": 349 + "stars": 18, + "last_update": "2024-06-27 08:32:11", + "author_account_age_days": 363 }, "https://github.com/smthemex/ComfyUI_Llama3_8B": { - "stars": 15, - "last_update": "2024-06-15 07:14:32", - "author_account_age_days": 349 + "stars": 17, + "last_update": "2024-06-25 00:49:01", + "author_account_age_days": 363 + }, + "https://github.com/smthemex/ComfyUI_MS_Diffusion": { + "stars": 1, + "last_update": "2024-07-03 10:43:23", + "author_account_age_days": 363 }, "https://github.com/smthemex/ComfyUI_ParlerTTS": { - "stars": 18, - "last_update": "2024-05-15 13:48:05", - "author_account_age_days": 349 + "stars": 20, + "last_update": "2024-06-25 00:38:01", + "author_account_age_days": 363 }, "https://github.com/smthemex/ComfyUI_Pic2Story": { "stars": 3, - "last_update": "2024-06-14 10:28:28", - "author_account_age_days": 349 + "last_update": "2024-06-25 01:16:30", + "author_account_age_days": 363 }, "https://github.com/smthemex/ComfyUI_Pipeline_Tool": { - "stars": 6, - "last_update": "2024-06-14 10:28:53", - "author_account_age_days": 349 + "stars": 8, + "last_update": "2024-06-25 01:13:53", + "author_account_age_days": 363 }, "https://github.com/smthemex/ComfyUI_Pops": { - "stars": 7, - "last_update": "2024-06-14 13:59:12", - "author_account_age_days": 349 + "stars": 13, + "last_update": "2024-06-27 10:13:14", + "author_account_age_days": 363 }, "https://github.com/smthemex/ComfyUI_StableAudio_Open": { - "stars": 5, - "last_update": "2024-06-14 10:27:38", - "author_account_age_days": 349 + "stars": 6, + "last_update": "2024-06-25 00:56:09", + "author_account_age_days": 363 }, "https://github.com/smthemex/ComfyUI_StoryDiffusion": { - "stars": 45, - "last_update": "2024-06-17 00:49:03", - "author_account_age_days": 349 + "stars": 65, + "last_update": "2024-07-03 10:04:00", + "author_account_age_days": 363 + }, + "https://github.com/smthemex/ComfyUI_Streamv2v_Plus": { + "stars": 0, + "last_update": "2024-06-25 00:52:41", + "author_account_age_days": 363 }, "https://github.com/space-nuko/ComfyUI-Disco-Diffusion": { "stars": 42, "last_update": "2024-05-22 18:10:36", - "author_account_age_days": 2719 + "author_account_age_days": 2733 }, "https://github.com/space-nuko/ComfyUI-OpenPose-Editor": { - "stars": 151, + "stars": 154, "last_update": "2024-05-22 18:10:49", - "author_account_age_days": 2719 + "author_account_age_days": 2733 }, "https://github.com/space-nuko/nui-suite": { "stars": 10, "last_update": "2024-05-22 18:11:04", - "author_account_age_days": 2719 + "author_account_age_days": 2733 + }, + "https://github.com/spacepxl/ComfyUI-Florence-2": { + "stars": 37, + "last_update": "2024-06-29 13:13:01", + "author_account_age_days": 303 }, "https://github.com/spacepxl/ComfyUI-HQ-Image-Save": { - "stars": 29, - "last_update": "2024-06-16 07:03:58", - "author_account_age_days": 289 + "stars": 32, + "last_update": "2024-06-21 04:42:58", + "author_account_age_days": 303 }, "https://github.com/spacepxl/ComfyUI-Image-Filters": { - "stars": 78, - "last_update": "2024-06-15 22:23:37", - "author_account_age_days": 289 + "stars": 84, + "last_update": "2024-06-22 01:19:31", + "author_account_age_days": 303 }, "https://github.com/spacepxl/ComfyUI-RAVE": { - "stars": 79, + "stars": 82, "last_update": "2024-05-22 20:56:19", - "author_account_age_days": 289 + "author_account_age_days": 303 }, "https://github.com/spacepxl/ComfyUI-StyleGan": { - "stars": 3, + "stars": 5, "last_update": "2024-06-10 20:16:34", - "author_account_age_days": 289 + "author_account_age_days": 303 }, "https://github.com/spinagon/ComfyUI-seam-carving": { - "stars": 14, + "stars": 15, "last_update": "2024-05-23 05:07:00", - "author_account_age_days": 4735 + "author_account_age_days": 4749 }, "https://github.com/spinagon/ComfyUI-seamless-tiling": { - "stars": 74, + "stars": 76, "last_update": "2024-05-23 05:03:42", - "author_account_age_days": 4735 + "author_account_age_days": 4749 }, "https://github.com/spro/comfyui-mirror": { "stars": 4, "last_update": "2024-05-22 20:50:25", - "author_account_age_days": 5226 + "author_account_age_days": 5240 }, "https://github.com/ssitu/ComfyUI_UltimateSDUpscale": { - "stars": 620, - "last_update": "2024-05-22 18:09:32", - "author_account_age_days": 1684 + "stars": 646, + "last_update": "2024-06-27 04:16:12", + "author_account_age_days": 1698 }, "https://github.com/ssitu/ComfyUI_fabric": { - "stars": 82, + "stars": 84, "last_update": "2024-05-22 18:10:19", - "author_account_age_days": 1684 + "author_account_age_days": 1698 }, "https://github.com/ssitu/ComfyUI_restart_sampling": { - "stars": 75, + "stars": 77, "last_update": "2024-05-22 18:09:49", - "author_account_age_days": 1684 + "author_account_age_days": 1698 }, "https://github.com/ssitu/ComfyUI_roop": { - "stars": 59, + "stars": 61, "last_update": "2024-05-22 18:10:03", - "author_account_age_days": 1684 + "author_account_age_days": 1698 }, "https://github.com/stavsap/comfyui-ollama": { - "stars": 190, - "last_update": "2024-06-18 21:27:18", - "author_account_age_days": 4078 + "stars": 201, + "last_update": "2024-06-28 04:00:40", + "author_account_age_days": 4092 }, "https://github.com/storyicon/comfyui_musev_evolved": { - "stars": 13, + "stars": 14, "last_update": "2024-06-14 11:02:40", - "author_account_age_days": 2547 + "author_account_age_days": 2561 }, "https://github.com/storyicon/comfyui_segment_anything": { - "stars": 509, + "stars": 530, "last_update": "2024-05-31 07:36:30", - "author_account_age_days": 2547 + "author_account_age_days": 2561 }, "https://github.com/strimmlarn/ComfyUI_Strimmlarns_aesthetic_score": { "stars": 25, "last_update": "2024-06-17 10:01:44", - "author_account_age_days": 2621 + "author_account_age_days": 2635 }, "https://github.com/styler00dollar/ComfyUI-deepcache": { "stars": 8, "last_update": "2024-05-22 22:18:18", - "author_account_age_days": 1840 + "author_account_age_days": 1854 }, "https://github.com/styler00dollar/ComfyUI-sudo-latent-upscale": { "stars": 27, "last_update": "2024-05-22 22:18:07", - "author_account_age_days": 1840 + "author_account_age_days": 1854 }, "https://github.com/subtleGradient/TinkerBot-tech-for-ComfyUI-Touchpad": { - "stars": 16, + "stars": 20, "last_update": "2024-06-19 04:30:39", - "author_account_age_days": 5925 + "author_account_age_days": 5939 }, "https://github.com/sugarkwork/comfyui_cohere": { "stars": 0, "last_update": "2024-06-14 13:59:30", - "author_account_age_days": 870 + "author_account_age_days": 884 }, "https://github.com/sugarkwork/comfyui_tag_fillter": { - "stars": 16, - "last_update": "2024-05-27 13:38:24", - "author_account_age_days": 870 + "stars": 17, + "last_update": "2024-07-02 00:21:03", + "author_account_age_days": 884 }, "https://github.com/superyoman/comfyui_lumaAPI": { - "stars": 10, + "stars": 11, "last_update": "2024-06-17 21:00:05", - "author_account_age_days": 443 + "author_account_age_days": 457 }, "https://github.com/syllebra/bilbox-comfyui": { - "stars": 80, + "stars": 82, "last_update": "2024-05-22 20:40:43", - "author_account_age_days": 3131 + "author_account_age_days": 3145 }, "https://github.com/sylym/comfy_vid2vid": { - "stars": 57, + "stars": 58, "last_update": "2024-05-22 17:53:40", - "author_account_age_days": 1893 + "author_account_age_days": 1907 }, "https://github.com/szhublox/ambw_comfyui": { "stars": 12, "last_update": "2024-05-22 18:04:57", - "author_account_age_days": 1002 + "author_account_age_days": 1016 }, "https://github.com/taabata/LCM_Inpaint-Outpaint_Comfy": { "stars": 223, "last_update": "2024-06-17 10:01:50", - "author_account_age_days": 1677 + "author_account_age_days": 1691 }, "https://github.com/talesofai/comfyui-browser": { - "stars": 408, - "last_update": "2024-05-21 20:51:18", - "author_account_age_days": 550 + "stars": 426, + "last_update": "2024-07-01 12:41:20", + "author_account_age_days": 564 }, "https://github.com/teward/ComfyUI-Helper-Nodes": { "stars": 4, "last_update": "2024-05-23 01:22:01", - "author_account_age_days": 5093 + "author_account_age_days": 5107 }, "https://github.com/theUpsider/ComfyUI-Logic": { - "stars": 95, - "last_update": "2024-05-22 20:35:47", - "author_account_age_days": 2717 + "stars": 111, + "last_update": "2024-07-02 09:38:11", + "author_account_age_days": 2731 }, "https://github.com/theUpsider/ComfyUI-Styles_CSV_Loader": { "stars": 28, - "last_update": "2024-05-22 20:31:14", - "author_account_age_days": 2717 + "last_update": "2024-07-01 08:45:52", + "author_account_age_days": 2731 }, "https://github.com/thecooltechguy/ComfyUI-ComfyRun": { "stars": 78, "last_update": "2024-05-22 21:33:11", - "author_account_age_days": 2417 + "author_account_age_days": 2431 }, "https://github.com/thecooltechguy/ComfyUI-ComfyWorkflows": { "stars": 32, "last_update": "2024-05-22 21:33:47", - "author_account_age_days": 2417 + "author_account_age_days": 2431 }, "https://github.com/thecooltechguy/ComfyUI-MagicAnimate": { - "stars": 196, + "stars": 200, "last_update": "2024-05-22 21:33:35", - "author_account_age_days": 2417 + "author_account_age_days": 2431 }, "https://github.com/thecooltechguy/ComfyUI-Stable-Video-Diffusion": { "stars": 287, "last_update": "2024-05-24 22:14:42", - "author_account_age_days": 2417 + "author_account_age_days": 2431 }, "https://github.com/tiankuan93/ComfyUI-V-Express": { - "stars": 77, - "last_update": "2024-06-17 13:32:21", - "author_account_age_days": 2945 + "stars": 85, + "last_update": "2024-06-26 02:41:00", + "author_account_age_days": 2959 }, "https://github.com/tianlang0704/ComfyUI-StableProjectorzBridge": { - "stars": 4, - "last_update": "2024-06-15 09:09:38", - "author_account_age_days": 3320 + "stars": 6, + "last_update": "2024-06-23 09:44:48", + "author_account_age_days": 3334 }, "https://github.com/tmagara/ComfyUI-Prediction-Boost": { - "stars": 0, - "last_update": "2024-06-14 13:59:42", - "author_account_age_days": 4370 + "stars": 1, + "last_update": "2024-06-21 05:28:58", + "author_account_age_days": 4384 }, "https://github.com/tocubed/ComfyUI-AudioReactor": { "stars": 8, "last_update": "2024-05-22 22:21:57", - "author_account_age_days": 3854 + "author_account_age_days": 3868 }, "https://github.com/tooldigital/ComfyUI-Yolo-Cropper": { - "stars": 4, + "stars": 5, "last_update": "2024-06-14 13:59:48", - "author_account_age_days": 4312 + "author_account_age_days": 4326 }, "https://github.com/toxicwind/ComfyUI-TTools": { "stars": 0, "last_update": "2024-06-14 13:02:56", - "author_account_age_days": 4365 + "author_account_age_days": 4379 }, "https://github.com/toyxyz/ComfyUI_toyxyz_test_nodes": { - "stars": 429, + "stars": 463, "last_update": "2024-06-18 15:27:19", - "author_account_age_days": 3644 + "author_account_age_days": 3658 }, "https://github.com/traugdor/ComfyUI-quadMoons-nodes": { - "stars": 8, - "last_update": "2024-06-11 00:02:55", - "author_account_age_days": 3815 + "stars": 9, + "last_update": "2024-06-22 14:28:25", + "author_account_age_days": 3829 }, "https://github.com/trojblue/trNodes": { "stars": 8, "last_update": "2024-05-22 18:04:36", - "author_account_age_days": 2252 + "author_account_age_days": 2266 }, "https://github.com/trumanwong/ComfyUI-NSFW-Detection": { - "stars": 16, + "stars": 19, "last_update": "2024-05-23 01:27:29", - "author_account_age_days": 2955 + "author_account_age_days": 2969 }, "https://github.com/tsogzark/ComfyUI-load-image-from-url": { - "stars": 5, + "stars": 7, "last_update": "2024-06-14 13:59:05", - "author_account_age_days": 1523 + "author_account_age_days": 1537 }, "https://github.com/ttulttul/ComfyUI-Iterative-Mixer": { - "stars": 97, + "stars": 99, "last_update": "2024-06-13 22:29:53", - "author_account_age_days": 4752 + "author_account_age_days": 4766 }, "https://github.com/ttulttul/ComfyUI-Tensor-Operations": { "stars": 5, "last_update": "2024-06-12 21:55:39", - "author_account_age_days": 4752 - }, - "https://github.com/turkyden/ComfyUI-Comic": { - "stars": 1, - "last_update": "2024-06-14 13:02:14", - "author_account_age_days": 2744 - }, - "https://github.com/turkyden/ComfyUI-Sticker": { - "stars": 0, - "last_update": "2024-06-11 03:51:33", - "author_account_age_days": 2744 + "author_account_age_days": 4766 }, "https://github.com/tusharbhutt/Endless-Nodes": { "stars": 22, "last_update": "2024-06-14 12:02:17", - "author_account_age_days": 2660 + "author_account_age_days": 2674 }, "https://github.com/twri/sdxl_prompt_styler": { - "stars": 602, + "stars": 632, "last_update": "2024-05-22 18:16:58", - "author_account_age_days": 4063 + "author_account_age_days": 4077 }, "https://github.com/txt2any/ComfyUI-PromptOrganizer": { "stars": 0, "last_update": "2024-05-23 01:10:33", - "author_account_age_days": 79 + "author_account_age_days": 93 }, "https://github.com/ty0x2333/ComfyUI-Dev-Utils": { - "stars": 36, + "stars": 41, "last_update": "2024-06-03 15:06:13", - "author_account_age_days": 3697 + "author_account_age_days": 3711 }, "https://github.com/tzwm/comfyui-profiler": { - "stars": 40, - "last_update": "2024-06-14 07:05:45", - "author_account_age_days": 4764 + "stars": 42, + "last_update": "2024-06-30 10:12:57", + "author_account_age_days": 4778 }, "https://github.com/uarefans/ComfyUI-Fans": { "stars": 12, "last_update": "2024-05-22 20:34:07", - "author_account_age_days": 1267 + "author_account_age_days": 1281 }, "https://github.com/uetuluk/comfyui-webcam-node": { "stars": 2, "last_update": "2024-06-14 08:25:13", - "author_account_age_days": 2309 + "author_account_age_days": 2323 }, "https://github.com/unwdef/unwdef-nodes-comfyui": { "stars": 1, - "last_update": "2024-06-14 07:05:51", - "author_account_age_days": 68 + "last_update": "2024-06-27 23:14:09", + "author_account_age_days": 82 }, "https://github.com/vanche1212/ComfyUI-ZMG-Nodes": { "stars": 3, - "last_update": "2024-06-14 07:06:03", - "author_account_age_days": 2953 + "last_update": "2024-06-25 04:48:19", + "author_account_age_days": 2967 }, "https://github.com/vanillacode314/SimpleWildcardsComfyUI": { "stars": 3, - "last_update": "2024-06-14 07:06:09", - "author_account_age_days": 852 + "last_update": "2024-06-28 10:57:45", + "author_account_age_days": 866 + }, + "https://github.com/veighnsche/comfyui_gr85": { + "stars": 1, + "last_update": "2024-06-27 15:00:08", + "author_account_age_days": 3109 }, "https://github.com/victorchall/comfyui_webcamcapture": { - "stars": 5, - "last_update": "2024-05-31 18:01:11", - "author_account_age_days": 3140 + "stars": 6, + "last_update": "2024-06-22 18:59:10", + "author_account_age_days": 3154 }, "https://github.com/vienteck/ComfyUI-Chat-GPT-Integration": { - "stars": 26, + "stars": 27, "last_update": "2024-05-22 22:11:14", - "author_account_age_days": 3422 + "author_account_age_days": 3436 }, "https://github.com/violet-chen/comfyui-psd2png": { "stars": 16, "last_update": "2024-06-12 15:30:14", - "author_account_age_days": 1393 + "author_account_age_days": 1407 }, "https://github.com/viperyl/ComfyUI-BiRefNet": { - "stars": 155, - "last_update": "2024-05-23 00:18:06", - "author_account_age_days": 2027 + "stars": 162, + "last_update": "2024-06-20 15:25:49", + "author_account_age_days": 2042 }, "https://github.com/viperyl/ComfyUI-RGT": { - "stars": 4, - "last_update": "2024-06-14 09:35:50", - "author_account_age_days": 2027 + "stars": 5, + "last_update": "2024-06-20 15:33:50", + "author_account_age_days": 2042 }, "https://github.com/vivax3794/ComfyUI-Vivax-Nodes": { "stars": 3, "last_update": "2024-05-23 00:10:56", - "author_account_age_days": 1833 + "author_account_age_days": 1847 }, "https://github.com/vsevolod-oparin/comfyui-kandinsky22": { - "stars": 6, + "stars": 7, "last_update": "2024-05-23 00:14:03", - "author_account_age_days": 4979 + "author_account_age_days": 4993 }, "https://github.com/wallish77/wlsh_nodes": { - "stars": 80, - "last_update": "2024-05-22 18:21:28", - "author_account_age_days": 2215 + "stars": 84, + "last_update": "2024-06-19 12:01:29", + "author_account_age_days": 2229 }, "https://github.com/wandbrandon/comfyui-pixel": { "stars": 4, "last_update": "2024-06-14 07:07:09", - "author_account_age_days": 3378 + "author_account_age_days": 3392 }, "https://github.com/web3nomad/ComfyUI_Invisible_Watermark": { "stars": 1, "last_update": "2024-05-23 01:16:54", - "author_account_age_days": 962 + "author_account_age_days": 976 }, "https://github.com/wei30172/comfygen": { - "stars": 4, + "stars": 5, "last_update": "2024-05-23 00:21:19", - "author_account_age_days": 1607 + "author_account_age_days": 1621 }, "https://github.com/whatbirdisthat/cyberdolphin": { "stars": 14, "last_update": "2024-05-23 03:43:08", - "author_account_age_days": 5482 + "author_account_age_days": 5496 }, "https://github.com/whmc76/ComfyUI-Openpose-Editor-Plus": { - "stars": 20, - "last_update": "2024-05-22 21:28:27", - "author_account_age_days": 446 + "stars": 29, + "last_update": "2024-06-20 13:52:34", + "author_account_age_days": 461 }, "https://github.com/wmatson/easy-comfy-nodes": { "stars": 13, - "last_update": "2024-06-14 07:06:57", - "author_account_age_days": 4112 + "last_update": "2024-06-24 19:38:25", + "author_account_age_days": 4126 }, "https://github.com/wolfden/ComfyUi_PromptStylers": { - "stars": 64, + "stars": 65, "last_update": "2024-05-22 18:17:46", - "author_account_age_days": 5716 + "author_account_age_days": 5730 }, "https://github.com/wolfden/ComfyUi_String_Function_Tree": { "stars": 8, "last_update": "2024-05-22 18:29:16", - "author_account_age_days": 5716 + "author_account_age_days": 5730 }, "https://github.com/wujm424606/ComfyUi-Ollama-YN": { - "stars": 11, - "last_update": "2024-06-14 07:06:39", - "author_account_age_days": 2257 + "stars": 17, + "last_update": "2024-06-26 05:50:44", + "author_account_age_days": 2271 }, "https://github.com/wutipong/ComfyUI-TextUtils": { "stars": 1, "last_update": "2024-06-14 09:34:31", - "author_account_age_days": 4180 + "author_account_age_days": 4194 }, "https://github.com/wwwins/ComfyUI-Simple-Aspect-Ratio": { "stars": 1, "last_update": "2024-05-22 22:22:25", - "author_account_age_days": 5045 + "author_account_age_days": 5059 }, "https://github.com/xXAdonesXx/NodeGPT": { - "stars": 324, - "last_update": "2024-06-14 07:07:03", - "author_account_age_days": 1473 + "stars": 326, + "last_update": "2024-06-20 11:41:30", + "author_account_age_days": 1487 }, "https://github.com/xiaoxiaodesha/hd_node": { "stars": 7, "last_update": "2024-06-11 02:36:48", - "author_account_age_days": 2869 + "author_account_age_days": 2883 }, "https://github.com/xliry/ComfyUI_SendDiscord": { "stars": 0, "last_update": "2024-05-23 02:21:38", - "author_account_age_days": 1268 + "author_account_age_days": 1282 }, "https://github.com/xuhongming251/ComfyUI-GPEN": { "stars": 2, "last_update": "2024-06-15 14:33:37", - "author_account_age_days": 4101 + "author_account_age_days": 4115 }, "https://github.com/xuhongming251/ComfyUI-MuseTalkUtils": { - "stars": 10, + "stars": 11, "last_update": "2024-06-15 14:32:32", - "author_account_age_days": 4101 + "author_account_age_days": 4115 }, "https://github.com/yffyhk/comfyui_auto_danbooru": { "stars": 0, "last_update": "2024-05-22 23:23:03", - "author_account_age_days": 3716 + "author_account_age_days": 3730 + }, + "https://github.com/yiwangsimple/ComfyUI_GroqChat": { + "stars": 16, + "last_update": "2024-07-02 13:59:13", + "author_account_age_days": 561 }, "https://github.com/yolain/ComfyUI-Easy-Use": { - "stars": 493, - "last_update": "2024-06-16 08:15:04", - "author_account_age_days": 1335 + "stars": 537, + "last_update": "2024-07-03 06:58:51", + "author_account_age_days": 1349 }, "https://github.com/yolanother/DTAIComfyImageSubmit": { "stars": 1, "last_update": "2024-05-22 18:14:56", - "author_account_age_days": 4858 + "author_account_age_days": 4872 }, "https://github.com/yolanother/DTAIComfyLoaders": { "stars": 1, "last_update": "2024-05-22 18:14:44", - "author_account_age_days": 4858 + "author_account_age_days": 4872 }, "https://github.com/yolanother/DTAIComfyPromptAgent": { "stars": 5, "last_update": "2024-05-22 18:14:18", - "author_account_age_days": 4858 + "author_account_age_days": 4872 }, "https://github.com/yolanother/DTAIComfyQRCodes": { "stars": 2, "last_update": "2024-05-22 18:15:09", - "author_account_age_days": 4858 + "author_account_age_days": 4872 }, "https://github.com/yolanother/DTAIComfyVariables": { - "stars": 7, + "stars": 8, "last_update": "2024-05-22 18:15:21", - "author_account_age_days": 4858 + "author_account_age_days": 4872 }, "https://github.com/yolanother/DTAIImageToTextNode": { "stars": 15, "last_update": "2024-05-22 18:14:31", - "author_account_age_days": 4858 + "author_account_age_days": 4872 }, "https://github.com/youyegit/tdxh_node_comfyui": { "stars": 2, "last_update": "2024-05-23 17:55:42", - "author_account_age_days": 423 + "author_account_age_days": 437 }, "https://github.com/yuvraj108c/ComfyUI-Depth-Anything-Tensorrt": { - "stars": 61, - "last_update": "2024-06-14 08:07:23", - "author_account_age_days": 2147 + "stars": 66, + "last_update": "2024-07-02 08:09:45", + "author_account_age_days": 2161 }, "https://github.com/yuvraj108c/ComfyUI-PiperTTS": { - "stars": 24, + "stars": 26, "last_update": "2024-05-22 23:17:27", - "author_account_age_days": 2147 + "author_account_age_days": 2161 }, "https://github.com/yuvraj108c/ComfyUI-Pronodes": { "stars": 1, "last_update": "2024-05-22 23:16:51", - "author_account_age_days": 2147 + "author_account_age_days": 2161 }, "https://github.com/yuvraj108c/ComfyUI-Upscaler-Tensorrt": { - "stars": 37, + "stars": 41, "last_update": "2024-05-31 05:50:59", - "author_account_age_days": 2147 + "author_account_age_days": 2161 }, "https://github.com/yuvraj108c/ComfyUI-Vsgan": { "stars": 2, "last_update": "2024-05-22 23:17:02", - "author_account_age_days": 2147 + "author_account_age_days": 2161 }, "https://github.com/yuvraj108c/ComfyUI-Whisper": { - "stars": 49, + "stars": 54, "last_update": "2024-05-31 05:59:22", - "author_account_age_days": 2147 + "author_account_age_days": 2161 + }, + "https://github.com/yuvraj108c/ComfyUI-YoloNasPose-Tensorrt": { + "stars": 5, + "last_update": "2024-06-28 15:59:14", + "author_account_age_days": 2161 + }, + "https://github.com/za-wa-n-go/ComfyUI_Zwng_Nodes": { + "stars": 2, + "last_update": "2024-07-02 14:57:01", + "author_account_age_days": 597 }, "https://github.com/zcfrank1st/Comfyui-Toolbox": { "stars": 4, "last_update": "2024-05-22 22:08:07", - "author_account_age_days": 4410 + "author_account_age_days": 4424 }, "https://github.com/zcfrank1st/Comfyui-Yolov8": { "stars": 17, "last_update": "2024-06-14 07:08:40", - "author_account_age_days": 4410 + "author_account_age_days": 4424 }, "https://github.com/zcfrank1st/comfyui_visual_anagrams": { "stars": 5, "last_update": "2024-06-14 07:07:27", - "author_account_age_days": 4410 + "author_account_age_days": 4424 }, "https://github.com/zer0TF/cute-comfy": { - "stars": 27, + "stars": 28, "last_update": "2024-05-22 21:18:53", - "author_account_age_days": 2665 + "author_account_age_days": 2679 + }, + "https://github.com/zeroxoxo/ComfyUI-Fast-Style-Transfer": { + "stars": 51, + "last_update": "2024-06-30 14:31:09", + "author_account_age_days": 2452 }, "https://github.com/zfkun/ComfyUI_zfkun": { - "stars": 13, + "stars": 14, "last_update": "2024-05-27 11:21:51", - "author_account_age_days": 4858 + "author_account_age_days": 4872 }, "https://github.com/zhangp365/ComfyUI-utils-nodes": { "stars": 6, - "last_update": "2024-06-10 01:49:46", - "author_account_age_days": 286 + "last_update": "2024-06-27 08:33:19", + "author_account_age_days": 300 }, "https://github.com/zhongpei/ComfyUI-InstructIR": { - "stars": 58, + "stars": 60, "last_update": "2024-05-22 23:19:43", - "author_account_age_days": 3454 + "author_account_age_days": 3468 }, "https://github.com/zhongpei/Comfyui_image2prompt": { - "stars": 224, + "stars": 240, "last_update": "2024-05-22 23:19:30", - "author_account_age_days": 3454 + "author_account_age_days": 3468 }, "https://github.com/zhuanqianfish/ComfyUI-EasyNode": { - "stars": 57, + "stars": 58, "last_update": "2024-06-14 07:10:18", - "author_account_age_days": 4229 + "author_account_age_days": 4244 }, "https://github.com/zhulu111/ComfyUI_Bxb": { - "stars": 3, - "last_update": "2024-06-19 06:37:04", - "author_account_age_days": 34 + "stars": 77, + "last_update": "2024-07-03 08:15:48", + "author_account_age_days": 48 }, "https://github.com/zohac/ComfyUI_ZC_DrawShape": { - "stars": 1, - "last_update": "2024-06-14 07:10:25", - "author_account_age_days": 2656 + "stars": 3, + "last_update": "2024-06-25 15:05:28", + "author_account_age_days": 2670 }, "https://github.com/zombieyang/sd-ppp": { - "stars": 9, - "last_update": "2024-06-16 02:45:04", - "author_account_age_days": 3912 + "stars": 18, + "last_update": "2024-06-22 08:51:58", + "author_account_age_days": 3926 } } \ No newline at end of file diff --git a/glob/manager_core.py b/glob/manager_core.py index 5a608771..ba3059aa 100644 --- a/glob/manager_core.py +++ b/glob/manager_core.py @@ -23,12 +23,17 @@ sys.path.append(glob_path) import cm_global from manager_util import * -version = [2, 38, 2] +version = [2, 43] version_str = f"V{version[0]}.{version[1]}" + (f'.{version[2]}' if len(version) > 2 else '') + comfyui_manager_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) custom_nodes_path = os.path.abspath(os.path.join(comfyui_manager_path, '..')) -comfy_path = os.path.abspath(os.path.join(custom_nodes_path, '..')) + +comfy_path = os.environ.get('COMFYUI_PATH') +if comfy_path is None: + comfy_path = os.path.abspath(os.path.join(custom_nodes_path, '..')) + channel_list_path = os.path.join(comfyui_manager_path, 'channels.list') config_path = os.path.join(comfyui_manager_path, "config.ini") startup_script_path = os.path.join(comfyui_manager_path, "startup-scripts") @@ -181,7 +186,9 @@ class ManagerFuncs: print(f"[ComfyUI-Manager] Unexpected behavior: `{cmd}`") return 0 - subprocess.check_call(cmd, cwd=cwd) + new_env = os.environ.copy() + new_env["COMFYUI_PATH"] = comfy_path + subprocess.check_call(cmd, cwd=cwd, env=new_env) return 0 @@ -325,6 +332,8 @@ def __win_check_git_update(path, do_fetch=False, do_update=False): else: command = [sys.executable, git_script_path, "--check", path] + new_env = os.environ.copy() + new_env["COMFYUI_PATH"] = comfy_path process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=custom_nodes_path) output, _ = process.communicate() output = output.decode('utf-8').strip() @@ -334,10 +343,10 @@ def __win_check_git_update(path, do_fetch=False, do_update=False): safedir_path = path.replace('\\', '/') try: print(f"[ComfyUI-Manager] Try fixing 'dubious repository' error on '{safedir_path}' repo") - process = subprocess.Popen(['git', 'config', '--global', '--add', 'safe.directory', safedir_path], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + process = subprocess.Popen(['git', 'config', '--global', '--add', 'safe.directory', safedir_path], env=new_env, stdout=subprocess.PIPE, stderr=subprocess.PIPE) output, _ = process.communicate() - process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + process = subprocess.Popen(command, env=new_env, stdout=subprocess.PIPE, stderr=subprocess.PIPE) output, _ = process.communicate() output = output.decode('utf-8').strip() except Exception: @@ -376,8 +385,10 @@ def __win_check_git_update(path, do_fetch=False, do_update=False): def __win_check_git_pull(path): + new_env = os.environ.copy() + new_env["COMFYUI_PATH"] = comfy_path command = [sys.executable, git_script_path, "--pull", path] - process = subprocess.Popen(command, cwd=custom_nodes_path) + process = subprocess.Popen(command, env=new_env, cwd=custom_nodes_path) process.wait() diff --git a/glob/manager_downloader.py b/glob/manager_downloader.py new file mode 100644 index 00000000..8a8c73c0 --- /dev/null +++ b/glob/manager_downloader.py @@ -0,0 +1,70 @@ +import os +from urllib.parse import urlparse + +aria2 = os.getenv('COMFYUI_MANAGER_ARIA2_SERVER') +HF_ENDPOINT = os.getenv('HF_ENDPOINT') + +if aria2 is not None: + secret = os.getenv('COMFYUI_MANAGER_ARIA2_SECRET') + url = urlparse(aria2) + port = url.port + host = url.scheme + '://' + url.hostname + import aria2p + + aria2 = aria2p.API(aria2p.Client(host=host, port=port, secret=secret)) + + +def download_url(model_url: str, model_dir: str, filename: str): + if aria2: + return aria2_download_url(model_url, model_dir, filename) + else: + from torchvision.datasets.utils import download_url as torchvision_download_url + + return torchvision_download_url(model_url, model_dir, filename) + + +def aria2_find_task(dir: str, filename: str): + target = os.path.join(dir, filename) + + downloads = aria2.get_downloads() + + for download in downloads: + for file in download.files: + if file.is_metadata: + continue + if str(file.path) == target: + return download + + +def aria2_download_url(model_url: str, model_dir: str, filename: str): + import manager_core as core + import tqdm + import time + + if model_dir.startswith(core.comfy_path): + model_dir = model_dir[len(core.comfy_path) :] + + if HF_ENDPOINT: + model_url = model_url.replace('https://huggingface.co', HF_ENDPOINT) + + download_dir = model_dir if model_dir.startswith('/') else os.path.join('/models', model_dir) + + download = aria2_find_task(download_dir, filename) + if download is None: + options = {'dir': download_dir, 'out': filename} + download = aria2.add(model_url, options)[0] + + if download.is_active: + with tqdm.tqdm( + total=download.total_length, + bar_format='{l_bar}{bar}{r_bar}', + desc=filename, + unit='B', + unit_scale=True, + ) as progress_bar: + while download.is_active: + if progress_bar.total == 0 and download.total_length != 0: + progress_bar.reset(download.total_length) + progress_bar.update(download.completed_length - progress_bar.n) + time.sleep(1) + download.update() diff --git a/glob/manager_server.py b/glob/manager_server.py index facdf22a..edbe287c 100644 --- a/glob/manager_server.py +++ b/glob/manager_server.py @@ -42,7 +42,7 @@ from comfy.cli_args import args import latent_preview -is_local_mode = args.listen.startswith('127.') +is_local_mode = args.listen.startswith('127.') or args.listen.startswith('local.') def is_allowed_security_level(level): @@ -106,7 +106,7 @@ core.manager_funcs = ManagerFuncsInComfyUI() sys.path.append('../..') -from torchvision.datasets.utils import download_url +from manager_downloader import download_url core.comfy_path = os.path.dirname(folder_paths.__file__) core.js_path = os.path.join(core.comfy_path, "web", "extensions") diff --git a/js/comfyui-manager.js b/js/comfyui-manager.js index 53544c15..4ad3999e 100644 --- a/js/comfyui-manager.js +++ b/js/comfyui-manager.js @@ -12,8 +12,8 @@ import { } from "./comfyui-share-common.js"; import { OpenArtShareDialog } from "./comfyui-share-openart.js"; import { CustomNodesManager } from "./custom-nodes-manager.js"; +import { ModelManager } from "./model-manager.js"; import { SnapshotManager } from "./snapshot.js"; -import { ModelInstaller } from "./model-downloader.js"; import { manager_instance, setManagerInstance, install_via_git_url, install_pip, rebootAPI, free_models, show_message } from "./common.js"; import { ComponentBuilderDialog, load_components, set_component_policy, getPureName } from "./components-manager.js"; import { set_double_click_policy } from "./node_fixer.js"; @@ -736,14 +736,16 @@ class ManagerMenuDialog extends ComfyDialog { } }), + $el("button.cm-button", { type: "button", - textContent: "Install Models", + textContent: "Model Manager", onclick: () => { - if(!ModelInstaller.instance) - ModelInstaller.instance = new ModelInstaller(app, self); - ModelInstaller.instance.show(); + if(!ModelManager.instance) { + ModelManager.instance = new ModelManager(app, self); + } + ModelManager.instance.show(); } }), @@ -1276,6 +1278,20 @@ app.registerExtension({ separator.style.width = "100%"; menu.append(separator); + // new style Manager button + app.menu?.saveButton.element.after(new(await import("../../scripts/ui/components/button.js")).ComfyButton({ + icon: "puzzle", + action: () => { + if(!manager_instance) + setManagerInstance(new ManagerMenuDialog()); + manager_instance.show(); + }, + tooltip: "ComfyUI Manager", + content: "ComfyUI Manager", + classList: "comfyui-button comfyui-menu-mobile-collapse primary" + }).element); + + // old style Manager button const managerButton = document.createElement("button"); managerButton.textContent = "Manager"; managerButton.onclick = () => { diff --git a/js/common.js b/js/common.js index 7090855f..7a914953 100644 --- a/js/common.js +++ b/js/common.js @@ -119,3 +119,95 @@ export async function free_models() { show_message('Unloading of models failed.

Installed ComfyUI may be an outdated version.') } } + +export function md5(inputString) { + const hc = '0123456789abcdef'; + const rh = n => {let j,s='';for(j=0;j<=3;j++) s+=hc.charAt((n>>(j*8+4))&0x0F)+hc.charAt((n>>(j*8))&0x0F);return s;} + const ad = (x,y) => {let l=(x&0xFFFF)+(y&0xFFFF);let m=(x>>16)+(y>>16)+(l>>16);return (m<<16)|(l&0xFFFF);} + const rl = (n,c) => (n<>>(32-c)); + const cm = (q,a,b,x,s,t) => ad(rl(ad(ad(a,q),ad(x,t)),s),b); + const ff = (a,b,c,d,x,s,t) => cm((b&c)|((~b)&d),a,b,x,s,t); + const gg = (a,b,c,d,x,s,t) => cm((b&d)|(c&(~d)),a,b,x,s,t); + const hh = (a,b,c,d,x,s,t) => cm(b^c^d,a,b,x,s,t); + const ii = (a,b,c,d,x,s,t) => cm(c^(b|(~d)),a,b,x,s,t); + const sb = x => { + let i;const nblk=((x.length+8)>>6)+1;const blks=[];for(i=0;i>2]|=x.charCodeAt(i)<<((i%4)*8);} + blks[i>>2]|=0x80<<((i%4)*8);blks[nblk*16-2]=x.length*8;return blks; + } + let i,x=sb(inputString),a=1732584193,b=-271733879,c=-1732584194,d=271733878,olda,oldb,oldc,oldd; + for(i=0;i { + err = e; + }); + + if (!res) { + return { + status: 400, + error: new Error("Unknown Error") + } + } + + const { status, statusText } = res; + if (err) { + return { + status, + error: err + } + } + + if (status !== 200) { + return { + status, + error: new Error(statusText || "Unknown Error") + } + } + + const data = await res.json(); + if (!data) { + return { + status, + error: new Error(`Failed to load data: ${route}`) + } + } + return { + status, + data + } +} + +export const icons = { + search: '', + extensions: '', + conflicts: '', + passed: '', + download: '' +} \ No newline at end of file diff --git a/js/custom-nodes-manager.js b/js/custom-nodes-manager.js index a89e1b39..eccdd683 100644 --- a/js/custom-nodes-manager.js +++ b/js/custom-nodes-manager.js @@ -1,17 +1,13 @@ import { app } from "../../scripts/app.js"; -import { api } from "../../scripts/api.js" import { $el } from "../../scripts/ui.js"; -import { manager_instance, rebootAPI, install_via_git_url } from "./common.js"; +import { + manager_instance, rebootAPI, install_via_git_url, + fetchData, md5, icons +} from "./common.js"; // https://cenfun.github.io/turbogrid/api.html import TG from "./turbogrid.esm.js"; -const icons = { - search: '', - extensions: '', - conflicts: '' -} - const pageCss = ` .cn-manager { --grid-font: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; @@ -123,6 +119,7 @@ const pageCss = ` .cn-manager-grid .cn-node-name a { color: skyblue; text-decoration: none; + word-break: break-word; } .cn-manager-grid .cn-node-desc a { @@ -164,6 +161,7 @@ const pageCss = ` border-radius: 5px; padding: 10px; filter: drop-shadow(2px 5px 5px rgb(0 0 0 / 30%)); + white-space: normal; } .cn-manager-grid .cn-extensions-list { @@ -258,7 +256,7 @@ const pageCss = ` left: 0; } 100% { - left: -100px; + left: -105px; } } @@ -283,7 +281,7 @@ const pageCss = ` transparent 10px, transparent 15px ); - animation: cn-btn-loading-bg 3s linear infinite; + animation: cn-btn-loading-bg 2s linear infinite; } .cn-manager-light .cn-node-name a { @@ -305,7 +303,7 @@ const pageHtml = ` - +
@@ -613,59 +611,16 @@ export class CustomNodesManager { const container = this.element.querySelector(".cn-manager-grid"); const grid = new TG.Grid(container); this.grid = grid; - - const autoHeightColumns = ['description', "alternatives"]; - let prevViewRowsLength = 0; + let prevViewRowsLength = -1; grid.bind('onUpdated', (e, d) => { const viewRows = grid.viewRows; if (viewRows.length !== prevViewRowsLength) { prevViewRowsLength = viewRows.length; - this.showStatus(`${prevViewRowsLength} custom nodes`); + this.showStatus(`${prevViewRowsLength.toLocaleString()} custom nodes`); } - const visibleRowList = grid.viewport.rows; - const rows = []; - const heights = []; - - visibleRowList.forEach(function(viewIndex) { - // display index after filter is no equal global index - const rowItem = grid.getViewRowItem(viewIndex); - if (rowItem.rowHeightFixed) { - return; - } - - const list = autoHeightColumns.map(k => { - const cellNode = grid.getCellNode(rowItem, k); - if (cellNode) { - const div = cellNode.querySelector('.tg-multiline-fixing'); - // 10px is padding top and bottom - const realHeight = Math.max(TG.$(div).height() + 10, grid.options.rowHeight); - return realHeight; - } - }).filter(n => n); - - if (list.length) { - rowItem.rowHeightFixed = true; - rows.push(rowItem); - heights.push(Math.max.apply(null, list)); - } - - }); - if (!rows.length) { - return; - } - grid.setRowHeight(rows, heights); - }); - - grid.bind('onColumnWidthChanged', (e, d) => { - if (autoHeightColumns.includes(d.id)) { - // reset when column width changed - grid.forEachRow(function(row) { - row.rowHeightFixed = false; - }); - } }); grid.bind('onSelectChanged', (e, changes) => { @@ -691,10 +646,15 @@ export class CustomNodesManager { frozenColumn: 1, rowNotFound: "No Results", - rowHeight: 30 * 3 + 3 * 4, + rowHeight: 40, bindWindowResize: true, bindContainerResize: true, + cellResizeObserver: (rowItem, columnItem) => { + const autoHeightColumns = ['title', 'installed', 'description', "alternatives"]; + return autoHeightColumns.includes(columnItem.id) + }, + // updateGrid handler for filter and keywords rowFilter: (rowItem) => { @@ -765,12 +725,10 @@ export class CustomNodesManager { width: 200, minWidth: 100, maxWidth: 500, - classMap: 'tg-multiline cn-node-name', + classMap: 'cn-node-name', formatter: (title, rowItem, columnItem) => { - return `
- ${rowItem.installed === 'Fail' ? '(IMPORT FAILED)' : ''} - ${title} -
`; + return `${rowItem.installed === 'Fail' ? '(IMPORT FAILED)' : ''} + ${title}`; } }, { id: 'installed', @@ -793,19 +751,13 @@ export class CustomNodesManager { width: 400, maxWidth: 5000, invisible: !this.hasAlternatives(), - classMap: 'tg-multiline cn-node-desc', - formatter: (alternatives, rowItem, columnItem) => { - return `
${alternatives}
`; - } + classMap: 'cn-node-desc' }, { id: 'description', name: 'Description', width: 400, maxWidth: 5000, - classMap: 'tg-multiline cn-node-desc', - formatter: (description, rowItem, columnItem) => { - return `
${description}
`; - } + classMap: 'cn-node-desc' }, { id: "extensions", name: "Extensions", @@ -856,7 +808,7 @@ export class CustomNodesManager { }, { id: 'author', name: 'Author', - width: 100, + width: 120, classMap: "cn-node-author", formatter: (author, rowItem, columnItem) => { if (rowItem.trust) { @@ -907,9 +859,6 @@ export class CustomNodesManager { if (this.grid) { this.grid.update(); if (this.hasAlternatives()) { - this.grid.forEachRow(function(row) { - row.rowHeightFixed = false; - }); this.grid.showColumn("alternatives"); } else { this.grid.hideColumn("alternatives"); @@ -1000,7 +949,7 @@ export class CustomNodesManager { this.showStatus(`${label} ${item.title} ...`); const data = item.originalData; - const res = await this.fetchData(`/customnode/${mode}`, { + const res = await fetchData(`/customnode/${mode}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) @@ -1049,53 +998,10 @@ export class CustomNodesManager { // =========================================================================================== - async fetchData(route, options) { - let err; - const res = await api.fetchApi(route, options).catch(e => { - err = e; - }); - - if (!res) { - return { - status: 400, - error: new Error("Unknown Error") - } - } - - const { status, statusText } = res; - if (err) { - return { - status, - error: err - } - } - - if (status !== 200) { - return { - status, - error: new Error(statusText || "Unknown Error") - } - } - - const data = await res.json(); - if (!data) { - return { - status, - error: new Error(`Failed to load data: ${route}`) - } - } - return { - status, - data - } - } - - // =========================================================================================== - async getExtensionMappings() { const mode = manager_instance.datasrc_combo.value; this.showStatus(`Loading extension mappings (${mode}) ...`); - const res = await this.fetchData(`/customnode/getmappings?mode=${mode}`); + const res = await fetchData(`/customnode/getmappings?mode=${mode}`); if (res.error) { console.log(res.error); return {} @@ -1149,7 +1055,7 @@ export class CustomNodesManager { async getMissingNodes() { const mode = manager_instance.datasrc_combo.value; this.showStatus(`Loading missing nodes (${mode}) ...`); - const res = await this.fetchData(`/customnode/getmappings?mode=${mode}`); + const res = await fetchData(`/customnode/getmappings?mode=${mode}`); if (res.error) { this.showError(`Failed to get custom node mappings: ${res.error}`); return; @@ -1219,7 +1125,7 @@ export class CustomNodesManager { } } - const resUnresolved = await this.fetchData(`/component/get_unresolved`); + const resUnresolved = await fetchData(`/component/get_unresolved`); const unresolved = resUnresolved.data; if (unresolved && unresolved.nodes) { unresolved.nodes.forEach(node_type => { @@ -1243,7 +1149,7 @@ export class CustomNodesManager { const mode = manager_instance.datasrc_combo.value; this.showStatus(`Loading alternatives (${mode}) ...`); - const res = await this.fetchData(`/customnode/alternatives?mode=${mode}`); + const res = await fetchData(`/customnode/alternatives?mode=${mode}`); if (res.error) { this.showError(`Failed to get alternatives: ${res.error}`); return []; @@ -1285,7 +1191,7 @@ export class CustomNodesManager { this.showStatus(`Loading custom nodes (${mode}) ...`); const skip_update = this.show_mode === ShowMode.UPDATE ? "" : "&skip_update=true"; - const res = await this.fetchData(`/customnode/getlist?mode=${mode}${skip_update}`); + const res = await fetchData(`/customnode/getlist?mode=${mode}${skip_update}`); if (res.error) { this.showError("Failed to get custom node list."); this.hideLoading(); @@ -1302,7 +1208,8 @@ export class CustomNodesManager { for (const item of custom_nodes) { item.originalData = JSON.parse(JSON.stringify(item)); - item.hash = await calculateHash(item); + const message = item.title + item.files[0]; + item.hash = md5(message); } const filterItem = this.getFilterItem(this.show_mode); @@ -1471,54 +1378,4 @@ export class CustomNodesManager { close() { this.element.style.display = "none"; } -} - -// =========================================================================================== - -async function calculateHash(item) { - const message = item.title + item.files[0]; - return md5(message); -} - -function md5(inputString) { - const hc = '0123456789abcdef'; - const rh = n => {let j,s='';for(j=0;j<=3;j++) s+=hc.charAt((n>>(j*8+4))&0x0F)+hc.charAt((n>>(j*8))&0x0F);return s;} - const ad = (x,y) => {let l=(x&0xFFFF)+(y&0xFFFF);let m=(x>>16)+(y>>16)+(l>>16);return (m<<16)|(l&0xFFFF);} - const rl = (n,c) => (n<>>(32-c)); - const cm = (q,a,b,x,s,t) => ad(rl(ad(ad(a,q),ad(x,t)),s),b); - const ff = (a,b,c,d,x,s,t) => cm((b&c)|((~b)&d),a,b,x,s,t); - const gg = (a,b,c,d,x,s,t) => cm((b&d)|(c&(~d)),a,b,x,s,t); - const hh = (a,b,c,d,x,s,t) => cm(b^c^d,a,b,x,s,t); - const ii = (a,b,c,d,x,s,t) => cm(c^(b|(~d)),a,b,x,s,t); - const sb = x => { - let i;const nblk=((x.length+8)>>6)+1;const blks=[];for(i=0;i>2]|=x.charCodeAt(i)<<((i%4)*8);} - blks[i>>2]|=0x80<<((i%4)*8);blks[nblk*16-2]=x.length*8;return blks; - } - let i,x=sb(inputString),a=1732584193,b=-271733879,c=-1732584194,d=271733878,olda,oldb,oldc,oldd; - for(i=0;iTo apply the installed model, please click the 'Refresh' button on the main menu."); - } - } -} - -async function getModelList() { - var mode = manager_instance.datasrc_combo.value; - - const response = await api.fetchApi(`/externalmodel/getlist?mode=${mode}`); - - const data = await response.json(); - return data; -} - -export class ModelInstaller extends ComfyDialog { - static instance = null; - - install_buttons = []; - message_box = null; - data = null; - - clear() { - this.install_buttons = []; - this.message_box = null; - this.data = null; - } - - constructor(app, manager_dialog) { - super(); - this.manager_dialog = manager_dialog; - this.search_keyword = ''; - this.element = $el("div.comfy-modal", { parent: document.body }, []); - } - - createControls() { - return [ - $el("button.cm-small-button", { - type: "button", - textContent: "Close", - onclick: () => { this.close(); } - }) - ]; - } - - startInstall(target) { - const self = ModelInstaller.instance; - - self.updateMessage(`
Installing '${target.name}'`); - - for(let i in self.install_buttons) { - self.install_buttons[i].disabled = true; - self.install_buttons[i].style.backgroundColor = 'gray'; - } - } - - apply_searchbox(data) { - let keyword = this.search_box.value.toLowerCase(); - for(let i in this.grid_rows) { - let data = this.grid_rows[i].data; - let content = data.name.toLowerCase() + data.type.toLowerCase() + data.base.toLowerCase() + data.filename.toLowerCase() + data.description.toLowerCase(); - - if(this.filter && this.filter != '*') { - if(this.filter != data.installed) { - this.grid_rows[i].control.style.display = 'none'; - continue; - } - } - - if(keyword == "") - this.grid_rows[i].control.style.display = null; - else if(content.includes(keyword)) { - this.grid_rows[i].control.style.display = null; - } - else { - this.grid_rows[i].control.style.display = 'none'; - } - } - } - - async invalidateControl() { - this.clear(); - this.data = (await getModelList()).models; - - while (this.element.children.length) { - this.element.removeChild(this.element.children[0]); - } - - await this.createHeaderControls(); - - if(this.search_keyword) { - this.search_box.value = this.search_keyword; - } - - await this.createGrid(); - await this.createBottomControls(); - - this.apply_searchbox(this.data); - } - - updateMessage(msg, btn_id) { - this.message_box.innerHTML = msg; - if(btn_id) { - const rebootButton = document.getElementById(btn_id); - const self = this; - rebootButton.addEventListener("click", - function() { - if(rebootAPI()) { - self.close(); - self.manager_dialog.close(); - } - }); - } - } - - async createGrid(models_json) { - var grid = document.createElement('table'); - grid.setAttribute('id', 'external-models-grid'); - - var thead = document.createElement('thead'); - var tbody = document.createElement('tbody'); - - var headerRow = document.createElement('tr'); - thead.style.position = "sticky"; - thead.style.top = "0px"; - thead.style.borderCollapse = "collapse"; - thead.style.tableLayout = "fixed"; - - var header1 = document.createElement('th'); - header1.innerHTML = '  ID  '; - header1.style.width = "20px"; - var header2 = document.createElement('th'); - header2.innerHTML = 'Type'; - header2.style.width = "100px"; - var header3 = document.createElement('th'); - header3.innerHTML = 'Base'; - header3.style.width = "100px"; - var header4 = document.createElement('th'); - header4.innerHTML = 'Name'; - header4.style.width = "30%"; - var header5 = document.createElement('th'); - header5.innerHTML = 'Filename'; - header5.style.width = "20%"; - header5.style.tableLayout = "fixed"; - var header6 = document.createElement('th'); - header6.innerHTML = 'Description'; - header6.style.width = "50%"; - var header_down = document.createElement('th'); - header_down.innerHTML = 'Download'; - header_down.style.width = "50px"; - - thead.appendChild(headerRow); - headerRow.appendChild(header1); - headerRow.appendChild(header2); - headerRow.appendChild(header3); - headerRow.appendChild(header4); - headerRow.appendChild(header5); - headerRow.appendChild(header6); - headerRow.appendChild(header_down); - - headerRow.style.backgroundColor = "Black"; - headerRow.style.color = "White"; - headerRow.style.textAlign = "center"; - headerRow.style.width = "100%"; - headerRow.style.padding = "0"; - - grid.appendChild(thead); - grid.appendChild(tbody); - - this.grid_rows = {}; - - if(this.data) - for (var i = 0; i < this.data.length; i++) { - const data = this.data[i]; - var dataRow = document.createElement('tr'); - var data1 = document.createElement('td'); - data1.style.textAlign = "center"; - data1.innerHTML = i+1; - var data2 = document.createElement('td'); - data2.innerHTML = ` ${data.type}`; - var data3 = document.createElement('td'); - data3.innerHTML = ` ${data.base}`; - var data4 = document.createElement('td'); - data4.className = "cm-node-name"; - data4.innerHTML = ` ${data.name}`; - var data5 = document.createElement('td'); - data5.className = "cm-node-filename"; - data5.innerHTML = ` ${data.filename}`; - data5.style.wordBreak = "break-all"; - var data6 = document.createElement('td'); - data6.className = "cm-node-desc"; - data6.innerHTML = data.description; - data6.style.wordBreak = "break-all"; - var data_install = document.createElement('td'); - var installBtn = document.createElement('button'); - data_install.style.textAlign = "center"; - - installBtn.innerHTML = 'Install'; - this.install_buttons.push(installBtn); - - switch(data.installed) { - case 'True': - installBtn.innerHTML = 'Installed'; - installBtn.style.backgroundColor = 'green'; - installBtn.style.color = 'white'; - installBtn.disabled = true; - break; - default: - installBtn.innerHTML = 'Install'; - installBtn.style.backgroundColor = 'black'; - installBtn.style.color = 'white'; - break; - } - - installBtn.style.width = "100px"; - - installBtn.addEventListener('click', function() { - install_model(data); - }); - - data_install.appendChild(installBtn); - - dataRow.style.backgroundColor = "var(--bg-color)"; - dataRow.style.color = "var(--fg-color)"; - dataRow.style.textAlign = "left"; - - dataRow.appendChild(data1); - dataRow.appendChild(data2); - dataRow.appendChild(data3); - dataRow.appendChild(data4); - dataRow.appendChild(data5); - dataRow.appendChild(data6); - dataRow.appendChild(data_install); - tbody.appendChild(dataRow); - - this.grid_rows[i] = {data:data, control:dataRow}; - } - - let self = this; - const panel = document.createElement('div'); - panel.style.width = "100%"; - panel.appendChild(grid); - - function handleResize() { - const parentHeight = self.element.clientHeight; - const gridHeight = parentHeight - 200; - - grid.style.height = gridHeight + "px"; - } - window.addEventListener("resize", handleResize); - - grid.style.position = "relative"; - grid.style.display = "inline-block"; - grid.style.width = "100%"; - grid.style.height = "100%"; - grid.style.overflowY = "scroll"; - this.element.style.height = "85%"; - this.element.style.width = "80%"; - this.element.appendChild(panel); - - handleResize(); - } - - createFilterCombo() { - let combo = document.createElement("select"); - - combo.style.cssFloat = "left"; - combo.style.fontSize = "14px"; - combo.style.padding = "4px"; - combo.style.background = "black"; - combo.style.marginLeft = "2px"; - combo.style.width = "199px"; - combo.id = `combo-manger-filter`; - combo.style.borderRadius = "15px"; - - let items = - [ - { value:'*', text:'Filter: all' }, - { value:'True', text:'Filter: installed' }, - { value:'False', text:'Filter: not-installed' }, - ]; - - items.forEach(item => { - const option = document.createElement("option"); - option.value = item.value; - option.text = item.text; - combo.appendChild(option); - }); - - let self = this; - combo.addEventListener('change', function(event) { - self.filter = event.target.value; - self.apply_searchbox(); - }); - - return combo; - } - - createHeaderControls() { - let self = this; - this.search_box = $el('input.cm-search-filter', {type:'text', id:'manager-model-search-box', placeholder:'input search keyword', value:this.search_keyword}, []); - this.search_box.style.height = "25px"; - this.search_box.onkeydown = (event) => { - if (event.key === 'Enter') { - self.search_keyword = self.search_box.value; - self.apply_searchbox(); - } - if (event.key === 'Escape') { - self.search_keyword = self.search_box.value; - self.apply_searchbox(); - } - }; - - let search_button = document.createElement("button"); - search_button.className = "cm-small-button"; - search_button.innerHTML = "Search"; - search_button.onclick = () => { - self.search_keyword = self.search_box.value; - self.apply_searchbox(); - }; - search_button.style.display = "inline-block"; - - let filter_control = this.createFilterCombo(); - filter_control.style.display = "inline-block"; - - let cell = $el('td', {width:'100%'}, [filter_control, this.search_box, ' ', search_button]); - let search_control = $el('table', {width:'100%'}, - [ - $el('tr', {}, [cell]) - ] - ); - - cell.style.textAlign = "right"; - this.element.appendChild(search_control); - } - - async createBottomControls() { - var close_button = document.createElement("button"); - close_button.className = "cm-small-button"; - close_button.innerHTML = "Close"; - close_button.onclick = () => { this.close(); } - close_button.style.display = "inline-block"; - - this.message_box = $el('div', {id:'custom-download-message'}, [$el('br'), '']); - this.message_box.style.height = '60px'; - this.message_box.style.verticalAlign = 'middle'; - - this.element.appendChild(this.message_box); - this.element.appendChild(close_button); - } - - async show() { - try { - this.invalidateControl(); - this.element.style.display = "block"; - this.element.style.zIndex = 10001; - } - catch(exception) { - app.ui.dialog.show(`Failed to get external model list. / ${exception}`); - } - } -} diff --git a/js/model-manager.js b/js/model-manager.js new file mode 100644 index 00000000..d92b46d0 --- /dev/null +++ b/js/model-manager.js @@ -0,0 +1,891 @@ +import { $el } from "../../scripts/ui.js"; +import { + manager_instance, rebootAPI, + fetchData, md5, icons +} from "./common.js"; + +// https://cenfun.github.io/turbogrid/api.html +import TG from "./turbogrid.esm.js"; + +const pageCss = ` +.cmm-manager { + --grid-font: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + z-index: 10001; + width: 80%; + height: 80%; + display: flex; + flex-direction: column; + gap: 10px; + color: var(--fg-color); + font-family: arial, sans-serif; +} + +.cmm-manager .cmm-flex-auto { + flex: auto; +} + +.cmm-manager button { + font-size: 16px; + color: var(--input-text); + background-color: var(--comfy-input-bg); + border-radius: 8px; + border-color: var(--border-color); + border-style: solid; + margin: 0; + padding: 4px 8px; + min-width: 100px; +} + +.cmm-manager button:disabled, +.cmm-manager input:disabled, +.cmm-manager select:disabled { + color: gray; +} + +.cmm-manager button:disabled { + background-color: var(--comfy-input-bg); +} + +.cmm-manager-header { + display: flex; + flex-wrap: wrap; + gap: 5px; + align-items: center; + padding: 0 5px; +} + +.cmm-manager-header label { + display: flex; + gap: 5px; + align-items: center; +} + +.cmm-manager-type, +.cmm-manager-base, +.cmm-manager-filter { + height: 28px; + line-height: 28px; +} + +.cmm-manager-keywords { + height: 28px; + line-height: 28px; + padding: 0 5px 0 26px; + background-size: 16px; + background-position: 5px center; + background-repeat: no-repeat; + background-image: url("data:image/svg+xml;charset=utf8,${encodeURIComponent(icons.search.replace("currentColor", "#888"))}"); +} + +.cmm-manager-status { + padding-left: 10px; +} + +.cmm-manager-grid { + flex: auto; + border: 1px solid var(--border-color); + overflow: hidden; +} + +.cmm-manager-selection { + display: flex; + flex-wrap: wrap; + gap: 10px; + align-items: center; +} + +.cmm-manager-message { + +} + +.cmm-manager-footer { + display: flex; + flex-wrap: wrap; + gap: 10px; + align-items: center; +} + +.cmm-manager-grid .tg-turbogrid { + font-family: var(--grid-font); + font-size: 15px; + background: var(--bg-color); +} + +.cmm-manager-grid .cmm-node-name a { + color: skyblue; + text-decoration: none; + word-break: break-word; +} + +.cmm-manager-grid .cmm-node-desc a { + color: #5555FF; + font-weight: bold; + text-decoration: none; +} + +.cmm-manager-grid .tg-cell a:hover { + text-decoration: underline; +} + +.cmm-icon-passed { + width: 20px; + height: 20px; + position: absolute; + left: calc(50% - 10px); + top: calc(50% - 10px); +} + +.cmm-manager .cmm-btn-enable { + background-color: blue; + color: white; +} + +.cmm-manager .cmm-btn-disable { + background-color: MediumSlateBlue; + color: white; +} + +.cmm-manager .cmm-btn-install { + background-color: black; + color: white; +} + +.cmm-btn-download { + width: 18px; + height: 18px; + position: absolute; + left: calc(50% - 10px); + top: calc(50% - 10px); + cursor: pointer; + opacity: 0.8; + color: #fff; +} + +.cmm-btn-download:hover { + opacity: 1; +} + +.cmm-manager-light .cmm-btn-download { + color: #000; +} + +@keyframes cmm-btn-loading-bg { + 0% { + left: 0; + } + 100% { + left: -105px; + } +} + +.cmm-manager button.cmm-btn-loading { + position: relative; + overflow: hidden; + border-color: rgb(0 119 207 / 80%); + background-color: var(--comfy-input-bg); +} + +.cmm-manager button.cmm-btn-loading::after { + position: absolute; + top: 0; + left: 0; + content: ""; + width: 500px; + height: 100%; + background-image: repeating-linear-gradient( + -45deg, + rgb(0 119 207 / 30%), + rgb(0 119 207 / 30%) 10px, + transparent 10px, + transparent 15px + ); + animation: cmm-btn-loading-bg 2s linear infinite; +} + +.cmm-manager-light .cmm-node-name a { + color: blue; +} + +.cmm-manager-light .cm-warn-note { + background-color: #ccc !important; +} + +.cmm-manager-light .cmm-btn-install { + background-color: #333; +} + +`; + +const pageHtml = ` +
+ + + + +
+
+
+
+
+
+ +`; + +export class ModelManager { + static instance = null; + + constructor(app, manager_dialog) { + this.app = app; + this.manager_dialog = manager_dialog; + this.id = "cmm-manager"; + + this.filter = ''; + this.type = ''; + this.base = ''; + this.keywords = ''; + + this.init(); + } + + init() { + + if (!document.querySelector(`style[context="${this.id}"]`)) { + const $style = document.createElement("style"); + $style.setAttribute("context", this.id); + $style.innerHTML = pageCss; + document.head.appendChild($style); + } + + this.element = $el("div", { + parent: document.body, + className: "comfy-modal cmm-manager" + }); + this.element.innerHTML = pageHtml; + this.initFilter(); + this.bindEvents(); + this.initGrid(); + } + + initFilter() { + + this.filterList = [{ + label: "All", + value: "" + }, { + label: "Installed", + value: "True" + }, { + label: "Not Installed", + value: "False" + }]; + + this.typeList = [{ + label: "All", + value: "" + }]; + + this.baseList = [{ + label: "All", + value: "" + }]; + + this.updateFilter(); + + } + + updateFilter() { + const $filter = this.element.querySelector(".cmm-manager-filter"); + $filter.innerHTML = this.filterList.map(item => { + const selected = item.value === this.filter ? " selected" : ""; + return `` + }).join(""); + + const $type = this.element.querySelector(".cmm-manager-type"); + $type.innerHTML = this.typeList.map(item => { + const selected = item.value === this.type ? " selected" : ""; + return `` + }).join(""); + + const $base = this.element.querySelector(".cmm-manager-base"); + $base.innerHTML = this.baseList.map(item => { + const selected = item.value === this.base ? " selected" : ""; + return `` + }).join(""); + + } + + bindEvents() { + const eventsMap = { + ".cmm-manager-filter": { + change: (e) => { + this.filter = e.target.value; + this.updateGrid(); + } + }, + ".cmm-manager-type": { + change: (e) => { + this.type = e.target.value; + this.updateGrid(); + } + }, + ".cmm-manager-base": { + change: (e) => { + this.base = e.target.value; + this.updateGrid(); + } + }, + + ".cmm-manager-keywords": { + input: (e) => { + const keywords = `${e.target.value}`.trim(); + if (keywords !== this.keywords) { + this.keywords = keywords; + this.updateGrid(); + } + }, + focus: (e) => e.target.select() + }, + + ".cmm-manager-selection": { + click: (e) => { + const target = e.target; + const mode = target.getAttribute("mode"); + if (mode === "install") { + this.installModels(this.selectedModels, target); + } + } + }, + + ".cmm-manager-close": { + click: (e) => this.close() + }, + + }; + Object.keys(eventsMap).forEach(selector => { + const target = this.element.querySelector(selector); + if (target) { + const events = eventsMap[selector]; + if (events) { + Object.keys(events).forEach(type => { + target.addEventListener(type, events[type]); + }); + } + } + }); + } + + // =========================================================================================== + + initGrid() { + const container = this.element.querySelector(".cmm-manager-grid"); + const grid = new TG.Grid(container); + this.grid = grid; + + grid.bind('onUpdated', (e, d) => { + + this.showStatus(`${grid.viewRows.length.toLocaleString()} external models`); + + }); + + grid.bind('onSelectChanged', (e, changes) => { + this.renderSelected(); + }); + + grid.bind('onClick', (e, d) => { + const { rowItem } = d; + const target = d.e.target; + const mode = target.getAttribute("mode"); + if (mode === "install") { + this.installModels([rowItem], target); + } + + }); + + grid.setOption({ + theme: 'dark', + + selectVisible: true, + selectMultiple: true, + selectAllVisible: true, + + textSelectable: true, + scrollbarRound: true, + + frozenColumn: 1, + rowNotFound: "No Results", + + rowHeight: 40, + bindWindowResize: true, + bindContainerResize: true, + + cellResizeObserver: (rowItem, columnItem) => { + const autoHeightColumns = ['name', 'description']; + return autoHeightColumns.includes(columnItem.id) + }, + + // updateGrid handler for filter and keywords + rowFilter: (rowItem) => { + + const searchableColumns = ["name", "type", "base", "description", "filename", "save_path"]; + + let shouldShown = grid.highlightKeywordsFilter(rowItem, searchableColumns, this.keywords); + + if (shouldShown) { + if(this.filter && rowItem.installed !== this.filter) { + return false; + } + + if(this.type && rowItem.type !== this.type) { + return false; + } + + if(this.base && rowItem.base !== this.base) { + return false; + } + + } + + return shouldShown; + } + }); + + } + + renderGrid() { + + // update theme + const colorPalette = this.app.ui.settings.settingsValues['Comfy.ColorPalette']; + Array.from(this.element.classList).forEach(cn => { + if (cn.startsWith("cmm-manager-")) { + this.element.classList.remove(cn); + } + }); + this.element.classList.add(`cmm-manager-${colorPalette}`); + + const options = { + theme: colorPalette === "light" ? "" : "dark" + }; + + const rows = this.modelList || []; + + const columns = [{ + id: 'id', + name: 'ID', + width: 50, + align: 'center' + }, { + id: 'name', + name: 'Name', + width: 200, + minWidth: 100, + maxWidth: 500, + classMap: 'cmm-node-name', + formatter: function(name, rowItem, columnItem, cellNode) { + return `${name}`; + } + }, { + id: 'installed', + name: 'Install', + width: 130, + minWidth: 110, + maxWidth: 200, + sortable: false, + align: 'center', + formatter: (installed, rowItem, columnItem) => { + if (rowItem.refresh) { + return `Refresh Required`; + } + if (installed === "True") { + return `
${icons.passed}
`; + } + return ``; + } + }, { + id: 'url', + name: '', + width: 50, + sortable: false, + align: 'center', + formatter: (url, rowItem, columnItem) => { + return `${icons.download}`; + } + }, { + id: 'size', + name: 'Size', + width: 100, + formatter: (size) => { + if (typeof size === "number") { + return this.formatSize(size); + } + return size; + } + }, { + id: 'type', + name: 'Type', + width: 100 + }, { + id: 'base', + name: 'Base' + }, { + id: 'description', + name: 'Description', + width: 400, + maxWidth: 5000, + classMap: 'cmm-node-desc' + }, { + id: "save_path", + name: 'Save Path', + width: 200 + }, { + id: 'filename', + name: 'Filename', + width: 200 + }]; + + this.grid.setData({ + options, + rows, + columns + }); + + this.grid.render(); + + } + + updateGrid() { + if (this.grid) { + this.grid.update(); + } + } + + // =========================================================================================== + + renderSelected() { + const selectedList = this.grid.getSelectedRows(); + if (!selectedList.length) { + this.showSelection(""); + this.selectedModels = []; + return; + } + + this.selectedModels = selectedList; + this.showSelection(`Selected ${selectedList.length} models `); + } + + focusInstall(item) { + const cellNode = this.grid.getCellNode(item, "installed"); + if (cellNode) { + const cellBtn = cellNode.querySelector(`button[mode="install"]`); + if (cellBtn) { + cellBtn.classList.add("cmm-btn-loading"); + return true + } + } + } + + async installModels(list, btn) { + + btn.classList.add("cmm-btn-loading"); + this.showLoading(); + this.showError(""); + + let needRestart = false; + let errorMsg = ""; + + for (const item of list) { + + this.grid.scrollRowIntoView(item); + + if (!this.focusInstall(item)) { + this.grid.onNextUpdated(() => { + this.focusInstall(item); + }); + } + + this.showStatus(`Install ${item.name} ...`); + + const data = item.originalData; + const res = await fetchData('/model/install', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(data) + }); + + + if (res.error) { + errorMsg = `Install failed: ${item.name} ${res.error.message}`; + break;; + } + + needRestart = true; + + this.grid.setRowSelected(item, false); + + item.refresh = true; + item.selectable = false; + this.grid.updateCell(item, "installed"); + this.grid.updateCell(item, "tg-column-select"); + + this.showStatus(`Install ${item.name} successfully`); + + } + + this.hideLoading(); + btn.classList.remove("cmm-btn-loading"); + + if (errorMsg) { + this.showError(errorMsg); + } else { + this.showStatus(`Install ${list.length} models successfully`); + } + + if (needRestart) { + this.showMessage(`To apply the installed model, please click the 'Refresh' button on the main menu.`, "red") + } + + } + + getModelList(models) { + + const typeMap = new Map(); + const baseMap = new Map(); + + models.forEach((item, i) => { + const { type, base, name, reference, installed } = item; + item.originalData = JSON.parse(JSON.stringify(item)); + item.size = this.sizeToBytes(item.size); + item.hash = md5(name + reference); + item.id = i + 1; + + if (installed === "True") { + item.selectable = false; + } + + typeMap.set(type, type); + baseMap.set(base, base); + + }); + + const typeList = []; + typeMap.forEach(type => { + typeList.push({ + label: type, + value: type + }); + }); + typeList.sort((a,b)=> { + const au = a.label.toUpperCase(); + const bu = b.label.toUpperCase(); + if (au !== bu) { + return au > bu ? 1 : -1; + } + return 0; + }); + this.typeList = [{ + label: "All", + value: "" + }].concat(typeList); + + + const baseList = []; + baseMap.forEach(base => { + baseList.push({ + label: base, + value: base + }); + }); + baseList.sort((a,b)=> { + const au = a.label.toUpperCase(); + const bu = b.label.toUpperCase(); + if (au !== bu) { + return au > bu ? 1 : -1; + } + return 0; + }); + this.baseList = [{ + label: "All", + value: "" + }].concat(baseList); + + return models; + } + + // =========================================================================================== + + async loadData() { + + this.showLoading(); + + this.showStatus(`Loading external model list ...`); + + const mode = manager_instance.datasrc_combo.value; + + const res = await fetchData(`/externalmodel/getlist?mode=${mode}`); + if (res.error) { + this.showError("Failed to get external model list."); + this.hideLoading(); + return + } + + const { models } = res.data; + + this.modelList = this.getModelList(models); + // console.log("models", this.modelList); + + this.updateFilter(); + + this.renderGrid(); + + this.hideLoading(); + + } + + // =========================================================================================== + + formatSize(v) { + const base = 1000; + const units = ['', 'K', 'M', 'G', 'T', 'P']; + const space = ''; + const postfix = 'B'; + if (v <= 0) { + return `0${space}${postfix}`; + } + for (let i = 0, l = units.length; i < l; i++) { + const min = Math.pow(base, i); + const max = Math.pow(base, i + 1); + if (v > min && v <= max) { + const unit = units[i]; + if (unit) { + const n = v / min; + const nl = n.toString().split('.')[0].length; + const fl = Math.max(3 - nl, 1); + v = n.toFixed(fl); + } + v = v + space + unit + postfix; + break; + } + } + return v; + } + + // for size sort + sizeToBytes(v) { + if (typeof v === "number") { + return v; + } + if (typeof v === "string") { + const n = parseFloat(v); + const unit = v.replace(/[0-9.B]+/g, "").trim().toUpperCase(); + if (unit === "K") { + return n * 1000; + } + if (unit === "M") { + return n * 1000 * 1000; + } + if (unit === "G") { + return n * 1000 * 1000 * 1000; + } + if (unit === "T") { + return n * 1000 * 1000 * 1000 * 1000; + } + } + return v; + } + + showSelection(msg) { + this.element.querySelector(".cmm-manager-selection").innerHTML = msg; + } + + showError(err) { + this.showMessage(err, "red"); + } + + showMessage(msg, color) { + if (color) { + msg = `${msg}`; + } + this.element.querySelector(".cmm-manager-message").innerHTML = msg; + } + + showStatus(msg, color) { + if (color) { + msg = `${msg}`; + } + this.element.querySelector(".cmm-manager-status").innerHTML = msg; + } + + showLoading() { + this.setDisabled(true); + if (this.grid) { + this.grid.showLoading(); + this.grid.showMask({ + opacity: 0.05 + }); + } + } + + hideLoading() { + this.setDisabled(false); + if (this.grid) { + this.grid.hideLoading(); + this.grid.hideMask(); + } + } + + setDisabled(disabled) { + + const $close = this.element.querySelector(".cmm-manager-close"); + + const list = [ + ".cmm-manager-header input", + ".cmm-manager-header select", + ".cmm-manager-footer button", + ".cmm-manager-selection button" + ].map(s => { + return Array.from(this.element.querySelectorAll(s)); + }) + .flat() + .filter(it => { + return it !== $close; + }); + + list.forEach($elem => { + if (disabled) { + $elem.setAttribute("disabled", "disabled"); + } else { + $elem.removeAttribute("disabled"); + } + }); + + Array.from(this.element.querySelectorAll(".cmm-btn-loading")).forEach($elem => { + $elem.classList.remove("cmm-btn-loading"); + }); + + } + + setKeywords(keywords = "") { + this.keywords = keywords; + this.element.querySelector(".cmm-manager-keywords").value = keywords; + } + + show() { + this.element.style.display = "flex"; + this.setKeywords(""); + this.showSelection(""); + this.showMessage(""); + this.loadData(); + } + + close() { + this.element.style.display = "none"; + } +} \ No newline at end of file diff --git a/js/turbogrid.esm.js b/js/turbogrid.esm.js index ca6088a2..fd0bfb57 100644 --- a/js/turbogrid.esm.js +++ b/js/turbogrid.esm.js @@ -1 +1 @@ -var t={915:(t,e,i)=>{i.d(e,{A:()=>l});var o=i(256),n=i.n(o),s=i(505),r=i.n(s)()(n());r.push([t.id,'.tg-turbogrid{position:relative;z-index:0;width:100%;height:100%;margin:0;padding:0;box-sizing:border-box;font-size:14px;font-family:arial,sans-serif;outline:0;cursor:default;overflow:hidden}.tg-turbogrid *,.tg-turbogrid *::before,.tg-turbogrid *::after{box-sizing:border-box}.tg-text-unselectable.tg-turbogrid{user-select:none}.tg-turbogrid svg{display:block;pointer-events:none}.tg-turbogrid .tg-symbols{font-family:webdings,sans-serif}.tg-turbogrid .tg-nowrap{white-space:nowrap}.tg-turbogrid .tg-align-left{text-align:left}.tg-turbogrid .tg-align-center{text-align:center}.tg-turbogrid .tg-align-right{text-align:right}@keyframes tg-fade-in{from{opacity:0}to{opacity:1}}@keyframes tg-fade-out{from{opacity:1}to{opacity:0}}.tg-turbogrid .tg-fade-in{animation-name:tg-fade-in;animation-duration:.2s;animation-fill-mode:both}.tg-turbogrid .tg-fade-in .tg-scrollbar-track{display:none}.tg-turbogrid .tg-fade-out{animation-name:tg-fade-out;animation-duration:.2s;animation-fill-mode:both}.tg-turbogrid .tg-fade-out .tg-scrollbar-track{display:none}.tg-turbogrid .tg-mask{position:absolute;top:0;left:0;z-index:200;display:none;width:100%;height:100%;background-color:#000;opacity:.1}@keyframes tg-loading-animation{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.tg-turbogrid .tg-loading{position:absolute;top:50%;left:50%;z-index:300;display:none;transform:translate(-50%, -50%);pointer-events:none}.tg-turbogrid .tg-loading-default{width:35px;height:35px;color:#0077cf;animation:1s tg-loading-animation linear infinite}.tg-turbogrid .tg-loading-fast{animation:.382s tg-loading-animation linear infinite}.tg-turbogrid .tg-checkbox{width:100%;height:100%;cursor:pointer;overflow:hidden}.tg-turbogrid .tg-checkbox:hover .tg-checkbox-item{fill:#005ba1}.tg-turbogrid .tg-checkbox.tg-select-icon-all{height:18px}.tg-turbogrid .tg-checkbox .tg-icon-checkbox{position:absolute;top:50%;left:50%;display:block;width:16px;height:16px;transform:translate(-50%, -50%)}.tg-turbogrid .tg-checkbox .tg-checkbox-item{display:none;fill:gray}.tg-turbogrid .tg-checkbox .tg-checkbox-none{display:block}.tg-turbogrid .tg-checkbox.tg-selected .tg-checkbox-selected{display:block;fill:#0077cf}.tg-turbogrid .tg-checkbox.tg-mixed .tg-checkbox-mixed{display:block;fill:#0077cf}.tg-turbogrid .tg-radio{cursor:pointer;overflow:hidden}.tg-turbogrid .tg-radio:hover .tg-icon-radio::before{border-color:#005ba1}.tg-turbogrid .tg-radio .tg-icon-radio{position:absolute;top:50%;left:50%;width:16px;height:16px;transform:translate(-50%, -50%)}.tg-turbogrid .tg-radio .tg-icon-radio::before{position:absolute;top:50%;left:50%;content:"";display:block;width:16px;height:16px;border:thin solid gray;border-radius:50%;background:#fff;transform:translate(-50%, -50%)}.tg-turbogrid .tg-radio .tg-icon-radio::after{position:absolute;top:50%;left:50%;content:"";display:none;width:10px;height:10px;border-radius:50%;background:#0077cf;transform:translate(-50%, -50%)}.tg-turbogrid .tg-radio.tg-selected .tg-icon-radio::after{display:block;border-color:#0077cf}.tg-turbogrid .tg-scrollbar{position:absolute;z-index:100;overflow:hidden;user-select:none}.tg-turbogrid .tg-scrollbar-v{top:0;right:0}.tg-turbogrid .tg-scrollbar-h{left:0;bottom:0}.tg-turbogrid .tg-scrollbar-track{position:relative;width:100%;height:100%;background:#f9f9f9;overflow:hidden;user-select:none}.tg-turbogrid .tg-scrollbar-thumb{position:absolute;top:0;left:0;border-radius:1px;background:#999;overflow:hidden;user-select:none}.tg-turbogrid .tg-scrollbar-thumb:hover{background:#888}.tg-turbogrid .tg-scrollbar-thumb-hold{background:#666}.tg-turbogrid .tg-scrollbar-thumb-hold:hover{background:#666}.tg-turbogrid .tg-scrollbar-round .tg-scrollbar-track{border-radius:10px}.tg-turbogrid .tg-scrollbar-round .tg-scrollbar-thumb{border-radius:10px}.tg-turbogrid .tg-scroll-pane{position:relative;margin:0;padding:0;border:none;outline:none;overflow:hidden}.tg-turbogrid .tg-scroll-view{position:relative;width:100%;height:100%;margin:0;padding:0;border:none;overflow:hidden}.tg-turbogrid .tg-scroll-body{position:absolute}.tg-turbogrid .tg-header{position:relative;width:10000px;border-left:0;overflow:hidden}.tg-turbogrid .tg-header-table{position:relative;color:#5e5e5e;font-weight:bold;font-size:14px;line-height:16px;border-bottom:thin solid #e5e5e5;overflow:hidden}.tg-turbogrid .tg-header-item{position:absolute;bottom:0}.tg-turbogrid .tg-header-group-item{overflow:hidden}.tg-turbogrid .tg-header-group-item::after{position:absolute;left:5px;bottom:0;content:"";display:block;width:calc(100% - 10px);height:1px;border-bottom:thin solid #ccc}.tg-turbogrid .tg-column-header{position:absolute;bottom:0;overflow:hidden}.tg-turbogrid .tg-column-header .tg-column-name{padding:10px 5px;text-overflow:ellipsis;overflow:hidden}.tg-turbogrid .tg-column-header .tg-column-name.tg-header-group-name{margin:0 5px;padding:5px 0}.tg-turbogrid .tg-column-resizing{position:absolute;top:0;right:-5px;z-index:100;width:10px;height:100%;background:#ccc;cursor:ew-resize;opacity:0}.tg-turbogrid .tg-header-column-last .tg-column-resizing{right:0}.tg-turbogrid .tg-column-sortable .tg-column-name{cursor:pointer}.tg-turbogrid .tg-column-sortable .tg-sort-indicator{cursor:pointer}.tg-turbogrid .tg-column-sorted{color:#000}.tg-turbogrid .tg-header-sort-h .tg-column-name{padding:12px 5px 15px}.tg-turbogrid .tg-header-sort-h .tg-column-sort{width:100%;height:15px;margin-top:-15px;padding:0 5px;overflow:hidden}.tg-turbogrid .tg-header-sort-h .tg-sort-indicator{position:relative;display:none;width:100%;height:100%}.tg-turbogrid .tg-header-sort-h .tg-column-sorted .tg-column-sort .tg-sort-indicator{display:block}.tg-turbogrid .tg-header-sort-h .tg-sort-indicator-line{position:absolute;top:1px;width:100%;height:0;border-top:thin solid #1e1e1e;overflow:hidden}.tg-turbogrid .tg-header-sort-h .tg-sort-indicator-icon{position:absolute;top:5px;left:0;right:inherit}.tg-turbogrid .tg-header-sort-h .tg-align-right .tg-sort-indicator-icon{left:inherit;right:0}.tg-turbogrid .tg-header-sort-h .tg-align-center .tg-sort-indicator-icon{left:50%;transform:translateX(-50%)}.tg-turbogrid .tg-header-sort-h .tg-sort-indicator-icon .tg-icon-sort-h{display:block;width:19px;height:6px}.tg-turbogrid .tg-header-sort-h .tg-sort-indicator-icon .tg-icon-item{display:none;fill:#1e1e1e}.tg-turbogrid .tg-header-sort-h .tg-sort-indicator-icon .tg-icon-item-light{fill:#ababab}.tg-turbogrid .tg-column-sort-v{display:flex;flex-direction:row;align-items:center}.tg-turbogrid .tg-column-sort-v .tg-column-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.tg-turbogrid .tg-column-sort-v.tg-align-right{justify-content:right}.tg-turbogrid .tg-column-sort-v .tg-sort-indicator{position:relative;width:16px;height:16px}.tg-turbogrid .tg-column-sort-v .tg-sort-indicator-icon{position:absolute}.tg-turbogrid .tg-column-sort-v .tg-sort-indicator-icon .tg-icon-sort-v{display:block;width:10px;height:16px}.tg-turbogrid .tg-column-sort-v .tg-sort-indicator-icon .tg-icon-item{fill:#ababab}.tg-turbogrid .tg-column-sort-v .tg-sort-indicator-icon .tg-icon-item-light{fill:#ababab}.tg-turbogrid .tg-column-sort-v.tg-column-sorted .tg-sort-indicator-icon .tg-icon-item{fill:#1e1e1e}.tg-turbogrid .tg-column-sort-v.tg-column-sorted .tg-sort-indicator-icon .tg-icon-item-light{fill:#ababab}.tg-turbogrid .tg-sort-desc .tg-sort-indicator .tg-sort-indicator-icon .tg-desc{display:block}.tg-turbogrid .tg-sort-desc .tg-sort-indicator .tg-sort-indicator-icon .tg-asc{display:none}.tg-turbogrid .tg-sort-asc .tg-sort-indicator .tg-sort-indicator-icon .tg-desc{display:none}.tg-turbogrid .tg-sort-asc .tg-sort-indicator .tg-sort-indicator-icon .tg-asc{display:block}.tg-turbogrid .tg-column-line{position:absolute;top:0;left:0;z-index:100;display:none;height:100%;pointer-events:none}.tg-turbogrid .tg-column-line-item{position:absolute;top:0;bottom:0;display:block;width:0;height:100%;border-left:thin solid #ccc}.tg-turbogrid .tg-column-line-item.tg-active{border-left:thin solid #0077cf}.tg-turbogrid .tg-column-dragging{cursor:ew-resize}.tg-turbogrid .tg-column-dragging .tg-column-name{cursor:ew-resize}.tg-turbogrid .tg-column-dragging .tg-column-resizing:not(.tg-resizing-active){display:none}.tg-turbogrid .tg-tree{position:relative;display:flex;flex-direction:row;place-items:center left;width:100%;height:100%;overflow:hidden}.tg-turbogrid .tg-tree-icon{position:relative;width:15px;height:100%;min-height:9px;text-align:left;cursor:pointer;overflow:hidden}.tg-turbogrid .tg-tree-icon .tg-icon-tree{position:absolute;top:50%;left:0;display:block;width:9px;height:9px;transform:translate(0, -50%);overflow:hidden}.tg-turbogrid .tg-tree-icon .tg-tree-item{display:none}.tg-turbogrid .tg-tree-icon-collapsed .tg-tree-collapsed{display:block}.tg-turbogrid .tg-tree-icon-empty .tg-tree-collapsed{opacity:.5}.tg-turbogrid .tg-tree-icon-expanded .tg-tree-expanded{display:block}.tg-turbogrid .tg-tree-name{flex:1;text-overflow:ellipsis;overflow:hidden}.tg-turbogrid .tg-tree-header .tg-tree .tg-tree-icon{display:none}.tg-turbogrid .tg-tree-icon-all{position:relative;height:17px}.tg-turbogrid .tg-tree-header-indent .tg-tree{padding-left:5px}.tg-turbogrid .tg-tree-header-indent .tg-tree .tg-tree-icon{display:block}.tg-turbogrid .tg-tree-header-indent.tg-column-sort-h .tg-column-sort{width:calc(100% - 20px);margin-left:20px}.tg-turbogrid .tg-pane{position:absolute;width:100%;outline:0;overflow:hidden}.tg-turbogrid .tg-header-frame{position:relative;display:block;outline:0;overflow:hidden}.tg-turbogrid .tg-header-frame .tg-pane{height:100%}.tg-turbogrid .tg-body-frame{position:relative;width:100%;outline:0}.tg-turbogrid .tg-body-message{position:absolute;display:none;width:100%;height:100%;padding:10px;overflow:hidden}.tg-turbogrid .tg-body-message img,.tg-turbogrid .tg-body-message div{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.tg-turbogrid .tg-body{position:absolute;outline:0}.tg-turbogrid .tg-cell-hover-icon{display:none}.tg-touch-device.tg-turbogrid .tg-cell-hover-icon{display:inherit}.tg-turbogrid .tg-cell-row-number{font-weight:normal}.tg-turbogrid .tg-cell-row-drag .tg-row-drag-icon{position:absolute;top:50%;left:50%;width:24px;height:24px;cursor:move;opacity:.8;transform:translate(-50%, -50%)}.tg-turbogrid .tg-cell-row-drag .tg-row-drag-icon:hover{opacity:1}.tg-turbogrid .tg-cell{position:absolute;z-index:1;height:100%;margin:0;padding:0 5px;color:#1e1e1e;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle;overflow:hidden}.tg-turbogrid .tg-cell:focus{outline:none}.tg-turbogrid .tg-cell.tg-flashing{border:1px solid red !important}.tg-turbogrid .tg-cell.tg-selected{background-color:beige}.tg-turbogrid .tg-cell.tg-multiline{display:flex;flex-direction:column;justify-content:center;padding:5px;line-height:normal;white-space:normal;text-overflow:ellipsis}.tg-turbogrid .tg-cell.tg-multiline .tg-multiline-wrapper{overflow:hidden}.tg-turbogrid .tg-cell.tg-align-left.tg-cell-negative{padding-left:1px}.tg-turbogrid .tg-cell.tg-align-right.tg-cell-negative{padding-right:1px}.tg-turbogrid .tg-row{position:absolute;width:100%;border:0;border-bottom:thin solid #e5e5e5}.tg-turbogrid .tg-row.tg-group-line{border-bottom:thin solid #999}.tg-turbogrid .tg-row.tg-none-line{border-bottom:none}.tg-turbogrid .tg-row.tg-top-line{border-top:thin solid #e5e5e5}.tg-turbogrid .tg-row.tg-group{font-weight:bold;overflow:hidden}.tg-turbogrid .tg-row.tg-group .tg-cell.tg-align-left.tg-cell-negative{padding-left:0}.tg-turbogrid .tg-row.tg-group .tg-cell.tg-align-right.tg-cell-negative{padding-right:0}.tg-turbogrid .tg-row.tg-hover .tg-cell .tg-cell-hover-icon{display:inherit}.tg-turbogrid .tg-row.tg-dragging{opacity:.3}.tg-turbogrid .tg-row.tg-clone{z-index:1000;border:1px dashed #ccc;border-right:none;border-left:none;background:#fff;cursor:move;opacity:.5}.tg-turbogrid .tg-row.tg-clone *{cursor:move}.tg-turbogrid .tg-row-placeholder{position:absolute;z-index:9999;width:100%;border-top:2px solid #00a8e1;pointer-events:none}.tg-turbogrid .tg-row::before,.tg-turbogrid .tg-row::after{position:absolute;top:0;left:0;content:"";z-index:100;display:none;width:100%;height:100%;pointer-events:none}.tg-turbogrid .tg-hover.tg-row::before{display:block;background:rgba(0,0,0,.08)}.tg-turbogrid .tg-selected.tg-row::after{display:block;background:rgba(0,0,0,.13)}.tg-lightblue .tg-header-item{border-top:thin solid #e8eaf0;border-right:thin solid #e8eaf0}.tg-lightblue .tg-column-name{padding:5px;color:#304265}.tg-lightblue .tg-header-group-item::after{display:none}.tg-lightblue .tg-checkbox .tg-icon-item{fill:#d4d7e0}.tg-lightblue .tg-checkbox:hover .tg-icon-item{fill:#107fff}.tg-lightblue .tg-checkbox.tg-selected .tg-select-checkbox{fill:#107fff}.tg-lightblue .tg-checkbox.tg-mixed .tg-select-mixed{fill:#107fff}.tg-lightblue .tg-cell{color:#304265;border-right:thin solid #e8eaf0}.tg-lightblue .tg-row{border-bottom:thin solid #e8eaf0}.tg-lightblue .tg-row.tg-group-line{border-bottom:thin solid #c9ccd8}.tg-lightblue .tg-row.tg-selected{background:rgba(58,116,213,.05)}.tg-lightblue .tg-row.tg-hover{background:rgba(58,116,213,.05)}.tg-lightblue .tg-row.tg-even{background:#fbfcfe}.tg-lightblue .tg-row.tg-odd{background:#fff}.tg-lightblue .tg-hover.tg-row::before{background:rgba(58,116,213,.05)}.tg-lightblue .tg-selected.tg-row::after{background:rgba(58,116,213,.1)}.tg-lightblue .tg-header-frame{border-bottom:thin solid #e8eaf0}.tg-lightblue .tg-row-not-found .tg-frozen-line-v{border-right:none}.tg-lightblue .tg-scrollbar-track{background:#fff}.tg-lightblue .tg-scrollbar-thumb{background:rgba(48,66,101,.35)}.tg-lightblue .tg-scrollbar-thumb:hover{background-color:#a8a8a8}.tg-lightblue .tg-scrollbar-thumb:active{background-color:#787878}.tg-dark{background:#1e1e1e}.tg-dark .tg-checkbox .tg-icon-item{fill:#ababab}.tg-dark .tg-header-table{color:#ccc;border-bottom:thin solid #333}.tg-dark .tg-header-group-item::after{border-bottom:1px solid #999}.tg-dark .tg-column-sorted{color:#fff}.tg-dark .tg-column-sorted .tg-tree-icon-all .tg-icon-item{fill:#fff}.tg-dark .tg-header-sort-h .tg-sort-indicator-line{border-top:thin solid #eee}.tg-dark .tg-header-sort-h .tg-sort-indicator-icon .tg-icon-item{fill:#eee}.tg-dark .tg-header-sort-h .tg-sort-indicator-icon .tg-icon-item-light{fill:#666}.tg-dark .tg-column-sort-v .tg-sort-indicator-icon .tg-icon-item{fill:#666}.tg-dark .tg-column-sort-v .tg-sort-indicator-icon .tg-icon-item-light{fill:#666}.tg-dark .tg-column-sort-v.tg-column-sorted .tg-sort-indicator-icon .tg-icon-item{fill:#fff}.tg-dark .tg-column-sort-v.tg-column-sorted .tg-sort-indicator-icon .tg-icon-item-light{fill:#666}.tg-dark .tg-tree-icon .tg-icon-item{fill:#fff}.tg-dark .tg-tree-icon-all .tg-icon-item{fill:#999}.tg-dark .tg-header-item .tg-tree-icon .tg-icon-item{fill:#999}.tg-dark .tg-header-item .tg-column-sorted .tg-tree-icon .tg-icon-item{fill:#fff}.tg-dark .tg-row{border-bottom:thin solid #333}.tg-dark .tg-row.tg-group-line{border-bottom:thin solid #666}.tg-dark .tg-row.tg-clone{border:1px dashed #1e1e1e;opacity:.1}.tg-dark .tg-cell{color:#eee}.tg-dark .tg-body-message{color:#eee}.tg-dark .tg-hover.tg-row::before{background:rgba(255,255,255,.1)}.tg-dark .tg-selected.tg-row::after{background:rgba(255,255,255,.2)}.tg-dark .tg-mask{background-color:#fff}.tg-dark .tg-scrollbar-track{background:#333}.tg-dark .tg-scrollbar-thumb{background:#bbb}.tg-dark .tg-scrollbar-thumb:hover{background:#ddd}.tg-dark .tg-scrollbar-thumb-hold{background:#eee}.tg-dark .tg-scrollbar-thumb-hold:hover{background:#eee}.tg-pointer-events-none{pointer-events:none}',""]);const l=r},505:t=>{t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i="",o=void 0!==e[5];return e[4]&&(i+="@supports (".concat(e[4],") {")),e[2]&&(i+="@media ".concat(e[2]," {")),o&&(i+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),i+=t(e),o&&(i+="}"),e[2]&&(i+="}"),e[4]&&(i+="}"),i})).join("")},e.i=function(t,i,o,n,s){"string"==typeof t&&(t=[[null,t,void 0]]);var r={};if(o)for(var l=0;l0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=s),i&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=i):c[2]=i),n&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=n):c[4]="".concat(n)),e.push(c))}},e}},256:t=>{t.exports=function(t){return t[1]}}},e={};function i(o){var n=e[o];if(void 0!==n)return n.exports;var s=e[o]={id:o,exports:{}};return t[o](s,s.exports,i),s.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var o in e)i.o(e,o)&&!i.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var o={};(()=>{i.d(o,{$:()=>w,MP:()=>e,_d:()=>k,xA:()=>Xt,In:()=>X,T8:()=>D,Gr:()=>kt,ht:()=>qt,J0:()=>d,xv:()=>Yt,Ay:()=>Kt});const t="turbogrid",e={ID:t,NS:`tg-${t}`,VERSION:"3.1.0",TIMESTAMP:"2024-06-04T10:15:28.564Z",UP:"up",DOWN:"down",LEFT:"left",RIGHT:"right",TREE_INDENT:15},n=function(t){if(!t||"object"!=typeof t)return!1;const e=Object.prototype.toString.call(t);return!!["[object Object]","[object Array]"].includes(e)&&(!t.constructor||!![Object,Array].includes(t.constructor))},s=function(t,e){let i;return t.forEach((t=>{n(t)&&(i||(i=t instanceof Array?[]:{}),t instanceof Array?function(t,e,i){const o=e.length;for(let s=0;s{this.execute()})):Promise.resolve().then((()=>{this.execute()}))}execute(){if(!this.started)return;this.started=!1;const t=this.callback;this.callback=null,"function"==typeof t&&t.call(this)}cancel(){this.started=!1,this.callback=null}}const a=new WeakMap,c={isObject:n,merge:l,hasOwn:function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},uid:function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:8;const e="0123456789abcdefghijklmnopqrstuvwxyz";let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";for(;t--;)i+=e[36*Math.random()|0];return i},isNum:function(t){if("number"!=typeof t||isNaN(t))return!1;return(e=t)!==Number.MAX_VALUE&&e!==Number.MIN_VALUE&&e!==Number.NEGATIVE_INFINITY&&e!==Number.POSITIVE_INFINITY;var e},toNum:function(t,e){return"number"!=typeof t&&(t=parseFloat(t)),isNaN(t)&&(t=0),e&&!Number.isInteger(t)&&(t=Math.round(t)),t},convertNum:function(t){if("string"==typeof t){if(/^[-+]?\d+(\.\d+)?$/gi.test(t))return parseFloat(t)}return t},clamp:function(t,e,i){return Math.max(Math.min(t,i),e)},per:function(t){return t=c.toNum(t),t=c.clamp(t,0,1)},replace:function(t,e){return t=`${t}`,e?t=t.replace(/\{([^}]+)\}/g,(function(t,i){return c.hasOwn(e,i)?e[i]:t})):t},isArray:function(t){return!!(t&&t instanceof Array)},toList:function(t){return t instanceof Array?t:void 0===t?[]:"string"==typeof t?[t]:t&&c.hasOwn(t,"length")?Array.from(t):[t]},isList:function(t){return!!(c.isArray(t)&&t.length>0)},inList:function(t,e){if(!c.isList(e))return!1;for(let i=0,o=e.length;i{if(!c.isList(t))return;let n=0;const s=t.length;for(;nt.startsWith(e))).forEach((e=>{t[e]=null}))},hasShiftKey:function(t){let e=!1;return t&&(e=t.shiftKey),e},isTouchDevice:function(){return"ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0},contains:function(t,e){if(!t||!e)return!1;if(t===e)return!0;if("function"==typeof t.contains)return t.contains(e);let i=e.parentNode;for(;i;){if(i===t)return!0;i=i.parentNode}return!1},isNarrowCharacter:function(t){const e=t.codePointAt(0);return e>=32&&e<=126||162===e||163===e||165===e||166===e||172===e||175===e||8361===e||e>=10214&&e<=10221||10629===e||10630===e||e>=65377&&e<=65470||e>=65474&&e<=65479||e>=65482&&e<=65487||e>=65490&&e<=65495||e>=65498&&e<=65500||e>=65512&&e<=65518},getCharLen:function(t){let e=0;if(!t)return e;for(const i of String(t))e+=c.isNarrowCharacter(i)?1:2;return e},pascalToKebabCase:function(t){return`${t}`.trim().replace(/([a-z])([A-Z])/g,"$1-$2").replace(/\W/g,(t=>/[À-ž]/.test(t)?t:"-")).replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-").toLowerCase()},classMap:function(t){if("string"==typeof t)return t.trim();if(Array.isArray(t)){let e=t.filter((t=>t));return e=e.map((t=>t&&"object"==typeof t?c.classMap(t):String(t).trim())),e=e.filter((t=>t)),e=Array.from(new Set(e)),e.join(" ")}if(t&&"object"==typeof t){const e=[];return Object.keys(t).forEach((i=>{t[i]&&e.push(i)})),e.join(" ")}return""},styleMap:function(t){if("string"==typeof t)return t.trim();if(Array.isArray(t)){let e=t.filter((t=>t));return e=e.map((t=>{const e=String(t).trim();return e?-1===e.indexOf(":")?"":e.endsWith(";")?e:`${e};`:""})),e=e.filter((t=>t)),e=Array.from(new Set(e)),e.join(" ")}if(t&&"object"==typeof t){const e=[];return Object.keys(t).forEach((i=>{const o=t[i];if(o||0===o){const t=String(o).trim();t&&e.push(`${c.pascalToKebabCase(i)}: ${t};`)}})),e.join(" ")}return""},getInstance:function(t){if(t){const e=document.getElementById(t);if(e)return a.get(e)}},setInstance:function(t,e){t&&a.set(t,e)},bindEvents:function(t,e){t&&(c.unbindEvents(t),Object.keys(t).forEach((i=>{const o=t[i];o.target=o.target||e,o.target.addEventListener(i,o.handler,o.options)})))},unbindEvents:function(t){t&&Object.keys(t).forEach((e=>{const i=t[e];i.target&&i.target.removeEventListener(e,i.handler,i.options)}))},preventDefault:function(t){t&&"function"==typeof t.preventDefault&&t.cancelable&&t.preventDefault()},debounce:function(t){let e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100;const o=function(){clearTimeout(e),e=setTimeout((()=>{t.apply(this,arguments)}),i)};return o.cancel=()=>{clearTimeout(e)},o},throttle:function(t){let e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100,o=0;const n=function(){const n=Date.now();if(n>o+i)return clearTimeout(e),o=n,void t.apply(this,arguments);clearTimeout(e),e=setTimeout((()=>{o=n,t.apply(this,arguments)}),i)};return n.cancel=()=>{clearTimeout(e),o=0},n},microtask:function(t){const e=new h,i=function(){e.start((()=>{t.apply(this,arguments)}))};return i.cancel=()=>{e.cancel()},i},nextTick:function(t){"function"==typeof window.queueMicrotask?window.queueMicrotask((()=>{t()})):Promise.resolve().then((()=>{t()}))},cancelAsync:function(t){t&&(Object.keys(t).filter((e=>e.startsWith("async")&&"function"==typeof t[e])).forEach((e=>{const i=t[e];"function"==typeof i.cancel&&(i.cancel(),t[e]=null)})),Object.keys(t).filter((t=>t.startsWith("timeout"))).forEach((e=>{clearTimeout(t[e])})))}},d=c,u={animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},g=function(t){return null!==t&&1===t.nodeType},f=function(t){let e=t.ownerDocument.defaultView;return e&&e.opener||(e=window),e.getComputedStyle(t)},p={},m=function(t,e){return null!=(i=t)&&i===i.window?t[`inner${e}`]:(function(t){return null!==t&&9===t.nodeType}(t)&&(t=t.body),t[`client${e}`]);var i},b=function(t){return this.list=[],t?this.create(t):this};function w(t){return new b(t)}b.prototype={constructor:b,Query:"Query",list:[],create:function(t){return t instanceof b?t:"string"==typeof t?this.createFromString(t):((t.nodeType||t===window)&&(this.list=[t]),this)},createFromString:function(t){if("<"===(t=t.trim())[0]&&">"===t[t.length-1]&&t.length>=3)this.parseHTML(t);else{const e=document.querySelectorAll(t);for(let t=0,i=e.length;t{this.css(e,t[e])}))}var i;return this.each((function(i){let o=e;"number"!=typeof o||u[t]||(o+="px"),i.style[t]=o})),this},attr:function(t,e){if(!t)return this;if(1===arguments.length){if("object"==typeof t)return Object.keys(t).forEach((e=>{this.attr(e,t[e])})),this;const e=this.get(0);return e?e.getAttribute(t):void 0}return this.each((function(i){i.setAttribute(t,e)})),this},removeAttr:function(t){return t?(this.each((function(e){e.hasAttribute(t)&&e.removeAttribute(t)})),this):this},removeClass:function(t){if(!arguments.length)return this.each((function(t){t.className=""})),this;if(!t||"string"!=typeof t)return this;const e=t.split(" ");return this.each((function(t){e.forEach((function(e){e&&t.classList.remove(e)}))})),this},addClass:function(t){if(!t||"string"!=typeof t)return this;const e=t.split(" ");return this.each((function(t){e.forEach((function(e){e&&t.classList.add(e)}))})),this},hasClass:function(t){if(!t||"string"!=typeof t)return!1;let e=!1;return this.each((function(i){if(i.classList.contains(t))return e=!0,!1})),e},show:function(){return this.each((function(t){if(!g(t))return;const e=function(t){if(!p[t]){const e=document.createElement(t);document.body.appendChild(e);const i=f(e).display;e.parentNode.removeChild(e),p[t]=i}return p[t]}(t.nodeName);t.style.display=e})),this},hide:function(){return this.each((function(t){if(!g(t))return;"none"!==t.style.display&&(t.style.display="none")})),this},click:function(){const t=this.get(0);return t&&"function"==typeof t.click&&t.click(),this},offset:function(){const t={left:0,top:0},e=this.get(0);if(e){const i=e.getBoundingClientRect();t.left=i.left+window.scrollX,t.top=i.top+window.scrollY}return t},clone:function(){const t=new b;return this.each((function(e){if(e&&e.cloneNode){const i=e.cloneNode(!0);t.add(i)}})),t},children:function(){const t=new b;return this.each((function(e){let i=e.firstChild;for(;i;)t.add(i),i=i.nextSibling})),t},parent:function(){const t=this.get(0);return t?new b(t.parentNode):new b},is:function(t){if(!t)return!1;const e=t.split(",");let i=!0;return this.each((function(t){if(!t.nodeName)return i=!1,!1;const o=t.nodeName.toLowerCase();return d.inList(o,e)?void 0:(i=!1,!1)})),i}},Object.defineProperty(b.prototype,"length",{get:function(){return this.list.length}});const v={createCache:function(){this.headerCache=new Map,this.bodyCache=new Map,this.dataCache=new WeakMap},setHeaderCache:function(t,e){this.headerCache.set(t,e)},getHeaderCache:function(t){return this.headerCache.get(t)},clearHeaderCache:function(){this.headerCache.clear()},setRowCache:function(t,e){this.bodyCache.set(t,{rowNodes:e,cellNodes:new Map})},getRowCache:function(t){return this.bodyCache.get(t)},deleteRowCache:function(t){const e=this.getRowNodesByIndex(t);e&&e.each((t=>{this.removeNode(t)})),this.bodyCache.delete(t)},deleteCellCache:function(t,e){t&&(this.removeNode(t.get(e)),t.delete(e))},getRowNodesByIndex:function(t){const e=this.getRowCache(t);if(e)return e.rowNodes},getCellNodeByIndex:function(t,e){const i=this.getRowCache(t);if(i)return i.cellNodes.get(e)},forEachBodyCache:function(t){this.bodyCache.forEach(((e,i)=>{t.call(this,i,e.rowNodes,e.cellNodes)}))},updateRowCacheTopOffset:function(){const t=this.frozenInfo.row;this.forEachBodyCache(((e,i,o)=>{if(!(e<=t)&&i){const t=this.getViewRowItem(e),o=this.getViewRowTop(t);i.css("top",o)}}))},setNodeDataCache:function(t,e){if(t)return this.dataCache.set(t,e)},getNodeDataCache:function(t){if(t)return this.dataCache.get(t)},removeCache:function(){this.headerCache=null,this.bodyCache=null,this.dataCache=null}},H=["onUpdated","onFirstUpdated","onHeaderUpdated","onSort","onColumnAdded","onColumnRemoved","onColumnWidthChanged","onRowAdded","onRowRemoved","onRowExpanded","onRowCollapsed","onRowSubsRequest","onRowDragged","onRowDropped","onRowMoved","onRowMouseEnter","onRowMouseLeave","onSelectChanged","onCellUpdated","onCellMouseEnter","onCellMouseLeave","onClick","onDblClick","onContextMenu","onMouseOver","onMouseOut","onTouchStart","onTouchMove","onTouchEnd","onScroll","onScrollStateChanged","onMouseWheel","onResize","onLayout","onKeyDown","onDestroy"],y={};H.forEach((t=>{y[t]=t}));const C=y,R={renderCells:function(t,e){t.forEach((t=>{this.drawRowCells(t,e)}))},getCellValue:function(t,e){return t[e.id]},renderCell:function(t,e,i){const o=this.getCellValue(t,e);let n=o;this.nullFormatter&&(n=this.nullFormatter.call(this,n,t,e,i));const s=t.tg_formatter||e.tg_formatter;"function"==typeof s&&(n=s.call(this,n,t,e,i)),this.renderNodeContent(i,n);const{highlightKey:r}=this.options.highlightKeywords;t[r+e.id]&&this.renderSettings.highlightCells.push(i),this.trigger(C.onCellUpdated,{value:o,rowItem:t,columnItem:e,node:i})},getPreRenderColumnList:function(t,e){const i=[];if(!e.length)return i;for(let o=0,n=e.length;o{this.createCellNode(t,e)}))},getCellClass:function(t,e){const i=e.tg_view_index,o=["tg-cell"];return o.push(`tg-c-${i}`),e.align&&o.push(`tg-align-${e.align}`),0===e.tg_list_index&&o.push("tg-list-first"),e.tg_list_last&&o.push("tg-list-last"),o.push(d.classMap(e.classMap)),o.push(d.classMap(t[`${e.id}ClassMap`])),d.classMap(o)},createCellNode:function(t,e){const i=this.getRowCache(t);if(!i)return;const o=this.getViewRowItem(t),n=this.getViewColumnItem(e);if(!o||!n)return;const s=document.createElement("div");s.setAttribute("column",e);const r=this.getCellClass(o,n);s.className=r;const l=d.styleMap(n.styleMap)+d.styleMap(o[`${n.id}StyleMap`]);l&&(s.style.cssText=l);const h=i.rowNodes,a=n.tg_frozen,c=this.getCellRowNode(h,a);this.appendNode(c,s),this.renderCell(o,n,s),i.cellNodes.set(e,s),this.setNodeDataCache(s,{row:t,rowItem:o,rowNode:c,column:e,columnItem:n,cellNode:s})},getCellRowNode:function(t,e){const i=t.get(0);if(this.frozenInfo.columns){const o=t.get(1);return this.frozenInfo.right?e?o:i:e?i:o}return i}},S={addColumn:function(t,e,i){let o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];const n=this.getToBeAddedItemList(t);if(!n.length)return!1;let s;if(null!=e&&(s=this.getColumnItem(e),!s))return!1;const r=this.getToBeAddedParentSubs(s,this.columns),l=[this.getToBeAddedPositionIndex(i,r),0].concat(n);r.splice.apply(r,l),this.onNextUpdated((function(){this.trigger(C.onColumnAdded,n)}));const h={type:"columns"};return o&&(h.scrollColumn=n[n.length-1]),this.render(h),!0},deleteColumn:function(t){const e=this.toColumnItemList(t,(t=>!t.private));return!!e.length&&(this.removeColumnsHandler(e),this.onNextUpdated((function(){this.trigger(C.onColumnRemoved,e)})),this.render("columns"),!0)},removeColumnsHandler:function(t){const e=[].concat(t);e.sort((function(t,e){return e.tg_index-t.tg_index})),e.forEach((t=>{let e;if(t===this.sortColumn&&this.removeSortColumn(),t.tg_parent)e=t.tg_parent.subs,e.splice(t.tg_sub_index,1);else{e=this.columns;const i=e.findIndex((e=>e===t));-1!==i&&e.splice(i,1)}!e.length&&t.tg_parent&&(t.tg_parent.subs=null)}))}},T={setColumnWidth:function(t,e){return this.updateColumnWidth(t,e)?(this.resize(),this):this},updateColumnWidth:function(t,e){const i=this.getColumnItem(t);return!!i&&(!!d.isNum(e)&&(e=Math.round(e),e=Math.max(0,e),i.tg_width!==e&&(i.width=e,i.minWidth=Math.min(i.minWidth,e),i.maxWidth=Math.max(i.maxWidth,e),this.updateViewColumnWidth(i),!0)))},showColumn:function(t){return this.updateColumnsInvisible(this.toColumnItemList(t),!1)},hideColumn:function(t){return this.updateColumnsInvisible(this.toColumnItemList(t),!0)},updateColumnsInvisible:function(t,e){if(!t.length)return!1;const i=[];return t.forEach((t=>{t.invisible!==e&&(t.invisible=e,t.tg_invisible=e,i.push(t))})),!!i.length&&(this.render("columns"),!0)}},L={showColumnLine:function(t){t&&(this.$columnLineContainer.show(),this.renderColumnLine(t))},hideColumnLine:function(){this.previousColumnLineActive||this.$columnLineContainer.hide()},setColumnLineActive:function(t){t!==this.previousColumnLineActive&&(this.previousColumnLineActive=t,t?this.$columnLineItem.addClass("tg-active"):this.$columnLineItem.removeClass("tg-active"))},getColumnLineLeft:function(t){let e=t.tg_left;return t.tg_frozen||(e-=this.scrollLeft),this.frozenInfo.right&&(t.tg_frozen?e=t.tg_left+this.paneWidthL:e-=this.columnsWidthR),e},renderColumnLine:function(t){const e=this.getHeaderItemNode(t).offsetTop,i=t.tg_width,o=this.getColumnLineLeft(t);this.$columnLineItemL.css({top:e,left:o}),this.$columnLineItemR.css({top:e,left:o+i-1}),this.frozenInfo.right||(this.frozenInfo.columns&&!t.tg_frozen&&o{this.renderColumnLine(e.columnItem)})),this.resize()},columnWidthTouchStartHandler:function(t,e){d.preventDefault(e.e);const i=e.columnItem;this.showColumnLine(i),this.setColumnLineActive(!0),e.index=i.tg_index;const o=this.getColumnHeaderNode(i);e.width=o.clientWidth},columnWidthTouchMoveHandler:function(t,e){d.preventDefault(e.e);const i=e.columnItem;let o=e.width+e.offsetX;o=d.clamp(o,i.minWidth,i.maxWidth),i.tg_width!==o&&(i.width=o,this.updateViewColumnWidth(i),this.renderColumnLine(i))},columnWidthTouchEndHandler:function(t,e){d.preventDefault(e.e),this.setColumnLineActive(!1),this.hideColumnLine(),this.resize()}},I={getColumnItem:function(t){return d.isNum(t)?(t<0&&(t=this.columnsInfo.length+t),this.columnsInfo.indexCache[t]):t?d.isNum(t.tg_index)?t:this.getColumnItemById(t.id||t):void 0},getColumnItemById:function(t){return this.getColumnItemBy("id",t)},getColumnItemBy:function(t,e){if(void 0!==e)return this.columnsInfo.indexCache.find((i=>i[t]===e))},getColumnsLength:function(t){return t?this.columnsInfo.length:this.viewColumns.length},getViewColumnItem:function(t){return this.viewAllColumns[t]},isColumnSortable:function(t){return!!t&&(!t.tg_group&&(!(!t.name||!t.id)&&this.isSortable(t)))},isColumnResizable:function(t){return!!t&&(!t.tg_group&&(!d.hasOwn(t,"resizable")||Boolean(t.resizable)))},updateViewColumnWidth:function(t){return t.tg_width=t.width,this.updateColumnHeaderSize(t),this.updateTotalColumnsWidth(),this.updateHeaderLayerHeight(),this.cssRulesInvalid=!0,this.resizeBodyHandler(),this.trigger(C.onColumnWidthChanged,t),!0},updateTotalColumnsWidth:function(){this.blankColumn.tg_width=0;const t=this.viewColumns;let e=0,i=0;const o=this.frozenInfo.columns,n=t.length;let s=0;for(let r=0;r0&&(s+=l,o&&r>=o?i+=l:e+=l)}if(this.frozenInfo.right){const t=e;e=i,i=t}this.columnsWidthL=e,this.columnsWidthR=i,this.columnsWidth=e+i},updateColumnHeaderSize:function(t){this.updateColumnHeaderWidth(t),this.updateColumnHeaderHeight(t,!0),this.updateColumnGroupWidth(t)},updateColumnHeaderWidth:function(t){const e=this.getColumnHeaderNode(t);if(!e)return;const i=t.tg_width;this.isInvisible(t)||i<=0?e.style.display="none":(e.style.display="",e.style.width=`${i}px`)},updateColumnHeaderHeight:function(t,e){if(t.tg_height=0,t.tg_width<=0)return;if(this.isInvisible(t))return;e&&(t.tg_element_height=0);const i=t.tg_element_height;if(i)return void(t.tg_height=i);const o=this.getColumnHeaderHeight(t);t.tg_height=o,t.tg_element_height=o},getColumnHeaderHeight:function(t){const e=this.getColumnHeaderNode(t);return e?e.clientHeight:0},updateColumnGroupWidth:function(t){const e=t.tg_parent;if(!e)return;const i=this.getColumnGroupWidth(e);e.tg_width!==i&&(e.tg_width=i,this.updateColumnHeaderSize(e))},getColumnGroupWidth:function(t){if(this.isInvisible(t))return 0;let e=0;return t.subs&&t.subs.forEach((t=>{this.isInvisible(t)||d.isNum(t.tg_width)&&(e+=t.tg_width)})),e}},E={initTreeInfo:function(t,e){const i=[];let o=!1,n=0,s=0;const r=function(t,r,l){(t=>{t.invisible?t.tg_invisible=!0:t.tg_invisible&&(t.tg_invisible=!1)})(t),((t,i)=>{if(e>=0&&!t.tg_invisible)return t.tg_frozen=!0,void(e-=1);t.tg_frozen&&(t.tg_frozen=!1)})(t),(t=>{if(d.hasOwn(t,"subs")){if(Array.isArray(t.subs))return o=!0,t.tg_group=!0,void(t.tg_subs_length=t.subs.length);t.subs=null}t.tg_group&&(t.tg_group=!1)})(t),((t,e)=>{t.tg_parent=e;let i=0;e&&(i=e.tg_level+1,i>n&&(n=i)),t.tg_level=i})(t,l),t.tg_index=s,t.tg_sub_index=r,i.push(t),s+=1},l=function(t,e){let i=0;const o=t.length;for(;i{if(!this.isInvisible(e))return this.isRowSelectable(e)?t(e,i,o):void 0})),this},toRowItemList:function(t,e){let i=d.toList(t).map((t=>this.getRowItem(t))).filter((t=>t));return"function"==typeof e&&(i=i.filter(e)),i},toColumnItemList:function(t,e){let i=d.toList(t).map((t=>this.getColumnItem(t))).filter((t=>t));return"function"==typeof e&&(i=i.filter(e)),i},isRowLeaf:function(t){return!!t&&("blank"!==t.formatter&&(!t.tg_frozen&&!t.tg_group))},isRowSelectable:function(t){return!!t&&(d.hasOwn(t,"selectable")?Boolean(t.selectable):this.isRowLeaf(t))},isEmptyGroup:function(t){return!(!t||!t.tg_group||0!==t.tg_subs_length)},isInvisible:function(t){return!!t&&(!(!t.tg_filtered&&!t.tg_invisible)||!!this.isInvisible(t.tg_parent))},isSortable:function(t){return!!t&&(!d.hasOwn(t,"sortable")||Boolean(t.sortable))},isCollapsedChanged:function(t,e){return Boolean(t.collapsed)!==e},isSelectedChanged:function(t,e){return Boolean(t.selected)!==e}},x={updateCssRules:function(){this.cssRulesInvalid&&(this.cssRulesInvalid=!1,this.initCssRules(),this.updateColumnsCssRules(),this.updateHeadersCssRules(),this.updateStyleElement())},initCssRules:function(){this.removeCssRules(),this.cssList={},this.cssDisplayCache={};const t=this.getRowHeight(),e=this.createCssRule(".tg-row");e.height=`${t}px`,e["line-height"]=`${t}px`},resetCssDisplay:function(t){if(this.cssDisplayCache){t=t||"";for(const e in this.cssDisplayCache)if(d.hasOwn(this.cssDisplayCache,e)){this.cssDisplayCache[e].style.display=t}}},updateColumnsCssRules:function(){const t=this.viewColumns,e=this.frozenInfo.column,i={};let o=0;for(let n=0,s=t.length;n=0;i--){const e=this.headerLayerHeight[i],o=this.createCssRule(`.tg-h-${i}`);o.bottom=`${t}px`,o.height=`${e}px`,t+=e}this.getLayerCombinations(e).forEach((t=>{const e=this.createCssRule(`.tg-h-${t}`);let i=0;t.split("").forEach((t=>{i+=this.headerLayerHeight[t]||0})),e.height=`${i}px`}))},getLayerCombinations:function(t){let e="";for(;t>=0;)e+=t,t--;if(e.length<2)return[];const i=[],o=function(t,e){const n=t.length;let s=e+2;for(;s<=n;){const o=t.substring(e,s);i.push(o),s++}e=i){let t="Possible Event memory leak detected. ";return t+=`More than ${i} (max limit) listeners added. `,t+="Use setMaxListeners(n) to increase limit.",void console.warn(t,e)}t.events.push(e)},addEvents:function(t,e,i){e.forEach((function(e){const o=e.type;t[o]||(t[o]={events:[]});if("function"!=typeof e.handler)return;const n=t[o];_.addEvent(n,e,i)}))},removeEventByNamespace:function(t,e){Object.keys(t).forEach((function(i){const o=t[i],n=[];o.events.forEach((function(t){t&&t.namespace!==e&&n.push(t)})),o.events=n}))},removeEventByHandler:function(t,e,i){const o=t[e];if(!o)return;const n=[];o.events.forEach((function(t){t&&t.handler!==i&&n.push(t)})),o.events=n},removeEventByType:function(t,e){const i=t[e];i&&(i.events=[])},removeEvent:function(t,e){const i=e.type,o=e.namespace;if(!i&&o)return void _.removeEventByNamespace(t,o);const n=e.handler;"function"!=typeof n?_.removeEventByType(t,i):_.removeEventByHandler(t,i,n)},removeEvents:function(t,e){e.forEach((function(e){_.removeEvent(t,e)}))},removeAllEvents:function(t){Object.keys(t).forEach((function(e){_.removeEventByType(t,e)}))},sendEventList:function(t,e,i,o){const n=e.events;for(let e=0;e!t.onceCalled))},sendEvent:function(t,e,i,o){const n=e[i];if(!n)return;const s=new P({type:i,target:t,currentTarget:t,data:o});_.sendEventList(t,n,s,o)}},N=_;class k{maxListeners=10;setMaxListeners(t){this.maxListeners=Number(t)||10}getMaxListeners(){return this.maxListeners}getEventListeners(){return this.eventListeners||(this.eventListeners={}),this.eventListeners}delEventListeners(){this.eventListeners=null}bind(t,e,i){const o=N.getEventList(this,t,e,i);if(!o.length)return this;const n=this.getEventListeners();return N.addEvents(n,o,this.maxListeners),this}once(t,e){return this.bind(t,e,{once:!0})}unbind(t,e,i){const o=this.getEventListeners();if(!arguments.length)return N.removeAllEvents(o),this;const n=N.getEventList(this,t,e,i);return n.length?(N.removeEvents(o,n),this):this}trigger(t,e){const i=this.getEventListeners();return N.sendEvent(this,i,t,e),this}}const V={DRAG_START:"drag_start",DRAG_MOVE:"drag_move",DRAG_END:"drag_end"};class O extends k{static EVENT=V;generateOptions(t){return d.merge({type:"mouse",startX:0,startY:0,previousX:0,previousY:0,currentX:0,currentY:0,moveX:0,moveY:0,offsetX:0,offsetY:0,changed:!1},t)}start(t,e){t&&(this.unbindEvents(),this.bindEvents(),this.options=this.generateOptions(e),this.startHandler(t))}bindEvents(){this.windowEvents={mousemove:{handler:t=>{this.iframeHandler(t),this.mouseMoveHandler(t)},options:!0},mouseup:{handler:t=>{this.mouseUpHandler(t)},options:{once:!0}}},d.bindEvents(this.windowEvents,window)}unbindEvents(){d.unbindEvents(this.windowEvents),this.windowEvents=null,this.previousIframe&&(this.previousIframe.classList.remove("tg-pointer-events-none"),this.previousIframe=null)}iframeHandler(t){const e=t.target;"IFRAME"===e.nodeName&&e!==this.previousIframe&&(this.previousIframe&&this.previousIframe.classList.remove("tg-pointer-events-none"),e.classList.add("tg-pointer-events-none"),this.previousIframe=e)}startHandler(t){const e=this.options;e.e=t,e.startX=t.pageX,e.startY=t.pageY,e.currentX=e.startX,e.currentY=e.startY,this.hasMoved=!1}mouseMoveHandler(t){d.preventDefault(t);const e=this.options;e.e=t,e.previousX=e.currentX,e.previousY=e.currentY,e.currentX=t.pageX,e.currentY=t.pageY,e.moveX=e.currentX-e.previousX,e.moveY=e.currentY-e.previousY,e.offsetX=e.currentX-e.startX,e.offsetY=e.currentY-e.startY,e.changed=!(0===e.offsetX&&0===e.offsetY),this.hasMoved?this.trigger(V.DRAG_MOVE,e):(this.hasMoved=!0,this.trigger(V.DRAG_START,e))}mouseUpHandler(t){this.unbindEvents();const e=this.options;this.hasMoved&&(e.e=t,d.preventDefault(t),this.trigger(V.DRAG_END,e))}destroy(){this.unbindEvents(),this.unbind()}}const $={Linear:{None:function(t){return t}}},B={MOTION_START:"motion_start",MOTION_MOVE:"motion_move",MOTION_END:"motion_end",MOTION_STOP:"motion_stop"};class D extends k{static EVENT=B;constructor(t){super(),this.constructorOptions=t,this.stopped=!0}generateOptions(t){return d.merge({easing:null,duration:100,from:0,till:1,data:0},this.constructorOptions,t)}stop(){return this.stopped||(this.stopped=!0,this.cancelAnimationFrame(),this.trigger(B.MOTION_STOP,this.data)),this}start(t){return this.stop(),this.stopped=!1,this.options=this.generateOptions(t),this.initCalculation(),this.data=this.calculateHandler(0),this.trigger(B.MOTION_START,this.data),this.stopped||(this.time=Date.now(),this.requestAnimationFrame(this.moveHandler)),this}requestAnimationFrame(t){this.requestId=window.requestAnimationFrame((()=>{t.apply(this)}))}cancelAnimationFrame(){window.cancelAnimationFrame(this.requestId)}getEasing(t){return"function"!=typeof t&&(t=d.getValue($,t,$.Linear.None)),t}moveHandler(){const t=Date.now()-this.time,e=this.duration;if(t{o[n]=this.calculateNumber(t,e[n],i[n])})),o):(this.calculateKeys=[],Object.keys(e).forEach((n=>{const s=e[n],r=i[n];d.isNum(s)&&d.isNum(r)&&(o[n]=this.calculateNumber(t,s,r),this.calculateKeys.push(n))})),o)}calculateNumber(t,e,i){return(i-e)*t+e}calculateNone(t,e,i){return e}destroy(){this.stop(),this.unbind()}}const W={TOUCH_START:"touch_start",TOUCH_MOVE:"touch_move",TOUCH_END:"touch_end",TOUCH_INERTIA:"touch_inertia"};class A extends k{static EVENT=W;generateOptions(t){return d.merge({type:"touch",startX:0,startY:0,previousX:0,previousY:0,currentX:0,currentY:0,moveX:0,moveY:0,offsetX:0,offsetY:0,changed:!1,touchLength:0,direction:"",inertia:!1,inertiaTime:200},t)}start(t,e){t&&(this.unbindEvents(),this.bindEvents(),this.options=this.generateOptions(e),this.startHandler(t))}bindEvents(){this.touchEvents={touchmove:{handler:t=>{this.touchMoveHandler(t)},options:{passive:!1}},touchend:{handler:t=>{this.touchEndHandler(t)},options:{passive:!1,once:!0}},touchcancel:{handler:t=>{this.touchCancelHandler(t)},options:{passive:!1,once:!0}}},d.bindEvents(this.touchEvents,document.body)}unbindEvents(){this.motionStop(),d.unbindEvents(this.touchEvents),this.touchEvents=null}startHandler(t){this.trackingPoints=[];const e=t.touches,i=e[0];if(!i)return;const o=this.options;o.e=t,o.startX=i.clientX,o.startY=i.clientY,o.currentX=o.startX,o.currentY=o.startY,o.touchLength=e.length,this.addTrackingPoint(o),this.trigger(W.TOUCH_START,o)}touchMoveHandler(t){const e=t.touches,i=e[0];if(!i)return;const o=this.options;o.e=t,o.previousX=o.currentX,o.previousY=o.currentY,o.currentX=i.clientX,o.currentY=i.clientY,o.moveX=o.currentX-o.previousX,o.moveY=o.currentY-o.previousY,o.offsetX=o.currentX-o.startX,o.offsetY=o.currentY-o.startY,o.changed=!(0===o.offsetX&&0===o.offsetY),o.touchLength=e.length,o.direction=this.getDirection(o),this.addTrackingPoint(o),this.trigger(W.TOUCH_MOVE,o)}touchEndHandler(t){this.unbindEvents();const e=this.options;e.e=t,this.trigger(W.TOUCH_END,e);const i=t.changedTouches[0];if(!i)return;const o=t.touches;e.touchLength=o.length,e.touchLength>0||(e.currentX=i.clientX,e.currentY=i.clientY,this.addTrackingPoint(e),this.motionStart())}touchCancelHandler(t){this.unbindEvents(),this.trigger(W.TOUCH_END,this.options)}getMotionInfo(){const t=this.trackingPoints;if(t.length<2)return;if(this.filterTrackingPoints(t),t.length<2)return;const e=t[0],i=t[t.length-1],o=i.t-e.t;if(o<=0)return;let n=i.x-e.x,s=i.y-e.y;const r=Math.abs(n),l=Math.abs(s);r>l?s=0:n=0;return{offsetDistance:Math.max(r,l),offsetTime:o,offsetX:n,offsetY:s}}motionStart(){const t=this.options;if(!t.inertia)return;const e=this.getMotionInfo();if(!e)return;const i=500*e.offsetDistance/50,o=d.clamp(i,20,2e3),n={x:20*(e.offsetX/e.offsetTime),y:20*(e.offsetY/e.offsetTime)};this.motion=new D,this.motion.bind(D.EVENT.MOTION_MOVE,((e,i)=>{t.touchInertiaX=i.x,t.touchInertiaY=i.y,this.trigger(W.TOUCH_INERTIA,t)})),this.motion.start({duration:o,from:n,till:{x:0,y:0}})}motionStop(){this.motion&&(this.motion.destroy(),this.motion=null)}getDirection(t){const i=t.offsetX,o=t.offsetY,n=Math.abs(i),s=Math.abs(o);if(n0)return e.UP;if(o<0)return e.DOWN}if(n>s){if(i>0)return e.LEFT;if(i<0)return e.RIGHT}return""}filterTrackingPoints(t){t.reverse();const e=t.length,i=Date.now(),o=this.options.inertiaTime;for(let n=0;no){t.length=n;break}t.reverse()}addTrackingPoint(t){if(!t.inertia)return;const e=t.currentX,i=t.currentY,o=Date.now(),n=this.trackingPoints;n.push({x:e,y:i,t:o}),n.length>100&&this.filterTrackingPoints(n)}destroy(){this.unbindEvents(),this.unbind()}}const F={getAllEvents:function(){return[].concat(H)},bindEvents:function(){this.unbindEvents(),this.containerEvents={mousedown:{handler:t=>{this.containerMouseDownHandler(t)},options:!0},mousemove:{handler:t=>{this.containerMouseMoveHandler(t)},options:!0},mouseover:{handler:t=>{this.containerMouseOverOutHandler(t,!0)},options:!0},mouseout:{handler:t=>{this.containerMouseOverOutHandler(t,!1)},options:!0},mouseenter:{handler:t=>{this.containerMouseEnterLeaveHandler(t,!0)},options:!0},mouseleave:{handler:t=>{this.containerMouseEnterLeaveHandler(t,!1)},options:!0},touchstart:{handler:t=>{this.containerTouchStartHandler(t)},options:{passive:!1}},touchmove:{handler:t=>{this.containerTouchMoveHandler(t)},options:{passive:!1}},touchend:{handler:t=>{this.containerTouchEndHandler(t)},options:{passive:!1}},touchcancel:{handler:t=>{this.containerTouchCancelHandler(t)},options:{passive:!1}},wheel:{handler:t=>{this.containerWheelHandler(t)},options:{passive:!1}},click:{handler:t=>{this.containerClickHandler(t)},options:!0},dblclick:{handler:t=>{this.containerDblClickHandler(t)},options:!0},contextmenu:{handler:t=>{this.containerContextMenuHandler(t)},options:!0},selectstart:{handler:t=>{this.containerSelectStartHandler(t)},options:!0},keydown:{handler:t=>{this.containerKeyDownHandler(t)},options:!0}},d.bindEvents(this.containerEvents,this.container),this.columnWidthDrag=new O,this.columnWidthDrag.bind(O.EVENT.DRAG_START,((t,e)=>{this.columnWidthDragStartHandler(t,e)})).bind(O.EVENT.DRAG_MOVE,((t,e)=>{this.columnWidthDragMoveHandler(t,e)})).bind(O.EVENT.DRAG_END,((t,e)=>{this.columnWidthDragEndHandler(t,e)})),this.columnWidthTouch=new A,this.columnWidthTouch.bind(A.EVENT.TOUCH_START,((t,e)=>{this.columnWidthTouchStartHandler(t,e)})).bind(A.EVENT.TOUCH_MOVE,((t,e)=>{this.columnWidthTouchMoveHandler(t,e)})).bind(A.EVENT.TOUCH_END,((t,e)=>{this.columnWidthTouchEndHandler(t,e)})),this.rowDrag=new O,this.rowDrag.bind(O.EVENT.DRAG_START,((t,e)=>{this.rowDragStartHandler(t,e)})).bind(O.EVENT.DRAG_MOVE,((t,e)=>{this.rowDragMoveHandler(t,e)})).bind(O.EVENT.DRAG_END,((t,e)=>{this.rowDragEndHandler(t,e)})),this.rowTouch=new A,this.rowTouch.bind(A.EVENT.TOUCH_START,((t,e)=>{this.rowDragStartHandler(t,e)})).bind(A.EVENT.TOUCH_MOVE,((t,e)=>{this.rowDragMoveHandler(t,e)})).bind(A.EVENT.TOUCH_END,((t,e)=>{this.rowDragEndHandler(t,e)})),this.scrollTouch=new A,this.scrollTouch.bind(A.EVENT.TOUCH_START,((t,e)=>{this.scrollTouchStartHandler(t,e)})).bind(A.EVENT.TOUCH_MOVE,((t,e)=>{this.scrollTouchMoveHandler(t,e)})).bind(A.EVENT.TOUCH_END,((t,e)=>{this.scrollTouchEndHandler(t,e)})).bind(A.EVENT.TOUCH_INERTIA,((t,e)=>{this.scrollTouchInertiaHandler(t,e)}))},isDefaultPrevented:function(t){return!!t&&t.defaultPrevented},getEventClosestNode:function(t,e){if(t&&t!==this.container)return t.classList.contains(e)?t:this.getEventClosestNode(t.parentNode,e)},getEventClosestData:function(t){if(!t||t===this.container)return;const e=this.getNodeDataCache(t);return e||this.getEventClosestData(t.parentNode)},getEventData:function(t){const e=this.getEventClosestData(t.target);if(e)return e.e=t,e},getWheelDelta:function(t,e,i){let o=t.deltaX,n=t.deltaY;return d.isNum(o)||(o=d.toNum(t.wheelDeltaX)),d.isNum(n)||(n=d.toNum(t.wheelDeltaY||t.wheelDelta)),1===t.deltaMode?(n*=e,o*=e):2===t.deltaMode&&(n*=i,o*=i),{deltaX:o,deltaY:n}},columnResizingMouseDownHandler:function(t){const e=this.getEventData(t);e&&this.columnWidthDrag.start(t,{columnItem:e.columnItem})},columnResizingTouchStartHandler:function(t){const e=this.getEventData(t);e&&this.columnWidthTouch.start(t,{columnItem:e.columnItem})},columnResizingMouseEnterLeaveHandler:function(t,e){const i=this.getEventData(t);i&&(e?this.showColumnLine(i.columnItem):this.hideColumnLine())},rowDragMouseDownHandler:function(t){const e=this.getEventData(t);e&&this.rowDrag.start(t,{rowItem:e.rowItem})},rowDragTouchStartHandler:function(t){const e=this.getEventData(t);e&&(this.protectedItem=e,this.rowTouch.start(t,{rowItem:e.rowItem}))},scrollPaneTouchStartHandler:function(t){if(!this.hasHScroll&&!this.hasVScroll)return;const e=this.getEventData(t);this.protectedItem=e,this.scrollTouch.start(t,{inertia:!0})},sortHandler:function(t,e){const i=e.columnItem;if(!this.isColumnSortable(i))return;const o=this.getEventClosestNode(t.target,"tg-column-name"),n=this.getEventClosestNode(t.target,"tg-column-sort");(o||n)&&(this.trigger(C.onSort,e),this.isDefaultPrevented(t)||this.setSortColumn(i))},selectIconAllClickHandler:function(t){const e=w(t);let i=!1;(e.hasClass("tg-selected")||e.hasClass("tg-mixed"))&&(i=!0),i=!i,this.selectAll(i)},cellEnterLeaveHandler:function(t,e){const i=this.getEventData(t);i&&(e?this.trigger(C.onCellMouseEnter,i):this.trigger(C.onCellMouseLeave,i))},rowEnterLeaveHandler:function(t,e){const i=this.getEventData(t);if(i&&(e?this.trigger(C.onRowMouseEnter,i):this.trigger(C.onRowMouseLeave,i),!this.isDefaultPrevented(t)))return this.renderRowHover(i.rowItem,e),this},containerMouseDownHandler:function(t){if(this.getEventClosestNode(t.target,"tg-column-resizing"))this.columnResizingMouseDownHandler(t);else if(this.options.rowDragVisible){this.getEventClosestNode(t.target,"tg-row-drag-icon")&&this.rowDragMouseDownHandler(t)}},containerMouseMoveHandler:function(t){this.scrollbarFadeInOutHandler(t,!0)},containerMouseOverOutHandler:function(t,e){const i=this.getEventClosestNode(t.target,"tg-cell"),o=this.getEventClosestNode(t.target,"tg-header-item");if(i||o){const i=this.getEventData(t);if(!i)return;e?this.trigger(C.onMouseOver,i):this.trigger(C.onMouseOut,i)}},containerMouseEnterLeaveHandler:function(t,e){this.scrollbarFadeInOutHandler(t,e);if(w(t.target).hasClass("tg-column-resizing"))return void this.columnResizingMouseEnterLeaveHandler(t,e);if(w(t.target).hasClass("tg-cell"))return void this.cellEnterLeaveHandler(t,e);w(t.target).hasClass("tg-row")&&this.rowEnterLeaveHandler(t,e)},containerTouchStartHandler:function(t){this.scrollTouch.motionStop();if(this.getEventClosestNode(t.target,"tg-column-resizing"))return void this.columnResizingTouchStartHandler(t);if(this.options.rowDragVisible){if(this.getEventClosestNode(t.target,"tg-row-drag-icon"))return void this.rowDragTouchStartHandler(t)}const e=this.getEventData(t);e&&(this.trigger(C.onTouchStart,e),this.isDefaultPrevented(t))||this.scrollPaneTouchStartHandler(t)},containerTouchMoveHandler:function(t){const e=this.getEventData(t);e&&this.trigger(C.onTouchMove,e)},containerTouchEndHandler:function(t){const e=this.getEventData(t);e&&this.trigger(C.onTouchEnd,e)},containerTouchCancelHandler:function(t){this.trigger(C.onTouchEnd,{e:t})},containerWheelHandler:function(t){if(this.hasMask)return;const e=this.getRowHeight(),i=this.bodyHeight,o=this.getWheelDelta(t,e,i);if(this.trigger(C.onMouseWheel,{e:t,deltaX:o.deltaX,deltaY:o.deltaY,delta:o}),this.isDefaultPrevented(t))return;let n=!1;this.scrollPaneHidden&&(n=this.scrollPaneFrozen.setOffsetH(o.deltaX),o.deltaX=0);(this.scrollPane.mouseWheelHandler(o)||n)&&d.preventDefault(t)},containerClickHandler:function(t){if(this.getEventClosestNode(t.target,"tg-tree-icon-all"))return void this.toggleAllRows();const e=this.getEventClosestNode(t.target,"tg-select-icon-all");if(e)return void this.selectIconAllClickHandler(e);const i=this.getEventData(t);if(!i)return;if(this.getEventClosestNode(t.target,"tg-header-item")){if(this.trigger(C.onClick,i),this.isDefaultPrevented(t))return;return void this.sortHandler(t,i)}if(this.getEventClosestNode(t.target,"tg-tree-icon"))return void this.toggleRow(i.rowItem);this.getEventClosestNode(t.target,"tg-select-icon")?this.setRowSelected(i.rowItem,t):this.trigger(C.onClick,i)},containerDblClickHandler:function(t){const e=this.getEventData(t)||{e:t};this.trigger(C.onDblClick,e)},containerContextMenuHandler:function(t){const e=this.getEventData(t)||{e:t};this.trigger(C.onContextMenu,e)},containerSelectStartHandler:function(t){if(this.options.textSelectable)return;w(t.target).is("input,textarea,code")||d.preventDefault(t)},containerKeyDownHandler:function(t){if(this.hasMask)return;if(this.trigger(C.onKeyDown,{e:t}),this.isDefaultPrevented(t))return;const e=t.keyCode,i={9:this.keyTabHandler,13:this.keyEnterHandler,27:this.keyEscHandler,33:this.keyPageUpHandler,34:this.keyPageDownHandler,35:this.keyEndHandler,36:this.keyHomeHandler,37:this.keyLeftHandler,38:this.keyUpHandler,39:this.keyRightHandler,40:this.keyDownHandler}[e];if(!i)return;i.call(this,t)&&d.preventDefault(t)},unbindEvents:function(){d.unbindEvents(this.containerEvents),this.containerEvents=null,this.columnWidthDrag&&(this.columnWidthDrag.destroy(),this.columnWidthDrag=null),this.columnWidthTouch&&(this.columnWidthTouch.destroy(),this.columnWidthTouch=null),this.rowDrag&&(this.rowDrag.destroy(),this.rowDrag=null),this.rowTouch&&(this.rowTouch.destroy(),this.rowTouch=null),this.scrollTouch&&(this.scrollTouch.destroy(),this.scrollTouch=null),this.protectedItem=null}},G={exportData:function(t){const e=this.getData();return{columns:this.getTreeSnapshot(e.columns,t),rows:this.getTreeSnapshot(e.rows,t)}},isItemExportable:function(t){return!!t&&(!d.hasOwn(t,"exportable")||Boolean(t.exportable))},getTreeSnapshot:function(t,e){const i=(t,o)=>{d.isList(o)&&o.forEach((o=>{if(!this.isItemExportable(o))return;const n=this.getItemSnapshot(o,e),s=o.subs;Array.isArray(s)&&(n.subs=[],i(n.subs,s)),t.push(n)}))},o=[];return i(o,t),o},getItemSnapshot:function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i={};return Object.keys(t).forEach((o=>{!0!==e[o]?!1!==e[o]&&"subs"!==o&&0!==o.indexOf("tg_")&&(i[o]=t[o]):i[o]=t[o]})),i}},j={flushRow:function(t){d.toList(t).forEach((t=>{this.deleteRowCache(t)}))},flushRowFrom:function(t){d.isNum(t)&&(0!==t?this.forEachBodyCache(((e,i,o)=>{e>=t&&this.deleteRowCache(e)})):this.flushBody())},flushBody:function(){this.forEachBodyCache(((t,e,i)=>{this.deleteRowCache(t)}))},flushSort:function(){this.frozenInfo.rows?this.flushRowFrom(this.frozenInfo.rows):this.flushBody()},flushColumn:function(t){const e=d.toList(t);this.forEachBodyCache(((t,i,o)=>{e.forEach((t=>{this.deleteCellCache(o,t)}))}))},flushColumnFrom:function(t){d.isNum(t)&&this.forEachBodyCache(((e,i,o)=>{o.forEach(((e,i)=>{i>=t&&this.deleteCellCache(o,i)}))}))},flushCell:function(t,e){const i=d.toList(t),o=d.toList(e);i.forEach((t=>{const e=this.getRowCache(t);if(!e)return;const i=e.cellNodes;o.forEach((t=>{this.deleteCellCache(i,t)}))}))},flushWithViewport:function(){const{rows:t,columns:e}=this.viewport;this.forEachBodyCache(((i,o,n)=>{t.includes(i)?n.forEach(((t,i)=>{e.includes(i)||this.deleteCellCache(n,i)})):this.deleteRowCache(i)}))}},U={"sort-h":'\n\n \n \n \n \n\n',"sort-v":'\n\n \n \n \n \n\n',checkbox:'\n\n \n \n \n\n',radio:'
',drag:'\n\n \n\n',tree:'\n\n \n \n\n'},X={icons:U,getIcon:function(t){let e=U[t];return e=String(e).trim(),e}},Y={header:function(t,e,i,o){return t},null:function(t,e,i,o){return e&&e.tg_group?t:null==t?"—":t},blank:function(t,e,i,o){return""},string:function(t,e,i,o){return t},number:function(t,e,i,o){return t},icon:function(t,e,i,o){return`${t}`},select:function(t,e,i,o){return this.isRowSelectable(e)?this.getSelectFormatterContent(e):""},rowDrag:function(t,e,i,o){return this.getRowDragFormatterContent(e)},rowNumber:function(t,e,i,o){return e.tg_row_number||""},tree:function(t,e,i,o){return this.getTreeFormatterContent(t,e)}},q={setFormatter:function(t,e){this.renderType="all";let i=t;if("string"==typeof t){if(this.formatters)return this.formatters[t]=e,this;i={},i[t]=e}return this.customFormatters=i,this},getFormatter:function(t){if(!t)return;const e=this.formatters[t];return"function"==typeof e?e.bind(this):void 0},getDefaultFormatter:function(t){return(Y[t]||Y.string).bind(this)},getSelectFormatterContent:function(t){let e="radio";this.options.selectMultiple&&(e="checkbox");const i=X.getIcon(e);return`
${i}
`},getRowDragFormatterContent:function(t){if(t.tg_frozen)return"";return`
${X.getIcon("drag")}
`},getTreeIndentWidth:function(t,i,o){if(!t)return 0;let n=5;return i||(n+=e.TREE_INDENT),n+=o*e.TREE_INDENT,n},getTreeFormatterContent:function(t,e){const i=this.rowsInfo.isTree,o=e.tg_group,n=this.isEmptyGroup(e);n&&(e.collapsed=!0);const s=e.collapsed,r=d.toNum(e.tg_level),l=this.getTreeIndentWidth(i,o,r),h=[];if(h.push(`
`),o){const t={"tg-tree-icon":!0,"tg-tree-icon-collapsed":s,"tg-tree-icon-expanded":!s,"tg-tree-icon-empty":n},e=X.getIcon("tree"),i=`
${e}
`;h.push(i)}return h.push(`
${t}
`),h.push("
"),h.join("")}},K={renderHeaderTables:function(){this.clearHeaderCache();const t=this.viewColumns,e=this.frozenInfo.columns;this.hasTreeColumn=!1,this.hasSortColumn=!1;let i=[],o=[];for(let n=0,s=t.length;n=e?o.push(s):i.push(s)}if(this.frozenInfo.right){const t=i;i=o,o=t}this.renderHeaderTable(i,this.$headerL),this.renderHeaderTable(o,this.$headerR)},renderHeaderTable:function(t,e){const i=document.createElement("div"),o=["tg-header-table"];this.hasSortColumn&&(o.push("tg-header-sortable"),o.push(`tg-header-sort-${this.options.sortIndicator}`)),i.className=d.classMap(o);const n=t.length;if(n){let e=t[n-1];e&&"tg-column-blank"===e.id&&(e=t[n-2]),t.forEach((t=>{this.renderHeaderItem(t,i,e)}))}e.append(i)},renderHeaderItem:function(t,e,i){const o=t.tg_view_index;if(this.getHeaderCache(o))return;const n=this.getHeaderItemClass(t,i),s=d.styleMap(t.headerStyleMap),r={column:o,class:n,data:t.id};s&&(r.style=s);const l=[this.createColumnHeader(t)];if(this.isColumnResizable(t)){const e=this.createColumnResizing(t);l.push(e)}const h=this.createElement("div",r,l);e.appendChild(h),this.setHeaderCache(o,h),this.setNodeDataCache(h,{rowItem:this.headerRowItem,column:o,columnItem:t,headerNode:h}),t.tg_parent&&this.renderHeaderItem(t.tg_parent,e)},createColumnHeader:function(t){const e={class:this.getHeaderClass(t),style:this.getHeaderStyle(t)},i=[this.createColumnName(t)];if(this.hasSortColumn&&!t.tg_group){const e=this.createColumnSort(t);i.push(e)}return this.createElement("div",e,i)},createColumnName:function(t){const e=["tg-column-name"];t.tg_group&&e.push("tg-header-group-name");const i={class:e.join(" ")};let o=t.name;const n=t.tg_headerFormatter;return"function"==typeof n&&(o=n.call(this,o,this.headerRowItem,t)),"tree"===t.formatter?o=this.createHeaderTreeName(o):t===this.selectColumn&&this.isSelectAllVisible()&&(o=this.createHeaderSelectName()),this.createElement("div",i,o)},createHeaderTreeName:function(t){this.hasTreeColumn=!0;const e=[];if(this.options.collapseAllVisible){const t=X.getIcon("tree"),i=this.createElement("div",{class:"tg-tree-icon tg-tree-icon-all"},t);e.push(i)}else{const t=this.createElement("div",{class:"tg-tree-icon"});e.push(t)}const i=this.createElement("div",{class:"tg-tree-name"},t);e.push(i);return this.createElement("div",{class:"tg-tree"},e)},createHeaderSelectName:function(){const t=X.getIcon("checkbox");return this.createElement("div",{class:"tg-select-icon-all tg-checkbox"},t)},createColumnSort:function(t){let e;return this.isColumnSortable(t)&&(e="h"===this.options.sortIndicator?this.createSortIndicatorH(t):this.createSortIndicatorV(t)),this.createElement("div",{class:"tg-column-sort"},e)},createSortIndicatorH:function(t){const e=X.getIcon("sort-h"),i=[this.createElement("div",{class:"tg-sort-indicator-line"}),this.createElement("div",{class:"tg-sort-indicator-icon"},e)];return this.createElement("div",{class:"tg-sort-indicator"},i)},createSortIndicatorV:function(t){const e=X.getIcon("sort-v"),i=[this.createElement("div",{class:"tg-sort-indicator-icon"},e)];return this.createElement("div",{class:"tg-sort-indicator"},i)},createColumnResizing:function(){return this.createElement("div",{class:"tg-column-resizing"})},getHeaderItemClass:function(t,e){const i=["tg-header-item"];return t.tg_group&&i.push("tg-header-group-item"),t===e&&i.push("tg-header-column-last"),i.push(`tg-c-${t.tg_view_index}`),i.push(`tg-h-${t.tg_layer}`),t.tg_combination&&i.push(`tg-h-${t.tg_combination}`),i.push(d.classMap(t.headerClassMap)),d.classMap(i)},getHeaderClass:function(t){const e=["tg-column-header"];return"tree"===t.formatter&&(e.push("tg-tree-header"),this.rowsInfo.isTree&&e.push("tg-tree-header-indent")),this.isColumnSortable(t)&&e.push(`tg-column-sortable tg-column-sort-${this.options.sortIndicator}`),t.align&&e.push(`tg-align-${t.align}`),e.join(" ")},getHeaderStyle:function(t){const e=[d.styleMap(t.headerStyleMap)],i=t.tg_width;return this.isInvisible(t)||i<=0?e.push("display:none;"):e.push(`width:${i}px;`),e.join("")}},J={renderHeader:function(){this.cssRulesInvalid=!0,this.$headerL.empty(),this.$headerR.empty(),this.resetCssDisplay(),this.renderHeaderTables(),this.renderHeaderSort(),this.headerCreated=!0,this.trigger(C.onHeaderUpdated,{node:this.$headerFrame.get(0)})},initHeaderLayerHeight:function(){this.updateScrollPaneHiddenState(),this.resetCssDisplay(),this.viewAllColumns.forEach((t=>{this.updateColumnHeaderHeight(t)})),this.resetCssDisplay("none"),this.updateHeaderLayerHeight()},updateHeaderLayerHeight:function(){const t={},e=this.columnsInfo.maxLevel;for(let i=0;i<=e;i++)t[i]=0;const i=[];this.viewAllColumns.forEach((function(e){if(e.tg_combination)i.push(e);else{const i=e.tg_height,o=e.tg_layer;t[o]=Math.max(t[o],i)}})),i.forEach((function(e){let i=e.tg_height;const o=e.tg_combination.split(""),n=o.pop();o.forEach((function(e){i-=t[e]||0})),t[n]=Math.max(t[n],i)}));const o=JSON.stringify(t);this.previousHeaderLayerHeight!==o&&(this.previousHeaderLayerHeight=o,this.headerLayerHeight=t,this.cssRulesInvalid=!0)}};var Q=i(915);const Z={create:function(t){this.id=d.uid(4,"tg-"),d.isObject(t)||(t={container:t}),this.constructorOptions=t,this.createCache(),this.createView(t.container)},createView:function(t){this.createHolder(t),this.$holder?(this.createGlobalStyle(),this.createContainer()):console.error("Grid requires a container")},createHolder:function(t){const e=w(t);if(!e.length)return;this.$holder=e,this.$holder.empty(),this.holder=this.$holder.get(0);const i=this.holder.getRootNode();this.shadowRoot=null,i&&i.host&&(this.shadowRoot=i)},createGlobalStyle:function(){const t=this.shadowRoot||document.head;if(t.querySelector(`style[context="${e.ID}"]`))return;const i=document.createElement("style");i.setAttribute("context",e.ID),i.innerHTML=Q.A.toString(),t.appendChild(i)},createContainer:function(){return this.$container=w('
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n').appendTo(this.$holder),this.$container.attr("id",this.id),this.$container.addClass(`${e.NS} ${this.id}`),this.container=this.$container.get(0),d.setInstance(this.container,this),this.$headerFrame=this.$container.find(".tg-header-frame"),this.$paneHL=this.$headerFrame.find(".tg-pane-header-left"),this.$paneHR=this.$headerFrame.find(".tg-pane-header-right"),this.$headerL=this.$paneHL.find(".tg-header-left"),this.$headerR=this.$paneHR.find(".tg-header-right"),this.$header=w().add(this.$headerL).add(this.$headerR),this.$bodyFrame=this.$container.find(".tg-body-frame"),this.$paneTL=this.$bodyFrame.find(".tg-pane-top-left"),this.$paneTR=this.$bodyFrame.find(".tg-pane-top-right"),this.$paneBL=this.$bodyFrame.find(".tg-pane-bottom-left"),this.$paneBR=this.$bodyFrame.find(".tg-pane-bottom-right"),this.$bodyTL=this.$paneTL.find(".tg-body-top-left"),this.$bodyTR=this.$paneTR.find(".tg-body-top-right"),this.$bodyBL=this.$paneBL.find(".tg-body-bottom-left"),this.$bodyBR=this.$paneBR.find(".tg-body-bottom-right"),this.$body=w().add(this.$bodyTL).add(this.$bodyTR).add(this.$bodyBL).add(this.$bodyBR),this.$columnLineContainer=this.$container.find(".tg-column-line"),this.$columnLineItem=this.$columnLineContainer.find(".tg-column-line-item"),this.$columnLineItemL=this.$columnLineContainer.find(".tg-column-line-l"),this.$columnLineItemR=this.$columnLineContainer.find(".tg-column-line-r"),this}},tt={initColumnsHandler:function(){this.columns=this.data.columns,this.columns.forEach(((t,e)=>{t&&"object"==typeof t||(this.columns[e]={})}));const t=this.getPrivateColumns();this.columnsInfo=this.initTreeInfo(t,this.frozenInfo.column);const e=[],i=[],o=(t,n)=>{if(!d.isList(t))return;let s,r=0;t.forEach((t=>{if(!this.isInvisible(t))if(t.tg_group){if(this.isEmptyGroup(t))return;i.push(t),o(t.subs,t)}else t.tg_list_index=r,r+=1,t.tg_list_last=!1,s=t,e.push(t)})),s&&(s.tg_list_last=!0)};o(t),e.forEach((t=>{this.initColumnItemHandler(t)})),i.forEach((t=>{this.initColumnGroupHandler(t)}));const n=[].concat(e).concat(i);this.initViewList(n,((t,e)=>{})),this.viewColumns=e,this.viewGroupColumns=i,this.viewAllColumns=n,this.initHeaderHandler(t),this.initSortColumn()},getPrivateColumns:function(){const t=this.options;this.selectColumn=t.selectColumn,this.rowDragColumn=t.rowDragColumn,this.rowNumberColumn=t.rowNumberColumn,this.blankColumn=t.blankColumn;let e=[];const i=()=>{t.selectVisible&&e.push(this.selectColumn),t.rowDragVisible&&e.push(this.rowDragColumn),t.rowNumberVisible&&(this.rowNumberColumn.width=t.rowNumberWidth,e.push(this.rowNumberColumn))};if(this.frozenInfo.right){const t=this.frozenInfo.column;this.columns.forEach(((o,n)=>{e.push(o),n===t&&i()}))}else i(),e=e.concat(this.columns);return e.push(this.blankColumn),e},setColumns:function(t){this.data.columns=d.toList(t),this.rerender()},getColumns:function(){return this.columns},getViewColumns:function(t){return t?this.viewAllColumns:this.viewColumns},initColumnItemHandler:function(t){this.initColumnProps(t),this.initColumnFormatter(t),this.initColumnWidth(t)},initColumnGroupHandler:function(t){this.initColumnFormatterByName(t,"headerFormatter","header")},initColumnProps:function(t){const e=this.options.columnTypes;if(!d.hasOwn(t,"type")){const i=e[t.id];"string"==typeof i&&(t.type=i)}let i=this.options.columnProps;const o=e[t.type];o&&"object"==typeof o&&(i=d.merge(i,o));for(const e in i)d.hasOwn(t,e)||(t[e]=i[e])},initColumnFormatter:function(t){this.initColumnFormatterByName(t,"headerFormatter","header");let e=t.type;const i=t.formatter;"string"==typeof i&&(e=i),this.initColumnFormatterByName(t,"formatter",e)},initColumnFormatterByName:function(t,e,i){let o=t[e];"function"!=typeof o?(o=this.getFormatter(i),t[`tg_${e}`]=o||this.getFormatter("string")):t[`tg_${e}`]=o.bind(this)},initColumnWidth:function(t){if(t!==this.blankColumn)return d.isNum(t.width)&&t.width>=0?(t.tg_width=t.width,t.minWidth=Math.min(t.minWidth,t.tg_width),void(t.maxWidth=Math.max(t.maxWidth,t.tg_width))):void this.initColumnWidthByName(t);t.tg_width=0},initColumnWidthByName:function(t){const e=this.getComputedColumnWidth(t);d.isNum(e)&&(t.tg_width=e)},getComputedColumnWidth:function(t){const e=t.name||"",i=d.getCharLen(e);let o=Math.round(10*i);return o>103&&(o=Math.max(103,Math.round(10*i/2)),o>133&&(o=Math.max(133,Math.round(10*i/3)),o>163&&(o=Math.max(163,Math.round(10*i/4))))),d.clamp(o,t.minWidth,t.maxWidth)},initSortColumn:function(){this.sortColumn=null;const t=this.options,e=t.sortField;if(!e)return;const i=this.getColumnItemById(e);return i&&this.isColumnSortable(i)?(d.hasOwn(i,"sortAsc")||(i.sortAsc=t.sortAsc),this.sortColumn=i,this):void 0}},et={initHeaderHandler:function(t){this.initHeaderRowItem(),this.viewGroupColumns.reverse(),this.initGroupColumnsWidth(),this.initGroupColumnsLayer(t)},initHeaderRowItem:function(){this.headerRowItem={tg_index:-1,tg_view_index:-1},this.viewAllColumns.forEach((t=>{d.hasOwn(t,"id")&&(this.headerRowItem[t.id]=t.name)}))},initGroupColumnsWidth:function(){this.viewGroupColumns.forEach((t=>{let e=0;t.subs.forEach((t=>{this.isInvisible(t)||(e+=t.tg_width)})),t.tg_width=e}))},initGroupColumnsLayer:function(t){const e=this.columnsInfo.maxLevel;this.viewColumns.forEach((function(t){t.tg_layer=e,t.tg_parent&&(t.tg_parent.tg_layer=e-1)})),this.viewGroupColumns.forEach((function(t){const e=t.tg_layer,i=t.tg_parent;if(i){let t=e-1;d.isNum(i.tg_layer)&&(t=Math.min(t,i.tg_layer)),i.tg_layer=t}})),this.initColumnRowspanHandler(t,0)},initColumnRowspanHandler:function(t,e){t.forEach((t=>{const i=this.initColumnCombinationHandler(t,e);t.tg_group&&this.initColumnRowspanHandler(t.subs,e+i)}))},initColumnCombinationHandler:function(t,e){const i=[],o=t.tg_layer;for(;e<=o;)i.push(e),e+=1;i.reverse();const n=i.length;let s="";return n>1&&(s=i.join("")),t.tg_combination=s,n}},it={},ot={name:"",minWidth:81,maxWidth:300},nt=function(t){return null==t},st=function(t,e){const i=nt(t),o=nt(e);return i&&o?0:i?1:o?-1:void 0},rt=function(t,e){return t.tg_index>e.tg_index?1:-1},lt=function(t,e){return rt(t,e)},ht=function(t,e){if("string"==typeof t&&"string"==typeof e){const i=t.toUpperCase(),o=e.toUpperCase();if(i!==o)return i>o?-1:1}return t>e?-1:1},at=function(t,e,i,o){return t?-1:e?1:ht(i,o)},ct=function(t,e){const i="number"==typeof t,o="number"==typeof e;return i&&o?t>e?-1:1:at(i,o,t,e)},dt=function(t,e){const i=new Date(t),o=new Date(e),n=d.isDate(i),s=d.isDate(o);if(n&&s){const t=i.getTime(),e=o.getTime();if(t===e)return;return t>e?-1:1}return at(n,s,t,e)},ut=function(t,e){const i="boolean"==typeof t,o="boolean"==typeof e;return i&&o?t>e?-1:1:at(i,o,t,e)},gt=function(t,e,i,o){const n=t[i.sortField],s=e[i.sortField],r=st(n,s);if("number"==typeof r)return 0===r?lt(t,e):i.sortBlankFactor*r;if(n!==s&&"function"==typeof o){const t=o(n,s);if(d.isNum(t))return i.sortFactor*t}return lt(t,e)},ft={blankValue:st,equal:lt,index:rt,value:gt,diffType:at,string:function(t,e,i){return gt(t,e,i,ht)},stringValue:ht,number:function(t,e,i){return gt(t,e,i,ct)},numberValue:ct,date:function(t,e,i){return gt(t,e,i,dt)},dateValue:dt,boolean:function(t,e,i){return gt(t,e,i,ut)},booleanValue:ut};const pt={initOptionsHandler:function(){return this.options=this.generateOptions(),this.initOptionsFormatters(),this.initOptionsSort(),this.initOptionsFrozen(),this.initOptionsScrollbar(),this.initOptionsContainer(),this.initBindWindowResize(),this.initBindContainerResize(),this},generateOptions(){const t={className:e.NS,theme:e.ID,headerVisible:!0,rowHeight:32,rowFilter:null,rowFilteredSort:null,rowNotFound:"",rowMoveCrossLevel:!0,rowCacheLength:0,rowProps:it,columnTypes:{tree:{type:"tree",formatter:"tree",width:230,minWidth:120,maxWidth:810},number:{type:"number",align:"right"},date:{type:"date",align:"right"},name:"tree"},columnCacheLength:0,columnProps:ot,collapseAllOnInit:null,collapseAllVisible:!0,selectAllOnInit:null,selectVisible:!1,selectAllVisible:!0,selectMultiple:!0,selectColumn:{private:!0,id:"tg-column-select",name:"",formatter:"select",headerClassMap:"tg-header-select",classMap:"tg-cell-select",width:36,align:"center",resizable:!1,sortable:!1,exportable:!1},rowDragCrossLevel:!0,rowDragVisible:!1,rowDragColumn:{private:!0,id:"tg-column-row-drag",name:"",formatter:"rowDrag",headerClassMap:"tg-header-row-drag",classMap:"tg-cell-row-drag",align:"center",width:36,resizable:!1,sortable:!1,exportable:!1},rowNumberWidth:36,rowNumberFilter:null,rowNumberVisible:!1,rowNumberColumn:{private:!0,id:"tg-column-row-number",name:"",formatter:"rowNumber",headerClassMap:"tg-header-row-number",classMap:"tg-cell-row-number",align:"center",maxWidth:100,sortable:!1,exportable:!1},blankColumn:{private:!0,id:"tg-column-blank",name:"",formatter:"blank",headerClassMap:"tg-header-blank",classMap:"tg-cell-blank",width:0,minWidth:0,maxWidth:4096,resizable:!1,sortable:!1,exportable:!1},sortField:"",sortAsc:!0,sortBlankValueBottom:!0,sortComparers:ft,sortOnInit:!1,sortIndicator:"h",highlightKeywords:{textKey:"tg_text_",textGenerator:null,highlightKey:"tg_highlight_",highlightPre:"",highlightPost:""},frozenRow:-1,frozenRowMax:10,frozenRowHoverable:!1,frozenBottom:!1,frozenColumn:-1,frozenColumnMax:10,frozenRight:!1,scrollbarSize:12,scrollbarSizeH:null,scrollbarSizeV:null,scrollbarRound:!1,scrollbarFade:!1,scrollbarFadeTimeout:1e3,scrollbarType:"auto",scrollPaneMinWidth:30,scrollPaneGradient:30,autoHeight:!1,textSelectable:!1,bindWindowResize:!1,bindContainerResize:!1},i=this.generateThemeOptions();return d.merge(t,i,this.constructorOptions,this.customOptions,this.dataOptions)},generateThemeOptions(){const t=this.pickOptions("theme").pop();if(t)return this.getThemeOptions(t)},pickOptions(t){return[this.constructorOptions,this.customOptions,this.dataOptions].map((e=>e&&e[t])).filter((t=>t))},initOptionsFormatters(){let t;const e=this.pickOptions("formatters");e.length&&(t=d.merge.apply(null,e)),this.formatters=d.merge(Y,t,this.customFormatters),this.nullFormatter=this.getFormatter("null")},initOptionsSort(){"v"!==this.options.sortIndicator&&(this.options.sortIndicator="h")},initOptionsFrozen:function(){const t=this.options;this.frozenInfo={column:-1,row:-1,columns:0,rows:0,bottom:Boolean(t.frozenBottom),right:Boolean(t.frozenRight)};let e=d.toNum(t.frozenColumn,!0);e=d.clamp(e,-1,t.frozenColumnMax),e>-1&&!this.frozenInfo.right&&(t.selectVisible&&(e+=1),t.rowDragVisible&&(e+=1),t.rowNumberVisible&&(e+=1)),this.frozenInfo.column=e,e>-1?this.frozenInfo.columns=e+1:(this.frozenInfo.columns=0,this.frozenInfo.right=!1);let i=d.toNum(t.frozenRow,!0);i=d.clamp(i,-1,t.frozenRowMax),this.frozenInfo.row=i,i>-1?this.frozenInfo.rows=i+1:(this.frozenInfo.rows=0,this.frozenInfo.bottom=!1)},initOptionsScrollbar:function(){const t=this.options;("auto"===t.scrollbarType&&d.isTouchDevice()||["touch","mobile"].includes(t.scrollbarType))&&(t.scrollbarFade=!0,t.scrollbarSize=6,t.scrollbarRound=!0);const e=d.toNum(t.scrollbarSize);this.scrollbarSizeH=e,d.isNum(t.scrollbarSizeH)&&(this.scrollbarSizeH=t.scrollbarSizeH),this.scrollbarSizeV=e,d.isNum(t.scrollbarSizeV)&&(this.scrollbarSizeV=t.scrollbarSizeV)},initOptionsContainer:function(){this.$container.attr("id",this.id);const t=this.options;this.$container.removeClass();const i=[e.NS,this.id,`tg-${t.theme}`,t.className];t.textSelectable||i.push("tg-text-unselectable"),d.isTouchDevice()&&i.push("tg-touch-device"),this.$container.addClass(d.classMap(i))}},mt={initBindWindowResize:function(){this.unbindWindowResize(),this.options.bindWindowResize&&(this.windowResizeEvents={resize:{handler:t=>{this.resize()}}},d.bindEvents(this.windowResizeEvents,window))},unbindWindowResize:function(){d.unbindEvents(this.windowResizeEvents)},initBindContainerResize:function(){if(this.unbindContainerResize(),!this.options.bindContainerResize||!this.holder)return;if("undefined"==typeof ResizeObserver)return;this.resizeObserver=new ResizeObserver((t=>{var e;(e=this.holder,Boolean(e.offsetWidth||e.offsetHeight||e.getClientRects().length))&&this.resize()})),this.resizeObserver.observe(this.holder)},unbindContainerResize:function(){this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null)}},bt={initRowsHandler:function(){this.rows=this.data.rows,this.rowsInfo=this.initTreeInfo(this.rows,this.frozenInfo.row)},getRows:function(){return this.rows},getViewRows:function(){return this.viewRows},createViewRows:function(){this.initRowFilterHandler();const t=[],e=this.getRowNumberFilter();let i=1;const o=(t,o)=>{if(e.call(this,t,o))return t.tg_row_number=i,void(i+=1);t.tg_row_number=""},n=(e,i,s)=>{if(!d.isList(e))return;let r,l=0;e.forEach((e=>{if(this.isInvisible(e))return;e.tg_list_index=l,l+=1,e.tg_list_last=!1,r=e,this.gridRowItemHandler(e),o(e,l),s||t.push(e);const i=s||e.tg_group&&e.collapsed;n(e.subs,e,i)})),r&&(r.tg_list_last=!0)};n(this.rows);let s,r=0;return this.initViewList(t,((t,e)=>{t.tg_top=r,this.initRowHeight(t),r+=this.getRowHeight(t),t.tg_group_line=!1,t.collapsed&&(t.tg_group_line=!0),s&&(t.tg_group||t.tg_level{const i=this.getRowItem(t);if(!i)return;const s=o[e]||n;i.height=s,delete i.tg_height,this.initRowHeight(i),this.flushRowFrom(i.tg_view_index)})),this.render("rows"),this},initRowFilterHandler:function(){const t=this.options.rowFilter;if("function"!=typeof t)return;if(this.forEachRow(((e,i,o)=>{if(e.tg_invisible)return;const n=!t.call(this,e,i,o);if(e.tg_filtered=n,!n){let t=e;for(;t.tg_parent;)t.tg_parent.tg_filtered=!1,t=t.tg_parent}})),this.sortColumn)return;let e=this.options.rowFilteredSort;if("function"==typeof e&&(e=e.call(this)),!e)return;"string"==typeof e&&(e={sortField:e,sortAsc:this.options.sortAsc});const i=e.sortField||e.id;i&&this.sortRows(i,e)},highlightKeywordsFilter:function(t,e,i){const{textKey:o,textGenerator:n,highlightKey:s}=this.options.highlightKeywords;if(e.forEach((e=>{t[`${s}${e}`]=null})),!i)return!0;const r=`${i}`.trim().toLowerCase().split(/\s+/g).filter((t=>t));if(!r.length)return!0;let l=!1;const h=(e,i)=>(/<\/?[a-z][\s\S]*>/i.test(e)&&(e=((e,i)=>{const n=`${o}${i}`,s=t[n];if(s)return s;const r=document.createElement("div");r.innerHTML=e;const l=r.innerText;return t[n]=l,l})(e,i)),(t=>{const e=t.toLowerCase();let i=0;for(const t of r){const o=e.indexOf(t,i);if(-1===o)return;i=o+t.length}return!0})(e));let a=function(t,e){return t[e]};return"function"==typeof n&&(a=n),e.forEach((e=>{const i=a(t,e);if(null==i)return;const o=`${i}`.trim();if(!o)return;const n=h(o,e);n&&(t[`${s}${e}`]=n,l=!0,this.highlightKeywords=r)})),l},highlightKeywordsHandler:function(){const{highlightCells:t}=this.renderSettings;if(!t.length)return;const e=this.highlightKeywords;e&&d.nextTick((()=>{t.forEach((t=>{const i=document.createTreeWalker(t,NodeFilter.SHOW_TEXT),o=[];let n=i.nextNode();for(;n;)o.push(n),n=i.nextNode();o.length&&this.highlightTextNodes(o,e)}))}))},highlightTextNodes:function(t,e){const{highlightPre:i,highlightPost:o}=this.options.highlightKeywords;let n=0;const s=()=>(n>=e.length&&(n=0),e[n++]);let r=s();t.forEach((t=>{const e=t.textContent,n=e.toLowerCase(),l=[];let h=0;const a=e.length;let c=!1;for(;h{if(e.selected){if(t)return void(e.selected=!1);t=e}}))}const t=this.options.selectAllOnInit;!0!==t?!1===t&&this.updateAllRowsSelected(!1):this.updateAllRowsSelected(!0)},updateAllRowsSelected:function(t){this.forEachSelectableRow((e=>{e.selected=t}))},initCollapseAllOnInitHandler:function(){const t=this.options.collapseAllOnInit;!0!==t?!1===t&&this.updateAllRowsCollapsed(!1):this.updateAllRowsCollapsed(!0)},getToBeAddedItemList:function(t){const e=[];return d.toList(t).forEach((t=>{t&&"object"==typeof t?e.push(t):void 0!==t&&e.push({name:t})})),e},getToBeAddedParentSubs:function(t,e){return t?(t.subs||(t.subs=[]),t.subs):e},getToBeAddedPositionIndex:function(t,e){const i=e.length;return d.isNum(t)&&t>=0&&t<=i?Math.round(t):i},generateDataSnapshot:function(t){if(!t||"object"!=typeof t)return t;const e=this.cleanTreeList(t.rows),i=this.cleanTreeList(t.columns);return this.convertNumberType(e,i),t.rows=e,t.columns=i,t},cleanTreeList:function(t){if(!d.isList(t))return[];const e=(t,i)=>{i.forEach((i=>{if(!i||"object"!=typeof i)return void t.push({});const o=this.getItemSnapshot(i),n=i.subs;Array.isArray(n)&&(o.subs=[],e(o.subs,n)),t.push(o)}))},i=[];return e(i,t),i},convertNumberType:function(t,e){const i=[];d.forEachTree(e,(function(t){"number"===t.type&&t.id&&i.push(t.id)})),i.length&&d.forEachTree(t,(function(t){i.forEach((function(e){t[e]=d.convertNum(t[e])}))}))}},vt={setDefaultLoading:function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t)return;const i=t.style;e.size&&(i.width=e.size,i.height=e.size),e.color&&(i.color=e.color),e.size||e.color||t.removeAttribute("style"),e.fast?t.classList.add("tg-loading-fast"):t.classList.remove("tg-loading-fast")},getDefaultLoading:function(t){return this.setDefaultLoading(this.$defaultLoading,t),this.$defaultLoading},getLoadingHolder:function(){return this.$container?this.$container.find(".tg-loading"):w()},setLoading:function(t){if(!this.$container)return this;this.$defaultLoading||(this.$defaultLoading=this.$container.find(".tg-loading-default").get(0));const e=this.getLoadingHolder().get(0);return"function"==typeof t&&(t=t.call(this,e)),d.isObject(t)&&(t=this.getDefaultLoading(t)),t||(t=this.getDefaultLoading()),this.renderNodeContent(e,t),this},showLoading:function(){return this.getLoadingHolder().show(),this},hideLoading:function(){return this.getLoadingHolder().hide(),this}},Ht={showMask:function(t){if(!this.hasMask||t){const e=this.$container.find(".tg-mask"),i=e.get(0);if(t&&i){const e=d.styleMap(t);e&&(i.style.cssText=e)}e.show(),this.hasMask=!0}return this},hideMask:function(){return this.hasMask&&(this.$container.find(".tg-mask").hide(),this.hasMask=!1),this}},yt={renderNodeContent:function(t,e){if(t){if(e&&e.nodeType)return this.emptyNode(t),void t.appendChild(e);if(Array.isArray(e))return this.emptyNode(t),void e.forEach((e=>{e&&e.nodeType&&t.appendChild(e)}));void 0===e&&(e=""),t.innerHTML=e}},emptyNode:function(t){if(t)for(;t.firstChild;)t.removeChild(t.firstChild)},removeNode:function(t){t&&t.parentNode&&t.parentNode.removeChild(t)},appendNode:function(t,e){t&&e&&t.appendChild(e)},createElement:function(t,e,i){const o=document.createElement(t);e&&Object.keys(e).forEach((function(t){const i=e[t];void 0!==i&&o.setAttribute(t,i)})),d.isArray(i)||(i=[i]);let n="";return i.forEach((function(t){t&&t.nodeType?o.appendChild(t):void 0!==t&&(n+=t)})),n&&(o.innerHTML=n),o},find:function(t,e){return w(e||this.$container).find(t)},getRowNodes:function(t){const e=this.getRowItem(t);if(e)return this.getRowNodesByIndex(e.tg_view_index)},getCellNode:function(t,e){const i=this.getRowItem(t);if(!i)return;const o=this.getColumnItem(e);return o?this.getCellNodeByIndex(i.tg_view_index,o.tg_view_index):void 0},getHeaderItemNode:function(t){const e=this.getColumnItem(t);if(e)return this.getHeaderCache(e.tg_view_index)},getColumnHeaderNode:function(t){const e=this.getHeaderItemNode(t);if(e)return e.querySelector(".tg-column-header")}},Ct={render:function(){this.asyncRender||(this.asyncRender=d.microtask(this.renderSync)),this.asyncRender.apply(this,arguments)},renderSync:function(){this.renderStartedTimestamp=Date.now();const t=this.generateRenderSettings.apply(this,arguments);return this.renderSettings=t,"all"===t.type?(this.flushBody(),this.initHandler(),this.renderHeader(),this.updateViewRowsAndSize(),this.renderBody(),this):"columns"===t.type?(this.flushBody(),this.initColumnsHandler(),this.renderHeader(),this.updateViewRowsAndSize(),this.renderBody(),this):"rows"===t.type?(this.updateViewRowsAndSize(),this.renderBody(),this):"resize"===t.type?(this.resizeHandler(),this.renderBody(),this):(this.renderBody(),this)},generateRenderSettings:function(t){const e={type:this.renderType,scrollLeft:null,scrollTop:null,scrollColumn:null,scrollRow:null,highlightCells:[]};return"string"==typeof t?e.type=t:t&&Object.assign(e,t),this.headerCreated||(e.type="all"),e},renderBody:function(){this.scrollOnInit(),this.scrollTopOffset=this.scrollPane.getScrollTopOffset();const t=this.getViewport();return this.viewport=t,this.flushWithViewport(),this.previousScrollTopOffset!==this.scrollTopOffset&&(this.previousScrollTopOffset=this.scrollTopOffset,this.updateRowCacheTopOffset()),this.renderRows(t.rows),this.renderCells(t.rows,t.columns),this.renderUpdatedTimestamp=Date.now(),this.renderDuration=this.renderUpdatedTimestamp-this.renderStartedTimestamp,this.trigger(C.onUpdated,t),this.firstUpdated||(this.firstUpdated=!0,this.trigger(C.onFirstUpdated,t)),this.layoutEventHandler(),this.resizeEventHandler(),this.highlightKeywordsHandler(),this.renderSettings=null,this.renderType=null,this},rerender:function(){return this.render("all"),this}},Rt={resize:function(){return this.asyncResize||(this.asyncResize=d.throttle(this.resizeSync,100)),this.asyncResize.apply(this,arguments),this},resizeSync:function(){return this.headerCreated?(this.resizeHolderHandler.apply(this,arguments),this.firstUpdated&&this.isHolderInvisible()||this.render("resize"),this):this},resizeHolderHandler(t,e){if(0!==arguments.length)return 1===arguments.length?t&&"object"==typeof t?void this.$holder.css(t):void this.$holder.css({width:t}):void this.$holder.css({width:t,height:e})},isHolderInvisible(){const t=this.$holder.width(),e=this.$holder.height();return!t||!e},resizeHandler:function(){this.containerWidth=this.$container.width(),this.containerHeight=this.$container.height(),this.headerWidth=this.containerWidth,this.bodyWidth=this.containerWidth,this.updateTotalColumnsWidth(),this.resizeHeaderHandler(),this.resizeBodyHandler()},layoutEventHandler:function(){const t=this.previousLayout||{},e={headerWidth:this.headerWidth,headerHeight:this.headerHeight,bodyWidth:this.bodyWidth,bodyHeight:this.bodyHeight};Object.values(e).join("")!==Object.values(t).join("")&&(this.previousLayout=e,this.trigger(C.onLayout,d.merge({previous:t},e)))},resizeEventHandler:function(){const t=this.previousSize||{},e={width:this.containerWidth,height:this.containerHeight};Object.values(e).join("")!==Object.values(t).join("")&&(this.previousSize=e,this.trigger(C.onResize,d.merge({previous:t},e)))},resizeHeaderHandler:function(){this.initHeaderLayerHeight();const t=this.options;t.autoHeight&&this.viewRows.length>5e3&&(t.autoHeight=!1),this.headerHeight=0,t.headerVisible&&(this.containerHeight>0||t.autoHeight)&&this.updateHeaderTableHeight(),this.$headerFrame.css({width:this.headerWidth,height:this.headerHeight})},updateHeaderTableHeight:function(){let t=0;Object.keys(this.headerLayerHeight).forEach((e=>{t+=this.headerLayerHeight[e]}));const e=this.$headerL.find(".tg-header-table"),i=this.$headerR.find(".tg-header-table");e.css({height:t}),i.css({height:t}),this.headerHeight=t},resizeBodyHandler:function(){this.updateScrollState(),this.bodyHeight=this.containerHeight-this.headerHeight,this.$bodyFrame.css({width:this.bodyWidth,height:this.bodyHeight}),this.updatePaneWidth(),this.updatePaneHeight(),this.updateCanvasWidth(),this.updateCanvasHeight(),this.updateScrollPane(),this.updateCssRules()},updatePaneWidth:function(){let t=this.bodyWidth,e=0;if(this.frozenInfo.columns){const i=this.getScrollbarWidth();this.frozenInfo.right?(e=this.columnsWidthR+i,t=this.bodyWidth-e):(t=this.columnsWidthL,e=this.bodyWidth-t),this.scrollPaneHidden&&(this.frozenInfo.right?(t<=0&&(t=0),e=Math.max(0,this.bodyWidth-t)):(e3&&void 0!==arguments[3])||arguments[3];const n=this.getToBeAddedItemList(t);if(!n.length)return!1;let s;if(null!=e&&(s=this.getRowItem(e),!s))return!1;const r=this.getToBeAddedParentSubs(s,this.rows),l=this.getToBeAddedPositionIndex(i,r),h=[l,0].concat(n);r.splice.apply(r,h),this.initRowsHandler(),s?(s.collapsed=!1,this.flushRowFrom(s.tg_view_index+l)):this.flushRowFrom(l),this.onNextUpdated((function(){this.trigger(C.onRowAdded,n)}));const a={type:"rows"};return o&&(a.scrollRow=n[n.length-1]),this.render(a),!0},deleteRow:function(t){const e=d.toList(t),i=[];if(e.forEach((t=>{const e=this.getRowItem(t);e&&i.push(e)})),!i.length)return!1;const o=this.removeRowsHandler(i);this.initRowsHandler();const n=this.getRemovedMinIndex(o);return this.flushRowFrom(n),this.onNextUpdated((function(){this.trigger(C.onRowRemoved,i)})),this.render("rows"),!0},getRemovedMinIndex:function(t){let e=0;const i=t[t.length-1];if(this.isInvisible(i))return e;e=i.tg_view_index,e>0&&(e-=1);let o=i.tg_parent;for(;o;)o.collapsed&&(e=o.tg_view_index),o=o.tg_parent;return e},removeRowsHandler:function(t){const e=[].concat(t);e.sort((function(t,e){return e.tg_index-t.tg_index}));const i=[];return e.forEach((t=>{this.getRowParentSubs(t).splice(t.tg_sub_index,1),i.push(t)})),i}},Tt={renderCollapseAllState:function(){this.hasTreeColumn&&(this.asyncRenderCollapseAllState||(this.asyncRenderCollapseAllState=d.microtask(this.renderCollapseAllStateSync)),this.asyncRenderCollapseAllState.apply(this,arguments))},renderCollapseAllStateSync:function(){const t=this.$header.find(".tg-tree-header");this.rowsInfo.isTree?t.addClass("tg-tree-header-indent"):t.removeClass("tg-tree-header-indent"),this.renderCollapseAllIcon()},checkCollapseAllState:function(t){if(t!==this.allRowsCollapsed){if(t){let t=0;const e=this.rows.length;for(;t{if(e.tg_group&&e.tg_subs_length&&e.collapsed)return t=!0,!1})),t)return}this.allRowsCollapsed=t,this.renderCollapseAllIcon()}},expandAllRows:function(){return this.renderAllRowsCollapsed(!1)},collapseAllRows:function(){return this.renderAllRowsCollapsed(!0)},toggleAllRows:function(){return this.allRowsCollapsed?this.expandAllRows():this.collapseAllRows()},renderAllRowsCollapsed:function(t){const e=this.updateAllRowsCollapsed(t);return e.length?(this.flushBody(),this.onNextUpdated((()=>{this.renderCollapseAllIcon(),t?this.trigger(C.onRowCollapsed,e):this.trigger(C.onRowExpanded,e)})),this.render("rows"),this):this},updateAllRowsCollapsed:function(t){this.allRowsCollapsed=t;const e=[];return this.forEachRow((i=>{i.subs&&i.tg_subs_length&&this.isCollapsedChanged(i,t)&&(i.collapsed=t,e.push(i))})),e},expandRow:function(t){const e=this.getRowItem(t);return e?this.isEmptyGroup(e)?(this.trigger(C.onRowSubsRequest,e),this):this.isCollapsedChanged(e,!1)?(e.collapsed=!1,this.flushRowFrom(e.tg_view_index),this.renderCollapseIcon(e),this.onNextUpdated((()=>{this.checkCollapseAllState(!1),this.trigger(C.onRowExpanded,e)})),this.render("rows"),this):this:this},collapseRow:function(t){const e=this.getRowItem(t);return e&&e.subs&&e.tg_subs_length&&this.isCollapsedChanged(e,!0)?(e.collapsed=!0,this.flushRowFrom(e.tg_view_index),this.renderCollapseIcon(e),this.onNextUpdated((()=>{this.checkCollapseAllState(!0),this.trigger(C.onRowCollapsed,e)})),this.render("rows"),this):this},toggleRow:function(t){const e=this.getRowItem(t);return e?(e.collapsed?this.expandRow(e):this.collapseRow(e),this):this},expandRowLevel:function(t){t=d.toNum(t,!0);const e=[],i=[];return this.forEachRow((o=>{o.subs&&o.tg_subs_length&&(o.tg_level<=t?this.isCollapsedChanged(o,!1)&&(o.collapsed=!1,i.push(o)):this.isCollapsedChanged(o,!0)&&(o.collapsed=!0,e.push(o)))})),e.length||i.length?(this.flushBody(),this.onNextUpdated((()=>{e.length&&this.trigger(C.onRowCollapsed,e),i.length&&this.trigger(C.onRowExpanded,i)})),this.render("rows"),this):this},renderCollapseAllIcon:function(){if(!this.options.collapseAllVisible||!this.hasTreeColumn)return;const t=this.$header.find(".tg-tree-icon-all");this.renderTreeIcon(t,this.allRowsCollapsed)},renderCollapseIcon:function(t){if(!this.headerCreated)return;const e=this.getRowNodesByIndex(t.tg_view_index);if(!e)return;const i=e.find(".tg-tree-icon");this.renderTreeIcon(i,t.collapsed)},renderTreeIcon:function(t,e){t&&(e?t.removeClass("tg-tree-icon-expanded").addClass("tg-tree-icon-collapsed"):t.removeClass("tg-tree-icon-collapsed").addClass("tg-tree-icon-expanded"))}},Lt={rowDragStartHandler:function(t,e){this.removeSortColumn();const i=e.rowItem;if(!i)return;const o=this.getRowNodesByIndex(i.tg_view_index);o&&(e.dragCloneNodes=this.getRowDragCloneNodes(o),e.dropPlaceholder=this.getRowDropPlaceholder(o),e.dragStartTop=this.getRowTop(i),e.dragRowHeight=this.getRowHeight(i),e.dragStartScrollTop=this.scrollTop,e.dragMaxScrollTop=this.scrollPane.getMaxScrollTop(),this.trigger(C.onRowDragged,{e:t,rowItem:i}),this.isDefaultPrevented(t)||("touch"===e.type&&d.preventDefault(e.e),this.setRowState(i,"dragging"),this.rowDropListHandler(e),this.updateDragCloneRowPosition(e)))},rowDragMoveHandler:function(t,e){"touch"===e.type&&d.preventDefault(e.e),this.updateDragCloneRowPosition(e),this.updateDragPlaceholderPosition(e),this.rowDragAutoScrollHandler(e)},rowDragEndHandler:function(t,e){"touch"===e.type&&(this.protectedItem=null,d.preventDefault(e.e)),this.autoScrollStop(),this.setRowState(e.rowItem,"dragging",!1),e.dragCloneNodes&&(e.dragCloneNodes.remove(),e.dragCloneNodes=null),e.dropPlaceholder&&(e.dropPlaceholder.remove(),e.dropPlaceholder=null),e.changed&&this.rowDropHandler(e)},updateDragCloneRowPosition:function(t){const e=this.scrollTop-t.dragStartScrollTop,i=t.dragStartTop+t.offsetY+e,o=i-this.scrollTopOffset;t.dragCloneNodes&&t.dragCloneNodes.css("top",o).show(),t.dragCurrentPosition=i+.5*t.dragRowHeight},getRowDragCloneNodes:function(t){const e=w();return t.each((function(t){const i=w(t),o=i.clone();o.appendTo(i.parent()),e.add(o)})),e.addClass("tg-clone").hide(),e},getRowDropPlaceholder:function(t){const e=w();return t.each((function(t){const i=w(t),o=w("
").addClass("tg-row-placeholder").hide(),n=i.parent();n.find(".tg-row-placeholder").remove(),o.appendTo(n),e.add(o)})),e},updateDragPlaceholderPosition:function(t){this.rowDropItemHandler(t);const e=t.dropItem;if(!e)return;let i=t.dropPosition-1;t.dropBottom?e.tg_view_last&&(i=t.dropPosition-2):e.tg_view_index-this.frozenInfo.rows==0&&(i=t.dropPosition);const o=i-this.scrollTopOffset;t.dropPlaceholder&&t.dropPlaceholder.css("top",o).show()},rowDragAutoScrollHandler:function(t){const e=t.dragCurrentPosition,i=this.scrollTop,o=this.bodyHeight-this.frozenRowsHeight,n=i+o,s=this.options.rowHeight,r=Math.min(3*s,.5*o);if(!(rn-r){const i=e-(n-r),o=this.getAutoScrollOffset(i,r);this.autoScrollStart(o,t)}else this.autoScrollStop()},getAutoScrollOffset:function(t,e){return Math.floor(t/e*20)},autoScrollStop:function(){this.autoScrollMotion&&(this.autoScrollMotion.destroy(),this.autoScrollMotion=null)},autoScrollStart:function(t,e){this.autoScrollStop();const i=e.dragMaxScrollTop;this.autoScrollMotion=new D,this.autoScrollMotion.bind(D.EVENT.MOTION_MOVE,(()=>{const o=d.clamp(this.scrollTop+t,0,i);o!==this.scrollTop?(this.setScrollTop(o),this.updateDragCloneRowPosition(e),this.updateDragPlaceholderPosition(e)):this.autoScrollStop()})),this.autoScrollMotion.once(D.EVENT.MOTION_END,(()=>{this.autoScrollStart(t,e)})),this.autoScrollMotion.start({duration:200})},rowDropListHandler:function(t){const e=this.getRowDropList(t);if(!d.isList(e))return;const i=t.rowItem,o=e.filter((t=>{if(t===i)return!1;if(t.tg_frozen)return!1;let e=t.tg_parent;for(;e;){if(e===i)return!1;e=e.tg_parent}return!0}));if(!d.isList(o))return;const n=[];o.forEach((t=>{const e=this.getRowTop(t),i=this.getRowHeight(t);n.push({rowItem:t,position:e}),n.push({rowItem:t,position:e+i-1,dropBottom:!0})})),t.dropList=n},getRowDropList:function(t){const e=this.options.rowDragCrossLevel;return e?"function"==typeof e?e.call(this,t):this.viewRows:this.getRowParentSubs(t.rowItem)},rowDropItemHandler:function(t){const e=t.dropList;if(!e)return;const i=t.dragCurrentPosition;let o=Number.MAX_VALUE;for(let n=0,s=e.length;no)break;o=r,t.dropItem=s.rowItem,t.dropBottom=s.dropBottom,t.dropPosition=s.position}},rowDragDropPositionHandler:function(t,e,i){const o=this.getRowParentSubs(t),n=t.tg_sub_index;let s,r;return this.isDropIntoGroupFirstChild(e,i)?(s=e.subs,r=0):(s=this.getRowParentSubs(e),r=e.tg_sub_index,o===s&&n{this.trigger(C.onRowDropped,n)})),this.render({type:"rows",scrollRow:i})}},It={getMoveFocusRow:function(t,e){let i=t[0];return e>0&&(i=t[t.length-1]),i},getMoveLengthInList:function(t,e){let i=0;return t.forEach((t=>{this.getRowParentSubs(t)===e&&(i+=1)})),i},getMoveInfo:function(t,e,i){const o=this.getRowParentSubs(i);let n=i.tg_sub_index+e;const s=i.tg_parent;if(s&&this.options.rowMoveCrossLevel){const e=0,i=s.tg_subs_length-1;if(ni){const e=n-i;return this.getMoveInfo(t,e,s)}}if(e>0){n-=this.getMoveLengthInList(t,o)-1}return n=d.clamp(n,0,o.length),{list:o,index:n}},moveRowsHandler:function(t,e){(t=this.removeRowsHandler(t)).reverse();const i=this.getMoveFocusRow(t,e),o=this.getMoveInfo(t,e,i),n=[o.index,0].concat(t);return o.list.splice.apply(o.list,n),this.initRowsHandler(),this.onNextUpdated((function(){this.scrollRowIntoView(i),this.trigger(C.onRowMoved,t)})),this.removeSortColumn(),this.update(),!0},moveRows:function(t,e){t=d.toList(t);const i=[];return t.forEach((t=>{const e=this.getRowItem(t);e&&i.push(e)})),!!i.length&&(!(i.length>=this.getRowsLength())&&(0!==(e=d.toNum(e,!0))&&this.moveRowsHandler(i,e)))},moveRowsUp:function(t){return this.moveRows(t,-1)},moveRowsDown:function(t){return this.moveRows(t,1)},moveRowsToTop:function(t){return this.moveRows(t,-this.getRowsLength(!0))},moveRowsToBottom:function(t){return this.moveRows(t,this.getRowsLength(!0))},moveSelectedRowsUp:function(){return this.moveRows(this.getSelectedRows(),-1)},moveSelectedRowsDown:function(){return this.moveRows(this.getSelectedRows(),1)},moveSelectedRowsToTop:function(){return this.moveRows(this.getSelectedRows(),-this.getRowsLength(!0))},moveSelectedRowsToBottom:function(){return this.moveRows(this.getSelectedRows(),this.getRowsLength(!0))}},Et={getSelectedRow:function(){let t=null;return this.forEachSelectableRow((function(e){if(e.selected)return t=e,!1})),t},getSelectedRows:function(){const t=[];return this.forEachSelectableRow((function(e){e.selected&&t.push(e)})),t.length>1&&t.sort((function(t,e){const i=t.tg_selected_index,o=e.tg_selected_index;return i>o?1:i0&&void 0!==arguments[0])||arguments[0];if(t=Boolean(t),this.globalSelectedIndex=0,t&&!this.options.selectMultiple)return this;const e=this.getAllSelectedChangedList(t);return e.length?(this.updateRowsSelectedState(e),this):this},setRowSelected:function(){return(this.options.selectMultiple?this.setRowMultipleSelected:this.setRowSingleSelected).apply(this,arguments)},setRowSingleSelected:function(t){const e=this.getRowItem(t);if(!e)return this;if(!this.isRowSelectable(e))return this;if(e.selected)return this;const i=[],o=this.getSelectedRow();return o&&o.selected&&i.push(o),e.selected||i.push(e),i.length?(this.updateRowsSelectedState(i),this):this},setRowMultipleSelected:function(t,e){if(0===arguments.length)return this;if(1===arguments.length&&!1===arguments[0])return this.selectAll(!1);const i=this.toRowItemList(t,(t=>this.isRowSelectable(t)));return i.length?!1===e?(this.setRowListUnselected(i),this):d.hasShiftKey(e)&&1===i.length?(this.setRowBetweenListSelected(i[0]),this):(this.updateRowsSelectedState(i),this):this},setRowListUnselected:function(t){const e=this.getSelectedChangedList(t,!1);e.length&&this.updateRowsSelectedState(e)},setRowBetweenListSelected:function(t){const e=this.previousSelectedRow;if(e&&e!==t){const i=this.getBetweenSelectedChangedList(e,t);if(!i.length)return;this.updateRowsSelectedState(i,!0)}else this.updateRowsSelectedState([t])},getAllSelectedChangedList:function(t){const e=[];return this.forEachSelectableRow((i=>{this.isSelectedChanged(i,t)&&e.push(i)})),e},getSelectedChangedList:function(t,e){const i=[];return t.forEach((t=>{this.isSelectedChanged(t,e)&&i.push(t)})),i},getBetweenSelectedChangedList:function(t,e){const i=t.tg_index,o=e.tg_index,n=[];if(i=o;)n.push(t),t--}return this.toRowItemList(n,(t=>this.isRowSelectable(t)&&!t.selected))},updateRowsSelectedState:function(t,e){let i;t.forEach((t=>{const e=!t.selected;t.selected=e,e&&(t.tg_selected_index=this.globalSelectedIndex++,i=t),this.renderRowSelectedState(t)})),e||(this.previousSelectedRow=i),this.renderSelectAllState(),this.onNextUpdated((()=>{this.trigger(C.onSelectChanged,t)})),this.render()},renderRowSelectedState:function(t){const e=t.tg_view_index;this.viewport.rows.includes(e)&&(this.renderRowState(t,"selected"),this.flushCell(e,this.selectColumn.tg_view_index))},renderSelectAllState:function(){this.isSelectAllVisible()&&(this.asyncRenderSelectAllState||(this.asyncRenderSelectAllState=d.microtask(this.renderSelectAllStateSync)),this.asyncRenderSelectAllState.apply(this,arguments))},renderSelectAllStateSync:function(){const t=this.getSelectAllState();if(t===this.previousSelectAllState)return;this.previousSelectAllState=t;const e=this.selectColumn,i=w(this.getColumnHeaderNode(e)).find(".tg-select-icon-all");i.length&&(i.removeClass("tg-selected tg-mixed"),t&&i.addClass(`tg-${t}`))},getSelectAllState:function(){let t=0;this.forEachSelectableRow((e=>{t+=1}));const e=this.getSelectedRows().length;let i="mixed";return 0===e?(i="",this.previousSelectedRow=null):e===t&&(i="selected"),i},isSelectAllVisible:function(){const t=this.options;return!!(t.selectVisible&&t.selectAllVisible&&t.selectMultiple)}},xt={setRowHover:function(t,e){const i=this.getRowItem(t);return i?(this.renderRowHover(i,e),this):this},renderRowHover:function(t,e){if(this.previousHover&&(this.previousHover.removeClass("tg-hover"),this.previousHover=null),!e)return this;if(t.tg_frozen&&!this.options.frozenRowHoverable)return this;const i=t.tg_view_index;return this.previousHover=this.$body.find(`.tg-row[row='${i}']`).addClass("tg-hover"),this},setRowState:function(t,e){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const o=this.getRowItem(t);return o?(o.tg_state_names||(o.tg_state_names=new Set),o.tg_state_names.add(e),o[e]=i,this.renderRowState(o,e),this):this},renderRowState:function(t,e){const i=this.getRowNodesByIndex(t.tg_view_index);if(i){const o=`tg-${e}`;t[e]?i.addClass(o):i.removeClass(o)}}},zt={getRowItem:function(t){return d.isNum(t)?(t<0&&(t=this.rowsInfo.length+t),this.rowsInfo.indexCache[t]):t?d.isNum(t.tg_index)?t:this.getRowItemById(t.id||t):void 0},getRowItemById:function(t){return this.getRowItemBy("id",t)},getRowItemBy:function(t,e){if(void 0!==e)return this.rowsInfo.indexCache.find((i=>i[t]===e))},getRowsLength:function(t){return t?this.rowsInfo.length:this.viewRows.length},getViewRowItem:function(t){return this.viewRows[t]},getPreRenderRowInfo:function(t){const e={rows:[],rowNotFound:!1,benchmark:0};if(!t.length)return 0===this.getRowsLength()&&(e.rowNotFound=!0),e;const i=[],o=this.frozenInfo.row;return t.forEach((t=>{this.getRowCache(t)?t>o&&i.push(t):e.rows.push(t)})),i.length&&(e.benchmark=Math.min.apply(Math,i)),e.rows.sort((function(t,i){return t{this.renderRowNodes(t,e.benchmark)}))},createRowNode:function(t,e,i,o,n,s){const r=document.createElement("div");return r.setAttribute("row",t),r.className=i,o&&(r.style.cssText=o),r.style.top=`${n}px`,s!==this.options.rowHeight&&(r.style.height=`${s}px`,r.style.lineHeight=`${s}px`),this.setNodeDataCache(r,{row:t,rowItem:e,rowNode:r}),r},appendRowNode:function(t,e,i,o){ithis.frozenInfo.row))return e;e-=this.frozenRowsHeight}return e-=this.scrollTopOffset,e},getRowTop:function(t){let e=t.tg_top;return t.tg_frozen||(e-=this.frozenRowsHeight),e},getRowVPos:function(t){const e=this.frozenInfo.bottom,i=this.frozenInfo.row;let o="top";return this.frozenInfo.rows&&(t<=i?e&&(o="bottom"):e||(o="bottom")),o},getRowCanvas:function(t,e){return"top"===t?"left"===e?this.$bodyTL:this.$bodyTR:"left"===e?this.$bodyBL:this.$bodyBR}},Mt={CHANGE:"change"},Pt={h:{type:"h",className:"tg-scrollbar-h",offset:"left",size:"width",page:"pageX",axis:"x",offsetName:"offsetX"},v:{type:"v",className:"tg-scrollbar-v",offset:"top",size:"height",page:"pageY",axis:"y",offsetName:"offsetY"}};class _t extends k{static EVENT=Mt;static H="h";static V="v";type="h";settings={};size=0;viewSize=0;bodySize=0;trackSize=0;position=0;scale=0;thumbPosition=0;thumbScale=0;constructor(t,e){super(),this.settings=Pt[t]||Pt.h,this.type=this.settings.type,this.id=d.uid(4,`tg-scrollbar-${this.type}-`),this.$holder=w(e),this.$holder.find(`.${this.settings.className}`).remove(),this.options=this.generateOptions()}generateOptions(t){return d.merge({size:15,round:!1,blank:!1,motionDuration:200},t)}updateOptions(t){this.options=this.generateOptions(t);let e=this.options.size;d.isNum(e)||(e=d.toNum(e)),e=Math.round(e),e=Math.max(e,0),e=Math.min(e,30),this.size=e}create(){this.$container=w('
').appendTo(this.$holder),this.$container.attr("id",this.id),this.$container.addClass(d.classMap(["tg-scrollbar",this.settings.className,{"tg-scrollbar-round":this.options.round}])),this.$track=this.$container.find(".tg-scrollbar-track"),this.$thumb=this.$container.find(".tg-scrollbar-thumb"),this.thumbDrag=new O,this.thumbDrag.bind(O.EVENT.DRAG_START,((t,e)=>{this.thumbDragStart(e)})).bind(O.EVENT.DRAG_MOVE,((t,e)=>{this.thumbDragMove(e)})).bind(O.EVENT.DRAG_END,((t,e)=>{this.thumbDragEnd(e)}));const t=this.$container.get(0);return this.scrollEvents={mousedown:{handler:e=>{e.target.classList.contains("tg-scrollbar-thumb")?this.thumbMouseDownHandler(e):(this.trackEvents={mouseup:{handler:t=>{this.trackMouseupHandler(t)},options:{once:!0}}},d.bindEvents(this.trackEvents,t),this.trackMousedownHandler(e))},options:!0},selectstart:{handler:t=>{d.preventDefault(t)},options:!0}},d.bindEvents(this.scrollEvents,t),this}getBlank(){return this.options.blank}getSize(){return this.size}getViewSize(){return this.viewSize}getBodySize(){return this.bodySize}getTrackMouseDirection(){let t=1;return this.trackMousePosition0){const i=this.getMaxThumbPosition();t=Math.round(i*this.position/e),t=d.clamp(t,0,i)}return this.setThumbPosition(t),this}trackMousedownHandler(t){return this.motionStop(),this.trackMousePosition=this.getTrackMousePos(t),this.motionStart(),this}trackMouseupHandler(t){return d.unbindEvents(this.trackEvents),this.motionStop(),this.motionStarted||(this.trackMousePosition=this.getTrackMousePos(t),this.trackScrollHandler(),this.triggerEvent()),this}trackScrollHandler(){const t=Math.max(0,this.viewSize-20)*this.getTrackMouseDirection();return this.setOffset(t),this}motionStop(){return this.motion&&(this.motion.destroy(),this.motion=null),this}motionStart(){const t=this.position,e=Math.round(this.trackMousePosition/this.viewSize*this.getMaxPosition());return this.motionStarted=!1,this.motion=new D,this.motion.bind(D.EVENT.MOTION_START,((t,e)=>{this.motionStarted=!0})),this.motion.bind(D.EVENT.MOTION_MOVE,((t,e)=>{this.motionUpdateHandler(t,e)})),this.motion.start({duration:this.options.motionDuration,from:t,till:e}),this}motionUpdateHandler(t,e){e!==this.position&&(this.setPosition(e),this.triggerEvent())}thumbMouseDownHandler(t){this.$thumb.addClass("tg-scrollbar-thumb-hold"),this.thumbDrag.start(t,{target:this.$thumb})}thumbDragStart(t){this.motionStop(),t.thumbPositionStart=this.thumbPosition}thumbDragMove(t){let e=t.thumbPositionStart+t[this.settings.offsetName];const i=this.getMaxThumbPosition();e=d.clamp(e,0,i),this.setThumbPosition(e);let o=0;i>0&&(o=d.per(e/i)*this.getMaxPosition(),o=Math.round(o)),this.position=o,this.triggerEvent()}thumbDragEnd(t){this.$thumb&&this.$thumb.removeClass("tg-scrollbar-thumb-hold")}triggerEvent(){this.trigger(Mt.CHANGE,this.position)}getPosition(){return this.position}setPosition(t){t=d.toNum(t,!0);const e=this.getMaxPosition();t=d.clamp(t,0,e),this.position=t,this.updateThumbPosition()}getMaxPosition(){return this.bodySize-this.viewSize}updatePosition(){const t=this.getMaxPosition(),e=d.clamp(this.position,0,t);this.position=e}setOffset(t){t=d.toNum(t);const e=this.position+t;return this.setPosition(e),this}getScale(){return this.scale}setScale(t){return t=d.per(t),this.scale=t,this.scaleChangeHandler(),this}scaleChangeHandler(){let t=Math.round(this.viewSize*this.scale);if(t=Math.max(t,Math.round(1.5*this.options.size)),t=Math.min(t,this.viewSize-1),this.thumbSize=t,this.$thumb){const t={};"h"===this.type?(t.height=this.size,t.width=this.thumbSize):(t.width=this.size,t.height=this.thumbSize),this.$thumb.css(t)}}updateTrackSize(){const t={};return"h"===this.type?(t.width=this.trackSize,t.height=this.size):(t.height=this.trackSize,t.width=this.size),this.$container.css(t),this}updateThumbSize(){let t=0;return this.bodySize&&(t=this.trackSize/this.bodySize),this.setScale(t),this}parseSize(t){return t=d.toNum(t),t=Math.round(t),t=Math.max(t,0)}updateSize(t,e,i){t=this.parseSize(t),this.viewSize=t,e=this.parseSize(e),this.bodySize=e,i=d.isNum(i)?this.parseSize(i):t,this.trackSize=i,this.previousFadeIn=null}fade(t){return!(!this.$container||!this.size)&&(this.previousFadeIn!==t&&(this.previousFadeIn=t,t?this.$container.hasClass("tg-fade-out")&&this.$container.removeClass("tg-fade-out").addClass("tg-fade-in"):this.$container.removeClass("tg-fade-in").addClass("tg-fade-out"),!0))}show(){if(this.updatePosition(),!this.getBlank())return!this.$container&&this.size>0&&this.create(),this.$container?(this.updateTrackSize(),this.updateThumbSize(),this):this;this.remove()}hide(){return this.updatePosition(),this.remove(),this}remove(){if(this.motionStop(),d.unbindEvents(this.scrollEvents),d.unbindEvents(this.trackEvents),this.thumbDrag&&(this.thumbDrag.destroy(),this.thumbDrag=null),!this.$container)return this;this.$thumb=null,this.$track=null,this.$container.remove(),this.$container=null}destroy(){return this.remove(),this}}const Nt={CHANGE:"change"};class kt extends k{static EVENT=Nt;visible=!0;constructor(t,e){super(),this.id=d.uid(4,`tg-scroll-pane-${e}-`),this.gradientInfo=[],this.$container=w(t).attr("id",this.id),this.$container.addClass("tg-scroll-pane"),this.$scrollView=this.$container.find(".tg-scroll-view"),this.$scrollBody=this.$scrollView.find(".tg-scroll-body"),this.scrollbarH=new _t(_t.H,this.$container),this.scrollbarH.bind(_t.EVENT.CHANGE,((t,e)=>{this.scrollHChangeHandler()})),this.scrollbarV=new _t(_t.V,this.$container),this.scrollbarV.bind(_t.EVENT.CHANGE,((t,e)=>{this.scrollVChangeHandler()})),this.options=this.generateOptions()}generateOptions(t){return d.merge({scrollbarH:{},scrollbarV:{},scrollbarFade:!1,scrollSizeOnKeyPress:20,gradient:30},t)}show(){return this.$container.show(),this.visible=!0,this}hide(){return this.$container.hide(),this.visible=!1,this}width(){return this.scrollPaneW}height(){return this.scrollPaneH}render(t){return this.visible?(this.options=this.generateOptions(t),this.update(),this):this}update(){this.scrollPaneW=this.options.scrollPaneW,this.scrollPaneH=this.options.scrollPaneH,this.scrollBodyW=this.options.scrollBodyW,this.scrollBodyH=this.options.scrollBodyH,this.updateScrollbar()}setGroupH(t){this.groupH=d.toList(t)}setGroupV(t){this.groupV=d.toList(t)}updateGroupH(){if(!d.isList(this.groupH))return this;const t=this.scrollbarH.getPosition();return this.groupH.forEach((function(e){e&&e.updateScrollHFromGroup(t)})),this}updateGroupV(){if(!d.isList(this.groupV))return this;const t=this.scrollbarV.getPosition();return this.groupV.forEach((function(e){e&&e.updateScrollVFromGroup(t)})),this}updateGroupList(){this.updateGroupH(),this.updateGroupV()}updateScrollHFromGroup(t){this.scrollbarH.getPosition()!==t&&(this.scrollbarH.setPosition(t),this.updateScrollLeft(),this.triggerEvent())}updateScrollVFromGroup(t){this.scrollbarV.getPosition()!==t&&(this.scrollbarV.setPosition(t),this.updateScrollTop(),this.triggerEvent())}setPosition(t,e){return this.scrollbarH.setPosition(t),this.scrollbarV.setPosition(e),this.updateScrollLeft(),this.updateScrollTop(),this.updateGroupList(),this}updateScrollbar(){this.scrollbarH.updateOptions(this.options.scrollbarH),this.scrollbarV.updateOptions(this.options.scrollbarV),this.updateScrollState(),this.updateScrollView(),this.updateScrollTrack(),this.scrollbarH.updateSize(this.scrollViewW,this.scrollBodyW,this.scrollTrackW),this.scrollbarV.updateSize(this.scrollViewH,this.scrollBodyH,this.scrollTrackH),this.hasScrollH?(this.scrollbarH.show(),this.scrollbarH.setPosition(this.scrollbarH.getPosition())):this.scrollbarH.hide(),this.hasScrollV?(this.scrollbarV.show(),this.scrollbarV.setPosition(this.scrollbarV.getPosition())):this.scrollbarV.hide(),this.updateScrollLeft(),this.updateScrollTop(),this.updateGroupList()}updateScrollState(){const t=this.scrollbarH.getSize(),e=this.scrollbarV.getSize(),i=this.scrollbarH.getBlank(),o=this.scrollbarV.getBlank(),n=this.options.scrollbarFade;let s=!1,r=0;(function(){(this.scrollPaneWe&&t.push("left"),ie&&t.push("top"),o{const i=`tg-gradient-${e}`;t.includes(e)?this.$container.addClass(i):this.$container.removeClass(i)})))}getScrollLeft(){return this.scrollbarH.getPosition()}getScrollTop(){return this.scrollbarV.getPosition()}getMaxScrollLeft(){return this.scrollbarH.getMaxPosition()}getMaxScrollTop(){return this.scrollbarV.getMaxPosition()}getScrollTopOffset(){const t=this.getScrollTop();return t-t%1e4}triggerEvent(){this.trigger(Nt.CHANGE,{scrollLeft:this.getScrollLeft(),scrollTop:this.getScrollTop()})}scrollHChangeHandler(){this.updateScrollLeft(),this.updateGroupList(),this.triggerEvent()}scrollVChangeHandler(){this.updateScrollTop(),this.updateGroupList(),this.triggerEvent()}setOffsetH(t){const e=this.getScrollLeft();this.scrollbarH.setOffset(t);return this.getScrollLeft()!==e&&(this.updateScrollLeft(),this.updateGroupList(),this.triggerEvent(),!0)}setOffsetV(t){const e=this.getScrollTop();this.scrollbarV.setOffset(t);return this.getScrollTop()!==e&&(this.updateScrollTop(),this.updateGroupList(),this.triggerEvent(),!0)}mouseWheelHandler(t){const e=t.deltaX,i=t.deltaY,o=Math.abs(e);if(o>Math.abs(i)){if(this.hasScrollH)return this.setOffsetH(e)}else{if(this.hasScrollV)return this.setOffsetV(i);if(this.hasScrollH&&!o)return this.setOffsetH(i)}return!1}keyPageUpHandler(t){return this.setOffsetV(-this.scrollViewH)}keyPageDownHandler(t){return this.setOffsetV(this.scrollViewH)}keyEndHandler(t){return this.setOffsetV(this.scrollBodyH)}keyHomeHandler(t){return this.setOffsetV(-this.scrollBodyH)}keyLeftHandler(t){return this.setOffsetH(-this.options.scrollSizeOnKeyPress)}keyUpHandler(t){return this.setOffsetV(-this.options.scrollSizeOnKeyPress)}keyRightHandler(t){return this.setOffsetH(this.options.scrollSizeOnKeyPress)}keyDownHandler(t){return this.setOffsetV(this.options.scrollSizeOnKeyPress)}destroy(){return this.visible=!1,this.groupH=null,this.groupV=null,this.scrollbarV&&(this.scrollbarV.destroy(),this.scrollbarV=null),this.scrollbarH&&(this.scrollbarH.destroy(),this.scrollbarH=null),this.$container=null,this.$scrollView=null,this.$scrollBody=null,this}}const Vt={initScrollPane:function(){this.initFrozenStyle(),this.createScrollPane()},initFrozenStyle:function(){const t={HL:{container:this.$paneHL,cls:[]},HR:{container:this.$paneHR,cls:[]},TL:{container:this.$paneTL,cls:[]},TR:{container:this.$paneTR,cls:[]},BL:{container:this.$paneBL,cls:[]},BR:{container:this.$paneBR,cls:[]}},e="tg-frozen-h";this.frozenInfo.rows&&(this.frozenInfo.bottom?(t.BL.cls.push(e),t.BR.cls.push(e)):(t.TL.cls.push(e),t.TR.cls.push(e)));const i="tg-frozen-v",o="tg-frozen-line-v";this.frozenInfo.columns&&(this.frozenInfo.right?(t.HR.cls.push(i),t.TR.cls.push(i),t.BR.cls.push(i)):(t.HL.cls.push(i),t.TL.cls.push(i),t.BL.cls.push(i)),t.HL.cls.push(o),t.TL.cls.push(o),t.BL.cls.push(o));const n="tg-frozen",s=[n,e,i,o].join(" ");Object.keys(t).forEach((function(e){const i=t[e],o=i.container;o.removeClass(s);const r=i.cls;if(!r.length)return;const l=[n].concat(r).join(" ");o.addClass(l)}))},createScrollPane:function(){this.removeScrollPane(),this.scrollPaneMap={HL:new kt(this.$paneHL,"header-left"),HR:new kt(this.$paneHR,"header-right"),TL:new kt(this.$paneTL,"top-left"),TR:new kt(this.$paneTR,"top-right"),BL:new kt(this.$paneBL,"bottom-left"),BR:new kt(this.$paneBR,"bottom-right")},this.scrollPaneMap.BR.setGroupH([this.scrollPaneMap.HR,this.scrollPaneMap.TR]),this.scrollPaneMap.TR.setGroupH([this.scrollPaneMap.HR,this.scrollPaneMap.BR]),this.scrollPaneMap.BL.setGroupH([this.scrollPaneMap.HL,this.scrollPaneMap.TL]),this.scrollPaneMap.TL.setGroupH([this.scrollPaneMap.HL,this.scrollPaneMap.BL]),this.scrollPaneMap.BR.setGroupV(this.scrollPaneMap.BL),this.scrollPaneMap.BL.setGroupV(this.scrollPaneMap.BR),this.scrollPaneMap.TR.setGroupV(this.scrollPaneMap.TL),this.scrollPaneMap.TL.setGroupV(this.scrollPaneMap.TR),this.initActiveScrollPane(),this.initPaneVisibility()},initActiveScrollPane:function(){const t=this.getScrollPaneVP(),e=this.getScrollPaneHP(),i=`${t}${e}`;this.scrollPane=this.scrollPaneMap[i],this.scrollPane.bind(kt.EVENT.CHANGE,((t,e)=>{this.scrollPaneChangeHandler(t,e)}));let o={L:"L",R:"L"};this.frozenInfo.columns&&this.frozenInfo.right&&(o={L:"R",R:"L"});const n=`${t}${o[e]}`;this.scrollPaneFrozen=this.scrollPaneMap[n]},getScrollPaneVP:function(){return this.frozenInfo.rows&&!this.frozenInfo.bottom?"B":"T"},getScrollPaneHP:function(){return this.frozenInfo.columns&&!this.frozenInfo.right?"R":"L"},initPaneVisibility:function(){this.scrollPaneMap.HL.show(),this.scrollPaneMap.TL.show(),this.frozenInfo.columns?(this.scrollPaneMap.HR.show(),this.scrollPaneMap.TR.show(),this.frozenInfo.rows?(this.scrollPaneMap.BL.show(),this.scrollPaneMap.BR.show()):(this.scrollPaneMap.BL.hide(),this.scrollPaneMap.BR.hide())):(this.scrollPaneMap.HR.hide(),this.scrollPaneMap.TR.hide(),this.scrollPaneMap.BR.hide(),this.frozenInfo.rows?this.scrollPaneMap.BL.show():this.scrollPaneMap.BL.hide())},scrollPaneChangeHandler:function(t,e){this.hideColumnLine(),this.scrollLeft=e.scrollLeft,this.scrollTop=e.scrollTop,this.scrollRenderHandler()},scrollbarFadeInOutHandler:function(t,e){this.options.scrollbarFade&&(e?this.updateScrollPaneFade(!0):this.options.scrollbarFadeTimeout||this.updateScrollPaneFade(!1))},updateScrollPaneFade:function(t){if(!this.options.scrollbarFade)return;this.updateScrollPaneFadeSync(t);const e=this.options.scrollbarFadeTimeout;e&&(clearTimeout(this.timeout_fade),this.timeout_fade=setTimeout((()=>{this.updateScrollPaneFadeSync(!1)}),e))},updateScrollPaneFadeSync:function(t){if(this.previousScrollbarFadeIn===t)return;this.previousScrollbarFadeIn=t;const e=[];Object.keys(this.scrollPaneMap).forEach((t=>{const i=this.scrollPaneMap[t];i.hasScrollbar()&&e.push(i)})),e.length&&e.forEach((function(e){e.fade(t)}))},updateScrollPane:function(){const t=this.getScrollbarOptions();this.scrollPaneMap.HL.render(this.getScrollPaneOptions({scrollPaneW:this.paneWidthL,scrollPaneH:this.headerHeight,scrollBodyW:this.bodyWidthL,scrollBodyH:this.headerHeight,scrollbarV:t.HLV,scrollbarH:t.HLH})),this.scrollPaneMap.HR.render(this.getScrollPaneOptions({scrollPaneW:this.paneWidthR,scrollPaneH:this.headerHeight,scrollBodyW:this.bodyWidthR,scrollBodyH:this.headerHeight,scrollbarV:t.HRV,scrollbarH:t.HRH})),this.scrollPaneMap.TL.render(this.getScrollPaneOptions({scrollPaneW:this.paneWidthL,scrollPaneH:this.paneHeightT,scrollBodyW:this.bodyWidthL,scrollBodyH:this.bodyHeightT,scrollbarV:t.TLV,scrollbarH:t.TLH})),this.scrollPaneMap.TR.render(this.getScrollPaneOptions({scrollPaneW:this.paneWidthR,scrollPaneH:this.paneHeightT,scrollBodyW:this.bodyWidthR,scrollBodyH:this.bodyHeightT,scrollbarV:t.TRV,scrollbarH:t.TRH})),this.scrollPaneMap.BL.render(this.getScrollPaneOptions({scrollPaneW:this.paneWidthL,scrollPaneH:this.paneHeightB,scrollBodyW:this.bodyWidthL,scrollBodyH:this.bodyHeightB,scrollbarV:t.BLV,scrollbarH:t.BLH})),this.scrollPaneMap.BR.render(this.getScrollPaneOptions({scrollPaneW:this.paneWidthR,scrollPaneH:this.paneHeightB,scrollBodyW:this.bodyWidthR,scrollBodyH:this.bodyHeightB,scrollbarV:t.BRV,scrollbarH:t.BRH})),this.scrollLeft=this.getScrollLeft(),this.scrollTop=this.getScrollTop(),this.updateScrollPaneFade(Boolean(this.options.scrollbarFadeTimeout))},getScrollPaneOptions:function(t){const e=this.options;return t.scrollbarFade=e.scrollbarFade,t.gradient=d.clamp(d.toNum(e.scrollPaneGradient,!0),0,100),t},getScrollbarOptions:function(){const t=this.options.scrollbarRound,e={};return["HLH","HLV","HRH","HRV","TLH","TLV","TRH","TRV","BLH","BLV","BRH","BRV"].forEach((function(i){e[i]={size:0,round:t,blank:!1}})),this.scrollbarOptionsHandler(e),this.scrollbarFadeHandler(e),e},scrollbarOptionsHandler:function(t){const e=this.scrollbarSizeH,i=this.scrollbarSizeV;this.scrollbarHeaderHandler(t,e,i),this.frozenInfo.columns?this.frozenInfo.rows?this.scrollbarC1R1Handler(t,e,i):this.scrollbarC1R0Handler(t,e,i):this.frozenInfo.rows?this.scrollbarC0R1Handler(t,e,i):this.scrollbarC0R0Handler(t,e,i)},scrollbarFadeHandler:function(t){if(this.options.scrollbarFade)for(const e in t)if(d.hasOwn(t,e)){const i=t[e];i.size>0&&i.blank&&(i.blank=!1,i.size=0)}},scrollbarHeaderHandler:function(t,e,i){this.hasVScroll&&(this.frozenInfo.columns?(t.HRV.size=i,t.HRV.blank=1):(t.HLV.size=i,t.HLV.blank=1))},scrollbarC0R0Handler:function(t,e,i){t.TLH.size=e,t.TLV.size=i},scrollbarC0R1Handler:function(t,e,i){this.frozenInfo.bottom?this.scrollbarC0R1B1Handler(t,e,i):this.scrollbarC0R1B0Handler(t,e,i)},scrollbarC0R1B1Handler:function(t,e,i){t.BLH.size=e,t.TLV.size=i,this.hasVScroll&&(t.BLV.size=i,t.BLV.blank=1)},scrollbarC0R1B0Handler:function(t,e,i){t.BLH.size=e,t.BLV.size=i,this.hasVScroll&&(t.TLV.size=i,t.TLV.blank=1)},scrollbarC1R0Handler:function(t,e,i){this.frozenInfo.right?this.scrollbarC1R0R1Handler(t,e,i):this.scrollbarC1R0R0Handler(t,e,i)},scrollbarC1R0R1Handler:function(t,e,i){this.hasHScroll&&(t.TLH.size=e,this.scrollPaneHidden?(t.TRH.size=e,t.TLH.blank=!0):(t.TRH.size=e,t.TRH.blank=!0)),t.TRV.size=i},scrollbarC1R0R0Handler:function(t,e,i){this.hasHScroll&&(t.TRH.size=e,this.scrollPaneHidden?(t.TLH.size=e,t.TRH.blank=!0):(t.TLH.size=e,t.TLH.blank=!0)),t.TRV.size=i},scrollbarC1R1Handler:function(t,e,i){this.frozenInfo.right?this.frozenInfo.bottom?this.scrollbarC1R1R1B1Handler(t,e,i):this.scrollbarC1R1R1B0Handler(t,e,i):this.frozenInfo.bottom?this.scrollbarC1R1R0B1Handler(t,e,i):this.scrollbarC1R1R0B0Handler(t,e,i)},scrollbarC1R1R1B1Handler:function(t,e,i){this.hasHScroll&&(t.BLH.size=e,this.scrollPaneHidden&&(t.BRH.size=e,t.BLH.blank=!0)),t.TRV.size=i,this.hasVScroll&&(t.BRV.size=i,t.BRV.blank=1)},scrollbarC1R1R1B0Handler:function(t,e,i){this.hasHScroll&&(t.BLH.size=e,this.scrollPaneHidden?(t.BRH.size=e,t.BLH.blank=!0):(t.BRH.size=e,t.BRH.blank=!0)),t.BRV.size=i,this.hasVScroll&&(t.TRV.size=i,t.TRV.blank=1)},scrollbarC1R1R0B1Handler:function(t,e,i){this.hasHScroll&&(t.BRH.size=e,this.scrollPaneHidden&&(t.BLH.size=e,t.BRH.blank=!0)),t.TRV.size=i,this.hasVScroll&&(t.BRV.size=i,t.BRV.blank=1)},scrollbarC1R1R0B0Handler:function(t,e,i){this.hasHScroll&&(t.BRH.size=e,this.scrollPaneHidden?(t.BLH.size=e,t.BRH.blank=!0):(t.BLH.size=e,t.BLH.blank=!0)),t.BRV.size=i,this.hasVScroll&&(t.TRV.size=i,t.TRV.blank=1)},removeScrollPane:function(){clearTimeout(this.timeout_fade),this.previousScrollbarFadeIn=null,this.scrollPaneMap&&(Object.keys(this.scrollPaneMap).forEach((t=>{const e=this.scrollPaneMap[t];e&&e.destroy()})),this.scrollPaneMap=null,this.scrollPane=null,this.scrollPaneFrozen=null)}},Ot={updateScrollState:function(){this.updateGlobalScrollInfo(),this.updateHScrollState(),this.updateVScrollState(),this.updateBlankColumnWidth(),this.scrollStateChanged=!1,this.previousHasHScroll===this.hasHScroll&&this.previousHasVScroll===this.hasVScroll||(this.scrollStateChanged=!0,this.previousHasHScroll=this.hasHScroll,this.previousHasVScroll=this.hasVScroll,this.trigger(C.onScrollStateChanged,{hasHScroll:this.hasHScroll,hasVScroll:this.hasVScroll}))},updateGlobalScrollInfo:function(){this.totalRowsLength=this.getRowsLength(),this.totalRowsHeight=this.getRowsHeight(),this.frozenRowsHeight=this.getFrozenRowsHeight(),this.scrollRowsHeight=this.totalRowsHeight-this.frozenRowsHeight,this.totalRowsHeight=Math.max(this.totalRowsHeight,1),this.scrollRowsHeight=Math.max(this.scrollRowsHeight,1),this.flushRowFrom(this.totalRowsLength)},updateHScrollState:function(){if(this.hasHScroll=!0,this.updateScrollPaneHiddenState(),this.updateHScrollByScrollPaneHidden(),this.scrollPaneHidden)return;this.containerWidth-this.columnsWidth>=0&&(this.hasHScroll=!1)},getScrollPaneCurrentWidth:function(){return this.frozenInfo.right?this.bodyWidth-this.columnsWidthR:this.bodyWidth-this.columnsWidthL},updateHScrollByScrollPaneHidden:function(){if(this.scrollPaneHidden){this.hasHScroll=!1;this.getScrollPaneCurrentWidth()=this.totalRowsHeight&&(this.hasVScroll=!1)}},updateBlankColumnWidth:function(){let t=this.containerWidth-this.columnsWidth;!this.hasVScroll||this.hasHScroll||this.options.scrollbarFade||(t-=this.scrollbarSizeV),this.scrollPaneHidden&&(t=0),this.hasHScroll||(t>=0?(this.frozenInfo.columns?this.columnsWidthR+=t:this.columnsWidthL+=t,this.blankColumn.tg_width=t):this.hasHScroll=!0)}},$t={scrollToRow:function(t){const e=this.getRowItem(t);return this.scrollToItem(e,null),this},scrollToColumn:function(t){const e=this.getColumnItem(t);return this.scrollToItem(null,e),this},scrollToCell:function(t,e){const i=this.getRowItem(t),o=this.getColumnItem(e);return this.scrollToItem(i,o),this},scrollToFirstRow:function(){return this.setScrollTop(0),this},scrollToLastRow:function(){const t=this.getViewRows(),e=t[t.length-1],i=this.getScrollRowPosition(e);if(d.isNum(i))return this.setScrollTop(i),this},scrollToFirstColumn:function(){return this.setScrollLeft(0),this},scrollToLastColumn:function(t){const e=this.getViewColumns();let i=e[e.length-2];t&&(i=e[e.length-1]);const o=this.getScrollColumnPosition(i);if(d.isNum(o))return this.setScrollLeft(o),this},scrollRowIntoView:function(t){const e=this.getRowItem(t);return this.scrollItemIntoView(e,null),this},scrollColumnIntoView:function(t){const e=this.getColumnItem(t);return this.scrollItemIntoView(null,e),this},scrollCellIntoView:function(t,e){const i=this.getRowItem(t),o=this.getColumnItem(e);return this.scrollItemIntoView(i,o),this},setScroll:function(t,e){return t===this.scrollLeft&&e===this.scrollTop||(this.scrollLeft=t,this.scrollTop=e,this.scrollHandler()),this},setScrollLeft:function(t){return t===this.scrollLeft||(this.scrollLeft=t,this.scrollHandler()),this},setScrollTop:function(t){return t===this.scrollTop||(this.scrollTop=t,this.scrollHandler()),this},getScrollRowPosition:function(t){if(!t)return;let e=t.tg_view_index;return e-=this.frozenInfo.rows,e>=0?this.getRowTop(t):void 0},getScrollColumnPosition:function(t){if(!t)return;let e=t.tg_left;return this.frozenInfo.columns&&(e-=this.bodyWidthL),e>=0?e:void 0},scrollToItem:function(t,e){return this.scrollToChanged=!1,this.scrollToRowHandler(t),this.scrollToColumnHandler(e),this.scrollToChanged?(this.scrollHandler(),this):this},scrollToRowHandler:function(t){if(!t)return;const e=this.getScrollRowPosition(t);d.isNum(e)&&e!==this.scrollTop&&(this.scrollTop=e,this.scrollToChanged=!0)},scrollToColumnHandler:function(t){if(!t)return;const e=this.getScrollColumnPosition(t);d.isNum(e)&&e!==this.scrollLeft&&(this.scrollLeft=e,this.scrollToChanged=!0)},scrollItemIntoView:function(t,e){return this.scrollIntoViewChanged=!1,this.scrollRowIntoViewHandler(t),this.scrollColumnIntoViewHandler(e),this.scrollIntoViewChanged?(this.scrollHandler(),this):this},scrollRowIntoViewHandler:function(t){if(!t)return;const e=this.getScrollRowPosition(t);if(!d.isNum(e))return;if(ethis.scrollTop+o){const t=e-(o-i);this.scrollTop=t,this.scrollIntoViewChanged=!0}},scrollColumnIntoViewHandler:function(t){if(!t)return;const e=this.getScrollColumnPosition(t);if(!d.isNum(e))return;if(ethis.scrollLeft+o){const t=e-(o-i);this.scrollLeft=t,this.scrollIntoViewChanged=!0}},scrollOnInit:function(){const{scrollLeft:t,scrollTop:e,scrollColumn:i,scrollRow:o}=this.renderSettings;this.scrollIntoViewChanged=!1,Number.isInteger(t)&&t!==this.scrollLeft&&(this.scrollLeft=t,this.scrollIntoViewChanged=!0),Number.isInteger(e)&&e!==this.scrollTop&&(this.scrollTop=e,this.scrollIntoViewChanged=!0),i&&this.scrollColumnIntoViewHandler(i),o&&this.scrollRowIntoViewHandler(o),this.scrollIntoViewChanged&&this.scrollPane.setPosition(this.scrollLeft,this.scrollTop)},scrollHandler:function(){this.scrollPane.setPosition(this.scrollLeft,this.scrollTop),this.scrollRenderHandler()},scrollRenderHandler:function(){this.previousScrollLeft===this.scrollLeft&&this.previousScrollTop===this.scrollTop||(this.previousScrollLeft=this.scrollLeft,this.previousScrollTop=this.scrollTop,this.onNextUpdated((()=>{this.updateScrollPaneFade(!0),this.trigger(C.onScroll,{scrollLeft:this.scrollLeft,scrollTop:this.scrollTop})})),this.render())},scrollTouchStartHandler:function(t,e){this.hideColumnLine(),this.scrollTouchLeft=this.getScrollLeft(),this.scrollTouchTop=this.getScrollTop(),this.scrollMaxTouchLeft=this.getMaxScrollLeft(),this.scrollMaxTouchTop=this.getMaxScrollTop()},getTouchOrientation:function(t){return t.orientation?t.orientation:[e.LEFT,e.RIGHT].includes(t.direction)?(t.orientation||(t.orientation="Y"),t.orientation):[e.UP,e.DOWN].includes(t.direction)?(t.orientation||(t.orientation="X"),t.orientation):void 0},scrollTouchMoveHandler:function(t,e){if(e.touchLength>1)return;let i=e.offsetX,o=e.offsetY;const n=this.getTouchOrientation(e);"X"===n?i=0:"Y"===n&&(o=0);let s=this.scrollTouchLeft-i,r=this.scrollTouchTop-o;s=d.clamp(s,0,this.scrollMaxTouchLeft),r=d.clamp(r,0,this.scrollMaxTouchTop);let l=!1;this.scrollPaneHidden&&(l=this.scrollPaneFrozen.setOffsetH(-e.moveX),s=0);const h=this.getScrollLeft(),a=this.getScrollTop();(s!==h||r!==a||l)&&(d.preventDefault(e.e),this.setScroll(s,r))},scrollTouchEndHandler:function(){this.protectedItem=null},scrollTouchInertiaHandler:function(t,e){const i=this.getScrollLeft(),o=this.getScrollTop(),n=i-e.touchInertiaX,s=o-e.touchInertiaY;this.setScroll(n,s)},getScrollViewWidth:function(){let t=this.getScrollPaneWidth();return this.frozenInfo.right||(t-=this.getScrollbarWidth()),t},getScrollViewHeight:function(){let t=this.getScrollPaneHeight();return this.frozenInfo.bottom||(t-=this.getScrollbarHeight()),t},getScrollPaneWidth:function(){return this.scrollPane.width()},getScrollPaneHeight:function(){return this.scrollPane.height()},getScrollbarWidth:function(){return this.hasVScroll&&!this.options.scrollbarFade?this.scrollbarSizeV:0},getScrollbarHeight:function(){return this.hasHScroll&&!this.options.scrollbarFade?this.scrollbarSizeH:0},getScrollLeft:function(){return this.scrollPane.getScrollLeft()},getScrollTop:function(){return this.scrollPane.getScrollTop()},getMaxScrollLeft:function(){return this.scrollPane.getMaxScrollLeft()},getMaxScrollTop:function(){return this.scrollPane.getMaxScrollTop()}};class Bt{constructor(t){this.options=this.generateOptions(t)}generateOptions(t){return d.merge({ignore:null,sortField:"",sortFactor:1,sortBlankFactor:1,sortComparer:null},t)}sortList(t){if(!d.isList(t)||1===t.length)return!1;this.ignoreExcludeHandler(t);const e=this.comparerHandler(t);return this.ignoreIncludeHandler(t),e}getDefaultComparer(t){return(ft[t]||ft.string).bind(this)}comparerHandler(t){const e=this.options,i=e.sortField,o=e.sortFactor,n=e.sortBlankFactor,s=e.sortComparer;return"function"==typeof s&&(t.sort(((t,e)=>s.call(this,t,e,{sortField:i,sortFactor:o,sortBlankFactor:n}))),!0)}ignoreExcludeHandler(t){const e=this.options.ignore;this.ignoreListTop=[],this.ignoreListBottom=[];const i=[];for(let o=0,n=t.length;o{t.unshift(e.item)})),this.ignoreListBottom.forEach((e=>{t.push(e.item)}))}}const Dt={removeSortColumn:function(){return this.sortColumn=null,this.$header&&this.$header.find(".tg-column-sorted").removeClass("tg-column-sorted"),this},setSortColumn:function(t){if(!(t=this.getColumnItem(t)))return;if(!this.isColumnSortable(t))return;t===this.sortColumn?t.sortAsc=!t.sortAsc:d.hasOwn(t,"sortAsc")||(t.sortAsc=this.options.sortAsc),this.sortColumn=t;if(this.getRowsLength()-this.frozenInfo.rows<2)return;if(!this.headerCreated)return;this.updateRowsSort()&&(this.renderHeaderSort(),this.flushSort(),this.render("rows"))},renderHeaderSort:function(){const t=this.sortColumn;if(!t)return this;if(!this.isColumnSortable(t))return this;this.$header.find(".tg-column-sorted").removeClass("tg-column-sorted");const e=t.tg_view_index,i=this.$header.find(`.tg-header-item[column='${e}']`).find(".tg-column-header").addClass("tg-column-sorted");return t.sortAsc?i.removeClass("tg-sort-desc").addClass("tg-sort-asc"):i.removeClass("tg-sort-asc").addClass("tg-sort-desc"),this},getSortComparer:function(t){const e=t.comparer;if("function"==typeof e)return e;const i=this.options.sortComparers,o=i[e||t.type];return"function"==typeof o?o:i.string},updateRowsSort:function(){const t=this.sortColumn;if(!t)return!1;const e=t.id;return!!e&&this.sortRows(e,t)},sortRows:function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=e.sortAsc?-1:1,o=this.options.sortBlankValueBottom?1:i,n=this.getSortComparer(e);let s=!1;const r=new Bt({ignore:function(t){return t.tg_frozen?{item:t,top:!0}:t.sortFixed?{item:t,top:"top"===t.sortFixed}:void 0},sortField:t,sortFactor:i,sortBlankFactor:o,sortComparer:n}),l=function(t){r.sortList(t)&&(s=!0),t.forEach((function(t,e){t.tg_sub_index=e,t.subs&&l(t.subs)}))};return l(this.rows),s&&this.initRowsHandler(),s}},Wt={default:{},lightblue:{rowHeight:35,scrollbarSize:10,scrollbarRound:!0},dark:{}},At={getAllThemes:function(){return Object.keys(Wt)},getThemeOptions:function(t){return Wt[t]}},Ft={update:function(){return this.flushBody(),this.render("rows"),this},updateRow:function(t,e){const i=this.getRowItem(t);if(!i)return this;if(e&&"object"==typeof e){const t=this.getItemSnapshot(e);Object.keys(t).forEach((function(e){i[e]=t[e]}))}return this.flushRow(i.tg_view_index),this.render("rows"),this},updateCell:function(t,e,i){const o=this.getRowItem(t);if(!o)return this;const n=this.getColumnItem(e);return n?(arguments.length>2&&(o[n.id]=i),this.flushCell(o.tg_view_index,n.tg_view_index),this.render("rows"),this):this},onNextUpdated:function(t){return"function"!=typeof t||this.once(C.onUpdated,t),this}},Gt={getViewport:function(){this.scrollLeft=this.getScrollLeft(),this.scrollTop=this.getScrollTop();return{rows:this.getViewportRows(),columns:this.getViewportColumns()}},getViewportRows:function(){const t=[],e=this.viewRows,i=e.length;if(!i)return t;let o=this.options.rowCacheLength;o=d.clamp(d.toNum(o,!0),0,i);const n=this.frozenInfo.rows;if(n){let e=0;for(;e1;){const n=Math.floor(.5*(e+i)),s=t[n],r=this.getRowTop(s),l=this.getRowHeight(s);if(or+l))return n;e=n}}const n=t[i];return o=e)return[];const i=[],o=this.frozenInfo.columns,n=this.viewColumns;for(let s=o,r=n.length;s0;){const n=t[0]-1;n>o&&t.unshift(n);const s=t[t.length-1]+1;si)&&!(n0&&(e.rows.length=o),i=t.options}return this.data=e,this.dataOptions=i,this}setDataSnapshot(t){return this.setData(this.generateDataSnapshot(t)),this}getData(){return this.data}toString(){return"[object Grid]"}}var Ut;Ut=jt.prototype,[v,R,S,T,L,I,E,x,z,F,G,j,q,K,J,Z,tt,et,pt,mt,bt,wt,vt,Ht,{keyTabHandler:function(t){},keyEnterHandler:function(t){},keyEscHandler:function(t){},keyPageUpHandler:function(t){return this.scrollPane.keyPageUpHandler(t)},keyPageDownHandler:function(t){return this.scrollPane.keyPageDownHandler(t)},keyEndHandler:function(t){return this.scrollPane.keyEndHandler(t)},keyHomeHandler:function(t){return this.scrollPane.keyHomeHandler(t)},keyLeftHandler:function(t){return this.scrollPaneHidden?this.scrollPaneFrozen.keyLeftHandler(t):this.scrollPane.keyLeftHandler(t)},keyUpHandler:function(t){return this.scrollPane.keyUpHandler(t)},keyRightHandler:function(t){return this.scrollPaneHidden?this.scrollPaneFrozen.keyRightHandler(t):this.scrollPane.keyRightHandler(t)},keyDownHandler:function(t){return this.scrollPane.keyDownHandler(t)}},yt,Ct,Rt,St,Tt,{showRow:function(t){return this.updateRowsInvisible(this.toRowItemList(t),!1)},hideRow:function(t){return this.updateRowsInvisible(this.toRowItemList(t),!0)},updateRowsInvisible:function(t,e){if(!t.length)return!1;const i=[];return t.forEach((t=>{t.invisible!==e&&(t.invisible=e,t.tg_invisible=e,i.push(t))})),!!i.length&&(this.update(),!0)}},Lt,It,Et,xt,zt,Vt,Ot,$t,Dt,At,Ft,Gt].forEach((t=>{for(const e in t){if(d.hasOwn(Ut,e))throw new Error(`ERROR: extends with an existing key: "${e}"`);Ut[e]=t[e]}}));const Xt=jt,Yt=e.VERSION,qt=e.TIMESTAMP,Kt={VERSION:Yt,TIMESTAMP:qt,Grid:Xt,$:w,CONST:e,EventBase:k,Icon:X,Motion:D,ScrollPane:kt,Util:d}})();var n=o.$,s=o.MP,r=o._d,l=o.xA,h=o.In,a=o.T8,c=o.Gr,d=o.ht,u=o.J0,g=o.xv,f=o.Ay;export{n as $,s as CONST,r as EventBase,l as Grid,h as Icon,a as Motion,c as ScrollPane,d as TIMESTAMP,u as Util,g as VERSION,f as default}; \ No newline at end of file +var t={915:(t,e,i)=>{i.d(e,{A:()=>l});var o=i(256),n=i.n(o),s=i(505),r=i.n(s)()(n());r.push([t.id,'.tg-turbogrid{position:relative;z-index:0;width:100%;height:100%;margin:0;padding:0;box-sizing:border-box;font-size:14px;font-family:arial,sans-serif;outline:0;cursor:default;overflow:hidden}.tg-turbogrid *,.tg-turbogrid *::before,.tg-turbogrid *::after{box-sizing:border-box}.tg-text-unselectable.tg-turbogrid{user-select:none}.tg-turbogrid svg{display:block;pointer-events:none}.tg-turbogrid .tg-symbols{font-family:webdings,sans-serif}.tg-turbogrid .tg-nowrap{white-space:nowrap}.tg-turbogrid .tg-align-left{text-align:left}.tg-turbogrid .tg-align-center{text-align:center}.tg-turbogrid .tg-align-right{text-align:right}@keyframes tg-fade-in{from{opacity:0}to{opacity:1}}@keyframes tg-fade-out{from{opacity:1}to{opacity:0}}.tg-turbogrid .tg-fade-in{animation-name:tg-fade-in;animation-duration:.2s;animation-fill-mode:both}.tg-turbogrid .tg-fade-in .tg-scrollbar-track{display:none}.tg-turbogrid .tg-fade-out{animation-name:tg-fade-out;animation-duration:.2s;animation-fill-mode:both}.tg-turbogrid .tg-fade-out .tg-scrollbar-track{display:none}.tg-turbogrid .tg-mask{position:absolute;top:0;left:0;z-index:200;display:none;width:100%;height:100%;background-color:#000;opacity:.1}@keyframes tg-loading-animation{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.tg-turbogrid .tg-loading{position:absolute;top:50%;left:50%;z-index:300;display:none;transform:translate(-50%, -50%);pointer-events:none}.tg-turbogrid .tg-loading-default{width:35px;height:35px;color:#0077cf;animation:1s tg-loading-animation linear infinite}.tg-turbogrid .tg-loading-fast{animation:.382s tg-loading-animation linear infinite}.tg-turbogrid .tg-checkbox{width:100%;height:100%;cursor:pointer;overflow:hidden}.tg-turbogrid .tg-checkbox:hover .tg-checkbox-item{fill:#005ba1}.tg-turbogrid .tg-checkbox.tg-select-icon-all{height:18px}.tg-turbogrid .tg-checkbox .tg-icon-checkbox{position:absolute;top:50%;left:50%;display:block;width:16px;height:16px;transform:translate(-50%, -50%)}.tg-turbogrid .tg-checkbox .tg-checkbox-item{display:none;fill:gray}.tg-turbogrid .tg-checkbox .tg-checkbox-none{display:block}.tg-turbogrid .tg-checkbox.tg-selected .tg-checkbox-selected{display:block;fill:#0077cf}.tg-turbogrid .tg-checkbox.tg-mixed .tg-checkbox-mixed{display:block;fill:#0077cf}.tg-turbogrid .tg-radio{cursor:pointer;overflow:hidden}.tg-turbogrid .tg-radio:hover .tg-icon-radio::before{border-color:#005ba1}.tg-turbogrid .tg-radio .tg-icon-radio{position:absolute;top:50%;left:50%;width:16px;height:16px;transform:translate(-50%, -50%)}.tg-turbogrid .tg-radio .tg-icon-radio::before{position:absolute;top:50%;left:50%;content:"";display:block;width:16px;height:16px;border:thin solid gray;border-radius:50%;background:#fff;transform:translate(-50%, -50%)}.tg-turbogrid .tg-radio .tg-icon-radio::after{position:absolute;top:50%;left:50%;content:"";display:none;width:10px;height:10px;border-radius:50%;background:#0077cf;transform:translate(-50%, -50%)}.tg-turbogrid .tg-radio.tg-selected .tg-icon-radio::after{display:block;border-color:#0077cf}.tg-turbogrid .tg-scrollbar{position:absolute;z-index:100;overflow:hidden;user-select:none}.tg-turbogrid .tg-scrollbar-v{top:0;right:0}.tg-turbogrid .tg-scrollbar-h{left:0;bottom:0}.tg-turbogrid .tg-scrollbar-track{position:relative;width:100%;height:100%;background:#f9f9f9;overflow:hidden;user-select:none}.tg-turbogrid .tg-scrollbar-thumb{position:absolute;top:0;left:0;border-radius:1px;background:#999;overflow:hidden;user-select:none}.tg-turbogrid .tg-scrollbar-thumb:hover{background:#888}.tg-turbogrid .tg-scrollbar-thumb-hold{background:#666}.tg-turbogrid .tg-scrollbar-thumb-hold:hover{background:#666}.tg-turbogrid .tg-scrollbar-round .tg-scrollbar-track{border-radius:10px}.tg-turbogrid .tg-scrollbar-round .tg-scrollbar-thumb{border-radius:10px}.tg-turbogrid .tg-scroll-pane{position:relative;margin:0;padding:0;border:none;outline:none;overflow:hidden}.tg-turbogrid .tg-scroll-view{position:relative;width:100%;height:100%;margin:0;padding:0;border:none;overflow:hidden}.tg-turbogrid .tg-scroll-body{position:absolute}.tg-turbogrid .tg-header{position:relative;width:10000px;border-left:0;overflow:hidden}.tg-turbogrid .tg-header-table{position:relative;color:#5e5e5e;font-weight:bold;font-size:14px;line-height:16px;border-bottom:thin solid #e5e5e5;overflow:hidden}.tg-turbogrid .tg-header-item{position:absolute;bottom:0}.tg-turbogrid .tg-header-group-item{overflow:hidden}.tg-turbogrid .tg-header-group-item::after{position:absolute;left:5px;bottom:0;content:"";display:block;width:calc(100% - 10px);height:1px;border-bottom:thin solid #ccc}.tg-turbogrid .tg-column-header{position:absolute;bottom:0;overflow:hidden}.tg-turbogrid .tg-column-header .tg-column-name{padding:10px 5px;text-overflow:ellipsis;overflow:hidden}.tg-turbogrid .tg-column-header .tg-column-name.tg-header-group-name{margin:0 5px;padding:5px 0}.tg-turbogrid .tg-column-resizing{position:absolute;top:0;right:-5px;z-index:100;width:10px;height:100%;background:#ccc;cursor:ew-resize;opacity:0}.tg-turbogrid .tg-header-column-last .tg-column-resizing{right:0}.tg-turbogrid .tg-column-sortable .tg-column-name{cursor:pointer}.tg-turbogrid .tg-column-sortable .tg-sort-indicator{cursor:pointer}.tg-turbogrid .tg-column-sorted{color:#000}.tg-turbogrid .tg-header-sort-h .tg-column-name{padding:12px 5px 15px}.tg-turbogrid .tg-header-sort-h .tg-column-sort{width:100%;height:15px;margin-top:-15px;padding:0 5px;overflow:hidden}.tg-turbogrid .tg-header-sort-h .tg-sort-indicator{position:relative;display:none;width:100%;height:100%}.tg-turbogrid .tg-header-sort-h .tg-column-sorted .tg-column-sort .tg-sort-indicator{display:block}.tg-turbogrid .tg-header-sort-h .tg-sort-indicator-line{position:absolute;top:1px;width:100%;height:0;border-top:thin solid #1e1e1e;overflow:hidden}.tg-turbogrid .tg-header-sort-h .tg-sort-indicator-icon{position:absolute;top:5px;left:0;right:inherit}.tg-turbogrid .tg-header-sort-h .tg-align-right .tg-sort-indicator-icon{left:inherit;right:0}.tg-turbogrid .tg-header-sort-h .tg-align-center .tg-sort-indicator-icon{left:50%;transform:translateX(-50%)}.tg-turbogrid .tg-header-sort-h .tg-sort-indicator-icon .tg-icon-sort-h{display:block;width:19px;height:6px}.tg-turbogrid .tg-header-sort-h .tg-sort-indicator-icon .tg-icon-item{display:none;fill:#1e1e1e}.tg-turbogrid .tg-header-sort-h .tg-sort-indicator-icon .tg-icon-item-light{fill:#ababab}.tg-turbogrid .tg-column-sort-v{display:flex;flex-direction:row;align-items:center}.tg-turbogrid .tg-column-sort-v .tg-column-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.tg-turbogrid .tg-column-sort-v.tg-align-right{justify-content:right}.tg-turbogrid .tg-column-sort-v .tg-sort-indicator{position:relative;width:16px;height:16px}.tg-turbogrid .tg-column-sort-v .tg-sort-indicator-icon{position:absolute}.tg-turbogrid .tg-column-sort-v .tg-sort-indicator-icon .tg-icon-sort-v{display:block;width:10px;height:16px}.tg-turbogrid .tg-column-sort-v .tg-sort-indicator-icon .tg-icon-item{fill:#ababab}.tg-turbogrid .tg-column-sort-v .tg-sort-indicator-icon .tg-icon-item-light{fill:#ababab}.tg-turbogrid .tg-column-sort-v.tg-column-sorted .tg-sort-indicator-icon .tg-icon-item{fill:#1e1e1e}.tg-turbogrid .tg-column-sort-v.tg-column-sorted .tg-sort-indicator-icon .tg-icon-item-light{fill:#ababab}.tg-turbogrid .tg-sort-desc .tg-sort-indicator .tg-sort-indicator-icon .tg-desc{display:block}.tg-turbogrid .tg-sort-desc .tg-sort-indicator .tg-sort-indicator-icon .tg-asc{display:none}.tg-turbogrid .tg-sort-asc .tg-sort-indicator .tg-sort-indicator-icon .tg-desc{display:none}.tg-turbogrid .tg-sort-asc .tg-sort-indicator .tg-sort-indicator-icon .tg-asc{display:block}.tg-turbogrid .tg-column-line{position:absolute;top:0;left:0;z-index:100;display:none;height:100%;pointer-events:none}.tg-turbogrid .tg-column-line-item{position:absolute;top:0;bottom:0;display:block;width:0;height:100%;border-left:thin solid #ccc}.tg-turbogrid .tg-column-line-item.tg-active{border-left:thin solid #0077cf}.tg-turbogrid .tg-column-dragging{cursor:ew-resize}.tg-turbogrid .tg-column-dragging .tg-column-name{cursor:ew-resize}.tg-turbogrid .tg-column-dragging .tg-column-resizing:not(.tg-resizing-active){display:none}.tg-turbogrid .tg-tree{position:relative;display:flex;flex-direction:row;place-items:center left;width:100%;height:100%;overflow:hidden}.tg-turbogrid .tg-tree-icon{position:relative;width:15px;height:100%;min-height:9px;text-align:left;cursor:pointer;overflow:hidden}.tg-turbogrid .tg-tree-icon .tg-icon-tree{position:absolute;top:50%;left:0;display:block;width:9px;height:9px;transform:translate(0, -50%);overflow:hidden}.tg-turbogrid .tg-tree-icon .tg-tree-item{display:none}.tg-turbogrid .tg-tree-icon-collapsed .tg-tree-collapsed{display:block}.tg-turbogrid .tg-tree-icon-empty .tg-tree-collapsed{opacity:.5}.tg-turbogrid .tg-tree-icon-expanded .tg-tree-expanded{display:block}.tg-turbogrid .tg-tree-name{flex:1;text-overflow:ellipsis;overflow:hidden}.tg-turbogrid .tg-tree-header .tg-tree .tg-tree-icon{display:none}.tg-turbogrid .tg-tree-icon-all{position:relative;height:17px}.tg-turbogrid .tg-tree-header-indent .tg-tree{padding-left:5px}.tg-turbogrid .tg-tree-header-indent .tg-tree .tg-tree-icon{display:block}.tg-turbogrid .tg-tree-header-indent.tg-column-sort-h .tg-column-sort{width:calc(100% - 20px);margin-left:20px}.tg-turbogrid .tg-pane{position:absolute;width:100%;outline:0;overflow:hidden}.tg-turbogrid .tg-header-frame{position:relative;display:block;outline:0;overflow:hidden}.tg-turbogrid .tg-header-frame .tg-pane{height:100%}.tg-turbogrid .tg-body-frame{position:relative;width:100%;outline:0}.tg-turbogrid .tg-body-message{position:absolute;display:none;width:100%;height:100%;padding:10px;overflow:hidden}.tg-turbogrid .tg-body-message img,.tg-turbogrid .tg-body-message div{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.tg-turbogrid .tg-body{position:absolute;outline:0}.tg-turbogrid .tg-cell-hover-icon{display:none}.tg-touch-device.tg-turbogrid .tg-cell-hover-icon{display:inherit}.tg-turbogrid .tg-cell-row-number{font-weight:normal}.tg-turbogrid .tg-cell-row-drag .tg-row-drag-icon{position:absolute;top:50%;left:50%;width:24px;height:24px;cursor:move;opacity:.8;transform:translate(-50%, -50%)}.tg-turbogrid .tg-cell-row-drag .tg-row-drag-icon:hover{opacity:1}.tg-turbogrid .tg-cell{position:absolute;z-index:1;height:100%;margin:0;padding:0 5px;color:#1e1e1e;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle;overflow:hidden}.tg-turbogrid .tg-cell:focus{outline:none}.tg-turbogrid .tg-cell.tg-flashing{border:1px solid red !important}.tg-turbogrid .tg-cell.tg-selected{background-color:beige}.tg-turbogrid .tg-cell.tg-align-left.tg-cell-negative{padding-left:1px}.tg-turbogrid .tg-cell.tg-align-right.tg-cell-negative{padding-right:1px}.tg-turbogrid .tg-cell.tg-cell-observer{display:flex;flex-direction:column;justify-content:center;padding:5px;line-height:normal;white-space:normal;text-overflow:ellipsis;overflow:hidden}.tg-turbogrid .tg-cell.tg-cell-observer .tg-observer{position:relative;margin:0;padding:0;border:none}.tg-turbogrid .tg-row{position:absolute;width:100%;border:0;border-bottom:thin solid #e5e5e5}.tg-turbogrid .tg-row.tg-group-line{border-bottom:thin solid #999}.tg-turbogrid .tg-row.tg-none-line{border-bottom:none}.tg-turbogrid .tg-row.tg-top-line{border-top:thin solid #e5e5e5}.tg-turbogrid .tg-row.tg-group{font-weight:bold;overflow:hidden}.tg-turbogrid .tg-row.tg-group .tg-cell.tg-align-left.tg-cell-negative{padding-left:0}.tg-turbogrid .tg-row.tg-group .tg-cell.tg-align-right.tg-cell-negative{padding-right:0}.tg-turbogrid .tg-row.tg-hover .tg-cell .tg-cell-hover-icon{display:inherit}.tg-turbogrid .tg-row.tg-dragging{opacity:.3}.tg-turbogrid .tg-row.tg-clone{z-index:1000;border:1px dashed #ccc;border-right:none;border-left:none;background:#fff;cursor:move;opacity:.5}.tg-turbogrid .tg-row.tg-clone *{cursor:move}.tg-turbogrid .tg-row-placeholder{position:absolute;z-index:9999;width:100%;border-top:2px solid #00a8e1;pointer-events:none}.tg-turbogrid .tg-row::before,.tg-turbogrid .tg-row::after{position:absolute;top:0;left:0;content:"";z-index:100;display:none;width:100%;height:100%;pointer-events:none}.tg-turbogrid .tg-hover.tg-row::before{display:block;background:rgba(0,0,0,.08)}.tg-turbogrid .tg-selected.tg-row::after{display:block;background:rgba(0,0,0,.13)}.tg-lightblue .tg-header-item{border-top:thin solid #e8eaf0;border-right:thin solid #e8eaf0}.tg-lightblue .tg-column-name{padding:5px;color:#304265}.tg-lightblue .tg-header-group-item::after{display:none}.tg-lightblue .tg-checkbox .tg-icon-item{fill:#d4d7e0}.tg-lightblue .tg-checkbox:hover .tg-icon-item{fill:#107fff}.tg-lightblue .tg-checkbox.tg-selected .tg-select-checkbox{fill:#107fff}.tg-lightblue .tg-checkbox.tg-mixed .tg-select-mixed{fill:#107fff}.tg-lightblue .tg-cell{color:#304265;border-right:thin solid #e8eaf0}.tg-lightblue .tg-row{border-bottom:thin solid #e8eaf0}.tg-lightblue .tg-row.tg-group-line{border-bottom:thin solid #c9ccd8}.tg-lightblue .tg-row.tg-selected{background:rgba(58,116,213,.05)}.tg-lightblue .tg-row.tg-hover{background:rgba(58,116,213,.05)}.tg-lightblue .tg-row.tg-even{background:#fbfcfe}.tg-lightblue .tg-row.tg-odd{background:#fff}.tg-lightblue .tg-hover.tg-row::before{background:rgba(58,116,213,.05)}.tg-lightblue .tg-selected.tg-row::after{background:rgba(58,116,213,.1)}.tg-lightblue .tg-header-frame{border-bottom:thin solid #e8eaf0}.tg-lightblue .tg-row-not-found .tg-frozen-line-v{border-right:none}.tg-lightblue .tg-scrollbar-track{background:#fff}.tg-lightblue .tg-scrollbar-thumb{background:rgba(48,66,101,.35)}.tg-lightblue .tg-scrollbar-thumb:hover{background-color:#a8a8a8}.tg-lightblue .tg-scrollbar-thumb:active{background-color:#787878}.tg-dark{background:#1e1e1e}.tg-dark .tg-checkbox .tg-icon-item{fill:#ababab}.tg-dark .tg-header-table{color:#ccc;border-bottom:thin solid #333}.tg-dark .tg-header-group-item::after{border-bottom:1px solid #999}.tg-dark .tg-column-sorted{color:#fff}.tg-dark .tg-column-sorted .tg-tree-icon-all .tg-icon-item{fill:#fff}.tg-dark .tg-header-sort-h .tg-sort-indicator-line{border-top:thin solid #eee}.tg-dark .tg-header-sort-h .tg-sort-indicator-icon .tg-icon-item{fill:#eee}.tg-dark .tg-header-sort-h .tg-sort-indicator-icon .tg-icon-item-light{fill:#666}.tg-dark .tg-column-sort-v .tg-sort-indicator-icon .tg-icon-item{fill:#666}.tg-dark .tg-column-sort-v .tg-sort-indicator-icon .tg-icon-item-light{fill:#666}.tg-dark .tg-column-sort-v.tg-column-sorted .tg-sort-indicator-icon .tg-icon-item{fill:#fff}.tg-dark .tg-column-sort-v.tg-column-sorted .tg-sort-indicator-icon .tg-icon-item-light{fill:#666}.tg-dark .tg-tree-icon .tg-icon-item{fill:#fff}.tg-dark .tg-tree-icon-all .tg-icon-item{fill:#999}.tg-dark .tg-header-item .tg-tree-icon .tg-icon-item{fill:#999}.tg-dark .tg-header-item .tg-column-sorted .tg-tree-icon .tg-icon-item{fill:#fff}.tg-dark .tg-row{border-bottom:thin solid #333}.tg-dark .tg-row.tg-group-line{border-bottom:thin solid #666}.tg-dark .tg-row.tg-clone{border:1px dashed #1e1e1e;opacity:.1}.tg-dark .tg-cell{color:#eee}.tg-dark .tg-body-message{color:#eee}.tg-dark .tg-hover.tg-row::before{background:rgba(255,255,255,.1)}.tg-dark .tg-selected.tg-row::after{background:rgba(255,255,255,.2)}.tg-dark .tg-mask{background-color:#fff}.tg-dark .tg-scrollbar-track{background:#333}.tg-dark .tg-scrollbar-thumb{background:#bbb}.tg-dark .tg-scrollbar-thumb:hover{background:#ddd}.tg-dark .tg-scrollbar-thumb-hold{background:#eee}.tg-dark .tg-scrollbar-thumb-hold:hover{background:#eee}.tg-pointer-events-none{pointer-events:none}',""]);const l=r},505:t=>{t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i="",o=void 0!==e[5];return e[4]&&(i+="@supports (".concat(e[4],") {")),e[2]&&(i+="@media ".concat(e[2]," {")),o&&(i+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),i+=t(e),o&&(i+="}"),e[2]&&(i+="}"),e[4]&&(i+="}"),i})).join("")},e.i=function(t,i,o,n,s){"string"==typeof t&&(t=[[null,t,void 0]]);var r={};if(o)for(var l=0;l0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=s),i&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=i):c[2]=i),n&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=n):c[4]="".concat(n)),e.push(c))}},e}},256:t=>{t.exports=function(t){return t[1]}}},e={};function i(o){var n=e[o];if(void 0!==n)return n.exports;var s=e[o]={id:o,exports:{}};return t[o](s,s.exports,i),s.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var o in e)i.o(e,o)&&!i.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var o={};(()=>{i.d(o,{$:()=>w,MP:()=>e,_d:()=>k,xA:()=>Xt,In:()=>X,T8:()=>B,Gr:()=>kt,ht:()=>Kt,J0:()=>d,xv:()=>Yt,Ay:()=>qt});const t="turbogrid",e={ID:t,NS:`tg-${t}`,VERSION:"3.2.0",TIMESTAMP:"2024-06-20T10:33:49.165Z",UP:"up",DOWN:"down",LEFT:"left",RIGHT:"right",TREE_INDENT:15},n=function(t){if(!t||"object"!=typeof t)return!1;const e=Object.prototype.toString.call(t);return!!["[object Object]","[object Array]"].includes(e)&&(!t.constructor||!![Object,Array].includes(t.constructor))},s=function(t,e){let i;return t.forEach((t=>{n(t)&&(i||(i=t instanceof Array?[]:{}),t instanceof Array?function(t,e,i){const o=e.length;for(let s=0;s{this.execute()})):Promise.resolve().then((()=>{this.execute()}))}execute(){if(!this.started)return;this.started=!1;const t=this.callback;this.callback=null,"function"==typeof t&&t.call(this)}cancel(){this.started=!1,this.callback=null}}const a=new WeakMap,c={isObject:n,merge:l,hasOwn:function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},uid:function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:8;const e="0123456789abcdefghijklmnopqrstuvwxyz";let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";for(;t--;)i+=e[36*Math.random()|0];return i},isNum:function(t){if("number"!=typeof t||isNaN(t))return!1;return(e=t)!==Number.MAX_VALUE&&e!==Number.MIN_VALUE&&e!==Number.NEGATIVE_INFINITY&&e!==Number.POSITIVE_INFINITY;var e},toNum:function(t,e){return"number"!=typeof t&&(t=parseFloat(t)),isNaN(t)&&(t=0),e&&!Number.isInteger(t)&&(t=Math.round(t)),t},convertNum:function(t){if("string"==typeof t){if(/^[-+]?\d+(\.\d+)?$/gi.test(t))return parseFloat(t)}return t},clamp:function(t,e,i){return Math.max(Math.min(t,i),e)},per:function(t){return t=c.toNum(t),t=c.clamp(t,0,1)},replace:function(t,e){return t=`${t}`,e?t=t.replace(/\{([^}]+)\}/g,(function(t,i){return c.hasOwn(e,i)?e[i]:t})):t},isArray:function(t){return!!(t&&t instanceof Array)},toList:function(t){return t instanceof Array?t:void 0===t?[]:"string"==typeof t?[t]:t&&c.hasOwn(t,"length")?Array.from(t):[t]},isList:function(t){return!!(c.isArray(t)&&t.length>0)},inList:function(t,e){if(!c.isList(e))return!1;for(let i=0,o=e.length;i{if(!c.isList(t))return;let n=0;const s=t.length;for(;nt.startsWith(e))).forEach((e=>{t[e]=null}))},hasShiftKey:function(t){let e=!1;return t&&(e=t.shiftKey),e},isTouchDevice:function(){return"ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0},contains:function(t,e){if(!t||!e)return!1;if(t===e)return!0;if("function"==typeof t.contains)return t.contains(e);let i=e.parentNode;for(;i;){if(i===t)return!0;i=i.parentNode}return!1},isNarrowCharacter:function(t){const e=t.codePointAt(0);return e>=32&&e<=126||162===e||163===e||165===e||166===e||172===e||175===e||8361===e||e>=10214&&e<=10221||10629===e||10630===e||e>=65377&&e<=65470||e>=65474&&e<=65479||e>=65482&&e<=65487||e>=65490&&e<=65495||e>=65498&&e<=65500||e>=65512&&e<=65518},getCharLen:function(t){let e=0;if(!t)return e;for(const i of String(t))e+=c.isNarrowCharacter(i)?1:2;return e},pascalToKebabCase:function(t){return`${t}`.trim().replace(/([a-z])([A-Z])/g,"$1-$2").replace(/\W/g,(t=>/[À-ž]/.test(t)?t:"-")).replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-").toLowerCase()},classMap:function(t){if("string"==typeof t)return t.trim();if(Array.isArray(t)){let e=t.filter((t=>t));return e=e.map((t=>t&&"object"==typeof t?c.classMap(t):String(t).trim())),e=e.filter((t=>t)),e=Array.from(new Set(e)),e.join(" ")}if(t&&"object"==typeof t){const e=[];return Object.keys(t).forEach((i=>{t[i]&&e.push(i)})),e.join(" ")}return""},styleMap:function(t){if("string"==typeof t)return t.trim();if(Array.isArray(t)){let e=t.filter((t=>t));return e=e.map((t=>{const e=String(t).trim();return e?-1===e.indexOf(":")?"":e.endsWith(";")?e:`${e};`:""})),e=e.filter((t=>t)),e=Array.from(new Set(e)),e.join(" ")}if(t&&"object"==typeof t){const e=[];return Object.keys(t).forEach((i=>{const o=t[i];if(o||0===o){const t=String(o).trim();t&&e.push(`${c.pascalToKebabCase(i)}: ${t};`)}})),e.join(" ")}return""},getInstance:function(t){if(t){const e=document.getElementById(t);if(e)return a.get(e)}},setInstance:function(t,e){t&&a.set(t,e)},bindEvents:function(t,e){t&&(c.unbindEvents(t),Object.keys(t).forEach((i=>{const o=t[i];o.target=o.target||e,o.target.addEventListener(i,o.handler,o.options)})))},unbindEvents:function(t){t&&Object.keys(t).forEach((e=>{const i=t[e];i.target&&i.target.removeEventListener(e,i.handler,i.options)}))},preventDefault:function(t){t&&"function"==typeof t.preventDefault&&t.cancelable&&t.preventDefault()},debounce:function(t){let e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100;const o=function(){clearTimeout(e),e=setTimeout((()=>{t.apply(this,arguments)}),i)};return o.cancel=()=>{clearTimeout(e)},o},throttle:function(t){let e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100,o=0;const n=function(){const n=Date.now();if(n>o+i)return clearTimeout(e),o=n,void t.apply(this,arguments);clearTimeout(e),e=setTimeout((()=>{o=n,t.apply(this,arguments)}),i)};return n.cancel=()=>{clearTimeout(e),o=0},n},microtask:function(t){const e=new h,i=function(){e.start((()=>{t.apply(this,arguments)}))};return i.cancel=()=>{e.cancel()},i},nextTick:function(t){"function"==typeof window.queueMicrotask?window.queueMicrotask((()=>{t()})):Promise.resolve().then((()=>{t()}))},cancelAsync:function(t){t&&(Object.keys(t).filter((e=>e.startsWith("async")&&"function"==typeof t[e])).forEach((e=>{const i=t[e];"function"==typeof i.cancel&&(i.cancel(),t[e]=null)})),Object.keys(t).filter((t=>t.startsWith("timeout"))).forEach((e=>{clearTimeout(t[e])})))}},d=c,u={animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},g=function(t){return null!==t&&1===t.nodeType},f=function(t){let e=t.ownerDocument.defaultView;return e&&e.opener||(e=window),e.getComputedStyle(t)},p={},m=function(t,e){return null!=(i=t)&&i===i.window?t[`inner${e}`]:(function(t){return null!==t&&9===t.nodeType}(t)&&(t=t.body),t[`client${e}`]);var i},b=function(t){return this.list=[],t?this.create(t):this};function w(t){return new b(t)}b.prototype={constructor:b,Query:"Query",list:[],create:function(t){return t instanceof b?t:"string"==typeof t?this.createFromString(t):((t.nodeType||t===window)&&(this.list=[t]),this)},createFromString:function(t){if("<"===(t=t.trim())[0]&&">"===t[t.length-1]&&t.length>=3)this.parseHTML(t);else{const e=document.querySelectorAll(t);for(let t=0,i=e.length;t{this.css(e,t[e])}))}var i;return this.each((function(i){let o=e;"number"!=typeof o||u[t]||(o+="px"),i.style[t]=o})),this},attr:function(t,e){if(!t)return this;if(1===arguments.length){if("object"==typeof t)return Object.keys(t).forEach((e=>{this.attr(e,t[e])})),this;const e=this.get(0);return e?e.getAttribute(t):void 0}return this.each((function(i){i.setAttribute(t,e)})),this},removeAttr:function(t){return t?(this.each((function(e){e.hasAttribute(t)&&e.removeAttribute(t)})),this):this},removeClass:function(t){if(!arguments.length)return this.each((function(t){t.className=""})),this;if(!t||"string"!=typeof t)return this;const e=t.split(" ");return this.each((function(t){e.forEach((function(e){e&&t.classList.remove(e)}))})),this},addClass:function(t){if(!t||"string"!=typeof t)return this;const e=t.split(" ");return this.each((function(t){e.forEach((function(e){e&&t.classList.add(e)}))})),this},hasClass:function(t){if(!t||"string"!=typeof t)return!1;let e=!1;return this.each((function(i){if(i.classList.contains(t))return e=!0,!1})),e},show:function(){return this.each((function(t){if(!g(t))return;const e=function(t){if(!p[t]){const e=document.createElement(t);document.body.appendChild(e);const i=f(e).display;e.parentNode.removeChild(e),p[t]=i}return p[t]}(t.nodeName);t.style.display=e})),this},hide:function(){return this.each((function(t){if(!g(t))return;"none"!==t.style.display&&(t.style.display="none")})),this},click:function(){const t=this.get(0);return t&&"function"==typeof t.click&&t.click(),this},offset:function(){const t={left:0,top:0},e=this.get(0);if(e){const i=e.getBoundingClientRect();t.left=i.left+window.scrollX,t.top=i.top+window.scrollY}return t},clone:function(){const t=new b;return this.each((function(e){if(e&&e.cloneNode){const i=e.cloneNode(!0);t.add(i)}})),t},children:function(){const t=new b;return this.each((function(e){let i=e.firstChild;for(;i;)t.add(i),i=i.nextSibling})),t},parent:function(){const t=this.get(0);return t?new b(t.parentNode):new b},is:function(t){if(!t)return!1;const e=t.split(",");let i=!0;return this.each((function(t){if(!t.nodeName)return i=!1,!1;const o=t.nodeName.toLowerCase();return d.inList(o,e)?void 0:(i=!1,!1)})),i}},Object.defineProperty(b.prototype,"length",{get:function(){return this.list.length}});const v={createCache:function(){this.headerCache=new Map,this.rowsCache=new Map,this.dataCache=new WeakMap,this.cellResizeObserver=this.createResizeObserver((t=>{this.cellResizeHandler(t)}))},setHeaderCache:function(t,e){this.headerCache.set(t,e)},getHeaderCache:function(t){return this.headerCache.get(t)},clearHeaderCache:function(){this.headerCache.clear()},setRowCache:function(t,e){this.rowsCache.set(t,{rowNodes:e,cellNodes:new Map,observerNodes:new Map})},getRowCache:function(t){return this.rowsCache.get(t)},deleteRowCache:function(t){const e=this.getRowCache(t);if(!e)return;this.rowsCache.delete(t);const i=e.observerNodes;i&&i.forEach((t=>{t&&this.cellResizeObserver.unobserve(t)}));const o=e.rowNodes;o&&o.each((t=>{this.removeNode(t)}))},deleteCellCache:function(t,e,i){if(i){const e=i.get(t);e&&this.cellResizeObserver.unobserve(e),i.delete(t)}e&&(this.removeNode(e.get(t)),e.delete(t))},getRowNodesByIndex:function(t){const e=this.getRowCache(t);if(e)return e.rowNodes},getCellNodeByIndex:function(t,e){const i=this.getRowCache(t);if(i)return i.cellNodes.get(e)},forEachRowsCache:function(t){this.rowsCache.forEach(((e,i)=>{t.call(this,i,e.rowNodes,e.cellNodes,e.observerNodes)}))},updateRowCacheTopOffset:function(){const t=this.frozenInfo.row;this.forEachRowsCache(((e,i)=>{if(!(e<=t)&&i){const t=this.getViewRowItem(e),o=this.getViewRowTop(t);i.css("top",o)}}))},updateRowCacheTopAndHeight:function(){this.forEachRowsCache(((t,e)=>{if(e){const i=this.getViewRowItem(t),o=this.getViewRowTop(i),n=this.getRowHeight(i);e.css({top:o,height:n,"line-height":n})}}))},setNodeDataCache:function(t,e){if(t)return this.dataCache.set(t,e)},getNodeDataCache:function(t){if(t)return this.dataCache.get(t)},removeCache:function(){this.headerCache=null,this.rowsCache=null,this.dataCache=null,this.cellResizeObserver&&(this.cellResizeObserver.disconnect(),this.cellResizeObserver=null)}},H=["onUpdated","onFirstUpdated","onHeaderUpdated","onSort","onColumnAdded","onColumnRemoved","onColumnWidthChanged","onRowAdded","onRowRemoved","onRowExpanded","onRowCollapsed","onRowSubsRequest","onRowDragged","onRowDropped","onRowMoved","onRowMouseEnter","onRowMouseLeave","onSelectChanged","onCellUpdated","onCellMouseEnter","onCellMouseLeave","onClick","onDblClick","onContextMenu","onMouseOver","onMouseOut","onTouchStart","onTouchMove","onTouchEnd","onScroll","onScrollStateChanged","onMouseWheel","onResize","onLayout","onKeyDown","onDestroy"],C={};H.forEach((t=>{C[t]=t}));const y=C,R={renderCells:function(t,e){t.forEach((t=>{this.drawRowCells(t,e)}))},getCellValue:function(t,e){return t[e.id]},renderCell:function(t){const{rowItem:e,columnItem:i,cellNode:o,observerNode:n}=t,s=this.getCellValue(e,i);let r=s;this.nullFormatter&&(r=this.nullFormatter.call(this,r,e,i,o,n));const l=e.tg_formatter||i.tg_formatter;"function"==typeof l&&(r=l.call(this,r,e,i,o,n));const h=n||o;this.renderNodeContent(h,r);const{highlightKey:a}=this.options.highlightKeywords;e[a+i.id]&&this.renderSettings.highlightCells.push(o),this.trigger(y.onCellUpdated,{value:s,rowItem:e,columnItem:i,node:o})},getPreRenderColumnList:function(t,e){const i=[];if(!e.length)return i;for(let o=0,n=e.length;o{this.createCellNode(t,e)}))},getCellClass:function(t,e,i){const o=e.tg_view_index,n=["tg-cell"];return i&&n.push("tg-cell-observer"),n.push(`tg-c-${o}`),e.align&&n.push(`tg-align-${e.align}`),0===e.tg_list_index&&n.push("tg-list-first"),e.tg_list_last&&n.push("tg-list-last"),n.push(d.classMap(e.classMap)),n.push(d.classMap(t[`${e.id}ClassMap`])),d.classMap(n)},cellResizeObserverHandler:function(t,e){const i=this.options.cellResizeObserver;if("function"==typeof i)return i.apply(this,[t,e])},cellResizeHandler:function(t){const e=new Map;t.forEach((t=>{const{target:i}=t,o=this.getNodeDataCache(i.parentNode);if(!o)return;const{row:n,rowItem:s}=o;e.set(n,s)}));let i=!1;e.forEach(((t,e)=>{const o=this.getRowCache(e);if(!o)return;const n=o.observerNodes;if(!n)return;const{rowHeight:s,rowMinHeight:r}=this.options;let l=Math.max(r||s,1);n.forEach((t=>{if(t){const e=t.clientHeight+11;e>l&&(l=e)}}));this.getRowHeight(t)!==l&&(t.tg_height=l,i=!0)})),i&&this.render("rows_cache")},createCellNode:function(t,e){const i=this.getRowCache(t);if(!i)return;const o=this.getViewRowItem(t),n=this.getViewColumnItem(e);if(!o||!n)return;const s=this.cellResizeObserverHandler(o,n),r=document.createElement("div");r.setAttribute("column",e);const l=this.getCellClass(o,n,s);r.className=l;const h=d.styleMap(n.styleMap)+d.styleMap(o[`${n.id}StyleMap`]);h&&(r.style.cssText=h);const a=i.rowNodes,c=n.tg_frozen,u=this.getCellRowNode(a,c);let g;this.appendNode(u,r),s&&(g=document.createElement("div"),g.className="tg-observer",r.appendChild(g),this.cellResizeObserver.observe(g),i.observerNodes.set(e,g));const f={row:t,rowItem:o,rowNode:u,column:e,columnItem:n,cellNode:r,observerNode:g};this.setNodeDataCache(r,f),i.cellNodes.set(e,r),this.renderCell(f)},getCellRowNode:function(t,e){const i=t.get(0);if(this.frozenInfo.columns){const o=t.get(1);return this.frozenInfo.right?e?o:i:e?i:o}return i}},S={addColumn:function(t,e,i){let o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];const n=this.getToBeAddedItemList(t);if(!n.length)return!1;let s;if(null!=e&&(s=this.getColumnItem(e),!s))return!1;const r=this.getToBeAddedParentSubs(s,this.columns),l=[this.getToBeAddedPositionIndex(i,r),0].concat(n);r.splice.apply(r,l),this.onNextUpdated((function(){this.trigger(y.onColumnAdded,n)}));const h={type:"columns"};return o&&(h.scrollColumn=n[n.length-1]),this.render(h),!0},deleteColumn:function(t){const e=this.toColumnItemList(t,(t=>!t.private));return!!e.length&&(this.removeColumnsHandler(e),this.onNextUpdated((function(){this.trigger(y.onColumnRemoved,e)})),this.render("columns"),!0)},removeColumnsHandler:function(t){const e=[].concat(t);e.sort((function(t,e){return e.tg_index-t.tg_index})),e.forEach((t=>{let e;if(t===this.sortColumn&&this.removeSortColumn(),t.tg_parent)e=t.tg_parent.subs,e.splice(t.tg_sub_index,1);else{e=this.columns;const i=e.findIndex((e=>e===t));-1!==i&&e.splice(i,1)}!e.length&&t.tg_parent&&(t.tg_parent.subs=null)}))}},T={setColumnWidth:function(t,e){return this.updateColumnWidth(t,e)?(this.resize(),this):this},updateColumnWidth:function(t,e){const i=this.getColumnItem(t);return!!i&&(!!d.isNum(e)&&(e=Math.round(e),e=Math.max(0,e),i.tg_width!==e&&(i.width=e,i.minWidth=Math.min(i.minWidth,e),i.maxWidth=Math.max(i.maxWidth,e),this.updateViewColumnWidth(i),!0)))},showColumn:function(t){return this.updateColumnsInvisible(this.toColumnItemList(t),!1)},hideColumn:function(t){return this.updateColumnsInvisible(this.toColumnItemList(t),!0)},updateColumnsInvisible:function(t,e){if(!t.length)return!1;const i=[];return t.forEach((t=>{t.invisible!==e&&(t.invisible=e,t.tg_invisible=e,i.push(t))})),!!i.length&&(this.render("columns"),!0)}},E={showColumnLine:function(t){t&&(this.$columnLineContainer.show(),this.renderColumnLine(t))},hideColumnLine:function(){this.previousColumnLineActive||this.$columnLineContainer.hide()},setColumnLineActive:function(t){this.setTextSelectable(!t),this.rowHoverable=!t,t!==this.previousColumnLineActive&&(this.previousColumnLineActive=t,t?this.$columnLineItem.addClass("tg-active"):this.$columnLineItem.removeClass("tg-active"))},getColumnLineLeft:function(t){let e=t.tg_left;return t.tg_frozen||(e-=this.scrollLeft),this.frozenInfo.right&&(t.tg_frozen?e=t.tg_left+this.paneWidthL:e-=this.columnsWidthR),e},renderColumnLine:function(t){const e=this.getHeaderItemNode(t).offsetTop,i=t.tg_width,o=this.getColumnLineLeft(t);this.$columnLineItemL.css({top:e,left:o}),this.$columnLineItemR.css({top:e,left:o+i-1}),this.frozenInfo.right||(this.frozenInfo.columns&&!t.tg_frozen&&o{this.renderColumnLine(e.columnItem)})),this.resize()},columnWidthTouchStartHandler:function(t,e){d.preventDefault(e.e);const i=e.columnItem;this.showColumnLine(i),this.setColumnLineActive(!0),e.index=i.tg_index;const o=this.getColumnHeaderNode(i);e.width=o.clientWidth},columnWidthTouchMoveHandler:function(t,e){d.preventDefault(e.e);const i=e.columnItem;let o=e.width+e.offsetX;o=d.clamp(o,i.minWidth,i.maxWidth),i.tg_width!==o&&(i.width=o,this.updateViewColumnWidth(i),this.renderColumnLine(i))},columnWidthTouchEndHandler:function(t,e){d.preventDefault(e.e),this.setColumnLineActive(!1),this.hideColumnLine(),this.resize()}},I={getColumnItem:function(t){return d.isNum(t)?(t<0&&(t=this.columnsInfo.length+t),this.columnsInfo.indexCache[t]):t?d.isNum(t.tg_index)?t:this.getColumnItemById(t.id||t):void 0},getColumnItemById:function(t){return this.getColumnItemBy("id",t)},getColumnItemBy:function(t,e){if(void 0!==e)return this.columnsInfo.indexCache.find((i=>i[t]===e))},getColumnsLength:function(t){return t?this.columnsInfo.length:this.viewColumns.length},getViewColumnItem:function(t){return this.viewAllColumns[t]},isColumnSortable:function(t){return!!t&&(!t.tg_group&&(!(!t.name||!t.id)&&this.isSortable(t)))},isColumnResizable:function(t){return!!t&&(!t.tg_group&&(!d.hasOwn(t,"resizable")||Boolean(t.resizable)))},updateViewColumnWidth:function(t){return t.tg_width=t.width,this.updateColumnHeaderSize(t),this.updateTotalColumnsWidth(),this.updateHeaderLayerHeight(),this.cssRulesInvalid=!0,this.resizeBodyHandler(),this.trigger(y.onColumnWidthChanged,t),!0},updateTotalColumnsWidth:function(){this.blankColumn.tg_width=0;const t=this.viewColumns;let e=0,i=0;const o=this.frozenInfo.columns,n=t.length;let s=0;for(let r=0;r0&&(s+=l,o&&r>=o?i+=l:e+=l)}if(this.frozenInfo.right){const t=e;e=i,i=t}this.columnsWidthL=e,this.columnsWidthR=i,this.columnsWidth=e+i},updateColumnHeaderSize:function(t){this.updateColumnHeaderWidth(t),this.updateColumnHeaderHeight(t,!0),this.updateColumnGroupWidth(t)},updateColumnHeaderWidth:function(t){const e=this.getColumnHeaderNode(t);if(!e)return;const i=t.tg_width;this.isInvisible(t)||i<=0?e.style.display="none":(e.style.display="",e.style.width=`${i}px`)},updateColumnHeaderHeight:function(t,e){if(t.tg_height=0,t.tg_width<=0)return;if(this.isInvisible(t))return;e&&(t.tg_element_height=0);const i=t.tg_element_height;if(i)return void(t.tg_height=i);const o=this.getColumnHeaderHeight(t);t.tg_height=o,t.tg_element_height=o},getColumnHeaderHeight:function(t){const e=this.getColumnHeaderNode(t);return e?e.clientHeight:0},updateColumnGroupWidth:function(t){const e=t.tg_parent;if(!e)return;const i=this.getColumnGroupWidth(e);e.tg_width!==i&&(e.tg_width=i,this.updateColumnHeaderSize(e))},getColumnGroupWidth:function(t){if(this.isInvisible(t))return 0;let e=0;return t.subs&&t.subs.forEach((t=>{this.isInvisible(t)||d.isNum(t.tg_width)&&(e+=t.tg_width)})),e}},L={initTreeInfo:function(t,e){const i=[];let o=!1,n=0,s=0;const r=function(t,r,l){(t=>{t.invisible?t.tg_invisible=!0:t.tg_invisible&&(t.tg_invisible=!1)})(t),((t,i)=>{if(e>=0&&!t.tg_invisible)return t.tg_frozen=!0,void(e-=1);t.tg_frozen&&(t.tg_frozen=!1)})(t),(t=>{if(d.hasOwn(t,"subs")){if(Array.isArray(t.subs))return o=!0,t.tg_group=!0,void(t.tg_subs_length=t.subs.length);t.subs=null}t.tg_group&&(t.tg_group=!1)})(t),((t,e)=>{t.tg_parent=e;let i=0;e&&(i=e.tg_level+1,i>n&&(n=i)),t.tg_level=i})(t,l),t.tg_index=s,t.tg_sub_index=r,i.push(t),s+=1},l=function(t,e){let i=0;const o=t.length;for(;i{if(!this.isInvisible(e))return this.isRowSelectable(e)?t(e,i,o):void 0})),this},toRowItemList:function(t,e){let i=d.toList(t).map((t=>this.getRowItem(t))).filter((t=>t));return"function"==typeof e&&(i=i.filter(e)),i},toColumnItemList:function(t,e){let i=d.toList(t).map((t=>this.getColumnItem(t))).filter((t=>t));return"function"==typeof e&&(i=i.filter(e)),i},isRowLeaf:function(t){return!!t&&("blank"!==t.formatter&&(!t.tg_frozen&&!t.tg_group))},isRowSelectable:function(t){return!!t&&(d.hasOwn(t,"selectable")?Boolean(t.selectable):this.isRowLeaf(t))},isEmptyGroup:function(t){return!(!t||!t.tg_group||0!==t.tg_subs_length)},isInvisible:function(t){return!!t&&(!(!t.tg_filtered&&!t.tg_invisible)||!!this.isInvisible(t.tg_parent))},isSortable:function(t){return!!t&&(!d.hasOwn(t,"sortable")||Boolean(t.sortable))},isCollapsedChanged:function(t,e){return Boolean(t.collapsed)!==e},isSelectedChanged:function(t,e){return Boolean(t.selected)!==e}},x={updateCssRules:function(){this.cssRulesInvalid&&(this.cssRulesInvalid=!1,this.initCssRules(),this.updateColumnsCssRules(),this.updateHeadersCssRules(),this.updateStyleElement())},initCssRules:function(){this.removeCssRules(),this.cssList={},this.cssDisplayCache={};const t=this.getRowHeight(),e=this.createCssRule(".tg-row");e.height=`${t}px`,e["line-height"]=`${t}px`},resetCssDisplay:function(t){if(this.cssDisplayCache){t=t||"";for(const e in this.cssDisplayCache)if(d.hasOwn(this.cssDisplayCache,e)){this.cssDisplayCache[e].style.display=t}}},updateColumnsCssRules:function(){const t=this.viewColumns,e=this.frozenInfo.column,i={};let o=0;for(let n=0,s=t.length;n=0;i--){const e=this.headerLayerHeight[i],o=this.createCssRule(`.tg-h-${i}`);o.bottom=`${t}px`,o.height=`${e}px`,t+=e}this.getLayerCombinations(e).forEach((t=>{const e=this.createCssRule(`.tg-h-${t}`);let i=0;t.split("").forEach((t=>{i+=this.headerLayerHeight[t]||0})),e.height=`${i}px`}))},getLayerCombinations:function(t){let e="";for(;t>=0;)e+=t,t--;if(e.length<2)return[];const i=[],o=function(t,e){const n=t.length;let s=e+2;for(;s<=n;){const o=t.substring(e,s);i.push(o),s++}e=i){let t="Possible Event memory leak detected. ";return t+=`More than ${i} (max limit) listeners added. `,t+="Use setMaxListeners(n) to increase limit.",void console.warn(t,e)}t.events.push(e)},addEvents:function(t,e,i){e.forEach((function(e){const o=e.type;t[o]||(t[o]={events:[]});if("function"!=typeof e.handler)return;const n=t[o];N.addEvent(n,e,i)}))},removeEventByNamespace:function(t,e){Object.keys(t).forEach((function(i){const o=t[i],n=[];o.events.forEach((function(t){t&&t.namespace!==e&&n.push(t)})),o.events=n}))},removeEventByHandler:function(t,e,i){const o=t[e];if(!o)return;const n=[];o.events.forEach((function(t){t&&t.handler!==i&&n.push(t)})),o.events=n},removeEventByType:function(t,e){const i=t[e];i&&(i.events=[])},removeEvent:function(t,e){const i=e.type,o=e.namespace;if(!i&&o)return void N.removeEventByNamespace(t,o);const n=e.handler;"function"!=typeof n?N.removeEventByType(t,i):N.removeEventByHandler(t,i,n)},removeEvents:function(t,e){e.forEach((function(e){N.removeEvent(t,e)}))},removeAllEvents:function(t){Object.keys(t).forEach((function(e){N.removeEventByType(t,e)}))},sendEventList:function(t,e,i,o){const n=e.events;for(let e=0;e!t.onceCalled))},sendEvent:function(t,e,i,o){const n=e[i];if(!n)return;const s=new P({type:i,target:t,currentTarget:t,data:o});N.sendEventList(t,n,s,o)}},_=N;class k{maxListeners=10;setMaxListeners(t){this.maxListeners=Number(t)||10}getMaxListeners(){return this.maxListeners}getEventListeners(){return this.eventListeners||(this.eventListeners={}),this.eventListeners}delEventListeners(){this.eventListeners=null}bind(t,e,i){const o=_.getEventList(this,t,e,i);if(!o.length)return this;const n=this.getEventListeners();return _.addEvents(n,o,this.maxListeners),this}once(t,e){return this.bind(t,e,{once:!0})}unbind(t,e,i){const o=this.getEventListeners();if(!arguments.length)return _.removeAllEvents(o),this;const n=_.getEventList(this,t,e,i);return n.length?(_.removeEvents(o,n),this):this}trigger(t,e){const i=this.getEventListeners();return _.sendEvent(this,i,t,e),this}}const V={DRAG_START:"drag_start",DRAG_MOVE:"drag_move",DRAG_END:"drag_end"};class O extends k{static EVENT=V;generateOptions(t){return d.merge({type:"mouse",startX:0,startY:0,previousX:0,previousY:0,currentX:0,currentY:0,moveX:0,moveY:0,offsetX:0,offsetY:0,changed:!1},t)}start(t,e){t&&(this.unbindEvents(),this.bindEvents(),this.options=this.generateOptions(e),this.startHandler(t))}bindEvents(){this.windowEvents={mousemove:{handler:t=>{this.iframeHandler(t),this.mouseMoveHandler(t)},options:!0},mouseup:{handler:t=>{this.mouseUpHandler(t)},options:{once:!0}}},d.bindEvents(this.windowEvents,window)}unbindEvents(){d.unbindEvents(this.windowEvents),this.windowEvents=null,this.previousIframe&&(this.previousIframe.classList.remove("tg-pointer-events-none"),this.previousIframe=null)}iframeHandler(t){const e=t.target;"IFRAME"===e.nodeName&&e!==this.previousIframe&&(this.previousIframe&&this.previousIframe.classList.remove("tg-pointer-events-none"),e.classList.add("tg-pointer-events-none"),this.previousIframe=e)}startHandler(t){const e=this.options;e.e=t,e.startX=t.pageX,e.startY=t.pageY,e.currentX=e.startX,e.currentY=e.startY,this.hasMoved=!1}mouseMoveHandler(t){d.preventDefault(t);const e=this.options;e.e=t,e.previousX=e.currentX,e.previousY=e.currentY,e.currentX=t.pageX,e.currentY=t.pageY,e.moveX=e.currentX-e.previousX,e.moveY=e.currentY-e.previousY,e.offsetX=e.currentX-e.startX,e.offsetY=e.currentY-e.startY,e.changed=!(0===e.offsetX&&0===e.offsetY),this.hasMoved?this.trigger(V.DRAG_MOVE,e):(this.hasMoved=!0,this.trigger(V.DRAG_START,e))}mouseUpHandler(t){this.unbindEvents();const e=this.options;this.hasMoved&&(e.e=t,d.preventDefault(t),this.trigger(V.DRAG_END,e))}destroy(){this.unbindEvents(),this.unbind()}}const $={Linear:{None:function(t){return t}}},D={MOTION_START:"motion_start",MOTION_MOVE:"motion_move",MOTION_END:"motion_end",MOTION_STOP:"motion_stop"};class B extends k{static EVENT=D;constructor(t){super(),this.constructorOptions=t,this.stopped=!0}generateOptions(t){return d.merge({easing:null,duration:100,from:0,till:1,data:0},this.constructorOptions,t)}stop(){return this.stopped||(this.stopped=!0,this.cancelAnimationFrame(),this.trigger(D.MOTION_STOP,this.data)),this}start(t){return this.stop(),this.stopped=!1,this.options=this.generateOptions(t),this.initCalculation(),this.data=this.calculateHandler(0),this.trigger(D.MOTION_START,this.data),this.stopped||(this.time=Date.now(),this.requestAnimationFrame(this.moveHandler)),this}requestAnimationFrame(t){this.requestId=window.requestAnimationFrame((()=>{t.apply(this)}))}cancelAnimationFrame(){window.cancelAnimationFrame(this.requestId)}getEasing(t){return"function"!=typeof t&&(t=d.getValue($,t,$.Linear.None)),t}moveHandler(){const t=Date.now()-this.time,e=this.duration;if(t{o[n]=this.calculateNumber(t,e[n],i[n])})),o):(this.calculateKeys=[],Object.keys(e).forEach((n=>{const s=e[n],r=i[n];d.isNum(s)&&d.isNum(r)&&(o[n]=this.calculateNumber(t,s,r),this.calculateKeys.push(n))})),o)}calculateNumber(t,e,i){return(i-e)*t+e}calculateNone(t,e,i){return e}destroy(){this.stop(),this.unbind()}}const A={TOUCH_START:"touch_start",TOUCH_MOVE:"touch_move",TOUCH_END:"touch_end",TOUCH_INERTIA:"touch_inertia"};class W extends k{static EVENT=A;generateOptions(t){return d.merge({type:"touch",startX:0,startY:0,previousX:0,previousY:0,currentX:0,currentY:0,moveX:0,moveY:0,offsetX:0,offsetY:0,changed:!1,touchLength:0,direction:"",inertia:!1,inertiaTime:200},t)}start(t,e){t&&(this.unbindEvents(),this.bindEvents(),this.options=this.generateOptions(e),this.startHandler(t))}bindEvents(){this.touchEvents={touchmove:{handler:t=>{this.touchMoveHandler(t)},options:{passive:!1}},touchend:{handler:t=>{this.touchEndHandler(t)},options:{passive:!1,once:!0}},touchcancel:{handler:t=>{this.touchCancelHandler(t)},options:{passive:!1,once:!0}}},d.bindEvents(this.touchEvents,document.body)}unbindEvents(){this.motionStop(),d.unbindEvents(this.touchEvents),this.touchEvents=null}startHandler(t){this.trackingPoints=[];const e=t.touches,i=e[0];if(!i)return;const o=this.options;o.e=t,o.startX=i.clientX,o.startY=i.clientY,o.currentX=o.startX,o.currentY=o.startY,o.touchLength=e.length,this.addTrackingPoint(o),this.trigger(A.TOUCH_START,o)}touchMoveHandler(t){const e=t.touches,i=e[0];if(!i)return;const o=this.options;o.e=t,o.previousX=o.currentX,o.previousY=o.currentY,o.currentX=i.clientX,o.currentY=i.clientY,o.moveX=o.currentX-o.previousX,o.moveY=o.currentY-o.previousY,o.offsetX=o.currentX-o.startX,o.offsetY=o.currentY-o.startY,o.changed=!(0===o.offsetX&&0===o.offsetY),o.touchLength=e.length,o.direction=this.getDirection(o),this.addTrackingPoint(o),this.trigger(A.TOUCH_MOVE,o)}touchEndHandler(t){this.unbindEvents();const e=this.options;e.e=t,this.trigger(A.TOUCH_END,e);const i=t.changedTouches[0];if(!i)return;const o=t.touches;e.touchLength=o.length,e.touchLength>0||(e.currentX=i.clientX,e.currentY=i.clientY,this.addTrackingPoint(e),this.motionStart())}touchCancelHandler(t){this.unbindEvents(),this.trigger(A.TOUCH_END,this.options)}getMotionInfo(){const t=this.trackingPoints;if(t.length<2)return;if(this.filterTrackingPoints(t),t.length<2)return;const e=t[0],i=t[t.length-1],o=i.t-e.t;if(o<=0)return;let n=i.x-e.x,s=i.y-e.y;const r=Math.abs(n),l=Math.abs(s);r>l?s=0:n=0;return{offsetDistance:Math.max(r,l),offsetTime:o,offsetX:n,offsetY:s}}motionStart(){const t=this.options;if(!t.inertia)return;const e=this.getMotionInfo();if(!e)return;const i=500*e.offsetDistance/50,o=d.clamp(i,20,2e3),n={x:20*(e.offsetX/e.offsetTime),y:20*(e.offsetY/e.offsetTime)};this.motion=new B,this.motion.bind(B.EVENT.MOTION_MOVE,((e,i)=>{t.touchInertiaX=i.x,t.touchInertiaY=i.y,this.trigger(A.TOUCH_INERTIA,t)})),this.motion.start({duration:o,from:n,till:{x:0,y:0}})}motionStop(){this.motion&&(this.motion.destroy(),this.motion=null)}getDirection(t){const i=t.offsetX,o=t.offsetY,n=Math.abs(i),s=Math.abs(o);if(n0)return e.UP;if(o<0)return e.DOWN}if(n>s){if(i>0)return e.LEFT;if(i<0)return e.RIGHT}return""}filterTrackingPoints(t){t.reverse();const e=t.length,i=Date.now(),o=this.options.inertiaTime;for(let n=0;no){t.length=n;break}t.reverse()}addTrackingPoint(t){if(!t.inertia)return;const e=t.currentX,i=t.currentY,o=Date.now(),n=this.trackingPoints;n.push({x:e,y:i,t:o}),n.length>100&&this.filterTrackingPoints(n)}destroy(){this.unbindEvents(),this.unbind()}}const F={getAllEvents:function(){return[].concat(H)},bindEvents:function(){this.unbindEvents(),this.containerEvents={mousedown:{handler:t=>{this.containerMouseDownHandler(t)},options:!0},mousemove:{handler:t=>{this.containerMouseMoveHandler(t)},options:!0},mouseover:{handler:t=>{this.containerMouseOverOutHandler(t,!0)},options:!0},mouseout:{handler:t=>{this.containerMouseOverOutHandler(t,!1)},options:!0},mouseenter:{handler:t=>{this.containerMouseEnterLeaveHandler(t,!0)},options:!0},mouseleave:{handler:t=>{this.containerMouseEnterLeaveHandler(t,!1)},options:!0},touchstart:{handler:t=>{this.containerTouchStartHandler(t)},options:{passive:!1}},touchmove:{handler:t=>{this.containerTouchMoveHandler(t)},options:{passive:!1}},touchend:{handler:t=>{this.containerTouchEndHandler(t)},options:{passive:!1}},touchcancel:{handler:t=>{this.containerTouchCancelHandler(t)},options:{passive:!1}},wheel:{handler:t=>{this.containerWheelHandler(t)},options:{passive:!1}},click:{handler:t=>{this.containerClickHandler(t)},options:!0},dblclick:{handler:t=>{this.containerDblClickHandler(t)},options:!0},contextmenu:{handler:t=>{this.containerContextMenuHandler(t)},options:!0},selectstart:{handler:t=>{this.containerSelectStartHandler(t)},options:!0},keydown:{handler:t=>{this.containerKeyDownHandler(t)},options:!0}},d.bindEvents(this.containerEvents,this.container),this.columnWidthDrag=new O,this.columnWidthDrag.bind(O.EVENT.DRAG_START,((t,e)=>{this.columnWidthDragStartHandler(t,e)})).bind(O.EVENT.DRAG_MOVE,((t,e)=>{this.columnWidthDragMoveHandler(t,e)})).bind(O.EVENT.DRAG_END,((t,e)=>{this.columnWidthDragEndHandler(t,e)})),this.columnWidthTouch=new W,this.columnWidthTouch.bind(W.EVENT.TOUCH_START,((t,e)=>{this.columnWidthTouchStartHandler(t,e)})).bind(W.EVENT.TOUCH_MOVE,((t,e)=>{this.columnWidthTouchMoveHandler(t,e)})).bind(W.EVENT.TOUCH_END,((t,e)=>{this.columnWidthTouchEndHandler(t,e)})),this.rowDrag=new O,this.rowDrag.bind(O.EVENT.DRAG_START,((t,e)=>{this.rowDragStartHandler(t,e)})).bind(O.EVENT.DRAG_MOVE,((t,e)=>{this.rowDragMoveHandler(t,e)})).bind(O.EVENT.DRAG_END,((t,e)=>{this.rowDragEndHandler(t,e)})),this.rowTouch=new W,this.rowTouch.bind(W.EVENT.TOUCH_START,((t,e)=>{this.rowDragStartHandler(t,e)})).bind(W.EVENT.TOUCH_MOVE,((t,e)=>{this.rowDragMoveHandler(t,e)})).bind(W.EVENT.TOUCH_END,((t,e)=>{this.rowDragEndHandler(t,e)})),this.scrollTouch=new W,this.scrollTouch.bind(W.EVENT.TOUCH_START,((t,e)=>{this.scrollTouchStartHandler(t,e)})).bind(W.EVENT.TOUCH_MOVE,((t,e)=>{this.scrollTouchMoveHandler(t,e)})).bind(W.EVENT.TOUCH_END,((t,e)=>{this.scrollTouchEndHandler(t,e)})).bind(W.EVENT.TOUCH_INERTIA,((t,e)=>{this.scrollTouchInertiaHandler(t,e)}))},isDefaultPrevented:function(t){if(t){if(t.defaultPrevented)return!0;if(t.e&&t.e.defaultPrevented)return!0}return!1},getEventClosestNode:function(t,e){if(t&&t!==this.container)return t.classList.contains(e)?t:this.getEventClosestNode(t.parentNode,e)},getEventClosestData:function(t){if(!t||t===this.container)return;const e=this.getNodeDataCache(t);return e||this.getEventClosestData(t.parentNode)},getEventData:function(t){const e=this.getEventClosestData(t.target);if(e)return e.e=t,e},getWheelDelta:function(t,e,i){let o=t.deltaX,n=t.deltaY;return d.isNum(o)||(o=d.toNum(t.wheelDeltaX)),d.isNum(n)||(n=d.toNum(t.wheelDeltaY||t.wheelDelta)),1===t.deltaMode?(n*=e,o*=e):2===t.deltaMode&&(n*=i,o*=i),{deltaX:o,deltaY:n}},columnResizingMouseDownHandler:function(t){const e=this.getEventData(t);e&&this.columnWidthDrag.start(t,{columnItem:e.columnItem})},columnResizingTouchStartHandler:function(t){const e=this.getEventData(t);e&&this.columnWidthTouch.start(t,{columnItem:e.columnItem})},columnResizingMouseEnterLeaveHandler:function(t,e){const i=this.getEventData(t);i&&(e?this.showColumnLine(i.columnItem):this.hideColumnLine())},rowDragMouseDownHandler:function(t){const e=this.getEventData(t);e&&this.rowDrag.start(t,{rowItem:e.rowItem})},rowDragTouchStartHandler:function(t){const e=this.getEventData(t);e&&(this.protectedItem=e,this.rowTouch.start(t,{rowItem:e.rowItem}))},scrollPaneTouchStartHandler:function(t){if(!this.hasHScroll&&!this.hasVScroll)return;const e=this.getEventData(t);this.protectedItem=e,this.scrollTouch.start(t,{inertia:!0})},sortHandler:function(t,e){const i=e.columnItem;if(!this.isColumnSortable(i))return;const o=this.getEventClosestNode(t.target,"tg-column-name"),n=this.getEventClosestNode(t.target,"tg-column-sort");(o||n)&&(this.trigger(y.onSort,e),this.isDefaultPrevented(e)||this.setSortColumn(i))},selectIconAllClickHandler:function(t){const e=w(t);let i=!1;(e.hasClass("tg-selected")||e.hasClass("tg-mixed"))&&(i=!0),i=!i,this.selectAll(i)},cellEnterLeaveHandler:function(t,e){const i=this.getEventData(t);i&&(e?this.trigger(y.onCellMouseEnter,i):this.trigger(y.onCellMouseLeave,i))},rowEnterLeaveHandler:function(t,e){const i=this.getEventData(t);if(i&&(e?this.trigger(y.onRowMouseEnter,i):this.trigger(y.onRowMouseLeave,i),!this.isDefaultPrevented(i)))return this.renderRowHover(i.rowItem,e),this},containerMouseDownHandler:function(t){if(this.getEventClosestNode(t.target,"tg-column-resizing"))this.columnResizingMouseDownHandler(t);else if(this.options.rowDragVisible){this.getEventClosestNode(t.target,"tg-row-drag-icon")&&this.rowDragMouseDownHandler(t)}},containerMouseMoveHandler:function(t){this.scrollbarFadeInOutHandler(t,!0)},containerMouseOverOutHandler:function(t,e){const i=this.getEventClosestNode(t.target,"tg-cell"),o=this.getEventClosestNode(t.target,"tg-header-item");if(i||o){const i=this.getEventData(t);if(!i)return;e?this.trigger(y.onMouseOver,i):this.trigger(y.onMouseOut,i)}},containerMouseEnterLeaveHandler:function(t,e){this.scrollbarFadeInOutHandler(t,e);if(w(t.target).hasClass("tg-column-resizing"))return void this.columnResizingMouseEnterLeaveHandler(t,e);if(w(t.target).hasClass("tg-cell"))return void this.cellEnterLeaveHandler(t,e);w(t.target).hasClass("tg-row")&&this.rowEnterLeaveHandler(t,e)},containerTouchStartHandler:function(t){this.scrollTouch.motionStop();if(this.getEventClosestNode(t.target,"tg-column-resizing"))return void this.columnResizingTouchStartHandler(t);if(this.options.rowDragVisible){if(this.getEventClosestNode(t.target,"tg-row-drag-icon"))return void this.rowDragTouchStartHandler(t)}const e=this.getEventData(t);e&&(this.trigger(y.onTouchStart,e),this.isDefaultPrevented(e))||this.scrollPaneTouchStartHandler(t)},containerTouchMoveHandler:function(t){const e=this.getEventData(t);e&&this.trigger(y.onTouchMove,e)},containerTouchEndHandler:function(t){const e=this.getEventData(t);e&&this.trigger(y.onTouchEnd,e)},containerTouchCancelHandler:function(t){this.trigger(y.onTouchEnd,{e:t})},containerWheelHandler:function(t){if(this.hasMask)return;const e=this.getRowHeight(),i=this.bodyHeight,o=this.getWheelDelta(t,e,i),n={e:t,deltaX:o.deltaX,deltaY:o.deltaY,delta:o};if(this.trigger(y.onMouseWheel,n),this.isDefaultPrevented(n))return;let s=!1;this.scrollPaneHidden&&(s=this.scrollPaneFrozen.setOffsetH(o.deltaX),o.deltaX=0);(this.scrollPane.mouseWheelHandler(o)||s)&&d.preventDefault(t)},containerClickHandler:function(t){if(this.getEventClosestNode(t.target,"tg-tree-icon-all"))return void this.toggleAllRows();const e=this.getEventClosestNode(t.target,"tg-select-icon-all");if(e)return void this.selectIconAllClickHandler(e);const i=this.getEventData(t);if(!i)return;if(this.getEventClosestNode(t.target,"tg-header-item")){if(this.trigger(y.onClick,i),this.isDefaultPrevented(i))return;return void this.sortHandler(t,i)}if(this.getEventClosestNode(t.target,"tg-tree-icon"))return void this.toggleRow(i.rowItem);this.getEventClosestNode(t.target,"tg-select-icon")?this.setRowSelected(i.rowItem,t):this.trigger(y.onClick,i)},containerDblClickHandler:function(t){const e=this.getEventData(t)||{e:t};this.trigger(y.onDblClick,e)},containerContextMenuHandler:function(t){const e=this.getEventData(t)||{e:t};this.trigger(y.onContextMenu,e)},containerSelectStartHandler:function(t){if(this.options.textSelectable)return;w(t.target).is("input,textarea,code")||d.preventDefault(t)},containerKeyDownHandler:function(t){if(this.hasMask)return;const e={e:t};if(this.trigger(y.onKeyDown,e),this.isDefaultPrevented(e))return;const i=t.keyCode,o={9:this.keyTabHandler,13:this.keyEnterHandler,27:this.keyEscHandler,33:this.keyPageUpHandler,34:this.keyPageDownHandler,35:this.keyEndHandler,36:this.keyHomeHandler,37:this.keyLeftHandler,38:this.keyUpHandler,39:this.keyRightHandler,40:this.keyDownHandler}[i];if(!o)return;o.call(this,t)&&d.preventDefault(t)},unbindEvents:function(){d.unbindEvents(this.containerEvents),this.containerEvents=null,this.columnWidthDrag&&(this.columnWidthDrag.destroy(),this.columnWidthDrag=null),this.columnWidthTouch&&(this.columnWidthTouch.destroy(),this.columnWidthTouch=null),this.rowDrag&&(this.rowDrag.destroy(),this.rowDrag=null),this.rowTouch&&(this.rowTouch.destroy(),this.rowTouch=null),this.scrollTouch&&(this.scrollTouch.destroy(),this.scrollTouch=null),this.protectedItem=null}},G={exportData:function(t){const e=this.getData();return{columns:this.getTreeSnapshot(e.columns,t),rows:this.getTreeSnapshot(e.rows,t)}},isItemExportable:function(t){return!!t&&(!d.hasOwn(t,"exportable")||Boolean(t.exportable))},getTreeSnapshot:function(t,e){const i=(t,o)=>{d.isList(o)&&o.forEach((o=>{if(!this.isItemExportable(o))return;const n=this.getItemSnapshot(o,e),s=o.subs;Array.isArray(s)&&(n.subs=[],i(n.subs,s)),t.push(n)}))},o=[];return i(o,t),o},getItemSnapshot:function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i={};return Object.keys(t).forEach((o=>{!0!==e[o]?!1!==e[o]&&"subs"!==o&&0!==o.indexOf("tg_")&&(i[o]=t[o]):i[o]=t[o]})),i}},j={flushRow:function(t){d.toList(t).forEach((t=>{this.deleteRowCache(t)}))},flushRowFrom:function(t){d.isNum(t)&&(0!==t?this.forEachRowsCache((e=>{e>=t&&this.deleteRowCache(e)})):this.flushBody())},flushBody:function(){this.forEachRowsCache((t=>{this.deleteRowCache(t)}))},flushSort:function(){this.frozenInfo.rows?this.flushRowFrom(this.frozenInfo.rows):this.flushBody()},flushColumn:function(t){const e=d.toList(t);this.forEachRowsCache(((t,i,o,n)=>{e.forEach((t=>{this.deleteCellCache(t,o,n)}))}))},flushColumnFrom:function(t){d.isNum(t)&&this.forEachRowsCache(((e,i,o,n)=>{o.forEach(((e,i)=>{i>=t&&this.deleteCellCache(i,o,n)}))}))},flushCell:function(t,e){const i=d.toList(t),o=d.toList(e);i.forEach((t=>{const e=this.getRowCache(t);if(!e)return;const i=e.cellNodes,n=e.observerNodes;o.forEach((t=>{this.deleteCellCache(t,i,n)}))}))},flushWithViewport:function(){const{rows:t,columns:e}=this.viewport;this.forEachRowsCache(((i,o,n,s)=>{t.includes(i)?n.forEach(((t,i)=>{e.includes(i)||this.deleteCellCache(i,n,s)})):this.deleteRowCache(i)}))}},U={"sort-h":'\n\n \n \n \n \n\n',"sort-v":'\n\n \n \n \n \n\n',checkbox:'\n\n \n \n \n\n',radio:'
',drag:'\n\n \n\n',tree:'\n\n \n \n\n'},X={icons:U,getIcon:function(t){let e=U[t];return e=String(e).trim(),e}},Y={header:function(t,e,i,o){return t},null:function(t,e,i,o){return e&&e.tg_group?t:null==t?"—":t},blank:function(t,e,i,o){return""},string:function(t,e,i,o){return t},number:function(t,e,i,o){return t},icon:function(t,e,i,o){return`${t}`},select:function(t,e,i,o){return this.isRowSelectable(e)?this.getSelectFormatterContent(e):""},rowDrag:function(t,e,i,o){return this.getRowDragFormatterContent(e)},rowNumber:function(t,e,i,o){return e.tg_row_number||""},tree:function(t,e,i,o){return this.getTreeFormatterContent(t,e)}},K={setFormatter:function(t,e){this.renderType="all";let i=t;if("string"==typeof t){if(this.formatters)return this.formatters[t]=e,this;i={},i[t]=e}return this.customFormatters=i,this},getFormatter:function(t){if(!t)return;const e=this.formatters[t];return"function"==typeof e?e.bind(this):void 0},getDefaultFormatter:function(t){return(Y[t]||Y.string).bind(this)},getSelectFormatterContent:function(t){let e="radio";this.options.selectMultiple&&(e="checkbox");const i=X.getIcon(e);return`
${i}
`},getRowDragFormatterContent:function(t){if(t.tg_frozen)return"";return`
${X.getIcon("drag")}
`},getTreeIndentWidth:function(t,i,o){if(!t)return 0;let n=5;return i||(n+=e.TREE_INDENT),n+=o*e.TREE_INDENT,n},getTreeFormatterContent:function(t,e){const i=this.rowsInfo.isTree,o=e.tg_group,n=this.isEmptyGroup(e);n&&(e.collapsed=!0);const s=e.collapsed,r=d.toNum(e.tg_level),l=this.getTreeIndentWidth(i,o,r),h=[];if(h.push(`
`),o){const t={"tg-tree-icon":!0,"tg-tree-icon-collapsed":s,"tg-tree-icon-expanded":!s,"tg-tree-icon-empty":n},e=X.getIcon("tree"),i=`
${e}
`;h.push(i)}return h.push(`
${t}
`),h.push("
"),h.join("")}},q={renderHeaderTables:function(){this.clearHeaderCache();const t=this.viewColumns,e=this.frozenInfo.columns;this.hasTreeColumn=!1,this.hasSortColumn=!1;let i=[],o=[];for(let n=0,s=t.length;n=e?o.push(s):i.push(s)}if(this.frozenInfo.right){const t=i;i=o,o=t}this.renderHeaderTable(i,this.$headerL),this.renderHeaderTable(o,this.$headerR)},renderHeaderTable:function(t,e){const i=document.createElement("div"),o=["tg-header-table"];this.hasSortColumn&&(o.push("tg-header-sortable"),o.push(`tg-header-sort-${this.options.sortIndicator}`)),i.className=d.classMap(o);const n=t.length;if(n){let e=t[n-1];e&&"tg-column-blank"===e.id&&(e=t[n-2]),t.forEach((t=>{this.renderHeaderItem(t,i,e)}))}e.append(i)},renderHeaderItem:function(t,e,i){const o=t.tg_view_index;if(this.getHeaderCache(o))return;const n=this.getHeaderItemClass(t,i),s=d.styleMap(t.headerStyleMap),r={column:o,class:n,data:t.id};s&&(r.style=s);const l=[this.createColumnHeader(t)];if(this.isColumnResizable(t)){const e=this.createColumnResizing(t);l.push(e)}const h=this.createElement("div",r,l);e.appendChild(h),this.setHeaderCache(o,h),this.setNodeDataCache(h,{rowItem:this.headerRowItem,column:o,columnItem:t,headerNode:h}),t.tg_parent&&this.renderHeaderItem(t.tg_parent,e)},createColumnHeader:function(t){const e={class:this.getHeaderClass(t),style:this.getHeaderStyle(t)},i=[this.createColumnName(t)];if(this.hasSortColumn&&!t.tg_group){const e=this.createColumnSort(t);i.push(e)}return this.createElement("div",e,i)},createColumnName:function(t){const e=["tg-column-name"];t.tg_group&&e.push("tg-header-group-name");const i={class:e.join(" ")};let o=t.name;const n=t.tg_headerFormatter;return"function"==typeof n&&(o=n.call(this,o,this.headerRowItem,t)),"tree"===t.formatter?o=this.createHeaderTreeName(o):t===this.selectColumn&&this.isSelectAllVisible()&&(o=this.createHeaderSelectName()),this.createElement("div",i,o)},createHeaderTreeName:function(t){this.hasTreeColumn=!0;const e=[];if(this.options.collapseAllVisible){const t=X.getIcon("tree"),i=this.createElement("div",{class:"tg-tree-icon tg-tree-icon-all"},t);e.push(i)}else{const t=this.createElement("div",{class:"tg-tree-icon"});e.push(t)}const i=this.createElement("div",{class:"tg-tree-name"},t);e.push(i);return this.createElement("div",{class:"tg-tree"},e)},createHeaderSelectName:function(){const t=X.getIcon("checkbox");return this.createElement("div",{class:"tg-select-icon-all tg-checkbox"},t)},createColumnSort:function(t){let e;return this.isColumnSortable(t)&&(e="h"===this.options.sortIndicator?this.createSortIndicatorH(t):this.createSortIndicatorV(t)),this.createElement("div",{class:"tg-column-sort"},e)},createSortIndicatorH:function(t){const e=X.getIcon("sort-h"),i=[this.createElement("div",{class:"tg-sort-indicator-line"}),this.createElement("div",{class:"tg-sort-indicator-icon"},e)];return this.createElement("div",{class:"tg-sort-indicator"},i)},createSortIndicatorV:function(t){const e=X.getIcon("sort-v"),i=[this.createElement("div",{class:"tg-sort-indicator-icon"},e)];return this.createElement("div",{class:"tg-sort-indicator"},i)},createColumnResizing:function(){return this.createElement("div",{class:"tg-column-resizing"})},getHeaderItemClass:function(t,e){const i=["tg-header-item"];return t.tg_group&&i.push("tg-header-group-item"),t===e&&i.push("tg-header-column-last"),i.push(`tg-c-${t.tg_view_index}`),i.push(`tg-h-${t.tg_layer}`),t.tg_combination&&i.push(`tg-h-${t.tg_combination}`),i.push(d.classMap(t.headerClassMap)),d.classMap(i)},getHeaderClass:function(t){const e=["tg-column-header"];return"tree"===t.formatter&&(e.push("tg-tree-header"),this.rowsInfo.isTree&&e.push("tg-tree-header-indent")),this.isColumnSortable(t)&&e.push(`tg-column-sortable tg-column-sort-${this.options.sortIndicator}`),t.align&&e.push(`tg-align-${t.align}`),e.join(" ")},getHeaderStyle:function(t){const e=[d.styleMap(t.headerStyleMap)],i=t.tg_width;return this.isInvisible(t)||i<=0?e.push("display:none;"):e.push(`width:${i}px;`),e.join("")}},J={renderHeader:function(){this.cssRulesInvalid=!0,this.$headerL.empty(),this.$headerR.empty(),this.resetCssDisplay(),this.renderHeaderTables(),this.renderHeaderSort(),this.headerCreated=!0,this.trigger(y.onHeaderUpdated,{node:this.$headerFrame.get(0)})},initHeaderLayerHeight:function(){this.updateScrollPaneHiddenState(),this.resetCssDisplay(),this.viewAllColumns.forEach((t=>{this.updateColumnHeaderHeight(t)})),this.resetCssDisplay("none"),this.updateHeaderLayerHeight()},updateHeaderLayerHeight:function(){const t={},e=this.columnsInfo.maxLevel;for(let i=0;i<=e;i++)t[i]=0;const i=[];this.viewAllColumns.forEach((function(e){if(e.tg_combination)i.push(e);else{const i=e.tg_height,o=e.tg_layer;t[o]=Math.max(t[o],i)}})),i.forEach((function(e){let i=e.tg_height;const o=e.tg_combination.split(""),n=o.pop();o.forEach((function(e){i-=t[e]||0})),t[n]=Math.max(t[n],i)}));const o=JSON.stringify(t);this.previousHeaderLayerHeight!==o&&(this.previousHeaderLayerHeight=o,this.headerLayerHeight=t,this.cssRulesInvalid=!0)}};var Q=i(915);const Z={create:function(t){this.id=d.uid(4,"tg-"),d.isObject(t)||(t={container:t}),this.constructorOptions=t,this.createCache(),this.createView(t.container)},createView:function(t){this.createHolder(t),this.$holder?(this.createGlobalStyle(),this.createContainer()):console.error("ERROR: Grid requires a container")},createHolder:function(t){const e=w(t);if(!e.length)return;this.$holder=e,this.$holder.empty(),this.holder=this.$holder.get(0);const i=this.holder.getRootNode();this.shadowRoot=null,i&&i.host&&(this.shadowRoot=i)},createGlobalStyle:function(){const t=this.shadowRoot||document.head;if(t.querySelector(`style[context="${e.ID}"]`))return;const i=document.createElement("style");i.setAttribute("context",e.ID),i.innerHTML=Q.A.toString(),t.appendChild(i)},createContainer:function(){return this.$container=w('
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n').appendTo(this.$holder),this.$container.attr("id",this.id),this.$container.addClass(`${e.NS} ${this.id}`),this.container=this.$container.get(0),d.setInstance(this.container,this),this.$headerFrame=this.$container.find(".tg-header-frame"),this.$paneHL=this.$headerFrame.find(".tg-pane-header-left"),this.$paneHR=this.$headerFrame.find(".tg-pane-header-right"),this.$headerL=this.$paneHL.find(".tg-header-left"),this.$headerR=this.$paneHR.find(".tg-header-right"),this.$header=w().add(this.$headerL).add(this.$headerR),this.$bodyFrame=this.$container.find(".tg-body-frame"),this.$paneTL=this.$bodyFrame.find(".tg-pane-top-left"),this.$paneTR=this.$bodyFrame.find(".tg-pane-top-right"),this.$paneBL=this.$bodyFrame.find(".tg-pane-bottom-left"),this.$paneBR=this.$bodyFrame.find(".tg-pane-bottom-right"),this.$bodyTL=this.$paneTL.find(".tg-body-top-left"),this.$bodyTR=this.$paneTR.find(".tg-body-top-right"),this.$bodyBL=this.$paneBL.find(".tg-body-bottom-left"),this.$bodyBR=this.$paneBR.find(".tg-body-bottom-right"),this.$body=w().add(this.$bodyTL).add(this.$bodyTR).add(this.$bodyBL).add(this.$bodyBR),this.$columnLineContainer=this.$container.find(".tg-column-line"),this.$columnLineItem=this.$columnLineContainer.find(".tg-column-line-item"),this.$columnLineItemL=this.$columnLineContainer.find(".tg-column-line-l"),this.$columnLineItemR=this.$columnLineContainer.find(".tg-column-line-r"),this}},tt={initColumnsHandler:function(){this.columns=this.data.columns,this.columns.forEach(((t,e)=>{t&&"object"==typeof t||(this.columns[e]={})}));const t=this.getPrivateColumns();this.columnsInfo=this.initTreeInfo(t,this.frozenInfo.column);const e=[],i=[],o=(t,n)=>{if(!d.isList(t))return;let s,r=0;t.forEach((t=>{if(!this.isInvisible(t))if(t.tg_group){if(this.isEmptyGroup(t))return;i.push(t),o(t.subs,t)}else t.tg_list_index=r,r+=1,t.tg_list_last=!1,s=t,e.push(t)})),s&&(s.tg_list_last=!0)};o(t),e.forEach((t=>{this.initColumnItemHandler(t)})),i.forEach((t=>{this.initColumnGroupHandler(t)}));const n=[].concat(e).concat(i);this.initViewList(n,((t,e)=>{})),this.viewColumns=e,this.viewGroupColumns=i,this.viewAllColumns=n,this.initHeaderHandler(t),this.initSortColumn()},getPrivateColumns:function(){const t=this.options;this.selectColumn=t.selectColumn,this.rowDragColumn=t.rowDragColumn,this.rowNumberColumn=t.rowNumberColumn,this.blankColumn=t.blankColumn;let e=[];const i=()=>{t.selectVisible&&e.push(this.selectColumn),t.rowDragVisible&&e.push(this.rowDragColumn),t.rowNumberVisible&&(this.rowNumberColumn.width=t.rowNumberWidth,e.push(this.rowNumberColumn))};if(this.frozenInfo.right){const t=this.frozenInfo.column;this.columns.forEach(((o,n)=>{e.push(o),n===t&&i()}))}else i(),e=e.concat(this.columns);return e.push(this.blankColumn),e},setColumns:function(t){this.data.columns=d.toList(t),this.rerender()},getColumns:function(){return this.columns},getViewColumns:function(t){return t?this.viewAllColumns:this.viewColumns},initColumnItemHandler:function(t){this.initColumnProps(t),this.initColumnFormatter(t),this.initColumnWidth(t)},initColumnGroupHandler:function(t){this.initColumnFormatterByName(t,"headerFormatter","header")},initColumnProps:function(t){const e=this.options.columnTypes;if(!d.hasOwn(t,"type")){const i=e[t.id];"string"==typeof i&&(t.type=i)}let i=this.options.columnProps;const o=e[t.type];o&&"object"==typeof o&&(i=d.merge(i,o));for(const e in i)d.hasOwn(t,e)||(t[e]=i[e])},initColumnFormatter:function(t){this.initColumnFormatterByName(t,"headerFormatter","header");let e=t.type;const i=t.formatter;"string"==typeof i&&(e=i),this.initColumnFormatterByName(t,"formatter",e)},initColumnFormatterByName:function(t,e,i){let o=t[e];"function"!=typeof o?(o=this.getFormatter(i),t[`tg_${e}`]=o||this.getFormatter("string")):t[`tg_${e}`]=o.bind(this)},initColumnWidth:function(t){if(t!==this.blankColumn)return d.isNum(t.width)&&t.width>=0?(t.tg_width=t.width,t.minWidth=Math.min(t.minWidth,t.tg_width),void(t.maxWidth=Math.max(t.maxWidth,t.tg_width))):void this.initColumnWidthByName(t);t.tg_width=0},initColumnWidthByName:function(t){const e=this.getComputedColumnWidth(t);d.isNum(e)&&(t.tg_width=e)},getComputedColumnWidth:function(t){const e=t.name||"",i=d.getCharLen(e);let o=Math.round(10*i);return o>103&&(o=Math.max(103,Math.round(10*i/2)),o>133&&(o=Math.max(133,Math.round(10*i/3)),o>163&&(o=Math.max(163,Math.round(10*i/4))))),d.clamp(o,t.minWidth,t.maxWidth)},initSortColumn:function(){this.sortColumn=null;const t=this.options,e=t.sortField;if(!e)return;const i=this.getColumnItemById(e);return i&&this.isColumnSortable(i)?(d.hasOwn(i,"sortAsc")||(i.sortAsc=t.sortAsc),this.sortColumn=i,this):void 0}},et={initHeaderHandler:function(t){this.initHeaderRowItem(),this.viewGroupColumns.reverse(),this.initGroupColumnsWidth(),this.initGroupColumnsLayer(t)},initHeaderRowItem:function(){this.headerRowItem={tg_index:-1,tg_view_index:-1},this.viewAllColumns.forEach((t=>{d.hasOwn(t,"id")&&(this.headerRowItem[t.id]=t.name)}))},initGroupColumnsWidth:function(){this.viewGroupColumns.forEach((t=>{let e=0;t.subs.forEach((t=>{this.isInvisible(t)||(e+=t.tg_width)})),t.tg_width=e}))},initGroupColumnsLayer:function(t){const e=this.columnsInfo.maxLevel;this.viewColumns.forEach((function(t){t.tg_layer=e,t.tg_parent&&(t.tg_parent.tg_layer=e-1)})),this.viewGroupColumns.forEach((function(t){const e=t.tg_layer,i=t.tg_parent;if(i){let t=e-1;d.isNum(i.tg_layer)&&(t=Math.min(t,i.tg_layer)),i.tg_layer=t}})),this.initColumnRowspanHandler(t,0)},initColumnRowspanHandler:function(t,e){t.forEach((t=>{const i=this.initColumnCombinationHandler(t,e);t.tg_group&&this.initColumnRowspanHandler(t.subs,e+i)}))},initColumnCombinationHandler:function(t,e){const i=[],o=t.tg_layer;for(;e<=o;)i.push(e),e+=1;i.reverse();const n=i.length;let s="";return n>1&&(s=i.join("")),t.tg_combination=s,n}},it={},ot={name:"",minWidth:81,maxWidth:300},nt=function(t){return null==t},st=function(t,e){const i=nt(t),o=nt(e);return i&&o?0:i?1:o?-1:void 0},rt=function(t,e){return t.tg_index>e.tg_index?1:-1},lt=function(t,e){return rt(t,e)},ht=function(t,e){if("string"==typeof t&&"string"==typeof e){const i=t.toUpperCase(),o=e.toUpperCase();if(i!==o)return i>o?-1:1}return t>e?-1:1},at=function(t,e,i,o){return t?-1:e?1:ht(i,o)},ct=function(t,e){const i="number"==typeof t,o="number"==typeof e;return i&&o?t>e?-1:1:at(i,o,t,e)},dt=function(t,e){const i=new Date(t),o=new Date(e),n=d.isDate(i),s=d.isDate(o);if(n&&s){const t=i.getTime(),e=o.getTime();if(t===e)return;return t>e?-1:1}return at(n,s,t,e)},ut=function(t,e){const i="boolean"==typeof t,o="boolean"==typeof e;return i&&o?t>e?-1:1:at(i,o,t,e)},gt=function(t,e,i,o){const n=t[i.sortField],s=e[i.sortField],r=st(n,s);if("number"==typeof r)return 0===r?lt(t,e):i.sortBlankFactor*r;if(n!==s&&"function"==typeof o){const t=o(n,s);if(d.isNum(t))return i.sortFactor*t}return lt(t,e)},ft={blankValue:st,equal:lt,index:rt,value:gt,diffType:at,string:function(t,e,i){return gt(t,e,i,ht)},stringValue:ht,number:function(t,e,i){return gt(t,e,i,ct)},numberValue:ct,date:function(t,e,i){return gt(t,e,i,dt)},dateValue:dt,boolean:function(t,e,i){return gt(t,e,i,ut)},booleanValue:ut};const pt={initOptionsHandler:function(){return this.options=this.generateOptions(),this.initOptionsFormatters(),this.initOptionsSort(),this.initOptionsFrozen(),this.initOptionsScrollbar(),this.initOptionsContainer(),this.initBindWindowResize(),this.initBindContainerResize(),this},generateOptions(){const t={className:e.NS,theme:e.ID,headerVisible:!0,rowHeight:32,rowFilter:null,rowFilteredSort:null,rowNotFound:"",rowMoveCrossLevel:!0,rowCacheLength:0,rowProps:it,columnTypes:{tree:{type:"tree",formatter:"tree",width:230,minWidth:120,maxWidth:810},number:{type:"number",align:"right"},date:{type:"date",align:"right"},name:"tree"},columnCacheLength:0,columnProps:ot,collapseAllOnInit:null,collapseAllVisible:!0,selectAllOnInit:null,selectVisible:!1,selectAllVisible:!0,selectMultiple:!0,selectColumn:{private:!0,id:"tg-column-select",name:"",formatter:"select",headerClassMap:"tg-header-select",classMap:"tg-cell-select",width:36,align:"center",resizable:!1,sortable:!1,exportable:!1},rowDragCrossLevel:!0,rowDragVisible:!1,rowDragColumn:{private:!0,id:"tg-column-row-drag",name:"",formatter:"rowDrag",headerClassMap:"tg-header-row-drag",classMap:"tg-cell-row-drag",align:"center",width:36,resizable:!1,sortable:!1,exportable:!1},rowNumberWidth:36,rowNumberFilter:null,rowNumberVisible:!1,rowNumberColumn:{private:!0,id:"tg-column-row-number",name:"",formatter:"rowNumber",headerClassMap:"tg-header-row-number",classMap:"tg-cell-row-number",align:"center",maxWidth:100,sortable:!1,exportable:!1},blankColumn:{private:!0,id:"tg-column-blank",name:"",formatter:"blank",headerClassMap:"tg-header-blank",classMap:"tg-cell-blank",width:0,minWidth:0,maxWidth:4096,resizable:!1,sortable:!1,exportable:!1},sortField:"",sortAsc:!0,sortBlankValueBottom:!0,sortComparers:ft,sortOnInit:!1,sortIndicator:"h",highlightKeywords:{textKey:"tg_text_",textGenerator:null,highlightKey:"tg_highlight_",highlightPre:"",highlightPost:""},frozenRow:-1,frozenRowMax:10,frozenRowHoverable:!1,frozenBottom:!1,frozenColumn:-1,frozenColumnMax:10,frozenRight:!1,scrollbarSize:12,scrollbarSizeH:null,scrollbarSizeV:null,scrollbarRound:!1,scrollbarFade:!1,scrollbarFadeTimeout:1e3,scrollbarType:"auto",scrollPaneMinWidth:30,scrollPaneGradient:30,autoHeight:!1,textSelectable:!1,bindWindowResize:!1,bindContainerResize:!1,cellResizeObserver:null},i=this.generateThemeOptions();return d.merge(t,i,this.constructorOptions,this.customOptions,this.dataOptions)},generateThemeOptions(){const t=this.pickOptions("theme").pop();if(t)return this.getThemeOptions(t)},pickOptions(t){return[this.constructorOptions,this.customOptions,this.dataOptions].map((e=>e&&e[t])).filter((t=>t))},initOptionsFormatters(){let t;const e=this.pickOptions("formatters");e.length&&(t=d.merge.apply(null,e)),this.formatters=d.merge(Y,t,this.customFormatters),this.nullFormatter=this.getFormatter("null")},initOptionsSort(){"v"!==this.options.sortIndicator&&(this.options.sortIndicator="h")},initOptionsFrozen:function(){const t=this.options;this.frozenInfo={column:-1,row:-1,columns:0,rows:0,bottom:Boolean(t.frozenBottom),right:Boolean(t.frozenRight)};let e=d.toNum(t.frozenColumn,!0);e=d.clamp(e,-1,t.frozenColumnMax),e>-1&&!this.frozenInfo.right&&(t.selectVisible&&(e+=1),t.rowDragVisible&&(e+=1),t.rowNumberVisible&&(e+=1)),this.frozenInfo.column=e,e>-1?this.frozenInfo.columns=e+1:(this.frozenInfo.columns=0,this.frozenInfo.right=!1);let i=d.toNum(t.frozenRow,!0);i=d.clamp(i,-1,t.frozenRowMax),this.frozenInfo.row=i,i>-1?this.frozenInfo.rows=i+1:(this.frozenInfo.rows=0,this.frozenInfo.bottom=!1)},initOptionsScrollbar:function(){const t=this.options;("auto"===t.scrollbarType&&d.isTouchDevice()||["touch","mobile"].includes(t.scrollbarType))&&(t.scrollbarFade=!0,t.scrollbarSize=6,t.scrollbarRound=!0);const e=d.toNum(t.scrollbarSize);this.scrollbarSizeH=e,d.isNum(t.scrollbarSizeH)&&(this.scrollbarSizeH=t.scrollbarSizeH),this.scrollbarSizeV=e,d.isNum(t.scrollbarSizeV)&&(this.scrollbarSizeV=t.scrollbarSizeV)},initOptionsContainer:function(){this.$container.attr("id",this.id);const t=this.options;this.$container.removeClass();const i=[e.NS,this.id,`tg-${t.theme}`,t.className];t.textSelectable||i.push("tg-text-unselectable"),d.isTouchDevice()&&i.push("tg-touch-device"),this.$container.addClass(d.classMap(i))},setTextSelectable:function(t){this.options.textSelectable&&(t?this.$container.removeClass("tg-text-unselectable"):this.$container.addClass("tg-text-unselectable"))}},mt={initBindWindowResize:function(){this.unbindWindowResize(),this.options.bindWindowResize&&(this.windowResizeEvents={resize:{handler:t=>{this.resize()}}},d.bindEvents(this.windowResizeEvents,window))},unbindWindowResize:function(){d.unbindEvents(this.windowResizeEvents)},createResizeObserver:function(t){if("undefined"==typeof ResizeObserver)return console.error("ERROR: This browser does not support ResizeObserver"),{observe:()=>{},unobserve:()=>{},disconnect:()=>{}};return new ResizeObserver((e=>{t.call(this,e)}))},initBindContainerResize:function(){this.unbindContainerResize(),this.options.bindContainerResize&&this.holder&&(this.resizeObserver=this.createResizeObserver((t=>{Boolean(this.holder.offsetWidth||this.holder.offsetHeight||this.holder.getClientRects().length)&&this.resize()})),this.resizeObserver.observe(this.holder))},unbindContainerResize:function(){this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null)}},bt={initRowsHandler:function(){this.rows=this.data.rows,this.rowsInfo=this.initTreeInfo(this.rows,this.frozenInfo.row)},getRows:function(){return this.rows},getViewRows:function(){return this.viewRows},createViewRows:function(){this.initRowFilterHandler();const t=[],e=this.getRowNumberFilter();let i=1;const o=(t,o)=>{if(e.call(this,t,o))return t.tg_row_number=i,void(i+=1);t.tg_row_number=""},n=(e,i,s)=>{if(!d.isList(e))return;let r,l=0;e.forEach((e=>{if(this.isInvisible(e))return;e.tg_list_index=l,l+=1,e.tg_list_last=!1,r=e,this.gridRowItemHandler(e),o(e,l),s||t.push(e);const i=s||e.tg_group&&e.collapsed;n(e.subs,e,i)})),r&&(r.tg_list_last=!0)};n(this.rows);let s,r=0;return this.initViewList(t,((t,e)=>{t.tg_top=r,r+=this.getRowHeight(t),t.tg_group_line=!1,t.collapsed&&(t.tg_group_line=!0),s&&(t.tg_group||t.tg_level{if(e.tg_invisible)return;const n=!t.call(this,e,i,o);if(e.tg_filtered=n,!n){let t=e;for(;t.tg_parent;)t.tg_parent.tg_filtered=!1,t=t.tg_parent}})),this.sortColumn)return;let e=this.options.rowFilteredSort;if("function"==typeof e&&(e=e.call(this)),!e)return;"string"==typeof e&&(e={sortField:e,sortAsc:this.options.sortAsc});const i=e.sortField||e.id;i&&this.sortRows(i,e)},highlightKeywordsFilter:function(t,e,i){const{textKey:o,textGenerator:n,highlightKey:s}=this.options.highlightKeywords;if(e.forEach((e=>{t[`${s}${e}`]=null})),!i)return!0;const r=`${i}`.trim().toLowerCase().split(/\s+/g).filter((t=>t));if(!r.length)return!0;let l=!1;const h=(e,i)=>(/<\/?[a-z][\s\S]*>/i.test(e)&&(e=((e,i)=>{const n=`${o}${i}`,s=t[n];if(s)return s;const r=document.createElement("div");r.innerHTML=e;const l=r.innerText;return t[n]=l,l})(e,i)),(t=>{const e=t.toLowerCase();let i=0;for(const t of r){const o=e.indexOf(t,i);if(-1===o)return;i=o+t.length}return!0})(e));let a=function(t,e){return t[e]};return"function"==typeof n&&(a=n),e.forEach((e=>{const i=a(t,e);if(null==i)return;const o=`${i}`.trim();if(!o)return;const n=h(o,e);n&&(t[`${s}${e}`]=n,l=!0,this.highlightKeywords=r)})),l},highlightKeywordsHandler:function(){const{highlightCells:t}=this.renderSettings;if(!t.length)return;const e=this.highlightKeywords;e&&(this.asyncHighlightKeywords||(this.asyncHighlightKeywords=d.debounce(this.highlightKeywordsSync,10)),this.asyncHighlightKeywords.apply(this,[t,e]))},highlightKeywordsSync:function(t,e){t.forEach((t=>{const i=Array.from(t.querySelectorAll("svg")).concat(Array.from(t.querySelectorAll("textarea"))),o=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,(t=>{if(i.length)for(const e of i)if(e.contains(t))return NodeFilter.FILTER_SKIP;return NodeFilter.FILTER_ACCEPT})),n=[];let s=o.nextNode();for(;s;)n.push(s),s=o.nextNode();n.length&&this.highlightTextNodes(n,e)}))},highlightTextNodes:function(t,e){const{highlightPre:i,highlightPost:o}=this.options.highlightKeywords;let n=0;const s=()=>(n>=e.length&&(n=0),e[n++]);let r=s();t.forEach((t=>{const e=t.textContent,n=e.toLowerCase(),l=[];let h=0;const a=e.length;let c=!1;for(;h{if(e.selected){if(t)return void(e.selected=!1);t=e}}))}const t=this.options.selectAllOnInit;!0!==t?!1===t&&this.updateAllRowsSelected(!1):this.updateAllRowsSelected(!0)},updateAllRowsSelected:function(t){this.forEachSelectableRow((e=>{e.selected=t}))},initCollapseAllOnInitHandler:function(){const t=this.options.collapseAllOnInit;!0!==t?!1===t&&this.updateAllRowsCollapsed(!1):this.updateAllRowsCollapsed(!0)},getToBeAddedItemList:function(t){const e=[];return d.toList(t).forEach((t=>{t&&"object"==typeof t?e.push(t):void 0!==t&&e.push({name:t})})),e},getToBeAddedParentSubs:function(t,e){return t?(t.subs||(t.subs=[]),t.subs):e},getToBeAddedPositionIndex:function(t,e){const i=e.length;return d.isNum(t)&&t>=0&&t<=i?Math.round(t):i},generateDataSnapshot:function(t){if(!t||"object"!=typeof t)return t;const e=this.cleanTreeList(t.rows),i=this.cleanTreeList(t.columns);return this.convertNumberType(e,i),t.rows=e,t.columns=i,t},cleanTreeList:function(t){if(!d.isList(t))return[];const e=(t,i)=>{i.forEach((i=>{if(!i||"object"!=typeof i)return void t.push({});const o=this.getItemSnapshot(i),n=i.subs;Array.isArray(n)&&(o.subs=[],e(o.subs,n)),t.push(o)}))},i=[];return e(i,t),i},convertNumberType:function(t,e){const i=[];d.forEachTree(e,(function(t){"number"===t.type&&t.id&&i.push(t.id)})),i.length&&d.forEachTree(t,(function(t){i.forEach((function(e){t[e]=d.convertNum(t[e])}))}))}},vt={setDefaultLoading:function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!t)return;const i=t.style;e.size&&(i.width=e.size,i.height=e.size),e.color&&(i.color=e.color),e.size||e.color||t.removeAttribute("style"),e.fast?t.classList.add("tg-loading-fast"):t.classList.remove("tg-loading-fast")},getDefaultLoading:function(t){return this.setDefaultLoading(this.$defaultLoading,t),this.$defaultLoading},getLoadingHolder:function(){return this.$container?this.$container.find(".tg-loading"):w()},setLoading:function(t){if(!this.$container)return this;this.$defaultLoading||(this.$defaultLoading=this.$container.find(".tg-loading-default").get(0));const e=this.getLoadingHolder().get(0);return"function"==typeof t&&(t=t.call(this,e)),d.isObject(t)&&(t=this.getDefaultLoading(t)),t||(t=this.getDefaultLoading()),this.renderNodeContent(e,t),this},showLoading:function(){return this.getLoadingHolder().show(),this},hideLoading:function(){return this.getLoadingHolder().hide(),this}},Ht={showMask:function(t){if(!this.hasMask||t){const e=this.$container.find(".tg-mask"),i=e.get(0);if(t&&i){const e=d.styleMap(t);e&&(i.style.cssText=e)}e.show(),this.hasMask=!0}return this},hideMask:function(){return this.hasMask&&(this.$container.find(".tg-mask").hide(),this.hasMask=!1),this}},Ct={renderNodeContent:function(t,e){if(t){if(e&&e.nodeType)return this.emptyNode(t),void t.appendChild(e);if(Array.isArray(e))return this.emptyNode(t),void e.forEach((e=>{e&&e.nodeType&&t.appendChild(e)}));void 0===e&&(e=""),t.innerHTML=e}},emptyNode:function(t){if(t)for(;t.firstChild;)t.removeChild(t.firstChild)},removeNode:function(t){t&&t.parentNode&&t.parentNode.removeChild(t)},appendNode:function(t,e){t&&e&&t.appendChild(e)},createElement:function(t,e,i){const o=document.createElement(t);e&&Object.keys(e).forEach((function(t){const i=e[t];void 0!==i&&o.setAttribute(t,i)})),d.isArray(i)||(i=[i]);let n="";return i.forEach((function(t){t&&t.nodeType?o.appendChild(t):void 0!==t&&(n+=t)})),n&&(o.innerHTML=n),o},find:function(t,e){return w(e||this.$container).find(t)},getRowNodes:function(t){const e=this.getRowItem(t);if(e)return this.getRowNodesByIndex(e.tg_view_index)},getCellNode:function(t,e){const i=this.getRowItem(t);if(!i)return;const o=this.getColumnItem(e);return o?this.getCellNodeByIndex(i.tg_view_index,o.tg_view_index):void 0},getHeaderItemNode:function(t){const e=this.getColumnItem(t);if(e)return this.getHeaderCache(e.tg_view_index)},getColumnHeaderNode:function(t){const e=this.getHeaderItemNode(t);if(e)return e.querySelector(".tg-column-header")}},yt={render:function(){this.asyncRender||(this.asyncRender=d.microtask(this.renderSync)),this.asyncRender.apply(this,arguments)},renderSync:function(){this.renderStartedTimestamp=Date.now();const t=this.generateRenderSettings.apply(this,arguments);return this.renderSettings=t,"all"===t.type?(this.flushBody(),this.initHandler(),this.renderHeader(),this.updateViewRowsAndSize(),this.renderBody(),this):"columns"===t.type?(this.flushBody(),this.initColumnsHandler(),this.renderHeader(),this.updateViewRowsAndSize(),this.renderBody(),this):"rows"===t.type?(this.updateViewRowsAndSize(),this.renderBody(),this):"rows_cache"===t.type?(this.cssRulesInvalid=!0,this.updateViewRowsAndSize(),this.updateRowCacheTopAndHeight(),this.renderBody(),this):"resize"===t.type?(this.resizeHandler(),this.renderBody(),this):(this.renderBody(),this)},generateRenderSettings:function(t){const e={type:this.renderType,scrollLeft:null,scrollTop:null,scrollColumn:null,scrollRow:null,highlightCells:[]};return"string"==typeof t?e.type=t:t&&Object.assign(e,t),this.headerCreated||(e.type="all"),e},renderBody:function(){this.scrollOnInit(),this.scrollTopOffset=this.scrollPane.getScrollTopOffset();const t=this.getViewport();return this.viewport=t,this.flushWithViewport(),this.previousScrollTopOffset!==this.scrollTopOffset&&(this.previousScrollTopOffset=this.scrollTopOffset,this.updateRowCacheTopOffset()),this.renderRows(t.rows),this.renderCells(t.rows,t.columns),this.renderUpdatedTimestamp=Date.now(),this.renderDuration=this.renderUpdatedTimestamp-this.renderStartedTimestamp,this.trigger(y.onUpdated,t),this.firstUpdated||(this.firstUpdated=!0,this.trigger(y.onFirstUpdated,t)),this.layoutEventHandler(),this.resizeEventHandler(),this.highlightKeywordsHandler(),this.renderSettings=null,this.renderType=null,this},rerender:function(){return this.render("all"),this}},Rt={resize:function(){return this.asyncResize||(this.asyncResize=d.throttle(this.resizeSync,100)),this.asyncResize.apply(this,arguments),this},resizeSync:function(){return this.headerCreated?(this.resizeHolderHandler.apply(this,arguments),this.firstUpdated&&this.isHolderInvisible()||this.render("resize"),this):this},resizeHolderHandler(t,e){if(0!==arguments.length)return 1===arguments.length?t&&"object"==typeof t?void this.$holder.css(t):void this.$holder.css({width:t}):void this.$holder.css({width:t,height:e})},isHolderInvisible(){const t=this.$holder.width(),e=this.$holder.height();return!t||!e},resizeHandler:function(){this.containerWidth=this.$container.width(),this.containerHeight=this.$container.height(),this.headerWidth=this.containerWidth,this.bodyWidth=this.containerWidth,this.updateTotalColumnsWidth(),this.resizeHeaderHandler(),this.resizeBodyHandler()},layoutEventHandler:function(){const t=this.previousLayout||{},e={headerWidth:this.headerWidth,headerHeight:this.headerHeight,bodyWidth:this.bodyWidth,bodyHeight:this.bodyHeight,scrollbarWidth:this.getScrollbarWidth(),scrollbarHeight:this.getScrollbarHeight()};Object.values(e).join("")!==Object.values(t).join("")&&(this.previousLayout=e,this.trigger(y.onLayout,d.merge({previous:t},e)))},resizeEventHandler:function(){const t=this.previousSize||{},e={width:this.containerWidth,height:this.containerHeight};Object.values(e).join("")!==Object.values(t).join("")&&(this.previousSize=e,this.trigger(y.onResize,d.merge({previous:t},e)))},resizeHeaderHandler:function(){this.initHeaderLayerHeight();const t=this.options;t.autoHeight&&this.viewRows.length>5e3&&(t.autoHeight=!1),this.headerHeight=0,t.headerVisible&&(this.containerHeight>0||t.autoHeight)&&this.updateHeaderTableHeight(),this.$headerFrame.css({width:this.headerWidth,height:this.headerHeight})},updateHeaderTableHeight:function(){let t=0;Object.keys(this.headerLayerHeight).forEach((e=>{t+=this.headerLayerHeight[e]}));const e=this.$headerL.find(".tg-header-table"),i=this.$headerR.find(".tg-header-table");e.css({height:t}),i.css({height:t}),this.headerHeight=t},resizeBodyHandler:function(){this.updateScrollState(),this.bodyHeight=this.containerHeight-this.headerHeight,this.$bodyFrame.css({width:this.bodyWidth,height:this.bodyHeight}),this.updatePaneWidth(),this.updatePaneHeight(),this.updateCanvasWidth(),this.updateCanvasHeight(),this.updateScrollPane(),this.updateCssRules()},updatePaneWidth:function(){let t=this.bodyWidth,e=0;if(this.frozenInfo.columns){const i=this.getScrollbarWidth();this.frozenInfo.right?(e=this.columnsWidthR+i,t=this.bodyWidth-e):(t=this.columnsWidthL,e=this.bodyWidth-t),this.scrollPaneHidden&&(this.frozenInfo.right?(t<=0&&(t=0),e=Math.max(0,this.bodyWidth-t)):(e3&&void 0!==arguments[3])||arguments[3];const n=this.getToBeAddedItemList(t);if(!n.length)return!1;let s;if(null!=e&&(s=this.getRowItem(e),!s))return!1;const r=this.getToBeAddedParentSubs(s,this.rows),l=this.getToBeAddedPositionIndex(i,r),h=[l,0].concat(n);r.splice.apply(r,h),this.initRowsHandler(),s?(s.collapsed=!1,this.flushRowFrom(s.tg_view_index+l)):this.flushRowFrom(l),this.onNextUpdated((function(){this.trigger(y.onRowAdded,n)}));const a={type:"rows"};return o&&(a.scrollRow=n[n.length-1]),this.render(a),!0},deleteRow:function(t){const e=d.toList(t),i=[];if(e.forEach((t=>{const e=this.getRowItem(t);e&&i.push(e)})),!i.length)return!1;const o=this.removeRowsHandler(i);this.initRowsHandler();const n=this.getRemovedMinIndex(o);return this.flushRowFrom(n),this.onNextUpdated((function(){this.trigger(y.onRowRemoved,i)})),this.render("rows"),!0},getRemovedMinIndex:function(t){let e=0;const i=t[t.length-1];if(this.isInvisible(i))return e;e=i.tg_view_index,e>0&&(e-=1);let o=i.tg_parent;for(;o;)o.collapsed&&(e=o.tg_view_index),o=o.tg_parent;return e},removeRowsHandler:function(t){const e=[].concat(t);e.sort((function(t,e){return e.tg_index-t.tg_index}));const i=[];return e.forEach((t=>{this.getRowParentSubs(t).splice(t.tg_sub_index,1),i.push(t)})),i}},Tt={renderCollapseAllState:function(){this.hasTreeColumn&&(this.asyncRenderCollapseAllState||(this.asyncRenderCollapseAllState=d.microtask(this.renderCollapseAllStateSync)),this.asyncRenderCollapseAllState.apply(this,arguments))},renderCollapseAllStateSync:function(){const t=this.$header.find(".tg-tree-header");this.rowsInfo.isTree?t.addClass("tg-tree-header-indent"):t.removeClass("tg-tree-header-indent"),this.renderCollapseAllIcon()},checkCollapseAllState:function(t){if(t!==this.allRowsCollapsed){if(t){let t=0;const e=this.rows.length;for(;t{if(e.tg_group&&e.tg_subs_length&&e.collapsed)return t=!0,!1})),t)return}this.allRowsCollapsed=t,this.renderCollapseAllIcon()}},expandAllRows:function(){return this.renderAllRowsCollapsed(!1)},collapseAllRows:function(){return this.renderAllRowsCollapsed(!0)},toggleAllRows:function(){return this.allRowsCollapsed?this.expandAllRows():this.collapseAllRows()},renderAllRowsCollapsed:function(t){const e=this.updateAllRowsCollapsed(t);return e.length?(this.flushBody(),this.onNextUpdated((()=>{this.renderCollapseAllIcon(),t?this.trigger(y.onRowCollapsed,e):this.trigger(y.onRowExpanded,e)})),this.render("rows"),this):this},updateAllRowsCollapsed:function(t){this.allRowsCollapsed=t;const e=[];return this.forEachRow((i=>{i.subs&&i.tg_subs_length&&this.isCollapsedChanged(i,t)&&(i.collapsed=t,e.push(i))})),e},expandRow:function(t){const e=this.getRowItem(t);return e?this.isEmptyGroup(e)?(this.trigger(y.onRowSubsRequest,e),this):this.isCollapsedChanged(e,!1)?(e.collapsed=!1,this.flushRowFrom(e.tg_view_index),this.renderCollapseIcon(e),this.onNextUpdated((()=>{this.checkCollapseAllState(!1),this.trigger(y.onRowExpanded,e)})),this.render("rows"),this):this:this},collapseRow:function(t){const e=this.getRowItem(t);return e&&e.subs&&e.tg_subs_length&&this.isCollapsedChanged(e,!0)?(e.collapsed=!0,this.flushRowFrom(e.tg_view_index),this.renderCollapseIcon(e),this.onNextUpdated((()=>{this.checkCollapseAllState(!0),this.trigger(y.onRowCollapsed,e)})),this.render("rows"),this):this},toggleRow:function(t){const e=this.getRowItem(t);return e?(e.collapsed?this.expandRow(e):this.collapseRow(e),this):this},expandRowLevel:function(t){t=d.toNum(t,!0);const e=[],i=[];return this.forEachRow((o=>{o.subs&&o.tg_subs_length&&(o.tg_level<=t?this.isCollapsedChanged(o,!1)&&(o.collapsed=!1,i.push(o)):this.isCollapsedChanged(o,!0)&&(o.collapsed=!0,e.push(o)))})),e.length||i.length?(this.flushBody(),this.onNextUpdated((()=>{e.length&&this.trigger(y.onRowCollapsed,e),i.length&&this.trigger(y.onRowExpanded,i)})),this.render("rows"),this):this},renderCollapseAllIcon:function(){if(!this.options.collapseAllVisible||!this.hasTreeColumn)return;const t=this.$header.find(".tg-tree-icon-all");this.renderTreeIcon(t,this.allRowsCollapsed)},renderCollapseIcon:function(t){if(!this.headerCreated)return;const e=this.getRowNodesByIndex(t.tg_view_index);if(!e)return;const i=e.find(".tg-tree-icon");this.renderTreeIcon(i,t.collapsed)},renderTreeIcon:function(t,e){t&&(e?t.removeClass("tg-tree-icon-expanded").addClass("tg-tree-icon-collapsed"):t.removeClass("tg-tree-icon-collapsed").addClass("tg-tree-icon-expanded"))}},Et={rowDragStartHandler:function(t,e){this.removeSortColumn();const i=e.rowItem;if(!i)return;const o=this.getRowNodesByIndex(i.tg_view_index);if(!o)return;e.dragCloneNodes=this.getRowDragCloneNodes(o),e.dropPlaceholder=this.getRowDropPlaceholder(o),e.dragStartTop=this.getRowTop(i),e.dragRowHeight=this.getRowHeight(i),e.dragStartScrollTop=this.scrollTop,e.dragMaxScrollTop=this.scrollPane.getMaxScrollTop();const n={e:t,rowItem:i};this.trigger(y.onRowDragged,n),this.isDefaultPrevented(n)||("touch"===e.type&&d.preventDefault(e.e),this.setRowState(i,"dragging"),this.setTextSelectable(!1),this.rowDropListHandler(e),this.updateDragCloneRowPosition(e))},rowDragMoveHandler:function(t,e){"touch"===e.type&&d.preventDefault(e.e),this.updateDragCloneRowPosition(e),this.updateDragPlaceholderPosition(e),this.rowDragAutoScrollHandler(e)},rowDragEndHandler:function(t,e){"touch"===e.type&&(this.protectedItem=null,d.preventDefault(e.e)),this.autoScrollStop(),this.setRowState(e.rowItem,"dragging",!1),this.setTextSelectable(!0),e.dragCloneNodes&&(e.dragCloneNodes.remove(),e.dragCloneNodes=null),e.dropPlaceholder&&(e.dropPlaceholder.remove(),e.dropPlaceholder=null),e.changed&&this.rowDropHandler(e)},updateDragCloneRowPosition:function(t){const e=this.scrollTop-t.dragStartScrollTop,i=t.dragStartTop+t.offsetY+e,o=i-this.scrollTopOffset;t.dragCloneNodes&&t.dragCloneNodes.css("top",o).show(),t.dragCurrentPosition=i+.5*t.dragRowHeight},getRowDragCloneNodes:function(t){const e=w();return t.each((function(t){const i=w(t),o=i.clone();o.appendTo(i.parent()),e.add(o)})),e.addClass("tg-clone").hide(),e},getRowDropPlaceholder:function(t){const e=w();return t.each((function(t){const i=w(t),o=w("
").addClass("tg-row-placeholder").hide(),n=i.parent();n.find(".tg-row-placeholder").remove(),o.appendTo(n),e.add(o)})),e},updateDragPlaceholderPosition:function(t){this.rowDropItemHandler(t);const e=t.dropItem;if(!e)return;let i=t.dropPosition-1;t.dropBottom?e.tg_view_last&&(i=t.dropPosition-2):e.tg_view_index-this.frozenInfo.rows==0&&(i=t.dropPosition);const o=i-this.scrollTopOffset;t.dropPlaceholder&&t.dropPlaceholder.css("top",o).show()},rowDragAutoScrollHandler:function(t){const e=t.dragCurrentPosition,i=this.scrollTop,o=this.bodyHeight-this.frozenRowsHeight,n=i+o,s=this.options.rowHeight,r=Math.min(3*s,.5*o);if(!(rn-r){const i=e-(n-r),o=this.getAutoScrollOffset(i,r);this.autoScrollStart(o,t)}else this.autoScrollStop()},getAutoScrollOffset:function(t,e){return Math.floor(t/e*20)},autoScrollStop:function(){this.autoScrollMotion&&(this.autoScrollMotion.destroy(),this.autoScrollMotion=null)},autoScrollStart:function(t,e){this.autoScrollStop();const i=e.dragMaxScrollTop;this.autoScrollMotion=new B,this.autoScrollMotion.bind(B.EVENT.MOTION_MOVE,(()=>{const o=d.clamp(this.scrollTop+t,0,i);o!==this.scrollTop?(this.setScrollTop(o),this.updateDragCloneRowPosition(e),this.updateDragPlaceholderPosition(e)):this.autoScrollStop()})),this.autoScrollMotion.once(B.EVENT.MOTION_END,(()=>{this.autoScrollStart(t,e)})),this.autoScrollMotion.start({duration:200})},rowDropListHandler:function(t){const e=this.getRowDropList(t);if(!d.isList(e))return;const i=t.rowItem,o=e.filter((t=>{if(t===i)return!1;if(t.tg_frozen)return!1;let e=t.tg_parent;for(;e;){if(e===i)return!1;e=e.tg_parent}return!0}));if(!d.isList(o))return;const n=[];o.forEach((t=>{const e=this.getRowTop(t),i=this.getRowHeight(t);n.push({rowItem:t,position:e}),n.push({rowItem:t,position:e+i-1,dropBottom:!0})})),t.dropList=n},getRowDropList:function(t){const e=this.options.rowDragCrossLevel;return e?"function"==typeof e?e.call(this,t):this.viewRows:this.getRowParentSubs(t.rowItem)},rowDropItemHandler:function(t){const e=t.dropList;if(!e)return;const i=t.dragCurrentPosition;let o=Number.MAX_VALUE;for(let n=0,s=e.length;no)break;o=r,t.dropItem=s.rowItem,t.dropBottom=s.dropBottom,t.dropPosition=s.position}},rowDragDropPositionHandler:function(t,e,i){const o=this.getRowParentSubs(t),n=t.tg_sub_index;let s,r;return this.isDropIntoGroupFirstChild(e,i)?(s=e.subs,r=0):(s=this.getRowParentSubs(e),r=e.tg_sub_index,o===s&&n{this.trigger(y.onRowDropped,n)})),this.render({type:"rows",scrollRow:i})}},It={getMoveFocusRow:function(t,e){let i=t[0];return e>0&&(i=t[t.length-1]),i},getMoveLengthInList:function(t,e){let i=0;return t.forEach((t=>{this.getRowParentSubs(t)===e&&(i+=1)})),i},getMoveInfo:function(t,e,i){const o=this.getRowParentSubs(i);let n=i.tg_sub_index+e;const s=i.tg_parent;if(s&&this.options.rowMoveCrossLevel){const e=0,i=s.tg_subs_length-1;if(ni){const e=n-i;return this.getMoveInfo(t,e,s)}}if(e>0){n-=this.getMoveLengthInList(t,o)-1}return n=d.clamp(n,0,o.length),{list:o,index:n}},moveRowsHandler:function(t,e){(t=this.removeRowsHandler(t)).reverse();const i=this.getMoveFocusRow(t,e),o=this.getMoveInfo(t,e,i),n=[o.index,0].concat(t);return o.list.splice.apply(o.list,n),this.initRowsHandler(),this.onNextUpdated((function(){this.scrollRowIntoView(i),this.trigger(y.onRowMoved,t)})),this.removeSortColumn(),this.update(),!0},moveRows:function(t,e){t=d.toList(t);const i=[];return t.forEach((t=>{const e=this.getRowItem(t);e&&i.push(e)})),!!i.length&&(!(i.length>=this.getRowsLength())&&(0!==(e=d.toNum(e,!0))&&this.moveRowsHandler(i,e)))},moveRowsUp:function(t){return this.moveRows(t,-1)},moveRowsDown:function(t){return this.moveRows(t,1)},moveRowsToTop:function(t){return this.moveRows(t,-this.getRowsLength(!0))},moveRowsToBottom:function(t){return this.moveRows(t,this.getRowsLength(!0))},moveSelectedRowsUp:function(){return this.moveRows(this.getSelectedRows(),-1)},moveSelectedRowsDown:function(){return this.moveRows(this.getSelectedRows(),1)},moveSelectedRowsToTop:function(){return this.moveRows(this.getSelectedRows(),-this.getRowsLength(!0))},moveSelectedRowsToBottom:function(){return this.moveRows(this.getSelectedRows(),this.getRowsLength(!0))}},Lt={getSelectedRow:function(){let t=null;return this.forEachSelectableRow((function(e){if(e.selected)return t=e,!1})),t},getSelectedRows:function(){const t=[];return this.forEachSelectableRow((function(e){e.selected&&t.push(e)})),t.length>1&&t.sort((function(t,e){const i=t.tg_selected_index,o=e.tg_selected_index;return i>o?1:i0&&void 0!==arguments[0])||arguments[0];if(t=Boolean(t),this.globalSelectedIndex=0,t&&!this.options.selectMultiple)return this;const e=this.getAllSelectedChangedList(t);return e.length?(this.updateRowsSelectedState(e),this):this},setRowSelected:function(){return(this.options.selectMultiple?this.setRowMultipleSelected:this.setRowSingleSelected).apply(this,arguments)},setRowSingleSelected:function(t){const e=this.getRowItem(t);if(!e)return this;if(!this.isRowSelectable(e))return this;if(e.selected)return this;const i=[],o=this.getSelectedRow();return o&&o.selected&&i.push(o),e.selected||i.push(e),i.length?(this.updateRowsSelectedState(i),this):this},setRowMultipleSelected:function(t,e){if(0===arguments.length)return this;if(1===arguments.length&&!1===arguments[0])return this.selectAll(!1);const i=this.toRowItemList(t,(t=>this.isRowSelectable(t)));return i.length?!1===e?(this.setRowListUnselected(i),this):d.hasShiftKey(e)&&1===i.length?(this.setRowBetweenListSelected(i[0]),this):(this.updateRowsSelectedState(i),this):this},setRowListUnselected:function(t){const e=this.getSelectedChangedList(t,!1);e.length&&this.updateRowsSelectedState(e)},setRowBetweenListSelected:function(t){const e=this.previousSelectedRow;if(e&&e!==t){const i=this.getBetweenSelectedChangedList(e,t);if(!i.length)return;this.updateRowsSelectedState(i,!0)}else this.updateRowsSelectedState([t])},getAllSelectedChangedList:function(t){const e=[];return this.forEachSelectableRow((i=>{this.isSelectedChanged(i,t)&&e.push(i)})),e},getSelectedChangedList:function(t,e){const i=[];return t.forEach((t=>{this.isSelectedChanged(t,e)&&i.push(t)})),i},getBetweenSelectedChangedList:function(t,e){const i=t.tg_index,o=e.tg_index,n=[];if(i=o;)n.push(t),t--}return this.toRowItemList(n,(t=>this.isRowSelectable(t)&&!t.selected))},updateRowsSelectedState:function(t,e){let i;t.forEach((t=>{const e=!t.selected;t.selected=e,e&&(t.tg_selected_index=this.globalSelectedIndex++,i=t),this.renderRowSelectedState(t)})),e||(this.previousSelectedRow=i),this.renderSelectAllState(),this.onNextUpdated((()=>{this.trigger(y.onSelectChanged,t)})),this.render()},renderRowSelectedState:function(t){const e=t.tg_view_index;this.viewport.rows.includes(e)&&(this.renderRowState(t,"selected"),this.flushCell(e,this.selectColumn.tg_view_index))},renderSelectAllState:function(){this.isSelectAllVisible()&&(this.asyncRenderSelectAllState||(this.asyncRenderSelectAllState=d.microtask(this.renderSelectAllStateSync)),this.asyncRenderSelectAllState.apply(this,arguments))},renderSelectAllStateSync:function(){const t=this.getSelectAllState();if(t===this.previousSelectAllState)return;this.previousSelectAllState=t;const e=this.selectColumn,i=w(this.getColumnHeaderNode(e)).find(".tg-select-icon-all");i.length&&(i.removeClass("tg-selected tg-mixed"),t&&i.addClass(`tg-${t}`))},getSelectAllState:function(){let t=0;this.forEachSelectableRow((e=>{t+=1}));const e=this.getSelectedRows().length;let i="mixed";return 0===e?(i="",this.previousSelectedRow=null):e===t&&(i="selected"),i},isSelectAllVisible:function(){const t=this.options;return!!(t.selectVisible&&t.selectAllVisible&&t.selectMultiple)}},xt={setRowHover:function(t,e){const i=this.getRowItem(t);return i?(this.renderRowHover(i,e),this):this},renderRowHover:function(t,e){if(this.previousHover&&(this.previousHover.removeClass("tg-hover"),this.previousHover=null),!e)return this;if(!1===this.rowHoverable)return;if(!1===t.hoverable)return this;if(t.tg_frozen&&!this.options.frozenRowHoverable)return this;const i=t.tg_view_index;return this.previousHover=this.$body.find(`.tg-row[row='${i}']`).addClass("tg-hover"),this},setRowState:function(t,e){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const o=this.getRowItem(t);return o?(o.tg_state_names||(o.tg_state_names=new Set),o.tg_state_names.add(e),o[e]=i,this.renderRowState(o,e),this):this},renderRowState:function(t,e){const i=this.getRowNodesByIndex(t.tg_view_index);if(i){const o=`tg-${e}`;t[e]?i.addClass(o):i.removeClass(o)}}},zt={getRowItem:function(t){return d.isNum(t)?(t<0&&(t=this.rowsInfo.length+t),this.rowsInfo.indexCache[t]):t?d.isNum(t.tg_index)?t:this.getRowItemById(t.id||t):void 0},getRowItemById:function(t){return this.getRowItemBy("id",t)},getRowItemBy:function(t,e){if(void 0!==e)return this.rowsInfo.indexCache.find((i=>i[t]===e))},getRowsLength:function(t){return t?this.rowsInfo.length:this.viewRows.length},getViewRowItem:function(t){return this.viewRows[t]},getPreRenderRowInfo:function(t){const e={rows:[],rowNotFound:!1,benchmark:0};if(!t.length)return 0===this.getRowsLength()&&(e.rowNotFound=!0),e;const i=[],o=this.frozenInfo.row;return t.forEach((t=>{this.getRowCache(t)?t>o&&i.push(t):e.rows.push(t)})),i.length&&(e.benchmark=Math.min.apply(Math,i)),e.rows.sort((function(t,i){return t{this.renderRowNodes(t,e.benchmark)}))},createRowNode:function(t,e,i,o,n,s){const r=document.createElement("div");return r.setAttribute("row",t),r.className=i,o&&(r.style.cssText=o),r.style.top=`${n}px`,s!==this.options.rowHeight&&(r.style.height=`${s}px`,r.style.lineHeight=`${s}px`),this.setNodeDataCache(r,{row:t,rowItem:e,rowNode:r}),r},appendRowNode:function(t,e,i,o){ithis.frozenInfo.row))return e;e-=this.frozenRowsHeight}return e-=this.scrollTopOffset,e},getRowTop:function(t){let e=t.tg_top;return t.tg_frozen||(e-=this.frozenRowsHeight),e},getRowVPos:function(t){const e=this.frozenInfo.bottom,i=this.frozenInfo.row;let o="top";return this.frozenInfo.rows&&(t<=i?e&&(o="bottom"):e||(o="bottom")),o},getRowCanvas:function(t,e){return"top"===t?"left"===e?this.$bodyTL:this.$bodyTR:"left"===e?this.$bodyBL:this.$bodyBR}},Mt={CHANGE:"change",START:"start",END:"end"},Pt={h:{type:"h",className:"tg-scrollbar-h",offset:"left",size:"width",page:"pageX",axis:"x",offsetName:"offsetX"},v:{type:"v",className:"tg-scrollbar-v",offset:"top",size:"height",page:"pageY",axis:"y",offsetName:"offsetY"}};class Nt extends k{static EVENT=Mt;static H="h";static V="v";type="h";settings={};size=0;viewSize=0;bodySize=0;trackSize=0;position=0;scale=0;thumbPosition=0;thumbScale=0;constructor(t,e){super(),this.settings=Pt[t]||Pt.h,this.type=this.settings.type,this.id=d.uid(4,`tg-scrollbar-${this.type}-`),this.$holder=w(e),this.$holder.find(`.${this.settings.className}`).remove(),this.options=this.generateOptions()}generateOptions(t){return d.merge({size:15,round:!1,blank:!1,motionDuration:200},t)}updateOptions(t){this.options=this.generateOptions(t);let e=this.options.size;d.isNum(e)||(e=d.toNum(e)),e=Math.round(e),e=Math.max(e,0),e=Math.min(e,30),this.size=e}create(){this.$container=w('
').appendTo(this.$holder),this.$container.attr("id",this.id),this.$container.addClass(d.classMap(["tg-scrollbar",this.settings.className,{"tg-scrollbar-round":this.options.round}])),this.$track=this.$container.find(".tg-scrollbar-track"),this.$thumb=this.$container.find(".tg-scrollbar-thumb"),this.thumbDrag=new O,this.thumbDrag.bind(O.EVENT.DRAG_START,((t,e)=>{this.thumbDragStart(e)})).bind(O.EVENT.DRAG_MOVE,((t,e)=>{this.thumbDragMove(e)})).bind(O.EVENT.DRAG_END,((t,e)=>{this.thumbDragEnd(e)}));const t=this.$container.get(0);return this.scrollEvents={mousedown:{handler:e=>{e.target.classList.contains("tg-scrollbar-thumb")?this.thumbMouseDownHandler(e):(this.trackEvents={mouseup:{handler:t=>{this.trackMouseupHandler(t)},options:{once:!0}}},d.bindEvents(this.trackEvents,t),this.trackMousedownHandler(e))},options:!0},selectstart:{handler:t=>{d.preventDefault(t)},options:!0}},d.bindEvents(this.scrollEvents,t),this}getBlank(){return this.options.blank}getSize(){return this.size}getViewSize(){return this.viewSize}getBodySize(){return this.bodySize}getTrackMouseDirection(){let t=1;return this.trackMousePosition0){const i=this.getMaxThumbPosition();t=Math.round(i*this.position/e),t=d.clamp(t,0,i)}return this.setThumbPosition(t),this}trackMousedownHandler(t){return this.motionStop(),this.trackMousePosition=this.getTrackMousePos(t),this.motionStart(),this}trackMouseupHandler(t){return d.unbindEvents(this.trackEvents),this.motionStop(),this.motionStarted||(this.trackMousePosition=this.getTrackMousePos(t),this.trackScrollHandler(),this.triggerEvent()),this}trackScrollHandler(){const t=Math.max(0,this.viewSize-20)*this.getTrackMouseDirection();return this.setOffset(t),this}motionStop(){return this.motion&&(this.motion.destroy(),this.motion=null),this}motionStart(){const t=this.position,e=Math.round(this.trackMousePosition/this.viewSize*this.getMaxPosition());return this.motionStarted=!1,this.motion=new B,this.motion.bind(B.EVENT.MOTION_START,((t,e)=>{this.motionStarted=!0})),this.motion.bind(B.EVENT.MOTION_MOVE,((t,e)=>{this.motionUpdateHandler(t,e)})),this.motion.start({duration:this.options.motionDuration,from:t,till:e}),this}motionUpdateHandler(t,e){e!==this.position&&(this.setPosition(e),this.triggerEvent())}thumbMouseDownHandler(t){this.$thumb.addClass("tg-scrollbar-thumb-hold"),this.thumbDrag.start(t,{target:this.$thumb})}thumbDragStart(t){this.motionStop(),t.thumbPositionStart=this.thumbPosition,this.trigger(Mt.START)}thumbDragMove(t){let e=t.thumbPositionStart+t[this.settings.offsetName];const i=this.getMaxThumbPosition();e=d.clamp(e,0,i),this.setThumbPosition(e);let o=0;i>0&&(o=d.per(e/i)*this.getMaxPosition(),o=Math.round(o)),this.position=o,this.triggerEvent()}thumbDragEnd(t){this.$thumb&&this.$thumb.removeClass("tg-scrollbar-thumb-hold"),this.trigger(Mt.END)}triggerEvent(){this.trigger(Mt.CHANGE,this.position)}getPosition(){return this.position}setPosition(t){t=d.toNum(t,!0);const e=this.getMaxPosition();t=d.clamp(t,0,e),this.position=t,this.updateThumbPosition()}getMaxPosition(){return this.bodySize-this.viewSize}updatePosition(){const t=this.getMaxPosition(),e=d.clamp(this.position,0,t);this.position=e}setOffset(t){t=d.toNum(t);const e=this.position+t;return this.setPosition(e),this}getScale(){return this.scale}setScale(t){return t=d.per(t),this.scale=t,this.scaleChangeHandler(),this}scaleChangeHandler(){let t=Math.round(this.viewSize*this.scale);if(t=Math.max(t,Math.round(1.5*this.options.size)),t=Math.min(t,this.viewSize-1),this.thumbSize=t,this.$thumb){const t={};"h"===this.type?(t.height=this.size,t.width=this.thumbSize):(t.width=this.size,t.height=this.thumbSize),this.$thumb.css(t)}}updateTrackSize(){const t={};return"h"===this.type?(t.width=this.trackSize,t.height=this.size):(t.height=this.trackSize,t.width=this.size),this.$container.css(t),this}updateThumbSize(){let t=0;return this.bodySize&&(t=this.trackSize/this.bodySize),this.setScale(t),this}parseSize(t){return t=d.toNum(t),t=Math.round(t),t=Math.max(t,0)}updateSize(t,e,i){t=this.parseSize(t),this.viewSize=t,e=this.parseSize(e),this.bodySize=e,i=d.isNum(i)?this.parseSize(i):t,this.trackSize=i,this.previousFadeIn=null}fade(t){return!(!this.$container||!this.size)&&(this.previousFadeIn!==t&&(this.previousFadeIn=t,t?this.$container.hasClass("tg-fade-out")&&this.$container.removeClass("tg-fade-out").addClass("tg-fade-in"):this.$container.removeClass("tg-fade-in").addClass("tg-fade-out"),!0))}show(){if(this.updatePosition(),!this.getBlank())return!this.$container&&this.size>0&&this.create(),this.$container?(this.updateTrackSize(),this.updateThumbSize(),this):this;this.remove()}hide(){return this.updatePosition(),this.remove(),this}remove(){if(this.motionStop(),d.unbindEvents(this.scrollEvents),d.unbindEvents(this.trackEvents),this.thumbDrag&&(this.thumbDrag.destroy(),this.thumbDrag=null),!this.$container)return this;this.$thumb=null,this.$track=null,this.$container.remove(),this.$container=null}destroy(){return this.remove(),this}}const _t={CHANGE:"change",START:"start",END:"end"};class kt extends k{static EVENT=_t;visible=!0;constructor(t,e){super(),this.id=d.uid(4,`tg-scroll-pane-${e}-`),this.gradientInfo=[],this.$container=w(t).attr("id",this.id),this.$container.addClass("tg-scroll-pane"),this.$scrollView=this.$container.find(".tg-scroll-view"),this.$scrollBody=this.$scrollView.find(".tg-scroll-body"),this.scrollbarH=new Nt(Nt.H,this.$container),this.scrollbarH.bind(Nt.EVENT.CHANGE,((t,e)=>{this.scrollHChangeHandler()})).bind(Nt.EVENT.START,(t=>{this.scrollStartEndHandler(!0)})).bind(Nt.EVENT.END,(t=>{this.scrollStartEndHandler()})),this.scrollbarV=new Nt(Nt.V,this.$container),this.scrollbarV.bind(Nt.EVENT.CHANGE,((t,e)=>{this.scrollVChangeHandler()})).bind(Nt.EVENT.START,(t=>{this.scrollStartEndHandler(!0)})).bind(Nt.EVENT.END,(t=>{this.scrollStartEndHandler()})),this.options=this.generateOptions()}generateOptions(t){return d.merge({scrollbarH:{},scrollbarV:{},scrollbarFade:!1,scrollSizeOnKeyPress:20,gradient:30},t)}scrollStartEndHandler(t){t?this.trigger(_t.START):this.trigger(_t.END)}show(){return this.$container.show(),this.visible=!0,this}hide(){return this.$container.hide(),this.visible=!1,this}width(){return this.scrollPaneW}height(){return this.scrollPaneH}render(t){return this.visible?(this.options=this.generateOptions(t),this.update(),this):this}update(){this.scrollPaneW=this.options.scrollPaneW,this.scrollPaneH=this.options.scrollPaneH,this.scrollBodyW=this.options.scrollBodyW,this.scrollBodyH=this.options.scrollBodyH,this.updateScrollbar()}setGroupH(t){this.groupH=d.toList(t)}setGroupV(t){this.groupV=d.toList(t)}updateGroupH(){if(!d.isList(this.groupH))return this;const t=this.scrollbarH.getPosition();return this.groupH.forEach((function(e){e&&e.updateScrollHFromGroup(t)})),this}updateGroupV(){if(!d.isList(this.groupV))return this;const t=this.scrollbarV.getPosition();return this.groupV.forEach((function(e){e&&e.updateScrollVFromGroup(t)})),this}updateGroupList(){this.updateGroupH(),this.updateGroupV()}updateScrollHFromGroup(t){this.scrollbarH.getPosition()!==t&&(this.scrollbarH.setPosition(t),this.updateScrollLeft(),this.triggerEvent())}updateScrollVFromGroup(t){this.scrollbarV.getPosition()!==t&&(this.scrollbarV.setPosition(t),this.updateScrollTop(),this.triggerEvent())}setPosition(t,e){return this.scrollbarH.setPosition(t),this.scrollbarV.setPosition(e),this.updateScrollLeft(),this.updateScrollTop(),this.updateGroupList(),this}updateScrollbar(){this.scrollbarH.updateOptions(this.options.scrollbarH),this.scrollbarV.updateOptions(this.options.scrollbarV),this.updateScrollState(),this.updateScrollView(),this.updateScrollTrack(),this.scrollbarH.updateSize(this.scrollViewW,this.scrollBodyW,this.scrollTrackW),this.scrollbarV.updateSize(this.scrollViewH,this.scrollBodyH,this.scrollTrackH),this.hasScrollH?(this.scrollbarH.show(),this.scrollbarH.setPosition(this.scrollbarH.getPosition())):this.scrollbarH.hide(),this.hasScrollV?(this.scrollbarV.show(),this.scrollbarV.setPosition(this.scrollbarV.getPosition())):this.scrollbarV.hide(),this.updateScrollLeft(),this.updateScrollTop(),this.updateGroupList()}updateScrollState(){const t=this.scrollbarH.getSize(),e=this.scrollbarV.getSize(),i=this.scrollbarH.getBlank(),o=this.scrollbarV.getBlank(),n=this.options.scrollbarFade;let s=!1,r=0;(function(){(this.scrollPaneWe&&t.push("left"),ie&&t.push("top"),o{const i=`tg-gradient-${e}`;t.includes(e)?this.$container.addClass(i):this.$container.removeClass(i)})))}getScrollLeft(){return this.scrollbarH.getPosition()}getScrollTop(){return this.scrollbarV.getPosition()}getMaxScrollLeft(){return this.scrollbarH.getMaxPosition()}getMaxScrollTop(){return this.scrollbarV.getMaxPosition()}getScrollTopOffset(){const t=this.getScrollTop();return t-t%1e4}triggerEvent(){this.trigger(_t.CHANGE,{scrollLeft:this.getScrollLeft(),scrollTop:this.getScrollTop()})}scrollHChangeHandler(){this.updateScrollLeft(),this.updateGroupList(),this.triggerEvent()}scrollVChangeHandler(){this.updateScrollTop(),this.updateGroupList(),this.triggerEvent()}setOffsetH(t){const e=this.getScrollLeft();this.scrollbarH.setOffset(t);return this.getScrollLeft()!==e&&(this.updateScrollLeft(),this.updateGroupList(),this.triggerEvent(),!0)}setOffsetV(t){const e=this.getScrollTop();this.scrollbarV.setOffset(t);return this.getScrollTop()!==e&&(this.updateScrollTop(),this.updateGroupList(),this.triggerEvent(),!0)}mouseWheelHandler(t){const e=t.deltaX,i=t.deltaY,o=Math.abs(e);if(o>Math.abs(i)){if(this.hasScrollH)return this.setOffsetH(e)}else{if(this.hasScrollV)return this.setOffsetV(i);if(this.hasScrollH&&!o)return this.setOffsetH(i)}return!1}keyPageUpHandler(t){return this.setOffsetV(-this.scrollViewH)}keyPageDownHandler(t){return this.setOffsetV(this.scrollViewH)}keyEndHandler(t){return this.setOffsetV(this.scrollBodyH)}keyHomeHandler(t){return this.setOffsetV(-this.scrollBodyH)}keyLeftHandler(t){return this.setOffsetH(-this.options.scrollSizeOnKeyPress)}keyUpHandler(t){return this.setOffsetV(-this.options.scrollSizeOnKeyPress)}keyRightHandler(t){return this.setOffsetH(this.options.scrollSizeOnKeyPress)}keyDownHandler(t){return this.setOffsetV(this.options.scrollSizeOnKeyPress)}destroy(){return this.visible=!1,this.groupH=null,this.groupV=null,this.scrollbarV&&(this.scrollbarV.destroy(),this.scrollbarV=null),this.scrollbarH&&(this.scrollbarH.destroy(),this.scrollbarH=null),this.$container=null,this.$scrollView=null,this.$scrollBody=null,this}}const Vt={initScrollPane:function(){this.initFrozenStyle(),this.createScrollPane()},initFrozenStyle:function(){const t={HL:{container:this.$paneHL,cls:[]},HR:{container:this.$paneHR,cls:[]},TL:{container:this.$paneTL,cls:[]},TR:{container:this.$paneTR,cls:[]},BL:{container:this.$paneBL,cls:[]},BR:{container:this.$paneBR,cls:[]}},e="tg-frozen-h";this.frozenInfo.rows&&(this.frozenInfo.bottom?(t.BL.cls.push(e),t.BR.cls.push(e)):(t.TL.cls.push(e),t.TR.cls.push(e)));const i="tg-frozen-v",o="tg-frozen-line-v";this.frozenInfo.columns&&(this.frozenInfo.right?(t.HR.cls.push(i),t.TR.cls.push(i),t.BR.cls.push(i)):(t.HL.cls.push(i),t.TL.cls.push(i),t.BL.cls.push(i)),t.HL.cls.push(o),t.TL.cls.push(o),t.BL.cls.push(o));const n="tg-frozen",s=[n,e,i,o].join(" ");Object.keys(t).forEach((function(e){const i=t[e],o=i.container;o.removeClass(s);const r=i.cls;if(!r.length)return;const l=[n].concat(r).join(" ");o.addClass(l)}))},createScrollPane:function(){this.removeScrollPane(),this.scrollPaneMap={HL:new kt(this.$paneHL,"header-left"),HR:new kt(this.$paneHR,"header-right"),TL:new kt(this.$paneTL,"top-left"),TR:new kt(this.$paneTR,"top-right"),BL:new kt(this.$paneBL,"bottom-left"),BR:new kt(this.$paneBR,"bottom-right")},this.scrollPaneMap.BR.setGroupH([this.scrollPaneMap.HR,this.scrollPaneMap.TR]),this.scrollPaneMap.TR.setGroupH([this.scrollPaneMap.HR,this.scrollPaneMap.BR]),this.scrollPaneMap.BL.setGroupH([this.scrollPaneMap.HL,this.scrollPaneMap.TL]),this.scrollPaneMap.TL.setGroupH([this.scrollPaneMap.HL,this.scrollPaneMap.BL]),this.scrollPaneMap.BR.setGroupV(this.scrollPaneMap.BL),this.scrollPaneMap.BL.setGroupV(this.scrollPaneMap.BR),this.scrollPaneMap.TR.setGroupV(this.scrollPaneMap.TL),this.scrollPaneMap.TL.setGroupV(this.scrollPaneMap.TR),this.initActiveScrollPane(),this.initPaneVisibility()},initActiveScrollPane:function(){const t=this.getScrollPaneVP(),e=this.getScrollPaneHP(),i=`${t}${e}`;this.scrollPane=this.scrollPaneMap[i],this.scrollPane.bind(kt.EVENT.CHANGE,((t,e)=>{this.scrollPaneChangeHandler(t,e)})).bind(kt.EVENT.START,(t=>{this.rowHoverable=!1})).bind(kt.EVENT.END,(t=>{this.rowHoverable=!0}));let o={L:"L",R:"L"};this.frozenInfo.columns&&this.frozenInfo.right&&(o={L:"R",R:"L"});const n=`${t}${o[e]}`;this.scrollPaneFrozen=this.scrollPaneMap[n]},getScrollPaneVP:function(){return this.frozenInfo.rows&&!this.frozenInfo.bottom?"B":"T"},getScrollPaneHP:function(){return this.frozenInfo.columns&&!this.frozenInfo.right?"R":"L"},initPaneVisibility:function(){this.scrollPaneMap.HL.show(),this.scrollPaneMap.TL.show(),this.frozenInfo.columns?(this.scrollPaneMap.HR.show(),this.scrollPaneMap.TR.show(),this.frozenInfo.rows?(this.scrollPaneMap.BL.show(),this.scrollPaneMap.BR.show()):(this.scrollPaneMap.BL.hide(),this.scrollPaneMap.BR.hide())):(this.scrollPaneMap.HR.hide(),this.scrollPaneMap.TR.hide(),this.scrollPaneMap.BR.hide(),this.frozenInfo.rows?this.scrollPaneMap.BL.show():this.scrollPaneMap.BL.hide())},scrollPaneChangeHandler:function(t,e){this.hideColumnLine(),this.scrollLeft=e.scrollLeft,this.scrollTop=e.scrollTop,this.scrollRenderHandler()},scrollbarFadeInOutHandler:function(t,e){this.options.scrollbarFade&&(e?this.updateScrollPaneFade(!0):this.options.scrollbarFadeTimeout||this.updateScrollPaneFade(!1))},updateScrollPaneFade:function(t){if(!this.options.scrollbarFade)return;this.updateScrollPaneFadeSync(t);const e=this.options.scrollbarFadeTimeout;e&&(clearTimeout(this.timeout_fade),this.timeout_fade=setTimeout((()=>{this.updateScrollPaneFadeSync(!1)}),e))},updateScrollPaneFadeSync:function(t){if(this.previousScrollbarFadeIn===t)return;this.previousScrollbarFadeIn=t;const e=[];Object.keys(this.scrollPaneMap).forEach((t=>{const i=this.scrollPaneMap[t];i.hasScrollbar()&&e.push(i)})),e.length&&e.forEach((function(e){e.fade(t)}))},updateScrollPane:function(){const t=this.getScrollbarOptions();this.scrollPaneMap.HL.render(this.getScrollPaneOptions({scrollPaneW:this.paneWidthL,scrollPaneH:this.headerHeight,scrollBodyW:this.bodyWidthL,scrollBodyH:this.headerHeight,scrollbarV:t.HLV,scrollbarH:t.HLH})),this.scrollPaneMap.HR.render(this.getScrollPaneOptions({scrollPaneW:this.paneWidthR,scrollPaneH:this.headerHeight,scrollBodyW:this.bodyWidthR,scrollBodyH:this.headerHeight,scrollbarV:t.HRV,scrollbarH:t.HRH})),this.scrollPaneMap.TL.render(this.getScrollPaneOptions({scrollPaneW:this.paneWidthL,scrollPaneH:this.paneHeightT,scrollBodyW:this.bodyWidthL,scrollBodyH:this.bodyHeightT,scrollbarV:t.TLV,scrollbarH:t.TLH})),this.scrollPaneMap.TR.render(this.getScrollPaneOptions({scrollPaneW:this.paneWidthR,scrollPaneH:this.paneHeightT,scrollBodyW:this.bodyWidthR,scrollBodyH:this.bodyHeightT,scrollbarV:t.TRV,scrollbarH:t.TRH})),this.scrollPaneMap.BL.render(this.getScrollPaneOptions({scrollPaneW:this.paneWidthL,scrollPaneH:this.paneHeightB,scrollBodyW:this.bodyWidthL,scrollBodyH:this.bodyHeightB,scrollbarV:t.BLV,scrollbarH:t.BLH})),this.scrollPaneMap.BR.render(this.getScrollPaneOptions({scrollPaneW:this.paneWidthR,scrollPaneH:this.paneHeightB,scrollBodyW:this.bodyWidthR,scrollBodyH:this.bodyHeightB,scrollbarV:t.BRV,scrollbarH:t.BRH})),this.scrollLeft=this.getScrollLeft(),this.scrollTop=this.getScrollTop(),this.updateScrollPaneFade(Boolean(this.options.scrollbarFadeTimeout))},getScrollPaneOptions:function(t){const e=this.options;return t.scrollbarFade=e.scrollbarFade,t.gradient=d.clamp(d.toNum(e.scrollPaneGradient,!0),0,100),t},getScrollbarOptions:function(){const t=this.options.scrollbarRound,e={};return["HLH","HLV","HRH","HRV","TLH","TLV","TRH","TRV","BLH","BLV","BRH","BRV"].forEach((function(i){e[i]={size:0,round:t,blank:!1}})),this.scrollbarOptionsHandler(e),this.scrollbarFadeHandler(e),e},scrollbarOptionsHandler:function(t){const e=this.scrollbarSizeH,i=this.scrollbarSizeV;this.scrollbarHeaderHandler(t,e,i),this.frozenInfo.columns?this.frozenInfo.rows?this.scrollbarC1R1Handler(t,e,i):this.scrollbarC1R0Handler(t,e,i):this.frozenInfo.rows?this.scrollbarC0R1Handler(t,e,i):this.scrollbarC0R0Handler(t,e,i)},scrollbarFadeHandler:function(t){if(this.options.scrollbarFade)for(const e in t)if(d.hasOwn(t,e)){const i=t[e];i.size>0&&i.blank&&(i.blank=!1,i.size=0)}},scrollbarHeaderHandler:function(t,e,i){this.hasVScroll&&(this.frozenInfo.columns?(t.HRV.size=i,t.HRV.blank=1):(t.HLV.size=i,t.HLV.blank=1))},scrollbarC0R0Handler:function(t,e,i){t.TLH.size=e,t.TLV.size=i},scrollbarC0R1Handler:function(t,e,i){this.frozenInfo.bottom?this.scrollbarC0R1B1Handler(t,e,i):this.scrollbarC0R1B0Handler(t,e,i)},scrollbarC0R1B1Handler:function(t,e,i){t.BLH.size=e,t.TLV.size=i,this.hasVScroll&&(t.BLV.size=i,t.BLV.blank=1)},scrollbarC0R1B0Handler:function(t,e,i){t.BLH.size=e,t.BLV.size=i,this.hasVScroll&&(t.TLV.size=i,t.TLV.blank=1)},scrollbarC1R0Handler:function(t,e,i){this.frozenInfo.right?this.scrollbarC1R0R1Handler(t,e,i):this.scrollbarC1R0R0Handler(t,e,i)},scrollbarC1R0R1Handler:function(t,e,i){this.hasHScroll&&(t.TLH.size=e,this.scrollPaneHidden?(t.TRH.size=e,t.TLH.blank=!0):(t.TRH.size=e,t.TRH.blank=!0)),t.TRV.size=i},scrollbarC1R0R0Handler:function(t,e,i){this.hasHScroll&&(t.TRH.size=e,this.scrollPaneHidden?(t.TLH.size=e,t.TRH.blank=!0):(t.TLH.size=e,t.TLH.blank=!0)),t.TRV.size=i},scrollbarC1R1Handler:function(t,e,i){this.frozenInfo.right?this.frozenInfo.bottom?this.scrollbarC1R1R1B1Handler(t,e,i):this.scrollbarC1R1R1B0Handler(t,e,i):this.frozenInfo.bottom?this.scrollbarC1R1R0B1Handler(t,e,i):this.scrollbarC1R1R0B0Handler(t,e,i)},scrollbarC1R1R1B1Handler:function(t,e,i){this.hasHScroll&&(t.BLH.size=e,this.scrollPaneHidden&&(t.BRH.size=e,t.BLH.blank=!0)),t.TRV.size=i,this.hasVScroll&&(t.BRV.size=i,t.BRV.blank=1)},scrollbarC1R1R1B0Handler:function(t,e,i){this.hasHScroll&&(t.BLH.size=e,this.scrollPaneHidden?(t.BRH.size=e,t.BLH.blank=!0):(t.BRH.size=e,t.BRH.blank=!0)),t.BRV.size=i,this.hasVScroll&&(t.TRV.size=i,t.TRV.blank=1)},scrollbarC1R1R0B1Handler:function(t,e,i){this.hasHScroll&&(t.BRH.size=e,this.scrollPaneHidden&&(t.BLH.size=e,t.BRH.blank=!0)),t.TRV.size=i,this.hasVScroll&&(t.BRV.size=i,t.BRV.blank=1)},scrollbarC1R1R0B0Handler:function(t,e,i){this.hasHScroll&&(t.BRH.size=e,this.scrollPaneHidden?(t.BLH.size=e,t.BRH.blank=!0):(t.BLH.size=e,t.BLH.blank=!0)),t.BRV.size=i,this.hasVScroll&&(t.TRV.size=i,t.TRV.blank=1)},removeScrollPane:function(){clearTimeout(this.timeout_fade),this.previousScrollbarFadeIn=null,this.scrollPaneMap&&(Object.keys(this.scrollPaneMap).forEach((t=>{const e=this.scrollPaneMap[t];e&&e.destroy()})),this.scrollPaneMap=null,this.scrollPane=null,this.scrollPaneFrozen=null)}},Ot={updateScrollState:function(){this.updateGlobalScrollInfo(),this.updateHScrollState(),this.updateVScrollState(),this.updateBlankColumnWidth(),this.scrollStateChanged=!1,this.previousHasHScroll===this.hasHScroll&&this.previousHasVScroll===this.hasVScroll||(this.scrollStateChanged=!0,this.previousHasHScroll=this.hasHScroll,this.previousHasVScroll=this.hasVScroll,this.trigger(y.onScrollStateChanged,{hasHScroll:this.hasHScroll,hasVScroll:this.hasVScroll}))},updateGlobalScrollInfo:function(){this.totalRowsLength=this.getRowsLength(),this.totalRowsHeight=this.getRowsHeight(),this.frozenRowsHeight=this.getFrozenRowsHeight(),this.scrollRowsHeight=this.totalRowsHeight-this.frozenRowsHeight,this.totalRowsHeight=Math.max(this.totalRowsHeight,1),this.scrollRowsHeight=Math.max(this.scrollRowsHeight,1),this.flushRowFrom(this.totalRowsLength)},updateHScrollState:function(){if(this.hasHScroll=!0,this.updateScrollPaneHiddenState(),this.updateHScrollByScrollPaneHidden(),this.scrollPaneHidden)return;this.containerWidth-this.columnsWidth>=0&&(this.hasHScroll=!1)},getScrollPaneCurrentWidth:function(){return this.frozenInfo.right?this.bodyWidth-this.columnsWidthR:this.bodyWidth-this.columnsWidthL},updateHScrollByScrollPaneHidden:function(){if(this.scrollPaneHidden){this.hasHScroll=!1;this.getScrollPaneCurrentWidth()=this.totalRowsHeight&&(this.hasVScroll=!1)}},updateBlankColumnWidth:function(){let t=this.containerWidth-this.columnsWidth;!this.hasVScroll||this.hasHScroll||this.options.scrollbarFade||(t-=this.scrollbarSizeV),this.scrollPaneHidden&&(t=0),this.hasHScroll||(t>=0?(this.frozenInfo.columns?this.columnsWidthR+=t:this.columnsWidthL+=t,this.blankColumn.tg_width=t):this.hasHScroll=!0)}},$t={scrollToRow:function(t){const e=this.getRowItem(t);return this.scrollToItem(e,null),this},scrollToColumn:function(t){const e=this.getColumnItem(t);return this.scrollToItem(null,e),this},scrollToCell:function(t,e){const i=this.getRowItem(t),o=this.getColumnItem(e);return this.scrollToItem(i,o),this},scrollToFirstRow:function(){return this.setScrollTop(0),this},scrollToLastRow:function(){const t=this.getViewRows(),e=t[t.length-1],i=this.getScrollRowPosition(e);if(d.isNum(i))return this.setScrollTop(i),this},scrollToFirstColumn:function(){return this.setScrollLeft(0),this},scrollToLastColumn:function(t){const e=this.getViewColumns();let i=e[e.length-2];t&&(i=e[e.length-1]);const o=this.getScrollColumnPosition(i);if(d.isNum(o))return this.setScrollLeft(o),this},scrollRowIntoView:function(t){const e=this.getRowItem(t);return this.scrollItemIntoView(e,null),this},scrollColumnIntoView:function(t){const e=this.getColumnItem(t);return this.scrollItemIntoView(null,e),this},scrollCellIntoView:function(t,e){const i=this.getRowItem(t),o=this.getColumnItem(e);return this.scrollItemIntoView(i,o),this},setScroll:function(t,e){return t===this.scrollLeft&&e===this.scrollTop||(this.scrollLeft=t,this.scrollTop=e,this.scrollHandler()),this},setScrollLeft:function(t){return t===this.scrollLeft||(this.scrollLeft=t,this.scrollHandler()),this},setScrollTop:function(t){return t===this.scrollTop||(this.scrollTop=t,this.scrollHandler()),this},getScrollRowPosition:function(t){if(!t)return;let e=t.tg_view_index;return e-=this.frozenInfo.rows,e>=0?this.getRowTop(t):void 0},getScrollColumnPosition:function(t){if(!t)return;let e=t.tg_left;return this.frozenInfo.columns&&(e-=this.bodyWidthL),e>=0?e:void 0},scrollToItem:function(t,e){return this.scrollToChanged=!1,this.scrollToRowHandler(t),this.scrollToColumnHandler(e),this.scrollToChanged?(this.scrollHandler(),this):this},scrollToRowHandler:function(t){if(!t)return;const e=this.getScrollRowPosition(t);d.isNum(e)&&e!==this.scrollTop&&(this.scrollTop=e,this.scrollToChanged=!0)},scrollToColumnHandler:function(t){if(!t)return;const e=this.getScrollColumnPosition(t);d.isNum(e)&&e!==this.scrollLeft&&(this.scrollLeft=e,this.scrollToChanged=!0)},scrollItemIntoView:function(t,e){return this.scrollIntoViewChanged=!1,this.scrollRowIntoViewHandler(t),this.scrollColumnIntoViewHandler(e),this.scrollIntoViewChanged?(this.scrollHandler(),this):this},scrollRowIntoViewHandler:function(t){if(!t)return;const e=this.getScrollRowPosition(t);if(!d.isNum(e))return;if(ethis.scrollTop+o){const t=e-(o-i);this.scrollTop=t,this.scrollIntoViewChanged=!0}},scrollColumnIntoViewHandler:function(t){if(!t)return;const e=this.getScrollColumnPosition(t);if(!d.isNum(e))return;if(ethis.scrollLeft+o){const t=e-(o-i);this.scrollLeft=t,this.scrollIntoViewChanged=!0}},scrollOnInit:function(){const{scrollLeft:t,scrollTop:e,scrollColumn:i,scrollRow:o}=this.renderSettings;this.scrollIntoViewChanged=!1,Number.isInteger(t)&&t!==this.scrollLeft&&(this.scrollLeft=t,this.scrollIntoViewChanged=!0),Number.isInteger(e)&&e!==this.scrollTop&&(this.scrollTop=e,this.scrollIntoViewChanged=!0),i&&this.scrollColumnIntoViewHandler(i),o&&this.scrollRowIntoViewHandler(o),this.scrollIntoViewChanged&&this.scrollPane.setPosition(this.scrollLeft,this.scrollTop)},scrollHandler:function(){this.scrollPane.setPosition(this.scrollLeft,this.scrollTop),this.scrollRenderHandler()},scrollRenderHandler:function(){this.previousScrollLeft===this.scrollLeft&&this.previousScrollTop===this.scrollTop||(this.previousScrollLeft=this.scrollLeft,this.previousScrollTop=this.scrollTop,this.onNextUpdated((()=>{this.updateScrollPaneFade(!0),this.trigger(y.onScroll,{scrollLeft:this.scrollLeft,scrollTop:this.scrollTop})})),this.render())},scrollTouchStartHandler:function(t,e){this.hideColumnLine(),this.scrollTouchLeft=this.getScrollLeft(),this.scrollTouchTop=this.getScrollTop(),this.scrollMaxTouchLeft=this.getMaxScrollLeft(),this.scrollMaxTouchTop=this.getMaxScrollTop()},getTouchOrientation:function(t){return t.orientation?t.orientation:[e.LEFT,e.RIGHT].includes(t.direction)?(t.orientation||(t.orientation="Y"),t.orientation):[e.UP,e.DOWN].includes(t.direction)?(t.orientation||(t.orientation="X"),t.orientation):void 0},scrollTouchMoveHandler:function(t,e){if(e.touchLength>1)return;let i=e.offsetX,o=e.offsetY;const n=this.getTouchOrientation(e);"X"===n?i=0:"Y"===n&&(o=0);let s=this.scrollTouchLeft-i,r=this.scrollTouchTop-o;s=d.clamp(s,0,this.scrollMaxTouchLeft),r=d.clamp(r,0,this.scrollMaxTouchTop);let l=!1;this.scrollPaneHidden&&(l=this.scrollPaneFrozen.setOffsetH(-e.moveX),s=0);const h=this.getScrollLeft(),a=this.getScrollTop();(s!==h||r!==a||l)&&(d.preventDefault(e.e),this.setScroll(s,r))},scrollTouchEndHandler:function(){this.protectedItem=null},scrollTouchInertiaHandler:function(t,e){const i=this.getScrollLeft(),o=this.getScrollTop(),n=i-e.touchInertiaX,s=o-e.touchInertiaY;this.setScroll(n,s)},getScrollViewWidth:function(){let t=this.getScrollPaneWidth();return this.frozenInfo.right||(t-=this.getScrollbarWidth()),t},getScrollViewHeight:function(){let t=this.getScrollPaneHeight();return this.frozenInfo.bottom||(t-=this.getScrollbarHeight()),t},getScrollPaneWidth:function(){return this.scrollPane.width()},getScrollPaneHeight:function(){return this.scrollPane.height()},getScrollbarWidth:function(){return this.hasVScroll&&!this.options.scrollbarFade?this.scrollbarSizeV:0},getScrollbarHeight:function(){return this.hasHScroll&&!this.options.scrollbarFade?this.scrollbarSizeH:0},getScrollLeft:function(){return this.scrollPane.getScrollLeft()},getScrollTop:function(){return this.scrollPane.getScrollTop()},getMaxScrollLeft:function(){return this.scrollPane.getMaxScrollLeft()},getMaxScrollTop:function(){return this.scrollPane.getMaxScrollTop()}};class Dt{constructor(t){this.options=this.generateOptions(t)}generateOptions(t){return d.merge({ignore:null,sortField:"",sortFactor:1,sortBlankFactor:1,sortComparer:null},t)}sortList(t){if(!d.isList(t)||1===t.length)return!1;this.ignoreExcludeHandler(t);const e=this.comparerHandler(t);return this.ignoreIncludeHandler(t),e}getDefaultComparer(t){return(ft[t]||ft.string).bind(this)}comparerHandler(t){const e=this.options,i=e.sortField,o=e.sortFactor,n=e.sortBlankFactor,s=e.sortComparer;return"function"==typeof s&&(t.sort(((t,e)=>s.call(this,t,e,{sortField:i,sortFactor:o,sortBlankFactor:n}))),!0)}ignoreExcludeHandler(t){const e=this.options.ignore;this.ignoreListTop=[],this.ignoreListBottom=[];const i=[];for(let o=0,n=t.length;o{t.unshift(e.item)})),this.ignoreListBottom.forEach((e=>{t.push(e.item)}))}}const Bt={removeSortColumn:function(){return this.sortColumn=null,this.$header&&this.$header.find(".tg-column-sorted").removeClass("tg-column-sorted"),this},setSortColumn:function(t){if(!(t=this.getColumnItem(t)))return;if(!this.isColumnSortable(t))return;t===this.sortColumn?t.sortAsc=!t.sortAsc:d.hasOwn(t,"sortAsc")||(t.sortAsc=this.options.sortAsc),this.sortColumn=t;if(this.getRowsLength()-this.frozenInfo.rows<2)return;if(!this.headerCreated)return;this.updateRowsSort()&&(this.renderHeaderSort(),this.flushSort(),this.render("rows"))},renderHeaderSort:function(){const t=this.sortColumn;if(!t)return this;if(!this.isColumnSortable(t))return this;this.$header.find(".tg-column-sorted").removeClass("tg-column-sorted");const e=t.tg_view_index,i=this.$header.find(`.tg-header-item[column='${e}']`).find(".tg-column-header").addClass("tg-column-sorted");return t.sortAsc?i.removeClass("tg-sort-desc").addClass("tg-sort-asc"):i.removeClass("tg-sort-asc").addClass("tg-sort-desc"),this},getSortComparer:function(t){const e=t.comparer;if("function"==typeof e)return e;const i=this.options.sortComparers,o=i[e||t.type];return"function"==typeof o?o:i.string},updateRowsSort:function(){const t=this.sortColumn;if(!t)return!1;const e=t.id;return!!e&&this.sortRows(e,t)},sortRows:function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=e.sortAsc?-1:1,o=this.options.sortBlankValueBottom?1:i,n=this.getSortComparer(e);let s=!1;const r=new Dt({ignore:function(t){return t.tg_frozen?{item:t,top:!0}:t.sortFixed?{item:t,top:"top"===t.sortFixed}:void 0},sortField:t,sortFactor:i,sortBlankFactor:o,sortComparer:n}),l=function(t){r.sortList(t)&&(s=!0),t.forEach((function(t,e){t.tg_sub_index=e,t.subs&&l(t.subs)}))};return l(this.rows),s&&this.initRowsHandler(),s}},At={default:{},lightblue:{rowHeight:35,scrollbarSize:10,scrollbarRound:!0},dark:{}},Wt={getAllThemes:function(){return Object.keys(At)},getThemeOptions:function(t){return At[t]}},Ft={update:function(){return this.flushBody(),this.render("rows"),this},updateRow:function(t,e){const i=this.getRowItem(t);if(!i)return this;if(e&&"object"==typeof e){const t=this.getItemSnapshot(e);Object.keys(t).forEach((function(e){i[e]=t[e]}))}return this.flushRow(i.tg_view_index),this.render("rows"),this},updateCell:function(t,e,i){const o=this.getRowItem(t);if(!o)return this;const n=this.getColumnItem(e);return n?(arguments.length>2&&(o[n.id]=i),this.flushCell(o.tg_view_index,n.tg_view_index),this.render("rows"),this):this},onNextUpdated:function(t){return"function"!=typeof t||this.once(y.onUpdated,t),this}},Gt={getViewport:function(){this.scrollLeft=this.getScrollLeft(),this.scrollTop=this.getScrollTop();return{rows:this.getViewportRows(),columns:this.getViewportColumns()}},getViewportRows:function(){const t=[],e=this.viewRows,i=e.length;if(!i)return t;let o=this.options.rowCacheLength;o=d.clamp(d.toNum(o,!0),0,i);const n=this.frozenInfo.rows;if(n){let e=0;for(;e1;){const n=Math.floor(.5*(e+i)),s=t[n],r=this.getRowTop(s),l=this.getRowHeight(s);if(or+l))return n;e=n}}const n=t[i];return o=e)return[];const i=[],o=this.frozenInfo.columns,n=this.viewColumns;for(let s=o,r=n.length;s0;){const n=t[0]-1;n>o&&t.unshift(n);const s=t[t.length-1]+1;si)&&!(n0&&(e.rows.length=o),i=t.options}return this.data=e,this.dataOptions=i,this}setDataSnapshot(t){return this.setData(this.generateDataSnapshot(t)),this}getData(){return this.data}toString(){return"[object Grid]"}}var Ut;Ut=jt.prototype,[v,R,S,T,E,I,L,x,z,F,G,j,K,q,J,Z,tt,et,pt,mt,bt,wt,vt,Ht,{keyTabHandler:function(t){},keyEnterHandler:function(t){},keyEscHandler:function(t){},keyPageUpHandler:function(t){return this.scrollPane.keyPageUpHandler(t)},keyPageDownHandler:function(t){return this.scrollPane.keyPageDownHandler(t)},keyEndHandler:function(t){return this.scrollPane.keyEndHandler(t)},keyHomeHandler:function(t){return this.scrollPane.keyHomeHandler(t)},keyLeftHandler:function(t){return this.scrollPaneHidden?this.scrollPaneFrozen.keyLeftHandler(t):this.scrollPane.keyLeftHandler(t)},keyUpHandler:function(t){return this.scrollPane.keyUpHandler(t)},keyRightHandler:function(t){return this.scrollPaneHidden?this.scrollPaneFrozen.keyRightHandler(t):this.scrollPane.keyRightHandler(t)},keyDownHandler:function(t){return this.scrollPane.keyDownHandler(t)}},Ct,yt,Rt,St,Tt,{showRow:function(t){return this.updateRowsInvisible(this.toRowItemList(t),!1)},hideRow:function(t){return this.updateRowsInvisible(this.toRowItemList(t),!0)},updateRowsInvisible:function(t,e){if(!t.length)return!1;const i=[];return t.forEach((t=>{t.invisible!==e&&(t.invisible=e,t.tg_invisible=e,i.push(t))})),!!i.length&&(this.update(),!0)}},Et,It,Lt,xt,zt,Vt,Ot,$t,Bt,Wt,Ft,Gt].forEach((t=>{for(const e in t){if(d.hasOwn(Ut,e))throw new Error(`ERROR: extends with an existing key: "${e}"`);Ut[e]=t[e]}}));const Xt=jt,Yt=e.VERSION,Kt=e.TIMESTAMP,qt={VERSION:Yt,TIMESTAMP:Kt,Grid:Xt,$:w,CONST:e,EventBase:k,Icon:X,Motion:B,ScrollPane:kt,Util:d}})();var n=o.$,s=o.MP,r=o._d,l=o.xA,h=o.In,a=o.T8,c=o.Gr,d=o.ht,u=o.J0,g=o.xv,f=o.Ay;export{n as $,s as CONST,r as EventBase,l as Grid,h as Icon,a as Motion,c as ScrollPane,d as TIMESTAMP,u as Util,g as VERSION,f as default}; \ No newline at end of file diff --git a/model-list.json b/model-list.json index 5c3eb391..b853fbc4 100644 --- a/model-list.json +++ b/model-list.json @@ -8,7 +8,8 @@ "description": "(SD3 Verison) To view the preview in high quality while running samples in ComfyUI, you will need this model.", "reference": "https://github.com/madebyollin/taesd", "filename": "taesd3_decoder.pth", - "url": "https://github.com/madebyollin/taesd/raw/main/taesd3_decoder.pth" + "url": "https://github.com/madebyollin/taesd/raw/main/taesd3_decoder.pth", + "size": "4.94MB" }, { "name": "TAESD3 Encoder", @@ -18,7 +19,8 @@ "description": "(SD3 Verison) To view the preview in high quality while running samples in ComfyUI, you will need this model.", "reference": "https://github.com/madebyollin/taesd", "filename": "taesd3_encoder.pth", - "url": "https://github.com/madebyollin/taesd/raw/main/taesd3_encoder.pth" + "url": "https://github.com/madebyollin/taesd/raw/main/taesd3_encoder.pth", + "size": "4.94MB" }, { "name": "TAESDXL Decoder", @@ -28,7 +30,8 @@ "description": "(SDXL Verison) To view the preview in high quality while running samples in ComfyUI, you will need this model.", "reference": "https://github.com/madebyollin/taesd", "filename": "taesdxl_decoder.pth", - "url": "https://github.com/madebyollin/taesd/raw/main/taesdxl_decoder.pth" + "url": "https://github.com/madebyollin/taesd/raw/main/taesdxl_decoder.pth", + "size": "4.91MB" }, { "name": "TAESDXL Encoder", @@ -38,7 +41,8 @@ "description": "(SDXL Verison) To view the preview in high quality while running samples in ComfyUI, you will need this model.", "reference": "https://github.com/madebyollin/taesd", "filename": "taesdxl_encoder.pth", - "url": "https://github.com/madebyollin/taesd/raw/main/taesdxl_encoder.pth" + "url": "https://github.com/madebyollin/taesd/raw/main/taesdxl_encoder.pth", + "size": "4.91MB" }, { "name": "TAESD Decoder", @@ -48,7 +52,8 @@ "description": "To view the preview in high quality while running samples in ComfyUI, you will need this model.", "reference": "https://github.com/madebyollin/taesd", "filename": "taesd_decoder.pth", - "url": "https://github.com/madebyollin/taesd/raw/main/taesd_decoder.pth" + "url": "https://github.com/madebyollin/taesd/raw/main/taesd_decoder.pth", + "size": "4.91MB" }, { "name": "TAESD Encoder", @@ -58,7 +63,8 @@ "description": "To view the preview in high quality while running samples in ComfyUI, you will need this model.", "reference": "https://github.com/madebyollin/taesd", "filename": "taesd_encoder.pth", - "url": "https://github.com/madebyollin/taesd/raw/main/taesd_encoder.pth" + "url": "https://github.com/madebyollin/taesd/raw/main/taesd_encoder.pth", + "size": "4.91MB" }, { "name": "RealESRGAN x2", @@ -68,7 +74,8 @@ "description": "RealESRGAN x2 upscaler model", "reference": "https://huggingface.co/ai-forever/Real-ESRGAN", "filename": "RealESRGAN_x2.pth", - "url": "https://huggingface.co/ai-forever/Real-ESRGAN/resolve/main/RealESRGAN_x2.pth" + "url": "https://huggingface.co/ai-forever/Real-ESRGAN/resolve/main/RealESRGAN_x2.pth", + "size": "67.1MB" }, { "name": "RealESRGAN x4", @@ -78,7 +85,8 @@ "description": "RealESRGAN x4 upscaler model", "reference": "https://huggingface.co/ai-forever/Real-ESRGAN", "filename": "RealESRGAN_x4.pth", - "url": "https://huggingface.co/ai-forever/Real-ESRGAN/resolve/main/RealESRGAN_x4.pth" + "url": "https://huggingface.co/ai-forever/Real-ESRGAN/resolve/main/RealESRGAN_x4.pth", + "size": "67.0MB" }, { "name": "ESRGAN x4", @@ -88,7 +96,8 @@ "description": "ESRGAN x4 upscaler model", "reference": "https://huggingface.co/Afizi/ESRGAN_4x.pth", "filename": "ESRGAN_4x.pth", - "url": "https://huggingface.co/Afizi/ESRGAN_4x.pth/resolve/main/ESRGAN_4x.pth" + "url": "https://huggingface.co/Afizi/ESRGAN_4x.pth/resolve/main/ESRGAN_4x.pth", + "size": "66.9MB" }, { "name": "4x_foolhardy_Remacri", @@ -98,7 +107,8 @@ "description": "4x_foolhardy_Remacri upscaler model", "reference": "https://huggingface.co/FacehugmanIII/4x_foolhardy_Remacri", "filename": "4x_foolhardy_Remacri.pth", - "url": "https://huggingface.co/FacehugmanIII/4x_foolhardy_Remacri/resolve/main/4x_foolhardy_Remacri.pth" + "url": "https://huggingface.co/FacehugmanIII/4x_foolhardy_Remacri/resolve/main/4x_foolhardy_Remacri.pth", + "size": "67.0MB" }, { "name": "4x-AnimeSharp", @@ -108,7 +118,8 @@ "description": "4x-AnimeSharp upscaler model", "reference": "https://huggingface.co/Kim2091/AnimeSharp/", "filename": "4x-AnimeSharp.pth", - "url": "https://huggingface.co/Kim2091/AnimeSharp/resolve/main/4x-AnimeSharp.pth" + "url": "https://huggingface.co/Kim2091/AnimeSharp/resolve/main/4x-AnimeSharp.pth", + "size": "67.0MB" }, { "name": "4x-UltraSharp", @@ -118,7 +129,8 @@ "description": "4x-UltraSharp upscaler model", "reference": "https://huggingface.co/Kim2091/UltraSharp/", "filename": "4x-UltraSharp.pth", - "url": "https://huggingface.co/Kim2091/UltraSharp/resolve/main/4x-UltraSharp.pth" + "url": "https://huggingface.co/Kim2091/UltraSharp/resolve/main/4x-UltraSharp.pth", + "size": "67.0MB" }, { "name": "4x_NMKD-Siax_200k", @@ -128,7 +140,8 @@ "description": "4x_NMKD-Siax_200k upscaler model", "reference": "https://huggingface.co/gemasai/4x_NMKD-Siax_200k", "filename": "4x_NMKD-Siax_200k.pth", - "url": "https://huggingface.co/gemasai/4x_NMKD-Siax_200k/resolve/main/4x_NMKD-Siax_200k.pth" + "url": "https://huggingface.co/gemasai/4x_NMKD-Siax_200k/resolve/main/4x_NMKD-Siax_200k.pth", + "size": "67.0MB" }, { "name": "8x_NMKD-Superscale_150000_G", @@ -138,7 +151,8 @@ "description": "8x_NMKD-Superscale_150000_G upscaler model", "reference": "https://huggingface.co/uwg/upscaler", "filename": "8x_NMKD-Superscale_150000_G.pth", - "url": "https://huggingface.co/uwg/upscaler/resolve/main/ESRGAN/8x_NMKD-Superscale_150000_G.pth" + "url": "https://huggingface.co/uwg/upscaler/resolve/main/ESRGAN/8x_NMKD-Superscale_150000_G.pth", + "size": "67.1MB" }, { "name": "8x_NMKD-Faces_160000_G", @@ -148,7 +162,8 @@ "description": "8x_NMKD-Faces_160000_G upscaler model", "reference": "https://huggingface.co/gemasai/8x_NMKD-Faces_160000_G/tree/main", "filename": "8x_NMKD-Faces_160000_G.pth", - "url": "https://huggingface.co/gemasai/8x_NMKD-Faces_160000_G/resolve/main/8x_NMKD-Faces_160000_G.pth" + "url": "https://huggingface.co/gemasai/8x_NMKD-Faces_160000_G/resolve/main/8x_NMKD-Faces_160000_G.pth", + "size": "67.2MB" }, { "name": "LDSR(Latent Diffusion Super Resolution)", @@ -158,37 +173,41 @@ "description": "LDSR upscale model. Through the [a/ComfyUI-Flowty-LDSR](https://github.com/flowtyone/ComfyUI-Flowty-LDSR) extension, the upscale model can be utilized.", "reference": "https://github.com/CompVis/latent-diffusion", "filename": "last.ckpt", - "url": "https://heibox.uni-heidelberg.de/f/578df07c8fc04ffbadf3/?dl=1" + "url": "https://heibox.uni-heidelberg.de/f/578df07c8fc04ffbadf3/?dl=1", + "size": "2.04GB" }, { "name": "stabilityai/stable-diffusion-x4-upscaler", "type": "checkpoints", "base": "upscale", "save_path": "checkpoints/upscale", - "description": "[3.53GB] This upscaling model is a latent text-guided diffusion model and should be used with SD_4XUpscale_Conditioning and KSampler.", + "description": "This upscaling model is a latent text-guided diffusion model and should be used with SD_4XUpscale_Conditioning and KSampler.", "reference": "https://huggingface.co/stabilityai/stable-diffusion-x4-upscaler", "filename": "x4-upscaler-ema.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-x4-upscaler/resolve/main/x4-upscaler-ema.safetensors" + "url": "https://huggingface.co/stabilityai/stable-diffusion-x4-upscaler/resolve/main/x4-upscaler-ema.safetensors", + "size": "3.53GB" }, { "name": "Inswapper-fp16 (face swap)", "type": "insightface", - "base" : "inswapper", + "base": "inswapper", "save_path": "insightface", - "description": "[264MB] Checkpoint of the insightface swapper model\n(used by ComfyUI-FaceSwap, comfyui-reactor-node, CharacterFaceSwap,\nComfyUI roop and comfy_mtb)", + "description": "Checkpoint of the insightface swapper model\n(used by ComfyUI-FaceSwap, comfyui-reactor-node, CharacterFaceSwap,\nComfyUI roop and comfy_mtb)", "reference": "https://github.com/facefusion/facefusion-assets", "filename": "inswapper_128_fp16.onnx", - "url": "https://github.com/facefusion/facefusion-assets/releases/download/models/inswapper_128_fp16.onnx" + "url": "https://github.com/facefusion/facefusion-assets/releases/download/models/inswapper_128_fp16.onnx", + "size": "277.7MB" }, { "name": "Inswapper (face swap)", "type": "insightface", - "base" : "inswapper", + "base": "inswapper", "save_path": "insightface", - "description": "[529MB] Checkpoint of the insightface swapper model\n(used by ComfyUI-FaceSwap, comfyui-reactor-node, CharacterFaceSwap,\nComfyUI roop and comfy_mtb)", + "description": "Checkpoint of the insightface swapper model\n(used by ComfyUI-FaceSwap, comfyui-reactor-node, CharacterFaceSwap,\nComfyUI roop and comfy_mtb)", "reference": "https://github.com/facefusion/facefusion-assets", "filename": "inswapper_128.onnx", - "url": "https://github.com/facefusion/facefusion-assets/releases/download/models/inswapper_128.onnx" + "url": "https://github.com/facefusion/facefusion-assets/releases/download/models/inswapper_128.onnx", + "size": "555.3MB" }, { "name": "Deepbump", @@ -198,8 +217,9 @@ "description": "Checkpoint of the deepbump model to generate height and normal maps textures from an image (requires comfy_mtb)", "reference": "https://github.com/HugoTini/DeepBump", "filename": "deepbump256.onnx", - "url": "https://github.com/HugoTini/DeepBump/raw/master/deepbump256.onnx" - }, + "url": "https://github.com/HugoTini/DeepBump/raw/master/deepbump256.onnx", + "size": "26.7MB" + }, { "name": "GFPGAN 1.3", "type": "face_restore", @@ -208,7 +228,8 @@ "description": "Face restoration", "reference": "https://github.com/TencentARC/GFPGAN", "filename": "GFPGANv1.3.pth", - "url": "https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth" + "url": "https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth", + "size": "348.6MB" }, { "name": "GFPGAN 1.4", @@ -218,8 +239,9 @@ "description": "Face restoration", "reference": "https://github.com/TencentARC/GFPGAN", "filename": "GFPGANv1.4.pth", - "url": "https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.4.pth" - }, + "url": "https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.4.pth", + "size": "348.6MB" + }, { "name": "RestoreFormer", "type": "face_restore", @@ -228,7 +250,8 @@ "description": "Face restoration", "reference": "https://github.com/TencentARC/GFPGAN", "filename": "RestoreFormer.pth", - "url": "https://github.com/TencentARC/GFPGAN/releases/download/v1.3.4/RestoreFormer.pth" + "url": "https://github.com/TencentARC/GFPGAN/releases/download/v1.3.4/RestoreFormer.pth", + "size": "290.8MB" }, { "name": "Stable Video Diffusion Image-to-Video", @@ -238,7 +261,8 @@ "description": "Stable Video Diffusion (SVD) Image-to-Video is a diffusion model that takes in a still image as a conditioning frame, and generates a video from it.\nNOTE: 14 frames @ 576x1024", "reference": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid", "filename": "svd.safetensors", - "url": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid/resolve/main/svd.safetensors" + "url": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid/resolve/main/svd.safetensors", + "size": "9.56GB" }, { "name": "stabilityai/Stable Zero123", @@ -248,7 +272,8 @@ "description": "Stable Zero123 is a model for view-conditioned image generation based on [a/Zero123](https://github.com/cvlab-columbia/zero123).", "reference": "https://huggingface.co/stabilityai/stable-zero123", "filename": "stable_zero123.ckpt", - "url": "https://huggingface.co/stabilityai/stable-zero123/resolve/main/stable_zero123.ckpt" + "url": "https://huggingface.co/stabilityai/stable-zero123/resolve/main/stable_zero123.ckpt", + "size": "8.58GB" }, { "name": "Stable Video Diffusion Image-to-Video (XT)", @@ -258,7 +283,8 @@ "description": "Stable Video Diffusion (SVD) Image-to-Video is a diffusion model that takes in a still image as a conditioning frame, and generates a video from it.\nNOTE: 25 frames @ 576x1024 ", "reference": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt", "filename": "svd_xt.safetensors", - "url": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt/resolve/main/svd_xt.safetensors" + "url": "https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt/resolve/main/svd_xt.safetensors", + "size": "9.56GB" }, { "name": "negative_hand Negative Embedding", @@ -268,7 +294,8 @@ "description": "If you use this embedding with negatives, you can solve the issue of damaging your hands.", "reference": "https://civitai.com/models/56519/negativehand-negative-embedding", "filename": "negative_hand-neg.pt", - "url": "https://civitai.com/api/download/models/60938" + "url": "https://civitai.com/api/download/models/60938", + "size": "25KB" }, { "name": "bad_prompt Negative Embedding", @@ -278,7 +305,8 @@ "description": "The idea behind this embedding was to somehow train the negative prompt as an embedding, thus unifying the basis of the negative prompt into one word or embedding.", "reference": "https://civitai.com/models/55700/badprompt-negative-embedding", "filename": "bad_prompt_version2-neg.pt", - "url": "https://civitai.com/api/download/models/60095" + "url": "https://civitai.com/api/download/models/60095", + "size": "25KB" }, { "name": "Deep Negative V1.75", @@ -288,7 +316,8 @@ "description": "These embedding learn what disgusting compositions and color patterns are, including faulty human anatomy, offensive color schemes, upside-down spatial structures, and more. Placing it in the negative can go a long way to avoiding these things.", "reference": "https://civitai.com/models/4629/deep-negative-v1x", "filename": "ng_deepnegative_v1_75t.pt", - "url": "https://civitai.com/api/download/models/5637" + "url": "https://civitai.com/api/download/models/5637", + "size": "226KB" }, { "name": "EasyNegative", @@ -298,159 +327,173 @@ "description": "This embedding should be used in your NEGATIVE prompt. Adjust the strength as desired (seems to scale well without any distortions), the strength required may vary based on positive and negative prompts.", "reference": "https://civitai.com/models/7808/easynegative", "filename": "easynegative.safetensors", - "url": "https://civitai.com/api/download/models/9208" + "url": "https://civitai.com/api/download/models/9208", + "size": "25KB" }, - { "name": "stabilityai/comfyui_checkpoints/stable_cascade_stage_b.safetensors", "type": "checkpoints", "base": "Stable Cascade", "save_path": "checkpoints/Stable-Cascade", - "description": "[4.55GB] Stable Cascade stage_b checkpoints", + "description": "Stable Cascade stage_b checkpoints", "reference": "https://huggingface.co/stabilityai/stable-cascade", "filename": "stable_cascade_stage_b.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/comfyui_checkpoints/stable_cascade_stage_b.safetensors" + "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/comfyui_checkpoints/stable_cascade_stage_b.safetensors", + "size": "4.55GB" }, { "name": "stabilityai/comfyui_checkpoints/stable_cascade_stage_c.safetensors", "type": "checkpoints", "base": "Stable Cascade", "save_path": "checkpoints/Stable-Cascade", - "description": "[9.22GB] Stable Cascade stage_c checkpoints", + "description": "Stable Cascade stage_c checkpoints", "reference": "https://huggingface.co/stabilityai/stable-cascade", "filename": "stable_cascade_stage_c.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/comfyui_checkpoints/stable_cascade_stage_c.safetensors" + "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/comfyui_checkpoints/stable_cascade_stage_c.safetensors", + "size": "9.22GB" }, { "name": "stabilityai/Stable Cascade: stage_a.safetensors (VAE)", "type": "VAE", "base": "Stable Cascade", "save_path": "vae/Stable-Cascade", - "description": "[73.7MB] Stable Cascade: stage_a", + "description": "Stable Cascade: stage_a", "reference": "https://huggingface.co/stabilityai/stable-cascade", "filename": "stage_a.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_a.safetensors" + "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_a.safetensors", + "size": "73.7MB" }, { "name": "stabilityai/Stable Cascade: effnet_encoder.safetensors (VAE)", "type": "VAE", "base": "Stable Cascade", "save_path": "vae/Stable-Cascade", - "description": "[81.5MB] Stable Cascade: effnet_encoder.\nVAE encoder for stage_c latent.", + "description": "Stable Cascade: effnet_encoder.\nVAE encoder for stage_c latent.", "reference": "https://huggingface.co/stabilityai/stable-cascade", "filename": "effnet_encoder.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/effnet_encoder.safetensors" + "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/effnet_encoder.safetensors", + "size": "81.5MB" }, { "name": "stabilityai/Stable Cascade: stage_b.safetensors (UNET)", "type": "unet", "base": "Stable Cascade", "save_path": "unet/Stable-Cascade", - "description": "[6.25GB] Stable Cascade: stage_b", + "description": "Stable Cascade: stage_b", "reference": "https://huggingface.co/stabilityai/stable-cascade", "filename": "stage_b.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_b.safetensors" + "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_b.safetensors", + "size": "6.25GB" }, { "name": "stabilityai/Stable Cascade: stage_b_bf16.safetensors (UNET)", "type": "unet", "base": "Stable Cascade", "save_path": "unet/Stable-Cascade", - "description": "[3.13GB] Stable Cascade: stage_b/bf16", + "description": "Stable Cascade: stage_b/bf16", "reference": "https://huggingface.co/stabilityai/stable-cascade", "filename": "stage_b_bf16.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_b_bf16.safetensors" + "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_b_bf16.safetensors", + "size": "3.13GB" }, { "name": "stabilityai/Stable Cascade: stage_b_lite.safetensors (UNET)", "type": "unet", "base": "Stable Cascade", "save_path": "unet/Stable-Cascade", - "description": "[2.8GB] Stable Cascade: stage_b/lite", + "description": "Stable Cascade: stage_b/lite", "reference": "https://huggingface.co/stabilityai/stable-cascade", "filename": "stage_b_lite.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_b_lite.safetensors" + "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_b_lite.safetensors", + "size": "2.80GB" }, { "name": "stabilityai/Stable Cascade: stage_b_lite.safetensors (UNET)", "type": "unet", "base": "Stable Cascade", "save_path": "unet/Stable-Cascade", - "description": "[1.4GB] Stable Cascade: stage_b/bf16,lite", + "description": "Stable Cascade: stage_b/bf16,lite", "reference": "https://huggingface.co/stabilityai/stable-cascade", "filename": "stage_b_lite_bf16.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_b_lite_bf16.safetensors" + "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_b_lite_bf16.safetensors", + "size": "1.40GB" }, { "name": "stabilityai/Stable Cascade: stage_c.safetensors (UNET)", "type": "unet", "base": "Stable Cascade", "save_path": "unet/Stable-Cascade", - "description": "[14.4GB] Stable Cascade: stage_c", + "description": "Stable Cascade: stage_c", "reference": "https://huggingface.co/stabilityai/stable-cascade", "filename": "stage_c.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c.safetensors" + "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c.safetensors", + "size": "14.4GB" }, { "name": "stabilityai/Stable Cascade: stage_c_bf16.safetensors (UNET)", "type": "unet", "base": "Stable Cascade", "save_path": "unet/Stable-Cascade", - "description": "[7.18GB] Stable Cascade: stage_c/bf16", + "description": "Stable Cascade: stage_c/bf16", "reference": "https://huggingface.co/stabilityai/stable-cascade", "filename": "stage_c_bf16.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c_bf16.safetensors" + "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c_bf16.safetensors", + "size": "7.18GB" }, { "name": "stabilityai/Stable Cascade: stage_c_lite.safetensors (UNET)", "type": "unet", "base": "Stable Cascade", "save_path": "unet/Stable-Cascade", - "description": "[4.12GB] Stable Cascade: stage_c/lite", + "description": "Stable Cascade: stage_c/lite", "reference": "https://huggingface.co/stabilityai/stable-cascade", "filename": "stage_c_lite.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c_lite.safetensors" + "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c_lite.safetensors", + "size": "4.12GB" }, { "name": "stabilityai/Stable Cascade: stage_c_lite.safetensors (UNET)", "type": "unet", "base": "Stable Cascade", "save_path": "unet/Stable-Cascade", - "description": "[2.06GB] Stable Cascade: stage_c/bf16,lite", + "description": "Stable Cascade: stage_c/bf16,lite", "reference": "https://huggingface.co/stabilityai/stable-cascade", "filename": "stage_c_lite_bf16.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c_lite_bf16.safetensors" + "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/stage_c_lite_bf16.safetensors", + "size": "2.06GB" }, { "name": "stabilityai/Stable Cascade: text_encoder (CLIP)", "type": "clip", "base": "Stable Cascade", "save_path": "clip/Stable-Cascade", - "description": "[1.39GB] Stable Cascade: text_encoder", + "description": "Stable Cascade: text_encoder", "reference": "https://huggingface.co/stabilityai/stable-cascade", "filename": "model.safetensors", - "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/text_encoder/model.safetensors" + "url": "https://huggingface.co/stabilityai/stable-cascade/resolve/main/text_encoder/model.safetensors", + "size": "1.39GB" }, - { "name": "SDXL-Turbo 1.0 (fp16)", "type": "checkpoints", "base": "SDXL", "save_path": "checkpoints/SDXL-TURBO", - "description": "[6.9GB] SDXL-Turbo 1.0 fp16", + "description": "SDXL-Turbo 1.0 fp16", "reference": "https://huggingface.co/stabilityai/sdxl-turbo", "filename": "sd_xl_turbo_1.0_fp16.safetensors", - "url": "https://huggingface.co/stabilityai/sdxl-turbo/resolve/main/sd_xl_turbo_1.0_fp16.safetensors" + "url": "https://huggingface.co/stabilityai/sdxl-turbo/resolve/main/sd_xl_turbo_1.0_fp16.safetensors", + "size": "6.94GB" }, { "name": "SDXL-Turbo 1.0", "type": "checkpoints", "base": "SDXL", "save_path": "checkpoints/SDXL-TURBO", - "description": "[13.9GB] SDXL-Turbo 1.0", + "description": "SDXL-Turbo 1.0", "reference": "https://huggingface.co/stabilityai/sdxl-turbo", "filename": "sd_xl_turbo_1.0.safetensors", - "url": "https://huggingface.co/stabilityai/sdxl-turbo/resolve/main/sd_xl_turbo_1.0.safetensors" + "url": "https://huggingface.co/stabilityai/sdxl-turbo/resolve/main/sd_xl_turbo_1.0.safetensors", + "size": "13.9GB" }, { "name": "sd_xl_base_1.0_0.9vae.safetensors", @@ -460,7 +503,8 @@ "description": "Stable Diffusion XL base model (VAE 0.9)", "reference": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0", "filename": "sd_xl_base_1.0_0.9vae.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0_0.9vae.safetensors" + "url": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0_0.9vae.safetensors", + "size": "6.94GB" }, { "name": "sd_xl_base_1.0.safetensors", @@ -470,7 +514,8 @@ "description": "Stable Diffusion XL base model", "reference": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0", "filename": "sd_xl_base_1.0.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors" + "url": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors", + "size": "6.94GB" }, { "name": "sd_xl_refiner_1.0_0.9vae.safetensors", @@ -480,7 +525,8 @@ "description": "Stable Diffusion XL refiner model (VAE 0.9)", "reference": "https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0", "filename": "sd_xl_refiner_1.0_0.9vae.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/resolve/main/sd_xl_refiner_1.0_0.9vae.safetensors" + "url": "https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/resolve/main/sd_xl_refiner_1.0_0.9vae.safetensors", + "size": "6.08GB" }, { "name": "stable-diffusion-xl-refiner-1.0", @@ -490,27 +536,30 @@ "description": "Stable Diffusion XL refiner model", "reference": "https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0", "filename": "sd_xl_refiner_1.0.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/resolve/main/sd_xl_refiner_1.0.safetensors" + "url": "https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0/resolve/main/sd_xl_refiner_1.0.safetensors", + "size": "6.08GB" }, { "name": "diffusers/stable-diffusion-xl-1.0-inpainting-0.1 (UNET/fp16)", "type": "unet", "base": "SDXL", "save_path": "unet/xl-inpaint-0.1", - "description": "[5.14GB] Stable Diffusion XL inpainting model 0.1. You need UNETLoader instead of CheckpointLoader.", + "description": "Stable Diffusion XL inpainting model 0.1. You need UNETLoader instead of CheckpointLoader.", "reference": "https://huggingface.co/diffusers/stable-diffusion-xl-1.0-inpainting-0.1", "filename": "diffusion_pytorch_model.fp16.safetensors", - "url": "https://huggingface.co/diffusers/stable-diffusion-xl-1.0-inpainting-0.1/resolve/main/unet/diffusion_pytorch_model.fp16.safetensors" + "url": "https://huggingface.co/diffusers/stable-diffusion-xl-1.0-inpainting-0.1/resolve/main/unet/diffusion_pytorch_model.fp16.safetensors", + "size": "5.14GB" }, { "name": "diffusers/stable-diffusion-xl-1.0-inpainting-0.1 (UNET)", "type": "unet", "base": "SDXL", "save_path": "unet/xl-inpaint-0.1", - "description": "[10.3GB] Stable Diffusion XL inpainting model 0.1. You need UNETLoader instead of CheckpointLoader.", + "description": "Stable Diffusion XL inpainting model 0.1. You need UNETLoader instead of CheckpointLoader.", "reference": "https://huggingface.co/diffusers/stable-diffusion-xl-1.0-inpainting-0.1", "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/diffusers/stable-diffusion-xl-1.0-inpainting-0.1/resolve/main/unet/diffusion_pytorch_model.safetensors" + "url": "https://huggingface.co/diffusers/stable-diffusion-xl-1.0-inpainting-0.1/resolve/main/unet/diffusion_pytorch_model.safetensors", + "size": "10.3GB" }, { "name": "sd_xl_offset_example-lora_1.0.safetensors", @@ -520,9 +569,9 @@ "description": "Stable Diffusion XL offset LoRA", "reference": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0", "filename": "sd_xl_offset_example-lora_1.0.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_offset_example-lora_1.0.safetensors" + "url": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_offset_example-lora_1.0.safetensors", + "size": "49.6MB" }, - { "name": "SDXL Lightning LoRA (2step)", "type": "lora", @@ -531,7 +580,8 @@ "description": "SDXL Lightning LoRA (2step)", "reference": "https://huggingface.co/ByteDance/SDXL-Lightning", "filename": "sdxl_lightning_2step_lora.safetensors", - "url": "https://huggingface.co/ByteDance/SDXL-Lightning/resolve/main/sdxl_lightning_2step_lora.safetensors" + "url": "https://huggingface.co/ByteDance/SDXL-Lightning/resolve/main/sdxl_lightning_2step_lora.safetensors", + "size": "393.9MB" }, { "name": "SDXL Lightning LoRA (4step)", @@ -541,7 +591,8 @@ "description": "SDXL Lightning LoRA (4step)", "reference": "https://huggingface.co/ByteDance/SDXL-Lightning", "filename": "sdxl_lightning_4step_lora.safetensors", - "url": "https://huggingface.co/ByteDance/SDXL-Lightning/resolve/main/sdxl_lightning_4step_lora.safetensors" + "url": "https://huggingface.co/ByteDance/SDXL-Lightning/resolve/main/sdxl_lightning_4step_lora.safetensors", + "size": "393.9MB" }, { "name": "SDXL Lightning LoRA (8step)", @@ -551,9 +602,21 @@ "description": "SDXL Lightning LoRA (8tep)", "reference": "https://huggingface.co/ByteDance/SDXL-Lightning", "filename": "sdxl_lightning_8step_lora.safetensors", - "url": "https://huggingface.co/ByteDance/SDXL-Lightning/resolve/main/sdxl_lightning_8step_lora.safetensors" + "url": "https://huggingface.co/ByteDance/SDXL-Lightning/resolve/main/sdxl_lightning_8step_lora.safetensors", + "size": "393.9MB" + }, + + { + "name": "google-t5/t5-base", + "type": "clip", + "base": "t5-base", + "save_path": "clip/t5-base", + "description": "T5 Base: Text-To-Text Transfer Transformer. This model can be loaded via CLIPLoader for Stable Audio workflow.", + "reference": "https://huggingface.co/google-t5/t5-base", + "filename": "model.safetensors", + "url": "https://huggingface.co/google-t5/t5-base/resolve/main/model.safetensors", + "size": "892MB" }, - { "name": "v1-5-pruned-emaonly.ckpt", @@ -563,7 +626,8 @@ "description": "Stable Diffusion 1.5 base model", "reference": "https://huggingface.co/runwayml/stable-diffusion-v1-5", "filename": "v1-5-pruned-emaonly.ckpt", - "url": "https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt" + "url": "https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.ckpt", + "size": "4.27GB" }, { "name": "v2-1_512-ema-pruned.safetensors", @@ -573,7 +637,8 @@ "description": "Stable Diffusion 2 base model (512)", "reference": "https://huggingface.co/stabilityai/stable-diffusion-2-1-base", "filename": "v2-1_512-ema-pruned.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-2-1-base/resolve/main/v2-1_512-ema-pruned.safetensors" + "url": "https://huggingface.co/stabilityai/stable-diffusion-2-1-base/resolve/main/v2-1_512-ema-pruned.safetensors", + "size": "5.21GB" }, { "name": "v2-1_768-ema-pruned.safetensors", @@ -583,7 +648,8 @@ "description": "Stable Diffusion 2 base model (768)", "reference": "https://huggingface.co/stabilityai/stable-diffusion-2-1", "filename": "v2-1_768-ema-pruned.safetensors", - "url": "https://huggingface.co/stabilityai/stable-diffusion-2-1/resolve/main/v2-1_768-ema-pruned.safetensors" + "url": "https://huggingface.co/stabilityai/stable-diffusion-2-1/resolve/main/v2-1_768-ema-pruned.safetensors", + "size": "5.21GB" }, { "name": "AbyssOrangeMix2 (hard)", @@ -593,7 +659,8 @@ "description": "AbyssOrangeMix2 - hard version (anime style)", "reference": "https://huggingface.co/WarriorMama777/OrangeMixs", "filename": "AbyssOrangeMix2_hard.safetensors", - "url": "https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix2/AbyssOrangeMix2_hard.safetensors" + "url": "https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix2/AbyssOrangeMix2_hard.safetensors", + "size": "5.57GB" }, { "name": "AbyssOrangeMix3 A1", @@ -603,7 +670,8 @@ "description": "AbyssOrangeMix3 - A1 (anime style)", "reference": "https://huggingface.co/WarriorMama777/OrangeMixs", "filename": "AOM3A1_orangemixs.safetensors", - "url": "https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix3/AOM3A1_orangemixs.safetensors" + "url": "https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix3/AOM3A1_orangemixs.safetensors", + "size": "2.13GB" }, { "name": "AbyssOrangeMix3 A3", @@ -613,7 +681,8 @@ "description": "AbyssOrangeMix - A3 (anime style)", "reference": "https://huggingface.co/WarriorMama777/OrangeMixs", "filename": "AOM3A3_orangemixs.safetensors", - "url": "https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix3/AOM3A3_orangemixs.safetensors" + "url": "https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/Models/AbyssOrangeMix3/AOM3A3_orangemixs.safetensors", + "size": "2.13GB" }, { "name": "Waifu Diffusion 1.5 Beta3 (fp16)", @@ -623,7 +692,8 @@ "description": "Waifu Diffusion 1.5 Beta3", "reference": "https://huggingface.co/waifu-diffusion/wd-1-5-beta3", "filename": "wd-illusion-fp16.safetensors", - "url": "https://huggingface.co/waifu-diffusion/wd-1-5-beta3/resolve/main/wd-illusion-fp16.safetensors" + "url": "https://huggingface.co/waifu-diffusion/wd-1-5-beta3/resolve/main/wd-illusion-fp16.safetensors", + "size": "2.58GB" }, { "name": "illuminatiDiffusionV1_v11 unCLIP model", @@ -633,7 +703,8 @@ "description": "Mix model (SD2.1 unCLIP + illuminatiDiffusionV1_v11)", "reference": "https://huggingface.co/comfyanonymous/illuminatiDiffusionV1_v11_unCLIP", "filename": "illuminatiDiffusionV1_v11-unclip-h-fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/illuminatiDiffusionV1_v11_unCLIP/resolve/main/illuminatiDiffusionV1_v11-unclip-h-fp16.safetensors" + "url": "https://huggingface.co/comfyanonymous/illuminatiDiffusionV1_v11_unCLIP/resolve/main/illuminatiDiffusionV1_v11-unclip-h-fp16.safetensors", + "size": "3.98GB" }, { "name": "Waifu Diffusion 1.5 unCLIP model", @@ -643,7 +714,8 @@ "description": "Mix model (SD2.1 unCLIP + Waifu Diffusion 1.5)", "reference": "https://huggingface.co/comfyanonymous/wd-1.5-beta2_unCLIP", "filename": "wd-1-5-beta2-aesthetic-unclip-h-fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/wd-1.5-beta2_unCLIP/resolve/main/wd-1-5-beta2-aesthetic-unclip-h-fp16.safetensors" + "url": "https://huggingface.co/comfyanonymous/wd-1.5-beta2_unCLIP/resolve/main/wd-1-5-beta2-aesthetic-unclip-h-fp16.safetensors", + "size": "3.98GB" }, { "name": "sdxl_vae.safetensors", @@ -653,7 +725,8 @@ "description": "SDXL-VAE", "reference": "https://huggingface.co/stabilityai/sdxl-vae", "filename": "sdxl_vae.safetensors", - "url": "https://huggingface.co/stabilityai/sdxl-vae/resolve/main/sdxl_vae.safetensors" + "url": "https://huggingface.co/stabilityai/sdxl-vae/resolve/main/sdxl_vae.safetensors", + "size": "334.6MB" }, { "name": "vae-ft-mse-840000-ema-pruned", @@ -663,7 +736,8 @@ "description": "vae-ft-mse-840000-ema-pruned", "reference": "https://huggingface.co/stabilityai/sd-vae-ft-mse-original", "filename": "vae-ft-mse-840000-ema-pruned.safetensors", - "url": "https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors" + "url": "https://huggingface.co/stabilityai/sd-vae-ft-mse-original/resolve/main/vae-ft-mse-840000-ema-pruned.safetensors", + "size": "334.6MB" }, { "name": "orangemix.vae", @@ -673,7 +747,8 @@ "description": "orangemix vae model", "reference": "https://huggingface.co/WarriorMama777/OrangeMixs", "filename": "orangemix.vae.pt", - "url": "https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/VAEs/orangemix.vae.pt" + "url": "https://huggingface.co/WarriorMama777/OrangeMixs/resolve/main/VAEs/orangemix.vae.pt", + "size": "822.8MB" }, { "name": "kl-f8-anime2", @@ -683,17 +758,19 @@ "description": "kl-f8-anime2 vae model", "reference": "https://huggingface.co/hakurei/waifu-diffusion-v1-4", "filename": "kl-f8-anime2.ckpt", - "url": "https://huggingface.co/hakurei/waifu-diffusion-v1-4/resolve/main/vae/kl-f8-anime2.ckpt" + "url": "https://huggingface.co/hakurei/waifu-diffusion-v1-4/resolve/main/vae/kl-f8-anime2.ckpt", + "size": "404.7MB" }, { "name": "OpenAI Consistency Decoder", "type": "VAE", "base": "SD1.5 VAE", "save_path": "vae/openai_consistency_decoder", - "description": "[2.3GB] OpenAI Consistency Decoder. Improved decoding for stable diffusion vaes.", + "description": "OpenAI Consistency Decoder. Improved decoding for stable diffusion vaes.", "reference": "https://github.com/openai/consistencydecoder", "filename": "decoder.pt", - "url": "https://openaipublic.azureedge.net/diff-vae/c9cebd3132dd9c42936d803e33424145a748843c8f716c0814838bdc8a2fe7cb/decoder.pt" + "url": "https://openaipublic.azureedge.net/diff-vae/c9cebd3132dd9c42936d803e33424145a748843c8f716c0814838bdc8a2fe7cb/decoder.pt", + "size": "2.49GB" }, { "name": "LCM LoRA SD1.5", @@ -703,7 +780,8 @@ "description": "Latent Consistency LoRA for SD1.5", "reference": "https://huggingface.co/latent-consistency/lcm-lora-sdv1-5", "filename": "pytorch_lora_weights.safetensors", - "url": "https://huggingface.co/latent-consistency/lcm-lora-sdv1-5/resolve/main/pytorch_lora_weights.safetensors" + "url": "https://huggingface.co/latent-consistency/lcm-lora-sdv1-5/resolve/main/pytorch_lora_weights.safetensors", + "size": "134.6MB" }, { "name": "LCM LoRA SSD-1B", @@ -713,7 +791,8 @@ "description": "Latent Consistency LoRA for SSD-1B", "reference": "https://huggingface.co/latent-consistency/lcm-lora-ssd-1b", "filename": "pytorch_lora_weights.safetensors", - "url": "https://huggingface.co/latent-consistency/lcm-lora-ssd-1b/resolve/main/pytorch_lora_weights.safetensors" + "url": "https://huggingface.co/latent-consistency/lcm-lora-ssd-1b/resolve/main/pytorch_lora_weights.safetensors", + "size": "210.0MB" }, { "name": "LCM LoRA SDXL", @@ -723,7 +802,8 @@ "description": "Latent Consistency LoRA for SDXL", "reference": "https://huggingface.co/latent-consistency/lcm-lora-sdxl", "filename": "pytorch_lora_weights.safetensors", - "url": "https://huggingface.co/latent-consistency/lcm-lora-sdxl/resolve/main/pytorch_lora_weights.safetensors" + "url": "https://huggingface.co/latent-consistency/lcm-lora-sdxl/resolve/main/pytorch_lora_weights.safetensors", + "size": "393.9MB" }, { "name": "Segmind-Vega", @@ -733,7 +813,8 @@ "description": "The Segmind-Vega Model is a distilled version of the Stable Diffusion XL (SDXL), offering a remarkable 70% reduction in size and an impressive 100% speedup while retaining high-quality text-to-image generation capabilities.", "reference": "https://huggingface.co/segmind/Segmind-Vega", "filename": "segmind-vega.safetensors", - "url": "https://huggingface.co/segmind/Segmind-Vega/resolve/main/segmind-vega.safetensors" + "url": "https://huggingface.co/segmind/Segmind-Vega/resolve/main/segmind-vega.safetensors", + "size": "3.29GB" }, { "name": "Segmind-VegaRT - Latent Consistency Model (LCM) LoRA of Segmind-Vega", @@ -743,7 +824,8 @@ "description": "Segmind-VegaRT a distilled consistency adapter for Segmind-Vega that allows to reduce the number of inference steps to only between 2 - 8 steps.", "reference": "https://huggingface.co/segmind/Segmind-VegaRT", "filename": "pytorch_lora_weights.safetensors", - "url": "https://huggingface.co/segmind/Segmind-VegaRT/resolve/main/pytorch_lora_weights.safetensors" + "url": "https://huggingface.co/segmind/Segmind-VegaRT/resolve/main/pytorch_lora_weights.safetensors", + "size": "239.2MB" }, { "name": "Theovercomer8's Contrast Fix (SD2.1)", @@ -753,7 +835,8 @@ "description": "LORA: Theovercomer8's Contrast Fix (SD2.1)", "reference": "https://civitai.com/models/8765/theovercomer8s-contrast-fix-sd15sd21-768", "filename": "theovercomer8sContrastFix_sd21768.safetensors", - "url": "https://civitai.com/api/download/models/10350" + "url": "https://civitai.com/api/download/models/10350", + "size": "163MB" }, { "name": "Theovercomer8's Contrast Fix (SD1.5)", @@ -763,7 +846,8 @@ "description": "LORA: Theovercomer8's Contrast Fix (SD1.5)", "reference": "https://civitai.com/models/8765/theovercomer8s-contrast-fix-sd15sd21-768", "filename": "theovercomer8sContrastFix_sd15.safetensors", - "url": "https://civitai.com/api/download/models/10638" + "url": "https://civitai.com/api/download/models/10638", + "size": "113MB" }, { "name": "T2I-Adapter (depth)", @@ -773,7 +857,8 @@ "description": "ControlNet T2I-Adapter for depth", "reference": "https://huggingface.co/TencentARC/T2I-Adapter", "filename": "t2iadapter_depth_sd14v1.pth", - "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_depth_sd14v1.pth" + "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_depth_sd14v1.pth", + "size": "309.5MB" }, { "name": "T2I-Adapter (seg)", @@ -783,7 +868,8 @@ "description": "ControlNet T2I-Adapter for seg", "reference": "https://huggingface.co/TencentARC/T2I-Adapter", "filename": "t2iadapter_seg_sd14v1.pth", - "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_seg_sd14v1.pth" + "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_seg_sd14v1.pth", + "size": "309.5MB" }, { "name": "T2I-Adapter (sketch)", @@ -793,7 +879,8 @@ "description": "ControlNet T2I-Adapter for sketch", "reference": "https://huggingface.co/TencentARC/T2I-Adapter", "filename": "t2iadapter_sketch_sd14v1.pth", - "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_sketch_sd14v1.pth" + "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_sketch_sd14v1.pth", + "size": "308.0MB" }, { "name": "T2I-Adapter (keypose)", @@ -803,7 +890,8 @@ "description": "ControlNet T2I-Adapter for keypose", "reference": "https://huggingface.co/TencentARC/T2I-Adapter", "filename": "t2iadapter_keypose_sd14v1.pth", - "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_keypose_sd14v1.pth" + "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_keypose_sd14v1.pth", + "size": "309.5MB" }, { "name": "T2I-Adapter (openpose)", @@ -813,7 +901,8 @@ "description": "ControlNet T2I-Adapter for openpose", "reference": "https://huggingface.co/TencentARC/T2I-Adapter", "filename": "t2iadapter_openpose_sd14v1.pth", - "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_openpose_sd14v1.pth" + "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_openpose_sd14v1.pth", + "size": "309.5MB" }, { "name": "T2I-Adapter (color)", @@ -823,7 +912,8 @@ "description": "ControlNet T2I-Adapter for color", "reference": "https://huggingface.co/TencentARC/T2I-Adapter", "filename": "t2iadapter_color_sd14v1.pth", - "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_color_sd14v1.pth" + "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_color_sd14v1.pth", + "size": "74.8MB" }, { "name": "T2I-Adapter (canny)", @@ -833,7 +923,8 @@ "description": "ControlNet T2I-Adapter for canny", "reference": "https://huggingface.co/TencentARC/T2I-Adapter", "filename": "t2iadapter_canny_sd14v1.pth", - "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_canny_sd14v1.pth" + "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_canny_sd14v1.pth", + "size": "308.0MB" }, { "name": "T2I-Style model", @@ -843,117 +934,129 @@ "description": "ControlNet T2I-Adapter style model. Need to download CLIPVision model.", "reference": "https://huggingface.co/TencentARC/T2I-Adapter", "filename": "t2iadapter_style_sd14v1.pth", - "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_style_sd14v1.pth" + "url": "https://huggingface.co/TencentARC/T2I-Adapter/resolve/main/models/t2iadapter_style_sd14v1.pth", + "size": "154.4MB" }, { - "name": "T2I-Adapter XL (lineart) FP16", - "type": "T2I-Adapter", - "base": "SDXL 1.0", - "save_path": "default", - "description": "ControlNet T2I-Adapter XL for lineart", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-lineart-sdxl-1.0", - "filename": "t2i-adapter-lineart-sdxl-1.0.fp16.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-lineart-sdxl-1.0/resolve/main/diffusion_pytorch_model.fp16.safetensors" + "name": "T2I-Adapter XL (lineart) FP16", + "type": "T2I-Adapter", + "base": "SDXL 1.0", + "save_path": "default", + "description": "ControlNet T2I-Adapter XL for lineart", + "reference": "https://huggingface.co/TencentARC/t2i-adapter-lineart-sdxl-1.0", + "filename": "t2i-adapter-lineart-sdxl-1.0.fp16.safetensors", + "url": "https://huggingface.co/TencentARC/t2i-adapter-lineart-sdxl-1.0/resolve/main/diffusion_pytorch_model.fp16.safetensors", + "size": "158.1MB" }, { - "name": "T2I-Adapter XL (canny) FP16", - "type": "T2I-Adapter", - "base": "SDXL 1.0", - "save_path": "default", - "description": "ControlNet T2I-Adapter XL for canny", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-canny-sdxl-1.0", - "filename": "t2i-adapter-canny-sdxl-1.0.fp16.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-canny-sdxl-1.0/resolve/main/diffusion_pytorch_model.fp16.safetensors" + "name": "T2I-Adapter XL (canny) FP16", + "type": "T2I-Adapter", + "base": "SDXL 1.0", + "save_path": "default", + "description": "ControlNet T2I-Adapter XL for canny", + "reference": "https://huggingface.co/TencentARC/t2i-adapter-canny-sdxl-1.0", + "filename": "t2i-adapter-canny-sdxl-1.0.fp16.safetensors", + "url": "https://huggingface.co/TencentARC/t2i-adapter-canny-sdxl-1.0/resolve/main/diffusion_pytorch_model.fp16.safetensors", + "size": "158.1MB" }, { - "name": "T2I-Adapter XL (depth-zoe) FP16", - "type": "T2I-Adapter", - "base": "SDXL 1.0", - "save_path": "default", - "description": "ControlNet T2I-Adapter XL for depth-zoe", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-depth-zoe-sdxl-1.0", - "filename": "t2i-adapter-depth-zoe-sdxl-1.0.fp16.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-depth-zoe-sdxl-1.0/resolve/main/diffusion_pytorch_model.fp16.safetensors" + "name": "T2I-Adapter XL (depth-zoe) FP16", + "type": "T2I-Adapter", + "base": "SDXL 1.0", + "save_path": "default", + "description": "ControlNet T2I-Adapter XL for depth-zoe", + "reference": "https://huggingface.co/TencentARC/t2i-adapter-depth-zoe-sdxl-1.0", + "filename": "t2i-adapter-depth-zoe-sdxl-1.0.fp16.safetensors", + "url": "https://huggingface.co/TencentARC/t2i-adapter-depth-zoe-sdxl-1.0/resolve/main/diffusion_pytorch_model.fp16.safetensors", + "size": "158.1MB" }, { - "name": "T2I-Adapter XL (depth-midas) FP16", - "type": "T2I-Adapter", - "base": "SDXL 1.0", - "save_path": "default", - "description": "ControlNet T2I-Adapter XL for depth-midas", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-depth-midas-sdxl-1.0", - "filename": "t2i-adapter-depth-midas-sdxl-1.0.fp16.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-depth-midas-sdxl-1.0/resolve/main/diffusion_pytorch_model.fp16.safetensors" + "name": "T2I-Adapter XL (depth-midas) FP16", + "type": "T2I-Adapter", + "base": "SDXL 1.0", + "save_path": "default", + "description": "ControlNet T2I-Adapter XL for depth-midas", + "reference": "https://huggingface.co/TencentARC/t2i-adapter-depth-midas-sdxl-1.0", + "filename": "t2i-adapter-depth-midas-sdxl-1.0.fp16.safetensors", + "url": "https://huggingface.co/TencentARC/t2i-adapter-depth-midas-sdxl-1.0/resolve/main/diffusion_pytorch_model.fp16.safetensors", + "size": "158.1MB" }, { - "name": "T2I-Adapter XL (sketch) FP16", - "type": "T2I-Adapter", - "base": "SDXL 1.0", - "save_path": "default", - "description": "ControlNet T2I-Adapter XL for sketch", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-sketch-sdxl-1.0", - "filename": "t2i-adapter-sketch-sdxl-1.0.fp16.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-sketch-sdxl-1.0/resolve/main/diffusion_pytorch_model.fp16.safetensors" + "name": "T2I-Adapter XL (sketch) FP16", + "type": "T2I-Adapter", + "base": "SDXL 1.0", + "save_path": "default", + "description": "ControlNet T2I-Adapter XL for sketch", + "reference": "https://huggingface.co/TencentARC/t2i-adapter-sketch-sdxl-1.0", + "filename": "t2i-adapter-sketch-sdxl-1.0.fp16.safetensors", + "url": "https://huggingface.co/TencentARC/t2i-adapter-sketch-sdxl-1.0/resolve/main/diffusion_pytorch_model.fp16.safetensors", + "size": "158.1MB" }, { - "name": "T2I-Adapter XL (lineart)", - "type": "T2I-Adapter", - "base": "SDXL 1.0", - "save_path": "default", - "description": "ControlNet T2I-Adapter XL for lineart", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-lineart-sdxl-1.0", - "filename": "t2i-adapter-lineart-sdxl-1.0.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-lineart-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors" + "name": "T2I-Adapter XL (lineart)", + "type": "T2I-Adapter", + "base": "SDXL 1.0", + "save_path": "default", + "description": "ControlNet T2I-Adapter XL for lineart", + "reference": "https://huggingface.co/TencentARC/t2i-adapter-lineart-sdxl-1.0", + "filename": "t2i-adapter-lineart-sdxl-1.0.safetensors", + "url": "https://huggingface.co/TencentARC/t2i-adapter-lineart-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", + "size": "316.1MB" }, { - "name": "T2I-Adapter XL (canny)", - "type": "T2I-Adapter", - "base": "SDXL 1.0", - "save_path": "default", - "description": "ControlNet T2I-Adapter XL for canny", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-canny-sdxl-1.0", - "filename": "t2i-adapter-canny-sdxl-1.0.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-canny-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors" + "name": "T2I-Adapter XL (canny)", + "type": "T2I-Adapter", + "base": "SDXL 1.0", + "save_path": "default", + "description": "ControlNet T2I-Adapter XL for canny", + "reference": "https://huggingface.co/TencentARC/t2i-adapter-canny-sdxl-1.0", + "filename": "t2i-adapter-canny-sdxl-1.0.safetensors", + "url": "https://huggingface.co/TencentARC/t2i-adapter-canny-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", + "size": "316.1MB" }, { - "name": "T2I-Adapter XL (depth-zoe)", - "type": "T2I-Adapter", - "base": "SDXL 1.0", - "save_path": "default", - "description": "ControlNet T2I-Adapter XL for depth-zoe", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-depth-zoe-sdxl-1.0", - "filename": "t2i-adapter-depth-zoe-sdxl-1.0.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-depth-zoe-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors" + "name": "T2I-Adapter XL (depth-zoe)", + "type": "T2I-Adapter", + "base": "SDXL 1.0", + "save_path": "default", + "description": "ControlNet T2I-Adapter XL for depth-zoe", + "reference": "https://huggingface.co/TencentARC/t2i-adapter-depth-zoe-sdxl-1.0", + "filename": "t2i-adapter-depth-zoe-sdxl-1.0.safetensors", + "url": "https://huggingface.co/TencentARC/t2i-adapter-depth-zoe-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", + "size": "316.1MB" }, { - "name": "T2I-Adapter XL (depth-midas)", - "type": "T2I-Adapter", - "base": "SDXL 1.0", - "save_path": "default", - "description": "ControlNet T2I-Adapter XL for depth-midas", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-depth-midas-sdxl-1.0", - "filename": "t2i-adapter-depth-midas-sdxl-1.0.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-depth-midas-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors" + "name": "T2I-Adapter XL (depth-midas)", + "type": "T2I-Adapter", + "base": "SDXL 1.0", + "save_path": "default", + "description": "ControlNet T2I-Adapter XL for depth-midas", + "reference": "https://huggingface.co/TencentARC/t2i-adapter-depth-midas-sdxl-1.0", + "filename": "t2i-adapter-depth-midas-sdxl-1.0.safetensors", + "url": "https://huggingface.co/TencentARC/t2i-adapter-depth-midas-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", + "size": "316.1MB" }, { - "name": "T2I-Adapter XL (sketch)", - "type": "T2I-Adapter", - "base": "SDXL 1.0", - "save_path": "default", - "description": "ControlNet T2I-Adapter XL for sketch", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-sketch-sdxl-1.0", - "filename": "t2i-adapter-sketch-sdxl-1.0.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-sketch-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors" + "name": "T2I-Adapter XL (sketch)", + "type": "T2I-Adapter", + "base": "SDXL 1.0", + "save_path": "default", + "description": "ControlNet T2I-Adapter XL for sketch", + "reference": "https://huggingface.co/TencentARC/t2i-adapter-sketch-sdxl-1.0", + "filename": "t2i-adapter-sketch-sdxl-1.0.safetensors", + "url": "https://huggingface.co/TencentARC/t2i-adapter-sketch-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", + "size": "316.1MB" }, { - "name": "T2I-Adapter XL (openpose)", - "type": "T2I-Adapter", - "base": "SDXL 1.0", - "save_path": "default", - "description": "ControlNet T2I-Adapter XL for openpose", - "reference": "https://huggingface.co/TencentARC/t2i-adapter-openpose-sdxl-1.0", - "filename": "t2i-adapter-openpose-sdxl-1.0.safetensors", - "url": "https://huggingface.co/TencentARC/t2i-adapter-openpose-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors" + "name": "T2I-Adapter XL (openpose)", + "type": "T2I-Adapter", + "base": "SDXL 1.0", + "save_path": "default", + "description": "ControlNet T2I-Adapter XL for openpose", + "reference": "https://huggingface.co/TencentARC/t2i-adapter-openpose-sdxl-1.0", + "filename": "t2i-adapter-openpose-sdxl-1.0.safetensors", + "url": "https://huggingface.co/TencentARC/t2i-adapter-openpose-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", + "size": "316.1MB" }, { "name": "CiaraRowles/TemporalNet2", @@ -963,7 +1066,8 @@ "description": "TemporalNet was a ControlNet model designed to enhance the temporal consistency of generated outputs", "reference": "https://huggingface.co/CiaraRowles/TemporalNet2", "filename": "temporalnetversion2.safetensors", - "url": "https://huggingface.co/CiaraRowles/TemporalNet2/resolve/main/temporalnetversion2.safetensors" + "url": "https://huggingface.co/CiaraRowles/TemporalNet2/resolve/main/temporalnetversion2.safetensors", + "size": "5.71GB" }, { "name": "CiaraRowles/TemporalNet1XL (1.0)", @@ -973,47 +1077,52 @@ "description": "This is TemporalNet1XL, it is a re-train of the controlnet TemporalNet1 with Stable Diffusion XL.", "reference": "https://huggingface.co/CiaraRowles/controlnet-temporalnet-sdxl-1.0", "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/CiaraRowles/controlnet-temporalnet-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors" + "url": "https://huggingface.co/CiaraRowles/controlnet-temporalnet-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", + "size": "5.00GB" }, { "name": "CLIPVision model (stabilityai/clip_vision_g)", "type": "clip_vision", "base": "vit-g", "save_path": "clip_vision", - "description": "[3.69GB] clip_g vision model", + "description": "clip_g vision model", "reference": "https://huggingface.co/stabilityai/control-lora", "filename": "clip_vision_g.safetensors", - "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/revision/clip_vision_g.safetensors" + "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/revision/clip_vision_g.safetensors", + "size": "3.69GB" }, { "name": "CLIPVision model (openai/clip-vit-large)", "type": "clip_vision", "base": "ViT-L", "save_path": "clip_vision", - "description": "[1.7GB] CLIPVision model (needed for styles model)", + "description": "CLIPVision model (needed for styles model)", "reference": "https://huggingface.co/openai/clip-vit-large-patch14", "filename": "clip-vit-large-patch14.bin", - "url": "https://huggingface.co/openai/clip-vit-large-patch14/resolve/main/model.safetensors" + "url": "https://huggingface.co/openai/clip-vit-large-patch14/resolve/main/model.safetensors", + "size": "1.71GB" }, { "name": "CLIPVision model (IP-Adapter) CLIP-ViT-H-14-laion2B-s32B-b79K", "type": "clip_vision", "base": "ViT-H", "save_path": "clip_vision", - "description": "[2.5GB] CLIPVision model (needed for IP-Adapter)", + "description": "CLIPVision model (needed for IP-Adapter)", "reference": "https://huggingface.co/h94/IP-Adapter", "filename": "CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/image_encoder/model.safetensors" + "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/image_encoder/model.safetensors", + "size": "2.53GB" }, { "name": "CLIPVision model (IP-Adapter) CLIP-ViT-bigG-14-laion2B-39B-b160k", "type": "clip_vision", "base": "ViT-G", "save_path": "clip_vision", - "description": "[3.69GB] CLIPVision model (needed for IP-Adapter)", + "description": "CLIPVision model (needed for IP-Adapter)", "reference": "https://huggingface.co/h94/IP-Adapter", "filename": "CLIP-ViT-bigG-14-laion2B-39B-b160k.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/image_encoder/model.safetensors" + "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/image_encoder/model.safetensors", + "size": "3.69GB" }, { "name": "stabilityai/control-lora-canny-rank128.safetensors", @@ -1023,7 +1132,8 @@ "description": "Control-LoRA: canny rank128", "reference": "https://huggingface.co/stabilityai/control-lora", "filename": "control-lora-canny-rank128.safetensors", - "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank128/control-lora-canny-rank128.safetensors" + "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank128/control-lora-canny-rank128.safetensors", + "size": "395.7MB" }, { "name": "stabilityai/control-lora-depth-rank128.safetensors", @@ -1033,7 +1143,8 @@ "description": "Control-LoRA: depth rank128", "reference": "https://huggingface.co/stabilityai/control-lora", "filename": "control-lora-depth-rank128.safetensors", - "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank128/control-lora-depth-rank128.safetensors" + "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank128/control-lora-depth-rank128.safetensors", + "size": "395.7MB" }, { "name": "stabilityai/control-lora-recolor-rank128.safetensors", @@ -1043,7 +1154,8 @@ "description": "Control-LoRA: recolor rank128", "reference": "https://huggingface.co/stabilityai/control-lora", "filename": "control-lora-recolor-rank128.safetensors", - "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank128/control-lora-recolor-rank128.safetensors" + "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank128/control-lora-recolor-rank128.safetensors", + "size": "395.7MB" }, { "name": "stabilityai/control-lora-sketch-rank128-metadata.safetensors", @@ -1053,7 +1165,8 @@ "description": "Control-LoRA: sketch rank128 metadata", "reference": "https://huggingface.co/stabilityai/control-lora", "filename": "control-lora-sketch-rank128-metadata.safetensors", - "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank128/control-lora-sketch-rank128-metadata.safetensors" + "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank128/control-lora-sketch-rank128-metadata.safetensors", + "size": "395.7MB" }, { "name": "stabilityai/control-lora-canny-rank256.safetensors", @@ -1063,7 +1176,8 @@ "description": "Control-LoRA: canny rank256", "reference": "https://huggingface.co/stabilityai/control-lora", "filename": "control-lora-canny-rank256.safetensors", - "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank256/control-lora-canny-rank256.safetensors" + "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank256/control-lora-canny-rank256.safetensors", + "size": "774.5MB" }, { "name": "stabilityai/control-lora-depth-rank256.safetensors", @@ -1073,7 +1187,8 @@ "description": "Control-LoRA: depth rank256", "reference": "https://huggingface.co/stabilityai/control-lora", "filename": "control-lora-depth-rank256.safetensors", - "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank256/control-lora-depth-rank256.safetensors" + "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank256/control-lora-depth-rank256.safetensors", + "size": "774.4MB" }, { "name": "stabilityai/control-lora-recolor-rank256.safetensors", @@ -1083,7 +1198,8 @@ "description": "Control-LoRA: recolor rank256", "reference": "https://huggingface.co/stabilityai/control-lora", "filename": "control-lora-recolor-rank256.safetensors", - "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank256/control-lora-recolor-rank256.safetensors" + "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank256/control-lora-recolor-rank256.safetensors", + "size": "774.4MB" }, { "name": "stabilityai/control-lora-sketch-rank256.safetensors", @@ -1093,20 +1209,20 @@ "description": "Control-LoRA: sketch rank256", "reference": "https://huggingface.co/stabilityai/control-lora", "filename": "control-lora-sketch-rank256.safetensors", - "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank256/control-lora-sketch-rank256.safetensors" + "url": "https://huggingface.co/stabilityai/control-lora/resolve/main/control-LoRAs-rank256/control-lora-sketch-rank256.safetensors", + "size": "774.5MB" }, - { "name": "kohya-ss/ControlNet-LLLite: SDXL Canny Anime", "type": "controlnet", "base": "SDXL", "save_path": "custom_nodes/ControlNet-LLLite-ComfyUI/models", - "description": "[46.2MB] An extremely compactly designed controlnet model (a.k.a. ControlNet-LLLite). Note: The model structure is highly experimental and may be subject to change in the future.", + "description": "An extremely compactly designed controlnet model (a.k.a. ControlNet-LLLite). Note: The model structure is highly experimental and may be subject to change in the future.", "reference": "https://huggingface.co/kohya-ss/controlnet-lllite", "filename": "controllllite_v01032064e_sdxl_canny_anime.safetensors", - "url": "https://huggingface.co/kohya-ss/controlnet-lllite/resolve/main/controllllite_v01032064e_sdxl_canny_anime.safetensors" + "url": "https://huggingface.co/kohya-ss/controlnet-lllite/resolve/main/controllllite_v01032064e_sdxl_canny_anime.safetensors", + "size": "46.2MB" }, - { "name": "SDXL-controlnet: OpenPose (v2)", "type": "controlnet", @@ -1115,7 +1231,8 @@ "description": "ControlNet openpose model for SDXL", "reference": "https://huggingface.co/thibaud/controlnet-openpose-sdxl-1.0", "filename": "OpenPoseXL2.safetensors", - "url": "https://huggingface.co/thibaud/controlnet-openpose-sdxl-1.0/resolve/main/OpenPoseXL2.safetensors" + "url": "https://huggingface.co/thibaud/controlnet-openpose-sdxl-1.0/resolve/main/OpenPoseXL2.safetensors", + "size": "5.00GB" }, { "name": "controlnet-SargeZT/controlnet-sd-xl-1.0-softedge-dexined", @@ -1125,7 +1242,8 @@ "description": "ControlNet softedge model for SDXL", "reference": "https://huggingface.co/SargeZT/controlnet-sd-xl-1.0-softedge-dexined", "filename": "controlnet-sd-xl-1.0-softedge-dexined.safetensors", - "url": "https://huggingface.co/SargeZT/controlnet-sd-xl-1.0-softedge-dexined/resolve/main/controlnet-sd-xl-1.0-softedge-dexined.safetensors" + "url": "https://huggingface.co/SargeZT/controlnet-sd-xl-1.0-softedge-dexined/resolve/main/controlnet-sd-xl-1.0-softedge-dexined.safetensors", + "size": "5.00GB" }, { "name": "controlnet-SargeZT/controlnet-sd-xl-1.0-depth-16bit-zoe", @@ -1135,9 +1253,9 @@ "description": "ControlNet depth-zoe model for SDXL", "reference": "https://huggingface.co/SargeZT/controlnet-sd-xl-1.0-depth-16bit-zoe", "filename": "depth-zoe-xl-v1.0-controlnet.safetensors", - "url": "https://huggingface.co/SargeZT/controlnet-sd-xl-1.0-depth-16bit-zoe/resolve/main/depth-zoe-xl-v1.0-controlnet.safetensors" + "url": "https://huggingface.co/SargeZT/controlnet-sd-xl-1.0-depth-16bit-zoe/resolve/main/depth-zoe-xl-v1.0-controlnet.safetensors", + "size": "5.00GB" }, - { "name": "ControlNet-v1-1 (ip2p; fp16)", "type": "controlnet", @@ -1146,7 +1264,8 @@ "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (ip2p)", "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", "filename": "control_v11e_sd15_ip2p_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11e_sd15_ip2p_fp16.safetensors" + "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11e_sd15_ip2p_fp16.safetensors", + "size": "722.6MB" }, { "name": "ControlNet-v1-1 (shuffle; fp16)", @@ -1156,8 +1275,9 @@ "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (shuffle)", "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", "filename": "control_v11e_sd15_shuffle_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11e_sd15_shuffle_fp16.safetensors" - }, + "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11e_sd15_shuffle_fp16.safetensors", + "size": "722.6MB" + }, { "name": "ControlNet-v1-1 (canny; fp16)", "type": "controlnet", @@ -1166,7 +1286,8 @@ "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (canny)", "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", "filename": "control_v11p_sd15_canny_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_canny_fp16.safetensors" + "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_canny_fp16.safetensors", + "size": "722.6MB" }, { "name": "ControlNet-v1-1 (depth; fp16)", @@ -1176,7 +1297,8 @@ "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (depth)", "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", "filename": "control_v11f1p_sd15_depth_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11f1p_sd15_depth_fp16.safetensors" + "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11f1p_sd15_depth_fp16.safetensors", + "size": "722.6MB" }, { "name": "ControlNet-v1-1 (inpaint; fp16)", @@ -1186,7 +1308,8 @@ "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (inpaint)", "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", "filename": "control_v11p_sd15_inpaint_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_inpaint_fp16.safetensors" + "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_inpaint_fp16.safetensors", + "size": "722.6MB" }, { "name": "ControlNet-v1-1 (lineart; fp16)", @@ -1196,7 +1319,8 @@ "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (lineart)", "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", "filename": "control_v11p_sd15_lineart_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_lineart_fp16.safetensors" + "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_lineart_fp16.safetensors", + "size": "722.6MB" }, { "name": "ControlNet-v1-1 (mlsd; fp16)", @@ -1206,7 +1330,8 @@ "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (mlsd)", "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", "filename": "control_v11p_sd15_mlsd_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_mlsd_fp16.safetensors" + "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_mlsd_fp16.safetensors", + "size": "722.6MB" }, { "name": "ControlNet-v1-1 (normalbae; fp16)", @@ -1216,7 +1341,8 @@ "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (normalbae)", "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", "filename": "control_v11p_sd15_normalbae_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_normalbae_fp16.safetensors" + "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_normalbae_fp16.safetensors", + "size": "722.6MB" }, { "name": "ControlNet-v1-1 (openpose; fp16)", @@ -1226,7 +1352,8 @@ "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (openpose)", "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", "filename": "control_v11p_sd15_openpose_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_openpose_fp16.safetensors" + "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_openpose_fp16.safetensors", + "size": "722.6MB" }, { "name": "ControlNet-v1-1 (scribble; fp16)", @@ -1236,7 +1363,8 @@ "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (scribble)", "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", "filename": "control_v11p_sd15_scribble_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_scribble_fp16.safetensors" + "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_scribble_fp16.safetensors", + "size": "722.6MB" }, { "name": "ControlNet-v1-1 (seg; fp16)", @@ -1246,7 +1374,8 @@ "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (seg)", "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", "filename": "control_v11p_sd15_seg_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_seg_fp16.safetensors" + "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_seg_fp16.safetensors", + "size": "722.6MB" }, { "name": "ControlNet-v1-1 (softedge; fp16)", @@ -1256,7 +1385,8 @@ "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (softedge)", "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", "filename": "control_v11p_sd15_softedge_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_softedge_fp16.safetensors" + "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15_softedge_fp16.safetensors", + "size": "722.6MB" }, { "name": "ControlNet-v1-1 (anime; fp16)", @@ -1266,7 +1396,8 @@ "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (anime)", "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", "filename": "control_v11p_sd15s2_lineart_anime_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15s2_lineart_anime_fp16.safetensors" + "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11p_sd15s2_lineart_anime_fp16.safetensors", + "size": "722.6MB" }, { "name": "ControlNet-v1-1 (tile; fp16; v11u)", @@ -1276,7 +1407,8 @@ "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (tile) / v11u", "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", "filename": "control_v11u_sd15_tile_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11u_sd15_tile_fp16.safetensors" + "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11u_sd15_tile_fp16.safetensors", + "size": "722.6MB" }, { "name": "ControlNet-v1-1 (tile; fp16; v11f1e)", @@ -1286,7 +1418,8 @@ "description": "Safetensors/FP16 versions of the new ControlNet-v1-1 checkpoints (tile) / v11f1e\nYou need to this model for Tiled Resample", "reference": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors", "filename": "control_v11f1e_sd15_tile_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11f1e_sd15_tile_fp16.safetensors" + "url": "https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/resolve/main/control_v11f1e_sd15_tile_fp16.safetensors", + "size": "722.6MB" }, { "name": "ControlNet-HandRefiner-pruned (inpaint-depth-hand; fp16)", @@ -1296,7 +1429,8 @@ "description": "This inpaint-depth controlnet model is specialized for the hand refiner.", "reference": "https://huggingface.co/hr16/ControlNet-HandRefiner-pruned", "filename": "control_sd15_inpaint_depth_hand_fp16.safetensors", - "url": "https://huggingface.co/hr16/ControlNet-HandRefiner-pruned/resolve/main/control_sd15_inpaint_depth_hand_fp16.safetensors" + "url": "https://huggingface.co/hr16/ControlNet-HandRefiner-pruned/resolve/main/control_sd15_inpaint_depth_hand_fp16.safetensors", + "size": "722.6MB" }, { "name": "control_boxdepth_LooseControlfp16 (fp16)", @@ -1306,7 +1440,8 @@ "description": "Loose ControlNet model", "reference": "https://huggingface.co/ioclab/LooseControl_WebUICombine", "filename": "control_boxdepth_LooseControlfp16.safetensors", - "url": "https://huggingface.co/ioclab/LooseControl_WebUICombine/resolve/main/control_boxdepth_LooseControlfp16.safetensors" + "url": "https://huggingface.co/ioclab/LooseControl_WebUICombine/resolve/main/control_boxdepth_LooseControlfp16.safetensors", + "size": "722.6MB" }, { "name": "GLIGEN textbox (fp16; pruned)", @@ -1316,7 +1451,8 @@ "description": "GLIGEN textbox model", "reference": "https://huggingface.co/comfyanonymous/GLIGEN_pruned_safetensors", "filename": "gligen_sd14_textbox_pruned_fp16.safetensors", - "url": "https://huggingface.co/comfyanonymous/GLIGEN_pruned_safetensors/resolve/main/gligen_sd14_textbox_pruned_fp16.safetensors" + "url": "https://huggingface.co/comfyanonymous/GLIGEN_pruned_safetensors/resolve/main/gligen_sd14_textbox_pruned_fp16.safetensors", + "size": "418.2MB" }, { "name": "ViT-H SAM model", @@ -1326,7 +1462,8 @@ "description": "Segmenty Anything SAM model (ViT-H)", "reference": "https://github.com/facebookresearch/segment-anything#model-checkpoints", "filename": "sam_vit_h_4b8939.pth", - "url": "https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth" + "url": "https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth", + "size": "2.56GB" }, { "name": "ViT-L SAM model", @@ -1336,7 +1473,8 @@ "description": "Segmenty Anything SAM model (ViT-L)", "reference": "https://github.com/facebookresearch/segment-anything#model-checkpoints", "filename": "sam_vit_l_0b3195.pth", - "url": "https://dl.fbaipublicfiles.com/segment_anything/sam_vit_l_0b3195.pth" + "url": "https://dl.fbaipublicfiles.com/segment_anything/sam_vit_l_0b3195.pth", + "size": "1.25GB" }, { "name": "ViT-B SAM model", @@ -1346,7 +1484,8 @@ "description": "Segmenty Anything SAM model (ViT-B)", "reference": "https://github.com/facebookresearch/segment-anything#model-checkpoints", "filename": "sam_vit_b_01ec64.pth", - "url": "https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth" + "url": "https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth", + "size": "375.0MB" }, { "name": "seecoder v1.0", @@ -1356,7 +1495,8 @@ "description": "SeeCoder model", "reference": "https://huggingface.co/shi-labs/prompt-free-diffusion/tree/main/pretrained/pfd/seecoder", "filename": "seecoder-v1-0.safetensors", - "url": "https://huggingface.co/shi-labs/prompt-free-diffusion/resolve/main/pretrained/pfd/seecoder/seecoder-v1-0.safetensors" + "url": "https://huggingface.co/shi-labs/prompt-free-diffusion/resolve/main/pretrained/pfd/seecoder/seecoder-v1-0.safetensors", + "size": "1.18GB" }, { "name": "seecoder pa v1.0", @@ -1366,7 +1506,8 @@ "description": "SeeCoder model", "reference": "https://huggingface.co/shi-labs/prompt-free-diffusion/tree/main/pretrained/pfd/seecoder", "filename": "seecoder-pa-v1-0.safetensors", - "url": "https://huggingface.co/shi-labs/prompt-free-diffusion/resolve/main/pretrained/pfd/seecoder/seecoder-pa-v1-0.safetensors" + "url": "https://huggingface.co/shi-labs/prompt-free-diffusion/resolve/main/pretrained/pfd/seecoder/seecoder-pa-v1-0.safetensors", + "size": "1.19GB" }, { "name": "seecoder anime v1.0", @@ -1376,7 +1517,8 @@ "description": "SeeCoder model", "reference": "https://huggingface.co/shi-labs/prompt-free-diffusion/tree/main/pretrained/pfd/seecoder", "filename": "seecoder-anime-v1-0.safetensors", - "url": "https://huggingface.co/shi-labs/prompt-free-diffusion/resolve/main/pretrained/pfd/seecoder/seecoder-anime-v1-0.safetensors" + "url": "https://huggingface.co/shi-labs/prompt-free-diffusion/resolve/main/pretrained/pfd/seecoder/seecoder-anime-v1-0.safetensors", + "size": "1.18GB" }, { "name": "face_yolov8m (bbox)", @@ -1386,7 +1528,8 @@ "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", "reference": "https://huggingface.co/Bingsu/adetailer/tree/main", "filename": "face_yolov8m.pt", - "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/face_yolov8m.pt" + "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/face_yolov8m.pt", + "size": "52.0MB" }, { "name": "face_yolov8n (bbox)", @@ -1396,7 +1539,8 @@ "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", "reference": "https://huggingface.co/Bingsu/adetailer/tree/main", "filename": "face_yolov8n.pt", - "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/face_yolov8n.pt" + "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/face_yolov8n.pt", + "size": "6.23MB" }, { "name": "face_yolov8n_v2 (bbox)", @@ -1406,7 +1550,8 @@ "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", "reference": "https://huggingface.co/Bingsu/adetailer/tree/main", "filename": "face_yolov8n_v2.pt", - "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/face_yolov8n_v2.pt" + "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/face_yolov8n_v2.pt", + "size": "6.24MB" }, { "name": "face_yolov8s (bbox)", @@ -1416,7 +1561,8 @@ "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", "reference": "https://huggingface.co/Bingsu/adetailer/tree/main", "filename": "face_yolov8s.pt", - "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/face_yolov8s.pt" + "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/face_yolov8s.pt", + "size": "22.5MB" }, { "name": "hand_yolov8n (bbox)", @@ -1426,7 +1572,8 @@ "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", "reference": "https://huggingface.co/Bingsu/adetailer/tree/main", "filename": "hand_yolov8n.pt", - "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/hand_yolov8n.pt" + "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/hand_yolov8n.pt", + "size": "6.24MB" }, { "name": "hand_yolov8s (bbox)", @@ -1436,7 +1583,8 @@ "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", "reference": "https://huggingface.co/Bingsu/adetailer/tree/main", "filename": "hand_yolov8s.pt", - "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/hand_yolov8s.pt" + "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/hand_yolov8s.pt", + "size": "22.5MB" }, { "name": "person_yolov8m (segm)", @@ -1446,7 +1594,8 @@ "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", "reference": "https://huggingface.co/Bingsu/adetailer/tree/main", "filename": "person_yolov8m-seg.pt", - "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/person_yolov8m-seg.pt" + "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/person_yolov8m-seg.pt", + "size": "54.8MB" }, { "name": "person_yolov8n (segm)", @@ -1456,7 +1605,8 @@ "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", "reference": "https://huggingface.co/Bingsu/adetailer/tree/main", "filename": "person_yolov8n-seg.pt", - "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/person_yolov8n-seg.pt" + "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/person_yolov8n-seg.pt", + "size": "6.78MB" }, { "name": "person_yolov8s (segm)", @@ -1466,7 +1616,8 @@ "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", "reference": "https://huggingface.co/Bingsu/adetailer/tree/main", "filename": "person_yolov8s-seg.pt", - "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/person_yolov8s-seg.pt" + "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/person_yolov8s-seg.pt", + "size": "23.9MB" }, { "name": "deepfashion2_yolov8s (segm)", @@ -1476,9 +1627,9 @@ "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", "reference": "https://huggingface.co/Bingsu/adetailer/tree/main", "filename": "deepfashion2_yolov8s-seg.pt", - "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/deepfashion2_yolov8s-seg.pt" + "url": "https://huggingface.co/Bingsu/adetailer/resolve/main/deepfashion2_yolov8s-seg.pt", + "size": "23.9MB" }, - { "name": "face_yolov8m-seg_60.pt (segm)", "type": "Ultralytics", @@ -1487,7 +1638,8 @@ "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", "reference": "https://github.com/hben35096/assets/releases/tag/yolo8", "filename": "face_yolov8m-seg_60.pt", - "url": "https://github.com/hben35096/assets/releases/download/yolo8/face_yolov8m-seg_60.pt" + "url": "https://github.com/hben35096/assets/releases/download/yolo8/face_yolov8m-seg_60.pt", + "size": "54.8MB" }, { "name": "face_yolov8n-seg2_60.pt (segm)", @@ -1497,7 +1649,8 @@ "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", "reference": "https://github.com/hben35096/assets/releases/tag/yolo8", "filename": "face_yolov8n-seg2_60.pt", - "url": "https://github.com/hben35096/assets/releases/download/yolo8/face_yolov8n-seg2_60.pt" + "url": "https://github.com/hben35096/assets/releases/download/yolo8/face_yolov8n-seg2_60.pt", + "size": "6.77MB" }, { "name": "hair_yolov8n-seg_60.pt (segm)", @@ -1507,7 +1660,8 @@ "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", "reference": "https://github.com/hben35096/assets/releases/tag/yolo8", "filename": "hair_yolov8n-seg_60.pt", - "url": "https://github.com/hben35096/assets/releases/download/yolo8/hair_yolov8n-seg_60.pt" + "url": "https://github.com/hben35096/assets/releases/download/yolo8/hair_yolov8n-seg_60.pt", + "size": "6.77MB" }, { "name": "skin_yolov8m-seg_400.pt (segm)", @@ -1517,7 +1671,8 @@ "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", "reference": "https://github.com/hben35096/assets/releases/tag/yolo8", "filename": "skin_yolov8m-seg_400.pt", - "url": "https://github.com/hben35096/assets/releases/download/yolo8/skin_yolov8m-seg_400.pt" + "url": "https://github.com/hben35096/assets/releases/download/yolo8/skin_yolov8m-seg_400.pt", + "size": "54.9MB" }, { "name": "skin_yolov8n-seg_400.pt (segm)", @@ -1527,7 +1682,8 @@ "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", "reference": "https://github.com/hben35096/assets/releases/tag/yolo8", "filename": "skin_yolov8n-seg_400.pt", - "url": "https://github.com/hben35096/assets/releases/download/yolo8/skin_yolov8n-seg_400.pt" + "url": "https://github.com/hben35096/assets/releases/download/yolo8/skin_yolov8n-seg_400.pt", + "size": "6.83MB" }, { "name": "skin_yolov8n-seg_800.pt (segm)", @@ -1537,9 +1693,9 @@ "description": "These are the available models in the UltralyticsDetectorProvider of Impact Pack.", "reference": "https://github.com/hben35096/assets/releases/tag/yolo8", "filename": "skin_yolov8n-seg_800.pt", - "url": "https://github.com/hben35096/assets/releases/download/yolo8/skin_yolov8n-seg_800.pt" + "url": "https://github.com/hben35096/assets/releases/download/yolo8/skin_yolov8n-seg_800.pt", + "size": "6.84MB" }, - { "name": "animatediff/mmd_sd_v14.ckpt (comfyui-animatediff) (Updated path)", "type": "animatediff", @@ -1548,7 +1704,8 @@ "description": "Pressing 'install' directly downloads the model from the ArtVentureX/AnimateDiff extension node.", "reference": "https://huggingface.co/guoyww/animatediff", "filename": "mm_sd_v14.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v14.ckpt" + "url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v14.ckpt", + "size": "1.67GB" }, { "name": "animatediff/mm_sd_v15.ckpt (comfyui-animatediff) (Updated path)", @@ -1558,9 +1715,9 @@ "description": "Pressing 'install' directly downloads the model from the ArtVentureX/AnimateDiff extension node.", "reference": "https://huggingface.co/guoyww/animatediff", "filename": "mm_sd_v15.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v15.ckpt" + "url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v15.ckpt", + "size": "1.67GB" }, - { "name": "animatediff/mmd_sd_v14.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", "type": "animatediff", @@ -1569,7 +1726,8 @@ "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", "reference": "https://huggingface.co/guoyww/animatediff", "filename": "mm_sd_v14.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v14.ckpt" + "url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v14.ckpt", + "size": "1.67GB" }, { "name": "animatediff/mm_sd_v15.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", @@ -1579,7 +1737,8 @@ "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", "reference": "https://huggingface.co/guoyww/animatediff", "filename": "mm_sd_v15.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v15.ckpt" + "url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v15.ckpt", + "size": "1.67GB" }, { "name": "animatediff/mm_sd_v15_v2.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", @@ -1589,7 +1748,8 @@ "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", "reference": "https://huggingface.co/guoyww/animatediff", "filename": "mm_sd_v15_v2.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v15_v2.ckpt" + "url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sd_v15_v2.ckpt", + "size": "1.82GB" }, { "name": "animatediff/v3_sd15_mm.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", @@ -1599,9 +1759,9 @@ "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", "reference": "https://huggingface.co/guoyww/animatediff", "filename": "v3_sd15_mm.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v3_sd15_mm.ckpt" + "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v3_sd15_mm.ckpt", + "size": "1.67GB" }, - { "name": "animatediff/mm_sdxl_v10_beta.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", "type": "animatediff", @@ -1610,7 +1770,8 @@ "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", "reference": "https://huggingface.co/guoyww/animatediff", "filename": "mm_sdxl_v10_beta.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sdxl_v10_beta.ckpt" + "url": "https://huggingface.co/guoyww/animatediff/resolve/main/mm_sdxl_v10_beta.ckpt", + "size": "950.1MB" }, { "name": "AD_Stabilized_Motion/mm-Stabilized_high.pth (ComfyUI-AnimateDiff-Evolved) (Updated path)", @@ -1620,7 +1781,8 @@ "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", "reference": "https://huggingface.co/manshoety/AD_Stabilized_Motion", "filename": "mm-Stabilized_high.pth", - "url": "https://huggingface.co/manshoety/AD_Stabilized_Motion/resolve/main/mm-Stabilized_high.pth" + "url": "https://huggingface.co/manshoety/AD_Stabilized_Motion/resolve/main/mm-Stabilized_high.pth", + "size": "1.67GB" }, { "name": "AD_Stabilized_Motion/mm-Stabilized_mid.pth (ComfyUI-AnimateDiff-Evolved) (Updated path)", @@ -1630,7 +1792,8 @@ "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", "reference": "https://huggingface.co/manshoety/AD_Stabilized_Motion", "filename": "mm-Stabilized_mid.pth", - "url": "https://huggingface.co/manshoety/AD_Stabilized_Motion/resolve/main/mm-Stabilized_mid.pth" + "url": "https://huggingface.co/manshoety/AD_Stabilized_Motion/resolve/main/mm-Stabilized_mid.pth", + "size": "1.67GB" }, { "name": "CiaraRowles/temporaldiff-v1-animatediff.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", @@ -1640,9 +1803,9 @@ "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", "reference": "https://huggingface.co/CiaraRowles/TemporalDiff", "filename": "temporaldiff-v1-animatediff.ckpt", - "url": "https://huggingface.co/CiaraRowles/TemporalDiff/resolve/main/temporaldiff-v1-animatediff.ckpt" + "url": "https://huggingface.co/CiaraRowles/TemporalDiff/resolve/main/temporaldiff-v1-animatediff.ckpt", + "size": "1.67GB" }, - { "name": "animatediff/v2_lora_PanLeft.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", "type": "motion lora", @@ -1651,7 +1814,8 @@ "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", "reference": "https://huggingface.co/guoyww/animatediff", "filename": "v2_lora_PanLeft.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_PanLeft.ckpt" + "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_PanLeft.ckpt", + "size": "77.5MB" }, { "name": "animatediff/v2_lora_PanRight.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", @@ -1661,7 +1825,8 @@ "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", "reference": "https://huggingface.co/guoyww/animatediff", "filename": "v2_lora_PanRight.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_PanRight.ckpt" + "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_PanRight.ckpt", + "size": "77.5MB" }, { "name": "animatediff/v2_lora_RollingAnticlockwise.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", @@ -1671,7 +1836,8 @@ "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", "reference": "https://huggingface.co/guoyww/animatediff", "filename": "v2_lora_RollingAnticlockwise.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_RollingAnticlockwise.ckpt" + "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_RollingAnticlockwise.ckpt", + "size": "77.5MB" }, { "name": "animatediff/v2_lora_RollingClockwise.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", @@ -1681,7 +1847,8 @@ "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", "reference": "https://huggingface.co/guoyww/animatediff", "filename": "v2_lora_RollingClockwise.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_RollingClockwise.ckpt" + "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_RollingClockwise.ckpt", + "size": "77.5MB" }, { "name": "animatediff/v2_lora_TiltDown.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", @@ -1691,7 +1858,8 @@ "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", "reference": "https://huggingface.co/guoyww/animatediff", "filename": "v2_lora_TiltDown.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_TiltDown.ckpt" + "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_TiltDown.ckpt", + "size": "77.5MB" }, { "name": "animatediff/v2_lora_TiltUp.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", @@ -1701,7 +1869,8 @@ "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", "reference": "https://huggingface.co/guoyww/animatediff", "filename": "v2_lora_TiltUp.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_TiltUp.ckpt" + "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_TiltUp.ckpt", + "size": "77.5MB" }, { "name": "animatediff/v2_lora_ZoomIn.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", @@ -1711,7 +1880,8 @@ "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", "reference": "https://huggingface.co/guoyww/animatediff", "filename": "v2_lora_ZoomIn.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_ZoomIn.ckpt" + "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_ZoomIn.ckpt", + "size": "77.5MB" }, { "name": "animatediff/v2_lora_ZoomOut.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", @@ -1721,7 +1891,8 @@ "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", "reference": "https://huggingface.co/guoyww/animatediff", "filename": "v2_lora_ZoomOut.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_ZoomOut.ckpt" + "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v2_lora_ZoomOut.ckpt", + "size": "77.5MB" }, { "name": "LongAnimatediff/lt_long_mm_32_frames.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", @@ -1731,7 +1902,8 @@ "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", "reference": "https://huggingface.co/Lightricks/LongAnimateDiff", "filename": "lt_long_mm_32_frames.ckpt", - "url": "https://huggingface.co/Lightricks/LongAnimateDiff/resolve/main/lt_long_mm_32_frames.ckpt" + "url": "https://huggingface.co/Lightricks/LongAnimateDiff/resolve/main/lt_long_mm_32_frames.ckpt", + "size": "1.82GB" }, { "name": "LongAnimatediff/lt_long_mm_16_64_frames.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", @@ -1741,7 +1913,8 @@ "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", "reference": "https://huggingface.co/Lightricks/LongAnimateDiff", "filename": "lt_long_mm_16_64_frames.ckpt", - "url": "https://huggingface.co/Lightricks/LongAnimateDiff/resolve/main/lt_long_mm_16_64_frames.ckpt" + "url": "https://huggingface.co/Lightricks/LongAnimateDiff/resolve/main/lt_long_mm_16_64_frames.ckpt", + "size": "1.83GB" }, { "name": "LongAnimatediff/lt_long_mm_16_64_frames_v1.1.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)", @@ -1751,10 +1924,9 @@ "description": "Pressing 'install' directly downloads the model from the Kosinkadink/ComfyUI-AnimateDiff-Evolved extension node.", "reference": "https://huggingface.co/Lightricks/LongAnimateDiff", "filename": "lt_long_mm_16_64_frames_v1.1.ckpt", - "url": "https://huggingface.co/Lightricks/LongAnimateDiff/resolve/main/lt_long_mm_16_64_frames_v1.1.ckpt" + "url": "https://huggingface.co/Lightricks/LongAnimateDiff/resolve/main/lt_long_mm_16_64_frames_v1.1.ckpt", + "size": "1.83GB" }, - - { "name": "animatediff/v3_sd15_sparsectrl_rgb.ckpt (ComfyUI-AnimateDiff-Evolved)", "type": "controlnet", @@ -1763,7 +1935,8 @@ "description": "AnimateDiff SparseCtrl RGB ControlNet model", "reference": "https://huggingface.co/guoyww/animatediff", "filename": "v3_sd15_sparsectrl_rgb.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v3_sd15_sparsectrl_rgb.ckpt" + "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v3_sd15_sparsectrl_rgb.ckpt", + "size": "1.99GB" }, { "name": "animatediff/v3_sd15_sparsectrl_scribble.ckpt", @@ -1773,7 +1946,8 @@ "description": "AnimateDiff SparseCtrl Scribble ControlNet model", "reference": "https://huggingface.co/guoyww/animatediff", "filename": "v3_sd15_sparsectrl_scribble.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v3_sd15_sparsectrl_scribble.ckpt" + "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v3_sd15_sparsectrl_scribble.ckpt", + "size": "1.99GB" }, { "name": "animatediff/v3_sd15_adapter.ckpt", @@ -1783,9 +1957,9 @@ "description": "AnimateDiff Adapter LoRA (SD1.5)", "reference": "https://huggingface.co/guoyww/animatediff", "filename": "v3_sd15_adapter.ckpt", - "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v3_sd15_adapter.ckpt" + "url": "https://huggingface.co/guoyww/animatediff/resolve/main/v3_sd15_adapter.ckpt", + "size": "102.1MB" }, - { "name": "TencentARC/motionctrl.pth", "type": "checkpoints", @@ -1794,9 +1968,9 @@ "description": "To use the ComfyUI-MotionCtrl extension, downloading this model is required.", "reference": "https://huggingface.co/TencentARC/MotionCtrl", "filename": "motionctrl.pth", - "url": "https://huggingface.co/TencentARC/MotionCtrl/resolve/main/motionctrl.pth" + "url": "https://huggingface.co/TencentARC/MotionCtrl/resolve/main/motionctrl.pth", + "size": "4.02GB" }, - { "name": "ip-adapter_sd15.safetensors", "type": "IP-Adapter", @@ -1805,7 +1979,8 @@ "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", "reference": "https://huggingface.co/h94/IP-Adapter", "filename": "ip-adapter_sd15.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15.safetensors" + "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15.safetensors", + "size": "44.6MB" }, { "name": "ip-adapter_sd15_light_v11.bin", @@ -1815,7 +1990,8 @@ "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", "reference": "https://huggingface.co/h94/IP-Adapter", "filename": "ip-adapter_sd15_light_v11.bin", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_light_v11.bin" + "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_light_v11.bin", + "size": "44.6MB" }, { "name": "ip-adapter_sd15_light.safetensors [DEPRECATED]", @@ -1825,7 +2001,8 @@ "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", "reference": "https://huggingface.co/h94/IP-Adapter", "filename": "ip-adapter_sd15_light.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_light.safetensors" + "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_light.safetensors", + "size": "44.6MB" }, { "name": "ip-adapter-plus_sd15.safetensors", @@ -1835,7 +2012,8 @@ "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", "reference": "https://huggingface.co/h94/IP-Adapter", "filename": "ip-adapter-plus_sd15.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-plus_sd15.safetensors" + "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-plus_sd15.safetensors", + "size": "98.2MB" }, { "name": "ip-adapter-plus-face_sd15.safetensors", @@ -1845,7 +2023,8 @@ "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", "reference": "https://huggingface.co/h94/IP-Adapter", "filename": "ip-adapter-plus-face_sd15.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-plus-face_sd15.safetensors" + "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-plus-face_sd15.safetensors", + "size": "98.2MB" }, { "name": "ip-adapter-full-face_sd15.safetensors", @@ -1855,7 +2034,8 @@ "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", "reference": "https://huggingface.co/h94/IP-Adapter", "filename": "ip-adapter-full-face_sd15.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-full-face_sd15.safetensors" + "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter-full-face_sd15.safetensors", + "size": "43.6MB" }, { "name": "ip-adapter_sd15_vit-G.safetensors", @@ -1865,7 +2045,8 @@ "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", "reference": "https://huggingface.co/h94/IP-Adapter", "filename": "ip-adapter_sd15_vit-G.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_vit-G.safetensors" + "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/models/ip-adapter_sd15_vit-G.safetensors", + "size": "46.2MB" }, { "name": "ip-adapter-faceid_sd15.bin", @@ -1875,7 +2056,8 @@ "description": "IP-Adapter-FaceID Model (SD1.5) [ipadapter]", "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", "filename": "ip-adapter-faceid_sd15.bin", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sd15.bin" + "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sd15.bin", + "size": "96.7MB" }, { "name": "ip-adapter-faceid-plusv2_sd15.bin", @@ -1885,7 +2067,8 @@ "description": "IP-Adapter-FaceID Plus V2 Model (SD1.5) [ipadapter]", "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", "filename": "ip-adapter-faceid-plusv2_sd15.bin", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sd15.bin" + "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sd15.bin", + "size": "156.6MB" }, { "name": "ip-adapter-faceid-plus_sd15.bin [DEPRECATED]", @@ -1895,7 +2078,8 @@ "description": "IP-Adapter-FaceID Plus Model (SD1.5) [ipadapter]", "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", "filename": "ip-adapter-faceid-plus_sd15.bin", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plus_sd15.bin" + "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plus_sd15.bin", + "size": "156.6MB" }, { "name": "ip-adapter-faceid-portrait-v11_sd15.bin", @@ -1905,7 +2089,8 @@ "description": "IP-Adapter-FaceID Portrait V11 Model (SD1.5) [ipadapter]", "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", "filename": "ip-adapter-faceid-portrait-v11_sd15.bin", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait-v11_sd15.bin" + "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait-v11_sd15.bin", + "size": "64.6MB" }, { "name": "ip-adapter-faceid-portrait_sd15.bin [DEPRECATED]", @@ -1915,7 +2100,8 @@ "description": "IP-Adapter-FaceID Portrait Model (SD1.5) [ipadapter]", "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", "filename": "ip-adapter-faceid-portrait_sd15.bin", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait_sd15.bin" + "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait_sd15.bin", + "size": "64.6MB" }, { "name": "ip-adapter-faceid_sdxl.bin", @@ -1925,7 +2111,8 @@ "description": "IP-Adapter-FaceID Model (SDXL) [ipadapter]", "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", "filename": "ip-adapter-faceid_sdxl.bin", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sdxl.bin" + "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sdxl.bin", + "size": "1.07GB" }, { "name": "ip-adapter-faceid-plusv2_sdxl.bin", @@ -1935,7 +2122,8 @@ "description": "IP-Adapter-FaceID Plus Model (SDXL) [ipadapter]", "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", "filename": "ip-adapter-faceid-plusv2_sdxl.bin", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sdxl.bin" + "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sdxl.bin", + "size": "1.49GB" }, { "name": "ip-adapter-faceid-portrait_sdxl.bin", @@ -1945,7 +2133,8 @@ "description": "IP-Adapter-FaceID Portrait Model (SDXL) [ipadapter]", "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", "filename": "ip-adapter-faceid-portrait_sdxl.bin", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait_sdxl.bin" + "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait_sdxl.bin", + "size": "749.8MB" }, { "name": "ip-adapter-faceid-portrait_sdxl_unnorm.bin", @@ -1955,7 +2144,8 @@ "description": "IP-Adapter-FaceID Portrait Model (SDXL/unnorm) [ipadapter]", "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", "filename": "ip-adapter-faceid-portrait_sdxl_unnorm.bin", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait_sdxl_unnorm.bin" + "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-portrait_sdxl_unnorm.bin", + "size": "1.01GB" }, { "name": "ip-adapter-faceid_sd15_lora.safetensors", @@ -1965,7 +2155,8 @@ "description": "IP-Adapter-FaceID LoRA Model (SD1.5) [ipadapter]", "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", "filename": "ip-adapter-faceid_sd15_lora.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sd15_lora.safetensors" + "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sd15_lora.safetensors", + "size": "51.1MB" }, { "name": "ip-adapter-faceid-plus_sd15_lora.safetensors [DEPRECATED]", @@ -1975,7 +2166,8 @@ "description": "IP-Adapter-FaceID Plus LoRA Model (SD1.5) [ipadapter]", "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", "filename": "ip-adapter-faceid-plus_sd15_lora.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plus_sd15_lora.safetensors" + "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plus_sd15_lora.safetensors", + "size": "51.1MB" }, { "name": "ip-adapter-faceid-plusv2_sd15_lora.safetensors", @@ -1985,7 +2177,8 @@ "description": "IP-Adapter-FaceID-Plus V2 LoRA Model (SD1.5) [ipadapter]", "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", "filename": "ip-adapter-faceid-plusv2_sd15_lora.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sd15_lora.safetensors" + "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sd15_lora.safetensors", + "size": "51.1MB" }, { "name": "ip-adapter-faceid_sdxl_lora.safetensors", @@ -1995,7 +2188,8 @@ "description": "IP-Adapter-FaceID LoRA Model (SDXL) [ipadapter]", "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", "filename": "ip-adapter-faceid_sdxl_lora.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sdxl_lora.safetensors" + "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid_sdxl_lora.safetensors", + "size": "371.8MB" }, { "name": "ip-adapter-faceid-plusv2_sdxl_lora.safetensors", @@ -2005,9 +2199,9 @@ "description": "IP-Adapter-FaceID-Plus V2 LoRA Model (SDXL) [ipadapter]", "reference": "https://huggingface.co/h94/IP-Adapter-FaceID", "filename": "ip-adapter-faceid-plusv2_sdxl_lora.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sdxl_lora.safetensors" + "url": "https://huggingface.co/h94/IP-Adapter-FaceID/resolve/main/ip-adapter-faceid-plusv2_sdxl_lora.safetensors", + "size": "371.8MB" }, - { "name": "ip-adapter_sdxl.safetensors", "type": "IP-Adapter", @@ -2016,7 +2210,8 @@ "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", "reference": "https://huggingface.co/h94/IP-Adapter", "filename": "ip-adapter_sdxl.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter_sdxl.safetensors" + "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter_sdxl.safetensors", + "size": "702.6MB" }, { "name": "ip-adapter_sdxl_vit-h.safetensors", @@ -2026,7 +2221,8 @@ "description": "This model requires the use of the SD1.5 encoder despite being for SDXL checkpoints [ipadapter]", "reference": "https://huggingface.co/h94/IP-Adapter", "filename": "ip-adapter_sdxl_vit-h.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter_sdxl_vit-h.safetensors" + "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter_sdxl_vit-h.safetensors", + "size": "698.4MB" }, { "name": "ip-adapter-plus_sdxl_vit-h.safetensors", @@ -2036,7 +2232,8 @@ "description": "This model requires the use of the SD1.5 encoder despite being for SDXL checkpoints [ipadapter]", "reference": "https://huggingface.co/h94/IP-Adapter", "filename": "ip-adapter-plus_sdxl_vit-h.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter-plus_sdxl_vit-h.safetensors" + "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter-plus_sdxl_vit-h.safetensors", + "size": "847.5MB" }, { "name": "ip-adapter-plus-face_sdxl_vit-h.safetensors", @@ -2046,9 +2243,9 @@ "description": "This model requires the use of the SD1.5 encoder despite being for SDXL checkpoints [ipadapter]", "reference": "https://huggingface.co/h94/IP-Adapter", "filename": "ip-adapter-plus-face_sdxl_vit-h.safetensors", - "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter-plus-face_sdxl_vit-h.safetensors" + "url": "https://huggingface.co/h94/IP-Adapter/resolve/main/sdxl_models/ip-adapter-plus-face_sdxl_vit-h.safetensors", + "size": "847.5MB" }, - { "name": "ip_plus_composition_sd15.safetensors", "type": "IP-Adapter", @@ -2057,7 +2254,8 @@ "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", "reference": "https://huggingface.co/ostris/ip-composition-adapter", "filename": "ip_plus_composition_sd15.safetensors", - "url": "https://huggingface.co/ostris/ip-composition-adapter/resolve/main/ip_plus_composition_sd15.safetensors" + "url": "https://huggingface.co/ostris/ip-composition-adapter/resolve/main/ip_plus_composition_sd15.safetensors", + "size": "98.2MB" }, { "name": "ip_plus_composition_sdxl.safetensors", @@ -2067,9 +2265,9 @@ "description": "You can use this model in the [a/ComfyUI IPAdapter plus](https://github.com/cubiq/ComfyUI_IPAdapter_plus) extension.", "reference": "https://huggingface.co/ostris/ip-composition-adapter", "filename": "ip_plus_composition_sdxl.safetensors", - "url": "https://huggingface.co/ostris/ip-composition-adapter/resolve/main/ip_plus_composition_sdxl.safetensors" + "url": "https://huggingface.co/ostris/ip-composition-adapter/resolve/main/ip_plus_composition_sdxl.safetensors", + "size": "847.5MB" }, - { "name": "pfg-novel-n10.pt", "type": "PFG", @@ -2078,7 +2276,8 @@ "description": "Pressing 'install' directly downloads the model from the pfg-ComfyUI/models extension node. (Note: Requires ComfyUI-Manager V0.24 or above)", "reference": "https://huggingface.co/furusu/PFG", "filename": "pfg-novel-n10.pt", - "url": "https://huggingface.co/furusu/PFG/resolve/main/pfg-novel-n10.pt" + "url": "https://huggingface.co/furusu/PFG/resolve/main/pfg-novel-n10.pt", + "size": "23.6MB" }, { "name": "pfg-wd14-n10.pt", @@ -2088,7 +2287,8 @@ "description": "Pressing 'install' directly downloads the model from the pfg-ComfyUI/models extension node. (Note: Requires ComfyUI-Manager V0.24 or above)", "reference": "https://huggingface.co/furusu/PFG", "filename": "pfg-wd14-n10.pt", - "url": "https://huggingface.co/furusu/PFG/resolve/main/pfg-wd14-n10.pt" + "url": "https://huggingface.co/furusu/PFG/resolve/main/pfg-wd14-n10.pt", + "size": "31.5MB" }, { "name": "pfg-wd15beta2-n10.pt", @@ -2098,7 +2298,8 @@ "description": "Pressing 'install' directly downloads the model from the pfg-ComfyUI/models extension node. (Note: Requires ComfyUI-Manager V0.24 or above)", "reference": "https://huggingface.co/furusu/PFG", "filename": "pfg-wd15beta2-n10.pt", - "url": "https://huggingface.co/furusu/PFG/resolve/main/pfg-wd15beta2-n10.pt" + "url": "https://huggingface.co/furusu/PFG/resolve/main/pfg-wd15beta2-n10.pt", + "size": "31.5MB" }, { "name": "GFPGANv1.4.pth", @@ -2108,7 +2309,8 @@ "description": "Face Restoration Models. Download the model required for using the 'Facerestore CF (Code Former)' custom node.", "reference": "https://github.com/TencentARC/GFPGAN/releases", "filename": "GFPGANv1.4.pth", - "url": "https://github.com/TencentARC/GFPGAN/releases/download/v1.3.4/GFPGANv1.4.pth" + "url": "https://github.com/TencentARC/GFPGAN/releases/download/v1.3.4/GFPGANv1.4.pth", + "size": "348.6MB" }, { "name": "codeformer.pth", @@ -2118,7 +2320,8 @@ "description": "Face Restoration Models. Download the model required for using the 'Facerestore CF (Code Former)' custom node.", "reference": "https://github.com/sczhou/CodeFormer/releases", "filename": "codeformer.pth", - "url": "https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/codeformer.pth" + "url": "https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/codeformer.pth", + "size": "376.6MB" }, { "name": "detection_Resnet50_Final.pth", @@ -2128,7 +2331,8 @@ "description": "Face Detection Models. Download the model required for using the 'Facerestore CF (Code Former)' custom node.", "reference": "https://github.com/xinntao/facexlib", "filename": "detection_Resnet50_Final.pth", - "url": "https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_Resnet50_Final.pth" + "url": "https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_Resnet50_Final.pth", + "size": "109.5MB" }, { "name": "detection_mobilenet0.25_Final.pth", @@ -2138,7 +2342,8 @@ "description": "Face Detection Models. Download the model required for using the 'Facerestore CF (Code Former)' custom node.", "reference": "https://github.com/xinntao/facexlib", "filename": "detection_mobilenet0.25_Final.pth", - "url": "https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_mobilenet0.25_Final.pth" + "url": "https://github.com/xinntao/facexlib/releases/download/v0.1.0/detection_mobilenet0.25_Final.pth", + "size": "1.79MB" }, { "name": "yolov5l-face.pth", @@ -2148,7 +2353,8 @@ "description": "Face Detection Models. Download the model required for using the 'Facerestore CF (Code Former)' custom node.", "reference": "https://github.com/xinntao/facexlib", "filename": "yolov5l-face.pth", - "url": "https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/yolov5l-face.pth" + "url": "https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/yolov5l-face.pth", + "size": "187.0MB" }, { "name": "yolov5n-face.pth", @@ -2158,7 +2364,8 @@ "description": "Face Detection Models. Download the model required for using the 'Facerestore CF (Code Former)' custom node.", "reference": "https://github.com/xinntao/facexlib", "filename": "yolov5n-face.pth", - "url": "https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/yolov5n-face.pth" + "url": "https://github.com/sczhou/CodeFormer/releases/download/v0.1.0/yolov5n-face.pth", + "size": "7.15MB" }, { "name": "photomaker-v1.bin", @@ -2168,7 +2375,8 @@ "description": "PhotoMaker model. This model is compatible with SDXL.", "reference": "https://huggingface.co/TencentARC/PhotoMaker", "filename": "photomaker-v1.bin", - "url": "https://huggingface.co/TencentARC/PhotoMaker/resolve/main/photomaker-v1.bin" + "url": "https://huggingface.co/TencentARC/PhotoMaker/resolve/main/photomaker-v1.bin", + "size": "934.1MB" }, { "name": "1k3d68.onnx", @@ -2178,7 +2386,8 @@ "description": "Antelopev2 1k3d68.onnx model for InstantId. (InstantId needs all Antelopev2 models)", "reference": "https://github.com/cubiq/ComfyUI_InstantID#installation", "filename": "1k3d68.onnx", - "url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/1k3d68.onnx" + "url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/1k3d68.onnx", + "size": "143.6MB" }, { "name": "2d106det.onnx", @@ -2188,7 +2397,8 @@ "description": "Antelopev2 2d106det.onnx model for InstantId. (InstantId needs all Antelopev2 models)", "reference": "https://github.com/cubiq/ComfyUI_InstantID#installation", "filename": "2d106det.onnx", - "url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/2d106det.onnx" + "url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/2d106det.onnx", + "size": "5.03MB" }, { "name": "genderage.onnx", @@ -2198,7 +2408,8 @@ "description": "Antelopev2 genderage.onnx model for InstantId. (InstantId needs all Antelopev2 models)", "reference": "https://github.com/cubiq/ComfyUI_InstantID#installation", "filename": "genderage.onnx", - "url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/genderage.onnx" + "url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/genderage.onnx", + "size": "1.32MB" }, { "name": "glintr100.onnx", @@ -2208,7 +2419,8 @@ "description": "Antelopev2 glintr100.onnx model for InstantId. (InstantId needs all Antelopev2 models)", "reference": "https://github.com/cubiq/ComfyUI_InstantID#installation", "filename": "glintr100.onnx", - "url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/glintr100.onnx" + "url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/glintr100.onnx", + "size": "260.7MB" }, { "name": "scrfd_10g_bnkps.onnx", @@ -2218,7 +2430,8 @@ "description": "Antelopev2 scrfd_10g_bnkps.onnx model for InstantId. (InstantId needs all Antelopev2 models)", "reference": "https://github.com/cubiq/ComfyUI_InstantID#installation", "filename": "scrfd_10g_bnkps.onnx", - "url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/scrfd_10g_bnkps.onnx" + "url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/scrfd_10g_bnkps.onnx", + "size": "16.9MB" }, { "name": "ip-adapter.bin", @@ -2228,7 +2441,8 @@ "description": "InstantId main model based on IpAdapter", "reference": "https://huggingface.co/InstantX/InstantID", "filename": "ip-adapter.bin", - "url": "https://huggingface.co/InstantX/InstantID/resolve/main/ip-adapter.bin" + "url": "https://huggingface.co/InstantX/InstantID/resolve/main/ip-adapter.bin", + "size": "1.69GB" }, { "name": "diffusion_pytorch_model.safetensors", @@ -2238,9 +2452,9 @@ "description": "InstantId controlnet model", "reference": "https://huggingface.co/InstantX/InstantID", "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/InstantX/InstantID/resolve/main/ControlNetModel/diffusion_pytorch_model.safetensors" + "url": "https://huggingface.co/InstantX/InstantID/resolve/main/ControlNetModel/diffusion_pytorch_model.safetensors", + "size": "2.50GB" }, - { "name": "efficient_sam_s_cpu.jit [ComfyUI-YoloWorld-EfficientSAM]", "type": "efficient_sam", @@ -2249,7 +2463,8 @@ "description": "Install efficient_sam_s_cpu.jit into ComfyUI-YoloWorld-EfficientSAM", "reference": "https://huggingface.co/camenduru/YoloWorld-EfficientSAM/tree/main", "filename": "efficient_sam_s_cpu.jit", - "url": "https://huggingface.co/camenduru/YoloWorld-EfficientSAM/resolve/main/efficient_sam_s_cpu.jit" + "url": "https://huggingface.co/camenduru/YoloWorld-EfficientSAM/resolve/main/efficient_sam_s_cpu.jit", + "size": "106.0MB" }, { "name": "efficient_sam_s_gpu.jit [ComfyUI-YoloWorld-EfficientSAM]", @@ -2259,9 +2474,9 @@ "description": "Install efficient_sam_s_gpu.jit into ComfyUI-YoloWorld-EfficientSAM", "reference": "https://huggingface.co/camenduru/YoloWorld-EfficientSAM/tree/main", "filename": "efficient_sam_s_gpu.jit", - "url": "https://huggingface.co/camenduru/YoloWorld-EfficientSAM/resolve/main/efficient_sam_s_gpu.jit" + "url": "https://huggingface.co/camenduru/YoloWorld-EfficientSAM/resolve/main/efficient_sam_s_gpu.jit", + "size": "106.0MB" }, - { "name": "shape_predictor_68_face_landmarks.dat [Face Analysis]", "type": "Shape Predictor", @@ -2270,7 +2485,8 @@ "description": "To use the Face Analysis for ComfyUI custom node, installation of this model is needed.", "reference": "https://huggingface.co/matt3ounstable/dlib_predictor_recognition/tree/main", "filename": "shape_predictor_68_face_landmarks.dat", - "url": "https://huggingface.co/matt3ounstable/dlib_predictor_recognition/resolve/main/shape_predictor_68_face_landmarks.dat" + "url": "https://huggingface.co/matt3ounstable/dlib_predictor_recognition/resolve/main/shape_predictor_68_face_landmarks.dat", + "size": "99.7MB" }, { "name": "dlib_face_recognition_resnet_model_v1.dat [Face Analysis]", @@ -2280,7 +2496,8 @@ "description": "To use the Face Analysis for ComfyUI custom node, installation of this model is needed.", "reference": "https://huggingface.co/matt3ounstable/dlib_predictor_recognition/tree/main", "filename": "dlib_face_recognition_resnet_model_v1.dat", - "url": "https://huggingface.co/matt3ounstable/dlib_predictor_recognition/resolve/main/dlib_face_recognition_resnet_model_v1.dat" + "url": "https://huggingface.co/matt3ounstable/dlib_predictor_recognition/resolve/main/dlib_face_recognition_resnet_model_v1.dat", + "size": "22.5MB" }, { "name": "InstanceDiffusion/fusers", @@ -2290,7 +2507,8 @@ "description": "Fusers checkpoints for multi-object prompting with InstanceDiffusion.", "reference": "https://huggingface.co/logtd/instance_diffusion", "filename": "fusers.ckpt", - "url": "https://huggingface.co/logtd/instance_diffusion/resolve/main/fusers.ckpt" + "url": "https://huggingface.co/logtd/instance_diffusion/resolve/main/fusers.ckpt", + "size": "832.1MB" }, { "name": "InstanceDiffusion/position_net", @@ -2300,7 +2518,8 @@ "description": "PositionNet checkpoints for multi-object prompting with InstanceDiffusion.", "reference": "https://huggingface.co/logtd/instance_diffusion", "filename": "position_net.ckpt", - "url": "https://huggingface.co/logtd/instance_diffusion/resolve/main/position_net.ckpt" + "url": "https://huggingface.co/logtd/instance_diffusion/resolve/main/position_net.ckpt", + "size": "643.2MB" }, { "name": "InstanceDiffusion/scaleu", @@ -2310,7 +2529,8 @@ "description": "ScaleU checkpoints for multi-object prompting with InstanceDiffusion.", "reference": "https://huggingface.co/logtd/instance_diffusion", "filename": "scaleu.ckpt", - "url": "https://huggingface.co/logtd/instance_diffusion/resolve/main/scaleu.ckpt" + "url": "https://huggingface.co/logtd/instance_diffusion/resolve/main/scaleu.ckpt", + "size": "53.1KB" }, { "name": "1k3d68.onnx", @@ -2320,7 +2540,8 @@ "description": "Buffalo_l 1k3d68.onnx model for IpAdapterPlus", "reference": "https://github.com/cubiq/ComfyUI_IPAdapter_plus?tab=readme-ov-file#faceid", "filename": "1k3d68.onnx", - "url": "https://huggingface.co/public-data/insightface/resolve/main/models/buffalo_l/1k3d68.onnx" + "url": "https://huggingface.co/public-data/insightface/resolve/main/models/buffalo_l/1k3d68.onnx", + "size": "143.6MB" }, { "name": "2d106det.onnx", @@ -2330,7 +2551,8 @@ "description": "Buffalo_l 2d106det.onnx model for IpAdapterPlus", "reference": "https://github.com/cubiq/ComfyUI_IPAdapter_plus?tab=readme-ov-file#faceid", "filename": "2d106det.onnx", - "url": "https://huggingface.co/public-data/insightface/resolve/main/models/buffalo_l/2d106det.onnx" + "url": "https://huggingface.co/public-data/insightface/resolve/main/models/buffalo_l/2d106det.onnx", + "size": "5.03MB" }, { "name": "det_10g.onnx", @@ -2340,7 +2562,8 @@ "description": "Buffalo_l det_10g.onnx model for IpAdapterPlus", "reference": "https://github.com/cubiq/ComfyUI_IPAdapter_plus?tab=readme-ov-file#faceid", "filename": "det_10g.onnx", - "url": "https://huggingface.co/public-data/insightface/resolve/main/models/buffalo_l/det_10g.onnx" + "url": "https://huggingface.co/public-data/insightface/resolve/main/models/buffalo_l/det_10g.onnx", + "size": "16.9MB" }, { "name": "genderage.onnx", @@ -2350,7 +2573,8 @@ "description": "Buffalo_l genderage.onnx model for IpAdapterPlus", "reference": "https://github.com/cubiq/ComfyUI_IPAdapter_plus?tab=readme-ov-file#faceid", "filename": "genderage.onnx", - "url": "https://huggingface.co/public-data/insightface/resolve/main/models/buffalo_l/genderage.onnx" + "url": "https://huggingface.co/public-data/insightface/resolve/main/models/buffalo_l/genderage.onnx", + "size": "1.32MB" }, { "name": "w600k_r50.onnx", @@ -2360,117 +2584,129 @@ "description": "Buffalo_l w600k_r50.onnx model for IpAdapterPlus", "reference": "https://github.com/cubiq/ComfyUI_IPAdapter_plus?tab=readme-ov-file#faceid", "filename": "w600k_r50.onnx", - "url": "https://huggingface.co/public-data/insightface/resolve/main/models/buffalo_l/w600k_r50.onnx" + "url": "https://huggingface.co/public-data/insightface/resolve/main/models/buffalo_l/w600k_r50.onnx", + "size": "174.4MB" }, { - "name": "BLIP ImageCaption (COCO) w/ ViT-B and CapFilt-L", - "type": "BLIP_MODEL", - "base": "blip_model", - "save_path": "blip", - "description": "BLIP ImageCaption (COCO) w/ ViT-B and CapFilt-L", - "reference": "https://github.com/salesforce/BLIP", - "filename": "model_base_capfilt_large.pth", - "url": "https://storage.googleapis.com/sfr-vision-language-research/BLIP/models/model_base_capfilt_large.pth" + "name": "BLIP ImageCaption (COCO) w/ ViT-B and CapFilt-L", + "type": "BLIP_MODEL", + "base": "blip_model", + "save_path": "blip", + "description": "BLIP ImageCaption (COCO) w/ ViT-B and CapFilt-L", + "reference": "https://github.com/salesforce/BLIP", + "filename": "model_base_capfilt_large.pth", + "url": "https://storage.googleapis.com/sfr-vision-language-research/BLIP/models/model_base_capfilt_large.pth", + "size": "2.12GB" }, { - "name": "GroundingDINO SwinT OGC - Model", - "type": "GroundingDINO", - "base": "DINO", - "save_path": "groundingdino", - "description": "GroundingDINO SwinT OGC Model", - "reference": "https://huggingface.co/ShilongLiu/GroundingDINO", - "filename": "groundingdino_swint_ogc.pth", - "url": "https://huggingface.co/ShilongLiu/GroundingDINO/resolve/main/groundingdino_swint_ogc.pth" + "name": "GroundingDINO SwinT OGC - Model", + "type": "GroundingDINO", + "base": "DINO", + "save_path": "groundingdino", + "description": "GroundingDINO SwinT OGC Model", + "reference": "https://huggingface.co/ShilongLiu/GroundingDINO", + "filename": "groundingdino_swint_ogc.pth", + "url": "https://huggingface.co/ShilongLiu/GroundingDINO/resolve/main/groundingdino_swint_ogc.pth", + "size": "694.0MB" }, { - "name": "GroundingDINO SwinT OGC - CFG File", - "type": "GroundingDINO", - "base": "DINO", - "save_path": "groundingdino", - "description": "GroundingDINO SwinT OGC CFG File", - "reference": "https://huggingface.co/ShilongLiu/GroundingDINO/resolve/main/GroundingDINO_SwinT_OGC.cfg.py", - "filename": "GroundingDINO_SwinT_OGC.cfg.py", - "url": "https://huggingface.co/ShilongLiu/GroundingDINO/raw/main/GroundingDINO_SwinT_OGC.cfg.py" + "name": "GroundingDINO SwinT OGC - CFG File", + "type": "GroundingDINO", + "base": "DINO", + "save_path": "groundingdino", + "description": "GroundingDINO SwinT OGC CFG File", + "reference": "https://huggingface.co/ShilongLiu/GroundingDINO/resolve/main/GroundingDINO_SwinT_OGC.cfg.py", + "filename": "GroundingDINO_SwinT_OGC.cfg.py", + "url": "https://huggingface.co/ShilongLiu/GroundingDINO/raw/main/GroundingDINO_SwinT_OGC.cfg.py", + "size": "1.01KB" }, { - "name": "ViT-H SAM model", - "type": "sam", - "base": "SAM", - "save_path": "sams", - "description": "Segmenty Anything SAM model (ViT-H)", - "reference": "https://github.com/facebookresearch/segment-anything#model-checkpoints", - "filename": "sam_vit_h_4b8939.pth", - "url": "https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth" + "name": "ViT-H SAM model", + "type": "sam", + "base": "SAM", + "save_path": "sams", + "description": "Segmenty Anything SAM model (ViT-H)", + "reference": "https://github.com/facebookresearch/segment-anything#model-checkpoints", + "filename": "sam_vit_h_4b8939.pth", + "url": "https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth", + "size": "2.56GB" }, { - "name": "ViT-L SAM model", - "type": "sam", - "base": "SAM", - "save_path": "sams", - "description": "Segmenty Anything SAM model (ViT-L)", - "reference": "https://github.com/facebookresearch/segment-anything#model-checkpoints", - "filename": "sam_vit_l_0b3195.pth", - "url": "https://dl.fbaipublicfiles.com/segment_anything/sam_vit_l_0b3195.pth" + "name": "ViT-L SAM model", + "type": "sam", + "base": "SAM", + "save_path": "sams", + "description": "Segmenty Anything SAM model (ViT-L)", + "reference": "https://github.com/facebookresearch/segment-anything#model-checkpoints", + "filename": "sam_vit_l_0b3195.pth", + "url": "https://dl.fbaipublicfiles.com/segment_anything/sam_vit_l_0b3195.pth", + "size": "1.25GB" }, { - "name": "MobileSAM", - "type": "sam", - "base": "SAM", - "save_path": "sams", - "description": "MobileSAM", - "reference": "https://github.com/ChaoningZhang/MobileSAM/", - "filename": "mobile_sam.pt", - "url": "https://github.com/ChaoningZhang/MobileSAM/blob/master/weights/mobile_sam.pt" + "name": "MobileSAM", + "type": "sam", + "base": "SAM", + "save_path": "sams", + "description": "MobileSAM", + "reference": "https://github.com/ChaoningZhang/MobileSAM/", + "filename": "mobile_sam.pt", + "url": "https://github.com/ChaoningZhang/MobileSAM/blob/master/weights/mobile_sam.pt", + "size": "38.8MB" }, { "name": "DynamiCrafter 1024 bf16 safetensors", "type": "checkpoints", "base": "DynamiCrafter", "save_path": "checkpoints/dynamicrafter", - "description": "DynamiCrafter image2video model 1024x575", + "description": "DynamiCrafter image2video model 1024x575", "reference": "https://huggingface.co/Kijai/DynamiCrafter_pruned/", "filename": "dynamicrafter_1024_v1_bf16.safetensors", - "url": "https://huggingface.co/Kijai/DynamiCrafter_pruned/resolve/main/dynamicrafter_1024_v1_bf16.safetensors" + "url": "https://huggingface.co/Kijai/DynamiCrafter_pruned/resolve/main/dynamicrafter_1024_v1_bf16.safetensors", + "size": "5.22GB" }, { "name": "DynamiCrafter 512 interpolation bf16 safetensors", "type": "checkpoints", "base": "DynamiCrafter", "save_path": "checkpoints/dynamicrafter", - "description": "DynamiCrafter image2video interpolation model 512", + "description": "DynamiCrafter image2video interpolation model 512", "reference": "https://huggingface.co/Kijai/DynamiCrafter_pruned/", "filename": "dynamicrafter_512_interp_v1_bf16.safetensors", - "url": "https://huggingface.co/Kijai/DynamiCrafter_pruned/resolve/main/dynamicrafter_512_interp_v1_bf16.safetensors" + "url": "https://huggingface.co/Kijai/DynamiCrafter_pruned/resolve/main/dynamicrafter_512_interp_v1_bf16.safetensors", + "size": "5.22GB" }, { "name": "monster-labs - Controlnet QR Code Monster v1 For SDXL", "type": "controlnet", "base": "SDXL", "save_path": "default", - "description": "monster-labs - Controlnet QR Code Monster v1 For SDXL", + "description": "monster-labs - Controlnet QR Code Monster v1 For SDXL", "reference": "https://huggingface.co/monster-labs/control_v1p_sdxl_qrcode_monster", "filename": "control_v1p_sdxl_qrcode_monster.safetensors", - "url": "https://huggingface.co/monster-labs/control_v1p_sdxl_qrcode_monster/resolve/main/diffusion_pytorch_model.safetensors" + "url": "https://huggingface.co/monster-labs/control_v1p_sdxl_qrcode_monster/resolve/main/diffusion_pytorch_model.safetensors", + "size": "5.00GB" }, { "name": "Depth-FM-v1 fp16 safetensors", "type": "checkpoints", "base": "Depth-FM", "save_path": "checkpoints/depthfm", - "description": "Depth-FM monocular depth estimation model", + "description": "Depth-FM monocular depth estimation model", "reference": "https://huggingface.co/Kijai/depth-fm-pruned", "filename": "depthfm-v1_fp16.safetensors", - "url": "https://huggingface.co/Kijai/depth-fm-pruned/resolve/main/depthfm-v1_fp16.safetensors" + "url": "https://huggingface.co/Kijai/depth-fm-pruned/resolve/main/depthfm-v1_fp16.safetensors", + "size": "1.73GB" }, { "name": "Depth-FM-v1 fp32 safetensors", "type": "checkpoints", "base": "Depth-FM", "save_path": "checkpoints/depthfm", - "description": "Depth-FM monocular depth estimation model", + "description": "Depth-FM monocular depth estimation model", "reference": "https://huggingface.co/Kijai/depth-fm-pruned", "filename": "depthfm-v1_fp32.safetensors", - "url": "https://huggingface.co/Kijai/depth-fm-pruned/resolve/main/depthfm-v1_fp32.safetensors" + "url": "https://huggingface.co/Kijai/depth-fm-pruned/resolve/main/depthfm-v1_fp32.safetensors", + "size": "3.46GB" }, { "name": "SUPIR-v0F.ckpt", @@ -2480,7 +2716,8 @@ "description": "SUPIR checkpoint model", "reference": "https://huggingface.co/camenduru/SUPIR/tree/main", "filename": "SUPIR-v0F.ckpt", - "url": "https://huggingface.co/camenduru/SUPIR/resolve/main/SUPIR-v0F.ckpt" + "url": "https://huggingface.co/camenduru/SUPIR/resolve/main/SUPIR-v0F.ckpt", + "size": "5.33GB" }, { "name": "SUPIR-v0Q.ckpt", @@ -2490,7 +2727,8 @@ "description": "SUPIR checkpoint model", "reference": "https://huggingface.co/camenduru/SUPIR/tree/main", "filename": "SUPIR-v0Q.ckpt", - "url": "https://huggingface.co/camenduru/SUPIR/resolve/main/SUPIR-v0Q.ckpt" + "url": "https://huggingface.co/camenduru/SUPIR/resolve/main/SUPIR-v0Q.ckpt", + "size": "5.33GB" }, { "name": "Kijai/SUPIR-v0F_fp16.safetensors (pruned)", @@ -2500,7 +2738,8 @@ "description": "SUPIR checkpoint model", "reference": "https://huggingface.co/Kijai/SUPIR_pruned/tree/main", "filename": "SUPIR-v0F_fp16.safetensors", - "url": "https://huggingface.co/Kijai/SUPIR_pruned/resolve/main/SUPIR-v0F_fp16.safetensors" + "url": "https://huggingface.co/Kijai/SUPIR_pruned/resolve/main/SUPIR-v0F_fp16.safetensors", + "size": "2.66GB" }, { "name": "Kijai/SUPIR-v0Q_fp16.safetensors (pruned)", @@ -2510,7 +2749,8 @@ "description": "SUPIR checkpoint model", "reference": "https://huggingface.co/Kijai/SUPIR_pruned/tree/main", "filename": "SUPIR-v0Q_fp16.safetensors", - "url": "https://huggingface.co/Kijai/SUPIR_pruned/resolve/main/SUPIR-v0Q_fp16.safetensors" + "url": "https://huggingface.co/Kijai/SUPIR_pruned/resolve/main/SUPIR-v0Q_fp16.safetensors", + "size": "2.66GB" }, { "name": "RAM", @@ -2520,7 +2760,8 @@ "description": "RAM Recognize Anything Model", "reference": "https://huggingface.co/xinyu1205/recognize_anything_model", "filename": "ram_swin_large_14m.pth", - "url": "https://huggingface.co/xinyu1205/recognize_anything_model/resolve/main/ram_swin_large_14m.pth" + "url": "https://huggingface.co/xinyu1205/recognize_anything_model/resolve/main/ram_swin_large_14m.pth", + "size": "5.63GB" }, { "name": "RAM++", @@ -2530,7 +2771,8 @@ "description": "RAM++ Recognize Anything Model", "reference": "https://huggingface.co/xinyu1205/recognize-anything-plus-model", "filename": "ram_plus_swin_large_14m.pth", - "url": "https://huggingface.co/xinyu1205/recognize-anything-plus-model/resolve/main/ram_plus_swin_large_14m.pth" + "url": "https://huggingface.co/xinyu1205/recognize-anything-plus-model/resolve/main/ram_plus_swin_large_14m.pth", + "size": "3.01GB" }, { "name": "tag2text", @@ -2540,7 +2782,8 @@ "description": "tag2text Recognize Anything Model", "reference": "https://huggingface.co/xinyu1205/recognize_anything_model", "filename": "tag2text_swin_14m.pth", - "url": "https://huggingface.co/xinyu1205/recognize_anything_model/resolve/main/tag2text_swin_14m.pth" + "url": "https://huggingface.co/xinyu1205/recognize_anything_model/resolve/main/tag2text_swin_14m.pth", + "size": "4.48GB" }, { "name": "Zero123 3D object Model", @@ -2550,7 +2793,8 @@ "description": "model that been trained on 10M+ 3D objects from Objaverse-XL, used for generated rotated CamView", "reference": "https://objaverse.allenai.org/docs/zero123-xl/", "filename": "zero123-xl.ckpt", - "url": "https://huggingface.co/kealiu/zero123-xl/resolve/main/zero123-xl.ckpt" + "url": "https://huggingface.co/kealiu/zero123-xl/resolve/main/zero123-xl.ckpt", + "size": "15.5GB" }, { "name": "Zero123 3D object Model", @@ -2560,7 +2804,8 @@ "description": "Stable Zero123 is a model for view-conditioned image generation based on [a/Zero123](https://github.com/cvlab-columbia/zero123).", "reference": "https://huggingface.co/stabilityai/stable-zero123", "filename": "stable_zero123.ckpt", - "url": "https://huggingface.co/stabilityai/stable-zero123/resolve/main/stable_zero123.ckpt" + "url": "https://huggingface.co/stabilityai/stable-zero123/resolve/main/stable_zero123.ckpt", + "size": "8.58GB" }, { "name": "Zero123 3D object Model", @@ -2570,7 +2815,8 @@ "description": "Zero123 original checkpoints in 105000 steps.", "reference": "https://huggingface.co/cvlab/zero123-weights", "filename": "zero123-105000.ckpt", - "url": "https://huggingface.co/cvlab/zero123-weights/resolve/main/105000.ckpt" + "url": "https://huggingface.co/cvlab/zero123-weights/resolve/main/105000.ckpt", + "size": "15.5GB" }, { "name": "Zero123 3D object Model", @@ -2580,7 +2826,8 @@ "description": "Zero123 original checkpoints in 165000 steps.", "reference": "https://huggingface.co/cvlab/zero123-weights", "filename": "zero123-165000.ckpt", - "url": "https://huggingface.co/cvlab/zero123-weights/resolve/main/165000.ckpt" + "url": "https://huggingface.co/cvlab/zero123-weights/resolve/main/165000.ckpt", + "size": "15.5GB" }, { "name": "InstantID/ip-adapter", @@ -2590,7 +2837,8 @@ "description": "ip-adapter model for cubiq/InstantID", "reference": "https://huggingface.co/InstantX/InstantID", "filename": "ip-adapter.bin", - "url": "https://huggingface.co/InstantX/InstantID/resolve/main/ip-adapter.bin" + "url": "https://huggingface.co/InstantX/InstantID/resolve/main/ip-adapter.bin", + "size": "1.69GB" }, { "name": "InstantID/ControlNet", @@ -2600,7 +2848,8 @@ "description": "instantid controlnet model for cubiq/InstantID", "reference": "https://huggingface.co/InstantX/InstantID", "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/InstantX/InstantID/resolve/main/ControlNetModel/diffusion_pytorch_model.safetensors" + "url": "https://huggingface.co/InstantX/InstantID/resolve/main/ControlNetModel/diffusion_pytorch_model.safetensors", + "size": "2.50GB" }, { "name": "MonsterMMORPG/insightface (for InstantID)", @@ -2610,7 +2859,8 @@ "description": "MonsterMMORPG insightface model for cubiq/InstantID", "reference": "https://huggingface.co/MonsterMMORPG/tools/tree/main", "filename": "antelopev2.zip", - "url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/antelopev2.zip" + "url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/antelopev2.zip", + "size": "360.7MB" }, { "name": "IC-Light/fc", @@ -2620,7 +2870,8 @@ "description": "The default relighting model, conditioned on text and foreground", "reference": "https://huggingface.co/lllyasviel/ic-light", "filename": "iclight_sd15_fc.safetensors", - "url": "https://huggingface.co/lllyasviel/ic-light/resolve/main/iclight_sd15_fc.safetensors" + "url": "https://huggingface.co/lllyasviel/ic-light/resolve/main/iclight_sd15_fc.safetensors", + "size": "1.72GB" }, { "name": "IC-Light/fbc", @@ -2630,7 +2881,8 @@ "description": "Relighting model conditioned with text, foreground, and background", "reference": "https://huggingface.co/lllyasviel/ic-light", "filename": "iclight_sd15_fbc.safetensors", - "url": "https://huggingface.co/lllyasviel/ic-light/resolve/main/iclight_sd15_fbc.safetensors" + "url": "https://huggingface.co/lllyasviel/ic-light/resolve/main/iclight_sd15_fbc.safetensors", + "size": "1.72GB" }, { "name": "IC-Light/fcon", @@ -2640,10 +2892,9 @@ "description": "Same as iclight_sd15_fc.safetensors, but trained with offset noise", "reference": "https://huggingface.co/lllyasviel/ic-light", "filename": "iclight_sd15_fcon.safetensors", - "url": "https://huggingface.co/lllyasviel/ic-light/resolve/main/iclight_sd15_fcon.safetensors" + "url": "https://huggingface.co/lllyasviel/ic-light/resolve/main/iclight_sd15_fcon.safetensors", + "size": "1.72GB" }, - - { "name": "ID-Animator/animator.ckpt", "type": "ID-Animator", @@ -2652,7 +2903,8 @@ "description": "ID-Animator checkpoint", "reference": "https://huggingface.co/spaces/ID-Animator/ID-Animator", "filename": "animator.ckpt", - "url": "https://huggingface.co/spaces/ID-Animator/ID-Animator/resolve/main/animator.ckpt" + "url": "https://huggingface.co/spaces/ID-Animator/ID-Animator/resolve/main/animator.ckpt", + "size": "247.3MB" }, { "name": "ID-Animator/mm_sd_v15_v2.ckpt", @@ -2662,7 +2914,8 @@ "description": "AnimateDiff checkpoint for ID-Animator", "reference": "https://huggingface.co/spaces/ID-Animator/ID-Animator", "filename": "mm_sd_v15_v2.ckpt", - "url": "https://huggingface.co/spaces/ID-Animator/ID-Animator/resolve/main/mm_sd_v15_v2.ckpt" + "url": "https://huggingface.co/spaces/ID-Animator/ID-Animator/resolve/main/mm_sd_v15_v2.ckpt", + "size": "1.82GB" }, { "name": "ID-Animator/image_encoder", @@ -2672,9 +2925,9 @@ "description": "CLIP Image encoder for ID-Animator", "reference": "https://huggingface.co/spaces/ID-Animator/ID-Animator", "filename": "model.safetensors", - "url": "https://huggingface.co/spaces/ID-Animator/ID-Animator/resolve/main/image_encoder/model.safetensors" + "url": "https://huggingface.co/spaces/ID-Animator/ID-Animator/resolve/main/image_encoder/model.safetensors", + "size": "2.53GB" }, - { "name": "TencentARC/CustomNet", "type": "CustomNet", @@ -2683,152 +2936,218 @@ "description": "CustomNet pretrained model for ComfyUI_CustomNet", "reference": "https://huggingface.co/TencentARC/CustomNet/tree/main", "filename": "customnet_v1.pt", - "url": "https://huggingface.co/TencentARC/CustomNet/resolve/main/customnet_v1.pt" + "url": "https://huggingface.co/TencentARC/CustomNet/resolve/main/customnet_v1.pt", + "size": "5.71GB" }, - { "name": "TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic v2 (fp16)", "type": "controlnet", "base": "SDXL", "save_path": "controlnet/SDXL", - "description": "[2.5GB] Controlnet SDXL Tile model realistic version.", + "description": "Controlnet SDXL Tile model realistic version.", "reference": "https://huggingface.co/TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic", "filename": "TTPLANET_Controlnet_Tile_realistic_v2_fp16.safetensors", - "url": "https://huggingface.co/TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic/resolve/main/TTPLANET_Controlnet_Tile_realistic_v2_fp16.safetensors" + "url": "https://huggingface.co/TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic/resolve/main/TTPLANET_Controlnet_Tile_realistic_v2_fp16.safetensors", + "size": "2.50GB" }, { "name": "TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic v2 (rank256)", "type": "controlnet", "base": "SDXL", "save_path": "controlnet/SDXL", - "description": "[774MB] Controlnet SDXL Tile model realistic version.", + "description": "Controlnet SDXL Tile model realistic version.", "reference": "https://huggingface.co/TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic", "filename": "TTPLANET_Controlnet_Tile_realistic_v2_rank256.safetensors", - "url": "https://huggingface.co/TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic/resolve/main/TTPLANET_Controlnet_Tile_realistic_v2_rank256.safetensors" + "url": "https://huggingface.co/TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic/resolve/main/TTPLANET_Controlnet_Tile_realistic_v2_rank256.safetensors", + "size": "774.4MB" }, - { "name": "ViperYX/RGT_x2.pth", "type": "RGT", "base": "RGT", "save_path": "RGT/RGT", - "description": "[180MB] RGT x2 upscale model for ComfyUI-RGT", + "description": "RGT x2 upscale model for ComfyUI-RGT", "reference": "https://huggingface.co/ViperYX/RGT/tree/main", "filename": "RGT_x2.pth", - "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT/RGT_x2.pth" + "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT/RGT_x2.pth", + "size": "179.8MB" }, { "name": "ViperYX/RGT_x3.pth", "type": "RGT", "base": "RGT", "save_path": "RGT/RGT", - "description": "[180MB] RGT x3 upscale model for ComfyUI-RGT", + "description": "RGT x3 upscale model for ComfyUI-RGT", "reference": "https://huggingface.co/ViperYX/RGT/tree/main", "filename": "RGT_x3.pth", - "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT/RGT_x3.pth" + "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT/RGT_x3.pth", + "size": "180.5MB" }, { "name": "ViperYX/RGT_x4.pth", "type": "RGT", "base": "RGT", "save_path": "RGT/RGT", - "description": "[180MB] RGT_S x4 upscale model for ComfyUI-RGT", + "description": "RGT_S x4 upscale model for ComfyUI-RGT", "reference": "https://huggingface.co/ViperYX/RGT/tree/main", "filename": "RGT_x4.pth", - "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT/RGT_x4.pth" + "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT/RGT_x4.pth", + "size": "180.4MB" }, - { "name": "ViperYX/RGT_S_x2.pth", "type": "RGT", "base": "RGT", "save_path": "RGT/RGT_S", - "description": "[135MB] RGT_S x2 upscale model for ComfyUI-RGT", + "description": "RGT_S x2 upscale model for ComfyUI-RGT", "reference": "https://huggingface.co/ViperYX/RGT/tree/main", "filename": "RGT_S_x2.pth", - "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT_S/RGT_S_x2.pth" + "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT_S/RGT_S_x2.pth", + "size": "135.4MB" }, { "name": "ViperYX/RGT_S_x3.pth", "type": "RGT", "base": "RGT", "save_path": "RGT/RGT_S", - "description": "[136MB] RGT_S x3 upscale model for ComfyUI-RGT", + "description": "RGT_S x3 upscale model for ComfyUI-RGT", "reference": "https://huggingface.co/ViperYX/RGT/tree/main", "filename": "RGT_S_x3.pth", - "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT_S/RGT_S_x3.pth" + "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT_S/RGT_S_x3.pth", + "size": "136.1MB" }, { "name": "ViperYX/RGT_S_x4.pth", "type": "RGT", "base": "RGT", "save_path": "RGT/RGT_S", - "description": "[136MB] RGT_S x4 upscale model for ComfyUI-RGT", + "description": "RGT_S x4 upscale model for ComfyUI-RGT", "reference": "https://huggingface.co/ViperYX/RGT/tree/main", "filename": "RGT_S_x4.pth", - "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT_S/RGT_S_x4.pth" + "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT_S/RGT_S_x4.pth", + "size": "136.0MB" }, - { "name": "Doubiiu/ToonCrafter model checkpoint", "type": "checkpoint", "base": "ToonCrafter", "save_path": "custom_nodes/ComfyUI-ToonCrafter/ToonCrafter/checkpoints/tooncrafter_512_interp_v1", - "description": "[10.5GB] ToonCrafter checkpoint model for ComfyUI-ToonCrafter", + "description": "ToonCrafter checkpoint model for ComfyUI-ToonCrafter", "reference": "https://huggingface.co/Doubiiu/ToonCrafter/tree/main", "filename": "model.ckpt", - "url": "https://huggingface.co/Doubiiu/ToonCrafter/resolve/main/model.ckpt" + "url": "https://huggingface.co/Doubiiu/ToonCrafter/resolve/main/model.ckpt", + "size": "10.5GB" }, - { "name": "xinsir/Controlnet-Scribble-Sdxl-1.0", "type": "controlnet", "base": "SDXL", "save_path": "controlnet/SDXL/controlnet-scribble-sdxl-1.0", - "description": "[2.5GB] Controlnet SDXL Scribble model.", + "description": "Controlnet SDXL Scribble model.", "reference": "https://huggingface.co/xinsir/controlnet-scribble-sdxl-1.0", "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/xinsir/controlnet-scribble-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors" + "url": "https://huggingface.co/xinsir/controlnet-scribble-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", + "size": "2.50GB" }, { "name": "xinsir/Controlnet-Canny-Sdxl-1.0 (V2)", "type": "controlnet", "base": "SDXL", "save_path": "controlnet/SDXL/controlnet-canny-sdxl-1.0", - "description": "[2.5GB] Controlnet SDXL Canny model.", + "description": "Controlnet SDXL Canny model.", "reference": "https://huggingface.co/xinsir/controlnet-canny-sdxl-1.0", "filename": "diffusion_pytorch_model_V2.safetensors", - "url": "https://huggingface.co/xinsir/controlnet-canny-sdxl-1.0/resolve/main/diffusion_pytorch_model_V2.safetensors" + "url": "https://huggingface.co/xinsir/controlnet-canny-sdxl-1.0/resolve/main/diffusion_pytorch_model_V2.safetensors", + "size": "2.50GB" }, { "name": "xinsir/Controlnet-Openpose-Sdxl-1.0", "type": "controlnet", "base": "SDXL", "save_path": "controlnet/SDXL/controlnet-openpose-sdxl-1.0", - "description": "[2.5GB] Controlnet SDXL Openpose model.", + "description": "Controlnet SDXL Openpose model.", "reference": "https://huggingface.co/xinsir/controlnet-openpose-sdxl-1.0", "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/xinsir/controlnet-openpose-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors" + "url": "https://huggingface.co/xinsir/controlnet-openpose-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", + "size": "2.50GB" }, { "name": "xinsir/Controlnet-Openpose-Sdxl-1.0 (Ver. twins)", "type": "controlnet", "base": "SDXL", "save_path": "controlnet/SDXL/controlnet-openpose-sdxl-1.0", - "description": "[2.5GB] Controlnet SDXL Openpose model. (Ver. twins)", + "description": "Controlnet SDXL Openpose model. (Ver. twins)", "reference": "https://huggingface.co/xinsir/controlnet-openpose-sdxl-1.0", "filename": "diffusion_pytorch_model_twins.safetensors", - "url": "https://huggingface.co/xinsir/controlnet-openpose-sdxl-1.0/resolve/main/diffusion_pytorch_model_twins.safetensors" + "url": "https://huggingface.co/xinsir/controlnet-openpose-sdxl-1.0/resolve/main/diffusion_pytorch_model_twins.safetensors", + "size": "2.50GB" }, { "name": "xinsir/Controlnet-Scribble-Sdxl-1.0-Anime", "type": "controlnet", "base": "SDXL", "save_path": "controlnet/SDXL/controlnet-scribble-sdxl-1.0-anime", - "description": "[2.5GB] Controlnet SDXL Scribble model. (Ver. anime)", + "description": "Controlnet SDXL Scribble model. (Ver. anime)", "reference": "https://huggingface.co/xinsir/anime-painter", "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/xinsir/anime-painter/resolve/main/diffusion_pytorch_model.safetensors" + "url": "https://huggingface.co/xinsir/anime-painter/resolve/main/diffusion_pytorch_model.safetensors", + "size": "2.50GB" + }, + { + "name": "xinsir/ControlNet Depth SDXL, support zoe, midias", + "type": "controlnet", + "base": "SDXL", + "save_path": "controlnet/SDXL/controlnet-depth-sdxl-1.0", + "description": "Controlnet SDXL Depth model.", + "reference": "https://huggingface.co/xinsir/controlnet-depth-sdxl-1.0", + "filename": "diffusion_pytorch_model.safetensors", + "url": "https://huggingface.co/xinsir/controlnet-depth-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", + "size": "2.50GB" + }, + { + "name": "xinsir/ControlNet Tile SDXL", + "type": "controlnet", + "base": "SDXL", + "save_path": "controlnet/SDXL/controlnet-tile-sdxl-1.0", + "description": "Controlnet SDXL Tile model.", + "reference": "https://huggingface.co/xinsir/controlnet-tile-sdxl-1.0", + "filename": "diffusion_pytorch_model.safetensors", + "url": "https://huggingface.co/xinsir/controlnet-tile-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", + "size": "2.50GB" + }, + + { + "name": "InstantX/SD3-Controlnet-Canny", + "type": "controlnet", + "base": "SD3", + "save_path": "controlnet/SD3/InstantX-Controlnet-Canny", + "description": "Controlnet SD3 Canny model.", + "reference": "https://huggingface.co/InstantX/SD3-Controlnet-Canny", + "filename": "diffusion_pytorch_model.safetensors", + "url": "https://huggingface.co/InstantX/SD3-Controlnet-Canny/resolve/main/diffusion_pytorch_model.safetensors", + "size": "1.19GB" + }, + { + "name": "InstantX/SD3-Controlnet-Pose", + "type": "controlnet", + "base": "SD3", + "save_path": "controlnet/SD3/InstantX-Controlnet-Pose", + "description": "Controlnet SD3 Pose model.", + "reference": "https://huggingface.co/InstantX/SD3-Controlnet-Pose", + "filename": "diffusion_pytorch_model.safetensors", + "url": "https://huggingface.co/InstantX/SD3-Controlnet-Pose/resolve/main/diffusion_pytorch_model.safetensors", + "size": "1.19GB" + }, + { + "name": "InstantX/SD3-Controlnet-Tile", + "type": "controlnet", + "base": "SD3", + "save_path": "controlnet/SD3/InstantX-Controlnet-Tile", + "description": "Controlnet SD3 Tile model.", + "reference": "https://huggingface.co/InstantX/SD3-Controlnet-Tile", + "filename": "diffusion_pytorch_model.safetensors", + "url": "https://huggingface.co/InstantX/SD3-Controlnet-Tile/resolve/main/diffusion_pytorch_model.safetensors", + "size": "1.19GB" }, { @@ -2836,173 +3155,198 @@ "type": "checkpoint", "base": "ToonCrafter", "save_path": "checkpoints/ToonCrafter", - "description": "[5.25GB] ToonCrafter checkpoint model for ComfyUI-DynamiCrafterWrapper", + "description": "ToonCrafter checkpoint model for ComfyUI-DynamiCrafterWrapper", "reference": "https://huggingface.co/Kijai/DynamiCrafter_pruned", "filename": "tooncrafter_512_interp-fp16.safetensors", - "url": "https://huggingface.co/Kijai/DynamiCrafter_pruned/resolve/main/tooncrafter_512_interp-fp16.safetensors" + "url": "https://huggingface.co/Kijai/DynamiCrafter_pruned/resolve/main/tooncrafter_512_interp-fp16.safetensors", + "size": "5.25GB" }, - { "name": "CN-anytest_v4-marged.safetensors", "type": "controlnet", "base": "SDXL", "save_path": "controlnet/SDXL", - "description": "[2.5GB] AnyTest Controlnet. A model for style transfer.", + "description": "AnyTest Controlnet. A model for style transfer.", "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", "filename": "CN-anytest_v4-marged.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged.safetensors" + "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged.safetensors", + "size": "2.50GB" }, { "name": "CN-anytest_v4-marged_am_dim256.safetensors (dim256/Animagine)", "type": "controlnet", "base": "SDXL", "save_path": "controlnet/SDXL", - "description": "[774MB] AnyTest Controlnet Lora (dim256) for Animagine. A model for style transfer.", + "description": "AnyTest Controlnet Lora (dim256) for Animagine. A model for style transfer.", "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", "filename": "CN-anytest_v4-marged_am_dim256.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged_am_dim256.safetensors" + "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged_am_dim256.safetensors", + "size": "774.4MB" }, { "name": "CN-anytest_v4-marged_am_dim128.safetensors (dim128/Animagine)", "type": "controlnet", "base": "SDXL", "save_path": "controlnet/SDXL", - "description": "[396MB] AnyTest Controlnet Lora (dim128) for Animagine. A model for style transfer.", + "description": "AnyTest Controlnet Lora (dim128) for Animagine. A model for style transfer.", "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", "filename": "CN-anytest_v4-marged_am_dim128.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged_am_dim128.safetensors" + "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged_am_dim128.safetensors", + "size": "395.7MB" }, { "name": "CN-anytest_v4-marged_pn_dim256.safetensors (dim256/Pony)", "type": "controlnet", "base": "SDXL", "save_path": "controlnet/SDXL", - "description": "[774MB] AnyTest Controlnet Lora (dim256) for Pony. A model for style transfer.", + "description": "AnyTest Controlnet Lora (dim256) for Pony. A model for style transfer.", "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", "filename": "CN-anytest_v4-marged_pn_dim256.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged_pn_dim256.safetensors" + "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged_pn_dim256.safetensors", + "size": "774.4MB" }, { "name": "CN-anytest_v4-marged_pn_dim128.safetensors (dim128/Pony)", "type": "controlnet", "base": "SDXL", "save_path": "controlnet/SDXL", - "description": "[396MB] AnyTest Controlnet Lora (dim128) for Pony. A model for style transfer.", + "description": "AnyTest Controlnet Lora (dim128) for Pony. A model for style transfer.", "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", "filename": "CN-anytest_v4-marged_pn_dim128.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged_pn_dim128.safetensors" + "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged_pn_dim128.safetensors", + "size": "395.7MB" }, - { "name": "CN-anytest_v3-50000_fp16.safetensors (fp16)", "type": "controlnet", "base": "SDXL", "save_path": "controlnet/SDXL", - "description": "[2.5GB] AnyTest Controlnet. A strict control model.", + "description": "AnyTest Controlnet. A strict control model.", "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", "filename": "CN-anytest_v3-50000_fp16.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_fp16.safetensors" + "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_fp16.safetensors", + "size": "2.50GB" }, { "name": "CN-anytest_v3-50000_am_dim256.safetensors (dim256/Animagine)", "type": "controlnet", "base": "SDXL", "save_path": "controlnet/SDXL", - "description": "[774MB] AnyTest Controlnet Lora (dim256) for Animagine. A strict control model.", + "description": "AnyTest Controlnet Lora (dim256) for Animagine. A strict control model.", "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", "filename": "CN-anytest_v3-50000_am_dim256.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_am_dim256.safetensors" + "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_am_dim256.safetensors", + "size": "774.4MB" }, { "name": "CN-anytest_v3-50000_am_dim128.safetensors (dim128/Animagine)", "type": "controlnet", "base": "SDXL", "save_path": "controlnet/SDXL", - "description": "[396MB] AnyTest Controlnet Lora (dim128) for Animagine. A strict control model.", + "description": "AnyTest Controlnet Lora (dim128) for Animagine. A strict control model.", "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", "filename": "CN-anytest_v3-50000_am_dim128.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_am_dim128.safetensors" + "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_am_dim128.safetensors", + "size": "395.7MB" }, { "name": "CN-anytest_v3-50000_pn_dim256.safetensors (dim256/Pony)", "type": "controlnet", "base": "SDXL", "save_path": "controlnet/SDXL", - "description": "[774MB] AnyTest Controlnet Lora (dim256) for Pony. A strict control model.", + "description": "AnyTest Controlnet Lora (dim256) for Pony. A strict control model.", "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", "filename": "CN-anytest_v3-50000_pn_dim256.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_pn_dim256.safetensors" + "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_pn_dim256.safetensors", + "size": "774.4MB" }, { "name": "CN-anytest_v3-50000_pn_dim128.safetensors (dim128/Pony)", "type": "controlnet", "base": "SDXL", "save_path": "controlnet/SDXL", - "description": "[396MB] AnyTest Controlnet Lora (dim128) for Pony. A strict control model.", + "description": "AnyTest Controlnet Lora (dim128) for Pony. A strict control model.", "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", "filename": "CN-anytest_v3-50000_pn_dim128.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_pn_dim128.safetensors" + "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_pn_dim128.safetensors", + "size": "395.7MB" }, - { "name": "kijai/DepthAnythingV2 (vitb/fp16)", "type": "depthanything", "base": "depthanything", "save_path": "depthanything", - "description": "[195MB] DepthAnythingV2 model", + "description": "DepthAnythingV2 model", "reference": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/tree/main", "filename": "depth_anything_v2_vitb_fp16.safetensors", - "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vitb_fp16.safetensors" + "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vitb_fp16.safetensors", + "size": "195.0MB" }, { "name": "kijai/DepthAnythingV2 (vitb/fp32)", "type": "depthanything", "base": "depthanything", "save_path": "depthanything", - "description": "[390MB] DepthAnythingV2 model", + "description": "DepthAnythingV2 model", "reference": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/tree/main", "filename": "depth_anything_v2_vitb_fp32.safetensors", - "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vitb_fp32.safetensors" + "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vitb_fp32.safetensors", + "size": "389.9MB" }, { "name": "kijai/DepthAnythingV2 (vitl/fp16)", "type": "depthanything", "base": "depthanything", "save_path": "depthanything", - "description": "[671MB] DepthAnythingV2 model", + "description": "DepthAnythingV2 model", "reference": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/tree/main", "filename": "depth_anything_v2_vitl_fp16.safetensors", - "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vitl_fp16.safetensors" + "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vitl_fp16.safetensors", + "size": "670.7MB" }, { "name": "kijai/DepthAnythingV2 (vitl/fp32)", "type": "depthanything", "base": "depthanything", "save_path": "depthanything", - "description": "[195MB] DepthAnythingV2 model", + "description": "DepthAnythingV2 model", "reference": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/tree/main", "filename": "depth_anything_v2_vitl_fp32.safetensors", - "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vitl_fp32.safetensors" + "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vitl_fp32.safetensors", + "size": "1.34GB" }, { "name": "kijai/DepthAnythingV2 (vits/fp16)", "type": "depthanything", "base": "depthanything", "save_path": "depthanything", - "description": "[49.6MB] DepthAnythingV2 model", + "description": "DepthAnythingV2 model", "reference": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/tree/main", "filename": "depth_anything_v2_vits_fp16.safetensors", - "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vits_fp16.safetensors" + "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vits_fp16.safetensors", + "size": "49.6MB" }, { "name": "kijai/DepthAnythingV2 (vitb/fp32)", "type": "depthanything", "base": "depthanything", "save_path": "depthanything", - "description": "[99.2MB] DepthAnythingV2 model", + "description": "DepthAnythingV2 model", "reference": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/tree/main", "filename": "depth_anything_v2_vits_fp32.safetensors", - "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vits_fp32.safetensors" + "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vits_fp32.safetensors", + "size": "99.2MB" + }, + { + "name": "PixArt-Sigma-XL-2-1024-MS.pth", + "type": "checkpoint", + "base": "pixart-sigma", + "save_path": "checkpoints/PixArt-Sigma", + "description": "PixArt-Sigma Checkpoint model", + "reference": "https://huggingface.co/PixArt-alpha/PixArt-Sigma/tree/main", + "filename": "PixArt-Sigma-XL-2-1024-MS.pth", + "url": "https://huggingface.co/PixArt-alpha/PixArt-Sigma/resolve/main/PixArt-Sigma-XL-2-1024-MS.pth", + "size": "2.47GB" } ] -} +} \ No newline at end of file diff --git a/node_db/dev/custom-node-list.json b/node_db/dev/custom-node-list.json index c50b054b..6200e884 100644 --- a/node_db/dev/custom-node-list.json +++ b/node_db/dev/custom-node-list.json @@ -9,40 +9,241 @@ "description": "If you see this message, your ComfyUI-Manager is outdated.\nDev channel provides only the list of the developing nodes. If you want to find the complete node list, please go to the Default channel." }, - - + { - "author": "zhulu111", - "title": "ComfyUI_Bxb [UNSAFE]", - "id": "ComfyUI_Bxb", - "reference": "https://github.com/zhulu111/ComfyUI_Bxb", + "author": "kijai", + "title": "MimicMotion wrapper for ComfyUI [WIP]", + "id": "mimicmotion-wrapper", + "reference": "https://github.com/kijai/ComfyUI-MimicMotionWrapper", "files": [ - "https://github.com/zhulu111/ComfyUI_Bxb" + "https://github.com/kijai/ComfyUI-MimicMotionWrapper" ], "install_type": "git-clone", - "description": "sdBxb, a tool that converts ComfyUI workflows into WeChat Mini Program, Douyin Mini Program, and H5 with one click, and supports payments." + "description": "Original repo: [a/https://github.com/tencent/MimicMotion](https://github.com/tencent/MimicMotion)" }, { - "author": "mingqizhang", - "title": "ComfyUI_tool_zmq", - "id": "tool-zmq", - "reference": "https://github.com/mingqizhang/ComfyUI_tool_zmq", + "author": "thderoo", + "title": "_topfun_s_nodes", + "reference": "https://github.com/thderoo/ComfyUI-_topfun_s_nodes", "files": [ - "https://github.com/mingqizhang/ComfyUI_tool_zmq" + "https://github.com/thderoo/ComfyUI-_topfun_s_nodes" ], "install_type": "git-clone", - "description": "Nodes:ImageConcat, ImageFlip, DWposeTransform, PoseFilter, DrawPose, ReplaceImgae, LoadImageFromPath." + "description": "Nodes:Conditioning Perturbation" + }, + { + "author": "willblaschko", + "title": "ComfyUI-Unload-Models", + "reference": "https://github.com/willblaschko/ComfyUI-Unload-Models", + "files": [ + "https://github.com/willblaschko/ComfyUI-Unload-Models" + ], + "install_type": "git-clone", + "description": "This repository provides developers with a way to better manage their ComfyUI model memory. It includes nodes that allow developers to either unload all models or unload one model at a time. These nodes are designed as pass-through nodes, so they can be used anywhere in the flow. The nodes can be found in the 'Unload Model' section.[w/These are massive hammers, and it could be possible to break things, please don't use them if you need finesse.]" }, { "author": "kijai", - "title": "ComfyUI-LuminaWrapper [WIP]", - "id": "luminawrapper", - "reference": "https://github.com/kijai/ComfyUI-LuminaWrapper", + "title": "ComfyUI-OpenDiTWrapper [WIP]", + "id": "open-dit-wrapper", + "reference": "https://github.com/kijai/ComfyUI-OpenDiTWrapper", "files": [ - "https://github.com/kijai/ComfyUI-LuminaWrapper" + "https://github.com/kijai/ComfyUI-OpenDiTWrapper" ], "install_type": "git-clone", - "description": "NOTE:Currently requires flash_attn!" + "description": "Original repo: [a/https://github.com/NUS-HPC-AI-Lab/OpenDiT](https://github.com/NUS-HPC-AI-Lab/OpenDiT)" + }, + { + "author": "GeekyGhost", + "title": "ComfyUI-GeekyRemB v2", + "reference": "https://github.com/GeekyGhost/ComfyUI-GeekyRemB", + "files": [ + "https://github.com/GeekyGhost/ComfyUI-GeekyRemB/raw/SketchUITest/GeekyRembv2.py" + ], + "install_type": "copy", + "description": "GeekyRemB Node Description: GeekyRemB is a powerful and versatile image processing node for ComfyUI, designed to remove backgrounds from images with advanced customization options. This node leverages the rembg library and offers a wide range of features for fine-tuning the background removal process and enhancing the resulting images." + }, + { + "author": "AIFSH", + "title": "ComfyUI-OpenDIT [WIP]", + "id": "opendit", + "reference": "https://github.com/AIFSH/ComfyUI-OpenDIT", + "files": [ + "https://github.com/AIFSH/ComfyUI-OpenDIT" + ], + "install_type": "git-clone", + "description": "make [a/OpenDIT](https://github.com/NUS-HPC-AI-Lab/OpenDiT) avaliable in ComfyUI" + }, + { + "author": "alexisrolland", + "title": "alexisrolland/ComfyUI-AuraSR", + "id": "aurasr-alexisrolland", + "reference": "https://github.com/alexisrolland/ComfyUI-AuraSR", + "files": [ + "https://github.com/alexisrolland/ComfyUI-AuraSR" + ], + "install_type": "git-clone", + "description": "Custom ComfyUI nodes to run [a/fal-ai/AuraSR](https://huggingface.co/fal-ai/AuraSR) model.[w/This node cannot be installed simultaneously with AIFSH/ComfyUI-AuraSR due to overlapping repository names.]" + }, + { + "author": "mingqizhang", + "title": "ComfyUI_AEMatter_zmq", + "id": "aematter", + "reference": "https://github.com/mingqizhang/ComfyUI_AEMatter_zmq", + "files": [ + "https://github.com/mingqizhang/ComfyUI_AEMatter_zmq" + ], + "install_type": "git-clone", + "description": "Nodes:AEMatter_ModelLoader, Create_Trimap, AEMatter_Apply, Mask_Transfor, Replace_Background, Gaussian_Filter, Guide_Filter, Improved_Aplha_Composite" + }, + { + "author": "m-ai-studio", + "title": "mai-prompt-progress", + "reference": "https://github.com/m-ai-studio/mai-prompt-progress", + "files": [ + "https://github.com/m-ai-studio/mai-prompt-progress" + ], + "install_type": "git-clone", + "description": "mai-prompt-progress" + }, + { + "author": "linhusyung", + "title": "ComfyUI Build and Train Your Network [WIP]", + "id": "cfgpp", + "reference": "https://github.com/linhusyung/comfyui-Build-and-train-your-network", + "files": [ + "https://github.com/linhusyung/comfyui-Build-and-train-your-network" + ], + "install_type": "git-clone", + "description": "Stable Diffusion is an image generation technique based on diffusion models. Its core idea involves simulating diffusion processes by iteratively adding noise and using neural networks to predict and remove the noise, thereby generating high-quality images. This approach is not limited to image generation; with appropriate network architecture and training data, it can be adapted for various other tasks. The application of neural networks extends beyond image generation. By adjusting network structures and loss functions, neural networks can also perform tasks such as classification and regression. This flexibility makes neural networks a powerful tool for handling a wide range of machine learning tasks. This project aims to expand custom neural network layers (such as linear layers, convolutional layers, etc.) within ComfyUI and provide simplified task training functionalities. Through this project, users can easily construct custom neural network layers and perform training in ComfyUI using a graphical interface." + }, + { + "author": "alexgenovese", + "title": "comfyui_CfgPlusPlus [WIP]", + "id": "cfgpp", + "reference": "https://gitea.com/NotEvilGirl/cfgpp", + "files": [ + "https://gitea.com/NotEvilGirl/cfgpp" + ], + "install_type": "git-clone", + "description": "CFG++ implemented according to [a/https://cfgpp-diffusion.github.io](https://cfgpp-diffusion.github.io). Basically modified DDIM sampler that makes sampling work at low CFG values (0 ~ 2). Read the CFG++ paper for more details" + }, + { + "author": "Fucci-Mateo", + "title": "ComfyUI-Airtable [WIP]", + "id": "airtable", + "reference": "https://github.com/Fucci-Mateo/ComfyUI-Airtable", + "files": [ + "https://github.com/Fucci-Mateo/ComfyUI-Airtable" + ], + "install_type": "git-clone", + "description": "A simple node to load image from local path or http url. You can find this node from 'image' category." + }, + { + "author": "mingqizhang", + "title": "ComfyUI_AEMatter_zmq", + "id": "aematter-zmq", + "reference": "https://github.com/mingqizhang/ComfyUI_AEMatter_zmq", + "files": [ + "https://github.com/mingqizhang/ComfyUI_AEMatter_zmq" + ], + "install_type": "git-clone", + "description": "Nodes:AEMatter_ModelLoader, Create_Trimap, AEMatter_Apply, Mask_Transfor, Replace_Background, Gaussian_Filter, Guide_Filter" + }, + { + "author": "majorsauce", + "title": "comfyui_indieTools [WIP]", + "id": "indie-tools", + "reference": "https://github.com/majorsauce/comfyui_indieTools", + "files": [ + "https://github.com/majorsauce/comfyui_indieTools" + ], + "install_type": "git-clone", + "description": "Nodes:[Indie] Cut by Mask, [Indie] Paste Image, [Indie] Local Scale, [Indie] Solidify, [Indie] Yolo Detector.[w/Install may fail due to invliad requirements.txt file]" + }, + { + "author": "AIFSH", + "title": "ComfyUI-ViViD", + "id": "vivid", + "reference": "https://github.com/AIFSH/ComfyUI-ViViD", + "files": [ + "https://github.com/AIFSH/ComfyUI-ViViD" + ], + "install_type": "git-clone", + "description": "a comfyui custom node for ViViD" + }, + { + "author": "NeuralNotW0rk", + "title": "ComfyUI-Waveform-Extensions", + "reference": "https://github.com/NeuralNotW0rk/ComfyUI-Waveform-Extensions", + "files": [ + "https://github.com/NeuralNotW0rk/ComfyUI-Waveform-Extensions/raw/main/EXT_VariationUtils.py", + "https://github.com/NeuralNotW0rk/ComfyUI-Waveform-Extensions/raw/main/EXT_AudioManipulation.py" + ], + "install_type": "copy", + "description": "Some additional audio utilites for use on top of Sample Diffusion ComfyUI Extension" + }, + { + "author": "mingqizhang", + "title": "ComfyUI_AEMatter_zmq", + "reference": "https://github.com/mingqizhang/ComfyUI_AEMatter_zmq", + "files": [ + "https://github.com/mingqizhang/ComfyUI_AEMatter_zmq" + ], + "install_type": "git-clone", + "description": "Nodes:AEMatter_ModelLoader, Create_Trimap, AEMatter_Apply, Mask_Transfor, Replace_Background, Gaussian_Filter, Guide_Filter." + }, + { + "author": "nat-chan", + "title": "comfyui-paint", + "reference": "https://github.com/nat-chan/comfyui-paint", + "files": [ + "https://github.com/nat-chan/comfyui-paint" + ], + "install_type": "git-clone", + "description": "comfyui-paint\n[w/You need to clone submodule manually after clone. There is permission issue.]" + }, + { + "author": "prabinpebam", + "title": "anyPython [UNSAFE]", + "reference": "https://github.com/prabinpebam/anyPython", + "files": [ + "https://github.com/prabinpebam/anyPython" + ], + "install_type": "git-clone", + "description": "This node was inspired by AnyNode. I wanted to have a node where I can paste any python script and execute it. That way I can use this node in combination with a Custom node like the Ollama node that can generate the python code and feed into this node. This also makes it much easier to debug or modify the code iteratively. As of the current version, I've created separate nodes for no input, 1 input and 2 inputs. The input also currently takes only sting as input. Let me know in the discussion how you would use this node.\n[w/This extension allows the execution of arbitrary Python code from a workflow.]" + }, + { + "author": "kijai", + "title": "ComfyUI DiffSynth wrapper nodes", + "id": "diffsynth-wrapper", + "reference": "https://github.com/kijai/ComfyUI-DiffSynthWrapper", + "files": [ + "https://github.com/kijai/ComfyUI-DiffSynthWrapper" + ], + "install_type": "git-clone", + "description": "Currently only the new extended SVD model 'ExVideo' is supported.\nOriginal repo:[a/https://github.com/modelscope/DiffSynth-Studio](https://github.com/modelscope/DiffSynth-Studio)" + }, + { + "author": "AllenEdgarPoe", + "title": "ComfyUI-Xorbis-nodes", + "id": "xorbis", + "reference": "https://github.com/AllenEdgarPoe/ComfyUI-Xorbis-nodes", + "files": [ + "https://github.com/AllenEdgarPoe/ComfyUI-Xorbis-nodes" + ], + "install_type": "git-clone", + "description": "This repository is for MuseumX Update. We use ComfyUI as our framework, and the nodes are built for my comfort." + }, + { + "author": "mikeymcfish", + "title": "LaserCutterFull and Deptherize Nodes", + "id": "fishtools", + "reference": "https://github.com/mikeymcfish/FishTools", + "files": [ + "https://github.com/mikeymcfish/FishTools" + ], + "install_type": "git-clone", + "description": "This repository contains two custom nodes, LaserCutterFull and Deptherize, designed for use in image processing workflows. The LaserCutterFull node processes input images to generate layers for laser cutting, while the Deptherize node converts SVG data into a depth map image." }, { "author": "pzzmyc", @@ -338,17 +539,6 @@ "install_type": "git-clone", "description": "ComfyUI-Comflow." }, - { - "author": "AI2lab", - "title": "comfyUI-tool-2lab", - "id": "tool2lab", - "reference": "https://github.com/AI2lab/comfyUI-tool-2lab", - "files": [ - "https://github.com/AI2lab/comfyUI-tool-2lab" - ], - "install_type": "git-clone", - "description": "simple tool set for developing workflow and publish to web api server" - }, { "author": "pamparamm", "title": "ComfyUI-ppm", diff --git a/node_db/dev/extension-node-map.json b/node_db/dev/extension-node-map.json index 607c449f..b6f2a587 100644 --- a/node_db/dev/extension-node-map.json +++ b/node_db/dev/extension-node-map.json @@ -196,6 +196,15 @@ "title_aux": "YANC- Yet Another Node Collection" } ], + "https://github.com/AllenEdgarPoe/ComfyUI-Xorbis-nodes": [ + [ + "Add Human Styler", + "Save Log Info" + ], + { + "title_aux": "ComfyUI-Xorbis-nodes" + } + ], "https://github.com/BadCafeCode/execution-inversion-demo-comfyui": [ [ "AccumulateNode", @@ -331,6 +340,7 @@ ], "https://github.com/GraftingRayman/ComfyUI_GR_PromptSelector": [ [ + "GR Checkered Board", "GR Flip Tile Random Inverted", "GR Flip Tile Random Red Ring", "GR Image Details Displayer", @@ -338,13 +348,16 @@ "GR Image Resize", "GR Image Resize Methods", "GR Image Size", + "GR Image/Depth Mask", "GR Mask Create", "GR Mask Create Random", "GR Mask Resize", "GR Multi Mask Create", + "GR Onomatopoeia", "GR Prompt Selector", "GR Prompt Selector Multi", "GR Stack Image", + "GR Text Overlay", "GR Tile and Border Image", "GR Tile and Border Image Random Flip" ], @@ -506,6 +519,17 @@ "title_aux": "DJZ-Nodes" } ], + "https://github.com/NeuralNotW0rk/ComfyUI-Waveform-Extensions/raw/main/EXT_VariationUtils.py": [ + [ + "BatchToList", + "ConcatAudioList", + "SequenceVariation", + "SliceAudio" + ], + { + "title_aux": "ComfyUI-Waveform-Extensions" + } + ], "https://github.com/NitramDom/ComfyUI_FacialFlip": [ [ "Swapper" @@ -525,6 +549,7 @@ ], "https://github.com/Quasimondo/ComfyUI-QuasimondoNodes": [ [ + "CPPN Generator", "Color Match", "Custom Shader", "Folder Queue Manager", @@ -568,17 +593,9 @@ "https://github.com/Scorpinaus/ComfyUI-DiffusersLoader": [ [ "CombinedDiffusersLoader", - "CombinedDiffusersSD15Loader", - "CombinedDiffusersSDXLLoader", "DiffusersClipLoader", "DiffusersUNETLoader", - "DiffusersVAELoader", - "SD15CLIPLoader", - "SD15UNETLoader", - "SD15VAELoader", - "SDXLCLIPLoader", - "SDXLUNETLoader", - "SDXLVAELoader" + "DiffusersVAELoader" ], { "title_aux": "ComfyUI-DiffusersLoader" @@ -600,12 +617,17 @@ "Clip Text Encode (Shinsplat)", "Clip Text Encode SD3 (Shinsplat)", "Clip Text Encode SDXL (Shinsplat)", + "Clip Text Encode T5 (Shinsplat)", + "Clip Tokens Encode (Shinsplat)", "Green Box (Shinsplat)", + "Hex To Other (Shinsplat)", "Lora Loader (Shinsplat)", "Python (Shinsplat)", "Python - More Inputs (Shinsplat)", "String Interpolated (Shinsplat)", "Sum Wrap (Shinsplat)", + "Test Node (Shinsplat)", + "Text To Tokens (Shinsplat)", "Variables (Shinsplat)" ], { @@ -724,11 +746,13 @@ ], "https://github.com/baicai99/ComfyUI-FrameSkipping": [ [ + "FrameSelector", "FrameSkipping", "FrameTruncating", "IntOperationsNode", "MaskFrameSkipping", - "WhiteMaskGenerator" + "MaskGenerator", + "MaskSelector" ], { "title_aux": "ComfyUI-FrameSkipping" @@ -914,6 +938,7 @@ "DualCFGGuider", "DualCLIPLoader", "EmptyImage", + "EmptyLatentAudio", "EmptyLatentImage", "EmptySD3LatentImage", "ExponentialScheduler", @@ -921,6 +946,7 @@ "FlipSigmas", "FreeU", "FreeU_V2", + "GITSScheduler", "GLIGENLoader", "GLIGENTextBoxApply", "GrowMask", @@ -967,6 +993,7 @@ "LatentSubtract", "LatentUpscale", "LatentUpscaleBy", + "LoadAudio", "LoadImage", "LoadImageMask", "LoadLatent", @@ -978,10 +1005,12 @@ "ModelMergeBlocks", "ModelMergeSD1", "ModelMergeSD2", + "ModelMergeSD3_2B", "ModelMergeSDXL", "ModelMergeSimple", "ModelMergeSubtract", "ModelSamplingContinuousEDM", + "ModelSamplingContinuousV", "ModelSamplingDiscrete", "ModelSamplingSD3", "ModelSamplingStableCascade", @@ -1012,10 +1041,12 @@ "SamplerDPMPP_3M_SDE", "SamplerDPMPP_SDE", "SamplerEulerAncestral", + "SamplerEulerCFGpp", "SamplerLCMUpscale", "SamplerLMS", "SaveAnimatedPNG", "SaveAnimatedWEBP", + "SaveAudio", "SaveImage", "SaveImageWebsocket", "SaveLatent", @@ -1042,8 +1073,10 @@ "UNetTemporalAttentionMultiply", "UpscaleModelLoader", "VAEDecode", + "VAEDecodeAudio", "VAEDecodeTiled", "VAEEncode", + "VAEEncodeAudio", "VAEEncodeForInpaint", "VAEEncodeTiled", "VAELoader", @@ -1254,6 +1287,14 @@ "title_aux": "ComfyUI-InstantStyle" } ], + "https://github.com/horidream/ComfyUI-Horidream": [ + [ + "PassThroughWithSound" + ], + { + "title_aux": "ComfyUI-Horidream" + } + ], "https://github.com/houdinii/comfy-magick": [ [ "AdaptiveBlur", @@ -1481,10 +1522,11 @@ "https://github.com/jtydhr88/ComfyUI-Unique3D": [ [ "Unique3DLoadPipeline", - "Unique3DRun" + "Unique3DRun - Geo Reconstruct", + "Unique3DRun - MVPrediction" ], { - "title_aux": "ComfyUI-Unique3D" + "title_aux": "ComfyUI-Unique3D [WIP]" } ], "https://github.com/kadirnar/ComfyUI-Adapter": [ @@ -1553,6 +1595,24 @@ "title_aux": "ComfyUI nodes to use DeepSeek-VL" } ], + "https://github.com/kijai/ComfyUI-DiffSynthWrapper": [ + [ + "DiffSynthSampler", + "DownloadAndLoadDiffSynthExVideoSVD" + ], + { + "title_aux": "ComfyUI DiffSynth wrapper nodes [WIP]" + } + ], + "https://github.com/kijai/ComfyUI-DiffusersSD3Wrapper": [ + [ + "LoadSD3DiffusersPipeline", + "SD3ControlNetSampler" + ], + { + "title_aux": "ComfyUI-DiffusersSD3Wrapper" + } + ], "https://github.com/komojini/ComfyUI_Prompt_Template_CustomNodes/raw/main/prompt_with_template.py": [ [ "ObjectPromptWithTemplate", @@ -1665,6 +1725,33 @@ "title_aux": "ComfyUI mashb1t nodes" } ], + "https://github.com/mikeymcfish/FishTools": [ + [ + "Deptherize", + "LaserCutterFull" + ], + { + "author": "Fish", + "description": "This extension provides tools for generating laser cutter ready files", + "nickname": "FishTools", + "title": "FishTools", + "title_aux": "LaserCutterFull and Deptherize Nodes" + } + ], + "https://github.com/mingqizhang/ComfyUI_AEMatter_zmq": [ + [ + "AEMatter_Apply", + "AEMatter_ModelLoader", + "Create_Trimap", + "Gaussian_Filter", + "Guide_Filter", + "Mask_Transfor", + "Replace_Background" + ], + { + "title_aux": "ComfyUI_AEMatter_zmq" + } + ], "https://github.com/mut-ex/comfyui-gligengui-node": [ [ "GLIGEN_GUI" @@ -1762,6 +1849,18 @@ "title_aux": "NudeNet-Detector-Provider [WIP]" } ], + "https://github.com/prabinpebam/anyPython": [ + [ + "Any Python" + ], + { + "author": "prabinpebam", + "description": "This node can take any input and use that to run a python script in ComfyUI", + "nickname": "AnyPython", + "title": "AnyPython v0.1", + "title_aux": "anyPython [UNSAFE]" + } + ], "https://github.com/prismwastaken/comfyui-tools": [ [ "Prism-RandomNormal" @@ -1770,6 +1869,14 @@ "title_aux": "prism-tools" } ], + "https://github.com/pzzmyc/comfyui-sd3-simple-simpletuner": [ + [ + "sd not very simple simpletuner by hhy" + ], + { + "title_aux": "comfyui-sd3-simple-simpletuner" + } + ], "https://github.com/redhottensors/ComfyUI-ODE": [ [ "Blended Transition [DVB]", diff --git a/node_db/dev/github-stats.json b/node_db/dev/github-stats.json index d444454e..8239a113 100644 --- a/node_db/dev/github-stats.json +++ b/node_db/dev/github-stats.json @@ -1,712 +1,762 @@ { "https://github.com/17Retoucher/ComfyUI_Fooocus": { - "stars": 51, + "stars": 52, "last_update": "2024-02-24 07:33:29", - "author_account_age_days": 162 + "author_account_age_days": 171 }, "https://github.com/A719689614/ComfyUI_AC_FUNV8Beta1": { "stars": 13, "last_update": "2024-03-08 10:11:44", - "author_account_age_days": 305 + "author_account_age_days": 314 }, "https://github.com/AI2lab/comfyUI-tool-2lab": { - "stars": 5, + "stars": 7, "last_update": "2024-06-06 16:16:11", - "author_account_age_days": 183 + "author_account_age_days": 192 }, "https://github.com/AIGODLIKE/ComfyUI-Studio": { - "stars": 202, + "stars": 203, "last_update": "2024-06-05 00:52:46", - "author_account_age_days": 492 + "author_account_age_days": 501 }, "https://github.com/ALatentPlace/ComfyUI_yanc": { - "stars": 15, + "stars": 18, "last_update": "2024-06-14 09:04:57", - "author_account_age_days": 1450 + "author_account_age_days": 1460 + }, + "https://github.com/AllenEdgarPoe/ComfyUI-Xorbis-nodes": { + "stars": 0, + "last_update": "2024-06-21 01:43:13", + "author_account_age_days": 2105 + }, + "https://github.com/AustinMroz/ComfyUI-WorkflowCheckpointing": { + "stars": 5, + "last_update": "2024-06-19 21:19:45", + "author_account_age_days": 4074 }, "https://github.com/BadCafeCode/execution-inversion-demo-comfyui": { - "stars": 3, - "last_update": "2024-03-23 23:53:13", - "author_account_age_days": 421 + "stars": 4, + "last_update": "2024-06-19 06:59:39", + "author_account_age_days": 430 }, "https://github.com/Beinsezii/comfyui-amd-go-fast": { - "stars": 8, + "stars": 9, "last_update": "2024-05-10 00:48:37", - "author_account_age_days": 2217 + "author_account_age_days": 2226 }, "https://github.com/BlueDangerX/ComfyUI-BDXNodes": { "stars": 1, "last_update": "2023-12-10 04:01:19", - "author_account_age_days": 237 + "author_account_age_days": 246 }, "https://github.com/Brandelan/ComfyUI_bd_customNodes": { "stars": 1, "last_update": "2023-10-09 00:40:26", - "author_account_age_days": 4142 + "author_account_age_days": 4151 }, "https://github.com/DeTK/ComfyUI-Switch": { "stars": 0, "last_update": "2024-03-04 11:52:04", - "author_account_age_days": 2022 + "author_account_age_days": 2031 }, "https://github.com/DrMWeigand/ComfyUI_LineBreakInserter": { "stars": 0, "last_update": "2024-04-19 11:37:19", - "author_account_age_days": 1022 + "author_account_age_days": 1032 }, "https://github.com/Elawphant/ComfyUI-MusicGen": { "stars": 4, "last_update": "2024-05-11 13:33:24", - "author_account_age_days": 2579 + "author_account_age_days": 2588 }, "https://github.com/ExponentialML/ComfyUI_LiveDirector": { - "stars": 34, + "stars": 35, "last_update": "2024-04-09 19:01:49", - "author_account_age_days": 1614 + "author_account_age_days": 1623 }, "https://github.com/Extraltodeus/Conditioning-token-experiments-for-ComfyUI": { "stars": 13, "last_update": "2024-03-10 01:04:02", - "author_account_age_days": 3140 + "author_account_age_days": 3149 }, "https://github.com/FoundD-oka/ComfyUI-kisekae-OOTD": { "stars": 0, "last_update": "2024-06-02 06:13:42", - "author_account_age_days": 428 + "author_account_age_days": 437 }, "https://github.com/GentlemanHu/ComfyUI-Notifier": { "stars": 3, "last_update": "2024-06-04 10:05:38", - "author_account_age_days": 2374 + "author_account_age_days": 2383 }, "https://github.com/GraftingRayman/ComfyUI_GR_PromptSelector": { - "stars": 9, - "last_update": "2024-06-14 09:06:14", - "author_account_age_days": 154 + "stars": 17, + "last_update": "2024-06-22 18:22:20", + "author_account_age_days": 163 }, "https://github.com/GrindHouse66/ComfyUI-GH_Tools": { "stars": 0, "last_update": "2024-03-10 13:27:14", - "author_account_age_days": 615 + "author_account_age_days": 624 }, "https://github.com/IvanZhd/comfyui-codeformer": { "stars": 0, "last_update": "2023-12-02 20:51:52", - "author_account_age_days": 2569 + "author_account_age_days": 2578 }, "https://github.com/Jaxkr/comfyui-terminal-command": { "stars": 1, "last_update": "2023-12-03 10:31:40", - "author_account_age_days": 4618 + "author_account_age_days": 4627 }, "https://github.com/Jiffies-64/ComfyUI-SaveImagePlus": { "stars": 0, "last_update": "2024-04-01 10:52:59", - "author_account_age_days": 882 + "author_account_age_days": 891 }, "https://github.com/Jordach/comfy-consistency-vae": { "stars": 68, "last_update": "2023-11-06 20:50:40", - "author_account_age_days": 4503 + "author_account_age_days": 4513 }, "https://github.com/LZpenguin/ComfyUI-Text": { - "stars": 5, - "last_update": "2024-06-15 07:11:12", - "author_account_age_days": 1970 + "stars": 9, + "last_update": "2024-06-20 13:38:16", + "author_account_age_days": 1979 }, "https://github.com/LarryJane491/ComfyUI-ModelUnloader": { "stars": 1, "last_update": "2024-01-14 08:22:39", - "author_account_age_days": 154 + "author_account_age_days": 164 }, "https://github.com/LotzF/ComfyUI-Simple-Chat-GPT-completion": { "stars": 0, "last_update": "2024-02-04 21:15:22", - "author_account_age_days": 920 + "author_account_age_days": 929 }, "https://github.com/LykosAI/ComfyUI-Inference-Core-Nodes": { - "stars": 14, + "stars": 16, "last_update": "2024-04-05 05:11:51", - "author_account_age_days": 369 + "author_account_age_days": 378 }, "https://github.com/MrAdamBlack/CheckProgress": { "stars": 1, "last_update": "2024-01-10 08:02:18", - "author_account_age_days": 2711 + "author_account_age_days": 2720 }, "https://github.com/MushroomFleet/DJZ-Nodes": { "stars": 4, "last_update": "2024-03-18 11:18:42", - "author_account_age_days": 3712 + "author_account_age_days": 3721 }, "https://github.com/NicholasKao1029/comfyui-hook": { "stars": 0, "last_update": "2024-03-07 05:50:56", - "author_account_age_days": 2021 + "author_account_age_days": 2030 }, "https://github.com/NitramDom/ComfyUI_FacialFlip": { "stars": 2, "last_update": "2024-06-07 14:56:55", - "author_account_age_days": 3163 + "author_account_age_days": 3172 }, "https://github.com/PluMaZero/ComfyUI-SpaceFlower": { "stars": 4, "last_update": "2023-12-09 05:55:15", - "author_account_age_days": 1049 + "author_account_age_days": 1058 }, "https://github.com/Quasimondo/ComfyUI-QuasimondoNodes": { - "stars": 0, - "last_update": "2024-06-01 21:27:18", - "author_account_age_days": 5266 + "stars": 4, + "last_update": "2024-06-21 19:55:21", + "author_account_age_days": 5275 }, "https://github.com/SadaleNet/ComfyUI-Prompt-To-Prompt": { - "stars": 19, + "stars": 20, "last_update": "2024-03-17 04:30:01", - "author_account_age_days": 4030 + "author_account_age_days": 4040 }, "https://github.com/Sai-ComfyUI/ComfyUI-MS-Nodes": { "stars": 2, "last_update": "2024-02-22 08:34:44", - "author_account_age_days": 200 + "author_account_age_days": 209 }, "https://github.com/Scorpinaus/ComfyUI-DiffusersLoader": { "stars": 3, - "last_update": "2024-06-14 09:02:43", - "author_account_age_days": 1101 + "last_update": "2024-06-23 01:30:57", + "author_account_age_days": 1110 }, "https://github.com/SeedV/ComfyUI-SeedV-Nodes": { "stars": 1, "last_update": "2024-06-05 10:01:47", - "author_account_age_days": 1116 + "author_account_age_days": 1126 }, "https://github.com/Shinsplat/ComfyUI-Shinsplat": { - "stars": 10, - "last_update": "2024-06-15 11:05:38", - "author_account_age_days": 1015 + "stars": 13, + "last_update": "2024-06-22 14:29:36", + "author_account_age_days": 1024 }, "https://github.com/StartHua/Comfyui_CXH_CRM": { - "stars": 24, + "stars": 26, "last_update": "2024-06-06 14:15:14", - "author_account_age_days": 2826 + "author_account_age_days": 2835 }, "https://github.com/TSFSean/ComfyUI-TSFNodes": { "stars": 4, "last_update": "2024-05-18 00:59:06", - "author_account_age_days": 3463 + "author_account_age_days": 3472 }, "https://github.com/TemryL/ComfyUI-IDM-VTON": { - "stars": 184, - "last_update": "2024-05-30 12:21:57", - "author_account_age_days": 859 + "stars": 203, + "last_update": "2024-06-22 06:14:19", + "author_account_age_days": 868 }, "https://github.com/Video3DGenResearch/comfyui-batch-input-node": { "stars": 1, "last_update": "2024-04-28 15:21:17", - "author_account_age_days": 97 + "author_account_age_days": 106 }, "https://github.com/WSJUSA/Comfyui-StableSR": { - "stars": 36, + "stars": 38, "last_update": "2023-10-18 12:40:30", - "author_account_age_days": 1415 + "author_account_age_days": 1424 }, "https://github.com/WilliamStanford/visuallabs_comfyui_nodes": { "stars": 1, "last_update": "2024-04-16 21:53:02", - "author_account_age_days": 1760 + "author_account_age_days": 1769 }, "https://github.com/ZHO-ZHO-ZHO/ComfyUI-AnyText": { - "stars": 44, + "stars": 45, "last_update": "2024-05-22 14:30:05", - "author_account_age_days": 330 + "author_account_age_days": 340 }, "https://github.com/ZHO-ZHO-ZHO/ComfyUI-PuLID-ZHO": { - "stars": 182, + "stars": 184, "last_update": "2024-05-22 13:38:23", - "author_account_age_days": 330 + "author_account_age_days": 340 }, "https://github.com/alt-key-project/comfyui-dream-video-batches": { - "stars": 50, + "stars": 51, "last_update": "2024-05-22 20:52:05", - "author_account_age_days": 651 + "author_account_age_days": 660 }, "https://github.com/baicai99/ComfyUI-FrameSkipping": { - "stars": 1, - "last_update": "2024-06-15 04:48:19", - "author_account_age_days": 822 + "stars": 6, + "last_update": "2024-06-18 10:25:55", + "author_account_age_days": 831 }, "https://github.com/beyastard/ComfyUI_BeySoft": { "stars": 0, "last_update": "2024-05-26 22:44:55", - "author_account_age_days": 4277 + "author_account_age_days": 4286 }, "https://github.com/birnam/ComfyUI-GenData-Pack": { "stars": 0, "last_update": "2024-03-25 01:25:23", - "author_account_age_days": 5000 + "author_account_age_days": 5009 }, "https://github.com/blepping/comfyui_overly_complicated_sampling": { "stars": 5, "last_update": "2024-06-12 01:05:41", - "author_account_age_days": 145 + "author_account_age_days": 154 }, "https://github.com/blib-la/ComfyUI-Captain-Extensions": { "stars": 0, "last_update": "2024-05-17 23:27:25", - "author_account_age_days": 264 + "author_account_age_days": 273 }, "https://github.com/bruce007lee/comfyui-cleaner": { "stars": 3, "last_update": "2024-04-20 15:36:03", - "author_account_age_days": 4503 + "author_account_age_days": 4512 }, "https://github.com/bruce007lee/comfyui-tiny-utils": { "stars": 0, "last_update": "2024-06-07 03:44:47", - "author_account_age_days": 4503 + "author_account_age_days": 4512 }, "https://github.com/brycegoh/comfyui-custom-nodes": { "stars": 0, "last_update": "2024-06-05 09:30:06", - "author_account_age_days": 3099 + "author_account_age_days": 3108 }, "https://github.com/chaojie/ComfyUI-DynamiCrafter": { - "stars": 108, + "stars": 109, "last_update": "2024-06-14 10:23:59", - "author_account_age_days": 4824 + "author_account_age_days": 4833 }, "https://github.com/chaojie/ComfyUI-mobvoi-openapi": { "stars": 2, "last_update": "2024-05-29 09:02:52", - "author_account_age_days": 4824 + "author_account_age_days": 4833 }, "https://github.com/christian-byrne/infinite-zoom-parallax-nodes": { - "stars": 3, + "stars": 4, "last_update": "2024-05-27 01:51:24", - "author_account_age_days": 1339 + "author_account_age_days": 1348 }, "https://github.com/christian-byrne/python-interpreter-node": { - "stars": 19, - "last_update": "2024-06-01 06:00:47", - "author_account_age_days": 1339 + "stars": 20, + "last_update": "2024-06-23 22:22:20", + "author_account_age_days": 1348 }, "https://github.com/comfyanonymous/ComfyUI": { - "stars": 38239, - "last_update": "2024-06-15 07:12:27", - "author_account_age_days": 540 + "stars": 39915, + "last_update": "2024-06-24 11:47:40", + "author_account_age_days": 549 }, "https://github.com/comfypod/ComfyUI-Comflow": { "stars": 0, - "last_update": "2024-06-14 16:01:27", - "author_account_age_days": 14 + "last_update": "2024-06-17 08:44:08", + "author_account_age_days": 23 }, "https://github.com/corbin-hayden13/ComfyUI-Better-Dimensions": { - "stars": 6, + "stars": 7, "last_update": "2024-06-12 17:45:21", - "author_account_age_days": 1806 + "author_account_age_days": 1815 }, "https://github.com/cubiq/Comfy_Dungeon": { - "stars": 169, + "stars": 174, "last_update": "2024-04-26 11:00:58", - "author_account_age_days": 5002 + "author_account_age_days": 5011 }, "https://github.com/dezi-ai/ComfyUI-AnimateLCM": { - "stars": 147, + "stars": 148, "last_update": "2024-02-07 17:34:39", - "author_account_age_days": 168 + "author_account_age_days": 177 }, "https://github.com/dfl/comfyui-stylegan": { "stars": 1, "last_update": "2024-03-14 14:34:25", - "author_account_age_days": 5965 + "author_account_age_days": 5974 }, "https://github.com/dnl13/ComfyUI-dnl13-seg": { "stars": 16, "last_update": "2024-01-08 10:52:13", - "author_account_age_days": 4209 + "author_account_age_days": 4218 }, "https://github.com/doucx/ComfyUI_WcpD_Utility_Kit": { "stars": 1, "last_update": "2024-01-06 19:07:45", - "author_account_age_days": 2314 + "author_account_age_days": 2323 }, "https://github.com/eigenpunk/ComfyUI-audio": { - "stars": 58, + "stars": 59, "last_update": "2024-03-03 21:14:14", - "author_account_age_days": 916 + "author_account_age_days": 925 }, "https://github.com/ejektaflex/ComfyUI-Ty": { "stars": 0, "last_update": "2024-06-12 16:08:16", - "author_account_age_days": 2763 + "author_account_age_days": 2772 }, "https://github.com/endman100/ComfyUI-SaveAndLoadPromptCondition": { "stars": 0, "last_update": "2024-06-06 06:07:49", - "author_account_age_days": 2464 + "author_account_age_days": 2473 }, "https://github.com/ericbeyer/guidance_interval": { "stars": 2, "last_update": "2024-04-16 03:24:01", - "author_account_age_days": 2585 + "author_account_age_days": 2594 }, "https://github.com/flowtyone/comfyui-flowty-lcm": { "stars": 62, "last_update": "2023-10-23 12:08:55", - "author_account_age_days": 264 + "author_account_age_days": 273 }, "https://github.com/flyingdogsoftware/gyre_for_comfyui": { "stars": 0, - "last_update": "2024-06-13 23:39:25", - "author_account_age_days": 2003 + "last_update": "2024-06-21 15:35:49", + "author_account_age_days": 2013 }, "https://github.com/foglerek/comfyui-cem-tools": { "stars": 1, "last_update": "2024-01-13 23:22:07", - "author_account_age_days": 4029 + "author_account_age_days": 4038 }, "https://github.com/gameltb/ComfyUI_paper_playground": { - "stars": 8, - "last_update": "2024-06-05 07:13:23", - "author_account_age_days": 4046 + "stars": 9, + "last_update": "2024-06-20 07:16:06", + "author_account_age_days": 4055 }, "https://github.com/gameltb/ComfyUI_stable_fast": { - "stars": 182, + "stars": 183, "last_update": "2024-06-06 12:43:16", - "author_account_age_days": 4046 + "author_account_age_days": 4055 }, "https://github.com/gameltb/io_comfyui": { "stars": 3, "last_update": "2024-04-06 04:40:05", - "author_account_age_days": 4046 + "author_account_age_days": 4055 }, "https://github.com/githubYiheng/comfyui_median_filter": { "stars": 0, "last_update": "2024-05-24 15:21:40", - "author_account_age_days": 3894 + "author_account_age_days": 3903 }, "https://github.com/haofanwang/ComfyUI-InstantStyle": { "stars": 5, "last_update": "2024-05-23 16:11:13", - "author_account_age_days": 2968 + "author_account_age_days": 2977 + }, + "https://github.com/horidream/ComfyUI-Horidream": { + "stars": 0, + "last_update": "2024-06-18 02:09:07", + "author_account_age_days": 5043 }, "https://github.com/houdinii/comfy-magick": { "stars": 4, "last_update": "2024-03-11 06:40:54", - "author_account_age_days": 3511 + "author_account_age_days": 3520 }, "https://github.com/huchenlei/ComfyUI_densediffusion": { - "stars": 44, + "stars": 70, "last_update": "2024-06-11 00:39:28", - "author_account_age_days": 2866 + "author_account_age_days": 2875 }, "https://github.com/huchenlei/ComfyUI_omost": { - "stars": 281, + "stars": 321, "last_update": "2024-06-14 12:45:52", - "author_account_age_days": 2866 + "author_account_age_days": 2875 }, "https://github.com/huizhang0110/ComfyUI_Easy_Nodes_hui": { "stars": 2, "last_update": "2024-02-27 08:22:49", - "author_account_age_days": 2446 + "author_account_age_days": 2455 }, "https://github.com/hy134300/comfyui-hb-node": { "stars": 0, "last_update": "2024-04-09 09:56:22", - "author_account_age_days": 1752 + "author_account_age_days": 1761 }, "https://github.com/hy134300/comfyui-hydit": { - "stars": 5, + "stars": 7, "last_update": "2024-06-07 09:52:15", - "author_account_age_days": 1752 + "author_account_age_days": 1761 }, "https://github.com/ilovejohnwhite/UncleBillyGoncho": { "stars": 0, "last_update": "2024-02-29 00:16:42", - "author_account_age_days": 864 + "author_account_age_days": 873 }, "https://github.com/immersiveexperience/ie-comfyui-color-nodes": { - "stars": 1, - "last_update": "2024-06-12 12:25:42", - "author_account_age_days": 260 + "stars": 2, + "last_update": "2024-06-18 10:54:55", + "author_account_age_days": 269 }, "https://github.com/jh-leon-kim/ComfyUI-JHK-utils": { "stars": 0, "last_update": "2024-06-04 08:57:52", - "author_account_age_days": 163 + "author_account_age_days": 172 }, "https://github.com/jimmm-ai/TimeUi-a-ComfyUi-Timeline-Node": { - "stars": 186, + "stars": 194, "last_update": "2024-06-12 20:10:22", - "author_account_age_days": 11 + "author_account_age_days": 20 }, "https://github.com/jn-jairo/jn_node_suite_comfyui": { "stars": 5, "last_update": "2024-06-08 05:15:33", - "author_account_age_days": 3975 + "author_account_age_days": 3984 }, "https://github.com/jtscmw01/ComfyUI-DiffBIR": { - "stars": 59, + "stars": 61, "last_update": "2024-05-21 05:28:34", - "author_account_age_days": 493 + "author_account_age_days": 502 }, "https://github.com/jtydhr88/ComfyUI-Unique3D": { - "stars": 7, - "last_update": "2024-06-13 03:03:45", - "author_account_age_days": 4744 + "stars": 57, + "last_update": "2024-06-24 00:30:37", + "author_account_age_days": 4753 }, "https://github.com/kadirnar/ComfyUI-Adapter": { "stars": 3, "last_update": "2024-04-03 12:05:39", - "author_account_age_days": 2320 + "author_account_age_days": 2329 }, "https://github.com/kadirnar/comfyui_helpers": { "stars": 2, "last_update": "2024-03-04 16:25:30", - "author_account_age_days": 2320 + "author_account_age_days": 2329 }, "https://github.com/kappa54m/ComfyUI_Usability": { "stars": 0, "last_update": "2024-02-05 14:49:45", - "author_account_age_days": 1502 + "author_account_age_days": 1511 }, "https://github.com/kijai/ComfyUI-CV-VAE": { - "stars": 8, + "stars": 9, "last_update": "2024-06-03 21:46:49", - "author_account_age_days": 2174 + "author_account_age_days": 2183 }, "https://github.com/kijai/ComfyUI-DeepSeek-VL": { "stars": 19, "last_update": "2024-05-21 16:43:40", - "author_account_age_days": 2174 + "author_account_age_days": 2183 + }, + "https://github.com/kijai/ComfyUI-DiffSynthWrapper": { + "stars": 22, + "last_update": "2024-06-22 00:16:46", + "author_account_age_days": 2183 + }, + "https://github.com/kijai/ComfyUI-DiffusersSD3Wrapper": { + "stars": 7, + "last_update": "2024-06-17 13:03:43", + "author_account_age_days": 2183 }, "https://github.com/kycg/comfyui-Kwtoolset": { "stars": 0, "last_update": "2024-06-12 17:04:09", - "author_account_age_days": 931 + "author_account_age_days": 940 }, "https://github.com/laksjdjf/ssd-1b-comfyui": { "stars": 1, "last_update": "2023-10-27 20:05:06", - "author_account_age_days": 2822 + "author_account_age_days": 2831 }, "https://github.com/logtd/ComfyUI-MotionThiefExperiment": { "stars": 36, "last_update": "2024-05-22 00:12:06", - "author_account_age_days": 113 + "author_account_age_days": 122 }, "https://github.com/longgui0318/comfyui-one-more-step": { - "stars": 0, + "stars": 1, "last_update": "2024-05-07 08:40:56", - "author_account_age_days": 4155 + "author_account_age_days": 4165 }, "https://github.com/ltdrdata/ComfyUI-Workflow-Component": { - "stars": 192, + "stars": 195, "last_update": "2024-04-26 01:39:09", - "author_account_age_days": 453 + "author_account_age_days": 462 }, "https://github.com/marcueberall/ComfyUI-BuildPath": { "stars": 0, "last_update": "2024-02-06 07:57:33", - "author_account_age_days": 1773 + "author_account_age_days": 1782 }, "https://github.com/marduk191/comfyui-marnodes": { "stars": 0, "last_update": "2024-06-14 10:24:11", - "author_account_age_days": 4405 + "author_account_age_days": 4415 }, "https://github.com/maruhidd/ComfyUI_Transparent-Background": { - "stars": 0, + "stars": 1, "last_update": "2024-06-14 07:02:56", - "author_account_age_days": 2246 + "author_account_age_days": 2255 }, "https://github.com/mashb1t/comfyui-nodes-mashb1t": { "stars": 0, "last_update": "2024-06-11 15:55:53", - "author_account_age_days": 3526 + "author_account_age_days": 3535 + }, + "https://github.com/mikeymcfish/FishTools": { + "stars": 12, + "last_update": "2024-06-21 20:35:44", + "author_account_age_days": 3403 + }, + "https://github.com/mingqizhang/ComfyUI_AEMatter_zmq": { + "stars": 0, + "last_update": "2024-06-24 07:22:59", + "author_account_age_days": 2594 }, "https://github.com/mut-ex/comfyui-gligengui-node": { - "stars": 29, + "stars": 30, "last_update": "2024-02-28 02:46:05", - "author_account_age_days": 2849 + "author_account_age_days": 2858 }, "https://github.com/nat-chan/comfyui-eval": { "stars": 1, "last_update": "2024-05-28 11:56:37", - "author_account_age_days": 2984 + "author_account_age_days": 2993 }, "https://github.com/nat-chan/comfyui-in-memory-transceiver": { "stars": 1, "last_update": "2024-05-01 10:03:01", - "author_account_age_days": 2984 + "author_account_age_days": 2993 + }, + "https://github.com/nat-chan/comfyui-paint": { + "stars": 2, + "last_update": "2024-06-14 11:01:38", + "author_account_age_days": 2993 }, "https://github.com/nidefawl/ComfyUI-nidefawl": { "stars": 0, "last_update": "2024-01-16 18:16:41", - "author_account_age_days": 4859 + "author_account_age_days": 4868 }, "https://github.com/nkchocoai/ComfyUI-PromptUtilities": { "stars": 6, - "last_update": "2024-05-22 23:10:42", - "author_account_age_days": 150 + "last_update": "2024-06-23 04:58:30", + "author_account_age_days": 160 }, "https://github.com/norgeous/ComfyUI-UI-Builder": { "stars": 2, - "last_update": "2024-06-15 11:15:59", - "author_account_age_days": 4020 + "last_update": "2024-06-24 13:55:40", + "author_account_age_days": 4029 }, "https://github.com/oyvindg/ComfyUI-TrollSuite": { "stars": 0, "last_update": "2024-05-22 21:32:03", - "author_account_age_days": 2320 + "author_account_age_days": 2329 }, "https://github.com/oztrkoguz/ComfyUI_Kosmos2_BBox_Cutter": { "stars": 13, "last_update": "2024-05-03 10:52:29", - "author_account_age_days": 832 + "author_account_age_days": 841 }, "https://github.com/pamparamm/ComfyUI-ppm": { - "stars": 2, - "last_update": "2024-06-09 15:42:30", - "author_account_age_days": 2122 + "stars": 3, + "last_update": "2024-06-15 15:19:13", + "author_account_age_days": 2131 }, "https://github.com/phineas-pta/comfy-trt-test": { "stars": 83, "last_update": "2024-06-04 21:09:17", - "author_account_age_days": 2279 + "author_account_age_days": 2288 }, "https://github.com/poisenbery/NudeNet-Detector-Provider": { "stars": 1, "last_update": "2024-02-26 02:11:27", - "author_account_age_days": 1228 + "author_account_age_days": 1237 + }, + "https://github.com/prabinpebam/anyPython": { + "stars": 3, + "last_update": "2024-06-21 16:58:16", + "author_account_age_days": 4242 }, "https://github.com/prismwastaken/comfyui-tools": { "stars": 0, "last_update": "2024-03-05 14:34:56", - "author_account_age_days": 148 + "author_account_age_days": 157 + }, + "https://github.com/pzzmyc/comfyui-sd3-simple-simpletuner": { + "stars": 1, + "last_update": "2024-06-19 12:48:18", + "author_account_age_days": 2099 }, "https://github.com/redhottensors/ComfyUI-ODE": { - "stars": 2, - "last_update": "2024-06-15 03:29:48", - "author_account_age_days": 130 + "stars": 12, + "last_update": "2024-06-23 22:16:53", + "author_account_age_days": 139 }, "https://github.com/romeobuilderotti/ComfyUI-EZ-Pipes": { "stars": 3, "last_update": "2023-11-15 22:00:49", - "author_account_age_days": 281 + "author_account_age_days": 290 }, "https://github.com/runtime44/comfyui_r44_nodes": { - "stars": 26, + "stars": 28, "last_update": "2024-06-11 10:49:02", - "author_account_age_days": 158 + "author_account_age_days": 168 }, "https://github.com/sangeet/comfyui-testui": { "stars": 2, "last_update": "2024-05-15 00:55:17", - "author_account_age_days": 5071 + "author_account_age_days": 5080 }, "https://github.com/sdfxai/SDFXBridgeForComfyUI": { - "stars": 4, + "stars": 6, "last_update": "2024-06-14 10:26:56", - "author_account_age_days": 225 + "author_account_age_days": 235 }, "https://github.com/shadowcz007/ComfyUI-PuLID-Test": { "stars": 8, "last_update": "2024-05-12 14:37:28", - "author_account_age_days": 3305 + "author_account_age_days": 3314 }, "https://github.com/shadowcz007/comfyui-CLIPSeg": { - "stars": 0, + "stars": 1, "last_update": "2024-02-08 02:16:24", - "author_account_age_days": 3305 + "author_account_age_days": 3314 }, "https://github.com/shadowcz007/comfyui-llamafile": { "stars": 15, "last_update": "2024-05-21 19:47:56", - "author_account_age_days": 3305 + "author_account_age_days": 3314 }, "https://github.com/shadowcz007/comfyui-musicgen": { - "stars": 21, - "last_update": "2024-06-14 10:26:44", - "author_account_age_days": 3305 + "stars": 54, + "last_update": "2024-06-20 02:07:31", + "author_account_age_days": 3314 }, "https://github.com/shirazdesigner/CLIPTextEncodeAndEnhancev4": { "stars": 0, "last_update": "2024-04-27 13:25:08", - "author_account_age_days": 3953 + "author_account_age_days": 3962 }, "https://github.com/sofakid/dandy": { "stars": 30, "last_update": "2024-05-27 21:46:18", - "author_account_age_days": 4044 + "author_account_age_days": 4053 }, "https://github.com/stavsap/ComfyUI-React-SDK": { "stars": 6, "last_update": "2024-03-17 21:54:21", - "author_account_age_days": 4074 + "author_account_age_days": 4084 }, "https://github.com/stutya/ComfyUI-Terminal": { "stars": 0, "last_update": "2024-02-05 16:47:28", - "author_account_age_days": 3829 + "author_account_age_days": 3838 }, "https://github.com/sugarkwork/comfyui_psd": { "stars": 1, "last_update": "2024-03-26 08:24:56", - "author_account_age_days": 866 + "author_account_age_days": 875 }, "https://github.com/tachyon-beep/comfyui-simplefeed": { "stars": 3, "last_update": "2024-05-22 03:30:57", - "author_account_age_days": 4912 + "author_account_age_days": 4921 }, "https://github.com/talesofai/comfyui-supersave": { "stars": 1, "last_update": "2023-12-27 02:05:53", - "author_account_age_days": 546 + "author_account_age_days": 556 }, "https://github.com/tjorbogarden/my-useful-comfyui-custom-nodes": { "stars": 0, "last_update": "2024-03-05 13:31:31", - "author_account_age_days": 104 + "author_account_age_days": 113 }, "https://github.com/tracerstar/comfyui-p5js-node": { - "stars": 25, + "stars": 28, "last_update": "2024-05-30 18:33:55", - "author_account_age_days": 5189 + "author_account_age_days": 5198 }, "https://github.com/tuckerdarby/ComfyUI-TDNodes": { "stars": 3, "last_update": "2024-02-19 17:00:55", - "author_account_age_days": 2929 + "author_account_age_days": 2938 }, "https://github.com/umisetokikaze/comfyui_mergekit": { "stars": 0, "last_update": "2024-04-28 07:21:00", - "author_account_age_days": 1814 + "author_account_age_days": 1823 }, "https://github.com/unanan/ComfyUI-Dist": { "stars": 5, "last_update": "2024-02-28 10:03:50", - "author_account_age_days": 2889 + "author_account_age_days": 2898 }, "https://github.com/unanan/ComfyUI-clip-interrogator": { - "stars": 21, + "stars": 22, "last_update": "2024-02-01 09:46:57", - "author_account_age_days": 1021 + "author_account_age_days": 1030 }, "https://github.com/wormley/comfyui-wormley-nodes": { "stars": 0, "last_update": "2023-11-12 19:05:11", - "author_account_age_days": 2464 + "author_account_age_days": 2473 }, "https://github.com/yushan777/ComfyUI-Y7Nodes": { - "stars": 0, - "last_update": "2024-06-15 11:49:59", - "author_account_age_days": 508 + "stars": 1, + "last_update": "2024-06-23 22:36:49", + "author_account_age_days": 517 }, "https://github.com/zmwv823/ComfyUI-AnyText": { - "stars": 34, - "last_update": "2024-06-14 10:18:27", - "author_account_age_days": 3260 + "stars": 42, + "last_update": "2024-06-23 15:52:12", + "author_account_age_days": 3269 } } \ No newline at end of file diff --git a/node_db/legacy/custom-node-list.json b/node_db/legacy/custom-node-list.json index 220034e5..33434693 100644 --- a/node_db/legacy/custom-node-list.json +++ b/node_db/legacy/custom-node-list.json @@ -9,8 +9,61 @@ "description": "If you see this message, your ComfyUI-Manager is outdated.\nLegacy channel provides only the list of the deprecated nodes. If you want to find the complete node list, please go to the Default channel." }, - - + + { + "author": "turkyden", + "title": "ComfyUI-Sticker [REMOVED]", + "reference": "https://github.com/turkyden/ComfyUI-Sticker", + "files": [ + "https://github.com/turkyden/ComfyUI-Sticker" + ], + "install_type": "git-clone", + "description": "image to sticker" + }, + { + "author": "turkyden", + "title": "ComfyUI-Comic [REMOVED]", + "id": "comic", + "reference": "https://github.com/turkyden/ComfyUI-Comic", + "files": [ + "https://github.com/turkyden/ComfyUI-Comic" + ], + "install_type": "git-clone", + "description": "a comfyui plugin for image to comic" + }, + { + "author": "turkyden", + "title": "ComfyUI-Avatar [REMOVED]", + "id": "avatar", + "reference": "https://github.com/turkyden/ComfyUI-Avatar", + "files": [ + "https://github.com/turkyden/ComfyUI-Avatar" + ], + "install_type": "git-clone", + "description": "a comfyui plugin for image to avatar" + }, + { + "author": "bvhari", + "title": "LatentToRGB [DEPRECATED]", + "id": "latent2rgb", + "reference": "https://github.com/bvhari/ComfyUI_LatentToRGB", + "files": [ + "https://github.com/bvhari/ComfyUI_LatentToRGB" + ], + "install_type": "git-clone", + "description": "ComfyUI custom node to convert latent to RGB.\nNOTE:This repo has been archived because ComfyUI natively has similar functionality now" + }, + { + "author": "Kaharos94", + "title": "ComfyUI-Saveaswebp [DEPRECATED]", + "id": "save-webp", + "reference": "https://github.com/Kaharos94/ComfyUI-Saveaswebp", + "files": [ + "https://github.com/Kaharos94/ComfyUI-Saveaswebp" + ], + "install_type": "git-clone", + "description": "Save a picture as Webp file in Comfy + Workflow loading" + }, { "author": "udi0510", "title": "comfyui-slicer [REMOVED]", diff --git a/node_db/new/custom-node-list.json b/node_db/new/custom-node-list.json index c3ce3687..c9ae4170 100644 --- a/node_db/new/custom-node-list.json +++ b/node_db/new/custom-node-list.json @@ -12,7 +12,623 @@ - + + { + "author": "smthemex", + "title": "ComfyUI_MS_Diffusion", + "id": "MS_Diffusion", + "reference": "https://github.com/smthemex/ComfyUI_MS_Diffusion", + "files": [ + "https://github.com/smthemex/ComfyUI_MS_Diffusion" + ], + "install_type": "git-clone", + "description": "You can using MS-diffusion make story in comfyUI." + }, + { + "author": "christian-byrne", + "title": "audio-separation-nodes-comfyui", + "reference": "https://github.com/christian-byrne/audio-separation-nodes-comfyui", + "files": [ + "https://github.com/christian-byrne/audio-separation-nodes-comfyui" + ], + "install_type": "git-clone", + "description": "Nodes:AudioSeparation, AudioCrop, AudioCombine, AudioTempoMatch." + }, + { + "author": "yiwangsimple", + "title": "comfy-groqchat", + "reference": "https://github.com/yiwangsimple/ComfyUI_GroqChat", + "files": [ + "https://github.com/yiwangsimple/ComfyUI_GroqChat" + ], + "install_type": "git-clone", + "description": "Content generation with open source models in comfyui via graq api implementation." + }, + { + "author": "AIFSH", + "title": "ComfyUI-MimicMotion", + "id": "mimicmotion-aifsh", + "reference": "https://github.com/AIFSH/ComfyUI-MimicMotion", + "files": [ + "https://github.com/AIFSH/ComfyUI-MimicMotion" + ], + "install_type": "git-clone", + "description": "a comfyui custom node for [a/MimicMotion](https://github.com/Tencent/MimicMotion)" + }, + { + "author": "AIFSH", + "title": "ComfyUI-DiffSynth-Studio", + "id": "diffsynth-studio", + "reference": "https://github.com/AIFSH/ComfyUI-DiffSynth-Studio", + "files": [ + "https://github.com/AIFSH/ComfyUI-DiffSynth-Studio" + ], + "install_type": "git-clone", + "description": "make [a/DiffSynth-Studio](https://github.com/modelscope/DiffSynth-Studio) available in ComfyUI" + }, + { + "author": "1038lab", + "title": "ComfyUI-latentSizeSelector", + "id": "ComfyUI-latentSizeSelector", + "reference": "https://github.com/1038lab/ComfyUI_LatentSizeSelector", + "files": [ + "https://github.com/1038lab/ComfyUI_LatentSizeSelector" + ], + "install_type": "git-clone", + "description": "You'll get a new node Latent Size Selector, you can pick the x and y sizes from a list." + }, + { + "author": "AIFSH", + "title": "ComfyUI-I2V-Adapter", + "id": "i2v-adapter", + "reference": "https://github.com/AIFSH/ComfyUI-I2V-Adapter", + "files": [ + "https://github.com/AIFSH/ComfyUI-I2V-Adapter" + ], + "install_type": "git-clone", + "description": "a comfyui custom node for [a/I2V-Adapter](https://github.com/KwaiVGI/I2V-Adapter)" + }, + { + "author": "DeJoker", + "title": "Pipeline Parallel ComfyUI", + "reference": "https://github.com/DeJoker/pipeline-parallel-comfy", + "files": [ + "https://github.com/DeJoker/pipeline-parallel-comfy" + ], + "install_type": "git-clone", + "description": "provide extra api to run prompt request with parallel execution of independent node" + }, + { + "author": "AIFSH", + "title": "ComfyUI-MARS5-TTS", + "id": "mars5-tts", + "reference": "https://github.com/AIFSH/ComfyUI-MARS5-TTS", + "files": [ + "https://github.com/AIFSH/ComfyUI-MARS5-TTS" + ], + "install_type": "git-clone", + "description": "a comfyui custom node for [a/MARS5-TTS](https://github.com/Camb-ai/MARS5-TTS)" + }, + { + "author": "MrSamSeen", + "title": "ComfyUI_SSStereoscope", + "id": "ssstereoscope", + "reference": "https://github.com/MrSamSeen/ComfyUI_SSStereoscope", + "files": [ + "https://github.com/MrSamSeen/ComfyUI_SSStereoscope" + ], + "install_type": "git-clone", + "description": "The SideBySide Node is a powerful tool designed for ComfyUI to generate stereoscopic images. It takes a base image and a corresponding depth map as inputs and produces a combined image that simulates a 3D effect when viewed with appropriate equipment." + }, + { + "author": "jroc22", + "title": "ComfyUI-CSV-prompt-builder", + "id": "csv-prompt-builder", + "reference": "https://github.com/jroc22/ComfyUI-CSV-prompt-builder", + "files": [ + "https://github.com/jroc22/ComfyUI-CSV-prompt-builder" + ], + "install_type": "git-clone", + "description": "This is a simple node for creating prompts using a .csv file. I created this node as an easy way to output different prompts each time a workflow is run." + }, + { + "author": "ImmortalPie", + "title": "PonySwitch Node", + "reference": "https://github.com/ImmortalPie/ComfyUI-PonySwitch", + "files": [ + "https://github.com/ImmortalPie/ComfyUI-PonySwitch/raw/main/PonySwitch.py" + ], + "install_type": "copy", + "description": "The PonySwitch node is a custom node for ComfyUI that modifies prompts based on a toggle switch and adds configurable pony tags." + }, + { + "author": "SEkINVR", + "title": "ComfyUI SaveAS", + "id": "saveas", + "reference": "https://github.com/SEkINVR/ComfyUI-SaveAs", + "files": [ + "https://github.com/SEkINVR/ComfyUI-SaveAs" + ], + "install_type": "git-clone", + "description": "This custom node for ComfyUI allows you to save images in multiple formats, including PNG, JPG, WebP, and ICO.\n[w/ComfyUI-Save-Multi-Format is renamed to SaveAs. Remove previous one and reinstall to this.]" + }, + { + "author": "Fuou Marinas", + "title": "ComfyUI-FirstOrderMM", + "id": "fomm", + "reference": "https://github.com/FuouM/ComfyUI-FirstOrderMM", + "files": [ + "https://github.com/FuouM/ComfyUI-FirstOrderMM" + ], + "install_type": "git-clone", + "description": "Run [a/First Order Motion Model](https://github.com/AliaksandrSiarohin/first-order-model) for Image Animation in ComfyUI." + }, + { + "author": "my-opencode", + "title": "ComfyUI_IndustrialMagick", + "id": "industrialmagick", + "reference": "https://github.com/my-opencode/ComfyUI_IndustrialMagick", + "files": [ + "https://github.com/my-opencode/ComfyUI_IndustrialMagick" + ], + "install_type": "git-clone", + "description": "[a/ImageMagick](https://imagemagick.org/index.php) nodes for ComfyUI. Adds nodes to call ImageMagick subprocesses from ComfyUI.\nRequirements: [a/ImagMagick7](https://imagemagick.org/script/download.php), 'magick' command in your CLI environment." + }, + { + "author": "my-opencode", + "title": "ComfyUI_KSamplerTimer", + "id": "ksamplertimer", + "reference": "https://github.com/my-opencode/ComfyUI_KSamplerTimer", + "files": [ + "https://github.com/my-opencode/ComfyUI_KSamplerTimer" + ], + "install_type": "git-clone", + "description": "A custom node that returns the generation time of the KSampler. Intended for benchmarking or debugging." + }, + { + "author": "licyk", + "title": "ComfyUI-Restart-Sampler", + "id": "restart-sampler-licyk", + "reference": "https://github.com/licyk/ComfyUI-Restart-Sampler", + "files": [ + "https://github.com/licyk/ComfyUI-Restart-Sampler" + ], + "install_type": "git-clone", + "description": "This extension is a node that directly expands the functionality of KSampler, rather than being in the form of a custom node. [w/Workflows created using this feature are not compatible with other users.]" + }, + { + "author": "pamparamm", + "title": "ComfyUI Vectorscope CC", + "id": "vectorscope", + "reference": "https://github.com/pamparamm/ComfyUI-vectorscope-cc", + "files": [ + "https://github.com/pamparamm/ComfyUI-vectorscope-cc" + ], + "install_type": "git-clone", + "description": "ComfyUI port of a wonderful extension [a/SD Webui Vectorscope CC by Haoming02](https://github.com/Haoming02/sd-webui-vectorscope-cc).\nBased on (and probably incompatible with) [a/ComfyUI Diffusion Color Grading by Haoming02](https://github.com/Haoming02/comfyui-diffusion-cg)." + }, + { + "author": "yuvraj108c", + "title": "ComfyUI YoloNasPose Tensorrt", + "id": "yolonaspose-tensorrt", + "reference": "https://github.com/yuvraj108c/ComfyUI-YoloNasPose-Tensorrt", + "files": [ + "https://github.com/yuvraj108c/ComfyUI-YoloNasPose-Tensorrt" + ], + "install_type": "git-clone", + "description": "This repo provides a ComfyUI Custom Node implementation of [a/YOLO-NAS-POSE](https://github.com/Deci-AI/super-gradients), powered by TensorRT for ultra fast pose estimation. It has been adapted to work with openpose controlnet (experimental)" + }, + { + "author": "GreenLandisaLie", + "title": "AuraSR-ComfyUI", + "id": "aurasr-greenlandisalie", + "reference": "https://github.com/GreenLandisaLie/AuraSR-ComfyUI", + "files": [ + "https://github.com/GreenLandisaLie/AuraSR-ComfyUI" + ], + "install_type": "git-clone", + "description": "ComfyUI implementation of [a/Aura-SR](https://github.com/fal-ai/aura-sr)" + }, + { + "author": "mingqizhang", + "title": "ComfyUI_InSPyResNet_zmq", + "id": "inspy", + "reference": "https://github.com/mingqizhang/ComfyUI_InSPyResNet_zmq", + "files": [ + "https://github.com/mingqizhang/ComfyUI_InSPyResNet_zmq" + ], + "install_type": "git-clone", + "description": "Nodes:INSPY removebg ModelLoader, INSPY RMBG" + }, + { + "author": "hwhaocool", + "title": "ComfyUI-Select-Any", + "id": "select-any", + "reference": "https://github.com/hwhaocool/ComfyUI-Select-Any", + "files": [ + "https://github.com/hwhaocool/ComfyUI-Select-Any" + ], + "install_type": "git-clone", + "description": "a comfyui custom node, which can select value from inputs" + }, + { + "author": "leiweiqiang", + "title": "ComfyUI-TRA", + "id": "tra", + "reference": "https://github.com/leiweiqiang/ComfyUI-TRA", + "files": [ + "https://github.com/leiweiqiang/ComfyUI-TRA" + ], + "install_type": "git-clone", + "description": "Nodes:TCL EbSynth, TCL Extract Frames (From File), TCL Extract Frames (From Video), TCL Combine Frames, TCL Save Video (From Frames)" + }, + { + "author": "AIFSH", + "title": "ComfyUI-AuraSR", + "id": "aurasr", + "reference": "https://github.com/AIFSH/ComfyUI-AuraSR", + "files": [ + "https://github.com/AIFSH/ComfyUI-AuraSR" + ], + "install_type": "git-clone", + "description": "a node for [a/AuraSR](https://github.com/fal-ai/aura-sr)" + }, + { + "author": "veighnsche", + "title": "comfyui_gr85", + "id": "gr85", + "reference": "https://github.com/veighnsche/comfyui_gr85", + "files": [ + "https://github.com/veighnsche/comfyui_gr85" + ], + "install_type": "git-clone", + "description": "Nodes:Image Dimension Resizer, Image Sizer, Random Ratio, Show Text, Random Title Character, Random Wildcard Tag Picker, Random Show Atm Loc Outfit, Contains Word, Elements Concatenator, ..." + }, + { + "author": "hyunamy", + "title": "Comfy-UI on-complete-email-me", + "id": "hyunamy", + "reference": "https://github.com/hyunamy/comfy-ui-on-complete-email-me", + "files": [ + "https://github.com/hyunamy/comfy-ui-on-complete-email-me" + ], + "install_type": "git-clone", + "description": "A feature that sends an email via Gmail once image generation is completed in Comfy-ui." + }, + { + "author": "rhdunn", + "title": "comfyui-bus-plugin", + "id": "bus", + "reference": "https://github.com/rhdunn/comfyui-bus-plugin", + "files": [ + "https://github.com/rhdunn/comfyui-bus-plugin" + ], + "install_type": "git-clone", + "description": "A collection of nodes for rerouting multiple I/O lines together in a bus." + }, + { + "author": "hay86", + "title": "ComfyUI Hallo", + "id": "hallo-hay86", + "reference": "https://github.com/hay86/ComfyUI_Hallo", + "files": [ + "https://github.com/hay86/ComfyUI_Hallo" + ], + "install_type": "git-clone", + "description": "Unofficial implementation of [a/hallo](https://github.com/fudan-generative-vision/hallo) for ComfyUI" + }, + { + "author": "AI2lab", + "title": "comfyUI-siliconflow-api-2lab", + "id": "siliconflow", + "reference": "https://github.com/AI2lab/comfyUI-siliconflow-api-2lab", + "files": [ + "https://github.com/AI2lab/comfyUI-siliconflow-api-2lab" + ], + "install_type": "git-clone", + "description": "Unofficial implementation of siliconflow API for ComfyUI\nHow to use:apply api key in :https://cloud.siliconflow.cn/\nadd api key in config.json" + }, + { + "author": "11dogzi", + "title": "ComfUI-EGAdapterMadAssistant", + "id": "ergouzi-samplers", + "reference": "https://github.com/11dogzi/ComfUI-EGAdapterMadAssistant", + "files": [ + "https://github.com/11dogzi/ComfUI-EGAdapterMadAssistant" + ], + "install_type": "git-clone", + "description": "This is a hierarchical auxiliary project of the IPAdapter project, which uses a slider to quickly control the hierarchical weights and add fully random and semi random modes" + }, + { + "author": "iwanders", + "title": "iwanders/ComfyUI_nodes", + "id": "iwanders-nodes", + "reference": "https://github.com/iwanders/ComfyUI_nodes", + "files": [ + "https://github.com/iwanders/ComfyUI_nodes" + ], + "install_type": "git-clone", + "description": "Nodes:IW SaveString, IW PrintString, IW ReplaceString, IW StringNode, IW StringConcat, IW TokenizerVocab, IW JsonPickItem." + }, + { + "author": "SaltAI", + "title": "SaltAI_AudioViz", + "id": "saltai-audioviz", + "reference": "https://github.com/get-salt-AI/SaltAI_AudioViz", + "files": [ + "https://github.com/get-salt-AI/SaltAI_AudioViz" + ], + "install_type": "git-clone", + "description": "SaltAI AudioViz contains ComfyUI nodes for generating complex audio reactive visualizations" + }, + { + "author": "AI2lab", + "title": "comfyUI-tool-2lab", + "id": "tool-2lab", + "reference": "https://github.com/AI2lab/comfyUI-tool-2lab", + "files": [ + "https://github.com/AI2lab/comfyUI-tool-2lab" + ], + "install_type": "git-clone", + "description": "tool set for developing workflow and publish to web api server" + }, + { + "author": "SherryXieYuchen", + "title": "ComfyUI-Image-Inpainting", + "id": "image-inpainting", + "reference": "https://github.com/SherryXieYuchen/ComfyUI-Image-Inpainting", + "files": [ + "https://github.com/SherryXieYuchen/ComfyUI-Image-Inpainting" + ], + "install_type": "git-clone", + "description": "Nodes:VAE Encode Inpaint, VAE Decode Inpaint, ColorCorrection Inpaint, ImagePreprocess Inpaint, ImagePostprocess Inpaint, Load Model Inpaint, Inpainting (using Model)" + }, + { + "author": "zeroxoxo", + "title": "ComfyUI-Fast-Style-Transfer", + "id": "fast-style-transfer", + "reference": "https://github.com/zeroxoxo/ComfyUI-Fast-Style-Transfer", + "files": [ + "https://github.com/zeroxoxo/ComfyUI-Fast-Style-Transfer" + ], + "install_type": "git-clone", + "description": "ComfyUI node for fast neural style transfer. This is a simple conversion based on this: [a/https://github.com/rrmina/fast-neural-style-pytorch](https://github.com/rrmina/fast-neural-style-pytorch) Only basic inference functionality is ported for now." + }, + { + "author": "Shibiko-AI", + "title": "Shibiko AI ComfyUI Tools", + "id": "shibiko-ai-tools", + "reference": "https://github.com/Shibiko-AI/ShibikoAI-ComfyUI-Tools", + "files": [ + "https://github.com/Shibiko-AI/ShibikoAI-ComfyUI-Tools" + ], + "install_type": "git-clone", + "description": "This is a collection of tools that I use to make my life easier when developing ComfyUI applications. It is a collection of tools that I have created to help me with my development process. I have decided to share these tools with the community in the hopes that they will be useful to others as well. I use this tools to further develop features for [a/https://shibiko.ai](https://shibiko.ai)" + }, + { + "author": "fofr", + "title": "comfyui-replicate", + "reference": "https://github.com/fofr/comfyui-replicate", + "files": [ + "https://github.com/fofr/comfyui-replicate" + ], + "install_type": "git-clone", + "description": "Nodes:Llama 3 Replicate" + }, + { + "author": "RedRayz", + "title": "ComfyUI-Danbooru-To-WD", + "id": "danbooru2wd", + "reference": "https://github.com/RedRayz/ComfyUI-Danbooru-To-WD", + "files": [ + "https://github.com/RedRayz/ComfyUI-Danbooru-To-WD" + ], + "install_type": "git-clone", + "description": "Converts booru tags to a format suitable for Waifu Diffusion(or Danbooru based models)." + }, + { + "author": "akkyoss", + "title": "ComfyUI_Zwng_Nodes", + "id": "zwng", + "reference": "https://github.com/za-wa-n-go/ComfyUI_Zwng_Nodes", + "files": [ + "https://github.com/za-wa-n-go/ComfyUI_Zwng_Nodes" + ], + "install_type": "git-clone", + "description": "Simple nodes for loading image files.Nodes that include a simple remote connection to Photoshop, a node that can overlay and preview an image with a mask, and a node that can load images directly from a file path." + }, + { + "author": "slyt", + "title": "comfyui-ollama-nodes", + "reference": "https://github.com/slyt/comfyui-ollama-nodes", + "files": [ + "https://github.com/slyt/comfyui-ollama-nodes" + ], + "install_type": "git-clone", + "description": "ComfyUI custom nodes for working with [a/Ollama](https://github.com/ollama/ollama).\nNOTE:Assumes that an Ollama server is running at http://127.0.0.1:11434 and accessible by the ComfyUI backend." + }, + { + "author": "MilitantHitchhiker", + "title": "Militant Hitchhiker's Switchblade Pack", + "id": "hitchhiker", + "reference": "https://github.com/MilitantHitchhiker/MilitantHitchhiker-SwitchbladePack", + "files": [ + "https://github.com/MilitantHitchhiker/MilitantHitchhiker-SwitchbladePack" + ], + "install_type": "git-clone", + "description": "Militant Hitchhiker's Switchblade Pack is a collection of custom nodes for ComfyUI that provide various multi-function capabilities." + }, + { + "author": "turkyden", + "title": "ComfyUI-Avatar", + "id": "avatar", + "reference": "https://github.com/turkyden/ComfyUI-Avatar", + "files": [ + "https://github.com/turkyden/ComfyUI-Avatar" + ], + "install_type": "git-clone", + "description": "a comfyui plugin for image to avatar" + }, + { + "author": "fablestudio", + "title": "ComfyUI-Showrunner-Utils", + "reference": "https://github.com/fablestudio/ComfyUI-Showrunner-Utils", + "files": [ + "https://github.com/fablestudio/ComfyUI-Showrunner-Utils" + ], + "install_type": "git-clone", + "description": "Comfyui Custom Nodes for Showrunner" + }, + { + "author": "jtydhr88", + "title": "ComfyUI Unique3D", + "id": "unique3d", + "reference": "https://github.com/jtydhr88/ComfyUI-Unique3D", + "files": [ + "https://github.com/jtydhr88/ComfyUI-Unique3D" + ], + "install_type": "git-clone", + "description": "ComfyUI Unique3D is custom nodes that running AiuniAI/Unique3D into ComfyUI[w/Please follow readme to install with ComfyUI embedded python.]" + }, + { + "author": "smthemex", + "title": "ComfyUI_Streamv2v_Plus", + "id": "streamv2v", + "reference": "https://github.com/smthemex/ComfyUI_Streamv2v_Plus", + "files": [ + "https://github.com/smthemex/ComfyUI_Streamv2v_Plus" + ], + "install_type": "git-clone", + "description": "[a/StreamV2V](https://github.com/Jeff-LiangF/streamv2v) for ComfyUI" + }, + { + "author": "jakechai", + "title": "ComfyUI-JakeUpgrade", + "id": "jkupgrade", + "reference": "https://github.com/jakechai/ComfyUI-JakeUpgrade", + "files": [ + "https://github.com/jakechai/ComfyUI-JakeUpgrade" + ], + "install_type": "git-clone", + "description": "A ComfyUI workflow customization by Jake." + }, + { + "author": "christian-byrne", + "title": "comfyui-search-navigation", + "reference": "https://github.com/christian-byrne/comfyui-search-navigation", + "files": [ + "https://github.com/christian-byrne/comfyui-search-navigation" + ], + "install_type": "git-clone", + "description": "Search navigation extension." + }, + { + "author": "fofr", + "title": "ComfyUI-Prompter-fofrAI", + "id": "prompter-fofr", + "reference": "https://github.com/fofr/ComfyUI-Prompter-fofrAI", + "files": [ + "https://github.com/fofr/ComfyUI-Prompter-fofrAI" + ], + "install_type": "git-clone", + "description": "A prompt helper. Use templates from [a/https://prompter.fofr.ai](https://prompter.fofr.ai) in ComfyUI." + }, + { + "author": "celsojr2013", + "title": "comfyui_jamworks_client", + "reference": "https://github.com/celsojr2013/comfyui_jamworks_client", + "files": [ + "https://github.com/celsojr2013/comfyui_jamworks_client" + ], + "install_type": "git-clone", + "description": "Nodes:Jamworks_Login, Jamworks_Download, Shell_Command.\nA Simple Client for Jamworks Platform DAM Integration" + }, + { + "author": "opvelll", + "title": "Comfy UI Text List Product", + "id": "listproduct", + "reference": "https://github.com/opvelll/ComfyUI_TextListProduct", + "files": [ + "https://github.com/opvelll/ComfyUI_TextListProduct" + ], + "install_type": "git-clone", + "description": "This is a custom node for Comfy UI. It mainly wraps itertools.product and can be used to create patterns by combining prompts. It is recommended to install this custom node in combination with the nodes from the WAS Node Suite." + }, + { + "author": "MinusZoneAI", + "title": "ComfyUI-TrainTools-MZ", + "id": "traintools", + "reference": "https://github.com/MinusZoneAI/ComfyUI-TrainTools-MZ", + "files": [ + "https://github.com/MinusZoneAI/ComfyUI-TrainTools-MZ" + ], + "install_type": "git-clone", + "description": "Nodes for fine-tuning lora in ComfyUI, dependent on training tools such as kohya-ss/sd-scripts" + }, + { + "author": "lordgasmic", + "title": "comfyui_wildcards", + "reference": "https://github.com/lordgasmic/comfyui_wildcards", + "files": [ + "https://github.com/lordgasmic/comfyui_wildcards" + ], + "install_type": "git-clone", + "description": "This is an attempt to recreate the wildcards plugin for Automatic1111 but for ComfyUI." + }, + { + "author": "lordgasmic", + "title": "comfyui_save_image_with_options", + "reference": "https://github.com/lordgasmic/comfyui_save_image_with_options", + "files": [ + "https://github.com/lordgasmic/comfyui_save_image_with_options" + ], + "install_type": "git-clone", + "description": "Nodes:Save Image with Options" + }, + { + "author": "asagi4", + "title": "Adaptive Guidance for ComfyUI", + "id": "asagi-nodes", + "reference": "https://github.com/asagi4/ComfyUI-Adaptive-Guidance", + "files": [ + "https://github.com/asagi4/ComfyUI-Adaptive-Guidance" + ], + "install_type": "git-clone", + "description": "An implementation of adaptive guidance for ComfyUI\nSee [a/https://bcv-uniandes.github.io/adaptiveguidance-wp/](https://bcv-uniandes.github.io/adaptiveguidance-wp/)" + }, + { + "author": "kijai", + "title": "ComfyUI-Florence2", + "id": "florence2-kijai", + "reference": "https://github.com/kijai/ComfyUI-Florence2", + "files": [ + "https://github.com/kijai/ComfyUI-Florence2" + ], + "install_type": "git-clone", + "description": "ComfyUI nodes to use Microsoft's Florence2 vision model. Supports captioning, object detection and segmentation" + }, + { + "author": "spacepxl", + "title": "ComfyUI-Florence-2", + "id": "florence2-spacepxl", + "reference": "https://github.com/spacepxl/ComfyUI-Florence-2", + "files": [ + "https://github.com/spacepxl/ComfyUI-Florence-2" + ], + "install_type": "git-clone", + "description": "[a/https://huggingface.co/microsoft/Florence-2-large-ft](https://huggingface.co/microsoft/Florence-2-large-ft)\nLarge or base model, support for captioning and bbox task modes, more coming soon." + }, + { + "author": "kijai", + "title": "ComfyUI-LuminaWrapper", + "id": "lumina", + "reference": "https://github.com/kijai/ComfyUI-LuminaWrapper", + "files": [ + "https://github.com/kijai/ComfyUI-LuminaWrapper" + ], + "install_type": "git-clone", + "description": "ComfyUI wrapper nodes for Lumina models" + }, { "author": "kadirnar", "title": "ComfyUI-YOLO", @@ -78,621 +694,6 @@ ], "install_type": "git-clone", "description": "a comfyui custom node for [a/UniAnimate](https://github.com/ali-vilab/UniAnimate)" - }, - { - "author": "AIFSH", - "title": "ComfyUI-Hallo", - "id": "hallo", - "reference": "https://github.com/AIFSH/ComfyUI-Hallo", - "files": [ - "https://github.com/AIFSH/ComfyUI-Hallo" - ], - "install_type": "git-clone", - "description": "a comfyui custom node for [a/hallo](https://github.com/fudan-generative-vision/hallo)" - }, - { - "author": "superyoman", - "title": "comfyui_lumaAPI", - "id": "luma", - "reference": "https://github.com/superyoman/comfyui_lumaAPI", - "files": [ - "https://github.com/superyoman/comfyui_lumaAPI" - ], - "install_type": "git-clone", - "description": "Unofficial Luma API-ComfyUI version.[w/WARN: This project is for learning purpose only!]" - }, - { - "author": "nuanarchy", - "title": "ComfyUI-NuA-BIRD", - "id": "nua-bird", - "reference": "https://github.com/nuanarchy/ComfyUI-NuA-BIRD", - "files": [ - "https://github.com/nuanarchy/ComfyUI-NuA-BIRD" - ], - "install_type": "git-clone", - "description": "ComfyUI implementation of '[a/Blind Image Restoration via Fast Diffusion Inversion](https://github.com/hamadichihaoui/BIRD)' Original [a/article](https://arxiv.org/abs/2405.19572)" - }, - { - "author": "SuperMasterBlasterLaser", - "title": "ComfyUI_YOLO_Classifiers", - "id": "yolo-classifier", - "reference": "https://github.com/SuperMasterBlasterLaser/ComfyUI_YOLO_Classifiers", - "files": [ - "https://github.com/SuperMasterBlasterLaser/ComfyUI_YOLO_Classifiers" - ], - "install_type": "git-clone", - "description": "Nodes:YOLO Classifier Model Loader, YOLO Classify." - }, - { - "author": "kijai", - "title": "ComfyUI-B-LoRA", - "id": "b-lora", - "reference": "https://github.com/liusida/ComfyUI-B-LoRA", - "files": [ - "https://github.com/liusida/ComfyUI-B-LoRA" - ], - "install_type": "git-clone", - "description": "Load and apply B-LoRA models, currently B-LoRA models only works with SDXL (sdxl_base_1.0)." - }, - { - "author": "koopke", - "title": "ComfyUI-websocket-data-channel", - "id": "websocket-data-channel", - "reference": "https://github.com/koopke/ComfyUI-websocket-data-channel", - "files": [ - "https://github.com/koopke/ComfyUI-websocket-data-channel" - ], - "install_type": "git-clone", - "description": "Sending Data from a ComfyUI workflow to the websocket." - }, - { - "author": "baicai99", - "title": "ComfyUI-FrameSkipping", - "id": "FrameSkipping", - "reference": "https://github.com/baicai99/ComfyUI-FrameSkipping", - "files": [ - "https://github.com/baicai99/ComfyUI-FrameSkipping" - ], - "install_type": "git-clone", - "description": "Used to process video redrawing, frame skipping, frame ending early, etc." - }, - { - "author": "AIFSH", - "title": "ComfyUI-MimicBrush", - "id": "mimicbrush", - "reference": "https://github.com/AIFSH/ComfyUI-MimicBrush", - "files": [ - "https://github.com/AIFSH/ComfyUI-MimicBrush" - ], - "install_type": "git-clone", - "description": "a comfyui custom node for [a/MimicBrush](https://github.com/ali-vilab/MimicBrush),then inpainting with reference image." - }, - { - "author": "dicksondickson", - "title": "ComfyUI-Dickson-Nodes", - "id": "dicksonnodes", - "reference": "https://github.com/dicksondickson/ComfyUI-Dickson-Nodes", - "files": [ - "https://github.com/dicksondickson/ComfyUI-Dickson-Nodes" - ], - "install_type": "git-clone", - "description": "Custom nodes for ComfyUI by DicksonDickson." - }, - { - "author": "G-370", - "title": "ComfyUI-SD3-Powerlab", - "id": "sd3-powerlab", - "reference": "https://github.com/G-370/ComfyUI-SD3-Powerlab", - "files": [ - "https://github.com/G-370/ComfyUI-SD3-Powerlab" - ], - "install_type": "git-clone", - "description": "Nodes:Render SD3 Attention, SD3 Attention To Image, SD3 Image Into Attention." - }, - { - "author": "TylerZoro", - "title": "SD3-Scaling", - "id": "sd3-scaling", - "reference": "https://github.com/TylerZoro/SD3-Scaling", - "files": [ - "https://github.com/TylerZoro/SD3-Scaling" - ], - "install_type": "git-clone", - "description": "Tools for scaling images and latents appropriate to SD3 in ComfyUI." - }, - { - "author": "ShmuelRonen", - "title": "ComfyUI_Gemini_Flash", - "id": "gemini-flash", - "reference": "https://github.com/ShmuelRonen/ComfyUI_Gemini_Flash", - "files": [ - "https://github.com/ShmuelRonen/ComfyUI_Gemini_Flash" - ], - "install_type": "git-clone", - "description": "ComfyUI_Gemini_Flash is a custom node for ComfyUI, integrating the capabilities of the Gemini 1.5 Flash model. This node supports text and vision-based prompts, allowing users to analyze and adapt images to text prompts for text2image tasks." - }, - { - "author": "nagolinc", - "title": "comfyui_openai_node", - "reference": "https://github.com/nagolinc/comfyui_openai_node", - "files": [ - "https://github.com/nagolinc/comfyui_openai_node" - ], - "install_type": "git-clone", - "description": "This provides a single node openai > Open AI query node\nthat takes a system prompt and user message and sends them to chatGPT 3.5\nNote, you MUST have an OPEN AI API key stored in the environment variable OPENAI_API_KEY in order for this to work." - }, - { - "author": "juehackr", - "title": "comfyui_fk_server", - "id": "fk-server", - "reference": "https://github.com/juehackr/comfyui_fk_server", - "files": [ - "https://github.com/juehackr/comfyui_fk_server" - ], - "install_type": "git-clone", - "description": "🤗🤗🤗Comfyui Universal Translation Plugin (no longer requires adding various nodes, directly add translation function on the existing nodes), allowing Comfyui to support Chinese input and automatic translation for any long text input box, while adding error translation function (calling Baidu Translate), achieving translation freedom!" - }, - { - "author": "Yanick112", - "title": "ComfyUI-ToSVG", - "id": "tosvg", - "reference": "https://github.com/Yanick112/ComfyUI-ToSVG", - "files": [ - "https://github.com/Yanick112/ComfyUI-ToSVG" - ], - "install_type": "git-clone", - "description": "This project converts raster images into SVG format using the [a/VTracer](https://github.com/visioncortex/vtracer) library. It's a handy tool for designers and developers who need to work with vector graphics programmatically." - }, - { - "author": "logtd", - "title": "ComfyUI-FLATTEN", - "id": "flatten", - "reference": "https://github.com/logtd/ComfyUI-FlattenFlow", - "files": [ - "https://github.com/logtd/ComfyUI-FlattenFlow" - ], - "install_type": "git-clone", - "description": "An alternate trajectory processor for ComfyUI-FLATTEN\nNOTE:When using this trajectory type FLATTEN will use roughly 1/4 VRAM and be ~20% faster at the cost of some consistency (especially when injection_steps are low)." - }, - { - "author": "toxicwind", - "title": "TTools for ComfyUI", - "id": "ttools", - "reference": "https://github.com/toxicwind/ComfyUI-TTools", - "files": [ - "https://github.com/toxicwind/ComfyUI-TTools" - ], - "install_type": "git-clone", - "description": "Text Randomization and Formatting, JSON Extraction and Processing, SD3 Resolution Solver" - }, - { - "author": "ljleb", - "title": "Mecha Merge Node Pack", - "id": "mecha", - "reference": "https://github.com/ljleb/comfy-mecha", - "files": [ - "https://github.com/ljleb/comfy-mecha" - ], - "install_type": "git-clone", - "description": "Model merging node pack with a focus on low memory footprint." - }, - { - "author": "Michael Standen", - "title": "Ollama Prompt Encode", - "id": "ollamapromptencode", - "reference": "https://github.com/ScreamingHawk/comfyui-ollama-prompt-encode", - "files": [ - "https://github.com/ScreamingHawk/comfyui-ollama-prompt-encode" - ], - "install_type": "git-clone", - "description": "A prompt generator and CLIP encoder using AI provided by Ollama." - }, - { - "author": "smthemex", - "title": "ComfyUI_Pops", - "id": "pops", - "reference": "https://github.com/smthemex/ComfyUI_Pops", - "files": [ - "https://github.com/smthemex/ComfyUI_Pops" - ], - "install_type": "git-clone", - "description": "You can use [a/Popspaper](https://popspaper.github.io/pOps/) method in comfyUI" - }, - { - "author": "Late Night Labs", - "title": "LNL Frame Selector", - "id": "lnlframeselector", - "reference": "https://github.com/latenightlabs/ComfyUI-LNL", - "files": [ - "https://github.com/latenightlabs/ComfyUI-LNL" - ], - "install_type": "git-clone", - "description": "Frame Selector & Sequence Selection Node for ComfyUI." - }, - { - "author": "shobhitic", - "title": "PlusMinusTextClip - Single node for Positive and Negative Prompts", - "id": "plusminustextclip", - "reference": "https://github.com/shobhitic/ComfyUI-PlusMinusTextClip", - "files": [ - "https://github.com/shobhitic/ComfyUI-PlusMinusTextClip" - ], - "install_type": "git-clone", - "description": "This adds a node that has both the positive and negative prompts as input in one node. You can just add one node and be done with both Positive and Negative prompts, in place of adding two different nodes for them." - }, - { - "author": "huchenlei", - "title": "ComfyUI_omost", - "id": "omost", - "reference": "https://github.com/huchenlei/ComfyUI_omost", - "files": [ - "https://github.com/huchenlei/ComfyUI_omost" - ], - "install_type": "git-clone", - "description": "ComfyUI implementation of [a/Omost](https://github.com/lllyasviel/Omost), and everything about regional prompt.\nNOTE: You need to install ComfyUI_densediffusion to use this node." - }, - { - "author": "huchenlei", - "title": "ComfyUI DenseDiffusion", - "id": "densediffusion", - "reference": "https://github.com/huchenlei/ComfyUI_densediffusion", - "files": [ - "https://github.com/huchenlei/ComfyUI_densediffusion" - ], - "install_type": "git-clone", - "description": "[a/DenseDiffusion](https://github.com/naver-ai/DenseDiffusion) custom node for ComfyUI." - }, - - { - "author": "ZHO-ZHO-ZHO", - "title": "ComfyUI-Qwen-2", - "id": "qwen-2", - "reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Qwen-2", - "files": [ - "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Qwen-2" - ], - "install_type": "git-clone", - "description": "Using Qwen-2 in ComfyUI" - }, - { - "author": "BenNarum", - "title": "SigmaWaveFormNodes", - "id": "sigmawaveform", - "reference": "https://github.com/BenNarum/SigmaWaveFormNode", - "files": [ - "https://github.com/BenNarum/SigmaWaveFormNode" - ], - "install_type": "git-clone", - "description": "A set of tools for generating and altering sigmas in ComfyUI." - }, - { - "author": "alessandrozonta", - "title": "OpenPose Node", - "id": "openpose-alessandrozonta", - "reference": "https://github.com/alessandrozonta/ComfyUI-OpenPose", - "files": [ - "https://github.com/alessandrozonta/ComfyUI-OpenPose" - ], - "install_type": "git-clone", - "description": "This extension contains a custom node for ComfyUI. The node, called 'Bounding Box Crop', is designed to compute the top-left coordinates of a cropped bounding box based on input coordinates and dimensions of the final cropped image. It does so computing the center of the cropping area and then computing where the top-left coordinates would be." - }, - { - "author": "GavChap", - "title": "ComfyUI-SD3LatentSelectRes", - "id": "sd3latent-select-res", - "reference": "https://github.com/GavChap/ComfyUI-SD3LatentSelectRes", - "files": [ - "https://github.com/GavChap/ComfyUI-SD3LatentSelectRes" - ], - "install_type": "git-clone", - "description": "You'll get a new node called SD3 Latent Select Resolution, you can pick the x and y sizes from a list." - }, - { - "author": "Jin Liu", - "title": "ComfyUI-LJNodes", - "id": "ComfyUI-LJNodes", - "reference": "https://github.com/coolzilj/ComfyUI-LJNodes", - "files": [ - "https://github.com/coolzilj/ComfyUI-LJNodes" - ], - "install_type": "git-clone", - "description": "A variety of custom nodes to enhance ComfyUI for a buttery smooth experience." - }, - { - "author": "marduk191", - "title": "marduk191 workflow settings", - "id": "marnodes", - "reference": "https://github.com/marduk191/comfyui-marnodes", - "files": [ - "https://github.com/marduk191/comfyui-marnodes" - ], - "install_type": "git-clone", - "description": "A node to set workflow settings." - }, - { - "author": "denfrost", - "title": "Den_ComfyUI_Workflows", - "id": "den", - "reference": "https://github.com/denfrost/Den_ComfyUI_Workflow", - "files": [ - "https://github.com/denfrost/Den_ComfyUI_Workflow" - ], - "install_type": "git-clone", - "description": "Custom nodes make easy Advanced Workflows. Focus on Image/Video and ControlNet efficiency and performances. Manipulation of Latent Space, Automatic pipeline with a bit efforts." - }, - { - "author": "seghier", - "title": "ComfyUI_LibreTranslate", - "reference": "https://github.com/seghier/ComfyUI_LibreTranslate", - "files": [ - "https://github.com/seghier/ComfyUI_LibreTranslate/raw/main/translate_node.py" - ], - "install_type": "copy", - "description": "Use LibreTranslation in ComfyUI [a/https://github.com/LibreTranslate/LibreTranslate](https://github.com/LibreTranslate/LibreTranslate)" - }, - { - "author": "Limbicnation", - "title": "ComfyUIDepthEstimation", - "reference": "https://github.com/Limbicnation/ComfyUIDepthEstimation", - "files": [ - "https://github.com/Limbicnation/ComfyUIDepthEstimation/raw/main/depth_estimation_node.py" - ], - "pip": ["transformers"], - "install_type": "copy", - "description": "A custom depth estimation node for ComfyUI using transformer models. It integrates depth estimation with automatic gamma correction, contrast adjustment, and edge detection, based on the [a/TransformDepth](https://github.com/Limbicnation/TransformDepth) repository." - }, - { - "author": "shadowcz007", - "title": "comfyui-sound-lab", - "id": "soundlab", - "reference": "https://github.com/shadowcz007/comfyui-sound-lab", - "files": [ - "https://github.com/shadowcz007/comfyui-sound-lab" - ], - "install_type": "git-clone", - "description": "Nodes:Music Gen, Audio Play, Stable Audio" - }, - { - "author": "DannyStone1999", - "title": "ComfyUI-Depth2Mask", - "reference": "https://github.com/DannyStone1999/ComfyUI-Depth2Mask", - "files": [ - "https://github.com/DannyStone1999/ComfyUI-Depth2Mask/raw/main/Depth2Mask.py" - ], - "install_type": "copy", - "description": "Nodes:Depth2Mask" - }, - { - "author": "smthemex", - "title": "ComfyUI_StableAudio_Open", - "id": "stable-audio-open-1.0", - "reference": "https://github.com/smthemex/ComfyUI_StableAudio_Open", - "files": [ - "https://github.com/smthemex/ComfyUI_StableAudio_Open" - ], - "install_type": "git-clone", - "description": "You can use stable-audio-open-1.0 in comfyUI" - }, - { - "author": "nuanarchy", - "title": "ComfyUI-NuA-FlashFace", - "id": "nua-flashface", - "reference": "https://github.com/nuanarchy/ComfyUI-NuA-FlashFace", - "files": [ - "https://github.com/nuanarchy/ComfyUI-NuA-FlashFace" - ], - "install_type": "git-clone", - "description": "ComfyUI implementation of [a/FlashFace: Human Image Personalization with High-fidelity Identity Preservation](https://github.com/ali-vilab/FlashFace)\nNOTE: You need to downalod models manually." - }, - { - "author": "FrankChieng", - "title": "ComfyUI_llm_easyanimiate", - "id": "llm-easyanimate", - "nodename_pattern": "^FrankChiengEasyAnimate", - "reference": "https://github.com/frankchieng/ComfyUI_llm_easyanimiate", - "files": [ - "https://github.com/frankchieng/ComfyUI_llm_easyanimiate" - ], - "install_type": "git-clone", - "description": "implementation easyanimate with llama3-8b-6bit instruction LLM generation prompt help" - }, - { - "author": "chakib-belgaid", - "title": "ComfyUI-autosize", - "id": "autosize", - "reference": "https://github.com/chakib-belgaid/ComfyUI-autosize", - "files": [ - "https://github.com/chakib-belgaid/ComfyUI-autosize" - ], - "install_type": "git-clone", - "description": "A ComfyUI utility plugin designed to optimize the latent space for generating high-quality results. It approximates the closest size model for better generation results." - }, - { - "author": "DataCTE", - "title": "Prompt Injection Node for ComfyUI", - "id": "prompt-injection", - "reference": "https://github.com/DataCTE/prompt_injection", - "files": [ - "https://github.com/DataCTE/prompt_injection" - ], - "install_type": "git-clone", - "description": "This custom node for ComfyUI allows you to inject specific prompts at specific blocks of the Stable Diffusion UNet, providing fine-grained control over the generated image. It is based on the concept that the content/subject understanding of the model is primarily contained within the MID0 and MID1 blocks, as demonstrated in the B-Lora (Content Style implicit separation) paper. Features.\nInject different prompts into specific UNet blocks Three different node variations for flexible workflow integration Customize the learning rate of specific blocks to focus on content, lighting, style, or other aspects Potential for developing a 'Mix of Experts' approach by swapping blocks on-the-fly based on prompt content" - }, - { - "author": "lks-ai", - "title": "ComfyUI Stable Audio Open 1.0 Sampler", - "id": "stableaudiosampler", - "reference": "https://github.com/lks-ai/ComfyUI-StableAudioSampler", - "files": [ - "https://github.com/lks-ai/ComfyUI-StableAudioSampler" - ], - "install_type": "git-clone", - "description": "Nodes: StableAudioSampler. Wraps the new Stable Audio Open Model in the sampler that dropped Jun 5th. See Github for Features" - }, - { - "author": "luandev", - "title": "ComfyUI CrewAI", - "id": "crewai", - "reference": "https://github.com/luandev/ComfyUI-CrewAI", - "files": [ - "https://github.com/luandev/ComfyUI-CrewAI" - ], - "install_type": "git-clone", - "description": "ComfyUI-CrewAI aims to integrate Crew AI's multi-agent collaboration framework into the ComfyUI environment. By combining the strengths of Crew AI's role-based, collaborative AI agent system with ComfyUI's intuitive interface, we will create a robust platform for managing and executing complex AI tasks seamlessly" - }, - { - "author": "Tool Of North america", - "title": "Easy automatic (square) image cropper using Yolo", - "id": "tooldigital", - "reference": "https://github.com/tooldigital/ComfyUI-Yolo-Cropper", - "files": [ - "https://github.com/tooldigital/ComfyUI-Yolo-Cropper" - ], - "install_type": "git-clone", - "description": "A very simple and easy to use node to automaticaaly create (square) image crops and masks using YoloV8. This can be very useful when using controlnet and ip adapters" - }, - { - "author": "11dogzi", - "title": "Comfyui-ergouzi-samplers", - "id": "ergouzi-samplers", - "reference": "https://github.com/11dogzi/Comfyui-ergouzi-samplers", - "files": [ - "https://github.com/11dogzi/Comfyui-ergouzi-samplers" - ], - "install_type": "git-clone", - "description": "Partial redraw sampler and variant seed sampler" - }, - { - "author": "prodogape", - "title": "ComfyUI-OmDet", - "id": "omdet", - "reference": "https://github.com/prodogape/ComfyUI-OmDet", - "files": [ - "https://github.com/prodogape/ComfyUI-OmDet" - ], - "install_type": "git-clone", - "description": "This node is mainly based on [a/OmDet](https://github.com/om-ai-lab/OmDet) for object detection, and it outputs related images, masks, and Labelme JSON information." - }, - { - "author": "risunobushi", - "title": "comfyUI_FrequencySeparation_RGB-HSV", - "id": "freq-sep", - "reference": "https://github.com/risunobushi/comfyUI_FrequencySeparation_RGB-HSV", - "files": [ - "https://github.com/risunobushi/comfyUI_FrequencySeparation_RGB-HSV" - ], - "install_type": "git-clone", - "description": "A collection of simple nodes for Frequency Separation / Frequency Recombine with RGB and HSV methods" - }, - { - "author": "chandlergis", - "title": "ComfyUI_EmojiOverlay", - "id": "emoji-overlay", - "reference": "https://github.com/chandlergis/ComfyUI_EmojiOverlay", - "files": [ - "https://github.com/chandlergis/ComfyUI_EmojiOverlay" - ], - "install_type": "git-clone", - "description": "Nodes:Image Emoji Overlay" - }, - { - "author": "JayLyu", - "title": "ComfyUI_BaiKong_Node", - "id": "baikong", - "reference": "https://github.com/JayLyu/ComfyUI_BaiKong_Node", - "files": [ - "https://github.com/JayLyu/ComfyUI_BaiKong_Node" - ], - "install_type": "git-clone", - "description": "Nodes:BK Img To Color, BK Color Selector" - }, - { - "author": "zohac", - "title": "ComfyUI_ZC_DrawShape", - "id": "drawshape", - "reference": "https://github.com/zohac/ComfyUI_ZC_DrawShape", - "files": [ - "https://github.com/zohac/ComfyUI_ZC_DrawShape" - ], - "install_type": "git-clone", - "description": "Nodes:ZC DrawShape Node" - }, - { - "author": "ThereforeGames", - "title": "ComfyUI-Unprompted", - "id": "unprompted", - "reference": "https://github.com/ThereforeGames/ComfyUI-Unprompted", - "files": [ - "https://github.com/ThereforeGames/ComfyUI-Unprompted" - ], - "install_type": "git-clone", - "description": "This is a ComfyUI node that processes your input text with the [a/Unprompted templating language](https://github.com/ThereforeGames/unprompted). Early alpha release.\n" - }, - { - "author": "Scorpinaus", - "title": "Loaders for Diffusers-format checkpoints", - "id": "diffusersloader", - "reference": "https://github.com/Scorpinaus/ComfyUI-DiffusersLoader", - "files": [ - "https://github.com/Scorpinaus/ComfyUI-DiffusersLoader" - ], - "install_type": "git-clone", - "description": "This node pack allows loading of CLIP, MODEL, VAE aspects for both SD1.5 and SDXL checkpoints that is converted to diffusers format." - }, - { - "author": "chakib-belgaid", - "title": "ComfyUI Style Plugin", - "id": "style-plugin", - "reference": "https://github.com/chakib-belgaid/Comfyui_Prompt_styler", - "files": [ - "https://github.com/chakib-belgaid/Comfyui_Prompt_styler" - ], - "install_type": "git-clone", - "description": "This is a simple plugin for ComfyUI that allows you to import A1111 CSV styles into ComfyUI prompts." - }, - { - "author": "tiankuan93", - "title": "V-Express: Conditional Dropout for Progressive Training of Portrait Video Generation", - "id": "v-express", - "reference": "https://github.com/tiankuan93/ComfyUI-V-Express", - "files": [ - "https://github.com/tiankuan93/ComfyUI-V-Express" - ], - "install_type": "git-clone", - "description": "[Original] In the field of portrait video generation, the use of single images to generate portrait videos has become increasingly prevalent. A common approach involves leveraging generative models to enhance adapters for controlled generation. However, control signals can vary in strength, including text, audio, image reference, pose, depth map, etc. Among these, weaker conditions often struggle to be effective due to interference from stronger conditions, posing a challenge in balancing these conditions. In our work on portrait video generation, we identified audio signals as particularly weak, often overshadowed by stronger signals such as pose and original image. However, direct training with weak signals often leads to difficulties in convergence. To address this, we propose V-Express, a simple method that balances different control signals through a series of progressive drop operations. Our method gradually enables effective control by weak conditions, thereby achieving generation capabilities that simultaneously take into account pose, input image, and audio.\nNOTE: You need to downdload [a/model_ckpts](https://huggingface.co/tk93/V-Express/tree/main) manually." - }, - { - "author": "CMonk", - "title": "Stable Projectorz Bridge", - "id": "projectorz", - "reference": "https://github.com/tianlang0704/ComfyUI-StableProjectorzBridge", - "files": [ - "https://github.com/tianlang0704/ComfyUI-StableProjectorzBridge" - ], - "install_type": "git-clone", - "description": "This custom nodes enables Stable Projectorz to work with ComfyUI Directly." - }, - { - "author": "comfyanonymous", - "title": "TensorRT Node for ComfyUI", - "id": "tensorrt", - "reference": "https://github.com/comfyanonymous/ComfyUI_TensorRT", - "files": [ - "https://github.com/comfyanonymous/ComfyUI_TensorRT" - ], - "install_type": "git-clone", - "description": "This node enables the best performance on NVIDIA RTX™ Graphics Cards (GPUs) for Stable Diffusion by leveraging NVIDIA TensorRT." - }, - { - "author": "fexploit", - "title": "ComfyUI-Classifier", - "id": "classifier", - "reference": "https://github.com/fexploit/ComfyUI-Classifier", - "files": [ - "https://github.com/fexploit/ComfyUI-Classifier" - ], - "install_type": "git-clone", - "description": "ComfyUI-Classifier is a custom node for ComfyUI that uses a zero-shot classification model to classify text inputs based on a set of candidate labels. This node leverages the power of Hugging Face Transformers to provide accurate and flexible text classification." } ] } diff --git a/node_db/new/extension-node-map.json b/node_db/new/extension-node-map.json index 1e9ef905..8e88977c 100644 --- a/node_db/new/extension-node-map.json +++ b/node_db/new/extension-node-map.json @@ -37,6 +37,23 @@ "title_aux": "ComfyUI-GPT2P" } ], + "https://github.com/1038lab/ComfyUI_LatentSizeSelector": [ + [ + "LatentSizeSelector" + ], + { + "title_aux": "ComfyUI-latentSizeSelector" + } + ], + "https://github.com/11dogzi/ComfUI-EGAdapterMadAssistant": [ + [ + "EGIPAdapter_Mad_Assistant", + "EGIPAdapter_Mad_AssistantV2" + ], + { + "title_aux": "ComfUI-EGAdapterMadAssistant" + } + ], "https://github.com/11dogzi/Comfyui-ergouzi-Nodes": [ [ "EG-YSZT-ZT", @@ -232,6 +249,28 @@ "title_aux": "ComfyUI-3d-photo-inpainting" } ], + "https://github.com/AIFSH/ComfyUI-AuraSR": [ + [ + "AuraSRNode" + ], + { + "title_aux": "AIFSH/ComfyUI-AuraSR" + } + ], + "https://github.com/AIFSH/ComfyUI-DiffSynth-Studio": [ + [ + "ControlNetPathLoader", + "DiffTextNode", + "DiffutoonNode", + "ExVideoNode", + "LoadVideo", + "PreViewVideo", + "SDPathLoader" + ], + { + "title_aux": "ComfyUI-DiffSynth-Studio" + } + ], "https://github.com/AIFSH/ComfyUI-FishSpeech": [ [ "FishSpeech_INFER", @@ -268,6 +307,18 @@ "title_aux": "ComfyUI-Hallo" } ], + "https://github.com/AIFSH/ComfyUI-I2V-Adapter": [ + [ + "I2V_AdapterNode", + "LoraPathLoader", + "MotionLoraLoader", + "PreViewVideo", + "PromptNode" + ], + { + "title_aux": "ComfyUI-I2V-Adapter" + } + ], "https://github.com/AIFSH/ComfyUI-IP_LAP": [ [ "CombineAudioVideo", @@ -288,6 +339,17 @@ "title_aux": "ComfyUI-Live2DViewer" } ], + "https://github.com/AIFSH/ComfyUI-MARS5-TTS": [ + [ + "LoadAudioPath", + "MARS5TTS_Node", + "PreViewAudio", + "TTSTextEncode" + ], + { + "title_aux": "ComfyUI-MARS5-TTS" + } + ], "https://github.com/AIFSH/ComfyUI-MimicBrush": [ [ "MimicBrushNode" @@ -296,6 +358,16 @@ "title_aux": "ComfyUI-MimicBrush" } ], + "https://github.com/AIFSH/ComfyUI-MimicMotion": [ + [ + "LoadVideo", + "MimicMotionNode", + "PreViewVideo" + ], + { + "title_aux": "ComfyUI-MimicMotion" + } + ], "https://github.com/AIFSH/ComfyUI-MuseTalk_FSH": [ [ "CombineAudioVideo", @@ -322,7 +394,7 @@ ], "https://github.com/AIFSH/ComfyUI-UVR5": [ [ - "LoadAudio", + "LoadAudioPath", "PreViewAudio", "UVR5_Node" ], @@ -354,7 +426,7 @@ ], "https://github.com/AIFSH/ComfyUI-XTTS": [ [ - "LoadAudio", + "LoadAudioPath", "LoadSRT", "PreViewAudio", "XTTS_INFER", @@ -366,8 +438,7 @@ ], "https://github.com/AIFSH/ComfyUI_V-Express": [ [ - "CombineAudioVideo", - "LoadAudio", + "LoadAudioPath", "LoadImagePath", "LoadVideo", "PreViewVideo", @@ -400,6 +471,8 @@ "OpenPoseKeyPose", "OpenPoseLineart", "OpenPoseMediaPipeFace", + "PreviewAudio", + "SaveAudioBL", "\u5b58\u50a8", "\u5bfc\u5165", "\u622a\u56fe", @@ -456,6 +529,7 @@ "> Get Mean Color", "> Int", "> Int to Text", + "> Layer Weights (for IPAMS)", "> Light Source Mask", "> Load Image", "> Load Image From Folder", @@ -541,6 +615,7 @@ [ "INPAINT_ApplyFooocusInpaint", "INPAINT_DenoiseToCompositingMask", + "INPAINT_ExpandMask", "INPAINT_InpaintWithModel", "INPAINT_LoadFooocusInpaint", "INPAINT_LoadInpaintModel", @@ -591,10 +666,12 @@ [ "ArgosTranslateCLIPTextEncodeNode", "ArgosTranslateTextNode", + "ColorsCorrectNode", "DeepTranslatorCLIPTextEncodeNode", "DeepTranslatorTextNode", "GoogleTranslateCLIPTextEncodeNode", "GoogleTranslateTextNode", + "HexToHueNode", "PainterNode", "PoseNode", "PreviewTextNode" @@ -603,25 +680,12 @@ "title_aux": "AlekPet/ComfyUI_Custom_Nodes_AlekPet" } ], - "https://github.com/Alysondao/Comfyui-Yolov8-JSON": [ - [ - "Apply Yolov8 Model", - "Apply Yolov8 Model Seg", - "Draw Labelme Json", - "Load Yolov8 Model", - "Load Yolov8 Model From Path", - "Save Labelme Json" - ], - { - "title_aux": "Comfyui-Yolov8-JSON" - } - ], "https://github.com/Amorano/Jovimetrix": [ [], { "author": "amorano", - "description": "Webcams, GLSL shader, Media Streaming, Tick animation, Image manipulation,", - "nodename_pattern": " \\(jov\\)$", + "description": "Jovimetrix integrates Webcam, MIDI, Spout and GLSL shader support.", + "nodename_pattern": " \\(JOV\\)$", "title": "Jovimetrix", "title_aux": "Jovimetrix Composition Nodes" } @@ -1142,6 +1206,7 @@ "PrimerePromptSwitch", "PrimereRefinerPrompt", "PrimereResolution", + "PrimereResolutionCoordinatorMPX", "PrimereResolutionMultiplier", "PrimereResolutionMultiplierMPX", "PrimereSamplers", @@ -1207,6 +1272,14 @@ "title_aux": "Prompt Injection Node for ComfyUI" } ], + "https://github.com/DeJoker/pipeline-parallel-comfy": [ + [ + "PipelineParallel" + ], + { + "title_aux": "Pipeline Parallel ComfyUI" + } + ], "https://github.com/Derfuu/Derfuu_ComfyUI_ModdedNodes": [ [], { @@ -1349,7 +1422,10 @@ ], "https://github.com/Extraltodeus/Uncond-Zero-for-ComfyUI": [ [ - "Uncond Zero" + "Conditioning combine positive and negative", + "Conditioning crop or fill", + "Uncond Zero", + "interrupt on NaN" ], { "title_aux": "Uncond-Zero-for-ComfyUI" @@ -1618,6 +1694,8 @@ "OpenposePreprocessor", "PiDiNetPreprocessor", "PixelPerfectResolution", + "RenderAnimalKps", + "RenderPeopleKps", "SAMPreprocessor", "SavePoseKpsAsJsonFile", "ScribblePreprocessor", @@ -1812,6 +1890,22 @@ "title_aux": "NX_PromptStyler" } ], + "https://github.com/FuouM/ComfyUI-FirstOrderMM": [ + [ + "FOMM_Partswap", + "FOMM_Runner", + "FOMM_Seg10Chooser", + "FOMM_Seg15Chooser", + "FOMM_Seg5Chooser" + ], + { + "author": "Fuou Marinas", + "description": "Run First Order Motion Model for Image Animation in ComfyUI.", + "nickname": "FOMM", + "title": "ComfyUI-FirstOrderMM", + "title_aux": "ComfyUI-FirstOrderMM" + } + ], "https://github.com/G-370/ComfyUI-SD3-Powerlab": [ [ "G370SD3PowerLab_AttentionToImage", @@ -1888,6 +1982,7 @@ [ "ImageRGBA2RGB", "ReActorBuildFaceModel", + "ReActorFaceBoost", "ReActorFaceSwap", "ReActorFaceSwapOpt", "ReActorImageDublicator", @@ -1904,10 +1999,13 @@ ], "https://github.com/GraftingRayman/ComfyUI_GraftingRayman": [ [ + "GR Checkered Board", "GR Flip Tile Random Inverted", "GR Flip Tile Random Red Ring", "GR Image Details Displayer", "GR Image Details Saver", + "GR Image Paste", + "GR Image Paste With Mask", "GR Image Resize", "GR Image Resize Methods", "GR Image Size", @@ -1916,6 +2014,8 @@ "GR Mask Create Random", "GR Mask Resize", "GR Multi Mask Create", + "GR Onomatopoeia", + "GR Prompt HUB", "GR Prompt Selector", "GR Prompt Selector Multi", "GR Stack Image", @@ -1927,6 +2027,14 @@ "title_aux": "GraftingRayman" } ], + "https://github.com/GreenLandisaLie/AuraSR-ComfyUI": [ + [ + "AuraSR.AuraSRUpscaler" + ], + { + "title_aux": "AuraSR-ComfyUI" + } + ], "https://github.com/Guillaume-Fgt/ComfyUI_StableCascadeLatentRatio": [ [ "StableCascadeLatentRatio" @@ -2065,6 +2173,14 @@ "title_aux": "ComfyUI-SizeFromArray" } ], + "https://github.com/ImmortalPie/ComfyUI-PonySwitch/raw/main/PonySwitch.py": [ + [ + "PonySwitch" + ], + { + "title_aux": "PonySwitch Node" + } + ], "https://github.com/Intersection98/ComfyUI_MX_post_processing-nodes": [ [ "MX_AlphaBlend", @@ -2352,14 +2468,6 @@ "title_aux": "comfy-plasma" } ], - "https://github.com/Kaharos94/ComfyUI-Saveaswebp": [ - [ - "Save_as_webp" - ], - { - "title_aux": "ComfyUI-Saveaswebp" - } - ], "https://github.com/Kangkang625/ComfyUI-paint-by-example": [ [ "PaintbyExamplePipeLoader", @@ -2371,8 +2479,16 @@ ], "https://github.com/KewkLW/ComfyUI-kewky_tools": [ [ - "FormattedTextOutput", - "TensorDebugPlus" + "CLIPInterrogator", + "FormattedPromptNode", + "IPAdapterBinApply", + "IPAdapterBinPreprocessor", + "ImageBatcher", + "LoadImagePlus", + "TensorDebugPlus", + "TextAppendNode", + "TextSearchNode", + "VRAM_Debug_Plus" ], { "title_aux": "ComfyUI-kewky_tools" @@ -2834,7 +2950,10 @@ "MaraScottSetInpaintingByMask_v1", "MaraScottUpscalerRefinerNode_v2", "MaraScottUpscalerRefinerNode_v3", - "MaraScott_Kijai_TokenCounter_v1" + "MaraScott_Kijai_TokenCounter_v1", + "McBoaty_Refiner_v4", + "McBoaty_TilePrompter_v4", + "McBoaty_Upscaler_v4" ], { "title_aux": "\ud83d\udc30 MaraScott Nodes" @@ -2851,8 +2970,10 @@ ], "https://github.com/MariusKM/ComfyUI-BadmanNodes": [ [ + "BadmanCLIPTextEncodeSDXLRegion", "BadmanIO", "BadmanIntUtil", + "BadmanStringSelect", "Badman_Blend", "Badman_Concat_String", "Badman_HexGenerator", @@ -2895,6 +3016,19 @@ "title_aux": "Mosaica" } ], + "https://github.com/MilitantHitchhiker/MilitantHitchhiker-SwitchbladePack": [ + [ + "IntegratedRandomPromptGenerator", + "TextAppender" + ], + { + "author": "Militant Hitchhiker", + "description": "Militant Hitchhiker's multi-function nodes.", + "nickname": "Switchblade", + "title": "Switchblade Pack", + "title_aux": "Militant Hitchhiker's Switchblade Pack" + } + ], "https://github.com/Miosp/ComfyUI-FBCNN": [ [ "JPEG artifacts removal FBCNN" @@ -2918,6 +3052,7 @@ [ "AnimeCosplayDir", "AspectRatioCondition", + "ChooseImage", "Colors", "CombinedCrop", "ConnectFloat", @@ -2935,6 +3070,7 @@ "HueSatLum", "HueShift", "ImageDimensions", + "ImageDimensionsBatch", "ImageOverlayResized", "ImageResizeLong", "ImageZigzag", @@ -2970,6 +3106,7 @@ "SplitImages", "StringJoin", "TimeStamp", + "TintnShift", "TricolorComposition", "WorkflowSettings", "WrapText", @@ -2997,6 +3134,14 @@ "title_aux": "ComfyUI-AnimateAnyone-Evolved" } ], + "https://github.com/MrSamSeen/ComfyUI_SSStereoscope": [ + [ + "SBS_by_SamSeen" + ], + { + "title_aux": "ComfyUI_SSStereoscope" + } + ], "https://github.com/Munkyfoot/ComfyUI-TextOverlay": [ [ "Text Overlay" @@ -3341,6 +3486,14 @@ "title_aux": "ComfyUI-Qais-Helper" } ], + "https://github.com/RedRayz/ComfyUI-Danbooru-To-WD": [ + [ + "DanbooruToWD" + ], + { + "title_aux": "ComfyUI-Danbooru-To-WD" + } + ], "https://github.com/RenderRift/ComfyUI-RenderRiftNodes": [ [ "AnalyseMetadata", @@ -3433,6 +3586,14 @@ "title_aux": "comfyui_io_helpers" } ], + "https://github.com/SEkINVR/ComfyUI-SaveAs": [ + [ + "ComfyUISaveAs" + ], + { + "title_aux": "ComfyUI SaveAS" + } + ], "https://github.com/SLAPaper/ComfyUI-Image-Selector": [ [ "ImageDuplicator", @@ -3493,12 +3654,12 @@ ], "https://github.com/SamKhoze/ComfyUI-DeepFuze": [ [ + "DeepFuze Save", "DeepFuzeAdavance", "DeepFuzeFaceSwap", "DeepfuzePreview", "LLM_node", "PlayBackAudio", - "SaveVideo [n-suite]", "TTS_generation" ], { @@ -3541,17 +3702,9 @@ "https://github.com/Scorpinaus/ComfyUI-DiffusersLoader": [ [ "CombinedDiffusersLoader", - "CombinedDiffusersSD15Loader", - "CombinedDiffusersSDXLLoader", "DiffusersClipLoader", "DiffusersUNETLoader", - "DiffusersVAELoader", - "SD15CLIPLoader", - "SD15UNETLoader", - "SD15VAELoader", - "SDXLCLIPLoader", - "SDXLUNETLoader", - "SDXLVAELoader" + "DiffusersVAELoader" ], { "title_aux": "Loaders for Diffusers-format checkpoints" @@ -3559,7 +3712,8 @@ ], "https://github.com/ScreamingHawk/comfyui-ollama-prompt-encode": [ [ - "OllamaCLIPTextEncode" + "OllamaCLIPTextEncode", + "OllamaPromptGenerator" ], { "author": "Michael Standen", @@ -3851,6 +4005,33 @@ "title_aux": "Eagleshadow Custom Nodes" } ], + "https://github.com/SherryXieYuchen/ComfyUI-Image-Inpainting": [ + [ + "CropImageByRect", + "INPAINT_ColorCorrection", + "INPAINT_CropImage", + "INPAINT_InpaintingWithModel", + "INPAINT_LoadModel", + "INPAINT_PasteBackCropImage", + "INPAINT_VAEDecode", + "INPAINT_VAEEncode", + "ImagePostprocess", + "ImagePreprocess" + ], + { + "title_aux": "ComfyUI-Image-Inpainting" + } + ], + "https://github.com/Shibiko-AI/ShibikoAI-ComfyUI-Tools": [ + [ + "Cascade", + "Luts", + "Waifu2x" + ], + { + "title_aux": "Shibiko AI ComfyUI Tools" + } + ], "https://github.com/ShmuelRonen/ComfyUI-SVDResizer": [ [ "SVDRsizer" @@ -4392,6 +4573,7 @@ "https://github.com/TRI3D-LC/tri3d-comfyui-nodes": [ [ "get_histogram_limits", + "main_light_layer", "main_scaled_paste", "simple_rescale_histogram", "tri3d-HistogramEqualization", @@ -4400,6 +4582,7 @@ "tri3d-adjust-neck", "tri3d-atr-parse", "tri3d-atr-parse-batch", + "tri3d-bgremove-mega", "tri3d-clear-memory", "tri3d-clipdrop-bgremove-api", "tri3d-clipdrop-bgreplace-api", @@ -4410,7 +4593,10 @@ "tri3d-extract-parts-batch", "tri3d-extract-parts-batch2", "tri3d-extract-parts-mask-batch", + "tri3d-extract-pascal-parts-batch", "tri3d-face-recognise", + "tri3d-facer_face_segment", + "tri3d-flexible_color_extract", "tri3d-float-to-image", "tri3d-fuzzification", "tri3d-get_histogram_limits", @@ -4421,17 +4607,23 @@ "tri3d-interaction-canny", "tri3d-levindabhi-cloth-seg", "tri3d-load-pose-json", + "tri3d-load_AEMatter_Model", + "tri3d-load_MVANet_Model", "tri3d-luminosity-match", "tri3d-main_transparent_background", + "tri3d-photoroom-bgremove-api", "tri3d-pose-adaption", "tri3d-pose-to-image", "tri3d-position-hands", "tri3d-position-parts-batch", + "tri3d-position-pascal-parts-batch", "tri3d-recolor-mask", "tri3d-recolor-mask-LAB_space", "tri3d-recolor-mask-LAB_space_manual", "tri3d-recolor-mask-RGB_space", "tri3d-renormalize_array", + "tri3d-run_AEMatter_inference", + "tri3d-run_MVANet_inference", "tri3d-scaled-paste", "tri3d-simple_bg_swap", "tri3d-simple_rescale_histogram", @@ -4600,6 +4792,7 @@ "https://github.com/TinyTerra/ComfyUI_tinyterraNodes": [ [ "ttN KSampler_v2", + "ttN advPlot combo", "ttN advPlot range", "ttN advPlot string", "ttN advanced xyPlot", @@ -4851,6 +5044,8 @@ "Diffusers Hub Model Down-Loader", "Diffusers Model Loader", "Export API", + "HSL to Hex", + "Hex to HSL", "Image Analyze", "Image Aspect Ratio", "Image Batch", @@ -5555,9 +5750,11 @@ [ "AiStoreAzureGPTLiam", "GetBetterDepthImage", + "LiamLibDisplayText", "LiamLibFillImage", "LiamLibImageToGray", "LiamLibLoadImage", + "LiamLibMergeText", "LiamLibSaveImg", "LiamLibSaveText", "OllamaApiTNodeLiam", @@ -5641,8 +5838,11 @@ ], "https://github.com/alisson-anjos/ComfyUI-Ollama-Describer": [ [ - "LLaVaDescriber", - "OllamaDescriber" + "InputText", + "OllamaImageDescriber", + "OllamaTextDescriber", + "ShowText", + "TextTransformer" ], { "title_aux": "ComfyUI-Ollama-Describer" @@ -5822,6 +6022,14 @@ "title_aux": "antrobots ComfyUI Nodepack" } ], + "https://github.com/asagi4/ComfyUI-Adaptive-Guidance": [ + [ + "AdaptiveGuidance" + ], + { + "title_aux": "Adaptive Guidance for ComfyUI" + } + ], "https://github.com/asagi4/ComfyUI-CADS": [ [ "CADS" @@ -6453,14 +6661,6 @@ "title_aux": "ImageProcessing" } ], - "https://github.com/bvhari/ComfyUI_LatentToRGB": [ - [ - "LatentToRGB" - ], - { - "title_aux": "LatentToRGB" - } - ], "https://github.com/bvhari/ComfyUI_PerpWeight": [ [ "CLIPTextEncodePerpWeight" @@ -6471,6 +6671,7 @@ ], "https://github.com/bvhari/ComfyUI_SUNoise": [ [ + "SUNoiseLatent", "SamplerDPM2Ancestral_SUN", "SamplerDPMPP2SAncestral_SUN", "SamplerDPMPP_2M_SDE_SUN", @@ -6520,9 +6721,21 @@ "title_aux": "comfyui-image-round" } ], - "https://github.com/celsojr2013/comfyui_simpletools/raw/main/google_translator.py": [ + "https://github.com/celsojr2013/comfyui_jamworks_client": [ [ - "GoogleTranslator" + "Jamworks_Download", + "Jamworks_Login", + "Shell_Command" + ], + { + "title_aux": "comfyui_jamworks_client" + } + ], + "https://github.com/celsojr2013/comfyui_simpletools": [ + [ + "GoogleTranslator", + "Parameters", + "ResolutionSolver" ], { "title_aux": "ComfyUI SimpleTools Suit" @@ -6533,6 +6746,8 @@ "ImageDirIterator", "Modelscopet2v", "Modelscopev2v", + "RemapRange", + "SplitImageChannels", "TextFileLineIterator", "VidDirIterator" ], @@ -7114,6 +7329,7 @@ "LayerUtility: Boolean", "LayerUtility: BooleanOperator", "LayerUtility: BooleanOperatorV2", + "LayerUtility: CheckMask", "LayerUtility: ColorImage", "LayerUtility: ColorImage V2", "LayerUtility: ColorPicker", @@ -7131,6 +7347,7 @@ "LayerUtility: GradientImage", "LayerUtility: GradientImage V2", "LayerUtility: HLFrequencyDetailRestore", + "LayerUtility: HSV Value", "LayerUtility: If", "LayerUtility: ImageAutoCrop", "LayerUtility: ImageAutoCrop V2", @@ -7163,6 +7380,7 @@ "LayerUtility: PromptTagger", "LayerUtility: PurgeVRAM", "LayerUtility: QWenImage2Prompt", + "LayerUtility: QueueStop", "LayerUtility: RGB Value", "LayerUtility: RestoreCropBox", "LayerUtility: SD3NegativeConditioning", @@ -7314,6 +7532,17 @@ "title_aux": "Use Everywhere (UE Nodes)" } ], + "https://github.com/christian-byrne/audio-separation-nodes-comfyui": [ + [ + "AudioCombine", + "AudioCrop", + "AudioSeparation", + "AudioTempoMatch" + ], + { + "title_aux": "audio-separation-nodes-comfyui" + } + ], "https://github.com/christian-byrne/img2colors-comfyui-node": [ [ "bmy_Img2ColorNode" @@ -7497,6 +7726,7 @@ "ConditioningZeroOut", "ControlNetApply", "ControlNetApplyAdvanced", + "ControlNetApplySD3", "ControlNetLoader", "CropMask", "DiffControlNetLoader", @@ -7514,6 +7744,7 @@ "FlipSigmas", "FreeU", "FreeU_V2", + "GITSScheduler", "GLIGENLoader", "GLIGENTextBoxApply", "GrowMask", @@ -7572,6 +7803,7 @@ "ModelMergeBlocks", "ModelMergeSD1", "ModelMergeSD2", + "ModelMergeSD3_2B", "ModelMergeSDXL", "ModelMergeSimple", "ModelMergeSubtract", @@ -7589,6 +7821,7 @@ "PhotoMakerLoader", "PolyexponentialScheduler", "PorterDuffImageComposite", + "PreviewAudio", "PreviewImage", "RandomNoise", "RebatchImages", @@ -7607,6 +7840,8 @@ "SamplerDPMPP_3M_SDE", "SamplerDPMPP_SDE", "SamplerEulerAncestral", + "SamplerEulerAncestralCFGPP", + "SamplerEulerCFGpp", "SamplerLCMUpscale", "SamplerLMS", "SaveAnimatedPNG", @@ -7794,6 +8029,8 @@ "IPAdapterMS", "IPAdapterModelLoader", "IPAdapterNoise", + "IPAdapterPreciseStyleTransfer", + "IPAdapterPreciseStyleTransferBatch", "IPAdapterPromptScheduleFromWeightsStrategy", "IPAdapterRegionalConditioning", "IPAdapterSaveEmbeds", @@ -7860,6 +8097,7 @@ "ImageHistogramMatch+", "ImageListToBatch+", "ImagePosterize+", + "ImagePreviewFromLatent+", "ImageRandomTransform+", "ImageRemoveAlpha+", "ImageRemoveBackground+", @@ -8047,12 +8285,17 @@ "https://github.com/daxcay/ComfyUI-DataSet": [ [ "DATASET_CaptionVisualizer", + "DATASET_LoadImage", "DATASET_OpenAIChat", "DATASET_OpenAIChatImage", + "DATASET_OpenAIChatImageBatch", + "DATASET_SaveImage", "DATASET_SearchAndReplace", "DATASET_TXTFileLoader", "DATASET_TXTFileSaver", + "DATASET_TXTFileSaverBatch", "DATASET_TagManipulatorByImageNames", + "DATASET_TriggerWords", "DATASET_xCopy" ], { @@ -8482,7 +8725,8 @@ "SaveImageAdvanced", "SavePosEmbeds", "VAEDecode_to_folder", - "VideoFrameSelector" + "VideoFrameSelector", + "WidthHeightPicker" ], { "title_aux": "Various custom nodes by Eden.art" @@ -8559,12 +8803,20 @@ ], { "author": "\"\u02f6\ud835\udfa2\u292c\u2ad2\u2d56s\u143c\u02f6\"", - "description": "\"Selector & Recourse. Presets & failsafes. Work flow.\"", + "description": "\"EXDYSA. Selector and Recourse. Presets & failsafes. Work flow.\"", "nickname": "\"Selector\"", "title": "\"Selector\"", "title_aux": "comfyui-selector" } ], + "https://github.com/fablestudio/ComfyUI-Showrunner-Utils": [ + [ + "AlignFace" + ], + { + "title_aux": "ComfyUI-Showrunner-Utils" + } + ], "https://github.com/fearnworks/ComfyUI_FearnworksNodes/raw/main/fw_nodes.py": [ [ "Count Files in Directory (FW)", @@ -8663,14 +8915,19 @@ "FL_ImagePixelator", "FL_ImageRandomizer", "FL_InfiniteZoom", + "FL_InpaintCrop", + "FL_Inpaint_Stitch", + "FL_KsamplerSettings", "FL_NFTGenerator", "FL_PaperDrawn", "FL_PixelArtShader", "FL_PixelSort", "FL_PromptSelector", "FL_RandomNumber", + "FL_RetroEffect", "FL_Ripple", - "FL_Shadertoy" + "FL_Shadertoy", + "FL_TD_Sampler" ], { "title_aux": "ComfyUI_Fill-Nodes" @@ -8818,6 +9075,15 @@ "title_aux": "ComfyUI-HyperSDXL1StepUnetScheduler (ByteDance)" } ], + "https://github.com/fofr/ComfyUI-Prompter-fofrAI": [ + [ + "List sampler \ud83e\udeb4", + "Prompt from template \ud83e\udeb4" + ], + { + "title_aux": "ComfyUI-Prompter-fofrAI" + } + ], "https://github.com/forever22777/comfyui-self-guidance": [ [ "CLIPConditioning", @@ -8895,8 +9161,13 @@ ], "https://github.com/fsdymy1024/ComfyUI_fsdymy": [ [ + "IPAdapterLayerWeight", "Preview Image Without Metadata", - "Save Image Without Metadata" + "PreviewImageWithoutMetadata", + "Save Image Without Metadata", + "SaveImageWithoutMetadata", + "ShowText", + "ZhiPuAiNode" ], { "title_aux": "ComfyUI_fsdymy" @@ -8913,48 +9184,6 @@ ], "https://github.com/get-salt-AI/SaltAI": [ [ - "LLMChat", - "LLMChatEngine", - "LLMChatMessageConcat", - "LLMChatMessages", - "LLMChatMessagesAdv", - "LLMComplete", - "LLMDirectoryReader", - "LLMHtmlComposer", - "LLMHtmlRepair", - "LLMJSONQueryEngine", - "LLMJsonComposer", - "LLMJsonRepair", - "LLMMarkdownComposer", - "LLMMarkdownRepair", - "LLMNotionReader", - "LLMPostProcessDocuments", - "LLMQueryEngine", - "LLMQueryEngineAdv", - "LLMRegexCreator", - "LLMRegexRepair", - "LLMRssReaderNode", - "LLMSemanticSplitterNodeParser", - "LLMSentenceSplitterNodeCreator", - "LLMServiceContextAdv", - "LLMServiceContextDefault", - "LLMSimpleWebPageReader", - "LLMSummaryIndex", - "LLMTrafilaturaWebReader", - "LLMTreeIndex", - "LLMVectorStoreIndex", - "LLMYamlComposer", - "LLMYamlRepair", - "OPAC", - "OPAC2Floats", - "OPACList2ExecList", - "OPACListVariance", - "OPACPerlinSettings", - "OPACTransformImages", - "OPCSLayerExtractor", - "OPCScheduler", - "OpenAIModel", - "ParallaxMotion", "SAIPrimitiveConverter", "SAIStringRegexSearchMatch", "SAIStringRegexSearchReplace", @@ -8972,7 +9201,7 @@ "SaltMasksToImages", "SaltOutput", "SaltRGBAFromMask", - "ScheduledImageAdjust" + "SaltWebsiteScreenshot" ], { "title_aux": "SaltAI-Open-Resources" @@ -9240,6 +9469,7 @@ "GlifConsistencyDecoder", "GlifPatchConsistencyDecoderTiled", "GlifVariable", + "GlifmojiLoader", "HFHubEmbeddingLoader", "HFHubLoraLoader", "ImageToMultipleOf", @@ -9347,54 +9577,62 @@ "textMaskOverlay_node" ], { - "author": "YFG", - "description": "This extension loads a model checkpoint file and extracts the model state dictionary or the entire model, treating all checkpoints as if they are in the root directory.", - "nickname": "\ud83e\udde0 YFG Smart Checkpoint Loader", - "title": "YFG Smart Checkpoint Loader", + "author": "Manny Gonzalez", + "description": "Utility custom nodes for special effects, image manipulation and quality of life tools.", + "nickname": "\ud83d\udc2f YFG Comical Nodes", + "title": "\ud83d\udc2f YFG Comical Nodes", "title_aux": "\ud83d\ude38 YFG Comical Nodes" } ], "https://github.com/griptape-ai/ComfyUI-Griptape": [ [ - "AudioTranscriptionTask", - "Calculator", - "CreateAgent", - "DateTime", - "EnvironmentConfig", - "ExpandAgent", - "ImageQueryTask", - "MergeTexts", - "ParallelImageQueryTask", - "PromptImageGenerationTask", - "PromptImageVariationTask", - "PromptTask", - "Rule", - "RunAgent", - "TextSummaryTask", - "ToolList", - "ToolTask", - "ToolkitTask", - "WebScraper", - "gtAudioTranscriptionClient", - "gtUIAmazonBedrockStableDiffusionImageGenerationDriver", - "gtUIAmazonBedrockStructureConfig", - "gtUIAmazonBedrockTitanImageGenerationDriver", - "gtUIAnthropicStructureConfig", - "gtUICLIPTextEncode", - "gtUIFetchImage", - "gtUIFileManager", - "gtUIGoogleStructureConfig", - "gtUIInputNode", - "gtUIKnowledgeBaseTool", - "gtUILeonardoImageGenerationDriver", - "gtUILoadAudio", - "gtUIOpenAiAudioTranscriptionDriver", - "gtUIOpenAiImageGenerationDriver", - "gtUIOpenAiStructureConfig", - "gtUIOutputImageNode", - "gtUIOutputStringNode", - "gtUITextToClipEncode", - "gtUIWebSearch" + "Griptape Agent Config: Amazon Bedrock", + "Griptape Agent Config: Anthropic", + "Griptape Agent Config: Google", + "Griptape Agent Config: LM Studio", + "Griptape Agent Config: Ollama", + "Griptape Agent Config: OpenAI", + "Griptape Audio Driver: OpenAI", + "Griptape Combine: Merge Inputs", + "Griptape Combine: Merge Texts", + "Griptape Combine: Rules List", + "Griptape Combine: Tool List", + "Griptape Config: Environment Variables", + "Griptape Convert: Text to CLIP Encode", + "Griptape Convert: Text to Combo", + "Griptape Create: Agent", + "Griptape Create: CLIP Text Encode", + "Griptape Create: Image Variation", + "Griptape Create: Image from Text", + "Griptape Create: Rules", + "Griptape Create: Text", + "Griptape Display: Artifact", + "Griptape Display: Data as Text", + "Griptape Display: Image", + "Griptape Display: Text", + "Griptape Driver: Amazon Bedrock Stable Diffusion", + "Griptape Driver: Amazon Bedrock Titan", + "Griptape Driver: Leonardo.AI", + "Griptape Driver: OpenAI Image Generation", + "Griptape Expand: Agent Nodes", + "Griptape Load: Audio", + "Griptape Load: Image From URL", + "Griptape Run: Agent", + "Griptape Run: Audio Transcription", + "Griptape Run: Image Description", + "Griptape Run: Parallel Image Description", + "Griptape Run: Prompt Task", + "Griptape Run: Text Summary", + "Griptape Run: Tool Task", + "Griptape Run: Toolkit Task", + "Griptape Set: Default Agent", + "Griptape Tool: Audio Transcription", + "Griptape Tool: Calculator", + "Griptape Tool: DateTime", + "Griptape Tool: FileManager", + "Griptape Tool: Griptape Cloud KnowledgeBase", + "Griptape Tool: WebScraper", + "Griptape Tool: WebSearch" ], { "author": "Jason Schleifer", @@ -9491,6 +9729,14 @@ "title_aux": "ComfyUI Dreamtalk" } ], + "https://github.com/hay86/ComfyUI_Hallo": [ + [ + "D_HalloNode" + ], + { + "title_aux": "ComfyUI Hallo" + } + ], "https://github.com/hay86/ComfyUI_MiniCPM-V": [ [ "D_MiniCPM_VQA" @@ -9525,6 +9771,10 @@ "CLIPTextEncode_party", "Dingding", "Dingding_tool", + "KG_csv_toolkit_developer", + "KG_csv_toolkit_user", + "KG_json_toolkit_developer", + "KG_json_toolkit_user", "KSampler_party", "LLM", "LLM_api_loader", @@ -9554,6 +9804,8 @@ "google_tool", "interpreter_tool", "keyword_tool", + "listen_audio", + "llama_guff_loader", "load_embeddings", "load_excel", "load_file", @@ -9567,10 +9819,13 @@ "omost_decode", "omost_setting", "openai_tts", + "openai_whisper", "play_audio", + "replace_string", "show_text_party", "start_dialog", "start_workflow", + "story_json_tool", "string_logic", "substring", "time_tool", @@ -9685,6 +9940,14 @@ "title_aux": "ComfyUI-layerdiffuse (layerdiffusion)" } ], + "https://github.com/huchenlei/ComfyUI-openpose-editor": [ + [ + "huchenlei.LoadOpenposeJSON" + ], + { + "title_aux": "ComfyUI-openpose-editor" + } + ], "https://github.com/huchenlei/ComfyUI_DanTagGen": [ [ "PromptDanTagGen" @@ -9747,6 +10010,14 @@ "title_aux": "hus' utils for ComfyUI" } ], + "https://github.com/hwhaocool/ComfyUI-Select-Any": [ + [ + "SelectAnyValues" + ], + { + "title_aux": "ComfyUI-Select-Any" + } + ], "https://github.com/hylarucoder/ComfyUI-Eagle-PNGInfo": [ [ "EagleImageNode", @@ -9758,6 +10029,15 @@ "title_aux": "Eagle PNGInfo" } ], + "https://github.com/hyunamy/comfy-ui-on-complete-email-me": [ + [ + "OnCompleteEmailMe", + "OnCompleteWebhook" + ], + { + "title_aux": "Comfy-UI on-complete-email-me" + } + ], "https://github.com/iFREEGROUP/comfyui-undistort": [ [ "IG_LoadCheckerboardImageForCalibrateCamera", @@ -9846,6 +10126,20 @@ "title_aux": "FaceSwap" } ], + "https://github.com/iwanders/ComfyUI_nodes": [ + [ + "IW_JsonPickItem", + "IW_StringConcat", + "IW_StringNode", + "IW_StringPrint", + "IW_StringReplace", + "IW_StringSave", + "IW_TokenizerVocab" + ], + { + "title_aux": "iwanders/ComfyUI_nodes" + } + ], "https://github.com/jags111/ComfyUI_Jags_Audiotools": [ [ "BatchJoinAudio", @@ -9975,6 +10269,170 @@ "title_aux": "Efficiency Nodes for ComfyUI Version 2.0+" } ], + "https://github.com/jakechai/ComfyUI-JakeUpgrade": [ + [ + "Animation Prompt JK", + "Animation Value JK", + "Base Image Parameters Extract JK", + "Base Model Parameters Extract JK", + "Base Model Parameters JK", + "Base Model Pipe Extract JK", + "Base Model Pipe JK", + "CM_BoolBinaryOperation JK", + "CM_BoolToInt JK", + "CM_BoolUnaryOperation JK", + "CM_BreakoutVec2 JK", + "CM_BreakoutVec3 JK", + "CM_BreakoutVec4 JK", + "CM_ComposeVec2 JK", + "CM_ComposeVec3 JK", + "CM_ComposeVec4 JK", + "CM_FloatBinaryCondition JK", + "CM_FloatBinaryOperation JK", + "CM_FloatToInt JK", + "CM_FloatToNumber JK", + "CM_FloatUnaryCondition JK", + "CM_FloatUnaryOperation JK", + "CM_IntBinaryCondition JK", + "CM_IntBinaryOperation JK", + "CM_IntToBool JK", + "CM_IntToFloat JK", + "CM_IntToNumber JK", + "CM_IntUnaryCondition JK", + "CM_IntUnaryOperation JK", + "CM_NumberBinaryCondition JK", + "CM_NumberBinaryOperation JK", + "CM_NumberToFloat JK", + "CM_NumberToInt JK", + "CM_NumberUnaryCondition JK", + "CM_NumberUnaryOperation JK", + "CM_Vec2BinaryCondition JK", + "CM_Vec2BinaryOperation JK", + "CM_Vec2FloatOperation_JK", + "CM_Vec2ToFloatBinaryOperation JK", + "CM_Vec2ToFloatUnaryOperation JK", + "CM_Vec2UnaryCondition JK", + "CM_Vec2UnaryOperation JK", + "CM_Vec3BinaryCondition JK", + "CM_Vec3BinaryOperation JK", + "CM_Vec3FloatOperation_JK", + "CM_Vec3ToFloatBinaryOperation JK", + "CM_Vec3ToFloatUnaryOperation JK", + "CM_Vec3UnaryCondition JK", + "CM_Vec3UnaryOperation JK", + "CM_Vec4BinaryCondition JK", + "CM_Vec4BinaryOperation JK", + "CM_Vec4FloatOperation_JK", + "CM_Vec4ToFloatBinaryOperation JK", + "CM_Vec4ToFloatUnaryOperation JK", + "CM_Vec4UnaryCondition JK", + "CM_Vec4UnaryOperation JK", + "CR Apply ControlNet JK", + "CR Apply Multi-ControlNet JK", + "CR Boolean JK", + "CR Clip Input Switch JK", + "CR Conditioning Input Switch JK", + "CR ControlNet Input Switch JK", + "CR Float Input Switch JK", + "CR Image Input Switch JK", + "CR Impact Pipe Input Switch JK", + "CR Int Input Switch JK", + "CR Latent Input Switch JK", + "CR LoRA Stack JK", + "CR Load LoRA JK", + "CR Mask Input Switch JK", + "CR Model Input Switch JK", + "CR Multi-ControlNet Stack JK", + "CR Pipe Input Switch JK", + "CR SD1.5 Aspect Ratio JK", + "CR SDXL Aspect Ratio JK", + "CR Switch Model and CLIP JK", + "CR Text Input Switch JK", + "CR VAE Input Switch JK", + "Ckpt Loader JK", + "Detailer Parameters JK", + "Embedding Picker JK", + "Embedding Picker Multi JK", + "Evaluate Examples JK", + "Evaluate Floats JK", + "Evaluate Ints JK", + "Evaluate Strings JK", + "HintImageEnchance JK", + "Image Upscale Parameters Extract JK", + "Ksampler Parameters JK", + "Latent Upscale Parameters Extract JK", + "Load Image With Metadata JK", + "Metadata Pipe Extract JK", + "Metadata Pipe JK", + "NodesState JK", + "Noise Injection Parameters JK", + "Orbit Poses JK", + "Pipe End JK", + "Project Setting JK", + "Refine 1 Parameters Extract JK", + "Refine 2 Parameters Extract JK", + "Refine Model Parameters JK", + "Refine Pipe Extract JK", + "Refine Pipe JK", + "Reroute Ckpt JK", + "Reroute List JK", + "Reroute Resize JK", + "Reroute Sampler JK", + "Reroute Upscale JK", + "Reroute Vae JK", + "SDXLPromptStylerAll", + "SDXLPromptStylerHorror", + "SDXLPromptStylerMisc", + "SDXLPromptStylerbyArtist", + "SDXLPromptStylerbyCamera", + "SDXLPromptStylerbyComposition", + "SDXLPromptStylerbyCyberpunkSurrealism", + "SDXLPromptStylerbyDepth", + "SDXLPromptStylerbyDiva", + "SDXLPromptStylerbyEnvironment", + "SDXLPromptStylerbyFantasySetting", + "SDXLPromptStylerbyFilter", + "SDXLPromptStylerbyFocus", + "SDXLPromptStylerbyFooocus", + "SDXLPromptStylerbyImpressionism", + "SDXLPromptStylerbyLighting", + "SDXLPromptStylerbyMarc", + "SDXLPromptStylerbyMileHigh", + "SDXLPromptStylerbyMood", + "SDXLPromptStylerbyMre", + "SDXLPromptStylerbyMythicalCreature", + "SDXLPromptStylerbyOriginal", + "SDXLPromptStylerbyQuantumRealism", + "SDXLPromptStylerbySai", + "SDXLPromptStylerbySteamPunkRealism", + "SDXLPromptStylerbySubject", + "SDXLPromptStylerbySurrealism", + "SDXLPromptStylerbyTheme", + "SDXLPromptStylerbyTimeofDay", + "SDXLPromptStylerbyTwri", + "SDXLPromptStylerbyWyvern", + "SDXLPromptbyCelticArt", + "SDXLPromptbyContemporaryNordicArt", + "SDXLPromptbyFashionArt", + "SDXLPromptbyGothicRevival", + "SDXLPromptbyIrishFolkArt", + "SDXLPromptbyRomanticNationalismArt", + "SDXLPromptbySportsArt", + "SDXLPromptbyStreetArt", + "SDXLPromptbyVikingArt", + "SDXLPromptbyWildlifeArt", + "Sampler Loader JK", + "Save Image with Metadata Flow JK", + "Save Image with Metadata JK", + "Upscale Model Loader JK", + "Upscale Model Parameters Extract JK", + "Upscale Model Parameters JK", + "Vae Loader JK" + ], + { + "title_aux": "ComfyUI-JakeUpgrade" + } + ], "https://github.com/jamal-alkharrat/ComfyUI_rotate_image": [ [ "RotateImage" @@ -10138,7 +10596,8 @@ [ "CLIPTextEncodeWithStats", "OpenPoseEditorAdv", - "SaveImgAdv" + "SaveImgAdv", + "SolidMaskAdv" ], { "title_aux": "ULTools for ComfyUI" @@ -10148,7 +10607,8 @@ [ "LCMScheduler", "SamplerLCMAlternative", - "SamplerLCMCycle" + "SamplerLCMCycle", + "SamplerLCMDualNoise" ], { "title_aux": "ComfyUI-sampler-lcm-alternative" @@ -10163,6 +10623,14 @@ "title_aux": "ComfyUI Deepface" } ], + "https://github.com/jroc22/ComfyUI-CSV-prompt-builder": [ + [ + "BuildPromptFromCSV" + ], + { + "title_aux": "ComfyUI-CSV-prompt-builder" + } + ], "https://github.com/jtrue/ComfyUI-JaRue": [ [ "Text2Image_jru", @@ -10184,6 +10652,16 @@ "title_aux": "ComfyUI LayerDivider" } ], + "https://github.com/jtydhr88/ComfyUI-Unique3D": [ + [ + "Unique3DLoadPipeline", + "Unique3DRun - Geo Reconstruct", + "Unique3DRun - MVPrediction" + ], + { + "title_aux": "ComfyUI Unique3D" + } + ], "https://github.com/ka-puna/comfyui-yanc": [ [ "YANC.ConcatStrings", @@ -10207,9 +10685,10 @@ ], "https://github.com/kadirnar/ComfyUI-Transformers": [ [ - "DepthEstimationPipeline", + "DepthEstimationInference", "ImageClassificationPipeline", "ImageSegmentationPipeline", + "LoadDepthModel", "ObjectDetectionPipeline" ], { @@ -10218,10 +10697,18 @@ ], "https://github.com/kadirnar/ComfyUI-YOLO": [ [ + "BBoxToCoco", "BBoxToXYWH", + "BBoxVisNode", + "CocoToNumber", "ConvertToDict", - "LoadUltralytics", + "CustomUltralyticsModelLoader", + "GetImageSize", + "ImageResizeAdvanced", + "SAMInference", + "SAMLoader", "UltralyticsInference", + "UltralyticsModelLoader", "UltralyticsVisualization" ], { @@ -10448,7 +10935,8 @@ "https://github.com/kijai/ComfyUI-CCSR": [ [ "CCSR_Model_Select", - "CCSR_Upscale" + "CCSR_Upscale", + "DownloadAndLoadCCSRModel" ], { "title_aux": "ComfyUI-CCSR" @@ -10487,6 +10975,7 @@ "DownloadAndLoadDynamiCrafterModel", "DynamiCrafterBatchInterpolation", "DynamiCrafterI2V", + "DynamiCrafterLoadInitNoise", "DynamiCrafterModelLoader", "ToonCrafterDecode", "ToonCrafterInterpolation" @@ -10507,6 +10996,15 @@ "title_aux": "ComfyUI-ELLA-wrapper" } ], + "https://github.com/kijai/ComfyUI-Florence2": [ + [ + "DownloadAndLoadFlorence2Model", + "Florence2Run" + ], + { + "title_aux": "ComfyUI-Florence2" + } + ], "https://github.com/kijai/ComfyUI-Geowizard": [ [ "geowizard_model_loader", @@ -10662,6 +11160,20 @@ "title_aux": "ComfyUI-LaVi-Bridge-Wrapper" } ], + "https://github.com/kijai/ComfyUI-LuminaWrapper": [ + [ + "DownloadAndLoadGemmaModel", + "DownloadAndLoadLuminaModel", + "GemmaSampler", + "LuminaGemmaTextEncode", + "LuminaGemmaTextEncodeArea", + "LuminaT2ISampler", + "LuminaTextAreaAppend" + ], + { + "title_aux": "ComfyUI-LuminaWrapper" + } + ], "https://github.com/kijai/ComfyUI-Marigold": [ [ "ColorizeDepthmap", @@ -10743,6 +11255,7 @@ "https://github.com/klinter007/klinter_nodes": [ [ "Filter", + "Florence2Captions2IPA", "PresentString", "SingleString", "SizeSelector", @@ -10934,12 +11447,25 @@ "https://github.com/latenightlabs/ComfyUI-LNL": [ [ "LNL_FrameSelector", - "LNL_FrameSelectorV2" + "LNL_FrameSelectorV2", + "LNL_FrameSelectorV3" ], { "title_aux": "LNL Frame Selector" } ], + "https://github.com/leiweiqiang/ComfyUI-TRA": [ + [ + "TclEbSynth", + "TclExtractFramesFromVideo", + "TclExtractFramesFromVideoFile", + "TclFrames2Video", + "TclSaveVideoFromFrames" + ], + { + "title_aux": "ComfyUI-TRA" + } + ], "https://github.com/leoleelxh/ComfyUI-LLMs": [ [ "\ud83d\uddbc\ufe0f LLMs_Vison_Ali", @@ -11011,8 +11537,10 @@ "Blocks Mecha Hyper", "Float Mecha Hyper", "Lora Mecha Recipe", + "Mecha Deserializer", "Mecha Merger", "Mecha Recipe List", + "Mecha Serializer", "Model Mecha Recipe" ], { @@ -11037,6 +11565,7 @@ "https://github.com/lks-ai/anynode": [ [ "AnyNode", + "AnyNodeAnthropic", "AnyNodeCodeViewer", "AnyNodeExport", "AnyNodeGemini", @@ -11046,7 +11575,7 @@ "author": "newsbubbles", "description": "This single node uses an LLM to generate a functionality based on your request. You can make the node do anything.", "nickname": "AnyNode", - "title": "AnyNode v0.1", + "title": "AnyNode v0.1.1", "title_aux": "ComfyUI AnyNode: Any Node you ask for" } ], @@ -11221,6 +11750,22 @@ "title_aux": "Wildcards" } ], + "https://github.com/lordgasmic/comfyui_save_image_with_options": [ + [ + "SaveImageWithOptions" + ], + { + "title_aux": "comfyui_save_image_with_options" + } + ], + "https://github.com/lordgasmic/comfyui_wildcards": [ + [ + "CLIPTextEncodeWithWildcards" + ], + { + "title_aux": "comfyui_wildcards" + } + ], "https://github.com/lquesada/ComfyUI-Inpaint-CropAndStitch": [ [ "InpaintCrop", @@ -11236,7 +11781,8 @@ [ "PromptCombinator", "PromptCombinatorExportGallery", - "PromptCombinatorMerger" + "PromptCombinatorMerger", + "PromptCombinatorRandomPrompt" ], { "title_aux": "ComfyUI-Prompt-Combinator" @@ -11286,6 +11832,7 @@ "FromDetailerPipe", "FromDetailerPipeSDXL", "FromDetailerPipe_v2", + "GITSSchedulerFuncProvider", "ImageListToImageBatch", "ImageMaskSwitch", "ImageReceiver", @@ -11528,6 +12075,8 @@ "RemoveControlNetFromRegionalPrompts //Inspire", "RetrieveBackendData //Inspire", "RetrieveBackendDataNumberKey //Inspire", + "ScheduledCFGGuider //Inspire", + "ScheduledPerpNegCFGGuider //Inspire", "SeedExplorer //Inspire", "SelectNthMask //Inspire", "ShowCachedInfo //Inspire", @@ -11612,7 +12161,7 @@ ], { "author": "\u02f6marduk191", - "description": "A node to set workflow settings.", + "description": "marduk191s nodes.", "nickname": "marduk191 workflow settings", "title": "marduk191 workflow settings", "title_aux": "marduk191 workflow settings" @@ -11801,6 +12350,7 @@ "PettyPaintFileExists", "PettyPaintImageColorsToMasks", "PettyPaintImageCompositeMasked", + "PettyPaintImageDims", "PettyPaintImagePlacement", "PettyPaintImageSave", "PettyPaintImageStore", @@ -11809,8 +12359,11 @@ "PettyPaintJsonMap", "PettyPaintJsonRead", "PettyPaintJsonReadArray", + "PettyPaintKSampler", + "PettyPaintKSamplerAdvanced", "PettyPaintLoRAStack", "PettyPaintLoadImage", + "PettyPaintLoadImageMasks", "PettyPaintLoadImages", "PettyPaintMap", "PettyPaintMasksToImages", @@ -11819,9 +12372,11 @@ "PettyPaintProcessor", "PettyPaintRemoveAddText", "PettyPaintSDTurboScheduler", + "PettyPaintStoryImage", "PettyPaintText", "PettyPaintTexts_to_Conditioning", - "PettyPaintToJson" + "PettyPaintToJson", + "PettyPaintVAEDecode" ], { "title_aux": "petty-paint-comfyui-node" @@ -11881,6 +12436,15 @@ "title_aux": "ComfyUI - Mask Bounding Box" } ], + "https://github.com/mingqizhang/ComfyUI_InSPyResNet_zmq": [ + [ + "INSPY removebg Apply", + "INSPY removebg ModelLoader" + ], + { + "title_aux": "ComfyUI_InSPyResNet_zmq" + } + ], "https://github.com/mirabarukaso/ComfyUI_Mira": [ [ "BooleanListInterpreter1", @@ -11979,6 +12543,27 @@ "title_aux": "PoseKeypoint Mask" } ], + "https://github.com/my-opencode/ComfyUI_IndustrialMagick": [ + [ + "IndustrialMagick", + "IndustrialMagickImageIngest" + ], + { + "title_aux": "ComfyUI_IndustrialMagick" + } + ], + "https://github.com/my-opencode/ComfyUI_KSamplerTimer": [ + [ + "KSamplerTimer" + ], + { + "author": "Ludovic Anterieur", + "description": "This extension provides a wrapper of the native KSampler which outputs generation time.", + "nickname": "\u23f1", + "title": "KSampler (timer)", + "title_aux": "ComfyUI_KSamplerTimer" + } + ], "https://github.com/nagolinc/ComfyUI_FastVAEDecorder_SDXL": [ [ "FastLatentToImage" @@ -12302,6 +12887,18 @@ "title_aux": "Quality of life Suit:V2" } ], + "https://github.com/opvelll/ComfyUI_TextListProduct": [ + [ + "ProductedString", + "TextListProduct", + "TextListProductWithSingleA", + "TextListProductWithSingleB", + "TextListProductWithSingleBoth" + ], + { + "title_aux": "Comfy UI Text List Product" + } + ], "https://github.com/osi1880vr/prompt_quill_comfyui": [ [ "PromptQuillGenerate", @@ -12373,6 +12970,15 @@ "title_aux": "Image Resize for ComfyUI" } ], + "https://github.com/pamparamm/ComfyUI-vectorscope-cc": [ + [ + "NormalizeLatent", + "VectorscopeCC" + ], + { + "title_aux": "ComfyUI Vectorscope CC" + } + ], "https://github.com/pamparamm/sd-perturbed-attention": [ [ "PerturbedAttention" @@ -12530,6 +13136,19 @@ "title_aux": "ComfyUI-OmDet" } ], + "https://github.com/prodogape/Comfyui-Yolov8-JSON": [ + [ + "Apply Yolov8 Model", + "Apply Yolov8 Model Seg", + "Draw Labelme Json", + "Load Yolov8 Model", + "Load Yolov8 Model From Path", + "Save Labelme Json" + ], + { + "title_aux": "Comfyui-Yolov8-JSON" + } + ], "https://github.com/pythongosssss/ComfyUI-Custom-Scripts": [ [ "CheckpointLoader|pysssss", @@ -12569,6 +13188,9 @@ ], "https://github.com/ramyma/A8R8_ComfyUI_nodes": [ [ + "AttentionCouple", + "AttentionCoupleRegion", + "AttentionCoupleRegions", "Base64ImageInput", "Base64ImageOutput" ], @@ -12683,6 +13305,23 @@ "title_aux": "rgthree's ComfyUI Nodes" } ], + "https://github.com/rhdunn/comfyui-bus-plugin": [ + [ + "ComfyBus.CLIPEncodedPromptBusNode", + "ComfyBus.CheckpointBusNode", + "ComfyBus.ImageBusNode", + "ComfyBus.ImageParameterBusNode", + "ComfyBus.ImageScaleToSideParameterBusNode", + "ComfyBus.ImageSizeBusNode", + "ComfyBus.LatentImageBusNode", + "ComfyBus.LatentImageParameterBusNode", + "ComfyBus.PromptBusNode", + "ComfyBus.PromptSDXLBusNode" + ], + { + "title_aux": "comfyui-bus-plugin" + } + ], "https://github.com/richinsley/Comfy-LFO": [ [ "LFO_Pulse", @@ -13136,26 +13775,6 @@ "title_aux": "comfy-easy-grids" } ], - "https://github.com/siliconflow/onediff_comfy_nodes": [ - [ - "CompareModel", - "ModelGraphLoader", - "ModelGraphSaver", - "ModelSpeedup", - "ModuleDeepCacheSpeedup", - "OneDiffCheckpointLoaderSimple", - "OneDiffControlNetLoader", - "OneDiffDeepCacheCheckpointLoaderSimple", - "SVDSpeedup", - "ShowImageDiff", - "VaeGraphLoader", - "VaeGraphSaver", - "VaeSpeedup" - ], - { - "title_aux": "OneDiff Nodes" - } - ], "https://github.com/sipherxyz/comfyui-art-venture": [ [ "AV_AwsBedrockClaudeApi", @@ -13244,6 +13863,21 @@ "title_aux": "ComfyUI-Coziness" } ], + "https://github.com/slyt/comfyui-ollama-nodes": [ + [ + "BooleanToString", + "DownloadHuggingfaceModel", + "FloatToString", + "GenerateOllama", + "IntToString", + "ListModels", + "ListToString", + "PullModel" + ], + { + "title_aux": "comfyui-ollama-nodes" + } + ], "https://github.com/smagnetize/kb-comfyui-nodes": [ [ "SingleImageDataUrlLoader" @@ -13302,6 +13936,16 @@ "title_aux": "ComfyUI_Llama3_8B" } ], + "https://github.com/smthemex/ComfyUI_MS_Diffusion": [ + [ + "MS_Comic_Type", + "MSdiffusion_Model_Loader", + "MSdiffusion_Sampler" + ], + { + "title_aux": "ComfyUI_MS_Diffusion" + } + ], "https://github.com/smthemex/ComfyUI_ParlerTTS": [ [ "PromptToAudio" @@ -13329,12 +13973,9 @@ "https://github.com/smthemex/ComfyUI_Pops": [ [ "Imgae_To_Path", - "Pops_Controlnet_Sampler", - "Pops_Ipadapter_Sampler", - "Pops_Mean_Sampler", "Pops_Prior_Embedding", "Pops_Repo_Choice", - "Pops_Unet_Sampler" + "Pops_Sampler" ], { "title_aux": "ComfyUI_Pops" @@ -13351,16 +13992,26 @@ ], "https://github.com/smthemex/ComfyUI_StoryDiffusion": [ [ - "Character_Batch", "Comic_Type", "Pre_Translate_prompt", - "Storydiffusion_Img2Img", - "Storydiffusion_Text2Img" + "Storydiffusion_Model_Loader", + "Storydiffusion_Sampler" ], { "title_aux": "ComfyUI_StoryDiffusion" } ], + "https://github.com/smthemex/ComfyUI_Streamv2v_Plus": [ + [ + "Load_Stream", + "Text2IMG", + "Video2Video", + "WebCam2Video" + ], + { + "title_aux": "ComfyUI_Streamv2v_Plus" + } + ], "https://github.com/space-nuko/ComfyUI-Disco-Diffusion": [ [ "DiscoDiffusion_DiscoDiffusion", @@ -13390,6 +14041,17 @@ "title_aux": "nui suite" } ], + "https://github.com/spacepxl/ComfyUI-Florence-2": [ + [ + "Florence2", + "Florence2Postprocess", + "Florence2PostprocessAll", + "LoadFlorence2Model" + ], + { + "title_aux": "ComfyUI-Florence-2" + } + ], "https://github.com/spacepxl/ComfyUI-HQ-Image-Save": [ [ "LoadEXR", @@ -13429,6 +14091,7 @@ "ExposureAdjust", "FrequencyCombine", "FrequencySeparate", + "GameOfLife", "GuidedFilterAlpha", "GuidedFilterImage", "ImageConstant", @@ -13513,6 +14176,7 @@ "https://github.com/ssitu/ComfyUI_UltimateSDUpscale": [ [ "UltimateSDUpscale", + "UltimateSDUpscaleCustomSample", "UltimateSDUpscaleNoUpscale" ], { @@ -13778,13 +14442,13 @@ ], "https://github.com/theUpsider/ComfyUI-Logic": [ [ - "Bool", - "Compare", - "DebugPrint", - "Float", - "If ANY execute A else B", - "Int", - "String" + "Bool-\ud83d\udd2c", + "Compare-\ud83d\udd2c", + "DebugPrint-\ud83d\udd2c", + "Float-\ud83d\udd2c", + "If ANY return A else B-\ud83d\udd2c", + "Int-\ud83d\udd2c", + "String-\ud83d\udd2c" ], { "title_aux": "ComfyUI-Logic" @@ -13911,6 +14575,7 @@ "https://github.com/traugdor/ComfyUI-quadMoons-nodes": [ [ "quadmoonCLIPTextEncode", + "quadmoonChangeBackground", "quadmoonConvertBoolToString", "quadmoonConvertFloatToString", "quadmoonConvertIntToString", @@ -14006,22 +14671,6 @@ "title_aux": "Hakkun-ComfyUI-nodes" } ], - "https://github.com/turkyden/ComfyUI-Comic": [ - [ - "ImageToComic" - ], - { - "title_aux": "ComfyUI-Comic" - } - ], - "https://github.com/turkyden/ComfyUI-Sticker": [ - [ - "ImageToSticker" - ], - { - "title_aux": "ComfyUI-Sticker" - } - ], "https://github.com/tusharbhutt/Endless-Nodes": [ [ "ESS Aesthetic Scoring", @@ -14140,6 +14789,27 @@ "title_aux": "Simple Wildcard" } ], + "https://github.com/veighnsche/comfyui_gr85": [ + [ + "GR85_ContainsWord", + "GR85_ElementsConcatenator", + "GR85_ImageDimensionResizer", + "GR85_ImageSizer", + "GR85_InsertCharacter", + "GR85_LlmEnhancer", + "GR85_NextSeed", + "GR85_RandomAtmLocOutfit", + "GR85_RandomRatio", + "GR85_RandomTitleCharacter", + "GR85_RandomWildcardTagPicker", + "GR85_ShowText", + "GR85_StrSafe", + "GR85_TagInjector" + ], + { + "title_aux": "comfyui_gr85" + } + ], "https://github.com/victorchall/comfyui_webcamcapture": [ [ "WebcamCapture" @@ -14495,6 +15165,14 @@ "title_aux": "comfyui_auto_danbooru" } ], + "https://github.com/yiwangsimple/ComfyUI_GroqChat": [ + [ + "GroqChatNode" + ], + { + "title_aux": "comfy-groqchat" + } + ], "https://github.com/yolain/ComfyUI-Easy-Use": [ [ "dynamicThresholdingFull", @@ -14543,6 +15221,7 @@ "easy globalSeed", "easy hiresFix", "easy humanSegmentation", + "easy hunyuanDiTLoader", "easy icLightApply", "easy if", "easy imageBatchToImageList", @@ -14629,6 +15308,7 @@ "easy showLoaderSettingsNames", "easy showSpentTime", "easy showTensorShape", + "easy sliderControl", "easy stableDiffusion3API", "easy string", "easy styleAlignedBatchAlign", @@ -14798,6 +15478,25 @@ "title_aux": "ComfyUI Whisper" } ], + "https://github.com/yuvraj108c/ComfyUI-YoloNasPose-Tensorrt": [ + [ + "YoloNasPoseTensorrt" + ], + { + "title_aux": "ComfyUI YoloNasPose Tensorrt" + } + ], + "https://github.com/za-wa-n-go/ComfyUI_Zwng_Nodes": [ + [ + "ZwngLoadImagePathOrURL", + "ZwngPreviewImageAndMask", + "ZwngSimpleGoogleTranslater", + "ZwngSimplePhotoshopConnector" + ], + { + "title_aux": "ComfyUI_Zwng_Nodes" + } + ], "https://github.com/zcfrank1st/Comfyui-Toolbox": [ [ "PreviewJson", @@ -14835,6 +15534,15 @@ "title_aux": "Cute Comfy" } ], + "https://github.com/zeroxoxo/ComfyUI-Fast-Style-Transfer": [ + [ + "FastStyleTransfer", + "TrainFastStyleTransfer" + ], + { + "title_aux": "ComfyUI-Fast-Style-Transfer" + } + ], "https://github.com/zfkun/ComfyUI_zfkun": [ [ "ZFLoadImagePath", @@ -14849,6 +15557,7 @@ ], "https://github.com/zhangp365/ComfyUI-utils-nodes": [ [ + "CheckpointLoaderSimpleWithSwitch", "ColorCorrectOfUtils", "ConcatTextOfUtils", "ImageBatchOneOrMore", @@ -14911,6 +15620,15 @@ "title_aux": "EasyCaptureNode for ComfyUI" } ], + "https://github.com/zhulu111/ComfyUI_Bxb": [ + [ + "sdBxb", + "sdBxb_textInput" + ], + { + "title_aux": "ComfyUI_Bxb" + } + ], "https://github.com/zohac/ComfyUI_ZC_DrawShape": [ [ "ZcDrawShape" diff --git a/node_db/new/model-list.json b/node_db/new/model-list.json index 5796816d..f489f75a 100644 --- a/node_db/new/model-list.json +++ b/node_db/new/model-list.json @@ -1,5 +1,85 @@ { "models": [ + { + "name": "InstantX/SD3-Controlnet-Canny", + "type": "controlnet", + "base": "SD3", + "save_path": "controlnet/SD3/InstantX-Controlnet-Canny", + "description": "Controlnet SD3 Canny model.", + "reference": "https://huggingface.co/InstantX/SD3-Controlnet-Canny", + "filename": "diffusion_pytorch_model.safetensors", + "url": "https://huggingface.co/InstantX/SD3-Controlnet-Canny/resolve/main/diffusion_pytorch_model.safetensors", + "size": "1.19GB" + }, + { + "name": "InstantX/SD3-Controlnet-Pose", + "type": "controlnet", + "base": "SD3", + "save_path": "controlnet/SD3/InstantX-Controlnet-Pose", + "description": "Controlnet SD3 Pose model.", + "reference": "https://huggingface.co/InstantX/SD3-Controlnet-Pose", + "filename": "diffusion_pytorch_model.safetensors", + "url": "https://huggingface.co/InstantX/SD3-Controlnet-Pose/resolve/main/diffusion_pytorch_model.safetensors", + "size": "1.19GB" + }, + { + "name": "InstantX/SD3-Controlnet-Tile", + "type": "controlnet", + "base": "SD3", + "save_path": "controlnet/SD3/InstantX-Controlnet-Tile", + "description": "Controlnet SD3 Tile model.", + "reference": "https://huggingface.co/InstantX/SD3-Controlnet-Tile", + "filename": "diffusion_pytorch_model.safetensors", + "url": "https://huggingface.co/InstantX/SD3-Controlnet-Tile/resolve/main/diffusion_pytorch_model.safetensors", + "size": "1.19GB" + }, + + { + "name": "xinsir/ControlNet Depth SDXL, support zoe, midias", + "type": "controlnet", + "base": "SDXL", + "save_path": "controlnet/SDXL/controlnet-depth-sdxl-1.0", + "description": "Controlnet SDXL Depth model.", + "reference": "https://huggingface.co/xinsir/controlnet-depth-sdxl-1.0", + "filename": "diffusion_pytorch_model.safetensors", + "url": "https://huggingface.co/xinsir/controlnet-depth-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", + "size": "2.50GB" + }, + { + "name": "xinsir/ControlNet Tile SDXL", + "type": "controlnet", + "base": "SDXL", + "save_path": "controlnet/SDXL/controlnet-tile-sdxl-1.0", + "description": "Controlnet SDXL Tile model.", + "reference": "https://huggingface.co/xinsir/controlnet-tile-sdxl-1.0", + "filename": "diffusion_pytorch_model.safetensors", + "url": "https://huggingface.co/xinsir/controlnet-tile-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", + "size": "2.50GB" + }, + + { + "name": "google-t5/t5-base", + "type": "clip", + "base": "t5-base", + "save_path": "clip/t5-base", + "description": "T5 Base: Text-To-Text Transfer Transformer. This model can be loaded via CLIPLoader for Stable Audio workflow.", + "reference": "https://huggingface.co/google-t5/t5-base", + "filename": "model.safetensors", + "url": "https://huggingface.co/google-t5/t5-base/resolve/main/model.safetensors", + "size": "892MB" + }, + + { + "name": "PixArt-Sigma-XL-2-1024-MS.pth", + "type": "checkpoint", + "base": "pixart-sigma", + "save_path": "checkpoints/PixArt-Sigma", + "description": "PixArt-Sigma Checkpoint model", + "reference": "https://huggingface.co/PixArt-alpha/PixArt-Sigma/tree/main", + "filename": "PixArt-Sigma-XL-2-1024-MS.pth", + "url": "https://huggingface.co/PixArt-alpha/PixArt-Sigma/resolve/main/PixArt-Sigma-XL-2-1024-MS.pth", + "size": "2.47GB" + }, { "name": "TAESD3 Decoder", "type": "TAESD", @@ -8,7 +88,8 @@ "description": "(SD3 Verison) To view the preview in high quality while running samples in ComfyUI, you will need this model.", "reference": "https://github.com/madebyollin/taesd", "filename": "taesd3_decoder.pth", - "url": "https://github.com/madebyollin/taesd/raw/main/taesd3_decoder.pth" + "url": "https://github.com/madebyollin/taesd/raw/main/taesd3_decoder.pth", + "size": "4.94MB" }, { "name": "TAESD3 Encoder", @@ -18,7 +99,8 @@ "description": "(SD3 Verison) To view the preview in high quality while running samples in ComfyUI, you will need this model.", "reference": "https://github.com/madebyollin/taesd", "filename": "taesd3_encoder.pth", - "url": "https://github.com/madebyollin/taesd/raw/main/taesd3_encoder.pth" + "url": "https://github.com/madebyollin/taesd/raw/main/taesd3_encoder.pth", + "size": "4.94MB" }, { @@ -26,10 +108,11 @@ "type": "controlnet", "base": "SDXL", "save_path": "controlnet/SDXL", - "description": "[774MB] Controlnet SDXL Tile model realistic version.", + "description": "Controlnet SDXL Tile model realistic version.", "reference": "https://huggingface.co/TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic", "filename": "TTPLANET_Controlnet_Tile_realistic_v2_rank256.safetensors", - "url": "https://huggingface.co/TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic/resolve/main/TTPLANET_Controlnet_Tile_realistic_v2_rank256.safetensors" + "url": "https://huggingface.co/TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic/resolve/main/TTPLANET_Controlnet_Tile_realistic_v2_rank256.safetensors", + "size": "774.4MB" }, { @@ -37,20 +120,22 @@ "type": "depthanything", "base": "depthanything", "save_path": "depthanything", - "description": "[195MB] DepthAnythingV2 model", + "description": "DepthAnythingV2 model", "reference": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/tree/main", "filename": "depth_anything_v2_vitb_fp16.safetensors", - "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vitb_fp16.safetensors" + "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vitb_fp16.safetensors", + "size": "195.0MB" }, { "name": "kijai/DepthAnythingV2 (vitb/fp32)", "type": "depthanything", "base": "depthanything", "save_path": "depthanything", - "description": "[390MB] DepthAnythingV2 model", + "description": "DepthAnythingV2 model", "reference": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/tree/main", "filename": "depth_anything_v2_vitb_fp32.safetensors", - "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vitb_fp32.safetensors" + "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vitb_fp32.safetensors", + "size": "389.9MB" }, { "name": "kijai/DepthAnythingV2 (vitl/fp16)", @@ -60,7 +145,8 @@ "description": "[671MB] DepthAnythingV2 model", "reference": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/tree/main", "filename": "depth_anything_v2_vitl_fp16.safetensors", - "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vitl_fp16.safetensors" + "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vitl_fp16.safetensors", + "size": "670.7MB" }, { "name": "kijai/DepthAnythingV2 (vitl/fp32)", @@ -70,7 +156,8 @@ "description": "[195MB] DepthAnythingV2 model", "reference": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/tree/main", "filename": "depth_anything_v2_vitl_fp32.safetensors", - "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vitl_fp32.safetensors" + "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vitl_fp32.safetensors", + "size": "1.34GB" }, { "name": "kijai/DepthAnythingV2 (vits/fp16)", @@ -80,7 +167,8 @@ "description": "[49.6MB] DepthAnythingV2 model", "reference": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/tree/main", "filename": "depth_anything_v2_vits_fp16.safetensors", - "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vits_fp16.safetensors" + "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vits_fp16.safetensors", + "size": "49.6MB" }, { "name": "kijai/DepthAnythingV2 (vitb/fp32)", @@ -90,7 +178,8 @@ "description": "[99.2MB] DepthAnythingV2 model", "reference": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/tree/main", "filename": "depth_anything_v2_vits_fp32.safetensors", - "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vits_fp32.safetensors" + "url": "https://huggingface.co/Kijai/DepthAnythingV2-safetensors/resolve/main/depth_anything_v2_vits_fp32.safetensors", + "size": "99.2MB" }, { @@ -101,7 +190,8 @@ "description": "[2.5GB] AnyTest Controlnet. A model for style transfer.", "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", "filename": "CN-anytest_v4-marged.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged.safetensors" + "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged.safetensors", + "size": "2.50GB" }, { "name": "CN-anytest_v4-marged_am_dim256.safetensors (dim256/Animagine)", @@ -111,7 +201,8 @@ "description": "[774MB] AnyTest Controlnet Lora (dim256) for Animagine. A model for style transfer.", "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", "filename": "CN-anytest_v4-marged_am_dim256.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged_am_dim256.safetensors" + "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged_am_dim256.safetensors", + "size": "774.4MB" }, { "name": "CN-anytest_v4-marged_am_dim128.safetensors (dim128/Animagine)", @@ -121,7 +212,8 @@ "description": "[396MB] AnyTest Controlnet Lora (dim128) for Animagine. A model for style transfer.", "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", "filename": "CN-anytest_v4-marged_am_dim128.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged_am_dim128.safetensors" + "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged_am_dim128.safetensors", + "size": "395.7MB" }, { "name": "CN-anytest_v4-marged_pn_dim256.safetensors (dim256/Pony)", @@ -131,7 +223,8 @@ "description": "[774MB] AnyTest Controlnet Lora (dim256) for Pony. A model for style transfer.", "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", "filename": "CN-anytest_v4-marged_pn_dim256.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged_pn_dim256.safetensors" + "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged_pn_dim256.safetensors", + "size": "774.4MB" }, { "name": "CN-anytest_v4-marged_pn_dim128.safetensors (dim128/Pony)", @@ -141,9 +234,9 @@ "description": "[396MB] AnyTest Controlnet Lora (dim128) for Pony. A model for style transfer.", "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", "filename": "CN-anytest_v4-marged_pn_dim128.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged_pn_dim128.safetensors" + "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v4-marged_pn_dim128.safetensors", + "size": "395.7MB" }, - { "name": "CN-anytest_v3-50000_fp16.safetensors (fp16)", "type": "controlnet", @@ -152,7 +245,8 @@ "description": "[2.5GB] AnyTest Controlnet. A strict control model.", "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", "filename": "CN-anytest_v3-50000_fp16.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_fp16.safetensors" + "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_fp16.safetensors", + "size": "2.50GB" }, { "name": "CN-anytest_v3-50000_am_dim256.safetensors (dim256/Animagine)", @@ -162,7 +256,8 @@ "description": "[774MB] AnyTest Controlnet Lora (dim256) for Animagine. A strict control model.", "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", "filename": "CN-anytest_v3-50000_am_dim256.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_am_dim256.safetensors" + "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_am_dim256.safetensors", + "size": "774.4MB" }, { "name": "CN-anytest_v3-50000_am_dim128.safetensors (dim128/Animagine)", @@ -172,7 +267,8 @@ "description": "[396MB] AnyTest Controlnet Lora (dim128) for Animagine. A strict control model.", "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", "filename": "CN-anytest_v3-50000_am_dim128.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_am_dim128.safetensors" + "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_am_dim128.safetensors", + "size": "395.7MB" }, { "name": "CN-anytest_v3-50000_pn_dim256.safetensors (dim256/Pony)", @@ -182,7 +278,8 @@ "description": "[774MB] AnyTest Controlnet Lora (dim256) for Pony. A strict control model.", "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", "filename": "CN-anytest_v3-50000_pn_dim256.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_pn_dim256.safetensors" + "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_pn_dim256.safetensors", + "size": "774.4MB" }, { "name": "CN-anytest_v3-50000_pn_dim128.safetensors (dim128/Pony)", @@ -192,7 +289,8 @@ "description": "[396MB] AnyTest Controlnet Lora (dim128) for Pony. A strict control model.", "reference": "https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main", "filename": "CN-anytest_v3-50000_pn_dim128.safetensors", - "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_pn_dim128.safetensors" + "url": "https://huggingface.co/2vXpSwA7/iroiro-lora/resolve/main/test_controlnet2/CN-anytest_v3-50000_pn_dim128.safetensors", + "size": "395.7MB" }, { @@ -203,7 +301,8 @@ "description": "[5.25GB] ToonCrafter checkpoint model for ComfyUI-DynamiCrafterWrapper", "reference": "https://huggingface.co/Kijai/DynamiCrafter_pruned", "filename": "tooncrafter_512_interp-fp16.safetensors", - "url": "https://huggingface.co/Kijai/DynamiCrafter_pruned/resolve/main/tooncrafter_512_interp-fp16.safetensors" + "url": "https://huggingface.co/Kijai/DynamiCrafter_pruned/resolve/main/tooncrafter_512_interp-fp16.safetensors", + "size": "5.25GB" }, { @@ -214,7 +313,8 @@ "description": "[2.5GB] Controlnet SDXL Scribble model.", "reference": "https://huggingface.co/xinsir/controlnet-scribble-sdxl-1.0", "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/xinsir/controlnet-scribble-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors" + "url": "https://huggingface.co/xinsir/controlnet-scribble-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", + "size": "2.50GB" }, { "name": "xinsir/Controlnet-Canny-Sdxl-1.0 (V2)", @@ -224,7 +324,8 @@ "description": "[2.5GB] Controlnet SDXL Canny model.", "reference": "https://huggingface.co/xinsir/controlnet-canny-sdxl-1.0", "filename": "diffusion_pytorch_model_V2.safetensors", - "url": "https://huggingface.co/xinsir/controlnet-canny-sdxl-1.0/resolve/main/diffusion_pytorch_model_V2.safetensors" + "url": "https://huggingface.co/xinsir/controlnet-canny-sdxl-1.0/resolve/main/diffusion_pytorch_model_V2.safetensors", + "size": "2.50GB" }, { "name": "xinsir/Controlnet-Openpose-Sdxl-1.0", @@ -234,7 +335,8 @@ "description": "[2.5GB] Controlnet SDXL Openpose model.", "reference": "https://huggingface.co/xinsir/controlnet-openpose-sdxl-1.0", "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/xinsir/controlnet-openpose-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors" + "url": "https://huggingface.co/xinsir/controlnet-openpose-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors", + "size": "2.50GB" }, { "name": "xinsir/Controlnet-Openpose-Sdxl-1.0 (Ver. twins)", @@ -244,7 +346,8 @@ "description": "[2.5GB] Controlnet SDXL Openpose model. (Ver. twins)", "reference": "https://huggingface.co/xinsir/controlnet-openpose-sdxl-1.0", "filename": "diffusion_pytorch_model_twins.safetensors", - "url": "https://huggingface.co/xinsir/controlnet-openpose-sdxl-1.0/resolve/main/diffusion_pytorch_model_twins.safetensors" + "url": "https://huggingface.co/xinsir/controlnet-openpose-sdxl-1.0/resolve/main/diffusion_pytorch_model_twins.safetensors", + "size": "2.50GB" }, { "name": "xinsir/Controlnet-Scribble-Sdxl-1.0-Anime", @@ -254,7 +357,8 @@ "description": "[2.5GB] Controlnet SDXL Scribble model. (Ver. anime)", "reference": "https://huggingface.co/xinsir/anime-painter", "filename": "diffusion_pytorch_model.safetensors", - "url": "https://huggingface.co/xinsir/anime-painter/resolve/main/diffusion_pytorch_model.safetensors" + "url": "https://huggingface.co/xinsir/anime-painter/resolve/main/diffusion_pytorch_model.safetensors", + "size": "2.50GB" }, { @@ -265,9 +369,43 @@ "description": "[10.5GB] ToonCrafter checkpoint model for ComfyUI-ToonCrafter", "reference": "https://huggingface.co/Doubiiu/ToonCrafter/tree/main", "filename": "model.ckpt", - "url": "https://huggingface.co/Doubiiu/ToonCrafter/resolve/main/model.ckpt" + "url": "https://huggingface.co/Doubiiu/ToonCrafter/resolve/main/model.ckpt", + "size": "10.5GB" }, + { + "name": "ViperYX/RGT_x2.pth", + "type": "RGT", + "base": "RGT", + "save_path": "RGT/RGT", + "description": "[180MB] RGT x2 upscale model for ComfyUI-RGT", + "reference": "https://huggingface.co/ViperYX/RGT/tree/main", + "filename": "RGT_x2.pth", + "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT/RGT_x2.pth", + "size": "179.8MB" + }, + { + "name": "ViperYX/RGT_x3.pth", + "type": "RGT", + "base": "RGT", + "save_path": "RGT/RGT", + "description": "[180MB] RGT x3 upscale model for ComfyUI-RGT", + "reference": "https://huggingface.co/ViperYX/RGT/tree/main", + "filename": "RGT_x3.pth", + "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT/RGT_x3.pth", + "size": "180.5MB" + }, + { + "name": "ViperYX/RGT_x4.pth", + "type": "RGT", + "base": "RGT", + "save_path": "RGT/RGT", + "description": "[180MB] RGT_S x4 upscale model for ComfyUI-RGT", + "reference": "https://huggingface.co/ViperYX/RGT/tree/main", + "filename": "RGT_x4.pth", + "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT/RGT_x4.pth", + "size": "180.4MB" + }, { "name": "ViperYX/RGT_S_x2.pth", "type": "RGT", @@ -276,7 +414,8 @@ "description": "[135MB] RGT_S x2 upscale model for ComfyUI-RGT", "reference": "https://huggingface.co/ViperYX/RGT/tree/main", "filename": "RGT_S_x2.pth", - "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT_S/RGT_S_x2.pth" + "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT_S/RGT_S_x2.pth", + "size": "135.4MB" }, { "name": "ViperYX/RGT_S_x3.pth", @@ -286,7 +425,8 @@ "description": "[136MB] RGT_S x3 upscale model for ComfyUI-RGT", "reference": "https://huggingface.co/ViperYX/RGT/tree/main", "filename": "RGT_S_x3.pth", - "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT_S/RGT_S_x3.pth" + "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT_S/RGT_S_x3.pth", + "size": "136.1MB" }, { "name": "ViperYX/RGT_S_x4.pth", @@ -296,7 +436,8 @@ "description": "[136MB] RGT_S x4 upscale model for ComfyUI-RGT", "reference": "https://huggingface.co/ViperYX/RGT/tree/main", "filename": "RGT_S_x4.pth", - "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT_S/RGT_S_x4.pth" + "url": "https://huggingface.co/ViperYX/RGT/resolve/main/RGT_S/RGT_S_x4.pth", + "size": "136.0MB" }, { @@ -307,7 +448,8 @@ "description": "[2.5GB] Controlnet SDXL Tile model realistic version.", "reference": "https://huggingface.co/TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic", "filename": "TTPLANET_Controlnet_Tile_realistic_v2_fp16.safetensors", - "url": "https://huggingface.co/TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic/resolve/main/TTPLANET_Controlnet_Tile_realistic_v2_fp16.safetensors" + "url": "https://huggingface.co/TTPlanet/TTPLanet_SDXL_Controlnet_Tile_Realistic/resolve/main/TTPLANET_Controlnet_Tile_realistic_v2_fp16.safetensors", + "size": "2.50GB" }, { @@ -318,7 +460,8 @@ "description": "CustomNet pretrained model for ComfyUI_CustomNet", "reference": "https://huggingface.co/TencentARC/CustomNet/tree/main", "filename": "customnet_v1.pt", - "url": "https://huggingface.co/TencentARC/CustomNet/resolve/main/customnet_v1.pt" + "url": "https://huggingface.co/TencentARC/CustomNet/resolve/main/customnet_v1.pt", + "size": "5.71GB" }, { @@ -329,7 +472,8 @@ "description": "ID-Animator checkpoint", "reference": "https://huggingface.co/spaces/ID-Animator/ID-Animator", "filename": "animator.ckpt", - "url": "https://huggingface.co/spaces/ID-Animator/ID-Animator/resolve/main/animator.ckpt" + "url": "https://huggingface.co/spaces/ID-Animator/ID-Animator/resolve/main/animator.ckpt", + "size": "247.3MB" }, { "name": "ID-Animator/mm_sd_v15_v2.ckpt", @@ -339,7 +483,8 @@ "description": "AnimateDiff checkpoint for ID-Animator", "reference": "https://huggingface.co/spaces/ID-Animator/ID-Animator", "filename": "mm_sd_v15_v2.ckpt", - "url": "https://huggingface.co/spaces/ID-Animator/ID-Animator/resolve/main/mm_sd_v15_v2.ckpt" + "url": "https://huggingface.co/spaces/ID-Animator/ID-Animator/resolve/main/mm_sd_v15_v2.ckpt", + "size": "1.82GB" }, { "name": "ID-Animator/image_encoder", @@ -349,7 +494,8 @@ "description": "CLIP Image encoder for ID-Animator", "reference": "https://huggingface.co/spaces/ID-Animator/ID-Animator", "filename": "model.safetensors", - "url": "https://huggingface.co/spaces/ID-Animator/ID-Animator/resolve/main/image_encoder/model.safetensors" + "url": "https://huggingface.co/spaces/ID-Animator/ID-Animator/resolve/main/image_encoder/model.safetensors", + "size": "2.53GB" }, { @@ -360,7 +506,8 @@ "description": "The default relighting model, conditioned on text and foreground", "reference": "https://huggingface.co/lllyasviel/ic-light", "filename": "iclight_sd15_fc.safetensors", - "url": "https://huggingface.co/lllyasviel/ic-light/resolve/main/iclight_sd15_fc.safetensors" + "url": "https://huggingface.co/lllyasviel/ic-light/resolve/main/iclight_sd15_fc.safetensors", + "size": "1.72GB" }, { "name": "IC-Light/fbc", @@ -370,7 +517,8 @@ "description": "Relighting model conditioned with text, foreground, and background", "reference": "https://huggingface.co/lllyasviel/ic-light", "filename": "iclight_sd15_fbc.safetensors", - "url": "https://huggingface.co/lllyasviel/ic-light/resolve/main/iclight_sd15_fbc.safetensors" + "url": "https://huggingface.co/lllyasviel/ic-light/resolve/main/iclight_sd15_fbc.safetensors", + "size": "1.72GB" }, { "name": "IC-Light/fcon", @@ -380,7 +528,8 @@ "description": "Same as iclight_sd15_fc.safetensors, but trained with offset noise", "reference": "https://huggingface.co/lllyasviel/ic-light", "filename": "iclight_sd15_fcon.safetensors", - "url": "https://huggingface.co/lllyasviel/ic-light/resolve/main/iclight_sd15_fcon.safetensors" + "url": "https://huggingface.co/lllyasviel/ic-light/resolve/main/iclight_sd15_fcon.safetensors", + "size": "1.72GB" }, { @@ -391,7 +540,8 @@ "description": "MonsterMMORPG insightface model for cubiq/InstantID", "reference": "https://huggingface.co/MonsterMMORPG/tools/tree/main", "filename": "antelopev2.zip", - "url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/antelopev2.zip" + "url": "https://huggingface.co/MonsterMMORPG/tools/resolve/main/antelopev2.zip", + "size": "360.7MB" }, { "name": "InstantID/ip-adapter", @@ -543,139 +693,6 @@ "reference": "https://huggingface.co/monster-labs/control_v1p_sdxl_qrcode_monster", "filename": "control_v1p_sdxl_qrcode_monster.safetensors", "url": "https://huggingface.co/monster-labs/control_v1p_sdxl_qrcode_monster/resolve/main/diffusion_pytorch_model.safetensors" - }, - { - "name": "DynamiCrafter 1024 bf16 safetensors", - "type": "checkpoints", - "base": "DynamiCrafter", - "save_path": "checkpoints/dynamicrafter", - "description": "DynamiCrafter image2video model 1024x575", - "reference": "https://huggingface.co/Kijai/DynamiCrafter_pruned/", - "filename": "dynamicrafter_1024_v1_bf16.safetensors", - "url": "https://huggingface.co/Kijai/DynamiCrafter_pruned/resolve/main/dynamicrafter_1024_v1_bf16.safetensors" - }, - { - "name": "DynamiCrafter 512 interpolation bf16 safetensors", - "type": "checkpoints", - "base": "DynamiCrafter", - "save_path": "checkpoints/dynamicrafter", - "description": "DynamiCrafter image2video interpolation model 512", - "reference": "https://huggingface.co/Kijai/DynamiCrafter_pruned/", - "filename": "dynamicrafter_512_interp_v1_bf16.safetensors", - "url": "https://huggingface.co/Kijai/DynamiCrafter_pruned/resolve/main/dynamicrafter_512_interp_v1_bf16.safetensors" - }, - { - "name": "MobileSAM", - "type": "sam", - "base": "SAM", - "save_path": "sams", - "description": "MobileSAM", - "reference": "https://github.com/ChaoningZhang/MobileSAM/", - "filename": "mobile_sam.pt", - "url": "https://github.com/ChaoningZhang/MobileSAM/blob/master/weights/mobile_sam.pt" - }, - - { - "name": "BLIP ImageCaption (COCO) w/ ViT-B and CapFilt-L", - "type": "BLIP_MODEL", - "base": "blip_model", - "save_path": "blip", - "description": "BLIP ImageCaption (COCO) w/ ViT-B and CapFilt-L", - "reference": "https://github.com/salesforce/BLIP", - "filename": "model_base_capfilt_large.pth", - "url": "https://storage.googleapis.com/sfr-vision-language-research/BLIP/models/model_base_capfilt_large.pth" - }, - { - "name": "GroundingDINO SwinT OGC - Model", - "type": "GroundingDINO", - "base": "DINO", - "save_path": "groundingdino", - "description": "GroundingDINO SwinT OGC Model", - "reference": "https://huggingface.co/ShilongLiu/GroundingDINO", - "filename": "groundingdino_swint_ogc.pth", - "url": "https://huggingface.co/ShilongLiu/GroundingDINO/resolve/main/groundingdino_swint_ogc.pth" - }, - { - "name": "GroundingDINO SwinT OGC - CFG File", - "type": "GroundingDINO", - "base": "DINO", - "save_path": "groundingdino", - "description": "GroundingDINO SwinT OGC CFG File", - "reference": "https://huggingface.co/ShilongLiu/GroundingDINO/resolve/main/GroundingDINO_SwinT_OGC.cfg.py", - "filename": "GroundingDINO_SwinT_OGC.cfg.py", - "url": "https://huggingface.co/ShilongLiu/GroundingDINO/raw/main/GroundingDINO_SwinT_OGC.cfg.py" - }, - { - "name": "SDXL Lightning LoRA (2step)", - "type": "lora", - "base": "SDXL", - "save_path": "loras/SDXL-Lightning", - "description": "SDXL Lightning LoRA (2step)", - "reference": "https://huggingface.co/ByteDance/SDXL-Lightning", - "filename": "sdxl_lightning_2step_lora.safetensors", - "url": "https://huggingface.co/ByteDance/SDXL-Lightning/resolve/main/sdxl_lightning_2step_lora.safetensors" - }, - { - "name": "SDXL Lightning LoRA (4step)", - "type": "lora", - "base": "SDXL", - "save_path": "loras/SDXL-Lightning", - "description": "SDXL Lightning LoRA (4step)", - "reference": "https://huggingface.co/ByteDance/SDXL-Lightning", - "filename": "sdxl_lightning_4step_lora.safetensors", - "url": "https://huggingface.co/ByteDance/SDXL-Lightning/resolve/main/sdxl_lightning_4step_lora.safetensors" - }, - { - "name": "SDXL Lightning LoRA (8step)", - "type": "lora", - "base": "SDXL", - "save_path": "loras/SDXL-Lightning", - "description": "SDXL Lightning LoRA (8tep)", - "reference": "https://huggingface.co/ByteDance/SDXL-Lightning", - "filename": "sdxl_lightning_8step_lora.safetensors", - "url": "https://huggingface.co/ByteDance/SDXL-Lightning/resolve/main/sdxl_lightning_8step_lora.safetensors" - }, - - { - "name": "shape_predictor_68_face_landmarks.dat [Face Analysis]", - "type": "Shape Predictor", - "base": "DLIB", - "save_path": "custom_nodes/ComfyUI_FaceAnalysis/dlib", - "description": "To use the Face Analysis for ComfyUI custom node, installation of this model is needed.", - "reference": "https://huggingface.co/matt3ounstable/dlib_predictor_recognition/tree/main", - "filename": "shape_predictor_68_face_landmarks.dat", - "url": "https://huggingface.co/matt3ounstable/dlib_predictor_recognition/resolve/main/shape_predictor_68_face_landmarks.dat" - }, - { - "name": "dlib_face_recognition_resnet_model_v1.dat [Face Analysis]", - "type": "Face Recognition", - "base": "DLIB", - "save_path": "custom_nodes/ComfyUI_FaceAnalysis/dlib", - "description": "To use the Face Analysis for ComfyUI custom node, installation of this model is needed.", - "reference": "https://huggingface.co/matt3ounstable/dlib_predictor_recognition/tree/main", - "filename": "dlib_face_recognition_resnet_model_v1.dat", - "url": "https://huggingface.co/matt3ounstable/dlib_predictor_recognition/resolve/main/dlib_face_recognition_resnet_model_v1.dat" - }, - - { - "name": "efficient_sam_s_cpu.jit [ComfyUI-YoloWorld-EfficientSAM]", - "type": "efficient_sam", - "base": "efficient_sam", - "save_path": "custom_nodes/ComfyUI-YoloWorld-EfficientSAM", - "description": "Install efficient_sam_s_cpu.jit into ComfyUI-YoloWorld-EfficientSAM", - "reference": "https://huggingface.co/camenduru/YoloWorld-EfficientSAM/tree/main", - "filename": "efficient_sam_s_cpu.jit", - "url": "https://huggingface.co/camenduru/YoloWorld-EfficientSAM/resolve/main/efficient_sam_s_cpu.jit" - }, - { - "name": "efficient_sam_s_gpu.jit [ComfyUI-YoloWorld-EfficientSAM]", - "type": "efficient_sam", - "base": "efficient_sam", - "save_path": "custom_nodes/ComfyUI-YoloWorld-EfficientSAM", - "description": "Install efficient_sam_s_gpu.jit into ComfyUI-YoloWorld-EfficientSAM", - "reference": "https://huggingface.co/camenduru/YoloWorld-EfficientSAM/tree/main", - "filename": "efficient_sam_s_gpu.jit", - "url": "https://huggingface.co/camenduru/YoloWorld-EfficientSAM/resolve/main/efficient_sam_s_gpu.jit" } ] } diff --git a/node_db/tutorial/custom-node-list.json b/node_db/tutorial/custom-node-list.json index 096e0b5e..62316358 100644 --- a/node_db/tutorial/custom-node-list.json +++ b/node_db/tutorial/custom-node-list.json @@ -209,6 +209,26 @@ ], "install_type": "git-clone", "description": "Nodes:Signature|Ye, CheckpointLoader|Ye, PrintHelloWorld|Ye." + }, + { + "author": "BoosterCore", + "title": "ComfyUI-BC-Experimental", + "reference": "https://github.com/BoosterCore/ComfyUI-BC-Experimental", + "files": [ + "https://github.com/BoosterCore/ComfyUI-BC-Experimental" + ], + "install_type": "git-clone", + "description": "Nodes:ClipTextEncodeBC, SaveAnyText, SimpleText" + }, + { + "author": "sonyeon-sj", + "title": "ComfyUI-easy_ImageSize_Selecter", + "reference": "https://github.com/sonyeon-sj/ComfyUI-easy_ImageSize_Selecter", + "files": [ + "https://github.com/sonyeon-sj/ComfyUI-easy_ImageSize_Selecter" + ], + "install_type": "git-clone", + "description": "Custom node for ComfyUI Select the image size from the preset and select Vertical and Horizontal to output Width and Height." } ] } \ No newline at end of file diff --git a/prestartup_script.py b/prestartup_script.py index 47945f33..bfc31c04 100644 --- a/prestartup_script.py +++ b/prestartup_script.py @@ -10,6 +10,7 @@ import platform import json import ast + glob_path = os.path.join(os.path.dirname(__file__), "glob") sys.path.append(glob_path) @@ -59,6 +60,9 @@ def check_file_logging(): check_file_logging() +comfy_path = os.environ.get('COMFYUI_PATH') +if comfy_path is None: + comfy_path = os.path.abspath(sys.modules['__main__'].__file__) sys.__comfyui_manager_register_message_collapse = register_message_collapse sys.__comfyui_manager_is_import_failed_extension = is_import_failed_extension @@ -137,8 +141,8 @@ def handle_stream(stream, prefix): print(prefix, msg, end="") -def process_wrap(cmd_str, cwd_path, handler=None): - process = subprocess.Popen(cmd_str, cwd=cwd_path, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, bufsize=1) +def process_wrap(cmd_str, cwd_path, handler=None, env=None): + process = subprocess.Popen(cmd_str, cwd=cwd_path, env=env, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, bufsize=1) if handler is None: handler = handle_stream @@ -333,6 +337,7 @@ print("** ComfyUI startup time:", datetime.datetime.now()) print("** Platform:", platform.system()) print("** Python version:", sys.version) print("** Python executable:", sys.executable) +print("** ComfyUI Path:", comfy_path) if enable_file_logging: print("** Log path:", os.path.abspath('comfyui.log')) @@ -475,7 +480,10 @@ if os.path.exists(restore_snapshot_path): print(f"[ComfyUI-Manager] Restore snapshot.") cmd_str = [sys.executable, git_script_path, '--apply-snapshot', restore_snapshot_path] - exit_code = process_wrap(cmd_str, custom_nodes_path, handler=msg_capture) + + new_env = os.environ.copy() + new_env["COMFYUI_PATH"] = comfy_path + exit_code = process_wrap(cmd_str, custom_nodes_path, handler=msg_capture, env=new_env) repository_name = '' for url in cloned_repos: @@ -502,7 +510,10 @@ if os.path.exists(restore_snapshot_path): processed_install.add(f'{repo_path}/install.py') install_cmd = [sys.executable, install_script_path] print(f">>> {install_cmd} / {repo_path}") - this_exit_code += process_wrap(install_cmd, repo_path) + + new_env = os.environ.copy() + new_env["COMFYUI_PATH"] = comfy_path + this_exit_code += process_wrap(install_cmd, repo_path, env=new_env) if this_exit_code != 0: print(f"[ComfyUI-Manager] Restoring '{repository_name}' is failed.") @@ -542,7 +553,10 @@ def execute_lazy_install_script(repo_path, executable): processed_install.add(f'{repo_path}/install.py') print(f"Install: install script for '{repo_path}'") install_cmd = [executable, "install.py"] - process_wrap(install_cmd, repo_path) + + new_env = os.environ.copy() + new_env["COMFYUI_PATH"] = comfy_path + process_wrap(install_cmd, repo_path, env=new_env) # Check if script_list_path exists @@ -576,7 +590,9 @@ if os.path.exists(script_list_path): print(f"\n## ComfyUI-Manager: EXECUTE => {script[1:]}") print(f"\n## Execute install/(de)activation script for '{script[0]}'") - exit_code = process_wrap(script[1:], script[0]) + new_env = os.environ.copy() + new_env["COMFYUI_PATH"] = comfy_path + exit_code = process_wrap(script[1:], script[0], env=new_env) if exit_code != 0: print(f"install/(de)activation script failed: {script[0]}") diff --git a/pyproject.toml b/pyproject.toml index 4fa1734c..7adf76af 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "comfyui-manager" description = "ComfyUI-Manager provides features to install and manage custom nodes for ComfyUI, as well as various functionalities to assist with ComfyUI." -version = "2.38.2" +version = "2.43" license = "LICENSE" dependencies = ["GitPython", "PyGithub", "matrix-client==0.4.0", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions"]