comfyui-frontend-package 1.38.2__py3-none-any.whl → 1.38.3__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-C7253TdA.js → AboutPanel-CYH8kZrG.js} +2 -2
- comfyui_frontend_package/static/assets/{AboutPanel-C7253TdA.js.map → AboutPanel-CYH8kZrG.js.map} +1 -1
- comfyui_frontend_package/static/assets/{AudioPreviewPlayer-DgSsFFU7.js → AudioPreviewPlayer-BwJepJEw.js} +2 -2
- comfyui_frontend_package/static/assets/{AudioPreviewPlayer-DgSsFFU7.js.map → AudioPreviewPlayer-BwJepJEw.js.map} +1 -1
- comfyui_frontend_package/static/assets/{ComfyQueueButton-DriR7JtM.js → ComfyQueueButton-BM8zaTn_.js} +2 -2
- comfyui_frontend_package/static/assets/{ComfyQueueButton-DriR7JtM.js.map → ComfyQueueButton-BM8zaTn_.js.map} +1 -1
- comfyui_frontend_package/static/assets/{ExtensionPanel-yJP3r-dq.js → ExtensionPanel-CkIkopXr.js} +2 -2
- comfyui_frontend_package/static/assets/{ExtensionPanel-yJP3r-dq.js.map → ExtensionPanel-CkIkopXr.js.map} +1 -1
- comfyui_frontend_package/static/assets/{GraphView-D-tZ3xO5.css → GraphView-CoiT3fdb.css} +1 -1
- comfyui_frontend_package/static/assets/GraphView-Djp0ICHX.js +15 -0
- comfyui_frontend_package/static/assets/GraphView-Djp0ICHX.js.map +1 -0
- comfyui_frontend_package/static/assets/{KeybindingPanel-f7VKBCyl.js → KeybindingPanel-5iNg_eid.js} +2 -2
- comfyui_frontend_package/static/assets/{KeybindingPanel-f7VKBCyl.js.map → KeybindingPanel-5iNg_eid.js.map} +1 -1
- comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-Bwob1r0X.js +2 -0
- comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-Bwob1r0X.js.map +1 -0
- comfyui_frontend_package/static/assets/{LegacyCreditsPanel-e57J4OZv.js → LegacyCreditsPanel-D28HHk-A.js} +2 -2
- comfyui_frontend_package/static/assets/{LegacyCreditsPanel-e57J4OZv.js.map → LegacyCreditsPanel-D28HHk-A.js.map} +1 -1
- comfyui_frontend_package/static/assets/{Load3D-DYW1gw8I.js → Load3D-CPNYDT4-.js} +2 -2
- comfyui_frontend_package/static/assets/Load3D-CPNYDT4-.js.map +1 -0
- comfyui_frontend_package/static/assets/{Load3D.vue_vue_type_script_setup_true_lang-BLcsvL5E.js → Load3D.vue_vue_type_script_setup_true_lang-KEzORqB0.js} +2 -2
- comfyui_frontend_package/static/assets/{Load3D.vue_vue_type_script_setup_true_lang-BLcsvL5E.js.map → Load3D.vue_vue_type_script_setup_true_lang-KEzORqB0.js.map} +1 -1
- comfyui_frontend_package/static/assets/{Media3DTop-D77j8ukJ.js → Media3DTop-CQp4nFvB.js} +2 -2
- comfyui_frontend_package/static/assets/{Media3DTop-D77j8ukJ.js.map → Media3DTop-CQp4nFvB.js.map} +1 -1
- comfyui_frontend_package/static/assets/{ServerConfigPanel-CQPgIsZk.js → ServerConfigPanel-B3WCmowi.js} +2 -2
- comfyui_frontend_package/static/assets/{ServerConfigPanel-CQPgIsZk.js.map → ServerConfigPanel-B3WCmowi.js.map} +1 -1
- comfyui_frontend_package/static/assets/{SubscriptionRequiredDialogContent-DtxMOWxy.js → SubscriptionRequiredDialogContent-JgqOjXs3.js} +2 -2
- comfyui_frontend_package/static/assets/{SubscriptionRequiredDialogContent-DtxMOWxy.js.map → SubscriptionRequiredDialogContent-JgqOjXs3.js.map} +1 -1
- comfyui_frontend_package/static/assets/{UserPanel-BPwKKP_j.js → UserPanel-B5k84B9y.js} +2 -2
- comfyui_frontend_package/static/assets/{UserPanel-BPwKKP_j.js.map → UserPanel-B5k84B9y.js.map} +1 -1
- comfyui_frontend_package/static/assets/{UserSelectView-DNaXeKx4.js → UserSelectView-R_nCWiDS.js} +2 -2
- comfyui_frontend_package/static/assets/{UserSelectView-DNaXeKx4.js.map → UserSelectView-R_nCWiDS.js.map} +1 -1
- comfyui_frontend_package/static/assets/{ValueControlPopover-kd7h8GFO.js → ValueControlPopover-BqA-EaFY.js} +2 -2
- comfyui_frontend_package/static/assets/{ValueControlPopover-kd7h8GFO.js.map → ValueControlPopover-BqA-EaFY.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetAudioUI-B-Ra7X5I.js → WidgetAudioUI-Bu3u9PBZ.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetAudioUI-B-Ra7X5I.js.map → WidgetAudioUI-Bu3u9PBZ.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetButton-BQWWeE_x.js → WidgetButton-CS0lZIN_.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetButton-BQWWeE_x.js.map → WidgetButton-CS0lZIN_.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetColorPicker-4E2rnL8u.js → WidgetColorPicker-CQ_vqexP.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetColorPicker-4E2rnL8u.js.map → WidgetColorPicker-CQ_vqexP.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetGalleria-DaEjYhLq.js → WidgetGalleria-CE2__qNK.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetGalleria-DaEjYhLq.js.map → WidgetGalleria-CE2__qNK.js.map} +1 -1
- comfyui_frontend_package/static/assets/WidgetInputNumber-CR_vNT3l.js +2 -0
- comfyui_frontend_package/static/assets/WidgetInputNumber-CR_vNT3l.js.map +1 -0
- comfyui_frontend_package/static/assets/{WidgetInputNumber.vue_vue_type_script_setup_true_lang-CdvBpGed.js → WidgetInputNumber.vue_vue_type_script_setup_true_lang-rPX1TIkC.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetInputNumber.vue_vue_type_script_setup_true_lang-CdvBpGed.js.map → WidgetInputNumber.vue_vue_type_script_setup_true_lang-rPX1TIkC.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetInputText-B2YoBI4Y.js → WidgetInputText-NnOJku4t.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetInputText-B2YoBI4Y.js.map → WidgetInputText-NnOJku4t.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetLayoutField.vue_vue_type_script_setup_true_lang-CYDaxuge.js → WidgetLayoutField.vue_vue_type_script_setup_true_lang-BrNsu13j.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetLayoutField.vue_vue_type_script_setup_true_lang-CYDaxuge.js.map → WidgetLayoutField.vue_vue_type_script_setup_true_lang-BrNsu13j.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetLegacy-DgBI3-l2.js → WidgetLegacy-3d5GSSgo.js} +2 -2
- comfyui_frontend_package/static/assets/WidgetLegacy-3d5GSSgo.js.map +1 -0
- comfyui_frontend_package/static/assets/{WidgetMarkdown-Bqcf7Vpy.js → WidgetMarkdown-BTfwNVeV.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetMarkdown-Bqcf7Vpy.js.map → WidgetMarkdown-BTfwNVeV.js.map} +1 -1
- comfyui_frontend_package/static/assets/WidgetRecordAudio-X2n565MP.js +2 -0
- comfyui_frontend_package/static/assets/WidgetRecordAudio-X2n565MP.js.map +1 -0
- comfyui_frontend_package/static/assets/WidgetSelect-DsU3dEFm.js +2 -0
- comfyui_frontend_package/static/assets/WidgetSelect-DsU3dEFm.js.map +1 -0
- comfyui_frontend_package/static/assets/{WidgetSelect.vue_vue_type_script_setup_true_lang-Ua67RWUI.js → WidgetSelect.vue_vue_type_script_setup_true_lang-DLMXofNs.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetSelect.vue_vue_type_script_setup_true_lang-Ua67RWUI.js.map → WidgetSelect.vue_vue_type_script_setup_true_lang-DLMXofNs.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetTextarea-syfN9Olh.js → WidgetTextarea-BguNaUH3.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetTextarea-syfN9Olh.js.map → WidgetTextarea-BguNaUH3.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetToggleSwitch-C2c4CfAT.js → WidgetToggleSwitch-Cnenb1g4.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetToggleSwitch-C2c4CfAT.js.map → WidgetToggleSwitch-Cnenb1g4.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetWithControl.vue_vue_type_script_setup_true_lang-B5RYQ41H.js → WidgetWithControl.vue_vue_type_script_setup_true_lang-CWBg5k0x.js} +3 -3
- comfyui_frontend_package/static/assets/{WidgetWithControl.vue_vue_type_script_setup_true_lang-B5RYQ41H.js.map → WidgetWithControl.vue_vue_type_script_setup_true_lang-CWBg5k0x.js.map} +1 -1
- comfyui_frontend_package/static/assets/{audioService-CnSU5S1Z.js → audioService-C_4pv8R5.js} +2 -2
- comfyui_frontend_package/static/assets/{audioService-CnSU5S1Z.js.map → audioService-C_4pv8R5.js.map} +1 -1
- comfyui_frontend_package/static/assets/{audioUtils-BZ8b3tiu.js → audioUtils-CYVbzDGB.js} +2 -2
- comfyui_frontend_package/static/assets/{audioUtils-BZ8b3tiu.js.map → audioUtils-CYVbzDGB.js.map} +1 -1
- comfyui_frontend_package/static/assets/{index-BBvP0bLh.js → index-BST1SetX.js} +2 -2
- comfyui_frontend_package/static/assets/{index-BBvP0bLh.js.map → index-BST1SetX.js.map} +1 -1
- comfyui_frontend_package/static/assets/index-DOAA7WkP.css +1 -0
- comfyui_frontend_package/static/assets/{index-C5dKoXkW.js → index-DwjwpNvK.js} +2 -2
- comfyui_frontend_package/static/assets/index-DwjwpNvK.js.map +1 -0
- comfyui_frontend_package/static/assets/{index-Bc79VbnU.js → index-U7jagKl8.js} +22 -22
- comfyui_frontend_package/static/assets/index-U7jagKl8.js.map +1 -0
- comfyui_frontend_package/static/assets/{keybindingService-DOwK-S5D.js → keybindingService-6A6hKCpd.js} +2 -2
- comfyui_frontend_package/static/assets/{keybindingService-DOwK-S5D.js.map → keybindingService-6A6hKCpd.js.map} +1 -1
- comfyui_frontend_package/static/assets/{main-9V_ekXTj.js → main-7u-fkFqV.js} +4 -4
- comfyui_frontend_package/static/assets/main-7u-fkFqV.js.map +1 -0
- comfyui_frontend_package/static/assets/{main-Mk83jtey.js → main-BrRR7na1.js} +4 -4
- comfyui_frontend_package/static/assets/main-BrRR7na1.js.map +1 -0
- comfyui_frontend_package/static/assets/{main-QxfzWHY3.js → main-Btwx4xDf.js} +5 -5
- comfyui_frontend_package/static/assets/main-Btwx4xDf.js.map +1 -0
- comfyui_frontend_package/static/assets/{main-D8WRsxlG.js → main-CU-38qC-.js} +3 -3
- comfyui_frontend_package/static/assets/main-CU-38qC-.js.map +1 -0
- comfyui_frontend_package/static/assets/{main-DdPAQm8u.js → main-CZbK9-kR.js} +4 -4
- comfyui_frontend_package/static/assets/main-CZbK9-kR.js.map +1 -0
- comfyui_frontend_package/static/assets/{main-IIi2nOrM.js → main-Cv05dk1q.js} +4 -4
- comfyui_frontend_package/static/assets/main-Cv05dk1q.js.map +1 -0
- comfyui_frontend_package/static/assets/{main-Be2ivsXL.js → main-DVNhdlF2.js} +4 -6
- comfyui_frontend_package/static/assets/main-DVNhdlF2.js.map +1 -0
- comfyui_frontend_package/static/assets/{main-DnlhxsrE.js → main-DckcRPaY.js} +3 -3
- comfyui_frontend_package/static/assets/main-DckcRPaY.js.map +1 -0
- comfyui_frontend_package/static/assets/{main-B992pnxN.js → main-DeynLPZA.js} +4 -4
- comfyui_frontend_package/static/assets/main-DeynLPZA.js.map +1 -0
- comfyui_frontend_package/static/assets/{main-AFY0Q5Cd.js → main-DtCc3tTY.js} +4 -4
- comfyui_frontend_package/static/assets/main-DtCc3tTY.js.map +1 -0
- comfyui_frontend_package/static/assets/{main-QbQAnNpJ.js → main-apejL0E_.js} +4 -4
- comfyui_frontend_package/static/assets/main-apejL0E_.js.map +1 -0
- comfyui_frontend_package/static/index.html +1 -1
- {comfyui_frontend_package-1.38.2.dist-info → comfyui_frontend_package-1.38.3.dist-info}/METADATA +1 -1
- {comfyui_frontend_package-1.38.2.dist-info → comfyui_frontend_package-1.38.3.dist-info}/RECORD +105 -105
- comfyui_frontend_package/static/assets/GraphView-Dwrm8D3J.js +0 -15
- comfyui_frontend_package/static/assets/GraphView-Dwrm8D3J.js.map +0 -1
- comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-CX9YtPlM.js +0 -2
- comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-CX9YtPlM.js.map +0 -1
- comfyui_frontend_package/static/assets/Load3D-DYW1gw8I.js.map +0 -1
- comfyui_frontend_package/static/assets/WidgetInputNumber-u4JzBngV.js +0 -2
- comfyui_frontend_package/static/assets/WidgetInputNumber-u4JzBngV.js.map +0 -1
- comfyui_frontend_package/static/assets/WidgetLegacy-DgBI3-l2.js.map +0 -1
- comfyui_frontend_package/static/assets/WidgetRecordAudio-hHbaGdj1.js +0 -2
- comfyui_frontend_package/static/assets/WidgetRecordAudio-hHbaGdj1.js.map +0 -1
- comfyui_frontend_package/static/assets/WidgetSelect-Cv4W8ECC.js +0 -2
- comfyui_frontend_package/static/assets/WidgetSelect-Cv4W8ECC.js.map +0 -1
- comfyui_frontend_package/static/assets/index-Bc79VbnU.js.map +0 -1
- comfyui_frontend_package/static/assets/index-C5dKoXkW.js.map +0 -1
- comfyui_frontend_package/static/assets/index-gxCJ3H4T.css +0 -1
- comfyui_frontend_package/static/assets/main-9V_ekXTj.js.map +0 -1
- comfyui_frontend_package/static/assets/main-AFY0Q5Cd.js.map +0 -1
- comfyui_frontend_package/static/assets/main-B992pnxN.js.map +0 -1
- comfyui_frontend_package/static/assets/main-Be2ivsXL.js.map +0 -1
- comfyui_frontend_package/static/assets/main-D8WRsxlG.js.map +0 -1
- comfyui_frontend_package/static/assets/main-DdPAQm8u.js.map +0 -1
- comfyui_frontend_package/static/assets/main-DnlhxsrE.js.map +0 -1
- comfyui_frontend_package/static/assets/main-IIi2nOrM.js.map +0 -1
- comfyui_frontend_package/static/assets/main-Mk83jtey.js.map +0 -1
- comfyui_frontend_package/static/assets/main-QbQAnNpJ.js.map +0 -1
- comfyui_frontend_package/static/assets/main-QxfzWHY3.js.map +0 -1
- {comfyui_frontend_package-1.38.2.dist-info → comfyui_frontend_package-1.38.3.dist-info}/WHEEL +0 -0
- {comfyui_frontend_package-1.38.2.dist-info → comfyui_frontend_package-1.38.3.dist-info}/top_level.txt +0 -0
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SubscriptionRequiredDialogContent-DtxMOWxy.js","./index-Bc79VbnU.js","./vendor-primevue-Cif--Rbw.js","./vendor-other-Dsj-QuOx.js","./vendor-other-DYX1NpEr.css","./vendor-vue-DNQSPQQ2.js","./vendor-reka-ui-WjwjFuZo.js","./vendor-xterm-CWYFmgbN.js","./vendor-xterm-xj0gfbX3.css","./vendor-three-ByuY8CdW.js","./vendor-tiptap-YMjM2h-Z.js","./index-gxCJ3H4T.css","./UserAvatar.vue_vue_type_script_setup_true_lang-BvnQQTOP.js","./LazyImage.vue_vue_type_script_setup_true_lang-CX9YtPlM.js","./index-BBvP0bLh.js","./keybindingService-DOwK-S5D.js","./serverConfigStore-BJQLZ9Iv.js","./WidgetInputNumber.vue_vue_type_script_setup_true_lang-CdvBpGed.js","./widgetPropFilter-CygYoMQt.js","./WidgetLayoutField.vue_vue_type_script_setup_true_lang-CYDaxuge.js","./WidgetWithControl.vue_vue_type_script_setup_true_lang-B5RYQ41H.js","./WidgetInputNumber-rqpFMwbY.css","./SubscriptionRequiredDialogContent-C1UryadQ.css","./ComfyQueueButton-DriR7JtM.js","./ComfyQueueButton-Chw03MdC.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
var wi=Object.defineProperty;var n=(e,o)=>wi(e,"name",{value:o,configurable:!0});import{c5 as Ke,r as L,E as w,a2 as j,eS as el,i as tl,eE as mo,w as le,c as _,d as c,l as pe,z as E,e as p,v as et,k as M,s as q,a8 as d,q as A,p as ge,T as zo,j as O,u as V,h as Ne,F as ee,y as we,A as Ce,dk as go,dl as qt,eT as ki,eU as ol,m as tt,D as bs,I as ke,G as be,L as qe,eV as na,ea as Qe,a0 as Jn,eW as Ci,J as co,eF as vo,M as Bo,bV as je,dN as nt,dY as nl,n as We,W as xe,o as Re,dm as sa,eX as xi,dJ as At,dD as Ee,eB as Si,d9 as oo,dM as Cn,eY as _i,e1 as sl,a as Xn,eZ as al,f as ll,_ as xt,x as kt,c_ as il,d5 as Ft,dR as rl,t as po,d6 as ws,dG as st,eC as Ti,e_ as ho,ec as Nt,c6 as aa,e$ as $i,dd as xn,b as ul,K as ks,f0 as dl,f1 as Zn,f2 as Ni,ap as mn,f3 as Ii,dH as Pi,d$ as Mi,d4 as Di,a3 as Ai,B as Li,dL as Cs,dE as Sn,f4 as Ei,dF as Ri,e8 as cl,e2 as Vi,bY as Oi,g as la,ab as pl,e9 as Wi,dB as zi,e7 as fl,f5 as Bi,eP as Fi,ew as Ui,f6 as Gi,f7 as Hi,f8 as ji,f9 as no}from"./vendor-other-Dsj-QuOx.js";import{d as Vt,b as de,s as Be,l as ml,m as gl}from"./vendor-vue-DNQSPQQ2.js";import{b as qi,p as ot,_ as xs,u as Qt,Z as vl,$ as es,a0 as Dt,a1 as Ss,w as io,a2 as _s,e as Ki,a3 as ia,a4 as Qi,a as Ts,q as ra,M as Yi,O as Ji,P as Xi,J as hl,a5 as Zi,v as yl,o as bl,L as wl,i as er,R as jo,c as tr,y as kl,g as or,a6 as nr,a7 as sr,m as ar,k as No,a8 as lr}from"./vendor-primevue-Cif--Rbw.js";import{s as Le,n as He,a as Ie,i as Cl,b as Lt,c as te,_ as Y,d as Ve,S as _n,t as se,u as gt,e as ie,f as Rt,g as ir,E as Tn,h as ua,V as rr,j as ts,k as $s,l as Ns,m as Fo,o as os,p as rt,q as lt,r as J,v as ur,w as Ae,x as ut,y as gn,z as yo,A as Te,B as dt,C as it,D as dr,F as Is,G as xl,H as It,I as Sl,J as cr,K as Ps,L as he,M as pr,N as da,O as ca,P as Ot,Q as fr,R as _l,T as pa,U as fa,W as mr,X as gr,Y as Yt,Z as vr,$ as hr,a0 as yr,a1 as br,a2 as Ms,a3 as bo,a4 as wo,a5 as Tl,a6 as $l,a7 as wr,a8 as kr,a9 as Nl,aa as Ds,ab as Xe,ac as Cr,ad as wt,ae as ns,af as As,ag as ro,ah as xr,ai as Po,aj as Sr,ak as _r,al as fo,am as De,an as Il,ao as Tr,ap as St,aq as $r,ar as Nr,as as ko,at as ye,au as Ir,av as Pr,aw as Ut,ax as Je,ay as nn,az as Mr,aA as Jt,aB as Kt,aC as Dr,aD as $n,aE as Ls,aF as vn,aG as Co,aH as Ct,aI as Ht,aJ as Ar,aK as Et,aL as ze,aM as Ao,aN as Pl,aO as Nn,aP as Lr,aQ as Er,aR as Ml,aS as Rr,aT as Vr,aU as ma,aV as Or,aW as Wr,aX as xo,aY as In,aZ as Lo,a_ as zr,a$ as Es,b0 as ss,b1 as Dl,b2 as Br,b3 as Fr,b4 as Ur,b5 as Gr,b6 as hn,b7 as Rs,b8 as Gt,b9 as Hr,ba as Dn,bb as Uo,bc as jr,bd as qr,be as Kr,bf as Qr,bg as Yr,bh as Jr,bi as Vs,bj as Xr,bk as ga,bl as Zr,bm as eu,bn as tu,bo as ou,bp as nu,bq as $t,br as Al,bs as Os,bt as Ll,bu as Mo,bv as El,bw as Rl,bx as Vl,by as su,bz as au,bA as Ol,bB as lu,bC as iu,bD as ru,bE as Wl,bF as va,bG as uu,bH as du,bI as Ws,bJ as cu,bK as bt,bL as zl,bM as pu,bN as fu,bO as so,bP as mu,bQ as gu,bR as vu,bS as hu,bT as yu,bU as bu,bV as sn,bW as wu,bX as Bl,bY as An,bZ as ku,b_ as Cu,b$ as Ln,c0 as Fl,c1 as ha,c2 as xu,c3 as Su,c4 as Go,c5 as En,c6 as _u,c7 as Tu,c8 as $u,c9 as ya,ca as as,cb as ba,cc as wa,cd as Nu,ce as ls,cf as Iu,cg as Pu,ch as Mu,ci as Du,cj as Au,ck as ka,cl as Lu,cm as Ca,cn as Eu,co as Ru,cp as xa,cq as Sa,cr as Vu,cs as Ou,ct as Wu,cu as Do,cv as zu,cw as Bu,cx as Fu,cy as Uu,cz as Gu,cA as Hu,cB as Ul,cC as ju,cD as qu,cE as Ku,cF as is,cG as Qu,cH as Yu,cI as Ju,cJ as Xu,cK as Zu,cL as ed,cM as td,cN as od,cO as nd,cP as sd}from"./index-Bc79VbnU.js";import{_ as Gl}from"./UserAvatar.vue_vue_type_script_setup_true_lang-BvnQQTOP.js";import{_ as yn,u as Hl,a as ad,b as Ho,c as ld,d as Eo,e as id}from"./LazyImage.vue_vue_type_script_setup_true_lang-CX9YtPlM.js";import{W as bn}from"./index-BBvP0bLh.js";import{u as Rn}from"./keybindingService-DOwK-S5D.js";import{u as rd}from"./serverConfigStore-BJQLZ9Iv.js";import{d as ud,e as dd,f as cd,g as pd,h as fd}from"./vendor-reka-ui-WjwjFuZo.js";import{_ as _a}from"./WidgetInputNumber.vue_vue_type_script_setup_true_lang-CdvBpGed.js";var jl=(e=>(e.Cloud="cloud",e.Local="local",e.Desktop="desktop",e.Mac="mac",e.Windows="windows",e))(jl||{});const qo=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 Ta(e,o){return`${e.toLowerCase().replace(/\s+/g,"-")}-${o.toLowerCase().replace(/\s+/g,"-")}`}n(Ta,"generateCategoryId");const ql=Vt("workflowTemplates",()=>{const e=Ke({}),o=Ke([]),t=Ke([]),a=L(!1),l=L(new Set),s=n(b=>g.value.find(T=>T.name===b),"getTemplateByName"),i=L(new Map),r=n((b,T)=>({...b,localizedTitle:Le(`templateWorkflows.template.${He(T)}.${He(b.name)}`,b.title??b.name),localizedDescription:Le(`templateWorkflows.templateDescription.${He(T)}.${He(b.name)}`,b.description)}),"addLocalizedFieldsToTemplate"),u=n((b,T)=>b.map($=>r($,T)),"localizeTemplateList"),m=n(b=>({...b,localizedTitle:Le(`templateWorkflows.category.${He(b.title)}`,b.title??b.moduleName),templates:u(b.templates,b.title)}),"localizeTemplateCategory"),f=n(()=>{const b=o.value.flatMap($=>$.templates.map(I=>({...r(I,$.title),sourceModule:$.moduleName}))),T=Object.entries(e.value).flatMap(([$,I])=>I.map(S=>({name:S,mediaType:"image",mediaSubtype:"jpg",description:S,sourceModule:$})));return{moduleName:"all",title:"All",localizedTitle:Le("templateWorkflows.category.All","All Templates"),templates:[...b,...T]}},"createAllCategory"),v=w(()=>{const b=[...o.value.map(m),...Object.entries(e.value).map(([$,I])=>({moduleName:$,title:$,localizedTitle:Le(`templateWorkflows.category.${He($)}`,$),templates:I.map(S=>({name:S,mediaType:"image",mediaSubtype:"jpg",description:S}))}))];return[{label:Le("templateWorkflows.category.ComfyUI Examples","ComfyUI Examples"),modules:[f(),...b.filter($=>$.moduleName==="default")]},...Object.keys(e.value).length>0?[{label:Le("templateWorkflows.category.Custom Nodes","Custom Nodes"),modules:b.filter($=>$.moduleName!=="default")}]:[]]}),g=w(()=>{const b=[];return o.value.forEach($=>{$.templates.forEach(I=>{const S={...I,sourceModule:$.moduleName,category:$.title,categoryType:$.type,categoryGroup:$.category,isEssential:$.isEssential,isPartnerNode:I.openSource===!1,searchableText:[I.title||I.name,I.description||"",$.title,...I.tags||[],...I.models||[]].join(" ")};b.push(S)})}),Object.entries(e.value).forEach(([$,I])=>{I.forEach(S=>{const x={name:S,title:S,description:S,mediaType:"image",mediaSubtype:"jpg",sourceModule:$,category:"Extensions",categoryType:"extension",searchableText:`${S} ${$} extension`};b.push(x)})}),b.filter($=>!$.requiresCustomNodes?.length)}),y=n(b=>{if(b==="all")return g.value;if(b.startsWith("basics-"))return g.value.filter($=>$.isEssential&&$.category?.toLowerCase().replace(/\s+/g,"-")===b.replace("basics-",""));if(b==="popular")return g.value;if(b==="partner-nodes")return g.value.filter($=>$.isPartnerNode);if(b.startsWith("extension-")){const $=b.replace("extension-","");return g.value.filter(I=>I.sourceModule===$)}const T=i.value.get(b);return T?g.value.filter($=>!(T.category&&$.category!==T.category||T.categoryGroup&&$.categoryGroup!==T.categoryGroup)):g.value},"filterTemplatesByCategory"),k=w(()=>{if(!a.value)return[];const b=[];i.value.clear(),b.push({id:"all",label:Le("templateWorkflows.category.All","All Templates"),icon:qo("all")}),b.push({id:"popular",label:Le("templateWorkflows.category.Popular","Popular"),icon:"icon-[lucide--flame]"});const T=o.value.filter(x=>x.isEssential&&x.templates.length>0);T.length>0&&T.forEach(x=>{const N=x.icon,P=x.title??"Getting Started",D=Ta("basics",x.title);b.push({id:D,label:Le(`templateWorkflows.category.${He(P)}`,P),icon:N||qo(x.type||"getting-started")})});const $=new Map;if(o.value.forEach(x=>{if(x.isEssential)return;const N=x.category,P=x.icon;if(N){$.has(N)||$.set(N,{title:N,items:[]});const D=$.get(N),W=Ta(N,x.title);i.value.set(W,{category:x.title,categoryGroup:N}),D.items.push({id:W,label:Le(`templateWorkflows.category.${He(x.title)}`,x.title),icon:P||qo(x.type||"default")})}}),$.forEach((x,N)=>{x.items.length>0&&b.push({title:Le(`templateWorkflows.category.${He(N)}`,N.split(" ").map(P=>P.charAt(0).toUpperCase()+P.slice(1).toLowerCase()).join(" ")),items:x.items})}),g.value.filter(x=>x.isPartnerNode).length>0&&b.push({id:"partner-nodes",label:Le("templateWorkflows.category.Partner Nodes","Partner Nodes"),icon:"icon-[lucide--handshake]"}),g.value.filter(x=>x.sourceModule!=="default").length>0){const N=Array.from(new Set(g.value.filter(P=>P.sourceModule!=="default").map(P=>P.sourceModule))).sort().map(P=>({id:`extension-${P}`,label:Le(`templateWorkflows.category.${He(P)}`,P),icon:qo("extensions")}));b.push({title:Le("templateWorkflows.category.Extensions","Extensions"),items:N,collapsible:!0})}return b});async function C(){try{if(!a.value){e.value=await Ie.getWorkflowTemplates();const b=Cl.global.locale.value,[T,$]=await Promise.all([Ie.getCoreWorkflowTemplates(b),Lt&&b!=="en"?Ie.getCoreWorkflowTemplates("en"):Promise.resolve([])]);o.value=T,t.value=$;const I=o.value.flatMap(x=>x.templates.map(N=>N.name)),S=Object.values(e.value).flat();l.value=new Set([...I,...S]),a.value=!0}}catch(b){console.error("Error fetching workflow templates:",b)}}n(C,"loadWorkflowTemplates");function h(b){if(t.value.length===0)return null;for(const T of t.value){const $=T.templates.find(I=>I.name===b);if($)return{tags:$.tags,category:T.title,useCase:$.useCase,models:$.models,license:$.license}}return null}return n(h,"getEnglishMetadata"),{groupedTemplates:v,navGroupedTemplates:k,enhancedTemplates:g,filterTemplatesByCategory:y,isLoaded:a,loadWorkflowTemplates:C,knownTemplateNames:l,getTemplateByName:s,getEnglishMetadata:h}}),Pn=Symbol(),md={class:"base-widget-layout rounded-2xl overflow-hidden relative"},gd={class:"flex h-full w-full"},vd={class:"flex-1 flex bg-base-background"},hd={class:"flex h-full w-full flex-col"},yd={key:0,class:"w-full h-18 px-6 flex items-center justify-between gap-2"},bd={class:"flex flex-1 shrink-0 gap-2"},wd={class:"flex min-h-0 flex-1 flex-col"},kd={key:0,class:"text-xxl m-0 px-6 pt-2 pb-6 capitalize"},Cd={class:"min-h-0 flex-1 px-6 pt-0 pb-10 overflow-y-auto scrollbar-custom"},xd={key:0,class:"w-1/4 min-w-40 max-w-80"},Sd=j({__name:"BaseModalLayout",props:{contentTitle:{}},setup(e){const o={md:880},t={width:"w-1/3",minWidth:"min-w-40",maxWidth:"max-w-56"},a=el(),l=tl(Pn,()=>{}),i=mo(o).greater("md"),r=L(!0),u=L(!1),m=L(!1),f=w(()=>!!a.rightPanel);le(i,k=>{k||(m.value=!1)});const v=w(()=>i.value?r.value:m.value),g=n(()=>{i.value?r.value=!r.value:m.value=!m.value},"toggleLeftPanel"),y=n(()=>{u.value=!u.value},"toggleRightPanel");return(k,C)=>(c(),_("div",md,[pe(E(Y,{size:"icon",class:q(d(te)("absolute top-4 right-18 z-10","transition-opacity duration-200",{"opacity-0 pointer-events-none":u.value||!f.value})),onClick:y},{default:M(()=>C[0]||(C[0]=[p("i",{class:"icon-[lucide--panel-right] text-sm"},null,-1)])),_:1},8,["class"]),[[et,!u.value&&f.value]]),E(Y,{size:"lg",class:"absolute top-4 right-6 z-10 transition-opacity duration-200 w-10",onClick:d(l)},{default:M(()=>C[1]||(C[1]=[p("i",{class:"pi pi-times"},null,-1)])),_:1},8,["onClick"]),p("div",gd,[E(zo,{name:"slide-panel"},{default:M(()=>[k.$slots.leftPanel&&v.value?(c(),_("nav",{key:0,class:q([t.width,t.minWidth,t.maxWidth])},[ge(k.$slots,"leftPanel",{},void 0,!0)],2)):A("",!0)]),_:3}),p("div",vd,[p("div",hd,[k.$slots.header?(c(),_("header",yd,[p("div",bd,[d(i)?A("",!0):(c(),O(Y,{key:0,size:"icon",onClick:g},{default:M(()=>[p("i",{class:q(d(te)(v.value?"icon-[lucide--panel-left]":"icon-[lucide--panel-left-close]"))},null,2)]),_:1})),ge(k.$slots,"header",{},void 0,!0)]),ge(k.$slots,"header-right-area",{},void 0,!0),p("div",{class:q(d(te)("flex justify-end gap-2 w-0",f.value&&!u.value?"min-w-22":"min-w-10"))},[u.value&&f.value?(c(),O(Y,{key:0,size:"icon",onClick:y},{default:M(()=>C[2]||(C[2]=[p("i",{class:"icon-[lucide--panel-right-close]"},null,-1)])),_:1})):A("",!0)],2)])):A("",!0),p("main",wd,[ge(k.$slots,"contentFilter",{},void 0,!0),k.$slots.leftPanel?A("",!0):(c(),_("h2",kd,V(k.contentTitle),1)),p("div",Cd,[ge(k.$slots,"content",{},void 0,!0)])])]),f.value&&u.value?(c(),_("aside",xd,[ge(k.$slots,"rightPanel",{},void 0,!0)])):A("",!0)])])]))}}),zs=Ve(Sd,[["__scopeId","data-v-643fc509"]]),_d=j({__name:"NavIcon",props:{icon:{}},setup(e){return(o,t)=>(c(),_("i",{class:q([o.icon,"text-neutral text-sm shrink-0"])},null,2))}}),Td={key:0,class:"pt-0.5"},$d={key:1,class:"text-neutral icon-[lucide--folder] text-xs shrink-0"},$a=j({__name:"NavItem",props:{icon:{},active:{type:Boolean},onClick:{type:Function}},setup(e){const o=L(null),t=L(!1),a=n(()=>{o.value&&(t.value=o.value.scrollWidth>o.value.clientWidth+1)},"checkOverflow"),l=w(()=>o.value?.textContent??"");return(s,i)=>{const r=Ne("tooltip");return pe((c(),_("div",{class:q(["flex cursor-pointer items-start gap-2 rounded-md px-4 py-3 text-sm transition-colors text-base-foreground",s.active?"bg-interface-menu-component-surface-selected":"hover:bg-interface-menu-component-surface-hovered"]),role:"button",onMouseenter:a,onClick:i[0]||(i[0]=(...u)=>s.onClick&&s.onClick(...u))},[s.icon?(c(),_("div",Td,[E(_d,{icon:s.icon},null,8,["icon"])])):(c(),_("i",$d)),p("span",{ref_key:"textRef",ref:o,class:"min-w-0 truncate"},[ge(s.$slots,"default")],512)],34)),[[r,{value:l.value,disabled:!t.value,pt:{text:{class:"whitespace-nowrap"}}},void 0,{right:!0}]])}}}),Nd={class:"text-xs font-bold text-text-secondary uppercase"},Id=j({__name:"NavTitle",props:{title:{},modelValue:{type:Boolean,default:!1},collapsible:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:o}){const t=o,a=w({get:n(()=>e.modelValue,"get"),set:n(s=>t("update:modelValue",s),"set")}),l=n(()=>{a.value=!a.value},"toggleCollapse");return(s,i)=>(c(),_("div",{class:q(d(te)("flex items-center justify-between m-0 px-3 py-0 pt-5",s.collapsible&&"cursor-pointer select-none")),onClick:i[0]||(i[0]=r=>s.collapsible&&l())},[p("h3",Nd,V(s.title),1),s.collapsible?(c(),_("i",{key:0,class:q(d(te)("pi transition-transform duration-200 text-xs text-text-secondary ",a.value?"pi-chevron-right":"pi-chevron-down"))},null,2)):A("",!0)],2))}}),Pd={},Md={class:"flex h-16 items-center justify-between px-6"},Dd={class:"flex items-center gap-2 pl-1"},Ad={class:"text-neutral text-base font-bold"};function Ld(e,o){return c(),_("header",Md,[p("div",Dd,[ge(e.$slots,"icon",{},()=>[o[0]||(o[0]=p("i",{class:"text-neutral icon-[lucide--puzzle] text-base"},null,-1))]),p("h2",Ad,[ge(e.$slots,"default")])])])}n(Ld,"_sfc_render$2");const Ed=Ve(Pd,[["render",Ld]]),Rd={class:"flex h-full w-full flex-col bg-modal-panel-background"},Vd={class:"flex scrollbar-hide flex-1 flex-col gap-1 overflow-y-auto px-3 py-4"},Od={key:0,class:"flex flex-col gap-2"},Wd={key:1,class:"flex flex-col gap-2"},Bs=j({__name:"LeftSidePanel",props:{navItems:{default:n(()=>[],"default")},modelValue:{}},emits:["update:modelValue"],setup(e,{emit:o}){const t=o,a=L({}),l=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"),s=w({get:n(()=>e.modelValue??l(),"get"),set:n(i=>t("update:modelValue",i),"set")});return(i,r)=>(c(),_("div",Rd,[E(Ed,null,{icon:M(()=>[ge(i.$slots,"header-icon")]),default:M(()=>[ge(i.$slots,"header-title")]),_:3}),p("nav",Vd,[(c(!0),_(ee,null,we(i.navItems,(u,m)=>(c(),_(ee,{key:m},["items"in u?(c(),_("div",Od,[E(Id,{modelValue:a.value[u.title],"onUpdate:modelValue":n(f=>a.value[u.title]=f,"onUpdate:modelValue"),title:u.title,collapsible:u.collapsible},null,8,["modelValue","onUpdate:modelValue","title","collapsible"]),!u.collapsible||!a.value[u.title]?(c(!0),_(ee,{key:0},we(u.items,f=>(c(),O($a,{key:f.id,icon:f.icon,active:s.value===f.id,onClick:n(v=>s.value=f.id,"onClick")},{default:M(()=>[Ce(V(f.label),1)]),_:2},1032,["icon","active","onClick"]))),128)):A("",!0)])):(c(),_("div",Wd,[E($a,{icon:u.icon,active:s.value===u.id,onClick:n(f=>s.value=u.id,"onClick")},{default:M(()=>[Ce(V(u.label),1)]),_:2},1032,["icon","active","onClick"])]))],64))),128))])]))}});function zd(e){return w(()=>{const{minWidth:o,maxWidth:t}=e,a={};return o&&(a.minWidth=o),t&&(a.maxWidth=t),a})}n(zd,"usePopoverSizing");const Bd={class:"flex flex-col px-2 pt-2 pb-0"},Fd={key:1,class:"mt-2 flex items-center justify-between"},Ud={key:0,class:"px-1 text-sm text-base-foreground"},Gd={class:"text-sm"},Hd={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"},jd={key:0,class:"text-bold icon-[lucide--check] text-xs text-base-foreground"},jt=j({inheritAttrs:!1,__name:"MultiSelect",props:go({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=qt(e,"modelValue"),t=qt(e,"searchQuery"),{t:a}=de(),l=w(()=>o.value.length),s=zd({minWidth:e.popoverMinWidth,maxWidth:e.popoverMaxWidth}),i=ki(),r=w(()=>i.options||[]),u={fuseOptions:{keys:["name","value"],threshold:.3,includeScore:!1},matchAllWhenSearchEmpty:!0},{results:m}=ol(t,r,u),f=w(()=>{if(!t.value||t.value.trim()==="")return r.value;const v=m.value.map(y=>y.item);return[...o.value.filter(y=>!v.some(k=>k.value===y.value)),...v]});return(v,g)=>(c(),O(d(qi),tt({modelValue:o.value,"onUpdate:modelValue":g[2]||(g[2]=y=>o.value=y)},{...v.$attrs,options:f.value},{"option-label":"name",unstyled:"","max-selected-labels":0,pt:{root:n(({props:y})=>({class:d(te)("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",l.value>0?"border-node-component-border":"border-transparent","focus-within:border-node-component-border",{"opacity-60 cursor-default":y.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:v.showSearchBox||v.showSelectedCount||v.showClearButton?"block":"hidden"}),"header"),overlay:{class:d(te)("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(${v.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:y})=>({class:d(te)("flex gap-2 items-center h-10 px-2 rounded-lg cursor-pointer","hover:bg-secondary-background-hover",y?.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":v.label||d(a)("g.multiSelectDropdown"),role:"combobox","aria-expanded":!1,"aria-haspopup":"listbox",tabindex:0}),bs({value:M(()=>[p("span",Gd,V(v.label),1),l.value>0?(c(),_("span",Hd,V(l.value),1)):A("",!0)]),dropdownicon:M(()=>[g[4]||(g[4]=p("i",{class:"icon-[lucide--chevron-down] text-muted-foreground"},null,-1))]),option:M(y=>[p("div",{role:"button",class:"flex items-center gap-2 cursor-pointer",style:be(d(s))},[p("div",{class:q(["flex size-4 shrink-0 items-center justify-center rounded p-0.5 transition-all duration-200",y.selected?"bg-primary-background":"bg-secondary-background"])},[y.selected?(c(),_("i",jd)):A("",!0)],2),p("span",null,V(y.option.name),1)],4)]),_:2},[v.showSearchBox||v.showSelectedCount||v.showClearButton?{name:"header",fn:M(()=>[p("div",Bd,[v.showSearchBox?(c(),O(_n,{key:0,modelValue:t.value,"onUpdate:modelValue":g[0]||(g[0]=y=>t.value=y),class:q(v.showSelectedCount||v.showClearButton?"mb-2":""),"show-order":!0,"show-border":!0,"place-holder":v.searchPlaceholder},null,8,["modelValue","class","place-holder"])):A("",!0),v.showSelectedCount||v.showClearButton?(c(),_("div",Fd,[v.showSelectedCount?(c(),_("span",Ud,V(l.value>0?v.$t("g.itemsSelected",{selectedCount:l.value}):v.$t("g.itemSelected",{selectedCount:l.value})),1)):A("",!0),v.showClearButton?(c(),O(Y,{key:1,variant:"textonly",size:"md",onClick:g[1]||(g[1]=ke(y=>o.value=[],["stop"]))},{default:M(()=>[Ce(V(v.$t("g.clearAll")),1)]),_:1})):A("",!0)])):A("",!0),g[3]||(g[3]=p("div",{class:"my-4 h-px bg-border-default"},null,-1))])]),key:"0"}:void 0]),1040,["modelValue","pt","aria-label"]))}});function qd(e){const o=w(()=>{const l=qe(e).map(i=>{const r=i.name.split(".").pop();return r&&r!==i.name?r:null}).filter(i=>i!==null);return na(l,(i,r)=>i===r).sort().map(i=>({name:`.${i}`,value:i}))}),t=w(()=>{const l=qe(e).map(i=>i.user_metadata?.base_model).filter(i=>i!==void 0&&typeof i=="string");return na(l,(i,r)=>i===r).sort().map(i=>({name:i,value:i}))});return{availableFileFormats:o,availableBaseModels:t}}n(qd,"useAssetFilterOptions");const Kd={class:"flex gap-4 items-center justify-between px-6 pt-2 pb-6","data-component-id":"asset-filter-bar"},Qd={class:"flex gap-4 items-center","data-component-id":"asset-filter-bar-left"},Yd={class:"flex items-center","data-component-id":"asset-filter-bar-right"},Jd=j({__name:"AssetFilterBar",props:{assets:{default:n(()=>[],"default")},allAssets:{default:n(()=>[],"default")}},emits:["filterChange"],setup(e,{emit:o}){const a=[...[{name:se("assetBrowser.sortRecent"),value:"recent"},{name:se("assetBrowser.sortAZ"),value:"name-asc"},{name:se("assetBrowser.sortZA"),value:"name-desc"}]],l=[{name:se("assetBrowser.ownershipAll"),value:"all"},{name:se("assetBrowser.ownershipMyModels"),value:"my-models"},{name:se("assetBrowser.ownershipPublicModels"),value:"public-models"}],s=L([]),i=L([]),r=L("recent"),u=L("all"),{availableFileFormats:m,availableBaseModels:f}=qd(e.assets),v=w(()=>(e.allAssets.length?e.allAssets:e.assets).some(C=>C.is_immutable===!1)),g=o;function y(){g("filterChange",{fileFormats:s.value.map(k=>k.value),baseModels:i.value.map(k=>k.value),sortBy:r.value,ownership:u.value})}return n(y,"handleFilterChange"),(k,C)=>(c(),_("div",Kd,[p("div",Qd,[d(m).length>0?(c(),O(jt,{key:0,modelValue:s.value,"onUpdate:modelValue":[C[0]||(C[0]=h=>s.value=h),y],label:k.$t("assetBrowser.fileFormats"),options:d(m),class:"min-w-32","data-component-id":"asset-filter-file-formats"},null,8,["modelValue","label","options"])):A("",!0),d(f).length>0?(c(),O(jt,{key:1,modelValue:i.value,"onUpdate:modelValue":[C[1]||(C[1]=h=>i.value=h),y],label:k.$t("assetBrowser.baseModels"),options:d(f),class:"min-w-32","data-component-id":"asset-filter-base-models"},null,8,["modelValue","label","options"])):A("",!0),v.value?(c(),O(yn,{key:2,modelValue:u.value,"onUpdate:modelValue":[C[2]||(C[2]=h=>u.value=h),y],label:k.$t("assetBrowser.ownership"),options:l,class:"min-w-42","data-component-id":"asset-filter-ownership"},null,8,["modelValue","label"])):A("",!0)]),p("div",Yd,[E(yn,{modelValue:r.value,"onUpdate:modelValue":[C[3]||(C[3]=h=>r.value=h),y],label:k.$t("assetBrowser.sortBy"),options:a,class:"min-w-32","data-component-id":"asset-filter-sort"},{icon:M(()=>C[4]||(C[4]=[p("i",{class:"icon-[lucide--arrow-up-down]"},null,-1)])),_:1},8,["modelValue","label"])])]))}}),Xd={class:"relative inline-flex items-center"},Zd={class:"flex min-w-40 flex-col gap-2 p-2"},Fs=j({inheritAttrs:!1,__name:"MoreButton",props:{isVertical:{type:Boolean,default:!1}},emits:["menuOpened","menuClosed"],setup(e,{expose:o}){const t=L(!1),a=L();function l(){a.value?.hide()}return n(l,"hide"),o({hide:l,isOpen:t}),(s,i)=>(c(),_("div",Xd,[E(Y,tt({size:"icon",variant:"secondary"},s.$attrs,{onClick:a.value?.toggle}),{default:M(()=>[p("i",{class:q(d(te)(s.isVertical?"icon-[lucide--more-vertical]":"icon-[lucide--ellipsis]","text-sm"))},null,2)]),_:1},16,["onClick"]),E(d(ot),{ref_key:"popover",ref:a,"append-to":"body","auto-z-index":"",dismissable:"","close-on-escape":"",unstyled:"","base-z-index":1e3,pt:{root:{class:d(te)("absolute z-50")},content:{class:d(te)("mt-1 rounded-lg","bg-secondary-background text-base-foreground","shadow-lg")}},onShow:i[0]||(i[0]=()=>{t.value=!0,s.$emit("menuOpened")}),onHide:i[1]||(i[1]=()=>{t.value=!1,s.$emit("menuClosed")})},{default:M(()=>[p("div",Zd,[ge(s.$slots,"default",{close:l})])]),_:3},8,["pt"])]))}}),ec={class:"flex flex-col px-4 py-2 text-sm text-muted-foreground border-t border-border-default"},tc={key:0},oc=j({__name:"ConfirmBody",props:{promptText:{}},setup(e){const o=w(()=>qe(e.promptText));return(t,a)=>(c(),_("div",ec,[o.value?(c(),_("p",tc,V(o.value),1)):A("",!0)]))}}),nc={class:"w-full flex gap-2 justify-end px-2 pb-2"},sc=j({__name:"ConfirmFooter",props:{cancelText:{},confirmText:{},confirmClass:{},optionsDisabled:{}},emits:["cancel","confirm"],setup(e){const{t:o}=de(),t=w(()=>e.confirmText||o("g.confirm")),a=w(()=>e.cancelText||o("g.cancel")),l=w(()=>qe(e.optionsDisabled));return(s,i)=>(c(),_("section",nc,[E(Y,{disabled:l.value,variant:"textonly",autofocus:"",onClick:i[0]||(i[0]=r=>s.$emit("cancel"))},{default:M(()=>[Ce(V(a.value),1)]),_:1},8,["disabled"]),E(Y,{disabled:l.value,variant:"textonly",class:q(s.confirmClass),onClick:i[1]||(i[1]=r=>s.$emit("confirm"))},{default:M(()=>[Ce(V(t.value),1)]),_:1},8,["disabled","class"])]))}}),ac={class:"flex items-center gap-2 p-4 font-bold text-sm text-base-foreground font-inter"},lc={key:0,class:"flex-auto"},ic=j({__name:"ConfirmHeader",props:{title:{}},setup(e){return(o,t)=>(c(),_("div",ac,[o.title?(c(),_("span",lc,V(o.title),1)):A("",!0)]))}});function rc(e={}){const o=gt(),{headerProps:t,props:a,footerProps:l}=e;return o.showDialog({headerComponent:ic,component:oc,footerComponent:sc,headerProps:t,props:a,footerProps:l,dialogComponentProps:{pt:{header:"py-0! px-0!",content:"p-0!",footer:"p-0!"}}})}n(rc,"showConfirmDialog");const uc={class:"absolute left-2 bottom-2 flex flex-wrap justify-start gap-1"},dc=j({__name:"AssetBadgeGroup",props:{badges:{}},setup(e){return(o,t)=>(c(),_("div",uc,[(c(!0),_(ee,null,we(o.badges,a=>(c(),_("span",{key:a.label,class:q(d(te)("px-2 py-1 rounded text-xs font-bold uppercase tracking-wider text-modal-card-tag-foreground bg-modal-card-tag-background break-all"))},V(a.label),3))),128))]))}}),cc=["data-asset-id","aria-labelledby","aria-describedby","tabindex"],pc={class:"relative aspect-square w-full overflow-hidden rounded-xl"},fc=["src","alt"],mc={class:"max-h-32 flex flex-col gap-2 justify-between flex-auto"},gc=["id"],vc=["id"],hc={class:"flex gap-4 text-xs text-muted-foreground mt-auto"},yc={key:0,class:"flex items-center gap-1"},bc={key:1,class:"flex items-center gap-1"},wc={key:2,class:"flex items-center gap-1"},kc=j({__name:"AssetCard",props:{asset:{},interactive:{type:Boolean}},emits:["select","deleted"],setup(e,{emit:o}){const t=o,{t:a}=de(),l=ie(),{closeDialog:s}=gt(),{flags:i}=Hl(),r=Rt(),u=Qe("dropdown-menu-button"),m=Jn(),f=Jn(),v=L(!1),g=L(),y=w(()=>g.value??e.asset.name),k=w(()=>(i.assetDeletionEnabled||i.assetRenameEnabled)&&!(e.asset.is_immutable??!0)),C=w(()=>l.get("LiteGraph.Node.TooltipDelay")),{isLoading:h,error:b}=Ci({src:e.asset.preview_url??"",alt:e.asset.name});function T(){u.value?.hide();const S=qe(y),x=L(a("assetBrowser.deletion.body")),N=L(!1),P=rc({headerProps:{title:a("assetBrowser.deletion.header")},props:{promptText:x},footerProps:{confirmText:a("g.delete"),confirmClass:te("bg-danger-200 text-base-foreground hover:bg-danger-200/80 focus:bg-danger-200/80 focus:ring ring-base-foreground"),optionsDisabled:N,onCancel:n(()=>{s(P)},"onCancel"),onConfirm:n(async()=>{N.value=!0;try{x.value=a("assetBrowser.deletion.inProgress",{assetName:S}),await ua.deleteAsset(e.asset.id),x.value=a("assetBrowser.deletion.complete",{assetName:S}),await new Promise(D=>setTimeout(D,1e3)),t("deleted",e.asset)}catch(D){console.error(D),x.value=a("assetBrowser.deletion.failed",{assetName:S}),await new Promise(W=>setTimeout(W,3e3))}finally{s(P)}},"onConfirm")}})}n(T,"confirmDeletion");function $(){u.value?.hide(),v.value=!0}n($,"startAssetRename");async function I(S){if(v.value=!1,S){g.value=S;try{const x=await ua.updateAsset(e.asset.id,{name:S});g.value=x.name}catch(x){console.error(x),r.add({severity:"error",summary:a("assetBrowser.rename.failed"),life:1e4}),g.value=void 0}}}return n(I,"assetRename"),(S,x)=>{const N=Ne("tooltip");return c(),_("div",{"data-component-id":"AssetCard","data-asset-id":S.asset.id,"aria-labelledby":d(m),"aria-describedby":d(f),tabindex:S.interactive?0:-1,class:q(d(te)("rounded-2xl overflow-hidden transition-all duration-200 bg-modal-card-background p-2 gap-2 flex flex-col h-full",S.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:x[3]||(x[3]=co(ke(P=>S.interactive&&S.$emit("select",S.asset),["self"]),["enter"]))},[p("div",pc,[d(h)||d(b)?(c(),_("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:x[0]||(x[0]=ke(P=>S.interactive&&S.$emit("select",S.asset),["self"]))})):(c(),_("img",{key:1,src:S.asset.preview_url,alt:y.value,class:"size-full object-cover cursor-pointer",role:"button",onClick:x[1]||(x[1]=ke(P=>S.interactive&&S.$emit("select",S.asset),["self"]))},null,8,fc)),E(dc,{badges:S.asset.badges},null,8,["badges"]),k.value?(c(),O(ir,{key:2,class:q(d(te)("absolute top-2 right-2 invisible group-hover:visible",d(u)?.isOpen&&"visible"))},{default:M(()=>[E(Fs,{ref:"dropdown-menu-button",size:"sm"},{default:M(()=>[d(i).assetRenameEnabled?(c(),O(Y,{key:0,variant:"secondary",size:"md",class:"justify-start",onClick:$},{default:M(()=>[x[4]||(x[4]=p("i",{class:"icon-[lucide--pencil]"},null,-1)),p("span",null,V(S.$t("g.rename")),1)]),_:1})):A("",!0),d(i).assetDeletionEnabled?(c(),O(Y,{key:1,variant:"secondary",size:"md",class:"justify-start",onClick:T},{default:M(()=>[x[5]||(x[5]=p("i",{class:"icon-[lucide--trash-2]"},null,-1)),p("span",null,V(S.$t("g.delete")),1)]),_:1})):A("",!0)]),_:1},512)]),_:1},8,["class"])):A("",!0)]),p("div",mc,[pe((c(),_("h3",{id:d(m),class:q(d(te)("mb-2 m-0 text-base font-semibold line-clamp-2 wrap-anywhere","text-base-foreground"))},[E(Tn,{"model-value":y.value,"is-editing":v.value,"input-attrs":{"data-testid":"asset-name-input"},onEdit:I,onCancel:x[2]||(x[2]=P=>I())},null,8,["model-value","is-editing"])],10,gc)),[[N,{value:y.value,showDelay:C.value},void 0,{top:!0}]]),pe((c(),_("p",{id:d(f),class:q(d(te)("m-0 text-sm leading-6 overflow-hidden [-webkit-box-orient:vertical] [-webkit-line-clamp:2] [display:-webkit-box] text-muted-foreground"))},[Ce(V(S.asset.description),1)],10,vc)),[[N,{value:S.asset.description,showDelay:C.value},void 0,{top:!0}]]),p("div",hc,[S.asset.stats.stars?(c(),_("span",yc,[x[6]||(x[6]=p("i",{class:"icon-[lucide--star] size-3"},null,-1)),Ce(" "+V(S.asset.stats.stars),1)])):A("",!0),S.asset.stats.downloadCount?(c(),_("span",bc,[x[7]||(x[7]=p("i",{class:"icon-[lucide--download] size-3"},null,-1)),Ce(" "+V(S.asset.stats.downloadCount),1)])):A("",!0),S.asset.stats.formattedDate?(c(),_("span",wc,[x[8]||(x[8]=p("i",{class:"icon-[lucide--clock] size-3"},null,-1)),Ce(" "+V(S.asset.stats.formattedDate),1)])):A("",!0)])])],42,cc)}}}),Cc=["aria-label","aria-setsize"],xc={key:0,class:"flex h-full items-center justify-center py-20"},Sc={key:1,class:"flex h-full flex-col items-center justify-center py-16 text-muted-foreground"},_c={class:"mb-2 text-lg font-medium"},Tc={class:"text-sm"},$c=j({__name:"AssetGrid",props:{assets:{},loading:{type:Boolean}},emits:["assetSelect","assetDeleted"],setup(e){const o=w(()=>e.assets.map(a=>({...a,key:a.id}))),t={display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(15rem, 1fr))",gap:"1rem",padding:"0.5rem"};return(a,l)=>(c(),_("div",{"data-component-id":"AssetGrid",class:"h-full",role:"grid","aria-label":a.$t("assetBrowser.assetCollection"),"aria-rowcount":-1,"aria-colcount":-1,"aria-setsize":a.assets.length},[a.loading?(c(),_("div",xc,l[2]||(l[2]=[p("i",{class:"icon-[lucide--loader] size-12 animate-spin text-muted-foreground"},null,-1)]))):a.assets.length===0?(c(),_("div",Sc,[l[3]||(l[3]=p("i",{class:"mb-4 icon-[lucide--search] size-10"},null,-1)),p("h3",_c,V(a.$t("assetBrowser.noAssetsFound")),1),p("p",Tc,V(a.$t("assetBrowser.tryAdjustingFilters")),1)])):(c(),O(rr,{key:2,items:o.value,"grid-style":t,"default-item-height":320,"default-item-width":240},{item:M(({item:s})=>[E(kc,{asset:s,interactive:!0,onSelect:l[0]||(l[0]=i=>a.$emit("assetSelect",i)),onDeleted:l[1]||(l[1]=i=>a.$emit("assetDeleted",i))},null,8,["asset"])]),_:1},8,["items"]))],8,Cc))}});function Nc(e){return typeof e.user_metadata?.description=="string"?e.user_metadata.description:null}n(Nc,"getAssetDescription");function Kl(e){return typeof e.user_metadata?.base_model=="string"?e.user_metadata.base_model:null}n(Kl,"getAssetBaseModel");function Ic(e){return o=>e==="all"||o.tags.includes(e)?!0:o.tags.some(t=>typeof t=="string"&&t.includes("/")?t.split("/")[0]===e:!1)}n(Ic,"filterByCategory");function Pc(e){return o=>{if(e.length===0)return!0;const t=new Set(e),a=o.name.split(".").pop()?.toLowerCase();return a?t.has(a):!1}}n(Pc,"filterByFileFormats");function Mc(e){return o=>{if(e.length===0)return!0;const t=new Set(e),a=Kl(o);return a?t.has(a):!1}}n(Mc,"filterByBaseModels");function Dc(e){return o=>e==="all"?!0:e==="my-models"?o.is_immutable===!1:e==="public-models"?o.is_immutable===!0:!0}n(Dc,"filterByOwnership");function Ac(e=L([])){const o=w(()=>e.value??[]),t=L(""),a=L("all"),l=L({sortBy:"recent",fileFormats:[],baseModels:[],ownership:"all"});function s(k){const C=k.tags.find(I=>I!=="models"),h=Nc(k)||`${C||se("assetBrowser.unknown")} model`,b=[];if(C){const I=C.includes("/")?C.substring(C.indexOf("/")+1):C;b.push({label:I,type:"type"})}const T=Kl(k);T&&b.push({label:T,type:"base"});const $={formattedDate:ts(new Date(k.created_at),{dateStyle:"short"}),downloadCount:void 0,stars:void 0};return{...k,description:h,badges:b,stats:$}}n(s,"transformAssetForDisplay");const i=w(()=>{const k=o.value.filter(h=>h.tags[0]==="models").map(h=>h.tags[1]).filter(h=>typeof h=="string"&&h.length>0).map(h=>h.split("/")[0]),C=Array.from(new Set(k)).sort().map(h=>({id:h,label:h.charAt(0).toUpperCase()+h.slice(1),icon:"icon-[lucide--package]"}));return[{id:"all",label:se("assetBrowser.allModels"),icon:"icon-[lucide--folder]"},...C]}),r=w(()=>a.value==="all"?se("assetBrowser.allModels"):i.value.find(C=>C.id===a.value)?.label||se("assetBrowser.assets")),u=w(()=>o.value.filter(Ic(a.value))),m={fuseOptions:{keys:[{name:"name",weight:.4},{name:"tags",weight:.3}],threshold:.4,ignoreLocation:!0,includeScore:!0},matchAllWhenSearchEmpty:!0},{results:f}=ol(t,u,m),v=w(()=>f.value.map(k=>k.item)),g=w(()=>{const C=[...v.value.filter(Pc(l.value.fileFormats)).filter(Mc(l.value.baseModels)).filter(Dc(l.value.ownership))];return C.sort((h,b)=>{switch(l.value.sortBy){case"name-desc":return b.name.localeCompare(h.name);case"recent":return new Date(b.created_at).getTime()-new Date(h.created_at).getTime();case"popular":return h.name.localeCompare(b.name);case"name-asc":default:return h.name.localeCompare(b.name)}}),C.map(s)});function y(k){l.value={...k}}return n(y,"updateFilters"),{searchQuery:t,selectedCategory:a,availableCategories:i,contentTitle:r,categoryFilteredAssets:u,filteredAssets:g,updateFilters:y}}n(Ac,"useAssetBrowser");const Lc=new Set(["VAE","CLIP","GLIGEN"]);function Ec(e){return e?e==="diffusion_models"?"Diffusion":e.split("_").map(o=>{const t=o.toUpperCase();if(Lc.has(t))return t;const a=o.toLowerCase();return a.charAt(0).toUpperCase()+a.slice(1)}).join(" "):"Models"}n(Ec,"formatCategoryLabel");const Rc={class:"capitalize"},Vc={class:"flex w-full items-center justify-between gap-2"},Oc={class:"hidden md:inline"},Na=j({__name:"AssetBrowserModal",props:{nodeType:{},assetType:{},onSelect:{type:Function},onClose:{type:Function},showLeftPanel:{type:Boolean},title:{}},emits:["asset-select","close"],setup(e,{emit:o}){const{t}=de(),a=$s(),l=Ns(),s=mo(vo),i=e,r=o;Bo(Pn,i.onClose??(()=>{}));const u=w(()=>i.nodeType?i.nodeType:i.assetType?`tag:${i.assetType}`:""),m=w(()=>a.modelAssetsByNodeType.get(u.value)??[]),f=w(()=>a.modelLoadingByNodeType.get(u.value)??!1),v=w(()=>f.value&&m.value.length===0);async function g(){return i.nodeType?await a.updateModelsForNodeType(i.nodeType):i.assetType?await a.updateModelsForTag(i.assetType):[]}n(g,"refreshAssets"),g();const{isUploadButtonEnabled:y,showUploadDialog:k}=ad(g),{searchQuery:C,selectedCategory:h,availableCategories:b,categoryFilteredAssets:T,filteredAssets:$,updateFilters:I}=Ac(m),S=w(()=>{const z=(m.value??[]).map(U=>U.tags?.find(H=>H!=="models")).find(U=>typeof U=="string"&&U.length>0);if(z)return z;if(i.nodeType){const U=l.getCategoryForNodeType(i.nodeType);if(U)return U}return i.assetType?i.assetType:"models"}),x=w(()=>h.value!=="all"?h.value:S.value),N=w(()=>{if(i.title)return i.title;const F=Ec(x.value);return t("assetBrowser.allCategory",{category:F})}),P=w(()=>i.showLeftPanel??!0);function D(){i.onClose?.(),r("close")}n(D,"handleClose");function W(F){r("asset-select",F),i.onSelect?.(F)}return n(W,"handleAssetSelectAndEmit"),(F,z)=>(c(),O(zs,{"data-component-id":"AssetBrowserModal",class:"size-full max-h-full max-w-full min-w-0","content-title":N.value,onClose:D},bs({header:M(()=>[p("div",Vc,[E(_n,{modelValue:d(C),"onUpdate:modelValue":z[1]||(z[1]=U=>je(C)?C.value=U:null),autofocus:!0,size:"lg",placeholder:F.$t("g.searchPlaceholder"),class:"max-w-96"},null,8,["modelValue","placeholder"]),d(y)?(c(),O(Y,{key:0,variant:"primary",size:d(s).md?"lg":"icon","data-attr":"upload-model-button",onClick:d(k)},{default:M(()=>[z[3]||(z[3]=p("i",{class:"icon-[lucide--folder-input]"},null,-1)),p("span",Oc,V(F.$t("assetBrowser.uploadModel")),1)]),_:1},8,["size","onClick"])):A("",!0)])]),contentFilter:M(()=>[E(Jd,{assets:d(T),"all-assets":m.value,onFilterChange:d(I)},null,8,["assets","all-assets","onFilterChange"])]),content:M(()=>[E($c,{assets:d($),loading:v.value,onAssetSelect:W,onAssetDeleted:g},null,8,["assets","loading"])]),_:2},[P.value?{name:"leftPanel",fn:M(()=>[E(Bs,{modelValue:d(h),"onUpdate:modelValue":z[0]||(z[0]=U=>je(h)?h.value=U:null),"data-component-id":"AssetBrowserModal-LeftSidePanel","nav-items":d(b)},{"header-icon":M(()=>z[2]||(z[2]=[p("div",{class:"icon-[lucide--folder] size-4"},null,-1)])),"header-title":M(()=>[p("span",Rc,V(N.value),1)]),_:1},8,["modelValue","nav-items"])]),key:"0"}:void 0]),1032,["content-title"]))}}),Ia={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"}}},Wc=n(()=>{const e=gt(),o="global-asset-browser";async function t(l){const s=n(i=>{l.onAssetSelected?.(i),e.closeDialog({key:o})},"handleAssetSelected");e.showDialog({key:o,component:Na,props:{nodeType:l.nodeType,inputName:l.inputName,currentValue:l.currentValue,onSelect:s,onClose:n(()=>e.closeDialog({key:o}),"onClose")},dialogComponentProps:Ia})}n(t,"show");async function a(l){const s=n(i=>{l.onAssetSelected?.(i),e.closeDialog({key:o})},"handleAssetSelected");e.showDialog({key:o,component:Na,props:{showLeftPanel:!0,assetType:l.assetType,title:l.title,onSelect:s,onClose:n(()=>e.closeDialog({key:o}),"onClose")},dialogComponentProps:Ia})}return n(a,"browse"),{show:t,browse:a}},"useAssetBrowserDialog"),zc={class:"flex max-w-xs min-w-40 flex-col gap-2 p-3"},Bc={class:"text-sm font-inter"},Fc={key:1,class:"text-xs"},Uc={class:"flex max-w-xs min-w-40 flex-col gap-2 p-3"},Gc={class:"text-sm font-inter"},Hc={key:1,class:"text-xs"},Pa="cursor-pointer transition-opacity hover:opacity-80",jc=j({__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(),a=n(g=>{t.value?.toggle(g)},"togglePopover"),l=w(()=>o.badge.variant??"info"),s=w(()=>({backgroundColor:o.backgroundColor})),i=w(()=>{switch(l.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=w(()=>{switch(l.value){case"error":return"text-danger-100";case"warning":return"text-warning-background";case"info":default:return"text-text-primary"}}),u=w(()=>r.value),m=w(()=>{if(o.badge.icon)return o.badge.icon;switch(l.value){case"error":return"pi pi-exclamation-circle";case"warning":return"icon-[lucide--triangle-alert]";case"info":default:return}}),f=w(()=>{switch(l.value){case"error":return"bg-danger-100";case"warning":return"bg-gold-600";case"info":default:return"bg-slate-100"}}),v=w(()=>({root:{class:te("absolute z-50")},content:{class:te("mt-1 rounded-lg","bg-base-background","text-base-foreground","shadow-lg","border border-border-default")}}));return(g,y)=>{const k=Ne("tooltip");return g.displayMode==="icon-only"?(c(),_("div",{key:0,class:q(["relative inline-flex h-full shrink-0 items-center justify-center px-2",Pa]),style:be(s.value),onClick:a},[m.value?(c(),_("i",{key:0,class:q(["shrink-0 text-base",m.value,u.value])},null,2)):g.badge.label?(c(),_("div",{key:1,class:q(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},V(g.badge.label),3)):(c(),_("div",{key:2,class:q(["size-2 shrink-0 rounded-full",f.value])},null,2)),E(d(ot),{ref_key:"popover",ref:t,"append-to":"body","auto-z-index":!0,"base-z-index":1e3,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:v.value},{default:M(()=>[p("div",zc,[g.badge.label?(c(),_("div",{key:0,class:q(["w-fit rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},V(g.badge.label),3)):A("",!0),p("div",Bc,V(g.badge.text),1),g.badge.tooltip?(c(),_("div",Fc,V(g.badge.tooltip),1)):A("",!0)])]),_:1},8,["pt"])],4)):g.displayMode==="compact"?(c(),_("div",{key:1,class:"relative inline-flex h-full",style:be(s.value)},[p("div",{class:q(["flex h-full shrink-0 items-center gap-2 whitespace-nowrap",[{"flex-row-reverse":g.reverseOrder},g.noPadding?"":"px-3",Pa]]),onClick:a},[m.value?(c(),_("i",{key:0,class:q(["shrink-0 text-base",m.value,u.value])},null,2)):A("",!0),g.badge.label?(c(),_("div",{key:1,class:q(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},V(g.badge.label),3)):A("",!0)],2),E(d(ot),{ref_key:"popover",ref:t,"append-to":"body","auto-z-index":!0,"base-z-index":1e3,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:v.value},{default:M(()=>[p("div",Uc,[g.badge.label?(c(),_("div",{key:0,class:q(["w-fit rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},V(g.badge.label),3)):A("",!0),p("div",Gc,V(g.badge.text),1),g.badge.tooltip?(c(),_("div",Hc,V(g.badge.tooltip),1)):A("",!0)])]),_:1},8,["pt"])],4)):pe((c(),_("div",{key:2,class:q(["flex h-full shrink-0 items-center gap-2 whitespace-nowrap",[{"flex-row-reverse":g.reverseOrder},g.noPadding?"":"px-3"]]),style:be(s.value)},[m.value?(c(),_("i",{key:0,class:q(["shrink-0 text-base",m.value,u.value])},null,2)):A("",!0),g.badge.label?(c(),_("div",{key:1,class:q(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},V(g.badge.label),3)):A("",!0),p("div",{class:q(["font-inter text-sm",r.value])},V(g.badge.text),3)],6)),[[k,g.badge.tooltip]])}}}),qc=3e3,Kc=300*1e3,Qc=j({__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:a,isActiveSubscription:l,fetchStatus:s,showSubscriptionDialog:i}=Fo(),r=os(),u=L(!1),m=L(!1);let f=null;const v=L(!1),g=n(()=>{m.value=!0,u.value=!0;const C=Date.now(),h=n(async()=>{try{if(Date.now()-C>Kc){y();return}await s(),l.value&&(y(),r?.trackMonthlySubscriptionSucceeded(),t("subscribed"))}catch(b){console.error("[SubscribeButton] Error polling subscription status:",b)}},"poll");h(),f=window.setInterval(h,qc)},"startPollingSubscriptionStatus"),y=n(()=>{f&&(clearInterval(f),f=null),m.value=!1,u.value=!1},"stopPolling");le([v,l],([C,h])=>{});const k=n(async()=>{u.value=!0;try{await a(),g()}catch(C){console.error("[SubscribeButton] Error initiating subscription:",C),u.value=!1}},"handleSubscribe");return nt(()=>{y(),v.value=!1}),(C,h)=>(c(),O(Y,{size:C.size,loading:u.value,disabled:m.value,variant:"primary",style:be(C.variant==="gradient"?{background:"var(--color-subscription-button-gradient)",color:"var(--color-white)"}:void 0),class:q(d(te)("font-bold",C.fluid&&"w-full")),onClick:k},{default:M(()=>[Ce(V(C.label||C.$t("subscription.required.subscribe")),1)]),_:1},8,["size","loading","disabled","style","class"]))}}),Ma="subscription-required",Yc=n(()=>{const e=rt(),o=gt();function t(){o.closeDialog({key:Ma})}n(t,"hide");function a(){e.showLayoutDialog({key:Ma,component:nl(()=>xs(()=>import("./SubscriptionRequiredDialogContent-DtxMOWxy.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,22]),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(a,"show"),{show:a,hide:t}},"useSubscriptionDialog"),Jc=j({__name:"GlobalToast",setup(e){const o=Qt(),t=Rt(),a=ie();le(()=>t.messagesToAdd,i=>{i.length!==0&&(i.forEach(r=>{o.add(r)}),t.messagesToAdd=[])},{deep:!0}),le(()=>t.messagesToRemove,i=>{i.length!==0&&(i.forEach(r=>{o.remove(r)}),t.messagesToRemove=[])},{deep:!0}),le(()=>t.removeAllRequested,i=>{i&&(o.removeAllGroups(),t.removeAllRequested=!1)});function l(){const i=document.getElementById("dynamic-toast-style")||s(),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(l,"updateToastPosition");function s(){const i=document.createElement("style");return i.id="dynamic-toast-style",document.head.appendChild(i),i}return n(s,"createStyleElement"),le(()=>a.get("Comfy.UseNewMenu"),()=>We(l),{immediate:!0}),le(()=>a.get("Comfy.Sidebar.Location"),()=>We(l),{immediate:!0}),(i,r)=>(c(),O(d(vl)))}});let Vn,Ql;(function(){const e=globalThis;typeof e.requestIdleCallback!="function"||typeof e.cancelIdleCallback!="function"?Vn=n((o,t,a)=>{setTimeout(()=>{if(l)return;const s=Date.now()+15;t(Object.freeze({didTimeout:!0,timeRemaining(){return Math.max(0,s-Date.now())}}))});let l=!1;return{dispose(){l||(l=!0)}}},"_runWhenIdle"):Vn=n((o,t,a)=>{const l=o.requestIdleCallback(t,typeof a=="number"?{timeout:a}:void 0);let s=!1;return{dispose(){s||(s=!0,o.cancelIdleCallback(l))}}},"_runWhenIdle"),Ql=n((o,t)=>Vn(globalThis,o,t),"runWhenGlobalIdle")})();const Xc={class:"fixed z-9999 flex flex-row no-drag top-0 right-0"},Zc=j({__name:"MenuHamburger",setup(e){const o=lt(),t=ie(),a=n(()=>{o.focusMode=!1},"exitFocusMode");return xe(()=>{t.get("Comfy.UseNewMenu")==="Disabled"&&(o.focusMode?J.ui.menuContainer.style.display="none":J.ui.menuContainer.style.display="block")}),(l,s)=>{const i=Ne("tooltip");return pe((c(),_("div",Xc,[pe((c(),O(Y,{variant:"muted-textonly",size:"lg","aria-label":l.$t("menu.showMenu"),"aria-live":"assertive",onClick:a,onContextmenu:d(ur)},{default:M(()=>s[0]||(s[0]=[p("i",{class:"pi pi-bars"},null,-1)])),_:1},8,["aria-label","onContextmenu"])),[[i,{value:l.$t("menu.showMenu"),showDelay:300}]]),s[1]||(s[1]=p("div",{class:"window-actions-spacer"},null,-1))],512)),[[et,d(o).focusMode]])}}}),ep=j({__name:"UnloadWindowConfirmDialog",setup(e){const o=ie(),t=Ae(),a=n(l=>{if(o.get("Comfy.Window.UnloadConfirmation")&&t.modifiedWorkflows.length>0)return l.preventDefault(),!0},"handleBeforeUnload");return Re(()=>{window.addEventListener("beforeunload",a)}),nt(()=>{window.removeEventListener("beforeunload",a)}),(l,s)=>(c(),_("div"))}}),tp={class:"w-full h-full absolute top-0 left-0 z-999 pointer-events-none flex flex-col"},op={class:"side-toolbar-container"},np=j({__name:"LiteGraphCanvasSplitterOverlay",setup(e){const o=lt(),t=ie(),a=ut(),l=gn(),{t:s}=de(),i=w(()=>t.get("Comfy.Sidebar.Location")),r=w(()=>t.get("Comfy.Sidebar.UnifiedWidth")),{focusMode:u}=Be(o),{activeSidebarTabId:m,activeSidebarTab:f}=Be(l),{bottomPanelVisible:v}=Be(yo()),{isOpen:g}=Be(a),y=w(()=>f.value!==null),k=w(()=>r.value?"unified-sidebar":m.value??"default-sidebar");function C({originalEvent:$}){$.preventDefault()}n(C,"onResizestart");const h=w(()=>`main-splitter${g.value?"-with-right-panel":""}-${i.value}`),b=w(()=>{if(i.value==="left")return{display:y.value?"flex":"none"}}),T=w(()=>{if(i.value==="right")return{display:y.value?"flex":"none"}});return($,I)=>(c(),_("div",tp,[ge($.$slots,"workflow-tabs",{},void 0,!0),p("div",{class:q(["pointer-events-none flex flex-1 overflow-hidden",{"flex-row":i.value==="left","flex-row-reverse":i.value==="right"}])},[p("div",op,[ge($.$slots,"side-toolbar",{},void 0,!0)]),(c(),O(d(es),{key:h.value,class:"bg-transparent pointer-events-none border-none flex-1 overflow-hidden","state-key":k.value,"state-storage":"local",onResizestart:C},{default:M(()=>[!d(u)&&(i.value==="left"||d(g))?(c(),O(d(Dt),{key:0,class:q(i.value==="left"?d(te)("side-bar-panel bg-comfy-menu-bg pointer-events-auto",y.value&&"min-w-78"):"bg-comfy-menu-bg pointer-events-auto"),"min-size":i.value==="left"?10:15,size:20,style:be(b.value),role:i.value==="left"?"complementary":void 0,"aria-label":i.value==="left"?d(s)("sideToolbar.sidebar"):void 0},{default:M(()=>[i.value==="left"&&y.value?ge($.$slots,"side-bar-panel",{key:0},void 0,!0):i.value==="right"?ge($.$slots,"right-side-panel",{key:1},void 0,!0):A("",!0)]),_:3},8,["class","min-size","style","role","aria-label"])):A("",!0),E(d(Dt),{size:80,class:"flex flex-col"},{default:M(()=>[ge($.$slots,"topmenu",{sidebarPanelVisible:y.value},void 0,!0),E(d(es),{class:"bg-transparent pointer-events-none border-none splitter-overlay-bottom mr-1 mb-1 ml-1 flex-1",layout:"vertical","pt:gutter":d(te)("rounded-tl-lg rounded-tr-lg ",!(d(v)&&!d(u))&&"hidden"),"state-key":"bottom-panel-splitter","state-storage":"local",onResizestart:C},{default:M(()=>[E(d(Dt),{class:"graph-canvas-panel relative"},{default:M(()=>[ge($.$slots,"graph-canvas-panel",{},void 0,!0)]),_:3}),pe(E(d(Dt),{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:M(()=>[ge($.$slots,"bottom-panel",{},void 0,!0)]),_:3},512),[[et,d(v)&&!d(u)]])]),_:3},8,["pt:gutter"])]),_:3}),!d(u)&&(i.value==="right"||d(g))?(c(),O(d(Dt),{key:1,class:q(i.value==="right"?d(te)("side-bar-panel bg-comfy-menu-bg pointer-events-auto",y.value&&"min-w-78"):"bg-comfy-menu-bg pointer-events-auto"),"min-size":i.value==="right"?10:15,size:20,style:be(T.value),role:i.value==="right"?"complementary":void 0,"aria-label":i.value==="right"?d(s)("sideToolbar.sidebar"):void 0},{default:M(()=>[i.value==="left"?ge($.$slots,"right-side-panel",{key:0},void 0,!0):i.value==="right"&&y.value?ge($.$slots,"side-bar-panel",{key:1},void 0,!0):A("",!0)]),_:3},8,["class","min-size","style","role","aria-label"])):A("",!0)]),_:3},8,["state-key"]))],2)]))}}),sp=Ve(np,[["__scopeId","data-v-78b7f6de"]]),at=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"),ap=nl(()=>xs(()=>import("./ComfyQueueButton-DriR7JtM.js"),__vite__mapDeps([23,5,3,4,2,1,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,24]),import.meta.url)),lp={class:"flex h-full items-center"},ip=j({__name:"ComfyActionbar",setup(e){const o=ie(),t=Te(),{t:a}=de(),{isIdle:l}=Be(dt()),s=w(()=>o.get("Comfy.UseNewMenu")),i=w(()=>s.value!=="Disabled"),r=document.querySelector(".workflow-tabs-container"),u=L(null),m=L(null),f=sa("Comfy.MenuPosition.Docked",!0),v=sa("Comfy.MenuPosition.Floating",{x:0,y:0}),{x:g,y,style:k,isDragging:C}=xi(u,{initialValue:{x:0,y:0},handle:m,containerElement:document.body,onMove:n(z=>{const U=r?.getBoundingClientRect().bottom??40;z.y<U&&(z.y=U)},"onMove")});At([g,y],([z,U])=>{v.value={x:z,y:U}},{debounce:300});const h=n(()=>{if(u.value){const z=window.innerWidth,U=window.innerHeight,H=u.value.offsetWidth,B=u.value.offsetHeight;if(H===0||B===0)return;if(v.value.x!==0||v.value.y!==0){g.value=oo(v.value.x,0,z-H),y.value=oo(v.value.y,0,U-B),$();return}g.value===0&&y.value===0&&(g.value=oo((z-H)/2,0,z-H),y.value=oo(U-B-10,0,U-B),$())}},"setInitialPosition");async function b(){await We(),h()}n(b,"comfyRunButtonResolved"),le(i,async z=>{z&&await We(h)}),Ee(m,"mousedown",()=>{});const T=L({x:g.value,y:y.value,windowWidth:window.innerWidth,windowHeight:window.innerHeight}),$=n(()=>{T.value={x:g.value,y:y.value,windowWidth:window.innerWidth,windowHeight:window.innerHeight}},"captureLastDragState");le(C,z=>{z||$()},{immediate:!0}),Ee(window,"resize",n(()=>{if(u.value){const z=window.innerWidth,U=window.innerHeight,H=u.value.offsetWidth,B=u.value.offsetHeight,G=T.value.x,Q=T.value.windowWidth-(T.value.x+H),K=T.value.y,X=T.value.windowHeight-(T.value.y+B),Z=[{edge:"left",distance:G},{edge:"right",distance:Q},{edge:"top",distance:K},{edge:"bottom",distance:X}].reduce((Pe,Ue)=>Ue.distance<Pe.distance?Ue:Pe),re=T.value.y/T.value.windowHeight,ue=T.value.x/T.value.windowWidth;Z.edge==="left"?(g.value=Z.distance,y.value=re*U):Z.edge==="right"?(g.value=z-H-Z.distance,y.value=re*U):Z.edge==="top"?(g.value=ue*z,y.value=Z.distance):(g.value=ue*z,y.value=U-B-Z.distance),g.value=oo(g.value,0,z-H),y.value=oo(y.value,0,U-B)}},"adjustMenuPosition"));const S=L(!1),x=n(()=>{C.value&&(S.value=!0)},"onMouseEnterDropZone"),N=n(()=>{C.value&&(S.value=!1)},"onMouseLeaveDropZone");le(C,z=>{z?f.value&&(f.value=!1):(S.value&&(f.value=!0),S.value=!1)});const P=w(()=>at(a("menu.interrupt"))),D=n(async()=>{l.value||await t.execute("Comfy.Interrupt")},"cancelCurrentJob"),W=w(()=>te("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",S.value&&"border-[3px] opacity-100 scale-105 shadow-[0_0_20px] shadow-blue-500")),F=w(()=>te("actionbar pointer-events-auto z-1300",C.value&&"select-none pointer-events-none",f.value?"p-0 static border-none bg-transparent":"fixed shadow-interface"));return(z,U)=>{const H=Ne("tooltip");return c(),_("div",lp,[d(C)&&!d(f)?(c(),_("div",{key:0,class:q(W.value),onMouseenter:x,onMouseleave:N},V(d(a)("actionbar.dockToTop")),35)):A("",!0),E(d(Ss),{class:q(["pointer-events-auto",F.value]),style:be(d(k)),pt:{header:{class:"hidden"},content:{class:d(f)?"p-0":"p-1"}}},{default:M(()=>[p("div",{ref_key:"panelRef",ref:u,class:"flex items-center select-none gap-2"},[p("span",{ref_key:"dragHandleRef",ref:m,class:q(d(te)("drag-handle cursor-grab w-3 h-max",d(C)&&"cursor-grabbing"))},null,2),(c(),O(Si,{onResolve:b},{default:M(()=>[E(d(ap))]),_:1})),pe((c(),O(Y,{variant:"destructive",size:"icon",disabled:d(l),"aria-label":d(a)("menu.interrupt"),onClick:D},{default:M(()=>U[0]||(U[0]=[p("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["disabled","aria-label"])),[[H,P.value,void 0,{bottom:!0}]])],512)]),_:1},8,["style","class","pt"])])}}});function Us(e,o={}){const{isRoot:t=!0,includeDelete:a=!0,workflow:l}=o,{t:s}=de(),i=Ae(),r=it(),u=dr(),m=Te(),f=Is(),v=w(()=>l?.value??i.activeWorkflow),g=n(async k=>{!k||k===i.activeWorkflow||await r.openWorkflow(k)},"ensureWorkflowActive");return{menuItems:w(()=>{const k=v.value,C=k?f.isSubgraphBlueprint(k):!1,h=[],b=n((T,$,I,S=!0,x=!1,N=!1)=>{S&&(N&&h.push({separator:!0}),h.push({label:T,icon:$,command:I,disabled:x}))},"addItem");return b(s("g.rename"),"pi pi-pencil",async()=>{await g(v.value),e()},!0,t&&!k?.isPersisted),b(s("breadcrumbsMenu.duplicate"),"pi pi-copy",async()=>{k&&await r.duplicateWorkflow(k)},t&&!C),b(s("menuLabels.Save"),"pi pi-save",async()=>{await g(k),await m.execute("Comfy.SaveWorkflow")},t,!1,!0),b(s("menuLabels.Save As"),"pi pi-save",async()=>{await g(k),await m.execute("Comfy.SaveWorkflowAs")},t),b(u.isBookmarked(k?.path??"")?s("tabMenu.removeFromBookmarks"):s("tabMenu.addToBookmarks"),"pi pi-bookmark"+(u.isBookmarked(k?.path??"")?"-fill":""),async()=>{k?.path&&await u.toggleBookmarked(k.path)},t,k?.isTemporary??!1),b(s("menuLabels.Export"),"pi pi-download",async()=>{await g(k),await m.execute("Comfy.ExportWorkflow")},t),b(s("menuLabels.Export (API)"),"pi pi-download",async()=>{await g(k),await m.execute("Comfy.ExportWorkflowAPI")},t),b(s("breadcrumbsMenu.clearWorkflow"),"pi pi-trash",async()=>{await g(k),await m.execute("Comfy.ClearWorkflow")},!0,!1,!0),b(s("subgraphStore.publish"),"pi pi-upload",async()=>{k&&await r.saveWorkflowAs(k)},t&&C,!1,!0),b(s(C?"breadcrumbsMenu.deleteBlueprint":"breadcrumbsMenu.deleteWorkflow"),"pi pi-times",async()=>{k&&await r.deleteWorkflow(k)},t&&a,!1,!0),h})}}n(Us,"useWorkflowActionsMenu");const rp=n((e,o)=>{const t=e?.type;return t?!o[t]:!1},"isNodeMissingDefinition"),up=n((e,o)=>{if(!e)return[];const t=d(o);return xl(e,a=>rp(a,t))},"collectMissingNodes"),dp=n((e,o)=>up(e,o).length>0,"graphHasMissingNodes"),cp={key:0,class:"icon-[lucide--triangle-alert] text-warning-background"},pp={class:"p-breadcrumb-item-label px-2"},fp={key:2,class:"pi pi-angle-down text-[10px]"},mp=j({__name:"SubgraphBreadcrumbItem",props:{item:{},isActive:{type:Boolean,default:!1}},setup(e,{expose:o}){const t=e,a=It(),l=w(()=>dp(J.rootGraph,a.nodeDefsByName)),{t:s}=de(),i=L(),r=rt(),u=Ae(),m=it(),f=L(!1),v=L(),g=L(),y=L(),k=n(async(x,N)=>{if(x&&x!==N){if(t.item.updateTitle?.(x),u.activeSubgraph)u.activeSubgraph.name=x;else if(u.activeWorkflow)try{await m.renameWorkflow(u.activeWorkflow,Sl.basePath+cr(x))}catch(D){console.error(D),r.showErrorDialog(D);return}const P=Ps();P.restoreState(P.exportState())}},"rename"),C=t.item.key==="root",h=w(()=>l.value&&C?s("breadcrumbsMenu.missingNodesWarning"):t.item.label),b=n(async()=>{if(C&&y.value?.offsetParent===null){await Te().execute("Comfy.RenameWorkflow");return}f.value=!0,v.value=t.item.label,We(()=>{g.value?.$el&&(g.value.$el.focus(),g.value.$el.select(),y.value&&(g.value.$el.style.width=`${Math.max(200,y.value.offsetWidth)}px`))})},"startRename"),{menuItems:T}=Us(b,{isRoot:C}),$=n(x=>{f.value||(x.detail===1?t.isActive?i.value?.toggle(x):t.item.command?.({item:t.item,originalEvent:x}):t.isActive&&x.detail===2&&(i.value?.hide(),x.stopPropagation(),x.preventDefault(),b()))},"handleClick"),I=n(async x=>{x&&await k(v.value,t.item.label),f.value=!1},"inputBlur");return o({toggleMenu:n(x=>{i.value?.toggle(x)},"toggleMenu")}),(x,N)=>{const P=Ne("tooltip");return c(),_(ee,null,[pe((c(),_("a",{ref_key:"wrapperRef",ref:y,draggable:"false",href:"#",class:q(["p-breadcrumb-item-link h-8 cursor-pointer px-2",{"flex items-center gap-1":x.isActive,"p-breadcrumb-item-link-menu-visible":i.value?.overlayVisible,"p-breadcrumb-item-link-icon-visible":x.isActive,"active-breadcrumb-item":x.isActive}]),onClick:$},[l.value&&C?(c(),_("i",cp)):A("",!0),p("span",pp,V(x.item.label),1),x.item.isBlueprint?(c(),O(d(io),{key:1,value:"Blueprint",severity:"primary"})):A("",!0),x.isActive?(c(),_("i",fp)):A("",!0)],2)),[[P,{value:h.value,showDelay:512},void 0,{bottom:!0}]]),x.isActive||C?(c(),O(d(_s),{key:0,ref_key:"menu",ref:i,model:d(T),popup:!0,pt:{root:{style:"background-color: var(--comfy-menu-bg)"},itemLink:{class:"py-2"}}},null,8,["model"])):A("",!0),f.value?(c(),O(d(Ki),{key:1,ref_key:"itemInputRef",ref:g,modelValue:v.value,"onUpdate:modelValue":N[0]||(N[0]=D=>v.value=D),class:"fixed z-10000 px-2 py-2 text-[.8rem]",onBlur:N[1]||(N[1]=D=>I(!1)),onClick:N[2]||(N[2]=ke(()=>{},["stop"])),onKeydown:[N[3]||(N[3]=co(D=>I(!0),["enter"])),N[4]||(N[4]=co(D=>I(!1),["esc"]))]},null,8,["modelValue"])):A("",!0)],64)}}}),gp=Ve(mp,[["__scopeId","data-v-d7b126c3"]]),Yl=n((e,o)=>{o={debounceTime:25,useMutationObserver:!0,useResizeObserver:!0,...o};const t=L(!1),a=[],l=L(!1),s=n(()=>{t.value=e.scrollWidth>e.clientWidth,o.onCheck?.(t.value)},"checkOverflowFn"),i=o.debounceTime?Cn(s,o.debounceTime):s;return o.useMutationObserver&&a.push(_i(e,i,{subtree:!0,childList:!0}).stop),o.useResizeObserver&&a.push(sl(e,i).stop),{isOverflowing:Xn(t),disposed:Xn(l),checkOverflow:i,dispose:n(()=>{l.value=!0,a.forEach(r=>r())},"dispose")}},"useOverflowObserver"),Da=28,Aa=8,On=8,La=20,vp=j({__name:"SubgraphBreadcrumb",setup(e){const o=Ae(),t=Ps(),a=L(),l=L(),s=n((T,$)=>{T.key==="root"&&(l.value=$)},"setItemRef"),i=w(()=>o.activeWorkflow?.filename),r=w(()=>Is().isSubgraphBlueprint(o.activeWorkflow)),u=L(!1),m=L(!1),f=w(()=>t.navigationStack.length>0),v=w(()=>({label:i.value,icon:"pi pi-home",key:"root",isBlueprint:r.value,command:n(()=>{const T=he().getCanvas();if(!T.graph)throw new TypeError("Canvas has no graph");T.setGraph(T.graph.rootGraph)},"command")})),g=w(()=>{const T=t.navigationStack.map($=>({label:$.name,key:`subgraph-${$.id}`,command:n(()=>{const I=he().getCanvas();if(!I.graph)throw new TypeError("Canvas has no graph");I.setGraph($)},"command"),updateTitle:n(I=>{const S=he().getCanvas().graph?.rootGraph;S&&pr(S,$.id,x=>{x.title=I})},"updateTitle")}));return[v.value,...T]}),y=w(()=>g.value.at(-1)?.key),k=n(T=>{l.value?.toggleMenu(T)},"handleMenuClick"),C=n(()=>{Te().execute("Comfy.Graph.ExitSubgraph")},"handleBackClick"),h=w(()=>a.value?a.value.$el?.querySelector(".p-breadcrumb-list"):null);let b;return le(h,T=>{b?.dispose(),b=void 0,T&&(b=Yl(T,{onCheck:n($=>{if(m.value=$,u.value){if(!$){const I=[...T.querySelectorAll(".p-breadcrumb-item")];if(I.length<3)return;const S=I.filter(H=>H.querySelector(".p-breadcrumb-item-link-icon-visible")).length,x=T.querySelectorAll(".p-breadcrumb-separator"),P=x[x.length-1].offsetWidth,D=(Da+On+On)*I.length+S*La,W=(I.length-1)*P,F=(I.length-1)*(Aa*2),z=D+W+F,U=T.clientWidth;z<=U&&(u.value=!1)}}else $&&(u.value=!0)},"onCheck")}))}),al(()=>{b?.disposed.value||b?.checkOverflow()}),(T,$)=>(c(),_("div",{class:q(["subgraph-breadcrumb flex w-auto drop-shadow-[var(--interface-panel-drop-shadow)]",{"subgraph-breadcrumb-collapse":u.value,"subgraph-breadcrumb-overflow":m.value}]),style:be({"--p-breadcrumb-gap":"0px","--p-breadcrumb-item-margin":`${Aa/2}px`,"--p-breadcrumb-item-min-width":`${Da}px`,"--p-breadcrumb-item-padding":`${On}px`,"--p-breadcrumb-icon-width":`${La}px`})},[E(d(ia),{class:"context-menu-button pointer-events-auto h-8 w-8 shrink-0 border border-transparent bg-transparent p-0 transition-all hover:rounded-lg hover:border-interface-stroke hover:bg-comfy-menu-bg",icon:"pi pi-bars",text:"",severity:"secondary",size:"small",onClick:k}),f.value?(c(),O(d(ia),{key:0,class:"back-button pointer-events-auto h-8 w-8 shrink-0 border border-transparent bg-transparent p-0 transition-all hover:rounded-lg hover:border-interface-stroke hover:bg-comfy-menu-bg",text:"",severity:"secondary",size:"small",onClick:C},{default:M(()=>$[0]||($[0]=[p("i",{class:"icon-[lucide--undo-2]"},null,-1)])),_:1})):A("",!0),E(d(Qi),{ref_key:"breadcrumbRef",ref:a,class:q(["w-fit rounded-lg p-0",{hidden:!f.value}]),model:g.value,pt:{item:{class:"pointer-events-auto"}},"aria-label":T.$t("g.graphNavigation")},{item:M(({item:I})=>[E(gp,{ref:n(S=>s(I,S),"ref"),item:I,"is-active":I.key===y.value},null,8,["item","is-active"])]),separator:M(()=>$[1]||($[1]=[p("span",{style:{transform:"scale(1.5)"}}," / ",-1)])),_:1},8,["class","model","aria-label"])],6))}}),hp=Ve(vp,[["__scopeId","data-v-50f75d4e"]]),yp={class:"flex flex-col gap-3 p-2"},bp={class:"flex flex-col gap-1"},wp={class:"relative h-2 w-full overflow-hidden rounded-full border border-interface-stroke bg-interface-panel-surface"},kp={class:"flex items-start justify-end gap-4 text-[12px] leading-none"},Cp={class:"flex items-center gap-1 text-text-primary opacity-90"},xp={class:"font-bold"},Sp={class:"flex items-center gap-1 text-text-secondary"},_p={class:"inline-block max-w-[10rem] truncate"},Tp={class:"flex items-center gap-1"},$p={class:"flex items-center gap-4 text-[12px] text-text-primary"},Np={class:"flex items-center gap-2"},Ip={class:"opacity-90"},Pp={class:"font-bold"},Mp={class:"ml-1"},Dp={class:"flex items-center gap-2"},Ap={class:"opacity-90"},Lp={class:"font-bold"},Ep={class:"ml-1"},Rp=j({__name:"QueueOverlayActive",props:{totalProgressStyle:{},currentNodeProgressStyle:{},totalPercentFormatted:{},currentNodePercentFormatted:{},currentNodeName:{},runningCount:{},queuedCount:{},bottomRowClass:{}},emits:["interruptAll","clearQueued","viewAllJobs"],setup(e){const{t:o}=de(),t=w(()=>at(o("sideToolbar.queueProgressOverlay.cancelJobTooltip"))),a=w(()=>at(o("sideToolbar.queueProgressOverlay.clearQueueTooltip")));return(l,s)=>{const i=ll("i18n-t"),r=Ne("tooltip");return c(),_("div",yp,[p("div",bp,[p("div",wp,[p("div",{class:"absolute inset-0 h-full rounded-full transition-[width]",style:be(l.totalProgressStyle)},null,4),p("div",{class:"absolute inset-0 h-full rounded-full transition-[width]",style:be(l.currentNodeProgressStyle)},null,4)]),p("div",kp,[p("div",Cp,[E(i,{keypath:"sideToolbar.queueProgressOverlay.total"},{percent:M(()=>[p("span",xp,V(l.totalPercentFormatted),1)]),_:1})]),p("div",Sp,[p("span",null,V(d(o)("sideToolbar.queueProgressOverlay.currentNode")),1),p("span",_p,V(l.currentNodeName),1),p("span",Tp,[p("span",null,V(l.currentNodePercentFormatted),1)])])])]),p("div",{class:q(l.bottomRowClass)},[p("div",$p,[p("div",Np,[p("span",Ip,[p("span",Pp,V(l.runningCount),1),p("span",Mp,V(d(o)("sideToolbar.queueProgressOverlay.running")),1)]),l.runningCount>0?pe((c(),O(Y,{key:0,variant:"destructive",size:"icon","aria-label":d(o)("sideToolbar.queueProgressOverlay.interruptAll"),onClick:s[0]||(s[0]=u=>l.$emit("interruptAll"))},{default:M(()=>s[3]||(s[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}]]):A("",!0)]),p("div",Dp,[p("span",Ap,[p("span",Lp,V(l.queuedCount),1),p("span",Ep,V(d(o)("sideToolbar.queueProgressOverlay.queuedSuffix")),1)]),l.queuedCount>0?pe((c(),O(Y,{key:0,variant:"destructive",size:"icon","aria-label":d(o)("sideToolbar.queueProgressOverlay.clearQueued"),onClick:s[1]||(s[1]=u=>l.$emit("clearQueued"))},{default:M(()=>s[4]||(s[4]=[p("i",{class:"icon-[lucide--list-x] block size-4 leading-none text-text-primary"},null,-1)])),_:1},8,["aria-label"])),[[r,a.value,void 0,{top:!0}]]):A("",!0)])]),E(Y,{class:"min-w-30 flex-1 px-2 py-0",variant:"secondary",size:"md",onClick:s[2]||(s[2]=u=>l.$emit("viewAllJobs"))},{default:M(()=>[Ce(V(d(o)("sideToolbar.queueProgressOverlay.viewAllJobs")),1)]),_:1})],2)])}}}),Vp={class:"inline-flex items-center gap-2"},Op={key:0,class:"inline-flex items-center"},Wp={class:"inline-flex items-center gap-2"},zp={key:0,class:"relative inline-flex h-6 items-center"},Bp=["src","alt"],Fp={class:"text-[14px] font-normal text-text-primary"},Up={class:"font-bold"},Gp={class:"font-bold"},Hp={class:"font-bold"},jp={class:"font-bold"},qp=j({__name:"CompletionSummaryBanner",props:{mode:{},completedCount:{},failedCount:{},thumbnailUrls:{default:n(()=>[],"default")},ariaLabel:{}},emits:["click"],setup(e,{emit:o}){const t=e,a=o;return(l,s)=>{const i=ll("i18n-t");return c(),O(Y,{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:s[0]||(s[0]=r=>a("click",r))},{default:M(()=>[p("span",Vp,[t.mode==="allFailed"?(c(),_("span",Op,s[1]||(s[1]=[p("i",{class:"ml-1 icon-[lucide--circle-alert] block size-4 leading-none text-destructive-background"},null,-1)]))):A("",!0),p("span",Wp,[t.mode!=="allFailed"?(c(),_("span",zp,[(c(!0),_(ee,null,we(t.thumbnailUrls,(r,u)=>(c(),_("span",{key:r+u,class:"inline-block h-6 w-6 overflow-hidden rounded-[6px] border-0 bg-secondary-background",style:be({marginLeft:u===0?"0":"-12px"})},[p("img",{src:r,alt:l.$t("sideToolbar.queueProgressOverlay.preview"),class:"h-full w-full object-cover"},null,8,Bp)],4))),128))])):A("",!0),p("span",Fp,[t.mode==="allSuccess"?(c(),O(i,{key:0,keypath:"sideToolbar.queueProgressOverlay.jobsCompleted",plural:t.completedCount},{count:M(()=>[p("span",Up,V(t.completedCount),1)]),_:1},8,["plural"])):t.mode==="mixed"?(c(),_(ee,{key:1},[E(i,{keypath:"sideToolbar.queueProgressOverlay.jobsCompleted",plural:t.completedCount},{count:M(()=>[p("span",Gp,V(t.completedCount),1)]),_:1},8,["plural"]),s[2]||(s[2]=p("span",null,", ",-1)),E(i,{keypath:"sideToolbar.queueProgressOverlay.jobsFailed",plural:t.failedCount},{count:M(()=>[p("span",Hp,V(t.failedCount),1)]),_:1},8,["plural"])],64)):(c(),O(i,{key:2,keypath:"sideToolbar.queueProgressOverlay.jobsFailed",plural:t.failedCount},{count:M(()=>[p("span",jp,V(t.failedCount),1)]),_:1},8,["plural"]))])])]),s[3]||(s[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"])}}}),Kp={class:"pointer-events-auto"},Qp=j({__name:"QueueOverlayEmpty",props:{summary:{}},emits:["summaryClick"],setup(e){const{t:o}=de();return(t,a)=>(c(),_("div",Kp,[E(qp,{mode:t.summary.mode,"completed-count":t.summary.completedCount,"failed-count":t.summary.failedCount,"thumbnail-urls":t.summary.thumbnailUrls,"aria-label":d(o)("sideToolbar.queueProgressOverlay.expandCollapsedQueue"),onClick:a[0]||(a[0]=l=>t.$emit("summaryClick"))},null,8,["mode","completed-count","failed-count","thumbnail-urls","aria-label"])]))}}),Yp={class:"flex h-12 items-center justify-between gap-2 border-b border-interface-stroke px-2"},Jp={class:"px-2 text-[14px] font-normal text-text-primary"},Xp={key:0,class:"ml-4 inline-flex items-center gap-1 text-blue-100"},Zp={class:"font-bold"},ef={class:"ml-1"},tf={key:0,class:"flex items-center gap-1"},of={class:"flex flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3 font-inter"},nf=j({__name:"QueueOverlayHeader",props:{headerTitle:{},showConcurrentIndicator:{type:Boolean},concurrentWorkflowCount:{}},emits:["clearHistory"],setup(e,{emit:o}){const t=o,{t:a}=de(),l=L(null),s=w(()=>at(a("g.more"))),i=n(u=>{l.value?.toggle(u)},"onMoreClick"),r=n(()=>{l.value?.hide(),t("clearHistory")},"onClearHistoryFromMenu");return(u,m)=>{const f=Ne("tooltip");return c(),_("div",Yp,[p("div",Jp,[p("span",null,V(u.headerTitle),1),u.showConcurrentIndicator?(c(),_("span",Xp,[m[0]||(m[0]=p("span",{class:"inline-block size-2 rounded-full bg-blue-100"},null,-1)),p("span",null,[p("span",Zp,V(u.concurrentWorkflowCount),1),p("span",ef,V(d(a)("sideToolbar.queueProgressOverlay.running")),1)])])):A("",!0)]),d(Lt)?A("",!0):(c(),_("div",tf,[pe((c(),O(Y,{variant:"textonly",size:"icon","aria-label":d(a)("sideToolbar.queueProgressOverlay.moreOptions"),onClick:i},{default:M(()=>m[1]||(m[1]=[p("i",{class:"icon-[lucide--more-horizontal] block size-4 leading-none text-text-secondary"},null,-1)])),_:1},8,["aria-label"])),[[f,s.value,void 0,{top:!0}]]),E(d(ot),{ref_key:"morePopoverRef",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:M(()=>[p("div",of,[E(Y,{class:"w-full justify-start",variant:"textonly",size:"sm","aria-label":d(a)("sideToolbar.queueProgressOverlay.clearHistory"),onClick:r},{default:M(()=>[m[2]||(m[2]=p("i",{class:"icon-[lucide--file-x-2] size-4 text-muted"},null,-1)),p("span",null,V(d(a)("sideToolbar.queueProgressOverlay.clearHistory")),1)]),_:1},8,["aria-label"])])]),_:1},512)]))])}}}),sf={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"},af={key:0,class:"px-2 py-1"},lf=j({__name:"JobContextMenu",props:{entries:{}},emits:["action"],setup(e,{expose:o,emit:t}){const a=t,l=L(null);function s(u){l.value&&l.value.toggle(u)}n(s,"open");function i(){l.value?.hide()}n(i,"hide");function r(u){a("action",u)}return n(r,"onEntry"),o({open:s,hide:i}),(u,m)=>(c(),O(d(ot),{ref_key:"jobItemPopoverRef",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:M(()=>[p("div",sf,[(c(!0),_(ee,null,we(u.entries,f=>(c(),_(ee,{key:f.key},[f.kind==="divider"?(c(),_("div",af,m[0]||(m[0]=[p("div",{class:"h-px bg-interface-stroke"},null,-1)]))):(c(),O(Y,{key:1,class:"w-full justify-start bg-transparent",variant:"textonly",size:"sm","aria-label":f.label,onClick:n(v=>r(f),"onClick")},{default:M(()=>[f.icon?(c(),_("i",{key:0,class:q([f.icon,"block size-4 shrink-0 leading-none text-text-secondary"])},null,2)):A("",!0),p("span",null,V(f.label),1)]),_:2},1032,["aria-label","onClick"]))],64))),128))])]),_:1},512))}}),rf={class:"flex items-center justify-between gap-2 px-3"},uf={class:"min-w-0 flex-1 overflow-x-auto"},df={class:"inline-flex items-center gap-1 whitespace-nowrap"},cf={class:"ml-2 flex shrink-0 items-center gap-2"},pf={key:0,class:"pointer-events-none absolute -top-1 -right-1 inline-block size-2 rounded-full bg-base-foreground"},ff={class:"flex min-w-[12rem] flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},mf={key:0,class:"icon-[lucide--check] size-4"},gf={key:0,class:"icon-[lucide--check] block size-4 leading-none text-text-secondary"},vf={key:0,class:"pointer-events-none absolute -top-1 -right-1 inline-block size-2 rounded-full bg-base-foreground"},hf={class:"flex min-w-[12rem] flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},yf={key:0,class:"icon-[lucide--check] size-4 text-text-secondary"},bf={key:0,class:"mx-2 mt-1 h-px"},wf=j({__name:"JobFiltersBar",props:{selectedJobTab:{},selectedWorkflowFilter:{},selectedSortMode:{},hasFailedJobs:{type:Boolean}},emits:["update:selectedJobTab","update:selectedWorkflowFilter","update:selectedSortMode"],setup(e,{emit:o}){const t=e,a=o,{t:l}=de(),s=L(null),i=L(null),r=w(()=>at(l("sideToolbar.queueProgressOverlay.filterBy"))),u=w(()=>at(l("sideToolbar.queueProgressOverlay.sortBy"))),m=w(()=>t.hasFailedJobs?da:da.filter(h=>h!=="Failed")),f=n(h=>{s.value&&s.value.toggle(h)},"onFilterClick"),v=n(h=>{s.value?.hide?.(),a("update:selectedWorkflowFilter",h)},"selectWorkflowFilter"),g=n(h=>{i.value&&i.value.toggle(h)},"onSortClick"),y=n(h=>{i.value?.hide?.(),a("update:selectedSortMode",h)},"selectSortMode"),k=n(h=>l(h==="All"?"g.all":h==="Completed"?"g.completed":"g.failed"),"tabLabel"),C=n(h=>h==="mostRecent"?l("queue.jobList.sortMostRecent"):h==="totalGenerationTime"?l("queue.jobList.sortTotalGenerationTime"):"","sortLabel");return(h,b)=>{const T=Ne("tooltip");return c(),_("div",rf,[p("div",uf,[p("div",df,[(c(!0),_(ee,null,we(m.value,$=>(c(),O(Y,{key:$,variant:h.selectedJobTab===$?"secondary":"muted-textonly",size:"sm",class:"px-3",onClick:n(I=>h.$emit("update:selectedJobTab",$),"onClick")},{default:M(()=>[Ce(V(k($)),1)]),_:2},1032,["variant","onClick"]))),128))])]),p("div",cf,[pe((c(),O(Y,{key:0,variant:"secondary",size:"icon","aria-label":d(l)("sideToolbar.queueProgressOverlay.filterJobs"),onClick:f},{default:M(()=>[b[2]||(b[2]=p("i",{class:"icon-[lucide--list-filter] size-4"},null,-1)),h.selectedWorkflowFilter!=="all"?(c(),_("span",pf)):A("",!0)]),_:1},8,["aria-label"])),[[T,r.value,void 0,{top:!0}]]),(c(),O(d(ot),{key:1,ref_key:"filterPopoverRef",ref:s,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:M(()=>[p("div",ff,[E(Y,{class:"w-full justify-between",variant:"textonly",size:"sm",onClick:b[0]||(b[0]=$=>v("all"))},{default:M(()=>[p("span",null,V(d(l)("sideToolbar.queueProgressOverlay.filterAllWorkflows")),1),h.selectedWorkflowFilter==="all"?(c(),_("i",mf)):A("",!0)]),_:1}),b[3]||(b[3]=p("div",{class:"mx-2 mt-1 h-px"},null,-1)),E(Y,{class:"w-full justify-between",variant:"textonly",onClick:b[1]||(b[1]=$=>v("current"))},{default:M(()=>[p("span",null,V(d(l)("sideToolbar.queueProgressOverlay.filterCurrentWorkflow")),1),h.selectedWorkflowFilter==="current"?(c(),_("i",gf)):A("",!0)]),_:1})])]),_:1},512)),pe((c(),O(Y,{variant:"secondary",size:"icon","aria-label":d(l)("sideToolbar.queueProgressOverlay.sortJobs"),onClick:g},{default:M(()=>[b[4]||(b[4]=p("i",{class:"icon-[lucide--arrow-up-down] size-4"},null,-1)),h.selectedSortMode!=="mostRecent"?(c(),_("span",vf)):A("",!0)]),_:1},8,["aria-label"])),[[T,u.value,void 0,{top:!0}]]),E(d(ot),{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:M(()=>[p("div",hf,[(c(!0),_(ee,null,we(d(ca),($,I)=>(c(),_(ee,{key:$},[E(Y,{class:"w-full justify-between",variant:"textonly",size:"sm",onClick:n(S=>y($),"onClick")},{default:M(()=>[p("span",null,V(C($)),1),h.selectedSortMode===$?(c(),_("i",yf)):A("",!0)]),_:2},1032,["onClick"]),I<d(ca).length-1?(c(),_("div",bf)):A("",!0)],64))),128))])]),_:1},512)])])}}}),Ea=n(e=>{const t=e?.status?.messages;if(!Array.isArray(t)||!t.length)return null;const a=t.find(i=>Array.isArray(i)&&i[0]==="execution_error");if(!a)return null;const l=a[1],s=String(l?.exception_message??"");return{detail:l,message:s}},"extractExecutionError"),kf=n(({taskForJob:e,copyToClipboard:o,dialog:t})=>{const a=w(()=>Ea(e.value)?.message??"");return{errorMessageValue:a,copyErrorMessage:n(()=>{a.value&&o(a.value)},"copyErrorMessage"),reportJobError:n(()=>{const i=Ea(e.value);if(i?.detail){t.showExecutionErrorDialog(i.detail);return}a.value&&t.showErrorDialog(new Error(a.value),{reportType:"queueJobError"})},"reportJobError")}},"useJobErrorReporting"),rs=n(e=>{const o=Math.max(0,Math.floor(e/1e3)),t=Math.floor(o/60),a=o%60;return`${t}m ${a}s`},"formatElapsedTime"),Cf=n(e=>e.historyTasks.map(o=>Number(o.executionTimeInSeconds)).filter(o=>typeof o=="number"&&!Number.isNaN(o)),"pickRecentDurations"),xf=n(({queueStore:e,executionStore:o,taskForJob:t,jobState:a,firstSeenTs:l,jobsAhead:s,nowTs:i})=>{const r=w(()=>o.runningWorkflowCount),u=w(()=>a.value==="pending"&&!!l.value&&(r.value??0)>1),m=w(()=>Cf(e).slice(-20)),f=w(()=>{const k=m.value;if(!k.length)return null;const C=k.slice().sort((N,P)=>N-P),h=C.reduce((N,P)=>N+P,0)/C.length,b=C[Math.min(C.length-1,Math.floor(C.length*.75))],T=e.runningTasks,$=i.value,I=T.map(N=>N.executionStartTimestamp).filter(N=>typeof N=="number").map(N=>{const P=Math.max(0,Math.floor(($-N)/1e3));return{lo:Math.max(0,Math.round(h-P)),hi:Math.max(0,Math.round(b-P))}});if(!I.length)return null;const S=I.reduce((N,P)=>Math.min(N,P.lo),1/0),x=I.reduce((N,P)=>Math.min(N,P.hi),1/0);return[S,x]}),v=w(()=>{const k=m.value;if(!k.length)return null;const C=s.value;if(C==null)return null;const h=k.slice().sort((S,x)=>S-x),b=h.reduce((S,x)=>S+x,0)/h.length,T=h[Math.min(h.length-1,Math.floor(h.length*.75))];if(C<=0)return f.value??[0,0];const $=Math.max(1,r.value||1),I=Math.ceil(C/$);return[Math.round(b*I),Math.round(T*I)]}),g=w(()=>{const k=m.value;if(!k.length)return null;const C=k.slice().sort((P,D)=>P-D),h=C.reduce((P,D)=>P+D,0)/C.length,b=C[Math.min(C.length-1,Math.floor(C.length*.75))],T=t.value,I=(a.value==="running"?T?.executionStartTimestamp:void 0)??l.value,S=I?Math.max(0,Math.floor((i.value-I)/1e3)):0,x=Math.max(0,Math.round(h-S)),N=Math.max(0,Math.round(b-S));return[x,N]}),y=w(()=>{const k=t.value,h=(a.value==="running"?k?.executionStartTimestamp:void 0)??l.value;return h?rs(i.value-h):""});return{runningWorkflowCount:r,showParallelQueuedStats:u,estimateRangeSeconds:v,estimateRemainingRangeSeconds:g,timeElapsedValue:y}},"useQueueEstimates"),Sf={class:"w-[300px] min-w-[260px] rounded-lg border border-interface-stroke bg-interface-panel-surface shadow-md"},_f={class:"flex items-center border-b border-interface-stroke p-4"},Tf={class:"text-[0.875rem] leading-normal font-normal text-text-primary"},$f={class:"flex flex-col gap-6 px-4 pt-4 pb-4"},Nf={class:"grid grid-cols-2 items-center gap-x-2 gap-y-2"},If={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Pf={class:"flex min-w-0 items-center text-[0.75rem] leading-normal font-normal text-text-secondary"},Mf={class:"block min-w-0 truncate"},Df={key:0,class:"grid grid-cols-2 items-center gap-x-2 gap-y-2"},Af={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Lf={class:"flex min-w-0 items-center text-[0.75rem] leading-normal font-normal text-text-secondary"},Ef={class:"block min-w-0 truncate"},Rf={key:1,class:"grid grid-cols-2 gap-x-2"},Vf={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Of={class:"flex items-center justify-between gap-4"},Wf={class:"col-span-2 mt-2 rounded bg-interface-panel-hover-surface px-4 py-2 text-[0.75rem] leading-normal text-text-secondary"},zf=j({__name:"JobDetailsPopover",props:{jobId:{},workflowId:{}},setup(e){const o=e,t=w(()=>u("g.copy")),a=Ae(),l=Ot(),s=dt(),i=rt(),{locale:r,t:u}=de(),m=w(()=>{const K=o.workflowId;if(!K)return"";const X=a.activeWorkflow?.activeState?.id;return X&&X===K?a.activeWorkflow?.filename??K:K}),f=w(()=>o.jobId),{copyToClipboard:v}=fr(),g=n(()=>{v(f.value)},"copyJobId"),y=w(()=>{const K=o.jobId,X=n(ne=>ne.find(Z=>String(Z.promptId??"")===String(K)),"findIn");return X(l.pendingTasks)||X(l.runningTasks)||X(l.historyTasks)||null}),k=w(()=>{const K=y.value;if(!K)return null;const X=s.isPromptInitializing(String(K?.promptId));return _l(K,X)}),C=w(()=>y.value?.createTime),h=w(()=>C.value!==void 0?pa(C.value,r.value):""),b=w(()=>{const K=y.value;return K?Number(K.queueIndex):null}),T=w(()=>{const K=b.value;return K==null?null:l.pendingTasks.filter(ne=>Number(ne.queueIndex)<K).length}),$=w(()=>{if(T.value==null)return"";const K=T.value;return u("queue.jobDetails.queuePositionValue",{count:K},K)}),I=L(Date.now());let S=null;Re(()=>{S=window.setInterval(()=>{I.value=Date.now()},1e3)}),xt(()=>{S!=null&&(clearInterval(S),S=null)});const{showParallelQueuedStats:x,estimateRangeSeconds:N,estimateRemainingRangeSeconds:P,timeElapsedValue:D}=xf({queueStore:l,executionStore:s,taskForJob:y,jobState:k,firstSeenTs:C,jobsAhead:T,nowTs:I}),W=n((K,X)=>{if(X<=60){const re=Math.max(1,Math.round(X)),ue=Math.max(1,Math.min(re,Math.round(K)));return ue===re?u("queue.jobDetails.eta.seconds",{count:re},re):u("queue.jobDetails.eta.secondsRange",{lo:ue,hi:re})}if(K>=60&&X<90)return u("queue.jobDetails.eta.minutes",{count:1},1);const ne=Math.max(1,Math.floor(K/60)),Z=Math.max(ne,Math.ceil(X/60));return ne===Z?u("queue.jobDetails.eta.minutes",{count:ne},ne):u("queue.jobDetails.eta.minutesRange",{lo:ne,hi:Z})},"formatEta"),F=w(()=>{const K=N.value;if(!K)return"";const[X,ne]=K;return W(X,ne)}),z=w(()=>{const K=P.value;if(!K)return"";const[X,ne]=K;return W(X,ne)}),U=w(()=>[{label:u("queue.jobDetails.workflow"),value:m.value},{label:u("queue.jobDetails.jobId"),value:f.value,canCopy:!0}]),H=w(()=>{if(k.value==="pending"){if(!C.value)return[];const K=[{label:u("queue.jobDetails.queuedAt"),value:h.value}];return x.value&&K.push({label:u("queue.jobDetails.queuePosition"),value:$.value},{label:u("queue.jobDetails.timeElapsed"),value:D.value},{label:u("queue.jobDetails.estimatedStartIn"),value:F.value}),K}if(k.value==="running")return C.value?[{label:u("queue.jobDetails.queuedAt"),value:h.value},{label:u("queue.jobDetails.timeElapsed"),value:D.value},{label:u("queue.jobDetails.estimatedFinishIn"),value:z.value}]:[];if(k.value==="completed"){const K=y.value,X=K?.executionEndTimestamp,ne=K?.executionTime,Z=X?pa(X,r.value):"",re=ne!==void 0?rs(ne):"";return ne!==void 0&&(ne/36e5).toFixed(3)+"",[{label:u("queue.jobDetails.generatedOn"),value:Z},{label:u("queue.jobDetails.totalGenerationTime"),value:re}]}if(k.value==="failed"){const X=y.value?.executionTime,ne=X!==void 0?rs(X):"";return X!==void 0&&(X/36e5).toFixed(3)+"",[{label:u("queue.jobDetails.queuedAt"),value:h.value},{label:u("queue.jobDetails.failedAfter"),value:ne}]}return[]}),{errorMessageValue:B,copyErrorMessage:G,reportJobError:Q}=kf({taskForJob:y,copyToClipboard:v,dialog:i});return(K,X)=>(c(),_("div",Sf,[p("div",_f,[p("span",Tf,V(d(u)("queue.jobDetails.header")),1)]),p("div",$f,[p("div",Nf,[(c(!0),_(ee,null,we(U.value,ne=>(c(),_(ee,{key:ne.label},[p("div",If,V(ne.label),1),p("div",Pf,[p("span",Mf,V(ne.value),1),ne.canCopy?(c(),O(Y,{key:0,size:"icon",variant:"muted-textonly","aria-label":t.value,onClick:ke(g,["stop"])},{default:M(()=>X[0]||(X[0]=[p("i",{class:"icon-[lucide--copy] size-4"},null,-1)])),_:1},8,["aria-label"])):A("",!0)])],64))),128))]),H.value.length?(c(),_("div",Df,[(c(!0),_(ee,null,we(H.value,ne=>(c(),_(ee,{key:ne.label},[p("div",Af,V(ne.label),1),p("div",Lf,[p("span",Ef,V(ne.value),1)])],64))),128))])):A("",!0),k.value==="failed"?(c(),_("div",Rf,[p("div",Vf,V(d(u)("queue.jobDetails.errorMessage")),1),p("div",Of,[E(Y,{class:"justify-start px-0",variant:"muted-textonly",size:"sm","icon-position":"right",onClick:ke(d(G),["stop"])},{default:M(()=>[p("span",null,V(t.value),1),X[1]||(X[1]=p("i",{class:"icon-[lucide--copy] block size-3.5 leading-none"},null,-1))]),_:1},8,["onClick"]),E(Y,{class:"justify-start px-0",variant:"muted-textonly",size:"sm","icon-position":"right",onClick:ke(d(Q),["stop"])},{default:M(()=>[p("span",null,V(d(u)("queue.jobDetails.report")),1),X[2]||(X[2]=p("i",{class:"icon-[lucide--message-circle-warning] block size-3.5 leading-none"},null,-1))]),_:1},8,["onClick"])]),p("div",Wf,V(d(B)),1)])):A("",!0)])]))}}),Bf={class:"w-[300px] min-w-[260px] rounded-lg shadow-md"},Ff={class:"p-3"},Uf={class:"relative aspect-square w-full overflow-hidden rounded-lg"},Gf=["src","alt"],Hf={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)"}},jf={class:"mt-2 text-center"},qf=["title"],Kf={key:0,class:"mt-1 text-[0.75rem] leading-normal text-text-secondary"},Qf=j({inheritAttrs:!1,__name:"QueueAssetPreview",props:{imageUrl:{},name:{},timeLabel:{}},emits:["image-click"],setup(e){const o=L(null),t=L(null),a=L(null),l=n(()=>{const s=o.value;s&&(t.value=s.naturalWidth||null,a.value=s.naturalHeight||null)},"onImgLoad");return(s,i)=>(c(),_("div",Bf,[p("div",Ff,[p("div",Uf,[p("img",{ref_key:"imgRef",ref:o,src:s.imageUrl,alt:s.name,class:"h-full w-full cursor-pointer object-contain",onClick:i[0]||(i[0]=r=>s.$emit("image-click")),onLoad:l},null,40,Gf),s.timeLabel?(c(),_("div",Hf,V(s.timeLabel),1)):A("",!0)]),p("div",jf,[p("div",{class:"truncate text-[0.875rem] leading-normal font-semibold text-text-primary",title:s.name},V(s.name),9,qf),t.value&&a.value?(c(),_("div",Kf,V(t.value)+"x"+V(a.value),1)):A("",!0)])])]))}}),Yf={class:"relative z-1 flex items-center gap-1"},Jf={class:"relative inline-flex items-center justify-center"},Xf={class:"inline-flex h-6 w-6 items-center justify-center overflow-hidden rounded-[6px]"},Zf=["src"],em={class:"relative z-1 min-w-0 flex-1"},tm=["title"],om={class:"relative z-1 flex items-center gap-2 text-text-secondary"},nm={key:"actions",class:"inline-flex items-center gap-2 pr-1"},sm={key:"secondary",class:"pr-2"},am=j({__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,a=o,{t:l}=de(),{progressBarContainerClass:s,progressBarPrimaryClass:i,progressBarSecondaryClass:r,hasProgressPercent:u,hasAnyProgressPercent:m,progressPercentStyle:f}=mr(),v=w(()=>at(l("g.cancel"))),g=w(()=>at(l("g.delete"))),y=w(()=>at(l("g.more"))),k=L(null),C=w(()=>t.activeDetailsId===t.jobId),h=n(()=>{I.value||a("details-enter",t.jobId)},"onRowEnter"),b=n(()=>a("details-leave",t.jobId),"onRowLeave"),T=n(()=>a("details-enter",t.jobId),"onPopoverEnter"),$=n(()=>a("details-leave",t.jobId),"onPopoverLeave"),I=L(!1),S=L(null),x=L(null),N=n(()=>{S.value!==null&&(clearTimeout(S.value),S.value=null)},"clearPreviewHideTimer"),P=n(()=>{x.value!==null&&(clearTimeout(x.value),x.value=null)},"clearPreviewShowTimer"),D=w(()=>t.state==="completed"&&!!t.iconImageUrl),W=n(()=>{D.value&&(N(),P(),x.value=window.setTimeout(()=>{I.value=!0,x.value=null},200))},"scheduleShowPreview"),F=n(()=>{N(),P(),S.value=window.setTimeout(()=>{I.value=!1,S.value=null},150)},"scheduleHidePreview"),z=n(()=>W(),"onIconEnter"),U=n(()=>F(),"onIconLeave"),H=n(()=>W(),"onPreviewEnter"),B=n(()=>F(),"onPreviewLeave"),G=L(null),Q=n(()=>{const Oe=k.value;if(!Oe)return;const $e=Oe.getBoundingClientRect(),Fe=8;G.value={top:$e.top,right:window.innerWidth-$e.left+Fe}},"updatePopoverPosition"),K=w(()=>C.value||I.value&&D.value);le(K,Oe=>{Oe?We(Q):G.value=null},{immediate:!1});const X=L(!1),ne=w(()=>t.iconName?t.iconName:fa(t.state)),Z=w(()=>t.state==="pending"&&ne.value===fa("pending")&&!t.iconImageUrl),re=w(()=>t.showClear!==void 0?t.showClear:t.state!=="completed"),ue=n(()=>a("details-leave",t.jobId),"emitDetailsLeave"),Pe=n(()=>{ue(),a("cancel")},"onCancelClick"),Ue=n(()=>{ue(),a("delete")},"onDeleteClick"),Ye=n(Oe=>{(t.showMenu===void 0||t.showMenu)&&a("menu",Oe)},"onContextMenu");return(Oe,$e)=>{const Fe=Ne("tooltip");return c(),_("div",{ref_key:"rowRef",ref:k,class:"relative",onMouseenter:h,onMouseleave:b,onContextmenu:ke(Ye,["stop","prevent"])},[(c(),O(kt,{to:"body"},[!I.value&&C.value&&G.value?(c(),_("div",{key:0,class:"fixed z-50",style:be({top:`${G.value.top}px`,right:`${G.value.right}px`}),onMouseenter:T,onMouseleave:$},[E(zf,{"job-id":t.jobId,"workflow-id":t.workflowId},null,8,["job-id","workflow-id"])],36)):A("",!0)])),(c(),O(kt,{to:"body"},[I.value&&D.value&&G.value?(c(),_("div",{key:0,class:"fixed z-50",style:be({top:`${G.value.top}px`,right:`${G.value.right}px`}),onMouseenter:H,onMouseleave:B},[E(Qf,{"image-url":Oe.iconImageUrl,name:t.title,"time-label":Oe.rightText||void 0,onImageClick:$e[0]||($e[0]=Ze=>a("view"))},null,8,["image-url","name","time-label"])],36)):A("",!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:$e[3]||($e[3]=Ze=>X.value=!0),onMouseleave:$e[4]||($e[4]=Ze=>X.value=!1)},[t.state==="running"&&d(m)(t.progressTotalPercent,t.progressCurrentPercent)?(c(),_("div",{key:0,class:q(d(s))},[d(u)(t.progressTotalPercent)?(c(),_("div",{key:0,class:q(d(i)),style:be(d(f)(t.progressTotalPercent))},null,6)):A("",!0),d(u)(t.progressCurrentPercent)?(c(),_("div",{key:1,class:q(d(r)),style:be(d(f)(t.progressCurrentPercent))},null,6)):A("",!0)],2)):A("",!0),p("div",Yf,[p("div",Jf,[p("div",{class:"absolute left-1/2 top-1/2 size-10 -translate-x-1/2 -translate-y-1/2",onMouseenter:ke(z,["stop"]),onMouseleave:ke(U,["stop"])},null,32),p("div",Xf,[Oe.iconImageUrl?(c(),_("img",{key:0,src:Oe.iconImageUrl,class:"h-full w-full object-cover"},null,8,Zf)):(c(),_("i",{key:1,class:q(d(te)(ne.value,"size-4",Z.value&&"animate-spin"))},null,2))])])]),p("div",em,[p("div",{class:"truncate opacity-90",title:t.title},[ge(Oe.$slots,"primary",{},()=>[Ce(V(t.title),1)])],8,tm)]),p("div",om,[E(zo,{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:M(()=>[X.value?(c(),_("div",nm,[t.state==="failed"&&re.value?pe((c(),O(Y,{key:0,variant:"destructive",size:"icon","aria-label":d(l)("g.delete"),onClick:ke(Ue,["stop"])},{default:M(()=>$e[5]||($e[5]=[p("i",{class:"icon-[lucide--trash-2] size-4"},null,-1)])),_:1},8,["aria-label"])),[[Fe,g.value,void 0,{top:!0}]]):t.state!=="completed"&&t.state!=="running"&&re.value?pe((c(),O(Y,{key:1,variant:"destructive",size:"icon","aria-label":d(l)("g.cancel"),onClick:ke(Pe,["stop"])},{default:M(()=>$e[6]||($e[6]=[p("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"])),[[Fe,v.value,void 0,{top:!0}]]):t.state==="completed"?(c(),O(Y,{key:2,variant:"textonly",size:"sm",onClick:$e[1]||($e[1]=ke(Ze=>a("view"),["stop"]))},{default:M(()=>[Ce(V(d(l)("menuLabels.View")),1)]),_:1})):A("",!0),t.showMenu===void 0||t.showMenu?pe((c(),O(Y,{key:3,variant:"textonly",size:"icon-sm","aria-label":d(l)("g.more"),onClick:$e[2]||($e[2]=ke(Ze=>a("menu",Ze),["stop"]))},{default:M(()=>$e[7]||($e[7]=[p("i",{class:"icon-[lucide--more-horizontal] size-4"},null,-1)])),_:1},8,["aria-label"])),[[Fe,y.value,void 0,{top:!0}]]):A("",!0)])):t.state!=="running"?(c(),_("div",sm,[ge(Oe.$slots,"secondary",{},()=>[Ce(V(t.rightText),1)])])):A("",!0)]),_:3}),t.state==="running"&&re.value?pe((c(),O(Y,{key:0,variant:"destructive",size:"icon","aria-label":d(l)("g.cancel"),onClick:ke(Pe,["stop"])},{default:M(()=>$e[8]||($e[8]=[p("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"])),[[Fe,v.value,void 0,{top:!0}]]):A("",!0)])],32)],544)}}}),lm={class:"flex flex-col gap-4 px-3 pb-4"},im={class:"text-[12px] leading-none text-text-secondary"},rm=j({__name:"JobGroupsList",props:{displayedJobGroups:{}},emits:["cancelItem","deleteItem","menu","viewItem"],setup(e,{emit:o}){const t=e,a=o,l=n(k=>{a("cancelItem",k)},"emitCancelItem"),s=n(k=>{a("deleteItem",k)},"emitDeleteItem"),i=L(null),r=L(null),u=L(null),m=n(()=>{r.value!==null&&(clearTimeout(r.value),r.value=null)},"clearHideTimer"),f=n(()=>{u.value!==null&&(clearTimeout(u.value),u.value=null)},"clearShowTimer"),v=n(k=>{m(),f(),u.value=window.setTimeout(()=>{i.value=k,u.value=null},200)},"onDetailsEnter"),g=n(k=>{m(),f(),r.value=window.setTimeout(()=>{i.value===k&&(i.value=null),r.value=null},150)},"onDetailsLeave"),y=n(()=>{m(),f(),i.value=null},"resetActiveDetails");return le(()=>t.displayedJobGroups,k=>{const C=i.value;if(!C)return;k.some(b=>b.items.some(T=>T.id===C))||y()}),nt(y),(k,C)=>(c(),_("div",lm,[(c(!0),_(ee,null,we(k.displayedJobGroups,h=>(c(),_("div",{key:h.key,class:"flex flex-col gap-2"},[p("div",im,V(h.label),1),(c(!0),_(ee,null,we(h.items,b=>(c(),O(am,{key:b.id,"job-id":b.id,"workflow-id":b.taskRef?.workflow?.id,state:b.state,title:b.title,"right-text":b.meta,"icon-name":b.iconName,"icon-image-url":b.iconImageUrl,"show-clear":b.showClear,"show-menu":!0,"progress-total-percent":b.progressTotalPercent,"progress-current-percent":b.progressCurrentPercent,"running-node-name":b.runningNodeName,"active-details-id":i.value,onCancel:n(T=>l(b),"onCancel"),onDelete:n(T=>s(b),"onDelete"),onMenu:n(T=>k.$emit("menu",b,T),"onMenu"),onView:n(T=>k.$emit("viewItem",b),"onView"),onDetailsEnter:v,onDetailsLeave:g},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))]))}}),um={class:"flex w-full flex-col gap-4"},dm={class:"flex items-center justify-between px-3"},cm={class:"ml-4 inline-flex items-center"},pm={class:"inline-flex h-6 items-center text-[12px] leading-none text-text-primary opacity-90"},fm={class:"font-bold"},mm={class:"ml-1"},gm={class:"flex-1 min-h-0 overflow-y-auto"},vm=j({__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:a}=de(),l=L(null),s=L(null),{jobMenuEntries:i}=gr(()=>l.value,v=>t("viewItem",v)),r=n(v=>{t("cancelItem",v)},"onCancelItemEvent"),u=n(v=>{t("deleteItem",v)},"onDeleteItemEvent"),m=n((v,g)=>{l.value=v,s.value?.open(g)},"onMenuItem"),f=n(async v=>{v.kind!=="divider"&&(v.onClick&&await v.onClick(),s.value?.hide())},"onJobMenuAction");return(v,g)=>(c(),_("div",um,[E(nf,{"header-title":v.headerTitle,"show-concurrent-indicator":v.showConcurrentIndicator,"concurrent-workflow-count":v.concurrentWorkflowCount,onClearHistory:g[0]||(g[0]=y=>v.$emit("clearHistory"))},null,8,["header-title","show-concurrent-indicator","concurrent-workflow-count"]),p("div",dm,[E(Y,{class:"grow gap-1 justify-center",variant:"secondary",size:"sm",onClick:g[1]||(g[1]=y=>v.$emit("showAssets"))},{default:M(()=>[g[7]||(g[7]=p("i",{class:"icon-[comfy--image-ai-edit] size-4"},null,-1)),p("span",null,V(d(a)("sideToolbar.queueProgressOverlay.showAssets")),1)]),_:1}),p("div",cm,[p("div",pm,[p("span",fm,V(v.queuedCount),1),p("span",mm,V(d(a)("sideToolbar.queueProgressOverlay.queuedSuffix")),1)]),v.queuedCount>0?(c(),O(Y,{key:0,class:"ml-2",variant:"destructive",size:"icon","aria-label":d(a)("sideToolbar.queueProgressOverlay.clearQueued"),onClick:g[2]||(g[2]=y=>v.$emit("clearQueued"))},{default:M(()=>g[8]||(g[8]=[p("i",{class:"icon-[lucide--list-x] size-4"},null,-1)])),_:1},8,["aria-label"])):A("",!0)])]),E(wf,{"selected-job-tab":v.selectedJobTab,"selected-workflow-filter":v.selectedWorkflowFilter,"selected-sort-mode":v.selectedSortMode,"has-failed-jobs":v.hasFailedJobs,"onUpdate:selectedJobTab":g[3]||(g[3]=y=>v.$emit("update:selectedJobTab",y)),"onUpdate:selectedWorkflowFilter":g[4]||(g[4]=y=>v.$emit("update:selectedWorkflowFilter",y)),"onUpdate:selectedSortMode":g[5]||(g[5]=y=>v.$emit("update:selectedSortMode",y))},null,8,["selected-job-tab","selected-workflow-filter","selected-sort-mode","has-failed-jobs"]),p("div",gm,[E(rm,{"displayed-job-groups":v.displayedJobGroups,onCancelItem:r,onDeleteItem:u,onViewItem:g[6]||(g[6]=y=>v.$emit("viewItem",y)),onMenu:m},null,8,["displayed-job-groups"])]),E(lf,{ref_key:"jobContextMenuRef",ref:s,entries:d(i),onAction:f},null,8,["entries"])]))}}),hm={class:"w-[360px] rounded-2xl border border-interface-stroke bg-interface-panel-surface text-text-primary shadow-interface font-inter"},ym={class:"flex items-center justify-between border-b border-interface-stroke px-4 py-4"},bm={class:"m-0 text-[14px] font-normal leading-none"},wm={class:"flex flex-col gap-4 px-4 py-4 text-[14px] text-text-secondary"},km={class:"m-0"},Cm={class:"m-0"},xm={class:"flex items-center justify-end px-4 py-4"},Sm={class:"flex items-center gap-4 leading-none"},_m=j({__name:"QueueClearHistoryDialog",setup(e){const o=gt(),t=Ot(),{t:a}=de(),{wrapWithErrorHandlingAsync:l}=Yt(),s=L(!1),i=l(async()=>{await t.clear(["history"]),o.closeDialog()},void 0,()=>{s.value=!1}),r=n(async()=>{s.value||(s.value=!0,await i())},"onConfirm"),u=n(()=>{o.closeDialog()},"onCancel");return(m,f)=>(c(),_("section",hm,[p("header",ym,[p("p",bm,V(d(a)("sideToolbar.queueProgressOverlay.clearHistoryDialogTitle")),1),E(Y,{size:"icon",variant:"muted-textonly","aria-label":d(a)("g.close"),onClick:u},{default:M(()=>f[0]||(f[0]=[p("i",{class:"icon-[lucide--x] block size-4 leading-none"},null,-1)])),_:1},8,["aria-label"])]),p("div",wm,[p("p",km,V(d(a)("sideToolbar.queueProgressOverlay.clearHistoryDialogDescription")),1),p("p",Cm,V(d(a)("sideToolbar.queueProgressOverlay.clearHistoryDialogAssetsNote")),1)]),p("footer",xm,[p("div",Sm,[E(Y,{variant:"muted-textonly",size:"lg",onClick:u},{default:M(()=>[Ce(V(d(a)("g.cancel")),1)]),_:1}),E(Y,{variant:"secondary",size:"lg",disabled:s.value,onClick:r},{default:M(()=>[Ce(V(d(a)("g.clear")),1)]),_:1},8,["disabled"])])])]))}}),Tm=n(()=>{const e=Ot(),o=dt(),t=w(()=>e.runningTasks.length>0||!o.isIdle),a=L(null),l=L(null),s=L(null),i=n(()=>{s.value!==null&&(clearTimeout(s.value),s.value=null)},"clearDismissTimer"),r=n(()=>{i(),s.value=window.setTimeout(()=>{l.value=null,s.value=null},6e3)},"startDismissTimer"),u=n(()=>{l.value=null,i()},"clearSummary");return le(t,(f,v)=>{if(!v&&f&&(a.value=Date.now()),v&&!f){const g=a.value??0,y=e.historyTasks.filter(T=>{const $=T.executionEndTimestamp;return typeof $=="number"&&$>=g});if(!y.length){l.value=null,i();return}let k=0,C=0;const h=[];for(const T of y){const $=_l(T,!1);if($==="completed"){k++;const I=T.previewOutput;I?.isImage&&h.push(I.urlWithTimestamp)}else $==="failed"&&C++}if(k===0&&C===0){l.value=null,i();return}let b="mixed";C===0?b="allSuccess":k===0&&(b="allFailed"),l.value={mode:b,completedCount:k,failedCount:C,thumbnailUrls:h.slice(0,3)},r()}},{immediate:!0}),{summary:w(()=>l.value),clearSummary:u}},"useCompletionSummary");function $m(e){const o=L(-1),t=Ke([]);return{galleryActiveIndex:o,galleryItems:t,onViewItem:n(l=>{const s=e().flatMap(u=>{const m=u.previewOutput;return m&&m.supportsPreview?[m]:[]});if(!s.length)return;t.value=s;const i=l.taskRef?.previewOutput?.url,r=i?s.findIndex(u=>u.url===i):0;o.value=r>=0?r:0},"onViewItem")}}n($m,"useResultGallery");const Nm={class:q(["flex","justify-end","w-full","pointer-events-none"])},Im=j({__name:"QueueProgressOverlay",props:{expanded:{type:Boolean},menuHovered:{type:Boolean,default:!1}},emits:["update:expanded"],setup(e,{emit:o}){const t=e,a=o,{t:l}=de(),s=Ot(),i=Te(),r=dt(),u=gn(),m=gt(),f=$s(),v=vr(),{wrapWithErrorHandlingAsync:g}=Yt(),{totalPercentFormatted:y,currentNodePercentFormatted:k,totalProgressStyle:C,currentNodeProgressStyle:h}=hr(),b=L(!1),T=w(()=>b.value||t.menuHovered),$=L(!1),I=w({get:n(()=>t.expanded===void 0?$.value:t.expanded,"get"),set:n(me=>{t.expanded===void 0&&($.value=me),a("update:expanded",me)},"set")}),{summary:S,clearSummary:x}=Tm(),N=w(()=>S.value!==null),P=w(()=>s.runningTasks.length),D=w(()=>s.pendingTasks.length),W=w(()=>!r.isIdle),F=w(()=>P.value>0||W.value),z=w(()=>P.value+D.value),U=w(()=>I.value?"expanded":F.value?"active":N.value?"empty":"hidden"),H=w(()=>U.value==="expanded"||U.value==="empty"||U.value==="active"&&T.value),B=w(()=>U.value!=="hidden"),G=w(()=>H.value?"border-interface-stroke bg-interface-panel-surface shadow-interface":"border-transparent bg-transparent shadow-none"),Q=w(()=>`flex items-center justify-end gap-4 transition-opacity duration-200 ease-in-out ${U.value==="active"&&T.value?"opacity-100 pointer-events-auto":"opacity-0 pointer-events-none"}`),K=w(()=>F.value?`${z.value} ${l("sideToolbar.queueProgressOverlay.activeJobsSuffix")}`:l("sideToolbar.queueProgressOverlay.jobQueue")),X=w(()=>r.runningWorkflowCount),ne=w(()=>X.value>1),{selectedJobTab:Z,selectedWorkflowFilter:re,selectedSortMode:ue,hasFailedJobs:Pe,filteredTasks:Ue,groupedJobItems:Ye,currentNodeName:Oe}=yr(),$e=w(()=>Ye.value),Fe=g(async me=>{const _e=me.taskRef?.promptId;_e&&(me.state==="running"||me.state==="initialization"?(await Ie.interrupt(_e),await s.update()):me.state==="pending"&&(await Ie.deleteItem("queue",_e),await s.update()))}),Ze=g(async me=>{me.taskRef&&await s.delete(me.taskRef)}),{galleryActiveIndex:_t,galleryItems:Xt,onViewItem:_o}=$m(()=>Ue.value),ct=n(me=>{I.value=me},"setExpanded"),Zt=n(()=>{ct(!0)},"openExpandedFromEmpty"),eo=n(()=>{ct(!0)},"viewAllJobs"),zt=n(()=>{Zt(),x()},"onSummaryClick"),vt=n(()=>{u.activeSidebarTabId="assets"},"openAssetsSidebar"),ht=n(async me=>{const _e=me.taskRef,oe=_e?.promptId,ae=_e?.previewOutput;if(!oe||!ae)return;const yt=String(oe);if(vt(),await We(),await f.updateHistory(),!f.historyAssets.find(Pt=>Pt.id===yt))throw new Error("Asset not found in media assets panel");v.setSelection([yt])},"focusAssetInSidebar"),To=g(async me=>{_o(me),await ht(me)}),to=g(async()=>{await i.execute("Comfy.ClearPendingTasks")}),$o=g(async()=>{const _e=s.runningTasks.map(oe=>oe.promptId).filter(oe=>typeof oe=="string"&&oe.length>0);_e.length&&await Promise.all(_e.map(oe=>Ie.interrupt(oe)))}),fe=n(()=>{m.showDialog({key:"queue-clear-history",component:_m,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"),Se=n(()=>{fe()},"onClearHistoryFromMenu");return(me,_e)=>(c(),_(ee,null,[pe(p("div",Nm,[p("div",{class:q(["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",G.value]),onMouseenter:_e[3]||(_e[3]=oe=>b.value=!0),onMouseleave:_e[4]||(_e[4]=oe=>b.value=!1)},[I.value?(c(),O(vm,{key:0,"selected-job-tab":d(Z),"onUpdate:selectedJobTab":_e[0]||(_e[0]=oe=>je(Z)?Z.value=oe:null),"selected-workflow-filter":d(re),"onUpdate:selectedWorkflowFilter":_e[1]||(_e[1]=oe=>je(re)?re.value=oe:null),"selected-sort-mode":d(ue),"onUpdate:selectedSortMode":_e[2]||(_e[2]=oe=>je(ue)?ue.value=oe:null),class:"flex-1 min-h-0","header-title":K.value,"show-concurrent-indicator":ne.value,"concurrent-workflow-count":X.value,"queued-count":D.value,"displayed-job-groups":$e.value,"has-failed-jobs":d(Pe),onShowAssets:vt,onClearHistory:Se,onClearQueued:d(to),onCancelItem:d(Fe),onDeleteItem:d(Ze),onViewItem:d(To)},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"])):F.value?(c(),O(Rp,{key:1,"total-progress-style":d(C),"current-node-progress-style":d(h),"total-percent-formatted":d(y),"current-node-percent-formatted":d(k),"current-node-name":d(Oe),"running-count":P.value,"queued-count":D.value,"bottom-row-class":Q.value,onInterruptAll:d($o),onClearQueued:d(to),onViewAllJobs:eo},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"])):d(S)?(c(),O(Qp,{key:2,summary:d(S),onSummaryClick:zt},null,8,["summary"])):A("",!0)],34)],512),[[et,B.value]]),E(br,{"active-index":d(_t),"onUpdate:activeIndex":_e[5]||(_e[5]=oe=>je(_t)?_t.value=oe:null),"all-gallery-items":d(Xt)},null,8,["active-index","all-gallery-items"])],64))}}),Pm=Vt("actionBarButton",()=>{const e=Ms();return{buttons:w(()=>e.extensions.flatMap(t=>t.actionBarButtons??[]))}}),Mm={class:"flex h-full shrink-0 items-center gap-1"},Dm={key:0},Am=j({__name:"ActionBarButtons",setup(e){const o=Pm(),a=mo(vo).smaller("sm");return(l,s)=>{const i=Ne("tooltip");return c(),_("div",Mm,[(c(!0),_(ee,null,we(d(o).buttons,(r,u)=>pe((c(),O(Y,{key:u,"aria-label":r.tooltip||r.label,class:q([r.class,"h-7 rounded-full"]),variant:"muted-textonly",size:"sm",onClick:r.onClick},{default:M(()=>[p("i",{class:q(r.icon)},null,2),!d(a)&&r.label?(c(),_("span",Dm,V(r.label),1)):A("",!0)]),_:2},1032,["aria-label","class","onClick"])),[[i,r.tooltip,void 0,{bottom:!0}]])),128))])}}}),Lm={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)]"},Em={class:"flex flex-col items-center px-0 py-3 mb-4"},Rm={class:"my-0 mb-1 truncate text-base font-bold text-base-foreground"},Vm={key:0,class:"my-0 truncate text-sm text-muted"},Om={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"},Wm={key:0,class:"flex items-center gap-2 px-4 py-2"},zm={key:1,class:"text-base font-semibold text-base-foreground"},Bm={class:"icon-[lucide--circle-help] cursor-help text-base text-muted-foreground mr-auto"},Fm={key:1,class:"flex justify-center px-4"},Um={class:"text-sm text-base-foreground flex-1"},Gm={class:"text-sm text-base-foreground flex-1"},Hm={key:0,class:"text-xs font-bold text-base-background bg-base-foreground px-1.5 py-0.5 rounded-full"},jm={class:"text-sm text-base-foreground flex-1"},qm={class:"text-sm text-base-foreground flex-1"},Km={class:"text-sm text-base-foreground flex-1"},Qm=j({__name:"CurrentUserPopover",emits:["close"],setup(e,{emit:o}){const t=o,{buildDocsUrl:a,docsPaths:l}=bo(),{userDisplayName:s,userEmail:i,userPhotoUrl:r,handleSignOut:u}=wo(),m=Tl(),f=$l(),v=rt(),{isActiveSubscription:g,subscriptionTierName:y,subscriptionTier:k,fetchStatus:C}=Fo(),h=Yc(),{locale:b}=de(),T=w(()=>{const F=f.balance?.effective_balance_micros??f.balance?.amount_micros??0;return wr({cents:F,locale:b.value,numberOptions:{minimumFractionDigits:0,maximumFractionDigits:2}})}),$=w(()=>{const F=k.value;return F==="FOUNDERS_EDITION"||F==="STANDARD"||F==="CREATOR"}),I=n(()=>{v.showSettingsDialog("user"),t("close")},"handleOpenUserSettings"),S=n(()=>{h.show(),t("close")},"handleOpenPlansAndPricing"),x=n(()=>{v.showSettingsDialog("credits"),t("close")},"handleOpenPlanAndCreditsSettings"),N=n(()=>{v.showTopUpCreditsDialog(),t("close")},"handleTopUp"),P=n(()=>{window.open(a(l.partnerNodesPricing,{includeLocale:!0}),"_blank"),t("close")},"handleOpenPartnerNodesInfo"),D=n(async()=>{await u(),t("close")},"handleLogout"),W=n(async()=>{await C()},"handleSubscribed");return Re(()=>{m.fetchBalance()}),(F,z)=>{const U=Ne("tooltip");return c(),_("div",Lm,[p("div",Em,[E(Gl,{class:"mb-1","photo-url":d(r),"pt:icon:class":{"text-2xl!":!d(r)},size:"large"},null,8,["photo-url","pt:icon:class"]),p("h3",Rm,V(d(s)||F.$t("g.user")),1),d(i)?(c(),_("p",Vm,V(d(i)),1)):A("",!0),d(y)?(c(),_("span",Om,V(d(y)),1)):A("",!0)]),d(g)?(c(),_("div",Wm,[z[0]||(z[0]=p("i",{class:"icon-[lucide--component] text-amber-400 text-sm"},null,-1)),d(f).isFetchingBalance?(c(),O(d(Ts),{key:0,width:"4rem",height:"1.25rem",class:"w-full"})):(c(),_("span",zm,V(T.value),1)),pe(p("i",Bm,null,512),[[U,{value:F.$t("credits.unified.tooltip"),showDelay:300}]]),E(Y,{variant:"secondary",size:"sm",class:"text-base-foreground","data-testid":"add-credits-button",onClick:N},{default:M(()=>[Ce(V(F.$t("subscription.addCredits")),1)]),_:1})])):(c(),_("div",Fm,[E(Qc,{fluid:!1,label:F.$t("subscription.subscribeToComfyCloud"),size:"sm",variant:"gradient",onSubscribed:W},null,8,["label"])])),E(d(ra),{class:"my-2 mx-0"}),d(g)?(c(),_("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:P},[z[1]||(z[1]=p("i",{class:"icon-[lucide--tag] text-muted-foreground text-sm"},null,-1)),p("span",Um,V(F.$t("subscription.partnerNodesCredits")),1)])):A("",!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:S},[z[2]||(z[2]=p("i",{class:"icon-[lucide--receipt-text] text-muted-foreground text-sm"},null,-1)),p("span",Gm,V(F.$t("subscription.plansAndPricing")),1),$.value?(c(),_("span",Hm,V(F.$t("subscription.upgrade")),1)):A("",!0)]),d(g)?(c(),_("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:x},[z[3]||(z[3]=p("i",{class:"icon-[lucide--file-text] text-muted-foreground text-sm"},null,-1)),p("span",jm,V(F.$t("subscription.managePlan")),1)])):A("",!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:I},[z[4]||(z[4]=p("i",{class:"icon-[lucide--settings-2] text-muted-foreground text-sm"},null,-1)),p("span",qm,V(F.$t("userSettings.accountSettings")),1)]),E(d(ra),{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:D},[z[5]||(z[5]=p("i",{class:"icon-[lucide--log-out] text-muted-foreground text-sm"},null,-1)),p("span",Km,V(F.$t("auth.signOut.signOut")),1)])])}}}),Ym={key:0,class:"icon-[lucide--chevron-down] size-3 px-1"},Jl=j({__name:"CurrentUserButton",props:{showArrow:{type:Boolean,default:!0},compact:{type:Boolean,default:!1}},setup(e){const{isLoggedIn:o,userPhotoUrl:t}=wo(),a=L(null),l=w(()=>t.value??void 0),s=n(()=>{a.value?.hide()},"closePopover");return(i,r)=>(c(),_("div",null,[d(o)?(c(),O(Y,{key:0,class:"p-1 hover:bg-transparent",variant:"muted-textonly","aria-label":i.$t("g.currentUser"),onClick:r[0]||(r[0]=u=>a.value?.toggle(u))},{default:M(()=>[p("div",{class:q(d(te)("flex items-center gap-1 rounded-full hover:bg-interface-button-hover-surface justify-center",i.compact&&"size-full aspect-square"))},[E(Gl,{"photo-url":l.value,class:q(i.compact&&"size-full")},null,8,["photo-url","class"]),i.showArrow?(c(),_("i",Ym)):A("",!0)],2)]),_:1},8,["aria-label"])):A("",!0),E(d(ot),{ref_key:"popover",ref:a,"show-arrow":!1,pt:{root:{class:"rounded-lg"}}},{default:M(()=>[E(Qm,{onClose:s})]),_:1},512)]))}}),Jm={class:"mb-1"},Xm=["href"],Xl=j({__name:"LoginButton",props:{class:{}},setup(e){const{isLoggedIn:o,handleSignIn:t}=wo(),{buildDocsUrl:a}=bo(),l=a("/tutorials/api-nodes/overview#api-nodes",{includeLocale:!0}),s=L(null);let i=null,r=null;const u=n(v=>{i&&(clearTimeout(i),i=null),r&&(clearTimeout(r),r=null),r=setTimeout(()=>{s.value&&s.value.show(v,v.target)},200)},"showPopover"),m=n(()=>{i&&(clearTimeout(i),i=null)},"cancelHidePopover"),f=n(()=>{r&&(clearTimeout(r),r=null),i=setTimeout(()=>{s.value&&s.value.hide()},150)},"hidePopover");return(v,g)=>(c(),_(ee,null,[d(o)?A("",!0):(c(),O(Y,{key:0,variant:"textonly",size:"icon",class:q(d(te)("group rounded-full text-base-foreground p-0",e.class)),"aria-label":d(se)("g.login"),onClick:g[0]||(g[0]=y=>d(t)()),onMouseenter:u,onMouseleave:f},{default:M(()=>g[1]||(g[1]=[p("span",{class:"flex size-full items-center justify-center rounded-full bg-secondary-background transition-colors group-hover:bg-transparent"},[p("i",{class:"icon-[lucide--user] size-4"})],-1)])),_:1},8,["class","aria-label"])),E(d(ot),{ref_key:"popoverRef",ref:s,class:"p-2",onMouseout:f,onMouseover:m},{default:M(()=>[p("div",null,[p("div",Jm,V(d(se)("auth.loginButton.tooltipHelp")),1),p("a",{href:d(l),target:"_blank",class:"text-neutral-500 hover:text-primary"},V(d(se)("auth.loginButton.tooltipLearnMore")),9,Xm)])]),_:1},512)],64))}}),Ra=il.create({baseURL:Nl(),headers:{"Content-Type":"application/json"}}),Zm=n(()=>{const e=L(!1),o=L(null);le(()=>Nl(),s=>{Ra.defaults.baseURL=s});const t=n((s,i,r)=>{if(!il.isAxiosError(s))return s instanceof Error?`${i}: ${s.message}`:`${i}: Unknown error occurred`;const u=s;if(u.response){const{status:m,data:f}=u.response;if(r&&r[m])return r[m];switch(m){case 400:return`Bad request: ${f?.message||"Invalid input"}`;case 401:return"Unauthorized: Authentication required";case 403:return`Forbidden: ${f?.message||"Access denied"}`;case 404:return`Not found: ${f?.message||"Resource not found"}`;case 500:return`Server error: ${f?.message||"Internal server error"}`;default:return`${i}: ${f?.message||u.message}`}}return`${i}: ${u.message}`},"handleApiError"),a=n(async(s,i,r)=>{e.value=!0,o.value=null;try{return(await s()).data}catch(u){return kr(u)||(o.value=t(u,i,r)),null}finally{e.value=!1}},"executeApiRequest");return{isLoading:e,error:o,getReleases:n(async(s,i)=>{const r="/releases";return await a(()=>Ra.get(r,{params:s,signal:i}),"Failed to get releases",{400:"Invalid project or version parameter"})},"getReleases")}},"useReleaseService"),So=Vt("release",()=>{const e=L([]),o=L(!1),t=L(null),a=Zm(),l=Ds(),s=ie(),i=w(()=>l?.systemStats?.system?.comfyui_version??""),r=w(()=>s.get("Comfy.Locale")),u=w(()=>s.get("Comfy.Release.Version")),m=w(()=>s.get("Comfy.Release.Status")),f=w(()=>s.get("Comfy.Release.Timestamp")),v=w(()=>s.get("Comfy.Notification.ShowVersionUpdates")),g=w(()=>e.value[0]??null),y=w(()=>e.value.slice(0,3)),k=4320*60*1e3,C=n((F,z)=>Ft.valid(F)&&Ft.valid(z)?Ft.compare(F,z):F===z?0:1,"compareVersions"),h=w(()=>!!g.value&&C(g.value.version,i.value||"0.0.0")>0),b=w(()=>!!g.value&&C(g.value.version,i.value||"0.0.0")===0),T=w(()=>{const F=g.value?.attention;return F==="medium"||F==="high"}),$=w(()=>!(!Xe()||Lt||!v.value||!h.value||!T.value||u.value===g.value?.version&&["skipped","changelog seen"].includes(m.value))),I=w(()=>{if(!Xe()||Lt||!v.value||!h.value)return!1;const{version:F}=g.value;return u.value===F&&m.value==="changelog seen"?!1:T.value?!0:!(u.value===F&&m.value==="skipped"&&f.value&&Date.now()-f.value>=k)}),S=w(()=>!(!Xe()&&!Lt||!v.value||!g.value||!!Ft.valid(i.value)&&!b.value||u.value===g.value.version&&m.value==="what's new seen"));async function x(F){F!==g.value?.version||m.value==="changelog seen"||(await s.set("Comfy.Release.Version",F),await s.set("Comfy.Release.Status","skipped"),await s.set("Comfy.Release.Timestamp",Date.now()))}n(x,"handleSkipRelease");async function N(F){F===g.value?.version&&(await s.set("Comfy.Release.Version",F),await s.set("Comfy.Release.Status","changelog seen"),await s.set("Comfy.Release.Timestamp",Date.now()))}n(N,"handleShowChangelog");async function P(F){F===g.value?.version&&(await s.set("Comfy.Release.Version",F),await s.set("Comfy.Release.Status","what's new seen"),await s.set("Comfy.Release.Timestamp",Date.now()))}n(P,"handleWhatsNewSeen");async function D(){if(!o.value&&v.value&&!l.systemStats?.system?.argv?.includes("--disable-api-nodes")){o.value=!0,t.value=null;try{l.systemStats||await rl(l.isInitialized);const F=await a.getReleases({project:Lt?"cloud":"comfyui",current_version:i.value,form_factor:l.getFormFactor(),locale:Cr(r.value)});F!==null?e.value=F:a.error.value&&(t.value=a.error.value)}catch(F){t.value=F instanceof Error?F.message:"Unknown error occurred"}finally{o.value=!1}}}n(D,"fetchReleases");async function W(){await D()}return n(W,"initialize"),{releases:e,isLoading:o,error:t,recentRelease:g,recentReleases:y,shouldShowToast:$,shouldShowRedDot:I,shouldShowPopup:S,shouldShowUpdateButton:h,handleSkipRelease:x,handleShowChangelog:N,handleWhatsNewSeen:P,fetchReleases:D,initialize:W}}),eg=Object.freeze(Object.defineProperty({__proto__:null,useReleaseStore:So},Symbol.toStringTag,{value:"Module"})),tg={class:"min-w-0 flex-1"},og={class:"mx-1 flex flex-col items-end gap-1"},ng={class:"flex items-center gap-2"},sg={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"},ag={key:0,class:"absolute top-0.5 right-1 size-2 rounded-full bg-red-500"},lg={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"},ig={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-base-foreground"},rg=j({__name:"TopMenuSection",setup(e){const o=ie(),t=lt(),a=ut(),l=wt(),{isLoggedIn:s}=wo(),i=Xe(),{t:r}=de(),{toastErrorHandler:u}=Yt(),m=Te(),f=Ot(),v=ns(),{isOverlayExpanded:g}=Be(v),y=So(),{shouldShowRedDot:k}=Be(y),{shouldShowRedDot:C}=As(),h=L(!1),b=w(()=>f.pendingTasks.length),T=w(()=>o.get("Comfy.UI.TabBarLayout")==="Integrated"),$=w(()=>at(r("sideToolbar.queueProgressOverlay.viewJobHistory"))),I=w(()=>at(r("menu.customNodesManager"))),S=w(()=>k.value||C.value),{isOpen:x}=Be(a),N=w(()=>at(r("rightSidePanel.togglePanel"))),P=L();Re(()=>{P.value&&(J.menu.element.style.width="fit-content",P.value.appendChild(J.menu.element))});const D=n(()=>{m.execute("Comfy.Queue.ToggleOverlay")},"toggleQueueOverlay"),W=n(async()=>{try{await l.openManager({initialTab:ro.All,showToastOnLegacyError:!1})}catch(F){try{u(F)}catch(z){console.error(F),console.error(z)}}},"openCustomNodeManager");return(F,z)=>{const U=Ne("tooltip");return d(t).focusMode?A("",!0):(c(),_("div",{key:0,class:"ml-1 flex gap-x-0.5 pt-1",onMouseenter:z[1]||(z[1]=H=>h.value=!0),onMouseleave:z[2]||(z[2]=H=>h.value=!1)},[p("div",tg,[E(hp)]),p("div",og,[p("div",ng,[d(l).shouldShowManagerButtons.value?(c(),_("div",sg,[pe((c(),O(Y,{variant:"secondary",size:"icon","aria-label":d(r)("menu.customNodesManager"),class:"relative",onClick:W},{default:M(()=>[z[3]||(z[3]=p("i",{class:"icon-[lucide--puzzle] size-4"},null,-1)),S.value?(c(),_("span",ag)):A("",!0)]),_:1},8,["aria-label"])),[[U,I.value,void 0,{bottom:!0}]])])):A("",!0),p("div",lg,[E(Am),p("div",{ref_key:"legacyCommandsContainerRef",ref:P,class:"[&:not(:has(*>*:not(:empty)))]:hidden"},null,512),E(ip),pe((c(),O(Y,{type:"destructive",size:"icon","aria-pressed":d(g),"aria-label":d(r)("sideToolbar.queueProgressOverlay.expandCollapsedQueue"),onClick:D},{default:M(()=>[z[4]||(z[4]=p("i",{class:"icon-[lucide--history] size-4"},null,-1)),b.value>0?(c(),_("span",ig,V(b.value),1)):A("",!0)]),_:1},8,["aria-pressed","aria-label"])),[[U,$.value,void 0,{bottom:!0}]]),d(s)&&!T.value?(c(),O(Jl,{key:0,class:"shrink-0"})):d(i)&&!T.value?(c(),O(Xl,{key:1})):A("",!0),d(x)?A("",!0):pe((c(),O(Y,{key:2,type:"secondary",size:"icon","aria-label":d(r)("rightSidePanel.togglePanel"),onClick:d(a).togglePanel},{default:M(()=>z[5]||(z[5]=[p("i",{class:"icon-[lucide--panel-right] size-4"},null,-1)])),_:1},8,["aria-label","onClick"])),[[U,N.value,void 0,{bottom:!0}]])])]),E(Im,{expanded:d(g),"onUpdate:expanded":z[0]||(z[0]=H=>je(g)?g.value=H:null),"menu-hovered":h.value},null,8,["expanded","menu-hovered"])])],32))}}}),Zl=j({__name:"ExtensionSlot",props:{extension:{}},setup(e){const o=e,t=n((a,l)=>{a.render(l)},"mountCustomExtension");return nt(()=>{o.extension.type==="custom"&&o.extension.destroy&&o.extension.destroy()}),(a,l)=>a.extension.type==="vue"?(c(),O(po(a.extension.component),{key:0})):(c(),_("div",{key:1,ref:n(s=>{s&&t(o.extension,s)},"ref")},null,512))}}),ug={class:"flex h-full flex-col"},dg={class:"flex w-full justify-between"},cg={class:"tabs-container font-inter"},pg={class:"font-normal"},fg={class:"flex items-center gap-2"},mg={class:"h-0 grow"},gg=j({__name:"BottomPanel",setup(e){const o=yo(),t=rt(),{t:a}=de(),l=w(()=>{const m=o.activeBottomPanelTabId;return m==="shortcuts-essentials"||m==="shortcuts-view-controls"}),s=n(m=>m!=="shortcuts-essentials"&&m!=="shortcuts-view-controls","shouldCapitalizeTab"),i=n(m=>{const f=m.titleKey?a(m.titleKey):m.title||"";return s(m.id)?f.toUpperCase():f},"getTabDisplayTitle"),r=n(async()=>{t.showSettingsDialog("keybinding")},"openKeybindingSettings"),u=n(()=>{o.activePanel=null},"closeBottomPanel");return(m,f)=>(c(),_("div",ug,[(c(),O(d(Yi),{key:m.$i18n.locale,value:d(o).activeBottomPanelTabId,"onUpdate:value":f[0]||(f[0]=v=>d(o).activeBottomPanelTabId=v),style:{"--p-tabs-tablist-background":"var(--comfy-menu-bg)"}},{default:M(()=>[E(d(Ji),{"pt:tab-list":"border-none h-full flex items-center py-2 border-b-1 border-solid",class:"bg-transparent"},{default:M(()=>[p("div",dg,[p("div",cg,[(c(!0),_(ee,null,we(d(o).bottomPanelTabs,v=>(c(),O(d(Xi),{key:v.id,value:v.id,class:q(["m-1 mx-2 border-none font-inter",{"tab-list-single-item":d(o).bottomPanelTabs.length===1}]),"pt:root":n(g=>({class:{"p-3 rounded-lg":!0,"pointer-events-none":d(o).bottomPanelTabs.length===1},style:{color:"var(--fg-color)",backgroundColor:!g.context.active||d(o).bottomPanelTabs.length===1?"":"var(--bg-color)"}}),"pt:root")},{default:M(()=>[p("span",pg,V(i(v)),1)]),_:2},1032,["value","class","pt:root"]))),128))]),p("div",fg,[l.value?(c(),O(Y,{key:0,variant:"muted-textonly",size:"sm",onClick:r},{default:M(()=>[f[1]||(f[1]=p("i",{class:"pi pi-cog"},null,-1)),Ce(" "+V(m.$t("shortcuts.manageShortcuts")),1)]),_:1})):A("",!0),E(Y,{class:"justify-self-end",variant:"muted-textonly",size:"sm","aria-label":d(a)("g.close"),onClick:u},{default:M(()=>f[2]||(f[2]=[p("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])])]),_:1})]),_:1},8,["value"])),p("div",mg,[d(o).bottomPanelVisible&&d(o).activeBottomPanelTab?(c(),O(Zl,{key:0,extension:d(o).activeBottomPanelTab},null,8,["extension"])):A("",!0)])]))}}),vg=Ve(gg,[["__scopeId","data-v-9d1ea2c9"]]);function ei(e={}){const{useTransform:o=!1}=e,a=he().getCanvas(),{canvasPosToClientPos:l,update:s}=xr(a.canvas,a),i=ie();le([()=>i.get("Comfy.Sidebar.Location"),()=>i.get("Comfy.Sidebar.Size"),()=>i.get("Comfy.UseNewMenu")],()=>s(),{flush:"post"});const r=L({}),u=n(f=>{const{pos:v,size:g,scale:y=a.ds.scale}=f,[k,C]=l(v),[h,b]=g;return o?{position:"fixed",transformOrigin:"0 0",transform:`scale(${y})`,left:`${k}px`,top:`${C}px`,width:`${h}px`,height:`${b}px`}:{position:"fixed",left:`${k}px`,top:`${C}px`,width:`${h*y}px`,height:`${b*y}px`}},"computeStyle");return{style:r,updatePosition:n(f=>{r.value=u(f)},"updatePosition")}}n(ei,"useAbsolutePosition");function hg(e,o){const t=Math.max(e.x,o.x),a=Math.max(e.y,o.y),l=Math.min(e.x+e.width,o.x+o.width),s=Math.min(e.y+e.height,o.y+o.height);return t>=l||a>=s?null:[t,a,l-t,s-a]}n(hg,"intersect");const yg=n((e={})=>{const o=L({}),{margin:t=4}=e,a=n((s,i,r,u)=>{if(!r&&u){const{scale:m,offset:f}=u,v=hg({x:s.left-i.left,y:s.top-i.top,width:s.width,height:s.height},{x:(u.x+f[0]-t)*m,y:(u.y+f[1]-t)*m,width:(u.width+2*t)*m,height:(u.height+2*t)*m});if(!v)return"";const g=(v[0]-s.left+i.left)/m+"px",y=(v[1]-s.top+i.top)/m+"px",k=v[2]/m+"px",C=v[3]/m+"px";return`polygon(0% 0%, 0% 100%, ${g} 100%, ${g} ${y}, calc(${g} + ${k}) ${y}, calc(${g} + ${k}) calc(${y} + ${C}), ${g} calc(${y} + ${C}), ${g} 100%, 100% 100%, 100% 0%)`}return""},"calculateClipPath");return{style:o,updateClipPath:n((s,i,r,u)=>{const m=s.getBoundingClientRect(),f=i.getBoundingClientRect(),v=a(m,f,r,u);o.value={clipPath:v||"none",willChange:"clip-path"}},"updateClipPath")}},"useDomClipping"),bg=["title"],wg=j({__name:"DomWidget",props:{widgetState:{}},emits:["update:widgetValue"],setup(e,{emit:o}){const t=e.widgetState.widget,a=o,l=L(),s=L({}),{style:i,updatePosition:r}=ei({useTransform:!0}),{style:u,updateClipPath:m}=yg(),f=he(),v=ie(),g=w(()=>v.get("Comfy.DOMClippingEnabled")),y=n(()=>{const $=f.canvas;if(!$||!l.value)return;const I=Object.values($.selected_nodes??{})[0];if(!I){m(l.value,$.canvas,!1,void 0);return}const S=I===e.widgetState.widget.node,x=I?.renderArea,N=$.ds.offset,P=$.ds.scale,D=x?{x:x[0],y:x[1],width:x[2],height:x[3],scale:P,offset:[N[0],N[1]]}:void 0;m(l.value,$.canvas,S,D)},"updateDomClipping"),{left:k,top:C}=ws(f.getCanvas().canvas);le([()=>e.widgetState,k,C],([$,I,S])=>{r($),g.value&&y(),s.value={...i.value,...g.value?u.value:{},zIndex:$.zIndex,pointerEvents:$.readonly||t.computedDisabled?"none":"auto",opacity:t.computedDisabled?.5:1}},{deep:!0}),le(()=>e.widgetState.visible,($,I)=>{!$&&I&&t.options.onHide?.(t)}),Ee(document,"mousedown",$=>{!Po(t)||!e.widgetState.visible||!t.element.blur||t.element.contains($.target)||t.element.blur()}),Re(()=>{Po(t)&&Ee(t.element,t.options.selectOn??["focus","click"],()=>{const $=f.canvas;$?.selectNode(e.widgetState.widget.node),$?.bringToFront(e.widgetState.widget.node)})});const b=t.node.constructor.nodeData?.inputs?.[t.name]?.tooltip,T=n(()=>{e.widgetState.visible&&Po(t)&&l.value&&(l.value.contains(t.element)||l.value.appendChild(t.element))},"mountElementIfVisible");return Re(()=>{We(()=>{T()}).catch($=>{console.error("Error mounting DOM widget element:",$)})}),le(()=>e.widgetState.visible,()=>{T()}),($,I)=>pe((c(),_("div",{ref_key:"widgetElement",ref:l,class:"dom-widget",title:d(b),style:be(s.value)},[d(Sr)(d(t))?(c(),O(po(d(t).component),tt({key:0,"model-value":d(t).value,widget:d(t)},d(t).props,{"onUpdate:modelValue":I[0]||(I[0]=S=>a("update:widgetValue",S))}),null,16,["model-value","widget"])):A("",!0)],12,bg)),[[et,$.widgetState.visible]])}}),kg=Ve(wg,[["__scopeId","data-v-781496d2"]]),Cg={class:"isolate"},xg=j({__name:"DomWidgets",setup(e){const o=_r(),t=w(()=>[...o.widgetStates.values()]),a=n(()=>{const s=l.canvas;if(!s)return;const i=s.low_quality,r=s.graph;for(const u of t.value){const m=u.widget;if(!m.isVisible()||!u.active){u.visible=!1;continue}const f=m.node,v=r?.nodes.includes(f);if(u.visible=!!v&&s.isNodeVisible(f)&&!(m.options.hideOnZoom&&i),u.visible&&f){const g=m.margin;u.pos=[f.pos[0]+g,f.pos[1]+g+m.y],u.size=[(m.width??f.width)-g*2,(m.computedHeight??50)-g*2],u.zIndex=s.graph?.nodes.indexOf(f)??-1,u.readonly=s.read_only}}},"updateWidgets"),l=he();return st(()=>l.canvas,s=>s.onDrawForeground=fo(s.onDrawForeground,a),{immediate:!0}),(s,i)=>(c(),_("div",Cg,[(c(!0),_(ee,null,we(t.value,r=>(c(),O(kg,{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 Sg(){const e=L(!1),o=n(()=>{e.value=!0},"showModal"),t=n(()=>{e.value=!1},"hideModal"),a=n(()=>{e.value=!e.value},"toggleModal"),l=w(()=>e.value);return{isModalVisible:e,showModal:o,hideModal:t,toggleModal:a,hasActivePopup:l}}n(Sg,"useZoomControls");function _g(e,o){const t=new Map,a=L(""),l=L(0),s=L({bounds:!1,nodes:!1,connections:!1,viewport:!1}),i=De.getVersion(),r=new Map,u=Ti(()=>{o()},500),m=n(()=>{const C=e.value;if(!C||r.has(C.id))return;const h={onNodeAdded:C.onNodeAdded,onNodeRemoved:C.onNodeRemoved,onConnectionChange:C.onConnectionChange,onTrigger:C.onTrigger};r.set(C.id,h),C.onNodeAdded=function(b){h.onNodeAdded?.call(this,b),u()},C.onNodeRemoved=function(b){h.onNodeRemoved?.call(this,b),t.delete(b.id),u()},C.onConnectionChange=function(b){h.onConnectionChange?.call(this,b),u()},C.onTrigger=function(b){h.onTrigger?.call(this,b),b.type==="node:property:changed"&&(b.property==="mode"||b.property==="bgcolor"||b.property==="color")&&(t.delete(String(b.nodeId)),u())}},"setupEventListeners"),f=n(C=>{const h=C||e.value;if(!h)return;const b=r.get(h.id);if(!b){console.error("Attempted to cleanup event listeners for graph that was never set up");return}h.onNodeAdded=b.onNodeAdded,h.onNodeRemoved=b.onNodeRemoved,h.onConnectionChange=b.onConnectionChange,h.onTrigger=b.onTrigger,r.delete(h.id)},"cleanupEventListeners");return{updateFlags:s,setupEventListeners:m,cleanupEventListeners:f,checkForChanges:n(()=>{const C=e.value;if(!C)return!1;let h=!1,b=!1,T=!1;const $=Il.create(C),I=$.getNodeCount();I!==l.value&&(h=!0,l.value=I);const S=$.getNodes();for(const P of S){const D=P.id,W=`${P.x},${P.y},${P.width},${P.height}`;t.get(D)!==W&&(b=!0,t.set(D,W))}const x=new Set(S.map(P=>P.id));for(const[P]of t)x.has(P)||(t.delete(P),h=!0);const N=JSON.stringify(C.links||{});return N!==a.value&&(T=!0,a.value=N),(h||b)&&(s.value.bounds=!0,s.value.nodes=!0),T&&(s.value.connections=!0),h||b||T},"checkForChangesInternal"),init:n(()=>{m(),Ie.addEventListener("graphChanged",u),le(i,()=>{u()})},"init"),destroy:n(()=>{f(),Ie.removeEventListener("graphChanged",u),t.clear()},"destroy"),clearCache:n(()=>{t.clear(),a.value="",l.value=0},"clearCache")}}n(_g,"useMinimapGraph");function Tg(e,o,t,a,l,s,i){const r=L(!1),u=L({left:0,top:0,width:a,height:l}),m=n(()=>{if(!e.value)return;const h=e.value.getBoundingClientRect();u.value={left:h.left,top:h.top,width:h.width,height:h.height}},"updateContainerRect"),f=n(h=>{r.value=!0,m();const b=h.currentTarget;b instanceof HTMLElement&&b.setPointerCapture(h.pointerId),v(h)},"handlePointerDown"),v=n(h=>{if(!r.value||!i.value)return;const b=h.clientX-u.value.left,T=h.clientY-u.value.top,$=(a-o.value.width*t.value)/2,I=(l-o.value.height*t.value)/2,S=(b-$)/t.value+o.value.minX,x=(T-I)/t.value+o.value.minY;s(S,x)},"handlePointerMove"),g=n(h=>{if(r.value=!1,!h)return;const b=h.currentTarget;b instanceof HTMLElement&&b.hasPointerCapture(h.pointerId)&&b.releasePointerCapture(h.pointerId)},"releasePointer");return{isDragging:r,containerRect:u,updateContainerRect:m,handlePointerDown:f,handlePointerMove:v,handlePointerUp:g,handlePointerCancel:g,handleWheel:n(h=>{h.preventDefault();const b=i.value;if(!b)return;u.value.left===0&&u.value.top===0&&e.value&&m();const T=b.ds,$=h.deltaY>0?.9:1.1,I=T.scale*$;if(I<.1||I>10)return;const N=h.clientX-u.value.left,P=h.clientY-u.value.top,D=(a-o.value.width*t.value)/2,W=(l-o.value.height*t.value)/2,F=(N-D)/t.value+o.value.minX,z=(P-W)/t.value+o.value.minY;T.scale=I,s(F,z)},"handleWheel")}}n(Tg,"useMinimapInteraction");function $g(e,o,t,a,l,s,i,r){const u=L(!0),m=L(!0),f=n(()=>{const y=o.value;if(!e.value||!y)return;const k=e.value.getContext("2d");if(!k)return;if(!y._nodes||y._nodes.length===0){k.clearRect(0,0,i,r);return}(u.value||l.value.nodes||l.value.connections)&&(Tr(e.value,y,{bounds:t.value,scale:a.value,settings:{nodeColors:s.nodeColors.value,showLinks:s.showLinks.value,showGroups:s.showGroups.value,renderBypass:s.renderBypass.value,renderError:s.renderError.value},width:i,height:r}),u.value=!1,l.value.nodes=!1,l.value.connections=!1)},"renderMinimap");return{needsFullRedraw:u,needsBoundsUpdate:m,renderMinimap:f,updateMinimap:n((y,k)=>{(m.value||l.value.bounds)&&(y(),m.value=!1,l.value.bounds=!1,u.value=!0,l.value.viewport=!0),(u.value||l.value.nodes||l.value.connections)&&f(),l.value.viewport&&(k(),l.value.viewport=!1)},"updateMinimap"),forceFullRedraw:n(()=>{u.value=!0,l.value.bounds=!0,l.value.nodes=!0,l.value.connections=!0,l.value.viewport=!0},"forceFullRedraw")}}n($g,"useMinimapRenderer");function Ng(){const e=ie(),o=St(),t=w(()=>e.get("Comfy.Minimap.NodeColors")),a=w(()=>e.get("Comfy.Minimap.ShowLinks")),l=w(()=>e.get("Comfy.Minimap.ShowGroups")),s=w(()=>e.get("Comfy.Minimap.RenderBypassState")),i=w(()=>e.get("Comfy.Minimap.RenderErrorState")),r=253,u=200,m=w(()=>o.completedActivePalette.light_theme),f=w(()=>({width:`${r}px`,height:`${u}px`,border:"1px solid var(--interface-stroke)",borderRadius:"8px"})),v=w(()=>({width:"210px",height:`${u}px`,border:"1px solid var(--interface-stroke)",borderRadius:"8px"}));return{nodeColors:t,showLinks:a,showGroups:l,renderBypass:s,renderError:i,containerStyles:f,panelStyles:v,isLightTheme:m}}n(Ng,"useMinimapSettings");function Ig(e,o,t,a){const l=L({minX:0,minY:0,maxX:0,maxY:0,width:0,height:0}),s=L(1),i=L({x:0,y:0,width:0,height:0}),r=L({width:0,height:0}),u=n(()=>{const h=e.value;if(!h)return;const b=h.canvas,T=window.devicePixelRatio||1;r.value={width:b.clientWidth||b.width/T,height:b.clientHeight||b.height/T}},"updateCanvasDimensions"),m=n(()=>{const h=Il.create(o.value);if(!h.hasData())return{minX:0,minY:0,maxX:100,maxY:100,width:100,height:100};const b=h.getBounds();return $r(b)},"calculateGraphBounds"),f=n(()=>Nr(l.value,t,a),"calculateScale"),v=n(()=>{const h=e.value;if(!h)return;(r.value.width===0||r.value.height===0)&&u();const b=h.ds,T=r.value.width/b.scale,$=r.value.height/b.scale,I=-b.offset[0],S=-b.offset[1],x=(t-l.value.width*s.value)/2,N=(a-l.value.height*s.value)/2;i.value={x:(I-l.value.minX)*s.value+x,y:(S-l.value.minY)*s.value+N,width:T*s.value,height:$*s.value}},"updateViewport"),g=n(()=>{l.value=m(),s.value=f()},"updateBounds"),y=n((h,b)=>{const T=e.value;if(!T)return;(r.value.width===0||r.value.height===0)&&u();const $=T.ds,I=r.value.width/$.scale,S=r.value.height/$.scale;$.offset[0]=-(h-I/2),$.offset[1]=-(b-S/2),T.setDirty(!0,!0)},"centerViewOn"),{resume:k,pause:C}=ho(v);return{bounds:w(()=>l.value),scale:w(()=>s.value),viewportTransform:w(()=>i.value),canvasDimensions:w(()=>r.value),updateCanvasDimensions:u,updateViewport:v,updateBounds:g,centerViewOn:y,startViewportSync:k,stopViewportSync:C}}n(Ig,"useMinimapViewport");function Gs({canvasRefMaybe:e,containerRefMaybe:o}={}){const t=he(),a=Ae(),l=ie(),s=L(null),i=e??Ke(null),r=o??Ke(null),u=L(!0),m=L(!1),f=250,v=200,g=w(()=>t.canvas),y=w(()=>a.activeSubgraph||g.value?.graph),k=Ng(),{nodeColors:C,showLinks:h,showGroups:b,renderBypass:T,renderError:$,containerStyles:I,panelStyles:S}=k,x=n(async(K,X)=>{await l.set(K,X),W.forceFullRedraw(),W.updateMinimap(N.updateBounds,N.updateViewport)},"updateOption"),N=Ig(g,y,f,v),P=Tg(r,N.bounds,N.scale,f,v,N.centerViewOn,g),D=_g(y,()=>{W.forceFullRedraw(),W.updateMinimap(N.updateBounds,N.updateViewport)}),W=$g(i,y,N.bounds,N.scale,D.updateFlags,k,f,v),{pause:F,resume:z}=ho(async()=>{u.value&&await D.checkForChanges()&&W.updateMinimap(N.updateBounds,N.updateViewport)},{immediate:!1}),U=n(async()=>{m.value||(u.value=l.get("Comfy.Minimap.Visible"),g.value&&y.value&&(D.init(),r.value&&P.updateContainerRect(),N.updateCanvasDimensions(),window.addEventListener("resize",P.updateContainerRect),window.addEventListener("scroll",P.updateContainerRect),window.addEventListener("resize",N.updateCanvasDimensions),W.forceFullRedraw(),W.updateMinimap(N.updateBounds,N.updateViewport),N.updateViewport(),u.value&&(z(),N.startViewportSync()),m.value=!0))},"init"),H=n(()=>{F(),N.stopViewportSync(),D.destroy(),window.removeEventListener("resize",P.updateContainerRect),window.removeEventListener("scroll",P.updateContainerRect),window.removeEventListener("resize",N.updateCanvasDimensions),m.value=!1},"destroy");le(g,async(K,X)=>{X&&(D.cleanupEventListeners(),F(),N.stopViewportSync(),D.destroy(),window.removeEventListener("resize",P.updateContainerRect),window.removeEventListener("scroll",P.updateContainerRect),window.removeEventListener("resize",N.updateCanvasDimensions)),K&&!m.value&&await U()},{immediate:!0,flush:"post"}),le(y,(K,X)=>{K&&K!==X&&(D.cleanupEventListeners(X||void 0),D.setupEventListeners(),W.forceFullRedraw(),W.updateMinimap(N.updateBounds,N.updateViewport))}),le(u,async K=>{K?(r.value&&P.updateContainerRect(),N.updateCanvasDimensions(),W.forceFullRedraw(),await We(),await We(),W.updateMinimap(N.updateBounds,N.updateViewport),N.updateViewport(),z(),N.startViewportSync()):(F(),N.stopViewportSync())});const B=n(async()=>{u.value=!u.value,await l.set("Comfy.Minimap.Visible",u.value)},"toggle"),G=n(K=>{s.value=K},"setMinimapRef"),Q=w(()=>{const K=N.viewportTransform.value;return{transform:`translate(${K.x}px, ${K.y}px)`,width:`${K.width}px`,height:`${K.height}px`,border:`2px solid ${k.isLightTheme.value?"#E0E0E0":"#FFF"}`,backgroundColor:"rgba(255, 255, 255, 0.2)",willChange:"transform",backfaceVisibility:"hidden",perspective:"1000px",pointerEvents:"none"}});return{visible:w(()=>u.value),initialized:w(()=>m.value),containerStyles:I,viewportStyles:Q,panelStyles:S,width:f,height:v,nodeColors:C,showLinks:h,showGroups:b,renderBypass:T,renderError:$,init:U,destroy:H,toggle:B,renderMinimap:W.renderMinimap,handlePointerDown:P.handlePointerDown,handlePointerMove:P.handlePointerMove,handlePointerUp:P.handlePointerUp,handlePointerCancel:P.handlePointerCancel,handleWheel:P.handleWheel,setMinimapRef:G,updateOption:x}}n(Gs,"useMinimap");const Pg={class:"flex items-center gap-1 pr-0.5"},Mg={class:"rounded-lg bg-interface-panel-selected-surface p-2 group-hover:bg-interface-button-hover-surface"},Dg={class:"flex flex-col gap-1"},Ag={class:"flex items-center gap-2"},Lg={class:"text-[9px] text-text-primary"},Eg={class:"flex items-center gap-2"},Rg={class:"text-[9px] text-text-primary"},Vg=j({__name:"CanvasModeSelector",props:{buttonStyles:{}},setup(e){const o=L(),t=L(),a=Te(),l=he(),s=w(()=>l.canvas?.read_only??!1),i=w(()=>s.value?"icon-[lucide--hand]":"icon-[lucide--mouse-pointer-2]"),r=w(()=>a.formatKeySequence(a.getCommand("Comfy.Canvas.Unlock")).toUpperCase()),u=w(()=>a.formatKeySequence(a.getCommand("Comfy.Canvas.Lock")).toUpperCase()),m=n(g=>{const y=o.value?.$el||o.value;t.value?.toggle(g,y)},"toggle"),f=n(g=>{g==="select"&&s.value?a.execute("Comfy.Canvas.Unlock"):g==="hand"&&!s.value&&a.execute("Comfy.Canvas.Lock"),t.value?.hide()},"setMode"),v=w(()=>({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(g,y)=>(c(),_(ee,null,[E(Y,{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:be(g.buttonStyles),onClick:m},{default:M(()=>[p("div",Pg,[p("div",Mg,[p("i",{class:q([i.value,"block h-4 w-4"])},null,2)]),y[2]||(y[2]=p("i",{class:"icon-[lucide--chevron-down] block h-4 w-4 pr-1.5"},null,-1))])]),_:1},8,["style"]),E(d(ot),{ref_key:"popover",ref:t,"auto-z-index":!0,"base-z-index":1e3,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:v.value},{default:M(()=>[p("div",Dg,[p("div",{class:"flex cursor-pointer items-center justify-between px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onClick:y[0]||(y[0]=k=>f("select"))},[p("div",Ag,[y[3]||(y[3]=p("i",{class:"icon-[lucide--mouse-pointer-2] h-4 w-4"},null,-1)),p("span",null,V(g.$t("graphCanvasMenu.select")),1)]),p("span",Lg,V(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:y[1]||(y[1]=k=>f("hand"))},[p("div",Eg,[y[4]||(y[4]=p("i",{class:"icon-[lucide--hand] h-4 w-4"},null,-1)),p("span",null,V(g.$t("graphCanvasMenu.hand")),1)]),p("span",Rg,V(u.value),1)])])]),_:1},8,["pt"])],64))}}),Og={key:0,class:"absolute right-0 bottom-[62px] z-1300 flex w-[250px] justify-center border-0! bg-inherit!"},Wg={class:"flex flex-col gap-1"},zg={class:"font-medium"},Bg={class:"text-[9px] text-text-primary"},Fg={class:"font-medium"},Ug={class:"text-[9px] text-text-primary"},Gg={class:"font-medium"},Hg={class:"text-[9px] text-text-primary"},jg=j({__name:"ZoomControlsModal",props:{visible:{type:Boolean}},setup(e){const o=Gs(),t=Te(),a=he(),{formatKeySequence:l}=Te(),s=e,i=L(null),r=n(h=>{const b=h.value;isNaN(b)||b<1||b>1e3||a.setAppZoomFromPercentage(b)},"applyZoom"),u=n(h=>{t.execute(h)},"executeCommand"),m=n(h=>{if(i.value)return;const b=n(()=>t.execute(h),"cmd");b(),i.value=window.setInterval(b,100)},"startRepeat"),f=n(()=>{i.value&&(clearInterval(i.value),i.value=null)},"stopRepeat"),v=w(()=>({...o.containerStyles.value,height:void 0,width:void 0})),g=w(()=>l(t.getCommand("Comfy.Canvas.ZoomIn"))),y=w(()=>l(t.getCommand("Comfy.Canvas.ZoomOut"))),k=w(()=>l(t.getCommand("Comfy.Canvas.FitView"))),C=L(null);return le(()=>s.visible,async h=>{h&&(await We(),C.value?.querySelector("input")?.focus())}),(h,b)=>h.visible?(c(),_("div",Og,[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:be(v.value),onClick:b[3]||(b[3]=ke(()=>{},["stop"]))},[p("div",Wg,[p("div",{class:"flex cursor-pointer items-center justify-between rounded px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onMousedown:b[0]||(b[0]=T=>m("Comfy.Canvas.ZoomIn")),onMouseup:f,onMouseleave:f},[p("span",zg,V(h.$t("graphCanvasMenu.zoomIn")),1),p("span",Bg,V(g.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:b[1]||(b[1]=T=>m("Comfy.Canvas.ZoomOut")),onMouseup:f,onMouseleave:f},[p("span",Fg,V(h.$t("graphCanvasMenu.zoomOut")),1),p("span",Ug,V(y.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:b[2]||(b[2]=T=>u("Comfy.Canvas.FitView"))},[p("span",Gg,V(h.$t("zoomControls.zoomToFit")),1),p("span",Hg,V(k.value),1)]),p("div",{ref_key:"zoomInputContainer",ref:C,class:"zoomInputContainer flex items-center gap-1 rounded bg-input-surface p-2"},[E(d(hl),{"default-value":d(a).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:co(r,["enter"])},null,8,["default-value"]),b[4]||(b[4]=p("span",{class:"flex-shrink-0 text-sm text-text-primary"},"%",-1))],512)])],4)])):A("",!0)}}),qg={class:"inline-flex items-center gap-1 px-2 text-xs"},Kg=j({__name:"GraphCanvasMenu",setup(e){const{t:o}=de(),t=Te(),{formatKeySequence:a}=Te(),l=he(),s=ie(),i=ko(),r=Gs(),{isModalVisible:u,toggleModal:m,hideModal:f,hasActivePopup:v}=Sg(),g=w(()=>{const D=["borderRadius"],W=["borderRadius"],F={border:"none"},z=r.containerStyles.value,U={...Object.fromEntries(Object.entries(z).filter(([B])=>W.includes(B))),...F},H=Object.entries(z).filter(([B])=>D.includes(B)).reduce((B,[G,Q])=>({...B,[G]:Q}),{});return{buttonStyles:U,buttonGroupStyles:H}}),y=w(()=>s.get("Comfy.LinkRenderMode")===ye.HIDDEN_LINK),k=w(()=>a(t.getCommand("Comfy.Canvas.FitView")).toUpperCase()),C=w(()=>a(t.getCommand("Comfy.Canvas.ToggleMinimap")).toUpperCase()),h=w(()=>["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"]),b=w(()=>({"bg-comfy-menu-bg":!0,"hover:bg-interface-button-hover-surface!":!0,"not-active:bg-interface-panel-selected-surface!":s.get("Comfy.Minimap.Visible"),"p-0":!0,"w-8":!0,"h-8":!0})),T=w(()=>{const D=o("graphCanvasMenu.fitView"),W=k.value;return W?`${D} (${W})`:D}),$=w(()=>{const D=s.get("Comfy.Minimap.Visible")?o("zoomControls.hideMinimap"):o("zoomControls.showMinimap"),W=C.value;return W?`${D} (${W})`:D}),I=w(()=>y.value?o("graphCanvasMenu.showLinks"):o("graphCanvasMenu.hideLinks")),S=w(()=>y.value?o("graphCanvasMenu.showLinks"):o("graphCanvasMenu.hideLinks")),x=w(()=>["bg-comfy-menu-bg",y.value?"not-active:bg-interface-panel-selected-surface!":"","hover:bg-interface-button-hover-surface!","p-0","w-8","h-8"]);Re(()=>{l.initScaleSync()});const N=n(()=>{t.execute("Comfy.Canvas.ToggleMinimap")},"onMinimapToggleClick"),P=n(()=>{t.execute("Comfy.Canvas.ToggleLinkVisibility")},"onLinkVisibilityToggleClick");return nt(()=>{l.cleanupScaleSync()}),(D,W)=>{const F=Ne("tooltip");return c(),_("div",null,[E(jg,{visible:d(u),onClose:d(f)},null,8,["visible","onClose"]),d(v)?(c(),_("div",{key:0,class:"fixed inset-0 z-1200",onClick:W[0]||(W[0]=(...z)=>d(f)&&d(f)(...z))})):A("",!0),E(d(Zi),{class:"absolute right-0 bottom-0 z-1200 flex-row gap-1 border-[1px] border-interface-stroke bg-comfy-menu-bg p-2",style:be({...g.value.buttonGroupStyles}),onWheel:d(i).handleWheel},{default:M(()=>[E(Vg,{"button-styles":g.value.buttonStyles},null,8,["button-styles"]),W[6]||(W[6]=p("div",{class:"h-[27px] w-[1px] self-center bg-node-divider"},null,-1)),pe((c(),O(Y,{variant:"secondary","aria-label":T.value,style:be(g.value.buttonStyles),class:"h-8 w-8 bg-comfy-menu-bg p-0 hover:bg-interface-button-hover-surface!",onClick:W[1]||(W[1]=()=>d(t).execute("Comfy.Canvas.FitView"))},{default:M(()=>W[2]||(W[2]=[p("i",{class:"icon-[lucide--focus] h-4 w-4"},null,-1)])),_:1},8,["aria-label","style"])),[[F,T.value,void 0,{top:!0}]]),pe((c(),O(Y,{variant:"secondary",class:q(h.value),"aria-label":d(o)("zoomControls.label"),"data-testid":"zoom-controls-button",style:be(g.value.buttonStyles),onClick:d(m)},{default:M(()=>[p("span",qg,[p("span",null,V(d(l).appScalePercentage)+"%",1),W[3]||(W[3]=p("i",{class:"icon-[lucide--chevron-down] h-4 w-4"},null,-1))])]),_:1},8,["class","aria-label","style","onClick"])),[[F,d(o)("zoomControls.label"),void 0,{top:!0}]]),W[7]||(W[7]=p("div",{class:"h-[27px] w-[1px] self-center bg-node-divider"},null,-1)),pe((c(),O(Y,{variant:"secondary","aria-label":$.value,"data-testid":"toggle-minimap-button",style:be(g.value.buttonStyles),class:q(b.value),onClick:N},{default:M(()=>W[4]||(W[4]=[p("i",{class:"icon-[lucide--map] h-4 w-4"},null,-1)])),_:1},8,["aria-label","style","class"])),[[F,$.value,void 0,{top:!0}]]),pe((c(),O(Y,{variant:"secondary",class:q(x.value),"aria-label":S.value,"data-testid":"toggle-link-visibility-button",style:be(g.value.buttonStyles),onClick:P},{default:M(()=>W[5]||(W[5]=[p("i",{class:"icon-[lucide--route-off] h-4 w-4"},null,-1)])),_:1},8,["class","aria-label","style"])),[[F,{value:I.value,pt:{root:{style:"z-index: 2; transform: translateY(-20px);"}}},void 0,{top:!0}]])]),_:1},8,["style","onWheel"])])}}}),Qg=j({__name:"NodeTooltip",setup(e){let o;const t=It(),a=ie(),l=L(),s=L(""),i=L(),r=L();function u(){return s.value=""}n(u,"hideTooltip");async function m(g){if(!g)return;i.value=J.canvas.mouse[0]+"px",r.value=J.canvas.mouse[1]+"px",s.value=g,await We();const y=l.value?.getBoundingClientRect();y&&(y.right>window.innerWidth&&(i.value=J.canvas.mouse[0]-y.width+"px"),y.top<0&&(r.value=J.canvas.mouse[1]+y.height+"px"))}n(m,"showTooltip");function f(){const{canvas:g}=J,y=g?.node_over;if(!y)return;const k=y.constructor,C=t.nodeDefsByName[y.type??""];if(k.title_mode!==ye.NO_TITLE&&g.graph_mouse[1]<y.pos[1])return m(C?.description);if(y.flags?.collapsed)return;const h=Ir(y,g.graph_mouse[0],g.graph_mouse[1],[0,0]);if(h!==-1){const $=y.inputs[h].name,I=Le(`nodeDefs.${He(y.type??"")}.inputs.${He($)}.tooltip`,C?.inputs[$]?.tooltip??"");return m(I)}const b=Pr(y,g.graph_mouse[0],g.graph_mouse[1],[0,0]);if(b!==-1){const $=Le(`nodeDefs.${He(y.type??"")}.outputs.${b}.tooltip`,C?.outputs[b]?.tooltip??"");return m($)}const T=J.canvas.getWidgetAtCursor();if(T&&!Po(T)){const $=Le(`nodeDefs.${He(y.type??"")}.inputs.${He(T.name)}.tooltip`,C?.inputs[T.name]?.tooltip??"");return m(T.tooltip??$)}}return n(f,"onIdle"),Ee(window,"mousemove",n(g=>{u(),clearTimeout(o),g.target.nodeName==="CANVAS"&&(o=window.setTimeout(f,a.get("LiteGraph.Node.TooltipDelay")))},"onMouseMove")),Ee(window,"click",u),(g,y)=>s.value?(c(),_("div",{key:0,ref_key:"tooltipRef",ref:l,class:"node-tooltip",style:be({left:i.value,top:r.value})},V(s.value),5)):A("",!0)}}),Yg=Ve(Qg,[["__scopeId","data-v-96b1458a"]]),Jg=j({__name:"BypassButton",setup(e){const o=Te(),t=n(async()=>{await o.execute("Comfy.Canvas.ToggleSelectedNodes.Bypass")},"toggleBypass");return(a,l)=>{const s=Ne("tooltip");return pe((c(),O(Y,{variant:"muted-textonly","aria-label":a.$t("commands.Comfy_Canvas_ToggleSelectedNodes_Bypass.label"),"data-testid":"bypass-button",class:"hover:bg-secondary-background",onClick:t},{default:M(()=>l[0]||(l[0]=[p("i",{class:"icon-[lucide--redo-dot] size-4"},null,-1)])),_:1},8,["aria-label"])),[[s,{value:a.$t("commands.Comfy_Canvas_ToggleSelectedNodes_Bypass.label"),showDelay:1e3},void 0,{top:!0}]])}}}),Xg={class:"relative"},Zg={class:"flex items-center gap-1 px-0"},ev={key:0,class:"color-picker-container absolute -top-10 left-1/2"},tv=["data-testid"],ov=j({__name:"ColorPickerButton",setup(e){const{t:o}=de(),t=he(),a=St(),l=Ae(),s=w(()=>a.completedActivePalette.light_theme),i=n(h=>Ut(h,{lightness:.5}),"toLightThemeColor"),r=L(!1),u={name:"noColor",localizedName:o("color.noColor"),value:{dark:ye.NODE_DEFAULT_BGCOLOR,light:i(ye.NODE_DEFAULT_BGCOLOR)}},m=[u,...Object.entries(Je.node_colors).map(([h,b])=>({name:h,localizedName:o(`color.${h}`),value:{dark:b.bgcolor,light:i(b.bgcolor)}}))],f=L(null),v=n(h=>{const b=h?.name??u.name,T=b===u.name?null:Je.node_colors[b];for(const $ of t.selectedItems)nn($)&&$.setColorOption(T);t.canvas?.setDirty(!0,!0),g.value=T,r.value=!1,l.activeWorkflow?.changeTracker.checkState()},"applyColor"),g=L(null),y=w(()=>g.value?s.value?i(g.value?.bgcolor):g.value?.bgcolor:null),k=w(()=>g.value?.bgcolor?m.find(b=>b.value.dark===g.value?.bgcolor||b.value.light===g.value?.bgcolor)?.localizedName??u.localizedName:null),C=n(h=>{r.value=!1,f.value=null,g.value=Mr(h)},"updateColorSelectionFromNode");return le(()=>t.selectedItems,h=>{C(h)},{immediate:!0}),(h,b)=>{const T=Ne("tooltip");return c(),_("div",Xg,[pe((c(),O(Y,{"data-testid":"color-picker-button",variant:"muted-textonly","aria-label":d(o)("g.color"),onClick:b[0]||(b[0]=()=>r.value=!r.value)},{default:M(()=>[p("div",Zg,[p("i",{class:"pi pi-circle-fill",style:be({color:y.value??""})},null,4),b[1]||(b[1]=p("i",{class:"icon-[lucide--chevron-down]"},null,-1))])]),_:1},8,["aria-label"])),[[T,{value:k.value??d(o)("color.noColor"),showDelay:1e3},void 0,{top:!0}]]),r.value?(c(),_("div",ev,[E(d(yl),{"model-value":f.value,options:m,"option-label":"name","data-key":"value","onUpdate:modelValue":v},{option:M(({option:$})=>[pe(p("i",{class:"pi pi-circle-fill",style:be({color:s.value?$.value.light:$.value.dark}),"data-testid":$.name},null,12,tv),[[T,$.localizedName,void 0,{top:!0}]])]),_:1},8,["model-value"])])):A("",!0)])}}}),nv=Ve(ov,[["__scopeId","data-v-2197e0a1"]]),sv=j({__name:"ConfigureSubgraph",setup(e){const o=ut(),t=n(()=>{o.openPanel("subgraph")},"handleClick");return(a,l)=>{const s=Ne("tooltip");return pe((c(),O(Y,{variant:"muted-textonly","aria-label":a.$t("commands.Comfy_Graph_EditSubgraphWidgets.label"),onClick:t},{default:M(()=>l[0]||(l[0]=[p("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["aria-label"])),[[s,{value:a.$t("commands.Comfy_Graph_EditSubgraphWidgets.label"),showDelay:1e3},void 0,{top:!0}]])}}}),av=j({__name:"ConvertToSubgraphButton",setup(e){const o=Te(),{isSingleSubgraph:t,hasAnySelection:a}=Jt(),l=t,s=w(()=>a.value&&!t.value);return(i,r)=>{const u=Ne("tooltip");return d(l)?pe((c(),O(Y,{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]=()=>d(o).execute("Comfy.Graph.UnpackSubgraph"))},{default:M(()=>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}]]):s.value?pe((c(),O(Y,{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]=()=>d(o).execute("Comfy.Graph.ConvertToSubgraph"))},{default:M(()=>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}]]):A("",!0)}}}),lv=j({__name:"DeleteButton",setup(e){const o=Te(),{selectedItems:t}=Jt(),a=w(()=>t.value.some(l=>l.removable!==!1));return(l,s)=>{const i=Ne("tooltip");return pe((c(),O(Y,{variant:"muted-textonly","aria-label":l.$t("commands.Comfy_Canvas_DeleteSelectedItems.label"),"data-testid":"delete-button",onClick:s[0]||(s[0]=()=>d(o).execute("Comfy.Canvas.DeleteSelectedItems"))},{default:M(()=>s[1]||(s[1]=[p("i",{class:"icon-[lucide--trash-2]"},null,-1)])),_:1},8,["aria-label"])),[[et,a.value],[i,{value:l.$t("commands.Comfy_Canvas_DeleteSelectedItems.label"),showDelay:1e3},void 0,{top:!0}]])}}}),iv=j({__name:"ExecuteButton",setup(e){const{t:o}=de(),t=Te(),a=he(),{selectedNodes:l}=Jt(),s=a.getCanvas(),i=L(!1),r=w(()=>l.value.filter(Kt).filter(Dr));function u(){if(this.selected&&this.constructor.nodeData?.output_node&&i.value)return{color:"orange",lineWidth:2,padding:10}}n(u,"outputNodeStokeStyle");const m=n(()=>{i.value=!0;for(const g of r.value)g.strokeStyles.outputNode=u;s.setDirty(!0)},"handleMouseEnter"),f=n(()=>{i.value=!1,s.setDirty(!0)},"handleMouseLeave"),v=n(async()=>{await t.execute("Comfy.QueueSelectedOutputNodes")},"handleClick");return(g,y)=>{const k=Ne("tooltip");return pe((c(),O(Y,{variant:"primary","aria-label":d(o)("selectionToolbox.executeButton.tooltip"),onMouseenter:y[0]||(y[0]=()=>m()),onMouseleave:y[1]||(y[1]=()=>f()),onClick:v},{default:M(()=>y[2]||(y[2]=[p("i",{class:"icon-[lucide--play]"},null,-1)])),_:1},8,["aria-label"])),[[k,{value:d(o)("selectionToolbox.executeButton.tooltip"),showDelay:1e3},void 0,{top:!0}]])}}}),rv=j({__name:"ExtensionCommandButton",props:{command:{}},setup(e){const o=Te();return(t,a)=>{const l=Ne("tooltip");return pe((c(),O(Y,{variant:"muted-textonly","aria-label":d(Le)(`commands.${d(He)(t.command.id)}.label`,""),onClick:a[0]||(a[0]=()=>d(o).execute(t.command.id))},{default:M(()=>[p("i",{class:q([typeof t.command.icon=="function"?t.command.icon():t.command.icon])},null,2)]),_:1},8,["aria-label"])),[[l,{value:d(Le)(`commands.${d(He)(t.command.id)}.label`,"")||void 0,showDelay:1e3},void 0,{top:!0}]])}}}),uv=j({__name:"InfoButton",setup(e){const o=ut(),t=n(()=>{o.openPanel("info")},"onInfoClick");return(a,l)=>{const s=Ne("tooltip");return pe((c(),O(Y,{"data-testid":"info-button",variant:"muted-textonly","aria-label":a.$t("g.info"),onClick:t},{default:M(()=>l[0]||(l[0]=[p("i",{class:"icon-[lucide--info]"},null,-1)])),_:1},8,["aria-label"])),[[s,{value:a.$t("g.info"),showDelay:1e3},void 0,{top:!0}]])}}}),dv=j({__name:"Load3DViewerButton",setup(e){const o=Te(),t=n(()=>{o.execute("Comfy.3DViewer.Open3DViewer")},"open3DViewer");return(a,l)=>{const s=Ne("tooltip");return pe((c(),O(Y,{variant:"muted-textonly","aria-label":a.$t("commands.Comfy_3DViewer_Open3DViewer.label"),onClick:t},{default:M(()=>l[0]||(l[0]=[p("i",{class:"icon-[lucide--pencil]"},null,-1)])),_:1},8,["aria-label"])),[[s,{value:a.$t("commands.Comfy_3DViewer_Open3DViewer.label"),showDelay:1e3},void 0,{top:!0}]])}}}),cv=j({__name:"MaskEditorButton",setup(e){const o=Te(),{isSingleImageNode:t}=Jt(),a=n(()=>{o.execute("Comfy.MaskEditor.OpenMaskEditor")},"openMaskEditor");return(l,s)=>{const i=Ne("tooltip");return pe((c(),O(Y,{variant:"muted-textonly","aria-label":l.$t("commands.Comfy_MaskEditor_OpenMaskEditor.label"),onClick:a},{default:M(()=>s[0]||(s[0]=[p("i",{class:"icon-[comfy--mask]"},null,-1)])),_:1},8,["aria-label"])),[[et,d(t)],[i,{value:l.$t("commands.Comfy_MaskEditor_OpenMaskEditor.label"),showDelay:1e3},void 0,{top:!0}]])}}}),pv=n(e=>e!=null&&typeof e=="object"&&"refresh"in e&&typeof e.refresh=="function","isRefreshableWidget"),fv=n(()=>{const e=he(),o=L([]);xe(()=>{o.value=e.selectedItems.filter(Kt)});const t=w(()=>o.value.flatMap(s=>{if(!s.widgets)return[];const i=[];for(const r of s.widgets)pv(r)&&i.push(r);return i})),a=w(()=>t.value.length>0);async function l(){a.value&&await Promise.all(t.value.map(s=>s.refresh()))}return n(l,"refreshSelected"),{isRefreshable:a,refreshSelected:l}},"useRefreshableSelection"),mv=j({__name:"RefreshSelectionButton",setup(e){const{t:o}=de(),{isRefreshable:t,refreshSelected:a}=fv();return(l,s)=>{const i=Ne("tooltip");return pe((c(),O(Y,{variant:"muted-textonly","aria-label":d(o)("g.refreshNode"),"data-testid":"refresh-button",onClick:d(a)},{default:M(()=>s[0]||(s[0]=[p("i",{class:"icon-[lucide--refresh-cw]"},null,-1)])),_:1},8,["aria-label","onClick"])),[[et,d(t)],[i,d(o)("g.refreshNode"),void 0,{top:!0}]])}}}),gv=j({__name:"SaveToSubgraphLibrary",setup(e){const o=Te(),t=he(),a=w(()=>t.selectedItems?.length===1&&t.selectedItems[0]instanceof $n);return(l,s)=>{const i=Ne("tooltip");return pe((c(),O(Y,{variant:"muted-textonly","aria-label":l.$t("commands.Comfy_PublishSubgraph.label"),onClick:s[0]||(s[0]=()=>d(o).execute("Comfy.PublishSubgraph"))},{default:M(()=>s[1]||(s[1]=[p("i",{class:"icon-[lucide--book-open]"},null,-1)])),_:1},8,["aria-label"])),[[et,a.value],[i,{value:l.$t("commands.Comfy_PublishSubgraph.label"),showDelay:1e3},void 0,{top:!0}]])}}}),Io=L(!1),vv=L(0),hv=L(0),pt=L(!1);let Bt=!1,ft=null;function an(e){const o=e.canvas;if(!o)return null;const t=Array.from(o.selectedItems);if(t.length!==1)return null;const a=t[0];return Kt(a)?`N:${a.id}`:Co(a)?`G:${a.id}`:null}n(an,"buildSelectionSignature");function yv(e){return ft?an(e)===ft:!1}n(yv,"currentSelectionMatchesSignature");function bv(e){const o=he(),t=o.getCanvas(),{getSelectableItems:a}=Ls(),{shouldRenderVueNodes:l}=vn(),s=L({x:0,y:0}),i=L(!1),{left:r,top:u}=ws(t.canvas),m=w(()=>{const b=o.canvas?.state?.draggingItems??!1,T=l.value&&De.isDraggingVueNodes.value;return b||T}),f=n(()=>{const b=a();if(!b.size){i.value=!1;return}if(m.value){i.value=!1;return}i.value=!0;const T=[];for(const I of b)if(I.id!=null)if(l.value&&typeof I.id=="string"){const S=De.getNodeLayoutRef(I.id).value;S&&T.push([S.bounds.x,S.bounds.y,S.bounds.width,S.bounds.height])}else(I instanceof Ct||I instanceof Ht)&&T.push([I.pos[0],I.pos[1]-ye.NODE_TITLE_HEIGHT,I.size[0],I.size[1]+ye.NODE_TITLE_HEIGHT]);const $=Ar(T);$&&(s.value={x:$.x+$.width/2,y:$.y-10},v())},"updateSelectionBounds"),v=n(()=>{if(!i.value)return;const{scale:b,offset:T}=t.ds,$=(s.value.x+T[0])*b+r.value,I=(s.value.y+T[1])*b+u.value;e.value&&(e.value.style.setProperty("--tb-x",`${$}px`),e.value.style.setProperty("--tb-y",`${I}px`))},"updateTransform"),{resume:g,pause:y}=ho(v);xe(()=>{i.value?g():y()}),le(()=>o.getCanvas().state.selectionChanged,b=>{b&&((pt.value||ft)&&(pt.value=!1,Bt=!1,Io.value?ft=an(o):ft=null),f(),o.getCanvas().state.selectionChanged=!1)},{immediate:!0}),le(()=>Io.value,b=>{b?ft=an(o):o.canvas?.state?.draggingItems||(ft=null,pt.value&&(pt.value=!1))});const k=n(b=>{if(b){C();return}h()},"handleDragStateChange"),C=n(()=>{if(i.value=!1,!Io.value){pt.value=!1,Bt=!1;return}if(an(o)!==ft&&(ft=null),Io.value=!1,Bt=!0,pt.value=!!ft,pt.value){vv.value++;return}Bt=!1},"handleDragStart"),h=n(()=>{requestAnimationFrame(()=>{f();const b=yv(o),T=Bt&&i.value&&pt.value&&b;pt.value=T&&pt.value,Bt=!1,T&&hv.value++})},"handleDragEnd");return le(m,k),xt(()=>{wv()}),{visible:i}}n(bv,"useSelectionToolboxPosition");function wv(){Io.value=!1,pt.value=!1,Bt=!1,ft=null}n(wv,"resetMoreOptionsState");const kv=new Set(["Properties","Colors","Shapes","Title","Mode","Properties Panel","Copy (Clipspace)"]),Cv=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 Va(e){return e.toLowerCase().replace(/^un/,"").trim()}n(Va,"normalizeLabel");function xv(e,o){const t=Va(e),a={color:["color","colors"],shape:["shape","shapes"],pin:["pin","unpin"],delete:["remove","delete"],duplicate:["clone","duplicate"]};return o.some(l=>{if(!l.label)return!1;const s=Va(l.label);if(s===t)return!0;for(const i of Object.values(a))if(i.includes(t)&&i.includes(s))return!0;return!1})}n(xv,"isDuplicateItem");function Sv(e){return Cv.has(e)}n(Sv,"isCoreMenuItem");function _v(e){const o=new Map,t=[];for(const s of e){if(s.type==="divider"||s.type==="category"){t.push(s);continue}if(!s.label){t.push(s);continue}o.has(s.label)||o.set(s.label,[]),o.get(s.label).push(s)}const a=[],l=new Set;for(const s of e){if(s.type==="divider"||s.type==="category"||!s.label){if(t.includes(s)){a.push(s);const u=t.indexOf(s);t.splice(u,1)}continue}if(l.has(s.label))continue;l.add(s.label);const i=o.get(s.label);if(i.length===1){a.push(i[0]);continue}const r=i.find(u=>u.source==="vue");r?a.push(r):a.push(i[0])}return a}n(_v,"removeDuplicateMenuOptions");const Tv=["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=Tv.indexOf(e);return o===-1?999:o}n(Wn,"getMenuItemOrder");function us(e){const o=_v(e),t=new Map,a=[];let l;for(const f of o){if(f.type==="divider"||f.type==="category")continue;if((f.label==="Delete"||f.label==="Remove")&&!f.hasSubmenu){l=f;continue}f.label&&Sv(f.label)?t.set(f.label,f):a.push(f)}const s=[],i=Array.from(t.keys());i.sort((f,v)=>Wn(f)-Wn(v));const r=n(f=>f<=2?1:f<=8?2:f<=15?3:f<=17?4:5,"getSectionNumber");let u=0;for(const f of i){const v=t.get(f),g=Wn(f),y=r(g);u>0&&y!==u&&s.push({type:"divider"}),s.push(v),u=y}const m=[];return m.push(...s),a.length>0&&(m.push({type:"divider"}),m.push({label:"Extensions",type:"category",disabled:!0}),m.push(...a)),l&&(m.push({type:"divider"}),m.push(l)),m}n(us,"buildStructuredMenu");function $v(e,o,t=!0){const a=[];for(const l of e){if(l===null){a.push({type:"divider"});continue}if(!l.content||kv.has(l.content)||xv(l.content,a))continue;const s={label:l.content,source:"litegraph"};if(l.disabled&&(s.disabled=!0),l.has_submenu){if(l.submenu?.options)s.hasSubmenu=!0,s.submenu=ti(l.submenu.options);else if(l.callback&&!l.disabled){s.hasSubmenu=!0;const i=Nv(l,o);i?s.submenu=i:console.warn("[ContextMenuConverter] Failed to capture submenu for:",l.content)}}else l.callback&&!l.disabled&&(s.action=()=>{try{l.callback?.call(l,l.value,{},void 0,void 0,l)}catch(i){console.error("Error executing context menu callback:",i)}});a.push(s)}return t?us(a):a}n($v,"convertContextMenuToOptions");function Nv(e,o){let t,a;const l=ye.ContextMenu;try{ye.ContextMenu=function(s,i){return t=s,a=i,{close:n(()=>{},"close"),root:document.createElement("div")}};try{const s=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,{},s,i,o)}catch(s){console.warn("[ContextMenuConverter] Error executing callback for:",e.content,s)}}finally{ye.ContextMenu=l}if(t)return ti(t,a);console.warn("[ContextMenuConverter] No items captured for:",e.content)}n(Nv,"captureDynamicSubmenu");function ti(e,o){const t=[];for(const a of e){if(a===null)continue;if(typeof a=="string"){const i={label:a,action:n(()=>{try{o?.callback&&o.callback.call(null,a,o,void 0,void 0,o.extra)}catch(r){console.error("Error executing string item callback:",r)}},"action")};t.push(i);continue}if(!a.content)continue;const s={label:Iv(a.content),action:n(()=>{try{a.callback?.call(a,a.value,{},void 0,void 0,a)}catch(i){console.error("Error executing submenu callback:",i)}},"action")};a.disabled&&(s.disabled=!0),t.push(s)}return t}n(ti,"convertSubmenuToOptions");function Iv(e){return Nt.sanitize(e,{ALLOWED_TAGS:[]}).trim()||e.replace(/<[^>]*>/g,"").trim()||e}n(Iv,"stripHtmlTags");function Hs(){const e=he(),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(Hs,"useCanvasRefresh");function js(){const{t:e}=de(),o=he(),t=St(),a=Hs(),l=w(()=>t.completedActivePalette.light_theme),s=n(y=>Ut(y,{lightness:.5}),"toLightThemeColor"),i={name:"noColor",localizedName:e("color.noColor"),value:{dark:ye.NODE_DEFAULT_BGCOLOR,light:s(ye.NODE_DEFAULT_BGCOLOR)}},r=[i,...Object.entries(Je.node_colors).map(([y,k])=>({name:y,localizedName:e(`color.${y}`),value:{dark:k.bgcolor,light:s(k.bgcolor)}}))],u=[{name:"default",localizedName:e("shape.default"),value:Et.ROUND},{name:"box",localizedName:e("shape.box"),value:Et.BOX},{name:"card",localizedName:e("shape.CARD"),value:Et.CARD}];return{colorOptions:r,shapeOptions:u,applyColor:n(y=>{const k=y?.name??i.name,C=k===i.name?null:Je.node_colors[k];for(const h of o.selectedItems)nn(h)&&h.setColorOption(C);a.refreshCanvas()},"applyColor"),applyShape:n(y=>{const k=Array.from(o.selectedItems).filter(C=>C instanceof Ct);k.length!==0&&(k.forEach(C=>{C.shape=y.value}),a.refreshCanvas())},"applyShape"),getCurrentColor:n(()=>{const y=Array.from(o.selectedItems);if(y.length===0)return null;const k=y.find(b=>nn(b));if(!k||!nn(k))return null;const h=k.getColorOption()?.bgcolor??null;return r.find(b=>b.value.dark===h||b.value.light===h)??i},"getCurrentColor"),getCurrentShape:n(()=>{const y=Array.from(o.selectedItems).filter(h=>h instanceof Ct);if(y.length===0)return null;const C=y[0].shape??Et.ROUND;return u.find(h=>h.value===C)??u[0]},"getCurrentShape"),isLightTheme:l}}n(js,"useNodeCustomization");function Pv(){const{t:e}=de(),o=he(),t=Ae(),a=ie(),l=Hs(),{shapeOptions:s,colorOptions:i,isLightTheme:r}=js();return{getFitGroupToNodesOption:n(g=>({label:"Fit Group To Nodes",icon:"icon-[lucide--move-diagonal-2]",action:n(()=>{try{g.recomputeInsideNodes()}catch(k){console.warn("Failed to recompute group nodes:",k);return}const y=a.get("Comfy.GroupSelectedNodes.Padding");g.resizeTo(g.children,y),g.graph?.change(),o.canvas?.setDirty(!0,!0),t.activeWorkflow?.changeTracker?.checkState()},"action")}),"getFitGroupToNodesOption"),getGroupShapeOptions:n((g,y)=>({label:e("contextMenu.Shape"),icon:"icon-[lucide--box]",hasSubmenu:!0,submenu:s.map(k=>({label:k.localizedName,action:n(()=>{(g.nodes||[]).forEach(h=>h.shape=k.value),l.refreshCanvas(),y()},"action")}))}),"getGroupShapeOptions"),getGroupColorOptions:n((g,y)=>({label:e("contextMenu.Color"),icon:"icon-[lucide--palette]",hasSubmenu:!0,submenu:i.map(k=>({label:k.localizedName,color:r.value?k.value.light:k.value.dark,action:n(()=>{g.color=r.value?k.value.light:k.value.dark,l.refreshCanvas(),y()},"action")}))}),"getGroupColorOptions"),getGroupModeOptions:n((g,y)=>{const k=[];try{g.recomputeInsideNodes()}catch(T){return console.warn("Failed to recompute group nodes for mode options:",T),k}const C=g.nodes||[];if(!C.length)return k;let h=!0;for(let T=1;T<C.length;T++)if(C[T].mode!==C[0].mode){h=!1;break}const b=n((T,$)=>({label:e(`selectionToolbox.${T}`),icon:$===ze.BYPASS?"icon-[lucide--ban]":$===ze.NEVER?"icon-[lucide--zap-off]":"icon-[lucide--play]",action:n(()=>{C.forEach(I=>{I.mode=$}),o.canvas?.setDirty(!0,!0),g.graph?.change(),t.activeWorkflow?.changeTracker?.checkState(),y()},"action")}),"createModeAction");if(h)switch(C[0].mode){case ze.ALWAYS:k.push(b("Set Group Nodes to Never",ze.NEVER)),k.push(b("Bypass Group Nodes",ze.BYPASS));break;case ze.NEVER:k.push(b("Set Group Nodes to Always",ze.ALWAYS)),k.push(b("Bypass Group Nodes",ze.BYPASS));break;case ze.BYPASS:k.push(b("Set Group Nodes to Always",ze.ALWAYS)),k.push(b("Set Group Nodes to Never",ze.NEVER));break;default:k.push(b("Set Group Nodes to Always",ze.ALWAYS)),k.push(b("Set Group Nodes to Never",ze.NEVER)),k.push(b("Bypass Group Nodes",ze.BYPASS));break}else k.push(b("Set Group Nodes to Always",ze.ALWAYS)),k.push(b("Set Group Nodes to Never",ze.NEVER)),k.push(b("Bypass Group Nodes",ze.BYPASS));return k},"getGroupModeOptions")}}n(Pv,"useGroupMenuOptions");function Mv(){const{t:e}=de(),o=n(()=>{Te().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"),a=n(async i=>{if(!i?.imgs?.length)return;const r=i.imgs[i.imageIndex??0];if(!r)return;const u=document.createElement("canvas"),m=u.getContext("2d");if(m){u.width=r.naturalWidth,u.height=r.naturalHeight,m.drawImage(r,0,0);try{const f=await new Promise(v=>{u.toBlob(v,"image/png")});if(!f){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":f})])}catch(f){console.error("Failed to copy image to clipboard:",f)}}},"copyImage"),l=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"),Ao(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(()=>a(i),"action")},{label:e("contextMenu.Save Image"),icon:"icon-[lucide--download]",action:n(()=>l(i),"action")}]:[],"getImageMenuOptions")}}n(Mv,"useImageMenuOptions");function Dv(){const{getSelectedNodes:e,toggleSelectedNodesMode:o}=Ls(),t=Te(),a=Ae();return{adjustNodeSize:n(()=>{e().forEach(f=>{const v=f.computeSize();f.setSize([v[0],v[1]])}),J.canvas.setDirty(!0,!0),a.activeWorkflow?.changeTracker?.checkState()},"adjustNodeSize"),toggleNodeCollapse:n(()=>{e().forEach(f=>{f.collapse()}),J.canvas.setDirty(!0,!0),a.activeWorkflow?.changeTracker?.checkState()},"toggleNodeCollapse"),toggleNodePin:n(()=>{e().forEach(f=>{f.pin(!f.pinned)}),J.canvas.setDirty(!0,!0),a.activeWorkflow?.changeTracker?.checkState()},"toggleNodePin"),toggleNodeBypass:n(()=>{o(ze.BYPASS),J.canvas.setDirty(!0,!0)},"toggleNodeBypass"),runBranch:n(async()=>{const m=e();Pl(m).length!==0&&await t.execute("Comfy.QueueSelectedOutputNodes")},"runBranch")}}n(Dv,"useSelectedNodeActions");function Av(){const{t:e}=de(),{shapeOptions:o,applyShape:t,applyColor:a,colorOptions:l,isLightTheme:s}=js(),{adjustNodeSize:i,toggleNodeCollapse:r,toggleNodePin:u,toggleNodeBypass:m,runBranch:f}=Dv(),v=w(()=>o.map($=>({label:$.localizedName,action:n(()=>t($),"action")}))),g=w(()=>l.map($=>({label:$.localizedName,color:s.value?$.value.light:$.value.dark,action:n(()=>a($.name==="noColor"?null:$),"action")})));return{getNodeInfoOption:n($=>({label:e("contextMenu.Node Info"),icon:"icon-[lucide--info]",action:$}),"getNodeInfoOption"),getAdjustSizeOption:n(()=>({label:e("contextMenu.Adjust Size"),icon:"icon-[lucide--move-diagonal-2]",action:i}),"getAdjustSizeOption"),getNodeVisualOptions:n(($,I)=>[{label:$.collapsed?e("contextMenu.Expand Node"):e("contextMenu.Minimize Node"),icon:$.collapsed?"icon-[lucide--maximize-2]":"icon-[lucide--minimize-2]",action:n(()=>{r(),I()},"action")},{label:e("contextMenu.Shape"),icon:"icon-[lucide--box]",hasSubmenu:!0,submenu:v.value,action:n(()=>{},"action")},{label:e("contextMenu.Color"),icon:"icon-[lucide--palette]",hasSubmenu:!0,submenu:g.value,isColorPicker:!0,action:n(()=>{},"action")}],"getNodeVisualOptions"),getPinOption:n(($,I)=>({label:$.pinned?e("contextMenu.Unpin"):e("contextMenu.Pin"),icon:$.pinned?"icon-[lucide--pin-off]":"icon-[lucide--pin]",action:n(()=>{u(),I()},"action")}),"getPinOption"),getBypassOption:n(($,I)=>({label:$.bypassed?e("contextMenu.Remove Bypass"):e("contextMenu.Bypass"),icon:"icon-[lucide--redo-dot]",shortcut:"Ctrl+B",action:n(()=>{m(),I()},"action")}),"getBypassOption"),getRunBranchOption:n(()=>({label:e("contextMenu.Run Branch"),icon:"icon-[lucide--play]",action:f}),"getRunBranchOption"),colorSubmenu:g}}n(Av,"useNodeMenuOptions");function oi(){const e=ie(),o=Nn(),{hasMultipleSelection:t}=Jt(),a=w(()=>t.value);return{frameNodes:n(()=>{const{canvas:s}=J;if(!s.selectedItems?.size)return;const i=new Ht,r=e.get("Comfy.GroupSelectedNodes.Padding");i.resizeTo(s.selectedItems,r),s.graph?.add(i),o.titleEditorTarget=i},"frameNodes"),canFrame:a}}n(oi,"useFrameNodes");function Lv(){const{t:e}=de(),o=he(),t=Hs(),a=[{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]"}],l=[{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:a,distributeOptions:l,applyAlign:n(r=>{const u=Array.from(o.selectedItems).filter(f=>Kt(f));if(u.length===0)return;const m=Er(u,r.value);o.canvas?.repositionNodesVueMode(m),t.refreshCanvas()},"applyAlign"),applyDistribute:n(r=>{const u=Array.from(o.selectedItems).filter(f=>Kt(f));if(u.length<2)return;const m=Lr(u,r.value);o.canvas?.repositionNodesVueMode(m),t.refreshCanvas()},"applyDistribute")}}n(Lv,"useNodeArrangement");function Ev(){const e=he(),o=Rt(),t=rt(),a=Nn(),l=Ae();return{copySelection:n(()=>{const f=J.canvas;if(!f.selectedItems||f.selectedItems.size===0){o.add({severity:"warn",summary:se("g.nothingToCopy"),detail:se("g.selectItemsToCopy"),life:3e3});return}f.copyToClipboard(),o.add({severity:"success",summary:se("g.copied"),detail:se("g.itemsCopiedToClipboard"),life:2e3})},"copySelection"),pasteSelection:n(()=>{J.canvas.pasteFromClipboard({connectInputs:!1}),l.activeWorkflow?.changeTracker?.checkState()},"pasteSelection"),duplicateSelection:n(()=>{const f=J.canvas;if(!f.selectedItems||f.selectedItems.size===0){o.add({severity:"warn",summary:se("g.nothingToDuplicate"),detail:se("g.selectItemsToDuplicate"),life:3e3});return}f.copyToClipboard(),f.selectedItems.clear(),e.updateSelectedItems(),f.pasteFromClipboard({connectInputs:!1}),l.activeWorkflow?.changeTracker?.checkState()},"duplicateSelection"),deleteSelection:n(()=>{const f=J.canvas;if(!f.selectedItems||f.selectedItems.size===0){o.add({severity:"warn",summary:se("g.nothingToDelete"),detail:se("g.selectItemsToDelete"),life:3e3});return}f.deleteSelected(),f.setDirty(!0,!0),l.activeWorkflow?.changeTracker?.checkState()},"deleteSelection"),renameSelection:n(async()=>{const f=Array.from(e.selectedItems);if(f.length===1){const v=f[0];if(v instanceof Ct){a.titleEditorTarget=v;return}const g="title"in v?v.title:"",y=await t.prompt({title:se("g.rename"),message:se("g.enterNewName"),defaultValue:g});if(y&&y!==g&&"title"in v){const k=v;k.title=y,J.canvas.setDirty(!0,!0),l.activeWorkflow?.changeTracker?.checkState()}return}if(f.length>1){const v=await t.prompt({title:se("g.batchRename"),message:se("g.enterBaseName"),defaultValue:"Item"});v&&(f.forEach((g,y)=>{if("title"in g){const k=g;k.title=`${v} ${y+1}`}}),J.canvas.setDirty(!0,!0),l.activeWorkflow?.changeTracker?.checkState());return}o.add({severity:"warn",summary:se("g.nothingToRename"),detail:se("g.selectItemsToRename"),life:3e3})},"renameSelection")}}n(Ev,"useSelectionOperations");function Rv(){const{t:e}=de(),{copySelection:o,duplicateSelection:t,deleteSelection:a,renameSelection:l}=Ev(),{alignOptions:s,distributeOptions:i,applyAlign:r,applyDistribute:u}=Lv(),{convertToSubgraph:m,unpackSubgraph:f,addSubgraphToLibrary:v}=Ml(),{frameNodes:g}=oi(),y=w(()=>s.map(I=>({label:I.localizedName,icon:I.icon,action:n(()=>r(I),"action")}))),k=w(()=>i.map(I=>({label:I.localizedName,icon:I.icon,action:n(()=>u(I),"action")})));return{getBasicSelectionOptions:n(()=>[{label:e("contextMenu.Rename"),action:l},{label:e("contextMenu.Copy"),shortcut:"Ctrl+C",action:o},{label:e("contextMenu.Duplicate"),shortcut:"Ctrl+D",action:t}],"getBasicSelectionOptions"),getSubgraphOptions:n(({hasSubgraphs:I,hasMultipleSelection:S})=>{const x={label:e("contextMenu.Convert to Subgraph"),icon:"icon-[lucide--shrink]",action:m,badge:ds.NEW},N=[];return(!I||S)&&N.push(x),I&&N.push({label:e("contextMenu.Add Subgraph to Library"),icon:"icon-[lucide--folder-plus]",action:v},{label:e("contextMenu.Unpack Subgraph"),icon:"icon-[lucide--expand]",action:f}),N},"getSubgraphOptions"),getMultipleNodesOptions:n(()=>{const I=n(()=>{Te().execute("Comfy.GroupNode.ConvertSelectedNodesToGroupNode")},"convertToGroupNodes");return[{label:e("contextMenu.Convert to Group Node"),icon:"icon-[lucide--group]",action:I,badge:ds.DEPRECATED},{label:e("g.frameNodes"),icon:"icon-[lucide--frame]",action:g}]},"getMultipleNodesOptions"),getDeleteOption:n(()=>({label:e("contextMenu.Delete"),icon:"icon-[lucide--trash-2]",shortcut:"Delete",action:a}),"getDeleteOption"),getAlignmentOptions:n(()=>[{label:e("contextMenu.Align Selected To"),icon:"icon-[lucide--align-start-horizontal]",hasSubmenu:!0,submenu:y.value,action:n(()=>{},"action")},{label:e("contextMenu.Distribute Nodes"),icon:"icon-[lucide--align-center-horizontal]",hasSubmenu:!0,submenu:k.value,action:n(()=>{},"action")}],"getAlignmentOptions"),alignSubmenu:y,distributeSubmenu:k}}n(Rv,"useSelectionMenuOptions");var ds=(e=>(e.NEW="new",e.DEPRECATED="deprecated",e))(ds||{});let Ro=null;function Vv(e){Ro?.toggle&&Ro.toggle(e)}n(Vv,"toggleNodeOptions");function Ov(e){Ro?.show&&Ro.show(e)}n(Ov,"showNodeOptions");function cs(e){Ro=e}n(cs,"registerNodeOptionsInstance");function Wv(e){return e.map(o=>o.type==="divider"||o.type==="category"?o:{...o,source:"vue"})}n(Wv,"markAsVueOptions");function zv(){const{selectedItems:e,selectedNodes:o,nodeDef:t,showNodeHelp:a,hasSubgraphs:l,hasImageNode:s,hasOutputNodesSelected:i,hasMultipleSelection:r,computeSelectionFlags:u}=Jt(),m=he(),{getImageMenuOptions:f}=Mv(),{getNodeInfoOption:v,getNodeVisualOptions:g,getPinOption:y,getBypassOption:k,getRunBranchOption:C}=Av(),{getFitGroupToNodesOption:h,getGroupColorOptions:b,getGroupModeOptions:T}=Pv(),{getBasicSelectionOptions:$,getSubgraphOptions:I,getMultipleNodesOptions:S}=Rv(),x=l,N=r,P=L(0),D=n(()=>{P.value++},"bump"),W=w(()=>{P.value;const z=u(),U=e.value.filter(Co),H=U.length===1&&o.value.length===0?U[0]:null,B=x.value,G=[];if(o.value.length===1&&!H&&m.canvas)try{const Z=o.value[0],re=m.canvas.getNodeMenuOptions(Z);G.push(...$v(re,Z,!1))}catch(Z){console.error("Error getting LiteGraph menu items:",Z)}const Q=[],K=$();if(Q.push(...K),Q.push({type:"divider"}),i.value){const Z=C();Q.push(Z)}if(!H){const Z=y(z,D),re=k(z,D);Q.push(Z),Q.push(re)}if(H){const Z=T(H,D);Q.push(...Z)}if(Q.push({type:"divider"}),Q.push(...I({hasSubgraphs:B,hasMultipleSelection:N.value})),N.value&&Q.push(...S()),H)Q.push(h(H));else{const Z=g(z,D);Z.length>0&&Q.push(Z[0])}if(Q.push({type:"divider"}),t.value&&Q.push(v(a)),H)Q.push(b(H,D));else{const Z=g(z,D);Z.length>1&&Q.push(Z[1]),Z.length>2&&Q.push(Z[2])}Q.push({type:"divider"}),s.value&&o.value.length>0&&(Q.push(...f(o.value[0])),Q.push({type:"divider"}));const X=Wv(Q);if(G.length>0){const Z=[...G,...X];return us(Z)}return us(X)}),F=w(()=>W.value.filter(z=>z.hasSubmenu&&z.submenu));return{menuOptions:W,menuOptionsWithSubmenu:F,bump:D,hasSubgraphs:x,registerNodeOptionsInstance:cs}}n(zv,"useMoreOptionsMenu");const Bv=["title","onClick"],Fv={key:0,class:"icon-[lucide--check] size-4 flex-shrink-0"},Uv={key:1,class:"w-4 flex-shrink-0"},Gv=j({__name:"ColorPickerMenu",props:{option:{}},emits:["submenu-click"],setup(e,{expose:o,emit:t}){const a=e,l=t,{getCurrentShape:s}=js(),i=L();o({toggle:n((v,g)=>{i.value?.toggle(v,g)},"toggle")});const u=n(v=>{v.disabled||(l("submenu-click",v),i.value?.hide())},"handleSubmenuClick"),m=n(v=>{if(v.color)return!1;const g=s();return g?g.localizedName===v.label:!1},"isShapeSelected"),f=w(()=>a.option.submenu&&a.option.submenu.length>0&&a.option.submenu.every(v=>v.color&&!v.icon));return(v,g)=>(c(),O(d(ot),{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:M(()=>[p("div",{class:q(f.value?"flex flex-col gap-1 p-2":"flex flex-col p-2 min-w-40")},[(c(!0),_(ee,null,we(v.option.submenu,y=>(c(),_("div",{key:y.label,class:q(d(te)("hover:bg-secondary-background-hover rounded cursor-pointer",f.value?"w-7 h-7 flex items-center justify-center":"flex items-center gap-2 px-3 py-1.5 text-sm",y.disabled?"cursor-not-allowed pointer-events-none text-node-icon-disabled":"hover:bg-secondary-background-hover")),title:y.label,onClick:n(k=>u(y),"onClick")},[y.color?(c(),_("div",{key:0,class:"size-5 rounded-full border border-border-default",style:be({backgroundColor:y.color})},null,4)):y.color?A("",!0):(c(),_(ee,{key:1},[m(y)?(c(),_("i",Fv)):(c(),_("div",Uv)),p("span",null,V(y.label),1)],64))],10,Bv))),128))],2)]),_:1},512))}}),Hv=["onClick"],jv={class:"flex-1"},qv={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"},Kv={key:2,class:"icon-[lucide--chevron-right] size-4 opacity-60"},Qv=j({__name:"NodeContextMenu",setup(e,{expose:o}){const t=L(),a=L(),l=L(!1),{menuOptions:s,bump:i}=zv(),r=he(),u=L({x:0,y:0}),m=r.getCanvas(),{left:f,top:v}=ws(m.canvas);let g=0,y=0,k=0;const C=n(()=>{if(!l.value)return;const H=t.value?.container;if(!H)return;const{scale:B,offset:G}=m.ds;if(B===g&&G[0]===y&&G[1]===k)return;g=B,y=G[0],k=G[1];const Q=(u.value.x+G[0])*B+f.value,K=(u.value.y+G[1])*B+v.value;H.style.left=`${Q}px`,H.style.top=`${K}px`},"updateMenuPosition"),{resume:h,pause:b}=ho(C,{immediate:!1});xe(()=>{l.value?h():b()}),Ee(window,"touchstart",U=>{if(!l.value||!t.value)return;const H=U.target,B=t.value,G=B.container||B.$el;G&&!G.contains(H)&&N()},{passive:!0});const T=w(()=>s.value.find(U=>U.isColorPicker));function $(U){return!!U.isColorPicker}n($,"isColorOption");function I(U){if(U.type==="divider")return{separator:!0};const H=$(U),B={label:U.label,icon:U.icon,disabled:U.disabled,shortcut:U.shortcut,isColorSubmenu:H,originalOption:U};return U.hasSubmenu&&U.submenu&&!H&&(B.items=U.submenu.map(G=>({label:G.label,icon:G.icon,disabled:G.disabled,command:n(()=>{G.action(),N()},"command")}))),!U.hasSubmenu&&U.action&&(B.command=()=>{U.action?.(),N()}),B}n(I,"convertToMenuItem");const S=w(()=>s.value.map(I));function x(U){i();const H=U.clientX-f.value,B=U.clientY-v.value,{scale:G,offset:Q}=m.ds;u.value={x:H/G-Q[0],y:B/G-Q[1]},g=G,y=Q[0],k=Q[1],l.value=!0,t.value?.show(U)}n(x,"show");function N(){t.value?.hide()}n(N,"hide");function P(U){l.value?N():x(U)}n(P,"toggle"),o({toggle:P,hide:N,isOpen:l,show:x});function D(U){U.stopPropagation(),U.preventDefault();const H=Array.from(U.currentTarget.children).find(B=>B.classList.contains("icon-[lucide--chevron-right]"));a.value?.toggle(U,H)}n(D,"showColorPopover");function W(U){U.action(),N()}n(W,"handleColorSelect");function F(){l.value=!0}n(F,"onMenuShow");function z(){l.value=!1}return n(z,"onMenuHide"),Re(()=>{cs({toggle:P,show:x,hide:N,isOpen:l})}),xt(()=>{cs(null)}),(U,H)=>(c(),_(ee,null,[E(d(bl),{ref_key:"contextMenu",ref:t,model:S.value,class:"max-h-[80vh] md:max-h-none overflow-y-auto md:overflow-y-visible",onShow:F,onHide:z},{item:M(({item:B,props:G,hasSubmenu:Q})=>[p("a",tt(G.action,{class:"flex items-center gap-2 px-3 py-1.5",onClick:n(K=>B.isColorSubmenu?D(K):void 0,"onClick")}),[B.icon?(c(),_("i",{key:0,class:q([B.icon,"size-4"])},null,2)):A("",!0),p("span",jv,V(B.label),1),B.shortcut?(c(),_("span",qv,V(B.shortcut),1)):A("",!0),Q||B.isColorSubmenu?(c(),_("i",Kv)):A("",!0)],16,Hv)]),_:1},8,["model"]),T.value?(c(),O(Gv,{ref_key:"colorPickerMenu",ref:a,key:"color-picker-menu",option:T.value,onSubmenuClick:W},null,8,["option"])):A("",!0)],64))}}),Yv=j({__name:"FrameNodes",setup(e){const{frameNodes:o}=oi();return(t,a)=>{const l=Ne("tooltip");return pe((c(),O(Y,{variant:"muted-textonly","aria-label":t.$t("g.frameNodes"),onClick:d(o)},{default:M(()=>a[0]||(a[0]=[p("i",{class:"icon-[lucide--frame]"},null,-1)])),_:1},8,["aria-label","onClick"])),[[l,{value:t.$t("g.frameNodes"),showDelay:1e3},void 0,{top:!0}]])}}}),Jv=j({__name:"NodeOptionsButton",setup(e){const o=n(t=>{Vv(t)},"handleClick");return(t,a)=>{const l=Ne("tooltip");return pe((c(),O(Y,{"data-testid":"more-options-button",variant:"muted-textonly","aria-label":t.$t("g.moreOptions"),onClick:o},{default:M(()=>a[0]||(a[0]=[p("i",{class:"icon-[lucide--more-vertical]"},null,-1)])),_:1},8,["aria-label"])),[[l,{value:t.$t("g.moreOptions"),showDelay:1e3},void 0,{top:!0}]])}}}),Xv={},Zv={class:"h-6 w-px self-center bg-border-default"};function eh(e,o){return c(),_("div",Zv)}n(eh,"_sfc_render$1");const Oa=Ve(Xv,[["render",eh]]),th=j({__name:"SelectionToolbox",setup(e){const o=Te(),t=he(),a=Rr(),l=ko(),s=L(),{visible:i}=bv(s),r=w(()=>{const U=new Set(t.selectedItems.map(H=>a.invokeExtensions("getSelectionToolboxCommands",H).flat()).flat());return Array.from(U).map(H=>o.getCommand(H)).filter(H=>H!==void 0)}),{hasAnySelection:u,hasMultipleSelection:m,isSingleNode:f,isSingleSubgraph:v,isSingleImageNode:g,hasAny3DNodeSelected:y,hasOutputNodesSelected:k,nodeDef:C}=Jt(),h=w(()=>!!C.value),b=w(()=>u.value),T=w(()=>u.value),$=w(()=>m.value),I=w(()=>v.value),S=w(()=>f.value||v.value||m.value),x=w(()=>y.value),N=w(()=>g.value),P=w(()=>u.value),D=w(()=>u.value),W=w(()=>k.value),F=w(()=>b.value||T.value||$.value||I.value),z=w(()=>S.value);return(U,H)=>(c(),_(ee,null,[p("div",{ref_key:"toolboxRef",ref:s,style:{transform:"translate(var(--tb-x), var(--tb-y))"},class:"pointer-events-none fixed top-0 left-0 z-40"},[E(zo,{name:"slide-up"},{default:M(()=>[d(i)?(c(),O(d(Ss),{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:d(l).forwardEventToCanvas},{default:M(()=>[P.value?(c(),O(lv,{key:0})):A("",!0),h.value&&F.value?(c(),O(Oa,{key:1})):A("",!0),h.value?(c(),O(uv,{key:2})):A("",!0),b.value?(c(),O(nv,{key:3})):A("",!0),$.value?(c(),O(Yv,{key:4})):A("",!0),T.value?(c(),O(av,{key:5})):A("",!0),I.value?(c(),O(sv,{key:6})):A("",!0),I.value?(c(),O(gv,{key:7})):A("",!0),N.value?(c(),O(cv,{key:8})):A("",!0),F.value&&z.value?(c(),O(Oa,{key:9})):A("",!0),S.value?(c(),O(Jg,{key:10})):A("",!0),D.value?(c(),O(mv,{key:11})):A("",!0),x.value?(c(),O(dv,{key:12})):A("",!0),(c(!0),_(ee,null,we(r.value,B=>(c(),O(rv,{key:B.id,command:B},null,8,["command"]))),128)),W.value?(c(),O(iv,{key:13})):A("",!0),E(Jv)]),_:1},8,["onWheel"])):A("",!0)]),_:1})],512),E(Qv)],64))}}),oh=Ve(th,[["__scopeId","data-v-c6489a20"]]),nh=j({__name:"TitleEditor",setup(e){const o=ie(),t=L(!1),a=L(""),{style:l,updatePosition:s}=ei(),i=L({}),r=w(()=>({...l.value,...i.value})),u=Nn(),m=he(),f=L(!0),v=n(y=>{if(u.titleEditorTarget&&y?.trim()){const k=y.trim();u.titleEditorTarget.title=k;const C=u.titleEditorTarget;C instanceof Ct&&C.isSubgraphNode?.()&&(C.subgraph.name=k),J.canvas.setDirty(!0,!0)}t.value=!1,u.titleEditorTarget=null,m.canvas.allow_dragcanvas=f.value},"onEdit");return le(()=>u.titleEditorTarget,y=>{if(y===null)return;a.value=y.title,t.value=!0;const k=m.canvas;f.value=k.allow_dragcanvas,k.allow_dragcanvas=!1;const C=k.ds.scale;if(y instanceof Ht){const h=y;s({pos:h.pos,size:[h.size[0],h.titleHeight]}),i.value={fontSize:`${h.font_size*C}px`}}else if(y instanceof Ct){const h=y,[b,T]=h.getBounding();s({pos:[b,T],size:[h.width,ye.NODE_TITLE_HEIGHT]}),i.value={fontSize:`${12*C}px`}}}),Ee(document,"litegraph:canvas",n(y=>{if(y.detail.subType==="group-double-click"){if(!o.get("Comfy.Group.DoubleClickTitleToEdit"))return;const k=y.detail.group,[C,h]=k.pos;y.detail.originalEvent.canvasY-h<=k.titleHeight&&(u.titleEditorTarget=k)}else if(y.detail.subType==="node-double-click"){if(!o.get("Comfy.Node.DoubleClickTitleToEdit"))return;const k=y.detail.node,[C,h]=k.pos;y.detail.originalEvent.canvasY-h<=0&&(u.titleEditorTarget=k)}},"canvasEventHandler")),(y,k)=>t.value?(c(),_("div",{key:0,class:"group-title-editor node-title-editor",style:be(r.value)},[E(Tn,{"is-editing":t.value,"model-value":a.value,onEdit:v},null,8,["is-editing","model-value"])],4)):A("",!0)}}),sh=Ve(nh,[["__scopeId","data-v-aceb018c"]]);function ah(){const e=he();function o(t){const a=e.canvas?.graph?.groups??[];let l=null;for(const s of a){const i=s.boundingRect;if(!Vr(i,t.boundingRect))continue;if(!l){l=s;continue}const r=l.boundingRect,u=ma(r,i),m=ma(i,r);if(u&&!m){l=s;continue}const f=i[2]*i[3],v=r[2]*r[3];f<v&&(l=s)}return l}return n(o,"findParentGroup"),{findParentGroup:o}}n(ah,"useGraphHierarchy");const lh={key:0,class:"p-3"},ih=j({__name:"TabInfo",props:{nodes:{}},setup(e){const o=w(()=>e.nodes[0]),t=It(),a=Or(),l=w(()=>t.fromLGraphNode(o.value));return st(l,s=>{a.openHelp(s)},{immediate:!0}),(s,i)=>l.value?(c(),_("div",lh,[E(Wr,{node:l.value},null,8,["node"])])):A("",!0)}}),ni=Symbol("getNodeParentGroup");function qs(e,o){if(o.trim()==="")return e;const t=o.trim().toLowerCase().split(" ");return e.filter(({widget:a})=>{const l=a.label?.toLowerCase(),s=a.name.toLowerCase(),i=a.type.toLowerCase(),r=a.value?.toString().toLowerCase();return t.every(u=>s.includes(u)||l?.includes(u)||i?.includes(u)||r?.includes(u))})}n(qs,"searchWidgets");function si(e,o){if(o.trim()==="")return e;const t=o.trim().toLowerCase().split(" ");return e.map(a=>{const{node:l}=a,s=l.getTitle().toLowerCase();return t.every(i=>s.includes(i))?{...a,keep:!0}:{...a,keep:!1,widgets:qs(a.widgets,o)}}).filter(a=>a.keep||a.widgets.length>0)}n(si,"searchWidgetsAndNodes");function rh(e){const o={nodeToParentGroup:new Map,depth:0},{all:t,nodes:a,groups:l,others:s}=ai(e,o);return{all:Ko(t),nodes:Ko(a),groups:Ko(l),others:Ko(s),nodeToParentGroup:o.nodeToParentGroup}}n(rh,"flatAndCategorizeSelectedItems");function uh(e){const o=w(()=>rh(qe(e)));return{flattedItems:w(()=>o.value.all),selectedNodes:w(()=>o.value.nodes),selectedGroups:w(()=>o.value.groups),selectedOthers:w(()=>o.value.others),nodeToParentGroup:w(()=>o.value.nodeToParentGroup)}}n(uh,"useFlatAndCategorizeSelectedItems");function ai(e,o){const t=[],a=[],l=[],s=[];if(o.depth>1e3)return{all:[],nodes:[],groups:[],others:[]};for(let i=0;i<e.length;i++){const r=e[i];if(Co(r)){t.push(r),l.push(r);const u=Array.from(r.children),m={nodeToParentGroup:o.nodeToParentGroup,depth:o.depth+1,parentGroup:r},{all:f,nodes:v,groups:g,others:y}=ai(u,m);t.push(...f),a.push(...v),l.push(...g),s.push(...y)}else Kt(r)?(t.push(r),a.push(r),o.parentGroup&&o.nodeToParentGroup.set(r,o.parentGroup)):s.push(r)}return{all:t,nodes:a,groups:l,others:s}}n(ai,"flatItems");function Ko(e){const o=new Set,t=[];for(const a of e)o.has(a)||(o.add(a),t.push(a));return t}n(Ko,"repeatItems");function dh(e,o,t,a){if(xo(e)&&a?.length){const s=a[0].subgraph;if(!s)return console.error("Could not find subgraph for proxy widget"),!1;const i=s.getNodeById(parseInt(e._overlay.nodeId));if(!i)return console.error("Could not find interior node for proxy widget"),!1;const r=i.widgets?.find(m=>m.name===e._overlay.widgetName);if(!r)return console.error("Could not find original widget for proxy widget"),!1;r.label=t||void 0;const u=i.inputs?.find(m=>m.widget?.name===e._overlay.widgetName);u&&(u.label=t||void 0)}const l=o.inputs?.find(s=>s.widget?.name===e.name);return e.label=t||void 0,l&&(l.label=t||void 0),!0}n(dh,"renameWidget");const Tt="0px",ch=j({__name:"TransitionCollapse",props:{duration:{default:150},easingEnter:{default:"ease-in-out"},easingLeave:{default:"ease-in-out"},opacityClosed:{default:0},opacityOpened:{default:1},disable:{type:Boolean}},setup(e){const o=e,t=L(!1);Re(()=>t.value=!0);const a=w(()=>t.value&&!o.disable?o.duration:0);function l(f){return{height:f.style.height,width:f.style.width,position:f.style.position,visibility:f.style.visibility,overflow:f.style.overflow,paddingTop:f.style.paddingTop,paddingBottom:f.style.paddingBottom,borderTopWidth:f.style.borderTopWidth,borderBottomWidth:f.style.borderBottomWidth,marginTop:f.style.marginTop,marginBottom:f.style.marginBottom}}n(l,"getElementStyle");function s(f,v){const{width:g}=getComputedStyle(f);f.style.width=g,f.style.position="absolute",f.style.visibility="hidden",f.style.height="";const{height:y}=getComputedStyle(f);return f.style.width=v.width,f.style.position=v.position,f.style.visibility=v.visibility,f.style.height=Tt,f.style.overflow="hidden",v.height&&v.height!==Tt?v.height:y}n(s,"prepareElement");function i(f,v,g,y,k){const C=f.animate(y,k);f.style.height=v.height,C.onfinish=()=>{f.style.overflow=v.overflow,g()}}n(i,"animateTransition");function r(f,v){return[{height:Tt,opacity:o.opacityClosed,paddingTop:Tt,paddingBottom:Tt,borderTopWidth:Tt,borderBottomWidth:Tt,marginTop:Tt,marginBottom:Tt},{height:f,opacity:o.opacityOpened,paddingTop:v.paddingTop,paddingBottom:v.paddingBottom,borderTopWidth:v.borderTopWidth,borderBottomWidth:v.borderBottomWidth,marginTop:v.marginTop,marginBottom:v.marginBottom}]}n(r,"getEnterKeyframes");function u(f,v){const g=f,y=l(g),k=s(g,y),C=r(k,y),h={duration:a.value,easing:o.easingEnter};i(g,y,v,C,h)}n(u,"enterTransition");function m(f,v){const g=f,y=l(g),{height:k}=getComputedStyle(g);g.style.height=k,g.style.overflow="hidden";const C=r(k,y).reverse(),h={duration:a.value,easing:o.easingLeave};i(g,y,v,C,h)}return n(m,"leaveTransition"),(f,v)=>(c(),O(zo,{css:!1,onEnter:u,onLeave:m},{default:M(()=>[ge(f.$slots,"default")]),_:3}))}}),ph={class:"flex flex-col bg-comfy-menu-bg"},fh={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl bg-inherit"},mh=["disabled"],gh={class:"text-sm font-semibold line-clamp-2 flex-1"},vh={key:0,class:"pb-4"},uo=j({__name:"PropertiesAccordionItem",props:go({disabled:{type:Boolean},label:{},enableEmptyState:{type:Boolean},tooltip:{}},{collapse:{type:Boolean,default:!1},collapseModifiers:{}}),emits:["update:collapse"],setup(e){const o=e,t=qt(e,"collapse"),a=w(()=>!t.value&&!o.disabled),l=w(()=>{if(o.tooltip)return{value:o.tooltip,showDelay:1e3}});return(s,i)=>{const r=Ne("tooltip");return c(),_("div",ph,[p("div",fh,[pe((c(),_("button",{type:"button",class:q(d(te)("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",!s.disabled&&"cursor-pointer")),disabled:s.disabled,onClick:i[0]||(i[0]=u=>t.value=!t.value)},[p("span",gh,[ge(s.$slots,"label",{},()=>[Ce(V(s.label),1)])]),p("i",{class:q(d(te)("text-muted-foreground group-hover:text-base-foreground group-has-[.subbutton:hover]:text-muted-foreground group-focus:text-base-foreground icon-[lucide--chevron-up] size-4 transition-all",t.value&&"-rotate-180",s.disabled&&"opacity-0"))},null,2)],10,mh)),[[r,l.value]])]),E(ch,null,{default:M(()=>[a.value?(c(),_("div",vh,[ge(s.$slots,"default")])):s.enableEmptyState&&s.disabled?ge(s.$slots,"empty",{key:1},()=>[p("div",null,V(s.$t("g.empty")),1)]):A("",!0)]),_:3})])}}}),hh=["fixed","increment","decrement","randomize"];function yh(e){return hh.includes(e)}n(yh,"isControlOption");function Wa(e){return yh(e)?e:"randomize"}n(Wa,"normalizeControlOption");function bh(e){e.vueTrack||xn((o,t)=>(e.callback=fo(e.callback,t),e.vueTrack=o,{get(){},set(){}}))}n(bh,"widgetWithVueTrack");function wh(e){return bh(e),e.vueTrack(),e.value}n(wh,"useReactiveWidgetValue");function kh(e){const o=e.linkedWidgets?.find(t=>t.name=="control_after_generate");if(o)return{value:Wa(o.value),update:n(t=>o.value=Wa(t),"update")}}n(kh,"getControlWidget");function Ch(e,o){return!e.isSubgraphNode()||!xo(o)?void 0:e.subgraph.getNodeById(o._overlay.nodeId)?.type}n(Ch,"getNodeType");function li(e,o){const t=It();return{value:wh(o),controlWidget:kh(o),spec:t.getInputSpecForWidget(e,o.name),nodeType:Ch(e,o),borderStyle:o.promoted?"ring ring-component-node-widget-promoted":o.advanced?"ring ring-component-node-widget-advanced":void 0,label:o.label,options:o.options}}n(li,"getSharedWidgetEnhancements");const xh=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 Sh(e,o){return function(t){try{const a=li(e,t),l=o.get(t.name),s=n(i=>{const r=xh(i);t.value=r??void 0,t.callback?.(r,J.canvas,e),e.widgets?.forEach(u=>u.triggerDraw?.())},"callback");return{name:t.name,type:t.type,...a,callback:s,hasLayoutSize:typeof t.computeLayoutSize=="function",isDOMWidget:Po(t),slotMetadata:l}}catch{return{name:t.name||"unknown",type:t.type||"text",value:void 0}}}}n(Sh,"safeWidgetMapper");function ln(e){const o=e.graph&&"id"in e.graph&&e.graph!==e.graph.rootGraph?String(e.graph.id):null,t=new Map,a=aa(e.widgets??[]);Object.defineProperty(e,"widgets",{get(){return a},set(m){a.splice(0,a.length,...m)}});const l=aa(e.inputs??[]);Object.defineProperty(e,"inputs",{get(){return l},set(m){l.splice(0,l.length,...m)}});const s=$i(()=>(e.inputs?.forEach((m,f)=>{m?.widget?.name&&t.set(m.widget.name,{index:f,linked:m.link!=null})}),e.widgets?.map(Sh(e,t))??[])),i=e.type||e.constructor?.comfyClass||e.constructor?.title||e.constructor?.name||"Unknown",r=e.constructor?.nodeData?.api_node??!1,u=e.badges;return{id:String(e.id),title:typeof e.title=="string"?e.title:"",type:i,mode:e.mode||0,titleMode:e.title_mode,selected:e.selected||!1,executing:!1,subgraphId:o,apiNode:r,badges:u,hasErrors:!!e.has_errors,widgets:s,inputs:l,outputs:e.outputs?[...e.outputs]:void 0,flags:e.flags?{...e.flags}:void 0,color:e.color||void 0,bgcolor:e.bgcolor||void 0,resizable:e.resizable,shape:e.shape}}n(ln,"extractVueNodeData");function _h(e){const{createNode:o,deleteNode:t,setSource:a}=In(),l=ul(new Map),s=new Map,i=n(k=>{const C=s.get(k),h=l.get(k);if(!C||!h)return;const b=new Map;C.inputs?.forEach((T,$)=>{T?.widget?.name&&b.set(T.widget.name,{index:$,linked:T.link!=null})});for(const T of h.widgets??[]){const $=b.get(T.name);$&&(T.slotMetadata=$)}},"refreshNodeSlots"),r=n(k=>s.get(k),"getNode"),u=n(()=>{if(!e?._nodes)return;const k=new Set(e._nodes.map(C=>String(C.id)));for(const C of Array.from(l.keys()))k.has(C)||(s.delete(C),l.delete(C));e._nodes.forEach(C=>{const h=String(C.id);s.set(h,C),l.set(h,ln(C))})},"syncWithGraph"),m=n((k,C)=>{const h=String(k.id);s.set(h,k),l.set(h,ln(k));const b=n(()=>{const T={x:k.pos[0],y:k.pos[1]},$={width:k.size[0],height:k.size[1]};a(Lo.Canvas),o(h,{position:T,size:$,zIndex:k.order||0,visible:!0})},"initializeVueNodeLayout");window.app?.configuringGraph?k.onAfterGraphConfigured=fo(k.onAfterGraphConfigured,()=>{l.set(h,ln(k)),b()}):b(),C&&C(k)},"handleNodeAdded"),f=n((k,C)=>{const h=String(k.id);a(Lo.Canvas),t(h),s.delete(h),l.delete(h),C&&C(k)},"handleNodeRemoved"),v=n((k,C,h)=>()=>{e.onNodeAdded=k||void 0,e.onNodeRemoved=C||void 0,e.onTrigger=h||void 0,s.clear(),l.clear()},"createCleanupFunction"),y=n(()=>{const k=e.onNodeAdded,C=e.onNodeRemoved,h=e.onTrigger;e.onNodeAdded=T=>{m(T,k)},e.onNodeRemoved=T=>{f(T,C)};const b={"node:property:changed":n(T=>{const $=String(T.nodeId),I=l.get($);if(I)switch(T.property){case"title":l.set($,{...I,title:String(T.newValue)});break;case"flags.collapsed":l.set($,{...I,flags:{...I.flags,collapsed:!!T.newValue}});break;case"flags.pinned":l.set($,{...I,flags:{...I.flags,pinned:!!T.newValue}});break;case"mode":l.set($,{...I,mode:typeof T.newValue=="number"?T.newValue:0});break;case"color":l.set($,{...I,color:typeof T.newValue=="string"?T.newValue:void 0});break;case"bgcolor":l.set($,{...I,bgcolor:typeof T.newValue=="string"?T.newValue:void 0});break;case"shape":l.set($,{...I,shape:typeof T.newValue=="number"?T.newValue:void 0})}},"node:property:changed"),"node:slot-errors:changed":n(T=>{i(String(T.nodeId))},"node:slot-errors:changed"),"node:slot-links:changed":n(T=>{T.slotType===zr.INPUT&&i(String(T.nodeId))},"node:slot-links:changed")};return e.onTrigger=T=>{switch(T.type){case"node:property:changed":b["node:property:changed"](T);break;case"node:slot-errors:changed":b["node:slot-errors:changed"](T);break;case"node:slot-links:changed":b["node:slot-links:changed"](T);break}h?.(T)},u(),v(k||void 0,C||void 0,h||void 0)},"setupEventListeners")();return e._nodes&&e._nodes.length>0&&e._nodes.forEach(k=>{e.onNodeAdded&&e.onNodeAdded(k)}),{vueNodeData:l,getNode:r,cleanup:y}}n(_h,"useGraphNodeManager");const Th=["onClick"],$h=["onClick"],Nh=["onClick"],Ih=j({__name:"WidgetActions",props:go({widget:{},node:{},parents:{default:n(()=>[],"default")},isShownOnParents:{type:Boolean,default:!1}},{label:{required:!0},labelModifiers:{}}),emits:["update:label"],setup(e){const o=qt(e,"label"),t=he(),a=Es(),l=rt(),{t:s}=de(),i=w(()=>e.parents?.length>0),r=w(()=>e.isShownOnParents&&i.value?e.parents[0]:e.node),u=w(()=>a.isFavorited(r.value,e.widget.name));async function m(){const k=await l.prompt({title:s("g.rename"),message:s("g.enterNewName")+":",defaultValue:e.widget.label,placeholder:e.widget.name});k!==null&&(o.value=k)}n(m,"handleRename");function f(){if(e.parents?.length){if(xo(e.widget)){const C=e.parents[0].subgraph.getNodeById(parseInt(e.widget._overlay.nodeId));if(!C){console.error("Could not find interior node for proxy widget");return}const h=C.widgets?.find(b=>b.name===e.widget._overlay.widgetName);if(!h){console.error("Could not find original widget for proxy widget");return}ss(C,h,e.parents)}else ss(e.node,e.widget,e.parents);t.canvas?.setDirty(!0,!0)}}n(f,"handleHideInput");function v(){e.parents?.length&&(Dl(e.node,e.widget,e.parents),t.canvas?.setDirty(!0,!0))}n(v,"handleShowInput");function g(){a.toggleFavorite(r.value,e.widget.name)}n(g,"handleToggleFavorite");const y=te(["border-none bg-transparent","w-full flex items-center gap-2 rounded px-3 py-2 text-sm","cursor-pointer transition-all hover:bg-secondary-background-hover active:scale-95"]);return(k,C)=>(c(),O(Fs,{"is-vertical":"",class:"text-muted-foreground bg-transparent hover:text-base-foreground hover:bg-secondary-background-hover active:scale-95 transition-all"},{default:M(({close:h})=>[p("button",{class:q(d(y)),onClick:n(()=>{m(),h()},"onClick")},[C[0]||(C[0]=p("i",{class:"icon-[lucide--edit] size-4"},null,-1)),p("span",null,V(d(s)("g.rename")),1)],10,Th),i.value?(c(),_("button",{key:0,class:q(d(y)),onClick:n(()=>{k.isShownOnParents?f():v(),h()},"onClick")},[k.isShownOnParents?(c(),_(ee,{key:0},[C[1]||(C[1]=p("i",{class:"icon-[lucide--eye-off] size-4"},null,-1)),p("span",null,V(d(s)("rightSidePanel.hideInput")),1)],64)):(c(),_(ee,{key:1},[C[2]||(C[2]=p("i",{class:"icon-[lucide--eye] size-4"},null,-1)),p("span",null,V(d(s)("rightSidePanel.showInput")),1)],64))],10,$h)):A("",!0),p("button",{class:q(d(y)),onClick:n(()=>{g(),h()},"onClick")},[u.value?(c(),_(ee,{key:0},[C[3]||(C[3]=p("i",{class:"icon-[lucide--star]"},null,-1)),p("span",null,V(d(s)("rightSidePanel.removeFavorite")),1)],64)):(c(),_(ee,{key:1},[C[4]||(C[4]=p("i",{class:"icon-[lucide--star]"},null,-1)),p("span",null,V(d(s)("rightSidePanel.addFavorite")),1)],64))],10,Nh)]),_:1}))}}),Ph={key:1,class:"text-xs text-muted-foreground flex-1 p-0 my-0 mx-1 truncate text-right min-w-10"},Mh={class:"flex items-center gap-1 shrink-0 pointer-events-auto"},Dh={key:0,class:"relative z-2 pointer-events-none"},Ah=j({__name:"WidgetItem",props:{widget:{},node:{},isDraggable:{type:Boolean,default:!1},hiddenFavoriteIndicator:{type:Boolean,default:!1},showNodeName:{type:Boolean,default:!1},parents:{default:n(()=>[],"default")},isShownOnParents:{type:Boolean,default:!1}},setup(e){const o=he(),t=Es(),a=L(!1),l=w(()=>Br(e.widget.type,e.widget.name)||Fr),s=w(()=>{const v=li(e.node,e.widget);return{...e.widget,...v}}),i=w(()=>{let v=e.node;if(xo(e.widget)){const{graph:g,nodeId:y}=e.widget._overlay;v=Ur(g,y)}return v?v.title||v.type:null}),r=w(()=>e.parents?.length>0),u=w(()=>e.isShownOnParents&&r.value?e.parents[0]:e.node),m=w({get:n(()=>(e.widget.vueTrack?.(),e.widget.value),"get"),set:n(v=>{e.widget.value=v,e.widget.callback?.(v),o.canvas?.setDirty(!0,!0)},"set")}),f=xn((v,g)=>({get(){return v(),e.widget.label||e.widget.name},set(y){a.value=!1;const k=y.trim();dh(e.widget,e.node,k,e.parents)&&(o.canvas?.setDirty(!0),g())}}));return(v,g)=>(c(),_("div",{class:q(d(te)("widget-item col-span-full grid grid-cols-subgrid rounded-lg group",v.isDraggable&&"draggable-item !will-change-auto drag-handle cursor-grab bg-comfy-menu-bg [&.is-draggable]:cursor-grabbing outline-comfy-menu-bg [&.is-draggable]:outline-4 [&.is-draggable]:outline-offset-0 [&.is-draggable]:opacity-70"))},[p("div",{class:q(d(te)("min-h-8 flex items-center justify-between gap-1 mb-1.5 min-w-0",v.isDraggable&&"pointer-events-none"))},[v.widget.name?(c(),O(Tn,{key:0,"model-value":f.value,"is-editing":a.value,"input-attrs":{placeholder:v.widget.name},class:"text-sm leading-8 p-0 m-0 truncate pointer-events-auto cursor-text",onEdit:g[0]||(g[0]=y=>f.value=y),onCancel:g[1]||(g[1]=y=>a.value=!1),onClick:g[2]||(g[2]=y=>a.value=!0)},null,8,["model-value","is-editing","input-attrs"])):A("",!0),(v.showNodeName||r.value)&&i.value?(c(),_("span",Ph,V(i.value),1)):A("",!0),p("div",Mh,[E(Ih,{label:f.value,"onUpdate:label":g[3]||(g[3]=y=>f.value=y),widget:v.widget,node:v.node,parents:v.parents,"is-shown-on-parents":v.isShownOnParents},null,8,["label","widget","node","parents","is-shown-on-parents"])])],2),!v.hiddenFavoriteIndicator&&d(t).isFavorited(u.value,v.widget.name)?(c(),_("div",Dh,g[5]||(g[5]=[p("i",{class:"absolute -right-1 -top-1 pi pi-star-fill text-xs text-muted-foreground pointer-events-none"},null,-1)]))):A("",!0),(c(),O(po(l.value),{modelValue:m.value,"onUpdate:modelValue":g[4]||(g[4]=y=>m.value=y),widget:s.value,"node-id":String(v.node.id),"node-type":v.node.type,class:q(d(te)("col-span-1",d(Gr)(v.widget.type)&&"min-h-36"))},null,8,["modelValue","widget","node-id","node-type","class"])),p("div",{class:q(d(te)("pointer-events-none mt-1.5 mx-auto max-w-40 w-1/2 h-1 rounded-lg bg-transparent transition-colors duration-150","group-hover:bg-interface-stroke group-[.is-draggable]:bg-component-node-widget-background-highlighted",!v.isDraggable&&"opacity-0"))},null,2)],2))}}),Lh={class:"flex items-center gap-2 flex-1 min-w-0"},Eh={class:"flex-1 flex items-center gap-2 min-w-0"},Rh={class:"truncate"},Vh=["title"],Vo=j({__name:"SectionWidgets",props:go({label:{},parents:{default:n(()=>[],"default")},node:{},widgets:{},showLocateButton:{type:Boolean,default:!1},isDraggable:{type:Boolean,default:!1},hiddenFavoriteIndicator:{type:Boolean,default:!1},showNodeName:{type:Boolean,default:!1},enableEmptyState:{type:Boolean,default:!1},tooltip:{}},{collapse:{type:Boolean,default:!1},collapseModifiers:{}}),emits:["update:collapse"],setup(e,{expose:o}){const t=qt(e,"collapse"),a=L(),l=L(),s=Ke(e.widgets);xe(()=>s.value=e.widgets),Bo("hideLayoutField",!0);const i=he(),{t:r}=de(),u=tl(ni,null);function m(h,b){if(!e.parents.length)return!1;const T=hn(e.parents[0].properties.proxyWidgets);return xo(b)?T.some(([$,I])=>b._overlay.nodeId==$&&b._overlay.widgetName===I):T.some(([$,I])=>h.id==$&&b.name===I)}n(m,"isWidgetShownOnParents");const f=w(()=>s.value.length===0),v=w(()=>e.label??(e.node?e.node.title:r("rightSidePanel.inputs"))),g=w(()=>{if(e.node)return e.node;if(f.value)return null;const h=s.value[0].node.id;return s.value.every(({node:T})=>T.id===h)?s.value[0].node:null}),y=w(()=>!g.value||!u?null:u(g.value)),k=w(()=>e.showLocateButton&&g.value!==null);function C(){if(!g.value||!i.canvas)return;const h=i.canvas.graph?.getNodeById(g.value.id);h&&i.canvas.animateToBounds(h.boundingRect)}return n(C,"handleLocateNode"),o({widgetsContainer:a,rootElement:l}),(h,b)=>(c(),_("div",{ref_key:"rootElement",ref:l},[E(uo,{collapse:t.value,"onUpdate:collapse":b[0]||(b[0]=T=>t.value=T),"enable-empty-state":h.enableEmptyState,disabled:f.value,tooltip:h.tooltip},{label:M(()=>[p("div",Lh,[p("span",Eh,[p("span",Rh,[ge(h.$slots,"label",{},()=>[Ce(V(v.value),1)])]),y.value?(c(),_("span",{key:0,class:"text-xs text-muted-foreground truncate flex-1 text-right min-w-11",title:y.value.title},V(y.value.title),9,Vh)):A("",!0)]),k.value?(c(),O(Y,{key:0,variant:"textonly",size:"icon-sm",class:"subbutton shrink-0 mr-3 size-8 cursor-pointer text-muted-foreground hover:text-base-foreground",title:d(r)("rightSidePanel.locateNode"),"aria-label":d(r)("rightSidePanel.locateNode"),onClick:ke(C,["stop"])},{default:M(()=>b[1]||(b[1]=[p("i",{class:"icon-[lucide--locate] size-4"},null,-1)])),_:1},8,["title","aria-label"])):A("",!0)])]),empty:M(()=>[ge(h.$slots,"empty")]),default:M(()=>[p("div",{ref_key:"widgetsContainer",ref:a,class:"space-y-2 rounded-lg px-4 pt-1 relative"},[E(ks,{name:"list-scale"},{default:M(()=>[(c(!0),_(ee,null,we(s.value,({widget:T,node:$})=>(c(),O(Ah,{key:`${$.id}-${T.name}-${T.type}`,widget:T,node:$,"is-draggable":h.isDraggable,"hidden-favorite-indicator":h.hiddenFavoriteIndicator,"show-node-name":h.showNodeName,parents:h.parents,"is-shown-on-parents":m($,T)},null,8,["widget","node","is-draggable","hidden-favorite-indicator","show-node-name","parents","is-shown-on-parents"]))),128))]),_:1})],512)]),_:3},8,["collapse","enable-empty-state","disabled","tooltip"])],512))}}),Oh={class:"px-4 pt-1 pb-4 flex gap-2 border-b border-interface-stroke"},Wh={class:"text-sm text-muted-foreground px-4 text-center py-10"},zh=j({__name:"TabGlobalParameters",setup(e){const o=Es(),t=ut(),{searchQuery:a}=Be(t),{t:l}=de(),s=L(void 0),i=L(),r=L(!1),u=w(()=>o.validFavoritedWidgets),m=w(()=>u.value.length===0?l("rightSidePanel.favoritesNone"):l("rightSidePanel.favorites")),f=Ke(u.value);async function v(k){r.value=k.trim().length>0,f.value=qs(u.value,k)}n(v,"searcher");const g=dl();function y(){if(!g.value)return;s.value?.dispose();const k=i.value?.widgetsContainer;r.value||!k?.children?.length||(s.value=new Rs(k,".draggable-item"),s.value.applyNewItemsOrder=function(){const C=[];let h=-1;this.getAllItems().forEach((I,S)=>{if(I===this.draggableItem){h=S;return}if(!this.isItemToggled(I)){C[S]=I;return}const x=this.isItemAbove(I)?S+1:S-1;C[x]=I});for(let I=0;I<this.getAllItems().length;I++)typeof C[I]>"u"&&(C[I]=this.draggableItem);const b=C.indexOf(this.draggableItem),T=[...f.value],[$]=T.splice(h,1);T.splice(b,0,$),f.value=T,o.reorderFavorites(T)})}return n(y,"setDraggableState"),At(f,()=>{y()},{debounce:100}),Re(()=>{y()}),nt(()=>{s.value?.dispose()}),(k,C)=>(c(),_(ee,null,[p("div",Oh,[E(Ho,{modelValue:d(a),"onUpdate:modelValue":C[0]||(C[0]=h=>je(a)?a.value=h:null),searcher:v,"update-key":u.value},null,8,["modelValue","update-key"])]),E(Vo,{ref_key:"sectionWidgetsRef",ref:i,label:m.value,widgets:f.value,"is-draggable":!r.value,"hidden-favorite-indicator":"","show-node-name":"","enable-empty-state":"",class:"border-b border-interface-stroke","onUpdate:collapse":C[1]||(C[1]=h=>We(y))},{empty:M(()=>[p("div",Wh,V(r.value?d(l)("rightSidePanel.noneSearchDesc"):d(l)("rightSidePanel.favoritesNoneDesc")),1)]),_:1},8,["label","widgets","is-draggable"])],64))}}),Bh={class:"px-4 pt-1 pb-4 flex gap-2 border-b border-interface-stroke"},Fh={key:0,class:"text-sm text-muted-foreground px-4 text-center pt-5 pb-15"},Uh=j({__name:"TabNodes",setup(e){const o=he(),t=Ae(),a=w(()=>(t.activeWorkflow?.path,o.canvas?.graph?.nodes??[])),l=ut(),{searchQuery:s}=Be(l),i=w(()=>a.value.map(f=>{const{widgets:v=[]}=f;return{widgets:v.filter(y=>!(y.options?.canvasOnly||y.options?.hidden)).map(y=>({node:f,widget:y})),node:f}})),r=Ke(i.value),u=L(!1);async function m(f){const v=i.value,g=r;u.value=f.trim()!=="",g.value=si(v,f)}return n(m,"searcher"),(f,v)=>(c(),_(ee,null,[p("div",Bh,[E(Ho,{modelValue:d(s),"onUpdate:modelValue":v[0]||(v[0]=g=>je(s)?s.value=g:null),searcher:m,"update-key":i.value},null,8,["modelValue","update-key"])]),E(ks,{tag:"div",name:"list-scale",class:"relative"},{default:M(()=>[u.value&&r.value.length===0?(c(),_("div",Fh,V(f.$t("rightSidePanel.noneSearchDesc")),1)):A("",!0),(c(!0),_(ee,null,we(r.value,({node:g,widgets:y})=>(c(),O(Vo,{key:g.id,node:g,widgets:y,collapse:!u.value,tooltip:u.value||y.length?"":f.$t("rightSidePanel.inputsNoneTooltip"),"show-locate-button":"",class:"border-b border-interface-stroke"},null,8,["node","widgets","collapse","tooltip"]))),128))]),_:1})],64))}}),Gh={class:"px-4 pt-1 pb-4 flex gap-2 border-b border-interface-stroke"},Hh={key:0,class:"text-sm text-muted-foreground px-4 py-10 text-center"},jh=j({__name:"TabNormalInputs",props:{mustShowNodeTitle:{type:Boolean},nodes:{}},setup(e){const{t:o}=de(),t=ut(),{searchQuery:a}=Be(t),l=w(()=>e.nodes.map(f=>{const{widgets:v=[]}=f;return{widgets:v.filter(y=>!(y.options?.canvasOnly||y.options?.hidden)).map(y=>({node:f,widget:y})),node:f}})),s=w(()=>l.value.length>1),i=Ke(l.value),r=L(!1);async function u(f){const v=l.value,g=i;r.value=f.trim()!=="",g.value=si(v,f)}n(u,"searcher");const m=w(()=>{const f=l.value;return!e.mustShowNodeTitle&&f.length===1?f[0].widgets.length!==0?o("rightSidePanel.inputs"):o("rightSidePanel.inputsNone"):void 0});return(f,v)=>(c(),_(ee,null,[p("div",Gh,[E(Ho,{modelValue:d(a),"onUpdate:modelValue":v[0]||(v[0]=g=>je(a)?a.value=g:null),searcher:u,"update-key":l.value},null,8,["modelValue","update-key"])]),E(ks,{tag:"div",name:"list-scale",class:"relative"},{default:M(()=>[i.value.length===0?(c(),_("div",Hh,V(r.value?d(o)("rightSidePanel.noneSearchDesc"):d(o)("rightSidePanel.nodesNoneDesc")),1)):A("",!0),(c(!0),_(ee,null,we(i.value,({widgets:g,node:y})=>(c(),O(Vo,{key:y.id,node:y,label:m.value,widgets:g,collapse:s.value&&!r.value,"show-locate-button":s.value,tooltip:r.value||g.length?"":d(o)("rightSidePanel.inputsNoneTooltip"),class:"border-b border-interface-stroke"},null,8,["node","label","widgets","collapse","show-locate-button","tooltip"]))),128))]),_:1})],64))}}),qh={class:"px-4 pt-1 pb-4 flex gap-2 border-b border-interface-stroke"},Kh={class:"text-sm text-muted-foreground px-4 text-center pt-5 pb-15"},Qh=j({__name:"TabSubgraphInputs",props:{node:{}},setup(e){const{t:o}=de(),t=he(),a=ut(),{focusedSection:l,searchQuery:s}=Be(a),i=L(!0),r=L(void 0),u=Qe("sectionWidgetsRef"),m=Qe("advancedInputsSectionRef"),f=xn((I,S)=>({get(){return I(),hn(e.node.properties.proxyWidgets)},set(x){S(),x&&(e.node.properties.proxyWidgets=x)}}));le(l,async I=>{if(I==="advanced-inputs"){i.value=!1,a.clearFocusedSection(),await We(),await new Promise(N=>setTimeout(N,300));const x=m.value?.rootElement;x&&x.scrollIntoView({behavior:"smooth",block:"start"})}},{immediate:!0});const v=w(()=>{const I=f.value,{widgets:S=[]}=e.node,x=[];for(const[N,P]of I){const D=S.find(W=>xo(W)?String(W._overlay.nodeId)===N&&W._overlay.widgetName===P:W.name===P);D&&x.push({node:e.node,widget:D})}return x}),g=w(()=>{const I=e.node.subgraph.nodes,S=hn(e.node.properties.proxyWidgets);return I.flatMap(N=>{const{widgets:P=[]}=N;return P.filter(D=>!D.computedDisabled).map(D=>({node:N,widget:D}))}).filter(({node:N,widget:P})=>!S.some(([D,W])=>N.id==D&&P.name===W))}),y=w(()=>[e.node]),k=Ke(v.value),C=L(!1);async function h(I){C.value=I.trim()!=="",k.value=qs(v.value,I)}n(h,"searcher");const b=dl();function T(){if(!b.value)return;r.value?.dispose();const I=u.value?.widgetsContainer;C.value||!I?.children?.length||(r.value=new Rs(I,".draggable-item"),r.value.applyNewItemsOrder=function(){const S=[];let x=-1;if(this.getAllItems().forEach((W,F)=>{if(W===this.draggableItem){x=F;return}if(!this.isItemToggled(W)){S[F]=W;return}const z=this.isItemAbove(W)?F+1:F-1;S[z]=W}),x===-1){console.error("[TabSubgraphInputs] draggableItem not found in items");return}for(let W=0;W<this.getAllItems().length;W++)typeof S[W]>"u"&&(S[W]=this.draggableItem);const N=S.indexOf(this.draggableItem),P=f.value,[D]=P.splice(x,1);P.splice(N,0,D),f.value=P,t.canvas?.setDirty(!0,!0),Zn(f)})}n(T,"setDraggableState"),At(k,()=>T(),{debounce:100}),Re(()=>T()),nt(()=>r.value?.dispose());const $=w(()=>k.value.length!==0?o("rightSidePanel.inputs"):o("rightSidePanel.inputsNone"));return(I,S)=>(c(),_(ee,null,[p("div",qh,[E(Ho,{modelValue:d(s),"onUpdate:modelValue":S[0]||(S[0]=x=>je(s)?s.value=x:null),searcher:h,"update-key":v.value},null,8,["modelValue","update-key"])]),E(Vo,{ref_key:"sectionWidgetsRef",ref:u,node:I.node,label:$.value,parents:y.value,widgets:k.value,"is-draggable":!C.value,"enable-empty-state":C.value,tooltip:C.value||k.value.length?"":d(o)("rightSidePanel.inputsNoneTooltip"),class:"border-b border-interface-stroke","onUpdate:collapse":S[1]||(S[1]=x=>We(T))},{empty:M(()=>[p("div",Kh,V(d(o)("rightSidePanel.noneSearchDesc")),1)]),_:1},8,["node","label","parents","widgets","is-draggable","enable-empty-state","tooltip"]),g.value.length>0?(c(),O(Vo,{key:0,ref_key:"advancedInputsSectionRef",ref:m,collapse:i.value,"onUpdate:collapse":S[2]||(S[2]=x=>i.value=x),label:d(o)("rightSidePanel.advancedInputs"),parents:y.value,widgets:g.value,"show-node-name":"",class:"border-b border-interface-stroke"},null,8,["collapse","label","parents","widgets"])):A("",!0)],64))}}),Oo=j({__name:"LayoutField",props:{label:{},tooltip:{},singleline:{type:Boolean}},setup(e){return(o,t)=>{const a=Ne("tooltip");return c(),_("div",{class:q(d(te)("flex gap-2",o.singleline?"items-center justify-between":"flex-col"))},[pe((c(),_("span",{class:q(d(te)("text-sm text-muted-foreground truncate",o.tooltip?"cursor-help":"",o.singleline?"flex-1":""))},[Ce(V(o.label),1)],2)),[[a,o.tooltip?{value:o.tooltip,showDelay:300}:null,void 0,{left:!0}]]),ge(o.$slots,"default")],2)}}}),ao=j({__name:"FieldSwitch",props:go({label:{},tooltip:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const o=qt(e,"modelValue");return(t,a)=>(c(),O(Oo,{singleline:"",label:t.label,tooltip:t.tooltip},{default:M(()=>[E(d(wl),{modelValue:o.value,"onUpdate:modelValue":a[0]||(a[0]=l=>o.value=l),class:"transition-transform active:scale-90"},null,8,["modelValue"])]),_:1},8,["label","tooltip"]))}}),Yh={class:"flex flex-col border-t border-interface-stroke"},Jh={class:"space-y-4 px-4 py-3"},Xh={class:"space-y-4 px-4 py-3"},Zh={class:"space-y-4 px-4 py-3"},ey={class:"flex items-center justify-center p-4 border-b border-interface-stroke"},zn=1,Bn=100,Qo=1,ty=j({__name:"TabGlobalSettings",setup(e){const{t:o}=de(),t=ie(),a=rt(),l=L(!1),s=w({get:n(()=>t.get("Comfy.Canvas.SelectionToolbox"),"get"),set:n(h=>t.set("Comfy.Canvas.SelectionToolbox",h),"set")}),i=w({get:n(()=>t.get("Comfy.VueNodes.Enabled"),"get"),set:n(h=>t.set("Comfy.VueNodes.Enabled",h),"set")}),r=w({get:n(()=>t.get("Comfy.SnapToGrid.GridSize"),"get"),set:n(h=>t.set("Comfy.SnapToGrid.GridSize",h),"set")}),u=w({get:n(()=>t.get("pysssss.SnapToGrid"),"get"),set:n(h=>t.set("pysssss.SnapToGrid",h),"set")}),m=w({get:n(()=>t.get("Comfy.Graph.LinkMarkers"),"get"),set:n(h=>t.set("Comfy.Graph.LinkMarkers",h),"set")}),f=w(()=>[{value:Gt.None,label:o("g.none")},{value:Gt.Circle,label:o("shape.circle")},{value:Gt.Arrow,label:o("shape.arrow")}]);let v=ye.SPLINE_LINK;const g=w({get:n(()=>t.get("Comfy.LinkRenderMode")!==ye.HIDDEN_LINK,"get"),set:n(h=>{let b=t.get("Comfy.LinkRenderMode");b!==ye.HIDDEN_LINK&&(v=b);const T=h?v:ye.HIDDEN_LINK;t.set("Comfy.LinkRenderMode",T)},"set")});function y(h){h?.length&&(r.value=h[0])}n(y,"updateGridSpacingFromSlider");function k(h){if(typeof h!="number")return;const b=Math.min(Bn,Math.max(zn,h));r.value=Math.round(b/Qo)*Qo}n(k,"updateGridSpacingFromInput");function C(){a.showSettingsDialog()}return n(C,"openFullSettings"),(h,b)=>(c(),_("div",Yh,[E(uo,{class:"border-b border-interface-stroke"},{label:M(()=>[Ce(V(d(o)("rightSidePanel.globalSettings.nodes")),1)]),default:M(()=>[p("div",Jh,[E(ao,{modelValue:l.value,"onUpdate:modelValue":b[0]||(b[0]=T=>l.value=T),label:d(o)("rightSidePanel.globalSettings.showAdvanced"),tooltip:d(o)("rightSidePanel.globalSettings.showAdvancedTooltip")},null,8,["modelValue","label","tooltip"]),E(ao,{modelValue:s.value,"onUpdate:modelValue":b[1]||(b[1]=T=>s.value=T),label:d(o)("rightSidePanel.globalSettings.showToolbox")},null,8,["modelValue","label"]),E(ao,{modelValue:i.value,"onUpdate:modelValue":b[2]||(b[2]=T=>i.value=T),label:d(o)("rightSidePanel.globalSettings.nodes2")},null,8,["modelValue","label"])])]),_:1}),E(uo,{class:"border-b border-interface-stroke"},{label:M(()=>[Ce(V(d(o)("rightSidePanel.globalSettings.canvas")),1)]),default:M(()=>[p("div",Xh,[E(Oo,{label:d(o)("rightSidePanel.globalSettings.gridSpacing")},{default:M(()=>[p("div",{class:q(d(te)(d(bn),"flex items-center gap-2 pl-3 pr-2"))},[E(Hr,{"model-value":[r.value],class:"flex-grow text-xs",min:zn,max:Bn,step:Qo,"onUpdate:modelValue":y},null,8,["model-value"]),E(d(hl),{"model-value":r.value,class:"w-16",size:"small","pt:pc-input-text:root":"min-w-[4ch] bg-transparent border-none text-center truncate",min:zn,max:Bn,step:Qo,"allow-empty":!1,"onUpdate:modelValue":k},null,8,["model-value"])],2)]),_:1},8,["label"]),E(ao,{modelValue:u.value,"onUpdate:modelValue":b[3]||(b[3]=T=>u.value=T),label:d(o)("rightSidePanel.globalSettings.snapNodesToGrid")},null,8,["modelValue","label"])])]),_:1}),E(uo,{class:"border-b border-interface-stroke"},{label:M(()=>[Ce(V(d(o)("rightSidePanel.globalSettings.connectionLinks")),1)]),default:M(()=>[p("div",Zh,[E(Oo,{label:d(o)("rightSidePanel.globalSettings.linkShape")},{default:M(()=>[E(d(er),{modelValue:m.value,"onUpdate:modelValue":b[4]||(b[4]=T=>m.value=T),options:f.value,"aria-label":d(o)("rightSidePanel.globalSettings.linkShape"),class:q(d(te)(d(bn),"w-full text-xs")),size:"small",pt:{option:"text-xs",dropdown:"w-8",label:d(te)("truncate min-w-[4ch]",h.$slots.default&&"mr-5"),overlay:"w-fit min-w-full"},"data-capture-wheel":"true","option-label":"label","option-value":"value"},null,8,["modelValue","options","aria-label","class","pt"])]),_:1},8,["label"]),E(ao,{modelValue:g.value,"onUpdate:modelValue":b[5]||(b[5]=T=>g.value=T),label:d(o)("rightSidePanel.globalSettings.showConnectedLinks")},null,8,["modelValue","label"])])]),_:1}),p("div",ey,[E(Y,{variant:"muted-textonly",size:"sm",class:"gap-2 text-sm",onClick:C},{default:M(()=>[Ce(V(d(o)("rightSidePanel.globalSettings.viewAllSettings"))+" ",1),b[6]||(b[6]=p("i",{class:"icon-[lucide--settings] size-4"},null,-1))]),_:1})])]))}}),oy={class:"bg-secondary-background border-none rounded-lg p-1 grid grid-cols-5 gap-1 justify-items-center"},ny=["onClick"],sy=["data-testid"],ay=j({__name:"SetNodeColor",props:{nodes:{}},emits:["changed"],setup(e,{emit:o}){const t=o,{t:a}=de(),l=St(),s=Object.entries(Je.node_colors);function i(v){return{dark:Ut(v,{lightness:.3}),light:Ut(v,{lightness:.4}),ringDark:Ut(v,{lightness:.5}),ringLight:Ut(v,{lightness:.1})}}n(i,"getColorValue");const r={name:"noColor",localizedName:n(()=>a("color.noColor"),"localizedName"),value:i(ye.NODE_DEFAULT_BGCOLOR)},u=[r,...s.map(([v,g])=>({name:v,localizedName:n(()=>a(`color.${v}`),"localizedName"),value:i(g.bgcolor)}))],m=w(()=>l.completedActivePalette.light_theme),f=w({get(){if(e.nodes.length===0)return null;const v=e.nodes.map(y=>y.getColorOption());let g=v[0];return v.every(y=>y===g)||(g=!1),g===!1?null:g==null||!g.bgcolor&&!g.color?r.name:s.find(([y,k])=>k.bgcolor===g.bgcolor&&k.color===g.color)?.[0]??null},set(v){if(v===null)return;const g=v===r.name?null:Je.node_colors[v];for(const y of e.nodes)y.setColorOption(g);t("changed")}});return(v,g)=>{const y=Ne("tooltip");return c(),O(Oo,{label:d(a)("rightSidePanel.color")},{default:M(()=>[p("div",oy,[(c(),_(ee,null,we(u,k=>p("button",{key:k.name,class:q(d(te)("size-8 rounded-lg bg-transparent border-0 outline-0 ring-0 text-left flex justify-center items-center cursor-pointer",k.name===f.value?"bg-interface-menu-component-surface-selected":"hover:bg-interface-menu-component-surface-selected")),onClick:n(C=>f.value=k.name,"onClick")},[pe(p("div",{class:q(d(te)("size-4 rounded-full ring-2 ring-gray-500/10")),style:be({backgroundColor:m.value?k.value.light:k.value.dark,"--tw-ring-color":k.name===f.value?m.value?k.value.ringLight:k.value.ringDark:void 0}),"data-testid":k.name},null,14,sy),[[y,k.localizedName(),void 0,{top:!0}]])],10,ny)),64))])]),_:1},8,["label"])}}}),ly=["disabled","onClick"],iy=j({__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,a=o,l=n((u,m)=>{if(typeof u!="object")return u;const f=t.optionValue;return u[f]??u.value??u.name??u.label??m},"getOptionValue"),s=n(u=>{if(typeof u=="object"&&u!==null){const m=t.optionLabel;return u[m]??u.label??u.name??u.value??String(u)}return String(u)},"getOptionLabel"),i=n(u=>{const m=l(t.options[u],u);return String(m)===String(t.modelValue??"")},"isSelected"),r=n(u=>{if(t.disabled)return;const m=l(t.options[u],u);a("update:modelValue",m)},"handleSelect");return(u,m)=>(c(),_("div",{class:q(d(te)(d(bn),"p-1 inline-flex justify-center items-center gap-1"))},[(c(!0),_(ee,null,we(u.options,(f,v)=>(c(),_("button",{key:l(f,v),class:q(d(te)("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(v)&&!u.disabled,"hover:bg-interface-menu-component-surface-selected/50":!i(v)&&!u.disabled,"opacity-50 cursor-not-allowed":u.disabled,"cursor-pointer":!u.disabled},i(v)&&!u.disabled?"text-text-primary":"text-text-secondary")),disabled:u.disabled,onClick:n(g=>r(v),"onClick")},V(s(f)),11,ly))),128))],2))}}),ry=j({__name:"SetNodeState",props:{nodes:{}},emits:["changed"],setup(e,{emit:o}){const t=o,{t:a}=de(),l=w({get(){let s=null;return e.nodes.length===0?null:(e.nodes.length>1?(s=e.nodes[0].mode,e.nodes.every(i=>i.mode===s)||(s=null)):s=e.nodes[0].mode,s)},set(s){e.nodes.forEach(i=>{i.mode=s}),t("changed")}});return(s,i)=>(c(),O(Oo,{label:d(a)("rightSidePanel.nodeState")},{default:M(()=>[E(iy,{modelValue:l.value,"onUpdate:modelValue":i[0]||(i[0]=r=>l.value=r),class:"w-full",options:[{label:d(a)("rightSidePanel.normal"),value:d(ze).ALWAYS},{label:d(a)("rightSidePanel.bypass"),value:d(ze).BYPASS},{label:d(a)("rightSidePanel.mute"),value:d(ze).NEVER}]},null,8,["modelValue","options"])]),_:1},8,["label"]))}}),uy=j({__name:"SetPinned",props:{nodes:{}},emits:["changed"],setup(e,{emit:o}){const t=o,{t:a}=de(),l=w({get(){return e.nodes.some(s=>s.pinned)},set(s){e.nodes.forEach(i=>i.pin(s)),t("changed")}});return(s,i)=>(c(),O(ao,{modelValue:l.value,"onUpdate:modelValue":i[0]||(i[0]=r=>l.value=r),label:d(a)("rightSidePanel.pinned")},null,8,["modelValue","label"]))}}),dy={class:"space-y-4 text-sm text-muted-foreground"},Fn=j({__name:"NodeSettings",props:{nodes:{}},setup(e){const o=e,t=Ke([]);xe(()=>{o.nodes?t.value=o.nodes:t.value=[]});const a=he();function l(i){return!i.some(r=>Co(r))}n(l,"isNodes");function s(){t.value=t.value.slice(),a.canvas?.setDirty(!0,!0)}return n(s,"handleChanged"),(i,r)=>(c(),_("div",dy,[l(t.value)?(c(),O(ry,{key:0,nodes:t.value,onChanged:s},null,8,["nodes"])):A("",!0),E(ay,{nodes:t.value,onChanged:s},null,8,["nodes"]),E(uy,{nodes:t.value,onChanged:s},null,8,["nodes"])]))}}),cy={key:0,class:"p-4"},py={key:1,class:"border-t border-interface-stroke"},fy=j({__name:"TabSettings",props:{nodes:{}},setup(e){const o=e,t=w(()=>o.nodes.filter(r=>Kt(r))),a=w(()=>o.nodes.filter(r=>Co(r))),l=w(()=>a.value.length>0),s=w(()=>t.value.length>0),i=w(()=>s.value&&!l.value);return(r,u)=>i.value?(c(),_("div",cy,[E(Fn,{nodes:t.value},null,8,["nodes"])])):(c(),_("div",py,[s.value?(c(),O(uo,{key:0,class:"border-b border-interface-stroke",label:r.$t("rightSidePanel.nodes")},{default:M(()=>[E(Fn,{nodes:t.value,class:"p-4"},null,8,["nodes"])]),_:1},8,["label"])):A("",!0),l.value?(c(),O(uo,{key:1,class:"border-b border-interface-stroke",label:r.$t("rightSidePanel.groups")},{default:M(()=>[E(Fn,{nodes:a.value,class:"p-4"},null,8,["nodes"])]),_:1},8,["label"])):A("",!0)]))}}),my={class:"pointer-events-none flex-1"},gy={class:"text-xs text-text-secondary line-clamp-1"},vy={class:"text-sm line-clamp-1 leading-8"},hy={key:0,class:"size-4 pointer-events-none icon-[lucide--grip-vertical]"},za=j({__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"),(a,l)=>(c(),_("div",{class:q(d(te)("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",my,[p("div",gy,V(a.nodeTitle),1),p("div",vy,V(a.widgetName),1)]),E(Y,{variant:"muted-textonly",size:"sm",disabled:a.isPhysical,onClick:l[0]||(l[0]=ke(s=>a.$emit("toggleVisibility"),["stop"]))},{default:M(()=>[p("i",{class:q(t())},null,2)]),_:1},8,["disabled"]),a.isDraggable?(c(),_("div",hy)):A("",!0)],2))}}),yy={key:0,class:"subgraph-edit-section flex h-full flex-col"},by={class:"px-4 pb-4 pt-1 flex gap-2 border-b border-interface-stroke"},wy={class:"flex-1"},ky={key:0,class:"text-sm text-muted-foreground px-4 py-10 text-center"},Cy={key:1,class:"flex flex-col border-b border-interface-stroke"},xy={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl min-h-12 px-4"},Sy={class:"text-sm font-semibold uppercase line-clamp-1"},_y={key:2,class:"flex flex-col border-b border-interface-stroke"},Ty={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl min-h-12 px-4"},$y={class:"text-sm font-semibold uppercase line-clamp-1"},Ny={class:"pb-2 px-2 space-y-0.5 mt-0.5"},Iy={key:3,class:"flex justify-center border-b border-interface-stroke py-4"},Py=j({__name:"SubgraphEditor",setup(e){const o=he(),t=ut(),{searchQuery:a}=Be(t),l=L(void 0),s=L(),i=xn((x,N)=>({get(){x();const P=r.value;return P?hn(P.properties.proxyWidgets):[]},set(P){N();const D=r.value;if(P){if(!D){console.error("Attempted to toggle widgets with no node selected");return}D.properties.proxyWidgets=P}}})),r=w(()=>{const x=o.selectedItems[0];if(x instanceof $n)return x}),u=w({get(){if(!r.value)return[];const x=r.value;function N([P,D]){if(P==="-1"){const z=x.widgets.find(U=>U.name===D);return z?[[{id:-1,title:"(Linked)",type:""},z]]:[]}const W=x.subgraph._nodes_by_id[P];if(!W?.widgets)return[];const F=W.widgets.find(z=>z.name===D);return F?[[W,F]]:[]}return n(N,"mapWidgets"),i.value.flatMap(N)},set(x){if(!r.value){console.error("Attempted to toggle widgets with no node selected");return}i.value=x.map(Dn)}}),m=w(()=>{const x=r.value;if(!x)return[];const{updatePreviews:N}=Uo(),P=x.subgraph.nodes;for(const D of P)D.updateComputedDisabled(),N(D);return P.flatMap(C).filter(([D,W])=>!W.computedDisabled)}),f=w(()=>{if(!r.value)return[];const N=i.value;return m.value.filter(P=>!N.some(jr(P)))}),v=w(()=>{const x=a.value.toLowerCase();return x?f.value.filter(([N,P])=>N.title.toLowerCase().includes(x)||P.name.toLowerCase().includes(x)):f.value}),g=w(()=>r.value?v.value.filter(qr):[]),y=w(()=>{const x=a.value.toLowerCase();return x?u.value.filter(([N,P])=>N.title.toLowerCase().includes(x)||P.name.toLowerCase().includes(x)):u.value});function k(x){return`${x[0].id}: ${x[1].name}`}n(k,"toKey");function C(x){return x.widgets?x.widgets.map(N=>[x,N]):[]}n(C,"nodeWidgets");function h([x,N]){const P=r.value;if(!P)return[];ss(x,N,[P]),Zn(i)}n(h,"demote");function b([x,N]){const P=r.value;if(!P)return[];Dl(x,N,[P]),Zn(i)}n(b,"promote");function T(){if(!r.value)return;const N=i.value,P=v.value.map(Dn);N.push(...P),i.value=N}n(T,"showAll");function $(){r.value&&(i.value=i.value.filter(N=>!y.value.some(Qr(N))||N[0]==="-1"))}n($,"hideAll");function I(){if(!r.value)return;const N=i.value,P=g.value.map(Dn);N.push(...P),i.value=N}n(I,"showRecommended");function S(){l.value?.dispose(),!(a.value||!s.value?.children?.length)&&(l.value=new Rs(s.value,".draggable-item"),l.value.applyNewItemsOrder=function(){const x=[];let N=-1;this.getAllItems().forEach((F,z)=>{if(F===this.draggableItem){N=z;return}if(!this.isItemToggled(F)){x[z]=F;return}const U=this.isItemAbove(F)?z+1:z-1;x[U]=F});for(let F=0;F<this.getAllItems().length;F++)typeof x[F]>"u"&&(x[F]=this.draggableItem);const P=x.indexOf(this.draggableItem),D=u.value,[W]=D.splice(N,1);D.splice(P,0,W),u.value=D})}return n(S,"setDraggableState"),At(y,()=>{S()},{debounce:100}),Re(()=>{S(),r.value&&Kr(r.value)}),nt(()=>{l.value?.dispose()}),(x,N)=>r.value?(c(),_("div",yy,[p("div",by,[E(Ho,{modelValue:d(a),"onUpdate:modelValue":N[0]||(N[0]=P=>je(a)?a.value=P:null)},null,8,["modelValue"])]),p("div",wy,[d(a)&&y.value.length===0&&v.value.length===0?(c(),_("div",ky,V(x.$t("rightSidePanel.noneSearchDesc")),1)):A("",!0),y.value.length?(c(),_("div",Cy,[p("div",xy,[p("div",Sy,V(x.$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:ke($,["stop"])},V(x.$t("subgraphStore.hideAll")),1)]),p("div",{ref_key:"draggableItems",ref:s,class:"pb-2 px-2 space-y-0.5 mt-0.5"},[(c(!0),_(ee,null,we(y.value,([P,D])=>(c(),O(za,{key:k([P,D]),class:"bg-comfy-menu-bg","node-title":P.title,"widget-name":D.name,"is-shown":!0,"is-draggable":!d(a),"is-physical":P.id===-1,onToggleVisibility:n(W=>h([P,D]),"onToggleVisibility")},null,8,["node-title","widget-name","is-draggable","is-physical","onToggleVisibility"]))),128))],512)])):A("",!0),v.value.length?(c(),_("div",_y,[p("div",Ty,[p("div",$y,V(x.$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:ke(T,["stop"])},V(x.$t("subgraphStore.showAll")),1)]),p("div",Ny,[(c(!0),_(ee,null,we(v.value,([P,D])=>(c(),O(za,{key:k([P,D]),class:"bg-comfy-menu-bg","node-title":P.title,"widget-name":D.name,onToggleVisibility:n(W=>b([P,D]),"onToggleVisibility")},null,8,["node-title","widget-name","onToggleVisibility"]))),128))])])):A("",!0),g.value.length?(c(),_("div",Iy,[E(Y,{size:"sm",class:"rounded border-none px-3 py-0.5",onClick:ke(I,["stop"])},{default:M(()=>[Ce(V(x.$t("subgraphStore.showRecommended")),1)]),_:1})])):A("",!0)])])):A("",!0)}}),My={"data-testid":"properties-panel",class:"flex size-full flex-col bg-comfy-menu-bg"},Dy={class:"pt-1"},Ay={class:"flex items-center justify-between pl-4 pr-3"},Ly={class:"my-3.5 text-sm font-semibold line-clamp-2 cursor-default"},Ey={class:"flex gap-2"},Ry={class:"px-4 pb-2 pt-1 overflow-x-auto"},Vy={class:"scrollbar-thin flex-1 overflow-y-auto"},Oy=j({__name:"RightSidePanel",setup(e){const o=he(),t=ut(),a=ie(),{t:l}=de(),{findParentGroup:s}=ah(),{selectedItems:i}=Be(o),{activeTab:r,isEditingSubgraph:u}=Be(t),m=w(()=>a.get("Comfy.Sidebar.Location")),f=w(()=>m.value==="right"?"icon-[lucide--panel-left]":"icon-[lucide--panel-right]"),{flattedItems:v,selectedNodes:g,selectedGroups:y,nodeToParentGroup:k}=uh(i),C=w(()=>!(i.value.length===1&&(y.value.length===1||g.value.length===1)));Bo(ni,F=>C.value?k.value.get(F)??s(F):null);const h=w(()=>v.value.length>0),b=w(()=>g.value.length===1&&v.value.length===1?g.value[0]:null),T=w(()=>b.value instanceof $n);function $(){t.closePanel()}n($,"closePanel");const I=w(()=>{const F=[];return F.push({label:n(()=>v.value.length>1?l("rightSidePanel.nodes"):l("rightSidePanel.parameters"),"label"),value:"parameters"}),h.value||F.push({label:n(()=>l("rightSidePanel.nodes"),"label"),value:"nodes"}),h.value&&b.value&&!T.value&&F.push({label:n(()=>l("rightSidePanel.info"),"label"),value:"info"}),F.push({label:n(()=>h.value?l("g.settings"):l("rightSidePanel.globalSettings.title"),"label"),value:"settings"}),F});xe(()=>{!I.value.some(F=>F.value===r.value)&&!(r.value==="subgraph"&&T.value)&&t.openPanel(I.value[0].value)});function S(){const F=v.value,z=g.value,U=y.value;if(F.length===0)return l("rightSidePanel.workflowOverview");if(i.value.length===1){if(U.length===1)return U[0].title||l("rightSidePanel.fallbackGroupTitle");if(z.length===1)return z[0].title||z[0].type||l("rightSidePanel.fallbackNodeTitle")}return l("rightSidePanel.title",{count:F.length})}n(S,"resolveTitle");const x=L(S());xe(()=>x.value=S());const N=L(!1),P=w(()=>i.value.length===1&&(y.value.length===1||g.value.length===1));function D(F){N.value=!1;const z=F.trim();if(!z)return;const U=y.value[0]||g.value[0];U&&z!==U.title&&(U.title=z,x.value=z,o.canvas?.setDirty(!0,!0))}n(D,"handleTitleEdit");function W(){N.value=!1}return n(W,"handleTitleCancel"),(F,z)=>(c(),_("div",My,[p("section",Dy,[p("div",Ay,[p("h3",Ly,[P.value?(c(),_(ee,{key:0},[E(Tn,{"model-value":x.value,"is-editing":N.value,"input-attrs":{"data-testid":"node-title-input"},class:"cursor-text",onEdit:D,onCancel:W,onClick:z[0]||(z[0]=U=>N.value=!0)},null,8,["model-value","is-editing"]),N.value?A("",!0):(c(),_("i",{key:0,class:"icon-[lucide--pencil] size-4 text-muted-foreground ml-2 content-center relative top-[2px] hover:text-base-foreground cursor-pointer shrink-0",onClick:z[1]||(z[1]=U=>N.value=!0)}))],64)):(c(),_(ee,{key:1},[Ce(V(x.value),1)],64))]),p("div",Ey,[T.value?(c(),O(Y,{key:0,variant:"secondary",size:"icon",class:q(d(te)(d(u)&&"bg-secondary-background-selected")),onClick:z[2]||(z[2]=U=>d(t).openPanel(d(u)?"parameters":"subgraph"))},{default:M(()=>z[4]||(z[4]=[p("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["class"])):A("",!0),E(Y,{variant:"secondary",size:"icon","aria-pressed":d(t).isOpen,"aria-label":d(l)("rightSidePanel.togglePanel"),onClick:$},{default:M(()=>[p("i",{class:q(d(te)(f.value,"size-4"))},null,2)]),_:1},8,["aria-pressed","aria-label"])])]),p("nav",Ry,[E(Yr,{"model-value":d(r),"onUpdate:modelValue":z[3]||(z[3]=U=>{d(t).openPanel(U)})},{default:M(()=>[(c(!0),_(ee,null,we(I.value,U=>(c(),O(Jr,{key:U.value,class:"text-sm py-1 px-2 font-inter transition-all active:scale-95",value:U.value},{default:M(()=>[Ce(V(U.label()),1)]),_:2},1032,["value"]))),128))]),_:1},8,["model-value"])])]),p("div",Vy,[h.value?T.value&&d(u)?(c(),O(Py,{key:1,node:b.value},null,8,["node"])):(c(),_(ee,{key:2},[d(r)==="parameters"&&T.value?(c(),O(Qh,{key:0,node:b.value},null,8,["node"])):d(r)==="parameters"?(c(),O(jh,{key:1,nodes:d(g),"must-show-node-title":d(y).length>0},null,8,["nodes","must-show-node-title"])):d(r)==="info"?(c(),O(ih,{key:2,nodes:d(g)},null,8,["nodes"])):d(r)==="settings"?(c(),O(fy,{key:3,nodes:d(v)},null,8,["nodes"])):A("",!0)],64)):(c(),_(ee,{key:0},[d(r)==="parameters"?(c(),O(zh,{key:0})):d(r)==="nodes"?(c(),O(Uh,{key:1})):d(r)==="settings"?(c(),O(ty,{key:2})):A("",!0)],64))])]))}}),Ks=Vt("searchBox",()=>{const e=ie(),{x:o,y:t}=Ni(),a=w(()=>e.get("Comfy.NodeSearchBoxImpl")==="default"),l=Ke(null);function s(u){l.value=u}n(s,"setPopoverRef");const i=L(!1);function r(){if(a.value){i.value=!i.value;return}l.value&&l.value.showSearchBox(new MouseEvent("click",{clientX:o.value,clientY:t.value,layerY:t.value}))}return n(r,"toggleVisible"),{newSearchBoxEnabled:a,setPopoverRef:s,toggleVisible:r,visible:i}}),Wy={name:"AutoCompletePlus",extends:jo,emits:["focused-option-changed"],data(){return{isComposing:!1}},mounted(){typeof jo.mounted=="function"&&jo.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}jo.methods.onKeyDown.call(this,e)}}},zy={class:"option-container flex w-full cursor-pointer items-center justify-between overflow-hidden px-2 py-0"},By={class:"option-display-name flex flex-col font-semibold"},Fy={key:0},Uy=["innerHTML"],Gy=["innerHTML"],Hy={key:0,class:"option-category truncate text-sm font-light text-muted"},jy={class:"option-badges"},qy=j({__name:"NodeSearchItem",props:{nodeDef:{},currentQuery:{}},setup(e){const o=ie(),t=w(()=>o.get("Comfy.NodeSearchBoxImpl.ShowCategory")),a=w(()=>o.get("Comfy.NodeSearchBoxImpl.ShowIdName")),l=w(()=>o.get("Comfy.NodeSearchBoxImpl.ShowNodeFrequency")),s=Vs(),i=w(()=>s.getNodeFrequency(m.nodeDef)),r=Xr(),u=w(()=>r.isBookmarked(m.nodeDef)),m=e;return(f,v)=>(c(),_("div",zy,[p("div",By,[p("div",null,[u.value?(c(),_("span",Fy,v[0]||(v[0]=[p("i",{class:"pi pi-bookmark-fill mr-1 text-sm"},null,-1)]))):A("",!0),p("span",{innerHTML:d(ga)(f.nodeDef.display_name,f.currentQuery)},null,8,Uy),v[1]||(v[1]=p("span",null," ",-1)),a.value?(c(),O(d(io),{key:1,severity:"secondary"},{default:M(()=>[p("span",{innerHTML:d(ga)(f.nodeDef.name,f.currentQuery)},null,8,Gy)]),_:1})):A("",!0)]),t.value?(c(),_("div",Hy,V(f.nodeDef.category.replaceAll("/"," > ")),1)):A("",!0)]),p("div",jy,[f.nodeDef.experimental?(c(),O(d(io),{key:0,value:f.$t("g.experimental"),severity:"primary"},null,8,["value"])):A("",!0),f.nodeDef.deprecated?(c(),O(d(io),{key:1,value:f.$t("g.deprecated"),severity:"danger"},null,8,["value"])):A("",!0),l.value&&i.value>0?(c(),O(d(io),{key:2,value:d(Zr)(i.value,{roundToInt:!0}),severity:"secondary"},null,8,["value"])):A("",!0),f.nodeDef.nodeSource.type!==d(eu).Unknown?(c(),O(d(tr),{key:3,class:"text-sm font-light"},{default:M(()=>[Ce(V(f.nodeDef.nodeSource.displayText),1)]),_:1})):A("",!0)])]))}}),Ky=Ve(qy,[["__scopeId","data-v-acda36a0"]]),Qy={class:"comfy-vue-node-search-container flex w-full min-w-96 items-center justify-center"},Yy={class:"_dialog-body"},Jy=j({__name:"NodeSearchBox",props:{filters:{},searchLimit:{default:64}},emits:["addFilter","removeFilter","addNode"],setup(e,{emit:o}){const t=ie(),{t:a}=de(),l=w(()=>t.get("Comfy.NodeSearchBoxImpl.NodePreview")),s=L(),i=L(!1),r=`comfy-vue-node-search-box-input-${Math.random()}`,u=L([]),m=L(null),f=L(""),v=w(()=>e.filters.length===0?a("g.searchNodes")+"...":""),g=It(),y=Vs(),k=Cn(N=>{N.trim()},500),C=n(N=>{const P=N===""&&e.filters.length===0;f.value=N,u.value=P?y.topNodeDefs:[...g.nodeSearchService.searchNode(N,e.filters,{limit:e.searchLimit})],k(N)},"search"),h=o,b=n(N=>{h("addNode",N)},"onAddNode");let T=null;const $=n(async()=>{T??=document.getElementById(r),T&&(T.blur(),await We(()=>T?.focus()))},"reFocusInput");Re(()=>{T??=document.getElementById(r),T&&T.focus(),s.value.hide=()=>C(""),C(""),s.value.show()});const I=n(N=>{i.value=!1,h("addFilter",N)},"onAddFilter"),S=n(async(N,P)=>{N.stopPropagation(),N.preventDefault(),h("removeFilter",P),await $()},"onRemoveFilter"),x=n(N=>{if(N===-1){m.value=null;return}const P=u.value[N];m.value=P},"setHoverSuggestion");return(N,P)=>(c(),_("div",Qy,[l.value&&m.value?(c(),_("div",{key:0,class:"comfy-vue-node-preview-container absolute top-[50px] left-[-375px] z-50 cursor-pointer",onMousedown:P[0]||(P[0]=ke(D=>b(m.value),["stop"]))},[(c(),O(tu,{key:m.value?.name||"","node-def":m.value},null,8,["node-def"]))],32)):A("",!0),E(Y,{variant:"secondary","aria-label":N.$t("g.addNodeFilterCondition"),class:"filter-button z-10",onClick:P[1]||(P[1]=D=>i.value=!0)},{default:M(()=>P[6]||(P[6]=[p("i",{class:"pi pi-filter"},null,-1)])),_:1},8,["aria-label"]),E(d(kl),{visible:i.value,"onUpdate:visible":P[2]||(P[2]=D=>i.value=D),class:"min-w-96","dismissable-mask":"",modal:"",onHide:$},{header:M(()=>[p("h3",null,V(N.$t("g.addNodeFilterCondition")),1)]),default:M(()=>[p("div",Yy,[E(ou,{onAddFilter:I})])]),_:1},8,["visible"]),E(Wy,{ref_key:"autoCompletePlus",ref:s,"model-value":N.filters,class:"comfy-vue-node-search-box z-10 grow","scroll-height":"40vh",placeholder:v.value,"input-id":r,"append-to":"self",suggestions:u.value,delay:100,loading:!d(y).isLoaded,"complete-on-focus":"","auto-option-focus":"","force-selection":"",multiple:"","option-label":"display_name",onComplete:P[3]||(P[3]=D=>C(D.query)),onOptionSelect:P[4]||(P[4]=D=>b(D.value)),onFocusedOptionChanged:P[5]||(P[5]=D=>x(D))},{option:M(({option:D})=>[E(Ky,{"node-def":D,"current-query":f.value},null,8,["node-def","current-query"])]),chip:M(({value:D})=>[D.filterDef&&D.value?(c(),O(nu,{key:`${D.filterDef.id}-${D.value}`,text:D.value,badge:D.filterDef.invokeSequence.toUpperCase(),"badge-class":D.filterDef.invokeSequence+"-badge",onRemove:n(W=>S(W,D),"onRemove")},null,8,["text","badge","badge-class","onRemove"])):A("",!0)]),_:1},8,["model-value","placeholder","suggestions","loading"])]))}}),Xy=j({__name:"NodeSearchBoxPopover",setup(e,{expose:o}){let t=null,a=null,l=!1;const s=ie(),i=Ks(),r=Uo(),{visible:u,newSearchBoxEnabled:m}=Be(i),f=L(!0);function v(){return t?[t.canvasX,t.canvasY]:r.getCanvasCenter()}n(v,"getNewNodeLocation");const g=L([]);function y(B){g.value.push(B)}n(y,"addFilter");function k(B){g.value=g.value.filter(G=>mn(G)!==mn(B))}n(k,"removeFilter");function C(){g.value=[]}n(C,"clearFilters");function h(){u.value=!1}n(h,"closeDialog");const b=he();function T(B){const G=r.addNodeOnGraph(B,{pos:v()});l&&t?b.getCanvas().linkConnector.connectToNode(G,t):t||console.warn("The trigger event was undefined when addNode was called."),l=!1,Ae().activeWorkflow?.changeTracker?.checkState(),window.requestAnimationFrame(h)}n(T,"addNode");function $(B){m.value?B?.pointerType==="touch"?setTimeout(()=>{x(B)},128):x(B):b.getCanvas().showSearchBox(B)}n($,"showSearchBox");function I(){return b.getCanvas().linkConnector.renderLinks.at(0)}n(I,"getFirstLink");const S=It();function x(B){const G=I();if(G){const Q=G.toType==="input"?S.nodeSearchService.inputTypeFilter:S.nodeSearchService.outputTypeFilter,K=G.fromSlot.type?.toString()??"";y({filterDef:Q,value:K})}u.value=!0,t=B,f.value=!1,setTimeout(()=>{f.value=!0},300)}n(x,"showNewSearchBox");function N(B){const G=I();if(!G)return;const{node:Q,fromSlot:K,toType:X}=G,ne={e:B,allow_searchbox:!0,showSearchBox:n(()=>{Oe(),$(B)},"showSearchBox")},Z=G.fromReroute?.id,re=X==="input"?{nodeFrom:Q,slotFrom:K,afterRerouteId:Z}:{nodeTo:Q,slotTo:K,afterRerouteId:Z},ue=b.getCanvas(),Pe=ue.showConnectionMenu({...re,...ne});if(!Pe){console.warn("No menu was returned from showConnectionMenu");return}t=B,a=new AbortController;const{signal:Ue}=a,Ye={once:!0,signal:Ue};Ee(ue.canvas,"connect-new-default-node",$e=>{if(!($e instanceof CustomEvent))throw new Error("Invalid event");const Fe=$e.detail?.node;if(!(Fe instanceof Ct))throw new Error("Invalid node");l=!1,$e.preventDefault(),ue.linkConnector.connectToNode(Fe,B)},Ye);const Oe=Ee(Pe.controller.signal,"abort",H,Ye)}n(N,"showContextMenu"),xe(()=>{const{canvas:B}=b;B&&(ye.release_link_on_empty_shows_menu=!1,B.allow_searchbox=!1,Ee(B.linkConnector.events,"dropped-on-canvas",U))});function P(B){if(B.detail.subType==="empty-double-click")$(B.detail.originalEvent);else if(B.detail.subType==="group-double-click"){const G=B.detail.group,[Q,K]=G.pos;B.detail.originalEvent.canvasY-K>G.titleHeight&&$(B.detail.originalEvent)}}n(P,"canvasEventHandler");const D=w(()=>s.get("Comfy.LinkRelease.Action")),W=w(()=>s.get("Comfy.LinkRelease.ActionShift"));function F(B){return B.preventDefault()}n(F,"preventDefault");function z(B){B.preventDefault();const G=b.getCanvas();G.linkConnector.state.snapLinksPos=[B.detail.canvasX,B.detail.canvasY],Ee(G.linkConnector.events,"reset",F,{once:!0})}n(z,"cancelNextReset");function U(B){switch(l=!0,B.detail.shiftKey?W.value:D.value){case $t.SEARCH_BOX:z(B),$(B.detail);break;case $t.CONTEXT_MENU:z(B),N(B.detail);break;case $t.NO_ACTION:}}n(U,"handleDroppedOnCanvas");function H(){a?.abort(),a=null,t=null;const B=b.getCanvas();B.linkConnector.events.removeEventListener("reset",F),l&&B.linkConnector.disconnectLinks(),B.linkConnector.reset(),B.setDirty(!0,!0)}return n(H,"reset"),le(u,()=>{u.value||H()}),Ee(document,"litegraph:canvas",P),o({showSearchBox:$}),(B,G)=>(c(),_("div",null,[E(d(kl),{visible:d(u),"onUpdate:visible":G[0]||(G[0]=Q=>je(u)?u.value=Q:null),modal:"","dismissable-mask":f.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:C},{container:M(()=>[E(Jy,{filters:g.value,onAddFilter:y,onRemoveFilter:k,onAddNode:T},null,8,["filters"])]),_:1},8,["visible","dismissable-mask"])]))}}),ps=Vt("helpCenter",()=>{const e=L(!1),o=L("sidebar");return{isVisible:e,triggerLocation:o,toggle:n((s="sidebar")=>{e.value||(o.value=s),e.value=!e.value},"toggle"),show:n((s="sidebar")=>{o.value=s,e.value=!0},"show"),hide:n(()=>{e.value=!1},"hide")}});function Qs(e="sidebar"){const o=ie(),t=So(),a=ps(),{isVisible:l,triggerLocation:s}=Be(a),{shouldShowRedDot:i}=Be(t),r=Al(),{showNodeConflictDialog:u}=rt(),{shouldShowRedDot:m,markConflictsAsSeen:f}=As(),v=w(()=>i.value||m.value),g=w(()=>o.get("Comfy.Sidebar.Location")),y=n(()=>{a.toggle(e)},"toggleHelpCenter"),k=n(()=>{a.hide()},"closeHelpCenter"),C=n(async()=>{try{await r.shouldShowConflictModalAfterUpdate()&&h()}catch(b){console.error("[HelpCenter] Error checking conflict modal:",b)}},"handleWhatsNewDismissed"),h=n(()=>{u({showAfterWhatsNew:!0,dialogComponentProps:{onClose:n(()=>{f()},"onClose")}})},"showConflictModal");return Re(async()=>{await t.initialize()}),{isHelpCenterVisible:l,triggerLocation:s,shouldShowRedDot:v,sidebarLocation:g,toggleHelpCenter:y,closeHelpCenter:k,handleWhatsNewDismissed:C}}n(Qs,"useHelpCenter");const Zy={key:0,class:"release-toast-popup"},eb={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"},tb={class:"p-4 flex flex-col gap-4 flex-1 min-h-0"},ob={class:"flex items-center gap-4"},nb={class:"flex flex-col gap-1"},sb={class:"text-sm font-normal text-base-foreground leading-[1.429]"},ab={class:"text-sm font-normal text-muted-foreground leading-[1.21]"},lb=["innerHTML"],ib={class:"flex justify-between items-center px-4 pb-4"},rb=["href"],ub={class:"flex items-center gap-4"},db=j({__name:"ReleaseNotificationToast",setup(e,{expose:o}){const{buildDocsUrl:t}=bo(),{toastErrorHandler:a}=Yt(),l=So(),{t:s}=de(),i=L(!1),r=w(()=>l.recentRelease),u=w(()=>l.shouldShowToast&&!i.value),m=w(()=>{const T=t("/changelog",{includeLocale:!0});if(r.value?.version){const $=Os(r.value.version);return`${T}#${$}`}return T}),f=w(()=>{if(!r.value?.content)return Nt.sanitize(`<p>${s("releaseToast.description")}</p>`);try{const I=r.value.content.replace(/^# .+$/m,"").replace(/!\[.*?\]\(.*?\)/g,""),S=I.trim();return!S||S.replace(/\s+/g,"")===""?Nt.sanitize(`<p>${s("releaseToast.description")}</p>`):Ll(I)}catch(T){console.error("Error parsing markdown:",T);const $=r.value.content.replace(/\n/g,"<br>");return $.trim()?Nt.sanitize($):Nt.sanitize(`<p>${s("releaseToast.description")}</p>`)}});let v=null;const g=n(()=>{v&&clearTimeout(v),v=setTimeout(()=>{k()},8e3)},"startAutoHide"),y=n(()=>{v&&(clearTimeout(v),v=null)},"clearAutoHide"),k=n(()=>{i.value=!0,y()},"dismissToast"),C=n(()=>{r.value&&l.handleSkipRelease(r.value.version),k()},"handleSkip"),h=n(()=>{r.value&&l.handleShowChangelog(r.value.version),k()},"handleLearnMore"),b=n(async()=>{if(Xe()){try{await Te().execute("Comfy-Desktop.CheckForUpdates"),k()}catch(T){a(T)}return}window.open(t("/installation/update_comfyui",{includeLocale:!0}),"_blank"),k()},"handleUpdate");return le(u,T=>{T?g():y()}),Re(async()=>{l.releases.length||await l.fetchReleases()}),o({handleSkip:C,handleLearnMore:h,handleUpdate:b}),(T,$)=>u.value?(c(),_("div",Zy,[p("div",eb,[p("div",tb,[p("div",ob,[$[0]||($[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",nb,[p("div",sb,V(T.$t("releaseToast.newVersionAvailable")),1),p("div",ab,V(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:f.value},null,8,lb)]),p("div",ib,[p("a",{class:"flex items-center gap-2 text-sm font-normal py-1 text-muted-foreground hover:text-base-foreground",href:m.value,target:"_blank",rel:"noopener noreferrer",onClick:h},[$[1]||($[1]=p("i",{class:"icon-[lucide--external-link] w-4 h-4"},null,-1)),Ce(" "+V(T.$t("releaseToast.whatsNew")),1)],8,rb),p("div",ub,[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:C},V(T.$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:b},V(T.$t("releaseToast.update")),1)])])])])):A("",!0)}}),cb=Ve(db,[["__scopeId","data-v-ba02c61a"]]),pb={key:0,class:"whats-new-popup-container left-4"},fb={class:"modal-body flex flex-col gap-4 px-0 pt-0 pb-2 flex-1"},mb=["innerHTML"],gb={class:"modal-footer flex justify-between items-center gap-4 px-4 pb-4"},vb=["href"],hb={class:"footer-actions flex items-center gap-4"},yb=j({__name:"WhatsNewPopup",emits:["whats-new-dismissed"],setup(e,{expose:o,emit:t}){const{buildDocsUrl:a}=bo(),l=So(),{t:s}=de(),i=t,r=L(!1),u=w(()=>l.recentRelease),m=w(()=>l.shouldShowPopup&&!r.value),f=w(()=>{const C=a("/changelog",{includeLocale:!0});if(u.value?.version){const h=Os(u.value.version);return`${C}#${h}`}return C}),v=w(()=>{if(!u.value?.content)return Nt.sanitize(`<p>${s("whatsNewPopup.noReleaseNotes")}</p>`);try{const C=u.value.content,h=C.trim();if(!h||h.replace(/\s+/g,"")==="")return Nt.sanitize(`<p>${s("whatsNewPopup.noReleaseNotes")}</p>`);const b=C.match(/!\[.*?\]\(.*?\)/),T=b?b[0]:"",$=C.replace(/!\[.*?\]\(.*?\)/,"").trim(),I=[T,$].filter(Boolean).join(`
|
|
9
|
-
|
|
10
|
-
`);return Ll(I)}catch(C){console.error("Error parsing markdown:",C);const h=u.value.content.replace(/\n/g,"<br>");return h.trim()?Nt.sanitize(h):Nt.sanitize(`<p>${s("whatsNewPopup.noReleaseNotes")}</p>`)}}),g=n(()=>{r.value=!1},"show"),y=n(()=>{r.value=!0,i("whats-new-dismissed")},"hide"),k=n(async()=>{u.value&&await l.handleWhatsNewSeen(u.value.version),y()},"closePopup");return Re(async()=>{l.releases.length||await l.fetchReleases()}),o({show:g,hide:y,closePopup:k}),(C,h)=>m.value?(c(),_("div",pb,[p("div",{class:"whats-new-popup",onClick:h[0]||(h[0]=ke(()=>{},["stop"]))},[E(Y,{class:"close-button absolute top-2 right-2 z-10 w-8 h-8 p-2 rounded-lg opacity-50","aria-label":C.$t("g.close"),size:"icon-sm",variant:"muted-textonly",onClick:k},{default:M(()=>h[1]||(h[1]=[p("i",{class:"icon-[lucide--x]"},null,-1)])),_:1},8,["aria-label"]),p("div",fb,[p("div",{class:"content-text max-h-96 overflow-y-auto",innerHTML:v.value},null,8,mb)]),p("div",gb,[p("a",{class:"learn-more-link flex items-center gap-2 text-sm font-normal py-1",href:f.value,target:"_blank",rel:"noopener noreferrer",onClick:k},[h[2]||(h[2]=p("i",{class:"icon-[lucide--external-link]"},null,-1)),Ce(" "+V(C.$t("whatsNewPopup.learnMore")),1)],8,vb),p("div",hb,[E(Y,{class:"h-8",size:"sm",variant:"muted-textonly",onClick:k},{default:M(()=>[Ce(V(C.$t("whatsNewPopup.later")),1)]),_:1})])])])])):A("",!0)}}),bb=Ve(yb,[["__scopeId","data-v-98a9f324"]]),wb=["width","height"],kb={"clip-path":"url(#clip0_1099_16244)"},Cb=["stroke"],xb=j({__name:"PuzzleIcon",props:{size:{default:16},color:{default:"currentColor"},class:{}},setup(e){const o=w(()=>e.class||"");return(t,a)=>(c(),_("svg",{xmlns:"http://www.w3.org/2000/svg",width:t.size,height:t.size,viewBox:"0 0 16 16",fill:"none",class:q(o.value)},[p("g",kb,[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,Cb)]),a[0]||(a[0]=p("defs",null,[p("clipPath",{id:"clip0_1099_16244"},[p("rect",{width:"16",height:"16",fill:"white"})])],-1))],10,wb))}}),Sb=["aria-label"],_b={class:"w-full"},Tb={class:"flex w-full flex-col gap-2",role:"menubar"},$b=["onClick","onMouseenter","onMouseleave"],Nb={class:"help-menu-icon-container"},Ib={class:"help-menu-icon"},Pb={key:0,class:"menu-red-dot"},Mb={class:"menu-label"},Db={key:0,class:"icon-[lucide--external-link] text-primary w-4 h-4 ml-auto"},Ab={key:1,class:"pi pi-chevron-right ml-auto"},Lb={key:0,class:"submenu-divider"},Eb=["onClick"],Rb={class:"menu-label"},Vb={key:0,class:"w-full","data-testid":"whats-new-section"},Ob={class:"section-description flex items-center gap-2.5 self-stretch px-8 pt-2 pb-2"},Wb=["aria-label"],zb=["onClick","onKeydown"],Bb={class:"release-content"},Fb={class:"release-title"},Ub=["datetime"],Gb={class:"normal-state"},Hb={class:"hover-state"},jb={key:1,class:"help-menu-item",role:"status","aria-live":"polite"},qb={key:2,class:"help-menu-item",role:"status"},Kb=j({__name:"HelpCenterMenuContent",emits:["close"],setup(e,{emit:o}){const t={MINUTE:6e4,HOUR:36e5,DAY:864e5,WEEK:6048e5,MONTH:2592e6,YEAR:31536e6},a={DELAY_MS:100,OFFSET_PX:8,Z_INDEX:10001},{t:l}=de(),s=Qt(),{staticUrls:i,buildDocsUrl:r}=bo(),u=So(),m=Te(),f=ie(),v=L(Date.now()),g=o,y=L(!1),k=L(null),C=L({});let h=null;const b=w(()=>u.releases.length>0),T=w(()=>f.get("Comfy.Notification.ShowVersionUpdates")),{shouldShowRedDot:$}=As(),{isNewManagerUI:I}=wt(),S=w(()=>[{key:"desktop-guide",type:"item",label:l("helpCenter.desktopUserGuide"),visible:Xe(),action:n(()=>{D(r("/installation/desktop",{includeLocale:!0,platform:!0})),g("close")},"action")},{key:"dev-tools",type:"item",label:l("helpCenter.openDevTools"),visible:Xe(),action:n(()=>{Q(),g("close")},"action")},{key:"divider-1",type:"divider",visible:Xe()},{key:"reinstall",type:"item",label:l("helpCenter.reinstall"),visible:Xe(),action:n(()=>{K(),g("close")},"action")}].filter(re=>re.visible!==!1)),x=w(()=>!!S.value.length),N=w(()=>P.value.find(Z=>Z.key==="more")),P=w(()=>{const Z=[{key:"feedback",type:"item",icon:"icon-[lucide--clipboard-pen]",label:l("helpCenter.feedback"),action:n(()=>{m.execute("Comfy.ContactSupport"),g("close")},"action")},{key:"help",type:"item",icon:"icon-[lucide--message-circle-question]",label:l("helpCenter.help"),action:n(()=>{m.execute("Comfy.ContactSupport"),g("close")},"action")},{key:"docs",type:"item",icon:"icon-[lucide--book-open]",label:l("helpCenter.docs"),showExternalIcon:!0,action:n(()=>{D(r("/",{includeLocale:!0})),g("close")},"action")},{key:"discord",type:"item",icon:"pi pi-discord",label:"Discord",showExternalIcon:!0,action:n(()=>{D(i.discord),g("close")},"action")},{key:"github",type:"item",icon:"icon-[lucide--github]",label:l("helpCenter.github"),showExternalIcon:!0,action:n(()=>{D(i.github),g("close")},"action")}];return Z.push({key:"manager",type:"item",icon:xb,label:l("helpCenter.managerExtension"),showRedDot:$.value,action:n(async()=>{await wt().openManager({initialTab:ro.All,showToastOnLegacyError:!1}),g("close")},"action")}),!Xe()&&!Lt&&I.value&&Z.push({key:"update-comfyui",type:"item",icon:"icon-[lucide--download]",label:l("helpCenter.updateComfyUI"),action:n(()=>{X(),g("close")},"action")}),Z.push({key:"more",type:"item",icon:"",label:l("helpCenter.more"),visible:x.value,action:n(()=>{},"action"),items:S.value}),Z}),D=n(Z=>{window.open(Z,"_blank","noopener,noreferrer")},"openExternalLink"),W=n(()=>{h&&(clearTimeout(h),h=null)},"clearHoverTimeout"),F=n(Z=>{const re=Z.getBoundingClientRect(),ue=210,Ue=(N.value?.items?.filter(_t=>_t.visible!==!1).length||0)*48+16,Ye=k.value?.offsetHeight||Ue,Oe=window.innerWidth,$e=window.innerHeight;let Fe=re.top,Ze=re.right+a.OFFSET_PX;return Ze+ue>Oe&&(Ze=re.left-ue-a.OFFSET_PX),Fe+Ye>$e&&(Fe=Math.max(a.OFFSET_PX,re.bottom-Ye)),Fe<a.OFFSET_PX&&(Fe=a.OFFSET_PX),Fe-=8,{position:"fixed",top:`${Fe}px`,left:`${Ze}px`,zIndex:a.Z_INDEX}},"calculateSubmenuPosition"),z=n(Z=>{if(!Z)return"date";const re=new Date(Z),Pe=Math.abs(new Date().getTime()-re.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:Ye,key:Oe}of Ue){const $e=Math.floor(Pe/Ye);if($e>0)return l(`g.relativeTime.${Oe}`,{count:$e})}return l("g.relativeTime.now")},"formatReleaseDate"),U=n(async(Z,re)=>{if(Z!=="more"||!N.value?.items||!N.value.items.some(Ue=>Ue.visible!==!1))return;W();const Pe=re.currentTarget;C.value=F(Pe),y.value=!0,await We(),k.value&&(C.value=F(Pe))},"onMenuItemHover"),H=n(Z=>{Z==="more"&&(h=window.setTimeout(()=>{y.value=!1},a.DELAY_MS))},"onMenuItemLeave"),B=n(()=>{W()},"onSubmenuHover"),G=n(()=>{y.value=!1},"onSubmenuLeave"),Q=n(()=>{Xe()&&Mo().openDevTools()},"openDevTools"),K=n(()=>{Xe()&&Mo().reinstall()},"onReinstall"),X=n(async()=>{const{updateComfyUI:Z,rebootComfyUI:re,error:ue}=El();s.add({severity:"info",summary:l("helpCenter.updateComfyUIStarted"),detail:l("helpCenter.updateComfyUIStartedDetail"),life:3e3});try{if(await Z({is_stable:!0})===null||ue.value){s.add({severity:"error",summary:l("g.error"),detail:ue.value||l("helpCenter.updateComfyUIFailed"),life:5e3});return}s.add({severity:"success",summary:l("helpCenter.updateComfyUISuccess"),detail:l("helpCenter.updateComfyUISuccessDetail"),life:3e3}),await re()}catch(Pe){s.add({severity:"error",summary:l("g.error"),detail:Pe instanceof Error?Pe.message:l("g.unknownError"),life:5e3})}},"onUpdateComfyUI"),ne=n(Z=>{u.handleShowChangelog(Z.version);const re=Os(Z.version),ue=`${r("/changelog",{includeLocale:!0})}#${re}`;D(ue),g("close")},"onReleaseClick");return Re(async()=>{b.value||await u.fetchReleases()}),nt(()=>{Math.round((Date.now()-v.value)/1e3)}),(Z,re)=>(c(),_("div",{class:"help-center-menu flex flex-col items-start gap-1",role:"menu","aria-label":Z.$t("help.helpCenterMenu")},[p("div",_b,[p("nav",Tb,[(c(!0),_(ee,null,we(P.value,ue=>pe((c(),_("button",{key:ue.key,type:"button",class:q(["help-menu-item",{"more-item":ue.key==="more"}]),role:"menuitem",onClick:ue.action,onMouseenter:n(Pe=>U(ue.key,Pe),"onMouseenter"),onMouseleave:n(Pe=>H(ue.key),"onMouseleave")},[p("div",Nb,[p("div",Ib,[typeof ue.icon=="object"?(c(),O(po(ue.icon),{key:0,size:16})):(c(),_("i",{key:1,class:q(ue.icon)},null,2))]),ue.showRedDot?(c(),_("div",Pb)):A("",!0)]),p("span",Mb,V(ue.label),1),ue.showExternalIcon?(c(),_("i",Db)):A("",!0),ue.key==="more"?(c(),_("i",Ab)):A("",!0)],42,$b)),[[et,ue.visible!==!1]])),128))]),re[0]||(re[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))]),(c(),O(kt,{to:"body"},[y.value?(c(),_("div",{key:0,ref_key:"submenuRef",ref:k,class:"more-submenu",style:be(C.value),onMouseenter:B,onMouseleave:G},[(c(!0),_(ee,null,we(N.value?.items,ue=>(c(),_(ee,{key:ue.key},[ue.type==="divider"?pe((c(),_("div",Lb,null,512)),[[et,ue.visible!==!1]]):pe((c(),_("button",{key:1,type:"button",class:"help-menu-item submenu-item",role:"menuitem",onClick:ue.action},[p("span",Rb,V(ue.label),1)],8,Eb)),[[et,ue.visible!==!1]])],64))),128))],36)):A("",!0)])),T.value?(c(),_("section",Vb,[p("h3",Ob,V(Z.$t("helpCenter.whatsNew")),1),b.value?(c(),_("div",{key:0,role:"group","aria-label":Z.$t("help.recentReleases")},[(c(!0),_(ee,null,we(d(u).recentReleases,ue=>(c(),_("article",{key:ue.id||ue.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(Pe=>ne(ue),"onClick"),onKeydown:[co(Pe=>ne(ue),["enter"]),co(ke(Pe=>ne(ue),["prevent"]),["space"])]},[re[1]||(re[1]=p("i",{class:"help-menu-icon icon-[lucide--package]","aria-hidden":"true"},null,-1)),p("div",Bb,[p("span",Fb,V(Z.$t("g.releaseTitle",{package:"Comfy",version:ue.version})),1),p("time",{class:"release-date",datetime:ue.published_at},[p("span",Gb,V(z(ue.published_at)),1),p("span",Hb,V(Z.$t("helpCenter.clickToLearnMore")),1)],8,Ub)])],40,zb))),128))],8,Wb)):d(u).isLoading?(c(),_("div",jb,[re[2]||(re[2]=p("i",{class:"pi pi-spin pi-spinner help-menu-icon","aria-hidden":"true"},null,-1)),p("span",null,V(Z.$t("helpCenter.loadingReleases")),1)])):(c(),_("div",qb,[re[3]||(re[3]=p("i",{class:"pi pi-info-circle help-menu-icon","aria-hidden":"true"},null,-1)),p("span",null,V(Z.$t("helpCenter.noRecentReleases")),1)]))])):A("",!0)],8,Sb))}}),Qb=Ve(Kb,[["__scopeId","data-v-8ecd06e2"]]),Yb=j({__name:"HelpCenterPopups",props:{isSmall:{type:Boolean,default:!1}},setup(e){const{isHelpCenterVisible:o,triggerLocation:t,sidebarLocation:a,closeHelpCenter:l,handleWhatsNewDismissed:s}=Qs();return(i,r)=>(c(),_(ee,null,[(c(),O(kt,{to:"#graph-canvas-container"},[d(o)?(c(),_("div",{key:0,class:q(["help-center-popup",{"sidebar-left":d(t)==="sidebar"&&d(a)==="left","sidebar-right":d(t)==="sidebar"&&d(a)==="right","topbar-right":d(t)==="topbar","small-sidebar":i.isSmall}])},[E(Qb,{onClose:d(l)},null,8,["onClose"])],2)):A("",!0)])),(c(),O(kt,{to:"#graph-canvas-container"},[E(cb,{class:q({"sidebar-left":d(a)==="left","sidebar-right":d(a)==="right","small-sidebar":i.isSmall})},null,8,["class"])])),(c(),O(kt,{to:"#graph-canvas-container"},[E(bb,{class:q({"sidebar-left":d(a)==="left","sidebar-right":d(a)==="right","small-sidebar":i.isSmall}),onWhatsNewDismissed:d(s)},null,8,["class","onWhatsNewDismissed"])])),(c(),O(kt,{to:"body"},[d(o)?(c(),_("div",{key:0,class:"help-center-backdrop",onClick:r[0]||(r[0]=(...u)=>d(l)&&d(l)(...u))})):A("",!0)]))],64))}}),Jb=Ve(Yb,[["__scopeId","data-v-2583d84f"]]),Xb=["width","height"],Zb=j({__name:"ComfyLogo",props:{size:{default:16},color:{default:"currentColor"},class:{},mode:{default:"outline"}},setup(e){const o=w(()=>e.class||""),t=w(()=>({stroke:e.mode==="outline"?e.color:void 0,strokeWidth:e.mode==="outline"?1:void 0,fill:e.mode==="fill"?e.color:"none"}));return(a,l)=>(c(),_("svg",{class:q(o.value),width:a.size,height:a.size,viewBox:"0 0 18 18",xmlns:"http://www.w3.org/2000/svg"},[p("path",tt({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,Xb))}}),rn=j({__name:"CardBottom",props:{fullHeight:{type:Boolean,default:!0}},setup(e){const o=w(()=>te("flex-1 w-full",e.fullHeight&&"h-full"));return(t,a)=>(c(),_("div",{class:q(o.value)},[ge(t.$slots,"default")],2))}}),ew="flex flex-col overflow-hidden",un=j({__name:"CardContainer",props:{size:{default:"regular"},variant:{default:"default"},rounded:{default:"md"},customAspectRatio:{},hasBorder:{type:Boolean,default:!0},hasBackground:{type:Boolean,default:!0},hasShadow:{type:Boolean,default:!0},hasCursor:{type:Boolean,default:!0},class:{default:""}},setup(e){const o={none:"rounded-none",md:"rounded",lg:"rounded-lg",xl:"rounded-xl"},t=w(()=>{const a={default:te(e.hasBackground&&"bg-modal-card-background",e.hasBorder&&"border border-border-default",e.hasShadow&&"shadow-sm",e.hasCursor&&"cursor-pointer"),ghost:te(e.hasCursor&&"cursor-pointer","p-2 transition-colors duration-200"),outline:te(e.hasBorder&&"border-2 border-border-subtle",e.hasCursor&&"cursor-pointer","hover:border-border-subtle/50 transition-colors")},l=e.customAspectRatio?`aspect-[${e.customAspectRatio}]`:{mini:"aspect-100/120",compact:"aspect-240/311",regular:"aspect-256/308",portrait:"aspect-256/325",tall:"aspect-256/353"}[e.size];return te(ew,o[e.rounded],a[e.variant],l,e.class)});return(a,l)=>(c(),_("div",{class:q(t.value)},[ge(a.$slots,"top"),ge(a.$slots,"bottom")],2))}}),dn=j({__name:"CardTop",props:{ratio:{default:"square"},topLeftClass:{},topRightClass:{},centerLeftClass:{},centerRightClass:{},bottomLeftClass:{},bottomRightClass:{}},setup(e){const o=el(),t=w(()=>`relative p-0 overflow-hidden ${{square:"aspect-square",landscape:"aspect-48/27"}[e.ratio]}`),a={"top-left":"absolute top-2 left-2 flex flex-wrap justify-start gap-2","top-right":"absolute top-2 right-2 flex flex-wrap justify-end gap-2","center-left":"absolute top-1/2 left-2 flex -translate-y-1/2 flex-wrap justify-start gap-2","center-right":"absolute top-1/2 right-2 flex -translate-y-1/2 flex-wrap justify-end gap-2","bottom-left":"absolute bottom-2 left-2 flex flex-wrap justify-start gap-2","bottom-right":"absolute right-2 bottom-2 flex flex-wrap justify-end gap-2"},l=w(()=>({"top-left":te(a["top-left"],e.topLeftClass),"top-right":te(a["top-right"],e.topRightClass),"center-left":te(a["center-left"],e.centerLeftClass),"center-right":te(a["center-right"],e.centerRightClass),"bottom-left":te(a["bottom-left"],e.bottomLeftClass),"bottom-right":te(a["bottom-right"],e.bottomRightClass)}));return(s,i)=>(c(),_("div",{class:q(t.value)},[ge(s.$slots,"default",{class:"absolute top-0 left-0 h-full w-full"}),d(o)["top-left"]?(c(),_("div",{key:0,class:q(l.value["top-left"])},[ge(s.$slots,"top-left")],2)):A("",!0),d(o)["top-right"]?(c(),_("div",{key:1,class:q(l.value["top-right"])},[ge(s.$slots,"top-right")],2)):A("",!0),d(o)["center-left"]?(c(),_("div",{key:2,class:q(l.value["center-left"])},[ge(s.$slots,"center-left")],2)):A("",!0),d(o)["center-right"]?(c(),_("div",{key:3,class:q(l.value["center-right"])},[ge(s.$slots,"center-right")],2)):A("",!0),d(o)["bottom-left"]?(c(),_("div",{key:4,class:q(l.value["bottom-left"])},[ge(s.$slots,"bottom-left")],2)):A("",!0),d(o)["bottom-right"]?(c(),_("div",{key:5,class:q(l.value["bottom-right"])},[ge(s.$slots,"bottom-right")],2)):A("",!0)],2))}}),tw="inline-flex shrink-0 items-center justify-center gap-1 rounded px-2 py-1 text-xs font-bold",cn=j({__name:"SquareChip",props:{label:{},variant:{default:"dark"}},setup(e){const o={dark:"bg-zinc-500/40 text-white/90",light:te("backdrop-blur-[2px] bg-base-background/50 text-base-foreground"),gray:te("backdrop-blur-[2px] bg-modal-card-tag-background text-base-foreground")},t=w(()=>te(tw,o[e.variant]));return(a,l)=>(c(),_("div",{class:q(t.value)},[ge(a.$slots,"icon"),p("span",null,V(a.label),1)],2))}}),ow={class:"relative aspect-square w-full overflow-hidden rounded-t-lg select-none"},nw={key:1,class:"flex h-full w-full items-center justify-center"},sw=j({__name:"BaseThumbnail",props:{hoverZoom:{default:4},isHovered:{type:Boolean}},setup(e){const o=L(!1),t=L(null);return Re(()=>{Array.from(t.value?.getElementsByTagName("img")??[]).forEach(l=>{Ee(l,"error",()=>{o.value=!0})})}),(a,l)=>(c(),_("div",ow,[o.value?(c(),_("div",nw,l[0]||(l[0]=[p("img",{src:ld,draggable:"false",class:"h-full w-full transform-gpu object-cover transition-transform duration-300 ease-out"},null,-1)]))):(c(),_("div",{key:0,ref_key:"contentRef",ref:t,class:"h-full w-full transform-gpu transition-transform duration-1000 ease-out",style:be(a.isHovered?{transform:`scale(${1+a.hoverZoom/100})`}:void 0)},[ge(a.$slots,"default",{},void 0,!0)],4))]))}}),Mn=Ve(sw,[["__scopeId","data-v-c216f2c0"]]),aw={class:"flex h-full w-full items-center justify-center p-4",style:{backgroundImage:"url(/assets/images/default-template.png)",backgroundRepeat:"round"}},lw=["src"],iw=j({__name:"AudioThumbnail",props:{src:{}},setup(e){return(o,t)=>(c(),O(Mn,null,{default:M(()=>[p("div",aw,[p("audio",{controls:"",class:"relative w-full",src:o.src,onClick:t[0]||(t[0]=ke(()=>{},["stop"]))},null,8,lw)])]),_:1}))}}),rw=50,uw=j({__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(rw),a=L(null),{elementX:l,elementWidth:s,isOutside:i}=Ii(a);return le([()=>e.isHovered,l,s,i],([r,u,m,f])=>{r&&(f||(t.value=u/m*100))}),(r,u)=>(c(),O(Mn,{"is-hovered":r.isHovered},{default:M(()=>[E(Eo,{src:r.baseImageSrc,alt:r.alt,"image-class":d(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:a,class:"absolute inset-0"},[E(Eo,{src:r.overlayImageSrc,alt:r.alt,"image-class":d(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:be({left:`${t.value}%`})},null,4)],512)]),_:1},8,["is-hovered"]))}}),dw=j({__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,a)=>(c(),O(Mn,{"hover-zoom":t.hoverZoom,"is-hovered":t.isHovered},{default:M(()=>[E(Eo,{src:t.src,alt:t.alt,"image-class":["transform-gpu transition-transform duration-300 ease-out",d(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"]))}}),cw={class:"relative h-full w-full"},pw={class:"absolute inset-0"},fw={class:"absolute inset-0 z-10"},mw=j({__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=w(()=>o?"size-full object-cover":"size-full object-contain"),a=w(()=>{const l="size-full transition-opacity duration-300",s=o?"object-cover":"object-contain",i=e.isHovered?"opacity-100":"opacity-0";return`${l} ${s} ${i}`});return(l,s)=>(c(),O(Mn,{"is-hovered":l.isHovered},{default:M(()=>[p("div",cw,[p("div",pw,[E(Eo,{src:l.baseImageSrc,alt:l.alt,"image-class":t.value},null,8,["src","alt","image-class"])]),p("div",fw,[E(Eo,{src:l.overlayImageSrc,alt:l.alt,"image-class":a.value},null,8,["src","alt","image-class"])])])]),_:1},8,["is-hovered"]))}});function gw(e,o={}){const{itemsPerPage:t=12,initialPage:a=1}=o,l=L(a),s=L(!1),i=Ke(new Set([])),r=w(()=>{const y="value"in e?e.value:e;return Array.isArray(y)?y:[]}),u=w(()=>{const y=r.value;if(y.length===0)return[];const k=Array.from(i.value).sort((b,T)=>b-T),h=Math.max(...k,0)*t;return y.slice(0,h)}),m=w(()=>{const y=r.value;if(y.length===0)return!1;const k=Array.from(i.value);return Math.max(...k,0)*t<y.length}),f=w(()=>{const y=r.value;return y.length===0?0:Math.ceil(y.length/t)}),v=n(async()=>{if(s.value||!m.value)return;s.value=!0;const y=Array.from(i.value),k=Math.max(...y,0)+1,C=new Set(i.value);C.add(k),i.value=C,l.value=k,s.value=!1},"loadNextPage");return le(()=>r.value.length,y=>{y>0&&i.value.size===0&&(i.value=new Set([1]))},{immediate:!0}),{paginatedItems:u,isLoading:s,hasMoreItems:m,currentPage:l,totalPages:f,loadNextPage:v,reset:n(()=>{l.value=a,i.value=new Set([]),s.value=!1,r.value.length>0&&(i.value=new Set([1]))},"reset")}}n(gw,"useLazyPagination");const vw=Vt("templateRanking",()=>{const e=L(),o=n(s=>s/(e.value??s),"normalizeUsageScore"),t=n(s=>{if(!s)return .5;const i=new Date(s);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((s,i,r=0)=>{const u=(i??5)/10,m=t(s);return o(r)*.5+u*.3+m*.2},"computeDefaultScore"),computePopularScore:n((s,i=0)=>{const r=t(s);return o(i)*.9+r*.1},"computePopularScore")}}),hw={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};function yw(e){const o=ie(),t=vw(),a=L(""),l=L(o.get("Comfy.Templates.SelectedModels")),s=L(o.get("Comfy.Templates.SelectedUseCases")),i=L(o.get("Comfy.Templates.SelectedRunsOn")),r=L(o.get("Comfy.Templates.SortBy")),u=L(hw),m=w(()=>{const H="value"in e?e.value:e;return Array.isArray(H)?H:[]}),f=w(()=>new Pi(m.value,u.value)),v=w(()=>{const H=new Set;return m.value.forEach(B=>{Array.isArray(B.models)&&B.models.forEach(G=>H.add(G))}),Array.from(H).sort()}),g=w(()=>{const H=new Set;return m.value.forEach(B=>{B.tags&&Array.isArray(B.tags)&&B.tags.forEach(G=>H.add(G))}),Array.from(H).sort()}),y=w(()=>["ComfyUI","External or Remote API"]),k=Mi(a,50),C=w(()=>k.value.trim()?f.value.search(k.value).map(B=>B.item):m.value),h=w(()=>l.value.length===0?C.value:C.value.filter(H=>!H.models||!Array.isArray(H.models)?!1:l.value.some(B=>H.models?.includes(B)))),b=w(()=>s.value.length===0?h.value:h.value.filter(H=>!H.tags||!Array.isArray(H.tags)?!1:s.value.some(B=>H.tags?.includes(B)))),T=w(()=>i.value.length===0?b.value:b.value.filter(H=>{const B=H.openSource===!1,G=H.openSource!==!1;return i.value.some(Q=>Q==="External or Remote API"?B:Q==="ComfyUI"?G:!1)})),$=n(H=>typeof H.vram=="number"&&Number.isFinite(H.vram)&&H.vram>0?H.vram:Number.POSITIVE_INFINITY,"getVramMetric");le(T,H=>{t.largestUsageScore=Math.max(...H.map(B=>B.usage||0))},{immediate:!0});const I=w(()=>{const H=[...T.value];switch(r.value){case"recommended":return H.sort((B,G)=>{const Q=t.computeDefaultScore(B.date,B.searchRank,B.usage);return t.computeDefaultScore(G.date,G.searchRank,G.usage)-Q});case"popular":return H.sort((B,G)=>{const Q=t.computePopularScore(B.date,B.usage);return t.computePopularScore(G.date,G.usage)-Q});case"alphabetical":return H.sort((B,G)=>{const Q=B.title||B.name||"",K=G.title||G.name||"";return Q.localeCompare(K)});case"newest":return H.sort((B,G)=>{const Q=new Date(B.date||"1970-01-01");return new Date(G.date||"1970-01-01").getTime()-Q.getTime()});case"vram-low-to-high":return H.sort((B,G)=>{const Q=$(B),K=$(G);if(Q===K){const X=B.title||B.name||"",ne=G.title||G.name||"";return X.localeCompare(ne)}return Q===Number.POSITIVE_INFINITY?1:K===Number.POSITIVE_INFINITY?-1:Q-K});case"model-size-low-to-high":return H.sort((B,G)=>{const Q=typeof B.size=="number"?B.size:Number.POSITIVE_INFINITY,K=typeof G.size=="number"?G.size:Number.POSITIVE_INFINITY;return Q===K?0:Q-K});case"default":default:return H}}),S=w(()=>I.value),x=n(()=>{a.value="",l.value=[],s.value=[],i.value=[],r.value="default"},"resetFilters"),N=n(H=>{l.value=l.value.filter(B=>B!==H)},"removeModelFilter"),P=n(H=>{s.value=s.value.filter(B=>B!==H)},"removeUseCaseFilter"),D=n(H=>{i.value=i.value.filter(B=>B!==H)},"removeRunsOnFilter"),W=w(()=>S.value.length),F=w(()=>m.value.length),z=Cn(()=>{},500),U=n(async()=>{const H=await Ie.getFuseOptions();H&&(u.value=H)},"loadFuseOptions");return le([a,l,s,i,r],()=>{(a.value.trim()!==""||l.value.length>0||s.value.length>0||i.value.length>0||r.value!=="default")&&z()},{deep:!0}),At(l,H=>{o.set("Comfy.Templates.SelectedModels",H)},{debounce:500,deep:!0}),At(s,H=>{o.set("Comfy.Templates.SelectedUseCases",H)},{debounce:500,deep:!0}),At(i,H=>{o.set("Comfy.Templates.SelectedRunsOn",H)},{debounce:500,deep:!0}),At(r,H=>{o.set("Comfy.Templates.SortBy",H)},{debounce:500}),{searchQuery:a,selectedModels:l,selectedUseCases:s,selectedRunsOn:i,sortBy:r,filteredTemplates:S,availableModels:v,availableUseCases:g,availableRunsOn:y,filteredCount:W,totalCount:F,resetFilters:x,removeModelFilter:N,removeUseCaseFilter:P,removeRunsOnFilter:D,loadFuseOptions:U}}n(yw,"useTemplateFiltering");function ii(){const{t:e}=de(),o=ql(),t=gt(),a=L(null),l=L(null),s=w(()=>o.isLoaded),i=w(()=>o.groupedTemplates),r=n(async()=>(o.isLoaded||await o.loadWorkflowTemplates(),o.isLoaded),"loadTemplates"),u=n(()=>{if(i.value.length>0){const C=i.value[0].modules[0];m(C)}},"selectFirstTemplateCategory"),m=n(C=>(a.value=C,C!==null),"selectTemplateCategory"),f=n((C,h,b="1")=>{const T=h==="default"?Ie.fileURL(`/templates/${C.name}`):Ie.apiURL(`/workflow_templates/${h}/${C.name}`),$=h==="default"&&b?`-${b}`:"";return`${T}${$}.${C.mediaSubtype}`},"getTemplateThumbnailUrl"),v=n((C,h)=>{const b=C.title??C.name??`${h} Template`;return h==="default"?C.localizedTitle??b:b},"getTemplateTitle"),g=n(C=>(C.localizedDescription||C.description)?.replace(/[-_]/g," ").trim()??"","getTemplateDescription"),y=n(async(C,h)=>{if(!s.value)return!1;l.value=C;let b;try{if(h==="all"){const S=i.value.find(x=>x.label===e("templateWorkflows.category.ComfyUI Examples","ComfyUI Examples"))?.modules.find(x=>x.moduleName==="all")?.templates.find(x=>x.name===C);if(!S||!S.sourceModule)return!1;h=S.sourceModule}b=await k(C,h);const T=h==="default"?e(`templateWorkflows.template.${C}`,C):C;return t.closeDialog(),await J.loadGraphData(b,!0,!0,T,{openSource:"template"}),!0}catch(T){return console.error("Error loading workflow template:",T),!1}finally{l.value=null}},"loadWorkflowTemplate"),k=n(async(C,h)=>h==="default"?fetch(Ie.fileURL(`/templates/${C}.json`)).then(b=>b.json()):fetch(Ie.apiURL(`/workflow_templates/${h}/${C}.json`)).then(b=>b.json()),"fetchTemplateJson");return{selectedTemplate:a,loadingTemplateId:l,isTemplatesLoaded:s,allTemplateGroups:i,loadTemplates:r,selectFirstTemplateCategory:u,selectTemplateCategory:m,getTemplateThumbnailUrl:f,getTemplateTitle:v,getTemplateDescription:g,loadWorkflowTemplate:y}}n(ii,"useTemplateWorkflows");function ri(e={}){const{minWidth:o="15rem",maxWidth:t="1fr",padding:a="0",gap:l="1rem",columns:s}=e;return s!==void 0&&s<1&&console.warn("createGridStyle: columns must be >= 1, defaulting to 1"),{display:"grid",gridTemplateColumns:s?`repeat(${Math.max(1,s??1)}, 1fr)`:`repeat(auto-fill, minmax(${o}, ${t}))`,padding:a,gap:l}}n(ri,"createGridStyle");const bw={class:"text-neutral text-base"},ww={class:"flex gap-2"},kw={class:"relative flex flex-wrap justify-between gap-2 px-6 pb-4"},Cw={class:"flex flex-wrap gap-2"},xw={key:0,class:"text-neutral px-6 pt-4 pb-2 text-2xl font-semibold"},Sw={key:0,class:"flex h-64 flex-col items-center justify-center text-neutral-500"},_w={class:"mb-2 text-lg"},Tw={class:"text-sm"},$w={key:1},Nw={key:0,class:"inline-block h-8 w-48 animate-pulse rounded bg-dialog-surface"},Iw={class:"relative h-full w-full overflow-hidden rounded-lg"},Pw={class:"flex flex-col gap-2 pt-3"},Mw=["title"],Dw={class:"flex justify-between gap-2"},Aw={class:"flex-1"},Lw=["title"],Ew={key:0,class:"flex flex-col-reverse justify-center"},Rw={key:0,class:"text-sm text-muted"},Vw={key:3,class:"mt-6 px-6 text-sm text-muted"},Ow=j({__name:"WorkflowTemplateSelectorDialog",props:{onClose:{type:Function}},setup(e){const{t:o}=de(),t=L(0),a=L(!1);Re(()=>{t.value=Date.now()});const l=Ds(),s=w(()=>[jl.Local]),i=n(()=>{e.onClose()},"onClose");Bo(Pn,i);const r=ql(),{loadTemplates:u,loadWorkflowTemplate:m,getTemplateThumbnailUrl:f,getTemplateTitle:v,getTemplateDescription:g}=ii(),y=n(oe=>oe.sourceModule||"default","getEffectiveSourceModule"),k=n(oe=>{const ae=y(oe);return f(oe,ae,ae==="default"?"1":"")},"getBaseThumbnailSrc"),C=n(oe=>{const ae=y(oe);return f(oe,ae,ae==="default"?"2":"")},"getOverlayThumbnailSrc"),h=n(oe=>{oe.tutorialUrl&&window.open(oe.tutorialUrl,"_blank")},"openTutorial"),b=w(()=>me.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),T=w(()=>ri()),$=w(()=>r.enhancedTemplates),I=L("all"),S=w(()=>I.value?r.filterTemplatesByCategory(I.value):$.value),{searchQuery:x,selectedModels:N,selectedUseCases:P,selectedRunsOn:D,sortBy:W,filteredTemplates:F,availableModels:z,availableUseCases:U,availableRunsOn:H,filteredCount:B,totalCount:G,resetFilters:Q,loadFuseOptions:K}=yw(S),X=n(oe=>{const ae=I.value==="popular",yt=W.value==="popular";oe==="nav"?ae&&!yt?W.value="popular":!ae&&yt&&(W.value="default"):oe==="sort"&&ae&&!yt&&(I.value="all")},"coordinateNavAndSort");le(I,()=>X("nav")),le(W,()=>X("sort"));const ne=w({get(){return N.value.map(oe=>({name:oe,value:oe}))},set(oe){N.value=oe.map(ae=>ae.value)}}),Z=w({get(){return P.value.map(oe=>({name:oe,value:oe}))},set(oe){P.value=oe.map(ae=>ae.value)}}),re=w({get(){return D.value.map(oe=>({name:oe,value:oe}))},set(oe){D.value=oe.map(ae=>ae.value)}}),ue=L(null),Pe=L(null),Ue=L([]),Ye=L(0),Oe=L(""),$e=w(()=>z.value.map(oe=>({name:oe,value:oe}))),Fe=w(()=>U.value.map(oe=>({name:oe,value:oe}))),Ze=w(()=>H.value.map(oe=>({name:oe,value:oe}))),_t=w(()=>ne.value.length===0?o("templateWorkflows.modelFilter","Model Filter"):ne.value.length===1?ne.value[0].name:o("templateWorkflows.modelsSelected",{count:ne.value.length})),Xt=w(()=>Z.value.length===0?o("templateWorkflows.useCaseFilter","Use Case"):Z.value.length===1?Z.value[0].name:o("templateWorkflows.useCasesSelected",{count:Z.value.length})),_o=w(()=>re.value.length===0?o("templateWorkflows.runsOnFilter","Runs On"):re.value.length===1?re.value[0].name:o("templateWorkflows.runsOnSelected",{count:re.value.length})),ct=w(()=>[{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"}]),Zt=L(null),eo=w(()=>!x.value.trim()),{paginatedItems:zt,isLoading:vt,hasMoreItems:ht,loadNextPage:To,reset:to}=gw(F,{itemsPerPage:24}),$o=w(()=>eo.value?zt.value:F.value);id(Zt,()=>{eo.value&&ht.value&&!vt.value&&To()}),le([x,I,W,N,P,D],()=>{to(),ue.value=null,Ye.value++});const fe=n(async oe=>{ue.value=oe.name;try{await m(oe.name,y(oe)),a.value=!0,i()}finally{ue.value=null}},"onLoadWorkflow"),Se=w(()=>{const oe=b.value.find(ae=>"id"in ae?ae.id===I.value:ae.items?.some(yt=>yt.id===I.value));return oe?"id"in oe?oe.label:oe.items?.find(ae=>ae.id===I.value)?.label||o("templateWorkflows.allTemplates","All Templates"):o("templateWorkflows.allTemplates","All Templates")}),{isLoading:me}=Di(async()=>(await Promise.all([u(),r.loadWorkflowTemplates(),K()]),!0),!1,{immediate:!0}),_e=n(oe=>(oe.includeOnDistributions?.length??0)>0?s.value.some(ae=>oe.includeOnDistributions?.includes(ae)):!0,"isTemplateVisibleOnDistribution");return nt(()=>{Ue.value=[]}),(oe,ae)=>{const yt=Ne("tooltip");return c(),O(zs,{"content-title":oe.$t("templateWorkflows.title","Workflow Templates"),class:"workflow-template-selector-dialog"},{leftPanel:M(()=>[E(Bs,{modelValue:I.value,"onUpdate:modelValue":ae[0]||(ae[0]=ce=>I.value=ce),"nav-items":b.value},{"header-icon":M(()=>ae[8]||(ae[8]=[p("i",{class:"icon-[comfy--template]"},null,-1)])),"header-title":M(()=>[p("span",bw,V(oe.$t("sideToolbar.templates","Templates")),1)]),_:1},8,["modelValue","nav-items"])]),header:M(()=>[E(_n,{modelValue:d(x),"onUpdate:modelValue":ae[1]||(ae[1]=ce=>je(x)?x.value=ce:null),size:"lg",class:"max-w-[384px]"},null,8,["modelValue"])]),"header-right-area":M(()=>[p("div",ww,[d(B)!==d(G)?(c(),O(Y,{key:0,variant:"secondary",size:"lg",onClick:d(Q)},{default:M(()=>[ae[9]||(ae[9]=p("i",{class:"icon-[lucide--filter-x]"},null,-1)),p("span",null,V(oe.$t("templateWorkflows.resetFilters","Clear Filters")),1)]),_:1},8,["onClick"])):A("",!0)])]),contentFilter:M(()=>[p("div",kw,[p("div",Cw,[E(jt,{modelValue:ne.value,"onUpdate:modelValue":ae[2]||(ae[2]=ce=>ne.value=ce),"search-query":Oe.value,"onUpdate:searchQuery":ae[3]||(ae[3]=ce=>Oe.value=ce),class:"w-[250px]",label:_t.value,options:$e.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:M(()=>ae[10]||(ae[10]=[p("i",{class:"icon-[lucide--cpu]"},null,-1)])),_:1},8,["modelValue","search-query","label","options"]),E(jt,{modelValue:Z.value,"onUpdate:modelValue":ae[4]||(ae[4]=ce=>Z.value=ce),label:Xt.value,options:Fe.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:M(()=>ae[11]||(ae[11]=[p("i",{class:"icon-[lucide--target]"},null,-1)])),_:1},8,["modelValue","label","options"]),E(jt,{modelValue:re.value,"onUpdate:modelValue":ae[5]||(ae[5]=ce=>re.value=ce),label:_o.value,options:Ze.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:M(()=>ae[12]||(ae[12]=[p("i",{class:"icon-[lucide--server]"},null,-1)])),_:1},8,["modelValue","label","options"])]),p("div",null,[E(yn,{modelValue:d(W),"onUpdate:modelValue":ae[6]||(ae[6]=ce=>je(W)?W.value=ce:null),label:oe.$t("templateWorkflows.sorting","Sort by"),options:ct.value,class:"w-62.5"},{icon:M(()=>ae[13]||(ae[13]=[p("i",{class:"icon-[lucide--arrow-up-down] text-muted-foreground"},null,-1)])),_:1},8,["modelValue","label","options"])])]),d(me)?A("",!0):(c(),_("div",xw,[p("span",null,V(Se.value),1)]))]),content:M(()=>[!d(me)&&d(F).length===0?(c(),_("div",Sw,[ae[14]||(ae[14]=p("i",{class:"mb-4 icon-[lucide--search] h-12 w-12 opacity-50"},null,-1)),p("p",_w,V(oe.$t("templateWorkflows.noResults","No templates found")),1),p("p",Tw,V(oe.$t("templateWorkflows.noResultsHint","Try adjusting your search or filters")),1)])):(c(),_("div",$w,[d(me)?(c(),_("span",Nw)):A("",!0),(c(),_("div",{key:Ye.value,style:be(T.value),"data-testid":"template-workflows-content"},[(c(!0),_(ee,null,we(d(me)?12:0,ce=>(c(),O(un,{key:`initial-skeleton-${ce}`,size:"compact",variant:"ghost",rounded:"lg",class:"hover:bg-base-background"},{top:M(()=>[E(dn,{ratio:"landscape"},{default:M(()=>ae[15]||(ae[15]=[p("div",{class:"h-full w-full animate-pulse bg-dialog-surface"},null,-1)])),_:1})]),bottom:M(()=>[E(rn,null,{default:M(()=>ae[16]||(ae[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)),(c(!0),_(ee,null,we(d(me)?[]:$o.value,ce=>pe((c(),O(un,{key:ce.name,ref_for:!0,ref_key:"cardRefs",ref:Ue,size:"compact",variant:"ghost",rounded:"lg","data-testid":`template-workflow-${ce.name}`,class:"hover:bg-base-background",onMouseenter:n(Pt=>Pe.value=ce.name,"onMouseenter"),onMouseleave:ae[7]||(ae[7]=Pt=>Pe.value=null),onClick:n(Pt=>fe(ce),"onClick")},{top:M(()=>[E(dn,{ratio:"square"},{default:M(()=>[p("div",Iw,[ce.mediaType==="audio"?(c(),O(iw,{key:0,src:k(ce)},null,8,["src"])):ce.thumbnailVariant==="compareSlider"?(c(),O(uw,{key:1,"base-image-src":k(ce),"overlay-image-src":C(ce),alt:d(v)(ce,y(ce)),"is-hovered":Pe.value===ce.name,"is-video":ce.mediaType==="video"||ce.mediaSubtype==="webp"},null,8,["base-image-src","overlay-image-src","alt","is-hovered","is-video"])):ce.thumbnailVariant==="hoverDissolve"?(c(),O(mw,{key:2,"base-image-src":k(ce),"overlay-image-src":C(ce),alt:d(v)(ce,y(ce)),"is-hovered":Pe.value===ce.name,"is-video":ce.mediaType==="video"||ce.mediaSubtype==="webp"},null,8,["base-image-src","overlay-image-src","alt","is-hovered","is-video"])):(c(),O(dw,{key:3,src:k(ce),alt:d(v)(ce,y(ce)),"is-hovered":Pe.value===ce.name,"is-video":ce.mediaType==="video"||ce.mediaSubtype==="webp","hover-zoom":ce.thumbnailVariant==="zoomHover"?16:5},null,8,["src","alt","is-hovered","is-video","hover-zoom"])),ue.value===ce.name?(c(),O(d(or),{key:4,class:"absolute inset-0 z-10 m-auto h-12 w-12"})):A("",!0)])]),"bottom-right":M(()=>[ce.tags&&ce.tags.length>0?(c(!0),_(ee,{key:0},we(ce.tags,Pt=>(c(),O(cn,{key:Pt,label:Pt},null,8,["label"]))),128)):A("",!0)]),_:2},1024)]),bottom:M(()=>[E(rn,null,{default:M(()=>[p("div",Pw,[p("h3",{class:"m-0 line-clamp-1 text-sm",title:d(v)(ce,y(ce))},V(d(v)(ce,y(ce))),9,Mw),p("div",Dw,[p("div",Aw,[p("p",{class:"m-0 line-clamp-2 text-sm text-muted",title:d(g)(ce)},V(d(g)(ce)),9,Lw)]),ce.tutorialUrl?(c(),_("div",Ew,[Pe.value===ce.name?pe((c(),O(Y,tt({key:0,ref_for:!0},oe.$attrs,{variant:"inverted",size:"icon",onClick:ke(Pt=>h(ce),["stop"])}),{default:M(()=>ae[17]||(ae[17]=[p("i",{class:"icon-[lucide--info] size-4"},null,-1)])),_:2},1040,["onClick"])),[[yt,oe.$t("g.seeTutorial"),void 0,{bottom:!0}]]):A("",!0)])):A("",!0)])])]),_:2},1024)]),_:2},1032,["data-testid","onMouseenter","onClick"])),[[et,_e(ce)]])),128)),(c(!0),_(ee,null,we(d(vt)?6:0,ce=>(c(),O(un,{key:`skeleton-${ce}`,size:"compact",variant:"ghost",rounded:"lg",class:"hover:bg-base-background"},{top:M(()=>[E(dn,{ratio:"square"},{default:M(()=>ae[18]||(ae[18]=[p("div",{class:"h-full w-full animate-pulse bg-dialog-surface"},null,-1)])),_:1})]),bottom:M(()=>[E(rn,null,{default:M(()=>ae[19]||(ae[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))])),!d(me)&&d(ht)?(c(),_("div",{key:2,ref_key:"loadTrigger",ref:Zt,class:"mt-4 flex h-4 w-full items-center justify-center"},[d(vt)?(c(),_("div",Rw,V(oe.$t("templateWorkflows.loadingMore","Loading more...")),1)):A("",!0)],512)):A("",!0),d(me)?A("",!0):(c(),_("div",Vw,V(oe.$t("templateWorkflows.resultsCount",{count:d(B),total:d(G)})),1))]),_:1},8,["content-title"])}}}),Ba="global-workflow-template-selector",Ys=n(()=>{const e=rt(),o=gt();function t(){o.closeDialog({key:Ba})}n(t,"hide");function a(l="command"){e.showLayoutDialog({key:Ba,component:Ow,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(a,"show"),{show:a,hide:t}},"useWorkflowTemplateSelectorDialog"),fs=n((e,o,t=30)=>{const a=e instanceof HTMLElement?e:e.target;let l=0;const s=setInterval(()=>{o(l++)},t),i=n(()=>{clearInterval(s),r(),u()},"dispose"),r=Ee(document,"mouseup",i),u=Ee(a,"mouseup",i);return{dispose:i}},"whileMouseDown"),Ww={class:"flex h-8 w-8 items-center justify-center rounded-lg bg-black"},zw=["href","onMousedown","onClick"],Bw={class:"p-menubar-item-label text-nowrap"},Fw={key:3,class:"keybinding-tag ml-auto rounded border border-surface p-1 text-xs text-nowrap text-muted"},Uw={key:4,class:"pi pi-angle-right ml-auto"},Gw={class:"p-menubar-item-label text-nowrap"},Hw=j({__name:"ComfyMenuButton",setup(e){const{t:o}=de(),t=Te(),a=Rl(),l=St(),s=Vl(),i=gt(),r=wt(),u=ie(),m=L(null),f=w({get:n(()=>u.get("Comfy.VueNodes.Enabled")??!1,"get"),set:n(async D=>{await u.set("Comfy.VueNodes.Enabled",D)},"set")});function v(D){m.value?.toggle(D)}n(v,"onLogoMenuClick");const g=n(D=>{const W=typeof D.label=="function"?D.label():D.label,F=W?o(`menuLabels.${He(W)}`,W):void 0;return{...D,label:F,items:D.items?.map(g)}},"translateMenuItem"),y=n(D=>{i.showDialog({key:"global-settings",headerComponent:au,component:su,props:{defaultPanel:D}})},"showSettings"),k=n(async()=>{await r.openManager({initialTab:ro.All,showToastOnLegacyError:!1})},"showManageExtensions"),C=w(()=>l.palettes.map(D=>({key:`theme-${D.id}`,label:D.name,parentPath:"theme",comfyCommand:{active:n(()=>l.activePaletteId===D.id,"active")},command:n(async()=>{await s.loadColorPalette(D.id)},"command")}))),h=w(()=>[{separator:!0},{key:"theme",label:o("menu.theme"),items:C.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(()=>Ys().show("menu"),"command")},{key:"settings",label:o("g.settings"),icon:"mdi mdi-cog-outline",command:n(()=>{y()},"command")},{key:"manage-extensions",label:o("menu.manageExtensions"),icon:"mdi mdi-puzzle-outline",command:k}]),b=w(()=>{const D=a.menuItems.map(g);let W=D.findIndex(z=>z.key==="Help"),F;if(W!==-1){D[W].icon="mdi mdi-help-circle-outline";const z=W!==D.length-1;F=D.splice(W,1,...z?[{separator:!0}]:[])[0]}return W=D.length,D.splice(W,0,...h.value,...F?[{separator:!0},F]:[]),D}),T=n(()=>{We(()=>{m.value&&(m.value.dirty=!0)})},"onMenuShow"),$=n(D=>D.comfyCommand?.id==="Comfy.Canvas.ZoomIn"||D.comfyCommand?.id==="Comfy.Canvas.ZoomOut","isZoomCommand"),I=n((D,W)=>{D.comfyCommand&&fs(W,async()=>{await t.execute(D.comfyCommand.id)},50)},"handleZoomMouseDown"),S=n((D,W)=>{if($(D)||D.comfyCommand?.active)return W.preventDefault(),W.stopPropagation(),D.comfyCommand?.active&&D.command?.({item:D,originalEvent:W}),!1},"handleItemClick"),x=n(D=>D.parentPath&&(D.parentPath==="theme"||a.menuItemHasActiveStateChildren[D.parentPath]),"hasActiveStateSiblings"),N=n(()=>!1,"handleNodes2ToggleClick"),P=n(async D=>{await u.set("Comfy.VueNodes.Enabled",D)},"onNodes2ToggleChange");return(D,W)=>{const F=Ne("tooltip");return c(),_(ee,null,[pe((c(),_("div",{class:q(["comfy-menu-button-wrapper flex shrink-0 cursor-pointer flex-col items-center justify-center p-2 transition-colors",{"comfy-menu-button-active":m.value?.visible}]),onClick:W[0]||(W[0]=z=>v(z))},[p("div",Ww,[E(Zb,{alt:"ComfyUI Logo",class:"comfyui-logo h-[18px] w-[18px] text-white",mode:"fill"})])],2)),[[F,{value:d(o)("sideToolbar.labels.menu"),showDelay:300,hideDelay:300}]]),E(d(nr),{ref_key:"menuRef",ref:m,model:b.value,popup:!0,class:"comfy-command-menu",onShow:T},{item:M(({item:z,props:U})=>[z.key!=="nodes-2.0-toggle"?(c(),_("a",tt({key:0,class:"p-menubar-item-link px-4 py-2"},U.action,{href:z.url,target:"_blank",class:typeof z.class=="function"?z.class():z.class,onMousedown:n(H=>$(z)?I(z,H):void 0,"onMousedown"),onClick:n(H=>S(z,H),"onClick")}),[x(z)?(c(),_("i",{key:0,class:q(["p-menubar-item-icon pi pi-check text-sm",{invisible:!z.comfyCommand?.active?.()}])},null,2)):z.icon&&z.comfyCommand?.id!=="Comfy.NewBlankWorkflow"?(c(),_("span",{key:1,class:q(["p-menubar-item-icon text-sm",z.icon])},null,2)):A("",!0),p("span",Bw,V(z.label),1),z.comfyCommand?.id==="Comfy.NewBlankWorkflow"?(c(),_("i",{key:2,class:q(["ml-auto",z.icon])},null,2)):A("",!0),z?.comfyCommand?.keybinding?(c(),_("span",Fw,V(z.comfyCommand.keybinding.combo.toString()),1)):A("",!0),z.items?(c(),_("i",Uw)):A("",!0)],16,zw)):(c(),_("div",{key:1,class:"flex items-center justify-between px-4 py-2",onClick:ke(N,["stop"])},[p("span",Gw,V(z.label),1),E(d(io),{severity:"info",class:"ml-2 text-xs"},{default:M(()=>[Ce(V(D.$t("g.beta")),1)]),_:1}),E(d(wl),{modelValue:f.value,"onUpdate:modelValue":[W[1]||(W[1]=H=>f.value=H),P],class:"ml-4","aria-label":z.label,pt:{root:{style:{width:"38px",height:"20px"}},handle:{style:{width:"16px",height:"16px"}}},onClick:W[2]||(W[2]=ke(()=>{},["stop"]))},null,8,["modelValue","aria-label"])]))]),_:1},8,["model"])],64)}}}),jw=Ve(Hw,[["__scopeId","data-v-7f8c3b49"]]),qw={class:"p-1 bg-secondary-background rounded-lg w-10"},ui=j({__name:"ModeToggle",setup(e){const o=he();return(t,a)=>(c(),_("div",qw,[E(Y,{size:"icon",title:d(se)("linearMode.linearMode"),variant:d(o).linearMode?"inverted":"secondary",onClick:a[0]||(a[0]=l=>d(Te)().execute("Comfy.ToggleLinear"))},{default:M(()=>a[2]||(a[2]=[p("i",{class:"icon-[lucide--panels-top-left]"},null,-1)])),_:1},8,["title","variant"]),E(Y,{size:"icon",title:d(se)("linearMode.graphMode"),variant:d(o).linearMode?"secondary":"inverted",onClick:a[1]||(a[1]=l=>d(Te)().execute("Comfy.ToggleLinear"))},{default:M(()=>a[3]||(a[3]=[p("i",{class:"icon-[comfy--workflow]"},null,-1)])),_:1},8,["title","variant"])]))}}),Kw={class:"side-bar-button-content"},Qw={key:0,class:"side-bar-button-label"},Yw=j({__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}=de(),a=o,l=w(()=>typeof e.iconBadge=="function"?e.iconBadge()??"":e.iconBadge),s=w(()=>!!l.value),i=w(()=>t(e.tooltip)+e.tooltipSuffix);return(r,u)=>{const m=Ne("tooltip");return pe((c(),O(Y,{class:q(d(te)("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]=f=>a("click",f))},{default:M(()=>[p("div",Kw,[ge(r.$slots,"icon",{},()=>[s.value?(c(),O(d(sr),{key:0,value:l.value},{default:M(()=>[typeof r.icon=="string"?(c(),_("i",{key:0,class:q(r.icon+" side-bar-button-icon")},null,2)):(c(),O(po(r.icon),{key:1,class:"side-bar-button-icon"}))]),_:1},8,["value"])):typeof r.icon=="string"?(c(),_("i",{key:1,class:q(r.icon+" side-bar-button-icon")},null,2)):typeof r.icon=="object"?(c(),O(po(r.icon),{key:2,class:"side-bar-button-icon"})):A("",!0)],!0),r.label&&!r.isSmall?(c(),_("span",Qw,V(d(t)(r.label)),1)):A("",!0)])]),_:3},8,["class","aria-label"])),[[m,{value:i.value,showDelay:300,hideDelay:300}]])}}}),Wt=Ve(Yw,[["__scopeId","data-v-bbb98ec9"]]),Jw=j({__name:"SidebarBottomPanelToggleButton",setup(e){const o=yo(),t=n(()=>{o.toggleBottomPanel()},"toggleConsole");return(a,l)=>(c(),O(Wt,{icon:"icon-[ph--terminal-bold]",label:a.$t("sideToolbar.labels.console"),tooltip:a.$t("menu.toggleBottomPanel"),selected:d(o).activePanel=="terminal",onClick:t},null,8,["label","tooltip","selected"]))}}),Xw=j({__name:"SidebarSettingsButton",setup(e){const{t:o}=de(),{getCommand:t,formatKeySequence:a}=Te(),l=t("Comfy.ShowSettingsDialog"),s=w(()=>`${o("g.settings")} (${a(l)})`),i=n(()=>{l.function()},"showSettingsDialog");return(r,u)=>(c(),O(Wt,{icon:"icon-[lucide--settings]",label:r.$t("g.settings"),tooltip:s.value,onClick:i},null,8,["label","tooltip"]))}}),Zw=j({__name:"SidebarShortcutsToggleButton",setup(e){const{t:o}=de(),t=yo(),a=Te(),l=a.getCommand("Workspace.ToggleBottomPanel.Shortcuts"),{formatKeySequence:s}=a,i=w(()=>t.activePanel==="shortcuts"),r=w(()=>`${o("shortcuts.keyboardShortcuts")} (${s(l)})`),u=n(()=>{t.togglePanel("shortcuts")},"toggleShortcutsPanel");return(m,f)=>(c(),O(Wt,{icon:"icon-[lucide--keyboard]",label:m.$t("shortcuts.shortcuts"),tooltip:r.value,selected:i.value,onClick:u},null,8,["label","tooltip","selected"]))}}),e0=j({__name:"SidebarHelpCenterIcon",props:{isSmall:{type:Boolean}},setup(e){const{shouldShowRedDot:o,toggleHelpCenter:t}=Qs();return(a,l)=>(c(),O(Wt,{icon:"pi pi-question-circle",class:"comfy-help-center-btn",label:a.$t("menu.help"),tooltip:a.$t("sideToolbar.helpCenter"),"icon-badge":d(o)?"•":"","is-small":a.isSmall,onClick:d(t)},null,8,["label","tooltip","icon-badge","is-small","onClick"]))}}),t0=Ve(e0,[["__scopeId","data-v-4a7593e2"]]),o0=j({__name:"SidebarLogoutIcon",setup(e){const{t:o}=de(),t=Ol(),a=w(()=>`${o("sideToolbar.logout")} (${t.currentUser?.username})`),l=n(async()=>{await t.logout(),window.location.reload()},"logout");return(s,i)=>(c(),O(Wt,{icon:"pi pi-sign-out",tooltip:a.value,label:s.$t("sideToolbar.logout"),onClick:l},null,8,["tooltip","label"]))}}),di=j({__name:"SidebarTemplatesButton",setup(e){const o=ie(),t=w(()=>o.get("Comfy.Sidebar.Size")==="small"),a=n(()=>{Ys().show("sidebar")},"openTemplates");return(l,s)=>(c(),O(Wt,{icon:"icon-[comfy--template]",tooltip:l.$t("sideToolbar.templates"),label:l.$t("sideToolbar.labels.templates"),"is-small":t.value,class:"templates-tab-button",onClick:a},null,8,["tooltip","label","is-small"]))}}),n0=20,s0=50,a0=j({__name:"SideToolbar",setup(e){const o=lt(),t=ie(),a=Ol(),l=Te(),s=he(),i=L(),r=L(),u=L(),m=L(Hl().flags.linearToggleEnabled);st(()=>s.linearMode,()=>m.value=!0);const f=w(()=>t.get("Comfy.Sidebar.Size")==="small"),v=w(()=>t.get("Comfy.Sidebar.Location")),g=w(()=>t.get("Comfy.Sidebar.Style")),y=w(()=>t.get("Comfy.UI.TabBarLayout")==="Integrated"),k=w(()=>h.value||I.value||g.value==="connected"),C=w(()=>o.getSidebarTabs()),h=w(()=>o.sidebarTab.activeSidebarTab),b=n(async N=>{N.id,N.id,N.id,N.id,await l.commands.find(P=>P.id===`Workspace.ToggleSidebarTab.${N.id}`)?.function?.()},"onTabClick"),T=lu(),$=n(N=>{const P=T.getKeybindingByCommandId(`Workspace.ToggleSidebarTab.${N.id}`);return P?` (${P.combo.toString()})`:""},"getTabTooltipSuffix"),I=L(!1),S=w(()=>te("sidebar-item-group flex flex-col items-center overflow-hidden flex-shrink-0",!k.value&&"rounded-lg shadow-interface pointer-events-auto")),x=Cn(()=>{if(!i.value||!r.value||!u.value)return;const N=i.value.clientHeight,P=r.value.scrollHeight,D=u.value.scrollHeight,W=P+D;I.value?I.value=N<W+s0:I.value=N<W+n0},16);return Re(()=>{if(!i.value)return;const N=sl(i.value,x);x(),nt(()=>{N.stop()}),le([f,v],async()=>{s.canvas&&(v.value==="left"?(await We(),s.canvas.fpsInfoLocation=[i.value?.getBoundingClientRect()?.right,null]):s.canvas.fpsInfoLocation=null,s.canvas.setDirty(!1,!0))},{immediate:!0})}),(N,P)=>(c(),_("nav",{ref_key:"sideToolbarRef",ref:i,class:q(["side-tool-bar-container flex h-full flex-col items-center bg-transparent [.floating-sidebar]:-mr-2",{"small-sidebar":f.value,"connected-sidebar pointer-events-auto":k.value,"floating-sidebar":!k.value,"overflowing-sidebar":I.value,"border-r border-[var(--interface-stroke)] shadow-interface":k.value}])},[p("div",{class:q(I.value?"side-tool-bar-container overflow-y-auto":"flex flex-col h-full")},[p("div",{ref_key:"topToolbarRef",ref:r,class:q(S.value)},[E(jw),(c(!0),_(ee,null,we(C.value,D=>(c(),O(Wt,{key:D.id,icon:D.icon,"icon-badge":D.iconBadge,tooltip:D.tooltip,"tooltip-suffix":$(D),label:D.label||D.title,"is-small":f.value,selected:D.id===h.value?.id,class:q(D.id+"-tab-button"),onClick:n(W=>b(D),"onClick")},null,8,["icon","icon-badge","tooltip","tooltip-suffix","label","is-small","selected","class","onClick"]))),128)),E(di)],2),p("div",{ref_key:"bottomToolbarRef",ref:u,class:q(["mt-auto",S.value])},[d(a).isMultiUserServer?(c(),O(o0,{key:0,"is-small":f.value},null,8,["is-small"])):A("",!0),y.value?A("",!0):(c(),O(t0,{key:1,"is-small":f.value},null,8,["is-small"])),E(Jw,{"is-small":f.value},null,8,["is-small"]),E(Zw,{"is-small":f.value},null,8,["is-small"]),E(Xw,{"is-small":f.value},null,8,["is-small"]),m.value?(c(),O(ui,{key:2})):A("",!0)],2)],2),E(Jb,{"is-small":f.value},null,8,["is-small"])],2))}}),l0=Ve(a0,[["__scopeId","data-v-16894ff6"]]),i0=Vt("topbarBadge",()=>{const e=Ms();return{badges:w(()=>e.extensions.flatMap(t=>t.topbarBadges??[]))}}),r0={class:"flex h-full shrink-0 items-center"},ci=j({__name:"TopbarBadges",props:{reverseOrder:{type:Boolean,default:!1},noPadding:{type:Boolean,default:!1}},setup(e){const o=mo(vo),t=o.greaterOrEqual("xl"),a=o.greaterOrEqual("lg"),l=w(()=>t.value?"full":a.value?"compact":"icon-only"),s=i0();return(i,r)=>(c(),_("div",r0,[(c(!0),_(ee,null,we(d(s).badges,u=>(c(),O(jc,{key:u.text,badge:u,"display-mode":l.value,"reverse-order":i.reverseOrder,"no-padding":i.noPadding},null,8,["badge","display-mode","reverse-order","no-padding"]))),128))]))}}),u0={class:"relative inline-flex items-center justify-center size-[1em]"},d0=j({__name:"OverlayIcon",props:{mainIcon:{},subIcon:{},positionX:{default:"right"},positionY:{default:"bottom"},offsetX:{default:0},offsetY:{default:0},subIconScale:{default:.6}},setup(e){const o=["-1px -1px 0 rgba(0, 0, 0, 0.7)","1px -1px 0 rgba(0, 0, 0, 0.7)","-1px 1px 0 rgba(0, 0, 0, 0.7)","1px 1px 0 rgba(0, 0, 0, 0.7)","-1px 0 0 rgba(0, 0, 0, 0.7)","1px 0 0 rgba(0, 0, 0, 0.7)","0 -1px 0 rgba(0, 0, 0, 0.7)","0 1px 0 rgba(0, 0, 0, 0.7)"].join(", "),t=w(()=>({fontSize:`${e.subIconScale}em`,textShadow:o,...e.offsetX!==0&&{[e.positionX==="left"?"left":"right"]:`${e.offsetX}px`},...e.offsetY!==0&&{[e.positionY==="top"?"top":"bottom"]:`${e.offsetY}px`}}));return(a,l)=>(c(),_("span",u0,[p("i",{class:q([a.mainIcon,"text-[1em]"])},null,2),p("i",{class:q(d(te)(a.subIcon,"absolute leading-none pointer-events-none",a.positionX==="left"?"left-0":"right-0",a.positionY==="top"?"top-0":"bottom-0")),style:be(t.value)},null,6)]))}}),c0={class:"not-md:hidden"},p0={key:0,class:"absolute top-[7px] right-[7px] size-1.5 rounded-full bg-[#ff3b30]"},f0=j({__name:"TopMenuHelpButton",setup(e){const{shouldShowRedDot:o,toggleHelpCenter:t}=Qs("topbar");return(a,l)=>(c(),O(Y,{class:"comfy-help-center-btn relative text-base-foreground",variant:"textonly",onClick:d(t)},{default:M(()=>[p("div",c0,V(a.$t("menu.helpAndFeedback")),1),l[0]||(l[0]=p("i",{class:"icon-[lucide--circle-help] ml-0.5"},null,-1)),d(o)?(c(),_("span",p0)):A("",!0)]),_:1},8,["onClick"]))}}),m0={class:"workflow-preview-content"},g0={key:0,class:"workflow-preview-thumbnail relative"},v0=["src"],h0={class:"workflow-preview-footer"},y0={class:"workflow-preview-name"},b0=250,w0=j({__name:"WorkflowTabPopover",props:{workflowFilename:{},thumbnailUrl:{},isActiveTab:{type:Boolean}},setup(e,{expose:o}){const t=e,{thumbnailUrl:a,isActiveTab:l}=Ai(t),s=L(null),i=L(null);let r=null,u=null;const m=Jn(),f=n(k=>{r&&(clearTimeout(r),r=null),u&&(clearTimeout(u),u=null),u=setTimeout(async()=>{if(s.value&&i.value){s.value.show(k,i.value),await We();const C=document.querySelector(`.workflow-popover-fade[data-popover-id="${m}"]`);if(C){const h=i.value.getBoundingClientRect().left,b=C.getBoundingClientRect().width,T=b/2;let $=h-T,I=0;if($<0)I=$-8,$=8;else if($+b>window.innerWidth){const S=window.innerWidth-b-16;I=$-S,$=S}I+T<0&&(I=-T+24),C.style.left=`${$}px`,C.style.setProperty("--shift",`${I}px`)}}},200)},"showPopover"),v=n(()=>{},"cancelHidePopover"),g=n(()=>{u&&(clearTimeout(u),u=null),r=setTimeout(()=>{s.value&&s.value.hide()},100)},"hidePopover");return o({showPopover:f,hidePopover:g,togglePopover:n(k=>{s.value&&s.value.toggle(k)},"togglePopover")}),(k,C)=>(c(),_(ee,null,[p("div",{ref_key:"positionRef",ref:i,class:"absolute bottom-0 left-1/2 -translate-x-1/2"},null,512),E(d(ot),{ref_key:"popoverRef",ref:s,"append-to":"body",pt:{root:{class:"workflow-popover-fade fit-content","data-popover-id":d(m)}},onMouseenter:v,onMouseleave:g},{default:M(()=>[p("div",m0,[d(a)&&!d(l)?(c(),_("div",g0,[p("img",{src:d(a),class:"block h-[200px] rounded-lg object-cover p-2",style:be({width:`${b0}px`})},null,12,v0)])):A("",!0),p("div",h0,[p("span",y0,V(k.workflowFilename),1)])])]),_:1},8,["pt"])],64))}}),k0=Ve(w0,[["__scopeId","data-v-4c13cb50"]]),C0={key:1,class:"icon-[lucide--panels-top-left] bg-primary-background"},x0={class:"workflow-label inline-block max-w-[150px] truncate text-sm"},S0={class:"relative"},_0={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"},T0=j({__name:"WorkflowTab",props:{workflowOption:{}},setup(e){const o=e,{t}=de(),a=lt(),l=Ae(),s=ie(),i=L(null),r=L(null),u=iu(),m=w(()=>s.get("Comfy.Workflow.AutoSave")),f=w(()=>s.get("Comfy.Workflow.AutoSaveDelay")),v=w(()=>a.shiftDown?!1:o.workflowOption.workflow.isPersisted?o.workflowOption.workflow.isModified?m.value==="off"||m.value==="after delay"&&f.value>3e3:!1:!0),g=w(()=>l.activeWorkflow?.key===o.workflowOption.workflow.key),y=w(()=>u.getThumbnail(o.workflowOption.workflow.key)),k=L(),{menuItems:C}=Us(()=>Te().execute("Comfy.RenameWorkflow")),h=n(N=>{r.value?.showPopover(N)},"handleMouseEnter"),b=n(()=>{r.value?.hidePopover()},"handleMouseLeave"),T=n(N=>{r.value?.togglePopover(N)},"handleClick"),$=n(N=>{k.value?.toggle(N)},"handleMenuClick"),I=n(async N=>{for(const P of N)if(!await it().closeWorkflow(P.workflow,{warnIfUnsaved:!a.shiftDown,hint:t("sideToolbar.workflowTab.dirtyCloseHint")}))break},"closeWorkflows"),S=n(async N=>{await I([N])},"onCloseWorkflow"),x=n(()=>i.value,"tabGetter");return ru(x,{getInitialData:n(()=>({workflowKey:o.workflowOption.workflow.key}),"getInitialData")}),Wl(x,{getData:n(()=>({workflowKey:o.workflowOption.workflow.key}),"getData"),onDrop:n(N=>{const P=l.openWorkflows.findIndex(W=>W.key===N.source.data.workflowKey),D=l.openWorkflows.findIndex(W=>W.key===N.location.current.dropTargets[0]?.data.workflowKey);P!==D&&l.reorderWorkflows(P,D)},"onDrop")}),xt(()=>{r.value?.hidePopover()}),(N,P)=>(c(),_(ee,null,[p("div",tt({ref_key:"workflowTabRef",ref:i,class:"workflow-tab group flex gap-2 p-2"},N.$attrs,{onMouseenter:h,onMouseleave:b,onClick:T}),[g.value?(c(),O(Y,{key:0,class:"context-menu-button -mx-1 w-auto px-1 py-0",variant:"muted-textonly",size:"icon-sm",onClick:ke($,["stop"])},{default:M(()=>P[1]||(P[1]=[p("i",{class:"pi pi-bars"},null,-1)])),_:1})):N.workflowOption.workflow.activeState?.extra?.linearMode?(c(),_("i",C0)):A("",!0),p("span",x0,V(N.workflowOption.workflow.filename),1),p("div",S0,[v.value?(c(),_("span",_0,"•")):A("",!0),E(Y,{class:"close-button invisible w-auto p-0",variant:"muted-textonly",size:"icon-sm","aria-label":d(t)("g.close"),onClick:P[0]||(P[0]=ke(D=>S(N.workflowOption),["stop"]))},{default:M(()=>P[2]||(P[2]=[p("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])],16),E(k0,{ref_key:"popoverRef",ref:r,"workflow-filename":N.workflowOption.workflow.filename,"thumbnail-url":y.value,"is-active-tab":g.value},null,8,["workflow-filename","thumbnail-url","is-active-tab"]),g.value?(c(),O(d(_s),{key:0,ref_key:"menu",ref:k,model:d(C),popup:!0,pt:{root:{style:"background-color: var(--comfy-menu-bg)"},itemLink:{class:"py-2"}}},null,8,["model"])):A("",!0)],64))}}),$0=j({__name:"WorkflowOverflowMenu",props:{workflows:{},activeWorkflow:{}},setup(e){const o=e,t=L(null),a=it(),l=w(()=>o.workflows.map(s=>({label:s.filename,icon:o.activeWorkflow?.key===s.key?"pi pi-check":void 0,command:n(()=>{a.openWorkflow(s)},"command")})));return(s,i)=>{const r=Ne("tooltip");return c(),_("div",null,[pe((c(),O(Y,{class:"rounded-none h-full w-auto aspect-square",variant:"muted-textonly",size:"icon","aria-label":s.$t("g.moreWorkflows"),onClick:i[0]||(i[0]=u=>t.value?.toggle(u))},{default:M(()=>i[1]||(i[1]=[p("i",{class:"pi pi-ellipsis-h"},null,-1)])),_:1},8,["aria-label"])),[[r,{value:s.$t("g.moreWorkflows"),showDelay:300}]]),E(d(_s),{ref_key:"menu",ref:t,model:l.value,popup:!0,class:"max-h-[40vh] overflow-auto"},null,8,["model"])])}}}),N0={key:3,class:"ml-auto flex shrink-0 items-center gap-2 px-2"},I0={key:4,class:"window-actions-spacer app-drag shrink-0"},P0=j({__name:"WorkflowTabs",props:{class:{}},setup(e){const o=e,{t}=de(),a=ie(),l=lt(),s=Ae(),i=it(),r=Te(),{isLoggedIn:u}=wo(),m=w(()=>a.get("Comfy.UI.TabBarLayout")==="Integrated"),f=L(),v=L(),g=L(null),y=L(!1),k=L(!1),C=L(!1),h=Xe(),b=n(K=>({value:K.path,workflow:K}),"workflowToOption"),T=w(()=>s.openWorkflows.map(b)),$=w(()=>s.activeWorkflow?b(s.activeWorkflow):null),I=n(async K=>{K&&$.value?.value!==K.value&&await i.openWorkflow(K.workflow)},"onWorkflowChange"),S=n(async K=>{for(const X of K)if(!await i.closeWorkflow(X.workflow,{warnIfUnsaved:!l.shiftDown}))break},"closeWorkflows"),x=n(async K=>{await S([K])},"onCloseWorkflow"),N=n((K,X)=>{f.value=X,v.value.show(K)},"showContextMenu"),P=w(()=>f.value?.workflow??null),{menuItems:D}=Us(()=>r.execute("Comfy.RenameWorkflow"),{includeDelete:!1,workflow:P}),W=w(()=>{const K=f.value;if(!K)return[];const X=T.value.findIndex(ne=>ne.workflow===K.workflow);return[...D.value,{label:t("tabMenu.closeTab"),icon:"pi pi-times",command:n(()=>x(K),"command")},{label:t("tabMenu.closeTabsToLeft"),overlayIcon:{mainIcon:"pi pi-times",subIcon:"pi pi-arrow-left",positionX:"right",positionY:"bottom",subIconScale:.5},command:n(()=>S(T.value.slice(0,X)),"command"),disabled:X<=0},{label:t("tabMenu.closeTabsToRight"),overlayIcon:{mainIcon:"pi pi-times",subIcon:"pi pi-arrow-right",positionX:"right",positionY:"bottom",subIconScale:.5},command:n(()=>S(T.value.slice(X+1)),"command"),disabled:X===T.value.length-1},{label:t("tabMenu.closeOtherTabs"),overlayIcon:{mainIcon:"pi pi-times",subIcon:"pi pi-arrows-h",positionX:"right",positionY:"bottom",subIconScale:.5},command:n(()=>S([...T.value.slice(X+1),...T.value.slice(0,X)]),"command"),disabled:T.value.length<=1}]}),F=n(K=>{const X=K.currentTarget,ne=K.deltaX||K.deltaY;X.scroll({left:X.scrollLeft+ne})},"handleWheel"),z=w(()=>g.value?.querySelector(".p-scrollpanel-content")??null),U=n(K=>{const X=z.value;X&&X.scrollBy({left:K*20})},"scroll"),H=n(async(K={})=>{if(!$.value)return;K.waitForDom!==!1&&await We();const X=g.value;if(!X)return;const ne=X.querySelector(".p-togglebutton-checked");ne&&ne.scrollIntoView({block:"nearest",inline:"nearest"})},"ensureActiveTabVisible");le(()=>s.activeWorkflow,()=>{H()},{immediate:!0});let B=null,G=null,Q=null;return le(z,(K,X,ne)=>{if(G?.(),Q?.(),B?.dispose(),!K)return;const Z=Cs(K);G=le([()=>Z.arrivedState.left,()=>Z.arrivedState.right],([re,ue])=>{k.value=!re,C.value=!ue},{immediate:!0}),B=Yl(K),Q=le(B.isOverflowing,re=>{y.value=re,re&&We(()=>{Z.measure(),H({waitForDom:!1})})},{immediate:!0}),ne(()=>{G?.(),Q?.(),B?.dispose()})},{immediate:!0}),al(()=>{B?.disposed.value||B?.checkOverflow()}),(K,X)=>{const ne=Ne("tooltip");return c(),_("div",{ref_key:"containerRef",ref:g,class:q(["workflow-tabs-container flex h-full max-w-full flex-auto flex-row overflow-hidden",{"workflow-tabs-container-desktop":d(h)}])},[y.value?(c(),O(Y,{key:0,variant:"muted-textonly",size:"icon",class:"overflow-arrow overflow-arrow-left h-full w-auto aspect-square","aria-label":K.$t("g.scrollLeft"),disabled:!k.value,onMousedown:X[0]||(X[0]=Z=>d(fs)(Z,()=>U(-1)))},{default:M(()=>X[3]||(X[3]=[p("i",{class:"icon-[lucide--chevron-left] size-full"},null,-1)])),_:1},8,["aria-label","disabled"])):A("",!0),E(d(ar),{class:"no-drag overflow-hidden","pt:content":{class:"p-0 w-full flex",onwheel:F},"pt:bar-x":"h-1"},{default:M(()=>[E(d(yl),{class:q(["workflow-tabs bg-transparent",o.class]),"model-value":$.value,options:T.value,"option-label":"label","data-key":"value","onUpdate:modelValue":I},{option:M(({option:Z})=>[E(T0,{"workflow-option":Z,onContextmenu:n(re=>N(re,Z),"onContextmenu"),onMouseup:ke(re=>x(Z),["middle"])},null,8,["workflow-option","onContextmenu","onMouseup"])]),_:1},8,["class","model-value","options"])]),_:1},8,["pt:content"]),y.value?(c(),O(Y,{key:1,variant:"muted-textonly",size:"icon",class:"overflow-arrow overflow-arrow-right h-full w-auto aspect-square","aria-label":K.$t("g.scrollRight"),disabled:!C.value,onMousedown:X[1]||(X[1]=Z=>d(fs)(Z,()=>U(1)))},{default:M(()=>X[4]||(X[4]=[p("i",{class:"icon-[lucide--chevron-right] size-full"},null,-1)])),_:1},8,["aria-label","disabled"])):A("",!0),y.value?(c(),O($0,{key:2,workflows:d(s).openWorkflows,"active-workflow":d(s).activeWorkflow},null,8,["workflows","active-workflow"])):A("",!0),pe((c(),O(Y,{class:"new-blank-workflow-button no-drag shrink-0 rounded-none h-full w-auto aspect-square",variant:"muted-textonly",size:"icon","aria-label":K.$t("sideToolbar.newBlankWorkflow"),onClick:X[2]||(X[2]=()=>d(r).execute("Comfy.NewBlankWorkflow"))},{default:M(()=>X[5]||(X[5]=[p("i",{class:"pi pi-plus"},null,-1)])),_:1},8,["aria-label"])),[[ne,{value:K.$t("sideToolbar.newBlankWorkflow"),showDelay:300}]]),m.value?(c(),_("div",N0,[E(f0),d(u)?(c(),O(Jl,{key:0,"show-arrow":!1,compact:"",class:"shrink-0 p-1"})):d(h)?(c(),O(Xl,{key:1,class:"p-1"})):A("",!0)])):A("",!0),E(d(bl),{ref_key:"menu",ref:v,model:W.value},{itemicon:M(({item:Z})=>[Z.overlayIcon?(c(),O(d0,Li(tt({key:0},Z.overlayIcon)),null,16)):Z.icon?(c(),_("i",{key:1,class:q(Z.icon)},null,2)):A("",!0)]),_:1},8,["model"]),d(h)?(c(),_("div",I0)):A("",!0)],2)}}}),pi=Ve(P0,[["__scopeId","data-v-09158161"]]);function M0(){const e=L();function o(a){a?.graph&&(t(),e.value=De.onChange(l=>{for(const s of l.nodeIds){const i=De.getNodeLayoutRef(s).value;if(!i)continue;const r=a.graph?.getNodeById(parseInt(s));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]))}a.setDirty(!0,!0)}))}n(o,"startSync");function t(){e.value?.(),e.value=void 0}return n(t,"stopSync"),xt(t),{startSync:o,stopSync:t}}n(M0,"useLayoutSync");function D0(){const e=he(),o=In(),{shouldRenderVueNodes:t}=vn(),a=Ke(null),{startSync:l}=M0(),s=n(()=>{const m=J.canvas?.graph;if(!m||a.value)return;const f=_h(m);a.value=f;const v=m._nodes.map(g=>({id:g.id.toString(),pos:[g.pos[0],g.pos[1]],size:[g.size[0],uu(g.size[1])]}));De.initializeFromLiteGraph(v);for(const g of m.reroutes.values()){const[y,k]=g.pos,C=g.parentId??void 0,h=Array.from(g.linkIds);o.createReroute(g.id,{x:y,y:k},C,h)}for(const g of m._links.values())o.createLink(g.id,g.origin_id,g.origin_slot,g.target_id,g.target_slot);l(e.canvas)},"initializeNodeManager"),i=n(()=>{if(a.value){try{a.value.cleanup()}catch{}a.value=null}},"disposeNodeManagerAndSyncs");return le(()=>t.value&&!!J.canvas?.graph,m=>{m&&(s(),va(J.canvas?.graph?.extra.workflowRendererVersion))},{immediate:!0}),st(()=>!t.value,()=>{va(J.canvas?.graph?.extra.workflowRendererVersion),i(),J.canvas?.setDirty(!0,!0)}),le(()=>t.value,(m,f)=>{m!==f&&De.clearAllSlotLayouts()},{immediate:!0,flush:"sync"}),{nodeManager:a,initializeNodeManager:s,disposeNodeManagerAndSyncs:i,setupEmptyGraphListener:n(()=>{const m=J.canvas?.graph;if(!t.value||a.value||m?._nodes.length!==0)return;const f=m.onNodeAdded;m.onNodeAdded=function(v){m.onNodeAdded=f,t.value&&!a.value&&s(),f&&f.call(this,v)}},"setupEmptyGraphListener"),cleanup:n(()=>{a.value&&(a.value.cleanup(),a.value=null)},"cleanup")}}n(D0,"useVueNodeLifecycleIndividual");const Js=Sn(D0),A0=.04,mt=n(e=>e*A0,"meshyCreditsToUsd"),L0={minimumFractionDigits:0,maximumFractionDigits:0},wn=n(e=>du({usd:e,numberOptions:L0}),"formatCreditsValue"),Xs=n(e=>e?"~":"","makePrefix"),Zs=n(e=>e??"/Run","makeSuffix"),ea=n(e=>e?` ${e}`:"","appendNote"),R=n((e,{suffix:o,note:t,approximate:a}={})=>`${Xs(a)}${wn(e)} credits${Zs(o)}${ea(t)}`,"formatCreditsLabel"),ve=n((e,o,{suffix:t,note:a,approximate:l}={})=>{const s=wn(e),i=wn(o),r=s===i?s:`${s}-${i}`;return`${Xs(l)}${r} credits${Zs(t)}${ea(a)}`},"formatCreditsRangeLabel"),Ge=n((e,{suffix:o,note:t,approximate:a,separator:l}={})=>{const i=e.map(r=>wn(r)).join(l??"/");return`${Xs(a)}${i} credits${Zs(o)}${ea(t)}`},"formatCreditsListLabel");function E0(e,o,t=""){try{return e(o)}catch{return t}}n(E0,"safePricingExecution");const Un=n(e=>{const o=e.widgets?.find(s=>s.name==="duration");if(!o)return R(.0715,{suffix:"/second"});const t=Number(o.value),l=.0715*(isNaN(t)?5:t);return R(l)},"calculateRunwayDurationPrice"),Yo=n(e=>o=>{const t=o.widgets?.find(s=>s.name==="duration");if(!t)return R(e,{suffix:"/second"});const a=parseFloat(String(t.value));if(!Number.isFinite(a))return R(e,{suffix:"/second"});const l=e*a;return R(l)},"makeOmniProDurationCalculator"),R0=n(e=>{const o=e.widgets?.find(a=>a.name==="mode");if(!o)return Ge([.07,.112],{suffix:"/second",note:"(std/pro)"});const t=String(o.value).toLowerCase();return t==="pro"?R(.112,{suffix:"/second"}):t==="std"?R(.07,{suffix:"/second"}):Ge([.07,.112],{suffix:"/second",note:"(std/pro)"})},"klingMotionControlPricingCalculator"),Gn=n(e=>{const o=e.widgets?.find(r=>r.name==="duration_seconds"),t=e.widgets?.find(r=>r.name==="quality"),a=e.widgets?.find(r=>r.name==="motion_mode");if(!o||!t)return ve(.45,1.2,{note:"(varies with duration, quality & motion mode)"});const l=String(o.value),s=String(t.value),i=String(a?.value);if(l.includes("5")){if(s.includes("1080p")||s.includes("720p")&&i?.includes("fast"))return R(1.2);if(s.includes("720p")&&i?.includes("normal"))return R(.6);if(s.includes("540p")&&i?.includes("fast"))return R(.9);if(s.includes("540p")&&i?.includes("normal"))return R(.45);if(s.includes("360p")&&i?.includes("fast"))return R(.9);if(s.includes("360p")&&i?.includes("normal"))return R(.45)}else if(l.includes("8")){if(s.includes("540p")&&i?.includes("normal"))return R(.9);if(s.includes("540p")&&i?.includes("fast"))return R(1.2);if(s.includes("360p")&&i?.includes("normal"))return R(.9);if(s.includes("360p")&&i?.includes("fast")||s.includes("1080p")&&i?.includes("normal")||s.includes("1080p")&&i?.includes("fast")||s.includes("720p")&&i?.includes("normal")||s.includes("720p")&&i?.includes("fast"))return R(1.2)}return R(.9)},"pixversePricingCalculator"),Jo=n(e=>{const o=e.widgets?.find($=>$.name==="model"),t=e.widgets?.find($=>$.name==="duration"),a=e.widgets?.find($=>$.name==="resolution"),l=e.widgets?.find($=>$.name==="generate_audio");if(!o||!t||!a)return"Token-based";const s=String(o.value).toLowerCase(),i=String(a.value).toLowerCase(),r=parseFloat(String(t.value)),u=l&&String(l.value).toLowerCase()==="true",m={"seedance-1-5-pro":{"480p":[.12,.12],"720p":[.26,.26],"1080p":[.58,.59]},"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]}},f=s.includes("seedance-1-5-pro")?"seedance-1-5-pro":s.includes("seedance-1-0-pro-fast")?"seedance-1-0-pro-fast":s.includes("seedance-1-0-pro")?"seedance-1-0-pro":s.includes("seedance-1-0-lite")?"seedance-1-0-lite":"",v=i.includes("1080")?"1080p":i.includes("720")?"720p":i.includes("480")?"480p":"",g=f&&v?m[f]?.[v]:void 0;if(!g)return"Token-based";const[y,k]=g,C=r/10,h=f==="seedance-1-5-pro"&&u?2:1,b=y*C*h,T=k*C*h;return b===T?R(b):ve(b,T)},"byteDanceVideoPricingCalculator"),Fa=n(e=>{const o=e.widgets?.find(g=>g.name==="model"),t=e.widgets?.find(g=>g.name==="duration"),a=e.widgets?.find(g=>g.name==="resolution"),l=ve(.04,.24,{suffix:"/second"});if(!o||!t||!a)return l;const s=String(o.value).toLowerCase(),i=String(a.value).toLowerCase(),r=parseFloat(String(t.value)),m={"ltx-2 (pro)":{"1920x1080":.06,"2560x1440":.12,"3840x2160":.24},"ltx-2 (fast)":{"1920x1080":.04,"2560x1440":.08,"3840x2160":.16}}[s];if(!m)return l;const f=m[i];if(!f)return l;const v=f*r;return R(v)},"ltxvPricingCalculator"),Ua=n(e=>{const o=e.widgets?.find(s=>s.name==="duration"),t=e.widgets?.find(s=>s.name==="generate_audio");if(!o||!t)return ve(.35,1.4,{note:"(varies with duration & audio)"});const a=String(o.value),l=String(t.value).toLowerCase()==="true";return a==="5"?R(l?.7:.35):a==="10"?R(l?1.4:.7):ve(.35,1.4,{note:"(varies with duration & audio)"})},"klingVideoWithAudioPricingCalculator"),Wo={BASIC:new Set(["720x1280","1280x720"]),PRO:new Set(["1024x1792","1792x1024"])},V0=new Set([...Wo.BASIC,...Wo.PRO]);function O0(e,o,t){const a=e?.toLowerCase()??"",l=t?.toLowerCase()??"";if(!o||Number.isNaN(o))return"Set duration (4s / 8s / 12s)";if(!l)return"Set size (720x1280, 1280x720, 1024x1792, 1792x1024)";if(!V0.has(l))return"Invalid size. Must be 720x1280, 1280x720, 1024x1792, or 1792x1024.";if(!a.includes("sora-2-pro")){if(a.includes("sora-2")&&!Wo.BASIC.has(l))return"sora-2 supports only 720x1280 or 1280x720";if(!a.includes("sora-2"))return"Unsupported model"}}n(O0,"validateSora2Selection");function W0(e,o){const t=e?.toLowerCase()??"",a=o?.toLowerCase()??"";return t.includes("sora-2-pro")?Wo.PRO.has(a)?.5:.3:t.includes("sora-2")?.1:Wo.PRO.has(a)?.5:.1}n(W0,"perSecForSora2");function z0(e,o){return R(Number((e*o).toFixed(2)))}n(z0,"formatRunPrice");const B0=n(e=>{const o=n(r=>String(e.widgets?.find(u=>u.name===r)?.value??""),"getWidgetValue"),t=o("model"),a=o("size"),l=Number(e.widgets?.find(r=>["duration","duration_s"].includes(r.name))?.value);if(!t||!a||!l)return"Set model, duration & size";const s=O0(t,l,a);if(s)return s;const i=W0(t,a);return z0(i,l)},"sora2PricingCalculator"),Hn=n((e,o)=>{const t=n($=>e.widgets?.find(I=>I.name===$),"getWidget"),a=n(($,I)=>{const S=t($);return!S||S.value===void 0||S.value===null?I:String(S.value)},"getString"),l=n(($,I)=>{const S=t($);if(!S||S.value===void 0||S.value===null)return I;const x=S.value;if(typeof x=="number")return x!==0;const N=String(x).toLowerCase();return N==="true"?!0:N==="false"?!1:I},"getBool"),s=a("model_version","").toLowerCase();if(s==="")return ve(.1,.65,{note:"(varies with quad, style, texture & quality)"});const r=a("style","None").toLowerCase()!=="none",u=l("texture",!1),m=l("pbr",!1),f=l("quad",!1),v=a("texture_quality","standard").toLowerCase(),g=a("geometry_quality","standard").toLowerCase(),y=v==="detailed",k=g==="detailed",C=u||m;let h;s.includes("v1.4")||C?o==="text"?h=20:h=30:o==="text"?h=10:h=20;let b=h;r&&(b+=5),f&&(b+=5),y&&(b+=10),k&&(b+=20);const T=b*.01;return R(T)},"calculateTripo3DGenerationPrice"),F0=n(e=>{const o=e.widgets?.find(l=>l.name==="should_texture");if(!o)return ve(mt(20),mt(30),{note:"(varies with texture)"});const a=String(o.value).toLowerCase()==="true"?30:20;return R(mt(a))},"calculateMeshyImageToModelPrice"),U0=n(e=>{const o=e.widgets?.find(l=>l.name==="should_texture");if(!o)return ve(mt(5),mt(15),{note:"(varies with texture)"});const a=String(o.value).toLowerCase()==="true"?15:5;return R(mt(a))},"calculateMeshyMultiImageToModelPrice"),Ga={FluxProCannyNode:{displayPrice:R(.05)},FluxProDepthNode:{displayPrice:R(.05)},FluxProExpandNode:{displayPrice:R(.05)},FluxProFillNode:{displayPrice:R(.05)},FluxProUltraImageNode:{displayPrice:R(.06)},FluxProKontextProNode:{displayPrice:R(.04)},FluxProKontextMaxNode:{displayPrice:R(.08)},Flux2ProImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(f=>f.name==="width"),t=e.widgets?.find(f=>f.name==="height"),a=Number(o?.value),l=Number(t?.value);if(!Number.isFinite(a)||!Number.isFinite(l)||a<=0||l<=0)return ve(.03,.15);const s=e.inputs?.find(f=>f.name==="images"),i=typeof s?.link<"u"&&s.link!=null,r=1024*1024,u=Math.max(1,Math.floor((a*l+r-1)/r)),m=.03+.015*Math.max(u-1,0);if(i){const f=m+.015,v=m+.12;return ve(f,v,{approximate:!0})}return R(m)},"displayPrice")},Flux2MaxImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(f=>f.name==="width"),t=e.widgets?.find(f=>f.name==="height"),a=Number(o?.value),l=Number(t?.value);if(!Number.isFinite(a)||!Number.isFinite(l)||a<=0||l<=0)return ve(.07,.35);const s=e.inputs?.find(f=>f.name==="images"),i=typeof s?.link<"u"&&s.link!=null,r=1024*1024,u=Math.max(1,Math.floor((a*l+r-1)/r)),m=.07+.03*Math.max(u-1,0);if(i){const f=m+.03,v=m+.24;return ve(f,v)}return R(m)},"displayPrice")},OpenAIVideoSora2:{displayPrice:B0},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 ve(.03,.09,{suffix:" x num_images/Run"});const a=Number(o.value)||1,s=String(t?.value).toLowerCase()==="true"?.0286:.0858,i=Number((s*a).toFixed(2));return R(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 ve(.07,.11,{suffix:" x num_images/Run"});const a=Number(o.value)||1,s=String(t?.value).toLowerCase()==="true"?.0715:.1144,i=Number((s*a).toFixed(2));return R(i)},"displayPrice")},IdeogramV3:{displayPrice:n(e=>{const o=e.widgets?.find(m=>m.name==="rendering_speed"),t=e.widgets?.find(m=>m.name==="num_images"),a=e.inputs?.find(m=>m.name==="character_image"),l=typeof a?.link<"u"&&a.link!=null;if(!o)return ve(.04,.11,{suffix:" x num_images/Run",note:"(varies with rendering speed & num_images)"});const s=Number(t?.value)||1;let i=.0858;const r=String(o.value);r.toLowerCase().includes("quality")?l?i=.286:i=.1287:r.toLowerCase().includes("default")?l?i=.2145:i=.0858:r.toLowerCase().includes("turbo")&&(l?i=.143:i=.0429);const u=Number((i*s).toFixed(2));return R(u)},"displayPrice")},KlingCameraControlI2VNode:{displayPrice:R(.49)},KlingCameraControlT2VNode:{displayPrice:R(.14)},KlingDualCharacterVideoEffectNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="mode"),t=e.widgets?.find(r=>r.name==="model_name"),a=e.widgets?.find(r=>r.name==="duration");if(!o||!t||!a)return ve(.14,2.8,{note:"(varies with model, mode & duration)"});const l=String(o.value),s=String(a.value),i=String(t.value);return i.includes("v1-6")||i.includes("v1-5")?l.includes("pro")?s.includes("10")?R(.98):R(.49):s.includes("10")?R(.56):R(.28):i.includes("v1")?l.includes("pro")?s.includes("10")?R(.98):R(.49):s.includes("10")?R(.28):R(.14):R(.14)},"displayPrice")},KlingImage2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="mode"),t=e.widgets?.find(r=>r.name==="model_name"),a=e.widgets?.find(r=>r.name==="duration");if(!o){if(!t)return ve(.14,2.8,{note:"(varies with model, mode & duration)"});const r=String(t.value);return r.includes("v2-1-master")||r.includes("v2-master")?R(1.4):r.includes("v1-6")||r.includes("v1-5")?R(.28):R(.14)}const l=String(o.value),s=String(a.value),i=String(t.value);return i.includes("v2-5-turbo")?s.includes("10")?R(.7):R(.35):i.includes("v2-1-master")||i.includes("v2-master")?s.includes("10")?R(2.8):R(1.4):i.includes("v2-1")||i.includes("v1-6")||i.includes("v1-5")?l.includes("pro")?s.includes("10")?R(.98):R(.49):s.includes("10")?R(.56):R(.28):i.includes("v1")?l.includes("pro")?s.includes("10")?R(.98):R(.49):s.includes("10")?R(.28):R(.14):R(.14)},"displayPrice")},KlingImageGenerationNode:{displayPrice:n(e=>{const t=e.inputs?.find(m=>m.name==="image")?.link?"image to image":"text to image",a=e.widgets?.find(m=>m.name==="model_name"),l=e.widgets?.find(m=>m.name==="n");if(!a)return ve(.0035,.028,{suffix:" x n/Run",note:"(varies with modality & model)"});const s=String(a.value),i=Number(l?.value)||1;let r=.014;t.includes("text to image")?s.includes("kling-v1-5")||s.includes("kling-v2")?r=.014:s.includes("kling-v1")&&(r=.0035):t.includes("image to image")&&(s.includes("kling-v1-5")?r=.028:s.includes("kling-v1")&&(r=.0035));const u=r*i;return R(u)},"displayPrice")},KlingLipSyncAudioToVideoNode:{displayPrice:R(.1,{approximate:!0})},KlingLipSyncTextToVideoNode:{displayPrice:R(.1,{approximate:!0})},KlingSingleImageVideoEffectNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="effect_scene");if(!o)return ve(.28,.49,{note:"(varies with effect scene)"});const t=String(o.value);return t.includes("fuzzyfuzzy")||t.includes("squish")?R(.28):t.includes("dizzydizzy")||t.includes("bloombloom")?R(.49):(t.includes("expansion"),R(.28))},"displayPrice")},KlingStartEndFrameNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="mode");if(!o)return ve(.14,2.8,{note:"(varies with model, mode & duration)"});const t=String(o.value);return t.includes("v2-5-turbo")?t.includes("10")?R(.7):R(.35):t.includes("v2-1")?t.includes("10s")?R(.98):R(.49):t.includes("v2-master")?t.includes("10s")?R(2.8):R(1.4):t.includes("v1-6")?t.includes("pro")?t.includes("10s")?R(.98):R(.49):t.includes("10s")?R(.56):R(.28):t.includes("v1")?t.includes("pro")?t.includes("10s")?R(.98):R(.49):t.includes("10s")?R(.28):R(.14):R(.14)},"displayPrice")},KlingTextToVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="mode");if(!o)return ve(.14,2.8,{note:"(varies with model, mode & duration)"});const t=String(o.value);return t.includes("v2-5-turbo")?t.includes("10")?R(.7):R(.35):t.includes("v2-1-master")||t.includes("v2-master")?t.includes("10s")?R(2.8):R(1.4):t.includes("v1-6")?t.includes("pro")?t.includes("10s")?R(.98):R(.49):t.includes("10s")?R(.56):R(.28):t.includes("v1")?t.includes("pro")?t.includes("10s")?R(.98):R(.49):t.includes("10s")?R(.28):R(.14):R(.14)},"displayPrice")},KlingVideoExtendNode:{displayPrice:R(.28)},KlingVirtualTryOnNode:{displayPrice:R(.07)},KlingOmniProTextToVideoNode:{displayPrice:Yo(.112)},KlingOmniProFirstLastFrameNode:{displayPrice:Yo(.112)},KlingOmniProImageToVideoNode:{displayPrice:Yo(.112)},KlingOmniProVideoToVideoNode:{displayPrice:Yo(.168)},KlingMotionControl:{displayPrice:R0},KlingOmniProEditVideoNode:{displayPrice:R(.168,{suffix:"/second"})},KlingOmniProImageNode:{displayPrice:R(.028)},KlingTextToVideoWithAudio:{displayPrice:Ua},KlingImageToVideoWithAudio:{displayPrice:Ua},LumaImageToVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="model"),t=e.widgets?.find(r=>r.name==="resolution"),a=e.widgets?.find(r=>r.name==="duration");if(!o||!t||!a)return ve(.2,16.4,{note:"(varies with model, resolution & duration)"});const l=String(o.value),s=String(t.value).toLowerCase(),i=String(a.value);if(l.includes("ray-flash-2")){if(i.includes("5s")){if(s.includes("4k"))return R(3.13);if(s.includes("1080p"))return R(.79);if(s.includes("720p"))return R(.34);if(s.includes("540p"))return R(.2)}else if(i.includes("9s")){if(s.includes("4k"))return R(5.65);if(s.includes("1080p"))return R(1.42);if(s.includes("720p"))return R(.61);if(s.includes("540p"))return R(.36)}}else if(l.includes("ray-2")){if(i.includes("5s")){if(s.includes("4k"))return R(9.11);if(s.includes("1080p"))return R(2.27);if(s.includes("720p"))return R(1.02);if(s.includes("540p"))return R(.57)}else if(i.includes("9s")){if(s.includes("4k"))return R(16.4);if(s.includes("1080p"))return R(4.1);if(s.includes("720p"))return R(1.83);if(s.includes("540p"))return R(1.03)}}else if(l.includes("ray-1-6"))return R(.5);return R(.79)},"displayPrice")},LumaVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="model"),t=e.widgets?.find(r=>r.name==="resolution"),a=e.widgets?.find(r=>r.name==="duration");if(!o||!t||!a)return ve(.2,16.4,{note:"(varies with model, resolution & duration)"});const l=String(o.value),s=String(t.value).toLowerCase(),i=String(a.value);if(l.includes("ray-flash-2")){if(i.includes("5s")){if(s.includes("4k"))return R(3.13);if(s.includes("1080p"))return R(.79);if(s.includes("720p"))return R(.34);if(s.includes("540p"))return R(.2)}else if(i.includes("9s")){if(s.includes("4k"))return R(5.65);if(s.includes("1080p"))return R(1.42);if(s.includes("720p"))return R(.61);if(s.includes("540p"))return R(.36)}}else if(l.includes("ray-2")){if(i.includes("5s")){if(s.includes("4k"))return R(9.11);if(s.includes("1080p"))return R(2.27);if(s.includes("720p"))return R(1.02);if(s.includes("540p"))return R(.57)}else if(i.includes("9s")){if(s.includes("4k"))return R(16.4);if(s.includes("1080p"))return R(4.1);if(s.includes("720p"))return R(1.83);if(s.includes("540p"))return R(1.03)}}else if(l.includes("ray-1-6"))return R(.5);return R(.79)},"displayPrice")},MinimaxImageToVideoNode:{displayPrice:R(.43)},MinimaxTextToVideoNode:{displayPrice:R(.43)},MinimaxHailuoVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="resolution"),t=e.widgets?.find(s=>s.name==="duration");if(!o||!t)return ve(.28,.56,{note:"(varies with resolution & duration)"});const a=String(o.value),l=String(t.value);if(a.includes("768P")){if(l.includes("6"))return R(.28);if(l.includes("10"))return R(.56)}else if(a.includes("1080P")&&l.includes("6"))return R(.49);return R(.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 ve(.016,.02,{suffix:" x n/Run",note:"(varies with size & n)"});const a=String(o.value),l=Number(t?.value)||1;let s=.02;a.includes("1024x1024")?s=.02:a.includes("512x512")?s=.018:a.includes("256x256")&&(s=.016);const i=Number((s*l).toFixed(3));return R(i)},"displayPrice")},OpenAIDalle3:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="size"),t=e.widgets?.find(s=>s.name==="quality");if(!o||!t)return ve(.04,.12,{note:"(varies with size & quality)"});const a=String(o.value),l=String(t.value);return a.includes("1024x1024")?l.includes("hd")?R(.08):R(.04):a.includes("1792x1024")||a.includes("1024x1792")?l.includes("hd")?R(.12):R(.08):R(.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 ve(.011,.3,{suffix:" x n/Run",note:"(varies with quality & n)"});const a=String(o.value),l=Number(t?.value)||1;let s=[.046,.07];return a.includes("high")?s=[.167,.3]:a.includes("medium")?s=[.046,.07]:a.includes("low")&&(s=[.011,.02]),l===1?ve(s[0],s[1]):ve(s[0],s[1],{suffix:` x ${l}/Run`})},"displayPrice")},PixverseImageToVideoNode:{displayPrice:Gn},PixverseTextToVideoNode:{displayPrice:Gn},PixverseTransitionVideoNode:{displayPrice:Gn},RecraftCreativeUpscaleNode:{displayPrice:R(.25)},RecraftCrispUpscaleNode:{displayPrice:R(.004)},RecraftGenerateColorFromImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return R(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,a=Number((.04*t).toFixed(2));return R(a)},"displayPrice")},RecraftGenerateImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return R(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,a=Number((.04*t).toFixed(2));return R(a)},"displayPrice")},RecraftGenerateVectorImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return R(.08,{suffix:" x n/Run"});const t=Number(o.value)||1,a=Number((.08*t).toFixed(2));return R(a)},"displayPrice")},RecraftImageInpaintingNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return R(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,a=Number((.04*t).toFixed(2));return R(a)},"displayPrice")},RecraftImageToImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return R(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,a=Number((.04*t).toFixed(2));return R(a)},"displayPrice")},RecraftRemoveBackgroundNode:{displayPrice:R(.01)},RecraftReplaceBackgroundNode:{displayPrice:R(.04)},RecraftTextToImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return R(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,a=Number((.04*t).toFixed(2));return R(a)},"displayPrice")},RecraftTextToVectorNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return R(.08,{suffix:" x n/Run"});const t=Number(o.value)||1,a=Number((.08*t).toFixed(2));return R(a)},"displayPrice")},RecraftVectorizeImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return R(.01,{suffix:" x n/Run"});const t=Number(o.value)||1,a=Number((.01*t).toFixed(2));return R(a)},"displayPrice")},StabilityStableImageSD_3_5Node:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="model");if(!o)return ve(.035,.065,{note:"(varies with model)"});const t=String(o.value).toLowerCase();return t.includes("large")?R(.065):(t.includes("medium"),R(.035))},"displayPrice")},StabilityStableImageUltraNode:{displayPrice:R(.08)},StabilityUpscaleConservativeNode:{displayPrice:R(.25)},StabilityUpscaleCreativeNode:{displayPrice:R(.25)},StabilityUpscaleFastNode:{displayPrice:R(.01)},StabilityTextToAudio:{displayPrice:R(.2)},StabilityAudioToAudio:{displayPrice:R(.2)},StabilityAudioInpaint:{displayPrice:R(.2)},VeoVideoGenerationNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="duration_seconds");if(!o)return ve(2.5,5,{note:"(varies with duration)"});const t=.5*Number(o.value);return R(t)},"displayPrice")},Veo3VideoGenerationNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model"),t=e.widgets?.find(s=>s.name==="generate_audio");if(!o||!t)return ve(.8,3.2,{note:"(varies with model & audio generation)"});const a=String(o.value),l=String(t.value).toLowerCase()==="true";return a.includes("veo-3.0-fast-generate-001")||a.includes("veo-3.1-fast-generate")?R(l?1.2:.8):a.includes("veo-3.0-generate-001")||a.includes("veo-3.1-generate")?R(l?3.2:1.6):ve(.8,3.2)},"displayPrice")},Veo3FirstLastFrameNode:{displayPrice:n(e=>{const o=e.widgets?.find(m=>m.name==="model"),t=e.widgets?.find(m=>m.name==="generate_audio"),a=e.widgets?.find(m=>m.name==="duration");if(!o||!t||!a)return ve(.4,3.2,{note:"(varies with model & audio generation)"});const l=String(o.value),s=String(t.value).toLowerCase()==="true",i=parseFloat(String(a.value));let r=null;if(l.includes("veo-3.1-fast-generate")?r=s?.15:.1:l.includes("veo-3.1-generate")&&(r=s?.4:.2),r===null)return ve(.4,3.2);const u=r*i;return R(u)},"displayPrice")},LumaImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="model"),t=e.widgets?.find(l=>l.name==="aspect_ratio");if(!o||!t)return ve(.0064,.026,{note:"(varies with model & aspect ratio)"});const a=String(o.value);return a.includes("photon-flash-1")?R(.0027):a.includes("photon-1")?R(.0104):R(.0246)},"displayPrice")},LumaImageModifyNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="model");if(!o)return ve(.0027,.0104,{note:"(varies with model)"});const t=String(o.value);return t.includes("photon-flash-1")?R(.0027):t.includes("photon-1")?R(.0104):R(.0246)},"displayPrice")},MoonvalleyTxt2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="length");if(!o)return R(1.5);const t=String(o.value);return R(t==="5s"?1.5:t==="10s"?3:1.5)},"displayPrice")},MoonvalleyImg2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="length");if(!o)return R(1.5);const t=String(o.value);return R(t==="5s"?1.5:t==="10s"?3:1.5)},"displayPrice")},MoonvalleyVideo2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="length");if(!o)return R(2.25);const t=String(o.value);return R(t==="5s"?2.25:t==="10s"?4:2.25)},"displayPrice")},RunwayTextToImageNode:{displayPrice:R(.11)},RunwayImageToVideoNodeGen3a:{displayPrice:Un},RunwayImageToVideoNodeGen4:{displayPrice:Un},RunwayFirstLastFrameNode:{displayPrice:Un},Rodin3D_Regular:{displayPrice:R(.4)},Rodin3D_Detail:{displayPrice:R(.4)},Rodin3D_Smooth:{displayPrice:R(.4)},Rodin3D_Sketch:{displayPrice:R(.4)},TripoTextToModelNode:{displayPrice:n(e=>Hn(e,"text"),"displayPrice")},TripoImageToModelNode:{displayPrice:n(e=>Hn(e,"image"),"displayPrice")},TripoMultiviewToModelNode:{displayPrice:n(e=>Hn(e,"multiview"),"displayPrice")},TripoTextureNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="texture_quality");return o?String(o.value).includes("detailed")?R(.2):R(.1):ve(.1,.2,{note:"(varies with quality)"})},"displayPrice")},TripoRigNode:{displayPrice:"$0.25/Run"},TripoConversionNode:{displayPrice:n(e=>{const o=n(k=>e.widgets?.find(C=>C.name===k)?.value,"getWidgetValue"),t=n((k,C)=>{const h=o(k);if(h==null||h==="")return C;if(typeof h=="number")return Number.isFinite(h)?h:C;const b=Number(h);return Number.isFinite(b)?b:C},"getNumber"),a=n((k,C)=>{const h=o(k);if(h==null)return C;if(typeof h=="number")return h!==0;const b=String(h).toLowerCase();return b==="true"?!0:b==="false"?!1:C},"getBool");let l=!1;return a("quad",!1)&&(l=!0),a("force_symmetry",!1)&&(l=!0),a("flatten_bottom",!1)&&(l=!0),a("pivot_to_center_bottom",!1)&&(l=!0),a("with_animation",!1)&&(l=!0),a("pack_uv",!1)&&(l=!0),a("bake",!1)&&(l=!0),a("export_vertex_colors",!1)&&(l=!0),a("animate_in_place",!1)&&(l=!0),t("face_limit",-1)!==-1&&(l=!0),t("texture_size",4096)!==4096&&(l=!0),t("flatten_bottom_threshold",0)!==0&&(l=!0),t("scale_factor",1)!==1&&(l=!0),String(o("texture_format")??"JPEG").toUpperCase()!=="JPEG"&&(l=!0),String(o("part_names")??"").trim().length>0&&(l=!0),String(o("fbx_preset")??"blender").toLowerCase()!=="blender"&&(l=!0),String(o("export_orientation")??"default").toLowerCase()!=="default"&&(l=!0),R((l?10:5)*.01)},"displayPrice")},TripoRetargetNode:{displayPrice:R(.1)},TripoRefineNode:{displayPrice:R(.3)},MeshyTextToModelNode:{displayPrice:R(mt(20))},MeshyRefineNode:{displayPrice:R(mt(10))},MeshyImageToModelNode:{displayPrice:F0},MeshyMultiImageToModelNode:{displayPrice:U0},MeshyRigModelNode:{displayPrice:R(mt(5))},MeshyAnimateModelNode:{displayPrice:R(mt(3))},MeshyTextureNode:{displayPrice:R(mt(10))},GeminiNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="model");if(!o)return"Token-based";const t=String(o.value);return t.includes("gemini-2.5-flash-preview-04-17")?Ge([3e-4,.0025],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gemini-2.5-flash")?Ge([3e-4,.0025],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gemini-2.5-pro-preview-05-06")?Ge([.00125,.01],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gemini-2.5-pro")?Ge([.00125,.01],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gemini-3-pro-preview")?Ge([.002,.012],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):"Token-based"},"displayPrice")},GeminiImageNode:{displayPrice:R(.039,{suffix:"/Image (1K)",approximate:!0})},GeminiImage2Node:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="resolution");if(!o)return"Token-based";const t=String(o.value);return t.includes("1K")?R(.134,{suffix:"/Image",approximate:!0}):t.includes("2K")?R(.134,{suffix:"/Image",approximate:!0}):t.includes("4K")?R(.24,{suffix:"/Image",approximate:!0}):"Token-based"},"displayPrice")},OpenAIChatNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="model");if(!o)return"Token-based";const t=String(o.value);return t.includes("o4-mini")?Ge([.0011,.0044],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("o1-pro")?Ge([.15,.6],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("o1")?Ge([.015,.06],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("o3-mini")?Ge([.0011,.0044],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("o3")?Ge([.01,.04],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-4o")?Ge([.0025,.01],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-4.1-nano")?Ge([1e-4,4e-4],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-4.1-mini")?Ge([4e-4,.0016],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-4.1")?Ge([.002,.008],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-5-nano")?Ge([5e-5,4e-4],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-5-mini")?Ge([25e-5,.002],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-5")?Ge([.00125,.01],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):"Token-based"},"displayPrice")},ViduTextToVideoNode:{displayPrice:R(.4)},ViduImageToVideoNode:{displayPrice:R(.4)},ViduReferenceVideoNode:{displayPrice:R(.4)},ViduStartEndToVideoNode:{displayPrice:R(.4)},ByteDanceImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="model");return o&&String(o.value).includes("seedream-3-0-t2i")?R(.03):"Token-based"},"displayPrice")},ByteDanceImageEditNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="model");return o&&String(o.value).includes("seededit-3-0-i2i")?R(.03):"Token-based"},"displayPrice")},ByteDanceSeedreamNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="model"),t=String(o?.value??"").toLowerCase();let a=.03;return t.includes("seedream-4-5-251128")?a=.04:t.includes("seedream-4-0-250828")&&(a=.03),R(a,{suffix:" x images/Run",approximate:!0})},"displayPrice")},ByteDanceTextToVideoNode:{displayPrice:Jo},ByteDanceImageToVideoNode:{displayPrice:Jo},ByteDanceFirstLastFrameNode:{displayPrice:Jo},ByteDanceImageReferenceNode:{displayPrice:Jo},WanTextToVideoApi:{displayPrice:n(e=>{const o=e.widgets?.find(m=>m.name==="duration"),t=e.widgets?.find(m=>m.name==="size");if(!o||!t)return ve(.05,.15,{suffix:"/second"});const a=parseFloat(String(o.value)),l=String(t.value).toLowerCase(),s=l.includes("1080")?"1080p":l.includes("720")?"720p":l.includes("480")?"480p":l.match(/^\s*(\d{3,4}p)/)?.[1]??"",r={"480p":.05,"720p":.1,"1080p":.15}[s];if(isNaN(a)||!r)return ve(.05,.15,{suffix:"/second"});const u=Number((r*a).toFixed(2));return R(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 ve(.05,.15,{suffix:"/second"});const a=parseFloat(String(o.value)),l=String(t.value).trim().toLowerCase(),i={"480p":.05,"720p":.1,"1080p":.15}[l];if(isNaN(a)||!i)return ve(.05,.15,{suffix:"/second"});const r=Number((i*a).toFixed(2));return R(r)},"displayPrice")},WanTextToImageApi:{displayPrice:R(.03)},WanImageToImageApi:{displayPrice:R(.03)},LtxvApiTextToVideo:{displayPrice:Fa},LtxvApiImageToVideo:{displayPrice:Fa},WanReferenceVideoApi:{displayPrice:n(e=>{const o=e.widgets?.find(v=>v.name==="duration"),t=e.widgets?.find(v=>v.name==="size");if(!o||!t)return ve(.7,1.5,{note:"(varies with size & duration)"});const a=parseFloat(String(o.value)),s=String(t.value).toLowerCase().includes("1080p")?.15:.1,i=2*s,r=5*s,u=a*s,m=i+u,f=r+u;return ve(m,f)},"displayPrice")},Vidu2TextToVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(u=>u.name==="duration"),t=e.widgets?.find(u=>u.name==="resolution");if(!o||!t)return ve(.075,.6,{note:"(varies with duration & resolution)"});const a=parseFloat(String(o.value)),l=String(t.value).toLowerCase();let s,i;if(l.includes("1080")?(s=.1,i=.05):(s=.075,i=.025),!Number.isFinite(a)||a<=0)return ve(.075,.6,{note:"(varies with duration & resolution)"});const r=s+i*(a-1);return R(r)},"displayPrice")},Vidu2ImageToVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(v=>v.name==="model"),t=e.widgets?.find(v=>v.name==="duration"),a=e.widgets?.find(v=>v.name==="resolution");if(!o||!t||!a)return ve(.04,1,{note:"(varies with model, duration & resolution)"});const l=String(o.value).toLowerCase(),s=parseFloat(String(t.value)),r=String(a.value).toLowerCase().includes("1080");let u,m;if(l.includes("q2-pro-fast"))u=r?.08:.04,m=r?.02:.01;else if(l.includes("q2-pro"))u=r?.275:.075,m=r?.075:.05;else if(l.includes("q2-turbo"))if(r)u=.175,m=.05;else{if(s<=1)return R(.04);if(s<=2)return R(.05);const v=.05+.05*(s-2);return R(v)}else return ve(.04,1,{note:"(varies with model, duration & resolution)"});if(!Number.isFinite(s)||s<=0)return ve(.04,1,{note:"(varies with model, duration & resolution)"});const f=u+m*(s-1);return R(f)},"displayPrice")},Vidu2ReferenceVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(g=>g.name==="duration"),t=e.widgets?.find(g=>g.name==="resolution"),a=e.widgets?.find(g=>g.name==="audio");if(!o)return ve(.125,1.5,{note:"(varies with duration, resolution & audio)"});const l=parseFloat(String(o.value)),i=String(t?.value??"").toLowerCase().includes("1080"),r=a?.value,u=r!=null&&String(r).toLowerCase()!=="false"&&String(r).toLowerCase()!=="none"&&r!=="";let m,f;i?(m=.375,f=.05):(m=.125,f=.025);let v=m;return Number.isFinite(l)&&l>0&&(v=m+f*(l-1)),u&&(v+=.075),R(v)},"displayPrice")},Vidu2StartEndToVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(v=>v.name==="model"),t=e.widgets?.find(v=>v.name==="duration"),a=e.widgets?.find(v=>v.name==="resolution");if(!o||!t||!a)return ve(.04,1,{note:"(varies with model, duration & resolution)"});const l=String(o.value).toLowerCase(),s=parseFloat(String(t.value)),r=String(a.value).toLowerCase().includes("1080");let u,m;if(l.includes("q2-pro-fast"))u=r?.08:.04,m=r?.02:.01;else if(l.includes("q2-pro"))u=r?.275:.075,m=r?.075:.05;else if(l.includes("q2-turbo"))if(r)u=.175,m=.05;else{if(!Number.isFinite(s)||s<=1)return R(.04);if(s<=2)return R(.05);const v=.05+.05*(s-2);return R(v)}else return ve(.04,1,{note:"(varies with model, duration & resolution)"});if(!Number.isFinite(s)||s<=0)return R(u);const f=u+m*(s-1);return R(f)},"displayPrice")}},G0=n(()=>({getNodeDisplayPrice:n(a=>{if(!a.constructor?.nodeData?.api_node)return"";const l=a.constructor.nodeData.name,s=Ga[l];return s?typeof s.displayPrice=="function"?E0(s.displayPrice,a,""):s.displayPrice:""},"getNodeDisplayPrice"),getNodePricingConfig:n(a=>Ga[a.constructor.nodeData?.name??""],"getNodePricingConfig"),getRelevantWidgetNames:n(a=>({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"],MeshyImageToModelNode:["should_texture"],MeshyMultiImageToModelNode:["should_texture"],GeminiNode:["model"],GeminiImage2Node:["resolution"],OpenAIChatNode:["model"],ByteDanceImageNode:["model"],ByteDanceImageEditNode:["model"],ByteDanceSeedreamNode:["model","sequential_image_generation","max_images"],ByteDanceTextToVideoNode:["model","duration","resolution","generate_audio"],ByteDanceImageToVideoNode:["model","duration","resolution","generate_audio"],ByteDanceFirstLastFrameNode:["model","duration","resolution","generate_audio"],ByteDanceImageReferenceNode:["model","duration","resolution"],WanTextToVideoApi:["duration","size"],WanImageToVideoApi:["duration","resolution"],WanReferenceVideoApi:["duration","size"],LtxvApiTextToVideo:["model","duration","resolution"],LtxvApiImageToVideo:["model","duration","resolution"],Vidu2TextToVideoNode:["model","duration","resolution"],Vidu2ImageToVideoNode:["model","duration","resolution"],Vidu2ReferenceVideoNode:["audio","duration","resolution"],Vidu2StartEndToVideoNode:["model","duration","resolution"]})[a]||[],"getRelevantWidgetNames")}),"useNodePricing"),ms=new Image;ms.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 H0=n(()=>{function e(s){if(!s.isSubgraphNode())return;s.badges=s.badges.filter(r=>!t(r));const i=o(s.subgraph);i.length>1?s.badges.push(l("Partner Nodes x "+i.length)):s.badges.push(...i)}n(e,"updateSubgraphCredits");function o(s,i=new Set){if(i.has(s.id))return[];i.add(s.id);const r=[];for(const u of s.nodes)r.push(...u.isSubgraphNode()?o(u.subgraph,i):u.badges.filter(m=>t(m)));return r}n(o,"collectCreditsBadges");function t(s){return(typeof s=="function"?s():s).icon?.image===ms}n(t,"isCreditsBadge");const a=St();function l(s){const i=a.completedActivePalette.light_theme;return new Ws({text:s,iconOptions:{image:ms,size:8},fgColor:a.completedActivePalette.colors.litegraph_base.BADGE_FG_COLOR,bgColor:i?Ut("#8D6932",{lightness:.5}):"#8D6932"})}return n(l,"getCreditsBadge"),{getCreditsBadge:l,updateSubgraphCredits:e}},"usePriceBadge"),j0=n((e,o={})=>{const{widgetNames:t,triggerCanvasRedraw:a=!1}=o,l=L({});if(e.widgets){const s=t?e.widgets.filter(r=>t.includes(r.name)):e.widgets,i={};if(s.forEach(r=>{i[r.name]=r.value}),l.value=i,s.forEach(r=>{r.callback=fo(r.callback,()=>{l.value={...l.value,[r.name]:r.value},a&&e.graph?.setDirtyCanvas(!0,!0)})}),t&&t.length>s.length){const r=t.map(u=>s.some(m=>m.name==u)?-1:e.inputs.findIndex(m=>m.name==u)).filter(u=>u>=0);e.onConnectionsChange=fo(e.onConnectionsChange,(u,m,f)=>{r.includes(m)&&(l.value={...l.value,[r[m]]:f},a&&e.graph?.setDirtyCanvas(!0,!0))})}}return s=>Ei(l,s)},"useComputedWithWidgetWatch"),q0=n(()=>{const e=ie(),o=Ms(),t=St(),a=H0(),l=w(()=>e.get("Comfy.NodeBadge.NodeSourceBadgeMode")),s=w(()=>e.get("Comfy.NodeBadge.NodeIdBadgeMode")),i=w(()=>e.get("Comfy.NodeBadge.NodeLifeCycleBadgeMode")),r=w(()=>e.get("Comfy.NodeBadge.ShowApiPricing"));le([l,s,i,r],()=>{J.canvas?.setDirty(!0,!0)});const u=It();function m(f,v){return!(v===bt.None||f?.isCoreNode&&v===bt.HideBuiltIn)}n(m,"badgeTextVisible"),Re(()=>{const f=G0();o.registerExtension({name:"Comfy.NodeBadge",nodeCreated(v){v.badgePosition=cu.TopRight;const g=w(()=>{const y=u.fromLGraphNode(v);return new Ws({text:Ri.truncate([m(y,s.value)?`#${v.id}`:"",m(y,i.value)?y?.nodeLifeCycleBadgeText??"":"",m(y,l.value)?y?.nodeSource?.badgeText??"":""].filter(k=>k.length>0).join(" "),{length:31}),fgColor:t.completedActivePalette.colors.litegraph_base.BADGE_FG_COLOR,bgColor:t.completedActivePalette.colors.litegraph_base.BADGE_BG_COLOR})});if(v.badges.push(()=>g.value),v.constructor.nodeData?.api_node&&r.value){const k=typeof f.getNodePricingConfig(v)?.displayPrice=="function";let C;const h=n(()=>{const b=f.getNodeDisplayPrice(v);return a.getCreditsBadge(b)},"createBadge");if(k){const b=f.getRelevantWidgetNames(v.constructor.nodeData?.name);C=j0(v,{widgetNames:b,triggerCanvasRedraw:!0})(h)}else C=w(h);v.badges.push(()=>C.value)}},init(){J.canvas.canvas.addEventListener("litegraph:set-graph",()=>{for(const v of J.canvas.graph?.nodes??[])a.updateSubgraphCredits(v)}),J.canvas.canvas.addEventListener("subgraph-converted",v=>a.updateSubgraphCredits(v.detail.subgraphNode))},afterConfigureGraph(){for(const v of J.canvas.graph?.nodes??[])a.updateSubgraphCredits(v)}})})},"useNodeBadge"),K0=n(e=>{const o=Ns(),t=Uo(),a=it();Wl(()=>e.value,{getDropEffect:n(l=>l.source.data.type==="tree-explorer-node"?"copy":"move","getDropEffect"),onDrop:n(async l=>{const s=l.location.current.input,i=l.source.data;if(i.type==="tree-explorer-node"){const r=i.data,m=zl().clientPosToCanvasPos([s.clientX,s.clientY]);if(r.data instanceof pu){const f=r.data,v=[...m];v[1]+=ye.NODE_TITLE_HEIGHT,t.addNodeOnGraph(f,{pos:v})}else if(r.data instanceof fu){const f=r.data,v=m,g=J.canvas.graph?.getNodeOnPos(v[0],v[1]);let y=null,k=null;if(g){const C=o.getAllNodeProviders(f.directory);for(const h of C)h.nodeDef.name===g.comfyClass&&(k=g,y=h)}if(!k){const C=o.getNodeProvider(f.directory);C&&(k=t.addNodeOnGraph(C.nodeDef,{pos:v}),y=C)}if(k){const C=k.widgets?.find(h=>h.name===y?.key);C&&(C.value=f.file_name)}}else if(r.data instanceof Sl){const f=r.data;await a.insertWorkflow(f,{position:m})}}},"onDrop")})},"useCanvasDrop"),Q0=n(()=>{so.install(Je.prototype,"getCanvasMenuOptions");const{getCanvasMenuOptions:e}=Je.prototype,o=n(function(...r){const u=e.apply(this,r),m=J.collectCanvasMenuItems(this);for(const v of m)u.push(v);const f=so.extractLegacyItems("getCanvasMenuOptions",this,...r);for(const v of f)u.push(v);for(const v of u)v?.content&&(v.content=Le(`contextMenu.${v.content}`,v.content));return u},"getCanvasCenterMenuOptions");Je.prototype.getCanvasMenuOptions=o,so.registerWrapper("getCanvasMenuOptions",o,e,Je.prototype),so.install(Je.prototype,"getNodeMenuOptions");const t=Je.prototype.getNodeMenuOptions,a=n(function(...r){const u=t.apply(this,r),m=r[0],f=J.collectNodeMenuItems(m);for(const g of f)u.push(g);const v=so.extractLegacyItems("getNodeMenuOptions",this,...r);for(const g of v)u.push(g);return u},"getNodeMenuOptionsWithExtensions");Je.prototype.getNodeMenuOptions=a,so.registerWrapper("getNodeMenuOptions",a,t,Je.prototype);function l(r,u){if(!r)return;const m=/Convert (.*) to input/,f=/Convert (.*) to widget/,v=Le("contextMenu.Convert ","Convert "),g=Le("contextMenu. to input"," to input"),y=Le("contextMenu. to widget"," to widget");for(const k of r){if(typeof k=="string"||(l(k?.submenu?.options,u),!k?.content))continue;mu(`contextMenu.${k.content}`)&&(k.content=Le(`contextMenu.${k.content}`,k.content));const C=u.extra||u.parentMenu?.options?.extra,h=k.content?.match(m);if(h){let T=h[1];C?.inputs?.find($=>{if($.name!=T)return!1;T=$.label?$.label:$.name}),C?.widgets?.find($=>{if($.name!=T)return!1;T=$.label?$.label:$.name}),k.content=v+T+g;continue}const b=k.content?.match(f);if(b){let T=b[1];C?.inputs?.find($=>{if($.name!=T)return!1;T=$.label?$.label:$.name}),C?.widgets?.find($=>{if($.name!=T)return!1;T=$.label?$.label:$.name}),k.content=v+T+y;continue}}}n(l,"translateMenus");const s=ye.ContextMenu;function i(r,u){return u.title&&(u.title=Le(`nodeDefs.${He(u.title)}.display_name`,u.title)),l(r,u),new s(r,u)}n(i,"ContextMenu"),ye.ContextMenu=i,ye.ContextMenu.prototype=s.prototype},"useContextMenuTranslation"),Y0=['<meta charset="utf-8"><div><span data-metadata="','"></span></div><span style="white-space:pre-wrap;">Text</span>'],J0=n(()=>{const e=he();Ee(document,"copy",o=>{if(gu(o.target))return;const t=e.canvas;if(t?.selectedItems){const a=t.copyToClipboard(),l=btoa(String.fromCharCode(...Array.from(new TextEncoder().encode(a))));return o.clipboardData?.setData("text/html",Y0.join(l)),o.preventDefault(),o.stopImmediatePropagation(),!1}})},"useCopy"),X0=n(()=>{window.LiteGraph=ye,window.LGraph=vu,window.LLink=hu,window.LGraphNode=Ct,window.LGraphGroup=Ht,window.DragAndScale=yu,window.LGraphCanvas=Je,window.ContextMenu=bu,window.LGraphBadge=Ws},"useGlobalLitegraph"),Z0=n(()=>{const e=ie(),o=he();xe(()=>{const t=e.get("Comfy.Graph.CanvasInfo");o.canvas&&(o.canvas.show_info=t,o.canvas.draw(!1,!0))}),xe(()=>{const t=e.get("Comfy.Graph.ZoomSpeed");o.canvas&&(o.canvas.zoom_speed=t)}),xe(()=>{ye.snaps_for_comfy=e.get("Comfy.Node.AutoSnapLinkToSlot")}),xe(()=>{ye.snap_highlights_node=e.get("Comfy.Node.SnapHighlightsNode")}),xe(()=>{Ct.keepAllLinksOnBypass=e.get("Comfy.Node.BypassAllLinksOnDelete")}),xe(()=>{ye.middle_click_slot_add_default_node=e.get("Comfy.Node.MiddleClickRerouteNode")}),xe(()=>{const t=e.get("Comfy.LinkRenderMode");o.canvas&&(o.canvas.links_render_mode=t,o.canvas.setDirty(!1,!0))}),xe(()=>{const t=e.get("LiteGraph.Canvas.MinFontSizeForLOD");o.canvas&&(o.canvas.min_font_size_for_lod=t,o.canvas.setDirty(!0,!0))}),xe(()=>{const t=e.get("Comfy.Graph.LinkMarkers"),{canvas:a}=o;a&&(a.linkMarkerShape=t,a.setDirty(!1,!0))}),xe(()=>{const t=e.get("LiteGraph.Canvas.MaximumFps"),{canvas:a}=o;a&&(a.maximumFps=t)}),xe(()=>{const t=e.get("Comfy.Graph.CtrlShiftZoom"),{canvas:a}=o;a&&(a.dragZoomEnabled=t)}),xe(()=>{const t=e.get("Comfy.Graph.LiveSelection"),{canvas:a}=o;a&&(a.liveSelection=t)}),xe(()=>{sn.doubleClickTime=e.get("Comfy.Pointer.DoubleClickTime")}),xe(()=>{sn.bufferTime=e.get("Comfy.Pointer.ClickBufferTime")}),xe(()=>{sn.maxClickDrift=e.get("Comfy.Pointer.ClickDrift")}),xe(()=>{ye.CANVAS_GRID_SIZE=e.get("Comfy.SnapToGrid.GridSize")}),xe(()=>{ye.alwaysSnapToGrid=e.get("pysssss.SnapToGrid")}),xe(()=>{ye.context_menu_scaling=e.get("LiteGraph.ContextMenu.Scaling")}),xe(()=>{ye.Reroute.maxSplineOffset=e.get("LiteGraph.Reroute.SplineOffset")}),xe(()=>{const t=e.get("Comfy.Canvas.NavigationMode");ye.canvasNavigationMode=t,ye.macTrackpadGestures=t==="standard"}),xe(()=>{const t=e.get("Comfy.Canvas.LeftMouseClickBehavior");ye.leftMouseClickBehavior=t}),xe(()=>{const t=e.get("Comfy.Canvas.MouseWheelScroll");ye.mouseWheelScroll=t}),xe(()=>{ye.saveViewportWithGraph=e.get("Comfy.EnableWorkflowViewRestore")})},"useLitegraphSettings"),e1=[{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($t),defaultValue:$t.CONTEXT_MENU,defaultsByInstallVersion:{"1.24.1":$t.SEARCH_BOX}},{id:"Comfy.LinkRelease.ActionShift",category:["LiteGraph","LinkRelease","ActionShift"],name:"Action on link release (Shift)",type:"combo",options:Object.values($t),defaultValue:$t.SEARCH_BOX,defaultsByInstallVersion:{"1.24.1":$t.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)"},{value:"fa",text:"فارسی"}],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(bt),defaultValue:bt.HideBuiltIn},{id:"Comfy.NodeBadge.NodeIdBadgeMode",category:["LiteGraph","Node","NodeIdBadgeMode"],name:"Node ID badge mode",type:"combo",options:[bt.None,bt.ShowAll],defaultValue:bt.None},{id:"Comfy.NodeBadge.NodeLifeCycleBadgeMode",category:["LiteGraph","Node","NodeLifeCycleBadgeMode"],name:"Node life cycle badge mode",type:"combo",options:[bt.None,bt.ShowAll],defaultValue:bt.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.UI.TabBarLayout",category:["Appearance","General"],name:"Tab Bar Layout",type:"combo",options:["Default","Integrated"],tooltip:'Controls the layout of the tab bar. "Integrated" moves Help and User controls into the tab bar area.',defaultValue:"Default"},{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:ye.STRAIGHT_LINK,text:"Straight"},{value:ye.LINEAR_LINK,text:"Linear"},{value:ye.SPLINE_LINK,text:"Spline"},{value:ye.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:Gt.Circle,type:"combo",options:[{value:Gt.None,text:"None"},{value:Gt.Circle,text:"Circle"},{value:Gt.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).
|
|
11
|
-
|
|
12
|
-
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.
|
|
13
|
-
|
|
14
|
-
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:ye.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.Queue.History.Expanded",name:"Queue history expanded",type:"hidden",defaultValue:!1,versionAdded:"1.37.0"},{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>=vo.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.RightSidePanel.IsOpen",name:"Right side panel open state",type:"hidden",defaultValue:!1,versionAdded:"1.37.0"},{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 t1(){const e=Ae(),o=ie(),t=it(),a=w(()=>o.get("Comfy.Workflow.AutoSave")),l=w(()=>o.get("Comfy.Workflow.AutoSaveDelay"));let s=null,i=!1,r=!1;const u=n(()=>{if(s&&(clearTimeout(s),s=null),a.value==="after delay"){if(i){r=!0;return}const f=l.value;s=setTimeout(async()=>{const v=e.activeWorkflow;if(v?.isModified&&v.isPersisted)try{i=!0,await t.saveWorkflow(v)}catch(g){console.error("Auto save failed:",g)}finally{i=!1,r&&(r=!1,u())}},f)}},"scheduleAutoSave");le(a,f=>{s&&(clearTimeout(s),s=null),f==="after delay"&&e.activeWorkflow?.isModified&&u()},{immediate:!0});const m=n(()=>{u()},"onGraphChanged");Ie.addEventListener("graphChanged",m),xt(()=>{s&&(clearTimeout(s),s=null),Ie.removeEventListener("graphChanged",m)})}n(t1,"useWorkflowAutoSave");function o1(){const e=ml(),o=gl(),{t}=de(),a=Qt(),l=ii(),s=he(),i=Bl.TEMPLATE,r=["linear"],u=n(g=>/^[a-zA-Z0-9_.-]+$/.test(g),"isValidParameter"),m=n(g=>r.includes(g),"isSupportedMode"),f=n(()=>{const g={...e.query};delete g.template,delete g.source,delete g.mode,o.replace({query:g})},"cleanupUrlParams");return{loadTemplateFromUrl:n(async()=>{const g=e.query.template;if(!g||typeof g!="string")return;if(!u(g)){console.warn(`[useTemplateUrlLoader] Invalid template parameter format: ${g}`);return}const y=e.query.source||"default";if(!u(y)){console.warn(`[useTemplateUrlLoader] Invalid source parameter format: ${y}`);return}const k=e.query.mode;if(k&&(typeof k!="string"||!u(k))){console.warn(`[useTemplateUrlLoader] Invalid mode parameter format: ${k}`);return}k&&!m(k)&&console.warn(`[useTemplateUrlLoader] Unsupported mode parameter: ${k}. Supported modes: ${r.join(", ")}`);try{await l.loadTemplates(),await l.loadWorkflowTemplate(g,y)?k==="linear"&&(s.linearMode=!0):a.add({severity:"error",summary:t("g.error"),detail:t("templateWorkflows.error.templateNotFound",{templateName:g}),life:3e3})}catch(C){console.error("[useTemplateUrlLoader] Failed to load template from URL:",C),a.add({severity:"error",summary:t("g.error"),detail:t("g.errorLoadingTemplate"),life:3e3})}finally{f(),wu(i)}},"loadTemplateFromUrl")}}n(o1,"useTemplateUrlLoader");function n1(){const e=Ae(),o=ie(),t=ml(),a=gl(),l=o1(),s=Bl.TEMPLATE,i=n(async()=>{ku(s);const I=Cu(s,t.query);return I&&await a.replace({query:I}),I??t.query},"ensureTemplateQueryFromIntent"),r=w(()=>o.get("Comfy.Workflow.Persist")),u=n(()=>{if(!r.value)return;const I=JSON.stringify(J.rootGraph.serialize());try{localStorage.setItem("workflow",I),Ie.clientId&&sessionStorage.setItem(`workflow:${Ie.clientId}`,I)}catch(S){const x=Object.keys(sessionStorage).filter(N=>N.startsWith("workflow:")||N==="workflow");throw console.error("QuotaExceededError details:",{workflowSizeKB:Math.round(I.length/1024),totalStorageItems:Object.keys(sessionStorage).length,ourWorkflowKeys:x.length,ourWorkflowSizes:x.map(N=>({key:N,sizeKB:Math.round(sessionStorage[N].length/1024)})),error:S instanceof Error?S.message:String(S)}),S}},"persistCurrentWorkflow"),m=n(async(I,S)=>{if(!I)return!1;const x=JSON.parse(I);return await J.loadGraphData(x,!0,!0,S),!0},"loadWorkflowFromStorage"),f=n(async()=>{const I=An("Comfy.PreviousWorkflow"),S=Ie.initialClientId??Ie.clientId;if(S){const N=sessionStorage.getItem(`workflow:${S}`);if(await m(N,I))return!0}const x=localStorage.getItem("workflow");return await m(x,I)},"loadPreviousWorkflowFromStorage"),v=n(async()=>{o.get("Comfy.TutorialCompleted")?await J.loadGraphData():(await o.set("Comfy.TutorialCompleted",!0),await it().loadBlankWorkflow(),await Te().execute("Comfy.BrowseTemplates"))},"loadDefaultWorkflow"),g=n(async()=>{if(r.value)try{await f()||await v()}catch(I){console.error("Error loading previous workflow",I),await v()}},"initializeWorkflow"),y=n(async()=>{const I=await i();I.template&&typeof I.template=="string"&&await l.loadTemplateFromUrl()},"loadTemplateFromUrlIfPresent");le(()=>e.activeWorkflow?.key,I=>{I&&(Ln("Comfy.PreviousWorkflow",I),u())}),Ie.addEventListener("graphChanged",u),cl(()=>{Ie.removeEventListener("graphChanged",u)});const k=w(()=>e.openWorkflows),C=w(()=>e.activeWorkflow),h=w(()=>{if(!k.value||!C.value)return{paths:[],activeIndex:-1};const I=k.value.filter(x=>x?.isPersisted).map(x=>x.path),S=k.value.findIndex(x=>x.path===C.value?.path);return{paths:I,activeIndex:S}}),b=JSON.parse(An("Comfy.OpenWorkflowsPaths")||"[]"),T=JSON.parse(An("Comfy.ActiveWorkflowIndex")||"-1");return le(h,({paths:I,activeIndex:S})=>{r.value&&(Ln("Comfy.OpenWorkflowsPaths",JSON.stringify(I)),Ln("Comfy.ActiveWorkflowIndex",JSON.stringify(S)))}),{initializeWorkflow:g,loadTemplateFromUrlIfPresent:y,restoreWorkflowTabsState:n(()=>{if(!r.value)return;b?.length>0&&T>=0&&e.openWorkflowsInBackground({left:b.slice(0,T),right:b.slice(T)})},"restoreWorkflowTabsState")}}n(n1,"useWorkflowPersistence");function s1(e,o={}){const{settleDelay:t=256,passive:a=!0}=o,l=L(!1),s=n(()=>{l.value=!0},"markTransformActive"),i=Vi(()=>{l.value=!1},t);return Ee(e,"wheel",n(()=>{s(),i()},"handleWheel"),{capture:!0,passive:a}),{isTransforming:l}}n(s1,"useTransformSettling");function a1(){const e=ul({x:0,y:0,z:1}),o=w(()=>({transform:`scale(${e.z}) translate(${e.x}px, ${e.y}px)`,transformOrigin:"0 0"}));function t(g){!g||!g.ds||(e.x=g.ds.offset[0],e.y=g.ds.offset[1],e.z=g.ds.scale||1)}n(t,"syncWithCanvas");function a(g){return{x:(g.x+e.x)*e.z,y:(g.y+e.y)*e.z}}n(a,"canvasToScreen");const l=n(g=>({x:g.x/e.z-e.x,y:g.y/e.z-e.y}),"screenToCanvas");function s(g,y){const k=a({x:g[0],y:g[1]}),C=y[0]*e.z,h=y[1]*e.z;return new DOMRect(k.x,k.y,C,h)}n(s,"getNodeScreenBounds");function i(g){return e.z<.1?Math.min(g*5,2):e.z>3?Math.max(g*.5,.05):g}n(i,"calculateAdjustedMargin");function r(g){return Math.max(g[0],g[1])*e.z<4}n(r,"isNodeTooSmall");function u(g,y){const k=g.width*y,C=g.height*y;return{left:-k,right:g.width+k,top:-C,bottom:g.height+C}}n(u,"getExpandedViewportBounds");function m(g,y,k){const C=g.x+y[0]*e.z,h=g.y+y[1]*e.z;return!(C<k.left||g.x>k.right||h<k.top||g.y>k.bottom)}n(m,"testViewportIntersection");function f(g,y,k,C=.2){if(r(y))return!1;const h=a({x:g[0],y:g[1]}),b=i(C),T=u(k,b);return m(h,y,T)}n(f,"isNodeInViewport");function v(g,y=.2){const k=g.width*y,C=g.height*y,h=l({x:-k,y:-C}),b=l({x:g.width+k,y:g.height+C});return{x:h.x,y:h.y,width:b.x-h.x,height:b.y-h.y}}return n(v,"getViewportBounds"),{camera:Xn(e),transformStyle:o,syncWithCanvas:t,canvasToScreen:a,screenToCanvas:l,getNodeScreenBounds:s,isNodeInViewport:f,getViewportBounds:v}}n(a1,"useTransformStateIndividual");const ta=Sn(a1),l1=j({__name:"TransformPane",props:{canvas:{}},setup(e){const o=e,{transformStyle:t,syncWithCanvas:a}=ta(),l=w(()=>o.canvas?.canvas),{isTransforming:s}=s1(l,{settleDelay:16});return ho(()=>{o.canvas&&a(o.canvas)},{immediate:!0}),(i,r)=>(c(),_("div",{"data-testid":"transform-pane",class:q(d(te)("absolute inset-0 w-full h-full pointer-events-none",d(s)?"transform-pane--interacting":"will-change-auto")),style:be(d(t))},[ge(i.$slots,"default",{},void 0,!0)],6))}}),i1=Ve(l1,[["__scopeId","data-v-4d46eee6"]]),r1={class:"flex items-center gap-2"},u1={for:"node-colors"},d1={class:"flex items-center gap-2"},c1={for:"show-links"},p1={class:"flex items-center gap-2"},f1={for:"show-groups"},m1={class:"flex items-center gap-2"},g1={for:"render-bypass"},v1={class:"flex items-center gap-2"},h1={for:"render-error"},y1=j({__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)=>(c(),_("div",{class:"minimap-panel mr-2 flex flex-col gap-2 bg-comfy-menu-bg p-3 text-sm shadow-interface",style:be(o.panelStyles)},[p("div",r1,[E(d(No),{"input-id":"node-colors",name:"node-colors","model-value":o.nodeColors,binary:"","onUpdate:modelValue":t[0]||(t[0]=a=>o.$emit("updateOption","Comfy.Minimap.NodeColors",a))},null,8,["model-value"]),t[5]||(t[5]=p("i",{class:"icon-[lucide--palette]"},null,-1)),p("label",u1,V(o.$t("minimap.nodeColors")),1)]),p("div",d1,[E(d(No),{"input-id":"show-links",name:"show-links","model-value":o.showLinks,binary:"","onUpdate:modelValue":t[1]||(t[1]=a=>o.$emit("updateOption","Comfy.Minimap.ShowLinks",a))},null,8,["model-value"]),t[6]||(t[6]=p("i",{class:"icon-[lucide--route]"},null,-1)),p("label",c1,V(o.$t("minimap.showLinks")),1)]),p("div",p1,[E(d(No),{"input-id":"show-groups",name:"show-groups","model-value":o.showGroups,binary:"","onUpdate:modelValue":t[2]||(t[2]=a=>o.$emit("updateOption","Comfy.Minimap.ShowGroups",a))},null,8,["model-value"]),t[7]||(t[7]=p("i",{class:"icon-[lucide--frame]"},null,-1)),p("label",f1,V(o.$t("minimap.showGroups")),1)]),p("div",m1,[E(d(No),{"input-id":"render-bypass",name:"render-bypass","model-value":o.renderBypass,binary:"","onUpdate:modelValue":t[3]||(t[3]=a=>o.$emit("updateOption","Comfy.Minimap.RenderBypassState",a))},null,8,["model-value"]),t[8]||(t[8]=p("i",{class:"icon-[lucide--circle-slash-2]"},null,-1)),p("label",g1,V(o.$t("minimap.renderBypassState")),1)]),p("div",v1,[E(d(No),{"input-id":"render-error",name:"render-error","model-value":o.renderError,binary:"","onUpdate:modelValue":t[4]||(t[4]=a=>o.$emit("updateOption","Comfy.Minimap.RenderErrorState",a))},null,8,["model-value"]),t[9]||(t[9]=p("i",{class:"icon-[lucide--message-circle-warning]"},null,-1)),p("label",h1,V(o.$t("minimap.renderErrorState")),1)])],4))}}),b1=["width","height"],w1=j({__name:"MiniMap",setup(e){const o=Te(),t=L(),a=Qe("containerRef"),l=Qe("canvasRef"),{initialized:s,visible:i,containerStyles:r,viewportStyles:u,width:m,height:f,panelStyles:v,nodeColors:g,showLinks:y,showGroups:k,renderBypass:C,renderError:h,updateOption:b,destroy:T,handlePointerDown:$,handlePointerMove:I,handlePointerUp:S,handlePointerCancel:x,handleWheel:N,setMinimapRef:P}=Gs({containerRefMaybe:a,canvasRefMaybe:l}),D=L(!1),W=n(()=>{D.value=!D.value},"toggleOptionsPanel");return Re(()=>{t.value&&P(t.value)}),xt(()=>{T()}),(F,z)=>d(i)&&d(s)?(c(),_("div",{key:0,ref_key:"minimapRef",ref:t,class:"minimap-main-container absolute right-0 bottom-[54px] z-1000 flex"},[D.value?(c(),O(y1,{key:0,"panel-styles":d(v),"node-colors":d(g),"show-links":d(y),"show-groups":d(k),"render-bypass":d(C),"render-error":d(h),onUpdateOption:d(b)},null,8,["panel-styles","node-colors","show-links","show-groups","render-bypass","render-error","onUpdateOption"])):A("",!0),p("div",{ref_key:"containerRef",ref:a,class:"litegraph-minimap relative border border-interface-stroke bg-comfy-menu-bg shadow-interface",style:be(d(r))},[E(Y,{class:"absolute top-0 left-0 z-10",size:"icon",variant:"muted-textonly","aria-label":F.$t("g.settings"),onClick:ke(W,["stop"])},{default:M(()=>z[7]||(z[7]=[p("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["aria-label"]),E(Y,{class:"absolute top-0 right-0 z-10",size:"icon",variant:"muted-textonly","aria-label":F.$t("g.close"),"data-testid":"close-minmap-button",onClick:z[0]||(z[0]=ke(()=>d(o).execute("Comfy.Canvas.ToggleMinimap"),["stop"]))},{default:M(()=>z[8]||(z[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:be({width:d(r).width})},null,4),p("canvas",{ref_key:"canvasRef",ref:l,width:d(m),height:d(f),class:"minimap-canvas"},null,8,b1),p("div",{class:"minimap-viewport",style:be(d(u))},null,4),p("div",{class:"absolute inset-0 touch-none",onPointerdown:z[1]||(z[1]=(...U)=>d($)&&d($)(...U)),onPointermove:z[2]||(z[2]=(...U)=>d(I)&&d(I)(...U)),onPointerup:z[3]||(z[3]=(...U)=>d(S)&&d(S)(...U)),onPointerleave:z[4]||(z[4]=(...U)=>d(S)&&d(S)(...U)),onPointercancel:z[5]||(z[5]=(...U)=>d(x)&&d(x)(...U)),onWheel:z[6]||(z[6]=(...U)=>d(N)&&d(N)(...U))},null,32)],4)],512)):A("",!0)}}),k1=Ve(w1,[["__scopeId","data-v-66f11255"]]);function gs(e){return e.ctrlKey||e.metaKey||e.shiftKey}n(gs,"isMultiSelectKey");function C1(){const e=he(),{nodeManager:o}=Js(),{bringNodeToFront:t}=Fl(),{shouldHandleNodePointerEvents:a}=ko();function l(m,f){if(!a.value||!e.canvas||!o.value)return;const v=o.value.getNode(f);if(!v)return;const g=gs(m),y=e.selectedItems.length,k=!g&&v.selected&&y>1;g?v.selected||e.canvas.select(v):k||(e.canvas.deselectAll(),e.canvas.select(v)),v.flags?.pinned||t(f),e.updateSelectedItems()}n(l,"handleNodeSelect");function s(m,f){if(!a.value||!o.value)return;const v=o.value.getNode(m);if(!v)return;(v.flags?.collapsed??!1)!==f&&v.collapse()}n(s,"handleNodeCollapse");function i(m,f){if(!a.value||!o.value)return;const v=o.value.getNode(m);v&&(v.title=f)}n(i,"handleNodeTitleUpdate");function r(m,f){if(!a.value||!e.canvas||!o.value)return;const v=o.value.getNode(f);v&&(m.preventDefault(),v.selected||l(m,f))}n(r,"handleNodeRightClick");function u(m,f){if(!a.value||!e.canvas||!o.value)return;const v=o.value.getNode(m);if(v){if(!f){e.canvas.deselectAll(),e.canvas.select(v),e.updateSelectedItems(),v.flags?.pinned||t(m);return}v.selected?e.canvas.deselect(v):(e.canvas.select(v),v.flags?.pinned||t(m)),e.updateSelectedItems()}}return n(u,"toggleNodeSelectionAfterPointerUp"),{handleNodeSelect:l,handleNodeCollapse:s,handleNodeTitleUpdate:i,handleNodeRightClick:r,toggleNodeSelectionAfterPointerUp:u}}n(C1,"useNodeEventHandlersIndividual");const fi=Sn(C1);function mi(){const e=ie(),o=w(()=>e.get("Comfy.SnapToGrid.GridSize")),t=w(()=>e.get("pysssss.SnapToGrid"));function a(i){return i.shiftKey||t.value}n(a,"shouldSnap");function l(i){const r=o.value;if(!r)return{...i};const u=[i.x,i.y];return ha(u,r)?{x:u[0],y:u[1]}:{...i}}n(l,"applySnapToPosition");function s(i){const r=o.value;if(!r)return{...i};const u=[i.width,i.height];return ha(u,r)?{width:u[0],height:u[1]}:{...i}}return n(s,"applySnapToSize"),{gridSize:o,alwaysSnap:t,shouldSnap:a,applySnapToPosition:l,applySnapToSize:s}}n(mi,"useNodeSnap");function gi(){const e=Ke(!1);let o=null;function t(l){l!==e.value&&(!o&&(o=J.canvas?.canvas??null,!o)||(e.value=l,o.dispatchEvent(new KeyboardEvent(l?"keydown":"keyup",{key:"Shift",shiftKey:l,bubbles:!0}))))}n(t,"syncShiftState");function a(l){t(l.shiftKey);const s=n(u=>{u.key==="Shift"&&t(u.shiftKey)},"handleKeyEvent"),i=Ee(window,"keydown",s,{passive:!0}),r=Ee(window,"keyup",s,{passive:!0});return()=>{i(),r()}}return n(a,"trackShiftKey"),cl(()=>{e.value=!1,o=null}),{trackShiftKey:a}}n(gi,"useShiftKeySync");const vi=Sn(x1);function x1(){const e=In(),{selectedNodeIds:o,selectedItems:t}=Be(he()),a=ta(),{shouldSnap:l,applySnapToPosition:s}=mi(),{trackShiftKey:i}=gi();let r=null,u=null,m=null,f=null,v=null,g=null,y=null;function k(b,T){const $=qe(De.getNodeLayoutRef(T));if(!$)return;const I=$.position??{x:0,y:0};v=i(b),r={...I},u={x:b.clientX,y:b.clientY};const S=qe(o),x=S?.has(T);if(x&&S.size>1){m=new Map;for(const N of S){if(N===T)continue;const P=De.getNodeLayoutRef(N).value;P&&m.set(N,{...P.position})}}else m=null;x?(y=qe(t).filter(Co),g={x:0,y:0}):(y=null,g=null),e.setSource(Lo.Vue)}n(k,"startDrag");function C(b,T){if(!r||!u||f!==null)return;const{target:$,pointerId:I}=b;$ instanceof HTMLElement&&!$.hasPointerCapture(I)&&$.setPointerCapture(I),f=requestAnimationFrame(()=>{if(f=null,!r||!u)return;const S={x:b.clientX-u.x,y:b.clientY-u.y},x=a.screenToCanvas({x:0,y:0}),N=a.screenToCanvas(S),P={x:N.x-x.x,y:N.y-x.y},D={x:r.x+P.x,y:r.y+P.y};if(e.moveNode(T,D),m&&m.size>0)for(const[W,F]of m){const z={x:F.x+P.x,y:F.y+P.y};e.moveNode(W,z)}if(y&&y.length>0&&g){const W={x:P.x-g.x,y:P.y-g.y};for(const F of y)F.move(W.x,W.y,!0)}g=P})}n(C,"handleDrag");function h(b,T){if(l(b)&&T){const $=[],I=qe(De.getNodeLayoutRef(T));if(I){const S=I.position,x=s({...S});(x.x!==S.x||x.y!==S.y)&&$.push({nodeId:T,bounds:{x:x.x,y:x.y,width:I.size.width,height:I.size.height}})}if(m&&m.size>0)for(const S of m.keys()){const x=De.getNodeLayoutRef(S).value;if(x){const N={...x.position},P=s(N);(P.x!==N.x||P.y!==N.y)&&$.push({nodeId:S,bounds:{x:P.x,y:P.y,width:x.size.width,height:x.size.height}})}}$.length>0&&De.batchUpdateNodeBounds($)}r=null,u=null,m=null,y=null,g=null,v?.(),v=null,f!==null&&(cancelAnimationFrame(f),f=null)}return n(h,"endDrag"),{startDrag:k,handleDrag:C,endDrag:h}}n(x1,"useNodeDragIndividual");function S1(e){const{startDrag:o,endDrag:t,handleDrag:a}=vi(),{forwardEventToCanvas:l,shouldHandleNodePointerEvents:s}=ko(),{handleNodeSelect:i,toggleNodeSelectionAfterPointerUp:r}=fi(),{nodeManager:u}=Js(),m=n(x=>xu(x)?(l(x),!0):!1,"forwardMiddlePointerIfNeeded");let f=!1;const v=L({x:0,y:0}),g=3;function y(x){if(m(x)||x.button!==0)return;if(!s.value){l(x);return}const N=qe(e);if(!N){console.warn("LGraphNode: nodeData is null/undefined in handlePointerDown");return}u.value?.getNode(N)?.flags?.pinned||(v.value={x:x.clientX,y:x.clientY},h(x,N))}n(y,"onPointerdown");function k(x){if(m(x)||De.isResizingVueNodes.value)return;const N=qe(e);if(u.value?.getNode(N)?.flags?.pinned)return;const P=gs(x),D=x.buttons&1;if(D&&P&&!De.isDraggingVueNodes.value){De.isDraggingVueNodes.value=!0,i(x,N),h(x,N);return}if(D&&!De.isDraggingVueNodes.value){const W=x.clientX-v.value.x,F=x.clientY-v.value.y;Math.sqrt(W*W+F*F)>g&&(De.isDraggingVueNodes.value=!0,i(x,N))}De.isDraggingVueNodes.value&&a(x,N)}n(k,"onPointermove");function C(){De.isDraggingVueNodes.value=!1}n(C,"cleanupDragState");function h(x,N){try{o(x,N)}finally{f=!0}}n(h,"safeDragStart");function b(x){try{const N=qe(e);t(x,N)}catch(N){console.error("Error during endDrag:",N)}finally{f=!1,C()}}n(b,"safeDragEnd");function T(x){if(m(x))return;if(!s.value){l(x);return}const P=De.isDraggingVueNodes.value;if((f||P)&&(b(x),P)||x.button===2)return;const D=gs(x),W=qe(e);W&&r(W,D)}n(T,"onPointerup");function $(x){De.isDraggingVueNodes.value&&b(x)}n($,"onPointercancel");function I(x){De.isDraggingVueNodes.value&&(x.preventDefault(),C())}return n(I,"onContextmenu"),Oi(()=>{C()}),{pointerHandlers:{onPointerdown:y,onPointermove:k,onPointerup:T,onPointercancel:$,onContextmenu:I}}}n(S1,"useNodePointerInteractions");const kn=new Map([["node",{dataAttribute:"nodeId",updateHandler:n(e=>{const o=e.map(({id:t,bounds:a})=>({nodeId:t,bounds:a}));De.batchUpdateNodeBounds(o)},"updateHandler")}]]),Ha=new ResizeObserver(e=>{if(he().linearMode)return;const o=zl(),t=new Map,a=new Set;for(const l of e){if(!(l.target instanceof HTMLElement))continue;const s=l.target;let i,r;for(const[b,T]of kn){const $=s.dataset[T.dataAttribute];if($){i=b,r=$;break}}if(!i||!r)continue;const u=Array.isArray(l.borderBoxSize)?l.borderBoxSize[0]:{inlineSize:l.contentRect.width,blockSize:l.contentRect.height},m=u.inlineSize,f=u.blockSize,v=s.getBoundingClientRect(),[g,y]=o.clientPosToCanvasPos([v.left,v.top]),k={x:g,y},C={x:k.x,y:k.y+ye.NODE_TITLE_HEIGHT,width:Math.max(0,m),height:Math.max(0,f)};let h=t.get(i);h||(h=[],t.set(i,h)),h.push({id:r,bounds:C}),i==="node"&&r&&a.add(r)}De.setSource(Lo.DOM);for(const[l,s]of t){const i=kn.get(l);i&&s.length&&i.updateHandler(s)}if(a.size>0)for(const l of a)Su(l)});function _1(e,o){const t=qe(e);Re(()=>{const a=la()?.proxy?.$el;if(!(a instanceof HTMLElement)||!t)return;const l=kn.get(o);l&&(a.dataset[l.dataAttribute]=t,Ha.observe(a))}),xt(()=>{const a=la()?.proxy?.$el;if(!(a instanceof HTMLElement))return;const l=kn.get(o);l&&(delete a.dataset[l.dataAttribute],Ha.unobserve(a))})}n(_1,"useVueElementTracking");const T1=n(e=>{const o=w(()=>qe(e)??""),{nodeLocationProgressStates:t,isIdle:a}=Be(dt()),l=w(()=>{const m=o.value;return m?t.value[m]:void 0}),s=w(()=>!a.value&&l.value?.state==="running"),i=w(()=>{const m=l.value;return m&&m.max>0?m.value/m.max:void 0}),r=w(()=>{const m=i.value;return m!==void 0?Math.round(m*100):void 0}),u=w(()=>{const m=l.value;return m?m.state:"idle"});return{executing:s,progress:i,progressPercentage:r,progressState:l,executionState:u}},"useNodeExecutionState");function $1(e){const o=qe(e),t=In(),a=De.getNodeLayoutRef(o);xt(()=>{De.cleanupNodeRef(o)});const l=w(()=>a.value?.position??{x:0,y:0}),s=w(()=>a.value?.size??{width:200,height:100}),i=w(()=>a.value?.zIndex??0);function r(u){t.setSource(Lo.Vue),t.moveNode(o,u)}return n(r,"moveNodeTo"),{position:l,size:s,zIndex:i,moveNodeTo:r}}n($1,"useNodeLayout");const N1=n((e,o)=>{const t=qe(e),a=Ae(),{nodePreviewImages:l}=Be(Go()),s=w(()=>a.nodeIdToNodeLocatorId(t)),i=w(()=>{const f=s.value;if(!f)return;const v=l.value[f];return v?.length?v:void 0}),r=w(()=>!!i.value?.length),u=w(()=>{const f=i.value;return f?.length?f.at(-1):""}),m=w(()=>o?.isCollapsed?!o.isCollapsed.value&&r.value:r.value);return{locatorId:s,previewUrls:i,hasPreview:r,latestPreviewUrl:u,shouldShowPreviewImg:m}},"useNodePreviewState");function I1(e){const o=ta(),t=L(!1),a=L(null),l=L(null),{shouldSnap:s,applySnapToSize:i}=mi(),{trackShiftKey:r}=gi();return{startResize:n(m=>{m.preventDefault(),m.stopPropagation();const f=m.currentTarget;if(!(f instanceof HTMLElement))return;const v=f.closest("[data-node-id]");if(!(v instanceof HTMLElement))return;const g=v.getBoundingClientRect(),y=o.camera.z,k={width:g.width/y,height:g.height/y},C=r(m);f.setPointerCapture(m.pointerId),De.isResizingVueNodes.value=!0,t.value=!0,a.value={x:m.clientX,y:m.clientY},l.value=k;const h=n(I=>{if(!t.value||!a.value||!l.value)return;const S=o.camera.z,x=(I.clientX-a.value.x)/(S||1),N=(I.clientY-a.value.y)/(S||1);let P={width:l.value.width+x,height:l.value.height+N};s(I)&&(P=i(P));const D=f.closest("[data-node-id]");D instanceof HTMLElement&&e({size:P},D)},"handlePointerMove"),b=n(I=>{t.value&&(t.value=!1,De.isResizingVueNodes.value=!1,a.value=null,l.value=null,C(),f.releasePointerCapture(I.pointerId),T(),$())},"handlePointerUp"),T=Ee("pointermove",h),$=Ee("pointerup",b)},"startResize"),isResizing:t}}n(I1,"useNodeResize");const P1={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function M1(e,o){return c(),_("svg",P1,[...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(M1,"render$1");const D1=pl({name:"lucide-image-off",render:M1}),A1={key:0,class:"flex h-full min-h-16 w-full min-w-16 flex-col"},L1={class:"relative h-88 w-full grow overflow-hidden rounded-[5px] bg-node-component-surface"},E1={key:0,class:"text-pure-white flex h-full w-full flex-col items-center justify-center text-center"},R1={class:"text-xs text-smoke-400"},V1=["src","alt"],O1={class:"text-node-component-header-text mt-1 text-center text-xs"},W1=j({__name:"LivePreview",props:{imageUrl:{}},setup(e){const o=e,t=L(null),a=L(!1);le(()=>o.imageUrl,()=>{t.value=null,a.value=!1});const l=n(i=>{if(!i.target||!(i.target instanceof HTMLImageElement))return;const r=i.target;a.value=!1,r.naturalWidth&&r.naturalHeight&&(t.value=`${r.naturalWidth} x ${r.naturalHeight}`)},"handleImageLoad"),s=n(()=>{a.value=!0,t.value=null},"handleImageError");return(i,r)=>{const u=D1;return i.imageUrl?(c(),_("div",A1,[p("div",L1,[a.value?(c(),_("div",E1,[E(u,{class:"mb-1 size-8 text-smoke-500"}),p("p",R1,V(i.$t("g.imageFailedToLoad")),1)])):(c(),_("img",{key:1,src:i.imageUrl,alt:i.$t("g.liveSamplingPreview"),class:"pointer-events-none h-full w-full object-contain object-center",onLoad:l,onError:s},null,40,V1))]),p("div",O1,V(a.value?i.$t("g.errorLoadingImage"):t.value||i.$t("g.calculatingDimensions")),1)])):A("",!0)}}}),z1=["aria-label","aria-busy"],B1={key:0,role:"alert",class:"flex size-full flex-col items-center justify-center bg-muted-background text-center text-base-foreground py-8"},F1={class:"text-sm text-base-foreground"},U1={class:"mt-1 text-xs text-base-foreground"},G1=["src"],H1={key:3,class:"actions absolute top-2 right-2 flex gap-2.5"},j1=["title","aria-label"],q1=["title","aria-label"],K1={key:4,class:"absolute right-2 bottom-2 left-2 flex justify-center gap-1"},Q1=["aria-label","onClick"],Y1={class:"mt-2 text-center text-xs text-muted-foreground"},J1={key:0,class:"text-red-400"},X1={key:1,class:"text-smoke-400"},Z1={key:2},ja="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",ek=j({__name:"VideoPreview",props:{imageUrls:{},nodeId:{}},setup(e){const o=e,{t}=de(),a=Go(),l=L(0),s=L(!1),i=L(!1),r=L(null),u=L(!1),m=L(!1),f=L(),v=w(()=>o.imageUrls[l.value]),g=w(()=>o.imageUrls.length>1);le(()=>o.imageUrls,D=>{l.value>=D.length&&(l.value=0),r.value=null,u.value=!1,m.value=D.length>0},{deep:!0,immediate:!0});const y=n(D=>{if(!D.target||!(D.target instanceof HTMLVideoElement))return;const W=D.target;m.value=!1,u.value=!1,W.videoWidth&&W.videoHeight&&(r.value=`${W.videoWidth} x ${W.videoHeight}`)},"handleVideoLoad"),k=n(()=>{m.value=!1,u.value=!0,r.value=null},"handleVideoError"),C=n(()=>{try{Ao(v.value)}catch{Qt().add({severity:"error",summary:"Error",detail:t("g.failedToDownloadVideo"),life:3e3,group:"video-preview"})}},"handleDownload"),h=n(()=>{o.nodeId&&a.removeNodeOutputs(o.nodeId)},"handleRemove"),b=n(D=>{D>=0&&D<o.imageUrls.length&&(l.value=D,r.value=null,m.value=!0,u.value=!1)},"setCurrentIndex"),T=n(()=>{s.value=!0},"handleMouseEnter"),$=n(()=>{s.value=!1},"handleMouseLeave"),I=n(()=>{i.value=!0},"handleFocusIn"),S=n(D=>{f.value?.contains(D.relatedTarget)||(i.value=!1)},"handleFocusOut"),x=n(D=>["w-2 h-2 rounded-full transition-all duration-200 border-0 cursor-pointer",D===l.value?"bg-white":"bg-white/50 hover:bg-white/80"],"getNavigationDotClass"),N=n(D=>{if(!(o.imageUrls.length<=1))switch(D.key){case"ArrowLeft":D.preventDefault(),b(l.value>0?l.value-1:o.imageUrls.length-1);break;case"ArrowRight":D.preventDefault(),b(l.value<o.imageUrls.length-1?l.value+1:0);break;case"Home":D.preventDefault(),b(0);break;case"End":D.preventDefault(),b(o.imageUrls.length-1);break}},"handleKeyDown"),P=n(D=>{try{return new URL(D).searchParams.get("filename")||"Unknown file"}catch{return"Invalid URL"}},"getVideoFilename");return(D,W)=>D.imageUrls.length>0?(c(),_("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:f,class:"relative h-full w-full grow overflow-hidden rounded-[5px] bg-node-component-surface",tabindex:"0",role:"region","aria-label":D.$t("g.videoPreview"),"aria-busy":m.value,onMouseenter:T,onMouseleave:$,onFocusin:I,onFocusout:S},[u.value?(c(),_("div",B1,[W[0]||(W[0]=p("i",{class:"mb-2 icon-[lucide--video-off] h-12 w-12 text-base-foreground"},null,-1)),p("p",F1,V(D.$t("g.videoFailedToLoad")),1),p("p",U1,V(P(v.value)),1)])):A("",!0),m.value&&!u.value?(c(),O(d(Ts),{key:1,class:"absolute inset-0 size-full","border-radius":"5px",width:"100%",height:"100%"})):A("",!0),u.value?A("",!0):(c(),_("video",{key:2,src:v.value,class:q(d(te)("block size-full object-contain",m.value&&"invisible")),controls:"",loop:"",playsinline:"",onLoadeddata:y,onError:k},null,42,G1)),s.value||i.value?(c(),_("div",H1,[p("button",{class:q(ja),title:D.$t("g.downloadVideo"),"aria-label":D.$t("g.downloadVideo"),onClick:C},W[1]||(W[1]=[p("i",{class:"icon-[lucide--download] h-4 w-4"},null,-1)]),8,j1),p("button",{class:q(ja),title:D.$t("g.removeVideo"),"aria-label":D.$t("g.removeVideo"),onClick:h},W[2]||(W[2]=[p("i",{class:"icon-[lucide--x] h-4 w-4"},null,-1)]),8,q1)])):A("",!0),g.value?(c(),_("div",K1,[(c(!0),_(ee,null,we(D.imageUrls,(F,z)=>(c(),_("button",{key:z,class:q(x(z)),"aria-label":D.$t("g.viewVideoOfTotal",{index:z+1,total:D.imageUrls.length}),onClick:n(U=>b(z),"onClick")},null,10,Q1))),128))])):A("",!0)],40,z1),p("div",Y1,[u.value?(c(),_("span",J1,V(D.$t("g.errorLoadingVideo")),1)):m.value?(c(),_("span",X1,V(D.$t("g.loading"))+"... ",1)):(c(),_("span",Z1,V(r.value||D.$t("g.calculatingDimensions")),1))])],32)):A("",!0)}}),tk={width:"1.2em",height:"1.2em",xmlns:"http://www.w3.org/2000/svg",class:"",viewBox:"0 0 16 16",fill:"none"},ok=["clip-path"],nk=["id"];function sk(e,o){return c(),_("svg",tk,[p("g",{"clip-path":"url(#"+e.idMap.clip0_704_2695+")"},[...o[0]||(o[0]=[Wi('<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,ok),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,nk)])])}n(sk,"render");const ak=pl({name:"comfy-mask",render:sk,setup(){return{idMap:{clip0_704_2695:"uicons-"+n(()=>Math.random().toString(36).substr(2,10),"__randId")()}}}}),lk=["aria-label","aria-busy"],ik={key:0,role:"alert",class:"flex size-full flex-col items-center justify-center bg-muted-background text-center text-base-foreground py-8"},rk={class:"text-sm text-base-foreground"},uk={class:"mt-1 text-xs text-base-foreground"},dk={key:1,class:"size-full"},ck=["src","alt"],pk={key:3,class:"actions absolute top-2 right-2 flex gap-2.5"},fk=["title","aria-label"],mk=["title","aria-label"],gk=["title","aria-label"],vk={class:"pt-2 text-center text-xs text-base-foreground"},hk={key:0,class:"text-red-400"},yk={key:1,class:"text-base-foreground"},bk={key:2},wk={key:0,class:"flex flex-wrap justify-center gap-1 pt-4"},kk=["aria-current","aria-label","onClick"],jn="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",Ck=j({__name:"ImagePreview",props:{imageUrls:{},nodeId:{}},setup(e){const o=e,{t}=de(),a=Te(),l=Go(),s=L(0),i=L(!1),r=L(!1),u=L(null),m=L(!1),f=L(!1),v=L(),g=L(),{start:y,stop:k}=zi(()=>{f.value=!0},250,{immediate:!1}),C=w(()=>o.imageUrls[s.value]),h=w(()=>o.imageUrls.length>1),b=w(()=>`Node output ${s.value+1}`);le(()=>o.imageUrls,G=>{s.value>=G.length&&(s.value=0),u.value=null,m.value=!1,G.length>0&&y()},{deep:!0,immediate:!0});const T=n(G=>{if(!G.target||!(G.target instanceof HTMLImageElement))return;const Q=G.target;k(),f.value=!1,m.value=!1,Q.naturalWidth&&Q.naturalHeight&&(u.value=`${Q.naturalWidth} x ${Q.naturalHeight}`)},"handleImageLoad"),$=n(()=>{k(),f.value=!1,m.value=!0,u.value=null},"handleImageError"),I=n(()=>{if(!o.nodeId||!v.value)return;const G=J.rootGraph?.getNodeById(o.nodeId);G&&(G.imageIndex=s.value,G.imgs=[v.value],J.canvas?.select(G))},"setupNodeForMaskEditor"),S=n(()=>{I(),a.execute("Comfy.MaskEditor.OpenMaskEditor")},"handleEditMask"),x=n(()=>{try{Ao(C.value)}catch{Qt().add({severity:"error",summary:"Error",detail:t("g.failedToDownloadImage"),life:3e3,group:"image-preview"})}},"handleDownload"),N=n(()=>{o.nodeId&&l.removeNodeOutputs(o.nodeId)},"handleRemove"),P=n(G=>{s.value!==G&&G>=0&&G<o.imageUrls.length&&(s.value=G,y(),m.value=!1)},"setCurrentIndex"),D=n(()=>{i.value=!0},"handleMouseEnter"),W=n(()=>{i.value=!1},"handleMouseLeave"),F=n(()=>{r.value=!0},"handleFocusIn"),z=n(G=>{g.value?.contains(G.relatedTarget)||(r.value=!1)},"handleFocusOut"),U=n(G=>["w-2 h-2 rounded-full transition-all duration-200 border-0 cursor-pointer p-0",G===s.value?"bg-base-foreground":"bg-base-foreground/50 hover:bg-base-foreground/80"],"getNavigationDotClass"),H=n(G=>{if(!(o.imageUrls.length<=1))switch(G.key){case"ArrowLeft":G.preventDefault(),P(s.value>0?s.value-1:o.imageUrls.length-1);break;case"ArrowRight":G.preventDefault(),P(s.value<o.imageUrls.length-1?s.value+1:0);break;case"Home":G.preventDefault(),P(0);break;case"End":G.preventDefault(),P(o.imageUrls.length-1);break}},"handleKeyDown"),B=n(G=>{try{return new URL(G).searchParams.get("filename")||"Unknown file"}catch{return"Invalid URL"}},"getImageFilename");return(G,Q)=>{const K=ak;return G.imageUrls.length>0?(c(),_("div",{key:0,class:"image-preview group relative flex size-full min-h-16 min-w-16 flex-col px-2 justify-center",onKeydown:H},[p("div",{ref_key:"imageWrapperEl",ref:g,class:"h-full w-full overflow-hidden rounded-[5px] bg-muted-background relative",tabindex:"0",role:"img","aria-label":G.$t("g.imagePreview"),"aria-busy":f.value,onMouseenter:D,onMouseleave:W,onFocusin:F,onFocusout:z},[m.value?(c(),_("div",ik,[Q[0]||(Q[0]=p("i",{class:"mb-2 icon-[lucide--image-off] h-12 w-12 text-base-foreground"},null,-1)),p("p",rk,V(G.$t("g.imageFailedToLoad")),1),p("p",uk,V(B(C.value)),1)])):A("",!0),f.value&&!m.value?(c(),_("div",dk,[E(d(Ts),{"border-radius":"5px",width:"100%",height:"100%"})])):A("",!0),m.value?A("",!0):(c(),_("img",{key:2,ref_key:"currentImageEl",ref:v,src:C.value,alt:b.value,class:"block size-full object-contain pointer-events-none",onLoad:T,onError:$},null,40,ck)),i.value||r.value?(c(),_("div",pk,[h.value?A("",!0):(c(),_("button",{key:0,class:q(jn),title:G.$t("g.editOrMaskImage"),"aria-label":G.$t("g.editOrMaskImage"),onClick:S},[E(K,{class:"h-4 w-4"})],8,fk)),p("button",{class:q(jn),title:G.$t("g.downloadImage"),"aria-label":G.$t("g.downloadImage"),onClick:x},Q[1]||(Q[1]=[p("i",{class:"icon-[lucide--download] h-4 w-4"},null,-1)]),8,mk),p("button",{class:q(jn),title:G.$t("g.removeImage"),"aria-label":G.$t("g.removeImage"),onClick:N},Q[2]||(Q[2]=[p("i",{class:"icon-[lucide--x] h-4 w-4"},null,-1)]),8,gk)])):A("",!0)],40,lk),p("div",vk,[m.value?(c(),_("span",hk,V(G.$t("g.errorLoadingImage")),1)):f.value?(c(),_("span",yk,V(G.$t("g.loading"))+"... ",1)):(c(),_("span",bk,V(u.value||G.$t("g.calculatingDimensions")),1))]),h.value?(c(),_("div",wk,[(c(!0),_(ee,null,we(G.imageUrls,(X,ne)=>(c(),_("button",{key:ne,class:q(U(ne)),"aria-current":ne===s.value?"true":void 0,"aria-label":G.$t("g.viewImageOfTotal",{index:ne+1,total:G.imageUrls.length}),onClick:n(Z=>P(ne),"onClick")},null,10,kk))),128))])):A("",!0)],32)):A("",!0)}}}),xk={key:0,class:"node-error p-2 text-sm text-red-500"},Sk={key:1,class:"lg-node-content flex grow flex-col"},_k=j({__name:"NodeContent",props:{nodeData:{},media:{}},setup(e){const o=e,t=w(()=>o.media&&o.media.urls.length>0),a=w(()=>o.nodeData?.id?.toString()),l=L(null),{toastErrorHandler:s}=Yt();return fl(i=>(l.value=i.message,s(i),!1)),(i,r)=>l.value?(c(),_("div",xk,V(d(Le)("nodeErrors.content","Node Content Error")),1)):(c(),_("div",Sk,[ge(i.$slots,"default",{},()=>[t.value&&i.media?.type==="video"?(c(),O(ek,{key:0,"image-urls":i.media.urls,"node-id":a.value,class:"mt-2"},null,8,["image-urls","node-id"])):t.value&&i.media?.type==="image"?(c(),O(Ck,{key:1,"image-urls":i.media.urls,"node-id":a.value,class:"mt-2"},null,8,["image-urls","node-id"])):A("",!0)])]))}}),Tk={key:0,class:"node-error p-2 text-sm text-red-500"},$k=["data-node-id"],Nk={key:0,class:"flex flex-col justify-center items-center relative"},Ik={class:"relative mb-1"},Pk=["data-testid"],Mk={key:1,class:"min-h-0 flex-1 flex"},Dk={key:2,class:"min-h-0 flex-1 px-4"},Ak={key:3,class:"flex justify-center px-3"},Lk=["aria-label"],Ek="absolute h-3 w-3 opacity-0 pointer-events-auto focus-visible:outline focus-visible:outline-2 focus-visible:outline-white/40",Rk=225,qa="h-2 bg-primary-500 transition-all duration-300",Vk=j({__name:"LGraphNode",props:{nodeData:{},error:{default:null}},setup(e){const{t:o}=de(),{handleNodeCollapse:t,handleNodeTitleUpdate:a,handleNodeRightClick:l}=fi(),{bringNodeToFront:s}=Fl();_1(()=>e.nodeData.id,"node");const{selectedNodeIds:i}=Be(he()),r=w(()=>i.value.has(e.nodeData.id)),u=w(()=>En(e.nodeData)),{executing:m,progress:f}=T1(u),v=dt(),g=w(()=>v.lastExecutionErrorNodeId===e.nodeData.id),y=w(()=>!!(g.value||e.nodeData.hasErrors||e.error||(v.lastNodeErrors?.[e.nodeData.id]?.errors.length??0)>0)),k=w(()=>e.nodeData.titleMode!==_u.NO_TITLE),C=w(()=>e.nodeData.flags?.collapsed??!1),h=w(()=>e.nodeData.mode===ze.BYPASS),b=w(()=>e.nodeData.mode===ze.NEVER),T=w(()=>{const fe=ie().get("Comfy.Node.Opacity")??1;return h.value||b.value?fe*.5:fe}),$=w(()=>Tu(e.nodeData).length>0),I=w(()=>!!e.nodeData.outputs?.length),{handleWheel:S,shouldHandleNodePointerEvents:x}=ko(),N=L(null),{toastErrorHandler:P}=Yt();fl(fe=>(N.value=fe.message,P(fe),!1));const{position:D,size:W,zIndex:F}=$1(()=>e.nodeData.id),{pointerHandlers:z}=S1(()=>e.nodeData.id),{onPointerdown:U,...H}=z,{startDrag:B}=vi();async function G(fe){if(fe.altKey&&ct.value){const Se=Je.cloneNodes([ct.value]);if(Se?.created?.length){const[me]=Se.created;B(fe,`${me.id}`),De.isDraggingVueNodes.value=!0,await We(),s(`${me.id}`);return}}U(fe)}n(G,"nodeOnPointerdown");const Q=n(fe=>{fe.preventDefault(),fe.stopPropagation(),l(fe,e.nodeData.id),Ov(fe)},"handleContextMenu");Re(()=>{K()});function K(){const fe=vt.value,{width:Se,height:me}=W.value;if(!fe)return;const _e=C.value?"-x":"";fe.style.setProperty(`--node-width${_e}`,`${Se}px`),fe.style.setProperty(`--node-height${_e}`,`${me}px`)}n(K,"initSizeStyles");const{startResize:X}=I1((fe,Se)=>{if(C.value)return;const me=Math.max(fe.size.width,Rk);Se.style.setProperty("--node-width",`${me}px`),Se.style.setProperty("--node-height",`${fe.size.height}px`)}),ne=n(fe=>{fe.button===0&&x.value&&(e.nodeData.flags?.pinned||e.nodeData.resizable!==!1&&X(fe))},"handleResizePointerDown");le(C,fe=>{const Se=vt.value;if(!Se)return;const[me,_e]=fe?["","-x"]:["-x",""],oe=Se.style.getPropertyValue(`--node-width${me}`);Se.style.setProperty(`--node-width${_e}`,oe),Se.style.setProperty(`--node-width${me}`,"");const ae=Se.style.getPropertyValue(`--node-height${me}`);Se.style.setProperty(`--node-height${_e}`,ae),Se.style.setProperty(`--node-height${me}`,"")});const Z=w(()=>!!zt.value&&zt.value.urls.length>0),{latestPreviewUrl:re,shouldShowPreviewImg:ue}=N1(()=>e.nodeData.id,{isCollapsed:C}),Pe=w(()=>y.value?"border-node-stroke-error":!k.value&&e.nodeData.bgcolor&&$u(e.nodeData.bgcolor)?"border-0":""),Ue=w(()=>te(r.value&&"outline-node-component-outline",y.value&&"outline-node-stroke-error",m.value&&"outline-node-stroke-executing")),Ye=w(()=>te(e.nodeData.flags?.pinned?"cursor-default":De.isDraggingVueNodes.value?"cursor-grabbing":"cursor-grab")),Oe=w(()=>{switch(e.nodeData.shape){case Et.BOX:return"rounded-none";case Et.CARD:return"rounded-tl-2xl rounded-br-2xl rounded-tr-none rounded-bl-none";default:return"rounded-2xl"}}),$e=w(()=>{switch(e.nodeData.shape){case Et.BOX:return"before:rounded-none";case Et.CARD:return"before:rounded-tl-2xl before:rounded-br-2xl before:rounded-tr-none before:rounded-bl-none";default:return"before:rounded-2xl"}}),Fe=n(()=>{t(e.nodeData.id,!C.value)},"handleCollapse"),Ze=n(fe=>{a(e.nodeData.id,fe)},"handleHeaderTitleUpdate"),_t=n(()=>{const fe=J.rootGraph;if(!fe){console.warn("LGraphNode: No graph available for subgraph navigation");return}const Se=En(e.nodeData),me=ya(fe,Se);if(!me?.isSubgraphNode()||!("subgraph"in me)){console.warn("LGraphNode: Node is not a valid subgraph node",me);return}const _e=J.canvas;if(!_e||typeof _e.openSubgraph!="function"){console.warn("LGraphNode: Canvas or openSubgraph method not available");return}_e.openSubgraph(me.subgraph,me)},"handleEnterSubgraph"),Xt=Go(),_o=w(()=>e.nodeData.subgraphId?`${e.nodeData.subgraphId}:${e.nodeData.id}`:e.nodeData.id),ct=w(()=>{const fe=En(e.nodeData);return ya(J.rootGraph,fe)}),Zt=w(()=>{const fe=ct.value;return!fe||!(fe instanceof $n)?!1:fe.subgraph.nodes.flatMap(_e=>_e.widgets??[]).some(_e=>!_e.computedDisabled&&!_e.promoted)});function eo(){ut().focusSection("advanced-inputs")}n(eo,"handleShowAdvancedInputs");const zt=w(()=>{const fe=Xt.nodeOutputs[_o.value],Se=ct.value;if(!Se||!fe?.images?.length)return;const me=Xt.getNodeImageUrls(Se);if(!me?.length)return;const _e=Se.inputs?.some(ae=>ae.type==="VIDEO");return{type:Se.previewMediaType==="video"||!Se.previewMediaType&&_e?"video":"image",urls:me}}),vt=L(),ht=L(!1);function To(fe){const Se=ct.value;if(!Se||!Se.onDragOver){ht.value=!1;return}const me=Se.onDragOver(fe);ht.value=me}n(To,"handleDragOver");function to(){ht.value=!1}n(to,"handleDragLeave");async function $o(fe){ht.value=!1;const Se=ct.value;!Se||!Se.onDragDrop||await Se.onDragDrop(fe)}return n($o,"handleDrop"),(fe,Se)=>N.value?(c(),_("div",Tk,V(d(Le)("nodeErrors.render","Node Render Error")),1)):(c(),_("div",tt({key:1,ref_key:"nodeContainerRef",ref:vt,tabindex:"0","data-node-id":fe.nodeData.id,class:d(te)("bg-component-node-background lg-node absolute text-sm","contain-style contain-layout min-w-[225px] min-h-(--node-height) w-(--node-width)",Oe.value,"touch-none flex flex-col","border-1 border-solid border-component-node-border",d(x)&&"hover:ring-7 ring-node-component-ring","outline-transparent outline-2 focus-visible:outline-node-component-outline",Pe.value,Ue.value,Ye.value,{[`${$e.value} before:pointer-events-none before:absolute before:bg-bypass/60 before:inset-0`]:h.value,[`${$e.value} before:pointer-events-none before:absolute before:inset-0`]:b.value,"ring-4 ring-primary-500 bg-primary-500/10":ht.value},d(x)?"pointer-events-auto":"pointer-events-none",!C.value&&" pb-1"),style:[{transform:`translate(${d(D).x??0}px, ${(d(D).y??0)-d(ye).NODE_TITLE_HEIGHT}px)`,zIndex:d(F),opacity:T.value,"--component-node-background":d(as)(fe.nodeData.bgcolor)}]},H,{onPointerdown:G,onWheel:Se[0]||(Se[0]=(...me)=>d(S)&&d(S)(...me)),onContextmenu:Q,onDragover:ke(To,["prevent"]),onDragleave:to,onDrop:ke($o,["stop","prevent"])}),[k.value?(c(),_("div",Nk,[C.value?(c(),_(ee,{key:0},[$.value?(c(),O(ba,{key:0,multi:"",class:"absolute left-0 -translate-x-1/2"})):A("",!0),I.value?(c(),O(ba,{key:1,multi:"",class:"absolute right-0 translate-x-1/2"})):A("",!0),E(wa,{"node-data":fe.nodeData,unified:""},null,8,["node-data"])],64)):A("",!0),E(Nu,{"node-data":fe.nodeData,collapsed:C.value,onCollapse:Fe,"onUpdate:title":Ze,onEnterSubgraph:_t},null,8,["node-data","collapsed"])])):A("",!0),C.value&&d(m)&&d(f)!==void 0?(c(),_("div",{key:1,class:q(d(te)("absolute inset-x-4 -bottom-[1px] translate-y-1/2 rounded-full",qa)),style:be({width:`${Math.min(d(f)*100,100)}%`})},null,6)):A("",!0),C.value?A("",!0):(c(),_(ee,{key:2},[p("div",Ik,[d(m)&&d(f)!==void 0?(c(),_("div",{key:0,class:q(d(te)("absolute inset-x-0 top-1/2 -translate-y-1/2",d(f)<1&&"rounded-r-full",qa)),style:be({width:`${Math.min(d(f)*100,100)}%`})},null,6)):A("",!0)]),p("div",{class:"flex flex-1 flex-col gap-1 pb-2","data-testid":`node-body-${fe.nodeData.id}`},[E(wa,{"node-data":fe.nodeData},null,8,["node-data"]),fe.nodeData.widgets?.length?(c(),O(ls,{key:0,"node-data":fe.nodeData},null,8,["node-data"])):A("",!0),Z.value?(c(),_("div",Mk,[E(_k,{"node-data":fe.nodeData,media:zt.value},null,8,["node-data","media"])])):A("",!0),d(ue)?(c(),_("div",Dk,[E(W1,{"image-url":d(re)||null},null,8,["image-url"])])):A("",!0),Zt.value?(c(),_("div",Ak,[p("button",{class:q(d(te)(d(bn),"w-full h-7 flex justify-center items-center gap-2 text-sm px-3 outline-0 ring-0 truncate","transition-all cursor-pointer hover:bg-accent-background duration-150 active:scale-95")),onClick:ke(eo,["stop"])},[Se[1]||(Se[1]=p("i",{class:"icon-[lucide--settings-2] size-4"},null,-1)),p("span",null,V(d(o)("rightSidePanel.showAdvancedInputsButton")),1)],2)])):A("",!0)],8,Pk)],64)),!C.value&&fe.nodeData.resizable!==!1?(c(),_("div",{key:3,role:"button","aria-label":d(o)("g.resizeFromBottomRight"),class:q(d(te)(Ek,"right-0 bottom-0 cursor-se-resize")),onPointerdown:ke(ne,["stop"])},null,42,Lk)):A("",!0)],16,$k))}});let Xo=[],Zo=!1,en=null;const Ok=n(()=>{function e(l){const s=Object.keys(l.settingValues).length===0||!l.get("Comfy.TutorialCompleted"),i=!localStorage.getItem("workflow"),r=!localStorage.getItem("Comfy.PreviousWorkflow");return s&&i&&r}n(e,"checkIsNewUser");async function o(l){if(Zo){if(en)try{await l()}catch(s){console.error("New user initialization callback failed:",s)}}else Xo.push(l)}n(o,"registerInitCallback");async function t(l){if(!Zo){if(en=e(l),Zo=!0,!en){Xo=[];return}await l.set("Comfy.InstalledVersion","1.38.2");for(const s of Xo)try{await s()}catch(i){console.error("New user initialization callback failed:",i)}Xo=[]}}n(t,"initializeIfNewUser");function a(){return Zo?en:null}return n(a,"isNewUser"),{registerInitCallback:o,initializeIfNewUser:t,isNewUser:a}},"newUserService"),Wk=j({__name:"SelectionRectangle",setup(e){const o=he(),t=L(null);ho(()=>{const s=o.canvas;if(!s){t.value=null;return}const{pointer:i,dragging_rectangle:r}=s;if(r&&i.eDown&&i.eMove){const u=i.eDown.safeOffsetX,m=i.eDown.safeOffsetY,f=i.eMove.safeOffsetX-u,v=i.eMove.safeOffsetY-m;t.value={x:u,y:m,w:f,h:v}}else t.value=null});const a=w(()=>t.value!==null),l=w(()=>{const s=t.value;if(!s)return{};const i=s.w>=0?s.x:s.x+s.w,r=s.h>=0?s.y:s.y+s.h,u=Math.abs(s.w),m=Math.abs(s.h);return{left:`${i}px`,top:`${r}px`,width:`${u}px`,height:`${m}px`}});return(s,i)=>a.value?(c(),_("div",{key:0,class:"pointer-events-none absolute z-9999 border border-blue-400 bg-blue-500/20",style:be(l.value)},null,4)):A("",!0)}}),zk={key:0,class:"workflow-tabs-container pointer-events-auto relative h-9.5 w-full"},Bk={key:0,class:"app-drag fixed top-0 left-0 z-10 h-[var(--comfy-topbar-height)] w-full"},Fk={class:"flex h-full items-center border-b border-interface-stroke bg-comfy-menu-bg shadow-interface"},Uk={class:"sidebar-content-container h-full w-full overflow-x-hidden overflow-y-auto"},Gk=j({__name:"GraphCanvas",emits:["ready"],setup(e,{emit:o}){const t=o,a=L(null),l=Ke(null),s=ie(),i=It(),r=lt(),u=he(),m=dt(),f=Rt(),v=St(),g=Vl(),y=ko(),k=w(()=>s.get("Comfy.UseNewMenu")!=="Disabled"),C=w(()=>s.get("Comfy.Workflow.WorkflowTabsPosition")),h=w(()=>s.get("Comfy.Graph.CanvasMenu")),b=w(()=>s.get("Comfy.EnableTooltips")),T=w(()=>s.get("Comfy.Canvas.SelectionToolbox")),$=w(()=>r.sidebarTab.activeSidebarTab),I=w(()=>!r.focusMode&&k.value),S=w(()=>s.get("Comfy.Minimap.Visible")),{shouldRenderVueNodes:x}=vn(),N=Js(),P=n(async()=>{x.value&&(N.disposeNodeManagerAndSyncs(),await We(),N.initializeNodeManager())},"handleVueNodeLifecycleReset");le(()=>u.currentGraph,P),le(()=>u.isInSubgraph,async(U,H)=>{H&&!U&&Ae().updateActiveGraph(),await P()});const D=w(()=>Array.from(N.nodeManager.value?.vueNodeData?.values()??[]));xe(()=>{ye.nodeOpacity=s.get("Comfy.Node.Opacity")}),xe(()=>{ye.nodeLightness=v.completedActivePalette.light_theme?.5:void 0}),xe(()=>{i.showDeprecated=s.get("Comfy.Node.ShowDeprecated")}),xe(()=>{i.showExperimental=s.get("Comfy.Node.ShowExperimental")}),xe(()=>{const U=s.get("Comfy.TextareaWidget.Spellcheck");document.querySelectorAll("textarea.comfy-multiline-input").forEach(B=>{B.spellcheck=U,B.focus(),B.blur()})}),le(()=>s.get("Comfy.WidgetControlMode"),()=>{u.canvas&&(ka(J.rootGraph,U=>{if(U.widgets){for(const H of U.widgets)if(H[Lu]&&(Ca(H),!!H.linkedWidgets))for(const B of H.linkedWidgets)Ca(B)}}),u.canvas.setDirty(!0))}),le([()=>u.canvas,()=>s.get("Comfy.ColorPalette")],async([U,H])=>{U&&await g.loadColorPalette(H)}),le(()=>s.get("Comfy.Canvas.BackgroundImage"),async()=>{if(!u.canvas)return;const U=v.activePaletteId;U&&(await g.loadColorPalette(U),u.canvas.setDirty(!1,!0))}),le(()=>v.activePaletteId,async U=>{await s.set("Comfy.ColorPalette",U)}),le(()=>[m.nodeLocationProgressStates,u.canvas],([U,H])=>{if(H?.graph){for(const B of H.graph.nodes){const G=Ae().nodeIdToNodeLocatorId(B.id),Q=U[G];Q&&Q.state==="running"?B.progress=Q.value/Q.max:B.progress=void 0}H.setDirty(!0,!1)}},{deep:!0}),le(()=>m.lastNodeErrors,U=>{J.graph&&(ka(J.rootGraph,H=>{for(const Q of H.inputs)delete Q.hasErrors;for(const Q of H.outputs)delete Q.hasErrors;const B=U?.[H.id];if(!B)return;B.errors.filter(Q=>Q.extra_info?.input_name!==void 0).forEach(Q=>{const K=Q.extra_info.input_name,X=H.findInputSlot(K);X!==-1&&(H.inputs[X].hasErrors=!0)})}),J.canvas.setDirty(!0,!0))}),Ee(a,"litegraph:no-items-selected",()=>{f.add({severity:"warn",summary:se("toastMessages.nothingSelected"),life:2e3})},{passive:!0});const W=n(async()=>{try{const U=await Ie.getCustomNodesI18n();Au(U)}catch(U){console.error("Failed to load custom nodes i18n",U)}},"loadCustomNodesI18n"),F=L(!1),z=n1();return K0(a),Z0(),q0(),Re(async()=>{X0(),Q0(),J0(),Iu(),t1(),vn(),J.vueAppReady=!0,r.spinner=!0,Pu.init(),await W();try{await s.loadSettingValues()}catch(B){if(B instanceof Mu)localStorage.removeItem("Comfy.userId"),localStorage.removeItem("Comfy.userName"),window.location.reload();else throw B}e1.forEach(s.addSetting),await Ok().initializeIfNewUser(s),await J.setup(a.value),u.canvas=J.canvas,u.canvas.render_canvas_border=!1,r.spinner=!1,Ks().setPopoverRef(l.value),window.app=J,window.graph=J.graph,F.value=!0,N.setupEmptyGraphListener(),J.canvas.onSelectionChange=fo(J.canvas.onSelectionChange,()=>u.updateSelectedItems()),v.customPalettes=s.get("Comfy.CustomColorPalettes"),await z.initializeWorkflow(),z.restoreWorkflowTabsState(),await z.loadTemplateFromUrlIfPresent();const{useReleaseStore:U}=await xs(async()=>{const{useReleaseStore:B}=await Promise.resolve().then(()=>eg);return{useReleaseStore:B}},void 0,import.meta.url);U().initialize(),le(()=>s.get("Comfy.Locale"),async()=>{await Te().execute("Comfy.RefreshNodeDefinitions"),await it().reloadCurrentWorkflow()}),st(()=>he().canvas,B=>{Ee(B.canvas,"litegraph:set-graph",()=>{Ae().updateActiveGraph()})},{immediate:!0}),t("ready")}),xt(()=>{N.cleanup()}),(U,H)=>(c(),_(ee,null,[F.value?(c(),O(sp,{key:0},bs({"graph-canvas-panel":M(()=>[h.value?(c(),O(Kg,{key:0,class:"pointer-events-auto"})):A("",!0),F.value&&S.value&&k.value?(c(),O(k1,{key:1,class:"pointer-events-auto"})):A("",!0)]),_:2},[I.value?{name:"workflow-tabs",fn:M(()=>[C.value==="Topbar"?(c(),_("div",zk,[d(Du)()&&C.value!=="Topbar"?(c(),_("div",Bk)):A("",!0),p("div",Fk,[E(pi),E(ci)])])):A("",!0)]),key:"0"}:void 0,I.value?{name:"side-toolbar",fn:M(()=>[E(l0)]),key:"1"}:void 0,I.value?{name:"side-bar-panel",fn:M(()=>[p("div",Uk,[$.value?(c(),O(Zl,{key:0,extension:$.value},null,8,["extension"])):A("",!0)])]),key:"2"}:void 0,I.value?{name:"topmenu",fn:M(()=>[E(rg)]),key:"3"}:void 0,I.value?{name:"bottom-panel",fn:M(()=>[E(vg)]),key:"4"}:void 0,I.value?{name:"right-side-panel",fn:M(()=>[E(Oy)]),key:"5"}:void 0]),1024)):A("",!0),p("canvas",{id:"graph-canvas",ref_key:"canvasRef",ref:a,tabindex:"1",class:"absolute inset-0 size-full touch-none"},null,512),d(x)&&d(J).canvas&&F.value?(c(),O(i1,{key:1,canvas:d(J).canvas,onWheelCapture:d(y).forwardEventToCanvas},{default:M(()=>[(c(!0),_(ee,null,we(D.value,B=>(c(),O(Vk,{key:B.id,"node-data":B,error:d(m).lastExecutionError?.node_id===B.id?"Execution error":null,"zoom-level":d(u).canvas?.ds?.scale||1,"data-node-id":B.id},null,8,["node-data","error","zoom-level","data-node-id"]))),128))]),_:1},8,["canvas","onWheelCapture"])):A("",!0),F.value?(c(),O(Wk,{key:2})):A("",!0),b.value?(c(),O(Yg,{key:3})):A("",!0),E(Xy,{ref_key:"nodeSearchboxPopoverRef",ref:l},null,512),F.value?(c(),_(ee,{key:4},[E(sh),T.value?(c(),O(oh,{key:0})):A("",!0),d(x)?A("",!0):(c(),O(xg,{key:1}))],64)):A("",!0)],64))}}),Hk={class:"flex flex-auto flex-col items-start"},jk={class:"my-4 text-lg font-medium"},qk=j({__name:"RerouteMigrationToast",setup(e){const{t:o}=de(),t=Qt(),a=Ae(),l=n(async()=>{const s=J.rootGraph.serialize(),i=Eu(s);await J.loadGraphData(i,!1,!1,a.activeWorkflow),t.removeGroup("reroute-migration")},"migrateToLitegraphReroute");return(s,i)=>(c(),O(d(vl),{group:"reroute-migration"},{message:M(()=>[p("div",Hk,[p("div",jk,V(d(o)("toastMessages.migrateToLitegraphReroute")),1),E(Y,{class:"self-end",size:"sm",onClick:l},{default:M(()=>[Ce(V(d(o)("g.migrate")),1)]),_:1})])]),_:1}))}}),Ka="ComfyUI",Kk=" - ComfyUI",Qk=n(()=>{const e=dt(),o=ie(),t=Ae(),a=lt(),l=w(()=>e.isIdle?"":`[${Math.round(e.executionProgress*100)}%]`),s=w(()=>o.get("Comfy.UseNewMenu")!=="Disabled"),i=w(()=>o.get("Comfy.Workflow.AutoSave")==="after delay"),r=w(()=>!!t.activeWorkflow?.isModified),u=w(()=>!!t.activeWorkflow?.isPersisted),m=w(()=>a.shiftDown||i.value?!1:!!(!u.value||r.value)),f=w(()=>m.value?" *":""),v=w(()=>{const C=t.activeWorkflow?.filename;return C?f.value+C+Kk:Ka}),g=w(()=>{const h=Object.entries(e.nodeProgressStates).filter(([S,x])=>x.state==="running");if(h.length===0)return"";if(h.length>1)return`${l.value}[${h.length} ${se("g.nodesRunning","nodes running")}]`;const[b,T]=h[0],$=Math.round(T.value/T.max*100),I=e.activePrompt?.workflow?.changeTracker?.activeState.nodes.find(S=>String(S.id)===b)?.type||"Node";return`${l.value}[${$}%] ${I}`}),y=w(()=>l.value+(s.value?v.value:Ka)),k=w(()=>g.value||y.value);Bi(k)},"useBrowserTabTitle"),Yk={},Jk={class:"size-full bg-modal-panel-background pr-6 pb-8 pl-4"};function Xk(e,o){return c(),_("div",Jk,[ge(e.$slots,"default")])}n(Xk,"_sfc_render");const Zk=Ve(Yk,[["render",Xk]]),eC={class:"text-neutral text-base"},tC={class:"flex gap-2"},oC={class:"relative flex gap-2 px-6 pb-4"},nC=j({__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"}]),a=L([{name:"Popular",value:"popular"},{name:"Latest",value:"latest"},{name:"A → Z",value:"az"}]),l=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]"}]}]);Bo(Pn,e.onClose);const s=L(""),i=L(""),r=L([]),u=L([]),m=L("popular"),f=L("installed"),v=w(()=>ri());return(g,y)=>(c(),O(zs,{"content-title":g.$t("assetBrowser.checkpoints")},{leftPanel:M(()=>[E(Bs,{modelValue:f.value,"onUpdate:modelValue":y[0]||(y[0]=k=>f.value=k),"nav-items":l.value},{"header-icon":M(()=>y[6]||(y[6]=[p("i",{class:"text-neutral icon-[lucide--puzzle]"},null,-1)])),"header-title":M(()=>[p("span",eC,V(g.$t("g.title")),1)]),_:1},8,["modelValue","nav-items"])]),header:M(()=>[E(_n,{modelValue:s.value,"onUpdate:modelValue":y[1]||(y[1]=k=>s.value=k),size:"lg",class:"max-w-[384px]"},null,8,["modelValue"])]),"header-right-area":M(()=>[p("div",tC,[E(Y,{variant:"primary",onClick:n(()=>{},"onClick")},{default:M(()=>[y[7]||(y[7]=p("i",{class:"icon-[lucide--upload]"},null,-1)),p("span",null,V(g.$t("g.upload")),1)]),_:1}),E(Fs,null,{default:M(({close:k})=>[E(Y,{variant:"secondary",onClick:n(()=>{k()},"onClick")},{default:M(()=>[y[8]||(y[8]=p("i",{class:"icon-[lucide--download]"},null,-1)),p("span",null,V(g.$t("g.settings")),1)]),_:2},1032,["onClick"]),E(Y,{variant:"primary",onClick:n(()=>{k()},"onClick")},{default:M(()=>[y[9]||(y[9]=p("i",{class:"icon-[lucide--scroll]"},null,-1)),p("span",null,V(g.$t("g.profile")),1)]),_:2},1032,["onClick"])]),_:1})])]),contentFilter:M(()=>[p("div",oC,[E(jt,{modelValue:r.value,"onUpdate:modelValue":y[2]||(y[2]=k=>r.value=k),"search-query":i.value,"onUpdate:searchQuery":y[3]||(y[3]=k=>i.value=k),class:"w-[250px]",label:g.$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"]),E(jt,{modelValue:u.value,"onUpdate:modelValue":y[4]||(y[4]=k=>u.value=k),label:g.$t("assetBrowser.selectProjects"),options:t.value},null,8,["modelValue","label","options"]),E(yn,{modelValue:m.value,"onUpdate:modelValue":y[5]||(y[5]=k=>m.value=k),label:g.$t("assetBrowser.sortingType"),options:a.value,class:"w-[135px]"},{icon:M(()=>y[10]||(y[10]=[p("i",{class:"icon-[lucide--filter]"},null,-1)])),_:1},8,["modelValue","label","options"])])]),content:M(()=>[p("div",{style:be(v.value)},[(c(),_(ee,null,we(100,k=>E(un,{key:k,size:"regular"},{top:M(()=>[E(dn,{ratio:"landscape"},{default:M(()=>y[11]||(y[11]=[p("div",{class:"h-full w-full bg-blue-500"},null,-1)])),"top-right":M(()=>[E(Y,{size:"icon",class:"!bg-white !text-neutral-900",onClick:n(()=>{},"onClick")},{default:M(()=>y[12]||(y[12]=[p("i",{class:"icon-[lucide--info]"},null,-1)])),_:1})]),"bottom-right":M(()=>[E(cn,{label:"png"}),E(cn,{label:"1.2 MB"}),E(cn,{label:"LoRA"},{icon:M(()=>y[13]||(y[13]=[p("i",{class:"icon-[lucide--folder]"},null,-1)])),_:1})]),_:1})]),bottom:M(()=>[E(rn)]),_:2},1024)),64))],4)]),rightPanel:M(()=>[E(Zk)]),_:1},8,["content-title"]))}}),Qa="global-model-selector",sC=n(()=>{const e=rt(),o=gt();function t(){o.closeDialog({key:Qa})}n(t,"hide");function a(){e.showLayoutDialog({key:Qa,component:nC,props:{onClose:t}})}return n(a,"show"),{show:a,hide:t}},"useModelSelectorDialog");function aC(e,o){const t=Ru.safeParse(e);if(!t.success){const C=t.error.errors.map(h=>`${h.path.join(".")}: ${h.message}`).join(", ");return console.error("Invalid asset item:",C),{success:!1,error:{code:"INVALID_ASSET",message:"Asset schema validation failed",assetId:e.id,details:{validationErrors:C}}}}const a=t.data,l=a.user_metadata;if(!l)return console.error(`Asset ${a.id} missing required user_metadata`),{success:!1,error:{code:"INVALID_ASSET",message:"Asset missing required user_metadata",assetId:a.id}};const s=l.filename;if(typeof s!="string"||s.length===0)return console.error(`Asset ${a.id} has invalid user_metadata.filename (expected non-empty string, got ${typeof s})`),{success:!1,error:{code:"INVALID_ASSET",message:`Invalid filename (expected non-empty string, got ${typeof s})`,assetId:a.id}};if(a.tags.length===0)return console.error(`Asset ${a.id} has no tags defined (expected at least one category tag)`),{success:!1,error:{code:"INVALID_ASSET",message:"Asset has no tags defined",assetId:a.id}};const i=a.tags.find(C=>C!==xa&&C!==Sa);if(!i)return console.error(`Asset ${a.id} has no valid category tag. Available tags: ${a.tags.join(", ")} (expected tag other than '${xa}' or '${Sa}')`),{success:!1,error:{code:"INVALID_ASSET",message:"Asset has no valid category tag",assetId:a.id,details:{availableTags:a.tags}}};const u=Ns().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:a.id,details:{category:i}}};const f=Uo().getCanvasCenter(),v=ye.createNode(u.nodeDef.name,u.nodeDef.display_name,{pos:f});if(!v)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:a.id,details:{nodeType:u.nodeDef.name}}};const g=Ae(),y=g.isSubgraphActive?g.activeSubgraph:J.canvas.graph;if(!y)return console.error("No active graph available"),{success:!1,error:{code:"NO_GRAPH",message:"No active graph available",assetId:a.id}};const k=v.widgets?.find(C=>C.name===u.key);return k?(k.value=s,y.add(v),{success:!0,value:v}):(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:a.id,details:{widgetName:u.key,nodeType:u.nodeDef.name}}})}n(aC,"createModelNodeFromAsset");const tn={DISTRIBUTION:"tf_42243568391700",ANONYMOUS_EMAIL:"tf_anonymous_requester_email",EMAIL:"tf_40029135130388",USER_ID:"tf_42515251051412"},lC="https://support.comfy.org/hc/en-us/requests/new";function iC(e){const o=new URLSearchParams({[tn.DISTRIBUTION]:"oss"});return e?.userEmail&&(o.append(tn.ANONYMOUS_EMAIL,e.userEmail),o.append(tn.EMAIL,e.userEmail)),e?.userId&&o.append(tn.USER_ID,e.userId),`${lC}?${o.toString()}`}n(iC,"buildSupportUrl");const{isActiveSubscription:qn,showSubscriptionDialog:Kn}=Fo(),on="1.22.2";function rC(){const e=it(),o=Ae(),t=rt(),a=St(),l=Tl(),s=Rt(),i=he(),r=dt(),{staticUrls:u,buildDocsUrl:m}=bo(),f=ie(),v=yo(),g=gt(),y=Vu(),{getSelectedNodes:k,toggleSelectedNodesMode:C}=Ls(),h=n(()=>o.activeWorkflow?.changeTracker,"getTracker");function b(){return f.get("Comfy.Queue.QPOV2")}n(b,"isQueuePanelV2Enabled");async function T(){await f.set("Comfy.Queue.QPOV2",!b())}n(T,"toggleQueuePanelV2");const $=n(S=>{const x=k();if(x.length===0)return;const N=ie().get("Comfy.SnapToGrid.GridSize");x.forEach(P=>{P.pos=S(P.pos,N)}),J.canvas.state.selectionChanged=!0,J.canvas.setDirty(!0,!0)},"moveSelectedNodes");return[{id:"Comfy.NewBlankWorkflow",icon:"pi pi-plus",label:"New Blank Workflow",menubarLabel:"New",category:"essentials",function:n(async()=>{J.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(()=>{J.ui.loadFile()},"function")},{id:"Comfy.LoadDefaultWorkflow",icon:"pi pi-code",label:"Load Default Workflow",function:n(async()=>{J.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 S=Ae().activeWorkflow;S&&await e.saveWorkflow(S)},"function")},{id:"Comfy.PublishSubgraph",icon:"pi pi-save",label:"Publish Subgraph",menubarLabel:"Publish",function:n(async()=>{await Is().publishSubgraph()},"function")},{id:"Comfy.SaveWorkflowAs",icon:"pi pi-save",label:"Save Workflow As",menubarLabel:"Save As",category:"essentials",function:n(async()=>{const S=Ae().activeWorkflow;S&&await e.saveWorkflowAs(S)},"function")},{id:"Comfy.RenameWorkflow",icon:"pi pi-pencil",label:"Rename Workflow",menubarLabel:"Rename",function:n(async()=>{const S=o.activeWorkflow;if(!S||!S.isPersisted)return;const x=await t.prompt({title:se("g.rename"),message:se("workflowService.enterFilename")+":",defaultValue:S.filename});if(!x||x===S.filename)return;const N=S.directory+"/"+x+".json";await e.renameWorkflow(S,N)},"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()=>{g.isDialogOpen("global-mask-editor")?y.canvasHistory.undo():await h()?.undo?.()},"function")},{id:"Comfy.Redo",icon:"pi pi-refresh",label:"Redo",category:"essentials",function:n(async()=>{g.isDialogOpen("global-mask-editor")?y.canvasHistory.redo():await h()?.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(J.clean(),J.canvas.subgraph){const x=J.canvas.subgraph;Wu(x).forEach(P=>x.remove(P))}Ie.dispatchCustomEvent("graphCleared")}},"function")},{id:"Comfy.Canvas.ResetView",icon:"pi pi-expand",label:"Reset View",function:n(()=>{Uo().resetView()},"function")},{id:"Comfy.OpenClipspace",icon:"pi pi-clipboard",label:"Clipspace",function:n(()=>{J.openClipspace()},"function")},{id:"Comfy.RefreshNodeDefinitions",icon:"pi pi-refresh",label:"Refresh Node Definitions",category:"essentials",function:n(async()=>{await J.refreshComboInNodes()},"function")},{id:"Comfy.Interrupt",icon:"pi pi-stop",label:"Interrupt",category:"essentials",function:n(async()=>{await Ie.interrupt(r.activePromptId),s.add({severity:"info",summary:se("g.interrupted"),detail:se("toastMessages.interrupted"),life:1e3})},"function")},{id:"Comfy.ClearPendingTasks",icon:"pi pi-stop",label:"Clear Pending Tasks",category:"essentials",function:n(async()=>{await Ot().clear(["queue"]),s.add({severity:"info",summary:se("g.confirmed"),detail:se("toastMessages.pendingTasksDeleted"),life:3e3})},"function")},{id:"Comfy.BrowseTemplates",icon:"pi pi-folder-open",label:"Browse Templates",function:n(()=>{Ys().show()},"function")},{id:"Comfy.Canvas.ZoomIn",icon:"pi pi-plus",label:"Zoom In",category:"view-controls",function:n(()=>{const S=J.canvas.ds;S.changeScale(S.scale*1.1,S.element?[S.element.width/2,S.element.height/2]:void 0),J.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.ZoomOut",icon:"pi pi-minus",label:"Zoom Out",category:"view-controls",function:n(()=>{const S=J.canvas.ds;S.changeScale(S.scale/1.1,S.element?[S.element.width/2,S.element.height/2]:void 0),J.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 S=ie(),x=S.get("Comfy.VueNodes.Enabled")??!1;await S.set("Comfy.VueNodes.Enabled",!x)},"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(J.canvas.empty){s.add({severity:"error",summary:se("toastMessages.emptyCanvas"),life:3e3});return}J.canvas.fitViewToSelectionAnimated()},"function")},{id:"Comfy.Canvas.ToggleLock",icon:"pi pi-lock",label:"Canvas Toggle Lock",category:"view-controls",function:n(()=>{J.canvas.state.readOnly=!J.canvas.state.readOnly},"function")},{id:"Comfy.Canvas.Lock",icon:"pi pi-lock",label:"Lock Canvas",category:"view-controls",function:n(()=>{J.canvas.state.readOnly=!0},"function")},{id:"Comfy.Canvas.Unlock",icon:"pi pi-lock-open",label:"Unlock Canvas",function:n(()=>{J.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 S=ie();let x=ye.SPLINE_LINK;return async()=>{const N=S.get("Comfy.LinkRenderMode");N===ye.HIDDEN_LINK?await S.set("Comfy.LinkRenderMode",x):(x=N,await S.set("Comfy.LinkRenderMode",ye.HIDDEN_LINK))}})(),active:n(()=>ie().get("Comfy.LinkRenderMode")!==ye.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 S=ie();await S.set("Comfy.Minimap.Visible",!S.get("Comfy.Minimap.Visible"))},"function"),active:n(()=>ie().get("Comfy.Minimap.Visible"),"active")},{id:"Comfy.Queue.ToggleOverlay",icon:"pi pi-history",label:n(()=>se("queue.toggleJobHistory"),"label"),menubarLabel:n(()=>se("queue.jobHistory"),"menubarLabel"),versionAdded:"1.37.0",category:"view-controls",function:n(()=>{ns().toggleOverlay()},"function"),active:n(()=>ns().isOverlayExpanded,"active")},{id:"Comfy.QueuePrompt",icon:"pi pi-play",label:"Queue Prompt",versionAdded:"1.3.7",category:"essentials",function:n(async S=>{if(!qn.value){Kn();return}const x=Do().batchCount;await J.queuePrompt(0,x)},"function")},{id:"Comfy.QueuePromptFront",icon:"pi pi-play",label:"Queue Prompt (Front)",versionAdded:"1.3.7",category:"essentials",function:n(async S=>{if(!qn.value){Kn();return}const x=Do().batchCount;await J.queuePrompt(-1,x)},"function")},{id:"Comfy.QueueSelectedOutputNodes",icon:"pi pi-play",label:"Queue Selected Output Nodes",versionAdded:"1.19.6",function:n(async S=>{if(!qn.value){Kn();return}const x=Do().batchCount,N=k(),P=Pl(N);if(P.length===0){s.add({severity:"error",summary:se("toastMessages.nothingToQueue"),detail:se("toastMessages.pleaseSelectOutputNodes"),life:3e3});return}const D=zu(P);if(D.length===0){s.add({severity:"error",summary:se("toastMessages.failedToQueue"),detail:se("toastMessages.failedExecutionPathResolution"),life:3e3});return}await J.queuePrompt(0,x,D)},"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:S}=J;if(!S.selectedItems?.size){s.add({severity:"error",summary:se("toastMessages.nothingToGroup"),detail:se("toastMessages.pleaseSelectNodesToGroup"),life:3e3});return}const x=new Ht,N=ie().get("Comfy.GroupSelectedNodes.Padding");x.resizeTo(S.selectedItems,N),S.graph?.add(x),x.recomputeInsideNodes(),Nn().titleEditorTarget=x},"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(()=>{C(ze.NEVER),J.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(()=>{C(ze.BYPASS),J.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(()=>{k().forEach(S=>{S.pin(!S.pinned)}),J.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 S of J.canvas.selectedItems)(S instanceof Ct||S instanceof Ht)&&S.pin(!S.pinned);J.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.Resize",icon:"pi pi-minus",label:"Resize Selected Nodes",versionAdded:"",function:n(()=>{k().forEach(S=>{const x=S.computeSize();S.setSize([x[0],x[1]])}),J.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(()=>{k().forEach(S=>{S.collapse()}),J.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.ToggleTheme",icon:"pi pi-moon",label:"Toggle Theme (Dark/Light)",versionAdded:"1.3.12",function:(()=>{let S=Bu.id,x=Fu.id;return async()=>{const N=ie(),P=a.completedActivePalette;P.light_theme?(x=P.id,await N.set("Comfy.ColorPalette",S)):(S=P.id,await N.set("Comfy.ColorPalette",x))}})()},{id:"Workspace.ToggleBottomPanel",icon:"pi pi-list",label:"Toggle Bottom Panel",menubarLabel:"Bottom Panel",versionAdded:"1.3.22",category:"view-controls",function:n(()=>{v.toggleBottomPanel()},"function"),active:n(()=>v.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(()=>{lt().toggleFocusMode()},"function"),active:n(()=>lt().focusMode,"active")},{id:"Comfy.Graph.FitGroupToContents",icon:"pi pi-expand",label:"Fit Group To Contents",versionAdded:"1.4.9",function:n(()=>{for(const S of J.canvas.selectedItems)if(S instanceof Ht){S.recomputeInsideNodes();const x=ie().get("Comfy.GroupSelectedNodes.Padding");S.resizeTo(S.children,x),J.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(m("/",{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(()=>{Ks().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:S,resolvedUserInfo:x}=wo(),N=iC({userEmail:S.value,userId:x.value?.id});window.open(N,"_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(()=>{J.canvas.deleteSelected(),J.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 wt().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 S=wt();if(S.managerUIState.value===Uu.DISABLED){s.add({severity:"error",summary:se("g.error"),detail:se("manager.notAvailable"),life:3e3});return}await S.openManager({initialTab:ro.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 wt().openManager({initialTab:ro.Missing,showToastOnLegacyError:!1})},"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 l.logout()},"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Up",icon:"pi pi-arrow-up",label:"Move Selected Nodes Up",versionAdded:on,function:n(()=>$(([S,x],N)=>[S,x-N]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Down",icon:"pi pi-arrow-down",label:"Move Selected Nodes Down",versionAdded:on,function:n(()=>$(([S,x],N)=>[S,x+N]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Left",icon:"pi pi-arrow-left",label:"Move Selected Nodes Left",versionAdded:on,function:n(()=>$(([S,x],N)=>[S-N,x]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Right",icon:"pi pi-arrow-right",label:"Move Selected Nodes Right",versionAdded:on,function:n(()=>$(([S,x],N)=>[S+N,x]),"function")},{id:"Comfy.Graph.ConvertToSubgraph",icon:"icon-[lucide--shrink]",label:"Convert Selection to Subgraph",versionAdded:"1.20.1",category:"essentials",function:n(()=>{const S=i.getCanvas(),x=S.subgraph??S.graph;if(!x)throw new TypeError("Canvas has no graph or subgraph set.");const N=x.convertToSubgraph(S.selectedItems);if(!N){s.add({severity:"error",summary:se("toastMessages.cannotCreateSubgraph"),detail:se("toastMessages.failedToConvertToSubgraph"),life:3e3});return}const{node:P}=N;S.select(P),i.updateSelectedItems()},"function")},{id:"Comfy.Graph.UnpackSubgraph",icon:"icon-[lucide--expand]",label:"Unpack the selected Subgraph",versionAdded:"1.26.3",function:n(()=>{const{unpackSubgraph:S}=Ml();S()},"function")},{id:"Comfy.Graph.EditSubgraphWidgets",label:"Edit Subgraph Widgets",icon:"icon-[lucide--settings-2]",versionAdded:"1.28.5",function:n(()=>{ut().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 wt().openManager({initialTab:ro.All,showToastOnLegacyError:!1})},"function")},{id:"Comfy.ToggleHelpCenter",icon:"pi pi-question-circle",label:"Help Center",function:n(()=>{ps().toggle()},"function"),active:n(()=>ps().isVisible,"active")},{id:"Comfy.ToggleCanvasInfo",icon:"pi pi-info-circle",label:"Canvas Performance",function:n(async()=>{const S=ie(),x=S.get("Comfy.Graph.CanvasInfo");await S.set("Comfy.Graph.CanvasInfo",!x)},"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(()=>{v.togglePanel("shortcuts")},"function")},{id:"Comfy.Graph.ExitSubgraph",icon:"pi pi-arrow-up",label:"Exit Subgraph",versionAdded:"1.20.1",function:n(()=>{const S=he().getCanvas(),x=Ps();S.graph&&S.setGraph(x.navigationStack.at(-2)??S.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(()=>{sC().show()},"function")},{id:"Comfy.Manager.CustomNodesManager.ShowLegacyCustomNodesMenu",icon:"pi pi-bars",label:"Custom Nodes (Legacy)",versionAdded:"1.16.4",function:n(async()=>{await wt().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 wt().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")){Rt().add({severity:"error",summary:se("g.error"),detail:se("g.commandProhibited",{command:"Comfy.Memory.UnloadModels"}),life:3e3});return}await Ie.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")){Rt().add({severity:"error",summary:se("g.error"),detail:se("g.commandProhibited",{command:"Comfy.Memory.UnloadModelsAndExecutionCache"}),life:3e3});return}await Ie.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 Wc().browse({assetType:"models",title:se("sideToolbar.modelLibrary"),onAssetSelected:n(x=>{const N=aC(x);N.success||(s.add({severity:"error",summary:se("g.error"),detail:se("assetBrowser.failedToCreateNode")}),console.error("Node creation failed:",N.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 S=ie(),x=S.get("Comfy.Assets.UseAssetAPI")??!1;await S.set("Comfy.Assets.UseAssetAPI",!x),await it().reloadCurrentWorkflow()},"function")},{id:"Comfy.ToggleQPOV2",icon:"pi pi-list",label:"Toggle Queue Panel V2",function:T},{id:"Comfy.ToggleLinear",icon:"pi pi-database",label:"Toggle Simple Mode",function:n(()=>{const S=!i.linearMode;J.rootGraph.extra.linearMode=S,o.activeWorkflow?.changeTracker?.checkState(),i.linearMode=S},"function")}].map(S=>({...S,source:"System"}))}n(rC,"useCoreCommands");const uC=n(()=>{const e="/assets/images/favicon_progress_16x16/frame_9.png",o=Fi(e),t=dt(),a=10;le([()=>t.executionProgress,()=>t.isIdle],([l,s])=>{if(s)o.value=e;else{const i=Math.min(Math.max(0,Math.floor(l*a)),a-1);o.value=`/assets/images/favicon_progress_16x16/frame_${i}.png`}})},"useProgressFavicon");var vs=(e=>(e.NoPreviews="none",e.Auto="auto",e.Latent2RGB="latent2rgb",e.TAESD="taesd",e))(vs||{}),hs=(e=>(e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.CRITICAL="CRITICAL",e))(hs||{}),ys=(e=>(e.MD5="md5",e.SHA1="sha1",e.SHA256="sha256",e.SHA512="sha512",e))(ys||{}),lo=(e=>(e.Auto="auto",e.Disable="disable",e.Enable="enable",e))(lo||{}),Me=(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))(Me||{}),pn=(e=>(e.Auto="auto",e.Split="split",e.Quad="quad",e.Pytorch="pytorch",e))(pn||{}),fn=(e=>(e.Auto="auto",e.GPUOnly="gpu-only",e.HighVram="highvram",e.NormalVram="normalvram",e.LowVram="lowvram",e.NoVram="novram",e.CPU="cpu",e))(fn||{});const dC=[{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(lo),defaultValue:lo.Auto,getValue:n(e=>{switch(e){case lo.Auto:return{};case lo.Enable:return{"cuda-malloc":!0};case lo.Disable:return{"disable-cuda-malloc":!0}}},"getValue")},{id:"global-precision",name:"Global floating point precision",category:["Inference"],type:"combo",options:[Me.AUTO,Me.FP32,Me.FP16],defaultValue:Me.AUTO,tooltip:"Global floating point precision",getValue:n(e=>{switch(e){case Me.AUTO:return{};case Me.FP32:return{"force-fp32":!0};case Me.FP16:return{"force-fp16":!0};default:return{}}},"getValue")},{id:"unet-precision",name:"UNET precision",category:["Inference"],type:"combo",options:[Me.AUTO,Me.FP64,Me.FP32,Me.FP16,Me.BF16,Me.FP8E4M3FN,Me.FP8E5M2],defaultValue:Me.AUTO,tooltip:"UNET precision",getValue:n(e=>{switch(e){case Me.AUTO:return{};default:return{[`${e.toLowerCase()}-unet`]:!0}}},"getValue")},{id:"vae-precision",name:"VAE precision",category:["Inference"],type:"combo",options:[Me.AUTO,Me.FP16,Me.FP32,Me.BF16],defaultValue:Me.AUTO,tooltip:"VAE precision",getValue:n(e=>{switch(e){case Me.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:[Me.AUTO,Me.FP8E4M3FN,Me.FP8E5M2,Me.FP16,Me.FP32],defaultValue:Me.AUTO,tooltip:"Text Encoder precision",getValue:n(e=>{switch(e){case Me.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(vs),defaultValue:vs.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(pn),defaultValue:pn.Auto,getValue:n(e=>{switch(e){case pn.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(fn),defaultValue:fn.Auto,getValue:n(e=>{switch(e){case fn.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(ys),defaultValue:ys.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(hs),defaultValue:hs.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:""}],cC={key:0,role:"status","aria-live":"polite",class:"fixed inset-x-0 bottom-6 z-9999 mx-auto w-4/5 max-w-3xl overflow-hidden rounded-lg border border-border-default bg-base-background shadow-lg"},hi=j({__name:"HoneyToast",props:go({visible:{type:Boolean}},{expanded:{type:Boolean,default:!1},expandedModifiers:{}}),emits:["update:expanded"],setup(e){const o=qt(e,"expanded");function t(){o.value=!o.value}return n(t,"toggle"),(a,l)=>(c(),O(kt,{to:"body"},[E(zo,{"enter-active-class":"transition-all duration-300 ease-out","enter-from-class":"translate-y-full opacity-0","enter-to-class":"translate-y-0 opacity-100","leave-active-class":"transition-all duration-200 ease-in","leave-from-class":"translate-y-0 opacity-100","leave-to-class":"translate-y-full opacity-0"},{default:M(()=>[a.visible?(c(),_("div",cC,[p("div",{class:q(d(te)("overflow-hidden transition-all duration-300",o.value?"max-h-[400px]":"max-h-0"))},[ge(a.$slots,"default",{isExpanded:o.value})],2),ge(a.$slots,"footer",{isExpanded:o.value,toggle:t})])):A("",!0)]),_:3})]))}}),Ya=j({__name:"StatusBadge",props:{label:{},severity:{default:"default"}},setup(e){function o(t){const a="inline-flex h-3.5 items-center justify-center rounded-full px-1 text-xxxs font-semibold uppercase";switch(t){case"danger":return`${a} bg-destructive-background text-white`;case"contrast":return`${a} bg-base-foreground text-base-background`;case"warn":return`${a} bg-warning-background text-base-background`;case"secondary":return`${a} bg-secondary-background text-base-foreground`;default:return`${a} bg-primary-background text-base-foreground`}}return n(o,"badgeClasses"),(t,a)=>(c(),_("span",{class:q(o(t.severity))},V(t.label),3))}}),pC={class:"min-w-0 flex-1"},fC={class:"block truncate text-sm text-base-foreground"},mC={class:"flex flex-shrink-0 items-center gap-2"},gC={class:"text-xs text-base-foreground"},vC={key:3,class:"text-xs text-muted-foreground"},hC=j({__name:"ProgressToastItem",props:{job:{}},setup(e){const{t:o}=de(),t=w(()=>Math.round(e.job.progress*100)),a=w(()=>e.job.status==="completed"),l=w(()=>e.job.status==="failed"),s=w(()=>e.job.status==="running"),i=w(()=>e.job.status==="created");return(r,u)=>(c(),_("div",{class:q(d(te)("flex items-center justify-between rounded-lg bg-modal-card-background px-4 py-3",a.value&&"opacity-50"))},[p("div",pC,[p("span",fC,V(r.job.assetName),1)]),p("div",mC,[l.value?(c(),_(ee,{key:0},[u[0]||(u[0]=p("i",{class:"icon-[lucide--circle-alert] size-4 text-destructive-background"},null,-1)),E(Ya,{label:d(o)("progressToast.failed"),severity:"danger"},null,8,["label"])],64)):a.value?(c(),O(Ya,{key:1,label:d(o)("progressToast.finished"),severity:"contrast"},null,8,["label"])):s.value?(c(),_(ee,{key:2},[u[1]||(u[1]=p("i",{class:"icon-[lucide--loader-circle] size-4 animate-spin text-base-foreground"},null,-1)),p("span",gC,V(t.value)+"% ",1)],64)):i.value?(c(),_("span",vC,V(d(o)("progressToast.pending")),1)):A("",!0)])],2))}}),yC={class:"flex h-12 items-center justify-between border-b border-border-default px-4"},bC={class:"text-sm font-bold text-base-foreground"},wC={class:"flex items-center gap-2"},kC={class:"flex min-w-30 flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},CC={class:"relative max-h-75 overflow-y-auto px-4 py-4"},xC={key:0,class:"absolute right-1 top-4 h-12 w-1 rounded-full bg-muted-foreground"},SC={class:"flex flex-col gap-2"},_C={key:1,class:"flex flex-col items-center justify-center py-6 text-center"},TC={class:"text-sm text-muted-foreground"},$C={class:"flex h-12 items-center justify-between gap-2 border-t border-border-default px-4"},NC={class:"flex min-w-0 flex-1 items-center gap-2 text-sm"},IC={class:"min-w-0 flex-1 truncate font-bold text-base-foreground"},PC={class:"min-w-0 truncate font-bold text-base-foreground"},MC={class:"min-w-0 truncate font-bold text-base-foreground"},DC={class:"flex flex-shrink-0 items-center gap-2"},AC={key:0,class:"whitespace-nowrap text-sm text-muted-foreground"},LC={class:"flex items-center"},EC=j({__name:"ModelImportProgressDialog",setup(e){const{t:o}=de(),t=Gu(),a=w(()=>t.hasDownloads),l=L(!1),s=L("all"),i=L(null);st(()=>!l.value,()=>i.value?.hide());const r=[{value:"all",label:"all"},{value:"completed",label:"completed"},{value:"failed",label:"failed"}];function u(I){i.value?.toggle(I)}n(u,"onFilterClick");function m(I){s.value=I,i.value?.hide()}n(m,"setFilter");const f=w(()=>t.downloadList),v=w(()=>t.finishedDownloads.filter(I=>I.status==="completed")),g=w(()=>t.finishedDownloads.filter(I=>I.status==="failed")),y=w(()=>t.hasActiveDownloads),k=w(()=>f.value.find(S=>S.status==="running")?.assetName||o("progressToast.downloadingModel")),C=w(()=>v.value.length+g.value.length),h=w(()=>f.value.length),b=w(()=>{switch(s.value){case"completed":return v.value;case"failed":return g.value;default:return f.value}}),T=w(()=>{const I=r.find(S=>S.value===s.value);return o(I?`progressToast.filter.${I.label}`:"progressToast.filter.all")});function $(){t.clearFinishedDownloads(),l.value=!1}return n($,"closeDialog"),(I,S)=>(c(),O(hi,{expanded:l.value,"onUpdate:expanded":S[0]||(S[0]=x=>l.value=x),visible:a.value},{default:M(()=>[p("div",yC,[p("h3",bC,V(d(o)("progressToast.importingModels")),1),p("div",wC,[E(Y,{variant:"secondary",size:"md",class:"gap-1.5 px-2",onClick:u},{default:M(()=>[S[1]||(S[1]=p("i",{class:"icon-[lucide--list-filter] size-4"},null,-1)),p("span",null,V(T.value),1),S[2]||(S[2]=p("i",{class:"icon-[lucide--chevron-down] size-3"},null,-1))]),_:1}),E(d(ot),{ref_key:"filterPopoverRef",ref:i,dismissable:!0,"close-on-escape":!0,unstyled:"","base-z-index":9999,pt:{root:{class:"absolute z-50"},content:{class:"bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg"}}},{default:M(()=>[p("div",kC,[(c(),_(ee,null,we(r,x=>E(Y,{key:x.value,variant:"textonly",size:"sm",class:q(d(te)("w-full justify-start bg-transparent",s.value===x.value&&"bg-secondary-background-selected")),onClick:n(N=>m(x.value),"onClick")},{default:M(()=>[Ce(V(d(o)(`progressToast.filter.${x.label}`)),1)]),_:2},1032,["class","onClick"])),64))])]),_:1},512)])]),p("div",CC,[b.value.length>3?(c(),_("div",xC)):A("",!0),p("div",SC,[(c(!0),_(ee,null,we(b.value,x=>(c(),O(hC,{key:x.taskId,job:x},null,8,["job"]))),128))]),b.value.length===0?(c(),_("div",_C,[p("span",TC,V(d(o)("progressToast.noImportsInQueue",{filter:T.value})),1)])):A("",!0)])]),footer:M(({toggle:x})=>[p("div",$C,[p("div",NC,[y.value?(c(),_(ee,{key:0},[S[3]||(S[3]=p("i",{class:"icon-[lucide--loader-circle] size-4 flex-shrink-0 animate-spin text-muted-foreground"},null,-1)),p("span",IC,V(k.value),1)],64)):g.value.length>0?(c(),_(ee,{key:1},[S[4]||(S[4]=p("i",{class:"icon-[lucide--circle-alert] size-4 flex-shrink-0 text-destructive-background"},null,-1)),p("span",PC,V(d(o)("progressToast.downloadsFailed",{count:g.value.length})),1)],64)):(c(),_(ee,{key:2},[S[5]||(S[5]=p("i",{class:"icon-[lucide--check-circle] size-4 flex-shrink-0 text-jade-600"},null,-1)),p("span",MC,V(d(o)("progressToast.allDownloadsCompleted")),1)],64))]),p("div",DC,[y.value?(c(),_("span",AC,V(d(o)("progressToast.progressCount",{completed:C.value,total:h.value})),1)):A("",!0),p("div",LC,[E(Y,{variant:"muted-textonly",size:"icon","aria-label":l.value?d(o)("contextMenu.Collapse"):d(o)("contextMenu.Expand"),onClick:ke(x,["stop"])},{default:M(()=>[p("i",{class:q(d(te)("size-4",l.value?"icon-[lucide--chevron-down]":"icon-[lucide--chevron-up]"))},null,2)]),_:2},1032,["aria-label","onClick"]),y.value?A("",!0):(c(),O(Y,{key:0,variant:"muted-textonly",size:"icon","aria-label":d(o)("g.close"),onClick:ke($,["stop"])},{default:M(()=>S[6]||(S[6]=[p("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"]))])])])]),_:1},8,["expanded","visible"]))}}),RC=10080*60*1e3,yi=Vt("versionCompatibility",()=>{const e=Ds(),o=ie(),t=w(()=>Hu.app_version),a=w(()=>e.systemStats?.system?.comfyui_version??""),l=w(()=>e.systemStats?.system?.required_frontend_version??""),s=w(()=>!t.value||!l.value||!Ft.valid(t.value)||!Ft.valid(l.value)?!1:Ft.gt(l.value,t.value)),i=w(()=>!1),r=w(()=>s.value),u=w(()=>!t.value||!a.value||!l.value?null:`${t.value}-${a.value}-${l.value}`),m=Ui("comfy.versionMismatch.dismissals",{},localStorage,{serializer:{read:n(b=>{try{return JSON.parse(b)}catch{return{}}},"read"),write:n(b=>JSON.stringify(b),"write")}}),f=w(()=>{if(!u.value)return!1;const b=m.value[u.value];return b?Date.now()<b:!1}),v=w(()=>o.get("Comfy.VersionCompatibility.DisableWarnings")),g=w(()=>r.value&&!f.value&&!v.value),y=w(()=>s.value?{type:"outdated",frontendVersion:t.value,requiredVersion:l.value}:null);async function k(){e.systemStats||await rl(e.isInitialized)}n(k,"checkVersionCompatibility");function C(){if(!u.value)return;const b=Date.now()+RC;m.value={...m.value,[u.value]:b}}n(C,"dismissWarning");async function h(){await k()}return n(h,"initialize"),{frontendVersion:t,backendVersion:a,requiredFrontendVersion:l,hasVersionMismatch:r,shouldShowWarning:g,warningMessage:y,isFrontendOutdated:s,isFrontendNewer:i,checkVersionCompatibility:k,dismissWarning:C,initialize:h}});function VC(e={}){const{immediate:o=!1}=e,{t}=de(),a=Rt(),l=yi();let s=!1;const i=n(()=>{if(s)return;const r=l.warningMessage;if(!r)return;const u=t("g.frontendOutdated",{frontendVersion:r.frontendVersion,requiredVersion:r.requiredVersion}),m=t("g.versionMismatchWarningMessage",{warning:t("g.versionMismatchWarning"),detail:u});a.addAlert(m),s=!0,l.dismissWarning()},"showWarning");return Re(async()=>{o&&(await We(),st(()=>l.shouldShowWarning,()=>{i()},{immediate:!0,once:!0}))}),{showWarning:i,shouldShowWarning:w(()=>l.shouldShowWarning),dismissWarning:l.dismissWarning,hasVersionMismatch:w(()=>l.hasVersionMismatch)}}n(VC,"useFrontendVersionMismatchWarning");function OC(){const e=Ul(),o=Do();let t=!1,a=0;Ie.addEventListener("graphChanged",()=>{o.mode==="change"&&(a?t=!0:(t=!1,J.queuePrompt(0,o.batchCount),a++))}),e.$subscribe(async()=>{a=e.count,!a&&!J.lastExecutionError&&(o.mode==="instant"||o.mode==="change"&&t)&&(t=!1,await J.queuePrompt(0,o.batchCount))},{detached:!0})}n(OC,"setupAutoQueueHandler");const WC={class:"flex flex-col p-1"},zC=["onClick"],oa=j({inheritAttrs:!1,__name:"Popover",props:{entries:{},icon:{},to:{}},setup(e){return(o,t)=>(c(),O(d(ud),null,{default:M(({close:a})=>[E(d(dd),{"as-child":""},{default:M(()=>[ge(o.$slots,"button",{},()=>[E(Y,{size:"icon"},{default:M(()=>[p("i",{class:q(o.icon??"icon-[lucide--ellipsis]")},null,2)]),_:1})])]),_:3}),E(d(cd),{to:o.to},{default:M(()=>[E(d(pd),tt({side:"bottom","side-offset":5,"collision-padding":10},o.$attrs,{class:"rounded-lg p-2 bg-base-background shadow-sm border border-border-subtle will-change-[transform,opacity] data-[state=open]:data-[side=top]:animate-slideDownAndFade data-[state=open]:data-[side=right]:animate-slideLeftAndFade data-[state=open]:data-[side=bottom]:animate-slideUpAndFade data-[state=open]:data-[side=left]:animate-slideRightAndFade"}),{default:M(()=>[ge(o.$slots,"default",{},()=>[p("div",WC,[(c(!0),_(ee,null,we(o.entries??[],(l,s)=>(c(),_("section",{key:s,class:"flex flex-col border-b-2 last:border-none border-border-subtle"},[(c(!0),_(ee,null,we(l,({label:i,action:r,icon:u})=>(c(),_("div",{key:i,class:q(d(te)("flex flex-row gap-4 p-2 rounded-sm my-1",r&&"cursor-pointer hover:bg-secondary-background-hover")),onClick:n(()=>{r&&(r(),a())},"onClick")},[u?(c(),_("i",{key:0,class:q(u)},null,2)):A("",!0),Ce(" "+V(i),1)],10,zC))),128))]))),128))])]),E(d(fd),{class:"fill-base-background stroke-border-subtle"})]),_:2},1040)]),_:2},1032,["to"])]),_:3}))}}),BC=["data-tf-widget"],Ja=j({__name:"TypeformPopoverButton",props:{dataTfWidget:{}},setup(e){const o=Qe("feedbackRef");return st(o,()=>{const t=document.createElement("script");t.src="//embed.typeform.com/next/embed.js",o.value?.appendChild(t)}),(t,a)=>(c(),O(oa,null,{button:M(()=>[E(Y,{variant:"inverted",class:"rounded-full size-12"},{default:M(()=>a[0]||(a[0]=[p("i",{class:"icon-[lucide--circle-question-mark] size-6"},null,-1)])),_:1})]),default:M(()=>[p("div",{ref_key:"feedbackRef",ref:o,"data-tf-auto-resize":"","data-tf-widget":t.dataTfWidget},null,8,BC)]),_:1}))}}),Xa=j({__name:"SubscribeToRun",setup(e){const{t:o}=de(),a=mo(vo).greaterOrEqual("md"),l=w(()=>a.value?o("subscription.subscribeToRunFull"):o("subscription.subscribeToRun")),{showSubscriptionDialog:s}=Fo(),i=n(()=>{s()},"handleSubscribeToRun");return(r,u)=>{const m=Ne("tooltip");return pe((c(),O(Y,{class:"subscribe-to-run-button whitespace-nowrap",variant:"primary",size:"sm",style:{background:"var(--color-subscription-button-gradient)",color:"var(--color-white)",borderColor:"transparent"},"data-testid":"subscribe-to-run-button",onClick:i},{default:M(()=>[u[0]||(u[0]=p("i",{class:"pi pi-lock"},null,-1)),Ce(" "+V(l.value),1)]),_:1})),[[m,{value:r.$t("subscription.subscribeToRunFull"),showDelay:600},void 0,{bottom:!0}]])}}}),FC=["textContent"],UC=j({__name:"DropZone",props:{onDragOver:{type:Function},onDragDrop:{type:Function},dropIndicator:{}},setup(e){const o=L(!1);return(t,a)=>t.onDragOver&&t.onDragDrop?(c(),_("div",{key:0,class:q(d(te)("rounded-lg ring-inset ring-primary-500",o.value&&"ring-4 bg-primary-500/10")),onDragover:a[1]||(a[1]=ke(l=>o.value=t.onDragOver?.(l),["prevent"])),onDragleave:a[2]||(a[2]=l=>o.value=!1),onDrop:a[3]||(a[3]=ke(l=>{t.onDragDrop(l),o.value=!1},["stop","prevent"]))},[ge(t.$slots,"default"),t.dropIndicator?(c(),_("div",{key:0,class:q(d(te)("flex flex-col items-center justify-center gap-2 border-dashed rounded-lg border h-25 border-border-subtle m-3 py-2",t.dropIndicator?.onClick&&"cursor-pointer")),onClick:a[0]||(a[0]=ke(l=>t.dropIndicator?.onClick?.(l),["prevent"]))},[t.dropIndicator.label?(c(),_("span",{key:0,textContent:V(t.dropIndicator.label)},null,8,FC)):A("",!0),t.dropIndicator.iconClass?(c(),_("i",{key:1,class:q(t.dropIndicator.iconClass)},null,2)):A("",!0)],2)):A("",!0)],34)):ge(t.$slots,"default",{key:1})}}),GC={class:"flex flex-col min-w-80 md:h-full"},HC={key:0,"data-testid":"linear-run-button",class:"p-4 pb-6 border-t border-node-component-border"},jC={key:1,class:"flex mt-4 gap-2"},qC={"data-testid":"linear-workflow-info",class:"h-12 border-x border-border-subtle py-2 px-4 gap-2 bg-comfy-menu-bg flex items-center md:contain-size"},KC=["textContent"],QC={key:0,class:"w-full border-t border-border-subtle"},YC={class:"border gap-2 md:h-full border-[var(--interface-stroke)] bg-comfy-menu-bg flex flex-col px-2"},JC={"data-testid":"linear-widgets",class:"grow-1 md:overflow-y-auto md:contain-size"},XC={key:0,class:"w-full border-t-1 border-node-component-border"},ZC={key:0,"data-testid":"linear-run-button",class:"p-4 pb-6 border-t border-node-component-border"},ex={key:1,class:"flex mt-4 gap-2"},tx={class:"bg-base-foreground text-base-background rounded-sm flex h-8 p-1 pr-2 gap-2 items-center"},ox={key:0,class:"icon-[lucide--check] size-5 bg-success-background"},nx={key:1,class:"icon-[lucide--loader-circle] size-4 animate-spin"},sx=["textContent"],Qn=j({__name:"LinearControls",props:{toastTo:{},notesTo:{},mobile:{type:Boolean}},setup(e,{expose:o}){const t=Te(),a=dt(),{batchCount:l}=Be(Do()),{isActiveSubscription:s}=Fo(),i=Ae(),r=L(!0),{ready:u,start:m}=Gi(5e3,{controls:!0,immediate:!1}),f=Ke(J.rootGraph.nodes);Ee(J.rootGraph.events,"configured",()=>f.value=J.rootGraph.nodes);function v(C){const h=C.type!=="LoadImage"?void 0:{iconClass:"icon-[lucide--image]",label:se("linearMode.dragAndDropImage"),onClick:n(()=>C.widgets?.[1]?.callback?.(void 0),"onClick")},b=ln(C);for(const T of b.widgets??[])T.slotMetadata=void 0;return{...b,hasErrors:!!a.lastNodeErrors?.[C.id],dropIndicator:h,onDragDrop:C.onDragDrop,onDragOver:C.onDragOver}}n(v,"nodeToNodeData");const g=w(()=>{const C=Hi(f.value.filter(h=>h.mode===0&&h.widgets?.length).map(v).reverse(),h=>["MarkdownNote","Note"].includes(h.type));for(const h of C[0])for(const b of h.widgets??[])b.options={...b.options,read_only:!0};return C}),y={options:{precision:0,min:1,max:99},value:1,name:se("linearMode.runCount"),type:"number"};async function k(C){if(r.value)try{r.value=!1,m();const b="shiftKey"in C&&C.shiftKey?"Comfy.QueuePromptFront":"Comfy.QueuePrompt";os()?.trackUiButtonClicked({button_id:"queue_run_linear"}),l.value>1&&os()?.trackUiButtonClicked({button_id:"queue_run_multiple_batches_submitted"}),await t.execute(b,{metadata:{subscribe_to_run:!1,trigger_source:"button"}})}finally{r.value=!0}}return n(k,"runButtonClick"),o({runButtonClick:k}),(C,h)=>(c(),_(ee,null,[p("div",GC,[C.mobile?(c(),_("section",HC,[E(_a,{modelValue:d(l),"onUpdate:modelValue":h[0]||(h[0]=b=>je(l)?l.value=b:null),widget:y,class:"*:[.min-w-0]:w-24 grid-cols-[auto_96px]!"},null,8,["modelValue"]),d(s)?(c(),_("div",jC,[E(Y,{variant:"primary",class:"grow-1",size:"lg",onClick:k},{default:M(()=>[h[4]||(h[4]=p("i",{class:"icon-[lucide--play]"},null,-1)),Ce(" "+V(d(se)("menu.run")),1)]),_:1}),d(a).isIdle?A("",!0):(c(),O(Y,{key:0,variant:"destructive",size:"lg",class:"w-10 p-2",onClick:h[1]||(h[1]=b=>d(t).execute("Comfy.Interrupt"))},{default:M(()=>h[5]||(h[5]=[p("i",{class:"icon-[lucide--x]"},null,-1)])),_:1}))])):(c(),O(Xa,{key:0,class:"w-full mt-4"}))])):A("",!0),p("section",qC,[p("span",{class:"font-bold truncate",textContent:V(d(i).activeWorkflow?.filename)},null,8,KC),h[7]||(h[7]=p("div",{class:"flex-1"},null,-1)),g.value[0].length?(c(),O(oa,{key:0,align:"start",class:"overflow-y-auto overflow-x-clip max-h-(--reka-popover-content-available-height) z-100",reference:C.notesTo,side:"left",to:C.notesTo},{button:M(()=>[E(Y,{variant:"muted-textonly"},{default:M(()=>h[6]||(h[6]=[p("i",{class:"icon-[lucide--info]"},null,-1)])),_:1})]),default:M(()=>[p("div",null,[(c(!0),_(ee,null,we(g.value[0],(b,T)=>(c(),_(ee,{key:b.id},[T!==0?(c(),_("div",QC)):A("",!0),E(ls,{"node-data":b,style:be({background:d(as)(b.bgcolor)}),class:"py-3 gap-y-3 **:[.col-span-2]:grid-cols-1 not-has-[textarea]:flex-0 rounded-lg"},null,8,["node-data","style"])],64))),128))])]),_:1},8,["reference","to"])):A("",!0),A("",!0)]),p("div",YC,[p("section",JC,[(c(!0),_(ee,null,we(g.value[1],(b,T)=>(c(),_(ee,{key:b.id},[T!==0?(c(),_("div",XC)):A("",!0),E(UC,{"on-drag-over":b.onDragOver,"on-drag-drop":b.onDragDrop,"drop-indicator":C.mobile?void 0:b.dropIndicator,class:"text-muted-foreground"},{default:M(()=>[E(ls,{"node-data":b,class:q(d(te)("py-3 gap-y-3 **:[.col-span-2]:grid-cols-1 not-has-[textarea]:flex-0 rounded-lg",b.hasErrors&&"ring-2 ring-inset ring-node-stroke-error")),style:be({background:d(as)(b.bgcolor)})},null,8,["node-data","class","style"])]),_:2},1032,["on-drag-over","on-drag-drop","drop-indicator"])],64))),128))]),C.mobile?A("",!0):(c(),_("section",ZC,[E(_a,{modelValue:d(l),"onUpdate:modelValue":h[2]||(h[2]=b=>je(l)?l.value=b:null),widget:y,class:"*:[.min-w-0]:w-24 grid-cols-[auto_96px]!"},null,8,["modelValue"]),d(s)?(c(),_("div",ex,[E(Y,{variant:"primary",class:"grow-1",size:"lg",onClick:k},{default:M(()=>[h[8]||(h[8]=p("i",{class:"icon-[lucide--play]"},null,-1)),Ce(" "+V(d(se)("menu.run")),1)]),_:1}),d(a).isIdle?A("",!0):(c(),O(Y,{key:0,variant:"destructive",size:"lg",class:"w-10 p-2",onClick:h[3]||(h[3]=b=>d(t).execute("Comfy.Interrupt"))},{default:M(()=>h[9]||(h[9]=[p("i",{class:"icon-[lucide--x]"},null,-1)])),_:1}))])):(c(),O(Xa,{key:0,class:"w-full mt-4"}))]))])]),(!d(u)||!r.value)&&C.toastTo?(c(),O(kt,{key:0,defer:"",to:C.toastTo},[p("div",tx,[r.value?(c(),_("i",ox)):(c(),_("i",nx)),p("span",{textContent:V(d(se)("queue.jobAddedToQueue"))},null,8,sx)])],8,["to"])):A("",!0),A("",!0)],64))}}),ax=j({__name:"ZoomPane",setup(e){const o=Qe("zoomPane"),t=L(1),a=L(0),l=L(0);function s(f){const v=o.value;if(!v)return;t.value-=f.deltaY;const{x:g,y,width:k,height:C}=v.getBoundingClientRect(),h=f.clientX-g-k/2,b=f.clientY-y-C/2,T=1.1**(f.deltaY/-30);l.value=l.value*T-b*(T-1),a.value=a.value*T-h*(T-1)}n(s,"handleWheel");let i=!1;function r(f){if(f.button!==0)return;const v=o.value;v&&(v.parentElement?.focus(),v.setPointerCapture(f.pointerId),i=!0)}n(r,"handleDown");function u(f){i&&(a.value+=f.movementX,l.value+=f.movementY)}n(u,"handleMove");const m=w(()=>{const f=1.1**(t.value/30);return`matrix(${[f,0,0,f,a.value,l.value].join(",")})`});return(f,v)=>(c(),_("div",{ref_key:"zoomPane",ref:o,class:"contain-size flex place-content-center",onWheel:s,onPointerdown:ke(r,["prevent"]),onPointermove:u,onPointerup:v[0]||(v[0]=g=>je(i)?i.value=!1:i=!1),onPointercancel:v[1]||(v[1]=g=>je(i)?i.value=!1:i=!1)},[ge(f.$slots,"default",{style:be({transform:m.value})})],544))}}),lx=["src"],ix=["src"],rx=["textContent"],ux=j({__name:"ImagePreview",props:{src:{},mobile:{type:Boolean}},setup(e){const o=Qe("imageRef"),t=L(""),a=L("");return(l,s)=>(c(),_(ee,null,[l.mobile?(c(),_("img",{key:1,ref_key:"imageRef",ref:o,class:"w-full",src:l.src,onLoad:s[1]||(s[1]=()=>{d(o)&&(t.value=`${d(o).naturalWidth}`,a.value=`${d(o).naturalHeight}`)})},null,40,ix)):(c(),O(ax,{key:0,class:"flex-1 w-full"},{default:M(i=>[p("img",tt({ref_key:"imageRef",ref:o,src:l.src},i,{onLoad:s[0]||(s[0]=()=>{d(o)&&(t.value=`${d(o).naturalWidth}`,a.value=`${d(o).naturalHeight}`)})}),null,16,lx)]),_:1})),p("span",{class:"self-center md:z-10",textContent:V(`${t.value} x ${a.value}`)},null,8,rx)],64))}}),dx={class:"pointer-events-none absolute top-0 left-0 size-full"},cx=j({__name:"Preview3d",props:{modelUrl:{}},setup(e){const o=Qe("containerRef"),t=ju();return le([o,()=>e.modelUrl],async()=>{!o.value||!e.modelUrl||await t.initializeStandaloneViewer(o.value,e.modelUrl)}),(a,l)=>(c(),_("div",{ref_key:"containerRef",ref:o,class:"relative w-full h-full",onMouseenter:l[6]||(l[6]=(...s)=>d(t).handleMouseEnter&&d(t).handleMouseEnter(...s)),onMouseleave:l[7]||(l[7]=(...s)=>d(t).handleMouseLeave&&d(t).handleMouseLeave(...s)),onResize:l[8]||(l[8]=(...s)=>d(t).handleResize&&d(t).handleResize(...s))},[p("div",dx,[d(t).animations.value&&d(t).animations.value.length>0?(c(),O(qu,{key:0,animations:d(t).animations.value,"onUpdate:animations":l[0]||(l[0]=s=>d(t).animations.value=s),playing:d(t).playing.value,"onUpdate:playing":l[1]||(l[1]=s=>d(t).playing.value=s),"selected-speed":d(t).selectedSpeed.value,"onUpdate:selectedSpeed":l[2]||(l[2]=s=>d(t).selectedSpeed.value=s),"selected-animation":d(t).selectedAnimation.value,"onUpdate:selectedAnimation":l[3]||(l[3]=s=>d(t).selectedAnimation.value=s),"animation-progress":d(t).animationProgress.value,"onUpdate:animationProgress":l[4]||(l[4]=s=>d(t).animationProgress.value=s),"animation-duration":d(t).animationDuration.value,"onUpdate:animationDuration":l[5]||(l[5]=s=>d(t).animationDuration.value=s),onSeek:d(t).handleSeek},null,8,["animations","playing","selected-speed","selected-animation","animation-progress","animation-duration","onSeek"])):A("",!0)])],544))}}),px=["src"],fx=["textContent"],mx=j({__name:"VideoPreview",props:{src:{}},setup(e){const o=Qe("videoRef"),t=L(""),a=L("");return(l,s)=>(c(),_(ee,null,[p("video",tt({ref_key:"videoRef",ref:o,src:l.src,controls:""},l.$attrs,{onLoadedmetadata:s[0]||(s[0]=()=>{d(o)&&(t.value=`${d(o).videoWidth}`,a.value=`${d(o).videoHeight}`)})}),null,16,px),p("span",{class:"self-center z-10",textContent:V(`${t.value} x ${a.value}`)},null,8,fx)],64))}}),bi={"3d":{content:se("sideToolbar.mediaAssets.filter3D"),iconClass:"icon-[lucide--box]"},audio:{content:se("sideToolbar.mediaAssets.filterAudio"),iconClass:"icon-[lucide--audio-lines]"},images:{content:se("sideToolbar.mediaAssets.filterImage"),iconClass:"icon-[lucide--image]"},text:{content:se("sideToolbar.mediaAssets.filterText"),iconClass:"icon-[lucide--text]"},video:{content:se("sideToolbar.mediaAssets.filterVideo"),iconClass:"icon-[lucide--video]"}};function Mt(e){return e?e.isVideo?"video":e.mediaType:""}n(Mt,"getMediaType");const gx={key:0,"data-testid":"linear-output-info",class:"flex flex-wrap gap-2 p-1 w-full md:z-10 tabular-nums justify-between text-sm"},vx={class:"flex gap-3 text-nowrap"},hx={class:"flex gap-3 justify-self-end"},yx=["src"],bx=["textContent"],wx={key:6,class:"pointer-events-none object-contain flex-1 max-h-full brightness-50 opacity-10",src:Yu},Za=j({__name:"LinearPreview",props:{latentPreview:{},runButtonClick:{type:Function},selectedItem:{},selectedOutput:{},mobile:{type:Boolean}},setup(e){const o=Ku(),t={month:"short",day:"numeric",year:"numeric"},a={hour:"numeric",minute:"numeric",second:"numeric"};function l(m){if(!m)return"";const f=new Date(m);return`${ts(f,t)} | ${ts(f,a)}`}n(l,"formatTime");const s=w(()=>{if(!e.selectedItem)return[];const m=is(e.selectedItem.user_metadata);if(!m)return[];const{allOutputs:f}=m;return[{content:l(e.selectedItem.created_at)},{content:Qu(m.executionTimeInSeconds)},f&&{content:se("g.asset",f.length)},(e.selectedOutput&&bi[Mt(e.selectedOutput)])??{}].filter(v=>!!v)});function i(m){const f=is(m?.user_metadata);for(const v of f?.allOutputs??[])Ao(v.url,v.filename)}n(i,"downloadAsset");async function r(m){if(!m)return;const{workflow:f}=await Ju(m);if(!f)return;if(f.id!==J.rootGraph.id)return J.loadGraphData(f);const v=Ae().activeWorkflow?.changeTracker;if(!v)return J.loadGraphData(f);v.redoQueue=[],v.updateState([f],v.undoQueue)}n(r,"loadWorkflow");async function u(m){e.runButtonClick&&(await r(e.selectedItem),await new Promise(f=>setTimeout(f,500)),Xu(xl(J.rootGraph),"afterQueued"),e.runButtonClick(m))}return n(u,"rerun"),(m,f)=>(c(),_(ee,null,[m.selectedItem?(c(),_("section",gx,[p("div",vx,[(c(!0),_(ee,null,we(s.value,({content:v,iconClass:g},y)=>(c(),_("div",{key:y,class:"flex items-center justify-items-center gap-1 tabular-nums"},[g?(c(),_("i",{key:0,class:q(g)},null,2)):A("",!0),Ce(" "+V(v),1)]))),128))]),p("div",hx,[E(Y,{size:"md",onClick:u},{default:M(()=>[Ce(V(d(se)("linearMode.rerun"))+" ",1),f[2]||(f[2]=p("i",{class:"icon-[lucide--refresh-cw]"},null,-1))]),_:1}),E(Y,{size:"md",onClick:f[0]||(f[0]=()=>r(m.selectedItem))},{default:M(()=>[Ce(V(d(se)("linearMode.reuseParameters"))+" ",1),f[3]||(f[3]=p("i",{class:"icon-[lucide--list-restart]"},null,-1))]),_:1}),f[5]||(f[5]=p("div",{class:"border-r border-border-subtle mx-1"},null,-1)),E(Y,{size:"icon",onClick:f[1]||(f[1]=()=>{m.selectedOutput?.url&&d(Ao)(m.selectedOutput.url)})},{default:M(()=>f[4]||(f[4]=[p("i",{class:"icon-[lucide--download]"},null,-1)])),_:1}),E(oa,{entries:[[{icon:"icon-[lucide--download]",label:d(se)("linearMode.downloadAll"),action:n(()=>i(m.selectedItem),"action")}],[{icon:"icon-[lucide--trash-2]",label:d(se)("queue.jobMenu.deleteAsset"),action:n(()=>d(o).confirmDelete(m.selectedItem),"action")}]]},null,8,["entries"])])])):A("",!0),m.latentPreview??d(Mt)(m.selectedOutput)==="images"?(c(),O(ux,{key:1,mobile:m.mobile,src:m.latentPreview??m.selectedOutput.url},null,8,["mobile","src"])):d(Mt)(m.selectedOutput)==="video"?(c(),O(mx,{key:2,src:m.selectedOutput.url,class:"object-contain flex-1 contain-size"},null,8,["src"])):d(Mt)(m.selectedOutput)==="audio"?(c(),_("audio",{key:3,class:"w-full m-auto",controls:"",src:m.selectedOutput.url},null,8,yx)):d(Mt)(m.selectedOutput)==="text"?(c(),_("article",{key:4,class:"w-full max-w-128 m-auto my-12 overflow-y-auto",textContent:V(m.selectedOutput.url)},null,8,bx)):d(Mt)(m.selectedOutput)==="3d"?(c(),O(cx,{key:5,"model-url":m.selectedOutput.url},null,8,["model-url"])):(c(),_("img",wx))],64))}}),kx={key:0,class:"h-full flex flex-col w-14 shrink-0 overflow-hidden items-center p-2"},Cx={key:0,"data-testid":"linear-job",class:"py-3 not-md:h-24 md:w-full aspect-square px-1 relative"},xx={key:0,class:"icon-[lucide--loader-circle] size-full animate-spin"},Sx={key:1,class:"icon-[lucide--ellipsis] size-full animate-pulse"},_x=["textContent"],Tx=["src","onClick"],$x=["onClick"],Yn=j({__name:"OutputHistory",props:{scrollResetButtonTo:{},mobile:{type:Boolean}},emits:["updateSelection"],setup(e,{expose:o,emit:t}){const a=L(!1),l=Zu("output"),s=Ot(),i=ie(),r=lt().getSidebarTabs().find(S=>S.id==="workflows");l.fetchMediaList();const u=t;o({onWheel:I});const m=L([-1,0]);le(m,()=>{const[S]=m.value;u("updateSelection",[l.media.value[S],C.value,m.value[0]<=0])});const f=Qe("outputsRef"),{reset:v}=ji(f,l.loadMore,{canLoadMore:n(()=>l.hasMore.value,"canLoadMore")});function g(){v(),f.value?.scrollTo(0,0)}n(g,"resetOutputsScroll");const{y}=Cs(f);le(m,()=>{const[S,x]=m.value;if(!f.value)return;const N=f.value?.children?.[S]?.children?.[x];N&&N.scrollIntoView({block:"nearest"})});function k(S){const x=is(S?.user_metadata);return x?.allOutputs?x.allOutputs:[]}n(k,"allOutputs");const C=w(()=>{const[S,x]=m.value;if(S<0)return;const N=k(l.media.value[S])[x];return N||k(l.media.value[0])[0]});le(()=>l.media.value,(S,x)=>{if(S.length===x.length||x.length===0)return;if(m.value[0]<=0){m.value=[0,0];return}const N=mn(x[m.value[0]]?.id),P=mn(S).findIndex(D=>D?.id===N);P===-1?m.value=[0,0]:m.value=[P,m.value[1]]});function h(){const[S,x]=m.value;if(S<0||x<0){m.value=[0,0];return}const N=l.media.value[S];if(k(N)[x+1]){m.value=[S,x+1];return}l.media.value[S+1]&&(m.value=[S+1,0])}n(h,"gotoNextOutput");function b(){const[S,x]=m.value;if(x>0){m.value=[S,x-1];return}if(S>0){const N=l.media.value[S-1];m.value=[S-1,k(N).length-1];return}m.value=[0,0]}n(b,"gotoPreviousOutput");let T=new sn(document.body),$=0;function I(S){if(!(!S.ctrlKey&&!S.metaKey)){if(S.preventDefault(),S.stopPropagation(),!T.isTrackpadGesture(S)){S.deltaY>0?h():b();return}for($+=S.deltaY;$>=60;)$-=60,h();for(;$<=-60;)$+=60,b()}}return n(I,"onWheel"),Ee(document.body,"keydown",S=>{S.key!=="ArrowDown"&&S.key!=="ArrowUp"||S.target instanceof HTMLTextAreaElement||S.target instanceof HTMLInputElement||(S.preventDefault(),S.stopPropagation(),S.key==="ArrowDown"?h():b())}),(S,x)=>(c(),_(ee,null,[p("div",tt({class:d(te)("min-w-38 flex bg-comfy-menu-bg md:h-full border-border-subtle",d(i).get("Comfy.Sidebar.Location")==="right"?"flex-row-reverse border-l":"md:border-r")},S.$attrs),[S.mobile?A("",!0):(c(),_("div",kx,[d(r)?(c(),O(Wt,{key:0,icon:d(r).icon,"icon-badge":d(r).iconBadge,tooltip:d(r).tooltip,label:d(r).label||d(r).title,class:q(d(r).id+"-tab-button"),selected:a.value,"is-small":d(i).get("Comfy.Sidebar.Size")==="small",onClick:x[0]||(x[0]=N=>a.value=!a.value)},null,8,["icon","icon-badge","tooltip","label","class","selected","is-small"])):A("",!0),E(di),x[1]||(x[1]=p("div",{class:"flex-1"},null,-1)),E(ui)])),x[2]||(x[2]=p("div",{class:"border-border-subtle md:border-r"},null,-1)),a.value?(c(),O(ed,{key:1,class:"min-w-50"})):(c(),_("article",{key:2,ref_key:"outputsRef",ref:f,"data-testid":"linear-outputs",class:"h-24 md:h-full min-w-24 grow-1 p-3 overflow-x-auto overflow-y-clip md:overflow-y-auto md:overflow-x-clip md:border-r-1 border-node-component-border flex md:flex-col items-center contain-size"},[d(s).runningTasks.length>0||d(s).pendingTasks.length>0?(c(),_("section",Cx,[d(s).runningTasks.length>0?(c(),_("i",xx)):(c(),_("i",Sx)),d(s).runningTasks.length+d(s).pendingTasks.length>1?(c(),_("div",{key:2,class:"absolute top-0 right-0 p-1 min-w-5 h-5 flex justify-center items-center rounded-full bg-primary-background text-text-primary",textContent:V(d(s).runningTasks.length+d(s).pendingTasks.length)},null,8,_x)):A("",!0)])):A("",!0),(c(!0),_(ee,null,we(d(l).media.value,(N,P)=>(c(),_("section",{key:P,"data-testid":"linear-job",class:"py-3 not-md:h-24 border-border-subtle flex md:flex-col md:w-full px-1 first:border-t-0 first:border-l-0 md:border-t-2 not-md:border-l-2"},[(c(!0),_(ee,null,we(k(N),(D,W)=>(c(),_(ee,{key:W},[d(Mt)(D)==="images"?(c(),_("img",{key:0,class:q(d(te)("p-1 rounded-lg aspect-square object-cover",P===m.value[0]&&W===m.value[1]&&"border-2")),src:D.url,onClick:n(F=>m.value=[P,W],"onClick")},null,10,Tx)):(c(),_("div",{key:1,class:q(d(te)("p-1 rounded-lg aspect-square w-full",P===m.value[0]&&W===m.value[1]&&"border-2")),onClick:n(F=>m.value=[P,W],"onClick")},[p("i",{class:q(d(te)(d(bi)[d(Mt)(D)]?.iconClass,"size-full"))},null,2)],10,$x))],64))),128))]))),128))],512))],16),d(y)&&S.scrollResetButtonTo?(c(),O(kt,{key:0,to:S.scrollResetButtonTo},[E(Y,{class:q(d(te)("p-3 size-10 bg-base-foreground",d(i).get("Comfy.Sidebar.Location")==="left"?"left-4":"right-4")),onClick:g},{default:M(()=>x[3]||(x[3]=[p("i",{class:"icon-[lucide--arrow-up] size-4 bg-base-background"},null,-1)])),_:1},8,["class"])],8,["to"])):A("",!0)],64))}}),Nx={class:"workflow-tabs-container pointer-events-auto h-9.5 w-full"},Ix={class:"flex h-full items-center"},Px={key:0,class:"justify-center border-border-subtle border-t overflow-y-scroll h-[calc(100%-38px)] bg-comfy-menu-bg"},Mx={class:"flex flex-col text-muted-foreground"},Dx={class:"text-base-foreground flex items-center gap-4 justify-end m-4"},Ax=["textContent"],Lx={class:"absolute z-20 bottom-4 right-4 text-base-foreground flex items-center gap-4"},Ex=["textContent"],Rx=j({__name:"LinearView",setup(e){const o=Go(),t=ie(),a=mo(vo).smaller("md"),l=L(!1);st(()=>o.latestPreview[0],()=>l.value=!0);const s=L(),i=L(),r=L(!0),u=Qe("outputHistoryRef"),m=Qe("topLeftRef"),f=Qe("topRightRef"),v=Qe("bottomLeftRef"),g=Qe("bottomRightRef"),y=Qe("linearWorkflowRef");return(k,C)=>(c(),_("div",{class:"absolute w-full h-full",onWheelCapture:C[4]||(C[4]=h=>d(u)?.onWheel(h))},[p("div",Nx,[p("div",Ix,[E(pi),E(ci)])]),d(a)?(c(),_("div",Px,[p("div",Mx,[E(Za,{"latent-preview":r.value&&l.value?d(o).latestPreview[0]:void 0,"run-button-click":d(y)?.runButtonClick,"selected-item":s.value,"selected-output":i.value,mobile:""},null,8,["latent-preview","run-button-click","selected-item","selected-output"])]),E(Yn,{ref_key:"outputHistoryRef",ref:u,mobile:"",onUpdateSelection:C[0]||(C[0]=([h,b,T])=>{s.value=h,i.value=b,r.value=T,l.value=!1})},null,512),E(Qn,{ref_key:"linearWorkflowRef",ref:y,mobile:""},null,512),p("div",Dx,[p("a",{href:"https://form.typeform.com/to/gmVqFi8l",textContent:V(d(se)("linearMode.beta"))},null,8,Ax),E(Ja,{"data-tf-widget":"gmVqFi8l"})])])):(c(),O(d(es),{key:1,class:"h-[calc(100%-38px)] w-full bg-comfy-menu-secondary-bg",pt:{gutter:{class:"bg-transparent w-4 -mx-3"}},onResizestart:C[3]||(C[3]=({originalEvent:h})=>h.preventDefault())},{default:M(()=>[E(d(Dt),{id:"linearLeftPanel",size:1,class:"min-w-min outline-none"},{default:M(()=>[d(t).get("Comfy.Sidebar.Location")==="left"?(c(),O(Yn,{key:0,ref_key:"outputHistoryRef",ref:u,"scroll-reset-button-to":d(no)(d(v))??void 0,onUpdateSelection:C[1]||(C[1]=([h,b,T])=>{s.value=h,i.value=b,r.value=T,l.value=!1})},null,8,["scroll-reset-button-to"])):(c(),O(Qn,{key:1,ref_key:"linearWorkflowRef",ref:y,"toast-to":d(no)(d(v))??void 0,"notes-to":d(no)(d(m))??void 0},null,8,["toast-to","notes-to"])),C[5]||(C[5]=p("div",null,null,-1))]),_:1}),E(d(Dt),{id:"linearCenterPanel",size:98,class:"flex flex-col min-w-min gap-4 mx-2 px-10 pt-8 pb-4 relative text-muted-foreground outline-none"},{default:M(()=>[E(Za,{"latent-preview":r.value&&l.value?d(o).latestPreview[0]:void 0,"run-button-click":d(y)?.runButtonClick,"selected-item":s.value,"selected-output":i.value},null,8,["latent-preview","run-button-click","selected-item","selected-output"]),p("div",{ref_key:"topLeftRef",ref:m,class:"absolute z-20 top-4 left-4"},null,512),p("div",{ref_key:"topRightRef",ref:f,class:"absolute z-20 top-4 right-4"},null,512),p("div",{ref_key:"bottomLeftRef",ref:v,class:"absolute z-20 bottom-4 left-4"},null,512),p("div",{ref_key:"bottomRightRef",ref:g,class:"absolute z-20 bottom-24 right-4"},null,512),p("div",Lx,[p("div",{textContent:V(d(se)("linearMode.beta"))},null,8,Ex),E(Ja,{"data-tf-widget":"gmVqFi8l",align:d(t).get("Comfy.Sidebar.Location")==="left"?"end":"start"},null,8,["align"])])]),_:1}),E(d(Dt),{id:"linearRightPanel",size:1,class:"min-w-min outline-none"},{default:M(()=>[d(t).get("Comfy.Sidebar.Location")==="left"?(c(),O(Qn,{key:0,ref_key:"linearWorkflowRef",ref:y,"toast-to":d(no)(d(g))??void 0,"notes-to":d(no)(d(f))??void 0},null,8,["toast-to","notes-to"])):(c(),O(Yn,{key:1,ref_key:"outputHistoryRef",ref:u,"scroll-reset-button-to":d(no)(d(g))??void 0,onUpdateSelection:C[2]||(C[2]=([h,b,T])=>{s.value=h,i.value=b,r.value=T,l.value=!1})},null,8,["scroll-reset-button-to"])),C[6]||(C[6]=p("div",null,null,-1))]),_:1})]),_:1}))],32))}}),Vx={key:0,class:"flex items-center px-4 py-2"},Ox={class:"flex w-full items-center justify-between py-2"},Wx={class:"flex flex-col text-sm leading-normal font-medium"},zx={class:"text-muted"},Bx={class:"h-full"},Fx={class:"break-words whitespace-pre-wrap"},Ux={class:"flex w-full items-center justify-between px-6 py-2 shadow-lg"},Gx={class:"flex items-center text-base leading-none"},Hx={class:"flex items-center"},jx={class:"flex items-center gap-4"},qx={key:0,class:"text-sm text-muted-foreground"},Kx={class:"flex items-center"},Qx=j({__name:"ManagerProgressToast",setup(e){const{t:o}=de(),t=td(),a=ie(),{runFullConflictAnalysis:l}=Al(),s=L(!1),i=L(0),r=w(()=>[{label:o("manager.installationQueue")},{label:o("manager.failed",{count:t.failedTasksIds.length})}]),u=w(()=>i.value===0?t.succeededTasksLogs:t.failedTasksLogs),m=w(()=>t.taskLogs.length>0),f=L(!1),v=L(!1),g=w(()=>t.isProcessingTasks||f.value),y=n(G=>{const Q=u.value[G];if(!Q)return!1;const K=t.taskQueue;return K?[...K.running_queue||[],...K.pending_queue||[]].some(ne=>ne.ui_id===Q.taskId):!1},"isTaskInProgress"),k=w(()=>t.succeededTasksIds.length+t.failedTasksIds.length),C=w(()=>{const G=Object.keys(t.taskHistory).length,Q=t.taskQueue,K=Q?(Q.running_queue?.length||0)+(Q.pending_queue?.length||0):0;return G+K}),h=w(()=>f.value?o("manager.restartingBackend"):v.value?o("manager.extensionsSuccessfullyInstalled"):t.taskLogs.length?t.taskLogs.at(-1)?.taskName??o("manager.installingDependencies"):o("manager.installingDependencies")),b=L({});function T(G){b.value[G]=!b.value[G]}n(T,"togglePanel");const $=L(null),{y:I}=Cs($,{eventListenerOptions:{passive:!0}}),S=L(null),x=L(!1),N=w(()=>u.value?.at(-1)?.logs);function P(G){return G?Math.abs(G.scrollHeight-G.scrollTop-G.clientHeight)<20:!1}n(P,"isAtBottom");function D(){!S.value||x.value||(S.value.scrollTop=S.value.scrollHeight)}n(D,"scrollLastPanelToBottom");function W(){I.value=$.value?.scrollHeight??0}n(W,"scrollContentToBottom");function F(){x.value=!1}n(F,"resetUserScrolling");function z(G){const Q=G.target;Q===S.value&&(x.value=!P(Q))}n(z,"handleScroll");function U(){x.value||D()}n(U,"onLogsAdded"),st(N,U,{flush:"post",deep:!0}),st(()=>s.value,W),st(()=>!s.value,F);function H(){t.resetTaskState(),s.value=!1}n(H,"closeToast");async function B(){const G=a.get("Comfy.Toast.DisableReconnectingToast");try{await a.set("Comfy.Toast.DisableReconnectingToast",!0),f.value=!0,Ee(Ie,"reconnected",n(async()=>{try{t.setStale(),await Te().execute("Comfy.RefreshNodeDefinitions"),await it().reloadCurrentWorkflow(),l()}finally{await a.set("Comfy.Toast.DisableReconnectingToast",G),f.value=!1,v.value=!0,setTimeout(()=>{H()},3e3)}},"onReconnect"),{once:!0}),await El().rebootComfyUI()}catch(Q){throw await a.set("Comfy.Toast.DisableReconnectingToast",G),f.value=!1,v.value=!1,H(),Q}}return n(B,"handleRestart"),Re(()=>{W()}),nt(()=>{s.value=!1}),(G,Q)=>(c(),O(hi,{expanded:s.value,"onUpdate:expanded":Q[1]||(Q[1]=K=>s.value=K),visible:m.value},{default:M(()=>[s.value?(c(),_("div",Vx,[E(d(lr),{"active-index":i.value,"onUpdate:activeIndex":Q[0]||(Q[0]=K=>i.value=K),model:r.value,class:"w-full border-none",pt:{menu:{class:"border-none"},menuitem:{class:"font-medium"},action:{class:"px-4 py-2"}}},null,8,["active-index","model"])])):A("",!0),p("div",{ref_key:"sectionsContainerRef",ref:$,class:"scroll-container max-h-[450px] overflow-y-auto px-6 py-4",style:{scrollbarWidth:"thin",scrollbarColor:"rgba(156, 163, 175, 0.5) transparent"}},[(c(!0),_(ee,null,we(u.value,(K,X)=>(c(),_("div",{key:X},[E(d(Ss),{expanded:b.value[X]===!0,toggleable:"",class:"shadow-elevation-1 mt-2 rounded-lg"},{header:M(()=>[p("div",Ox,[p("div",Wx,[p("span",null,V(K.taskName),1),p("span",zx,V(y(X)?d(o)("g.inProgress"):d(o)("g.completed")+" ✓"),1)])])]),toggleicon:M(()=>[E(Y,{variant:"textonly",class:"text-neutral-300",onClick:n(ne=>T(X),"onClick")},{default:M(()=>[p("i",{class:q(b.value[X]?"pi pi-chevron-right":"pi pi-chevron-down")},null,2)]),_:2},1032,["onClick"])]),default:M(()=>[p("div",{ref_for:!0,ref:X===u.value.length-1?ne=>S.value=ne:void 0,class:q(["h-64 overflow-y-auto rounded-lg bg-black",{"h-64":X!==u.value.length-1,grow:X===u.value.length-1}]),onScroll:z},[p("div",Bx,[(c(!0),_(ee,null,we(K.logs,(ne,Z)=>(c(),_("div",{key:Z,class:"text-muted"},[p("pre",Fx,V(ne),1)]))),128))])],34)]),_:2},1032,["expanded"])]))),128))],512)]),footer:M(({toggle:K})=>[p("div",Ux,[p("div",Gx,[p("div",Hx,[g.value?(c(),_(ee,{key:0},[E(od,{duration:"1s",class:"mr-2"}),p("span",null,V(h.value),1)],64)):v.value?(c(),_(ee,{key:1},[Q[2]||(Q[2]=p("span",{class:"mr-2"},"🎉",-1)),p("span",null,V(h.value),1)],64)):(c(),_(ee,{key:2},[Q[3]||(Q[3]=p("span",{class:"mr-2"},"✅",-1)),p("span",null,V(d(o)("manager.restartToApplyChanges")),1)],64))])]),p("div",jx,[g.value?(c(),_("span",qx,V(k.value)+" "+V(d(o)("g.progressCountOf"))+" "+V(C.value),1)):A("",!0),p("div",Kx,[!g.value&&!v.value?(c(),O(Y,{key:0,variant:"secondary",class:"mr-4 rounded-full border-2 border-base-foreground px-3 text-base-foreground hover:bg-secondary-background-hover",onClick:B},{default:M(()=>[Ce(V(d(o)("manager.applyChanges")),1)]),_:1})):v.value?A("",!0):(c(),O(Y,{key:1,variant:"muted-textonly",size:"sm",class:"rounded-full font-bold","aria-label":d(o)(s.value?"contextMenu.Collapse":"contextMenu.Expand"),onClick:ke(K,["stop"])},{default:M(()=>[p("i",{class:q(s.value?"pi pi-chevron-up":"pi pi-chevron-down")},null,2)]),_:2},1032,["aria-label","onClick"])),E(Y,{variant:"muted-textonly",size:"sm",class:"rounded-full font-bold","aria-label":d(o)("g.close"),onClick:ke(H,["stop"])},{default:M(()=>Q[4]||(Q[4]=[p("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])])])]),_:1},8,["expanded","visible"]))}}),Yx={class:"comfyui-body grid h-full w-full overflow-hidden"},Jx=j({__name:"GraphView",setup(e){OC(),uC(),Qk();const{t:o}=de(),t=Qt(),a=ie(),l=dt(),s=St(),i=Ot(),r=$s(),u=yi(),m=L(null),{linearMode:f}=Be(he());$l(),le(()=>s.completedActivePalette,N=>{const P="dark-theme";N.light_theme?document.body.classList.remove(P):document.body.classList.add(P),Xe()&&Mo().changeTheme({color:"rgba(0, 0, 0, 0)",symbolColor:N.colors.comfy_base["input-text"]})},{immediate:!0}),Xe()&&le(()=>i.tasks,(N,P)=>{const D=new Set(P.filter(W=>W.isRunning).map(W=>W.promptId));N.filter(W=>D.has(W.promptId)&&W.isHistory).forEach(W=>{Mo().Events.incrementUserProperty(`execution:${W.displayStatus.toLowerCase()}`,1),Mo().Events.trackEvent("execution",{status:W.displayStatus.toLowerCase()})})},{deep:!0}),xe(()=>{const N=a.get("Comfy.TextareaWidget.FontSize");document.documentElement.style.setProperty("--comfy-textarea-font-size",`${N}px`)}),xe(()=>{const N=a.get("Comfy.TreeExplorer.ItemPadding");document.documentElement.style.setProperty("--comfy-tree-explorer-item-padding",`${N}px`)}),xe(async()=>{const N=a.get("Comfy.Locale");if(N)try{await nd(N),Cl.global.locale.value=N}catch(P){console.error(`Failed to switch to locale "${N}":`,P)}});const v=w(()=>a.get("Comfy.UseNewMenu"));xe(()=>{v.value==="Disabled"?(J.ui.menuContainer.style.setProperty("display","block"),J.ui.restoreMenuPosition()):J.ui.menuContainer.style.setProperty("display","none")}),xe(()=>{i.maxHistoryItems=a.get("Comfy.Queue.MaxHistoryItems")});const g=n(()=>{const N=rC();Te().registerCommands(N),Rl().registerCoreMenuCommands(),Rn().registerCoreKeybindings(),gn().registerCoreSidebarTabs(),yo().registerCoreBottomPanelTabs(),J.extensionManager=lt()},"init"),y=Ul(),k=gn(),C=n(async N=>{y.update(N),await i.update(),(k.activeSidebarTabId==="assets"||f.value)&&await r.updateHistory()},"onStatus"),h=n(async()=>{await i.update(),k.activeSidebarTabId==="assets"&&await r.updateHistory()},"onExecutionSuccess"),b={severity:"error",summary:o("g.reconnecting")},T=n(()=>{a.get("Comfy.Toast.DisableReconnectingToast")||(t.remove(b),t.add(b))},"onReconnecting"),$=n(()=>{a.get("Comfy.Toast.DisableReconnectingToast")||(t.remove(b),t.add({severity:"success",summary:o("g.reconnected"),life:2e3}))},"onReconnected");Re(()=>{Ie.addEventListener("status",C),Ie.addEventListener("execution_success",h),Ie.addEventListener("reconnecting",T),Ie.addEventListener("reconnected",$),l.bindExecutionEvents();try{g(),m.value?.prepend(J.ui.menuContainer)}catch(N){console.error("Failed to init ComfyUI frontend",N)}}),nt(()=>{Ie.removeEventListener("status",C),Ie.removeEventListener("execution_success",h),Ie.removeEventListener("reconnecting",T),Ie.removeEventListener("reconnected",$),l.unbindExecutionEvents()}),Ee(window,"keydown",Rn().keybindHandler);const{wrapWithErrorHandling:I,wrapWithErrorHandlingAsync:S}=Yt();VC({immediate:!0}),We(()=>{u.initialize().catch(N=>{console.warn("Version compatibility check failed:",N)})});const x=n(()=>{Ql(()=>{I(Rn().registerUserKeybindings)(),I(rd().loadServerConfig)(dC,a.get("Comfy.Server.ServerConfigValues")),S(sd().loadModelFolders)(),S(Vs().loadNodeFrequencies)(),It().nodeSearchService.searchNode("")},1e3)},"onGraphReady");return(N,P)=>(c(),_(ee,null,[p("div",Yx,[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)),pe(p("div",{id:"graph-canvas-container",ref_key:"graphCanvasContainerRef",ref:m,class:"graph-canvas-container"},[E(Gk,{onReady:x})],512),[[et,!d(f)]]),d(f)?(c(),O(Rx,{key:0})):A("",!0)]),E(Jc),E(qk),E(EC),E(Qx),d(Xe)()?A("",!0):(c(),O(ep,{key:0})),E(Zc)],64))}}),Xx=Ve(Jx,[["__scopeId","data-v-0aea237e"]]),cS=Object.freeze(Object.defineProperty({__proto__:null,default:Xx},Symbol.toStringTag,{value:"Module"}));export{cS as G,jc as _,Qc as a,dp as g};
|
|
15
|
-
//# sourceMappingURL=GraphView-Dwrm8D3J.js.map
|