From ea521e03036173e701e33e342567229708eecc43 Mon Sep 17 00:00:00 2001 From: yolain Date: Fri, 9 May 2025 00:50:13 +0800 Subject: [PATCH] Set loop nodes maximum number of inputs or outputs to 20 --- py/nodes/logic.py | 2 +- web_version/v2/assets/extensions-BLyI_TXA.js | 1 - web_version/v2/easyuse.js | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) delete mode 100644 web_version/v2/assets/extensions-BLyI_TXA.js diff --git a/py/nodes/logic.py b/py/nodes/logic.py index f0085b3..c6188a3 100755 --- a/py/nodes/logic.py +++ b/py/nodes/logic.py @@ -18,7 +18,7 @@ import comfy.utils import folder_paths DEFAULT_FLOW_NUM = 2 -MAX_FLOW_NUM = 10 +MAX_FLOW_NUM = 20 lazy_options = {"lazy": True} if compare_revision(2543) else {} any_type = AlwaysEqualProxy("*") diff --git a/web_version/v2/assets/extensions-BLyI_TXA.js b/web_version/v2/assets/extensions-BLyI_TXA.js deleted file mode 100644 index 63e67e2..0000000 --- a/web_version/v2/assets/extensions-BLyI_TXA.js +++ /dev/null @@ -1 +0,0 @@ -var e,t,n,i,s,o,a,l,r,A,d,u,c,p,h=Object.defineProperty,m=(e,t,n)=>((e,t,n)=>t in e?h(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n)(e,"symbol"!=typeof t?t+"":t,n);import{d as f,h as g}from"./vendor-Dqa9Pnr9.js";import{c as y}from"./lodash-CZi7izHi.js";let v=(null==(t=null==(e=window.comfyAPI)?void 0:e.app)?void 0:t.app)||null,b=(null==(i=null==(n=window.comfyAPI)?void 0:n.api)?void 0:i.api)||null,w=(null==(o=null==(s=window.comfyAPI)?void 0:s.ui)?void 0:o.$el)||null,_=(null==(l=null==(a=window.comfyAPI)?void 0:a.dialog)?void 0:l.ComfyDialog)||null,L=(null==(A=null==(r=window.comfyAPI)?void 0:r.widgets)?void 0:A.ComfyWidgets)||null,S=(null==(u=null==(d=window.comfyAPI)?void 0:d.utils)?void 0:u.applyTextReplacements)||null,E=(null==(p=null==(c=window.comfyAPI)?void 0:c.groupNode)?void 0:p.GroupNodeConfig)||null;const k=e=>{var t,n;return e?null==(n=null==(t=null==v?void 0:v.ui)?void 0:t.settings)?void 0:n.getSettingValue(e):null};function x(e,t=null){try{let n=e?k(e):null;return null==n&&(n=t?localStorage[t]:localStorage[e]||null),n}catch(n){return null}}function N(e,t=e=>{}){var n;const i=null==(n=v.ui.settings.settingsLookup)?void 0:n[e];i&&(i.onChange=e=>t(e))}async function C(e,t,n=null){var i,s;try{(null==(s=null==(i=null==v?void 0:v.ui)?void 0:i.settings)?void 0:s.setSettingValue)?v.ui.settings.setSettingValue(e,t):await b.storeSetting(e,t),n&&(localStorage[n]="object"==typeof t?JSON.stringify(t):t)}catch(o){}}const I={"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 (Shirt + m)":"节点组 (Shirt + m)","Nodes map sorting mode":"管理节点组排序模式","Search by Node ID/Name...":"通过节点ID/名称搜索...","No Nodes":"未找到节点","No nodes found in the map":"在工作流程中没有找到节点","No nodes found in the search":"未找到与搜索匹配的节点","Jump to this node":"跳转到该节点","Rename node":"重命名节点","Delete node":"删除节点","Rename group":"重命名组","Delete group":"删除组","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 and Shift+Ctrl+Alt+Left/Right to align selected nodes":"启用 Shift+上/下/左/右 和 Shift+Ctrl+Alt+左/右 键对齐选中的节点","Enable Shift+Ctrl+Left/Right key to normalize selected nodes":"启用 Shift+Ctrl+左/右 键规范化选中的节点","Enable Shift+g to add selected nodes to a group":"启用 Shift+g 键将选中的节点添加一个组","Enable Shift+r to unload models and node cache":"启用 Shift+r 键卸载模型和节点缓存","Enable Shift+m to toggle nodes map":"启用 Shift+m 键显隐管理节点组","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":"模型缩略图太多啦,为您关闭了显示","Shift+Up/Down/Left/Right can align selected nodes, Shift+Ctrl+Alt+Left/Right can distribute horizontal/vertical nodes":"Shift+上/下/左/右 可以对齐选中的节点, Shift+Ctrl+Alt+左/右 可以水平/垂直分布节点","Enable Shift+Ctrl+Left key to normalize width and Shift+Ctrl+Right key to normalize height":"启用 Shift+Ctrl+左 键规范化宽度和 Shift+Ctrl+右 键规范化高度","After v1.2.39, Ctrl+g can be used instead of it":"从v1.2.39开始,可以使用Ctrl+g代替","Use three shortcut buttons in the right-click menu":"在右键菜单中使用三个快捷按钮","Enable Nodes Map":"启用节点组管理","Display Groups Only":"仅显示组","Display Node ID":"显示节点ID","You need to refresh the page to update successfully":"您需要刷新页面以成功更新","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:"手套",Glasses:"眼镜",Sunglasses:"太阳镜","Upper-clothes":"上衣","Top-clothes":"上衣","Bottom-clothes":"下身装","Torso-skin":"皮肤",Dress:"连衣裙",Coat:"外套",Socks:"袜子",Pants:"裤子",Jumpsuits:"连体衣",Scarf:"围巾",Skirt:"裙子","Left-arm":"左臂","Right-arm":"右臂","Left-leg":"左腿","Right-leg":"右腿","Left-foot":"左脚","Right-foot":"右脚","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"},T=(e,t=!1)=>{switch(t?navigator.language:x("Comfy.Locale")){case"zh-CN":case"zh":return I[e]||e;default:return e}};const O="comfyui-easyuse-",D="dark-theme",R="#60a5fa",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,G=["loaders","latent","image","mask","sampling","_for_testing","advanced","utils","api"],z={ALWAYS:0,NEVER:2,BYPASS:4},V="easyuse_nodes_map",j="data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABkAAD/4QMyaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA5LjEtYzAwMSA3OS4xNDYyODk5Nzc3LCAyMDIzLzA2LzI1LTIzOjU3OjE0ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjUuMyAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2RkFERDc2MUNDRkIxMUVGQjFENkE0NzFCNTUzRkQ0MCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2RkFERDc2MkNDRkIxMUVGQjFENkE0NzFCNTUzRkQ0MCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjUyMkMxRkIyQ0M0QzExRUZCMUQ2QTQ3MUI1NTNGRDQwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGQURENzYwQ0NGQjExRUZCMUQ2QTQ3MUI1NTNGRDQwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/+4ADkFkb2JlAGTAAAAAAf/bAIQAAQEBAQEBAQEBAQEB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",F="rgba(24,24,27,.9)",W={ColorPalette:{version:112,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",FAST_MODEL_LOADER:"#ffd399",SAMPLING:"#60a5fa"},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:2,NODE_BOX_OUTLINE_COLOR:R,NODE_BYPASS_BGCOLOR:"#FF00FF",NODE_ERROR_COLOUR:"#E00",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:F,groupcolor:"#A88"},brown:{color:"#38291f",bgcolor:F,groupcolor:"#b06634"},green:{color:"#346434",bgcolor:F,groupcolor:"#8A8"},blue:{color:"#1f1f48",bgcolor:F,groupcolor:"#88A"},pale_blue:{color:"#006691",bgcolor:F,groupcolor:"#3f789e"},cyan:{color:"#008181",bgcolor:F,groupcolor:"#8AA"},purple:{color:"#422342",bgcolor:F,groupcolor:"#a1309b"},yellow:{color:"#c09430",bgcolor:F,groupcolor:"#b58b2a"},black:{color:"rgba(0,0,0,.8)",bgcolor:F,groupcolor:"#444"}}};let U=JSON.parse(JSON.stringify(W));delete U.NODE_COLORS,U.ColorPalette.id="obsidian_dark",U.ColorPalette.name="Obsidian Dark",U.ColorPalette.colors.litegraph_base.BACKGROUND_IMAGE="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGlmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4xLWMwMDEgNzkuMTQ2Mjg5OSwgMjAyMy8wNi8yNS0yMDowMTo1NSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDI1LjEgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyMy0xMS0xM1QwMDoxODowMiswMTowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMTEtMTVUMDI6MDQ6NTkrMDE6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMTEtMTVUMDI6MDQ6NTkrMDE6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmIyYzRhNjA5LWJmYTctYTg0MC1iOGFlLTk3MzE2ZjM1ZGIyNyIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjk0ZmNlZGU4LTE1MTctZmQ0MC04ZGU3LWYzOTgxM2E3ODk5ZiIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjIzMWIxMGIwLWI0ZmItMDI0ZS1iMTJlLTMwNTMwM2NkMDdjOCI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjMxYjEwYjAtYjRmYi0wMjRlLWIxMmUtMzA1MzAzY2QwN2M4IiBzdEV2dDp3aGVuPSIyMDIzLTExLTEzVDAwOjE4OjAyKzAxOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjUuMSAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ4OWY1NzlmLTJkNjUtZWQ0Zi04OTg0LTA4NGE2MGE1ZTMzNSIgc3RFdnQ6d2hlbj0iMjAyMy0xMS0xNVQwMjowNDo1OSswMTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDI1LjEgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiMmM0YTYwOS1iZmE3LWE4NDAtYjhhZS05NzMxNmYzNWRiMjciIHN0RXZ0OndoZW49IjIwMjMtMTEtMTVUMDI6MDQ6NTkrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyNS4xIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4OTe6GAAAAx0lEQVR42u3WMQoAIQxFwRzJys77X8vSLiRgITif7bYbgrwYc/mKXyBoY4VVBgsWLFiwYFmOlTv+9jfDOjHmr8u6eVkGCxYsWLBgmc5S8ApewXvgYRksWLBgKXidpeBdloL3wMOCBctgwVLwCl7BuyyDBQsWLFiwTGcpeAWv4D3wsAwWLFiwFLzOUvAuS8F74GHBgmWwYCl4Ba/gXZbBggULFixYprMUvIJX8B54WAYLFixYCl5nKXiXpeA98LBgwTJYsGC9tg1o8f4TTtqzNQAAAABJRU5ErkJggg==",U.ColorPalette.colors.litegraph_base.CLEAR_BACKGROUND_COLOR="#09090b";const X="#FFFFFF",Z={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",FAST_MODEL_LOADER:"#ffd399",SAMPLING:"#60a5fa"},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:2,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:X,groupcolor:"#A88"},brown:{color:"#38291f",bgcolor:X,groupcolor:"#b06634"},green:{color:"#346434",bgcolor:X,groupcolor:"#8A8"},blue:{color:"#1f1f48",bgcolor:X,groupcolor:"#88A"},pale_blue:{color:"#006691",bgcolor:X,groupcolor:"#3f789e"},cyan:{color:"#008181",bgcolor:X,groupcolor:"#8AA"},purple:{color:"#422342",bgcolor:X,groupcolor:"#a1309b"},yellow:{color:"#c09430",bgcolor:X,groupcolor:"#b58b2a"},black:{color:"rgba(0,0,0,.8)",bgcolor:X,groupcolor:"#444"}}},q={addGroup:{id:"EasyUse.Hotkeys.AddGroup",name:"Enable Shift+g to add selected nodes to a group",tooltip:"After v1.2.39, Ctrl+g can be used instead of it",type:"boolean",defaultValue:!0},cleanVRAMUsed:{id:"EasyUse.Hotkeys.cleanVRAMUsed",name:"Enable Shift+r to unload models and node cache",type:"boolean",defaultValue:!0},toggleSiteMap:{id:"EasyUse.Hotkeys.toggleNodesMap",name:"Enable Shift+m to toggle nodes map",type:"boolean",defaultValue:!0},alignSelectedNodes:{id:"EasyUse.Hotkeys.AlignSelectedNodes",name:"Enable Shift+Up/Down/Left/Right key and Shift+Ctrl+Alt+Left/Right to align selected nodes",tooltip:"Shift+Up/Down/Left/Right can align selected nodes, Shift+Ctrl+Alt+Left/Right can distribute horizontal/vertical nodes",type:"boolean",defaultValue:!0},NormalizeSelectedNodes:{id:"EasyUse.Hotkeys.NormalizeSelectedNodes",name:"Enable Shift+Ctrl+Left/Right key to normalize selected nodes",tooltip:"Enable Shift+Ctrl+Left key to normalize width and Shift+Ctrl+Right key to normalize height",type:"boolean",defaultValue:!0},nodesTemplate:{id:"EasyUse.Hotkeys.NodesTemplate",name:"Enable Alt+1~9 to paste nodes from nodes template",type:"boolean",defaultValue:!0},jumpNearestNodes:{id:"EasyUse.Hotkeys.JumpNearestNodes",name:"Enable Up/Down/Left/Right key to jump nearest nodes",type:"boolean",defaultValue:!0},subDirectories:{id:"EasyUse.ContextMenu.SubDirectories",name:"Enable contextMenu auto nest subdirectories",type:"boolean",defaultValue:!1},modelsThumbnails:{id:"EasyUse.ContextMenu.ModelsThumbnails",name:"Enable model thumbnails display",type:"boolean",defaultValue:!1},rightMenuNodesSort:{id:"EasyUse.ContextMenu.NodesSort",name:"Enable right-click menu to add node A~Z sorting",type:"boolean",defaultValue:!0},quickOptions:{id:"EasyUse.ContextMenu.QuickOptions",name:"Use three shortcut buttons in the right-click menu",type:"combo",options:["At the forefront","At the end","Disable"],defaultValue:"At the forefront"},nodesRuntime:{id:"EasyUse.Nodes.Runtime",name:"Enable nodes runtime display",type:"boolean",defaultValue:!0},chainGetSet:{id:"EasyUse.Nodes.ChainGetSet",name:"Enable chain get node and set node with parent nodes",type:"boolean",defaultValue:!0},nodesMap:{id:"EasyUse.NodesMap.Sorting",name:"Nodes map sorting mode",tooltip:"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"},displayNodesID:{id:"EasyUse.NodesMap.DisplayNodeID",name:"Display Node ID",type:"boolean",defaultValue:!0},onlyDisplayGroup:{id:"EasyUse.NodesMap.DisplayGroupOnly",name:"Display Groups Only",type:"boolean",defaultValue:!1},enableNodesMap:{id:"EasyUse.NodesMap.Enable",name:"Enable Nodes Map",tooltip:"You need to refresh the page to update successfully",type:"boolean",defaultValue:!0}};function H(e=100,t){return new Promise((n=>{setTimeout((()=>{n(t)}),e)}))}function K(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 i={MM:1,dd:2,yyyy:3,hh:4,mm:5,ss:6};return t.replace(/([Mmdhs]|y{2})\1/g,(t=>e[i[t]]))}const Y=/Mac|iPod|iPhone|iPad/.test(navigator.platform),J=e=>Y?e.replace(/Ctrl/g,"⌘").replace(/Alt/g,"⌥").replace(/Shift/g,"⇧"):e;const B=new class{constructor(){m(this,"element",w(`div.${O}toast`)),m(this,"children",HTMLElement),m(this,"container",document.body),m(this,"info_icon",`mdi mdi-information ${O}theme`),m(this,"success_icon",`mdi mdi-check-circle ${O}success`),m(this,"error_icon",`mdi mdi-close-circle ${O}error`),m(this,"warn_icon",`mdi mdi-alert-circle ${O}warning`),m(this,"loading_icon","mdi mdi-rotate-right loading"),this.container.appendChild(this.element)}async show(e){let t=w(`div.${O}toast-container`,[w("div",[w("span",[...e.icon?[w("i",{className:e.icon})]:[],w("span",e.content)])])]);t.setAttribute("toast-id",e.id),this.element.replaceChildren(t),this.container.appendChild(this.element),await H(64),t.style.marginTop=`-${t.offsetHeight}px`,await H(64),t.classList.add("show"),e.duration&&(await H(e.duration),this.hide(e.id))}async hide(e){const t=document.querySelector(`.${O}toast > [toast-id="${e}"]`);(null==t?void 0:t.classList.contains("show"))&&(t.classList.remove("show"),await H(750)),t&&t.remove()}async clearAllMessages(){let e=document.querySelector(`.${O}container`);e&&(e.innerHTML="")}async info(e,t=3e3,n=[]){this.show({id:"toast-info",icon:this.info_icon,content:e,duration:t})}async success(e,t=3e3){this.show({id:"toast-success",icon:this.success_icon,content:e,duration:t})}async error(e,t=3e3){this.show({id:"toast-error",icon:this.error_icon,content:e,duration:t})}async warn(e,t=3e3){this.show({id:"toast-warn",icon:this.warn_icon,content:e,duration:t})}async showLoading(e,t=0){this.show({id:"toast-loading",icon:this.loading_icon,content:e,duration:t})}async hideLoading(){this.hide("toast-loading")}},Q=f("groups",{state:e=>({groups:[],nodes:[],isWatching:!1}),getters:{groups_nodes(){var e;let t=[],n=[];const i=e=>{var t;return{info:e,children:(null==(t=e.sub_groups)?void 0:t.length)>0?e.sub_groups.map(i):[],bounds:{x1:e.pos[0],y1:e.pos[1],x2:e.pos[0]+e.size[0],y2:e.pos[1]+e.size[1]}}};if(t=this.groups.map(i),(null==(e=this.nodes)?void 0:e.length)>0){const e=(e,t)=>e[0]>=t.x1&&e[0]<=t.x2&&e[1]>=t.y1&&e[1]<=t.y2,i=(t,n)=>{let i=null,s=-1;const o=(n,a)=>{n.bounds&&e(t.pos,n.bounds)&&(a>s&&(s=a,i=n),n.children.forEach((e=>o(e,a+1))))};return n.forEach((e=>o(e,0))),i};this.nodes.forEach((e=>{const s=i(e,t);s?(s.children||(s.children=[]),s.children.push(e)):n.push({info:e})}))}return[...t,...n]}},actions:{setGroups(e){let t=y(e);t.forEach((e=>{e.sub_groups=[],t.forEach((t=>{t!==e&&t.pos[0]>e.pos[0]&&t.pos[0]e.pos[1]&&t.pos[1]{t=t.filter((t=>t!==e))}))})),this.groups="Manual drag&drop sorting"==x("EasyUse.NodesMap.Sorting")?y(t):y(t.sort(((e,t)=>e.pos[0]-t.pos[0])).sort(((e,t)=>e.pos[1]-t.pos[1])))},setNodes(e){this.nodes=y(e)},update(){var e,t,n;(((null==(e=v.extensionManager)?void 0:e.activeSidebarTab)||(null==(n=null==(t=v.extensionManager.sidebarTab)?void 0:t.activeSidebarTab)?void 0:n.id))===V||this.isWatching)&&setTimeout((e=>{this.setGroups(v.canvas.graph._groups),this.setNodes(v.canvas.graph._nodes)}),1)},watchGraph(e=!1){e&&(this.isWatching=!0);let t=this;this.update();const n=v.graph.onNodeAdded;v.graph.onNodeAdded=function(e){t.update();const i=e.onRemoved;return e.onRemoved=function(){return t.update(),null==i?void 0:i.apply(this,arguments)},null==n?void 0:n.apply(this,arguments)},v.canvas.onNodeMoved=function(e){t.update()};const i=LGraphCanvas.onNodeAlign;LGraphCanvas.onNodeAlign=function(e){return t.update(),null==i?void 0:i.apply(this,arguments)};const s=LGraphCanvas.onGroupAdd;LGraphCanvas.onGroupAdd=function(){return t.update(),null==s?void 0:s.apply(this,arguments)};const o=LGraphCanvas.onGroupAlign;LGraphCanvas.onGroupAlign=function(e){return t.update(),null==o?void 0:o.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}}});const $={BOX:1,ROUND:2,CIRCLE:3,CARD:4,ARROW:5,GRID:6,HollowCircle:7};function ee(e,t,n={}){const{shape:i=$.BOX,round_radius:s=LiteGraph.ROUND_RADIUS,title_height:o=LiteGraph.NODE_TITLE_HEIGHT,title_mode:a=LiteGraph.NORMAL_TITLE,color:l=LiteGraph.NODE_BOX_OUTLINE_COLOR,padding:r=6,collapsed:A=!1,thickness:d=1}=n;a===LiteGraph.TRANSPARENT_TITLE&&(t[1]-=o,t[3]+=o);const{lineWidth:u,strokeStyle:c}=e;e.lineWidth=d,e.globalAlpha=.8,e.strokeStyle=l,e.beginPath();const[p,h,m,f]=t;switch(i){case $.BOX:e.rect(p-r,h-r,m+2*r,f+2*r);break;case $.ROUND:case $.CARD:{const t=s+r,n=i===$.CARD&&A||i===$.ROUND?[t]:[t,2,t,2];e.roundRect(p-r,h-r,m+2*r,f+2*r,n);break}case $.CIRCLE:{const t=p+m/2,n=h+f/2,i=Math.max(m,f)/2+r;e.arc(t,n,i,0,2*Math.PI);break}}e.stroke(),e.lineWidth=u,e.strokeStyle=c,e.globalAlpha=1}let te=null;const ne=["custom_obsidian","custom_obsidian_dark","custom_milk_white","obsidian_dark","obsidian","milk_white"],ie={"easy positive":"green","easy negative":"red","easy promptList":"cyan","easy promptLine":"cyan","easy promptConcat":"cyan","easy promptReplace":"cyan","easy forLoopStart":"blue","easy forLoopEnd":"blue","easy loadImagesForLoop":"blue"};let se=LGraphCanvas.node_colors,oe=null,ae=null,le=null;for(let Gn in q)re=q[Gn],v.ui.settings.settingsLookup[re.id]||v.ui.settings.addSetting(re);var re;function Ae(e,t,n,i,s,o,a){var l,r;t.strokeStyle=i,t.fillStyle=s;const A=LiteGraph.NODE_TITLE_HEIGHT,{low_quality:d}=this,{collapsed:u}=e.flags,c=e.renderingShape,{title_mode:p}=e.constructor,h=p!=LiteGraph.TRANSPARENT_TITLE&&p!=LiteGraph.NO_TITLE;let m=new Float32Array(4);m=[0,h?-A:0,n[0]+1,h?n[1]+A:n[1]];let f=t.globalAlpha;if(t.lineWidth=1,t.beginPath(),c==LiteGraph.BOX_SHAPE||d?t.fillRect(m[0],m[1],m[2],m[3]):c==LiteGraph.ROUND_SHAPE||c==LiteGraph.CARD_SHAPE?t.roundRect(m[0],m[1],m[2],m[3],c==LiteGraph.CARD_SHAPE?[this.round_radius,this.round_radius,0,0]:[this.round_radius]):c==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=i,t.fill(),e.has_errors&&!LiteGraph.use_legacy_node_error_indicator&&ee(t,m,{shape:c,title_mode:p,title_height:A,padding:12,color:LiteGraph.NODE_ERROR_COLOUR,collapsed:u,thickness:10}),!u&&h&&(t.shadowColor="transparent",t.fillStyle="rgba(0,0,0,0.2)",t.fillRect(0,-1,m[2],2)),t.shadowColor="transparent",e.onDrawBackground&&e.onDrawBackground(t,this,this.canvas,this.graph_mouse),h||p==LiteGraph.TRANSPARENT_TITLE){const i="dark"==function(e){let t=e.replace("#","");return n=parseInt(t.substring(0,2),16),i=parseInt(t.substring(2,4),16),s=parseInt(t.substring(4,6),16),.299*n+.587*i+.114*s>127.5?"light":"dark";var n,i,s}((null==e?void 0:e.color)||"#ffffff");e.drawTitleBarBackground(t,{scale:this.ds.scale,low_quality:d}),t.globalAlpha=f;let s=!1;LiteGraph.node_box_coloured_by_mode&&LiteGraph.NODE_MODES_COLORS[e.mode]&&(s=LiteGraph.NODE_MODES_COLORS[e.mode]),LiteGraph.node_box_coloured_when_on&&(s=e.action_triggered?"#FFF":e.execute_triggered?"#AAA":s);let a=10;if(e.onDrawTitleBox)e.onDrawTitleBox(t,A,n,this.ds.scale);else if(c==LiteGraph.ROUND_SHAPE||c==LiteGraph.CIRCLE_SHAPE||c==LiteGraph.CARD_SHAPE){const n=i?"#ffffff":LiteGraph.NODE_SELECTED_TITLE_COLOR,l=i?"#eeeeee":e.boxcolor||s||LiteGraph.NODE_DEFAULT_BOXCOLOR;t.fillStyle=o?n:l,t.beginPath(),t.fillRect(10,0-1.05*a-1,1.1*a,.125*a),t.fillRect(10,0-1.45*a-1,1.1*a,.125*a),t.fillRect(10,0-1.85*a-1,1.1*a,.125*a)}else t.fillStyle=e.renderingBoxColor,t.fillRect(.5*(A-a),-.5*(A+a),a,a);if(t.globalAlpha=f,e.onDrawTitleText&&e.onDrawTitleText(t,A,n,this.ds.scale,this.title_text_font,o),!d){t.font=this.title_text_font;const n=e.getTitle()??`❌ ${e.type}`,s=String(n)+(e.pinned?"📌":"");s&&(t.fillStyle=o?i?"#ffffff":LiteGraph.NODE_SELECTED_TITLE_COLOR:i?"#ffffff":e.constructor.title_text_color||this.node_title_color,e.flags.collapsed?(t.textAlign="left",t.measureText(s),t.fillText(s.substr(0,20),A,LiteGraph.NODE_TITLE_TEXT_Y-A),t.textAlign="left"):(t.textAlign="left",t.fillText(s,A,LiteGraph.NODE_TITLE_TEXT_Y-A)))}if(!u&&e.subgraph&&!e.skip_subgraph_button){let n=LiteGraph.NODE_TITLE_HEIGHT,i=e.size[0]-n,s=LiteGraph.isInsideRectangle(this.graph_mouse[0]-e.pos[0],this.graph_mouse[1]-e.pos[1],i+2,2-n,n-4,n-4);t.fillStyle=s?"#888":"#555",c==LiteGraph.BOX_SHAPE||d?t.fillRect(i+2,2-n,n-4,n-4):(t.beginPath(),t.roundRect(i+2,2-n,n-4,n-4,[4]),t.fill()),t.fillStyle="#333",t.beginPath(),t.moveTo(i+.2*n,.6*-n),t.lineTo(i+.8*n,.6*-n),t.lineTo(i+.5*n,.3*-n),t.fill()}null==(l=e.onDrawTitle)||l.call(e,t)}if(null==e?void 0:e.strokeStyles){for(const n of Object.values(e.strokeStyles)){const i=n.call(e);i&&ee(t,m,{shape:c,title_height:A,title_mode:p,collapsed:u,...i})}null==e||e.drawProgressBar(t)}else if(o){null==(r=e.onBounding)||r.call(e,m),p==LiteGraph.TRANSPARENT_TITLE&&(m[1]-=A,m[3]+=A),t.lineWidth=2,t.globalAlpha=.8,t.beginPath();let s=0,o=0,a=1;c==LiteGraph.BOX_SHAPE?t.rect(s+m[0],s+m[1],o+m[2],o+m[3]):c==LiteGraph.ROUND_SHAPE||c==LiteGraph.CARD_SHAPE&&e.flags.collapsed?t.roundRect(s+m[0],s+m[1],o+m[2],o+m[3],[this.round_radius*a]):c==LiteGraph.CARD_SHAPE?t.roundRect(s+m[0],s+m[1],o+m[2],o+m[3],[this.round_radius*a,a,this.round_radius*a,a]):c==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=i,t.globalAlpha=1}e.execute_triggered>0&&e.execute_triggered--,e.action_triggered>0&&e.action_triggered--}function de(e,t,n,i){var s,o,a,l;if(!e.widgets||!e.widgets.length)return 0;let r=e.size[0],A=(e.size[1],e.widgets);t+=2;let d=LiteGraph.NODE_WIDGET_HEIGHT,u=this.ds.scale>.5;n.save(),n.globalAlpha=this.editor_alpha,LiteGraph.WIDGET_OUTLINE_COLOR;let c=LiteGraph.WIDGET_BGCOLOR,p=LiteGraph.WIDGET_TEXT_COLOR,h=LiteGraph.WIDGET_SECONDARY_TEXT_COLOR,m=16;const f=["fast llm"];for(let y=0;y{var t;return e.link&&(null==(t=e.widget)?void 0:t.name)===(null==v?void 0:v.name)})))?void 0:o.link),n.strokeStyle=w,n.fillStyle=c,n.textAlign="left",n.lineWidth=1,v.computedDisabled&&(n.globalAlpha*=.5);let _=v.width||r;switch(v.height,v.type){case"button":var g=v.options.size||10;n.font=g+"px Inter",n.fillStyle=(null==(a=v.options)?void 0:a.transparent)?"transparent":c,v.clicked&&(n.fillStyle="#AAA",v.clicked=!1,this.dirty_canvas=!0),n.beginPath(),n.roundRect(m,b,_-32,d,[.25*d]),n.fill(),!u||v.disabled||(null==(l=v.options)?void 0:l.transparent)||n.stroke(),u&&(n.textAlign="center",n.fillStyle=p,n.fillText(v.label||v.name,.5*_,b+.7*d));break;case"toggle":if(n.font="10px Inter",n.textAlign="left",n.strokeStyle=w,n.fillStyle=c,n.beginPath(),u?n.roundRect(m,b,_-32,d,[.25*d]):n.rect(m,b,_-32,d),n.fill(),u&&!v.disabled&&n.stroke(),n.fillStyle=v.value?R:w,n.beginPath(),n.arc(_-32+5,b+.5*d,.25*d,0,2*Math.PI),n.fill(),u){n.fillStyle=h;const e=v.label||v.name;null!=e&&n.fillText(e,22,b+.7*d),n.font="10px Inter",n.fillStyle=v.value?p:h,n.textAlign="right",n.fillText(v.value?v.options.on||"true":v.options.off||"false",_-38,b+.7*d)}break;case"slider":n.font="10px Inter",n.fillStyle=c,n.strokeStyle=w,n.beginPath(),n.roundRect(m,b,_-32,d,[.25*d]),n.fill(),n.stroke();let t=v.options.max-v.options.min,s=(v.value-v.options.min)/t;if(s<0&&(s=0),s>1&&(s=1),n.fillStyle=v.options.hasOwnProperty("slider_color")?v.options.slider_color:i==v?w:R,n.beginPath(),n.roundRect(m,b,s*(_-32),d,[.25*d]),n.fill(),v.marker){let e=(v.marker-v.options.min)/t;e<0&&(e=0),e>1&&(e=1),n.fillStyle=v.options.hasOwnProperty("marker_color")?v.options.marker_color:"#AA9",n.roundRect(m+e*(_-32),b,2,d,[.25*d])}if(u){n.textAlign="center",n.fillStyle=p;let e=(v.label||v.name)+" : "+Number(v.value).toFixed(null!=v.options.precision?v.options.precision:3);n.fillText(e,.5*_,b+.7*d)}break;case"number":case"combo":if(n.textAlign="left",n.strokeStyle=w,n.fillStyle=c,n.beginPath(),u?n.roundRect(m,b,_-32,d,[.25*d]):n.rect(m,b,_-32,d),n.fill(),u){v.disabled||n.stroke(),n.fillStyle=p,v.disabled||(n.beginPath(),n.moveTo(28,b+6.5),n.lineTo(22,b+.5*d),n.lineTo(28,b+d-6.5),n.fill(),n.beginPath(),n.moveTo(_-m-12,b+6.5),n.lineTo(_-m-6,b+.5*d),n.lineTo(_-m-12,b+d-6.5),n.fill()),n.fillStyle=h,n.font="10px Inter",n.fillText(v.label||v.name,32,b+.7*d),n.fillStyle=p,n.textAlign="right";let e=2;if("number"==v.type)n.font="10px Inter",n.fillText(Number(v.value).toFixed(void 0!==v.options.precision?v.options.precision:3),_-32-e,b+.7*d);else{let t=v.value;if(v.options.values){let e=v.options.values;e.constructor===Function&&(e=e()),e&&e.constructor!==Array&&(t=e[v.value])}const i=_-64-(n.measureText(v.label||v.name).width+32),s=n.measureText(t).width;if(s>i){const e="…",o=n.measureText(e).width,a=n.measureText("a").width;if(i<=o)t="․";else{t=`${t}`;if(s+o-i+3*a>i){const e=i+3*a,n=Math.floor((e-o)/a);t=t.substr(0,n)}for(;n.measureText(t).width+o>i;)t=t.substr(0,t.length-1);t+=e}}n.fillText(t,_-32-e,b+.7*d)}}break;case"string":case"text":if(n.textAlign="left",n.strokeStyle=w,n.fillStyle=c,n.beginPath(),u?n.roundRect(m,b,_-32,d,[.25*d]):n.rect(m,b,_-32,d),n.fill(),u){v.disabled||n.stroke(),n.save(),n.beginPath(),n.rect(m,b,_-32,d),n.clip(),n.fillStyle=h;const e=v.label||v.name;n.font="10px Inter",null!=e&&n.fillText(e,32,b+.7*d),n.fillStyle=p,n.textAlign="right",n.fillText(String(v.value).substr(0,30),_-32,b+.7*d),n.restore()}break;default:v.draw&&v.draw(n,e,_,b,d)}t+=(v.computeSize?v.computeSize(_)[1]:d)+4,n.globalAlpha=this.editor_alpha}n.restore(),n.textAlign="left"}function ue(e,t,n,i,s){return new LiteGraph.ContextMenu(LiteGraph.NODE_MODES,{event:n,callback:function(e){if(!s)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),te||(te=Q()),te.update()},i=LGraphCanvas.active_canvas;if(!i.selected_nodes||Object.keys(i.selected_nodes).length<=1)n(s);else for(var o in i.selected_nodes)n(i.selected_nodes[o])},parentMenu:i,node:s}),!1}function ce(e,t,n,i,s){if(!s)throw"no node for color";var o=[];for(var a in o.push({value:null,content:"No color"}),LGraphCanvas.node_colors){var l=LGraphCanvas.node_colors[a];e={value:a,content:""+a+""};o.push(e)}return new LiteGraph.ContextMenu(o,{event:n,callback:function(e){if(!s)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),te||(te=Q()),te.update()},i=LGraphCanvas.active_canvas;if(!i.selected_nodes||Object.keys(i.selected_nodes).length<=1)n(s);else for(var o in i.selected_nodes)n(i.selected_nodes[o]);s.setDirtyCanvas(!0,!0)},parentMenu:i,node:s}),!1}function pe(e,t,n,i,s){var o=e.property||"title",a=s[o],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=o;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)h();else if(13!=e.keyCode&&"textarea"!=e.target.localName)return;e.preventDefault(),e.stopPropagation()})));var A=LGraphCanvas.active_canvas.canvas,d=A.getBoundingClientRect(),u=-20,c=-20;d&&(u-=d.left,c-=d.top),event?(l.style.left=event.clientX+u+"px",l.style.top=event.clientY+c+"px"):(l.style.left=.5*A.width+u+"px",l.style.top=.5*A.height+c+"px"),l.querySelector("button").addEventListener("click",h),A.parentNode.appendChild(l),r&&r.focus();var p=null;function h(){r&&function(t){"Number"==e.type?t=Number(t):"Boolean"==e.type&&(t=Boolean(t));s[o]=t,l.parentNode&&l.parentNode.removeChild(l);s.setDirtyCanvas(!0,!0),te||(te=Q());te.update()}(r.value)}l.addEventListener("mouseleave",(function(e){LiteGraph.dialog_close_on_mouse_leave&&!l.is_modified&&LiteGraph.dialog_close_on_mouse_leave&&(p=setTimeout(l.close,LiteGraph.dialog_close_on_mouse_leave_delay))})),l.addEventListener("mouseenter",(function(e){LiteGraph.dialog_close_on_mouse_leave&&p&&clearTimeout(p)}))}(e=>{try{v.registerExtension(e)}catch(t){}})({name:"Comfy.EasyUse.UI",init(){var e,t;const n="Comfy.CustomColorPalettes",i="Comfy.Settings.Comfy.CustomColorPalettes";if(oe||(oe=x(n,i)),ae||(ae=x("Comfy.ColorPalette","Comfy.Settings.Comfy.ColorPalette")||"dark"),(!(null==(e=null==oe?void 0:oe.obsidian)?void 0:e.version)||oe.obsidian.version{(null==e?void 0:e.value)&&(null==e?void 0:e.oldValue)&&(await H(1),Object.assign(v.canvas.default_connection_color_byType,M),Object.assign(LGraphCanvas.link_type_colors,M)),"custom_milk_white"==e.value&&document.body.classList.remove(D)})),setTimeout((e=>he(x("Comfy.UseNewMenu")||"Disabled")),1);const t=null==(e=v.ui.settings.settingsLookup)?void 0:e["Comfy.UseNewMenu"];t&&(t.onChange=e=>he(e)),b.addEventListener("easyuse-toast",(e=>{const t=e.detail.content,n=e.detail.type,i=e.detail.duration;n?B.show({id:`toast-${n}`,icon:B[n+"_icon"],content:`${t}`,duration:i||3e3}):B.info(t,i)}))},async nodeCreated(e){if(ie.hasOwnProperty(e.comfyClass)){const t=ie[e.comfyClass],n=se[t];if(!n)return;n.bgcolor&&(e.bgcolor=n.bgcolor),n.color&&(e.color=n.color)}}});const he=e=>{var t;const n=(null==(t=document.getElementById("crystools-root"))?void 0:t.children)||null,i=x("Comfy.Workflow.WorkflowTabsPosition",null);if((null==n?void 0:n.length)>0&&i)if(le||(le=document.getElementById("MonitorUI")),"Disabled"==e){document.getElementById("crystools-root").appendChild(le)}else{let e=document.getElementById("crystools-root-easyuse");if(e)e.appendChild(le);else{const e=document.getElementsByClassName("comfyui-menu-right");e.length>0&&e[0].before(w("div",{id:"crystools-root-easyuse"},le))}}};let me={};const fe=(e,t)=>e.widgets.find((e=>e.name===t)),ge=(e,t,n=!1,i="")=>{var s;if(!t||((e,t)=>!!e.inputs&&e.inputs.some((e=>e.name===t&&e.link)))(e,t.name))return;me[t.name]||(me[t.name]={origType:t.type,origComputeSize:t.computeSize});const o=e.size;t.type=n?me[t.name].origType:"easyHidden"+i,t.computeSize=n?me[t.name].origComputeSize:()=>[0,-4],null==(s=t.linkedWidgets)||s.forEach((i=>ge(e,i,":"+t.name,n)));const a=n?Math.max(e.computeSize()[1],o[1]):e.size[1];e.setSize([e.size[0],a])},ye=(e,t=0)=>{var n,i;if(e)return(null==(n=e.widgets)?void 0:n[t])?e.widgets[t].value:e.widgets_values?null==(i=e.widgets_values)?void 0:i[t]:void 0},ve=e=>e.setSize([e.size[0],e.computeSize()[1]]),be=(e,t)=>graph.getNodeById(e),we=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 _e(e,t,n){return e+(i=n,(.5-.5*Math.cos(Math.PI*i))*(t-e));var i}const Le=(e,t=!0)=>{var n,i;const s=(null==(i=null==(n=e.graph)?void 0:n.list_of_graphcanvas)?void 0:i[0])||null;if(!s)return;const[o,a]=e.pos,[l,r]=e.size;(([e,t],n)=>{const i=n.ds,s=document.body.clientWidth,o=document.body.clientHeight,a=i.scale,l=.5*s/a-e,r=.5*o/a-t,A=Date.now()+250,d=i.offset[0],u=i.offset[1],c=()=>{const e=A-Date.now();if(!(Date.now(){const t=be(e);t&&Le(t)},Ee=(e,t=(()=>graph.links??[])())=>t[e],ke=e=>e.toLowerCase().replace(/_./g,(e=>e.replace("_","").toUpperCase())),xe=e=>"easy getNode"===e.type,Ne=e=>"easy setNode"===e.type,Ce=e=>xe(e)||Ne(e),Ie=(e=(()=>graph._nodes??[])())=>e.filter((e=>Ce(e)));let Te={},Oe={};const De=(e,t,n=0)=>{e.widgets_values||(e.widgets_values=[]),e.widgets_values[n]=t,e.widgets[n].value=t},Re=e=>graph.add(e),Me=e=>graph.remove(e),Pe=(e,t=0)=>{var n,i;if("Reroute"!==e.type)return[e,t];const s=e,o=null==(i=null==(n=s.inputs)?void 0:n[0])?void 0:i.link;if(!o)return[s,t];const a=Ee(o);if(!a)return[s,t];const l=be(a.origin_id);return l?(setTimeout((()=>{Me(s)})),Pe(l,a.origin_slot)):[s,t]},Ge=e=>{var t,n,i;if("Reroute"!==e.type)return e;const s=e,o=null==(n=null==(t=s.outputs)?void 0:t[0])?void 0:n.links;if(!o)return s;const a=o[0];if(!a)return s;const l=Ee(a);if(!l)return s;const r=be(l.target_id);return r?(1===(null==(i=s.outputs[0].links)?void 0:i.length)&&setTimeout((()=>{Me(s)})),Ge(r)):s},ze=(e,t="width")=>{var n;const i=e[0],s="width"==t?0:1,o=null==(n=i.size)?void 0:n[s];o&&(e.forEach((e=>{e.size[s]=o})),LGraphCanvas.active_canvas.setDirty(!0,!0))},Ve=(e,t="horizontal")=>{if(e.length<3)return;const n="horizontal"===t?0:1;e.sort(((e,t)=>e.pos[n]-t.pos[n]));const i=Math.min(...e.map((e=>e.pos[n]))),s=(Math.max(...e.map((e=>e.pos[n]+e.size[n])))-i-e.reduce(((e,t)=>e+t.size[n]),0))/(e.length-1);let o=i;e.forEach((e=>{e.pos[n]=o,o+=e.size[n]+s})),LGraphCanvas.active_canvas.setDirty(!0,!0)};function je(e,t,n){var i,s;let o=0,a=null==(i=e[0])?void 0:i.naturalWidth,l=null==(s=e[0])?void 0:s.naturalHeight;const r=e.length;let A,d,u,c,p;for(let h=1;h<=r;h++){const e=Math.ceil(r/h),i=t/h,s=i/a,m=n/e/l,f=Math.min(s,m,1),g=a*f,y=l*f,v=g*y*r;v>o&&(o=v,A=g,d=y,u=h,c=e,p=h*((i-g)/2))}return{cellWidth:A,cellHeight:d,cols:u,rows:c,shiftX:p}}class Fe{constructor(e,t){this.type="custom",this.name=e,this.options=t,this.value=""}draw(e,t,n,i,s){((e,t,n)=>{const i=v.canvas,s=i.graph_mouse;!i.pointer_is_down&&t.pointerDown&&(s[0]===t.pointerDown.pos[0]&&s[1]===t.pointerDown.pos[1]&&(t.imageIndex=t.pointerDown.index),t.pointerDown=null);const o=t.imgs??[];let{imageIndex:a}=t;const l=o.length;1!==l||a||(t.imageIndex=a=0);const r=t.size[0],A=t.size[1]-n-15;if(null==a){let a,d,u,c,p;const h=(e=>{if(!e.length||1===e.length)return!0;const t=e[0].naturalWidth/e[0].naturalHeight;for(let n=1;nMath.max(e,t.naturalWidth,t.naturalHeight)),0),t=[];t.length=o.length,t[0]={naturalWidth:e,naturalHeight:e},({cellWidth:a,cellHeight:d,cols:p,shiftX:u}=je(t,r,A))}let m=!1;t.imageRects=[];for(let r=0;r{let r="#333",A="#fff",d=!1;return LiteGraph.isInsideRectangle(s[0],s[1],n+t.pos[0],o+t.pos[1],a,a)&&(i.canvas.style.cursor="pointer",i.pointer_is_down?(r="#1e90ff",d=!0):(r="#eee",A="#000")),e.fillStyle=r,e.beginPath(),e.roundRect(n,o,a,a,[4]),e.fill(),e.fillStyle=A,e.font="12px Arial",e.textAlign="center",e.fillText(l,n+15,o+20),d};if(!(l>1))return;const _=(t.imageIndex??0)+1;if(w(r-40,A+n-40,30,`${_}/${l}`)){const e=_>=l?0:_;t.pointerDown&&t.pointerDown.index===e||(t.pointerDown={index:e,pos:[...s]})}w(r-40,n+10,30,"x")&&(t.pointerDown&&null===t.pointerDown.index||(t.pointerDown={index:null,pos:[...s]}))})(e,t,i)}computeLayoutSize(e,t){return{minHeight:220,minWidth:1}}}const We=()=>(e,t)=>e.addCustomWidget(new Fe(t.name,{serialize:!1})),Ue="$$canvas-image-preview";const Xe="$$comfy_animation_preview";const Ze="video_upload",qe=(e,t)=>{if(!e)return!1;const n=(e=>{var t;return null==(t=e.constructor)?void 0:t.nodeData})(e);if(!(null==n?void 0:n.input))return!1;return(e=>{if(!e)return[];const{required:t,optional:n}=e,i=[];if(t)for(const s of Object.values(t))i.push(s);if(n)for(const s of Object.values(n))i.push(s);return i})(n.input).some((e=>{var n;return null==(n=null==e?void 0:e[1])?void 0:n[t]}))};const He=e=>null==e?void 0:e.id.toString(),Ke=e=>v.nodeOutputs[He(e)],Ye=e=>v.nodePreviewImages[He(e)];function Je(e){var t;const n=Ye(e),i=Ke(e);if((null==n?void 0:n.length)&&!e.isOutputFinal)return n;if(!(null==(t=null==i?void 0:i.images)?void 0:t.length))return(null==n?void 0:n.length)?n:void 0;const s=v.getRandParam(),o=(e=>e.animatedImages?"":v.getPreviewFormatParam())(e);return i.images.map((e=>{const t=new URLSearchParams(e);return b.apiURL(`/view?${t}${o}${s}`)}))}const Be="video-preview",Qe={playsInline:!0,controls:!0,loop:!0},$e=(e,t)=>{const{loadElement:n,onLoaded:i,onFailedLoading:s}=t,o=async(e,t=0)=>{const i=await Promise.race([n(e),(s=8192,new Promise((e=>setTimeout((()=>e(null)),s))))]);var s;return null===i&&t<1?o(e,t+1):i};return{showPreview:function(){var n;if(e.isLoading)return;const a=(null==(n=e.videos)?void 0:n.length)>0?e.videos.map((e=>{return t=e,b.apiURL(`/view?filename=${encodeURIComponent(t.filename)}&type=${t.type}&subfolder=${t.subfolder}&rand=${Math.random()}`);var t})):Je(e);(null==a?void 0:a.length)&&((null==t?void 0:t.block)&&(e.isLoading=!0),(async e=>Promise.all(e.map((e=>o(e)))))(a).then((e=>{const t=e.filter((e=>null!==e));t.length&&(null==i||i(t))})).catch((()=>{null==s||s()})).finally((()=>{e.isLoading=!1})))}}},et=e=>{e.previewMediaType="image";return $e(e,{loadElement:e=>new Promise((t=>{const n=new Image;n.onload=()=>t(n),n.onerror=()=>t(null),n.src=e})),onLoaded:t=>{e.imageIndex=null,e.imgs=t},onFailedLoading:()=>{e.imgs=void 0}})},tt=e=>{e.previewMediaType="video";return $e(e,{loadElement:e=>new Promise((t=>{const n=document.createElement("video");Object.assign(n,Qe),n.onloadeddata=()=>t(n),n.onerror=()=>t(null),n.src=e})),onLoaded:t=>{const n=t[0];var i,s;n&&(e.videoContainer||(e.imgs&&(e.imgs=void 0),e.videoContainer=(()=>{const e=document.createElement("div");return e.classList.add("comfy-img-preview"),e})(),e.videoContainer.style.pointerEvents="auto",i=e.videoContainer,(null==(s=e.widgets)?void 0:s.some((e=>e.name===Be)))||e.addDOMWidget(Be,"video",i,{hideOnZoom:!1,serialize:!1})),e.videoContainer.replaceChildren(n),e.imageOffset=64)},onFailedLoading:()=>{e.videoContainer=void 0}})};function nt(e,t){var n;if(e.flags.collapsed)return;const{showCanvasImagePreview:i,removeCanvasImagePreview:s}=function(){const e=We();return{showCanvasImagePreview:function(t){var n;(null==(n=t.imgs)?void 0:n.length)&&t.widgets&&(t.widgets.find((e=>e.name===Ue))||e(t,{type:"IMAGE_PREVIEW",name:Ue}))},removeCanvasImagePreview:function(e){var t,n;if(!e.widgets)return;const i=e.widgets.findIndex((e=>e.name===Ue));i>-1&&(null==(n=(t=e.widgets[i]).onRemove)||n.call(t),e.widgets.splice(i,1))}}}(),{showVideoPreview:o,removeVideoPreview:a}={showVideoPreview:function(e){var t;(null==(t=e.video)?void 0:t.length)&&e.widgets&&e.widgets.findIndex((e=>e.name===Xe))},removeVideoPreview:function(e){var t,n;if(!e.widgets)return;const i=e.widgets.findIndex((e=>"video-preview"===e.name));i>-1&&(null==(n=(t=e.widgets[i]).onRemove)||n.call(t),e.widgets.splice(i,1))}},l=Ke(e),r=Ye(e),A=l&&(e.images!==l.images||e.videos!==l.videos),d=r&&e.preview!==r;if(d&&(e.isOutputFinal=!1,e.isTwiceRendered&&(e.isTwiceRendered=!1),e.preview=r),A&&(e.isOutputFinal=!0,l.images&&(e.images=l.images),l.videos&&(e.videos=l.videos)),A||d){e.animatedImages=null==l?void 0:l.animated;const t=e.animatedImages&&l.images.some((e=>{var t;return null==(t=e.filename)?void 0:t.includes("webp")})),n=e.animatedImages&&!t||!!(u=this)&&(!!u.videoContainer||!!u.widgets&&qe(u,Ze));A&&(null==l?void 0:l.videos)||n?tt(e).showPreview():et(e).showPreview()}var u;if(e.id!=v.runningNodeId&&!e.isTwiceRendered){if(!e.isOutputFinal)return;e.videos?tt(e.videos):et(e).showPreview(),e.isTwiceRendered=!0}(null==(n=e.imgs)?void 0:n.length)&&(e.animatedImages||A&&(null==l?void 0:l.videos)?(s(e),o(e)):(a(e),i(e)))}const it=["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","encode"],st=["LIGHT - SD1.5 only (low strength)","STANDARD (medium strength)","VIT-G (medium strength)","REGULAR - FLUX and SD3.5 only (high strength)","PLUS (high strength)","PLUS (kolors genernal)","PLUS FACE (portraits)","FULL FACE - SD1.5 only (portraits stronger)","COMPOSITION"],ot=["FACEID","FACEID PLUS - SD1.5 only","FACEID PLUS V2","FACEID PLUS KOLORS","FACEID PORTRAIT (style transfer)","FACEID PORTRAIT UNNORM - SDXL only (strong)"],at=["easy seed","easy latentNoisy","easy wildcards","easy preSampling","easy preSamplingAdvanced","easy preSamplingNoiseIn","easy preSamplingSdTurbo","easy preSamplingCascade","easy preSamplingDynamicCFG","easy preSamplingLayerDiffusion","easy fullkSampler","easy fullCascadeKSampler"],lt=["easy fullLoader","easy a1111Loader","easy comfyLoader","easy hyditLoader","easy pixArtLoader"],rt=["easy fullkSampler","easy kSampler","easy kSamplerCustom","easy kSamplerTiled","easy kSamplerLayerDiffusion","easy kSamplerInpainting","easy kSamplerDownscaleUnet","easy kSamplerSDTurbo","easy fullCascadeKSampler","easy cascadeKSampler"],At=["easy imageSize","easy imageSizeBySide","easy imageSizeByLongerSide","easy imageSizeShow","easy imageRatio","easy imagePixelPerfect"],dt=["easy forLoopStart","easy forLoopEnd","easy whileLoopStart","easy whileLoopEnd"],ut=["easy anythingIndexSwitch","easy imageIndexSwitch","easy textIndexSwitch","easy conditioningIndexSwitch"],ct=["easy anythingInversedSwitch"],pt=["easy loadImagesForLoop",...dt,...ut,...ct],ht={"easy anythingInversedSwitch":"out","easy anythingIndexSwitch":"value","easy imageIndexSwitch":"image","easy textIndexSwitch":"text","easy conditioningIndexSwitch":"cond"};let mt=null;function ft(e,t){const n=e.comfyClass;let i=t.value;switch(t.name){case"range_mode":ge(e,fe(e,"step"),"step"==i),ge(e,fe(e,"num_steps"),"num_steps"==i),ve(e);break;case"text_combine_mode":ge(e,fe(e,"replace_text"),"replace"==i);break;case"lora_name":["lora_model_strength","lora_clip_strength"].map((t=>ge(e,fe(e,t),"None"!==i)));break;case"resolution":"自定义 x 自定义"===i&&(t.value="width x height (custom)"),setTimeout((t=>{["empty_latent_width","empty_latent_height","width","height"].map((t=>ge(e,fe(e,t),"width x height (custom)"===i)))}),1);break;case"ratio":setTimeout((t=>{["empty_latent_width","empty_latent_height"].map((t=>ge(e,fe(e,t),"custom"===i)))}),1);break;case"num_loras":var s=i+1,o=fe(e,"mode").value;for(let t=0;tge(e,fe(e,t),"simple"!==o)));for(let t=s;t<21;t++)["lora_"+t+"_name","lora_"+t+"_strength","lora_"+t+"_model_strength","lora_"+t+"_clip_strength"].map((t=>ge(e,fe(e,t),!1)));ve(e);break;case"num_controlnet":s=i+1,o=fe(e,"mode").value;for(let t=0;tge(e,fe(e,t),!0))),["start_percent_"+t,"end_percent_"+t].map((t=>ge(e,fe(e,t),"simple"!==o)));for(let t=s;t<21;t++)["controlnet_"+t,"controlnet_"+t+"_strength","scale_soft_weight_"+t,"start_percent_"+t,"end_percent_"+t].map((t=>ge(e,fe(e,t),!1)));ve(e);break;case"mode":switch(null==e?void 0:e.comfyClass){case"easy loraStack":s=fe(e,"num_loras").value+1,o=i;for(let t=0;tge(e,fe(e,t),"simple"!==o)));ve(e);break;case"easy controlnetStack":s=fe(e,"num_controlnet").value+1,o=i;for(let t=0;tge(e,fe(e,t),"simple"!==o)));ve(e);break;case"easy icLightApply":o=i;["lighting","remove_bg"].map((t=>ge(e,fe(e,t),"Foreground"===o))),ge(e,fe(e,"source"),"Foreground"!==o),ve(e)}break;case"toggle":t.type="toggle",t.options={on:"Enabled",off:"Disabled"};break;case"t5_type":["clip_name","padding"].map((t=>ge(e,fe(e,t),"sd3"==i))),["t5_name","device","dtype"].map((t=>ge(e,fe(e,t),"t5v11"==i))),ve(e);break;case"preset":if("FLUX.1-dev"==i&&(t.value="REGULAR - FLUX and SD3.5 only (high strength)"),st.includes(i)){let t=fe(e,"use_tiled");ge(e,fe(e,"lora_strength")),ge(e,fe(e,"provider"),!!["REGULAR - FLUX and SD3.5 only (high strength)"].includes(i)),ge(e,fe(e,"weight_faceidv2")),ge(e,fe(e,"weight_kolors")),ge(e,fe(e,"use_tiled"),!0),ge(e,fe(e,"sharpening"),t&&t.value)}else ot.includes(i)&&(ge(e,fe(e,"weight_faceidv2"),!!["FACEID PLUS V2","FACEID PLUS KOLORS"].includes(i)),ge(e,fe(e,"weight_kolors"),!!["FACEID PLUS KOLORS"].includes(t.value)),["FACEID PLUS KOLORS","FACEID PORTRAIT (style transfer)","FACEID PORTRAIT UNNORM - SDXL only (strong)"].includes(i)?ge(e,fe(e,"lora_strength"),!1):ge(e,fe(e,"lora_strength"),!0),ge(e,fe(e,"provider"),!0),ge(e,fe(e,"use_tiled")),ge(e,fe(e,"sharpening")));ve(e);break;case"use_tiled":ge(e,fe(e,"sharpening"),!!i),ve(e);break;case"num_embeds":s=i+1;for(let t=0;tge(e,fe(e,t),!1)));break;case"brushnet_random":case"brushnet_segmentation":["dtype","scale","start_at","end_at"].map((t=>ge(e,fe(e,t),!0))),["fitting","function"].map((t=>ge(e,fe(e,t),!1)));break;case"powerpaint":["dtype","fitting","function","scale","start_at","end_at"].map((t=>ge(e,fe(e,t),!0)))}ve(e);break;case"encode":ge(e,fe(e,"noise_mask"),!!["inpaint_model_conditioning","different_diffusion"].includes(i)),ve(e);break;case"image_output":ge(e,fe(e,"link_id"),!!["Sender","Sender&Save"].includes(i)),ge(e,fe(e,"decode_vae_name"),!!["Hide","Hide&Save"].includes(i)),["save_prefix","output_path","embed_workflow","number_padding","overwrite_existing"].map((t=>ge(e,fe(e,t),!!["Save","Hide&Save","Sender&Save"].includes(i))));break;case"add_noise":var a=fe(e,"control_before_generate"),l=fe(e,"control_after_generate")||a;"disable"===i?(ge(e,fe(e,"seed")),l&&(l.last_value=l.value,l.value="fixed",ge(e,l))):("enable"===i&&(t.value="enable (CPU)"),ge(e,fe(e,"seed"),!0),l&&((null==l?void 0:l.last_value)&&(l.value=l.last_value),ge(e,l,!0))),ve(e);break;case"guider":switch(i){case"Basic":case"IP2P+Basic":["cfg_negative"].map((t=>ge(e,fe(e,t))));break;case"CFG":case"IP2P+CFG":ge(e,fe(e,"cfg"),!0),ge(e,fe(e,"cfg_negative"));break;case"DualCFG":case"IP2P+DualCFG":["cfg","cfg_negative"].map((t=>ge(e,fe(e,t),!0)))}ve(e);break;case"scheduler":["karrasADV","exponentialADV","polyExponential"].includes(i)?(["sigma_max","sigma_min"].map((t=>ge(e,fe(e,t),!0))),["denoise","beta_d","beta_min","eps_s","coeff"].map((t=>ge(e,fe(e,t))),!1),ge(e,fe(e,"rho"),"exponentialADV"!=i)):"vp"==i?(["sigma_max","sigma_min","denoise","rho","coeff"].map((t=>ge(e,fe(e,t)))),["beta_d","beta_min","eps_s"].map((t=>ge(e,fe(e,t),!0)))):(["sigma_max","sigma_min","beta_d","beta_min","eps_s","rho"].map((t=>ge(e,fe(e,t)))),ge(e,fe(e,"coeff"),"gits"==i),ge(e,fe(e,"denoise"),!0)),ve(e);break;case"conditioning_mode":["replace","concat","combine"].includes(i)?["average_strength","old_cond_start","old_cond_end","new_cond_start","new_cond_end"].map((t=>ge(e,fe(e,t)))):"average"==i?(ge(e,fe(e,"average_strength"),!0),["old_cond_start","old_cond_end","new_cond_start","new_cond_end"].map((t=>ge(e,fe(e,t),!1)))):"timestep"==i&&(["average_strength"].map((t=>ge(e,fe(e,t),!1))),["old_cond_start","old_cond_end","new_cond_start","new_cond_end"].map((t=>ge(e,fe(e,t),!0))));break;case"rescale":fe(e,"rescale_after_model").value,ge(e,fe(e,"width"),"to Width/Height"===i),ge(e,fe(e,"height"),"to Width/Height"===i),ge(e,fe(e,"percent"),"by percentage"===i),ge(e,fe(e,"longer_side"),"to longer side - maintain aspect"===i),ve(e);break;case"upscale_method":["factor","crop"].map((t=>ge(e,fe(e,t),"None"!==i)));break;case"target_parameter":switch(n){case"easy XYInputs: Steps":["first_step","last_step"].map((t=>ge(e,fe(e,t),"steps"==i))),["first_start_step","last_start_step"].map((t=>ge(e,fe(e,t),"start_at_step"==i))),["first_end_step","last_end_step"].map((t=>ge(e,fe(e,t),"end_at_step"==i)));break;case"easy XYInputs: Sampler/Scheduler":let t=fe(e,"input_count").value+1;for(let n=0;nge(e,fe(e,t),"strength"==i))),["first_start_percent","last_start_percent"].map((t=>ge(e,fe(e,t),"start_percent"==i))),["first_end_percent","last_end_percent"].map((t=>ge(e,fe(e,t),"end_percent"==i))),["strength","start_percent","end_percent"].map((t=>ge(e,fe(e,t),i!=t))),ve(e)}case"replace_count":s=i+1;for(let t=0;tge(e,fe(e,t),!r)));for(let t=s;t<11;t++)["lora_name_"+t,"model_str_"+t,"clip_str_"+t].map((t=>ge(e,fe(e,t),!1)));ve(e);break;case"ckpt_count":s=i+1;var A=-1!=fe(e,"input_mode").value.indexOf("ClipSkip"),d=-1!=fe(e,"input_mode").value.indexOf("VAE");for(let t=0;tge(e,fe(e,t),!1)));ve(e);break;case"input_count":s=i+1;var u=fe(e,"target_parameter").value;for(let t=0;tge(e,fe(e,n),!!t)));["model_strength","clip_strength"].map((n=>ge(e,fe(e,n),!t)));break;case"easy XYInputs: Checkpoint":s=fe(e,"ckpt_count").value+1,A=-1!=fe(e,"input_mode").value.indexOf("ClipSkip"),d=-1!=fe(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,i;const s=(null==(i=null==(t=this.outputs[1])?void 0:t.links)?void 0:i.length)>0?this.outputs[1].links[0]:null,o=n.graph._nodes.find((e=>{var t;return null==(t=e.inputs)?void 0:t.find((e=>e.link==s))}));if(s&&o){const t=o.inputs.find((e=>e.link==s)).widget.name,n=o.widgets.find((e=>e.name==t));let i=(null==n?void 0:n.options.values)||null;i&&(i=i.join("\n"),e.value=i)}else B.error(T("No COMBO link"),3e3)}),{serialize:!1})}),lt.includes(t.name)){let t=function(e){var t="";for(let n=0;ne.name===t+"_prompt")),i="comfy-multiline-input wildcard_"+t+"_"+this.id.toString();if(-1==n&&e){const n=document.createElement("textarea");n.className=i,n.placeholder="Wildcard Prompt ("+t+")";const s=this.addDOMWidget(t+"_prompt","customtext",n,{getValue:e=>n.value,setValue(e){n.value=e},serialize:!1});s.inputEl=n,s.inputEl.readOnly=!0,n.addEventListener("input",(()=>{var e;null==(e=s.callback)||e.call(s,s.value)})),s.value=e}else if(this.widgets[n])if(e){this.widgets[n].value=e}else{this.widgets.splice(n,1);const e=document.getElementsByClassName(i);e&&e[0]&&e[0].remove()}}};e.prototype.onExecuted=function(e){null==l||l.apply(this,arguments);const i=t(e.positive),s=t(e.negative);n.call(this,i,"positive"),n.call(this,s,"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(){o&&o.apply(this,[]);const e=this.widgets.find((e=>"easing_mode"==e.name)),n=this.widgets.find((e=>"batch_size"==e.name)),i=this.widgets.find((e=>"scheduler"==e.name));setTimeout((s=>{i.value||(i.value=t(e.value,n.value,i.inputEl))}),1),e.callback=e=>{i.value=t(e,n.value,i.inputEl)},n.callback=n=>{i.value=t(e.value,n,i.inputEl)}}}if(at.includes(i)&&(e.prototype.onNodeCreated=async function(){o&&o.apply(this,[]);const e=this.widgets.find((e=>["seed_num","seed"].includes(e.name))),i=this.widgets.find((e=>["control before generate","control after generate","control_before_generate","control_after_generate"].includes(e.name)));if("easy seed"==t.name&&i){const t=this.addWidget("button","🎲 Manual Random Seed",null,(t=>{"fixed"!=i.value&&(i.value="fixed"),e.value=Math.floor(Math.random()*P),n.queuePrompt(0,1)}),{serialize:!1});e.linkedWidgets=[t,i]}},e.prototype.onAdded=async function(){s&&s.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","control_before_generate","control_after_generate"].includes(e.name)));t&&setTimeout((n=>{["control before generate","control_before_generate"].includes(t.name)&&0===e.value&&(e.value=Math.floor(Math.random()*P))}),1)}),"easy convertAnything"==i&&(e.prototype.onNodeCreated=async function(){o&&o.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"==i){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 i=n.callback;n.callback=(...e)=>{t(this),i&&i.apply(n,[...e])},setTimeout((e=>{t(this)}),1)}}if(pt.includes(i)){const t=e=>{switch(i){case"easy forLoopStart":return 0;case"easy forLoopEnd":return 1}},n=e=>{switch(i){case"easy forLoopStart":return 2;case"easy forLoopEnd":return 0}};e.prototype.onNodeCreated=async function(){if("easy loadImagesForLoop"==i&&(this.outputs[0].shape=5),dt.includes(i)){const e=this.inputs.findIndex((e=>"flow"===e.name)),s=this.outputs.findIndex((e=>"flow"===e.name));if(-1!==e&&(this.inputs[e].shape=5),-1!==s&&(this.outputs[s].shape=5),"easy whileLoopStart"==i||"easy whileLoopEnd"==i)return;this.inputs=this.inputs.filter(((e,n)=>n<=t()||e.widget)),this.outputs=this.outputs.filter(((e,t)=>t<=n())),ve(this)}return ut.includes(i)&&("easy textIndexSwitch"==i&&(this.widgets=this.widgets.filter(((e,t)=>t<=2))),this.inputs=this.inputs.filter(((e,t)=>t<=1||e.widget)),ve(this)),null==o?void 0:o.apply(this,arguments)},e.prototype.onConnectionsChange=function(e,s,o,a){var l,r;if("easy whileLoopStart"!=i&&"easy whileLoopEnd"!=i&&a)if(1==e){let e=this.inputs.every((e=>null!==e.link||e.widget)),n=this.inputs.filter((e=>!["condition","index","total"].includes(e.name)));if(dt.includes(i)){if(e){if(n.length>=10)return void B.warn(T("The maximum number of inputs is 10"));let e=n[n.length-1],t=parseInt(e.name.split("initial_value")[1])+1;if(this.inputs.find((e=>e.name==="initial_value"+t)))return;let i="initial_value"+t,s="value"+t;this.addInput(i,"*"),this.addOutput(s,"*")}else if(!o){const e=t();let n=this.inputs.findLastIndex((e=>e.link));if(s>=e&&(-1===n||s>=n)){let e=this.inputs[s];if(!e.name||["condition","total"].includes(e.name))return;let t=parseInt(e.name.split("initial_value")[1])+1,n=this.inputs.findIndex((e=>e.name==="initial_value"+t)),i=this.outputs.findIndex((e=>e.name==="value"+t));-1!==n&&this.removeInput(n),-1!==i&&this.removeOutput(i)}}}else if(ut.includes(i))if(e){if(n.length>=10)return void B.warn(T("The maximum number of inputs is 10"));let e=ht[i]+n.length;this.addInput(e,"*")}else o||s==this.inputs.length-2&&this.removeInput(s+1)}else if(2==e){let e=this.outputs.filter((e=>!["flow","index"].includes(e.name))),t=e.every((e=>{var t;return(null==(t=e.links)?void 0:t.length)>0}));if(dt.includes(i)){if(t){if(e.length>=10)return void B.warn(T("The maximum number of inputs is 10"));let t=e[e.length-1],n=parseInt(t.name.split("value")[1])+1;if(this.inputs.find((e=>e.name==="initial_value"+n)))return;if(this.outputs.find((e=>e.name==="value"+n)))return;let i="initial_value"+n,s="value"+n;this.addInput(i,"*"),this.addOutput(s,"*")}else if(!o){const e=n();let t=a.origin_slot,i=this.outputs.findLastIndex((e=>{var t;return(null==(t=e.links)?void 0:t.length)>0}));if(t>=e&&(-1===i||t>=i)){let e=this.outputs[t];if(!e.name||["flow","index"].includes(e.name))return;let n=parseInt(e.name.split("value")[1])+1,i=this.inputs.findIndex((e=>e.name==="initial_value"+n)),s=this.outputs.findIndex((e=>e.name==="value"+n));if(-1!==i&&(null==(l=this.inputs[i])?void 0:l.link))return;-1!==i&&this.removeInput(i),-1!==s&&this.removeOutput(s)}}}else if(ct.includes(i))if(t){if(e.length>=10)return void B.warn(T("The maximum number of inputs is 10"));let t=ht[i]+e.length;this.addOutput(t,"*")}else if(!o){let t=a.origin_slot;t==this.outputs.length-2&&0==(null==(r=e[t].links)?void 0:r.length)&&this.removeOutput(t+1)}}}}["easy fluxLoader","easy fullLoader"].includes(i)&&(e.prototype.onConnectionsChange=async function(e,t){var n,i,s,o;r&&r.apply(this,[]);const a=this.inputs.find((e=>"model_override"===e.name)),l=this.inputs.find((e=>"vae_override"===e.name));let A=fe(this,"vae_name"),d=fe(this,"ckpt_name");if(mt||(mt=await b.getNodeDefs()),(null==a?void 0:a.link)&&0==t){const e=null==(o=null==(s=null==(i=null==(n=null==mt?void 0:mt.CheckpointLoaderSimple)?void 0:n.input)?void 0:i.required)?void 0:s.ckpt_name)?void 0:o[0];setTimeout((t=>{this.widgets[0].value=e[0]||"None",ge(this,d,!(null==a?void 0:a.link))}),1)}else ge(this,d,!(null==a?void 0:a.link));if(!(null==l?void 0:l.link)||1!=t&&2!=t)ge(this,A,!(null==l?void 0:l.link));else{let e=this.widgets.findIndex((e=>"vae_name"==e.name));setTimeout((t=>{this.widgets[e].value="Baked VAE",ge(this,A,!(null==l?void 0:l.link))}),1)}}),rt.includes(i)&&(e.prototype.onDrawBackground=function(e){try{nt(this)}catch(t){}})},nodeCreated(e){if(e.comfyClass.startsWith("easy ")){if(e.widgets)for(const n of e.widgets){if(!it.includes(n.name))continue;let t=n.value;ft(e,n),Object.defineProperty(n,"value",{get:e=>t,set(i){i!==t&&(t=i,ft(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","easy wildcardsMatrix"].includes(t)){const t=e.widgets.find((e=>"text"==e.name));let n=1;Object.defineProperty(e.widgets[n],"value",{set:e=>{if("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=>{"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("easy prompt"==t){const t=e.widgets.find((e=>"text"==e.name));let n=1;Object.defineProperty(e.widgets[n],"value",{set:i=>{var s,o;"Select the prefix to add to the text"!=i&&(null==(o=null==(s=e.widgets[n])?void 0:s.options)?void 0:o.values.includes(i))&&(""==t.value?t.value+=i:t.value+=" "+i)},get:e=>"Select the prefix to add to the text"}),Object.defineProperty(e.widgets[n+1],"value",{set:i=>{var s,o;"👤Select the subject add to the text"!=i&&(null==(o=null==(s=e.widgets[n+1])?void 0:s.options)?void 0:o.values.includes(i))&&(""==t.value?t.value+=i:t.value+=" "+i)},get:e=>"👤Select the subject add to the text"}),Object.defineProperty(e.widgets[n+2],"value",{set:i=>{var s,o;"🎬Select the action add to the text"!=i&&(null==(o=null==(s=e.widgets[n+2])?void 0:s.options)?void 0:o.values.includes(i))&&(""==t.value?t.value+=i:t.value+=","+i)},get:e=>"🎬Select the action add to the text"}),Object.defineProperty(e.widgets[n+3],"value",{set:i=>{var s,o;"👚Select the clothes add to the text"!=i&&(null==(o=null==(s=e.widgets[n+3])?void 0:s.options)?void 0:o.values.includes(i))&&(""==t.value?t.value+=i:t.value+=","+i)},get:e=>"👚Select the clothes add to the text"}),Object.defineProperty(e.widgets[n+4],"value",{set:i=>{var s,o;"☀️Select the illumination environment add to the text"!=i&&(null==(o=null==(s=e.widgets[n+4])?void 0:s.options)?void 0:o.values.includes(i))&&(""==t.value?t.value+=i:t.value+=","+i)},get:e=>"☀️Select the illumination environment add to the text"}),Object.defineProperty(e.widgets[n+5],"value",{set:i=>{var s,o;"🎞️Select the background add to the text"!=i&&(null==(o=null==(s=e.widgets[n+5])?void 0:s.options)?void 0:o.values.includes(i))&&(""==t.value?t.value+=i:t.value+=" "+i)},get:e=>"🎞️Select the background add to the text"}),Object.defineProperty(e.widgets[n+6],"value",{set:i=>{var s,o;"🔞Select the nsfw add to the text"!=i&&(null==(o=null==(s=e.widgets[n+6])?void 0:s.options)?void 0:o.values.includes(i))&&(""==t.value?t.value+=i:t.value+=","+i)},get:e=>"🔞Select the nsfw add to the text"}),e.widgets[n].serializeValue=e=>"Select the prefix add to the text",e.widgets[n+1].serializeValue=e=>"👤Select the subject add to the text",e.widgets[n+2].serializeValue=e=>"🎬Select the action add to the text",e.widgets[n+3].serializeValue=e=>"👚Select the clothes add to the text",e.widgets[n+4].serializeValue=e=>"☀️Select the illumination environment add to the text",e.widgets[n+5].serializeValue=e=>"🎞️Select the background add to the text",e.widgets[n+6].serializeValue=e=>"🔞Select the nsfw add to the text"}if(At.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)}))}}}});const gt=LiteGraph.LGraphNode;v.registerExtension({name:"easy bookmark",registerCustomNodes(){class e extends gt{constructor(){super("🔖"),m(this,"type","easy bookmark"),m(this,"title","🔖"),m(this,"slot_start_y",-20),m(this,"___collapsed_width",0),m(this,"isVirtualNode",!0),m(this,"serialize_widgets",!0),m(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=v.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=v.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"}}),v.registerExtension({name:"Comfy.EasyUse.ChainNode",init(){v.canvas._mousemove_callback=e=>{x("EasyUse.Nodes.ChainGetSet",null)&&((e=!1,t={})=>{var n,i,s,o,a;const l=Ie();if(!l||l.length<1)return;const r=we();if(0===r.length)return;let A=t.inputX||160,d=t.ouputX||60;if(r.filter((e=>Ce(e))).length>1)return;for(const c of r){let o=t.inputY||10,a=t.outputY||30;const l=[],u=c.id;if(c.graph){Te[u]||(Te[u]=[]);for(const e of c.inputs??[]){const t=e.link;if(!t)continue;const{origin_id:n,target_slot:i}=Ee(t),s=be(n);if(!s)continue;if(!Ce(s))continue;let a=c.getConnectionPos(!0,i);Te[u][i]||(Te[u][i]=a),!Te[u]||Te[u][i][1]===a[1]&&Te[u][i][0]===a[0]||(A=a[0]-Te[u][i][0],o=a[1]-Te[u][i][1],s.pos=[s.pos[0]+A,s.pos[1]+o]),Te[u][i]=a,l.push(s)}Oe[u]||(Oe[u]=[]);for(const e of c.outputs??[])if(e.links&&c.graph)for(const t of e.links){const{target_id:e,target_slot:i,origin_slot:s}=Ee(t),o=be(e);if(!o)continue;if(!Ce(o))continue;const r=null==(n=o.outputs)?void 0:n.links;if((null==r?void 0:r.length)>1)return;const A=c.getConnectionPos(!1,s);Oe[u][s]||(Oe[u][s]=A),!Oe[u]||Oe[u][s][0]===A[0]&&Oe[u][s][1]===A[1]||(d=A[0]-Oe[u][s][0],a=A[1]-Oe[u][s][1],o.pos=[o.pos[0]+d,o.pos[1]+a]),Oe[u][s]=A,l.push(o)}if(e&&1===r.length){const e=[c,...l];(null==(s=null==(i=c.graph)?void 0:i.list_of_graphcanvas)?void 0:s[0]).selectNodes(e)}}}const u=r[0];if(!u)return;(null==(a=null==(o=u.graph)?void 0:o.list_of_graphcanvas)?void 0:a[0]).setDirty(!0,!0)})()};const e=LGraphCanvas.prototype.showLinkMenu;LGraphCanvas.prototype.showLinkMenu=function(t,n){return n.shiftKey?(((e,t=!1)=>{var n,i,s,o,a,l,r,A,d,u;const{type:c}=e;if("*"===c)return;let{origin_id:p,target_id:h,origin_slot:m,target_slot:f}=e,g=be(p),y=be(h);if(!g||!y)return!1;if("Reroute"===g.type){let e=0;[g,e]=Pe(g),p=null==g?void 0:g.id,m=e,void 0!==m&&-1!==m||(m=0)}if("Reroute"===y.type&&(y=Ge(y),h=null==y?void 0:y.id,f=null==y?void 0:y.inputs.findIndex((e=>e.type===c)),void 0!==f&&-1!==f||(f=0)),void 0===p||void 0===h||!g||!y)return!1;if(t&&(Ce(g)||Ce(y)))return!1;let v=ke((null==(n=y.getInputInfo(f))?void 0:n.name)??c.toLowerCase());v||(v=ke((null==(s=null==(i=null==g?void 0:g.outputs)?void 0:i[m])?void 0:s.name)??(null==(a=null==(o=null==g?void 0:g.outputs)?void 0:o[m])?void 0:a.type.toString())??v+`_from_${p}_to_${h}`));let b,w=!1,_=!1;if(Ce(g))v=ye(g),_=!0;else{const e=null==(r=null==(l=g.outputs)?void 0:l[m])?void 0:r.links;if(e)for(const t of e){const e=be((null==(A=Ee(t))?void 0:A.target_id)??-1);e&&Ce(e)&&Ne(e)&&(v=ye(e),_=!0)}if(!_){for(const e of Ie()){if(v!==ye(e)||!Ne(e))continue;const t=null==(d=e.inputs[0])?void 0:d.link;(null==(u=Ee(t))?void 0:u.origin_id)===g.id?_=!0:w=!0}w&&(v+=`_from_${p}_to_${h}`)}}if(!_){b=LiteGraph.createNode("easy setNode"),b.is_auto_link=!0;const e=g.getConnectionPos(!1,m);b.pos=[e[0]+20,e[1]],b.inputs[0].name=v,b.inputs[0].type=c,b.inputs[0].widget=y.inputs[f].widget,De(b,v),Re(b),b.flags.collapsed=!0;let t=[];g.widgets?t=Object.values(g.widgets).map((e=>e.value)):g.widgets_values&&(t=JSON.parse(JSON.stringify(g.widgets_values))),g.connect(m,b,0),g.widgets_values=t,"PrimitiveNode"===g.type&&setTimeout((()=>{if(g){g.connect(m,b,0);for(const[e,n]of t.entries())De(g,n,e);null!==b&&b.setSize(b.computeSize())}}))}const L=LiteGraph.createNode("easy getNode"),S=y.getConnectionPos(!0,f);L.pos=[S[0]-150,S[1]],L.outputs[0].name=v,L.outputs[0].type=c,L.outputs[0].widget=y.inputs[f].widget,Re(L),De(L,v),null===L||(L.flags.collapsed=!0,L.setSize(L.computeSize()),L.connect(0,y,f))})(t),!1):(e.apply(this,[t,n]),!1)}}});const yt=async()=>{try{const{Running:e,Pending:t}=await b.getQueue();if(e.length>0||t.length>0)return void B.error(T("Clean Failed")+":"+T("Please stop all running tasks before cleaning GPU"));200==(await b.fetchApi("/easyuse/cleangpu",{method:"POST"})).status?B.success(T("Clean SuccessFully")):B.error(T("Clean Failed"))}catch(e){}};let vt={},bt=!1;function wt(e,t,n,i,s){var o=LGraphCanvas.active_canvas,a=o.getCanvasWindow(),l=o.graph;if(l)return function e(t,i){var r=LiteGraph.getNodeTypesCategories(o.filter||l.filter).filter((function(e){return e.startsWith(t)})),A=[];r.map((function(n){if(n){var i=new RegExp("^("+t+")"),s=n.replace(i,"").split("/")[0],o=""===t?s+"/":t+s+"/",a=s;-1!=a.indexOf("::")&&(a=a.split("::")[1]),-1===A.findIndex((function(e){return e.value===o}))&&A.push({value:o,content:a,has_submenu:!0,callback:function(t,n,i,s){e(t.value,s)}})}})),LiteGraph.getNodeTypesInCategory(t.slice(0,-1),o.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,i){var a=i.getFirstEvent();o.graph.beforeChange();var l=LiteGraph.createNode(e.value);l&&(l.pos=o.convertEventToCanvasOffset(a),o.graph.add(l)),s&&s(l),o.graph.afterChange()}};A.push(t)}}));const d=x("EasyUse.ContextMenu.NodesSort",null);""===t&&d&&(A=function(e){let t=[],n=[];return e.forEach((e=>{(null==e?void 0:e.value)&&G.includes(e.value.split("/")[0])?t.push(e):n.push(e)})),[{title:T("ComfyUI Basic"),is_category_title:!0},...t,{title:T("Others A~Z"),is_category_title:!0},...n.sort(((e,t)=>e.content.localeCompare(t.content)))]}(A)),new LiteGraph.ContextMenu(A,{event:n,parentMenu:i},a)}("",i),!1}function _t(e){try{return encodeURIComponent(e).replace(/[!'()*]/g,(e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`))}catch(t){return e}}function Lt(e,t,n){var i=this;n=n||{};var s=document.createElement("div");s.className="litemenu-entry submenu";var o=!1;function a(e){var t=this.value,s=!0;(i.current_submenu&&i.current_submenu.close(e),n.callback)&&(!0===n.callback.call(this,t,n,e,i,n.node)&&(s=!1));if(t){if(t.callback&&!n.ignore_item_callbacks&&!0!==t.disabled)!0===t.callback.call(this,t,n,e,i,n.extra)&&(s=!1);if(t.submenu){if(!t.submenu.options)throw"ContextMenu submenu needs options";new i.constructor(t.submenu.options,{callback:t.submenu.callback,event:e,parentMenu:i,ignore_item_callbacks:t.submenu.ignore_item_callbacks,title:t.submenu.title,extra:t.submenu.extra,autoopen:n.autoopen}),s=!1}}s&&!i.lock&&i.close()}return null===t?s.classList.add("separator"):t.is_category_title?(s.classList.remove("litemenu-entry"),s.classList.remove("submenu"),s.classList.add("litemenu-title"),s.innerHTML=t.title):(s.innerHTML=t&&t.title?t.title:e,s.value=t,t&&(t.disabled&&(o=!0,s.classList.add("disabled")),(t.submenu||t.has_submenu)&&s.classList.add("has_submenu")),"function"==typeof t?(s.dataset.value=e,s.onclick_callback=t):s.dataset.value=t,t.className&&(s.className+=" "+t.className)),s&&(null==t?void 0:t.thumbnail)&&(s.addEventListener("mouseenter",Et(s,t,this.root),{passive:!0}),s.addEventListener("mouseleave",kt(),{passive:!0}),s.addEventListener("click",kt(),{passive:!0})),this.root.appendChild(s),o||s.addEventListener("click",a),!o&&n.autoopen&&LiteGraph.pointerListenerAdd(s,"enter",(function(e){var t=this.value;if(!t||!t.has_submenu)return;a.call(this,e)})),s}v.registerExtension({name:"Comfy.EasyUse.ContextMenu",async setup(){LGraphCanvas.onMenuAdd=wt,St();const e=LiteGraph.ContextMenu;LiteGraph.ContextMenu=function(t,n){if(!(null==n?void 0:n.callback)||t.some((e=>"string"!=typeof e))){if(n.parentMenu);else if(n.extra);else if(n.scale);else{const e=x("EasyUse.ContextMenu.QuickOptions",null);if(n.hasOwnProperty("extra")&&"Disable"!==e){if("At the forefront"==e?t.unshift(null):t.push(null),i=window.location.host,["192.168.","10.","127.",/^172\.((1[6-9]|2[0-9]|3[0-1])\.)/].some((e=>"string"==typeof e?i.startsWith(e):e.test(i)))){const n={content:`${T("Reboot ComfyUI")}`,callback:e=>(async()=>{if(confirm(T("Are you sure you'd like to reboot the server?")))try{b.fetchApi("/easyuse/reboot")}catch(e){}})()};"At the forefront"==e?t.unshift(n):t.push(n)}const n=x("EasyUse.Hotkeys.cleanVRAMUsed",null)?"("+J("Shift+r")+")":"",s={content:`${T("Cleanup Of VRAM Usage")} ${n}`,callback:e=>yt()};"At the forefront"==e?t.unshift(s):t.push(s);const o=x("EasyUse.Hotkeys.toggleNodesMap",null)?"("+J("Shift+m")+")":"",a={content:`${T("Nodes Map")} ${o}`,callback:e=>{var t,n,i;const s=(null==(t=v.extensionManager)?void 0:t.sidebarTab)||v.extensionManager,o=(null==(n=v.extensionManager.sidebarTab)?void 0:n.activeSidebarTabId)||(null==(i=v.extensionManager)?void 0:i.activeSidebarTab);s.activeSidebarTabId=o==V?null:V}};"At the forefront"==e?t.unshift(a):t.push(a)}}return e.apply(this,[...arguments])}{const i=function(e,t){const n=x("EasyUse.ContextMenu.ModelsThumbnails",null),i=x("EasyUse.ContextMenu.SubDirectories",null);if(!n&&!i)return null;if(bt)return null;const s=["ckpt","pt","bin","pth","safetensors","gguf"];if((null==e?void 0:e.length)>0){const t=null==(o=e[e.length-1])?void 0:o.substring(o.lastIndexOf(".")+1);if(!s.includes(t))return null}var o;const a=t.callback,l=[...e];t.callback=null;const r=(e,t)=>{["None","无","無","なし"].includes(e.content)?a("None",t):a(l.find((t=>t.endsWith(e.content)),t))};if(n&&!i)return e.map((e=>{var t,n;let i=null==(t=vt[e])?void 0:t.folder,s=null==(n=vt[e])?void 0:n.pathIndex;const o=window.location.protocol,a=window.location.host;let l=i?`${`${o}//${a}`}/api/experiment/models/preview/${i}/${s}/${_t(e)}`:"";return{folder:i,content:e,fullName:e,title:w("div.comfyui-easyuse-contextmenu-model",{},[w("span",{},e)]).outerHTML,thumbnail:l,callback:r}}));const A=e,d={},u=[],c=[];for(const f of A){const e=f.indexOf("/")>-1?"/":"\\",t=f.split(e);if(t.length>1){const n=t.shift();d[n]=d[n]||[],d[n].push({value:t.join(e),fullValue:f})}else"CHOOSE"===f||f.startsWith("DISABLE ")?u.push({value:f,fullValue:f}):c.push({value:f,fullValue:f})}const p=Object.values(d).length,h=[],m=(e,t="",i)=>{var s,o;let a;a=w("div.comfyui-easyuse-contextmenu-model",{},[w("span",{},e)]);let l=null==(s=vt[i])?void 0:s.folder,A=null==(o=vt[i])?void 0:o.pathIndex;const d=window.location.protocol,u=window.location.host;let c=l?`${`${d}//${u}`}/api/experiment/models/preview/${l}/${A}/${_t(i)}`:"";return{folder:l,content:e,fullName:i,thumbnail:n?c:null,title:a.outerHTML,callback:r}};if(p>0){const e=(t,n)=>{let i=[],s=[];const o=t.map((({value:e,fullValue:t})=>{const o={},a=e.indexOf("/")>-1?"/":"\\",l=e.split(a);if(l.length>1){const e=l.shift();o[e]=o[e]||[],o[e].push({value:l.join(a),fullValue:t})}if(Object.values(d).length>0){let n=Object.keys(o)[0];n&&o[n]?i.push({key:n,value:o[n][0]}):s.push(m(e,n,t))}return m(e,n,t)}));if(i.length>0){let t={};return i.forEach((e=>{t[e.key]=t[e.key]||[],t[e.key].push(e.value)})),[...Object.entries(t).map((t=>({content:t[0],has_submenu:!0,callback:()=>{},submenu:{options:e(t[1],t[0])}}))),...s]}return o};for(const[t,n]of Object.entries(d))h.push({content:t,has_submenu:!0,callback:()=>{},submenu:{options:e(n,t)}})}h.push(...c.map((e=>m(e.value,"",e.fullValue)))),u.length>0&&h.push(...u.map((e=>m(e.value,"",e.fullValue))));return h}(t,n);return i?e.call(this,i,n):e.apply(this,[...arguments])}var i},LiteGraph.ContextMenu.prototype=e.prototype,x("EasyUse.ContextMenu.NodesSort")&&(LiteGraph.ContextMenu.prototype.addItem=Lt),document.getElementById("graph-canvas").addEventListener("mouseenter",(e=>{setTimeout((e=>{const t=document.getElementById("easyuse-model-thumbnail");t&&0!=t.style.opacity&&(t.style.display="none",t.style.opacity=0,t.style.left="0px",t.style.top="0px")}),100)}))},async beforeRegisterNodeDef(e,t,n){const i=e.prototype.onNodeCreated;["CheckpointLoader|pysssss","LoraLoader|pysssss"].includes(t.name)&&(e.prototype.onNodeCreated=async function(){i&&i.apply(this,[]);let e=fe(this,"lora_name")||fe(this,"ckpt_name");if(e){let t=e.onClick;e.onClick=function(e){return bt=!0,setTimeout((e=>{bt=!1}),500),t.call(this,e)}}})}});const St=async()=>{["checkpoints","loras","diffusion_models"].map((async e=>{const t=await b.getModels(e);(null==t?void 0:t.length)>0&&t.map((t=>{vt[t.name]={folder:e,pathIndex:t.pathIndex}}))}))},Et=(e,t,n)=>i=>{var s;const o=t=>{setTimeout((i=>{const s=n.getBoundingClientRect();if(!s)return;const o=document.body.getBoundingClientRect();if(!o)return;const{left:a,top:l}=((e,t,n)=>{const{x:i}=e.getBoundingClientRect();let{top:s,left:o}=t;const{width:a,height:l}=n;return i<=a&&(o+=t.width),t.top<=l||(s=l),{left:o,top:s}})(e,s,o),r=document.getElementById("easyuse-model-thumbnail");r.src=t,r.style.left=`${a}px`,r.style.top=`${l}px`,r.style.display="block",r.style.opacity=1,r.onerror=e=>{r.src=j}}),10)};if(null==(s=null==vt?void 0:vt[t.fullName])?void 0:s.img){let e=vt[t.fullName].img;o("no_preview_image"==e?j:e.src)}else{let e=new Image;e.src=t.thumbnail,e.onload=n=>{vt[t.fullName].img=e,o(t.thumbnail)},e.onerror=n=>{e=null,vt[t.fullName].img="no_preview_image",o(j)}}},kt=()=>e=>{const t=document.getElementById("easyuse-model-thumbnail");t&&0!=t.style.opacity&&(t.style.display="none",t.style.opacity=0,t.style.left="0px",t.style.top="0px")};class xt extends _{constructor(){super(),this.element.classList.add("easyuse-model-metadata")}show(e){super.show(w("div",Object.keys(e).map((t=>w("div",[w("label",{textContent:t}),w("span",{textContent:e[t]})])))))}}class Nt extends _{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=w("div",{style:{flex:"auto"}}),this.imgCurrent=0,this.imgList=w("div.easyuse-preview-list",{style:{display:"none"}}),this.imgWrapper=w("div.easyuse-preview",[w("div.easyuse-preview-group",[this.imgList])]),this.main=w("main",{style:{display:"flex"}},[this.imgWrapper,this.info]),this.content=w("div.easyuse-model-content",[w("div.easyuse-model-header",[w("h2",{textContent:this.name})]),this.main]);const i=w("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"),i.remove(),this.addInfo()}createButtons(){const e=super.createButtons();return this.viewMetadata=w("button",{type:"button",textContent:"View raw metadata",disabled:"disabled",style:{opacity:.5,cursor:"not-allowed"},onclick:e=>{this.metadata&&(new xt).show(this.metadata)}}),e.unshift(this.viewMetadata),e}parseNote(){if(!this.customNotes)return[];let e=[];const t=new RegExp("(\\bhttps?:\\/\\/[^\\s]+)","g");let n,i=0;do{let s;n=t.exec(this.customNotes);let o=0;n?(s=n.index,o=n.index+n[0].length):s=this.customNotes.length;let a=this.customNotes.substring(i,s);a&&(a=a.replaceAll("\n","
"),e.push(w("span",{innerHTML:a}))),n&&e.push(w("a",{href:n[0],textContent:n[0],target:"_blank"})),i=o}while(n);return e}addInfoEntry(e,t){return w("p",{parent:this.info},["string"==typeof e?w("label",{textContent:e+": "}):e,"string"==typeof t?w("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=w("span",{textContent:"ℹ️ Loading..."});return this.addInfoEntry(w("label",[w("img",{style:{width:"18px",position:"relative",top:"3px",margin:"0 5px 0 0"},src:"https://civitai.com/favicon.ico"}),w("span",{textContent:"Civitai: "})]),t),e.then((e=>{var t,n;this.imgWrapper.style.display="block";let i=this.element.querySelector(".easyuse-model-header");i&&i.replaceChildren(w("h2",{textContent:this.name}),w("div.easyuse-model-header-remark",[w("h5",{textContent:T("Updated At:")+K(new Date(e.updatedAt),"yyyy/MM/dd")}),w("h5",{textContent:T("Created At:")+K(new Date(e.updatedAt),"yyyy/MM/dd")})]));let s=null,o=this.parseNote.call(this),a=T("✏️ Edit"),l=w("div.easyuse-model-detail-textarea",[w("p",(null==o?void 0:o.length)>0?o:{textContent:T("No notes")})]);if(o&&0!=o.length?l.classList.remove("empty"):l.classList.add("empty"),this.info.replaceChildren(w("div.easyuse-model-detail",[w("div.easyuse-model-detail-head.flex-b",[w("span",T("Notes")),w("a",{textContent:a,href:"#",style:{fontSize:"12px",float:"right",color:"var(--warning-color)",textDecoration:"none"},onclick:async e=>{if(e.preventDefault(),s){if(s.value!=this.customNotes){B.showLoading(T("Saving Notes...")),this.customNotes=s.value;const e=await b.fetchApi("/easyuse/metadata/notes/"+encodeURIComponent(`${this.type}/${this.name}`),{method:"POST",body:this.customNotes});if(B.hideLoading(),200!==e.status)return B.error(T("Saving Failed")),void alert(`Error saving notes (${e.status}) ${e.statusText}`);B.success(T("Saving Succeed")),o=this.parseNote.call(this),l.replaceChildren(w("p",(null==o?void 0:o.length)>0?o:{textContent:T("No notes")})),s.value?l.classList.remove("empty"):l.classList.add("empty")}else l.replaceChildren(w("p",{textContent:T("No notes")})),l.classList.add("empty");e.target.textContent=a,s.remove(),s=null}else e.target.textContent="💾 Save",s=w("textarea",{placeholder:T("Type your notes here"),style:{width:"100%",minWidth:"200px",minHeight:"50px",height:"100px"},textContent:this.customNotes}),l.replaceChildren(s),s.focus()}})]),l]),w("div.easyuse-model-detail",[w("div.easyuse-model-detail-head",{textContent:T("Details")}),w("div.easyuse-model-detail-body",[w("div.easyuse-model-detail-item",[w("div.easyuse-model-detail-item-label",{textContent:T("Type")}),w("div.easyuse-model-detail-item-value",{textContent:e.model.type})]),w("div.easyuse-model-detail-item",[w("div.easyuse-model-detail-item-label",{textContent:T("BaseModel")}),w("div.easyuse-model-detail-item-value",{textContent:e.baseModel})]),w("div.easyuse-model-detail-item",[w("div.easyuse-model-detail-item-label",{textContent:T("Download")}),w("div.easyuse-model-detail-item-value",{textContent:(null==(t=e.stats)?void 0:t.downloadCount)||0})]),w("div.easyuse-model-detail-item",[w("div.easyuse-model-detail-item-label",{textContent:T("Trained Words")}),w("div.easyuse-model-detail-item-value",{textContent:(null==e?void 0:e.trainedWords.join(","))||"-"})]),w("div.easyuse-model-detail-item",[w("div.easyuse-model-detail-item-label",{textContent:T("Source")}),w("div.easyuse-model-detail-item-value",[w("label",[w("img",{style:{width:"14px",position:"relative",top:"3px",margin:"0 5px 0 0"},src:"https://civitai.com/favicon.ico"}),w("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(w("div.easyuse-preview-slide",[w("div.easyuse-preview-slide-content",[w("img",{src:e.url}),w("div.save",{textContent:"Save as preview",onclick:async()=>{if(this.isSaving)return;this.isSaving=!0,B.showLoading(T("Saving Preview..."));const t=await(await fetch(e.url)).blob(),n="temp_preview."+new URL(e.url).pathname.split(".")[1],i=new FormData;i.append("image",new File([t],n)),i.append("overwrite","true"),i.append("type","temp");if(200!==(await b.fetchApi("/upload/image",{method:"POST",body:i})).status)return this.isSaving=!1,B.error(T("Saving Failed")),B.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=>{B.success(T("Saving Succeed")),B.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=w("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=w("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&&w("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 Ct extends Nt{async addInfo(){await this.addCivitaiInfo()}}class It extends Nt{getTagFrequency(){if(!this.metadata.ss_tag_frequency)return[];const e=JSON.parse(this.metadata.ss_tag_frequency),t={};for(const n in e){const i=e[n];for(const e in i)e in t?t[e]+=i[e]:t[e]=i[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:i}of Object.values(t.buckets))e.push([i,`${n.join("x")} * ${i}`])}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(","),i=n[0].replace("(",""),s=n[1].replace(")","");e.push(`${i.trim()}x${s.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=>w("li.easyuse-model-tag",{dataset:{tag:e[0]},$:e=>{e.onclick=()=>{e.classList.toggle("easyuse-model-tag--selected")}}},[w("p",{textContent:e[0]}),w("span",{textContent:e[1]})])))}addTags(){let e,t=this.getTagFrequency();if(null==t?void 0:t.length){const n=t.length;let i;n>500&&(t=t.slice(0,500),e=w("p",[w("span",{textContent:"⚠️ Only showing first 500 tags "}),w("a",{href:"#",textContent:`Show all ${n}`,onclick:()=>{i.replaceChildren(...this.getTagList(this.getTagFrequency())),e.remove()}})])),i=w("ol.easyuse-model-tags-list",this.getTagList(t)),this.tags=w("div",[i])}else this.tags=w("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&&w("div",{parent:this.content,innerHTML:t.description,style:{maxHeight:"250px",overflow:"auto"}})}createButtons(){const e=super.createButtons();function t(e,t){const n=w("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(i){prompt("Copy to clipboard: Ctrl+C, Enter",text)}finally{document.body.removeChild(n)}}return e.unshift(w("button",{type:"button",textContent:"Copy Selected",onclick:e=>{t(e,[...this.tags.querySelectorAll(".easyuse-model-tag--selected")])}}),w("button",{type:"button",textContent:"Copy All",onclick:e=>{t(e,[...this.tags.querySelectorAll(".easyuse-model-tag")])}})),e}}const Tt={pipe:{category:"Easy Pipe",nodes:["easy pipeIn","easy pipeOut","easy pipeEdit","easy pipeEditPrompt","easy pipeBatchIndex"],input:{pipe:"pipe"},output:{pipe:"pipe"},widget:{optional_positive:"optional_positive",optional_negative:"optional_negative"}},loaders:{category:"Easy Loaders",nodes:["easy fullLoader","easy a1111Loader","easy comfyLoader","easy kolorsLoader","easy hunyuanDiTLoader","easy pixArtLoader","easy fluxLoader"],input:{optional_lora_stack:"optional_lora_stack",optional_controlnet_stack:"optional_controlnet_stack",positive:"positive",negative:"negative"},output:{pipe:"pipe",model:"model",vae:"vae",clip:null,positive:null,negative:null,latent:null},widget:{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:{category:"Easy PreSampling",nodes:["easy preSampling","easy preSamplingAdvanced","easy preSamplingDynamicCFG","easy preSamplingNoiseIn","easy preSamplingCustom","easy preSamplingLayerDiffusion","easy fullkSampler"],input:{pipe:"pipe",image_to_latent:"image_to_latent",latent:"latent"},output:{pipe:"pipe"},widget:{steps:"steps",cfg:"cfg",cfg_scale_min:"cfg",sampler_name:"sampler_name",scheduler:"scheduler",denoise:"denoise",seed_num:"seed_num",seed:"seed"}},samplers:{category:"Custom Sampler",nodes:["KSamplerSelect","SamplerEulerAncestral","SamplerEulerAncestralCFG++","SamplerLMS","SamplerDPMPP_3M_SDE","SamplerDPMPP_2M_SDE","SamplerDPMPP_SDE","SamplerDPMAdaptative","SamplerLCMUpscale","SamplerTCD","SamplerTCD EulerA"],output:{SAMPLER:"SAMPLER"}},sigmas:{category:"Custom Sigmas",nodes:["BasicScheduler","KarrasScheduler","ExponentialScheduler","PolyexponentialScheduler","VPScheduler","BetaSamplingScheduler","SDTurboScheduler","SplitSigmas","SplitSigmasDenoise","FlipSigmas","AlignYourStepsScheduler","GITSScheduler"],output:{SIGMAS:"SIGMAS"}},kSampler:{category:"Easy kSampler",nodes:["easy kSampler","easy kSamplerTiled","easy kSamplerCustom","easy kSamplerInpainting","easy kSamplerDownscaleUnet","easy kSamplerLayerDiffusion"],input:{pipe:"pipe",model:"model"},output:{pipe:"pipe",image:"image"},widget:{image_output:"image_output",save_prefix:"save_prefix",link_id:"link_id"}},controlNet:{category:"Easy ControlNet",nodes:["easy controlnetLoader","easy controlnetLoaderADV","easy controlnetLoader++","easy instantIDApply","easy instantIDApplyADV"],input:{pipe:"pipe",image:"image",image_kps:"image_kps",control_net:"control_net",positive:"positive",negative:"negative",mask:"mask"},output:{pipe:"pipe",positive:"positive",negative:"negative"},widget:{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"]}},adapter:{category:"Easy Adapter",nodes:["easy ipadapterApply","easy ipadapterApplyADV","easy ipadapterApplyFaceIDKolors","easy ipadapterStyleComposition","easy ipadapterApplyFromParams","easy pulIDApply","easy pulIDApplyADV"],input:{model:"model",image:"image",image_style:"image",attn_mask:"attn_mask",optional_ipadapter:"optional_ipadapter"},output:{model:"model",tiles:"tiles",masks:"masks",ipadapter:"ipadapter"},widget:{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"}},positive:{category:"Easy Positive",nodes:["easy positive","easy wildcards"],input:{},output:{text:"positive",positive:"text"},widget:{text:"positive",positive:"text"}},loadImage:{category:"Easy LoadImage",nodes:["easy loadImageBase64","LoadImage","LoadImageMask"],input:{pipe:"pipe",image:"image",mask:"mask"},output:{IMAGE:"IMAGE",MASK:"MASK"},widget:{image:"image",base64_data:"base64_data",channel:"channel"}},saveImage:{category:"Save/Preview Image",nodes:["SaveImage","PreviewImage"]},inPaint:{category:"Easy Inpaint",nodes:["easy applyBrushNet","easy applyPowerPaint","easy applyInpaint"],input:{},output:{pipe:"pipe"},widget:{dtype:"dtype",fitting:"fitting",function:"function",scale:"scale",start_at:"start_at",end_at:"end_at"}},showAny:{category:"Show Anything",nodes:["easy showAnything","easy showAnythingLazy"],input:{anything:"anything"},output:{output:"output"}},saveText:{category:"Save Text",nodes:["easy saveText","easy saveTextLazy"],input:{image:"image",text:"text",output_file_path:"output_file_path",file_name:"file_name",file_extension:"file_extension",overwrite:"overwrite"},output:{text:"text",image:"image"},widget:{image:"image",text:"text",output_file_path:"output_file_path",file_name:"file_name",file_extension:"file_extension",overwrite:"overwrite"}},persona:{category:"LLM Party Persona",nodes:["load_persona","classify_persona","classify_persona_plus","custom_persona","translate_persona","flux_persona"],input:{file_content:"file_content"},output:{system_prompt:"system_prompt"},widget:{is_enable:"is_enable"}},llmModelLoader:{category:"LLM Model Loader",nodes:["LLM_api_loader","genai_api_loader","LLM_local_loader"],output:{model:"model"}},llmModelChain:{category:"LLM Model Chain",nodes:["LLM","LLM_local"],input:{model:"model",image:"images",images:"image",extra_parameters:"extra_parameters",system_prompt_input:"system_prompt_input",user_prompt_input:"user_prompt_input",tools:"tools",file_content:"file_content"},output:{assistant_response:"assistant_response",history:"history",tool:"tool",image:"image"},widget:{system_prompt:"system_prompt",user_prompt:"user_prompt",temperature:"temperature",is_memory:"is_memory",is_tools_in_sys_prompt:"is_tools_in_sys_prompt",max_length:"max_length",main_brain:"main_brain",conversation_rounds:"conversation_rounds",history_record:"history_record",is_enable:"is_enable"}},maskModify:{category:"Mask Modify",nodes:["CropMask","ThresholdMask","GrowMask","FeatherMask","LayerMask: MaskGrain","LayerMask: MaskEdgeUltraDetail","LayerMask: MaskEdgeUltraDetail V2"],input:{mask:"mask"},output:{MASK:"MASK",mask:"mask",image:"image"}},maskModifyWAS:{category:"Mask Modify (WAS)",nodes:["Mask Dilate Region","Mask Gaussian Region"],input:{masks:"masks"},output:{MASKS:"MASKS"}},fast_loaders:{category:"Fast Loaders",nodes:["fast ckptLoader","fast unetLoader"],input:{"开始加载":"开始加载"},output:{"模型加载器":"模型加载器",MODEL:"MODEL",VAE:"VAE",CLIP:"CLIP"}},fast_inputs:{category:"Fast Inputs",nodes:["fast sdInput","fast fluxInput","fast hiDreamInput","fast videoInput"],input:{"模型加载器":"模型加载器","更多Controlnet":"更多Controlnet","图像":"图像","遮罩":"遮罩","功能节点":"功能节点"},output:{"采样":"采样","正面条件":"正面条件","负面条件":"负面条件","潜空间":"潜空间"},widget:{Sigmas:"Sigmas","分离Sigmas步数":"分离Sigmas步数","分离降噪":"分离降噪","降噪":"降噪","添加噪声":"添加噪声",seed:"seed","生成数量":"生成数量"}},fast_outputResult:{category:"Fast Outputs",nodes:["fast outputResult","fast outputResultVideo"],input:{"采样":"采样","噪声":"噪声","模型加载器":"模型加载器"},output:{"图像":"图像序列","图像序列":"图像","输出":"输出","降噪输出":"降噪输出",VAE:"VAE"},widget:{"采样预览":"采样预览","VAE解码":"VAE解码","图像输出":"视频输出","视频输出":"图像输出","保存路径":"保存路径"}}};function Ot(e,t,n){return function(){!function(e,t,n){var i;const s=LiteGraph.createNode(t);if(s){if(v.graph.add(s),s.pos=e.pos.slice(),s.size=e.size.slice(),(null==(i=e.widgets)?void 0:i.length)>0&&e.widgets.forEach((e=>{var t,i,o;if(null==(i=null==(t=Tt[n])?void 0:t.widget)?void 0:i[e.name]){const t=Tt[n].widget[e.name];if(t&&s.widgets){const n=(o=t,s.widgets.find((e=>"object"==typeof o?o.includes(e.name):e.name===o)));n&&(n.value=e.value,"seed_num"==e.name&&(n.linkedWidgets[0].value=e.linkedWidgets[0].value),"converted-widget"==e.type&&Vt(s,n,e))}}})),e.inputs&&e.inputs.forEach(((t,i)=>{var o,a,l;if(t&&t.link&&(null==(a=null==(o=Tt[n])?void 0:o.input)?void 0:a[t.name])){const i=null==(l=Tt[n])?void 0:l.input[t.name];if(null===i)return;const o=s.findInputSlot(i);if(-1!==o){const n=e.graph.links[t.link];if(n){const t=e.graph.getNodeById(n.origin_id);t&&t.connect(n.origin_slot,s,o)}}}})),e.outputs&&e.outputs.forEach(((t,i)=>{var o,a;if(t&&t.links&&(null==(a=null==(o=Tt[n])?void 0:o.output)?void 0:a[t.name])){const i=Tt[n].output[t.name];if(null===i)return;const o=s.findOutputSlot(i);-1!==o&&t.links.forEach((t=>{const n=e.graph.links[t];if(n){const t=e.graph.getNodeById(n.target_id);t&&s.connect(o,t,n.target_slot)}}))}})),v.graph.remove(e),"easy fullkSampler"==s.type){const e=s.outputs[0].links;if(e&&e[0]){const t=v.graph._nodes.find((t=>t.inputs&&t.inputs[0]&&t.inputs[0].link==e[0]));t&&v.graph.remove(t)}}else if(Tt.preSampling.nodes.includes(s.type)){const e=s.outputs[0].links;if(!e||!e[0]){const e=LiteGraph.createNode("easy kSampler");v.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 Dt=(e,t)=>{const n=e.prototype.getExtraMenuOptions;e.prototype.getExtraMenuOptions=function(){const e=n.apply(this,arguments);return t.apply(this,arguments),e}},Rt=(e,t,n,i,s=!0)=>{Dt(i,(function(i,o){o.unshift({content:e,has_submenu:s,callback:(e,i,s,o,a)=>Mt(e,i,s,o,a,t,n)}),"loaders"==t&&(o.unshift({content:T("💎 View Lora Info..."),callback:(e,t,n,i,s)=>{let o=s.widgets.find((e=>"lora_name"==e.name)).value;o&&"None"!=o&&new It(o).show("loras",o)}}),o.unshift({content:T("💎 View Checkpoint Info..."),callback:(e,t,n,i,s)=>{let o=s.widgets[0].value;o&&"None"!=o&&new Ct(o).show("checkpoints",o)}}))}))},Mt=(e,t,n,i,s,o,a)=>{const l=[];return a.map((e=>{s.type!==e&&l.push({content:`${e}`,callback:Ot(s,e,o)})})),new LiteGraph.ContextMenu(l,{event:n,callback:null,parentMenu:i,node:s}),!1},Pt="converted-widget",Gt=Symbol();function zt(e,t,n=""){if(t.origType=t.type,t.origComputeSize=t.computeSize,t.origSerializeValue=t.serializeValue,t.computeSize=()=>[0,-4],t.type=Pt+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 i of t.linkedWidgets)zt(e,i,":"+t.name)}function Vt(e,t,n){zt(e,t);const{type:i}=function(e){let t=e[0];t instanceof Array&&(t="COMBO");return{type:t}}(n),s=e.size;t.options&&t.options.forceInput||e.addInput(t.name,i,{widget:{name:t.name,[Gt]:()=>n}});for(const o of e.widgets)o.last_y+=LiteGraph.NODE_SLOT_HEIGHT;e.setSize([Math.max(s[0],e.size[0]),Math.max(s[1],e.size[1])])}const jt=function(e){var t,n,i,s;const o=e.constructor.type,a=e.properties.origVals||{},l=a.title||e.title,r=a.color||e.color,A=a.bgcolor||e.bgcolor,d=e,u={size:[...e.size],color:r,bgcolor:A,pos:[...e.pos]};let c=[],p=[];if(e.inputs)for(const g of e.inputs)if(g.link){const t=g.name,n=e.findInputSlot(t),i=e.getInputNode(n),s=e.getInputLink(n);c.push([s.origin_slot,i,t])}if(e.outputs)for(const g of e.outputs)if(g.links){const e=g.name;for(const t of g.links){const n=graph.links[t],i=graph._nodes_by_id[n.target_id];p.push([e,i,n.target_slot])}}v.graph.remove(e);let h=v.graph.add(LiteGraph.createNode(o,l,u));function m(){if(d.widgets)for(let e of d.widgets)if("converted-widget"===e.type){const t=h.widgets.find((t=>t.name===e.name));for(let n of d.inputs)n.name===e.name&&Vt(h,t,n.widget)}for(let e of c){const[t,n,i]=e;n.connect(t,h.id,i)}for(let e of p){const[t,n,i]=e;h.connect(t,n,i)}}h.inputs.map(((t,n)=>{h.inputs[n].label=e.inputs[n].label})),h.outputs.map(((t,n)=>{h.outputs[n].label=e.outputs[n].label}));let f=d.widgets_values;if(!f&&(null==(t=h.widgets)?void 0:t.length)>0)return h.widgets.forEach(((e,t)=>{const n=d.widgets[t];e.name===n.name&&e.type===n.type&&(e.value=n.value)})),void m();if(f){let e=function(e,t){var n,i,s,o,a,l;if(!0===e||!1===e){if((null==(n=t.options)?void 0:n.on)&&(null==(i=t.options)?void 0:i.off))return{value:e,pass:!0}}else if("number"==typeof e){if((null==(s=t.options)?void 0:s.min)<=e&&e<=(null==(o=t.options)?void 0:o.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 o=(null==f?void 0:f.length)<=(null==(n=h.widgets)?void 0:n.length);let a=o?0:f.length-1;const l=n=>{var i;const s=d.widgets[n];let l=h.widgets[n];if(l.name===s.name&&l.type===s.type){for(;(o?a=0)&&!t;){let{value:t,pass:n}=e(f[a],l);if(n&&null!==t){l.value=t;break}a+=o?1:-1}a++,o||(a=f.length-((null==(i=h.widgets)?void 0:i.length)-1-n))}};if(o&&(null==(i=h.widgets)?void 0:i.length)>0)for(let n=0;n0)for(let n=h.widgets.length-1;n>=0;n--)l(n)}m()};v.registerExtension({name:"Comfy.EasyUse.ExtraMenu",async beforeRegisterNodeDef(e,t,n){Dt(e,(function(e,n){n.unshift({content:T("🔃 Reload Node"),callback:(e,t,n,i,s)=>{let o=LGraphCanvas.active_canvas;if(!o.selected_nodes||Object.keys(o.selected_nodes).length<=1)jt(s);else for(let a in o.selected_nodes)jt(o.selected_nodes[a])}}),"easy ckptNames"==t.name&&n.unshift({content:T("💎 View Checkpoint Info..."),callback:(e,t,n,i,s)=>{s.widgets[0].value}})}));for(const i in Tt)Tt[i].nodes.includes(t.name)&&Rt(`↪️ Swap ${Tt[i].category}`,i,Tt[i].nodes,e)}});const Ft=LiteGraph.LGraphNode,Wt="➡️";v.registerExtension({name:"easy setNode",registerCustomNodes(){class e extends Ft{constructor(t){super("Set"),m(this,"defaultVisibility",!0),m(this,"serialize_widgets",!0),this.properties||(this.properties={previousName:""}),this.properties.showOutputText=e.defaultVisibility;const n=this;n.color=LGraphCanvas.node_colors.blue.color,this.addWidget("text","Constant","",((e,t,i,s,o)=>{n.validateName(n.graph),""!==this.widgets[0].value&&(this.title=Wt+this.widgets[0].value),this.properties.previousName=this.widgets[0].value,this.update()}),{}),this.addInput("*","*"),this.onConnectionsChange=function(e,t,i,s,o){if(1!=e||i||(this.inputs[t].type="*",this.inputs[t].name="*",this.title="Set"),s&&n.graph&&1==e&&i){const e=n.graph._nodes.find((e=>e.id==s.origin_id)).outputs[s.origin_slot];if(!e)return;const t=e.type,i=n.is_auto_link?this.widgets[0].value:e.name;"Set"===this.title&&(this.title=Wt+i,this.widgets[0].value=i),"*"===this.widgets[0].value&&(this.widgets[0].value=i),this.validateName(n.graph),this.inputs[0]&&(this.inputs[0].type=t,this.inputs[0].name=i),setTimeout((e=>{this.title=Wt+this.widgets[0].value,this.properties.previousName=this.widgets[0].value}),1)}this.update()},this.validateName=function(e){let t=n.widgets[0].value;if(""!=t){let i=0,s=[];do{s=e._nodes.filter((e=>e!=this&&("easy setNode"==e.type&&e.widgets[0].value===t))),s.length>0&&(t=n.widgets[0].value+i),i++}while(s.length>0);n.widgets[0].value=t,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(n.graph){this.findGetters(n.graph).forEach((e=>{e.setType(this.inputs[0].type)})),this.widgets[0].value&&this.findGetters(n.graph,!0).forEach((e=>{e.setName(this.widgets[0].value)}));n.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"}}),v.registerExtension({name:"easy getNode",registerCustomNodes(){class e extends Ft{constructor(t){super("Get"),m(this,"defaultVisibility",!0),m(this,"serialize_widgets",!0),this.properties||(this.properties={}),this.properties.showOutputText=e.defaultVisibility;const n=this;n.color=LGraphCanvas.node_colors.blue.color,this.addWidget("combo","Constant","",(e=>{this.onRename()}),{values:()=>n.graph._nodes.filter((e=>"easy setNode"==e.type)).map((e=>e.widgets[0].value)).sort()}),this.addOutput("*","*"),this.onConnectionsChange=function(e,t,n,i,s){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){n.widgets[0].value=e,n.onRename(),n.serialize()},this.onRename=function(e=0){const t=this.findSetter(n.graph);if(t){const n=t.inputs[0].type,i=t.inputs[0].name;this.setType(n,i),this.outputs[e].type=n,this.outputs[e].name=i,this.title="⬅️"+t.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 t=n.graph.links[e];t&&t.type!=this.outputs[0].type&&"*"!=t.type&&n.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 i=t[n];if("easy globalSeed"==i.type){if(i.widgets){const t=i.widgets.find((e=>"value"==e.name));i.widgets.find((e=>"last_seed"==e.name)).value=t.value,t.value=e.detail.value}}else if(i.widgets){const t=i.widgets.find((e=>"seed_num"==e.name||"seed"==e.name||"noise_seed"==e.name));t&&null!=e.detail.seed_map[i.id]&&(t.value=e.detail.seed_map[i.id])}}}));const Ut=b.queuePrompt;b.queuePrompt=async function(e,{output:t,workflow:n}){n.seed_widgets={};for(let i in app.graph._nodes_by_id){let e=app.graph._nodes_by_id[i].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[i]=parseInt(t))}return await Ut.call(b,e,{output:t,workflow:n})};const Xt=["easy imageSave","easy fullkSampler","easy kSampler","easy kSamplerTiled","easy kSamplerInpainting","easy kSamplerDownscaleUnet","easy kSamplerSDTurbo","easy detailerFix"];v.registerExtension({name:"Comfy.EasyUse.SaveImageExtraOutput",async beforeRegisterNodeDef(e,t,n){if(Xt.includes(t.name)){const t=e.prototype.onNodeCreated;e.prototype.onNodeCreated=function(){const e=t?t.apply(this,arguments):void 0,i=this.widgets.find((e=>"filename_prefix"===e.name||"save_prefix"===e.name));return i.serializeValue=()=>S(n,i.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 Zt=["easy wildcards","easy positive","easy negative","easy stylesSelector","easy promptConcat","easy promptReplace"],qt=["easy preSampling","easy preSamplingAdvanced","easy preSamplingNoiseIn","easy preSamplingCustom","easy preSamplingDynamicCFG","easy preSamplingSdTurbo","easy preSamplingLayerDiffusion"],Ht=["easy kSampler","easy kSamplerTiled","easy kSamplerInpainting","easy kSamplerDownscaleUnet","easy kSamplerSDTurbo"],Kt=["easy controlnetLoader","easy controlnetLoaderADV"],Yt=["easy instantIDApply","easy instantIDApplyADV"],Jt=["easy ipadapterApply","easy ipadapterApplyADV","easy ipadapterApplyFaceIDKolors","easy ipadapterStyleComposition"],Bt=["easy pipeIn","easy pipeOut","easy pipeEdit","easy pipeEditPrompt"],Qt=["easy XYPlot","easy XYPlotAdvanced"],$t=["easy setNode"],en=["RescaleCFG","LoraLoaderModelOnly","LoraLoader","FreeU","FreeU_v2",...Jt,...$t],tn={"easy seed":{from:{INT:[...qt,"easy fullkSampler"]}},"easy positive":{from:{STRING:[...Zt]}},"easy negative":{from:{STRING:[...Zt]}},"easy wildcards":{from:{STRING:["easy showAnything",...Zt]}},"easy stylesSelector":{from:{STRING:["easy showAnything",...Zt]}},"easy promptConcat":{from:{STRING:["easy showAnything",...Zt]}},"easy promptReplace":{from:{STRING:["easy showAnything",...Zt]}},"easy fullLoader":{from:{PIPE_LINE:[...qt,"easy fullkSampler",...Bt,...$t],MODEL:en},to:{STRING:[...Zt]}},"easy a1111Loader":{from:{PIPE_LINE:[...qt,...Kt,...Yt,...Bt,...$t],MODEL:en},to:{STRING:[...Zt]}},"easy comfyLoader":{from:{PIPE_LINE:[...qt,...Kt,...Yt,...Bt,...$t],MODEL:en},to:{STRING:[...Zt]}},"easy hunyuanDiTLoader":{from:{PIPE_LINE:[...qt,...Kt,...Yt,...Bt,...$t],MODEL:en},to:{STRING:[...Zt]}},"easy kolorsLoader":{from:{PIPE_LINE:[...qt,...Kt,...Yt,...Bt,...$t],MODEL:en},to:{STRING:[...Zt]}},"easy pixArtLoader":{from:{PIPE_LINE:[...qt,...Kt,...Yt,...Bt,...$t],MODEL:en},to:{STRING:[...Zt]}},"easy fluxLoader":{from:{PIPE_LINE:[...qt,...Kt,...Yt,...Bt,...$t],MODEL:en},to:{STRING:[...Zt]}},"easy svdLoader":{from:{PIPE_LINE:["easy preSampling","easy preSamplingAdvanced","easy preSamplingDynamicCFG",...Bt,...$t],MODEL:en},to:{STRING:[...Zt]}},"easy zero123Loader":{from:{PIPE_LINE:["easy preSampling","easy preSamplingAdvanced","easy preSamplingDynamicCFG",...Bt,...$t],MODEL:en},to:{STRING:[...Zt]}},"easy sv3dLoader":{from:{PIPE_LINE:["easy preSampling","easy preSamplingAdvanced","easy preSamplingDynamicCFG",...Bt,...$t],MODEL:en},to:{STRING:[...Zt]}},"easy preSampling":{from:{PIPE_LINE:[...Ht,...Bt,...Kt,...Qt,...$t]}},"easy preSamplingAdvanced":{from:{PIPE_LINE:[...Ht,...Bt,...Kt,...Qt,...$t]}},"easy preSamplingDynamicCFG":{from:{PIPE_LINE:[...Ht,...Bt,...Kt,...Qt,...$t]}},"easy preSamplingCustom":{from:{PIPE_LINE:[...Ht,...Bt,...Kt,...Qt,...$t]}},"easy preSamplingLayerDiffusion":{from:{PIPE_LINE:["easy kSamplerLayerDiffusion",...Ht,...Bt,...Kt,...Qt,...$t]}},"easy preSamplingNoiseIn":{from:{PIPE_LINE:[...Ht,...Bt,...Kt,...Qt,...$t]}},"easy fullkSampler":{from:{PIPE_LINE:[...Bt.reverse(),"easy preDetailerFix","easy preMaskDetailerFix",...qt,...$t]}},"easy kSampler":{from:{PIPE_LINE:[...Bt.reverse(),"easy preDetailerFix","easy preMaskDetailerFix","easy hiresFix",...qt,...$t]}},"easy controlnetLoader":{from:{PIPE_LINE:[...qt,...Kt,...Yt,...Bt,...$t]}},"easy controlnetLoaderADV":{from:{PIPE_LINE:[...qt,...Kt,...Yt,...Bt,...$t]}},"easy instantIDApply":{from:{PIPE_LINE:[...qt,...Kt,...Yt,...Bt,...$t],MODEL:en},to:{COMBO:["easy promptLine"]}},"easy instantIDApplyADV":{from:{PIPE_LINE:[...qt,...Kt,...Yt,...Bt,...$t],MODEL:en},to:{COMBO:["easy promptLine"]}},"easy ipadapterApply":{to:{COMBO:["easy promptLine"]}},"easy ipadapterApplyADV":{to:{STRING:["easy sliderControl",...Zt],COMBO:["easy promptLine"]}},"easy ipadapterStyleComposition":{to:{COMBO:["easy promptLine"]}},"easy preDetailerFix":{from:{PIPE_LINE:["easy detailerFix",...Bt,...$t]},to:{PIPE_LINE:["easy ultralyticsDetectorPipe","easy samLoaderPipe","easy kSampler","easy fullkSampler"]}},"easy preMaskDetailerFix":{from:{PIPE_LINE:["easy detailerFix",...Bt,...$t]}},"easy samLoaderPipe":{from:{PIPE_LINE:["easy preDetailerFix",...Bt,...$t]}},"easy ultralyticsDetectorPipe":{from:{PIPE_LINE:["easy preDetailerFix",...Bt,...$t]}},"easy cascadeLoader":{from:{PIPE_LINE:["easy fullCascadeKSampler","easy preSamplingCascade",...Kt,...Bt,...$t],MODEL:en.filter((e=>!Jt.includes(e)))}},"easy fullCascadeKSampler":{from:{PIPE_LINE:["easy preSampling","easy preSamplingAdvanced",...Bt,...$t]}},"easy preSamplingCascade":{from:{PIPE_LINE:["easy cascadeKSampler",...Bt,...$t]}},"easy cascadeKSampler":{from:{PIPE_LINE:["easy preSampling","easy preSamplingAdvanced",...Bt,...$t]}},"easy pipeEdit":{from:{PIPE_LINE:[...qt,...Kt,...Yt,...$t]},to:{PIPE_LINE:[...qt,...Kt,...Yt,...Bt,...$t]}},"easy pipeEditPrompt":{from:{PIPE_LINE:[...qt,...Kt,...Yt,...$t]},to:{PIPE_LINE:[...qt,...Kt,...Yt,...Bt,...$t]}}};class nn extends Error{constructor(e="Attempted to access LGraph reference that was null or undefined.",t){super(e,{cause:t}),this.name="NullGraphError"}}v.registerExtension({name:"Comfy.EasyUse.Suggestions",async setup(e){const t=LGraphCanvas.prototype.createDefaultNodeForSlot;LGraphCanvas.prototype.createDefaultNodeForSlot=function(e){var n;const i=Object.assign({nodeFrom:null,slotFrom:null,nodeTo:null,slotTo:null,position:[],nodeType:null,posAdd:[0,0],posSizeFix:[0,0]},e||{}),s=this,o=i.nodeFrom&&null!==i.slotFrom,a=!o&&i.nodeTo&&null!==i.slotTo,l=o?i.nodeFrom:i.nodeTo;if(!l||!Object.keys(tn).includes(l.type))return t.call(this,e);if(!o&&!a)return!1;if(!i.nodeType)return!1;const r=o?i.nodeFrom:i.nodeTo;if(!r)throw new TypeError("nodeX was null when creating default node for slot.");const A=r.type;let d=o?i.slotFrom:i.slotTo,u=!1;switch(typeof d){case"string":u=o?r.findOutputSlot(d,!1):r.findInputSlot(d,!1),d=o?r.outputs[d]:r.inputs[d];break;case"object":if(null===d)return!1;u=o?r.findOutputSlot(d.name):r.findInputSlot(d.name);break;case"number":u=d,d=o?r.outputs[d]:r.inputs[d];break;default:return!1}var c=d.type==LiteGraph.EVENT?"_event_":d.type,p=o?LiteGraph.slot_types_default_out:LiteGraph.slot_types_default_in;if(null==p?void 0:p[c]){let e=!1;const t=o?"from":"to";if(tn[A]&&tn[A][t]&&(null==(n=tn[A][t][c])?void 0:n.length)>0){for(var h in tn[A][t][c])if(i.nodeType==tn[A][t][c][h]||"AUTO"==i.nodeType){e=tn[A][t][c][h];break}}else if("object"==typeof p[c]||"array"==typeof p[c]){for(var h in p[c])if(i.nodeType==p[c][h]||"AUTO"==i.nodeType){e=p[c][h];break}}else i.nodeType!=p[c]&&"AUTO"!=i.nodeType||(e=p[c]);if(e){var m=!1;"object"==typeof e&&e.node&&(m=e,e=e.node);var f=LiteGraph.createNode(e);if(f){if(m){if(m.properties)for(var g in m.properties)f.addProperty(g,m.properties[g]);if(m.inputs)for(var g in f.inputs=[],m.inputs)f.addOutput(m.inputs[g][0],m.inputs[g][1]);if(m.outputs)for(var g in f.outputs=[],m.outputs)f.addOutput(m.outputs[g][0],m.outputs[g][1]);m.title&&(f.title=m.title),m.json&&f.configure(m.json)}s.graph.add(f),f.pos=[i.position[0]+i.posAdd[0]+(i.posSizeFix[0]?i.posSizeFix[0]*f.size[0]:0),i.position[1]+i.posAdd[1]+(i.posSizeFix[1]?i.posSizeFix[1]*f.size[1]:0)];const e={node:f,opts:i};if(!this.canvas.dispatchEvent(new CustomEvent("connect-new-default-node",{detail:e,cancelable:!0})))return!0;if(o){if(!i.nodeFrom)throw new TypeError("createDefaultNodeForSlot - nodeFrom was null");i.nodeFrom.connectByType(u,f,c)}else{if(!i.nodeTo)throw new TypeError("createDefaultNodeForSlot - nodeTo was null");i.nodeTo.connectByTypeOutput(u,f,c)}return!0}}}return!1};let n=LGraphCanvas.prototype.showConnectionMenu;LGraphCanvas.prototype.showConnectionMenu=function(e){var t;const i=Object.assign({nodeFrom:null,slotFrom:null,nodeTo:null,slotTo:null,e:void 0,allow_searchbox:this.allow_searchbox,showSearchBox:this.showSearchBox},e||{}),s=this,{graph:o}=this,{afterRerouteId:a}=i,l=i.nodeFrom&&i.slotFrom,r=!l&&i.nodeTo&&i.slotTo,A=l?i.nodeFrom:i.nodeTo;if(!A||!Object.keys(tn).includes(A.type))return n.call(this,e);if(!l&&!r)return!1;const d=l?i.nodeFrom:i.nodeTo;if(!d)throw new TypeError("nodeX was null when creating default node for slot.");let u=l?i.slotFrom:i.slotTo,c=!1;switch(typeof u){case"string":c=l?d.findOutputSlot(u,!1):d.findInputSlot(u,!1),u=l?d.outputs[u]:d.inputs[u];break;case"object":if(null===u)return;c=l?d.findOutputSlot(u.name):d.findInputSlot(u.name);break;case"number":c=u,u=l?d.outputs[u]:d.inputs[u];break;default:return!1}const p=["Add Node","Add Reroute",null];i.allow_searchbox&&p.push("Search",null);var h=u.type==LiteGraph.EVENT?"_event_":u.type,m=l?LiteGraph.slot_types_default_out:LiteGraph.slot_types_default_in,f=d.type;if(m&&m[h]){const e=l?"from":"to";if(tn[f]&&tn[f][e]&&(null==(t=tn[f][e][h])?void 0:t.length)>0)for(var g in tn[f][e][h])p.push(tn[f][e][h][g]);else if("object"==typeof m[h]||"array"==typeof m[h])for(var g in m[h])p.push(m[h][g]);else p.push(m[h])}var y=new LiteGraph.ContextMenu(p,{event:i.e,extra:u,title:(u&&""!=u.name?u.name+(h?" | ":""):"")+(u&&h?h:""),callback:function(e,t,n){var r,A;switch(e){case"Add Node":LGraphCanvas.onMenuAdd(null,null,n,y,(function(e){var t,n;e&&(l?null==(t=i.nodeFrom)||t.connectByType(c,e,h,{afterRerouteId:a}):null==(n=i.nodeTo)||n.connectByTypeOutput(c,e,h,{afterRerouteId:a}))}));break;case"Add Reroute":const d=l?i.nodeFrom:i.nodeTo,p=t.extra;if(!o)throw new nn;if(!d)throw new TypeError("Cannot add reroute: node was null");if(!p)throw new TypeError("Cannot add reroute: slot was null");if(!i.e)throw new TypeError("Cannot add reroute: CanvasPointerEvent was null");if(!d.connectFloatingReroute([i.e.canvasX,i.e.canvasY],p,a))throw new Error("Failed to create reroute");s.dirty_canvas=!0,s.dirty_bgcanvas=!0;break;case"Search":l?i.showSearchBox(n,{node_from:i.nodeFrom,slot_from:u,type_filter_in:h}):i.showSearchBox(n,{node_to:i.nodeTo,slot_from:u,type_filter_out:h});break;default:const m={position:[(null==(r=i.e)?void 0:r.canvasX)??0,(null==(A=i.e)?void 0:A.canvasY)??0],nodeType:e,afterRerouteId:a};s.createDefaultNodeForSlot(Object.assign(i,m))}}});return y}}}),v.registerExtension({name:"Comfy.EasyUse.TimeTaken",setup(){let e=new Map,t=0;b.addEventListener("execution_start",(e=>{graph&&graph._nodes.forEach((e=>{e.executionDuration&&delete e.executionDuration}))})),b.addEventListener("executing",(n=>{if(!x("EasyUse.Nodes.Runtime",null))return;const i=(null==n?void 0:n.node)||(null==n?void 0:n.detail)||null,s=e.get(t);if(e.delete(t),t&&s){const e=Date.now()-s,n=be(t);n&&(n.executionDuration||(n.executionDuration=0),n.executionDuration=n.executionDuration+e/1e3)}t=i,e.set(i,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;t=parseFloat(t).toFixed(3)+T("s"),e.save(),e.fillStyle=LiteGraph.NODE_DEFAULT_BGCOLOR,function(e,t,n,i,s,o){e.beginPath(),e.moveTo(t+o,n),e.lineTo(t+i-o,n),e.arcTo(t+i,n,t+i,n+o,o),e.lineTo(t+i,n+s-o),e.arcTo(t+i,n+s,t+i-o,n+s,o),e.lineTo(t+o,n+s),e.arcTo(t,n+s,t,n+s-o,o),e.lineTo(t,n+o),e.arcTo(t,n,t+o,n,o),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,i,s="#000",o=12,a="Inter"){e.font=`${o}px ${a}`,e.fillStyle=s,e.fillText(t,n,i)}(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 sn=null;v.registerExtension({name:"Comfy.EasyUse.HotKeys",setup(){if(void 0!==g){g("up,down,left,right",(function(e,t){var n,i,s,o,a,l,r,A,d,u,c,p,h,m,f;e.preventDefault();if(!x("EasyUse.Hotkeys.JumpNearestNodes",null))return;const g=we();if(0===g.length)return;const y=g[0];switch(t.key){case"up":case"left":let e=null;if(xe(y)){const e=null==(n=y.widgets_values)?void 0:n[0],t=null==(i=y.graph)?void 0:i._nodes,s=null==t?void 0:t.find((t=>{var n;if(Ne(t)){if((null==(n=t.widgets_values)?void 0:n[0])===e)return t}return null}));s&&Le(s)}else if((null==(s=y.inputs)?void 0:s.length)>0){for(let t=0;t{var n;if(xe(t)){if((null==(n=t.widgets_values)?void 0:n[0])===e)return t}return null}));n&&Le(n)}else if((null==(u=y.outputs)?void 0:u.length)>0){for(let e=0;e0&&y.outputs[e].links[0]){t=y.outputs[e].links[0];break}if(t){const e=null==(p=y.graph)?void 0:p.links;if(e[t]){const n=null==(h=e[t])?void 0:h.target_id,i=null==(f=null==(m=y.graph)?void 0:m._nodes_by_id)?void 0:f[n];i&&Le(i)}}}}})),g("shift+up,shift+down,shift+left,shift+right,shift+alt+⌘+left,shift+alt+⌘+right,shift+alt+ctrl+left,shift+alt+ctrl+right",(function(e,t){e.preventDefault();if(!x("EasyUse.Hotkeys.AlignSelectedNodes",null))return;const n=we();if(n.length<=1)return;const i=n;switch(t.key){case"shift+up":LGraphCanvas.alignNodes(i,"top",i[0]);break;case"shift+down":LGraphCanvas.alignNodes(i,"bottom",i[0]);break;case"shift+left":LGraphCanvas.alignNodes(i,"left",i[0]);break;case"shift+right":LGraphCanvas.alignNodes(i,"right",i[0]);break;case"shift+alt+ctrl+left":case"shift+alt+⌘+left":Ve(i,"horizontal");break;case"shift+alt+ctrl+right":case"shift+alt+⌘+right":Ve(i,"vertical")}sn||(sn=Q()),sn&&sn.update()})),g("shift+⌘+left,shift+⌘+right,shift+ctrl+left,shift+ctrl+right",(function(e,t){e.preventDefault();if(!x("EasyUse.Hotkeys.NormalizeSelectedNodes",null))return;const n=we();if(n.length<=1)return;const i=n;switch(t.key){case"shift+ctrl+left":case"shift+⌘+left":ze(i,"width");break;case"shift+ctrl+right":case"shift+⌘+right":ze(i,"height")}sn||(sn=Q()),sn&&sn.update()})),g("shift+g",(function(e,t){e.preventDefault();x("EasyUse.Hotkeys.AddGroup",null)&&(an(),sn||(sn=Q()),sn&&sn.update())})),g("shift+r",(function(e,t){e.preventDefault();x("EasyUse.Hotkeys.cleanVRAMused",null)&&yt()})),g("shift+m",(function(e,t){var n,i,s;if(!x("EasyUse.Hotkeys.toggleNodesMap",null))return;let o=(null==(n=v.extensionManager)?void 0:n.sidebarTab)||v.extensionManager,a=(null==(i=v.extensionManager.sidebarTab)?void 0:i.activeSidebarTabId)||(null==(s=v.extensionManager)?void 0:s.activeSidebarTab);o.activeSidebarTabId=a==V?null:V}));const e=[];Array.from(Array(10).keys()).forEach((t=>e.push(`alt+${t}`))),g(e.join(","),(async function(e,t){e.preventDefault();if(!x("EasyUse.Hotkeys.NodesTemplate",null))return;const n=t.key;let i=parseInt(n.split("+")[1]);const s=await b.getUserData("comfy.templates.json");let o=null;if(200==s.status)try{o=await s.json()}catch(l){B.error(T("Get Node Templates File Failed"))}else localStorage["Comfy.NodeTemplates"]?o=JSON.parse(localStorage["Comfy.NodeTemplates"]):B.warn(T("No Node Templates Found"));if(!o)return void B.warn(T("No Node Templates Found"));i=0===i?9:i-1;const a=o[i];if(a)try{const e=(null==a?void 0:a.name)||"Group",t=(null==a?void 0:a.data)?JSON.parse(a.data):[];on((async()=>{await E.registerFromWorkflow(t.groupNodes,{}),localStorage.litegrapheditor_clipboard=a.data,v.canvas.pasteFromClipboard(),t.groupNodes||an(e)}))}catch(l){B.error(l)}else B.warn(T("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===we().length)return;sn||(sn=Q()),sn&&sn.update()}};window.addEventListener("keydown",t,!0)}}});const on=async e=>{const t=localStorage.litegrapheditor_clipboard;await e(),localStorage.litegrapheditor_clipboard=t},an=e=>{const t=we();if(0===t.length)return;const n=t;let i=new LiteGraph.LGraphGroup;i.title=e||"Group",((e,t=[],n=20)=>{var i,s,o,a,l,r,A,d,u,c;for(var p of(s=o=a=l=-1,r=A=d=u=-1,[e._nodes,t]))for(var h in p)r=(c=p[h]).pos[0],A=c.pos[1],d=c.pos[0]+c.size[0],u=c.pos[1]+c.size[1],"Reroute"!=c.type&&(A-=LiteGraph.NODE_TITLE_HEIGHT),(null==(i=c.flags)?void 0:i.collapsed)&&(u=A+LiteGraph.NODE_TITLE_HEIGHT,(null==c?void 0:c._collapsed_width)&&(d=r+Math.round(c._collapsed_width))),(-1==s||ra)&&(a=d),(-1==l||u>l)&&(l=u);o-=Math.round(1.4*e.font_size),e.pos=[s-n,o-n],e.size=[a-s+2*n,l-o+2*n]})(i,n),v.canvas.graph.add(i)};function ln(e,t,n,i){const s=[];return e.workflow.links.forEach((e=>{n&&e[1]===t&&!s.includes(e[3])&&s.push(e[3]),i&&e[3]===t&&!s.includes(e[1])&&s.push(e[1])})),s}async function rn(e,t=!1){const n=structuredClone(await v.graphToPrompt()),i=[];if(n.workflow.nodes.forEach((e=>{i.push(e.id)})),n.workflow.links=n.workflow.links.filter((e=>i.includes(e[1])&&i.includes(e[3]))),t)for(;!v.graph._nodes_by_id[e].isChooser;)e=ln(n,e,!0,!1)[0];const s=function(e,t){const n=[],i=[t];for(;i.length>0;){const t=i.pop();n.push(t),i.push(...ln(e,t,!0,!1).filter((e=>!(n.includes(e)||i.includes(e)))))}i.push(...n.filter((e=>e!=t)));const s=[t];for(;i.length>0;){const t=i.pop();s.push(t),i.push(...ln(e,t,!1,!0).filter((e=>!(s.includes(e)||i.includes(e)))))}const o=[];return o.push(...n),o.push(...s.filter((e=>!o.includes(e)))),o}(n,e);n.workflow.nodes=n.workflow.nodes.filter((t=>(t.id===e&&t.inputs.forEach((e=>{e.link=null})),s.includes(t.id)))),n.workflow.links=n.workflow.links.filter((e=>s.includes(e[1])&&s.includes(e[3])));const o={};for(const[r,A]of Object.entries(n.output))s.includes(parseInt(r))&&(o[r]=A);const a={};for(const[r,A]of Object.entries(o[e.toString()].inputs))Array.isArray(A)||(a[r]=A);o[e.toString()].inputs=a,n.output=o;const l=v.graphToPrompt;v.graphToPrompt=()=>(v.graphToPrompt=l,n),v.queuePrompt(0)}const An=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 v.runningNodeId!=this.current_node_id&&(this.current_node_id=v.runningNodeId,this.current_node_id?(this.class_of_current_node=null==(t=null==(e=v.graph)?void 0:e._nodes_by_id[v.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)}},dn=class e{constructor(){}static idle(){return!v.runningNodeId}static paused(){return An.current_node_is_chooser}static paused_here(t){return e.paused()&&e.here(t)}static running(){return!e.idle()}static here(e){return v.runningNodeId==e}static state(){return e.paused()?"Paused":e.running()?"Running":"Idle"}};m(dn,"cancelling",!1);let un=dn;function cn(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 pn(){cn(-1,"__cancel__"),un.cancelling=!0,b.interrupt(),un.cancelling=!1}var hn=0;function mn(){hn+=1}const fn=["easy kSampler","easy kSamplerTiled","easy fullkSampler"];function gn(e,t,n){let i=0,s=e[0].naturalWidth,o=e[0].naturalHeight;const a=e.length;let l,r,A,d,u;for(let c=1;c<=a;c++){const e=Math.ceil(a/c),p=t/c,h=p/s,m=n/e/o,f=Math.min(h,m,1),g=s*f,y=o*f,v=g*y*a;v>i&&(i=v,l=g,r=y,A=c,d=e,u=c*((p-g)/2))}return{cellWidth:l,cellHeight:r,cols:A,rows:d,shiftX:u}}function yn(e){const t=v.graph._nodes_by_id[e.detail.id];if(t){t.selected_images=new Set,t.anti_selected=new Set;const n=function(e,t){return e.imgs=[],t.forEach((t=>{const n=new Image;e.imgs.push(n),n.onload=()=>{v.graph.setDirtyCanvas(!0)},n.src=`/view?filename=${encodeURIComponent(t.filename)}&type=temp&subfolder=${v.getPreviewFormatParam()}`})),e.imgs}(t,e.detail.urls);return{node:t,image:n,isKSampler:fn.includes(t.type)}}}function vn(e,t,n){var i;if(e.imageRects)i=e.imageRects[t];else{const t=e.imagey;i=[1,t+1,e.size[0]-2,e.size[1]-t-2]}n.strokeRect(i[0]+1,i[1]+1,i[2]-2,i[3]-2)}class bn extends _{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 i=w("img",{src:e.src,onclick:e=>{this.select_index.includes(n)?(this.select_index=this.select_index.filter((e=>e!==n)),i.classList.remove("selected")):(this.select_index.push(n),i.classList.add("selected")),t.selected_images.has(n)?t.selected_images.delete(n):t.selected_images.add(n)}});return i}));super.show(w("div.comfyui-easyuse-chooser-dialog",[w("h5.comfyui-easyuse-chooser-dialog-title",T("Choose images to continue")),w("div.comfyui-easyuse-chooser-dialog-images",n)]))}createButtons(){const e=super.createButtons();return e[0].onclick=e=>{un.running()&&pn(),super.close()},e.unshift(w("button",{type:"button",textContent:T("Choose Selected Images"),onclick:e=>{un.paused()&&cn(this.node.id,[...this.node.selected_images,-1,...this.node.anti_selected]),un.idle()&&(mn(),rn(this.node.id).then((()=>{cn(this.node.id,[...this.node.selected_images,-1,...this.node.anti_selected])}))),super.close()}})),e}}function wn(){const e=v.graph._nodes_by_id[this.node_id];if(e){const t=[...e.selected_images];(null==t?void 0:t.length)>0&&e.setProperty("values",t),un.paused()&&(An.current_node_is_chooser=!1,cn(e.id,[...e.selected_images,-1,...e.anti_selected])),un.idle()&&(mn(),rn(e.id).then((()=>{cn(e.id,[...e.selected_images,-1,...e.anti_selected])})))}}function _n(){un.running()&&pn()}function Ln(e){Object.defineProperty(e,"clicked",{get:function(){return this._clicked},set:function(e){this._clicked=e&&""!=this.name}})}function Sn(e){e.options||(e.options={}),e.options.serialize=!1}v.registerExtension({name:"Comfy.EasyUse.imageChooser",init(){window.addEventListener("beforeunload",(e=>{un.paused()&&pn()}),!0)},setup(e){const t=LGraphCanvas.prototype.draw;LGraphCanvas.prototype.draw=function(){An.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:i}=yn(e);if(i){An.current_node_is_chooser=!0;(new bn).show(n,t)}}));const n=b.interrupt;b.interrupt=function(){un.paused()&&!un.cancelling&&pn(),n.apply(this,arguments)},b.addEventListener("execution_start",(function(){(hn>0?(hn-=1,0):(cn(-1,"__start__"),1))&&e.graph._nodes.forEach((e=>{(e.selected_images||e.anti_selected)&&(e.selected_images.clear(),e.anti_selected.clear(),e.update&&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)&&setTimeout((t=>{e.imagey,Object.defineProperty(e,"imagey",{get:function(){return e.widgets[e.widgets.length-1].last_y+LiteGraph.NODE_WIDGET_HEIGHT},set:function(t){e.imagey=t}})}),100);const t=e.onMouseDown;e.onMouseDown=function(n,i,s){if(n.isPrimary){const t=function(e,t){var n,i;if((null==(n=e.imgs)?void 0:n.length)>1)for(var s=0;s0&&n0&&ie.imagey)return 0;return-1}(e,i);t>=0&&this.imageClicked(t)}return t&&t.apply(this,arguments)},e.send_button_widget=e.addWidget("button","","",wn),e.cancel_button_widget=e.addWidget("button","","",_n),Ln(e.cancel_button_widget),Ln(e.send_button_widget),Sn(e.cancel_button_widget),Sn(e.send_button_widget)}},beforeRegisterNodeDef(e,t,n){if("easy imageChooser"==(null==t?void 0:t.name)){e.prototype.onDrawBackground,e.prototype.onDrawBackground=function(e){!function(e,t,n=0){var i,s;if(!e.imgs)return;const o=v.canvas,a=o.graph_mouse,l=e.size[0],r=e.size[1]-n-15;if(null==e.imageIndex){let s,A,d,u;const c=(e=>{if(!e.length||1===e.length)return!0;const t=e[0].naturalWidth/e[0].naturalHeight;for(let n=1;nMath.max(e,t.naturalWidth,t.naturalHeight)),0),n=[];n.length=null==(i=e.imgs)?void 0:i.length,n[0]={naturalWidth:t,naturalHeight:t},({cellWidth:s,cellHeight:A,cols:u,shiftX:d}=gn(n,l,r))}let p=!1,h=e.imgs.length;e.imageRects=[];for(let i=0;i{vn(e,n,t)})),t.strokeStyle="#F88",null==(s=null==e?void 0:e.anti_selected)||s.forEach((n=>{vn(e,n,t)}))}(this,e,this.imagey||100)},e.prototype.imageClicked=function(t){"easy imageChooser"===(null==e?void 0:e.comfyClass)&&(this.selected_images.has(t)?this.selected_images.delete(t):this.selected_images.add(t),this.update())};const t=e.prototype.update;e.prototype.update=function(){var e;if(t&&t.apply(this,arguments),this.send_button_widget){this.send_button_widget.node_id=this.id;const t=(this.selected_images?this.selected_images.size:0)+(this.anti_selected?this.anti_selected.size:0),n=(null==(e=this.imgs)?void 0:e.length)||0;un.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=un.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,i,s=0,o=0,a="string"==typeof e?e:e.toString(),l="string"==typeof t?t:t.toString();try{s=a.toString().split(".")[1].length}catch(r){}try{o=l.toString().split(".")[1].length}catch(r){}return n=Number(a.toString().replace(".","")),i=Number(l.toString().replace(".","")),n/i*Math.pow(10,o-s)}(this,e)};let En=[],kn=0;const xn={sd3:6.5,"sd3-turbo":4};class Nn extends _{constructor(){super(),this.lists=[],this.dialog_div=null,this.user_div=null}addItem(e,t){return w("div.easyuse-account-dialog-item",[w("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);En[t].name=e.target.value},value:En[e].name}),w("input.key",{type:"text",oninput:e=>{const t=Array.prototype.indexOf.call(this.dialog_div.querySelectorAll(".easyuse-account-dialog-item"),e.target.parentNode);En[t].key=e.target.value},placeholder:"Enter APIKEY",value:En[e].key}),w("button.choose",{textContent:T("Choose"),onclick:async e=>{var n,i,s;const o=Array.prototype.indexOf.call(this.dialog_div.querySelectorAll(".easyuse-account-dialog-item"),e.target.parentNode);let a=En[o].name,l=En[o].key;if(!a)return void B.error(T("Please enter the account name"));if(!l)return void B.error(T("Please enter the APIKEY"));let r=!0;for(let t=0;t{(new Nn).show(t)}},[w("div.user",[w("div.avatar",o?[w("img",{src:o})]:"😀"),w("div.info",[w("h5.name",a),w("h6.remark","Credits: "+l)])]),w("div.edit",{textContent:T("Edit")})])),B.success(T("Save Succeed"))}else B.success(T("Save Succeed"));this.close()}else B.error(T("Save Failed"))}}),w("button.delete",{textContent:T("Delete"),onclick:e=>{const t=Array.prototype.indexOf.call(this.dialog_div.querySelectorAll(".easyuse-account-dialog-item"),e.target.parentNode);En.length<=1?B.error(T("At least one account is required")):(En.splice(t,1),this.dialog_div.removeChild(e.target.parentNode))}})])}show(e){En.forEach(((t,n)=>{this.lists.push(this.addItem(n,e))})),this.dialog_div=w("div.easyuse-account-dialog",this.lists),super.show(w("div.easyuse-account-dialog-main",[w("div",[w("a",{href:"https://platform.stability.ai/account/keys",target:"_blank",textContent:T("Getting Your APIKEY")})]),this.dialog_div]))}createButtons(){const e=super.createButtons();return e.unshift(w("button",{type:"button",textContent:T("Save Account Info"),onclick:e=>{let t=!0;for(let n=0;n{200==e.status?B.success(T("Save Succeed")):B.error(T("Save Failed"))}))}else B.error(T("APIKEY is not Empty"))}})),e.unshift(w("button",{type:"button",textContent:T("Add Account"),onclick:e=>{const t="Account "+En.length.toString();En.push({name:t,key:""});const n=this.addItem(En.length-1);this.lists.push(n),this.dialog_div.appendChild(n)}})),e}}v.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,i;t&&(null==t||t.apply(this,arguments));const s=this.widgets.find((e=>["seed_num","seed"].includes(e.name))),o=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="-"+xn[e]};const l=this.addWidget("text","cost_credit","0",(e=>{}),{serialize:!1});l.disabled=!0,o&&setTimeout((e=>{"control before generate"==o.name&&0===s.value&&(s.value=Math.floor(4294967294*Math.random())),l.value="-"+xn[a.value]}),100);let r=w("div.easyuse-account-user",[T("Loading UserInfo...")]);this.addDOMWidget("account","btn",w("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)?xn[e.model]:0;if(t){let e=function(e,t){let n,i,s,o,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{i=l.split(".")[1].length}catch(r){i=0}return s=Math.pow(10,Math.max(n,i)),o=n>=i?n:i,((e*s-t*s)/s).toFixed(o)}(parseFloat(n[0].innerText.replace(/Credits: /g,"")),t);e>0&&(n[0].innerText="Credits: "+e.toString())}}await H(1e4);const i=await b.fetchApi("/easyuse/stability/balance");if(200==i.status){const e=await i.json();if(null==e?void 0:e.balance){const i=(null==(t=e.balance)?void 0:t.credits)||0;n&&n[0]&&(n[0].innerText="Credits: "+i)}}}));const A=await b.fetchApi("/easyuse/stability/api_keys");if(200==A.status){let t=await A.json();if(En=t.keys,kn=t.current,En.length>0&&void 0!==kn){const t=En[kn].key,s=En[kn].name;if(t){const t=await b.fetchApi("/easyuse/stability/user_info");if(200==t.status){const s=await t.json();if((null==s?void 0:s.account)&&(null==s?void 0:s.balance)){const t=(null==(e=s.account)?void 0:e.profile_picture)||null,o=(null==(n=s.account)?void 0:n.email)||null,a=(null==(i=s.balance)?void 0:i.credits)||0;r.replaceChildren(w("div.easyuse-account-user-info",{onclick:e=>{(new Nn).show(r)}},[w("div.user",[w("div.avatar",t?[w("img",{src:t})]:"😀"),w("div.info",[w("h5.name",o),w("h6.remark","Credits: "+a)])]),w("div.edit",{textContent:T("Edit")})]))}}}else r.replaceChildren(w("div.easyuse-account-user-info",{onclick:e=>{(new Nn).show(r)}},[w("div.user",[w("div.avatar","😀"),w("div.info",[w("h5.name",s),w("h6.remark",T("Click to set the APIKEY first"))])]),w("div.edit",{textContent:T("Edit")})]))}}}}}});let Cn=null;function In(){Cn&&(Cn.removeEventListeners(),Cn.dropdown.remove(),Cn=null)}function Tn(e,t,n,i=!1){In(),new On(e,t,n,i)}class On{constructor(e,t,n,i=!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=i,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((i=>{const s=e[i];if("object"==typeof s&&null!==s){const e=document.createElement("ul");e.setAttribute("role","listbox"),e.classList.add("easy-nested-dropdown");const o=document.createElement("li");o.classList.add("folder"),o.textContent=i,o.appendChild(e),o.addEventListener("mouseover",this.onMouseOver.bind(this,n,t)),t.appendChild(o),this.buildNestedDropdown(s,e),n+=1}else{const e=document.createElement("li");e.classList.add("item"),e.setAttribute("role","option"),e.textContent=i,e.addEventListener("mouseover",this.onMouseOver.bind(this,n,t)),e.addEventListener("mousedown",this.onMouseDown.bind(this,i)),t.appendChild(e),n+=1}}))}addListItem(e,t,n){const i=document.createElement("li");i.setAttribute("role","option"),i.textContent=e,i.addEventListener("mouseover",this.onMouseOver.bind(this,t)),i.addEventListener("mousedown",this.onMouseDown.bind(this,e)),n.appendChild(i)}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 i=n.querySelector(".easy-nested-dropdown");i&&(this.focusedDropdown=i,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 Dn(e){const t=e.min||0,n=e.max||0,i=e.step||1;if(0===i)return[];const s=[];let o=t;for(;o<=n;){if(Number.isInteger(i))s.push(Math.round(o)+"; ");else{let e=o.toFixed(3);-0==e&&(e="0.000"),/\.\d{3}$/.test(e)||(e+="0"),s.push(e+"; ")}o+=i}return n>=0&&t>=0?s:s.reverse()}let Rn={},Mn={};function Pn(e,t){String(e.id);const n=t.name,i=t.value.replace(/^(loader|preSampling):\s/,"");Mn[n]?Mn[n]!=Rn[i]&&(Mn[n]=Rn[i]):Mn={...Mn,[n]:Rn[i]}}v.registerExtension({name:"Comfy.EasyUse.XYPlot",async beforeRegisterNodeDef(e,t,n){if("easy XYPlot"===t.name){Rn=t.input.hidden.plot_dict[0];for(const e in Rn){const t=Rn[e];if(Array.isArray(t)){let n=[];for(const e of t)n.push(e+"; ");Rn[e]=n}else Rn[e]="object"==typeof t?"seed"==e?t+"; ":Dn(t):t+"; "}Rn.None=[],Rn["---------------------"]=[]}},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(i){i!==n&&(n=i,Pn(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,i,s){return e&&(t[i]=e),t.map((e=>n(e,s))).filter((e=>""!==e)).join("")},n=function(e,t){if(e=i(e),s(e,t))return e+"; ";let n=o(e,t);return 1===n.length||2===n.length?n[0]:s(a(e),t)?a(e)+"; ":""},i=function(e){return e.replace(/(\n|;| )/g,"")},s=function(e,t){return t.includes(e+"; ")},o=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 i=(null==Mn?void 0:Mn[n])||[];if(0===i.length)return;const s=e.inputEl.value,o=e.inputEl.selectionStart;let a=s.split("; ");const l=s.substring(0,o).split("; ").length-1,r=a[l].replace(/\n/g,"").toLowerCase(),A=i.filter((e=>e.toLowerCase().includes(r))).map((e=>e.replace(/; /g,"")));if(A.length>0)Tn(e.inputEl,A,(n=>{const s=t(n,a,l,i);e.inputEl.value=s}));else{In();const n=t(null,a,l,i);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{T as $,z as N,b as a,v as b,fe as c,ge as d,yt as e,V as f,x as g,N as h,Se as j,H as s,B as t,Q as u}; diff --git a/web_version/v2/easyuse.js b/web_version/v2/easyuse.js index bd6157f..fba5bd2 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}#crystools-root-easyuse{flex-direction:row;justify-content:center;flex-shrink:1;width:min-content;min-width:max-content;height:100%;margin:0 auto}#crystools-root-easyuse .crystools-monitor-container{width:100%;cursor:crosshair;display:flex;flex-wrap:wrap;flex-direction:row;justify-content:flex-end;gap:5px;height:100%}#crystools-root-easyuse .crystools-monitor-container .crystools-monitor{background-color:var(--comfy-input-bg);position:relative;align-items:center;flex-direction:row;width:40px;height:100%}#crystools-root-easyuse .crystools-monitor-container .crystools-monitor .crystools-text{font-size:10px;text-align:right;margin-left:3px;position:absolute;font-weight:100;bottom:2px;z-index:10}#crystools-root-easyuse .crystools-monitor-container .crystools-content{position:relative;height:100%}#crystools-root-easyuse .crystools-monitor-container .crystools-slider{position:absolute;height:100%;width:0;box-shadow:inset 2px 2px 10px #0003}#crystools-root-easyuse .crystools-monitor-container .crystools-label{position:relative;width:100%;color:var(--input-text);font-weight:500;font-size:11px;left:2px;top:4px;text-align:right}:root{--theme-color:var(--p-primary-color, #60a5fa);--theme-color-light: var(--p-primary-hover-color, #93c5fd);--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;margin-top:40px;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-chooser-dialog{max-width:600px}.comfyui-easyuse-chooser-dialog-title{font-size:18px;font-weight:700;text-align:center;color:var(--input-text);margin:0}.comfyui-easyuse-chooser-dialog-images{margin-top:10px;display:flex;flex-wrap:wrap;width:100%;box-sizing:border-box}.comfyui-easyuse-chooser-dialog-images img{width:50%;height:auto;cursor:pointer;box-sizing:border-box;filter:brightness(80%)}.comfyui-easyuse-chooser-dialog-images img:hover{filter:brightness(100%)}.comfyui-easyuse-chooser-dialog-images img.selected{border:4px solid var(--success-color)}.comfyui-easyuse-chooser-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}#easyuse-model-thumbnail{display:none;position:fixed;z-index:9999;width:200px;height:auto;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 .5rem;height:2.8rem;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.8rem 0 0;height:100%;overflow:auto}.comfyui-easyuse-map-nodes__content-searchbox{padding:1rem}.comfyui-easyuse-map-nodes__content dl .label{padding-left:1rem}.comfyui-easyuse-map-nodes__content ul,.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 ul .toolbar span,.comfyui-easyuse-map-nodes__content ol .toolbar span,.comfyui-easyuse-map-nodes__content dl .toolbar span{font-size:13px}.comfyui-easyuse-map-nodes__content ul .toolbar span.pi-eye,.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 ul .toolbar span.pi-eye-slash,.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 ul .toolbar span.pi-eye-slash.never,.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 ol{padding:0;padding-block-start:2px;padding-inline-start:1rem}.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 .p-contextmenu{display:block!important;position:fixed!important;z-index:1000!important}.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 .node_id{background:#0b2000;padding:.25rem;margin:0 0 0 .25rem;border-radius:.25rem;text-align:center;color:#fff;font-size:12px}.comfyui-easyuse-map-nodes-node .left{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-node .label{text-indent:.5rem;font-size:14px;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-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:var(--input-text);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{--primary-bg:var(--theme-color)!important;--primary-hover-bg: var(--theme-color-light)!important;--p-datatable-header-cell-padding: .15rem 1rem;--p-datatable-body-cell-padding: .15rem 1rem;--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{background:var(--comfy-menu-bg);border-bottom:1px solid var(--bg-color)}.comfyui-easyuse .side-tool-bar-container{background:var(--comfy-menu-bg);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-easyuse .dom-widget{padding:0 4px}')),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}}(); -var e;import{$ as s,g as t,a as l,t as a,b as o,s as n,c as i,d as u,u as d,j as r,N as c,e as p,f as v,h as m}from"./assets/extensions-BLyI_TXA.js";import{s as g,r as h,w as y,e as f,b as A,c as w,F as x,d as S,H as b,E as M,M as _,N as E,D as C,O as k,I as B,z as I,o as N,P as D,y as H,K as Q,C as z,Q as R,x as V,A as j,R as L,S as G,U as Z}from"./assets/vue-C5MjgCre.js";import{d as O,s as Y,a as U,b as P,c as W,T,e as F,f as X,g as J,i as q}from"./assets/vendor-Dqa9Pnr9.js";import{c as $}from"./assets/lodash-CZi7izHi.js";import{P as K}from"./assets/primevue-Bhb8d6zf.js";import"./assets/primeuix-iiPAZJA6.js";const ee=O("graphStore",{state:e=>({selectors:[],selectors_styles:{},seg_selectors:[],slider_controls:[]}),actions:{setSelectors(e){this.selectors=$(e)},setStyles(e,s){this.selectors_styles[e]||(this.selectors_styles[e]=s)},setSegSelectors(e){this.seg_selectors=$(e)},setSliderControls(e){this.slider_controls=$(e)}}}),se=["data-id"],te=[S("i",{class:"mdi mdi-trash-can"},null,-1)],le=S("i",{class:"mdi mdi-magnify"},null,-1),ae=["placeholder"],oe=["onMouseenter","onMouseleave"],ne=["onClick"],ie=["name","checked"],ue=["src"],de={key:0},re=S("span",{class:"comfyui-easyuse-success"},"positive:",-1),ce={key:1},pe=S("span",{class:"comfyui-easyuse-error"},"negative:",-1),ve="comfyui-easyuse-selector",me={__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=g((e=>t("Comfy.Locale")||"en")),i=e,u=ee(),{selectors_styles:d}=Y(u),r=h([]);y((e=>i.type),(async e=>{r.value=[],e&&await(async e=>{if(d.value[i.type])return!0;const t=await l.fetchApi(`/easyuse/prompt/styles?name=${e}`);if(200===t.status){let e=(await t.json()).map(((e,s)=>(e.index=s,e)));return await u.setStyles(i.type,e),!0}return a.error(s("Get styles list Failed")),!1})(e)&&p()}),{immediate:!0});const c=o,p=e=>{const s=i.selectedStyles,t=$(d.value[i.type]);r.value=t.sort(((e,s)=>e.index-s.index)).sort(((e,t)=>s.includes(t.name)-s.includes(e.name)))},v=h(""),m=e=>e.toLowerCase(),N=f({}),D=e=>{N.src="",N.name="",N.positive="",N.negative=""},H=async e=>{const s=await l.fetchApi(`/easyuse/prompt/styles/image?name=${e}&styles_name=${i.type}`);if(200===s.status){const t=await s.text();if(t.startsWith("http"))return t;return`/easyuse/prompt/styles/image?name=${e}&styles_name=${i.type}`}},Q=e=>{e.target.src="data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QNLaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA5LjEtYzAwMSA3OS4xNDYyODk5Nzc3LCAyMDIzLzA2LzI1LTIzOjU3OjE0ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjUuMSAoMjAyMzA5MDUubS4yMzE2IDk3OWM4NmQpICAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjA3NEU1QzNCNUJBMTFFRUExMUVDNkZDRjI0NzlBN0QiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjA3NEU1QzRCNUJBMTFFRUExMUVDNkZDRjI0NzlBN0QiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGMDc0RTVDMUI1QkExMUVFQTExRUM2RkNGMjQ3OUE3RCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGMDc0RTVDMkI1QkExMUVFQTExRUM2RkNGMjQ3OUE3RCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv/uAA5BZG9i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"};return(t,l)=>(A(),w("div",{class:b(ve+` ${ve}-styles`),"data-id":e.id,onMouseleave:D},[r.value.length>0&&e.show?(A(),w(x,{key:0},[S("div",{class:b(ve+"__header")},[S("div",{class:b(ve+"__header_button"),onClick:l[0]||(l[0]=e=>(c("chooseStyle",[]),void(v.value="")))},te,2),S("div",{class:b(ve+"__header_search")},[le,M(S("textarea",{class:"search","onUpdate:modelValue":l[1]||(l[1]=e=>v.value=e),dir:"ltr",rows:1,placeholder:E(s)("Type here to search styles ...")},null,8,ae),[[_,v.value]])],2)],2),S("div",{class:b(ve+"__content"),onMouseleave:p},[(A(!0),w(x,null,C(r.value,((s,t)=>(A(),w("div",{class:b(ve+"-item"),key:t,onMouseenter:e=>(async e=>{if(!e.imageSrc){if(e.imageLoading)return;e.imageLoading=!0;const s=await H(e.imgName).finally((()=>e.imageLoading=!1));e.imageSrc=s}N.name="zh"==n&&e.name_cn?e.name_cn:e.name,N.positive=e.prompt,N.negative=e.negative_prompt,N.src=e.imageSrc})(s),onMouseleave:k((e=>D()),["stop"])},[S("span",{class:b([ve+"-item__tag",{hide:!(e.selectedStyles.includes(s.name)||-1!=m(s.name).indexOf(m(v.value))||s.name_cn&&-1!=m(s.name_cn).indexOf(m(v.value)))}]),onClick:e=>(e=>{let s=i.selectedStyles;s.includes(e.name)?s=s.filter((s=>s!==e.name)):s.push(e.name),c("chooseStyle",s)})(s)},[S("input",{type:"checkbox",name:s.name,checked:e.selectedStyles.includes(s.name)},null,8,ie),S("span",null,B(["zh","zh_CN"].includes(n.value)&&s.name_cn?s.name_cn:s.name),1)],10,ne)],42,oe)))),128))],34),(null==N?void 0:N.src)||(null==N?void 0:N.positive)||(null==N?void 0:N.negative)?(A(),w("div",{key:0,class:b(ve+"-preview")},[N.src?(A(),w("img",{key:0,src:N.src,ref:"image",alt:"preview",onError:Q},null,40,ue)):I("",!0),S("div",{class:b(ve+"-preview__text")},[S("b",null,B(N.name),1),S("div",{class:b(ve+"-preview__prompt")},[N.positive?(A(),w("h6",de,[re,S("span",null,B(N.positive),1)])):I("",!0),N.negative?(A(),w("h6",ce,[pe,S("span",null,B(N.negative),1)])):I("",!0)],2)],2)],2)):I("",!0)],64)):I("",!0)],42,se))}},ge=["data-id"],he=["onClick"],ye=["name","checked"],fe="comfyui-easyuse-selector",Ae={__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:t}){const l=e,a=h([]);y((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"];break;case"human_parts (deeplabv3p)":a.value=["Background","Face","Hair","Glasses","Top-clothes","Bottom-clothes","Torso-skin","Left-arm","Right-arm","Left-leg","Right-leg","Left-foot","Right-foot"]}}),{immediate:!0});const o=t;return(t,n)=>{var i;return A(),w("div",{class:b(fe+` ${fe}-seg`),"data-id":e.id},[(null==(i=a.value)?void 0:i.length)>0&&e.show?(A(!0),w(x,{key:0},C(a.value,((t,a)=>(A(),w("div",{class:b(fe+"-item"),key:a},[S("span",{class:b(fe+"-item__tag"),onClick:e=>(e=>{let s=$(l.selected);s.includes(e)?s=s.filter((s=>s!==e)):s.push(e),o("select",s)})(a)},[S("input",{type:"checkbox",name:t,checked:e.selected.includes(a)},null,8,ye),S("span",null,B(E(s)(t)),1)],10,he)],2)))),128)):I("",!0)],10,ge)}}},we=["data-id"],xe=["onMousedown","onDblclick"],Se="comfyui-easyuse-slider",be="ipadapter layer weights",Me={__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:s}){const t=e,l=s,a=(e,s,t)=>(e-s)/(t-s)*100,o=(e,s,l=void 0)=>{if(t.mode===be){let t={3:2.5,6:1}[s]||0;return{default:12==e?t:0,min:-1,max:3,step:.05,value:void 0!==l?l:12==e?t:0,top:void 0!==l?100-a(l,-1,3)+"%":null,height:void 0!==l?a(l,-1,3)+"%":null}}};y((e=>t.mode),(async(e,s)=>{var a;if(e!==s&&e===be)if(!s&&(null==(a=t.values)?void 0:a.length)>0){const e=t.values.map((e=>{const s=e.split(":");return o(t.values.length,s[0],parseFloat(s[1]))}));await l("changeValues",e)}else{let e="sd1"==t.type?16:12,s=Array.from({length:e},((s,t)=>o(e,t)));await l("changeValues",s)}l("showSlider")}),{immediate:!0}),y((e=>t.type),((e,s)=>{if(e!=s&&t.mode==be){let e="sd1"==t.type?16:12,s=Array.from({length:e},((s,t)=>o(e,t)));l("changeValues",s)}}));const n=h(null),i=h(null);return N((()=>{document.onmouseup=e=>document.onmousemove=null})),(s,o)=>{var u;return A(),w("div",{class:b(Se),"data-id":e.id},[(null==(u=e.values)?void 0:u.length)>0&&e.show?(A(!0),w(x,{key:0},C(e.values,((s,o)=>(A(),w("div",{class:b([Se+"-item",{positive:3==o&&"sdxl"==e.type&&e.mode==be},{negative:6==o&&"sdxl"==e.type&&e.mode==be}]),key:o},[S("div",{class:b(Se+"-item-input")},B(s.value),3),S("div",{class:b(Se+"-item-scroll"),ref_for:!0,ref_key:"scroll",ref:n},[S("div",{class:b(Se+"-item-bar"),ref_for:!0,ref_key:"bar",ref:i,style:D({top:s.top||100-a(s.default,s.min,s.max)+"%"}),onMousedown:e=>((e,s,a)=>{let o=e||window.event,u=n.value[a],d=i.value[a],r=$(t.values),c=o.clientY-d.offsetTop;document.onmousemove=e=>{let t=(e||window.event).clientY-c;t<0?t=0:t>u.offsetHeight-d.offsetHeight&&(t=u.offsetHeight-d.offsetHeight);let o=(s.max-s.min)/s.step,n=(u.offsetHeight-d.offsetHeight)/o;t=Math.round(t/n)*n;const i=Math.floor(t/(u.offsetHeight-d.offsetHeight)*100)+"%",p=Math.floor((u.offsetHeight-d.offsetHeight-t)/(u.offsetHeight-d.offsetHeight)*100)+"%",v=parseFloat(parseFloat(s.max-(s.max-s.min)*(t/(u.offsetHeight-d.offsetHeight))).toFixed(2));r[a]={...r[a],top:i,height:p,value:v},l("changeValues",r),window.getSelection?window.getSelection().removeAllRanges():document.selection.empty()}})(e,s,o),onDblclick:e=>((e,s,a)=>{let o=$(t.values);o[a]={...o[a],top:null,height:null,value:s.default},l("changeValues",o)})(0,s,o)},null,46,xe),S("div",{class:b(Se+"-item-area"),style:D({height:s.height||a(s.default,s.min,s.max)+"%"})},null,6)],2),S("div",{class:b(Se+"-item-label")},[S("span",null,B(s.label),1)],2)],2)))),128)):I("",!0)],8,we)}}},_e={__name:"index",setup(e){const s=ee(),{selectors:t,seg_selectors:l,slider_controls:a}=Y(s),d=h({}),r=async e=>{var l,a,o,u,r,c,p;await n(1);const v=i(e,"styles"),m=(null==(l=e.properties.values)?void 0:l.length)>0?e.properties.values:[];let g=$(t.value);g.push({id:e.id,type:v.value,value:m,show:!1});const h=g.length-1;await s.setSelectors(g),(null==(a=e.flags)?void 0:a.collapsed)&&e.collapse();let y=null==(r=null==(u=null==(o=d.value[e.id])?void 0:o._)?void 0:u.vnode)?void 0:r.el;if(!y)return;e.properties.values||e.setProperty("values",[]),g[h].show=!0,await s.setSelectors(g);let f=v.value;v.getValue=e=>f,v.setValue=t=>{f=t,g[h].type=t,e.properties.values=[],g[h].value=[],s.setSelectors(g)},e.addDOMWidget("select_styles","btn",y,{setValue(){setTimeout((e=>{g[h].value=value.split(","),s.setSelectors(g)}),150)},getValue(){var s,l;return e.properties.values=(null==(l=null==(s=t.value)?void 0:s[h])?void 0:l.value)||[],e.properties.values.join(",")}}),((null==(c=e.size)?void 0:c[0])<150||(null==(p=e.size)?void 0:p[1])<150)&&e.setSize([425,500]);const A=e.onRemoved;e.onRemoved=function(){if(A&&(null==A||A.apply(this,arguments)),void 0!==t.value.findIndex((s=>s.id==e.id))){let e=$(t.value);e.splice(h,1),s.setSelectors(e)}return A}},c=h({}),p=async e=>{var t,a,o,d,r;await n(1);const p=i(e,"method"),v=(null==(t=e.properties.values)?void 0:t.length)>0?e.properties.values:[];let m=$(l.value);m.push({id:e.id,type:p.value,value:v,show:!1});const g=m.length-1;await s.setSegSelectors(m),(null==(a=e.flags)?void 0:a.collapsed)&&e.collapse();let h=null==(r=null==(d=null==(o=c.value[e.id])?void 0:o._)?void 0:d.vnode)?void 0:r.el;if(!h)return;e.properties.values||e.setProperty("values",[]),m[g].show=!0,await s.setSegSelectors(m);let y=p.value;p.getValue=e=>y,p.setValue=t=>{y=value,m[g].type=value,e.properties.values=[],m[g].value=[],u(e,i(e,"confidence"),"selfie_multiclass_256x256"===y),e.setSize([300,"selfie_multiclass_256x256"===y?260:400]),s.setSegSelectors(m)},e.addDOMWidget("mask_components","btn",h,{setValue(){setTimeout((e=>{m[g].value=value.split(","),s.setSegSelectors(m)}),150)},getValue(){var s;return e.properties.values=(null==(s=l.value)?void 0:s[g].value)||[],e.properties.values.join(",")}}),u(e,i(e,"confidence"),"selfie_multiclass_256x256"===y),e.setSize([300,"selfie_multiclass_256x256"===y?260:500]);const f=e.onRemoved;e.onRemoved=function(){if(f&&(null==f||f.apply(this,arguments)),void 0!==l.value.findIndex((s=>s.id==e.id))){let e=$(l.value);e.splice(g,1),s.setSegSelectors(e)}return f}},v=h({}),m=async e=>{var t,l,o,u,d;await n(1);const r=i(e,"mode"),c=i(e,"model_type"),p=(null==(t=e.properties.values)?void 0:t.length)>0?e.properties.values:[];(null==(l=e.flags)?void 0:l.collapsed)&&e.collapse();let m=$(a.value);m.push({id:e.id,type:c.value,mode:r.value,value:p,show:!1});const g=m.length-1;await s.setSliderControls(m);let h=null==(d=null==(u=null==(o=v.value[e.id])?void 0:o._)?void 0:u.vnode)?void 0:d.el;if(!h)return;e.addDOMWidget("values","btn",h,{setValue(){},getValue(){var s;const t=(null==(s=a.value)?void 0:s[g].value)||[];return e.properties.values=t.map(((e,s)=>`${s}:${e.value}`)),e.properties.values.join(",")}}),e.properties.values||e.setProperty("values",[]),e.setSize("sdxl"==c.value?[375,320]:[455,320]),c.callback=t=>{m=$(a.value),m[g].type!=t&&(e.setSize("sdxl"==t?[375,320]:[455,320]),m[g].value=[],m[g].type=t,s.setSliderControls(m))};const y=e.onRemoved;e.onRemoved=function(){if(y&&(null==y||y.apply(this,arguments)),void 0!==a.value.findIndex((s=>s.id==e.id))){let e=$(a.value);e.splice(g,1),s.setSliderControls(e)}return y}};return N((e=>{o.registerExtension({name:"Comfy.EasyUse.Components",async beforeRegisterNodeDef(e,s){const t=e.prototype.onNodeCreated;"easy stylesSelector"==s.name&&(e.prototype.onNodeCreated=async function(){return t&&(null==t||t.apply(this,arguments)),await r(this),t}),"easy humanSegmentation"==s.name&&(e.prototype.onNodeCreated=async function(){return t&&(null==t||t.apply(this,arguments)),await p(this),t}),"easy sliderControl"==s.name&&(e.prototype.onNodeCreated=async function(){return t&&(null==t||t.apply(this,arguments)),await m(this),t}),"easy poseEditor"==s.name&&(e.prototype.onNodeCreated=async function(){t&&(null==t||t.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),t})}})})),(e,o)=>(A(),w(x,null,[(A(!0),w(x,null,C(E(t),((e,l)=>(A(),H(me,{ref_for:!0,ref:s=>{s&&(d.value[e.id]=s)},type:e.type,key:l,id:e.id,show:e.show,selectedStyles:e.value,onChooseStyle:e=>((e,l)=>{let a=$(t.value);a[l].value=e,s.setSelectors(a)})(e,l)},null,8,["type","id","show","selectedStyles","onChooseStyle"])))),128)),(A(!0),w(x,null,C(E(l),((e,t)=>(A(),H(Ae,{ref_for:!0,ref:s=>{s&&(c.value[e.id]=s)},type:e.type,key:t,id:e.id,show:e.show,selected:e.value,onSelect:e=>((e,t)=>{let a=$(l.value);a[t].value=e,s.setSegSelectors(a)})(e,t)},null,8,["type","id","show","selected","onSelect"])))),128)),(A(!0),w(x,null,C(E(a),((e,t)=>(A(),H(Me,{ref_for:!0,ref:s=>{s&&(v.value[e.id]=s)},type:e.type,key:t,id:e.id,show:e.show,mode:e.mode,values:e.value,onChangeValues:e=>((e,t)=>{let l=$(a.value);l[t].value=e,s.setSliderControls(l)})(e,t),onShowSlider:e=>(e=>{let t=$(a.value);t[e].show=!0,s.setSliderControls(t)})(t)},null,8,["type","id","show","mode","values","onChangeValues","onShowSlider"])))),128))],64))}},Ee={class:"no-result-placeholder"},Ce={class:"no-result-placeholder-content"},ke={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=>(s,t)=>(A(),w("div",Ee,[Q(E(P),null,{content:z((()=>[S("div",Ce,[S("i",{class:b(e.icon),style:D({"font-size":e.iconSize,"margin-bottom":".5rem"})},null,6),S("h3",null,B(e.title),1),e.message?(A(),w("p",ke,B(e.message),1)):I("",!0),e.buttonLabel?(A(),H(E(U),{key:1,label:e.buttonLabel,onClick:t[0]||(t[0]=e=>s.$emit("action")),class:"p-button-text"},null,8,["label"])):I("",!0)])])),_:1})]))},Ie={class:"left flex-1"},Ne={key:0,class:"node_id"},De={key:1,class:"edit"},He={class:"right toolbar"},Qe={__name:"node",props:{node:{type:Object,default:{}}},emits:["mousedown","mouseup","changeMode"],setup(e){const s=d(),l=g((e=>t("EasyUse.NodesMap.DisplayNodeID"))),a=e,n=h(!1),i=h(null),u=h("");y((e=>a.node.is_edit),(e=>{e&&(u.value=a.node.title)}));const p=async()=>{let e=o.canvas.graph._nodes.find((e=>e.id==a.node.id));e?(e.is_edit=!1,e.title=u.value,await s.setNodes(o.canvas.graph._nodes),n.value=!1):n.value=!1};return(s,t)=>{var a;return A(),w("div",{draggable:!1,class:b(["comfyui-easyuse-map-nodes-node",{never:void 0!==e.node.mode&&e.node.mode==E(c).NEVER},{bypass:void 0!==e.node.mode&&e.node.mode==E(c).BYPASS}])},[S("div",Ie,[l.value?(A(),w("span",Ne,B(e.node.id),1)):I("",!0),(null==(a=e.node)?void 0:a.is_edit)?(A(),w("div",De,[Q(E(W),{ref_key:"modifyRef",ref:i,modelValue:u.value,"onUpdate:modelValue":t[0]||(t[0]=e=>u.value=e),variant:"outline",size:"small",type:"text",onBlur:p,onKeydown:[R(p,["enter"]),R(p,["esc"])],style:{width:"100%"}},null,8,["modelValue"])])):void 0!==e.node.title?(A(),w("span",{key:2,class:"label",onDblclick:t[1]||(t[1]=k((s=>E(r)(e.node.id)),["stop"]))},B(e.node.title),33)):(A(),w("span",{key:3,class:"label error",onDblclick:t[2]||(t[2]=k((s=>E(r)(e.node.id)),["stop"]))},B(e.node.type),33))]),S("div",He,[Q(E(U),{size:"small",icon:e.node.mode==E(c).ALWAYS?"pi pi-eye":"pi pi-eye-slash",text:"",rounded:"",severity:"secondary",onClick:t[3]||(t[3]=k((e=>s.$emit("changeMode")),["stop"])),onMousedown:t[4]||(t[4]=k((e=>s.$emit("mousedown")),["stop"])),onMouseup:t[5]||(t[5]=k((e=>s.$emit("mouseup")),["stop"]))},null,8,["icon"])])],2)}}},ze={class:"left flex-1"},Re={key:1,class:"edit"},Ve={key:2,class:"label"},je={class:"right toolbar"},Le={key:0,class:"child"},Ge={__name:"group",props:{item:{type:Object,default:{}}},emits:["mousedown","mouseup","changeMode"],setup(e){const s=e,t=d(),l=h(!1),a=h(null),n=h("");y((e=>s.item.info.is_edit),(e=>{e&&(n.value=s.item.info.title)}));const i=e=>{var l,a;let n=s.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,t.setGroups(o.canvas.graph._groups))}},u=async()=>{let e=s.item,a=o.canvas.graph._groups.find((s=>s.pos[0]==e.info.pos[0]&&s.pos[1]==e.info.pos[1]));a?(a.is_edit=!1,a.title=n.value,await t.setGroups(o.canvas.graph._groups),l.value=!1):l.value=!1};return(s,t)=>{var l,o,d;return A(),w(x,null,[S("div",{class:b("comfyui-easyuse-map-nodes-group"),onClick:i},[S("div",ze,[e.item.children?(A(),w("i",{key:0,class:b(["icon",e.item.info.show_nodes?"pi pi-folder-open":"pi pi-folder"]),style:D({color:e.item.info.color})},null,6)):I("",!0),(null==(l=e.item.info)?void 0:l.is_edit)?(A(),w("div",Re,[Q(E(W),{ref_key:"modifyRef",ref:a,modelValue:n.value,"onUpdate:modelValue":t[0]||(t[0]=e=>n.value=e),variant:"outline",size:"small",type:"text",onBlur:u,onKeydown:[R(u,["enter"]),R(u,["esc"])],style:{width:"100%"}},null,8,["modelValue"])])):(A(),w("div",Ve,[S("span",null,B(e.item.info.title),1)]))]),S("div",je,[(null==(o=e.item.children)?void 0:o.length)>0?(A(),H(E(U),{key:0,size:"small",icon:e.item.children.find((e=>e.mode==E(c).ALWAYS))?"pi pi-eye":"pi pi-eye-slash",text:"",rounded:"",severity:"secondary",onClick:t[1]||(t[1]=k((e=>s.$emit("changeMode")),["stop"])),onMousedown:t[2]||(t[2]=k((e=>s.$emit("mousedown")),["stop"])),onMouseup:t[3]||(t[3]=k((e=>s.$emit("mouseup")),["stop"]))},null,8,["icon"])):I("",!0)])]),(null==(d=e.item.children)?void 0:d.length)>0&&e.item.info.show_nodes?(A(),w("div",Le,[V(s.$slots,"default")])):I("",!0)],64)}}},Ze={__name:"tree",props:{item:Object,index:Number,showGroupOnly:Boolean},emits:["dragstart","dragend","dragover","contextmenu","changeGroupMode","changeNodeMode","mousedown","mouseup"],setup:e=>(s,t)=>{var l,a,o,n;const i=j("Tree",!0);return A(),w("li",{onDragstart:t[10]||(t[10]=t=>s.$emit("dragstart",t,e.index)),onDragend:t[11]||(t[11]=t=>s.$emit("dragend",t,e.index)),onDragover:t[12]||(t[12]=t=>s.$emit("dragover",t,e.index)),draggable:!0,onContextmenu:t[13]||(t[13]=k((t=>s.$emit("contextmenu",t,e.item)),["stop"]))},[(null==(l=e.item.children)?void 0:l.length)||(null==(o=null==(a=e.item)?void 0:a.info)?void 0:o.sub_groups)?(A(),H(Ge,{key:0,item:e.item,onChangeMode:t[4]||(t[4]=t=>s.$emit("changeGroupMode",e.item)),onMousedown:t[5]||(t[5]=t=>s.$emit("mousedown",e.item,"group")),onMouseup:t[6]||(t[6]=e=>s.$emit("mouseup"))},{default:z((()=>[S("ol",null,[(A(!0),w(x,null,C(e.item.children,((l,a)=>(A(),H(i,{key:a,item:l,index:a,showGroupOnly:e.showGroupOnly,onDragstart:e=>s.$emit("dragstart",e,a),onDragend:e=>s.$emit("dragend",e,a),onDragover:e=>s.$emit("dragover",e,a),onContextmenu:e=>s.$emit("contextmenu",e,l),onChangeGroupMode:t[0]||(t[0]=e=>s.$emit("changeGroupMode",e)),onChangeNodeMode:t[1]||(t[1]=e=>s.$emit("changeNodeMode",e)),onMousedown:t[2]||(t[2]=e=>s.$emit("mousedown",e[0],e[1])),onMouseup:t[3]||(t[3]=e=>s.$emit("mouseup"))},null,8,["item","index","showGroupOnly","onDragstart","onDragend","onDragover","onContextmenu"])))),128))])])),_:1},8,["item"])):e.showGroupOnly?I("",!0):(A(),H(Qe,{key:1,node:(null==(n=e.item)?void 0:n.info)||e.item,onChangeMode:t[7]||(t[7]=t=>{var l;return s.$emit("changeNodeMode",(null==(l=e.item)?void 0:l.info)||e.item)}),onMousedown:t[8]||(t[8]=t=>{var l;return s.$emit("mousedown",(null==(l=e.item)?void 0:l.info)||e.item,"node")}),onMouseup:t[9]||(t[9]=e=>s.$emit("mouseup"))},null,8,["node"]))],32)}},Oe={class:"title"},Ye={class:"toolbar"},Ue={key:0},Pe={key:1},We={key:2,class:"no_result",style:{height:"100%"}},Te="comfyui-easyuse-map-nodes",Fe={__name:"nodesMap",emits:["handleHeader"],setup(e){const l=d(),{groups_nodes:n,groups:i,nodes:u}=Y(l),p=g((e=>t("EasyUse.NodesMap.DisplayGroupOnly"))),v=h(!1),m=e=>{v.value=!v.value,o.canvas.graph._groups.forEach((e=>{e.show_nodes=v.value})),l.setGroups(o.canvas.graph._groups)},y=h(""),f=g((e=>(null==u?void 0:u.value.filter((e=>{var s,t,l,a;return(null==(t=null==(s=e.id)?void 0:s.toString())?void 0:t.includes(y.value))||(null==(l=e.type)?void 0:l.includes(y.value))||(null==(a=e.title)?void 0:a.includes(y.value))})))||[])),_=h(null),N=h(!1),D=g((()=>N.value?[{label:s("Jump to this node"),icon:"pi pi-arrow-circle-right",visible:!0,command:()=>L(R.value)},{label:s("Rename node"),icon:"pi pi-file-edit",visible:!0,command:()=>G(R.value)},{label:s("Delete node"),icon:"pi pi-trash",command:()=>Z(R.value),visible:!0}]:[{label:s("Rename group"),icon:"pi pi-file-edit",visible:!0,command:()=>O(R.value)},{label:s("Delete group"),icon:"pi pi-trash",command:()=>P(R.value),visible:!0}])),R=h(null),j=(e,s)=>{R.value=s,N.value=!s.children,_.value.show(e)},L=e=>{r((null==e?void 0:e.info)?e.info.id:e.id)},G=e=>{e.info?e.info.is_edit=!0:e.is_edit=!0},Z=e=>{const s=e.info?e.info.id:e.id;o.canvas.graph.beforeChange(),o.canvas.graph._nodes.splice(o.canvas.graph._nodes.findIndex((e=>e.id==s)),1),o.canvas.graph.afterChange(),o.canvas.setDirty(!0,!0),l.setNodes(o.canvas.graph._nodes)},O=e=>{e.info.is_edit=!0},P=e=>{o.canvas.graph.beforeChange(),o.canvas.graph._groups.splice(o.canvas.graph._groups.findIndex((s=>s.id==e.info.id)),1),o.canvas.graph.afterChange(),o.canvas.setDirty(!0,!0),l.setGroups(o.canvas.graph._groups)};let q,$=0,K=0,ee=!1;const se=(e,s=!1)=>{if(ee)return void(ee=!1);const t=e.children.find((e=>e.mode==c.ALWAYS)),a=e.children.map((e=>e.id));o.canvas.graph._nodes.forEach((e=>{a.includes(e.id)&&(e.mode=t?s?c.NEVER:c.BYPASS:c.ALWAYS,e.graph.change())})),l.setNodes(o.canvas.graph._nodes)},te=(e,s=!1)=>{if(ee)return void(ee=!1);const t=e.mode==c.ALWAYS,a=o.canvas.graph._nodes.find((s=>s.id==e.id));a&&(a.mode=t?s?c.NEVER:c.BYPASS:c.ALWAYS,a.graph.change(),l.setNodes(o.canvas.graph._nodes))},le=(e,s="group")=>{$=(new Date).getTime(),clearTimeout(q),q=setTimeout((t=>{"group"==s?se(e,!0):te(e,!0)}),500)},ae=e=>{K=(new Date).getTime(),K-$>500&&(ee=!0),clearTimeout(q)};let oe=h(null),ne=h(null);h(!1);const ie=(e,s)=>{oe.value=s,e.currentTarget.style.opacity="0.6",e.currentTarget.style.border="1px dashed yellow",e.dataTransfer.effectAllowed="move"},ue=(e,n)=>{e.target.style.opacity="1",e.currentTarget.style.border="1px dashed transparent";if("Manual drag&drop sorting"!==t("EasyUse.NodesMap.Sorting"))return void a.warn(s("For drag and drop sorting, please find Nodes map sorting mode in Settings->EasyUse and change it to manual"));let i=o.canvas.graph._groups,u=i[oe.value],d=i[ne.value];o.canvas.graph._groups[oe.value]=d,o.canvas.graph._groups[ne.value]=u,l.setGroups(o.canvas.graph._groups)},de=(e,s)=>{e.preventDefault(),e.currentIndex!=oe.value&&(ne.value=s)};return(e,t)=>{var l,a,o;return A(),w("div",{class:b(Te)},[S("div",{class:b(Te+"__header"),onMousedown:t[0]||(t[0]=s=>e.$emit("handleHeader",s))},[S("div",Oe,B(E(s)("NODES MAP")),1),S("div",Ye,[(null==(l=E(i))?void 0:l.length)>0?M((A(),H(E(U),{key:0,icon:v.value?"pi pi-angle-double-down":"pi pi-angle-double-up",text:"",rounded:"",severity:"secondary",onClick:k(m,["stop"]),size:"small"},null,8,["icon"])),[[E(T),v.value?E(s)("Collapse All"):E(s)("Expand All"),void 0,{top:!0}]]):I("",!0),V(e.$slots,"icon")])],34),S("div",{class:b(Te+"__content")},[S("div",{class:b(Te+"__content-searchbox")},[Q(E(X),null,{default:z((()=>[Q(E(W),{class:"search-box-input",modelValue:y.value,"onUpdate:modelValue":t[1]||(t[1]=e=>y.value=e),placeholder:E(s)("Search by Node ID/Name..."),variant:"outlined",style:{width:"100%"}},null,8,["modelValue","placeholder"]),y.value?(A(),H(E(F),{key:1,class:"pi pi-times",onClick:t[2]||(t[2]=e=>y.value="")})):(A(),H(E(F),{key:0,class:"pi pi-search"}))])),_:1})],2),(null==(a=f.value)?void 0:a.length)>0&&y.value?(A(),w("ul",Ue,[(A(!0),w(x,null,C(f.value,((e,s)=>(A(),w("li",{key:s},[Q(Qe,{node:e,onChangeMode:s=>te(e),onMousedown:s=>le(e,"node"),onMouseup:ae},null,8,["node","onChangeMode","onMousedown"])])))),128))])):(null==(o=E(n))?void 0:o.length)>0&&!y.value?(A(),w("ul",Pe,[(A(!0),w(x,null,C(E(n),((e,s)=>(A(),H(Ze,{key:s,item:e,index:s,showGroupOnly:p.value,onDragstart:ie,onDragend:ue,onDragover:de,onContextmenu:j,onChangeGroupMode:se,onChangeNodeMode:te,onMousedown:le,onMouseup:ae},null,8,["item","index","showGroupOnly"])))),128))])):(A(),w("div",We,[Q(Be,{icon:"pi pi-sitemap",title:E(s)("No Nodes",!0),message:y.value?E(s)("No nodes found in the search"):E(s)("No nodes found in the map",!0)},null,8,["title","message"])]))],2),Q(E(J),{ref_key:"menuRef",ref:_,model:D.value,autoZIndex:!1,appendTo:"self"},null,8,["model"])])}}},Xe=[S("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"},[S("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)],Je=[S("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"},[S("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)],qe="comfyui-easyuse-toolbar",$e={__name:"index",setup(e){const t=d(),l=h(!1);y((e=>l.value),(e=>{e?t.watchGraph(!0):t.unwatchGraph()}));const a=h(null),o=e=>{const s=a.value;var t=e.clientX||0,l=e.clientY||0,o=s.offsetLeft,n=s.offsetTop;function i(e){var a=e.clientX,i=e.clientY,u=a-t,d=i-l;s.style.left=o+u+"px",s.style.top=n+d+"px"}document.addEventListener("mousemove",i),document.addEventListener("mouseup",(function e(){document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",e)}))};return(e,t)=>(A(),w(x,null,[S("div",{class:b(["flex-c",qe])},[S("div",{class:b(["group flex-c",qe+"-icon"]),onClick:t[0]||(t[0]=e=>l.value=!l.value)},Xe,2),S("div",{class:b(["rocket flex-c",qe+"-icon"]),onClick:t[1]||(t[1]=(...e)=>E(p)&&E(p)(...e))},Je,2)]),l.value?(A(),w("div",{key:0,ref_key:"nodesMapRef",ref:a,class:b(qe+"-nodes-map")},[Q(Fe,{onHandleHeader:o},{icon:z((()=>[M(Q(E(U),{icon:"pi pi-times",text:"",rounded:"",severity:"secondary",onClick:t[2]||(t[2]=e=>l.value=!1),size:"small"},null,512),[[E(T),E(s)("Close"),void 0,{top:!0}]])])),_:1})],2)):I("",!0)],64))}},Ke={__name:"index",setup(e){const s=d();return N((e=>{s.watchGraph()})),(e,s)=>(A(),w("div",{class:b("comfyui-easyuse-map")},[Q(Fe)]))}},es=S("img",{id:"easyuse-model-thumbnail"},null,-1),ss="Comfy.UseNewMenu",ts={__name:"App",setup(e){const a=h(null);return N((e=>{try{(async()=>{t("EasyUse.NodesMap.Enable",null)&&o.extensionManager.registerSidebarTab({id:v,icon:"pi pi-sitemap",title:s("Nodes Map (Shirt + m)",!0),tooltip:s("Nodes Map (Shirt + m)",!0),type:"custom",render:e=>{e.style.height="100%",L(G(Ke,{}),e)}});const e=await l.fetchApi("/easyuse/version");if(200===e.status){let s=await e.json();s.version&&o.registerExtension({name:"EasyUse Version",aboutPageBadges:[{label:"EasyUse v"+s.version,url:"https://github.com/yolain/ComfyUI-Easy-Use",icon:"pi pi-github"}]})}a.value=t(ss),m(ss,(e=>{a.value=e}))})()}catch(n){}})),(e,s)=>(A(),w(x,null,[Q(_e),es,"Disabled"==a.value?(A(),H($e,{key:0})):I("",!0)],64))}},ls=null==(e=document.getElementsByClassName("graph-canvas-container"))?void 0:e[0],as=document.createElement("div");as.id="comfyui-easyuse-components",ls?ls.append(as):document.body.append(as);const os=Z(ts);os.use(K),os.use(q()),os.mount("#"+as.id); +var e;import{$ as s,g as t,a as l,t as a,b as o,s as n,c as i,d as u,u as d,j as r,N as c,e as p,f as v,h as m}from"./assets/extensions-DOjrs_AA.js";import{s as g,r as h,w as y,e as f,b as A,c as w,F as x,d as S,H as b,E as M,M as _,N as E,D as C,O as k,I as B,z as I,o as N,P as D,y as H,K as Q,C as z,Q as R,x as V,A as j,R as L,S as G,U as Z}from"./assets/vue-C5MjgCre.js";import{d as O,s as Y,a as U,b as P,c as W,T,e as F,f as X,g as J,i as q}from"./assets/vendor-Dqa9Pnr9.js";import{c as $}from"./assets/lodash-CZi7izHi.js";import{P as K}from"./assets/primevue-Bhb8d6zf.js";import"./assets/primeuix-iiPAZJA6.js";const ee=O("graphStore",{state:e=>({selectors:[],selectors_styles:{},seg_selectors:[],slider_controls:[]}),actions:{setSelectors(e){this.selectors=$(e)},setStyles(e,s){this.selectors_styles[e]||(this.selectors_styles[e]=s)},setSegSelectors(e){this.seg_selectors=$(e)},setSliderControls(e){this.slider_controls=$(e)}}}),se=["data-id"],te=[S("i",{class:"mdi mdi-trash-can"},null,-1)],le=S("i",{class:"mdi mdi-magnify"},null,-1),ae=["placeholder"],oe=["onMouseenter","onMouseleave"],ne=["onClick"],ie=["name","checked"],ue=["src"],de={key:0},re=S("span",{class:"comfyui-easyuse-success"},"positive:",-1),ce={key:1},pe=S("span",{class:"comfyui-easyuse-error"},"negative:",-1),ve="comfyui-easyuse-selector",me={__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=g((e=>t("Comfy.Locale")||"en")),i=e,u=ee(),{selectors_styles:d}=Y(u),r=h([]);y((e=>i.type),(async e=>{r.value=[],e&&await(async e=>{if(d.value[i.type])return!0;const t=await l.fetchApi(`/easyuse/prompt/styles?name=${e}`);if(200===t.status){let e=(await t.json()).map(((e,s)=>(e.index=s,e)));return await u.setStyles(i.type,e),!0}return a.error(s("Get styles list Failed")),!1})(e)&&p()}),{immediate:!0});const c=o,p=e=>{const s=i.selectedStyles,t=$(d.value[i.type]);r.value=t.sort(((e,s)=>e.index-s.index)).sort(((e,t)=>s.includes(t.name)-s.includes(e.name)))},v=h(""),m=e=>e.toLowerCase(),N=f({}),D=e=>{N.src="",N.name="",N.positive="",N.negative=""},H=async e=>{const s=await l.fetchApi(`/easyuse/prompt/styles/image?name=${e}&styles_name=${i.type}`);if(200===s.status){const t=await s.text();if(t.startsWith("http"))return t;return`/easyuse/prompt/styles/image?name=${e}&styles_name=${i.type}`}},Q=e=>{e.target.src="data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QNLaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA5LjEtYzAwMSA3OS4xNDYyODk5Nzc3LCAyMDIzLzA2LzI1LTIzOjU3OjE0ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjUuMSAoMjAyMzA5MDUubS4yMzE2IDk3OWM4NmQpICAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjA3NEU1QzNCNUJBMTFFRUExMUVDNkZDRjI0NzlBN0QiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjA3NEU1QzRCNUJBMTFFRUExMUVDNkZDRjI0NzlBN0QiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpGMDc0RTVDMUI1QkExMUVFQTExRUM2RkNGMjQ3OUE3RCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGMDc0RTVDMkI1QkExMUVFQTExRUM2RkNGMjQ3OUE3RCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv/uAA5BZG9i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"};return(t,l)=>(A(),w("div",{class:b(ve+` ${ve}-styles`),"data-id":e.id,onMouseleave:D},[r.value.length>0&&e.show?(A(),w(x,{key:0},[S("div",{class:b(ve+"__header")},[S("div",{class:b(ve+"__header_button"),onClick:l[0]||(l[0]=e=>(c("chooseStyle",[]),void(v.value="")))},te,2),S("div",{class:b(ve+"__header_search")},[le,M(S("textarea",{class:"search","onUpdate:modelValue":l[1]||(l[1]=e=>v.value=e),dir:"ltr",rows:1,placeholder:E(s)("Type here to search styles ...")},null,8,ae),[[_,v.value]])],2)],2),S("div",{class:b(ve+"__content"),onMouseleave:p},[(A(!0),w(x,null,C(r.value,((s,t)=>(A(),w("div",{class:b(ve+"-item"),key:t,onMouseenter:e=>(async e=>{if(!e.imageSrc){if(e.imageLoading)return;e.imageLoading=!0;const s=await H(e.imgName).finally((()=>e.imageLoading=!1));e.imageSrc=s}N.name="zh"==n&&e.name_cn?e.name_cn:e.name,N.positive=e.prompt,N.negative=e.negative_prompt,N.src=e.imageSrc})(s),onMouseleave:k((e=>D()),["stop"])},[S("span",{class:b([ve+"-item__tag",{hide:!(e.selectedStyles.includes(s.name)||-1!=m(s.name).indexOf(m(v.value))||s.name_cn&&-1!=m(s.name_cn).indexOf(m(v.value)))}]),onClick:e=>(e=>{let s=i.selectedStyles;s.includes(e.name)?s=s.filter((s=>s!==e.name)):s.push(e.name),c("chooseStyle",s)})(s)},[S("input",{type:"checkbox",name:s.name,checked:e.selectedStyles.includes(s.name)},null,8,ie),S("span",null,B(["zh","zh_CN"].includes(n.value)&&s.name_cn?s.name_cn:s.name),1)],10,ne)],42,oe)))),128))],34),(null==N?void 0:N.src)||(null==N?void 0:N.positive)||(null==N?void 0:N.negative)?(A(),w("div",{key:0,class:b(ve+"-preview")},[N.src?(A(),w("img",{key:0,src:N.src,ref:"image",alt:"preview",onError:Q},null,40,ue)):I("",!0),S("div",{class:b(ve+"-preview__text")},[S("b",null,B(N.name),1),S("div",{class:b(ve+"-preview__prompt")},[N.positive?(A(),w("h6",de,[re,S("span",null,B(N.positive),1)])):I("",!0),N.negative?(A(),w("h6",ce,[pe,S("span",null,B(N.negative),1)])):I("",!0)],2)],2)],2)):I("",!0)],64)):I("",!0)],42,se))}},ge=["data-id"],he=["onClick"],ye=["name","checked"],fe="comfyui-easyuse-selector",Ae={__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:t}){const l=e,a=h([]);y((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"];break;case"human_parts (deeplabv3p)":a.value=["Background","Face","Hair","Glasses","Top-clothes","Bottom-clothes","Torso-skin","Left-arm","Right-arm","Left-leg","Right-leg","Left-foot","Right-foot"]}}),{immediate:!0});const o=t;return(t,n)=>{var i;return A(),w("div",{class:b(fe+` ${fe}-seg`),"data-id":e.id},[(null==(i=a.value)?void 0:i.length)>0&&e.show?(A(!0),w(x,{key:0},C(a.value,((t,a)=>(A(),w("div",{class:b(fe+"-item"),key:a},[S("span",{class:b(fe+"-item__tag"),onClick:e=>(e=>{let s=$(l.selected);s.includes(e)?s=s.filter((s=>s!==e)):s.push(e),o("select",s)})(a)},[S("input",{type:"checkbox",name:t,checked:e.selected.includes(a)},null,8,ye),S("span",null,B(E(s)(t)),1)],10,he)],2)))),128)):I("",!0)],10,ge)}}},we=["data-id"],xe=["onMousedown","onDblclick"],Se="comfyui-easyuse-slider",be="ipadapter layer weights",Me={__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:s}){const t=e,l=s,a=(e,s,t)=>(e-s)/(t-s)*100,o=(e,s,l=void 0)=>{if(t.mode===be){let t={3:2.5,6:1}[s]||0;return{default:12==e?t:0,min:-1,max:3,step:.05,value:void 0!==l?l:12==e?t:0,top:void 0!==l?100-a(l,-1,3)+"%":null,height:void 0!==l?a(l,-1,3)+"%":null}}};y((e=>t.mode),(async(e,s)=>{var a;if(e!==s&&e===be)if(!s&&(null==(a=t.values)?void 0:a.length)>0){const e=t.values.map((e=>{const s=e.split(":");return o(t.values.length,s[0],parseFloat(s[1]))}));await l("changeValues",e)}else{let e="sd1"==t.type?16:12,s=Array.from({length:e},((s,t)=>o(e,t)));await l("changeValues",s)}l("showSlider")}),{immediate:!0}),y((e=>t.type),((e,s)=>{if(e!=s&&t.mode==be){let e="sd1"==t.type?16:12,s=Array.from({length:e},((s,t)=>o(e,t)));l("changeValues",s)}}));const n=h(null),i=h(null);return N((()=>{document.onmouseup=e=>document.onmousemove=null})),(s,o)=>{var u;return A(),w("div",{class:b(Se),"data-id":e.id},[(null==(u=e.values)?void 0:u.length)>0&&e.show?(A(!0),w(x,{key:0},C(e.values,((s,o)=>(A(),w("div",{class:b([Se+"-item",{positive:3==o&&"sdxl"==e.type&&e.mode==be},{negative:6==o&&"sdxl"==e.type&&e.mode==be}]),key:o},[S("div",{class:b(Se+"-item-input")},B(s.value),3),S("div",{class:b(Se+"-item-scroll"),ref_for:!0,ref_key:"scroll",ref:n},[S("div",{class:b(Se+"-item-bar"),ref_for:!0,ref_key:"bar",ref:i,style:D({top:s.top||100-a(s.default,s.min,s.max)+"%"}),onMousedown:e=>((e,s,a)=>{let o=e||window.event,u=n.value[a],d=i.value[a],r=$(t.values),c=o.clientY-d.offsetTop;document.onmousemove=e=>{let t=(e||window.event).clientY-c;t<0?t=0:t>u.offsetHeight-d.offsetHeight&&(t=u.offsetHeight-d.offsetHeight);let o=(s.max-s.min)/s.step,n=(u.offsetHeight-d.offsetHeight)/o;t=Math.round(t/n)*n;const i=Math.floor(t/(u.offsetHeight-d.offsetHeight)*100)+"%",p=Math.floor((u.offsetHeight-d.offsetHeight-t)/(u.offsetHeight-d.offsetHeight)*100)+"%",v=parseFloat(parseFloat(s.max-(s.max-s.min)*(t/(u.offsetHeight-d.offsetHeight))).toFixed(2));r[a]={...r[a],top:i,height:p,value:v},l("changeValues",r),window.getSelection?window.getSelection().removeAllRanges():document.selection.empty()}})(e,s,o),onDblclick:e=>((e,s,a)=>{let o=$(t.values);o[a]={...o[a],top:null,height:null,value:s.default},l("changeValues",o)})(0,s,o)},null,46,xe),S("div",{class:b(Se+"-item-area"),style:D({height:s.height||a(s.default,s.min,s.max)+"%"})},null,6)],2),S("div",{class:b(Se+"-item-label")},[S("span",null,B(s.label),1)],2)],2)))),128)):I("",!0)],8,we)}}},_e={__name:"index",setup(e){const s=ee(),{selectors:t,seg_selectors:l,slider_controls:a}=Y(s),d=h({}),r=async e=>{var l,a,o,u,r,c,p;await n(1);const v=i(e,"styles"),m=(null==(l=e.properties.values)?void 0:l.length)>0?e.properties.values:[];let g=$(t.value);g.push({id:e.id,type:v.value,value:m,show:!1});const h=g.length-1;await s.setSelectors(g),(null==(a=e.flags)?void 0:a.collapsed)&&e.collapse();let y=null==(r=null==(u=null==(o=d.value[e.id])?void 0:o._)?void 0:u.vnode)?void 0:r.el;if(!y)return;e.properties.values||e.setProperty("values",[]),g[h].show=!0,await s.setSelectors(g);let f=v.value;v.getValue=e=>f,v.setValue=t=>{f=t,g[h].type=t,e.properties.values=[],g[h].value=[],s.setSelectors(g)},e.addDOMWidget("select_styles","btn",y,{setValue(){setTimeout((e=>{g[h].value=value.split(","),s.setSelectors(g)}),150)},getValue(){var s,l;return e.properties.values=(null==(l=null==(s=t.value)?void 0:s[h])?void 0:l.value)||[],e.properties.values.join(",")}}),((null==(c=e.size)?void 0:c[0])<150||(null==(p=e.size)?void 0:p[1])<150)&&e.setSize([425,500]);const A=e.onRemoved;e.onRemoved=function(){if(A&&(null==A||A.apply(this,arguments)),void 0!==t.value.findIndex((s=>s.id==e.id))){let e=$(t.value);e.splice(h,1),s.setSelectors(e)}return A}},c=h({}),p=async e=>{var t,a,o,d,r;await n(1);const p=i(e,"method"),v=(null==(t=e.properties.values)?void 0:t.length)>0?e.properties.values:[];let m=$(l.value);m.push({id:e.id,type:p.value,value:v,show:!1});const g=m.length-1;await s.setSegSelectors(m),(null==(a=e.flags)?void 0:a.collapsed)&&e.collapse();let h=null==(r=null==(d=null==(o=c.value[e.id])?void 0:o._)?void 0:d.vnode)?void 0:r.el;if(!h)return;e.properties.values||e.setProperty("values",[]),m[g].show=!0,await s.setSegSelectors(m);let y=p.value;p.getValue=e=>y,p.setValue=t=>{y=value,m[g].type=value,e.properties.values=[],m[g].value=[],u(e,i(e,"confidence"),"selfie_multiclass_256x256"===y),e.setSize([300,"selfie_multiclass_256x256"===y?260:400]),s.setSegSelectors(m)},e.addDOMWidget("mask_components","btn",h,{setValue(){setTimeout((e=>{m[g].value=value.split(","),s.setSegSelectors(m)}),150)},getValue(){var s;return e.properties.values=(null==(s=l.value)?void 0:s[g].value)||[],e.properties.values.join(",")}}),u(e,i(e,"confidence"),"selfie_multiclass_256x256"===y),e.setSize([300,"selfie_multiclass_256x256"===y?260:500]);const f=e.onRemoved;e.onRemoved=function(){if(f&&(null==f||f.apply(this,arguments)),void 0!==l.value.findIndex((s=>s.id==e.id))){let e=$(l.value);e.splice(g,1),s.setSegSelectors(e)}return f}},v=h({}),m=async e=>{var t,l,o,u,d;await n(1);const r=i(e,"mode"),c=i(e,"model_type"),p=(null==(t=e.properties.values)?void 0:t.length)>0?e.properties.values:[];(null==(l=e.flags)?void 0:l.collapsed)&&e.collapse();let m=$(a.value);m.push({id:e.id,type:c.value,mode:r.value,value:p,show:!1});const g=m.length-1;await s.setSliderControls(m);let h=null==(d=null==(u=null==(o=v.value[e.id])?void 0:o._)?void 0:u.vnode)?void 0:d.el;if(!h)return;e.addDOMWidget("values","btn",h,{setValue(){},getValue(){var s;const t=(null==(s=a.value)?void 0:s[g].value)||[];return e.properties.values=t.map(((e,s)=>`${s}:${e.value}`)),e.properties.values.join(",")}}),e.properties.values||e.setProperty("values",[]),e.setSize("sdxl"==c.value?[375,320]:[455,320]),c.callback=t=>{m=$(a.value),m[g].type!=t&&(e.setSize("sdxl"==t?[375,320]:[455,320]),m[g].value=[],m[g].type=t,s.setSliderControls(m))};const y=e.onRemoved;e.onRemoved=function(){if(y&&(null==y||y.apply(this,arguments)),void 0!==a.value.findIndex((s=>s.id==e.id))){let e=$(a.value);e.splice(g,1),s.setSliderControls(e)}return y}};return N((e=>{o.registerExtension({name:"Comfy.EasyUse.Components",async beforeRegisterNodeDef(e,s){const t=e.prototype.onNodeCreated;"easy stylesSelector"==s.name&&(e.prototype.onNodeCreated=async function(){return t&&(null==t||t.apply(this,arguments)),await r(this),t}),"easy humanSegmentation"==s.name&&(e.prototype.onNodeCreated=async function(){return t&&(null==t||t.apply(this,arguments)),await p(this),t}),"easy sliderControl"==s.name&&(e.prototype.onNodeCreated=async function(){return t&&(null==t||t.apply(this,arguments)),await m(this),t}),"easy poseEditor"==s.name&&(e.prototype.onNodeCreated=async function(){t&&(null==t||t.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),t})}})})),(e,o)=>(A(),w(x,null,[(A(!0),w(x,null,C(E(t),((e,l)=>(A(),H(me,{ref_for:!0,ref:s=>{s&&(d.value[e.id]=s)},type:e.type,key:l,id:e.id,show:e.show,selectedStyles:e.value,onChooseStyle:e=>((e,l)=>{let a=$(t.value);a[l].value=e,s.setSelectors(a)})(e,l)},null,8,["type","id","show","selectedStyles","onChooseStyle"])))),128)),(A(!0),w(x,null,C(E(l),((e,t)=>(A(),H(Ae,{ref_for:!0,ref:s=>{s&&(c.value[e.id]=s)},type:e.type,key:t,id:e.id,show:e.show,selected:e.value,onSelect:e=>((e,t)=>{let a=$(l.value);a[t].value=e,s.setSegSelectors(a)})(e,t)},null,8,["type","id","show","selected","onSelect"])))),128)),(A(!0),w(x,null,C(E(a),((e,t)=>(A(),H(Me,{ref_for:!0,ref:s=>{s&&(v.value[e.id]=s)},type:e.type,key:t,id:e.id,show:e.show,mode:e.mode,values:e.value,onChangeValues:e=>((e,t)=>{let l=$(a.value);l[t].value=e,s.setSliderControls(l)})(e,t),onShowSlider:e=>(e=>{let t=$(a.value);t[e].show=!0,s.setSliderControls(t)})(t)},null,8,["type","id","show","mode","values","onChangeValues","onShowSlider"])))),128))],64))}},Ee={class:"no-result-placeholder"},Ce={class:"no-result-placeholder-content"},ke={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=>(s,t)=>(A(),w("div",Ee,[Q(E(P),null,{content:z((()=>[S("div",Ce,[S("i",{class:b(e.icon),style:D({"font-size":e.iconSize,"margin-bottom":".5rem"})},null,6),S("h3",null,B(e.title),1),e.message?(A(),w("p",ke,B(e.message),1)):I("",!0),e.buttonLabel?(A(),H(E(U),{key:1,label:e.buttonLabel,onClick:t[0]||(t[0]=e=>s.$emit("action")),class:"p-button-text"},null,8,["label"])):I("",!0)])])),_:1})]))},Ie={class:"left flex-1"},Ne={key:0,class:"node_id"},De={key:1,class:"edit"},He={class:"right toolbar"},Qe={__name:"node",props:{node:{type:Object,default:{}}},emits:["mousedown","mouseup","changeMode"],setup(e){const s=d(),l=g((e=>t("EasyUse.NodesMap.DisplayNodeID"))),a=e,n=h(!1),i=h(null),u=h("");y((e=>a.node.is_edit),(e=>{e&&(u.value=a.node.title)}));const p=async()=>{let e=o.canvas.graph._nodes.find((e=>e.id==a.node.id));e?(e.is_edit=!1,e.title=u.value,await s.setNodes(o.canvas.graph._nodes),n.value=!1):n.value=!1};return(s,t)=>{var a;return A(),w("div",{draggable:!1,class:b(["comfyui-easyuse-map-nodes-node",{never:void 0!==e.node.mode&&e.node.mode==E(c).NEVER},{bypass:void 0!==e.node.mode&&e.node.mode==E(c).BYPASS}])},[S("div",Ie,[l.value?(A(),w("span",Ne,B(e.node.id),1)):I("",!0),(null==(a=e.node)?void 0:a.is_edit)?(A(),w("div",De,[Q(E(W),{ref_key:"modifyRef",ref:i,modelValue:u.value,"onUpdate:modelValue":t[0]||(t[0]=e=>u.value=e),variant:"outline",size:"small",type:"text",onBlur:p,onKeydown:[R(p,["enter"]),R(p,["esc"])],style:{width:"100%"}},null,8,["modelValue"])])):void 0!==e.node.title?(A(),w("span",{key:2,class:"label",onDblclick:t[1]||(t[1]=k((s=>E(r)(e.node.id)),["stop"]))},B(e.node.title),33)):(A(),w("span",{key:3,class:"label error",onDblclick:t[2]||(t[2]=k((s=>E(r)(e.node.id)),["stop"]))},B(e.node.type),33))]),S("div",He,[Q(E(U),{size:"small",icon:e.node.mode==E(c).ALWAYS?"pi pi-eye":"pi pi-eye-slash",text:"",rounded:"",severity:"secondary",onClick:t[3]||(t[3]=k((e=>s.$emit("changeMode")),["stop"])),onMousedown:t[4]||(t[4]=k((e=>s.$emit("mousedown")),["stop"])),onMouseup:t[5]||(t[5]=k((e=>s.$emit("mouseup")),["stop"]))},null,8,["icon"])])],2)}}},ze={class:"left flex-1"},Re={key:1,class:"edit"},Ve={key:2,class:"label"},je={class:"right toolbar"},Le={key:0,class:"child"},Ge={__name:"group",props:{item:{type:Object,default:{}}},emits:["mousedown","mouseup","changeMode"],setup(e){const s=e,t=d(),l=h(!1),a=h(null),n=h("");y((e=>s.item.info.is_edit),(e=>{e&&(n.value=s.item.info.title)}));const i=e=>{var l,a;let n=s.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,t.setGroups(o.canvas.graph._groups))}},u=async()=>{let e=s.item,a=o.canvas.graph._groups.find((s=>s.pos[0]==e.info.pos[0]&&s.pos[1]==e.info.pos[1]));a?(a.is_edit=!1,a.title=n.value,await t.setGroups(o.canvas.graph._groups),l.value=!1):l.value=!1};return(s,t)=>{var l,o,d;return A(),w(x,null,[S("div",{class:b("comfyui-easyuse-map-nodes-group"),onClick:i},[S("div",ze,[e.item.children?(A(),w("i",{key:0,class:b(["icon",e.item.info.show_nodes?"pi pi-folder-open":"pi pi-folder"]),style:D({color:e.item.info.color})},null,6)):I("",!0),(null==(l=e.item.info)?void 0:l.is_edit)?(A(),w("div",Re,[Q(E(W),{ref_key:"modifyRef",ref:a,modelValue:n.value,"onUpdate:modelValue":t[0]||(t[0]=e=>n.value=e),variant:"outline",size:"small",type:"text",onBlur:u,onKeydown:[R(u,["enter"]),R(u,["esc"])],style:{width:"100%"}},null,8,["modelValue"])])):(A(),w("div",Ve,[S("span",null,B(e.item.info.title),1)]))]),S("div",je,[(null==(o=e.item.children)?void 0:o.length)>0?(A(),H(E(U),{key:0,size:"small",icon:e.item.children.find((e=>e.mode==E(c).ALWAYS))?"pi pi-eye":"pi pi-eye-slash",text:"",rounded:"",severity:"secondary",onClick:t[1]||(t[1]=k((e=>s.$emit("changeMode")),["stop"])),onMousedown:t[2]||(t[2]=k((e=>s.$emit("mousedown")),["stop"])),onMouseup:t[3]||(t[3]=k((e=>s.$emit("mouseup")),["stop"]))},null,8,["icon"])):I("",!0)])]),(null==(d=e.item.children)?void 0:d.length)>0&&e.item.info.show_nodes?(A(),w("div",Le,[V(s.$slots,"default")])):I("",!0)],64)}}},Ze={__name:"tree",props:{item:Object,index:Number,showGroupOnly:Boolean},emits:["dragstart","dragend","dragover","contextmenu","changeGroupMode","changeNodeMode","mousedown","mouseup"],setup:e=>(s,t)=>{var l,a,o,n;const i=j("Tree",!0);return A(),w("li",{onDragstart:t[10]||(t[10]=t=>s.$emit("dragstart",t,e.index)),onDragend:t[11]||(t[11]=t=>s.$emit("dragend",t,e.index)),onDragover:t[12]||(t[12]=t=>s.$emit("dragover",t,e.index)),draggable:!0,onContextmenu:t[13]||(t[13]=k((t=>s.$emit("contextmenu",t,e.item)),["stop"]))},[(null==(l=e.item.children)?void 0:l.length)||(null==(o=null==(a=e.item)?void 0:a.info)?void 0:o.sub_groups)?(A(),H(Ge,{key:0,item:e.item,onChangeMode:t[4]||(t[4]=t=>s.$emit("changeGroupMode",e.item)),onMousedown:t[5]||(t[5]=t=>s.$emit("mousedown",e.item,"group")),onMouseup:t[6]||(t[6]=e=>s.$emit("mouseup"))},{default:z((()=>[S("ol",null,[(A(!0),w(x,null,C(e.item.children,((l,a)=>(A(),H(i,{key:a,item:l,index:a,showGroupOnly:e.showGroupOnly,onDragstart:e=>s.$emit("dragstart",e,a),onDragend:e=>s.$emit("dragend",e,a),onDragover:e=>s.$emit("dragover",e,a),onContextmenu:e=>s.$emit("contextmenu",e,l),onChangeGroupMode:t[0]||(t[0]=e=>s.$emit("changeGroupMode",e)),onChangeNodeMode:t[1]||(t[1]=e=>s.$emit("changeNodeMode",e)),onMousedown:t[2]||(t[2]=e=>s.$emit("mousedown",e[0],e[1])),onMouseup:t[3]||(t[3]=e=>s.$emit("mouseup"))},null,8,["item","index","showGroupOnly","onDragstart","onDragend","onDragover","onContextmenu"])))),128))])])),_:1},8,["item"])):e.showGroupOnly?I("",!0):(A(),H(Qe,{key:1,node:(null==(n=e.item)?void 0:n.info)||e.item,onChangeMode:t[7]||(t[7]=t=>{var l;return s.$emit("changeNodeMode",(null==(l=e.item)?void 0:l.info)||e.item)}),onMousedown:t[8]||(t[8]=t=>{var l;return s.$emit("mousedown",(null==(l=e.item)?void 0:l.info)||e.item,"node")}),onMouseup:t[9]||(t[9]=e=>s.$emit("mouseup"))},null,8,["node"]))],32)}},Oe={class:"title"},Ye={class:"toolbar"},Ue={key:0},Pe={key:1},We={key:2,class:"no_result",style:{height:"100%"}},Te="comfyui-easyuse-map-nodes",Fe={__name:"nodesMap",emits:["handleHeader"],setup(e){const l=d(),{groups_nodes:n,groups:i,nodes:u}=Y(l),p=g((e=>t("EasyUse.NodesMap.DisplayGroupOnly"))),v=h(!1),m=e=>{v.value=!v.value,o.canvas.graph._groups.forEach((e=>{e.show_nodes=v.value})),l.setGroups(o.canvas.graph._groups)},y=h(""),f=g((e=>(null==u?void 0:u.value.filter((e=>{var s,t,l,a;return(null==(t=null==(s=e.id)?void 0:s.toString())?void 0:t.includes(y.value))||(null==(l=e.type)?void 0:l.includes(y.value))||(null==(a=e.title)?void 0:a.includes(y.value))})))||[])),_=h(null),N=h(!1),D=g((()=>N.value?[{label:s("Jump to this node"),icon:"pi pi-arrow-circle-right",visible:!0,command:()=>L(R.value)},{label:s("Rename node"),icon:"pi pi-file-edit",visible:!0,command:()=>G(R.value)},{label:s("Delete node"),icon:"pi pi-trash",command:()=>Z(R.value),visible:!0}]:[{label:s("Rename group"),icon:"pi pi-file-edit",visible:!0,command:()=>O(R.value)},{label:s("Delete group"),icon:"pi pi-trash",command:()=>P(R.value),visible:!0}])),R=h(null),j=(e,s)=>{R.value=s,N.value=!s.children,_.value.show(e)},L=e=>{r((null==e?void 0:e.info)?e.info.id:e.id)},G=e=>{e.info?e.info.is_edit=!0:e.is_edit=!0},Z=e=>{const s=e.info?e.info.id:e.id;o.canvas.graph.beforeChange(),o.canvas.graph._nodes.splice(o.canvas.graph._nodes.findIndex((e=>e.id==s)),1),o.canvas.graph.afterChange(),o.canvas.setDirty(!0,!0),l.setNodes(o.canvas.graph._nodes)},O=e=>{e.info.is_edit=!0},P=e=>{o.canvas.graph.beforeChange(),o.canvas.graph._groups.splice(o.canvas.graph._groups.findIndex((s=>s.id==e.info.id)),1),o.canvas.graph.afterChange(),o.canvas.setDirty(!0,!0),l.setGroups(o.canvas.graph._groups)};let q,$=0,K=0,ee=!1;const se=(e,s=!1)=>{if(ee)return void(ee=!1);const t=e.children.find((e=>e.mode==c.ALWAYS)),a=e.children.map((e=>e.id));o.canvas.graph._nodes.forEach((e=>{a.includes(e.id)&&(e.mode=t?s?c.NEVER:c.BYPASS:c.ALWAYS,e.graph.change())})),l.setNodes(o.canvas.graph._nodes)},te=(e,s=!1)=>{if(ee)return void(ee=!1);const t=e.mode==c.ALWAYS,a=o.canvas.graph._nodes.find((s=>s.id==e.id));a&&(a.mode=t?s?c.NEVER:c.BYPASS:c.ALWAYS,a.graph.change(),l.setNodes(o.canvas.graph._nodes))},le=(e,s="group")=>{$=(new Date).getTime(),clearTimeout(q),q=setTimeout((t=>{"group"==s?se(e,!0):te(e,!0)}),500)},ae=e=>{K=(new Date).getTime(),K-$>500&&(ee=!0),clearTimeout(q)};let oe=h(null),ne=h(null);h(!1);const ie=(e,s)=>{oe.value=s,e.currentTarget.style.opacity="0.6",e.currentTarget.style.border="1px dashed yellow",e.dataTransfer.effectAllowed="move"},ue=(e,n)=>{e.target.style.opacity="1",e.currentTarget.style.border="1px dashed transparent";if("Manual drag&drop sorting"!==t("EasyUse.NodesMap.Sorting"))return void a.warn(s("For drag and drop sorting, please find Nodes map sorting mode in Settings->EasyUse and change it to manual"));let i=o.canvas.graph._groups,u=i[oe.value],d=i[ne.value];o.canvas.graph._groups[oe.value]=d,o.canvas.graph._groups[ne.value]=u,l.setGroups(o.canvas.graph._groups)},de=(e,s)=>{e.preventDefault(),e.currentIndex!=oe.value&&(ne.value=s)};return(e,t)=>{var l,a,o;return A(),w("div",{class:b(Te)},[S("div",{class:b(Te+"__header"),onMousedown:t[0]||(t[0]=s=>e.$emit("handleHeader",s))},[S("div",Oe,B(E(s)("NODES MAP")),1),S("div",Ye,[(null==(l=E(i))?void 0:l.length)>0?M((A(),H(E(U),{key:0,icon:v.value?"pi pi-angle-double-down":"pi pi-angle-double-up",text:"",rounded:"",severity:"secondary",onClick:k(m,["stop"]),size:"small"},null,8,["icon"])),[[E(T),v.value?E(s)("Collapse All"):E(s)("Expand All"),void 0,{top:!0}]]):I("",!0),V(e.$slots,"icon")])],34),S("div",{class:b(Te+"__content")},[S("div",{class:b(Te+"__content-searchbox")},[Q(E(X),null,{default:z((()=>[Q(E(W),{class:"search-box-input",modelValue:y.value,"onUpdate:modelValue":t[1]||(t[1]=e=>y.value=e),placeholder:E(s)("Search by Node ID/Name..."),variant:"outlined",style:{width:"100%"}},null,8,["modelValue","placeholder"]),y.value?(A(),H(E(F),{key:1,class:"pi pi-times",onClick:t[2]||(t[2]=e=>y.value="")})):(A(),H(E(F),{key:0,class:"pi pi-search"}))])),_:1})],2),(null==(a=f.value)?void 0:a.length)>0&&y.value?(A(),w("ul",Ue,[(A(!0),w(x,null,C(f.value,((e,s)=>(A(),w("li",{key:s},[Q(Qe,{node:e,onChangeMode:s=>te(e),onMousedown:s=>le(e,"node"),onMouseup:ae},null,8,["node","onChangeMode","onMousedown"])])))),128))])):(null==(o=E(n))?void 0:o.length)>0&&!y.value?(A(),w("ul",Pe,[(A(!0),w(x,null,C(E(n),((e,s)=>(A(),H(Ze,{key:s,item:e,index:s,showGroupOnly:p.value,onDragstart:ie,onDragend:ue,onDragover:de,onContextmenu:j,onChangeGroupMode:se,onChangeNodeMode:te,onMousedown:le,onMouseup:ae},null,8,["item","index","showGroupOnly"])))),128))])):(A(),w("div",We,[Q(Be,{icon:"pi pi-sitemap",title:E(s)("No Nodes",!0),message:y.value?E(s)("No nodes found in the search"):E(s)("No nodes found in the map",!0)},null,8,["title","message"])]))],2),Q(E(J),{ref_key:"menuRef",ref:_,model:D.value,autoZIndex:!1,appendTo:"self"},null,8,["model"])])}}},Xe=[S("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"},[S("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)],Je=[S("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"},[S("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)],qe="comfyui-easyuse-toolbar",$e={__name:"index",setup(e){const t=d(),l=h(!1);y((e=>l.value),(e=>{e?t.watchGraph(!0):t.unwatchGraph()}));const a=h(null),o=e=>{const s=a.value;var t=e.clientX||0,l=e.clientY||0,o=s.offsetLeft,n=s.offsetTop;function i(e){var a=e.clientX,i=e.clientY,u=a-t,d=i-l;s.style.left=o+u+"px",s.style.top=n+d+"px"}document.addEventListener("mousemove",i),document.addEventListener("mouseup",(function e(){document.removeEventListener("mousemove",i),document.removeEventListener("mouseup",e)}))};return(e,t)=>(A(),w(x,null,[S("div",{class:b(["flex-c",qe])},[S("div",{class:b(["group flex-c",qe+"-icon"]),onClick:t[0]||(t[0]=e=>l.value=!l.value)},Xe,2),S("div",{class:b(["rocket flex-c",qe+"-icon"]),onClick:t[1]||(t[1]=(...e)=>E(p)&&E(p)(...e))},Je,2)]),l.value?(A(),w("div",{key:0,ref_key:"nodesMapRef",ref:a,class:b(qe+"-nodes-map")},[Q(Fe,{onHandleHeader:o},{icon:z((()=>[M(Q(E(U),{icon:"pi pi-times",text:"",rounded:"",severity:"secondary",onClick:t[2]||(t[2]=e=>l.value=!1),size:"small"},null,512),[[E(T),E(s)("Close"),void 0,{top:!0}]])])),_:1})],2)):I("",!0)],64))}},Ke={__name:"index",setup(e){const s=d();return N((e=>{s.watchGraph()})),(e,s)=>(A(),w("div",{class:b("comfyui-easyuse-map")},[Q(Fe)]))}},es=S("img",{id:"easyuse-model-thumbnail"},null,-1),ss="Comfy.UseNewMenu",ts={__name:"App",setup(e){const a=h(null);return N((e=>{try{(async()=>{t("EasyUse.NodesMap.Enable",null)&&o.extensionManager.registerSidebarTab({id:v,icon:"pi pi-sitemap",title:s("Nodes Map (Shirt + m)",!0),tooltip:s("Nodes Map (Shirt + m)",!0),type:"custom",render:e=>{e.style.height="100%",L(G(Ke,{}),e)}});const e=await l.fetchApi("/easyuse/version");if(200===e.status){let s=await e.json();s.version&&o.registerExtension({name:"EasyUse Version",aboutPageBadges:[{label:"EasyUse v"+s.version,url:"https://github.com/yolain/ComfyUI-Easy-Use",icon:"pi pi-github"}]})}a.value=t(ss),m(ss,(e=>{a.value=e}))})()}catch(n){}})),(e,s)=>(A(),w(x,null,[Q(_e),es,"Disabled"==a.value?(A(),H($e,{key:0})):I("",!0)],64))}},ls=null==(e=document.getElementsByClassName("graph-canvas-container"))?void 0:e[0],as=document.createElement("div");as.id="comfyui-easyuse-components",ls?ls.append(as):document.body.append(as);const os=Z(ts);os.use(K),os.use(q()),os.mount("#"+as.id);