comfyui-frontend-package 1.37.3__py3-none-any.whl → 1.37.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- comfyui_frontend_package/static/assets/AboutPanel-BwfERTOT.js +2 -0
- comfyui_frontend_package/static/assets/{AboutPanel-6wNn9DuA.js.map → AboutPanel-BwfERTOT.js.map} +1 -1
- comfyui_frontend_package/static/assets/{AudioPreviewPlayer-ybC6cXRM.js → AudioPreviewPlayer-DT9nrYD6.js} +2 -2
- comfyui_frontend_package/static/assets/{AudioPreviewPlayer-ybC6cXRM.js.map → AudioPreviewPlayer-DT9nrYD6.js.map} +1 -1
- comfyui_frontend_package/static/assets/ComfyQueueButton-DazIfwpa.js +2 -0
- comfyui_frontend_package/static/assets/{ComfyQueueButton-BbIk3ALi.js.map → ComfyQueueButton-DazIfwpa.js.map} +1 -1
- comfyui_frontend_package/static/assets/ExtensionPanel-D539Wx81.js +2 -0
- comfyui_frontend_package/static/assets/{ExtensionPanel-DYw7d35v.js.map → ExtensionPanel-D539Wx81.js.map} +1 -1
- comfyui_frontend_package/static/assets/GraphView-C_FQc1Au.js +16 -0
- comfyui_frontend_package/static/assets/GraphView-C_FQc1Au.js.map +1 -0
- comfyui_frontend_package/static/assets/{GraphView-DwAYVX4H.css → GraphView-Ck9hVEEV.css} +1 -1
- comfyui_frontend_package/static/assets/{KeybindingPanel-D0MD69FX.js → KeybindingPanel-Bj61UMoX.js} +2 -2
- comfyui_frontend_package/static/assets/{KeybindingPanel-D0MD69FX.js.map → KeybindingPanel-Bj61UMoX.js.map} +1 -1
- comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-DyOiHvnA.js +2 -0
- comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-DyOiHvnA.js.map +1 -0
- comfyui_frontend_package/static/assets/LegacyCreditsPanel-BNqPlgUn.js +2 -0
- comfyui_frontend_package/static/assets/{LegacyCreditsPanel-BMvul305.js.map → LegacyCreditsPanel-BNqPlgUn.js.map} +1 -1
- comfyui_frontend_package/static/assets/Load3D-CaNKqgIL.js +2 -0
- comfyui_frontend_package/static/assets/Load3D-CaNKqgIL.js.map +1 -0
- comfyui_frontend_package/static/assets/{Load3D.vue_vue_type_script_setup_true_lang-BtNou66j.js → Load3D.vue_vue_type_script_setup_true_lang-gf2aN2_8.js} +2 -2
- comfyui_frontend_package/static/assets/{Load3D.vue_vue_type_script_setup_true_lang-BtNou66j.js.map → Load3D.vue_vue_type_script_setup_true_lang-gf2aN2_8.js.map} +1 -1
- comfyui_frontend_package/static/assets/{Media3DBottom-Bk7TM-zH.js → Media3DBottom-D9M9b2ls.js} +2 -2
- comfyui_frontend_package/static/assets/{Media3DBottom-Bk7TM-zH.js.map → Media3DBottom-D9M9b2ls.js.map} +1 -1
- comfyui_frontend_package/static/assets/{Media3DTop-CIsQ4Ccc.js → Media3DTop-B-qNqlQF.js} +2 -2
- comfyui_frontend_package/static/assets/{Media3DTop-CIsQ4Ccc.js.map → Media3DTop-B-qNqlQF.js.map} +1 -1
- comfyui_frontend_package/static/assets/{MediaAudioBottom-CWxtJ5vP.js → MediaAudioBottom-d7EZ2Wx5.js} +2 -2
- comfyui_frontend_package/static/assets/{MediaAudioBottom-CWxtJ5vP.js.map → MediaAudioBottom-d7EZ2Wx5.js.map} +1 -1
- comfyui_frontend_package/static/assets/{MediaImageBottom-OWiMf_6W.js → MediaImageBottom-B-9SOOhn.js} +2 -2
- comfyui_frontend_package/static/assets/{MediaImageBottom-OWiMf_6W.js.map → MediaImageBottom-B-9SOOhn.js.map} +1 -1
- comfyui_frontend_package/static/assets/{MediaTitle.vue_vue_type_script_setup_true_lang-C59zAxW0.js → MediaTitle.vue_vue_type_script_setup_true_lang-DVzYM9UW.js} +2 -2
- comfyui_frontend_package/static/assets/{MediaTitle.vue_vue_type_script_setup_true_lang-C59zAxW0.js.map → MediaTitle.vue_vue_type_script_setup_true_lang-DVzYM9UW.js.map} +1 -1
- comfyui_frontend_package/static/assets/{MediaVideoBottom-OKuLWTbn.js → MediaVideoBottom-D6IR52ja.js} +2 -2
- comfyui_frontend_package/static/assets/{MediaVideoBottom-OKuLWTbn.js.map → MediaVideoBottom-D6IR52ja.js.map} +1 -1
- comfyui_frontend_package/static/assets/{ServerConfigPanel-5RPRkuvl.js → ServerConfigPanel-BBWOQ7ej.js} +2 -2
- comfyui_frontend_package/static/assets/{ServerConfigPanel-5RPRkuvl.js.map → ServerConfigPanel-BBWOQ7ej.js.map} +1 -1
- comfyui_frontend_package/static/assets/{SubscriptionRequiredDialogContent-CtCWM_jj.js → SubscriptionRequiredDialogContent-oUSDZGJZ.js} +2 -2
- comfyui_frontend_package/static/assets/{SubscriptionRequiredDialogContent-CtCWM_jj.js.map → SubscriptionRequiredDialogContent-oUSDZGJZ.js.map} +1 -1
- comfyui_frontend_package/static/assets/{UserPanel-CrxHTRQZ.js → UserPanel-Do_alb49.js} +2 -2
- comfyui_frontend_package/static/assets/{UserPanel-CrxHTRQZ.js.map → UserPanel-Do_alb49.js.map} +1 -1
- comfyui_frontend_package/static/assets/{UserSelectView-tu0lXAri.js → UserSelectView-DVJzD33o.js} +2 -2
- comfyui_frontend_package/static/assets/{UserSelectView-tu0lXAri.js.map → UserSelectView-DVJzD33o.js.map} +1 -1
- comfyui_frontend_package/static/assets/{ValueControlPopover-CgyNfIEw.js → ValueControlPopover-CZIsPw9J.js} +2 -2
- comfyui_frontend_package/static/assets/{ValueControlPopover-CgyNfIEw.js.map → ValueControlPopover-CZIsPw9J.js.map} +1 -1
- comfyui_frontend_package/static/assets/WidgetAudioUI-CbC597q0.js +2 -0
- comfyui_frontend_package/static/assets/{WidgetAudioUI-BZL35TlT.js.map → WidgetAudioUI-CbC597q0.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetButton-Dkge0J8R.js → WidgetButton-Df2ihQh6.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetButton-Dkge0J8R.js.map → WidgetButton-Df2ihQh6.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetColorPicker-vRHta_Kz.js → WidgetColorPicker-DgI8RjHJ.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetColorPicker-vRHta_Kz.js.map → WidgetColorPicker-DgI8RjHJ.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetGalleria-BoWBT6i_.js → WidgetGalleria-Cyz9lzP-.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetGalleria-BoWBT6i_.js.map → WidgetGalleria-Cyz9lzP-.js.map} +1 -1
- comfyui_frontend_package/static/assets/WidgetInputNumber-wD2uHC32.js +2 -0
- comfyui_frontend_package/static/assets/WidgetInputNumber-wD2uHC32.js.map +1 -0
- comfyui_frontend_package/static/assets/{WidgetInputNumber.vue_vue_type_script_setup_true_lang-aeh2Ot2n.js → WidgetInputNumber.vue_vue_type_script_setup_true_lang-XbRdxGIz.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetInputNumber.vue_vue_type_script_setup_true_lang-aeh2Ot2n.js.map → WidgetInputNumber.vue_vue_type_script_setup_true_lang-XbRdxGIz.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetInputText-BRV8PzCv.js → WidgetInputText-BR3C0fCV.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetInputText-BRV8PzCv.js.map → WidgetInputText-BR3C0fCV.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetLayoutField.vue_vue_type_script_setup_true_lang-Dps42A-g.js → WidgetLayoutField.vue_vue_type_script_setup_true_lang-CZj3E4v6.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetLayoutField.vue_vue_type_script_setup_true_lang-Dps42A-g.js.map → WidgetLayoutField.vue_vue_type_script_setup_true_lang-CZj3E4v6.js.map} +1 -1
- comfyui_frontend_package/static/assets/WidgetLegacy-CkV176Xm.js +2 -0
- comfyui_frontend_package/static/assets/WidgetLegacy-CkV176Xm.js.map +1 -0
- comfyui_frontend_package/static/assets/WidgetMarkdown-rM_UPCA-.js +2 -0
- comfyui_frontend_package/static/assets/{WidgetMarkdown-DIMd79hN.js.map → WidgetMarkdown-rM_UPCA-.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetRecordAudio-DwHSqiBz.js → WidgetRecordAudio-CLpvV8e9.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetRecordAudio-DwHSqiBz.js.map → WidgetRecordAudio-CLpvV8e9.js.map} +1 -1
- comfyui_frontend_package/static/assets/WidgetSelect-BwcPw-lE.js +2 -0
- comfyui_frontend_package/static/assets/WidgetSelect-BwcPw-lE.js.map +1 -0
- comfyui_frontend_package/static/assets/{WidgetSelect.vue_vue_type_script_setup_true_lang-CMg0GtSC.js → WidgetSelect.vue_vue_type_script_setup_true_lang-CITubFAk.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetSelect.vue_vue_type_script_setup_true_lang-CMg0GtSC.js.map → WidgetSelect.vue_vue_type_script_setup_true_lang-CITubFAk.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetTextarea-CZnqW4e_.js → WidgetTextarea-CwUMJ-23.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetTextarea-CZnqW4e_.js.map → WidgetTextarea-CwUMJ-23.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetToggleSwitch-DwYqmS17.js → WidgetToggleSwitch-DqQpfrDq.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetToggleSwitch-DwYqmS17.js.map → WidgetToggleSwitch-DqQpfrDq.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetWithControl.vue_vue_type_script_setup_true_lang-COy_p9Eh.js → WidgetWithControl.vue_vue_type_script_setup_true_lang-JSl33v3j.js} +3 -3
- comfyui_frontend_package/static/assets/{WidgetWithControl.vue_vue_type_script_setup_true_lang-COy_p9Eh.js.map → WidgetWithControl.vue_vue_type_script_setup_true_lang-JSl33v3j.js.map} +1 -1
- comfyui_frontend_package/static/assets/{audioService-Bh6LQBV8.js → audioService-DKN4T_Yr.js} +2 -2
- comfyui_frontend_package/static/assets/{audioService-Bh6LQBV8.js.map → audioService-DKN4T_Yr.js.map} +1 -1
- comfyui_frontend_package/static/assets/{audioUtils-DlA-QHPJ.js → audioUtils-WBbpBG9r.js} +2 -2
- comfyui_frontend_package/static/assets/{audioUtils-DlA-QHPJ.js.map → audioUtils-WBbpBG9r.js.map} +1 -1
- comfyui_frontend_package/static/assets/{commands-CHktpNSL.js → commands-CRVPkENB.js} +2 -2
- comfyui_frontend_package/static/assets/commands-CRVPkENB.js.map +1 -0
- comfyui_frontend_package/static/assets/{index-2-qFLlQP.js → index-CuKlxAeN.js} +30 -28
- comfyui_frontend_package/static/assets/index-CuKlxAeN.js.map +1 -0
- comfyui_frontend_package/static/assets/index-Cv1aHIoL.css +1 -0
- comfyui_frontend_package/static/assets/{index-_AAd9eTu.js → index-DEqR9lwu.js} +2 -2
- comfyui_frontend_package/static/assets/{index-_AAd9eTu.js.map → index-DEqR9lwu.js.map} +1 -1
- comfyui_frontend_package/static/assets/index-KizWjI6s.js +5 -0
- comfyui_frontend_package/static/assets/{index-DKofvZ3r.js.map → index-KizWjI6s.js.map} +1 -1
- comfyui_frontend_package/static/assets/{keybindingService-CWbdWLPI.js → keybindingService-O5KDQleT.js} +2 -2
- comfyui_frontend_package/static/assets/{keybindingService-CWbdWLPI.js.map → keybindingService-O5KDQleT.js.map} +1 -1
- comfyui_frontend_package/static/assets/main-10VBfKWj.js +14 -0
- comfyui_frontend_package/static/assets/main-10VBfKWj.js.map +1 -0
- comfyui_frontend_package/static/assets/nodeDefs-D9VHUZJt.js +53 -0
- comfyui_frontend_package/static/assets/nodeDefs-D9VHUZJt.js.map +1 -0
- comfyui_frontend_package/static/assets/{vendor-three-BKWXAgVe.js → vendor-three-29bN5sfh.js} +2 -2
- comfyui_frontend_package/static/assets/{vendor-three-BKWXAgVe.js.map → vendor-three-29bN5sfh.js.map} +1 -1
- comfyui_frontend_package/static/index.html +1 -1
- {comfyui_frontend_package-1.37.3.dist-info → comfyui_frontend_package-1.37.4.dist-info}/METADATA +1 -1
- {comfyui_frontend_package-1.37.3.dist-info → comfyui_frontend_package-1.37.4.dist-info}/RECORD +101 -101
- comfyui_frontend_package/static/assets/AboutPanel-6wNn9DuA.js +0 -2
- comfyui_frontend_package/static/assets/ComfyQueueButton-BbIk3ALi.js +0 -2
- comfyui_frontend_package/static/assets/ExtensionPanel-DYw7d35v.js +0 -2
- comfyui_frontend_package/static/assets/GraphView-CjDjhvN7.js +0 -16
- comfyui_frontend_package/static/assets/GraphView-CjDjhvN7.js.map +0 -1
- comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-CcI-aYhS.js +0 -2
- comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-CcI-aYhS.js.map +0 -1
- comfyui_frontend_package/static/assets/LegacyCreditsPanel-BMvul305.js +0 -2
- comfyui_frontend_package/static/assets/Load3D-BplYUML3.js +0 -2
- comfyui_frontend_package/static/assets/Load3D-BplYUML3.js.map +0 -1
- comfyui_frontend_package/static/assets/WidgetAudioUI-BZL35TlT.js +0 -2
- comfyui_frontend_package/static/assets/WidgetInputNumber-DMqIMaoH.js +0 -2
- comfyui_frontend_package/static/assets/WidgetInputNumber-DMqIMaoH.js.map +0 -1
- comfyui_frontend_package/static/assets/WidgetLegacy-BWDBwsli.js +0 -2
- comfyui_frontend_package/static/assets/WidgetLegacy-BWDBwsli.js.map +0 -1
- comfyui_frontend_package/static/assets/WidgetMarkdown-DIMd79hN.js +0 -2
- comfyui_frontend_package/static/assets/WidgetSelect-BOvzWMtV.js +0 -2
- comfyui_frontend_package/static/assets/WidgetSelect-BOvzWMtV.js.map +0 -1
- comfyui_frontend_package/static/assets/commands-CHktpNSL.js.map +0 -1
- comfyui_frontend_package/static/assets/index-2-qFLlQP.js.map +0 -1
- comfyui_frontend_package/static/assets/index-571Fkv7y.css +0 -1
- comfyui_frontend_package/static/assets/index-DKofvZ3r.js +0 -5
- comfyui_frontend_package/static/assets/main-DGOENlHZ.js +0 -14
- comfyui_frontend_package/static/assets/main-DGOENlHZ.js.map +0 -1
- comfyui_frontend_package/static/assets/nodeDefs-DtmuHPr3.js +0 -53
- comfyui_frontend_package/static/assets/nodeDefs-DtmuHPr3.js.map +0 -1
- {comfyui_frontend_package-1.37.3.dist-info → comfyui_frontend_package-1.37.4.dist-info}/WHEEL +0 -0
- {comfyui_frontend_package-1.37.3.dist-info → comfyui_frontend_package-1.37.4.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SubscriptionRequiredDialogContent-oUSDZGJZ.js","./index-CuKlxAeN.js","./vendor-primevue-B6rcS73U.js","./vendor-other-CSX7WseZ.js","./vendor-other-DYX1NpEr.css","./vendor-vue-CXt3ZZQ3.js","./vendor-xterm-CWYFmgbN.js","./vendor-xterm-xj0gfbX3.css","./vendor-three-29bN5sfh.js","./vendor-tiptap-BkFTmTb3.js","./index-Cv1aHIoL.css","./UserAvatar.vue_vue_type_script_setup_true_lang-ZL9faEyg.js","./index-DEqR9lwu.js","./LazyImage.vue_vue_type_script_setup_true_lang-DyOiHvnA.js","./keybindingService-O5KDQleT.js","./serverConfigStore-trwJaF_M.js","./WidgetInputNumber.vue_vue_type_script_setup_true_lang-XbRdxGIz.js","./widgetPropFilter-CygYoMQt.js","./WidgetLayoutField.vue_vue_type_script_setup_true_lang-CZj3E4v6.js","./WidgetWithControl.vue_vue_type_script_setup_true_lang-JSl33v3j.js","./WidgetInputNumber-DwTgzZ6Z.css","./SubscriptionRequiredDialogContent-BJ80blC4.css","./ComfyQueueButton-DazIfwpa.js","./ComfyQueueButton-Chw03MdC.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
var Ll=Object.defineProperty;var n=(e,o)=>Ll(e,"name",{value:o,configurable:!0});import{bw as Je,r as L,E as k,d6 as fa,bx as q,dp as Ol,i as Vl,e9 as Zo,w as ne,c as T,d as f,l as ce,z,e as p,v as Qe,k as O,s as J,by as C,q as R,p as Me,T as Gn,j as G,u as B,F as le,y as we,A as Ie,cM as jn,cN as jo,eo as Rl,ep as ma,m as It,D as Hn,I as _e,G as ge,L as Be,eq as Cs,dG as Nn,ec as $n,er as Wl,h as Ne,J as Xt,ea as en,bB as tn,cw as va,bg as it,df as vt,dt as ga,n as Re,dH as be,o as Ve,cO as Ss,es as zl,d8 as Qt,d2 as Le,e6 as Bl,cB as Ht,da as on,et as Fl,dx as ha,a as In,eu as ya,f as ba,ev as Ul,cd as rt,x as Lt,t as Zt,cy as qn,d5 as xo,e7 as Gl,ew as oo,dJ as xt,dv as wa,bl as jl,dm as Hl,cF as ka,b as Ca,bz as xs,ex as ql,ey as vo,ez as Kl,bi as _s,eA as Ql,cp as Sa,cx as Ot,dc as xa,bj as _a,de as Jl,d3 as nn,eB as Yl,d4 as Xl,dE as Ta,dy as Zl,bn as ei,g as Ts,bk as Na,dF as ti,d0 as oi,dD as $a,eC as ni,el as si,e1 as ai}from"./vendor-other-CSX7WseZ.js";import{d as Mt,u as pe,s as Fe,j as Ia,k as Ma}from"./vendor-vue-CXt3ZZQ3.js";import{b as li,p as Ze,_ as Kn,u as zt,a0 as Pa,a1 as Mn,a2 as Tt,O as Da,w as Jt,a3 as Aa,e as ii,a4 as ri,a as Qn,q as Ns,M as ui,Q as ci,R as di,J as pi,a5 as fi,v as Ea,o as La,L as Oa,T as No,c as mi,y as Va,g as vi,a6 as gi,a7 as hi,m as yi,k as fo}from"./vendor-primevue-B6rcS73U.js";import{s as he,n as We,a as Ce,i as Ra,b as ft,c as fe,_ as X,d as Ee,S as sn,t as re,u as gt,e as ie,f as $t,g as bi,E as Jn,h as Ho,j as wi,k as Wa,l as Yn,m as Xn,o as ki,p as et,q as tt,r as K,v as Ci,w as Ae,x as no,y as qo,z as so,A as Se,B as Ye,C as Si,D as ht,F as ot,G as za,H as Ba,I as Zn,J as Fa,K as me,L as xi,M as _t,N as Ua,O as ao,P as _i,Q as Ti,R as an,T as Ni,U as $i,V as Ii,W as Bt,X as Ga,Y as Mi,Z as Pi,$ as es,a0 as lo,a1 as io,a2 as ja,a3 as Ha,a4 as Di,a5 as pt,a6 as Pn,a7 as Ge,a8 as Yt,a9 as Ai,aa as go,ab as Ei,ac as Li,ad as eo,ae as De,af as qa,ag as Oi,ah as ut,ai as Vi,aj as Ri,ak as ro,al as ve,am as Wi,an as zi,ao as Vt,ap as He,aq as Vo,ar as Bi,as as Ft,at as to,au as Fi,av as ts,aw as os,ax as Ko,ay as ns,az as mt,aA as Rt,aB as Ui,aC as Nt,aD as Oe,aE as Ka,aF as ln,aG as Gi,aH as ji,aI as Qa,aJ as Hi,aK as qi,aL as Ki,aM as Qi,aN as rn,aO as bo,aP as Ji,aQ as Yi,aR as Xi,aS as Zi,aT as er,aU as dn,aV as tr,aW as or,aX as nr,aY as sr,aZ as ar,a_ as lr,a$ as ir,b0 as rr,b1 as ur,b2 as ss,b3 as cr,b4 as $s,b5 as dr,b6 as pr,b7 as fr,b8 as mr,b9 as vr,ba as St,bb as as,bc as Ro,bd as Wo,be as zo,bf as Bo,bg as Ja,bh as Ya,bi as gr,bj as hr,bk as yr,bl as Xa,bm as br,bn as Za,bo as ho,bp as wr,bq as ls,br as el,bs as kr,bt as tl,bu as Cr,bv as Sr,bw as xr,bx as ol,by as _r,bz as Is,bA as Tr,bB as Nr,bC as is,bD as $r,bE as dt,bF as nl,bG as Ir,bH as Mr,bI as qt,bJ as Pr,bK as Dr,bL as Ar,bM as Er,bN as Lr,bO as Or,bP as Vr,bQ as Rr,bR as pn,bS as $o,bT as Wr,bU as sl,bV as fn,bW as zr,bX as Br,bY as mn,bZ as al,b_ as Ms,b$ as Fr,c0 as Ur,c1 as _o,c2 as vn,c3 as Gr,c4 as jr,c5 as Hr,c6 as qr,c7 as Ps,c8 as Ds,c9 as As,ca as Kr,cb as ll,cc as Qr,cd as Jr,ce as Yr,cf as Xr,cg as Es,ch as Zr,ci as Ls,cj as eu,ck as tu,cl as Os,cm as Vs,cn as ou,co as nu,cp as yo,cq as su,cr as au,cs as lu,ct as iu,cu as ru,cv as il,cw as uu,cx as cu,cy as du,cz as pu}from"./index-CuKlxAeN.js";import{_ as rl}from"./UserAvatar.vue_vue_type_script_setup_true_lang-ZL9faEyg.js";import{W as fu}from"./index-DEqR9lwu.js";import{_ as Qo,u as mu,a as vu,b as gu,c as wo,d as hu}from"./LazyImage.vue_vue_type_script_setup_true_lang-DyOiHvnA.js";import{u as gn}from"./keybindingService-O5KDQleT.js";import{u as yu}from"./serverConfigStore-trwJaF_M.js";import{_ as bu}from"./WidgetInputNumber.vue_vue_type_script_setup_true_lang-XbRdxGIz.js";var ul=(e=>(e.Cloud="cloud",e.Local="local",e.Desktop="desktop",e.Mac="mac",e.Windows="windows",e))(ul||{});const Io=n(e=>({all:"icon-[lucide--list]","getting-started":"icon-[lucide--graduation-cap]","generation-image":"icon-[lucide--image]",image:"icon-[lucide--image]","generation-video":"icon-[lucide--film]",video:"icon-[lucide--film]","generation-3d":"icon-[lucide--box]","3d":"icon-[lucide--box]","generation-audio":"icon-[lucide--volume-2]",audio:"icon-[lucide--volume-2]","generation-llm":"icon-[lucide--message-square-text]","api-nodes":"icon-[lucide--hand-coins]","closed-models":"icon-[lucide--hand-coins]",llm:"icon-[lucide--message-square-text]",llms:"icon-[lucide--message-square-text]","llm-api":"icon-[lucide--message-square-text]","small-models":"icon-[lucide--zap]",performance:"icon-[lucide--zap]","mac-compatible":"icon-[lucide--command]","runs-on-mac":"icon-[lucide--command]","lora-training":"icon-[lucide--dumbbell]",training:"icon-[lucide--dumbbell]",extensions:"icon-[lucide--puzzle]",tools:"icon-[lucide--wrench]",upscaling:"icon-[lucide--maximize-2]",controlnet:"icon-[lucide--sliders-horizontal]","area-composition":"icon-[lucide--layout-grid]"})[e.toLowerCase()]||"icon-[lucide--folder]","getCategoryIcon");function Rs(e,o){return`${e.toLowerCase().replace(/\s+/g,"-")}-${o.toLowerCase().replace(/\s+/g,"-")}`}n(Rs,"generateCategoryId");const cl=Mt("workflowTemplates",()=>{const e=Je({}),o=Je([]),t=Je([]),s=L(!1),a=L(new Set),l=n(_=>c.value.find(h=>h.name===_),"getTemplateByName"),i=L(new Map),r=n((_,h)=>({..._,localizedTitle:he(`templateWorkflows.template.${We(h)}.${We(_.name)}`,_.title??_.name),localizedDescription:he(`templateWorkflows.templateDescription.${We(h)}.${We(_.name)}`,_.description)}),"addLocalizedFieldsToTemplate"),u=n((_,h)=>_.map(S=>r(S,h)),"localizeTemplateList"),d=n(_=>({..._,localizedTitle:he(`templateWorkflows.category.${We(_.title)}`,_.title??_.moduleName),templates:u(_.templates,_.title)}),"localizeTemplateCategory"),m=n(()=>{const _=o.value.flatMap(S=>S.templates.map(M=>({...r(M,S.title),sourceModule:S.moduleName}))),h=Object.entries(e.value).flatMap(([S,M])=>M.map(I=>({name:I,mediaType:"image",mediaSubtype:"jpg",description:I,sourceModule:S})));return{moduleName:"all",title:"All",localizedTitle:he("templateWorkflows.category.All","All Templates"),templates:[..._,...h]}},"createAllCategory"),g=k(()=>{const _=[...o.value.map(d),...Object.entries(e.value).map(([S,M])=>({moduleName:S,title:S,localizedTitle:he(`templateWorkflows.category.${We(S)}`,S),templates:M.map(I=>({name:I,mediaType:"image",mediaSubtype:"jpg",description:I}))}))];return[{label:he("templateWorkflows.category.ComfyUI Examples","ComfyUI Examples"),modules:[m(),..._.filter(S=>S.moduleName==="default")]},...Object.keys(e.value).length>0?[{label:he("templateWorkflows.category.Custom Nodes","Custom Nodes"),modules:_.filter(S=>S.moduleName!=="default")}]:[]]}),c=k(()=>{const _=[];return o.value.forEach(S=>{S.templates.forEach(M=>{const I={...M,sourceModule:S.moduleName,category:S.title,categoryType:S.type,categoryGroup:S.category,isEssential:S.isEssential,isPartnerNode:M.openSource===!1,searchableText:[M.title||M.name,M.description||"",S.title,...M.tags||[],...M.models||[]].join(" ")};_.push(I)})}),Object.entries(e.value).forEach(([S,M])=>{M.forEach(I=>{const N={name:I,title:I,description:I,mediaType:"image",mediaSubtype:"jpg",sourceModule:S,category:"Extensions",categoryType:"extension",searchableText:`${I} ${S} extension`};_.push(N)})}),_.filter(S=>!S.requiresCustomNodes?.length)}),b=k(()=>{const _={keys:[{name:"searchableText",weight:.4},{name:"title",weight:.3},{name:"name",weight:.2},{name:"tags",weight:.1}],threshold:.3,includeScore:!0};return new fa(c.value,_)}),w=n(_=>{if(_==="all")return c.value;if(_.startsWith("basics-"))return c.value.filter(S=>S.isEssential&&S.category?.toLowerCase().replace(/\s+/g,"-")===_.replace("basics-",""));if(_==="popular")return c.value;if(_==="partner-nodes")return c.value.filter(S=>S.isPartnerNode);if(_.startsWith("extension-")){const S=_.replace("extension-","");return c.value.filter(M=>M.sourceModule===S)}const h=i.value.get(_);return h?c.value.filter(S=>!(h.category&&S.category!==h.category||h.categoryGroup&&S.categoryGroup!==h.categoryGroup)):c.value},"filterTemplatesByCategory"),v=k(()=>{if(!s.value)return[];const _=[];i.value.clear(),_.push({id:"all",label:he("templateWorkflows.category.All","All Templates"),icon:Io("all")}),_.push({id:"popular",label:he("templateWorkflows.category.Popular","Popular"),icon:"icon-[lucide--flame]"});const h=o.value.filter(N=>N.isEssential&&N.templates.length>0);h.length>0&&h.forEach(N=>{const $=N.icon,P=N.title??"Getting Started",F=Rs("basics",N.title);_.push({id:F,label:he(`templateWorkflows.category.${We(P)}`,P),icon:$||Io(N.type||"getting-started")})});const S=new Map;if(o.value.forEach(N=>{if(N.isEssential)return;const $=N.category,P=N.icon;if($){S.has($)||S.set($,{title:$,items:[]});const F=S.get($),U=Rs($,N.title);i.value.set(U,{category:N.title,categoryGroup:$}),F.items.push({id:U,label:he(`templateWorkflows.category.${We(N.title)}`,N.title),icon:P||Io(N.type||"default")})}}),S.forEach((N,$)=>{N.items.length>0&&_.push({title:he(`templateWorkflows.category.${We($)}`,$.split(" ").map(P=>P.charAt(0).toUpperCase()+P.slice(1).toLowerCase()).join(" ")),items:N.items})}),c.value.filter(N=>N.isPartnerNode).length>0&&_.push({id:"partner-nodes",label:he("templateWorkflows.category.Partner Nodes","Partner Nodes"),icon:"icon-[lucide--handshake]"}),c.value.filter(N=>N.sourceModule!=="default").length>0){const $=Array.from(new Set(c.value.filter(P=>P.sourceModule!=="default").map(P=>P.sourceModule))).sort().map(P=>({id:`extension-${P}`,label:he(`templateWorkflows.category.${We(P)}`,P),icon:Io("extensions")}));_.push({title:he("templateWorkflows.category.Extensions","Extensions"),items:$,collapsible:!0})}return _});async function y(){try{if(!s.value){e.value=await Ce.getWorkflowTemplates();const _=Ra.global.locale.value,[h,S]=await Promise.all([Ce.getCoreWorkflowTemplates(_),ft&&_!=="en"?Ce.getCoreWorkflowTemplates("en"):Promise.resolve([])]);o.value=h,t.value=S;const M=o.value.flatMap(N=>N.templates.map($=>$.name)),I=Object.values(e.value).flat();a.value=new Set([...M,...I]),s.value=!0}}catch(_){console.error("Error fetching workflow templates:",_)}}n(y,"loadWorkflowTemplates");function x(_){if(t.value.length===0)return null;for(const h of t.value){const S=h.templates.find(M=>M.name===_);if(S)return{tags:S.tags,category:h.title,useCase:S.useCase,models:S.models,license:S.license}}return null}return n(x,"getEnglishMetadata"),{groupedTemplates:g,navGroupedTemplates:v,enhancedTemplates:c,templateFuse:b,filterTemplatesByCategory:w,isLoaded:s,loadWorkflowTemplates:y,knownTemplateNames:a,getTemplateByName:l,getEnglishMetadata:x}}),un=Symbol(),wu={class:"base-widget-layout rounded-2xl overflow-hidden relative"},ku={class:"flex h-full w-full"},Cu={class:"flex-1 flex bg-base-background"},Su={class:"flex h-full w-full flex-col"},xu={key:0,class:"w-full h-18 px-6 flex items-center justify-between gap-2"},_u={class:"flex flex-1 shrink-0 gap-2"},Tu={class:"flex min-h-0 flex-1 flex-col"},Nu={key:0,class:"text-xxl m-0 px-6 pt-2 pb-6 capitalize"},$u={class:"min-h-0 px-6 pt-0 pb-10 overflow-y-auto"},Iu={key:0,class:"w-1/4 min-w-40 max-w-80"},Mu=q({__name:"BaseModalLayout",props:{contentTitle:{}},setup(e){const o={md:880},t={width:"w-1/3",minWidth:"min-w-40",maxWidth:"max-w-56"},s=Ol(),a=Vl(un,()=>{}),i=Zo(o).greater("md"),r=L(!0),u=L(!1),d=L(!1),m=k(()=>!!s.rightPanel);ne(i,w=>{w||(d.value=!1)});const g=k(()=>i.value?r.value:d.value),c=n(()=>{i.value?r.value=!r.value:d.value=!d.value},"toggleLeftPanel"),b=n(()=>{u.value=!u.value},"toggleRightPanel");return(w,v)=>(f(),T("div",wu,[ce(z(X,{size:"icon",class:J(C(fe)("absolute top-4 right-18 z-10","transition-opacity duration-200",{"opacity-0 pointer-events-none":u.value||!m.value})),onClick:b},{default:O(()=>v[0]||(v[0]=[p("i",{class:"icon-[lucide--panel-right] text-sm"},null,-1)])),_:1},8,["class"]),[[Qe,!u.value&&m.value]]),z(X,{class:"absolute top-4 right-6 z-10 transition-opacity duration-200",onClick:C(a)},{default:O(()=>v[1]||(v[1]=[p("i",{class:"pi pi-times text-sm"},null,-1)])),_:1},8,["onClick"]),p("div",ku,[z(Gn,{name:"slide-panel"},{default:O(()=>[w.$slots.leftPanel&&g.value?(f(),T("nav",{key:0,class:J([t.width,t.minWidth,t.maxWidth])},[Me(w.$slots,"leftPanel",{},void 0,!0)],2)):R("",!0)]),_:3}),p("div",Cu,[p("div",Su,[w.$slots.header?(f(),T("header",xu,[p("div",_u,[C(i)?R("",!0):(f(),G(X,{key:0,size:"icon",onClick:c},{default:O(()=>[p("i",{class:J(C(fe)(g.value?"icon-[lucide--panel-left]":"icon-[lucide--panel-left-close]"))},null,2)]),_:1})),Me(w.$slots,"header",{},void 0,!0)]),Me(w.$slots,"header-right-area",{},void 0,!0),p("div",{class:J(C(fe)("flex justify-end gap-2 w-0",m.value&&!u.value?"min-w-22":"min-w-10"))},[u.value&&m.value?(f(),G(X,{key:0,size:"icon",onClick:b},{default:O(()=>v[2]||(v[2]=[p("i",{class:"icon-[lucide--panel-right-close]"},null,-1)])),_:1})):R("",!0)],2)])):R("",!0),p("main",Tu,[Me(w.$slots,"contentFilter",{},void 0,!0),w.$slots.leftPanel?R("",!0):(f(),T("h2",Nu,B(w.contentTitle),1)),p("div",$u,[Me(w.$slots,"content",{},void 0,!0)])])]),m.value&&u.value?(f(),T("aside",Iu,[Me(w.$slots,"rightPanel",{},void 0,!0)])):R("",!0)])])]))}}),rs=Ee(Mu,[["__scopeId","data-v-e9f4fefe"]]),Pu=q({__name:"NavIcon",props:{icon:{}},setup(e){return(o,t)=>(f(),T("i",{class:J([o.icon,"text-neutral text-sm"])},null,2))}}),Du={key:1,class:"text-neutral icon-[lucide--folder] text-xs"},Au={class:"flex items-center"},Ws=q({__name:"NavItem",props:{icon:{},active:{type:Boolean},onClick:{type:Function}},setup(e){return(o,t)=>(f(),T("div",{class:J(["flex cursor-pointer items-center gap-2 rounded-md px-4 py-3 text-sm transition-colors text-base-foreground",o.active?"bg-interface-menu-component-surface-selected":"hover:bg-interface-menu-component-surface-hovered"]),role:"button",onClick:t[0]||(t[0]=(...s)=>o.onClick&&o.onClick(...s))},[o.icon?(f(),G(Pu,{key:0,icon:o.icon},null,8,["icon"])):(f(),T("i",Du)),p("span",Au,[Me(o.$slots,"default")])],2))}}),Eu={class:"text-xs font-bold text-text-secondary uppercase"},Lu=q({__name:"NavTitle",props:{title:{},modelValue:{type:Boolean,default:!1},collapsible:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:o}){const t=o,s=k({get:n(()=>e.modelValue,"get"),set:n(l=>t("update:modelValue",l),"set")}),a=n(()=>{s.value=!s.value},"toggleCollapse");return(l,i)=>(f(),T("div",{class:J(C(fe)("flex items-center justify-between m-0 px-3 py-0 pt-5",l.collapsible&&"cursor-pointer select-none")),onClick:i[0]||(i[0]=r=>l.collapsible&&a())},[p("h3",Eu,B(l.title),1),l.collapsible?(f(),T("i",{key:0,class:J(C(fe)("pi transition-transform duration-200 text-xs text-text-secondary ",s.value?"pi-chevron-right":"pi-chevron-down"))},null,2)):R("",!0)],2))}}),Ou={},Vu={class:"flex h-16 items-center justify-between px-6"},Ru={class:"flex items-center gap-2 pl-1"},Wu={class:"text-neutral text-base font-bold"};function zu(e,o){return f(),T("header",Vu,[p("div",Ru,[Me(e.$slots,"icon",{},()=>[o[0]||(o[0]=p("i",{class:"text-neutral icon-[lucide--puzzle] text-base"},null,-1))]),p("h2",Wu,[Me(e.$slots,"default")])])])}n(zu,"_sfc_render$2");const Bu=Ee(Ou,[["render",zu]]),Fu={class:"flex h-full w-full flex-col bg-modal-panel-background"},Uu={class:"flex scrollbar-hide flex-1 flex-col gap-1 overflow-y-auto px-3 py-4"},Gu={key:0,class:"flex flex-col gap-2"},ju={key:1,class:"flex flex-col gap-2"},us=q({__name:"LeftSidePanel",props:{navItems:{default:n(()=>[],"default")},modelValue:{}},emits:["update:modelValue"],setup(e,{emit:o}){const t=o,s=L({}),a=n(()=>{if(!e.navItems||e.navItems.length===0)return null;const i=e.navItems[0];return"items"in i&&i.items.length>0?i.items[0].id:"id"in i?i.id:null},"getFirstItemId"),l=k({get:n(()=>e.modelValue??a(),"get"),set:n(i=>t("update:modelValue",i),"set")});return(i,r)=>(f(),T("div",Fu,[z(Bu,null,{icon:O(()=>[Me(i.$slots,"header-icon")]),default:O(()=>[Me(i.$slots,"header-title")]),_:3}),p("nav",Uu,[(f(!0),T(le,null,we(i.navItems,(u,d)=>(f(),T(le,{key:d},["items"in u?(f(),T("div",Gu,[z(Lu,{modelValue:s.value[u.title],"onUpdate:modelValue":n(m=>s.value[u.title]=m,"onUpdate:modelValue"),title:u.title,collapsible:u.collapsible},null,8,["modelValue","onUpdate:modelValue","title","collapsible"]),!u.collapsible||!s.value[u.title]?(f(!0),T(le,{key:0},we(u.items,m=>(f(),G(Ws,{key:m.id,icon:m.icon,active:l.value===m.id,onClick:n(g=>l.value=m.id,"onClick")},{default:O(()=>[Ie(B(m.label),1)]),_:2},1032,["icon","active","onClick"]))),128)):R("",!0)])):(f(),T("div",ju,[z(Ws,{icon:u.icon,active:l.value===u.id,onClick:n(m=>l.value=u.id,"onClick")},{default:O(()=>[Ie(B(u.label),1)]),_:2},1032,["icon","active","onClick"])]))],64))),128))])]))}});function Hu(e){return k(()=>{const{minWidth:o,maxWidth:t}=e,s={};return o&&(s.minWidth=o),t&&(s.maxWidth=t),s})}n(Hu,"usePopoverSizing");const qu={class:"flex flex-col px-2 pt-2 pb-0"},Ku={key:1,class:"mt-2 flex items-center justify-between"},Qu={key:0,class:"px-1 text-sm text-base-foreground"},Ju={class:"text-sm"},Yu={key:0,class:"pointer-events-none absolute -top-2 -right-2 z-10 flex h-5 w-5 items-center justify-center rounded-full bg-primary-background text-xs font-semibold text-base-foreground"},Xu={key:0,class:"text-bold icon-[lucide--check] text-xs text-white"},Wt=q({inheritAttrs:!1,__name:"MultiSelect",props:jn({label:{},showSearchBox:{type:Boolean,default:!1},showSelectedCount:{type:Boolean,default:!1},showClearButton:{type:Boolean,default:!1},searchPlaceholder:{default:"Search..."},listMaxHeight:{default:"28rem"},popoverMinWidth:{},popoverMaxWidth:{}},{modelValue:{required:!0},modelModifiers:{},searchQuery:{default:""},searchQueryModifiers:{}}),emits:["update:modelValue","update:searchQuery"],setup(e){const o=jo(e,"modelValue"),t=jo(e,"searchQuery"),{t:s}=pe(),a=k(()=>o.value.length),l=Hu({minWidth:e.popoverMinWidth,maxWidth:e.popoverMaxWidth}),i=Rl(),r=k(()=>i.options||[]),u={fuseOptions:{keys:["name","value"],threshold:.3,includeScore:!1},matchAllWhenSearchEmpty:!0},{results:d}=ma(t,r,u),m=k(()=>{if(!t.value||t.value.trim()==="")return r.value;const g=d.value.map(b=>b.item);return[...o.value.filter(b=>!g.some(w=>w.value===b.value)),...g]});return(g,c)=>(f(),G(C(li),It({modelValue:o.value,"onUpdate:modelValue":c[2]||(c[2]=b=>o.value=b)},{...g.$attrs,options:m.value},{"option-label":"name",unstyled:"","max-selected-labels":0,pt:{root:n(({props:b})=>({class:C(fe)("h-10 relative inline-flex cursor-pointer select-none","rounded-lg bg-secondary-background text-base-foreground","transition-all duration-200 ease-in-out","border-[2.5px] border-solid",a.value>0?"border-node-component-border":"border-transparent","focus-within:border-node-component-border",{"opacity-60 cursor-default":b.disabled})}),"root"),labelContainer:{class:"flex-1 flex items-center overflow-hidden whitespace-nowrap pl-4 py-2 "},label:{class:"p-0"},dropdown:{class:"flex shrink-0 cursor-pointer items-center justify-center px-3"},header:n(()=>({class:g.showSearchBox||g.showSelectedCount||g.showClearButton?"block":"hidden"}),"header"),overlay:{class:C(fe)("mt-2 rounded-lg py-2 px-2","bg-base-background","text-base-foreground","border border-solid border-border-default")},listContainer:n(()=>({style:{maxHeight:`min(${g.listMaxHeight}, 50vh)`},class:"scrollbar-custom"}),"listContainer"),list:{class:"flex flex-col gap-0 p-0 m-0 list-none border-none text-sm"},option:n(({context:b})=>({class:C(fe)("flex gap-2 items-center h-10 px-2 rounded-lg cursor-pointer","hover:bg-secondary-background-hover",b?.focused&&"bg-secondary-background-selected hover:bg-secondary-background-selected")}),"option"),pcHeaderCheckbox:{root:{class:"hidden"},style:{display:"none"}},pcOptionCheckbox:{root:{class:"hidden"},style:{display:"none"}}},"aria-label":g.label||C(s)("g.multiSelectDropdown"),role:"combobox","aria-expanded":!1,"aria-haspopup":"listbox",tabindex:0}),Hn({value:O(()=>[p("span",Ju,B(g.label),1),a.value>0?(f(),T("span",Yu,B(a.value),1)):R("",!0)]),dropdownicon:O(()=>[c[4]||(c[4]=p("i",{class:"icon-[lucide--chevron-down] text-muted-foreground"},null,-1))]),option:O(b=>[p("div",{role:"button",class:"flex items-center gap-2 cursor-pointer",style:ge(C(l))},[p("div",{class:J(["flex size-4 shrink-0 items-center justify-center rounded p-0.5 transition-all duration-200",b.selected?"bg-primary-background":"bg-secondary-background"])},[b.selected?(f(),T("i",Xu)):R("",!0)],2),p("span",null,B(b.option.name),1)],4)]),_:2},[g.showSearchBox||g.showSelectedCount||g.showClearButton?{name:"header",fn:O(()=>[p("div",qu,[g.showSearchBox?(f(),G(sn,{key:0,modelValue:t.value,"onUpdate:modelValue":c[0]||(c[0]=b=>t.value=b),class:J(g.showSelectedCount||g.showClearButton?"mb-2":""),"show-order":!0,"show-border":!0,"place-holder":g.searchPlaceholder},null,8,["modelValue","class","place-holder"])):R("",!0),g.showSelectedCount||g.showClearButton?(f(),T("div",Ku,[g.showSelectedCount?(f(),T("span",Qu,B(a.value>0?g.$t("g.itemsSelected",{selectedCount:a.value}):g.$t("g.itemSelected",{selectedCount:a.value})),1)):R("",!0),g.showClearButton?(f(),G(X,{key:1,variant:"textonly",size:"md",onClick:c[1]||(c[1]=_e(b=>o.value=[],["stop"]))},{default:O(()=>[Ie(B(g.$t("g.clearAll")),1)]),_:1})):R("",!0)])):R("",!0),c[3]||(c[3]=p("div",{class:"my-4 h-px bg-border-default"},null,-1))])]),key:"0"}:void 0]),1040,["modelValue","pt","aria-label"]))}});function Zu(e){const o=k(()=>{const a=Be(e).map(i=>{const r=i.name.split(".").pop();return r&&r!==i.name?r:null}).filter(i=>i!==null);return Cs(a,(i,r)=>i===r).sort().map(i=>({name:`.${i}`,value:i}))}),t=k(()=>{const a=Be(e).map(i=>i.user_metadata?.base_model).filter(i=>i!==void 0&&typeof i=="string");return Cs(a,(i,r)=>i===r).sort().map(i=>({name:i,value:i}))});return{availableFileFormats:o,availableBaseModels:t}}n(Zu,"useAssetFilterOptions");const ec={class:"flex gap-4 items-center justify-between px-6 pt-2 pb-6","data-component-id":"asset-filter-bar"},tc={class:"flex gap-4 items-center","data-component-id":"asset-filter-bar-left"},oc={class:"flex items-center","data-component-id":"asset-filter-bar-right"},nc=q({__name:"AssetFilterBar",props:{assets:{default:n(()=>[],"default")},allAssets:{default:n(()=>[],"default")}},emits:["filterChange"],setup(e,{emit:o}){const s=[...[{name:re("assetBrowser.sortRecent"),value:"recent"},{name:re("assetBrowser.sortAZ"),value:"name-asc"},{name:re("assetBrowser.sortZA"),value:"name-desc"}]],a=[{name:re("assetBrowser.ownershipAll"),value:"all"},{name:re("assetBrowser.ownershipMyModels"),value:"my-models"},{name:re("assetBrowser.ownershipPublicModels"),value:"public-models"}],l=L([]),i=L([]),r=L("recent"),u=L("all"),{availableFileFormats:d,availableBaseModels:m}=Zu(e.assets),g=k(()=>(e.allAssets.length?e.allAssets:e.assets).some(v=>v.is_immutable===!1)),c=o;function b(){c("filterChange",{fileFormats:l.value.map(w=>w.value),baseModels:i.value.map(w=>w.value),sortBy:r.value,ownership:u.value})}return n(b,"handleFilterChange"),(w,v)=>(f(),T("div",ec,[p("div",tc,[C(d).length>0?(f(),G(Wt,{key:0,modelValue:l.value,"onUpdate:modelValue":[v[0]||(v[0]=y=>l.value=y),b],label:w.$t("assetBrowser.fileFormats"),options:C(d),class:"min-w-32","data-component-id":"asset-filter-file-formats"},null,8,["modelValue","label","options"])):R("",!0),C(m).length>0?(f(),G(Wt,{key:1,modelValue:i.value,"onUpdate:modelValue":[v[1]||(v[1]=y=>i.value=y),b],label:w.$t("assetBrowser.baseModels"),options:C(m),class:"min-w-32","data-component-id":"asset-filter-base-models"},null,8,["modelValue","label","options"])):R("",!0),g.value?(f(),G(Qo,{key:2,modelValue:u.value,"onUpdate:modelValue":[v[2]||(v[2]=y=>u.value=y),b],label:w.$t("assetBrowser.ownership"),options:a,class:"min-w-42","data-component-id":"asset-filter-ownership"},null,8,["modelValue","label"])):R("",!0)]),p("div",oc,[z(Qo,{modelValue:r.value,"onUpdate:modelValue":[v[3]||(v[3]=y=>r.value=y),b],label:w.$t("assetBrowser.sortBy"),options:s,class:"min-w-32","data-component-id":"asset-filter-sort"},{icon:O(()=>v[4]||(v[4]=[p("i",{class:"icon-[lucide--arrow-up-down] size-3"},null,-1)])),_:1},8,["modelValue","label"])])]))}}),sc={class:"relative inline-flex items-center"},ac={class:"flex min-w-40 flex-col gap-2 p-2"},dl=q({__name:"MoreButton",props:{isVertical:{type:Boolean,default:!1}},emits:["menuOpened","menuClosed"],setup(e,{expose:o}){const t=L(!1),s=L();function a(){s.value?.hide()}return n(a,"hide"),o({hide:a,isOpen:t}),(l,i)=>(f(),T("div",sc,[z(X,{size:"icon",variant:"secondary",onClick:s.value?.toggle},{default:O(()=>[p("i",{class:J(C(fe)(l.isVertical?"icon-[lucide--more-vertical]":"icon-[lucide--ellipsis]","text-sm"))},null,2)]),_:1},8,["onClick"]),z(C(Ze),{ref_key:"popover",ref:s,"append-to":"body","auto-z-index":"",dismissable:"","close-on-escape":"",unstyled:"","base-z-index":1e3,pt:{root:{class:C(fe)("absolute z-50")},content:{class:C(fe)("mt-1 rounded-lg","bg-secondary-background text-base-foreground","shadow-lg")}},onShow:i[0]||(i[0]=()=>{t.value=!0,l.$emit("menuOpened")}),onHide:i[1]||(i[1]=()=>{t.value=!1,l.$emit("menuClosed")})},{default:O(()=>[p("div",ac,[Me(l.$slots,"default",{close:a})])]),_:3},8,["pt"])]))}}),lc={class:"flex flex-col px-4 py-2 text-sm text-muted-foreground border-t border-border-default"},ic={key:0},rc=q({__name:"ConfirmBody",props:{promptText:{}},setup(e){const o=k(()=>Be(e.promptText));return(t,s)=>(f(),T("div",lc,[o.value?(f(),T("p",ic,B(o.value),1)):R("",!0)]))}}),uc={class:"w-full flex gap-2 justify-end px-2 pb-2"},cc=q({__name:"ConfirmFooter",props:{cancelText:{},confirmText:{},confirmClass:{},optionsDisabled:{}},emits:["cancel","confirm"],setup(e){const{t:o}=pe(),t=k(()=>e.confirmText||o("g.confirm")),s=k(()=>e.cancelText||o("g.cancel")),a=k(()=>Be(e.optionsDisabled));return(l,i)=>(f(),T("section",uc,[z(X,{disabled:a.value,variant:"textonly",autofocus:"",onClick:i[0]||(i[0]=r=>l.$emit("cancel"))},{default:O(()=>[Ie(B(s.value),1)]),_:1},8,["disabled"]),z(X,{disabled:a.value,variant:"textonly",class:J(l.confirmClass),onClick:i[1]||(i[1]=r=>l.$emit("confirm"))},{default:O(()=>[Ie(B(t.value),1)]),_:1},8,["disabled","class"])]))}}),dc={class:"flex items-center gap-2 p-4 font-bold text-sm text-base-foreground font-inter"},pc={key:0,class:"flex-auto"},fc=q({__name:"ConfirmHeader",props:{title:{}},setup(e){return(o,t)=>(f(),T("div",dc,[o.title?(f(),T("span",pc,B(o.title),1)):R("",!0)]))}});function mc(e={}){const o=gt(),{headerProps:t,props:s,footerProps:a}=e;return o.showDialog({headerComponent:fc,component:rc,footerComponent:cc,headerProps:t,props:s,footerProps:a,dialogComponentProps:{pt:{header:"py-0! px-0!",content:"p-0!",footer:"p-0!"}}})}n(mc,"showConfirmDialog");const vc={class:"absolute left-2 bottom-2 flex flex-wrap justify-start gap-1"},gc=q({__name:"AssetBadgeGroup",props:{badges:{}},setup(e){return(o,t)=>(f(),T("div",vc,[(f(!0),T(le,null,we(o.badges,s=>(f(),T("span",{key:s.label,class:J(C(fe)("px-2 py-1 rounded text-xs font-bold uppercase tracking-wider text-modal-card-tag-foreground bg-modal-card-tag-background"))},B(s.label),3))),128))]))}}),hc=["data-asset-id","aria-labelledby","aria-describedby","tabindex"],yc={class:"relative aspect-square w-full overflow-hidden rounded-xl"},bc=["src","alt"],wc={class:"max-h-32 flex flex-col gap-2 justify-between flex-auto"},kc=["id"],Cc=["id"],Sc={class:"flex gap-4 text-xs text-muted-foreground mt-auto"},xc={key:0,class:"flex items-center gap-1"},_c={key:1,class:"flex items-center gap-1"},Tc={key:2,class:"flex items-center gap-1"},Nc=q({__name:"AssetCard",props:{asset:{},interactive:{type:Boolean}},emits:["select"],setup(e){const{t:o}=pe(),t=ie(),{closeDialog:s}=gt(),{flags:a}=mu(),l=$t(),i=Nn("dropdown-menu-button"),r=$n(),u=$n(),d=L(!1),m=L(),g=L(!1),c=k(()=>m.value??e.asset.name),b=k(()=>t.get("LiteGraph.Node.TooltipDelay")),{isLoading:w,error:v}=Wl({src:e.asset.preview_url??"",alt:e.asset.name});function y(){i.value?.hide();const h=Be(c),S=L(o("assetBrowser.deletion.body")),M=L(!1),I=mc({headerProps:{title:o("assetBrowser.deletion.header")},props:{promptText:S},footerProps:{confirmText:o("g.delete"),confirmClass:fe("bg-danger-200 text-base-foreground hover:bg-danger-200/80 focus:bg-danger-200/80 focus:ring ring-base-foreground"),optionsDisabled:M,onCancel:n(()=>{s(I)},"onCancel"),onConfirm:n(async()=>{M.value=!0;try{S.value=o("assetBrowser.deletion.inProgress",{assetName:h}),await Ho.deleteAsset(e.asset.id),S.value=o("assetBrowser.deletion.complete",{assetName:h}),await new Promise(N=>setTimeout(N,1e3)),g.value=!0}catch(N){console.error(N),S.value=o("assetBrowser.deletion.failed",{assetName:h}),await new Promise($=>setTimeout($,3e3))}finally{s(I)}},"onConfirm")}})}n(y,"confirmDeletion");function x(){i.value?.hide(),d.value=!0}n(x,"startAssetRename");async function _(h){if(d.value=!1,h){m.value=h;try{const S=await Ho.updateAsset(e.asset.id,{name:h});m.value=S.name}catch(S){console.error(S),l.add({severity:"error",summary:o("assetBrowser.rename.failed"),life:1e4}),m.value=void 0}}}return n(_,"assetRename"),(h,S)=>{const M=Ne("tooltip");return g.value?R("",!0):(f(),T("div",{key:0,"data-component-id":"AssetCard","data-asset-id":h.asset.id,"aria-labelledby":C(r),"aria-describedby":C(u),tabindex:h.interactive?0:-1,class:J(C(fe)("rounded-2xl overflow-hidden transition-all duration-200 bg-modal-card-background p-2 gap-2 flex flex-col h-full",h.interactive&&"group appearance-none bg-transparent m-0 outline-none text-left hover:bg-secondary-background focus:bg-secondary-background border-none focus:outline-solid outline-base-foreground outline-4")),onKeydown:S[3]||(S[3]=Xt(_e(I=>h.interactive&&h.$emit("select",h.asset),["self"]),["enter"]))},[p("div",yc,[C(w)||C(v)?(f(),T("div",{key:0,class:"flex size-full cursor-pointer items-center justify-center bg-gradient-to-br from-smoke-400 via-smoke-800 to-charcoal-400",role:"button",onClick:S[0]||(S[0]=_e(I=>h.interactive&&h.$emit("select",h.asset),["self"]))})):(f(),T("img",{key:1,src:h.asset.preview_url,alt:c.value,class:"size-full object-cover cursor-pointer",role:"button",onClick:S[1]||(S[1]=_e(I=>h.interactive&&h.$emit("select",h.asset),["self"]))},null,8,bc)),z(gc,{badges:h.asset.badges},null,8,["badges"]),C(a).assetUpdateOptionsEnabled&&!(h.asset.is_immutable??!0)?(f(),G(bi,{key:2,class:J(C(fe)("absolute top-2 right-2 invisible group-hover:visible",C(i)?.isOpen&&"visible"))},{default:O(()=>[z(dl,{ref:"dropdown-menu-button",size:"sm"},{default:O(()=>[z(X,{variant:"secondary",size:"md",class:"justify-start",onClick:x},{default:O(()=>[S[4]||(S[4]=p("i",{class:"icon-[lucide--pencil]"},null,-1)),p("span",null,B(h.$t("g.rename")),1)]),_:1}),z(X,{variant:"secondary",size:"md",class:"justify-start",onClick:y},{default:O(()=>[S[5]||(S[5]=p("i",{class:"icon-[lucide--trash-2]"},null,-1)),p("span",null,B(h.$t("g.delete")),1)]),_:1})]),_:1},512)]),_:1},8,["class"])):R("",!0)]),p("div",wc,[ce((f(),T("h3",{id:C(r),class:J(C(fe)("mb-2 m-0 text-base font-semibold line-clamp-2 wrap-anywhere","text-base-foreground"))},[z(Jn,{"model-value":c.value,"is-editing":d.value,"input-attrs":{"data-testid":"asset-name-input"},onEdit:_,onCancel:S[2]||(S[2]=I=>_())},null,8,["model-value","is-editing"])],10,kc)),[[M,{value:c.value,showDelay:b.value},void 0,{top:!0}]]),ce((f(),T("p",{id:C(u),class:J(C(fe)("m-0 text-sm leading-6 overflow-hidden [-webkit-box-orient:vertical] [-webkit-line-clamp:2] [display:-webkit-box] text-muted-foreground"))},[Ie(B(h.asset.description),1)],10,Cc)),[[M,{value:h.asset.description,showDelay:b.value},void 0,{top:!0}]]),p("div",Sc,[h.asset.stats.stars?(f(),T("span",xc,[S[6]||(S[6]=p("i",{class:"icon-[lucide--star] size-3"},null,-1)),Ie(" "+B(h.asset.stats.stars),1)])):R("",!0),h.asset.stats.downloadCount?(f(),T("span",_c,[S[7]||(S[7]=p("i",{class:"icon-[lucide--download] size-3"},null,-1)),Ie(" "+B(h.asset.stats.downloadCount),1)])):R("",!0),h.asset.stats.formattedDate?(f(),T("span",Tc,[S[8]||(S[8]=p("i",{class:"icon-[lucide--clock] size-3"},null,-1)),Ie(" "+B(h.asset.stats.formattedDate),1)])):R("",!0)])])],42,hc))}}}),$c=["aria-label","aria-setsize"],Ic={key:0,class:"col-span-full flex items-center justify-center py-20"},Mc={key:1,class:"col-span-full flex flex-col items-center justify-center py-16 text-muted-foreground"},Pc={class:"mb-2 text-lg font-medium"},Dc={class:"text-sm"},Ac=q({__name:"AssetGrid",props:{assets:{},loading:{type:Boolean}},emits:["assetSelect"],setup(e){return(o,t)=>(f(),T("div",{"data-component-id":"AssetGrid",class:J(C(fe)("grid grid-cols-[repeat(auto-fill,minmax(15rem,1fr))] gap-4 p-2")),role:"grid","aria-label":o.$t("assetBrowser.assetCollection"),"aria-rowcount":-1,"aria-colcount":-1,"aria-setsize":o.assets.length},[o.loading?(f(),T("div",Ic,t[1]||(t[1]=[p("i",{class:"icon-[lucide--loader] size-12 animate-spin text-muted-foreground"},null,-1)]))):o.assets.length===0?(f(),T("div",Mc,[t[2]||(t[2]=p("i",{class:"mb-4 icon-[lucide--search] size-10"},null,-1)),p("h3",Pc,B(o.$t("assetBrowser.noAssetsFound")),1),p("p",Dc,B(o.$t("assetBrowser.tryAdjustingFilters")),1)])):(f(!0),T(le,{key:2},we(o.assets,s=>(f(),G(Nc,{key:s.id,asset:s,interactive:!0,onSelect:t[0]||(t[0]=a=>o.$emit("assetSelect",a))},null,8,["asset"]))),128))],10,$c))}});function Ec(e){return typeof e.user_metadata?.description=="string"?e.user_metadata.description:null}n(Ec,"getAssetDescription");function pl(e){return typeof e.user_metadata?.base_model=="string"?e.user_metadata.base_model:null}n(pl,"getAssetBaseModel");function Lc(e){return o=>e==="all"||o.tags.includes(e)}n(Lc,"filterByCategory");function Oc(e){return o=>{if(e.length===0)return!0;const t=new Set(e),s=o.name.split(".").pop()?.toLowerCase();return s?t.has(s):!1}}n(Oc,"filterByFileFormats");function Vc(e){return o=>{if(e.length===0)return!0;const t=new Set(e),s=pl(o);return s?t.has(s):!1}}n(Vc,"filterByBaseModels");function Rc(e){return o=>e==="all"?!0:e==="my-models"?o.is_immutable===!1:e==="public-models"?o.is_immutable===!0:!0}n(Rc,"filterByOwnership");function Wc(e=L([])){const o=k(()=>e.value??[]),t=L(""),s=L("all"),a=L({sortBy:"recent",fileFormats:[],baseModels:[],ownership:"all"});function l(w){const v=w.tags.find(S=>S!=="models"),y=Ec(w)||`${v||re("assetBrowser.unknown")} model`,x=[];v&&x.push({label:v,type:"type"});const _=pl(w);_&&x.push({label:_,type:"base"});const h={formattedDate:wi(new Date(w.created_at),{dateStyle:"short"}),downloadCount:void 0,stars:void 0};return{...w,description:y,badges:x,stats:h}}n(l,"transformAssetForDisplay");const i=k(()=>{const w=o.value.filter(y=>y.tags[0]==="models").map(y=>y.tags[1]).filter(y=>typeof y=="string"&&y.length>0),v=Array.from(new Set(w)).sort().map(y=>({id:y,label:y.charAt(0).toUpperCase()+y.slice(1),icon:"icon-[lucide--package]"}));return[{id:"all",label:re("assetBrowser.allModels"),icon:"icon-[lucide--folder]"},...v]}),r=k(()=>s.value==="all"?re("assetBrowser.allModels"):i.value.find(v=>v.id===s.value)?.label||re("assetBrowser.assets")),u=k(()=>o.value.filter(Lc(s.value))),d={fuseOptions:{keys:[{name:"name",weight:.4},{name:"tags",weight:.3}],threshold:.4,ignoreLocation:!0,includeScore:!0},matchAllWhenSearchEmpty:!0},{results:m}=ma(t,u,d),g=k(()=>m.value.map(w=>w.item)),c=k(()=>{const v=[...g.value.filter(Oc(a.value.fileFormats)).filter(Vc(a.value.baseModels)).filter(Rc(a.value.ownership))];return v.sort((y,x)=>{switch(a.value.sortBy){case"name-desc":return x.name.localeCompare(y.name);case"recent":return new Date(x.created_at).getTime()-new Date(y.created_at).getTime();case"popular":return y.name.localeCompare(x.name);case"name-asc":default:return y.name.localeCompare(x.name)}}),v.map(l)});function b(w){a.value={...w}}return n(b,"updateFilters"),{searchQuery:t,selectedCategory:s,availableCategories:i,contentTitle:r,categoryFilteredAssets:u,filteredAssets:c,updateFilters:b}}n(Wc,"useAssetBrowser");const zc=new Set(["VAE","CLIP","GLIGEN"]);function Bc(e){return e?e==="diffusion_models"?"Diffusion":e.split("_").map(o=>{const t=o.toUpperCase();if(zc.has(t))return t;const s=o.toLowerCase();return s.charAt(0).toUpperCase()+s.slice(1)}).join(" "):"Models"}n(Bc,"formatCategoryLabel");const Fc={class:"capitalize"},Uc={class:"flex w-full items-center justify-between gap-2"},Gc={class:"hidden md:inline"},zs=q({__name:"AssetBrowserModal",props:{nodeType:{},onSelect:{type:Function},onClose:{type:Function},showLeftPanel:{type:Boolean},title:{},assetType:{}},emits:["asset-select","close"],setup(e,{emit:o}){const t=e,{t:s}=pe(),a=o,l=Zo(en);tn(un,t.onClose??(()=>{}));const i=n(async()=>t.nodeType?await Ho.getAssetsForNodeType(t.nodeType)??[]:t.assetType?await Ho.getAssetsByTag(t.assetType)??[]:[],"fetchAssets"),{state:r,isLoading:u,execute:d}=va(i,[],{immediate:!1});ne(()=>[t.nodeType,t.assetType],async()=>{await d()},{immediate:!0});const m=Wa();ne(()=>m.hasActiveDownloads,async(F,U)=>{U&&!F&&await d()});const{searchQuery:g,selectedCategory:c,availableCategories:b,categoryFilteredAssets:w,filteredAssets:v,updateFilters:y}=Wc(r),x=Yn(),_=k(()=>{const U=(r.value??[]).map(A=>A.tags?.find(E=>E!=="models")).find(A=>typeof A=="string"&&A.length>0);if(U)return U;if(t.nodeType){const A=x.getCategoryForNodeType(t.nodeType);if(A)return A}return t.assetType?t.assetType:"models"}),h=k(()=>c.value!=="all"?c.value:_.value),S=k(()=>{if(t.title)return t.title;const F=Bc(h.value);return s("assetBrowser.allCategory",{category:F})}),M=k(()=>t.showLeftPanel??!0);function I(){t.onClose?.(),a("close")}n(I,"handleClose");function N(F){a("asset-select",F),t.onSelect?.(F)}n(N,"handleAssetSelectAndEmit");const{isUploadButtonEnabled:$,showUploadDialog:P}=vu(d);return(F,U)=>(f(),G(rs,{"data-component-id":"AssetBrowserModal",class:"size-full max-h-full max-w-full min-w-0","content-title":S.value,onClose:I},Hn({header:O(()=>[p("div",Uc,[z(sn,{modelValue:C(g),"onUpdate:modelValue":U[1]||(U[1]=A=>it(g)?g.value=A:null),autofocus:!0,size:"lg",placeholder:F.$t("g.searchPlaceholder"),class:"max-w-96"},null,8,["modelValue","placeholder"]),C($)?(f(),G(X,{key:0,variant:"primary",size:C(l).md?"md":"icon","data-attr":"upload-model-button",onClick:C(P)},{default:O(()=>[U[3]||(U[3]=p("i",{class:"icon-[lucide--folder-input]"},null,-1)),p("span",Gc,B(F.$t("assetBrowser.uploadModel")),1)]),_:1},8,["size","onClick"])):R("",!0)])]),contentFilter:O(()=>[z(nc,{assets:C(w),"all-assets":C(r),onFilterChange:C(y)},null,8,["assets","all-assets","onFilterChange"])]),content:O(()=>[z(Ac,{assets:C(v),loading:C(u),onAssetSelect:N},null,8,["assets","loading"])]),_:2},[M.value?{name:"leftPanel",fn:O(()=>[z(us,{modelValue:C(c),"onUpdate:modelValue":U[0]||(U[0]=A=>it(c)?c.value=A:null),"data-component-id":"AssetBrowserModal-LeftSidePanel","nav-items":C(b)},{"header-icon":O(()=>U[2]||(U[2]=[p("div",{class:"icon-[lucide--folder] size-4"},null,-1)])),"header-title":O(()=>[p("span",Fc,B(S.value),1)]),_:1},8,["modelValue","nav-items"])]),key:"0"}:void 0]),1032,["content-title"]))}}),Bs={headless:!0,modal:!0,closable:!0,pt:{root:{class:"rounded-2xl overflow-hidden asset-browser-dialog"},header:{class:"!p-0 hidden"},content:{class:"!p-0 !m-0 h-full w-full"}}},jc=n(()=>{const e=gt(),o="global-asset-browser";async function t(a){const l=n(i=>{a.onAssetSelected?.(i),e.closeDialog({key:o})},"handleAssetSelected");e.showDialog({key:o,component:zs,props:{nodeType:a.nodeType,inputName:a.inputName,currentValue:a.currentValue,onSelect:l,onClose:n(()=>e.closeDialog({key:o}),"onClose")},dialogComponentProps:Bs})}n(t,"show");async function s(a){const l=n(i=>{a.onAssetSelected?.(i),e.closeDialog({key:o})},"handleAssetSelected");e.showDialog({key:o,component:zs,props:{showLeftPanel:!0,assetType:a.assetType,title:a.title,onSelect:l,onClose:n(()=>e.closeDialog({key:o}),"onClose")},dialogComponentProps:Bs})}return n(s,"browse"),{show:t,browse:s}},"useAssetBrowserDialog"),Hc={class:"flex max-w-xs min-w-40 flex-col gap-2 p-3"},qc={class:"text-sm font-inter"},Kc={key:1,class:"text-xs"},Qc={class:"flex max-w-xs min-w-40 flex-col gap-2 p-3"},Jc={class:"text-sm font-inter"},Yc={key:1,class:"text-xs"},Fs="cursor-pointer transition-opacity hover:opacity-80",Xc=q({__name:"TopbarBadge",props:{badge:{},displayMode:{default:"full"},reverseOrder:{type:Boolean,default:!1},noPadding:{type:Boolean,default:!1},backgroundColor:{default:"var(--comfy-menu-bg)"}},setup(e){const o=e,t=L(),s=n(c=>{t.value?.toggle(c)},"togglePopover"),a=k(()=>o.badge.variant??"info"),l=k(()=>({backgroundColor:o.backgroundColor})),i=k(()=>{switch(a.value){case"error":return"bg-danger-100 text-white";case"warning":return"bg-gold-600 text-black";case"info":default:return"bg-white text-black"}}),r=k(()=>{switch(a.value){case"error":return"text-danger-100";case"warning":return"text-gold-600";case"info":default:return"text-text-primary"}}),u=k(()=>r.value),d=k(()=>{if(o.badge.icon)return o.badge.icon;switch(a.value){case"error":return"pi pi-exclamation-circle";case"warning":return"pi pi-exclamation-triangle";case"info":default:return}}),m=k(()=>{switch(a.value){case"error":return"bg-danger-100";case"warning":return"bg-gold-600";case"info":default:return"bg-slate-100"}}),g=k(()=>({root:{class:fe("absolute z-50")},content:{class:fe("mt-1 rounded-lg","bg-base-background","text-base-foreground","shadow-lg","border border-border-default")}}));return(c,b)=>{const w=Ne("tooltip");return c.displayMode==="icon-only"?(f(),T("div",{key:0,class:J(["relative inline-flex h-full shrink-0 items-center justify-center px-2",Fs]),style:ge(l.value),onClick:s},[d.value?(f(),T("i",{key:0,class:J(["shrink-0 text-base",d.value,u.value])},null,2)):c.badge.label?(f(),T("div",{key:1,class:J(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},B(c.badge.label),3)):(f(),T("div",{key:2,class:J(["size-2 shrink-0 rounded-full",m.value])},null,2)),z(C(Ze),{ref_key:"popover",ref:t,"append-to":"body","auto-z-index":!0,"base-z-index":1e3,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:g.value},{default:O(()=>[p("div",Hc,[c.badge.label?(f(),T("div",{key:0,class:J(["w-fit rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},B(c.badge.label),3)):R("",!0),p("div",qc,B(c.badge.text),1),c.badge.tooltip?(f(),T("div",Kc,B(c.badge.tooltip),1)):R("",!0)])]),_:1},8,["pt"])],4)):c.displayMode==="compact"?(f(),T("div",{key:1,class:"relative inline-flex h-full",style:ge(l.value)},[p("div",{class:J(["flex h-full shrink-0 items-center gap-2 whitespace-nowrap",[{"flex-row-reverse":c.reverseOrder},c.noPadding?"":"px-3",Fs]]),onClick:s},[d.value?(f(),T("i",{key:0,class:J(["shrink-0 text-base",d.value,u.value])},null,2)):R("",!0),c.badge.label?(f(),T("div",{key:1,class:J(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},B(c.badge.label),3)):R("",!0)],2),z(C(Ze),{ref_key:"popover",ref:t,"append-to":"body","auto-z-index":!0,"base-z-index":1e3,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:g.value},{default:O(()=>[p("div",Qc,[c.badge.label?(f(),T("div",{key:0,class:J(["w-fit rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},B(c.badge.label),3)):R("",!0),p("div",Jc,B(c.badge.text),1),c.badge.tooltip?(f(),T("div",Yc,B(c.badge.tooltip),1)):R("",!0)])]),_:1},8,["pt"])],4)):ce((f(),T("div",{key:2,class:J(["flex h-full shrink-0 items-center gap-2 whitespace-nowrap",[{"flex-row-reverse":c.reverseOrder},c.noPadding?"":"px-3"]]),style:ge(l.value)},[d.value?(f(),T("i",{key:0,class:J(["shrink-0 text-base",d.value,u.value])},null,2)):R("",!0),c.badge.label?(f(),T("div",{key:1,class:J(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},B(c.badge.label),3)):R("",!0),p("div",{class:J(["font-inter text-sm",r.value])},B(c.badge.text),3)],6)),[[w,c.badge.tooltip]])}}}),Zc=3e3,ed=300*1e3,td=q({__name:"SubscribeButton",props:{label:{},size:{default:"lg"},variant:{default:"default"},fluid:{type:Boolean,default:!0}},emits:["subscribed"],setup(e,{emit:o}){const t=o,{subscribe:s,isActiveSubscription:a,fetchStatus:l,showSubscriptionDialog:i}=Xn(),r=ki(),u=L(!1),d=L(!1);let m=null;const g=L(!1),c=n(()=>{d.value=!0,u.value=!0;const v=Date.now(),y=n(async()=>{try{if(Date.now()-v>ed){b();return}await l(),a.value&&(b(),r?.trackMonthlySubscriptionSucceeded(),t("subscribed"))}catch(x){console.error("[SubscribeButton] Error polling subscription status:",x)}},"poll");y(),m=window.setInterval(y,Zc)},"startPollingSubscriptionStatus"),b=n(()=>{m&&(clearInterval(m),m=null),d.value=!1,u.value=!1},"stopPolling");ne([g,a],([v,y])=>{});const w=n(async()=>{u.value=!0;try{await s(),c()}catch(v){console.error("[SubscribeButton] Error initiating subscription:",v),u.value=!1}},"handleSubscribe");return vt(()=>{b(),g.value=!1}),(v,y)=>(f(),G(X,{size:v.size,loading:u.value,disabled:d.value,variant:"primary",style:ge(v.variant==="gradient"?{background:"var(--color-subscription-button-gradient)",color:"var(--color-white)"}:void 0),class:J(C(fe)("font-bold",v.fluid&&"w-full")),onClick:w},{default:O(()=>[Ie(B(v.label||v.$t("subscription.required.subscribe")),1)]),_:1},8,["size","loading","disabled","style","class"]))}}),Us="subscription-required",od=n(()=>{const e=et(),o=gt();function t(){o.closeDialog({key:Us})}n(t,"hide");function s(){e.showLayoutDialog({key:Us,component:ga(()=>Kn(()=>import("./SubscriptionRequiredDialogContent-oUSDZGJZ.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]),import.meta.url)),props:{onClose:t},dialogComponentProps:{style:"width: min(1328px, 95vw); max-height: 90vh;",pt:{root:{class:"rounded-2xl bg-transparent"},content:{class:"!p-0 rounded-2xl border border-border-default bg-base-background/60 backdrop-blur-md shadow-[0_25px_80px_rgba(5,6,12,0.45)]"}}}})}return n(s,"show"),{show:s,hide:t}},"useSubscriptionDialog"),nd=q({__name:"GlobalToast",setup(e){const o=zt(),t=$t(),s=ie();ne(()=>t.messagesToAdd,i=>{i.length!==0&&(i.forEach(r=>{o.add(r)}),t.messagesToAdd=[])},{deep:!0}),ne(()=>t.messagesToRemove,i=>{i.length!==0&&(i.forEach(r=>{o.remove(r)}),t.messagesToRemove=[])},{deep:!0}),ne(()=>t.removeAllRequested,i=>{i&&(o.removeAllGroups(),t.removeAllRequested=!1)});function a(){const i=document.getElementById("dynamic-toast-style")||l(),r=document.querySelector(".graph-canvas-container")?.getBoundingClientRect();r&&(i.textContent=`
|
|
3
|
+
.p-toast.p-component.p-toast-top-right {
|
|
4
|
+
top: ${r.top+100}px !important;
|
|
5
|
+
right: ${window.innerWidth-(r.left+r.width)+20}px !important;
|
|
6
|
+
z-index: 10000 !important;
|
|
7
|
+
}
|
|
8
|
+
`)}n(a,"updateToastPosition");function l(){const i=document.createElement("style");return i.id="dynamic-toast-style",document.head.appendChild(i),i}return n(l,"createStyleElement"),ne(()=>s.get("Comfy.UseNewMenu"),()=>Re(a),{immediate:!0}),ne(()=>s.get("Comfy.Sidebar.Location"),()=>Re(a),{immediate:!0}),(i,r)=>(f(),G(C(Pa)))}});let hn,fl;(function(){const e=globalThis;typeof e.requestIdleCallback!="function"||typeof e.cancelIdleCallback!="function"?hn=n((o,t,s)=>{setTimeout(()=>{if(a)return;const l=Date.now()+15;t(Object.freeze({didTimeout:!0,timeRemaining(){return Math.max(0,l-Date.now())}}))});let a=!1;return{dispose(){a||(a=!0)}}},"_runWhenIdle"):hn=n((o,t,s)=>{const a=o.requestIdleCallback(t,typeof s=="number"?{timeout:s}:void 0);let l=!1;return{dispose(){l||(l=!0,o.cancelIdleCallback(a))}}},"_runWhenIdle"),fl=n((o,t)=>hn(globalThis,o,t),"runWhenGlobalIdle")})();const sd={class:"fixed z-9999 flex flex-row no-drag top-0 right-0"},ad=q({__name:"MenuHamburger",setup(e){const o=tt(),t=ie(),s=n(()=>{o.focusMode=!1},"exitFocusMode");return be(()=>{t.get("Comfy.UseNewMenu")==="Disabled"&&(o.focusMode?K.ui.menuContainer.style.display="none":K.ui.menuContainer.style.display="block")}),(a,l)=>{const i=Ne("tooltip");return ce((f(),T("div",sd,[ce((f(),G(X,{variant:"muted-textonly",size:"lg","aria-label":a.$t("menu.showMenu"),"aria-live":"assertive",onClick:s,onContextmenu:C(Ci)},{default:O(()=>l[0]||(l[0]=[p("i",{class:"pi pi-bars"},null,-1)])),_:1},8,["aria-label","onContextmenu"])),[[i,{value:a.$t("menu.showMenu"),showDelay:300}]]),l[1]||(l[1]=p("div",{class:"window-actions-spacer"},null,-1))],512)),[[Qe,C(o).focusMode]])}}}),ld=q({__name:"UnloadWindowConfirmDialog",setup(e){const o=ie(),t=Ae(),s=n(a=>{if(o.get("Comfy.Window.UnloadConfirmation")&&t.modifiedWorkflows.length>0)return a.preventDefault(),!0},"handleBeforeUnload");return Ve(()=>{window.addEventListener("beforeunload",s)}),vt(()=>{window.removeEventListener("beforeunload",s)}),(a,l)=>(f(),T("div"))}}),id={class:"w-full h-full absolute top-0 left-0 z-999 pointer-events-none flex flex-col"},rd={class:"side-toolbar-container"},ud=q({__name:"LiteGraphCanvasSplitterOverlay",setup(e){const o=tt(),t=ie(),s=no(),a=qo(),{t:l}=pe(),i=k(()=>t.get("Comfy.Sidebar.Location")),r=k(()=>t.get("Comfy.Sidebar.UnifiedWidth")),{focusMode:u}=Fe(o),{activeSidebarTabId:d,activeSidebarTab:m}=Fe(a),{bottomPanelVisible:g}=Fe(so()),{isOpen:c}=Fe(s),b=k(()=>m.value!==null),w=k(()=>r.value?"unified-sidebar":d.value??"default-sidebar");function v({originalEvent:h}){h.preventDefault()}n(v,"onResizestart");const y=k(()=>`main-splitter${c.value?"-with-right-panel":""}-${i.value}`),x=k(()=>{if(i.value==="left")return{display:b.value?"flex":"none"}}),_=k(()=>{if(i.value==="right")return{display:b.value?"flex":"none"}});return(h,S)=>(f(),T("div",id,[Me(h.$slots,"workflow-tabs",{},void 0,!0),p("div",{class:J(["pointer-events-none flex flex-1 overflow-hidden",{"flex-row":i.value==="left","flex-row-reverse":i.value==="right"}])},[p("div",rd,[Me(h.$slots,"side-toolbar",{},void 0,!0)]),(f(),G(C(Mn),{key:y.value,class:"bg-transparent pointer-events-none border-none flex-1 overflow-hidden","state-key":w.value,"state-storage":"local",onResizestart:v},{default:O(()=>[!C(u)&&(i.value==="left"||C(c))?(f(),G(C(Tt),{key:0,class:J(i.value==="left"?C(fe)("side-bar-panel bg-comfy-menu-bg pointer-events-auto",b.value&&"min-w-78"):"bg-comfy-menu-bg pointer-events-auto"),"min-size":i.value==="left"?10:15,size:20,style:ge(x.value),role:i.value==="left"?"complementary":void 0,"aria-label":i.value==="left"?C(l)("sideToolbar.sidebar"):void 0},{default:O(()=>[i.value==="left"&&b.value?Me(h.$slots,"side-bar-panel",{key:0},void 0,!0):i.value==="right"?Me(h.$slots,"right-side-panel",{key:1},void 0,!0):R("",!0)]),_:3},8,["class","min-size","style","role","aria-label"])):R("",!0),z(C(Tt),{size:80,class:"flex flex-col"},{default:O(()=>[Me(h.$slots,"topmenu",{sidebarPanelVisible:b.value},void 0,!0),z(C(Mn),{class:"bg-transparent pointer-events-none border-none splitter-overlay-bottom mr-1 mb-1 ml-1 flex-1",layout:"vertical","pt:gutter":C(fe)("rounded-tl-lg rounded-tr-lg ",!(C(g)&&!C(u))&&"hidden"),"state-key":"bottom-panel-splitter","state-storage":"local",onResizestart:v},{default:O(()=>[z(C(Tt),{class:"graph-canvas-panel relative"},{default:O(()=>[Me(h.$slots,"graph-canvas-panel",{},void 0,!0)]),_:3}),ce(z(C(Tt),{class:"bottom-panel border border-(--p-panel-border-color) max-w-full overflow-x-auto bg-comfy-menu-bg pointer-events-auto rounded-lg"},{default:O(()=>[Me(h.$slots,"bottom-panel",{},void 0,!0)]),_:3},512),[[Qe,C(g)&&!C(u)]])]),_:3},8,["pt:gutter"])]),_:3}),!C(u)&&(i.value==="right"||C(c))?(f(),G(C(Tt),{key:1,class:J(i.value==="right"?C(fe)("side-bar-panel bg-comfy-menu-bg pointer-events-auto",b.value&&"min-w-78"):"bg-comfy-menu-bg pointer-events-auto"),"min-size":i.value==="right"?10:15,size:20,style:ge(_.value),role:i.value==="right"?"complementary":void 0,"aria-label":i.value==="right"?C(l)("sideToolbar.sidebar"):void 0},{default:O(()=>[i.value==="left"?Me(h.$slots,"right-side-panel",{key:0},void 0,!0):i.value==="right"&&b.value?Me(h.$slots,"side-bar-panel",{key:1},void 0,!0):R("",!0)]),_:3},8,["class","min-size","style","role","aria-label"])):R("",!0)]),_:3},8,["state-key"]))],2)]))}}),cd=Ee(ud,[["__scopeId","data-v-78b7f6de"]]),Xe=n(e=>({value:e,showDelay:300,hideDelay:0,pt:{text:{class:"border-node-component-tooltip-border bg-node-component-tooltip-surface text-node-component-tooltip border rounded-md px-2 py-1 text-xs leading-none shadow-none"},arrow:{class:"border-t-node-component-tooltip-border"}}}),"buildTooltipConfig"),dd=ga(()=>Kn(()=>import("./ComfyQueueButton-DazIfwpa.js"),__vite__mapDeps([22,5,3,4,2,1,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23]),import.meta.url)),pd={class:"flex h-full items-center"},fd=q({__name:"ComfyActionbar",setup(e){const o=ie(),t=Se(),{t:s}=pe(),{isIdle:a}=Fe(Ye()),l=k(()=>o.get("Comfy.UseNewMenu")),i=k(()=>l.value!=="Disabled"),r=document.querySelector(".workflow-tabs-container"),u=L(null),d=L(null),m=Ss("Comfy.MenuPosition.Docked",!0),g=Ss("Comfy.MenuPosition.Floating",{x:0,y:0}),{x:c,y:b,style:w,isDragging:v}=zl(u,{initialValue:{x:0,y:0},handle:d,containerElement:document.body,onMove:n(A=>{const E=r?.getBoundingClientRect().bottom??40;A.y<E&&(A.y=E)},"onMove")});Qt([c,b],([A,E])=>{g.value={x:A,y:E}},{debounce:300});const y=n(()=>{if(u.value){const A=window.innerWidth,E=window.innerHeight,W=u.value.offsetWidth,V=u.value.offsetHeight;if(W===0||V===0)return;if(g.value.x!==0||g.value.y!==0){c.value=Ht(g.value.x,0,A-W),b.value=Ht(g.value.y,0,E-V),h();return}c.value===0&&b.value===0&&(c.value=Ht((A-W)/2,0,A-W),b.value=Ht(E-V-10,0,E-V),h())}},"setInitialPosition");async function x(){await Re(),y()}n(x,"comfyRunButtonResolved"),ne(i,async A=>{A&&await Re(y)}),Le(d,"mousedown",()=>{});const _=L({x:c.value,y:b.value,windowWidth:window.innerWidth,windowHeight:window.innerHeight}),h=n(()=>{_.value={x:c.value,y:b.value,windowWidth:window.innerWidth,windowHeight:window.innerHeight}},"captureLastDragState");ne(v,A=>{A||h()},{immediate:!0}),Le(window,"resize",n(()=>{if(u.value){const A=window.innerWidth,E=window.innerHeight,W=u.value.offsetWidth,V=u.value.offsetHeight,j=_.value.x,H=_.value.windowWidth-(_.value.x+W),Q=_.value.y,te=_.value.windowHeight-(_.value.y+V),Y=[{edge:"left",distance:j},{edge:"right",distance:H},{edge:"top",distance:Q},{edge:"bottom",distance:te}].reduce((Te,Ue)=>Ue.distance<Te.distance?Ue:Te),oe=_.value.y/_.value.windowHeight,se=_.value.x/_.value.windowWidth;Y.edge==="left"?(c.value=Y.distance,b.value=oe*E):Y.edge==="right"?(c.value=A-W-Y.distance,b.value=oe*E):Y.edge==="top"?(c.value=se*A,b.value=Y.distance):(c.value=se*A,b.value=E-V-Y.distance),c.value=Ht(c.value,0,A-W),b.value=Ht(b.value,0,E-V)}},"adjustMenuPosition"));const M=L(!1),I=n(()=>{v.value&&(M.value=!0)},"onMouseEnterDropZone"),N=n(()=>{v.value&&(M.value=!1)},"onMouseLeaveDropZone");ne(v,A=>{A?m.value&&(m.value=!1):(M.value&&(m.value=!0),M.value=!1)});const $=k(()=>Xe(s("menu.interrupt"))),P=n(async()=>{a.value||await t.execute("Comfy.Interrupt")},"cancelCurrentJob"),F=k(()=>fe("w-[200px] border-dashed border-blue-500 opacity-80","m-1.5 flex items-center justify-center self-stretch","rounded-md before:w-50 before:-ml-50 before:h-full","pointer-events-auto",M.value&&"border-[3px] opacity-100 scale-105 shadow-[0_0_20px] shadow-blue-500")),U=k(()=>fe("actionbar pointer-events-auto z-1300",v.value&&"select-none pointer-events-none",m.value?"p-0 static border-none bg-transparent":"fixed shadow-interface"));return(A,E)=>{const W=Ne("tooltip");return f(),T("div",pd,[C(v)&&!C(m)?(f(),T("div",{key:0,class:J(F.value),onMouseenter:I,onMouseleave:N},B(C(s)("actionbar.dockToTop")),35)):R("",!0),z(C(Da),{class:J(["pointer-events-auto",U.value]),style:ge(C(w)),pt:{header:{class:"hidden"},content:{class:C(m)?"p-0":"p-1"}}},{default:O(()=>[p("div",{ref_key:"panelRef",ref:u,class:"flex items-center select-none gap-2"},[p("span",{ref_key:"dragHandleRef",ref:d,class:J(C(fe)("drag-handle cursor-grab w-3 h-max",C(v)&&"cursor-grabbing"))},null,2),(f(),G(Bl,{onResolve:x},{default:O(()=>[z(C(dd))]),_:1})),ce((f(),G(X,{variant:"destructive",size:"icon",disabled:C(a),"aria-label":C(s)("menu.interrupt"),onClick:P},{default:O(()=>E[0]||(E[0]=[p("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["disabled","aria-label"])),[[W,$.value,void 0,{bottom:!0}]])],512)]),_:1},8,["style","class","pt"])])}}}),md=n((e,o)=>{const t=e?.type;return t?!o[t]:!1},"isNodeMissingDefinition"),vd=n((e,o)=>{if(!e)return[];const t=C(o);return Si(e,s=>md(s,t))},"collectMissingNodes"),gd=n((e,o)=>vd(e,o).length>0,"graphHasMissingNodes"),hd={key:0,class:"icon-[lucide--triangle-alert] text-warning-background"},yd={class:"p-breadcrumb-item-label px-2"},bd={key:2,class:"pi pi-angle-down text-[10px]"},wd=q({__name:"SubgraphBreadcrumbItem",props:{item:{},isActive:{type:Boolean,default:!1}},setup(e){const o=e,t=ht(),s=k(()=>gd(K.rootGraph,t.nodeDefsByName)),{t:a}=pe(),l=L(),i=et(),r=Ae(),u=ot(),d=L(!1),m=L(),g=L(),c=L(),b=n(async(S,M)=>{if(S&&S!==M){if(o.item.updateTitle?.(S),r.activeSubgraph)r.activeSubgraph.name=S;else if(r.activeWorkflow)try{await u.renameWorkflow(r.activeWorkflow,za.basePath+Ba(S))}catch(N){console.error(N),i.showErrorDialog(N);return}const I=Zn();I.restoreState(I.exportState())}},"rename"),w=o.item.key==="root",v=k(()=>s.value&&w?a("breadcrumbsMenu.missingNodesWarning"):o.item.label),y=k(()=>[{label:a("g.rename"),icon:"pi pi-pencil",command:_},{label:a("breadcrumbsMenu.duplicate"),icon:"pi pi-copy",command:n(async()=>{await u.duplicateWorkflow(r.activeWorkflow)},"command"),visible:w&&!o.item.isBlueprint},{separator:!0,visible:w},{label:a("menuLabels.Save"),icon:"pi pi-save",command:n(async()=>{await Se().execute("Comfy.SaveWorkflow")},"command"),visible:w},{label:a("menuLabels.Save As"),icon:"pi pi-save",command:n(async()=>{await Se().execute("Comfy.SaveWorkflowAs")},"command"),visible:w},{separator:!0},{label:a("breadcrumbsMenu.clearWorkflow"),icon:"pi pi-trash",command:n(async()=>{await Se().execute("Comfy.ClearWorkflow")},"command")},{separator:!0,visible:o.item.key==="root"&&o.item.isBlueprint},{label:a("subgraphStore.publish"),icon:"pi pi-copy",command:n(async()=>{await u.saveWorkflowAs(r.activeWorkflow)},"command"),visible:o.item.key==="root"&&o.item.isBlueprint},{separator:!0,visible:w},{label:o.item.isBlueprint?a("breadcrumbsMenu.deleteBlueprint"):a("breadcrumbsMenu.deleteWorkflow"),icon:"pi pi-times",command:n(async()=>{await u.deleteWorkflow(r.activeWorkflow)},"command"),visible:w}]),x=n(S=>{d.value||(S.detail===1?o.isActive?l.value?.toggle(S):o.item.command?.({item:o.item,originalEvent:S}):o.isActive&&S.detail===2&&(l.value?.hide(),S.stopPropagation(),S.preventDefault(),_()))},"handleClick"),_=n(()=>{d.value=!0,m.value=o.item.label,Re(()=>{g.value?.$el&&(g.value.$el.focus(),g.value.$el.select(),c.value&&(g.value.$el.style.width=`${Math.max(200,c.value.offsetWidth)}px`))})},"startRename"),h=n(async S=>{S&&await b(m.value,o.item.label),d.value=!1},"inputBlur");return(S,M)=>{const I=Ne("tooltip");return f(),T(le,null,[ce((f(),T("a",{ref_key:"wrapperRef",ref:c,draggable:"false",href:"#",class:J(["p-breadcrumb-item-link h-12 cursor-pointer px-2",{"flex items-center gap-1":S.isActive,"p-breadcrumb-item-link-menu-visible":l.value?.overlayVisible,"p-breadcrumb-item-link-icon-visible":S.isActive,"active-breadcrumb-item":S.isActive}]),onClick:x},[s.value&&w?(f(),T("i",hd)):R("",!0),p("span",yd,B(S.item.label),1),S.item.isBlueprint?(f(),G(C(Jt),{key:1,value:"Blueprint",severity:"primary"})):R("",!0),S.isActive?(f(),T("i",bd)):R("",!0)],2)),[[I,{value:v.value,showDelay:512},void 0,{bottom:!0}]]),S.isActive?(f(),G(C(Aa),{key:0,ref_key:"menu",ref:l,model:y.value,popup:!0,pt:{root:{style:"background-color: var(--comfy-menu-bg)"},itemLink:{class:"py-2"}}},null,8,["model"])):R("",!0),d.value?(f(),G(C(ii),{key:1,ref_key:"itemInputRef",ref:g,modelValue:m.value,"onUpdate:modelValue":M[0]||(M[0]=N=>m.value=N),class:"fixed z-10000 px-2 py-2 text-[.8rem]",onBlur:M[1]||(M[1]=N=>h(!1)),onClick:M[2]||(M[2]=_e(()=>{},["stop"])),onKeydown:[M[3]||(M[3]=Xt(N=>h(!0),["enter"])),M[4]||(M[4]=Xt(N=>h(!1),["esc"]))]},null,8,["modelValue"])):R("",!0)],64)}}}),kd=Ee(wd,[["__scopeId","data-v-09d35179"]]),ml=n((e,o)=>{o={debounceTime:25,useMutationObserver:!0,useResizeObserver:!0,...o};const t=L(!1),s=[],a=L(!1),l=n(()=>{t.value=e.scrollWidth>e.clientWidth,o.onCheck?.(t.value)},"checkOverflowFn"),i=o.debounceTime?on(l,o.debounceTime):l;return o.useMutationObserver&&s.push(Fl(e,i,{subtree:!0,childList:!0}).stop),o.useResizeObserver&&s.push(ha(e,i).stop),{isOverflowing:In(t),disposed:In(a),checkOverflow:i,dispose:n(()=>{a.value=!0,s.forEach(r=>r())},"dispose")}},"useOverflowObserver"),Gs=28,js=8,yn=8,Hs=20,Cd=q({__name:"SubgraphBreadcrumb",setup(e){const o=Ae(),t=Zn(),s=L(),a=k(()=>o.activeWorkflow?.filename),l=k(()=>Fa().isSubgraphBlueprint(o.activeWorkflow)),i=L(!1),r=L(!1),u=k(()=>s.value?s.value.$el?.querySelector(".p-breadcrumb-list"):null),d=k(()=>{const c=t.navigationStack.map(b=>({label:b.name,command:n(()=>{const w=me().getCanvas();if(!w.graph)throw new TypeError("Canvas has no graph");w.setGraph(b)},"command"),updateTitle:n(w=>{const v=me().getCanvas().graph?.rootGraph;v&&xi(v,b.id,y=>{y.title=w})},"updateTitle")}));return[m.value,...c]}),m=k(()=>({label:a.value,icon:"pi pi-home",key:"root",isBlueprint:l.value,command:n(()=>{const c=me().getCanvas();if(!c.graph)throw new TypeError("Canvas has no graph");c.setGraph(c.graph.rootGraph)},"command")}));let g;return ne(u,c=>{g?.dispose(),g=void 0,c&&(g=ml(c,{onCheck:n(b=>{if(r.value=b,i.value){if(!b){const w=[...c.querySelectorAll(".p-breadcrumb-item")];if(w.length<3)return;const v=w.filter($=>$.querySelector(".p-breadcrumb-item-link-icon-visible")).length,y=c.querySelectorAll(".p-breadcrumb-separator"),_=y[y.length-1].offsetWidth,h=(Gs+yn+yn)*w.length+v*Hs,S=(w.length-1)*_,M=(w.length-1)*(js*2),I=h+S+M,N=c.clientWidth;I<=N&&(i.value=!1)}}else b&&(i.value=!0)},"onCheck")}))}),ya(()=>{g?.disposed.value||g?.checkOverflow()}),(c,b)=>(f(),T("div",{class:J(["subgraph-breadcrumb w-auto drop-shadow-[var(--interface-panel-drop-shadow)]",{"subgraph-breadcrumb-collapse":i.value,"subgraph-breadcrumb-overflow":r.value}]),style:ge({"--p-breadcrumb-gap":"0px","--p-breadcrumb-item-margin":`${js/2}px`,"--p-breadcrumb-item-min-width":`${Gs}px`,"--p-breadcrumb-item-padding":`${yn}px`,"--p-breadcrumb-icon-width":`${Hs}px`})},[z(C(ri),{ref_key:"breadcrumbRef",ref:s,class:"w-fit rounded-lg p-0",model:d.value,pt:{item:{class:"pointer-events-auto"}},"aria-label":c.$t("g.graphNavigation")},{item:O(({item:w})=>[z(kd,{item:w,"is-active":w===d.value.at(-1)},null,8,["item","is-active"])]),separator:O(()=>b[0]||(b[0]=[p("span",{style:{transform:"scale(1.5)"}}," / ",-1)])),_:1},8,["model","aria-label"])],6))}}),Sd=Ee(Cd,[["__scopeId","data-v-0e6867de"]]),xd={class:"flex flex-col gap-3 p-2"},_d={class:"flex flex-col gap-1"},Td={class:"relative h-2 w-full overflow-hidden rounded-full border border-interface-stroke bg-interface-panel-surface"},Nd={class:"flex items-start justify-end gap-4 text-[12px] leading-none"},$d={class:"flex items-center gap-1 text-text-primary opacity-90"},Id={class:"font-bold"},Md={class:"flex items-center gap-1 text-text-secondary"},Pd={class:"inline-block max-w-[10rem] truncate"},Dd={class:"flex items-center gap-1"},Ad={class:"flex items-center gap-4 text-[12px] text-text-primary"},Ed={class:"flex items-center gap-2"},Ld={class:"opacity-90"},Od={class:"font-bold"},Vd={class:"ml-1"},Rd={class:"flex items-center gap-2"},Wd={class:"opacity-90"},zd={class:"font-bold"},Bd={class:"ml-1"},Fd=q({__name:"QueueOverlayActive",props:{totalProgressStyle:{},currentNodeProgressStyle:{},totalPercentFormatted:{},currentNodePercentFormatted:{},currentNodeName:{},runningCount:{},queuedCount:{},bottomRowClass:{}},emits:["interruptAll","clearQueued","viewAllJobs"],setup(e){const{t:o}=pe(),t=k(()=>Xe(o("sideToolbar.queueProgressOverlay.cancelJobTooltip"))),s=k(()=>Xe(o("sideToolbar.queueProgressOverlay.clearQueueTooltip")));return(a,l)=>{const i=ba("i18n-t"),r=Ne("tooltip");return f(),T("div",xd,[p("div",_d,[p("div",Td,[p("div",{class:"absolute inset-0 h-full rounded-full transition-[width]",style:ge(a.totalProgressStyle)},null,4),p("div",{class:"absolute inset-0 h-full rounded-full transition-[width]",style:ge(a.currentNodeProgressStyle)},null,4)]),p("div",Nd,[p("div",$d,[z(i,{keypath:"sideToolbar.queueProgressOverlay.total"},{percent:O(()=>[p("span",Id,B(a.totalPercentFormatted),1)]),_:1})]),p("div",Md,[p("span",null,B(C(o)("sideToolbar.queueProgressOverlay.currentNode")),1),p("span",Pd,B(a.currentNodeName),1),p("span",Dd,[p("span",null,B(a.currentNodePercentFormatted),1)])])])]),p("div",{class:J(a.bottomRowClass)},[p("div",Ad,[p("div",Ed,[p("span",Ld,[p("span",Od,B(a.runningCount),1),p("span",Vd,B(C(o)("sideToolbar.queueProgressOverlay.running")),1)]),a.runningCount>0?ce((f(),G(X,{key:0,variant:"destructive",size:"icon","aria-label":C(o)("sideToolbar.queueProgressOverlay.interruptAll"),onClick:l[0]||(l[0]=u=>a.$emit("interruptAll"))},{default:O(()=>l[3]||(l[3]=[p("i",{class:"icon-[lucide--x] block size-4 leading-none text-text-primary"},null,-1)])),_:1},8,["aria-label"])),[[r,t.value,void 0,{top:!0}]]):R("",!0)]),p("div",Rd,[p("span",Wd,[p("span",zd,B(a.queuedCount),1),p("span",Bd,B(C(o)("sideToolbar.queueProgressOverlay.queuedSuffix")),1)]),a.queuedCount>0?ce((f(),G(X,{key:0,variant:"destructive",size:"icon","aria-label":C(o)("sideToolbar.queueProgressOverlay.clearQueued"),onClick:l[1]||(l[1]=u=>a.$emit("clearQueued"))},{default:O(()=>l[4]||(l[4]=[p("i",{class:"icon-[lucide--list-x] block size-4 leading-none text-text-primary"},null,-1)])),_:1},8,["aria-label"])),[[r,s.value,void 0,{top:!0}]]):R("",!0)])]),z(X,{class:"min-w-30 flex-1 px-2 py-0",variant:"secondary",size:"md",onClick:l[2]||(l[2]=u=>a.$emit("viewAllJobs"))},{default:O(()=>[Ie(B(C(o)("sideToolbar.queueProgressOverlay.viewAllJobs")),1)]),_:1})],2)])}}}),Ud={class:"inline-flex items-center gap-2"},Gd={key:0,class:"inline-flex items-center"},jd={class:"inline-flex items-center gap-2"},Hd={key:0,class:"relative inline-flex h-6 items-center"},qd=["src","alt"],Kd={class:"text-[14px] font-normal text-text-primary"},Qd={class:"font-bold"},Jd={class:"font-bold"},Yd={class:"font-bold"},Xd={class:"font-bold"},Zd=q({__name:"CompletionSummaryBanner",props:{mode:{},completedCount:{},failedCount:{},thumbnailUrls:{default:n(()=>[],"default")},ariaLabel:{}},emits:["click"],setup(e,{emit:o}){const t=e,s=o;return(a,l)=>{const i=ba("i18n-t");return f(),G(X,{variant:"secondary",size:"lg",class:"group w-full justify-between gap-3 p-1 text-left font-normal hover:cursor-pointer focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-background","aria-label":t.ariaLabel,onClick:l[0]||(l[0]=r=>s("click",r))},{default:O(()=>[p("span",Ud,[t.mode==="allFailed"?(f(),T("span",Gd,l[1]||(l[1]=[p("i",{class:"ml-1 icon-[lucide--circle-alert] block size-4 leading-none text-destructive-background"},null,-1)]))):R("",!0),p("span",jd,[t.mode!=="allFailed"?(f(),T("span",Hd,[(f(!0),T(le,null,we(t.thumbnailUrls,(r,u)=>(f(),T("span",{key:r+u,class:"inline-block h-6 w-6 overflow-hidden rounded-[6px] border-0 bg-secondary-background",style:ge({marginLeft:u===0?"0":"-12px"})},[p("img",{src:r,alt:a.$t("sideToolbar.queueProgressOverlay.preview"),class:"h-full w-full object-cover"},null,8,qd)],4))),128))])):R("",!0),p("span",Kd,[t.mode==="allSuccess"?(f(),G(i,{key:0,keypath:"sideToolbar.queueProgressOverlay.jobsCompleted",plural:t.completedCount},{count:O(()=>[p("span",Qd,B(t.completedCount),1)]),_:1},8,["plural"])):t.mode==="mixed"?(f(),T(le,{key:1},[z(i,{keypath:"sideToolbar.queueProgressOverlay.jobsCompleted",plural:t.completedCount},{count:O(()=>[p("span",Jd,B(t.completedCount),1)]),_:1},8,["plural"]),l[2]||(l[2]=p("span",null,", ",-1)),z(i,{keypath:"sideToolbar.queueProgressOverlay.jobsFailed",plural:t.failedCount},{count:O(()=>[p("span",Yd,B(t.failedCount),1)]),_:1},8,["plural"])],64)):(f(),G(i,{key:2,keypath:"sideToolbar.queueProgressOverlay.jobsFailed",plural:t.failedCount},{count:O(()=>[p("span",Xd,B(t.failedCount),1)]),_:1},8,["plural"]))])])]),l[3]||(l[3]=p("span",{class:"flex items-center justify-center rounded p-1 text-text-secondary transition-colors duration-200 ease-in-out"},[p("i",{class:"icon-[lucide--chevron-down] block size-4 leading-none"})],-1))]),_:1},8,["aria-label"])}}}),ep={class:"pointer-events-auto"},tp=q({__name:"QueueOverlayEmpty",props:{summary:{}},emits:["summaryClick"],setup(e){const{t:o}=pe();return(t,s)=>(f(),T("div",ep,[z(Zd,{mode:t.summary.mode,"completed-count":t.summary.completedCount,"failed-count":t.summary.failedCount,"thumbnail-urls":t.summary.thumbnailUrls,"aria-label":C(o)("sideToolbar.queueProgressOverlay.expandCollapsedQueue"),onClick:s[0]||(s[0]=a=>t.$emit("summaryClick"))},null,8,["mode","completed-count","failed-count","thumbnail-urls","aria-label"])]))}});function op(e,o){const t=Ae(),s=ot(),a=_t(),{copyToClipboard:l}=Ua(),i=ao(),r=ht(),u=_i(),d=n(async()=>{const $=e();if(!$)return;const P=$.taskRef?.workflow;if(!P)return;const F=`Job ${$.id}.json`,U=t.createTemporary(F,P);await s.openWorkflow(U)},"openJobWorkflow"),m=n(async()=>{const $=e();$&&await l($.id)},"copyJobId"),g=n(async()=>{const $=e();$&&($.state==="running"||$.state==="initialization"?await Ce.interrupt($.id):$.state==="pending"&&await Ce.deleteItem("queue",$.id),await a.update())},"cancelJob"),c=n(async()=>{const $=e();if(!$)return;const U=$.taskRef?.status?.messages?.find(A=>A?.[0]==="execution_error")?.[1]?.exception_message;U&&await l(String(U))},"copyErrorMessage"),b=n(()=>{const $=e();if(!$)return;const F=$.taskRef?.status?.messages?.find(U=>U?.[0]==="execution_error")?.[1];F&&et().showExecutionErrorDialog(F)},"reportError"),w=n(async()=>{const $=e();if(!$)return;const P=$.taskRef?.previewOutput;if(!P)return;let F=null,U=null;if(P.isImage?(F="LoadImage",U="image"):P.isVideo?(F="LoadVideo",U="file"):P.isAudio&&(F="LoadAudio",U="audio"),!F||!U)return;const A=r.nodeDefsByName[F];if(!A)return;const E=i.addNodeOnGraph(A,{pos:i.getCanvasCenter()});if(!E)return;const W=n(Q=>Q==="input"||Q==="output"||Q==="temp","isResultItemType"),V={filename:P.filename,subfolder:P.subfolder,type:W(P.type)?P.type:void 0},j=Ti(V,{rootFolder:V.type}),H=E.widgets?.find(Q=>Q.name===U);H&&(H.value=j,H.callback?.(j)),E.graph?.setDirtyCanvas(!0,!0)},"addOutputLoaderNode"),v=n(()=>{const $=e();if(!$)return;const P=$.taskRef?.previewOutput;P&&an(P.url)},"downloadPreviewAsset"),y=n(async()=>{const $=e();if(!$)return;const P=$.taskRef?.workflow;if(!P)return;const F=ie();let U=`Job ${$.id}.json`;if(F.get("Comfy.PromptFilename")){const W=await et().prompt({title:re("workflowService.exportWorkflow"),message:re("workflowService.enterFilename")+":",defaultValue:U});if(!W)return;U=Ba(W)}const A=JSON.stringify(P,null,2),E=new Blob([A],{type:"application/json"});Ni(U,E)},"exportJobWorkflow"),x=n(async()=>{const $=e();if(!$)return;const P=$.taskRef,F=P?.previewOutput;if(!P||!F)return;const U=$i(P,F);await u.confirmDelete(U)&&await a.update()},"deleteJobAsset"),_=n(async()=>{const $=e()?.taskRef;$&&await a.delete($)},"removeFailedJob"),h=k(()=>he("queue.jobMenu.openAsWorkflowNewTab","Open as workflow in new tab")),S=k(()=>he("queue.jobMenu.openWorkflowNewTab","Open workflow in new tab")),M=k(()=>he("queue.jobMenu.copyJobId","Copy job ID")),I=k(()=>he("queue.jobMenu.cancelJob","Cancel job"));return{jobMenuEntries:k(()=>{const $=e(),P=$?.state;if(!P)return[];const F=!!$?.taskRef?.previewOutput;return P==="completed"?[{key:"inspect-asset",label:he("queue.jobMenu.inspectAsset","Inspect asset"),icon:"icon-[lucide--zoom-in]",onClick:o?()=>{const U=e();U&&o(U)}:void 0},{key:"add-to-current",label:he("queue.jobMenu.addToCurrentWorkflow","Add to current workflow"),icon:"icon-[comfy--node]",onClick:w},{key:"download",label:he("queue.jobMenu.download","Download"),icon:"icon-[lucide--download]",onClick:v},{kind:"divider",key:"d1"},{key:"open-workflow",label:h.value,icon:"icon-[comfy--workflow]",onClick:d},{key:"export-workflow",label:he("queue.jobMenu.exportWorkflow","Export workflow"),icon:"icon-[comfy--file-output]",onClick:y},{kind:"divider",key:"d2"},{key:"copy-id",label:M.value,icon:"icon-[lucide--copy]",onClick:m},{kind:"divider",key:"d3"},...F?[{key:"delete",label:he("queue.jobMenu.deleteAsset","Delete asset"),icon:"icon-[lucide--trash-2]",onClick:x}]:[]]:P==="failed"?[{key:"open-workflow",label:S.value,icon:"icon-[comfy--workflow]",onClick:d},{kind:"divider",key:"d1"},{key:"copy-id",label:M.value,icon:"icon-[lucide--copy]",onClick:m},{key:"copy-error",label:he("queue.jobMenu.copyErrorMessage","Copy error message"),icon:"icon-[lucide--copy]",onClick:c},{key:"report-error",label:he("queue.jobMenu.reportError","Report error"),icon:"icon-[lucide--message-circle-warning]",onClick:b},{kind:"divider",key:"d2"},{key:"delete",label:he("queue.jobMenu.removeJob","Remove job"),icon:"icon-[lucide--circle-minus]",onClick:_}]:[{key:"open-workflow",label:h.value,icon:"icon-[comfy--workflow]",onClick:d},{kind:"divider",key:"d1"},{key:"copy-id",label:M.value,icon:"icon-[lucide--copy]",onClick:m},{kind:"divider",key:"d2"},{key:"cancel-job",label:I.value,icon:"icon-[lucide--x]",onClick:g}]}),openJobWorkflow:d,copyJobId:m,cancelJob:g}}n(op,"useJobMenu");const np={class:"flex h-12 items-center justify-between gap-2 border-b border-interface-stroke px-2"},sp={class:"px-2 text-[14px] font-normal text-text-primary"},ap={key:0,class:"ml-4 inline-flex items-center gap-1 text-blue-100"},lp={class:"font-bold"},ip={class:"ml-1"},rp={key:0,class:"flex items-center gap-1"},up={class:"flex flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3 font-inter"},cp=q({__name:"QueueOverlayHeader",props:{headerTitle:{},showConcurrentIndicator:{type:Boolean},concurrentWorkflowCount:{}},emits:["clearHistory"],setup(e,{emit:o}){const t=o,{t:s}=pe(),a=L(null),l=k(()=>Xe(s("g.more"))),i=n(u=>{a.value?.toggle(u)},"onMoreClick"),r=n(()=>{a.value?.hide(),t("clearHistory")},"onClearHistoryFromMenu");return(u,d)=>{const m=Ne("tooltip");return f(),T("div",np,[p("div",sp,[p("span",null,B(u.headerTitle),1),u.showConcurrentIndicator?(f(),T("span",ap,[d[0]||(d[0]=p("span",{class:"inline-block size-2 rounded-full bg-blue-100"},null,-1)),p("span",null,[p("span",lp,B(u.concurrentWorkflowCount),1),p("span",ip,B(C(s)("sideToolbar.queueProgressOverlay.running")),1)])])):R("",!0)]),C(ft)?R("",!0):(f(),T("div",rp,[ce((f(),G(X,{variant:"textonly",size:"icon","aria-label":C(s)("sideToolbar.queueProgressOverlay.moreOptions"),onClick:i},{default:O(()=>d[1]||(d[1]=[p("i",{class:"icon-[lucide--more-horizontal] block size-4 leading-none text-text-secondary"},null,-1)])),_:1},8,["aria-label"])),[[m,l.value,void 0,{top:!0}]]),z(C(Ze),{ref_key:"morePopoverRef",ref:a,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:O(()=>[p("div",up,[z(X,{class:"w-full justify-start",variant:"textonly",size:"sm","aria-label":C(s)("sideToolbar.queueProgressOverlay.clearHistory"),onClick:r},{default:O(()=>[d[2]||(d[2]=p("i",{class:"icon-[lucide--file-x-2] size-4 text-muted"},null,-1)),p("span",null,B(C(s)("sideToolbar.queueProgressOverlay.clearHistory")),1)]),_:1},8,["aria-label"])])]),_:1},512)]))])}}}),dp={class:"flex min-w-[14rem] flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3 font-inter"},pp={key:0,class:"px-2 py-1"},fp=q({__name:"JobContextMenu",props:{entries:{}},emits:["action"],setup(e,{expose:o,emit:t}){const s=t,a=L(null);function l(u){a.value&&a.value.toggle(u)}n(l,"open");function i(){a.value?.hide()}n(i,"hide");function r(u){s("action",u)}return n(r,"onEntry"),o({open:l,hide:i}),(u,d)=>(f(),G(C(Ze),{ref_key:"jobItemPopoverRef",ref:a,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:O(()=>[p("div",dp,[(f(!0),T(le,null,we(u.entries,m=>(f(),T(le,{key:m.key},[m.kind==="divider"?(f(),T("div",pp,d[0]||(d[0]=[p("div",{class:"h-px bg-interface-stroke"},null,-1)]))):(f(),G(X,{key:1,class:"w-full justify-start bg-transparent",variant:"textonly",size:"sm","aria-label":m.label,onClick:n(g=>r(m),"onClick")},{default:O(()=>[m.icon?(f(),T("i",{key:0,class:J([m.icon,"block size-4 shrink-0 leading-none text-text-secondary"])},null,2)):R("",!0),p("span",null,B(m.label),1)]),_:2},1032,["aria-label","onClick"]))],64))),128))])]),_:1},512))}}),ko=n(e=>{const o=Math.round(e??0);return Ul(o,0,100)},"clampPercentInt"),Jo=n((e,o)=>{const t=ko(o);return new Intl.NumberFormat(e,{style:"percent",maximumFractionDigits:0}).format((t||0)/100)},"formatPercent0");function vl(){const{locale:e}=pe(),o=Ye(),t=k(()=>ko(Math.round((o.executionProgress??0)*100))),s=k(()=>Jo(e.value,t.value)),a=k(()=>ko(Math.round((o.executingNodeProgress??0)*100))),l=k(()=>Jo(e.value,a.value)),i=k(()=>({width:`${t.value}%`,background:"var(--color-interface-panel-job-progress-primary)"})),r=k(()=>({width:`${a.value}%`,background:"var(--color-interface-panel-job-progress-secondary)"}));return{totalPercent:t,totalPercentFormatted:s,currentNodePercent:a,currentNodePercentFormatted:l,totalProgressStyle:i,currentNodeProgressStyle:r}}n(vl,"useQueueProgress");const mp=n(e=>{const o=new Date(e),t=o.getFullYear(),s=String(o.getMonth()+1).padStart(2,"0"),a=String(o.getDate()).padStart(2,"0");return`${t}-${s}-${a}`},"dateKey"),vp=n(e=>{const o=new Date(e),t=new Date;return o.getFullYear()===t.getFullYear()&&o.getMonth()===t.getMonth()&&o.getDate()===t.getDate()},"isToday"),gp=n(e=>{const o=new Date(e),t=new Date,s=new Date(t.getFullYear(),t.getMonth(),t.getDate()-1);return o.getFullYear()===s.getFullYear()&&o.getMonth()===s.getMonth()&&o.getDate()===s.getDate()},"isYesterday"),hp=n((e,o)=>{const t=new Date(e);return new Intl.DateTimeFormat(o,{month:"short",day:"numeric"}).format(t)},"formatShortMonthDay"),Dn=n((e,o)=>{const t=new Date(e);return new Intl.DateTimeFormat(o,{hour:"numeric",minute:"2-digit",second:"2-digit"}).format(t)},"formatClockTime"),Ct=n(e=>{switch(e){case"pending":return"icon-[lucide--loader-circle]";case"initialization":return"icon-[lucide--server-crash]";case"running":return"icon-[lucide--zap]";case"completed":return"icon-[lucide--check-check]";case"failed":return"icon-[lucide--alert-circle]";default:return"icon-[lucide--circle]"}},"iconForJobState"),qs=n((e,o)=>{const t=o("g.job"),s=String(e.promptId??"").split("-")[0],a=e.queueIndex;return typeof a=="number"?`${t} #${a}`:s?`${t} ${s}`:t},"buildTitle"),bn=n((e,o,t)=>{const s=e.createTime;return s!==void 0?t(s,o):""},"buildQueuedTime"),yp=n((e,o,t)=>{if(o==="pending")return t.showAddedHint?{iconName:"icon-[lucide--check]",primary:t.t("queue.jobAddedToQueue"),secondary:bn(e,t.locale,t.formatClockTimeFn),showClear:!0}:{iconName:Ct(o),primary:t.t("queue.inQueue"),secondary:bn(e,t.locale,t.formatClockTimeFn),showClear:!0};if(o==="initialization")return{iconName:Ct(o),primary:t.t("queue.initializingAlmostReady"),secondary:bn(e,t.locale,t.formatClockTimeFn),showClear:!0};if(o==="running"){if(t.isActive){const s=Jo(t.locale,ko(t.totalPercent)),a=Jo(t.locale,ko(t.currentNodePercent)),l=t.t("sideToolbar.queueProgressOverlay.total",{percent:s}),i=t.currentNodeName?`${t.currentNodeName} ${t.t("sideToolbar.queueProgressOverlay.colonPercent",{percent:a})}`:"";return{iconName:Ct(o),primary:l,secondary:i,showClear:!0}}return{iconName:Ct(o),primary:t.t("g.running"),secondary:"",showClear:!0}}if(o==="completed"){const s=e.executionTimeInSeconds,a=e.previewOutput,l=a&&a.isImage?a.url:void 0,i=t.isCloud?t.t("queue.completedIn",{duration:Ii(e.executionTime??0)}):a?.filename&&a.filename.length?a.filename:qs(e,t.t);return{iconName:Ct(o),iconImageUrl:l,primary:i,secondary:s!==void 0?`${s.toFixed(2)}s`:"",showClear:!1}}return o==="failed"?{iconName:Ct(o),primary:t.t("g.failed"),secondary:t.t("g.failed"),showClear:!0}:{iconName:Ct(o),primary:qs(e,t.t),secondary:"",showClear:!0}},"buildJobDisplay"),cs=n((e,o)=>{if(o)return"initialization";switch(e.displayStatus){case"Running":return"running";case"Pending":return"pending";case"Completed":return"completed";case"Failed":case"Cancelled":return"failed"}return"failed"},"jobStateFromTask"),Ks=["All","Completed","Failed"],Qs=["mostRecent","totalGenerationTime"],bp=3e3,Js=new Map,Ys=n(e=>{if(e==null)return null;const o=String(e);return o.length?o:null},"taskIdToKey"),wp=n((e,o,t)=>{const s=n(a=>{const l=t.format(a,"day");return l&&l[0].toLocaleUpperCase(o)+l.slice(1)},"formatRelativeDay");return vp(e)?s(0):gp(e)?s(-1):hp(e,o)},"dateLabelForTimestamp");function kp(){const{t:e,locale:o}=pe(),t=_t(),s=Ye(),a=Ae(),l=L(new Set),i=L(new Set),r=new Map,u=n(A=>{const E=r.get(A);E!==void 0&&(clearTimeout(E),r.delete(A))},"clearAddedHintTimeout"),d=n(A=>{u(A);const E=setTimeout(()=>{r.delete(A);const W=new Set(i.value);W.delete(A)&&(i.value=W)},bp);r.set(A,E)},"scheduleAddedHintExpiry");ne(()=>t.pendingTasks.map(A=>Ys(A.promptId)).filter(A=>!!A),A=>{const E=new Set(A),W=new Set(i.value),V=new Set(l.value);A.forEach(j=>{V.has(j)||(V.add(j),W.add(j),d(j))});for(const j of Array.from(V))E.has(j)||(V.delete(j),W.delete(j),u(j));i.value=W,l.value=V},{immediate:!0});const m=n((A,E)=>{if(E!=="pending")return!1;const W=Ys(A.promptId);return W?i.value.has(W):!1},"shouldShowAddedHint");rt(()=>{r.forEach(A=>clearTimeout(A)),r.clear(),l.value=new Set,i.value=new Set});const{totalPercent:g,currentNodePercent:c}=vl(),b=k(()=>{const A=o.value;let E=Js.get(A);return E||(E=new Intl.RelativeTimeFormat(A,{numeric:"auto"}),Js.set(A,E)),E}),w=k(()=>e("queue.jobList.undated")||"Undated"),v=n(A=>s.isPromptInitializing(A),"isJobInitializing"),y=k(()=>{const A=s.executingNode;if(!A)return e("g.emDash");const E=(A.title??"").toString().trim();if(E)return E;const W=(A.type??"").toString().trim()||e("g.untitled"),V=`nodeDefs.${We(W)}.display_name`;return he(V,W)}),x=L("All"),_=L("all"),h=L("mostRecent"),S=k(()=>[...t.pendingTasks,...t.runningTasks,...t.historyTasks].sort((E,W)=>W.queueIndex-E.queueIndex)),M=k(()=>S.value.map(A=>({task:A,state:cs(A,v(A?.promptId))}))),I=k(()=>M.value.some(({state:A})=>A==="failed"));ne(()=>I.value,A=>{!A&&x.value==="Failed"&&(x.value="All")});const N=k(()=>{let A=M.value;if(x.value==="Completed"?A=A.filter(({state:E})=>E==="completed"):x.value==="Failed"&&(A=A.filter(({state:E})=>E==="failed")),_.value==="current"){const E=a.activeWorkflow?.activeState?.id;if(!E)return[];A=A.filter(({task:W})=>{const V=W.workflow?.id;return!!V&&V===E})}return A}),$=k(()=>N.value.map(({task:A})=>A)),P=k(()=>N.value.map(({task:A,state:E})=>{const W=String(A.promptId??"")===String(s.activePromptId??""),V=m(A,E),j=yp(A,E,{t:e,locale:o.value,formatClockTimeFn:Dn,isActive:W,totalPercent:W?g.value:void 0,currentNodePercent:W?c.value:void 0,currentNodeName:W?y.value:void 0,showAddedHint:V,isCloud:ft});return{id:String(A.promptId),title:j.primary,meta:j.secondary,state:E,iconName:j.iconName,iconImageUrl:j.iconImageUrl,showClear:j.showClear,taskRef:A,progressTotalPercent:E==="running"&&W?g.value:void 0,progressCurrentPercent:E==="running"&&W?c.value:void 0,runningNodeName:E==="running"&&W?y.value:void 0,executionTimeMs:A.executionTime,computeHours:A.executionTime!==void 0?A.executionTime/36e5:void 0}})),F=k(()=>{const A=new Map;return P.value.forEach(E=>A.set(E.id,E)),A}),U=k(()=>{const A=[],E=new Map,W=o.value;for(const{task:V,state:j}of N.value){let H;j==="completed"||j==="failed"?H=V.executionEndTimestamp:H=V.createTime;const Q=H===void 0?"undated":mp(H);let te=E.get(Q);if(te===void 0){const Y=H===void 0?w.value:wp(H,W,b.value);A.push({key:Q,label:Y,items:[]}),te=A.length-1,E.set(Q,te)}const ue=F.value.get(String(V.promptId));ue&&A[te].items.push(ue)}if(h.value==="totalGenerationTime"){const V=n(H=>typeof H=="number"&&!Number.isNaN(H)?H:-1,"valueOrDefault"),j=n((H,Q)=>V(Q.executionTimeMs)-V(H.executionTimeMs),"sortByExecutionTimeDesc");A.forEach(H=>{H.items.sort(j)})}return A});return{selectedJobTab:x,selectedWorkflowFilter:_,selectedSortMode:h,hasFailedJobs:I,allTasksSorted:S,filteredTasks:$,jobItems:P,groupedJobItems:U,currentNodeName:y}}n(kp,"useJobList");const Cp={class:"flex items-center justify-between gap-2 px-3"},Sp={class:"min-w-0 flex-1 overflow-x-auto"},xp={class:"inline-flex items-center gap-1 whitespace-nowrap"},_p={class:"ml-2 flex shrink-0 items-center gap-2"},Tp={key:0,class:"pointer-events-none absolute -top-1 -right-1 inline-block size-2 rounded-full bg-base-foreground"},Np={class:"flex min-w-[12rem] flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},$p={key:0,class:"icon-[lucide--check] size-4"},Ip={key:0,class:"icon-[lucide--check] block size-4 leading-none text-text-secondary"},Mp={key:0,class:"pointer-events-none absolute -top-1 -right-1 inline-block size-2 rounded-full bg-base-foreground"},Pp={class:"flex min-w-[12rem] flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},Dp={key:0,class:"icon-[lucide--check] size-4 text-text-secondary"},Ap={key:0,class:"mx-2 mt-1 h-px"},Ep=q({__name:"JobFiltersBar",props:{selectedJobTab:{},selectedWorkflowFilter:{},selectedSortMode:{},hasFailedJobs:{type:Boolean}},emits:["update:selectedJobTab","update:selectedWorkflowFilter","update:selectedSortMode"],setup(e,{emit:o}){const t=e,s=o,{t:a}=pe(),l=L(null),i=L(null),r=k(()=>Xe(a("sideToolbar.queueProgressOverlay.filterBy"))),u=k(()=>Xe(a("sideToolbar.queueProgressOverlay.sortBy"))),d=k(()=>t.hasFailedJobs?Ks:Ks.filter(y=>y!=="Failed")),m=n(y=>{l.value&&l.value.toggle(y)},"onFilterClick"),g=n(y=>{l.value?.hide?.(),s("update:selectedWorkflowFilter",y)},"selectWorkflowFilter"),c=n(y=>{i.value&&i.value.toggle(y)},"onSortClick"),b=n(y=>{i.value?.hide?.(),s("update:selectedSortMode",y)},"selectSortMode"),w=n(y=>a(y==="All"?"g.all":y==="Completed"?"g.completed":"g.failed"),"tabLabel"),v=n(y=>y==="mostRecent"?a("queue.jobList.sortMostRecent"):y==="totalGenerationTime"?a("queue.jobList.sortTotalGenerationTime"):"","sortLabel");return(y,x)=>{const _=Ne("tooltip");return f(),T("div",Cp,[p("div",Sp,[p("div",xp,[(f(!0),T(le,null,we(d.value,h=>(f(),G(X,{key:h,variant:y.selectedJobTab===h?"secondary":"muted-textonly",size:"sm",class:"px-3",onClick:n(S=>y.$emit("update:selectedJobTab",h),"onClick")},{default:O(()=>[Ie(B(w(h)),1)]),_:2},1032,["variant","onClick"]))),128))])]),p("div",_p,[ce((f(),G(X,{key:0,variant:"secondary",size:"icon","aria-label":C(a)("sideToolbar.queueProgressOverlay.filterJobs"),onClick:m},{default:O(()=>[x[2]||(x[2]=p("i",{class:"icon-[lucide--list-filter] size-4"},null,-1)),y.selectedWorkflowFilter!=="all"?(f(),T("span",Tp)):R("",!0)]),_:1},8,["aria-label"])),[[_,r.value,void 0,{top:!0}]]),(f(),G(C(Ze),{key:1,ref_key:"filterPopoverRef",ref:l,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:O(()=>[p("div",Np,[z(X,{class:"w-full justify-between",variant:"textonly",size:"sm",onClick:x[0]||(x[0]=h=>g("all"))},{default:O(()=>[p("span",null,B(C(a)("sideToolbar.queueProgressOverlay.filterAllWorkflows")),1),y.selectedWorkflowFilter==="all"?(f(),T("i",$p)):R("",!0)]),_:1}),x[3]||(x[3]=p("div",{class:"mx-2 mt-1 h-px"},null,-1)),z(X,{class:"w-full justify-between",variant:"textonly",onClick:x[1]||(x[1]=h=>g("current"))},{default:O(()=>[p("span",null,B(C(a)("sideToolbar.queueProgressOverlay.filterCurrentWorkflow")),1),y.selectedWorkflowFilter==="current"?(f(),T("i",Ip)):R("",!0)]),_:1})])]),_:1},512)),ce((f(),G(X,{variant:"secondary",size:"icon","aria-label":C(a)("sideToolbar.queueProgressOverlay.sortJobs"),onClick:c},{default:O(()=>[x[4]||(x[4]=p("i",{class:"icon-[lucide--arrow-up-down] size-4"},null,-1)),y.selectedSortMode!=="mostRecent"?(f(),T("span",Mp)):R("",!0)]),_:1},8,["aria-label"])),[[_,u.value,void 0,{top:!0}]]),z(C(Ze),{ref_key:"sortPopoverRef",ref:i,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:O(()=>[p("div",Pp,[(f(!0),T(le,null,we(C(Qs),(h,S)=>(f(),T(le,{key:h},[z(X,{class:"w-full justify-between",variant:"textonly",size:"sm",onClick:n(M=>b(h),"onClick")},{default:O(()=>[p("span",null,B(v(h)),1),y.selectedSortMode===h?(f(),T("i",Dp)):R("",!0)]),_:2},1032,["onClick"]),S<C(Qs).length-1?(f(),T("div",Ap)):R("",!0)],64))),128))])]),_:1},512)])])}}}),Xs=n(e=>{const t=e?.status?.messages;if(!Array.isArray(t)||!t.length)return null;const s=t.find(i=>Array.isArray(i)&&i[0]==="execution_error");if(!s)return null;const a=s[1],l=String(a?.exception_message??"");return{detail:a,message:l}},"extractExecutionError"),Lp=n(({taskForJob:e,copyToClipboard:o,dialog:t})=>{const s=k(()=>Xs(e.value)?.message??"");return{errorMessageValue:s,copyErrorMessage:n(()=>{s.value&&o(s.value)},"copyErrorMessage"),reportJobError:n(()=>{const i=Xs(e.value);if(i?.detail){t.showExecutionErrorDialog(i.detail);return}s.value&&t.showErrorDialog(new Error(s.value),{reportType:"queueJobError"})},"reportJobError")}},"useJobErrorReporting"),An=n(e=>{const o=Math.max(0,Math.floor(e/1e3)),t=Math.floor(o/60),s=o%60;return`${t}m ${s}s`},"formatElapsedTime"),Op=n(e=>e.historyTasks.map(o=>Number(o.executionTimeInSeconds)).filter(o=>typeof o=="number"&&!Number.isNaN(o)),"pickRecentDurations"),Vp=n(({queueStore:e,executionStore:o,taskForJob:t,jobState:s,firstSeenTs:a,jobsAhead:l,nowTs:i})=>{const r=k(()=>o.runningWorkflowCount),u=k(()=>s.value==="pending"&&!!a.value&&(r.value??0)>1),d=k(()=>Op(e).slice(-20)),m=k(()=>{const w=d.value;if(!w.length)return null;const v=w.slice().sort((N,$)=>N-$),y=v.reduce((N,$)=>N+$,0)/v.length,x=v[Math.min(v.length-1,Math.floor(v.length*.75))],_=e.runningTasks,h=i.value,S=_.map(N=>N.executionStartTimestamp).filter(N=>typeof N=="number").map(N=>{const $=Math.max(0,Math.floor((h-N)/1e3));return{lo:Math.max(0,Math.round(y-$)),hi:Math.max(0,Math.round(x-$))}});if(!S.length)return null;const M=S.reduce((N,$)=>Math.min(N,$.lo),1/0),I=S.reduce((N,$)=>Math.min(N,$.hi),1/0);return[M,I]}),g=k(()=>{const w=d.value;if(!w.length)return null;const v=l.value;if(v==null)return null;const y=w.slice().sort((M,I)=>M-I),x=y.reduce((M,I)=>M+I,0)/y.length,_=y[Math.min(y.length-1,Math.floor(y.length*.75))];if(v<=0)return m.value??[0,0];const h=Math.max(1,r.value||1),S=Math.ceil(v/h);return[Math.round(x*S),Math.round(_*S)]}),c=k(()=>{const w=d.value;if(!w.length)return null;const v=w.slice().sort(($,P)=>$-P),y=v.reduce(($,P)=>$+P,0)/v.length,x=v[Math.min(v.length-1,Math.floor(v.length*.75))],_=t.value,S=(s.value==="running"?_?.executionStartTimestamp:void 0)??a.value,M=S?Math.max(0,Math.floor((i.value-S)/1e3)):0,I=Math.max(0,Math.round(y-M)),N=Math.max(0,Math.round(x-M));return[I,N]}),b=k(()=>{const w=t.value,y=(s.value==="running"?w?.executionStartTimestamp:void 0)??a.value;return y?An(i.value-y):""});return{runningWorkflowCount:r,showParallelQueuedStats:u,estimateRangeSeconds:g,estimateRemainingRangeSeconds:c,timeElapsedValue:b}},"useQueueEstimates"),Rp={class:"w-[300px] min-w-[260px] rounded-lg border border-interface-stroke bg-interface-panel-surface shadow-md"},Wp={class:"flex items-center border-b border-interface-stroke p-4"},zp={class:"text-[0.875rem] leading-normal font-normal text-text-primary"},Bp={class:"flex flex-col gap-6 px-4 pt-4 pb-4"},Fp={class:"grid grid-cols-2 items-center gap-x-2 gap-y-2"},Up={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Gp={class:"flex min-w-0 items-center text-[0.75rem] leading-normal font-normal text-text-secondary"},jp={class:"block min-w-0 truncate"},Hp={key:0,class:"grid grid-cols-2 items-center gap-x-2 gap-y-2"},qp={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Kp={class:"flex min-w-0 items-center text-[0.75rem] leading-normal font-normal text-text-secondary"},Qp={class:"block min-w-0 truncate"},Jp={key:1,class:"grid grid-cols-2 gap-x-2"},Yp={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Xp={class:"flex items-center justify-between gap-4"},Zp={class:"col-span-2 mt-2 rounded bg-interface-panel-hover-surface px-4 py-2 text-[0.75rem] leading-normal text-text-secondary"},ef=q({__name:"JobDetailsPopover",props:{jobId:{},workflowId:{}},setup(e){const o=e,t=k(()=>u("g.copy")),s=Ae(),a=_t(),l=Ye(),i=et(),{locale:r,t:u}=pe(),d=k(()=>{const Q=o.workflowId;if(!Q)return"";const te=s.activeWorkflow?.activeState?.id;return te&&te===Q?s.activeWorkflow?.filename??Q:Q}),m=k(()=>o.jobId),{copyToClipboard:g}=Ua(),c=n(()=>{g(m.value)},"copyJobId"),b=k(()=>{const Q=o.jobId,te=n(ue=>ue.find(Y=>String(Y.promptId??"")===String(Q)),"findIn");return te(a.pendingTasks)||te(a.runningTasks)||te(a.historyTasks)||null}),w=k(()=>{const Q=b.value;if(!Q)return null;const te=l.isPromptInitializing(String(Q?.promptId));return cs(Q,te)}),v=k(()=>b.value?.createTime),y=k(()=>v.value!==void 0?Dn(v.value,r.value):""),x=k(()=>{const Q=b.value;return Q?Number(Q.queueIndex):null}),_=k(()=>{const Q=x.value;return Q==null?null:a.pendingTasks.filter(ue=>Number(ue.queueIndex)<Q).length}),h=k(()=>{if(_.value==null)return"";const Q=_.value;return u("queue.jobDetails.queuePositionValue",{count:Q},Q)}),S=L(Date.now());let M=null;Ve(()=>{M=window.setInterval(()=>{S.value=Date.now()},1e3)}),rt(()=>{M!=null&&(clearInterval(M),M=null)});const{showParallelQueuedStats:I,estimateRangeSeconds:N,estimateRemainingRangeSeconds:$,timeElapsedValue:P}=Vp({queueStore:a,executionStore:l,taskForJob:b,jobState:w,firstSeenTs:v,jobsAhead:_,nowTs:S}),F=n((Q,te)=>{if(te<=60){const oe=Math.max(1,Math.round(te)),se=Math.max(1,Math.min(oe,Math.round(Q)));return se===oe?u("queue.jobDetails.eta.seconds",{count:oe},oe):u("queue.jobDetails.eta.secondsRange",{lo:se,hi:oe})}if(Q>=60&&te<90)return u("queue.jobDetails.eta.minutes",{count:1},1);const ue=Math.max(1,Math.floor(Q/60)),Y=Math.max(ue,Math.ceil(te/60));return ue===Y?u("queue.jobDetails.eta.minutes",{count:ue},ue):u("queue.jobDetails.eta.minutesRange",{lo:ue,hi:Y})},"formatEta"),U=k(()=>{const Q=N.value;if(!Q)return"";const[te,ue]=Q;return F(te,ue)}),A=k(()=>{const Q=$.value;if(!Q)return"";const[te,ue]=Q;return F(te,ue)}),E=k(()=>[{label:u("queue.jobDetails.workflow"),value:d.value},{label:u("queue.jobDetails.jobId"),value:m.value,canCopy:!0}]),W=k(()=>{if(w.value==="pending"){if(!v.value)return[];const Q=[{label:u("queue.jobDetails.queuedAt"),value:y.value}];return I.value&&Q.push({label:u("queue.jobDetails.queuePosition"),value:h.value},{label:u("queue.jobDetails.timeElapsed"),value:P.value},{label:u("queue.jobDetails.estimatedStartIn"),value:U.value}),Q}if(w.value==="running")return v.value?[{label:u("queue.jobDetails.queuedAt"),value:y.value},{label:u("queue.jobDetails.timeElapsed"),value:P.value},{label:u("queue.jobDetails.estimatedFinishIn"),value:A.value}]:[];if(w.value==="completed"){const Q=b.value,te=Q?.executionEndTimestamp,ue=Q?.executionTime,Y=te?Dn(te,r.value):"",oe=ue!==void 0?An(ue):"";return ue!==void 0&&(ue/36e5).toFixed(3)+"",[{label:u("queue.jobDetails.generatedOn"),value:Y},{label:u("queue.jobDetails.totalGenerationTime"),value:oe}]}if(w.value==="failed"){const te=b.value?.executionTime,ue=te!==void 0?An(te):"";return te!==void 0&&(te/36e5).toFixed(3)+"",[{label:u("queue.jobDetails.queuedAt"),value:y.value},{label:u("queue.jobDetails.failedAfter"),value:ue}]}return[]}),{errorMessageValue:V,copyErrorMessage:j,reportJobError:H}=Lp({taskForJob:b,copyToClipboard:g,dialog:i});return(Q,te)=>(f(),T("div",Rp,[p("div",Wp,[p("span",zp,B(C(u)("queue.jobDetails.header")),1)]),p("div",Bp,[p("div",Fp,[(f(!0),T(le,null,we(E.value,ue=>(f(),T(le,{key:ue.label},[p("div",Up,B(ue.label),1),p("div",Gp,[p("span",jp,B(ue.value),1),ue.canCopy?(f(),G(X,{key:0,size:"icon",variant:"muted-textonly","aria-label":t.value,onClick:_e(c,["stop"])},{default:O(()=>te[0]||(te[0]=[p("i",{class:"icon-[lucide--copy] size-4"},null,-1)])),_:1},8,["aria-label"])):R("",!0)])],64))),128))]),W.value.length?(f(),T("div",Hp,[(f(!0),T(le,null,we(W.value,ue=>(f(),T(le,{key:ue.label},[p("div",qp,B(ue.label),1),p("div",Kp,[p("span",Qp,B(ue.value),1)])],64))),128))])):R("",!0),w.value==="failed"?(f(),T("div",Jp,[p("div",Yp,B(C(u)("queue.jobDetails.errorMessage")),1),p("div",Xp,[z(X,{class:"justify-start px-0",variant:"muted-textonly",size:"sm","icon-position":"right",onClick:_e(C(j),["stop"])},{default:O(()=>[p("span",null,B(t.value),1),te[1]||(te[1]=p("i",{class:"icon-[lucide--copy] block size-3.5 leading-none"},null,-1))]),_:1},8,["onClick"]),z(X,{class:"justify-start px-0",variant:"muted-textonly",size:"sm","icon-position":"right",onClick:_e(C(H),["stop"])},{default:O(()=>[p("span",null,B(C(u)("queue.jobDetails.report")),1),te[2]||(te[2]=p("i",{class:"icon-[lucide--message-circle-warning] block size-3.5 leading-none"},null,-1))]),_:1},8,["onClick"])]),p("div",Zp,B(C(V)),1)])):R("",!0)])]))}}),tf={class:"w-[300px] min-w-[260px] rounded-lg shadow-md"},of={class:"p-3"},nf={class:"relative aspect-square w-full overflow-hidden rounded-lg"},sf=["src","alt"],af={key:0,class:"absolute bottom-2 left-2 rounded px-2 py-0.5 text-xs text-text-primary",style:{background:"rgba(217, 217, 217, 0.40)",backdropFilter:"blur(2px)"}},lf={class:"mt-2 text-center"},rf=["title"],uf={key:0,class:"mt-1 text-[0.75rem] leading-normal text-text-secondary"},cf=q({inheritAttrs:!1,__name:"QueueAssetPreview",props:{imageUrl:{},name:{},timeLabel:{}},emits:["image-click"],setup(e){const o=L(null),t=L(null),s=L(null),a=n(()=>{const l=o.value;l&&(t.value=l.naturalWidth||null,s.value=l.naturalHeight||null)},"onImgLoad");return(l,i)=>(f(),T("div",tf,[p("div",of,[p("div",nf,[p("img",{ref_key:"imgRef",ref:o,src:l.imageUrl,alt:l.name,class:"h-full w-full cursor-pointer object-contain",onClick:i[0]||(i[0]=r=>l.$emit("image-click")),onLoad:a},null,40,sf),l.timeLabel?(f(),T("div",af,B(l.timeLabel),1)):R("",!0)]),p("div",lf,[p("div",{class:"truncate text-[0.875rem] leading-normal font-semibold text-text-primary",title:l.name},B(l.name),9,rf),t.value&&s.value?(f(),T("div",uf,B(t.value)+"x"+B(s.value),1)):R("",!0)])])]))}}),df={key:0,class:"absolute inset-0"},pf={class:"relative z-1 flex items-center gap-1"},ff={class:"relative inline-flex items-center justify-center"},mf={class:"inline-flex h-6 w-6 items-center justify-center overflow-hidden rounded-[6px]"},vf=["src"],gf={class:"relative z-1 min-w-0 flex-1"},hf=["title"],yf={class:"relative z-1 flex items-center gap-2 text-text-secondary"},bf={key:"actions",class:"inline-flex items-center gap-2 pr-1"},wf={key:"secondary",class:"pr-2"},kf=q({__name:"QueueJobItem",props:{jobId:{},workflowId:{default:void 0},state:{},title:{},rightText:{default:""},iconName:{default:void 0},iconImageUrl:{default:void 0},showClear:{type:Boolean,default:void 0},showMenu:{type:Boolean,default:void 0},progressTotalPercent:{default:void 0},progressCurrentPercent:{default:void 0},activeDetailsId:{default:null}},emits:["cancel","delete","menu","view","details-enter","details-leave"],setup(e,{emit:o}){const t=e,s=o,{t:a}=pe(),l=k(()=>Xe(a("g.cancel"))),i=k(()=>Xe(a("g.delete"))),r=k(()=>Xe(a("g.more"))),u=L(null),d=k(()=>t.activeDetailsId===t.jobId),m=n(()=>{w.value||s("details-enter",t.jobId)},"onRowEnter"),g=n(()=>s("details-leave",t.jobId),"onRowLeave"),c=n(()=>s("details-enter",t.jobId),"onPopoverEnter"),b=n(()=>s("details-leave",t.jobId),"onPopoverLeave"),w=L(!1),v=L(null),y=L(null),x=n(()=>{v.value!==null&&(clearTimeout(v.value),v.value=null)},"clearPreviewHideTimer"),_=n(()=>{y.value!==null&&(clearTimeout(y.value),y.value=null)},"clearPreviewShowTimer"),h=k(()=>t.state==="completed"&&!!t.iconImageUrl),S=n(()=>{h.value&&(x(),_(),y.value=window.setTimeout(()=>{w.value=!0,y.value=null},200))},"scheduleShowPreview"),M=n(()=>{x(),_(),v.value=window.setTimeout(()=>{w.value=!1,v.value=null},150)},"scheduleHidePreview"),I=n(()=>S(),"onIconEnter"),N=n(()=>M(),"onIconLeave"),$=n(()=>S(),"onPreviewEnter"),P=n(()=>M(),"onPreviewLeave"),F=L(null),U=n(()=>{const Y=u.value;if(!Y)return;const oe=Y.getBoundingClientRect(),se=8;F.value={top:oe.top,right:window.innerWidth-oe.left+se}},"updatePopoverPosition"),A=k(()=>d.value||w.value&&h.value);ne(A,Y=>{Y?Re(U):F.value=null},{immediate:!1});const E=L(!1),W=k(()=>t.iconName?t.iconName:Ct(t.state)),V=k(()=>t.state==="pending"&&W.value===Ct("pending")&&!t.iconImageUrl),j=k(()=>t.showClear!==void 0?t.showClear:t.state!=="completed"),H=n(()=>s("details-leave",t.jobId),"emitDetailsLeave"),Q=n(()=>{H(),s("cancel")},"onCancelClick"),te=n(()=>{H(),s("delete")},"onDeleteClick"),ue=n(Y=>{(t.showMenu===void 0||t.showMenu)&&s("menu",Y)},"onContextMenu");return(Y,oe)=>{const se=Ne("tooltip");return f(),T("div",{ref_key:"rowRef",ref:u,class:"relative",onMouseenter:m,onMouseleave:g,onContextmenu:_e(ue,["stop","prevent"])},[(f(),G(Lt,{to:"body"},[!w.value&&d.value&&F.value?(f(),T("div",{key:0,class:"fixed z-50",style:ge({top:`${F.value.top}px`,right:`${F.value.right}px`}),onMouseenter:c,onMouseleave:b},[z(ef,{"job-id":t.jobId,"workflow-id":t.workflowId},null,8,["job-id","workflow-id"])],36)):R("",!0)])),(f(),G(Lt,{to:"body"},[w.value&&h.value&&F.value?(f(),T("div",{key:0,class:"fixed z-50",style:ge({top:`${F.value.top}px`,right:`${F.value.right}px`}),onMouseenter:$,onMouseleave:P},[z(cf,{"image-url":Y.iconImageUrl,name:t.title,"time-label":Y.rightText||void 0,onImageClick:oe[0]||(oe[0]=Te=>s("view"))},null,8,["image-url","name","time-label"])],36)):R("",!0)])),p("div",{class:"relative flex items-center justify-between gap-2 overflow-hidden rounded-lg border border-secondary-background bg-secondary-background p-1 text-[12px] text-text-primary transition-colors duration-150 ease-in-out hover:border-secondary-background-hover hover:bg-secondary-background-hover",onMouseenter:oe[3]||(oe[3]=Te=>E.value=!0),onMouseleave:oe[4]||(oe[4]=Te=>E.value=!1)},[t.state==="running"&&(t.progressTotalPercent!==void 0||t.progressCurrentPercent!==void 0)?(f(),T("div",df,[t.progressTotalPercent!==void 0?(f(),T("div",{key:0,class:"pointer-events-none absolute inset-y-0 left-0 h-full bg-interface-panel-job-progress-primary transition-[width]",style:ge({width:`${t.progressTotalPercent}%`})},null,4)):R("",!0),t.progressCurrentPercent!==void 0?(f(),T("div",{key:1,class:"pointer-events-none absolute inset-y-0 left-0 h-full bg-interface-panel-job-progress-secondary transition-[width]",style:ge({width:`${t.progressCurrentPercent}%`})},null,4)):R("",!0)])):R("",!0),p("div",pf,[p("div",ff,[p("div",{class:"absolute left-1/2 top-1/2 size-10 -translate-x-1/2 -translate-y-1/2",onMouseenter:_e(I,["stop"]),onMouseleave:_e(N,["stop"])},null,32),p("div",mf,[Y.iconImageUrl?(f(),T("img",{key:0,src:Y.iconImageUrl,class:"h-full w-full object-cover"},null,8,vf)):(f(),T("i",{key:1,class:J(C(fe)(W.value,"size-4",V.value&&"animate-spin"))},null,2))])])]),p("div",gf,[p("div",{class:"truncate opacity-90",title:t.title},[Me(Y.$slots,"primary",{},()=>[Ie(B(t.title),1)])],8,hf)]),p("div",yf,[z(Gn,{mode:"out-in","enter-active-class":"transition-opacity transition-transform duration-150 ease-out","leave-active-class":"transition-opacity transition-transform duration-150 ease-in","enter-from-class":"opacity-0 translate-y-0.5","enter-to-class":"opacity-100 translate-y-0","leave-from-class":"opacity-100 translate-y-0","leave-to-class":"opacity-0 translate-y-0.5"},{default:O(()=>[E.value?(f(),T("div",bf,[t.state==="failed"&&j.value?ce((f(),G(X,{key:0,variant:"destructive",size:"icon","aria-label":C(a)("g.delete"),onClick:_e(te,["stop"])},{default:O(()=>oe[5]||(oe[5]=[p("i",{class:"icon-[lucide--trash-2] size-4"},null,-1)])),_:1},8,["aria-label"])),[[se,i.value,void 0,{top:!0}]]):t.state!=="completed"&&t.state!=="running"&&j.value?ce((f(),G(X,{key:1,variant:"destructive",size:"icon","aria-label":C(a)("g.cancel"),onClick:_e(Q,["stop"])},{default:O(()=>oe[6]||(oe[6]=[p("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"])),[[se,l.value,void 0,{top:!0}]]):t.state==="completed"?(f(),G(X,{key:2,variant:"textonly",size:"sm",onClick:oe[1]||(oe[1]=_e(Te=>s("view"),["stop"]))},{default:O(()=>[Ie(B(C(a)("menuLabels.View")),1)]),_:1})):R("",!0),t.showMenu===void 0||t.showMenu?ce((f(),G(X,{key:3,variant:"textonly",size:"icon-sm","aria-label":C(a)("g.more"),onClick:oe[2]||(oe[2]=_e(Te=>s("menu",Te),["stop"]))},{default:O(()=>oe[7]||(oe[7]=[p("i",{class:"icon-[lucide--more-horizontal] size-4"},null,-1)])),_:1},8,["aria-label"])),[[se,r.value,void 0,{top:!0}]]):R("",!0)])):t.state!=="running"?(f(),T("div",wf,[Me(Y.$slots,"secondary",{},()=>[Ie(B(t.rightText),1)])])):R("",!0)]),_:3}),t.state==="running"&&j.value?ce((f(),G(X,{key:0,variant:"destructive",size:"icon","aria-label":C(a)("g.cancel"),onClick:_e(Q,["stop"])},{default:O(()=>oe[8]||(oe[8]=[p("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"])),[[se,l.value,void 0,{top:!0}]]):R("",!0)])],32)],544)}}}),Cf={class:"flex flex-col gap-4 px-3 pb-4"},Sf={class:"text-[12px] leading-none text-text-secondary"},xf=q({__name:"JobGroupsList",props:{displayedJobGroups:{}},emits:["cancelItem","deleteItem","menu","viewItem"],setup(e,{emit:o}){const t=e,s=o,a=n(w=>{s("cancelItem",w)},"emitCancelItem"),l=n(w=>{s("deleteItem",w)},"emitDeleteItem"),i=L(null),r=L(null),u=L(null),d=n(()=>{r.value!==null&&(clearTimeout(r.value),r.value=null)},"clearHideTimer"),m=n(()=>{u.value!==null&&(clearTimeout(u.value),u.value=null)},"clearShowTimer"),g=n(w=>{d(),m(),u.value=window.setTimeout(()=>{i.value=w,u.value=null},200)},"onDetailsEnter"),c=n(w=>{d(),m(),r.value=window.setTimeout(()=>{i.value===w&&(i.value=null),r.value=null},150)},"onDetailsLeave"),b=n(()=>{d(),m(),i.value=null},"resetActiveDetails");return ne(()=>t.displayedJobGroups,w=>{const v=i.value;if(!v)return;w.some(x=>x.items.some(_=>_.id===v))||b()}),vt(b),(w,v)=>(f(),T("div",Cf,[(f(!0),T(le,null,we(w.displayedJobGroups,y=>(f(),T("div",{key:y.key,class:"flex flex-col gap-2"},[p("div",Sf,B(y.label),1),(f(!0),T(le,null,we(y.items,x=>(f(),G(kf,{key:x.id,"job-id":x.id,"workflow-id":x.taskRef?.workflow?.id,state:x.state,title:x.title,"right-text":x.meta,"icon-name":x.iconName,"icon-image-url":x.iconImageUrl,"show-clear":x.showClear,"show-menu":!0,"progress-total-percent":x.progressTotalPercent,"progress-current-percent":x.progressCurrentPercent,"running-node-name":x.runningNodeName,"active-details-id":i.value,onCancel:n(_=>a(x),"onCancel"),onDelete:n(_=>l(x),"onDelete"),onMenu:n(_=>w.$emit("menu",x,_),"onMenu"),onView:n(_=>w.$emit("viewItem",x),"onView"),onDetailsEnter:g,onDetailsLeave:c},null,8,["job-id","workflow-id","state","title","right-text","icon-name","icon-image-url","show-clear","progress-total-percent","progress-current-percent","running-node-name","active-details-id","onCancel","onDelete","onMenu","onView"]))),128))]))),128))]))}}),_f={class:"flex w-full flex-col gap-4"},Tf={class:"flex items-center justify-between px-3"},Nf={class:"ml-4 inline-flex items-center"},$f={class:"inline-flex h-6 items-center text-[12px] leading-none text-text-primary opacity-90"},If={class:"font-bold"},Mf={class:"ml-1"},Pf={class:"flex-1 min-h-0 overflow-y-auto"},Df=q({__name:"QueueOverlayExpanded",props:{headerTitle:{},showConcurrentIndicator:{type:Boolean},concurrentWorkflowCount:{},queuedCount:{},selectedJobTab:{},selectedWorkflowFilter:{},selectedSortMode:{},displayedJobGroups:{},hasFailedJobs:{type:Boolean}},emits:["showAssets","clearHistory","clearQueued","update:selectedJobTab","update:selectedWorkflowFilter","update:selectedSortMode","cancelItem","deleteItem","viewItem"],setup(e,{emit:o}){const t=o,{t:s}=pe(),a=L(null),l=L(null),{jobMenuEntries:i}=op(()=>a.value,g=>t("viewItem",g)),r=n(g=>{t("cancelItem",g)},"onCancelItemEvent"),u=n(g=>{t("deleteItem",g)},"onDeleteItemEvent"),d=n((g,c)=>{a.value=g,l.value?.open(c)},"onMenuItem"),m=n(async g=>{g.kind!=="divider"&&(g.onClick&&await g.onClick(),l.value?.hide())},"onJobMenuAction");return(g,c)=>(f(),T("div",_f,[z(cp,{"header-title":g.headerTitle,"show-concurrent-indicator":g.showConcurrentIndicator,"concurrent-workflow-count":g.concurrentWorkflowCount,onClearHistory:c[0]||(c[0]=b=>g.$emit("clearHistory"))},null,8,["header-title","show-concurrent-indicator","concurrent-workflow-count"]),p("div",Tf,[z(X,{class:"grow gap-1 justify-center",variant:"secondary",size:"sm",onClick:c[1]||(c[1]=b=>g.$emit("showAssets"))},{default:O(()=>[c[7]||(c[7]=p("i",{class:"icon-[comfy--image-ai-edit] size-4"},null,-1)),p("span",null,B(C(s)("sideToolbar.queueProgressOverlay.showAssets")),1)]),_:1}),p("div",Nf,[p("div",$f,[p("span",If,B(g.queuedCount),1),p("span",Mf,B(C(s)("sideToolbar.queueProgressOverlay.queuedSuffix")),1)]),g.queuedCount>0?(f(),G(X,{key:0,class:"ml-2",variant:"destructive",size:"icon","aria-label":C(s)("sideToolbar.queueProgressOverlay.clearQueued"),onClick:c[2]||(c[2]=b=>g.$emit("clearQueued"))},{default:O(()=>c[8]||(c[8]=[p("i",{class:"icon-[lucide--list-x] size-4"},null,-1)])),_:1},8,["aria-label"])):R("",!0)])]),z(Ep,{"selected-job-tab":g.selectedJobTab,"selected-workflow-filter":g.selectedWorkflowFilter,"selected-sort-mode":g.selectedSortMode,"has-failed-jobs":g.hasFailedJobs,"onUpdate:selectedJobTab":c[3]||(c[3]=b=>g.$emit("update:selectedJobTab",b)),"onUpdate:selectedWorkflowFilter":c[4]||(c[4]=b=>g.$emit("update:selectedWorkflowFilter",b)),"onUpdate:selectedSortMode":c[5]||(c[5]=b=>g.$emit("update:selectedSortMode",b))},null,8,["selected-job-tab","selected-workflow-filter","selected-sort-mode","has-failed-jobs"]),p("div",Pf,[z(xf,{"displayed-job-groups":g.displayedJobGroups,onCancelItem:r,onDeleteItem:u,onViewItem:c[6]||(c[6]=b=>g.$emit("viewItem",b)),onMenu:d},null,8,["displayed-job-groups"])]),z(fp,{ref_key:"jobContextMenuRef",ref:l,entries:C(i),onAction:m},null,8,["entries"])]))}}),Af={class:"w-[360px] rounded-2xl border border-interface-stroke bg-interface-panel-surface text-text-primary shadow-interface font-inter"},Ef={class:"flex items-center justify-between border-b border-interface-stroke px-4 py-4"},Lf={class:"m-0 text-[14px] font-normal leading-none"},Of={class:"flex flex-col gap-4 px-4 py-4 text-[14px] text-text-secondary"},Vf={class:"m-0"},Rf={class:"m-0"},Wf={class:"flex items-center justify-end px-4 py-4"},zf={class:"flex items-center gap-4 leading-none"},Bf=q({__name:"QueueClearHistoryDialog",setup(e){const o=gt(),t=_t(),{t:s}=pe(),{wrapWithErrorHandlingAsync:a}=Bt(),l=L(!1),i=a(async()=>{await t.clear(["history"]),o.closeDialog()},void 0,()=>{l.value=!1}),r=n(async()=>{l.value||(l.value=!0,await i())},"onConfirm"),u=n(()=>{o.closeDialog()},"onCancel");return(d,m)=>(f(),T("section",Af,[p("header",Ef,[p("p",Lf,B(C(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogTitle")),1),z(X,{size:"icon",variant:"muted-textonly","aria-label":C(s)("g.close"),onClick:u},{default:O(()=>m[0]||(m[0]=[p("i",{class:"icon-[lucide--x] block size-4 leading-none"},null,-1)])),_:1},8,["aria-label"])]),p("div",Of,[p("p",Vf,B(C(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogDescription")),1),p("p",Rf,B(C(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogAssetsNote")),1)]),p("footer",Wf,[p("div",zf,[z(X,{variant:"muted-textonly",size:"lg",onClick:u},{default:O(()=>[Ie(B(C(s)("g.cancel")),1)]),_:1}),z(X,{variant:"secondary",size:"lg",disabled:l.value,onClick:r},{default:O(()=>[Ie(B(C(s)("g.clear")),1)]),_:1},8,["disabled"])])])]))}}),Ff=n(()=>{const e=_t(),o=Ye(),t=k(()=>e.runningTasks.length>0||!o.isIdle),s=L(null),a=L(null),l=L(null),i=n(()=>{l.value!==null&&(clearTimeout(l.value),l.value=null)},"clearDismissTimer"),r=n(()=>{i(),l.value=window.setTimeout(()=>{a.value=null,l.value=null},6e3)},"startDismissTimer"),u=n(()=>{a.value=null,i()},"clearSummary");return ne(t,(m,g)=>{if(!g&&m&&(s.value=Date.now()),g&&!m){const c=s.value??0,b=e.historyTasks.filter(_=>{const h=_.executionEndTimestamp;return typeof h=="number"&&h>=c});if(!b.length){a.value=null,i();return}let w=0,v=0;const y=[];for(const _ of b){const h=cs(_,!1);if(h==="completed"){w++;const S=_.previewOutput;S?.isImage&&y.push(S.urlWithTimestamp)}else h==="failed"&&v++}if(w===0&&v===0){a.value=null,i();return}let x="mixed";v===0?x="allSuccess":w===0&&(x="allFailed"),a.value={mode:x,completedCount:w,failedCount:v,thumbnailUrls:y.slice(0,3)},r()}},{immediate:!0}),{summary:k(()=>a.value),clearSummary:u}},"useCompletionSummary");function Uf(e){const o=L(-1),t=Je([]);return{galleryActiveIndex:o,galleryItems:t,onViewItem:n(a=>{const l=e().flatMap(u=>{const d=u.previewOutput;return d&&d.supportsPreview?[d]:[]});if(!l.length)return;t.value=l;const i=a.taskRef?.previewOutput?.url,r=i?l.findIndex(u=>u.url===i):0;o.value=r>=0?r:0},"onViewItem")}}n(Uf,"useResultGallery");const Gf={class:J(["flex","justify-end","w-full","pointer-events-none"])},jf=q({__name:"QueueProgressOverlay",props:{expanded:{type:Boolean},menuHovered:{type:Boolean,default:!1}},emits:["update:expanded"],setup(e,{emit:o}){const t=e,s=o,{t:a}=pe(),l=_t(),i=Se(),r=Ye(),u=qo(),d=gt(),m=Ga(),g=Mi(),{wrapWithErrorHandlingAsync:c}=Bt(),{totalPercentFormatted:b,currentNodePercentFormatted:w,totalProgressStyle:v,currentNodeProgressStyle:y}=vl(),x=L(!1),_=k(()=>x.value||t.menuHovered),h=L(!1),S=k({get:n(()=>t.expanded===void 0?h.value:t.expanded,"get"),set:n($e=>{t.expanded===void 0&&(h.value=$e),s("update:expanded",$e)},"set")}),{summary:M,clearSummary:I}=Ff(),N=k(()=>M.value!==null),$=k(()=>l.runningTasks.length),P=k(()=>l.pendingTasks.length),F=k(()=>!r.isIdle),U=k(()=>$.value>0||F.value),A=k(()=>$.value+P.value),E=k(()=>S.value?"expanded":U.value?"active":N.value?"empty":"hidden"),W=k(()=>E.value==="expanded"||E.value==="empty"||E.value==="active"&&_.value),V=k(()=>E.value!=="hidden"),j=k(()=>W.value?"border-interface-stroke bg-interface-panel-surface shadow-interface":"border-transparent bg-transparent shadow-none"),H=k(()=>`flex items-center justify-end gap-4 transition-opacity duration-200 ease-in-out ${E.value==="active"&&_.value?"opacity-100 pointer-events-auto":"opacity-0 pointer-events-none"}`),Q=k(()=>U.value?`${A.value} ${a("sideToolbar.queueProgressOverlay.activeJobsSuffix")}`:a("sideToolbar.queueProgressOverlay.jobQueue")),te=k(()=>r.runningWorkflowCount),ue=k(()=>te.value>1),{selectedJobTab:Y,selectedWorkflowFilter:oe,selectedSortMode:se,hasFailedJobs:Te,filteredTasks:Ue,groupedJobItems:qe,currentNodeName:nt}=kp(),Ke=k(()=>qe.value),je=c(async $e=>{const ee=$e.taskRef?.promptId;ee&&($e.state==="running"||$e.state==="initialization"?(await Ce.interrupt(ee),await l.update()):$e.state==="pending"&&(await Ce.deleteItem("queue",ee),await l.update()))}),yt=c(async $e=>{$e.taskRef&&await l.delete($e.taskRef)}),{galleryActiveIndex:bt,galleryItems:uo,onViewItem:Gt}=Uf(()=>Ue.value),Pt=n($e=>{S.value=$e},"setExpanded"),ct=n(()=>{Pt(!0)},"openExpandedFromEmpty"),Dt=n(()=>{Pt(!0)},"viewAllJobs"),wt=n(()=>{ct(),I()},"onSummaryClick"),st=n(()=>{u.activeSidebarTabId="assets"},"openAssetsSidebar"),co=n(async $e=>{const ee=$e.taskRef,Z=ee?.promptId,kt=ee?.previewOutput;if(!Z||!kt)return;const ae=String(Z);if(st(),await Re(),await m.updateHistory(),!m.historyAssets.find(El=>El.id===ae))throw new Error("Asset not found in media assets panel");g.setSelection([ae])},"focusAssetInSidebar"),po=c(async $e=>{Gt($e),await co($e)}),jt=c(async()=>{await i.execute("Comfy.ClearPendingTasks")}),de=c(async()=>{const ee=l.runningTasks.map(Z=>Z.promptId).filter(Z=>typeof Z=="string"&&Z.length>0);ee.length&&await Promise.all(ee.map(Z=>Ce.interrupt(Z)))}),ke=n(()=>{d.showDialog({key:"queue-clear-history",component:Bf,dialogComponentProps:{headless:!0,closable:!1,closeOnEscape:!0,dismissableMask:!0,pt:{root:{class:"max-w-[360px] w-auto bg-transparent border-none shadow-none"},content:{class:"!p-0 bg-transparent"}}}})},"showClearHistoryDialog"),xe=n(()=>{ke()},"onClearHistoryFromMenu");return($e,ee)=>(f(),T(le,null,[ce(p("div",Gf,[p("div",{class:J(["pointer-events-auto flex w-[350px] min-w-[310px] max-h-[60vh] flex-col overflow-hidden rounded-lg border font-inter transition-colors duration-200 ease-in-out",j.value]),onMouseenter:ee[3]||(ee[3]=Z=>x.value=!0),onMouseleave:ee[4]||(ee[4]=Z=>x.value=!1)},[S.value?(f(),G(Df,{key:0,"selected-job-tab":C(Y),"onUpdate:selectedJobTab":ee[0]||(ee[0]=Z=>it(Y)?Y.value=Z:null),"selected-workflow-filter":C(oe),"onUpdate:selectedWorkflowFilter":ee[1]||(ee[1]=Z=>it(oe)?oe.value=Z:null),"selected-sort-mode":C(se),"onUpdate:selectedSortMode":ee[2]||(ee[2]=Z=>it(se)?se.value=Z:null),class:"flex-1 min-h-0","header-title":Q.value,"show-concurrent-indicator":ue.value,"concurrent-workflow-count":te.value,"queued-count":P.value,"displayed-job-groups":Ke.value,"has-failed-jobs":C(Te),onShowAssets:st,onClearHistory:xe,onClearQueued:C(jt),onCancelItem:C(je),onDeleteItem:C(yt),onViewItem:C(po)},null,8,["selected-job-tab","selected-workflow-filter","selected-sort-mode","header-title","show-concurrent-indicator","concurrent-workflow-count","queued-count","displayed-job-groups","has-failed-jobs","onClearQueued","onCancelItem","onDeleteItem","onViewItem"])):U.value?(f(),G(Fd,{key:1,"total-progress-style":C(v),"current-node-progress-style":C(y),"total-percent-formatted":C(b),"current-node-percent-formatted":C(w),"current-node-name":C(nt),"running-count":$.value,"queued-count":P.value,"bottom-row-class":H.value,onInterruptAll:C(de),onClearQueued:C(jt),onViewAllJobs:Dt},null,8,["total-progress-style","current-node-progress-style","total-percent-formatted","current-node-percent-formatted","current-node-name","running-count","queued-count","bottom-row-class","onInterruptAll","onClearQueued"])):C(M)?(f(),G(tp,{key:2,summary:C(M),onSummaryClick:wt},null,8,["summary"])):R("",!0)],34)],512),[[Qe,V.value]]),z(Pi,{"active-index":C(bt),"onUpdate:activeIndex":ee[5]||(ee[5]=Z=>it(bt)?bt.value=Z:null),"all-gallery-items":C(uo)},null,8,["active-index","all-gallery-items"])],64))}}),Hf=Mt("actionBarButton",()=>{const e=es();return{buttons:k(()=>e.extensions.flatMap(t=>t.actionBarButtons??[]))}}),qf={class:"flex h-full shrink-0 items-center gap-1"},Kf={key:0},Qf=q({__name:"ActionBarButtons",setup(e){const o=Hf(),s=Zo(en).smaller("sm");return(a,l)=>{const i=Ne("tooltip");return f(),T("div",qf,[(f(!0),T(le,null,we(C(o).buttons,(r,u)=>ce((f(),G(X,{key:u,"aria-label":r.tooltip||r.label,class:J([r.class,"h-7 rounded-full"]),variant:"muted-textonly",size:"sm",onClick:r.onClick},{default:O(()=>[p("i",{class:J(r.icon)},null,2),!C(s)&&r.label?(f(),T("span",Kf,B(r.label),1)):R("",!0)]),_:2},1032,["aria-label","class","onClick"])),[[i,r.tooltip,void 0,{bottom:!0}]])),128))])}}}),Jf={class:"current-user-popover w-80 -m-3 p-2 rounded-lg border border-border-default bg-base-background shadow-[1px_1px_8px_0_rgba(0,0,0,0.4)]"},Yf={class:"flex flex-col items-center px-0 py-3 mb-4"},Xf={class:"my-0 mb-1 truncate text-base font-bold text-base-foreground"},Zf={key:0,class:"my-0 truncate text-sm text-muted"},em={key:1,class:"my-0 text-xs text-foreground bg-secondary-background-hover rounded-full uppercase px-2 py-0.5 font-bold mt-2"},tm={key:0,class:"flex items-center gap-2 px-4 py-2"},om={key:1,class:"text-base font-semibold text-base-foreground"},nm={class:"icon-[lucide--circle-help] cursor-help text-base text-muted-foreground mr-auto"},sm={key:1,class:"flex justify-center px-4"},am={class:"text-sm text-base-foreground flex-1"},lm={class:"text-sm text-base-foreground flex-1"},im={key:0,class:"text-xs font-bold text-base-background bg-base-foreground px-1.5 py-0.5 rounded-full"},rm={class:"text-sm text-base-foreground flex-1"},um={class:"text-sm text-base-foreground flex-1"},cm={class:"text-sm text-base-foreground flex-1"},dm=q({__name:"CurrentUserPopover",emits:["close"],setup(e,{emit:o}){const t=o,{buildDocsUrl:s,docsPaths:a}=lo(),{userDisplayName:l,userEmail:i,userPhotoUrl:r,handleSignOut:u}=io(),d=ja(),m=Ha(),g=et(),{isActiveSubscription:c,subscriptionTierName:b,subscriptionTier:w,fetchStatus:v}=Xn(),y=od(),{locale:x}=pe(),_=k(()=>{const U=m.balance?.effective_balance_micros??m.balance?.amount_micros??0;return Di({cents:U,locale:x.value,numberOptions:{minimumFractionDigits:0,maximumFractionDigits:2}})}),h=k(()=>{const U=w.value;return U==="FOUNDERS_EDITION"||U==="STANDARD"||U==="CREATOR"}),S=n(()=>{g.showSettingsDialog("user"),t("close")},"handleOpenUserSettings"),M=n(()=>{y.show(),t("close")},"handleOpenPlansAndPricing"),I=n(()=>{g.showSettingsDialog("credits"),t("close")},"handleOpenPlanAndCreditsSettings"),N=n(()=>{g.showTopUpCreditsDialog(),t("close")},"handleTopUp"),$=n(()=>{window.open(s(a.partnerNodesPricing,{includeLocale:!0}),"_blank"),t("close")},"handleOpenPartnerNodesInfo"),P=n(async()=>{await u(),t("close")},"handleLogout"),F=n(async()=>{await v()},"handleSubscribed");return Ve(()=>{d.fetchBalance()}),(U,A)=>{const E=Ne("tooltip");return f(),T("div",Jf,[p("div",Yf,[z(rl,{class:"mb-1","photo-url":C(r),"pt:icon:class":{"text-2xl!":!C(r)},size:"large"},null,8,["photo-url","pt:icon:class"]),p("h3",Xf,B(C(l)||U.$t("g.user")),1),C(i)?(f(),T("p",Zf,B(C(i)),1)):R("",!0),C(b)?(f(),T("span",em,B(C(b)),1)):R("",!0)]),C(c)?(f(),T("div",tm,[A[0]||(A[0]=p("i",{class:"icon-[lucide--component] text-amber-400 text-sm"},null,-1)),C(m).isFetchingBalance?(f(),G(C(Qn),{key:0,width:"4rem",height:"1.25rem",class:"w-full"})):(f(),T("span",om,B(_.value),1)),ce(p("i",nm,null,512),[[E,{value:U.$t("credits.unified.tooltip"),showDelay:300}]]),z(X,{variant:"secondary",size:"sm",class:"text-base-foreground","data-testid":"add-credits-button",onClick:N},{default:O(()=>[Ie(B(U.$t("subscription.addCredits")),1)]),_:1})])):(f(),T("div",sm,[z(td,{fluid:!1,label:U.$t("subscription.subscribeToComfyCloud"),size:"sm",variant:"gradient",onSubscribed:F},null,8,["label"])])),z(C(Ns),{class:"my-2 mx-0"}),C(c)?(f(),T("div",{key:2,class:"flex items-center gap-2 px-4 py-2 cursor-pointer hover:bg-secondary-background-hover","data-testid":"partner-nodes-menu-item",onClick:$},[A[1]||(A[1]=p("i",{class:"icon-[lucide--tag] text-muted-foreground text-sm"},null,-1)),p("span",am,B(U.$t("subscription.partnerNodesCredits")),1)])):R("",!0),p("div",{class:"flex items-center gap-2 px-4 py-2 cursor-pointer hover:bg-secondary-background-hover","data-testid":"plans-pricing-menu-item",onClick:M},[A[2]||(A[2]=p("i",{class:"icon-[lucide--receipt-text] text-muted-foreground text-sm"},null,-1)),p("span",lm,B(U.$t("subscription.plansAndPricing")),1),h.value?(f(),T("span",im,B(U.$t("subscription.upgrade")),1)):R("",!0)]),C(c)?(f(),T("div",{key:3,class:"flex items-center gap-2 px-4 py-2 cursor-pointer hover:bg-secondary-background-hover","data-testid":"manage-plan-menu-item",onClick:I},[A[3]||(A[3]=p("i",{class:"icon-[lucide--file-text] text-muted-foreground text-sm"},null,-1)),p("span",rm,B(U.$t("subscription.managePlan")),1)])):R("",!0),p("div",{class:"flex items-center gap-2 px-4 py-2 cursor-pointer hover:bg-secondary-background-hover","data-testid":"user-settings-menu-item",onClick:S},[A[4]||(A[4]=p("i",{class:"icon-[lucide--settings-2] text-muted-foreground text-sm"},null,-1)),p("span",um,B(U.$t("userSettings.accountSettings")),1)]),z(C(Ns),{class:"my-2 mx-0"}),p("div",{class:"flex items-center gap-2 px-4 py-2 cursor-pointer hover:bg-secondary-background-hover","data-testid":"logout-menu-item",onClick:P},[A[5]||(A[5]=p("i",{class:"icon-[lucide--log-out] text-muted-foreground text-sm"},null,-1)),p("span",cm,B(U.$t("auth.signOut.signOut")),1)])])}}}),pm={class:"flex items-center gap-1 rounded-full hover:bg-interface-button-hover-surface"},gl=q({__name:"CurrentUserButton",setup(e){const{isLoggedIn:o,userPhotoUrl:t}=io(),s=L(null),a=k(()=>t.value??void 0),l=n(()=>{s.value?.hide()},"closePopover");return(i,r)=>(f(),T("div",null,[C(o)?(f(),G(X,{key:0,class:"p-1 hover:bg-transparent",variant:"muted-textonly","aria-label":i.$t("g.currentUser"),onClick:r[0]||(r[0]=u=>s.value?.toggle(u))},{default:O(()=>[p("div",pm,[z(rl,{"photo-url":a.value},null,8,["photo-url"]),r[1]||(r[1]=p("i",{class:"icon-[lucide--chevron-down] size-3 px-1"},null,-1))])]),_:1},8,["aria-label"])):R("",!0),z(C(Ze),{ref_key:"popover",ref:s,"show-arrow":!1,pt:{root:{class:"rounded-lg"}}},{default:O(()=>[z(dm,{onClose:l})]),_:1},512)]))}}),fm={class:"mb-1"},mm=["href"],hl=q({__name:"LoginButton",setup(e){const{isLoggedIn:o,handleSignIn:t}=io(),{buildDocsUrl:s}=lo(),a=s("/tutorials/api-nodes/overview#api-nodes",{includeLocale:!0}),l=L(null);let i=null,r=null;const u=n(g=>{i&&(clearTimeout(i),i=null),r&&(clearTimeout(r),r=null),r=setTimeout(()=>{l.value&&l.value.show(g,g.target)},200)},"showPopover"),d=n(()=>{i&&(clearTimeout(i),i=null)},"cancelHidePopover"),m=n(()=>{r&&(clearTimeout(r),r=null),i=setTimeout(()=>{l.value&&l.value.hide()},150)},"hidePopover");return(g,c)=>(f(),T(le,null,[C(o)?R("",!0):(f(),G(X,{key:0,variant:"secondary",size:"icon",class:"rounded-full bg-secondary-background text-base-foreground hover:bg-secondary-background-hover","aria-label":C(re)("g.login"),onClick:c[0]||(c[0]=b=>C(t)()),onMouseenter:u,onMouseleave:m},{default:O(()=>c[1]||(c[1]=[p("i",{class:"icon-[lucide--user] size-4"},null,-1)])),_:1},8,["aria-label"])),z(C(Ze),{ref_key:"popoverRef",ref:l,class:"p-2",onMouseout:m,onMouseover:d},{default:O(()=>[p("div",null,[p("div",fm,B(C(re)("auth.loginButton.tooltipHelp")),1),p("a",{href:C(a),target:"_blank",class:"text-neutral-500 hover:text-primary"},B(C(re)("auth.loginButton.tooltipLearnMore")),9,mm)])]),_:1},512)],64))}}),vm={class:"min-w-0 flex-1"},gm={class:"mx-1 flex flex-col items-end gap-1"},hm={class:"flex items-center gap-2"},ym={key:0,class:"pointer-events-auto flex h-12 shrink-0 items-center rounded-lg border border-interface-stroke bg-comfy-menu-bg px-2 shadow-interface"},bm={class:"actionbar-container pointer-events-auto flex gap-2 h-12 items-center rounded-lg border border-interface-stroke bg-comfy-menu-bg px-2 shadow-interface"},wm={key:0,class:"absolute -top-1 -right-1 min-w-[16px] rounded-full bg-primary-background py-0.25 text-[10px] font-medium leading-[14px] text-white"},km=q({__name:"TopMenuSection",setup(e){const o=tt(),t=no(),s=pt(),{isLoggedIn:a}=io(),l=Ge(),{t:i}=pe(),{toastErrorHandler:r}=Bt(),u=Se(),d=_t(),m=Pn(),{isOverlayExpanded:g}=Fe(m),c=L(!1),b=k(()=>d.pendingTasks.length),w=k(()=>Xe(i("sideToolbar.queueProgressOverlay.viewJobHistory"))),v=k(()=>Xe(i("menu.customNodesManager"))),{isOpen:y}=Fe(t),x=k(()=>Xe(i("rightSidePanel.togglePanel"))),_=L();Ve(()=>{_.value&&(K.menu.element.style.width="fit-content",_.value.appendChild(K.menu.element))});const h=n(()=>{u.execute("Comfy.Queue.ToggleOverlay")},"toggleQueueOverlay"),S=n(async()=>{try{await s.openManager({initialTab:Yt.All,showToastOnLegacyError:!1})}catch(M){try{r(M)}catch(I){console.error(M),console.error(I)}}},"openCustomNodeManager");return(M,I)=>{const N=Ne("tooltip");return C(o).focusMode?R("",!0):(f(),T("div",{key:0,class:"ml-1 flex gap-x-0.5 pt-1",onMouseenter:I[1]||(I[1]=$=>c.value=!0),onMouseleave:I[2]||(I[2]=$=>c.value=!1)},[p("div",vm,[z(Sd)]),p("div",gm,[p("div",hm,[C(s).shouldShowManagerButtons.value?(f(),T("div",ym,[ce((f(),G(X,{variant:"secondary",size:"icon","aria-label":C(i)("menu.customNodesManager"),onClick:S},{default:O(()=>I[3]||(I[3]=[p("i",{class:"icon-[lucide--puzzle] size-4"},null,-1)])),_:1},8,["aria-label"])),[[N,v.value,void 0,{bottom:!0}]])])):R("",!0),p("div",bm,[z(Qf),p("div",{ref_key:"legacyCommandsContainerRef",ref:_,class:"[&:not(:has(*>*:not(:empty)))]:hidden"},null,512),z(fd),ce((f(),G(X,{type:"destructive",size:"icon","aria-pressed":C(g),"aria-label":C(i)("sideToolbar.queueProgressOverlay.expandCollapsedQueue"),onClick:h},{default:O(()=>[I[4]||(I[4]=p("i",{class:"icon-[lucide--history] size-4"},null,-1)),b.value>0?(f(),T("span",wm,B(b.value),1)):R("",!0)]),_:1},8,["aria-pressed","aria-label"])),[[N,w.value,void 0,{bottom:!0}]]),C(a)?(f(),G(gl,{key:0,class:"shrink-0"})):C(l)?(f(),G(hl,{key:1})):R("",!0),C(y)?R("",!0):ce((f(),G(X,{key:2,type:"secondary",size:"icon","aria-label":C(i)("rightSidePanel.togglePanel"),onClick:C(t).togglePanel},{default:O(()=>I[5]||(I[5]=[p("i",{class:"icon-[lucide--panel-right] size-4"},null,-1)])),_:1},8,["aria-label","onClick"])),[[N,x.value,void 0,{bottom:!0}]])])]),z(jf,{expanded:C(g),"onUpdate:expanded":I[0]||(I[0]=$=>it(g)?g.value=$:null),"menu-hovered":c.value},null,8,["expanded","menu-hovered"])])],32))}}}),ds=q({__name:"ExtensionSlot",props:{extension:{}},setup(e){const o=e,t=n((s,a)=>{s.render(a)},"mountCustomExtension");return vt(()=>{o.extension.type==="custom"&&o.extension.destroy&&o.extension.destroy()}),(s,a)=>s.extension.type==="vue"?(f(),G(Zt(s.extension.component),{key:0})):(f(),T("div",{key:1,ref:n(l=>{l&&t(o.extension,l)},"ref")},null,512))}}),Cm={class:"flex h-full flex-col"},Sm={class:"flex w-full justify-between"},xm={class:"tabs-container font-inter"},_m={class:"font-normal"},Tm={class:"flex items-center gap-2"},Nm={class:"h-0 grow"},$m=q({__name:"BottomPanel",setup(e){const o=so(),t=et(),{t:s}=pe(),a=k(()=>{const d=o.activeBottomPanelTabId;return d==="shortcuts-essentials"||d==="shortcuts-view-controls"}),l=n(d=>d!=="shortcuts-essentials"&&d!=="shortcuts-view-controls","shouldCapitalizeTab"),i=n(d=>{const m=d.titleKey?s(d.titleKey):d.title||"";return l(d.id)?m.toUpperCase():m},"getTabDisplayTitle"),r=n(async()=>{t.showSettingsDialog("keybinding")},"openKeybindingSettings"),u=n(()=>{o.activePanel=null},"closeBottomPanel");return(d,m)=>(f(),T("div",Cm,[(f(),G(C(ui),{key:d.$i18n.locale,value:C(o).activeBottomPanelTabId,"onUpdate:value":m[0]||(m[0]=g=>C(o).activeBottomPanelTabId=g),style:{"--p-tabs-tablist-background":"var(--comfy-menu-bg)"}},{default:O(()=>[z(C(ci),{"pt:tab-list":"border-none h-full flex items-center py-2 border-b-1 border-solid",class:"bg-transparent"},{default:O(()=>[p("div",Sm,[p("div",xm,[(f(!0),T(le,null,we(C(o).bottomPanelTabs,g=>(f(),G(C(di),{key:g.id,value:g.id,class:J(["m-1 mx-2 border-none font-inter",{"tab-list-single-item":C(o).bottomPanelTabs.length===1}]),"pt:root":n(c=>({class:{"p-3 rounded-lg":!0,"pointer-events-none":C(o).bottomPanelTabs.length===1},style:{color:"var(--fg-color)",backgroundColor:!c.context.active||C(o).bottomPanelTabs.length===1?"":"var(--bg-color)"}}),"pt:root")},{default:O(()=>[p("span",_m,B(i(g)),1)]),_:2},1032,["value","class","pt:root"]))),128))]),p("div",Tm,[a.value?(f(),G(X,{key:0,variant:"muted-textonly",size:"sm",onClick:r},{default:O(()=>[m[1]||(m[1]=p("i",{class:"pi pi-cog"},null,-1)),Ie(" "+B(d.$t("shortcuts.manageShortcuts")),1)]),_:1})):R("",!0),z(X,{class:"justify-self-end",variant:"muted-textonly",size:"sm","aria-label":C(s)("g.close"),onClick:u},{default:O(()=>m[2]||(m[2]=[p("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])])]),_:1})]),_:1},8,["value"])),p("div",Nm,[C(o).bottomPanelVisible&&C(o).activeBottomPanelTab?(f(),G(ds,{key:0,extension:C(o).activeBottomPanelTab},null,8,["extension"])):R("",!0)])]))}}),Im=Ee($m,[["__scopeId","data-v-9d1ea2c9"]]);function yl(e={}){const{useTransform:o=!1}=e,s=me().getCanvas(),{canvasPosToClientPos:a,update:l}=Ai(s.canvas,s),i=ie();ne([()=>i.get("Comfy.Sidebar.Location"),()=>i.get("Comfy.Sidebar.Size"),()=>i.get("Comfy.UseNewMenu")],()=>l(),{flush:"post"});const r=L({}),u=n(m=>{const{pos:g,size:c,scale:b=s.ds.scale}=m,[w,v]=a(g),[y,x]=c;return o?{position:"fixed",transformOrigin:"0 0",transform:`scale(${b})`,left:`${w}px`,top:`${v}px`,width:`${y}px`,height:`${x}px`}:{position:"fixed",left:`${w}px`,top:`${v}px`,width:`${y*b}px`,height:`${x*b}px`}},"computeStyle");return{style:r,updatePosition:n(m=>{r.value=u(m)},"updatePosition")}}n(yl,"useAbsolutePosition");function Mm(e,o){const t=Math.max(e.x,o.x),s=Math.max(e.y,o.y),a=Math.min(e.x+e.width,o.x+o.width),l=Math.min(e.y+e.height,o.y+o.height);return t>=a||s>=l?null:[t,s,a-t,l-s]}n(Mm,"intersect");const Pm=n((e={})=>{const o=L({}),{margin:t=4}=e,s=n((l,i,r,u)=>{if(!r&&u){const{scale:d,offset:m}=u,g=Mm({x:l.left-i.left,y:l.top-i.top,width:l.width,height:l.height},{x:(u.x+m[0]-t)*d,y:(u.y+m[1]-t)*d,width:(u.width+2*t)*d,height:(u.height+2*t)*d});if(!g)return"";const c=(g[0]-l.left+i.left)/d+"px",b=(g[1]-l.top+i.top)/d+"px",w=g[2]/d+"px",v=g[3]/d+"px";return`polygon(0% 0%, 0% 100%, ${c} 100%, ${c} ${b}, calc(${c} + ${w}) ${b}, calc(${c} + ${w}) calc(${b} + ${v}), ${c} calc(${b} + ${v}), ${c} 100%, 100% 100%, 100% 0%)`}return""},"calculateClipPath");return{style:o,updateClipPath:n((l,i,r,u)=>{const d=l.getBoundingClientRect(),m=i.getBoundingClientRect(),g=s(d,m,r,u);o.value={clipPath:g||"none",willChange:"clip-path"}},"updateClipPath")}},"useDomClipping"),Dm=["title"],Am=q({__name:"DomWidget",props:{widgetState:{}},emits:["update:widgetValue"],setup(e,{emit:o}){const t=e.widgetState.widget,s=o,a=L(),l=L({}),{style:i,updatePosition:r}=yl({useTransform:!0}),{style:u,updateClipPath:d}=Pm(),m=me(),g=ie(),c=k(()=>g.get("Comfy.DOMClippingEnabled")),b=n(()=>{const h=m.canvas;if(!h||!a.value)return;const S=Object.values(h.selected_nodes??{})[0];if(!S){d(a.value,h.canvas,!1,void 0);return}const M=S===e.widgetState.widget.node,I=S?.renderArea,N=h.ds.offset,$=h.ds.scale,P=I?{x:I[0],y:I[1],width:I[2],height:I[3],scale:$,offset:[N[0],N[1]]}:void 0;d(a.value,h.canvas,M,P)},"updateDomClipping"),{left:w,top:v}=qn(m.getCanvas().canvas);ne([()=>e.widgetState,w,v],([h,S,M])=>{r(h),c.value&&b(),l.value={...i.value,...c.value?u.value:{},zIndex:h.zIndex,pointerEvents:h.readonly||t.computedDisabled?"none":"auto",opacity:t.computedDisabled?.5:1}},{deep:!0}),ne(()=>e.widgetState.visible,(h,S)=>{!h&&S&&t.options.onHide?.(t)}),Le(document,"mousedown",h=>{!go(t)||!e.widgetState.visible||!t.element.blur||t.element.contains(h.target)||t.element.blur()}),Ve(()=>{go(t)&&Le(t.element,t.options.selectOn??["focus","click"],()=>{const h=m.canvas;h?.selectNode(e.widgetState.widget.node),h?.bringToFront(e.widgetState.widget.node)})});const x=t.node.constructor.nodeData?.inputs?.[t.name]?.tooltip,_=n(()=>{e.widgetState.visible&&go(t)&&a.value&&(a.value.contains(t.element)||a.value.appendChild(t.element))},"mountElementIfVisible");return Ve(()=>{Re(()=>{_()}).catch(h=>{console.error("Error mounting DOM widget element:",h)})}),ne(()=>e.widgetState.visible,()=>{_()}),(h,S)=>ce((f(),T("div",{ref_key:"widgetElement",ref:a,class:"dom-widget",title:C(x),style:ge(l.value)},[C(Ei)(C(t))?(f(),G(Zt(C(t).component),It({key:0,"model-value":C(t).value,widget:C(t)},C(t).props,{"onUpdate:modelValue":S[0]||(S[0]=M=>s("update:widgetValue",M))}),null,16,["model-value","widget"])):R("",!0)],12,Dm)),[[Qe,h.widgetState.visible]])}}),Em=Ee(Am,[["__scopeId","data-v-781496d2"]]),Lm={class:"isolate"},Om=q({__name:"DomWidgets",setup(e){const o=Li(),t=k(()=>[...o.widgetStates.values()]),s=n(()=>{const l=a.canvas;if(!l)return;const i=l.low_quality,r=l.graph;for(const u of t.value){const d=u.widget;if(!d.isVisible()||!u.active){u.visible=!1;continue}const m=d.node,g=r?.nodes.includes(m);if(u.visible=!!g&&l.isNodeVisible(m)&&!(d.options.hideOnZoom&&i),u.visible&&m){const c=d.margin;u.pos=[m.pos[0]+c,m.pos[1]+c+d.y],u.size=[(d.width??m.width)-c*2,(d.computedHeight??50)-c*2],u.zIndex=l.graph?.nodes.indexOf(m)??-1,u.readonly=l.read_only}}},"updateWidgets"),a=me();return xo(()=>a.canvas,l=>l.onDrawForeground=eo(l.onDrawForeground,s),{immediate:!0}),(l,i)=>(f(),T("div",Lm,[(f(!0),T(le,null,we(t.value,r=>(f(),G(Em,{key:r.widget.id,"widget-state":r,"onUpdate:widgetValue":n(u=>r.widget.value=u,"onUpdate:widgetValue")},null,8,["widget-state","onUpdate:widgetValue"]))),128))]))}});function Vm(){const e=L(!1),o=n(()=>{e.value=!0},"showModal"),t=n(()=>{e.value=!1},"hideModal"),s=n(()=>{e.value=!e.value},"toggleModal"),a=k(()=>e.value);return{isModalVisible:e,showModal:o,hideModal:t,toggleModal:s,hasActivePopup:a}}n(Vm,"useZoomControls");function Rm(e,o){const t=new Map,s=L(""),a=L(0),l=L({bounds:!1,nodes:!1,connections:!1,viewport:!1}),i=De.getVersion(),r=new Map,u=Gl(()=>{o()},500),d=n(()=>{const v=e.value;if(!v||r.has(v.id))return;const y={onNodeAdded:v.onNodeAdded,onNodeRemoved:v.onNodeRemoved,onConnectionChange:v.onConnectionChange,onTrigger:v.onTrigger};r.set(v.id,y),v.onNodeAdded=function(x){y.onNodeAdded?.call(this,x),u()},v.onNodeRemoved=function(x){y.onNodeRemoved?.call(this,x),t.delete(x.id),u()},v.onConnectionChange=function(x){y.onConnectionChange?.call(this,x),u()},v.onTrigger=function(x){y.onTrigger?.call(this,x),x.type==="node:property:changed"&&(x.property==="mode"||x.property==="bgcolor"||x.property==="color")&&(t.delete(String(x.nodeId)),u())}},"setupEventListeners"),m=n(v=>{const y=v||e.value;if(!y)return;const x=r.get(y.id);if(!x){console.error("Attempted to cleanup event listeners for graph that was never set up");return}y.onNodeAdded=x.onNodeAdded,y.onNodeRemoved=x.onNodeRemoved,y.onConnectionChange=x.onConnectionChange,y.onTrigger=x.onTrigger,r.delete(y.id)},"cleanupEventListeners");return{updateFlags:l,setupEventListeners:d,cleanupEventListeners:m,checkForChanges:n(()=>{const v=e.value;if(!v)return!1;let y=!1,x=!1,_=!1;const h=qa.create(v),S=h.getNodeCount();S!==a.value&&(y=!0,a.value=S);const M=h.getNodes();for(const $ of M){const P=$.id,F=`${$.x},${$.y},${$.width},${$.height}`;t.get(P)!==F&&(x=!0,t.set(P,F))}const I=new Set(M.map($=>$.id));for(const[$]of t)I.has($)||(t.delete($),y=!0);const N=JSON.stringify(v.links||{});return N!==s.value&&(_=!0,s.value=N),(y||x)&&(l.value.bounds=!0,l.value.nodes=!0),_&&(l.value.connections=!0),y||x||_},"checkForChangesInternal"),init:n(()=>{d(),Ce.addEventListener("graphChanged",u),ne(i,()=>{u()})},"init"),destroy:n(()=>{m(),Ce.removeEventListener("graphChanged",u),t.clear()},"destroy"),clearCache:n(()=>{t.clear(),s.value="",a.value=0},"clearCache")}}n(Rm,"useMinimapGraph");function Wm(e,o,t,s,a,l,i){const r=L(!1),u=L({left:0,top:0,width:s,height:a}),d=n(()=>{if(!e.value)return;const y=e.value.getBoundingClientRect();u.value={left:y.left,top:y.top,width:y.width,height:y.height}},"updateContainerRect"),m=n(y=>{r.value=!0,d();const x=y.currentTarget;x instanceof HTMLElement&&x.setPointerCapture(y.pointerId),g(y)},"handlePointerDown"),g=n(y=>{if(!r.value||!i.value)return;const x=y.clientX-u.value.left,_=y.clientY-u.value.top,h=(s-o.value.width*t.value)/2,S=(a-o.value.height*t.value)/2,M=(x-h)/t.value+o.value.minX,I=(_-S)/t.value+o.value.minY;l(M,I)},"handlePointerMove"),c=n(y=>{if(r.value=!1,!y)return;const x=y.currentTarget;x instanceof HTMLElement&&x.hasPointerCapture(y.pointerId)&&x.releasePointerCapture(y.pointerId)},"releasePointer");return{isDragging:r,containerRect:u,updateContainerRect:d,handlePointerDown:m,handlePointerMove:g,handlePointerUp:c,handlePointerCancel:c,handleWheel:n(y=>{y.preventDefault();const x=i.value;if(!x)return;u.value.left===0&&u.value.top===0&&e.value&&d();const _=x.ds,h=y.deltaY>0?.9:1.1,S=_.scale*h;if(S<.1||S>10)return;const N=y.clientX-u.value.left,$=y.clientY-u.value.top,P=(s-o.value.width*t.value)/2,F=(a-o.value.height*t.value)/2,U=(N-P)/t.value+o.value.minX,A=($-F)/t.value+o.value.minY;_.scale=S,l(U,A)},"handleWheel")}}n(Wm,"useMinimapInteraction");function zm(e,o,t,s,a,l,i,r){const u=L(!0),d=L(!0),m=n(()=>{const b=o.value;if(!e.value||!b)return;const w=e.value.getContext("2d");if(!w)return;if(!b._nodes||b._nodes.length===0){w.clearRect(0,0,i,r);return}(u.value||a.value.nodes||a.value.connections)&&(Oi(e.value,b,{bounds:t.value,scale:s.value,settings:{nodeColors:l.nodeColors.value,showLinks:l.showLinks.value,showGroups:l.showGroups.value,renderBypass:l.renderBypass.value,renderError:l.renderError.value},width:i,height:r}),u.value=!1,a.value.nodes=!1,a.value.connections=!1)},"renderMinimap");return{needsFullRedraw:u,needsBoundsUpdate:d,renderMinimap:m,updateMinimap:n((b,w)=>{(d.value||a.value.bounds)&&(b(),d.value=!1,a.value.bounds=!1,u.value=!0,a.value.viewport=!0),(u.value||a.value.nodes||a.value.connections)&&m(),a.value.viewport&&(w(),a.value.viewport=!1)},"updateMinimap"),forceFullRedraw:n(()=>{u.value=!0,a.value.bounds=!0,a.value.nodes=!0,a.value.connections=!0,a.value.viewport=!0},"forceFullRedraw")}}n(zm,"useMinimapRenderer");function Bm(){const e=ie(),o=ut(),t=k(()=>e.get("Comfy.Minimap.NodeColors")),s=k(()=>e.get("Comfy.Minimap.ShowLinks")),a=k(()=>e.get("Comfy.Minimap.ShowGroups")),l=k(()=>e.get("Comfy.Minimap.RenderBypassState")),i=k(()=>e.get("Comfy.Minimap.RenderErrorState")),r=253,u=200,d=k(()=>o.completedActivePalette.light_theme),m=k(()=>({width:`${r}px`,height:`${u}px`,border:"1px solid var(--interface-stroke)",borderRadius:"8px"})),g=k(()=>({width:"210px",height:`${u}px`,border:"1px solid var(--interface-stroke)",borderRadius:"8px"}));return{nodeColors:t,showLinks:s,showGroups:a,renderBypass:l,renderError:i,containerStyles:m,panelStyles:g,isLightTheme:d}}n(Bm,"useMinimapSettings");function Fm(e,o,t,s){const a=L({minX:0,minY:0,maxX:0,maxY:0,width:0,height:0}),l=L(1),i=L({x:0,y:0,width:0,height:0}),r=L({width:0,height:0}),u=n(()=>{const y=e.value;if(!y)return;const x=y.canvas,_=window.devicePixelRatio||1;r.value={width:x.clientWidth||x.width/_,height:x.clientHeight||x.height/_}},"updateCanvasDimensions"),d=n(()=>{const y=qa.create(o.value);if(!y.hasData())return{minX:0,minY:0,maxX:100,maxY:100,width:100,height:100};const x=y.getBounds();return Vi(x)},"calculateGraphBounds"),m=n(()=>Ri(a.value,t,s),"calculateScale"),g=n(()=>{const y=e.value;if(!y)return;(r.value.width===0||r.value.height===0)&&u();const x=y.ds,_=r.value.width/x.scale,h=r.value.height/x.scale,S=-x.offset[0],M=-x.offset[1],I=(t-a.value.width*l.value)/2,N=(s-a.value.height*l.value)/2;i.value={x:(S-a.value.minX)*l.value+I,y:(M-a.value.minY)*l.value+N,width:_*l.value,height:h*l.value}},"updateViewport"),c=n(()=>{a.value=d(),l.value=m()},"updateBounds"),b=n((y,x)=>{const _=e.value;if(!_)return;(r.value.width===0||r.value.height===0)&&u();const h=_.ds,S=r.value.width/h.scale,M=r.value.height/h.scale;h.offset[0]=-(y-S/2),h.offset[1]=-(x-M/2),_.setDirty(!0,!0)},"centerViewOn"),{resume:w,pause:v}=oo(g);return{bounds:k(()=>a.value),scale:k(()=>l.value),viewportTransform:k(()=>i.value),canvasDimensions:k(()=>r.value),updateCanvasDimensions:u,updateViewport:g,updateBounds:c,centerViewOn:b,startViewportSync:w,stopViewportSync:v}}n(Fm,"useMinimapViewport");function ps({canvasRefMaybe:e,containerRefMaybe:o}={}){const t=me(),s=Ae(),a=ie(),l=L(null),i=e??Je(null),r=o??Je(null),u=L(!0),d=L(!1),m=250,g=200,c=k(()=>t.canvas),b=k(()=>s.activeSubgraph||c.value?.graph),w=Bm(),{nodeColors:v,showLinks:y,showGroups:x,renderBypass:_,renderError:h,containerStyles:S,panelStyles:M}=w,I=n(async(Q,te)=>{await a.set(Q,te),F.forceFullRedraw(),F.updateMinimap(N.updateBounds,N.updateViewport)},"updateOption"),N=Fm(c,b,m,g),$=Wm(r,N.bounds,N.scale,m,g,N.centerViewOn,c),P=Rm(b,()=>{F.forceFullRedraw(),F.updateMinimap(N.updateBounds,N.updateViewport)}),F=zm(i,b,N.bounds,N.scale,P.updateFlags,w,m,g),{pause:U,resume:A}=oo(async()=>{u.value&&await P.checkForChanges()&&F.updateMinimap(N.updateBounds,N.updateViewport)},{immediate:!1}),E=n(async()=>{d.value||(u.value=a.get("Comfy.Minimap.Visible"),c.value&&b.value&&(P.init(),r.value&&$.updateContainerRect(),N.updateCanvasDimensions(),window.addEventListener("resize",$.updateContainerRect),window.addEventListener("scroll",$.updateContainerRect),window.addEventListener("resize",N.updateCanvasDimensions),F.forceFullRedraw(),F.updateMinimap(N.updateBounds,N.updateViewport),N.updateViewport(),u.value&&(A(),N.startViewportSync()),d.value=!0))},"init"),W=n(()=>{U(),N.stopViewportSync(),P.destroy(),window.removeEventListener("resize",$.updateContainerRect),window.removeEventListener("scroll",$.updateContainerRect),window.removeEventListener("resize",N.updateCanvasDimensions),d.value=!1},"destroy");ne(c,async(Q,te)=>{te&&(P.cleanupEventListeners(),U(),N.stopViewportSync(),P.destroy(),window.removeEventListener("resize",$.updateContainerRect),window.removeEventListener("scroll",$.updateContainerRect),window.removeEventListener("resize",N.updateCanvasDimensions)),Q&&!d.value&&await E()},{immediate:!0,flush:"post"}),ne(b,(Q,te)=>{Q&&Q!==te&&(P.cleanupEventListeners(te||void 0),P.setupEventListeners(),F.forceFullRedraw(),F.updateMinimap(N.updateBounds,N.updateViewport))}),ne(u,async Q=>{Q?(r.value&&$.updateContainerRect(),N.updateCanvasDimensions(),F.forceFullRedraw(),await Re(),await Re(),F.updateMinimap(N.updateBounds,N.updateViewport),N.updateViewport(),A(),N.startViewportSync()):(U(),N.stopViewportSync())});const V=n(async()=>{u.value=!u.value,await a.set("Comfy.Minimap.Visible",u.value)},"toggle"),j=n(Q=>{l.value=Q},"setMinimapRef"),H=k(()=>{const Q=N.viewportTransform.value;return{transform:`translate(${Q.x}px, ${Q.y}px)`,width:`${Q.width}px`,height:`${Q.height}px`,border:`2px solid ${w.isLightTheme.value?"#E0E0E0":"#FFF"}`,backgroundColor:"rgba(255, 255, 255, 0.2)",willChange:"transform",backfaceVisibility:"hidden",perspective:"1000px",pointerEvents:"none"}});return{visible:k(()=>u.value),initialized:k(()=>d.value),containerStyles:S,viewportStyles:H,panelStyles:M,width:m,height:g,nodeColors:v,showLinks:y,showGroups:x,renderBypass:_,renderError:h,init:E,destroy:W,toggle:V,renderMinimap:F.renderMinimap,handlePointerDown:$.handlePointerDown,handlePointerMove:$.handlePointerMove,handlePointerUp:$.handlePointerUp,handlePointerCancel:$.handlePointerCancel,handleWheel:$.handleWheel,setMinimapRef:j,updateOption:I}}n(ps,"useMinimap");const Um={class:"flex items-center gap-1 pr-0.5"},Gm={class:"rounded-lg bg-interface-panel-selected-surface p-2 group-hover:bg-interface-button-hover-surface"},jm={class:"flex flex-col gap-1"},Hm={class:"flex items-center gap-2"},qm={class:"text-[9px] text-text-primary"},Km={class:"flex items-center gap-2"},Qm={class:"text-[9px] text-text-primary"},Jm=q({__name:"CanvasModeSelector",props:{buttonStyles:{}},setup(e){const o=L(),t=L(),s=Se(),a=me(),l=k(()=>a.canvas?.read_only??!1),i=k(()=>l.value?"icon-[lucide--hand]":"icon-[lucide--mouse-pointer-2]"),r=k(()=>s.formatKeySequence(s.getCommand("Comfy.Canvas.Unlock")).toUpperCase()),u=k(()=>s.formatKeySequence(s.getCommand("Comfy.Canvas.Lock")).toUpperCase()),d=n(c=>{const b=o.value?.$el||o.value;t.value?.toggle(c,b)},"toggle"),m=n(c=>{c==="select"&&l.value?s.execute("Comfy.Canvas.Unlock"):c==="hand"&&!l.value&&s.execute("Comfy.Canvas.Lock"),t.value?.hide()},"setMode"),g=k(()=>({root:{class:"absolute z-50 -translate-y-2"},content:{class:["mb-2 text-text-primary","shadow-lg border border-interface-stroke","bg-nav-background","rounded-lg","p-2 px-3","min-w-39","select-none"]}}));return(c,b)=>(f(),T(le,null,[z(X,{ref_key:"buttonRef",ref:o,variant:"secondary",class:"group h-8 rounded-none! bg-comfy-menu-bg p-0 transition-none! hover:rounded-lg! hover:bg-interface-button-hover-surface!",style:ge(c.buttonStyles),onClick:d},{default:O(()=>[p("div",Um,[p("div",Gm,[p("i",{class:J([i.value,"block h-4 w-4"])},null,2)]),b[2]||(b[2]=p("i",{class:"icon-[lucide--chevron-down] block h-4 w-4 pr-1.5"},null,-1))])]),_:1},8,["style"]),z(C(Ze),{ref_key:"popover",ref:t,"auto-z-index":!0,"base-z-index":1e3,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:g.value},{default:O(()=>[p("div",jm,[p("div",{class:"flex cursor-pointer items-center justify-between px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onClick:b[0]||(b[0]=w=>m("select"))},[p("div",Hm,[b[3]||(b[3]=p("i",{class:"icon-[lucide--mouse-pointer-2] h-4 w-4"},null,-1)),p("span",null,B(c.$t("graphCanvasMenu.select")),1)]),p("span",qm,B(r.value),1)]),p("div",{class:"flex cursor-pointer items-center justify-between rounded px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onClick:b[1]||(b[1]=w=>m("hand"))},[p("div",Km,[b[4]||(b[4]=p("i",{class:"icon-[lucide--hand] h-4 w-4"},null,-1)),p("span",null,B(c.$t("graphCanvasMenu.hand")),1)]),p("span",Qm,B(u.value),1)])])]),_:1},8,["pt"])],64))}}),Ym={key:0,class:"absolute right-0 bottom-[62px] z-1300 flex w-[250px] justify-center border-0! bg-inherit!"},Xm={class:"flex flex-col gap-1"},Zm={class:"font-medium"},ev={class:"text-[9px] text-text-primary"},tv={class:"font-medium"},ov={class:"text-[9px] text-text-primary"},nv={class:"font-medium"},sv={class:"text-[9px] text-text-primary"},av=q({__name:"ZoomControlsModal",props:{visible:{type:Boolean}},setup(e){const o=ps(),t=Se(),s=me(),{formatKeySequence:a}=Se(),l=e,i=L(null),r=n(y=>{const x=y.value;isNaN(x)||x<1||x>1e3||s.setAppZoomFromPercentage(x)},"applyZoom"),u=n(y=>{t.execute(y)},"executeCommand"),d=n(y=>{if(i.value)return;const x=n(()=>t.execute(y),"cmd");x(),i.value=window.setInterval(x,100)},"startRepeat"),m=n(()=>{i.value&&(clearInterval(i.value),i.value=null)},"stopRepeat"),g=k(()=>({...o.containerStyles.value,height:void 0,width:void 0})),c=k(()=>a(t.getCommand("Comfy.Canvas.ZoomIn"))),b=k(()=>a(t.getCommand("Comfy.Canvas.ZoomOut"))),w=k(()=>a(t.getCommand("Comfy.Canvas.FitView"))),v=L(null);return ne(()=>l.visible,async y=>{y&&(await Re(),v.value?.querySelector("input")?.focus())}),(y,x)=>y.visible?(f(),T("div",Ym,[p("div",{class:"w-4/5 rounded-lg border border-interface-stroke bg-interface-panel-surface p-2 text-text-primary shadow-lg select-none",style:ge(g.value),onClick:x[3]||(x[3]=_e(()=>{},["stop"]))},[p("div",Xm,[p("div",{class:"flex cursor-pointer items-center justify-between rounded px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onMousedown:x[0]||(x[0]=_=>d("Comfy.Canvas.ZoomIn")),onMouseup:m,onMouseleave:m},[p("span",Zm,B(y.$t("graphCanvasMenu.zoomIn")),1),p("span",ev,B(c.value),1)],32),p("div",{class:"flex cursor-pointer items-center justify-between rounded px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onMousedown:x[1]||(x[1]=_=>d("Comfy.Canvas.ZoomOut")),onMouseup:m,onMouseleave:m},[p("span",tv,B(y.$t("graphCanvasMenu.zoomOut")),1),p("span",ov,B(b.value),1)],32),p("div",{class:"flex cursor-pointer items-center justify-between rounded px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onClick:x[2]||(x[2]=_=>u("Comfy.Canvas.FitView"))},[p("span",nv,B(y.$t("zoomControls.zoomToFit")),1),p("span",sv,B(w.value),1)]),p("div",{ref_key:"zoomInputContainer",ref:v,class:"zoomInputContainer flex items-center gap-1 rounded bg-input-surface p-2"},[z(C(pi),{"default-value":C(s).appScalePercentage,min:1,max:1e3,"show-buttons":!1,"use-grouping":!1,unstyled:!0,"input-class":"bg-transparent border-none outline-hidden text-sm shadow-none my-0 w-full",fluid:"",onInput:r,onKeyup:Xt(r,["enter"])},null,8,["default-value"]),x[4]||(x[4]=p("span",{class:"flex-shrink-0 text-sm text-text-primary"},"%",-1))],512)])],4)])):R("",!0)}}),lv={class:"inline-flex items-center gap-1 px-2 text-xs"},iv=q({__name:"GraphCanvasMenu",setup(e){const{t:o}=pe(),t=Se(),{formatKeySequence:s}=Se(),a=me(),l=ie(),i=ro(),r=ps(),{isModalVisible:u,toggleModal:d,hideModal:m,hasActivePopup:g}=Vm(),c=k(()=>{const P=["borderRadius"],F=["borderRadius"],U={border:"none"},A=r.containerStyles.value,E={...Object.fromEntries(Object.entries(A).filter(([V])=>F.includes(V))),...U},W=Object.entries(A).filter(([V])=>P.includes(V)).reduce((V,[j,H])=>({...V,[j]:H}),{});return{buttonStyles:E,buttonGroupStyles:W}}),b=k(()=>l.get("Comfy.LinkRenderMode")===ve.HIDDEN_LINK),w=k(()=>s(t.getCommand("Comfy.Canvas.FitView")).toUpperCase()),v=k(()=>s(t.getCommand("Comfy.Canvas.ToggleMinimap")).toUpperCase()),y=k(()=>["bg-comfy-menu-bg",u.value?"not-active:bg-interface-panel-selected-surface!":"","hover:bg-interface-button-hover-surface!","p-0","h-8","w-15"]),x=k(()=>({"bg-comfy-menu-bg":!0,"hover:bg-interface-button-hover-surface!":!0,"not-active:bg-interface-panel-selected-surface!":l.get("Comfy.Minimap.Visible"),"p-0":!0,"w-8":!0,"h-8":!0})),_=k(()=>{const P=o("graphCanvasMenu.fitView"),F=w.value;return F?`${P} (${F})`:P}),h=k(()=>{const P=l.get("Comfy.Minimap.Visible")?o("zoomControls.hideMinimap"):o("zoomControls.showMinimap"),F=v.value;return F?`${P} (${F})`:P}),S=k(()=>b.value?o("graphCanvasMenu.showLinks"):o("graphCanvasMenu.hideLinks")),M=k(()=>b.value?o("graphCanvasMenu.showLinks"):o("graphCanvasMenu.hideLinks")),I=k(()=>["bg-comfy-menu-bg",b.value?"not-active:bg-interface-panel-selected-surface!":"","hover:bg-interface-button-hover-surface!","p-0","w-8","h-8"]);Ve(()=>{a.initScaleSync()});const N=n(()=>{t.execute("Comfy.Canvas.ToggleMinimap")},"onMinimapToggleClick"),$=n(()=>{t.execute("Comfy.Canvas.ToggleLinkVisibility")},"onLinkVisibilityToggleClick");return vt(()=>{a.cleanupScaleSync()}),(P,F)=>{const U=Ne("tooltip");return f(),T("div",null,[z(av,{visible:C(u),onClose:C(m)},null,8,["visible","onClose"]),C(g)?(f(),T("div",{key:0,class:"fixed inset-0 z-1200",onClick:F[0]||(F[0]=(...A)=>C(m)&&C(m)(...A))})):R("",!0),z(C(fi),{class:"absolute right-0 bottom-0 z-1200 flex-row gap-1 border-[1px] border-interface-stroke bg-comfy-menu-bg p-2",style:ge({...c.value.buttonGroupStyles}),onWheel:C(i).handleWheel},{default:O(()=>[z(Jm,{"button-styles":c.value.buttonStyles},null,8,["button-styles"]),F[6]||(F[6]=p("div",{class:"h-[27px] w-[1px] self-center bg-node-divider"},null,-1)),ce((f(),G(X,{variant:"secondary","aria-label":_.value,style:ge(c.value.buttonStyles),class:"h-8 w-8 bg-comfy-menu-bg p-0 hover:bg-interface-button-hover-surface!",onClick:F[1]||(F[1]=()=>C(t).execute("Comfy.Canvas.FitView"))},{default:O(()=>F[2]||(F[2]=[p("i",{class:"icon-[lucide--focus] h-4 w-4"},null,-1)])),_:1},8,["aria-label","style"])),[[U,_.value,void 0,{top:!0}]]),ce((f(),G(X,{variant:"secondary",class:J(y.value),"aria-label":C(o)("zoomControls.label"),"data-testid":"zoom-controls-button",style:ge(c.value.buttonStyles),onClick:C(d)},{default:O(()=>[p("span",lv,[p("span",null,B(C(a).appScalePercentage)+"%",1),F[3]||(F[3]=p("i",{class:"icon-[lucide--chevron-down] h-4 w-4"},null,-1))])]),_:1},8,["class","aria-label","style","onClick"])),[[U,C(o)("zoomControls.label"),void 0,{top:!0}]]),F[7]||(F[7]=p("div",{class:"h-[27px] w-[1px] self-center bg-node-divider"},null,-1)),ce((f(),G(X,{variant:"secondary","aria-label":h.value,"data-testid":"toggle-minimap-button",style:ge(c.value.buttonStyles),class:J(x.value),onClick:N},{default:O(()=>F[4]||(F[4]=[p("i",{class:"icon-[lucide--map] h-4 w-4"},null,-1)])),_:1},8,["aria-label","style","class"])),[[U,h.value,void 0,{top:!0}]]),ce((f(),G(X,{variant:"secondary",class:J(I.value),"aria-label":M.value,"data-testid":"toggle-link-visibility-button",style:ge(c.value.buttonStyles),onClick:$},{default:O(()=>F[5]||(F[5]=[p("i",{class:"icon-[lucide--route-off] h-4 w-4"},null,-1)])),_:1},8,["class","aria-label","style"])),[[U,{value:S.value,pt:{root:{style:"z-index: 2; transform: translateY(-20px);"}}},void 0,{top:!0}]])]),_:1},8,["style","onWheel"])])}}}),rv=q({__name:"NodeTooltip",setup(e){let o;const t=ht(),s=ie(),a=L(),l=L(""),i=L(),r=L();function u(){return l.value=""}n(u,"hideTooltip");async function d(c){if(!c)return;i.value=K.canvas.mouse[0]+"px",r.value=K.canvas.mouse[1]+"px",l.value=c,await Re();const b=a.value?.getBoundingClientRect();b&&(b.right>window.innerWidth&&(i.value=K.canvas.mouse[0]-b.width+"px"),b.top<0&&(r.value=K.canvas.mouse[1]+b.height+"px"))}n(d,"showTooltip");function m(){const{canvas:c}=K,b=c?.node_over;if(!b)return;const w=b.constructor,v=t.nodeDefsByName[b.type??""];if(w.title_mode!==ve.NO_TITLE&&c.graph_mouse[1]<b.pos[1])return d(v?.description);if(b.flags?.collapsed)return;const y=Wi(b,c.graph_mouse[0],c.graph_mouse[1],[0,0]);if(y!==-1){const h=b.inputs[y].name,S=he(`nodeDefs.${We(b.type??"")}.inputs.${We(h)}.tooltip`,v?.inputs[h]?.tooltip??"");return d(S)}const x=zi(b,c.graph_mouse[0],c.graph_mouse[1],[0,0]);if(x!==-1){const h=he(`nodeDefs.${We(b.type??"")}.outputs.${x}.tooltip`,v?.outputs[x]?.tooltip??"");return d(h)}const _=K.canvas.getWidgetAtCursor();if(_&&!go(_)){const h=he(`nodeDefs.${We(b.type??"")}.inputs.${We(_.name)}.tooltip`,v?.inputs[_.name]?.tooltip??"");return d(_.tooltip??h)}}return n(m,"onIdle"),Le(window,"mousemove",n(c=>{u(),clearTimeout(o),c.target.nodeName==="CANVAS"&&(o=window.setTimeout(m,s.get("LiteGraph.Node.TooltipDelay")))},"onMouseMove")),Le(window,"click",u),(c,b)=>l.value?(f(),T("div",{key:0,ref_key:"tooltipRef",ref:a,class:"node-tooltip",style:ge({left:i.value,top:r.value})},B(l.value),5)):R("",!0)}}),uv=Ee(rv,[["__scopeId","data-v-96b1458a"]]),cv=q({__name:"BypassButton",setup(e){const o=Se(),t=n(async()=>{await o.execute("Comfy.Canvas.ToggleSelectedNodes.Bypass")},"toggleBypass");return(s,a)=>{const l=Ne("tooltip");return ce((f(),G(X,{variant:"muted-textonly","aria-label":s.$t("commands.Comfy_Canvas_ToggleSelectedNodes_Bypass.label"),"data-testid":"bypass-button",class:"hover:bg-secondary-background",onClick:t},{default:O(()=>a[0]||(a[0]=[p("i",{class:"icon-[lucide--redo-dot] size-4"},null,-1)])),_:1},8,["aria-label"])),[[l,{value:s.$t("commands.Comfy_Canvas_ToggleSelectedNodes_Bypass.label"),showDelay:1e3},void 0,{top:!0}]])}}}),dv={class:"relative"},pv={class:"flex items-center gap-1 px-0"},fv={key:0,class:"color-picker-container absolute -top-10 left-1/2"},mv=["data-testid"],vv=q({__name:"ColorPickerButton",setup(e){const{t:o}=pe(),t=me(),s=ut(),a=Ae(),l=k(()=>s.completedActivePalette.light_theme),i=n(y=>Vt(y,{lightness:.5}),"toLightThemeColor"),r=L(!1),u={name:"noColor",localizedName:o("color.noColor"),value:{dark:ve.NODE_DEFAULT_BGCOLOR,light:i(ve.NODE_DEFAULT_BGCOLOR)}},d=[u,...Object.entries(He.node_colors).map(([y,x])=>({name:y,localizedName:o(`color.${y}`),value:{dark:x.bgcolor,light:i(x.bgcolor)}}))],m=L(null),g=n(y=>{const x=y?.name??u.name,_=x===u.name?null:He.node_colors[x];for(const h of t.selectedItems)Vo(h)&&h.setColorOption(_);t.canvas?.setDirty(!0,!0),c.value=_,r.value=!1,a.activeWorkflow?.changeTracker.checkState()},"applyColor"),c=L(null),b=k(()=>c.value?l.value?i(c.value?.bgcolor):c.value?.bgcolor:null),w=k(()=>c.value?.bgcolor?d.find(x=>x.value.dark===c.value?.bgcolor||x.value.light===c.value?.bgcolor)?.localizedName??u.localizedName:null),v=n(y=>{r.value=!1,m.value=null,c.value=Bi(y)},"updateColorSelectionFromNode");return ne(()=>t.selectedItems,y=>{v(y)},{immediate:!0}),(y,x)=>{const _=Ne("tooltip");return f(),T("div",dv,[ce((f(),G(X,{"data-testid":"color-picker-button",variant:"muted-textonly","aria-label":C(o)("g.color"),onClick:x[0]||(x[0]=()=>r.value=!r.value)},{default:O(()=>[p("div",pv,[p("i",{class:"pi pi-circle-fill",style:ge({color:b.value??""})},null,4),x[1]||(x[1]=p("i",{class:"icon-[lucide--chevron-down]"},null,-1))])]),_:1},8,["aria-label"])),[[_,{value:w.value??C(o)("color.noColor"),showDelay:1e3},void 0,{top:!0}]]),r.value?(f(),T("div",fv,[z(C(Ea),{"model-value":m.value,options:d,"option-label":"name","data-key":"value","onUpdate:modelValue":g},{option:O(({option:h})=>[ce(p("i",{class:"pi pi-circle-fill",style:ge({color:l.value?h.value.light:h.value.dark}),"data-testid":h.name},null,12,mv),[[_,h.localizedName,void 0,{top:!0}]])]),_:1},8,["model-value"])])):R("",!0)])}}}),gv=Ee(vv,[["__scopeId","data-v-2197e0a1"]]),hv=q({__name:"ConfigureSubgraph",setup(e){const o=no(),t=n(()=>{o.openPanel("subgraph")},"handleClick");return(s,a)=>{const l=Ne("tooltip");return ce((f(),G(X,{variant:"muted-textonly","aria-label":s.$t("commands.Comfy_Graph_EditSubgraphWidgets.label"),onClick:t},{default:O(()=>a[0]||(a[0]=[p("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["aria-label"])),[[l,{value:s.$t("commands.Comfy_Graph_EditSubgraphWidgets.label"),showDelay:1e3},void 0,{top:!0}]])}}}),yv=q({__name:"ConvertToSubgraphButton",setup(e){const o=Se(),{isSingleSubgraph:t,hasAnySelection:s}=Ft(),a=t,l=k(()=>s.value&&!t.value);return(i,r)=>{const u=Ne("tooltip");return C(a)?ce((f(),G(X,{key:0,variant:"muted-textonly","aria-label":i.$t("commands.Comfy_Graph_UnpackSubgraph.label"),"data-testid":"convert-to-subgraph-button",onClick:r[0]||(r[0]=()=>C(o).execute("Comfy.Graph.UnpackSubgraph"))},{default:O(()=>r[2]||(r[2]=[p("i",{class:"icon-[lucide--expand] size-4"},null,-1)])),_:1},8,["aria-label"])),[[u,{value:i.$t("commands.Comfy_Graph_UnpackSubgraph.label"),showDelay:1e3},void 0,{top:!0}]]):l.value?ce((f(),G(X,{key:1,variant:"muted-textonly",size:"icon","aria-label":i.$t("commands.Comfy_Graph_ConvertToSubgraph.label"),"data-testid":"convert-to-subgraph-button",onClick:r[1]||(r[1]=()=>C(o).execute("Comfy.Graph.ConvertToSubgraph"))},{default:O(()=>r[3]||(r[3]=[p("i",{class:"icon-[lucide--shrink] size-4"},null,-1)])),_:1},8,["aria-label"])),[[u,{value:i.$t("commands.Comfy_Graph_ConvertToSubgraph.label"),showDelay:1e3},void 0,{top:!0}]]):R("",!0)}}}),bv=q({__name:"DeleteButton",setup(e){const o=Se(),{selectedItems:t}=Ft(),s=k(()=>t.value.some(a=>a.removable!==!1));return(a,l)=>{const i=Ne("tooltip");return ce((f(),G(X,{variant:"muted-textonly","aria-label":a.$t("commands.Comfy_Canvas_DeleteSelectedItems.label"),"data-testid":"delete-button",onClick:l[0]||(l[0]=()=>C(o).execute("Comfy.Canvas.DeleteSelectedItems"))},{default:O(()=>l[1]||(l[1]=[p("i",{class:"icon-[lucide--trash-2]"},null,-1)])),_:1},8,["aria-label"])),[[Qe,s.value],[i,{value:a.$t("commands.Comfy_Canvas_DeleteSelectedItems.label"),showDelay:1e3},void 0,{top:!0}]])}}}),wv=q({__name:"ExecuteButton",setup(e){const{t:o}=pe(),t=Se(),s=me(),{selectedNodes:a}=Ft(),l=s.getCanvas(),i=L(!1),r=k(()=>a.value.filter(to).filter(Fi));function u(){if(this.selected&&this.constructor.nodeData?.output_node&&i.value)return{color:"orange",lineWidth:2,padding:10}}n(u,"outputNodeStokeStyle");const d=n(()=>{i.value=!0;for(const c of r.value)c.strokeStyles.outputNode=u;l.setDirty(!0)},"handleMouseEnter"),m=n(()=>{i.value=!1,l.setDirty(!0)},"handleMouseLeave"),g=n(async()=>{await t.execute("Comfy.QueueSelectedOutputNodes")},"handleClick");return(c,b)=>{const w=Ne("tooltip");return ce((f(),G(X,{variant:"primary","aria-label":C(o)("selectionToolbox.executeButton.tooltip"),onMouseenter:b[0]||(b[0]=()=>d()),onMouseleave:b[1]||(b[1]=()=>m()),onClick:g},{default:O(()=>b[2]||(b[2]=[p("i",{class:"icon-[lucide--play]"},null,-1)])),_:1},8,["aria-label"])),[[w,{value:C(o)("selectionToolbox.executeButton.tooltip"),showDelay:1e3},void 0,{top:!0}]])}}}),kv=q({__name:"ExtensionCommandButton",props:{command:{}},setup(e){const o=Se();return(t,s)=>{const a=Ne("tooltip");return ce((f(),G(X,{variant:"muted-textonly","aria-label":C(he)(`commands.${C(We)(t.command.id)}.label`,""),onClick:s[0]||(s[0]=()=>C(o).execute(t.command.id))},{default:O(()=>[p("i",{class:J([typeof t.command.icon=="function"?t.command.icon():t.command.icon])},null,2)]),_:1},8,["aria-label"])),[[a,{value:C(he)(`commands.${C(We)(t.command.id)}.label`,"")||void 0,showDelay:1e3},void 0,{top:!0}]])}}}),Cv=q({__name:"InfoButton",setup(e){const o=no(),t=n(()=>{o.openPanel("info")},"onInfoClick");return(s,a)=>{const l=Ne("tooltip");return ce((f(),G(X,{"data-testid":"info-button",variant:"muted-textonly","aria-label":s.$t("g.info"),onClick:t},{default:O(()=>a[0]||(a[0]=[p("i",{class:"icon-[lucide--info]"},null,-1)])),_:1},8,["aria-label"])),[[l,{value:s.$t("g.info"),showDelay:1e3},void 0,{top:!0}]])}}}),Sv=q({__name:"Load3DViewerButton",setup(e){const o=Se(),t=n(()=>{o.execute("Comfy.3DViewer.Open3DViewer")},"open3DViewer");return(s,a)=>{const l=Ne("tooltip");return ce((f(),G(X,{variant:"muted-textonly","aria-label":s.$t("commands.Comfy_3DViewer_Open3DViewer.label"),onClick:t},{default:O(()=>a[0]||(a[0]=[p("i",{class:"icon-[lucide--pencil]"},null,-1)])),_:1},8,["aria-label"])),[[l,{value:s.$t("commands.Comfy_3DViewer_Open3DViewer.label"),showDelay:1e3},void 0,{top:!0}]])}}}),xv=q({__name:"MaskEditorButton",setup(e){const o=Se(),{isSingleImageNode:t}=Ft(),s=n(()=>{o.execute("Comfy.MaskEditor.OpenMaskEditor")},"openMaskEditor");return(a,l)=>{const i=Ne("tooltip");return ce((f(),G(X,{variant:"muted-textonly","aria-label":a.$t("commands.Comfy_MaskEditor_OpenMaskEditor.label"),onClick:s},{default:O(()=>l[0]||(l[0]=[p("i",{class:"icon-[comfy--mask]"},null,-1)])),_:1},8,["aria-label"])),[[Qe,C(t)],[i,{value:a.$t("commands.Comfy_MaskEditor_OpenMaskEditor.label"),showDelay:1e3},void 0,{top:!0}]])}}}),_v=n(e=>e!=null&&typeof e=="object"&&"refresh"in e&&typeof e.refresh=="function","isRefreshableWidget"),Tv=n(()=>{const e=me(),o=L([]);be(()=>{o.value=e.selectedItems.filter(to)});const t=k(()=>o.value.flatMap(l=>{if(!l.widgets)return[];const i=[];for(const r of l.widgets)_v(r)&&i.push(r);return i})),s=k(()=>t.value.length>0);async function a(){s.value&&await Promise.all(t.value.map(l=>l.refresh()))}return n(a,"refreshSelected"),{isRefreshable:s,refreshSelected:a}},"useRefreshableSelection"),Nv=q({__name:"RefreshSelectionButton",setup(e){const{t:o}=pe(),{isRefreshable:t,refreshSelected:s}=Tv();return(a,l)=>{const i=Ne("tooltip");return ce((f(),G(X,{variant:"muted-textonly","aria-label":C(o)("g.refreshNode"),"data-testid":"refresh-button",onClick:C(s)},{default:O(()=>l[0]||(l[0]=[p("i",{class:"icon-[lucide--refresh-cw]"},null,-1)])),_:1},8,["aria-label","onClick"])),[[Qe,C(t)],[i,C(o)("g.refreshNode"),void 0,{top:!0}]])}}}),$v=q({__name:"SaveToSubgraphLibrary",setup(e){const o=Se(),t=me(),s=k(()=>t.selectedItems?.length===1&&t.selectedItems[0]instanceof ts);return(a,l)=>{const i=Ne("tooltip");return ce((f(),G(X,{variant:"muted-textonly","aria-label":a.$t("commands.Comfy_PublishSubgraph.label"),onClick:l[0]||(l[0]=()=>C(o).execute("Comfy.PublishSubgraph"))},{default:O(()=>l[1]||(l[1]=[p("i",{class:"icon-[lucide--book-open]"},null,-1)])),_:1},8,["aria-label"])),[[Qe,s.value],[i,{value:a.$t("commands.Comfy_PublishSubgraph.label"),showDelay:1e3},void 0,{top:!0}]])}}}),mo=L(!1),Iv=L(0),Mv=L(0),at=L(!1);let Et=!1,lt=null;function Fo(e){const o=e.canvas;if(!o)return null;const t=Array.from(o.selectedItems);if(t.length!==1)return null;const s=t[0];return to(s)?`N:${s.id}`:ns(s)?`G:${s.id}`:null}n(Fo,"buildSelectionSignature");function Pv(e){return lt?Fo(e)===lt:!1}n(Pv,"currentSelectionMatchesSignature");function Dv(e){const o=me(),t=o.getCanvas(),{getSelectableItems:s}=os(),{shouldRenderVueNodes:a}=Ko(),l=L({x:0,y:0}),i=L(!1),{left:r,top:u}=qn(t.canvas),d=k(()=>{const x=o.canvas?.state?.draggingItems??!1,_=a.value&&De.isDraggingVueNodes.value;return x||_}),m=n(()=>{const x=s();if(!x.size){i.value=!1;return}if(d.value){i.value=!1;return}i.value=!0;const _=[];for(const S of x)if(S.id!=null)if(a.value&&typeof S.id=="string"){const M=De.getNodeLayoutRef(S.id).value;M&&_.push([M.bounds.x,M.bounds.y,M.bounds.width,M.bounds.height])}else(S instanceof mt||S instanceof Rt)&&_.push([S.pos[0],S.pos[1]-ve.NODE_TITLE_HEIGHT,S.size[0],S.size[1]+ve.NODE_TITLE_HEIGHT]);const h=Ui(_);h&&(l.value={x:h.x+h.width/2,y:h.y-10},g())},"updateSelectionBounds"),g=n(()=>{if(!i.value)return;const{scale:x,offset:_}=t.ds,h=(l.value.x+_[0])*x+r.value,S=(l.value.y+_[1])*x+u.value;e.value&&(e.value.style.setProperty("--tb-x",`${h}px`),e.value.style.setProperty("--tb-y",`${S}px`))},"updateTransform"),{resume:c,pause:b}=oo(g);be(()=>{i.value?c():b()}),ne(()=>o.getCanvas().state.selectionChanged,x=>{x&&((at.value||lt)&&(at.value=!1,Et=!1,mo.value?lt=Fo(o):lt=null),m(),o.getCanvas().state.selectionChanged=!1)},{immediate:!0}),ne(()=>mo.value,x=>{x?lt=Fo(o):o.canvas?.state?.draggingItems||(lt=null,at.value&&(at.value=!1))});const w=n(x=>{if(x){v();return}y()},"handleDragStateChange"),v=n(()=>{if(i.value=!1,!mo.value){at.value=!1,Et=!1;return}if(Fo(o)!==lt&&(lt=null),mo.value=!1,Et=!0,at.value=!!lt,at.value){Iv.value++;return}Et=!1},"handleDragStart"),y=n(()=>{requestAnimationFrame(()=>{m();const x=Pv(o),_=Et&&i.value&&at.value&&x;at.value=_&&at.value,Et=!1,_&&Mv.value++})},"handleDragEnd");return ne(d,w),rt(()=>{Av()}),{visible:i}}n(Dv,"useSelectionToolboxPosition");function Av(){mo.value=!1,at.value=!1,Et=!1,lt=null}n(Av,"resetMoreOptionsState");const Ev=new Set(["Properties","Colors","Shapes","Title","Mode","Properties Panel","Copy (Clipspace)"]),Lv=new Set(["Rename","Copy","Duplicate","Clone","Run Branch","Pin","Unpin","Bypass","Remove Bypass","Mute","Convert to Subgraph","Frame selection","Minimize Node","Expand","Collapse","Node Info","Resize","Title","Properties Panel","Adjust Size","Color","Colors","Shape","Shapes","Mode","Open Image","Copy Image","Save Image","Open in Mask Editor","Edit Subgraph Widgets","Unpack Subgraph","Copy (Clipspace)","Paste (Clipspace)","Align Selected To","Distribute Nodes","Delete","Remove","Show Advanced","Hide Advanced"]);function Zs(e){return e.toLowerCase().replace(/^un/,"").trim()}n(Zs,"normalizeLabel");function Ov(e,o){const t=Zs(e),s={color:["color","colors"],shape:["shape","shapes"],pin:["pin","unpin"],delete:["remove","delete"],duplicate:["clone","duplicate"]};return o.some(a=>{if(!a.label)return!1;const l=Zs(a.label);if(l===t)return!0;for(const i of Object.values(s))if(i.includes(t)&&i.includes(l))return!0;return!1})}n(Ov,"isDuplicateItem");function Vv(e){return Lv.has(e)}n(Vv,"isCoreMenuItem");function Rv(e){const o=new Map,t=[];for(const l of e){if(l.type==="divider"||l.type==="category"){t.push(l);continue}if(!l.label){t.push(l);continue}o.has(l.label)||o.set(l.label,[]),o.get(l.label).push(l)}const s=[],a=new Set;for(const l of e){if(l.type==="divider"||l.type==="category"||!l.label){if(t.includes(l)){s.push(l);const u=t.indexOf(l);t.splice(u,1)}continue}if(a.has(l.label))continue;a.add(l.label);const i=o.get(l.label);if(i.length===1){s.push(i[0]);continue}const r=i.find(u=>u.source==="vue");r?s.push(r):s.push(i[0])}return s}n(Rv,"removeDuplicateMenuOptions");const Wv=["Rename","Copy","Duplicate","Run Branch","Pin","Unpin","Bypass","Remove Bypass","Mute","Convert to Subgraph","Frame selection","Minimize Node","Expand","Collapse","Resize","Clone","Node Info","Color","Open in Mask Editor","Open Image","Copy Image","Save Image","Copy (Clipspace)","Paste (Clipspace)","Convert to Group Node (Deprecated)"];function wn(e){const o=Wv.indexOf(e);return o===-1?999:o}n(wn,"getMenuItemOrder");function En(e){const o=Rv(e),t=new Map,s=[];let a;for(const m of o){if(m.type==="divider"||m.type==="category")continue;if((m.label==="Delete"||m.label==="Remove")&&!m.hasSubmenu){a=m;continue}m.label&&Vv(m.label)?t.set(m.label,m):s.push(m)}const l=[],i=Array.from(t.keys());i.sort((m,g)=>wn(m)-wn(g));const r=n(m=>m<=2?1:m<=8?2:m<=15?3:m<=17?4:5,"getSectionNumber");let u=0;for(const m of i){const g=t.get(m),c=wn(m),b=r(c);u>0&&b!==u&&l.push({type:"divider"}),l.push(g),u=b}const d=[];return d.push(...l),s.length>0&&(d.push({type:"divider"}),d.push({label:"Extensions",type:"category",disabled:!0}),d.push(...s)),a&&(d.push({type:"divider"}),d.push(a)),d}n(En,"buildStructuredMenu");function zv(e,o,t=!0){const s=[];for(const a of e){if(a===null){s.push({type:"divider"});continue}if(!a.content||Ev.has(a.content)||Ov(a.content,s))continue;const l={label:a.content,source:"litegraph"};if(a.disabled&&(l.disabled=!0),a.has_submenu){if(a.submenu?.options)l.hasSubmenu=!0,l.submenu=bl(a.submenu.options);else if(a.callback&&!a.disabled){l.hasSubmenu=!0;const i=Bv(a,o);i?l.submenu=i:console.warn("[ContextMenuConverter] Failed to capture submenu for:",a.content)}}else a.callback&&!a.disabled&&(l.action=()=>{try{a.callback?.call(a,a.value,{},void 0,void 0,a)}catch(i){console.error("Error executing context menu callback:",i)}});s.push(l)}return t?En(s):s}n(zv,"convertContextMenuToOptions");function Bv(e,o){let t,s;const a=ve.ContextMenu;try{ve.ContextMenu=function(l,i){return t=l,s=i,{close:n(()=>{},"close"),root:document.createElement("div")}};try{const l=new MouseEvent("click",{bubbles:!0,cancelable:!0,clientX:0,clientY:0}),i={close:n(()=>{},"close"),root:document.createElement("div")};e.callback?.call(e,e.value,{},l,i,o)}catch(l){console.warn("[ContextMenuConverter] Error executing callback for:",e.content,l)}}finally{ve.ContextMenu=a}if(t)return bl(t,s);console.warn("[ContextMenuConverter] No items captured for:",e.content)}n(Bv,"captureDynamicSubmenu");function bl(e,o){const t=[];for(const s of e){if(s===null)continue;if(typeof s=="string"){const i={label:s,action:n(()=>{try{o?.callback&&o.callback.call(null,s,o,void 0,void 0,o.extra)}catch(r){console.error("Error executing string item callback:",r)}},"action")};t.push(i);continue}if(!s.content)continue;const l={label:Fv(s.content),action:n(()=>{try{s.callback?.call(s,s.value,{},void 0,void 0,s)}catch(i){console.error("Error executing submenu callback:",i)}},"action")};s.disabled&&(l.disabled=!0),t.push(l)}return t}n(bl,"convertSubmenuToOptions");function Fv(e){return xt.sanitize(e,{ALLOWED_TAGS:[]}).trim()||e.replace(/<[^>]*>/g,"").trim()||e}n(Fv,"stripHtmlTags");function fs(){const e=me(),o=Ae();return{refreshCanvas:n(()=>{e.canvas?.emitBeforeChange(),e.canvas?.setDirty(!0,!0),e.canvas?.graph?.afterChange(),e.canvas?.emitAfterChange(),o.activeWorkflow?.changeTracker?.checkState()},"refreshCanvas")}}n(fs,"useCanvasRefresh");function ms(){const{t:e}=pe(),o=me(),t=ut(),s=fs(),a=k(()=>t.completedActivePalette.light_theme),l=n(b=>Vt(b,{lightness:.5}),"toLightThemeColor"),i={name:"noColor",localizedName:e("color.noColor"),value:{dark:ve.NODE_DEFAULT_BGCOLOR,light:l(ve.NODE_DEFAULT_BGCOLOR)}},r=[i,...Object.entries(He.node_colors).map(([b,w])=>({name:b,localizedName:e(`color.${b}`),value:{dark:w.bgcolor,light:l(w.bgcolor)}}))],u=[{name:"default",localizedName:e("shape.default"),value:Nt.ROUND},{name:"box",localizedName:e("shape.box"),value:Nt.BOX},{name:"card",localizedName:e("shape.CARD"),value:Nt.CARD}];return{colorOptions:r,shapeOptions:u,applyColor:n(b=>{const w=b?.name??i.name,v=w===i.name?null:He.node_colors[w];for(const y of o.selectedItems)Vo(y)&&y.setColorOption(v);s.refreshCanvas()},"applyColor"),applyShape:n(b=>{const w=Array.from(o.selectedItems).filter(v=>v instanceof mt);w.length!==0&&(w.forEach(v=>{v.shape=b.value}),s.refreshCanvas())},"applyShape"),getCurrentColor:n(()=>{const b=Array.from(o.selectedItems);if(b.length===0)return null;const w=b.find(x=>Vo(x));if(!w||!Vo(w))return null;const y=w.getColorOption()?.bgcolor??null;return r.find(x=>x.value.dark===y||x.value.light===y)??i},"getCurrentColor"),getCurrentShape:n(()=>{const b=Array.from(o.selectedItems).filter(y=>y instanceof mt);if(b.length===0)return null;const v=b[0].shape??Nt.ROUND;return u.find(y=>y.value===v)??u[0]},"getCurrentShape"),isLightTheme:a}}n(ms,"useNodeCustomization");function Uv(){const{t:e}=pe(),o=me(),t=Ae(),s=ie(),a=fs(),{shapeOptions:l,colorOptions:i,isLightTheme:r}=ms();return{getFitGroupToNodesOption:n(c=>({label:"Fit Group To Nodes",icon:"icon-[lucide--move-diagonal-2]",action:n(()=>{try{c.recomputeInsideNodes()}catch(w){console.warn("Failed to recompute group nodes:",w);return}const b=s.get("Comfy.GroupSelectedNodes.Padding");c.resizeTo(c.children,b),c.graph?.change(),o.canvas?.setDirty(!0,!0),t.activeWorkflow?.changeTracker?.checkState()},"action")}),"getFitGroupToNodesOption"),getGroupShapeOptions:n((c,b)=>({label:e("contextMenu.Shape"),icon:"icon-[lucide--box]",hasSubmenu:!0,submenu:l.map(w=>({label:w.localizedName,action:n(()=>{(c.nodes||[]).forEach(y=>y.shape=w.value),a.refreshCanvas(),b()},"action")}))}),"getGroupShapeOptions"),getGroupColorOptions:n((c,b)=>({label:e("contextMenu.Color"),icon:"icon-[lucide--palette]",hasSubmenu:!0,submenu:i.map(w=>({label:w.localizedName,color:r.value?w.value.light:w.value.dark,action:n(()=>{c.color=r.value?w.value.light:w.value.dark,a.refreshCanvas(),b()},"action")}))}),"getGroupColorOptions"),getGroupModeOptions:n((c,b)=>{const w=[];try{c.recomputeInsideNodes()}catch(_){return console.warn("Failed to recompute group nodes for mode options:",_),w}const v=c.nodes||[];if(!v.length)return w;let y=!0;for(let _=1;_<v.length;_++)if(v[_].mode!==v[0].mode){y=!1;break}const x=n((_,h)=>({label:e(`selectionToolbox.${_}`),icon:h===Oe.BYPASS?"icon-[lucide--ban]":h===Oe.NEVER?"icon-[lucide--zap-off]":"icon-[lucide--play]",action:n(()=>{v.forEach(S=>{S.mode=h}),o.canvas?.setDirty(!0,!0),c.graph?.change(),t.activeWorkflow?.changeTracker?.checkState(),b()},"action")}),"createModeAction");if(y)switch(v[0].mode){case Oe.ALWAYS:w.push(x("Set Group Nodes to Never",Oe.NEVER)),w.push(x("Bypass Group Nodes",Oe.BYPASS));break;case Oe.NEVER:w.push(x("Set Group Nodes to Always",Oe.ALWAYS)),w.push(x("Bypass Group Nodes",Oe.BYPASS));break;case Oe.BYPASS:w.push(x("Set Group Nodes to Always",Oe.ALWAYS)),w.push(x("Set Group Nodes to Never",Oe.NEVER));break;default:w.push(x("Set Group Nodes to Always",Oe.ALWAYS)),w.push(x("Set Group Nodes to Never",Oe.NEVER)),w.push(x("Bypass Group Nodes",Oe.BYPASS));break}else w.push(x("Set Group Nodes to Always",Oe.ALWAYS)),w.push(x("Set Group Nodes to Never",Oe.NEVER)),w.push(x("Bypass Group Nodes",Oe.BYPASS));return w},"getGroupModeOptions")}}n(Uv,"useGroupMenuOptions");function Gv(){const{t:e}=pe(),o=n(()=>{Se().execute("Comfy.MaskEditor.OpenMaskEditor")},"openMaskEditor"),t=n(i=>{if(!i?.imgs?.length)return;const r=i.imgs[i.imageIndex??0];if(!r)return;const u=new URL(r.src);u.searchParams.delete("preview"),window.open(u.toString(),"_blank")},"openImage"),s=n(async i=>{if(!i?.imgs?.length)return;const r=i.imgs[i.imageIndex??0];if(!r)return;const u=document.createElement("canvas"),d=u.getContext("2d");if(d){u.width=r.naturalWidth,u.height=r.naturalHeight,d.drawImage(r,0,0);try{const m=await new Promise(g=>{u.toBlob(g,"image/png")});if(!m){console.warn("Failed to create image blob");return}if(!navigator.clipboard?.write){console.warn("Clipboard API not available");return}await navigator.clipboard.write([new ClipboardItem({"image/png":m})])}catch(m){console.error("Failed to copy image to clipboard:",m)}}},"copyImage"),a=n(i=>{if(!i?.imgs?.length)return;const r=i.imgs[i.imageIndex??0];if(r)try{const u=new URL(r.src);u.searchParams.delete("preview"),an(u.toString())}catch(u){console.error("Failed to save image:",u)}},"saveImage");return{getImageMenuOptions:n(i=>i?.imgs?.length?[{label:e("contextMenu.Open in Mask Editor"),action:n(()=>o(),"action")},{label:e("contextMenu.Open Image"),icon:"icon-[lucide--external-link]",action:n(()=>t(i),"action")},{label:e("contextMenu.Copy Image"),icon:"icon-[lucide--copy]",action:n(()=>s(i),"action")},{label:e("contextMenu.Save Image"),icon:"icon-[lucide--download]",action:n(()=>a(i),"action")}]:[],"getImageMenuOptions")}}n(Gv,"useImageMenuOptions");function jv(){const{getSelectedNodes:e,toggleSelectedNodesMode:o}=os(),t=Se(),s=Ae();return{adjustNodeSize:n(()=>{e().forEach(m=>{const g=m.computeSize();m.setSize([g[0],g[1]])}),K.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"adjustNodeSize"),toggleNodeCollapse:n(()=>{e().forEach(m=>{m.collapse()}),K.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"toggleNodeCollapse"),toggleNodePin:n(()=>{e().forEach(m=>{m.pin(!m.pinned)}),K.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"toggleNodePin"),toggleNodeBypass:n(()=>{o(Oe.BYPASS),K.canvas.setDirty(!0,!0)},"toggleNodeBypass"),runBranch:n(async()=>{const d=e();Ka(d).length!==0&&await t.execute("Comfy.QueueSelectedOutputNodes")},"runBranch")}}n(jv,"useSelectedNodeActions");function Hv(){const{t:e}=pe(),{shapeOptions:o,applyShape:t,applyColor:s,colorOptions:a,isLightTheme:l}=ms(),{adjustNodeSize:i,toggleNodeCollapse:r,toggleNodePin:u,toggleNodeBypass:d,runBranch:m}=jv(),g=k(()=>o.map(h=>({label:h.localizedName,action:n(()=>t(h),"action")}))),c=k(()=>a.map(h=>({label:h.localizedName,color:l.value?h.value.light:h.value.dark,action:n(()=>s(h.name==="noColor"?null:h),"action")})));return{getNodeInfoOption:n(h=>({label:e("contextMenu.Node Info"),icon:"icon-[lucide--info]",action:h}),"getNodeInfoOption"),getAdjustSizeOption:n(()=>({label:e("contextMenu.Adjust Size"),icon:"icon-[lucide--move-diagonal-2]",action:i}),"getAdjustSizeOption"),getNodeVisualOptions:n((h,S)=>[{label:h.collapsed?e("contextMenu.Expand Node"):e("contextMenu.Minimize Node"),icon:h.collapsed?"icon-[lucide--maximize-2]":"icon-[lucide--minimize-2]",action:n(()=>{r(),S()},"action")},{label:e("contextMenu.Shape"),icon:"icon-[lucide--box]",hasSubmenu:!0,submenu:g.value,action:n(()=>{},"action")},{label:e("contextMenu.Color"),icon:"icon-[lucide--palette]",hasSubmenu:!0,submenu:c.value,isColorPicker:!0,action:n(()=>{},"action")}],"getNodeVisualOptions"),getPinOption:n((h,S)=>({label:h.pinned?e("contextMenu.Unpin"):e("contextMenu.Pin"),icon:h.pinned?"icon-[lucide--pin-off]":"icon-[lucide--pin]",action:n(()=>{u(),S()},"action")}),"getPinOption"),getBypassOption:n((h,S)=>({label:h.bypassed?e("contextMenu.Remove Bypass"):e("contextMenu.Bypass"),icon:"icon-[lucide--redo-dot]",shortcut:"Ctrl+B",action:n(()=>{d(),S()},"action")}),"getBypassOption"),getRunBranchOption:n(()=>({label:e("contextMenu.Run Branch"),icon:"icon-[lucide--play]",action:m}),"getRunBranchOption"),colorSubmenu:c}}n(Hv,"useNodeMenuOptions");function wl(){const e=ie(),o=ln(),{hasMultipleSelection:t}=Ft(),s=k(()=>t.value);return{frameNodes:n(()=>{const{canvas:l}=K;if(!l.selectedItems?.size)return;const i=new Rt,r=e.get("Comfy.GroupSelectedNodes.Padding");i.resizeTo(l.selectedItems,r),l.graph?.add(i),o.titleEditorTarget=i},"frameNodes"),canFrame:s}}n(wl,"useFrameNodes");function qv(){const{t:e}=pe(),o=me(),t=fs(),s=[{name:"top",localizedName:e("contextMenu.Top"),value:"top",icon:"icon-[lucide--align-start-vertical]"},{name:"bottom",localizedName:e("contextMenu.Bottom"),value:"bottom",icon:"icon-[lucide--align-end-vertical]"},{name:"left",localizedName:e("contextMenu.Left"),value:"left",icon:"icon-[lucide--align-start-horizontal]"},{name:"right",localizedName:e("contextMenu.Right"),value:"right",icon:"icon-[lucide--align-end-horizontal]"}],a=[{name:"horizontal",localizedName:e("contextMenu.Horizontal"),value:!0,icon:"icon-[lucide--align-center-horizontal]"},{name:"vertical",localizedName:e("contextMenu.Vertical"),value:!1,icon:"icon-[lucide--align-center-vertical]"}];return{alignOptions:s,distributeOptions:a,applyAlign:n(r=>{const u=Array.from(o.selectedItems).filter(m=>to(m));if(u.length===0)return;const d=ji(u,r.value);o.canvas?.repositionNodesVueMode(d),t.refreshCanvas()},"applyAlign"),applyDistribute:n(r=>{const u=Array.from(o.selectedItems).filter(m=>to(m));if(u.length<2)return;const d=Gi(u,r.value);o.canvas?.repositionNodesVueMode(d),t.refreshCanvas()},"applyDistribute")}}n(qv,"useNodeArrangement");function Kv(){const e=me(),o=$t(),t=et(),s=ln(),a=Ae();return{copySelection:n(()=>{const m=K.canvas;if(!m.selectedItems||m.selectedItems.size===0){o.add({severity:"warn",summary:re("g.nothingToCopy"),detail:re("g.selectItemsToCopy"),life:3e3});return}m.copyToClipboard(),o.add({severity:"success",summary:re("g.copied"),detail:re("g.itemsCopiedToClipboard"),life:2e3})},"copySelection"),pasteSelection:n(()=>{K.canvas.pasteFromClipboard({connectInputs:!1}),a.activeWorkflow?.changeTracker?.checkState()},"pasteSelection"),duplicateSelection:n(()=>{const m=K.canvas;if(!m.selectedItems||m.selectedItems.size===0){o.add({severity:"warn",summary:re("g.nothingToDuplicate"),detail:re("g.selectItemsToDuplicate"),life:3e3});return}m.copyToClipboard(),m.selectedItems.clear(),e.updateSelectedItems(),m.pasteFromClipboard({connectInputs:!1}),a.activeWorkflow?.changeTracker?.checkState()},"duplicateSelection"),deleteSelection:n(()=>{const m=K.canvas;if(!m.selectedItems||m.selectedItems.size===0){o.add({severity:"warn",summary:re("g.nothingToDelete"),detail:re("g.selectItemsToDelete"),life:3e3});return}m.deleteSelected(),m.setDirty(!0,!0),a.activeWorkflow?.changeTracker?.checkState()},"deleteSelection"),renameSelection:n(async()=>{const m=Array.from(e.selectedItems);if(m.length===1){const g=m[0];if(g instanceof mt){s.titleEditorTarget=g;return}const c="title"in g?g.title:"",b=await t.prompt({title:re("g.rename"),message:re("g.enterNewName"),defaultValue:c});if(b&&b!==c&&"title"in g){const w=g;w.title=b,K.canvas.setDirty(!0,!0),a.activeWorkflow?.changeTracker?.checkState()}return}if(m.length>1){const g=await t.prompt({title:re("g.batchRename"),message:re("g.enterBaseName"),defaultValue:"Item"});g&&(m.forEach((c,b)=>{if("title"in c){const w=c;w.title=`${g} ${b+1}`}}),K.canvas.setDirty(!0,!0),a.activeWorkflow?.changeTracker?.checkState());return}o.add({severity:"warn",summary:re("g.nothingToRename"),detail:re("g.selectItemsToRename"),life:3e3})},"renameSelection")}}n(Kv,"useSelectionOperations");function Qv(){const{t:e}=pe(),{copySelection:o,duplicateSelection:t,deleteSelection:s,renameSelection:a}=Kv(),{alignOptions:l,distributeOptions:i,applyAlign:r,applyDistribute:u}=qv(),{convertToSubgraph:d,unpackSubgraph:m,addSubgraphToLibrary:g}=Qa(),{frameNodes:c}=wl(),b=k(()=>l.map(S=>({label:S.localizedName,icon:S.icon,action:n(()=>r(S),"action")}))),w=k(()=>i.map(S=>({label:S.localizedName,icon:S.icon,action:n(()=>u(S),"action")})));return{getBasicSelectionOptions:n(()=>[{label:e("contextMenu.Rename"),action:a},{label:e("contextMenu.Copy"),shortcut:"Ctrl+C",action:o},{label:e("contextMenu.Duplicate"),shortcut:"Ctrl+D",action:t}],"getBasicSelectionOptions"),getSubgraphOptions:n(({hasSubgraphs:S,hasMultipleSelection:M})=>{const I={label:e("contextMenu.Convert to Subgraph"),icon:"icon-[lucide--shrink]",action:d,badge:Ln.NEW},N=[];return(!S||M)&&N.push(I),S&&N.push({label:e("contextMenu.Add Subgraph to Library"),icon:"icon-[lucide--folder-plus]",action:g},{label:e("contextMenu.Unpack Subgraph"),icon:"icon-[lucide--expand]",action:m}),N},"getSubgraphOptions"),getMultipleNodesOptions:n(()=>{const S=n(()=>{Se().execute("Comfy.GroupNode.ConvertSelectedNodesToGroupNode")},"convertToGroupNodes");return[{label:e("contextMenu.Convert to Group Node"),icon:"icon-[lucide--group]",action:S,badge:Ln.DEPRECATED},{label:e("g.frameNodes"),icon:"icon-[lucide--frame]",action:c}]},"getMultipleNodesOptions"),getDeleteOption:n(()=>({label:e("contextMenu.Delete"),icon:"icon-[lucide--trash-2]",shortcut:"Delete",action:s}),"getDeleteOption"),getAlignmentOptions:n(()=>[{label:e("contextMenu.Align Selected To"),icon:"icon-[lucide--align-start-horizontal]",hasSubmenu:!0,submenu:b.value,action:n(()=>{},"action")},{label:e("contextMenu.Distribute Nodes"),icon:"icon-[lucide--align-center-horizontal]",hasSubmenu:!0,submenu:w.value,action:n(()=>{},"action")}],"getAlignmentOptions"),alignSubmenu:b,distributeSubmenu:w}}n(Qv,"useSelectionMenuOptions");var Ln=(e=>(e.NEW="new",e.DEPRECATED="deprecated",e))(Ln||{});let Co=null;function Jv(e){Co?.toggle&&Co.toggle(e)}n(Jv,"toggleNodeOptions");function Yv(e){Co?.show&&Co.show(e)}n(Yv,"showNodeOptions");function On(e){Co=e}n(On,"registerNodeOptionsInstance");function Xv(e){return e.map(o=>o.type==="divider"||o.type==="category"?o:{...o,source:"vue"})}n(Xv,"markAsVueOptions");function Zv(){const{selectedItems:e,selectedNodes:o,nodeDef:t,showNodeHelp:s,hasSubgraphs:a,hasImageNode:l,hasOutputNodesSelected:i,hasMultipleSelection:r,computeSelectionFlags:u}=Ft(),d=me(),{getImageMenuOptions:m}=Gv(),{getNodeInfoOption:g,getNodeVisualOptions:c,getPinOption:b,getBypassOption:w,getRunBranchOption:v}=Hv(),{getFitGroupToNodesOption:y,getGroupColorOptions:x,getGroupModeOptions:_}=Uv(),{getBasicSelectionOptions:h,getSubgraphOptions:S,getMultipleNodesOptions:M}=Qv(),I=a,N=r,$=L(0),P=n(()=>{$.value++},"bump"),F=k(()=>{$.value;const A=u(),E=e.value.filter(ns),W=E.length===1&&o.value.length===0?E[0]:null,V=I.value,j=[];if(o.value.length===1&&!W&&d.canvas)try{const Y=o.value[0],oe=d.canvas.getNodeMenuOptions(Y);j.push(...zv(oe,Y,!1))}catch(Y){console.error("Error getting LiteGraph menu items:",Y)}const H=[],Q=h();if(H.push(...Q),H.push({type:"divider"}),i.value){const Y=v();H.push(Y)}if(!W){const Y=b(A,P),oe=w(A,P);H.push(Y),H.push(oe)}if(W){const Y=_(W,P);H.push(...Y)}if(H.push({type:"divider"}),H.push(...S({hasSubgraphs:V,hasMultipleSelection:N.value})),N.value&&H.push(...M()),W)H.push(y(W));else{const Y=c(A,P);Y.length>0&&H.push(Y[0])}if(H.push({type:"divider"}),t.value&&H.push(g(s)),W)H.push(x(W,P));else{const Y=c(A,P);Y.length>1&&H.push(Y[1]),Y.length>2&&H.push(Y[2])}H.push({type:"divider"}),l.value&&o.value.length>0&&(H.push(...m(o.value[0])),H.push({type:"divider"}));const te=Xv(H);if(j.length>0){const Y=[...j,...te];return En(Y)}return En(te)}),U=k(()=>F.value.filter(A=>A.hasSubmenu&&A.submenu));return{menuOptions:F,menuOptionsWithSubmenu:U,bump:P,hasSubgraphs:I,registerNodeOptionsInstance:On}}n(Zv,"useMoreOptionsMenu");const eg=["title","onClick"],tg={key:0,class:"icon-[lucide--check] size-4 flex-shrink-0"},og={key:1,class:"w-4 flex-shrink-0"},ng=q({__name:"ColorPickerMenu",props:{option:{}},emits:["submenu-click"],setup(e,{expose:o,emit:t}){const s=e,a=t,{getCurrentShape:l}=ms(),i=L();o({toggle:n((g,c)=>{i.value?.toggle(g,c)},"toggle")});const u=n(g=>{g.disabled||(a("submenu-click",g),i.value?.hide())},"handleSubmenuClick"),d=n(g=>{if(g.color)return!1;const c=l();return c?c.localizedName===g.label:!1},"isShapeSelected"),m=k(()=>s.option.submenu&&s.option.submenu.length>0&&s.option.submenu.every(g=>g.color&&!g.icon));return(g,c)=>(f(),G(C(Ze),{ref_key:"popoverRef",ref:i,"auto-z-index":!0,"base-z-index":1100,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-60"},content:{class:["text-base-foreground rounded-lg","shadow-lg border border-base-background","bg-interface-panel-surface"]}}},{default:O(()=>[p("div",{class:J(m.value?"flex flex-col gap-1 p-2":"flex flex-col p-2 min-w-40")},[(f(!0),T(le,null,we(g.option.submenu,b=>(f(),T("div",{key:b.label,class:J(C(fe)("hover:bg-secondary-background-hover rounded cursor-pointer",m.value?"w-7 h-7 flex items-center justify-center":"flex items-center gap-2 px-3 py-1.5 text-sm",b.disabled?"cursor-not-allowed pointer-events-none text-node-icon-disabled":"hover:bg-secondary-background-hover")),title:b.label,onClick:n(w=>u(b),"onClick")},[b.color?(f(),T("div",{key:0,class:"size-5 rounded-full border border-border-default",style:ge({backgroundColor:b.color})},null,4)):b.color?R("",!0):(f(),T(le,{key:1},[d(b)?(f(),T("i",tg)):(f(),T("div",og)),p("span",null,B(b.label),1)],64))],10,eg))),128))],2)]),_:1},512))}}),sg=["onClick"],ag={class:"flex-1"},lg={key:1,class:"flex h-3.5 min-w-3.5 items-center justify-center rounded bg-interface-menu-keybind-surface-default px-1 py-0 text-xs"},ig={key:2,class:"icon-[lucide--chevron-right] size-4 opacity-60"},rg=q({__name:"NodeContextMenu",setup(e,{expose:o}){const t=L(),s=L(),a=L(!1),{menuOptions:l,bump:i}=Zv(),r=me(),u=L({x:0,y:0}),d=r.getCanvas(),{left:m,top:g}=qn(d.canvas);let c=0,b=0,w=0;const v=n(()=>{if(!a.value)return;const W=t.value?.container;if(!W)return;const{scale:V,offset:j}=d.ds;if(V===c&&j[0]===b&&j[1]===w)return;c=V,b=j[0],w=j[1];const H=(u.value.x+j[0])*V+m.value,Q=(u.value.y+j[1])*V+g.value;W.style.left=`${H}px`,W.style.top=`${Q}px`},"updateMenuPosition"),{resume:y,pause:x}=oo(v,{immediate:!1});be(()=>{a.value?y():x()}),Le(window,"touchstart",E=>{if(!a.value||!t.value)return;const W=E.target,V=t.value,j=V.container||V.$el;j&&!j.contains(W)&&N()},{passive:!0});const _=k(()=>l.value.find(E=>E.isColorPicker));function h(E){return!!E.isColorPicker}n(h,"isColorOption");function S(E){if(E.type==="divider")return{separator:!0};const W=h(E),V={label:E.label,icon:E.icon,disabled:E.disabled,shortcut:E.shortcut,isColorSubmenu:W,originalOption:E};return E.hasSubmenu&&E.submenu&&!W&&(V.items=E.submenu.map(j=>({label:j.label,icon:j.icon,disabled:j.disabled,command:n(()=>{j.action(),N()},"command")}))),!E.hasSubmenu&&E.action&&(V.command=()=>{E.action?.(),N()}),V}n(S,"convertToMenuItem");const M=k(()=>l.value.map(S));function I(E){i();const W=E.clientX-m.value,V=E.clientY-g.value,{scale:j,offset:H}=d.ds;u.value={x:W/j-H[0],y:V/j-H[1]},a.value=!0,t.value?.show(E)}n(I,"show");function N(){t.value?.hide()}n(N,"hide");function $(E){a.value?N():I(E)}n($,"toggle"),o({toggle:$,hide:N,isOpen:a,show:I});function P(E){E.stopPropagation(),E.preventDefault();const W=Array.from(E.currentTarget.children).find(V=>V.classList.contains("icon-[lucide--chevron-right]"));s.value?.toggle(E,W)}n(P,"showColorPopover");function F(E){E.action(),N()}n(F,"handleColorSelect");function U(){a.value=!0}n(U,"onMenuShow");function A(){a.value=!1}return n(A,"onMenuHide"),Ve(()=>{On({toggle:$,show:I,hide:N,isOpen:a})}),rt(()=>{On(null)}),(E,W)=>(f(),T(le,null,[z(C(La),{ref_key:"contextMenu",ref:t,model:M.value,class:"max-h-[80vh] md:max-h-none overflow-y-auto md:overflow-y-visible",onShow:U,onHide:A},{item:O(({item:V,props:j,hasSubmenu:H})=>[p("a",It(j.action,{class:"flex items-center gap-2 px-3 py-1.5",onClick:n(Q=>V.isColorSubmenu?P(Q):void 0,"onClick")}),[V.icon?(f(),T("i",{key:0,class:J([V.icon,"size-4"])},null,2)):R("",!0),p("span",ag,B(V.label),1),V.shortcut?(f(),T("span",lg,B(V.shortcut),1)):R("",!0),H||V.isColorSubmenu?(f(),T("i",ig)):R("",!0)],16,sg)]),_:1},8,["model"]),_.value?(f(),G(ng,{ref_key:"colorPickerMenu",ref:s,key:"color-picker-menu",option:_.value,onSubmenuClick:F},null,8,["option"])):R("",!0)],64))}}),ug=q({__name:"FrameNodes",setup(e){const{frameNodes:o}=wl();return(t,s)=>{const a=Ne("tooltip");return ce((f(),G(X,{variant:"muted-textonly","aria-label":t.$t("g.frameNodes"),onClick:C(o)},{default:O(()=>s[0]||(s[0]=[p("i",{class:"icon-[lucide--frame]"},null,-1)])),_:1},8,["aria-label","onClick"])),[[a,{value:t.$t("g.frameNodes"),showDelay:1e3},void 0,{top:!0}]])}}}),cg=q({__name:"NodeOptionsButton",setup(e){const o=n(t=>{Jv(t)},"handleClick");return(t,s)=>{const a=Ne("tooltip");return ce((f(),G(X,{"data-testid":"more-options-button",variant:"muted-textonly","aria-label":t.$t("g.moreOptions"),onClick:o},{default:O(()=>s[0]||(s[0]=[p("i",{class:"icon-[lucide--more-vertical]"},null,-1)])),_:1},8,["aria-label"])),[[a,{value:t.$t("g.moreOptions"),showDelay:1e3},void 0,{top:!0}]])}}}),dg={},pg={class:"h-6 w-px self-center bg-border-default"};function fg(e,o){return f(),T("div",pg)}n(fg,"_sfc_render$1");const ea=Ee(dg,[["render",fg]]),mg=q({__name:"SelectionToolbox",setup(e){const o=Se(),t=me(),s=Hi(),a=ro(),l=L(),{visible:i}=Dv(l),r=k(()=>{const E=new Set(t.selectedItems.map(W=>s.invokeExtensions("getSelectionToolboxCommands",W).flat()).flat());return Array.from(E).map(W=>o.getCommand(W)).filter(W=>W!==void 0)}),{hasAnySelection:u,hasMultipleSelection:d,isSingleNode:m,isSingleSubgraph:g,isSingleImageNode:c,hasAny3DNodeSelected:b,hasOutputNodesSelected:w,nodeDef:v}=Ft(),y=k(()=>!!v.value),x=k(()=>u.value),_=k(()=>u.value),h=k(()=>d.value),S=k(()=>g.value),M=k(()=>m.value||g.value||d.value),I=k(()=>b.value),N=k(()=>c.value),$=k(()=>u.value),P=k(()=>u.value),F=k(()=>w.value),U=k(()=>x.value||_.value||h.value||S.value),A=k(()=>M.value);return(E,W)=>(f(),T(le,null,[p("div",{ref_key:"toolboxRef",ref:l,style:{transform:"translate(var(--tb-x), var(--tb-y))"},class:"pointer-events-none fixed top-0 left-0 z-40"},[z(Gn,{name:"slide-up"},{default:O(()=>[C(i)?(f(),G(C(Da),{key:0,class:"selection-toolbox pointer-events-auto rounded-lg border border-interface-stroke bg-interface-panel-surface",pt:{header:"hidden",content:"p-2 h-12 flex flex-row gap-1"},onWheel:C(a).forwardEventToCanvas},{default:O(()=>[$.value?(f(),G(bv,{key:0})):R("",!0),y.value&&U.value?(f(),G(ea,{key:1})):R("",!0),y.value?(f(),G(Cv,{key:2})):R("",!0),x.value?(f(),G(gv,{key:3})):R("",!0),h.value?(f(),G(ug,{key:4})):R("",!0),_.value?(f(),G(yv,{key:5})):R("",!0),S.value?(f(),G(hv,{key:6})):R("",!0),S.value?(f(),G($v,{key:7})):R("",!0),N.value?(f(),G(xv,{key:8})):R("",!0),U.value&&A.value?(f(),G(ea,{key:9})):R("",!0),M.value?(f(),G(cv,{key:10})):R("",!0),P.value?(f(),G(Nv,{key:11})):R("",!0),I.value?(f(),G(Sv,{key:12})):R("",!0),(f(!0),T(le,null,we(r.value,V=>(f(),G(kv,{key:V.id,command:V},null,8,["command"]))),128)),F.value?(f(),G(wv,{key:13})):R("",!0),z(cg)]),_:1},8,["onWheel"])):R("",!0)]),_:1})],512),z(rg)],64))}}),vg=Ee(mg,[["__scopeId","data-v-c6489a20"]]),gg=q({__name:"TitleEditor",setup(e){const o=ie(),t=L(!1),s=L(""),{style:a,updatePosition:l}=yl(),i=L({}),r=k(()=>({...a.value,...i.value})),u=ln(),d=me(),m=L(!0),g=n(b=>{if(u.titleEditorTarget&&b?.trim()){const w=b.trim();u.titleEditorTarget.title=w;const v=u.titleEditorTarget;v instanceof mt&&v.isSubgraphNode?.()&&(v.subgraph.name=w),K.canvas.setDirty(!0,!0)}t.value=!1,u.titleEditorTarget=null,d.canvas.allow_dragcanvas=m.value},"onEdit");return ne(()=>u.titleEditorTarget,b=>{if(b===null)return;s.value=b.title,t.value=!0;const w=d.canvas;m.value=w.allow_dragcanvas,w.allow_dragcanvas=!1;const v=w.ds.scale;if(b instanceof Rt){const y=b;l({pos:y.pos,size:[y.size[0],y.titleHeight]}),i.value={fontSize:`${y.font_size*v}px`}}else if(b instanceof mt){const y=b,[x,_]=y.getBounding();l({pos:[x,_],size:[y.width,ve.NODE_TITLE_HEIGHT]}),i.value={fontSize:`${12*v}px`}}}),Le(document,"litegraph:canvas",n(b=>{if(b.detail.subType==="group-double-click"){if(!o.get("Comfy.Group.DoubleClickTitleToEdit"))return;const w=b.detail.group,[v,y]=w.pos;b.detail.originalEvent.canvasY-y<=w.titleHeight&&(u.titleEditorTarget=w)}else if(b.detail.subType==="node-double-click"){if(!o.get("Comfy.Node.DoubleClickTitleToEdit"))return;const w=b.detail.node,[v,y]=w.pos;b.detail.originalEvent.canvasY-y<=0&&(u.titleEditorTarget=w)}},"canvasEventHandler")),(b,w)=>t.value?(f(),T("div",{key:0,class:"group-title-editor node-title-editor",style:ge(r.value)},[z(Jn,{"is-editing":t.value,"model-value":s.value,onEdit:g},null,8,["is-editing","model-value"])],4)):R("",!0)}}),hg=Ee(gg,[["__scopeId","data-v-aceb018c"]]),yg={key:0,class:"p-3"},bg=q({__name:"TabInfo",props:{nodes:{}},setup(e){const o=k(()=>e.nodes[0]),t=ht(),s=qi(),a=k(()=>t.fromLGraphNode(o.value));return xo(a,l=>{s.openHelp(l)},{immediate:!0}),(l,i)=>a.value?(f(),T("div",yg,[z(Ki,{node:a.value},null,8,["node"])])):R("",!0)}}),wg=["placeholder"],kl=q({__name:"SidePanelSearch",props:jn({searcher:{type:Function,default:n(async()=>{},"default")},updateKey:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const o=jo(e,"modelValue"),t=L(!1),s=wa(o,100,{maxWait:100});ne(o,l=>{t.value=l!==s.value});const a=jl(()=>Be(e.updateKey));return ne([s,a],(l,i,r)=>{let u=!1,d;r(()=>{u=!0,d?.()}),e.searcher(s.value,m=>d=m).catch(m=>{console.error("[SidePanelSearch] searcher failed",m)}).finally(()=>{u||(t.value=!1)})},{immediate:!0}),(l,i)=>(f(),T("label",{class:J(C(fe)("mt-1 py-1.5 bg-secondary-background rounded-lg transition-all duration-150","flex-1 flex gap-2 px-2 items-center","text-base-foreground border-0","focus-within:ring focus-within:ring-component-node-widget-background-highlighted/80"))},[p("i",{class:J(C(fe)("size-4 text-muted-foreground",t.value?"icon-[lucide--loader-circle] animate-spin":"icon-[lucide--search]"))},null,2),ce(p("input",{"onUpdate:modelValue":i[0]||(i[0]=r=>o.value=r),type:"text",class:"bg-transparent border-0 outline-0 ring-0 h-5",placeholder:l.$t("g.searchPlaceholder")},null,8,wg),[[Hl,o.value]])],2))}}),kg=["fixed","increment","decrement","randomize"];function Cg(e){return kg.includes(e)}n(Cg,"isControlOption");function ta(e){return Cg(e)?e:"randomize"}n(ta,"normalizeControlOption");function Sg(e){e.vueTrack||ka((o,t)=>(e.callback=eo(e.callback,t),e.vueTrack=o,{get(){},set(){}}))}n(Sg,"widgetWithVueTrack");function Cl(e){return Sg(e),e.vueTrack(),e.value}n(Cl,"useReactiveWidgetValue");function xg(e){const o=e.linkedWidgets?.find(t=>t.name=="control_after_generate");if(o)return{value:ta(o.value),update:n(t=>o.value=ta(t),"update")}}n(xg,"getControlWidget");function _g(e,o){return!e.isSubgraphNode()||!Qi(o)?void 0:e.subgraph.getNodeById(o._overlay.nodeId)?.type}n(_g,"getNodeType");const Tg=n(e=>{if(!(e==null||e===void 0)){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return e;if(typeof e=="object")return Array.isArray(e)&&e.length>0&&e.every(o=>o instanceof File),e;console.warn(`Invalid widget value type: ${typeof e}`,e)}},"normalizeWidgetValue");function Sl(e,o){const t=ht();return function(s){try{const a=t.getInputSpecForWidget(e,s.name),l=o.get(s.name),i=s.promoted?"ring ring-component-node-widget-promoted":s.advanced?"ring ring-component-node-widget-advanced":void 0,r=n(u=>{const d=Tg(u);s.value=d??void 0,s.callback?.(d,K.canvas,e),e.widgets?.forEach(m=>m.triggerDraw?.())},"callback");return{name:s.name,type:s.type,value:Cl(s),borderStyle:i,callback:r,controlWidget:xg(s),hasLayoutSize:typeof s.computeLayoutSize=="function",isDOMWidget:go(s),label:s.label,nodeType:_g(e,s),options:s.options,spec:a,slotMetadata:l}}catch{return{name:s.name||"unknown",type:s.type||"text",value:void 0}}}}n(Sl,"safeWidgetMapper");function Ng(e){return e==null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="object"}n(Ng,"isValidWidgetValue");function $g(e){const{createNode:o,deleteNode:t,setSource:s}=rn(),a=Ca(new Map),l=new Map,i=n(v=>{const y=l.get(v),x=a.get(v);if(!y||!x)return;const _=new Map;y.inputs?.forEach((S,M)=>{S?.widget?.name&&_.set(S.widget.name,{index:M,linked:S.link!=null})});const h=x.widgets?.map(S=>{const M=_.get(S.name);return M?{...S,slotMetadata:M}:S});a.set(v,{...x,widgets:h,inputs:y.inputs?[...y.inputs]:void 0,outputs:y.outputs?[...y.outputs]:void 0})},"refreshNodeSlots");function r(v){const y=v.graph&&"id"in v.graph&&v.graph!==v.graph.rootGraph?String(v.graph.id):null,x=new Map,_=xs(v.widgets??[]);Object.defineProperty(v,"widgets",{get(){return _},set($){_.splice(0,_.length,...$)}});const h=xs(v.inputs??[]);Object.defineProperty(v,"inputs",{get(){return h},set($){h.splice(0,h.length,...$)}});const S=ql(()=>(v.inputs?.forEach(($,P)=>{$?.widget?.name&&x.set($.widget.name,{index:P,linked:$.link!=null})}),v.widgets?.map(Sl(v,x))??[])),M=v.type||v.constructor?.comfyClass||v.constructor?.title||v.constructor?.name||"Unknown",I=v.constructor?.nodeData?.api_node??!1,N=v.badges;return{id:String(v.id),title:typeof v.title=="string"?v.title:"",type:M,mode:v.mode||0,titleMode:v.title_mode,selected:v.selected||!1,executing:!1,subgraphId:y,apiNode:I,badges:N,hasErrors:!!v.has_errors,widgets:S,inputs:h,outputs:v.outputs?[...v.outputs]:void 0,flags:v.flags?{...v.flags}:void 0,color:v.color||void 0,bgcolor:v.bgcolor||void 0,shape:v.shape}}n(r,"extractVueNodeData");const u=n(v=>l.get(v),"getNode"),d=n(()=>{if(!e?._nodes)return;const v=new Set(e._nodes.map(y=>String(y.id)));for(const y of Array.from(a.keys()))v.has(y)||(l.delete(y),a.delete(y));e._nodes.forEach(y=>{const x=String(y.id);l.set(x,y),a.set(x,r(y))})},"syncWithGraph"),m=n((v,y)=>{const x=String(v.id);l.set(x,v),a.set(x,r(v));const _=n(()=>{const h={x:v.pos[0],y:v.pos[1]},S={width:v.size[0],height:v.size[1]};s(bo.Canvas),o(x,{position:h,size:S,zIndex:v.order||0,visible:!0})},"initializeVueNodeLayout");window.app?.configuringGraph?v.onAfterGraphConfigured=eo(v.onAfterGraphConfigured,()=>{a.set(x,r(v)),_()}):_(),y&&y(v)},"handleNodeAdded"),g=n((v,y)=>{const x=String(v.id);s(bo.Canvas),t(x),l.delete(x),a.delete(x),y&&y(v)},"handleNodeRemoved"),c=n((v,y,x)=>()=>{e.onNodeAdded=v||void 0,e.onNodeRemoved=y||void 0,e.onTrigger=x||void 0,l.clear(),a.clear()},"createCleanupFunction"),w=n(()=>{const v=e.onNodeAdded,y=e.onNodeRemoved,x=e.onTrigger;e.onNodeAdded=h=>{m(h,v)},e.onNodeRemoved=h=>{g(h,y)};const _={"node:property:changed":n(h=>{const S=String(h.nodeId),M=a.get(S);if(M)switch(h.property){case"title":a.set(S,{...M,title:String(h.newValue)});break;case"flags.collapsed":a.set(S,{...M,flags:{...M.flags,collapsed:!!h.newValue}});break;case"flags.pinned":a.set(S,{...M,flags:{...M.flags,pinned:!!h.newValue}});break;case"mode":a.set(S,{...M,mode:typeof h.newValue=="number"?h.newValue:0});break;case"color":a.set(S,{...M,color:typeof h.newValue=="string"?h.newValue:void 0});break;case"bgcolor":a.set(S,{...M,bgcolor:typeof h.newValue=="string"?h.newValue:void 0});break;case"shape":a.set(S,{...M,shape:typeof h.newValue=="number"?h.newValue:void 0})}},"node:property:changed"),"node:slot-errors:changed":n(h=>{i(String(h.nodeId))},"node:slot-errors:changed"),"node:slot-links:changed":n(h=>{h.slotType===Ji.INPUT&&i(String(h.nodeId))},"node:slot-links:changed")};return e.onTrigger=h=>{switch(h.type){case"node:property:changed":_["node:property:changed"](h);break;case"node:slot-errors:changed":_["node:slot-errors:changed"](h);break;case"node:slot-links:changed":_["node:slot-links:changed"](h);break}x?.(h)},d(),c(v||void 0,y||void 0,x||void 0)},"setupEventListeners")();return e._nodes&&e._nodes.length>0&&e._nodes.forEach(v=>{e.onNodeAdded&&e.onNodeAdded(v)}),{vueNodeData:a,getNode:u,cleanup:w}}n($g,"useGraphNodeManager");const Ig={class:"flex flex-col bg-interface-panel-surface"},Mg={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl bg-inherit"},Pg=["disabled"],Dg={class:"text-sm font-semibold line-clamp-2"},Ag={key:0,class:"pb-4"},Eg=q({__name:"PropertiesAccordionItem",props:jn({isEmpty:{type:Boolean}},{collapse:{type:Boolean,default:!1},collapseModifiers:{}}),emits:["update:collapse"],setup(e){const o=jo(e,"collapse");return(t,s)=>{const a=Ne("tooltip");return f(),T("div",Ig,[p("div",Mg,[ce((f(),T("button",{type:"button",class:J(C(fe)("group min-h-12 bg-transparent border-0 outline-0 ring-0 w-full text-left flex items-center justify-between pl-4 pr-3",!t.isEmpty&&"cursor-pointer")),disabled:t.isEmpty,onClick:s[0]||(s[0]=l=>o.value=!o.value)},[p("span",Dg,[Me(t.$slots,"label")]),t.isEmpty?R("",!0):(f(),T("i",{key:0,class:J(C(fe)("text-muted-foreground group-hover:text-base-foreground group-focus:text-base-foreground icon-[lucide--chevron-up] size-4 transition-all",o.value&&"-rotate-180"))},null,2))],10,Pg)),[[a,t.isEmpty?{value:t.$t("rightSidePanel.inputsNoneTooltip"),showDelay:1e3}:void 0]])]),!o.value&&!t.isEmpty?(f(),T("div",Ag,[Me(t.$slots,"default")])):R("",!0)])}}}),Lg={key:0,class:"space-y-4 rounded-lg bg-interface-surface px-4"},Og={class:"min-h-8"},Vg={key:0,class:"text-sm leading-8 p-0 m-0 line-clamp-1"},Rg=q({__name:"SectionWidgets",props:{label:{},widgets:{}},setup(e){tn("hideLayoutField",!0);const o=me(),{t}=pe();function s(r){return Xi(r.type,r.name)||Zi}n(s,"getWidgetComponent");function a(r,u){r.value=u,r.callback?.(u),o.canvas?.setDirty(!0,!0)}n(a,"onWidgetValueChange");const l=k(()=>e.widgets.length===0),i=k(()=>e.label??(l.value?t("rightSidePanel.inputsNone"):t("rightSidePanel.inputs")));return(r,u)=>(f(),G(Eg,{"is-empty":l.value},{label:O(()=>[Me(r.$slots,"label",{},()=>[Ie(B(i.value),1)])]),default:O(()=>[l.value?R("",!0):(f(),T("div",Lg,[(f(!0),T(le,null,we(r.widgets,({widget:d,node:m},g)=>(f(),T("div",{key:`widget-${g}-${d.name}`,class:"widget-item gap-1.5 col-span-full grid grid-cols-subgrid"},[p("div",Og,[d.name?(f(),T("p",Vg,B(d.label||d.name),1)):R("",!0)]),(f(),G(Zt(s(d)),{widget:d,"model-value":C(Cl)(d),"node-id":String(m.id),"node-type":m.type,class:J(C(fe)("col-span-1",C(Yi)(d.type)&&"min-h-36")),"onUpdate:modelValue":n(c=>a(d,c),"onUpdate:modelValue")},null,8,["widget","model-value","node-id","node-type","class","onUpdate:modelValue"]))]))),128))]))]),_:3},8,["is-empty"]))}}),Wg={class:"px-4 pb-4 flex gap-2 border-b border-interface-stroke"},zg=q({__name:"TabParameters",props:{nodes:{}},setup(e){const o=k(()=>e.nodes.map(a=>{const{widgets:l=[]}=a;return{widgets:l.filter(r=>!(r.options?.canvasOnly||r.options?.hidden)).map(r=>({node:a,widget:r})),node:a}})),t=Je([]);async function s(a){if(a.trim()===""){t.value=o.value;return}const l=a.trim().toLowerCase().split(" ");t.value=o.value.map(i=>({...i,widgets:i.widgets.filter(({widget:r})=>{const u=r.label?.toLowerCase(),d=r.name.toLowerCase(),m=r.type.toLowerCase(),g=r.value?.toString().toLowerCase();return l.every(c=>d.includes(c)||u?.includes(c)||m?.includes(c)||g?.includes(c))})})).filter(i=>i.widgets.length>0)}return n(s,"searcher"),(a,l)=>(f(),T(le,null,[p("div",Wg,[z(kl,{searcher:s,"update-key":o.value},null,8,["update-key"])]),(f(!0),T(le,null,we(t.value,i=>(f(),G(Rg,{key:i.node.id,label:o.value.length>1?i.node.title:void 0,widgets:i.widgets,"default-collapse":o.value.length>1&&o.value===t.value,class:"border-b border-interface-stroke"},null,8,["label","widgets","default-collapse"]))),128))],64))}}),Bg=["disabled","onClick"],Fg=q({__name:"FormSelectButton",props:{modelValue:{},options:{},optionLabel:{default:"label"},optionValue:{default:"value"},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:o}){const t=e,s=o,a=n((u,d)=>{if(typeof u!="object")return u;const m=t.optionValue;return u[m]??u.value??u.name??u.label??d},"getOptionValue"),l=n(u=>{if(typeof u=="object"&&u!==null){const d=t.optionLabel;return u[d]??u.label??u.name??u.value??String(u)}return String(u)},"getOptionLabel"),i=n(u=>{const d=a(t.options[u],u);return String(d)===String(t.modelValue??"")},"isSelected"),r=n(u=>{if(t.disabled)return;const d=a(t.options[u],u);s("update:modelValue",d)},"handleSelect");return(u,d)=>(f(),T("div",{class:J(C(fe)(C(fu),"p-1 inline-flex justify-center items-center gap-1"))},[(f(!0),T(le,null,we(u.options,(m,g)=>(f(),T("button",{key:a(m,g),class:J(C(fe)("flex-1 h-6 px-5 py-[5px] rounded flex justify-center items-center gap-1 transition-all duration-150 ease-in-out truncate min-w-[4ch]","bg-transparent border-none","text-center text-xs font-normal",{"bg-interface-menu-component-surface-selected":i(g)&&!u.disabled,"hover:bg-interface-menu-component-surface-selected/50":!i(g)&&!u.disabled,"opacity-50 cursor-not-allowed":u.disabled,"cursor-pointer":!u.disabled},i(g)&&!u.disabled?"text-text-primary":"text-text-secondary")),disabled:u.disabled,onClick:n(c=>r(g),"onClick")},B(l(m)),11,Bg))),128))],2))}}),Ug={class:"space-y-4 p-3 text-sm text-muted-foreground"},Gg={class:"flex flex-col gap-2"},jg={class:"flex flex-col gap-2"},Hg={class:"bg-secondary-background border-none rounded-lg p-1 grid grid-cols-5 gap-1 justify-items-center"},qg=["onClick"],Kg=["data-testid"],Qg={class:"flex items-center justify-between"},Jg=q({__name:"TabSettings",props:{nodes:{}},setup(e){const o=e,t=Je([]);be(()=>{o.nodes?t.value=o.nodes:t.value=[]});const{t:s}=pe(),a=me(),l=ut(),i=k(()=>l.completedActivePalette.light_theme),r=k({get(){let w=null;const v=t.value;return v.length===0?null:(v.length>1?(w=v[0].mode,v.every(y=>y.mode===w)||(w=null)):w=v[0].mode,w)},set(w){t.value.forEach(v=>{v.mode=w}),vo(t),a.canvas?.setDirty(!0,!0)}}),u=k({get(){return t.value.some(w=>w.pinned)},set(w){t.value.forEach(v=>v.pin(w)),vo(t),a.canvas?.setDirty(!0,!0)}});function d(w){return{dark:Vt(w,{lightness:.3}),light:Vt(w,{lightness:.4}),ringDark:Vt(w,{lightness:.5}),ringLight:Vt(w,{lightness:.1})}}n(d,"getColorValue");const m={name:"noColor",localizedName:n(()=>s("color.noColor"),"localizedName"),value:d(ve.NODE_DEFAULT_BGCOLOR)},g=Object.entries(He.node_colors),c=[m,...g.map(([w,v])=>({name:w,localizedName:n(()=>s(`color.${w}`),"localizedName"),value:d(v.bgcolor)}))],b=k({get(){if(t.value.length===0)return null;const w=t.value.map(y=>y.getColorOption());let v=w[0];return w.every(y=>y===v)||(v=!1),v===!1?null:v==null||!v.bgcolor&&!v.color?m.name:g.find(([y,x])=>x.bgcolor===v.bgcolor&&x.color===v.color)?.[0]??null},set(w){if(w===null)return;const v=w===m.name?null:He.node_colors[w];for(const y of t.value)y.setColorOption(v);vo(t),a.canvas?.setDirty(!0,!0)}});return(w,v)=>{const y=Ne("tooltip");return f(),T("div",Ug,[p("div",Gg,[p("span",null,B(C(s)("rightSidePanel.nodeState")),1),z(Fg,{modelValue:r.value,"onUpdate:modelValue":v[0]||(v[0]=x=>r.value=x),class:"w-full",options:[{label:C(s)("rightSidePanel.normal"),value:C(Oe).ALWAYS},{label:C(s)("rightSidePanel.bypass"),value:C(Oe).BYPASS},{label:C(s)("rightSidePanel.mute"),value:C(Oe).NEVER}]},null,8,["modelValue","options"])]),p("div",jg,[p("span",null,B(C(s)("rightSidePanel.color")),1),p("div",Hg,[(f(),T(le,null,we(c,x=>p("button",{key:x.name,class:J(C(fe)("size-8 rounded-lg bg-transparent border-0 outline-0 ring-0 text-left flex justify-center items-center cursor-pointer",x.name===b.value?"bg-interface-menu-component-surface-selected":"hover:bg-interface-menu-component-surface-selected")),onClick:n(_=>b.value=x.name,"onClick")},[ce(p("div",{class:J(C(fe)("size-4 rounded-full ring-2 ring-gray-500/10")),style:ge({backgroundColor:i.value?x.value.light:x.value.dark,"--tw-ring-color":x.name===b.value?i.value?x.value.ringLight:x.value.ringDark:void 0}),"data-testid":x.name},null,14,Kg),[[y,x.localizedName(),void 0,{top:!0}]])],10,qg)),64))])]),p("div",Qg,[p("span",null,B(C(s)("rightSidePanel.pinned")),1),z(C(Oa),{modelValue:u.value,"onUpdate:modelValue":v[1]||(v[1]=x=>u.value=x)},null,8,["modelValue"])])])}}}),Yg={class:"pointer-events-none flex-1"},Xg={class:"text-xs text-text-secondary line-clamp-1"},Zg={class:"text-sm line-clamp-1 leading-8"},eh={key:0,class:"size-4 pointer-events-none icon-[lucide--grip-vertical]"},oa=q({__name:"SubgraphNodeWidget",props:{nodeTitle:{},widgetName:{},isDraggable:{type:Boolean},isPhysical:{type:Boolean},class:{type:[Array,Object,String,Number,null,Boolean]}},emits:["toggleVisibility"],setup(e){const o=e;function t(){return o.isPhysical?"icon-[lucide--link]":o.isDraggable?"icon-[lucide--eye]":"icon-[lucide--eye-off]"}return n(t,"getIcon"),(s,a)=>(f(),T("div",{class:J(C(fe)("flex py-1 px-2 break-all rounded items-center gap-1","bg-node-component-surface",o.isDraggable&&"draggable-item drag-handle cursor-grab [&.is-draggable]:cursor-grabbing hover:ring-1 ring-accent-background",o.class))},[p("div",Yg,[p("div",Xg,B(s.nodeTitle),1),p("div",Zg,B(s.widgetName),1)]),z(X,{variant:"muted-textonly",size:"sm",disabled:s.isPhysical,onClick:a[0]||(a[0]=_e(l=>s.$emit("toggleVisibility"),["stop"]))},{default:O(()=>[p("i",{class:J(t())},null,2)]),_:1},8,["disabled"]),s.isDraggable?(f(),T("div",eh)):R("",!0)],2))}}),th={key:0,class:"subgraph-edit-section flex h-full flex-col"},oh={class:"p-4 flex gap-2"},nh={class:"flex-1"},sh={key:0,class:"flex flex-col border-t border-interface-stroke"},ah={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl min-h-12 px-4"},lh={class:"text-sm font-semibold uppercase line-clamp-1"},ih={key:1,class:"flex flex-col border-t border-interface-stroke"},rh={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl min-h-12 px-4"},uh={class:"text-sm font-semibold uppercase line-clamp-1"},ch={class:"pb-2 px-2 space-y-0.5 mt-0.5"},dh={key:2,class:"flex justify-center border-t border-interface-stroke py-4"},ph=q({__name:"SubgraphEditor",setup(e){const o=me(),t=L(void 0),s=L(),a=L(""),l=ka((I,N)=>({get(){I();const $=r.value;return $?er($.properties.proxyWidgets):[]},set($){N();const P=r.value;if($){if(!P){console.error("Attempted to toggle widgets with no node selected");return}P.properties.proxyWidgets=$}}}));async function i(I){a.value=I}n(i,"searcher");const r=k(()=>{const I=o.selectedItems[0];if(I instanceof ts)return I}),u=k({get(){if(!r.value)return[];const I=r.value;function N([$,P]){if($==="-1"){const A=I.widgets.find(E=>E.name===P);return A?[[{id:-1,title:"(Linked)",type:""},A]]:[]}const F=I.subgraph._nodes_by_id[$];if(!F?.widgets)return[];const U=F.widgets.find(A=>A.name===P);return U?[[F,U]]:[]}return n(N,"mapWidgets"),l.value.flatMap(N)},set(I){if(!r.value){console.error("Attempted to toggle widgets with no node selected");return}l.value=I.map(dn)}}),d=k(()=>{const I=r.value;if(!I)return[];const{updatePreviews:N}=ao(),$=I.subgraph.nodes;for(const P of $)P.updateComputedDisabled(),N(P);return $.flatMap(v).filter(([P,F])=>!F.computedDisabled)}),m=k(()=>{if(!r.value)return[];const N=l.value;return d.value.filter($=>!N.some(tr($)))}),g=k(()=>{const I=a.value.toLowerCase();return I?m.value.filter(([N,$])=>N.title.toLowerCase().includes(I)||$.name.toLowerCase().includes(I)):m.value}),c=k(()=>r.value?g.value.filter(or):[]),b=k(()=>{const I=a.value.toLowerCase();return I?u.value.filter(([N,$])=>N.title.toLowerCase().includes(I)||$.name.toLowerCase().includes(I)):u.value});function w(I){return`${I[0].id}: ${I[1].name}`}n(w,"toKey");function v(I){return I.widgets?I.widgets.map(N=>[I,N]):[]}n(v,"nodeWidgets");function y([I,N]){const $=r.value;if(!$)return[];sr(I,N,[$]),vo(l)}n(y,"demote");function x([I,N]){const $=r.value;if(!$)return[];ar(I,N,[$]),vo(l)}n(x,"promote");function _(){if(!r.value)return;const N=l.value,$=g.value.map(dn);N.push(...$),l.value=N}n(_,"showAll");function h(){r.value&&(l.value=l.value.filter(N=>!b.value.some(lr(N))||N[0]==="-1"))}n(h,"hideAll");function S(){if(!r.value)return;const N=l.value,$=c.value.map(dn);N.push(...$),l.value=N}n(S,"showRecommended");function M(){t.value?.dispose(),!(a.value||!s.value?.children?.length)&&(t.value=new ir(s.value,".draggable-item"),t.value.applyNewItemsOrder=function(){const I=[];let N=-1;this.getAllItems().forEach((U,A)=>{if(U===this.draggableItem){N=A;return}if(!this.isItemToggled(U)){I[A]=U;return}const E=this.isItemAbove(U)?A+1:A-1;I[E]=U});for(let U=0;U<this.getAllItems().length;U++)typeof I[U]>"u"&&(I[U]=this.draggableItem);const $=I.indexOf(this.draggableItem),P=u.value,[F]=P.splice(N,1);P.splice($,0,F),u.value=P})}return n(M,"setDraggableState"),Qt(b,()=>{M()},{debounce:100}),Ve(()=>{M(),r.value&&nr(r.value)}),vt(()=>{t.value?.dispose()}),(I,N)=>r.value?(f(),T("div",th,[p("div",oh,[z(kl,{searcher:i})]),p("div",nh,[b.value.length?(f(),T("div",sh,[p("div",ah,[p("div",lh,B(I.$t("subgraphStore.shown")),1),p("a",{class:"cursor-pointer text-right text-xs font-normal text-text-secondary hover:text-azure-600 whitespace-nowrap",onClick:_e(h,["stop"])},B(I.$t("subgraphStore.hideAll")),1)]),p("div",{ref_key:"draggableItems",ref:s,class:"pb-2 px-2 space-y-0.5 mt-0.5"},[(f(!0),T(le,null,we(b.value,([$,P])=>(f(),G(oa,{key:w([$,P]),class:"bg-interface-panel-surface","node-title":$.title,"widget-name":P.name,"is-shown":!0,"is-draggable":!a.value,"is-physical":$.id===-1,onToggleVisibility:n(F=>y([$,P]),"onToggleVisibility")},null,8,["node-title","widget-name","is-draggable","is-physical","onToggleVisibility"]))),128))],512)])):R("",!0),g.value.length?(f(),T("div",ih,[p("div",rh,[p("div",uh,B(I.$t("subgraphStore.hidden")),1),p("a",{class:"cursor-pointer text-right text-xs font-normal text-text-secondary hover:text-azure-600 whitespace-nowrap",onClick:_e(_,["stop"])},B(I.$t("subgraphStore.showAll")),1)]),p("div",ch,[(f(!0),T(le,null,we(g.value,([$,P])=>(f(),G(oa,{key:w([$,P]),class:"bg-interface-panel-surface","node-title":$.title,"widget-name":P.name,onToggleVisibility:n(F=>x([$,P]),"onToggleVisibility")},null,8,["node-title","widget-name","onToggleVisibility"]))),128))])])):R("",!0),c.value.length?(f(),T("div",dh,[z(X,{size:"sm",class:"rounded border-none px-3 py-0.5",onClick:_e(S,["stop"])},{default:O(()=>[Ie(B(I.$t("subgraphStore.showRecommended")),1)]),_:1})])):R("",!0)])])):R("",!0)}}),fh={"data-testid":"properties-panel",class:"flex size-full flex-col bg-interface-panel-surface"},mh={class:"pt-1"},vh={class:"flex items-center justify-between pl-4 pr-3"},gh={class:"my-3.5 text-sm font-semibold line-clamp-2"},hh={class:"flex gap-2"},yh={key:0,class:"px-4 pb-2 pt-1"},bh={class:"scrollbar-thin flex-1 overflow-y-auto"},wh={key:0,class:"flex size-full p-4 items-start justify-start text-sm text-muted-foreground"},kh=q({__name:"RightSidePanel",setup(e){const o=me(),t=no(),s=ie(),{t:a}=pe(),{selectedItems:l}=Fe(o),{activeTab:i,isEditingSubgraph:r}=Fe(t),u=k(()=>s.get("Comfy.Sidebar.Location")),d=k(()=>u.value==="right"?"icon-[lucide--panel-left]":"icon-[lucide--panel-right]"),m=k(()=>l.value.length>0),g=k(()=>l.value.filter(to)),c=k(()=>w.value instanceof ts),b=k(()=>g.value.length===1),w=k(()=>b.value?g.value[0]:null),v=k(()=>l.value.length),y=k(()=>b.value&&w.value?w.value.title||w.value.type||"Node":a("rightSidePanel.title",{count:v.value}));function x(){t.closePanel()}n(x,"closePanel");const _=k(()=>{const I=[{label:n(()=>a("rightSidePanel.parameters"),"label"),value:"parameters"},{label:n(()=>a("g.settings"),"label"),value:"settings"}];return(!m.value||b.value&&!c.value)&&I.push({label:n(()=>a("rightSidePanel.info"),"label"),value:"info"}),I});be(()=>{!_.value.some(I=>I.value===i.value)&&!(i.value==="subgraph"&&c.value)&&t.openPanel(_.value[0].value)});const h=L(!1);function S(I){h.value=!1;const N=I.trim();if(!N)return;const $=Be(w);$&&N!==$.title&&($.title=N,o.canvas?.setDirty(!0,!1))}n(S,"handleTitleEdit");function M(){h.value=!1}return n(M,"handleTitleCancel"),(I,N)=>(f(),T("div",fh,[p("section",mh,[p("div",vh,[p("h3",gh,[b.value?(f(),G(Jn,{key:0,"model-value":y.value,"is-editing":h.value,"input-attrs":{"data-testid":"node-title-input"},onEdit:S,onCancel:M,onDblclick:N[0]||(N[0]=$=>h.value=!0)},null,8,["model-value","is-editing"])):(f(),T(le,{key:1},[Ie(B(y.value),1)],64))]),p("div",hh,[c.value?(f(),G(X,{key:0,variant:"secondary",size:"icon",class:J(C(fe)(C(r)&&"bg-secondary-background-selected")),onClick:N[1]||(N[1]=$=>C(t).openPanel(C(r)?"parameters":"subgraph"))},{default:O(()=>N[3]||(N[3]=[p("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["class"])):R("",!0),z(X,{variant:"secondary",size:"icon","aria-pressed":C(t).isOpen,"aria-label":C(a)("rightSidePanel.togglePanel"),onClick:x},{default:O(()=>[p("i",{class:J(C(fe)(d.value,"size-4"))},null,2)]),_:1},8,["aria-pressed","aria-label"])])]),m.value?(f(),T("nav",yh,[z(rr,{"model-value":C(i),"onUpdate:modelValue":N[2]||(N[2]=$=>{C(t).openPanel($)})},{default:O(()=>[(f(!0),T(le,null,we(_.value,$=>(f(),G(ur,{key:$.value,class:"text-sm py-1 px-2 font-inter",value:$.value},{default:O(()=>[Ie(B($.label()),1)]),_:2},1032,["value"]))),128))]),_:1},8,["model-value"])])):R("",!0)]),p("div",bh,[m.value?c.value&&C(r)?(f(),G(ph,{key:1,node:w.value},null,8,["node"])):(f(),T(le,{key:2},[C(i)==="parameters"?(f(),G(zg,{key:0,nodes:g.value},null,8,["nodes"])):C(i)==="info"?(f(),G(bg,{key:1,nodes:g.value},null,8,["nodes"])):C(i)==="settings"?(f(),G(Jg,{key:2,nodes:g.value},null,8,["nodes"])):R("",!0)],64)):(f(),T("div",wh,B(I.$t("rightSidePanel.noSelection")),1))])]))}}),vs=Mt("searchBox",()=>{const e=ie(),{x:o,y:t}=Kl(),s=k(()=>e.get("Comfy.NodeSearchBoxImpl")==="default"),a=Je(null);function l(u){a.value=u}n(l,"setPopoverRef");const i=L(!1);function r(){if(s.value){i.value=!i.value;return}a.value&&a.value.showSearchBox(new MouseEvent("click",{clientX:o.value,clientY:t.value,layerY:t.value}))}return n(r,"toggleVisible"),{newSearchBoxEnabled:s,setPopoverRef:l,toggleVisible:r,visible:i}}),Ch={name:"AutoCompletePlus",extends:No,emits:["focused-option-changed"],data(){return{isComposing:!1}},mounted(){typeof No.mounted=="function"&&No.mounted.call(this);const e=this.$el.querySelector("input");e&&(e.addEventListener("compositionstart",()=>{this.isComposing=!0}),e.addEventListener("compositionend",()=>{this.isComposing=!1})),this.$watch(()=>this.focusedOptionIndex,(o,t)=>{this.$emit("focused-option-changed",o)})},methods:{onKeyDown(e){if(e.key==="Enter"&&this.isComposing){e.preventDefault(),e.stopPropagation();return}No.methods.onKeyDown.call(this,e)}}},Sh={class:"option-container flex w-full cursor-pointer items-center justify-between overflow-hidden px-2 py-0"},xh={class:"option-display-name flex flex-col font-semibold"},_h={key:0},Th=["innerHTML"],Nh=["innerHTML"],$h={key:0,class:"option-category truncate text-sm font-light text-muted"},Ih={class:"option-badges"},Mh=q({__name:"NodeSearchItem",props:{nodeDef:{},currentQuery:{}},setup(e){const o=ie(),t=k(()=>o.get("Comfy.NodeSearchBoxImpl.ShowCategory")),s=k(()=>o.get("Comfy.NodeSearchBoxImpl.ShowIdName")),a=k(()=>o.get("Comfy.NodeSearchBoxImpl.ShowNodeFrequency")),l=ss(),i=k(()=>l.getNodeFrequency(d.nodeDef)),r=cr(),u=k(()=>r.isBookmarked(d.nodeDef)),d=e;return(m,g)=>(f(),T("div",Sh,[p("div",xh,[p("div",null,[u.value?(f(),T("span",_h,g[0]||(g[0]=[p("i",{class:"pi pi-bookmark-fill mr-1 text-sm"},null,-1)]))):R("",!0),p("span",{innerHTML:C($s)(m.nodeDef.display_name,m.currentQuery)},null,8,Th),g[1]||(g[1]=p("span",null," ",-1)),s.value?(f(),G(C(Jt),{key:1,severity:"secondary"},{default:O(()=>[p("span",{innerHTML:C($s)(m.nodeDef.name,m.currentQuery)},null,8,Nh)]),_:1})):R("",!0)]),t.value?(f(),T("div",$h,B(m.nodeDef.category.replaceAll("/"," > ")),1)):R("",!0)]),p("div",Ih,[m.nodeDef.experimental?(f(),G(C(Jt),{key:0,value:m.$t("g.experimental"),severity:"primary"},null,8,["value"])):R("",!0),m.nodeDef.deprecated?(f(),G(C(Jt),{key:1,value:m.$t("g.deprecated"),severity:"danger"},null,8,["value"])):R("",!0),a.value&&i.value>0?(f(),G(C(Jt),{key:2,value:C(dr)(i.value,{roundToInt:!0}),severity:"secondary"},null,8,["value"])):R("",!0),m.nodeDef.nodeSource.type!==C(pr).Unknown?(f(),G(C(mi),{key:3,class:"text-sm font-light"},{default:O(()=>[Ie(B(m.nodeDef.nodeSource.displayText),1)]),_:1})):R("",!0)])]))}}),Ph=Ee(Mh,[["__scopeId","data-v-acda36a0"]]),Dh={class:"comfy-vue-node-search-container flex w-full min-w-96 items-center justify-center"},Ah={class:"_dialog-body"},Eh=q({__name:"NodeSearchBox",props:{filters:{},searchLimit:{default:64}},emits:["addFilter","removeFilter","addNode"],setup(e,{emit:o}){const t=ie(),{t:s}=pe(),a=k(()=>t.get("Comfy.NodeSearchBoxImpl.NodePreview")),l=L(),i=L(!1),r=`comfy-vue-node-search-box-input-${Math.random()}`,u=L([]),d=L(null),m=L(""),g=k(()=>e.filters.length===0?s("g.searchNodes")+"...":""),c=ht(),b=ss(),w=on(N=>{N.trim()},500),v=n(N=>{const $=N===""&&e.filters.length===0;m.value=N,u.value=$?b.topNodeDefs:[...c.nodeSearchService.searchNode(N,e.filters,{limit:e.searchLimit})],w(N)},"search"),y=o,x=n(N=>{y("addNode",N)},"onAddNode");let _=null;const h=n(async()=>{_??=document.getElementById(r),_&&(_.blur(),await Re(()=>_?.focus()))},"reFocusInput");Ve(()=>{_??=document.getElementById(r),_&&_.focus(),l.value.hide=()=>v(""),v(""),l.value.show()});const S=n(N=>{i.value=!1,y("addFilter",N)},"onAddFilter"),M=n(async(N,$)=>{N.stopPropagation(),N.preventDefault(),y("removeFilter",$),await h()},"onRemoveFilter"),I=n(N=>{if(N===-1){d.value=null;return}const $=u.value[N];d.value=$},"setHoverSuggestion");return(N,$)=>(f(),T("div",Dh,[a.value&&d.value?(f(),T("div",{key:0,class:"comfy-vue-node-preview-container absolute top-[50px] left-[-375px] z-50 cursor-pointer",onMousedown:$[0]||($[0]=_e(P=>x(d.value),["stop"]))},[(f(),G(fr,{key:d.value?.name||"","node-def":d.value},null,8,["node-def"]))],32)):R("",!0),z(X,{variant:"secondary","aria-label":N.$t("g.addNodeFilterCondition"),class:"filter-button z-10",onClick:$[1]||($[1]=P=>i.value=!0)},{default:O(()=>$[6]||($[6]=[p("i",{class:"pi pi-filter"},null,-1)])),_:1},8,["aria-label"]),z(C(Va),{visible:i.value,"onUpdate:visible":$[2]||($[2]=P=>i.value=P),class:"min-w-96","dismissable-mask":"",modal:"",onHide:h},{header:O(()=>[p("h3",null,B(N.$t("g.addNodeFilterCondition")),1)]),default:O(()=>[p("div",Ah,[z(mr,{onAddFilter:S})])]),_:1},8,["visible"]),z(Ch,{ref_key:"autoCompletePlus",ref:l,"model-value":N.filters,class:"comfy-vue-node-search-box z-10 grow","scroll-height":"40vh",placeholder:g.value,"input-id":r,"append-to":"self",suggestions:u.value,delay:100,loading:!C(b).isLoaded,"complete-on-focus":"","auto-option-focus":"","force-selection":"",multiple:"","option-label":"display_name",onComplete:$[3]||($[3]=P=>v(P.query)),onOptionSelect:$[4]||($[4]=P=>x(P.value)),onFocusedOptionChanged:$[5]||($[5]=P=>I(P))},{option:O(({option:P})=>[z(Ph,{"node-def":P,"current-query":m.value},null,8,["node-def","current-query"])]),chip:O(({value:P})=>[P.filterDef&&P.value?(f(),G(vr,{key:`${P.filterDef.id}-${P.value}`,text:P.value,badge:P.filterDef.invokeSequence.toUpperCase(),"badge-class":P.filterDef.invokeSequence+"-badge",onRemove:n(F=>M(F,P),"onRemove")},null,8,["text","badge","badge-class","onRemove"])):R("",!0)]),_:1},8,["model-value","placeholder","suggestions","loading"])]))}}),Lh=q({__name:"NodeSearchBoxPopover",setup(e,{expose:o}){let t=null,s=null,a=!1;const l=ie(),i=vs(),r=ao(),{visible:u,newSearchBoxEnabled:d}=Fe(i),m=L(!0);function g(){return t?[t.canvasX,t.canvasY]:r.getCanvasCenter()}n(g,"getNewNodeLocation");const c=L([]);function b(V){c.value.push(V)}n(b,"addFilter");function w(V){c.value=c.value.filter(j=>_s(j)!==_s(V))}n(w,"removeFilter");function v(){c.value=[]}n(v,"clearFilters");function y(){u.value=!1}n(y,"closeDialog");const x=me();function _(V){const j=r.addNodeOnGraph(V,{pos:g()});a&&t?x.getCanvas().linkConnector.connectToNode(j,t):t||console.warn("The trigger event was undefined when addNode was called."),a=!1,Ae().activeWorkflow?.changeTracker?.checkState(),window.requestAnimationFrame(y)}n(_,"addNode");function h(V){d.value?V?.pointerType==="touch"?setTimeout(()=>{I(V)},128):I(V):x.getCanvas().showSearchBox(V)}n(h,"showSearchBox");function S(){return x.getCanvas().linkConnector.renderLinks.at(0)}n(S,"getFirstLink");const M=ht();function I(V){const j=S();if(j){const H=j.toType==="input"?M.nodeSearchService.inputTypeFilter:M.nodeSearchService.outputTypeFilter,Q=j.fromSlot.type?.toString()??"";b({filterDef:H,value:Q})}u.value=!0,t=V,m.value=!1,setTimeout(()=>{m.value=!0},300)}n(I,"showNewSearchBox");function N(V){const j=S();if(!j)return;const{node:H,fromSlot:Q,toType:te}=j,ue={e:V,allow_searchbox:!0,showSearchBox:n(()=>{nt(),h(V)},"showSearchBox")},Y=j.fromReroute?.id,oe=te==="input"?{nodeFrom:H,slotFrom:Q,afterRerouteId:Y}:{nodeTo:H,slotTo:Q,afterRerouteId:Y},se=x.getCanvas(),Te=se.showConnectionMenu({...oe,...ue});if(!Te){console.warn("No menu was returned from showConnectionMenu");return}t=V,s=new AbortController;const{signal:Ue}=s,qe={once:!0,signal:Ue};Le(se.canvas,"connect-new-default-node",Ke=>{if(!(Ke instanceof CustomEvent))throw new Error("Invalid event");const je=Ke.detail?.node;if(!(je instanceof mt))throw new Error("Invalid node");a=!1,Ke.preventDefault(),se.linkConnector.connectToNode(je,V)},qe);const nt=Le(Te.controller.signal,"abort",W,qe)}n(N,"showContextMenu"),be(()=>{const{canvas:V}=x;V&&(ve.release_link_on_empty_shows_menu=!1,V.allow_searchbox=!1,Le(V.linkConnector.events,"dropped-on-canvas",E))});function $(V){if(V.detail.subType==="empty-double-click")h(V.detail.originalEvent);else if(V.detail.subType==="group-double-click"){const j=V.detail.group,[H,Q]=j.pos;V.detail.originalEvent.canvasY-Q>j.titleHeight&&h(V.detail.originalEvent)}}n($,"canvasEventHandler");const P=k(()=>l.get("Comfy.LinkRelease.Action")),F=k(()=>l.get("Comfy.LinkRelease.ActionShift"));function U(V){return V.preventDefault()}n(U,"preventDefault");function A(V){V.preventDefault();const j=x.getCanvas();j.linkConnector.state.snapLinksPos=[V.detail.canvasX,V.detail.canvasY],Le(j.linkConnector.events,"reset",U,{once:!0})}n(A,"cancelNextReset");function E(V){switch(a=!0,V.detail.shiftKey?F.value:P.value){case St.SEARCH_BOX:A(V),h(V.detail);break;case St.CONTEXT_MENU:A(V),N(V.detail);break;case St.NO_ACTION:}}n(E,"handleDroppedOnCanvas");function W(){s?.abort(),s=null,t=null;const V=x.getCanvas();V.linkConnector.events.removeEventListener("reset",U),a&&V.linkConnector.disconnectLinks(),V.linkConnector.reset(),V.setDirty(!0,!0)}return n(W,"reset"),ne(u,()=>{u.value||W()}),Le(document,"litegraph:canvas",$),o({showSearchBox:h}),(V,j)=>(f(),T("div",null,[z(C(Va),{visible:C(u),"onUpdate:visible":j[0]||(j[0]=H=>it(u)?u.value=H:null),modal:"","dismissable-mask":m.value,pt:{root:{class:"invisible-dialog-root",role:"search"},mask:{class:"node-search-box-dialog-mask"},transition:{enterFromClass:"opacity-0 scale-75",enterActiveClass:"transition-all duration-100 ease-out",leaveActiveClass:"transition-all duration-100 ease-in",leaveToClass:"opacity-0 scale-75"}},onHide:v},{container:O(()=>[z(Eh,{filters:c.value,onAddFilter:b,onRemoveFilter:w,onAddNode:_},null,8,["filters"])]),_:1},8,["visible","dismissable-mask"])]))}}),Oh=["width","height"],Vh=q({__name:"ComfyLogo",props:{size:{default:16},color:{default:"currentColor"},class:{},mode:{default:"outline"}},setup(e){const o=k(()=>e.class||""),t=k(()=>({stroke:e.mode==="outline"?e.color:void 0,strokeWidth:e.mode==="outline"?1:void 0,fill:e.mode==="fill"?e.color:"none"}));return(s,a)=>(f(),T("svg",{class:J(o.value),width:s.size,height:s.size,viewBox:"0 0 18 18",xmlns:"http://www.w3.org/2000/svg"},[p("path",It({d:"M14.8193 0.600586C15.1248 0.600586 15.3296 0.70893 15.459 0.881836C15.5914 1.05888 15.6471 1.33774 15.5527 1.66895L14.8037 4.30176C14.7063 4.64386 14.4729 4.97024 14.1641 5.21191C13.8544 5.45415 13.496 5.58984 13.1699 5.58984H13.1689L9.5791 5.59668H7.90625C7.52654 5.59668 7.19496 5.84986 7.09082 6.21289L5.69434 11.0889C5.63007 11.3133 5.66134 11.5534 5.77734 11.7529L5.83203 11.8359C5.99177 12.0491 6.24252 12.1758 6.50977 12.1758H6.51074L8.88281 12.1709H11.4971C11.7643 12.171 11.9541 12.254 12.084 12.3906L12.1357 12.4521C12.2685 12.6295 12.3249 12.9089 12.2305 13.2402L11.4805 15.8721C11.383 16.2144 11.1498 16.5415 10.8408 16.7832C10.5314 17.0252 10.1736 17.161 9.84766 17.1611H9.84668L6.25684 17.168H3.64258C3.33762 17.1679 3.13349 17.0588 3.00391 16.8857C2.87135 16.7087 2.81482 16.43 2.90918 16.0986L3.39551 14.3887C3.46841 14.1327 3.41794 13.8576 3.25879 13.6445V13.6436C3.09901 13.4303 2.84745 13.3037 2.58008 13.3037H1.18066C0.875088 13.3037 0.670398 13.1953 0.541016 13.0225C0.408483 12.8451 0.351891 12.5655 0.446289 12.2344L2.11914 6.38965L2.30371 5.74707V5.74609C2.40139 5.40341 2.63456 5.07671 2.94336 4.83496C3.25302 4.59258 3.61143 4.45705 3.9375 4.45703H5.6123C5.94484 4.45703 6.24083 4.26316 6.37891 3.9707L6.42773 3.83984L6.98145 1.89551C7.07894 1.55317 7.31212 1.22614 7.62109 0.984375C7.93074 0.742127 8.2892 0.606445 8.61523 0.606445H8.61621L12.1982 0.600586H14.8193Z"},t.value),null,16)],10,Oh))}}),Rh={class:"relative aspect-square w-full overflow-hidden rounded-t-lg select-none"},Wh={key:1,class:"flex h-full w-full items-center justify-center"},zh=q({__name:"BaseThumbnail",props:{hoverZoom:{default:4},isHovered:{type:Boolean}},setup(e){const o=L(!1),t=L(null);return Ve(()=>{Array.from(t.value?.getElementsByTagName("img")??[]).forEach(a=>{Le(a,"error",()=>{o.value=!0})})}),(s,a)=>(f(),T("div",Rh,[o.value?(f(),T("div",Wh,a[0]||(a[0]=[p("img",{src:gu,draggable:"false",class:"h-full w-full transform-gpu object-cover transition-transform duration-300 ease-out"},null,-1)]))):(f(),T("div",{key:0,ref_key:"contentRef",ref:t,class:"h-full w-full transform-gpu transition-transform duration-1000 ease-out",style:ge(s.isHovered?{transform:`scale(${1+s.hoverZoom/100})`}:void 0)},[Me(s.$slots,"default",{},void 0,!0)],4))]))}}),cn=Ee(zh,[["__scopeId","data-v-c216f2c0"]]),Bh={class:"flex h-full w-full items-center justify-center p-4",style:{backgroundImage:"url(/assets/images/default-template.png)",backgroundRepeat:"round"}},Fh=["src"],Uh=q({__name:"AudioThumbnail",props:{src:{}},setup(e){return(o,t)=>(f(),G(cn,null,{default:O(()=>[p("div",Bh,[p("audio",{controls:"",class:"relative w-full",src:o.src,onClick:t[0]||(t[0]=_e(()=>{},["stop"]))},null,8,Fh)])]),_:1}))}}),Gh=50,jh=q({__name:"CompareSliderThumbnail",props:{baseImageSrc:{},overlayImageSrc:{},alt:{},isHovered:{type:Boolean},isVideo:{type:Boolean}},setup(e){const o=e.isVideo||e.baseImageSrc?.toLowerCase().endsWith(".webp")||e.overlayImageSrc?.toLowerCase().endsWith(".webp")||!1,t=L(Gh),s=L(null),{elementX:a,elementWidth:l,isOutside:i}=Ql(s);return ne([()=>e.isHovered,a,l,i],([r,u,d,m])=>{r&&(m||(t.value=u/d*100))}),(r,u)=>(f(),G(cn,{"is-hovered":r.isHovered},{default:O(()=>[z(wo,{src:r.baseImageSrc,alt:r.alt,"image-class":C(o)?"w-full h-full object-cover":"max-w-full max-h-64 object-contain"},null,8,["src","alt","image-class"]),p("div",{ref_key:"containerRef",ref:s,class:"absolute inset-0"},[z(wo,{src:r.overlayImageSrc,alt:r.alt,"image-class":C(o)?"w-full h-full object-cover":"max-w-full max-h-64 object-contain","image-style":{clipPath:`inset(0 ${100-t.value}% 0 0)`}},null,8,["src","alt","image-class","image-style"]),p("div",{class:"pointer-events-none absolute inset-y-0 z-10 w-0.5 bg-white/30 backdrop-blur-sm",style:ge({left:`${t.value}%`})},null,4)],512)]),_:1},8,["is-hovered"]))}}),Hh=q({__name:"DefaultThumbnail",props:{src:{},alt:{},hoverZoom:{},isHovered:{type:Boolean},isVideo:{type:Boolean}},setup(e){const o=e.isVideo??(e.src?.toLowerCase().endsWith(".webp")||!1);return(t,s)=>(f(),G(cn,{"hover-zoom":t.hoverZoom,"is-hovered":t.isHovered},{default:O(()=>[z(wo,{src:t.src,alt:t.alt,"image-class":["transform-gpu transition-transform duration-300 ease-out",C(o)?"w-full h-full object-cover":"max-w-full max-h-64 object-contain"],"image-style":t.isHovered?{transform:`scale(${1+t.hoverZoom/100})`}:void 0},null,8,["src","alt","image-class","image-style"])]),_:1},8,["hover-zoom","is-hovered"]))}}),qh={class:"relative h-full w-full"},Kh={class:"absolute inset-0"},Qh={class:"absolute inset-0 z-10"},Jh=q({__name:"HoverDissolveThumbnail",props:{baseImageSrc:{},overlayImageSrc:{},alt:{},isHovered:{type:Boolean},isVideo:{type:Boolean}},setup(e){const o=e.isVideo||e.baseImageSrc?.toLowerCase().endsWith(".webp")||e.overlayImageSrc?.toLowerCase().endsWith(".webp")||!1,t=k(()=>o?"size-full object-cover":"size-full object-contain"),s=k(()=>{const a="size-full transition-opacity duration-300",l=o?"object-cover":"object-contain",i=e.isHovered?"opacity-100":"opacity-0";return`${a} ${l} ${i}`});return(a,l)=>(f(),G(cn,{"is-hovered":a.isHovered},{default:O(()=>[p("div",qh,[p("div",Kh,[z(wo,{src:a.baseImageSrc,alt:a.alt,"image-class":t.value},null,8,["src","alt","image-class"])]),p("div",Qh,[z(wo,{src:a.overlayImageSrc,alt:a.alt,"image-class":s.value},null,8,["src","alt","image-class"])])])]),_:1},8,["is-hovered"]))}});function Yh(e,o={}){const{itemsPerPage:t=12,initialPage:s=1}=o,a=L(s),l=L(!1),i=Je(new Set([])),r=k(()=>{const b="value"in e?e.value:e;return Array.isArray(b)?b:[]}),u=k(()=>{const b=r.value;if(b.length===0)return[];const w=Array.from(i.value).sort((x,_)=>x-_),y=Math.max(...w,0)*t;return b.slice(0,y)}),d=k(()=>{const b=r.value;if(b.length===0)return!1;const w=Array.from(i.value);return Math.max(...w,0)*t<b.length}),m=k(()=>{const b=r.value;return b.length===0?0:Math.ceil(b.length/t)}),g=n(async()=>{if(l.value||!d.value)return;l.value=!0;const b=Array.from(i.value),w=Math.max(...b,0)+1,v=new Set(i.value);v.add(w),i.value=v,a.value=w,l.value=!1},"loadNextPage");return ne(()=>r.value.length,b=>{b>0&&i.value.size===0&&(i.value=new Set([1]))},{immediate:!0}),{paginatedItems:u,isLoading:l,hasMoreItems:d,currentPage:a,totalPages:m,loadNextPage:g,reset:n(()=>{a.value=s,i.value=new Set([]),l.value=!1,r.value.length>0&&(i.value=new Set([1]))},"reset")}}n(Yh,"useLazyPagination");const Xh=Mt("templateRanking",()=>{const e=L(),o=n(l=>l/(e.value??l),"normalizeUsageScore"),t=n(l=>{if(!l)return .5;const i=new Date(l);if(isNaN(i.getTime()))return .5;const r=(Date.now()-i.getTime())/(1e3*60*60*24);return Math.max(.1,1/(1+r/90))},"computeFreshness");return{largestUsageScore:e,computeFreshness:t,computeDefaultScore:n((l,i,r=0)=>{const u=(i??5)/10,d=t(l);return o(r)*.5+u*.3+d*.2},"computeDefaultScore"),computePopularScore:n((l,i=0)=>{const r=t(l);return o(i)*.9+r*.1},"computePopularScore")}});function Zh(e){const o=ie(),t=Xh(),s=L(""),a=L(o.get("Comfy.Templates.SelectedModels")),l=L(o.get("Comfy.Templates.SelectedUseCases")),i=L(o.get("Comfy.Templates.SelectedRunsOn")),r=L(o.get("Comfy.Templates.SortBy")),u=k(()=>{const E="value"in e?e.value:e;return Array.isArray(E)?E:[]}),d={keys:[{name:"name",weight:.3},{name:"title",weight:.3},{name:"description",weight:.1},{name:"tags",weight:.2},{name:"models",weight:.3}],threshold:.33,includeScore:!0,includeMatches:!0},m=k(()=>new fa(u.value,d)),g=k(()=>{const E=new Set;return u.value.forEach(W=>{Array.isArray(W.models)&&W.models.forEach(V=>E.add(V))}),Array.from(E).sort()}),c=k(()=>{const E=new Set;return u.value.forEach(W=>{W.tags&&Array.isArray(W.tags)&&W.tags.forEach(V=>E.add(V))}),Array.from(E).sort()}),b=k(()=>["ComfyUI","External or Remote API"]),w=wa(s,50),v=k(()=>w.value.trim()?m.value.search(w.value).map(W=>W.item):u.value),y=k(()=>a.value.length===0?v.value:v.value.filter(E=>!E.models||!Array.isArray(E.models)?!1:a.value.some(W=>E.models?.includes(W)))),x=k(()=>l.value.length===0?y.value:y.value.filter(E=>!E.tags||!Array.isArray(E.tags)?!1:l.value.some(W=>E.tags?.includes(W)))),_=k(()=>i.value.length===0?x.value:x.value.filter(E=>{const W=E.openSource===!1,V=E.openSource!==!1;return i.value.some(j=>j==="External or Remote API"?W:j==="ComfyUI"?V:!1)})),h=n(E=>typeof E.vram=="number"&&Number.isFinite(E.vram)&&E.vram>0?E.vram:Number.POSITIVE_INFINITY,"getVramMetric");ne(_,E=>{t.largestUsageScore=Math.max(...E.map(W=>W.usage||0))},{immediate:!0});const S=k(()=>{const E=[..._.value];switch(r.value){case"recommended":return E.sort((W,V)=>{const j=t.computeDefaultScore(W.date,W.searchRank,W.usage);return t.computeDefaultScore(V.date,V.searchRank,V.usage)-j});case"popular":return E.sort((W,V)=>{const j=t.computePopularScore(W.date,W.usage);return t.computePopularScore(V.date,V.usage)-j});case"alphabetical":return E.sort((W,V)=>{const j=W.title||W.name||"",H=V.title||V.name||"";return j.localeCompare(H)});case"newest":return E.sort((W,V)=>{const j=new Date(W.date||"1970-01-01");return new Date(V.date||"1970-01-01").getTime()-j.getTime()});case"vram-low-to-high":return E.sort((W,V)=>{const j=h(W),H=h(V);if(j===H){const Q=W.title||W.name||"",te=V.title||V.name||"";return Q.localeCompare(te)}return j===Number.POSITIVE_INFINITY?1:H===Number.POSITIVE_INFINITY?-1:j-H});case"model-size-low-to-high":return E.sort((W,V)=>{const j=typeof W.size=="number"?W.size:Number.POSITIVE_INFINITY,H=typeof V.size=="number"?V.size:Number.POSITIVE_INFINITY;return j===H?0:j-H});case"default":default:return E}}),M=k(()=>S.value),I=n(()=>{s.value="",a.value=[],l.value=[],i.value=[],r.value="default"},"resetFilters"),N=n(E=>{a.value=a.value.filter(W=>W!==E)},"removeModelFilter"),$=n(E=>{l.value=l.value.filter(W=>W!==E)},"removeUseCaseFilter"),P=n(E=>{i.value=i.value.filter(W=>W!==E)},"removeRunsOnFilter"),F=k(()=>M.value.length),U=k(()=>u.value.length),A=on(()=>{},500);return ne([s,a,l,i,r],()=>{(s.value.trim()!==""||a.value.length>0||l.value.length>0||i.value.length>0||r.value!=="default")&&A()},{deep:!0}),Qt(a,E=>{o.set("Comfy.Templates.SelectedModels",E)},{debounce:500,deep:!0}),Qt(l,E=>{o.set("Comfy.Templates.SelectedUseCases",E)},{debounce:500,deep:!0}),Qt(i,E=>{o.set("Comfy.Templates.SelectedRunsOn",E)},{debounce:500,deep:!0}),Qt(r,E=>{o.set("Comfy.Templates.SortBy",E)},{debounce:500}),{searchQuery:s,selectedModels:a,selectedUseCases:l,selectedRunsOn:i,sortBy:r,filteredTemplates:M,availableModels:g,availableUseCases:c,availableRunsOn:b,filteredCount:F,totalCount:U,resetFilters:I,removeModelFilter:N,removeUseCaseFilter:$,removeRunsOnFilter:P}}n(Zh,"useTemplateFiltering");function xl(){const{t:e}=pe(),o=cl(),t=gt(),s=L(null),a=L(null),l=k(()=>o.isLoaded),i=k(()=>o.groupedTemplates),r=n(async()=>(o.isLoaded||await o.loadWorkflowTemplates(),o.isLoaded),"loadTemplates"),u=n(()=>{if(i.value.length>0){const v=i.value[0].modules[0];d(v)}},"selectFirstTemplateCategory"),d=n(v=>(s.value=v,v!==null),"selectTemplateCategory"),m=n((v,y,x="1")=>{const _=y==="default"?Ce.fileURL(`/templates/${v.name}`):Ce.apiURL(`/workflow_templates/${y}/${v.name}`),h=y==="default"&&x?`-${x}`:"";return`${_}${h}.${v.mediaSubtype}`},"getTemplateThumbnailUrl"),g=n((v,y)=>{const x=v.title??v.name??`${y} Template`;return y==="default"?v.localizedTitle??x:x},"getTemplateTitle"),c=n(v=>(v.localizedDescription||v.description)?.replace(/[-_]/g," ").trim()??"","getTemplateDescription"),b=n(async(v,y)=>{if(!l.value)return!1;a.value=v;let x;try{if(y==="all"){const M=i.value.find($=>$.label===e("templateWorkflows.category.ComfyUI Examples","ComfyUI Examples"))?.modules.find($=>$.moduleName==="all")?.templates.find($=>$.name===v);if(!M||!M.sourceModule)return!1;const I=M.sourceModule;x=await w(v,I);const N=I==="default"?e(`templateWorkflows.template.${v}`,v):v;return t.closeDialog(),await K.loadGraphData(x,!0,!0,N,{openSource:"template"}),!0}x=await w(v,y);const _=y==="default"?e(`templateWorkflows.template.${v}`,v):v;return t.closeDialog(),await K.loadGraphData(x,!0,!0,_,{openSource:"template"}),!0}catch(_){return console.error("Error loading workflow template:",_),!1}finally{a.value=null}},"loadWorkflowTemplate"),w=n(async(v,y)=>y==="default"?fetch(Ce.fileURL(`/templates/${v}.json`)).then(x=>x.json()):fetch(Ce.apiURL(`/workflow_templates/${y}/${v}.json`)).then(x=>x.json()),"fetchTemplateJson");return{selectedTemplate:s,loadingTemplateId:a,isTemplatesLoaded:l,allTemplateGroups:i,loadTemplates:r,selectFirstTemplateCategory:u,selectTemplateCategory:d,getTemplateThumbnailUrl:m,getTemplateTitle:g,getTemplateDescription:c,loadWorkflowTemplate:b}}n(xl,"useTemplateWorkflows");function _l(e={}){const{minWidth:o="15rem",maxWidth:t="1fr",padding:s="0",gap:a="1rem",columns:l}=e;return l!==void 0&&l<1&&console.warn("createGridStyle: columns must be >= 1, defaulting to 1"),{display:"grid",gridTemplateColumns:l?`repeat(${Math.max(1,l??1)}, 1fr)`:`repeat(auto-fill, minmax(${o}, ${t}))`,padding:s,gap:a}}n(_l,"createGridStyle");const ey={class:"text-neutral text-base"},ty={class:"flex gap-2"},oy={class:"relative flex flex-wrap justify-between gap-2 px-6 pb-4"},ny={class:"flex flex-wrap gap-2"},sy={key:0,class:"text-neutral px-6 pt-4 pb-2 text-2xl font-semibold"},ay={key:0,class:"flex h-64 flex-col items-center justify-center text-neutral-500"},ly={class:"mb-2 text-lg"},iy={class:"text-sm"},ry={key:1},uy={key:0,class:"inline-block h-8 w-48 animate-pulse rounded bg-dialog-surface"},cy={class:"relative h-full w-full overflow-hidden rounded-lg"},dy={class:"flex flex-col gap-2 pt-3"},py=["title"],fy={class:"flex justify-between gap-2"},my={class:"flex-1"},vy=["title"],gy={key:0,class:"flex flex-col-reverse justify-center"},hy={key:0,class:"text-sm text-muted"},yy={key:3,class:"mt-6 px-6 text-sm text-muted"},by=q({__name:"WorkflowTemplateSelectorDialog",props:{onClose:{type:Function}},setup(e){const{t:o}=pe(),t=L(0),s=L(!1);Ve(()=>{t.value=Date.now()});const a=as(),l=k(()=>[ul.Local]),i=n(()=>{e.onClose()},"onClose");tn(un,i);const r=cl(),{loadTemplates:u,loadWorkflowTemplate:d,getTemplateThumbnailUrl:m,getTemplateTitle:g,getTemplateDescription:c}=xl(),b=n(ee=>ee.sourceModule||"default","getEffectiveSourceModule"),w=n(ee=>{const Z=b(ee);return m(ee,Z,Z==="default"?"1":"")},"getBaseThumbnailSrc"),v=n(ee=>{const Z=b(ee);return m(ee,Z,Z==="default"?"2":"")},"getOverlayThumbnailSrc"),y=n(ee=>{ee.tutorialUrl&&window.open(ee.tutorialUrl,"_blank")},"openTutorial"),x=k(()=>xe.value?[{id:"skeleton-all",label:"All Templates",icon:"icon-[lucide--layout-grid]"},{id:"skeleton-basics",label:"Basics",icon:"icon-[lucide--graduation-cap]"},{title:"Generation Type",items:[{id:"skeleton-1",label:"...",icon:"icon-[lucide--loader-2]"},{id:"skeleton-2",label:"...",icon:"icon-[lucide--loader-2]"}]},{title:"Closed Source Models",items:[{id:"skeleton-3",label:"...",icon:"icon-[lucide--loader-2]"}]}]:r.navGroupedTemplates),_=k(()=>_l()),h=k(()=>r.enhancedTemplates),S=L("all"),M=k(()=>S.value?r.filterTemplatesByCategory(S.value):h.value),{searchQuery:I,selectedModels:N,selectedUseCases:$,selectedRunsOn:P,sortBy:F,filteredTemplates:U,availableModels:A,availableUseCases:E,availableRunsOn:W,filteredCount:V,totalCount:j,resetFilters:H}=Zh(M),Q=n(ee=>{const Z=S.value==="popular",kt=F.value==="popular";ee==="nav"?Z&&!kt?F.value="popular":!Z&&kt&&(F.value="default"):ee==="sort"&&Z&&!kt&&(S.value="all")},"coordinateNavAndSort");ne(S,()=>Q("nav")),ne(F,()=>Q("sort"));const te=k({get(){return N.value.map(ee=>({name:ee,value:ee}))},set(ee){N.value=ee.map(Z=>Z.value)}}),ue=k({get(){return $.value.map(ee=>({name:ee,value:ee}))},set(ee){$.value=ee.map(Z=>Z.value)}}),Y=k({get(){return P.value.map(ee=>({name:ee,value:ee}))},set(ee){P.value=ee.map(Z=>Z.value)}}),oe=L(null),se=L(null),Te=L([]),Ue=L(0),qe=L(""),nt=k(()=>A.value.map(ee=>({name:ee,value:ee}))),Ke=k(()=>E.value.map(ee=>({name:ee,value:ee}))),je=k(()=>W.value.map(ee=>({name:ee,value:ee}))),yt=k(()=>te.value.length===0?o("templateWorkflows.modelFilter","Model Filter"):te.value.length===1?te.value[0].name:o("templateWorkflows.modelsSelected",{count:te.value.length})),bt=k(()=>ue.value.length===0?o("templateWorkflows.useCaseFilter","Use Case"):ue.value.length===1?ue.value[0].name:o("templateWorkflows.useCasesSelected",{count:ue.value.length})),uo=k(()=>Y.value.length===0?o("templateWorkflows.runsOnFilter","Runs On"):Y.value.length===1?Y.value[0].name:o("templateWorkflows.runsOnSelected",{count:Y.value.length})),Gt=k(()=>[{name:o("templateWorkflows.sort.default","Default"),value:"default"},{name:o("templateWorkflows.sort.recommended","Recommended"),value:"recommended"},{name:o("templateWorkflows.sort.popular","Popular"),value:"popular"},{name:o("templateWorkflows.sort.newest","Newest"),value:"newest"},{name:o("templateWorkflows.sort.vramLowToHigh","VRAM Usage (Low to High)"),value:"vram-low-to-high"},{name:o("templateWorkflows.sort.modelSizeLowToHigh","Model Size (Low to High)"),value:"model-size-low-to-high"},{name:o("templateWorkflows.sort.alphabetical","Alphabetical (A-Z)"),value:"alphabetical"}]),Pt=L(null),ct=k(()=>!I.value.trim()),{paginatedItems:Dt,isLoading:wt,hasMoreItems:st,loadNextPage:co,reset:po}=Yh(U,{itemsPerPage:24}),jt=k(()=>ct.value?Dt.value:U.value);hu(Pt,()=>{ct.value&&st.value&&!wt.value&&co()}),ne([I,S,F,N,$,P],()=>{po(),oe.value=null,Ue.value++});const de=n(async ee=>{oe.value=ee.name;try{await d(ee.name,b(ee)),s.value=!0,i()}finally{oe.value=null}},"onLoadWorkflow"),ke=k(()=>{const ee=x.value.find(Z=>"id"in Z?Z.id===S.value:Z.items?.some(kt=>kt.id===S.value));return ee?"id"in ee?ee.label:ee.items?.find(Z=>Z.id===S.value)?.label||o("templateWorkflows.allTemplates","All Templates"):o("templateWorkflows.allTemplates","All Templates")}),{isLoading:xe}=va(async()=>(await Promise.all([u(),r.loadWorkflowTemplates()]),!0),!1,{immediate:!0}),$e=n(ee=>(ee.includeOnDistributions?.length??0)>0?l.value.some(Z=>ee.includeOnDistributions?.includes(Z)):!0,"isTemplateVisibleOnDistribution");return vt(()=>{Te.value=[]}),(ee,Z)=>{const kt=Ne("tooltip");return f(),G(rs,{"content-title":ee.$t("templateWorkflows.title","Workflow Templates"),class:"workflow-template-selector-dialog"},{leftPanel:O(()=>[z(us,{modelValue:S.value,"onUpdate:modelValue":Z[0]||(Z[0]=ae=>S.value=ae),"nav-items":x.value},{"header-icon":O(()=>Z[8]||(Z[8]=[p("i",{class:"icon-[comfy--template]"},null,-1)])),"header-title":O(()=>[p("span",ey,B(ee.$t("sideToolbar.templates","Templates")),1)]),_:1},8,["modelValue","nav-items"])]),header:O(()=>[z(sn,{modelValue:C(I),"onUpdate:modelValue":Z[1]||(Z[1]=ae=>it(I)?I.value=ae:null),size:"lg",class:"max-w-[384px]"},null,8,["modelValue"])]),"header-right-area":O(()=>[p("div",ty,[C(V)!==C(j)?(f(),G(X,{key:0,variant:"secondary",size:"lg",onClick:C(H)},{default:O(()=>[Z[9]||(Z[9]=p("i",{class:"icon-[lucide--filter-x]"},null,-1)),p("span",null,B(ee.$t("templateWorkflows.resetFilters","Clear Filters")),1)]),_:1},8,["onClick"])):R("",!0)])]),contentFilter:O(()=>[p("div",oy,[p("div",ny,[z(Wt,{modelValue:te.value,"onUpdate:modelValue":Z[2]||(Z[2]=ae=>te.value=ae),"search-query":qe.value,"onUpdate:searchQuery":Z[3]||(Z[3]=ae=>qe.value=ae),class:"w-[250px]",label:yt.value,options:nt.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:O(()=>Z[10]||(Z[10]=[p("i",{class:"icon-[lucide--cpu]"},null,-1)])),_:1},8,["modelValue","search-query","label","options"]),z(Wt,{modelValue:ue.value,"onUpdate:modelValue":Z[4]||(Z[4]=ae=>ue.value=ae),label:bt.value,options:Ke.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:O(()=>Z[11]||(Z[11]=[p("i",{class:"icon-[lucide--target]"},null,-1)])),_:1},8,["modelValue","label","options"]),z(Wt,{modelValue:Y.value,"onUpdate:modelValue":Z[5]||(Z[5]=ae=>Y.value=ae),label:uo.value,options:je.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:O(()=>Z[12]||(Z[12]=[p("i",{class:"icon-[lucide--server]"},null,-1)])),_:1},8,["modelValue","label","options"])]),p("div",null,[z(Qo,{modelValue:C(F),"onUpdate:modelValue":Z[6]||(Z[6]=ae=>it(F)?F.value=ae:null),label:ee.$t("templateWorkflows.sorting","Sort by"),options:Gt.value,class:"w-62.5"},{icon:O(()=>Z[13]||(Z[13]=[p("i",{class:"icon-[lucide--arrow-up-down] text-muted-foreground"},null,-1)])),_:1},8,["modelValue","label","options"])])]),C(xe)?R("",!0):(f(),T("div",sy,[p("span",null,B(ke.value),1)]))]),content:O(()=>[!C(xe)&&C(U).length===0?(f(),T("div",ay,[Z[14]||(Z[14]=p("i",{class:"mb-4 icon-[lucide--search] h-12 w-12 opacity-50"},null,-1)),p("p",ly,B(ee.$t("templateWorkflows.noResults","No templates found")),1),p("p",iy,B(ee.$t("templateWorkflows.noResultsHint","Try adjusting your search or filters")),1)])):(f(),T("div",ry,[C(xe)?(f(),T("span",uy)):R("",!0),(f(),T("div",{key:Ue.value,style:ge(_.value),"data-testid":"template-workflows-content"},[(f(!0),T(le,null,we(C(xe)?12:0,ae=>(f(),G(Ro,{key:`initial-skeleton-${ae}`,size:"compact",variant:"ghost",rounded:"lg",class:"hover:bg-base-background"},{top:O(()=>[z(zo,{ratio:"landscape"},{default:O(()=>Z[15]||(Z[15]=[p("div",{class:"h-full w-full animate-pulse bg-dialog-surface"},null,-1)])),_:1})]),bottom:O(()=>[z(Wo,null,{default:O(()=>Z[16]||(Z[16]=[p("div",{class:"px-4 py-3"},[p("div",{class:"mb-2 h-6 animate-pulse rounded bg-dialog-surface"}),p("div",{class:"h-4 animate-pulse rounded bg-dialog-surface"})],-1)])),_:1})]),_:2},1024))),128)),(f(!0),T(le,null,we(C(xe)?[]:jt.value,ae=>ce((f(),G(Ro,{key:ae.name,ref_for:!0,ref_key:"cardRefs",ref:Te,size:"compact",variant:"ghost",rounded:"lg","data-testid":`template-workflow-${ae.name}`,class:"hover:bg-base-background",onMouseenter:n(At=>se.value=ae.name,"onMouseenter"),onMouseleave:Z[7]||(Z[7]=At=>se.value=null),onClick:n(At=>de(ae),"onClick")},{top:O(()=>[z(zo,{ratio:"square"},{default:O(()=>[p("div",cy,[ae.mediaType==="audio"?(f(),G(Uh,{key:0,src:w(ae)},null,8,["src"])):ae.thumbnailVariant==="compareSlider"?(f(),G(jh,{key:1,"base-image-src":w(ae),"overlay-image-src":v(ae),alt:C(g)(ae,b(ae)),"is-hovered":se.value===ae.name,"is-video":ae.mediaType==="video"||ae.mediaSubtype==="webp"},null,8,["base-image-src","overlay-image-src","alt","is-hovered","is-video"])):ae.thumbnailVariant==="hoverDissolve"?(f(),G(Jh,{key:2,"base-image-src":w(ae),"overlay-image-src":v(ae),alt:C(g)(ae,b(ae)),"is-hovered":se.value===ae.name,"is-video":ae.mediaType==="video"||ae.mediaSubtype==="webp"},null,8,["base-image-src","overlay-image-src","alt","is-hovered","is-video"])):(f(),G(Hh,{key:3,src:w(ae),alt:C(g)(ae,b(ae)),"is-hovered":se.value===ae.name,"is-video":ae.mediaType==="video"||ae.mediaSubtype==="webp","hover-zoom":ae.thumbnailVariant==="zoomHover"?16:5},null,8,["src","alt","is-hovered","is-video","hover-zoom"])),oe.value===ae.name?(f(),G(C(vi),{key:4,class:"absolute inset-0 z-10 m-auto h-12 w-12"})):R("",!0)])]),"bottom-right":O(()=>[ae.tags&&ae.tags.length>0?(f(!0),T(le,{key:0},we(ae.tags,At=>(f(),G(Bo,{key:At,label:At},null,8,["label"]))),128)):R("",!0)]),_:2},1024)]),bottom:O(()=>[z(Wo,null,{default:O(()=>[p("div",dy,[p("h3",{class:"m-0 line-clamp-1 text-sm",title:C(g)(ae,b(ae))},B(C(g)(ae,b(ae))),9,py),p("div",fy,[p("div",my,[p("p",{class:"m-0 line-clamp-2 text-sm text-muted",title:C(c)(ae)},B(C(c)(ae)),9,vy)]),ae.tutorialUrl?(f(),T("div",gy,[se.value===ae.name?ce((f(),G(X,It({key:0,ref_for:!0},ee.$attrs,{variant:"inverted",size:"icon",onClick:_e(At=>y(ae),["stop"])}),{default:O(()=>Z[17]||(Z[17]=[p("i",{class:"icon-[lucide--info] size-4"},null,-1)])),_:2},1040,["onClick"])),[[kt,ee.$t("g.seeTutorial"),void 0,{bottom:!0}]]):R("",!0)])):R("",!0)])])]),_:2},1024)]),_:2},1032,["data-testid","onMouseenter","onClick"])),[[Qe,$e(ae)]])),128)),(f(!0),T(le,null,we(C(wt)?6:0,ae=>(f(),G(Ro,{key:`skeleton-${ae}`,size:"compact",variant:"ghost",rounded:"lg",class:"hover:bg-base-background"},{top:O(()=>[z(zo,{ratio:"square"},{default:O(()=>Z[18]||(Z[18]=[p("div",{class:"h-full w-full animate-pulse bg-dialog-surface"},null,-1)])),_:1})]),bottom:O(()=>[z(Wo,null,{default:O(()=>Z[19]||(Z[19]=[p("div",{class:"px-4 py-3"},[p("div",{class:"mb-2 h-6 animate-pulse rounded bg-dialog-surface"}),p("div",{class:"h-4 animate-pulse rounded bg-dialog-surface"})],-1)])),_:1})]),_:2},1024))),128))],4))])),!C(xe)&&C(st)?(f(),T("div",{key:2,ref_key:"loadTrigger",ref:Pt,class:"mt-4 flex h-4 w-full items-center justify-center"},[C(wt)?(f(),T("div",hy,B(ee.$t("templateWorkflows.loadingMore","Loading more...")),1)):R("",!0)],512)):R("",!0),C(xe)?R("",!0):(f(),T("div",yy,B(ee.$t("templateWorkflows.resultsCount",{count:C(V),total:C(j)})),1))]),_:1},8,["content-title"])}}}),na="global-workflow-template-selector",gs=n(()=>{const e=et(),o=gt();function t(){o.closeDialog({key:na})}n(t,"hide");function s(a="command"){e.showLayoutDialog({key:na,component:by,props:{onClose:t},dialogComponentProps:{pt:{content:{class:"!px-0 overflow-hidden h-full !py-0"},root:{style:"width: 90vw; height: 85vh; max-width: 1400px; display: flex;"}}}})}return n(s,"show"),{show:s,hide:t}},"useWorkflowTemplateSelectorDialog"),Vn=n((e,o,t=30)=>{const s=e instanceof HTMLElement?e:e.target;let a=0;const l=setInterval(()=>{o(a++)},t),i=n(()=>{clearInterval(l),r(),u()},"dispose"),r=Le(document,"mouseup",i),u=Le(s,"mouseup",i);return{dispose:i}},"whileMouseDown"),wy={class:"flex h-8 w-8 items-center justify-center rounded-lg bg-black"},ky=["href","onMousedown","onClick"],Cy={class:"p-menubar-item-label text-nowrap"},Sy={key:3,class:"keybinding-tag ml-auto rounded border border-surface p-1 text-xs text-nowrap text-muted"},xy={key:4,class:"pi pi-angle-right ml-auto"},_y={class:"p-menubar-item-label text-nowrap"},Ty=q({__name:"ComfyMenuButton",setup(e){const{t:o}=pe(),t=Se(),s=Ja(),a=ut(),l=Ya(),i=gt(),r=pt(),u=ie(),d=L(null),m=k({get:n(()=>u.get("Comfy.VueNodes.Enabled")??!1,"get"),set:n(async P=>{await u.set("Comfy.VueNodes.Enabled",P)},"set")});function g(P){d.value?.toggle(P)}n(g,"onLogoMenuClick");const c=n(P=>{const F=typeof P.label=="function"?P.label():P.label,U=F?o(`menuLabels.${We(F)}`,F):void 0;return{...P,label:U,items:P.items?.map(c)}},"translateMenuItem"),b=n(P=>{i.showDialog({key:"global-settings",headerComponent:hr,component:gr,props:{defaultPanel:P}})},"showSettings"),w=n(async()=>{await r.openManager({initialTab:Yt.All,showToastOnLegacyError:!1})},"showManageExtensions"),v=k(()=>a.palettes.map(P=>({key:`theme-${P.id}`,label:P.name,parentPath:"theme",comfyCommand:{active:n(()=>a.activePaletteId===P.id,"active")},command:n(async()=>{await l.loadColorPalette(P.id)},"command")}))),y=k(()=>[{separator:!0},{key:"theme",label:o("menu.theme"),items:v.value},{key:"nodes-2.0-toggle",label:"Nodes 2.0"},{separator:!0},{key:"browse-templates",label:o("menuLabels.Browse Templates"),icon:"icon-[comfy--template]",command:n(()=>gs().show("menu"),"command")},{key:"settings",label:o("g.settings"),icon:"mdi mdi-cog-outline",command:n(()=>{b()},"command")},{key:"manage-extensions",label:o("menu.manageExtensions"),icon:"mdi mdi-puzzle-outline",command:w}]),x=k(()=>{const P=s.menuItems.map(c);let F=P.findIndex(A=>A.key==="Help"),U;if(F!==-1){P[F].icon="mdi mdi-help-circle-outline";const A=F!==P.length-1;U=P.splice(F,1,...A?[{separator:!0}]:[])[0]}return F=P.length,P.splice(F,0,...y.value,...U?[{separator:!0},U]:[]),P}),_=n(()=>{Re(()=>{d.value&&(d.value.dirty=!0)})},"onMenuShow"),h=n(P=>P.comfyCommand?.id==="Comfy.Canvas.ZoomIn"||P.comfyCommand?.id==="Comfy.Canvas.ZoomOut","isZoomCommand"),S=n((P,F)=>{P.comfyCommand&&Vn(F,async()=>{await t.execute(P.comfyCommand.id)},50)},"handleZoomMouseDown"),M=n((P,F)=>{if(h(P)||P.comfyCommand?.active)return F.preventDefault(),F.stopPropagation(),P.comfyCommand?.active&&P.command?.({item:P,originalEvent:F}),!1},"handleItemClick"),I=n(P=>P.parentPath&&(P.parentPath==="theme"||s.menuItemHasActiveStateChildren[P.parentPath]),"hasActiveStateSiblings"),N=n(()=>!1,"handleNodes2ToggleClick"),$=n(async P=>{await u.set("Comfy.VueNodes.Enabled",P)},"onNodes2ToggleChange");return(P,F)=>{const U=Ne("tooltip");return f(),T(le,null,[ce((f(),T("div",{class:J(["comfy-menu-button-wrapper flex shrink-0 cursor-pointer flex-col items-center justify-center p-2 transition-colors",{"comfy-menu-button-active":d.value?.visible}]),onClick:F[0]||(F[0]=A=>g(A))},[p("div",wy,[z(Vh,{alt:"ComfyUI Logo",class:"comfyui-logo h-[18px] w-[18px] text-white",mode:"fill"})])],2)),[[U,{value:C(o)("sideToolbar.labels.menu"),showDelay:300,hideDelay:300}]]),z(C(gi),{ref_key:"menuRef",ref:d,model:x.value,popup:!0,class:"comfy-command-menu",onShow:_},{item:O(({item:A,props:E})=>[A.key!=="nodes-2.0-toggle"?(f(),T("a",It({key:0,class:"p-menubar-item-link px-4 py-2"},E.action,{href:A.url,target:"_blank",class:typeof A.class=="function"?A.class():A.class,onMousedown:n(W=>h(A)?S(A,W):void 0,"onMousedown"),onClick:n(W=>M(A,W),"onClick")}),[I(A)?(f(),T("i",{key:0,class:J(["p-menubar-item-icon pi pi-check text-sm",{invisible:!A.comfyCommand?.active?.()}])},null,2)):A.icon&&A.comfyCommand?.id!=="Comfy.NewBlankWorkflow"?(f(),T("span",{key:1,class:J(["p-menubar-item-icon text-sm",A.icon])},null,2)):R("",!0),p("span",Cy,B(A.label),1),A.comfyCommand?.id==="Comfy.NewBlankWorkflow"?(f(),T("i",{key:2,class:J(["ml-auto",A.icon])},null,2)):R("",!0),A?.comfyCommand?.keybinding?(f(),T("span",Sy,B(A.comfyCommand.keybinding.combo.toString()),1)):R("",!0),A.items?(f(),T("i",xy)):R("",!0)],16,ky)):(f(),T("div",{key:1,class:"flex items-center justify-between px-4 py-2",onClick:_e(N,["stop"])},[p("span",_y,B(A.label),1),z(C(Jt),{severity:"info",class:"ml-2 text-xs"},{default:O(()=>[Ie(B(P.$t("g.beta")),1)]),_:1}),z(C(Oa),{modelValue:m.value,"onUpdate:modelValue":[F[1]||(F[1]=W=>m.value=W),$],class:"ml-4","aria-label":A.label,pt:{root:{style:{width:"38px",height:"20px"}},handle:{style:{width:"16px",height:"16px"}}},onClick:F[2]||(F[2]=_e(()=>{},["stop"]))},null,8,["modelValue","aria-label"])]))]),_:1},8,["model"])],64)}}}),Ny=Ee(Ty,[["__scopeId","data-v-7f8c3b49"]]),$y={class:"side-bar-button-content"},Iy={key:0,class:"side-bar-button-label"},My=q({__name:"SidebarIcon",props:{icon:{default:""},selected:{type:Boolean,default:!1},tooltip:{default:""},tooltipSuffix:{default:""},iconBadge:{type:[String,Function],default:""},label:{default:""},isSmall:{type:Boolean,default:!1}},emits:["click"],setup(e,{emit:o}){const{t}=pe(),s=o,a=k(()=>typeof e.iconBadge=="function"?e.iconBadge()??"":e.iconBadge),l=k(()=>!!a.value),i=k(()=>t(e.tooltip)+e.tooltipSuffix);return(r,u)=>{const d=Ne("tooltip");return ce((f(),G(X,{class:J(C(fe)("side-bar-button cursor-pointer border-none",r.selected&&"side-bar-button-selected")),variant:"muted-textonly","aria-label":i.value,onClick:u[0]||(u[0]=m=>s("click",m))},{default:O(()=>[p("div",$y,[Me(r.$slots,"icon",{},()=>[l.value?(f(),G(C(hi),{key:0,value:a.value},{default:O(()=>[typeof r.icon=="string"?(f(),T("i",{key:0,class:J(r.icon+" side-bar-button-icon")},null,2)):(f(),G(Zt(r.icon),{key:1,class:"side-bar-button-icon"}))]),_:1},8,["value"])):typeof r.icon=="string"?(f(),T("i",{key:1,class:J(r.icon+" side-bar-button-icon")},null,2)):typeof r.icon=="object"?(f(),G(Zt(r.icon),{key:2,class:"side-bar-button-icon"})):R("",!0)],!0),r.label&&!r.isSmall?(f(),T("span",Iy,B(C(t)(r.label)),1)):R("",!0)])]),_:3},8,["class","aria-label"])),[[d,{value:i.value,showDelay:300,hideDelay:300}]])}}}),Ut=Ee(My,[["__scopeId","data-v-bbb98ec9"]]),Py=q({__name:"SidebarBottomPanelToggleButton",setup(e){const o=so(),t=n(()=>{o.toggleBottomPanel()},"toggleConsole");return(s,a)=>(f(),G(Ut,{icon:"icon-[ph--terminal-bold]",label:s.$t("sideToolbar.labels.console"),tooltip:s.$t("menu.toggleBottomPanel"),selected:C(o).activePanel=="terminal",onClick:t},null,8,["label","tooltip","selected"]))}}),Dy=q({__name:"SidebarSettingsButton",setup(e){const{t:o}=pe(),{getCommand:t,formatKeySequence:s}=Se(),a=t("Comfy.ShowSettingsDialog"),l=k(()=>`${o("g.settings")} (${s(a)})`),i=n(()=>{a.function()},"showSettingsDialog");return(r,u)=>(f(),G(Ut,{icon:"icon-[lucide--settings]",label:r.$t("g.settings"),tooltip:l.value,onClick:i},null,8,["label","tooltip"]))}}),Ay=q({__name:"SidebarShortcutsToggleButton",setup(e){const{t:o}=pe(),t=so(),s=Se(),a=s.getCommand("Workspace.ToggleBottomPanel.Shortcuts"),{formatKeySequence:l}=s,i=k(()=>t.activePanel==="shortcuts"),r=k(()=>`${o("shortcuts.keyboardShortcuts")} (${l(a)})`),u=n(()=>{t.togglePanel("shortcuts")},"toggleShortcutsPanel");return(d,m)=>(f(),G(Ut,{icon:"icon-[lucide--keyboard]",label:d.$t("shortcuts.shortcuts"),tooltip:r.value,selected:i.value,onClick:u},null,8,["label","tooltip","selected"]))}}),Ey=["width","height"],Ly={"clip-path":"url(#clip0_1099_16244)"},Oy=["stroke"],Vy=q({__name:"PuzzleIcon",props:{size:{default:16},color:{default:"currentColor"},class:{}},setup(e){const o=k(()=>e.class||"");return(t,s)=>(f(),T("svg",{xmlns:"http://www.w3.org/2000/svg",width:t.size,height:t.size,viewBox:"0 0 16 16",fill:"none",class:J(o.value)},[p("g",Ly,[p("path",{d:"M4.99992 3.00016C4.99992 2.07969 5.74611 1.3335 6.66658 1.3335C7.58706 1.3335 8.33325 2.07969 8.33325 3.00016V4.00016H8.99992C9.9318 4.00016 10.3977 4.00016 10.7653 4.1524C11.2553 4.35539 11.6447 4.74474 11.8477 5.2348C11.9999 5.60234 11.9999 6.06828 11.9999 7.00016H12.9999C13.9204 7.00016 14.6666 7.74635 14.6666 8.66683C14.6666 9.5873 13.9204 10.3335 12.9999 10.3335H11.9999V11.4668C11.9999 12.5869 11.9999 13.147 11.7819 13.5748C11.5902 13.9511 11.2842 14.2571 10.9079 14.4488C10.4801 14.6668 9.92002 14.6668 8.79992 14.6668H8.33325V13.5002C8.33325 12.6717 7.66168 12.0002 6.83325 12.0002C6.00482 12.0002 5.33325 12.6717 5.33325 13.5002V14.6668H4.53325C3.41315 14.6668 2.85309 14.6668 2.42527 14.4488C2.04895 14.2571 1.74299 13.9511 1.55124 13.5748C1.33325 13.147 1.33325 12.5869 1.33325 11.4668V10.3335H2.33325C3.25373 10.3335 3.99992 9.5873 3.99992 8.66683C3.99992 7.74635 3.25373 7.00016 2.33325 7.00016H1.33325C1.33325 6.06828 1.33325 5.60234 1.48549 5.2348C1.68848 4.74474 2.07783 4.35539 2.56789 4.1524C2.93543 4.00016 3.40137 4.00016 4.33325 4.00016H4.99992V3.00016Z",stroke:t.color,"stroke-width":"1.2","stroke-linecap":"round","stroke-linejoin":"round"},null,8,Oy)]),s[0]||(s[0]=p("defs",null,[p("clipPath",{id:"clip0_1099_16244"},[p("rect",{width:"16",height:"16",fill:"white"})])],-1))],10,Ey))}}),sa=Sa.create({baseURL:Xa(),headers:{"Content-Type":"application/json"}}),Ry=n(()=>{const e=L(!1),o=L(null);ne(()=>Xa(),l=>{sa.defaults.baseURL=l});const t=n((l,i,r)=>{if(!Sa.isAxiosError(l))return l instanceof Error?`${i}: ${l.message}`:`${i}: Unknown error occurred`;const u=l;if(u.response){const{status:d,data:m}=u.response;if(r&&r[d])return r[d];switch(d){case 400:return`Bad request: ${m?.message||"Invalid input"}`;case 401:return"Unauthorized: Authentication required";case 403:return`Forbidden: ${m?.message||"Access denied"}`;case 404:return`Not found: ${m?.message||"Resource not found"}`;case 500:return`Server error: ${m?.message||"Internal server error"}`;default:return`${i}: ${m?.message||u.message}`}}return`${i}: ${u.message}`},"handleApiError"),s=n(async(l,i,r)=>{e.value=!0,o.value=null;try{return(await l()).data}catch(u){return yr(u)||(o.value=t(u,i,r)),null}finally{e.value=!1}},"executeApiRequest");return{isLoading:e,error:o,getReleases:n(async(l,i)=>{const r="/releases";return await s(()=>sa.get(r,{params:l,signal:i}),"Failed to get releases",{400:"Invalid project or version parameter"})},"getReleases")}},"useReleaseService"),To=Mt("release",()=>{const e=L([]),o=L(!1),t=L(null),s=Ry(),a=as(),l=ie(),i=k(()=>a?.systemStats?.system?.comfyui_version??""),r=k(()=>l.get("Comfy.Locale")),u=k(()=>l.get("Comfy.Release.Version")),d=k(()=>l.get("Comfy.Release.Status")),m=k(()=>l.get("Comfy.Release.Timestamp")),g=k(()=>l.get("Comfy.Notification.ShowVersionUpdates")),c=k(()=>e.value[0]??null),b=k(()=>e.value.slice(0,3)),w=4320*60*1e3,v=n((U,A)=>Ot.valid(U)&&Ot.valid(A)?Ot.compare(U,A):U===A?0:1,"compareVersions"),y=k(()=>!!c.value&&v(c.value.version,i.value||"0.0.0")>0),x=k(()=>!!c.value&&v(c.value.version,i.value||"0.0.0")===0),_=k(()=>{const U=c.value?.attention;return U==="medium"||U==="high"}),h=k(()=>!(!Ge()||ft||!g.value||!y.value||!_.value||u.value===c.value?.version&&["skipped","changelog seen"].includes(d.value))),S=k(()=>{if(!Ge()||ft||!g.value||!y.value)return!1;const{version:U}=c.value;return u.value===U&&d.value==="changelog seen"?!1:_.value?!0:!(u.value===U&&d.value==="skipped"&&m.value&&Date.now()-m.value>=w)}),M=k(()=>!(!Ge()&&!ft||!g.value||!c.value||!!Ot.valid(i.value)&&!x.value||u.value===c.value.version&&d.value==="what's new seen"));async function I(U){U!==c.value?.version||d.value==="changelog seen"||(await l.set("Comfy.Release.Version",U),await l.set("Comfy.Release.Status","skipped"),await l.set("Comfy.Release.Timestamp",Date.now()))}n(I,"handleSkipRelease");async function N(U){U===c.value?.version&&(await l.set("Comfy.Release.Version",U),await l.set("Comfy.Release.Status","changelog seen"),await l.set("Comfy.Release.Timestamp",Date.now()))}n(N,"handleShowChangelog");async function $(U){U===c.value?.version&&(await l.set("Comfy.Release.Version",U),await l.set("Comfy.Release.Status","what's new seen"),await l.set("Comfy.Release.Timestamp",Date.now()))}n($,"handleWhatsNewSeen");async function P(){if(!o.value&&g.value&&!a.systemStats?.system?.argv?.includes("--disable-api-nodes")){o.value=!0,t.value=null;try{a.systemStats||await xa(a.isInitialized);const U=await s.getReleases({project:ft?"cloud":"comfyui",current_version:i.value,form_factor:a.getFormFactor(),locale:br(r.value)});U!==null?e.value=U:s.error.value&&(t.value=s.error.value)}catch(U){t.value=U instanceof Error?U.message:"Unknown error occurred"}finally{o.value=!1}}}n(P,"fetchReleases");async function F(){await P()}return n(F,"initialize"),{releases:e,isLoading:o,error:t,recentRelease:c,recentReleases:b,shouldShowToast:h,shouldShowRedDot:S,shouldShowPopup:M,shouldShowUpdateButton:y,handleSkipRelease:I,handleShowChangelog:N,handleWhatsNewSeen:$,fetchReleases:P,initialize:F}}),Wy=Object.freeze(Object.defineProperty({__proto__:null,useReleaseStore:To},Symbol.toStringTag,{value:"Module"})),zy=["aria-label"],By={class:"w-full"},Fy={class:"flex w-full flex-col gap-2",role:"menubar"},Uy=["onClick","onMouseenter","onMouseleave"],Gy={class:"help-menu-icon-container"},jy={class:"help-menu-icon"},Hy={key:0,class:"menu-red-dot"},qy={class:"menu-label"},Ky={key:0,class:"icon-[lucide--external-link] text-primary w-4 h-4 ml-auto"},Qy={key:1,class:"pi pi-chevron-right ml-auto"},Jy={key:0,class:"submenu-divider"},Yy=["onClick"],Xy={class:"menu-label"},Zy={key:0,class:"w-full","data-testid":"whats-new-section"},eb={class:"section-description flex items-center gap-2.5 self-stretch px-8 pt-2 pb-2"},tb=["aria-label"],ob=["onClick","onKeydown"],nb={class:"release-content"},sb={class:"release-title"},ab=["datetime"],lb={class:"normal-state"},ib={class:"hover-state"},rb={key:1,class:"help-menu-item",role:"status","aria-live":"polite"},ub={key:2,class:"help-menu-item",role:"status"},cb=q({__name:"HelpCenterMenuContent",emits:["close"],setup(e,{emit:o}){const t={MINUTE:6e4,HOUR:36e5,DAY:864e5,WEEK:6048e5,MONTH:2592e6,YEAR:31536e6},s={DELAY_MS:100,OFFSET_PX:8,Z_INDEX:10001},{t:a}=pe(),l=zt(),{staticUrls:i,buildDocsUrl:r}=lo(),u=To(),d=Se(),m=ie(),g=L(Date.now()),c=o,b=L(!1),w=L(null),v=L({});let y=null;const x=k(()=>u.releases.length>0),_=k(()=>m.get("Comfy.Notification.ShowVersionUpdates")),{shouldShowRedDot:h}=Za(),{isNewManagerUI:S}=pt(),M=k(()=>[{key:"desktop-guide",type:"item",label:a("helpCenter.desktopUserGuide"),visible:Ge(),action:n(()=>{P(r("/installation/desktop",{includeLocale:!0,platform:!0})),c("close")},"action")},{key:"dev-tools",type:"item",label:a("helpCenter.openDevTools"),visible:Ge(),action:n(()=>{H(),c("close")},"action")},{key:"divider-1",type:"divider",visible:Ge()},{key:"reinstall",type:"item",label:a("helpCenter.reinstall"),visible:Ge(),action:n(()=>{Q(),c("close")},"action")}].filter(oe=>oe.visible!==!1)),I=k(()=>!!M.value.length),N=k(()=>$.value.find(Y=>Y.key==="more")),$=k(()=>{const Y=[{key:"feedback",type:"item",icon:"icon-[lucide--clipboard-pen]",label:a("helpCenter.feedback"),action:n(()=>{d.execute("Comfy.ContactSupport"),c("close")},"action")},{key:"help",type:"item",icon:"icon-[lucide--message-circle-question]",label:a("helpCenter.help"),action:n(()=>{d.execute("Comfy.ContactSupport"),c("close")},"action")},{key:"docs",type:"item",icon:"icon-[lucide--book-open]",label:a("helpCenter.docs"),showExternalIcon:!0,action:n(()=>{P(r("/",{includeLocale:!0})),c("close")},"action")},{key:"discord",type:"item",icon:"pi pi-discord",label:"Discord",showExternalIcon:!0,action:n(()=>{P(i.discord),c("close")},"action")},{key:"github",type:"item",icon:"icon-[lucide--github]",label:a("helpCenter.github"),showExternalIcon:!0,action:n(()=>{P(i.github),c("close")},"action")}];return Y.push({key:"manager",type:"item",icon:Vy,label:a("helpCenter.managerExtension"),showRedDot:h.value,action:n(async()=>{await pt().openManager({initialTab:Yt.All,showToastOnLegacyError:!1}),c("close")},"action")}),!Ge()&&!ft&&S.value&&Y.push({key:"update-comfyui",type:"item",icon:"icon-[lucide--download]",label:a("helpCenter.updateComfyUI"),action:n(()=>{te(),c("close")},"action")}),Y.push({key:"more",type:"item",icon:"",label:a("helpCenter.more"),visible:I.value,action:n(()=>{},"action"),items:M.value}),Y}),P=n(Y=>{window.open(Y,"_blank","noopener,noreferrer")},"openExternalLink"),F=n(()=>{y&&(clearTimeout(y),y=null)},"clearHoverTimeout"),U=n(Y=>{const oe=Y.getBoundingClientRect(),se=210,Ue=(N.value?.items?.filter(bt=>bt.visible!==!1).length||0)*48+16,qe=w.value?.offsetHeight||Ue,nt=window.innerWidth,Ke=window.innerHeight;let je=oe.top,yt=oe.right+s.OFFSET_PX;return yt+se>nt&&(yt=oe.left-se-s.OFFSET_PX),je+qe>Ke&&(je=Math.max(s.OFFSET_PX,oe.bottom-qe)),je<s.OFFSET_PX&&(je=s.OFFSET_PX),je-=8,{position:"fixed",top:`${je}px`,left:`${yt}px`,zIndex:s.Z_INDEX}},"calculateSubmenuPosition"),A=n(Y=>{if(!Y)return"date";const oe=new Date(Y),Te=Math.abs(new Date().getTime()-oe.getTime()),Ue=[{unit:t.YEAR,key:"yearsAgo"},{unit:t.MONTH,key:"monthsAgo"},{unit:t.WEEK,key:"weeksAgo"},{unit:t.DAY,key:"daysAgo"},{unit:t.HOUR,key:"hoursAgo"},{unit:t.MINUTE,key:"minutesAgo"}];for(const{unit:qe,key:nt}of Ue){const Ke=Math.floor(Te/qe);if(Ke>0)return a(`g.relativeTime.${nt}`,{count:Ke})}return a("g.relativeTime.now")},"formatReleaseDate"),E=n(async(Y,oe)=>{if(Y!=="more"||!N.value?.items||!N.value.items.some(Ue=>Ue.visible!==!1))return;F();const Te=oe.currentTarget;v.value=U(Te),b.value=!0,await Re(),w.value&&(v.value=U(Te))},"onMenuItemHover"),W=n(Y=>{Y==="more"&&(y=window.setTimeout(()=>{b.value=!1},s.DELAY_MS))},"onMenuItemLeave"),V=n(()=>{F()},"onSubmenuHover"),j=n(()=>{b.value=!1},"onSubmenuLeave"),H=n(()=>{Ge()&&ho().openDevTools()},"openDevTools"),Q=n(()=>{Ge()&&ho().reinstall()},"onReinstall"),te=n(async()=>{const{updateComfyUI:Y,rebootComfyUI:oe,error:se}=wr();l.add({severity:"info",summary:a("helpCenter.updateComfyUIStarted"),detail:a("helpCenter.updateComfyUIStartedDetail"),life:3e3});try{if(await Y({is_stable:!0})===null||se.value){l.add({severity:"error",summary:a("g.error"),detail:se.value||a("helpCenter.updateComfyUIFailed"),life:5e3});return}l.add({severity:"success",summary:a("helpCenter.updateComfyUISuccess"),detail:a("helpCenter.updateComfyUISuccessDetail"),life:3e3}),await oe()}catch(Te){l.add({severity:"error",summary:a("g.error"),detail:Te instanceof Error?Te.message:a("g.unknownError"),life:5e3})}},"onUpdateComfyUI"),ue=n(Y=>{u.handleShowChangelog(Y.version);const oe=ls(Y.version),se=`${r("/changelog",{includeLocale:!0})}#${oe}`;P(se),c("close")},"onReleaseClick");return Ve(async()=>{x.value||await u.fetchReleases()}),vt(()=>{Math.round((Date.now()-g.value)/1e3)}),(Y,oe)=>(f(),T("div",{class:"help-center-menu flex flex-col items-start gap-1",role:"menu","aria-label":Y.$t("help.helpCenterMenu")},[p("div",By,[p("nav",Fy,[(f(!0),T(le,null,we($.value,se=>ce((f(),T("button",{key:se.key,type:"button",class:J(["help-menu-item",{"more-item":se.key==="more"}]),role:"menuitem",onClick:se.action,onMouseenter:n(Te=>E(se.key,Te),"onMouseenter"),onMouseleave:n(Te=>W(se.key),"onMouseleave")},[p("div",Gy,[p("div",jy,[typeof se.icon=="object"?(f(),G(Zt(se.icon),{key:0,size:16})):(f(),T("i",{key:1,class:J(se.icon)},null,2))]),se.showRedDot?(f(),T("div",Hy)):R("",!0)]),p("span",qy,B(se.label),1),se.showExternalIcon?(f(),T("i",Ky)):R("",!0),se.key==="more"?(f(),T("i",Qy)):R("",!0)],42,Uy)),[[Qe,se.visible!==!1]])),128))]),oe[0]||(oe[0]=p("div",{class:"flex h-4 flex-col items-center justify-between self-stretch p-2"},[p("div",{class:"w-full border-b border-interface-menu-stroke"})],-1))]),(f(),G(Lt,{to:"body"},[b.value?(f(),T("div",{key:0,ref_key:"submenuRef",ref:w,class:"more-submenu",style:ge(v.value),onMouseenter:V,onMouseleave:j},[(f(!0),T(le,null,we(N.value?.items,se=>(f(),T(le,{key:se.key},[se.type==="divider"?ce((f(),T("div",Jy,null,512)),[[Qe,se.visible!==!1]]):ce((f(),T("button",{key:1,type:"button",class:"help-menu-item submenu-item",role:"menuitem",onClick:se.action},[p("span",Xy,B(se.label),1)],8,Yy)),[[Qe,se.visible!==!1]])],64))),128))],36)):R("",!0)])),_.value?(f(),T("section",Zy,[p("h3",eb,B(Y.$t("helpCenter.whatsNew")),1),x.value?(f(),T("div",{key:0,role:"group","aria-label":Y.$t("help.recentReleases")},[(f(!0),T(le,null,we(C(u).recentReleases,se=>(f(),T("article",{key:se.id||se.version,class:"release-menu-item flex h-12 min-h-6 cursor-pointer items-center gap-2 self-stretch rounded p-2 transition-colors hover:bg-interface-menu-component-surface-hovered",role:"button",tabindex:"0",onClick:n(Te=>ue(se),"onClick"),onKeydown:[Xt(Te=>ue(se),["enter"]),Xt(_e(Te=>ue(se),["prevent"]),["space"])]},[oe[1]||(oe[1]=p("i",{class:"help-menu-icon icon-[lucide--package]","aria-hidden":"true"},null,-1)),p("div",nb,[p("span",sb,B(Y.$t("g.releaseTitle",{package:"Comfy",version:se.version})),1),p("time",{class:"release-date",datetime:se.published_at},[p("span",lb,B(A(se.published_at)),1),p("span",ib,B(Y.$t("helpCenter.clickToLearnMore")),1)],8,ab)])],40,ob))),128))],8,tb)):C(u).isLoading?(f(),T("div",rb,[oe[2]||(oe[2]=p("i",{class:"pi pi-spin pi-spinner help-menu-icon","aria-hidden":"true"},null,-1)),p("span",null,B(Y.$t("helpCenter.loadingReleases")),1)])):(f(),T("div",ub,[oe[3]||(oe[3]=p("i",{class:"pi pi-info-circle help-menu-icon","aria-hidden":"true"},null,-1)),p("span",null,B(Y.$t("helpCenter.noRecentReleases")),1)]))])):R("",!0)],8,zy))}}),db=Ee(cb,[["__scopeId","data-v-8ecd06e2"]]),pb={key:0,class:"release-toast-popup"},fb={class:"w-96 max-h-96 bg-base-background border border-border-default rounded-lg shadow-[1px_1px_8px_0_rgba(0,0,0,0.4)] flex flex-col"},mb={class:"p-4 flex flex-col gap-4 flex-1 min-h-0"},vb={class:"flex items-center gap-4"},gb={class:"flex flex-col gap-1"},hb={class:"text-sm font-normal text-base-foreground leading-[1.429]"},yb={class:"text-sm font-normal text-muted-foreground leading-[1.21]"},bb=["innerHTML"],wb={class:"flex justify-between items-center px-4 pb-4"},kb=["href"],Cb={class:"flex items-center gap-4"},Sb=q({__name:"ReleaseNotificationToast",setup(e,{expose:o}){const{buildDocsUrl:t}=lo(),{toastErrorHandler:s}=Bt(),a=To(),{t:l}=pe(),i=L(!1),r=k(()=>a.recentRelease),u=k(()=>a.shouldShowToast&&!i.value),d=k(()=>{const _=t("/changelog",{includeLocale:!0});if(r.value?.version){const h=ls(r.value.version);return`${_}#${h}`}return _}),m=k(()=>{if(!r.value?.content)return xt.sanitize(`<p>${l("releaseToast.description")}</p>`);try{const S=r.value.content.replace(/^# .+$/m,"").replace(/!\[.*?\]\(.*?\)/g,""),M=S.trim();return!M||M.replace(/\s+/g,"")===""?xt.sanitize(`<p>${l("releaseToast.description")}</p>`):el(S)}catch(_){console.error("Error parsing markdown:",_);const h=r.value.content.replace(/\n/g,"<br>");return h.trim()?xt.sanitize(h):xt.sanitize(`<p>${l("releaseToast.description")}</p>`)}});let g=null;const c=n(()=>{g&&clearTimeout(g),g=setTimeout(()=>{w()},8e3)},"startAutoHide"),b=n(()=>{g&&(clearTimeout(g),g=null)},"clearAutoHide"),w=n(()=>{i.value=!0,b()},"dismissToast"),v=n(()=>{r.value&&a.handleSkipRelease(r.value.version),w()},"handleSkip"),y=n(()=>{r.value&&a.handleShowChangelog(r.value.version),w()},"handleLearnMore"),x=n(async()=>{if(Ge()){try{await Se().execute("Comfy-Desktop.CheckForUpdates"),w()}catch(_){s(_)}return}window.open(t("/installation/update_comfyui",{includeLocale:!0}),"_blank"),w()},"handleUpdate");return ne(u,_=>{_?c():b()}),Ve(async()=>{a.releases.length||await a.fetchReleases()}),o({handleSkip:v,handleLearnMore:y,handleUpdate:x}),(_,h)=>u.value?(f(),T("div",pb,[p("div",fb,[p("div",mb,[p("div",vb,[h[0]||(h[0]=p("div",{class:"p-3 bg-primary-background-hover rounded-lg flex items-center justify-center shrink-0"},[p("i",{class:"icon-[lucide--rocket] w-4 h-4 text-white"})],-1)),p("div",gb,[p("div",hb,B(_.$t("releaseToast.newVersionAvailable")),1),p("div",yb,B(r.value?.version),1)])]),p("div",{class:"pl-14 text-sm font-normal text-muted-foreground leading-[1.21] overflow-y-auto flex-1 min-h-0",innerHTML:m.value},null,8,bb)]),p("div",wb,[p("a",{class:"flex items-center gap-2 text-sm font-normal py-1 text-muted-foreground hover:text-base-foreground",href:d.value,target:"_blank",rel:"noopener noreferrer",onClick:y},[h[1]||(h[1]=p("i",{class:"icon-[lucide--external-link] w-4 h-4"},null,-1)),Ie(" "+B(_.$t("releaseToast.whatsNew")),1)],8,kb),p("div",Cb,[p("button",{class:"h-6 px-0 bg-transparent border-none text-sm font-normal text-muted-foreground hover:text-base-foreground cursor-pointer",onClick:v},B(_.$t("releaseToast.skip")),1),p("button",{class:"h-10 px-4 bg-secondary-background hover:bg-secondary-background-hover rounded-lg border-none text-sm font-normal text-base-foreground cursor-pointer",onClick:x},B(_.$t("releaseToast.update")),1)])])])])):R("",!0)}}),xb=Ee(Sb,[["__scopeId","data-v-ba02c61a"]]),_b={key:0,class:"whats-new-popup-container left-4"},Tb={class:"modal-body flex flex-col gap-4 px-0 pt-0 pb-2 flex-1"},Nb=["innerHTML"],$b={class:"modal-footer flex justify-between items-center gap-4 px-4 pb-4"},Ib=["href"],Mb={class:"footer-actions flex items-center gap-4"},Pb=q({__name:"WhatsNewPopup",emits:["whats-new-dismissed"],setup(e,{expose:o,emit:t}){const{buildDocsUrl:s}=lo(),a=To(),{t:l}=pe(),i=t,r=L(!1),u=k(()=>a.recentRelease),d=k(()=>a.shouldShowPopup&&!r.value),m=k(()=>{const v=s("/changelog",{includeLocale:!0});if(u.value?.version){const y=ls(u.value.version);return`${v}#${y}`}return v}),g=k(()=>{if(!u.value?.content)return xt.sanitize(`<p>${l("whatsNewPopup.noReleaseNotes")}</p>`);try{const v=u.value.content,y=v.trim();if(!y||y.replace(/\s+/g,"")==="")return xt.sanitize(`<p>${l("whatsNewPopup.noReleaseNotes")}</p>`);const x=v.match(/!\[.*?\]\(.*?\)/),_=x?x[0]:"",h=v.replace(/!\[.*?\]\(.*?\)/,"").trim(),S=[_,h].filter(Boolean).join(`
|
|
9
|
+
|
|
10
|
+
`);return el(S)}catch(v){console.error("Error parsing markdown:",v);const y=u.value.content.replace(/\n/g,"<br>");return y.trim()?xt.sanitize(y):xt.sanitize(`<p>${l("whatsNewPopup.noReleaseNotes")}</p>`)}}),c=n(()=>{r.value=!1},"show"),b=n(()=>{r.value=!0,i("whats-new-dismissed")},"hide"),w=n(async()=>{u.value&&await a.handleWhatsNewSeen(u.value.version),b()},"closePopup");return Ve(async()=>{a.releases.length||await a.fetchReleases()}),o({show:c,hide:b,closePopup:w}),(v,y)=>d.value?(f(),T("div",_b,[p("div",{class:"whats-new-popup",onClick:y[0]||(y[0]=_e(()=>{},["stop"]))},[z(X,{class:"close-button absolute top-2 right-2 z-10 w-8 h-8 p-2 rounded-lg opacity-50","aria-label":v.$t("g.close"),size:"icon-sm",variant:"muted-textonly",onClick:w},{default:O(()=>y[1]||(y[1]=[p("i",{class:"icon-[lucide--x]"},null,-1)])),_:1},8,["aria-label"]),p("div",Tb,[p("div",{class:"content-text max-h-96 overflow-y-auto",innerHTML:g.value},null,8,Nb)]),p("div",$b,[p("a",{class:"learn-more-link flex items-center gap-2 text-sm font-normal py-1",href:m.value,target:"_blank",rel:"noopener noreferrer",onClick:w},[y[2]||(y[2]=p("i",{class:"icon-[lucide--external-link]"},null,-1)),Ie(" "+B(v.$t("whatsNewPopup.learnMore")),1)],8,Ib),p("div",Mb,[z(X,{class:"h-8",size:"sm",variant:"muted-textonly",onClick:w},{default:O(()=>[Ie(B(v.$t("whatsNewPopup.later")),1)]),_:1})])])])])):R("",!0)}}),Db=Ee(Pb,[["__scopeId","data-v-98a9f324"]]),Rn=Mt("helpCenter",()=>{const e=L(!1);return{isVisible:e,toggle:n(()=>{e.value=!e.value},"toggle"),show:n(()=>{e.value=!0},"show"),hide:n(()=>{e.value=!1},"hide")}}),Ab=q({__name:"SidebarHelpCenterIcon",props:{isSmall:{type:Boolean}},setup(e){const o=ie(),t=To(),s=Rn(),{isVisible:a}=Fe(s),{shouldShowRedDot:l}=Fe(t),i=kr(),{showNodeConflictDialog:r}=et(),{shouldShowRedDot:u,markConflictsAsSeen:d}=Za(),m=e,{isSmall:g}=_a(m),c=k(()=>l.value||u.value),b=k(()=>o.get("Comfy.Sidebar.Location")),w=n(()=>{s.toggle()},"toggleHelpCenter"),v=n(()=>{s.hide()},"closeHelpCenter"),y=n(async()=>{try{await i.shouldShowConflictModalAfterUpdate()&&x()}catch(_){console.error("[HelpCenter] Error checking conflict modal:",_)}},"handleWhatsNewDismissed"),x=n(()=>{r({showAfterWhatsNew:!0,dialogComponentProps:{onClose:n(()=>{d()},"onClose")}})},"showConflictModal");return Ve(async()=>{await t.initialize()}),(_,h)=>(f(),T("div",null,[z(Ut,{icon:"pi pi-question-circle",class:"comfy-help-center-btn",label:_.$t("menu.help"),tooltip:_.$t("sideToolbar.helpCenter"),"icon-badge":c.value?"•":"","is-small":C(g),onClick:w},null,8,["label","tooltip","icon-badge","is-small"]),(f(),G(Lt,{to:"#graph-canvas-container"},[C(a)?(f(),T("div",{key:0,class:J(["help-center-popup",{"sidebar-left":b.value==="left","sidebar-right":b.value==="right","small-sidebar":C(g)}])},[z(db,{onClose:v})],2)):R("",!0)])),(f(),G(Lt,{to:"#graph-canvas-container"},[z(xb,{class:J({"sidebar-left":b.value==="left","sidebar-right":b.value==="right","small-sidebar":C(g)})},null,8,["class"])])),(f(),G(Lt,{to:"#graph-canvas-container"},[z(Db,{class:J({"sidebar-left":b.value==="left","sidebar-right":b.value==="right","small-sidebar":C(g)}),onWhatsNewDismissed:y},null,8,["class"])])),(f(),G(Lt,{to:"body"},[C(a)?(f(),T("div",{key:0,class:"help-center-backdrop",onClick:v})):R("",!0)]))]))}}),Eb=Ee(Ab,[["__scopeId","data-v-91ae5559"]]),Lb=q({__name:"SidebarLogoutIcon",setup(e){const{t:o}=pe(),t=tl(),s=k(()=>`${o("sideToolbar.logout")} (${t.currentUser?.username})`),a=n(async()=>{await t.logout(),window.location.reload()},"logout");return(l,i)=>(f(),G(Ut,{icon:"pi pi-sign-out",tooltip:s.value,label:l.$t("sideToolbar.logout"),onClick:a},null,8,["tooltip","label"]))}}),Ob=q({__name:"SidebarTemplatesButton",setup(e){const o=ie(),t=k(()=>o.get("Comfy.Sidebar.Size")==="small"),s=n(()=>{gs().show("sidebar")},"openTemplates");return(a,l)=>(f(),G(Ut,{icon:"icon-[comfy--template]",tooltip:a.$t("sideToolbar.templates"),label:a.$t("sideToolbar.labels.templates"),"is-small":t.value,class:"templates-tab-button",onClick:s},null,8,["tooltip","label","is-small"]))}}),Vb=20,Rb=50,Wb=q({__name:"SideToolbar",setup(e){const o=tt(),t=ie(),s=tl(),a=Se(),l=me(),i=L(),r=L(),u=L(),d=k(()=>t.get("Comfy.Sidebar.Size")==="small"),m=k(()=>t.get("Comfy.Sidebar.Location")),g=k(()=>t.get("Comfy.Sidebar.Style")),c=k(()=>w.value||_.value||g.value==="connected"),b=k(()=>o.getSidebarTabs()),w=k(()=>o.sidebarTab.activeSidebarTab),v=n(async M=>{M.id,M.id,M.id,M.id,await a.commands.find(I=>I.id===`Workspace.ToggleSidebarTab.${M.id}`)?.function?.()},"onTabClick"),y=Cr(),x=n(M=>{const I=y.getKeybindingByCommandId(`Workspace.ToggleSidebarTab.${M.id}`);return I?` (${I.combo.toString()})`:""},"getTabTooltipSuffix"),_=L(!1),h=k(()=>fe("sidebar-item-group flex flex-col items-center overflow-hidden flex-shrink-0"+(c.value?"":" rounded-lg shadow-interface"))),S=on(()=>{if(!i.value||!r.value||!u.value)return;const M=i.value.clientHeight,I=r.value.scrollHeight,N=u.value.scrollHeight,$=I+N;_.value?_.value=M<$+Rb:_.value=M<$+Vb},16);return Ve(()=>{if(!i.value)return;const M=ha(i.value,S);S(),vt(()=>{M.stop()}),ne([d,m],async()=>{l.canvas&&(m.value==="left"?(await Re(),l.canvas.fpsInfoLocation=[i.value?.getBoundingClientRect()?.right,null]):l.canvas.fpsInfoLocation=null,l.canvas.setDirty(!1,!0))},{immediate:!0})}),(M,I)=>(f(),T("nav",{ref_key:"sideToolbarRef",ref:i,class:J(["side-tool-bar-container flex h-full flex-col items-center bg-transparent [.floating-sidebar]:-mr-2 pointer-events-auto",{"small-sidebar":d.value,"connected-sidebar":c.value,"floating-sidebar":!c.value,"overflowing-sidebar":_.value,"border-r border-[var(--interface-stroke)] shadow-interface":c.value}])},[p("div",{class:J(_.value?"side-tool-bar-container overflow-y-auto":"flex flex-col h-full")},[p("div",{ref_key:"topToolbarRef",ref:r,class:J(h.value)},[z(Ny),(f(!0),T(le,null,we(b.value,N=>(f(),G(Ut,{key:N.id,icon:N.icon,"icon-badge":N.iconBadge,tooltip:N.tooltip,"tooltip-suffix":x(N),label:N.label||N.title,"is-small":d.value,selected:N.id===w.value?.id,class:J(N.id+"-tab-button"),onClick:n($=>v(N),"onClick")},null,8,["icon","icon-badge","tooltip","tooltip-suffix","label","is-small","selected","class","onClick"]))),128)),z(Ob)],2),p("div",{ref_key:"bottomToolbarRef",ref:u,class:J(["mt-auto",h.value])},[C(s).isMultiUserServer?(f(),G(Lb,{key:0,"is-small":d.value},null,8,["is-small"])):R("",!0),z(Eb,{"is-small":d.value},null,8,["is-small"]),z(Py,{"is-small":d.value},null,8,["is-small"]),z(Ay,{"is-small":d.value},null,8,["is-small"]),z(Dy,{"is-small":d.value},null,8,["is-small"])],2)],2)],2))}}),zb=Ee(Wb,[["__scopeId","data-v-2a2f0be8"]]),Bb=Mt("topbarBadge",()=>{const e=es();return{badges:k(()=>e.extensions.flatMap(t=>t.topbarBadges??[]))}}),Fb={class:"flex h-full shrink-0 items-center"},Tl=q({__name:"TopbarBadges",props:{reverseOrder:{type:Boolean,default:!1},noPadding:{type:Boolean,default:!1}},setup(e){const o=Zo(en),t=o.greaterOrEqual("xl"),s=o.greaterOrEqual("lg"),a=k(()=>t.value?"full":s.value?"compact":"icon-only"),l=Bb();return(i,r)=>(f(),T("div",Fb,[(f(!0),T(le,null,we(C(l).badges,u=>(f(),G(Xc,{key:u.text,badge:u,"display-mode":a.value,"reverse-order":i.reverseOrder,"no-padding":i.noPadding},null,8,["badge","display-mode","reverse-order","no-padding"]))),128))]))}}),Ub={class:"workflow-preview-content"},Gb={key:0,class:"workflow-preview-thumbnail relative"},jb=["src"],Hb={class:"workflow-preview-footer"},qb={class:"workflow-preview-name"},Kb=250,Qb=q({__name:"WorkflowTabPopover",props:{workflowFilename:{},thumbnailUrl:{},isActiveTab:{type:Boolean}},setup(e,{expose:o}){const t=e,{thumbnailUrl:s,isActiveTab:a}=_a(t),l=L(null),i=L(null);let r=null,u=null;const d=$n(),m=n(w=>{r&&(clearTimeout(r),r=null),u&&(clearTimeout(u),u=null),u=setTimeout(async()=>{if(l.value&&i.value){l.value.show(w,i.value),await Re();const v=document.querySelector(`.workflow-popover-fade[data-popover-id="${d}"]`);if(v){const y=i.value.getBoundingClientRect().left,x=v.getBoundingClientRect().width,_=x/2;let h=y-_,S=0;if(h<0)S=h-8,h=8;else if(h+x>window.innerWidth){const M=window.innerWidth-x-16;S=h-M,h=M}S+_<0&&(S=-_+24),v.style.left=`${h}px`,v.style.setProperty("--shift",`${S}px`)}}},200)},"showPopover"),g=n(()=>{},"cancelHidePopover"),c=n(()=>{u&&(clearTimeout(u),u=null),r=setTimeout(()=>{l.value&&l.value.hide()},100)},"hidePopover");return o({showPopover:m,hidePopover:c,togglePopover:n(w=>{l.value&&l.value.toggle(w)},"togglePopover")}),(w,v)=>(f(),T(le,null,[p("div",{ref_key:"positionRef",ref:i,class:"absolute bottom-0 left-1/2 -translate-x-1/2"},null,512),z(C(Ze),{ref_key:"popoverRef",ref:l,"append-to":"body",pt:{root:{class:"workflow-popover-fade fit-content","data-popover-id":C(d)}},onMouseenter:g,onMouseleave:c},{default:O(()=>[p("div",Ub,[C(s)&&!C(a)?(f(),T("div",Gb,[p("img",{src:C(s),class:"block h-[200px] rounded-lg object-cover p-2",style:ge({width:`${Kb}px`})},null,12,jb)])):R("",!0),p("div",Hb,[p("span",qb,B(w.workflowFilename),1)])])]),_:1},8,["pt"])],64))}}),Jb=Ee(Qb,[["__scopeId","data-v-4c13cb50"]]),Yb={class:"workflow-label inline-block max-w-[150px] truncate text-sm"},Xb={class:"relative"},Zb={key:0,class:"absolute top-1/2 left-1/2 z-10 w-4 -translate-1/2 bg-(--comfy-menu-bg) text-2xl font-bold group-hover:hidden"},ew=q({__name:"WorkflowTab",props:{workflowOption:{}},setup(e){const o=e,{t}=pe(),s=tt(),a=Ae(),l=ie(),i=L(null),r=L(null),u=Sr(),d=k(()=>l.get("Comfy.Workflow.AutoSave")),m=k(()=>l.get("Comfy.Workflow.AutoSaveDelay")),g=k(()=>s.shiftDown?!1:o.workflowOption.workflow.isPersisted?o.workflowOption.workflow.isModified?d.value==="off"||d.value==="after delay"&&m.value>3e3:!1:!0),c=k(()=>a.activeWorkflow?.key===o.workflowOption.workflow.key),b=k(()=>u.getThumbnail(o.workflowOption.workflow.key)),w=n(S=>{r.value?.showPopover(S)},"handleMouseEnter"),v=n(()=>{r.value?.hidePopover()},"handleMouseLeave"),y=n(S=>{r.value?.togglePopover(S)},"handleClick"),x=n(async S=>{for(const M of S)if(!await ot().closeWorkflow(M.workflow,{warnIfUnsaved:!s.shiftDown,hint:t("sideToolbar.workflowTab.dirtyCloseHint")}))break},"closeWorkflows"),_=n(async S=>{await x([S])},"onCloseWorkflow"),h=n(()=>i.value,"tabGetter");return xr(h,{getInitialData:n(()=>({workflowKey:o.workflowOption.workflow.key}),"getInitialData")}),ol(h,{getData:n(()=>({workflowKey:o.workflowOption.workflow.key}),"getData"),onDrop:n(S=>{const M=a.openWorkflows.findIndex(N=>N.key===S.source.data.workflowKey),I=a.openWorkflows.findIndex(N=>N.key===S.location.current.dropTargets[0]?.data.workflowKey);M!==I&&a.reorderWorkflows(M,I)},"onDrop")}),rt(()=>{r.value?.hidePopover()}),(S,M)=>(f(),T(le,null,[p("div",It({ref_key:"workflowTabRef",ref:i,class:"workflow-tab group flex gap-2 p-2"},S.$attrs,{onMouseenter:w,onMouseleave:v,onClick:y}),[p("span",Yb,B(S.workflowOption.workflow.filename),1),p("div",Xb,[g.value?(f(),T("span",Zb,"•")):R("",!0),z(X,{class:"close-button invisible w-auto p-0",variant:"muted-textonly",size:"icon-sm","aria-label":C(t)("g.close"),onClick:M[0]||(M[0]=_e(I=>_(S.workflowOption),["stop"]))},{default:O(()=>M[1]||(M[1]=[p("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])],16),z(Jb,{ref_key:"popoverRef",ref:r,"workflow-filename":S.workflowOption.workflow.filename,"thumbnail-url":b.value,"is-active-tab":c.value},null,8,["workflow-filename","thumbnail-url","is-active-tab"])],64))}}),tw=q({__name:"WorkflowOverflowMenu",props:{workflows:{},activeWorkflow:{}},setup(e){const o=e,t=L(null),s=ot(),a=k(()=>o.workflows.map(l=>({label:l.filename,icon:o.activeWorkflow?.key===l.key?"pi pi-check":void 0,command:n(()=>{s.openWorkflow(l)},"command")})));return(l,i)=>{const r=Ne("tooltip");return f(),T("div",null,[ce((f(),G(X,{class:"rounded-none h-full w-auto aspect-square",variant:"muted-textonly",size:"icon","aria-label":l.$t("g.moreWorkflows"),onClick:i[0]||(i[0]=u=>t.value?.toggle(u))},{default:O(()=>i[1]||(i[1]=[p("i",{class:"pi pi-ellipsis-h"},null,-1)])),_:1},8,["aria-label"])),[[r,{value:l.$t("g.moreWorkflows"),showDelay:300}]]),z(C(Aa),{ref_key:"menu",ref:t,model:a.value,popup:!0,class:"max-h-[40vh] overflow-auto"},null,8,["model"])])}}}),ow={key:3,class:"window-actions-spacer app-drag shrink-0"},nw=q({__name:"WorkflowTabs",props:{class:{}},setup(e){const o=e,{t}=pe(),s=tt(),a=Ae(),l=_r(),i=ot(),r=L(),u=L(),d=L(null),m=L(!1),g=L(!1),c=L(!1),b=Ge(),w=n(W=>({value:W.path,workflow:W}),"workflowToOption"),v=k(()=>a.openWorkflows.map(w)),y=k(()=>a.activeWorkflow?w(a.activeWorkflow):null),x=n(async W=>{W&&y.value?.value!==W.value&&await i.openWorkflow(W.workflow)},"onWorkflowChange"),_=n(async W=>{for(const V of W)if(!await i.closeWorkflow(V.workflow,{warnIfUnsaved:!s.shiftDown}))break},"closeWorkflows"),h=n(async W=>{await _([W])},"onCloseWorkflow"),S=n((W,V)=>{r.value=V,u.value.show(W)},"showContextMenu"),M=k(()=>{const W=r.value;if(!W)return[];const V=v.value.findIndex(j=>j.workflow===W.workflow);return[{label:t("tabMenu.duplicateTab"),command:n(async()=>{await i.duplicateWorkflow(W.workflow)},"command")},{separator:!0},{label:t("tabMenu.closeTab"),command:n(()=>h(W),"command")},{label:t("tabMenu.closeTabsToLeft"),command:n(()=>_(v.value.slice(0,V)),"command"),disabled:V<=0},{label:t("tabMenu.closeTabsToRight"),command:n(()=>_(v.value.slice(V+1)),"command"),disabled:V===v.value.length-1},{label:t("tabMenu.closeOtherTabs"),command:n(()=>_([...v.value.slice(V+1),...v.value.slice(0,V)]),"command"),disabled:v.value.length<=1},{label:l.isBookmarked(W.workflow.path)?t("tabMenu.removeFromBookmarks"):t("tabMenu.addToBookmarks"),command:n(()=>l.toggleBookmarked(W.workflow.path),"command"),disabled:W.workflow.isTemporary}]}),I=Se(),N=n(W=>{const V=W.currentTarget,j=W.deltaX||W.deltaY;V.scroll({left:V.scrollLeft+j})},"handleWheel"),$=k(()=>d.value?.querySelector(".p-scrollpanel-content")??null),P=n(W=>{const V=$.value;V&&V.scrollBy({left:W*20})},"scroll"),F=n(async(W={})=>{if(!y.value)return;W.waitForDom!==!1&&await Re();const V=d.value;if(!V)return;const j=V.querySelector(".p-togglebutton-checked");j&&j.scrollIntoView({block:"nearest",inline:"nearest"})},"ensureActiveTabVisible");ne(()=>a.activeWorkflow,()=>{F()},{immediate:!0});let U=null,A=null,E=null;return ne($,(W,V,j)=>{if(A?.(),E?.(),U?.dispose(),!W)return;const H=Jl(W);A=ne([()=>H.arrivedState.left,()=>H.arrivedState.right],([Q,te])=>{g.value=!Q,c.value=!te},{immediate:!0}),U=ml(W),E=ne(U.isOverflowing,Q=>{m.value=Q,Q&&Re(()=>{H.measure(),F({waitForDom:!1})})},{immediate:!0}),j(()=>{A?.(),E?.(),U?.dispose()})},{immediate:!0}),ya(()=>{U?.disposed.value||U?.checkOverflow()}),(W,V)=>{const j=Ne("tooltip");return f(),T("div",{ref_key:"containerRef",ref:d,class:J(["workflow-tabs-container flex h-full max-w-full flex-auto flex-row overflow-hidden",{"workflow-tabs-container-desktop":C(b)}])},[m.value?(f(),G(X,{key:0,variant:"muted-textonly",size:"icon",class:"overflow-arrow overflow-arrow-left h-full w-auto aspect-square","aria-label":W.$t("g.scrollLeft"),disabled:!g.value,onMousedown:V[0]||(V[0]=H=>C(Vn)(H,()=>P(-1)))},{default:O(()=>V[3]||(V[3]=[p("i",{class:"icon-[lucide--chevron-left] size-full"},null,-1)])),_:1},8,["aria-label","disabled"])):R("",!0),z(C(yi),{class:"no-drag overflow-hidden","pt:content":{class:"p-0 w-full flex",onwheel:N},"pt:bar-x":"h-1"},{default:O(()=>[z(C(Ea),{class:J(["workflow-tabs bg-transparent",o.class]),"model-value":y.value,options:v.value,"option-label":"label","data-key":"value","onUpdate:modelValue":x},{option:O(({option:H})=>[z(ew,{"workflow-option":H,onContextmenu:n(Q=>S(Q,H),"onContextmenu"),onMouseup:_e(Q=>h(H),["middle"])},null,8,["workflow-option","onContextmenu","onMouseup"])]),_:1},8,["class","model-value","options"])]),_:1},8,["pt:content"]),m.value?(f(),G(X,{key:1,variant:"muted-textonly",size:"icon",class:"overflow-arrow overflow-arrow-right h-full w-auto aspect-square","aria-label":W.$t("g.scrollRight"),disabled:!c.value,onMousedown:V[1]||(V[1]=H=>C(Vn)(H,()=>P(1)))},{default:O(()=>V[4]||(V[4]=[p("i",{class:"icon-[lucide--chevron-right] size-full"},null,-1)])),_:1},8,["aria-label","disabled"])):R("",!0),m.value?(f(),G(tw,{key:2,workflows:C(a).openWorkflows,"active-workflow":C(a).activeWorkflow},null,8,["workflows","active-workflow"])):R("",!0),ce((f(),G(X,{class:"new-blank-workflow-button no-drag shrink-0 rounded-none h-full w-auto aspect-square",variant:"muted-textonly",size:"icon","aria-label":W.$t("sideToolbar.newBlankWorkflow"),onClick:V[2]||(V[2]=()=>C(I).execute("Comfy.NewBlankWorkflow"))},{default:O(()=>V[5]||(V[5]=[p("i",{class:"pi pi-plus"},null,-1)])),_:1},8,["aria-label"])),[[j,{value:W.$t("sideToolbar.newBlankWorkflow"),showDelay:300}]]),z(C(La),{ref_key:"menu",ref:u,model:M.value},null,8,["model"]),C(b)?(f(),T("div",ow)):R("",!0)],2)}}}),Nl=Ee(nw,[["__scopeId","data-v-3fb85a76"]]);function sw(){const e=L();function o(s){s?.graph&&(t(),e.value=De.onChange(a=>{for(const l of a.nodeIds){const i=De.getNodeLayoutRef(l).value;if(!i)continue;const r=s.graph?.getNodeById(parseInt(l));r&&((r.pos[0]!==i.position.x||r.pos[1]!==i.position.y)&&(r.pos[0]=i.position.x,r.pos[1]=i.position.y),(r.size[0]!==i.size.width||r.size[1]!==i.size.height)&&r.setSize([i.size.width,i.size.height]))}s.setDirty(!0,!0)}))}n(o,"startSync");function t(){e.value?.(),e.value=void 0}return n(t,"stopSync"),rt(t),{startSync:o,stopSync:t}}n(sw,"useLayoutSync");function aw(){const e=me(),o=rn(),{shouldRenderVueNodes:t}=Ko(),s=Je(null),{startSync:a}=sw(),l=n(()=>{const d=K.canvas?.graph;if(!d||s.value)return;const m=$g(d);s.value=m;const g=d._nodes.map(c=>({id:c.id.toString(),pos:[c.pos[0],c.pos[1]],size:[c.size[0],Tr(c.size[1])]}));De.initializeFromLiteGraph(g);for(const c of d.reroutes.values()){const[b,w]=c.pos,v=c.parentId??void 0,y=Array.from(c.linkIds);o.createReroute(c.id,{x:b,y:w},v,y)}for(const c of d._links.values())o.createLink(c.id,c.origin_id,c.origin_slot,c.target_id,c.target_slot);a(e.canvas)},"initializeNodeManager"),i=n(()=>{if(s.value){try{s.value.cleanup()}catch{}s.value=null}},"disposeNodeManagerAndSyncs");return ne(()=>t.value&&!!K.canvas?.graph,d=>{d&&(l(),Is(K.canvas?.graph?.extra.workflowRendererVersion))},{immediate:!0}),xo(()=>!t.value,()=>{Is(K.canvas?.graph?.extra.workflowRendererVersion),i(),K.canvas?.setDirty(!0,!0)}),ne(()=>t.value,(d,m)=>{d!==m&&De.clearAllSlotLayouts()},{immediate:!0,flush:"sync"}),{nodeManager:s,initializeNodeManager:l,disposeNodeManagerAndSyncs:i,setupEmptyGraphListener:n(()=>{const d=K.canvas?.graph;if(!t.value||s.value||d?._nodes.length!==0)return;const m=d.onNodeAdded;d.onNodeAdded=function(g){d.onNodeAdded=m,t.value&&!s.value&&l(),m&&m.call(this,g)}},"setupEmptyGraphListener"),cleanup:n(()=>{s.value&&(s.value.cleanup(),s.value=null)},"cleanup")}}n(aw,"useVueNodeLifecycleIndividual");const hs=nn(aw),lw={minimumFractionDigits:0,maximumFractionDigits:0},Yo=n(e=>Nr({usd:e,numberOptions:lw}),"formatCreditsValue"),ys=n(e=>e?"~":"","makePrefix"),bs=n(e=>e??"/Run","makeSuffix"),ws=n(e=>e?` ${e}`:"","appendNote"),D=n((e,{suffix:o,note:t,approximate:s}={})=>`${ys(s)}${Yo(e)} credits${bs(o)}${ws(t)}`,"formatCreditsLabel"),ye=n((e,o,{suffix:t,note:s,approximate:a}={})=>{const l=Yo(e),i=Yo(o),r=l===i?l:`${l}-${i}`;return`${ys(a)}${r} credits${bs(t)}${ws(s)}`},"formatCreditsRangeLabel"),ze=n((e,{suffix:o,note:t,approximate:s,separator:a}={})=>{const i=e.map(r=>Yo(r)).join(a??"/");return`${ys(s)}${i} credits${bs(o)}${ws(t)}`},"formatCreditsListLabel");function iw(e,o,t=""){try{return e(o)}catch{return t}}n(iw,"safePricingExecution");const kn=n(e=>{const o=e.widgets?.find(l=>l.name==="duration");if(!o)return D(.0715,{suffix:"/second"});const t=Number(o.value),a=.0715*(isNaN(t)?5:t);return D(a)},"calculateRunwayDurationPrice"),Mo=n(e=>o=>{const t=o.widgets?.find(l=>l.name==="duration");if(!t)return D(e,{suffix:"/second"});const s=parseFloat(String(t.value));if(!Number.isFinite(s))return D(e,{suffix:"/second"});const a=e*s;return D(a)},"makeOmniProDurationCalculator"),rw=n(e=>{const o=e.widgets?.find(s=>s.name==="mode");if(!o)return ze([.07,.112],{suffix:"/second",note:"(std/pro)"});const t=String(o.value).toLowerCase();return t==="pro"?D(.112,{suffix:"/second"}):t==="std"?D(.07,{suffix:"/second"}):ze([.07,.112],{suffix:"/second",note:"(std/pro)"})},"klingMotionControlPricingCalculator"),Cn=n(e=>{const o=e.widgets?.find(r=>r.name==="duration_seconds"),t=e.widgets?.find(r=>r.name==="quality"),s=e.widgets?.find(r=>r.name==="motion_mode");if(!o||!t)return ye(.45,1.2,{note:"(varies with duration, quality & motion mode)"});const a=String(o.value),l=String(t.value),i=String(s?.value);if(a.includes("5")){if(l.includes("1080p")||l.includes("720p")&&i?.includes("fast"))return D(1.2);if(l.includes("720p")&&i?.includes("normal"))return D(.6);if(l.includes("540p")&&i?.includes("fast"))return D(.9);if(l.includes("540p")&&i?.includes("normal"))return D(.45);if(l.includes("360p")&&i?.includes("fast"))return D(.9);if(l.includes("360p")&&i?.includes("normal"))return D(.45)}else if(a.includes("8")){if(l.includes("540p")&&i?.includes("normal"))return D(.9);if(l.includes("540p")&&i?.includes("fast"))return D(1.2);if(l.includes("360p")&&i?.includes("normal"))return D(.9);if(l.includes("360p")&&i?.includes("fast")||l.includes("1080p")&&i?.includes("normal")||l.includes("1080p")&&i?.includes("fast")||l.includes("720p")&&i?.includes("normal")||l.includes("720p")&&i?.includes("fast"))return D(1.2)}return D(.9)},"pixversePricingCalculator"),Po=n(e=>{const o=e.widgets?.find(y=>y.name==="model"),t=e.widgets?.find(y=>y.name==="duration"),s=e.widgets?.find(y=>y.name==="resolution");if(!o||!t||!s)return"Token-based";const a=String(o.value).toLowerCase(),l=String(s.value).toLowerCase(),i=parseFloat(String(t.value)),r={"seedance-1-0-pro":{"480p":[.23,.24],"720p":[.51,.56],"1080p":[1.18,1.22]},"seedance-1-0-pro-fast":{"480p":[.09,.1],"720p":[.21,.23],"1080p":[.47,.49]},"seedance-1-0-lite":{"480p":[.17,.18],"720p":[.37,.41],"1080p":[.85,.88]}},u=a.includes("seedance-1-0-pro-fast")?"seedance-1-0-pro-fast":a.includes("seedance-1-0-pro")?"seedance-1-0-pro":a.includes("seedance-1-0-lite")?"seedance-1-0-lite":"",d=l.includes("1080")?"1080p":l.includes("720")?"720p":l.includes("480")?"480p":"",m=u&&d?r[u]?.[d]:void 0;if(!m)return"Token-based";const[g,c]=m,b=i/10,w=g*b,v=c*b;return w===v?D(w):ye(w,v)},"byteDanceVideoPricingCalculator"),aa=n(e=>{const o=e.widgets?.find(c=>c.name==="model"),t=e.widgets?.find(c=>c.name==="duration"),s=e.widgets?.find(c=>c.name==="resolution"),a=ye(.04,.24,{suffix:"/second"});if(!o||!t||!s)return a;const l=String(o.value).toLowerCase(),i=String(s.value).toLowerCase(),r=parseFloat(String(t.value)),d={"ltx-2 (pro)":{"1920x1080":.06,"2560x1440":.12,"3840x2160":.24},"ltx-2 (fast)":{"1920x1080":.04,"2560x1440":.08,"3840x2160":.16}}[l];if(!d)return a;const m=d[i];if(!m)return a;const g=m*r;return D(g)},"ltxvPricingCalculator"),la=n(e=>{const o=e.widgets?.find(l=>l.name==="duration"),t=e.widgets?.find(l=>l.name==="generate_audio");if(!o||!t)return ye(.35,1.4,{note:"(varies with duration & audio)"});const s=String(o.value),a=String(t.value).toLowerCase()==="true";return s==="5"?D(a?.7:.35):s==="10"?D(a?1.4:.7):ye(.35,1.4,{note:"(varies with duration & audio)"})},"klingVideoWithAudioPricingCalculator"),So={BASIC:new Set(["720x1280","1280x720"]),PRO:new Set(["1024x1792","1792x1024"])},uw=new Set([...So.BASIC,...So.PRO]);function cw(e,o,t){const s=e?.toLowerCase()??"",a=t?.toLowerCase()??"";if(!o||Number.isNaN(o))return"Set duration (4s / 8s / 12s)";if(!a)return"Set size (720x1280, 1280x720, 1024x1792, 1792x1024)";if(!uw.has(a))return"Invalid size. Must be 720x1280, 1280x720, 1024x1792, or 1792x1024.";if(!s.includes("sora-2-pro")){if(s.includes("sora-2")&&!So.BASIC.has(a))return"sora-2 supports only 720x1280 or 1280x720";if(!s.includes("sora-2"))return"Unsupported model"}}n(cw,"validateSora2Selection");function dw(e,o){const t=e?.toLowerCase()??"",s=o?.toLowerCase()??"";return t.includes("sora-2-pro")?So.PRO.has(s)?.5:.3:t.includes("sora-2")?.1:So.PRO.has(s)?.5:.1}n(dw,"perSecForSora2");function pw(e,o){return D(Number((e*o).toFixed(2)))}n(pw,"formatRunPrice");const fw=n(e=>{const o=n(r=>String(e.widgets?.find(u=>u.name===r)?.value??""),"getWidgetValue"),t=o("model"),s=o("size"),a=Number(e.widgets?.find(r=>["duration","duration_s"].includes(r.name))?.value);if(!t||!s||!a)return"Set model, duration & size";const l=cw(t,a,s);if(l)return l;const i=dw(t,s);return pw(i,a)},"sora2PricingCalculator"),Sn=n((e,o)=>{const t=n(h=>e.widgets?.find(S=>S.name===h),"getWidget"),s=n((h,S)=>{const M=t(h);return!M||M.value===void 0||M.value===null?S:String(M.value)},"getString"),a=n((h,S)=>{const M=t(h);if(!M||M.value===void 0||M.value===null)return S;const I=M.value;if(typeof I=="number")return I!==0;const N=String(I).toLowerCase();return N==="true"?!0:N==="false"?!1:S},"getBool"),l=s("model_version","").toLowerCase();if(l==="")return ye(.1,.65,{note:"(varies with quad, style, texture & quality)"});const r=s("style","None").toLowerCase()!=="none",u=a("texture",!1),d=a("pbr",!1),m=a("quad",!1),g=s("texture_quality","standard").toLowerCase(),c=s("geometry_quality","standard").toLowerCase(),b=g==="detailed",w=c==="detailed",v=u||d;let y;l.includes("v1.4")||v?o==="text"?y=20:y=30:o==="text"?y=10:y=20;let x=y;r&&(x+=5),m&&(x+=5),b&&(x+=10),w&&(x+=20);const _=x*.01;return D(_)},"calculateTripo3DGenerationPrice"),ia={FluxProCannyNode:{displayPrice:D(.05)},FluxProDepthNode:{displayPrice:D(.05)},FluxProExpandNode:{displayPrice:D(.05)},FluxProFillNode:{displayPrice:D(.05)},FluxProUltraImageNode:{displayPrice:D(.06)},FluxProKontextProNode:{displayPrice:D(.04)},FluxProKontextMaxNode:{displayPrice:D(.08)},Flux2ProImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(m=>m.name==="width"),t=e.widgets?.find(m=>m.name==="height"),s=Number(o?.value),a=Number(t?.value);if(!Number.isFinite(s)||!Number.isFinite(a)||s<=0||a<=0)return ye(.03,.15);const l=e.inputs?.find(m=>m.name==="images"),i=typeof l?.link<"u"&&l.link!=null,r=1024*1024,u=Math.max(1,Math.floor((s*a+r-1)/r)),d=.03+.015*Math.max(u-1,0);if(i){const m=d+.015,g=d+.12;return ye(m,g,{approximate:!0})}return D(d)},"displayPrice")},Flux2MaxImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(m=>m.name==="width"),t=e.widgets?.find(m=>m.name==="height"),s=Number(o?.value),a=Number(t?.value);if(!Number.isFinite(s)||!Number.isFinite(a)||s<=0||a<=0)return ye(.07,.35);const l=e.inputs?.find(m=>m.name==="images"),i=typeof l?.link<"u"&&l.link!=null,r=1024*1024,u=Math.max(1,Math.floor((s*a+r-1)/r)),d=.07+.03*Math.max(u-1,0);if(i){const m=d+.03,g=d+.24;return ye(m,g)}return D(d)},"displayPrice")},OpenAIVideoSora2:{displayPrice:fw},IdeogramV1:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="num_images"),t=e.widgets?.find(r=>r.name==="turbo");if(!o)return ye(.03,.09,{suffix:" x num_images/Run"});const s=Number(o.value)||1,l=String(t?.value).toLowerCase()==="true"?.0286:.0858,i=Number((l*s).toFixed(2));return D(i)},"displayPrice")},IdeogramV2:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="num_images"),t=e.widgets?.find(r=>r.name==="turbo");if(!o)return ye(.07,.11,{suffix:" x num_images/Run"});const s=Number(o.value)||1,l=String(t?.value).toLowerCase()==="true"?.0715:.1144,i=Number((l*s).toFixed(2));return D(i)},"displayPrice")},IdeogramV3:{displayPrice:n(e=>{const o=e.widgets?.find(d=>d.name==="rendering_speed"),t=e.widgets?.find(d=>d.name==="num_images"),s=e.inputs?.find(d=>d.name==="character_image"),a=typeof s?.link<"u"&&s.link!=null;if(!o)return ye(.04,.11,{suffix:" x num_images/Run",note:"(varies with rendering speed & num_images)"});const l=Number(t?.value)||1;let i=.0858;const r=String(o.value);r.toLowerCase().includes("quality")?a?i=.286:i=.1287:r.toLowerCase().includes("default")?a?i=.2145:i=.0858:r.toLowerCase().includes("turbo")&&(a?i=.143:i=.0429);const u=Number((i*l).toFixed(2));return D(u)},"displayPrice")},KlingCameraControlI2VNode:{displayPrice:D(.49)},KlingCameraControlT2VNode:{displayPrice:D(.14)},KlingDualCharacterVideoEffectNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="mode"),t=e.widgets?.find(r=>r.name==="model_name"),s=e.widgets?.find(r=>r.name==="duration");if(!o||!t||!s)return ye(.14,2.8,{note:"(varies with model, mode & duration)"});const a=String(o.value),l=String(s.value),i=String(t.value);return i.includes("v1-6")||i.includes("v1-5")?a.includes("pro")?l.includes("10")?D(.98):D(.49):l.includes("10")?D(.56):D(.28):i.includes("v1")?a.includes("pro")?l.includes("10")?D(.98):D(.49):l.includes("10")?D(.28):D(.14):D(.14)},"displayPrice")},KlingImage2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="mode"),t=e.widgets?.find(r=>r.name==="model_name"),s=e.widgets?.find(r=>r.name==="duration");if(!o){if(!t)return ye(.14,2.8,{note:"(varies with model, mode & duration)"});const r=String(t.value);return r.includes("v2-1-master")||r.includes("v2-master")?D(1.4):r.includes("v1-6")||r.includes("v1-5")?D(.28):D(.14)}const a=String(o.value),l=String(s.value),i=String(t.value);return i.includes("v2-5-turbo")?l.includes("10")?D(.7):D(.35):i.includes("v2-1-master")||i.includes("v2-master")?l.includes("10")?D(2.8):D(1.4):i.includes("v2-1")||i.includes("v1-6")||i.includes("v1-5")?a.includes("pro")?l.includes("10")?D(.98):D(.49):l.includes("10")?D(.56):D(.28):i.includes("v1")?a.includes("pro")?l.includes("10")?D(.98):D(.49):l.includes("10")?D(.28):D(.14):D(.14)},"displayPrice")},KlingImageGenerationNode:{displayPrice:n(e=>{const t=e.inputs?.find(d=>d.name==="image")?.link?"image to image":"text to image",s=e.widgets?.find(d=>d.name==="model_name"),a=e.widgets?.find(d=>d.name==="n");if(!s)return ye(.0035,.028,{suffix:" x n/Run",note:"(varies with modality & model)"});const l=String(s.value),i=Number(a?.value)||1;let r=.014;t.includes("text to image")?l.includes("kling-v1-5")||l.includes("kling-v2")?r=.014:l.includes("kling-v1")&&(r=.0035):t.includes("image to image")&&(l.includes("kling-v1-5")?r=.028:l.includes("kling-v1")&&(r=.0035));const u=r*i;return D(u)},"displayPrice")},KlingLipSyncAudioToVideoNode:{displayPrice:D(.1,{approximate:!0})},KlingLipSyncTextToVideoNode:{displayPrice:D(.1,{approximate:!0})},KlingSingleImageVideoEffectNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="effect_scene");if(!o)return ye(.28,.49,{note:"(varies with effect scene)"});const t=String(o.value);return t.includes("fuzzyfuzzy")||t.includes("squish")?D(.28):t.includes("dizzydizzy")||t.includes("bloombloom")?D(.49):(t.includes("expansion"),D(.28))},"displayPrice")},KlingStartEndFrameNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="mode");if(!o)return ye(.14,2.8,{note:"(varies with model, mode & duration)"});const t=String(o.value);return t.includes("v2-5-turbo")?t.includes("10")?D(.7):D(.35):t.includes("v2-1")?t.includes("10s")?D(.98):D(.49):t.includes("v2-master")?t.includes("10s")?D(2.8):D(1.4):t.includes("v1-6")?t.includes("pro")?t.includes("10s")?D(.98):D(.49):t.includes("10s")?D(.56):D(.28):t.includes("v1")?t.includes("pro")?t.includes("10s")?D(.98):D(.49):t.includes("10s")?D(.28):D(.14):D(.14)},"displayPrice")},KlingTextToVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="mode");if(!o)return ye(.14,2.8,{note:"(varies with model, mode & duration)"});const t=String(o.value);return t.includes("v2-5-turbo")?t.includes("10")?D(.7):D(.35):t.includes("v2-1-master")||t.includes("v2-master")?t.includes("10s")?D(2.8):D(1.4):t.includes("v1-6")?t.includes("pro")?t.includes("10s")?D(.98):D(.49):t.includes("10s")?D(.56):D(.28):t.includes("v1")?t.includes("pro")?t.includes("10s")?D(.98):D(.49):t.includes("10s")?D(.28):D(.14):D(.14)},"displayPrice")},KlingVideoExtendNode:{displayPrice:D(.28)},KlingVirtualTryOnNode:{displayPrice:D(.07)},KlingOmniProTextToVideoNode:{displayPrice:Mo(.112)},KlingOmniProFirstLastFrameNode:{displayPrice:Mo(.112)},KlingOmniProImageToVideoNode:{displayPrice:Mo(.112)},KlingOmniProVideoToVideoNode:{displayPrice:Mo(.168)},KlingMotionControl:{displayPrice:rw},KlingOmniProEditVideoNode:{displayPrice:D(.168,{suffix:"/second"})},KlingOmniProImageNode:{displayPrice:D(.028)},KlingTextToVideoWithAudio:{displayPrice:la},KlingImageToVideoWithAudio:{displayPrice:la},LumaImageToVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="model"),t=e.widgets?.find(r=>r.name==="resolution"),s=e.widgets?.find(r=>r.name==="duration");if(!o||!t||!s)return ye(.2,16.4,{note:"(varies with model, resolution & duration)"});const a=String(o.value),l=String(t.value).toLowerCase(),i=String(s.value);if(a.includes("ray-flash-2")){if(i.includes("5s")){if(l.includes("4k"))return D(3.13);if(l.includes("1080p"))return D(.79);if(l.includes("720p"))return D(.34);if(l.includes("540p"))return D(.2)}else if(i.includes("9s")){if(l.includes("4k"))return D(5.65);if(l.includes("1080p"))return D(1.42);if(l.includes("720p"))return D(.61);if(l.includes("540p"))return D(.36)}}else if(a.includes("ray-2")){if(i.includes("5s")){if(l.includes("4k"))return D(9.11);if(l.includes("1080p"))return D(2.27);if(l.includes("720p"))return D(1.02);if(l.includes("540p"))return D(.57)}else if(i.includes("9s")){if(l.includes("4k"))return D(16.4);if(l.includes("1080p"))return D(4.1);if(l.includes("720p"))return D(1.83);if(l.includes("540p"))return D(1.03)}}else if(a.includes("ray-1-6"))return D(.5);return D(.79)},"displayPrice")},LumaVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="model"),t=e.widgets?.find(r=>r.name==="resolution"),s=e.widgets?.find(r=>r.name==="duration");if(!o||!t||!s)return ye(.2,16.4,{note:"(varies with model, resolution & duration)"});const a=String(o.value),l=String(t.value).toLowerCase(),i=String(s.value);if(a.includes("ray-flash-2")){if(i.includes("5s")){if(l.includes("4k"))return D(3.13);if(l.includes("1080p"))return D(.79);if(l.includes("720p"))return D(.34);if(l.includes("540p"))return D(.2)}else if(i.includes("9s")){if(l.includes("4k"))return D(5.65);if(l.includes("1080p"))return D(1.42);if(l.includes("720p"))return D(.61);if(l.includes("540p"))return D(.36)}}else if(a.includes("ray-2")){if(i.includes("5s")){if(l.includes("4k"))return D(9.11);if(l.includes("1080p"))return D(2.27);if(l.includes("720p"))return D(1.02);if(l.includes("540p"))return D(.57)}else if(i.includes("9s")){if(l.includes("4k"))return D(16.4);if(l.includes("1080p"))return D(4.1);if(l.includes("720p"))return D(1.83);if(l.includes("540p"))return D(1.03)}}else if(a.includes("ray-1-6"))return D(.5);return D(.79)},"displayPrice")},MinimaxImageToVideoNode:{displayPrice:D(.43)},MinimaxTextToVideoNode:{displayPrice:D(.43)},MinimaxHailuoVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="resolution"),t=e.widgets?.find(l=>l.name==="duration");if(!o||!t)return ye(.28,.56,{note:"(varies with resolution & duration)"});const s=String(o.value),a=String(t.value);if(s.includes("768P")){if(a.includes("6"))return D(.28);if(a.includes("10"))return D(.56)}else if(s.includes("1080P")&&a.includes("6"))return D(.49);return D(.43)},"displayPrice")},OpenAIDalle2:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="size"),t=e.widgets?.find(r=>r.name==="n");if(!o)return ye(.016,.02,{suffix:" x n/Run",note:"(varies with size & n)"});const s=String(o.value),a=Number(t?.value)||1;let l=.02;s.includes("1024x1024")?l=.02:s.includes("512x512")?l=.018:s.includes("256x256")&&(l=.016);const i=Number((l*a).toFixed(3));return D(i)},"displayPrice")},OpenAIDalle3:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="size"),t=e.widgets?.find(l=>l.name==="quality");if(!o||!t)return ye(.04,.12,{note:"(varies with size & quality)"});const s=String(o.value),a=String(t.value);return s.includes("1024x1024")?a.includes("hd")?D(.08):D(.04):s.includes("1792x1024")||s.includes("1024x1792")?a.includes("hd")?D(.12):D(.08):D(.04)},"displayPrice")},OpenAIGPTImage1:{displayPrice:n(e=>{const o=e.widgets?.find(i=>i.name==="quality"),t=e.widgets?.find(i=>i.name==="n");if(!o)return ye(.011,.3,{suffix:" x n/Run",note:"(varies with quality & n)"});const s=String(o.value),a=Number(t?.value)||1;let l=[.046,.07];return s.includes("high")?l=[.167,.3]:s.includes("medium")?l=[.046,.07]:s.includes("low")&&(l=[.011,.02]),a===1?ye(l[0],l[1]):ye(l[0],l[1],{suffix:` x ${a}/Run`})},"displayPrice")},PixverseImageToVideoNode:{displayPrice:Cn},PixverseTextToVideoNode:{displayPrice:Cn},PixverseTransitionVideoNode:{displayPrice:Cn},RecraftCreativeUpscaleNode:{displayPrice:D(.25)},RecraftCrispUpscaleNode:{displayPrice:D(.004)},RecraftGenerateColorFromImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="n");if(!o)return D(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return D(s)},"displayPrice")},RecraftGenerateImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="n");if(!o)return D(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return D(s)},"displayPrice")},RecraftGenerateVectorImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="n");if(!o)return D(.08,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.08*t).toFixed(2));return D(s)},"displayPrice")},RecraftImageInpaintingNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="n");if(!o)return D(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return D(s)},"displayPrice")},RecraftImageToImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="n");if(!o)return D(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return D(s)},"displayPrice")},RecraftRemoveBackgroundNode:{displayPrice:D(.01)},RecraftReplaceBackgroundNode:{displayPrice:D(.04)},RecraftTextToImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="n");if(!o)return D(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return D(s)},"displayPrice")},RecraftTextToVectorNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="n");if(!o)return D(.08,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.08*t).toFixed(2));return D(s)},"displayPrice")},RecraftVectorizeImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="n");if(!o)return D(.01,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.01*t).toFixed(2));return D(s)},"displayPrice")},StabilityStableImageSD_3_5Node:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return ye(.035,.065,{note:"(varies with model)"});const t=String(o.value).toLowerCase();return t.includes("large")?D(.065):(t.includes("medium"),D(.035))},"displayPrice")},StabilityStableImageUltraNode:{displayPrice:D(.08)},StabilityUpscaleConservativeNode:{displayPrice:D(.25)},StabilityUpscaleCreativeNode:{displayPrice:D(.25)},StabilityUpscaleFastNode:{displayPrice:D(.01)},StabilityTextToAudio:{displayPrice:D(.2)},StabilityAudioToAudio:{displayPrice:D(.2)},StabilityAudioInpaint:{displayPrice:D(.2)},VeoVideoGenerationNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="duration_seconds");if(!o)return ye(2.5,5,{note:"(varies with duration)"});const t=.5*Number(o.value);return D(t)},"displayPrice")},Veo3VideoGenerationNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="model"),t=e.widgets?.find(l=>l.name==="generate_audio");if(!o||!t)return ye(.8,3.2,{note:"(varies with model & audio generation)"});const s=String(o.value),a=String(t.value).toLowerCase()==="true";return s.includes("veo-3.0-fast-generate-001")||s.includes("veo-3.1-fast-generate")?D(a?1.2:.8):s.includes("veo-3.0-generate-001")||s.includes("veo-3.1-generate")?D(a?3.2:1.6):ye(.8,3.2)},"displayPrice")},Veo3FirstLastFrameNode:{displayPrice:n(e=>{const o=e.widgets?.find(d=>d.name==="model"),t=e.widgets?.find(d=>d.name==="generate_audio"),s=e.widgets?.find(d=>d.name==="duration");if(!o||!t||!s)return ye(.4,3.2,{note:"(varies with model & audio generation)"});const a=String(o.value),l=String(t.value).toLowerCase()==="true",i=parseFloat(String(s.value));let r=null;if(a.includes("veo-3.1-fast-generate")?r=l?.15:.1:a.includes("veo-3.1-generate")&&(r=l?.4:.2),r===null)return ye(.4,3.2);const u=r*i;return D(u)},"displayPrice")},LumaImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="model"),t=e.widgets?.find(a=>a.name==="aspect_ratio");if(!o||!t)return ye(.0064,.026,{note:"(varies with model & aspect ratio)"});const s=String(o.value);return s.includes("photon-flash-1")?D(.0027):s.includes("photon-1")?D(.0104):D(.0246)},"displayPrice")},LumaImageModifyNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return ye(.0027,.0104,{note:"(varies with model)"});const t=String(o.value);return t.includes("photon-flash-1")?D(.0027):t.includes("photon-1")?D(.0104):D(.0246)},"displayPrice")},MoonvalleyTxt2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return D(1.5);const t=String(o.value);return D(t==="5s"?1.5:t==="10s"?3:1.5)},"displayPrice")},MoonvalleyImg2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return D(1.5);const t=String(o.value);return D(t==="5s"?1.5:t==="10s"?3:1.5)},"displayPrice")},MoonvalleyVideo2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return D(2.25);const t=String(o.value);return D(t==="5s"?2.25:t==="10s"?4:2.25)},"displayPrice")},RunwayTextToImageNode:{displayPrice:D(.11)},RunwayImageToVideoNodeGen3a:{displayPrice:kn},RunwayImageToVideoNodeGen4:{displayPrice:kn},RunwayFirstLastFrameNode:{displayPrice:kn},Rodin3D_Regular:{displayPrice:D(.4)},Rodin3D_Detail:{displayPrice:D(.4)},Rodin3D_Smooth:{displayPrice:D(.4)},Rodin3D_Sketch:{displayPrice:D(.4)},TripoTextToModelNode:{displayPrice:n(e=>Sn(e,"text"),"displayPrice")},TripoImageToModelNode:{displayPrice:n(e=>Sn(e,"image"),"displayPrice")},TripoMultiviewToModelNode:{displayPrice:n(e=>Sn(e,"multiview"),"displayPrice")},TripoTextureNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="texture_quality");return o?String(o.value).includes("detailed")?D(.2):D(.1):ye(.1,.2,{note:"(varies with quality)"})},"displayPrice")},TripoRigNode:{displayPrice:"$0.25/Run"},TripoConversionNode:{displayPrice:n(e=>{const o=n(w=>e.widgets?.find(v=>v.name===w)?.value,"getWidgetValue"),t=n((w,v)=>{const y=o(w);if(y==null||y==="")return v;if(typeof y=="number")return Number.isFinite(y)?y:v;const x=Number(y);return Number.isFinite(x)?x:v},"getNumber"),s=n((w,v)=>{const y=o(w);if(y==null)return v;if(typeof y=="number")return y!==0;const x=String(y).toLowerCase();return x==="true"?!0:x==="false"?!1:v},"getBool");let a=!1;return s("quad",!1)&&(a=!0),s("force_symmetry",!1)&&(a=!0),s("flatten_bottom",!1)&&(a=!0),s("pivot_to_center_bottom",!1)&&(a=!0),s("with_animation",!1)&&(a=!0),s("pack_uv",!1)&&(a=!0),s("bake",!1)&&(a=!0),s("export_vertex_colors",!1)&&(a=!0),s("animate_in_place",!1)&&(a=!0),t("face_limit",-1)!==-1&&(a=!0),t("texture_size",4096)!==4096&&(a=!0),t("flatten_bottom_threshold",0)!==0&&(a=!0),t("scale_factor",1)!==1&&(a=!0),String(o("texture_format")??"JPEG").toUpperCase()!=="JPEG"&&(a=!0),String(o("part_names")??"").trim().length>0&&(a=!0),String(o("fbx_preset")??"blender").toLowerCase()!=="blender"&&(a=!0),String(o("export_orientation")??"default").toLowerCase()!=="default"&&(a=!0),D((a?10:5)*.01)},"displayPrice")},TripoRetargetNode:{displayPrice:D(.1)},TripoRefineNode:{displayPrice:D(.3)},GeminiNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return"Token-based";const t=String(o.value);return t.includes("veo-2.0")?D(.5,{suffix:"/second"}):t.includes("gemini-2.5-flash-preview-04-17")?ze([3e-4,.0025],{suffix:" per 1K tokens"}):t.includes("gemini-2.5-flash")?ze([3e-4,.0025],{suffix:" per 1K tokens"}):t.includes("gemini-2.5-pro-preview-05-06")?ze([.00125,.01],{suffix:" per 1K tokens"}):t.includes("gemini-2.5-pro")?ze([.00125,.01],{suffix:" per 1K tokens"}):t.includes("gemini-3-pro-preview")?ze([.002,.012],{suffix:" per 1K tokens"}):"Token-based"},"displayPrice")},GeminiImageNode:{displayPrice:D(.039,{suffix:"/Image (1K)",approximate:!0})},GeminiImage2Node:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="resolution");if(!o)return"Token-based";const t=String(o.value);return t.includes("1K")?D(.134,{suffix:"/Image",approximate:!0}):t.includes("2K")?D(.134,{suffix:"/Image",approximate:!0}):t.includes("4K")?D(.24,{suffix:"/Image",approximate:!0}):"Token-based"},"displayPrice")},OpenAIChatNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return"Token-based";const t=String(o.value);return t.includes("o4-mini")?ze([.0011,.0044],{suffix:" per 1K tokens"}):t.includes("o1-pro")?ze([.15,.6],{suffix:" per 1K tokens"}):t.includes("o1")?ze([.015,.06],{suffix:" per 1K tokens"}):t.includes("o3-mini")?ze([.0011,.0044],{suffix:" per 1K tokens"}):t.includes("o3")?ze([.01,.04],{suffix:" per 1K tokens"}):t.includes("gpt-4o")?ze([.0025,.01],{suffix:" per 1K tokens"}):t.includes("gpt-4.1-nano")?ze([1e-4,4e-4],{suffix:" per 1K tokens"}):t.includes("gpt-4.1-mini")?ze([4e-4,.0016],{suffix:" per 1K tokens"}):t.includes("gpt-4.1")?ze([.002,.008],{suffix:" per 1K tokens"}):t.includes("gpt-5-nano")?ze([5e-5,4e-4],{suffix:" per 1K tokens"}):t.includes("gpt-5-mini")?ze([25e-5,.002],{suffix:" per 1K tokens"}):t.includes("gpt-5")?ze([.00125,.01],{suffix:" per 1K tokens"}):"Token-based"},"displayPrice")},ViduTextToVideoNode:{displayPrice:D(.4)},ViduImageToVideoNode:{displayPrice:D(.4)},ViduReferenceVideoNode:{displayPrice:D(.4)},ViduStartEndToVideoNode:{displayPrice:D(.4)},ByteDanceImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");return o&&String(o.value).includes("seedream-3-0-t2i")?D(.03):"Token-based"},"displayPrice")},ByteDanceImageEditNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");return o&&String(o.value).includes("seededit-3-0-i2i")?D(.03):"Token-based"},"displayPrice")},ByteDanceSeedreamNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="model"),t=String(o?.value??"").toLowerCase();let s=.03;return t.includes("seedream-4-5-251128")?s=.04:t.includes("seedream-4-0-250828")&&(s=.03),D(s,{suffix:" x images/Run",approximate:!0})},"displayPrice")},ByteDanceTextToVideoNode:{displayPrice:Po},ByteDanceImageToVideoNode:{displayPrice:Po},ByteDanceFirstLastFrameNode:{displayPrice:Po},ByteDanceImageReferenceNode:{displayPrice:Po},WanTextToVideoApi:{displayPrice:n(e=>{const o=e.widgets?.find(d=>d.name==="duration"),t=e.widgets?.find(d=>d.name==="size");if(!o||!t)return ye(.05,.15,{suffix:"/second"});const s=parseFloat(String(o.value)),a=String(t.value).toLowerCase(),l=a.includes("1080")?"1080p":a.includes("720")?"720p":a.includes("480")?"480p":a.match(/^\s*(\d{3,4}p)/)?.[1]??"",r={"480p":.05,"720p":.1,"1080p":.15}[l];if(isNaN(s)||!r)return ye(.05,.15,{suffix:"/second"});const u=Number((r*s).toFixed(2));return D(u)},"displayPrice")},WanImageToVideoApi:{displayPrice:n(e=>{const o=e.widgets?.find(u=>u.name==="duration"),t=e.widgets?.find(u=>u.name==="resolution");if(!o||!t)return ye(.05,.15,{suffix:"/second"});const s=parseFloat(String(o.value)),a=String(t.value).trim().toLowerCase(),i={"480p":.05,"720p":.1,"1080p":.15}[a];if(isNaN(s)||!i)return ye(.05,.15,{suffix:"/second"});const r=Number((i*s).toFixed(2));return D(r)},"displayPrice")},WanTextToImageApi:{displayPrice:D(.03)},WanImageToImageApi:{displayPrice:D(.03)},LtxvApiTextToVideo:{displayPrice:aa},LtxvApiImageToVideo:{displayPrice:aa}},mw=n(()=>({getNodeDisplayPrice:n(s=>{if(!s.constructor?.nodeData?.api_node)return"";const a=s.constructor.nodeData.name,l=ia[a];return l?typeof l.displayPrice=="function"?iw(l.displayPrice,s,""):l.displayPrice:""},"getNodeDisplayPrice"),getNodePricingConfig:n(s=>ia[s.constructor.nodeData?.name??""],"getNodePricingConfig"),getRelevantWidgetNames:n(s=>({KlingTextToVideoNode:["mode","model_name","duration"],KlingImage2VideoNode:["mode","model_name","duration"],KlingImageGenerationNode:["modality","model_name","n"],KlingDualCharacterVideoEffectNode:["mode","model_name","duration"],KlingSingleImageVideoEffectNode:["effect_scene"],KlingStartEndFrameNode:["mode","model_name","duration"],KlingTextToVideoWithAudio:["duration","generate_audio"],KlingImageToVideoWithAudio:["duration","generate_audio"],KlingOmniProTextToVideoNode:["duration"],KlingOmniProFirstLastFrameNode:["duration"],KlingOmniProImageToVideoNode:["duration"],KlingOmniProVideoToVideoNode:["duration"],KlingMotionControl:["mode"],MinimaxHailuoVideoNode:["resolution","duration"],OpenAIDalle3:["size","quality"],OpenAIDalle2:["size","n"],OpenAIVideoSora2:["model","size","duration"],OpenAIGPTImage1:["quality","n"],IdeogramV1:["num_images","turbo"],IdeogramV2:["num_images","turbo"],IdeogramV3:["rendering_speed","num_images","character_image"],FluxProKontextProNode:[],FluxProKontextMaxNode:[],Flux2ProImageNode:["width","height","images"],Flux2MaxImageNode:["width","height","images"],VeoVideoGenerationNode:["duration_seconds"],Veo3VideoGenerationNode:["model","generate_audio"],Veo3FirstLastFrameNode:["model","generate_audio","duration"],LumaVideoNode:["model","resolution","duration"],LumaImageToVideoNode:["model","resolution","duration"],LumaImageNode:["model","aspect_ratio"],LumaImageModifyNode:["model","aspect_ratio"],PixverseTextToVideoNode:["duration_seconds","quality","motion_mode"],PixverseTransitionVideoNode:["duration_seconds","motion_mode","quality"],PixverseImageToVideoNode:["duration_seconds","quality","motion_mode"],StabilityStableImageSD_3_5Node:["model"],RecraftTextToImageNode:["n"],RecraftImageToImageNode:["n"],RecraftImageInpaintingNode:["n"],RecraftTextToVectorNode:["n"],RecraftVectorizeImageNode:["n"],RecraftGenerateColorFromImageNode:["n"],RecraftGenerateImageNode:["n"],RecraftGenerateVectorImageNode:["n"],MoonvalleyTxt2VideoNode:["length"],MoonvalleyImg2VideoNode:["length"],MoonvalleyVideo2VideoNode:["length"],RunwayImageToVideoNodeGen3a:["duration"],RunwayImageToVideoNodeGen4:["duration"],RunwayFirstLastFrameNode:["duration"],TripoTextToModelNode:["model_version","quad","style","texture","pbr","texture_quality","geometry_quality"],TripoImageToModelNode:["model_version","quad","style","texture","pbr","texture_quality","geometry_quality"],TripoMultiviewToModelNode:["model_version","quad","texture","pbr","texture_quality","geometry_quality"],TripoConversionNode:["quad","face_limit","texture_size","texture_format","force_symmetry","flatten_bottom","flatten_bottom_threshold","pivot_to_center_bottom","scale_factor","with_animation","pack_uv","bake","part_names","fbx_preset","export_vertex_colors","export_orientation","animate_in_place"],TripoTextureNode:["texture_quality"],GeminiNode:["model"],GeminiImage2Node:["resolution"],OpenAIChatNode:["model"],ByteDanceImageNode:["model"],ByteDanceImageEditNode:["model"],ByteDanceSeedreamNode:["model","sequential_image_generation","max_images"],ByteDanceTextToVideoNode:["model","duration","resolution"],ByteDanceImageToVideoNode:["model","duration","resolution"],ByteDanceFirstLastFrameNode:["model","duration","resolution"],ByteDanceImageReferenceNode:["model","duration","resolution"],WanTextToVideoApi:["duration","size"],WanImageToVideoApi:["duration","resolution"],LtxvApiTextToVideo:["model","duration","resolution"],LtxvApiImageToVideo:["model","duration","resolution"]})[s]||[],"getRelevantWidgetNames")}),"useNodePricing"),Wn=new Image;Wn.src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='oklch(83.01%25 0.163 83.16)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M15.536 11.293a1 1 0 0 0 0 1.414l2.376 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0zm-13.239 0a1 1 0 0 0 0 1.414l2.377 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414L6.088 8.916a1 1 0 0 0-1.414 0zm6.619 6.619a1 1 0 0 0 0 1.415l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.415l-2.377-2.376a1 1 0 0 0-1.414 0zm0-13.238a1 1 0 0 0 0 1.414l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z'/%3E%3C/svg%3E";const vw=n(()=>{function e(l){if(!l.isSubgraphNode())return;l.badges=l.badges.filter(r=>!t(r));const i=o(l.subgraph);i.length>1?l.badges.push(a("Partner Nodes x "+i.length)):l.badges.push(...i)}n(e,"updateSubgraphCredits");function o(l,i=new Set){if(i.has(l.id))return[];i.add(l.id);const r=[];for(const u of l.nodes)r.push(...u.isSubgraphNode()?o(u.subgraph,i):u.badges.filter(d=>t(d)));return r}n(o,"collectCreditsBadges");function t(l){return(typeof l=="function"?l():l).icon?.image===Wn}n(t,"isCreditsBadge");const s=ut();function a(l){const i=s.completedActivePalette.light_theme;return new is({text:l,iconOptions:{image:Wn,size:8},fgColor:s.completedActivePalette.colors.litegraph_base.BADGE_FG_COLOR,bgColor:i?Vt("#8D6932",{lightness:.5}):"#8D6932"})}return n(a,"getCreditsBadge"),{getCreditsBadge:a,updateSubgraphCredits:e}},"usePriceBadge"),gw=n((e,o={})=>{const{widgetNames:t,triggerCanvasRedraw:s=!1}=o,a=L({});if(e.widgets){const l=t?e.widgets.filter(r=>t.includes(r.name)):e.widgets,i={};if(l.forEach(r=>{i[r.name]=r.value}),a.value=i,l.forEach(r=>{r.callback=eo(r.callback,()=>{a.value={...a.value,[r.name]:r.value},s&&e.graph?.setDirtyCanvas(!0,!0)})}),t&&t.length>l.length){const r=t.map(u=>l.some(d=>d.name==u)?-1:e.inputs.findIndex(d=>d.name==u)).filter(u=>u>=0);e.onConnectionsChange=eo(e.onConnectionsChange,(u,d,m)=>{r.includes(d)&&(a.value={...a.value,[r[d]]:m},s&&e.graph?.setDirtyCanvas(!0,!0))})}}return l=>Yl(a,l)},"useComputedWithWidgetWatch"),hw=n(()=>{const e=ie(),o=es(),t=ut(),s=vw(),a=k(()=>e.get("Comfy.NodeBadge.NodeSourceBadgeMode")),l=k(()=>e.get("Comfy.NodeBadge.NodeIdBadgeMode")),i=k(()=>e.get("Comfy.NodeBadge.NodeLifeCycleBadgeMode")),r=k(()=>e.get("Comfy.NodeBadge.ShowApiPricing"));ne([a,l,i,r],()=>{K.canvas?.setDirty(!0,!0)});const u=ht();function d(m,g){return!(g===dt.None||m?.isCoreNode&&g===dt.HideBuiltIn)}n(d,"badgeTextVisible"),Ve(()=>{const m=mw();o.registerExtension({name:"Comfy.NodeBadge",nodeCreated(g){g.badgePosition=$r.TopRight;const c=k(()=>{const b=u.fromLGraphNode(g);return new is({text:Xl.truncate([d(b,l.value)?`#${g.id}`:"",d(b,i.value)?b?.nodeLifeCycleBadgeText??"":"",d(b,a.value)?b?.nodeSource?.badgeText??"":""].filter(w=>w.length>0).join(" "),{length:31}),fgColor:t.completedActivePalette.colors.litegraph_base.BADGE_FG_COLOR,bgColor:t.completedActivePalette.colors.litegraph_base.BADGE_BG_COLOR})});if(g.badges.push(()=>c.value),g.constructor.nodeData?.api_node&&r.value){const w=typeof m.getNodePricingConfig(g)?.displayPrice=="function";let v;const y=n(()=>{const x=m.getNodeDisplayPrice(g);return s.getCreditsBadge(x)},"createBadge");if(w){const x=m.getRelevantWidgetNames(g.constructor.nodeData?.name);v=gw(g,{widgetNames:x,triggerCanvasRedraw:!0})(y)}else v=k(y);g.badges.push(()=>v.value)}},init(){K.canvas.canvas.addEventListener("litegraph:set-graph",()=>{for(const g of K.canvas.graph?.nodes??[])s.updateSubgraphCredits(g)}),K.canvas.canvas.addEventListener("subgraph-converted",g=>s.updateSubgraphCredits(g.detail.subgraphNode))},afterConfigureGraph(){for(const g of K.canvas.graph?.nodes??[])s.updateSubgraphCredits(g)}})})},"useNodeBadge"),yw=n(e=>{const o=Yn(),t=ao(),s=ot();ol(()=>e.value,{getDropEffect:n(a=>a.source.data.type==="tree-explorer-node"?"copy":"move","getDropEffect"),onDrop:n(async a=>{const l=a.location.current.input,i=a.source.data;if(i.type==="tree-explorer-node"){const r=i.data,d=nl().clientPosToCanvasPos([l.clientX,l.clientY]);if(r.data instanceof Ir){const m=r.data,g=[...d];g[1]+=ve.NODE_TITLE_HEIGHT,t.addNodeOnGraph(m,{pos:g})}else if(r.data instanceof Mr){const m=r.data,g=d,c=K.canvas.graph?.getNodeOnPos(g[0],g[1]);let b=null,w=null;if(c){const v=o.getAllNodeProviders(m.directory);for(const y of v)y.nodeDef.name===c.comfyClass&&(w=c,b=y)}if(!w){const v=o.getNodeProvider(m.directory);v&&(w=t.addNodeOnGraph(v.nodeDef,{pos:g}),b=v)}if(w){const v=w.widgets?.find(y=>y.name===b?.key);v&&(v.value=m.file_name)}}else if(r.data instanceof za){const m=r.data;await s.insertWorkflow(m,{position:d})}}},"onDrop")})},"useCanvasDrop"),bw=n(()=>{qt.install(He.prototype,"getCanvasMenuOptions");const{getCanvasMenuOptions:e}=He.prototype,o=n(function(...r){const u=e.apply(this,r),d=K.collectCanvasMenuItems(this);for(const g of d)u.push(g);const m=qt.extractLegacyItems("getCanvasMenuOptions",this,...r);for(const g of m)u.push(g);for(const g of u)g?.content&&(g.content=he(`contextMenu.${g.content}`,g.content));return u},"getCanvasCenterMenuOptions");He.prototype.getCanvasMenuOptions=o,qt.registerWrapper("getCanvasMenuOptions",o,e,He.prototype),qt.install(He.prototype,"getNodeMenuOptions");const t=He.prototype.getNodeMenuOptions,s=n(function(...r){const u=t.apply(this,r),d=r[0],m=K.collectNodeMenuItems(d);for(const c of m)u.push(c);const g=qt.extractLegacyItems("getNodeMenuOptions",this,...r);for(const c of g)u.push(c);return u},"getNodeMenuOptionsWithExtensions");He.prototype.getNodeMenuOptions=s,qt.registerWrapper("getNodeMenuOptions",s,t,He.prototype);function a(r,u){if(!r)return;const d=/Convert (.*) to input/,m=/Convert (.*) to widget/,g=he("contextMenu.Convert ","Convert "),c=he("contextMenu. to input"," to input"),b=he("contextMenu. to widget"," to widget");for(const w of r){if(typeof w=="string"||(a(w?.submenu?.options,u),!w?.content))continue;Pr(`contextMenu.${w.content}`)&&(w.content=he(`contextMenu.${w.content}`,w.content));const v=u.extra||u.parentMenu?.options?.extra,y=w.content?.match(d);if(y){let _=y[1];v?.inputs?.find(h=>{if(h.name!=_)return!1;_=h.label?h.label:h.name}),v?.widgets?.find(h=>{if(h.name!=_)return!1;_=h.label?h.label:h.name}),w.content=g+_+c;continue}const x=w.content?.match(m);if(x){let _=x[1];v?.inputs?.find(h=>{if(h.name!=_)return!1;_=h.label?h.label:h.name}),v?.widgets?.find(h=>{if(h.name!=_)return!1;_=h.label?h.label:h.name}),w.content=g+_+b;continue}}}n(a,"translateMenus");const l=ve.ContextMenu;function i(r,u){return u.title&&(u.title=he(`nodeDefs.${We(u.title)}.display_name`,u.title)),a(r,u),new l(r,u)}n(i,"ContextMenu"),ve.ContextMenu=i,ve.ContextMenu.prototype=l.prototype},"useContextMenuTranslation");function ww(){const e=window.getSelection();return e!==null&&e.toString().trim().length>0}n(ww,"hasTextSelection");function $l(e){return e instanceof HTMLTextAreaElement||e instanceof HTMLInputElement&&!["button","checkbox","file","hidden","image","radio","range","reset","search","submit"].includes(e.type)||me().linearMode||ww()}n($l,"shouldIgnoreCopyPaste");const kw=['<meta charset="utf-8"><div><span data-metadata="','"></span></div><span style="white-space:pre-wrap;">Text</span>'],Cw=n(()=>{const e=me();Le(document,"copy",o=>{if($l(o.target))return;const t=e.canvas;if(t?.selectedItems){const s=t.copyToClipboard(),a=btoa(String.fromCharCode(...Array.from(new TextEncoder().encode(s))));return o.clipboardData?.setData("text/html",kw.join(a)),o.preventDefault(),o.stopImmediatePropagation(),!1}})},"useCopy"),Sw=n(()=>{window.LiteGraph=ve,window.LGraph=Dr,window.LLink=Ar,window.LGraphNode=mt,window.LGraphGroup=Rt,window.DragAndScale=Er,window.LGraphCanvas=He,window.ContextMenu=Lr,window.LGraphBadge=is},"useGlobalLitegraph");function xw(e){const t=e.getData("text/html").match(/data-metadata="([A-Za-z0-9+/=]+)"/)?.[1];if(!t)return!1;try{const s=atob(t),a=Uint8Array.from(s,i=>i.charCodeAt(0)),l=new TextDecoder().decode(a);return me().getCanvas()._deserializeItems(JSON.parse(l),{}),!0}catch(s){console.error(s)}return!1}n(xw,"pasteClipboardItems");const _w=n(()=>{const e=tt(),o=me(),t=n((s,a,l)=>{if(!a)return;const i=Array.from(s).filter(u=>u.type.startsWith(l)),r=i[0]?.getAsFile();r&&(a.pasteFile?.(r),a.pasteFiles?.(Array.from(i).map(u=>u.getAsFile()).filter(u=>u!==null)))},"pasteItemsOnNode");Le(document,"paste",async s=>{if($l(s.target)||e.shiftDown)return;const{canvas:a}=o;if(!a)return;const{graph:l}=a;let i=s.clipboardData;if(!i)throw new Error("No clipboard data on clipboard event");const{items:r}=i,u=a.current_node,d=u?.is_selected,m=d&&Or(u),g=d&&Vr(u),c=d&&Rr(u);let b=m?u:null,w=c?u:null;const v=g?u:null;for(const x of r)if(x.type.startsWith("image/")){if(!b){const _=ve.createNode("LoadImage");_&&(_.pos=[a.graph_mouse[0],a.graph_mouse[1]],b=l?.add(_)??null),l?.change()}t(r,b,"image");return}else if(x.type.startsWith("video/")){if(v){t(r,v,"video");return}}else if(x.type.startsWith("audio/")){if(!w){const _=ve.createNode("LoadAudio");_&&(_.pos=[a.graph_mouse[0],a.graph_mouse[1]],w=l?.add(_)??null),l?.change()}t(r,w,"audio");return}if(xw(i))return;i=i.getData("text/plain");let y=null;try{i=i.slice(i.indexOf("{")),y=JSON.parse(i)}catch{try{i=i.slice(i.indexOf(`workflow
|
|
11
|
+
`)),i=i.slice(i.indexOf("{")),y=JSON.parse(i)}catch{y=null}}if(y&&y.version&&y.nodes&&y.extra)await K.loadGraphData(y);else{if(s.target instanceof HTMLTextAreaElement&&s.target.type==="textarea"||s.target instanceof HTMLInputElement&&s.target.type==="text")return;a.pasteFromClipboard()}})},"usePaste"),Tw=n(()=>{const e=ie(),o=me();be(()=>{const t=e.get("Comfy.Graph.CanvasInfo");o.canvas&&(o.canvas.show_info=t,o.canvas.draw(!1,!0))}),be(()=>{const t=e.get("Comfy.Graph.ZoomSpeed");o.canvas&&(o.canvas.zoom_speed=t)}),be(()=>{ve.snaps_for_comfy=e.get("Comfy.Node.AutoSnapLinkToSlot")}),be(()=>{ve.snap_highlights_node=e.get("Comfy.Node.SnapHighlightsNode")}),be(()=>{mt.keepAllLinksOnBypass=e.get("Comfy.Node.BypassAllLinksOnDelete")}),be(()=>{ve.middle_click_slot_add_default_node=e.get("Comfy.Node.MiddleClickRerouteNode")}),be(()=>{const t=e.get("Comfy.LinkRenderMode");o.canvas&&(o.canvas.links_render_mode=t,o.canvas.setDirty(!1,!0))}),be(()=>{const t=e.get("LiteGraph.Canvas.MinFontSizeForLOD");o.canvas&&(o.canvas.min_font_size_for_lod=t,o.canvas.setDirty(!0,!0))}),be(()=>{const t=e.get("Comfy.Graph.LinkMarkers"),{canvas:s}=o;s&&(s.linkMarkerShape=t,s.setDirty(!1,!0))}),be(()=>{const t=e.get("LiteGraph.Canvas.MaximumFps"),{canvas:s}=o;s&&(s.maximumFps=t)}),be(()=>{const t=e.get("Comfy.Graph.CtrlShiftZoom"),{canvas:s}=o;s&&(s.dragZoomEnabled=t)}),be(()=>{const t=e.get("Comfy.Graph.LiveSelection"),{canvas:s}=o;s&&(s.liveSelection=t)}),be(()=>{pn.doubleClickTime=e.get("Comfy.Pointer.DoubleClickTime")}),be(()=>{pn.bufferTime=e.get("Comfy.Pointer.ClickBufferTime")}),be(()=>{pn.maxClickDrift=e.get("Comfy.Pointer.ClickDrift")}),be(()=>{ve.CANVAS_GRID_SIZE=e.get("Comfy.SnapToGrid.GridSize")}),be(()=>{ve.alwaysSnapToGrid=e.get("pysssss.SnapToGrid")}),be(()=>{ve.context_menu_scaling=e.get("LiteGraph.ContextMenu.Scaling")}),be(()=>{ve.Reroute.maxSplineOffset=e.get("LiteGraph.Reroute.SplineOffset")}),be(()=>{const t=e.get("Comfy.Canvas.NavigationMode");ve.canvasNavigationMode=t,ve.macTrackpadGestures=t==="standard"}),be(()=>{const t=e.get("Comfy.Canvas.LeftMouseClickBehavior");ve.leftMouseClickBehavior=t}),be(()=>{const t=e.get("Comfy.Canvas.MouseWheelScroll");ve.mouseWheelScroll=t}),be(()=>{ve.saveViewportWithGraph=e.get("Comfy.EnableWorkflowViewRestore")})},"useLitegraphSettings"),Nw=[{id:"Comfy.Memory.AllowManualUnload",name:"Allow manual unload of models and execution cache via user command",type:"hidden",defaultValue:!0,versionAdded:"1.18.0"},{id:"Comfy.Validation.Workflows",name:"Validate workflows",type:"boolean",defaultValue:!1},{id:"Comfy.NodeSearchBoxImpl",category:["Comfy","Node Search Box","Implementation"],experimental:!0,name:"Node search box implementation",type:"combo",options:["default","litegraph (legacy)"],defaultValue:"default"},{id:"Comfy.LinkRelease.Action",category:["LiteGraph","LinkRelease","Action"],name:"Action on link release (No modifier)",type:"combo",options:Object.values(St),defaultValue:St.CONTEXT_MENU,defaultsByInstallVersion:{"1.24.1":St.SEARCH_BOX}},{id:"Comfy.LinkRelease.ActionShift",category:["LiteGraph","LinkRelease","ActionShift"],name:"Action on link release (Shift)",type:"combo",options:Object.values(St),defaultValue:St.SEARCH_BOX,defaultsByInstallVersion:{"1.24.1":St.CONTEXT_MENU}},{id:"Comfy.NodeSearchBoxImpl.NodePreview",category:["Comfy","Node Search Box","NodePreview"],name:"Node preview",tooltip:"Only applies to the default implementation",type:"boolean",defaultValue:!0},{id:"Comfy.NodeSearchBoxImpl.ShowCategory",category:["Comfy","Node Search Box","ShowCategory"],name:"Show node category in search results",tooltip:"Only applies to the default implementation",type:"boolean",defaultValue:!0},{id:"Comfy.NodeSearchBoxImpl.ShowIdName",category:["Comfy","Node Search Box","ShowIdName"],name:"Show node id name in search results",tooltip:"Only applies to the default implementation",type:"boolean",defaultValue:!1},{id:"Comfy.NodeSearchBoxImpl.ShowNodeFrequency",category:["Comfy","Node Search Box","ShowNodeFrequency"],name:"Show node frequency in search results",tooltip:"Only applies to the default implementation",type:"boolean",defaultValue:!1},{id:"Comfy.Sidebar.Location",category:["Appearance","Sidebar","Location"],name:"Sidebar location",type:"combo",options:["left","right"],defaultValue:"left"},{id:"Comfy.Sidebar.Size",category:["Appearance","Sidebar","Size"],name:"Sidebar size",type:"combo",options:["normal","small"],defaultValue:n(()=>window.innerWidth<1536?"small":"normal","defaultValue")},{id:"Comfy.Sidebar.UnifiedWidth",category:["Appearance","Sidebar","UnifiedWidth"],name:"Unified sidebar width",type:"boolean",defaultValue:!0,versionAdded:"1.18.1"},{id:"Comfy.Sidebar.Style",category:["Appearance","Sidebar","Style"],name:"Sidebar style",type:"combo",options:["floating","connected"],defaultValue:"connected"},{id:"Comfy.TextareaWidget.FontSize",category:["Appearance","Node Widget","TextareaWidget","FontSize"],name:"Textarea widget font size",type:"slider",defaultValue:10,attrs:{min:8,max:24}},{id:"Comfy.TextareaWidget.Spellcheck",category:["Comfy","Node Widget","TextareaWidget","Spellcheck"],name:"Textarea widget spellcheck",type:"boolean",defaultValue:!1},{id:"Comfy.Workflow.SortNodeIdOnSave",name:"Sort node IDs when saving workflow",type:"boolean",defaultValue:!1},{id:"Comfy.Canvas.NavigationMode",category:["LiteGraph","Canvas Navigation","NavigationMode"],name:"Navigation Mode",defaultValue:"legacy",type:"combo",sortOrder:100,options:[{value:"standard",text:"Standard (New)"},{value:"legacy",text:"Drag Navigation"},{value:"custom",text:"Custom"}],versionAdded:"1.25.0",defaultsByInstallVersion:{"1.25.0":"legacy"},onChange:n(async(e,o)=>{if(!o)return;const t=ie();e==="standard"?(await t.set("Comfy.Canvas.LeftMouseClickBehavior","select"),await t.set("Comfy.Canvas.MouseWheelScroll","panning")):e==="legacy"&&(await t.set("Comfy.Canvas.LeftMouseClickBehavior","panning"),await t.set("Comfy.Canvas.MouseWheelScroll","zoom"))},"onChange")},{id:"Comfy.Canvas.LeftMouseClickBehavior",category:["LiteGraph","Canvas Navigation","LeftMouseClickBehavior"],name:"Left Mouse Click Behavior",defaultValue:"panning",type:"radio",sortOrder:50,options:[{value:"panning",text:"Panning"},{value:"select",text:"Select"}],versionAdded:"1.27.4",onChange:n(async e=>{const o=ie(),t=o.get("Comfy.Canvas.NavigationMode");if(t!=="custom"){if(e==="select"&&t==="standard"||e==="panning"&&t==="legacy")return;await o.set("Comfy.Canvas.NavigationMode","custom")}},"onChange")},{id:"Comfy.Canvas.MouseWheelScroll",category:["LiteGraph","Canvas Navigation","MouseWheelScroll"],name:"Mouse Wheel Scroll",defaultValue:"zoom",type:"radio",options:[{value:"panning",text:"Panning"},{value:"zoom",text:"Zoom in/out"}],versionAdded:"1.27.4",onChange:n(async e=>{const o=ie(),t=o.get("Comfy.Canvas.NavigationMode");if(t!=="custom"){if(e==="panning"&&t==="standard"||e==="zoom"&&t==="legacy")return;await o.set("Comfy.Canvas.NavigationMode","custom")}},"onChange")},{id:"Comfy.Graph.CanvasInfo",category:["LiteGraph","Canvas","CanvasInfo"],name:"Show canvas info on bottom left corner (fps, etc.)",type:"boolean",defaultValue:!0},{id:"Comfy.Node.ShowDeprecated",name:"Show deprecated nodes in search",tooltip:"Deprecated nodes are hidden by default in the UI, but remain functional in existing workflows that use them.",type:"boolean",defaultValue:!1},{id:"Comfy.Node.ShowExperimental",name:"Show experimental nodes in search",tooltip:"Experimental nodes are marked as such in the UI and may be subject to significant changes or removal in future versions. Use with caution in production workflows",type:"boolean",defaultValue:!0},{id:"Comfy.Node.Opacity",category:["Appearance","Node","Opacity"],name:"Node opacity",type:"slider",defaultValue:1,attrs:{min:.01,max:1,step:.01}},{id:"Comfy.Workflow.ShowMissingNodesWarning",name:"Show missing nodes warning",type:"boolean",defaultValue:!0},{id:"Comfy.Workflow.ShowMissingModelsWarning",name:"Show missing models warning",type:"boolean",defaultValue:!0,experimental:!0},{id:"Comfy.Workflow.WarnBlueprintOverwrite",name:"Require confirmation to overwrite an existing subgraph blueprint",type:"boolean",defaultValue:!0},{id:"Comfy.Graph.ZoomSpeed",category:["LiteGraph","Canvas","ZoomSpeed"],name:"Canvas zoom speed",type:"slider",defaultValue:1.1,attrs:{min:1.01,max:2.5,step:.01}},{id:"Comfy.NodeLibrary.Bookmarks",name:"Node library bookmarks with display name (deprecated)",type:"hidden",defaultValue:[],deprecated:!0},{id:"Comfy.NodeLibrary.Bookmarks.V2",name:"Node library bookmarks v2 with unique name",type:"hidden",defaultValue:[]},{id:"Comfy.NodeLibrary.BookmarksCustomization",name:"Node library bookmarks customization",type:"hidden",defaultValue:{}},{id:"Comfy.GroupSelectedNodes.Padding",category:["LiteGraph","Group","Padding"],name:"Group selected nodes padding",type:"slider",defaultValue:10,attrs:{min:0,max:100}},{id:"Comfy.Node.DoubleClickTitleToEdit",category:["LiteGraph","Node","DoubleClickTitleToEdit"],name:"Double click node title to edit",type:"boolean",defaultValue:!0},{id:"Comfy.Node.AllowImageSizeDraw",category:["LiteGraph","Node Widget","AllowImageSizeDraw"],name:"Show width × height below the image preview",type:"boolean",defaultValue:!0},{id:"Comfy.Group.DoubleClickTitleToEdit",category:["LiteGraph","Group","DoubleClickTitleToEdit"],name:"Double click group title to edit",type:"boolean",defaultValue:!0},{id:"Comfy.Window.UnloadConfirmation",name:"Show confirmation when closing window",type:"boolean",defaultValue:!0,versionModified:"1.7.12"},{id:"Comfy.TreeExplorer.ItemPadding",category:["Appearance","Tree Explorer","ItemPadding"],name:"Tree explorer item padding",type:"slider",defaultValue:2,attrs:{min:0,max:8,step:1}},{id:"Comfy.ModelLibrary.AutoLoadAll",name:"Automatically load all model folders",tooltip:"If true, all folders will load as soon as you open the model library (this may cause delays while it loads). If false, root level model folders will only load once you click on them.",type:"boolean",defaultValue:!1},{id:"Comfy.ModelLibrary.NameFormat",name:"What name to display in the model library tree view",tooltip:'Select "filename" to render a simplified view of the raw filename (without directory or ".safetensors" extension) in the model list. Select "title" to display the configurable model metadata title.',type:"combo",options:["filename","title"],defaultValue:"title"},{id:"Comfy.Locale",name:"Language",type:"combo",options:[{value:"en",text:"English"},{value:"zh",text:"中文"},{value:"zh-TW",text:"繁體中文"},{value:"ru",text:"Русский"},{value:"ja",text:"日本語"},{value:"ko",text:"한국어"},{value:"fr",text:"Français"},{value:"es",text:"Español"},{value:"ar",text:"عربي"},{value:"tr",text:"Türkçe"},{value:"pt-BR",text:"Português (BR)"}],defaultValue:n(()=>navigator.language.split("-")[0]||"en","defaultValue")},{id:"Comfy.NodeBadge.NodeSourceBadgeMode",category:["LiteGraph","Node","NodeSourceBadgeMode"],name:"Node source badge mode",type:"combo",options:Object.values(dt),defaultValue:dt.HideBuiltIn},{id:"Comfy.NodeBadge.NodeIdBadgeMode",category:["LiteGraph","Node","NodeIdBadgeMode"],name:"Node ID badge mode",type:"combo",options:[dt.None,dt.ShowAll],defaultValue:dt.None},{id:"Comfy.NodeBadge.NodeLifeCycleBadgeMode",category:["LiteGraph","Node","NodeLifeCycleBadgeMode"],name:"Node life cycle badge mode",type:"combo",options:[dt.None,dt.ShowAll],defaultValue:dt.ShowAll},{id:"Comfy.NodeBadge.ShowApiPricing",category:["Comfy","API Nodes"],name:"Show API node pricing badge",type:"boolean",defaultValue:!0,versionAdded:"1.20.3"},{id:"Comfy.Notification.ShowVersionUpdates",category:["Comfy","Notification Preferences"],name:"Show version updates",tooltip:"Show updates for new models, and major new features.",type:"boolean",defaultValue:!0},{id:"Comfy.ConfirmClear",category:["Comfy","Workflow","ConfirmClear"],name:"Require confirmation when clearing workflow",type:"boolean",defaultValue:!0},{id:"Comfy.PromptFilename",category:["Comfy","Workflow","PromptFilename"],name:"Prompt for filename when saving workflow",type:"boolean",defaultValue:!0},{id:"Comfy.PreviewFormat",category:["LiteGraph","Node Widget","PreviewFormat"],name:"Preview image format",tooltip:"When displaying a preview in the image widget, convert it to a lightweight image, e.g. webp, jpeg, webp;50, etc.",type:"text",defaultValue:""},{id:"Comfy.DisableSliders",category:["LiteGraph","Node Widget","DisableSliders"],name:"Disable node widget sliders",type:"boolean",defaultValue:!1},{id:"Comfy.DisableFloatRounding",category:["LiteGraph","Node Widget","DisableFloatRounding"],name:"Disable default float widget rounding.",tooltip:"(requires page reload) Cannot disable round when round is set by the node in the backend.",type:"boolean",defaultValue:!1},{id:"Comfy.FloatRoundingPrecision",category:["LiteGraph","Node Widget","FloatRoundingPrecision"],name:"Float widget rounding decimal places [0 = auto].",tooltip:"(requires page reload)",type:"slider",attrs:{min:0,max:6,step:1},defaultValue:0},{id:"LiteGraph.Node.TooltipDelay",name:"Tooltip Delay",type:"number",attrs:{min:100,max:3e3,step:50},defaultValue:500,versionAdded:"1.9.0"},{id:"Comfy.EnableTooltips",category:["LiteGraph","Node","EnableTooltips"],name:"Enable Tooltips",type:"boolean",defaultValue:!0},{id:"Comfy.DevMode",name:"Enable dev mode options (API save, etc.)",type:"boolean",defaultValue:!1,onChange:n(e=>{const o=document.getElementById("comfy-dev-save-api-button");o&&(o.style.display=e?"flex":"none")},"onChange")},{id:"Comfy.UseNewMenu",category:["Comfy","Menu","UseNewMenu"],defaultValue:"Top",name:"Use new menu",type:"combo",options:["Disabled","Top"],tooltip:"Enable the redesigned top menu bar.",migrateDeprecatedValue:n(e=>e==="Floating"||e==="Bottom"?"Top":e,"migrateDeprecatedValue")},{id:"Comfy.Workflow.WorkflowTabsPosition",name:"Opened workflows position",type:"combo",options:["Sidebar","Topbar"],defaultValue:"Topbar",migrateDeprecatedValue:n(e=>e==="Topbar (2nd-row)"?"Topbar":e,"migrateDeprecatedValue")},{id:"Comfy.Graph.CanvasMenu",category:["LiteGraph","Canvas","CanvasMenu"],name:"Show graph canvas menu",type:"boolean",defaultValue:!0},{id:"Comfy.QueueButton.BatchCountLimit",name:"Batch count limit",tooltip:"The maximum number of tasks added to the queue at one button click",type:"number",defaultValue:100,versionAdded:"1.3.5"},{id:"Comfy.Keybinding.UnsetBindings",name:"Keybindings unset by the user",type:"hidden",defaultValue:[],versionAdded:"1.3.7",versionModified:"1.7.3",migrateDeprecatedValue:n(e=>e.map(o=>(o.targetSelector==="#graph-canvas"&&(o.targetElementId="graph-canvas-container"),o)),"migrateDeprecatedValue")},{id:"Comfy.Keybinding.NewBindings",name:"Keybindings set by the user",type:"hidden",defaultValue:[],versionAdded:"1.3.7"},{id:"Comfy.Extension.Disabled",name:"Disabled extension names",type:"hidden",defaultValue:[],versionAdded:"1.3.11"},{id:"Comfy.LinkRenderMode",category:["LiteGraph","Graph","LinkRenderMode"],name:"Link Render Mode",defaultValue:2,type:"combo",options:[{value:ve.STRAIGHT_LINK,text:"Straight"},{value:ve.LINEAR_LINK,text:"Linear"},{value:ve.SPLINE_LINK,text:"Spline"},{value:ve.HIDDEN_LINK,text:"Hidden"}]},{id:"Comfy.Node.AutoSnapLinkToSlot",category:["LiteGraph","Node","AutoSnapLinkToSlot"],name:"Auto snap link to node slot",tooltip:"When dragging a link over a node, the link automatically snap to a viable input slot on the node",type:"boolean",defaultValue:!0,versionAdded:"1.3.29"},{id:"Comfy.Node.SnapHighlightsNode",category:["LiteGraph","Node","SnapHighlightsNode"],name:"Snap highlights node",tooltip:"When dragging a link over a node with viable input slot, highlight the node",type:"boolean",defaultValue:!0,versionAdded:"1.3.29"},{id:"Comfy.Node.BypassAllLinksOnDelete",category:["LiteGraph","Node","BypassAllLinksOnDelete"],name:"Keep all links when deleting nodes",tooltip:"When deleting a node, attempt to reconnect all of its input and output links (bypassing the deleted node)",type:"boolean",defaultValue:!0,versionAdded:"1.3.40"},{id:"Comfy.Node.MiddleClickRerouteNode",category:["LiteGraph","Node","MiddleClickRerouteNode"],name:"Middle-click creates a new Reroute node",type:"boolean",defaultValue:!0,versionAdded:"1.3.42"},{id:"Comfy.Graph.LinkMarkers",category:["LiteGraph","Link","LinkMarkers"],name:"Link midpoint markers",defaultValue:$o.Circle,type:"combo",options:[{value:$o.None,text:"None"},{value:$o.Circle,text:"Circle"},{value:$o.Arrow,text:"Arrow"}],versionAdded:"1.3.42"},{id:"Comfy.DOMClippingEnabled",category:["LiteGraph","Node","DOMClippingEnabled"],name:"Enable DOM element clipping (enabling may reduce performance)",type:"boolean",defaultValue:!0},{id:"Comfy.Graph.CtrlShiftZoom",category:["LiteGraph","Canvas","CtrlShiftZoom"],name:"Enable fast-zoom shortcut (Ctrl + Shift + Drag)",type:"boolean",defaultValue:!0,versionAdded:"1.4.0"},{id:"Comfy.Graph.LiveSelection",category:["LiteGraph","Canvas","LiveSelection"],name:"Live selection",tooltip:"When enabled, nodes are selected/deselected in real-time as you drag the selection rectangle, similar to other design tools.",type:"boolean",defaultValue:!1,versionAdded:"1.36.1"},{id:"Comfy.Pointer.ClickDrift",category:["LiteGraph","Pointer","ClickDrift"],name:"Pointer click drift (maximum distance)",tooltip:`If the pointer moves more than this distance while holding a button down, it is considered dragging (rather than clicking).
|
|
12
|
+
|
|
13
|
+
Helps prevent objects from being unintentionally nudged if the pointer is moved whilst clicking.`,experimental:!0,type:"slider",attrs:{min:0,max:20,step:1},defaultValue:6,versionAdded:"1.4.3"},{id:"Comfy.Pointer.ClickBufferTime",category:["LiteGraph","Pointer","ClickBufferTime"],name:"Pointer click drift delay",tooltip:`After pressing a pointer button down, this is the maximum time (in milliseconds) that pointer movement can be ignored for.
|
|
14
|
+
|
|
15
|
+
Helps prevent objects from being unintentionally nudged if the pointer is moved whilst clicking.`,experimental:!0,type:"slider",attrs:{min:0,max:1e3,step:25},defaultValue:150,versionAdded:"1.4.3"},{id:"Comfy.Pointer.DoubleClickTime",category:["LiteGraph","Pointer","DoubleClickTime"],name:"Double click interval (maximum)",tooltip:"The maximum time in milliseconds between the two clicks of a double-click. Increasing this value may assist if double-clicks are sometimes not registered.",type:"slider",attrs:{min:100,max:1e3,step:50},defaultValue:300,versionAdded:"1.4.3"},{id:"Comfy.SnapToGrid.GridSize",category:["LiteGraph","Canvas","GridSize"],name:"Snap to grid size",type:"slider",attrs:{min:1,max:500},tooltip:"When dragging and resizing nodes while holding shift they will be aligned to the grid, this controls the size of that grid.",defaultValue:ve.CANVAS_GRID_SIZE},{id:"pysssss.SnapToGrid",category:["LiteGraph","Canvas","AlwaysSnapToGrid"],name:"Always snap to grid",type:"boolean",defaultValue:!1,versionAdded:"1.3.13"},{id:"Comfy.Server.ServerConfigValues",name:"Server config values for frontend display",tooltip:"Server config values used for frontend display only",type:"hidden",defaultValue:{},versionAdded:"1.4.8"},{id:"Comfy.Server.LaunchArgs",name:"Server launch arguments",tooltip:"These are the actual arguments that are passed to the server when it is launched.",type:"hidden",defaultValue:{},versionAdded:"1.4.8"},{id:"Comfy.Queue.MaxHistoryItems",name:"Queue history size",tooltip:"The maximum number of tasks that show in the queue history.",type:"slider",attrs:{min:2,max:256,step:2},defaultValue:64,versionAdded:"1.4.12"},{id:"Comfy.Execution.PreviewMethod",category:["Comfy","Execution","PreviewMethod"],name:"Live preview method",tooltip:'Live preview method during image generation. "default" uses the server CLI setting.',type:"combo",options:["default","none","auto","latent2rgb","taesd"],defaultValue:"default",versionAdded:"1.36.0"},{id:"LiteGraph.Canvas.MaximumFps",name:"Maximum FPS",tooltip:"The maximum frames per second that the canvas is allowed to render. Caps GPU usage at the cost of smoothness. If 0, the screen refresh rate is used. Default: 0",type:"slider",attrs:{min:0,max:120},defaultValue:0,versionAdded:"1.5.1"},{id:"Comfy.EnableWorkflowViewRestore",category:["Comfy","Workflow","EnableWorkflowViewRestore"],name:"Save and restore canvas position and zoom level in workflows",type:"boolean",defaultValue:!0,versionModified:"1.5.4"},{id:"Comfy.Workflow.ConfirmDelete",name:"Show confirmation when deleting workflows",type:"boolean",defaultValue:!0,versionAdded:"1.5.6"},{id:"Comfy.ColorPalette",name:"The active color palette id",type:"hidden",defaultValue:"dark",versionModified:"1.6.7",migrateDeprecatedValue(e){return e.startsWith("custom_")?e.replace("custom_",""):e}},{id:"Comfy.CustomColorPalettes",name:"Custom color palettes",type:"hidden",defaultValue:{},versionModified:"1.6.7"},{id:"Comfy.WidgetControlMode",category:["Comfy","Node Widget","WidgetControlMode"],name:"Widget control mode",tooltip:"Controls when widget values are updated (randomize/increment/decrement), either before the prompt is queued or after.",type:"combo",defaultValue:"after",options:["before","after"],versionModified:"1.6.10"},{id:"Comfy.TutorialCompleted",name:"Tutorial completed",type:"hidden",defaultValue:!1,versionAdded:"1.8.7"},{id:"Comfy.InstalledVersion",name:"The frontend version that was running when the user first installed ComfyUI",type:"hidden",defaultValue:null,versionAdded:"1.24.0"},{id:"LiteGraph.ContextMenu.Scaling",name:"Scale node combo widget menus (lists) when zoomed in",defaultValue:!1,type:"boolean",versionAdded:"1.8.8"},{id:"LiteGraph.Canvas.LowQualityRenderingZoomThreshold",type:"hidden",deprecated:!0,name:"Low quality rendering zoom threshold (deprecated)",tooltip:"Zoom level threshold for performance mode. Lower values (0.1) = quality at all zoom levels. Higher values (1.0) = performance mode even when zoomed in. Performance mode simplifies rendering by hiding text labels, shadows, and details.",attrs:{min:.1,max:1,step:.01},defaultValue:.6,versionAdded:"1.9.1",versionModified:"1.26.7"},{id:"LiteGraph.Canvas.MinFontSizeForLOD",name:"Zoom Node Level of Detail - font size threshold",tooltip:"Controls when the nodes switch to low quality LOD rendering. Uses font size in pixels to determine when to switch. Set to 0 to disable. Values 1-24 set the minimum font size threshold for LOD - higher values (24px) = switch nodes to simplified rendering sooner when zooming out, lower values (1px) = maintain full node quality longer.",type:"slider",attrs:{min:0,max:24,step:1},defaultValue:8,versionAdded:"1.26.7",hideInVueNodes:!0},{id:"Comfy.Canvas.SelectionToolbox",category:["LiteGraph","Canvas","SelectionToolbox"],name:"Show selection toolbox",type:"boolean",defaultValue:!0,versionAdded:"1.10.5"},{id:"LiteGraph.Reroute.SplineOffset",name:"Reroute spline offset",tooltip:"The bezier control point offset from the reroute centre point",type:"slider",defaultValue:20,attrs:{min:0,max:400},versionAdded:"1.15.7"},{id:"Comfy.Toast.DisableReconnectingToast",name:"Disable toasts when reconnecting or reconnected",type:"hidden",defaultValue:!1,versionAdded:"1.15.12"},{id:"Comfy.Minimap.Visible",name:"Display minimap on canvas",type:"hidden",defaultValue:window.innerWidth>=en.lg,versionAdded:"1.25.0"},{id:"Comfy.Minimap.NodeColors",name:"Display node with its original color on minimap",type:"hidden",defaultValue:!1,versionAdded:"1.26.0"},{id:"Comfy.Minimap.ShowLinks",name:"Display links on minimap",type:"hidden",defaultValue:!0,versionAdded:"1.26.0"},{id:"Comfy.Minimap.ShowGroups",name:"Display node groups on minimap",type:"hidden",defaultValue:!0,versionAdded:"1.26.0"},{id:"Comfy.Minimap.RenderBypassState",name:"Render bypass state on minimap",type:"hidden",defaultValue:!0,versionAdded:"1.26.0"},{id:"Comfy.Minimap.RenderErrorState",name:"Render error state on minimap",type:"hidden",defaultValue:!0,versionAdded:"1.26.0"},{id:"Comfy.Workflow.AutoSaveDelay",name:"Auto Save Delay (ms)",defaultValue:1e3,type:"number",tooltip:'Only applies if Auto Save is set to "after delay".',versionAdded:"1.16.0"},{id:"Comfy.Workflow.AutoSave",name:"Auto Save",type:"combo",options:["off","after delay"],defaultValue:"off",versionAdded:"1.16.0"},{id:"Comfy.Workflow.Persist",name:"Persist workflow state and restore on page (re)load",type:"boolean",defaultValue:!0,versionAdded:"1.16.1"},{id:"LiteGraph.Node.DefaultPadding",name:"Always shrink new nodes",tooltip:"Resize nodes to the smallest possible size when created. When disabled, a newly added node will be widened slightly to show widget values.",type:"boolean",defaultValue:!1,versionAdded:"1.18.0"},{id:"Comfy.Canvas.BackgroundImage",category:["Appearance","Canvas","Background"],name:"Canvas background image",type:"backgroundImage",tooltip:'Image URL for the canvas background. You can right-click an image in the outputs panel and select "Set as Background" to use it, or upload your own image using the upload button.',defaultValue:"",versionAdded:"1.20.4",versionModified:"1.20.5"},{id:"Comfy.Release.Version",name:"Last seen release version",type:"hidden",defaultValue:""},{id:"Comfy.Release.Status",name:"Release status",type:"hidden",defaultValue:"skipped"},{id:"Comfy.Release.Timestamp",name:"Release seen timestamp",type:"hidden",defaultValue:0},{id:"Comfy.Templates.SelectedModels",name:"Template library - Selected model filters",type:"hidden",defaultValue:[]},{id:"Comfy.Templates.SelectedUseCases",name:"Template library - Selected use case filters",type:"hidden",defaultValue:[]},{id:"Comfy.Templates.SelectedRunsOn",name:"Template library - Selected runs on filters",type:"hidden",defaultValue:[]},{id:"Comfy.Templates.SortBy",name:"Template library - Sort preference",type:"hidden",defaultValue:"default"},{id:"Comfy.VueNodes.Enabled",category:["Comfy","Nodes 2.0","VueNodesEnabled"],name:"Modern Node Design (Nodes 2.0)",type:"boolean",tooltip:"Modern: DOM-based rendering with enhanced interactivity, native browser features, and updated visual design. Classic: Traditional canvas rendering.",defaultValue:!1,sortOrder:100,experimental:!0,versionAdded:"1.27.1"},{id:"Comfy.VueNodes.AutoScaleLayout",category:["Comfy","Nodes 2.0","AutoScaleLayout"],name:"Auto-scale layout (Nodes 2.0)",tooltip:"Automatically scale node positions when switching to Nodes 2.0 rendering to prevent overlap",type:"boolean",sortOrder:50,experimental:!0,defaultValue:!0,versionAdded:"1.30.3"},{id:"Comfy.Assets.UseAssetAPI",name:"Use Asset API for model library",type:"hidden",tooltip:"Use new Asset API for model browsing",defaultValue:!1,experimental:!0},{id:"Comfy.VersionCompatibility.DisableWarnings",name:"Disable version compatibility warnings",type:"hidden",defaultValue:!1,versionAdded:"1.34.1"},{id:"Comfy.Queue.QPOV2",name:"Queue Panel V2",type:"hidden",tooltip:"Enable the new Assets Panel design with list/grid view toggle",defaultValue:!1,experimental:!0}];function $w(){const e=Ae(),o=ie(),t=ot(),s=k(()=>o.get("Comfy.Workflow.AutoSave")),a=k(()=>o.get("Comfy.Workflow.AutoSaveDelay"));let l=null,i=!1,r=!1;const u=n(()=>{if(l&&(clearTimeout(l),l=null),s.value==="after delay"){if(i){r=!0;return}const m=a.value;l=setTimeout(async()=>{const g=e.activeWorkflow;if(g?.isModified&&g.isPersisted)try{i=!0,await t.saveWorkflow(g)}catch(c){console.error("Auto save failed:",c)}finally{i=!1,r&&(r=!1,u())}},m)}},"scheduleAutoSave");ne(s,m=>{l&&(clearTimeout(l),l=null),m==="after delay"&&e.activeWorkflow?.isModified&&u()},{immediate:!0});const d=n(()=>{u()},"onGraphChanged");Ce.addEventListener("graphChanged",d),rt(()=>{l&&(clearTimeout(l),l=null),Ce.removeEventListener("graphChanged",d)})}n($w,"useWorkflowAutoSave");function Iw(){const e=Ia(),o=Ma(),{t}=pe(),s=zt(),a=xl(),l=me(),i=sl.TEMPLATE,r=["linear"],u=n(c=>/^[a-zA-Z0-9_.-]+$/.test(c),"isValidParameter"),d=n(c=>r.includes(c),"isSupportedMode"),m=n(()=>{const c={...e.query};delete c.template,delete c.source,delete c.mode,o.replace({query:c})},"cleanupUrlParams");return{loadTemplateFromUrl:n(async()=>{const c=e.query.template;if(!c||typeof c!="string")return;if(!u(c)){console.warn(`[useTemplateUrlLoader] Invalid template parameter format: ${c}`);return}const b=e.query.source||"default";if(!u(b)){console.warn(`[useTemplateUrlLoader] Invalid source parameter format: ${b}`);return}const w=e.query.mode;if(w&&(typeof w!="string"||!u(w))){console.warn(`[useTemplateUrlLoader] Invalid mode parameter format: ${w}`);return}w&&!d(w)&&console.warn(`[useTemplateUrlLoader] Unsupported mode parameter: ${w}. Supported modes: ${r.join(", ")}`);try{await a.loadTemplates(),await a.loadWorkflowTemplate(c,b)?w==="linear"&&(l.linearMode=!0):s.add({severity:"error",summary:t("g.error"),detail:t("templateWorkflows.error.templateNotFound",{templateName:c}),life:3e3})}catch(v){console.error("[useTemplateUrlLoader] Failed to load template from URL:",v),s.add({severity:"error",summary:t("g.error"),detail:t("g.errorLoadingTemplate"),life:3e3})}finally{m(),Wr(i)}},"loadTemplateFromUrl")}}n(Iw,"useTemplateUrlLoader");function Mw(){const e=Ae(),o=ie(),t=Ia(),s=Ma(),a=Iw(),l=sl.TEMPLATE,i=n(async()=>{zr(l);const S=Br(l,t.query);return S&&await s.replace({query:S}),S??t.query},"ensureTemplateQueryFromIntent"),r=k(()=>o.get("Comfy.Workflow.Persist")),u=n(()=>{if(!r.value)return;const S=JSON.stringify(K.rootGraph.serialize());try{localStorage.setItem("workflow",S),Ce.clientId&&sessionStorage.setItem(`workflow:${Ce.clientId}`,S)}catch(M){const I=Object.keys(sessionStorage).filter(N=>N.startsWith("workflow:")||N==="workflow");throw console.error("QuotaExceededError details:",{workflowSizeKB:Math.round(S.length/1024),totalStorageItems:Object.keys(sessionStorage).length,ourWorkflowKeys:I.length,ourWorkflowSizes:I.map(N=>({key:N,sizeKB:Math.round(sessionStorage[N].length/1024)})),error:M instanceof Error?M.message:String(M)}),M}},"persistCurrentWorkflow"),d=n(async(S,M)=>{if(!S)return!1;const I=JSON.parse(S);return await K.loadGraphData(I,!0,!0,M),!0},"loadWorkflowFromStorage"),m=n(async()=>{const S=fn("Comfy.PreviousWorkflow"),M=Ce.initialClientId??Ce.clientId;if(M){const N=sessionStorage.getItem(`workflow:${M}`);if(await d(N,S))return!0}const I=localStorage.getItem("workflow");return await d(I,S)},"loadPreviousWorkflowFromStorage"),g=n(async()=>{o.get("Comfy.TutorialCompleted")?await K.loadGraphData():(await o.set("Comfy.TutorialCompleted",!0),await ot().loadBlankWorkflow(),await Se().execute("Comfy.BrowseTemplates"))},"loadDefaultWorkflow"),c=n(async()=>{if(r.value)try{await m()||await g()}catch(S){console.error("Error loading previous workflow",S),await g()}},"initializeWorkflow"),b=n(async()=>{const S=await i();S.template&&typeof S.template=="string"&&await a.loadTemplateFromUrl()},"loadTemplateFromUrlIfPresent");ne(()=>e.activeWorkflow?.key,S=>{S&&(mn("Comfy.PreviousWorkflow",S),u())}),Ce.addEventListener("graphChanged",u),Ta(()=>{Ce.removeEventListener("graphChanged",u)});const w=k(()=>e.openWorkflows),v=k(()=>e.activeWorkflow),y=k(()=>{if(!w.value||!v.value)return{paths:[],activeIndex:-1};const S=w.value.filter(I=>I?.isPersisted).map(I=>I.path),M=w.value.findIndex(I=>I.path===v.value?.path);return{paths:S,activeIndex:M}}),x=JSON.parse(fn("Comfy.OpenWorkflowsPaths")||"[]"),_=JSON.parse(fn("Comfy.ActiveWorkflowIndex")||"-1");return ne(y,({paths:S,activeIndex:M})=>{r.value&&(mn("Comfy.OpenWorkflowsPaths",JSON.stringify(S)),mn("Comfy.ActiveWorkflowIndex",JSON.stringify(M)))}),{initializeWorkflow:c,loadTemplateFromUrlIfPresent:b,restoreWorkflowTabsState:n(()=>{if(!r.value)return;x?.length>0&&_>=0&&e.openWorkflowsInBackground({left:x.slice(0,_),right:x.slice(_)})},"restoreWorkflowTabsState")}}n(Mw,"useWorkflowPersistence");function Pw(e,o={}){const{settleDelay:t=256,passive:s=!0}=o,a=L(!1),l=n(()=>{a.value=!0},"markTransformActive"),i=Zl(()=>{a.value=!1},t);return Le(e,"wheel",n(()=>{l(),i()},"handleWheel"),{capture:!0,passive:s}),{isTransforming:a}}n(Pw,"useTransformSettling");function Dw(){const e=Ca({x:0,y:0,z:1}),o=k(()=>({transform:`scale(${e.z}) translate(${e.x}px, ${e.y}px)`,transformOrigin:"0 0"}));function t(c){!c||!c.ds||(e.x=c.ds.offset[0],e.y=c.ds.offset[1],e.z=c.ds.scale||1)}n(t,"syncWithCanvas");function s(c){return{x:(c.x+e.x)*e.z,y:(c.y+e.y)*e.z}}n(s,"canvasToScreen");const a=n(c=>({x:c.x/e.z-e.x,y:c.y/e.z-e.y}),"screenToCanvas");function l(c,b){const w=s({x:c[0],y:c[1]}),v=b[0]*e.z,y=b[1]*e.z;return new DOMRect(w.x,w.y,v,y)}n(l,"getNodeScreenBounds");function i(c){return e.z<.1?Math.min(c*5,2):e.z>3?Math.max(c*.5,.05):c}n(i,"calculateAdjustedMargin");function r(c){return Math.max(c[0],c[1])*e.z<4}n(r,"isNodeTooSmall");function u(c,b){const w=c.width*b,v=c.height*b;return{left:-w,right:c.width+w,top:-v,bottom:c.height+v}}n(u,"getExpandedViewportBounds");function d(c,b,w){const v=c.x+b[0]*e.z,y=c.y+b[1]*e.z;return!(v<w.left||c.x>w.right||y<w.top||c.y>w.bottom)}n(d,"testViewportIntersection");function m(c,b,w,v=.2){if(r(b))return!1;const y=s({x:c[0],y:c[1]}),x=i(v),_=u(w,x);return d(y,b,_)}n(m,"isNodeInViewport");function g(c,b=.2){const w=c.width*b,v=c.height*b,y=a({x:-w,y:-v}),x=a({x:c.width+w,y:c.height+v});return{x:y.x,y:y.y,width:x.x-y.x,height:x.y-y.y}}return n(g,"getViewportBounds"),{camera:In(e),transformStyle:o,syncWithCanvas:t,canvasToScreen:s,screenToCanvas:a,getNodeScreenBounds:l,isNodeInViewport:m,getViewportBounds:g}}n(Dw,"useTransformStateIndividual");const ks=nn(Dw),Aw=q({__name:"TransformPane",props:{canvas:{}},setup(e){const o=e,{transformStyle:t,syncWithCanvas:s}=ks(),a=k(()=>o.canvas?.canvas),{isTransforming:l}=Pw(a,{settleDelay:16});return oo(()=>{o.canvas&&s(o.canvas)},{immediate:!0}),(i,r)=>(f(),T("div",{"data-testid":"transform-pane",class:J(C(fe)("absolute inset-0 w-full h-full pointer-events-none",C(l)?"transform-pane--interacting":"will-change-auto")),style:ge(C(t))},[Me(i.$slots,"default",{},void 0,!0)],6))}}),Ew=Ee(Aw,[["__scopeId","data-v-4d46eee6"]]),Lw={class:"flex items-center gap-2"},Ow={for:"node-colors"},Vw={class:"flex items-center gap-2"},Rw={for:"show-links"},Ww={class:"flex items-center gap-2"},zw={for:"show-groups"},Bw={class:"flex items-center gap-2"},Fw={for:"render-bypass"},Uw={class:"flex items-center gap-2"},Gw={for:"render-error"},jw=q({__name:"MiniMapPanel",props:{panelStyles:{},nodeColors:{type:Boolean},showLinks:{type:Boolean},showGroups:{type:Boolean},renderBypass:{type:Boolean},renderError:{type:Boolean}},emits:["updateOption"],setup(e){return(o,t)=>(f(),T("div",{class:"minimap-panel mr-2 flex flex-col gap-2 bg-comfy-menu-bg p-3 text-sm shadow-interface",style:ge(o.panelStyles)},[p("div",Lw,[z(C(fo),{"input-id":"node-colors",name:"node-colors","model-value":o.nodeColors,binary:"","onUpdate:modelValue":t[0]||(t[0]=s=>o.$emit("updateOption","Comfy.Minimap.NodeColors",s))},null,8,["model-value"]),t[5]||(t[5]=p("i",{class:"icon-[lucide--palette]"},null,-1)),p("label",Ow,B(o.$t("minimap.nodeColors")),1)]),p("div",Vw,[z(C(fo),{"input-id":"show-links",name:"show-links","model-value":o.showLinks,binary:"","onUpdate:modelValue":t[1]||(t[1]=s=>o.$emit("updateOption","Comfy.Minimap.ShowLinks",s))},null,8,["model-value"]),t[6]||(t[6]=p("i",{class:"icon-[lucide--route]"},null,-1)),p("label",Rw,B(o.$t("minimap.showLinks")),1)]),p("div",Ww,[z(C(fo),{"input-id":"show-groups",name:"show-groups","model-value":o.showGroups,binary:"","onUpdate:modelValue":t[2]||(t[2]=s=>o.$emit("updateOption","Comfy.Minimap.ShowGroups",s))},null,8,["model-value"]),t[7]||(t[7]=p("i",{class:"icon-[lucide--frame]"},null,-1)),p("label",zw,B(o.$t("minimap.showGroups")),1)]),p("div",Bw,[z(C(fo),{"input-id":"render-bypass",name:"render-bypass","model-value":o.renderBypass,binary:"","onUpdate:modelValue":t[3]||(t[3]=s=>o.$emit("updateOption","Comfy.Minimap.RenderBypassState",s))},null,8,["model-value"]),t[8]||(t[8]=p("i",{class:"icon-[lucide--circle-slash-2]"},null,-1)),p("label",Fw,B(o.$t("minimap.renderBypassState")),1)]),p("div",Uw,[z(C(fo),{"input-id":"render-error",name:"render-error","model-value":o.renderError,binary:"","onUpdate:modelValue":t[4]||(t[4]=s=>o.$emit("updateOption","Comfy.Minimap.RenderErrorState",s))},null,8,["model-value"]),t[9]||(t[9]=p("i",{class:"icon-[lucide--message-circle-warning]"},null,-1)),p("label",Gw,B(o.$t("minimap.renderErrorState")),1)])],4))}}),Hw=["width","height"],qw=q({__name:"MiniMap",setup(e){const o=Se(),t=L(),s=Nn("containerRef"),a=Nn("canvasRef"),{initialized:l,visible:i,containerStyles:r,viewportStyles:u,width:d,height:m,panelStyles:g,nodeColors:c,showLinks:b,showGroups:w,renderBypass:v,renderError:y,updateOption:x,destroy:_,handlePointerDown:h,handlePointerMove:S,handlePointerUp:M,handlePointerCancel:I,handleWheel:N,setMinimapRef:$}=ps({containerRefMaybe:s,canvasRefMaybe:a}),P=L(!1),F=n(()=>{P.value=!P.value},"toggleOptionsPanel");return Ve(()=>{t.value&&$(t.value)}),rt(()=>{_()}),(U,A)=>C(i)&&C(l)?(f(),T("div",{key:0,ref_key:"minimapRef",ref:t,class:"minimap-main-container absolute right-0 bottom-[54px] z-1000 flex"},[P.value?(f(),G(jw,{key:0,"panel-styles":C(g),"node-colors":C(c),"show-links":C(b),"show-groups":C(w),"render-bypass":C(v),"render-error":C(y),onUpdateOption:C(x)},null,8,["panel-styles","node-colors","show-links","show-groups","render-bypass","render-error","onUpdateOption"])):R("",!0),p("div",{ref_key:"containerRef",ref:s,class:"litegraph-minimap relative border border-interface-stroke bg-comfy-menu-bg shadow-interface",style:ge(C(r))},[z(X,{class:"absolute top-0 left-0 z-10",size:"icon",variant:"muted-textonly","aria-label":U.$t("g.settings"),onClick:_e(F,["stop"])},{default:O(()=>A[7]||(A[7]=[p("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["aria-label"]),z(X,{class:"absolute top-0 right-0 z-10",size:"icon",variant:"muted-textonly","aria-label":U.$t("g.close"),"data-testid":"close-minmap-button",onClick:A[0]||(A[0]=_e(()=>C(o).execute("Comfy.Canvas.ToggleMinimap"),["stop"]))},{default:O(()=>A[8]||(A[8]=[p("i",{class:"icon-[lucide--x]"},null,-1)])),_:1},8,["aria-label"]),p("hr",{class:"absolute top-6 h-px border-0 bg-node-component-border",style:ge({width:C(r).width})},null,4),p("canvas",{ref_key:"canvasRef",ref:a,width:C(d),height:C(m),class:"minimap-canvas"},null,8,Hw),p("div",{class:"minimap-viewport",style:ge(C(u))},null,4),p("div",{class:"absolute inset-0 touch-none",onPointerdown:A[1]||(A[1]=(...E)=>C(h)&&C(h)(...E)),onPointermove:A[2]||(A[2]=(...E)=>C(S)&&C(S)(...E)),onPointerup:A[3]||(A[3]=(...E)=>C(M)&&C(M)(...E)),onPointerleave:A[4]||(A[4]=(...E)=>C(M)&&C(M)(...E)),onPointercancel:A[5]||(A[5]=(...E)=>C(I)&&C(I)(...E)),onWheel:A[6]||(A[6]=(...E)=>C(N)&&C(N)(...E))},null,32)],4)],512)):R("",!0)}}),Kw=Ee(qw,[["__scopeId","data-v-66f11255"]]);function zn(e){return e.ctrlKey||e.metaKey||e.shiftKey}n(zn,"isMultiSelectKey");function Qw(){const e=me(),{nodeManager:o}=hs(),{bringNodeToFront:t}=al(),{shouldHandleNodePointerEvents:s}=ro();function a(d,m){if(!s.value||!e.canvas||!o.value)return;const g=o.value.getNode(m);if(!g)return;const c=zn(d),b=e.selectedItems.length,w=!c&&g.selected&&b>1;c?g.selected||e.canvas.select(g):w||(e.canvas.deselectAll(),e.canvas.select(g)),g.flags?.pinned||t(m),e.updateSelectedItems()}n(a,"handleNodeSelect");function l(d,m){if(!s.value||!o.value)return;const g=o.value.getNode(d);if(!g)return;(g.flags?.collapsed??!1)!==m&&g.collapse()}n(l,"handleNodeCollapse");function i(d,m){if(!s.value||!o.value)return;const g=o.value.getNode(d);g&&(g.title=m)}n(i,"handleNodeTitleUpdate");function r(d,m){if(!s.value||!e.canvas||!o.value)return;const g=o.value.getNode(m);g&&(d.preventDefault(),g.selected||a(d,m))}n(r,"handleNodeRightClick");function u(d,m){if(!s.value||!e.canvas||!o.value)return;const g=o.value.getNode(d);if(g){if(!m){e.canvas.deselectAll(),e.canvas.select(g),e.updateSelectedItems(),g.flags?.pinned||t(d);return}g.selected?e.canvas.deselect(g):(e.canvas.select(g),g.flags?.pinned||t(d)),e.updateSelectedItems()}}return n(u,"toggleNodeSelectionAfterPointerUp"),{handleNodeSelect:a,handleNodeCollapse:l,handleNodeTitleUpdate:i,handleNodeRightClick:r,toggleNodeSelectionAfterPointerUp:u}}n(Qw,"useNodeEventHandlersIndividual");const Il=nn(Qw);function Ml(){const e=ie(),o=k(()=>e.get("Comfy.SnapToGrid.GridSize")),t=k(()=>e.get("pysssss.SnapToGrid"));function s(i){return i.shiftKey||t.value}n(s,"shouldSnap");function a(i){const r=o.value;if(!r)return{...i};const u=[i.x,i.y];return Ms(u,r)?{x:u[0],y:u[1]}:{...i}}n(a,"applySnapToPosition");function l(i){const r=o.value;if(!r)return{...i};const u=[i.width,i.height];return Ms(u,r)?{width:u[0],height:u[1]}:{...i}}return n(l,"applySnapToSize"),{gridSize:o,alwaysSnap:t,shouldSnap:s,applySnapToPosition:a,applySnapToSize:l}}n(Ml,"useNodeSnap");function Pl(){const e=Je(!1);let o=null;function t(a){a!==e.value&&(!o&&(o=K.canvas?.canvas??null,!o)||(e.value=a,o.dispatchEvent(new KeyboardEvent(a?"keydown":"keyup",{key:"Shift",shiftKey:a,bubbles:!0}))))}n(t,"syncShiftState");function s(a){t(a.shiftKey);const l=n(u=>{u.key==="Shift"&&t(u.shiftKey)},"handleKeyEvent"),i=Le(window,"keydown",l,{passive:!0}),r=Le(window,"keyup",l,{passive:!0});return()=>{i(),r()}}return n(s,"trackShiftKey"),Ta(()=>{e.value=!1,o=null}),{trackShiftKey:s}}n(Pl,"useShiftKeySync");const Dl=nn(Jw);function Jw(){const e=rn(),{selectedNodeIds:o,selectedItems:t}=Fe(me()),s=ks(),{shouldSnap:a,applySnapToPosition:l}=Ml(),{trackShiftKey:i}=Pl();let r=null,u=null,d=null,m=null,g=null,c=null,b=null;function w(x,_){const h=Be(De.getNodeLayoutRef(_));if(!h)return;const S=h.position??{x:0,y:0};g=i(x),r={...S},u={x:x.clientX,y:x.clientY};const M=Be(o),I=M?.has(_);if(I&&M.size>1){d=new Map;for(const N of M){if(N===_)continue;const $=De.getNodeLayoutRef(N).value;$&&d.set(N,{...$.position})}}else d=null;I?(b=Be(t).filter(ns),c={x:0,y:0}):(b=null,c=null),e.setSource(bo.Vue)}n(w,"startDrag");function v(x,_){if(!r||!u||m!==null)return;const{target:h,pointerId:S}=x;h instanceof HTMLElement&&!h.hasPointerCapture(S)&&h.setPointerCapture(S),m=requestAnimationFrame(()=>{if(m=null,!r||!u)return;const M={x:x.clientX-u.x,y:x.clientY-u.y},I=s.screenToCanvas({x:0,y:0}),N=s.screenToCanvas(M),$={x:N.x-I.x,y:N.y-I.y},P={x:r.x+$.x,y:r.y+$.y};if(e.moveNode(_,P),d&&d.size>0)for(const[F,U]of d){const A={x:U.x+$.x,y:U.y+$.y};e.moveNode(F,A)}if(b&&b.length>0&&c){const F={x:$.x-c.x,y:$.y-c.y};for(const U of b)U.move(F.x,F.y,!0)}c=$})}n(v,"handleDrag");function y(x,_){if(a(x)&&_){const h=[],S=Be(De.getNodeLayoutRef(_));if(S){const M=S.position,I=l({...M});(I.x!==M.x||I.y!==M.y)&&h.push({nodeId:_,bounds:{x:I.x,y:I.y,width:S.size.width,height:S.size.height}})}if(d&&d.size>0)for(const M of d.keys()){const I=De.getNodeLayoutRef(M).value;if(I){const N={...I.position},$=l(N);($.x!==N.x||$.y!==N.y)&&h.push({nodeId:M,bounds:{x:$.x,y:$.y,width:I.size.width,height:I.size.height}})}}h.length>0&&De.batchUpdateNodeBounds(h)}r=null,u=null,d=null,b=null,c=null,g?.(),g=null,m!==null&&(cancelAnimationFrame(m),m=null)}return n(y,"endDrag"),{startDrag:w,handleDrag:v,endDrag:y}}n(Jw,"useNodeDragIndividual");function Yw(e){const{startDrag:o,endDrag:t,handleDrag:s}=Dl(),{forwardEventToCanvas:a,shouldHandleNodePointerEvents:l}=ro(),{handleNodeSelect:i,toggleNodeSelectionAfterPointerUp:r}=Il(),{nodeManager:u}=hs(),d=n(I=>Fr(I)?(a(I),!0):!1,"forwardMiddlePointerIfNeeded");let m=!1;const g=L({x:0,y:0}),c=3;function b(I){if(d(I)||I.button!==0)return;if(!l.value){a(I);return}const N=Be(e);if(!N){console.warn("LGraphNode: nodeData is null/undefined in handlePointerDown");return}u.value?.getNode(N)?.flags?.pinned||(g.value={x:I.clientX,y:I.clientY},y(I,N))}n(b,"onPointerdown");function w(I){if(d(I)||De.isResizingVueNodes.value)return;const N=Be(e);if(u.value?.getNode(N)?.flags?.pinned)return;const $=zn(I),P=I.buttons&1;if(P&&$&&!De.isDraggingVueNodes.value){De.isDraggingVueNodes.value=!0,i(I,N),y(I,N);return}if(P&&!De.isDraggingVueNodes.value){const F=I.clientX-g.value.x,U=I.clientY-g.value.y;Math.sqrt(F*F+U*U)>c&&(De.isDraggingVueNodes.value=!0,i(I,N))}De.isDraggingVueNodes.value&&s(I,N)}n(w,"onPointermove");function v(){De.isDraggingVueNodes.value=!1}n(v,"cleanupDragState");function y(I,N){try{o(I,N)}finally{m=!0}}n(y,"safeDragStart");function x(I){try{const N=Be(e);t(I,N)}catch(N){console.error("Error during endDrag:",N)}finally{m=!1,v()}}n(x,"safeDragEnd");function _(I){if(d(I))return;if(!l.value){a(I);return}const $=De.isDraggingVueNodes.value;if((m||$)&&(x(I),$)||I.button===2)return;const P=zn(I),F=Be(e);F&&r(F,P)}n(_,"onPointerup");function h(I){De.isDraggingVueNodes.value&&x(I)}n(h,"onPointercancel");function S(I){De.isDraggingVueNodes.value&&(I.preventDefault(),v())}return n(S,"onContextmenu"),ei(()=>{v()}),{pointerHandlers:{onPointerdown:b,onPointermove:w,onPointerup:_,onPointercancel:h,onContextmenu:S}}}n(Yw,"useNodePointerInteractions");const Xo=new Map([["node",{dataAttribute:"nodeId",updateHandler:n(e=>{const o=e.map(({id:t,bounds:s})=>({nodeId:t,bounds:s}));De.batchUpdateNodeBounds(o)},"updateHandler")}]]),ra=new ResizeObserver(e=>{if(me().linearMode)return;const o=nl(),t=new Map,s=new Set;for(const a of e){if(!(a.target instanceof HTMLElement))continue;const l=a.target;let i,r;for(const[x,_]of Xo){const h=l.dataset[_.dataAttribute];if(h){i=x,r=h;break}}if(!i||!r)continue;const u=Array.isArray(a.borderBoxSize)?a.borderBoxSize[0]:{inlineSize:a.contentRect.width,blockSize:a.contentRect.height},d=u.inlineSize,m=u.blockSize,g=l.getBoundingClientRect(),[c,b]=o.clientPosToCanvasPos([g.left,g.top]),w={x:c,y:b},v={x:w.x,y:w.y+ve.NODE_TITLE_HEIGHT,width:Math.max(0,d),height:Math.max(0,m)};let y=t.get(i);y||(y=[],t.set(i,y)),y.push({id:r,bounds:v}),i==="node"&&r&&s.add(r)}De.setSource(bo.DOM);for(const[a,l]of t){const i=Xo.get(a);i&&l.length&&i.updateHandler(l)}if(s.size>0)for(const a of s)Ur(a)});function Xw(e,o){const t=Be(e);Ve(()=>{const s=Ts()?.proxy?.$el;if(!(s instanceof HTMLElement)||!t)return;const a=Xo.get(o);a&&(s.dataset[a.dataAttribute]=t,ra.observe(s))}),rt(()=>{const s=Ts()?.proxy?.$el;if(!(s instanceof HTMLElement))return;const a=Xo.get(o);a&&(delete s.dataset[a.dataAttribute],ra.unobserve(s))})}n(Xw,"useVueElementTracking");const Zw=n(e=>{const o=k(()=>Be(e)??""),{nodeLocationProgressStates:t,isIdle:s}=Fe(Ye()),a=k(()=>{const d=o.value;return d?t.value[d]:void 0}),l=k(()=>!s.value&&a.value?.state==="running"),i=k(()=>{const d=a.value;return d&&d.max>0?d.value/d.max:void 0}),r=k(()=>{const d=i.value;return d!==void 0?Math.round(d*100):void 0}),u=k(()=>{const d=a.value;return d?d.state:"idle"});return{executing:l,progress:i,progressPercentage:r,progressState:a,executionState:u}},"useNodeExecutionState");function e0(e){const o=Be(e),t=rn(),s=De.getNodeLayoutRef(o);rt(()=>{De.cleanupNodeRef(o)});const a=k(()=>s.value?.position??{x:0,y:0}),l=k(()=>s.value?.size??{width:200,height:100}),i=k(()=>s.value?.zIndex??0);function r(u){t.setSource(bo.Vue),t.moveNode(o,u)}return n(r,"moveNodeTo"),{position:a,size:l,zIndex:i,moveNodeTo:r}}n(e0,"useNodeLayout");const t0=n((e,o)=>{const t=Be(e),s=Ae(),{nodePreviewImages:a}=Fe(_o()),l=k(()=>s.nodeIdToNodeLocatorId(t)),i=k(()=>{const m=l.value;if(!m)return;const g=a.value[m];return g?.length?g:void 0}),r=k(()=>!!i.value?.length),u=k(()=>{const m=i.value;return m?.length?m.at(-1):""}),d=k(()=>o?.isCollapsed?!o.isCollapsed.value&&r.value:r.value);return{locatorId:l,previewUrls:i,hasPreview:r,latestPreviewUrl:u,shouldShowPreviewImg:d}},"useNodePreviewState");function o0(e){const o=ks(),t=L(!1),s=L(null),a=L(null),{shouldSnap:l,applySnapToSize:i}=Ml(),{trackShiftKey:r}=Pl();return{startResize:n(d=>{d.preventDefault(),d.stopPropagation();const m=d.currentTarget;if(!(m instanceof HTMLElement))return;const g=m.closest("[data-node-id]");if(!(g instanceof HTMLElement))return;const c=g.getBoundingClientRect(),b=o.camera.z,w={width:c.width/b,height:c.height/b},v=r(d);m.setPointerCapture(d.pointerId),De.isResizingVueNodes.value=!0,t.value=!0,s.value={x:d.clientX,y:d.clientY},a.value=w;const y=n(S=>{if(!t.value||!s.value||!a.value)return;const M=o.camera.z,I=(S.clientX-s.value.x)/(M||1),N=(S.clientY-s.value.y)/(M||1);let $={width:a.value.width+I,height:a.value.height+N};l(S)&&($=i($));const P=m.closest("[data-node-id]");P instanceof HTMLElement&&e({size:$},P)},"handlePointerMove"),x=n(S=>{t.value&&(t.value=!1,De.isResizingVueNodes.value=!1,s.value=null,a.value=null,v(),m.releasePointerCapture(S.pointerId),_(),h())},"handlePointerUp"),_=Le("pointermove",y),h=Le("pointerup",x)},"startResize"),isResizing:t}}n(o0,"useNodeResize");const n0={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function s0(e,o){return f(),T("svg",n0,[...o[0]||(o[0]=[p("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[p("path",{d:"m2 2l20 20M10.41 10.41a2 2 0 1 1-2.83-2.83m5.92 5.92L6 21m12-9l3 3"}),p("path",{d:"M3.59 3.59A2 2 0 0 0 3 5v14a2 2 0 0 0 2 2h14c.55 0 1.052-.22 1.41-.59M21 15V5a2 2 0 0 0-2-2H9"})],-1)])])}n(s0,"render$1");const a0=Na({name:"lucide-image-off",render:s0}),l0={key:0,class:"flex h-full min-h-16 w-full min-w-16 flex-col"},i0={class:"relative h-88 w-full grow overflow-hidden rounded-[5px] bg-node-component-surface"},r0={key:0,class:"text-pure-white flex h-full w-full flex-col items-center justify-center text-center"},u0={class:"text-xs text-smoke-400"},c0=["src","alt"],d0={class:"text-node-component-header-text mt-1 text-center text-xs"},p0=q({__name:"LivePreview",props:{imageUrl:{}},setup(e){const o=e,t=L(null),s=L(!1);ne(()=>o.imageUrl,()=>{t.value=null,s.value=!1});const a=n(i=>{if(!i.target||!(i.target instanceof HTMLImageElement))return;const r=i.target;s.value=!1,r.naturalWidth&&r.naturalHeight&&(t.value=`${r.naturalWidth} x ${r.naturalHeight}`)},"handleImageLoad"),l=n(()=>{s.value=!0,t.value=null},"handleImageError");return(i,r)=>{const u=a0;return i.imageUrl?(f(),T("div",l0,[p("div",i0,[s.value?(f(),T("div",r0,[z(u,{class:"mb-1 size-8 text-smoke-500"}),p("p",u0,B(i.$t("g.imageFailedToLoad")),1)])):(f(),T("img",{key:1,src:i.imageUrl,alt:i.$t("g.liveSamplingPreview"),class:"pointer-events-none h-full w-full object-contain object-center",onLoad:a,onError:l},null,40,c0))]),p("div",d0,B(s.value?i.$t("g.errorLoadingImage"):t.value||i.$t("g.calculatingDimensions")),1)])):R("",!0)}}}),f0=["aria-label","aria-busy"],m0={key:0,class:"flex size-full flex-col items-center justify-center bg-smoke-800/50 text-center text-white py-8"},v0={class:"text-sm text-smoke-300"},g0={class:"mt-1 text-xs text-smoke-400"},h0=["src"],y0={key:3,class:"actions absolute top-2 right-2 flex gap-2.5"},b0=["title","aria-label"],w0=["title","aria-label"],k0={key:4,class:"absolute right-2 bottom-2 left-2 flex justify-center gap-1"},C0=["aria-label","onClick"],S0={class:"mt-2 text-center text-xs text-muted-foreground"},x0={key:0,class:"text-red-400"},_0={key:1,class:"text-smoke-400"},T0={key:2},ua="flex h-8 min-h-8 items-center justify-center gap-2.5 rounded-lg border-0 bg-button-surface px-2 py-2 text-button-surface-contrast shadow-sm transition-colors duration-200 hover:bg-button-hover-surface focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-button-surface-contrast focus-visible:ring-offset-2 focus-visible:ring-offset-transparent cursor-pointer",N0=q({__name:"VideoPreview",props:{imageUrls:{},nodeId:{}},setup(e){const o=e,{t}=pe(),s=_o(),a=L(0),l=L(!1),i=L(!1),r=L(null),u=L(!1),d=L(!1),m=L(),g=k(()=>o.imageUrls[a.value]),c=k(()=>o.imageUrls.length>1);ne(()=>o.imageUrls,P=>{a.value>=P.length&&(a.value=0),r.value=null,u.value=!1,d.value=P.length>0},{deep:!0,immediate:!0});const b=n(P=>{if(!P.target||!(P.target instanceof HTMLVideoElement))return;const F=P.target;d.value=!1,u.value=!1,F.videoWidth&&F.videoHeight&&(r.value=`${F.videoWidth} x ${F.videoHeight}`)},"handleVideoLoad"),w=n(()=>{d.value=!1,u.value=!0,r.value=null},"handleVideoError"),v=n(()=>{try{an(g.value)}catch{zt().add({severity:"error",summary:"Error",detail:t("g.failedToDownloadVideo"),life:3e3,group:"video-preview"})}},"handleDownload"),y=n(()=>{o.nodeId&&s.removeNodeOutputs(o.nodeId)},"handleRemove"),x=n(P=>{P>=0&&P<o.imageUrls.length&&(a.value=P,r.value=null,d.value=!0,u.value=!1)},"setCurrentIndex"),_=n(()=>{l.value=!0},"handleMouseEnter"),h=n(()=>{l.value=!1},"handleMouseLeave"),S=n(()=>{i.value=!0},"handleFocusIn"),M=n(P=>{m.value?.contains(P.relatedTarget)||(i.value=!1)},"handleFocusOut"),I=n(P=>["w-2 h-2 rounded-full transition-all duration-200 border-0 cursor-pointer",P===a.value?"bg-white":"bg-white/50 hover:bg-white/80"],"getNavigationDotClass"),N=n(P=>{if(!(o.imageUrls.length<=1))switch(P.key){case"ArrowLeft":P.preventDefault(),x(a.value>0?a.value-1:o.imageUrls.length-1);break;case"ArrowRight":P.preventDefault(),x(a.value<o.imageUrls.length-1?a.value+1:0);break;case"Home":P.preventDefault(),x(0);break;case"End":P.preventDefault(),x(o.imageUrls.length-1);break}},"handleKeyDown"),$=n(P=>{try{return new URL(P).searchParams.get("filename")||"Unknown file"}catch{return"Invalid URL"}},"getVideoFilename");return(P,F)=>P.imageUrls.length>0?(f(),T("div",{key:0,class:"video-preview group relative flex size-full min-h-16 min-w-16 flex-col px-2",onKeydown:N},[p("div",{ref_key:"videoWrapperEl",ref:m,class:"relative h-full w-full grow overflow-hidden rounded-[5px] bg-node-component-surface",tabindex:"0",role:"region","aria-label":P.$t("g.videoPreview"),"aria-busy":d.value,onMouseenter:_,onMouseleave:h,onFocusin:S,onFocusout:M},[u.value?(f(),T("div",m0,[F[0]||(F[0]=p("i",{class:"mb-2 icon-[lucide--video-off] h-12 w-12 text-smoke-400"},null,-1)),p("p",v0,B(P.$t("g.videoFailedToLoad")),1),p("p",g0,B($(g.value)),1)])):R("",!0),d.value&&!u.value?(f(),G(C(Qn),{key:1,class:"absolute inset-0 size-full","border-radius":"5px",width:"100%",height:"100%"})):R("",!0),u.value?R("",!0):(f(),T("video",{key:2,src:g.value,class:J(C(fe)("block size-full object-contain",d.value&&"invisible")),controls:"",loop:"",playsinline:"",onLoadeddata:b,onError:w},null,42,h0)),l.value||i.value?(f(),T("div",y0,[p("button",{class:J(ua),title:P.$t("g.downloadVideo"),"aria-label":P.$t("g.downloadVideo"),onClick:v},F[1]||(F[1]=[p("i",{class:"icon-[lucide--download] h-4 w-4"},null,-1)]),8,b0),p("button",{class:J(ua),title:P.$t("g.removeVideo"),"aria-label":P.$t("g.removeVideo"),onClick:y},F[2]||(F[2]=[p("i",{class:"icon-[lucide--x] h-4 w-4"},null,-1)]),8,w0)])):R("",!0),c.value?(f(),T("div",k0,[(f(!0),T(le,null,we(P.imageUrls,(U,A)=>(f(),T("button",{key:A,class:J(I(A)),"aria-label":P.$t("g.viewVideoOfTotal",{index:A+1,total:P.imageUrls.length}),onClick:n(E=>x(A),"onClick")},null,10,C0))),128))])):R("",!0)],40,f0),p("div",S0,[u.value?(f(),T("span",x0,B(P.$t("g.errorLoadingVideo")),1)):d.value?(f(),T("span",_0,B(P.$t("g.loading"))+"... ",1)):(f(),T("span",T0,B(r.value||P.$t("g.calculatingDimensions")),1))])],32)):R("",!0)}}),$0={width:"1.2em",height:"1.2em",xmlns:"http://www.w3.org/2000/svg",class:"",viewBox:"0 0 16 16",fill:"none"},I0=["clip-path"],M0=["id"];function P0(e,o){return f(),T("svg",$0,[p("g",{"clip-path":"url(#"+e.idMap.clip0_704_2695+")"},[...o[0]||(o[0]=[ti('<path d="M6.05048 2C5.52055 7.29512 9.23033 10.4722 14 9.94267" stroke="currentColor" stroke-width="1.3"></path><path d="M6.5 5.5L10 2" stroke="currentColor" stroke-width="1.3" stroke-linecap="round"></path><path d="M8 8L12.5 3.5" stroke="currentColor" stroke-width="1.3" stroke-linecap="square"></path><path d="M10.5 9.5L14 6" stroke="currentColor" stroke-width="1.3" stroke-linecap="round"></path><path d="M7.99992 14.6667C11.6818 14.6667 14.6666 11.6819 14.6666 8.00004C14.6666 4.31814 11.6818 1.33337 7.99992 1.33337C4.31802 1.33337 1.33325 4.31814 1.33325 8.00004C1.33325 11.6819 4.31802 14.6667 7.99992 14.6667Z" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"></path>',5)])],8,I0),p("defs",null,[p("clipPath",{id:e.idMap.clip0_704_2695},[...o[1]||(o[1]=[p("rect",{width:"16",height:"16",fill:"white"},null,-1)])],8,M0)])])}n(P0,"render");const D0=Na({name:"comfy-mask",render:P0,setup(){return{idMap:{clip0_704_2695:"uicons-"+n(()=>Math.random().toString(36).substr(2,10),"__randId")()}}}}),A0=["aria-label","aria-busy"],E0={key:0,role:"alert",class:"flex size-full flex-col items-center justify-center bg-muted-background text-center text-base-foreground py-8"},L0={class:"text-sm text-base-foreground"},O0={class:"mt-1 text-xs text-base-foreground"},V0={key:1,class:"size-full"},R0=["src","alt"],W0={key:3,class:"actions absolute top-2 right-2 flex gap-2.5"},z0=["title","aria-label"],B0=["title","aria-label"],F0=["title","aria-label"],U0={class:"pt-2 text-center text-xs text-base-foreground"},G0={key:0,class:"text-red-400"},j0={key:1,class:"text-base-foreground"},H0={key:2},q0={key:0,class:"flex justify-center gap-1 pt-4"},K0=["aria-current","aria-label","onClick"],xn="flex h-8 min-h-8 items-center justify-center gap-2.5 rounded-lg border-0 bg-button-surface px-2 py-2 text-button-surface-contrast shadow-sm transition-colors duration-200 hover:bg-button-hover-surface focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-button-surface-contrast focus-visible:ring-offset-2 focus-visible:ring-offset-transparent cursor-pointer",Q0=q({__name:"ImagePreview",props:{imageUrls:{},nodeId:{}},setup(e){const o=e,{t}=pe(),s=Se(),a=_o(),l=L(0),i=L(!1),r=L(!1),u=L(null),d=L(!1),m=L(!1),g=L(),c=L(),{start:b,stop:w}=oi(()=>{m.value=!0},250,{immediate:!1}),v=k(()=>o.imageUrls[l.value]),y=k(()=>o.imageUrls.length>1),x=k(()=>`Node output ${l.value+1}`);ne(()=>o.imageUrls,j=>{l.value>=j.length&&(l.value=0),u.value=null,d.value=!1,j.length>0&&b()},{deep:!0,immediate:!0});const _=n(j=>{if(!j.target||!(j.target instanceof HTMLImageElement))return;const H=j.target;w(),m.value=!1,d.value=!1,H.naturalWidth&&H.naturalHeight&&(u.value=`${H.naturalWidth} x ${H.naturalHeight}`)},"handleImageLoad"),h=n(()=>{w(),m.value=!1,d.value=!0,u.value=null},"handleImageError"),S=n(()=>{if(!o.nodeId||!g.value)return;const j=K.rootGraph?.getNodeById(o.nodeId);j&&(j.imageIndex=l.value,j.imgs=[g.value],K.canvas?.select(j))},"setupNodeForMaskEditor"),M=n(()=>{S(),s.execute("Comfy.MaskEditor.OpenMaskEditor")},"handleEditMask"),I=n(()=>{try{an(v.value)}catch{zt().add({severity:"error",summary:"Error",detail:t("g.failedToDownloadImage"),life:3e3,group:"image-preview"})}},"handleDownload"),N=n(()=>{o.nodeId&&a.removeNodeOutputs(o.nodeId)},"handleRemove"),$=n(j=>{l.value!==j&&j>=0&&j<o.imageUrls.length&&(l.value=j,b(),d.value=!1)},"setCurrentIndex"),P=n(()=>{i.value=!0},"handleMouseEnter"),F=n(()=>{i.value=!1},"handleMouseLeave"),U=n(()=>{r.value=!0},"handleFocusIn"),A=n(j=>{c.value?.contains(j.relatedTarget)||(r.value=!1)},"handleFocusOut"),E=n(j=>["w-2 h-2 rounded-full transition-all duration-200 border-0 cursor-pointer p-0",j===l.value?"bg-base-foreground":"bg-base-foreground/50 hover:bg-base-foreground/80"],"getNavigationDotClass"),W=n(j=>{if(!(o.imageUrls.length<=1))switch(j.key){case"ArrowLeft":j.preventDefault(),$(l.value>0?l.value-1:o.imageUrls.length-1);break;case"ArrowRight":j.preventDefault(),$(l.value<o.imageUrls.length-1?l.value+1:0);break;case"Home":j.preventDefault(),$(0);break;case"End":j.preventDefault(),$(o.imageUrls.length-1);break}},"handleKeyDown"),V=n(j=>{try{return new URL(j).searchParams.get("filename")||"Unknown file"}catch{return"Invalid URL"}},"getImageFilename");return(j,H)=>{const Q=D0;return j.imageUrls.length>0?(f(),T("div",{key:0,class:"image-preview group relative flex size-full min-h-16 min-w-16 flex-col px-2 justify-center",onKeydown:W},[p("div",{ref_key:"imageWrapperEl",ref:c,class:"h-full w-full overflow-hidden rounded-[5px] bg-muted-background relative",tabindex:"0",role:"img","aria-label":j.$t("g.imagePreview"),"aria-busy":m.value,onMouseenter:P,onMouseleave:F,onFocusin:U,onFocusout:A},[d.value?(f(),T("div",E0,[H[0]||(H[0]=p("i",{class:"mb-2 icon-[lucide--image-off] h-12 w-12 text-base-foreground"},null,-1)),p("p",L0,B(j.$t("g.imageFailedToLoad")),1),p("p",O0,B(V(v.value)),1)])):R("",!0),m.value&&!d.value?(f(),T("div",V0,[z(C(Qn),{"border-radius":"5px",width:"100%",height:"100%"})])):R("",!0),d.value?R("",!0):(f(),T("img",{key:2,ref_key:"currentImageEl",ref:g,src:v.value,alt:x.value,class:"block size-full object-contain pointer-events-none",onLoad:_,onError:h},null,40,R0)),i.value||r.value?(f(),T("div",W0,[y.value?R("",!0):(f(),T("button",{key:0,class:J(xn),title:j.$t("g.editOrMaskImage"),"aria-label":j.$t("g.editOrMaskImage"),onClick:M},[z(Q,{class:"h-4 w-4"})],8,z0)),p("button",{class:J(xn),title:j.$t("g.downloadImage"),"aria-label":j.$t("g.downloadImage"),onClick:I},H[1]||(H[1]=[p("i",{class:"icon-[lucide--download] h-4 w-4"},null,-1)]),8,B0),p("button",{class:J(xn),title:j.$t("g.removeImage"),"aria-label":j.$t("g.removeImage"),onClick:N},H[2]||(H[2]=[p("i",{class:"icon-[lucide--x] h-4 w-4"},null,-1)]),8,F0)])):R("",!0)],40,A0),p("div",U0,[d.value?(f(),T("span",G0,B(j.$t("g.errorLoadingImage")),1)):m.value?(f(),T("span",j0,B(j.$t("g.loading"))+"... ",1)):(f(),T("span",H0,B(u.value||j.$t("g.calculatingDimensions")),1))]),y.value?(f(),T("div",q0,[(f(!0),T(le,null,we(j.imageUrls,(te,ue)=>(f(),T("button",{key:ue,class:J(E(ue)),"aria-current":ue===l.value?"true":void 0,"aria-label":j.$t("g.viewImageOfTotal",{index:ue+1,total:j.imageUrls.length}),onClick:n(Y=>$(ue),"onClick")},null,10,K0))),128))])):R("",!0)],32)):R("",!0)}}}),J0={key:0,class:"node-error p-2 text-sm text-red-500"},Y0={key:1,class:"lg-node-content flex grow flex-col"},X0=q({__name:"NodeContent",props:{nodeData:{},media:{}},setup(e){const o=e,t=k(()=>o.media&&o.media.urls.length>0),s=k(()=>o.nodeData?.id?.toString()),a=L(null),{toastErrorHandler:l}=Bt();return $a(i=>(a.value=i.message,l(i),!1)),(i,r)=>a.value?(f(),T("div",J0,B(C(he)("nodeErrors.content","Node Content Error")),1)):(f(),T("div",Y0,[Me(i.$slots,"default",{},()=>[t.value&&i.media?.type==="video"?(f(),G(N0,{key:0,"image-urls":i.media.urls,"node-id":s.value,class:"mt-2"},null,8,["image-urls","node-id"])):t.value&&i.media?.type==="image"?(f(),G(Q0,{key:1,"image-urls":i.media.urls,"node-id":s.value,class:"mt-2"},null,8,["image-urls","node-id"])):R("",!0)])]))}}),Z0={key:0,class:"node-error p-2 text-sm text-red-500"},e1=["data-node-id"],t1={key:0,class:"flex flex-col justify-center items-center relative"},o1={class:"relative mb-1"},n1=["data-testid"],s1={key:1,class:"min-h-0 flex-1 flex"},a1={key:2,class:"min-h-0 flex-1 px-4"},l1=["aria-label"],i1="absolute h-3 w-3 opacity-0 pointer-events-auto focus-visible:outline focus-visible:outline-2 focus-visible:outline-white/40",r1=225,ca="h-2 bg-primary-500 transition-all duration-300",u1=q({__name:"LGraphNode",props:{nodeData:{},error:{default:null}},setup(e){const{t:o}=pe(),{handleNodeCollapse:t,handleNodeTitleUpdate:s,handleNodeRightClick:a}=Il(),{bringNodeToFront:l}=al();Xw(()=>e.nodeData.id,"node");const{selectedNodeIds:i}=Fe(me()),r=k(()=>i.value.has(e.nodeData.id)),u=k(()=>vn(e.nodeData)),{executing:d,progress:m}=Zw(u),g=Ye(),c=k(()=>g.lastExecutionErrorNodeId===e.nodeData.id),b=k(()=>!!(c.value||e.nodeData.hasErrors||e.error||(g.lastNodeErrors?.[e.nodeData.id]?.errors.length??0)>0)),w=k(()=>e.nodeData.titleMode!==Gr.NO_TITLE),v=k(()=>e.nodeData.flags?.collapsed??!1),y=k(()=>e.nodeData.mode===Oe.BYPASS),x=k(()=>e.nodeData.mode===Oe.NEVER),_=k(()=>{const de=ut();return e.nodeData.bgcolor?jr(e.nodeData.bgcolor,!!de.completedActivePalette.light_theme):""}),h=k(()=>{const de=ie().get("Comfy.Node.Opacity")??1;return y.value||x.value?de*.5:de}),S=k(()=>Hr(e.nodeData).length>0),M=k(()=>!!e.nodeData.outputs?.length),{handleWheel:I,shouldHandleNodePointerEvents:N}=ro(),$=L(null),{toastErrorHandler:P}=Bt();$a(de=>($.value=de.message,P(de),!1));const{position:F,size:U,zIndex:A}=e0(()=>e.nodeData.id),{pointerHandlers:E}=Yw(()=>e.nodeData.id),{onPointerdown:W,...V}=E,{startDrag:j}=Dl();async function H(de){if(de.altKey&&ct.value){const ke=He.cloneNodes([ct.value]);if(ke?.created?.length){const[xe]=ke.created;j(de,`${xe.id}`),De.isDraggingVueNodes.value=!0,await Re(),l(`${xe.id}`);return}}W(de)}n(H,"nodeOnPointerdown");const Q=n(de=>{de.preventDefault(),de.stopPropagation(),a(de,e.nodeData.id),Yv(de)},"handleContextMenu");Ve(()=>{te()});function te(){const de=wt.value,{width:ke,height:xe}=U.value;if(!de)return;const $e=v.value?"-x":"";de.style.setProperty(`--node-width${$e}`,`${ke}px`),de.style.setProperty(`--node-height${$e}`,`${xe}px`)}n(te,"initSizeStyles");const{startResize:ue}=o0((de,ke)=>{if(v.value)return;const xe=Math.max(de.size.width,r1);ke.style.setProperty("--node-width",`${xe}px`),ke.style.setProperty("--node-height",`${de.size.height}px`)}),Y=n(de=>{de.button===0&&N.value&&(e.nodeData.flags?.pinned||ue(de))},"handleResizePointerDown");ne(v,de=>{const ke=wt.value;if(!ke)return;const[xe,$e]=de?["","-x"]:["-x",""],ee=ke.style.getPropertyValue(`--node-width${xe}`);ke.style.setProperty(`--node-width${$e}`,ee),ke.style.setProperty(`--node-width${xe}`,"");const Z=ke.style.getPropertyValue(`--node-height${xe}`);ke.style.setProperty(`--node-height${$e}`,Z),ke.style.setProperty(`--node-height${xe}`,"")});const oe=k(()=>!!Dt.value&&Dt.value.urls.length>0),{latestPreviewUrl:se,shouldShowPreviewImg:Te}=t0(()=>e.nodeData.id,{isCollapsed:v}),Ue=k(()=>b.value?"border-node-stroke-error":!w.value&&e.nodeData.bgcolor&&qr(e.nodeData.bgcolor)?"border-0":""),qe=k(()=>fe(r.value&&"outline-node-component-outline",b.value&&"outline-node-stroke-error",d.value&&"outline-node-stroke-executing")),nt=k(()=>fe(e.nodeData.flags?.pinned?"cursor-default":De.isDraggingVueNodes.value?"cursor-grabbing":"cursor-grab")),Ke=k(()=>{switch(e.nodeData.shape){case Nt.BOX:return"rounded-none";case Nt.CARD:return"rounded-tl-2xl rounded-br-2xl rounded-tr-none rounded-bl-none";default:return"rounded-2xl"}}),je=k(()=>{switch(e.nodeData.shape){case Nt.BOX:return"before:rounded-none";case Nt.CARD:return"before:rounded-tl-2xl before:rounded-br-2xl before:rounded-tr-none before:rounded-bl-none";default:return"before:rounded-2xl"}}),yt=n(()=>{t(e.nodeData.id,!v.value)},"handleCollapse"),bt=n(de=>{s(e.nodeData.id,de)},"handleHeaderTitleUpdate"),uo=n(()=>{const de=K.rootGraph;if(!de){console.warn("LGraphNode: No graph available for subgraph navigation");return}const ke=vn(e.nodeData),xe=Ps(de,ke);if(!xe?.isSubgraphNode()||!("subgraph"in xe)){console.warn("LGraphNode: Node is not a valid subgraph node",xe);return}const $e=K.canvas;if(!$e||typeof $e.openSubgraph!="function"){console.warn("LGraphNode: Canvas or openSubgraph method not available");return}$e.openSubgraph(xe.subgraph,xe)},"handleEnterSubgraph"),Gt=_o(),Pt=k(()=>e.nodeData.subgraphId?`${e.nodeData.subgraphId}:${e.nodeData.id}`:e.nodeData.id),ct=k(()=>{const de=vn(e.nodeData);return Ps(K.rootGraph,de)}),Dt=k(()=>{const de=Gt.nodeOutputs[Pt.value],ke=ct.value;if(!ke||!de?.images?.length)return;const xe=Gt.getNodeImageUrls(ke);if(!xe?.length)return;const $e=ke.inputs?.some(Z=>Z.type==="VIDEO");return{type:ke.previewMediaType==="video"||!ke.previewMediaType&&$e?"video":"image",urls:xe}}),wt=L(),st=L(!1);function co(de){const ke=ct.value;if(!ke||!ke.onDragOver){st.value=!1;return}const xe=ke.onDragOver(de);st.value=xe}n(co,"handleDragOver");function po(){st.value=!1}n(po,"handleDragLeave");async function jt(de){st.value=!1;const ke=ct.value;!ke||!ke.onDragDrop||await ke.onDragDrop(de)}return n(jt,"handleDrop"),(de,ke)=>$.value?(f(),T("div",Z0,B(C(he)("nodeErrors.render","Node Render Error")),1)):(f(),T("div",It({key:1,ref_key:"nodeContainerRef",ref:wt,tabindex:"0","data-node-id":de.nodeData.id,class:C(fe)("bg-component-node-background lg-node absolute text-sm","contain-style contain-layout min-w-[225px] min-h-(--node-height) w-(--node-width)",Ke.value,"touch-none flex flex-col","border-1 border-solid border-component-node-border",C(N)&&"hover:ring-7 ring-node-component-ring","outline-transparent outline-2 focus-visible:outline-node-component-outline",Ue.value,qe.value,nt.value,{[`${je.value} before:pointer-events-none before:absolute before:bg-bypass/60 before:inset-0`]:y.value,[`${je.value} before:pointer-events-none before:absolute before:inset-0`]:x.value,"ring-4 ring-primary-500 bg-primary-500/10":st.value},C(N)?"pointer-events-auto":"pointer-events-none",!v.value&&" pb-1"),style:[{transform:`translate(${C(F).x??0}px, ${(C(F).y??0)-C(ve).NODE_TITLE_HEIGHT}px)`,zIndex:C(A),opacity:h.value,"--component-node-background":_.value}]},V,{onPointerdown:H,onWheel:ke[0]||(ke[0]=(...xe)=>C(I)&&C(I)(...xe)),onContextmenu:Q,onDragover:_e(co,["prevent"]),onDragleave:po,onDrop:_e(jt,["stop","prevent"])}),[w.value?(f(),T("div",t1,[v.value?(f(),T(le,{key:0},[S.value?(f(),G(Ds,{key:0,multi:"",class:"absolute left-0 -translate-x-1/2"})):R("",!0),M.value?(f(),G(Ds,{key:1,multi:"",class:"absolute right-0 translate-x-1/2"})):R("",!0),z(As,{"node-data":de.nodeData,unified:""},null,8,["node-data"])],64)):R("",!0),z(Kr,{"node-data":de.nodeData,collapsed:v.value,onCollapse:yt,"onUpdate:title":bt,onEnterSubgraph:uo},null,8,["node-data","collapsed"])])):R("",!0),v.value&&C(d)&&C(m)!==void 0?(f(),T("div",{key:1,class:J(C(fe)("absolute inset-x-4 -bottom-[1px] translate-y-1/2 rounded-full",ca)),style:ge({width:`${Math.min(C(m)*100,100)}%`})},null,6)):R("",!0),v.value?R("",!0):(f(),T(le,{key:2},[p("div",o1,[C(d)&&C(m)!==void 0?(f(),T("div",{key:0,class:J(C(fe)("absolute inset-x-0 top-1/2 -translate-y-1/2",C(m)<1&&"rounded-r-full",ca)),style:ge({width:`${Math.min(C(m)*100,100)}%`})},null,6)):R("",!0)]),p("div",{class:"flex flex-1 flex-col gap-1 pb-2","data-testid":`node-body-${de.nodeData.id}`},[z(As,{"node-data":de.nodeData},null,8,["node-data"]),de.nodeData.widgets?.length?(f(),G(ll,{key:0,"node-data":de.nodeData},null,8,["node-data"])):R("",!0),oe.value?(f(),T("div",s1,[z(X0,{"node-data":de.nodeData,media:Dt.value},null,8,["node-data","media"])])):R("",!0),C(Te)?(f(),T("div",a1,[z(p0,{"image-url":C(se)||null},null,8,["image-url"])])):R("",!0)],8,n1)],64)),v.value?R("",!0):(f(),T("div",{key:3,role:"button","aria-label":C(o)("g.resizeFromBottomRight"),class:J(C(fe)(i1,"right-0 bottom-0 cursor-se-resize")),onPointerdown:_e(Y,["stop"])},null,42,l1))],16,e1))}});let Do=[],Ao=!1,Eo=null;const c1=n(()=>{function e(a){const l=Object.keys(a.settingValues).length===0||!a.get("Comfy.TutorialCompleted"),i=!localStorage.getItem("workflow"),r=!localStorage.getItem("Comfy.PreviousWorkflow");return l&&i&&r}n(e,"checkIsNewUser");async function o(a){if(Ao){if(Eo)try{await a()}catch(l){console.error("New user initialization callback failed:",l)}}else Do.push(a)}n(o,"registerInitCallback");async function t(a){if(!Ao){if(Eo=e(a),Ao=!0,!Eo){Do=[];return}await a.set("Comfy.InstalledVersion","1.37.4");for(const l of Do)try{await l()}catch(i){console.error("New user initialization callback failed:",i)}Do=[]}}n(t,"initializeIfNewUser");function s(){return Ao?Eo:null}return n(s,"isNewUser"),{registerInitCallback:o,initializeIfNewUser:t,isNewUser:s}},"newUserService"),d1=q({__name:"SelectionRectangle",setup(e){const o=me(),t=L(null);oo(()=>{const l=o.canvas;if(!l){t.value=null;return}const{pointer:i,dragging_rectangle:r}=l;if(r&&i.eDown&&i.eMove){const u=i.eDown.safeOffsetX,d=i.eDown.safeOffsetY,m=i.eMove.safeOffsetX-u,g=i.eMove.safeOffsetY-d;t.value={x:u,y:d,w:m,h:g}}else t.value=null});const s=k(()=>t.value!==null),a=k(()=>{const l=t.value;if(!l)return{};const i=l.w>=0?l.x:l.x+l.w,r=l.h>=0?l.y:l.y+l.h,u=Math.abs(l.w),d=Math.abs(l.h);return{left:`${i}px`,top:`${r}px`,width:`${u}px`,height:`${d}px`}});return(l,i)=>s.value?(f(),T("div",{key:0,class:"pointer-events-none absolute z-9999 border border-blue-400 bg-blue-500/20",style:ge(a.value)},null,4)):R("",!0)}}),p1={key:0,class:"workflow-tabs-container pointer-events-auto relative h-9.5 w-full"},f1={key:0,class:"app-drag fixed top-0 left-0 z-10 h-[var(--comfy-topbar-height)] w-full"},m1={class:"flex h-full items-center border-b border-interface-stroke bg-comfy-menu-bg shadow-interface"},v1={class:"sidebar-content-container h-full w-full overflow-x-hidden overflow-y-auto"},g1=q({__name:"GraphCanvas",emits:["ready"],setup(e,{emit:o}){const t=o,s=L(null),a=Je(null),l=ie(),i=ht(),r=tt(),u=me(),d=Ye(),m=$t(),g=ut(),c=Ya(),b=ro(),w=k(()=>l.get("Comfy.UseNewMenu")!=="Disabled"),v=k(()=>l.get("Comfy.Workflow.WorkflowTabsPosition")),y=k(()=>l.get("Comfy.Graph.CanvasMenu")),x=k(()=>l.get("Comfy.EnableTooltips")),_=k(()=>l.get("Comfy.Canvas.SelectionToolbox")),h=k(()=>r.sidebarTab.activeSidebarTab),S=k(()=>!r.focusMode&&w.value),M=k(()=>l.get("Comfy.Minimap.Visible")),{shouldRenderVueNodes:I}=Ko(),N=hs(),$=n(async()=>{I.value&&(N.disposeNodeManagerAndSyncs(),await Re(),N.initializeNodeManager())},"handleVueNodeLifecycleReset");ne(()=>u.currentGraph,$),ne(()=>u.isInSubgraph,async(E,W)=>{W&&!E&&Ae().updateActiveGraph(),await $()});const P=k(()=>Array.from(N.nodeManager.value?.vueNodeData?.values()??[]));be(()=>{ve.nodeOpacity=l.get("Comfy.Node.Opacity")}),be(()=>{ve.nodeLightness=g.completedActivePalette.light_theme?.5:void 0}),be(()=>{i.showDeprecated=l.get("Comfy.Node.ShowDeprecated")}),be(()=>{i.showExperimental=l.get("Comfy.Node.ShowExperimental")}),be(()=>{const E=l.get("Comfy.TextareaWidget.Spellcheck");document.querySelectorAll("textarea.comfy-multiline-input").forEach(V=>{V.spellcheck=E,V.focus(),V.blur()})}),ne(()=>l.get("Comfy.WidgetControlMode"),()=>{u.canvas&&(Es(K.rootGraph,E=>{if(E.widgets){for(const W of E.widgets)if(W[Zr]&&(Ls(W),!!W.linkedWidgets))for(const V of W.linkedWidgets)Ls(V)}}),u.canvas.setDirty(!0))}),ne([()=>u.canvas,()=>l.get("Comfy.ColorPalette")],async([E,W])=>{E&&await c.loadColorPalette(W)}),ne(()=>l.get("Comfy.Canvas.BackgroundImage"),async()=>{if(!u.canvas)return;const E=g.activePaletteId;E&&(await c.loadColorPalette(E),u.canvas.setDirty(!1,!0))}),ne(()=>g.activePaletteId,async E=>{await l.set("Comfy.ColorPalette",E)}),ne(()=>[d.nodeLocationProgressStates,u.canvas],([E,W])=>{if(W?.graph){for(const V of W.graph.nodes){const j=Ae().nodeIdToNodeLocatorId(V.id),H=E[j];H&&H.state==="running"?V.progress=H.value/H.max:V.progress=void 0}W.setDirty(!0,!1)}},{deep:!0}),ne(()=>d.lastNodeErrors,E=>{K.graph&&(Es(K.rootGraph,W=>{for(const H of W.inputs)delete H.hasErrors;for(const H of W.outputs)delete H.hasErrors;const V=E?.[W.id];if(!V)return;V.errors.filter(H=>H.extra_info?.input_name!==void 0).forEach(H=>{const Q=H.extra_info.input_name,te=W.findInputSlot(Q);te!==-1&&(W.inputs[te].hasErrors=!0)})}),K.canvas.setDirty(!0,!0))}),Le(s,"litegraph:no-items-selected",()=>{m.add({severity:"warn",summary:re("toastMessages.nothingSelected"),life:2e3})},{passive:!0});const F=n(async()=>{try{const E=await Ce.getCustomNodesI18n();Xr(E)}catch(E){console.error("Failed to load custom nodes i18n",E)}},"loadCustomNodesI18n"),U=L(!1),A=Mw();return yw(s),Tw(),hw(),Ve(async()=>{Sw(),bw(),Cw(),_w(),$w(),Ko(),K.vueAppReady=!0,r.spinner=!0,Qr.init(),await F();try{await l.loadSettingValues()}catch(V){if(V instanceof Jr)localStorage.removeItem("Comfy.userId"),localStorage.removeItem("Comfy.userName"),window.location.reload();else throw V}Nw.forEach(l.addSetting),await c1().initializeIfNewUser(l),await K.setup(s.value),u.canvas=K.canvas,u.canvas.render_canvas_border=!1,r.spinner=!1,vs().setPopoverRef(a.value),window.app=K,window.graph=K.graph,U.value=!0,N.setupEmptyGraphListener(),K.canvas.onSelectionChange=eo(K.canvas.onSelectionChange,()=>u.updateSelectedItems()),g.customPalettes=l.get("Comfy.CustomColorPalettes"),await A.initializeWorkflow(),A.restoreWorkflowTabsState(),await A.loadTemplateFromUrlIfPresent();const{useReleaseStore:E}=await Kn(async()=>{const{useReleaseStore:V}=await Promise.resolve().then(()=>Wy);return{useReleaseStore:V}},void 0,import.meta.url);E().initialize(),ne(()=>l.get("Comfy.Locale"),async()=>{await Se().execute("Comfy.RefreshNodeDefinitions"),await ot().reloadCurrentWorkflow()}),xo(()=>me().canvas,V=>{Le(V.canvas,"litegraph:set-graph",()=>{Ae().updateActiveGraph()})},{immediate:!0}),t("ready")}),rt(()=>{N.cleanup()}),(E,W)=>(f(),T(le,null,[U.value?(f(),G(cd,{key:0},Hn({"graph-canvas-panel":O(()=>[y.value?(f(),G(iv,{key:0,class:"pointer-events-auto"})):R("",!0),U.value&&M.value&&w.value?(f(),G(Kw,{key:1,class:"pointer-events-auto"})):R("",!0)]),_:2},[S.value?{name:"workflow-tabs",fn:O(()=>[v.value==="Topbar"?(f(),T("div",p1,[C(Yr)()&&v.value!=="Topbar"?(f(),T("div",f1)):R("",!0),p("div",m1,[z(Nl),z(Tl)])])):R("",!0)]),key:"0"}:void 0,S.value?{name:"side-toolbar",fn:O(()=>[z(zb)]),key:"1"}:void 0,S.value?{name:"side-bar-panel",fn:O(()=>[p("div",v1,[h.value?(f(),G(ds,{key:0,extension:h.value},null,8,["extension"])):R("",!0)])]),key:"2"}:void 0,S.value?{name:"topmenu",fn:O(()=>[z(km)]),key:"3"}:void 0,S.value?{name:"bottom-panel",fn:O(()=>[z(Im)]),key:"4"}:void 0,S.value?{name:"right-side-panel",fn:O(()=>[z(kh)]),key:"5"}:void 0]),1024)):R("",!0),p("canvas",{id:"graph-canvas",ref_key:"canvasRef",ref:s,tabindex:"1",class:"absolute inset-0 size-full touch-none"},null,512),C(I)&&C(K).canvas&&U.value?(f(),G(Ew,{key:1,canvas:C(K).canvas,onWheelCapture:C(b).forwardEventToCanvas},{default:O(()=>[(f(!0),T(le,null,we(P.value,V=>(f(),G(u1,{key:V.id,"node-data":V,error:C(d).lastExecutionError?.node_id===V.id?"Execution error":null,"zoom-level":C(u).canvas?.ds?.scale||1,"data-node-id":V.id},null,8,["node-data","error","zoom-level","data-node-id"]))),128))]),_:1},8,["canvas","onWheelCapture"])):R("",!0),U.value?(f(),G(d1,{key:2})):R("",!0),x.value?(f(),G(uv,{key:3})):R("",!0),z(Lh,{ref_key:"nodeSearchboxPopoverRef",ref:a},null,512),U.value?(f(),T(le,{key:4},[z(hg),_.value?(f(),G(vg,{key:0})):R("",!0),C(I)?R("",!0):(f(),G(Om,{key:1}))],64)):R("",!0)],64))}}),h1={class:"flex flex-auto flex-col items-start"},y1={class:"my-4 text-lg font-medium"},b1=q({__name:"RerouteMigrationToast",setup(e){const{t:o}=pe(),t=zt(),s=Ae(),a=n(async()=>{const l=K.rootGraph.serialize(),i=eu(l);await K.loadGraphData(i,!1,!1,s.activeWorkflow),t.removeGroup("reroute-migration")},"migrateToLitegraphReroute");return(l,i)=>(f(),G(C(Pa),{group:"reroute-migration"},{message:O(()=>[p("div",h1,[p("div",y1,B(C(o)("toastMessages.migrateToLitegraphReroute")),1),z(X,{class:"self-end",size:"sm",onClick:a},{default:O(()=>[Ie(B(C(o)("g.migrate")),1)]),_:1})])]),_:1}))}}),da="ComfyUI",w1=" - ComfyUI",k1=n(()=>{const e=Ye(),o=ie(),t=Ae(),s=tt(),a=k(()=>e.isIdle?"":`[${Math.round(e.executionProgress*100)}%]`),l=k(()=>o.get("Comfy.UseNewMenu")!=="Disabled"),i=k(()=>o.get("Comfy.Workflow.AutoSave")==="after delay"),r=k(()=>!!t.activeWorkflow?.isModified),u=k(()=>!!t.activeWorkflow?.isPersisted),d=k(()=>s.shiftDown||i.value?!1:!!(!u.value||r.value)),m=k(()=>d.value?" *":""),g=k(()=>{const v=t.activeWorkflow?.filename;return v?m.value+v+w1:da}),c=k(()=>{const y=Object.entries(e.nodeProgressStates).filter(([M,I])=>I.state==="running");if(y.length===0)return"";if(y.length>1)return`${a.value}[${y.length} ${re("g.nodesRunning","nodes running")}]`;const[x,_]=y[0],h=Math.round(_.value/_.max*100),S=e.activePrompt?.workflow?.changeTracker?.activeState.nodes.find(M=>String(M.id)===x)?.type||"Node";return`${a.value}[${h}%] ${S}`}),b=k(()=>a.value+(l.value?g.value:da)),w=k(()=>c.value||b.value);ni(w)},"useBrowserTabTitle"),C1={},S1={class:"size-full bg-modal-panel-background pr-6 pb-8 pl-4"};function x1(e,o){return f(),T("div",S1,[Me(e.$slots,"default")])}n(x1,"_sfc_render");const _1=Ee(C1,[["render",x1]]),T1={class:"text-neutral text-base"},N1={class:"flex gap-2"},$1={class:"relative flex gap-2 px-6 pb-4"},I1=q({__name:"SampleModelSelector",props:{onClose:{type:Function}},setup(e){const o=L([{name:"Vue",value:"vue"},{name:"React",value:"react"},{name:"Angular",value:"angular"},{name:"Svelte",value:"svelte"}]),t=L([{name:"Project A",value:"proj-a"},{name:"Project B",value:"proj-b"},{name:"Project C",value:"proj-c"}]),s=L([{name:"Popular",value:"popular"},{name:"Latest",value:"latest"},{name:"A → Z",value:"az"}]),a=L([{id:"installed",label:"Installed",icon:"icon-[lucide--download]"},{title:"TAGS",items:[{id:"tag-sd15",label:"SD 1.5",icon:"icon-[lucide--tag]"},{id:"tag-sdxl",label:"SDXL",icon:"icon-[lucide--tag]"},{id:"tag-utility",label:"Utility",icon:"icon-[lucide--tag]"}]},{title:"CATEGORIES",items:[{id:"cat-models",label:"Models",icon:"icon-[lucide--layers]"},{id:"cat-nodes",label:"Nodes",icon:"icon-[lucide--grid-3x3]"}]}]);tn(un,e.onClose);const l=L(""),i=L(""),r=L([]),u=L([]),d=L("popular"),m=L("installed"),g=k(()=>_l());return(c,b)=>(f(),G(rs,{"content-title":c.$t("assetBrowser.checkpoints")},{leftPanel:O(()=>[z(us,{modelValue:m.value,"onUpdate:modelValue":b[0]||(b[0]=w=>m.value=w),"nav-items":a.value},{"header-icon":O(()=>b[6]||(b[6]=[p("i",{class:"text-neutral icon-[lucide--puzzle]"},null,-1)])),"header-title":O(()=>[p("span",T1,B(c.$t("g.title")),1)]),_:1},8,["modelValue","nav-items"])]),header:O(()=>[z(sn,{modelValue:l.value,"onUpdate:modelValue":b[1]||(b[1]=w=>l.value=w),size:"lg",class:"max-w-[384px]"},null,8,["modelValue"])]),"header-right-area":O(()=>[p("div",N1,[z(X,{variant:"primary",onClick:n(()=>{},"onClick")},{default:O(()=>[b[7]||(b[7]=p("i",{class:"icon-[lucide--upload]"},null,-1)),p("span",null,B(c.$t("g.upload")),1)]),_:1}),z(dl,null,{default:O(({close:w})=>[z(X,{variant:"secondary",onClick:n(()=>{w()},"onClick")},{default:O(()=>[b[8]||(b[8]=p("i",{class:"icon-[lucide--download]"},null,-1)),p("span",null,B(c.$t("g.settings")),1)]),_:2},1032,["onClick"]),z(X,{variant:"primary",onClick:n(()=>{w()},"onClick")},{default:O(()=>[b[9]||(b[9]=p("i",{class:"icon-[lucide--scroll]"},null,-1)),p("span",null,B(c.$t("g.profile")),1)]),_:2},1032,["onClick"])]),_:1})])]),contentFilter:O(()=>[p("div",$1,[z(Wt,{modelValue:r.value,"onUpdate:modelValue":b[2]||(b[2]=w=>r.value=w),"search-query":i.value,"onUpdate:searchQuery":b[3]||(b[3]=w=>i.value=w),class:"w-[250px]",label:c.$t("assetBrowser.selectFrameworks"),options:o.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},null,8,["modelValue","search-query","label","options"]),z(Wt,{modelValue:u.value,"onUpdate:modelValue":b[4]||(b[4]=w=>u.value=w),label:c.$t("assetBrowser.selectProjects"),options:t.value},null,8,["modelValue","label","options"]),z(Qo,{modelValue:d.value,"onUpdate:modelValue":b[5]||(b[5]=w=>d.value=w),label:c.$t("assetBrowser.sortingType"),options:s.value,class:"w-[135px]"},{icon:O(()=>b[10]||(b[10]=[p("i",{class:"icon-[lucide--filter]"},null,-1)])),_:1},8,["modelValue","label","options"])])]),content:O(()=>[p("div",{style:ge(g.value)},[(f(),T(le,null,we(100,w=>z(Ro,{key:w,size:"regular"},{top:O(()=>[z(zo,{ratio:"landscape"},{default:O(()=>b[11]||(b[11]=[p("div",{class:"h-full w-full bg-blue-500"},null,-1)])),"top-right":O(()=>[z(X,{size:"icon",class:"!bg-white !text-neutral-900",onClick:n(()=>{},"onClick")},{default:O(()=>b[12]||(b[12]=[p("i",{class:"icon-[lucide--info]"},null,-1)])),_:1})]),"bottom-right":O(()=>[z(Bo,{label:"png"}),z(Bo,{label:"1.2 MB"}),z(Bo,{label:"LoRA"},{icon:O(()=>b[13]||(b[13]=[p("i",{class:"icon-[lucide--folder]"},null,-1)])),_:1})]),_:1})]),bottom:O(()=>[z(Wo)]),_:2},1024)),64))],4)]),rightPanel:O(()=>[z(_1)]),_:1},8,["content-title"]))}}),pa="global-model-selector",M1=n(()=>{const e=et(),o=gt();function t(){o.closeDialog({key:pa})}n(t,"hide");function s(){e.showLayoutDialog({key:pa,component:I1,props:{onClose:t}})}return n(s,"show"),{show:s,hide:t}},"useModelSelectorDialog");function P1(e,o){const t=tu.safeParse(e);if(!t.success){const v=t.error.errors.map(y=>`${y.path.join(".")}: ${y.message}`).join(", ");return console.error("Invalid asset item:",v),{success:!1,error:{code:"INVALID_ASSET",message:"Asset schema validation failed",assetId:e.id,details:{validationErrors:v}}}}const s=t.data,a=s.user_metadata;if(!a)return console.error(`Asset ${s.id} missing required user_metadata`),{success:!1,error:{code:"INVALID_ASSET",message:"Asset missing required user_metadata",assetId:s.id}};const l=a.filename;if(typeof l!="string"||l.length===0)return console.error(`Asset ${s.id} has invalid user_metadata.filename (expected non-empty string, got ${typeof l})`),{success:!1,error:{code:"INVALID_ASSET",message:`Invalid filename (expected non-empty string, got ${typeof l})`,assetId:s.id}};if(s.tags.length===0)return console.error(`Asset ${s.id} has no tags defined (expected at least one category tag)`),{success:!1,error:{code:"INVALID_ASSET",message:"Asset has no tags defined",assetId:s.id}};const i=s.tags.find(v=>v!==Os&&v!==Vs);if(!i)return console.error(`Asset ${s.id} has no valid category tag. Available tags: ${s.tags.join(", ")} (expected tag other than '${Os}' or '${Vs}')`),{success:!1,error:{code:"INVALID_ASSET",message:"Asset has no valid category tag",assetId:s.id,details:{availableTags:s.tags}}};const u=Yn().getNodeProvider(i);if(!u)return console.error(`No node provider registered for category: ${i}`),{success:!1,error:{code:"NO_PROVIDER",message:`No node provider registered for category: ${i}`,assetId:s.id,details:{category:i}}};const m=ao().getCanvasCenter(),g=ve.createNode(u.nodeDef.name,u.nodeDef.display_name,{pos:m});if(!g)return console.error(`Failed to create node for type: ${u.nodeDef.name}`),{success:!1,error:{code:"NODE_CREATION_FAILED",message:`Failed to create node for type: ${u.nodeDef.name}`,assetId:s.id,details:{nodeType:u.nodeDef.name}}};const c=Ae(),b=c.isSubgraphActive?c.activeSubgraph:K.canvas.graph;if(!b)return console.error("No active graph available"),{success:!1,error:{code:"NO_GRAPH",message:"No active graph available",assetId:s.id}};const w=g.widgets?.find(v=>v.name===u.key);return w?(w.value=l,b.add(g),{success:!0,value:g}):(console.error(`Widget ${u.key} not found on node ${u.nodeDef.name}`),{success:!1,error:{code:"MISSING_WIDGET",message:`Widget ${u.key} not found on node ${u.nodeDef.name}`,assetId:s.id,details:{widgetName:u.key,nodeType:u.nodeDef.name}}})}n(P1,"createModelNodeFromAsset");const Lo={DISTRIBUTION:"tf_42243568391700",ANONYMOUS_EMAIL:"tf_anonymous_requester_email",EMAIL:"tf_40029135130388",USER_ID:"tf_42515251051412"},D1="https://support.comfy.org/hc/en-us/requests/new";function A1(e){const o=new URLSearchParams({[Lo.DISTRIBUTION]:"oss"});return e?.userEmail&&(o.append(Lo.ANONYMOUS_EMAIL,e.userEmail),o.append(Lo.EMAIL,e.userEmail)),e?.userId&&o.append(Lo.USER_ID,e.userId),`${D1}?${o.toString()}`}n(A1,"buildSupportUrl");const{isActiveSubscription:_n,showSubscriptionDialog:Tn}=Xn(),Oo="1.22.2";function E1(){const e=ot(),o=Ae(),t=et(),s=ut(),a=ja(),l=$t(),i=me(),r=Ye(),{staticUrls:u,buildDocsUrl:d}=lo(),m=ie(),g=so(),{getSelectedNodes:c,toggleSelectedNodesMode:b}=os(),w=n(()=>o.activeWorkflow?.changeTracker,"getTracker");function v(){return m.get("Comfy.Queue.QPOV2")}n(v,"isQueuePanelV2Enabled");async function y(){await m.set("Comfy.Queue.QPOV2",!v())}n(y,"toggleQueuePanelV2");const x=n(h=>{const S=c();if(S.length===0)return;const M=ie().get("Comfy.SnapToGrid.GridSize");S.forEach(I=>{I.pos=h(I.pos,M)}),K.canvas.state.selectionChanged=!0,K.canvas.setDirty(!0,!0)},"moveSelectedNodes");return[{id:"Comfy.NewBlankWorkflow",icon:"pi pi-plus",label:"New Blank Workflow",menubarLabel:"New",category:"essentials",function:n(async()=>{K.rootGraph._nodes.length>0,await e.loadBlankWorkflow()},"function")},{id:"Comfy.OpenWorkflow",icon:"pi pi-folder-open",label:"Open Workflow",menubarLabel:"Open",category:"essentials",function:n(()=>{K.ui.loadFile()},"function")},{id:"Comfy.LoadDefaultWorkflow",icon:"pi pi-code",label:"Load Default Workflow",function:n(async()=>{K.rootGraph._nodes.length>0,await e.loadDefaultWorkflow()},"function")},{id:"Comfy.SaveWorkflow",icon:"pi pi-save",label:"Save Workflow",menubarLabel:"Save",category:"essentials",function:n(async()=>{const h=Ae().activeWorkflow;h&&await e.saveWorkflow(h)},"function")},{id:"Comfy.PublishSubgraph",icon:"pi pi-save",label:"Publish Subgraph",menubarLabel:"Publish",function:n(async()=>{await Fa().publishSubgraph()},"function")},{id:"Comfy.SaveWorkflowAs",icon:"pi pi-save",label:"Save Workflow As",menubarLabel:"Save As",category:"essentials",function:n(async()=>{const h=Ae().activeWorkflow;h&&await e.saveWorkflowAs(h)},"function")},{id:"Comfy.ExportWorkflow",icon:"pi pi-download",label:"Export Workflow",menubarLabel:"Export",category:"essentials",function:n(async()=>{await e.exportWorkflow("workflow","workflow")},"function")},{id:"Comfy.ExportWorkflowAPI",icon:"pi pi-download",label:"Export Workflow (API Format)",menubarLabel:"Export (API)",function:n(async()=>{await e.exportWorkflow("workflow_api","output")},"function")},{id:"Comfy.Undo",icon:"pi pi-undo",label:"Undo",category:"essentials",function:n(async()=>{await w()?.undo?.()},"function")},{id:"Comfy.Redo",icon:"pi pi-refresh",label:"Redo",category:"essentials",function:n(async()=>{await w()?.redo?.()},"function")},{id:"Comfy.ClearWorkflow",icon:"pi pi-trash",label:"Clear Workflow",category:"essentials",function:n(()=>{if(!ie().get("Comfy.ConfirmClear")||confirm("Clear workflow?")){if(K.clean(),K.canvas.subgraph){const S=K.canvas.subgraph;nu(S).forEach(I=>S.remove(I))}Ce.dispatchCustomEvent("graphCleared")}},"function")},{id:"Comfy.Canvas.ResetView",icon:"pi pi-expand",label:"Reset View",function:n(()=>{ao().resetView()},"function")},{id:"Comfy.OpenClipspace",icon:"pi pi-clipboard",label:"Clipspace",function:n(()=>{K.openClipspace()},"function")},{id:"Comfy.RefreshNodeDefinitions",icon:"pi pi-refresh",label:"Refresh Node Definitions",category:"essentials",function:n(async()=>{await K.refreshComboInNodes()},"function")},{id:"Comfy.Interrupt",icon:"pi pi-stop",label:"Interrupt",category:"essentials",function:n(async()=>{await Ce.interrupt(r.activePromptId),l.add({severity:"info",summary:re("g.interrupted"),detail:re("toastMessages.interrupted"),life:1e3})},"function")},{id:"Comfy.ClearPendingTasks",icon:"pi pi-stop",label:"Clear Pending Tasks",category:"essentials",function:n(async()=>{await _t().clear(["queue"]),l.add({severity:"info",summary:re("g.confirmed"),detail:re("toastMessages.pendingTasksDeleted"),life:3e3})},"function")},{id:"Comfy.BrowseTemplates",icon:"pi pi-folder-open",label:"Browse Templates",function:n(()=>{gs().show()},"function")},{id:"Comfy.Canvas.ZoomIn",icon:"pi pi-plus",label:"Zoom In",category:"view-controls",function:n(()=>{const h=K.canvas.ds;h.changeScale(h.scale*1.1,h.element?[h.element.width/2,h.element.height/2]:void 0),K.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.ZoomOut",icon:"pi pi-minus",label:"Zoom Out",category:"view-controls",function:n(()=>{const h=K.canvas.ds;h.changeScale(h.scale/1.1,h.element?[h.element.width/2,h.element.height/2]:void 0),K.canvas.setDirty(!0,!0)},"function")},{id:"Experimental.ToggleVueNodes",label:n(()=>`Experimental: ${ie().get("Comfy.VueNodes.Enabled")?"Disable":"Enable"} Nodes 2.0`,"label"),function:n(async()=>{const h=ie(),S=h.get("Comfy.VueNodes.Enabled")??!1;await h.set("Comfy.VueNodes.Enabled",!S)},"function")},{id:"Comfy.Canvas.FitView",icon:"pi pi-expand",label:"Fit view to selected nodes",menubarLabel:"Zoom to fit",category:"view-controls",function:n(()=>{if(K.canvas.empty){l.add({severity:"error",summary:re("toastMessages.emptyCanvas"),life:3e3});return}K.canvas.fitViewToSelectionAnimated()},"function")},{id:"Comfy.Canvas.ToggleLock",icon:"pi pi-lock",label:"Canvas Toggle Lock",category:"view-controls",function:n(()=>{K.canvas.state.readOnly=!K.canvas.state.readOnly},"function")},{id:"Comfy.Canvas.Lock",icon:"pi pi-lock",label:"Lock Canvas",category:"view-controls",function:n(()=>{K.canvas.state.readOnly=!0},"function")},{id:"Comfy.Canvas.Unlock",icon:"pi pi-lock-open",label:"Unlock Canvas",function:n(()=>{K.canvas.state.readOnly=!1},"function")},{id:"Comfy.Canvas.ToggleLinkVisibility",icon:"pi pi-eye",label:"Canvas Toggle Link Visibility",menubarLabel:"Node Links",versionAdded:"1.3.6",function:(()=>{const h=ie();let S=ve.SPLINE_LINK;return async()=>{const M=h.get("Comfy.LinkRenderMode");M===ve.HIDDEN_LINK?await h.set("Comfy.LinkRenderMode",S):(S=M,await h.set("Comfy.LinkRenderMode",ve.HIDDEN_LINK))}})(),active:n(()=>ie().get("Comfy.LinkRenderMode")!==ve.HIDDEN_LINK,"active")},{id:"Comfy.Canvas.ToggleMinimap",icon:"pi pi-map",label:"Canvas Toggle Minimap",menubarLabel:"Minimap",versionAdded:"1.24.1",function:n(async()=>{const h=ie();await h.set("Comfy.Minimap.Visible",!h.get("Comfy.Minimap.Visible"))},"function"),active:n(()=>ie().get("Comfy.Minimap.Visible"),"active")},{id:"Comfy.Queue.ToggleOverlay",icon:"pi pi-history",label:n(()=>re("queue.toggleJobHistory"),"label"),menubarLabel:n(()=>re("queue.jobHistory"),"menubarLabel"),versionAdded:"1.37.0",category:"view-controls",function:n(()=>{Pn().toggleOverlay()},"function"),active:n(()=>Pn().isOverlayExpanded,"active")},{id:"Comfy.QueuePrompt",icon:"pi pi-play",label:"Queue Prompt",versionAdded:"1.3.7",category:"essentials",function:n(async h=>{if(!_n.value){Tn();return}const S=yo().batchCount;await K.queuePrompt(0,S)},"function")},{id:"Comfy.QueuePromptFront",icon:"pi pi-play",label:"Queue Prompt (Front)",versionAdded:"1.3.7",category:"essentials",function:n(async h=>{if(!_n.value){Tn();return}const S=yo().batchCount;await K.queuePrompt(-1,S)},"function")},{id:"Comfy.QueueSelectedOutputNodes",icon:"pi pi-play",label:"Queue Selected Output Nodes",versionAdded:"1.19.6",function:n(async h=>{if(!_n.value){Tn();return}const S=yo().batchCount,M=c(),I=Ka(M);if(I.length===0){l.add({severity:"error",summary:re("toastMessages.nothingToQueue"),detail:re("toastMessages.pleaseSelectOutputNodes"),life:3e3});return}const N=su(I);if(N.length===0){l.add({severity:"error",summary:re("toastMessages.failedToQueue"),detail:re("toastMessages.failedExecutionPathResolution"),life:3e3});return}await K.queuePrompt(0,S,N)},"function")},{id:"Comfy.ShowSettingsDialog",icon:"pi pi-cog",label:"Show Settings Dialog",versionAdded:"1.3.7",category:"view-controls",function:n(()=>{t.showSettingsDialog()},"function")},{id:"Comfy.Graph.GroupSelectedNodes",icon:"pi pi-sitemap",label:"Group Selected Nodes",versionAdded:"1.3.7",category:"essentials",function:n(()=>{const{canvas:h}=K;if(!h.selectedItems?.size){l.add({severity:"error",summary:re("toastMessages.nothingToGroup"),detail:re("toastMessages.pleaseSelectNodesToGroup"),life:3e3});return}const S=new Rt,M=ie().get("Comfy.GroupSelectedNodes.Padding");S.resizeTo(h.selectedItems,M),h.graph?.add(S),S.recomputeInsideNodes(),ln().titleEditorTarget=S},"function")},{id:"Workspace.NextOpenedWorkflow",icon:"pi pi-step-forward",label:"Next Opened Workflow",versionAdded:"1.3.9",function:n(async()=>{await e.loadNextOpenedWorkflow()},"function")},{id:"Workspace.PreviousOpenedWorkflow",icon:"pi pi-step-backward",label:"Previous Opened Workflow",versionAdded:"1.3.9",function:n(async()=>{await e.loadPreviousOpenedWorkflow()},"function")},{id:"Comfy.Canvas.ToggleSelectedNodes.Mute",icon:"pi pi-volume-off",label:"Mute/Unmute Selected Nodes",versionAdded:"1.3.11",category:"essentials",function:n(()=>{b(Oe.NEVER),K.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.ToggleSelectedNodes.Bypass",icon:"pi pi-shield",label:"Bypass/Unbypass Selected Nodes",versionAdded:"1.3.11",category:"essentials",function:n(()=>{b(Oe.BYPASS),K.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.ToggleSelectedNodes.Pin",icon:"pi pi-pin",label:"Pin/Unpin Selected Nodes",versionAdded:"1.3.11",category:"essentials",function:n(()=>{c().forEach(h=>{h.pin(!h.pinned)}),K.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.ToggleSelected.Pin",icon:"pi pi-pin",label:"Pin/Unpin Selected Items",versionAdded:"1.3.33",function:n(()=>{for(const h of K.canvas.selectedItems)(h instanceof mt||h instanceof Rt)&&h.pin(!h.pinned);K.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.Resize",icon:"pi pi-minus",label:"Resize Selected Nodes",versionAdded:"",function:n(()=>{c().forEach(h=>{const S=h.computeSize();h.setSize([S[0],S[1]])}),K.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.ToggleSelectedNodes.Collapse",icon:"pi pi-minus",label:"Collapse/Expand Selected Nodes",versionAdded:"1.3.11",function:n(()=>{c().forEach(h=>{h.collapse()}),K.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.ToggleTheme",icon:"pi pi-moon",label:"Toggle Theme (Dark/Light)",versionAdded:"1.3.12",function:(()=>{let h=au.id,S=lu.id;return async()=>{const M=ie(),I=s.completedActivePalette;I.light_theme?(S=I.id,await M.set("Comfy.ColorPalette",h)):(h=I.id,await M.set("Comfy.ColorPalette",S))}})()},{id:"Workspace.ToggleBottomPanel",icon:"pi pi-list",label:"Toggle Bottom Panel",menubarLabel:"Bottom Panel",versionAdded:"1.3.22",category:"view-controls",function:n(()=>{g.toggleBottomPanel()},"function"),active:n(()=>g.bottomPanelVisible,"active")},{id:"Workspace.ToggleFocusMode",icon:"pi pi-eye",label:"Toggle Focus Mode",menubarLabel:"Focus Mode",versionAdded:"1.3.27",category:"view-controls",function:n(()=>{tt().toggleFocusMode()},"function"),active:n(()=>tt().focusMode,"active")},{id:"Comfy.Graph.FitGroupToContents",icon:"pi pi-expand",label:"Fit Group To Contents",versionAdded:"1.4.9",function:n(()=>{for(const h of K.canvas.selectedItems)if(h instanceof Rt){h.recomputeInsideNodes();const S=ie().get("Comfy.GroupSelectedNodes.Padding");h.resizeTo(h.children,S),K.canvas.setDirty(!1,!0)}},"function")},{id:"Comfy.Help.OpenComfyUIIssues",icon:"pi pi-github",label:"Open ComfyUI Issues",menubarLabel:"ComfyUI Issues",versionAdded:"1.5.5",function:n(()=>{window.open(u.githubIssues,"_blank")},"function")},{id:"Comfy.Help.OpenComfyUIDocs",icon:"pi pi-info-circle",label:"Open ComfyUI Docs",menubarLabel:"ComfyUI Docs",versionAdded:"1.5.5",function:n(()=>{window.open(d("/",{includeLocale:!0}),"_blank")},"function")},{id:"Comfy.Help.OpenComfyOrgDiscord",icon:"pi pi-discord",label:"Open Comfy-Org Discord",menubarLabel:"Comfy-Org Discord",versionAdded:"1.5.5",function:n(()=>{window.open(u.discord,"_blank")},"function")},{id:"Workspace.SearchBox.Toggle",icon:"pi pi-search",label:"Toggle Search Box",versionAdded:"1.5.7",function:n(()=>{vs().toggleVisible()},"function")},{id:"Comfy.Help.AboutComfyUI",icon:"pi pi-info-circle",label:"Open About ComfyUI",menubarLabel:"About ComfyUI",versionAdded:"1.6.4",function:n(()=>{t.showSettingsDialog("about")},"function")},{id:"Comfy.DuplicateWorkflow",icon:"pi pi-clone",label:"Duplicate Current Workflow",versionAdded:"1.6.15",function:n(async()=>{await e.duplicateWorkflow(o.activeWorkflow)},"function")},{id:"Workspace.CloseWorkflow",icon:"pi pi-times",label:"Close Current Workflow",versionAdded:"1.7.3",function:n(async()=>{o.activeWorkflow&&await e.closeWorkflow(o.activeWorkflow)},"function")},{id:"Comfy.ContactSupport",icon:"pi pi-question",label:"Contact Support",versionAdded:"1.17.8",function:n(()=>{const{userEmail:h,resolvedUserInfo:S}=io(),M=A1({userEmail:h.value,userId:S.value?.id});window.open(M,"_blank")},"function")},{id:"Comfy.Help.OpenComfyUIForum",icon:"pi pi-comments",label:"Open ComfyUI Forum",menubarLabel:"ComfyUI Forum",versionAdded:"1.8.2",function:n(()=>{window.open(u.forum,"_blank")},"function")},{id:"Comfy.Canvas.DeleteSelectedItems",icon:"pi pi-trash",label:"Delete Selected Items",versionAdded:"1.10.5",function:n(()=>{K.canvas.deleteSelected(),K.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Manager.CustomNodesManager.ShowCustomNodesMenu",icon:"pi pi-puzzle",label:"Custom Nodes Manager",versionAdded:"1.12.10",function:n(async()=>{await pt().openManager({showToastOnLegacyError:!0})},"function")},{id:"Comfy.Manager.ShowUpdateAvailablePacks",icon:"pi pi-sync",label:"Check for Custom Node Updates",versionAdded:"1.17.0",function:n(async()=>{const h=pt();if(h.managerUIState.value===iu.DISABLED){l.add({severity:"error",summary:re("g.error"),detail:re("manager.notAvailable"),life:3e3});return}await h.openManager({initialTab:Yt.UpdateAvailable,showToastOnLegacyError:!1})},"function")},{id:"Comfy.Manager.ShowMissingPacks",icon:"pi pi-exclamation-circle",label:"Install Missing Custom Nodes",versionAdded:"1.17.0",function:n(async()=>{await pt().openManager({initialTab:Yt.Missing,showToastOnLegacyError:!1})},"function")},{id:"Comfy.Manager.ToggleManagerProgressDialog",icon:"pi pi-spinner",label:"Toggle the Custom Nodes Manager Progress Bar",versionAdded:"1.13.9",function:n(()=>{t.toggleManagerProgressDialog()},"function")},{id:"Comfy.User.OpenSignInDialog",icon:"pi pi-user",label:"Open Sign In Dialog",versionAdded:"1.17.6",function:n(async()=>{await t.showSignInDialog()},"function")},{id:"Comfy.User.SignOut",icon:"pi pi-sign-out",label:"Sign Out",versionAdded:"1.18.1",function:n(async()=>{await a.logout()},"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Up",icon:"pi pi-arrow-up",label:"Move Selected Nodes Up",versionAdded:Oo,function:n(()=>x(([h,S],M)=>[h,S-M]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Down",icon:"pi pi-arrow-down",label:"Move Selected Nodes Down",versionAdded:Oo,function:n(()=>x(([h,S],M)=>[h,S+M]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Left",icon:"pi pi-arrow-left",label:"Move Selected Nodes Left",versionAdded:Oo,function:n(()=>x(([h,S],M)=>[h-M,S]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Right",icon:"pi pi-arrow-right",label:"Move Selected Nodes Right",versionAdded:Oo,function:n(()=>x(([h,S],M)=>[h+M,S]),"function")},{id:"Comfy.Graph.ConvertToSubgraph",icon:"icon-[lucide--shrink]",label:"Convert Selection to Subgraph",versionAdded:"1.20.1",category:"essentials",function:n(()=>{const h=i.getCanvas(),S=h.subgraph??h.graph;if(!S)throw new TypeError("Canvas has no graph or subgraph set.");const M=S.convertToSubgraph(h.selectedItems);if(!M){l.add({severity:"error",summary:re("toastMessages.cannotCreateSubgraph"),detail:re("toastMessages.failedToConvertToSubgraph"),life:3e3});return}const{node:I}=M;h.select(I),i.updateSelectedItems()},"function")},{id:"Comfy.Graph.UnpackSubgraph",icon:"icon-[lucide--expand]",label:"Unpack the selected Subgraph",versionAdded:"1.26.3",function:n(()=>{const{unpackSubgraph:h}=Qa();h()},"function")},{id:"Comfy.Graph.EditSubgraphWidgets",label:"Edit Subgraph Widgets",icon:"icon-[lucide--settings-2]",versionAdded:"1.28.5",function:n(()=>{no().openPanel("subgraph")},"function")},{id:"Comfy.Graph.ToggleWidgetPromotion",icon:"icon-[lucide--arrow-left-right]",label:"Toggle promotion of hovered widget",versionAdded:"1.30.1",function:ou},{id:"Comfy.OpenManagerDialog",icon:"mdi mdi-puzzle-outline",label:"Manager",function:n(async()=>{await pt().openManager({initialTab:Yt.All,showToastOnLegacyError:!1})},"function")},{id:"Comfy.ToggleHelpCenter",icon:"pi pi-question-circle",label:"Help Center",function:n(()=>{Rn().toggle()},"function"),active:n(()=>Rn().isVisible,"active")},{id:"Comfy.ToggleCanvasInfo",icon:"pi pi-info-circle",label:"Canvas Performance",function:n(async()=>{const h=ie(),S=h.get("Comfy.Graph.CanvasInfo");await h.set("Comfy.Graph.CanvasInfo",!S)},"function"),active:n(()=>ie().get("Comfy.Graph.CanvasInfo"),"active")},{id:"Workspace.ToggleBottomPanel.Shortcuts",icon:"pi pi-key",label:"Show Keybindings Dialog",versionAdded:"1.24.1",category:"view-controls",function:n(()=>{g.togglePanel("shortcuts")},"function")},{id:"Comfy.Graph.ExitSubgraph",icon:"pi pi-arrow-up",label:"Exit Subgraph",versionAdded:"1.20.1",function:n(()=>{const h=me().getCanvas(),S=Zn();h.graph&&h.setGraph(S.navigationStack.at(-2)??h.graph.rootGraph)},"function")},{id:"Comfy.Dev.ShowModelSelector",icon:"pi pi-box",label:"Show Model Selector (Dev)",versionAdded:"1.26.2",category:"view-controls",function:n(()=>{M1().show()},"function")},{id:"Comfy.Manager.CustomNodesManager.ShowLegacyCustomNodesMenu",icon:"pi pi-bars",label:"Custom Nodes (Legacy)",versionAdded:"1.16.4",function:n(async()=>{await pt().openManager({legacyCommand:"Comfy.Manager.CustomNodesManager.ToggleVisibility",showToastOnLegacyError:!0,isLegacyOnly:!0})},"function")},{id:"Comfy.Manager.ShowLegacyManagerMenu",icon:"mdi mdi-puzzle",label:"Manager Menu (Legacy)",versionAdded:"1.16.4",function:n(async()=>{await pt().openManager({showToastOnLegacyError:!0,isLegacyOnly:!0})},"function")},{id:"Comfy.Memory.UnloadModels",icon:"mdi mdi-vacuum-outline",label:"Unload Models",versionAdded:"1.16.4",function:n(async()=>{if(!ie().get("Comfy.Memory.AllowManualUnload")){$t().add({severity:"error",summary:re("g.error"),detail:re("g.commandProhibited",{command:"Comfy.Memory.UnloadModels"}),life:3e3});return}await Ce.freeMemory({freeExecutionCache:!1})},"function")},{id:"Comfy.Memory.UnloadModelsAndExecutionCache",icon:"mdi mdi-vacuum-outline",label:"Unload Models and Execution Cache",versionAdded:"1.16.4",function:n(async()=>{if(!ie().get("Comfy.Memory.AllowManualUnload")){$t().add({severity:"error",summary:re("g.error"),detail:re("g.commandProhibited",{command:"Comfy.Memory.UnloadModelsAndExecutionCache"}),life:3e3});return}await Ce.freeMemory({freeExecutionCache:!0})},"function")},{id:"Comfy.BrowseModelAssets",icon:"pi pi-folder-open",label:"Experimental: Browse Model Assets",versionAdded:"1.28.3",function:n(async()=>{if(!ie().get("Comfy.Assets.UseAssetAPI")){if(!await t.confirm({title:"Enable Asset API",message:"The Asset API is currently disabled. Would you like to enable it?",type:"default"}))return;await ie().set("Comfy.Assets.UseAssetAPI",!0),await e.reloadCurrentWorkflow()}await jc().browse({assetType:"models",title:re("sideToolbar.modelLibrary"),onAssetSelected:n(S=>{const M=P1(S);M.success||(l.add({severity:"error",summary:re("g.error"),detail:re("assetBrowser.failedToCreateNode")}),console.error("Node creation failed:",M.error))},"onAssetSelected")})},"function")},{id:"Comfy.ToggleAssetAPI",icon:"pi pi-database",label:n(()=>`Experimental: ${ie().get("Comfy.Assets.UseAssetAPI")?"Disable":"Enable"} AssetAPI`,"label"),function:n(async()=>{const h=ie(),S=h.get("Comfy.Assets.UseAssetAPI")??!1;await h.set("Comfy.Assets.UseAssetAPI",!S),await ot().reloadCurrentWorkflow()},"function")},{id:"Comfy.ToggleQPOV2",icon:"pi pi-list",label:"Toggle Queue Panel V2",function:y},{id:"Comfy.ToggleLinear",icon:"pi pi-database",label:"toggle linear mode",function:n(()=>i.linearMode=!i.linearMode,"function")}].map(h=>({...h,source:"System"}))}n(E1,"useCoreCommands");const L1=n(()=>{const e="/assets/images/favicon_progress_16x16/frame_9.png",o=si(e),t=Ye(),s=10;ne([()=>t.executionProgress,()=>t.isIdle],([a,l])=>{if(l)o.value=e;else{const i=Math.min(Math.max(0,Math.floor(a*s)),s-1);o.value=`/assets/images/favicon_progress_16x16/frame_${i}.png`}})},"useProgressFavicon");var Bn=(e=>(e.NoPreviews="none",e.Auto="auto",e.Latent2RGB="latent2rgb",e.TAESD="taesd",e))(Bn||{}),Fn=(e=>(e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.CRITICAL="CRITICAL",e))(Fn||{}),Un=(e=>(e.MD5="md5",e.SHA1="sha1",e.SHA256="sha256",e.SHA512="sha512",e))(Un||{}),Kt=(e=>(e.Auto="auto",e.Disable="disable",e.Enable="enable",e))(Kt||{}),Pe=(e=>(e.AUTO="auto",e.FP64="fp64",e.FP32="fp32",e.FP16="fp16",e.BF16="bf16",e.FP8E4M3FN="fp8_e4m3fn",e.FP8E5M2="fp8_e5m2",e))(Pe||{}),Uo=(e=>(e.Auto="auto",e.Split="split",e.Quad="quad",e.Pytorch="pytorch",e))(Uo||{}),Go=(e=>(e.Auto="auto",e.GPUOnly="gpu-only",e.HighVram="highvram",e.NormalVram="normalvram",e.LowVram="lowvram",e.NoVram="novram",e.CPU="cpu",e))(Go||{});const O1=[{id:"listen",name:"Host: The IP address to listen on",category:["Network"],type:"text",defaultValue:"127.0.0.1"},{id:"port",name:"Port: The port to listen on",category:["Network"],type:"number",defaultValue:8e3},{id:"tls-keyfile",name:"TLS Key File: Path to TLS key file for HTTPS",category:["Network"],type:"text",defaultValue:""},{id:"tls-certfile",name:"TLS Certificate File: Path to TLS certificate file for HTTPS",category:["Network"],type:"text",defaultValue:""},{id:"enable-cors-header",name:'Enable CORS header: Use "*" for all origins or specify domain',category:["Network"],type:"text",defaultValue:""},{id:"max-upload-size",name:"Maximum upload size (MB)",category:["Network"],type:"number",defaultValue:100},{id:"cuda-device",name:"CUDA device index to use",category:["CUDA"],type:"number",defaultValue:null},{id:"cuda-malloc",name:"Use CUDA malloc for memory allocation",category:["CUDA"],type:"combo",options:Object.values(Kt),defaultValue:Kt.Auto,getValue:n(e=>{switch(e){case Kt.Auto:return{};case Kt.Enable:return{"cuda-malloc":!0};case Kt.Disable:return{"disable-cuda-malloc":!0}}},"getValue")},{id:"global-precision",name:"Global floating point precision",category:["Inference"],type:"combo",options:[Pe.AUTO,Pe.FP32,Pe.FP16],defaultValue:Pe.AUTO,tooltip:"Global floating point precision",getValue:n(e=>{switch(e){case Pe.AUTO:return{};case Pe.FP32:return{"force-fp32":!0};case Pe.FP16:return{"force-fp16":!0};default:return{}}},"getValue")},{id:"unet-precision",name:"UNET precision",category:["Inference"],type:"combo",options:[Pe.AUTO,Pe.FP64,Pe.FP32,Pe.FP16,Pe.BF16,Pe.FP8E4M3FN,Pe.FP8E5M2],defaultValue:Pe.AUTO,tooltip:"UNET precision",getValue:n(e=>{switch(e){case Pe.AUTO:return{};default:return{[`${e.toLowerCase()}-unet`]:!0}}},"getValue")},{id:"vae-precision",name:"VAE precision",category:["Inference"],type:"combo",options:[Pe.AUTO,Pe.FP16,Pe.FP32,Pe.BF16],defaultValue:Pe.AUTO,tooltip:"VAE precision",getValue:n(e=>{switch(e){case Pe.AUTO:return{};default:return{[`${e.toLowerCase()}-vae`]:!0}}},"getValue")},{id:"cpu-vae",name:"Run VAE on CPU",category:["Inference"],type:"boolean",defaultValue:!1},{id:"text-encoder-precision",name:"Text Encoder precision",category:["Inference"],type:"combo",options:[Pe.AUTO,Pe.FP8E4M3FN,Pe.FP8E5M2,Pe.FP16,Pe.FP32],defaultValue:Pe.AUTO,tooltip:"Text Encoder precision",getValue:n(e=>{switch(e){case Pe.AUTO:return{};default:return{[`${e.toLowerCase()}-text-enc`]:!0}}},"getValue")},{id:"force-channels-last",name:"Force channels-last memory format",category:["Memory"],type:"boolean",defaultValue:!1},{id:"directml",name:"DirectML device index",category:["Memory"],type:"number",defaultValue:null},{id:"disable-ipex-optimize",name:"Disable IPEX optimization",category:["Memory"],type:"boolean",defaultValue:!1},{id:"preview-method",name:"Method used for latent previews",category:["Preview"],type:"combo",options:Object.values(Bn),defaultValue:Bn.NoPreviews},{id:"preview-size",name:"Size of preview images",category:["Preview"],type:"slider",defaultValue:512,attrs:{min:128,max:2048,step:128}},{id:"cache-classic",name:"Use classic cache system",category:["Cache"],type:"boolean",defaultValue:!1},{id:"cache-lru",name:"Use LRU caching with a maximum of N node results cached.",category:["Cache"],type:"number",defaultValue:null,tooltip:"May use more RAM/VRAM."},{id:"cross-attention-method",name:"Cross attention method",category:["Attention"],type:"combo",options:Object.values(Uo),defaultValue:Uo.Auto,getValue:n(e=>{switch(e){case Uo.Auto:return{};default:return{[`use-${e.toLowerCase()}-cross-attention`]:!0}}},"getValue")},{id:"disable-xformers",name:"Disable xFormers optimization",type:"boolean",defaultValue:!1},{id:"force-upcast-attention",name:"Force attention upcast",category:["Attention"],type:"boolean",defaultValue:!1},{id:"dont-upcast-attention",name:"Prevent attention upcast",category:["Attention"],type:"boolean",defaultValue:!1},{id:"vram-management",name:"VRAM management mode",category:["Memory"],type:"combo",options:Object.values(Go),defaultValue:Go.Auto,getValue:n(e=>{switch(e){case Go.Auto:return{};default:return{[e]:!0}}},"getValue")},{id:"reserve-vram",name:"Reserved VRAM (GB)",category:["Memory"],type:"number",defaultValue:null,tooltip:"Set the amount of vram in GB you want to reserve for use by your OS/other software. By default some amount is reserved depending on your OS."},{id:"default-hashing-function",name:"Default hashing function for model files",type:"combo",options:Object.values(Un),defaultValue:Un.SHA256},{id:"disable-smart-memory",name:"Disable smart memory management",tooltip:"Force ComfyUI to aggressively offload to regular ram instead of keeping models in vram when it can.",category:["Memory"],type:"boolean",defaultValue:!1},{id:"deterministic",name:"Make pytorch use slower deterministic algorithms when it can.",type:"boolean",defaultValue:!1,tooltip:"Note that this might not make images deterministic in all cases."},{id:"fast",name:"Enable some untested and potentially quality deteriorating optimizations.",type:"boolean",defaultValue:!1},{id:"dont-print-server",name:"Don't print server output to console.",type:"boolean",defaultValue:!1},{id:"disable-metadata",name:"Disable saving prompt metadata in files.",type:"boolean",defaultValue:!1},{id:"enable-manager-legacy-ui",name:"Use legacy Manager UI",tooltip:"Uses the legacy ComfyUI-Manager UI instead of the new UI.",type:"boolean",defaultValue:!1},{id:"disable-all-custom-nodes",name:"Disable loading all custom nodes.",type:"boolean",defaultValue:!1},{id:"log-level",name:"Logging verbosity level",type:"combo",options:Object.values(Fn),defaultValue:Fn.INFO,getValue:n(e=>({verbose:e}),"getValue")},{id:"input-directory",name:"Input directory",category:["Directories"],type:"text",defaultValue:""},{id:"output-directory",name:"Output directory",category:["Directories"],type:"text",defaultValue:""}],V1=10080*60*1e3,Al=Mt("versionCompatibility",()=>{const e=as(),o=ie(),t=k(()=>ru.app_version),s=k(()=>e.systemStats?.system?.comfyui_version??""),a=k(()=>e.systemStats?.system?.required_frontend_version??""),l=k(()=>!t.value||!a.value||!Ot.valid(t.value)||!Ot.valid(a.value)?!1:Ot.gt(a.value,t.value)),i=k(()=>!1),r=k(()=>l.value),u=k(()=>!t.value||!s.value||!a.value?null:`${t.value}-${s.value}-${a.value}`),d=ai("comfy.versionMismatch.dismissals",{},localStorage,{serializer:{read:n(y=>{try{return JSON.parse(y)}catch{return{}}},"read"),write:n(y=>JSON.stringify(y),"write")}}),m=k(()=>{if(!u.value)return!1;const y=d.value[u.value];return y?Date.now()<y:!1}),g=k(()=>{const y=o.get("Comfy.VersionCompatibility.DisableWarnings");return r.value&&!m.value&&!y}),c=k(()=>l.value?{type:"outdated",frontendVersion:t.value,requiredVersion:a.value}:null);async function b(){e.systemStats||await xa(e.isInitialized)}n(b,"checkVersionCompatibility");function w(){if(!u.value)return;const y=Date.now()+V1;d.value={...d.value,[u.value]:y}}n(w,"dismissWarning");async function v(){await b()}return n(v,"initialize"),{frontendVersion:t,backendVersion:s,requiredFrontendVersion:a,hasVersionMismatch:r,shouldShowWarning:g,warningMessage:c,isFrontendOutdated:l,isFrontendNewer:i,checkVersionCompatibility:b,dismissWarning:w,initialize:v}});function R1(e={}){const{immediate:o=!1}=e,{t}=pe(),s=$t(),a=Al();let l=!1;const i=n(()=>{if(l)return;const r=a.warningMessage;if(!r)return;const u=t("g.frontendOutdated",{frontendVersion:r.frontendVersion,requiredVersion:r.requiredVersion}),d=t("g.versionMismatchWarningMessage",{warning:t("g.versionMismatchWarning"),detail:u});s.addAlert(d),l=!0,a.dismissWarning()},"showWarning");return Ve(()=>{o&&xo(()=>a.shouldShowWarning,()=>{i()},{immediate:!0,once:!0})}),{showWarning:i,shouldShowWarning:k(()=>a.shouldShowWarning),dismissWarning:a.dismissWarning,hasVersionMismatch:k(()=>a.hasVersionMismatch)}}n(R1,"useFrontendVersionMismatchWarning");function W1(){const e=il(),o=yo();let t=!1,s=0;Ce.addEventListener("graphChanged",()=>{o.mode==="change"&&(s?t=!0:(t=!1,K.queuePrompt(0,o.batchCount),s++))}),e.$subscribe(async()=>{s=e.count,!s&&!K.lastExecutionError&&(o.mode==="instant"||o.mode==="change"&&t)&&(t=!1,await K.queuePrompt(0,o.batchCount))},{detached:!0})}n(W1,"setupAutoQueueHandler");const z1={class:"absolute w-full h-full"},B1={class:"workflow-tabs-container pointer-events-auto h-9.5 w-full"},F1={class:"flex h-full items-center"},U1={class:"sidebar-content-container h-full w-full overflow-x-hidden overflow-y-auto border-r-1 border-node-component-border"},G1=["src"],j1={key:0,class:"pointer-events-none object-contain flex-1 max-h-full brightness-50 opacity-10",src:cu},H1={class:"actionbar-container flex h-12 items-center rounded-lg border border-[var(--interface-stroke)] p-2 gap-2 bg-comfy-menu-bg justify-end"},q1={class:"rounded-lg border p-2 gap-2 h-full border-[var(--interface-stroke)] bg-comfy-menu-bg flex flex-col"},K1={class:"grow-1 flex justify-start flex-col overflow-y-auto contain-size *:max-h-100"},Q1={class:"p-4 pb-0 border-t border-node-component-border"},J1=q({__name:"LinearView",setup(e){const o=_o(),t=Se(),s=k(()=>{function m(g){const c=Sl(g,new Map),b=g.widgets?.map(w=>{const v=c(w);return v.callback=function(y){if(Ng(y))return w.value=y??void 0,w.callback?.(w.value)},v})??[];return{id:`${g.id}`,title:g.title,type:g.type,mode:0,selected:!1,executing:!1,widgets:b}}return n(m,"nodeToNodeData"),K.rootGraph.nodes.filter(g=>g.mode===0&&g.widgets?.length).map(m)}),{isLoggedIn:a}=io(),l=Ge(),i={options:{step2:1,precision:1,min:1,max:100},value:1,name:re("Number of generations"),type:"number"},{batchCount:r}=Fe(yo());async function u(m){const c="shiftKey"in m&&m.shiftKey?"Comfy.QueuePromptFront":"Comfy.QueuePrompt";r.value>1,await t.execute(c,{metadata:{subscribe_to_run:!1,trigger_source:"button"}})}n(u,"runButtonClick");function d(){window.open("https://support.comfy.org/hc/en-us/requests/new?ticket_form_id=40026345549204","_blank","noopener,noreferrer")}return n(d,"openFeedback"),(m,g)=>(f(),T("div",z1,[p("div",B1,[p("div",F1,[z(Nl),z(Tl)])]),z(C(Mn),{class:"h-[calc(100%-38px)] w-full bg-comfy-menu-secondary-bg",pt:{gutter:{class:"bg-transparent w-4 -mx-3"}}},{default:O(()=>[z(C(Tt),{size:1,class:"min-w-min bg-comfy-menu-bg"},{default:O(()=>[p("div",U1,[z(ds,{extension:C(uu)()},null,8,["extension"])])]),_:1}),z(C(Tt),{size:98,class:"flex flex-row overflow-y-auto flex-wrap min-w-min gap-4 m-4"},{default:O(()=>[(f(!0),T(le,null,we(C(o).latestOutput,c=>(f(),T("img",{key:c,class:"pointer-events-none object-contain flex-1 max-h-full",src:c},null,8,G1))),128)),C(o).latestOutput.length===0?(f(),T("img",j1)):R("",!0)]),_:1}),z(C(Tt),{size:1,class:"flex flex-col gap-1 p-1 min-w-min"},{default:O(()=>[p("div",H1,[z(X,{variant:"secondary",onClick:d},{default:O(()=>[Ie(B(C(re)("g.feedback")),1)]),_:1}),z(X,{variant:"secondary",class:"min-w-max",onClick:g[0]||(g[0]=c=>C(me)().linearMode=!1)},{default:O(()=>[Ie(B(C(re)("linearMode.openWorkflow"))+" ",1),g[3]||(g[3]=p("i",{class:"icon-[comfy--workflow]"},null,-1))]),_:1}),z(X,{variant:"inverted",onClick:g[1]||(g[1]=c=>C(ot)().exportWorkflow("workflow","workflow"))},{default:O(()=>[Ie(B(C(re)("linearMode.share")),1)]),_:1}),C(a)?(f(),G(gl,{key:0})):C(l)?(f(),G(hl,{key:1})):R("",!0)]),p("div",q1,[p("div",K1,[(f(!0),T(le,null,we(s.value,c=>(f(),G(ll,{key:c.id,"node-data":c,class:"border-b-1 border-node-component-border pt-1 pb-2 last:border-none"},null,8,["node-data"]))),128))]),p("div",Q1,[z(bu,{modelValue:C(r),"onUpdate:modelValue":g[2]||(g[2]=c=>it(r)?r.value=c:null),widget:i,class:"*:[.min-w-56]:basis-0"},null,8,["modelValue"]),z(X,{class:"w-full mt-4",onClick:u},{default:O(()=>[g[4]||(g[4]=p("i",{class:"icon-[lucide--play]"},null,-1)),Ie(" "+B(C(re)("menu.run")),1)]),_:1})])])]),_:1})]),_:1})]))}}),Y1={class:"comfyui-body grid h-full w-full overflow-hidden"},X1=q({__name:"GraphView",setup(e){W1(),L1(),k1();const{t:o}=pe(),t=zt(),s=ie(),a=Ye(),l=Wa(),i=ut(),r=_t(),u=Ga(),d=Al(),m=L(null),{linearMode:g}=Fe(me());Ha(),ne(()=>i.completedActivePalette,$=>{const P="dark-theme";$.light_theme?document.body.classList.remove(P):document.body.classList.add(P),Ge()&&ho().changeTheme({color:"rgba(0, 0, 0, 0)",symbolColor:$.colors.comfy_base["input-text"]})},{immediate:!0}),Ge()&&ne(()=>r.tasks,($,P)=>{const F=new Set(P.filter(U=>U.isRunning).map(U=>U.promptId));$.filter(U=>F.has(U.promptId)&&U.isHistory).forEach(U=>{ho().Events.incrementUserProperty(`execution:${U.displayStatus.toLowerCase()}`,1),ho().Events.trackEvent("execution",{status:U.displayStatus.toLowerCase()})})},{deep:!0}),be(()=>{const $=s.get("Comfy.TextareaWidget.FontSize");document.documentElement.style.setProperty("--comfy-textarea-font-size",`${$}px`)}),be(()=>{const $=s.get("Comfy.TreeExplorer.ItemPadding");document.documentElement.style.setProperty("--comfy-tree-explorer-item-padding",`${$}px`)}),be(async()=>{const $=s.get("Comfy.Locale");if($)try{await du($),Ra.global.locale.value=$}catch(P){console.error(`Failed to switch to locale "${$}":`,P)}});const c=k(()=>s.get("Comfy.UseNewMenu"));be(()=>{c.value==="Disabled"?(K.ui.menuContainer.style.setProperty("display","block"),K.ui.restoreMenuPosition()):K.ui.menuContainer.style.setProperty("display","none")}),be(()=>{r.maxHistoryItems=s.get("Comfy.Queue.MaxHistoryItems")});const b=n(()=>{const $=E1();Se().registerCommands($),Ja().registerCoreMenuCommands(),gn().registerCoreKeybindings(),qo().registerCoreSidebarTabs(),so().registerCoreBottomPanelTabs(),K.extensionManager=tt()},"init"),w=il(),v=qo(),y=n(async $=>{w.update($),await r.update(),v.activeSidebarTabId==="assets"&&await u.updateHistory()},"onStatus"),x=n(async()=>{await r.update(),v.activeSidebarTabId==="assets"&&await u.updateHistory()},"onExecutionSuccess"),_={severity:"error",summary:o("g.reconnecting")},h=n(()=>{s.get("Comfy.Toast.DisableReconnectingToast")||(t.remove(_),t.add(_))},"onReconnecting"),S=n(()=>{s.get("Comfy.Toast.DisableReconnectingToast")||(t.remove(_),t.add({severity:"success",summary:o("g.reconnected"),life:2e3}))},"onReconnected");Ve(()=>{Ce.addEventListener("status",y),Ce.addEventListener("execution_success",x),Ce.addEventListener("reconnecting",h),Ce.addEventListener("reconnected",S),a.bindExecutionEvents(),l.setup();try{b(),m.value?.prepend(K.ui.menuContainer)}catch($){console.error("Failed to init ComfyUI frontend",$)}}),vt(()=>{Ce.removeEventListener("status",y),Ce.removeEventListener("execution_success",x),Ce.removeEventListener("reconnecting",h),Ce.removeEventListener("reconnected",S),a.unbindExecutionEvents(),l.teardown()}),Le(window,"keydown",gn().keybindHandler);const{wrapWithErrorHandling:M,wrapWithErrorHandlingAsync:I}=Bt();R1({immediate:!0}),Re(()=>{d.initialize().catch($=>{console.warn("Version compatibility check failed:",$)})});const N=n(()=>{fl(()=>{M(gn().registerUserKeybindings)(),M(yu().loadServerConfig)(O1,s.get("Comfy.Server.ServerConfigValues")),I(pu().loadModelFolders)(),I(ss().loadNodeFrequencies)(),ht().nodeSearchService.searchNode("")},1e3)},"onGraphReady");return($,P)=>(f(),T(le,null,[p("div",Y1,[P[0]||(P[0]=p("div",{id:"comfyui-body-top",class:"comfyui-body-top"},null,-1)),P[1]||(P[1]=p("div",{id:"comfyui-body-bottom",class:"comfyui-body-bottom"},null,-1)),P[2]||(P[2]=p("div",{id:"comfyui-body-left",class:"comfyui-body-left"},null,-1)),P[3]||(P[3]=p("div",{id:"comfyui-body-right",class:"comfyui-body-right"},null,-1)),ce(p("div",{id:"graph-canvas-container",ref_key:"graphCanvasContainerRef",ref:m,class:"graph-canvas-container"},[z(g1,{onReady:N})],512),[[Qe,!C(g)]]),C(g)?(f(),G(J1,{key:0})):R("",!0)]),z(nd),z(b1),C(Ge)()?R("",!0):(f(),G(ld,{key:0})),z(ad)],64))}}),Z1=Ee(X1,[["__scopeId","data-v-e9da179e"]]),dk=Object.freeze(Object.defineProperty({__proto__:null,default:Z1},Symbol.toStringTag,{value:"Module"}));export{dk as G,Xc as _,td as a,gd as g};
|
|
16
|
+
//# sourceMappingURL=GraphView-C_FQc1Au.js.map
|