From 093c3c5fbc5620034ff984aef554aefcd647c924 Mon Sep 17 00:00:00 2001 From: yolain Date: Thu, 22 Aug 2024 22:24:07 +0800 Subject: [PATCH] Fix some loop node bug --- py/logic.py | 17 ++++++++++++----- web_version/v2/assets/extensions-B7lGDrcJ.js | 1 - web_version/v2/assets/extensions-qfnDFtfW.js | 1 + web_version/v2/easyuse.js | 2 +- 4 files changed, 14 insertions(+), 7 deletions(-) delete mode 100644 web_version/v2/assets/extensions-B7lGDrcJ.js create mode 100644 web_version/v2/assets/extensions-qfnDFtfW.js diff --git a/py/logic.py b/py/logic.py index ec8c38b..8754d54 100644 --- a/py/logic.py +++ b/py/logic.py @@ -4,6 +4,7 @@ from .libs.utils import AlwaysEqualProxy, ByPassTypeTuple, cleanGPUUsedForce, compare_revision from .libs.cache import remove_cache import numpy as np +import re import json import torch import comfy.utils @@ -569,8 +570,8 @@ def INPUT_TYPES(cls): inputs["optional"]["initial_value%d" % i] = ("*",) return inputs - RETURN_TYPES = ByPassTypeTuple(tuple(["FLOW_CONTROL"] + ["*"] * MAX_FLOW_NUM)) - RETURN_NAMES = ByPassTypeTuple(tuple(["flow"] + ["value%d" % i for i in range(MAX_FLOW_NUM)])) + RETURN_TYPES = tuple(["FLOW_CONTROL"] + ["*"] * MAX_FLOW_NUM) + RETURN_NAMES = tuple(["flow"] + ["value%d" % i for i in range(MAX_FLOW_NUM)]) FUNCTION = "while_loop_open" CATEGORY = "EasyUse/Logic/While Loop" @@ -603,8 +604,8 @@ def INPUT_TYPES(cls): inputs["optional"]["initial_value%d" % i] = (AlwaysEqualProxy('*'),) return inputs - RETURN_TYPES = ByPassTypeTuple(tuple([AlwaysEqualProxy('*')] * MAX_FLOW_NUM)) - RETURN_NAMES = ByPassTypeTuple(tuple(["value%d" % i for i in range(MAX_FLOW_NUM)])) + RETURN_TYPES = tuple([AlwaysEqualProxy('*')] * MAX_FLOW_NUM) + RETURN_NAMES = tuple(["value%d" % i for i in range(MAX_FLOW_NUM)]) FUNCTION = "while_loop_close" CATEGORY = "EasyUse/Logic/While Loop" @@ -923,7 +924,13 @@ def batch(self, a, b): if a.shape[1:] != b.shape[1:]: b = comfy.utils.common_upscale(b.movedim(-1, 1), a.shape[2], a.shape[1], "bilinear", "center").movedim(1, -1) return (torch.cat((a, b), 0),) - elif isinstance(a, (str, float, int, list, dict, tuple)): + elif isinstance(a, (str, float, int)): + if isinstance(b, tuple): + return (b + (a,),) + return ((a, b),) + elif isinstance(b, (str, float, int)): + if isinstance(a, tuple): + return (a + (b,),) return ((a, b),) else: return (a + b,) diff --git a/web_version/v2/assets/extensions-B7lGDrcJ.js b/web_version/v2/assets/extensions-B7lGDrcJ.js deleted file mode 100644 index ec96e60..0000000 --- a/web_version/v2/assets/extensions-B7lGDrcJ.js +++ /dev/null @@ -1 +0,0 @@ -var e,t,n,s,o,i,a,l,r,d,c,u,p,h,m,g=Object.defineProperty,f=(e,t,n)=>((e,t,n)=>t in e?g(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n);import{d as y,h as _}from"./vendor-DT1J-jWa.js";import{c as v}from"./lodash-CZi7izHi.js";let w=(null==(t=null==(e=window.comfyAPI)?void 0:e.app)?void 0:t.app)||null,b=(null==(s=null==(n=window.comfyAPI)?void 0:n.api)?void 0:s.api)||null,L=(null==(i=null==(o=window.comfyAPI)?void 0:o.ui)?void 0:i.$el)||null,S=(null==(l=null==(a=window.comfyAPI)?void 0:a.dialog)?void 0:l.ComfyDialog)||null,E=(null==(d=null==(r=window.comfyAPI)?void 0:r.widgets)?void 0:d.ComfyWidgets)||null,C=(null==(u=null==(c=window.comfyAPI)?void 0:c.utils)?void 0:u.applyTextReplacements)||null,A=(null==(h=null==(p=window.comfyAPI)?void 0:p.groupNode)?void 0:h.GroupNodeConfig)||null;const k=(e,t=void 0)=>{var n,s;return e?null==(s=null==(n=null==w?void 0:w.ui)?void 0:n.settings)?void 0:s.getSettingValue(e,t):null};function I(e,t=null,n=void 0){try{let s=e?k(e,n):null;return void 0===s&&t&&(s=localStorage[e]),s}catch(s){return null}}function x(e,t=e=>{}){var n;const s=null==(n=w.ui.settings.settingsLookup)?void 0:n[e];s&&(s.onChange=e=>t(e))}async function N(e,t,n=null){var s,o;try{(null==(o=null==(s=null==w?void 0:w.ui)?void 0:s.settings)?void 0:o.setSettingValue)?w.ui.settings.setSettingValue(e,t):await b.storeSetting(e,t),n&&(localStorage[n]="object"==typeof t?JSON.stringify(t):t)}catch(i){}}function T(e){w.ui.settings.addSetting(e)}function O(e,t){if(e="number"==typeof e?e:e instanceof Date?e.getTime():parseInt(e),isNaN(e))return null;let n=new Date(e);(e=n.toString().split(/[\s\:]/g).slice(0,-2))[1]=["01","02","03","04","05","06","07","08","09","10","11","12"][n.getMonth()];let s={MM:1,dd:2,yyyy:3,hh:4,mm:5,ss:6};return t.replace(/([Mmdhs]|y{2})\1/g,(t=>e[s[t]]))}const D="comfyui-easyuse-",R="dark-theme",G="#236692",M={PIPE_LINE:"#7737AA",PIPE_LINE_SDXL:"#7737AA",INT:"#29699C",X_Y:"#38291f",XYPLOT:"#74DA5D",LORA_STACK:"#94dccd",CONTROL_NET_STACK:"#94dccd",FLOW_CONTROL:"#373780"},P=0x4000000000000,F=["loaders","latent","image","mask","sampling","_for_testing","advanced","utils","api"],U={ALWAYS:0,NEVER:2,BYPASS:4},B="easyuse_nodes_map",z=LGraphCanvas.node_colors.bgcolor,W={ColorPalette:{version:105,id:"obsidian",name:"Obsidian",colors:{node_slot:{CLIP:"#FFD500",CLIP_VISION:"#A8DADC",CLIP_VISION_OUTPUT:"#ad7452",CONDITIONING:"#FFA931",CONTROL_NET:"#6EE7B7",IMAGE:"#64B5F6",LATENT:"#FF9CF9",MASK:"#81C784",MODEL:"#B39DDB",STYLE_MODEL:"#C2FFAE",VAE:"#FF6E6E",TAESD:"#DCC274",PIPE_LINE:"#7737AA",PIPE_LINE_SDXL:"#7737AA",INT:"#29699C",X_Y:"#38291f",XYPLOT:"#74DA5D",LORA_STACK:"#94dccd",CONTROL_NET_STACK:"#94dccd"},litegraph_base:{BACKGROUND_IMAGE:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQBJREFUeNrs1rEKwjAUhlETUkj3vP9rdmr1Ysammk2w5wdxuLgcMHyptfawuZX4pJSWZTnfnu/lnIe/jNNxHHGNn//HNbbv+4dr6V+11uF527arU7+u63qfa/bnmh8sWLBgwYJlqRf8MEptXPBXJXa37BSl3ixYsGDBMliwFLyCV/DeLIMFCxYsWLBMwSt4Be/NggXLYMGCBUvBK3iNruC9WbBgwYJlsGApeAWv4L1ZBgsWLFiwYJmCV/AK3psFC5bBggULloJX8BpdwXuzYMGCBctgwVLwCl7Be7MMFixYsGDBsu8FH1FaSmExVfAxBa/gvVmwYMGCZbBg/W4vAQYA5tRF9QYlv/QAAAAASUVORK5CYII=",CLEAR_BACKGROUND_COLOR:"#222222",NODE_TITLE_COLOR:"#d4d4d8",NODE_SELECTED_TITLE_COLOR:"#ffffff",NODE_TEXT_SIZE:14,NODE_TEXT_COLOR:"#ffffff",NODE_SUBTEXT_SIZE:12,NODE_DEFAULT_COLOR:"#09090b",NODE_DEFAULT_BGCOLOR:"rgba(24,24,27,.9)",NODE_DEFAULT_BOXCOLOR:"rgba(255,255,255,.75)",NODE_DEFAULT_SHAPE:"box",NODE_BOX_OUTLINE_COLOR:G,DEFAULT_SHADOW_COLOR:"rgba(0,0,0,0)",DEFAULT_GROUP_FONT:24,WIDGET_BGCOLOR:"#242427",WIDGET_OUTLINE_COLOR:"#3f3f46",WIDGET_TEXT_COLOR:"#d4d4d8",WIDGET_SECONDARY_TEXT_COLOR:"#d4d4d8",LINK_COLOR:"#9A9",EVENT_LINK_COLOR:"#A86",CONNECTING_LINK_COLOR:"#AFA"},comfy_base:{"fg-color":"#fff","bg-color":"#09090b","comfy-menu-bg":"rgba(24,24,24,.9)","comfy-input-bg":"#262626","input-text":"#ddd","descrip-text":"#999","drag-text":"#ccc","error-text":"#ff4444","border-color":"#29292c","tr-even-bg-color":"rgba(28,28,28,.9)","tr-odd-bg-color":"rgba(19,19,19,.9)"}}},NODE_COLORS:{red:{color:"#af3535",bgcolor:z,groupcolor:"#A88"},brown:{color:"#38291f",bgcolor:z,groupcolor:"#b06634"},green:{color:"#346434",bgcolor:z,groupcolor:"#8A8"},blue:{color:"#1f1f48",bgcolor:z,groupcolor:"#88A"},pale_blue:{color:"#006691",bgcolor:z,groupcolor:"#3f789e"},cyan:{color:"#008181",bgcolor:z,groupcolor:"#8AA"},purple:{color:"#422342",bgcolor:z,groupcolor:"#a1309b"},yellow:{color:"#c09430",bgcolor:z,groupcolor:"#b58b2a"},black:{color:"rgba(0,0,0,.8)",bgcolor:z,groupcolor:"#444"}}};let j=JSON.parse(JSON.stringify(W));delete j.NODE_COLORS,j.ColorPalette.id="obsidian_dark",j.ColorPalette.name="Obsidian Dark",j.ColorPalette.colors.litegraph_base.BACKGROUND_IMAGE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGlmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4xLWMwMDEgNzkuMTQ2Mjg5OSwgMjAyMy8wNi8yNS0yMDowMTo1NSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI1LjEgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyMy0xMS0xM1QwMDoxODowMiswMTowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMTEtMTVUMDI6MDQ6NTkrMDE6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMTEtMTVUMDI6MDQ6NTkrMDE6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmIyYzRhNjA5LWJmYTctYTg0MC1iOGFlLTk3MzE2ZjM1ZGIyNyIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjk0ZmNlZGU4LTE1MTctZmQ0MC04ZGU3LWYzOTgxM2E3ODk5ZiIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjIzMWIxMGIwLWI0ZmItMDI0ZS1iMTJlLTMwNTMwM2NkMDdjOCI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjMxYjEwYjAtYjRmYi0wMjRlLWIxMmUtMzA1MzAzY2QwN2M4IiBzdEV2dDp3aGVuPSIyMDIzLTExLTEzVDAwOjE4OjAyKzAxOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjUuMSAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ4OWY1NzlmLTJkNjUtZWQ0Zi04OTg0LTA4NGE2MGE1ZTMzNSIgc3RFdnQ6d2hlbj0iMjAyMy0xMS0xNVQwMjowNDo1OSswMTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDI1LjEgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiMmM0YTYwOS1iZmE3LWE4NDAtYjhhZS05NzMxNmYzNWRiMjciIHN0RXZ0OndoZW49IjIwMjMtMTEtMTVUMDI6MDQ6NTkrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyNS4xIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4OTe6GAAAAx0lEQVR42u3WMQoAIQxFwRzJys77X8vSLiRgITif7bYbgrwYc/mKXyBoY4VVBgsWLFiwYFmOlTv+9jfDOjHmr8u6eVkGCxYsWLBgmc5S8ApewXvgYRksWLBgKXidpeBdloL3wMOCBctgwVLwCl7BuyyDBQsWLFiwTGcpeAWv4D3wsAwWLFiwFLzOUvAuS8F74GHBgmWwYCl4Ba/gXZbBggULFixYprMUvIJX8B54WAYLFixYCl5nKXiXpeA98LBgwTJYsGC9tg1o8f4TTtqzNQAAAABJRU5ErkJggg==",j.ColorPalette.colors.litegraph_base.CLEAR_BACKGROUND_COLOR="#09090b";const V=LGraphCanvas.node_colors.bgcolor,Y={ColorPalette:{id:"milk_white",name:"Milk White",colors:{node_slot:{CLIP:"#FFA726",CLIP_VISION:"#5C6BC0",CLIP_VISION_OUTPUT:"#8D6E63",CONDITIONING:"#EF5350",CONTROL_NET:"#66BB6A",IMAGE:"#42A5F5",LATENT:"#AB47BC",MASK:"#9CCC65",MODEL:"#7E57C2",STYLE_MODEL:"#D4E157",VAE:"#FF7043",PIPE_LINE:"#7737AA",PIPE_LINE_SDXL:"#7737AA",INT:"#29699C",X_Y:"#38291f",XYPLOT:"#74DA5D",LORA_STACK:"#94dccd",CONTROL_NET_STACK:"#94dccd"},litegraph_base:{BACKGROUND_IMAGE:"data:image/gif;base64,R0lGODlhZABkALMAAAAAAP///+vr6+rq6ujo6Ofn5+bm5uXl5d3d3f///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAABkAGQAAAT/UMhJq7046827HkcoHkYxjgZhnGG6si5LqnIM0/fL4qwwIMAg0CAsEovBIxKhRDaNy2GUOX0KfVFrssrNdpdaqTeKBX+dZ+jYvEaTf+y4W66mC8PUdrE879f9d2mBeoNLfH+IhYBbhIx2jkiHiomQlGKPl4uZe3CaeZifnnijgkESBqipqqusra6vsLGys62SlZO4t7qbuby7CLa+wqGWxL3Gv3jByMOkjc2lw8vOoNSi0czAncXW3Njdx9Pf48/Z4Kbbx+fQ5evZ4u3k1fKR6cn03vHlp7T9/v8A/8Gbp4+gwXoFryXMB2qgwoMMHyKEqA5fxX322FG8tzBcRnMW/zlulPbRncmQGidKjMjyYsOSKEF2FBlJQMCbOHP6c9iSZs+UnGYCdbnSo1CZI5F64kn0p1KnTH02nSoV3dGTV7FFHVqVq1dtWcMmVQZTbNGu72zqXMuW7danVL+6e4t1bEy6MeueBYLXrNO5Ze36jQtWsOG97wIj1vt3St/DjTEORss4nNq2mDP3e7w4r1bFkSET5hy6s2TRlD2/mSxXtSHQhCunXo26NevCpmvD/UU6tuullzULH76q92zdZG/Ltv1a+W+osI/nRmyc+fRi1Xdbh+68+0vv10dH3+77KD/i6IdnX669/frn5Zsjh4/2PXju8+8bzc9/6fj27LFnX11/+IUnXWl7BJfegm79FyB9JOl3oHgSklefgxAC+FmFGpqHIYcCfkhgfCohSKKJVo044YUMttggiBkmp6KFXw1oII24oYhjiDByaKOOHcp3Y5BD/njikSkO+eBREQAAOw==",CLEAR_BACKGROUND_COLOR:"lightgray",NODE_TITLE_COLOR:"#222",NODE_SELECTED_TITLE_COLOR:"#000",NODE_TEXT_SIZE:14,NODE_TEXT_COLOR:"#444",NODE_SUBTEXT_SIZE:12,NODE_DEFAULT_COLOR:"#F7F7F7",NODE_DEFAULT_BGCOLOR:"#F5F5F5",NODE_DEFAULT_BOXCOLOR:"#555",NODE_DEFAULT_SHAPE:"box",NODE_BOX_OUTLINE_COLOR:"#000",DEFAULT_SHADOW_COLOR:"rgba(0,0,0,0.1)",DEFAULT_GROUP_FONT:24,WIDGET_BGCOLOR:"#D4D4D4",WIDGET_OUTLINE_COLOR:"#999",WIDGET_TEXT_COLOR:"#222",WIDGET_SECONDARY_TEXT_COLOR:"#555",LINK_COLOR:"#9A9",EVENT_LINK_COLOR:"#FF9800",CONNECTING_LINK_COLOR:"#222"},comfy_base:{"fg-color":"#222","bg-color":"#DDD","comfy-menu-bg":"#F5F5F5","comfy-input-bg":"#C9C9C9","input-text":"#222","descrip-text":"#444","drag-text":"#555","error-text":"#F44336","border-color":"#bbb","tr-even-bg-color":"#f9f9f9","tr-odd-bg-color":"#fff","content-bg":"#e0e0e0","content-fg":"#222","content-hover-bg":"#adadad","content-hover-fg":"#222"}}},NODE_COLORS:{red:{color:"#af3535",bgcolor:V,groupcolor:"#A88"},brown:{color:"#38291f",bgcolor:V,groupcolor:"#b06634"},green:{color:"#346434",bgcolor:V,groupcolor:"#8A8"},blue:{color:"#1f1f48",bgcolor:V,groupcolor:"#88A"},pale_blue:{color:"#006691",bgcolor:V,groupcolor:"#3f789e"},cyan:{color:"#008181",bgcolor:V,groupcolor:"#8AA"},purple:{color:"#422342",bgcolor:V,groupcolor:"#a1309b"},yellow:{color:"#c09430",bgcolor:V,groupcolor:"#b58b2a"},black:{color:"rgba(0,0,0,.8)",bgcolor:V,groupcolor:"#444"}}},H={"Workflow created by":"工作流创建者","Watch more video content":"观看更多视频内容","Workflow Guide":"工作流指南","💎 View Checkpoint Info...":"💎 查看 Checkpoint 信息...","💎 View Lora Info...":"💎 查看 Lora 信息...","🔃 Reload Node":"🔃 刷新节点","Updated At:":"最近更新:","Created At:":"首次发布:","✏️ Edit":"✏️ 编辑","💾 Save":"💾 保存","No notes":"当前还没有备注内容","Saving Notes...":"正在保存备注...","Type your notes here":"在这里输入备注内容",ModelName:"模型名称","Models Required":"所需模型","Download Model":"下载模型","Source Url":"模型源地址",Notes:"备注",Type:"类型","Trained Words":"训练词",BaseModel:"基础算法",Details:"详情",Description:"描述",Download:"下载量",Source:"来源","Saving Preview...":"正在保存预览图...","Saving Succeed":"保存成功","Clean SuccessFully":"清理成功","Clean Failed":"清理失败","Saving Failed":"保存失败","No COMBO link":"沒有找到COMBO连接","Reboot ComfyUI":"重启ComfyUI","Are you sure you'd like to reboot the server?":"是否要重启ComfyUI?","Nodes Map":"管理节点组","Nodes map sorting mode":"管理节点组排序模式","No Nodes":"未找到节点","No nodes found in the map":"在工作流程中没有找到节点","Expand All":"展开所有组","Collapse All":"折叠所有组",Close:"关闭","Default automatic sorting, if set to manual, groups can be dragged and dropped and the sorting results saved.":"默认自动排序,如果设置为手动,组可以拖放并保存排序结果。","For drag and drop sorting, please find Nodes map sorting mode in Settings->EasyUse and change it to manual":"如需拖拽排序请在设置->EasyUse节点中找到管理节点组排序模式并修改成 manual",Queue:"队列","Cleanup Of VRAM Usage":"清理显存占用","Please stop all running tasks before cleaning GPU":"请在清理GPU之前停止所有运行中的任务",Always:"启用中",Bypass:"已忽略",Never:"已停用","Auto Sorting":"自动排序","Toggle `Show/Hide` can set mode of group, LongPress can set group nodes to never":"点击`启用中/已忽略`可设置组模式, 长按可停用该组节点","Enable Shift+Up/Down/Left/Right key to align selected nodes":"启用 `Shift+上/下/左/右` 键对齐选中的节点","Enable Shift+g to add selected nodes to a group":"启用 `Shift+g` 键将选中的节点添加一个组","Enable Shift+r to unload models and node cache":"启用 `Shift+r` 键卸载模型和节点缓存","Enable Up/Down/Left/Right key to jump nearest nodes":"启用 `上/下/左/右` 键跳转到最近的前后节点","Enable ALT+1~9 to paste nodes from nodes template":"启用 `ALT+1~9` 从节点模板粘贴到工作流中","Enable contextMenu auto nest subdirectories":"启用上下文菜单自动嵌套子目录","Enable right-click menu to add node A~Z sorting":"启用右键菜单中新建节点A~Z排序","Enable model thumbnails display":"启动模型预览图显示","Enable nodes runtime display":"启动节点运行时间显示","Enable chain get node and set node with parent nodes":"启用将获取点和设置点与父节点链在一起","Maximum number of model thumbnails displayed":"显示的模型缩略图的最大数量","Too many thumbnails will affect the first loading time, set the maximum value to not load the thumbnail function when there are too many models's thumbnail":"太多的缩略图会影响首次加载时间,当模型缩略图太多时,设置最大值以不加载缩略图功能","Too many thumbnails, have closed the display":"模型缩略图太多啦,为您关闭了显示","Get styles list Failed":"获取样式列表失败","Get style image Failed":"获取样式图片失败","Empty All":"清空所有","Type here to search styles ...":"在此处输入以搜索样式 ...","Loading UserInfo...":"正在获取用户信息...","Please set the APIKEY first":"请先设置APIKEY","Setting APIKEY":"设置APIKEY","Save Account Info":"保存账号信息",Choose:"选择",Delete:"删除",Edit:"编辑","At least one account is required":"删除失败: 至少需要一个账户","APIKEY is not Empty":"APIKEY 不能为空","Add Account":"添加账号","Getting Your APIKEY":"获取您的APIKEY","Choose Selected Images":"选择选中的图片","Choose images to continue":"选择图片以继续",Background:"背景",Hat:"帽子",Hair:"头发",Body:"身体",Face:"脸部",Clothes:"衣服",Others:"其他",Glove:"手套",Sunglasses:"太阳镜","Upper-clothes":"上衣",Dress:"连衣裙",Coat:"外套",Socks:"袜子",Pants:"裤子",Jumpsuits:"连体衣",Scarf:"围巾",Skirt:"裙子","Left-arm":"左臂","Right-arm":"右臂","Left-leg":"左腿","Right-leg":"右腿","Left-shoe":"左鞋","Right-shoe":"右鞋",s:"秒","No Node Templates Found":"未找到节点模板预设","Get Node Templates File Failed":"获取节点模板文件失败","Node template with {key} not set":"未设置快捷键为{key}的节点预设","ComfyUI Basic":"ComfyUI 基础节点","Recommend Nodes":"推荐节点","Others A~Z":"其他节点 A~Z"},X=I("AGL.Locale"),Z=(e,t=!1)=>"zh-CN"===(t?navigator.language:X)&&H[e]||e,K={addGroup:{id:"EasyUse.Hotkeys.AddGroup",name:Z("Enable Shift+g to add selected nodes to a group"),type:"boolean",defaultValue:!0},cleanVRAMUsed:{id:"EasyUse.Hotkeys.cleanVRAMUsed",name:Z("Enable Shift+r to unload models and node cache"),type:"boolean",defaultValue:!0},alignSelectedNodes:{id:"EasyUse.Hotkeys.AlignSelectedNodes",name:Z("Enable Shift+Up/Down/Left/Right key to align selected nodes"),type:"boolean",defaultValue:!0},nodesTemplate:{id:"EasyUse.Hotkeys.NodesTemplate",name:Z("Enable ALT+1~9 to paste nodes from nodes template"),type:"boolean",defaultValue:!0},jumpNearestNodes:{id:"EasyUse.Hotkeys.JumpNearestNodes",name:Z("Enable Up/Down/Left/Right key to jump nearest nodes"),type:"boolean",defaultValue:!0},subDirectories:{id:"EasyUse.ContextMenu.SubDirectories",name:Z("Enable contextMenu auto nest subdirectories"),type:"boolean",defaultValue:!1},modelsThumbnails:{id:"EasyUse.ContextMenu.ModelsThumbnails",name:Z("Enable model thumbnails display"),type:"boolean",defaultValue:!1},modelsThumbnailsLimit:{id:"EasyUse.ContextMenu.ModelsThumbnailsLimit",name:Z("Maximum number of model thumbnails displayed"),tooltip:Z("Too many thumbnails will affect the first loading time, set the maximum value to not load the thumbnail function when there are too many models's thumbnail"),type:"slider",attrs:{min:0,max:5e3,step:100},defaultValue:500},rightMenuNodesSort:{id:"EasyUse.ContextMenu.NodesSort",name:Z("Enable right-click menu to add node A~Z sorting"),type:"boolean",defaultValue:!0},nodesRuntime:{id:"EasyUse.Nodes.Runtime",name:Z("Enable nodes runtime display"),type:"boolean",defaultValue:!0},chainGetSet:{id:"EasyUse.Nodes.ChainGetSet",name:Z("Enable chain get node and set node with parent nodes"),type:"boolean",defaultValue:!0},nodesMap:{id:"EasyUse.NodesMap.Sorting",name:Z("Nodes map sorting mode"),tooltip:Z("Default automatic sorting, if set to manual, groups can be dragged and dropped and the sorting results saved."),type:"combo",options:["Auto sorting","Manual drag&drop sorting"],defaultValue:"Auto sorting"}};function J(e=100,t){return new Promise((n=>{setTimeout((()=>{n(t)}),e)}))}const $=new class{constructor(){f(this,"element",L(`div.${D}toast`)),f(this,"children",HTMLElement),f(this,"container",document.body),this.container.appendChild(this.element)}async show(e){let t=L(`div.${D}toast-container`,[L("div",[L("span",[...e.icon?[L("i",{className:e.icon})]:[],L("span",e.content)])])]);t.setAttribute("toast-id",e.id),this.element.replaceChildren(t),this.container.appendChild(this.element),await J(64),t.style.marginTop=`-${t.offsetHeight}px`,await J(64),t.classList.add("show"),e.duration&&(await J(e.duration),this.hide(e.id))}async hide(e){const t=document.querySelector(`.${D}toast > [toast-id="${e}"]`);(null==t?void 0:t.classList.contains("show"))&&(t.classList.remove("show"),await J(750)),t&&t.remove()}async clearAllMessages(){let e=document.querySelector(`.${D}container`);e&&(e.innerHTML="")}async info(e,t=3e3,n=[]){this.show({id:"toast-info",icon:`mdi mdi-information ${D}theme`,content:e,duration:t})}async success(e,t=3e3){this.show({id:"toast-success",icon:`mdi mdi-check-circle ${D}success`,content:e,duration:t})}async error(e,t=3e3){this.show({id:"toast-error",icon:`mdi mdi-close-circle ${D}error`,content:e,duration:t})}async warn(e,t=3e3){this.show({id:"toast-warn",icon:`mdi mdi-alert-circle ${D}warning`,content:e,duration:t})}async showLoading(e,t=0){this.show({id:"toast-loading",icon:"mdi mdi-rotate-right loading",content:e,duration:t})}async hideLoading(){this.hide("toast-loading")}},q=async()=>{try{const{Running:e,Pending:t}=await b.getQueue();if(e.length>0||t.length>0)return void $.error(Z("Clean Failed")+":"+Z("Please stop all running tasks before cleaning GPU"));200==(await b.fetchApi("/easyuse/cleangpu",{method:"POST"})).status?$.success(Z("Clean SuccessFully")):$.error(Z("Clean Failed"))}catch(e){}},Q=y("groups",{state:e=>({groups:[],nodes:[],nodesDefs:{},agl:{},isWatching:!1}),getters:{groups_nodes(){var e;let t=[],n=[];if((null==(e=this.nodes)?void 0:e.length)>0){this.nodes.map((e=>{let s=e.pos,o=!1;for(let n=0;ni.pos[0]&&s[0]i.pos[1]&&s[1]e.pos[0]-t.pos[0])).sort(((e,t)=>e.pos[1]-t.pos[1])))},setNodes(e){this.nodes=v(e)},update(){(w.extensionManager.activeSidebarTab===B||this.isWatching)&&setTimeout((e=>{this.setGroups(w.canvas.graph._groups),this.setNodes(w.canvas.graph._nodes)}),1)},watchGraph(e=!1){e&&(this.isWatching=!0);let t=this;this.update();const n=w.graph.onNodeAdded;w.graph.onNodeAdded=function(e){t.update();const s=e.onRemoved;return e.onRemoved=function(){return t.update(),null==s?void 0:s.apply(this,arguments)},null==n?void 0:n.apply(this,arguments)},w.canvas.onNodeMoved=function(e){t.update()};const s=LGraphCanvas.onNodeAlign;LGraphCanvas.onNodeAlign=function(e){return t.update(),null==s?void 0:s.apply(this,arguments)};const o=LGraphCanvas.onGroupAdd;LGraphCanvas.onGroupAdd=function(){return t.update(),null==o?void 0:o.apply(this,arguments)};const i=LGraphCanvas.onGroupAlign;LGraphCanvas.onGroupAlign=function(e){return t.update(),null==i?void 0:i.apply(this,arguments)};const a=LGraphCanvas.onMenuNodeRemove;LGraphCanvas.onMenuNodeRemove=function(e){return t.update(),null==a?void 0:a.apply(this,arguments)}},unwatchGraph(){this.isWatching=!1},async getNodesDef(){this.agl=await(async()=>{let e=new FormData;e.append("locale",X);const t=await b.fetchApi("/agl/get_translation",{method:"POST",body:e});if(200==t.status){const e=await t.json();return e&&"{}"!=e?{nodeCategory:e.NodeCategory,nodes:e.Nodes}:null}return null})(),await b.getNodeDefs()}}});let ee=null;const te=["custom_obsidian","custom_obsidian_dark","custom_milk_white"],ne={"easy positive":"green","easy negative":"red","easy promptList":"cyan","easy promptLine":"cyan","easy promptConcat":"cyan","easy promptReplace":"cyan","easy forLoopStart":"blue","easy forLoopEnd":"blue"};let se=LGraphCanvas.node_colors,oe=null,ie=null,ae=null,le=null;for(let vn in K)"Disabled"==I("Comfy.UseNewMenu")?T({...K[vn],name:"👽 "+K[vn].name}):T(K[vn]);function re(e,t=!1){let n="after",s="before";t&&([s,n]=[n,s]),e.label=(e.label??e.name).replace(s,n),e.name=e.label}function de(e,t,n,s,o,i,a){t.strokeStyle=s,t.fillStyle=o;let l=LiteGraph.NODE_TITLE_HEIGHT,r=this.ds.scale<.5,d=e._shape||e.constructor.shape||LiteGraph.ROUND_SHAPE,c=e.constructor.title_mode,u=!0;c==LiteGraph.TRANSPARENT_TITLE||c==LiteGraph.NO_TITLE?u=!1:c==LiteGraph.AUTOHIDE_TITLE&&mouse_over&&(u=!0);let p=new Float32Array(4);p=[0,u?-l:0,n[0]+1,u?n[1]+l:n[1]];let h=t.globalAlpha;if(t.lineWidth=1,t.beginPath(),d==LiteGraph.BOX_SHAPE||r?t.fillRect(p[0],p[1],p[2],p[3]):d==LiteGraph.ROUND_SHAPE||d==LiteGraph.CARD_SHAPE?t.roundRect(p[0],p[1],p[2],p[3],d==LiteGraph.CARD_SHAPE?[this.round_radius,this.round_radius,0,0]:[this.round_radius]):d==LiteGraph.CIRCLE_SHAPE&&t.arc(.5*n[0],.5*n[1],.5*n[0],0,2*Math.PI),t.strokeStyle=LiteGraph.WIDGET_OUTLINE_COLOR,t.stroke(),t.strokeStyle=s,t.fill(),!e.flags.collapsed&&u&&(t.shadowColor="transparent",t.fillStyle="rgba(0,0,0,0.2)",t.fillRect(0,-1,p[2],2)),t.shadowColor="transparent",e.onDrawBackground&&e.onDrawBackground(t,this,this.canvas,this.graph_mouse),u||c==LiteGraph.TRANSPARENT_TITLE){const o="dark"==function(e){let t=e.replace("#","");return n=parseInt(t.substring(0,2),16),s=parseInt(t.substring(2,4),16),o=parseInt(t.substring(4,6),16),.299*n+.587*s+.114*o>127.5?"light":"dark";var n,s,o}((null==e?void 0:e.color)||"#ffffff");if(e.onDrawTitleBar)e.onDrawTitleBar(t,l,n,this.ds.scale,s);else if(c!=LiteGraph.TRANSPARENT_TITLE&&(e.constructor.title_color||this.render_title_colored)){let o=e.constructor.title_color||s;if(e.flags.collapsed&&(t.shadowColor=LiteGraph.DEFAULT_SHADOW_COLOR),this.use_gradients){let e=LGraphCanvas.gradients[o];e||(e=LGraphCanvas.gradients[o]=t.createLinearGradient(0,0,400,0),e.addColorStop(0,o),e.addColorStop(1,"#000")),t.fillStyle=e}else t.fillStyle=o;t.beginPath(),d==LiteGraph.BOX_SHAPE||r?t.rect(0,-l,n[0]+1,l):d!=LiteGraph.ROUND_SHAPE&&d!=LiteGraph.CARD_SHAPE||t.roundRect(0,-l,n[0]+1,l,e.flags.collapsed?[this.round_radius]:[this.round_radius,this.round_radius,0,0]),t.fill(),t.shadowColor="transparent"}let a=!1;LiteGraph.node_box_coloured_by_mode&&LiteGraph.NODE_MODES_COLORS[e.mode]&&(a=LiteGraph.NODE_MODES_COLORS[e.mode]),LiteGraph.node_box_coloured_when_on&&(a=e.action_triggered?"#FFF":e.execute_triggered?"#AAA":a);let u=10;if(e.onDrawTitleBox)e.onDrawTitleBox(t,l,n,this.ds.scale);else if(d==LiteGraph.ROUND_SHAPE||d==LiteGraph.CIRCLE_SHAPE||d==LiteGraph.CARD_SHAPE){const n=o?"#ffffff":LiteGraph.NODE_SELECTED_TITLE_COLOR,s=o?"#eeeeee":e.boxcolor||a||LiteGraph.NODE_DEFAULT_BOXCOLOR;t.fillStyle=i?n:s,t.beginPath(),t.fillRect(10,0-1.05*u-1,1.1*u,.125*u),t.fillRect(10,0-1.45*u-1,1.1*u,.125*u),t.fillRect(10,0-1.85*u-1,1.1*u,.125*u)}else t.fillStyle=e.boxcolor||a||LiteGraph.NODE_DEFAULT_BOXCOLOR,t.fillRect(.5*(l-u),-.5*(l+u),u,u);if(t.globalAlpha=h,e.onDrawTitleText&&e.onDrawTitleText(t,l,n,this.ds.scale,this.title_text_font,i),!r){t.font=this.title_text_font;let n=String(e.getTitle());n&&(t.fillStyle=i?o?"#ffffff":LiteGraph.NODE_SELECTED_TITLE_COLOR:o?"#ffffff":e.constructor.title_text_color||this.node_title_color,e.flags.collapsed?(t.textAlign="left",t.measureText(n),t.fillText(n.substr(0,20),l,LiteGraph.NODE_TITLE_TEXT_Y-l),t.textAlign="left"):(t.textAlign="left",t.fillText(n,l,LiteGraph.NODE_TITLE_TEXT_Y-l)))}if(!e.flags.collapsed&&e.subgraph&&!e.skip_subgraph_button){let n=LiteGraph.NODE_TITLE_HEIGHT,s=e.size[0]-n,o=LiteGraph.isInsideRectangle(this.graph_mouse[0]-e.pos[0],this.graph_mouse[1]-e.pos[1],s+2,2-n,n-4,n-4);t.fillStyle=o?"#888":"#555",d==LiteGraph.BOX_SHAPE||r?t.fillRect(s+2,2-n,n-4,n-4):(t.beginPath(),t.roundRect(s+2,2-n,n-4,n-4,[4]),t.fill()),t.fillStyle="#333",t.beginPath(),t.moveTo(s+.2*n,.6*-n),t.lineTo(s+.8*n,.6*-n),t.lineTo(s+.5*n,.3*-n),t.fill()}e.onDrawTitle&&e.onDrawTitle(t)}if(i){e.onBounding&&e.onBounding(p),c==LiteGraph.TRANSPARENT_TITLE&&(p[1]-=l,p[3]+=l),t.lineWidth=2,t.globalAlpha=.8,t.beginPath();let o=0,i=0,a=1;d==LiteGraph.BOX_SHAPE?t.rect(o+p[0],o+p[1],i+p[2],i+p[3]):d==LiteGraph.ROUND_SHAPE||d==LiteGraph.CARD_SHAPE&&e.flags.collapsed?t.roundRect(o+p[0],o+p[1],i+p[2],i+p[3],[this.round_radius*a]):d==LiteGraph.CARD_SHAPE?t.roundRect(o+p[0],o+p[1],i+p[2],i+p[3],[this.round_radius*a,a,this.round_radius*a,a]):d==LiteGraph.CIRCLE_SHAPE&&t.arc(.5*n[0],.5*n[1],.5*n[0]+6,0,2*Math.PI),t.strokeStyle=LiteGraph.NODE_BOX_OUTLINE_COLOR,t.stroke(),t.strokeStyle=s,t.globalAlpha=1}e.execute_triggered>0&&e.execute_triggered--,e.action_triggered>0&&e.action_triggered--}function ce(e,t,n,s){if(!e.widgets||!e.widgets.length)return 0;let o=e.size[0],i=e.widgets;t+=2;let a=LiteGraph.NODE_WIDGET_HEIGHT,l=this.ds.scale>.5;n.save(),n.globalAlpha=this.editor_alpha;let r=LiteGraph.WIDGET_OUTLINE_COLOR,d=LiteGraph.WIDGET_BGCOLOR,c=LiteGraph.WIDGET_TEXT_COLOR,u=LiteGraph.WIDGET_SECONDARY_TEXT_COLOR,p=12;for(let h=0;h1&&(o=1),n.fillStyle=m.options.hasOwnProperty("slider_color")?m.options.slider_color:s==m?r:G,n.beginPath(),n.roundRect(p,g,o*(f-24),a,[.25*a]),n.fill(),m.marker){let e=(m.marker-m.options.min)/t;e<0&&(e=0),e>1&&(e=1),n.fillStyle=m.options.hasOwnProperty("marker_color")?m.options.marker_color:"#AA9",n.roundRect(p+e*(f-24),g,2,a,[.25*a])}if(l){n.textAlign="center",n.fillStyle=c;let e=(m.label||m.name)+": "+Number(m.value).toFixed(null!=m.options.precision?m.options.precision:3).toString();n.fillText(e,.5*f,g+.7*a)}break;case"number":case"combo":if(n.textAlign="left",n.strokeStyle=r,n.fillStyle=d,n.beginPath(),l?n.roundRect(p,g,f-24,a,[.25*a]):n.rect(p,g,f-24,a),n.fill(),l){m.disabled||n.stroke(),n.fillStyle=c,m.disabled||(n.beginPath(),n.moveTo(24,g+6.5),n.lineTo(18,g+.5*a),n.lineTo(24,g+a-6.5),n.fill(),n.beginPath(),n.moveTo(f-p-12,g+6.5),n.lineTo(f-p-6,g+.5*a),n.lineTo(f-p-12,g+a-6.5),n.fill()),n.fillStyle=u,n.font="10px Inter",n.fillText(m.label||m.name,29,g+.7*a),n.fillStyle=c,n.textAlign="right";let e=6;if("number"==m.type)n.font="10px Inter",n.fillText(Number(m.value).toFixed(void 0!==m.options.precision?m.options.precision:3),f-24-e,g+.7*a);else{let t=m.value;if(m.options.values){let e=m.options.values;e.constructor===Function&&(e=e()),e&&e.constructor!==Array&&(t=e[m.value])}n.fillText(t,f-24-e,g+.7*a)}}break;case"string":case"text":if(n.textAlign="left",n.strokeStyle=r,n.fillStyle=d,n.beginPath(),l?n.roundRect(p,g,f-24,a,[.25*a]):n.rect(p,g,f-24,a),n.fill(),l){m.disabled||n.stroke(),n.save(),n.beginPath(),n.rect(p,g,f-24,a),n.clip(),n.fillStyle=u;const e=m.label||m.name;n.font="10px Inter",null!=e&&n.fillText(e,24,g+.7*a),n.fillStyle=c,n.textAlign="right",n.fillText(String(m.value).substr(0,30),f-24,g+.7*a),n.restore()}break;default:m.draw&&m.draw(n,e,f,g,a)}t+=(m.computeSize?m.computeSize(f)[1]:a)+4,n.globalAlpha=this.editor_alpha}n.restore(),n.textAlign="left"}function ue(e,t,n,s,o){return new LiteGraph.ContextMenu(LiteGraph.NODE_MODES,{event:n,callback:function(e){if(!o)return;var t=Object.values(LiteGraph.NODE_MODES).indexOf(e),n=function(e){t>=0&&LiteGraph.NODE_MODES[t]?e.changeMode(t):e.changeMode(LiteGraph.ALWAYS),ee||(ee=Q()),ee.update()},s=LGraphCanvas.active_canvas;if(!s.selected_nodes||Object.keys(s.selected_nodes).length<=1)n(o);else for(var i in s.selected_nodes)n(s.selected_nodes[i])},parentMenu:s,node:o}),!1}function pe(e,t,n,s,o){if(!o)throw"no node for color";var i=[];for(var a in i.push({value:null,content:"No color"}),LGraphCanvas.node_colors){var l=LGraphCanvas.node_colors[a];e={value:a,content:""+a+""};i.push(e)}return new LiteGraph.ContextMenu(i,{event:n,callback:function(e){if(!o)return;var t=e.value?LGraphCanvas.node_colors[e.value]:null,n=function(e){t?e.constructor===LiteGraph.LGraphGroup?e.color=t.groupcolor:(e.color=t.color,e.bgcolor=t.bgcolor):(delete e.color,delete e.bgcolor),ee||(ee=Q()),ee.update()},s=LGraphCanvas.active_canvas;if(!s.selected_nodes||Object.keys(s.selected_nodes).length<=1)n(o);else for(var i in s.selected_nodes)n(s.selected_nodes[i]);o.setDirtyCanvas(!0,!0)},parentMenu:s,node:o}),!1}function he(e,t,n,s,o){var i=e.property||"title",a=o[i],l=document.createElement("div");l.is_modified=!1,l.className="graphdialog",l.innerHTML="",l.close=function(){l.parentNode&&l.parentNode.removeChild(l)},l.querySelector(".name").innerText=i;var r=l.querySelector(".value");r&&(r.value=a,r.addEventListener("blur",(function(e){this.focus()})),r.addEventListener("keydown",(function(e){if(l.is_modified=!0,27==e.keyCode)l.close();else if(13==e.keyCode)m();else if(13!=e.keyCode&&"textarea"!=e.target.localName)return;e.preventDefault(),e.stopPropagation()})));var d=LGraphCanvas.active_canvas.canvas,c=d.getBoundingClientRect(),u=-20,p=-20;c&&(u-=c.left,p-=c.top),event?(l.style.left=event.clientX+u+"px",l.style.top=event.clientY+p+"px"):(l.style.left=.5*d.width+u+"px",l.style.top=.5*d.height+p+"px"),l.querySelector("button").addEventListener("click",m),d.parentNode.appendChild(l),r&&r.focus();var h=null;function m(){r&&function(t){"Number"==e.type?t=Number(t):"Boolean"==e.type&&(t=Boolean(t));o[i]=t,l.parentNode&&l.parentNode.removeChild(l);o.setDirtyCanvas(!0,!0),ee||(ee=Q());ee.update()}(r.value)}l.addEventListener("mouseleave",(function(e){LiteGraph.dialog_close_on_mouse_leave&&!l.is_modified&&LiteGraph.dialog_close_on_mouse_leave&&(h=setTimeout(l.close,LiteGraph.dialog_close_on_mouse_leave_delay))})),l.addEventListener("mouseenter",(function(e){LiteGraph.dialog_close_on_mouse_leave&&h&&clearTimeout(h)}))}w.registerExtension({name:"Comfy.EasyUse.UI",init(){var e,t;const n="Comfy.CustomColorPalettes",s="Comfy.Settings.Comfy.CustomColorPalettes";if(ie||(ie=I(n,s)),ae||(ae=I("Comfy.ColorPalette","Comfy.Settings.Comfy.ColorPalette")||"dark"),(!(null==(e=null==ie?void 0:ie.obsidian)?void 0:e.version)||ie.obsidian.version{(null==e?void 0:e.value)&&(null==e?void 0:e.oldValue)&&(await J(1),Object.assign(w.canvas.default_connection_color_byType,M),Object.assign(LGraphCanvas.link_type_colors,M)),"custom_milk_white"==e.value&&document.body.classList.remove(R)})),setTimeout((e=>ge(I("Comfy.UseNewMenu")||"Disabled")),1)},async nodeCreated(e){var t;if(ne.hasOwnProperty(e.comfyClass)){const t=ne[e.comfyClass],n=se[t];if(!n)return;n.color&&(e.color=n.color),n.bgcolor&&(e.bgcolor=n.bgcolor)}if(oe||(oe=I("Comfy.WidgetControlMode")),"before"==oe){const n="before"==oe;if((null==(t=e.widgets)?void 0:t.length)>0)for(const t of e.widgets)if(["control_before_generate","control_after_generate"].includes(t.name)&&(await re(t,n),t.linkedWidgets))for(const e of t.linkedWidgets)await re(e,n)}}});const me=null==(m=w.ui.settings.settingsLookup)?void 0:m["Comfy.UseNewMenu"];me&&(me.onChange=e=>ge(e));const ge=e=>{var t;const n=(null==(t=document.getElementById("crystools-root"))?void 0:t.children)||null;if((null==n?void 0:n.length)>0){if(!le)for(let e=0;ee.widgets.find((e=>e.name===t)),_e=(e,t,n=!1,s="")=>{var o;if(!t||((e,t)=>!!e.inputs&&e.inputs.some((e=>e.name===t)))(e,t.name))return;fe[t.name]||(fe[t.name]={origType:t.type,origComputeSize:t.computeSize});const i=e.size;t.type=n?fe[t.name].origType:"easyHidden"+s,t.computeSize=n?fe[t.name].origComputeSize:()=>[0,-4],null==(o=t.linkedWidgets)||o.forEach((s=>_e(e,s,":"+t.name,n)));const a=n?Math.max(e.computeSize()[1],i[1]):e.size[1];e.setSize([e.size[0],a])},ve=(e,t=0)=>{var n,s;if(e)return(null==(n=e.widgets)?void 0:n[t])?e.widgets[t].value:e.widgets_values?null==(s=e.widgets_values)?void 0:s[t]:void 0},we=e=>e.setSize([e.size[0],e.computeSize()[1]]),be=(e,t)=>graph.getNodeById(e),Le=e=>{var t;try{return Object.values(null==(t=null==graph?void 0:graph.list_of_graphcanvas[0])?void 0:t.selected_nodes)}catch(n){return[]}};function Se(e,t,n){return e+(s=n,(.5-.5*Math.cos(Math.PI*s))*(t-e));var s}const Ee=(e,t=!0)=>{var n,s;const o=(null==(s=null==(n=e.graph)?void 0:n.list_of_graphcanvas)?void 0:s[0])||null;if(!o)return;const[i,a]=e.pos,[l,r]=e.size;(([e,t],n)=>{const s=n.ds,o=document.body.clientWidth,i=document.body.clientHeight,a=s.scale,l=.5*o/a-e,r=.5*i/a-t,d=Date.now()+250,c=s.offset[0],u=s.offset[1],p=()=>{const e=d-Date.now();if(!(Date.now(){const t=be(e);t&&Ee(t)},Ae=(e,t=(()=>graph.links??[])())=>t[e],ke=e=>e.toLowerCase().replace(/_./g,(e=>e.replace("_","").toUpperCase())),Ie=e=>"easy getNode"===e.type,xe=e=>"easy setNode"===e.type,Ne=e=>Ie(e)||xe(e),Te=(e=(()=>graph._nodes??[])())=>e.filter((e=>Ne(e))),Oe=(e,t,n=0)=>{e.widgets_values||(e.widgets_values=[]),e.widgets_values[n]=t,e.widgets[n].value=t},De=e=>graph.add(e),Re=e=>graph.remove(e),Ge=(e,t=0)=>{var n,s;if("Reroute"!==e.type)return[e,t];const o=e,i=null==(s=null==(n=o.inputs)?void 0:n[0])?void 0:s.link;if(!i)return[o,t];const a=Ae(i);if(!a)return[o,t];const l=be(a.origin_id);return l?(setTimeout((()=>{Re(o)})),Ge(l,a.origin_slot)):[o,t]},Me=e=>{var t,n,s;if("Reroute"!==e.type)return e;const o=e,i=null==(n=null==(t=o.outputs)?void 0:t[0])?void 0:n.links;if(!i)return o;const a=i[0];if(!a)return o;const l=Ae(a);if(!l)return o;const r=be(l.target_id);return r?(1===(null==(s=o.outputs[0].links)?void 0:s.length)&&setTimeout((()=>{Re(o)})),Me(r)):o},Pe=["rescale_after_model","rescale","lora_name","upscale_method","image_output","add_noise","info","sampler_name","ckpt_B_name","ckpt_C_name","save_model","refiner_ckpt_name","num_loras","num_controlnet","mode","toggle","resolution","ratio","target_parameter","input_count","replace_count","downscale_mode","range_mode","text_combine_mode","input_mode","lora_count","ckpt_count","conditioning_mode","preset","use_tiled","use_batch","num_embeds","easing_mode","guider","scheduler","inpaint_mode","t5_type","rem_mode"],Fe=["LIGHT - SD1.5 only (low strength)","STANDARD (medium strength)","VIT-G (medium strength)","PLUS (high strength)","PLUS FACE (portraits)","FULL FACE - SD1.5 only (portraits stronger)"],Ue=["FACEID","FACEID PLUS - SD1.5 only","FACEID PLUS V2","FACEID PLUS KOLORS","FACEID PORTRAIT (style transfer)","FACEID PORTRAIT UNNORM - SDXL only (strong)"],Be=["easy seed","easy latentNoisy","easy wildcards","easy preSampling","easy preSamplingAdvanced","easy preSamplingNoiseIn","easy preSamplingSdTurbo","easy preSamplingCascade","easy preSamplingDynamicCFG","easy preSamplingLayerDiffusion","easy fullkSampler","easy fullCascadeKSampler"],ze=["easy fullLoader","easy a1111Loader","easy comfyLoader","easy hyditLoader","easy pixArtLoader"],We=["easy imageSize","easy imageSizeBySide","easy imageSizeByLongerSide","easy imageSizeShow","easy imageRatio","easy imagePixelPerfect"],je=["easy forLoopStart","easy forLoopEnd","easy whileLoopStart","easy whileLoopEnd"],Ve=["easy anythingIndexSwitch","easy imageIndexSwitch","easy textIndexSwitch","easy conditioningIndexSwitch"],Ye=[...je,...Ve],He={"easy anythingIndexSwitch":"value","easy imageIndexSwitch":"image","easy textIndexSwitch":"text","easy conditioningIndexSwitch":"cond"};function Xe(e,t){const n=e.comfyClass,s=t.value;switch(t.name){case"range_mode":_e(e,ye(e,"step"),"step"==s),_e(e,ye(e,"num_steps"),"num_steps"==s),we(e);break;case"text_combine_mode":_e(e,ye(e,"replace_text"),"replace"==s);break;case"lora_name":["lora_model_strength","lora_clip_strength"].map((t=>_e(e,ye(e,t),"None"!==s)));break;case"resolution":"自定义 x 自定义"===s&&(t.value="width x height (custom)"),["empty_latent_width","empty_latent_height"].map((t=>_e(e,ye(e,t),"width x height (custom)"===s)));break;case"ratio":["empty_latent_width","empty_latent_height"].map((t=>_e(e,ye(e,t),"custom"===s)));break;case"num_loras":var o=s+1,i=ye(e,"mode").value;for(let t=0;t_e(e,ye(e,t),"simple"!==i)));for(let t=o;t<21;t++)["lora_"+t+"_name","lora_"+t+"_strength","lora_"+t+"_model_strength","lora_"+t+"_clip_strength"].map((t=>_e(e,ye(e,t),!1)));we(e);break;case"num_controlnet":o=s+1,i=ye(e,"mode").value;for(let t=0;t_e(e,ye(e,t),!0))),["start_percent_"+t,"end_percent_"+t].map((t=>_e(e,ye(e,t),"simple"!==i)));for(let t=o;t<21;t++)["controlnet_"+t,"controlnet_"+t+"_strength","scale_soft_weight_"+t,"start_percent_"+t,"end_percent_"+t].map((t=>_e(e,ye(e,t),!1)));we(e);break;case"mode":switch(null==e?void 0:e.comfyClass){case"easy loraStack":o=ye(e,"num_loras").value+1,i=s;for(let t=0;t_e(e,ye(e,t),"simple"!==i)));we(e);break;case"easy controlnetStack":o=ye(e,"num_controlnet").value+1,i=s;for(let t=0;t_e(e,ye(e,t),"simple"!==i)));we(e);break;case"easy icLightApply":i=s;["lighting","remove_bg"].map((t=>_e(e,ye(e,t),"Foreground"===i))),_e(e,ye(e,"source"),"Foreground"!==i),we(e)}break;case"toggle":t.type="toggle",t.options={on:"Enabled",off:"Disabled"};break;case"t5_type":["clip_name","padding"].map((t=>_e(e,ye(e,t),"sd3"==s))),["t5_name","device","dtype"].map((t=>_e(e,ye(e,t),"t5v11"==s))),we(e);break;case"preset":if(Fe.includes(s)){let t=ye(e,"use_tiled");_e(e,ye(e,"lora_strength")),_e(e,ye(e,"provider")),_e(e,ye(e,"weight_faceidv2")),_e(e,ye(e,"weight_kolors")),_e(e,ye(e,"use_tiled"),!0),_e(e,ye(e,"sharpening"),t&&t.value)}else Ue.includes(s)&&(_e(e,ye(e,"weight_faceidv2"),!!["FACEID PLUS V2","FACEID PLUS KOLORS"].includes(s)),_e(e,ye(e,"weight_kolors"),!!["FACEID PLUS KOLORS"].includes(t.value)),["FACEID PLUS KOLORS","FACEID PORTRAIT (style transfer)","FACEID PORTRAIT UNNORM - SDXL only (strong)"].includes(s)?_e(e,ye(e,"lora_strength"),!1):_e(e,ye(e,"lora_strength"),!0),_e(e,ye(e,"provider"),!0),_e(e,ye(e,"use_tiled")),_e(e,ye(e,"sharpening")));we(e);break;case"use_tiled":_e(e,ye(e,"sharpening"),!!s),we(e);break;case"num_embeds":o=s+1;for(let t=0;t_e(e,ye(e,t),!1)));break;case"brushnet_random":case"brushnet_segmentation":["dtype","scale","start_at","end_at"].map((t=>_e(e,ye(e,t),!0))),["fitting","function"].map((t=>_e(e,ye(e,t),!1)));break;case"powerpaint":["dtype","fitting","function","scale","start_at","end_at"].map((t=>_e(e,ye(e,t),!0)))}we(e);break;case"image_output":_e(e,ye(e,"link_id"),!!["Sender","Sender&Save"].includes(s)),_e(e,ye(e,"decode_vae_name"),!!["Hide","Hide&Save"].includes(s)),["save_prefix","output_path","embed_workflow","number_padding","overwrite_existing"].map((t=>_e(e,ye(e,t),!!["Save","Hide&Save","Sender&Save"].includes(s))));break;case"add_noise":var a=ye(e,"control_before_generate"),l=ye(e,"control_after_generate")||a;"disable"===s?(_e(e,ye(e,"seed")),l&&(l.last_value=l.value,l.value="fixed",_e(e,l))):(_e(e,ye(e,"seed"),!0),l&&((null==l?void 0:l.last_value)&&(l.value=l.last_value),_e(e,l,!0))),we(e);break;case"guider":switch(s){case"Basic":["cfg","cfg_negative"].map((t=>_e(e,ye(e,t))));break;case"CFG":_e(e,ye(e,"cfg"),!0),_e(e,ye(e,"cfg_negative"));break;case"IP2P+DualCFG":case"DualCFG":["cfg","cfg_negative"].map((t=>_e(e,ye(e,t),!0)))}we(e);break;case"scheduler":["karrasADV","exponentialADV","polyExponential"].includes(s)?(["sigma_max","sigma_min"].map((t=>_e(e,ye(e,t),!0))),["denoise","beta_d","beta_min","eps_s","coeff"].map((t=>_e(e,ye(e,t))),!1),_e(e,ye(e,"rho"),"exponentialADV"!=s)):"vp"==s?(["sigma_max","sigma_min","denoise","rho","coeff"].map((t=>_e(e,ye(e,t)))),["beta_d","beta_min","eps_s"].map((t=>_e(e,ye(e,t),!0)))):(["sigma_max","sigma_min","beta_d","beta_min","eps_s","rho"].map((t=>_e(e,ye(e,t)))),_e(e,ye(e,"coeff"),"gits"==s),_e(e,ye(e,"denoise"),!0)),we(e);break;case"conditioning_mode":["replace","concat","combine"].includes(s)?["average_strength","old_cond_start","old_cond_end","new_cond_start","new_cond_end"].map((t=>_e(e,ye(e,t)))):"average"==s?(_e(e,ye(e,"average_strength"),!0),["old_cond_start","old_cond_end","new_cond_start","new_cond_end"].map((t=>_e(e,ye(e,t),!1)))):"timestep"==s&&(["average_strength"].map((t=>_e(e,ye(e,t),!1))),["old_cond_start","old_cond_end","new_cond_start","new_cond_end"].map((t=>_e(e,ye(e,t)))));break;case"rescale":ye(e,"rescale_after_model").value,_e(e,ye(e,"width"),"to Width/Height"===s),_e(e,ye(e,"height"),"to Width/Height"===s),_e(e,ye(e,"percent"),"by percentage"===s),_e(e,ye(e,"longer_side"),"to longer side - maintain aspect"===s),we(e);break;case"upscale_method":["factor","crop"].map((t=>_e(e,ye(e,t),"None"!==s)));break;case"target_parameter":switch(n){case"easy XYInputs: Steps":["first_step","last_step"].map((t=>_e(e,ye(e,t),"steps"==s))),["first_start_step","last_start_step"].map((t=>_e(e,ye(e,t),"start_at_step"==s))),["first_end_step","last_end_step"].map((t=>_e(e,ye(e,t),"end_at_step"==s)));break;case"easy XYInputs: Sampler/Scheduler":let t=ye(e,"input_count").value+1;for(let n=0;n_e(e,ye(e,t),"strength"==s))),["first_start_percent","last_start_percent"].map((t=>_e(e,ye(e,t),"start_percent"==s))),["first_end_percent","last_end_percent"].map((t=>_e(e,ye(e,t),"end_percent"==s))),["strength","start_percent","end_percent"].map((t=>_e(e,ye(e,t),s!=t))),we(e)}case"replace_count":o=s+1;for(let t=0;t_e(e,ye(e,t),!r)));for(let t=o;t<11;t++)["lora_name_"+t,"model_str_"+t,"clip_str_"+t].map((t=>_e(e,ye(e,t),!1)));we(e);break;case"ckpt_count":o=s+1;var d=-1!=ye(e,"input_mode").value.indexOf("ClipSkip"),c=-1!=ye(e,"input_mode").value.indexOf("VAE");for(let t=0;t_e(e,ye(e,t),!1)));we(e);break;case"input_count":o=s+1;var u=ye(e,"target_parameter").value;for(let t=0;t_e(e,ye(e,n),!t)));["model_strength","clip_strength"].map((n=>_e(e,ye(e,n),!t)));break;case"easy XYInputs: Checkpoint":o=ye(e,"ckpt_count").value+1,d=-1!=ye(e,"input_mode").value.indexOf("ClipSkip"),c=-1!=ye(e,"input_mode").value.indexOf("VAE");for(let n=0;ne.name===t));if(-1!==e){for(let t=e;t{var e;const t=this.computeSize();t[0]"info"===e.name));if(-1!==e&&this.widgets[e]){this.widgets[e].value=t}}requestAnimationFrame((()=>{var e;const t=this.computeSize();t[0]"prompt"==e.name));this.addWidget("button","get values from COMBO link","",(()=>{var t,s;const o=(null==(s=null==(t=this.outputs[1])?void 0:t.links)?void 0:s.length)>0?this.outputs[1].links[0]:null,i=n.graph._nodes.find((e=>{var t;return null==(t=e.inputs)?void 0:t.find((e=>e.link==o))}));if(o&&i){const t=i.inputs.find((e=>e.link==o)).widget.name,n=i.widgets.find((e=>e.name==t));let s=(null==n?void 0:n.options.values)||null;s&&(s=s.join("\n"),e.value=s)}else $.error(Z("No COMBO link"),3e3)}),{serialize:!1})}),ze.includes(t.name)){let t=function(e){var t="";for(let n=0;ne.name===t+"_prompt")),s="comfy-multiline-input wildcard_"+t+"_"+this.id.toString();if(-1==n&&e){const n=document.createElement("textarea");n.className=s,n.placeholder="Wildcard Prompt ("+t+")";const o=this.addDOMWidget(t+"_prompt","customtext",n,{getValue:e=>n.value,setValue(e){n.value=e},serialize:!1});o.inputEl=n,o.inputEl.readOnly=!0,n.addEventListener("input",(()=>{var e;null==(e=o.callback)||e.call(o,o.value)})),o.value=e}else if(this.widgets[n])if(e){this.widgets[n].value=e}else{this.widgets.splice(n,1);const e=document.getElementsByClassName(s);e&&e[0]&&e[0].remove()}}};e.prototype.onExecuted=function(e){null==l||l.apply(this,arguments);const s=t(e.positive),o=t(e.negative);n.call(this,s,"positive"),n.call(this,o,"negative")}}if(["easy sv3dLoader"].includes(t.name)){let t=function(e,t,n){switch(e){case"azimuth":return n.readOnly=!0,n.style.opacity=.6,"0:(0.0,0.0)"+(t>1?`\n${t-1}:(360.0,0.0)`:"");case"elevation":return n.readOnly=!0,n.style.opacity=.6,"0:(-90.0,0.0)"+(t>1?`\n${t-1}:(90.0,0.0)`:"");case"custom":return n.readOnly=!1,n.style.opacity=1,"0:(0.0,0.0)\n9:(180.0,0.0)\n20:(360.0,0.0)"}};e.prototype.onNodeCreated=async function(){i&&i.apply(this,[]);const e=this.widgets.find((e=>"easing_mode"==e.name)),n=this.widgets.find((e=>"batch_size"==e.name)),s=this.widgets.find((e=>"scheduler"==e.name));setTimeout((o=>{s.value||(s.value=t(e.value,n.value,s.inputEl))}),1),e.callback=e=>{s.value=t(e,n.value,s.inputEl)},n.callback=n=>{s.value=t(e.value,n,s.inputEl)}}}if(Be.includes(s)&&(e.prototype.onNodeCreated=async function(){i&&i.apply(this,[]);const e=this.widgets.find((e=>["seed_num","seed"].includes(e.name))),s=this.widgets.find((e=>["control_before_generate","control_after_generate"].includes(e.name)));if("easy seed"==t.name){const t=this.addWidget("button","🎲 Manual Random Seed",null,(t=>{"fixed"!=s.value&&(s.value="fixed"),e.value=Math.floor(Math.random()*P),n.queuePrompt(0,1)}),{serialize:!1});e.linkedWidgets=[t,s]}},e.prototype.onAdded=async function(){o&&o.apply(this,[]);const e=this.widgets.find((e=>["seed_num","seed"].includes(e.name))),t=this.widgets.find((e=>["control_before_generate","control_after_generate"].includes(e.name)));setTimeout((n=>{"control_before_generate"==t.name&&0===e.value&&(e.value=Math.floor(Math.random()*P))}),1)}),"easy convertAnything"==s&&(e.prototype.onNodeCreated=async function(){i&&i.apply(this,[]);const e=this.widgets.find((e=>"output_type"==e.name)),t=t=>{this.outputs[0].type=e.value.toUpperCase(),this.outputs[0].name=e.value,this.outputs[0].label=e.value};setTimeout((e=>t()),10),e.callback=e=>t()}),"easy imageInsetCrop"==s){let t=function(e){const t=e.widgets[0];for(let n=1;n<=4;n++)"Pixels"===t.value?(e.widgets[n].options.step=80,e.widgets[n].options.max=8192):(e.widgets[n].options.step=10,e.widgets[n].options.max=99)};e.prototype.onAdded=async function(e){const n=this.widgets[0];let s=n.callback;n.callback=(...e)=>{t(this),s&&s.apply(n,[...e])},setTimeout((e=>{t(this)}),1)}}if(Ye.includes(s)){const t=e=>{switch(s){case"easy forLoopStart":return e+1;case"easy forLoopEnd":return e}},n=e=>{switch(s){case"easy forLoopStart":return e+3;case"easy forLoopEnd":return e}},o=e=>{switch(s){case"easy forLoopStart":return 0;case"easy forLoopEnd":return 1}};e.prototype.onNodeCreated=function(){if(je.includes(s)){const e=this.inputs.findIndex((e=>"flow"===e.name)),t=this.outputs.findIndex((e=>"flow"===e.name));-1!==e&&(this.inputs[e].shape=5),-1!==t&&(this.outputs[t].shape=5)}return null==i?void 0:i.apply(this,arguments)},e.prototype.onConnectionsChange=function(e,i,a,l){if("easy whileLoopStart"!=s&&"easy whileLoopEnd"!=s&&l){if(1==e){let e=this.inputs.every((e=>null!==e.link));if(je.includes(s)){if(e){if(this.inputs.length>=10)return void $.warn(Z("The maximum number of inputs is 10"));let e=t(this.inputs.length),n="initial_value"+e,s="value"+e;this.addInput(n,"*"),this.addOutput(s,"*")}else if(!a){const e=o(),t=n(i);i>=e&&i==this.inputs.length-2&&(this.removeInput(i+1),this.removeOutput(t))}}else if(Ve.includes(s))if(e){if(this.inputs.length>=10)return void $.warn(Z("The maximum number of inputs is 10"));let e=He[s]+this.inputs.length;this.addInput(e,"*")}else a||i==this.inputs.length-2&&this.removeInput(i+1)}return null==r?void 0:r.apply(this,arguments)}}}},nodeCreated(e){if(e.comfyClass.startsWith("easy ")){if(e.widgets)for(const n of e.widgets){if(!Pe.includes(n.name))continue;let t=n.value;Xe(e,n),Object.defineProperty(n,"value",{get:e=>t,set(s){s!==t&&(t=s,Xe(e,n))}})}const t=e.comfyClass;if("easy preDetailerFix"==t){const t=e.widgets.find((e=>"customtext"===e.type));if(!t)return;t.dynamicPrompts=!1,t.inputEl.placeholder="wildcard spec: if kept empty, this option will be ignored",t.serializeValue=()=>t.value}if("easy wildcards"==t){const t=e.widgets.find((e=>"text"==e.name));let n=1;Object.defineProperty(e.widgets[n],"value",{set:e=>{if((new Error).stack.includes("inner_value_change")&&"Select the LoRA to add to the text"!=e){let n=e;n.endsWith(".safetensors")&&(n=n.slice(0,-12)),t.value+=``}},get:e=>"Select the LoRA to add to the text"}),Object.defineProperty(e.widgets[n+1],"value",{set:e=>{(new Error).stack.includes("inner_value_change")&&"Select the Wildcard to add to the text"!=e&&(""!=t.value&&(t.value+=", "),t.value+=e)},get:e=>"Select the Wildcard to add to the text"}),e.widgets[n].serializeValue=e=>"Select the LoRA to add to the text",e.widgets[n+1].serializeValue=e=>"Select the Wildcard to add to the text"}if(We.includes(t)){const t=document.createElement("textarea");t.className="comfy-multiline-input",t.readOnly=!0;const n=e.addDOMWidget("info","customtext",t,{getValue:e=>t.value,setValue:e=>t.value=e,serialize:!1});n.inputEl=t,t.addEventListener("input",(()=>{var e;null==(e=n.callback)||e.call(n,n.value)}))}}}}),w.registerExtension({name:"easy bookmark",registerCustomNodes(){class e{constructor(){f(this,"type","easy bookmark"),f(this,"title","🔖"),f(this,"slot_start_y",-20),f(this,"___collapsed_width",0),f(this,"isVirtualNode",!0),f(this,"serialize_widgets",!0),f(this,"keypressBound",null),this.addWidget("text","shortcut_key","1",(e=>{""!==(e=e.trim()[0]||"1")&&(this.title="🔖 "+e)}),{y:8}),this.addWidget("number","zoom",1,(e=>{}),{y:8+LiteGraph.NODE_WIDGET_HEIGHT+4,max:2,min:.5,precision:2}),this.keypressBound=this.onKeypress.bind(this)}get _collapsed_width(){return this.___collapsed_width}set _collapsed_width(e){const t=w.canvas,n=t.canvas.getContext("2d");if(n){const e=n.font;n.font=t.title_text_font,this.___collapsed_width=40+n.measureText(this.title).width,n.font=e}}onAdded(){setTimeout((e=>{const t=this.widgets[0].value;t&&(this.title="🔖 "+t)}),1),window.addEventListener("keydown",this.keypressBound)}onRemoved(){window.removeEventListener("keydown",this.keypressBound)}onKeypress(e){const t=e.target;["input","textarea"].includes(t.localName)||this.widgets[0]&&e.key.toLocaleLowerCase()===this.widgets[0].value.toLocaleLowerCase()&&this.canvasToBookmark()}canvasToBookmark(){var e,t;const n=w.canvas;(null==(e=null==n?void 0:n.ds)?void 0:e.offset)&&(n.ds.offset[0]=16-this.pos[0],n.ds.offset[1]=40-this.pos[1]),null!=(null==(t=null==n?void 0:n.ds)?void 0:t.scale)&&(n.ds.scale=Number(this.widgets[1].value||1)),n.setDirty(!0,!0)}}LiteGraph.registerNodeType("easy bookmark",Object.assign(e,{title:"Bookmark 🔖"})),e.category="EasyUse/Util"}}),w.registerExtension({name:"Comfy.EasyUse.ChainNode",init(){w.canvas._mousemove_callback=e=>{if(!I("EasyUse.Nodes.ChainGetSet",null,!0))return;((e,t=!1,n={})=>{var s,o,i,a,l;if(0===e.length)return;const r=n.inputX||160,d=n.ouputX||60;if(e.filter((e=>Ne(e))).length>1)return;for(const u of e){let a=0,l=0;const c=n.inputY||10,p=n.outputY||30,h=[];if(u.graph){for(const e of u.inputs??[]){const t=e.link;if(!t)continue;const{origin_id:n,target_slot:s}=Ae(t),o=be(n);if(!o)continue;if(!Ne(o))continue;const i=u.getConnectionPos(!0,s);o.pos=[i[0]-r,i[1]+15+a*c],a+=1,h.push(o),o.flags.collapsed=!0}for(const e of u.outputs??[])if(e.links&&u.graph)for(const t of e.links){const{target_id:e}=Ae(t),n=be(e);if(!n)continue;if(!Ne(n))continue;const o=null==(s=n.outputs)?void 0:s.links;if((null==o?void 0:o.length)>1)return;const i=u.getConnectionPos(!1,0);n.pos=[i[0]+d,i[1]+15+l*p],l+=1,h.push(n),n.flags.collapsed=!0}if(t&&1===e.length){const e=[u,...h];(null==(i=null==(o=u.graph)?void 0:o.list_of_graphcanvas)?void 0:i[0]).selectNodes(e)}}}const c=e[0];if(!c)return;(null==(l=null==(a=c.graph)?void 0:a.list_of_graphcanvas)?void 0:l[0]).setDirty(!0,!0)})(Le())};const e=LGraphCanvas.prototype.showLinkMenu;LGraphCanvas.prototype.showLinkMenu=function(t,n){return n.shiftKey?(((e,t=!1)=>{var n,s,o,i,a,l,r,d,c,u;const{type:p}=e;if("*"===p)return;let{origin_id:h,target_id:m,origin_slot:g,target_slot:f}=e,y=be(h),_=be(m);if(!y||!_)return!1;if("Reroute"===y.type){let e=0;[y,e]=Ge(y),h=null==y?void 0:y.id,g=e,void 0!==g&&-1!==g||(g=0)}if("Reroute"===_.type&&(_=Me(_),m=null==_?void 0:_.id,f=null==_?void 0:_.inputs.findIndex((e=>e.type===p)),void 0!==f&&-1!==f||(f=0)),void 0===h||void 0===m||!y||!_)return!1;if(t&&(Ne(y)||Ne(_)))return!1;let v=ke((null==(n=_.getInputInfo(f))?void 0:n.name)??p.toLowerCase());v||(v=ke((null==(o=null==(s=null==y?void 0:y.outputs)?void 0:s[g])?void 0:o.name)??(null==(a=null==(i=null==y?void 0:y.outputs)?void 0:i[g])?void 0:a.type.toString())??v+`_from_${h}_to_${m}`));let w,b=!1,L=!1;if(Ne(y))v=ve(y),L=!0;else{const e=null==(r=null==(l=y.outputs)?void 0:l[g])?void 0:r.links;if(e)for(const t of e){const e=be((null==(d=Ae(t))?void 0:d.target_id)??-1);e&&Ne(e)&&xe(e)&&(v=ve(e),L=!0)}if(!L){for(const e of Te()){if(v!==ve(e)||!xe(e))continue;const t=null==(c=e.inputs[0])?void 0:c.link;(null==(u=Ae(t))?void 0:u.origin_id)===y.id?L=!0:b=!0}b&&(v+=`_from_${h}_to_${m}`)}}if(!L){w=LiteGraph.createNode("easy setNode"),w.is_auto_link=!0;const e=y.getConnectionPos(!1,g);w.pos=[e[0]+20,e[1]],w.inputs[0].name=v,w.inputs[0].type=p,w.inputs[0].widget=_.inputs[f].widget,Oe(w,v),De(w),w.flags.collapsed=!0;let t=[];y.widgets?t=Object.values(y.widgets).map((e=>e.value)):y.widgets_values&&(t=JSON.parse(JSON.stringify(y.widgets_values))),y.connect(g,w,0),y.widgets_values=t,"PrimitiveNode"===y.type&&setTimeout((()=>{if(y){y.connect(g,w,0);for(const[e,n]of t.entries())Oe(y,n,e);null!==w&&w.setSize(w.computeSize())}}))}const S=LiteGraph.createNode("easy getNode"),E=_.getConnectionPos(!0,f);S.pos=[E[0]-150,E[1]],S.outputs[0].name=v,S.outputs[0].type=p,S.outputs[0].widget=_.inputs[f].widget,De(S),Oe(S,v),null===S||(S.flags.collapsed=!0,S.setSize(S.computeSize()),S.connect(0,_,f))})(t),!1):(e.apply(this,[t,n]),!1)}}});let Ze=[];function Ke(e,t,n,s,o){var i=LGraphCanvas.active_canvas,a=i.getCanvasWindow(),l=i.graph;if(l)return function e(t,s){var r=LiteGraph.getNodeTypesCategories(i.filter||l.filter).filter((function(e){return e.startsWith(t)})),d=[];r.map((function(n){if(n){var s=new RegExp("^("+t+")"),o=n.replace(s,"").split("/")[0],i=""===t?o+"/":t+o+"/",a=o;-1!=a.indexOf("::")&&(a=a.split("::")[1]),-1===d.findIndex((function(e){return e.value===i}))&&d.push({value:i,content:a,has_submenu:!0,callback:function(t,n,s,o){e(t.value,o)}})}})),LiteGraph.getNodeTypesInCategory(t.slice(0,-1),i.filter||l.filter).map((function(e){if(!e.skip_list){var t={value:e.type,content:e.title,has_submenu:!1,callback:function(e,t,n,s){var a=s.getFirstEvent();i.graph.beforeChange();var l=LiteGraph.createNode(e.value);l&&(l.pos=i.convertEventToCanvasOffset(a),i.graph.add(l)),o&&o(l),i.graph.afterChange()}};d.push(t)}}));const c=I("EasyUse.ContextMenu.NodesSort",null,!0);""===t&&c&&(d=function(e){let t=[],n=[];return e.forEach((e=>{(null==e?void 0:e.value)&&F.includes(e.value.split("/")[0])?t.push(e):n.push(e)})),[{title:Z("ComfyUI Basic"),is_category_title:!0},...t,{title:Z("Others A~Z"),is_category_title:!0},...n.sort(((e,t)=>e.content.localeCompare(t.content)))]}(d)),new LiteGraph.ContextMenu(d,{event:n,parentMenu:s},a)}("",s),!1}w.registerExtension({name:"Comfy.EasyUse.ContextMenu",async setup(){LGraphCanvas.onMenuAdd=Ke;const e=I("EasyUse.ContextMenu.ModelsThumbnailsLimit",null,500),t=await b.fetchApi(`/easyuse/models/thumbnail?limit=${e}`);if(200===t.status){let e=await t.json();Ze=e}else $.error(Z("Too many thumbnails, have closed the display"));const n=LiteGraph.ContextMenu;LiteGraph.ContextMenu=function(e,t){if(I("EasyUse.ContextMenu.SubDirectories",null,!1)&&(null==t?void 0:t.callback)&&!e.some((e=>"string"!=typeof e))){const s=function(e,t){const n=e,s=[...n],o={},i=[],a=[],l=["ckpt","pt","bin","pth","safetensors"];if((null==e?void 0:e.length)>0){const t=Qe(e[e.length-1]);if(!l.includes(t))return null}for(const r of n){const e=r.indexOf("/")>-1?"/":"\\",t=r.split(e);if(t.length>1){const n=t.shift();o[n]=o[n]||[],o[n].push(t.join(e))}else"CHOOSE"===r||r.startsWith("DISABLE ")?i.push(r):a.push(r)}if(Object.values(o).length>0){const e=t.callback;t.callback=null;const n=(t,n)=>{["None","无","無","なし"].includes(t.content)?e("None",n):e(s.find((e=>e.endsWith(t.content)),n))},r=(e,t="")=>{const s=t?t+"\\"+qe(e):qe(e),o=Qe(e),i=(new Date).getTime();let a,r="";if(l.includes(o))for(let n=0;n{let n=[],s=[];const i=e.map((e=>{const i={},a=e.indexOf("/")>-1?"/":"\\",l=e.split(a);if(l.length>1){const e=l.shift();i[e]=i[e]||[],i[e].push(l.join(a))}if(Object.values(o).length>0){let t=Object.keys(i)[0];t&&i[t]?n.push({key:t,value:i[t][0]}):s.push(r(e,t))}return r(e,t)}));if(n.length>0){let e={};return n.forEach((t=>{e[t.key]=e[t.key]||[],e[t.key].push(t.value)})),[...Object.entries(e).map((e=>({content:e[0],has_submenu:!0,callback:()=>{},submenu:{options:c(e[1],e[0])}}))),...s]}return i};for(const[t,s]of Object.entries(o))d.push({content:t,has_submenu:!0,callback:()=>{},submenu:{options:c(s,t)}});return d.push(...a.map((e=>r(e,"")))),i.length>0&&d.push(...i.map((e=>r(e,"")))),d}return null}(e,t);return s?n.call(this,s,t):n.apply(this,[...arguments])}return t.parentMenu||t.extra||t.scale||t.hasOwnProperty("extra")&&(e.unshift(null),s=window.location.host,["192.168.","10.","127.",/^172\.((1[6-9]|2[0-9]|3[0-1])\.)/].some((e=>"string"==typeof e?s.startsWith(e):e.test(s)))&&e.unshift({content:`${Z("Reboot ComfyUI")}`,callback:e=>(async()=>{if(confirm(Z("Are you sure you'd like to reboot the server?")))try{b.fetchApi("/easyuse/reboot")}catch(e){}})()}),e.unshift({content:`${Z("Cleanup Of VRAM Usage")}`,callback:e=>q()})),n.apply(this,[...arguments]);var s},LiteGraph.ContextMenu.prototype=n.prototype,I("EasyUse.ContextMenu.NodesSort",null,!0)&&(LiteGraph.ContextMenu.prototype.addItem=$e)}});const Je=e=>e&&"object"==typeof e&&"image"in e&&e.content;function $e(e,t,n){var s=this;n=n||{};var o=document.createElement("div");o.className="litemenu-entry submenu";var i,a=!1;function l(e){var t=this.value,o=!0;(s.current_submenu&&s.current_submenu.close(e),n.callback)&&(!0===n.callback.call(this,t,n,e,s,n.node)&&(o=!1));if(t){if(t.callback&&!n.ignore_item_callbacks&&!0!==t.disabled)!0===t.callback.call(this,t,n,e,s,n.extra)&&(o=!1);if(t.submenu){if(!t.submenu.options)throw"ContextMenu submenu needs options";new s.constructor(t.submenu.options,{callback:t.submenu.callback,event:e,parentMenu:s,ignore_item_callbacks:t.submenu.ignore_item_callbacks,title:t.submenu.title,extra:t.submenu.extra,autoopen:n.autoopen}),o=!1}}o&&!s.lock&&s.close()}return null===t?o.classList.add("separator"):t.is_category_title?(o.classList.remove("litemenu-entry"),o.classList.remove("submenu"),o.classList.add("litemenu-title"),o.innerHTML=t.title):(o.innerHTML=t&&t.title?t.title:e,o.value=t,t&&(t.disabled&&(a=!0,o.classList.add("disabled")),(t.submenu||t.has_submenu)&&o.classList.add("has_submenu")),"function"==typeof t?(o.dataset.value=e,o.onclick_callback=t):o.dataset.value=t,t.className&&(o.className+=" "+t.className)),o&&Je(t)&&(null==t?void 0:t.image)&&!t.submenu&&(o.textContent+=" *",L("div.pysssss-combo-image",{parent:o,style:{backgroundImage:`url(/pysssss/view/${i=t.image,encodeURIComponent(i).replace(/[!'()*]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`))})`}})),this.root.appendChild(o),a||o.addEventListener("click",l),!a&&n.autoopen&&LiteGraph.pointerListenerAdd(o,"enter",(function(e){var t=this.value;if(!t||!t.has_submenu)return;l.call(this,e)})),o}function qe(e){return null==e?void 0:e.substring(0,e.lastIndexOf("."))}function Qe(e){return null==e?void 0:e.substring(e.lastIndexOf(".")+1)}class et extends S{constructor(){super(),this.element.classList.add("easyuse-model-metadata")}show(e){super.show(L("div",Object.keys(e).map((t=>L("div",[L("label",{textContent:t}),L("span",{textContent:e[t]})])))))}}class tt extends S{constructor(e){super(),this.name=e,this.element.classList.add("easyuse-model-info")}get customNotes(){return this.metadata["easyuse.notes"]}set customNotes(e){this.metadata["easyuse.notes"]=e}get hash(){return this.metadata["easyuse.sha256"]}async show(e,t){this.type=e;const n=b.fetchApi("/easyuse/metadata/"+encodeURIComponent(`${e}/${t}`));this.info=L("div",{style:{flex:"auto"}}),this.imgCurrent=0,this.imgList=L("div.easyuse-preview-list",{style:{display:"none"}}),this.imgWrapper=L("div.easyuse-preview",[L("div.easyuse-preview-group",[this.imgList])]),this.main=L("main",{style:{display:"flex"}},[this.imgWrapper,this.info]),this.content=L("div.easyuse-model-content",[L("div.easyuse-model-header",[L("h2",{textContent:this.name})]),this.main]);const s=L("div",{textContent:"ℹ️ Loading...",parent:this.content});super.show(this.content),this.metadata=await(await n).json(),this.viewMetadata.style.cursor=this.viewMetadata.style.opacity="",this.viewMetadata.removeAttribute("disabled"),s.remove(),this.addInfo()}createButtons(){const e=super.createButtons();return this.viewMetadata=L("button",{type:"button",textContent:"View raw metadata",disabled:"disabled",style:{opacity:.5,cursor:"not-allowed"},onclick:e=>{this.metadata&&(new et).show(this.metadata)}}),e.unshift(this.viewMetadata),e}parseNote(){if(!this.customNotes)return[];let e=[];const t=new RegExp("(\\bhttps?:\\/\\/[^\\s]+)","g");let n,s=0;do{let o;n=t.exec(this.customNotes);let i=0;n?(o=n.index,i=n.index+n[0].length):o=this.customNotes.length;let a=this.customNotes.substring(s,o);a&&(a=a.replaceAll("\n","
"),e.push(L("span",{innerHTML:a}))),n&&e.push(L("a",{href:n[0],textContent:n[0],target:"_blank"})),s=i}while(n);return e}addInfoEntry(e,t){return L("p",{parent:this.info},["string"==typeof e?L("label",{textContent:e+": "}):e,"string"==typeof t?L("span",{textContent:t}):t])}async getCivitaiDetails(){const e=await fetch("https://civitai.com/api/v1/model-versions/by-hash/"+this.hash);if(200===e.status)return await e.json();throw 404===e.status?new Error("Model not found"):new Error(`Error loading info (${e.status}) ${e.statusText}`)}addCivitaiInfo(){const e=this.getCivitaiDetails(),t=L("span",{textContent:"ℹ️ Loading..."});return this.addInfoEntry(L("label",[L("img",{style:{width:"18px",position:"relative",top:"3px",margin:"0 5px 0 0"},src:"https://civitai.com/favicon.ico"}),L("span",{textContent:"Civitai: "})]),t),e.then((e=>{var t,n;this.imgWrapper.style.display="block";let s=this.element.querySelector(".easyuse-model-header");s&&s.replaceChildren(L("h2",{textContent:this.name}),L("div.easyuse-model-header-remark",[L("h5",{textContent:Z("Updated At:")+O(new Date(e.updatedAt),"yyyy/MM/dd")}),L("h5",{textContent:Z("Created At:")+O(new Date(e.updatedAt),"yyyy/MM/dd")})]));let o=null,i=this.parseNote.call(this),a=Z("✏️ Edit"),l=L("div.easyuse-model-detail-textarea",[L("p",(null==i?void 0:i.length)>0?i:{textContent:Z("No notes")})]);if(i&&0!=i.length?l.classList.remove("empty"):l.classList.add("empty"),this.info.replaceChildren(L("div.easyuse-model-detail",[L("div.easyuse-model-detail-head.flex-b",[L("span",Z("Notes")),L("a",{textContent:a,href:"#",style:{fontSize:"12px",float:"right",color:"var(--warning-color)",textDecoration:"none"},onclick:async e=>{if(e.preventDefault(),o){if(o.value!=this.customNotes){toast.showLoading(Z("Saving Notes...")),this.customNotes=o.value;const e=await b.fetchApi("/easyuse/metadata/notes/"+encodeURIComponent(`${this.type}/${this.name}`),{method:"POST",body:this.customNotes});if(toast.hideLoading(),200!==e.status)return toast.error(Z("Saving Failed")),void alert(`Error saving notes (${e.status}) ${e.statusText}`);toast.success(Z("Saving Succeed")),i=this.parseNote.call(this),l.replaceChildren(L("p",(null==i?void 0:i.length)>0?i:{textContent:Z("No notes")})),o.value?l.classList.remove("empty"):l.classList.add("empty")}else l.replaceChildren(L("p",{textContent:Z("No notes")})),l.classList.add("empty");e.target.textContent=a,o.remove(),o=null}else e.target.textContent="💾 Save",o=L("textarea",{placeholder:Z("Type your notes here"),style:{width:"100%",minWidth:"200px",minHeight:"50px",height:"100px"},textContent:this.customNotes}),l.replaceChildren(o),o.focus()}})]),l]),L("div.easyuse-model-detail",[L("div.easyuse-model-detail-head",{textContent:Z("Details")}),L("div.easyuse-model-detail-body",[L("div.easyuse-model-detail-item",[L("div.easyuse-model-detail-item-label",{textContent:Z("Type")}),L("div.easyuse-model-detail-item-value",{textContent:e.model.type})]),L("div.easyuse-model-detail-item",[L("div.easyuse-model-detail-item-label",{textContent:Z("BaseModel")}),L("div.easyuse-model-detail-item-value",{textContent:e.baseModel})]),L("div.easyuse-model-detail-item",[L("div.easyuse-model-detail-item-label",{textContent:Z("Download")}),L("div.easyuse-model-detail-item-value",{textContent:(null==(t=e.stats)?void 0:t.downloadCount)||0})]),L("div.easyuse-model-detail-item",[L("div.easyuse-model-detail-item-label",{textContent:Z("Trained Words")}),L("div.easyuse-model-detail-item-value",{textContent:(null==e?void 0:e.trainedWords.join(","))||"-"})]),L("div.easyuse-model-detail-item",[L("div.easyuse-model-detail-item-label",{textContent:Z("Source")}),L("div.easyuse-model-detail-item-value",[L("label",[L("img",{style:{width:"14px",position:"relative",top:"3px",margin:"0 5px 0 0"},src:"https://civitai.com/favicon.ico"}),L("a",{href:"https://civitai.com/models/"+e.modelId,textContent:"View "+e.model.name,target:"_blank"})])])])])])),null==(n=e.images)?void 0:n.length){this.imgCurrent=0,this.isSaving=!1,e.images.map((e=>e.url&&this.imgList.appendChild(L("div.easyuse-preview-slide",[L("div.easyuse-preview-slide-content",[L("img",{src:e.url}),L("div.save",{textContent:"Save as preview",onclick:async()=>{if(this.isSaving)return;this.isSaving=!0,toast.showLoading(Z("Saving Preview..."));const t=await(await fetch(e.url)).blob(),n="temp_preview."+new URL(e.url).pathname.split(".")[1],s=new FormData;s.append("image",new File([t],n)),s.append("overwrite","true"),s.append("type","temp");if(200!==(await b.fetchApi("/upload/image",{method:"POST",body:s})).status)return this.isSaving=!1,toast.error(Z("Saving Failed")),toast.hideLoading(),void alert(`Error saving preview (${req.status}) ${req.statusText}`);await b.fetchApi("/easyuse/save/"+encodeURIComponent(`${this.type}/${this.name}`),{method:"POST",body:JSON.stringify({filename:n,type:"temp"}),headers:{"content-type":"application/json"}}).then((e=>{toast.success(Z("Saving Succeed")),toast.hideLoading()})),this.isSaving=!1,app.refreshComboInNodes()}})])]))));let t=this;this.imgDistance=(-660*this.imgCurrent).toString(),this.imgList.style.display="",this.imgList.style.transform="translate3d("+this.imgDistance+"px, 0px, 0px)",this.slides=this.imgList.querySelectorAll(".easyuse-preview-slide"),this.slideLeftButton=L("button.left",{parent:this.imgWrapper,style:{display:e.images.length<=2?"none":"block"},innerHTML:'',onclick:()=>{e.images.length<=2||(t.imgList.classList.remove("no-transition"),0==t.imgCurrent?(t.imgCurrent=e.images.length/2-1,this.slides[this.slides.length-1].style.transform="translate3d("+(-660*(this.imgCurrent+1)).toString()+"px, 0px, 0px)",this.slides[this.slides.length-2].style.transform="translate3d("+(-660*(this.imgCurrent+1)).toString()+"px, 0px, 0px)",t.imgList.style.transform="translate3d(660px, 0px, 0px)",setTimeout((e=>{this.slides[this.slides.length-1].style.transform="translate3d(0px, 0px, 0px)",this.slides[this.slides.length-2].style.transform="translate3d(0px, 0px, 0px)",t.imgDistance=(-660*this.imgCurrent).toString(),t.imgList.style.transform="translate3d("+t.imgDistance+"px, 0px, 0px)",t.imgList.classList.add("no-transition")}),500)):(t.imgCurrent=t.imgCurrent-1,t.imgDistance=(-660*this.imgCurrent).toString(),t.imgList.style.transform="translate3d("+t.imgDistance+"px, 0px, 0px)"))}}),this.slideRightButton=L("button.right",{parent:this.imgWrapper,style:{display:e.images.length<=2?"none":"block"},innerHTML:'',onclick:()=>{if(!(e.images.length<=2))if(t.imgList.classList.remove("no-transition"),t.imgCurrent>=e.images.length/2-1){t.imgCurrent=0;const n=e.images.length/2;this.slides[0].style.transform="translate3d("+(660*n).toString()+"px, 0px, 0px)",this.slides[1].style.transform="translate3d("+(660*n).toString()+"px, 0px, 0px)",t.imgList.style.transform="translate3d("+(-660*n).toString()+"px, 0px, 0px)",setTimeout((e=>{this.slides[0].style.transform="translate3d(0px, 0px, 0px)",this.slides[1].style.transform="translate3d(0px, 0px, 0px)",t.imgDistance=(-660*this.imgCurrent).toString(),t.imgList.style.transform="translate3d("+t.imgDistance+"px, 0px, 0px)",t.imgList.classList.add("no-transition")}),500)}else t.imgCurrent=t.imgCurrent+1,t.imgDistance=(-660*this.imgCurrent).toString(),t.imgList.style.transform="translate3d("+t.imgDistance+"px, 0px, 0px)"}})}return e.description&&L("div",{parent:this.content,innerHTML:e.description,style:{marginTop:"10px"}}),e})).catch((e=>{this.imgWrapper.style.display="none",t.textContent="⚠️ "+e.message})).finally((e=>{}))}}class nt extends tt{async addInfo(){await this.addCivitaiInfo()}}class st extends tt{getTagFrequency(){if(!this.metadata.ss_tag_frequency)return[];const e=JSON.parse(this.metadata.ss_tag_frequency),t={};for(const n in e){const s=e[n];for(const e in s)e in t?t[e]+=s[e]:t[e]=s[e]}return Object.entries(t).sort(((e,t)=>t[1]-e[1]))}getResolutions(){let e=[];if(this.metadata.ss_bucket_info){const t=JSON.parse(this.metadata.ss_bucket_info);if(null==t?void 0:t.buckets)for(const{resolution:n,count:s}of Object.values(t.buckets))e.push([s,`${n.join("x")} * ${s}`])}e=e.sort(((e,t)=>t[0]-e[0])).map((e=>e[1]));let t=this.metadata.ss_resolution;if(t){const n=t.split(","),s=n[0].replace("(",""),o=n[1].replace(")","");e.push(`${s.trim()}x${o.trim()} (Base res)`)}else(t=this.metadata["modelspec.resolution"])&&e.push(t+" (Base res");return e.length||e.push("⚠️ Unknown"),e}getTagList(e){return e.map((e=>L("li.easyuse-model-tag",{dataset:{tag:e[0]},$:e=>{e.onclick=()=>{e.classList.toggle("easyuse-model-tag--selected")}}},[L("p",{textContent:e[0]}),L("span",{textContent:e[1]})])))}addTags(){let e,t=this.getTagFrequency();if(null==t?void 0:t.length){const n=t.length;let s;n>500&&(t=t.slice(0,500),e=L("p",[L("span",{textContent:"⚠️ Only showing first 500 tags "}),L("a",{href:"#",textContent:`Show all ${n}`,onclick:()=>{s.replaceChildren(...this.getTagList(this.getTagFrequency())),e.remove()}})])),s=L("ol.easyuse-model-tags-list",this.getTagList(t)),this.tags=L("div",[s])}else this.tags=L("p",{textContent:"⚠️ No tag frequency metadata found"});this.content.append(this.tags),e&&this.content.append(e)}async addInfo(){const e=this.addCivitaiInfo();this.addTags();const t=await e;t&&L("div",{parent:this.content,innerHTML:t.description,style:{maxHeight:"250px",overflow:"auto"}})}createButtons(){const e=super.createButtons();function t(e,t){const n=L("textarea",{parent:document.body,style:{position:"fixed"},textContent:t.map((e=>e.dataset.tag)).join(", ")});n.select();try{document.execCommand("copy"),e.target.dataset.text||(e.target.dataset.text=e.target.textContent),e.target.textContent="Copied "+t.length+" tags",setTimeout((()=>{e.target.textContent=e.target.dataset.text}),1e3)}catch(s){prompt("Copy to clipboard: Ctrl+C, Enter",text)}finally{document.body.removeChild(n)}}return e.unshift(L("button",{type:"button",textContent:"Copy Selected",onclick:e=>{t(e,[...this.tags.querySelectorAll(".easyuse-model-tag--selected")])}}),L("button",{type:"button",textContent:"Copy All",onclick:e=>{t(e,[...this.tags.querySelectorAll(".easyuse-model-tag")])}})),e}}const ot=["easy fullLoader","easy a1111Loader","easy comfyLoader","easy kolorsLoader","easy hunyuanDiTLoader","easy pixArtLoader"],it=["easy preSampling","easy preSamplingAdvanced","easy preSamplingDynamicCFG","easy preSamplingNoiseIn","easy preSamplingCustom","easy preSamplingLayerDiffusion","easy fullkSampler"],at=["KSamplerSelect","SamplerEulerAncestral","SamplerEulerAncestralCFG++","SamplerLMS","SamplerDPMPP_3M_SDE","SamplerDPMPP_2M_SDE","SamplerDPMPP_SDE","SamplerDPMAdaptative","SamplerLCMUpscale","SamplerTCD","SamplerTCD EulerA"],lt=["BasicScheduler","KarrasScheduler","ExponentialScheduler","PolyexponentialScheduler","VPScheduler","BetaSamplingScheduler","SDTurboScheduler","SplitSigmas","SplitSigmasDenoise","FlipSigmas","AlignYourStepsScheduler","GITSScheduler"],rt=["easy kSampler","easy kSamplerTiled","easy kSamplerInpainting","easy kSamplerDownscaleUnet","easy kSamplerLayerDiffusion"],dt=["easy controlnetLoader","easy controlnetLoaderADV","easy controlnetLoader++","easy instantIDApply","easy instantIDApplyADV"],ct=["easy ipadapterApply","easy ipadapterApplyADV","easy ipadapterApplyFaceIDKolors","easy ipadapterStyleComposition","easy ipadapterApplyFromParams","easy pulIDApply","easy pulIDApplyADV"],ut=["easy positive","easy wildcards"],pt=["easy loadImageBase64","LoadImage","LoadImageMask"],ht=["easy applyBrushNet","easy applyPowerPaint","easy applyInpaint"],mt={positive_prompt:{text:"positive",positive:"text"},loaders:{ckpt_name:"ckpt_name",vae_name:"vae_name",clip_skip:"clip_skip",lora_name:"lora_name",resolution:"resolution",empty_latent_width:"empty_latent_width",empty_latent_height:"empty_latent_height",positive:"positive",negative:"negative",batch_size:"batch_size",a1111_prompt_style:"a1111_prompt_style"},preSampling:{steps:"steps",cfg:"cfg",cfg_scale_min:"cfg",sampler_name:"sampler_name",scheduler:"scheduler",denoise:"denoise",seed_num:"seed_num",seed:"seed"},kSampler:{image_output:"image_output",save_prefix:"save_prefix",link_id:"link_id"},controlnet:{control_net_name:"control_net_name",strength:["strength","cn_strength"],scale_soft_weights:["scale_soft_weights","cn_soft_weights"],cn_strength:["strength","cn_strength"],cn_soft_weights:["scale_soft_weights","cn_soft_weights"]},ipadapter:{preset:"preset",lora_strength:"lora_strength",provider:"provider",weight:"weight",weight_faceidv2:"weight_faceidv2",start_at:"start_at",end_at:"end_at",cache_mode:"cache_mode",use_tiled:"use_tiled",insightface:"insightface",pulid_file:"pulid_file"},load_image:{image:"image",base64_data:"base64_data",channel:"channel"},inpaint:{dtype:"dtype",fitting:"fitting",function:"function",scale:"scale",start_at:"start_at",end_at:"end_at"},sampler:{},sigmas:{}},gt={loaders:{optional_lora_stack:"optional_lora_stack",positive:"positive",negative:"negative"},preSampling:{pipe:"pipe",image_to_latent:"image_to_latent",latent:"latent"},kSampler:{pipe:"pipe",model:"model"},controlnet:{pipe:"pipe",image:"image",image_kps:"image_kps",control_net:"control_net",positive:"positive",negative:"negative",mask:"mask"},positive_prompt:{},ipadapter:{model:"model",image:"image",image_style:"image",attn_mask:"attn_mask",optional_ipadapter:"optional_ipadapter"},inpaint:{pipe:"pipe",image:"image",mask:"mask"},sampler:{},sigmas:{}},ft={loaders:{pipe:"pipe",model:"model",vae:"vae",clip:null,positive:null,negative:null,latent:null},preSampling:{pipe:"pipe"},kSampler:{pipe:"pipe",image:"image"},controlnet:{pipe:"pipe",positive:"positive",negative:"negative"},positive_prompt:{text:"positive",positive:"text"},load_image:{IMAGE:"IMAGE",MASK:"MASK"},ipadapter:{model:"model",tiles:"tiles",masks:"masks",ipadapter:"ipadapter"},inpaint:{pipe:"pipe"},sampler:{SAMPLER:"SAMPLER"},sigmas:{SIGMAS:"SIGMAS"}};function yt(e,t,n){return function(){!function(e,t,n){const s=LiteGraph.createNode(t);if(s){if(w.graph.add(s),s.pos=e.pos.slice(),s.size=e.size.slice(),e.widgets.forEach((e=>{if(mt[n][e.name]){const o=mt[n][e.name];if(o){const n=(t=o,s.widgets.find((e=>"object"==typeof t?t.includes(e.name):e.name===t)));n&&(n.value=e.value,"seed_num"==e.name&&(n.linkedWidgets[0].value=e.linkedWidgets[0].value),"converted-widget"==e.type&&Et(s,n,e))}}var t})),e.inputs&&e.inputs.forEach(((t,o)=>{if(t&&t.link&>[n][t.name]){const o=gt[n][t.name];if(null===o)return;const i=s.findInputSlot(o);if(-1!==i){const n=e.graph.links[t.link];if(n){const t=e.graph.getNodeById(n.origin_id);t&&t.connect(n.origin_slot,s,i)}}}})),e.outputs&&e.outputs.forEach(((t,o)=>{if(t&&t.links&&ft[n]&&ft[n][t.name]){const o=ft[n][t.name];if(null===o)return;const i=s.findOutputSlot(o);-1!==i&&t.links.forEach((t=>{const n=e.graph.links[t];if(n){const t=e.graph.getNodeById(n.target_id);t&&s.connect(i,t,n.target_slot)}}))}})),w.graph.remove(e),"easy fullkSampler"==s.type){const e=s.outputs[0].links;if(e&&e[0]){const t=w.graph._nodes.find((t=>t.inputs&&t.inputs[0]&&t.inputs[0].link==e[0]));t&&w.graph.remove(t)}}else if(it.includes(s.type)){const e=s.outputs[0].links;if(!e||!e[0]){const e=LiteGraph.createNode("easy kSampler");w.graph.add(e),e.pos=s.pos.slice(),e.pos[0]=e.pos[0]+s.size[0]+20;const t=s.findInputSlot("pipe");-1!==t&&s&&s.connect(0,e,t)}}s.setSize([s.size[0],s.computeSize()[1]])}}(e,t,n)}}const _t=(e,t)=>{const n=e.prototype.getExtraMenuOptions;e.prototype.getExtraMenuOptions=function(){const e=n.apply(this,arguments);return t.apply(this,arguments),e}},vt=(e,t,n,s,o=!0)=>{_t(s,(function(s,i){i.unshift({content:e,has_submenu:o,callback:(e,s,o,i,a)=>wt(e,s,o,i,a,t,n)}),"loaders"==t&&(i.unshift({content:Z("💎 View Lora Info..."),callback:(e,t,n,s,o)=>{let i=o.widgets.find((e=>"lora_name"==e.name)).value;i&&"None"!=i&&new st(i).show("loras",i)}}),i.unshift({content:Z("💎 View Checkpoint Info..."),callback:(e,t,n,s,o)=>{let i=o.widgets[0].value;i&&"None"!=i&&new nt(i).show("checkpoints",i)}}))}))},wt=(e,t,n,s,o,i,a)=>{const l=[];return a.map((e=>{o.type!==e&&l.push({content:`${e}`,callback:yt(o,e,i)})})),new LiteGraph.ContextMenu(l,{event:n,callback:null,parentMenu:s,node:o}),!1},bt="converted-widget",Lt=Symbol();function St(e,t,n=""){if(t.origType=t.type,t.origComputeSize=t.computeSize,t.origSerializeValue=t.serializeValue,t.computeSize=()=>[0,-4],t.type=bt+n,t.serializeValue=()=>{if(!e.inputs)return;let n=e.inputs.find((e=>{var n;return(null==(n=e.widget)?void 0:n.name)===t.name}));return n&&n.link?t.origSerializeValue?t.origSerializeValue():t.value:void 0},t.linkedWidgets)for(const s of t.linkedWidgets)St(e,s,":"+t.name)}function Et(e,t,n){St(e,t);const{type:s}=function(e){let t=e[0];t instanceof Array&&(t="COMBO");return{type:t}}(n),o=e.size;t.options&&t.options.forceInput||e.addInput(t.name,s,{widget:{name:t.name,[Lt]:()=>n}});for(const i of e.widgets)i.last_y+=LiteGraph.NODE_SLOT_HEIGHT;e.setSize([Math.max(o[0],e.size[0]),Math.max(o[1],e.size[1])])}const Ct=function(e){var t,n,s,o;const i=e.constructor.type,a=e.properties.origVals||{},l=a.title||e.title,r=a.color||e.color,d=a.bgcolor||e.bgcolor,c=e,u={size:[...e.size],color:r,bgcolor:d,pos:[...e.pos]};let p=[],h=[];if(e.inputs)for(const y of e.inputs)if(y.link){const t=y.name,n=e.findInputSlot(t),s=e.getInputNode(n),o=e.getInputLink(n);p.push([o.origin_slot,s,t])}if(e.outputs)for(const y of e.outputs)if(y.links){const e=y.name;for(const t of y.links){const n=graph.links[t],s=graph._nodes_by_id[n.target_id];h.push([e,s,n.target_slot])}}w.graph.remove(e);const m=w.graph.add(LiteGraph.createNode(i,l,u));function g(){if(c.widgets)for(let e of c.widgets)if("converted-widget"===e.type){const t=m.widgets.find((t=>t.name===e.name));for(let n of c.inputs)n.name===e.name&&Et(m,t,n.widget)}for(let e of p){const[t,n,s]=e;n.connect(t,m.id,s)}for(let e of h){const[t,n,s]=e;m.connect(t,n,s)}}let f=c.widgets_values;if(!f&&(null==(t=m.widgets)?void 0:t.length)>0)return m.widgets.forEach(((e,t)=>{const n=c.widgets[t];e.name===n.name&&e.type===n.type&&(e.value=n.value)})),void g();if(f){let e=function(e,t){var n,s,o,i,a,l;if(!0===e||!1===e){if((null==(n=t.options)?void 0:n.on)&&(null==(s=t.options)?void 0:s.off))return{value:e,pass:!0}}else if("number"==typeof e){if((null==(o=t.options)?void 0:o.min)<=e&&e<=(null==(i=t.options)?void 0:i.max))return{value:e,pass:!0}}else{if(null==(l=null==(a=t.options)?void 0:a.values)?void 0:l.includes(e))return{value:e,pass:!0};if(t.inputEl&&"string"==typeof e)return{value:e,pass:!0}}return{value:t.value,pass:!1}},t=!1;const i=(null==f?void 0:f.length)<=(null==(n=m.widgets)?void 0:n.length);let a=i?0:f.length-1;const l=n=>{var s;const o=c.widgets[n];let l=m.widgets[n];if(l.name===o.name&&l.type===o.type){for(;(i?a=0)&&!t;){let{value:t,pass:n}=e(f[a],l);if(n&&null!==t){l.value=t;break}a+=i?1:-1}a++,i||(a=f.length-((null==(s=m.widgets)?void 0:s.length)-1-n))}};if(i&&(null==(s=m.widgets)?void 0:s.length)>0)for(let n=0;n0)for(let n=m.widgets.length-1;n>=0;n--)l(n)}g()};w.registerExtension({name:"Comfy.EasyUse.ExtraMenu",async beforeRegisterNodeDef(e,t,n){_t(e,(function(e,n){n.unshift({content:Z("🔃 Reload Node"),callback:(e,t,n,s,o)=>{let i=LGraphCanvas.active_canvas;if(!i.selected_nodes||Object.keys(i.selected_nodes).length<=1)Ct(o);else for(let a in i.selected_nodes)Ct(i.selected_nodes[a])}}),"easy ckptNames"==t.name&&n.unshift({content:Z("💎 View Checkpoint Info..."),callback:(e,t,n,s,o)=>{o.widgets[0].value}})})),ut.includes(t.name)&&vt("↪️ Swap EasyPrompt","positive_prompt",ut,e),ot.includes(t.name)&&vt("↪️ Swap EasyLoader","loaders",ot,e),it.includes(t.name)&&vt("↪️ Swap EasyPreSampling","preSampling",it,e),rt.includes(t.name)&&vt("↪️ Swap EasyKSampler","preSampling",rt,e),at.includes(t.name)&&vt("↪️ Swap Custom Sampler","sampler",at,e),lt.includes(t.name)&&vt("↪️ Swap Custom Sigmas","sigmas",lt,e),dt.includes(t.name)&&vt("↪️ Swap EasyControlnet","controlnet",dt,e),ct.includes(t.name)&&vt("↪️ Swap EasyAdapater","ipadapter",ct,e),pt.includes(t.name)&&vt("↪️ Swap LoadImage","load_image",pt,e),ht.includes(t.name)&&vt("↪️ Swap InpaintNode","inpaint",ht,e)}});const At="➡️";w.registerExtension({name:"easy setNode",registerCustomNodes(){class e{constructor(){f(this,"defaultVisibility",!0),f(this,"serialize_widgets",!0),this.properties||(this.properties={previousName:""}),this.properties.showOutputText=e.defaultVisibility;const t=this;t.color=LGraphCanvas.node_colors.blue.color,this.addWidget("text","Constant","",((e,n,s,o,i)=>{t.validateName(t.graph),""!==this.widgets[0].value&&(this.title=At+this.widgets[0].value),this.update(),this.properties.previousName=this.widgets[0].value}),{}),this.addInput("*","*"),this.onConnectionsChange=function(e,n,s,o,i){if(1!=e||s||(this.inputs[n].type="*",this.inputs[n].name="*",this.title="Set"),o&&t.graph&&1==e&&s){const e=t.graph._nodes.find((e=>e.id==o.origin_id)).outputs[o.origin_slot],n=e.type,s=t.is_auto_link?this.widgets[0].value:e.name;"Set"===this.title&&(this.title=At+s,this.widgets[0].value=s),"*"===this.widgets[0].value&&(this.widgets[0].value=s),this.validateName(t.graph),this.inputs[0].type=n,this.inputs[0].name=s,setTimeout((e=>{this.title=At+this.widgets[0].value}),1)}this.update()},this.validateName=function(e){let n=t.widgets[0].value;if(""!=n){let s=0,o=[];do{o=e._nodes.filter((e=>e!=this&&("easy setNode"==e.type&&e.widgets[0].value===n))),o.length>0&&(n=t.widgets[0].value+s),s++}while(o.length>0);t.widgets[0].value=n,this.update()}},this.clone=function(){const t=e.prototype.clone.apply(this);return t.inputs[0].name="*",t.inputs[0].type="*",t.properties.previousName="",t.size=t.computeSize(),t},this.onAdded=function(e){this.validateName(e)},this.update=function(){if(t.graph){this.findGetters(t.graph).forEach((e=>{e.setType(this.inputs[0].type)})),this.widgets[0].value&&this.findGetters(t.graph,!0).forEach((e=>{e.setName(this.widgets[0].value)}));t.graph._nodes.filter((e=>"easy getNode"==e.type)).forEach((e=>{e.setComboValues&&e.setComboValues()}))}},this.findGetters=function(e,t){const n=t?this.properties.previousName:this.widgets[0].value;return e._nodes.filter((e=>"easy getNode"==e.type&&e.widgets[0].value===n&&""!=n))},this.isVirtualNode=!0}onRemoved(){this.graph._nodes.filter((e=>"easy getNode"==e.type)).forEach((e=>{e.setComboValues&&e.setComboValues([this])}))}}LiteGraph.registerNodeType("easy setNode",Object.assign(e,{title:"Set"})),e.category="EasyUse/Util"}}),w.registerExtension({name:"easy getNode",registerCustomNodes(){class e{constructor(){f(this,"defaultVisibility",!0),f(this,"serialize_widgets",!0),this.properties||(this.properties={}),this.properties.showOutputText=e.defaultVisibility;const t=this;t.color=LGraphCanvas.node_colors.blue.color,this.addWidget("combo","Constant","",(e=>{this.onRename()}),{values:()=>t.graph._nodes.filter((e=>"easy setNode"==e.type)).map((e=>e.widgets[0].value)).sort()}),this.addOutput("*","*"),this.onConnectionsChange=function(e,t,n,s,o){this.validateLinks(),2!=e||n?(this.onRename(),setTimeout((e=>{this.title="⬅️"+this.widgets[0].value}),1)):(this.outputs[t].type="*",this.outputs[t].name="*",this.title="Get")},this.setName=function(e){t.widgets[0].value=e,t.onRename(),t.serialize()},this.onRename=function(e=0){const n=this.findSetter(t.graph);if(n){const t=n.inputs[0].type,s=n.inputs[0].name;this.setType(t,s),this.outputs[e].type=t,this.outputs[e].name=s,this.title="⬅️"+n.widgets[0].value}else this.setType("*","*"),this.outputs[e].type="*",this.outputs[e].name="*"},this.clone=function(){const t=e.prototype.clone.apply(this);return t.size=t.computeSize(),t},this.validateLinks=function(){"*"!=this.outputs[0].type&&this.outputs[0].links&&this.outputs[0].links.forEach((e=>{const n=t.graph.links[e];n&&n.type!=this.outputs[0].type&&"*"!=n.type&&t.graph.removeLink(e)}))},this.setType=function(e,t){this.outputs[0].name=t,this.outputs[0].type=e,this.validateLinks()},this.findSetter=function(e){const t=this.widgets[0].value;return e._nodes.find((e=>"easy setNode"==e.type&&e.widgets[0].value===t&&""!=t))},this.isVirtualNode=!0}getInputLink(e){const t=this.findSetter(this.graph);if(t){const n=t.inputs[e];return this.graph.links[n.link]}throw new Error("No setter found for "+this.widgets[0].value+"("+this.type+")")}onAdded(e){}}LiteGraph.registerNodeType("easy getNode",Object.assign(e,{title:"Get"})),e.category="EasyUse/Util"}}),b.addEventListener("easyuse-global-seed",(function(e){let t=app.graph._nodes_by_id;for(let n in t){let s=t[n];if("easy globalSeed"==s.type){if(s.widgets){const t=s.widgets.find((e=>"value"==e.name));s.widgets.find((e=>"last_seed"==e.name)).value=t.value,t.value=e.detail.value}}else if(s.widgets){const t=s.widgets.find((e=>"seed_num"==e.name||"seed"==e.name||"noise_seed"==e.name));t&&null!=e.detail.seed_map[s.id]&&(t.value=e.detail.seed_map[s.id])}}}));const kt=b.queuePrompt;b.queuePrompt=async function(e,{output:t,workflow:n}){n.seed_widgets={};for(let s in app.graph._nodes_by_id){let e=app.graph._nodes_by_id[s].widgets;if(e)for(let t in e)"seed_num"!=e[t].name&&"seed"!=e[t].name&&"noise_seed"!=e[t].name||"converted-widget"==e[t].type||(n.seed_widgets[s]=parseInt(t))}return await kt.call(b,e,{output:t,workflow:n})};const It=["easy imageSave","easy fullkSampler","easy kSampler","easy kSamplerTiled","easy kSamplerInpainting","easy kSamplerDownscaleUnet","easy kSamplerSDTurbo","easy detailerFix"];w.registerExtension({name:"Comfy.EasyUse.SaveImageExtraOutput",async beforeRegisterNodeDef(e,t,n){if(It.includes(t.name)){const t=e.prototype.onNodeCreated;e.prototype.onNodeCreated=function(){const e=t?t.apply(this,arguments):void 0,s=this.widgets.find((e=>"filename_prefix"===e.name||"save_prefix"===e.name));return s.serializeValue=()=>C(n,s.value),e}}else{const t=e.prototype.onNodeCreated;e.prototype.onNodeCreated=function(){const e=t?t.apply(this,arguments):void 0;return this.properties&&"Node name for S&R"in this.properties||this.addProperty("Node name for S&R",this.constructor.type,"string"),e}}}});const xt=["easy wildcards","easy positive","easy negative","easy stylesSelector","easy promptConcat","easy promptReplace"],Nt=["easy preSampling","easy preSamplingAdvanced","easy preSamplingNoiseIn","easy preSamplingCustom","easy preSamplingDynamicCFG","easy preSamplingSdTurbo","easy preSamplingLayerDiffusion"],Tt=["easy kSampler","easy kSamplerTiled","easy kSamplerInpainting","easy kSamplerDownscaleUnet","easy kSamplerSDTurbo"],Ot=["easy controlnetLoader","easy controlnetLoaderADV"],Dt=["easy instantIDApply","easy instantIDApplyADV"],Rt=["easy ipadapterApply","easy ipadapterApplyADV","easy ipadapterApplyFaceIDKolors","easy ipadapterStyleComposition"],Gt=["easy pipeIn","easy pipeOut","easy pipeEdit"],Mt=["easy XYPlot","easy XYPlotAdvanced"],Pt=["easy setNode"],Ft=["Reroute","RescaleCFG","LoraLoaderModelOnly","LoraLoader","FreeU","FreeU_v2",...Rt,...Pt],Ut={"easy seed":{from:{INT:["Reroute",...Nt,"easy fullkSampler"]}},"easy positive":{from:{STRING:["Reroute",...xt]}},"easy negative":{from:{STRING:["Reroute",...xt]}},"easy wildcards":{from:{STRING:["Reroute","easy showAnything",...xt]}},"easy stylesSelector":{from:{STRING:["Reroute","easy showAnything",...xt]}},"easy promptConcat":{from:{STRING:["Reroute","easy showAnything",...xt]}},"easy promptReplace":{from:{STRING:["Reroute","easy showAnything",...xt]}},"easy fullLoader":{from:{PIPE_LINE:["Reroute",...Nt,"easy fullkSampler",...Gt,...Pt],MODEL:Ft},to:{STRING:["Reroute",...xt]}},"easy a1111Loader":{from:{PIPE_LINE:["Reroute",...Nt,...Ot,...Dt,...Gt,...Pt],MODEL:Ft},to:{STRING:["Reroute",...xt]}},"easy comfyLoader":{from:{PIPE_LINE:["Reroute",...Nt,...Ot,...Dt,...Gt,...Pt],MODEL:Ft},to:{STRING:["Reroute",...xt]}},"easy hunyuanDiTLoader":{from:{PIPE_LINE:["Reroute",...Nt,...Ot,...Dt,...Gt,...Pt],MODEL:Ft},to:{STRING:["Reroute",...xt]}},"easy kolorsLoader":{from:{PIPE_LINE:["Reroute",...Nt,...Ot,...Dt,...Gt,...Pt],MODEL:Ft},to:{STRING:["Reroute",...xt]}},"easy pixArtLoader":{from:{PIPE_LINE:["Reroute",...Nt,...Ot,...Dt,...Gt,...Pt],MODEL:Ft},to:{STRING:["Reroute",...xt]}},"easy svdLoader":{from:{PIPE_LINE:["Reroute","easy preSampling","easy preSamplingAdvanced","easy preSamplingDynamicCFG",...Gt,...Pt],MODEL:Ft},to:{STRING:["Reroute",...xt]}},"easy zero123Loader":{from:{PIPE_LINE:["Reroute","easy preSampling","easy preSamplingAdvanced","easy preSamplingDynamicCFG",...Gt,...Pt],MODEL:Ft},to:{STRING:["Reroute",...xt]}},"easy sv3dLoader":{from:{PIPE_LINE:["Reroute","easy preSampling","easy preSamplingAdvanced","easy preSamplingDynamicCFG",...Gt,...Pt],MODEL:Ft},to:{STRING:["Reroute",...xt]}},"easy preSampling":{from:{PIPE_LINE:["Reroute",...Tt,...Gt,...Ot,...Mt,...Pt]}},"easy preSamplingAdvanced":{from:{PIPE_LINE:["Reroute",...Tt,...Gt,...Ot,...Mt,...Pt]}},"easy preSamplingDynamicCFG":{from:{PIPE_LINE:["Reroute",...Tt,...Gt,...Ot,...Mt,...Pt]}},"easy preSamplingCustom":{from:{PIPE_LINE:["Reroute",...Tt,...Gt,...Ot,...Mt,...Pt]}},"easy preSamplingLayerDiffusion":{from:{PIPE_LINE:["Reroute","easy kSamplerLayerDiffusion",...Tt,...Gt,...Ot,...Mt,...Pt]}},"easy preSamplingNoiseIn":{from:{PIPE_LINE:["Reroute",...Tt,...Gt,...Ot,...Mt,...Pt]}},"easy fullkSampler":{from:{PIPE_LINE:["Reroute",...Gt.reverse(),"easy preDetailerFix","easy preMaskDetailerFix",...Nt,...Pt]}},"easy kSampler":{from:{PIPE_LINE:["Reroute",...Gt.reverse(),"easy preDetailerFix","easy preMaskDetailerFix","easy hiresFix",...Nt,...Pt]}},"easy controlnetLoader":{from:{PIPE_LINE:["Reroute",...Nt,...Ot,...Dt,...Gt,...Pt]}},"easy controlnetLoaderADV":{from:{PIPE_LINE:["Reroute",...Nt,...Ot,...Dt,...Gt,...Pt]}},"easy instantIDApply":{from:{PIPE_LINE:["Reroute",...Nt,...Ot,...Dt,...Gt,...Pt],MODEL:Ft},to:{COMBO:["Reroute","easy promptLine"]}},"easy instantIDApplyADV":{from:{PIPE_LINE:["Reroute",...Nt,...Ot,...Dt,...Gt,...Pt],MODEL:Ft},to:{COMBO:["Reroute","easy promptLine"]}},"easy ipadapterApply":{to:{COMBO:["Reroute","easy promptLine"]}},"easy ipadapterApplyADV":{to:{STRING:["Reroute","easy sliderControl",...xt],COMBO:["Reroute","easy promptLine"]}},"easy ipadapterStyleComposition":{to:{COMBO:["Reroute","easy promptLine"]}},"easy preDetailerFix":{from:{PIPE_LINE:["Reroute","easy detailerFix",...Gt,...Pt]},to:{PIPE_LINE:["Reroute","easy ultralyticsDetectorPipe","easy samLoaderPipe","easy kSampler","easy fullkSampler"]}},"easy preMaskDetailerFix":{from:{PIPE_LINE:["Reroute","easy detailerFix",...Gt,...Pt]}},"easy samLoaderPipe":{from:{PIPE_LINE:["Reroute","easy preDetailerFix",...Gt,...Pt]}},"easy ultralyticsDetectorPipe":{from:{PIPE_LINE:["Reroute","easy preDetailerFix",...Gt,...Pt]}},"easy cascadeLoader":{from:{PIPE_LINE:["Reroute","easy fullCascadeKSampler","easy preSamplingCascade",...Ot,...Gt,...Pt],MODEL:Ft.filter((e=>!Rt.includes(e)))}},"easy fullCascadeKSampler":{from:{PIPE_LINE:["Reroute","easy preSampling","easy preSamplingAdvanced",...Gt,...Pt]}},"easy preSamplingCascade":{from:{PIPE_LINE:["Reroute","easy cascadeKSampler",...Gt,...Pt]}},"easy cascadeKSampler":{from:{PIPE_LINE:["Reroute","easy preSampling","easy preSamplingAdvanced",...Gt,...Pt]}}};w.registerExtension({name:"Comfy.EasyUse.Suggestions",async setup(e){LGraphCanvas.prototype.createDefaultNodeForSlot=function(e){e=e||{};var t,n=Object.assign({nodeFrom:null,slotFrom:null,nodeTo:null,slotTo:null,position:[],nodeType:null,posAdd:[0,0],posSizeFix:[0,0]},e),s=n.nodeFrom&&null!==n.slotFrom,o=!s&&n.nodeTo&&null!==n.slotTo;if(!s&&!o)return!1;if(!n.nodeType)return!1;var i=s?n.nodeFrom:n.nodeTo,a=s?n.slotFrom:n.slotTo,l=i.type,r=!1;switch(typeof a){case"string":r=s?i.findOutputSlot(a,!1):i.findInputSlot(a,!1),a=s?i.outputs[a]:i.inputs[a];break;case"object":r=s?i.findOutputSlot(a.name):i.findInputSlot(a.name);break;case"number":r=a,a=s?i.outputs[a]:i.inputs[a];break;default:return!1}var d=a.type==LiteGraph.EVENT?"_event_":a.type,c=s?LiteGraph.slot_types_default_out:LiteGraph.slot_types_default_in;if(c&&c[d]){a.link;let e=!1;const o=s?"from":"to";if(Ut[l]&&Ut[l][o]&&(null==(t=Ut[l][o][d])?void 0:t.length)>0){for(var u in Ut[l][o][d])if(n.nodeType==Ut[l][o][d][u]||"AUTO"==n.nodeType){e=Ut[l][o][d][u];break}}else if("object"==typeof c[d]||"array"==typeof c[d]){for(var u in c[d])if(n.nodeType==c[d][u]||"AUTO"==n.nodeType){e=c[d][u];break}}else n.nodeType!=c[d]&&"AUTO"!=n.nodeType||(e=c[d]);if(e){var p=!1;"object"==typeof e&&e.node&&(p=e,e=e.node);var h=LiteGraph.createNode(e);if(h){if(p){if(p.properties)for(var m in p.properties)h.addProperty(m,p.properties[m]);if(p.inputs)for(var m in h.inputs=[],p.inputs)h.addOutput(p.inputs[m][0],p.inputs[m][1]);if(p.outputs)for(var m in h.outputs=[],p.outputs)h.addOutput(p.outputs[m][0],p.outputs[m][1]);p.title&&(h.title=p.title),p.json&&h.configure(p.json)}return this.graph.add(h),h.pos=[n.position[0]+n.posAdd[0]+(n.posSizeFix[0]?n.posSizeFix[0]*h.size[0]:0),n.position[1]+n.posAdd[1]+(n.posSizeFix[1]?n.posSizeFix[1]*h.size[1]:0)],s?n.nodeFrom.connectByType(r,h,d):n.nodeTo.connectByTypeOutput(r,h,d),!0}}}return!1},LGraphCanvas.prototype.showConnectionMenu=function(e){e=e||{};var t,n=Object.assign({nodeFrom:null,slotFrom:null,nodeTo:null,slotTo:null,e:null},e),s=this,o=n.nodeFrom&&n.slotFrom,i=!o&&n.nodeTo&&n.slotTo;if(!o&&!i)return!1;var a=o?n.nodeFrom:n.nodeTo,l=o?n.slotFrom:n.slotTo,r=!1;switch(typeof l){case"string":r=o?a.findOutputSlot(l,!1):a.findInputSlot(l,!1),l=o?a.outputs[l]:a.inputs[l];break;case"object":r=o?a.findOutputSlot(l.name):a.findInputSlot(l.name);break;case"number":r=l,l=o?a.outputs[l]:a.inputs[l];break;default:return!1}var d=["Add Node",null];s.allow_searchbox&&(d.push("Search"),d.push(null));var c=l.type==LiteGraph.EVENT?"_event_":l.type,u=o?LiteGraph.slot_types_default_out:LiteGraph.slot_types_default_in,p=a.type;if(u&&u[c]){const e=o?"from":"to";if(Ut[p]&&Ut[p][e]&&(null==(t=Ut[p][e][c])?void 0:t.length)>0)for(var h in Ut[p][e][c])d.push(Ut[p][e][c][h]);else if("object"==typeof u[c]||"array"==typeof u[c])for(var h in u[c])d.push(u[c][h]);else d.push(u[c])}var m=new LiteGraph.ContextMenu(d,{event:n.e,title:(l&&""!=l.name?l.name+(c?" | ":""):"")+(l&&c?c:""),callback:function(e,t,i){switch(e){case"Add Node":LGraphCanvas.onMenuAdd(null,null,i,m,(function(e){o?n.nodeFrom.connectByType(r,e,c):n.nodeTo.connectByTypeOutput(r,e,c)}));break;case"Search":o?s.showSearchBox(i,{node_from:n.nodeFrom,slot_from:l,type_filter_in:c}):s.showSearchBox(i,{node_to:n.nodeTo,slot_from:l,type_filter_out:c});break;default:s.createDefaultNodeForSlot(Object.assign(n,{position:[n.e.canvasX,n.e.canvasY],nodeType:e}))}}});return!1}}}),w.registerExtension({name:"Comfy.EasyUse.TimeTaken",setup(){const e=new Map;let t=0;b.addEventListener("executing",(n=>{if(!I("EasyUse.Nodes.Runtime",null,!0))return;const s=(null==n?void 0:n.node)||(null==n?void 0:n.detail)||null,o=be(s);o&&(o.executionDuration="");const i=e.get(t);if(e.delete(t),t&&i){const e=Date.now()-i,n=be(t);n&&(n.executionDuration=`${(e/1e3).toFixed(2)}${Z("s")}`)}t=s,e.set(s,Date.now())}))},beforeRegisterNodeDef(e,t){const n=e.prototype.onDrawForeground;e.prototype.onDrawForeground=function(...e){const[t]=e;return function(e,t){if(!t)return;e.save(),e.fillStyle=LiteGraph.NODE_DEFAULT_BGCOLOR,function(e,t,n,s,o,i){e.beginPath(),e.moveTo(t+i,n),e.lineTo(t+s-i,n),e.arcTo(t+s,n,t+s,n+i,i),e.lineTo(t+s,n+o-i),e.arcTo(t+s,n+o,t+s-i,n+o,i),e.lineTo(t+i,n+o),e.arcTo(t,n+o,t,n+o-i,i),e.lineTo(t,n+i),e.arcTo(t,n,t+i,n,i),e.closePath()}(e,0,-LiteGraph.NODE_TITLE_HEIGHT-20,e.measureText(t).width+10,LiteGraph.NODE_TITLE_HEIGHT-10,4),e.fill(),function(e,t,n,s,o="#000",i=12,a="Inter"){e.font=`${i}px ${a}`,e.fillStyle=o,e.fillText(t,n,s)}(e,t,8,-LiteGraph.NODE_TITLE_HEIGHT-6,LiteGraph.NODE_TITLE_COLOR),e.restore()}(t,this.executionDuration||""),null==n?void 0:n.apply(this,e)}}});let Bt=null;w.registerExtension({name:"Comfy.EasyUse.HotKeys",setup(){if(void 0!==_){_("up,down,left,right",(function(e,t){var n,s,o,i,a,l,r,d,c,u,p,h,m,g,f;e.preventDefault();if(!I("EasyUse.Hotkeys.JumpNearestNodes",null,!0))return;const y=Le();if(0===y.length)return;const _=y[0];switch(t.key){case"up":case"left":let e=null;if(Ie(_)){const e=null==(n=_.widgets_values)?void 0:n[0],t=null==(s=_.graph)?void 0:s._nodes,o=null==t?void 0:t.find((t=>{var n;if(xe(t)){if((null==(n=t.widgets_values)?void 0:n[0])===e)return t}return null}));o&&Ee(o)}else if((null==(o=_.inputs)?void 0:o.length)>0){for(let t=0;t<_.inputs.length;t++)if(_.inputs[t].link){e=_.inputs[t].link;break}if(e){const t=null==(i=_.graph)?void 0:i.links;if(t[e]){const n=null==(a=t[e])?void 0:a.origin_id,s=null==(r=null==(l=_.graph)?void 0:l._nodes_by_id)?void 0:r[n];s&&Ee(s)}}}break;case"down":case"right":let t=null;if(xe(_)){const e=null==(d=_.widgets_values)?void 0:d[0],t=null==(c=_.graph)?void 0:c._nodes,n=null==t?void 0:t.find((t=>{var n;if(Ie(t)){if((null==(n=t.widgets_values)?void 0:n[0])===e)return t}return null}));n&&Ee(n)}else if((null==(u=_.outputs)?void 0:u.length)>0){for(let e=0;e<_.outputs.length;e++)if((null==(p=_.outputs[e].links)?void 0:p.length)>0&&_.outputs[e].links[0]){t=_.outputs[e].links[0];break}if(t){const e=null==(h=_.graph)?void 0:h.links;if(e[t]){const n=null==(m=e[t])?void 0:m.target_id,s=null==(f=null==(g=_.graph)?void 0:g._nodes_by_id)?void 0:f[n];s&&Ee(s)}}}}})),_("shift+up,shift+down,shift+left,shift+right",(function(e,t){e.preventDefault();if(!I("EasyUse.Hotkeys.AlignSelectedNodes",null,!0))return;const n=Le();if(n.length<=1)return;const s=n;switch(t.key){case"shift+up":LGraphCanvas.alignNodes(s,"top",s[0]);break;case"shift+down":LGraphCanvas.alignNodes(s,"bottom",s[0]);break;case"shift+left":LGraphCanvas.alignNodes(s,"left",s[0]);break;case"shift+right":LGraphCanvas.alignNodes(s,"right",s[0])}Bt||(Bt=Q()),Bt&&Bt.update()})),_("shift+g",(function(e,t){e.preventDefault();I("EasyUse.Hotkeys.AddGroup",null,!0)&&(Wt(),Bt||(Bt=Q()),Bt&&Bt.update())})),_("shift+r",(function(e,t){e.preventDefault();I("EasyUse.Hotkeys.cleanVRAMused",null,!0)&&q()}));const e=[];Array.from(Array(10).keys()).forEach((t=>e.push(`alt+${t}`))),_(e.join(","),(async function(e,t){e.preventDefault();if(!I("EasyUse.Hotkeys.NodesTemplate",null,!0))return;const n=t.key;let s=parseInt(n.split("+")[1]);const o=await b.getUserData("comfy.templates.json");let i=null;if(200==o.status)try{i=await o.json()}catch(l){$.error(Z("Get Node Templates File Failed"))}else localStorage["Comfy.NodeTemplates"]?i=JSON.parse(localStorage["Comfy.NodeTemplates"]):$.warn(Z("No Node Templates Found"));if(!i)return void $.warn(Z("No Node Templates Found"));s=0===s?9:s-1;const a=i[s];if(a)try{const e=(null==a?void 0:a.name)||"Group",t=(null==a?void 0:a.data)?JSON.parse(a.data):[];zt((async()=>{await A.registerFromWorkflow(t.groupNodes,{}),localStorage.litegrapheditor_clipboard=a.data,w.canvas.pasteFromClipboard(),t.groupNodes||Wt(e)}))}catch(l){$.error(l)}else $.warn(Z("Node template with {key} not set").replace("{key}",n))}));const t=async function(e){if(("b"===e.key||"m"==e.key)&&(e.metaKey||e.ctrlKey)){if(0===Le().length)return;Bt||(Bt=Q()),Bt&&Bt.update()}};window.addEventListener("keydown",t,!0)}}});const zt=async e=>{const t=localStorage.litegrapheditor_clipboard;await e(),localStorage.litegrapheditor_clipboard=t},Wt=e=>{const t=Le();if(0===t.length)return;const n=t;let s=new LiteGraph.LGraphGroup;s.title=e||"Group",((e,t=[],n=20)=>{var s,o,i,a,l,r,d,c,u,p;for(var h of(o=i=a=l=-1,r=d=c=u=-1,[e._nodes,t]))for(var m in h)r=(p=h[m]).pos[0],d=p.pos[1],c=p.pos[0]+p.size[0],u=p.pos[1]+p.size[1],"Reroute"!=p.type&&(d-=LiteGraph.NODE_TITLE_HEIGHT),(null==(s=p.flags)?void 0:s.collapsed)&&(u=d+LiteGraph.NODE_TITLE_HEIGHT,(null==p?void 0:p._collapsed_width)&&(c=r+Math.round(p._collapsed_width))),(-1==o||ra)&&(a=c),(-1==l||u>l)&&(l=u);i-=Math.round(1.4*e.font_size),e.pos=[o-n,i-n],e.size=[a-o+2*n,l-i+2*n]})(s,n),w.canvas.graph.add(s)};function jt(e,t,n,s){const o=[];return e.workflow.links.forEach((e=>{n&&e[1]===t&&!o.includes(e[3])&&o.push(e[3]),s&&e[3]===t&&!o.includes(e[1])&&o.push(e[1])})),o}async function Vt(e,t=!1){const n=structuredClone(await w.graphToPrompt()),s=[];if(n.workflow.nodes.forEach((e=>{s.push(e.id)})),n.workflow.links=n.workflow.links.filter((e=>s.includes(e[1])&&s.includes(e[3]))),t)for(;!w.graph._nodes_by_id[e].isChooser;)e=jt(n,e,!0,!1)[0];const o=function(e,t){const n=[],s=[t];for(;s.length>0;){const t=s.pop();n.push(t),s.push(...jt(e,t,!0,!1).filter((e=>!(n.includes(e)||s.includes(e)))))}s.push(...n.filter((e=>e!=t)));const o=[t];for(;s.length>0;){const t=s.pop();o.push(t),s.push(...jt(e,t,!1,!0).filter((e=>!(o.includes(e)||s.includes(e)))))}const i=[];return i.push(...n),i.push(...o.filter((e=>!i.includes(e)))),i}(n,e);n.workflow.nodes=n.workflow.nodes.filter((t=>(t.id===e&&t.inputs.forEach((e=>{e.link=null})),o.includes(t.id)))),n.workflow.links=n.workflow.links.filter((e=>o.includes(e[1])&&o.includes(e[3])));const i={};for(const[r,d]of Object.entries(n.output))o.includes(parseInt(r))&&(i[r]=d);const a={};for(const[r,d]of Object.entries(i[e.toString()].inputs))Array.isArray(d)||(a[r]=d);i[e.toString()].inputs=a,n.output=i;const l=w.graphToPrompt;w.graphToPrompt=()=>(w.graphToPrompt=l,n),w.queuePrompt(0)}const Yt=new class{constructor(){this.current_node_id=void 0,this.class_of_current_node=null,this.current_node_is_chooser=!1}update(){var e,t;return w.runningNodeId!=this.current_node_id&&(this.current_node_id=w.runningNodeId,this.current_node_id?(this.class_of_current_node=null==(t=null==(e=w.graph)?void 0:e._nodes_by_id[w.runningNodeId.toString()])?void 0:t.comfyClass,this.current_node_is_chooser="easy imageChooser"===this.class_of_current_node):(this.class_of_current_node=void 0,this.current_node_is_chooser=!1),!0)}},Ht=class e{constructor(){}static idle(){return!w.runningNodeId}static paused(){return!0}static paused_here(t){return e.here(t)}static running(){return!e.idle()}static here(e){return w.runningNodeId==e}static state(){return"Paused"}};f(Ht,"cancelling",!1);let Xt=Ht;function Zt(e,t){const n=new FormData;n.append("message",t),n.append("id",e),b.fetchApi("/easyuse/image_chooser_message",{method:"POST",body:n})}function Kt(){Zt(-1,"__cancel__"),Xt.cancelling=!0,b.interrupt(),Xt.cancelling=!1}var Jt=0;function $t(){Jt+=1}const qt=["easy kSampler","easy kSamplerTiled","easy fullkSampler"];function Qt(e){const t=w.graph._nodes_by_id[e.detail.id];if(t){t.selected=new Set,t.anti_selected=new Set;const n=function(e,t){var n;return e.imgs=[],t.forEach((t=>{const n=new Image;e.imgs.push(n),n.onload=()=>{w.graph.setDirtyCanvas(!0)},n.src=`/view?filename=${encodeURIComponent(t.filename)}&type=temp&subfolder=${w.getPreviewFormatParam()}`})),null==(n=e.setSizeForImage)||n.call(e),e.imgs}(t,e.detail.urls);return{node:t,image:n,isKSampler:qt.includes(t.type)}}}function en(e,t,n){var s;if(e.imageRects)s=e.imageRects[t];else{const t=e.imagey;s=[1,t+1,e.size[0]-2,e.size[1]-t-2]}n.strokeRect(s[0]+1,s[1]+1,s[2]-2,s[3]-2)}class tn extends S{constructor(){super(),this.node=null,this.select_index=[],this.dialog_div=null}show(e,t){this.select_index=[],this.node=t;const n=e.map(((e,n)=>{const s=L("img",{src:e.src,onclick:e=>{this.select_index.includes(n)?(this.select_index=this.select_index.filter((e=>e!==n)),s.classList.remove("selected")):(this.select_index.push(n),s.classList.add("selected")),t.selected.has(n)?t.selected.delete(n):t.selected.add(n)}});return s}));super.show(L("div.comfyui-easyuse-chooser-dialog",[L("h5.comfyui-easyuse-chooser-dialog-title",Z("Choose images to continue")),L("div.comfyui-easyuse-chooser-dialog-images",n)]))}createButtons(){const e=super.createButtons();return e[0].onclick=e=>{Xt.running()&&Kt(),super.close()},e.unshift(L("button",{type:"button",textContent:Z("Choose Selected Images"),onclick:e=>{Zt(this.node.id,[...this.node.selected,-1,...this.node.anti_selected]),Xt.idle()&&($t(),Vt(this.node.id).then((()=>{Zt(this.node.id,[...this.node.selected,-1,...this.node.anti_selected])}))),super.close()}})),e}}function nn(){const e=w.graph._nodes_by_id[this.node_id];if(e){const t=[...e.selected];(null==t?void 0:t.length)>0&&e.setProperty("values",t),Zt(e.id,[...e.selected,-1,...e.anti_selected]),Xt.idle()&&($t(),Vt(e.id).then((()=>{Zt(e.id,[...e.selected,-1,...e.anti_selected])})))}}function sn(){Xt.running()&&Kt()}function on(e){Object.defineProperty(e,"clicked",{get:function(){return this._clicked},set:function(e){this._clicked=e&&""!=this.name}})}function an(e){e.options||(e.options={}),e.options.serialize=!1}w.registerExtension({name:"Comfy.EasyUse.imageChooser",init(){window.addEventListener("beforeunload",Kt,!0)},setup(e){const t=LGraphCanvas.prototype.draw;LGraphCanvas.prototype.draw=function(){Yt.update()&&e.graph._nodes.forEach((e=>{e.update&&e.update()})),t.apply(this,arguments)},b.addEventListener("easyuse-image-choose",(function(e){const{node:t,image:n,isKSampler:s}=Qt(e);if(s){(new tn).show(n,t)}}));const n=b.interrupt;b.interrupt=function(){Xt.cancelling||Kt(),n.apply(this,arguments)},b.addEventListener("execution_start",(function(){(Jt>0?(Jt-=1,0):(Zt(-1,"__start__"),1))&&e.graph._nodes.forEach((e=>{(e.selected||e.anti_selected)&&(e.selected.clear(),e.anti_selected.clear(),e.update())}))}))},async nodeCreated(e,t){if("easy imageChooser"==e.comfyClass){e.setProperty("values",[]),void 0===(null==e?void 0:e.imageIndex)&&Object.defineProperty(e,"imageIndex",{get:function(){return null},set:function(t){e.overIndex=t}}),void 0===(null==e?void 0:e.imagey)&&Object.defineProperty(e,"imagey",{get:function(){return null},set:function(t){return e.widgets[e.widgets.length-1].last_y+LiteGraph.NODE_WIDGET_HEIGHT}});const t=e.onMouseDown;e.onMouseDown=function(n,s,o){if(n.isPrimary){const t=function(e,t){var n,s;if((null==(n=e.imgs)?void 0:n.length)>1)for(var o=0;o0&&n0&&se.imagey)return 0;return-1}(e,s);t>=0&&this.imageClicked(t)}return t&&t.apply(this,arguments)},e.send_button_widget=e.addWidget("button","","",nn),e.cancel_button_widget=e.addWidget("button","","",sn),on(e.cancel_button_widget),on(e.send_button_widget),an(e.cancel_button_widget),an(e.send_button_widget)}},beforeRegisterNodeDef(e,t,n){if("easy imageChooser"==(null==t?void 0:t.name)){const t=e.prototype.onDrawBackground;e.prototype.onDrawBackground=function(e){t.apply(this,arguments),function(e,t){var n,s;if(e.imgs){if(e.imageRects)for(let n=0;n{en(e,n,t)})),t.strokeStyle="#F88",null==(s=null==e?void 0:e.anti_selected)||s.forEach((n=>{en(e,n,t)}))}}(this,e)},e.prototype.imageClicked=function(t){"easy imageChooser"===(null==e?void 0:e.comfyClass)&&(this.selected.has(t)?this.selected.delete(t):this.selected.add(t),this.update())};const n=e.prototype.update;e.prototype.update=function(){var e;if(n&&n.apply(this,arguments),this.send_button_widget){this.send_button_widget.node_id=this.id;const t=(this.selected?this.selected.size:0)+(this.anti_selected?this.anti_selected.size:0),n=(null==(e=this.imgs)?void 0:e.length)||0;Xt.paused_here(this.id)&&t>0?this.send_button_widget.name=t>1?"Progress selected ("+t+"/"+n+")":"Progress selected image":this.send_button_widget.name=t>0?t>1?"Progress selected ("+t+"/"+n+")":"Progress selected image as restart":""}if(this.cancel_button_widget){const e=Xt.running();this.cancel_button_widget.name=e?"Cancel current run":""}this.setDirtyCanvas(!0,!0)}}}}),Number.prototype.div=function(e){return function(e,t){let n,s,o=0,i=0,a="string"==typeof e?e:e.toString(),l="string"==typeof t?t:t.toString();try{o=a.toString().split(".")[1].length}catch(r){}try{i=l.toString().split(".")[1].length}catch(r){}return n=Number(a.toString().replace(".","")),s=Number(l.toString().replace(".","")),n/s*Math.pow(10,i-o)}(this,e)};let ln=[],rn=0;const dn={sd3:6.5,"sd3-turbo":4};class cn extends S{constructor(){super(),this.lists=[],this.dialog_div=null,this.user_div=null}addItem(e,t){return L("div.easyuse-account-dialog-item",[L("input",{type:"text",placeholder:"Enter name",oninput:e=>{const t=Array.prototype.indexOf.call(this.dialog_div.querySelectorAll(".easyuse-account-dialog-item"),e.target.parentNode);ln[t].name=e.target.value},value:ln[e].name}),L("input.key",{type:"text",oninput:e=>{const t=Array.prototype.indexOf.call(this.dialog_div.querySelectorAll(".easyuse-account-dialog-item"),e.target.parentNode);ln[t].key=e.target.value},placeholder:"Enter APIKEY",value:ln[e].key}),L("button.choose",{textContent:Z("Choose"),onclick:async e=>{var n,s,o;const i=Array.prototype.indexOf.call(this.dialog_div.querySelectorAll(".easyuse-account-dialog-item"),e.target.parentNode);let a=ln[i].name,l=ln[i].key;if(!a)return void $.error(Z("Please enter the account name"));if(!l)return void $.error(Z("Please enter the APIKEY"));let r=!0;for(let t=0;t{(new cn).show(t)}},[L("div.user",[L("div.avatar",i?[L("img",{src:i})]:"😀"),L("div.info",[L("h5.name",a),L("h6.remark","Credits: "+l)])]),L("div.edit",{textContent:Z("Edit")})])),$.success(Z("Save Succeed"))}else $.success(Z("Save Succeed"));this.close()}else $.error(Z("Save Failed"))}}),L("button.delete",{textContent:Z("Delete"),onclick:e=>{const t=Array.prototype.indexOf.call(this.dialog_div.querySelectorAll(".easyuse-account-dialog-item"),e.target.parentNode);ln.length<=1?$.error(Z("At least one account is required")):(ln.splice(t,1),this.dialog_div.removeChild(e.target.parentNode))}})])}show(e){ln.forEach(((t,n)=>{this.lists.push(this.addItem(n,e))})),this.dialog_div=L("div.easyuse-account-dialog",this.lists),super.show(L("div.easyuse-account-dialog-main",[L("div",[L("a",{href:"https://platform.stability.ai/account/keys",target:"_blank",textContent:Z("Getting Your APIKEY")})]),this.dialog_div]))}createButtons(){const e=super.createButtons();return e.unshift(L("button",{type:"button",textContent:Z("Save Account Info"),onclick:e=>{let t=!0;for(let n=0;n{200==e.status?$.success(Z("Save Succeed")):$.error(Z("Save Failed"))}))}else $.error(Z("APIKEY is not Empty"))}})),e.unshift(L("button",{type:"button",textContent:Z("Add Account"),onclick:e=>{const t="Account "+ln.length.toString();ln.push({name:t,key:""});const n=this.addItem(ln.length-1);this.lists.push(n),this.dialog_div.appendChild(n)}})),e}}w.registerExtension({name:"Comfy.EasyUse.API.SD3",async beforeRegisterNodeDef(e,t,n){if("easy stableDiffusion3API"==t.name){const t=e.prototype.onNodeCreated;e.prototype.onNodeCreated=async function(){var e,n,s;t&&(null==t||t.apply(this,arguments));const o=this.widgets.find((e=>["seed_num","seed"].includes(e.name))),i=this.widgets.find((e=>["control_before_generate","control_after_generate"].includes(e.name)));let a=this.widgets.find((e=>"model"==e.name));a.callback=e=>{l.value="-"+dn[e]};const l=this.addWidget("text","cost_credit","0",(e=>{}),{serialize:!1});l.disabled=!0,setTimeout((e=>{"control_before_generate"==i.name&&0===o.value&&(o.value=Math.floor(4294967294*Math.random())),l.value="-"+dn[a.value]}),100);let r=L("div.easyuse-account-user",[Z("Loading UserInfo...")]);this.addDOMWidget("account","btn",L("div.easyuse-account",r)),b.addEventListener("stable-diffusion-api-generate-succeed",(async({detail:e})=>{var t;let n=r.querySelectorAll(".remark");if(n&&n[0]){const t=(null==e?void 0:e.model)?dn[e.model]:0;if(t){let e=function(e,t){let n,s,o,i,a,l;a="string"==typeof e?e:e.toString(),l="string"==typeof t?t:t.toString();try{n=a.split(".")[1].length}catch(r){n=0}try{s=l.split(".")[1].length}catch(r){s=0}return o=Math.pow(10,Math.max(n,s)),i=n>=s?n:s,((e*o-t*o)/o).toFixed(i)}(parseFloat(n[0].innerText.replace(/Credits: /g,"")),t);e>0&&(n[0].innerText="Credits: "+e.toString())}}await J(1e4);const s=await b.fetchApi("/easyuse/stability/balance");if(200==s.status){const e=await s.json();if(null==e?void 0:e.balance){const s=(null==(t=e.balance)?void 0:t.credits)||0;n&&n[0]&&(n[0].innerText="Credits: "+s)}}}));const d=await b.fetchApi("/easyuse/stability/api_keys");if(200==d.status){let t=await d.json();if(ln=t.keys,rn=t.current,ln.length>0&&void 0!==rn){const t=ln[rn].key,o=ln[rn].name;if(t){const t=await b.fetchApi("/easyuse/stability/user_info");if(200==t.status){const o=await t.json();if((null==o?void 0:o.account)&&(null==o?void 0:o.balance)){const t=(null==(e=o.account)?void 0:e.profile_picture)||null,i=(null==(n=o.account)?void 0:n.email)||null,a=(null==(s=o.balance)?void 0:s.credits)||0;r.replaceChildren(L("div.easyuse-account-user-info",{onclick:e=>{(new cn).show(r)}},[L("div.user",[L("div.avatar",t?[L("img",{src:t})]:"😀"),L("div.info",[L("h5.name",i),L("h6.remark","Credits: "+a)])]),L("div.edit",{textContent:Z("Edit")})]))}}}else r.replaceChildren(L("div.easyuse-account-user-info",{onclick:e=>{(new cn).show(r)}},[L("div.user",[L("div.avatar","😀"),L("div.info",[L("h5.name",o),L("h6.remark",Z("Click to set the APIKEY first"))])]),L("div.edit",{textContent:Z("Edit")})]))}}}}}});let un=null;function pn(){un&&(un.removeEventListeners(),un.dropdown.remove(),un=null)}function hn(e,t,n,s=!1){pn(),new mn(e,t,n,s)}class mn{constructor(e,t,n,s=!1){this.dropdown=document.createElement("ul"),this.dropdown.setAttribute("role","listbox"),this.dropdown.classList.add("easy-dropdown"),this.selectedIndex=-1,this.inputEl=e,this.suggestions=t,this.onSelect=n,this.isDict=s,this.focusedDropdown=this.dropdown,this.buildDropdown(),this.onKeyDownBound=this.onKeyDown.bind(this),this.onWheelBound=this.onWheel.bind(this),this.onClickBound=this.onClick.bind(this),this.addEventListeners()}buildDropdown(){this.isDict?this.buildNestedDropdown(this.suggestions,this.dropdown):this.suggestions.forEach(((e,t)=>{this.addListItem(e,t,this.dropdown)}));const e=this.inputEl.getBoundingClientRect();this.dropdown.style.top=e.top+e.height-10+"px",this.dropdown.style.left=e.left+"px",document.body.appendChild(this.dropdown),un=this}buildNestedDropdown(e,t){let n=0;Object.keys(e).forEach((s=>{const o=e[s];if("object"==typeof o&&null!==o){const e=document.createElement("ul");e.setAttribute("role","listbox"),e.classList.add("easy-nested-dropdown");const i=document.createElement("li");i.classList.add("folder"),i.textContent=s,i.appendChild(e),i.addEventListener("mouseover",this.onMouseOver.bind(this,n,t)),t.appendChild(i),this.buildNestedDropdown(o,e),n+=1}else{const e=document.createElement("li");e.classList.add("item"),e.setAttribute("role","option"),e.textContent=s,e.addEventListener("mouseover",this.onMouseOver.bind(this,n,t)),e.addEventListener("mousedown",this.onMouseDown.bind(this,s)),t.appendChild(e),n+=1}}))}addListItem(e,t,n){const s=document.createElement("li");s.setAttribute("role","option"),s.textContent=e,s.addEventListener("mouseover",this.onMouseOver.bind(this,t)),s.addEventListener("mousedown",this.onMouseDown.bind(this,e)),n.appendChild(s)}addEventListeners(){document.addEventListener("keydown",this.onKeyDownBound),this.dropdown.addEventListener("wheel",this.onWheelBound),document.addEventListener("click",this.onClickBound)}removeEventListeners(){document.removeEventListener("keydown",this.onKeyDownBound),this.dropdown.removeEventListener("wheel",this.onWheelBound),document.removeEventListener("click",this.onClickBound)}onMouseOver(e,t){t&&(this.focusedDropdown=t),this.selectedIndex=e,this.updateSelection()}onMouseOut(){this.selectedIndex=-1,this.updateSelection()}onMouseDown(e,t){t.preventDefault(),this.onSelect(e),this.dropdown.remove(),this.removeEventListeners()}onKeyDown(e){const t=Array.from(this.focusedDropdown.children),n=t[this.selectedIndex];if(un)if(38===e.keyCode)e.preventDefault(),this.selectedIndex=Math.max(0,this.selectedIndex-1),this.updateSelection();else if(40===e.keyCode)e.preventDefault(),this.selectedIndex=Math.min(t.length-1,this.selectedIndex+1),this.updateSelection();else if(39===e.keyCode){if(e.preventDefault(),n&&n.classList.contains("folder")){const e=n.querySelector(".easy-nested-dropdown");e&&(this.focusedDropdown=e,this.selectedIndex=0,this.updateSelection())}}else if(37===e.keyCode&&this.focusedDropdown!==this.dropdown){const e=this.focusedDropdown.closest(".easy-dropdown, .easy-nested-dropdown").parentNode.closest(".easy-dropdown, .easy-nested-dropdown");e&&(this.focusedDropdown=e,this.selectedIndex=Array.from(e.children).indexOf(this.focusedDropdown.parentNode),this.updateSelection())}else if((13===e.keyCode||9===e.keyCode)&&this.selectedIndex>=0){e.preventDefault(),n.classList.contains("item")&&(this.onSelect(t[this.selectedIndex].textContent),this.dropdown.remove(),this.removeEventListeners());const s=n.querySelector(".easy-nested-dropdown");s&&(this.focusedDropdown=s,this.selectedIndex=0,this.updateSelection())}else 27===e.keyCode&&(this.dropdown.remove(),this.removeEventListeners())}onWheel(e){const t=parseInt(this.dropdown.style.top);localStorage.getItem("Comfy.Settings.Comfy.InvertMenuScrolling")?this.dropdown.style.top=t+(e.deltaY<0?10:-10)+"px":this.dropdown.style.top=t+(e.deltaY<0?-10:10)+"px"}onClick(e){this.dropdown.contains(e.target)||e.target===this.inputEl||(this.dropdown.remove(),this.removeEventListeners())}updateSelection(){Array.from(this.focusedDropdown.children).forEach(((e,t)=>{t===this.selectedIndex?e.classList.add("selected"):e.classList.remove("selected")}))}}function gn(e){const t=e.min||0,n=e.max||0,s=e.step||1;if(0===s)return[];const o=[];let i=t;for(;i<=n;){if(Number.isInteger(s))o.push(Math.round(i)+"; ");else{let e=i.toFixed(3);-0==e&&(e="0.000"),/\.\d{3}$/.test(e)||(e+="0"),o.push(e+"; ")}i+=s}return n>=0&&t>=0?o:o.reverse()}let fn={},yn={};function _n(e,t){String(e.id);const n=t.name,s=t.value.replace(/^(loader|preSampling):\s/,"");yn[n]?yn[n]!=fn[s]&&(yn[n]=fn[s]):yn={...yn,[n]:fn[s]}}w.registerExtension({name:"Comfy.EasyUse.XYPlot",async beforeRegisterNodeDef(e,t,n){if("easy XYPlot"===t.name){fn=t.input.hidden.plot_dict[0];for(const e in fn){const t=fn[e];if(Array.isArray(t)){let n=[];for(const e of t)n.push(e+"; ");fn[e]=n}else fn[e]="object"==typeof t?"seed"==e?t+"; ":gn(t):t+"; "}fn.None=[],fn["---------------------"]=[]}},nodeCreated(e){"easy XYPlot"===e.comfyClass&&(function(e){if(e.widgets)for(const t of e.widgets)if("x_axis"===t.name||"y_axis"===t.name){let n=t.value;Object.defineProperty(t,"value",{get:()=>n,set(s){s!==n&&(n=s,_n(e,t))}})}}(e),function(e){if(e.widgets){const t=e.widgets.filter((e=>"customtext"===e.type&&!1!==e.dynamicPrompts||e.dynamicPrompts));for(const e of t){let t=function(e,t,s,o){return e&&(t[s]=e),t.map((e=>n(e,o))).filter((e=>""!==e)).join("")},n=function(e,t){if(e=s(e),o(e,t))return e+"; ";let n=i(e,t);return 1===n.length||2===n.length?n[0]:o(a(e),t)?a(e)+"; ":""},s=function(e){return e.replace(/(\n|;| )/g,"")},o=function(e,t){return t.includes(e+"; ")},i=function(e,t){return t.filter((t=>t.toLowerCase().includes(e.toLowerCase())))},a=function(e){return Number(e)?Number(e).toFixed(3):["0","0.","0.0","0.00","00"].includes(e)?"0.000":e};const l=function(){const n=e.name[0]+"_axis";let s=(null==yn?void 0:yn[n])||[];if(0===s.length)return;const o=e.inputEl.value,i=e.inputEl.selectionStart;let a=o.split("; ");const l=o.substring(0,i).split("; ").length-1,r=a[l].replace(/\n/g,"").toLowerCase(),d=s.filter((e=>e.toLowerCase().includes(r))).map((e=>e.replace(/; /g,"")));if(d.length>0)hn(e.inputEl,d,(n=>{const o=t(n,a,l,s);e.inputEl.value=o}));else{pn();const n=t(null,a,l,s);e.inputEl.value=n}};e.inputEl.removeEventListener("input",l),e.inputEl.addEventListener("input",l),e.inputEl.removeEventListener("mouseup",l),e.inputEl.addEventListener("mouseup",l)}}}(e))}});export{Z as $,U as N,b as a,w as b,_e as c,I as d,q as e,B as f,ye as g,x as h,Ce as j,X as l,J as s,$ as t,Q as u}; diff --git a/web_version/v2/assets/extensions-qfnDFtfW.js b/web_version/v2/assets/extensions-qfnDFtfW.js new file mode 100644 index 0000000..59a99ba --- /dev/null +++ b/web_version/v2/assets/extensions-qfnDFtfW.js @@ -0,0 +1 @@ +var e,t,n,s,o,i,a,l,r,d,u,c,p,h,m,g=Object.defineProperty,f=(e,t,n)=>((e,t,n)=>t in e?g(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n);import{d as y,h as _}from"./vendor-DT1J-jWa.js";import{c as v}from"./lodash-CZi7izHi.js";let w=(null==(t=null==(e=window.comfyAPI)?void 0:e.app)?void 0:t.app)||null,b=(null==(s=null==(n=window.comfyAPI)?void 0:n.api)?void 0:s.api)||null,L=(null==(i=null==(o=window.comfyAPI)?void 0:o.ui)?void 0:i.$el)||null,S=(null==(l=null==(a=window.comfyAPI)?void 0:a.dialog)?void 0:l.ComfyDialog)||null,E=(null==(d=null==(r=window.comfyAPI)?void 0:r.widgets)?void 0:d.ComfyWidgets)||null,C=(null==(c=null==(u=window.comfyAPI)?void 0:u.utils)?void 0:c.applyTextReplacements)||null,A=(null==(h=null==(p=window.comfyAPI)?void 0:p.groupNode)?void 0:h.GroupNodeConfig)||null;const k=(e,t=void 0)=>{var n,s;return e?null==(s=null==(n=null==w?void 0:w.ui)?void 0:n.settings)?void 0:s.getSettingValue(e,t):null};function I(e,t=null,n=void 0){try{let s=e?k(e,n):null;return void 0===s&&t&&(s=localStorage[e]),s}catch(s){return null}}function x(e,t=e=>{}){var n;const s=null==(n=w.ui.settings.settingsLookup)?void 0:n[e];s&&(s.onChange=e=>t(e))}async function N(e,t,n=null){var s,o;try{(null==(o=null==(s=null==w?void 0:w.ui)?void 0:s.settings)?void 0:o.setSettingValue)?w.ui.settings.setSettingValue(e,t):await b.storeSetting(e,t),n&&(localStorage[n]="object"==typeof t?JSON.stringify(t):t)}catch(i){}}function T(e){w.ui.settings.addSetting(e)}function O(e,t){if(e="number"==typeof e?e:e instanceof Date?e.getTime():parseInt(e),isNaN(e))return null;let n=new Date(e);(e=n.toString().split(/[\s\:]/g).slice(0,-2))[1]=["01","02","03","04","05","06","07","08","09","10","11","12"][n.getMonth()];let s={MM:1,dd:2,yyyy:3,hh:4,mm:5,ss:6};return t.replace(/([Mmdhs]|y{2})\1/g,(t=>e[s[t]]))}const D="comfyui-easyuse-",R="dark-theme",G="#236692",M={PIPE_LINE:"#7737AA",PIPE_LINE_SDXL:"#7737AA",INT:"#29699C",X_Y:"#38291f",XYPLOT:"#74DA5D",LORA_STACK:"#94dccd",CONTROL_NET_STACK:"#94dccd",FLOW_CONTROL:"#373780"},P=0x4000000000000,F=["loaders","latent","image","mask","sampling","_for_testing","advanced","utils","api"],U={ALWAYS:0,NEVER:2,BYPASS:4},B="easyuse_nodes_map",z=LGraphCanvas.node_colors.bgcolor,W={ColorPalette:{version:105,id:"obsidian",name:"Obsidian",colors:{node_slot:{CLIP:"#FFD500",CLIP_VISION:"#A8DADC",CLIP_VISION_OUTPUT:"#ad7452",CONDITIONING:"#FFA931",CONTROL_NET:"#6EE7B7",IMAGE:"#64B5F6",LATENT:"#FF9CF9",MASK:"#81C784",MODEL:"#B39DDB",STYLE_MODEL:"#C2FFAE",VAE:"#FF6E6E",TAESD:"#DCC274",PIPE_LINE:"#7737AA",PIPE_LINE_SDXL:"#7737AA",INT:"#29699C",X_Y:"#38291f",XYPLOT:"#74DA5D",LORA_STACK:"#94dccd",CONTROL_NET_STACK:"#94dccd"},litegraph_base:{BACKGROUND_IMAGE:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQBJREFUeNrs1rEKwjAUhlETUkj3vP9rdmr1Ysammk2w5wdxuLgcMHyptfawuZX4pJSWZTnfnu/lnIe/jNNxHHGNn//HNbbv+4dr6V+11uF527arU7+u63qfa/bnmh8sWLBgwYJlqRf8MEptXPBXJXa37BSl3ixYsGDBMliwFLyCV/DeLIMFCxYsWLBMwSt4Be/NggXLYMGCBUvBK3iNruC9WbBgwYJlsGApeAWv4L1ZBgsWLFiwYJmCV/AK3psFC5bBggULloJX8BpdwXuzYMGCBctgwVLwCl7Be7MMFixYsGDBsu8FH1FaSmExVfAxBa/gvVmwYMGCZbBg/W4vAQYA5tRF9QYlv/QAAAAASUVORK5CYII=",CLEAR_BACKGROUND_COLOR:"#222222",NODE_TITLE_COLOR:"#d4d4d8",NODE_SELECTED_TITLE_COLOR:"#ffffff",NODE_TEXT_SIZE:14,NODE_TEXT_COLOR:"#ffffff",NODE_SUBTEXT_SIZE:12,NODE_DEFAULT_COLOR:"#09090b",NODE_DEFAULT_BGCOLOR:"rgba(24,24,27,.9)",NODE_DEFAULT_BOXCOLOR:"rgba(255,255,255,.75)",NODE_DEFAULT_SHAPE:"box",NODE_BOX_OUTLINE_COLOR:G,DEFAULT_SHADOW_COLOR:"rgba(0,0,0,0)",DEFAULT_GROUP_FONT:24,WIDGET_BGCOLOR:"#242427",WIDGET_OUTLINE_COLOR:"#3f3f46",WIDGET_TEXT_COLOR:"#d4d4d8",WIDGET_SECONDARY_TEXT_COLOR:"#d4d4d8",LINK_COLOR:"#9A9",EVENT_LINK_COLOR:"#A86",CONNECTING_LINK_COLOR:"#AFA"},comfy_base:{"fg-color":"#fff","bg-color":"#09090b","comfy-menu-bg":"rgba(24,24,24,.9)","comfy-input-bg":"#262626","input-text":"#ddd","descrip-text":"#999","drag-text":"#ccc","error-text":"#ff4444","border-color":"#29292c","tr-even-bg-color":"rgba(28,28,28,.9)","tr-odd-bg-color":"rgba(19,19,19,.9)"}}},NODE_COLORS:{red:{color:"#af3535",bgcolor:z,groupcolor:"#A88"},brown:{color:"#38291f",bgcolor:z,groupcolor:"#b06634"},green:{color:"#346434",bgcolor:z,groupcolor:"#8A8"},blue:{color:"#1f1f48",bgcolor:z,groupcolor:"#88A"},pale_blue:{color:"#006691",bgcolor:z,groupcolor:"#3f789e"},cyan:{color:"#008181",bgcolor:z,groupcolor:"#8AA"},purple:{color:"#422342",bgcolor:z,groupcolor:"#a1309b"},yellow:{color:"#c09430",bgcolor:z,groupcolor:"#b58b2a"},black:{color:"rgba(0,0,0,.8)",bgcolor:z,groupcolor:"#444"}}};let j=JSON.parse(JSON.stringify(W));delete j.NODE_COLORS,j.ColorPalette.id="obsidian_dark",j.ColorPalette.name="Obsidian Dark",j.ColorPalette.colors.litegraph_base.BACKGROUND_IMAGE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGlmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4xLWMwMDEgNzkuMTQ2Mjg5OSwgMjAyMy8wNi8yNS0yMDowMTo1NSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI1LjEgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyMy0xMS0xM1QwMDoxODowMiswMTowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMTEtMTVUMDI6MDQ6NTkrMDE6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMTEtMTVUMDI6MDQ6NTkrMDE6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmIyYzRhNjA5LWJmYTctYTg0MC1iOGFlLTk3MzE2ZjM1ZGIyNyIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjk0ZmNlZGU4LTE1MTctZmQ0MC04ZGU3LWYzOTgxM2E3ODk5ZiIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjIzMWIxMGIwLWI0ZmItMDI0ZS1iMTJlLTMwNTMwM2NkMDdjOCI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjMxYjEwYjAtYjRmYi0wMjRlLWIxMmUtMzA1MzAzY2QwN2M4IiBzdEV2dDp3aGVuPSIyMDIzLTExLTEzVDAwOjE4OjAyKzAxOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjUuMSAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ4OWY1NzlmLTJkNjUtZWQ0Zi04OTg0LTA4NGE2MGE1ZTMzNSIgc3RFdnQ6d2hlbj0iMjAyMy0xMS0xNVQwMjowNDo1OSswMTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDI1LjEgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiMmM0YTYwOS1iZmE3LWE4NDAtYjhhZS05NzMxNmYzNWRiMjciIHN0RXZ0OndoZW49IjIwMjMtMTEtMTVUMDI6MDQ6NTkrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyNS4xIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4OTe6GAAAAx0lEQVR42u3WMQoAIQxFwRzJys77X8vSLiRgITif7bYbgrwYc/mKXyBoY4VVBgsWLFiwYFmOlTv+9jfDOjHmr8u6eVkGCxYsWLBgmc5S8ApewXvgYRksWLBgKXidpeBdloL3wMOCBctgwVLwCl7BuyyDBQsWLFiwTGcpeAWv4D3wsAwWLFiwFLzOUvAuS8F74GHBgmWwYCl4Ba/gXZbBggULFixYprMUvIJX8B54WAYLFixYCl5nKXiXpeA98LBgwTJYsGC9tg1o8f4TTtqzNQAAAABJRU5ErkJggg==",j.ColorPalette.colors.litegraph_base.CLEAR_BACKGROUND_COLOR="#09090b";const V=LGraphCanvas.node_colors.bgcolor,Y={ColorPalette:{id:"milk_white",name:"Milk White",colors:{node_slot:{CLIP:"#FFA726",CLIP_VISION:"#5C6BC0",CLIP_VISION_OUTPUT:"#8D6E63",CONDITIONING:"#EF5350",CONTROL_NET:"#66BB6A",IMAGE:"#42A5F5",LATENT:"#AB47BC",MASK:"#9CCC65",MODEL:"#7E57C2",STYLE_MODEL:"#D4E157",VAE:"#FF7043",PIPE_LINE:"#7737AA",PIPE_LINE_SDXL:"#7737AA",INT:"#29699C",X_Y:"#38291f",XYPLOT:"#74DA5D",LORA_STACK:"#94dccd",CONTROL_NET_STACK:"#94dccd"},litegraph_base:{BACKGROUND_IMAGE:"data:image/gif;base64,R0lGODlhZABkALMAAAAAAP///+vr6+rq6ujo6Ofn5+bm5uXl5d3d3f///wAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAkALAAAAABkAGQAAAT/UMhJq7046827HkcoHkYxjgZhnGG6si5LqnIM0/fL4qwwIMAg0CAsEovBIxKhRDaNy2GUOX0KfVFrssrNdpdaqTeKBX+dZ+jYvEaTf+y4W66mC8PUdrE879f9d2mBeoNLfH+IhYBbhIx2jkiHiomQlGKPl4uZe3CaeZifnnijgkESBqipqqusra6vsLGys62SlZO4t7qbuby7CLa+wqGWxL3Gv3jByMOkjc2lw8vOoNSi0czAncXW3Njdx9Pf48/Z4Kbbx+fQ5evZ4u3k1fKR6cn03vHlp7T9/v8A/8Gbp4+gwXoFryXMB2qgwoMMHyKEqA5fxX322FG8tzBcRnMW/zlulPbRncmQGidKjMjyYsOSKEF2FBlJQMCbOHP6c9iSZs+UnGYCdbnSo1CZI5F64kn0p1KnTH02nSoV3dGTV7FFHVqVq1dtWcMmVQZTbNGu72zqXMuW7danVL+6e4t1bEy6MeueBYLXrNO5Ze36jQtWsOG97wIj1vt3St/DjTEORss4nNq2mDP3e7w4r1bFkSET5hy6s2TRlD2/mSxXtSHQhCunXo26NevCpmvD/UU6tuullzULH76q92zdZG/Ltv1a+W+osI/nRmyc+fRi1Xdbh+68+0vv10dH3+77KD/i6IdnX669/frn5Zsjh4/2PXju8+8bzc9/6fj27LFnX11/+IUnXWl7BJfegm79FyB9JOl3oHgSklefgxAC+FmFGpqHIYcCfkhgfCohSKKJVo044YUMttggiBkmp6KFXw1oII24oYhjiDByaKOOHcp3Y5BD/njikSkO+eBREQAAOw==",CLEAR_BACKGROUND_COLOR:"lightgray",NODE_TITLE_COLOR:"#222",NODE_SELECTED_TITLE_COLOR:"#000",NODE_TEXT_SIZE:14,NODE_TEXT_COLOR:"#444",NODE_SUBTEXT_SIZE:12,NODE_DEFAULT_COLOR:"#F7F7F7",NODE_DEFAULT_BGCOLOR:"#F5F5F5",NODE_DEFAULT_BOXCOLOR:"#555",NODE_DEFAULT_SHAPE:"box",NODE_BOX_OUTLINE_COLOR:"#000",DEFAULT_SHADOW_COLOR:"rgba(0,0,0,0.1)",DEFAULT_GROUP_FONT:24,WIDGET_BGCOLOR:"#D4D4D4",WIDGET_OUTLINE_COLOR:"#999",WIDGET_TEXT_COLOR:"#222",WIDGET_SECONDARY_TEXT_COLOR:"#555",LINK_COLOR:"#9A9",EVENT_LINK_COLOR:"#FF9800",CONNECTING_LINK_COLOR:"#222"},comfy_base:{"fg-color":"#222","bg-color":"#DDD","comfy-menu-bg":"#F5F5F5","comfy-input-bg":"#C9C9C9","input-text":"#222","descrip-text":"#444","drag-text":"#555","error-text":"#F44336","border-color":"#bbb","tr-even-bg-color":"#f9f9f9","tr-odd-bg-color":"#fff","content-bg":"#e0e0e0","content-fg":"#222","content-hover-bg":"#adadad","content-hover-fg":"#222"}}},NODE_COLORS:{red:{color:"#af3535",bgcolor:V,groupcolor:"#A88"},brown:{color:"#38291f",bgcolor:V,groupcolor:"#b06634"},green:{color:"#346434",bgcolor:V,groupcolor:"#8A8"},blue:{color:"#1f1f48",bgcolor:V,groupcolor:"#88A"},pale_blue:{color:"#006691",bgcolor:V,groupcolor:"#3f789e"},cyan:{color:"#008181",bgcolor:V,groupcolor:"#8AA"},purple:{color:"#422342",bgcolor:V,groupcolor:"#a1309b"},yellow:{color:"#c09430",bgcolor:V,groupcolor:"#b58b2a"},black:{color:"rgba(0,0,0,.8)",bgcolor:V,groupcolor:"#444"}}},H={"Workflow created by":"工作流创建者","Watch more video content":"观看更多视频内容","Workflow Guide":"工作流指南","💎 View Checkpoint Info...":"💎 查看 Checkpoint 信息...","💎 View Lora Info...":"💎 查看 Lora 信息...","🔃 Reload Node":"🔃 刷新节点","Updated At:":"最近更新:","Created At:":"首次发布:","✏️ Edit":"✏️ 编辑","💾 Save":"💾 保存","No notes":"当前还没有备注内容","Saving Notes...":"正在保存备注...","Type your notes here":"在这里输入备注内容",ModelName:"模型名称","Models Required":"所需模型","Download Model":"下载模型","Source Url":"模型源地址",Notes:"备注",Type:"类型","Trained Words":"训练词",BaseModel:"基础算法",Details:"详情",Description:"描述",Download:"下载量",Source:"来源","Saving Preview...":"正在保存预览图...","Saving Succeed":"保存成功","Clean SuccessFully":"清理成功","Clean Failed":"清理失败","Saving Failed":"保存失败","No COMBO link":"沒有找到COMBO连接","Reboot ComfyUI":"重启ComfyUI","Are you sure you'd like to reboot the server?":"是否要重启ComfyUI?","Nodes Map":"管理节点组","Nodes map sorting mode":"管理节点组排序模式","No Nodes":"未找到节点","No nodes found in the map":"在工作流程中没有找到节点","Expand All":"展开所有组","Collapse All":"折叠所有组",Close:"关闭","Default automatic sorting, if set to manual, groups can be dragged and dropped and the sorting results saved.":"默认自动排序,如果设置为手动,组可以拖放并保存排序结果。","For drag and drop sorting, please find Nodes map sorting mode in Settings->EasyUse and change it to manual":"如需拖拽排序请在设置->EasyUse节点中找到管理节点组排序模式并修改成 manual",Queue:"队列","Cleanup Of VRAM Usage":"清理显存占用","Please stop all running tasks before cleaning GPU":"请在清理GPU之前停止所有运行中的任务",Always:"启用中",Bypass:"已忽略",Never:"已停用","Auto Sorting":"自动排序","Toggle `Show/Hide` can set mode of group, LongPress can set group nodes to never":"点击`启用中/已忽略`可设置组模式, 长按可停用该组节点","Enable Shift+Up/Down/Left/Right key to align selected nodes":"启用 `Shift+上/下/左/右` 键对齐选中的节点","Enable Shift+g to add selected nodes to a group":"启用 `Shift+g` 键将选中的节点添加一个组","Enable Shift+r to unload models and node cache":"启用 `Shift+r` 键卸载模型和节点缓存","Enable Up/Down/Left/Right key to jump nearest nodes":"启用 `上/下/左/右` 键跳转到最近的前后节点","Enable ALT+1~9 to paste nodes from nodes template":"启用 `ALT+1~9` 从节点模板粘贴到工作流中","Enable contextMenu auto nest subdirectories":"启用上下文菜单自动嵌套子目录","Enable right-click menu to add node A~Z sorting":"启用右键菜单中新建节点A~Z排序","Enable model thumbnails display":"启动模型预览图显示","Enable nodes runtime display":"启动节点运行时间显示","Enable chain get node and set node with parent nodes":"启用将获取点和设置点与父节点链在一起","Maximum number of model thumbnails displayed":"显示的模型缩略图的最大数量","Too many thumbnails will affect the first loading time, set the maximum value to not load the thumbnail function when there are too many models's thumbnail":"太多的缩略图会影响首次加载时间,当模型缩略图太多时,设置最大值以不加载缩略图功能","Too many thumbnails, have closed the display":"模型缩略图太多啦,为您关闭了显示","Get styles list Failed":"获取样式列表失败","Get style image Failed":"获取样式图片失败","Empty All":"清空所有","Type here to search styles ...":"在此处输入以搜索样式 ...","Loading UserInfo...":"正在获取用户信息...","Please set the APIKEY first":"请先设置APIKEY","Setting APIKEY":"设置APIKEY","Save Account Info":"保存账号信息",Choose:"选择",Delete:"删除",Edit:"编辑","At least one account is required":"删除失败: 至少需要一个账户","APIKEY is not Empty":"APIKEY 不能为空","Add Account":"添加账号","Getting Your APIKEY":"获取您的APIKEY","Choose Selected Images":"选择选中的图片","Choose images to continue":"选择图片以继续",Background:"背景",Hat:"帽子",Hair:"头发",Body:"身体",Face:"脸部",Clothes:"衣服",Others:"其他",Glove:"手套",Sunglasses:"太阳镜","Upper-clothes":"上衣",Dress:"连衣裙",Coat:"外套",Socks:"袜子",Pants:"裤子",Jumpsuits:"连体衣",Scarf:"围巾",Skirt:"裙子","Left-arm":"左臂","Right-arm":"右臂","Left-leg":"左腿","Right-leg":"右腿","Left-shoe":"左鞋","Right-shoe":"右鞋",s:"秒","No Node Templates Found":"未找到节点模板预设","Get Node Templates File Failed":"获取节点模板文件失败","Node template with {key} not set":"未设置快捷键为{key}的节点预设","ComfyUI Basic":"ComfyUI 基础节点","Recommend Nodes":"推荐节点","Others A~Z":"其他节点 A~Z"},X=I("AGL.Locale"),Z=(e,t=!1)=>"zh-CN"===(t?navigator.language:X)&&H[e]||e,K={addGroup:{id:"EasyUse.Hotkeys.AddGroup",name:Z("Enable Shift+g to add selected nodes to a group"),type:"boolean",defaultValue:!0},cleanVRAMUsed:{id:"EasyUse.Hotkeys.cleanVRAMUsed",name:Z("Enable Shift+r to unload models and node cache"),type:"boolean",defaultValue:!0},alignSelectedNodes:{id:"EasyUse.Hotkeys.AlignSelectedNodes",name:Z("Enable Shift+Up/Down/Left/Right key to align selected nodes"),type:"boolean",defaultValue:!0},nodesTemplate:{id:"EasyUse.Hotkeys.NodesTemplate",name:Z("Enable ALT+1~9 to paste nodes from nodes template"),type:"boolean",defaultValue:!0},jumpNearestNodes:{id:"EasyUse.Hotkeys.JumpNearestNodes",name:Z("Enable Up/Down/Left/Right key to jump nearest nodes"),type:"boolean",defaultValue:!0},subDirectories:{id:"EasyUse.ContextMenu.SubDirectories",name:Z("Enable contextMenu auto nest subdirectories"),type:"boolean",defaultValue:!1},modelsThumbnails:{id:"EasyUse.ContextMenu.ModelsThumbnails",name:Z("Enable model thumbnails display"),type:"boolean",defaultValue:!1},modelsThumbnailsLimit:{id:"EasyUse.ContextMenu.ModelsThumbnailsLimit",name:Z("Maximum number of model thumbnails displayed"),tooltip:Z("Too many thumbnails will affect the first loading time, set the maximum value to not load the thumbnail function when there are too many models's thumbnail"),type:"slider",attrs:{min:0,max:5e3,step:100},defaultValue:500},rightMenuNodesSort:{id:"EasyUse.ContextMenu.NodesSort",name:Z("Enable right-click menu to add node A~Z sorting"),type:"boolean",defaultValue:!0},nodesRuntime:{id:"EasyUse.Nodes.Runtime",name:Z("Enable nodes runtime display"),type:"boolean",defaultValue:!0},chainGetSet:{id:"EasyUse.Nodes.ChainGetSet",name:Z("Enable chain get node and set node with parent nodes"),type:"boolean",defaultValue:!0},nodesMap:{id:"EasyUse.NodesMap.Sorting",name:Z("Nodes map sorting mode"),tooltip:Z("Default automatic sorting, if set to manual, groups can be dragged and dropped and the sorting results saved."),type:"combo",options:["Auto sorting","Manual drag&drop sorting"],defaultValue:"Auto sorting"}};function J(e=100,t){return new Promise((n=>{setTimeout((()=>{n(t)}),e)}))}const $=new class{constructor(){f(this,"element",L(`div.${D}toast`)),f(this,"children",HTMLElement),f(this,"container",document.body),this.container.appendChild(this.element)}async show(e){let t=L(`div.${D}toast-container`,[L("div",[L("span",[...e.icon?[L("i",{className:e.icon})]:[],L("span",e.content)])])]);t.setAttribute("toast-id",e.id),this.element.replaceChildren(t),this.container.appendChild(this.element),await J(64),t.style.marginTop=`-${t.offsetHeight}px`,await J(64),t.classList.add("show"),e.duration&&(await J(e.duration),this.hide(e.id))}async hide(e){const t=document.querySelector(`.${D}toast > [toast-id="${e}"]`);(null==t?void 0:t.classList.contains("show"))&&(t.classList.remove("show"),await J(750)),t&&t.remove()}async clearAllMessages(){let e=document.querySelector(`.${D}container`);e&&(e.innerHTML="")}async info(e,t=3e3,n=[]){this.show({id:"toast-info",icon:`mdi mdi-information ${D}theme`,content:e,duration:t})}async success(e,t=3e3){this.show({id:"toast-success",icon:`mdi mdi-check-circle ${D}success`,content:e,duration:t})}async error(e,t=3e3){this.show({id:"toast-error",icon:`mdi mdi-close-circle ${D}error`,content:e,duration:t})}async warn(e,t=3e3){this.show({id:"toast-warn",icon:`mdi mdi-alert-circle ${D}warning`,content:e,duration:t})}async showLoading(e,t=0){this.show({id:"toast-loading",icon:"mdi mdi-rotate-right loading",content:e,duration:t})}async hideLoading(){this.hide("toast-loading")}},q=async()=>{try{const{Running:e,Pending:t}=await b.getQueue();if(e.length>0||t.length>0)return void $.error(Z("Clean Failed")+":"+Z("Please stop all running tasks before cleaning GPU"));200==(await b.fetchApi("/easyuse/cleangpu",{method:"POST"})).status?$.success(Z("Clean SuccessFully")):$.error(Z("Clean Failed"))}catch(e){}},Q=y("groups",{state:e=>({groups:[],nodes:[],nodesDefs:{},agl:{},isWatching:!1}),getters:{groups_nodes(){var e;let t=[],n=[];if((null==(e=this.nodes)?void 0:e.length)>0){this.nodes.map((e=>{let s=e.pos,o=!1;for(let n=0;ni.pos[0]&&s[0]i.pos[1]&&s[1]e.pos[0]-t.pos[0])).sort(((e,t)=>e.pos[1]-t.pos[1])))},setNodes(e){this.nodes=v(e)},update(){(w.extensionManager.activeSidebarTab===B||this.isWatching)&&setTimeout((e=>{this.setGroups(w.canvas.graph._groups),this.setNodes(w.canvas.graph._nodes)}),1)},watchGraph(e=!1){e&&(this.isWatching=!0);let t=this;this.update();const n=w.graph.onNodeAdded;w.graph.onNodeAdded=function(e){t.update();const s=e.onRemoved;return e.onRemoved=function(){return t.update(),null==s?void 0:s.apply(this,arguments)},null==n?void 0:n.apply(this,arguments)},w.canvas.onNodeMoved=function(e){t.update()};const s=LGraphCanvas.onNodeAlign;LGraphCanvas.onNodeAlign=function(e){return t.update(),null==s?void 0:s.apply(this,arguments)};const o=LGraphCanvas.onGroupAdd;LGraphCanvas.onGroupAdd=function(){return t.update(),null==o?void 0:o.apply(this,arguments)};const i=LGraphCanvas.onGroupAlign;LGraphCanvas.onGroupAlign=function(e){return t.update(),null==i?void 0:i.apply(this,arguments)};const a=LGraphCanvas.onMenuNodeRemove;LGraphCanvas.onMenuNodeRemove=function(e){return t.update(),null==a?void 0:a.apply(this,arguments)}},unwatchGraph(){this.isWatching=!1},async getNodesDef(){this.agl=await(async()=>{let e=new FormData;e.append("locale",X);const t=await b.fetchApi("/agl/get_translation",{method:"POST",body:e});if(200==t.status){const e=await t.json();return e&&"{}"!=e?{nodeCategory:e.NodeCategory,nodes:e.Nodes}:null}return null})(),await b.getNodeDefs()}}});let ee=null;const te=["custom_obsidian","custom_obsidian_dark","custom_milk_white"],ne={"easy positive":"green","easy negative":"red","easy promptList":"cyan","easy promptLine":"cyan","easy promptConcat":"cyan","easy promptReplace":"cyan","easy forLoopStart":"blue","easy forLoopEnd":"blue"};let se=LGraphCanvas.node_colors,oe=null,ie=null,ae=null,le=null;for(let vn in K)"Disabled"==I("Comfy.UseNewMenu")?T({...K[vn],name:"👽 "+K[vn].name}):T(K[vn]);function re(e,t=!1){let n="after",s="before";t&&([s,n]=[n,s]),e.label=(e.label??e.name).replace(s,n),e.name=e.label}function de(e,t,n,s,o,i,a){t.strokeStyle=s,t.fillStyle=o;let l=LiteGraph.NODE_TITLE_HEIGHT,r=this.ds.scale<.5,d=e._shape||e.constructor.shape||LiteGraph.ROUND_SHAPE,u=e.constructor.title_mode,c=!0;u==LiteGraph.TRANSPARENT_TITLE||u==LiteGraph.NO_TITLE?c=!1:u==LiteGraph.AUTOHIDE_TITLE&&mouse_over&&(c=!0);let p=new Float32Array(4);p=[0,c?-l:0,n[0]+1,c?n[1]+l:n[1]];let h=t.globalAlpha;if(t.lineWidth=1,t.beginPath(),d==LiteGraph.BOX_SHAPE||r?t.fillRect(p[0],p[1],p[2],p[3]):d==LiteGraph.ROUND_SHAPE||d==LiteGraph.CARD_SHAPE?t.roundRect(p[0],p[1],p[2],p[3],d==LiteGraph.CARD_SHAPE?[this.round_radius,this.round_radius,0,0]:[this.round_radius]):d==LiteGraph.CIRCLE_SHAPE&&t.arc(.5*n[0],.5*n[1],.5*n[0],0,2*Math.PI),t.strokeStyle=LiteGraph.WIDGET_OUTLINE_COLOR,t.stroke(),t.strokeStyle=s,t.fill(),!e.flags.collapsed&&c&&(t.shadowColor="transparent",t.fillStyle="rgba(0,0,0,0.2)",t.fillRect(0,-1,p[2],2)),t.shadowColor="transparent",e.onDrawBackground&&e.onDrawBackground(t,this,this.canvas,this.graph_mouse),c||u==LiteGraph.TRANSPARENT_TITLE){const o="dark"==function(e){let t=e.replace("#","");return n=parseInt(t.substring(0,2),16),s=parseInt(t.substring(2,4),16),o=parseInt(t.substring(4,6),16),.299*n+.587*s+.114*o>127.5?"light":"dark";var n,s,o}((null==e?void 0:e.color)||"#ffffff");if(e.onDrawTitleBar)e.onDrawTitleBar(t,l,n,this.ds.scale,s);else if(u!=LiteGraph.TRANSPARENT_TITLE&&(e.constructor.title_color||this.render_title_colored)){let o=e.constructor.title_color||s;if(e.flags.collapsed&&(t.shadowColor=LiteGraph.DEFAULT_SHADOW_COLOR),this.use_gradients){let e=LGraphCanvas.gradients[o];e||(e=LGraphCanvas.gradients[o]=t.createLinearGradient(0,0,400,0),e.addColorStop(0,o),e.addColorStop(1,"#000")),t.fillStyle=e}else t.fillStyle=o;t.beginPath(),d==LiteGraph.BOX_SHAPE||r?t.rect(0,-l,n[0]+1,l):d!=LiteGraph.ROUND_SHAPE&&d!=LiteGraph.CARD_SHAPE||t.roundRect(0,-l,n[0]+1,l,e.flags.collapsed?[this.round_radius]:[this.round_radius,this.round_radius,0,0]),t.fill(),t.shadowColor="transparent"}let a=!1;LiteGraph.node_box_coloured_by_mode&&LiteGraph.NODE_MODES_COLORS[e.mode]&&(a=LiteGraph.NODE_MODES_COLORS[e.mode]),LiteGraph.node_box_coloured_when_on&&(a=e.action_triggered?"#FFF":e.execute_triggered?"#AAA":a);let c=10;if(e.onDrawTitleBox)e.onDrawTitleBox(t,l,n,this.ds.scale);else if(d==LiteGraph.ROUND_SHAPE||d==LiteGraph.CIRCLE_SHAPE||d==LiteGraph.CARD_SHAPE){const n=o?"#ffffff":LiteGraph.NODE_SELECTED_TITLE_COLOR,s=o?"#eeeeee":e.boxcolor||a||LiteGraph.NODE_DEFAULT_BOXCOLOR;t.fillStyle=i?n:s,t.beginPath(),t.fillRect(10,0-1.05*c-1,1.1*c,.125*c),t.fillRect(10,0-1.45*c-1,1.1*c,.125*c),t.fillRect(10,0-1.85*c-1,1.1*c,.125*c)}else t.fillStyle=e.boxcolor||a||LiteGraph.NODE_DEFAULT_BOXCOLOR,t.fillRect(.5*(l-c),-.5*(l+c),c,c);if(t.globalAlpha=h,e.onDrawTitleText&&e.onDrawTitleText(t,l,n,this.ds.scale,this.title_text_font,i),!r){t.font=this.title_text_font;let n=String(e.getTitle());n&&(t.fillStyle=i?o?"#ffffff":LiteGraph.NODE_SELECTED_TITLE_COLOR:o?"#ffffff":e.constructor.title_text_color||this.node_title_color,e.flags.collapsed?(t.textAlign="left",t.measureText(n),t.fillText(n.substr(0,20),l,LiteGraph.NODE_TITLE_TEXT_Y-l),t.textAlign="left"):(t.textAlign="left",t.fillText(n,l,LiteGraph.NODE_TITLE_TEXT_Y-l)))}if(!e.flags.collapsed&&e.subgraph&&!e.skip_subgraph_button){let n=LiteGraph.NODE_TITLE_HEIGHT,s=e.size[0]-n,o=LiteGraph.isInsideRectangle(this.graph_mouse[0]-e.pos[0],this.graph_mouse[1]-e.pos[1],s+2,2-n,n-4,n-4);t.fillStyle=o?"#888":"#555",d==LiteGraph.BOX_SHAPE||r?t.fillRect(s+2,2-n,n-4,n-4):(t.beginPath(),t.roundRect(s+2,2-n,n-4,n-4,[4]),t.fill()),t.fillStyle="#333",t.beginPath(),t.moveTo(s+.2*n,.6*-n),t.lineTo(s+.8*n,.6*-n),t.lineTo(s+.5*n,.3*-n),t.fill()}e.onDrawTitle&&e.onDrawTitle(t)}if(i){e.onBounding&&e.onBounding(p),u==LiteGraph.TRANSPARENT_TITLE&&(p[1]-=l,p[3]+=l),t.lineWidth=2,t.globalAlpha=.8,t.beginPath();let o=0,i=0,a=1;d==LiteGraph.BOX_SHAPE?t.rect(o+p[0],o+p[1],i+p[2],i+p[3]):d==LiteGraph.ROUND_SHAPE||d==LiteGraph.CARD_SHAPE&&e.flags.collapsed?t.roundRect(o+p[0],o+p[1],i+p[2],i+p[3],[this.round_radius*a]):d==LiteGraph.CARD_SHAPE?t.roundRect(o+p[0],o+p[1],i+p[2],i+p[3],[this.round_radius*a,a,this.round_radius*a,a]):d==LiteGraph.CIRCLE_SHAPE&&t.arc(.5*n[0],.5*n[1],.5*n[0]+6,0,2*Math.PI),t.strokeStyle=LiteGraph.NODE_BOX_OUTLINE_COLOR,t.stroke(),t.strokeStyle=s,t.globalAlpha=1}e.execute_triggered>0&&e.execute_triggered--,e.action_triggered>0&&e.action_triggered--}function ue(e,t,n,s){if(!e.widgets||!e.widgets.length)return 0;let o=e.size[0],i=e.widgets;t+=2;let a=LiteGraph.NODE_WIDGET_HEIGHT,l=this.ds.scale>.5;n.save(),n.globalAlpha=this.editor_alpha;let r=LiteGraph.WIDGET_OUTLINE_COLOR,d=LiteGraph.WIDGET_BGCOLOR,u=LiteGraph.WIDGET_TEXT_COLOR,c=LiteGraph.WIDGET_SECONDARY_TEXT_COLOR,p=12;for(let h=0;h1&&(o=1),n.fillStyle=m.options.hasOwnProperty("slider_color")?m.options.slider_color:s==m?r:G,n.beginPath(),n.roundRect(p,g,o*(f-24),a,[.25*a]),n.fill(),m.marker){let e=(m.marker-m.options.min)/t;e<0&&(e=0),e>1&&(e=1),n.fillStyle=m.options.hasOwnProperty("marker_color")?m.options.marker_color:"#AA9",n.roundRect(p+e*(f-24),g,2,a,[.25*a])}if(l){n.textAlign="center",n.fillStyle=u;let e=(m.label||m.name)+": "+Number(m.value).toFixed(null!=m.options.precision?m.options.precision:3).toString();n.fillText(e,.5*f,g+.7*a)}break;case"number":case"combo":if(n.textAlign="left",n.strokeStyle=r,n.fillStyle=d,n.beginPath(),l?n.roundRect(p,g,f-24,a,[.25*a]):n.rect(p,g,f-24,a),n.fill(),l){m.disabled||n.stroke(),n.fillStyle=u,m.disabled||(n.beginPath(),n.moveTo(24,g+6.5),n.lineTo(18,g+.5*a),n.lineTo(24,g+a-6.5),n.fill(),n.beginPath(),n.moveTo(f-p-12,g+6.5),n.lineTo(f-p-6,g+.5*a),n.lineTo(f-p-12,g+a-6.5),n.fill()),n.fillStyle=c,n.font="10px Inter",n.fillText(m.label||m.name,29,g+.7*a),n.fillStyle=u,n.textAlign="right";let e=6;if("number"==m.type)n.font="10px Inter",n.fillText(Number(m.value).toFixed(void 0!==m.options.precision?m.options.precision:3),f-24-e,g+.7*a);else{let t=m.value;if(m.options.values){let e=m.options.values;e.constructor===Function&&(e=e()),e&&e.constructor!==Array&&(t=e[m.value])}n.fillText(t,f-24-e,g+.7*a)}}break;case"string":case"text":if(n.textAlign="left",n.strokeStyle=r,n.fillStyle=d,n.beginPath(),l?n.roundRect(p,g,f-24,a,[.25*a]):n.rect(p,g,f-24,a),n.fill(),l){m.disabled||n.stroke(),n.save(),n.beginPath(),n.rect(p,g,f-24,a),n.clip(),n.fillStyle=c;const e=m.label||m.name;n.font="10px Inter",null!=e&&n.fillText(e,24,g+.7*a),n.fillStyle=u,n.textAlign="right",n.fillText(String(m.value).substr(0,30),f-24,g+.7*a),n.restore()}break;default:m.draw&&m.draw(n,e,f,g,a)}t+=(m.computeSize?m.computeSize(f)[1]:a)+4,n.globalAlpha=this.editor_alpha}n.restore(),n.textAlign="left"}function ce(e,t,n,s,o){return new LiteGraph.ContextMenu(LiteGraph.NODE_MODES,{event:n,callback:function(e){if(!o)return;var t=Object.values(LiteGraph.NODE_MODES).indexOf(e),n=function(e){t>=0&&LiteGraph.NODE_MODES[t]?e.changeMode(t):e.changeMode(LiteGraph.ALWAYS),ee||(ee=Q()),ee.update()},s=LGraphCanvas.active_canvas;if(!s.selected_nodes||Object.keys(s.selected_nodes).length<=1)n(o);else for(var i in s.selected_nodes)n(s.selected_nodes[i])},parentMenu:s,node:o}),!1}function pe(e,t,n,s,o){if(!o)throw"no node for color";var i=[];for(var a in i.push({value:null,content:"No color"}),LGraphCanvas.node_colors){var l=LGraphCanvas.node_colors[a];e={value:a,content:""+a+""};i.push(e)}return new LiteGraph.ContextMenu(i,{event:n,callback:function(e){if(!o)return;var t=e.value?LGraphCanvas.node_colors[e.value]:null,n=function(e){t?e.constructor===LiteGraph.LGraphGroup?e.color=t.groupcolor:(e.color=t.color,e.bgcolor=t.bgcolor):(delete e.color,delete e.bgcolor),ee||(ee=Q()),ee.update()},s=LGraphCanvas.active_canvas;if(!s.selected_nodes||Object.keys(s.selected_nodes).length<=1)n(o);else for(var i in s.selected_nodes)n(s.selected_nodes[i]);o.setDirtyCanvas(!0,!0)},parentMenu:s,node:o}),!1}function he(e,t,n,s,o){var i=e.property||"title",a=o[i],l=document.createElement("div");l.is_modified=!1,l.className="graphdialog",l.innerHTML="",l.close=function(){l.parentNode&&l.parentNode.removeChild(l)},l.querySelector(".name").innerText=i;var r=l.querySelector(".value");r&&(r.value=a,r.addEventListener("blur",(function(e){this.focus()})),r.addEventListener("keydown",(function(e){if(l.is_modified=!0,27==e.keyCode)l.close();else if(13==e.keyCode)m();else if(13!=e.keyCode&&"textarea"!=e.target.localName)return;e.preventDefault(),e.stopPropagation()})));var d=LGraphCanvas.active_canvas.canvas,u=d.getBoundingClientRect(),c=-20,p=-20;u&&(c-=u.left,p-=u.top),event?(l.style.left=event.clientX+c+"px",l.style.top=event.clientY+p+"px"):(l.style.left=.5*d.width+c+"px",l.style.top=.5*d.height+p+"px"),l.querySelector("button").addEventListener("click",m),d.parentNode.appendChild(l),r&&r.focus();var h=null;function m(){r&&function(t){"Number"==e.type?t=Number(t):"Boolean"==e.type&&(t=Boolean(t));o[i]=t,l.parentNode&&l.parentNode.removeChild(l);o.setDirtyCanvas(!0,!0),ee||(ee=Q());ee.update()}(r.value)}l.addEventListener("mouseleave",(function(e){LiteGraph.dialog_close_on_mouse_leave&&!l.is_modified&&LiteGraph.dialog_close_on_mouse_leave&&(h=setTimeout(l.close,LiteGraph.dialog_close_on_mouse_leave_delay))})),l.addEventListener("mouseenter",(function(e){LiteGraph.dialog_close_on_mouse_leave&&h&&clearTimeout(h)}))}w.registerExtension({name:"Comfy.EasyUse.UI",init(){var e,t;const n="Comfy.CustomColorPalettes",s="Comfy.Settings.Comfy.CustomColorPalettes";if(ie||(ie=I(n,s)),ae||(ae=I("Comfy.ColorPalette","Comfy.Settings.Comfy.ColorPalette")||"dark"),(!(null==(e=null==ie?void 0:ie.obsidian)?void 0:e.version)||ie.obsidian.version{(null==e?void 0:e.value)&&(null==e?void 0:e.oldValue)&&(await J(1),Object.assign(w.canvas.default_connection_color_byType,M),Object.assign(LGraphCanvas.link_type_colors,M)),"custom_milk_white"==e.value&&document.body.classList.remove(R)})),setTimeout((e=>ge(I("Comfy.UseNewMenu")||"Disabled")),1)},async nodeCreated(e){var t;if(ne.hasOwnProperty(e.comfyClass)){const t=ne[e.comfyClass],n=se[t];if(!n)return;n.color&&(e.color=n.color),n.bgcolor&&(e.bgcolor=n.bgcolor)}if(oe||(oe=I("Comfy.WidgetControlMode")),"before"==oe){const n="before"==oe;if((null==(t=e.widgets)?void 0:t.length)>0)for(const t of e.widgets)if(["control_before_generate","control_after_generate"].includes(t.name)&&(await re(t,n),t.linkedWidgets))for(const e of t.linkedWidgets)await re(e,n)}}});const me=null==(m=w.ui.settings.settingsLookup)?void 0:m["Comfy.UseNewMenu"];me&&(me.onChange=e=>ge(e));const ge=e=>{var t;const n=(null==(t=document.getElementById("crystools-root"))?void 0:t.children)||null;if((null==n?void 0:n.length)>0){if(!le)for(let e=0;ee.widgets.find((e=>e.name===t)),_e=(e,t,n=!1,s="")=>{var o;if(!t||((e,t)=>!!e.inputs&&e.inputs.some((e=>e.name===t)))(e,t.name))return;fe[t.name]||(fe[t.name]={origType:t.type,origComputeSize:t.computeSize});const i=e.size;t.type=n?fe[t.name].origType:"easyHidden"+s,t.computeSize=n?fe[t.name].origComputeSize:()=>[0,-4],null==(o=t.linkedWidgets)||o.forEach((s=>_e(e,s,":"+t.name,n)));const a=n?Math.max(e.computeSize()[1],i[1]):e.size[1];e.setSize([e.size[0],a])},ve=(e,t=0)=>{var n,s;if(e)return(null==(n=e.widgets)?void 0:n[t])?e.widgets[t].value:e.widgets_values?null==(s=e.widgets_values)?void 0:s[t]:void 0},we=e=>e.setSize([e.size[0],e.computeSize()[1]]),be=(e,t)=>graph.getNodeById(e),Le=e=>{var t;try{return Object.values(null==(t=null==graph?void 0:graph.list_of_graphcanvas[0])?void 0:t.selected_nodes)}catch(n){return[]}};function Se(e,t,n){return e+(s=n,(.5-.5*Math.cos(Math.PI*s))*(t-e));var s}const Ee=(e,t=!0)=>{var n,s;const o=(null==(s=null==(n=e.graph)?void 0:n.list_of_graphcanvas)?void 0:s[0])||null;if(!o)return;const[i,a]=e.pos,[l,r]=e.size;(([e,t],n)=>{const s=n.ds,o=document.body.clientWidth,i=document.body.clientHeight,a=s.scale,l=.5*o/a-e,r=.5*i/a-t,d=Date.now()+250,u=s.offset[0],c=s.offset[1],p=()=>{const e=d-Date.now();if(!(Date.now(){const t=be(e);t&&Ee(t)},Ae=(e,t=(()=>graph.links??[])())=>t[e],ke=e=>e.toLowerCase().replace(/_./g,(e=>e.replace("_","").toUpperCase())),Ie=e=>"easy getNode"===e.type,xe=e=>"easy setNode"===e.type,Ne=e=>Ie(e)||xe(e),Te=(e=(()=>graph._nodes??[])())=>e.filter((e=>Ne(e))),Oe=(e,t,n=0)=>{e.widgets_values||(e.widgets_values=[]),e.widgets_values[n]=t,e.widgets[n].value=t},De=e=>graph.add(e),Re=e=>graph.remove(e),Ge=(e,t=0)=>{var n,s;if("Reroute"!==e.type)return[e,t];const o=e,i=null==(s=null==(n=o.inputs)?void 0:n[0])?void 0:s.link;if(!i)return[o,t];const a=Ae(i);if(!a)return[o,t];const l=be(a.origin_id);return l?(setTimeout((()=>{Re(o)})),Ge(l,a.origin_slot)):[o,t]},Me=e=>{var t,n,s;if("Reroute"!==e.type)return e;const o=e,i=null==(n=null==(t=o.outputs)?void 0:t[0])?void 0:n.links;if(!i)return o;const a=i[0];if(!a)return o;const l=Ae(a);if(!l)return o;const r=be(l.target_id);return r?(1===(null==(s=o.outputs[0].links)?void 0:s.length)&&setTimeout((()=>{Re(o)})),Me(r)):o},Pe=["rescale_after_model","rescale","lora_name","upscale_method","image_output","add_noise","info","sampler_name","ckpt_B_name","ckpt_C_name","save_model","refiner_ckpt_name","num_loras","num_controlnet","mode","toggle","resolution","ratio","target_parameter","input_count","replace_count","downscale_mode","range_mode","text_combine_mode","input_mode","lora_count","ckpt_count","conditioning_mode","preset","use_tiled","use_batch","num_embeds","easing_mode","guider","scheduler","inpaint_mode","t5_type","rem_mode"],Fe=["LIGHT - SD1.5 only (low strength)","STANDARD (medium strength)","VIT-G (medium strength)","PLUS (high strength)","PLUS FACE (portraits)","FULL FACE - SD1.5 only (portraits stronger)"],Ue=["FACEID","FACEID PLUS - SD1.5 only","FACEID PLUS V2","FACEID PLUS KOLORS","FACEID PORTRAIT (style transfer)","FACEID PORTRAIT UNNORM - SDXL only (strong)"],Be=["easy seed","easy latentNoisy","easy wildcards","easy preSampling","easy preSamplingAdvanced","easy preSamplingNoiseIn","easy preSamplingSdTurbo","easy preSamplingCascade","easy preSamplingDynamicCFG","easy preSamplingLayerDiffusion","easy fullkSampler","easy fullCascadeKSampler"],ze=["easy fullLoader","easy a1111Loader","easy comfyLoader","easy hyditLoader","easy pixArtLoader"],We=["easy imageSize","easy imageSizeBySide","easy imageSizeByLongerSide","easy imageSizeShow","easy imageRatio","easy imagePixelPerfect"],je=["easy forLoopStart","easy forLoopEnd","easy whileLoopStart","easy whileLoopEnd"],Ve=["easy anythingIndexSwitch","easy imageIndexSwitch","easy textIndexSwitch","easy conditioningIndexSwitch"],Ye=[...je,...Ve],He={"easy anythingIndexSwitch":"value","easy imageIndexSwitch":"image","easy textIndexSwitch":"text","easy conditioningIndexSwitch":"cond"};function Xe(e,t){const n=e.comfyClass,s=t.value;switch(t.name){case"range_mode":_e(e,ye(e,"step"),"step"==s),_e(e,ye(e,"num_steps"),"num_steps"==s),we(e);break;case"text_combine_mode":_e(e,ye(e,"replace_text"),"replace"==s);break;case"lora_name":["lora_model_strength","lora_clip_strength"].map((t=>_e(e,ye(e,t),"None"!==s)));break;case"resolution":"自定义 x 自定义"===s&&(t.value="width x height (custom)"),["empty_latent_width","empty_latent_height"].map((t=>_e(e,ye(e,t),"width x height (custom)"===s)));break;case"ratio":["empty_latent_width","empty_latent_height"].map((t=>_e(e,ye(e,t),"custom"===s)));break;case"num_loras":var o=s+1,i=ye(e,"mode").value;for(let t=0;t_e(e,ye(e,t),"simple"!==i)));for(let t=o;t<21;t++)["lora_"+t+"_name","lora_"+t+"_strength","lora_"+t+"_model_strength","lora_"+t+"_clip_strength"].map((t=>_e(e,ye(e,t),!1)));we(e);break;case"num_controlnet":o=s+1,i=ye(e,"mode").value;for(let t=0;t_e(e,ye(e,t),!0))),["start_percent_"+t,"end_percent_"+t].map((t=>_e(e,ye(e,t),"simple"!==i)));for(let t=o;t<21;t++)["controlnet_"+t,"controlnet_"+t+"_strength","scale_soft_weight_"+t,"start_percent_"+t,"end_percent_"+t].map((t=>_e(e,ye(e,t),!1)));we(e);break;case"mode":switch(null==e?void 0:e.comfyClass){case"easy loraStack":o=ye(e,"num_loras").value+1,i=s;for(let t=0;t_e(e,ye(e,t),"simple"!==i)));we(e);break;case"easy controlnetStack":o=ye(e,"num_controlnet").value+1,i=s;for(let t=0;t_e(e,ye(e,t),"simple"!==i)));we(e);break;case"easy icLightApply":i=s;["lighting","remove_bg"].map((t=>_e(e,ye(e,t),"Foreground"===i))),_e(e,ye(e,"source"),"Foreground"!==i),we(e)}break;case"toggle":t.type="toggle",t.options={on:"Enabled",off:"Disabled"};break;case"t5_type":["clip_name","padding"].map((t=>_e(e,ye(e,t),"sd3"==s))),["t5_name","device","dtype"].map((t=>_e(e,ye(e,t),"t5v11"==s))),we(e);break;case"preset":if(Fe.includes(s)){let t=ye(e,"use_tiled");_e(e,ye(e,"lora_strength")),_e(e,ye(e,"provider")),_e(e,ye(e,"weight_faceidv2")),_e(e,ye(e,"weight_kolors")),_e(e,ye(e,"use_tiled"),!0),_e(e,ye(e,"sharpening"),t&&t.value)}else Ue.includes(s)&&(_e(e,ye(e,"weight_faceidv2"),!!["FACEID PLUS V2","FACEID PLUS KOLORS"].includes(s)),_e(e,ye(e,"weight_kolors"),!!["FACEID PLUS KOLORS"].includes(t.value)),["FACEID PLUS KOLORS","FACEID PORTRAIT (style transfer)","FACEID PORTRAIT UNNORM - SDXL only (strong)"].includes(s)?_e(e,ye(e,"lora_strength"),!1):_e(e,ye(e,"lora_strength"),!0),_e(e,ye(e,"provider"),!0),_e(e,ye(e,"use_tiled")),_e(e,ye(e,"sharpening")));we(e);break;case"use_tiled":_e(e,ye(e,"sharpening"),!!s),we(e);break;case"num_embeds":o=s+1;for(let t=0;t_e(e,ye(e,t),!1)));break;case"brushnet_random":case"brushnet_segmentation":["dtype","scale","start_at","end_at"].map((t=>_e(e,ye(e,t),!0))),["fitting","function"].map((t=>_e(e,ye(e,t),!1)));break;case"powerpaint":["dtype","fitting","function","scale","start_at","end_at"].map((t=>_e(e,ye(e,t),!0)))}we(e);break;case"image_output":_e(e,ye(e,"link_id"),!!["Sender","Sender&Save"].includes(s)),_e(e,ye(e,"decode_vae_name"),!!["Hide","Hide&Save"].includes(s)),["save_prefix","output_path","embed_workflow","number_padding","overwrite_existing"].map((t=>_e(e,ye(e,t),!!["Save","Hide&Save","Sender&Save"].includes(s))));break;case"add_noise":var a=ye(e,"control_before_generate"),l=ye(e,"control_after_generate")||a;"disable"===s?(_e(e,ye(e,"seed")),l&&(l.last_value=l.value,l.value="fixed",_e(e,l))):(_e(e,ye(e,"seed"),!0),l&&((null==l?void 0:l.last_value)&&(l.value=l.last_value),_e(e,l,!0))),we(e);break;case"guider":switch(s){case"Basic":["cfg","cfg_negative"].map((t=>_e(e,ye(e,t))));break;case"CFG":_e(e,ye(e,"cfg"),!0),_e(e,ye(e,"cfg_negative"));break;case"IP2P+DualCFG":case"DualCFG":["cfg","cfg_negative"].map((t=>_e(e,ye(e,t),!0)))}we(e);break;case"scheduler":["karrasADV","exponentialADV","polyExponential"].includes(s)?(["sigma_max","sigma_min"].map((t=>_e(e,ye(e,t),!0))),["denoise","beta_d","beta_min","eps_s","coeff"].map((t=>_e(e,ye(e,t))),!1),_e(e,ye(e,"rho"),"exponentialADV"!=s)):"vp"==s?(["sigma_max","sigma_min","denoise","rho","coeff"].map((t=>_e(e,ye(e,t)))),["beta_d","beta_min","eps_s"].map((t=>_e(e,ye(e,t),!0)))):(["sigma_max","sigma_min","beta_d","beta_min","eps_s","rho"].map((t=>_e(e,ye(e,t)))),_e(e,ye(e,"coeff"),"gits"==s),_e(e,ye(e,"denoise"),!0)),we(e);break;case"conditioning_mode":["replace","concat","combine"].includes(s)?["average_strength","old_cond_start","old_cond_end","new_cond_start","new_cond_end"].map((t=>_e(e,ye(e,t)))):"average"==s?(_e(e,ye(e,"average_strength"),!0),["old_cond_start","old_cond_end","new_cond_start","new_cond_end"].map((t=>_e(e,ye(e,t),!1)))):"timestep"==s&&(["average_strength"].map((t=>_e(e,ye(e,t),!1))),["old_cond_start","old_cond_end","new_cond_start","new_cond_end"].map((t=>_e(e,ye(e,t)))));break;case"rescale":ye(e,"rescale_after_model").value,_e(e,ye(e,"width"),"to Width/Height"===s),_e(e,ye(e,"height"),"to Width/Height"===s),_e(e,ye(e,"percent"),"by percentage"===s),_e(e,ye(e,"longer_side"),"to longer side - maintain aspect"===s),we(e);break;case"upscale_method":["factor","crop"].map((t=>_e(e,ye(e,t),"None"!==s)));break;case"target_parameter":switch(n){case"easy XYInputs: Steps":["first_step","last_step"].map((t=>_e(e,ye(e,t),"steps"==s))),["first_start_step","last_start_step"].map((t=>_e(e,ye(e,t),"start_at_step"==s))),["first_end_step","last_end_step"].map((t=>_e(e,ye(e,t),"end_at_step"==s)));break;case"easy XYInputs: Sampler/Scheduler":let t=ye(e,"input_count").value+1;for(let n=0;n_e(e,ye(e,t),"strength"==s))),["first_start_percent","last_start_percent"].map((t=>_e(e,ye(e,t),"start_percent"==s))),["first_end_percent","last_end_percent"].map((t=>_e(e,ye(e,t),"end_percent"==s))),["strength","start_percent","end_percent"].map((t=>_e(e,ye(e,t),s!=t))),we(e)}case"replace_count":o=s+1;for(let t=0;t_e(e,ye(e,t),!r)));for(let t=o;t<11;t++)["lora_name_"+t,"model_str_"+t,"clip_str_"+t].map((t=>_e(e,ye(e,t),!1)));we(e);break;case"ckpt_count":o=s+1;var d=-1!=ye(e,"input_mode").value.indexOf("ClipSkip"),u=-1!=ye(e,"input_mode").value.indexOf("VAE");for(let t=0;t_e(e,ye(e,t),!1)));we(e);break;case"input_count":o=s+1;var c=ye(e,"target_parameter").value;for(let t=0;t_e(e,ye(e,n),!t)));["model_strength","clip_strength"].map((n=>_e(e,ye(e,n),!t)));break;case"easy XYInputs: Checkpoint":o=ye(e,"ckpt_count").value+1,d=-1!=ye(e,"input_mode").value.indexOf("ClipSkip"),u=-1!=ye(e,"input_mode").value.indexOf("VAE");for(let n=0;ne.name===t));if(-1!==e){for(let t=e;t{var e;const t=this.computeSize();t[0]"info"===e.name));if(-1!==e&&this.widgets[e]){this.widgets[e].value=t}}requestAnimationFrame((()=>{var e;const t=this.computeSize();t[0]"prompt"==e.name));this.addWidget("button","get values from COMBO link","",(()=>{var t,s;const o=(null==(s=null==(t=this.outputs[1])?void 0:t.links)?void 0:s.length)>0?this.outputs[1].links[0]:null,i=n.graph._nodes.find((e=>{var t;return null==(t=e.inputs)?void 0:t.find((e=>e.link==o))}));if(o&&i){const t=i.inputs.find((e=>e.link==o)).widget.name,n=i.widgets.find((e=>e.name==t));let s=(null==n?void 0:n.options.values)||null;s&&(s=s.join("\n"),e.value=s)}else $.error(Z("No COMBO link"),3e3)}),{serialize:!1})}),ze.includes(t.name)){let t=function(e){var t="";for(let n=0;ne.name===t+"_prompt")),s="comfy-multiline-input wildcard_"+t+"_"+this.id.toString();if(-1==n&&e){const n=document.createElement("textarea");n.className=s,n.placeholder="Wildcard Prompt ("+t+")";const o=this.addDOMWidget(t+"_prompt","customtext",n,{getValue:e=>n.value,setValue(e){n.value=e},serialize:!1});o.inputEl=n,o.inputEl.readOnly=!0,n.addEventListener("input",(()=>{var e;null==(e=o.callback)||e.call(o,o.value)})),o.value=e}else if(this.widgets[n])if(e){this.widgets[n].value=e}else{this.widgets.splice(n,1);const e=document.getElementsByClassName(s);e&&e[0]&&e[0].remove()}}};e.prototype.onExecuted=function(e){null==l||l.apply(this,arguments);const s=t(e.positive),o=t(e.negative);n.call(this,s,"positive"),n.call(this,o,"negative")}}if(["easy sv3dLoader"].includes(t.name)){let t=function(e,t,n){switch(e){case"azimuth":return n.readOnly=!0,n.style.opacity=.6,"0:(0.0,0.0)"+(t>1?`\n${t-1}:(360.0,0.0)`:"");case"elevation":return n.readOnly=!0,n.style.opacity=.6,"0:(-90.0,0.0)"+(t>1?`\n${t-1}:(90.0,0.0)`:"");case"custom":return n.readOnly=!1,n.style.opacity=1,"0:(0.0,0.0)\n9:(180.0,0.0)\n20:(360.0,0.0)"}};e.prototype.onNodeCreated=async function(){i&&i.apply(this,[]);const e=this.widgets.find((e=>"easing_mode"==e.name)),n=this.widgets.find((e=>"batch_size"==e.name)),s=this.widgets.find((e=>"scheduler"==e.name));setTimeout((o=>{s.value||(s.value=t(e.value,n.value,s.inputEl))}),1),e.callback=e=>{s.value=t(e,n.value,s.inputEl)},n.callback=n=>{s.value=t(e.value,n,s.inputEl)}}}if(Be.includes(s)&&(e.prototype.onNodeCreated=async function(){i&&i.apply(this,[]);const e=this.widgets.find((e=>["seed_num","seed"].includes(e.name))),s=this.widgets.find((e=>["control_before_generate","control_after_generate"].includes(e.name)));if("easy seed"==t.name){const t=this.addWidget("button","🎲 Manual Random Seed",null,(t=>{"fixed"!=s.value&&(s.value="fixed"),e.value=Math.floor(Math.random()*P),n.queuePrompt(0,1)}),{serialize:!1});e.linkedWidgets=[t,s]}},e.prototype.onAdded=async function(){o&&o.apply(this,[]);const e=this.widgets.find((e=>["seed_num","seed"].includes(e.name))),t=this.widgets.find((e=>["control_before_generate","control_after_generate"].includes(e.name)));setTimeout((n=>{"control_before_generate"==t.name&&0===e.value&&(e.value=Math.floor(Math.random()*P))}),1)}),"easy convertAnything"==s&&(e.prototype.onNodeCreated=async function(){i&&i.apply(this,[]);const e=this.widgets.find((e=>"output_type"==e.name)),t=t=>{this.outputs[0].type=e.value.toUpperCase(),this.outputs[0].name=e.value,this.outputs[0].label=e.value};setTimeout((e=>t()),10),e.callback=e=>t()}),"easy imageInsetCrop"==s){let t=function(e){const t=e.widgets[0];for(let n=1;n<=4;n++)"Pixels"===t.value?(e.widgets[n].options.step=80,e.widgets[n].options.max=8192):(e.widgets[n].options.step=10,e.widgets[n].options.max=99)};e.prototype.onAdded=async function(e){const n=this.widgets[0];let s=n.callback;n.callback=(...e)=>{t(this),s&&s.apply(n,[...e])},setTimeout((e=>{t(this)}),1)}}if(Ye.includes(s)){const n=e=>{switch(s){case"easy forLoopStart":return e+1;case"easy forLoopEnd":return e}},o=e=>{switch(s){case"easy forLoopStart":return e+3;case"easy forLoopEnd":return e}},a=e=>{switch(s){case"easy forLoopStart":return 0;case"easy forLoopEnd":return 1}};e.prototype.onNodeCreated=function(){if(je.includes(s)){const e=this.inputs.findIndex((e=>"flow"===e.name)),t=this.outputs.findIndex((e=>"flow"===e.name));-1!==e&&(this.inputs[e].shape=5),-1!==t&&(this.outputs[t].shape=5)}return null==i?void 0:i.apply(this,arguments)},e.prototype.onConnectionsChange=function(e,i,l,d){if("easy whileLoopStart"!=s&&"easy whileLoopEnd"!=s&&d){if(1==e){let e=this.inputs.every((e=>null!==e.link));if(je.includes(s)){if(e){if(this.inputs.length>=10)return void $.warn(Z("The maximum number of inputs is 10"));let e=n(this.inputs.length),s="initial_value"+e,o="value"+e;this.addInput(s,"*"),t.input.optional["initial_value"+e]=["*",{}],this.addOutput(o,"*")}else if(!l){const e=a(),n=o(i);i>=e&&i==this.inputs.length-2&&(this.removeInput(i+1),delete t.input.optional["initial_value"+(i+1)],this.removeOutput(n))}}else if(Ve.includes(s))if(e){if(this.inputs.length>=10)return void $.warn(Z("The maximum number of inputs is 10"));let e=He[s]+this.inputs.length;this.addInput(e,"*")}else l||i==this.inputs.length-2&&this.removeInput(i+1)}return null==r?void 0:r.apply(this,arguments)}}}},nodeCreated(e){if(e.comfyClass.startsWith("easy ")){if(e.widgets)for(const n of e.widgets){if(!Pe.includes(n.name))continue;let t=n.value;Xe(e,n),Object.defineProperty(n,"value",{get:e=>t,set(s){s!==t&&(t=s,Xe(e,n))}})}const t=e.comfyClass;if("easy preDetailerFix"==t){const t=e.widgets.find((e=>"customtext"===e.type));if(!t)return;t.dynamicPrompts=!1,t.inputEl.placeholder="wildcard spec: if kept empty, this option will be ignored",t.serializeValue=()=>t.value}if("easy wildcards"==t){const t=e.widgets.find((e=>"text"==e.name));let n=1;Object.defineProperty(e.widgets[n],"value",{set:e=>{if((new Error).stack.includes("inner_value_change")&&"Select the LoRA to add to the text"!=e){let n=e;n.endsWith(".safetensors")&&(n=n.slice(0,-12)),t.value+=``}},get:e=>"Select the LoRA to add to the text"}),Object.defineProperty(e.widgets[n+1],"value",{set:e=>{(new Error).stack.includes("inner_value_change")&&"Select the Wildcard to add to the text"!=e&&(""!=t.value&&(t.value+=", "),t.value+=e)},get:e=>"Select the Wildcard to add to the text"}),e.widgets[n].serializeValue=e=>"Select the LoRA to add to the text",e.widgets[n+1].serializeValue=e=>"Select the Wildcard to add to the text"}if(We.includes(t)){const t=document.createElement("textarea");t.className="comfy-multiline-input",t.readOnly=!0;const n=e.addDOMWidget("info","customtext",t,{getValue:e=>t.value,setValue:e=>t.value=e,serialize:!1});n.inputEl=t,t.addEventListener("input",(()=>{var e;null==(e=n.callback)||e.call(n,n.value)}))}}}}),w.registerExtension({name:"easy bookmark",registerCustomNodes(){class e{constructor(){f(this,"type","easy bookmark"),f(this,"title","🔖"),f(this,"slot_start_y",-20),f(this,"___collapsed_width",0),f(this,"isVirtualNode",!0),f(this,"serialize_widgets",!0),f(this,"keypressBound",null),this.addWidget("text","shortcut_key","1",(e=>{""!==(e=e.trim()[0]||"1")&&(this.title="🔖 "+e)}),{y:8}),this.addWidget("number","zoom",1,(e=>{}),{y:8+LiteGraph.NODE_WIDGET_HEIGHT+4,max:2,min:.5,precision:2}),this.keypressBound=this.onKeypress.bind(this)}get _collapsed_width(){return this.___collapsed_width}set _collapsed_width(e){const t=w.canvas,n=t.canvas.getContext("2d");if(n){const e=n.font;n.font=t.title_text_font,this.___collapsed_width=40+n.measureText(this.title).width,n.font=e}}onAdded(){setTimeout((e=>{const t=this.widgets[0].value;t&&(this.title="🔖 "+t)}),1),window.addEventListener("keydown",this.keypressBound)}onRemoved(){window.removeEventListener("keydown",this.keypressBound)}onKeypress(e){const t=e.target;["input","textarea"].includes(t.localName)||this.widgets[0]&&e.key.toLocaleLowerCase()===this.widgets[0].value.toLocaleLowerCase()&&this.canvasToBookmark()}canvasToBookmark(){var e,t;const n=w.canvas;(null==(e=null==n?void 0:n.ds)?void 0:e.offset)&&(n.ds.offset[0]=16-this.pos[0],n.ds.offset[1]=40-this.pos[1]),null!=(null==(t=null==n?void 0:n.ds)?void 0:t.scale)&&(n.ds.scale=Number(this.widgets[1].value||1)),n.setDirty(!0,!0)}}LiteGraph.registerNodeType("easy bookmark",Object.assign(e,{title:"Bookmark 🔖"})),e.category="EasyUse/Util"}}),w.registerExtension({name:"Comfy.EasyUse.ChainNode",init(){w.canvas._mousemove_callback=e=>{if(!I("EasyUse.Nodes.ChainGetSet",null,!0))return;((e,t=!1,n={})=>{var s,o,i,a,l;if(0===e.length)return;const r=n.inputX||160,d=n.ouputX||60;if(e.filter((e=>Ne(e))).length>1)return;for(const c of e){let a=0,l=0;const u=n.inputY||10,p=n.outputY||30,h=[];if(c.graph){for(const e of c.inputs??[]){const t=e.link;if(!t)continue;const{origin_id:n,target_slot:s}=Ae(t),o=be(n);if(!o)continue;if(!Ne(o))continue;const i=c.getConnectionPos(!0,s);o.pos=[i[0]-r,i[1]+15+a*u],a+=1,h.push(o),o.flags.collapsed=!0}for(const e of c.outputs??[])if(e.links&&c.graph)for(const t of e.links){const{target_id:e}=Ae(t),n=be(e);if(!n)continue;if(!Ne(n))continue;const o=null==(s=n.outputs)?void 0:s.links;if((null==o?void 0:o.length)>1)return;const i=c.getConnectionPos(!1,0);n.pos=[i[0]+d,i[1]+15+l*p],l+=1,h.push(n),n.flags.collapsed=!0}if(t&&1===e.length){const e=[c,...h];(null==(i=null==(o=c.graph)?void 0:o.list_of_graphcanvas)?void 0:i[0]).selectNodes(e)}}}const u=e[0];if(!u)return;(null==(l=null==(a=u.graph)?void 0:a.list_of_graphcanvas)?void 0:l[0]).setDirty(!0,!0)})(Le())};const e=LGraphCanvas.prototype.showLinkMenu;LGraphCanvas.prototype.showLinkMenu=function(t,n){return n.shiftKey?(((e,t=!1)=>{var n,s,o,i,a,l,r,d,u,c;const{type:p}=e;if("*"===p)return;let{origin_id:h,target_id:m,origin_slot:g,target_slot:f}=e,y=be(h),_=be(m);if(!y||!_)return!1;if("Reroute"===y.type){let e=0;[y,e]=Ge(y),h=null==y?void 0:y.id,g=e,void 0!==g&&-1!==g||(g=0)}if("Reroute"===_.type&&(_=Me(_),m=null==_?void 0:_.id,f=null==_?void 0:_.inputs.findIndex((e=>e.type===p)),void 0!==f&&-1!==f||(f=0)),void 0===h||void 0===m||!y||!_)return!1;if(t&&(Ne(y)||Ne(_)))return!1;let v=ke((null==(n=_.getInputInfo(f))?void 0:n.name)??p.toLowerCase());v||(v=ke((null==(o=null==(s=null==y?void 0:y.outputs)?void 0:s[g])?void 0:o.name)??(null==(a=null==(i=null==y?void 0:y.outputs)?void 0:i[g])?void 0:a.type.toString())??v+`_from_${h}_to_${m}`));let w,b=!1,L=!1;if(Ne(y))v=ve(y),L=!0;else{const e=null==(r=null==(l=y.outputs)?void 0:l[g])?void 0:r.links;if(e)for(const t of e){const e=be((null==(d=Ae(t))?void 0:d.target_id)??-1);e&&Ne(e)&&xe(e)&&(v=ve(e),L=!0)}if(!L){for(const e of Te()){if(v!==ve(e)||!xe(e))continue;const t=null==(u=e.inputs[0])?void 0:u.link;(null==(c=Ae(t))?void 0:c.origin_id)===y.id?L=!0:b=!0}b&&(v+=`_from_${h}_to_${m}`)}}if(!L){w=LiteGraph.createNode("easy setNode"),w.is_auto_link=!0;const e=y.getConnectionPos(!1,g);w.pos=[e[0]+20,e[1]],w.inputs[0].name=v,w.inputs[0].type=p,w.inputs[0].widget=_.inputs[f].widget,Oe(w,v),De(w),w.flags.collapsed=!0;let t=[];y.widgets?t=Object.values(y.widgets).map((e=>e.value)):y.widgets_values&&(t=JSON.parse(JSON.stringify(y.widgets_values))),y.connect(g,w,0),y.widgets_values=t,"PrimitiveNode"===y.type&&setTimeout((()=>{if(y){y.connect(g,w,0);for(const[e,n]of t.entries())Oe(y,n,e);null!==w&&w.setSize(w.computeSize())}}))}const S=LiteGraph.createNode("easy getNode"),E=_.getConnectionPos(!0,f);S.pos=[E[0]-150,E[1]],S.outputs[0].name=v,S.outputs[0].type=p,S.outputs[0].widget=_.inputs[f].widget,De(S),Oe(S,v),null===S||(S.flags.collapsed=!0,S.setSize(S.computeSize()),S.connect(0,_,f))})(t),!1):(e.apply(this,[t,n]),!1)}}});let Ze=[];function Ke(e,t,n,s,o){var i=LGraphCanvas.active_canvas,a=i.getCanvasWindow(),l=i.graph;if(l)return function e(t,s){var r=LiteGraph.getNodeTypesCategories(i.filter||l.filter).filter((function(e){return e.startsWith(t)})),d=[];r.map((function(n){if(n){var s=new RegExp("^("+t+")"),o=n.replace(s,"").split("/")[0],i=""===t?o+"/":t+o+"/",a=o;-1!=a.indexOf("::")&&(a=a.split("::")[1]),-1===d.findIndex((function(e){return e.value===i}))&&d.push({value:i,content:a,has_submenu:!0,callback:function(t,n,s,o){e(t.value,o)}})}})),LiteGraph.getNodeTypesInCategory(t.slice(0,-1),i.filter||l.filter).map((function(e){if(!e.skip_list){var t={value:e.type,content:e.title,has_submenu:!1,callback:function(e,t,n,s){var a=s.getFirstEvent();i.graph.beforeChange();var l=LiteGraph.createNode(e.value);l&&(l.pos=i.convertEventToCanvasOffset(a),i.graph.add(l)),o&&o(l),i.graph.afterChange()}};d.push(t)}}));const u=I("EasyUse.ContextMenu.NodesSort",null,!0);""===t&&u&&(d=function(e){let t=[],n=[];return e.forEach((e=>{(null==e?void 0:e.value)&&F.includes(e.value.split("/")[0])?t.push(e):n.push(e)})),[{title:Z("ComfyUI Basic"),is_category_title:!0},...t,{title:Z("Others A~Z"),is_category_title:!0},...n.sort(((e,t)=>e.content.localeCompare(t.content)))]}(d)),new LiteGraph.ContextMenu(d,{event:n,parentMenu:s},a)}("",s),!1}w.registerExtension({name:"Comfy.EasyUse.ContextMenu",async setup(){LGraphCanvas.onMenuAdd=Ke;const e=I("EasyUse.ContextMenu.ModelsThumbnailsLimit",null,500),t=await b.fetchApi(`/easyuse/models/thumbnail?limit=${e}`);if(200===t.status){let e=await t.json();Ze=e}else $.error(Z("Too many thumbnails, have closed the display"));const n=LiteGraph.ContextMenu;LiteGraph.ContextMenu=function(e,t){if(I("EasyUse.ContextMenu.SubDirectories",null,!1)&&(null==t?void 0:t.callback)&&!e.some((e=>"string"!=typeof e))){const s=function(e,t){const n=e,s=[...n],o={},i=[],a=[],l=["ckpt","pt","bin","pth","safetensors"];if((null==e?void 0:e.length)>0){const t=Qe(e[e.length-1]);if(!l.includes(t))return null}for(const r of n){const e=r.indexOf("/")>-1?"/":"\\",t=r.split(e);if(t.length>1){const n=t.shift();o[n]=o[n]||[],o[n].push(t.join(e))}else"CHOOSE"===r||r.startsWith("DISABLE ")?i.push(r):a.push(r)}if(Object.values(o).length>0){const e=t.callback;t.callback=null;const n=(t,n)=>{["None","无","無","なし"].includes(t.content)?e("None",n):e(s.find((e=>e.endsWith(t.content)),n))},r=(e,t="")=>{const s=t?t+"\\"+qe(e):qe(e),o=Qe(e),i=(new Date).getTime();let a,r="";if(l.includes(o))for(let n=0;n{let n=[],s=[];const i=e.map((e=>{const i={},a=e.indexOf("/")>-1?"/":"\\",l=e.split(a);if(l.length>1){const e=l.shift();i[e]=i[e]||[],i[e].push(l.join(a))}if(Object.values(o).length>0){let t=Object.keys(i)[0];t&&i[t]?n.push({key:t,value:i[t][0]}):s.push(r(e,t))}return r(e,t)}));if(n.length>0){let e={};return n.forEach((t=>{e[t.key]=e[t.key]||[],e[t.key].push(t.value)})),[...Object.entries(e).map((e=>({content:e[0],has_submenu:!0,callback:()=>{},submenu:{options:u(e[1],e[0])}}))),...s]}return i};for(const[t,s]of Object.entries(o))d.push({content:t,has_submenu:!0,callback:()=>{},submenu:{options:u(s,t)}});return d.push(...a.map((e=>r(e,"")))),i.length>0&&d.push(...i.map((e=>r(e,"")))),d}return null}(e,t);return s?n.call(this,s,t):n.apply(this,[...arguments])}return t.parentMenu||t.extra||t.scale||t.hasOwnProperty("extra")&&(e.unshift(null),s=window.location.host,["192.168.","10.","127.",/^172\.((1[6-9]|2[0-9]|3[0-1])\.)/].some((e=>"string"==typeof e?s.startsWith(e):e.test(s)))&&e.unshift({content:`${Z("Reboot ComfyUI")}`,callback:e=>(async()=>{if(confirm(Z("Are you sure you'd like to reboot the server?")))try{b.fetchApi("/easyuse/reboot")}catch(e){}})()}),e.unshift({content:`${Z("Cleanup Of VRAM Usage")}`,callback:e=>q()})),n.apply(this,[...arguments]);var s},LiteGraph.ContextMenu.prototype=n.prototype,I("EasyUse.ContextMenu.NodesSort",null,!0)&&(LiteGraph.ContextMenu.prototype.addItem=$e)}});const Je=e=>e&&"object"==typeof e&&"image"in e&&e.content;function $e(e,t,n){var s=this;n=n||{};var o=document.createElement("div");o.className="litemenu-entry submenu";var i,a=!1;function l(e){var t=this.value,o=!0;(s.current_submenu&&s.current_submenu.close(e),n.callback)&&(!0===n.callback.call(this,t,n,e,s,n.node)&&(o=!1));if(t){if(t.callback&&!n.ignore_item_callbacks&&!0!==t.disabled)!0===t.callback.call(this,t,n,e,s,n.extra)&&(o=!1);if(t.submenu){if(!t.submenu.options)throw"ContextMenu submenu needs options";new s.constructor(t.submenu.options,{callback:t.submenu.callback,event:e,parentMenu:s,ignore_item_callbacks:t.submenu.ignore_item_callbacks,title:t.submenu.title,extra:t.submenu.extra,autoopen:n.autoopen}),o=!1}}o&&!s.lock&&s.close()}return null===t?o.classList.add("separator"):t.is_category_title?(o.classList.remove("litemenu-entry"),o.classList.remove("submenu"),o.classList.add("litemenu-title"),o.innerHTML=t.title):(o.innerHTML=t&&t.title?t.title:e,o.value=t,t&&(t.disabled&&(a=!0,o.classList.add("disabled")),(t.submenu||t.has_submenu)&&o.classList.add("has_submenu")),"function"==typeof t?(o.dataset.value=e,o.onclick_callback=t):o.dataset.value=t,t.className&&(o.className+=" "+t.className)),o&&Je(t)&&(null==t?void 0:t.image)&&!t.submenu&&(o.textContent+=" *",L("div.pysssss-combo-image",{parent:o,style:{backgroundImage:`url(/pysssss/view/${i=t.image,encodeURIComponent(i).replace(/[!'()*]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`))})`}})),this.root.appendChild(o),a||o.addEventListener("click",l),!a&&n.autoopen&&LiteGraph.pointerListenerAdd(o,"enter",(function(e){var t=this.value;if(!t||!t.has_submenu)return;l.call(this,e)})),o}function qe(e){return null==e?void 0:e.substring(0,e.lastIndexOf("."))}function Qe(e){return null==e?void 0:e.substring(e.lastIndexOf(".")+1)}class et extends S{constructor(){super(),this.element.classList.add("easyuse-model-metadata")}show(e){super.show(L("div",Object.keys(e).map((t=>L("div",[L("label",{textContent:t}),L("span",{textContent:e[t]})])))))}}class tt extends S{constructor(e){super(),this.name=e,this.element.classList.add("easyuse-model-info")}get customNotes(){return this.metadata["easyuse.notes"]}set customNotes(e){this.metadata["easyuse.notes"]=e}get hash(){return this.metadata["easyuse.sha256"]}async show(e,t){this.type=e;const n=b.fetchApi("/easyuse/metadata/"+encodeURIComponent(`${e}/${t}`));this.info=L("div",{style:{flex:"auto"}}),this.imgCurrent=0,this.imgList=L("div.easyuse-preview-list",{style:{display:"none"}}),this.imgWrapper=L("div.easyuse-preview",[L("div.easyuse-preview-group",[this.imgList])]),this.main=L("main",{style:{display:"flex"}},[this.imgWrapper,this.info]),this.content=L("div.easyuse-model-content",[L("div.easyuse-model-header",[L("h2",{textContent:this.name})]),this.main]);const s=L("div",{textContent:"ℹ️ Loading...",parent:this.content});super.show(this.content),this.metadata=await(await n).json(),this.viewMetadata.style.cursor=this.viewMetadata.style.opacity="",this.viewMetadata.removeAttribute("disabled"),s.remove(),this.addInfo()}createButtons(){const e=super.createButtons();return this.viewMetadata=L("button",{type:"button",textContent:"View raw metadata",disabled:"disabled",style:{opacity:.5,cursor:"not-allowed"},onclick:e=>{this.metadata&&(new et).show(this.metadata)}}),e.unshift(this.viewMetadata),e}parseNote(){if(!this.customNotes)return[];let e=[];const t=new RegExp("(\\bhttps?:\\/\\/[^\\s]+)","g");let n,s=0;do{let o;n=t.exec(this.customNotes);let i=0;n?(o=n.index,i=n.index+n[0].length):o=this.customNotes.length;let a=this.customNotes.substring(s,o);a&&(a=a.replaceAll("\n","
"),e.push(L("span",{innerHTML:a}))),n&&e.push(L("a",{href:n[0],textContent:n[0],target:"_blank"})),s=i}while(n);return e}addInfoEntry(e,t){return L("p",{parent:this.info},["string"==typeof e?L("label",{textContent:e+": "}):e,"string"==typeof t?L("span",{textContent:t}):t])}async getCivitaiDetails(){const e=await fetch("https://civitai.com/api/v1/model-versions/by-hash/"+this.hash);if(200===e.status)return await e.json();throw 404===e.status?new Error("Model not found"):new Error(`Error loading info (${e.status}) ${e.statusText}`)}addCivitaiInfo(){const e=this.getCivitaiDetails(),t=L("span",{textContent:"ℹ️ Loading..."});return this.addInfoEntry(L("label",[L("img",{style:{width:"18px",position:"relative",top:"3px",margin:"0 5px 0 0"},src:"https://civitai.com/favicon.ico"}),L("span",{textContent:"Civitai: "})]),t),e.then((e=>{var t,n;this.imgWrapper.style.display="block";let s=this.element.querySelector(".easyuse-model-header");s&&s.replaceChildren(L("h2",{textContent:this.name}),L("div.easyuse-model-header-remark",[L("h5",{textContent:Z("Updated At:")+O(new Date(e.updatedAt),"yyyy/MM/dd")}),L("h5",{textContent:Z("Created At:")+O(new Date(e.updatedAt),"yyyy/MM/dd")})]));let o=null,i=this.parseNote.call(this),a=Z("✏️ Edit"),l=L("div.easyuse-model-detail-textarea",[L("p",(null==i?void 0:i.length)>0?i:{textContent:Z("No notes")})]);if(i&&0!=i.length?l.classList.remove("empty"):l.classList.add("empty"),this.info.replaceChildren(L("div.easyuse-model-detail",[L("div.easyuse-model-detail-head.flex-b",[L("span",Z("Notes")),L("a",{textContent:a,href:"#",style:{fontSize:"12px",float:"right",color:"var(--warning-color)",textDecoration:"none"},onclick:async e=>{if(e.preventDefault(),o){if(o.value!=this.customNotes){toast.showLoading(Z("Saving Notes...")),this.customNotes=o.value;const e=await b.fetchApi("/easyuse/metadata/notes/"+encodeURIComponent(`${this.type}/${this.name}`),{method:"POST",body:this.customNotes});if(toast.hideLoading(),200!==e.status)return toast.error(Z("Saving Failed")),void alert(`Error saving notes (${e.status}) ${e.statusText}`);toast.success(Z("Saving Succeed")),i=this.parseNote.call(this),l.replaceChildren(L("p",(null==i?void 0:i.length)>0?i:{textContent:Z("No notes")})),o.value?l.classList.remove("empty"):l.classList.add("empty")}else l.replaceChildren(L("p",{textContent:Z("No notes")})),l.classList.add("empty");e.target.textContent=a,o.remove(),o=null}else e.target.textContent="💾 Save",o=L("textarea",{placeholder:Z("Type your notes here"),style:{width:"100%",minWidth:"200px",minHeight:"50px",height:"100px"},textContent:this.customNotes}),l.replaceChildren(o),o.focus()}})]),l]),L("div.easyuse-model-detail",[L("div.easyuse-model-detail-head",{textContent:Z("Details")}),L("div.easyuse-model-detail-body",[L("div.easyuse-model-detail-item",[L("div.easyuse-model-detail-item-label",{textContent:Z("Type")}),L("div.easyuse-model-detail-item-value",{textContent:e.model.type})]),L("div.easyuse-model-detail-item",[L("div.easyuse-model-detail-item-label",{textContent:Z("BaseModel")}),L("div.easyuse-model-detail-item-value",{textContent:e.baseModel})]),L("div.easyuse-model-detail-item",[L("div.easyuse-model-detail-item-label",{textContent:Z("Download")}),L("div.easyuse-model-detail-item-value",{textContent:(null==(t=e.stats)?void 0:t.downloadCount)||0})]),L("div.easyuse-model-detail-item",[L("div.easyuse-model-detail-item-label",{textContent:Z("Trained Words")}),L("div.easyuse-model-detail-item-value",{textContent:(null==e?void 0:e.trainedWords.join(","))||"-"})]),L("div.easyuse-model-detail-item",[L("div.easyuse-model-detail-item-label",{textContent:Z("Source")}),L("div.easyuse-model-detail-item-value",[L("label",[L("img",{style:{width:"14px",position:"relative",top:"3px",margin:"0 5px 0 0"},src:"https://civitai.com/favicon.ico"}),L("a",{href:"https://civitai.com/models/"+e.modelId,textContent:"View "+e.model.name,target:"_blank"})])])])])])),null==(n=e.images)?void 0:n.length){this.imgCurrent=0,this.isSaving=!1,e.images.map((e=>e.url&&this.imgList.appendChild(L("div.easyuse-preview-slide",[L("div.easyuse-preview-slide-content",[L("img",{src:e.url}),L("div.save",{textContent:"Save as preview",onclick:async()=>{if(this.isSaving)return;this.isSaving=!0,toast.showLoading(Z("Saving Preview..."));const t=await(await fetch(e.url)).blob(),n="temp_preview."+new URL(e.url).pathname.split(".")[1],s=new FormData;s.append("image",new File([t],n)),s.append("overwrite","true"),s.append("type","temp");if(200!==(await b.fetchApi("/upload/image",{method:"POST",body:s})).status)return this.isSaving=!1,toast.error(Z("Saving Failed")),toast.hideLoading(),void alert(`Error saving preview (${req.status}) ${req.statusText}`);await b.fetchApi("/easyuse/save/"+encodeURIComponent(`${this.type}/${this.name}`),{method:"POST",body:JSON.stringify({filename:n,type:"temp"}),headers:{"content-type":"application/json"}}).then((e=>{toast.success(Z("Saving Succeed")),toast.hideLoading()})),this.isSaving=!1,app.refreshComboInNodes()}})])]))));let t=this;this.imgDistance=(-660*this.imgCurrent).toString(),this.imgList.style.display="",this.imgList.style.transform="translate3d("+this.imgDistance+"px, 0px, 0px)",this.slides=this.imgList.querySelectorAll(".easyuse-preview-slide"),this.slideLeftButton=L("button.left",{parent:this.imgWrapper,style:{display:e.images.length<=2?"none":"block"},innerHTML:'',onclick:()=>{e.images.length<=2||(t.imgList.classList.remove("no-transition"),0==t.imgCurrent?(t.imgCurrent=e.images.length/2-1,this.slides[this.slides.length-1].style.transform="translate3d("+(-660*(this.imgCurrent+1)).toString()+"px, 0px, 0px)",this.slides[this.slides.length-2].style.transform="translate3d("+(-660*(this.imgCurrent+1)).toString()+"px, 0px, 0px)",t.imgList.style.transform="translate3d(660px, 0px, 0px)",setTimeout((e=>{this.slides[this.slides.length-1].style.transform="translate3d(0px, 0px, 0px)",this.slides[this.slides.length-2].style.transform="translate3d(0px, 0px, 0px)",t.imgDistance=(-660*this.imgCurrent).toString(),t.imgList.style.transform="translate3d("+t.imgDistance+"px, 0px, 0px)",t.imgList.classList.add("no-transition")}),500)):(t.imgCurrent=t.imgCurrent-1,t.imgDistance=(-660*this.imgCurrent).toString(),t.imgList.style.transform="translate3d("+t.imgDistance+"px, 0px, 0px)"))}}),this.slideRightButton=L("button.right",{parent:this.imgWrapper,style:{display:e.images.length<=2?"none":"block"},innerHTML:'',onclick:()=>{if(!(e.images.length<=2))if(t.imgList.classList.remove("no-transition"),t.imgCurrent>=e.images.length/2-1){t.imgCurrent=0;const n=e.images.length/2;this.slides[0].style.transform="translate3d("+(660*n).toString()+"px, 0px, 0px)",this.slides[1].style.transform="translate3d("+(660*n).toString()+"px, 0px, 0px)",t.imgList.style.transform="translate3d("+(-660*n).toString()+"px, 0px, 0px)",setTimeout((e=>{this.slides[0].style.transform="translate3d(0px, 0px, 0px)",this.slides[1].style.transform="translate3d(0px, 0px, 0px)",t.imgDistance=(-660*this.imgCurrent).toString(),t.imgList.style.transform="translate3d("+t.imgDistance+"px, 0px, 0px)",t.imgList.classList.add("no-transition")}),500)}else t.imgCurrent=t.imgCurrent+1,t.imgDistance=(-660*this.imgCurrent).toString(),t.imgList.style.transform="translate3d("+t.imgDistance+"px, 0px, 0px)"}})}return e.description&&L("div",{parent:this.content,innerHTML:e.description,style:{marginTop:"10px"}}),e})).catch((e=>{this.imgWrapper.style.display="none",t.textContent="⚠️ "+e.message})).finally((e=>{}))}}class nt extends tt{async addInfo(){await this.addCivitaiInfo()}}class st extends tt{getTagFrequency(){if(!this.metadata.ss_tag_frequency)return[];const e=JSON.parse(this.metadata.ss_tag_frequency),t={};for(const n in e){const s=e[n];for(const e in s)e in t?t[e]+=s[e]:t[e]=s[e]}return Object.entries(t).sort(((e,t)=>t[1]-e[1]))}getResolutions(){let e=[];if(this.metadata.ss_bucket_info){const t=JSON.parse(this.metadata.ss_bucket_info);if(null==t?void 0:t.buckets)for(const{resolution:n,count:s}of Object.values(t.buckets))e.push([s,`${n.join("x")} * ${s}`])}e=e.sort(((e,t)=>t[0]-e[0])).map((e=>e[1]));let t=this.metadata.ss_resolution;if(t){const n=t.split(","),s=n[0].replace("(",""),o=n[1].replace(")","");e.push(`${s.trim()}x${o.trim()} (Base res)`)}else(t=this.metadata["modelspec.resolution"])&&e.push(t+" (Base res");return e.length||e.push("⚠️ Unknown"),e}getTagList(e){return e.map((e=>L("li.easyuse-model-tag",{dataset:{tag:e[0]},$:e=>{e.onclick=()=>{e.classList.toggle("easyuse-model-tag--selected")}}},[L("p",{textContent:e[0]}),L("span",{textContent:e[1]})])))}addTags(){let e,t=this.getTagFrequency();if(null==t?void 0:t.length){const n=t.length;let s;n>500&&(t=t.slice(0,500),e=L("p",[L("span",{textContent:"⚠️ Only showing first 500 tags "}),L("a",{href:"#",textContent:`Show all ${n}`,onclick:()=>{s.replaceChildren(...this.getTagList(this.getTagFrequency())),e.remove()}})])),s=L("ol.easyuse-model-tags-list",this.getTagList(t)),this.tags=L("div",[s])}else this.tags=L("p",{textContent:"⚠️ No tag frequency metadata found"});this.content.append(this.tags),e&&this.content.append(e)}async addInfo(){const e=this.addCivitaiInfo();this.addTags();const t=await e;t&&L("div",{parent:this.content,innerHTML:t.description,style:{maxHeight:"250px",overflow:"auto"}})}createButtons(){const e=super.createButtons();function t(e,t){const n=L("textarea",{parent:document.body,style:{position:"fixed"},textContent:t.map((e=>e.dataset.tag)).join(", ")});n.select();try{document.execCommand("copy"),e.target.dataset.text||(e.target.dataset.text=e.target.textContent),e.target.textContent="Copied "+t.length+" tags",setTimeout((()=>{e.target.textContent=e.target.dataset.text}),1e3)}catch(s){prompt("Copy to clipboard: Ctrl+C, Enter",text)}finally{document.body.removeChild(n)}}return e.unshift(L("button",{type:"button",textContent:"Copy Selected",onclick:e=>{t(e,[...this.tags.querySelectorAll(".easyuse-model-tag--selected")])}}),L("button",{type:"button",textContent:"Copy All",onclick:e=>{t(e,[...this.tags.querySelectorAll(".easyuse-model-tag")])}})),e}}const ot=["easy fullLoader","easy a1111Loader","easy comfyLoader","easy kolorsLoader","easy hunyuanDiTLoader","easy pixArtLoader"],it=["easy preSampling","easy preSamplingAdvanced","easy preSamplingDynamicCFG","easy preSamplingNoiseIn","easy preSamplingCustom","easy preSamplingLayerDiffusion","easy fullkSampler"],at=["KSamplerSelect","SamplerEulerAncestral","SamplerEulerAncestralCFG++","SamplerLMS","SamplerDPMPP_3M_SDE","SamplerDPMPP_2M_SDE","SamplerDPMPP_SDE","SamplerDPMAdaptative","SamplerLCMUpscale","SamplerTCD","SamplerTCD EulerA"],lt=["BasicScheduler","KarrasScheduler","ExponentialScheduler","PolyexponentialScheduler","VPScheduler","BetaSamplingScheduler","SDTurboScheduler","SplitSigmas","SplitSigmasDenoise","FlipSigmas","AlignYourStepsScheduler","GITSScheduler"],rt=["easy kSampler","easy kSamplerTiled","easy kSamplerInpainting","easy kSamplerDownscaleUnet","easy kSamplerLayerDiffusion"],dt=["easy controlnetLoader","easy controlnetLoaderADV","easy controlnetLoader++","easy instantIDApply","easy instantIDApplyADV"],ut=["easy ipadapterApply","easy ipadapterApplyADV","easy ipadapterApplyFaceIDKolors","easy ipadapterStyleComposition","easy ipadapterApplyFromParams","easy pulIDApply","easy pulIDApplyADV"],ct=["easy positive","easy wildcards"],pt=["easy loadImageBase64","LoadImage","LoadImageMask"],ht=["easy applyBrushNet","easy applyPowerPaint","easy applyInpaint"],mt={positive_prompt:{text:"positive",positive:"text"},loaders:{ckpt_name:"ckpt_name",vae_name:"vae_name",clip_skip:"clip_skip",lora_name:"lora_name",resolution:"resolution",empty_latent_width:"empty_latent_width",empty_latent_height:"empty_latent_height",positive:"positive",negative:"negative",batch_size:"batch_size",a1111_prompt_style:"a1111_prompt_style"},preSampling:{steps:"steps",cfg:"cfg",cfg_scale_min:"cfg",sampler_name:"sampler_name",scheduler:"scheduler",denoise:"denoise",seed_num:"seed_num",seed:"seed"},kSampler:{image_output:"image_output",save_prefix:"save_prefix",link_id:"link_id"},controlnet:{control_net_name:"control_net_name",strength:["strength","cn_strength"],scale_soft_weights:["scale_soft_weights","cn_soft_weights"],cn_strength:["strength","cn_strength"],cn_soft_weights:["scale_soft_weights","cn_soft_weights"]},ipadapter:{preset:"preset",lora_strength:"lora_strength",provider:"provider",weight:"weight",weight_faceidv2:"weight_faceidv2",start_at:"start_at",end_at:"end_at",cache_mode:"cache_mode",use_tiled:"use_tiled",insightface:"insightface",pulid_file:"pulid_file"},load_image:{image:"image",base64_data:"base64_data",channel:"channel"},inpaint:{dtype:"dtype",fitting:"fitting",function:"function",scale:"scale",start_at:"start_at",end_at:"end_at"},sampler:{},sigmas:{}},gt={loaders:{optional_lora_stack:"optional_lora_stack",positive:"positive",negative:"negative"},preSampling:{pipe:"pipe",image_to_latent:"image_to_latent",latent:"latent"},kSampler:{pipe:"pipe",model:"model"},controlnet:{pipe:"pipe",image:"image",image_kps:"image_kps",control_net:"control_net",positive:"positive",negative:"negative",mask:"mask"},positive_prompt:{},ipadapter:{model:"model",image:"image",image_style:"image",attn_mask:"attn_mask",optional_ipadapter:"optional_ipadapter"},inpaint:{pipe:"pipe",image:"image",mask:"mask"},sampler:{},sigmas:{}},ft={loaders:{pipe:"pipe",model:"model",vae:"vae",clip:null,positive:null,negative:null,latent:null},preSampling:{pipe:"pipe"},kSampler:{pipe:"pipe",image:"image"},controlnet:{pipe:"pipe",positive:"positive",negative:"negative"},positive_prompt:{text:"positive",positive:"text"},load_image:{IMAGE:"IMAGE",MASK:"MASK"},ipadapter:{model:"model",tiles:"tiles",masks:"masks",ipadapter:"ipadapter"},inpaint:{pipe:"pipe"},sampler:{SAMPLER:"SAMPLER"},sigmas:{SIGMAS:"SIGMAS"}};function yt(e,t,n){return function(){!function(e,t,n){const s=LiteGraph.createNode(t);if(s){if(w.graph.add(s),s.pos=e.pos.slice(),s.size=e.size.slice(),e.widgets.forEach((e=>{if(mt[n][e.name]){const o=mt[n][e.name];if(o){const n=(t=o,s.widgets.find((e=>"object"==typeof t?t.includes(e.name):e.name===t)));n&&(n.value=e.value,"seed_num"==e.name&&(n.linkedWidgets[0].value=e.linkedWidgets[0].value),"converted-widget"==e.type&&Et(s,n,e))}}var t})),e.inputs&&e.inputs.forEach(((t,o)=>{if(t&&t.link&>[n][t.name]){const o=gt[n][t.name];if(null===o)return;const i=s.findInputSlot(o);if(-1!==i){const n=e.graph.links[t.link];if(n){const t=e.graph.getNodeById(n.origin_id);t&&t.connect(n.origin_slot,s,i)}}}})),e.outputs&&e.outputs.forEach(((t,o)=>{if(t&&t.links&&ft[n]&&ft[n][t.name]){const o=ft[n][t.name];if(null===o)return;const i=s.findOutputSlot(o);-1!==i&&t.links.forEach((t=>{const n=e.graph.links[t];if(n){const t=e.graph.getNodeById(n.target_id);t&&s.connect(i,t,n.target_slot)}}))}})),w.graph.remove(e),"easy fullkSampler"==s.type){const e=s.outputs[0].links;if(e&&e[0]){const t=w.graph._nodes.find((t=>t.inputs&&t.inputs[0]&&t.inputs[0].link==e[0]));t&&w.graph.remove(t)}}else if(it.includes(s.type)){const e=s.outputs[0].links;if(!e||!e[0]){const e=LiteGraph.createNode("easy kSampler");w.graph.add(e),e.pos=s.pos.slice(),e.pos[0]=e.pos[0]+s.size[0]+20;const t=s.findInputSlot("pipe");-1!==t&&s&&s.connect(0,e,t)}}s.setSize([s.size[0],s.computeSize()[1]])}}(e,t,n)}}const _t=(e,t)=>{const n=e.prototype.getExtraMenuOptions;e.prototype.getExtraMenuOptions=function(){const e=n.apply(this,arguments);return t.apply(this,arguments),e}},vt=(e,t,n,s,o=!0)=>{_t(s,(function(s,i){i.unshift({content:e,has_submenu:o,callback:(e,s,o,i,a)=>wt(e,s,o,i,a,t,n)}),"loaders"==t&&(i.unshift({content:Z("💎 View Lora Info..."),callback:(e,t,n,s,o)=>{let i=o.widgets.find((e=>"lora_name"==e.name)).value;i&&"None"!=i&&new st(i).show("loras",i)}}),i.unshift({content:Z("💎 View Checkpoint Info..."),callback:(e,t,n,s,o)=>{let i=o.widgets[0].value;i&&"None"!=i&&new nt(i).show("checkpoints",i)}}))}))},wt=(e,t,n,s,o,i,a)=>{const l=[];return a.map((e=>{o.type!==e&&l.push({content:`${e}`,callback:yt(o,e,i)})})),new LiteGraph.ContextMenu(l,{event:n,callback:null,parentMenu:s,node:o}),!1},bt="converted-widget",Lt=Symbol();function St(e,t,n=""){if(t.origType=t.type,t.origComputeSize=t.computeSize,t.origSerializeValue=t.serializeValue,t.computeSize=()=>[0,-4],t.type=bt+n,t.serializeValue=()=>{if(!e.inputs)return;let n=e.inputs.find((e=>{var n;return(null==(n=e.widget)?void 0:n.name)===t.name}));return n&&n.link?t.origSerializeValue?t.origSerializeValue():t.value:void 0},t.linkedWidgets)for(const s of t.linkedWidgets)St(e,s,":"+t.name)}function Et(e,t,n){St(e,t);const{type:s}=function(e){let t=e[0];t instanceof Array&&(t="COMBO");return{type:t}}(n),o=e.size;t.options&&t.options.forceInput||e.addInput(t.name,s,{widget:{name:t.name,[Lt]:()=>n}});for(const i of e.widgets)i.last_y+=LiteGraph.NODE_SLOT_HEIGHT;e.setSize([Math.max(o[0],e.size[0]),Math.max(o[1],e.size[1])])}const Ct=function(e){var t,n,s,o;const i=e.constructor.type,a=e.properties.origVals||{},l=a.title||e.title,r=a.color||e.color,d=a.bgcolor||e.bgcolor,u=e,c={size:[...e.size],color:r,bgcolor:d,pos:[...e.pos]};let p=[],h=[];if(e.inputs)for(const y of e.inputs)if(y.link){const t=y.name,n=e.findInputSlot(t),s=e.getInputNode(n),o=e.getInputLink(n);p.push([o.origin_slot,s,t])}if(e.outputs)for(const y of e.outputs)if(y.links){const e=y.name;for(const t of y.links){const n=graph.links[t],s=graph._nodes_by_id[n.target_id];h.push([e,s,n.target_slot])}}w.graph.remove(e);const m=w.graph.add(LiteGraph.createNode(i,l,c));function g(){if(u.widgets)for(let e of u.widgets)if("converted-widget"===e.type){const t=m.widgets.find((t=>t.name===e.name));for(let n of u.inputs)n.name===e.name&&Et(m,t,n.widget)}for(let e of p){const[t,n,s]=e;n.connect(t,m.id,s)}for(let e of h){const[t,n,s]=e;m.connect(t,n,s)}}let f=u.widgets_values;if(!f&&(null==(t=m.widgets)?void 0:t.length)>0)return m.widgets.forEach(((e,t)=>{const n=u.widgets[t];e.name===n.name&&e.type===n.type&&(e.value=n.value)})),void g();if(f){let e=function(e,t){var n,s,o,i,a,l;if(!0===e||!1===e){if((null==(n=t.options)?void 0:n.on)&&(null==(s=t.options)?void 0:s.off))return{value:e,pass:!0}}else if("number"==typeof e){if((null==(o=t.options)?void 0:o.min)<=e&&e<=(null==(i=t.options)?void 0:i.max))return{value:e,pass:!0}}else{if(null==(l=null==(a=t.options)?void 0:a.values)?void 0:l.includes(e))return{value:e,pass:!0};if(t.inputEl&&"string"==typeof e)return{value:e,pass:!0}}return{value:t.value,pass:!1}},t=!1;const i=(null==f?void 0:f.length)<=(null==(n=m.widgets)?void 0:n.length);let a=i?0:f.length-1;const l=n=>{var s;const o=u.widgets[n];let l=m.widgets[n];if(l.name===o.name&&l.type===o.type){for(;(i?a=0)&&!t;){let{value:t,pass:n}=e(f[a],l);if(n&&null!==t){l.value=t;break}a+=i?1:-1}a++,i||(a=f.length-((null==(s=m.widgets)?void 0:s.length)-1-n))}};if(i&&(null==(s=m.widgets)?void 0:s.length)>0)for(let n=0;n0)for(let n=m.widgets.length-1;n>=0;n--)l(n)}g()};w.registerExtension({name:"Comfy.EasyUse.ExtraMenu",async beforeRegisterNodeDef(e,t,n){_t(e,(function(e,n){n.unshift({content:Z("🔃 Reload Node"),callback:(e,t,n,s,o)=>{let i=LGraphCanvas.active_canvas;if(!i.selected_nodes||Object.keys(i.selected_nodes).length<=1)Ct(o);else for(let a in i.selected_nodes)Ct(i.selected_nodes[a])}}),"easy ckptNames"==t.name&&n.unshift({content:Z("💎 View Checkpoint Info..."),callback:(e,t,n,s,o)=>{o.widgets[0].value}})})),ct.includes(t.name)&&vt("↪️ Swap EasyPrompt","positive_prompt",ct,e),ot.includes(t.name)&&vt("↪️ Swap EasyLoader","loaders",ot,e),it.includes(t.name)&&vt("↪️ Swap EasyPreSampling","preSampling",it,e),rt.includes(t.name)&&vt("↪️ Swap EasyKSampler","preSampling",rt,e),at.includes(t.name)&&vt("↪️ Swap Custom Sampler","sampler",at,e),lt.includes(t.name)&&vt("↪️ Swap Custom Sigmas","sigmas",lt,e),dt.includes(t.name)&&vt("↪️ Swap EasyControlnet","controlnet",dt,e),ut.includes(t.name)&&vt("↪️ Swap EasyAdapater","ipadapter",ut,e),pt.includes(t.name)&&vt("↪️ Swap LoadImage","load_image",pt,e),ht.includes(t.name)&&vt("↪️ Swap InpaintNode","inpaint",ht,e)}});const At="➡️";w.registerExtension({name:"easy setNode",registerCustomNodes(){class e{constructor(){f(this,"defaultVisibility",!0),f(this,"serialize_widgets",!0),this.properties||(this.properties={previousName:""}),this.properties.showOutputText=e.defaultVisibility;const t=this;t.color=LGraphCanvas.node_colors.blue.color,this.addWidget("text","Constant","",((e,n,s,o,i)=>{t.validateName(t.graph),""!==this.widgets[0].value&&(this.title=At+this.widgets[0].value),this.update(),this.properties.previousName=this.widgets[0].value}),{}),this.addInput("*","*"),this.onConnectionsChange=function(e,n,s,o,i){if(1!=e||s||(this.inputs[n].type="*",this.inputs[n].name="*",this.title="Set"),o&&t.graph&&1==e&&s){const e=t.graph._nodes.find((e=>e.id==o.origin_id)).outputs[o.origin_slot],n=e.type,s=t.is_auto_link?this.widgets[0].value:e.name;"Set"===this.title&&(this.title=At+s,this.widgets[0].value=s),"*"===this.widgets[0].value&&(this.widgets[0].value=s),this.validateName(t.graph),this.inputs[0].type=n,this.inputs[0].name=s,setTimeout((e=>{this.title=At+this.widgets[0].value}),1)}this.update()},this.validateName=function(e){let n=t.widgets[0].value;if(""!=n){let s=0,o=[];do{o=e._nodes.filter((e=>e!=this&&("easy setNode"==e.type&&e.widgets[0].value===n))),o.length>0&&(n=t.widgets[0].value+s),s++}while(o.length>0);t.widgets[0].value=n,this.update()}},this.clone=function(){const t=e.prototype.clone.apply(this);return t.inputs[0].name="*",t.inputs[0].type="*",t.properties.previousName="",t.size=t.computeSize(),t},this.onAdded=function(e){this.validateName(e)},this.update=function(){if(t.graph){this.findGetters(t.graph).forEach((e=>{e.setType(this.inputs[0].type)})),this.widgets[0].value&&this.findGetters(t.graph,!0).forEach((e=>{e.setName(this.widgets[0].value)}));t.graph._nodes.filter((e=>"easy getNode"==e.type)).forEach((e=>{e.setComboValues&&e.setComboValues()}))}},this.findGetters=function(e,t){const n=t?this.properties.previousName:this.widgets[0].value;return e._nodes.filter((e=>"easy getNode"==e.type&&e.widgets[0].value===n&&""!=n))},this.isVirtualNode=!0}onRemoved(){this.graph._nodes.filter((e=>"easy getNode"==e.type)).forEach((e=>{e.setComboValues&&e.setComboValues([this])}))}}LiteGraph.registerNodeType("easy setNode",Object.assign(e,{title:"Set"})),e.category="EasyUse/Util"}}),w.registerExtension({name:"easy getNode",registerCustomNodes(){class e{constructor(){f(this,"defaultVisibility",!0),f(this,"serialize_widgets",!0),this.properties||(this.properties={}),this.properties.showOutputText=e.defaultVisibility;const t=this;t.color=LGraphCanvas.node_colors.blue.color,this.addWidget("combo","Constant","",(e=>{this.onRename()}),{values:()=>t.graph._nodes.filter((e=>"easy setNode"==e.type)).map((e=>e.widgets[0].value)).sort()}),this.addOutput("*","*"),this.onConnectionsChange=function(e,t,n,s,o){this.validateLinks(),2!=e||n?(this.onRename(),setTimeout((e=>{this.title="⬅️"+this.widgets[0].value}),1)):(this.outputs[t].type="*",this.outputs[t].name="*",this.title="Get")},this.setName=function(e){t.widgets[0].value=e,t.onRename(),t.serialize()},this.onRename=function(e=0){const n=this.findSetter(t.graph);if(n){const t=n.inputs[0].type,s=n.inputs[0].name;this.setType(t,s),this.outputs[e].type=t,this.outputs[e].name=s,this.title="⬅️"+n.widgets[0].value}else this.setType("*","*"),this.outputs[e].type="*",this.outputs[e].name="*"},this.clone=function(){const t=e.prototype.clone.apply(this);return t.size=t.computeSize(),t},this.validateLinks=function(){"*"!=this.outputs[0].type&&this.outputs[0].links&&this.outputs[0].links.forEach((e=>{const n=t.graph.links[e];n&&n.type!=this.outputs[0].type&&"*"!=n.type&&t.graph.removeLink(e)}))},this.setType=function(e,t){this.outputs[0].name=t,this.outputs[0].type=e,this.validateLinks()},this.findSetter=function(e){const t=this.widgets[0].value;return e._nodes.find((e=>"easy setNode"==e.type&&e.widgets[0].value===t&&""!=t))},this.isVirtualNode=!0}getInputLink(e){const t=this.findSetter(this.graph);if(t){const n=t.inputs[e];return this.graph.links[n.link]}throw new Error("No setter found for "+this.widgets[0].value+"("+this.type+")")}onAdded(e){}}LiteGraph.registerNodeType("easy getNode",Object.assign(e,{title:"Get"})),e.category="EasyUse/Util"}}),b.addEventListener("easyuse-global-seed",(function(e){let t=app.graph._nodes_by_id;for(let n in t){let s=t[n];if("easy globalSeed"==s.type){if(s.widgets){const t=s.widgets.find((e=>"value"==e.name));s.widgets.find((e=>"last_seed"==e.name)).value=t.value,t.value=e.detail.value}}else if(s.widgets){const t=s.widgets.find((e=>"seed_num"==e.name||"seed"==e.name||"noise_seed"==e.name));t&&null!=e.detail.seed_map[s.id]&&(t.value=e.detail.seed_map[s.id])}}}));const kt=b.queuePrompt;b.queuePrompt=async function(e,{output:t,workflow:n}){n.seed_widgets={};for(let s in app.graph._nodes_by_id){let e=app.graph._nodes_by_id[s].widgets;if(e)for(let t in e)"seed_num"!=e[t].name&&"seed"!=e[t].name&&"noise_seed"!=e[t].name||"converted-widget"==e[t].type||(n.seed_widgets[s]=parseInt(t))}return await kt.call(b,e,{output:t,workflow:n})};const It=["easy imageSave","easy fullkSampler","easy kSampler","easy kSamplerTiled","easy kSamplerInpainting","easy kSamplerDownscaleUnet","easy kSamplerSDTurbo","easy detailerFix"];w.registerExtension({name:"Comfy.EasyUse.SaveImageExtraOutput",async beforeRegisterNodeDef(e,t,n){if(It.includes(t.name)){const t=e.prototype.onNodeCreated;e.prototype.onNodeCreated=function(){const e=t?t.apply(this,arguments):void 0,s=this.widgets.find((e=>"filename_prefix"===e.name||"save_prefix"===e.name));return s.serializeValue=()=>C(n,s.value),e}}else{const t=e.prototype.onNodeCreated;e.prototype.onNodeCreated=function(){const e=t?t.apply(this,arguments):void 0;return this.properties&&"Node name for S&R"in this.properties||this.addProperty("Node name for S&R",this.constructor.type,"string"),e}}}});const xt=["easy wildcards","easy positive","easy negative","easy stylesSelector","easy promptConcat","easy promptReplace"],Nt=["easy preSampling","easy preSamplingAdvanced","easy preSamplingNoiseIn","easy preSamplingCustom","easy preSamplingDynamicCFG","easy preSamplingSdTurbo","easy preSamplingLayerDiffusion"],Tt=["easy kSampler","easy kSamplerTiled","easy kSamplerInpainting","easy kSamplerDownscaleUnet","easy kSamplerSDTurbo"],Ot=["easy controlnetLoader","easy controlnetLoaderADV"],Dt=["easy instantIDApply","easy instantIDApplyADV"],Rt=["easy ipadapterApply","easy ipadapterApplyADV","easy ipadapterApplyFaceIDKolors","easy ipadapterStyleComposition"],Gt=["easy pipeIn","easy pipeOut","easy pipeEdit"],Mt=["easy XYPlot","easy XYPlotAdvanced"],Pt=["easy setNode"],Ft=["Reroute","RescaleCFG","LoraLoaderModelOnly","LoraLoader","FreeU","FreeU_v2",...Rt,...Pt],Ut={"easy seed":{from:{INT:["Reroute",...Nt,"easy fullkSampler"]}},"easy positive":{from:{STRING:["Reroute",...xt]}},"easy negative":{from:{STRING:["Reroute",...xt]}},"easy wildcards":{from:{STRING:["Reroute","easy showAnything",...xt]}},"easy stylesSelector":{from:{STRING:["Reroute","easy showAnything",...xt]}},"easy promptConcat":{from:{STRING:["Reroute","easy showAnything",...xt]}},"easy promptReplace":{from:{STRING:["Reroute","easy showAnything",...xt]}},"easy fullLoader":{from:{PIPE_LINE:["Reroute",...Nt,"easy fullkSampler",...Gt,...Pt],MODEL:Ft},to:{STRING:["Reroute",...xt]}},"easy a1111Loader":{from:{PIPE_LINE:["Reroute",...Nt,...Ot,...Dt,...Gt,...Pt],MODEL:Ft},to:{STRING:["Reroute",...xt]}},"easy comfyLoader":{from:{PIPE_LINE:["Reroute",...Nt,...Ot,...Dt,...Gt,...Pt],MODEL:Ft},to:{STRING:["Reroute",...xt]}},"easy hunyuanDiTLoader":{from:{PIPE_LINE:["Reroute",...Nt,...Ot,...Dt,...Gt,...Pt],MODEL:Ft},to:{STRING:["Reroute",...xt]}},"easy kolorsLoader":{from:{PIPE_LINE:["Reroute",...Nt,...Ot,...Dt,...Gt,...Pt],MODEL:Ft},to:{STRING:["Reroute",...xt]}},"easy pixArtLoader":{from:{PIPE_LINE:["Reroute",...Nt,...Ot,...Dt,...Gt,...Pt],MODEL:Ft},to:{STRING:["Reroute",...xt]}},"easy svdLoader":{from:{PIPE_LINE:["Reroute","easy preSampling","easy preSamplingAdvanced","easy preSamplingDynamicCFG",...Gt,...Pt],MODEL:Ft},to:{STRING:["Reroute",...xt]}},"easy zero123Loader":{from:{PIPE_LINE:["Reroute","easy preSampling","easy preSamplingAdvanced","easy preSamplingDynamicCFG",...Gt,...Pt],MODEL:Ft},to:{STRING:["Reroute",...xt]}},"easy sv3dLoader":{from:{PIPE_LINE:["Reroute","easy preSampling","easy preSamplingAdvanced","easy preSamplingDynamicCFG",...Gt,...Pt],MODEL:Ft},to:{STRING:["Reroute",...xt]}},"easy preSampling":{from:{PIPE_LINE:["Reroute",...Tt,...Gt,...Ot,...Mt,...Pt]}},"easy preSamplingAdvanced":{from:{PIPE_LINE:["Reroute",...Tt,...Gt,...Ot,...Mt,...Pt]}},"easy preSamplingDynamicCFG":{from:{PIPE_LINE:["Reroute",...Tt,...Gt,...Ot,...Mt,...Pt]}},"easy preSamplingCustom":{from:{PIPE_LINE:["Reroute",...Tt,...Gt,...Ot,...Mt,...Pt]}},"easy preSamplingLayerDiffusion":{from:{PIPE_LINE:["Reroute","easy kSamplerLayerDiffusion",...Tt,...Gt,...Ot,...Mt,...Pt]}},"easy preSamplingNoiseIn":{from:{PIPE_LINE:["Reroute",...Tt,...Gt,...Ot,...Mt,...Pt]}},"easy fullkSampler":{from:{PIPE_LINE:["Reroute",...Gt.reverse(),"easy preDetailerFix","easy preMaskDetailerFix",...Nt,...Pt]}},"easy kSampler":{from:{PIPE_LINE:["Reroute",...Gt.reverse(),"easy preDetailerFix","easy preMaskDetailerFix","easy hiresFix",...Nt,...Pt]}},"easy controlnetLoader":{from:{PIPE_LINE:["Reroute",...Nt,...Ot,...Dt,...Gt,...Pt]}},"easy controlnetLoaderADV":{from:{PIPE_LINE:["Reroute",...Nt,...Ot,...Dt,...Gt,...Pt]}},"easy instantIDApply":{from:{PIPE_LINE:["Reroute",...Nt,...Ot,...Dt,...Gt,...Pt],MODEL:Ft},to:{COMBO:["Reroute","easy promptLine"]}},"easy instantIDApplyADV":{from:{PIPE_LINE:["Reroute",...Nt,...Ot,...Dt,...Gt,...Pt],MODEL:Ft},to:{COMBO:["Reroute","easy promptLine"]}},"easy ipadapterApply":{to:{COMBO:["Reroute","easy promptLine"]}},"easy ipadapterApplyADV":{to:{STRING:["Reroute","easy sliderControl",...xt],COMBO:["Reroute","easy promptLine"]}},"easy ipadapterStyleComposition":{to:{COMBO:["Reroute","easy promptLine"]}},"easy preDetailerFix":{from:{PIPE_LINE:["Reroute","easy detailerFix",...Gt,...Pt]},to:{PIPE_LINE:["Reroute","easy ultralyticsDetectorPipe","easy samLoaderPipe","easy kSampler","easy fullkSampler"]}},"easy preMaskDetailerFix":{from:{PIPE_LINE:["Reroute","easy detailerFix",...Gt,...Pt]}},"easy samLoaderPipe":{from:{PIPE_LINE:["Reroute","easy preDetailerFix",...Gt,...Pt]}},"easy ultralyticsDetectorPipe":{from:{PIPE_LINE:["Reroute","easy preDetailerFix",...Gt,...Pt]}},"easy cascadeLoader":{from:{PIPE_LINE:["Reroute","easy fullCascadeKSampler","easy preSamplingCascade",...Ot,...Gt,...Pt],MODEL:Ft.filter((e=>!Rt.includes(e)))}},"easy fullCascadeKSampler":{from:{PIPE_LINE:["Reroute","easy preSampling","easy preSamplingAdvanced",...Gt,...Pt]}},"easy preSamplingCascade":{from:{PIPE_LINE:["Reroute","easy cascadeKSampler",...Gt,...Pt]}},"easy cascadeKSampler":{from:{PIPE_LINE:["Reroute","easy preSampling","easy preSamplingAdvanced",...Gt,...Pt]}}};w.registerExtension({name:"Comfy.EasyUse.Suggestions",async setup(e){LGraphCanvas.prototype.createDefaultNodeForSlot=function(e){e=e||{};var t,n=Object.assign({nodeFrom:null,slotFrom:null,nodeTo:null,slotTo:null,position:[],nodeType:null,posAdd:[0,0],posSizeFix:[0,0]},e),s=n.nodeFrom&&null!==n.slotFrom,o=!s&&n.nodeTo&&null!==n.slotTo;if(!s&&!o)return!1;if(!n.nodeType)return!1;var i=s?n.nodeFrom:n.nodeTo,a=s?n.slotFrom:n.slotTo,l=i.type,r=!1;switch(typeof a){case"string":r=s?i.findOutputSlot(a,!1):i.findInputSlot(a,!1),a=s?i.outputs[a]:i.inputs[a];break;case"object":r=s?i.findOutputSlot(a.name):i.findInputSlot(a.name);break;case"number":r=a,a=s?i.outputs[a]:i.inputs[a];break;default:return!1}var d=a.type==LiteGraph.EVENT?"_event_":a.type,u=s?LiteGraph.slot_types_default_out:LiteGraph.slot_types_default_in;if(u&&u[d]){a.link;let e=!1;const o=s?"from":"to";if(Ut[l]&&Ut[l][o]&&(null==(t=Ut[l][o][d])?void 0:t.length)>0){for(var c in Ut[l][o][d])if(n.nodeType==Ut[l][o][d][c]||"AUTO"==n.nodeType){e=Ut[l][o][d][c];break}}else if("object"==typeof u[d]||"array"==typeof u[d]){for(var c in u[d])if(n.nodeType==u[d][c]||"AUTO"==n.nodeType){e=u[d][c];break}}else n.nodeType!=u[d]&&"AUTO"!=n.nodeType||(e=u[d]);if(e){var p=!1;"object"==typeof e&&e.node&&(p=e,e=e.node);var h=LiteGraph.createNode(e);if(h){if(p){if(p.properties)for(var m in p.properties)h.addProperty(m,p.properties[m]);if(p.inputs)for(var m in h.inputs=[],p.inputs)h.addOutput(p.inputs[m][0],p.inputs[m][1]);if(p.outputs)for(var m in h.outputs=[],p.outputs)h.addOutput(p.outputs[m][0],p.outputs[m][1]);p.title&&(h.title=p.title),p.json&&h.configure(p.json)}return this.graph.add(h),h.pos=[n.position[0]+n.posAdd[0]+(n.posSizeFix[0]?n.posSizeFix[0]*h.size[0]:0),n.position[1]+n.posAdd[1]+(n.posSizeFix[1]?n.posSizeFix[1]*h.size[1]:0)],s?n.nodeFrom.connectByType(r,h,d):n.nodeTo.connectByTypeOutput(r,h,d),!0}}}return!1},LGraphCanvas.prototype.showConnectionMenu=function(e){e=e||{};var t,n=Object.assign({nodeFrom:null,slotFrom:null,nodeTo:null,slotTo:null,e:null},e),s=this,o=n.nodeFrom&&n.slotFrom,i=!o&&n.nodeTo&&n.slotTo;if(!o&&!i)return!1;var a=o?n.nodeFrom:n.nodeTo,l=o?n.slotFrom:n.slotTo,r=!1;switch(typeof l){case"string":r=o?a.findOutputSlot(l,!1):a.findInputSlot(l,!1),l=o?a.outputs[l]:a.inputs[l];break;case"object":r=o?a.findOutputSlot(l.name):a.findInputSlot(l.name);break;case"number":r=l,l=o?a.outputs[l]:a.inputs[l];break;default:return!1}var d=["Add Node",null];s.allow_searchbox&&(d.push("Search"),d.push(null));var u=l.type==LiteGraph.EVENT?"_event_":l.type,c=o?LiteGraph.slot_types_default_out:LiteGraph.slot_types_default_in,p=a.type;if(c&&c[u]){const e=o?"from":"to";if(Ut[p]&&Ut[p][e]&&(null==(t=Ut[p][e][u])?void 0:t.length)>0)for(var h in Ut[p][e][u])d.push(Ut[p][e][u][h]);else if("object"==typeof c[u]||"array"==typeof c[u])for(var h in c[u])d.push(c[u][h]);else d.push(c[u])}var m=new LiteGraph.ContextMenu(d,{event:n.e,title:(l&&""!=l.name?l.name+(u?" | ":""):"")+(l&&u?u:""),callback:function(e,t,i){switch(e){case"Add Node":LGraphCanvas.onMenuAdd(null,null,i,m,(function(e){o?n.nodeFrom.connectByType(r,e,u):n.nodeTo.connectByTypeOutput(r,e,u)}));break;case"Search":o?s.showSearchBox(i,{node_from:n.nodeFrom,slot_from:l,type_filter_in:u}):s.showSearchBox(i,{node_to:n.nodeTo,slot_from:l,type_filter_out:u});break;default:s.createDefaultNodeForSlot(Object.assign(n,{position:[n.e.canvasX,n.e.canvasY],nodeType:e}))}}});return!1}}}),w.registerExtension({name:"Comfy.EasyUse.TimeTaken",setup(){const e=new Map;let t=0;b.addEventListener("executing",(n=>{if(!I("EasyUse.Nodes.Runtime",null,!0))return;const s=(null==n?void 0:n.node)||(null==n?void 0:n.detail)||null,o=be(s);o&&(o.executionDuration="");const i=e.get(t);if(e.delete(t),t&&i){const e=Date.now()-i,n=be(t);n&&(n.executionDuration=`${(e/1e3).toFixed(2)}${Z("s")}`)}t=s,e.set(s,Date.now())}))},beforeRegisterNodeDef(e,t){const n=e.prototype.onDrawForeground;e.prototype.onDrawForeground=function(...e){const[t]=e;return function(e,t){if(!t)return;e.save(),e.fillStyle=LiteGraph.NODE_DEFAULT_BGCOLOR,function(e,t,n,s,o,i){e.beginPath(),e.moveTo(t+i,n),e.lineTo(t+s-i,n),e.arcTo(t+s,n,t+s,n+i,i),e.lineTo(t+s,n+o-i),e.arcTo(t+s,n+o,t+s-i,n+o,i),e.lineTo(t+i,n+o),e.arcTo(t,n+o,t,n+o-i,i),e.lineTo(t,n+i),e.arcTo(t,n,t+i,n,i),e.closePath()}(e,0,-LiteGraph.NODE_TITLE_HEIGHT-20,e.measureText(t).width+10,LiteGraph.NODE_TITLE_HEIGHT-10,4),e.fill(),function(e,t,n,s,o="#000",i=12,a="Inter"){e.font=`${i}px ${a}`,e.fillStyle=o,e.fillText(t,n,s)}(e,t,8,-LiteGraph.NODE_TITLE_HEIGHT-6,LiteGraph.NODE_TITLE_COLOR),e.restore()}(t,this.executionDuration||""),null==n?void 0:n.apply(this,e)}}});let Bt=null;w.registerExtension({name:"Comfy.EasyUse.HotKeys",setup(){if(void 0!==_){_("up,down,left,right",(function(e,t){var n,s,o,i,a,l,r,d,u,c,p,h,m,g,f;e.preventDefault();if(!I("EasyUse.Hotkeys.JumpNearestNodes",null,!0))return;const y=Le();if(0===y.length)return;const _=y[0];switch(t.key){case"up":case"left":let e=null;if(Ie(_)){const e=null==(n=_.widgets_values)?void 0:n[0],t=null==(s=_.graph)?void 0:s._nodes,o=null==t?void 0:t.find((t=>{var n;if(xe(t)){if((null==(n=t.widgets_values)?void 0:n[0])===e)return t}return null}));o&&Ee(o)}else if((null==(o=_.inputs)?void 0:o.length)>0){for(let t=0;t<_.inputs.length;t++)if(_.inputs[t].link){e=_.inputs[t].link;break}if(e){const t=null==(i=_.graph)?void 0:i.links;if(t[e]){const n=null==(a=t[e])?void 0:a.origin_id,s=null==(r=null==(l=_.graph)?void 0:l._nodes_by_id)?void 0:r[n];s&&Ee(s)}}}break;case"down":case"right":let t=null;if(xe(_)){const e=null==(d=_.widgets_values)?void 0:d[0],t=null==(u=_.graph)?void 0:u._nodes,n=null==t?void 0:t.find((t=>{var n;if(Ie(t)){if((null==(n=t.widgets_values)?void 0:n[0])===e)return t}return null}));n&&Ee(n)}else if((null==(c=_.outputs)?void 0:c.length)>0){for(let e=0;e<_.outputs.length;e++)if((null==(p=_.outputs[e].links)?void 0:p.length)>0&&_.outputs[e].links[0]){t=_.outputs[e].links[0];break}if(t){const e=null==(h=_.graph)?void 0:h.links;if(e[t]){const n=null==(m=e[t])?void 0:m.target_id,s=null==(f=null==(g=_.graph)?void 0:g._nodes_by_id)?void 0:f[n];s&&Ee(s)}}}}})),_("shift+up,shift+down,shift+left,shift+right",(function(e,t){e.preventDefault();if(!I("EasyUse.Hotkeys.AlignSelectedNodes",null,!0))return;const n=Le();if(n.length<=1)return;const s=n;switch(t.key){case"shift+up":LGraphCanvas.alignNodes(s,"top",s[0]);break;case"shift+down":LGraphCanvas.alignNodes(s,"bottom",s[0]);break;case"shift+left":LGraphCanvas.alignNodes(s,"left",s[0]);break;case"shift+right":LGraphCanvas.alignNodes(s,"right",s[0])}Bt||(Bt=Q()),Bt&&Bt.update()})),_("shift+g",(function(e,t){e.preventDefault();I("EasyUse.Hotkeys.AddGroup",null,!0)&&(Wt(),Bt||(Bt=Q()),Bt&&Bt.update())})),_("shift+r",(function(e,t){e.preventDefault();I("EasyUse.Hotkeys.cleanVRAMused",null,!0)&&q()}));const e=[];Array.from(Array(10).keys()).forEach((t=>e.push(`alt+${t}`))),_(e.join(","),(async function(e,t){e.preventDefault();if(!I("EasyUse.Hotkeys.NodesTemplate",null,!0))return;const n=t.key;let s=parseInt(n.split("+")[1]);const o=await b.getUserData("comfy.templates.json");let i=null;if(200==o.status)try{i=await o.json()}catch(l){$.error(Z("Get Node Templates File Failed"))}else localStorage["Comfy.NodeTemplates"]?i=JSON.parse(localStorage["Comfy.NodeTemplates"]):$.warn(Z("No Node Templates Found"));if(!i)return void $.warn(Z("No Node Templates Found"));s=0===s?9:s-1;const a=i[s];if(a)try{const e=(null==a?void 0:a.name)||"Group",t=(null==a?void 0:a.data)?JSON.parse(a.data):[];zt((async()=>{await A.registerFromWorkflow(t.groupNodes,{}),localStorage.litegrapheditor_clipboard=a.data,w.canvas.pasteFromClipboard(),t.groupNodes||Wt(e)}))}catch(l){$.error(l)}else $.warn(Z("Node template with {key} not set").replace("{key}",n))}));const t=async function(e){if(("b"===e.key||"m"==e.key)&&(e.metaKey||e.ctrlKey)){if(0===Le().length)return;Bt||(Bt=Q()),Bt&&Bt.update()}};window.addEventListener("keydown",t,!0)}}});const zt=async e=>{const t=localStorage.litegrapheditor_clipboard;await e(),localStorage.litegrapheditor_clipboard=t},Wt=e=>{const t=Le();if(0===t.length)return;const n=t;let s=new LiteGraph.LGraphGroup;s.title=e||"Group",((e,t=[],n=20)=>{var s,o,i,a,l,r,d,u,c,p;for(var h of(o=i=a=l=-1,r=d=u=c=-1,[e._nodes,t]))for(var m in h)r=(p=h[m]).pos[0],d=p.pos[1],u=p.pos[0]+p.size[0],c=p.pos[1]+p.size[1],"Reroute"!=p.type&&(d-=LiteGraph.NODE_TITLE_HEIGHT),(null==(s=p.flags)?void 0:s.collapsed)&&(c=d+LiteGraph.NODE_TITLE_HEIGHT,(null==p?void 0:p._collapsed_width)&&(u=r+Math.round(p._collapsed_width))),(-1==o||ra)&&(a=u),(-1==l||c>l)&&(l=c);i-=Math.round(1.4*e.font_size),e.pos=[o-n,i-n],e.size=[a-o+2*n,l-i+2*n]})(s,n),w.canvas.graph.add(s)};function jt(e,t,n,s){const o=[];return e.workflow.links.forEach((e=>{n&&e[1]===t&&!o.includes(e[3])&&o.push(e[3]),s&&e[3]===t&&!o.includes(e[1])&&o.push(e[1])})),o}async function Vt(e,t=!1){const n=structuredClone(await w.graphToPrompt()),s=[];if(n.workflow.nodes.forEach((e=>{s.push(e.id)})),n.workflow.links=n.workflow.links.filter((e=>s.includes(e[1])&&s.includes(e[3]))),t)for(;!w.graph._nodes_by_id[e].isChooser;)e=jt(n,e,!0,!1)[0];const o=function(e,t){const n=[],s=[t];for(;s.length>0;){const t=s.pop();n.push(t),s.push(...jt(e,t,!0,!1).filter((e=>!(n.includes(e)||s.includes(e)))))}s.push(...n.filter((e=>e!=t)));const o=[t];for(;s.length>0;){const t=s.pop();o.push(t),s.push(...jt(e,t,!1,!0).filter((e=>!(o.includes(e)||s.includes(e)))))}const i=[];return i.push(...n),i.push(...o.filter((e=>!i.includes(e)))),i}(n,e);n.workflow.nodes=n.workflow.nodes.filter((t=>(t.id===e&&t.inputs.forEach((e=>{e.link=null})),o.includes(t.id)))),n.workflow.links=n.workflow.links.filter((e=>o.includes(e[1])&&o.includes(e[3])));const i={};for(const[r,d]of Object.entries(n.output))o.includes(parseInt(r))&&(i[r]=d);const a={};for(const[r,d]of Object.entries(i[e.toString()].inputs))Array.isArray(d)||(a[r]=d);i[e.toString()].inputs=a,n.output=i;const l=w.graphToPrompt;w.graphToPrompt=()=>(w.graphToPrompt=l,n),w.queuePrompt(0)}const Yt=new class{constructor(){this.current_node_id=void 0,this.class_of_current_node=null,this.current_node_is_chooser=!1}update(){var e,t;return w.runningNodeId!=this.current_node_id&&(this.current_node_id=w.runningNodeId,this.current_node_id?(this.class_of_current_node=null==(t=null==(e=w.graph)?void 0:e._nodes_by_id[w.runningNodeId.toString()])?void 0:t.comfyClass,this.current_node_is_chooser="easy imageChooser"===this.class_of_current_node):(this.class_of_current_node=void 0,this.current_node_is_chooser=!1),!0)}},Ht=class e{constructor(){}static idle(){return!w.runningNodeId}static paused(){return!0}static paused_here(t){return e.here(t)}static running(){return!e.idle()}static here(e){return w.runningNodeId==e}static state(){return"Paused"}};f(Ht,"cancelling",!1);let Xt=Ht;function Zt(e,t){const n=new FormData;n.append("message",t),n.append("id",e),b.fetchApi("/easyuse/image_chooser_message",{method:"POST",body:n})}function Kt(){Zt(-1,"__cancel__"),Xt.cancelling=!0,b.interrupt(),Xt.cancelling=!1}var Jt=0;function $t(){Jt+=1}const qt=["easy kSampler","easy kSamplerTiled","easy fullkSampler"];function Qt(e){const t=w.graph._nodes_by_id[e.detail.id];if(t){t.selected=new Set,t.anti_selected=new Set;const n=function(e,t){var n;return e.imgs=[],t.forEach((t=>{const n=new Image;e.imgs.push(n),n.onload=()=>{w.graph.setDirtyCanvas(!0)},n.src=`/view?filename=${encodeURIComponent(t.filename)}&type=temp&subfolder=${w.getPreviewFormatParam()}`})),null==(n=e.setSizeForImage)||n.call(e),e.imgs}(t,e.detail.urls);return{node:t,image:n,isKSampler:qt.includes(t.type)}}}function en(e,t,n){var s;if(e.imageRects)s=e.imageRects[t];else{const t=e.imagey;s=[1,t+1,e.size[0]-2,e.size[1]-t-2]}n.strokeRect(s[0]+1,s[1]+1,s[2]-2,s[3]-2)}class tn extends S{constructor(){super(),this.node=null,this.select_index=[],this.dialog_div=null}show(e,t){this.select_index=[],this.node=t;const n=e.map(((e,n)=>{const s=L("img",{src:e.src,onclick:e=>{this.select_index.includes(n)?(this.select_index=this.select_index.filter((e=>e!==n)),s.classList.remove("selected")):(this.select_index.push(n),s.classList.add("selected")),t.selected.has(n)?t.selected.delete(n):t.selected.add(n)}});return s}));super.show(L("div.comfyui-easyuse-chooser-dialog",[L("h5.comfyui-easyuse-chooser-dialog-title",Z("Choose images to continue")),L("div.comfyui-easyuse-chooser-dialog-images",n)]))}createButtons(){const e=super.createButtons();return e[0].onclick=e=>{Xt.running()&&Kt(),super.close()},e.unshift(L("button",{type:"button",textContent:Z("Choose Selected Images"),onclick:e=>{Zt(this.node.id,[...this.node.selected,-1,...this.node.anti_selected]),Xt.idle()&&($t(),Vt(this.node.id).then((()=>{Zt(this.node.id,[...this.node.selected,-1,...this.node.anti_selected])}))),super.close()}})),e}}function nn(){const e=w.graph._nodes_by_id[this.node_id];if(e){const t=[...e.selected];(null==t?void 0:t.length)>0&&e.setProperty("values",t),Zt(e.id,[...e.selected,-1,...e.anti_selected]),Xt.idle()&&($t(),Vt(e.id).then((()=>{Zt(e.id,[...e.selected,-1,...e.anti_selected])})))}}function sn(){Xt.running()&&Kt()}function on(e){Object.defineProperty(e,"clicked",{get:function(){return this._clicked},set:function(e){this._clicked=e&&""!=this.name}})}function an(e){e.options||(e.options={}),e.options.serialize=!1}w.registerExtension({name:"Comfy.EasyUse.imageChooser",init(){window.addEventListener("beforeunload",Kt,!0)},setup(e){const t=LGraphCanvas.prototype.draw;LGraphCanvas.prototype.draw=function(){Yt.update()&&e.graph._nodes.forEach((e=>{e.update&&e.update()})),t.apply(this,arguments)},b.addEventListener("easyuse-image-choose",(function(e){const{node:t,image:n,isKSampler:s}=Qt(e);if(s){(new tn).show(n,t)}}));const n=b.interrupt;b.interrupt=function(){Xt.cancelling||Kt(),n.apply(this,arguments)},b.addEventListener("execution_start",(function(){(Jt>0?(Jt-=1,0):(Zt(-1,"__start__"),1))&&e.graph._nodes.forEach((e=>{(e.selected||e.anti_selected)&&(e.selected.clear(),e.anti_selected.clear(),e.update())}))}))},async nodeCreated(e,t){if("easy imageChooser"==e.comfyClass){e.setProperty("values",[]),void 0===(null==e?void 0:e.imageIndex)&&Object.defineProperty(e,"imageIndex",{get:function(){return null},set:function(t){e.overIndex=t}}),void 0===(null==e?void 0:e.imagey)&&Object.defineProperty(e,"imagey",{get:function(){return null},set:function(t){return e.widgets[e.widgets.length-1].last_y+LiteGraph.NODE_WIDGET_HEIGHT}});const t=e.onMouseDown;e.onMouseDown=function(n,s,o){if(n.isPrimary){const t=function(e,t){var n,s;if((null==(n=e.imgs)?void 0:n.length)>1)for(var o=0;o0&&n0&&se.imagey)return 0;return-1}(e,s);t>=0&&this.imageClicked(t)}return t&&t.apply(this,arguments)},e.send_button_widget=e.addWidget("button","","",nn),e.cancel_button_widget=e.addWidget("button","","",sn),on(e.cancel_button_widget),on(e.send_button_widget),an(e.cancel_button_widget),an(e.send_button_widget)}},beforeRegisterNodeDef(e,t,n){if("easy imageChooser"==(null==t?void 0:t.name)){const t=e.prototype.onDrawBackground;e.prototype.onDrawBackground=function(e){t.apply(this,arguments),function(e,t){var n,s;if(e.imgs){if(e.imageRects)for(let n=0;n{en(e,n,t)})),t.strokeStyle="#F88",null==(s=null==e?void 0:e.anti_selected)||s.forEach((n=>{en(e,n,t)}))}}(this,e)},e.prototype.imageClicked=function(t){"easy imageChooser"===(null==e?void 0:e.comfyClass)&&(this.selected.has(t)?this.selected.delete(t):this.selected.add(t),this.update())};const n=e.prototype.update;e.prototype.update=function(){var e;if(n&&n.apply(this,arguments),this.send_button_widget){this.send_button_widget.node_id=this.id;const t=(this.selected?this.selected.size:0)+(this.anti_selected?this.anti_selected.size:0),n=(null==(e=this.imgs)?void 0:e.length)||0;Xt.paused_here(this.id)&&t>0?this.send_button_widget.name=t>1?"Progress selected ("+t+"/"+n+")":"Progress selected image":this.send_button_widget.name=t>0?t>1?"Progress selected ("+t+"/"+n+")":"Progress selected image as restart":""}if(this.cancel_button_widget){const e=Xt.running();this.cancel_button_widget.name=e?"Cancel current run":""}this.setDirtyCanvas(!0,!0)}}}}),Number.prototype.div=function(e){return function(e,t){let n,s,o=0,i=0,a="string"==typeof e?e:e.toString(),l="string"==typeof t?t:t.toString();try{o=a.toString().split(".")[1].length}catch(r){}try{i=l.toString().split(".")[1].length}catch(r){}return n=Number(a.toString().replace(".","")),s=Number(l.toString().replace(".","")),n/s*Math.pow(10,i-o)}(this,e)};let ln=[],rn=0;const dn={sd3:6.5,"sd3-turbo":4};class un extends S{constructor(){super(),this.lists=[],this.dialog_div=null,this.user_div=null}addItem(e,t){return L("div.easyuse-account-dialog-item",[L("input",{type:"text",placeholder:"Enter name",oninput:e=>{const t=Array.prototype.indexOf.call(this.dialog_div.querySelectorAll(".easyuse-account-dialog-item"),e.target.parentNode);ln[t].name=e.target.value},value:ln[e].name}),L("input.key",{type:"text",oninput:e=>{const t=Array.prototype.indexOf.call(this.dialog_div.querySelectorAll(".easyuse-account-dialog-item"),e.target.parentNode);ln[t].key=e.target.value},placeholder:"Enter APIKEY",value:ln[e].key}),L("button.choose",{textContent:Z("Choose"),onclick:async e=>{var n,s,o;const i=Array.prototype.indexOf.call(this.dialog_div.querySelectorAll(".easyuse-account-dialog-item"),e.target.parentNode);let a=ln[i].name,l=ln[i].key;if(!a)return void $.error(Z("Please enter the account name"));if(!l)return void $.error(Z("Please enter the APIKEY"));let r=!0;for(let t=0;t{(new un).show(t)}},[L("div.user",[L("div.avatar",i?[L("img",{src:i})]:"😀"),L("div.info",[L("h5.name",a),L("h6.remark","Credits: "+l)])]),L("div.edit",{textContent:Z("Edit")})])),$.success(Z("Save Succeed"))}else $.success(Z("Save Succeed"));this.close()}else $.error(Z("Save Failed"))}}),L("button.delete",{textContent:Z("Delete"),onclick:e=>{const t=Array.prototype.indexOf.call(this.dialog_div.querySelectorAll(".easyuse-account-dialog-item"),e.target.parentNode);ln.length<=1?$.error(Z("At least one account is required")):(ln.splice(t,1),this.dialog_div.removeChild(e.target.parentNode))}})])}show(e){ln.forEach(((t,n)=>{this.lists.push(this.addItem(n,e))})),this.dialog_div=L("div.easyuse-account-dialog",this.lists),super.show(L("div.easyuse-account-dialog-main",[L("div",[L("a",{href:"https://platform.stability.ai/account/keys",target:"_blank",textContent:Z("Getting Your APIKEY")})]),this.dialog_div]))}createButtons(){const e=super.createButtons();return e.unshift(L("button",{type:"button",textContent:Z("Save Account Info"),onclick:e=>{let t=!0;for(let n=0;n{200==e.status?$.success(Z("Save Succeed")):$.error(Z("Save Failed"))}))}else $.error(Z("APIKEY is not Empty"))}})),e.unshift(L("button",{type:"button",textContent:Z("Add Account"),onclick:e=>{const t="Account "+ln.length.toString();ln.push({name:t,key:""});const n=this.addItem(ln.length-1);this.lists.push(n),this.dialog_div.appendChild(n)}})),e}}w.registerExtension({name:"Comfy.EasyUse.API.SD3",async beforeRegisterNodeDef(e,t,n){if("easy stableDiffusion3API"==t.name){const t=e.prototype.onNodeCreated;e.prototype.onNodeCreated=async function(){var e,n,s;t&&(null==t||t.apply(this,arguments));const o=this.widgets.find((e=>["seed_num","seed"].includes(e.name))),i=this.widgets.find((e=>["control_before_generate","control_after_generate"].includes(e.name)));let a=this.widgets.find((e=>"model"==e.name));a.callback=e=>{l.value="-"+dn[e]};const l=this.addWidget("text","cost_credit","0",(e=>{}),{serialize:!1});l.disabled=!0,setTimeout((e=>{"control_before_generate"==i.name&&0===o.value&&(o.value=Math.floor(4294967294*Math.random())),l.value="-"+dn[a.value]}),100);let r=L("div.easyuse-account-user",[Z("Loading UserInfo...")]);this.addDOMWidget("account","btn",L("div.easyuse-account",r)),b.addEventListener("stable-diffusion-api-generate-succeed",(async({detail:e})=>{var t;let n=r.querySelectorAll(".remark");if(n&&n[0]){const t=(null==e?void 0:e.model)?dn[e.model]:0;if(t){let e=function(e,t){let n,s,o,i,a,l;a="string"==typeof e?e:e.toString(),l="string"==typeof t?t:t.toString();try{n=a.split(".")[1].length}catch(r){n=0}try{s=l.split(".")[1].length}catch(r){s=0}return o=Math.pow(10,Math.max(n,s)),i=n>=s?n:s,((e*o-t*o)/o).toFixed(i)}(parseFloat(n[0].innerText.replace(/Credits: /g,"")),t);e>0&&(n[0].innerText="Credits: "+e.toString())}}await J(1e4);const s=await b.fetchApi("/easyuse/stability/balance");if(200==s.status){const e=await s.json();if(null==e?void 0:e.balance){const s=(null==(t=e.balance)?void 0:t.credits)||0;n&&n[0]&&(n[0].innerText="Credits: "+s)}}}));const d=await b.fetchApi("/easyuse/stability/api_keys");if(200==d.status){let t=await d.json();if(ln=t.keys,rn=t.current,ln.length>0&&void 0!==rn){const t=ln[rn].key,o=ln[rn].name;if(t){const t=await b.fetchApi("/easyuse/stability/user_info");if(200==t.status){const o=await t.json();if((null==o?void 0:o.account)&&(null==o?void 0:o.balance)){const t=(null==(e=o.account)?void 0:e.profile_picture)||null,i=(null==(n=o.account)?void 0:n.email)||null,a=(null==(s=o.balance)?void 0:s.credits)||0;r.replaceChildren(L("div.easyuse-account-user-info",{onclick:e=>{(new un).show(r)}},[L("div.user",[L("div.avatar",t?[L("img",{src:t})]:"😀"),L("div.info",[L("h5.name",i),L("h6.remark","Credits: "+a)])]),L("div.edit",{textContent:Z("Edit")})]))}}}else r.replaceChildren(L("div.easyuse-account-user-info",{onclick:e=>{(new un).show(r)}},[L("div.user",[L("div.avatar","😀"),L("div.info",[L("h5.name",o),L("h6.remark",Z("Click to set the APIKEY first"))])]),L("div.edit",{textContent:Z("Edit")})]))}}}}}});let cn=null;function pn(){cn&&(cn.removeEventListeners(),cn.dropdown.remove(),cn=null)}function hn(e,t,n,s=!1){pn(),new mn(e,t,n,s)}class mn{constructor(e,t,n,s=!1){this.dropdown=document.createElement("ul"),this.dropdown.setAttribute("role","listbox"),this.dropdown.classList.add("easy-dropdown"),this.selectedIndex=-1,this.inputEl=e,this.suggestions=t,this.onSelect=n,this.isDict=s,this.focusedDropdown=this.dropdown,this.buildDropdown(),this.onKeyDownBound=this.onKeyDown.bind(this),this.onWheelBound=this.onWheel.bind(this),this.onClickBound=this.onClick.bind(this),this.addEventListeners()}buildDropdown(){this.isDict?this.buildNestedDropdown(this.suggestions,this.dropdown):this.suggestions.forEach(((e,t)=>{this.addListItem(e,t,this.dropdown)}));const e=this.inputEl.getBoundingClientRect();this.dropdown.style.top=e.top+e.height-10+"px",this.dropdown.style.left=e.left+"px",document.body.appendChild(this.dropdown),cn=this}buildNestedDropdown(e,t){let n=0;Object.keys(e).forEach((s=>{const o=e[s];if("object"==typeof o&&null!==o){const e=document.createElement("ul");e.setAttribute("role","listbox"),e.classList.add("easy-nested-dropdown");const i=document.createElement("li");i.classList.add("folder"),i.textContent=s,i.appendChild(e),i.addEventListener("mouseover",this.onMouseOver.bind(this,n,t)),t.appendChild(i),this.buildNestedDropdown(o,e),n+=1}else{const e=document.createElement("li");e.classList.add("item"),e.setAttribute("role","option"),e.textContent=s,e.addEventListener("mouseover",this.onMouseOver.bind(this,n,t)),e.addEventListener("mousedown",this.onMouseDown.bind(this,s)),t.appendChild(e),n+=1}}))}addListItem(e,t,n){const s=document.createElement("li");s.setAttribute("role","option"),s.textContent=e,s.addEventListener("mouseover",this.onMouseOver.bind(this,t)),s.addEventListener("mousedown",this.onMouseDown.bind(this,e)),n.appendChild(s)}addEventListeners(){document.addEventListener("keydown",this.onKeyDownBound),this.dropdown.addEventListener("wheel",this.onWheelBound),document.addEventListener("click",this.onClickBound)}removeEventListeners(){document.removeEventListener("keydown",this.onKeyDownBound),this.dropdown.removeEventListener("wheel",this.onWheelBound),document.removeEventListener("click",this.onClickBound)}onMouseOver(e,t){t&&(this.focusedDropdown=t),this.selectedIndex=e,this.updateSelection()}onMouseOut(){this.selectedIndex=-1,this.updateSelection()}onMouseDown(e,t){t.preventDefault(),this.onSelect(e),this.dropdown.remove(),this.removeEventListeners()}onKeyDown(e){const t=Array.from(this.focusedDropdown.children),n=t[this.selectedIndex];if(cn)if(38===e.keyCode)e.preventDefault(),this.selectedIndex=Math.max(0,this.selectedIndex-1),this.updateSelection();else if(40===e.keyCode)e.preventDefault(),this.selectedIndex=Math.min(t.length-1,this.selectedIndex+1),this.updateSelection();else if(39===e.keyCode){if(e.preventDefault(),n&&n.classList.contains("folder")){const e=n.querySelector(".easy-nested-dropdown");e&&(this.focusedDropdown=e,this.selectedIndex=0,this.updateSelection())}}else if(37===e.keyCode&&this.focusedDropdown!==this.dropdown){const e=this.focusedDropdown.closest(".easy-dropdown, .easy-nested-dropdown").parentNode.closest(".easy-dropdown, .easy-nested-dropdown");e&&(this.focusedDropdown=e,this.selectedIndex=Array.from(e.children).indexOf(this.focusedDropdown.parentNode),this.updateSelection())}else if((13===e.keyCode||9===e.keyCode)&&this.selectedIndex>=0){e.preventDefault(),n.classList.contains("item")&&(this.onSelect(t[this.selectedIndex].textContent),this.dropdown.remove(),this.removeEventListeners());const s=n.querySelector(".easy-nested-dropdown");s&&(this.focusedDropdown=s,this.selectedIndex=0,this.updateSelection())}else 27===e.keyCode&&(this.dropdown.remove(),this.removeEventListeners())}onWheel(e){const t=parseInt(this.dropdown.style.top);localStorage.getItem("Comfy.Settings.Comfy.InvertMenuScrolling")?this.dropdown.style.top=t+(e.deltaY<0?10:-10)+"px":this.dropdown.style.top=t+(e.deltaY<0?-10:10)+"px"}onClick(e){this.dropdown.contains(e.target)||e.target===this.inputEl||(this.dropdown.remove(),this.removeEventListeners())}updateSelection(){Array.from(this.focusedDropdown.children).forEach(((e,t)=>{t===this.selectedIndex?e.classList.add("selected"):e.classList.remove("selected")}))}}function gn(e){const t=e.min||0,n=e.max||0,s=e.step||1;if(0===s)return[];const o=[];let i=t;for(;i<=n;){if(Number.isInteger(s))o.push(Math.round(i)+"; ");else{let e=i.toFixed(3);-0==e&&(e="0.000"),/\.\d{3}$/.test(e)||(e+="0"),o.push(e+"; ")}i+=s}return n>=0&&t>=0?o:o.reverse()}let fn={},yn={};function _n(e,t){String(e.id);const n=t.name,s=t.value.replace(/^(loader|preSampling):\s/,"");yn[n]?yn[n]!=fn[s]&&(yn[n]=fn[s]):yn={...yn,[n]:fn[s]}}w.registerExtension({name:"Comfy.EasyUse.XYPlot",async beforeRegisterNodeDef(e,t,n){if("easy XYPlot"===t.name){fn=t.input.hidden.plot_dict[0];for(const e in fn){const t=fn[e];if(Array.isArray(t)){let n=[];for(const e of t)n.push(e+"; ");fn[e]=n}else fn[e]="object"==typeof t?"seed"==e?t+"; ":gn(t):t+"; "}fn.None=[],fn["---------------------"]=[]}},nodeCreated(e){"easy XYPlot"===e.comfyClass&&(function(e){if(e.widgets)for(const t of e.widgets)if("x_axis"===t.name||"y_axis"===t.name){let n=t.value;Object.defineProperty(t,"value",{get:()=>n,set(s){s!==n&&(n=s,_n(e,t))}})}}(e),function(e){if(e.widgets){const t=e.widgets.filter((e=>"customtext"===e.type&&!1!==e.dynamicPrompts||e.dynamicPrompts));for(const e of t){let t=function(e,t,s,o){return e&&(t[s]=e),t.map((e=>n(e,o))).filter((e=>""!==e)).join("")},n=function(e,t){if(e=s(e),o(e,t))return e+"; ";let n=i(e,t);return 1===n.length||2===n.length?n[0]:o(a(e),t)?a(e)+"; ":""},s=function(e){return e.replace(/(\n|;| )/g,"")},o=function(e,t){return t.includes(e+"; ")},i=function(e,t){return t.filter((t=>t.toLowerCase().includes(e.toLowerCase())))},a=function(e){return Number(e)?Number(e).toFixed(3):["0","0.","0.0","0.00","00"].includes(e)?"0.000":e};const l=function(){const n=e.name[0]+"_axis";let s=(null==yn?void 0:yn[n])||[];if(0===s.length)return;const o=e.inputEl.value,i=e.inputEl.selectionStart;let a=o.split("; ");const l=o.substring(0,i).split("; ").length-1,r=a[l].replace(/\n/g,"").toLowerCase(),d=s.filter((e=>e.toLowerCase().includes(r))).map((e=>e.replace(/; /g,"")));if(d.length>0)hn(e.inputEl,d,(n=>{const o=t(n,a,l,s);e.inputEl.value=o}));else{pn();const n=t(null,a,l,s);e.inputEl.value=n}};e.inputEl.removeEventListener("input",l),e.inputEl.addEventListener("input",l),e.inputEl.removeEventListener("mouseup",l),e.inputEl.addEventListener("mouseup",l)}}}(e))}});export{Z as $,U as N,b as a,w as b,_e as c,I as d,q as e,B as f,ye as g,x as h,Ce as j,X as l,J as s,$ as t,Q as u}; diff --git a/web_version/v2/easyuse.js b/web_version/v2/easyuse.js index fa86335..25bbd63 100644 --- a/web_version/v2/easyuse.js +++ b/web_version/v2/easyuse.js @@ -1,2 +1,2 @@ !function(){"use strict";try{if("undefined"!=typeof document){var e=document.createElement("style");e.appendChild(document.createTextNode('@charset "UTF-8";.easyuse-model-info{color:#fff;max-width:90vw;font-family:var(--font-family)}.easyuse-model-content{display:flex;flex-direction:column;overflow:hidden}.easyuse-model-header{margin:0 0 15px}.easyuse-model-header-remark{display:flex;align-items:center;margin-top:5px}.easyuse-model-info h2{text-align:left;margin:0}.easyuse-model-info h5{text-align:left;margin:0 15px 0 0;font-weight:400;color:var(--descrip-text)}.easyuse-model-info p{margin:5px 0}.easyuse-model-info a{color:var(--theme-color-light)}.easyuse-model-info a:hover{text-decoration:underline}.easyuse-model-tags-list{display:flex;flex-wrap:wrap;list-style:none;gap:10px;max-height:200px;overflow:auto;margin:10px 0;padding:0}.easyuse-model-tag{background-color:var(--comfy-input-bg);border:2px solid var(--border-color);color:var(--input-text);display:flex;align-items:center;gap:5px;border-radius:5px;padding:2px 5px;cursor:pointer}.easyuse-model-tag--selected span:before{content:"✅";position:absolute;background-color:var(--theme-color-light);left:0;top:0;right:0;bottom:0;text-align:center}.easyuse-model-tag:hover{border:2px solid var(--theme-color-light)}.easyuse-model-tag p{margin:0}.easyuse-model-tag span{text-align:center;border-radius:5px;background-color:var(--theme-color-light);padding:2px;position:relative;min-width:20px;overflow:hidden;color:#fff}.easyuse-model-metadata .comfy-modal-content{max-width:100%}.easyuse-model-metadata label{margin-right:1ch;color:#ccc}.easyuse-model-metadata span{color:var(--theme-color-light)}.easyuse-preview{max-width:660px;margin-right:15px;position:relative}.easyuse-preview-group{position:relative;overflow:hidden;border-radius:.5rem;width:660px}.easyuse-preview-list{display:flex;flex-wrap:nowrap;width:100%;transition:all .5s ease-in-out}.easyuse-preview-list.no-transition{transition:none}.easyuse-preview-slide{display:flex;flex-basis:calc(50% - 5px);flex-grow:0;flex-shrink:0;position:relative;justify-content:center;align-items:center;padding-right:5px;padding-left:0}.easyuse-preview-slide:nth-child(2n){padding-left:5px;padding-right:0}.easyuse-preview-slide-content{position:relative;min-height:150px;width:100%}.easyuse-preview-slide-content .save{position:absolute;right:6px;z-index:12;bottom:6px;display:flex;align-items:center;height:26px;padding:0 9px;color:var(--input-text);font-size:12px;line-height:26px;background:#00000080;border-radius:13px;cursor:pointer;min-width:80px;text-align:center}.easyuse-preview-slide-content .save:hover{filter:brightness(120%);will-change:auto}.easyuse-preview-slide-content img{border-radius:14px;object-position:center center;max-width:100%;max-height:700px;border-style:none;vertical-align:middle}.easyuse-preview button{position:absolute;z-index:10;top:50%;display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:15px;border:1px solid rgba(66,63,78,.15);background-color:#423f4e80;color:#fffc;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transform:translateY(-50%)}.easyuse-preview button.left{left:10px}.easyuse-preview button.right{right:10px}.easyuse-model-detail{margin-top:16px;overflow:hidden;border:1px solid var(--border-color);border-radius:8px;width:300px}.easyuse-model-detail-head{height:40px;padding:0 10px;font-weight:500;font-size:14px;font-style:normal;line-height:40px}.easyuse-model-detail-body{box-sizing:border-box;font-size:12px}.easyuse-model-detail-item{display:flex;justify-content:flex-start;border-top:1px solid var(--border-color)}.easyuse-model-detail-item-label{flex-shrink:0;width:88px;padding-top:5px;padding-bottom:5px;padding-left:10px;border-right:1px solid var(--border-color);color:var(--input-text);font-weight:400}.easyuse-model-detail-item-value{display:flex;flex-wrap:wrap;padding:5px 10px;color:var(--input-text)}.easyuse-model-detail-textarea{border-top:1px solid var(--border-color);padding:10px;height:100px;overflow-y:auto;font-size:12px}.easyuse-model-detail-textarea textarea{width:100%;height:100%;border:0;background-color:transparent;color:var(--input-text)}.easyuse-model-detail-textarea textarea::placeholder{color:var(--descrip-text)}.easyuse-model-detail-textarea.empty{display:flex;justify-content:center;align-items:center;color:var(--descrip-text)}.easyuse-model-notes{background-color:#00000040;padding:5px;margin-top:5px}.easyuse-model-notes:empty{display:none}.easyuse-account-user{font-size:10px;color:var(--descrip-text);text-align:center}.easyuse-account-user-info{display:flex;justify-content:space-between;align-items:center;padding-bottom:10px;cursor:pointer}.easyuse-account-user-info .user{display:flex;align-items:center}.easyuse-account-user-info .edit{padding:5px 10px;background:var(--comfy-menu-bg);border-radius:4px}.easyuse-account-user-info:hover{filter:brightness(110%)}.easyuse-account-user-info h5{margin:0;font-size:10px;text-align:left}.easyuse-account-user-info h6{margin:0;font-size:8px;text-align:left;font-weight:300}.easyuse-account-user-info .remark{margin-top:4px}.easyuse-account-user-info .avatar{width:36px;height:36px;background:var(--comfy-input-bg);border-radius:50%;margin-right:5px;display:flex;justify-content:center;align-items:center;font-size:16px;overflow:hidden}.easyuse-account-user-info .avatar img{width:100%;height:100%}.easyuse-account-dialog{width:600px}.easyuse-account-dialog-main a,.easyuse-account-dialog-main a:visited{font-weight:400;color:var(--theme-color-light)}.easyuse-account-dialog-item{display:flex;justify-content:flex-start;align-items:center;padding:10px 0;border-bottom:1px solid var(--border-color)}.easyuse-account-dialog-item input{padding:5px;margin-right:5px}.easyuse-account-dialog-item input.key{flex:1}.easyuse-account-dialog-item button{cursor:pointer;margin-left:5px!important;padding:5px!important;font-size:16px!important}.easyuse-account-dialog-item button:hover{filter:brightness(120%)}.easyuse-account-dialog-item button.choose{background:var(--theme-color)}.easyuse-account-dialog-item button.delete{background:var(--error-color)}.easy-dropdown,.easy-nested-dropdown{position:relative;box-sizing:border-box;background-color:#171717;box-shadow:0 4px 4px #ffffff40;padding:0;margin:0;list-style:none;z-index:1000;overflow:visible;max-height:fit-content;max-width:fit-content}.easy-dropdown{position:absolute;border-radius:0}.easy-dropdown li.item,.easy-nested-dropdown li.item{font-weight:400;min-width:max-content}.easy-dropdown li.folder,.easy-nested-dropdown li.folder{cursor:default;position:relative;border-right:3px solid cyan}.easy-dropdown li.folder:after,.easy-nested-dropdown li.folder:after{content:">";position:absolute;right:2px;font-weight:400}.easy-dropdown li,.easy-nested-dropdown li{padding:4px 10px;cursor:pointer;font-family:system-ui;font-size:.7rem;position:relative}.easy-nested-dropdown{position:absolute;top:0;left:100%;margin:0;border:none;display:none}.easy-dropdown li.selected>.easy-nested-dropdown,.easy-nested-dropdown li.selected>.easy-nested-dropdown{display:block;border:none}.easy-dropdown li.selected,.easy-nested-dropdown li.selected{background-color:#e5e5e5;border:none}:root{--theme-color:var(--primary-bg);--theme-color-light: var(--primary-hover-bg);--success-color: #52c41a;--error-color: #ff4d4f;--warning-color: #faad14;--font-family: Inter, -apple-system, BlinkMacSystemFont, Helvetica Neue, sans-serif;--p-inputtext-background: var(--p-form-field-background);--p-inputtext-disabled-background: var(--p-form-field-disabled-background);--p-inputtext-filled-background: var(--p-form-field-filled-background);--p-inputtext-filled-focus-background: var(--p-form-field-filled-focus-background);--p-inputtext-border-color: var(--p-form-field-border-color);--p-inputtext-hover-border-color: var(--p-form-field-hover-border-color);--p-inputtext-focus-border-color: var(--p-form-field-focus-border-color);--p-inputtext-invalid-border-color: var(--p-form-field-invalid-border-color);--p-inputtext-color: var(--p-form-field-color);--p-inputtext-disabled-color: var(--p-form-field-disabled-color);--p-inputtext-placeholder-color: var(--p-form-field-placeholder-color);--p-inputtext-shadow: var(--p-form-field-shadow);--p-inputtext-padding-x: var(--p-form-field-padding-x);--p-inputtext-padding-y: var(--p-form-field-padding-y);--p-inputtext-border-radius: var(--p-form-field-border-radius);--p-inputtext-focus-ring-width: var(--p-form-field-focus-ring-width);--p-inputtext-focus-ring-style: var(--p-form-field-focus-ring-style);--p-inputtext-focus-ring-color: var(--p-form-field-focus-ring-color);--p-inputtext-focus-ring-offset: var(--p-form-field-focus-ring-offset);--p-inputtext-focus-ring-shadow: var(--p-form-field-focus-ring-shadow);--p-inputtext-transition-duration: var(--p-form-field-transition-duration);--p-inputtext-sm-font-size: .875rem;--p-inputtext-sm-padding-x: .625rem;--p-inputtext-sm-padding-y: .375rem;--p-inputtext-lg-font-size: 1.125rem;--p-inputtext-lg-padding-x: .875rem;--p-inputtext-lg-padding-y: .625rem;--p-tooltip-max-width: 12.5rem;--p-tooltip-gutter: .25rem;--p-tooltip-shadow: var(--p-overlay-popover-shadow);--p-tooltip-padding: .5rem .75rem;--p-tooltip-border-radius: var(--p-overlay-popover-border-radius);--p-tooltip-background: var(--p-surface-700);--p-tooltip-color: var(--p-surface-0)}.comfyui-easyuse-theme,.comfyui-easyuse-primary{color:var(--theme-color-light)}.comfyui-easyuse-theme.point:hover,.comfyui-easyuse-primary.point:hover{opacity:.8}.comfyui-easyuse-success{color:var(--success-color)}.comfyui-easyuse-success.point:hover{opacity:.8}.comfyui-easyuse-error{color:var(--error-color)}.comfyui-easyuse-error.point:hover{opacity:.8}.comfyui-easyuse-warning,.comfyui-easyuse--warn{color:var(--warning-color)}.comfyui-easyuse-warning.point:hover,.comfyui-easyuse--warn.point:hover{opacity:.8}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.grid{display:grid}.gap-0\\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-10{gap:2.5rem}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-2\\.5{gap:.625rem}.gap-20{gap:5rem}.gap-3{gap:.75rem}.gap-3\\.5{gap:.875rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-7{gap:1.75rem}.gap-8{gap:2rem}.gap-\\[0\\.28rem\\]{gap:.28rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-1{row-gap:.25rem}.gap-y-6{row-gap:1.5rem}@media (min-width: 576px){.sm\\:col-span-4{grid-column:span 4/span 4}.sm\\:col-span-6{grid-column:span 6/span 6}.sm\\:ml-8{margin-left:2rem}.sm\\:mt-0{margin-top:0}.sm\\:flex{display:flex}.sm\\:h-60{height:15rem}.sm\\:\\!w-64{width:16rem!important}.sm\\:w-40{width:10rem}.sm\\:w-44{width:11rem}.sm\\:w-56{width:14rem}.sm\\:w-60{width:15rem}.sm\\:w-64{width:16rem}.sm\\:w-80{width:20rem}.sm\\:w-96{width:24rem}.sm\\:w-\\[30rem\\]{width:30rem}.sm\\:w-auto{width:auto}.sm\\:min-w-\\[30rem\\]{min-width:30rem}.sm\\:flex-row{flex-direction:row}.sm\\:flex-col{flex-direction:column}.sm\\:flex-nowrap{flex-wrap:nowrap}.sm\\:items-start{align-items:flex-start}.sm\\:items-end{align-items:flex-end}.sm\\:items-center{align-items:center}.sm\\:justify-center{justify-content:center}.sm\\:justify-between{justify-content:space-between}.sm\\:gap-2{gap:.5rem}.sm\\:p-20{padding:5rem}.sm\\:px-10{padding-left:2.5rem;padding-right:2.5rem}.sm\\:py-10{padding-bottom:2.5rem;padding-top:2.5rem}.sm\\:py-5{padding-bottom:1.25rem;padding-top:1.25rem}.sm\\:pt-32{padding-top:8rem}.sm\\:text-left{text-align:left}.sm\\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 768px){.md\\:-bottom-12{bottom:-3rem}.md\\:-bottom-28{bottom:-7rem}.md\\:-bottom-8{bottom:-2rem}.md\\:-bottom-\\[26rem\\]{bottom:-26rem}.md\\:-left-12{left:-3rem}.md\\:-left-28{left:-7rem}.md\\:-left-32{left:-8rem}.md\\:-left-4{left:-1rem}.md\\:-left-48{left:-12rem}.md\\:-left-\\[22rem\\]{left:-22rem}.md\\:bottom-0{bottom:0}.md\\:left-10{left:2.5rem}.md\\:left-\\[32rem\\]{left:32rem}.md\\:left-\\[42rem\\]{left:42rem}.md\\:top-1\\/2{top:50%}.md\\:top-32{top:8rem}.md\\:top-8{top:2rem}.md\\:col-span-2{grid-column:span 2/span 2}.md\\:col-span-4{grid-column:span 4/span 4}.md\\:col-span-6{grid-column:span 6/span 6}.md\\:ml-auto{margin-left:auto}.md\\:block{display:block}.md\\:flex{display:flex}.md\\:hidden{display:none}.md\\:h-\\[20rem\\]{height:20rem}.md\\:h-\\[32rem\\]{height:32rem}.md\\:\\!w-80{width:20rem!important}.md\\:w-2\\/12{width:16.666667%}.md\\:w-40{width:10rem}.md\\:w-5\\/12{width:41.666667%}.md\\:w-56{width:14rem}.md\\:w-6\\/12{width:50%}.md\\:w-60{width:15rem}.md\\:w-8\\/12{width:66.666667%}.md\\:w-80{width:20rem}.md\\:w-\\[100rem\\]{width:100rem}.md\\:w-\\[26rem\\]{width:26rem}.md\\:w-\\[30rem\\]{width:30rem}.md\\:w-\\[50rem\\]{width:50rem}.md\\:w-\\[52rem\\]{width:52rem}.md\\:w-\\[60rem\\]{width:60rem}.md\\:w-\\[95rem\\]{width:95rem}.md\\:w-screen{width:100vw}.md\\:flex-initial{flex:0 1 auto}.md\\:-translate-y-1\\/2{--tw-translate-y: -50% }.md\\:-translate-y-1\\/2,.md\\:translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.md\\:translate-x-0{--tw-translate-x: 0px }.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:flex-row{flex-direction:row}.md\\:flex-col{flex-direction:column}.md\\:items-end{align-items:flex-end}.md\\:items-center{align-items:center}.md\\:justify-start{justify-content:flex-start}.md\\:justify-center{justify-content:center}.md\\:gap-20{gap:5rem}.md\\:gap-4{gap:1rem}.md\\:p-5{padding:1.25rem}.md\\:p-8{padding:2rem}}@media (min-width: 992px){.lg\\:left-20{left:5rem}.lg\\:left-\\[36rem\\]{left:36rem}.lg\\:left-\\[50rem\\]{left:50rem}.lg\\:col-span-1{grid-column:span 1/span 1}.lg\\:col-span-2{grid-column:span 2/span 2}.lg\\:col-span-4{grid-column:span 4/span 4}.lg\\:col-span-6{grid-column:span 6/span 6}.lg\\:mb-0{margin-bottom:0}.lg\\:mt-0{margin-top:0}.lg\\:mt-20{margin-top:5rem}.lg\\:flex{display:flex}.lg\\:hidden{display:none}.lg\\:h-10{height:2.5rem}.lg\\:h-32{height:8rem}.lg\\:h-\\[28rem\\]{height:28rem}.lg\\:\\!w-\\[30rem\\]{width:30rem!important}.lg\\:w-3\\/12{width:25%}.lg\\:w-32{width:8rem}.lg\\:w-\\[28rem\\]{width:28rem}.lg\\:w-\\[64rem\\]{width:64rem}.lg\\:w-fit{width:-moz-fit-content;width:fit-content}.lg\\:max-w-6xl{max-width:72rem}.lg\\:flex-row{flex-direction:row}.lg\\:gap-0{gap:0}.lg\\:rounded-2xl{border-radius:1rem}.lg\\:rounded-3xl{border-radius:1.5rem}.lg\\:rounded-xl{border-radius:.75rem}.lg\\:p-7{padding:1.75rem}.lg\\:px-2{padding-left:.5rem;padding-right:.5rem}.lg\\:px-20{padding-left:5rem;padding-right:5rem}.lg\\:px-56{padding-left:14rem;padding-right:14rem}.lg\\:px-8{padding-left:2rem;padding-right:2rem}.lg\\:px-9{padding-left:2.25rem;padding-right:2.25rem}.lg\\:py-20{padding-bottom:5rem;padding-top:5rem}.lg\\:py-7{padding-bottom:1.75rem;padding-top:1.75rem}.lg\\:pt-0{padding-top:0}.lg\\:text-2xl{font-size:1.5rem;line-height:2rem}.lg\\:text-5xl{font-size:3rem;line-height:1}.lg\\:text-base{font-size:1rem;line-height:1.5rem}.lg\\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width: 1200px){.xl\\:-left-12{left:-3rem}.xl\\:-left-28{left:-7rem}.xl\\:bottom-0{bottom:0}.xl\\:left-36{left:9rem}.xl\\:left-\\[42rem\\]{left:42rem}.xl\\:left-\\[60rem\\]{left:60rem}.xl\\:col-span-3{grid-column:span 3/span 3}.xl\\:col-span-4{grid-column:span 4/span 4}.xl\\:col-span-6{grid-column:span 6/span 6}.xl\\:block{display:block}.xl\\:flex{display:flex}.xl\\:hidden{display:none}.xl\\:h-\\[36\\.25rem\\]{height:36.25rem}.xl\\:\\!w-40{width:10rem!important}.xl\\:w-3\\/12{width:25%}.xl\\:w-6\\/12{width:50%}.xl\\:w-96{width:24rem}.xl\\:w-\\[29rem\\]{width:29rem}.xl\\:max-w-36{max-width:9rem}.xl\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\\:flex-row{flex-direction:row}.xl\\:items-start{align-items:flex-start}.xl\\:items-center{align-items:center}.xl\\:gap-1{gap:.25rem}.xl\\:gap-6{gap:1.5rem}.xl\\:text-left{text-align:left}}.comfyui-easyuse-toast{position:fixed;z-index:99999;top:0;left:0;height:0;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:start}.comfyui-easyuse-toast-container{position:relative;height:fit-content;padding:4px;margin-top:-100px;opacity:0;z-index:3;-webkit-transition:all .3s ease-in-out;-khtml-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-ms-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.comfyui-easyuse-toast-container:last-child{z-index:1}.comfyui-easyuse-toast-container.show{opacity:1;margin-top:0!important;transform:translateY(0)}.comfyui-easyuse-toast-container:not(.show){z-index:1}.comfyui-easyuse-toast-container>div{position:relative;background:var(--comfy-menu-bg);color:var(--input-text);height:fit-content;box-shadow:0 0 10px #000000e0;padding:9px 12px;border-radius:var(--border-radius);font-size:14px;pointer-events:all;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;-o-justify-content:center;justify-content:center;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-toast-container>div>span{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;-o-justify-content:center;justify-content:center;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-toast-container>div>span i{font-size:16px;margin-right:8px}.comfyui-easyuse-toast-container>div>span i.loading{animation:loading-rotate 1s linear infinite}.comfyui-easyuse-toast-container a{cursor:pointer;text-decoration:underline;color:var(--theme-color-light);margin-left:4px;display:inline-block;line-height:1}.comfyui-easyuse-toast-container a:hover{color:var(--theme-color-light);text-decoration:none}@keyframes loading-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.comfyui-easyuse-selector{position:relative}.comfyui-easyuse-selector.hide{display:none}.comfyui-easyuse-selector__header{--height:26px;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;height:var(--height);padding-bottom:10px;border-bottom:1px solid var(--border-color-solid)}.comfyui-easyuse-selector__header_button{height:var(--height);width:var(--height);border-radius:var(--border-radius);border:1px solid var(--border-color);font-size:11px;background:var(--bg-color);box-shadow:none;cursor:pointer;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;-o-justify-content:center;justify-content:center;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-selector__header_button:hover{filter:brightness(1.2)}.comfyui-easyuse-selector__header_button:hover i{color:var(--error-color)}.comfyui-easyuse-selector__header_button i{font-size:16px;color:var(--input-text);-webkit-transition:all .3s ease-in-out;-khtml-transition:all .3s ease-in-out;-moz-transition:all .3s ease-in-out;-ms-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.comfyui-easyuse-selector__header_search{flex:1;margin-left:10px;border-radius:var(--border-radius);border:1px solid var(--border-color);font-size:11px;background:var(--bg-color);padding:0 8px;height:var(--height);display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-selector__header_search i{font-size:16px}.comfyui-easyuse-selector__header_search .search{vertical-align:middle;margin-left:5px;outline:none;resize:none;border:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;box-shadow:none;overflow-y:scroll;background:transparent;width:100%;line-height:var(--height);font-size:12px;color:var(--input-text);-webkit-box-flex:1;-ms-flex:1;-webkit-flex:1;flex:1}.comfyui-easyuse-selector__content{list-style:none;padding:0;margin:0;min-height:150px;height:calc(100% - 28px);overflow-y:auto;overflow-x:hidden}.comfyui-easyuse-selector-item{display:inline-block;position:relative}.comfyui-easyuse-selector-item__tag{display:inline-block;vertical-align:middle;margin-top:8px;margin-right:8px;padding:4px;color:var(--input-text);background-color:var(--bg-color);border-radius:var(--border-radius);border:1px solid var(--border-color);font-size:11px;cursor:pointer;overflow:hidden;position:relative}.comfyui-easyuse-selector-item__tag:hover{filter:brightness(1.2)}.comfyui-easyuse-selector-item__tag.hide{display:none}.comfyui-easyuse-selector-item__tag input{--ring-color: transparent;position:relative;box-shadow:none;border:1px solid var(--border-color);border-radius:2px;background:linear-gradient(135deg,var(--comfy-menu-bg) 0%,var(--comfy-input-bg) 60%)}.comfyui-easyuse-selector-item__tag input[type=checkbox]{display:inline-block;flex-shrink:0;vertical-align:middle;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border-color);background-origin:border-box;padding:0;width:1rem;height:1rem;border-radius:4px;color:var(--theme-color-light);-webkit-user-select:none;user-select:none}.comfyui-easyuse-selector-item__tag input[type=checkbox]:checked{border:1px solid var(--theme-color-light);background-color:var(--theme-color-light);background-image:url("data:image/svg+xml,%3csvg viewBox=\'0 0 16 16\' fill=\'white\' xmlns=\'http://www.w3.org/2000/svg\'%3e%3cpath d=\'M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z\'/%3e%3c/svg%3e")}.comfyui-easyuse-selector-item__tag input span{margin:0 4px;vertical-align:middle}.comfyui-easyuse-selector-preview{position:absolute;left:-180px;top:-110px;z-index:2;border:1px solid var(--border-color);border-radius:var(--border-radius);background:var(--comfy-menu-bg);-webkit-backdrop-filter:saturate(180%) blur(40px);-khtml-backdrop-filter:saturate(180%) blur(40px);-moz-backdrop-filter:saturate(180%) blur(40px);-ms-backdrop-filter:saturate(180%) blur(40px);-o-backdrop-filter:saturate(180%) blur(40px);backdrop-filter:saturate(180%) blur(40px);overflow:hidden}.comfyui-easyuse-selector-preview img{width:150px;height:150px}.comfyui-easyuse-selector-preview__text{font-size:12px;padding:5px 10px;max-width:130px;color:var(--input-text)}.comfyui-easyuse-selector-preview__text h6{line-height:1.15;font-size:10px;margin:10px 0}.comfyui-easyuse-dialog{max-width:600px}.comfyui-easyuse-dialog-title{font-size:18px;font-weight:700;text-align:center;color:var(--input-text);margin:0}.comfyui-easyuse-dialog-images{margin-top:10px;display:flex;flex-wrap:wrap;width:100%;box-sizing:border-box}.comfyui-easyuse-dialog-images img{width:50%;height:auto;cursor:pointer;box-sizing:border-box;filter:brightness(80%)}.comfyui-easyuse-dialog-images img:hover{filter:brightness(100%)}.comfyui-easyuse-dialog-images.selected{border:4px solid var(--success-color)}.comfyui-easyuse-dialog-hidden{display:none;height:0}.comfyui-easyuse-contextmenu{--height: 26px;--padding: 8px;font-family:var(--font-family);position:fixed;top:0;left:0;width:100%;max-width:200px;min-width:100px;min-height:100px;padding:var(--padding) 0;box-shadow:0 0 10px #00000040;background-color:var(--tr-odd-bg-color);border-radius:var(--border-radius);z-index:10;will-change:transform}.comfyui-easyuse-contextmenu-item-divider{height:1px;width:100%;background-color:var(--border-color);margin:var(--padding) 0}.comfyui-easyuse-contextmenu-item-content{height:var(--height);padding:0 12px;cursor:pointer;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-contextmenu-item-content span{font-size:11px;color:var(--input-text);display:-webkit-box;-webkit-line-clamp:1;overflow:hidden;word-break:break-all;text-overflow:ellipsis;-webkit-box-orient:vertical;-webkit-box-flex:1;-ms-flex:1;-webkit-flex:1;flex:1}.comfyui-easyuse-contextmenu-item-content i{color:var(--input-text);margin-left:4px;display:block;width:0;height:0;border-width:4px 4px 0;border-style:solid;border-color:var(--descrip-text) transparent transparent;-webkit-transform:scaleY(.8) rotate(-90deg);-khtml-transform:scaleY(.8) rotate(-90deg);-moz-transform:scaleY(.8) rotate(-90deg);-ms-transform:scaleY(.8) rotate(-90deg);-o-transform:scaleY(.8) rotate(-90deg);transform:scaleY(.8) rotate(-90deg)}.comfyui-easyuse-contextmenu-item-content:hover{background:var(--theme-color)}.comfyui-easyuse-contextmenu-item.disabled .comfyui-easyuse-contextmenu-item-content span{color:var(--border-color);cursor:default}.comfyui-easyuse-contextmenu-item.disabled .comfyui-easyuse-contextmenu-item-content:hover{background:transparent}.comfyui-easyuse-contextmenu-submenu{font-family:var(--font-family);position:absolute;top:0;left:200px;max-width:200px;width:200px;min-width:100px;min-height:--height;padding:var(--padding) 0;box-shadow:0 0 10px #00000040;background-color:var(--tr-odd-bg-color);border-radius:var(--border-radius);z-index:10;will-change:transform}.comfyui-easyuse-contextmenu-model{position:relative}.comfyui-easyuse-contextmenu-model:hover img{display:block;opacity:1}.comfyui-easyuse-contextmenu-model img{position:absolute;z-index:1;right:-175px;top:-75px;width:150px;height:auto;display:none;filter:brightness(70%);-webkit-filter:brightness(70%);opacity:0;-webkit-transition:all .5s cubic-bezier(.55,0,.1,1);-khtml-transition:all .5s cubic-bezier(.55,0,.1,1);-moz-transition:all .5s cubic-bezier(.55,0,.1,1);-ms-transition:all .5s cubic-bezier(.55,0,.1,1);-o-transition:all .5s cubic-bezier(.55,0,.1,1);transition:all .5s cubic-bezier(.55,0,.1,1)}.comfyui-easyuse-slider{width:100%;height:100%;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-slider-item{height:inherit;min-width:25px;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;-o-justify-content:center;justify-content:center;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;-webkit-flex-direction:column;-khtml-flex-direction:column;-moz-flex-direction:column;-ms-flex-direction:column;-o-flex-direction:column;flex-direction:column}.comfyui-easyuse-slider-item-input{height:15px;font-size:10px;color:var(--input-text)}.comfyui-easyuse-slider-item-label{height:15px;border:none;color:var(--descrip-text);font-size:8px}.comfyui-easyuse-slider-item-scroll{width:5px;height:calc(100% - 30px);background:var(--comfy-input-bg);border-radius:10px;position:relative}.comfyui-easyuse-slider-item-bar{width:10px;height:10px;background:linear-gradient(to bottom,var(--input-text),var(--descrip-text));border-radius:100%;box-shadow:0 2px 10px var(--bg-color);position:absolute;top:0;left:-2.5px;cursor:pointer;z-index:1}.comfyui-easyuse-slider-item-area{width:100%;border-radius:20px;position:absolute;bottom:0;background:var(--input-text);z-index:0}.comfyui-easyuse-slider-item.positive .comfyui-easyuse-slider-item-label{color:var(--success-color)}.comfyui-easyuse-slider-item.positive .comfyui-easyuse-slider-item-area{background:var(--success-color)}.comfyui-easyuse-slider-item.negative .comfyui-easyuse-slider-item-label{color:var(--error-color)}.comfyui-easyuse-slider-item.negative .comfyui-easyuse-slider-item-area{background:var(--error-color)}.comfyui-easyuse-map{height:100%;background:var(--comfy-menu-bg)}.comfyui-easyuse-map .p-splitter-gutter-handle{height:1px!important}.comfyui-easyuse-map-nodes{height:100%;position:relative}.comfyui-easyuse-map-nodes__header{position:absolute;z-index:2;top:0;left:0;width:100%;padding:.25rem 0 .25rem 1rem;height:2.7rem;background:var(--comfy-menu-bg);border-bottom:1px solid var(--border-color);display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;-webkit-backdrop-filter:saturate(180%) blur(40px);-khtml-backdrop-filter:saturate(180%) blur(40px);-moz-backdrop-filter:saturate(180%) blur(40px);-ms-backdrop-filter:saturate(180%) blur(40px);-o-backdrop-filter:saturate(180%) blur(40px);backdrop-filter:saturate(180%) blur(40px)}.comfyui-easyuse-map-nodes__header .title{font-size:13px;color:var(--input-text);font-weight:400;line-height:1.5;-webkit-user-select:none;user-select:none}.comfyui-easyuse-map-nodes__header .toolbar{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-map-nodes__header .toolbar .icon{font-size:.85rem;margin-left:.25rem;cursor:pointer}.comfyui-easyuse-map-nodes__content{position:relative;padding:2.7rem 0 0;height:100%;overflow:auto}.comfyui-easyuse-map-nodes__content dl .label{padding-left:1rem}.comfyui-easyuse-map-nodes__content ol,.comfyui-easyuse-map-nodes__content dl{list-style-type:none;padding:0;margin:0}.comfyui-easyuse-map-nodes__content ol .toolbar span,.comfyui-easyuse-map-nodes__content dl .toolbar span{font-size:13px}.comfyui-easyuse-map-nodes__content ol .toolbar span.pi-eye,.comfyui-easyuse-map-nodes__content dl .toolbar span.pi-eye{color:var(--input-text)}.comfyui-easyuse-map-nodes__content ol .toolbar span.pi-eye-slash,.comfyui-easyuse-map-nodes__content dl .toolbar span.pi-eye-slash{color:var(--descrip-text)}.comfyui-easyuse-map-nodes__content ol .toolbar span.pi-eye-slash.never,.comfyui-easyuse-map-nodes__content dl .toolbar span.pi-eye-slash.never{opacity:.5}.comfyui-easyuse-map-nodes__content .no_result{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;-o-justify-content:center;justify-content:center;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;text-align:center}.comfyui-easyuse-map-nodes-group{position:relative;overflow:hidden;width:100%;height:2rem;cursor:default;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;pointer-events:auto}.comfyui-easyuse-map-nodes-group .left,.comfyui-easyuse-map-nodes-group .right{height:100%;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse-map-nodes-group .left{padding-left:.5rem;margin-right:.25rem;-webkit-box-flex:1;-ms-flex:1;-webkit-flex:1;flex:1}.comfyui-easyuse-map-nodes-group .icon{font-size:.85rem;margin-right:.25rem}.comfyui-easyuse-map-nodes-group .label{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;height:100%;width:100%;min-width:80px}.comfyui-easyuse-map-nodes-group .label span{font-size:14px;color:var(--input-text);font-weight:400;line-height:1.5;display:-webkit-box;-webkit-line-clamp:1;overflow:hidden;word-break:break-all;text-overflow:ellipsis;-webkit-box-orient:vertical;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.comfyui-easyuse-map-nodes-group:hover{background:var(--content-hover-bg)!important}.comfyui-easyuse-map-nodes-group.active{background:var(--theme-color)!important}.comfyui-easyuse-map-nodes-group.active .label{color:#fff;cursor:default}.comfyui-easyuse-map-nodes-group.never .label{color:var(--descrip-text);opacity:.4}.comfyui-easyuse-map-nodes-group.bypass .label{color:var(--descrip-text)}.comfyui-easyuse-map-nodes-node{height:2rem;cursor:default;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;position:relative;overflow:hidden;pointer-events:auto}.comfyui-easyuse-map-nodes-node .label{text-indent:.5rem;font-size:13px;color:var(--input-text);font-weight:400;line-height:1.5;-webkit-box-flex:1;-ms-flex:1;-webkit-flex:1;flex:1;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;margin-right:.25rem;height:2rem;line-height:2rem;width:100%;display:-webkit-box;-webkit-line-clamp:1;overflow:hidden;word-break:break-all;text-overflow:ellipsis;-webkit-box-orient:vertical}.comfyui-easyuse-map-nodes-node .label.error{color:var(--error-color)}.comfyui-easyuse-map-nodes-node:hover{background:var(--content-hover-bg)!important}.comfyui-easyuse-map-nodes-node.never .label{color:var(--descrip-text);opacity:.5}.comfyui-easyuse-map-nodes-node.bypass .label{color:#f0f;opacity:.5}.comfyui-easyuse-map-nodes .nodes .label{text-indent:1rem}.comfyui-easyuse-toolbar{border-radius:0 12px 12px 0;min-width:50px;height:24px;position:fixed;bottom:85px;left:0;display:flex;align-items:center;z-index:1000;background-color:var(--comfy-menu-bg);border:1px solid var(--bg-color);-webkit-backdrop-filter:saturate(180%) blur(40px);-khtml-backdrop-filter:saturate(180%) blur(40px);-moz-backdrop-filter:saturate(180%) blur(40px);-ms-backdrop-filter:saturate(180%) blur(40px);-o-backdrop-filter:saturate(180%) blur(40px);backdrop-filter:saturate(180%) blur(40px)}.comfyui-easyuse-toolbar-icon{height:100%;padding:0 4px;display:flex;justify-content:center;align-items:center;font-size:12px;color:#fff;transition:all .3s ease-in-out;cursor:pointer}.comfyui-easyuse-toolbar-icon svg{width:14px;height:14px}.comfyui-easyuse-toolbar-icon:hover.group{color:var(--warning-color)}.comfyui-easyuse-toolbar-icon:hover.rocket{color:var(--theme-color)}.comfyui-easyuse-toolbar-nodes-map{position:absolute;top:50px;left:10px;width:200px;border-radius:12px;min-height:100px;max-height:600px;color:var(--descrip-text);background-color:var(--comfy-menu-bg);border:1px solid var(--bg-color);-webkit-backdrop-filter:saturate(180%) blur(40px);-khtml-backdrop-filter:saturate(180%) blur(40px);-moz-backdrop-filter:saturate(180%) blur(40px);-ms-backdrop-filter:saturate(180%) blur(40px);-o-backdrop-filter:saturate(180%) blur(40px);backdrop-filter:saturate(180%) blur(40px);z-index:399;padding-top:0;overflow:hidden}.comfyui-easyuse-toolbar-nodes-map .no-result-placeholder-content{-webkit-transform:scale(.8);-khtml-transform:scale(.8);-moz-transform:scale(.8);-ms-transform:scale(.8);-o-transform:scale(.8);transform:scale(.8)}.comfyui-easyuse-toolbar-nodes-map .comfyui-easyuse-map-nodes{min-height:100px;max-height:600px}.comfyui-easyuse-toolbar-nodes-map .comfyui-easyuse-map-nodes__header:before{content:"…";position:absolute;left:.25rem;top:2.75rem;transform:translateY(-2rem) rotate(90deg);width:.5rem;height:.5rem;display:inline-block;overflow:hidden;line-height:5px;padding:3px 4px;cursor:move;vertical-align:middle;font-size:12px;font-family:sans-serif;letter-spacing:2px;color:var(--drag-text);z-index:3;text-shadow:1px 0 1px black}.comfyui-easyuse-toolbar-nodes-map .comfyui-easyuse-map-nodes__header .title{cursor:move;padding-left:.25rem}.comfyui-easyuse-toolbar-nodes-map .comfyui-easyuse-map-nodes__content{max-height:calc(600px - 2.7rem)}.no-result-placeholder{display:flex;justify-content:center;align-items:center;height:100%}.no-result-placeholder-content{text-align:center;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-direction:column;-khtml-flex-direction:column;-moz-flex-direction:column;-ms-flex-direction:column;-o-flex-direction:column;flex-direction:column;-webkit-justify-content:space-between;-khtml-justify-content:space-between;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;justify-content:space-between}.no-result-placeholder .p-card{background-color:transparent!important;box-shadow:none;text-align:center}.no-result-placeholder h3{color:var(--input-text);margin-bottom:.5rem}.no-result-placeholder p{color:var(--descrip-text);margin-bottom:1rem;margin-top:0}#comfyui-easyuse-components{position:absolute;top:0;left:0;z-index:3}.comfyui-easyuse{--p-datatable-header-cell-padding: .15rem 1rem;--p-datatable-body-cell-padding: .15rem 1rem;--p-primary-color: var(--theme-color-light)!important;--border-color-solid: var(--border-color);--border-radius: 8px}.comfyui-easyuse.dark-theme{--fg-color: #fff;--bg-color: #242427;--content-bg:#18181b;--content-fg:#fff;--content-hover-bg: #27272a;--comfy-menu-bg: rgba(24,24,27,.9);--comfy-input-bg: #242427;--input-text: #ffffff;--descrip-text: #71717a;--drag-text: #ccc;--error-text: #ff4444;--border-color: #3f3f46;--border-color-solid: #2a2a2e;--tr-even-bg-color: rgba(28,28,28,.9);--tr-odd-bg-color: rgba(19,19,19,.9)}.comfyui-easyuse ::-webkit-scrollbar{width:0em}.comfyui-easyuse ::-webkit-scrollbar-track{background-color:transparent}.comfyui-easyuse ::-webkit-scrollbar-thumb{background-color:transparent;border-radius:2px}.comfyui-easyuse ::-webkit-scrollbar-thumb:hover{background-color:transparent}.comfyui-easyuse body{font-family:var(--font-family)!important;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.comfyui-easyuse textarea{font-family:var(--font-family)!important}.comfyui-easyuse hr{border:1px solid var(--border-color)}.comfyui-easyuse .comfy-multiline-input{background-color:transparent;border:1px solid var(--border-color-solid);border-radius:var(--border-radius);padding:8px;font-size:12px}.comfyui-easyuse #comfy-settings-dialog{border:1px solid var(--border-color);background:transparent;-webkit-backdrop-filter:blur(8px) brightness(120%);backdrop-filter:blur(8px) brightness(120%);box-shadow:none}.comfyui-easyuse .comfy-modal{border:1px solid var(--border-color);box-shadow:none;-webkit-backdrop-filter:blur(8px) brightness(120%);backdrop-filter:blur(8px) brightness(120%)}.comfyui-easyuse .cm-title{background-color:transparent!important}.comfyui-easyuse .cm-notice-board{border-radius:10px!important;border:1px solid var(--border-color)!important}.comfyui-easyuse .cm-menu-container{margin-bottom:50px!important}.comfyui-easyuse .cn-manager-custom_milk_white .tg-column-name,.comfyui-easyuse .cmm-manager-custom_milk_white .tg-column-name{color:var(--input-text)}.comfyui-easyuse .cn-manager-custom_milk_white .tg-body-message,.comfyui-easyuse .cmm-manager-custom_milk_white .tg-body-message{text-align:center;color:var(--descrip-text)!important}.comfyui-easyuse .cn-manager-custom_milk_white .tg-body-frame .tg-cell,.comfyui-easyuse .cmm-manager-custom_milk_white .tg-body-frame .tg-cell{color:var(--input-text)}.comfyui-easyuse .cn-manager-custom_milk_white .tg-body-frame .cn-node-name a,.comfyui-easyuse .cn-manager-custom_milk_white .tg-body-frame .cmm-node-name a,.comfyui-easyuse .cmm-manager-custom_milk_white .tg-body-frame .cn-node-name a,.comfyui-easyuse .cmm-manager-custom_milk_white .tg-body-frame .cmm-node-name a{color:var(--theme-color)!important}.comfyui-easyuse .comfy-menu{border-radius:16px;box-shadow:0 0 1px var(--descrip-text);-webkit-backdrop-filter:blur(8px) brightness(120%);backdrop-filter:blur(8px) brightness(120%)}.comfyui-easyuse .comfy-menu button.comfy-settings-btn{font-size:12px}.comfyui-easyuse .comfy-menu-btns{margin-bottom:4px}.comfyui-easyuse .comfy-menu button,.comfyui-easyuse .comfy-modal button{font-size:14px;padding:4px 0;margin-bottom:4px}.comfyui-easyuse .comfy-menu-btns button,.comfyui-easyuse .comfy-list-actions button{font-size:10px}.comfyui-easyuse .comfy-menu>button,.comfyui-easyuse .comfy-menu-btns button,.comfyui-easyuse .comfy-menu .comfy-list button,.comfyui-easyuse .comfy-modal button{border-width:1px}.comfyui-easyuse #comfy-dev-save-api-button{justify-content:center}.comfyui-easyuse #queue-button{position:relative;overflow:hidden;min-height:30px;z-index:1}.comfyui-easyuse #queue-button:after{clear:both;content:attr(data-attr);background:green;color:#fff;width:var(--process-bar-width);height:100%;position:absolute;top:0;left:0;z-index:0;text-align:center;display:flex;justify-content:center;align-items:center}.comfyui-easyuse #shareButton{background:linear-gradient(to left,var(--theme-color),var(--theme-color-light))!important;color:#fff!important}.comfyui-easyuse .litegraph.litecontextmenu{--height: 24px;--padding: 6px;font-family:var(--font-family);padding:var(--padding) 0;border-radius:var(--border-radius);-webkit-backdrop-filter:blur(8px) brightness(120%);backdrop-filter:blur(8px) brightness(120%)}.comfyui-easyuse .litegraph.litecontextmenu .litemenu-title{padding:var(--padding)}.comfyui-easyuse .litegraph.litecontextmenu>div:first-child.litemenu-title{margin-top:-6px}.comfyui-easyuse .litegraph.litecontextmenu .submenu{height:var(--height);line-height:var(--height);padding:0 18px 0 12px;margin:0;background:transparent!important}.comfyui-easyuse .litegraph.litecontextmenu .submenu.has_submenu{border-right:none;position:relative}.comfyui-easyuse .litegraph.litecontextmenu .submenu.has_submenu:after{content:"";display:block;width:0;height:0;border-width:4px 4px 0;border-style:solid;border-color:var(--input-text) transparent transparent;transform:translateY(-50%) rotate(-90deg);top:50%;position:absolute}.comfyui-easyuse .litegraph.litecontextmenu .submenu.separator{height:1px;width:100%;background-color:var(--border-color)!important;margin:var(--padding) 0;border:none}.comfyui-easyuse .litegraph.litecontextmenu .submenu:last-child.separator{display:none}.comfyui-easyuse .litegraph.litecontextmenu .submenu:hover:not(.separator){background:var(--theme-color)!important}.comfyui-easyuse .litegraph.lite-search-item{background-color:var(--comfy-input-bg)!important;filter:brightness(100%)}.comfyui-easyuse .litegraph.lite-search-item:hover{filter:brightness(120%);color:var(--input-text)}.comfyui-easyuse .graphdialog{-webkit-backdrop-filter:blur(8px) brightness(120%);backdrop-filter:blur(8px) brightness(120%)}.comfyui-easyuse .graphdialog button{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;-o-justify-content:center;justify-content:center;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center}.comfyui-easyuse .comfyui-menu{border-bottom:1px solid var(--bg-color)}.comfyui-easyuse .side-tool-bar-container{border-right:1px solid var(--bg-color)}.comfyui-easyuse .comfy-modal-content{width:100%}.comfyui-easyuse-poseEditor{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;-khtml-justify-content:center;-moz-justify-content:center;-ms-justify-content:center;-o-justify-content:center;justify-content:center;-webkit-align-items:center;-khtml-align-items:center;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;align-items:center;text-align:center;font-size:18px;line-height:1.5}#comfyui-menu-monitor{width:120px}#comfyui-menu-monitor #crystools-monitor-container{margin:0 auto!important}#comfyui-menu-monitor #crystools-monitor-container>div{margin:2px 0!important}#comfyui-menu-monitor #crystools-monitor-container>div>div>div{padding:0 4px!important}')),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}}(); -var e;import{$ as t,l as s,a as l,t as a,b as o,s as n,g as i,c as r,u,N as d,j as c,d as p,e as v,f as m,h as g}from"./assets/extensions-B7lGDrcJ.js";import{r as y,w as h,e as A,b as f,c as w,I as S,d as x,F as M,C as E,J as b,K as C,L as _,M as k,z as B,G as I,o as N,N as H,D as Q,O as z,E as j,P as D,x as R,Q as L,R as Z,S as Y}from"./assets/vue-DjzFgvDF.js";import{d as O,s as V,a as P,b as G,c as W,T as U,e as F}from"./assets/vendor-DT1J-jWa.js";import{c as T}from"./assets/lodash-CZi7izHi.js";import{P as X}from"./assets/primevue-BSs2m5Wu.js";import"./assets/primeuix-Be3xdh47.js";const J=O("graphStore",{state:e=>({selectors:[],selectors_styles:{},seg_selectors:[],slider_controls:[]}),actions:{setSelectors(e){this.selectors=T(e)},setStyles(e,t){this.selectors_styles[e]||(this.selectors_styles[e]=t)},setSegSelectors(e){this.seg_selectors=T(e)},setSliderControls(e){this.slider_controls=T(e)}}}),q=["data-id"],K=[x("i",{class:"mdi mdi-trash-can"},null,-1)],$=x("i",{class:"mdi mdi-magnify"},null,-1),ee=["placeholder"],te=["onMouseenter","onMouseleave"],se=["onClick"],le=["name","checked"],ae=["src"],oe={key:0},ne=x("span",{class:"comfyui-easyuse-success"},"positive:",-1),ie={key:1},re=x("span",{class:"comfyui-easyuse-error"},"negative:",-1),ue="comfyui-easyuse-selector",de={__name:"stylesSelector",props:{id:{type:String|Number,default:""},type:{type:String,default:""},selectedStyles:{type:Array,default:[]},show:{type:Boolean,default:!1}},emits:["chooseStyle"],setup(e,{emit:o}){const n=e,i=J(),{selectors_styles:r}=V(i),u=y([]);h((e=>n.type),(async e=>{u.value=[],e&&await(async e=>{if(r.value[n.type])return!0;const s=await l.fetchApi(`/easyuse/prompt/styles?name=${e}`);if(200===s.status){let e=(await s.json()).map(((e,t)=>(e.index=t,e)));return await i.setStyles(n.type,e),!0}return a.error(t("Get styles list Failed")),!1})(e)&&c()}),{immediate:!0});const d=o,c=e=>{const t=n.selectedStyles,s=T(r.value[n.type]);u.value=s.sort(((e,t)=>e.index-t.index)).sort(((e,s)=>t.includes(s.name)-t.includes(e.name)))},p=y(""),v=e=>e.toLowerCase(),m=A({}),g=e=>{m.src="",m.name="",m.positive="",m.negative=""},N=async e=>{const t=await l.fetchApi(`/easyuse/prompt/styles/image?name=${e}&styles_name=${n.type}`);if(200===t.status){const s=await t.text();if(s.startsWith("http"))return s;return`/easyuse/prompt/styles/image?name=${e}&styles_name=${n.type}`}},H=e=>{e.target.src="data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QNLaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA5LjEtYzAwMSA3OS4xNDYyODk5Nzc3LCAyMDIzLzA2LzI1LTIzOjU3OjE0ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjUuMSAoMjAyMzA5MDUubS4yMzE2IDk3OWM4NmQpICAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjA3NEU1QzNCNUJBMTFFRUExMUVDNkZDRjI0NzlBN0QiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjA3NEU1QzRCNUJBMTFFRUExMUVDNkZDRjI0NzlBN0QiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGMDc0RTVDMUI1QkExMUVFQTExRUM2RkNGMjQ3OUE3RCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGMDc0RTVDMkI1QkExMUVFQTExRUM2RkNGMjQ3OUE3RCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv/uAA5BZG9iZQBkwAAAAAH/2wCEAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHB8fHx8fHx8fHx8BBwcHDQwNGBAQGBoVERUaHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fH//AABEIAIAAgAMBEQACEQEDEQH/xACLAAEAAgMBAQEAAAAAAAAAAAAABAUCAwYBBwgBAQADAQEBAAAAAAAAAAAAAAABAgMEBQYQAAEEAgECAwUHAwUAAAAAAAEAAgMEEQUhEgYxEwdBYSIyFFFxgVJyIxWRoTOxwdFiJBEBAAICAQQBBAIDAAAAAAAAAAECEQMxIUESBBOB0SIyUXGCIwX/2gAMAwEAAhEDEQA/AP1SgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDXJYgj+d4afsVopM8KWvEcy8it1pXdMcjXO/Lnn+im2u0cwV2VniW1UXEBAQEBAQEBAQEBAQRNlc+mgyDh7zhv+5WunX5Sw37fCHM2dh48r06ank7N6rn2Ja7qa4hw5BBwQV010uK+/DsO29v/J68SOI86Jxjl95HIP4gryPc0fHfHaXu+j7Py68zzHSVquV2iAgICAgICAgICDyTr6HdHz4PTnwypjnqic46OauNbY6mGX99p+L8w9xaeV6OufHt0eXtr59M9VFb194E9LmuH3kf6rv17avO2ets7YVcuuuk/uOa3PgBlxP4BdMbq9nLPqbJ5xDbSM9azFXpyujuSO+Bo5kcf0NPyj25We2YtEzaPxdfr6519Kz+UvqEIlELBKQZQ0eYRwC7HOPxXzVsZ6cPpK5x15ZKEiAgICAgICAgICCNc1tG40CzA2XHg4j4h9zhyFpr22p+s4Z7NNL/ALRlTX+1dVFBJOJrcTI2lxZHYcBx+sldWv3bzOMVn6fZy39OkRnNo+v3aoOx9JOxks8tqwHDPS+1IW8+IzGWZVrf9DZHSMR/j9yvo656zMz9V1rdLqdYwsoVIqwd87mNAc79Tvmd+JXJt332ftMy6temlP1jCasmggICAgICAgICAgwlmiib1SPDB7zhWrWZ4VtaI5QXb2l5ojYHvLjjIGB/dbR61sZlhPtVziFb3PYdd0luCvAZbXludVZ1huZQPgyTx4/atvWj4rxaZ6d/6Ye1/t1zSI6zx/bzti5YqaOpBeg8u41n/oa14cA4ccH7lPs1jZebVn8eyPUtOrXFbR+XdYx9xa90pjeXROaSCXDj+oysZ9S+Mx1bR7uvOJ6LGOWKVgfG8PafAtOQueazHLqraJjMMlCRAQEBAQEBAQRLNp4HTFx/2/4WtKR3Y32T2Udl8j3knk/aeSu6kREPPvaZlpY3DmyY8DyrzPZWv8tkvmFv7bg12RyR1DGeeMj2KnjE9JaeUx1hi1sgaet/U7JIOMcE8Dj7FMREcK2zPKMasr5XO6fmOVt5xEOadVplYU45IAOhxa72kLm2TFuXXqrNeF1WtlwDZeHfmHguO+vHDupszylLJsICAgICAg8cMjCQiYR5IVpFmc1Q5qLXHPgfbhbV2MLaYlqNQAYA4V/kV+PDA1fcp81fjYurtYMu4CmLZRNYhtZWBAI8CqzdaKN8df3LObtIokxwe5ZzZrFUloIGFnLWHqhIgICAgICAgxMbSpyjDAwAq3kr4MTWCnzR4MX02PGHDISNmETqieWba7QABwB4KJumKNgjaFXK0VZYChYQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHzvuv1G7k1W9s6/Xamtaq15oaonmnsCR008HntaI4K8/s4HOeEGXZXqTud7uqtG7r6kNa5HdMU9aaw9zZde+FkrHsnr1+M2MZBPIKDRe9cO2K2mjs/V0m7X61lWzq32W+ZFEbfkSSO4B+GL9zw4QWm99TqFVmjsaSu7fUtxeNM2aTmSMBbHI9zWHqHVJlnDTxjPKCJL6sea502t1D7Ouhr0rNqxNM2CSNuwnkgjAi6ZOotdEc/Egibf1j/j+7JNL9DWdWg84TWn2ywtdFKyMZb5Tg0nLyG55x48IJ3bXqe/ea/a26dFtyTXtldDUqyOdNL5VqaDHS5gwXRxMe3xz1Y9iDKP1Sa7uefUnR7TyYqUVoEU5jY6pJZIz1RY4ZiMYd7TkexBA749Wr2gtCKlrIpGs17NjK29LLWmPmMsyiFkbIZsPEdKQu6y0eAQWdD1E2L93W1tzRyCDY3paev2NaxVlhIjidMfMb5vmse1kbi9pZ7MeKDt0BAQEBAQfEPU+lFY2++q2K1uSSezTnrReVsTTmiZVYHOd9LVuQyubIwANkbxz4FA7FsQ0NrrLNXX7N0eo1+3darGDYPjb5j6prxVRajjDetsRAjj4yM4CDre2uxO7q2hqtm7nua6w9rp5tfXgoSxwyTOMr42PlrPe4Nc8jJJQRDb3Oz1fYFrcV7As0mu3u7nbWkBZ9LSfG5nlxs/yySWRiNozwcBBx9EXadGTXz62+LG41+jZS6adhzS6vfnlkEjgzEZax7T8ePFBu3nbPdUXqJZsw6S5cqbCW1YdIY2lxhhfEGMjfHtoG9HxucwPEZy4/A7kMC87aq2Kmv7mdvxuqGmklFjUU4G2Yp21rdyW00t+kJkFl88pY9vDgwNDvEoK9np73FBcHdkrt2+rZd5FjQx7O0b8WvbzDKZhN1SSse573QdeAHkN+Ichj3p2rBvZq9vUnY2tcNQPqpZYZpJ44GxXqzHdVlzZZpib73mLHViI85c1BZ6OpsIe/6/XSuntevdsz6+8+pI0/yM1dtWVr2Z644P8rmyuj6S53jxkh9aQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBB/9k="};return(l,a)=>(f(),w("div",{class:M(ue+` ${ue}-styles`),"data-id":e.id,onMouseleave:g},[u.value.length>0&&e.show?(f(),w(S,{key:0},[x("div",{class:M(ue+"__header")},[x("div",{class:M(ue+"__header_button"),onClick:a[0]||(a[0]=e=>(d("chooseStyle",[]),void(p.value="")))},K,2),x("div",{class:M(ue+"__header_search")},[$,E(x("textarea",{class:"search","onUpdate:modelValue":a[1]||(a[1]=e=>p.value=e),dir:"ltr",rows:1,placeholder:C(t)("Type here to search styles ...")},null,8,ee),[[b,p.value]])],2)],2),x("div",{class:M(ue+"__content"),onMouseleave:c},[(f(!0),w(S,null,_(u.value,((t,l)=>(f(),w("div",{class:M(ue+"-item"),key:l,onMouseenter:e=>(async e=>{if(!e.imageSrc){if(e.imageLoading)return;e.imageLoading=!0;const t=await N(e.imgName).finally((()=>e.imageLoading=!1));e.imageSrc=t}m.name="zh-CN"==s&&e.name_cn?e.name_cn:e.name,m.positive=e.prompt,m.negative=e.negative_prompt,m.src=e.imageSrc})(t),onMouseleave:k((e=>g()),["stop"])},[x("span",{class:M([ue+"-item__tag",{hide:!(e.selectedStyles.includes(t.name)||-1!=v(t.name).indexOf(v(p.value))||t.name_cn&&-1!=v(t.name_cn).indexOf(v(p.value)))}]),onClick:e=>(e=>{let t=n.selectedStyles;t.includes(e.name)?t=t.filter((t=>t!==e.name)):t.push(e.name),d("chooseStyle",t)})(t)},[x("input",{type:"checkbox",name:t.name,checked:e.selectedStyles.includes(t.name)},null,8,le),x("span",null,B("zh-CN"==C(s)&&t.name_cn?t.name_cn:t.name),1)],10,se)],42,te)))),128))],34),(null==m?void 0:m.src)?(f(),w("div",{key:0,class:M(ue+"-preview")},[x("img",{src:m.src,ref:"image",alt:"preview",onError:H},null,40,ae),x("div",{class:M(ue+"-preview__text")},[x("b",null,B(m.name),1),x("div",{class:M(ue+"-preview__prompt")},[m.positive?(f(),w("h6",oe,[ne,x("span",null,B(m.positive),1)])):I("",!0),m.negative?(f(),w("h6",ie,[re,x("span",null,B(m.negative),1)])):I("",!0)],2)],2)],2)):I("",!0)],64)):I("",!0)],42,q))}},ce=["data-id"],pe=["onClick"],ve=["name","checked"],me="comfyui-easyuse-selector",ge={__name:"segSelector",props:{id:{type:String|Number,default:""},type:{type:String,default:""},selected:{type:Array,default:[]},show:{type:Boolean,default:!1}},emits:["select"],setup(e,{emit:s}){const l=e,a=y([]);h((e=>l.type),(async e=>{switch(e){case"selfie_multiclass_256x256":a.value=["Background","Hair","Body","Face","Clothes","Others"];break;case"human_parsing_lip":a.value=["Background","Hat","Hair","Glove","Sunglasses","Upper-clothes","Dress","Coat","Socks","Pants","Jumpsuits","Scarf","Skirt","Face","Left-arm","Right-arm","Left-leg","Right-leg","Left-shoe","Right-shoe"]}}),{immediate:!0});const o=s;return(s,n)=>{var i;return f(),w("div",{class:M(me+` ${me}-seg`),"data-id":e.id},[(null==(i=a.value)?void 0:i.length)>0&&e.show?(f(!0),w(S,{key:0},_(a.value,((s,a)=>(f(),w("div",{class:M(me+"-item"),key:a},[x("span",{class:M(me+"-item__tag"),onClick:e=>(e=>{let t=T(l.selected);t.includes(e)?t=t.filter((t=>t!==e)):t.push(e),o("select",t)})(a)},[x("input",{type:"checkbox",name:s,checked:e.selected.includes(a)},null,8,ve),x("span",null,B(C(t)(s)),1)],10,pe)],2)))),128)):I("",!0)],10,ce)}}},ye=["data-id"],he=["onMousedown","onDblclick"],Ae="comfyui-easyuse-slider",fe="ipadapter layer weights",we={__name:"sliderControl",props:{id:{type:String|Number,default:""},mode:{type:String,default:""},type:{type:String,default:""},values:{type:Array,default:[]},show:{type:Boolean,default:!1}},emits:["changeValues","showSlider"],setup(e,{emit:t}){const s=e,l=t,a=(e,t,s)=>(e-t)/(s-t)*100,o=(e,t,l=void 0)=>{if(s.mode===fe){let s={3:2.5,6:1}[t]||0;return{default:12==e?s:0,min:-1,max:3,step:.05,value:void 0!==l?l:12==e?s:0,top:void 0!==l?100-a(l,-1,3)+"%":null,height:void 0!==l?a(l,-1,3)+"%":null}}};h((e=>s.mode),(async(e,t)=>{var a;if(e!==t&&e===fe)if(!t&&(null==(a=s.values)?void 0:a.length)>0){const e=s.values.map((e=>{const t=e.split(":");return o(s.values.length,t[0],parseFloat(t[1]))}));await l("changeValues",e)}else{let e="sd1"==s.type?16:12,t=Array.from({length:e},((t,s)=>o(e,s)));await l("changeValues",t)}l("showSlider")}),{immediate:!0}),h((e=>s.type),((e,t)=>{if(e!=t&&s.mode==fe){let e="sd1"==s.type?16:12,t=Array.from({length:e},((t,s)=>o(e,s)));l("changeValues",t)}}));const n=y(null),i=y(null);return N((()=>{document.onmouseup=e=>document.onmousemove=null})),(t,o)=>{var r;return f(),w("div",{class:M(Ae),"data-id":e.id},[(null==(r=e.values)?void 0:r.length)>0&&e.show?(f(!0),w(S,{key:0},_(e.values,((t,o)=>(f(),w("div",{class:M([Ae+"-item",{positive:3==o&&"sdxl"==e.type&&e.mode==fe},{negative:6==o&&"sdxl"==e.type&&e.mode==fe}]),key:o},[x("div",{class:M(Ae+"-item-input")},B(t.value),3),x("div",{class:M(Ae+"-item-scroll"),ref_for:!0,ref_key:"scroll",ref:n},[x("div",{class:M(Ae+"-item-bar"),ref_for:!0,ref_key:"bar",ref:i,style:H({top:t.top||100-a(t.default,t.min,t.max)+"%"}),onMousedown:e=>((e,t,a)=>{let o=e||window.event,r=n.value[a],u=i.value[a],d=T(s.values),c=o.clientY-u.offsetTop;document.onmousemove=e=>{let s=(e||window.event).clientY-c;s<0?s=0:s>r.offsetHeight-u.offsetHeight&&(s=r.offsetHeight-u.offsetHeight);let o=(t.max-t.min)/t.step,n=(r.offsetHeight-u.offsetHeight)/o;s=Math.round(s/n)*n;const i=Math.floor(s/(r.offsetHeight-u.offsetHeight)*100)+"%",p=Math.floor((r.offsetHeight-u.offsetHeight-s)/(r.offsetHeight-u.offsetHeight)*100)+"%",v=parseFloat(parseFloat(t.max-(t.max-t.min)*(s/(r.offsetHeight-u.offsetHeight))).toFixed(2));d[a]={...d[a],top:i,height:p,value:v},l("changeValues",d),window.getSelection?window.getSelection().removeAllRanges():document.selection.empty()}})(e,t,o),onDblclick:e=>((e,t,a)=>{let o=T(s.values);o[a]={...o[a],top:null,height:null,value:t.default},l("changeValues",o)})(0,t,o)},null,46,he),x("div",{class:M(Ae+"-item-area"),style:H({height:t.height||a(t.default,t.min,t.max)+"%"})},null,6)],2),x("div",{class:M(Ae+"-item-label")},[x("span",null,B(t.label),1)],2)],2)))),128)):I("",!0)],8,ye)}}},Se={__name:"index",setup(e){const t=J(),{selectors:s,seg_selectors:l,slider_controls:a}=V(t),u=y({}),d=async e=>{var l,a,o,r,d,c;await n(1);const p=i(e,"styles"),v=(null==(l=e.properties.values)?void 0:l.length)>0?e.properties.values:[];let m=T(s.value);m.push({id:e.id,type:p.value,value:v,show:!1});const g=m.length-1;await t.setSelectors(m);let y=null==(r=null==(o=null==(a=u.value[e.id])?void 0:a._)?void 0:o.vnode)?void 0:r.el;if(!y)return;let h=e.addDOMWidget("select_styles","btn",y);e.properties.values||e.setProperty("values",[]),m[g].show=!0,await t.setSelectors(m);let A=p.value;Object.defineProperty(p,"value",{set:s=>{A=s,m[g].type=s,e.properties.values=[],m[g].value=[],t.setSelectors(m)},get:e=>A}),Object.defineProperty(h,"value",{set:e=>{setTimeout((s=>{m[g].value=e.split(","),t.setSelectors(m)}),150)},get:t=>{var l,a;return e.properties.values=(null==(a=null==(l=s.value)?void 0:l[g])?void 0:a.value)||[],e.properties.values.join(",")}}),((null==(d=e.size)?void 0:d[0])<150||(null==(c=e.size)?void 0:c[1])<150)&&e.setSize([425,500]);const f=e.onRemoved;e.onRemoved=function(){if(f&&(null==f||f.apply(this,arguments)),void 0!==s.value.findIndex((t=>t.id==e.id))){let e=T(s.value);e.splice(g,1),t.setSelectors(e)}return f}},c=y({}),p=async e=>{var s,a,o,u;await n(1);const d=i(e,"method"),p=(null==(s=e.properties.values)?void 0:s.length)>0?e.properties.values:[];let v=T(l.value);v.push({id:e.id,type:d.value,value:p,show:!1});const m=v.length-1;await t.setSegSelectors(v);let g=null==(u=null==(o=null==(a=c.value[e.id])?void 0:a._)?void 0:o.vnode)?void 0:u.el;if(!g)return;let y=e.addDOMWidget("mask_components","btn",g);e.properties.values||e.setProperty("values",[]),v[m].show=!0,await t.setSegSelectors(v);let h=d.value;Object.defineProperty(d,"value",{set:s=>{h=s,v[m].type=s,e.properties.values=[],v[m].value=[],r(e,i(e,"confidence"),"selfie_multiclass_256x256"===h),e.setSize([300,"selfie_multiclass_256x256"===h?260:500]),t.setSegSelectors(v)},get:e=>h}),Object.defineProperty(y,"value",{set:e=>{setTimeout((s=>{v[m].value=e.split(","),t.setSegSelectors(v)}),150)},get:t=>{var s;return e.properties.values=(null==(s=l.value)?void 0:s[m].value)||[],e.properties.values.join(",")}}),r(e,i(e,"confidence"),"selfie_multiclass_256x256"===h),e.setSize([300,"selfie_multiclass_256x256"===h?260:500]);const A=e.onRemoved;e.onRemoved=function(){if(A&&(null==A||A.apply(this,arguments)),void 0!==l.value.findIndex((t=>t.id==e.id))){let e=T(l.value);e.splice(m,1),t.setSegSelectors(e)}return A}},v=y({}),m=async e=>{var s,l,o,r;await n(1);const u=i(e,"mode"),d=i(e,"model_type"),c=(null==(s=e.properties.values)?void 0:s.length)>0?e.properties.values:[];let p=T(a.value);p.push({id:e.id,type:d.value,mode:u.value,value:c,show:!1});const m=p.length-1;await t.setSliderControls(p);let g=null==(r=null==(o=null==(l=v.value[e.id])?void 0:l._)?void 0:o.vnode)?void 0:r.el;if(!g)return;let y=e.addDOMWidget("values","btn",g);e.properties.values||e.setProperty("values",[]),Object.defineProperty(y,"value",{set:function(){},get:t=>{var s;const l=(null==(s=a.value)?void 0:s[m].value)||[];return e.properties.values=l.map(((e,t)=>`${t}:${e.value}`)),e.properties.values.join(",")}}),e.setSize("sdxl"==d.value?[375,320]:[455,320]),d.callback=s=>{p=T(a.value),p[m].type!=s&&(e.setSize("sdxl"==s?[375,320]:[455,320]),p[m].value=[],p[m].type=s,t.setSliderControls(p))};const h=e.onRemoved;e.onRemoved=function(){if(h&&(null==h||h.apply(this,arguments)),void 0!==a.value.findIndex((t=>t.id==e.id))){let e=T(a.value);e.splice(m,1),t.setSliderControls(e)}return h}};return N((e=>{o.registerExtension({name:"Comfy.EasyUse.Components",async beforeRegisterNodeDef(e,t){const s=e.prototype.onNodeCreated;"easy stylesSelector"==t.name&&(e.prototype.onNodeCreated=async function(){return s&&(null==s||s.apply(this,arguments)),await d(this),s}),"easy humanSegmentation"==t.name&&(e.prototype.onNodeCreated=async function(){return s&&(null==s||s.apply(this,arguments)),await p(this),s}),"easy sliderControl"==t.name&&(e.prototype.onNodeCreated=async function(){return s&&(null==s||s.apply(this,arguments)),await m(this),s}),"easy poseEditor"==t.name&&(e.prototype.onNodeCreated=async function(){s&&(null==s||s.apply(this,arguments));const e=document.createElement("div");return e.className="comfyui-easyuse-poseEditor",e.innerHTML='
This node is about to be removed, you can use ComfyUI_Custom_Nodes_AlekPet to replace it.
',this.addDOMWidget("editor","btn",e),s})}})})),(e,o)=>(f(),w(S,null,[(f(!0),w(S,null,_(C(s),((e,l)=>(f(),Q(de,{ref_for:!0,ref:t=>{t&&(u.value[e.id]=t)},type:e.type,key:l,id:e.id,show:e.show,selectedStyles:e.value,onChooseStyle:e=>((e,l)=>{let a=T(s.value);a[l].value=e,t.setSelectors(a)})(e,l)},null,8,["type","id","show","selectedStyles","onChooseStyle"])))),128)),(f(!0),w(S,null,_(C(l),((e,s)=>(f(),Q(ge,{ref_for:!0,ref:t=>{t&&(c.value[e.id]=t)},type:e.type,key:s,id:e.id,show:e.show,selected:e.value,onSelect:e=>((e,s)=>{let a=T(l.value);a[s].value=e,t.setSegSelectors(a)})(e,s)},null,8,["type","id","show","selected","onSelect"])))),128)),(f(!0),w(S,null,_(C(a),((e,s)=>(f(),Q(we,{ref_for:!0,ref:t=>{t&&(v.value[e.id]=t)},type:e.type,key:s,id:e.id,show:e.show,mode:e.mode,values:e.value,onChangeValues:e=>((e,s)=>{let l=T(a.value);l[s].value=e,t.setSliderControls(l)})(e,s),onShowSlider:e=>(e=>{let s=T(a.value);s[e].show=!0,t.setSliderControls(s)})(s)},null,8,["type","id","show","mode","values","onChangeValues","onShowSlider"])))),128))],64))}},xe={class:"no-result-placeholder"},Me={class:"no-result-placeholder-content"},Ee={key:0},be={__name:"noResultsPlaceholder",props:{icon:{type:String,default:"",required:!1},iconSize:{type:String,default:"3rem",required:!1},title:{type:String,required:!0},message:{type:String,required:!1},buttonLabel:{type:String,default:"",required:!1}},emits:["action"],setup:e=>(t,s)=>(f(),w("div",xe,[z(C(G),null,{content:j((()=>[x("div",Me,[x("i",{class:M(e.icon),style:H({"font-size":e.iconSize,"margin-bottom":".5rem"})},null,6),x("h3",null,B(e.title),1),e.message?(f(),w("p",Ee,B(e.message),1)):I("",!0),e.buttonLabel?(f(),Q(C(P),{key:1,label:e.buttonLabel,onClick:s[0]||(s[0]=e=>t.$emit("action")),class:"p-button-text"},null,8,["label"])):I("",!0)])])),_:1})]))},Ce={class:"left flex-1"},_e={key:1,class:"edit"},ke={key:2,class:"label"},Be={class:"right toolbar"},Ie={key:0,class:"nodes"},Ne={__name:"group",props:{item:{type:Object,default:{}}},emits:["mousedown","mouseup","changeMode"],setup(e){const t=e,s=u(),l=y(!1),a=y(null),n=y(""),i=e=>{var l,a;let n=t.item;if(!(null==(l=n.info)?void 0:l.is_edit)&&(null==(a=n.children)?void 0:a.length)>0){let e=o.canvas.graph._groups.find((e=>e.pos[0]==n.info.pos[0]&&e.pos[1]==n.info.pos[1]));e&&(e.show_nodes=!e.show_nodes,s.setGroups(o.canvas.graph._groups))}},r=async()=>{let e=t.item,a=o.canvas.graph._groups.find((t=>t.pos[0]==e.info.pos[0]&&t.pos[1]==e.info.pos[1]));a?(a.is_edit=!1,a.title=n.value,await s.setGroups(o.canvas.graph._groups),l.value=!1):l.value=!1};return(u,c)=>{var p,v,m;return f(),w(S,null,[x("div",{class:M("comfyui-easyuse-map-nodes-group"),onClick:i},[x("div",Ce,[e.item.children?(f(),w("i",{key:0,class:M(["icon",e.item.info.show_nodes?"pi pi-folder-open":"pi pi-folder"]),style:H({color:e.item.info.color})},null,6)):I("",!0),(null==(p=e.item.info)?void 0:p.is_edit)?(f(),w("div",_e,[z(C(W),{ref_key:"modifyRef",ref:a,modelValue:n.value,"onUpdate:modelValue":c[0]||(c[0]=e=>n.value=e),variant:"outline",size:"small",type:"text",onBlur:r,onKeydown:[D(r,["enter"]),D(r,["esc"])],style:{width:"100%"}},null,8,["modelValue"])])):(f(),w("div",ke,[x("span",{onDblclick:c[1]||(c[1]=k((i=>(async()=>{var e,i;if(l.value)return;let r=t.item,u=o.canvas.graph._groups.find((e=>e.pos[0]==r.info.pos[0]&&e.pos[1]==r.info.pos[1]));u&&(u.is_edit=!u.is_edit,n.value=u.is_edit?r.info.title:"",await s.setGroups(o.canvas.graph._groups),l.value=!0,null==(i=null==(e=a.value)?void 0:e[0])||i.$el.focus())})(e.item)),["stop"]))},B(e.item.info.title),33)]))]),x("div",Be,[(null==(v=e.item.children)?void 0:v.length)>0?(f(),Q(C(P),{key:0,size:"small",icon:e.item.children.find((e=>e.mode==C(d).ALWAYS))?"pi pi-eye":"pi pi-eye-slash",text:"",rounded:"",severity:"secondary",onClick:c[2]||(c[2]=k((e=>u.$emit("changeMode")),["stop"])),onMousedown:c[3]||(c[3]=k((e=>u.$emit("mousedown")),["stop"])),onMouseup:c[4]||(c[4]=k((e=>u.$emit("mouseup")),["stop"]))},null,8,["icon"])):I("",!0)])]),(null==(m=e.item.children)?void 0:m.length)>0&&e.item.info.show_nodes?(f(),w("div",Ie,[R(u.$slots,"default")])):I("",!0)],64)}}},He={key:1,class:"label error"},Qe={class:"right toolbar"},ze={__name:"node",props:{node:{type:Object,default:{}}},emits:["mousedown","mouseup","changeMode"],setup:e=>(t,s)=>(f(),w("div",{draggable:!1,class:M(["comfyui-easyuse-map-nodes-node",{never:void 0!==e.node.mode&&e.node.mode==C(d).NEVER},{bypass:void 0!==e.node.mode&&e.node.mode==C(d).BYPASS}])},[void 0!==e.node.title?(f(),w("span",{key:0,class:"label",onDblclick:s[0]||(s[0]=k((t=>C(c)(e.node.id)),["stop"]))},B(e.node.title),33)):(f(),w("span",He,B(e.node.type),1)),x("div",Qe,[z(C(P),{size:"small",icon:e.node.mode==C(d).ALWAYS?"pi pi-eye":"pi pi-eye-slash",text:"",rounded:"",severity:"secondary",onClick:s[1]||(s[1]=k((e=>t.$emit("changeMode")),["stop"])),onMousedown:s[2]||(s[2]=k((e=>t.$emit("mousedown")),["stop"])),onMouseup:s[3]||(s[3]=k((e=>t.$emit("mouseup")),["stop"]))},null,8,["icon"])])],2))},je={class:"title"},De={class:"toolbar"},Re={key:0},Le=["onDragstart","onDragend","onDragover"],Ze={key:1,class:"no_result",style:{height:"100%"}},Ye="comfyui-easyuse-map-nodes",Oe={__name:"nodesMap",emits:["handleHeader"],setup(e){const s=u(),{groups_nodes:l,groups:n}=V(s),i=y(!1),r=e=>{i.value=!i.value,o.canvas.graph._groups.forEach((e=>{e.show_nodes=i.value})),s.setGroups(o.canvas.graph._groups)};let c,v=0,m=0,g=!1;const h=(e,t=!1)=>{if(g)return void(g=!1);const l=e.children.find((e=>e.mode==d.ALWAYS)),a=e.children.map((e=>e.id));o.canvas.graph._nodes.forEach((e=>{a.includes(e.id)&&(e.mode=l?t?d.NEVER:d.BYPASS:d.ALWAYS,e.graph.change())})),s.setNodes(o.canvas.graph._nodes)},A=(e,t=!1)=>{if(g)return void(g=!1);const l=e.mode==d.ALWAYS,a=o.canvas.graph._nodes.find((t=>t.id==e.id));a&&(a.mode=l?t?d.NEVER:d.BYPASS:d.ALWAYS,a.graph.change(),s.setNodes(o.canvas.graph._nodes))},b=(e,t="group")=>{v=(new Date).getTime(),clearTimeout(c),c=setTimeout((s=>{"group"==t?h(e,!0):A(e,!0)}),500)},N=e=>{m=(new Date).getTime(),m-v>500&&(g=!0),clearTimeout(c)};let H=y(null),D=y(null);y(!1);return(e,u)=>{var d,c;return f(),w("div",{class:M(Ye)},[x("div",{class:M(Ye+"__header"),onMousedown:u[0]||(u[0]=t=>e.$emit("handleHeader",t))},[x("div",je,B(C(t)("Nodes Map",!0)),1),x("div",De,[(null==(d=C(n))?void 0:d.length)>0?E((f(),Q(C(P),{key:0,icon:i.value?"pi pi-angle-double-down":"pi pi-angle-double-up",text:"",rounded:"",severity:"secondary",onClick:k(r,["stop"]),size:"small"},null,8,["icon"])),[[C(U),i.value?C(t)("Collapse All"):C(t)("Expand All"),void 0,{top:!0}]]):I("",!0),R(e.$slots,"icon")])],34),x("div",{class:M(Ye+"__content")},[(null==(c=C(l))?void 0:c.length)>0?(f(),w("ol",Re,[(f(!0),w(S,null,_(C(l),((e,l)=>(f(),w("li",{key:l,onDragstart:e=>((e,t)=>{H.value=t,e.currentTarget.style.opacity="0.6",e.currentTarget.style.border="1px dashed yellow",e.dataTransfer.effectAllowed="move"})(e,l),onDragend:e=>(e=>{if(e.target.style.opacity="1",e.currentTarget.style.border="1px dashed transparent","Manual drag&drop sorting"!==p("EasyUse.NodesMap.Sorting"))return void a.warn(t("For drag and drop sorting, please find Nodes map sorting mode in Settings->EasyUse and change it to manual"));let l=o.canvas.graph._groups,n=l[H.value],i=l[D.value];o.canvas.graph._groups[H.value]=i,o.canvas.graph._groups[D.value]=n,s.setGroups(o.canvas.graph._groups)})(e),onDragover:e=>((e,t)=>{e.preventDefault(),e.currentIndex!=H.value&&(D.value=t)})(e,l),draggable:!0},[void 0!==e.children?(f(),Q(Ne,{key:0,item:e,onChangeMode:t=>h(e),onMousedown:t=>b(e,"group"),onMouseup:N},{default:j((()=>[(f(!0),w(S,null,_(e.children,((e,t)=>(f(),Q(ze,{key:t,node:e,onChangeMode:t=>A(e),onMousedown:t=>b(e,"node"),onMouseup:N},null,8,["node","onChangeMode","onMousedown"])))),128))])),_:2},1032,["item","onChangeMode","onMousedown"])):(f(),Q(ze,{key:1,node:e.info,onChangeMode:t=>A(e.info),onMousedown:t=>b(e.info,"node"),onMouseup:N},null,8,["node","onChangeMode","onMousedown"]))],40,Le)))),128))])):(f(),w("div",Ze,[z(be,{icon:"pi pi-sitemap",title:C(t)("No Nodes",!0),message:C(t)("No nodes found in the map",!0)},null,8,["title","message"])]))],2)])}}},Ve=[x("svg",{class:"icon",t:"1714565543756",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"22538",width:"200",height:"200"},[x("path",{d:"M871.616 64H152.384c-31.488 0-60.416 25.28-60.416 58.24v779.52c0 32.896 26.24 58.24 60.352 58.24h719.232c34.112 0 60.352-25.344 60.352-58.24V122.24c0.128-32.96-28.8-58.24-60.288-58.24zM286.272 512c-23.616 0-44.672-20.224-44.672-43.008 0-22.784 20.992-43.008 44.608-43.008 23.616 0 44.608 20.224 44.608 43.008A43.328 43.328 0 0 1 286.272 512z m0-202.496c-23.616 0-44.608-20.224-44.608-43.008 0-22.784 20.992-43.008 44.608-43.008 23.616 0 44.608 20.224 44.608 43.008a43.456 43.456 0 0 1-44.608 43.008zM737.728 512H435.904c-23.68 0-44.672-20.224-44.672-43.008 0-22.784 20.992-43.008 44.608-43.008h299.264c23.616 0 44.608 20.224 44.608 43.008a42.752 42.752 0 0 1-41.984 43.008z m0-202.496H435.904c-23.616 0-44.608-20.224-44.608-43.008 0-22.784 20.992-43.008 44.608-43.008h299.264c23.616 0 44.608 20.224 44.608 43.008a42.88 42.88 0 0 1-42.048 43.008z","p-id":"22539",fill:"currentColor"})],-1)],Pe=[x("svg",{class:"icon",t:"1714565020764",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"7999",width:"200",height:"200"},[x("path",{d:"M810.438503 379.664884l-71.187166-12.777183C737.426025 180.705882 542.117647 14.602496 532.991087 7.301248c-12.777184-10.951872-32.855615-10.951872-47.45811 0-9.12656 7.301248-204.434938 175.229947-206.26025 359.586453l-67.536542 10.951871c-18.253119 3.650624-31.030303 18.253119-31.030303 36.506239v189.832442c0 10.951872 5.475936 21.903743 12.777184 27.379679 7.301248 5.475936 14.602496 9.12656 23.729055 9.12656h5.475936l133.247772-23.729055c40.156863 47.458111 91.265597 73.012478 151.500891 73.012477 60.235294 0 111.344029-27.379679 151.500891-74.837789l136.898396 23.729055h5.475936c9.12656 0 16.427807-3.650624 23.729055-9.12656 9.12656-7.301248 12.777184-16.427807 12.777184-27.379679V412.520499c1.825312-14.602496-10.951872-29.204991-27.379679-32.855615zM620.606061 766.631016H401.568627c-20.078431 0-36.506239 16.427807-36.506238 36.506239v109.518716c0 14.602496 9.12656 29.204991 23.729055 34.680927 14.602496 5.475936 31.030303 1.825312 40.156863-9.126559l16.427807-18.25312 32.855615 80.313726c5.475936 14.602496 18.253119 23.729055 34.680927 23.729055 16.427807 0 27.379679-9.12656 34.680927-23.729055l32.855615-80.313726 16.427807 18.25312c10.951872 10.951872 25.554367 14.602496 40.156863 9.126559 14.602496-5.475936 23.729055-18.253119 23.729055-34.680927v-109.518716c-3.650624-20.078431-20.078431-36.506239-40.156862-36.506239z",fill:"currentColor","p-id":"8000"})],-1)],Ge="comfyui-easyuse-toolbar",We={__name:"index",setup(e){const s=u(),l=y(!1);h((e=>l.value),(e=>{e?s.watchGraph(!0):s.unwatchGraph()}));const a=y(null),o=e=>{const t=a.value;var s=e.clientX||0,l=e.clientY||0,o=t.offsetLeft,n=t.offsetTop;function i(e){var a=e.clientX,i=e.clientY,r=a-s,u=i-l;t.style.left=o+r+"px",t.style.top=n+u+"px"}document.addEventListener("mousemove",i),document.addEventListener("mouseup",(function e(){document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",e)}))};return(e,s)=>(f(),w(S,null,[x("div",{class:M(["flex-c",Ge])},[x("div",{class:M(["group flex-c",Ge+"-icon"]),onClick:s[0]||(s[0]=e=>l.value=!l.value)},Ve,2),x("div",{class:M(["rocket flex-c",Ge+"-icon"]),onClick:s[1]||(s[1]=(...e)=>C(v)&&C(v)(...e))},Pe,2)]),l.value?(f(),w("div",{key:0,ref_key:"nodesMapRef",ref:a,class:M(Ge+"-nodes-map")},[z(Oe,{onHandleHeader:o},{icon:j((()=>[E(z(C(P),{icon:"pi pi-times",text:"",rounded:"",severity:"secondary",onClick:s[2]||(s[2]=e=>l.value=!1),size:"small"},null,512),[[C(U),C(t)("Close"),void 0,{top:!0}]])])),_:1})],2)):I("",!0)],64))}},Ue={__name:"index",setup(e){const t=u();return N((e=>{t.watchGraph()})),(e,t)=>(f(),w("div",{class:M("comfyui-easyuse-map")},[z(Oe)]))}},Fe="Comfy.UseNewMenu",Te={__name:"App",setup(e){const s=y(p(Fe));return N((e=>{try{o.extensionManager.registerSidebarTab({id:m,icon:"pi pi-sitemap",title:t("Nodes Map",!0),tooltip:t("Nodes Map",!0),type:"custom",render:e=>{e.style.height="100%",L(Z(Ue,{}),e)}}),g(Fe,(e=>{s.value=e}))}catch(l){}})),(e,t)=>(f(),w(S,null,[z(Se),"Disabled"==s.value?(f(),Q(We,{key:0})):I("",!0)],64))}},Xe=null==(e=document.getElementsByClassName("graph-canvas-container"))?void 0:e[0],Je=document.createElement("div");Je.id="comfyui-easyuse-components",Xe?Xe.append(Je):document.body.append(Je);const qe=Y(Te);qe.use(X),qe.use(F()),qe.mount("#"+Je.id); +var e;import{$ as t,l as s,a as l,t as a,b as o,s as n,g as i,c as r,u,N as d,j as c,d as p,e as v,f as m,h as g}from"./assets/extensions-qfnDFtfW.js";import{r as y,w as h,e as A,b as f,c as w,I as S,d as x,F as M,C as E,J as b,K as C,L as _,M as k,z as B,G as I,o as N,N as H,D as Q,O as z,E as j,P as D,x as R,Q as L,R as Z,S as Y}from"./assets/vue-DjzFgvDF.js";import{d as O,s as V,a as P,b as G,c as W,T as U,e as F}from"./assets/vendor-DT1J-jWa.js";import{c as T}from"./assets/lodash-CZi7izHi.js";import{P as X}from"./assets/primevue-BSs2m5Wu.js";import"./assets/primeuix-Be3xdh47.js";const J=O("graphStore",{state:e=>({selectors:[],selectors_styles:{},seg_selectors:[],slider_controls:[]}),actions:{setSelectors(e){this.selectors=T(e)},setStyles(e,t){this.selectors_styles[e]||(this.selectors_styles[e]=t)},setSegSelectors(e){this.seg_selectors=T(e)},setSliderControls(e){this.slider_controls=T(e)}}}),q=["data-id"],K=[x("i",{class:"mdi mdi-trash-can"},null,-1)],$=x("i",{class:"mdi mdi-magnify"},null,-1),ee=["placeholder"],te=["onMouseenter","onMouseleave"],se=["onClick"],le=["name","checked"],ae=["src"],oe={key:0},ne=x("span",{class:"comfyui-easyuse-success"},"positive:",-1),ie={key:1},re=x("span",{class:"comfyui-easyuse-error"},"negative:",-1),ue="comfyui-easyuse-selector",de={__name:"stylesSelector",props:{id:{type:String|Number,default:""},type:{type:String,default:""},selectedStyles:{type:Array,default:[]},show:{type:Boolean,default:!1}},emits:["chooseStyle"],setup(e,{emit:o}){const n=e,i=J(),{selectors_styles:r}=V(i),u=y([]);h((e=>n.type),(async e=>{u.value=[],e&&await(async e=>{if(r.value[n.type])return!0;const s=await l.fetchApi(`/easyuse/prompt/styles?name=${e}`);if(200===s.status){let e=(await s.json()).map(((e,t)=>(e.index=t,e)));return await i.setStyles(n.type,e),!0}return a.error(t("Get styles list Failed")),!1})(e)&&c()}),{immediate:!0});const d=o,c=e=>{const t=n.selectedStyles,s=T(r.value[n.type]);u.value=s.sort(((e,t)=>e.index-t.index)).sort(((e,s)=>t.includes(s.name)-t.includes(e.name)))},p=y(""),v=e=>e.toLowerCase(),m=A({}),g=e=>{m.src="",m.name="",m.positive="",m.negative=""},N=async e=>{const t=await l.fetchApi(`/easyuse/prompt/styles/image?name=${e}&styles_name=${n.type}`);if(200===t.status){const s=await t.text();if(s.startsWith("http"))return s;return`/easyuse/prompt/styles/image?name=${e}&styles_name=${n.type}`}},H=e=>{e.target.src="data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QNLaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA5LjEtYzAwMSA3OS4xNDYyODk5Nzc3LCAyMDIzLzA2LzI1LTIzOjU3OjE0ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjUuMSAoMjAyMzA5MDUubS4yMzE2IDk3OWM4NmQpICAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjA3NEU1QzNCNUJBMTFFRUExMUVDNkZDRjI0NzlBN0QiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjA3NEU1QzRCNUJBMTFFRUExMUVDNkZDRjI0NzlBN0QiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGMDc0RTVDMUI1QkExMUVFQTExRUM2RkNGMjQ3OUE3RCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGMDc0RTVDMkI1QkExMUVFQTExRUM2RkNGMjQ3OUE3RCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv/uAA5BZG9iZQBkwAAAAAH/2wCEAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgwTExQUExMcGxsbHB8fHx8fHx8fHx8BBwcHDQwNGBAQGBoVERUaHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fH//AABEIAIAAgAMBEQACEQEDEQH/xACLAAEAAgMBAQEAAAAAAAAAAAAABAUCAwYBBwgBAQADAQEBAAAAAAAAAAAAAAABAgMEBQYQAAEEAgECAwUHAwUAAAAAAAEAAgMEEQUhEgYxEwdBYSIyFFFxgVJyIxWRoTOxwdFiJBEBAAICAQQBBAIDAAAAAAAAAAECEQMxIUESBBOB0SIyUXGCIwX/2gAMAwEAAhEDEQA/AP1SgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDXJYgj+d4afsVopM8KWvEcy8it1pXdMcjXO/Lnn+im2u0cwV2VniW1UXEBAQEBAQEBAQEBAQRNlc+mgyDh7zhv+5WunX5Sw37fCHM2dh48r06ank7N6rn2Ja7qa4hw5BBwQV010uK+/DsO29v/J68SOI86Jxjl95HIP4gryPc0fHfHaXu+j7Py68zzHSVquV2iAgICAgICAgICDyTr6HdHz4PTnwypjnqic46OauNbY6mGX99p+L8w9xaeV6OufHt0eXtr59M9VFb194E9LmuH3kf6rv17avO2ets7YVcuuuk/uOa3PgBlxP4BdMbq9nLPqbJ5xDbSM9azFXpyujuSO+Bo5kcf0NPyj25We2YtEzaPxdfr6519Kz+UvqEIlELBKQZQ0eYRwC7HOPxXzVsZ6cPpK5x15ZKEiAgICAgICAgICCNc1tG40CzA2XHg4j4h9zhyFpr22p+s4Z7NNL/ALRlTX+1dVFBJOJrcTI2lxZHYcBx+sldWv3bzOMVn6fZy39OkRnNo+v3aoOx9JOxks8tqwHDPS+1IW8+IzGWZVrf9DZHSMR/j9yvo656zMz9V1rdLqdYwsoVIqwd87mNAc79Tvmd+JXJt332ftMy6temlP1jCasmggICAgICAgICAgwlmiib1SPDB7zhWrWZ4VtaI5QXb2l5ojYHvLjjIGB/dbR61sZlhPtVziFb3PYdd0luCvAZbXludVZ1huZQPgyTx4/atvWj4rxaZ6d/6Ye1/t1zSI6zx/bzti5YqaOpBeg8u41n/oa14cA4ccH7lPs1jZebVn8eyPUtOrXFbR+XdYx9xa90pjeXROaSCXDj+oysZ9S+Mx1bR7uvOJ6LGOWKVgfG8PafAtOQueazHLqraJjMMlCRAQEBAQEBAQRLNp4HTFx/2/4WtKR3Y32T2Udl8j3knk/aeSu6kREPPvaZlpY3DmyY8DyrzPZWv8tkvmFv7bg12RyR1DGeeMj2KnjE9JaeUx1hi1sgaet/U7JIOMcE8Dj7FMREcK2zPKMasr5XO6fmOVt5xEOadVplYU45IAOhxa72kLm2TFuXXqrNeF1WtlwDZeHfmHguO+vHDupszylLJsICAgICAg8cMjCQiYR5IVpFmc1Q5qLXHPgfbhbV2MLaYlqNQAYA4V/kV+PDA1fcp81fjYurtYMu4CmLZRNYhtZWBAI8CqzdaKN8df3LObtIokxwe5ZzZrFUloIGFnLWHqhIgICAgICAgxMbSpyjDAwAq3kr4MTWCnzR4MX02PGHDISNmETqieWba7QABwB4KJumKNgjaFXK0VZYChYQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEHzvuv1G7k1W9s6/Xamtaq15oaonmnsCR008HntaI4K8/s4HOeEGXZXqTud7uqtG7r6kNa5HdMU9aaw9zZde+FkrHsnr1+M2MZBPIKDRe9cO2K2mjs/V0m7X61lWzq32W+ZFEbfkSSO4B+GL9zw4QWm99TqFVmjsaSu7fUtxeNM2aTmSMBbHI9zWHqHVJlnDTxjPKCJL6sea502t1D7Ouhr0rNqxNM2CSNuwnkgjAi6ZOotdEc/Egibf1j/j+7JNL9DWdWg84TWn2ywtdFKyMZb5Tg0nLyG55x48IJ3bXqe/ea/a26dFtyTXtldDUqyOdNL5VqaDHS5gwXRxMe3xz1Y9iDKP1Sa7uefUnR7TyYqUVoEU5jY6pJZIz1RY4ZiMYd7TkexBA749Wr2gtCKlrIpGs17NjK29LLWmPmMsyiFkbIZsPEdKQu6y0eAQWdD1E2L93W1tzRyCDY3paev2NaxVlhIjidMfMb5vmse1kbi9pZ7MeKDt0BAQEBAQfEPU+lFY2++q2K1uSSezTnrReVsTTmiZVYHOd9LVuQyubIwANkbxz4FA7FsQ0NrrLNXX7N0eo1+3darGDYPjb5j6prxVRajjDetsRAjj4yM4CDre2uxO7q2hqtm7nua6w9rp5tfXgoSxwyTOMr42PlrPe4Nc8jJJQRDb3Oz1fYFrcV7As0mu3u7nbWkBZ9LSfG5nlxs/yySWRiNozwcBBx9EXadGTXz62+LG41+jZS6adhzS6vfnlkEjgzEZax7T8ePFBu3nbPdUXqJZsw6S5cqbCW1YdIY2lxhhfEGMjfHtoG9HxucwPEZy4/A7kMC87aq2Kmv7mdvxuqGmklFjUU4G2Yp21rdyW00t+kJkFl88pY9vDgwNDvEoK9np73FBcHdkrt2+rZd5FjQx7O0b8WvbzDKZhN1SSse573QdeAHkN+Ichj3p2rBvZq9vUnY2tcNQPqpZYZpJ44GxXqzHdVlzZZpib73mLHViI85c1BZ6OpsIe/6/XSuntevdsz6+8+pI0/yM1dtWVr2Z644P8rmyuj6S53jxkh9aQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBB/9k="};return(l,a)=>(f(),w("div",{class:M(ue+` ${ue}-styles`),"data-id":e.id,onMouseleave:g},[u.value.length>0&&e.show?(f(),w(S,{key:0},[x("div",{class:M(ue+"__header")},[x("div",{class:M(ue+"__header_button"),onClick:a[0]||(a[0]=e=>(d("chooseStyle",[]),void(p.value="")))},K,2),x("div",{class:M(ue+"__header_search")},[$,E(x("textarea",{class:"search","onUpdate:modelValue":a[1]||(a[1]=e=>p.value=e),dir:"ltr",rows:1,placeholder:C(t)("Type here to search styles ...")},null,8,ee),[[b,p.value]])],2)],2),x("div",{class:M(ue+"__content"),onMouseleave:c},[(f(!0),w(S,null,_(u.value,((t,l)=>(f(),w("div",{class:M(ue+"-item"),key:l,onMouseenter:e=>(async e=>{if(!e.imageSrc){if(e.imageLoading)return;e.imageLoading=!0;const t=await N(e.imgName).finally((()=>e.imageLoading=!1));e.imageSrc=t}m.name="zh-CN"==s&&e.name_cn?e.name_cn:e.name,m.positive=e.prompt,m.negative=e.negative_prompt,m.src=e.imageSrc})(t),onMouseleave:k((e=>g()),["stop"])},[x("span",{class:M([ue+"-item__tag",{hide:!(e.selectedStyles.includes(t.name)||-1!=v(t.name).indexOf(v(p.value))||t.name_cn&&-1!=v(t.name_cn).indexOf(v(p.value)))}]),onClick:e=>(e=>{let t=n.selectedStyles;t.includes(e.name)?t=t.filter((t=>t!==e.name)):t.push(e.name),d("chooseStyle",t)})(t)},[x("input",{type:"checkbox",name:t.name,checked:e.selectedStyles.includes(t.name)},null,8,le),x("span",null,B("zh-CN"==C(s)&&t.name_cn?t.name_cn:t.name),1)],10,se)],42,te)))),128))],34),(null==m?void 0:m.src)?(f(),w("div",{key:0,class:M(ue+"-preview")},[x("img",{src:m.src,ref:"image",alt:"preview",onError:H},null,40,ae),x("div",{class:M(ue+"-preview__text")},[x("b",null,B(m.name),1),x("div",{class:M(ue+"-preview__prompt")},[m.positive?(f(),w("h6",oe,[ne,x("span",null,B(m.positive),1)])):I("",!0),m.negative?(f(),w("h6",ie,[re,x("span",null,B(m.negative),1)])):I("",!0)],2)],2)],2)):I("",!0)],64)):I("",!0)],42,q))}},ce=["data-id"],pe=["onClick"],ve=["name","checked"],me="comfyui-easyuse-selector",ge={__name:"segSelector",props:{id:{type:String|Number,default:""},type:{type:String,default:""},selected:{type:Array,default:[]},show:{type:Boolean,default:!1}},emits:["select"],setup(e,{emit:s}){const l=e,a=y([]);h((e=>l.type),(async e=>{switch(e){case"selfie_multiclass_256x256":a.value=["Background","Hair","Body","Face","Clothes","Others"];break;case"human_parsing_lip":a.value=["Background","Hat","Hair","Glove","Sunglasses","Upper-clothes","Dress","Coat","Socks","Pants","Jumpsuits","Scarf","Skirt","Face","Left-arm","Right-arm","Left-leg","Right-leg","Left-shoe","Right-shoe"]}}),{immediate:!0});const o=s;return(s,n)=>{var i;return f(),w("div",{class:M(me+` ${me}-seg`),"data-id":e.id},[(null==(i=a.value)?void 0:i.length)>0&&e.show?(f(!0),w(S,{key:0},_(a.value,((s,a)=>(f(),w("div",{class:M(me+"-item"),key:a},[x("span",{class:M(me+"-item__tag"),onClick:e=>(e=>{let t=T(l.selected);t.includes(e)?t=t.filter((t=>t!==e)):t.push(e),o("select",t)})(a)},[x("input",{type:"checkbox",name:s,checked:e.selected.includes(a)},null,8,ve),x("span",null,B(C(t)(s)),1)],10,pe)],2)))),128)):I("",!0)],10,ce)}}},ye=["data-id"],he=["onMousedown","onDblclick"],Ae="comfyui-easyuse-slider",fe="ipadapter layer weights",we={__name:"sliderControl",props:{id:{type:String|Number,default:""},mode:{type:String,default:""},type:{type:String,default:""},values:{type:Array,default:[]},show:{type:Boolean,default:!1}},emits:["changeValues","showSlider"],setup(e,{emit:t}){const s=e,l=t,a=(e,t,s)=>(e-t)/(s-t)*100,o=(e,t,l=void 0)=>{if(s.mode===fe){let s={3:2.5,6:1}[t]||0;return{default:12==e?s:0,min:-1,max:3,step:.05,value:void 0!==l?l:12==e?s:0,top:void 0!==l?100-a(l,-1,3)+"%":null,height:void 0!==l?a(l,-1,3)+"%":null}}};h((e=>s.mode),(async(e,t)=>{var a;if(e!==t&&e===fe)if(!t&&(null==(a=s.values)?void 0:a.length)>0){const e=s.values.map((e=>{const t=e.split(":");return o(s.values.length,t[0],parseFloat(t[1]))}));await l("changeValues",e)}else{let e="sd1"==s.type?16:12,t=Array.from({length:e},((t,s)=>o(e,s)));await l("changeValues",t)}l("showSlider")}),{immediate:!0}),h((e=>s.type),((e,t)=>{if(e!=t&&s.mode==fe){let e="sd1"==s.type?16:12,t=Array.from({length:e},((t,s)=>o(e,s)));l("changeValues",t)}}));const n=y(null),i=y(null);return N((()=>{document.onmouseup=e=>document.onmousemove=null})),(t,o)=>{var r;return f(),w("div",{class:M(Ae),"data-id":e.id},[(null==(r=e.values)?void 0:r.length)>0&&e.show?(f(!0),w(S,{key:0},_(e.values,((t,o)=>(f(),w("div",{class:M([Ae+"-item",{positive:3==o&&"sdxl"==e.type&&e.mode==fe},{negative:6==o&&"sdxl"==e.type&&e.mode==fe}]),key:o},[x("div",{class:M(Ae+"-item-input")},B(t.value),3),x("div",{class:M(Ae+"-item-scroll"),ref_for:!0,ref_key:"scroll",ref:n},[x("div",{class:M(Ae+"-item-bar"),ref_for:!0,ref_key:"bar",ref:i,style:H({top:t.top||100-a(t.default,t.min,t.max)+"%"}),onMousedown:e=>((e,t,a)=>{let o=e||window.event,r=n.value[a],u=i.value[a],d=T(s.values),c=o.clientY-u.offsetTop;document.onmousemove=e=>{let s=(e||window.event).clientY-c;s<0?s=0:s>r.offsetHeight-u.offsetHeight&&(s=r.offsetHeight-u.offsetHeight);let o=(t.max-t.min)/t.step,n=(r.offsetHeight-u.offsetHeight)/o;s=Math.round(s/n)*n;const i=Math.floor(s/(r.offsetHeight-u.offsetHeight)*100)+"%",p=Math.floor((r.offsetHeight-u.offsetHeight-s)/(r.offsetHeight-u.offsetHeight)*100)+"%",v=parseFloat(parseFloat(t.max-(t.max-t.min)*(s/(r.offsetHeight-u.offsetHeight))).toFixed(2));d[a]={...d[a],top:i,height:p,value:v},l("changeValues",d),window.getSelection?window.getSelection().removeAllRanges():document.selection.empty()}})(e,t,o),onDblclick:e=>((e,t,a)=>{let o=T(s.values);o[a]={...o[a],top:null,height:null,value:t.default},l("changeValues",o)})(0,t,o)},null,46,he),x("div",{class:M(Ae+"-item-area"),style:H({height:t.height||a(t.default,t.min,t.max)+"%"})},null,6)],2),x("div",{class:M(Ae+"-item-label")},[x("span",null,B(t.label),1)],2)],2)))),128)):I("",!0)],8,ye)}}},Se={__name:"index",setup(e){const t=J(),{selectors:s,seg_selectors:l,slider_controls:a}=V(t),u=y({}),d=async e=>{var l,a,o,r,d,c;await n(1);const p=i(e,"styles"),v=(null==(l=e.properties.values)?void 0:l.length)>0?e.properties.values:[];let m=T(s.value);m.push({id:e.id,type:p.value,value:v,show:!1});const g=m.length-1;await t.setSelectors(m);let y=null==(r=null==(o=null==(a=u.value[e.id])?void 0:a._)?void 0:o.vnode)?void 0:r.el;if(!y)return;let h=e.addDOMWidget("select_styles","btn",y);e.properties.values||e.setProperty("values",[]),m[g].show=!0,await t.setSelectors(m);let A=p.value;Object.defineProperty(p,"value",{set:s=>{A=s,m[g].type=s,e.properties.values=[],m[g].value=[],t.setSelectors(m)},get:e=>A}),Object.defineProperty(h,"value",{set:e=>{setTimeout((s=>{m[g].value=e.split(","),t.setSelectors(m)}),150)},get:t=>{var l,a;return e.properties.values=(null==(a=null==(l=s.value)?void 0:l[g])?void 0:a.value)||[],e.properties.values.join(",")}}),((null==(d=e.size)?void 0:d[0])<150||(null==(c=e.size)?void 0:c[1])<150)&&e.setSize([425,500]);const f=e.onRemoved;e.onRemoved=function(){if(f&&(null==f||f.apply(this,arguments)),void 0!==s.value.findIndex((t=>t.id==e.id))){let e=T(s.value);e.splice(g,1),t.setSelectors(e)}return f}},c=y({}),p=async e=>{var s,a,o,u;await n(1);const d=i(e,"method"),p=(null==(s=e.properties.values)?void 0:s.length)>0?e.properties.values:[];let v=T(l.value);v.push({id:e.id,type:d.value,value:p,show:!1});const m=v.length-1;await t.setSegSelectors(v);let g=null==(u=null==(o=null==(a=c.value[e.id])?void 0:a._)?void 0:o.vnode)?void 0:u.el;if(!g)return;let y=e.addDOMWidget("mask_components","btn",g);e.properties.values||e.setProperty("values",[]),v[m].show=!0,await t.setSegSelectors(v);let h=d.value;Object.defineProperty(d,"value",{set:s=>{h=s,v[m].type=s,e.properties.values=[],v[m].value=[],r(e,i(e,"confidence"),"selfie_multiclass_256x256"===h),e.setSize([300,"selfie_multiclass_256x256"===h?260:500]),t.setSegSelectors(v)},get:e=>h}),Object.defineProperty(y,"value",{set:e=>{setTimeout((s=>{v[m].value=e.split(","),t.setSegSelectors(v)}),150)},get:t=>{var s;return e.properties.values=(null==(s=l.value)?void 0:s[m].value)||[],e.properties.values.join(",")}}),r(e,i(e,"confidence"),"selfie_multiclass_256x256"===h),e.setSize([300,"selfie_multiclass_256x256"===h?260:500]);const A=e.onRemoved;e.onRemoved=function(){if(A&&(null==A||A.apply(this,arguments)),void 0!==l.value.findIndex((t=>t.id==e.id))){let e=T(l.value);e.splice(m,1),t.setSegSelectors(e)}return A}},v=y({}),m=async e=>{var s,l,o,r;await n(1);const u=i(e,"mode"),d=i(e,"model_type"),c=(null==(s=e.properties.values)?void 0:s.length)>0?e.properties.values:[];let p=T(a.value);p.push({id:e.id,type:d.value,mode:u.value,value:c,show:!1});const m=p.length-1;await t.setSliderControls(p);let g=null==(r=null==(o=null==(l=v.value[e.id])?void 0:l._)?void 0:o.vnode)?void 0:r.el;if(!g)return;let y=e.addDOMWidget("values","btn",g);e.properties.values||e.setProperty("values",[]),Object.defineProperty(y,"value",{set:function(){},get:t=>{var s;const l=(null==(s=a.value)?void 0:s[m].value)||[];return e.properties.values=l.map(((e,t)=>`${t}:${e.value}`)),e.properties.values.join(",")}}),e.setSize("sdxl"==d.value?[375,320]:[455,320]),d.callback=s=>{p=T(a.value),p[m].type!=s&&(e.setSize("sdxl"==s?[375,320]:[455,320]),p[m].value=[],p[m].type=s,t.setSliderControls(p))};const h=e.onRemoved;e.onRemoved=function(){if(h&&(null==h||h.apply(this,arguments)),void 0!==a.value.findIndex((t=>t.id==e.id))){let e=T(a.value);e.splice(m,1),t.setSliderControls(e)}return h}};return N((e=>{o.registerExtension({name:"Comfy.EasyUse.Components",async beforeRegisterNodeDef(e,t){const s=e.prototype.onNodeCreated;"easy stylesSelector"==t.name&&(e.prototype.onNodeCreated=async function(){return s&&(null==s||s.apply(this,arguments)),await d(this),s}),"easy humanSegmentation"==t.name&&(e.prototype.onNodeCreated=async function(){return s&&(null==s||s.apply(this,arguments)),await p(this),s}),"easy sliderControl"==t.name&&(e.prototype.onNodeCreated=async function(){return s&&(null==s||s.apply(this,arguments)),await m(this),s}),"easy poseEditor"==t.name&&(e.prototype.onNodeCreated=async function(){s&&(null==s||s.apply(this,arguments));const e=document.createElement("div");return e.className="comfyui-easyuse-poseEditor",e.innerHTML='
This node is about to be removed, you can use ComfyUI_Custom_Nodes_AlekPet to replace it.
',this.addDOMWidget("editor","btn",e),s})}})})),(e,o)=>(f(),w(S,null,[(f(!0),w(S,null,_(C(s),((e,l)=>(f(),Q(de,{ref_for:!0,ref:t=>{t&&(u.value[e.id]=t)},type:e.type,key:l,id:e.id,show:e.show,selectedStyles:e.value,onChooseStyle:e=>((e,l)=>{let a=T(s.value);a[l].value=e,t.setSelectors(a)})(e,l)},null,8,["type","id","show","selectedStyles","onChooseStyle"])))),128)),(f(!0),w(S,null,_(C(l),((e,s)=>(f(),Q(ge,{ref_for:!0,ref:t=>{t&&(c.value[e.id]=t)},type:e.type,key:s,id:e.id,show:e.show,selected:e.value,onSelect:e=>((e,s)=>{let a=T(l.value);a[s].value=e,t.setSegSelectors(a)})(e,s)},null,8,["type","id","show","selected","onSelect"])))),128)),(f(!0),w(S,null,_(C(a),((e,s)=>(f(),Q(we,{ref_for:!0,ref:t=>{t&&(v.value[e.id]=t)},type:e.type,key:s,id:e.id,show:e.show,mode:e.mode,values:e.value,onChangeValues:e=>((e,s)=>{let l=T(a.value);l[s].value=e,t.setSliderControls(l)})(e,s),onShowSlider:e=>(e=>{let s=T(a.value);s[e].show=!0,t.setSliderControls(s)})(s)},null,8,["type","id","show","mode","values","onChangeValues","onShowSlider"])))),128))],64))}},xe={class:"no-result-placeholder"},Me={class:"no-result-placeholder-content"},Ee={key:0},be={__name:"noResultsPlaceholder",props:{icon:{type:String,default:"",required:!1},iconSize:{type:String,default:"3rem",required:!1},title:{type:String,required:!0},message:{type:String,required:!1},buttonLabel:{type:String,default:"",required:!1}},emits:["action"],setup:e=>(t,s)=>(f(),w("div",xe,[z(C(G),null,{content:j((()=>[x("div",Me,[x("i",{class:M(e.icon),style:H({"font-size":e.iconSize,"margin-bottom":".5rem"})},null,6),x("h3",null,B(e.title),1),e.message?(f(),w("p",Ee,B(e.message),1)):I("",!0),e.buttonLabel?(f(),Q(C(P),{key:1,label:e.buttonLabel,onClick:s[0]||(s[0]=e=>t.$emit("action")),class:"p-button-text"},null,8,["label"])):I("",!0)])])),_:1})]))},Ce={class:"left flex-1"},_e={key:1,class:"edit"},ke={key:2,class:"label"},Be={class:"right toolbar"},Ie={key:0,class:"nodes"},Ne={__name:"group",props:{item:{type:Object,default:{}}},emits:["mousedown","mouseup","changeMode"],setup(e){const t=e,s=u(),l=y(!1),a=y(null),n=y(""),i=e=>{var l,a;let n=t.item;if(!(null==(l=n.info)?void 0:l.is_edit)&&(null==(a=n.children)?void 0:a.length)>0){let e=o.canvas.graph._groups.find((e=>e.pos[0]==n.info.pos[0]&&e.pos[1]==n.info.pos[1]));e&&(e.show_nodes=!e.show_nodes,s.setGroups(o.canvas.graph._groups))}},r=async()=>{let e=t.item,a=o.canvas.graph._groups.find((t=>t.pos[0]==e.info.pos[0]&&t.pos[1]==e.info.pos[1]));a?(a.is_edit=!1,a.title=n.value,await s.setGroups(o.canvas.graph._groups),l.value=!1):l.value=!1};return(u,c)=>{var p,v,m;return f(),w(S,null,[x("div",{class:M("comfyui-easyuse-map-nodes-group"),onClick:i},[x("div",Ce,[e.item.children?(f(),w("i",{key:0,class:M(["icon",e.item.info.show_nodes?"pi pi-folder-open":"pi pi-folder"]),style:H({color:e.item.info.color})},null,6)):I("",!0),(null==(p=e.item.info)?void 0:p.is_edit)?(f(),w("div",_e,[z(C(W),{ref_key:"modifyRef",ref:a,modelValue:n.value,"onUpdate:modelValue":c[0]||(c[0]=e=>n.value=e),variant:"outline",size:"small",type:"text",onBlur:r,onKeydown:[D(r,["enter"]),D(r,["esc"])],style:{width:"100%"}},null,8,["modelValue"])])):(f(),w("div",ke,[x("span",{onDblclick:c[1]||(c[1]=k((i=>(async()=>{var e,i;if(l.value)return;let r=t.item,u=o.canvas.graph._groups.find((e=>e.pos[0]==r.info.pos[0]&&e.pos[1]==r.info.pos[1]));u&&(u.is_edit=!u.is_edit,n.value=u.is_edit?r.info.title:"",await s.setGroups(o.canvas.graph._groups),l.value=!0,null==(i=null==(e=a.value)?void 0:e[0])||i.$el.focus())})(e.item)),["stop"]))},B(e.item.info.title),33)]))]),x("div",Be,[(null==(v=e.item.children)?void 0:v.length)>0?(f(),Q(C(P),{key:0,size:"small",icon:e.item.children.find((e=>e.mode==C(d).ALWAYS))?"pi pi-eye":"pi pi-eye-slash",text:"",rounded:"",severity:"secondary",onClick:c[2]||(c[2]=k((e=>u.$emit("changeMode")),["stop"])),onMousedown:c[3]||(c[3]=k((e=>u.$emit("mousedown")),["stop"])),onMouseup:c[4]||(c[4]=k((e=>u.$emit("mouseup")),["stop"]))},null,8,["icon"])):I("",!0)])]),(null==(m=e.item.children)?void 0:m.length)>0&&e.item.info.show_nodes?(f(),w("div",Ie,[R(u.$slots,"default")])):I("",!0)],64)}}},He={key:1,class:"label error"},Qe={class:"right toolbar"},ze={__name:"node",props:{node:{type:Object,default:{}}},emits:["mousedown","mouseup","changeMode"],setup:e=>(t,s)=>(f(),w("div",{draggable:!1,class:M(["comfyui-easyuse-map-nodes-node",{never:void 0!==e.node.mode&&e.node.mode==C(d).NEVER},{bypass:void 0!==e.node.mode&&e.node.mode==C(d).BYPASS}])},[void 0!==e.node.title?(f(),w("span",{key:0,class:"label",onDblclick:s[0]||(s[0]=k((t=>C(c)(e.node.id)),["stop"]))},B(e.node.title),33)):(f(),w("span",He,B(e.node.type),1)),x("div",Qe,[z(C(P),{size:"small",icon:e.node.mode==C(d).ALWAYS?"pi pi-eye":"pi pi-eye-slash",text:"",rounded:"",severity:"secondary",onClick:s[1]||(s[1]=k((e=>t.$emit("changeMode")),["stop"])),onMousedown:s[2]||(s[2]=k((e=>t.$emit("mousedown")),["stop"])),onMouseup:s[3]||(s[3]=k((e=>t.$emit("mouseup")),["stop"]))},null,8,["icon"])])],2))},je={class:"title"},De={class:"toolbar"},Re={key:0},Le=["onDragstart","onDragend","onDragover"],Ze={key:1,class:"no_result",style:{height:"100%"}},Ye="comfyui-easyuse-map-nodes",Oe={__name:"nodesMap",emits:["handleHeader"],setup(e){const s=u(),{groups_nodes:l,groups:n}=V(s),i=y(!1),r=e=>{i.value=!i.value,o.canvas.graph._groups.forEach((e=>{e.show_nodes=i.value})),s.setGroups(o.canvas.graph._groups)};let c,v=0,m=0,g=!1;const h=(e,t=!1)=>{if(g)return void(g=!1);const l=e.children.find((e=>e.mode==d.ALWAYS)),a=e.children.map((e=>e.id));o.canvas.graph._nodes.forEach((e=>{a.includes(e.id)&&(e.mode=l?t?d.NEVER:d.BYPASS:d.ALWAYS,e.graph.change())})),s.setNodes(o.canvas.graph._nodes)},A=(e,t=!1)=>{if(g)return void(g=!1);const l=e.mode==d.ALWAYS,a=o.canvas.graph._nodes.find((t=>t.id==e.id));a&&(a.mode=l?t?d.NEVER:d.BYPASS:d.ALWAYS,a.graph.change(),s.setNodes(o.canvas.graph._nodes))},b=(e,t="group")=>{v=(new Date).getTime(),clearTimeout(c),c=setTimeout((s=>{"group"==t?h(e,!0):A(e,!0)}),500)},N=e=>{m=(new Date).getTime(),m-v>500&&(g=!0),clearTimeout(c)};let H=y(null),D=y(null);y(!1);return(e,u)=>{var d,c;return f(),w("div",{class:M(Ye)},[x("div",{class:M(Ye+"__header"),onMousedown:u[0]||(u[0]=t=>e.$emit("handleHeader",t))},[x("div",je,B(C(t)("Nodes Map",!0)),1),x("div",De,[(null==(d=C(n))?void 0:d.length)>0?E((f(),Q(C(P),{key:0,icon:i.value?"pi pi-angle-double-down":"pi pi-angle-double-up",text:"",rounded:"",severity:"secondary",onClick:k(r,["stop"]),size:"small"},null,8,["icon"])),[[C(U),i.value?C(t)("Collapse All"):C(t)("Expand All"),void 0,{top:!0}]]):I("",!0),R(e.$slots,"icon")])],34),x("div",{class:M(Ye+"__content")},[(null==(c=C(l))?void 0:c.length)>0?(f(),w("ol",Re,[(f(!0),w(S,null,_(C(l),((e,l)=>(f(),w("li",{key:l,onDragstart:e=>((e,t)=>{H.value=t,e.currentTarget.style.opacity="0.6",e.currentTarget.style.border="1px dashed yellow",e.dataTransfer.effectAllowed="move"})(e,l),onDragend:e=>(e=>{if(e.target.style.opacity="1",e.currentTarget.style.border="1px dashed transparent","Manual drag&drop sorting"!==p("EasyUse.NodesMap.Sorting"))return void a.warn(t("For drag and drop sorting, please find Nodes map sorting mode in Settings->EasyUse and change it to manual"));let l=o.canvas.graph._groups,n=l[H.value],i=l[D.value];o.canvas.graph._groups[H.value]=i,o.canvas.graph._groups[D.value]=n,s.setGroups(o.canvas.graph._groups)})(e),onDragover:e=>((e,t)=>{e.preventDefault(),e.currentIndex!=H.value&&(D.value=t)})(e,l),draggable:!0},[void 0!==e.children?(f(),Q(Ne,{key:0,item:e,onChangeMode:t=>h(e),onMousedown:t=>b(e,"group"),onMouseup:N},{default:j((()=>[(f(!0),w(S,null,_(e.children,((e,t)=>(f(),Q(ze,{key:t,node:e,onChangeMode:t=>A(e),onMousedown:t=>b(e,"node"),onMouseup:N},null,8,["node","onChangeMode","onMousedown"])))),128))])),_:2},1032,["item","onChangeMode","onMousedown"])):(f(),Q(ze,{key:1,node:e.info,onChangeMode:t=>A(e.info),onMousedown:t=>b(e.info,"node"),onMouseup:N},null,8,["node","onChangeMode","onMousedown"]))],40,Le)))),128))])):(f(),w("div",Ze,[z(be,{icon:"pi pi-sitemap",title:C(t)("No Nodes",!0),message:C(t)("No nodes found in the map",!0)},null,8,["title","message"])]))],2)])}}},Ve=[x("svg",{class:"icon",t:"1714565543756",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"22538",width:"200",height:"200"},[x("path",{d:"M871.616 64H152.384c-31.488 0-60.416 25.28-60.416 58.24v779.52c0 32.896 26.24 58.24 60.352 58.24h719.232c34.112 0 60.352-25.344 60.352-58.24V122.24c0.128-32.96-28.8-58.24-60.288-58.24zM286.272 512c-23.616 0-44.672-20.224-44.672-43.008 0-22.784 20.992-43.008 44.608-43.008 23.616 0 44.608 20.224 44.608 43.008A43.328 43.328 0 0 1 286.272 512z m0-202.496c-23.616 0-44.608-20.224-44.608-43.008 0-22.784 20.992-43.008 44.608-43.008 23.616 0 44.608 20.224 44.608 43.008a43.456 43.456 0 0 1-44.608 43.008zM737.728 512H435.904c-23.68 0-44.672-20.224-44.672-43.008 0-22.784 20.992-43.008 44.608-43.008h299.264c23.616 0 44.608 20.224 44.608 43.008a42.752 42.752 0 0 1-41.984 43.008z m0-202.496H435.904c-23.616 0-44.608-20.224-44.608-43.008 0-22.784 20.992-43.008 44.608-43.008h299.264c23.616 0 44.608 20.224 44.608 43.008a42.88 42.88 0 0 1-42.048 43.008z","p-id":"22539",fill:"currentColor"})],-1)],Pe=[x("svg",{class:"icon",t:"1714565020764",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"7999",width:"200",height:"200"},[x("path",{d:"M810.438503 379.664884l-71.187166-12.777183C737.426025 180.705882 542.117647 14.602496 532.991087 7.301248c-12.777184-10.951872-32.855615-10.951872-47.45811 0-9.12656 7.301248-204.434938 175.229947-206.26025 359.586453l-67.536542 10.951871c-18.253119 3.650624-31.030303 18.253119-31.030303 36.506239v189.832442c0 10.951872 5.475936 21.903743 12.777184 27.379679 7.301248 5.475936 14.602496 9.12656 23.729055 9.12656h5.475936l133.247772-23.729055c40.156863 47.458111 91.265597 73.012478 151.500891 73.012477 60.235294 0 111.344029-27.379679 151.500891-74.837789l136.898396 23.729055h5.475936c9.12656 0 16.427807-3.650624 23.729055-9.12656 9.12656-7.301248 12.777184-16.427807 12.777184-27.379679V412.520499c1.825312-14.602496-10.951872-29.204991-27.379679-32.855615zM620.606061 766.631016H401.568627c-20.078431 0-36.506239 16.427807-36.506238 36.506239v109.518716c0 14.602496 9.12656 29.204991 23.729055 34.680927 14.602496 5.475936 31.030303 1.825312 40.156863-9.126559l16.427807-18.25312 32.855615 80.313726c5.475936 14.602496 18.253119 23.729055 34.680927 23.729055 16.427807 0 27.379679-9.12656 34.680927-23.729055l32.855615-80.313726 16.427807 18.25312c10.951872 10.951872 25.554367 14.602496 40.156863 9.126559 14.602496-5.475936 23.729055-18.253119 23.729055-34.680927v-109.518716c-3.650624-20.078431-20.078431-36.506239-40.156862-36.506239z",fill:"currentColor","p-id":"8000"})],-1)],Ge="comfyui-easyuse-toolbar",We={__name:"index",setup(e){const s=u(),l=y(!1);h((e=>l.value),(e=>{e?s.watchGraph(!0):s.unwatchGraph()}));const a=y(null),o=e=>{const t=a.value;var s=e.clientX||0,l=e.clientY||0,o=t.offsetLeft,n=t.offsetTop;function i(e){var a=e.clientX,i=e.clientY,r=a-s,u=i-l;t.style.left=o+r+"px",t.style.top=n+u+"px"}document.addEventListener("mousemove",i),document.addEventListener("mouseup",(function e(){document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",e)}))};return(e,s)=>(f(),w(S,null,[x("div",{class:M(["flex-c",Ge])},[x("div",{class:M(["group flex-c",Ge+"-icon"]),onClick:s[0]||(s[0]=e=>l.value=!l.value)},Ve,2),x("div",{class:M(["rocket flex-c",Ge+"-icon"]),onClick:s[1]||(s[1]=(...e)=>C(v)&&C(v)(...e))},Pe,2)]),l.value?(f(),w("div",{key:0,ref_key:"nodesMapRef",ref:a,class:M(Ge+"-nodes-map")},[z(Oe,{onHandleHeader:o},{icon:j((()=>[E(z(C(P),{icon:"pi pi-times",text:"",rounded:"",severity:"secondary",onClick:s[2]||(s[2]=e=>l.value=!1),size:"small"},null,512),[[C(U),C(t)("Close"),void 0,{top:!0}]])])),_:1})],2)):I("",!0)],64))}},Ue={__name:"index",setup(e){const t=u();return N((e=>{t.watchGraph()})),(e,t)=>(f(),w("div",{class:M("comfyui-easyuse-map")},[z(Oe)]))}},Fe="Comfy.UseNewMenu",Te={__name:"App",setup(e){const s=y(p(Fe));return N((e=>{try{o.extensionManager.registerSidebarTab({id:m,icon:"pi pi-sitemap",title:t("Nodes Map",!0),tooltip:t("Nodes Map",!0),type:"custom",render:e=>{e.style.height="100%",L(Z(Ue,{}),e)}}),g(Fe,(e=>{s.value=e}))}catch(l){}})),(e,t)=>(f(),w(S,null,[z(Se),"Disabled"==s.value?(f(),Q(We,{key:0})):I("",!0)],64))}},Xe=null==(e=document.getElementsByClassName("graph-canvas-container"))?void 0:e[0],Je=document.createElement("div");Je.id="comfyui-easyuse-components",Xe?Xe.append(Je):document.body.append(Je);const qe=Y(Te);qe.use(X),qe.use(F()),qe.mount("#"+Je.id);