comfyui-frontend-package 1.37.1__py3-none-any.whl → 1.37.2__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.
Files changed (99) hide show
  1. comfyui_frontend_package/static/assets/{AboutPanel-CTGWwQqp.js → AboutPanel-DLChcmDc.js} +2 -2
  2. comfyui_frontend_package/static/assets/{AboutPanel-CTGWwQqp.js.map → AboutPanel-DLChcmDc.js.map} +1 -1
  3. comfyui_frontend_package/static/assets/{AudioPreviewPlayer-DDwwIMxr.js → AudioPreviewPlayer-B8RfUAL6.js} +2 -2
  4. comfyui_frontend_package/static/assets/{AudioPreviewPlayer-DDwwIMxr.js.map → AudioPreviewPlayer-B8RfUAL6.js.map} +1 -1
  5. comfyui_frontend_package/static/assets/{ComfyQueueButton-BDRXGOWF.js → ComfyQueueButton-DRgA2g3T.js} +2 -2
  6. comfyui_frontend_package/static/assets/{ComfyQueueButton-BDRXGOWF.js.map → ComfyQueueButton-DRgA2g3T.js.map} +1 -1
  7. comfyui_frontend_package/static/assets/{ExtensionPanel-Dxe7qElb.js → ExtensionPanel-CpMR9h6B.js} +2 -2
  8. comfyui_frontend_package/static/assets/{ExtensionPanel-Dxe7qElb.js.map → ExtensionPanel-CpMR9h6B.js.map} +1 -1
  9. comfyui_frontend_package/static/assets/{GraphView-Cx4wYzNo.js → GraphView-xK7kCVVH.js} +5 -5
  10. comfyui_frontend_package/static/assets/{GraphView-Cx4wYzNo.js.map → GraphView-xK7kCVVH.js.map} +1 -1
  11. comfyui_frontend_package/static/assets/{KeybindingPanel-pmyMPZHn.js → KeybindingPanel-CM_PwegN.js} +2 -2
  12. comfyui_frontend_package/static/assets/{KeybindingPanel-pmyMPZHn.js.map → KeybindingPanel-CM_PwegN.js.map} +1 -1
  13. comfyui_frontend_package/static/assets/{LazyImage.vue_vue_type_script_setup_true_lang-C3ynRbso.js → LazyImage.vue_vue_type_script_setup_true_lang-Dza6G4hd.js} +2 -2
  14. comfyui_frontend_package/static/assets/{LazyImage.vue_vue_type_script_setup_true_lang-C3ynRbso.js.map → LazyImage.vue_vue_type_script_setup_true_lang-Dza6G4hd.js.map} +1 -1
  15. comfyui_frontend_package/static/assets/{LegacyCreditsPanel-DSos04Q3.js → LegacyCreditsPanel-BujZmWgC.js} +2 -2
  16. comfyui_frontend_package/static/assets/{LegacyCreditsPanel-DSos04Q3.js.map → LegacyCreditsPanel-BujZmWgC.js.map} +1 -1
  17. comfyui_frontend_package/static/assets/{Load3D-Cu5zG2Cw.js → Load3D-DWafZUud.js} +2 -2
  18. comfyui_frontend_package/static/assets/Load3D-DWafZUud.js.map +1 -0
  19. comfyui_frontend_package/static/assets/{Load3D.vue_vue_type_script_setup_true_lang-BJ0IqFdp.js → Load3D.vue_vue_type_script_setup_true_lang-_XswHXHt.js} +2 -2
  20. comfyui_frontend_package/static/assets/{Load3D.vue_vue_type_script_setup_true_lang-BJ0IqFdp.js.map → Load3D.vue_vue_type_script_setup_true_lang-_XswHXHt.js.map} +1 -1
  21. comfyui_frontend_package/static/assets/{Media3DBottom-DsMr4v-s.js → Media3DBottom-Z9nkVIUT.js} +2 -2
  22. comfyui_frontend_package/static/assets/{Media3DBottom-DsMr4v-s.js.map → Media3DBottom-Z9nkVIUT.js.map} +1 -1
  23. comfyui_frontend_package/static/assets/{Media3DTop-DQ18QW3M.js → Media3DTop-DKaMli8A.js} +2 -2
  24. comfyui_frontend_package/static/assets/{Media3DTop-DQ18QW3M.js.map → Media3DTop-DKaMli8A.js.map} +1 -1
  25. comfyui_frontend_package/static/assets/{MediaAudioBottom-99GB7NqQ.js → MediaAudioBottom-B62n8OnR.js} +2 -2
  26. comfyui_frontend_package/static/assets/{MediaAudioBottom-99GB7NqQ.js.map → MediaAudioBottom-B62n8OnR.js.map} +1 -1
  27. comfyui_frontend_package/static/assets/{MediaImageBottom-C6Bpu_d9.js → MediaImageBottom-DChcPA0h.js} +2 -2
  28. comfyui_frontend_package/static/assets/{MediaImageBottom-C6Bpu_d9.js.map → MediaImageBottom-DChcPA0h.js.map} +1 -1
  29. comfyui_frontend_package/static/assets/{MediaTitle.vue_vue_type_script_setup_true_lang-BFgOqxto.js → MediaTitle.vue_vue_type_script_setup_true_lang-CFkifLSX.js} +2 -2
  30. comfyui_frontend_package/static/assets/{MediaTitle.vue_vue_type_script_setup_true_lang-BFgOqxto.js.map → MediaTitle.vue_vue_type_script_setup_true_lang-CFkifLSX.js.map} +1 -1
  31. comfyui_frontend_package/static/assets/{MediaVideoBottom-DgdszioB.js → MediaVideoBottom-fWb8qHcu.js} +2 -2
  32. comfyui_frontend_package/static/assets/{MediaVideoBottom-DgdszioB.js.map → MediaVideoBottom-fWb8qHcu.js.map} +1 -1
  33. comfyui_frontend_package/static/assets/{ServerConfigPanel-BlC22rDX.js → ServerConfigPanel-umnHESaV.js} +2 -2
  34. comfyui_frontend_package/static/assets/{ServerConfigPanel-BlC22rDX.js.map → ServerConfigPanel-umnHESaV.js.map} +1 -1
  35. comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-BdL9OjAj.js +2 -0
  36. comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-BdL9OjAj.js.map +1 -0
  37. comfyui_frontend_package/static/assets/{UserPanel-Ccmz94Hx.js → UserPanel-CwkZrKjy.js} +2 -2
  38. comfyui_frontend_package/static/assets/{UserPanel-Ccmz94Hx.js.map → UserPanel-CwkZrKjy.js.map} +1 -1
  39. comfyui_frontend_package/static/assets/{UserSelectView-DVFY57_D.js → UserSelectView-TeLhcKfi.js} +2 -2
  40. comfyui_frontend_package/static/assets/{UserSelectView-DVFY57_D.js.map → UserSelectView-TeLhcKfi.js.map} +1 -1
  41. comfyui_frontend_package/static/assets/{ValueControlPopover-BLxzZY7u.js → ValueControlPopover-CSvGimoz.js} +2 -2
  42. comfyui_frontend_package/static/assets/{ValueControlPopover-BLxzZY7u.js.map → ValueControlPopover-CSvGimoz.js.map} +1 -1
  43. comfyui_frontend_package/static/assets/{WidgetAudioUI-BtX1BUnO.js → WidgetAudioUI-CfZQ32fr.js} +2 -2
  44. comfyui_frontend_package/static/assets/{WidgetAudioUI-BtX1BUnO.js.map → WidgetAudioUI-CfZQ32fr.js.map} +1 -1
  45. comfyui_frontend_package/static/assets/{WidgetButton-CyIVF8iQ.js → WidgetButton-Bo9rWiUg.js} +2 -2
  46. comfyui_frontend_package/static/assets/{WidgetButton-CyIVF8iQ.js.map → WidgetButton-Bo9rWiUg.js.map} +1 -1
  47. comfyui_frontend_package/static/assets/{WidgetColorPicker-BcGFRyIl.js → WidgetColorPicker-CyNNmSC9.js} +2 -2
  48. comfyui_frontend_package/static/assets/{WidgetColorPicker-BcGFRyIl.js.map → WidgetColorPicker-CyNNmSC9.js.map} +1 -1
  49. comfyui_frontend_package/static/assets/{WidgetGalleria-CfluZbRG.js → WidgetGalleria-X2v42F2a.js} +2 -2
  50. comfyui_frontend_package/static/assets/{WidgetGalleria-CfluZbRG.js.map → WidgetGalleria-X2v42F2a.js.map} +1 -1
  51. comfyui_frontend_package/static/assets/WidgetInputNumber-BL6P8as9.js +2 -0
  52. comfyui_frontend_package/static/assets/WidgetInputNumber-BL6P8as9.js.map +1 -0
  53. comfyui_frontend_package/static/assets/{WidgetInputNumber.vue_vue_type_script_setup_true_lang-Bmxd6b-H.js → WidgetInputNumber.vue_vue_type_script_setup_true_lang-DPaOKLY2.js} +2 -2
  54. comfyui_frontend_package/static/assets/{WidgetInputNumber.vue_vue_type_script_setup_true_lang-Bmxd6b-H.js.map → WidgetInputNumber.vue_vue_type_script_setup_true_lang-DPaOKLY2.js.map} +1 -1
  55. comfyui_frontend_package/static/assets/{WidgetInputText-CecuaK0n.js → WidgetInputText-LR89p-m1.js} +2 -2
  56. comfyui_frontend_package/static/assets/{WidgetInputText-CecuaK0n.js.map → WidgetInputText-LR89p-m1.js.map} +1 -1
  57. comfyui_frontend_package/static/assets/{WidgetLayoutField.vue_vue_type_script_setup_true_lang-CbjST6rI.js → WidgetLayoutField.vue_vue_type_script_setup_true_lang-C5dBI8au.js} +2 -2
  58. comfyui_frontend_package/static/assets/{WidgetLayoutField.vue_vue_type_script_setup_true_lang-CbjST6rI.js.map → WidgetLayoutField.vue_vue_type_script_setup_true_lang-C5dBI8au.js.map} +1 -1
  59. comfyui_frontend_package/static/assets/{WidgetLegacy-B8P9bOsC.js → WidgetLegacy-CJpsLPyI.js} +2 -2
  60. comfyui_frontend_package/static/assets/WidgetLegacy-CJpsLPyI.js.map +1 -0
  61. comfyui_frontend_package/static/assets/{WidgetMarkdown-nXPgrFZi.js → WidgetMarkdown-DrH35WSE.js} +2 -2
  62. comfyui_frontend_package/static/assets/{WidgetMarkdown-nXPgrFZi.js.map → WidgetMarkdown-DrH35WSE.js.map} +1 -1
  63. comfyui_frontend_package/static/assets/{WidgetRecordAudio-C6urheNU.js → WidgetRecordAudio-DL4kMpXw.js} +2 -2
  64. comfyui_frontend_package/static/assets/{WidgetRecordAudio-C6urheNU.js.map → WidgetRecordAudio-DL4kMpXw.js.map} +1 -1
  65. comfyui_frontend_package/static/assets/WidgetSelect-Bk32AcQe.js +2 -0
  66. comfyui_frontend_package/static/assets/WidgetSelect-Bk32AcQe.js.map +1 -0
  67. comfyui_frontend_package/static/assets/{WidgetSelect.vue_vue_type_script_setup_true_lang-DTcBUlhn.js → WidgetSelect.vue_vue_type_script_setup_true_lang-CHjOuVyH.js} +2 -2
  68. comfyui_frontend_package/static/assets/{WidgetSelect.vue_vue_type_script_setup_true_lang-DTcBUlhn.js.map → WidgetSelect.vue_vue_type_script_setup_true_lang-CHjOuVyH.js.map} +1 -1
  69. comfyui_frontend_package/static/assets/{WidgetTextarea-DuXhEnsH.js → WidgetTextarea-orpeeVx4.js} +2 -2
  70. comfyui_frontend_package/static/assets/{WidgetTextarea-DuXhEnsH.js.map → WidgetTextarea-orpeeVx4.js.map} +1 -1
  71. comfyui_frontend_package/static/assets/{WidgetToggleSwitch-BTeDQHuf.js → WidgetToggleSwitch-CSN313_V.js} +2 -2
  72. comfyui_frontend_package/static/assets/{WidgetToggleSwitch-BTeDQHuf.js.map → WidgetToggleSwitch-CSN313_V.js.map} +1 -1
  73. comfyui_frontend_package/static/assets/{WidgetWithControl.vue_vue_type_script_setup_true_lang-DFvQ9Mdf.js → WidgetWithControl.vue_vue_type_script_setup_true_lang-CU_cmbAA.js} +3 -3
  74. comfyui_frontend_package/static/assets/{WidgetWithControl.vue_vue_type_script_setup_true_lang-DFvQ9Mdf.js.map → WidgetWithControl.vue_vue_type_script_setup_true_lang-CU_cmbAA.js.map} +1 -1
  75. comfyui_frontend_package/static/assets/{audioService-B43wn81n.js → audioService-DvqSt3rU.js} +2 -2
  76. comfyui_frontend_package/static/assets/{audioService-B43wn81n.js.map → audioService-DvqSt3rU.js.map} +1 -1
  77. comfyui_frontend_package/static/assets/{audioUtils-iqnmct8N.js → audioUtils-bxVioEE3.js} +2 -2
  78. comfyui_frontend_package/static/assets/{audioUtils-iqnmct8N.js.map → audioUtils-bxVioEE3.js.map} +1 -1
  79. comfyui_frontend_package/static/assets/{index-FoJ8Eu4a.js → index-BODInyrK.js} +21 -21
  80. comfyui_frontend_package/static/assets/{index-FoJ8Eu4a.js.map → index-BODInyrK.js.map} +1 -1
  81. comfyui_frontend_package/static/assets/{index-BbFKUlCt.js → index-CyS0uSKu.js} +2 -2
  82. comfyui_frontend_package/static/assets/{index-BbFKUlCt.js.map → index-CyS0uSKu.js.map} +1 -1
  83. comfyui_frontend_package/static/assets/{index-B2FA5n0E.js → index-fwtcK193.js} +2 -2
  84. comfyui_frontend_package/static/assets/{index-B2FA5n0E.js.map → index-fwtcK193.js.map} +1 -1
  85. comfyui_frontend_package/static/assets/{keybindingService-D_lPZZ7u.js → keybindingService-DR_nPGKY.js} +2 -2
  86. comfyui_frontend_package/static/assets/{keybindingService-D_lPZZ7u.js.map → keybindingService-DR_nPGKY.js.map} +1 -1
  87. comfyui_frontend_package/static/index.html +1 -1
  88. {comfyui_frontend_package-1.37.1.dist-info → comfyui_frontend_package-1.37.2.dist-info}/METADATA +1 -1
  89. {comfyui_frontend_package-1.37.1.dist-info → comfyui_frontend_package-1.37.2.dist-info}/RECORD +91 -91
  90. comfyui_frontend_package/static/assets/Load3D-Cu5zG2Cw.js.map +0 -1
  91. comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-CY-BY6v5.js +0 -2
  92. comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-CY-BY6v5.js.map +0 -1
  93. comfyui_frontend_package/static/assets/WidgetInputNumber-BTFa3T0H.js +0 -2
  94. comfyui_frontend_package/static/assets/WidgetInputNumber-BTFa3T0H.js.map +0 -1
  95. comfyui_frontend_package/static/assets/WidgetLegacy-B8P9bOsC.js.map +0 -1
  96. comfyui_frontend_package/static/assets/WidgetSelect-VznDfSeg.js +0 -2
  97. comfyui_frontend_package/static/assets/WidgetSelect-VznDfSeg.js.map +0 -1
  98. {comfyui_frontend_package-1.37.1.dist-info → comfyui_frontend_package-1.37.2.dist-info}/WHEEL +0 -0
  99. {comfyui_frontend_package-1.37.1.dist-info → comfyui_frontend_package-1.37.2.dist-info}/top_level.txt +0 -0
@@ -1,16 +1,16 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SubscriptionRequiredDialogContent-CY-BY6v5.js","./index-FoJ8Eu4a.js","./vendor-primevue-rR0TB_Js.js","./vendor-other-BxP-0xn6.js","./vendor-other-DYX1NpEr.css","./vendor-vue-BEnTqVKr.js","./vendor-xterm-CWYFmgbN.js","./vendor-xterm-xj0gfbX3.css","./vendor-three-BsnVSA6y.js","./vendor-tiptap-4vvRsqpM.js","./index-DD6YW1q7.css","./UserAvatar.vue_vue_type_script_setup_true_lang-Bxj7Xy09.js","./index-BbFKUlCt.js","./LazyImage.vue_vue_type_script_setup_true_lang-C3ynRbso.js","./keybindingService-D_lPZZ7u.js","./serverConfigStore-Rd8VWEbH.js","./WidgetInputNumber.vue_vue_type_script_setup_true_lang-Bmxd6b-H.js","./widgetPropFilter-CygYoMQt.js","./WidgetLayoutField.vue_vue_type_script_setup_true_lang-CbjST6rI.js","./WidgetWithControl.vue_vue_type_script_setup_true_lang-DFvQ9Mdf.js","./WidgetInputNumber-DIHSnjON.css","./SubscriptionRequiredDialogContent-BJ80blC4.css","./ComfyQueueButton-BDRXGOWF.js","./ComfyQueueButton-Chw03MdC.css"])))=>i.map(i=>d[i]);
2
- var Ml=Object.defineProperty;var n=(e,o)=>Ml(e,"name",{value:o,configurable:!0});import{bp as Je,r as E,E as k,c$ as ra,bq as H,db as Pl,i as Dl,dY as Jo,w as se,c as N,d as m,l as ue,z as W,e as f,v as Ye,k as L,s as Q,br as C,q as O,p as Ne,T as zn,j as F,u as z,F as le,y as be,A as _e,cF as Bn,cG as Bo,eb as Al,ec as ua,m as $t,D as Fn,I as ke,G as ve,L as ze,ed as ys,dt as xn,d$ as _n,ee as El,h as Se,J as Yt,dZ as Yo,bu as Qo,cp as ca,b9 as ft,d8 as gt,df as da,n as Oe,du as he,o as Le,cH as bs,ef as Ll,d1 as qt,cX as Ae,dV as Vl,cu as Gt,d3 as Xo,eg as Ol,dj as pa,a as Tn,eh as fa,f as ma,ei as Rl,c6 as lt,x as Dt,t as Qt,cr as Un,c_ as ko,dW as Wl,ej as eo,dw as Ct,dh as va,be as zl,d9 as Bl,cy as ga,b as ha,bs as ws,ek as Fl,el as po,em as Ul,bb as ks,en as Gl,ci as ya,cq as At,d5 as ba,bc as wa,d7 as jl,cY as Zo,eo as Hl,cZ as ql,dr as ka,dk as Kl,bg as Jl,g as Cs,bd as Ca,ds as Yl,cV as Ql,dq as Sa,ep as Xl,e8 as Zl,dQ as ei}from"./vendor-other-BxP-0xn6.js";import{d as Ot,u as de,s as Fe,j as xa,k as _a}from"./vendor-vue-BEnTqVKr.js";import{b as ti,p as Ze,_ as Gn,u as Rt,a0 as Ta,a1 as Nn,a2 as _t,O as Na,w as Kt,a3 as $a,e as oi,a4 as ni,a as jn,q as Ss,M as si,Q as ai,R as li,J as ii,a5 as ri,v as Ia,o as Ma,L as Pa,T as xo,c as ui,y as Da,g as ci,a6 as di,a7 as pi,m as fi,k as uo}from"./vendor-primevue-rR0TB_Js.js";import{s as ye,n as Re,a as we,i as Aa,b as mt,c as pe,_ as ee,d as De,S as en,t as re,u as ht,e as ie,f as Nt,g as mi,E as Hn,h as Fo,j as vi,k as qn,l as Kn,m as gi,o as et,p as tt,q as J,r as hi,v as Pe,w as to,x as Uo,y as oo,z as Ce,A as Qe,B as yi,C as yt,D as ot,F as Ea,G as La,H as Jn,I as Va,J as fe,K as bi,L as St,M as Oa,N as no,O as wi,P as ki,Q as tn,R as Ci,T as Si,U as xi,V as Wt,W as Ra,X as _i,Y as Ti,Z as Yn,$ as so,a0 as ao,a1 as Wa,a2 as za,a3 as Ni,a4 as pt,a5 as Be,a6 as Jt,a7 as $i,a8 as fo,a9 as Ii,aa as Mi,ab as Xt,ac as Me,ad as Ba,ae as Pi,af as it,ag as Di,ah as Ai,ai as lo,aj as me,ak as Ei,al as Li,am as Et,an as je,ao as Ao,ap as Vi,aq as zt,ar as Zt,as as Oi,at as Qn,au as Xn,av as Go,aw as Zn,ax as vt,ay as Lt,az as Ri,aA as Tt,aB as Ee,aC as Fa,aD as on,aE as Wi,aF as zi,aG as Ua,aH as Bi,aI as Fi,aJ as Ui,aK as Gi,aL as nn,aM as go,aN as ji,aO as Hi,aP as qi,aQ as Ki,aR as Ji,aS as ln,aT as Yi,aU as Qi,aV as Xi,aW as Zi,aX as er,aY as tr,aZ as or,a_ as nr,a$ as sr,b0 as es,b1 as ar,b2 as xs,b3 as lr,b4 as ir,b5 as rr,b6 as ur,b7 as cr,b8 as kt,b9 as Eo,ba as Lo,bb as Vo,bc as Oo,bd as Ga,be as ja,bf as dr,bg as pr,bh as fr,bi as Ha,bj as qa,bk as mr,bl as Ka,bm as mo,bn as vr,bo as ts,bp as Ja,bq as gr,br as Ya,bs as hr,bt as yr,bu as br,bv as Qa,bw as wr,bx as _s,by as kr,bz as Cr,bA as os,bB as Sr,bC as dt,bD as Xa,bE as xr,bF as _r,bG as jt,bH as Tr,bI as Nr,bJ as $r,bK as Ir,bL as Mr,bM as Pr,bN as Dr,bO as Ar,bP as rn,bQ as _o,bR as Er,bS as Za,bT as un,bU as Lr,bV as Vr,bW as cn,bX as el,bY as Ts,bZ as Or,b_ as Rr,b$ as Co,c0 as dn,c1 as Wr,c2 as zr,c3 as Br,c4 as Fr,c5 as Ns,c6 as $s,c7 as Is,c8 as Ur,c9 as tl,ca as Gr,cb as jr,cc as Hr,cd as qr,ce as Ms,cf as Kr,cg as Ps,ch as Jr,ci as Yr,cj as Ds,ck as As,cl as Qr,cm as Xr,cn as vo,co as Zr,cp as eu,cq as tu,cr as ou,cs as nu,ct as ol,cu as su,cv as au,cw as lu,cx as iu}from"./index-FoJ8Eu4a.js";import{_ as nl}from"./UserAvatar.vue_vue_type_script_setup_true_lang-Bxj7Xy09.js";import{W as ru}from"./index-BbFKUlCt.js";import{_ as jo,u as uu,a as cu,b as du,c as ho,d as pu}from"./LazyImage.vue_vue_type_script_setup_true_lang-C3ynRbso.js";import{u as pn}from"./keybindingService-D_lPZZ7u.js";import{u as fu}from"./serverConfigStore-Rd8VWEbH.js";import{_ as mu}from"./WidgetInputNumber.vue_vue_type_script_setup_true_lang-Bmxd6b-H.js";const fn=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"),sl=Ot("workflowTemplates",()=>{const e=Je({}),o=Je([]),t=Je([]),s=E(!1),a=E(new Set),l=n(_=>d.value.find(S=>S.name===_),"getTemplateByName"),i=E(new Map),r=n((_,S)=>({..._,localizedTitle:ye(`templateWorkflows.template.${Re(S)}.${Re(_.name)}`,_.title??_.name),localizedDescription:ye(`templateWorkflows.templateDescription.${Re(S)}.${Re(_.name)}`,_.description)}),"addLocalizedFieldsToTemplate"),u=n((_,S)=>_.map(x=>r(x,S)),"localizeTemplateList"),p=n(_=>({..._,localizedTitle:ye(`templateWorkflows.category.${Re(_.title)}`,_.title??_.moduleName),templates:u(_.templates,_.title)}),"localizeTemplateCategory"),v=n(()=>{const _=o.value.flatMap(x=>x.templates.map(D=>({...r(D,x.title),sourceModule:x.moduleName}))),S=Object.entries(e.value).flatMap(([x,D])=>D.map(P=>({name:P,mediaType:"image",mediaSubtype:"jpg",description:P,sourceModule:x})));return{moduleName:"all",title:"All",localizedTitle:ye("templateWorkflows.category.All","All Templates"),templates:[..._,...S]}},"createAllCategory"),h=k(()=>{const _=[...o.value.map(p),...Object.entries(e.value).map(([x,D])=>({moduleName:x,title:x,localizedTitle:ye(`templateWorkflows.category.${Re(x)}`,x),templates:D.map(P=>({name:P,mediaType:"image",mediaSubtype:"jpg",description:P}))}))];return[{label:ye("templateWorkflows.category.ComfyUI Examples","ComfyUI Examples"),modules:[v(),..._.filter(x=>x.moduleName==="default")]},...Object.keys(e.value).length>0?[{label:ye("templateWorkflows.category.Custom Nodes","Custom Nodes"),modules:_.filter(x=>x.moduleName!=="default")}]:[]]}),d=k(()=>{const _=[];return o.value.forEach(x=>{x.templates.forEach(D=>{const P={...D,sourceModule:x.moduleName,category:x.title,categoryType:x.type,categoryGroup:x.category,isEssential:x.isEssential,isPartnerNode:D.openSource===!1,searchableText:[D.title||D.name,D.description||"",x.title,...D.tags||[],...D.models||[]].join(" ")};_.push(P)})}),Object.entries(e.value).forEach(([x,D])=>{D.forEach(P=>{const T={name:P,title:P,description:P,mediaType:"image",mediaSubtype:"jpg",sourceModule:x,category:"Extensions",categoryType:"extension",searchableText:`${P} ${x} extension`};_.push(T)})}),_.filter(x=>!x.requiresCustomNodes?.length)}),b=k(()=>{const _={keys:[{name:"searchableText",weight:.4},{name:"title",weight:.3},{name:"name",weight:.2},{name:"tags",weight:.1}],threshold:.3,includeScore:!0};return new ra(d.value,_)}),y=n(_=>{if(_==="all")return d.value;if(_==="basics")return d.value.filter(x=>x.isEssential);if(_==="partner-nodes")return d.value.filter(x=>x.isPartnerNode);if(_.startsWith("extension-")){const x=_.replace("extension-","");return d.value.filter(D=>D.sourceModule===x)}const S=i.value.get(_);return S?d.value.filter(x=>!(S.category&&x.category!==S.category||S.categoryGroup&&x.categoryGroup!==S.categoryGroup)):d.value},"filterTemplatesByCategory"),g=k(()=>{if(!s.value)return[];const _=[];i.value.clear(),_.push({id:"all",label:ye("templateWorkflows.category.All","All Templates"),icon:fn("all")});const S=o.value.find(T=>T.isEssential&&T.templates.length>0);if(S){const T=S.title??"Getting Started";_.push({id:"basics",label:ye(`templateWorkflows.category.${Re(T)}`,T),icon:"icon-[lucide--graduation-cap]"})}const x=new Map;if(o.value.forEach(T=>{if(T.isEssential)return;const $=T.category,I=T.icon;if($){x.has($)||x.set($,{title:$,items:[]});const B=x.get($),G=`${$.toLowerCase().replace(/\s+/g,"-")}-${T.title.toLowerCase().replace(/\s+/g,"-")}`;i.value.set(G,{category:T.title,categoryGroup:$}),B.items.push({id:G,label:ye(`templateWorkflows.category.${Re(T.title)}`,T.title),icon:I||fn(T.type||"default")})}}),x.forEach((T,$)=>{T.items.length>0&&_.push({title:ye(`templateWorkflows.category.${Re($)}`,$.split(" ").map(I=>I.charAt(0).toUpperCase()+I.slice(1).toLowerCase()).join(" ")),items:T.items})}),d.value.filter(T=>T.isPartnerNode).length>0&&_.push({id:"partner-nodes",label:ye("templateWorkflows.category.Partner Nodes","Partner Nodes"),icon:"icon-[lucide--handshake]"}),d.value.filter(T=>T.sourceModule!=="default").length>0){const $=Array.from(new Set(d.value.filter(I=>I.sourceModule!=="default").map(I=>I.sourceModule))).sort().map(I=>({id:`extension-${I}`,label:ye(`templateWorkflows.category.${Re(I)}`,I),icon:fn("extensions")}));_.push({title:ye("templateWorkflows.category.Extensions","Extensions"),items:$,collapsible:!0})}return _});async function c(){try{if(!s.value){e.value=await we.getWorkflowTemplates();const _=Aa.global.locale.value,[S,x]=await Promise.all([we.getCoreWorkflowTemplates(_),mt&&_!=="en"?we.getCoreWorkflowTemplates("en"):Promise.resolve([])]);o.value=S,t.value=x;const D=o.value.flatMap(T=>T.templates.map($=>$.name)),P=Object.values(e.value).flat();a.value=new Set([...D,...P]),s.value=!0}}catch(_){console.error("Error fetching workflow templates:",_)}}n(c,"loadWorkflowTemplates");function w(_){if(t.value.length===0)return null;for(const S of t.value){const x=S.templates.find(D=>D.name===_);if(x)return{tags:x.tags,category:S.title,useCase:x.useCase,models:x.models,license:x.license}}return null}return n(w,"getEnglishMetadata"),{groupedTemplates:h,navGroupedTemplates:g,enhancedTemplates:d,templateFuse:b,filterTemplatesByCategory:y,isLoaded:s,loadWorkflowTemplates:c,knownTemplateNames:a,getTemplateByName:l,getEnglishMetadata:w}}),sn=Symbol(),vu={class:"base-widget-layout rounded-2xl overflow-hidden relative"},gu={class:"flex h-full w-full"},hu={class:"flex-1 flex bg-base-background"},yu={class:"flex h-full w-full flex-col"},bu={key:0,class:"w-full h-18 px-6 flex items-center justify-between gap-2"},wu={class:"flex flex-1 shrink-0 gap-2"},ku={class:"flex min-h-0 flex-1 flex-col"},Cu={key:0,class:"text-xxl m-0 px-6 pt-2 pb-6 capitalize"},Su={class:"min-h-0 px-6 pt-0 pb-10 overflow-y-auto"},xu={key:0,class:"w-1/4 min-w-40 max-w-80"},_u=H({__name:"BaseModalLayout",props:{contentTitle:{}},setup(e){const o={md:880},t={width:"w-1/3",minWidth:"min-w-40",maxWidth:"max-w-56"},s=Pl(),a=Dl(sn,()=>{}),i=Jo(o).greater("md"),r=E(!0),u=E(!1),p=E(!1),v=k(()=>!!s.rightPanel);se(i,y=>{y||(p.value=!1)});const h=k(()=>i.value?r.value:p.value),d=n(()=>{i.value?r.value=!r.value:p.value=!p.value},"toggleLeftPanel"),b=n(()=>{u.value=!u.value},"toggleRightPanel");return(y,g)=>(m(),N("div",vu,[ue(W(ee,{size:"icon",class:Q(C(pe)("absolute top-4 right-18 z-10","transition-opacity duration-200",{"opacity-0 pointer-events-none":u.value||!v.value})),onClick:b},{default:L(()=>g[0]||(g[0]=[f("i",{class:"icon-[lucide--panel-right] text-sm"},null,-1)])),_:1},8,["class"]),[[Ye,!u.value&&v.value]]),W(ee,{class:"absolute top-4 right-6 z-10 transition-opacity duration-200",onClick:C(a)},{default:L(()=>g[1]||(g[1]=[f("i",{class:"pi pi-times text-sm"},null,-1)])),_:1},8,["onClick"]),f("div",gu,[W(zn,{name:"slide-panel"},{default:L(()=>[y.$slots.leftPanel&&h.value?(m(),N("nav",{key:0,class:Q([t.width,t.minWidth,t.maxWidth])},[Ne(y.$slots,"leftPanel",{},void 0,!0)],2)):O("",!0)]),_:3}),f("div",hu,[f("div",yu,[y.$slots.header?(m(),N("header",bu,[f("div",wu,[C(i)?O("",!0):(m(),F(ee,{key:0,size:"icon",onClick:d},{default:L(()=>[f("i",{class:Q(C(pe)(h.value?"icon-[lucide--panel-left]":"icon-[lucide--panel-left-close]"))},null,2)]),_:1})),Ne(y.$slots,"header",{},void 0,!0)]),Ne(y.$slots,"header-right-area",{},void 0,!0),f("div",{class:Q(C(pe)("flex justify-end gap-2 w-0",v.value&&!u.value?"min-w-22":"min-w-10"))},[u.value&&v.value?(m(),F(ee,{key:0,size:"icon",onClick:b},{default:L(()=>g[2]||(g[2]=[f("i",{class:"icon-[lucide--panel-right-close]"},null,-1)])),_:1})):O("",!0)],2)])):O("",!0),f("main",ku,[Ne(y.$slots,"contentFilter",{},void 0,!0),y.$slots.leftPanel?O("",!0):(m(),N("h2",Cu,z(y.contentTitle),1)),f("div",Su,[Ne(y.$slots,"content",{},void 0,!0)])])]),v.value&&u.value?(m(),N("aside",xu,[Ne(y.$slots,"rightPanel",{},void 0,!0)])):O("",!0)])])]))}}),ns=De(_u,[["__scopeId","data-v-e9f4fefe"]]),Tu=H({__name:"NavIcon",props:{icon:{}},setup(e){return(o,t)=>(m(),N("i",{class:Q([o.icon,"text-neutral text-sm"])},null,2))}}),Nu={key:1,class:"text-neutral icon-[lucide--folder] text-xs"},$u={class:"flex items-center"},Es=H({__name:"NavItem",props:{icon:{},active:{type:Boolean},onClick:{type:Function}},setup(e){return(o,t)=>(m(),N("div",{class:Q(["flex cursor-pointer items-center gap-2 rounded-md px-4 py-3 text-sm transition-colors text-base-foreground",o.active?"bg-interface-menu-component-surface-selected":"hover:bg-interface-menu-component-surface-hovered"]),role:"button",onClick:t[0]||(t[0]=(...s)=>o.onClick&&o.onClick(...s))},[o.icon?(m(),F(Tu,{key:0,icon:o.icon},null,8,["icon"])):(m(),N("i",Nu)),f("span",$u,[Ne(o.$slots,"default")])],2))}}),Iu={class:"text-xs font-bold text-text-secondary uppercase"},Mu=H({__name:"NavTitle",props:{title:{},modelValue:{type:Boolean,default:!1},collapsible:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:o}){const t=o,s=k({get:n(()=>e.modelValue,"get"),set:n(l=>t("update:modelValue",l),"set")}),a=n(()=>{s.value=!s.value},"toggleCollapse");return(l,i)=>(m(),N("div",{class:Q(C(pe)("flex items-center justify-between m-0 px-3 py-0 pt-5",l.collapsible&&"cursor-pointer select-none")),onClick:i[0]||(i[0]=r=>l.collapsible&&a())},[f("h3",Iu,z(l.title),1),l.collapsible?(m(),N("i",{key:0,class:Q(C(pe)("pi transition-transform duration-200 text-xs text-text-secondary ",s.value?"pi-chevron-right":"pi-chevron-down"))},null,2)):O("",!0)],2))}}),Pu={},Du={class:"flex h-16 items-center justify-between px-6"},Au={class:"flex items-center gap-2 pl-1"},Eu={class:"text-neutral text-base font-bold"};function Lu(e,o){return m(),N("header",Du,[f("div",Au,[Ne(e.$slots,"icon",{},()=>[o[0]||(o[0]=f("i",{class:"text-neutral icon-[lucide--puzzle] text-base"},null,-1))]),f("h2",Eu,[Ne(e.$slots,"default")])])])}n(Lu,"_sfc_render$2");const Vu=De(Pu,[["render",Lu]]),Ou={class:"flex h-full w-full flex-col bg-modal-panel-background"},Ru={class:"flex scrollbar-hide flex-1 flex-col gap-1 overflow-y-auto px-3 py-4"},Wu={key:0,class:"flex flex-col gap-2"},zu={key:1,class:"flex flex-col gap-2"},ss=H({__name:"LeftSidePanel",props:{navItems:{default:n(()=>[],"default")},modelValue:{}},emits:["update:modelValue"],setup(e,{emit:o}){const t=o,s=E({}),a=n(()=>{if(!e.navItems||e.navItems.length===0)return null;const i=e.navItems[0];return"items"in i&&i.items.length>0?i.items[0].id:"id"in i?i.id:null},"getFirstItemId"),l=k({get:n(()=>e.modelValue??a(),"get"),set:n(i=>t("update:modelValue",i),"set")});return(i,r)=>(m(),N("div",Ou,[W(Vu,null,{icon:L(()=>[Ne(i.$slots,"header-icon")]),default:L(()=>[Ne(i.$slots,"header-title")]),_:3}),f("nav",Ru,[(m(!0),N(le,null,be(i.navItems,(u,p)=>(m(),N(le,{key:p},["items"in u?(m(),N("div",Wu,[W(Mu,{modelValue:s.value[u.title],"onUpdate:modelValue":n(v=>s.value[u.title]=v,"onUpdate:modelValue"),title:u.title,collapsible:u.collapsible},null,8,["modelValue","onUpdate:modelValue","title","collapsible"]),!u.collapsible||!s.value[u.title]?(m(!0),N(le,{key:0},be(u.items,v=>(m(),F(Es,{key:v.id,icon:v.icon,active:l.value===v.id,onClick:n(h=>l.value=v.id,"onClick")},{default:L(()=>[_e(z(v.label),1)]),_:2},1032,["icon","active","onClick"]))),128)):O("",!0)])):(m(),N("div",zu,[W(Es,{icon:u.icon,active:l.value===u.id,onClick:n(v=>l.value=u.id,"onClick")},{default:L(()=>[_e(z(u.label),1)]),_:2},1032,["icon","active","onClick"])]))],64))),128))])]))}});function Bu(e){return k(()=>{const{minWidth:o,maxWidth:t}=e,s={};return o&&(s.minWidth=o),t&&(s.maxWidth=t),s})}n(Bu,"usePopoverSizing");const Fu={class:"flex flex-col px-2 pt-2 pb-0"},Uu={key:1,class:"mt-2 flex items-center justify-between"},Gu={key:0,class:"px-1 text-sm text-base-foreground"},ju={class:"text-sm"},Hu={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"},qu={key:0,class:"text-bold icon-[lucide--check] text-xs text-white"},Vt=H({inheritAttrs:!1,__name:"MultiSelect",props:Bn({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=Bo(e,"modelValue"),t=Bo(e,"searchQuery"),{t:s}=de(),a=k(()=>o.value.length),l=Bu({minWidth:e.popoverMinWidth,maxWidth:e.popoverMaxWidth}),i=Al(),r=k(()=>i.options||[]),u={fuseOptions:{keys:["name","value"],threshold:.3,includeScore:!1},matchAllWhenSearchEmpty:!0},{results:p}=ua(t,r,u),v=k(()=>{if(!t.value||t.value.trim()==="")return r.value;const h=p.value.map(b=>b.item);return[...o.value.filter(b=>!h.some(y=>y.value===b.value)),...h]});return(h,d)=>(m(),F(C(ti),$t({modelValue:o.value,"onUpdate:modelValue":d[2]||(d[2]=b=>o.value=b)},{...h.$attrs,options:v.value},{"option-label":"name",unstyled:"","max-selected-labels":0,pt:{root:n(({props:b})=>({class:C(pe)("h-10 relative inline-flex cursor-pointer select-none","rounded-lg bg-secondary-background text-base-foreground","transition-all duration-200 ease-in-out","border-[2.5px] border-solid",a.value>0?"border-node-component-border":"border-transparent","focus-within:border-node-component-border",{"opacity-60 cursor-default":b.disabled})}),"root"),labelContainer:{class:"flex-1 flex items-center overflow-hidden whitespace-nowrap pl-4 py-2 "},label:{class:"p-0"},dropdown:{class:"flex shrink-0 cursor-pointer items-center justify-center px-3"},header:n(()=>({class:h.showSearchBox||h.showSelectedCount||h.showClearButton?"block":"hidden"}),"header"),overlay:{class:C(pe)("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(${h.listMaxHeight}, 50vh)`},class:"scrollbar-custom"}),"listContainer"),list:{class:"flex flex-col gap-0 p-0 m-0 list-none border-none text-sm"},option:n(({context:b})=>({class:C(pe)("flex gap-2 items-center h-10 px-2 rounded-lg cursor-pointer","hover:bg-secondary-background-hover",b?.focused&&"bg-secondary-background-selected hover:bg-secondary-background-selected")}),"option"),pcHeaderCheckbox:{root:{class:"hidden"},style:{display:"none"}},pcOptionCheckbox:{root:{class:"hidden"},style:{display:"none"}}},"aria-label":h.label||C(s)("g.multiSelectDropdown"),role:"combobox","aria-expanded":!1,"aria-haspopup":"listbox",tabindex:0}),Fn({value:L(()=>[f("span",ju,z(h.label),1),a.value>0?(m(),N("span",Hu,z(a.value),1)):O("",!0)]),dropdownicon:L(()=>[d[4]||(d[4]=f("i",{class:"icon-[lucide--chevron-down] text-muted-foreground"},null,-1))]),option:L(b=>[f("div",{role:"button",class:"flex items-center gap-2 cursor-pointer",style:ve(C(l))},[f("div",{class:Q(["flex size-4 shrink-0 items-center justify-center rounded p-0.5 transition-all duration-200",b.selected?"bg-primary-background":"bg-secondary-background"])},[b.selected?(m(),N("i",qu)):O("",!0)],2),f("span",null,z(b.option.name),1)],4)]),_:2},[h.showSearchBox||h.showSelectedCount||h.showClearButton?{name:"header",fn:L(()=>[f("div",Fu,[h.showSearchBox?(m(),F(en,{key:0,modelValue:t.value,"onUpdate:modelValue":d[0]||(d[0]=b=>t.value=b),class:Q(h.showSelectedCount||h.showClearButton?"mb-2":""),"show-order":!0,"show-border":!0,"place-holder":h.searchPlaceholder},null,8,["modelValue","class","place-holder"])):O("",!0),h.showSelectedCount||h.showClearButton?(m(),N("div",Uu,[h.showSelectedCount?(m(),N("span",Gu,z(a.value>0?h.$t("g.itemsSelected",{selectedCount:a.value}):h.$t("g.itemSelected",{selectedCount:a.value})),1)):O("",!0),h.showClearButton?(m(),F(ee,{key:1,variant:"textonly",size:"md",onClick:d[1]||(d[1]=ke(b=>o.value=[],["stop"]))},{default:L(()=>[_e(z(h.$t("g.clearAll")),1)]),_:1})):O("",!0)])):O("",!0),d[3]||(d[3]=f("div",{class:"my-4 h-px bg-border-default"},null,-1))])]),key:"0"}:void 0]),1040,["modelValue","pt","aria-label"]))}});function Ku(e){const o=k(()=>{const a=ze(e).map(i=>{const r=i.name.split(".").pop();return r&&r!==i.name?r:null}).filter(i=>i!==null);return ys(a,(i,r)=>i===r).sort().map(i=>({name:`.${i}`,value:i}))}),t=k(()=>{const a=ze(e).map(i=>i.user_metadata?.base_model).filter(i=>i!==void 0&&typeof i=="string");return ys(a,(i,r)=>i===r).sort().map(i=>({name:i,value:i}))});return{availableFileFormats:o,availableBaseModels:t}}n(Ku,"useAssetFilterOptions");const Ju={class:"flex gap-4 items-center justify-between px-6 pt-2 pb-6","data-component-id":"asset-filter-bar"},Yu={class:"flex gap-4 items-center","data-component-id":"asset-filter-bar-left"},Qu={class:"flex items-center","data-component-id":"asset-filter-bar-right"},Xu=H({__name:"AssetFilterBar",props:{assets:{default:n(()=>[],"default")},allAssets:{default:n(()=>[],"default")}},emits:["filterChange"],setup(e,{emit:o}){const s=[...[{name:re("assetBrowser.sortRecent"),value:"recent"},{name:re("assetBrowser.sortAZ"),value:"name-asc"},{name:re("assetBrowser.sortZA"),value:"name-desc"}]],a=[{name:re("assetBrowser.ownershipAll"),value:"all"},{name:re("assetBrowser.ownershipMyModels"),value:"my-models"},{name:re("assetBrowser.ownershipPublicModels"),value:"public-models"}],l=E([]),i=E([]),r=E("recent"),u=E("all"),{availableFileFormats:p,availableBaseModels:v}=Ku(e.assets),h=k(()=>(e.allAssets.length?e.allAssets:e.assets).some(g=>g.is_immutable===!1)),d=o;function b(){d("filterChange",{fileFormats:l.value.map(y=>y.value),baseModels:i.value.map(y=>y.value),sortBy:r.value,ownership:u.value})}return n(b,"handleFilterChange"),(y,g)=>(m(),N("div",Ju,[f("div",Yu,[C(p).length>0?(m(),F(Vt,{key:0,modelValue:l.value,"onUpdate:modelValue":[g[0]||(g[0]=c=>l.value=c),b],label:y.$t("assetBrowser.fileFormats"),options:C(p),class:"min-w-32","data-component-id":"asset-filter-file-formats"},null,8,["modelValue","label","options"])):O("",!0),C(v).length>0?(m(),F(Vt,{key:1,modelValue:i.value,"onUpdate:modelValue":[g[1]||(g[1]=c=>i.value=c),b],label:y.$t("assetBrowser.baseModels"),options:C(v),class:"min-w-32","data-component-id":"asset-filter-base-models"},null,8,["modelValue","label","options"])):O("",!0),h.value?(m(),F(jo,{key:2,modelValue:u.value,"onUpdate:modelValue":[g[2]||(g[2]=c=>u.value=c),b],label:y.$t("assetBrowser.ownership"),options:a,class:"min-w-42","data-component-id":"asset-filter-ownership"},null,8,["modelValue","label"])):O("",!0)]),f("div",Qu,[W(jo,{modelValue:r.value,"onUpdate:modelValue":[g[3]||(g[3]=c=>r.value=c),b],label:y.$t("assetBrowser.sortBy"),options:s,class:"min-w-32","data-component-id":"asset-filter-sort"},{icon:L(()=>g[4]||(g[4]=[f("i",{class:"icon-[lucide--arrow-up-down] size-3"},null,-1)])),_:1},8,["modelValue","label"])])]))}}),Zu={class:"relative inline-flex items-center"},ec={class:"flex min-w-40 flex-col gap-2 p-2"},al=H({__name:"MoreButton",props:{isVertical:{type:Boolean,default:!1}},emits:["menuOpened","menuClosed"],setup(e,{expose:o}){const t=E(!1),s=E();function a(){s.value?.hide()}return n(a,"hide"),o({hide:a,isOpen:t}),(l,i)=>(m(),N("div",Zu,[W(ee,{size:"icon",variant:"secondary",onClick:s.value?.toggle},{default:L(()=>[f("i",{class:Q(C(pe)(l.isVertical?"icon-[lucide--more-vertical]":"icon-[lucide--ellipsis]","text-sm"))},null,2)]),_:1},8,["onClick"]),W(C(Ze),{ref_key:"popover",ref:s,"append-to":"body","auto-z-index":"",dismissable:"","close-on-escape":"",unstyled:"","base-z-index":1e3,pt:{root:{class:C(pe)("absolute z-50")},content:{class:C(pe)("mt-1 rounded-lg","bg-secondary-background text-base-foreground","shadow-lg")}},onShow:i[0]||(i[0]=()=>{t.value=!0,l.$emit("menuOpened")}),onHide:i[1]||(i[1]=()=>{t.value=!1,l.$emit("menuClosed")})},{default:L(()=>[f("div",ec,[Ne(l.$slots,"default",{close:a})])]),_:3},8,["pt"])]))}}),tc={class:"flex flex-col px-4 py-2 text-sm text-muted-foreground border-t border-border-default"},oc={key:0},nc=H({__name:"ConfirmBody",props:{promptText:{}},setup(e){const o=k(()=>ze(e.promptText));return(t,s)=>(m(),N("div",tc,[o.value?(m(),N("p",oc,z(o.value),1)):O("",!0)]))}}),sc={class:"w-full flex gap-2 justify-end px-2 pb-2"},ac=H({__name:"ConfirmFooter",props:{cancelText:{},confirmText:{},confirmClass:{},optionsDisabled:{}},emits:["cancel","confirm"],setup(e){const{t:o}=de(),t=k(()=>e.confirmText||o("g.confirm")),s=k(()=>e.cancelText||o("g.cancel")),a=k(()=>ze(e.optionsDisabled));return(l,i)=>(m(),N("section",sc,[W(ee,{disabled:a.value,variant:"textonly",autofocus:"",onClick:i[0]||(i[0]=r=>l.$emit("cancel"))},{default:L(()=>[_e(z(s.value),1)]),_:1},8,["disabled"]),W(ee,{disabled:a.value,variant:"textonly",class:Q(l.confirmClass),onClick:i[1]||(i[1]=r=>l.$emit("confirm"))},{default:L(()=>[_e(z(t.value),1)]),_:1},8,["disabled","class"])]))}}),lc={class:"flex items-center gap-2 p-4 font-bold text-sm text-base-foreground font-inter"},ic={key:0,class:"flex-auto"},rc=H({__name:"ConfirmHeader",props:{title:{}},setup(e){return(o,t)=>(m(),N("div",lc,[o.title?(m(),N("span",ic,z(o.title),1)):O("",!0)]))}});function uc(e={}){const o=ht(),{headerProps:t,props:s,footerProps:a}=e;return o.showDialog({headerComponent:rc,component:nc,footerComponent:ac,headerProps:t,props:s,footerProps:a,dialogComponentProps:{pt:{header:"py-0! px-0!",content:"p-0!",footer:"p-0!"}}})}n(uc,"showConfirmDialog");const cc={class:"absolute left-2 bottom-2 flex flex-wrap justify-start gap-1"},dc=H({__name:"AssetBadgeGroup",props:{badges:{}},setup(e){return(o,t)=>(m(),N("div",cc,[(m(!0),N(le,null,be(o.badges,s=>(m(),N("span",{key:s.label,class:Q(C(pe)("px-2 py-1 rounded text-xs font-bold uppercase tracking-wider text-modal-card-tag-foreground bg-modal-card-tag-background"))},z(s.label),3))),128))]))}}),pc=["data-asset-id","aria-labelledby","aria-describedby","tabindex"],fc={class:"relative aspect-square w-full overflow-hidden rounded-xl"},mc=["src","alt"],vc={class:"max-h-32 flex flex-col gap-2 justify-between flex-auto"},gc=["id"],hc=["id"],yc={class:"flex gap-4 text-xs text-muted-foreground mt-auto"},bc={key:0,class:"flex items-center gap-1"},wc={key:1,class:"flex items-center gap-1"},kc={key:2,class:"flex items-center gap-1"},Cc=H({__name:"AssetCard",props:{asset:{},interactive:{type:Boolean}},emits:["select"],setup(e){const{t:o}=de(),t=ie(),{closeDialog:s}=ht(),{flags:a}=uu(),l=Nt(),i=xn("dropdown-menu-button"),r=_n(),u=_n(),p=E(!1),v=E(),h=E(!1),d=k(()=>v.value??e.asset.name),b=k(()=>t.get("LiteGraph.Node.TooltipDelay")),{isLoading:y,error:g}=El({src:e.asset.preview_url??"",alt:e.asset.name});function c(){i.value?.hide();const S=ze(d),x=E(o("assetBrowser.deletion.body")),D=E(!1),P=uc({headerProps:{title:o("assetBrowser.deletion.header")},props:{promptText:x},footerProps:{confirmText:o("g.delete"),confirmClass:pe("bg-danger-200 text-base-foreground hover:bg-danger-200/80 focus:bg-danger-200/80 focus:ring ring-base-foreground"),optionsDisabled:D,onCancel:n(()=>{s(P)},"onCancel"),onConfirm:n(async()=>{D.value=!0;try{x.value=o("assetBrowser.deletion.inProgress",{assetName:S}),await Fo.deleteAsset(e.asset.id),x.value=o("assetBrowser.deletion.complete",{assetName:S}),await new Promise(T=>setTimeout(T,1e3)),h.value=!0}catch(T){console.error(T),x.value=o("assetBrowser.deletion.failed",{assetName:S}),await new Promise($=>setTimeout($,3e3))}finally{s(P)}},"onConfirm")}})}n(c,"confirmDeletion");function w(){i.value?.hide(),p.value=!0}n(w,"startAssetRename");async function _(S){if(p.value=!1,S){v.value=S;try{const x=await Fo.updateAsset(e.asset.id,{name:S});v.value=x.name}catch(x){console.error(x),l.add({severity:"error",summary:o("assetBrowser.rename.failed"),life:1e4}),v.value=void 0}}}return n(_,"assetRename"),(S,x)=>{const D=Se("tooltip");return h.value?O("",!0):(m(),N("div",{key:0,"data-component-id":"AssetCard","data-asset-id":S.asset.id,"aria-labelledby":C(r),"aria-describedby":C(u),tabindex:S.interactive?0:-1,class:Q(C(pe)("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]=Yt(ke(P=>S.interactive&&S.$emit("select",S.asset),["self"]),["enter"]))},[f("div",fc,[C(y)||C(g)?(m(),N("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"]))})):(m(),N("img",{key:1,src:S.asset.preview_url,alt:d.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,mc)),W(dc,{badges:S.asset.badges},null,8,["badges"]),C(a).assetUpdateOptionsEnabled&&!(S.asset.is_immutable??!0)?(m(),F(mi,{key:2,class:Q(C(pe)("absolute top-2 right-2 invisible group-hover:visible",C(i)?.isOpen&&"visible"))},{default:L(()=>[W(al,{ref:"dropdown-menu-button",size:"sm"},{default:L(()=>[W(ee,{variant:"secondary",size:"md",class:"justify-start",onClick:w},{default:L(()=>[x[4]||(x[4]=f("i",{class:"icon-[lucide--pencil]"},null,-1)),f("span",null,z(S.$t("g.rename")),1)]),_:1}),W(ee,{variant:"secondary",size:"md",class:"justify-start",onClick:c},{default:L(()=>[x[5]||(x[5]=f("i",{class:"icon-[lucide--trash-2]"},null,-1)),f("span",null,z(S.$t("g.delete")),1)]),_:1})]),_:1},512)]),_:1},8,["class"])):O("",!0)]),f("div",vc,[ue((m(),N("h3",{id:C(r),class:Q(C(pe)("mb-2 m-0 text-base font-semibold line-clamp-2 wrap-anywhere","text-base-foreground"))},[W(Hn,{"model-value":d.value,"is-editing":p.value,"input-attrs":{"data-testid":"asset-name-input"},onEdit:_,onCancel:x[2]||(x[2]=P=>_())},null,8,["model-value","is-editing"])],10,gc)),[[D,{value:d.value,showDelay:b.value},void 0,{top:!0}]]),ue((m(),N("p",{id:C(u),class:Q(C(pe)("m-0 text-sm leading-6 overflow-hidden [-webkit-box-orient:vertical] [-webkit-line-clamp:2] [display:-webkit-box] text-muted-foreground"))},[_e(z(S.asset.description),1)],10,hc)),[[D,{value:S.asset.description,showDelay:b.value},void 0,{top:!0}]]),f("div",yc,[S.asset.stats.stars?(m(),N("span",bc,[x[6]||(x[6]=f("i",{class:"icon-[lucide--star] size-3"},null,-1)),_e(" "+z(S.asset.stats.stars),1)])):O("",!0),S.asset.stats.downloadCount?(m(),N("span",wc,[x[7]||(x[7]=f("i",{class:"icon-[lucide--download] size-3"},null,-1)),_e(" "+z(S.asset.stats.downloadCount),1)])):O("",!0),S.asset.stats.formattedDate?(m(),N("span",kc,[x[8]||(x[8]=f("i",{class:"icon-[lucide--clock] size-3"},null,-1)),_e(" "+z(S.asset.stats.formattedDate),1)])):O("",!0)])])],42,pc))}}}),Sc=["aria-label","aria-setsize"],xc={key:0,class:"col-span-full flex items-center justify-center py-20"},_c={key:1,class:"col-span-full flex flex-col items-center justify-center py-16 text-muted-foreground"},Tc={class:"mb-2 text-lg font-medium"},Nc={class:"text-sm"},$c=H({__name:"AssetGrid",props:{assets:{},loading:{type:Boolean}},emits:["assetSelect"],setup(e){return(o,t)=>(m(),N("div",{"data-component-id":"AssetGrid",class:Q(C(pe)("grid grid-cols-[repeat(auto-fill,minmax(15rem,1fr))] gap-4 p-2")),role:"grid","aria-label":o.$t("assetBrowser.assetCollection"),"aria-rowcount":-1,"aria-colcount":-1,"aria-setsize":o.assets.length},[o.loading?(m(),N("div",xc,t[1]||(t[1]=[f("i",{class:"icon-[lucide--loader] size-12 animate-spin text-muted-foreground"},null,-1)]))):o.assets.length===0?(m(),N("div",_c,[t[2]||(t[2]=f("i",{class:"mb-4 icon-[lucide--search] size-10"},null,-1)),f("h3",Tc,z(o.$t("assetBrowser.noAssetsFound")),1),f("p",Nc,z(o.$t("assetBrowser.tryAdjustingFilters")),1)])):(m(!0),N(le,{key:2},be(o.assets,s=>(m(),F(Cc,{key:s.id,asset:s,interactive:!0,onSelect:t[0]||(t[0]=a=>o.$emit("assetSelect",a))},null,8,["asset"]))),128))],10,Sc))}});function Ic(e){return typeof e.user_metadata?.description=="string"?e.user_metadata.description:null}n(Ic,"getAssetDescription");function ll(e){return typeof e.user_metadata?.base_model=="string"?e.user_metadata.base_model:null}n(ll,"getAssetBaseModel");function Mc(e){return o=>e==="all"||o.tags.includes(e)}n(Mc,"filterByCategory");function Pc(e){return o=>{if(e.length===0)return!0;const t=new Set(e),s=o.name.split(".").pop()?.toLowerCase();return s?t.has(s):!1}}n(Pc,"filterByFileFormats");function Dc(e){return o=>{if(e.length===0)return!0;const t=new Set(e),s=ll(o);return s?t.has(s):!1}}n(Dc,"filterByBaseModels");function Ac(e){return o=>e==="all"?!0:e==="my-models"?o.is_immutable===!1:e==="public-models"?o.is_immutable===!0:!0}n(Ac,"filterByOwnership");function Ec(e=E([])){const o=k(()=>e.value??[]),t=E(""),s=E("all"),a=E({sortBy:"recent",fileFormats:[],baseModels:[],ownership:"all"});function l(y){const g=y.tags.find(x=>x!=="models"),c=Ic(y)||`${g||re("assetBrowser.unknown")} model`,w=[];g&&w.push({label:g,type:"type"});const _=ll(y);_&&w.push({label:_,type:"base"});const S={formattedDate:vi(new Date(y.created_at),{dateStyle:"short"}),downloadCount:void 0,stars:void 0};return{...y,description:c,badges:w,stats:S}}n(l,"transformAssetForDisplay");const i=k(()=>{const y=o.value.filter(c=>c.tags[0]==="models").map(c=>c.tags[1]).filter(c=>typeof c=="string"&&c.length>0),g=Array.from(new Set(y)).sort().map(c=>({id:c,label:c.charAt(0).toUpperCase()+c.slice(1),icon:"icon-[lucide--package]"}));return[{id:"all",label:re("assetBrowser.allModels"),icon:"icon-[lucide--folder]"},...g]}),r=k(()=>s.value==="all"?re("assetBrowser.allModels"):i.value.find(g=>g.id===s.value)?.label||re("assetBrowser.assets")),u=k(()=>o.value.filter(Mc(s.value))),p={fuseOptions:{keys:[{name:"name",weight:.4},{name:"tags",weight:.3}],threshold:.4,ignoreLocation:!0,includeScore:!0},matchAllWhenSearchEmpty:!0},{results:v}=ua(t,u,p),h=k(()=>v.value.map(y=>y.item)),d=k(()=>{const g=[...h.value.filter(Pc(a.value.fileFormats)).filter(Dc(a.value.baseModels)).filter(Ac(a.value.ownership))];return g.sort((c,w)=>{switch(a.value.sortBy){case"name-desc":return w.name.localeCompare(c.name);case"recent":return new Date(w.created_at).getTime()-new Date(c.created_at).getTime();case"popular":return c.name.localeCompare(w.name);case"name-asc":default:return c.name.localeCompare(w.name)}}),g.map(l)});function b(y){a.value={...y}}return n(b,"updateFilters"),{searchQuery:t,selectedCategory:s,availableCategories:i,contentTitle:r,categoryFilteredAssets:u,filteredAssets:d,updateFilters:b}}n(Ec,"useAssetBrowser");const Lc=new Set(["VAE","CLIP","GLIGEN"]);function Vc(e){return e?e==="diffusion_models"?"Diffusion":e.split("_").map(o=>{const t=o.toUpperCase();if(Lc.has(t))return t;const s=o.toLowerCase();return s.charAt(0).toUpperCase()+s.slice(1)}).join(" "):"Models"}n(Vc,"formatCategoryLabel");const Oc={class:"capitalize"},Rc={class:"flex w-full items-center justify-between gap-2"},Wc={class:"hidden md:inline"},Ls=H({__name:"AssetBrowserModal",props:{nodeType:{},onSelect:{type:Function},onClose:{type:Function},showLeftPanel:{type:Boolean},title:{},assetType:{}},emits:["asset-select","close"],setup(e,{emit:o}){const t=e,{t:s}=de(),a=o,l=Jo(Yo);Qo(sn,t.onClose??(()=>{}));const i=n(async()=>t.nodeType?await Fo.getAssetsForNodeType(t.nodeType)??[]:t.assetType?await Fo.getAssetsByTag(t.assetType)??[]:[],"fetchAssets"),{state:r,isLoading:u,execute:p}=ca(i,[],{immediate:!1});se(()=>[t.nodeType,t.assetType],async()=>{await p()},{immediate:!0});const{searchQuery:v,selectedCategory:h,availableCategories:d,categoryFilteredAssets:b,filteredAssets:y,updateFilters:g}=Ec(r),c=qn(),w=k(()=>{const B=(r.value??[]).map(G=>G.tags?.find(M=>M!=="models")).find(G=>typeof G=="string"&&G.length>0);if(B)return B;if(t.nodeType){const G=c.getCategoryForNodeType(t.nodeType);if(G)return G}return t.assetType?t.assetType:"models"}),_=k(()=>h.value!=="all"?h.value:w.value),S=k(()=>{if(t.title)return t.title;const I=Vc(_.value);return s("assetBrowser.allCategory",{category:I})}),x=k(()=>t.showLeftPanel??!0);function D(){t.onClose?.(),a("close")}n(D,"handleClose");function P(I){a("asset-select",I),t.onSelect?.(I)}n(P,"handleAssetSelectAndEmit");const{isUploadButtonEnabled:T,showUploadDialog:$}=cu(p);return(I,B)=>(m(),F(ns,{"data-component-id":"AssetBrowserModal",class:"size-full max-h-full max-w-full min-w-0","content-title":S.value,onClose:D},Fn({header:L(()=>[f("div",Rc,[W(en,{modelValue:C(v),"onUpdate:modelValue":B[1]||(B[1]=G=>ft(v)?v.value=G:null),autofocus:!0,size:"lg",placeholder:I.$t("g.searchPlaceholder"),class:"max-w-96"},null,8,["modelValue","placeholder"]),C(T)?(m(),F(ee,{key:0,variant:"primary",size:C(l).md?"md":"icon","data-attr":"upload-model-button",onClick:C($)},{default:L(()=>[B[3]||(B[3]=f("i",{class:"icon-[lucide--folder-input]"},null,-1)),f("span",Wc,z(I.$t("assetBrowser.uploadModel")),1)]),_:1},8,["size","onClick"])):O("",!0)])]),contentFilter:L(()=>[W(Xu,{assets:C(b),"all-assets":C(r),onFilterChange:C(g)},null,8,["assets","all-assets","onFilterChange"])]),content:L(()=>[W($c,{assets:C(y),loading:C(u),onAssetSelect:P},null,8,["assets","loading"])]),_:2},[x.value?{name:"leftPanel",fn:L(()=>[W(ss,{modelValue:C(h),"onUpdate:modelValue":B[0]||(B[0]=G=>ft(h)?h.value=G:null),"data-component-id":"AssetBrowserModal-LeftSidePanel","nav-items":C(d)},{"header-icon":L(()=>B[2]||(B[2]=[f("div",{class:"icon-[lucide--folder] size-4"},null,-1)])),"header-title":L(()=>[f("span",Oc,z(S.value),1)]),_:1},8,["modelValue","nav-items"])]),key:"0"}:void 0]),1032,["content-title"]))}}),Vs={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"}}},zc=n(()=>{const e=ht(),o="global-asset-browser";async function t(a){const l=n(i=>{a.onAssetSelected?.(i),e.closeDialog({key:o})},"handleAssetSelected");e.showDialog({key:o,component:Ls,props:{nodeType:a.nodeType,inputName:a.inputName,currentValue:a.currentValue,onSelect:l,onClose:n(()=>e.closeDialog({key:o}),"onClose")},dialogComponentProps:Vs})}n(t,"show");async function s(a){const l=n(i=>{a.onAssetSelected?.(i),e.closeDialog({key:o})},"handleAssetSelected");e.showDialog({key:o,component:Ls,props:{showLeftPanel:!0,assetType:a.assetType,title:a.title,onSelect:l,onClose:n(()=>e.closeDialog({key:o}),"onClose")},dialogComponentProps:Vs})}return n(s,"browse"),{show:t,browse:s}},"useAssetBrowserDialog"),Bc={class:"flex max-w-xs min-w-40 flex-col gap-2 p-3"},Fc={class:"text-sm font-inter"},Uc={key:1,class:"text-xs"},Gc={class:"flex max-w-xs min-w-40 flex-col gap-2 p-3"},jc={class:"text-sm font-inter"},Hc={key:1,class:"text-xs"},Os="cursor-pointer transition-opacity hover:opacity-80",qc=H({__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=E(),s=n(d=>{t.value?.toggle(d)},"togglePopover"),a=k(()=>o.badge.variant??"info"),l=k(()=>({backgroundColor:o.backgroundColor})),i=k(()=>{switch(a.value){case"error":return"bg-danger-100 text-white";case"warning":return"bg-gold-600 text-black";case"info":default:return"bg-white text-black"}}),r=k(()=>{switch(a.value){case"error":return"text-danger-100";case"warning":return"text-gold-600";case"info":default:return"text-text-primary"}}),u=k(()=>r.value),p=k(()=>{if(o.badge.icon)return o.badge.icon;switch(a.value){case"error":return"pi pi-exclamation-circle";case"warning":return"pi pi-exclamation-triangle";case"info":default:return}}),v=k(()=>{switch(a.value){case"error":return"bg-danger-100";case"warning":return"bg-gold-600";case"info":default:return"bg-slate-100"}}),h=k(()=>({root:{class:pe("absolute z-50")},content:{class:pe("mt-1 rounded-lg","bg-base-background","text-base-foreground","shadow-lg","border border-border-default")}}));return(d,b)=>{const y=Se("tooltip");return d.displayMode==="icon-only"?(m(),N("div",{key:0,class:Q(["relative inline-flex h-full shrink-0 items-center justify-center px-2",Os]),style:ve(l.value),onClick:s},[p.value?(m(),N("i",{key:0,class:Q(["shrink-0 text-base",p.value,u.value])},null,2)):d.badge.label?(m(),N("div",{key:1,class:Q(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},z(d.badge.label),3)):(m(),N("div",{key:2,class:Q(["size-2 shrink-0 rounded-full",v.value])},null,2)),W(C(Ze),{ref_key:"popover",ref:t,"append-to":"body","auto-z-index":!0,"base-z-index":1e3,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:h.value},{default:L(()=>[f("div",Bc,[d.badge.label?(m(),N("div",{key:0,class:Q(["w-fit rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},z(d.badge.label),3)):O("",!0),f("div",Fc,z(d.badge.text),1),d.badge.tooltip?(m(),N("div",Uc,z(d.badge.tooltip),1)):O("",!0)])]),_:1},8,["pt"])],4)):d.displayMode==="compact"?(m(),N("div",{key:1,class:"relative inline-flex h-full",style:ve(l.value)},[f("div",{class:Q(["flex h-full shrink-0 items-center gap-2 whitespace-nowrap",[{"flex-row-reverse":d.reverseOrder},d.noPadding?"":"px-3",Os]]),onClick:s},[p.value?(m(),N("i",{key:0,class:Q(["shrink-0 text-base",p.value,u.value])},null,2)):O("",!0),d.badge.label?(m(),N("div",{key:1,class:Q(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},z(d.badge.label),3)):O("",!0)],2),W(C(Ze),{ref_key:"popover",ref:t,"append-to":"body","auto-z-index":!0,"base-z-index":1e3,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:h.value},{default:L(()=>[f("div",Gc,[d.badge.label?(m(),N("div",{key:0,class:Q(["w-fit rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},z(d.badge.label),3)):O("",!0),f("div",jc,z(d.badge.text),1),d.badge.tooltip?(m(),N("div",Hc,z(d.badge.tooltip),1)):O("",!0)])]),_:1},8,["pt"])],4)):ue((m(),N("div",{key:2,class:Q(["flex h-full shrink-0 items-center gap-2 whitespace-nowrap",[{"flex-row-reverse":d.reverseOrder},d.noPadding?"":"px-3"]]),style:ve(l.value)},[p.value?(m(),N("i",{key:0,class:Q(["shrink-0 text-base",p.value,u.value])},null,2)):O("",!0),d.badge.label?(m(),N("div",{key:1,class:Q(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},z(d.badge.label),3)):O("",!0),f("div",{class:Q(["font-inter text-sm",r.value])},z(d.badge.text),3)],6)),[[y,d.badge.tooltip]])}}}),Kc=3e3,Jc=300*1e3,Yc=H({__name:"SubscribeButton",props:{label:{},size:{default:"lg"},variant:{default:"default"},fluid:{type:Boolean,default:!0}},emits:["subscribed"],setup(e,{emit:o}){const t=o,{subscribe:s,isActiveSubscription:a,fetchStatus:l,showSubscriptionDialog:i}=Kn(),r=gi(),u=E(!1),p=E(!1);let v=null;const h=E(!1),d=n(()=>{p.value=!0,u.value=!0;const g=Date.now(),c=n(async()=>{try{if(Date.now()-g>Jc){b();return}await l(),a.value&&(b(),r?.trackMonthlySubscriptionSucceeded(),t("subscribed"))}catch(w){console.error("[SubscribeButton] Error polling subscription status:",w)}},"poll");c(),v=window.setInterval(c,Kc)},"startPollingSubscriptionStatus"),b=n(()=>{v&&(clearInterval(v),v=null),p.value=!1,u.value=!1},"stopPolling");se([h,a],([g,c])=>{});const y=n(async()=>{u.value=!0;try{await s(),d()}catch(g){console.error("[SubscribeButton] Error initiating subscription:",g),u.value=!1}},"handleSubscribe");return gt(()=>{b(),h.value=!1}),(g,c)=>(m(),F(ee,{size:g.size,loading:u.value,disabled:p.value,variant:"primary",style:ve(g.variant==="gradient"?{background:"var(--color-subscription-button-gradient)",color:"var(--color-white)"}:void 0),class:Q(C(pe)("font-bold",g.fluid&&"w-full")),onClick:y},{default:L(()=>[_e(z(g.label||g.$t("subscription.required.subscribe")),1)]),_:1},8,["size","loading","disabled","style","class"]))}}),Rs="subscription-required",Qc=n(()=>{const e=et(),o=ht();function t(){o.closeDialog({key:Rs})}n(t,"hide");function s(){e.showLayoutDialog({key:Rs,component:da(()=>Gn(()=>import("./SubscriptionRequiredDialogContent-CY-BY6v5.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]),import.meta.url)),props:{onClose:t},dialogComponentProps:{style:"width: min(1328px, 95vw); max-height: 90vh;",pt:{root:{class:"rounded-2xl bg-transparent"},content:{class:"!p-0 rounded-2xl border border-border-default bg-base-background/60 backdrop-blur-md shadow-[0_25px_80px_rgba(5,6,12,0.45)]"}}}})}return n(s,"show"),{show:s,hide:t}},"useSubscriptionDialog"),Xc=H({__name:"GlobalToast",setup(e){const o=Rt(),t=Nt(),s=ie();se(()=>t.messagesToAdd,i=>{i.length!==0&&(i.forEach(r=>{o.add(r)}),t.messagesToAdd=[])},{deep:!0}),se(()=>t.messagesToRemove,i=>{i.length!==0&&(i.forEach(r=>{o.remove(r)}),t.messagesToRemove=[])},{deep:!0}),se(()=>t.removeAllRequested,i=>{i&&(o.removeAllGroups(),t.removeAllRequested=!1)});function a(){const i=document.getElementById("dynamic-toast-style")||l(),r=document.querySelector(".graph-canvas-container")?.getBoundingClientRect();r&&(i.textContent=`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SubscriptionRequiredDialogContent-BdL9OjAj.js","./index-BODInyrK.js","./vendor-primevue-rR0TB_Js.js","./vendor-other-BxP-0xn6.js","./vendor-other-DYX1NpEr.css","./vendor-vue-BEnTqVKr.js","./vendor-xterm-CWYFmgbN.js","./vendor-xterm-xj0gfbX3.css","./vendor-three-BsnVSA6y.js","./vendor-tiptap-4vvRsqpM.js","./index-DD6YW1q7.css","./UserAvatar.vue_vue_type_script_setup_true_lang-Bxj7Xy09.js","./index-CyS0uSKu.js","./LazyImage.vue_vue_type_script_setup_true_lang-Dza6G4hd.js","./keybindingService-DR_nPGKY.js","./serverConfigStore-Rd8VWEbH.js","./WidgetInputNumber.vue_vue_type_script_setup_true_lang-DPaOKLY2.js","./widgetPropFilter-CygYoMQt.js","./WidgetLayoutField.vue_vue_type_script_setup_true_lang-C5dBI8au.js","./WidgetWithControl.vue_vue_type_script_setup_true_lang-CU_cmbAA.js","./WidgetInputNumber-DIHSnjON.css","./SubscriptionRequiredDialogContent-BJ80blC4.css","./ComfyQueueButton-DRgA2g3T.js","./ComfyQueueButton-Chw03MdC.css"])))=>i.map(i=>d[i]);
2
+ var Ml=Object.defineProperty;var n=(e,o)=>Ml(e,"name",{value:o,configurable:!0});import{bp as Je,r as E,E as k,c$ as ra,bq as H,db as Pl,i as Dl,dY as Jo,w as se,c as N,d as m,l as ue,z as W,e as f,v as Ye,k as L,s as Q,br as C,q as O,p as Ne,T as zn,j as F,u as z,F as le,y as be,A as _e,cF as Bn,cG as Bo,eb as Al,ec as ua,m as $t,D as Fn,I as ke,G as ve,L as ze,ed as ys,dt as xn,d$ as _n,ee as El,h as Se,J as Yt,dZ as Yo,bu as Qo,cp as ca,b9 as ft,d8 as gt,df as da,n as Oe,du as he,o as Le,cH as bs,ef as Ll,d1 as qt,cX as Ae,dV as Vl,cu as Gt,d3 as Xo,eg as Ol,dj as pa,a as Tn,eh as fa,f as ma,ei as Rl,c6 as lt,x as Dt,t as Qt,cr as Un,c_ as ko,dW as Wl,ej as eo,dw as Ct,dh as va,be as zl,d9 as Bl,cy as ga,b as ha,bs as ws,ek as Fl,el as po,em as Ul,bb as ks,en as Gl,ci as ya,cq as At,d5 as ba,bc as wa,d7 as jl,cY as Zo,eo as Hl,cZ as ql,dr as ka,dk as Kl,bg as Jl,g as Cs,bd as Ca,ds as Yl,cV as Ql,dq as Sa,ep as Xl,e8 as Zl,dQ as ei}from"./vendor-other-BxP-0xn6.js";import{d as Ot,u as de,s as Fe,j as xa,k as _a}from"./vendor-vue-BEnTqVKr.js";import{b as ti,p as Ze,_ as Gn,u as Rt,a0 as Ta,a1 as Nn,a2 as _t,O as Na,w as Kt,a3 as $a,e as oi,a4 as ni,a as jn,q as Ss,M as si,Q as ai,R as li,J as ii,a5 as ri,v as Ia,o as Ma,L as Pa,T as xo,c as ui,y as Da,g as ci,a6 as di,a7 as pi,m as fi,k as uo}from"./vendor-primevue-rR0TB_Js.js";import{s as ye,n as Re,a as we,i as Aa,b as mt,c as pe,_ as ee,d as De,S as en,t as re,u as ht,e as ie,f as Nt,g as mi,E as Hn,h as Fo,j as vi,k as qn,l as Kn,m as gi,o as et,p as tt,q as J,r as hi,v as Pe,w as to,x as Uo,y as oo,z as Ce,A as Qe,B as yi,C as yt,D as ot,F as Ea,G as La,H as Jn,I as Va,J as fe,K as bi,L as St,M as Oa,N as no,O as wi,P as ki,Q as tn,R as Ci,T as Si,U as xi,V as Wt,W as Ra,X as _i,Y as Ti,Z as Yn,$ as so,a0 as ao,a1 as Wa,a2 as za,a3 as Ni,a4 as pt,a5 as Be,a6 as Jt,a7 as $i,a8 as fo,a9 as Ii,aa as Mi,ab as Xt,ac as Me,ad as Ba,ae as Pi,af as it,ag as Di,ah as Ai,ai as lo,aj as me,ak as Ei,al as Li,am as Et,an as je,ao as Ao,ap as Vi,aq as zt,ar as Zt,as as Oi,at as Qn,au as Xn,av as Go,aw as Zn,ax as vt,ay as Lt,az as Ri,aA as Tt,aB as Ee,aC as Fa,aD as on,aE as Wi,aF as zi,aG as Ua,aH as Bi,aI as Fi,aJ as Ui,aK as Gi,aL as nn,aM as go,aN as ji,aO as Hi,aP as qi,aQ as Ki,aR as Ji,aS as ln,aT as Yi,aU as Qi,aV as Xi,aW as Zi,aX as er,aY as tr,aZ as or,a_ as nr,a$ as sr,b0 as es,b1 as ar,b2 as xs,b3 as lr,b4 as ir,b5 as rr,b6 as ur,b7 as cr,b8 as kt,b9 as Eo,ba as Lo,bb as Vo,bc as Oo,bd as Ga,be as ja,bf as dr,bg as pr,bh as fr,bi as Ha,bj as qa,bk as mr,bl as Ka,bm as mo,bn as vr,bo as ts,bp as Ja,bq as gr,br as Ya,bs as hr,bt as yr,bu as br,bv as Qa,bw as wr,bx as _s,by as kr,bz as Cr,bA as os,bB as Sr,bC as dt,bD as Xa,bE as xr,bF as _r,bG as jt,bH as Tr,bI as Nr,bJ as $r,bK as Ir,bL as Mr,bM as Pr,bN as Dr,bO as Ar,bP as rn,bQ as _o,bR as Er,bS as Za,bT as un,bU as Lr,bV as Vr,bW as cn,bX as el,bY as Ts,bZ as Or,b_ as Rr,b$ as Co,c0 as dn,c1 as Wr,c2 as zr,c3 as Br,c4 as Fr,c5 as Ns,c6 as $s,c7 as Is,c8 as Ur,c9 as tl,ca as Gr,cb as jr,cc as Hr,cd as qr,ce as Ms,cf as Kr,cg as Ps,ch as Jr,ci as Yr,cj as Ds,ck as As,cl as Qr,cm as Xr,cn as vo,co as Zr,cp as eu,cq as tu,cr as ou,cs as nu,ct as ol,cu as su,cv as au,cw as lu,cx as iu}from"./index-BODInyrK.js";import{_ as nl}from"./UserAvatar.vue_vue_type_script_setup_true_lang-Bxj7Xy09.js";import{W as ru}from"./index-CyS0uSKu.js";import{_ as jo,u as uu,a as cu,b as du,c as ho,d as pu}from"./LazyImage.vue_vue_type_script_setup_true_lang-Dza6G4hd.js";import{u as pn}from"./keybindingService-DR_nPGKY.js";import{u as fu}from"./serverConfigStore-Rd8VWEbH.js";import{_ as mu}from"./WidgetInputNumber.vue_vue_type_script_setup_true_lang-DPaOKLY2.js";const fn=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"),sl=Ot("workflowTemplates",()=>{const e=Je({}),o=Je([]),t=Je([]),s=E(!1),a=E(new Set),l=n(_=>d.value.find(S=>S.name===_),"getTemplateByName"),i=E(new Map),r=n((_,S)=>({..._,localizedTitle:ye(`templateWorkflows.template.${Re(S)}.${Re(_.name)}`,_.title??_.name),localizedDescription:ye(`templateWorkflows.templateDescription.${Re(S)}.${Re(_.name)}`,_.description)}),"addLocalizedFieldsToTemplate"),u=n((_,S)=>_.map(x=>r(x,S)),"localizeTemplateList"),p=n(_=>({..._,localizedTitle:ye(`templateWorkflows.category.${Re(_.title)}`,_.title??_.moduleName),templates:u(_.templates,_.title)}),"localizeTemplateCategory"),v=n(()=>{const _=o.value.flatMap(x=>x.templates.map(D=>({...r(D,x.title),sourceModule:x.moduleName}))),S=Object.entries(e.value).flatMap(([x,D])=>D.map(P=>({name:P,mediaType:"image",mediaSubtype:"jpg",description:P,sourceModule:x})));return{moduleName:"all",title:"All",localizedTitle:ye("templateWorkflows.category.All","All Templates"),templates:[..._,...S]}},"createAllCategory"),h=k(()=>{const _=[...o.value.map(p),...Object.entries(e.value).map(([x,D])=>({moduleName:x,title:x,localizedTitle:ye(`templateWorkflows.category.${Re(x)}`,x),templates:D.map(P=>({name:P,mediaType:"image",mediaSubtype:"jpg",description:P}))}))];return[{label:ye("templateWorkflows.category.ComfyUI Examples","ComfyUI Examples"),modules:[v(),..._.filter(x=>x.moduleName==="default")]},...Object.keys(e.value).length>0?[{label:ye("templateWorkflows.category.Custom Nodes","Custom Nodes"),modules:_.filter(x=>x.moduleName!=="default")}]:[]]}),d=k(()=>{const _=[];return o.value.forEach(x=>{x.templates.forEach(D=>{const P={...D,sourceModule:x.moduleName,category:x.title,categoryType:x.type,categoryGroup:x.category,isEssential:x.isEssential,isPartnerNode:D.openSource===!1,searchableText:[D.title||D.name,D.description||"",x.title,...D.tags||[],...D.models||[]].join(" ")};_.push(P)})}),Object.entries(e.value).forEach(([x,D])=>{D.forEach(P=>{const T={name:P,title:P,description:P,mediaType:"image",mediaSubtype:"jpg",sourceModule:x,category:"Extensions",categoryType:"extension",searchableText:`${P} ${x} extension`};_.push(T)})}),_.filter(x=>!x.requiresCustomNodes?.length)}),b=k(()=>{const _={keys:[{name:"searchableText",weight:.4},{name:"title",weight:.3},{name:"name",weight:.2},{name:"tags",weight:.1}],threshold:.3,includeScore:!0};return new ra(d.value,_)}),y=n(_=>{if(_==="all")return d.value;if(_==="basics")return d.value.filter(x=>x.isEssential);if(_==="partner-nodes")return d.value.filter(x=>x.isPartnerNode);if(_.startsWith("extension-")){const x=_.replace("extension-","");return d.value.filter(D=>D.sourceModule===x)}const S=i.value.get(_);return S?d.value.filter(x=>!(S.category&&x.category!==S.category||S.categoryGroup&&x.categoryGroup!==S.categoryGroup)):d.value},"filterTemplatesByCategory"),g=k(()=>{if(!s.value)return[];const _=[];i.value.clear(),_.push({id:"all",label:ye("templateWorkflows.category.All","All Templates"),icon:fn("all")});const S=o.value.find(T=>T.isEssential&&T.templates.length>0);if(S){const T=S.title??"Getting Started";_.push({id:"basics",label:ye(`templateWorkflows.category.${Re(T)}`,T),icon:"icon-[lucide--graduation-cap]"})}const x=new Map;if(o.value.forEach(T=>{if(T.isEssential)return;const $=T.category,I=T.icon;if($){x.has($)||x.set($,{title:$,items:[]});const B=x.get($),G=`${$.toLowerCase().replace(/\s+/g,"-")}-${T.title.toLowerCase().replace(/\s+/g,"-")}`;i.value.set(G,{category:T.title,categoryGroup:$}),B.items.push({id:G,label:ye(`templateWorkflows.category.${Re(T.title)}`,T.title),icon:I||fn(T.type||"default")})}}),x.forEach((T,$)=>{T.items.length>0&&_.push({title:ye(`templateWorkflows.category.${Re($)}`,$.split(" ").map(I=>I.charAt(0).toUpperCase()+I.slice(1).toLowerCase()).join(" ")),items:T.items})}),d.value.filter(T=>T.isPartnerNode).length>0&&_.push({id:"partner-nodes",label:ye("templateWorkflows.category.Partner Nodes","Partner Nodes"),icon:"icon-[lucide--handshake]"}),d.value.filter(T=>T.sourceModule!=="default").length>0){const $=Array.from(new Set(d.value.filter(I=>I.sourceModule!=="default").map(I=>I.sourceModule))).sort().map(I=>({id:`extension-${I}`,label:ye(`templateWorkflows.category.${Re(I)}`,I),icon:fn("extensions")}));_.push({title:ye("templateWorkflows.category.Extensions","Extensions"),items:$,collapsible:!0})}return _});async function c(){try{if(!s.value){e.value=await we.getWorkflowTemplates();const _=Aa.global.locale.value,[S,x]=await Promise.all([we.getCoreWorkflowTemplates(_),mt&&_!=="en"?we.getCoreWorkflowTemplates("en"):Promise.resolve([])]);o.value=S,t.value=x;const D=o.value.flatMap(T=>T.templates.map($=>$.name)),P=Object.values(e.value).flat();a.value=new Set([...D,...P]),s.value=!0}}catch(_){console.error("Error fetching workflow templates:",_)}}n(c,"loadWorkflowTemplates");function w(_){if(t.value.length===0)return null;for(const S of t.value){const x=S.templates.find(D=>D.name===_);if(x)return{tags:x.tags,category:S.title,useCase:x.useCase,models:x.models,license:x.license}}return null}return n(w,"getEnglishMetadata"),{groupedTemplates:h,navGroupedTemplates:g,enhancedTemplates:d,templateFuse:b,filterTemplatesByCategory:y,isLoaded:s,loadWorkflowTemplates:c,knownTemplateNames:a,getTemplateByName:l,getEnglishMetadata:w}}),sn=Symbol(),vu={class:"base-widget-layout rounded-2xl overflow-hidden relative"},gu={class:"flex h-full w-full"},hu={class:"flex-1 flex bg-base-background"},yu={class:"flex h-full w-full flex-col"},bu={key:0,class:"w-full h-18 px-6 flex items-center justify-between gap-2"},wu={class:"flex flex-1 shrink-0 gap-2"},ku={class:"flex min-h-0 flex-1 flex-col"},Cu={key:0,class:"text-xxl m-0 px-6 pt-2 pb-6 capitalize"},Su={class:"min-h-0 px-6 pt-0 pb-10 overflow-y-auto"},xu={key:0,class:"w-1/4 min-w-40 max-w-80"},_u=H({__name:"BaseModalLayout",props:{contentTitle:{}},setup(e){const o={md:880},t={width:"w-1/3",minWidth:"min-w-40",maxWidth:"max-w-56"},s=Pl(),a=Dl(sn,()=>{}),i=Jo(o).greater("md"),r=E(!0),u=E(!1),p=E(!1),v=k(()=>!!s.rightPanel);se(i,y=>{y||(p.value=!1)});const h=k(()=>i.value?r.value:p.value),d=n(()=>{i.value?r.value=!r.value:p.value=!p.value},"toggleLeftPanel"),b=n(()=>{u.value=!u.value},"toggleRightPanel");return(y,g)=>(m(),N("div",vu,[ue(W(ee,{size:"icon",class:Q(C(pe)("absolute top-4 right-18 z-10","transition-opacity duration-200",{"opacity-0 pointer-events-none":u.value||!v.value})),onClick:b},{default:L(()=>g[0]||(g[0]=[f("i",{class:"icon-[lucide--panel-right] text-sm"},null,-1)])),_:1},8,["class"]),[[Ye,!u.value&&v.value]]),W(ee,{class:"absolute top-4 right-6 z-10 transition-opacity duration-200",onClick:C(a)},{default:L(()=>g[1]||(g[1]=[f("i",{class:"pi pi-times text-sm"},null,-1)])),_:1},8,["onClick"]),f("div",gu,[W(zn,{name:"slide-panel"},{default:L(()=>[y.$slots.leftPanel&&h.value?(m(),N("nav",{key:0,class:Q([t.width,t.minWidth,t.maxWidth])},[Ne(y.$slots,"leftPanel",{},void 0,!0)],2)):O("",!0)]),_:3}),f("div",hu,[f("div",yu,[y.$slots.header?(m(),N("header",bu,[f("div",wu,[C(i)?O("",!0):(m(),F(ee,{key:0,size:"icon",onClick:d},{default:L(()=>[f("i",{class:Q(C(pe)(h.value?"icon-[lucide--panel-left]":"icon-[lucide--panel-left-close]"))},null,2)]),_:1})),Ne(y.$slots,"header",{},void 0,!0)]),Ne(y.$slots,"header-right-area",{},void 0,!0),f("div",{class:Q(C(pe)("flex justify-end gap-2 w-0",v.value&&!u.value?"min-w-22":"min-w-10"))},[u.value&&v.value?(m(),F(ee,{key:0,size:"icon",onClick:b},{default:L(()=>g[2]||(g[2]=[f("i",{class:"icon-[lucide--panel-right-close]"},null,-1)])),_:1})):O("",!0)],2)])):O("",!0),f("main",ku,[Ne(y.$slots,"contentFilter",{},void 0,!0),y.$slots.leftPanel?O("",!0):(m(),N("h2",Cu,z(y.contentTitle),1)),f("div",Su,[Ne(y.$slots,"content",{},void 0,!0)])])]),v.value&&u.value?(m(),N("aside",xu,[Ne(y.$slots,"rightPanel",{},void 0,!0)])):O("",!0)])])]))}}),ns=De(_u,[["__scopeId","data-v-e9f4fefe"]]),Tu=H({__name:"NavIcon",props:{icon:{}},setup(e){return(o,t)=>(m(),N("i",{class:Q([o.icon,"text-neutral text-sm"])},null,2))}}),Nu={key:1,class:"text-neutral icon-[lucide--folder] text-xs"},$u={class:"flex items-center"},Es=H({__name:"NavItem",props:{icon:{},active:{type:Boolean},onClick:{type:Function}},setup(e){return(o,t)=>(m(),N("div",{class:Q(["flex cursor-pointer items-center gap-2 rounded-md px-4 py-3 text-sm transition-colors text-base-foreground",o.active?"bg-interface-menu-component-surface-selected":"hover:bg-interface-menu-component-surface-hovered"]),role:"button",onClick:t[0]||(t[0]=(...s)=>o.onClick&&o.onClick(...s))},[o.icon?(m(),F(Tu,{key:0,icon:o.icon},null,8,["icon"])):(m(),N("i",Nu)),f("span",$u,[Ne(o.$slots,"default")])],2))}}),Iu={class:"text-xs font-bold text-text-secondary uppercase"},Mu=H({__name:"NavTitle",props:{title:{},modelValue:{type:Boolean,default:!1},collapsible:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:o}){const t=o,s=k({get:n(()=>e.modelValue,"get"),set:n(l=>t("update:modelValue",l),"set")}),a=n(()=>{s.value=!s.value},"toggleCollapse");return(l,i)=>(m(),N("div",{class:Q(C(pe)("flex items-center justify-between m-0 px-3 py-0 pt-5",l.collapsible&&"cursor-pointer select-none")),onClick:i[0]||(i[0]=r=>l.collapsible&&a())},[f("h3",Iu,z(l.title),1),l.collapsible?(m(),N("i",{key:0,class:Q(C(pe)("pi transition-transform duration-200 text-xs text-text-secondary ",s.value?"pi-chevron-right":"pi-chevron-down"))},null,2)):O("",!0)],2))}}),Pu={},Du={class:"flex h-16 items-center justify-between px-6"},Au={class:"flex items-center gap-2 pl-1"},Eu={class:"text-neutral text-base font-bold"};function Lu(e,o){return m(),N("header",Du,[f("div",Au,[Ne(e.$slots,"icon",{},()=>[o[0]||(o[0]=f("i",{class:"text-neutral icon-[lucide--puzzle] text-base"},null,-1))]),f("h2",Eu,[Ne(e.$slots,"default")])])])}n(Lu,"_sfc_render$2");const Vu=De(Pu,[["render",Lu]]),Ou={class:"flex h-full w-full flex-col bg-modal-panel-background"},Ru={class:"flex scrollbar-hide flex-1 flex-col gap-1 overflow-y-auto px-3 py-4"},Wu={key:0,class:"flex flex-col gap-2"},zu={key:1,class:"flex flex-col gap-2"},ss=H({__name:"LeftSidePanel",props:{navItems:{default:n(()=>[],"default")},modelValue:{}},emits:["update:modelValue"],setup(e,{emit:o}){const t=o,s=E({}),a=n(()=>{if(!e.navItems||e.navItems.length===0)return null;const i=e.navItems[0];return"items"in i&&i.items.length>0?i.items[0].id:"id"in i?i.id:null},"getFirstItemId"),l=k({get:n(()=>e.modelValue??a(),"get"),set:n(i=>t("update:modelValue",i),"set")});return(i,r)=>(m(),N("div",Ou,[W(Vu,null,{icon:L(()=>[Ne(i.$slots,"header-icon")]),default:L(()=>[Ne(i.$slots,"header-title")]),_:3}),f("nav",Ru,[(m(!0),N(le,null,be(i.navItems,(u,p)=>(m(),N(le,{key:p},["items"in u?(m(),N("div",Wu,[W(Mu,{modelValue:s.value[u.title],"onUpdate:modelValue":n(v=>s.value[u.title]=v,"onUpdate:modelValue"),title:u.title,collapsible:u.collapsible},null,8,["modelValue","onUpdate:modelValue","title","collapsible"]),!u.collapsible||!s.value[u.title]?(m(!0),N(le,{key:0},be(u.items,v=>(m(),F(Es,{key:v.id,icon:v.icon,active:l.value===v.id,onClick:n(h=>l.value=v.id,"onClick")},{default:L(()=>[_e(z(v.label),1)]),_:2},1032,["icon","active","onClick"]))),128)):O("",!0)])):(m(),N("div",zu,[W(Es,{icon:u.icon,active:l.value===u.id,onClick:n(v=>l.value=u.id,"onClick")},{default:L(()=>[_e(z(u.label),1)]),_:2},1032,["icon","active","onClick"])]))],64))),128))])]))}});function Bu(e){return k(()=>{const{minWidth:o,maxWidth:t}=e,s={};return o&&(s.minWidth=o),t&&(s.maxWidth=t),s})}n(Bu,"usePopoverSizing");const Fu={class:"flex flex-col px-2 pt-2 pb-0"},Uu={key:1,class:"mt-2 flex items-center justify-between"},Gu={key:0,class:"px-1 text-sm text-base-foreground"},ju={class:"text-sm"},Hu={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"},qu={key:0,class:"text-bold icon-[lucide--check] text-xs text-white"},Vt=H({inheritAttrs:!1,__name:"MultiSelect",props:Bn({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=Bo(e,"modelValue"),t=Bo(e,"searchQuery"),{t:s}=de(),a=k(()=>o.value.length),l=Bu({minWidth:e.popoverMinWidth,maxWidth:e.popoverMaxWidth}),i=Al(),r=k(()=>i.options||[]),u={fuseOptions:{keys:["name","value"],threshold:.3,includeScore:!1},matchAllWhenSearchEmpty:!0},{results:p}=ua(t,r,u),v=k(()=>{if(!t.value||t.value.trim()==="")return r.value;const h=p.value.map(b=>b.item);return[...o.value.filter(b=>!h.some(y=>y.value===b.value)),...h]});return(h,d)=>(m(),F(C(ti),$t({modelValue:o.value,"onUpdate:modelValue":d[2]||(d[2]=b=>o.value=b)},{...h.$attrs,options:v.value},{"option-label":"name",unstyled:"","max-selected-labels":0,pt:{root:n(({props:b})=>({class:C(pe)("h-10 relative inline-flex cursor-pointer select-none","rounded-lg bg-secondary-background text-base-foreground","transition-all duration-200 ease-in-out","border-[2.5px] border-solid",a.value>0?"border-node-component-border":"border-transparent","focus-within:border-node-component-border",{"opacity-60 cursor-default":b.disabled})}),"root"),labelContainer:{class:"flex-1 flex items-center overflow-hidden whitespace-nowrap pl-4 py-2 "},label:{class:"p-0"},dropdown:{class:"flex shrink-0 cursor-pointer items-center justify-center px-3"},header:n(()=>({class:h.showSearchBox||h.showSelectedCount||h.showClearButton?"block":"hidden"}),"header"),overlay:{class:C(pe)("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(${h.listMaxHeight}, 50vh)`},class:"scrollbar-custom"}),"listContainer"),list:{class:"flex flex-col gap-0 p-0 m-0 list-none border-none text-sm"},option:n(({context:b})=>({class:C(pe)("flex gap-2 items-center h-10 px-2 rounded-lg cursor-pointer","hover:bg-secondary-background-hover",b?.focused&&"bg-secondary-background-selected hover:bg-secondary-background-selected")}),"option"),pcHeaderCheckbox:{root:{class:"hidden"},style:{display:"none"}},pcOptionCheckbox:{root:{class:"hidden"},style:{display:"none"}}},"aria-label":h.label||C(s)("g.multiSelectDropdown"),role:"combobox","aria-expanded":!1,"aria-haspopup":"listbox",tabindex:0}),Fn({value:L(()=>[f("span",ju,z(h.label),1),a.value>0?(m(),N("span",Hu,z(a.value),1)):O("",!0)]),dropdownicon:L(()=>[d[4]||(d[4]=f("i",{class:"icon-[lucide--chevron-down] text-muted-foreground"},null,-1))]),option:L(b=>[f("div",{role:"button",class:"flex items-center gap-2 cursor-pointer",style:ve(C(l))},[f("div",{class:Q(["flex size-4 shrink-0 items-center justify-center rounded p-0.5 transition-all duration-200",b.selected?"bg-primary-background":"bg-secondary-background"])},[b.selected?(m(),N("i",qu)):O("",!0)],2),f("span",null,z(b.option.name),1)],4)]),_:2},[h.showSearchBox||h.showSelectedCount||h.showClearButton?{name:"header",fn:L(()=>[f("div",Fu,[h.showSearchBox?(m(),F(en,{key:0,modelValue:t.value,"onUpdate:modelValue":d[0]||(d[0]=b=>t.value=b),class:Q(h.showSelectedCount||h.showClearButton?"mb-2":""),"show-order":!0,"show-border":!0,"place-holder":h.searchPlaceholder},null,8,["modelValue","class","place-holder"])):O("",!0),h.showSelectedCount||h.showClearButton?(m(),N("div",Uu,[h.showSelectedCount?(m(),N("span",Gu,z(a.value>0?h.$t("g.itemsSelected",{selectedCount:a.value}):h.$t("g.itemSelected",{selectedCount:a.value})),1)):O("",!0),h.showClearButton?(m(),F(ee,{key:1,variant:"textonly",size:"md",onClick:d[1]||(d[1]=ke(b=>o.value=[],["stop"]))},{default:L(()=>[_e(z(h.$t("g.clearAll")),1)]),_:1})):O("",!0)])):O("",!0),d[3]||(d[3]=f("div",{class:"my-4 h-px bg-border-default"},null,-1))])]),key:"0"}:void 0]),1040,["modelValue","pt","aria-label"]))}});function Ku(e){const o=k(()=>{const a=ze(e).map(i=>{const r=i.name.split(".").pop();return r&&r!==i.name?r:null}).filter(i=>i!==null);return ys(a,(i,r)=>i===r).sort().map(i=>({name:`.${i}`,value:i}))}),t=k(()=>{const a=ze(e).map(i=>i.user_metadata?.base_model).filter(i=>i!==void 0&&typeof i=="string");return ys(a,(i,r)=>i===r).sort().map(i=>({name:i,value:i}))});return{availableFileFormats:o,availableBaseModels:t}}n(Ku,"useAssetFilterOptions");const Ju={class:"flex gap-4 items-center justify-between px-6 pt-2 pb-6","data-component-id":"asset-filter-bar"},Yu={class:"flex gap-4 items-center","data-component-id":"asset-filter-bar-left"},Qu={class:"flex items-center","data-component-id":"asset-filter-bar-right"},Xu=H({__name:"AssetFilterBar",props:{assets:{default:n(()=>[],"default")},allAssets:{default:n(()=>[],"default")}},emits:["filterChange"],setup(e,{emit:o}){const s=[...[{name:re("assetBrowser.sortRecent"),value:"recent"},{name:re("assetBrowser.sortAZ"),value:"name-asc"},{name:re("assetBrowser.sortZA"),value:"name-desc"}]],a=[{name:re("assetBrowser.ownershipAll"),value:"all"},{name:re("assetBrowser.ownershipMyModels"),value:"my-models"},{name:re("assetBrowser.ownershipPublicModels"),value:"public-models"}],l=E([]),i=E([]),r=E("recent"),u=E("all"),{availableFileFormats:p,availableBaseModels:v}=Ku(e.assets),h=k(()=>(e.allAssets.length?e.allAssets:e.assets).some(g=>g.is_immutable===!1)),d=o;function b(){d("filterChange",{fileFormats:l.value.map(y=>y.value),baseModels:i.value.map(y=>y.value),sortBy:r.value,ownership:u.value})}return n(b,"handleFilterChange"),(y,g)=>(m(),N("div",Ju,[f("div",Yu,[C(p).length>0?(m(),F(Vt,{key:0,modelValue:l.value,"onUpdate:modelValue":[g[0]||(g[0]=c=>l.value=c),b],label:y.$t("assetBrowser.fileFormats"),options:C(p),class:"min-w-32","data-component-id":"asset-filter-file-formats"},null,8,["modelValue","label","options"])):O("",!0),C(v).length>0?(m(),F(Vt,{key:1,modelValue:i.value,"onUpdate:modelValue":[g[1]||(g[1]=c=>i.value=c),b],label:y.$t("assetBrowser.baseModels"),options:C(v),class:"min-w-32","data-component-id":"asset-filter-base-models"},null,8,["modelValue","label","options"])):O("",!0),h.value?(m(),F(jo,{key:2,modelValue:u.value,"onUpdate:modelValue":[g[2]||(g[2]=c=>u.value=c),b],label:y.$t("assetBrowser.ownership"),options:a,class:"min-w-42","data-component-id":"asset-filter-ownership"},null,8,["modelValue","label"])):O("",!0)]),f("div",Qu,[W(jo,{modelValue:r.value,"onUpdate:modelValue":[g[3]||(g[3]=c=>r.value=c),b],label:y.$t("assetBrowser.sortBy"),options:s,class:"min-w-32","data-component-id":"asset-filter-sort"},{icon:L(()=>g[4]||(g[4]=[f("i",{class:"icon-[lucide--arrow-up-down] size-3"},null,-1)])),_:1},8,["modelValue","label"])])]))}}),Zu={class:"relative inline-flex items-center"},ec={class:"flex min-w-40 flex-col gap-2 p-2"},al=H({__name:"MoreButton",props:{isVertical:{type:Boolean,default:!1}},emits:["menuOpened","menuClosed"],setup(e,{expose:o}){const t=E(!1),s=E();function a(){s.value?.hide()}return n(a,"hide"),o({hide:a,isOpen:t}),(l,i)=>(m(),N("div",Zu,[W(ee,{size:"icon",variant:"secondary",onClick:s.value?.toggle},{default:L(()=>[f("i",{class:Q(C(pe)(l.isVertical?"icon-[lucide--more-vertical]":"icon-[lucide--ellipsis]","text-sm"))},null,2)]),_:1},8,["onClick"]),W(C(Ze),{ref_key:"popover",ref:s,"append-to":"body","auto-z-index":"",dismissable:"","close-on-escape":"",unstyled:"","base-z-index":1e3,pt:{root:{class:C(pe)("absolute z-50")},content:{class:C(pe)("mt-1 rounded-lg","bg-secondary-background text-base-foreground","shadow-lg")}},onShow:i[0]||(i[0]=()=>{t.value=!0,l.$emit("menuOpened")}),onHide:i[1]||(i[1]=()=>{t.value=!1,l.$emit("menuClosed")})},{default:L(()=>[f("div",ec,[Ne(l.$slots,"default",{close:a})])]),_:3},8,["pt"])]))}}),tc={class:"flex flex-col px-4 py-2 text-sm text-muted-foreground border-t border-border-default"},oc={key:0},nc=H({__name:"ConfirmBody",props:{promptText:{}},setup(e){const o=k(()=>ze(e.promptText));return(t,s)=>(m(),N("div",tc,[o.value?(m(),N("p",oc,z(o.value),1)):O("",!0)]))}}),sc={class:"w-full flex gap-2 justify-end px-2 pb-2"},ac=H({__name:"ConfirmFooter",props:{cancelText:{},confirmText:{},confirmClass:{},optionsDisabled:{}},emits:["cancel","confirm"],setup(e){const{t:o}=de(),t=k(()=>e.confirmText||o("g.confirm")),s=k(()=>e.cancelText||o("g.cancel")),a=k(()=>ze(e.optionsDisabled));return(l,i)=>(m(),N("section",sc,[W(ee,{disabled:a.value,variant:"textonly",autofocus:"",onClick:i[0]||(i[0]=r=>l.$emit("cancel"))},{default:L(()=>[_e(z(s.value),1)]),_:1},8,["disabled"]),W(ee,{disabled:a.value,variant:"textonly",class:Q(l.confirmClass),onClick:i[1]||(i[1]=r=>l.$emit("confirm"))},{default:L(()=>[_e(z(t.value),1)]),_:1},8,["disabled","class"])]))}}),lc={class:"flex items-center gap-2 p-4 font-bold text-sm text-base-foreground font-inter"},ic={key:0,class:"flex-auto"},rc=H({__name:"ConfirmHeader",props:{title:{}},setup(e){return(o,t)=>(m(),N("div",lc,[o.title?(m(),N("span",ic,z(o.title),1)):O("",!0)]))}});function uc(e={}){const o=ht(),{headerProps:t,props:s,footerProps:a}=e;return o.showDialog({headerComponent:rc,component:nc,footerComponent:ac,headerProps:t,props:s,footerProps:a,dialogComponentProps:{pt:{header:"py-0! px-0!",content:"p-0!",footer:"p-0!"}}})}n(uc,"showConfirmDialog");const cc={class:"absolute left-2 bottom-2 flex flex-wrap justify-start gap-1"},dc=H({__name:"AssetBadgeGroup",props:{badges:{}},setup(e){return(o,t)=>(m(),N("div",cc,[(m(!0),N(le,null,be(o.badges,s=>(m(),N("span",{key:s.label,class:Q(C(pe)("px-2 py-1 rounded text-xs font-bold uppercase tracking-wider text-modal-card-tag-foreground bg-modal-card-tag-background"))},z(s.label),3))),128))]))}}),pc=["data-asset-id","aria-labelledby","aria-describedby","tabindex"],fc={class:"relative aspect-square w-full overflow-hidden rounded-xl"},mc=["src","alt"],vc={class:"max-h-32 flex flex-col gap-2 justify-between flex-auto"},gc=["id"],hc=["id"],yc={class:"flex gap-4 text-xs text-muted-foreground mt-auto"},bc={key:0,class:"flex items-center gap-1"},wc={key:1,class:"flex items-center gap-1"},kc={key:2,class:"flex items-center gap-1"},Cc=H({__name:"AssetCard",props:{asset:{},interactive:{type:Boolean}},emits:["select"],setup(e){const{t:o}=de(),t=ie(),{closeDialog:s}=ht(),{flags:a}=uu(),l=Nt(),i=xn("dropdown-menu-button"),r=_n(),u=_n(),p=E(!1),v=E(),h=E(!1),d=k(()=>v.value??e.asset.name),b=k(()=>t.get("LiteGraph.Node.TooltipDelay")),{isLoading:y,error:g}=El({src:e.asset.preview_url??"",alt:e.asset.name});function c(){i.value?.hide();const S=ze(d),x=E(o("assetBrowser.deletion.body")),D=E(!1),P=uc({headerProps:{title:o("assetBrowser.deletion.header")},props:{promptText:x},footerProps:{confirmText:o("g.delete"),confirmClass:pe("bg-danger-200 text-base-foreground hover:bg-danger-200/80 focus:bg-danger-200/80 focus:ring ring-base-foreground"),optionsDisabled:D,onCancel:n(()=>{s(P)},"onCancel"),onConfirm:n(async()=>{D.value=!0;try{x.value=o("assetBrowser.deletion.inProgress",{assetName:S}),await Fo.deleteAsset(e.asset.id),x.value=o("assetBrowser.deletion.complete",{assetName:S}),await new Promise(T=>setTimeout(T,1e3)),h.value=!0}catch(T){console.error(T),x.value=o("assetBrowser.deletion.failed",{assetName:S}),await new Promise($=>setTimeout($,3e3))}finally{s(P)}},"onConfirm")}})}n(c,"confirmDeletion");function w(){i.value?.hide(),p.value=!0}n(w,"startAssetRename");async function _(S){if(p.value=!1,S){v.value=S;try{const x=await Fo.updateAsset(e.asset.id,{name:S});v.value=x.name}catch(x){console.error(x),l.add({severity:"error",summary:o("assetBrowser.rename.failed"),life:1e4}),v.value=void 0}}}return n(_,"assetRename"),(S,x)=>{const D=Se("tooltip");return h.value?O("",!0):(m(),N("div",{key:0,"data-component-id":"AssetCard","data-asset-id":S.asset.id,"aria-labelledby":C(r),"aria-describedby":C(u),tabindex:S.interactive?0:-1,class:Q(C(pe)("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]=Yt(ke(P=>S.interactive&&S.$emit("select",S.asset),["self"]),["enter"]))},[f("div",fc,[C(y)||C(g)?(m(),N("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"]))})):(m(),N("img",{key:1,src:S.asset.preview_url,alt:d.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,mc)),W(dc,{badges:S.asset.badges},null,8,["badges"]),C(a).assetUpdateOptionsEnabled&&!(S.asset.is_immutable??!0)?(m(),F(mi,{key:2,class:Q(C(pe)("absolute top-2 right-2 invisible group-hover:visible",C(i)?.isOpen&&"visible"))},{default:L(()=>[W(al,{ref:"dropdown-menu-button",size:"sm"},{default:L(()=>[W(ee,{variant:"secondary",size:"md",class:"justify-start",onClick:w},{default:L(()=>[x[4]||(x[4]=f("i",{class:"icon-[lucide--pencil]"},null,-1)),f("span",null,z(S.$t("g.rename")),1)]),_:1}),W(ee,{variant:"secondary",size:"md",class:"justify-start",onClick:c},{default:L(()=>[x[5]||(x[5]=f("i",{class:"icon-[lucide--trash-2]"},null,-1)),f("span",null,z(S.$t("g.delete")),1)]),_:1})]),_:1},512)]),_:1},8,["class"])):O("",!0)]),f("div",vc,[ue((m(),N("h3",{id:C(r),class:Q(C(pe)("mb-2 m-0 text-base font-semibold line-clamp-2 wrap-anywhere","text-base-foreground"))},[W(Hn,{"model-value":d.value,"is-editing":p.value,"input-attrs":{"data-testid":"asset-name-input"},onEdit:_,onCancel:x[2]||(x[2]=P=>_())},null,8,["model-value","is-editing"])],10,gc)),[[D,{value:d.value,showDelay:b.value},void 0,{top:!0}]]),ue((m(),N("p",{id:C(u),class:Q(C(pe)("m-0 text-sm leading-6 overflow-hidden [-webkit-box-orient:vertical] [-webkit-line-clamp:2] [display:-webkit-box] text-muted-foreground"))},[_e(z(S.asset.description),1)],10,hc)),[[D,{value:S.asset.description,showDelay:b.value},void 0,{top:!0}]]),f("div",yc,[S.asset.stats.stars?(m(),N("span",bc,[x[6]||(x[6]=f("i",{class:"icon-[lucide--star] size-3"},null,-1)),_e(" "+z(S.asset.stats.stars),1)])):O("",!0),S.asset.stats.downloadCount?(m(),N("span",wc,[x[7]||(x[7]=f("i",{class:"icon-[lucide--download] size-3"},null,-1)),_e(" "+z(S.asset.stats.downloadCount),1)])):O("",!0),S.asset.stats.formattedDate?(m(),N("span",kc,[x[8]||(x[8]=f("i",{class:"icon-[lucide--clock] size-3"},null,-1)),_e(" "+z(S.asset.stats.formattedDate),1)])):O("",!0)])])],42,pc))}}}),Sc=["aria-label","aria-setsize"],xc={key:0,class:"col-span-full flex items-center justify-center py-20"},_c={key:1,class:"col-span-full flex flex-col items-center justify-center py-16 text-muted-foreground"},Tc={class:"mb-2 text-lg font-medium"},Nc={class:"text-sm"},$c=H({__name:"AssetGrid",props:{assets:{},loading:{type:Boolean}},emits:["assetSelect"],setup(e){return(o,t)=>(m(),N("div",{"data-component-id":"AssetGrid",class:Q(C(pe)("grid grid-cols-[repeat(auto-fill,minmax(15rem,1fr))] gap-4 p-2")),role:"grid","aria-label":o.$t("assetBrowser.assetCollection"),"aria-rowcount":-1,"aria-colcount":-1,"aria-setsize":o.assets.length},[o.loading?(m(),N("div",xc,t[1]||(t[1]=[f("i",{class:"icon-[lucide--loader] size-12 animate-spin text-muted-foreground"},null,-1)]))):o.assets.length===0?(m(),N("div",_c,[t[2]||(t[2]=f("i",{class:"mb-4 icon-[lucide--search] size-10"},null,-1)),f("h3",Tc,z(o.$t("assetBrowser.noAssetsFound")),1),f("p",Nc,z(o.$t("assetBrowser.tryAdjustingFilters")),1)])):(m(!0),N(le,{key:2},be(o.assets,s=>(m(),F(Cc,{key:s.id,asset:s,interactive:!0,onSelect:t[0]||(t[0]=a=>o.$emit("assetSelect",a))},null,8,["asset"]))),128))],10,Sc))}});function Ic(e){return typeof e.user_metadata?.description=="string"?e.user_metadata.description:null}n(Ic,"getAssetDescription");function ll(e){return typeof e.user_metadata?.base_model=="string"?e.user_metadata.base_model:null}n(ll,"getAssetBaseModel");function Mc(e){return o=>e==="all"||o.tags.includes(e)}n(Mc,"filterByCategory");function Pc(e){return o=>{if(e.length===0)return!0;const t=new Set(e),s=o.name.split(".").pop()?.toLowerCase();return s?t.has(s):!1}}n(Pc,"filterByFileFormats");function Dc(e){return o=>{if(e.length===0)return!0;const t=new Set(e),s=ll(o);return s?t.has(s):!1}}n(Dc,"filterByBaseModels");function Ac(e){return o=>e==="all"?!0:e==="my-models"?o.is_immutable===!1:e==="public-models"?o.is_immutable===!0:!0}n(Ac,"filterByOwnership");function Ec(e=E([])){const o=k(()=>e.value??[]),t=E(""),s=E("all"),a=E({sortBy:"recent",fileFormats:[],baseModels:[],ownership:"all"});function l(y){const g=y.tags.find(x=>x!=="models"),c=Ic(y)||`${g||re("assetBrowser.unknown")} model`,w=[];g&&w.push({label:g,type:"type"});const _=ll(y);_&&w.push({label:_,type:"base"});const S={formattedDate:vi(new Date(y.created_at),{dateStyle:"short"}),downloadCount:void 0,stars:void 0};return{...y,description:c,badges:w,stats:S}}n(l,"transformAssetForDisplay");const i=k(()=>{const y=o.value.filter(c=>c.tags[0]==="models").map(c=>c.tags[1]).filter(c=>typeof c=="string"&&c.length>0),g=Array.from(new Set(y)).sort().map(c=>({id:c,label:c.charAt(0).toUpperCase()+c.slice(1),icon:"icon-[lucide--package]"}));return[{id:"all",label:re("assetBrowser.allModels"),icon:"icon-[lucide--folder]"},...g]}),r=k(()=>s.value==="all"?re("assetBrowser.allModels"):i.value.find(g=>g.id===s.value)?.label||re("assetBrowser.assets")),u=k(()=>o.value.filter(Mc(s.value))),p={fuseOptions:{keys:[{name:"name",weight:.4},{name:"tags",weight:.3}],threshold:.4,ignoreLocation:!0,includeScore:!0},matchAllWhenSearchEmpty:!0},{results:v}=ua(t,u,p),h=k(()=>v.value.map(y=>y.item)),d=k(()=>{const g=[...h.value.filter(Pc(a.value.fileFormats)).filter(Dc(a.value.baseModels)).filter(Ac(a.value.ownership))];return g.sort((c,w)=>{switch(a.value.sortBy){case"name-desc":return w.name.localeCompare(c.name);case"recent":return new Date(w.created_at).getTime()-new Date(c.created_at).getTime();case"popular":return c.name.localeCompare(w.name);case"name-asc":default:return c.name.localeCompare(w.name)}}),g.map(l)});function b(y){a.value={...y}}return n(b,"updateFilters"),{searchQuery:t,selectedCategory:s,availableCategories:i,contentTitle:r,categoryFilteredAssets:u,filteredAssets:d,updateFilters:b}}n(Ec,"useAssetBrowser");const Lc=new Set(["VAE","CLIP","GLIGEN"]);function Vc(e){return e?e==="diffusion_models"?"Diffusion":e.split("_").map(o=>{const t=o.toUpperCase();if(Lc.has(t))return t;const s=o.toLowerCase();return s.charAt(0).toUpperCase()+s.slice(1)}).join(" "):"Models"}n(Vc,"formatCategoryLabel");const Oc={class:"capitalize"},Rc={class:"flex w-full items-center justify-between gap-2"},Wc={class:"hidden md:inline"},Ls=H({__name:"AssetBrowserModal",props:{nodeType:{},onSelect:{type:Function},onClose:{type:Function},showLeftPanel:{type:Boolean},title:{},assetType:{}},emits:["asset-select","close"],setup(e,{emit:o}){const t=e,{t:s}=de(),a=o,l=Jo(Yo);Qo(sn,t.onClose??(()=>{}));const i=n(async()=>t.nodeType?await Fo.getAssetsForNodeType(t.nodeType)??[]:t.assetType?await Fo.getAssetsByTag(t.assetType)??[]:[],"fetchAssets"),{state:r,isLoading:u,execute:p}=ca(i,[],{immediate:!1});se(()=>[t.nodeType,t.assetType],async()=>{await p()},{immediate:!0});const{searchQuery:v,selectedCategory:h,availableCategories:d,categoryFilteredAssets:b,filteredAssets:y,updateFilters:g}=Ec(r),c=qn(),w=k(()=>{const B=(r.value??[]).map(G=>G.tags?.find(M=>M!=="models")).find(G=>typeof G=="string"&&G.length>0);if(B)return B;if(t.nodeType){const G=c.getCategoryForNodeType(t.nodeType);if(G)return G}return t.assetType?t.assetType:"models"}),_=k(()=>h.value!=="all"?h.value:w.value),S=k(()=>{if(t.title)return t.title;const I=Vc(_.value);return s("assetBrowser.allCategory",{category:I})}),x=k(()=>t.showLeftPanel??!0);function D(){t.onClose?.(),a("close")}n(D,"handleClose");function P(I){a("asset-select",I),t.onSelect?.(I)}n(P,"handleAssetSelectAndEmit");const{isUploadButtonEnabled:T,showUploadDialog:$}=cu(p);return(I,B)=>(m(),F(ns,{"data-component-id":"AssetBrowserModal",class:"size-full max-h-full max-w-full min-w-0","content-title":S.value,onClose:D},Fn({header:L(()=>[f("div",Rc,[W(en,{modelValue:C(v),"onUpdate:modelValue":B[1]||(B[1]=G=>ft(v)?v.value=G:null),autofocus:!0,size:"lg",placeholder:I.$t("g.searchPlaceholder"),class:"max-w-96"},null,8,["modelValue","placeholder"]),C(T)?(m(),F(ee,{key:0,variant:"primary",size:C(l).md?"md":"icon","data-attr":"upload-model-button",onClick:C($)},{default:L(()=>[B[3]||(B[3]=f("i",{class:"icon-[lucide--folder-input]"},null,-1)),f("span",Wc,z(I.$t("assetBrowser.uploadModel")),1)]),_:1},8,["size","onClick"])):O("",!0)])]),contentFilter:L(()=>[W(Xu,{assets:C(b),"all-assets":C(r),onFilterChange:C(g)},null,8,["assets","all-assets","onFilterChange"])]),content:L(()=>[W($c,{assets:C(y),loading:C(u),onAssetSelect:P},null,8,["assets","loading"])]),_:2},[x.value?{name:"leftPanel",fn:L(()=>[W(ss,{modelValue:C(h),"onUpdate:modelValue":B[0]||(B[0]=G=>ft(h)?h.value=G:null),"data-component-id":"AssetBrowserModal-LeftSidePanel","nav-items":C(d)},{"header-icon":L(()=>B[2]||(B[2]=[f("div",{class:"icon-[lucide--folder] size-4"},null,-1)])),"header-title":L(()=>[f("span",Oc,z(S.value),1)]),_:1},8,["modelValue","nav-items"])]),key:"0"}:void 0]),1032,["content-title"]))}}),Vs={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"}}},zc=n(()=>{const e=ht(),o="global-asset-browser";async function t(a){const l=n(i=>{a.onAssetSelected?.(i),e.closeDialog({key:o})},"handleAssetSelected");e.showDialog({key:o,component:Ls,props:{nodeType:a.nodeType,inputName:a.inputName,currentValue:a.currentValue,onSelect:l,onClose:n(()=>e.closeDialog({key:o}),"onClose")},dialogComponentProps:Vs})}n(t,"show");async function s(a){const l=n(i=>{a.onAssetSelected?.(i),e.closeDialog({key:o})},"handleAssetSelected");e.showDialog({key:o,component:Ls,props:{showLeftPanel:!0,assetType:a.assetType,title:a.title,onSelect:l,onClose:n(()=>e.closeDialog({key:o}),"onClose")},dialogComponentProps:Vs})}return n(s,"browse"),{show:t,browse:s}},"useAssetBrowserDialog"),Bc={class:"flex max-w-xs min-w-40 flex-col gap-2 p-3"},Fc={class:"text-sm font-inter"},Uc={key:1,class:"text-xs"},Gc={class:"flex max-w-xs min-w-40 flex-col gap-2 p-3"},jc={class:"text-sm font-inter"},Hc={key:1,class:"text-xs"},Os="cursor-pointer transition-opacity hover:opacity-80",qc=H({__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=E(),s=n(d=>{t.value?.toggle(d)},"togglePopover"),a=k(()=>o.badge.variant??"info"),l=k(()=>({backgroundColor:o.backgroundColor})),i=k(()=>{switch(a.value){case"error":return"bg-danger-100 text-white";case"warning":return"bg-gold-600 text-black";case"info":default:return"bg-white text-black"}}),r=k(()=>{switch(a.value){case"error":return"text-danger-100";case"warning":return"text-gold-600";case"info":default:return"text-text-primary"}}),u=k(()=>r.value),p=k(()=>{if(o.badge.icon)return o.badge.icon;switch(a.value){case"error":return"pi pi-exclamation-circle";case"warning":return"pi pi-exclamation-triangle";case"info":default:return}}),v=k(()=>{switch(a.value){case"error":return"bg-danger-100";case"warning":return"bg-gold-600";case"info":default:return"bg-slate-100"}}),h=k(()=>({root:{class:pe("absolute z-50")},content:{class:pe("mt-1 rounded-lg","bg-base-background","text-base-foreground","shadow-lg","border border-border-default")}}));return(d,b)=>{const y=Se("tooltip");return d.displayMode==="icon-only"?(m(),N("div",{key:0,class:Q(["relative inline-flex h-full shrink-0 items-center justify-center px-2",Os]),style:ve(l.value),onClick:s},[p.value?(m(),N("i",{key:0,class:Q(["shrink-0 text-base",p.value,u.value])},null,2)):d.badge.label?(m(),N("div",{key:1,class:Q(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},z(d.badge.label),3)):(m(),N("div",{key:2,class:Q(["size-2 shrink-0 rounded-full",v.value])},null,2)),W(C(Ze),{ref_key:"popover",ref:t,"append-to":"body","auto-z-index":!0,"base-z-index":1e3,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:h.value},{default:L(()=>[f("div",Bc,[d.badge.label?(m(),N("div",{key:0,class:Q(["w-fit rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},z(d.badge.label),3)):O("",!0),f("div",Fc,z(d.badge.text),1),d.badge.tooltip?(m(),N("div",Uc,z(d.badge.tooltip),1)):O("",!0)])]),_:1},8,["pt"])],4)):d.displayMode==="compact"?(m(),N("div",{key:1,class:"relative inline-flex h-full",style:ve(l.value)},[f("div",{class:Q(["flex h-full shrink-0 items-center gap-2 whitespace-nowrap",[{"flex-row-reverse":d.reverseOrder},d.noPadding?"":"px-3",Os]]),onClick:s},[p.value?(m(),N("i",{key:0,class:Q(["shrink-0 text-base",p.value,u.value])},null,2)):O("",!0),d.badge.label?(m(),N("div",{key:1,class:Q(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},z(d.badge.label),3)):O("",!0)],2),W(C(Ze),{ref_key:"popover",ref:t,"append-to":"body","auto-z-index":!0,"base-z-index":1e3,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:h.value},{default:L(()=>[f("div",Gc,[d.badge.label?(m(),N("div",{key:0,class:Q(["w-fit rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},z(d.badge.label),3)):O("",!0),f("div",jc,z(d.badge.text),1),d.badge.tooltip?(m(),N("div",Hc,z(d.badge.tooltip),1)):O("",!0)])]),_:1},8,["pt"])],4)):ue((m(),N("div",{key:2,class:Q(["flex h-full shrink-0 items-center gap-2 whitespace-nowrap",[{"flex-row-reverse":d.reverseOrder},d.noPadding?"":"px-3"]]),style:ve(l.value)},[p.value?(m(),N("i",{key:0,class:Q(["shrink-0 text-base",p.value,u.value])},null,2)):O("",!0),d.badge.label?(m(),N("div",{key:1,class:Q(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},z(d.badge.label),3)):O("",!0),f("div",{class:Q(["font-inter text-sm",r.value])},z(d.badge.text),3)],6)),[[y,d.badge.tooltip]])}}}),Kc=3e3,Jc=300*1e3,Yc=H({__name:"SubscribeButton",props:{label:{},size:{default:"lg"},variant:{default:"default"},fluid:{type:Boolean,default:!0}},emits:["subscribed"],setup(e,{emit:o}){const t=o,{subscribe:s,isActiveSubscription:a,fetchStatus:l,showSubscriptionDialog:i}=Kn(),r=gi(),u=E(!1),p=E(!1);let v=null;const h=E(!1),d=n(()=>{p.value=!0,u.value=!0;const g=Date.now(),c=n(async()=>{try{if(Date.now()-g>Jc){b();return}await l(),a.value&&(b(),r?.trackMonthlySubscriptionSucceeded(),t("subscribed"))}catch(w){console.error("[SubscribeButton] Error polling subscription status:",w)}},"poll");c(),v=window.setInterval(c,Kc)},"startPollingSubscriptionStatus"),b=n(()=>{v&&(clearInterval(v),v=null),p.value=!1,u.value=!1},"stopPolling");se([h,a],([g,c])=>{});const y=n(async()=>{u.value=!0;try{await s(),d()}catch(g){console.error("[SubscribeButton] Error initiating subscription:",g),u.value=!1}},"handleSubscribe");return gt(()=>{b(),h.value=!1}),(g,c)=>(m(),F(ee,{size:g.size,loading:u.value,disabled:p.value,variant:"primary",style:ve(g.variant==="gradient"?{background:"var(--color-subscription-button-gradient)",color:"var(--color-white)"}:void 0),class:Q(C(pe)("font-bold",g.fluid&&"w-full")),onClick:y},{default:L(()=>[_e(z(g.label||g.$t("subscription.required.subscribe")),1)]),_:1},8,["size","loading","disabled","style","class"]))}}),Rs="subscription-required",Qc=n(()=>{const e=et(),o=ht();function t(){o.closeDialog({key:Rs})}n(t,"hide");function s(){e.showLayoutDialog({key:Rs,component:da(()=>Gn(()=>import("./SubscriptionRequiredDialogContent-BdL9OjAj.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]),import.meta.url)),props:{onClose:t},dialogComponentProps:{style:"width: min(1328px, 95vw); max-height: 90vh;",pt:{root:{class:"rounded-2xl bg-transparent"},content:{class:"!p-0 rounded-2xl border border-border-default bg-base-background/60 backdrop-blur-md shadow-[0_25px_80px_rgba(5,6,12,0.45)]"}}}})}return n(s,"show"),{show:s,hide:t}},"useSubscriptionDialog"),Xc=H({__name:"GlobalToast",setup(e){const o=Rt(),t=Nt(),s=ie();se(()=>t.messagesToAdd,i=>{i.length!==0&&(i.forEach(r=>{o.add(r)}),t.messagesToAdd=[])},{deep:!0}),se(()=>t.messagesToRemove,i=>{i.length!==0&&(i.forEach(r=>{o.remove(r)}),t.messagesToRemove=[])},{deep:!0}),se(()=>t.removeAllRequested,i=>{i&&(o.removeAllGroups(),t.removeAllRequested=!1)});function a(){const i=document.getElementById("dynamic-toast-style")||l(),r=document.querySelector(".graph-canvas-container")?.getBoundingClientRect();r&&(i.textContent=`
3
3
  .p-toast.p-component.p-toast-top-right {
4
4
  top: ${r.top+100}px !important;
5
5
  right: ${window.innerWidth-(r.left+r.width)+20}px !important;
6
6
  z-index: 10000 !important;
7
7
  }
8
- `)}n(a,"updateToastPosition");function l(){const i=document.createElement("style");return i.id="dynamic-toast-style",document.head.appendChild(i),i}return n(l,"createStyleElement"),se(()=>s.get("Comfy.UseNewMenu"),()=>Oe(a),{immediate:!0}),se(()=>s.get("Comfy.Sidebar.Location"),()=>Oe(a),{immediate:!0}),(i,r)=>(m(),F(C(Ta)))}});let mn,il;(function(){const e=globalThis;typeof e.requestIdleCallback!="function"||typeof e.cancelIdleCallback!="function"?mn=n((o,t,s)=>{setTimeout(()=>{if(a)return;const l=Date.now()+15;t(Object.freeze({didTimeout:!0,timeRemaining(){return Math.max(0,l-Date.now())}}))});let a=!1;return{dispose(){a||(a=!0)}}},"_runWhenIdle"):mn=n((o,t,s)=>{const a=o.requestIdleCallback(t,typeof s=="number"?{timeout:s}:void 0);let l=!1;return{dispose(){l||(l=!0,o.cancelIdleCallback(a))}}},"_runWhenIdle"),il=n((o,t)=>mn(globalThis,o,t),"runWhenGlobalIdle")})();const Zc={class:"fixed z-9999 flex flex-row no-drag top-0 right-0"},ed=H({__name:"MenuHamburger",setup(e){const o=tt(),t=ie(),s=n(()=>{o.focusMode=!1},"exitFocusMode");return he(()=>{t.get("Comfy.UseNewMenu")==="Disabled"&&(o.focusMode?J.ui.menuContainer.style.display="none":J.ui.menuContainer.style.display="block")}),(a,l)=>{const i=Se("tooltip");return ue((m(),N("div",Zc,[ue((m(),F(ee,{variant:"muted-textonly",size:"lg","aria-label":a.$t("menu.showMenu"),"aria-live":"assertive",onClick:s,onContextmenu:C(hi)},{default:L(()=>l[0]||(l[0]=[f("i",{class:"pi pi-bars"},null,-1)])),_:1},8,["aria-label","onContextmenu"])),[[i,{value:a.$t("menu.showMenu"),showDelay:300}]]),l[1]||(l[1]=f("div",{class:"window-actions-spacer"},null,-1))],512)),[[Ye,C(o).focusMode]])}}}),td=H({__name:"UnloadWindowConfirmDialog",setup(e){const o=ie(),t=Pe(),s=n(a=>{if(o.get("Comfy.Window.UnloadConfirmation")&&t.modifiedWorkflows.length>0)return a.preventDefault(),!0},"handleBeforeUnload");return Le(()=>{window.addEventListener("beforeunload",s)}),gt(()=>{window.removeEventListener("beforeunload",s)}),(a,l)=>(m(),N("div"))}}),od={class:"w-full h-full absolute top-0 left-0 z-999 pointer-events-none flex flex-col"},nd={class:"side-toolbar-container"},sd=H({__name:"LiteGraphCanvasSplitterOverlay",setup(e){const o=tt(),t=ie(),s=to(),a=Uo(),{t:l}=de(),i=k(()=>t.get("Comfy.Sidebar.Location")),r=k(()=>t.get("Comfy.Sidebar.UnifiedWidth")),{focusMode:u}=Fe(o),{activeSidebarTabId:p,activeSidebarTab:v}=Fe(a),{bottomPanelVisible:h}=Fe(oo()),{isOpen:d}=Fe(s),b=k(()=>v.value!==null),y=k(()=>r.value?"unified-sidebar":p.value??"default-sidebar");function g({originalEvent:S}){S.preventDefault()}n(g,"onResizestart");const c=k(()=>`main-splitter${d.value?"-with-right-panel":""}-${i.value}`),w=k(()=>{if(i.value==="left")return{display:b.value?"flex":"none"}}),_=k(()=>{if(i.value==="right")return{display:b.value?"flex":"none"}});return(S,x)=>(m(),N("div",od,[Ne(S.$slots,"workflow-tabs",{},void 0,!0),f("div",{class:Q(["pointer-events-none flex flex-1 overflow-hidden",{"flex-row":i.value==="left","flex-row-reverse":i.value==="right"}])},[f("div",nd,[Ne(S.$slots,"side-toolbar",{},void 0,!0)]),(m(),F(C(Nn),{key:c.value,class:"bg-transparent pointer-events-none border-none flex-1 overflow-hidden","state-key":y.value,"state-storage":"local",onResizestart:g},{default:L(()=>[!C(u)&&(i.value==="left"||C(d))?(m(),F(C(_t),{key:0,class:Q(i.value==="left"?C(pe)("side-bar-panel bg-comfy-menu-bg pointer-events-auto",b.value&&"min-w-78"):"bg-comfy-menu-bg pointer-events-auto"),"min-size":i.value==="left"?10:15,size:20,style:ve(w.value),role:i.value==="left"?"complementary":void 0,"aria-label":i.value==="left"?C(l)("sideToolbar.sidebar"):void 0},{default:L(()=>[i.value==="left"&&b.value?Ne(S.$slots,"side-bar-panel",{key:0},void 0,!0):i.value==="right"?Ne(S.$slots,"right-side-panel",{key:1},void 0,!0):O("",!0)]),_:3},8,["class","min-size","style","role","aria-label"])):O("",!0),W(C(_t),{size:80,class:"flex flex-col"},{default:L(()=>[Ne(S.$slots,"topmenu",{sidebarPanelVisible:b.value},void 0,!0),W(C(Nn),{class:"bg-transparent pointer-events-none border-none splitter-overlay-bottom mr-1 mb-1 ml-1 flex-1",layout:"vertical","pt:gutter":C(pe)("rounded-tl-lg rounded-tr-lg ",!(C(h)&&!C(u))&&"hidden"),"state-key":"bottom-panel-splitter","state-storage":"local",onResizestart:g},{default:L(()=>[W(C(_t),{class:"graph-canvas-panel relative"},{default:L(()=>[Ne(S.$slots,"graph-canvas-panel",{},void 0,!0)]),_:3}),ue(W(C(_t),{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:L(()=>[Ne(S.$slots,"bottom-panel",{},void 0,!0)]),_:3},512),[[Ye,C(h)&&!C(u)]])]),_:3},8,["pt:gutter"])]),_:3}),!C(u)&&(i.value==="right"||C(d))?(m(),F(C(_t),{key:1,class:Q(i.value==="right"?C(pe)("side-bar-panel bg-comfy-menu-bg pointer-events-auto",b.value&&"min-w-78"):"bg-comfy-menu-bg pointer-events-auto"),"min-size":i.value==="right"?10:15,size:20,style:ve(_.value),role:i.value==="right"?"complementary":void 0,"aria-label":i.value==="right"?C(l)("sideToolbar.sidebar"):void 0},{default:L(()=>[i.value==="left"?Ne(S.$slots,"right-side-panel",{key:0},void 0,!0):i.value==="right"&&b.value?Ne(S.$slots,"side-bar-panel",{key:1},void 0,!0):O("",!0)]),_:3},8,["class","min-size","style","role","aria-label"])):O("",!0)]),_:3},8,["state-key"]))],2)]))}}),ad=De(sd,[["__scopeId","data-v-78b7f6de"]]),Xe=n(e=>({value:e,showDelay:300,hideDelay:0,pt:{text:{class:"border-node-component-tooltip-border bg-node-component-tooltip-surface text-node-component-tooltip border rounded-md px-2 py-1 text-xs leading-none shadow-none"},arrow:{class:"border-t-node-component-tooltip-border"}}}),"buildTooltipConfig"),ld=da(()=>Gn(()=>import("./ComfyQueueButton-BDRXGOWF.js"),__vite__mapDeps([22,5,3,4,2,1,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23]),import.meta.url)),id={class:"flex h-full items-center"},rd=H({__name:"ComfyActionbar",setup(e){const o=ie(),t=Ce(),{t:s}=de(),{isIdle:a}=Fe(Qe()),l=k(()=>o.get("Comfy.UseNewMenu")),i=k(()=>l.value!=="Disabled"),r=document.querySelector(".workflow-tabs-container"),u=E(null),p=E(null),v=bs("Comfy.MenuPosition.Docked",!0),h=bs("Comfy.MenuPosition.Floating",{x:0,y:0}),{x:d,y:b,style:y,isDragging:g}=Ll(u,{initialValue:{x:0,y:0},handle:p,containerElement:document.body,onMove:n(M=>{const V=r?.getBoundingClientRect().bottom??40;M.y<V&&(M.y=V)},"onMove")});qt([d,b],([M,V])=>{h.value={x:M,y:V}},{debounce:300});const c=n(()=>{if(u.value){const M=window.innerWidth,V=window.innerHeight,U=u.value.offsetWidth,R=u.value.offsetHeight;if(U===0||R===0)return;if(h.value.x!==0||h.value.y!==0){d.value=Gt(h.value.x,0,M-U),b.value=Gt(h.value.y,0,V-R),S();return}d.value===0&&b.value===0&&(d.value=Gt((M-U)/2,0,M-U),b.value=Gt(V-R-10,0,V-R),S())}},"setInitialPosition");async function w(){await Oe(),c()}n(w,"comfyRunButtonResolved"),se(i,async M=>{M&&await Oe(c)}),Ae(p,"mousedown",()=>{});const _=E({x:d.value,y:b.value,windowWidth:window.innerWidth,windowHeight:window.innerHeight}),S=n(()=>{_.value={x:d.value,y:b.value,windowWidth:window.innerWidth,windowHeight:window.innerHeight}},"captureLastDragState");se(g,M=>{M||S()},{immediate:!0}),Ae(window,"resize",n(()=>{if(u.value){const M=window.innerWidth,V=window.innerHeight,U=u.value.offsetWidth,R=u.value.offsetHeight,j=_.value.x,q=_.value.windowWidth-(_.value.x+U),K=_.value.y,ne=_.value.windowHeight-(_.value.y+R),X=[{edge:"left",distance:j},{edge:"right",distance:q},{edge:"top",distance:K},{edge:"bottom",distance:ne}].reduce((xe,Ue)=>Ue.distance<xe.distance?Ue:xe),oe=_.value.y/_.value.windowHeight,ae=_.value.x/_.value.windowWidth;X.edge==="left"?(d.value=X.distance,b.value=oe*V):X.edge==="right"?(d.value=M-U-X.distance,b.value=oe*V):X.edge==="top"?(d.value=ae*M,b.value=X.distance):(d.value=ae*M,b.value=V-R-X.distance),d.value=Gt(d.value,0,M-U),b.value=Gt(b.value,0,V-R)}},"adjustMenuPosition"));const D=E(!1),P=n(()=>{g.value&&(D.value=!0)},"onMouseEnterDropZone"),T=n(()=>{g.value&&(D.value=!1)},"onMouseLeaveDropZone");se(g,M=>{M?v.value&&(v.value=!1):(D.value&&(v.value=!0),D.value=!1)});const $=k(()=>Xe(s("menu.interrupt"))),I=n(async()=>{a.value||await t.execute("Comfy.Interrupt")},"cancelCurrentJob"),B=k(()=>pe("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",D.value&&"border-[3px] opacity-100 scale-105 shadow-[0_0_20px] shadow-blue-500")),G=k(()=>pe("actionbar pointer-events-auto z-1300",g.value&&"select-none pointer-events-none",v.value?"p-0 static border-none bg-transparent":"fixed shadow-interface"));return(M,V)=>{const U=Se("tooltip");return m(),N("div",id,[C(g)&&!C(v)?(m(),N("div",{key:0,class:Q(B.value),onMouseenter:P,onMouseleave:T},z(C(s)("actionbar.dockToTop")),35)):O("",!0),W(C(Na),{class:Q(["pointer-events-auto",G.value]),style:ve(C(y)),pt:{header:{class:"hidden"},content:{class:C(v)?"p-0":"p-1"}}},{default:L(()=>[f("div",{ref_key:"panelRef",ref:u,class:"flex items-center select-none gap-2"},[f("span",{ref_key:"dragHandleRef",ref:p,class:Q(C(pe)("drag-handle cursor-grab w-3 h-max",C(g)&&"cursor-grabbing"))},null,2),(m(),F(Vl,{onResolve:w},{default:L(()=>[W(C(ld))]),_:1})),ue((m(),F(ee,{variant:"destructive",size:"icon",disabled:C(a),"aria-label":C(s)("menu.interrupt"),onClick:I},{default:L(()=>V[0]||(V[0]=[f("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["disabled","aria-label"])),[[U,$.value,void 0,{bottom:!0}]])],512)]),_:1},8,["style","class","pt"])])}}}),ud=n((e,o)=>{const t=e?.type;return t?!o[t]:!1},"isNodeMissingDefinition"),cd=n((e,o)=>{if(!e)return[];const t=C(o);return yi(e,s=>ud(s,t))},"collectMissingNodes"),dd=n((e,o)=>cd(e,o).length>0,"graphHasMissingNodes"),pd={key:0,class:"icon-[lucide--triangle-alert] text-warning-background"},fd={class:"p-breadcrumb-item-label px-2"},md={key:2,class:"pi pi-angle-down text-[10px]"},vd=H({__name:"SubgraphBreadcrumbItem",props:{item:{},isActive:{type:Boolean,default:!1}},setup(e){const o=e,t=yt(),s=k(()=>dd(J.rootGraph,t.nodeDefsByName)),{t:a}=de(),l=E(),i=et(),r=Pe(),u=ot(),p=E(!1),v=E(),h=E(),d=E(),b=n(async(x,D)=>{if(x&&x!==D){if(o.item.updateTitle?.(x),r.activeSubgraph)r.activeSubgraph.name=x;else if(r.activeWorkflow)try{await u.renameWorkflow(r.activeWorkflow,Ea.basePath+La(x))}catch(T){console.error(T),i.showErrorDialog(T);return}const P=Jn();P.restoreState(P.exportState())}},"rename"),y=o.item.key==="root",g=k(()=>s.value&&y?a("breadcrumbsMenu.missingNodesWarning"):o.item.label),c=k(()=>[{label:a("g.rename"),icon:"pi pi-pencil",command:_},{label:a("breadcrumbsMenu.duplicate"),icon:"pi pi-copy",command:n(async()=>{await u.duplicateWorkflow(r.activeWorkflow)},"command"),visible:y&&!o.item.isBlueprint},{separator:!0,visible:y},{label:a("menuLabels.Save"),icon:"pi pi-save",command:n(async()=>{await Ce().execute("Comfy.SaveWorkflow")},"command"),visible:y},{label:a("menuLabels.Save As"),icon:"pi pi-save",command:n(async()=>{await Ce().execute("Comfy.SaveWorkflowAs")},"command"),visible:y},{separator:!0},{label:a("breadcrumbsMenu.clearWorkflow"),icon:"pi pi-trash",command:n(async()=>{await Ce().execute("Comfy.ClearWorkflow")},"command")},{separator:!0,visible:o.item.key==="root"&&o.item.isBlueprint},{label:a("subgraphStore.publish"),icon:"pi pi-copy",command:n(async()=>{await u.saveWorkflowAs(r.activeWorkflow)},"command"),visible:o.item.key==="root"&&o.item.isBlueprint},{separator:!0,visible:y},{label:o.item.isBlueprint?a("breadcrumbsMenu.deleteBlueprint"):a("breadcrumbsMenu.deleteWorkflow"),icon:"pi pi-times",command:n(async()=>{await u.deleteWorkflow(r.activeWorkflow)},"command"),visible:y}]),w=n(x=>{p.value||(x.detail===1?o.isActive?l.value?.toggle(x):o.item.command?.({item:o.item,originalEvent:x}):o.isActive&&x.detail===2&&(l.value?.hide(),x.stopPropagation(),x.preventDefault(),_()))},"handleClick"),_=n(()=>{p.value=!0,v.value=o.item.label,Oe(()=>{h.value?.$el&&(h.value.$el.focus(),h.value.$el.select(),d.value&&(h.value.$el.style.width=`${Math.max(200,d.value.offsetWidth)}px`))})},"startRename"),S=n(async x=>{x&&await b(v.value,o.item.label),p.value=!1},"inputBlur");return(x,D)=>{const P=Se("tooltip");return m(),N(le,null,[ue((m(),N("a",{ref_key:"wrapperRef",ref:d,draggable:"false",href:"#",class:Q(["p-breadcrumb-item-link h-12 cursor-pointer px-2",{"flex items-center gap-1":x.isActive,"p-breadcrumb-item-link-menu-visible":l.value?.overlayVisible,"p-breadcrumb-item-link-icon-visible":x.isActive,"active-breadcrumb-item":x.isActive}]),onClick:w},[s.value&&y?(m(),N("i",pd)):O("",!0),f("span",fd,z(x.item.label),1),x.item.isBlueprint?(m(),F(C(Kt),{key:1,value:"Blueprint",severity:"primary"})):O("",!0),x.isActive?(m(),N("i",md)):O("",!0)],2)),[[P,{value:g.value,showDelay:512},void 0,{bottom:!0}]]),x.isActive?(m(),F(C($a),{key:0,ref_key:"menu",ref:l,model:c.value,popup:!0,pt:{root:{style:"background-color: var(--comfy-menu-bg)"},itemLink:{class:"py-2"}}},null,8,["model"])):O("",!0),p.value?(m(),F(C(oi),{key:1,ref_key:"itemInputRef",ref:h,modelValue:v.value,"onUpdate:modelValue":D[0]||(D[0]=T=>v.value=T),class:"fixed z-10000 px-2 py-2 text-[.8rem]",onBlur:D[1]||(D[1]=T=>S(!1)),onClick:D[2]||(D[2]=ke(()=>{},["stop"])),onKeydown:[D[3]||(D[3]=Yt(T=>S(!0),["enter"])),D[4]||(D[4]=Yt(T=>S(!1),["esc"]))]},null,8,["modelValue"])):O("",!0)],64)}}}),gd=De(vd,[["__scopeId","data-v-09d35179"]]),rl=n((e,o)=>{o={debounceTime:25,useMutationObserver:!0,useResizeObserver:!0,...o};const t=E(!1),s=[],a=E(!1),l=n(()=>{t.value=e.scrollWidth>e.clientWidth,o.onCheck?.(t.value)},"checkOverflowFn"),i=o.debounceTime?Xo(l,o.debounceTime):l;return o.useMutationObserver&&s.push(Ol(e,i,{subtree:!0,childList:!0}).stop),o.useResizeObserver&&s.push(pa(e,i).stop),{isOverflowing:Tn(t),disposed:Tn(a),checkOverflow:i,dispose:n(()=>{a.value=!0,s.forEach(r=>r())},"dispose")}},"useOverflowObserver"),Ws=28,zs=8,vn=8,Bs=20,hd=H({__name:"SubgraphBreadcrumb",setup(e){const o=Pe(),t=Jn(),s=E(),a=k(()=>o.activeWorkflow?.filename),l=k(()=>Va().isSubgraphBlueprint(o.activeWorkflow)),i=E(!1),r=E(!1),u=k(()=>s.value?s.value.$el?.querySelector(".p-breadcrumb-list"):null),p=k(()=>{const d=t.navigationStack.map(b=>({label:b.name,command:n(()=>{const y=fe().getCanvas();if(!y.graph)throw new TypeError("Canvas has no graph");y.setGraph(b)},"command"),updateTitle:n(y=>{const g=fe().getCanvas().graph?.rootGraph;g&&bi(g,b.id,c=>{c.title=y})},"updateTitle")}));return[v.value,...d]}),v=k(()=>({label:a.value,icon:"pi pi-home",key:"root",isBlueprint:l.value,command:n(()=>{const d=fe().getCanvas();if(!d.graph)throw new TypeError("Canvas has no graph");d.setGraph(d.graph.rootGraph)},"command")}));let h;return se(u,d=>{h?.dispose(),h=void 0,d&&(h=rl(d,{onCheck:n(b=>{if(r.value=b,i.value){if(!b){const y=[...d.querySelectorAll(".p-breadcrumb-item")];if(y.length<3)return;const g=y.filter($=>$.querySelector(".p-breadcrumb-item-link-icon-visible")).length,c=d.querySelectorAll(".p-breadcrumb-separator"),_=c[c.length-1].offsetWidth,S=(Ws+vn+vn)*y.length+g*Bs,x=(y.length-1)*_,D=(y.length-1)*(zs*2),P=S+x+D,T=d.clientWidth;P<=T&&(i.value=!1)}}else b&&(i.value=!0)},"onCheck")}))}),fa(()=>{h?.disposed.value||h?.checkOverflow()}),(d,b)=>(m(),N("div",{class:Q(["subgraph-breadcrumb w-auto drop-shadow-[var(--interface-panel-drop-shadow)]",{"subgraph-breadcrumb-collapse":i.value,"subgraph-breadcrumb-overflow":r.value}]),style:ve({"--p-breadcrumb-gap":"0px","--p-breadcrumb-item-margin":`${zs/2}px`,"--p-breadcrumb-item-min-width":`${Ws}px`,"--p-breadcrumb-item-padding":`${vn}px`,"--p-breadcrumb-icon-width":`${Bs}px`})},[W(C(ni),{ref_key:"breadcrumbRef",ref:s,class:"w-fit rounded-lg p-0",model:p.value,pt:{item:{class:"pointer-events-auto"}},"aria-label":d.$t("g.graphNavigation")},{item:L(({item:y})=>[W(gd,{item:y,"is-active":y===p.value.at(-1)},null,8,["item","is-active"])]),separator:L(()=>b[0]||(b[0]=[f("span",{style:{transform:"scale(1.5)"}}," / ",-1)])),_:1},8,["model","aria-label"])],6))}}),yd=De(hd,[["__scopeId","data-v-0e6867de"]]),bd={class:"flex flex-col gap-3 p-2"},wd={class:"flex flex-col gap-1"},kd={class:"relative h-2 w-full overflow-hidden rounded-full border border-interface-stroke bg-interface-panel-surface"},Cd={class:"flex items-start justify-end gap-4 text-[12px] leading-none"},Sd={class:"flex items-center gap-1 text-text-primary opacity-90"},xd={class:"font-bold"},_d={class:"flex items-center gap-1 text-text-secondary"},Td={class:"inline-block max-w-[10rem] truncate"},Nd={class:"flex items-center gap-1"},$d={class:"flex items-center gap-4 text-[12px] text-text-primary"},Id={class:"flex items-center gap-2"},Md={class:"opacity-90"},Pd={class:"font-bold"},Dd={class:"ml-1"},Ad={class:"flex items-center gap-2"},Ed={class:"opacity-90"},Ld={class:"font-bold"},Vd={class:"ml-1"},Od=H({__name:"QueueOverlayActive",props:{totalProgressStyle:{},currentNodeProgressStyle:{},totalPercentFormatted:{},currentNodePercentFormatted:{},currentNodeName:{},runningCount:{},queuedCount:{},bottomRowClass:{}},emits:["interruptAll","clearQueued","viewAllJobs"],setup(e){const{t:o}=de(),t=k(()=>Xe(o("sideToolbar.queueProgressOverlay.cancelJobTooltip"))),s=k(()=>Xe(o("sideToolbar.queueProgressOverlay.clearQueueTooltip")));return(a,l)=>{const i=ma("i18n-t"),r=Se("tooltip");return m(),N("div",bd,[f("div",wd,[f("div",kd,[f("div",{class:"absolute inset-0 h-full rounded-full transition-[width]",style:ve(a.totalProgressStyle)},null,4),f("div",{class:"absolute inset-0 h-full rounded-full transition-[width]",style:ve(a.currentNodeProgressStyle)},null,4)]),f("div",Cd,[f("div",Sd,[W(i,{keypath:"sideToolbar.queueProgressOverlay.total"},{percent:L(()=>[f("span",xd,z(a.totalPercentFormatted),1)]),_:1})]),f("div",_d,[f("span",null,z(C(o)("sideToolbar.queueProgressOverlay.currentNode")),1),f("span",Td,z(a.currentNodeName),1),f("span",Nd,[f("span",null,z(a.currentNodePercentFormatted),1)])])])]),f("div",{class:Q(a.bottomRowClass)},[f("div",$d,[f("div",Id,[f("span",Md,[f("span",Pd,z(a.runningCount),1),f("span",Dd,z(C(o)("sideToolbar.queueProgressOverlay.running")),1)]),a.runningCount>0?ue((m(),F(ee,{key:0,variant:"destructive",size:"icon","aria-label":C(o)("sideToolbar.queueProgressOverlay.interruptAll"),onClick:l[0]||(l[0]=u=>a.$emit("interruptAll"))},{default:L(()=>l[3]||(l[3]=[f("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}]]):O("",!0)]),f("div",Ad,[f("span",Ed,[f("span",Ld,z(a.queuedCount),1),f("span",Vd,z(C(o)("sideToolbar.queueProgressOverlay.queuedSuffix")),1)]),a.queuedCount>0?ue((m(),F(ee,{key:0,variant:"destructive",size:"icon","aria-label":C(o)("sideToolbar.queueProgressOverlay.clearQueued"),onClick:l[1]||(l[1]=u=>a.$emit("clearQueued"))},{default:L(()=>l[4]||(l[4]=[f("i",{class:"icon-[lucide--list-x] block size-4 leading-none text-text-primary"},null,-1)])),_:1},8,["aria-label"])),[[r,s.value,void 0,{top:!0}]]):O("",!0)])]),W(ee,{class:"min-w-30 flex-1 px-2 py-0",variant:"secondary",size:"md",onClick:l[2]||(l[2]=u=>a.$emit("viewAllJobs"))},{default:L(()=>[_e(z(C(o)("sideToolbar.queueProgressOverlay.viewAllJobs")),1)]),_:1})],2)])}}}),Rd={class:"inline-flex items-center gap-2"},Wd={key:0,class:"inline-flex items-center"},zd={class:"inline-flex items-center gap-2"},Bd={key:0,class:"relative inline-flex h-6 items-center"},Fd=["src","alt"],Ud={class:"text-[14px] font-normal text-text-primary"},Gd={class:"font-bold"},jd={class:"font-bold"},Hd={class:"font-bold"},qd={class:"font-bold"},Kd=H({__name:"CompletionSummaryBanner",props:{mode:{},completedCount:{},failedCount:{},thumbnailUrls:{default:n(()=>[],"default")},ariaLabel:{}},emits:["click"],setup(e,{emit:o}){const t=e,s=o;return(a,l)=>{const i=ma("i18n-t");return m(),F(ee,{variant:"secondary",size:"lg",class:"group w-full justify-between gap-3 p-1 text-left font-normal hover:cursor-pointer focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-background","aria-label":t.ariaLabel,onClick:l[0]||(l[0]=r=>s("click",r))},{default:L(()=>[f("span",Rd,[t.mode==="allFailed"?(m(),N("span",Wd,l[1]||(l[1]=[f("i",{class:"ml-1 icon-[lucide--circle-alert] block size-4 leading-none text-destructive-background"},null,-1)]))):O("",!0),f("span",zd,[t.mode!=="allFailed"?(m(),N("span",Bd,[(m(!0),N(le,null,be(t.thumbnailUrls,(r,u)=>(m(),N("span",{key:r+u,class:"inline-block h-6 w-6 overflow-hidden rounded-[6px] border-0 bg-secondary-background",style:ve({marginLeft:u===0?"0":"-12px"})},[f("img",{src:r,alt:a.$t("sideToolbar.queueProgressOverlay.preview"),class:"h-full w-full object-cover"},null,8,Fd)],4))),128))])):O("",!0),f("span",Ud,[t.mode==="allSuccess"?(m(),F(i,{key:0,keypath:"sideToolbar.queueProgressOverlay.jobsCompleted",plural:t.completedCount},{count:L(()=>[f("span",Gd,z(t.completedCount),1)]),_:1},8,["plural"])):t.mode==="mixed"?(m(),N(le,{key:1},[W(i,{keypath:"sideToolbar.queueProgressOverlay.jobsCompleted",plural:t.completedCount},{count:L(()=>[f("span",jd,z(t.completedCount),1)]),_:1},8,["plural"]),l[2]||(l[2]=f("span",null,", ",-1)),W(i,{keypath:"sideToolbar.queueProgressOverlay.jobsFailed",plural:t.failedCount},{count:L(()=>[f("span",Hd,z(t.failedCount),1)]),_:1},8,["plural"])],64)):(m(),F(i,{key:2,keypath:"sideToolbar.queueProgressOverlay.jobsFailed",plural:t.failedCount},{count:L(()=>[f("span",qd,z(t.failedCount),1)]),_:1},8,["plural"]))])])]),l[3]||(l[3]=f("span",{class:"flex items-center justify-center rounded p-1 text-text-secondary transition-colors duration-200 ease-in-out"},[f("i",{class:"icon-[lucide--chevron-down] block size-4 leading-none"})],-1))]),_:1},8,["aria-label"])}}}),Jd={class:"pointer-events-auto"},Yd=H({__name:"QueueOverlayEmpty",props:{summary:{}},emits:["summaryClick"],setup(e){const{t:o}=de();return(t,s)=>(m(),N("div",Jd,[W(Kd,{mode:t.summary.mode,"completed-count":t.summary.completedCount,"failed-count":t.summary.failedCount,"thumbnail-urls":t.summary.thumbnailUrls,"aria-label":C(o)("sideToolbar.queueProgressOverlay.expandCollapsedQueue"),onClick:s[0]||(s[0]=a=>t.$emit("summaryClick"))},null,8,["mode","completed-count","failed-count","thumbnail-urls","aria-label"])]))}});function Qd(e,o){const t=Pe(),s=ot(),a=St(),{copyToClipboard:l}=Oa(),i=no(),r=yt(),u=wi(),p=n(async()=>{const $=e();if(!$)return;const I=$.taskRef?.workflow;if(!I)return;const B=`Job ${$.id}.json`,G=t.createTemporary(B,I);await s.openWorkflow(G)},"openJobWorkflow"),v=n(async()=>{const $=e();$&&await l($.id)},"copyJobId"),h=n(async()=>{const $=e();$&&($.state==="running"||$.state==="initialization"?await we.interrupt($.id):$.state==="pending"&&await we.deleteItem("queue",$.id),await a.update())},"cancelJob"),d=n(async()=>{const $=e();if(!$)return;const G=$.taskRef?.status?.messages?.find(M=>M?.[0]==="execution_error")?.[1]?.exception_message;G&&await l(String(G))},"copyErrorMessage"),b=n(()=>{const $=e();if(!$)return;const B=$.taskRef?.status?.messages?.find(G=>G?.[0]==="execution_error")?.[1];B&&et().showExecutionErrorDialog(B)},"reportError"),y=n(async()=>{const $=e();if(!$)return;const I=$.taskRef?.previewOutput;if(!I)return;let B=null,G=null;if(I.isImage?(B="LoadImage",G="image"):I.isVideo?(B="LoadVideo",G="file"):I.isAudio&&(B="LoadAudio",G="audio"),!B||!G)return;const M=r.nodeDefsByName[B];if(!M)return;const V=i.addNodeOnGraph(M,{pos:i.getCanvasCenter()});if(!V)return;const U=n(K=>K==="input"||K==="output"||K==="temp","isResultItemType"),R={filename:I.filename,subfolder:I.subfolder,type:U(I.type)?I.type:void 0},j=ki(R,{rootFolder:R.type}),q=V.widgets?.find(K=>K.name===G);q&&(q.value=j,q.callback?.(j)),V.graph?.setDirtyCanvas(!0,!0)},"addOutputLoaderNode"),g=n(()=>{const $=e();if(!$)return;const I=$.taskRef?.previewOutput;I&&tn(I.url)},"downloadPreviewAsset"),c=n(async()=>{const $=e();if(!$)return;const I=$.taskRef?.workflow;if(!I)return;const B=ie();let G=`Job ${$.id}.json`;if(B.get("Comfy.PromptFilename")){const U=await et().prompt({title:re("workflowService.exportWorkflow"),message:re("workflowService.enterFilename")+":",defaultValue:G});if(!U)return;G=La(U)}const M=JSON.stringify(I,null,2),V=new Blob([M],{type:"application/json"});Ci(G,V)},"exportJobWorkflow"),w=n(async()=>{const $=e();if(!$)return;const I=$.taskRef,B=I?.previewOutput;if(!I||!B)return;const G=Si(I,B);await u.confirmDelete(G)&&await a.update()},"deleteJobAsset"),_=n(async()=>{const $=e()?.taskRef;$&&await a.delete($)},"removeFailedJob"),S=k(()=>ye("queue.jobMenu.openAsWorkflowNewTab","Open as workflow in new tab")),x=k(()=>ye("queue.jobMenu.openWorkflowNewTab","Open workflow in new tab")),D=k(()=>ye("queue.jobMenu.copyJobId","Copy job ID")),P=k(()=>ye("queue.jobMenu.cancelJob","Cancel job"));return{jobMenuEntries:k(()=>{const $=e(),I=$?.state;if(!I)return[];const B=!!$?.taskRef?.previewOutput;return I==="completed"?[{key:"inspect-asset",label:ye("queue.jobMenu.inspectAsset","Inspect asset"),icon:"icon-[lucide--zoom-in]",onClick:o?()=>{const G=e();G&&o(G)}:void 0},{key:"add-to-current",label:ye("queue.jobMenu.addToCurrentWorkflow","Add to current workflow"),icon:"icon-[comfy--node]",onClick:y},{key:"download",label:ye("queue.jobMenu.download","Download"),icon:"icon-[lucide--download]",onClick:g},{kind:"divider",key:"d1"},{key:"open-workflow",label:S.value,icon:"icon-[comfy--workflow]",onClick:p},{key:"export-workflow",label:ye("queue.jobMenu.exportWorkflow","Export workflow"),icon:"icon-[comfy--file-output]",onClick:c},{kind:"divider",key:"d2"},{key:"copy-id",label:D.value,icon:"icon-[lucide--copy]",onClick:v},{kind:"divider",key:"d3"},...B?[{key:"delete",label:ye("queue.jobMenu.deleteAsset","Delete asset"),icon:"icon-[lucide--trash-2]",onClick:w}]:[]]:I==="failed"?[{key:"open-workflow",label:x.value,icon:"icon-[comfy--workflow]",onClick:p},{kind:"divider",key:"d1"},{key:"copy-id",label:D.value,icon:"icon-[lucide--copy]",onClick:v},{key:"copy-error",label:ye("queue.jobMenu.copyErrorMessage","Copy error message"),icon:"icon-[lucide--copy]",onClick:d},{key:"report-error",label:ye("queue.jobMenu.reportError","Report error"),icon:"icon-[lucide--message-circle-warning]",onClick:b},{kind:"divider",key:"d2"},{key:"delete",label:ye("queue.jobMenu.removeJob","Remove job"),icon:"icon-[lucide--circle-minus]",onClick:_}]:[{key:"open-workflow",label:S.value,icon:"icon-[comfy--workflow]",onClick:p},{kind:"divider",key:"d1"},{key:"copy-id",label:D.value,icon:"icon-[lucide--copy]",onClick:v},{kind:"divider",key:"d2"},{key:"cancel-job",label:P.value,icon:"icon-[lucide--x]",onClick:h}]}),openJobWorkflow:p,copyJobId:v,cancelJob:h}}n(Qd,"useJobMenu");const Xd={class:"flex h-12 items-center justify-between gap-2 border-b border-interface-stroke px-2"},Zd={class:"px-2 text-[14px] font-normal text-text-primary"},ep={key:0,class:"ml-4 inline-flex items-center gap-1 text-blue-100"},tp={class:"font-bold"},op={class:"ml-1"},np={key:0,class:"flex items-center gap-1"},sp={class:"flex flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3 font-inter"},ap=H({__name:"QueueOverlayHeader",props:{headerTitle:{},showConcurrentIndicator:{type:Boolean},concurrentWorkflowCount:{}},emits:["clearHistory"],setup(e,{emit:o}){const t=o,{t:s}=de(),a=E(null),l=k(()=>Xe(s("g.more"))),i=n(u=>{a.value?.toggle(u)},"onMoreClick"),r=n(()=>{a.value?.hide(),t("clearHistory")},"onClearHistoryFromMenu");return(u,p)=>{const v=Se("tooltip");return m(),N("div",Xd,[f("div",Zd,[f("span",null,z(u.headerTitle),1),u.showConcurrentIndicator?(m(),N("span",ep,[p[0]||(p[0]=f("span",{class:"inline-block size-2 rounded-full bg-blue-100"},null,-1)),f("span",null,[f("span",tp,z(u.concurrentWorkflowCount),1),f("span",op,z(C(s)("sideToolbar.queueProgressOverlay.running")),1)])])):O("",!0)]),C(mt)?O("",!0):(m(),N("div",np,[ue((m(),F(ee,{variant:"textonly",size:"icon","aria-label":C(s)("sideToolbar.queueProgressOverlay.moreOptions"),onClick:i},{default:L(()=>p[1]||(p[1]=[f("i",{class:"icon-[lucide--more-horizontal] block size-4 leading-none text-text-secondary"},null,-1)])),_:1},8,["aria-label"])),[[v,l.value,void 0,{top:!0}]]),W(C(Ze),{ref_key:"morePopoverRef",ref:a,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:L(()=>[f("div",sp,[W(ee,{class:"w-full justify-start",variant:"textonly",size:"sm","aria-label":C(s)("sideToolbar.queueProgressOverlay.clearHistory"),onClick:r},{default:L(()=>[p[2]||(p[2]=f("i",{class:"icon-[lucide--file-x-2] size-4 text-muted"},null,-1)),f("span",null,z(C(s)("sideToolbar.queueProgressOverlay.clearHistory")),1)]),_:1},8,["aria-label"])])]),_:1},512)]))])}}}),lp={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"},ip={key:0,class:"px-2 py-1"},rp=H({__name:"JobContextMenu",props:{entries:{}},emits:["action"],setup(e,{expose:o,emit:t}){const s=t,a=E(null);function l(u){a.value&&a.value.toggle(u)}n(l,"open");function i(){a.value?.hide()}n(i,"hide");function r(u){s("action",u)}return n(r,"onEntry"),o({open:l,hide:i}),(u,p)=>(m(),F(C(Ze),{ref_key:"jobItemPopoverRef",ref:a,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:L(()=>[f("div",lp,[(m(!0),N(le,null,be(u.entries,v=>(m(),N(le,{key:v.key},[v.kind==="divider"?(m(),N("div",ip,p[0]||(p[0]=[f("div",{class:"h-px bg-interface-stroke"},null,-1)]))):(m(),F(ee,{key:1,class:"w-full justify-start bg-transparent",variant:"textonly",size:"sm","aria-label":v.label,onClick:n(h=>r(v),"onClick")},{default:L(()=>[v.icon?(m(),N("i",{key:0,class:Q([v.icon,"block size-4 shrink-0 leading-none text-text-secondary"])},null,2)):O("",!0),f("span",null,z(v.label),1)]),_:2},1032,["aria-label","onClick"]))],64))),128))])]),_:1},512))}}),yo=n(e=>{const o=Math.round(e??0);return Rl(o,0,100)},"clampPercentInt"),Ho=n((e,o)=>{const t=yo(o);return new Intl.NumberFormat(e,{style:"percent",maximumFractionDigits:0}).format((t||0)/100)},"formatPercent0");function ul(){const{locale:e}=de(),o=Qe(),t=k(()=>yo(Math.round((o.executionProgress??0)*100))),s=k(()=>Ho(e.value,t.value)),a=k(()=>yo(Math.round((o.executingNodeProgress??0)*100))),l=k(()=>Ho(e.value,a.value)),i=k(()=>({width:`${t.value}%`,background:"var(--color-interface-panel-job-progress-primary)"})),r=k(()=>({width:`${a.value}%`,background:"var(--color-interface-panel-job-progress-secondary)"}));return{totalPercent:t,totalPercentFormatted:s,currentNodePercent:a,currentNodePercentFormatted:l,totalProgressStyle:i,currentNodeProgressStyle:r}}n(ul,"useQueueProgress");const up=n(e=>{const o=new Date(e),t=o.getFullYear(),s=String(o.getMonth()+1).padStart(2,"0"),a=String(o.getDate()).padStart(2,"0");return`${t}-${s}-${a}`},"dateKey"),cp=n(e=>{const o=new Date(e),t=new Date;return o.getFullYear()===t.getFullYear()&&o.getMonth()===t.getMonth()&&o.getDate()===t.getDate()},"isToday"),dp=n(e=>{const o=new Date(e),t=new Date,s=new Date(t.getFullYear(),t.getMonth(),t.getDate()-1);return o.getFullYear()===s.getFullYear()&&o.getMonth()===s.getMonth()&&o.getDate()===s.getDate()},"isYesterday"),pp=n((e,o)=>{const t=new Date(e);return new Intl.DateTimeFormat(o,{month:"short",day:"numeric"}).format(t)},"formatShortMonthDay"),$n=n((e,o)=>{const t=new Date(e);return new Intl.DateTimeFormat(o,{hour:"numeric",minute:"2-digit",second:"2-digit"}).format(t)},"formatClockTime"),wt=n(e=>{switch(e){case"pending":return"icon-[lucide--loader-circle]";case"initialization":return"icon-[lucide--server-crash]";case"running":return"icon-[lucide--zap]";case"completed":return"icon-[lucide--check-check]";case"failed":return"icon-[lucide--alert-circle]";default:return"icon-[lucide--circle]"}},"iconForJobState"),Fs=n((e,o)=>{const t=o("g.job"),s=String(e.promptId??"").split("-")[0],a=e.queueIndex;return typeof a=="number"?`${t} #${a}`:s?`${t} ${s}`:t},"buildTitle"),gn=n((e,o,t)=>{const s=e.createTime;return s!==void 0?t(s,o):""},"buildQueuedTime"),fp=n((e,o,t)=>{if(o==="pending")return t.showAddedHint?{iconName:"icon-[lucide--check]",primary:t.t("queue.jobAddedToQueue"),secondary:gn(e,t.locale,t.formatClockTimeFn),showClear:!0}:{iconName:wt(o),primary:t.t("queue.inQueue"),secondary:gn(e,t.locale,t.formatClockTimeFn),showClear:!0};if(o==="initialization")return{iconName:wt(o),primary:t.t("queue.initializingAlmostReady"),secondary:gn(e,t.locale,t.formatClockTimeFn),showClear:!0};if(o==="running"){if(t.isActive){const s=Ho(t.locale,yo(t.totalPercent)),a=Ho(t.locale,yo(t.currentNodePercent)),l=t.t("sideToolbar.queueProgressOverlay.total",{percent:s}),i=t.currentNodeName?`${t.currentNodeName} ${t.t("sideToolbar.queueProgressOverlay.colonPercent",{percent:a})}`:"";return{iconName:wt(o),primary:l,secondary:i,showClear:!0}}return{iconName:wt(o),primary:t.t("g.running"),secondary:"",showClear:!0}}if(o==="completed"){const s=e.executionTimeInSeconds,a=e.previewOutput,l=a&&a.isImage?a.url:void 0,i=t.isCloud?t.t("queue.completedIn",{duration:xi(e.executionTime??0)}):a?.filename&&a.filename.length?a.filename:Fs(e,t.t);return{iconName:wt(o),iconImageUrl:l,primary:i,secondary:s!==void 0?`${s.toFixed(2)}s`:"",showClear:!1}}return o==="failed"?{iconName:wt(o),primary:t.t("g.failed"),secondary:t.t("g.failed"),showClear:!0}:{iconName:wt(o),primary:Fs(e,t.t),secondary:"",showClear:!0}},"buildJobDisplay"),as=n((e,o)=>{if(o)return"initialization";switch(e.displayStatus){case"Running":return"running";case"Pending":return"pending";case"Completed":return"completed";case"Failed":case"Cancelled":return"failed"}return"failed"},"jobStateFromTask"),Us=["All","Completed","Failed"],Gs=["mostRecent","totalGenerationTime"],mp=3e3,js=new Map,Hs=n(e=>{if(e==null)return null;const o=String(e);return o.length?o:null},"taskIdToKey"),vp=n((e,o,t)=>{const s=n(a=>{const l=t.format(a,"day");return l&&l[0].toLocaleUpperCase(o)+l.slice(1)},"formatRelativeDay");return cp(e)?s(0):dp(e)?s(-1):pp(e,o)},"dateLabelForTimestamp");function gp(){const{t:e,locale:o}=de(),t=St(),s=Qe(),a=Pe(),l=E(new Set),i=E(new Set),r=new Map,u=n(M=>{const V=r.get(M);V!==void 0&&(clearTimeout(V),r.delete(M))},"clearAddedHintTimeout"),p=n(M=>{u(M);const V=setTimeout(()=>{r.delete(M);const U=new Set(i.value);U.delete(M)&&(i.value=U)},mp);r.set(M,V)},"scheduleAddedHintExpiry");se(()=>t.pendingTasks.map(M=>Hs(M.promptId)).filter(M=>!!M),M=>{const V=new Set(M),U=new Set(i.value),R=new Set(l.value);M.forEach(j=>{R.has(j)||(R.add(j),U.add(j),p(j))});for(const j of Array.from(R))V.has(j)||(R.delete(j),U.delete(j),u(j));i.value=U,l.value=R},{immediate:!0});const v=n((M,V)=>{if(V!=="pending")return!1;const U=Hs(M.promptId);return U?i.value.has(U):!1},"shouldShowAddedHint");lt(()=>{r.forEach(M=>clearTimeout(M)),r.clear(),l.value=new Set,i.value=new Set});const{totalPercent:h,currentNodePercent:d}=ul(),b=k(()=>{const M=o.value;let V=js.get(M);return V||(V=new Intl.RelativeTimeFormat(M,{numeric:"auto"}),js.set(M,V)),V}),y=k(()=>e("queue.jobList.undated")||"Undated"),g=n(M=>s.isPromptInitializing(M),"isJobInitializing"),c=k(()=>{const M=s.executingNode;if(!M)return e("g.emDash");const V=(M.title??"").toString().trim();if(V)return V;const U=(M.type??"").toString().trim()||e("g.untitled"),R=`nodeDefs.${Re(U)}.display_name`;return ye(R,U)}),w=E("All"),_=E("all"),S=E("mostRecent"),x=k(()=>[...t.pendingTasks,...t.runningTasks,...t.historyTasks].sort((V,U)=>U.queueIndex-V.queueIndex)),D=k(()=>x.value.map(M=>({task:M,state:as(M,g(M?.promptId))}))),P=k(()=>D.value.some(({state:M})=>M==="failed"));se(()=>P.value,M=>{!M&&w.value==="Failed"&&(w.value="All")});const T=k(()=>{let M=D.value;if(w.value==="Completed"?M=M.filter(({state:V})=>V==="completed"):w.value==="Failed"&&(M=M.filter(({state:V})=>V==="failed")),_.value==="current"){const V=a.activeWorkflow?.activeState?.id;if(!V)return[];M=M.filter(({task:U})=>{const R=U.workflow?.id;return!!R&&R===V})}return M}),$=k(()=>T.value.map(({task:M})=>M)),I=k(()=>T.value.map(({task:M,state:V})=>{const U=String(M.promptId??"")===String(s.activePromptId??""),R=v(M,V),j=fp(M,V,{t:e,locale:o.value,formatClockTimeFn:$n,isActive:U,totalPercent:U?h.value:void 0,currentNodePercent:U?d.value:void 0,currentNodeName:U?c.value:void 0,showAddedHint:R,isCloud:mt});return{id:String(M.promptId),title:j.primary,meta:j.secondary,state:V,iconName:j.iconName,iconImageUrl:j.iconImageUrl,showClear:j.showClear,taskRef:M,progressTotalPercent:V==="running"&&U?h.value:void 0,progressCurrentPercent:V==="running"&&U?d.value:void 0,runningNodeName:V==="running"&&U?c.value:void 0,executionTimeMs:M.executionTime,computeHours:M.executionTime!==void 0?M.executionTime/36e5:void 0}})),B=k(()=>{const M=new Map;return I.value.forEach(V=>M.set(V.id,V)),M}),G=k(()=>{const M=[],V=new Map,U=o.value;for(const{task:R,state:j}of T.value){let q;j==="completed"||j==="failed"?q=R.executionEndTimestamp:q=R.createTime;const K=q===void 0?"undated":up(q);let ne=V.get(K);if(ne===void 0){const X=q===void 0?y.value:vp(q,U,b.value);M.push({key:K,label:X,items:[]}),ne=M.length-1,V.set(K,ne)}const ce=B.value.get(String(R.promptId));ce&&M[ne].items.push(ce)}if(S.value==="totalGenerationTime"){const R=n(q=>typeof q=="number"&&!Number.isNaN(q)?q:-1,"valueOrDefault"),j=n((q,K)=>R(K.executionTimeMs)-R(q.executionTimeMs),"sortByExecutionTimeDesc");M.forEach(q=>{q.items.sort(j)})}return M});return{selectedJobTab:w,selectedWorkflowFilter:_,selectedSortMode:S,hasFailedJobs:P,allTasksSorted:x,filteredTasks:$,jobItems:I,groupedJobItems:G,currentNodeName:c}}n(gp,"useJobList");const hp={class:"flex items-center justify-between gap-2 px-3"},yp={class:"min-w-0 flex-1 overflow-x-auto"},bp={class:"inline-flex items-center gap-1 whitespace-nowrap"},wp={class:"ml-2 flex shrink-0 items-center gap-2"},kp={key:0,class:"pointer-events-none absolute -top-1 -right-1 inline-block size-2 rounded-full bg-base-foreground"},Cp={class:"flex min-w-[12rem] flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},Sp={key:0,class:"icon-[lucide--check] size-4"},xp={key:0,class:"icon-[lucide--check] block size-4 leading-none text-text-secondary"},_p={key:0,class:"pointer-events-none absolute -top-1 -right-1 inline-block size-2 rounded-full bg-base-foreground"},Tp={class:"flex min-w-[12rem] flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},Np={key:0,class:"icon-[lucide--check] size-4 text-text-secondary"},$p={key:0,class:"mx-2 mt-1 h-px"},Ip=H({__name:"JobFiltersBar",props:{selectedJobTab:{},selectedWorkflowFilter:{},selectedSortMode:{},hasFailedJobs:{type:Boolean}},emits:["update:selectedJobTab","update:selectedWorkflowFilter","update:selectedSortMode"],setup(e,{emit:o}){const t=e,s=o,{t:a}=de(),l=E(null),i=E(null),r=k(()=>Xe(a("sideToolbar.queueProgressOverlay.filterBy"))),u=k(()=>Xe(a("sideToolbar.queueProgressOverlay.sortBy"))),p=k(()=>t.hasFailedJobs?Us:Us.filter(c=>c!=="Failed")),v=n(c=>{l.value&&l.value.toggle(c)},"onFilterClick"),h=n(c=>{l.value?.hide?.(),s("update:selectedWorkflowFilter",c)},"selectWorkflowFilter"),d=n(c=>{i.value&&i.value.toggle(c)},"onSortClick"),b=n(c=>{i.value?.hide?.(),s("update:selectedSortMode",c)},"selectSortMode"),y=n(c=>a(c==="All"?"g.all":c==="Completed"?"g.completed":"g.failed"),"tabLabel"),g=n(c=>c==="mostRecent"?a("queue.jobList.sortMostRecent"):c==="totalGenerationTime"?a("queue.jobList.sortTotalGenerationTime"):"","sortLabel");return(c,w)=>{const _=Se("tooltip");return m(),N("div",hp,[f("div",yp,[f("div",bp,[(m(!0),N(le,null,be(p.value,S=>(m(),F(ee,{key:S,variant:c.selectedJobTab===S?"secondary":"muted-textonly",size:"sm",class:"px-3",onClick:n(x=>c.$emit("update:selectedJobTab",S),"onClick")},{default:L(()=>[_e(z(y(S)),1)]),_:2},1032,["variant","onClick"]))),128))])]),f("div",wp,[ue((m(),F(ee,{key:0,variant:"secondary",size:"icon","aria-label":C(a)("sideToolbar.queueProgressOverlay.filterJobs"),onClick:v},{default:L(()=>[w[2]||(w[2]=f("i",{class:"icon-[lucide--list-filter] size-4"},null,-1)),c.selectedWorkflowFilter!=="all"?(m(),N("span",kp)):O("",!0)]),_:1},8,["aria-label"])),[[_,r.value,void 0,{top:!0}]]),(m(),F(C(Ze),{key:1,ref_key:"filterPopoverRef",ref:l,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:L(()=>[f("div",Cp,[W(ee,{class:"w-full justify-between",variant:"textonly",size:"sm",onClick:w[0]||(w[0]=S=>h("all"))},{default:L(()=>[f("span",null,z(C(a)("sideToolbar.queueProgressOverlay.filterAllWorkflows")),1),c.selectedWorkflowFilter==="all"?(m(),N("i",Sp)):O("",!0)]),_:1}),w[3]||(w[3]=f("div",{class:"mx-2 mt-1 h-px"},null,-1)),W(ee,{class:"w-full justify-between",variant:"textonly",onClick:w[1]||(w[1]=S=>h("current"))},{default:L(()=>[f("span",null,z(C(a)("sideToolbar.queueProgressOverlay.filterCurrentWorkflow")),1),c.selectedWorkflowFilter==="current"?(m(),N("i",xp)):O("",!0)]),_:1})])]),_:1},512)),ue((m(),F(ee,{variant:"secondary",size:"icon","aria-label":C(a)("sideToolbar.queueProgressOverlay.sortJobs"),onClick:d},{default:L(()=>[w[4]||(w[4]=f("i",{class:"icon-[lucide--arrow-up-down] size-4"},null,-1)),c.selectedSortMode!=="mostRecent"?(m(),N("span",_p)):O("",!0)]),_:1},8,["aria-label"])),[[_,u.value,void 0,{top:!0}]]),W(C(Ze),{ref_key:"sortPopoverRef",ref:i,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:L(()=>[f("div",Tp,[(m(!0),N(le,null,be(C(Gs),(S,x)=>(m(),N(le,{key:S},[W(ee,{class:"w-full justify-between",variant:"textonly",size:"sm",onClick:n(D=>b(S),"onClick")},{default:L(()=>[f("span",null,z(g(S)),1),c.selectedSortMode===S?(m(),N("i",Np)):O("",!0)]),_:2},1032,["onClick"]),x<C(Gs).length-1?(m(),N("div",$p)):O("",!0)],64))),128))])]),_:1},512)])])}}}),qs=n(e=>{const t=e?.status?.messages;if(!Array.isArray(t)||!t.length)return null;const s=t.find(i=>Array.isArray(i)&&i[0]==="execution_error");if(!s)return null;const a=s[1],l=String(a?.exception_message??"");return{detail:a,message:l}},"extractExecutionError"),Mp=n(({taskForJob:e,copyToClipboard:o,dialog:t})=>{const s=k(()=>qs(e.value)?.message??"");return{errorMessageValue:s,copyErrorMessage:n(()=>{s.value&&o(s.value)},"copyErrorMessage"),reportJobError:n(()=>{const i=qs(e.value);if(i?.detail){t.showExecutionErrorDialog(i.detail);return}s.value&&t.showErrorDialog(new Error(s.value),{reportType:"queueJobError"})},"reportJobError")}},"useJobErrorReporting"),In=n(e=>{const o=Math.max(0,Math.floor(e/1e3)),t=Math.floor(o/60),s=o%60;return`${t}m ${s}s`},"formatElapsedTime"),Pp=n(e=>e.historyTasks.map(o=>Number(o.executionTimeInSeconds)).filter(o=>typeof o=="number"&&!Number.isNaN(o)),"pickRecentDurations"),Dp=n(({queueStore:e,executionStore:o,taskForJob:t,jobState:s,firstSeenTs:a,jobsAhead:l,nowTs:i})=>{const r=k(()=>o.runningWorkflowCount),u=k(()=>s.value==="pending"&&!!a.value&&(r.value??0)>1),p=k(()=>Pp(e).slice(-20)),v=k(()=>{const y=p.value;if(!y.length)return null;const g=y.slice().sort((T,$)=>T-$),c=g.reduce((T,$)=>T+$,0)/g.length,w=g[Math.min(g.length-1,Math.floor(g.length*.75))],_=e.runningTasks,S=i.value,x=_.map(T=>T.executionStartTimestamp).filter(T=>typeof T=="number").map(T=>{const $=Math.max(0,Math.floor((S-T)/1e3));return{lo:Math.max(0,Math.round(c-$)),hi:Math.max(0,Math.round(w-$))}});if(!x.length)return null;const D=x.reduce((T,$)=>Math.min(T,$.lo),1/0),P=x.reduce((T,$)=>Math.min(T,$.hi),1/0);return[D,P]}),h=k(()=>{const y=p.value;if(!y.length)return null;const g=l.value;if(g==null)return null;const c=y.slice().sort((D,P)=>D-P),w=c.reduce((D,P)=>D+P,0)/c.length,_=c[Math.min(c.length-1,Math.floor(c.length*.75))];if(g<=0)return v.value??[0,0];const S=Math.max(1,r.value||1),x=Math.ceil(g/S);return[Math.round(w*x),Math.round(_*x)]}),d=k(()=>{const y=p.value;if(!y.length)return null;const g=y.slice().sort(($,I)=>$-I),c=g.reduce(($,I)=>$+I,0)/g.length,w=g[Math.min(g.length-1,Math.floor(g.length*.75))],_=t.value,x=(s.value==="running"?_?.executionStartTimestamp:void 0)??a.value,D=x?Math.max(0,Math.floor((i.value-x)/1e3)):0,P=Math.max(0,Math.round(c-D)),T=Math.max(0,Math.round(w-D));return[P,T]}),b=k(()=>{const y=t.value,c=(s.value==="running"?y?.executionStartTimestamp:void 0)??a.value;return c?In(i.value-c):""});return{runningWorkflowCount:r,showParallelQueuedStats:u,estimateRangeSeconds:h,estimateRemainingRangeSeconds:d,timeElapsedValue:b}},"useQueueEstimates"),Ap={class:"w-[300px] min-w-[260px] rounded-lg border border-interface-stroke bg-interface-panel-surface shadow-md"},Ep={class:"flex items-center border-b border-interface-stroke p-4"},Lp={class:"text-[0.875rem] leading-normal font-normal text-text-primary"},Vp={class:"flex flex-col gap-6 px-4 pt-4 pb-4"},Op={class:"grid grid-cols-2 items-center gap-x-2 gap-y-2"},Rp={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Wp={class:"flex min-w-0 items-center text-[0.75rem] leading-normal font-normal text-text-secondary"},zp={class:"block min-w-0 truncate"},Bp={key:0,class:"grid grid-cols-2 items-center gap-x-2 gap-y-2"},Fp={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Up={class:"flex min-w-0 items-center text-[0.75rem] leading-normal font-normal text-text-secondary"},Gp={class:"block min-w-0 truncate"},jp={key:1,class:"grid grid-cols-2 gap-x-2"},Hp={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},qp={class:"flex items-center justify-between gap-4"},Kp={class:"col-span-2 mt-2 rounded bg-interface-panel-hover-surface px-4 py-2 text-[0.75rem] leading-normal text-text-secondary"},Jp=H({__name:"JobDetailsPopover",props:{jobId:{},workflowId:{}},setup(e){const o=e,t=k(()=>u("g.copy")),s=Pe(),a=St(),l=Qe(),i=et(),{locale:r,t:u}=de(),p=k(()=>{const K=o.workflowId;if(!K)return"";const ne=s.activeWorkflow?.activeState?.id;return ne&&ne===K?s.activeWorkflow?.filename??K:K}),v=k(()=>o.jobId),{copyToClipboard:h}=Oa(),d=n(()=>{h(v.value)},"copyJobId"),b=k(()=>{const K=o.jobId,ne=n(ce=>ce.find(X=>String(X.promptId??"")===String(K)),"findIn");return ne(a.pendingTasks)||ne(a.runningTasks)||ne(a.historyTasks)||null}),y=k(()=>{const K=b.value;if(!K)return null;const ne=l.isPromptInitializing(String(K?.promptId));return as(K,ne)}),g=k(()=>b.value?.createTime),c=k(()=>g.value!==void 0?$n(g.value,r.value):""),w=k(()=>{const K=b.value;return K?Number(K.queueIndex):null}),_=k(()=>{const K=w.value;return K==null?null:a.pendingTasks.filter(ce=>Number(ce.queueIndex)<K).length}),S=k(()=>{if(_.value==null)return"";const K=_.value;return u("queue.jobDetails.queuePositionValue",{count:K},K)}),x=E(Date.now());let D=null;Le(()=>{D=window.setInterval(()=>{x.value=Date.now()},1e3)}),lt(()=>{D!=null&&(clearInterval(D),D=null)});const{showParallelQueuedStats:P,estimateRangeSeconds:T,estimateRemainingRangeSeconds:$,timeElapsedValue:I}=Dp({queueStore:a,executionStore:l,taskForJob:b,jobState:y,firstSeenTs:g,jobsAhead:_,nowTs:x}),B=n((K,ne)=>{if(ne<=60){const oe=Math.max(1,Math.round(ne)),ae=Math.max(1,Math.min(oe,Math.round(K)));return ae===oe?u("queue.jobDetails.eta.seconds",{count:oe},oe):u("queue.jobDetails.eta.secondsRange",{lo:ae,hi:oe})}if(K>=60&&ne<90)return u("queue.jobDetails.eta.minutes",{count:1},1);const ce=Math.max(1,Math.floor(K/60)),X=Math.max(ce,Math.ceil(ne/60));return ce===X?u("queue.jobDetails.eta.minutes",{count:ce},ce):u("queue.jobDetails.eta.minutesRange",{lo:ce,hi:X})},"formatEta"),G=k(()=>{const K=T.value;if(!K)return"";const[ne,ce]=K;return B(ne,ce)}),M=k(()=>{const K=$.value;if(!K)return"";const[ne,ce]=K;return B(ne,ce)}),V=k(()=>[{label:u("queue.jobDetails.workflow"),value:p.value},{label:u("queue.jobDetails.jobId"),value:v.value,canCopy:!0}]),U=k(()=>{if(y.value==="pending"){if(!g.value)return[];const K=[{label:u("queue.jobDetails.queuedAt"),value:c.value}];return P.value&&K.push({label:u("queue.jobDetails.queuePosition"),value:S.value},{label:u("queue.jobDetails.timeElapsed"),value:I.value},{label:u("queue.jobDetails.estimatedStartIn"),value:G.value}),K}if(y.value==="running")return g.value?[{label:u("queue.jobDetails.queuedAt"),value:c.value},{label:u("queue.jobDetails.timeElapsed"),value:I.value},{label:u("queue.jobDetails.estimatedFinishIn"),value:M.value}]:[];if(y.value==="completed"){const K=b.value,ne=K?.executionEndTimestamp,ce=K?.executionTime,X=ne?$n(ne,r.value):"",oe=ce!==void 0?In(ce):"";return ce!==void 0&&(ce/36e5).toFixed(3)+"",[{label:u("queue.jobDetails.generatedOn"),value:X},{label:u("queue.jobDetails.totalGenerationTime"),value:oe}]}if(y.value==="failed"){const ne=b.value?.executionTime,ce=ne!==void 0?In(ne):"";return ne!==void 0&&(ne/36e5).toFixed(3)+"",[{label:u("queue.jobDetails.queuedAt"),value:c.value},{label:u("queue.jobDetails.failedAfter"),value:ce}]}return[]}),{errorMessageValue:R,copyErrorMessage:j,reportJobError:q}=Mp({taskForJob:b,copyToClipboard:h,dialog:i});return(K,ne)=>(m(),N("div",Ap,[f("div",Ep,[f("span",Lp,z(C(u)("queue.jobDetails.header")),1)]),f("div",Vp,[f("div",Op,[(m(!0),N(le,null,be(V.value,ce=>(m(),N(le,{key:ce.label},[f("div",Rp,z(ce.label),1),f("div",Wp,[f("span",zp,z(ce.value),1),ce.canCopy?(m(),F(ee,{key:0,size:"icon",variant:"muted-textonly","aria-label":t.value,onClick:ke(d,["stop"])},{default:L(()=>ne[0]||(ne[0]=[f("i",{class:"icon-[lucide--copy] size-4"},null,-1)])),_:1},8,["aria-label"])):O("",!0)])],64))),128))]),U.value.length?(m(),N("div",Bp,[(m(!0),N(le,null,be(U.value,ce=>(m(),N(le,{key:ce.label},[f("div",Fp,z(ce.label),1),f("div",Up,[f("span",Gp,z(ce.value),1)])],64))),128))])):O("",!0),y.value==="failed"?(m(),N("div",jp,[f("div",Hp,z(C(u)("queue.jobDetails.errorMessage")),1),f("div",qp,[W(ee,{class:"justify-start px-0",variant:"muted-textonly",size:"sm","icon-position":"right",onClick:ke(C(j),["stop"])},{default:L(()=>[f("span",null,z(t.value),1),ne[1]||(ne[1]=f("i",{class:"icon-[lucide--copy] block size-3.5 leading-none"},null,-1))]),_:1},8,["onClick"]),W(ee,{class:"justify-start px-0",variant:"muted-textonly",size:"sm","icon-position":"right",onClick:ke(C(q),["stop"])},{default:L(()=>[f("span",null,z(C(u)("queue.jobDetails.report")),1),ne[2]||(ne[2]=f("i",{class:"icon-[lucide--message-circle-warning] block size-3.5 leading-none"},null,-1))]),_:1},8,["onClick"])]),f("div",Kp,z(C(R)),1)])):O("",!0)])]))}}),Yp={class:"w-[300px] min-w-[260px] rounded-lg shadow-md"},Qp={class:"p-3"},Xp={class:"relative aspect-square w-full overflow-hidden rounded-lg"},Zp=["src","alt"],ef={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)"}},tf={class:"mt-2 text-center"},of=["title"],nf={key:0,class:"mt-1 text-[0.75rem] leading-normal text-text-secondary"},sf=H({inheritAttrs:!1,__name:"QueueAssetPreview",props:{imageUrl:{},name:{},timeLabel:{}},emits:["image-click"],setup(e){const o=E(null),t=E(null),s=E(null),a=n(()=>{const l=o.value;l&&(t.value=l.naturalWidth||null,s.value=l.naturalHeight||null)},"onImgLoad");return(l,i)=>(m(),N("div",Yp,[f("div",Qp,[f("div",Xp,[f("img",{ref_key:"imgRef",ref:o,src:l.imageUrl,alt:l.name,class:"h-full w-full cursor-pointer object-contain",onClick:i[0]||(i[0]=r=>l.$emit("image-click")),onLoad:a},null,40,Zp),l.timeLabel?(m(),N("div",ef,z(l.timeLabel),1)):O("",!0)]),f("div",tf,[f("div",{class:"truncate text-[0.875rem] leading-normal font-semibold text-text-primary",title:l.name},z(l.name),9,of),t.value&&s.value?(m(),N("div",nf,z(t.value)+"x"+z(s.value),1)):O("",!0)])])]))}}),af={key:0,class:"absolute inset-0"},lf={class:"relative z-1 flex items-center gap-1"},rf={class:"relative inline-flex items-center justify-center"},uf={class:"inline-flex h-6 w-6 items-center justify-center overflow-hidden rounded-[6px]"},cf=["src"],df={class:"relative z-1 min-w-0 flex-1"},pf=["title"],ff={class:"relative z-1 flex items-center gap-2 text-text-secondary"},mf={key:"actions",class:"inline-flex items-center gap-2 pr-1"},vf={key:"secondary",class:"pr-2"},gf=H({__name:"QueueJobItem",props:{jobId:{},workflowId:{default:void 0},state:{},title:{},rightText:{default:""},iconName:{default:void 0},iconImageUrl:{default:void 0},showClear:{type:Boolean,default:void 0},showMenu:{type:Boolean,default:void 0},progressTotalPercent:{default:void 0},progressCurrentPercent:{default:void 0},activeDetailsId:{default:null}},emits:["cancel","delete","menu","view","details-enter","details-leave"],setup(e,{emit:o}){const t=e,s=o,{t:a}=de(),l=k(()=>Xe(a("g.cancel"))),i=k(()=>Xe(a("g.delete"))),r=k(()=>Xe(a("g.more"))),u=E(null),p=k(()=>t.activeDetailsId===t.jobId),v=n(()=>{y.value||s("details-enter",t.jobId)},"onRowEnter"),h=n(()=>s("details-leave",t.jobId),"onRowLeave"),d=n(()=>s("details-enter",t.jobId),"onPopoverEnter"),b=n(()=>s("details-leave",t.jobId),"onPopoverLeave"),y=E(!1),g=E(null),c=E(null),w=n(()=>{g.value!==null&&(clearTimeout(g.value),g.value=null)},"clearPreviewHideTimer"),_=n(()=>{c.value!==null&&(clearTimeout(c.value),c.value=null)},"clearPreviewShowTimer"),S=k(()=>t.state==="completed"&&!!t.iconImageUrl),x=n(()=>{S.value&&(w(),_(),c.value=window.setTimeout(()=>{y.value=!0,c.value=null},200))},"scheduleShowPreview"),D=n(()=>{w(),_(),g.value=window.setTimeout(()=>{y.value=!1,g.value=null},150)},"scheduleHidePreview"),P=n(()=>x(),"onIconEnter"),T=n(()=>D(),"onIconLeave"),$=n(()=>x(),"onPreviewEnter"),I=n(()=>D(),"onPreviewLeave"),B=E(null),G=n(()=>{const X=u.value;if(!X)return;const oe=X.getBoundingClientRect(),ae=8;B.value={top:oe.top,right:window.innerWidth-oe.left+ae}},"updatePopoverPosition"),M=k(()=>p.value||y.value&&S.value);se(M,X=>{X?Oe(G):B.value=null},{immediate:!1});const V=E(!1),U=k(()=>t.iconName?t.iconName:wt(t.state)),R=k(()=>t.state==="pending"&&U.value===wt("pending")&&!t.iconImageUrl),j=k(()=>t.showClear!==void 0?t.showClear:t.state!=="completed"),q=n(()=>s("details-leave",t.jobId),"emitDetailsLeave"),K=n(()=>{q(),s("cancel")},"onCancelClick"),ne=n(()=>{q(),s("delete")},"onDeleteClick"),ce=n(X=>{(t.showMenu===void 0||t.showMenu)&&s("menu",X)},"onContextMenu");return(X,oe)=>{const ae=Se("tooltip");return m(),N("div",{ref_key:"rowRef",ref:u,class:"relative",onMouseenter:v,onMouseleave:h,onContextmenu:ke(ce,["stop","prevent"])},[(m(),F(Dt,{to:"body"},[!y.value&&p.value&&B.value?(m(),N("div",{key:0,class:"fixed z-50",style:ve({top:`${B.value.top}px`,right:`${B.value.right}px`}),onMouseenter:d,onMouseleave:b},[W(Jp,{"job-id":t.jobId,"workflow-id":t.workflowId},null,8,["job-id","workflow-id"])],36)):O("",!0)])),(m(),F(Dt,{to:"body"},[y.value&&S.value&&B.value?(m(),N("div",{key:0,class:"fixed z-50",style:ve({top:`${B.value.top}px`,right:`${B.value.right}px`}),onMouseenter:$,onMouseleave:I},[W(sf,{"image-url":X.iconImageUrl,name:t.title,"time-label":X.rightText||void 0,onImageClick:oe[0]||(oe[0]=xe=>s("view"))},null,8,["image-url","name","time-label"])],36)):O("",!0)])),f("div",{class:"relative flex items-center justify-between gap-2 overflow-hidden rounded-lg border border-secondary-background bg-secondary-background p-1 text-[12px] text-text-primary transition-colors duration-150 ease-in-out hover:border-secondary-background-hover hover:bg-secondary-background-hover",onMouseenter:oe[3]||(oe[3]=xe=>V.value=!0),onMouseleave:oe[4]||(oe[4]=xe=>V.value=!1)},[t.state==="running"&&(t.progressTotalPercent!==void 0||t.progressCurrentPercent!==void 0)?(m(),N("div",af,[t.progressTotalPercent!==void 0?(m(),N("div",{key:0,class:"pointer-events-none absolute inset-y-0 left-0 h-full bg-interface-panel-job-progress-primary transition-[width]",style:ve({width:`${t.progressTotalPercent}%`})},null,4)):O("",!0),t.progressCurrentPercent!==void 0?(m(),N("div",{key:1,class:"pointer-events-none absolute inset-y-0 left-0 h-full bg-interface-panel-job-progress-secondary transition-[width]",style:ve({width:`${t.progressCurrentPercent}%`})},null,4)):O("",!0)])):O("",!0),f("div",lf,[f("div",rf,[f("div",{class:"absolute left-1/2 top-1/2 size-10 -translate-x-1/2 -translate-y-1/2",onMouseenter:ke(P,["stop"]),onMouseleave:ke(T,["stop"])},null,32),f("div",uf,[X.iconImageUrl?(m(),N("img",{key:0,src:X.iconImageUrl,class:"h-full w-full object-cover"},null,8,cf)):(m(),N("i",{key:1,class:Q(C(pe)(U.value,"size-4",R.value&&"animate-spin"))},null,2))])])]),f("div",df,[f("div",{class:"truncate opacity-90",title:t.title},[Ne(X.$slots,"primary",{},()=>[_e(z(t.title),1)])],8,pf)]),f("div",ff,[W(zn,{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:L(()=>[V.value?(m(),N("div",mf,[t.state==="failed"&&j.value?ue((m(),F(ee,{key:0,variant:"destructive",size:"icon","aria-label":C(a)("g.delete"),onClick:ke(ne,["stop"])},{default:L(()=>oe[5]||(oe[5]=[f("i",{class:"icon-[lucide--trash-2] size-4"},null,-1)])),_:1},8,["aria-label"])),[[ae,i.value,void 0,{top:!0}]]):t.state!=="completed"&&t.state!=="running"&&j.value?ue((m(),F(ee,{key:1,variant:"destructive",size:"icon","aria-label":C(a)("g.cancel"),onClick:ke(K,["stop"])},{default:L(()=>oe[6]||(oe[6]=[f("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"])),[[ae,l.value,void 0,{top:!0}]]):t.state==="completed"?(m(),F(ee,{key:2,variant:"textonly",size:"sm",onClick:oe[1]||(oe[1]=ke(xe=>s("view"),["stop"]))},{default:L(()=>[_e(z(C(a)("menuLabels.View")),1)]),_:1})):O("",!0),t.showMenu===void 0||t.showMenu?ue((m(),F(ee,{key:3,variant:"textonly",size:"icon-sm","aria-label":C(a)("g.more"),onClick:oe[2]||(oe[2]=ke(xe=>s("menu",xe),["stop"]))},{default:L(()=>oe[7]||(oe[7]=[f("i",{class:"icon-[lucide--more-horizontal] size-4"},null,-1)])),_:1},8,["aria-label"])),[[ae,r.value,void 0,{top:!0}]]):O("",!0)])):t.state!=="running"?(m(),N("div",vf,[Ne(X.$slots,"secondary",{},()=>[_e(z(t.rightText),1)])])):O("",!0)]),_:3}),t.state==="running"&&j.value?ue((m(),F(ee,{key:0,variant:"destructive",size:"icon","aria-label":C(a)("g.cancel"),onClick:ke(K,["stop"])},{default:L(()=>oe[8]||(oe[8]=[f("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"])),[[ae,l.value,void 0,{top:!0}]]):O("",!0)])],32)],544)}}}),hf={class:"flex flex-col gap-4 px-3 pb-4"},yf={class:"text-[12px] leading-none text-text-secondary"},bf=H({__name:"JobGroupsList",props:{displayedJobGroups:{}},emits:["cancelItem","deleteItem","menu","viewItem"],setup(e,{emit:o}){const t=e,s=o,a=n(y=>{s("cancelItem",y)},"emitCancelItem"),l=n(y=>{s("deleteItem",y)},"emitDeleteItem"),i=E(null),r=E(null),u=E(null),p=n(()=>{r.value!==null&&(clearTimeout(r.value),r.value=null)},"clearHideTimer"),v=n(()=>{u.value!==null&&(clearTimeout(u.value),u.value=null)},"clearShowTimer"),h=n(y=>{p(),v(),u.value=window.setTimeout(()=>{i.value=y,u.value=null},200)},"onDetailsEnter"),d=n(y=>{p(),v(),r.value=window.setTimeout(()=>{i.value===y&&(i.value=null),r.value=null},150)},"onDetailsLeave"),b=n(()=>{p(),v(),i.value=null},"resetActiveDetails");return se(()=>t.displayedJobGroups,y=>{const g=i.value;if(!g)return;y.some(w=>w.items.some(_=>_.id===g))||b()}),gt(b),(y,g)=>(m(),N("div",hf,[(m(!0),N(le,null,be(y.displayedJobGroups,c=>(m(),N("div",{key:c.key,class:"flex flex-col gap-2"},[f("div",yf,z(c.label),1),(m(!0),N(le,null,be(c.items,w=>(m(),F(gf,{key:w.id,"job-id":w.id,"workflow-id":w.taskRef?.workflow?.id,state:w.state,title:w.title,"right-text":w.meta,"icon-name":w.iconName,"icon-image-url":w.iconImageUrl,"show-clear":w.showClear,"show-menu":!0,"progress-total-percent":w.progressTotalPercent,"progress-current-percent":w.progressCurrentPercent,"running-node-name":w.runningNodeName,"active-details-id":i.value,onCancel:n(_=>a(w),"onCancel"),onDelete:n(_=>l(w),"onDelete"),onMenu:n(_=>y.$emit("menu",w,_),"onMenu"),onView:n(_=>y.$emit("viewItem",w),"onView"),onDetailsEnter:h,onDetailsLeave:d},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))]))}}),wf={class:"flex w-full flex-col gap-4"},kf={class:"flex items-center justify-between px-3"},Cf={class:"ml-4 inline-flex items-center"},Sf={class:"inline-flex h-6 items-center text-[12px] leading-none text-text-primary opacity-90"},xf={class:"font-bold"},_f={class:"ml-1"},Tf={class:"flex-1 min-h-0 overflow-y-auto"},Nf=H({__name:"QueueOverlayExpanded",props:{headerTitle:{},showConcurrentIndicator:{type:Boolean},concurrentWorkflowCount:{},queuedCount:{},selectedJobTab:{},selectedWorkflowFilter:{},selectedSortMode:{},displayedJobGroups:{},hasFailedJobs:{type:Boolean}},emits:["showAssets","clearHistory","clearQueued","update:selectedJobTab","update:selectedWorkflowFilter","update:selectedSortMode","cancelItem","deleteItem","viewItem"],setup(e,{emit:o}){const t=o,{t:s}=de(),a=E(null),l=E(null),{jobMenuEntries:i}=Qd(()=>a.value,h=>t("viewItem",h)),r=n(h=>{t("cancelItem",h)},"onCancelItemEvent"),u=n(h=>{t("deleteItem",h)},"onDeleteItemEvent"),p=n((h,d)=>{a.value=h,l.value?.open(d)},"onMenuItem"),v=n(async h=>{h.kind!=="divider"&&(h.onClick&&await h.onClick(),l.value?.hide())},"onJobMenuAction");return(h,d)=>(m(),N("div",wf,[W(ap,{"header-title":h.headerTitle,"show-concurrent-indicator":h.showConcurrentIndicator,"concurrent-workflow-count":h.concurrentWorkflowCount,onClearHistory:d[0]||(d[0]=b=>h.$emit("clearHistory"))},null,8,["header-title","show-concurrent-indicator","concurrent-workflow-count"]),f("div",kf,[W(ee,{class:"grow gap-1 justify-center",variant:"secondary",size:"sm",onClick:d[1]||(d[1]=b=>h.$emit("showAssets"))},{default:L(()=>[d[7]||(d[7]=f("i",{class:"icon-[comfy--image-ai-edit] size-4"},null,-1)),f("span",null,z(C(s)("sideToolbar.queueProgressOverlay.showAssets")),1)]),_:1}),f("div",Cf,[f("div",Sf,[f("span",xf,z(h.queuedCount),1),f("span",_f,z(C(s)("sideToolbar.queueProgressOverlay.queuedSuffix")),1)]),h.queuedCount>0?(m(),F(ee,{key:0,class:"ml-2",variant:"destructive",size:"icon","aria-label":C(s)("sideToolbar.queueProgressOverlay.clearQueued"),onClick:d[2]||(d[2]=b=>h.$emit("clearQueued"))},{default:L(()=>d[8]||(d[8]=[f("i",{class:"icon-[lucide--list-x] size-4"},null,-1)])),_:1},8,["aria-label"])):O("",!0)])]),W(Ip,{"selected-job-tab":h.selectedJobTab,"selected-workflow-filter":h.selectedWorkflowFilter,"selected-sort-mode":h.selectedSortMode,"has-failed-jobs":h.hasFailedJobs,"onUpdate:selectedJobTab":d[3]||(d[3]=b=>h.$emit("update:selectedJobTab",b)),"onUpdate:selectedWorkflowFilter":d[4]||(d[4]=b=>h.$emit("update:selectedWorkflowFilter",b)),"onUpdate:selectedSortMode":d[5]||(d[5]=b=>h.$emit("update:selectedSortMode",b))},null,8,["selected-job-tab","selected-workflow-filter","selected-sort-mode","has-failed-jobs"]),f("div",Tf,[W(bf,{"displayed-job-groups":h.displayedJobGroups,onCancelItem:r,onDeleteItem:u,onViewItem:d[6]||(d[6]=b=>h.$emit("viewItem",b)),onMenu:p},null,8,["displayed-job-groups"])]),W(rp,{ref_key:"jobContextMenuRef",ref:l,entries:C(i),onAction:v},null,8,["entries"])]))}}),$f={class:"w-[360px] rounded-2xl border border-interface-stroke bg-interface-panel-surface text-text-primary shadow-interface font-inter"},If={class:"flex items-center justify-between border-b border-interface-stroke px-4 py-4"},Mf={class:"m-0 text-[14px] font-normal leading-none"},Pf={class:"flex flex-col gap-4 px-4 py-4 text-[14px] text-text-secondary"},Df={class:"m-0"},Af={class:"m-0"},Ef={class:"flex items-center justify-end px-4 py-4"},Lf={class:"flex items-center gap-4 leading-none"},Vf=H({__name:"QueueClearHistoryDialog",setup(e){const o=ht(),t=St(),{t:s}=de(),{wrapWithErrorHandlingAsync:a}=Wt(),l=E(!1),i=a(async()=>{await t.clear(["history"]),o.closeDialog()},void 0,()=>{l.value=!1}),r=n(async()=>{l.value||(l.value=!0,await i())},"onConfirm"),u=n(()=>{o.closeDialog()},"onCancel");return(p,v)=>(m(),N("section",$f,[f("header",If,[f("p",Mf,z(C(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogTitle")),1),W(ee,{size:"icon",variant:"muted-textonly","aria-label":C(s)("g.close"),onClick:u},{default:L(()=>v[0]||(v[0]=[f("i",{class:"icon-[lucide--x] block size-4 leading-none"},null,-1)])),_:1},8,["aria-label"])]),f("div",Pf,[f("p",Df,z(C(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogDescription")),1),f("p",Af,z(C(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogAssetsNote")),1)]),f("footer",Ef,[f("div",Lf,[W(ee,{variant:"muted-textonly",size:"lg",onClick:u},{default:L(()=>[_e(z(C(s)("g.cancel")),1)]),_:1}),W(ee,{variant:"secondary",size:"lg",disabled:l.value,onClick:r},{default:L(()=>[_e(z(C(s)("g.clear")),1)]),_:1},8,["disabled"])])])]))}}),Of=n(()=>{const e=St(),o=Qe(),t=k(()=>e.runningTasks.length>0||!o.isIdle),s=E(null),a=E(null),l=E(null),i=n(()=>{l.value!==null&&(clearTimeout(l.value),l.value=null)},"clearDismissTimer"),r=n(()=>{i(),l.value=window.setTimeout(()=>{a.value=null,l.value=null},6e3)},"startDismissTimer"),u=n(()=>{a.value=null,i()},"clearSummary");return se(t,(v,h)=>{if(!h&&v&&(s.value=Date.now()),h&&!v){const d=s.value??0,b=e.historyTasks.filter(_=>{const S=_.executionEndTimestamp;return typeof S=="number"&&S>=d});if(!b.length){a.value=null,i();return}let y=0,g=0;const c=[];for(const _ of b){const S=as(_,!1);if(S==="completed"){y++;const x=_.previewOutput;x?.isImage&&c.push(x.urlWithTimestamp)}else S==="failed"&&g++}if(y===0&&g===0){a.value=null,i();return}let w="mixed";g===0?w="allSuccess":y===0&&(w="allFailed"),a.value={mode:w,completedCount:y,failedCount:g,thumbnailUrls:c.slice(0,3)},r()}},{immediate:!0}),{summary:k(()=>a.value),clearSummary:u}},"useCompletionSummary");function Rf(e){const o=E(-1),t=Je([]);return{galleryActiveIndex:o,galleryItems:t,onViewItem:n(a=>{const l=e().flatMap(u=>{const p=u.previewOutput;return p&&p.supportsPreview?[p]:[]});if(!l.length)return;t.value=l;const i=a.taskRef?.previewOutput?.url,r=i?l.findIndex(u=>u.url===i):0;o.value=r>=0?r:0},"onViewItem")}}n(Rf,"useResultGallery");const Wf={class:Q(["flex","justify-end","w-full","pointer-events-none"])},zf=H({__name:"QueueProgressOverlay",props:{expanded:{type:Boolean},menuHovered:{type:Boolean,default:!1}},emits:["update:expanded"],setup(e,{emit:o}){const t=e,s=o,{t:a}=de(),l=St(),i=Ce(),r=Qe(),u=Uo(),p=ht(),v=Ra(),h=_i(),{wrapWithErrorHandlingAsync:d}=Wt(),{totalPercentFormatted:b,currentNodePercentFormatted:y,totalProgressStyle:g,currentNodeProgressStyle:c}=ul(),w=E(!1),_=k(()=>w.value||t.menuHovered),S=E(!1),x=k({get:n(()=>t.expanded===void 0?S.value:t.expanded,"get"),set:n(te=>{t.expanded===void 0&&(S.value=te),s("update:expanded",te)},"set")}),{summary:D,clearSummary:P}=Of(),T=k(()=>D.value!==null),$=k(()=>l.runningTasks.length),I=k(()=>l.pendingTasks.length),B=k(()=>!r.isIdle),G=k(()=>$.value>0||B.value),M=k(()=>$.value+I.value),V=k(()=>x.value?"expanded":G.value?"active":T.value?"empty":"hidden"),U=k(()=>V.value==="expanded"||V.value==="empty"||V.value==="active"&&_.value),R=k(()=>V.value!=="hidden"),j=k(()=>U.value?"border-interface-stroke bg-interface-panel-surface shadow-interface":"border-transparent bg-transparent shadow-none"),q=k(()=>`flex items-center justify-end gap-4 transition-opacity duration-200 ease-in-out ${V.value==="active"&&_.value?"opacity-100 pointer-events-auto":"opacity-0 pointer-events-none"}`),K=k(()=>G.value?`${M.value} ${a("sideToolbar.queueProgressOverlay.activeJobsSuffix")}`:a("sideToolbar.queueProgressOverlay.jobQueue")),ne=k(()=>r.runningWorkflowCount),ce=k(()=>ne.value>1),{selectedJobTab:X,selectedWorkflowFilter:oe,selectedSortMode:ae,hasFailedJobs:xe,filteredTasks:Ue,groupedJobItems:qe,currentNodeName:nt}=gp(),He=k(()=>qe.value),Ge=d(async te=>{const Te=te.taskRef?.promptId;Te&&(te.state==="running"||te.state==="initialization"?(await we.interrupt(Te),await l.update()):te.state==="pending"&&(await we.deleteItem("queue",Te),await l.update()))}),bt=d(async te=>{te.taskRef&&await l.delete(te.taskRef)}),{galleryActiveIndex:rt,galleryItems:Ft,onViewItem:Ut}=Rf(()=>Ue.value),xt=n(te=>{x.value=te},"setExpanded"),ut=n(()=>{xt(!0)},"openExpandedFromEmpty"),It=n(()=>{xt(!0)},"viewAllJobs"),Mt=n(()=>{ut(),P()},"onSummaryClick"),ct=n(()=>{u.activeSidebarTabId="assets"},"openAssetsSidebar"),io=n(async te=>{const Te=te.taskRef,Ve=Te?.promptId,$l=Te?.previewOutput;if(!Ve||!$l)return;const hs=String(Ve);if(ct(),await Oe(),await v.updateHistory(),!v.historyAssets.find(Il=>Il.id===hs))throw new Error("Asset not found in media assets panel");h.setSelection([hs])},"focusAssetInSidebar"),ro=d(async te=>{Ut(te),await io(te)}),Ke=d(async()=>{await i.execute("Comfy.ClearPendingTasks")}),Y=d(async()=>{const Te=l.runningTasks.map(Ve=>Ve.promptId).filter(Ve=>typeof Ve=="string"&&Ve.length>0);Te.length&&await Promise.all(Te.map(Ve=>we.interrupt(Ve)))}),Z=n(()=>{p.showDialog({key:"queue-clear-history",component:Vf,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"),$e=n(()=>{Z()},"onClearHistoryFromMenu");return(te,Te)=>(m(),N(le,null,[ue(f("div",Wf,[f("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",j.value]),onMouseenter:Te[3]||(Te[3]=Ve=>w.value=!0),onMouseleave:Te[4]||(Te[4]=Ve=>w.value=!1)},[x.value?(m(),F(Nf,{key:0,"selected-job-tab":C(X),"onUpdate:selectedJobTab":Te[0]||(Te[0]=Ve=>ft(X)?X.value=Ve:null),"selected-workflow-filter":C(oe),"onUpdate:selectedWorkflowFilter":Te[1]||(Te[1]=Ve=>ft(oe)?oe.value=Ve:null),"selected-sort-mode":C(ae),"onUpdate:selectedSortMode":Te[2]||(Te[2]=Ve=>ft(ae)?ae.value=Ve:null),class:"flex-1 min-h-0","header-title":K.value,"show-concurrent-indicator":ce.value,"concurrent-workflow-count":ne.value,"queued-count":I.value,"displayed-job-groups":He.value,"has-failed-jobs":C(xe),onShowAssets:ct,onClearHistory:$e,onClearQueued:C(Ke),onCancelItem:C(Ge),onDeleteItem:C(bt),onViewItem:C(ro)},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"])):G.value?(m(),F(Od,{key:1,"total-progress-style":C(g),"current-node-progress-style":C(c),"total-percent-formatted":C(b),"current-node-percent-formatted":C(y),"current-node-name":C(nt),"running-count":$.value,"queued-count":I.value,"bottom-row-class":q.value,onInterruptAll:C(Y),onClearQueued:C(Ke),onViewAllJobs:It},null,8,["total-progress-style","current-node-progress-style","total-percent-formatted","current-node-percent-formatted","current-node-name","running-count","queued-count","bottom-row-class","onInterruptAll","onClearQueued"])):C(D)?(m(),F(Yd,{key:2,summary:C(D),onSummaryClick:Mt},null,8,["summary"])):O("",!0)],34)],512),[[Ye,R.value]]),W(Ti,{"active-index":C(rt),"onUpdate:activeIndex":Te[5]||(Te[5]=Ve=>ft(rt)?rt.value=Ve:null),"all-gallery-items":C(Ft)},null,8,["active-index","all-gallery-items"])],64))}}),Bf=Ot("actionBarButton",()=>{const e=Yn();return{buttons:k(()=>e.extensions.flatMap(t=>t.actionBarButtons??[]))}}),Ff={class:"flex h-full shrink-0 items-center gap-1"},Uf={key:0},Gf=H({__name:"ActionBarButtons",setup(e){const o=Bf(),s=Jo(Yo).smaller("sm");return(a,l)=>{const i=Se("tooltip");return m(),N("div",Ff,[(m(!0),N(le,null,be(C(o).buttons,(r,u)=>ue((m(),F(ee,{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:L(()=>[f("i",{class:Q(r.icon)},null,2),!C(s)&&r.label?(m(),N("span",Uf,z(r.label),1)):O("",!0)]),_:2},1032,["aria-label","class","onClick"])),[[i,r.tooltip,void 0,{bottom:!0}]])),128))])}}}),jf={class:"current-user-popover w-80 -m-3 p-2 rounded-lg border border-border-default bg-base-background shadow-[1px_1px_8px_0_rgba(0,0,0,0.4)]"},Hf={class:"flex flex-col items-center px-0 py-3 mb-4"},qf={class:"my-0 mb-1 truncate text-base font-bold text-base-foreground"},Kf={key:0,class:"my-0 truncate text-sm text-muted"},Jf={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"},Yf={key:0,class:"flex items-center gap-2 px-4 py-2"},Qf={key:1,class:"text-base font-semibold text-base-foreground"},Xf={class:"icon-[lucide--circle-help] cursor-help text-base text-muted-foreground mr-auto"},Zf={key:1,class:"flex justify-center px-4"},em={class:"text-sm text-base-foreground flex-1"},tm={class:"text-sm text-base-foreground flex-1"},om={key:0,class:"text-xs font-bold text-base-background bg-base-foreground px-1.5 py-0.5 rounded-full"},nm={class:"text-sm text-base-foreground flex-1"},sm={class:"text-sm text-base-foreground flex-1"},am={class:"text-sm text-base-foreground flex-1"},lm=H({__name:"CurrentUserPopover",emits:["close"],setup(e,{emit:o}){const t=o,{buildDocsUrl:s,docsPaths:a}=so(),{userDisplayName:l,userEmail:i,userPhotoUrl:r,handleSignOut:u}=ao(),p=Wa(),v=za(),h=et(),{isActiveSubscription:d,subscriptionTierName:b,subscriptionTier:y,fetchStatus:g}=Kn(),c=Qc(),{locale:w}=de(),_=k(()=>{const G=v.balance?.effective_balance_micros??v.balance?.amount_micros??0;return Ni({cents:G,locale:w.value,numberOptions:{minimumFractionDigits:0,maximumFractionDigits:2}})}),S=k(()=>{const G=y.value;return G==="FOUNDERS_EDITION"||G==="STANDARD"||G==="CREATOR"}),x=n(()=>{h.showSettingsDialog("user"),t("close")},"handleOpenUserSettings"),D=n(()=>{c.show(),t("close")},"handleOpenPlansAndPricing"),P=n(()=>{h.showSettingsDialog("credits"),t("close")},"handleOpenPlanAndCreditsSettings"),T=n(()=>{h.showTopUpCreditsDialog(),t("close")},"handleTopUp"),$=n(()=>{window.open(s(a.partnerNodesPricing,{includeLocale:!0}),"_blank"),t("close")},"handleOpenPartnerNodesInfo"),I=n(async()=>{await u(),t("close")},"handleLogout"),B=n(async()=>{await g()},"handleSubscribed");return Le(()=>{p.fetchBalance()}),(G,M)=>{const V=Se("tooltip");return m(),N("div",jf,[f("div",Hf,[W(nl,{class:"mb-1","photo-url":C(r),"pt:icon:class":{"text-2xl!":!C(r)},size:"large"},null,8,["photo-url","pt:icon:class"]),f("h3",qf,z(C(l)||G.$t("g.user")),1),C(i)?(m(),N("p",Kf,z(C(i)),1)):O("",!0),C(b)?(m(),N("span",Jf,z(C(b)),1)):O("",!0)]),C(d)?(m(),N("div",Yf,[M[0]||(M[0]=f("i",{class:"icon-[lucide--component] text-amber-400 text-sm"},null,-1)),C(v).isFetchingBalance?(m(),F(C(jn),{key:0,width:"4rem",height:"1.25rem",class:"w-full"})):(m(),N("span",Qf,z(_.value),1)),ue(f("i",Xf,null,512),[[V,{value:G.$t("credits.unified.tooltip"),showDelay:300}]]),W(ee,{variant:"secondary",size:"sm",class:"text-base-foreground","data-testid":"add-credits-button",onClick:T},{default:L(()=>[_e(z(G.$t("subscription.addCredits")),1)]),_:1})])):(m(),N("div",Zf,[W(Yc,{fluid:!1,label:G.$t("subscription.subscribeToComfyCloud"),size:"sm",variant:"gradient",onSubscribed:B},null,8,["label"])])),W(C(Ss),{class:"my-2 mx-0"}),C(d)?(m(),N("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:$},[M[1]||(M[1]=f("i",{class:"icon-[lucide--tag] text-muted-foreground text-sm"},null,-1)),f("span",em,z(G.$t("subscription.partnerNodesCredits")),1)])):O("",!0),f("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:D},[M[2]||(M[2]=f("i",{class:"icon-[lucide--receipt-text] text-muted-foreground text-sm"},null,-1)),f("span",tm,z(G.$t("subscription.plansAndPricing")),1),S.value?(m(),N("span",om,z(G.$t("subscription.upgrade")),1)):O("",!0)]),C(d)?(m(),N("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:P},[M[3]||(M[3]=f("i",{class:"icon-[lucide--file-text] text-muted-foreground text-sm"},null,-1)),f("span",nm,z(G.$t("subscription.managePlan")),1)])):O("",!0),f("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:x},[M[4]||(M[4]=f("i",{class:"icon-[lucide--settings-2] text-muted-foreground text-sm"},null,-1)),f("span",sm,z(G.$t("userSettings.accountSettings")),1)]),W(C(Ss),{class:"my-2 mx-0"}),f("div",{class:"flex items-center gap-2 px-4 py-2 cursor-pointer hover:bg-secondary-background-hover","data-testid":"logout-menu-item",onClick:I},[M[5]||(M[5]=f("i",{class:"icon-[lucide--log-out] text-muted-foreground text-sm"},null,-1)),f("span",am,z(G.$t("auth.signOut.signOut")),1)])])}}}),im={class:"flex items-center gap-1 rounded-full hover:bg-interface-button-hover-surface"},cl=H({__name:"CurrentUserButton",setup(e){const{isLoggedIn:o,userPhotoUrl:t}=ao(),s=E(null),a=k(()=>t.value??void 0),l=n(()=>{s.value?.hide()},"closePopover");return(i,r)=>(m(),N("div",null,[C(o)?(m(),F(ee,{key:0,class:"p-1 hover:bg-transparent",variant:"muted-textonly","aria-label":i.$t("g.currentUser"),onClick:r[0]||(r[0]=u=>s.value?.toggle(u))},{default:L(()=>[f("div",im,[W(nl,{"photo-url":a.value},null,8,["photo-url"]),r[1]||(r[1]=f("i",{class:"icon-[lucide--chevron-down] size-3 px-1"},null,-1))])]),_:1},8,["aria-label"])):O("",!0),W(C(Ze),{ref_key:"popover",ref:s,"show-arrow":!1,pt:{root:{class:"rounded-lg"}}},{default:L(()=>[W(lm,{onClose:l})]),_:1},512)]))}}),rm={class:"mb-1"},um=["href"],dl=H({__name:"LoginButton",setup(e){const{isLoggedIn:o,handleSignIn:t}=ao(),{buildDocsUrl:s}=so(),a=s("/tutorials/api-nodes/overview#api-nodes",{includeLocale:!0}),l=E(null);let i=null,r=null;const u=n(h=>{i&&(clearTimeout(i),i=null),r&&(clearTimeout(r),r=null),r=setTimeout(()=>{l.value&&l.value.show(h,h.target)},200)},"showPopover"),p=n(()=>{i&&(clearTimeout(i),i=null)},"cancelHidePopover"),v=n(()=>{r&&(clearTimeout(r),r=null),i=setTimeout(()=>{l.value&&l.value.hide()},150)},"hidePopover");return(h,d)=>(m(),N(le,null,[C(o)?O("",!0):(m(),F(ee,{key:0,variant:"secondary",size:"icon",class:"rounded-full bg-secondary-background text-base-foreground hover:bg-secondary-background-hover","aria-label":C(re)("g.login"),onClick:d[0]||(d[0]=b=>C(t)()),onMouseenter:u,onMouseleave:v},{default:L(()=>d[1]||(d[1]=[f("i",{class:"icon-[lucide--user] size-4"},null,-1)])),_:1},8,["aria-label"])),W(C(Ze),{ref_key:"popoverRef",ref:l,class:"p-2",onMouseout:v,onMouseover:p},{default:L(()=>[f("div",null,[f("div",rm,z(C(re)("auth.loginButton.tooltipHelp")),1),f("a",{href:C(a),target:"_blank",class:"text-neutral-500 hover:text-primary"},z(C(re)("auth.loginButton.tooltipLearnMore")),9,um)])]),_:1},512)],64))}}),cm={class:"min-w-0 flex-1"},dm={class:"mx-1 flex flex-col items-end gap-1"},pm={class:"flex items-center gap-2"},fm={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"},mm={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"},vm={key:0,class:"absolute -top-1 -right-1 min-w-[16px] rounded-full bg-primary-background py-0.25 text-[10px] font-medium leading-[14px] text-white"},gm=H({__name:"TopMenuSection",setup(e){const o=tt(),t=to(),s=pt(),{isLoggedIn:a}=ao(),l=Be(),{t:i}=de(),{toastErrorHandler:r}=Wt(),u=E(!1),p=St(),v=E(!1),h=k(()=>p.pendingTasks.length),d=k(()=>Xe(i("sideToolbar.queueProgressOverlay.viewJobHistory"))),b=k(()=>Xe(i("menu.customNodesManager"))),{isOpen:y}=Fe(t),g=k(()=>Xe(i("rightSidePanel.togglePanel"))),c=E();Le(()=>{c.value&&(J.menu.element.style.width="fit-content",c.value.appendChild(J.menu.element))});const w=n(()=>{u.value=!u.value},"toggleQueueOverlay"),_=n(async()=>{try{await s.openManager({initialTab:Jt.All,showToastOnLegacyError:!1})}catch(S){try{r(S)}catch(x){console.error(S),console.error(x)}}},"openCustomNodeManager");return(S,x)=>{const D=Se("tooltip");return C(o).focusMode?O("",!0):(m(),N("div",{key:0,class:"ml-1 flex gap-x-0.5 pt-1",onMouseenter:x[1]||(x[1]=P=>v.value=!0),onMouseleave:x[2]||(x[2]=P=>v.value=!1)},[f("div",cm,[W(yd)]),f("div",dm,[f("div",pm,[C(s).shouldShowManagerButtons.value?(m(),N("div",fm,[ue((m(),F(ee,{variant:"secondary",size:"icon","aria-label":C(i)("menu.customNodesManager"),onClick:_},{default:L(()=>x[3]||(x[3]=[f("i",{class:"icon-[lucide--puzzle] size-4"},null,-1)])),_:1},8,["aria-label"])),[[D,b.value,void 0,{bottom:!0}]])])):O("",!0),f("div",mm,[W(Gf),f("div",{ref_key:"legacyCommandsContainerRef",ref:c,class:"[&:not(:has(*>*:not(:empty)))]:hidden"},null,512),W(rd),ue((m(),F(ee,{type:"destructive",size:"icon","aria-pressed":u.value,"aria-label":C(i)("sideToolbar.queueProgressOverlay.expandCollapsedQueue"),onClick:w},{default:L(()=>[x[4]||(x[4]=f("i",{class:"icon-[lucide--history] size-4"},null,-1)),h.value>0?(m(),N("span",vm,z(h.value),1)):O("",!0)]),_:1},8,["aria-pressed","aria-label"])),[[D,d.value,void 0,{bottom:!0}]]),C(a)?(m(),F(cl,{key:0,class:"shrink-0"})):C(l)?(m(),F(dl,{key:1})):O("",!0),C(y)?O("",!0):ue((m(),F(ee,{key:2,type:"secondary",size:"icon","aria-label":C(i)("rightSidePanel.togglePanel"),onClick:C(t).togglePanel},{default:L(()=>x[5]||(x[5]=[f("i",{class:"icon-[lucide--panel-right] size-4"},null,-1)])),_:1},8,["aria-label","onClick"])),[[D,g.value,void 0,{bottom:!0}]])])]),W(zf,{expanded:u.value,"onUpdate:expanded":x[0]||(x[0]=P=>u.value=P),"menu-hovered":v.value},null,8,["expanded","menu-hovered"])])],32))}}}),ls=H({__name:"ExtensionSlot",props:{extension:{}},setup(e){const o=e,t=n((s,a)=>{s.render(a)},"mountCustomExtension");return gt(()=>{o.extension.type==="custom"&&o.extension.destroy&&o.extension.destroy()}),(s,a)=>s.extension.type==="vue"?(m(),F(Qt(s.extension.component),{key:0})):(m(),N("div",{key:1,ref:n(l=>{l&&t(o.extension,l)},"ref")},null,512))}}),hm={class:"flex h-full flex-col"},ym={class:"flex w-full justify-between"},bm={class:"tabs-container font-inter"},wm={class:"font-normal"},km={class:"flex items-center gap-2"},Cm={class:"h-0 grow"},Sm=H({__name:"BottomPanel",setup(e){const o=oo(),t=et(),{t:s}=de(),a=k(()=>{const p=o.activeBottomPanelTabId;return p==="shortcuts-essentials"||p==="shortcuts-view-controls"}),l=n(p=>p!=="shortcuts-essentials"&&p!=="shortcuts-view-controls","shouldCapitalizeTab"),i=n(p=>{const v=p.titleKey?s(p.titleKey):p.title||"";return l(p.id)?v.toUpperCase():v},"getTabDisplayTitle"),r=n(async()=>{t.showSettingsDialog("keybinding")},"openKeybindingSettings"),u=n(()=>{o.activePanel=null},"closeBottomPanel");return(p,v)=>(m(),N("div",hm,[(m(),F(C(si),{key:p.$i18n.locale,value:C(o).activeBottomPanelTabId,"onUpdate:value":v[0]||(v[0]=h=>C(o).activeBottomPanelTabId=h),style:{"--p-tabs-tablist-background":"var(--comfy-menu-bg)"}},{default:L(()=>[W(C(ai),{"pt:tab-list":"border-none h-full flex items-center py-2 border-b-1 border-solid",class:"bg-transparent"},{default:L(()=>[f("div",ym,[f("div",bm,[(m(!0),N(le,null,be(C(o).bottomPanelTabs,h=>(m(),F(C(li),{key:h.id,value:h.id,class:Q(["m-1 mx-2 border-none font-inter",{"tab-list-single-item":C(o).bottomPanelTabs.length===1}]),"pt:root":n(d=>({class:{"p-3 rounded-lg":!0,"pointer-events-none":C(o).bottomPanelTabs.length===1},style:{color:"var(--fg-color)",backgroundColor:!d.context.active||C(o).bottomPanelTabs.length===1?"":"var(--bg-color)"}}),"pt:root")},{default:L(()=>[f("span",wm,z(i(h)),1)]),_:2},1032,["value","class","pt:root"]))),128))]),f("div",km,[a.value?(m(),F(ee,{key:0,variant:"muted-textonly",size:"sm",onClick:r},{default:L(()=>[v[1]||(v[1]=f("i",{class:"pi pi-cog"},null,-1)),_e(" "+z(p.$t("shortcuts.manageShortcuts")),1)]),_:1})):O("",!0),W(ee,{class:"justify-self-end",variant:"muted-textonly",size:"sm","aria-label":C(s)("g.close"),onClick:u},{default:L(()=>v[2]||(v[2]=[f("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])])]),_:1})]),_:1},8,["value"])),f("div",Cm,[C(o).bottomPanelVisible&&C(o).activeBottomPanelTab?(m(),F(ls,{key:0,extension:C(o).activeBottomPanelTab},null,8,["extension"])):O("",!0)])]))}}),xm=De(Sm,[["__scopeId","data-v-9d1ea2c9"]]);function pl(e={}){const{useTransform:o=!1}=e,s=fe().getCanvas(),{canvasPosToClientPos:a,update:l}=$i(s.canvas,s),i=ie();se([()=>i.get("Comfy.Sidebar.Location"),()=>i.get("Comfy.Sidebar.Size"),()=>i.get("Comfy.UseNewMenu")],()=>l(),{flush:"post"});const r=E({}),u=n(v=>{const{pos:h,size:d,scale:b=s.ds.scale}=v,[y,g]=a(h),[c,w]=d;return o?{position:"fixed",transformOrigin:"0 0",transform:`scale(${b})`,left:`${y}px`,top:`${g}px`,width:`${c}px`,height:`${w}px`}:{position:"fixed",left:`${y}px`,top:`${g}px`,width:`${c*b}px`,height:`${w*b}px`}},"computeStyle");return{style:r,updatePosition:n(v=>{r.value=u(v)},"updatePosition")}}n(pl,"useAbsolutePosition");function _m(e,o){const t=Math.max(e.x,o.x),s=Math.max(e.y,o.y),a=Math.min(e.x+e.width,o.x+o.width),l=Math.min(e.y+e.height,o.y+o.height);return t>=a||s>=l?null:[t,s,a-t,l-s]}n(_m,"intersect");const Tm=n((e={})=>{const o=E({}),{margin:t=4}=e,s=n((l,i,r,u)=>{if(!r&&u){const{scale:p,offset:v}=u,h=_m({x:l.left-i.left,y:l.top-i.top,width:l.width,height:l.height},{x:(u.x+v[0]-t)*p,y:(u.y+v[1]-t)*p,width:(u.width+2*t)*p,height:(u.height+2*t)*p});if(!h)return"";const d=(h[0]-l.left+i.left)/p+"px",b=(h[1]-l.top+i.top)/p+"px",y=h[2]/p+"px",g=h[3]/p+"px";return`polygon(0% 0%, 0% 100%, ${d} 100%, ${d} ${b}, calc(${d} + ${y}) ${b}, calc(${d} + ${y}) calc(${b} + ${g}), ${d} calc(${b} + ${g}), ${d} 100%, 100% 100%, 100% 0%)`}return""},"calculateClipPath");return{style:o,updateClipPath:n((l,i,r,u)=>{const p=l.getBoundingClientRect(),v=i.getBoundingClientRect(),h=s(p,v,r,u);o.value={clipPath:h||"none",willChange:"clip-path"}},"updateClipPath")}},"useDomClipping"),Nm=["title"],$m=H({__name:"DomWidget",props:{widgetState:{}},emits:["update:widgetValue"],setup(e,{emit:o}){const t=e.widgetState.widget,s=o,a=E(),l=E({}),{style:i,updatePosition:r}=pl({useTransform:!0}),{style:u,updateClipPath:p}=Tm(),v=fe(),h=ie(),d=k(()=>h.get("Comfy.DOMClippingEnabled")),b=n(()=>{const S=v.canvas;if(!S||!a.value)return;const x=Object.values(S.selected_nodes??{})[0];if(!x){p(a.value,S.canvas,!1,void 0);return}const D=x===e.widgetState.widget.node,P=x?.renderArea,T=S.ds.offset,$=S.ds.scale,I=P?{x:P[0],y:P[1],width:P[2],height:P[3],scale:$,offset:[T[0],T[1]]}:void 0;p(a.value,S.canvas,D,I)},"updateDomClipping"),{left:y,top:g}=Un(v.getCanvas().canvas);se([()=>e.widgetState,y,g],([S,x,D])=>{r(S),d.value&&b(),l.value={...i.value,...d.value?u.value:{},zIndex:S.zIndex,pointerEvents:S.readonly||t.computedDisabled?"none":"auto",opacity:t.computedDisabled?.5:1}},{deep:!0}),se(()=>e.widgetState.visible,(S,x)=>{!S&&x&&t.options.onHide?.(t)}),Ae(document,"mousedown",S=>{!fo(t)||!e.widgetState.visible||!t.element.blur||t.element.contains(S.target)||t.element.blur()}),Le(()=>{fo(t)&&Ae(t.element,t.options.selectOn??["focus","click"],()=>{const S=v.canvas;S?.selectNode(e.widgetState.widget.node),S?.bringToFront(e.widgetState.widget.node)})});const w=t.node.constructor.nodeData?.inputs?.[t.name]?.tooltip,_=n(()=>{e.widgetState.visible&&fo(t)&&a.value&&(a.value.contains(t.element)||a.value.appendChild(t.element))},"mountElementIfVisible");return Le(()=>{Oe(()=>{_()}).catch(S=>{console.error("Error mounting DOM widget element:",S)})}),se(()=>e.widgetState.visible,()=>{_()}),(S,x)=>ue((m(),N("div",{ref_key:"widgetElement",ref:a,class:"dom-widget",title:C(w),style:ve(l.value)},[C(Ii)(C(t))?(m(),F(Qt(C(t).component),$t({key:0,"model-value":C(t).value,widget:C(t)},C(t).props,{"onUpdate:modelValue":x[0]||(x[0]=D=>s("update:widgetValue",D))}),null,16,["model-value","widget"])):O("",!0)],12,Nm)),[[Ye,S.widgetState.visible]])}}),Im=De($m,[["__scopeId","data-v-781496d2"]]),Mm={class:"isolate"},Pm=H({__name:"DomWidgets",setup(e){const o=Mi(),t=k(()=>[...o.widgetStates.values()]),s=n(()=>{const l=a.canvas;if(!l)return;const i=l.low_quality,r=l.graph;for(const u of t.value){const p=u.widget;if(!p.isVisible()||!u.active){u.visible=!1;continue}const v=p.node,h=r?.nodes.includes(v);if(u.visible=!!h&&l.isNodeVisible(v)&&!(p.options.hideOnZoom&&i),u.visible&&v){const d=p.margin;u.pos=[v.pos[0]+d,v.pos[1]+d+p.y],u.size=[(p.width??v.width)-d*2,(p.computedHeight??50)-d*2],u.zIndex=l.graph?.nodes.indexOf(v)??-1,u.readonly=l.read_only}}},"updateWidgets"),a=fe();return ko(()=>a.canvas,l=>l.onDrawForeground=Xt(l.onDrawForeground,s),{immediate:!0}),(l,i)=>(m(),N("div",Mm,[(m(!0),N(le,null,be(t.value,r=>(m(),F(Im,{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 Dm(){const e=E(!1),o=n(()=>{e.value=!0},"showModal"),t=n(()=>{e.value=!1},"hideModal"),s=n(()=>{e.value=!e.value},"toggleModal"),a=k(()=>e.value);return{isModalVisible:e,showModal:o,hideModal:t,toggleModal:s,hasActivePopup:a}}n(Dm,"useZoomControls");function Am(e,o){const t=new Map,s=E(""),a=E(0),l=E({bounds:!1,nodes:!1,connections:!1,viewport:!1}),i=Me.getVersion(),r=new Map,u=Wl(()=>{o()},500),p=n(()=>{const g=e.value;if(!g||r.has(g.id))return;const c={onNodeAdded:g.onNodeAdded,onNodeRemoved:g.onNodeRemoved,onConnectionChange:g.onConnectionChange,onTrigger:g.onTrigger};r.set(g.id,c),g.onNodeAdded=function(w){c.onNodeAdded?.call(this,w),u()},g.onNodeRemoved=function(w){c.onNodeRemoved?.call(this,w),t.delete(w.id),u()},g.onConnectionChange=function(w){c.onConnectionChange?.call(this,w),u()},g.onTrigger=function(w){c.onTrigger?.call(this,w),w.type==="node:property:changed"&&(w.property==="mode"||w.property==="bgcolor"||w.property==="color")&&(t.delete(String(w.nodeId)),u())}},"setupEventListeners"),v=n(g=>{const c=g||e.value;if(!c)return;const w=r.get(c.id);if(!w){console.error("Attempted to cleanup event listeners for graph that was never set up");return}c.onNodeAdded=w.onNodeAdded,c.onNodeRemoved=w.onNodeRemoved,c.onConnectionChange=w.onConnectionChange,c.onTrigger=w.onTrigger,r.delete(c.id)},"cleanupEventListeners");return{updateFlags:l,setupEventListeners:p,cleanupEventListeners:v,checkForChanges:n(()=>{const g=e.value;if(!g)return!1;let c=!1,w=!1,_=!1;const S=Ba.create(g),x=S.getNodeCount();x!==a.value&&(c=!0,a.value=x);const D=S.getNodes();for(const $ of D){const I=$.id,B=`${$.x},${$.y},${$.width},${$.height}`;t.get(I)!==B&&(w=!0,t.set(I,B))}const P=new Set(D.map($=>$.id));for(const[$]of t)P.has($)||(t.delete($),c=!0);const T=JSON.stringify(g.links||{});return T!==s.value&&(_=!0,s.value=T),(c||w)&&(l.value.bounds=!0,l.value.nodes=!0),_&&(l.value.connections=!0),c||w||_},"checkForChangesInternal"),init:n(()=>{p(),we.addEventListener("graphChanged",u),se(i,()=>{u()})},"init"),destroy:n(()=>{v(),we.removeEventListener("graphChanged",u),t.clear()},"destroy"),clearCache:n(()=>{t.clear(),s.value="",a.value=0},"clearCache")}}n(Am,"useMinimapGraph");function Em(e,o,t,s,a,l,i){const r=E(!1),u=E({left:0,top:0,width:s,height:a}),p=n(()=>{if(!e.value)return;const c=e.value.getBoundingClientRect();u.value={left:c.left,top:c.top,width:c.width,height:c.height}},"updateContainerRect"),v=n(c=>{r.value=!0,p();const w=c.currentTarget;w instanceof HTMLElement&&w.setPointerCapture(c.pointerId),h(c)},"handlePointerDown"),h=n(c=>{if(!r.value||!i.value)return;const w=c.clientX-u.value.left,_=c.clientY-u.value.top,S=(s-o.value.width*t.value)/2,x=(a-o.value.height*t.value)/2,D=(w-S)/t.value+o.value.minX,P=(_-x)/t.value+o.value.minY;l(D,P)},"handlePointerMove"),d=n(c=>{if(r.value=!1,!c)return;const w=c.currentTarget;w instanceof HTMLElement&&w.hasPointerCapture(c.pointerId)&&w.releasePointerCapture(c.pointerId)},"releasePointer");return{isDragging:r,containerRect:u,updateContainerRect:p,handlePointerDown:v,handlePointerMove:h,handlePointerUp:d,handlePointerCancel:d,handleWheel:n(c=>{c.preventDefault();const w=i.value;if(!w)return;u.value.left===0&&u.value.top===0&&e.value&&p();const _=w.ds,S=c.deltaY>0?.9:1.1,x=_.scale*S;if(x<.1||x>10)return;const T=c.clientX-u.value.left,$=c.clientY-u.value.top,I=(s-o.value.width*t.value)/2,B=(a-o.value.height*t.value)/2,G=(T-I)/t.value+o.value.minX,M=($-B)/t.value+o.value.minY;_.scale=x,l(G,M)},"handleWheel")}}n(Em,"useMinimapInteraction");function Lm(e,o,t,s,a,l,i,r){const u=E(!0),p=E(!0),v=n(()=>{const b=o.value;if(!e.value||!b)return;const y=e.value.getContext("2d");if(!y)return;if(!b._nodes||b._nodes.length===0){y.clearRect(0,0,i,r);return}(u.value||a.value.nodes||a.value.connections)&&(Pi(e.value,b,{bounds:t.value,scale:s.value,settings:{nodeColors:l.nodeColors.value,showLinks:l.showLinks.value,showGroups:l.showGroups.value,renderBypass:l.renderBypass.value,renderError:l.renderError.value},width:i,height:r}),u.value=!1,a.value.nodes=!1,a.value.connections=!1)},"renderMinimap");return{needsFullRedraw:u,needsBoundsUpdate:p,renderMinimap:v,updateMinimap:n((b,y)=>{(p.value||a.value.bounds)&&(b(),p.value=!1,a.value.bounds=!1,u.value=!0,a.value.viewport=!0),(u.value||a.value.nodes||a.value.connections)&&v(),a.value.viewport&&(y(),a.value.viewport=!1)},"updateMinimap"),forceFullRedraw:n(()=>{u.value=!0,a.value.bounds=!0,a.value.nodes=!0,a.value.connections=!0,a.value.viewport=!0},"forceFullRedraw")}}n(Lm,"useMinimapRenderer");function Vm(){const e=ie(),o=it(),t=k(()=>e.get("Comfy.Minimap.NodeColors")),s=k(()=>e.get("Comfy.Minimap.ShowLinks")),a=k(()=>e.get("Comfy.Minimap.ShowGroups")),l=k(()=>e.get("Comfy.Minimap.RenderBypassState")),i=k(()=>e.get("Comfy.Minimap.RenderErrorState")),r=253,u=200,p=k(()=>o.completedActivePalette.light_theme),v=k(()=>({width:`${r}px`,height:`${u}px`,border:"1px solid var(--interface-stroke)",borderRadius:"8px"})),h=k(()=>({width:"210px",height:`${u}px`,border:"1px solid var(--interface-stroke)",borderRadius:"8px"}));return{nodeColors:t,showLinks:s,showGroups:a,renderBypass:l,renderError:i,containerStyles:v,panelStyles:h,isLightTheme:p}}n(Vm,"useMinimapSettings");function Om(e,o,t,s){const a=E({minX:0,minY:0,maxX:0,maxY:0,width:0,height:0}),l=E(1),i=E({x:0,y:0,width:0,height:0}),r=E({width:0,height:0}),u=n(()=>{const c=e.value;if(!c)return;const w=c.canvas,_=window.devicePixelRatio||1;r.value={width:w.clientWidth||w.width/_,height:w.clientHeight||w.height/_}},"updateCanvasDimensions"),p=n(()=>{const c=Ba.create(o.value);if(!c.hasData())return{minX:0,minY:0,maxX:100,maxY:100,width:100,height:100};const w=c.getBounds();return Di(w)},"calculateGraphBounds"),v=n(()=>Ai(a.value,t,s),"calculateScale"),h=n(()=>{const c=e.value;if(!c)return;(r.value.width===0||r.value.height===0)&&u();const w=c.ds,_=r.value.width/w.scale,S=r.value.height/w.scale,x=-w.offset[0],D=-w.offset[1],P=(t-a.value.width*l.value)/2,T=(s-a.value.height*l.value)/2;i.value={x:(x-a.value.minX)*l.value+P,y:(D-a.value.minY)*l.value+T,width:_*l.value,height:S*l.value}},"updateViewport"),d=n(()=>{a.value=p(),l.value=v()},"updateBounds"),b=n((c,w)=>{const _=e.value;if(!_)return;(r.value.width===0||r.value.height===0)&&u();const S=_.ds,x=r.value.width/S.scale,D=r.value.height/S.scale;S.offset[0]=-(c-x/2),S.offset[1]=-(w-D/2),_.setDirty(!0,!0)},"centerViewOn"),{resume:y,pause:g}=eo(h);return{bounds:k(()=>a.value),scale:k(()=>l.value),viewportTransform:k(()=>i.value),canvasDimensions:k(()=>r.value),updateCanvasDimensions:u,updateViewport:h,updateBounds:d,centerViewOn:b,startViewportSync:y,stopViewportSync:g}}n(Om,"useMinimapViewport");function is({canvasRefMaybe:e,containerRefMaybe:o}={}){const t=fe(),s=Pe(),a=ie(),l=E(null),i=e??Je(null),r=o??Je(null),u=E(!0),p=E(!1),v=250,h=200,d=k(()=>t.canvas),b=k(()=>s.activeSubgraph||d.value?.graph),y=Vm(),{nodeColors:g,showLinks:c,showGroups:w,renderBypass:_,renderError:S,containerStyles:x,panelStyles:D}=y,P=n(async(K,ne)=>{await a.set(K,ne),B.forceFullRedraw(),B.updateMinimap(T.updateBounds,T.updateViewport)},"updateOption"),T=Om(d,b,v,h),$=Em(r,T.bounds,T.scale,v,h,T.centerViewOn,d),I=Am(b,()=>{B.forceFullRedraw(),B.updateMinimap(T.updateBounds,T.updateViewport)}),B=Lm(i,b,T.bounds,T.scale,I.updateFlags,y,v,h),{pause:G,resume:M}=eo(async()=>{u.value&&await I.checkForChanges()&&B.updateMinimap(T.updateBounds,T.updateViewport)},{immediate:!1}),V=n(async()=>{p.value||(u.value=a.get("Comfy.Minimap.Visible"),d.value&&b.value&&(I.init(),r.value&&$.updateContainerRect(),T.updateCanvasDimensions(),window.addEventListener("resize",$.updateContainerRect),window.addEventListener("scroll",$.updateContainerRect),window.addEventListener("resize",T.updateCanvasDimensions),B.forceFullRedraw(),B.updateMinimap(T.updateBounds,T.updateViewport),T.updateViewport(),u.value&&(M(),T.startViewportSync()),p.value=!0))},"init"),U=n(()=>{G(),T.stopViewportSync(),I.destroy(),window.removeEventListener("resize",$.updateContainerRect),window.removeEventListener("scroll",$.updateContainerRect),window.removeEventListener("resize",T.updateCanvasDimensions),p.value=!1},"destroy");se(d,async(K,ne)=>{ne&&(I.cleanupEventListeners(),G(),T.stopViewportSync(),I.destroy(),window.removeEventListener("resize",$.updateContainerRect),window.removeEventListener("scroll",$.updateContainerRect),window.removeEventListener("resize",T.updateCanvasDimensions)),K&&!p.value&&await V()},{immediate:!0,flush:"post"}),se(b,(K,ne)=>{K&&K!==ne&&(I.cleanupEventListeners(ne||void 0),I.setupEventListeners(),B.forceFullRedraw(),B.updateMinimap(T.updateBounds,T.updateViewport))}),se(u,async K=>{K?(r.value&&$.updateContainerRect(),T.updateCanvasDimensions(),B.forceFullRedraw(),await Oe(),await Oe(),B.updateMinimap(T.updateBounds,T.updateViewport),T.updateViewport(),M(),T.startViewportSync()):(G(),T.stopViewportSync())});const R=n(async()=>{u.value=!u.value,await a.set("Comfy.Minimap.Visible",u.value)},"toggle"),j=n(K=>{l.value=K},"setMinimapRef"),q=k(()=>{const K=T.viewportTransform.value;return{transform:`translate(${K.x}px, ${K.y}px)`,width:`${K.width}px`,height:`${K.height}px`,border:`2px solid ${y.isLightTheme.value?"#E0E0E0":"#FFF"}`,backgroundColor:"rgba(255, 255, 255, 0.2)",willChange:"transform",backfaceVisibility:"hidden",perspective:"1000px",pointerEvents:"none"}});return{visible:k(()=>u.value),initialized:k(()=>p.value),containerStyles:x,viewportStyles:q,panelStyles:D,width:v,height:h,nodeColors:g,showLinks:c,showGroups:w,renderBypass:_,renderError:S,init:V,destroy:U,toggle:R,renderMinimap:B.renderMinimap,handlePointerDown:$.handlePointerDown,handlePointerMove:$.handlePointerMove,handlePointerUp:$.handlePointerUp,handlePointerCancel:$.handlePointerCancel,handleWheel:$.handleWheel,setMinimapRef:j,updateOption:P}}n(is,"useMinimap");const Rm={class:"flex items-center gap-1 pr-0.5"},Wm={class:"rounded-lg bg-interface-panel-selected-surface p-2 group-hover:bg-interface-button-hover-surface"},zm={class:"flex flex-col gap-1"},Bm={class:"flex items-center gap-2"},Fm={class:"text-[9px] text-text-primary"},Um={class:"flex items-center gap-2"},Gm={class:"text-[9px] text-text-primary"},jm=H({__name:"CanvasModeSelector",props:{buttonStyles:{}},setup(e){const o=E(),t=E(),s=Ce(),a=fe(),l=k(()=>a.canvas?.read_only??!1),i=k(()=>l.value?"icon-[lucide--hand]":"icon-[lucide--mouse-pointer-2]"),r=k(()=>s.formatKeySequence(s.getCommand("Comfy.Canvas.Unlock")).toUpperCase()),u=k(()=>s.formatKeySequence(s.getCommand("Comfy.Canvas.Lock")).toUpperCase()),p=n(d=>{const b=o.value?.$el||o.value;t.value?.toggle(d,b)},"toggle"),v=n(d=>{d==="select"&&l.value?s.execute("Comfy.Canvas.Unlock"):d==="hand"&&!l.value&&s.execute("Comfy.Canvas.Lock"),t.value?.hide()},"setMode"),h=k(()=>({root:{class:"absolute z-50 -translate-y-2"},content:{class:["mb-2 text-text-primary","shadow-lg border border-interface-stroke","bg-nav-background","rounded-lg","p-2 px-3","min-w-39","select-none"]}}));return(d,b)=>(m(),N(le,null,[W(ee,{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:ve(d.buttonStyles),onClick:p},{default:L(()=>[f("div",Rm,[f("div",Wm,[f("i",{class:Q([i.value,"block h-4 w-4"])},null,2)]),b[2]||(b[2]=f("i",{class:"icon-[lucide--chevron-down] block h-4 w-4 pr-1.5"},null,-1))])]),_:1},8,["style"]),W(C(Ze),{ref_key:"popover",ref:t,"auto-z-index":!0,"base-z-index":1e3,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:h.value},{default:L(()=>[f("div",zm,[f("div",{class:"flex cursor-pointer items-center justify-between px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onClick:b[0]||(b[0]=y=>v("select"))},[f("div",Bm,[b[3]||(b[3]=f("i",{class:"icon-[lucide--mouse-pointer-2] h-4 w-4"},null,-1)),f("span",null,z(d.$t("graphCanvasMenu.select")),1)]),f("span",Fm,z(r.value),1)]),f("div",{class:"flex cursor-pointer items-center justify-between rounded px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onClick:b[1]||(b[1]=y=>v("hand"))},[f("div",Um,[b[4]||(b[4]=f("i",{class:"icon-[lucide--hand] h-4 w-4"},null,-1)),f("span",null,z(d.$t("graphCanvasMenu.hand")),1)]),f("span",Gm,z(u.value),1)])])]),_:1},8,["pt"])],64))}}),Hm={key:0,class:"absolute right-0 bottom-[62px] z-1300 flex w-[250px] justify-center border-0! bg-inherit!"},qm={class:"flex flex-col gap-1"},Km={class:"font-medium"},Jm={class:"text-[9px] text-text-primary"},Ym={class:"font-medium"},Qm={class:"text-[9px] text-text-primary"},Xm={class:"font-medium"},Zm={class:"text-[9px] text-text-primary"},ev=H({__name:"ZoomControlsModal",props:{visible:{type:Boolean}},setup(e){const o=is(),t=Ce(),s=fe(),{formatKeySequence:a}=Ce(),l=e,i=E(null),r=n(c=>{const w=c.value;isNaN(w)||w<1||w>1e3||s.setAppZoomFromPercentage(w)},"applyZoom"),u=n(c=>{t.execute(c)},"executeCommand"),p=n(c=>{if(i.value)return;const w=n(()=>t.execute(c),"cmd");w(),i.value=window.setInterval(w,100)},"startRepeat"),v=n(()=>{i.value&&(clearInterval(i.value),i.value=null)},"stopRepeat"),h=k(()=>({...o.containerStyles.value,height:void 0,width:void 0})),d=k(()=>a(t.getCommand("Comfy.Canvas.ZoomIn"))),b=k(()=>a(t.getCommand("Comfy.Canvas.ZoomOut"))),y=k(()=>a(t.getCommand("Comfy.Canvas.FitView"))),g=E(null);return se(()=>l.visible,async c=>{c&&(await Oe(),g.value?.querySelector("input")?.focus())}),(c,w)=>c.visible?(m(),N("div",Hm,[f("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:ve(h.value),onClick:w[3]||(w[3]=ke(()=>{},["stop"]))},[f("div",qm,[f("div",{class:"flex cursor-pointer items-center justify-between rounded px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onMousedown:w[0]||(w[0]=_=>p("Comfy.Canvas.ZoomIn")),onMouseup:v,onMouseleave:v},[f("span",Km,z(c.$t("graphCanvasMenu.zoomIn")),1),f("span",Jm,z(d.value),1)],32),f("div",{class:"flex cursor-pointer items-center justify-between rounded px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onMousedown:w[1]||(w[1]=_=>p("Comfy.Canvas.ZoomOut")),onMouseup:v,onMouseleave:v},[f("span",Ym,z(c.$t("graphCanvasMenu.zoomOut")),1),f("span",Qm,z(b.value),1)],32),f("div",{class:"flex cursor-pointer items-center justify-between rounded px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onClick:w[2]||(w[2]=_=>u("Comfy.Canvas.FitView"))},[f("span",Xm,z(c.$t("zoomControls.zoomToFit")),1),f("span",Zm,z(y.value),1)]),f("div",{ref_key:"zoomInputContainer",ref:g,class:"zoomInputContainer flex items-center gap-1 rounded bg-input-surface p-2"},[W(C(ii),{"default-value":C(s).appScalePercentage,min:1,max:1e3,"show-buttons":!1,"use-grouping":!1,unstyled:!0,"input-class":"bg-transparent border-none outline-hidden text-sm shadow-none my-0 w-full",fluid:"",onInput:r,onKeyup:Yt(r,["enter"])},null,8,["default-value"]),w[4]||(w[4]=f("span",{class:"flex-shrink-0 text-sm text-text-primary"},"%",-1))],512)])],4)])):O("",!0)}}),tv={class:"inline-flex items-center gap-1 px-2 text-xs"},ov=H({__name:"GraphCanvasMenu",setup(e){const{t:o}=de(),t=Ce(),{formatKeySequence:s}=Ce(),a=fe(),l=ie(),i=lo(),r=is(),{isModalVisible:u,toggleModal:p,hideModal:v,hasActivePopup:h}=Dm(),d=k(()=>{const I=["borderRadius"],B=["borderRadius"],G={border:"none"},M=r.containerStyles.value,V={...Object.fromEntries(Object.entries(M).filter(([R])=>B.includes(R))),...G},U=Object.entries(M).filter(([R])=>I.includes(R)).reduce((R,[j,q])=>({...R,[j]:q}),{});return{buttonStyles:V,buttonGroupStyles:U}}),b=k(()=>l.get("Comfy.LinkRenderMode")===me.HIDDEN_LINK),y=k(()=>s(t.getCommand("Comfy.Canvas.FitView")).toUpperCase()),g=k(()=>s(t.getCommand("Comfy.Canvas.ToggleMinimap")).toUpperCase()),c=k(()=>["bg-comfy-menu-bg",u.value?"not-active:bg-interface-panel-selected-surface!":"","hover:bg-interface-button-hover-surface!","p-0","h-8","w-15"]),w=k(()=>({"bg-comfy-menu-bg":!0,"hover:bg-interface-button-hover-surface!":!0,"not-active:bg-interface-panel-selected-surface!":l.get("Comfy.Minimap.Visible"),"p-0":!0,"w-8":!0,"h-8":!0})),_=k(()=>{const I=o("graphCanvasMenu.fitView"),B=y.value;return B?`${I} (${B})`:I}),S=k(()=>{const I=l.get("Comfy.Minimap.Visible")?o("zoomControls.hideMinimap"):o("zoomControls.showMinimap"),B=g.value;return B?`${I} (${B})`:I}),x=k(()=>b.value?o("graphCanvasMenu.showLinks"):o("graphCanvasMenu.hideLinks")),D=k(()=>b.value?o("graphCanvasMenu.showLinks"):o("graphCanvasMenu.hideLinks")),P=k(()=>["bg-comfy-menu-bg",b.value?"not-active:bg-interface-panel-selected-surface!":"","hover:bg-interface-button-hover-surface!","p-0","w-8","h-8"]);Le(()=>{a.initScaleSync()});const T=n(()=>{t.execute("Comfy.Canvas.ToggleMinimap")},"onMinimapToggleClick"),$=n(()=>{t.execute("Comfy.Canvas.ToggleLinkVisibility")},"onLinkVisibilityToggleClick");return gt(()=>{a.cleanupScaleSync()}),(I,B)=>{const G=Se("tooltip");return m(),N("div",null,[W(ev,{visible:C(u),onClose:C(v)},null,8,["visible","onClose"]),C(h)?(m(),N("div",{key:0,class:"fixed inset-0 z-1200",onClick:B[0]||(B[0]=(...M)=>C(v)&&C(v)(...M))})):O("",!0),W(C(ri),{class:"absolute right-0 bottom-0 z-1200 flex-row gap-1 border-[1px] border-interface-stroke bg-comfy-menu-bg p-2",style:ve({...d.value.buttonGroupStyles}),onWheel:C(i).handleWheel},{default:L(()=>[W(jm,{"button-styles":d.value.buttonStyles},null,8,["button-styles"]),B[6]||(B[6]=f("div",{class:"h-[27px] w-[1px] self-center bg-node-divider"},null,-1)),ue((m(),F(ee,{variant:"secondary","aria-label":_.value,style:ve(d.value.buttonStyles),class:"h-8 w-8 bg-comfy-menu-bg p-0 hover:bg-interface-button-hover-surface!",onClick:B[1]||(B[1]=()=>C(t).execute("Comfy.Canvas.FitView"))},{default:L(()=>B[2]||(B[2]=[f("i",{class:"icon-[lucide--focus] h-4 w-4"},null,-1)])),_:1},8,["aria-label","style"])),[[G,_.value,void 0,{top:!0}]]),ue((m(),F(ee,{variant:"secondary",class:Q(c.value),"aria-label":C(o)("zoomControls.label"),"data-testid":"zoom-controls-button",style:ve(d.value.buttonStyles),onClick:C(p)},{default:L(()=>[f("span",tv,[f("span",null,z(C(a).appScalePercentage)+"%",1),B[3]||(B[3]=f("i",{class:"icon-[lucide--chevron-down] h-4 w-4"},null,-1))])]),_:1},8,["class","aria-label","style","onClick"])),[[G,C(o)("zoomControls.label"),void 0,{top:!0}]]),B[7]||(B[7]=f("div",{class:"h-[27px] w-[1px] self-center bg-node-divider"},null,-1)),ue((m(),F(ee,{variant:"secondary","aria-label":S.value,"data-testid":"toggle-minimap-button",style:ve(d.value.buttonStyles),class:Q(w.value),onClick:T},{default:L(()=>B[4]||(B[4]=[f("i",{class:"icon-[lucide--map] h-4 w-4"},null,-1)])),_:1},8,["aria-label","style","class"])),[[G,S.value,void 0,{top:!0}]]),ue((m(),F(ee,{variant:"secondary",class:Q(P.value),"aria-label":D.value,"data-testid":"toggle-link-visibility-button",style:ve(d.value.buttonStyles),onClick:$},{default:L(()=>B[5]||(B[5]=[f("i",{class:"icon-[lucide--route-off] h-4 w-4"},null,-1)])),_:1},8,["class","aria-label","style"])),[[G,{value:x.value,pt:{root:{style:"z-index: 2; transform: translateY(-20px);"}}},void 0,{top:!0}]])]),_:1},8,["style","onWheel"])])}}}),nv=H({__name:"NodeTooltip",setup(e){let o;const t=yt(),s=ie(),a=E(),l=E(""),i=E(),r=E();function u(){return l.value=""}n(u,"hideTooltip");async function p(d){if(!d)return;i.value=J.canvas.mouse[0]+"px",r.value=J.canvas.mouse[1]+"px",l.value=d,await Oe();const b=a.value?.getBoundingClientRect();b&&(b.right>window.innerWidth&&(i.value=J.canvas.mouse[0]-b.width+"px"),b.top<0&&(r.value=J.canvas.mouse[1]+b.height+"px"))}n(p,"showTooltip");function v(){const{canvas:d}=J,b=d?.node_over;if(!b)return;const y=b.constructor,g=t.nodeDefsByName[b.type??""];if(y.title_mode!==me.NO_TITLE&&d.graph_mouse[1]<b.pos[1])return p(g?.description);if(b.flags?.collapsed)return;const c=Ei(b,d.graph_mouse[0],d.graph_mouse[1],[0,0]);if(c!==-1){const S=b.inputs[c].name,x=ye(`nodeDefs.${Re(b.type??"")}.inputs.${Re(S)}.tooltip`,g?.inputs[S]?.tooltip??"");return p(x)}const w=Li(b,d.graph_mouse[0],d.graph_mouse[1],[0,0]);if(w!==-1){const S=ye(`nodeDefs.${Re(b.type??"")}.outputs.${w}.tooltip`,g?.outputs[w]?.tooltip??"");return p(S)}const _=J.canvas.getWidgetAtCursor();if(_&&!fo(_)){const S=ye(`nodeDefs.${Re(b.type??"")}.inputs.${Re(_.name)}.tooltip`,g?.inputs[_.name]?.tooltip??"");return p(_.tooltip??S)}}return n(v,"onIdle"),Ae(window,"mousemove",n(d=>{u(),clearTimeout(o),d.target.nodeName==="CANVAS"&&(o=window.setTimeout(v,s.get("LiteGraph.Node.TooltipDelay")))},"onMouseMove")),Ae(window,"click",u),(d,b)=>l.value?(m(),N("div",{key:0,ref_key:"tooltipRef",ref:a,class:"node-tooltip",style:ve({left:i.value,top:r.value})},z(l.value),5)):O("",!0)}}),sv=De(nv,[["__scopeId","data-v-96b1458a"]]),av=H({__name:"BypassButton",setup(e){const o=Ce(),t=n(async()=>{await o.execute("Comfy.Canvas.ToggleSelectedNodes.Bypass")},"toggleBypass");return(s,a)=>{const l=Se("tooltip");return ue((m(),F(ee,{variant:"muted-textonly","aria-label":s.$t("commands.Comfy_Canvas_ToggleSelectedNodes_Bypass.label"),"data-testid":"bypass-button",class:"hover:bg-secondary-background",onClick:t},{default:L(()=>a[0]||(a[0]=[f("i",{class:"icon-[lucide--redo-dot] size-4"},null,-1)])),_:1},8,["aria-label"])),[[l,{value:s.$t("commands.Comfy_Canvas_ToggleSelectedNodes_Bypass.label"),showDelay:1e3},void 0,{top:!0}]])}}}),lv={class:"relative"},iv={class:"flex items-center gap-1 px-0"},rv={key:0,class:"color-picker-container absolute -top-10 left-1/2"},uv=["data-testid"],cv=H({__name:"ColorPickerButton",setup(e){const{t:o}=de(),t=fe(),s=it(),a=Pe(),l=k(()=>s.completedActivePalette.light_theme),i=n(c=>Et(c,{lightness:.5}),"toLightThemeColor"),r=E(!1),u={name:"noColor",localizedName:o("color.noColor"),value:{dark:me.NODE_DEFAULT_BGCOLOR,light:i(me.NODE_DEFAULT_BGCOLOR)}},p=[u,...Object.entries(je.node_colors).map(([c,w])=>({name:c,localizedName:o(`color.${c}`),value:{dark:w.bgcolor,light:i(w.bgcolor)}}))],v=E(null),h=n(c=>{const w=c?.name??u.name,_=w===u.name?null:je.node_colors[w];for(const S of t.selectedItems)Ao(S)&&S.setColorOption(_);t.canvas?.setDirty(!0,!0),d.value=_,r.value=!1,a.activeWorkflow?.changeTracker.checkState()},"applyColor"),d=E(null),b=k(()=>d.value?l.value?i(d.value?.bgcolor):d.value?.bgcolor:null),y=k(()=>d.value?.bgcolor?p.find(w=>w.value.dark===d.value?.bgcolor||w.value.light===d.value?.bgcolor)?.localizedName??u.localizedName:null),g=n(c=>{r.value=!1,v.value=null,d.value=Vi(c)},"updateColorSelectionFromNode");return se(()=>t.selectedItems,c=>{g(c)},{immediate:!0}),(c,w)=>{const _=Se("tooltip");return m(),N("div",lv,[ue((m(),F(ee,{"data-testid":"color-picker-button",variant:"muted-textonly","aria-label":C(o)("g.color"),onClick:w[0]||(w[0]=()=>r.value=!r.value)},{default:L(()=>[f("div",iv,[f("i",{class:"pi pi-circle-fill",style:ve({color:b.value??""})},null,4),w[1]||(w[1]=f("i",{class:"icon-[lucide--chevron-down]"},null,-1))])]),_:1},8,["aria-label"])),[[_,{value:y.value??C(o)("color.noColor"),showDelay:1e3},void 0,{top:!0}]]),r.value?(m(),N("div",rv,[W(C(Ia),{"model-value":v.value,options:p,"option-label":"name","data-key":"value","onUpdate:modelValue":h},{option:L(({option:S})=>[ue(f("i",{class:"pi pi-circle-fill",style:ve({color:l.value?S.value.light:S.value.dark}),"data-testid":S.name},null,12,uv),[[_,S.localizedName,void 0,{top:!0}]])]),_:1},8,["model-value"])])):O("",!0)])}}}),dv=De(cv,[["__scopeId","data-v-2197e0a1"]]),pv=H({__name:"ConfigureSubgraph",setup(e){const o=to(),t=n(()=>{o.openPanel("subgraph")},"handleClick");return(s,a)=>{const l=Se("tooltip");return ue((m(),F(ee,{variant:"muted-textonly","aria-label":s.$t("commands.Comfy_Graph_EditSubgraphWidgets.label"),onClick:t},{default:L(()=>a[0]||(a[0]=[f("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["aria-label"])),[[l,{value:s.$t("commands.Comfy_Graph_EditSubgraphWidgets.label"),showDelay:1e3},void 0,{top:!0}]])}}}),fv=H({__name:"ConvertToSubgraphButton",setup(e){const o=Ce(),{isSingleSubgraph:t,hasAnySelection:s}=zt(),a=t,l=k(()=>s.value&&!t.value);return(i,r)=>{const u=Se("tooltip");return C(a)?ue((m(),F(ee,{key:0,variant:"muted-textonly","aria-label":i.$t("commands.Comfy_Graph_UnpackSubgraph.label"),"data-testid":"convert-to-subgraph-button",onClick:r[0]||(r[0]=()=>C(o).execute("Comfy.Graph.UnpackSubgraph"))},{default:L(()=>r[2]||(r[2]=[f("i",{class:"icon-[lucide--expand] size-4"},null,-1)])),_:1},8,["aria-label"])),[[u,{value:i.$t("commands.Comfy_Graph_UnpackSubgraph.label"),showDelay:1e3},void 0,{top:!0}]]):l.value?ue((m(),F(ee,{key:1,variant:"muted-textonly",size:"icon","aria-label":i.$t("commands.Comfy_Graph_ConvertToSubgraph.label"),"data-testid":"convert-to-subgraph-button",onClick:r[1]||(r[1]=()=>C(o).execute("Comfy.Graph.ConvertToSubgraph"))},{default:L(()=>r[3]||(r[3]=[f("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}]]):O("",!0)}}}),mv=H({__name:"DeleteButton",setup(e){const o=Ce(),{selectedItems:t}=zt(),s=k(()=>t.value.some(a=>a.removable!==!1));return(a,l)=>{const i=Se("tooltip");return ue((m(),F(ee,{variant:"muted-textonly","aria-label":a.$t("commands.Comfy_Canvas_DeleteSelectedItems.label"),"data-testid":"delete-button",onClick:l[0]||(l[0]=()=>C(o).execute("Comfy.Canvas.DeleteSelectedItems"))},{default:L(()=>l[1]||(l[1]=[f("i",{class:"icon-[lucide--trash-2]"},null,-1)])),_:1},8,["aria-label"])),[[Ye,s.value],[i,{value:a.$t("commands.Comfy_Canvas_DeleteSelectedItems.label"),showDelay:1e3},void 0,{top:!0}]])}}}),vv=H({__name:"ExecuteButton",setup(e){const{t:o}=de(),t=Ce(),s=fe(),{selectedNodes:a}=zt(),l=s.getCanvas(),i=E(!1),r=k(()=>a.value.filter(Zt).filter(Oi));function u(){if(this.selected&&this.constructor.nodeData?.output_node&&i.value)return{color:"orange",lineWidth:2,padding:10}}n(u,"outputNodeStokeStyle");const p=n(()=>{i.value=!0;for(const d of r.value)d.strokeStyles.outputNode=u;l.setDirty(!0)},"handleMouseEnter"),v=n(()=>{i.value=!1,l.setDirty(!0)},"handleMouseLeave"),h=n(async()=>{await t.execute("Comfy.QueueSelectedOutputNodes")},"handleClick");return(d,b)=>{const y=Se("tooltip");return ue((m(),F(ee,{variant:"primary","aria-label":C(o)("selectionToolbox.executeButton.tooltip"),onMouseenter:b[0]||(b[0]=()=>p()),onMouseleave:b[1]||(b[1]=()=>v()),onClick:h},{default:L(()=>b[2]||(b[2]=[f("i",{class:"icon-[lucide--play]"},null,-1)])),_:1},8,["aria-label"])),[[y,{value:C(o)("selectionToolbox.executeButton.tooltip"),showDelay:1e3},void 0,{top:!0}]])}}}),gv=H({__name:"ExtensionCommandButton",props:{command:{}},setup(e){const o=Ce();return(t,s)=>{const a=Se("tooltip");return ue((m(),F(ee,{variant:"muted-textonly","aria-label":C(ye)(`commands.${C(Re)(t.command.id)}.label`,""),onClick:s[0]||(s[0]=()=>C(o).execute(t.command.id))},{default:L(()=>[f("i",{class:Q([typeof t.command.icon=="function"?t.command.icon():t.command.icon])},null,2)]),_:1},8,["aria-label"])),[[a,{value:C(ye)(`commands.${C(Re)(t.command.id)}.label`,"")||void 0,showDelay:1e3},void 0,{top:!0}]])}}}),hv=H({__name:"InfoButton",setup(e){const o=to(),t=n(()=>{o.openPanel("info")},"onInfoClick");return(s,a)=>{const l=Se("tooltip");return ue((m(),F(ee,{"data-testid":"info-button",variant:"muted-textonly","aria-label":s.$t("g.info"),onClick:t},{default:L(()=>a[0]||(a[0]=[f("i",{class:"icon-[lucide--info]"},null,-1)])),_:1},8,["aria-label"])),[[l,{value:s.$t("g.info"),showDelay:1e3},void 0,{top:!0}]])}}}),yv=H({__name:"Load3DViewerButton",setup(e){const o=Ce(),t=n(()=>{o.execute("Comfy.3DViewer.Open3DViewer")},"open3DViewer");return(s,a)=>{const l=Se("tooltip");return ue((m(),F(ee,{variant:"muted-textonly","aria-label":s.$t("commands.Comfy_3DViewer_Open3DViewer.label"),onClick:t},{default:L(()=>a[0]||(a[0]=[f("i",{class:"icon-[lucide--pencil]"},null,-1)])),_:1},8,["aria-label"])),[[l,{value:s.$t("commands.Comfy_3DViewer_Open3DViewer.label"),showDelay:1e3},void 0,{top:!0}]])}}}),bv=H({__name:"MaskEditorButton",setup(e){const o=Ce(),{isSingleImageNode:t}=zt(),s=n(()=>{o.execute("Comfy.MaskEditor.OpenMaskEditor")},"openMaskEditor");return(a,l)=>{const i=Se("tooltip");return ue((m(),F(ee,{variant:"muted-textonly","aria-label":a.$t("commands.Comfy_MaskEditor_OpenMaskEditor.label"),onClick:s},{default:L(()=>l[0]||(l[0]=[f("i",{class:"icon-[comfy--mask]"},null,-1)])),_:1},8,["aria-label"])),[[Ye,C(t)],[i,{value:a.$t("commands.Comfy_MaskEditor_OpenMaskEditor.label"),showDelay:1e3},void 0,{top:!0}]])}}}),wv=n(e=>e!=null&&typeof e=="object"&&"refresh"in e&&typeof e.refresh=="function","isRefreshableWidget"),kv=n(()=>{const e=fe(),o=E([]);he(()=>{o.value=e.selectedItems.filter(Zt)});const t=k(()=>o.value.flatMap(l=>{if(!l.widgets)return[];const i=[];for(const r of l.widgets)wv(r)&&i.push(r);return i})),s=k(()=>t.value.length>0);async function a(){s.value&&await Promise.all(t.value.map(l=>l.refresh()))}return n(a,"refreshSelected"),{isRefreshable:s,refreshSelected:a}},"useRefreshableSelection"),Cv=H({__name:"RefreshSelectionButton",setup(e){const{t:o}=de(),{isRefreshable:t,refreshSelected:s}=kv();return(a,l)=>{const i=Se("tooltip");return ue((m(),F(ee,{variant:"muted-textonly","aria-label":C(o)("g.refreshNode"),"data-testid":"refresh-button",onClick:C(s)},{default:L(()=>l[0]||(l[0]=[f("i",{class:"icon-[lucide--refresh-cw]"},null,-1)])),_:1},8,["aria-label","onClick"])),[[Ye,C(t)],[i,C(o)("g.refreshNode"),void 0,{top:!0}]])}}}),Sv=H({__name:"SaveToSubgraphLibrary",setup(e){const o=Ce(),t=fe(),s=k(()=>t.selectedItems?.length===1&&t.selectedItems[0]instanceof Qn);return(a,l)=>{const i=Se("tooltip");return ue((m(),F(ee,{variant:"muted-textonly","aria-label":a.$t("commands.Comfy_PublishSubgraph.label"),onClick:l[0]||(l[0]=()=>C(o).execute("Comfy.PublishSubgraph"))},{default:L(()=>l[1]||(l[1]=[f("i",{class:"icon-[lucide--book-open]"},null,-1)])),_:1},8,["aria-label"])),[[Ye,s.value],[i,{value:a.$t("commands.Comfy_PublishSubgraph.label"),showDelay:1e3},void 0,{top:!0}]])}}}),co=E(!1),xv=E(0),_v=E(0),st=E(!1);let Pt=!1,at=null;function Ro(e){const o=e.canvas;if(!o)return null;const t=Array.from(o.selectedItems);if(t.length!==1)return null;const s=t[0];return Zt(s)?`N:${s.id}`:Zn(s)?`G:${s.id}`:null}n(Ro,"buildSelectionSignature");function Tv(e){return at?Ro(e)===at:!1}n(Tv,"currentSelectionMatchesSignature");function Nv(e){const o=fe(),t=o.getCanvas(),{getSelectableItems:s}=Xn(),{shouldRenderVueNodes:a}=Go(),l=E({x:0,y:0}),i=E(!1),{left:r,top:u}=Un(t.canvas),p=k(()=>{const w=o.canvas?.state?.draggingItems??!1,_=a.value&&Me.isDraggingVueNodes.value;return w||_}),v=n(()=>{const w=s();if(!w.size){i.value=!1;return}if(p.value){i.value=!1;return}i.value=!0;const _=[];for(const x of w)if(x.id!=null)if(a.value&&typeof x.id=="string"){const D=Me.getNodeLayoutRef(x.id).value;D&&_.push([D.bounds.x,D.bounds.y,D.bounds.width,D.bounds.height])}else(x instanceof vt||x instanceof Lt)&&_.push([x.pos[0],x.pos[1]-me.NODE_TITLE_HEIGHT,x.size[0],x.size[1]+me.NODE_TITLE_HEIGHT]);const S=Ri(_);S&&(l.value={x:S.x+S.width/2,y:S.y-10},h())},"updateSelectionBounds"),h=n(()=>{if(!i.value)return;const{scale:w,offset:_}=t.ds,S=(l.value.x+_[0])*w+r.value,x=(l.value.y+_[1])*w+u.value;e.value&&(e.value.style.setProperty("--tb-x",`${S}px`),e.value.style.setProperty("--tb-y",`${x}px`))},"updateTransform"),{resume:d,pause:b}=eo(h);he(()=>{i.value?d():b()}),se(()=>o.getCanvas().state.selectionChanged,w=>{w&&((st.value||at)&&(st.value=!1,Pt=!1,co.value?at=Ro(o):at=null),v(),o.getCanvas().state.selectionChanged=!1)},{immediate:!0}),se(()=>co.value,w=>{w?at=Ro(o):o.canvas?.state?.draggingItems||(at=null,st.value&&(st.value=!1))});const y=n(w=>{if(w){g();return}c()},"handleDragStateChange"),g=n(()=>{if(i.value=!1,!co.value){st.value=!1,Pt=!1;return}if(Ro(o)!==at&&(at=null),co.value=!1,Pt=!0,st.value=!!at,st.value){xv.value++;return}Pt=!1},"handleDragStart"),c=n(()=>{requestAnimationFrame(()=>{v();const w=Tv(o),_=Pt&&i.value&&st.value&&w;st.value=_&&st.value,Pt=!1,_&&_v.value++})},"handleDragEnd");return se(p,y),lt(()=>{$v()}),{visible:i}}n(Nv,"useSelectionToolboxPosition");function $v(){co.value=!1,st.value=!1,Pt=!1,at=null}n($v,"resetMoreOptionsState");const Iv=new Set(["Properties","Colors","Shapes","Title","Mode","Properties Panel","Copy (Clipspace)"]),Mv=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 Ks(e){return e.toLowerCase().replace(/^un/,"").trim()}n(Ks,"normalizeLabel");function Pv(e,o){const t=Ks(e),s={color:["color","colors"],shape:["shape","shapes"],pin:["pin","unpin"],delete:["remove","delete"],duplicate:["clone","duplicate"]};return o.some(a=>{if(!a.label)return!1;const l=Ks(a.label);if(l===t)return!0;for(const i of Object.values(s))if(i.includes(t)&&i.includes(l))return!0;return!1})}n(Pv,"isDuplicateItem");function Dv(e){return Mv.has(e)}n(Dv,"isCoreMenuItem");function Av(e){const o=new Map,t=[];for(const l of e){if(l.type==="divider"||l.type==="category"){t.push(l);continue}if(!l.label){t.push(l);continue}o.has(l.label)||o.set(l.label,[]),o.get(l.label).push(l)}const s=[],a=new Set;for(const l of e){if(l.type==="divider"||l.type==="category"||!l.label){if(t.includes(l)){s.push(l);const u=t.indexOf(l);t.splice(u,1)}continue}if(a.has(l.label))continue;a.add(l.label);const i=o.get(l.label);if(i.length===1){s.push(i[0]);continue}const r=i.find(u=>u.source==="vue");r?s.push(r):s.push(i[0])}return s}n(Av,"removeDuplicateMenuOptions");const Ev=["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 hn(e){const o=Ev.indexOf(e);return o===-1?999:o}n(hn,"getMenuItemOrder");function Mn(e){const o=Av(e),t=new Map,s=[];let a;for(const v of o){if(v.type==="divider"||v.type==="category")continue;if((v.label==="Delete"||v.label==="Remove")&&!v.hasSubmenu){a=v;continue}v.label&&Dv(v.label)?t.set(v.label,v):s.push(v)}const l=[],i=Array.from(t.keys());i.sort((v,h)=>hn(v)-hn(h));const r=n(v=>v<=2?1:v<=8?2:v<=15?3:v<=17?4:5,"getSectionNumber");let u=0;for(const v of i){const h=t.get(v),d=hn(v),b=r(d);u>0&&b!==u&&l.push({type:"divider"}),l.push(h),u=b}const p=[];return p.push(...l),s.length>0&&(p.push({type:"divider"}),p.push({label:"Extensions",type:"category",disabled:!0}),p.push(...s)),a&&(p.push({type:"divider"}),p.push(a)),p}n(Mn,"buildStructuredMenu");function Lv(e,o,t=!0){const s=[];for(const a of e){if(a===null){s.push({type:"divider"});continue}if(!a.content||Iv.has(a.content)||Pv(a.content,s))continue;const l={label:a.content,source:"litegraph"};if(a.disabled&&(l.disabled=!0),a.has_submenu){if(a.submenu?.options)l.hasSubmenu=!0,l.submenu=fl(a.submenu.options);else if(a.callback&&!a.disabled){l.hasSubmenu=!0;const i=Vv(a,o);i?l.submenu=i:console.warn("[ContextMenuConverter] Failed to capture submenu for:",a.content)}}else a.callback&&!a.disabled&&(l.action=()=>{try{a.callback?.call(a,a.value,{},void 0,void 0,a)}catch(i){console.error("Error executing context menu callback:",i)}});s.push(l)}return t?Mn(s):s}n(Lv,"convertContextMenuToOptions");function Vv(e,o){let t,s;const a=me.ContextMenu;try{me.ContextMenu=function(l,i){return t=l,s=i,{close:n(()=>{},"close"),root:document.createElement("div")}};try{const l=new MouseEvent("click",{bubbles:!0,cancelable:!0,clientX:0,clientY:0}),i={close:n(()=>{},"close"),root:document.createElement("div")};e.callback?.call(e,e.value,{},l,i,o)}catch(l){console.warn("[ContextMenuConverter] Error executing callback for:",e.content,l)}}finally{me.ContextMenu=a}if(t)return fl(t,s);console.warn("[ContextMenuConverter] No items captured for:",e.content)}n(Vv,"captureDynamicSubmenu");function fl(e,o){const t=[];for(const s of e){if(s===null)continue;if(typeof s=="string"){const i={label:s,action:n(()=>{try{o?.callback&&o.callback.call(null,s,o,void 0,void 0,o.extra)}catch(r){console.error("Error executing string item callback:",r)}},"action")};t.push(i);continue}if(!s.content)continue;const l={label:Ov(s.content),action:n(()=>{try{s.callback?.call(s,s.value,{},void 0,void 0,s)}catch(i){console.error("Error executing submenu callback:",i)}},"action")};s.disabled&&(l.disabled=!0),t.push(l)}return t}n(fl,"convertSubmenuToOptions");function Ov(e){return Ct.sanitize(e,{ALLOWED_TAGS:[]}).trim()||e.replace(/<[^>]*>/g,"").trim()||e}n(Ov,"stripHtmlTags");function rs(){const e=fe(),o=Pe();return{refreshCanvas:n(()=>{e.canvas?.emitBeforeChange(),e.canvas?.setDirty(!0,!0),e.canvas?.graph?.afterChange(),e.canvas?.emitAfterChange(),o.activeWorkflow?.changeTracker?.checkState()},"refreshCanvas")}}n(rs,"useCanvasRefresh");function us(){const{t:e}=de(),o=fe(),t=it(),s=rs(),a=k(()=>t.completedActivePalette.light_theme),l=n(b=>Et(b,{lightness:.5}),"toLightThemeColor"),i={name:"noColor",localizedName:e("color.noColor"),value:{dark:me.NODE_DEFAULT_BGCOLOR,light:l(me.NODE_DEFAULT_BGCOLOR)}},r=[i,...Object.entries(je.node_colors).map(([b,y])=>({name:b,localizedName:e(`color.${b}`),value:{dark:y.bgcolor,light:l(y.bgcolor)}}))],u=[{name:"default",localizedName:e("shape.default"),value:Tt.ROUND},{name:"box",localizedName:e("shape.box"),value:Tt.BOX},{name:"card",localizedName:e("shape.CARD"),value:Tt.CARD}];return{colorOptions:r,shapeOptions:u,applyColor:n(b=>{const y=b?.name??i.name,g=y===i.name?null:je.node_colors[y];for(const c of o.selectedItems)Ao(c)&&c.setColorOption(g);s.refreshCanvas()},"applyColor"),applyShape:n(b=>{const y=Array.from(o.selectedItems).filter(g=>g instanceof vt);y.length!==0&&(y.forEach(g=>{g.shape=b.value}),s.refreshCanvas())},"applyShape"),getCurrentColor:n(()=>{const b=Array.from(o.selectedItems);if(b.length===0)return null;const y=b.find(w=>Ao(w));if(!y||!Ao(y))return null;const c=y.getColorOption()?.bgcolor??null;return r.find(w=>w.value.dark===c||w.value.light===c)??i},"getCurrentColor"),getCurrentShape:n(()=>{const b=Array.from(o.selectedItems).filter(c=>c instanceof vt);if(b.length===0)return null;const g=b[0].shape??Tt.ROUND;return u.find(c=>c.value===g)??u[0]},"getCurrentShape"),isLightTheme:a}}n(us,"useNodeCustomization");function Rv(){const{t:e}=de(),o=fe(),t=Pe(),s=ie(),a=rs(),{shapeOptions:l,colorOptions:i,isLightTheme:r}=us();return{getFitGroupToNodesOption:n(d=>({label:"Fit Group To Nodes",icon:"icon-[lucide--move-diagonal-2]",action:n(()=>{try{d.recomputeInsideNodes()}catch(y){console.warn("Failed to recompute group nodes:",y);return}const b=s.get("Comfy.GroupSelectedNodes.Padding");d.resizeTo(d.children,b),d.graph?.change(),o.canvas?.setDirty(!0,!0),t.activeWorkflow?.changeTracker?.checkState()},"action")}),"getFitGroupToNodesOption"),getGroupShapeOptions:n((d,b)=>({label:e("contextMenu.Shape"),icon:"icon-[lucide--box]",hasSubmenu:!0,submenu:l.map(y=>({label:y.localizedName,action:n(()=>{(d.nodes||[]).forEach(c=>c.shape=y.value),a.refreshCanvas(),b()},"action")}))}),"getGroupShapeOptions"),getGroupColorOptions:n((d,b)=>({label:e("contextMenu.Color"),icon:"icon-[lucide--palette]",hasSubmenu:!0,submenu:i.map(y=>({label:y.localizedName,color:r.value?y.value.light:y.value.dark,action:n(()=>{d.color=r.value?y.value.light:y.value.dark,a.refreshCanvas(),b()},"action")}))}),"getGroupColorOptions"),getGroupModeOptions:n((d,b)=>{const y=[];try{d.recomputeInsideNodes()}catch(_){return console.warn("Failed to recompute group nodes for mode options:",_),y}const g=d.nodes||[];if(!g.length)return y;let c=!0;for(let _=1;_<g.length;_++)if(g[_].mode!==g[0].mode){c=!1;break}const w=n((_,S)=>({label:e(`selectionToolbox.${_}`),icon:S===Ee.BYPASS?"icon-[lucide--ban]":S===Ee.NEVER?"icon-[lucide--zap-off]":"icon-[lucide--play]",action:n(()=>{g.forEach(x=>{x.mode=S}),o.canvas?.setDirty(!0,!0),d.graph?.change(),t.activeWorkflow?.changeTracker?.checkState(),b()},"action")}),"createModeAction");if(c)switch(g[0].mode){case Ee.ALWAYS:y.push(w("Set Group Nodes to Never",Ee.NEVER)),y.push(w("Bypass Group Nodes",Ee.BYPASS));break;case Ee.NEVER:y.push(w("Set Group Nodes to Always",Ee.ALWAYS)),y.push(w("Bypass Group Nodes",Ee.BYPASS));break;case Ee.BYPASS:y.push(w("Set Group Nodes to Always",Ee.ALWAYS)),y.push(w("Set Group Nodes to Never",Ee.NEVER));break;default:y.push(w("Set Group Nodes to Always",Ee.ALWAYS)),y.push(w("Set Group Nodes to Never",Ee.NEVER)),y.push(w("Bypass Group Nodes",Ee.BYPASS));break}else y.push(w("Set Group Nodes to Always",Ee.ALWAYS)),y.push(w("Set Group Nodes to Never",Ee.NEVER)),y.push(w("Bypass Group Nodes",Ee.BYPASS));return y},"getGroupModeOptions")}}n(Rv,"useGroupMenuOptions");function Wv(){const{t:e}=de(),o=n(()=>{Ce().execute("Comfy.MaskEditor.OpenMaskEditor")},"openMaskEditor"),t=n(i=>{if(!i?.imgs?.length)return;const r=i.imgs[i.imageIndex??0];if(!r)return;const u=new URL(r.src);u.searchParams.delete("preview"),window.open(u.toString(),"_blank")},"openImage"),s=n(async i=>{if(!i?.imgs?.length)return;const r=i.imgs[i.imageIndex??0];if(!r)return;const u=document.createElement("canvas"),p=u.getContext("2d");if(p){u.width=r.naturalWidth,u.height=r.naturalHeight,p.drawImage(r,0,0);try{const v=await new Promise(h=>{u.toBlob(h,"image/png")});if(!v){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":v})])}catch(v){console.error("Failed to copy image to clipboard:",v)}}},"copyImage"),a=n(i=>{if(!i?.imgs?.length)return;const r=i.imgs[i.imageIndex??0];if(r)try{const u=new URL(r.src);u.searchParams.delete("preview"),tn(u.toString())}catch(u){console.error("Failed to save image:",u)}},"saveImage");return{getImageMenuOptions:n(i=>i?.imgs?.length?[{label:e("contextMenu.Open in Mask Editor"),action:n(()=>o(),"action")},{label:e("contextMenu.Open Image"),icon:"icon-[lucide--external-link]",action:n(()=>t(i),"action")},{label:e("contextMenu.Copy Image"),icon:"icon-[lucide--copy]",action:n(()=>s(i),"action")},{label:e("contextMenu.Save Image"),icon:"icon-[lucide--download]",action:n(()=>a(i),"action")}]:[],"getImageMenuOptions")}}n(Wv,"useImageMenuOptions");function zv(){const{getSelectedNodes:e,toggleSelectedNodesMode:o}=Xn(),t=Ce(),s=Pe();return{adjustNodeSize:n(()=>{e().forEach(v=>{const h=v.computeSize();v.setSize([h[0],h[1]])}),J.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"adjustNodeSize"),toggleNodeCollapse:n(()=>{e().forEach(v=>{v.collapse()}),J.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"toggleNodeCollapse"),toggleNodePin:n(()=>{e().forEach(v=>{v.pin(!v.pinned)}),J.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"toggleNodePin"),toggleNodeBypass:n(()=>{o(Ee.BYPASS),J.canvas.setDirty(!0,!0)},"toggleNodeBypass"),runBranch:n(async()=>{const p=e();Fa(p).length!==0&&await t.execute("Comfy.QueueSelectedOutputNodes")},"runBranch")}}n(zv,"useSelectedNodeActions");function Bv(){const{t:e}=de(),{shapeOptions:o,applyShape:t,applyColor:s,colorOptions:a,isLightTheme:l}=us(),{adjustNodeSize:i,toggleNodeCollapse:r,toggleNodePin:u,toggleNodeBypass:p,runBranch:v}=zv(),h=k(()=>o.map(S=>({label:S.localizedName,action:n(()=>t(S),"action")}))),d=k(()=>a.map(S=>({label:S.localizedName,color:l.value?S.value.light:S.value.dark,action:n(()=>s(S.name==="noColor"?null:S),"action")})));return{getNodeInfoOption:n(S=>({label:e("contextMenu.Node Info"),icon:"icon-[lucide--info]",action:S}),"getNodeInfoOption"),getAdjustSizeOption:n(()=>({label:e("contextMenu.Adjust Size"),icon:"icon-[lucide--move-diagonal-2]",action:i}),"getAdjustSizeOption"),getNodeVisualOptions:n((S,x)=>[{label:S.collapsed?e("contextMenu.Expand Node"):e("contextMenu.Minimize Node"),icon:S.collapsed?"icon-[lucide--maximize-2]":"icon-[lucide--minimize-2]",action:n(()=>{r(),x()},"action")},{label:e("contextMenu.Shape"),icon:"icon-[lucide--box]",hasSubmenu:!0,submenu:h.value,action:n(()=>{},"action")},{label:e("contextMenu.Color"),icon:"icon-[lucide--palette]",hasSubmenu:!0,submenu:d.value,isColorPicker:!0,action:n(()=>{},"action")}],"getNodeVisualOptions"),getPinOption:n((S,x)=>({label:S.pinned?e("contextMenu.Unpin"):e("contextMenu.Pin"),icon:S.pinned?"icon-[lucide--pin-off]":"icon-[lucide--pin]",action:n(()=>{u(),x()},"action")}),"getPinOption"),getBypassOption:n((S,x)=>({label:S.bypassed?e("contextMenu.Remove Bypass"):e("contextMenu.Bypass"),icon:"icon-[lucide--redo-dot]",shortcut:"Ctrl+B",action:n(()=>{p(),x()},"action")}),"getBypassOption"),getRunBranchOption:n(()=>({label:e("contextMenu.Run Branch"),icon:"icon-[lucide--play]",action:v}),"getRunBranchOption"),colorSubmenu:d}}n(Bv,"useNodeMenuOptions");function ml(){const e=ie(),o=on(),{hasMultipleSelection:t}=zt(),s=k(()=>t.value);return{frameNodes:n(()=>{const{canvas:l}=J;if(!l.selectedItems?.size)return;const i=new Lt,r=e.get("Comfy.GroupSelectedNodes.Padding");i.resizeTo(l.selectedItems,r),l.graph?.add(i),o.titleEditorTarget=i},"frameNodes"),canFrame:s}}n(ml,"useFrameNodes");function Fv(){const{t:e}=de(),o=fe(),t=rs(),s=[{name:"top",localizedName:e("contextMenu.Top"),value:"top",icon:"icon-[lucide--align-start-vertical]"},{name:"bottom",localizedName:e("contextMenu.Bottom"),value:"bottom",icon:"icon-[lucide--align-end-vertical]"},{name:"left",localizedName:e("contextMenu.Left"),value:"left",icon:"icon-[lucide--align-start-horizontal]"},{name:"right",localizedName:e("contextMenu.Right"),value:"right",icon:"icon-[lucide--align-end-horizontal]"}],a=[{name:"horizontal",localizedName:e("contextMenu.Horizontal"),value:!0,icon:"icon-[lucide--align-center-horizontal]"},{name:"vertical",localizedName:e("contextMenu.Vertical"),value:!1,icon:"icon-[lucide--align-center-vertical]"}];return{alignOptions:s,distributeOptions:a,applyAlign:n(r=>{const u=Array.from(o.selectedItems).filter(v=>Zt(v));if(u.length===0)return;const p=zi(u,r.value);o.canvas?.repositionNodesVueMode(p),t.refreshCanvas()},"applyAlign"),applyDistribute:n(r=>{const u=Array.from(o.selectedItems).filter(v=>Zt(v));if(u.length<2)return;const p=Wi(u,r.value);o.canvas?.repositionNodesVueMode(p),t.refreshCanvas()},"applyDistribute")}}n(Fv,"useNodeArrangement");function Uv(){const e=fe(),o=Nt(),t=et(),s=on(),a=Pe();return{copySelection:n(()=>{const v=J.canvas;if(!v.selectedItems||v.selectedItems.size===0){o.add({severity:"warn",summary:re("g.nothingToCopy"),detail:re("g.selectItemsToCopy"),life:3e3});return}v.copyToClipboard(),o.add({severity:"success",summary:re("g.copied"),detail:re("g.itemsCopiedToClipboard"),life:2e3})},"copySelection"),pasteSelection:n(()=>{J.canvas.pasteFromClipboard({connectInputs:!1}),a.activeWorkflow?.changeTracker?.checkState()},"pasteSelection"),duplicateSelection:n(()=>{const v=J.canvas;if(!v.selectedItems||v.selectedItems.size===0){o.add({severity:"warn",summary:re("g.nothingToDuplicate"),detail:re("g.selectItemsToDuplicate"),life:3e3});return}v.copyToClipboard(),v.selectedItems.clear(),e.updateSelectedItems(),v.pasteFromClipboard({connectInputs:!1}),a.activeWorkflow?.changeTracker?.checkState()},"duplicateSelection"),deleteSelection:n(()=>{const v=J.canvas;if(!v.selectedItems||v.selectedItems.size===0){o.add({severity:"warn",summary:re("g.nothingToDelete"),detail:re("g.selectItemsToDelete"),life:3e3});return}v.deleteSelected(),v.setDirty(!0,!0),a.activeWorkflow?.changeTracker?.checkState()},"deleteSelection"),renameSelection:n(async()=>{const v=Array.from(e.selectedItems);if(v.length===1){const h=v[0];if(h instanceof vt){s.titleEditorTarget=h;return}const d="title"in h?h.title:"",b=await t.prompt({title:re("g.rename"),message:re("g.enterNewName"),defaultValue:d});if(b&&b!==d&&"title"in h){const y=h;y.title=b,J.canvas.setDirty(!0,!0),a.activeWorkflow?.changeTracker?.checkState()}return}if(v.length>1){const h=await t.prompt({title:re("g.batchRename"),message:re("g.enterBaseName"),defaultValue:"Item"});h&&(v.forEach((d,b)=>{if("title"in d){const y=d;y.title=`${h} ${b+1}`}}),J.canvas.setDirty(!0,!0),a.activeWorkflow?.changeTracker?.checkState());return}o.add({severity:"warn",summary:re("g.nothingToRename"),detail:re("g.selectItemsToRename"),life:3e3})},"renameSelection")}}n(Uv,"useSelectionOperations");function Gv(){const{t:e}=de(),{copySelection:o,duplicateSelection:t,deleteSelection:s,renameSelection:a}=Uv(),{alignOptions:l,distributeOptions:i,applyAlign:r,applyDistribute:u}=Fv(),{convertToSubgraph:p,unpackSubgraph:v,addSubgraphToLibrary:h}=Ua(),{frameNodes:d}=ml(),b=k(()=>l.map(x=>({label:x.localizedName,icon:x.icon,action:n(()=>r(x),"action")}))),y=k(()=>i.map(x=>({label:x.localizedName,icon:x.icon,action:n(()=>u(x),"action")})));return{getBasicSelectionOptions:n(()=>[{label:e("contextMenu.Rename"),action:a},{label:e("contextMenu.Copy"),shortcut:"Ctrl+C",action:o},{label:e("contextMenu.Duplicate"),shortcut:"Ctrl+D",action:t}],"getBasicSelectionOptions"),getSubgraphOptions:n(({hasSubgraphs:x,hasMultipleSelection:D})=>{const P={label:e("contextMenu.Convert to Subgraph"),icon:"icon-[lucide--shrink]",action:p,badge:Pn.NEW},T=[];return(!x||D)&&T.push(P),x&&T.push({label:e("contextMenu.Add Subgraph to Library"),icon:"icon-[lucide--folder-plus]",action:h},{label:e("contextMenu.Unpack Subgraph"),icon:"icon-[lucide--expand]",action:v}),T},"getSubgraphOptions"),getMultipleNodesOptions:n(()=>{const x=n(()=>{Ce().execute("Comfy.GroupNode.ConvertSelectedNodesToGroupNode")},"convertToGroupNodes");return[{label:e("contextMenu.Convert to Group Node"),icon:"icon-[lucide--group]",action:x,badge:Pn.DEPRECATED},{label:e("g.frameNodes"),icon:"icon-[lucide--frame]",action:d}]},"getMultipleNodesOptions"),getDeleteOption:n(()=>({label:e("contextMenu.Delete"),icon:"icon-[lucide--trash-2]",shortcut:"Delete",action:s}),"getDeleteOption"),getAlignmentOptions:n(()=>[{label:e("contextMenu.Align Selected To"),icon:"icon-[lucide--align-start-horizontal]",hasSubmenu:!0,submenu:b.value,action:n(()=>{},"action")},{label:e("contextMenu.Distribute Nodes"),icon:"icon-[lucide--align-center-horizontal]",hasSubmenu:!0,submenu:y.value,action:n(()=>{},"action")}],"getAlignmentOptions"),alignSubmenu:b,distributeSubmenu:y}}n(Gv,"useSelectionMenuOptions");var Pn=(e=>(e.NEW="new",e.DEPRECATED="deprecated",e))(Pn||{});let bo=null;function jv(e){bo?.toggle&&bo.toggle(e)}n(jv,"toggleNodeOptions");function Hv(e){bo?.show&&bo.show(e)}n(Hv,"showNodeOptions");function Dn(e){bo=e}n(Dn,"registerNodeOptionsInstance");function qv(e){return e.map(o=>o.type==="divider"||o.type==="category"?o:{...o,source:"vue"})}n(qv,"markAsVueOptions");function Kv(){const{selectedItems:e,selectedNodes:o,nodeDef:t,showNodeHelp:s,hasSubgraphs:a,hasImageNode:l,hasOutputNodesSelected:i,hasMultipleSelection:r,computeSelectionFlags:u}=zt(),p=fe(),{getImageMenuOptions:v}=Wv(),{getNodeInfoOption:h,getNodeVisualOptions:d,getPinOption:b,getBypassOption:y,getRunBranchOption:g}=Bv(),{getFitGroupToNodesOption:c,getGroupColorOptions:w,getGroupModeOptions:_}=Rv(),{getBasicSelectionOptions:S,getSubgraphOptions:x,getMultipleNodesOptions:D}=Gv(),P=a,T=r,$=E(0),I=n(()=>{$.value++},"bump"),B=k(()=>{$.value;const M=u(),V=e.value.filter(Zn),U=V.length===1&&o.value.length===0?V[0]:null,R=P.value,j=[];if(o.value.length===1&&!U&&p.canvas)try{const X=o.value[0],oe=p.canvas.getNodeMenuOptions(X);j.push(...Lv(oe,X,!1))}catch(X){console.error("Error getting LiteGraph menu items:",X)}const q=[],K=S();if(q.push(...K),q.push({type:"divider"}),i.value){const X=g();q.push(X)}if(!U){const X=b(M,I),oe=y(M,I);q.push(X),q.push(oe)}if(U){const X=_(U,I);q.push(...X)}if(q.push({type:"divider"}),q.push(...x({hasSubgraphs:R,hasMultipleSelection:T.value})),T.value&&q.push(...D()),U)q.push(c(U));else{const X=d(M,I);X.length>0&&q.push(X[0])}if(q.push({type:"divider"}),t.value&&q.push(h(s)),U)q.push(w(U,I));else{const X=d(M,I);X.length>1&&q.push(X[1]),X.length>2&&q.push(X[2])}q.push({type:"divider"}),l.value&&o.value.length>0&&(q.push(...v(o.value[0])),q.push({type:"divider"}));const ne=qv(q);if(j.length>0){const X=[...j,...ne];return Mn(X)}return Mn(ne)}),G=k(()=>B.value.filter(M=>M.hasSubmenu&&M.submenu));return{menuOptions:B,menuOptionsWithSubmenu:G,bump:I,hasSubgraphs:P,registerNodeOptionsInstance:Dn}}n(Kv,"useMoreOptionsMenu");const Jv=["title","onClick"],Yv={key:0,class:"icon-[lucide--check] size-4 flex-shrink-0"},Qv={key:1,class:"w-4 flex-shrink-0"},Xv=H({__name:"ColorPickerMenu",props:{option:{}},emits:["submenu-click"],setup(e,{expose:o,emit:t}){const s=e,a=t,{getCurrentShape:l}=us(),i=E();o({toggle:n((h,d)=>{i.value?.toggle(h,d)},"toggle")});const u=n(h=>{h.disabled||(a("submenu-click",h),i.value?.hide())},"handleSubmenuClick"),p=n(h=>{if(h.color)return!1;const d=l();return d?d.localizedName===h.label:!1},"isShapeSelected"),v=k(()=>s.option.submenu&&s.option.submenu.length>0&&s.option.submenu.every(h=>h.color&&!h.icon));return(h,d)=>(m(),F(C(Ze),{ref_key:"popoverRef",ref:i,"auto-z-index":!0,"base-z-index":1100,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-60"},content:{class:["text-base-foreground rounded-lg","shadow-lg border border-base-background","bg-interface-panel-surface"]}}},{default:L(()=>[f("div",{class:Q(v.value?"flex flex-col gap-1 p-2":"flex flex-col p-2 min-w-40")},[(m(!0),N(le,null,be(h.option.submenu,b=>(m(),N("div",{key:b.label,class:Q(C(pe)("hover:bg-secondary-background-hover rounded cursor-pointer",v.value?"w-7 h-7 flex items-center justify-center":"flex items-center gap-2 px-3 py-1.5 text-sm",b.disabled?"cursor-not-allowed pointer-events-none text-node-icon-disabled":"hover:bg-secondary-background-hover")),title:b.label,onClick:n(y=>u(b),"onClick")},[b.color?(m(),N("div",{key:0,class:"size-5 rounded-full border border-border-default",style:ve({backgroundColor:b.color})},null,4)):b.color?O("",!0):(m(),N(le,{key:1},[p(b)?(m(),N("i",Yv)):(m(),N("div",Qv)),f("span",null,z(b.label),1)],64))],10,Jv))),128))],2)]),_:1},512))}}),Zv=["onClick"],eg={class:"flex-1"},tg={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"},og={key:2,class:"icon-[lucide--chevron-right] size-4 opacity-60"},ng=H({__name:"NodeContextMenu",setup(e,{expose:o}){const t=E(),s=E(),a=E(!1),{menuOptions:l,bump:i}=Kv(),r=fe(),u=E({x:0,y:0}),p=r.getCanvas(),{left:v,top:h}=Un(p.canvas);let d=0,b=0,y=0;const g=n(()=>{if(!a.value)return;const U=t.value?.container;if(!U)return;const{scale:R,offset:j}=p.ds;if(R===d&&j[0]===b&&j[1]===y)return;d=R,b=j[0],y=j[1];const q=(u.value.x+j[0])*R+v.value,K=(u.value.y+j[1])*R+h.value;U.style.left=`${q}px`,U.style.top=`${K}px`},"updateMenuPosition"),{resume:c,pause:w}=eo(g,{immediate:!1});he(()=>{a.value?c():w()}),Ae(window,"touchstart",V=>{if(!a.value||!t.value)return;const U=V.target,R=t.value,j=R.container||R.$el;j&&!j.contains(U)&&T()},{passive:!0});const _=k(()=>l.value.find(V=>V.isColorPicker));function S(V){return!!V.isColorPicker}n(S,"isColorOption");function x(V){if(V.type==="divider")return{separator:!0};const U=S(V),R={label:V.label,icon:V.icon,disabled:V.disabled,shortcut:V.shortcut,isColorSubmenu:U,originalOption:V};return V.hasSubmenu&&V.submenu&&!U&&(R.items=V.submenu.map(j=>({label:j.label,icon:j.icon,disabled:j.disabled,command:n(()=>{j.action(),T()},"command")}))),!V.hasSubmenu&&V.action&&(R.command=()=>{V.action?.(),T()}),R}n(x,"convertToMenuItem");const D=k(()=>l.value.map(x));function P(V){i();const U=V.clientX-v.value,R=V.clientY-h.value,{scale:j,offset:q}=p.ds;u.value={x:U/j-q[0],y:R/j-q[1]},a.value=!0,t.value?.show(V)}n(P,"show");function T(){t.value?.hide()}n(T,"hide");function $(V){a.value?T():P(V)}n($,"toggle"),o({toggle:$,hide:T,isOpen:a,show:P});function I(V){V.stopPropagation(),V.preventDefault();const U=Array.from(V.currentTarget.children).find(R=>R.classList.contains("icon-[lucide--chevron-right]"));s.value?.toggle(V,U)}n(I,"showColorPopover");function B(V){V.action(),T()}n(B,"handleColorSelect");function G(){a.value=!0}n(G,"onMenuShow");function M(){a.value=!1}return n(M,"onMenuHide"),Le(()=>{Dn({toggle:$,show:P,hide:T,isOpen:a})}),lt(()=>{Dn(null)}),(V,U)=>(m(),N(le,null,[W(C(Ma),{ref_key:"contextMenu",ref:t,model:D.value,class:"max-h-[80vh] md:max-h-none overflow-y-auto md:overflow-y-visible",onShow:G,onHide:M},{item:L(({item:R,props:j,hasSubmenu:q})=>[f("a",$t(j.action,{class:"flex items-center gap-2 px-3 py-1.5",onClick:n(K=>R.isColorSubmenu?I(K):void 0,"onClick")}),[R.icon?(m(),N("i",{key:0,class:Q([R.icon,"size-4"])},null,2)):O("",!0),f("span",eg,z(R.label),1),R.shortcut?(m(),N("span",tg,z(R.shortcut),1)):O("",!0),q||R.isColorSubmenu?(m(),N("i",og)):O("",!0)],16,Zv)]),_:1},8,["model"]),_.value?(m(),F(Xv,{ref_key:"colorPickerMenu",ref:s,key:"color-picker-menu",option:_.value,onSubmenuClick:B},null,8,["option"])):O("",!0)],64))}}),sg=H({__name:"FrameNodes",setup(e){const{frameNodes:o}=ml();return(t,s)=>{const a=Se("tooltip");return ue((m(),F(ee,{variant:"muted-textonly","aria-label":t.$t("g.frameNodes"),onClick:C(o)},{default:L(()=>s[0]||(s[0]=[f("i",{class:"icon-[lucide--frame]"},null,-1)])),_:1},8,["aria-label","onClick"])),[[a,{value:t.$t("g.frameNodes"),showDelay:1e3},void 0,{top:!0}]])}}}),ag=H({__name:"NodeOptionsButton",setup(e){const o=n(t=>{jv(t)},"handleClick");return(t,s)=>{const a=Se("tooltip");return ue((m(),F(ee,{"data-testid":"more-options-button",variant:"muted-textonly","aria-label":t.$t("g.moreOptions"),onClick:o},{default:L(()=>s[0]||(s[0]=[f("i",{class:"icon-[lucide--more-vertical]"},null,-1)])),_:1},8,["aria-label"])),[[a,{value:t.$t("g.moreOptions"),showDelay:1e3},void 0,{top:!0}]])}}}),lg={},ig={class:"h-6 w-px self-center bg-border-default"};function rg(e,o){return m(),N("div",ig)}n(rg,"_sfc_render$1");const Js=De(lg,[["render",rg]]),ug=H({__name:"SelectionToolbox",setup(e){const o=Ce(),t=fe(),s=Bi(),a=lo(),l=E(),{visible:i}=Nv(l),r=k(()=>{const V=new Set(t.selectedItems.map(U=>s.invokeExtensions("getSelectionToolboxCommands",U).flat()).flat());return Array.from(V).map(U=>o.getCommand(U)).filter(U=>U!==void 0)}),{hasAnySelection:u,hasMultipleSelection:p,isSingleNode:v,isSingleSubgraph:h,isSingleImageNode:d,hasAny3DNodeSelected:b,hasOutputNodesSelected:y,nodeDef:g}=zt(),c=k(()=>!!g.value),w=k(()=>u.value),_=k(()=>u.value),S=k(()=>p.value),x=k(()=>h.value),D=k(()=>v.value||h.value||p.value),P=k(()=>b.value),T=k(()=>d.value),$=k(()=>u.value),I=k(()=>u.value),B=k(()=>y.value),G=k(()=>w.value||_.value||S.value||x.value),M=k(()=>D.value);return(V,U)=>(m(),N(le,null,[f("div",{ref_key:"toolboxRef",ref:l,style:{transform:"translate(var(--tb-x), var(--tb-y))"},class:"pointer-events-none fixed top-0 left-0 z-40"},[W(zn,{name:"slide-up"},{default:L(()=>[C(i)?(m(),F(C(Na),{key:0,class:"selection-toolbox pointer-events-auto rounded-lg border border-interface-stroke bg-interface-panel-surface",pt:{header:"hidden",content:"p-2 h-12 flex flex-row gap-1"},onWheel:C(a).forwardEventToCanvas},{default:L(()=>[$.value?(m(),F(mv,{key:0})):O("",!0),c.value&&G.value?(m(),F(Js,{key:1})):O("",!0),c.value?(m(),F(hv,{key:2})):O("",!0),w.value?(m(),F(dv,{key:3})):O("",!0),S.value?(m(),F(sg,{key:4})):O("",!0),_.value?(m(),F(fv,{key:5})):O("",!0),x.value?(m(),F(pv,{key:6})):O("",!0),x.value?(m(),F(Sv,{key:7})):O("",!0),T.value?(m(),F(bv,{key:8})):O("",!0),G.value&&M.value?(m(),F(Js,{key:9})):O("",!0),D.value?(m(),F(av,{key:10})):O("",!0),I.value?(m(),F(Cv,{key:11})):O("",!0),P.value?(m(),F(yv,{key:12})):O("",!0),(m(!0),N(le,null,be(r.value,R=>(m(),F(gv,{key:R.id,command:R},null,8,["command"]))),128)),B.value?(m(),F(vv,{key:13})):O("",!0),W(ag)]),_:1},8,["onWheel"])):O("",!0)]),_:1})],512),W(ng)],64))}}),cg=De(ug,[["__scopeId","data-v-c6489a20"]]),dg=H({__name:"TitleEditor",setup(e){const o=ie(),t=E(!1),s=E(""),{style:a,updatePosition:l}=pl(),i=E({}),r=k(()=>({...a.value,...i.value})),u=on(),p=fe(),v=E(!0),h=n(b=>{if(u.titleEditorTarget&&b?.trim()){const y=b.trim();u.titleEditorTarget.title=y;const g=u.titleEditorTarget;g instanceof vt&&g.isSubgraphNode?.()&&(g.subgraph.name=y),J.canvas.setDirty(!0,!0)}t.value=!1,u.titleEditorTarget=null,p.canvas.allow_dragcanvas=v.value},"onEdit");return se(()=>u.titleEditorTarget,b=>{if(b===null)return;s.value=b.title,t.value=!0;const y=p.canvas;v.value=y.allow_dragcanvas,y.allow_dragcanvas=!1;const g=y.ds.scale;if(b instanceof Lt){const c=b;l({pos:c.pos,size:[c.size[0],c.titleHeight]}),i.value={fontSize:`${c.font_size*g}px`}}else if(b instanceof vt){const c=b,[w,_]=c.getBounding();l({pos:[w,_],size:[c.width,me.NODE_TITLE_HEIGHT]}),i.value={fontSize:`${12*g}px`}}}),Ae(document,"litegraph:canvas",n(b=>{if(b.detail.subType==="group-double-click"){if(!o.get("Comfy.Group.DoubleClickTitleToEdit"))return;const y=b.detail.group,[g,c]=y.pos;b.detail.originalEvent.canvasY-c<=y.titleHeight&&(u.titleEditorTarget=y)}else if(b.detail.subType==="node-double-click"){if(!o.get("Comfy.Node.DoubleClickTitleToEdit"))return;const y=b.detail.node,[g,c]=y.pos;b.detail.originalEvent.canvasY-c<=0&&(u.titleEditorTarget=y)}},"canvasEventHandler")),(b,y)=>t.value?(m(),N("div",{key:0,class:"group-title-editor node-title-editor",style:ve(r.value)},[W(Hn,{"is-editing":t.value,"model-value":s.value,onEdit:h},null,8,["is-editing","model-value"])],4)):O("",!0)}}),pg=De(dg,[["__scopeId","data-v-aceb018c"]]),fg={key:0,class:"p-3"},mg=H({__name:"TabInfo",props:{nodes:{}},setup(e){const o=k(()=>e.nodes[0]),t=yt(),s=Fi(),a=k(()=>t.fromLGraphNode(o.value));return ko(a,l=>{s.openHelp(l)},{immediate:!0}),(l,i)=>a.value?(m(),N("div",fg,[W(Ui,{node:a.value},null,8,["node"])])):O("",!0)}}),vg=["placeholder"],vl=H({__name:"SidePanelSearch",props:Bn({searcher:{type:Function,default:n(async()=>{},"default")},updateKey:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const o=Bo(e,"modelValue"),t=E(!1),s=va(o,100,{maxWait:100});se(o,l=>{t.value=l!==s.value});const a=zl(()=>ze(e.updateKey));return se([s,a],(l,i,r)=>{let u=!1,p;r(()=>{u=!0,p?.()}),e.searcher(s.value,v=>p=v).catch(v=>{console.error("[SidePanelSearch] searcher failed",v)}).finally(()=>{u||(t.value=!1)})},{immediate:!0}),(l,i)=>(m(),N("label",{class:Q(C(pe)("mt-1 py-1.5 bg-secondary-background rounded-lg transition-all duration-150","flex-1 flex gap-2 px-2 items-center","text-base-foreground border-0","focus-within:ring focus-within:ring-component-node-widget-background-highlighted/80"))},[f("i",{class:Q(C(pe)("size-4 text-muted-foreground",t.value?"icon-[lucide--loader-circle] animate-spin":"icon-[lucide--search]"))},null,2),ue(f("input",{"onUpdate:modelValue":i[0]||(i[0]=r=>o.value=r),type:"text",class:"bg-transparent border-0 outline-0 ring-0 h-5",placeholder:l.$t("g.searchPlaceholder")},null,8,vg),[[Bl,o.value]])],2))}}),gg=["fixed","increment","decrement","randomize"];function hg(e){return gg.includes(e)}n(hg,"isControlOption");function Ys(e){return hg(e)?e:"randomize"}n(Ys,"normalizeControlOption");function yg(e){e.vueTrack||ga((o,t)=>(e.callback=Xt(e.callback,t),e.vueTrack=o,{get(){},set(){}}))}n(yg,"widgetWithVueTrack");function gl(e){return yg(e),e.vueTrack(),e.value}n(gl,"useReactiveWidgetValue");function bg(e){const o=e.linkedWidgets?.find(t=>t.name=="control_after_generate");if(o)return{value:Ys(o.value),update:n(t=>o.value=Ys(t),"update")}}n(bg,"getControlWidget");function wg(e,o){return!e.isSubgraphNode()||!Gi(o)?void 0:e.subgraph.getNodeById(o._overlay.nodeId)?.type}n(wg,"getNodeType");const kg=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 hl(e,o){const t=yt();return function(s){try{const a=t.getInputSpecForWidget(e,s.name),l=o.get(s.name),i=s.promoted?"ring ring-component-node-widget-promoted":s.advanced?"ring ring-component-node-widget-advanced":void 0,r=n(u=>{const p=kg(u);s.value=p??void 0,s.callback?.(p)},"callback");return{name:s.name,type:s.type,value:gl(s),borderStyle:i,callback:r,controlWidget:bg(s),isDOMWidget:fo(s),label:s.label,nodeType:wg(e,s),options:s.options,spec:a,slotMetadata:l}}catch{return{name:s.name||"unknown",type:s.type||"text",value:void 0}}}}n(hl,"safeWidgetMapper");function Cg(e){return e==null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="object"}n(Cg,"isValidWidgetValue");function Sg(e){const{createNode:o,deleteNode:t,setSource:s}=nn(),a=ha(new Map),l=new Map,i=n(g=>{const c=l.get(g),w=a.get(g);if(!c||!w)return;const _=new Map;c.inputs?.forEach((x,D)=>{x?.widget?.name&&_.set(x.widget.name,{index:D,linked:x.link!=null})});const S=w.widgets?.map(x=>{const D=_.get(x.name);return D?{...x,slotMetadata:D}:x});a.set(g,{...w,widgets:S,inputs:c.inputs?[...c.inputs]:void 0,outputs:c.outputs?[...c.outputs]:void 0})},"refreshNodeSlots");function r(g){const c=g.graph&&"id"in g.graph&&g.graph!==g.graph.rootGraph?String(g.graph.id):null,w=new Map,_=ws(g.widgets??[]);Object.defineProperty(g,"widgets",{get(){return _},set($){_.splice(0,_.length,...$)}});const S=ws(g.inputs??[]);Object.defineProperty(g,"inputs",{get(){return S},set($){S.splice(0,S.length,...$)}});const x=Fl(()=>(g.inputs?.forEach(($,I)=>{$?.widget?.name&&w.set($.widget.name,{index:I,linked:$.link!=null})}),g.widgets?.map(hl(g,w))??[])),D=g.type||g.constructor?.comfyClass||g.constructor?.title||g.constructor?.name||"Unknown",P=g.constructor?.nodeData?.api_node??!1,T=g.badges;return{id:String(g.id),title:typeof g.title=="string"?g.title:"",type:D,mode:g.mode||0,titleMode:g.title_mode,selected:g.selected||!1,executing:!1,subgraphId:c,apiNode:P,badges:T,hasErrors:!!g.has_errors,widgets:x,inputs:S,outputs:g.outputs?[...g.outputs]:void 0,flags:g.flags?{...g.flags}:void 0,color:g.color||void 0,bgcolor:g.bgcolor||void 0,shape:g.shape}}n(r,"extractVueNodeData");const u=n(g=>l.get(g),"getNode"),p=n(()=>{if(!e?._nodes)return;const g=new Set(e._nodes.map(c=>String(c.id)));for(const c of Array.from(a.keys()))g.has(c)||(l.delete(c),a.delete(c));e._nodes.forEach(c=>{const w=String(c.id);l.set(w,c),a.set(w,r(c))})},"syncWithGraph"),v=n((g,c)=>{const w=String(g.id);l.set(w,g),a.set(w,r(g));const _=n(()=>{const S={x:g.pos[0],y:g.pos[1]},x={width:g.size[0],height:g.size[1]};s(go.Canvas),o(w,{position:S,size:x,zIndex:g.order||0,visible:!0})},"initializeVueNodeLayout");window.app?.configuringGraph?g.onAfterGraphConfigured=Xt(g.onAfterGraphConfigured,()=>{a.set(w,r(g)),_()}):_(),c&&c(g)},"handleNodeAdded"),h=n((g,c)=>{const w=String(g.id);s(go.Canvas),t(w),l.delete(w),a.delete(w),c&&c(g)},"handleNodeRemoved"),d=n((g,c,w)=>()=>{e.onNodeAdded=g||void 0,e.onNodeRemoved=c||void 0,e.onTrigger=w||void 0,l.clear(),a.clear()},"createCleanupFunction"),y=n(()=>{const g=e.onNodeAdded,c=e.onNodeRemoved,w=e.onTrigger;e.onNodeAdded=S=>{v(S,g)},e.onNodeRemoved=S=>{h(S,c)};const _={"node:property:changed":n(S=>{const x=String(S.nodeId),D=a.get(x);if(D)switch(S.property){case"title":a.set(x,{...D,title:String(S.newValue)});break;case"flags.collapsed":a.set(x,{...D,flags:{...D.flags,collapsed:!!S.newValue}});break;case"flags.pinned":a.set(x,{...D,flags:{...D.flags,pinned:!!S.newValue}});break;case"mode":a.set(x,{...D,mode:typeof S.newValue=="number"?S.newValue:0});break;case"color":a.set(x,{...D,color:typeof S.newValue=="string"?S.newValue:void 0});break;case"bgcolor":a.set(x,{...D,bgcolor:typeof S.newValue=="string"?S.newValue:void 0});break;case"shape":a.set(x,{...D,shape:typeof S.newValue=="number"?S.newValue:void 0})}},"node:property:changed"),"node:slot-errors:changed":n(S=>{i(String(S.nodeId))},"node:slot-errors:changed"),"node:slot-links:changed":n(S=>{S.slotType===ji.INPUT&&i(String(S.nodeId))},"node:slot-links:changed")};return e.onTrigger=S=>{switch(S.type){case"node:property:changed":_["node:property:changed"](S);break;case"node:slot-errors:changed":_["node:slot-errors:changed"](S);break;case"node:slot-links:changed":_["node:slot-links:changed"](S);break}w?.(S)},p(),d(g||void 0,c||void 0,w||void 0)},"setupEventListeners")();return e._nodes&&e._nodes.length>0&&e._nodes.forEach(g=>{e.onNodeAdded&&e.onNodeAdded(g)}),{vueNodeData:a,getNode:u,cleanup:y}}n(Sg,"useGraphNodeManager");const xg={class:"flex flex-col bg-interface-panel-surface"},_g={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl bg-inherit"},Tg=["disabled"],Ng={class:"text-sm font-semibold line-clamp-2"},$g={key:0,class:"pb-4"},Ig=H({__name:"PropertiesAccordionItem",props:Bn({isEmpty:{type:Boolean}},{collapse:{type:Boolean,default:!1},collapseModifiers:{}}),emits:["update:collapse"],setup(e){const o=Bo(e,"collapse");return(t,s)=>{const a=Se("tooltip");return m(),N("div",xg,[f("div",_g,[ue((m(),N("button",{type:"button",class:Q(C(pe)("group min-h-12 bg-transparent border-0 outline-0 ring-0 w-full text-left flex items-center justify-between pl-4 pr-3",!t.isEmpty&&"cursor-pointer")),disabled:t.isEmpty,onClick:s[0]||(s[0]=l=>o.value=!o.value)},[f("span",Ng,[Ne(t.$slots,"label")]),t.isEmpty?O("",!0):(m(),N("i",{key:0,class:Q(C(pe)("text-muted-foreground group-hover:text-base-foreground group-focus:text-base-foreground icon-[lucide--chevron-up] size-4 transition-all",o.value&&"-rotate-180"))},null,2))],10,Tg)),[[a,t.isEmpty?{value:t.$t("rightSidePanel.inputsNoneTooltip"),showDelay:1e3}:void 0]])]),!o.value&&!t.isEmpty?(m(),N("div",$g,[Ne(t.$slots,"default")])):O("",!0)])}}}),Mg={key:0,class:"space-y-4 rounded-lg bg-interface-surface px-4"},Pg={class:"min-h-8"},Dg={key:0,class:"text-sm leading-8 p-0 m-0 line-clamp-1"},Ag=H({__name:"SectionWidgets",props:{label:{},widgets:{}},setup(e){Qo("hideLayoutField",!0);const o=fe(),{t}=de();function s(r){return qi(r.type,r.name)||Ki}n(s,"getWidgetComponent");function a(r,u){r.value=u,r.callback?.(u),o.canvas?.setDirty(!0,!0)}n(a,"onWidgetValueChange");const l=k(()=>e.widgets.length===0),i=k(()=>e.label??(l.value?t("rightSidePanel.inputsNone"):t("rightSidePanel.inputs")));return(r,u)=>(m(),F(Ig,{"is-empty":l.value},{label:L(()=>[Ne(r.$slots,"label",{},()=>[_e(z(i.value),1)])]),default:L(()=>[l.value?O("",!0):(m(),N("div",Mg,[(m(!0),N(le,null,be(r.widgets,({widget:p,node:v},h)=>(m(),N("div",{key:`widget-${h}-${p.name}`,class:"widget-item gap-1.5 col-span-full grid grid-cols-subgrid"},[f("div",Pg,[p.name?(m(),N("p",Dg,z(p.label||p.name),1)):O("",!0)]),(m(),F(Qt(s(p)),{widget:p,"model-value":C(gl)(p),"node-id":String(v.id),"node-type":v.type,class:Q(C(pe)("col-span-1",C(Hi)(p.type)&&"min-h-36")),"onUpdate:modelValue":n(d=>a(p,d),"onUpdate:modelValue")},null,8,["widget","model-value","node-id","node-type","class","onUpdate:modelValue"]))]))),128))]))]),_:3},8,["is-empty"]))}}),Eg={class:"px-4 pb-4 flex gap-2 border-b border-interface-stroke"},Lg=H({__name:"TabParameters",props:{nodes:{}},setup(e){const o=k(()=>e.nodes.map(a=>{const{widgets:l=[]}=a;return{widgets:l.filter(r=>!(r.options?.canvasOnly||r.options?.hidden)).map(r=>({node:a,widget:r})),node:a}})),t=Je([]);async function s(a){if(a.trim()===""){t.value=o.value;return}const l=a.trim().toLowerCase().split(" ");t.value=o.value.map(i=>({...i,widgets:i.widgets.filter(({widget:r})=>{const u=r.label?.toLowerCase(),p=r.name.toLowerCase(),v=r.type.toLowerCase(),h=r.value?.toString().toLowerCase();return l.every(d=>p.includes(d)||u?.includes(d)||v?.includes(d)||h?.includes(d))})})).filter(i=>i.widgets.length>0)}return n(s,"searcher"),(a,l)=>(m(),N(le,null,[f("div",Eg,[W(vl,{searcher:s,"update-key":o.value},null,8,["update-key"])]),(m(!0),N(le,null,be(t.value,i=>(m(),F(Ag,{key:i.node.id,label:o.value.length>1?i.node.title:void 0,widgets:i.widgets,"default-collapse":o.value.length>1&&o.value===t.value,class:"border-b border-interface-stroke"},null,8,["label","widgets","default-collapse"]))),128))],64))}}),Vg=["disabled","onClick"],Og=H({__name:"FormSelectButton",props:{modelValue:{},options:{},optionLabel:{default:"label"},optionValue:{default:"value"},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:o}){const t=e,s=o,a=n((u,p)=>{if(typeof u!="object")return u;const v=t.optionValue;return u[v]??u.value??u.name??u.label??p},"getOptionValue"),l=n(u=>{if(typeof u=="object"&&u!==null){const p=t.optionLabel;return u[p]??u.label??u.name??u.value??String(u)}return String(u)},"getOptionLabel"),i=n(u=>{const p=a(t.options[u],u);return String(p)===String(t.modelValue??"")},"isSelected"),r=n(u=>{if(t.disabled)return;const p=a(t.options[u],u);s("update:modelValue",p)},"handleSelect");return(u,p)=>(m(),N("div",{class:Q(C(pe)(C(ru),"p-1 inline-flex justify-center items-center gap-1"))},[(m(!0),N(le,null,be(u.options,(v,h)=>(m(),N("button",{key:a(v,h),class:Q(C(pe)("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(h)&&!u.disabled,"hover:bg-interface-menu-component-surface-selected/50":!i(h)&&!u.disabled,"opacity-50 cursor-not-allowed":u.disabled,"cursor-pointer":!u.disabled},i(h)&&!u.disabled?"text-text-primary":"text-text-secondary")),disabled:u.disabled,onClick:n(d=>r(h),"onClick")},z(l(v)),11,Vg))),128))],2))}}),Rg={class:"space-y-4 p-3 text-sm text-muted-foreground"},Wg={class:"flex flex-col gap-2"},zg={class:"flex flex-col gap-2"},Bg={class:"bg-secondary-background border-none rounded-lg p-1 grid grid-cols-5 gap-1 justify-items-center"},Fg=["onClick"],Ug=["data-testid"],Gg={class:"flex items-center justify-between"},jg=H({__name:"TabSettings",props:{nodes:{}},setup(e){const o=e,t=Je([]);he(()=>{o.nodes?t.value=o.nodes:t.value=[]});const{t:s}=de(),a=fe(),l=it(),i=k(()=>l.completedActivePalette.light_theme),r=k({get(){let y=null;const g=t.value;return g.length===0?null:(g.length>1?(y=g[0].mode,g.every(c=>c.mode===y)||(y=null)):y=g[0].mode,y)},set(y){t.value.forEach(g=>{g.mode=y}),po(t),a.canvas?.setDirty(!0,!0)}}),u=k({get(){return t.value.some(y=>y.pinned)},set(y){t.value.forEach(g=>g.pin(y)),po(t),a.canvas?.setDirty(!0,!0)}});function p(y){return{dark:Et(y,{lightness:.3}),light:Et(y,{lightness:.4}),ringDark:Et(y,{lightness:.5}),ringLight:Et(y,{lightness:.1})}}n(p,"getColorValue");const v={name:"noColor",localizedName:n(()=>s("color.noColor"),"localizedName"),value:p(me.NODE_DEFAULT_BGCOLOR)},h=Object.entries(je.node_colors),d=[v,...h.map(([y,g])=>({name:y,localizedName:n(()=>s(`color.${y}`),"localizedName"),value:p(g.bgcolor)}))],b=k({get(){if(t.value.length===0)return null;const y=t.value.map(c=>c.getColorOption());let g=y[0];return y.every(c=>c===g)||(g=!1),g===!1?null:g==null||!g.bgcolor&&!g.color?v.name:h.find(([c,w])=>w.bgcolor===g.bgcolor&&w.color===g.color)?.[0]??null},set(y){if(y===null)return;const g=y===v.name?null:je.node_colors[y];for(const c of t.value)c.setColorOption(g);po(t),a.canvas?.setDirty(!0,!0)}});return(y,g)=>{const c=Se("tooltip");return m(),N("div",Rg,[f("div",Wg,[f("span",null,z(C(s)("rightSidePanel.nodeState")),1),W(Og,{modelValue:r.value,"onUpdate:modelValue":g[0]||(g[0]=w=>r.value=w),class:"w-full",options:[{label:C(s)("rightSidePanel.normal"),value:C(Ee).ALWAYS},{label:C(s)("rightSidePanel.bypass"),value:C(Ee).BYPASS},{label:C(s)("rightSidePanel.mute"),value:C(Ee).NEVER}]},null,8,["modelValue","options"])]),f("div",zg,[f("span",null,z(C(s)("rightSidePanel.color")),1),f("div",Bg,[(m(),N(le,null,be(d,w=>f("button",{key:w.name,class:Q(C(pe)("size-8 rounded-lg bg-transparent border-0 outline-0 ring-0 text-left flex justify-center items-center cursor-pointer",w.name===b.value?"bg-interface-menu-component-surface-selected":"hover:bg-interface-menu-component-surface-selected")),onClick:n(_=>b.value=w.name,"onClick")},[ue(f("div",{class:Q(C(pe)("size-4 rounded-full ring-2 ring-gray-500/10")),style:ve({backgroundColor:i.value?w.value.light:w.value.dark,"--tw-ring-color":w.name===b.value?i.value?w.value.ringLight:w.value.ringDark:void 0}),"data-testid":w.name},null,14,Ug),[[c,w.localizedName(),void 0,{top:!0}]])],10,Fg)),64))])]),f("div",Gg,[f("span",null,z(C(s)("rightSidePanel.pinned")),1),W(C(Pa),{modelValue:u.value,"onUpdate:modelValue":g[1]||(g[1]=w=>u.value=w)},null,8,["modelValue"])])])}}}),Hg={class:"pointer-events-none flex-1"},qg={class:"text-xs text-text-secondary line-clamp-1"},Kg={class:"text-sm line-clamp-1 leading-8"},Jg={key:0,class:"size-4 pointer-events-none icon-[lucide--grip-vertical]"},Qs=H({__name:"SubgraphNodeWidget",props:{nodeTitle:{},widgetName:{},isDraggable:{type:Boolean},isPhysical:{type:Boolean},class:{type:[Array,Object,String,Number,null,Boolean]}},emits:["toggleVisibility"],setup(e){const o=e;function t(){return o.isPhysical?"icon-[lucide--link]":o.isDraggable?"icon-[lucide--eye]":"icon-[lucide--eye-off]"}return n(t,"getIcon"),(s,a)=>(m(),N("div",{class:Q(C(pe)("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))},[f("div",Hg,[f("div",qg,z(s.nodeTitle),1),f("div",Kg,z(s.widgetName),1)]),W(ee,{variant:"muted-textonly",size:"sm",disabled:s.isPhysical,onClick:a[0]||(a[0]=ke(l=>s.$emit("toggleVisibility"),["stop"]))},{default:L(()=>[f("i",{class:Q(t())},null,2)]),_:1},8,["disabled"]),s.isDraggable?(m(),N("div",Jg)):O("",!0)],2))}}),Yg={key:0,class:"subgraph-edit-section flex h-full flex-col"},Qg={class:"p-4 flex gap-2"},Xg={class:"flex-1"},Zg={key:0,class:"flex flex-col border-t border-interface-stroke"},eh={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl min-h-12 px-4"},th={class:"text-sm font-semibold uppercase line-clamp-1"},oh={key:1,class:"flex flex-col border-t border-interface-stroke"},nh={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl min-h-12 px-4"},sh={class:"text-sm font-semibold uppercase line-clamp-1"},ah={class:"pb-2 px-2 space-y-0.5 mt-0.5"},lh={key:2,class:"flex justify-center border-t border-interface-stroke py-4"},ih=H({__name:"SubgraphEditor",setup(e){const o=fe(),t=E(void 0),s=E(),a=E(""),l=ga((P,T)=>({get(){P();const $=r.value;return $?Ji($.properties.proxyWidgets):[]},set($){T();const I=r.value;if($){if(!I){console.error("Attempted to toggle widgets with no node selected");return}I.properties.proxyWidgets=$}}}));async function i(P){a.value=P}n(i,"searcher");const r=k(()=>{const P=o.selectedItems[0];if(P instanceof Qn)return P}),u=k({get(){if(!r.value)return[];const P=r.value;function T([$,I]){if($==="-1"){const M=P.widgets.find(V=>V.name===I);return M?[[{id:-1,title:"(Linked)",type:""},M]]:[]}const B=P.subgraph._nodes_by_id[$];if(!B?.widgets)return[];const G=B.widgets.find(M=>M.name===I);return G?[[B,G]]:[]}return n(T,"mapWidgets"),l.value.flatMap(T)},set(P){if(!r.value){console.error("Attempted to toggle widgets with no node selected");return}l.value=P.map(ln)}}),p=k(()=>{const P=r.value;if(!P)return[];const{updatePreviews:T}=no(),$=P.subgraph.nodes;for(const I of $)I.updateComputedDisabled(),T(I);return $.flatMap(g).filter(([I,B])=>!B.computedDisabled)}),v=k(()=>{if(!r.value)return[];const T=l.value;return p.value.filter($=>!T.some(Yi($)))}),h=k(()=>{const P=a.value.toLowerCase();return P?v.value.filter(([T,$])=>T.title.toLowerCase().includes(P)||$.name.toLowerCase().includes(P)):v.value}),d=k(()=>r.value?h.value.filter(Qi):[]),b=k(()=>{const P=a.value.toLowerCase();return P?u.value.filter(([T,$])=>T.title.toLowerCase().includes(P)||$.name.toLowerCase().includes(P)):u.value});function y(P){return`${P[0].id}: ${P[1].name}`}n(y,"toKey");function g(P){return P.widgets?P.widgets.map(T=>[P,T]):[]}n(g,"nodeWidgets");function c([P,T]){const $=r.value;if(!$)return[];Zi(P,T,[$]),po(l)}n(c,"demote");function w([P,T]){const $=r.value;if(!$)return[];er(P,T,[$]),po(l)}n(w,"promote");function _(){if(!r.value)return;const T=l.value,$=h.value.map(ln);T.push(...$),l.value=T}n(_,"showAll");function S(){r.value&&(l.value=l.value.filter(T=>!b.value.some(tr(T))||T[0]==="-1"))}n(S,"hideAll");function x(){if(!r.value)return;const T=l.value,$=d.value.map(ln);T.push(...$),l.value=T}n(x,"showRecommended");function D(){t.value?.dispose(),!(a.value||!s.value?.children?.length)&&(t.value=new or(s.value,".draggable-item"),t.value.applyNewItemsOrder=function(){const P=[];let T=-1;this.getAllItems().forEach((G,M)=>{if(G===this.draggableItem){T=M;return}if(!this.isItemToggled(G)){P[M]=G;return}const V=this.isItemAbove(G)?M+1:M-1;P[V]=G});for(let G=0;G<this.getAllItems().length;G++)typeof P[G]>"u"&&(P[G]=this.draggableItem);const $=P.indexOf(this.draggableItem),I=u.value,[B]=I.splice(T,1);I.splice($,0,B),u.value=I})}return n(D,"setDraggableState"),qt(b,()=>{D()},{debounce:100}),Le(()=>{D(),r.value&&Xi(r.value)}),gt(()=>{t.value?.dispose()}),(P,T)=>r.value?(m(),N("div",Yg,[f("div",Qg,[W(vl,{searcher:i})]),f("div",Xg,[b.value.length?(m(),N("div",Zg,[f("div",eh,[f("div",th,z(P.$t("subgraphStore.shown")),1),f("a",{class:"cursor-pointer text-right text-xs font-normal text-text-secondary hover:text-azure-600 whitespace-nowrap",onClick:ke(S,["stop"])},z(P.$t("subgraphStore.hideAll")),1)]),f("div",{ref_key:"draggableItems",ref:s,class:"pb-2 px-2 space-y-0.5 mt-0.5"},[(m(!0),N(le,null,be(b.value,([$,I])=>(m(),F(Qs,{key:y([$,I]),class:"bg-interface-panel-surface","node-title":$.title,"widget-name":I.name,"is-shown":!0,"is-draggable":!a.value,"is-physical":$.id===-1,onToggleVisibility:n(B=>c([$,I]),"onToggleVisibility")},null,8,["node-title","widget-name","is-draggable","is-physical","onToggleVisibility"]))),128))],512)])):O("",!0),h.value.length?(m(),N("div",oh,[f("div",nh,[f("div",sh,z(P.$t("subgraphStore.hidden")),1),f("a",{class:"cursor-pointer text-right text-xs font-normal text-text-secondary hover:text-azure-600 whitespace-nowrap",onClick:ke(_,["stop"])},z(P.$t("subgraphStore.showAll")),1)]),f("div",ah,[(m(!0),N(le,null,be(h.value,([$,I])=>(m(),F(Qs,{key:y([$,I]),class:"bg-interface-panel-surface","node-title":$.title,"widget-name":I.name,onToggleVisibility:n(B=>w([$,I]),"onToggleVisibility")},null,8,["node-title","widget-name","onToggleVisibility"]))),128))])])):O("",!0),d.value.length?(m(),N("div",lh,[W(ee,{size:"sm",class:"rounded border-none px-3 py-0.5",onClick:ke(x,["stop"])},{default:L(()=>[_e(z(P.$t("subgraphStore.showRecommended")),1)]),_:1})])):O("",!0)])])):O("",!0)}}),rh={"data-testid":"properties-panel",class:"flex size-full flex-col bg-interface-panel-surface"},uh={class:"pt-1"},ch={class:"flex items-center justify-between pl-4 pr-3"},dh={class:"my-3.5 text-sm font-semibold line-clamp-2"},ph={class:"flex gap-2"},fh={key:0,class:"px-4 pb-2 pt-1"},mh={class:"scrollbar-thin flex-1 overflow-y-auto"},vh={key:0,class:"flex size-full p-4 items-start justify-start text-sm text-muted-foreground"},gh=H({__name:"RightSidePanel",setup(e){const o=fe(),t=to(),s=ie(),{t:a}=de(),{selectedItems:l}=Fe(o),{activeTab:i,isEditingSubgraph:r}=Fe(t),u=k(()=>s.get("Comfy.Sidebar.Location")),p=k(()=>u.value==="right"?"icon-[lucide--panel-left]":"icon-[lucide--panel-right]"),v=k(()=>l.value.length>0),h=k(()=>l.value.filter(Zt)),d=k(()=>y.value instanceof Qn),b=k(()=>h.value.length===1),y=k(()=>b.value?h.value[0]:null),g=k(()=>l.value.length),c=k(()=>b.value&&y.value?y.value.title||y.value.type||"Node":a("rightSidePanel.title",{count:g.value}));function w(){t.closePanel()}n(w,"closePanel");const _=k(()=>{const P=[{label:n(()=>a("rightSidePanel.parameters"),"label"),value:"parameters"},{label:n(()=>a("g.settings"),"label"),value:"settings"}];return(!v.value||b.value&&!d.value)&&P.push({label:n(()=>a("rightSidePanel.info"),"label"),value:"info"}),P});he(()=>{!_.value.some(P=>P.value===i.value)&&!(i.value==="subgraph"&&d.value)&&t.openPanel(_.value[0].value)});const S=E(!1);function x(P){S.value=!1;const T=P.trim();if(!T)return;const $=ze(y);$&&T!==$.title&&($.title=T,o.canvas?.setDirty(!0,!1))}n(x,"handleTitleEdit");function D(){S.value=!1}return n(D,"handleTitleCancel"),(P,T)=>(m(),N("div",rh,[f("section",uh,[f("div",ch,[f("h3",dh,[b.value?(m(),F(Hn,{key:0,"model-value":c.value,"is-editing":S.value,"input-attrs":{"data-testid":"node-title-input"},onEdit:x,onCancel:D,onDblclick:T[0]||(T[0]=$=>S.value=!0)},null,8,["model-value","is-editing"])):(m(),N(le,{key:1},[_e(z(c.value),1)],64))]),f("div",ph,[d.value?(m(),F(ee,{key:0,variant:"secondary",size:"icon",class:Q(C(pe)(C(r)&&"bg-secondary-background-selected")),onClick:T[1]||(T[1]=$=>C(t).openPanel(C(r)?"parameters":"subgraph"))},{default:L(()=>T[3]||(T[3]=[f("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["class"])):O("",!0),W(ee,{variant:"secondary",size:"icon","aria-pressed":C(t).isOpen,"aria-label":C(a)("rightSidePanel.togglePanel"),onClick:w},{default:L(()=>[f("i",{class:Q(C(pe)(p.value,"size-4"))},null,2)]),_:1},8,["aria-pressed","aria-label"])])]),v.value?(m(),N("nav",fh,[W(nr,{"model-value":C(i),"onUpdate:modelValue":T[2]||(T[2]=$=>{C(t).openPanel($)})},{default:L(()=>[(m(!0),N(le,null,be(_.value,$=>(m(),F(sr,{key:$.value,class:"text-sm py-1 px-2 font-inter",value:$.value},{default:L(()=>[_e(z($.label()),1)]),_:2},1032,["value"]))),128))]),_:1},8,["model-value"])])):O("",!0)]),f("div",mh,[v.value?d.value&&C(r)?(m(),F(ih,{key:1,node:y.value},null,8,["node"])):(m(),N(le,{key:2},[C(i)==="parameters"?(m(),F(Lg,{key:0,nodes:h.value},null,8,["nodes"])):C(i)==="info"?(m(),F(mg,{key:1,nodes:h.value},null,8,["nodes"])):C(i)==="settings"?(m(),F(jg,{key:2,nodes:h.value},null,8,["nodes"])):O("",!0)],64)):(m(),N("div",vh,z(P.$t("rightSidePanel.noSelection")),1))])]))}}),cs=Ot("searchBox",()=>{const e=ie(),{x:o,y:t}=Ul(),s=k(()=>e.get("Comfy.NodeSearchBoxImpl")==="default"),a=Je(null);function l(u){a.value=u}n(l,"setPopoverRef");const i=E(!1);function r(){if(s.value){i.value=!i.value;return}a.value&&a.value.showSearchBox(new MouseEvent("click",{clientX:o.value,clientY:t.value,layerY:t.value}))}return n(r,"toggleVisible"),{newSearchBoxEnabled:s,setPopoverRef:l,toggleVisible:r,visible:i}}),hh={name:"AutoCompletePlus",extends:xo,emits:["focused-option-changed"],data(){return{isComposing:!1}},mounted(){typeof xo.mounted=="function"&&xo.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}xo.methods.onKeyDown.call(this,e)}}},yh={class:"option-container flex w-full cursor-pointer items-center justify-between overflow-hidden px-2 py-0"},bh={class:"option-display-name flex flex-col font-semibold"},wh={key:0},kh=["innerHTML"],Ch=["innerHTML"],Sh={key:0,class:"option-category truncate text-sm font-light text-muted"},xh={class:"option-badges"},_h=H({__name:"NodeSearchItem",props:{nodeDef:{},currentQuery:{}},setup(e){const o=ie(),t=k(()=>o.get("Comfy.NodeSearchBoxImpl.ShowCategory")),s=k(()=>o.get("Comfy.NodeSearchBoxImpl.ShowIdName")),a=k(()=>o.get("Comfy.NodeSearchBoxImpl.ShowNodeFrequency")),l=es(),i=k(()=>l.getNodeFrequency(p.nodeDef)),r=ar(),u=k(()=>r.isBookmarked(p.nodeDef)),p=e;return(v,h)=>(m(),N("div",yh,[f("div",bh,[f("div",null,[u.value?(m(),N("span",wh,h[0]||(h[0]=[f("i",{class:"pi pi-bookmark-fill mr-1 text-sm"},null,-1)]))):O("",!0),f("span",{innerHTML:C(xs)(v.nodeDef.display_name,v.currentQuery)},null,8,kh),h[1]||(h[1]=f("span",null," ",-1)),s.value?(m(),F(C(Kt),{key:1,severity:"secondary"},{default:L(()=>[f("span",{innerHTML:C(xs)(v.nodeDef.name,v.currentQuery)},null,8,Ch)]),_:1})):O("",!0)]),t.value?(m(),N("div",Sh,z(v.nodeDef.category.replaceAll("/"," > ")),1)):O("",!0)]),f("div",xh,[v.nodeDef.experimental?(m(),F(C(Kt),{key:0,value:v.$t("g.experimental"),severity:"primary"},null,8,["value"])):O("",!0),v.nodeDef.deprecated?(m(),F(C(Kt),{key:1,value:v.$t("g.deprecated"),severity:"danger"},null,8,["value"])):O("",!0),a.value&&i.value>0?(m(),F(C(Kt),{key:2,value:C(lr)(i.value,{roundToInt:!0}),severity:"secondary"},null,8,["value"])):O("",!0),v.nodeDef.nodeSource.type!==C(ir).Unknown?(m(),F(C(ui),{key:3,class:"text-sm font-light"},{default:L(()=>[_e(z(v.nodeDef.nodeSource.displayText),1)]),_:1})):O("",!0)])]))}}),Th=De(_h,[["__scopeId","data-v-acda36a0"]]),Nh={class:"comfy-vue-node-search-container flex w-full min-w-96 items-center justify-center"},$h={class:"_dialog-body"},Ih=H({__name:"NodeSearchBox",props:{filters:{},searchLimit:{default:64}},emits:["addFilter","removeFilter","addNode"],setup(e,{emit:o}){const t=ie(),{t:s}=de(),a=k(()=>t.get("Comfy.NodeSearchBoxImpl.NodePreview")),l=E(),i=E(!1),r=`comfy-vue-node-search-box-input-${Math.random()}`,u=E([]),p=E(null),v=E(""),h=k(()=>e.filters.length===0?s("g.searchNodes")+"...":""),d=yt(),b=es(),y=Xo(T=>{T.trim()},500),g=n(T=>{const $=T===""&&e.filters.length===0;v.value=T,u.value=$?b.topNodeDefs:[...d.nodeSearchService.searchNode(T,e.filters,{limit:e.searchLimit})],y(T)},"search"),c=o,w=n(T=>{c("addNode",T)},"onAddNode");let _=null;const S=n(async()=>{_??=document.getElementById(r),_&&(_.blur(),await Oe(()=>_?.focus()))},"reFocusInput");Le(()=>{_??=document.getElementById(r),_&&_.focus(),l.value.hide=()=>g(""),g(""),l.value.show()});const x=n(T=>{i.value=!1,c("addFilter",T)},"onAddFilter"),D=n(async(T,$)=>{T.stopPropagation(),T.preventDefault(),c("removeFilter",$),await S()},"onRemoveFilter"),P=n(T=>{if(T===-1){p.value=null;return}const $=u.value[T];p.value=$},"setHoverSuggestion");return(T,$)=>(m(),N("div",Nh,[a.value&&p.value?(m(),N("div",{key:0,class:"comfy-vue-node-preview-container absolute top-[50px] left-[-375px] z-50 cursor-pointer",onMousedown:$[0]||($[0]=ke(I=>w(p.value),["stop"]))},[(m(),F(rr,{key:p.value?.name||"","node-def":p.value},null,8,["node-def"]))],32)):O("",!0),W(ee,{variant:"secondary","aria-label":T.$t("g.addNodeFilterCondition"),class:"filter-button z-10",onClick:$[1]||($[1]=I=>i.value=!0)},{default:L(()=>$[6]||($[6]=[f("i",{class:"pi pi-filter"},null,-1)])),_:1},8,["aria-label"]),W(C(Da),{visible:i.value,"onUpdate:visible":$[2]||($[2]=I=>i.value=I),class:"min-w-96","dismissable-mask":"",modal:"",onHide:S},{header:L(()=>[f("h3",null,z(T.$t("g.addNodeFilterCondition")),1)]),default:L(()=>[f("div",$h,[W(ur,{onAddFilter:x})])]),_:1},8,["visible"]),W(hh,{ref_key:"autoCompletePlus",ref:l,"model-value":T.filters,class:"comfy-vue-node-search-box z-10 grow","scroll-height":"40vh",placeholder:h.value,"input-id":r,"append-to":"self",suggestions:u.value,delay:100,loading:!C(b).isLoaded,"complete-on-focus":"","auto-option-focus":"","force-selection":"",multiple:"","option-label":"display_name",onComplete:$[3]||($[3]=I=>g(I.query)),onOptionSelect:$[4]||($[4]=I=>w(I.value)),onFocusedOptionChanged:$[5]||($[5]=I=>P(I))},{option:L(({option:I})=>[W(Th,{"node-def":I,"current-query":v.value},null,8,["node-def","current-query"])]),chip:L(({value:I})=>[I.filterDef&&I.value?(m(),F(cr,{key:`${I.filterDef.id}-${I.value}`,text:I.value,badge:I.filterDef.invokeSequence.toUpperCase(),"badge-class":I.filterDef.invokeSequence+"-badge",onRemove:n(B=>D(B,I),"onRemove")},null,8,["text","badge","badge-class","onRemove"])):O("",!0)]),_:1},8,["model-value","placeholder","suggestions","loading"])]))}}),Mh=H({__name:"NodeSearchBoxPopover",setup(e,{expose:o}){let t=null,s=null,a=!1;const l=ie(),i=cs(),r=no(),{visible:u,newSearchBoxEnabled:p}=Fe(i),v=E(!0);function h(){return t?[t.canvasX,t.canvasY]:r.getCanvasCenter()}n(h,"getNewNodeLocation");const d=E([]);function b(R){d.value.push(R)}n(b,"addFilter");function y(R){d.value=d.value.filter(j=>ks(j)!==ks(R))}n(y,"removeFilter");function g(){d.value=[]}n(g,"clearFilters");function c(){u.value=!1}n(c,"closeDialog");const w=fe();function _(R){const j=r.addNodeOnGraph(R,{pos:h()});a&&t?w.getCanvas().linkConnector.connectToNode(j,t):t||console.warn("The trigger event was undefined when addNode was called."),a=!1,Pe().activeWorkflow?.changeTracker?.checkState(),window.requestAnimationFrame(c)}n(_,"addNode");function S(R){p.value?R?.pointerType==="touch"?setTimeout(()=>{P(R)},128):P(R):w.getCanvas().showSearchBox(R)}n(S,"showSearchBox");function x(){return w.getCanvas().linkConnector.renderLinks.at(0)}n(x,"getFirstLink");const D=yt();function P(R){const j=x();if(j){const q=j.toType==="input"?D.nodeSearchService.inputTypeFilter:D.nodeSearchService.outputTypeFilter,K=j.fromSlot.type?.toString()??"";b({filterDef:q,value:K})}u.value=!0,t=R,v.value=!1,setTimeout(()=>{v.value=!0},300)}n(P,"showNewSearchBox");function T(R){const j=x();if(!j)return;const{node:q,fromSlot:K,toType:ne}=j,ce={e:R,allow_searchbox:!0,showSearchBox:n(()=>{nt(),S(R)},"showSearchBox")},X=j.fromReroute?.id,oe=ne==="input"?{nodeFrom:q,slotFrom:K,afterRerouteId:X}:{nodeTo:q,slotTo:K,afterRerouteId:X},ae=w.getCanvas(),xe=ae.showConnectionMenu({...oe,...ce});if(!xe){console.warn("No menu was returned from showConnectionMenu");return}t=R,s=new AbortController;const{signal:Ue}=s,qe={once:!0,signal:Ue};Ae(ae.canvas,"connect-new-default-node",He=>{if(!(He instanceof CustomEvent))throw new Error("Invalid event");const Ge=He.detail?.node;if(!(Ge instanceof vt))throw new Error("Invalid node");a=!1,He.preventDefault(),ae.linkConnector.connectToNode(Ge,R)},qe);const nt=Ae(xe.controller.signal,"abort",U,qe)}n(T,"showContextMenu"),he(()=>{const{canvas:R}=w;R&&(me.release_link_on_empty_shows_menu=!1,R.allow_searchbox=!1,Ae(R.linkConnector.events,"dropped-on-canvas",V))});function $(R){if(R.detail.subType==="empty-double-click")S(R.detail.originalEvent);else if(R.detail.subType==="group-double-click"){const j=R.detail.group,[q,K]=j.pos;R.detail.originalEvent.canvasY-K>j.titleHeight&&S(R.detail.originalEvent)}}n($,"canvasEventHandler");const I=k(()=>l.get("Comfy.LinkRelease.Action")),B=k(()=>l.get("Comfy.LinkRelease.ActionShift"));function G(R){return R.preventDefault()}n(G,"preventDefault");function M(R){R.preventDefault();const j=w.getCanvas();j.linkConnector.state.snapLinksPos=[R.detail.canvasX,R.detail.canvasY],Ae(j.linkConnector.events,"reset",G,{once:!0})}n(M,"cancelNextReset");function V(R){switch(a=!0,R.detail.shiftKey?B.value:I.value){case kt.SEARCH_BOX:M(R),S(R.detail);break;case kt.CONTEXT_MENU:M(R),T(R.detail);break;case kt.NO_ACTION:}}n(V,"handleDroppedOnCanvas");function U(){s?.abort(),s=null,t=null;const R=w.getCanvas();R.linkConnector.events.removeEventListener("reset",G),a&&R.linkConnector.disconnectLinks(),R.linkConnector.reset(),R.setDirty(!0,!0)}return n(U,"reset"),se(u,()=>{u.value||U()}),Ae(document,"litegraph:canvas",$),o({showSearchBox:S}),(R,j)=>(m(),N("div",null,[W(C(Da),{visible:C(u),"onUpdate:visible":j[0]||(j[0]=q=>ft(u)?u.value=q:null),modal:"","dismissable-mask":v.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:g},{container:L(()=>[W(Ih,{filters:d.value,onAddFilter:b,onRemoveFilter:y,onAddNode:_},null,8,["filters"])]),_:1},8,["visible","dismissable-mask"])]))}}),Ph=["width","height"],Dh=H({__name:"ComfyLogo",props:{size:{default:16},color:{default:"currentColor"},class:{},mode:{default:"outline"}},setup(e){const o=k(()=>e.class||""),t=k(()=>({stroke:e.mode==="outline"?e.color:void 0,strokeWidth:e.mode==="outline"?1:void 0,fill:e.mode==="fill"?e.color:"none"}));return(s,a)=>(m(),N("svg",{class:Q(o.value),width:s.size,height:s.size,viewBox:"0 0 18 18",xmlns:"http://www.w3.org/2000/svg"},[f("path",$t({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,Ph))}}),Ah={class:"relative aspect-square w-full overflow-hidden rounded-t-lg select-none"},Eh={key:1,class:"flex h-full w-full items-center justify-center"},Lh=H({__name:"BaseThumbnail",props:{hoverZoom:{default:4},isHovered:{type:Boolean}},setup(e){const o=E(!1),t=E(null);return Le(()=>{Array.from(t.value?.getElementsByTagName("img")??[]).forEach(a=>{Ae(a,"error",()=>{o.value=!0})})}),(s,a)=>(m(),N("div",Ah,[o.value?(m(),N("div",Eh,a[0]||(a[0]=[f("img",{src:du,draggable:"false",class:"h-full w-full transform-gpu object-cover transition-transform duration-300 ease-out"},null,-1)]))):(m(),N("div",{key:0,ref_key:"contentRef",ref:t,class:"h-full w-full transform-gpu transition-transform duration-1000 ease-out",style:ve(s.isHovered?{transform:`scale(${1+s.hoverZoom/100})`}:void 0)},[Ne(s.$slots,"default",{},void 0,!0)],4))]))}}),an=De(Lh,[["__scopeId","data-v-c216f2c0"]]),Vh={class:"flex h-full w-full items-center justify-center p-4",style:{backgroundImage:"url(/assets/images/default-template.png)",backgroundRepeat:"round"}},Oh=["src"],Rh=H({__name:"AudioThumbnail",props:{src:{}},setup(e){return(o,t)=>(m(),F(an,null,{default:L(()=>[f("div",Vh,[f("audio",{controls:"",class:"relative w-full",src:o.src,onClick:t[0]||(t[0]=ke(()=>{},["stop"]))},null,8,Oh)])]),_:1}))}}),Wh=50,zh=H({__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=E(Wh),s=E(null),{elementX:a,elementWidth:l,isOutside:i}=Gl(s);return se([()=>e.isHovered,a,l,i],([r,u,p,v])=>{r&&(v||(t.value=u/p*100))}),(r,u)=>(m(),F(an,{"is-hovered":r.isHovered},{default:L(()=>[W(ho,{src:r.baseImageSrc,alt:r.alt,"image-class":C(o)?"w-full h-full object-cover":"max-w-full max-h-64 object-contain"},null,8,["src","alt","image-class"]),f("div",{ref_key:"containerRef",ref:s,class:"absolute inset-0"},[W(ho,{src:r.overlayImageSrc,alt:r.alt,"image-class":C(o)?"w-full h-full object-cover":"max-w-full max-h-64 object-contain","image-style":{clipPath:`inset(0 ${100-t.value}% 0 0)`}},null,8,["src","alt","image-class","image-style"]),f("div",{class:"pointer-events-none absolute inset-y-0 z-10 w-0.5 bg-white/30 backdrop-blur-sm",style:ve({left:`${t.value}%`})},null,4)],512)]),_:1},8,["is-hovered"]))}}),Bh=H({__name:"DefaultThumbnail",props:{src:{},alt:{},hoverZoom:{},isHovered:{type:Boolean},isVideo:{type:Boolean}},setup(e){const o=e.isVideo??(e.src?.toLowerCase().endsWith(".webp")||!1);return(t,s)=>(m(),F(an,{"hover-zoom":t.hoverZoom,"is-hovered":t.isHovered},{default:L(()=>[W(ho,{src:t.src,alt:t.alt,"image-class":["transform-gpu transition-transform duration-300 ease-out",C(o)?"w-full h-full object-cover":"max-w-full max-h-64 object-contain"],"image-style":t.isHovered?{transform:`scale(${1+t.hoverZoom/100})`}:void 0},null,8,["src","alt","image-class","image-style"])]),_:1},8,["hover-zoom","is-hovered"]))}}),Fh={class:"relative h-full w-full"},Uh={class:"absolute inset-0"},Gh={class:"absolute inset-0 z-10"},jh=H({__name:"HoverDissolveThumbnail",props:{baseImageSrc:{},overlayImageSrc:{},alt:{},isHovered:{type:Boolean},isVideo:{type:Boolean}},setup(e){const o=e.isVideo||e.baseImageSrc?.toLowerCase().endsWith(".webp")||e.overlayImageSrc?.toLowerCase().endsWith(".webp")||!1,t=k(()=>o?"size-full object-cover":"size-full object-contain"),s=k(()=>{const a="size-full transition-opacity duration-300",l=o?"object-cover":"object-contain",i=e.isHovered?"opacity-100":"opacity-0";return`${a} ${l} ${i}`});return(a,l)=>(m(),F(an,{"is-hovered":a.isHovered},{default:L(()=>[f("div",Fh,[f("div",Uh,[W(ho,{src:a.baseImageSrc,alt:a.alt,"image-class":t.value},null,8,["src","alt","image-class"])]),f("div",Gh,[W(ho,{src:a.overlayImageSrc,alt:a.alt,"image-class":s.value},null,8,["src","alt","image-class"])])])]),_:1},8,["is-hovered"]))}});function Hh(e,o={}){const{itemsPerPage:t=12,initialPage:s=1}=o,a=E(s),l=E(!1),i=Je(new Set([])),r=k(()=>{const b="value"in e?e.value:e;return Array.isArray(b)?b:[]}),u=k(()=>{const b=r.value;if(b.length===0)return[];const y=Array.from(i.value).sort((w,_)=>w-_),c=Math.max(...y,0)*t;return b.slice(0,c)}),p=k(()=>{const b=r.value;if(b.length===0)return!1;const y=Array.from(i.value);return Math.max(...y,0)*t<b.length}),v=k(()=>{const b=r.value;return b.length===0?0:Math.ceil(b.length/t)}),h=n(async()=>{if(l.value||!p.value)return;l.value=!0;const b=Array.from(i.value),y=Math.max(...b,0)+1,g=new Set(i.value);g.add(y),i.value=g,a.value=y,l.value=!1},"loadNextPage");return se(()=>r.value.length,b=>{b>0&&i.value.size===0&&(i.value=new Set([1]))},{immediate:!0}),{paginatedItems:u,isLoading:l,hasMoreItems:p,currentPage:a,totalPages:v,loadNextPage:h,reset:n(()=>{a.value=s,i.value=new Set([]),l.value=!1,r.value.length>0&&(i.value=new Set([1]))},"reset")}}n(Hh,"useLazyPagination");function qh(e){const o=ie(),t=E(""),s=E(o.get("Comfy.Templates.SelectedModels")),a=E(o.get("Comfy.Templates.SelectedUseCases")),l=E(o.get("Comfy.Templates.SelectedRunsOn")),i=E(o.get("Comfy.Templates.SortBy")),r=k(()=>{const M="value"in e?e.value:e;return Array.isArray(M)?M:[]}),u={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},p=k(()=>new ra(r.value,u)),v=k(()=>{const M=new Set;return r.value.forEach(V=>{Array.isArray(V.models)&&V.models.forEach(U=>M.add(U))}),Array.from(M).sort()}),h=k(()=>{const M=new Set;return r.value.forEach(V=>{V.tags&&Array.isArray(V.tags)&&V.tags.forEach(U=>M.add(U))}),Array.from(M).sort()}),d=k(()=>["ComfyUI","External or Remote API"]),b=va(t,50),y=k(()=>b.value.trim()?p.value.search(b.value).map(V=>V.item):r.value),g=k(()=>s.value.length===0?y.value:y.value.filter(M=>!M.models||!Array.isArray(M.models)?!1:s.value.some(V=>M.models?.includes(V)))),c=k(()=>a.value.length===0?g.value:g.value.filter(M=>!M.tags||!Array.isArray(M.tags)?!1:a.value.some(V=>M.tags?.includes(V)))),w=k(()=>l.value.length===0?c.value:c.value.filter(M=>{const V=M.openSource===!1,U=M.openSource!==!1;return l.value.some(R=>R==="External or Remote API"?V:R==="ComfyUI"?U:!1)})),_=n(M=>typeof M.vram=="number"&&Number.isFinite(M.vram)&&M.vram>0?M.vram:Number.POSITIVE_INFINITY,"getVramMetric"),S=k(()=>{const M=[...w.value];switch(i.value){case"alphabetical":return M.sort((V,U)=>{const R=V.title||V.name||"",j=U.title||U.name||"";return R.localeCompare(j)});case"newest":return M.sort((V,U)=>{const R=new Date(V.date||"1970-01-01");return new Date(U.date||"1970-01-01").getTime()-R.getTime()});case"vram-low-to-high":return M.sort((V,U)=>{const R=_(V),j=_(U);if(R===j){const q=V.title||V.name||"",K=U.title||U.name||"";return q.localeCompare(K)}return R===Number.POSITIVE_INFINITY?1:j===Number.POSITIVE_INFINITY?-1:R-j});case"model-size-low-to-high":return M.sort((V,U)=>{const R=typeof V.size=="number"?V.size:Number.POSITIVE_INFINITY,j=typeof U.size=="number"?U.size:Number.POSITIVE_INFINITY;return R===j?0:R-j});case"default":default:return M}}),x=k(()=>S.value),D=n(()=>{t.value="",s.value=[],a.value=[],l.value=[],i.value="newest"},"resetFilters"),P=n(M=>{s.value=s.value.filter(V=>V!==M)},"removeModelFilter"),T=n(M=>{a.value=a.value.filter(V=>V!==M)},"removeUseCaseFilter"),$=n(M=>{l.value=l.value.filter(V=>V!==M)},"removeRunsOnFilter"),I=k(()=>x.value.length),B=k(()=>r.value.length),G=Xo(()=>{},500);return se([t,s,a,l,i],()=>{(t.value.trim()!==""||s.value.length>0||a.value.length>0||l.value.length>0||i.value!=="default")&&G()},{deep:!0}),qt(s,M=>{o.set("Comfy.Templates.SelectedModels",M)},{debounce:500,deep:!0}),qt(a,M=>{o.set("Comfy.Templates.SelectedUseCases",M)},{debounce:500,deep:!0}),qt(l,M=>{o.set("Comfy.Templates.SelectedRunsOn",M)},{debounce:500,deep:!0}),qt(i,M=>{o.set("Comfy.Templates.SortBy",M)},{debounce:500}),{searchQuery:t,selectedModels:s,selectedUseCases:a,selectedRunsOn:l,sortBy:i,filteredTemplates:x,availableModels:v,availableUseCases:h,availableRunsOn:d,filteredCount:I,totalCount:B,resetFilters:D,removeModelFilter:P,removeUseCaseFilter:T,removeRunsOnFilter:$}}n(qh,"useTemplateFiltering");function yl(){const{t:e}=de(),o=sl(),t=ht(),s=E(null),a=E(null),l=k(()=>o.isLoaded),i=k(()=>o.groupedTemplates),r=n(async()=>(o.isLoaded||await o.loadWorkflowTemplates(),o.isLoaded),"loadTemplates"),u=n(()=>{if(i.value.length>0){const g=i.value[0].modules[0];p(g)}},"selectFirstTemplateCategory"),p=n(g=>(s.value=g,g!==null),"selectTemplateCategory"),v=n((g,c,w="1")=>{const _=c==="default"?we.fileURL(`/templates/${g.name}`):we.apiURL(`/workflow_templates/${c}/${g.name}`),S=c==="default"&&w?`-${w}`:"";return`${_}${S}.${g.mediaSubtype}`},"getTemplateThumbnailUrl"),h=n((g,c)=>{const w=g.title??g.name??`${c} Template`;return c==="default"?g.localizedTitle??w:w},"getTemplateTitle"),d=n(g=>(g.localizedDescription||g.description)?.replace(/[-_]/g," ").trim()??"","getTemplateDescription"),b=n(async(g,c)=>{if(!l.value)return!1;a.value=g;let w;try{if(c==="all"){const D=i.value.find($=>$.label===e("templateWorkflows.category.ComfyUI Examples","ComfyUI Examples"))?.modules.find($=>$.moduleName==="all")?.templates.find($=>$.name===g);if(!D||!D.sourceModule)return!1;const P=D.sourceModule;w=await y(g,P);const T=P==="default"?e(`templateWorkflows.template.${g}`,g):g;return t.closeDialog(),await J.loadGraphData(w,!0,!0,T,{openSource:"template"}),!0}w=await y(g,c);const _=c==="default"?e(`templateWorkflows.template.${g}`,g):g;return t.closeDialog(),await J.loadGraphData(w,!0,!0,_,{openSource:"template"}),!0}catch(_){return console.error("Error loading workflow template:",_),!1}finally{a.value=null}},"loadWorkflowTemplate"),y=n(async(g,c)=>c==="default"?fetch(we.fileURL(`/templates/${g}.json`)).then(w=>w.json()):fetch(we.apiURL(`/workflow_templates/${c}/${g}.json`)).then(w=>w.json()),"fetchTemplateJson");return{selectedTemplate:s,loadingTemplateId:a,isTemplatesLoaded:l,allTemplateGroups:i,loadTemplates:r,selectFirstTemplateCategory:u,selectTemplateCategory:p,getTemplateThumbnailUrl:v,getTemplateTitle:h,getTemplateDescription:d,loadWorkflowTemplate:b}}n(yl,"useTemplateWorkflows");function bl(e={}){const{minWidth:o="15rem",maxWidth:t="1fr",padding:s="0",gap:a="1rem",columns:l}=e;return l!==void 0&&l<1&&console.warn("createGridStyle: columns must be >= 1, defaulting to 1"),{display:"grid",gridTemplateColumns:l?`repeat(${Math.max(1,l??1)}, 1fr)`:`repeat(auto-fill, minmax(${o}, ${t}))`,padding:s,gap:a}}n(bl,"createGridStyle");const Kh={class:"text-neutral text-base"},Jh={class:"flex gap-2"},Yh={class:"relative flex flex-wrap justify-between gap-2 px-6 pb-4"},Qh={class:"flex flex-wrap gap-2"},Xh={key:0,class:"text-neutral px-6 pt-4 pb-2 text-2xl font-semibold"},Zh={key:0,class:"flex h-64 flex-col items-center justify-center text-neutral-500"},ey={class:"mb-2 text-lg"},ty={class:"text-sm"},oy={key:1},ny={key:0,class:"inline-block h-8 w-48 animate-pulse rounded bg-dialog-surface"},sy={class:"relative h-full w-full overflow-hidden rounded-lg"},ay={class:"flex flex-col gap-2 pt-3"},ly=["title"],iy={class:"flex justify-between gap-2"},ry={class:"flex-1"},uy=["title"],cy={key:0,class:"flex flex-col-reverse justify-center"},dy={key:0,class:"text-sm text-muted"},py={key:3,class:"mt-6 px-6 text-sm text-muted"},fy=H({__name:"WorkflowTemplateSelectorDialog",props:{onClose:{type:Function}},setup(e){const{t:o}=de(),t=E(0),s=E(!1);Le(()=>{t.value=Date.now()});const a=n(()=>{e.onClose()},"onClose");Qo(sn,a);const l=sl(),{loadTemplates:i,loadWorkflowTemplate:r,getTemplateThumbnailUrl:u,getTemplateTitle:p,getTemplateDescription:v}=yl(),h=n(Y=>Y.sourceModule||"default","getEffectiveSourceModule"),d=n(Y=>{const Z=h(Y);return u(Y,Z,Z==="default"?"1":"")},"getBaseThumbnailSrc"),b=n(Y=>{const Z=h(Y);return u(Y,Z,Z==="default"?"2":"")},"getOverlayThumbnailSrc"),y=n(Y=>{Y.tutorialUrl&&window.open(Y.tutorialUrl,"_blank")},"openTutorial"),g=k(()=>Ke.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]"}]}]:l.navGroupedTemplates),c=k(()=>bl()),w=k(()=>l.enhancedTemplates),_=k(()=>oe.value?l.filterTemplatesByCategory(oe.value):w.value),{searchQuery:S,selectedModels:x,selectedUseCases:D,selectedRunsOn:P,sortBy:T,filteredTemplates:$,availableModels:I,availableUseCases:B,availableRunsOn:G,filteredCount:M,totalCount:V,resetFilters:U}=qh(_),R=k({get(){return x.value.map(Y=>({name:Y,value:Y}))},set(Y){x.value=Y.map(Z=>Z.value)}}),j=k({get(){return D.value.map(Y=>({name:Y,value:Y}))},set(Y){D.value=Y.map(Z=>Z.value)}}),q=k({get(){return P.value.map(Y=>({name:Y,value:Y}))},set(Y){P.value=Y.map(Z=>Z.value)}}),K=E(null),ne=E(null),ce=E([]),X=E(0),oe=E("all"),ae=E(""),xe=k(()=>I.value.map(Y=>({name:Y,value:Y}))),Ue=k(()=>B.value.map(Y=>({name:Y,value:Y}))),qe=k(()=>G.value.map(Y=>({name:Y,value:Y}))),nt=k(()=>R.value.length===0?o("templateWorkflows.modelFilter","Model Filter"):R.value.length===1?R.value[0].name:o("templateWorkflows.modelsSelected",{count:R.value.length})),He=k(()=>j.value.length===0?o("templateWorkflows.useCaseFilter","Use Case"):j.value.length===1?j.value[0].name:o("templateWorkflows.useCasesSelected",{count:j.value.length})),Ge=k(()=>q.value.length===0?o("templateWorkflows.runsOnFilter","Runs On"):q.value.length===1?q.value[0].name:o("templateWorkflows.runsOnSelected",{count:q.value.length})),bt=k(()=>[{name:o("templateWorkflows.sort.newest","Newest"),value:"newest"},{name:o("templateWorkflows.sort.default","Default"),value:"default"},{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"}]),rt=E(null),Ft=k(()=>!S.value.trim()),{paginatedItems:Ut,isLoading:xt,hasMoreItems:ut,loadNextPage:It,reset:Mt}=Hh($,{itemsPerPage:24}),ct=k(()=>Ft.value?Ut.value:$.value);pu(rt,()=>{Ft.value&&ut.value&&!xt.value&&It()}),se([S,oe,T,x,D,P],()=>{Mt(),K.value=null,X.value++});const io=n(async Y=>{K.value=Y.name;try{await r(Y.name,h(Y)),s.value=!0,a()}finally{K.value=null}},"onLoadWorkflow"),ro=k(()=>{const Y=g.value.find(Z=>"id"in Z?Z.id===oe.value:Z.items?.some($e=>$e.id===oe.value));return Y?"id"in Y?Y.label:Y.items?.find(Z=>Z.id===oe.value)?.label||o("templateWorkflows.allTemplates","All Templates"):o("templateWorkflows.allTemplates","All Templates")}),{isLoading:Ke}=ca(async()=>(await Promise.all([i(),l.loadWorkflowTemplates()]),!0),!1,{immediate:!0});return gt(()=>{ce.value=[]}),(Y,Z)=>{const $e=Se("tooltip");return m(),F(ns,{"content-title":Y.$t("templateWorkflows.title","Workflow Templates"),class:"workflow-template-selector-dialog"},{leftPanel:L(()=>[W(ss,{modelValue:oe.value,"onUpdate:modelValue":Z[0]||(Z[0]=te=>oe.value=te),"nav-items":g.value},{"header-icon":L(()=>Z[8]||(Z[8]=[f("i",{class:"icon-[comfy--template]"},null,-1)])),"header-title":L(()=>[f("span",Kh,z(Y.$t("sideToolbar.templates","Templates")),1)]),_:1},8,["modelValue","nav-items"])]),header:L(()=>[W(en,{modelValue:C(S),"onUpdate:modelValue":Z[1]||(Z[1]=te=>ft(S)?S.value=te:null),size:"lg",class:"max-w-[384px]"},null,8,["modelValue"])]),"header-right-area":L(()=>[f("div",Jh,[C(M)!==C(V)?(m(),F(ee,{key:0,variant:"secondary",size:"lg",onClick:C(U)},{default:L(()=>[Z[9]||(Z[9]=f("i",{class:"icon-[lucide--filter-x]"},null,-1)),f("span",null,z(Y.$t("templateWorkflows.resetFilters","Clear Filters")),1)]),_:1},8,["onClick"])):O("",!0)])]),contentFilter:L(()=>[f("div",Yh,[f("div",Qh,[W(Vt,{modelValue:R.value,"onUpdate:modelValue":Z[2]||(Z[2]=te=>R.value=te),"search-query":ae.value,"onUpdate:searchQuery":Z[3]||(Z[3]=te=>ae.value=te),class:"w-[250px]",label:nt.value,options:xe.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:L(()=>Z[10]||(Z[10]=[f("i",{class:"icon-[lucide--cpu]"},null,-1)])),_:1},8,["modelValue","search-query","label","options"]),W(Vt,{modelValue:j.value,"onUpdate:modelValue":Z[4]||(Z[4]=te=>j.value=te),label:He.value,options:Ue.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:L(()=>Z[11]||(Z[11]=[f("i",{class:"icon-[lucide--target]"},null,-1)])),_:1},8,["modelValue","label","options"]),W(Vt,{modelValue:q.value,"onUpdate:modelValue":Z[5]||(Z[5]=te=>q.value=te),label:Ge.value,options:qe.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:L(()=>Z[12]||(Z[12]=[f("i",{class:"icon-[lucide--server]"},null,-1)])),_:1},8,["modelValue","label","options"])]),f("div",null,[W(jo,{modelValue:C(T),"onUpdate:modelValue":Z[6]||(Z[6]=te=>ft(T)?T.value=te:null),label:Y.$t("templateWorkflows.sorting","Sort by"),options:bt.value,class:"w-62.5"},{icon:L(()=>Z[13]||(Z[13]=[f("i",{class:"icon-[lucide--arrow-up-down] text-muted-foreground"},null,-1)])),_:1},8,["modelValue","label","options"])])]),C(Ke)?O("",!0):(m(),N("div",Xh,[f("span",null,z(ro.value),1)]))]),content:L(()=>[!C(Ke)&&C($).length===0?(m(),N("div",Zh,[Z[14]||(Z[14]=f("i",{class:"mb-4 icon-[lucide--search] h-12 w-12 opacity-50"},null,-1)),f("p",ey,z(Y.$t("templateWorkflows.noResults","No templates found")),1),f("p",ty,z(Y.$t("templateWorkflows.noResultsHint","Try adjusting your search or filters")),1)])):(m(),N("div",oy,[C(Ke)?(m(),N("span",ny)):O("",!0),(m(),N("div",{key:X.value,style:ve(c.value),"data-testid":"template-workflows-content"},[(m(!0),N(le,null,be(C(Ke)?12:0,te=>(m(),F(Eo,{key:`initial-skeleton-${te}`,size:"compact",variant:"ghost",rounded:"lg",class:"hover:bg-base-background"},{top:L(()=>[W(Vo,{ratio:"landscape"},{default:L(()=>Z[15]||(Z[15]=[f("div",{class:"h-full w-full animate-pulse bg-dialog-surface"},null,-1)])),_:1})]),bottom:L(()=>[W(Lo,null,{default:L(()=>Z[16]||(Z[16]=[f("div",{class:"px-4 py-3"},[f("div",{class:"mb-2 h-6 animate-pulse rounded bg-dialog-surface"}),f("div",{class:"h-4 animate-pulse rounded bg-dialog-surface"})],-1)])),_:1})]),_:2},1024))),128)),(m(!0),N(le,null,be(C(Ke)?[]:ct.value,te=>(m(),F(Eo,{key:te.name,ref_for:!0,ref_key:"cardRefs",ref:ce,size:"compact",variant:"ghost",rounded:"lg","data-testid":`template-workflow-${te.name}`,class:"hover:bg-base-background",onMouseenter:n(Te=>ne.value=te.name,"onMouseenter"),onMouseleave:Z[7]||(Z[7]=Te=>ne.value=null),onClick:n(Te=>io(te),"onClick")},{top:L(()=>[W(Vo,{ratio:"square"},{default:L(()=>[f("div",sy,[te.mediaType==="audio"?(m(),F(Rh,{key:0,src:d(te)},null,8,["src"])):te.thumbnailVariant==="compareSlider"?(m(),F(zh,{key:1,"base-image-src":d(te),"overlay-image-src":b(te),alt:C(p)(te,h(te)),"is-hovered":ne.value===te.name,"is-video":te.mediaType==="video"||te.mediaSubtype==="webp"},null,8,["base-image-src","overlay-image-src","alt","is-hovered","is-video"])):te.thumbnailVariant==="hoverDissolve"?(m(),F(jh,{key:2,"base-image-src":d(te),"overlay-image-src":b(te),alt:C(p)(te,h(te)),"is-hovered":ne.value===te.name,"is-video":te.mediaType==="video"||te.mediaSubtype==="webp"},null,8,["base-image-src","overlay-image-src","alt","is-hovered","is-video"])):(m(),F(Bh,{key:3,src:d(te),alt:C(p)(te,h(te)),"is-hovered":ne.value===te.name,"is-video":te.mediaType==="video"||te.mediaSubtype==="webp","hover-zoom":te.thumbnailVariant==="zoomHover"?16:5},null,8,["src","alt","is-hovered","is-video","hover-zoom"])),K.value===te.name?(m(),F(C(ci),{key:4,class:"absolute inset-0 z-10 m-auto h-12 w-12"})):O("",!0)])]),"bottom-right":L(()=>[te.tags&&te.tags.length>0?(m(!0),N(le,{key:0},be(te.tags,Te=>(m(),F(Oo,{key:Te,label:Te},null,8,["label"]))),128)):O("",!0)]),_:2},1024)]),bottom:L(()=>[W(Lo,null,{default:L(()=>[f("div",ay,[f("h3",{class:"m-0 line-clamp-1 text-sm",title:C(p)(te,h(te))},z(C(p)(te,h(te))),9,ly),f("div",iy,[f("div",ry,[f("p",{class:"m-0 line-clamp-2 text-sm text-muted",title:C(v)(te)},z(C(v)(te)),9,uy)]),te.tutorialUrl?(m(),N("div",cy,[ne.value===te.name?ue((m(),F(ee,$t({key:0,ref_for:!0},Y.$attrs,{variant:"inverted",size:"icon",onClick:ke(Te=>y(te),["stop"])}),{default:L(()=>Z[17]||(Z[17]=[f("i",{class:"icon-[lucide--info] size-4"},null,-1)])),_:2},1040,["onClick"])),[[$e,Y.$t("g.seeTutorial"),void 0,{bottom:!0}]]):O("",!0)])):O("",!0)])])]),_:2},1024)]),_:2},1032,["data-testid","onMouseenter","onClick"]))),128)),(m(!0),N(le,null,be(C(xt)?6:0,te=>(m(),F(Eo,{key:`skeleton-${te}`,size:"compact",variant:"ghost",rounded:"lg",class:"hover:bg-base-background"},{top:L(()=>[W(Vo,{ratio:"square"},{default:L(()=>Z[18]||(Z[18]=[f("div",{class:"h-full w-full animate-pulse bg-dialog-surface"},null,-1)])),_:1})]),bottom:L(()=>[W(Lo,null,{default:L(()=>Z[19]||(Z[19]=[f("div",{class:"px-4 py-3"},[f("div",{class:"mb-2 h-6 animate-pulse rounded bg-dialog-surface"}),f("div",{class:"h-4 animate-pulse rounded bg-dialog-surface"})],-1)])),_:1})]),_:2},1024))),128))],4))])),!C(Ke)&&C(ut)?(m(),N("div",{key:2,ref_key:"loadTrigger",ref:rt,class:"mt-4 flex h-4 w-full items-center justify-center"},[C(xt)?(m(),N("div",dy,z(Y.$t("templateWorkflows.loadingMore","Loading more...")),1)):O("",!0)],512)):O("",!0),C(Ke)?O("",!0):(m(),N("div",py,z(Y.$t("templateWorkflows.resultsCount",{count:C(M),total:C(V)})),1))]),_:1},8,["content-title"])}}}),Xs="global-workflow-template-selector",ds=n(()=>{const e=et(),o=ht();function t(){o.closeDialog({key:Xs})}n(t,"hide");function s(a="command"){e.showLayoutDialog({key:Xs,component:fy,props:{onClose:t},dialogComponentProps:{pt:{content:{class:"!px-0 overflow-hidden h-full !py-0"},root:{style:"width: 90vw; height: 85vh; max-width: 1400px; display: flex;"}}}})}return n(s,"show"),{show:s,hide:t}},"useWorkflowTemplateSelectorDialog"),An=n((e,o,t=30)=>{const s=e instanceof HTMLElement?e:e.target;let a=0;const l=setInterval(()=>{o(a++)},t),i=n(()=>{clearInterval(l),r(),u()},"dispose"),r=Ae(document,"mouseup",i),u=Ae(s,"mouseup",i);return{dispose:i}},"whileMouseDown"),my={class:"flex h-8 w-8 items-center justify-center rounded-lg bg-black"},vy=["href","onMousedown","onClick"],gy={class:"p-menubar-item-label text-nowrap"},hy={key:3,class:"keybinding-tag ml-auto rounded border border-surface p-1 text-xs text-nowrap text-muted"},yy={key:4,class:"pi pi-angle-right ml-auto"},by={class:"p-menubar-item-label text-nowrap"},wy=H({__name:"ComfyMenuButton",setup(e){const{t:o}=de(),t=Ce(),s=Ga(),a=it(),l=ja(),i=ht(),r=pt(),u=ie(),p=E(null),v=k({get:n(()=>u.get("Comfy.VueNodes.Enabled")??!1,"get"),set:n(async I=>{await u.set("Comfy.VueNodes.Enabled",I)},"set")});function h(I){p.value?.toggle(I)}n(h,"onLogoMenuClick");const d=n(I=>{const B=typeof I.label=="function"?I.label():I.label,G=B?o(`menuLabels.${Re(B)}`,B):void 0;return{...I,label:G,items:I.items?.map(d)}},"translateMenuItem"),b=n(I=>{i.showDialog({key:"global-settings",headerComponent:pr,component:dr,props:{defaultPanel:I}})},"showSettings"),y=n(async()=>{await r.openManager({initialTab:Jt.All,showToastOnLegacyError:!1})},"showManageExtensions"),g=k(()=>a.palettes.map(I=>({key:`theme-${I.id}`,label:I.name,parentPath:"theme",comfyCommand:{active:n(()=>a.activePaletteId===I.id,"active")},command:n(async()=>{await l.loadColorPalette(I.id)},"command")}))),c=k(()=>[{separator:!0},{key:"theme",label:o("menu.theme"),items:g.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(()=>ds().show("menu"),"command")},{key:"settings",label:o("g.settings"),icon:"mdi mdi-cog-outline",command:n(()=>{b()},"command")},{key:"manage-extensions",label:o("menu.manageExtensions"),icon:"mdi mdi-puzzle-outline",command:y}]),w=k(()=>{const I=s.menuItems.map(d);let B=I.findIndex(M=>M.key==="Help"),G;if(B!==-1){I[B].icon="mdi mdi-help-circle-outline";const M=B!==I.length-1;G=I.splice(B,1,...M?[{separator:!0}]:[])[0]}return B=I.length,I.splice(B,0,...c.value,...G?[{separator:!0},G]:[]),I}),_=n(()=>{Oe(()=>{p.value&&(p.value.dirty=!0)})},"onMenuShow"),S=n(I=>I.comfyCommand?.id==="Comfy.Canvas.ZoomIn"||I.comfyCommand?.id==="Comfy.Canvas.ZoomOut","isZoomCommand"),x=n((I,B)=>{I.comfyCommand&&An(B,async()=>{await t.execute(I.comfyCommand.id)},50)},"handleZoomMouseDown"),D=n((I,B)=>{if(S(I)||I.comfyCommand?.active)return B.preventDefault(),B.stopPropagation(),I.comfyCommand?.active&&I.command?.({item:I,originalEvent:B}),!1},"handleItemClick"),P=n(I=>I.parentPath&&(I.parentPath==="theme"||s.menuItemHasActiveStateChildren[I.parentPath]),"hasActiveStateSiblings"),T=n(()=>!1,"handleNodes2ToggleClick"),$=n(async I=>{await u.set("Comfy.VueNodes.Enabled",I)},"onNodes2ToggleChange");return(I,B)=>{const G=Se("tooltip");return m(),N(le,null,[ue((m(),N("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":p.value?.visible}]),onClick:B[0]||(B[0]=M=>h(M))},[f("div",my,[W(Dh,{alt:"ComfyUI Logo",class:"comfyui-logo h-[18px] w-[18px] text-white",mode:"fill"})])],2)),[[G,{value:C(o)("sideToolbar.labels.menu"),showDelay:300,hideDelay:300}]]),W(C(di),{ref_key:"menuRef",ref:p,model:w.value,popup:!0,class:"comfy-command-menu",onShow:_},{item:L(({item:M,props:V})=>[M.key!=="nodes-2.0-toggle"?(m(),N("a",$t({key:0,class:"p-menubar-item-link px-4 py-2"},V.action,{href:M.url,target:"_blank",class:typeof M.class=="function"?M.class():M.class,onMousedown:n(U=>S(M)?x(M,U):void 0,"onMousedown"),onClick:n(U=>D(M,U),"onClick")}),[P(M)?(m(),N("i",{key:0,class:Q(["p-menubar-item-icon pi pi-check text-sm",{invisible:!M.comfyCommand?.active?.()}])},null,2)):M.icon&&M.comfyCommand?.id!=="Comfy.NewBlankWorkflow"?(m(),N("span",{key:1,class:Q(["p-menubar-item-icon text-sm",M.icon])},null,2)):O("",!0),f("span",gy,z(M.label),1),M.comfyCommand?.id==="Comfy.NewBlankWorkflow"?(m(),N("i",{key:2,class:Q(["ml-auto",M.icon])},null,2)):O("",!0),M?.comfyCommand?.keybinding?(m(),N("span",hy,z(M.comfyCommand.keybinding.combo.toString()),1)):O("",!0),M.items?(m(),N("i",yy)):O("",!0)],16,vy)):(m(),N("div",{key:1,class:"flex items-center justify-between px-4 py-2",onClick:ke(T,["stop"])},[f("span",by,z(M.label),1),W(C(Kt),{severity:"info",class:"ml-2 text-xs"},{default:L(()=>[_e(z(I.$t("g.beta")),1)]),_:1}),W(C(Pa),{modelValue:v.value,"onUpdate:modelValue":[B[1]||(B[1]=U=>v.value=U),$],class:"ml-4","aria-label":M.label,pt:{root:{style:{width:"38px",height:"20px"}},handle:{style:{width:"16px",height:"16px"}}},onClick:B[2]||(B[2]=ke(()=>{},["stop"]))},null,8,["modelValue","aria-label"])]))]),_:1},8,["model"])],64)}}}),ky=De(wy,[["__scopeId","data-v-7f8c3b49"]]),Cy={class:"side-bar-button-content"},Sy={key:0,class:"side-bar-button-label"},xy=H({__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(),s=o,a=k(()=>typeof e.iconBadge=="function"?e.iconBadge()??"":e.iconBadge),l=k(()=>!!a.value),i=k(()=>t(e.tooltip)+e.tooltipSuffix);return(r,u)=>{const p=Se("tooltip");return ue((m(),F(ee,{class:Q(C(pe)("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]=v=>s("click",v))},{default:L(()=>[f("div",Cy,[Ne(r.$slots,"icon",{},()=>[l.value?(m(),F(C(pi),{key:0,value:a.value},{default:L(()=>[typeof r.icon=="string"?(m(),N("i",{key:0,class:Q(r.icon+" side-bar-button-icon")},null,2)):(m(),F(Qt(r.icon),{key:1,class:"side-bar-button-icon"}))]),_:1},8,["value"])):typeof r.icon=="string"?(m(),N("i",{key:1,class:Q(r.icon+" side-bar-button-icon")},null,2)):typeof r.icon=="object"?(m(),F(Qt(r.icon),{key:2,class:"side-bar-button-icon"})):O("",!0)],!0),r.label&&!r.isSmall?(m(),N("span",Sy,z(C(t)(r.label)),1)):O("",!0)])]),_:3},8,["class","aria-label"])),[[p,{value:i.value,showDelay:300,hideDelay:300}]])}}}),Bt=De(xy,[["__scopeId","data-v-bbb98ec9"]]),_y=H({__name:"SidebarBottomPanelToggleButton",setup(e){const o=oo(),t=n(()=>{o.toggleBottomPanel()},"toggleConsole");return(s,a)=>(m(),F(Bt,{icon:"icon-[ph--terminal-bold]",label:s.$t("sideToolbar.labels.console"),tooltip:s.$t("menu.toggleBottomPanel"),selected:C(o).activePanel=="terminal",onClick:t},null,8,["label","tooltip","selected"]))}}),Ty=H({__name:"SidebarSettingsButton",setup(e){const{t:o}=de(),{getCommand:t,formatKeySequence:s}=Ce(),a=t("Comfy.ShowSettingsDialog"),l=k(()=>`${o("g.settings")} (${s(a)})`),i=n(()=>{a.function()},"showSettingsDialog");return(r,u)=>(m(),F(Bt,{icon:"icon-[lucide--settings]",label:r.$t("g.settings"),tooltip:l.value,onClick:i},null,8,["label","tooltip"]))}}),Ny=H({__name:"SidebarShortcutsToggleButton",setup(e){const{t:o}=de(),t=oo(),s=Ce(),a=s.getCommand("Workspace.ToggleBottomPanel.Shortcuts"),{formatKeySequence:l}=s,i=k(()=>t.activePanel==="shortcuts"),r=k(()=>`${o("shortcuts.keyboardShortcuts")} (${l(a)})`),u=n(()=>{t.togglePanel("shortcuts")},"toggleShortcutsPanel");return(p,v)=>(m(),F(Bt,{icon:"icon-[lucide--keyboard]",label:p.$t("shortcuts.shortcuts"),tooltip:r.value,selected:i.value,onClick:u},null,8,["label","tooltip","selected"]))}}),$y=["width","height"],Iy={"clip-path":"url(#clip0_1099_16244)"},My=["stroke"],Py=H({__name:"PuzzleIcon",props:{size:{default:16},color:{default:"currentColor"},class:{}},setup(e){const o=k(()=>e.class||"");return(t,s)=>(m(),N("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)},[f("g",Iy,[f("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,My)]),s[0]||(s[0]=f("defs",null,[f("clipPath",{id:"clip0_1099_16244"},[f("rect",{width:"16",height:"16",fill:"white"})])],-1))],10,$y))}}),Zs=ya.create({baseURL:Ha(),headers:{"Content-Type":"application/json"}}),Dy=n(()=>{const e=E(!1),o=E(null);se(()=>Ha(),l=>{Zs.defaults.baseURL=l});const t=n((l,i,r)=>{if(!ya.isAxiosError(l))return l instanceof Error?`${i}: ${l.message}`:`${i}: Unknown error occurred`;const u=l;if(u.response){const{status:p,data:v}=u.response;if(r&&r[p])return r[p];switch(p){case 400:return`Bad request: ${v?.message||"Invalid input"}`;case 401:return"Unauthorized: Authentication required";case 403:return`Forbidden: ${v?.message||"Access denied"}`;case 404:return`Not found: ${v?.message||"Resource not found"}`;case 500:return`Server error: ${v?.message||"Internal server error"}`;default:return`${i}: ${v?.message||u.message}`}}return`${i}: ${u.message}`},"handleApiError"),s=n(async(l,i,r)=>{e.value=!0,o.value=null;try{return(await l()).data}catch(u){return fr(u)||(o.value=t(u,i,r)),null}finally{e.value=!1}},"executeApiRequest");return{isLoading:e,error:o,getReleases:n(async(l,i)=>{const r="/releases";return await s(()=>Zs.get(r,{params:l,signal:i}),"Failed to get releases",{400:"Invalid project or version parameter"})},"getReleases")}},"useReleaseService"),So=Ot("release",()=>{const e=E([]),o=E(!1),t=E(null),s=Dy(),a=qa(),l=ie(),i=k(()=>a?.systemStats?.system?.comfyui_version??""),r=k(()=>l.get("Comfy.Locale")),u=k(()=>l.get("Comfy.Release.Version")),p=k(()=>l.get("Comfy.Release.Status")),v=k(()=>l.get("Comfy.Release.Timestamp")),h=k(()=>l.get("Comfy.Notification.ShowVersionUpdates")),d=k(()=>e.value[0]??null),b=k(()=>e.value.slice(0,3)),y=4320*60*1e3,g=n((G,M)=>At.valid(G)&&At.valid(M)?At.compare(G,M):G===M?0:1,"compareVersions"),c=k(()=>!!d.value&&g(d.value.version,i.value||"0.0.0")>0),w=k(()=>!!d.value&&g(d.value.version,i.value||"0.0.0")===0),_=k(()=>{const G=d.value?.attention;return G==="medium"||G==="high"}),S=k(()=>!(!Be()||mt||!h.value||!c.value||!_.value||u.value===d.value?.version&&["skipped","changelog seen"].includes(p.value))),x=k(()=>{if(!Be()||mt||!h.value||!c.value)return!1;const{version:G}=d.value;return u.value===G&&p.value==="changelog seen"?!1:_.value?!0:!(u.value===G&&p.value==="skipped"&&v.value&&Date.now()-v.value>=y)}),D=k(()=>!(!Be()&&!mt||!h.value||!d.value||!!At.valid(i.value)&&!w.value||u.value===d.value.version&&p.value==="what's new seen"));async function P(G){G!==d.value?.version||p.value==="changelog seen"||(await l.set("Comfy.Release.Version",G),await l.set("Comfy.Release.Status","skipped"),await l.set("Comfy.Release.Timestamp",Date.now()))}n(P,"handleSkipRelease");async function T(G){G===d.value?.version&&(await l.set("Comfy.Release.Version",G),await l.set("Comfy.Release.Status","changelog seen"),await l.set("Comfy.Release.Timestamp",Date.now()))}n(T,"handleShowChangelog");async function $(G){G===d.value?.version&&(await l.set("Comfy.Release.Version",G),await l.set("Comfy.Release.Status","what's new seen"),await l.set("Comfy.Release.Timestamp",Date.now()))}n($,"handleWhatsNewSeen");async function I(){if(!o.value&&h.value&&!a.systemStats?.system?.argv?.includes("--disable-api-nodes")){o.value=!0,t.value=null;try{a.systemStats||await ba(a.isInitialized);const G=await s.getReleases({project:mt?"cloud":"comfyui",current_version:i.value,form_factor:a.getFormFactor(),locale:mr(r.value)});G!==null?e.value=G:s.error.value&&(t.value=s.error.value)}catch(G){t.value=G instanceof Error?G.message:"Unknown error occurred"}finally{o.value=!1}}}n(I,"fetchReleases");async function B(){await I()}return n(B,"initialize"),{releases:e,isLoading:o,error:t,recentRelease:d,recentReleases:b,shouldShowToast:S,shouldShowRedDot:x,shouldShowPopup:D,shouldShowUpdateButton:c,handleSkipRelease:P,handleShowChangelog:T,handleWhatsNewSeen:$,fetchReleases:I,initialize:B}}),Ay=Object.freeze(Object.defineProperty({__proto__:null,useReleaseStore:So},Symbol.toStringTag,{value:"Module"})),Ey=["aria-label"],Ly={class:"w-full"},Vy={class:"flex w-full flex-col gap-2",role:"menubar"},Oy=["onClick","onMouseenter","onMouseleave"],Ry={class:"help-menu-icon-container"},Wy={class:"help-menu-icon"},zy={key:0,class:"menu-red-dot"},By={class:"menu-label"},Fy={key:0,class:"icon-[lucide--external-link] text-primary w-4 h-4 ml-auto"},Uy={key:1,class:"pi pi-chevron-right ml-auto"},Gy={key:0,class:"submenu-divider"},jy=["onClick"],Hy={class:"menu-label"},qy={key:0,class:"w-full","data-testid":"whats-new-section"},Ky={class:"section-description flex items-center gap-2.5 self-stretch px-8 pt-2 pb-2"},Jy=["aria-label"],Yy=["onClick","onKeydown"],Qy={class:"release-content"},Xy={class:"release-title"},Zy=["datetime"],eb={class:"normal-state"},tb={class:"hover-state"},ob={key:1,class:"help-menu-item",role:"status","aria-live":"polite"},nb={key:2,class:"help-menu-item",role:"status"},sb=H({__name:"HelpCenterMenuContent",emits:["close"],setup(e,{emit:o}){const t={MINUTE:6e4,HOUR:36e5,DAY:864e5,WEEK:6048e5,MONTH:2592e6,YEAR:31536e6},s={DELAY_MS:100,OFFSET_PX:8,Z_INDEX:10001},{t:a}=de(),l=Rt(),{staticUrls:i,buildDocsUrl:r}=so(),u=So(),p=Ce(),v=ie(),h=E(Date.now()),d=o,b=E(!1),y=E(null),g=E({});let c=null;const w=k(()=>u.releases.length>0),_=k(()=>v.get("Comfy.Notification.ShowVersionUpdates")),{shouldShowRedDot:S}=Ka(),{isNewManagerUI:x}=pt(),D=k(()=>[{key:"desktop-guide",type:"item",label:a("helpCenter.desktopUserGuide"),visible:Be(),action:n(()=>{I(r("/installation/desktop",{includeLocale:!0,platform:!0})),d("close")},"action")},{key:"dev-tools",type:"item",label:a("helpCenter.openDevTools"),visible:Be(),action:n(()=>{q(),d("close")},"action")},{key:"divider-1",type:"divider",visible:Be()},{key:"reinstall",type:"item",label:a("helpCenter.reinstall"),visible:Be(),action:n(()=>{K(),d("close")},"action")}].filter(oe=>oe.visible!==!1)),P=k(()=>!!D.value.length),T=k(()=>$.value.find(X=>X.key==="more")),$=k(()=>{const X=[{key:"feedback",type:"item",icon:"icon-[lucide--clipboard-pen]",label:a("helpCenter.feedback"),action:n(()=>{p.execute("Comfy.ContactSupport"),d("close")},"action")},{key:"help",type:"item",icon:"icon-[lucide--message-circle-question]",label:a("helpCenter.help"),action:n(()=>{p.execute("Comfy.ContactSupport"),d("close")},"action")},{key:"docs",type:"item",icon:"icon-[lucide--book-open]",label:a("helpCenter.docs"),showExternalIcon:!0,action:n(()=>{I(r("/",{includeLocale:!0})),d("close")},"action")},{key:"discord",type:"item",icon:"pi pi-discord",label:"Discord",showExternalIcon:!0,action:n(()=>{I(i.discord),d("close")},"action")},{key:"github",type:"item",icon:"icon-[lucide--github]",label:a("helpCenter.github"),showExternalIcon:!0,action:n(()=>{I(i.github),d("close")},"action")}];return X.push({key:"manager",type:"item",icon:Py,label:a("helpCenter.managerExtension"),showRedDot:S.value,action:n(async()=>{await pt().openManager({initialTab:Jt.All,showToastOnLegacyError:!1}),d("close")},"action")}),!Be()&&!mt&&x.value&&X.push({key:"update-comfyui",type:"item",icon:"icon-[lucide--download]",label:a("helpCenter.updateComfyUI"),action:n(()=>{ne(),d("close")},"action")}),X.push({key:"more",type:"item",icon:"",label:a("helpCenter.more"),visible:P.value,action:n(()=>{},"action"),items:D.value}),X}),I=n(X=>{window.open(X,"_blank","noopener,noreferrer")},"openExternalLink"),B=n(()=>{c&&(clearTimeout(c),c=null)},"clearHoverTimeout"),G=n(X=>{const oe=X.getBoundingClientRect(),ae=210,Ue=(T.value?.items?.filter(rt=>rt.visible!==!1).length||0)*48+16,qe=y.value?.offsetHeight||Ue,nt=window.innerWidth,He=window.innerHeight;let Ge=oe.top,bt=oe.right+s.OFFSET_PX;return bt+ae>nt&&(bt=oe.left-ae-s.OFFSET_PX),Ge+qe>He&&(Ge=Math.max(s.OFFSET_PX,oe.bottom-qe)),Ge<s.OFFSET_PX&&(Ge=s.OFFSET_PX),Ge-=8,{position:"fixed",top:`${Ge}px`,left:`${bt}px`,zIndex:s.Z_INDEX}},"calculateSubmenuPosition"),M=n(X=>{if(!X)return"date";const oe=new Date(X),xe=Math.abs(new Date().getTime()-oe.getTime()),Ue=[{unit:t.YEAR,key:"yearsAgo"},{unit:t.MONTH,key:"monthsAgo"},{unit:t.WEEK,key:"weeksAgo"},{unit:t.DAY,key:"daysAgo"},{unit:t.HOUR,key:"hoursAgo"},{unit:t.MINUTE,key:"minutesAgo"}];for(const{unit:qe,key:nt}of Ue){const He=Math.floor(xe/qe);if(He>0)return a(`g.relativeTime.${nt}`,{count:He})}return a("g.relativeTime.now")},"formatReleaseDate"),V=n(async(X,oe)=>{if(X!=="more"||!T.value?.items||!T.value.items.some(Ue=>Ue.visible!==!1))return;B();const xe=oe.currentTarget;g.value=G(xe),b.value=!0,await Oe(),y.value&&(g.value=G(xe))},"onMenuItemHover"),U=n(X=>{X==="more"&&(c=window.setTimeout(()=>{b.value=!1},s.DELAY_MS))},"onMenuItemLeave"),R=n(()=>{B()},"onSubmenuHover"),j=n(()=>{b.value=!1},"onSubmenuLeave"),q=n(()=>{Be()&&mo().openDevTools()},"openDevTools"),K=n(()=>{Be()&&mo().reinstall()},"onReinstall"),ne=n(async()=>{const{updateComfyUI:X,rebootComfyUI:oe,error:ae}=vr();l.add({severity:"info",summary:a("helpCenter.updateComfyUIStarted"),detail:a("helpCenter.updateComfyUIStartedDetail"),life:3e3});try{if(await X({is_stable:!0})===null||ae.value){l.add({severity:"error",summary:a("g.error"),detail:ae.value||a("helpCenter.updateComfyUIFailed"),life:5e3});return}l.add({severity:"success",summary:a("helpCenter.updateComfyUISuccess"),detail:a("helpCenter.updateComfyUISuccessDetail"),life:3e3}),await oe()}catch(xe){l.add({severity:"error",summary:a("g.error"),detail:xe instanceof Error?xe.message:a("g.unknownError"),life:5e3})}},"onUpdateComfyUI"),ce=n(X=>{u.handleShowChangelog(X.version);const oe=ts(X.version),ae=`${r("/changelog",{includeLocale:!0})}#${oe}`;I(ae),d("close")},"onReleaseClick");return Le(async()=>{w.value||await u.fetchReleases()}),gt(()=>{Math.round((Date.now()-h.value)/1e3)}),(X,oe)=>(m(),N("div",{class:"help-center-menu flex flex-col items-start gap-1",role:"menu","aria-label":X.$t("help.helpCenterMenu")},[f("div",Ly,[f("nav",Vy,[(m(!0),N(le,null,be($.value,ae=>ue((m(),N("button",{key:ae.key,type:"button",class:Q(["help-menu-item",{"more-item":ae.key==="more"}]),role:"menuitem",onClick:ae.action,onMouseenter:n(xe=>V(ae.key,xe),"onMouseenter"),onMouseleave:n(xe=>U(ae.key),"onMouseleave")},[f("div",Ry,[f("div",Wy,[typeof ae.icon=="object"?(m(),F(Qt(ae.icon),{key:0,size:16})):(m(),N("i",{key:1,class:Q(ae.icon)},null,2))]),ae.showRedDot?(m(),N("div",zy)):O("",!0)]),f("span",By,z(ae.label),1),ae.showExternalIcon?(m(),N("i",Fy)):O("",!0),ae.key==="more"?(m(),N("i",Uy)):O("",!0)],42,Oy)),[[Ye,ae.visible!==!1]])),128))]),oe[0]||(oe[0]=f("div",{class:"flex h-4 flex-col items-center justify-between self-stretch p-2"},[f("div",{class:"w-full border-b border-interface-menu-stroke"})],-1))]),(m(),F(Dt,{to:"body"},[b.value?(m(),N("div",{key:0,ref_key:"submenuRef",ref:y,class:"more-submenu",style:ve(g.value),onMouseenter:R,onMouseleave:j},[(m(!0),N(le,null,be(T.value?.items,ae=>(m(),N(le,{key:ae.key},[ae.type==="divider"?ue((m(),N("div",Gy,null,512)),[[Ye,ae.visible!==!1]]):ue((m(),N("button",{key:1,type:"button",class:"help-menu-item submenu-item",role:"menuitem",onClick:ae.action},[f("span",Hy,z(ae.label),1)],8,jy)),[[Ye,ae.visible!==!1]])],64))),128))],36)):O("",!0)])),_.value?(m(),N("section",qy,[f("h3",Ky,z(X.$t("helpCenter.whatsNew")),1),w.value?(m(),N("div",{key:0,role:"group","aria-label":X.$t("help.recentReleases")},[(m(!0),N(le,null,be(C(u).recentReleases,ae=>(m(),N("article",{key:ae.id||ae.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(xe=>ce(ae),"onClick"),onKeydown:[Yt(xe=>ce(ae),["enter"]),Yt(ke(xe=>ce(ae),["prevent"]),["space"])]},[oe[1]||(oe[1]=f("i",{class:"help-menu-icon icon-[lucide--package]","aria-hidden":"true"},null,-1)),f("div",Qy,[f("span",Xy,z(X.$t("g.releaseTitle",{package:"Comfy",version:ae.version})),1),f("time",{class:"release-date",datetime:ae.published_at},[f("span",eb,z(M(ae.published_at)),1),f("span",tb,z(X.$t("helpCenter.clickToLearnMore")),1)],8,Zy)])],40,Yy))),128))],8,Jy)):C(u).isLoading?(m(),N("div",ob,[oe[2]||(oe[2]=f("i",{class:"pi pi-spin pi-spinner help-menu-icon","aria-hidden":"true"},null,-1)),f("span",null,z(X.$t("helpCenter.loadingReleases")),1)])):(m(),N("div",nb,[oe[3]||(oe[3]=f("i",{class:"pi pi-info-circle help-menu-icon","aria-hidden":"true"},null,-1)),f("span",null,z(X.$t("helpCenter.noRecentReleases")),1)]))])):O("",!0)],8,Ey))}}),ab=De(sb,[["__scopeId","data-v-8ecd06e2"]]),lb={key:0,class:"release-toast-popup"},ib={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"},rb={class:"p-4 flex flex-col gap-4 flex-1 min-h-0"},ub={class:"flex items-center gap-4"},cb={class:"flex flex-col gap-1"},db={class:"text-sm font-normal text-base-foreground leading-[1.429]"},pb={class:"text-sm font-normal text-muted-foreground leading-[1.21]"},fb=["innerHTML"],mb={class:"flex justify-between items-center px-4 pb-4"},vb=["href"],gb={class:"flex items-center gap-4"},hb=H({__name:"ReleaseNotificationToast",setup(e,{expose:o}){const{buildDocsUrl:t}=so(),{toastErrorHandler:s}=Wt(),a=So(),{t:l}=de(),i=E(!1),r=k(()=>a.recentRelease),u=k(()=>a.shouldShowToast&&!i.value),p=k(()=>{const _=t("/changelog",{includeLocale:!0});if(r.value?.version){const S=ts(r.value.version);return`${_}#${S}`}return _}),v=k(()=>{if(!r.value?.content)return Ct.sanitize(`<p>${l("releaseToast.description")}</p>`);try{const x=r.value.content.replace(/^# .+$/m,"").replace(/!\[.*?\]\(.*?\)/g,""),D=x.trim();return!D||D.replace(/\s+/g,"")===""?Ct.sanitize(`<p>${l("releaseToast.description")}</p>`):Ja(x)}catch(_){console.error("Error parsing markdown:",_);const S=r.value.content.replace(/\n/g,"<br>");return S.trim()?Ct.sanitize(S):Ct.sanitize(`<p>${l("releaseToast.description")}</p>`)}});let h=null;const d=n(()=>{h&&clearTimeout(h),h=setTimeout(()=>{y()},8e3)},"startAutoHide"),b=n(()=>{h&&(clearTimeout(h),h=null)},"clearAutoHide"),y=n(()=>{i.value=!0,b()},"dismissToast"),g=n(()=>{r.value&&a.handleSkipRelease(r.value.version),y()},"handleSkip"),c=n(()=>{r.value&&a.handleShowChangelog(r.value.version),y()},"handleLearnMore"),w=n(async()=>{if(Be()){try{await Ce().execute("Comfy-Desktop.CheckForUpdates"),y()}catch(_){s(_)}return}window.open(t("/installation/update_comfyui",{includeLocale:!0}),"_blank"),y()},"handleUpdate");return se(u,_=>{_?d():b()}),Le(async()=>{a.releases.length||await a.fetchReleases()}),o({handleSkip:g,handleLearnMore:c,handleUpdate:w}),(_,S)=>u.value?(m(),N("div",lb,[f("div",ib,[f("div",rb,[f("div",ub,[S[0]||(S[0]=f("div",{class:"p-3 bg-primary-background-hover rounded-lg flex items-center justify-center shrink-0"},[f("i",{class:"icon-[lucide--rocket] w-4 h-4 text-white"})],-1)),f("div",cb,[f("div",db,z(_.$t("releaseToast.newVersionAvailable")),1),f("div",pb,z(r.value?.version),1)])]),f("div",{class:"pl-14 text-sm font-normal text-muted-foreground leading-[1.21] overflow-y-auto flex-1 min-h-0",innerHTML:v.value},null,8,fb)]),f("div",mb,[f("a",{class:"flex items-center gap-2 text-sm font-normal py-1 text-muted-foreground hover:text-base-foreground",href:p.value,target:"_blank",rel:"noopener noreferrer",onClick:c},[S[1]||(S[1]=f("i",{class:"icon-[lucide--external-link] w-4 h-4"},null,-1)),_e(" "+z(_.$t("releaseToast.whatsNew")),1)],8,vb),f("div",gb,[f("button",{class:"h-6 px-0 bg-transparent border-none text-sm font-normal text-muted-foreground hover:text-base-foreground cursor-pointer",onClick:g},z(_.$t("releaseToast.skip")),1),f("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:w},z(_.$t("releaseToast.update")),1)])])])])):O("",!0)}}),yb=De(hb,[["__scopeId","data-v-ba02c61a"]]),bb={key:0,class:"whats-new-popup-container left-4"},wb={class:"modal-body flex flex-col gap-4 px-0 pt-0 pb-2 flex-1"},kb=["innerHTML"],Cb={class:"modal-footer flex justify-between items-center gap-4 px-4 pb-4"},Sb=["href"],xb={class:"footer-actions flex items-center gap-4"},_b=H({__name:"WhatsNewPopup",emits:["whats-new-dismissed"],setup(e,{expose:o,emit:t}){const{buildDocsUrl:s}=so(),a=So(),{t:l}=de(),i=t,r=E(!1),u=k(()=>a.recentRelease),p=k(()=>a.shouldShowPopup&&!r.value),v=k(()=>{const g=s("/changelog",{includeLocale:!0});if(u.value?.version){const c=ts(u.value.version);return`${g}#${c}`}return g}),h=k(()=>{if(!u.value?.content)return Ct.sanitize(`<p>${l("whatsNewPopup.noReleaseNotes")}</p>`);try{const g=u.value.content,c=g.trim();if(!c||c.replace(/\s+/g,"")==="")return Ct.sanitize(`<p>${l("whatsNewPopup.noReleaseNotes")}</p>`);const w=g.match(/!\[.*?\]\(.*?\)/),_=w?w[0]:"",S=g.replace(/!\[.*?\]\(.*?\)/,"").trim(),x=[_,S].filter(Boolean).join(`
8
+ `)}n(a,"updateToastPosition");function l(){const i=document.createElement("style");return i.id="dynamic-toast-style",document.head.appendChild(i),i}return n(l,"createStyleElement"),se(()=>s.get("Comfy.UseNewMenu"),()=>Oe(a),{immediate:!0}),se(()=>s.get("Comfy.Sidebar.Location"),()=>Oe(a),{immediate:!0}),(i,r)=>(m(),F(C(Ta)))}});let mn,il;(function(){const e=globalThis;typeof e.requestIdleCallback!="function"||typeof e.cancelIdleCallback!="function"?mn=n((o,t,s)=>{setTimeout(()=>{if(a)return;const l=Date.now()+15;t(Object.freeze({didTimeout:!0,timeRemaining(){return Math.max(0,l-Date.now())}}))});let a=!1;return{dispose(){a||(a=!0)}}},"_runWhenIdle"):mn=n((o,t,s)=>{const a=o.requestIdleCallback(t,typeof s=="number"?{timeout:s}:void 0);let l=!1;return{dispose(){l||(l=!0,o.cancelIdleCallback(a))}}},"_runWhenIdle"),il=n((o,t)=>mn(globalThis,o,t),"runWhenGlobalIdle")})();const Zc={class:"fixed z-9999 flex flex-row no-drag top-0 right-0"},ed=H({__name:"MenuHamburger",setup(e){const o=tt(),t=ie(),s=n(()=>{o.focusMode=!1},"exitFocusMode");return he(()=>{t.get("Comfy.UseNewMenu")==="Disabled"&&(o.focusMode?J.ui.menuContainer.style.display="none":J.ui.menuContainer.style.display="block")}),(a,l)=>{const i=Se("tooltip");return ue((m(),N("div",Zc,[ue((m(),F(ee,{variant:"muted-textonly",size:"lg","aria-label":a.$t("menu.showMenu"),"aria-live":"assertive",onClick:s,onContextmenu:C(hi)},{default:L(()=>l[0]||(l[0]=[f("i",{class:"pi pi-bars"},null,-1)])),_:1},8,["aria-label","onContextmenu"])),[[i,{value:a.$t("menu.showMenu"),showDelay:300}]]),l[1]||(l[1]=f("div",{class:"window-actions-spacer"},null,-1))],512)),[[Ye,C(o).focusMode]])}}}),td=H({__name:"UnloadWindowConfirmDialog",setup(e){const o=ie(),t=Pe(),s=n(a=>{if(o.get("Comfy.Window.UnloadConfirmation")&&t.modifiedWorkflows.length>0)return a.preventDefault(),!0},"handleBeforeUnload");return Le(()=>{window.addEventListener("beforeunload",s)}),gt(()=>{window.removeEventListener("beforeunload",s)}),(a,l)=>(m(),N("div"))}}),od={class:"w-full h-full absolute top-0 left-0 z-999 pointer-events-none flex flex-col"},nd={class:"side-toolbar-container"},sd=H({__name:"LiteGraphCanvasSplitterOverlay",setup(e){const o=tt(),t=ie(),s=to(),a=Uo(),{t:l}=de(),i=k(()=>t.get("Comfy.Sidebar.Location")),r=k(()=>t.get("Comfy.Sidebar.UnifiedWidth")),{focusMode:u}=Fe(o),{activeSidebarTabId:p,activeSidebarTab:v}=Fe(a),{bottomPanelVisible:h}=Fe(oo()),{isOpen:d}=Fe(s),b=k(()=>v.value!==null),y=k(()=>r.value?"unified-sidebar":p.value??"default-sidebar");function g({originalEvent:S}){S.preventDefault()}n(g,"onResizestart");const c=k(()=>`main-splitter${d.value?"-with-right-panel":""}-${i.value}`),w=k(()=>{if(i.value==="left")return{display:b.value?"flex":"none"}}),_=k(()=>{if(i.value==="right")return{display:b.value?"flex":"none"}});return(S,x)=>(m(),N("div",od,[Ne(S.$slots,"workflow-tabs",{},void 0,!0),f("div",{class:Q(["pointer-events-none flex flex-1 overflow-hidden",{"flex-row":i.value==="left","flex-row-reverse":i.value==="right"}])},[f("div",nd,[Ne(S.$slots,"side-toolbar",{},void 0,!0)]),(m(),F(C(Nn),{key:c.value,class:"bg-transparent pointer-events-none border-none flex-1 overflow-hidden","state-key":y.value,"state-storage":"local",onResizestart:g},{default:L(()=>[!C(u)&&(i.value==="left"||C(d))?(m(),F(C(_t),{key:0,class:Q(i.value==="left"?C(pe)("side-bar-panel bg-comfy-menu-bg pointer-events-auto",b.value&&"min-w-78"):"bg-comfy-menu-bg pointer-events-auto"),"min-size":i.value==="left"?10:15,size:20,style:ve(w.value),role:i.value==="left"?"complementary":void 0,"aria-label":i.value==="left"?C(l)("sideToolbar.sidebar"):void 0},{default:L(()=>[i.value==="left"&&b.value?Ne(S.$slots,"side-bar-panel",{key:0},void 0,!0):i.value==="right"?Ne(S.$slots,"right-side-panel",{key:1},void 0,!0):O("",!0)]),_:3},8,["class","min-size","style","role","aria-label"])):O("",!0),W(C(_t),{size:80,class:"flex flex-col"},{default:L(()=>[Ne(S.$slots,"topmenu",{sidebarPanelVisible:b.value},void 0,!0),W(C(Nn),{class:"bg-transparent pointer-events-none border-none splitter-overlay-bottom mr-1 mb-1 ml-1 flex-1",layout:"vertical","pt:gutter":C(pe)("rounded-tl-lg rounded-tr-lg ",!(C(h)&&!C(u))&&"hidden"),"state-key":"bottom-panel-splitter","state-storage":"local",onResizestart:g},{default:L(()=>[W(C(_t),{class:"graph-canvas-panel relative"},{default:L(()=>[Ne(S.$slots,"graph-canvas-panel",{},void 0,!0)]),_:3}),ue(W(C(_t),{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:L(()=>[Ne(S.$slots,"bottom-panel",{},void 0,!0)]),_:3},512),[[Ye,C(h)&&!C(u)]])]),_:3},8,["pt:gutter"])]),_:3}),!C(u)&&(i.value==="right"||C(d))?(m(),F(C(_t),{key:1,class:Q(i.value==="right"?C(pe)("side-bar-panel bg-comfy-menu-bg pointer-events-auto",b.value&&"min-w-78"):"bg-comfy-menu-bg pointer-events-auto"),"min-size":i.value==="right"?10:15,size:20,style:ve(_.value),role:i.value==="right"?"complementary":void 0,"aria-label":i.value==="right"?C(l)("sideToolbar.sidebar"):void 0},{default:L(()=>[i.value==="left"?Ne(S.$slots,"right-side-panel",{key:0},void 0,!0):i.value==="right"&&b.value?Ne(S.$slots,"side-bar-panel",{key:1},void 0,!0):O("",!0)]),_:3},8,["class","min-size","style","role","aria-label"])):O("",!0)]),_:3},8,["state-key"]))],2)]))}}),ad=De(sd,[["__scopeId","data-v-78b7f6de"]]),Xe=n(e=>({value:e,showDelay:300,hideDelay:0,pt:{text:{class:"border-node-component-tooltip-border bg-node-component-tooltip-surface text-node-component-tooltip border rounded-md px-2 py-1 text-xs leading-none shadow-none"},arrow:{class:"border-t-node-component-tooltip-border"}}}),"buildTooltipConfig"),ld=da(()=>Gn(()=>import("./ComfyQueueButton-DRgA2g3T.js"),__vite__mapDeps([22,5,3,4,2,1,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23]),import.meta.url)),id={class:"flex h-full items-center"},rd=H({__name:"ComfyActionbar",setup(e){const o=ie(),t=Ce(),{t:s}=de(),{isIdle:a}=Fe(Qe()),l=k(()=>o.get("Comfy.UseNewMenu")),i=k(()=>l.value!=="Disabled"),r=document.querySelector(".workflow-tabs-container"),u=E(null),p=E(null),v=bs("Comfy.MenuPosition.Docked",!0),h=bs("Comfy.MenuPosition.Floating",{x:0,y:0}),{x:d,y:b,style:y,isDragging:g}=Ll(u,{initialValue:{x:0,y:0},handle:p,containerElement:document.body,onMove:n(M=>{const V=r?.getBoundingClientRect().bottom??40;M.y<V&&(M.y=V)},"onMove")});qt([d,b],([M,V])=>{h.value={x:M,y:V}},{debounce:300});const c=n(()=>{if(u.value){const M=window.innerWidth,V=window.innerHeight,U=u.value.offsetWidth,R=u.value.offsetHeight;if(U===0||R===0)return;if(h.value.x!==0||h.value.y!==0){d.value=Gt(h.value.x,0,M-U),b.value=Gt(h.value.y,0,V-R),S();return}d.value===0&&b.value===0&&(d.value=Gt((M-U)/2,0,M-U),b.value=Gt(V-R-10,0,V-R),S())}},"setInitialPosition");async function w(){await Oe(),c()}n(w,"comfyRunButtonResolved"),se(i,async M=>{M&&await Oe(c)}),Ae(p,"mousedown",()=>{});const _=E({x:d.value,y:b.value,windowWidth:window.innerWidth,windowHeight:window.innerHeight}),S=n(()=>{_.value={x:d.value,y:b.value,windowWidth:window.innerWidth,windowHeight:window.innerHeight}},"captureLastDragState");se(g,M=>{M||S()},{immediate:!0}),Ae(window,"resize",n(()=>{if(u.value){const M=window.innerWidth,V=window.innerHeight,U=u.value.offsetWidth,R=u.value.offsetHeight,j=_.value.x,q=_.value.windowWidth-(_.value.x+U),K=_.value.y,ne=_.value.windowHeight-(_.value.y+R),X=[{edge:"left",distance:j},{edge:"right",distance:q},{edge:"top",distance:K},{edge:"bottom",distance:ne}].reduce((xe,Ue)=>Ue.distance<xe.distance?Ue:xe),oe=_.value.y/_.value.windowHeight,ae=_.value.x/_.value.windowWidth;X.edge==="left"?(d.value=X.distance,b.value=oe*V):X.edge==="right"?(d.value=M-U-X.distance,b.value=oe*V):X.edge==="top"?(d.value=ae*M,b.value=X.distance):(d.value=ae*M,b.value=V-R-X.distance),d.value=Gt(d.value,0,M-U),b.value=Gt(b.value,0,V-R)}},"adjustMenuPosition"));const D=E(!1),P=n(()=>{g.value&&(D.value=!0)},"onMouseEnterDropZone"),T=n(()=>{g.value&&(D.value=!1)},"onMouseLeaveDropZone");se(g,M=>{M?v.value&&(v.value=!1):(D.value&&(v.value=!0),D.value=!1)});const $=k(()=>Xe(s("menu.interrupt"))),I=n(async()=>{a.value||await t.execute("Comfy.Interrupt")},"cancelCurrentJob"),B=k(()=>pe("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",D.value&&"border-[3px] opacity-100 scale-105 shadow-[0_0_20px] shadow-blue-500")),G=k(()=>pe("actionbar pointer-events-auto z-1300",g.value&&"select-none pointer-events-none",v.value?"p-0 static border-none bg-transparent":"fixed shadow-interface"));return(M,V)=>{const U=Se("tooltip");return m(),N("div",id,[C(g)&&!C(v)?(m(),N("div",{key:0,class:Q(B.value),onMouseenter:P,onMouseleave:T},z(C(s)("actionbar.dockToTop")),35)):O("",!0),W(C(Na),{class:Q(["pointer-events-auto",G.value]),style:ve(C(y)),pt:{header:{class:"hidden"},content:{class:C(v)?"p-0":"p-1"}}},{default:L(()=>[f("div",{ref_key:"panelRef",ref:u,class:"flex items-center select-none gap-2"},[f("span",{ref_key:"dragHandleRef",ref:p,class:Q(C(pe)("drag-handle cursor-grab w-3 h-max",C(g)&&"cursor-grabbing"))},null,2),(m(),F(Vl,{onResolve:w},{default:L(()=>[W(C(ld))]),_:1})),ue((m(),F(ee,{variant:"destructive",size:"icon",disabled:C(a),"aria-label":C(s)("menu.interrupt"),onClick:I},{default:L(()=>V[0]||(V[0]=[f("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["disabled","aria-label"])),[[U,$.value,void 0,{bottom:!0}]])],512)]),_:1},8,["style","class","pt"])])}}}),ud=n((e,o)=>{const t=e?.type;return t?!o[t]:!1},"isNodeMissingDefinition"),cd=n((e,o)=>{if(!e)return[];const t=C(o);return yi(e,s=>ud(s,t))},"collectMissingNodes"),dd=n((e,o)=>cd(e,o).length>0,"graphHasMissingNodes"),pd={key:0,class:"icon-[lucide--triangle-alert] text-warning-background"},fd={class:"p-breadcrumb-item-label px-2"},md={key:2,class:"pi pi-angle-down text-[10px]"},vd=H({__name:"SubgraphBreadcrumbItem",props:{item:{},isActive:{type:Boolean,default:!1}},setup(e){const o=e,t=yt(),s=k(()=>dd(J.rootGraph,t.nodeDefsByName)),{t:a}=de(),l=E(),i=et(),r=Pe(),u=ot(),p=E(!1),v=E(),h=E(),d=E(),b=n(async(x,D)=>{if(x&&x!==D){if(o.item.updateTitle?.(x),r.activeSubgraph)r.activeSubgraph.name=x;else if(r.activeWorkflow)try{await u.renameWorkflow(r.activeWorkflow,Ea.basePath+La(x))}catch(T){console.error(T),i.showErrorDialog(T);return}const P=Jn();P.restoreState(P.exportState())}},"rename"),y=o.item.key==="root",g=k(()=>s.value&&y?a("breadcrumbsMenu.missingNodesWarning"):o.item.label),c=k(()=>[{label:a("g.rename"),icon:"pi pi-pencil",command:_},{label:a("breadcrumbsMenu.duplicate"),icon:"pi pi-copy",command:n(async()=>{await u.duplicateWorkflow(r.activeWorkflow)},"command"),visible:y&&!o.item.isBlueprint},{separator:!0,visible:y},{label:a("menuLabels.Save"),icon:"pi pi-save",command:n(async()=>{await Ce().execute("Comfy.SaveWorkflow")},"command"),visible:y},{label:a("menuLabels.Save As"),icon:"pi pi-save",command:n(async()=>{await Ce().execute("Comfy.SaveWorkflowAs")},"command"),visible:y},{separator:!0},{label:a("breadcrumbsMenu.clearWorkflow"),icon:"pi pi-trash",command:n(async()=>{await Ce().execute("Comfy.ClearWorkflow")},"command")},{separator:!0,visible:o.item.key==="root"&&o.item.isBlueprint},{label:a("subgraphStore.publish"),icon:"pi pi-copy",command:n(async()=>{await u.saveWorkflowAs(r.activeWorkflow)},"command"),visible:o.item.key==="root"&&o.item.isBlueprint},{separator:!0,visible:y},{label:o.item.isBlueprint?a("breadcrumbsMenu.deleteBlueprint"):a("breadcrumbsMenu.deleteWorkflow"),icon:"pi pi-times",command:n(async()=>{await u.deleteWorkflow(r.activeWorkflow)},"command"),visible:y}]),w=n(x=>{p.value||(x.detail===1?o.isActive?l.value?.toggle(x):o.item.command?.({item:o.item,originalEvent:x}):o.isActive&&x.detail===2&&(l.value?.hide(),x.stopPropagation(),x.preventDefault(),_()))},"handleClick"),_=n(()=>{p.value=!0,v.value=o.item.label,Oe(()=>{h.value?.$el&&(h.value.$el.focus(),h.value.$el.select(),d.value&&(h.value.$el.style.width=`${Math.max(200,d.value.offsetWidth)}px`))})},"startRename"),S=n(async x=>{x&&await b(v.value,o.item.label),p.value=!1},"inputBlur");return(x,D)=>{const P=Se("tooltip");return m(),N(le,null,[ue((m(),N("a",{ref_key:"wrapperRef",ref:d,draggable:"false",href:"#",class:Q(["p-breadcrumb-item-link h-12 cursor-pointer px-2",{"flex items-center gap-1":x.isActive,"p-breadcrumb-item-link-menu-visible":l.value?.overlayVisible,"p-breadcrumb-item-link-icon-visible":x.isActive,"active-breadcrumb-item":x.isActive}]),onClick:w},[s.value&&y?(m(),N("i",pd)):O("",!0),f("span",fd,z(x.item.label),1),x.item.isBlueprint?(m(),F(C(Kt),{key:1,value:"Blueprint",severity:"primary"})):O("",!0),x.isActive?(m(),N("i",md)):O("",!0)],2)),[[P,{value:g.value,showDelay:512},void 0,{bottom:!0}]]),x.isActive?(m(),F(C($a),{key:0,ref_key:"menu",ref:l,model:c.value,popup:!0,pt:{root:{style:"background-color: var(--comfy-menu-bg)"},itemLink:{class:"py-2"}}},null,8,["model"])):O("",!0),p.value?(m(),F(C(oi),{key:1,ref_key:"itemInputRef",ref:h,modelValue:v.value,"onUpdate:modelValue":D[0]||(D[0]=T=>v.value=T),class:"fixed z-10000 px-2 py-2 text-[.8rem]",onBlur:D[1]||(D[1]=T=>S(!1)),onClick:D[2]||(D[2]=ke(()=>{},["stop"])),onKeydown:[D[3]||(D[3]=Yt(T=>S(!0),["enter"])),D[4]||(D[4]=Yt(T=>S(!1),["esc"]))]},null,8,["modelValue"])):O("",!0)],64)}}}),gd=De(vd,[["__scopeId","data-v-09d35179"]]),rl=n((e,o)=>{o={debounceTime:25,useMutationObserver:!0,useResizeObserver:!0,...o};const t=E(!1),s=[],a=E(!1),l=n(()=>{t.value=e.scrollWidth>e.clientWidth,o.onCheck?.(t.value)},"checkOverflowFn"),i=o.debounceTime?Xo(l,o.debounceTime):l;return o.useMutationObserver&&s.push(Ol(e,i,{subtree:!0,childList:!0}).stop),o.useResizeObserver&&s.push(pa(e,i).stop),{isOverflowing:Tn(t),disposed:Tn(a),checkOverflow:i,dispose:n(()=>{a.value=!0,s.forEach(r=>r())},"dispose")}},"useOverflowObserver"),Ws=28,zs=8,vn=8,Bs=20,hd=H({__name:"SubgraphBreadcrumb",setup(e){const o=Pe(),t=Jn(),s=E(),a=k(()=>o.activeWorkflow?.filename),l=k(()=>Va().isSubgraphBlueprint(o.activeWorkflow)),i=E(!1),r=E(!1),u=k(()=>s.value?s.value.$el?.querySelector(".p-breadcrumb-list"):null),p=k(()=>{const d=t.navigationStack.map(b=>({label:b.name,command:n(()=>{const y=fe().getCanvas();if(!y.graph)throw new TypeError("Canvas has no graph");y.setGraph(b)},"command"),updateTitle:n(y=>{const g=fe().getCanvas().graph?.rootGraph;g&&bi(g,b.id,c=>{c.title=y})},"updateTitle")}));return[v.value,...d]}),v=k(()=>({label:a.value,icon:"pi pi-home",key:"root",isBlueprint:l.value,command:n(()=>{const d=fe().getCanvas();if(!d.graph)throw new TypeError("Canvas has no graph");d.setGraph(d.graph.rootGraph)},"command")}));let h;return se(u,d=>{h?.dispose(),h=void 0,d&&(h=rl(d,{onCheck:n(b=>{if(r.value=b,i.value){if(!b){const y=[...d.querySelectorAll(".p-breadcrumb-item")];if(y.length<3)return;const g=y.filter($=>$.querySelector(".p-breadcrumb-item-link-icon-visible")).length,c=d.querySelectorAll(".p-breadcrumb-separator"),_=c[c.length-1].offsetWidth,S=(Ws+vn+vn)*y.length+g*Bs,x=(y.length-1)*_,D=(y.length-1)*(zs*2),P=S+x+D,T=d.clientWidth;P<=T&&(i.value=!1)}}else b&&(i.value=!0)},"onCheck")}))}),fa(()=>{h?.disposed.value||h?.checkOverflow()}),(d,b)=>(m(),N("div",{class:Q(["subgraph-breadcrumb w-auto drop-shadow-[var(--interface-panel-drop-shadow)]",{"subgraph-breadcrumb-collapse":i.value,"subgraph-breadcrumb-overflow":r.value}]),style:ve({"--p-breadcrumb-gap":"0px","--p-breadcrumb-item-margin":`${zs/2}px`,"--p-breadcrumb-item-min-width":`${Ws}px`,"--p-breadcrumb-item-padding":`${vn}px`,"--p-breadcrumb-icon-width":`${Bs}px`})},[W(C(ni),{ref_key:"breadcrumbRef",ref:s,class:"w-fit rounded-lg p-0",model:p.value,pt:{item:{class:"pointer-events-auto"}},"aria-label":d.$t("g.graphNavigation")},{item:L(({item:y})=>[W(gd,{item:y,"is-active":y===p.value.at(-1)},null,8,["item","is-active"])]),separator:L(()=>b[0]||(b[0]=[f("span",{style:{transform:"scale(1.5)"}}," / ",-1)])),_:1},8,["model","aria-label"])],6))}}),yd=De(hd,[["__scopeId","data-v-0e6867de"]]),bd={class:"flex flex-col gap-3 p-2"},wd={class:"flex flex-col gap-1"},kd={class:"relative h-2 w-full overflow-hidden rounded-full border border-interface-stroke bg-interface-panel-surface"},Cd={class:"flex items-start justify-end gap-4 text-[12px] leading-none"},Sd={class:"flex items-center gap-1 text-text-primary opacity-90"},xd={class:"font-bold"},_d={class:"flex items-center gap-1 text-text-secondary"},Td={class:"inline-block max-w-[10rem] truncate"},Nd={class:"flex items-center gap-1"},$d={class:"flex items-center gap-4 text-[12px] text-text-primary"},Id={class:"flex items-center gap-2"},Md={class:"opacity-90"},Pd={class:"font-bold"},Dd={class:"ml-1"},Ad={class:"flex items-center gap-2"},Ed={class:"opacity-90"},Ld={class:"font-bold"},Vd={class:"ml-1"},Od=H({__name:"QueueOverlayActive",props:{totalProgressStyle:{},currentNodeProgressStyle:{},totalPercentFormatted:{},currentNodePercentFormatted:{},currentNodeName:{},runningCount:{},queuedCount:{},bottomRowClass:{}},emits:["interruptAll","clearQueued","viewAllJobs"],setup(e){const{t:o}=de(),t=k(()=>Xe(o("sideToolbar.queueProgressOverlay.cancelJobTooltip"))),s=k(()=>Xe(o("sideToolbar.queueProgressOverlay.clearQueueTooltip")));return(a,l)=>{const i=ma("i18n-t"),r=Se("tooltip");return m(),N("div",bd,[f("div",wd,[f("div",kd,[f("div",{class:"absolute inset-0 h-full rounded-full transition-[width]",style:ve(a.totalProgressStyle)},null,4),f("div",{class:"absolute inset-0 h-full rounded-full transition-[width]",style:ve(a.currentNodeProgressStyle)},null,4)]),f("div",Cd,[f("div",Sd,[W(i,{keypath:"sideToolbar.queueProgressOverlay.total"},{percent:L(()=>[f("span",xd,z(a.totalPercentFormatted),1)]),_:1})]),f("div",_d,[f("span",null,z(C(o)("sideToolbar.queueProgressOverlay.currentNode")),1),f("span",Td,z(a.currentNodeName),1),f("span",Nd,[f("span",null,z(a.currentNodePercentFormatted),1)])])])]),f("div",{class:Q(a.bottomRowClass)},[f("div",$d,[f("div",Id,[f("span",Md,[f("span",Pd,z(a.runningCount),1),f("span",Dd,z(C(o)("sideToolbar.queueProgressOverlay.running")),1)]),a.runningCount>0?ue((m(),F(ee,{key:0,variant:"destructive",size:"icon","aria-label":C(o)("sideToolbar.queueProgressOverlay.interruptAll"),onClick:l[0]||(l[0]=u=>a.$emit("interruptAll"))},{default:L(()=>l[3]||(l[3]=[f("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}]]):O("",!0)]),f("div",Ad,[f("span",Ed,[f("span",Ld,z(a.queuedCount),1),f("span",Vd,z(C(o)("sideToolbar.queueProgressOverlay.queuedSuffix")),1)]),a.queuedCount>0?ue((m(),F(ee,{key:0,variant:"destructive",size:"icon","aria-label":C(o)("sideToolbar.queueProgressOverlay.clearQueued"),onClick:l[1]||(l[1]=u=>a.$emit("clearQueued"))},{default:L(()=>l[4]||(l[4]=[f("i",{class:"icon-[lucide--list-x] block size-4 leading-none text-text-primary"},null,-1)])),_:1},8,["aria-label"])),[[r,s.value,void 0,{top:!0}]]):O("",!0)])]),W(ee,{class:"min-w-30 flex-1 px-2 py-0",variant:"secondary",size:"md",onClick:l[2]||(l[2]=u=>a.$emit("viewAllJobs"))},{default:L(()=>[_e(z(C(o)("sideToolbar.queueProgressOverlay.viewAllJobs")),1)]),_:1})],2)])}}}),Rd={class:"inline-flex items-center gap-2"},Wd={key:0,class:"inline-flex items-center"},zd={class:"inline-flex items-center gap-2"},Bd={key:0,class:"relative inline-flex h-6 items-center"},Fd=["src","alt"],Ud={class:"text-[14px] font-normal text-text-primary"},Gd={class:"font-bold"},jd={class:"font-bold"},Hd={class:"font-bold"},qd={class:"font-bold"},Kd=H({__name:"CompletionSummaryBanner",props:{mode:{},completedCount:{},failedCount:{},thumbnailUrls:{default:n(()=>[],"default")},ariaLabel:{}},emits:["click"],setup(e,{emit:o}){const t=e,s=o;return(a,l)=>{const i=ma("i18n-t");return m(),F(ee,{variant:"secondary",size:"lg",class:"group w-full justify-between gap-3 p-1 text-left font-normal hover:cursor-pointer focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-background","aria-label":t.ariaLabel,onClick:l[0]||(l[0]=r=>s("click",r))},{default:L(()=>[f("span",Rd,[t.mode==="allFailed"?(m(),N("span",Wd,l[1]||(l[1]=[f("i",{class:"ml-1 icon-[lucide--circle-alert] block size-4 leading-none text-destructive-background"},null,-1)]))):O("",!0),f("span",zd,[t.mode!=="allFailed"?(m(),N("span",Bd,[(m(!0),N(le,null,be(t.thumbnailUrls,(r,u)=>(m(),N("span",{key:r+u,class:"inline-block h-6 w-6 overflow-hidden rounded-[6px] border-0 bg-secondary-background",style:ve({marginLeft:u===0?"0":"-12px"})},[f("img",{src:r,alt:a.$t("sideToolbar.queueProgressOverlay.preview"),class:"h-full w-full object-cover"},null,8,Fd)],4))),128))])):O("",!0),f("span",Ud,[t.mode==="allSuccess"?(m(),F(i,{key:0,keypath:"sideToolbar.queueProgressOverlay.jobsCompleted",plural:t.completedCount},{count:L(()=>[f("span",Gd,z(t.completedCount),1)]),_:1},8,["plural"])):t.mode==="mixed"?(m(),N(le,{key:1},[W(i,{keypath:"sideToolbar.queueProgressOverlay.jobsCompleted",plural:t.completedCount},{count:L(()=>[f("span",jd,z(t.completedCount),1)]),_:1},8,["plural"]),l[2]||(l[2]=f("span",null,", ",-1)),W(i,{keypath:"sideToolbar.queueProgressOverlay.jobsFailed",plural:t.failedCount},{count:L(()=>[f("span",Hd,z(t.failedCount),1)]),_:1},8,["plural"])],64)):(m(),F(i,{key:2,keypath:"sideToolbar.queueProgressOverlay.jobsFailed",plural:t.failedCount},{count:L(()=>[f("span",qd,z(t.failedCount),1)]),_:1},8,["plural"]))])])]),l[3]||(l[3]=f("span",{class:"flex items-center justify-center rounded p-1 text-text-secondary transition-colors duration-200 ease-in-out"},[f("i",{class:"icon-[lucide--chevron-down] block size-4 leading-none"})],-1))]),_:1},8,["aria-label"])}}}),Jd={class:"pointer-events-auto"},Yd=H({__name:"QueueOverlayEmpty",props:{summary:{}},emits:["summaryClick"],setup(e){const{t:o}=de();return(t,s)=>(m(),N("div",Jd,[W(Kd,{mode:t.summary.mode,"completed-count":t.summary.completedCount,"failed-count":t.summary.failedCount,"thumbnail-urls":t.summary.thumbnailUrls,"aria-label":C(o)("sideToolbar.queueProgressOverlay.expandCollapsedQueue"),onClick:s[0]||(s[0]=a=>t.$emit("summaryClick"))},null,8,["mode","completed-count","failed-count","thumbnail-urls","aria-label"])]))}});function Qd(e,o){const t=Pe(),s=ot(),a=St(),{copyToClipboard:l}=Oa(),i=no(),r=yt(),u=wi(),p=n(async()=>{const $=e();if(!$)return;const I=$.taskRef?.workflow;if(!I)return;const B=`Job ${$.id}.json`,G=t.createTemporary(B,I);await s.openWorkflow(G)},"openJobWorkflow"),v=n(async()=>{const $=e();$&&await l($.id)},"copyJobId"),h=n(async()=>{const $=e();$&&($.state==="running"||$.state==="initialization"?await we.interrupt($.id):$.state==="pending"&&await we.deleteItem("queue",$.id),await a.update())},"cancelJob"),d=n(async()=>{const $=e();if(!$)return;const G=$.taskRef?.status?.messages?.find(M=>M?.[0]==="execution_error")?.[1]?.exception_message;G&&await l(String(G))},"copyErrorMessage"),b=n(()=>{const $=e();if(!$)return;const B=$.taskRef?.status?.messages?.find(G=>G?.[0]==="execution_error")?.[1];B&&et().showExecutionErrorDialog(B)},"reportError"),y=n(async()=>{const $=e();if(!$)return;const I=$.taskRef?.previewOutput;if(!I)return;let B=null,G=null;if(I.isImage?(B="LoadImage",G="image"):I.isVideo?(B="LoadVideo",G="file"):I.isAudio&&(B="LoadAudio",G="audio"),!B||!G)return;const M=r.nodeDefsByName[B];if(!M)return;const V=i.addNodeOnGraph(M,{pos:i.getCanvasCenter()});if(!V)return;const U=n(K=>K==="input"||K==="output"||K==="temp","isResultItemType"),R={filename:I.filename,subfolder:I.subfolder,type:U(I.type)?I.type:void 0},j=ki(R,{rootFolder:R.type}),q=V.widgets?.find(K=>K.name===G);q&&(q.value=j,q.callback?.(j)),V.graph?.setDirtyCanvas(!0,!0)},"addOutputLoaderNode"),g=n(()=>{const $=e();if(!$)return;const I=$.taskRef?.previewOutput;I&&tn(I.url)},"downloadPreviewAsset"),c=n(async()=>{const $=e();if(!$)return;const I=$.taskRef?.workflow;if(!I)return;const B=ie();let G=`Job ${$.id}.json`;if(B.get("Comfy.PromptFilename")){const U=await et().prompt({title:re("workflowService.exportWorkflow"),message:re("workflowService.enterFilename")+":",defaultValue:G});if(!U)return;G=La(U)}const M=JSON.stringify(I,null,2),V=new Blob([M],{type:"application/json"});Ci(G,V)},"exportJobWorkflow"),w=n(async()=>{const $=e();if(!$)return;const I=$.taskRef,B=I?.previewOutput;if(!I||!B)return;const G=Si(I,B);await u.confirmDelete(G)&&await a.update()},"deleteJobAsset"),_=n(async()=>{const $=e()?.taskRef;$&&await a.delete($)},"removeFailedJob"),S=k(()=>ye("queue.jobMenu.openAsWorkflowNewTab","Open as workflow in new tab")),x=k(()=>ye("queue.jobMenu.openWorkflowNewTab","Open workflow in new tab")),D=k(()=>ye("queue.jobMenu.copyJobId","Copy job ID")),P=k(()=>ye("queue.jobMenu.cancelJob","Cancel job"));return{jobMenuEntries:k(()=>{const $=e(),I=$?.state;if(!I)return[];const B=!!$?.taskRef?.previewOutput;return I==="completed"?[{key:"inspect-asset",label:ye("queue.jobMenu.inspectAsset","Inspect asset"),icon:"icon-[lucide--zoom-in]",onClick:o?()=>{const G=e();G&&o(G)}:void 0},{key:"add-to-current",label:ye("queue.jobMenu.addToCurrentWorkflow","Add to current workflow"),icon:"icon-[comfy--node]",onClick:y},{key:"download",label:ye("queue.jobMenu.download","Download"),icon:"icon-[lucide--download]",onClick:g},{kind:"divider",key:"d1"},{key:"open-workflow",label:S.value,icon:"icon-[comfy--workflow]",onClick:p},{key:"export-workflow",label:ye("queue.jobMenu.exportWorkflow","Export workflow"),icon:"icon-[comfy--file-output]",onClick:c},{kind:"divider",key:"d2"},{key:"copy-id",label:D.value,icon:"icon-[lucide--copy]",onClick:v},{kind:"divider",key:"d3"},...B?[{key:"delete",label:ye("queue.jobMenu.deleteAsset","Delete asset"),icon:"icon-[lucide--trash-2]",onClick:w}]:[]]:I==="failed"?[{key:"open-workflow",label:x.value,icon:"icon-[comfy--workflow]",onClick:p},{kind:"divider",key:"d1"},{key:"copy-id",label:D.value,icon:"icon-[lucide--copy]",onClick:v},{key:"copy-error",label:ye("queue.jobMenu.copyErrorMessage","Copy error message"),icon:"icon-[lucide--copy]",onClick:d},{key:"report-error",label:ye("queue.jobMenu.reportError","Report error"),icon:"icon-[lucide--message-circle-warning]",onClick:b},{kind:"divider",key:"d2"},{key:"delete",label:ye("queue.jobMenu.removeJob","Remove job"),icon:"icon-[lucide--circle-minus]",onClick:_}]:[{key:"open-workflow",label:S.value,icon:"icon-[comfy--workflow]",onClick:p},{kind:"divider",key:"d1"},{key:"copy-id",label:D.value,icon:"icon-[lucide--copy]",onClick:v},{kind:"divider",key:"d2"},{key:"cancel-job",label:P.value,icon:"icon-[lucide--x]",onClick:h}]}),openJobWorkflow:p,copyJobId:v,cancelJob:h}}n(Qd,"useJobMenu");const Xd={class:"flex h-12 items-center justify-between gap-2 border-b border-interface-stroke px-2"},Zd={class:"px-2 text-[14px] font-normal text-text-primary"},ep={key:0,class:"ml-4 inline-flex items-center gap-1 text-blue-100"},tp={class:"font-bold"},op={class:"ml-1"},np={key:0,class:"flex items-center gap-1"},sp={class:"flex flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3 font-inter"},ap=H({__name:"QueueOverlayHeader",props:{headerTitle:{},showConcurrentIndicator:{type:Boolean},concurrentWorkflowCount:{}},emits:["clearHistory"],setup(e,{emit:o}){const t=o,{t:s}=de(),a=E(null),l=k(()=>Xe(s("g.more"))),i=n(u=>{a.value?.toggle(u)},"onMoreClick"),r=n(()=>{a.value?.hide(),t("clearHistory")},"onClearHistoryFromMenu");return(u,p)=>{const v=Se("tooltip");return m(),N("div",Xd,[f("div",Zd,[f("span",null,z(u.headerTitle),1),u.showConcurrentIndicator?(m(),N("span",ep,[p[0]||(p[0]=f("span",{class:"inline-block size-2 rounded-full bg-blue-100"},null,-1)),f("span",null,[f("span",tp,z(u.concurrentWorkflowCount),1),f("span",op,z(C(s)("sideToolbar.queueProgressOverlay.running")),1)])])):O("",!0)]),C(mt)?O("",!0):(m(),N("div",np,[ue((m(),F(ee,{variant:"textonly",size:"icon","aria-label":C(s)("sideToolbar.queueProgressOverlay.moreOptions"),onClick:i},{default:L(()=>p[1]||(p[1]=[f("i",{class:"icon-[lucide--more-horizontal] block size-4 leading-none text-text-secondary"},null,-1)])),_:1},8,["aria-label"])),[[v,l.value,void 0,{top:!0}]]),W(C(Ze),{ref_key:"morePopoverRef",ref:a,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:L(()=>[f("div",sp,[W(ee,{class:"w-full justify-start",variant:"textonly",size:"sm","aria-label":C(s)("sideToolbar.queueProgressOverlay.clearHistory"),onClick:r},{default:L(()=>[p[2]||(p[2]=f("i",{class:"icon-[lucide--file-x-2] size-4 text-muted"},null,-1)),f("span",null,z(C(s)("sideToolbar.queueProgressOverlay.clearHistory")),1)]),_:1},8,["aria-label"])])]),_:1},512)]))])}}}),lp={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"},ip={key:0,class:"px-2 py-1"},rp=H({__name:"JobContextMenu",props:{entries:{}},emits:["action"],setup(e,{expose:o,emit:t}){const s=t,a=E(null);function l(u){a.value&&a.value.toggle(u)}n(l,"open");function i(){a.value?.hide()}n(i,"hide");function r(u){s("action",u)}return n(r,"onEntry"),o({open:l,hide:i}),(u,p)=>(m(),F(C(Ze),{ref_key:"jobItemPopoverRef",ref:a,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:L(()=>[f("div",lp,[(m(!0),N(le,null,be(u.entries,v=>(m(),N(le,{key:v.key},[v.kind==="divider"?(m(),N("div",ip,p[0]||(p[0]=[f("div",{class:"h-px bg-interface-stroke"},null,-1)]))):(m(),F(ee,{key:1,class:"w-full justify-start bg-transparent",variant:"textonly",size:"sm","aria-label":v.label,onClick:n(h=>r(v),"onClick")},{default:L(()=>[v.icon?(m(),N("i",{key:0,class:Q([v.icon,"block size-4 shrink-0 leading-none text-text-secondary"])},null,2)):O("",!0),f("span",null,z(v.label),1)]),_:2},1032,["aria-label","onClick"]))],64))),128))])]),_:1},512))}}),yo=n(e=>{const o=Math.round(e??0);return Rl(o,0,100)},"clampPercentInt"),Ho=n((e,o)=>{const t=yo(o);return new Intl.NumberFormat(e,{style:"percent",maximumFractionDigits:0}).format((t||0)/100)},"formatPercent0");function ul(){const{locale:e}=de(),o=Qe(),t=k(()=>yo(Math.round((o.executionProgress??0)*100))),s=k(()=>Ho(e.value,t.value)),a=k(()=>yo(Math.round((o.executingNodeProgress??0)*100))),l=k(()=>Ho(e.value,a.value)),i=k(()=>({width:`${t.value}%`,background:"var(--color-interface-panel-job-progress-primary)"})),r=k(()=>({width:`${a.value}%`,background:"var(--color-interface-panel-job-progress-secondary)"}));return{totalPercent:t,totalPercentFormatted:s,currentNodePercent:a,currentNodePercentFormatted:l,totalProgressStyle:i,currentNodeProgressStyle:r}}n(ul,"useQueueProgress");const up=n(e=>{const o=new Date(e),t=o.getFullYear(),s=String(o.getMonth()+1).padStart(2,"0"),a=String(o.getDate()).padStart(2,"0");return`${t}-${s}-${a}`},"dateKey"),cp=n(e=>{const o=new Date(e),t=new Date;return o.getFullYear()===t.getFullYear()&&o.getMonth()===t.getMonth()&&o.getDate()===t.getDate()},"isToday"),dp=n(e=>{const o=new Date(e),t=new Date,s=new Date(t.getFullYear(),t.getMonth(),t.getDate()-1);return o.getFullYear()===s.getFullYear()&&o.getMonth()===s.getMonth()&&o.getDate()===s.getDate()},"isYesterday"),pp=n((e,o)=>{const t=new Date(e);return new Intl.DateTimeFormat(o,{month:"short",day:"numeric"}).format(t)},"formatShortMonthDay"),$n=n((e,o)=>{const t=new Date(e);return new Intl.DateTimeFormat(o,{hour:"numeric",minute:"2-digit",second:"2-digit"}).format(t)},"formatClockTime"),wt=n(e=>{switch(e){case"pending":return"icon-[lucide--loader-circle]";case"initialization":return"icon-[lucide--server-crash]";case"running":return"icon-[lucide--zap]";case"completed":return"icon-[lucide--check-check]";case"failed":return"icon-[lucide--alert-circle]";default:return"icon-[lucide--circle]"}},"iconForJobState"),Fs=n((e,o)=>{const t=o("g.job"),s=String(e.promptId??"").split("-")[0],a=e.queueIndex;return typeof a=="number"?`${t} #${a}`:s?`${t} ${s}`:t},"buildTitle"),gn=n((e,o,t)=>{const s=e.createTime;return s!==void 0?t(s,o):""},"buildQueuedTime"),fp=n((e,o,t)=>{if(o==="pending")return t.showAddedHint?{iconName:"icon-[lucide--check]",primary:t.t("queue.jobAddedToQueue"),secondary:gn(e,t.locale,t.formatClockTimeFn),showClear:!0}:{iconName:wt(o),primary:t.t("queue.inQueue"),secondary:gn(e,t.locale,t.formatClockTimeFn),showClear:!0};if(o==="initialization")return{iconName:wt(o),primary:t.t("queue.initializingAlmostReady"),secondary:gn(e,t.locale,t.formatClockTimeFn),showClear:!0};if(o==="running"){if(t.isActive){const s=Ho(t.locale,yo(t.totalPercent)),a=Ho(t.locale,yo(t.currentNodePercent)),l=t.t("sideToolbar.queueProgressOverlay.total",{percent:s}),i=t.currentNodeName?`${t.currentNodeName} ${t.t("sideToolbar.queueProgressOverlay.colonPercent",{percent:a})}`:"";return{iconName:wt(o),primary:l,secondary:i,showClear:!0}}return{iconName:wt(o),primary:t.t("g.running"),secondary:"",showClear:!0}}if(o==="completed"){const s=e.executionTimeInSeconds,a=e.previewOutput,l=a&&a.isImage?a.url:void 0,i=t.isCloud?t.t("queue.completedIn",{duration:xi(e.executionTime??0)}):a?.filename&&a.filename.length?a.filename:Fs(e,t.t);return{iconName:wt(o),iconImageUrl:l,primary:i,secondary:s!==void 0?`${s.toFixed(2)}s`:"",showClear:!1}}return o==="failed"?{iconName:wt(o),primary:t.t("g.failed"),secondary:t.t("g.failed"),showClear:!0}:{iconName:wt(o),primary:Fs(e,t.t),secondary:"",showClear:!0}},"buildJobDisplay"),as=n((e,o)=>{if(o)return"initialization";switch(e.displayStatus){case"Running":return"running";case"Pending":return"pending";case"Completed":return"completed";case"Failed":case"Cancelled":return"failed"}return"failed"},"jobStateFromTask"),Us=["All","Completed","Failed"],Gs=["mostRecent","totalGenerationTime"],mp=3e3,js=new Map,Hs=n(e=>{if(e==null)return null;const o=String(e);return o.length?o:null},"taskIdToKey"),vp=n((e,o,t)=>{const s=n(a=>{const l=t.format(a,"day");return l&&l[0].toLocaleUpperCase(o)+l.slice(1)},"formatRelativeDay");return cp(e)?s(0):dp(e)?s(-1):pp(e,o)},"dateLabelForTimestamp");function gp(){const{t:e,locale:o}=de(),t=St(),s=Qe(),a=Pe(),l=E(new Set),i=E(new Set),r=new Map,u=n(M=>{const V=r.get(M);V!==void 0&&(clearTimeout(V),r.delete(M))},"clearAddedHintTimeout"),p=n(M=>{u(M);const V=setTimeout(()=>{r.delete(M);const U=new Set(i.value);U.delete(M)&&(i.value=U)},mp);r.set(M,V)},"scheduleAddedHintExpiry");se(()=>t.pendingTasks.map(M=>Hs(M.promptId)).filter(M=>!!M),M=>{const V=new Set(M),U=new Set(i.value),R=new Set(l.value);M.forEach(j=>{R.has(j)||(R.add(j),U.add(j),p(j))});for(const j of Array.from(R))V.has(j)||(R.delete(j),U.delete(j),u(j));i.value=U,l.value=R},{immediate:!0});const v=n((M,V)=>{if(V!=="pending")return!1;const U=Hs(M.promptId);return U?i.value.has(U):!1},"shouldShowAddedHint");lt(()=>{r.forEach(M=>clearTimeout(M)),r.clear(),l.value=new Set,i.value=new Set});const{totalPercent:h,currentNodePercent:d}=ul(),b=k(()=>{const M=o.value;let V=js.get(M);return V||(V=new Intl.RelativeTimeFormat(M,{numeric:"auto"}),js.set(M,V)),V}),y=k(()=>e("queue.jobList.undated")||"Undated"),g=n(M=>s.isPromptInitializing(M),"isJobInitializing"),c=k(()=>{const M=s.executingNode;if(!M)return e("g.emDash");const V=(M.title??"").toString().trim();if(V)return V;const U=(M.type??"").toString().trim()||e("g.untitled"),R=`nodeDefs.${Re(U)}.display_name`;return ye(R,U)}),w=E("All"),_=E("all"),S=E("mostRecent"),x=k(()=>[...t.pendingTasks,...t.runningTasks,...t.historyTasks].sort((V,U)=>U.queueIndex-V.queueIndex)),D=k(()=>x.value.map(M=>({task:M,state:as(M,g(M?.promptId))}))),P=k(()=>D.value.some(({state:M})=>M==="failed"));se(()=>P.value,M=>{!M&&w.value==="Failed"&&(w.value="All")});const T=k(()=>{let M=D.value;if(w.value==="Completed"?M=M.filter(({state:V})=>V==="completed"):w.value==="Failed"&&(M=M.filter(({state:V})=>V==="failed")),_.value==="current"){const V=a.activeWorkflow?.activeState?.id;if(!V)return[];M=M.filter(({task:U})=>{const R=U.workflow?.id;return!!R&&R===V})}return M}),$=k(()=>T.value.map(({task:M})=>M)),I=k(()=>T.value.map(({task:M,state:V})=>{const U=String(M.promptId??"")===String(s.activePromptId??""),R=v(M,V),j=fp(M,V,{t:e,locale:o.value,formatClockTimeFn:$n,isActive:U,totalPercent:U?h.value:void 0,currentNodePercent:U?d.value:void 0,currentNodeName:U?c.value:void 0,showAddedHint:R,isCloud:mt});return{id:String(M.promptId),title:j.primary,meta:j.secondary,state:V,iconName:j.iconName,iconImageUrl:j.iconImageUrl,showClear:j.showClear,taskRef:M,progressTotalPercent:V==="running"&&U?h.value:void 0,progressCurrentPercent:V==="running"&&U?d.value:void 0,runningNodeName:V==="running"&&U?c.value:void 0,executionTimeMs:M.executionTime,computeHours:M.executionTime!==void 0?M.executionTime/36e5:void 0}})),B=k(()=>{const M=new Map;return I.value.forEach(V=>M.set(V.id,V)),M}),G=k(()=>{const M=[],V=new Map,U=o.value;for(const{task:R,state:j}of T.value){let q;j==="completed"||j==="failed"?q=R.executionEndTimestamp:q=R.createTime;const K=q===void 0?"undated":up(q);let ne=V.get(K);if(ne===void 0){const X=q===void 0?y.value:vp(q,U,b.value);M.push({key:K,label:X,items:[]}),ne=M.length-1,V.set(K,ne)}const ce=B.value.get(String(R.promptId));ce&&M[ne].items.push(ce)}if(S.value==="totalGenerationTime"){const R=n(q=>typeof q=="number"&&!Number.isNaN(q)?q:-1,"valueOrDefault"),j=n((q,K)=>R(K.executionTimeMs)-R(q.executionTimeMs),"sortByExecutionTimeDesc");M.forEach(q=>{q.items.sort(j)})}return M});return{selectedJobTab:w,selectedWorkflowFilter:_,selectedSortMode:S,hasFailedJobs:P,allTasksSorted:x,filteredTasks:$,jobItems:I,groupedJobItems:G,currentNodeName:c}}n(gp,"useJobList");const hp={class:"flex items-center justify-between gap-2 px-3"},yp={class:"min-w-0 flex-1 overflow-x-auto"},bp={class:"inline-flex items-center gap-1 whitespace-nowrap"},wp={class:"ml-2 flex shrink-0 items-center gap-2"},kp={key:0,class:"pointer-events-none absolute -top-1 -right-1 inline-block size-2 rounded-full bg-base-foreground"},Cp={class:"flex min-w-[12rem] flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},Sp={key:0,class:"icon-[lucide--check] size-4"},xp={key:0,class:"icon-[lucide--check] block size-4 leading-none text-text-secondary"},_p={key:0,class:"pointer-events-none absolute -top-1 -right-1 inline-block size-2 rounded-full bg-base-foreground"},Tp={class:"flex min-w-[12rem] flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},Np={key:0,class:"icon-[lucide--check] size-4 text-text-secondary"},$p={key:0,class:"mx-2 mt-1 h-px"},Ip=H({__name:"JobFiltersBar",props:{selectedJobTab:{},selectedWorkflowFilter:{},selectedSortMode:{},hasFailedJobs:{type:Boolean}},emits:["update:selectedJobTab","update:selectedWorkflowFilter","update:selectedSortMode"],setup(e,{emit:o}){const t=e,s=o,{t:a}=de(),l=E(null),i=E(null),r=k(()=>Xe(a("sideToolbar.queueProgressOverlay.filterBy"))),u=k(()=>Xe(a("sideToolbar.queueProgressOverlay.sortBy"))),p=k(()=>t.hasFailedJobs?Us:Us.filter(c=>c!=="Failed")),v=n(c=>{l.value&&l.value.toggle(c)},"onFilterClick"),h=n(c=>{l.value?.hide?.(),s("update:selectedWorkflowFilter",c)},"selectWorkflowFilter"),d=n(c=>{i.value&&i.value.toggle(c)},"onSortClick"),b=n(c=>{i.value?.hide?.(),s("update:selectedSortMode",c)},"selectSortMode"),y=n(c=>a(c==="All"?"g.all":c==="Completed"?"g.completed":"g.failed"),"tabLabel"),g=n(c=>c==="mostRecent"?a("queue.jobList.sortMostRecent"):c==="totalGenerationTime"?a("queue.jobList.sortTotalGenerationTime"):"","sortLabel");return(c,w)=>{const _=Se("tooltip");return m(),N("div",hp,[f("div",yp,[f("div",bp,[(m(!0),N(le,null,be(p.value,S=>(m(),F(ee,{key:S,variant:c.selectedJobTab===S?"secondary":"muted-textonly",size:"sm",class:"px-3",onClick:n(x=>c.$emit("update:selectedJobTab",S),"onClick")},{default:L(()=>[_e(z(y(S)),1)]),_:2},1032,["variant","onClick"]))),128))])]),f("div",wp,[ue((m(),F(ee,{key:0,variant:"secondary",size:"icon","aria-label":C(a)("sideToolbar.queueProgressOverlay.filterJobs"),onClick:v},{default:L(()=>[w[2]||(w[2]=f("i",{class:"icon-[lucide--list-filter] size-4"},null,-1)),c.selectedWorkflowFilter!=="all"?(m(),N("span",kp)):O("",!0)]),_:1},8,["aria-label"])),[[_,r.value,void 0,{top:!0}]]),(m(),F(C(Ze),{key:1,ref_key:"filterPopoverRef",ref:l,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:L(()=>[f("div",Cp,[W(ee,{class:"w-full justify-between",variant:"textonly",size:"sm",onClick:w[0]||(w[0]=S=>h("all"))},{default:L(()=>[f("span",null,z(C(a)("sideToolbar.queueProgressOverlay.filterAllWorkflows")),1),c.selectedWorkflowFilter==="all"?(m(),N("i",Sp)):O("",!0)]),_:1}),w[3]||(w[3]=f("div",{class:"mx-2 mt-1 h-px"},null,-1)),W(ee,{class:"w-full justify-between",variant:"textonly",onClick:w[1]||(w[1]=S=>h("current"))},{default:L(()=>[f("span",null,z(C(a)("sideToolbar.queueProgressOverlay.filterCurrentWorkflow")),1),c.selectedWorkflowFilter==="current"?(m(),N("i",xp)):O("",!0)]),_:1})])]),_:1},512)),ue((m(),F(ee,{variant:"secondary",size:"icon","aria-label":C(a)("sideToolbar.queueProgressOverlay.sortJobs"),onClick:d},{default:L(()=>[w[4]||(w[4]=f("i",{class:"icon-[lucide--arrow-up-down] size-4"},null,-1)),c.selectedSortMode!=="mostRecent"?(m(),N("span",_p)):O("",!0)]),_:1},8,["aria-label"])),[[_,u.value,void 0,{top:!0}]]),W(C(Ze),{ref_key:"sortPopoverRef",ref:i,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:L(()=>[f("div",Tp,[(m(!0),N(le,null,be(C(Gs),(S,x)=>(m(),N(le,{key:S},[W(ee,{class:"w-full justify-between",variant:"textonly",size:"sm",onClick:n(D=>b(S),"onClick")},{default:L(()=>[f("span",null,z(g(S)),1),c.selectedSortMode===S?(m(),N("i",Np)):O("",!0)]),_:2},1032,["onClick"]),x<C(Gs).length-1?(m(),N("div",$p)):O("",!0)],64))),128))])]),_:1},512)])])}}}),qs=n(e=>{const t=e?.status?.messages;if(!Array.isArray(t)||!t.length)return null;const s=t.find(i=>Array.isArray(i)&&i[0]==="execution_error");if(!s)return null;const a=s[1],l=String(a?.exception_message??"");return{detail:a,message:l}},"extractExecutionError"),Mp=n(({taskForJob:e,copyToClipboard:o,dialog:t})=>{const s=k(()=>qs(e.value)?.message??"");return{errorMessageValue:s,copyErrorMessage:n(()=>{s.value&&o(s.value)},"copyErrorMessage"),reportJobError:n(()=>{const i=qs(e.value);if(i?.detail){t.showExecutionErrorDialog(i.detail);return}s.value&&t.showErrorDialog(new Error(s.value),{reportType:"queueJobError"})},"reportJobError")}},"useJobErrorReporting"),In=n(e=>{const o=Math.max(0,Math.floor(e/1e3)),t=Math.floor(o/60),s=o%60;return`${t}m ${s}s`},"formatElapsedTime"),Pp=n(e=>e.historyTasks.map(o=>Number(o.executionTimeInSeconds)).filter(o=>typeof o=="number"&&!Number.isNaN(o)),"pickRecentDurations"),Dp=n(({queueStore:e,executionStore:o,taskForJob:t,jobState:s,firstSeenTs:a,jobsAhead:l,nowTs:i})=>{const r=k(()=>o.runningWorkflowCount),u=k(()=>s.value==="pending"&&!!a.value&&(r.value??0)>1),p=k(()=>Pp(e).slice(-20)),v=k(()=>{const y=p.value;if(!y.length)return null;const g=y.slice().sort((T,$)=>T-$),c=g.reduce((T,$)=>T+$,0)/g.length,w=g[Math.min(g.length-1,Math.floor(g.length*.75))],_=e.runningTasks,S=i.value,x=_.map(T=>T.executionStartTimestamp).filter(T=>typeof T=="number").map(T=>{const $=Math.max(0,Math.floor((S-T)/1e3));return{lo:Math.max(0,Math.round(c-$)),hi:Math.max(0,Math.round(w-$))}});if(!x.length)return null;const D=x.reduce((T,$)=>Math.min(T,$.lo),1/0),P=x.reduce((T,$)=>Math.min(T,$.hi),1/0);return[D,P]}),h=k(()=>{const y=p.value;if(!y.length)return null;const g=l.value;if(g==null)return null;const c=y.slice().sort((D,P)=>D-P),w=c.reduce((D,P)=>D+P,0)/c.length,_=c[Math.min(c.length-1,Math.floor(c.length*.75))];if(g<=0)return v.value??[0,0];const S=Math.max(1,r.value||1),x=Math.ceil(g/S);return[Math.round(w*x),Math.round(_*x)]}),d=k(()=>{const y=p.value;if(!y.length)return null;const g=y.slice().sort(($,I)=>$-I),c=g.reduce(($,I)=>$+I,0)/g.length,w=g[Math.min(g.length-1,Math.floor(g.length*.75))],_=t.value,x=(s.value==="running"?_?.executionStartTimestamp:void 0)??a.value,D=x?Math.max(0,Math.floor((i.value-x)/1e3)):0,P=Math.max(0,Math.round(c-D)),T=Math.max(0,Math.round(w-D));return[P,T]}),b=k(()=>{const y=t.value,c=(s.value==="running"?y?.executionStartTimestamp:void 0)??a.value;return c?In(i.value-c):""});return{runningWorkflowCount:r,showParallelQueuedStats:u,estimateRangeSeconds:h,estimateRemainingRangeSeconds:d,timeElapsedValue:b}},"useQueueEstimates"),Ap={class:"w-[300px] min-w-[260px] rounded-lg border border-interface-stroke bg-interface-panel-surface shadow-md"},Ep={class:"flex items-center border-b border-interface-stroke p-4"},Lp={class:"text-[0.875rem] leading-normal font-normal text-text-primary"},Vp={class:"flex flex-col gap-6 px-4 pt-4 pb-4"},Op={class:"grid grid-cols-2 items-center gap-x-2 gap-y-2"},Rp={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Wp={class:"flex min-w-0 items-center text-[0.75rem] leading-normal font-normal text-text-secondary"},zp={class:"block min-w-0 truncate"},Bp={key:0,class:"grid grid-cols-2 items-center gap-x-2 gap-y-2"},Fp={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Up={class:"flex min-w-0 items-center text-[0.75rem] leading-normal font-normal text-text-secondary"},Gp={class:"block min-w-0 truncate"},jp={key:1,class:"grid grid-cols-2 gap-x-2"},Hp={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},qp={class:"flex items-center justify-between gap-4"},Kp={class:"col-span-2 mt-2 rounded bg-interface-panel-hover-surface px-4 py-2 text-[0.75rem] leading-normal text-text-secondary"},Jp=H({__name:"JobDetailsPopover",props:{jobId:{},workflowId:{}},setup(e){const o=e,t=k(()=>u("g.copy")),s=Pe(),a=St(),l=Qe(),i=et(),{locale:r,t:u}=de(),p=k(()=>{const K=o.workflowId;if(!K)return"";const ne=s.activeWorkflow?.activeState?.id;return ne&&ne===K?s.activeWorkflow?.filename??K:K}),v=k(()=>o.jobId),{copyToClipboard:h}=Oa(),d=n(()=>{h(v.value)},"copyJobId"),b=k(()=>{const K=o.jobId,ne=n(ce=>ce.find(X=>String(X.promptId??"")===String(K)),"findIn");return ne(a.pendingTasks)||ne(a.runningTasks)||ne(a.historyTasks)||null}),y=k(()=>{const K=b.value;if(!K)return null;const ne=l.isPromptInitializing(String(K?.promptId));return as(K,ne)}),g=k(()=>b.value?.createTime),c=k(()=>g.value!==void 0?$n(g.value,r.value):""),w=k(()=>{const K=b.value;return K?Number(K.queueIndex):null}),_=k(()=>{const K=w.value;return K==null?null:a.pendingTasks.filter(ce=>Number(ce.queueIndex)<K).length}),S=k(()=>{if(_.value==null)return"";const K=_.value;return u("queue.jobDetails.queuePositionValue",{count:K},K)}),x=E(Date.now());let D=null;Le(()=>{D=window.setInterval(()=>{x.value=Date.now()},1e3)}),lt(()=>{D!=null&&(clearInterval(D),D=null)});const{showParallelQueuedStats:P,estimateRangeSeconds:T,estimateRemainingRangeSeconds:$,timeElapsedValue:I}=Dp({queueStore:a,executionStore:l,taskForJob:b,jobState:y,firstSeenTs:g,jobsAhead:_,nowTs:x}),B=n((K,ne)=>{if(ne<=60){const oe=Math.max(1,Math.round(ne)),ae=Math.max(1,Math.min(oe,Math.round(K)));return ae===oe?u("queue.jobDetails.eta.seconds",{count:oe},oe):u("queue.jobDetails.eta.secondsRange",{lo:ae,hi:oe})}if(K>=60&&ne<90)return u("queue.jobDetails.eta.minutes",{count:1},1);const ce=Math.max(1,Math.floor(K/60)),X=Math.max(ce,Math.ceil(ne/60));return ce===X?u("queue.jobDetails.eta.minutes",{count:ce},ce):u("queue.jobDetails.eta.minutesRange",{lo:ce,hi:X})},"formatEta"),G=k(()=>{const K=T.value;if(!K)return"";const[ne,ce]=K;return B(ne,ce)}),M=k(()=>{const K=$.value;if(!K)return"";const[ne,ce]=K;return B(ne,ce)}),V=k(()=>[{label:u("queue.jobDetails.workflow"),value:p.value},{label:u("queue.jobDetails.jobId"),value:v.value,canCopy:!0}]),U=k(()=>{if(y.value==="pending"){if(!g.value)return[];const K=[{label:u("queue.jobDetails.queuedAt"),value:c.value}];return P.value&&K.push({label:u("queue.jobDetails.queuePosition"),value:S.value},{label:u("queue.jobDetails.timeElapsed"),value:I.value},{label:u("queue.jobDetails.estimatedStartIn"),value:G.value}),K}if(y.value==="running")return g.value?[{label:u("queue.jobDetails.queuedAt"),value:c.value},{label:u("queue.jobDetails.timeElapsed"),value:I.value},{label:u("queue.jobDetails.estimatedFinishIn"),value:M.value}]:[];if(y.value==="completed"){const K=b.value,ne=K?.executionEndTimestamp,ce=K?.executionTime,X=ne?$n(ne,r.value):"",oe=ce!==void 0?In(ce):"";return ce!==void 0&&(ce/36e5).toFixed(3)+"",[{label:u("queue.jobDetails.generatedOn"),value:X},{label:u("queue.jobDetails.totalGenerationTime"),value:oe}]}if(y.value==="failed"){const ne=b.value?.executionTime,ce=ne!==void 0?In(ne):"";return ne!==void 0&&(ne/36e5).toFixed(3)+"",[{label:u("queue.jobDetails.queuedAt"),value:c.value},{label:u("queue.jobDetails.failedAfter"),value:ce}]}return[]}),{errorMessageValue:R,copyErrorMessage:j,reportJobError:q}=Mp({taskForJob:b,copyToClipboard:h,dialog:i});return(K,ne)=>(m(),N("div",Ap,[f("div",Ep,[f("span",Lp,z(C(u)("queue.jobDetails.header")),1)]),f("div",Vp,[f("div",Op,[(m(!0),N(le,null,be(V.value,ce=>(m(),N(le,{key:ce.label},[f("div",Rp,z(ce.label),1),f("div",Wp,[f("span",zp,z(ce.value),1),ce.canCopy?(m(),F(ee,{key:0,size:"icon",variant:"muted-textonly","aria-label":t.value,onClick:ke(d,["stop"])},{default:L(()=>ne[0]||(ne[0]=[f("i",{class:"icon-[lucide--copy] size-4"},null,-1)])),_:1},8,["aria-label"])):O("",!0)])],64))),128))]),U.value.length?(m(),N("div",Bp,[(m(!0),N(le,null,be(U.value,ce=>(m(),N(le,{key:ce.label},[f("div",Fp,z(ce.label),1),f("div",Up,[f("span",Gp,z(ce.value),1)])],64))),128))])):O("",!0),y.value==="failed"?(m(),N("div",jp,[f("div",Hp,z(C(u)("queue.jobDetails.errorMessage")),1),f("div",qp,[W(ee,{class:"justify-start px-0",variant:"muted-textonly",size:"sm","icon-position":"right",onClick:ke(C(j),["stop"])},{default:L(()=>[f("span",null,z(t.value),1),ne[1]||(ne[1]=f("i",{class:"icon-[lucide--copy] block size-3.5 leading-none"},null,-1))]),_:1},8,["onClick"]),W(ee,{class:"justify-start px-0",variant:"muted-textonly",size:"sm","icon-position":"right",onClick:ke(C(q),["stop"])},{default:L(()=>[f("span",null,z(C(u)("queue.jobDetails.report")),1),ne[2]||(ne[2]=f("i",{class:"icon-[lucide--message-circle-warning] block size-3.5 leading-none"},null,-1))]),_:1},8,["onClick"])]),f("div",Kp,z(C(R)),1)])):O("",!0)])]))}}),Yp={class:"w-[300px] min-w-[260px] rounded-lg shadow-md"},Qp={class:"p-3"},Xp={class:"relative aspect-square w-full overflow-hidden rounded-lg"},Zp=["src","alt"],ef={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)"}},tf={class:"mt-2 text-center"},of=["title"],nf={key:0,class:"mt-1 text-[0.75rem] leading-normal text-text-secondary"},sf=H({inheritAttrs:!1,__name:"QueueAssetPreview",props:{imageUrl:{},name:{},timeLabel:{}},emits:["image-click"],setup(e){const o=E(null),t=E(null),s=E(null),a=n(()=>{const l=o.value;l&&(t.value=l.naturalWidth||null,s.value=l.naturalHeight||null)},"onImgLoad");return(l,i)=>(m(),N("div",Yp,[f("div",Qp,[f("div",Xp,[f("img",{ref_key:"imgRef",ref:o,src:l.imageUrl,alt:l.name,class:"h-full w-full cursor-pointer object-contain",onClick:i[0]||(i[0]=r=>l.$emit("image-click")),onLoad:a},null,40,Zp),l.timeLabel?(m(),N("div",ef,z(l.timeLabel),1)):O("",!0)]),f("div",tf,[f("div",{class:"truncate text-[0.875rem] leading-normal font-semibold text-text-primary",title:l.name},z(l.name),9,of),t.value&&s.value?(m(),N("div",nf,z(t.value)+"x"+z(s.value),1)):O("",!0)])])]))}}),af={key:0,class:"absolute inset-0"},lf={class:"relative z-1 flex items-center gap-1"},rf={class:"relative inline-flex items-center justify-center"},uf={class:"inline-flex h-6 w-6 items-center justify-center overflow-hidden rounded-[6px]"},cf=["src"],df={class:"relative z-1 min-w-0 flex-1"},pf=["title"],ff={class:"relative z-1 flex items-center gap-2 text-text-secondary"},mf={key:"actions",class:"inline-flex items-center gap-2 pr-1"},vf={key:"secondary",class:"pr-2"},gf=H({__name:"QueueJobItem",props:{jobId:{},workflowId:{default:void 0},state:{},title:{},rightText:{default:""},iconName:{default:void 0},iconImageUrl:{default:void 0},showClear:{type:Boolean,default:void 0},showMenu:{type:Boolean,default:void 0},progressTotalPercent:{default:void 0},progressCurrentPercent:{default:void 0},activeDetailsId:{default:null}},emits:["cancel","delete","menu","view","details-enter","details-leave"],setup(e,{emit:o}){const t=e,s=o,{t:a}=de(),l=k(()=>Xe(a("g.cancel"))),i=k(()=>Xe(a("g.delete"))),r=k(()=>Xe(a("g.more"))),u=E(null),p=k(()=>t.activeDetailsId===t.jobId),v=n(()=>{y.value||s("details-enter",t.jobId)},"onRowEnter"),h=n(()=>s("details-leave",t.jobId),"onRowLeave"),d=n(()=>s("details-enter",t.jobId),"onPopoverEnter"),b=n(()=>s("details-leave",t.jobId),"onPopoverLeave"),y=E(!1),g=E(null),c=E(null),w=n(()=>{g.value!==null&&(clearTimeout(g.value),g.value=null)},"clearPreviewHideTimer"),_=n(()=>{c.value!==null&&(clearTimeout(c.value),c.value=null)},"clearPreviewShowTimer"),S=k(()=>t.state==="completed"&&!!t.iconImageUrl),x=n(()=>{S.value&&(w(),_(),c.value=window.setTimeout(()=>{y.value=!0,c.value=null},200))},"scheduleShowPreview"),D=n(()=>{w(),_(),g.value=window.setTimeout(()=>{y.value=!1,g.value=null},150)},"scheduleHidePreview"),P=n(()=>x(),"onIconEnter"),T=n(()=>D(),"onIconLeave"),$=n(()=>x(),"onPreviewEnter"),I=n(()=>D(),"onPreviewLeave"),B=E(null),G=n(()=>{const X=u.value;if(!X)return;const oe=X.getBoundingClientRect(),ae=8;B.value={top:oe.top,right:window.innerWidth-oe.left+ae}},"updatePopoverPosition"),M=k(()=>p.value||y.value&&S.value);se(M,X=>{X?Oe(G):B.value=null},{immediate:!1});const V=E(!1),U=k(()=>t.iconName?t.iconName:wt(t.state)),R=k(()=>t.state==="pending"&&U.value===wt("pending")&&!t.iconImageUrl),j=k(()=>t.showClear!==void 0?t.showClear:t.state!=="completed"),q=n(()=>s("details-leave",t.jobId),"emitDetailsLeave"),K=n(()=>{q(),s("cancel")},"onCancelClick"),ne=n(()=>{q(),s("delete")},"onDeleteClick"),ce=n(X=>{(t.showMenu===void 0||t.showMenu)&&s("menu",X)},"onContextMenu");return(X,oe)=>{const ae=Se("tooltip");return m(),N("div",{ref_key:"rowRef",ref:u,class:"relative",onMouseenter:v,onMouseleave:h,onContextmenu:ke(ce,["stop","prevent"])},[(m(),F(Dt,{to:"body"},[!y.value&&p.value&&B.value?(m(),N("div",{key:0,class:"fixed z-50",style:ve({top:`${B.value.top}px`,right:`${B.value.right}px`}),onMouseenter:d,onMouseleave:b},[W(Jp,{"job-id":t.jobId,"workflow-id":t.workflowId},null,8,["job-id","workflow-id"])],36)):O("",!0)])),(m(),F(Dt,{to:"body"},[y.value&&S.value&&B.value?(m(),N("div",{key:0,class:"fixed z-50",style:ve({top:`${B.value.top}px`,right:`${B.value.right}px`}),onMouseenter:$,onMouseleave:I},[W(sf,{"image-url":X.iconImageUrl,name:t.title,"time-label":X.rightText||void 0,onImageClick:oe[0]||(oe[0]=xe=>s("view"))},null,8,["image-url","name","time-label"])],36)):O("",!0)])),f("div",{class:"relative flex items-center justify-between gap-2 overflow-hidden rounded-lg border border-secondary-background bg-secondary-background p-1 text-[12px] text-text-primary transition-colors duration-150 ease-in-out hover:border-secondary-background-hover hover:bg-secondary-background-hover",onMouseenter:oe[3]||(oe[3]=xe=>V.value=!0),onMouseleave:oe[4]||(oe[4]=xe=>V.value=!1)},[t.state==="running"&&(t.progressTotalPercent!==void 0||t.progressCurrentPercent!==void 0)?(m(),N("div",af,[t.progressTotalPercent!==void 0?(m(),N("div",{key:0,class:"pointer-events-none absolute inset-y-0 left-0 h-full bg-interface-panel-job-progress-primary transition-[width]",style:ve({width:`${t.progressTotalPercent}%`})},null,4)):O("",!0),t.progressCurrentPercent!==void 0?(m(),N("div",{key:1,class:"pointer-events-none absolute inset-y-0 left-0 h-full bg-interface-panel-job-progress-secondary transition-[width]",style:ve({width:`${t.progressCurrentPercent}%`})},null,4)):O("",!0)])):O("",!0),f("div",lf,[f("div",rf,[f("div",{class:"absolute left-1/2 top-1/2 size-10 -translate-x-1/2 -translate-y-1/2",onMouseenter:ke(P,["stop"]),onMouseleave:ke(T,["stop"])},null,32),f("div",uf,[X.iconImageUrl?(m(),N("img",{key:0,src:X.iconImageUrl,class:"h-full w-full object-cover"},null,8,cf)):(m(),N("i",{key:1,class:Q(C(pe)(U.value,"size-4",R.value&&"animate-spin"))},null,2))])])]),f("div",df,[f("div",{class:"truncate opacity-90",title:t.title},[Ne(X.$slots,"primary",{},()=>[_e(z(t.title),1)])],8,pf)]),f("div",ff,[W(zn,{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:L(()=>[V.value?(m(),N("div",mf,[t.state==="failed"&&j.value?ue((m(),F(ee,{key:0,variant:"destructive",size:"icon","aria-label":C(a)("g.delete"),onClick:ke(ne,["stop"])},{default:L(()=>oe[5]||(oe[5]=[f("i",{class:"icon-[lucide--trash-2] size-4"},null,-1)])),_:1},8,["aria-label"])),[[ae,i.value,void 0,{top:!0}]]):t.state!=="completed"&&t.state!=="running"&&j.value?ue((m(),F(ee,{key:1,variant:"destructive",size:"icon","aria-label":C(a)("g.cancel"),onClick:ke(K,["stop"])},{default:L(()=>oe[6]||(oe[6]=[f("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"])),[[ae,l.value,void 0,{top:!0}]]):t.state==="completed"?(m(),F(ee,{key:2,variant:"textonly",size:"sm",onClick:oe[1]||(oe[1]=ke(xe=>s("view"),["stop"]))},{default:L(()=>[_e(z(C(a)("menuLabels.View")),1)]),_:1})):O("",!0),t.showMenu===void 0||t.showMenu?ue((m(),F(ee,{key:3,variant:"textonly",size:"icon-sm","aria-label":C(a)("g.more"),onClick:oe[2]||(oe[2]=ke(xe=>s("menu",xe),["stop"]))},{default:L(()=>oe[7]||(oe[7]=[f("i",{class:"icon-[lucide--more-horizontal] size-4"},null,-1)])),_:1},8,["aria-label"])),[[ae,r.value,void 0,{top:!0}]]):O("",!0)])):t.state!=="running"?(m(),N("div",vf,[Ne(X.$slots,"secondary",{},()=>[_e(z(t.rightText),1)])])):O("",!0)]),_:3}),t.state==="running"&&j.value?ue((m(),F(ee,{key:0,variant:"destructive",size:"icon","aria-label":C(a)("g.cancel"),onClick:ke(K,["stop"])},{default:L(()=>oe[8]||(oe[8]=[f("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"])),[[ae,l.value,void 0,{top:!0}]]):O("",!0)])],32)],544)}}}),hf={class:"flex flex-col gap-4 px-3 pb-4"},yf={class:"text-[12px] leading-none text-text-secondary"},bf=H({__name:"JobGroupsList",props:{displayedJobGroups:{}},emits:["cancelItem","deleteItem","menu","viewItem"],setup(e,{emit:o}){const t=e,s=o,a=n(y=>{s("cancelItem",y)},"emitCancelItem"),l=n(y=>{s("deleteItem",y)},"emitDeleteItem"),i=E(null),r=E(null),u=E(null),p=n(()=>{r.value!==null&&(clearTimeout(r.value),r.value=null)},"clearHideTimer"),v=n(()=>{u.value!==null&&(clearTimeout(u.value),u.value=null)},"clearShowTimer"),h=n(y=>{p(),v(),u.value=window.setTimeout(()=>{i.value=y,u.value=null},200)},"onDetailsEnter"),d=n(y=>{p(),v(),r.value=window.setTimeout(()=>{i.value===y&&(i.value=null),r.value=null},150)},"onDetailsLeave"),b=n(()=>{p(),v(),i.value=null},"resetActiveDetails");return se(()=>t.displayedJobGroups,y=>{const g=i.value;if(!g)return;y.some(w=>w.items.some(_=>_.id===g))||b()}),gt(b),(y,g)=>(m(),N("div",hf,[(m(!0),N(le,null,be(y.displayedJobGroups,c=>(m(),N("div",{key:c.key,class:"flex flex-col gap-2"},[f("div",yf,z(c.label),1),(m(!0),N(le,null,be(c.items,w=>(m(),F(gf,{key:w.id,"job-id":w.id,"workflow-id":w.taskRef?.workflow?.id,state:w.state,title:w.title,"right-text":w.meta,"icon-name":w.iconName,"icon-image-url":w.iconImageUrl,"show-clear":w.showClear,"show-menu":!0,"progress-total-percent":w.progressTotalPercent,"progress-current-percent":w.progressCurrentPercent,"running-node-name":w.runningNodeName,"active-details-id":i.value,onCancel:n(_=>a(w),"onCancel"),onDelete:n(_=>l(w),"onDelete"),onMenu:n(_=>y.$emit("menu",w,_),"onMenu"),onView:n(_=>y.$emit("viewItem",w),"onView"),onDetailsEnter:h,onDetailsLeave:d},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))]))}}),wf={class:"flex w-full flex-col gap-4"},kf={class:"flex items-center justify-between px-3"},Cf={class:"ml-4 inline-flex items-center"},Sf={class:"inline-flex h-6 items-center text-[12px] leading-none text-text-primary opacity-90"},xf={class:"font-bold"},_f={class:"ml-1"},Tf={class:"flex-1 min-h-0 overflow-y-auto"},Nf=H({__name:"QueueOverlayExpanded",props:{headerTitle:{},showConcurrentIndicator:{type:Boolean},concurrentWorkflowCount:{},queuedCount:{},selectedJobTab:{},selectedWorkflowFilter:{},selectedSortMode:{},displayedJobGroups:{},hasFailedJobs:{type:Boolean}},emits:["showAssets","clearHistory","clearQueued","update:selectedJobTab","update:selectedWorkflowFilter","update:selectedSortMode","cancelItem","deleteItem","viewItem"],setup(e,{emit:o}){const t=o,{t:s}=de(),a=E(null),l=E(null),{jobMenuEntries:i}=Qd(()=>a.value,h=>t("viewItem",h)),r=n(h=>{t("cancelItem",h)},"onCancelItemEvent"),u=n(h=>{t("deleteItem",h)},"onDeleteItemEvent"),p=n((h,d)=>{a.value=h,l.value?.open(d)},"onMenuItem"),v=n(async h=>{h.kind!=="divider"&&(h.onClick&&await h.onClick(),l.value?.hide())},"onJobMenuAction");return(h,d)=>(m(),N("div",wf,[W(ap,{"header-title":h.headerTitle,"show-concurrent-indicator":h.showConcurrentIndicator,"concurrent-workflow-count":h.concurrentWorkflowCount,onClearHistory:d[0]||(d[0]=b=>h.$emit("clearHistory"))},null,8,["header-title","show-concurrent-indicator","concurrent-workflow-count"]),f("div",kf,[W(ee,{class:"grow gap-1 justify-center",variant:"secondary",size:"sm",onClick:d[1]||(d[1]=b=>h.$emit("showAssets"))},{default:L(()=>[d[7]||(d[7]=f("i",{class:"icon-[comfy--image-ai-edit] size-4"},null,-1)),f("span",null,z(C(s)("sideToolbar.queueProgressOverlay.showAssets")),1)]),_:1}),f("div",Cf,[f("div",Sf,[f("span",xf,z(h.queuedCount),1),f("span",_f,z(C(s)("sideToolbar.queueProgressOverlay.queuedSuffix")),1)]),h.queuedCount>0?(m(),F(ee,{key:0,class:"ml-2",variant:"destructive",size:"icon","aria-label":C(s)("sideToolbar.queueProgressOverlay.clearQueued"),onClick:d[2]||(d[2]=b=>h.$emit("clearQueued"))},{default:L(()=>d[8]||(d[8]=[f("i",{class:"icon-[lucide--list-x] size-4"},null,-1)])),_:1},8,["aria-label"])):O("",!0)])]),W(Ip,{"selected-job-tab":h.selectedJobTab,"selected-workflow-filter":h.selectedWorkflowFilter,"selected-sort-mode":h.selectedSortMode,"has-failed-jobs":h.hasFailedJobs,"onUpdate:selectedJobTab":d[3]||(d[3]=b=>h.$emit("update:selectedJobTab",b)),"onUpdate:selectedWorkflowFilter":d[4]||(d[4]=b=>h.$emit("update:selectedWorkflowFilter",b)),"onUpdate:selectedSortMode":d[5]||(d[5]=b=>h.$emit("update:selectedSortMode",b))},null,8,["selected-job-tab","selected-workflow-filter","selected-sort-mode","has-failed-jobs"]),f("div",Tf,[W(bf,{"displayed-job-groups":h.displayedJobGroups,onCancelItem:r,onDeleteItem:u,onViewItem:d[6]||(d[6]=b=>h.$emit("viewItem",b)),onMenu:p},null,8,["displayed-job-groups"])]),W(rp,{ref_key:"jobContextMenuRef",ref:l,entries:C(i),onAction:v},null,8,["entries"])]))}}),$f={class:"w-[360px] rounded-2xl border border-interface-stroke bg-interface-panel-surface text-text-primary shadow-interface font-inter"},If={class:"flex items-center justify-between border-b border-interface-stroke px-4 py-4"},Mf={class:"m-0 text-[14px] font-normal leading-none"},Pf={class:"flex flex-col gap-4 px-4 py-4 text-[14px] text-text-secondary"},Df={class:"m-0"},Af={class:"m-0"},Ef={class:"flex items-center justify-end px-4 py-4"},Lf={class:"flex items-center gap-4 leading-none"},Vf=H({__name:"QueueClearHistoryDialog",setup(e){const o=ht(),t=St(),{t:s}=de(),{wrapWithErrorHandlingAsync:a}=Wt(),l=E(!1),i=a(async()=>{await t.clear(["history"]),o.closeDialog()},void 0,()=>{l.value=!1}),r=n(async()=>{l.value||(l.value=!0,await i())},"onConfirm"),u=n(()=>{o.closeDialog()},"onCancel");return(p,v)=>(m(),N("section",$f,[f("header",If,[f("p",Mf,z(C(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogTitle")),1),W(ee,{size:"icon",variant:"muted-textonly","aria-label":C(s)("g.close"),onClick:u},{default:L(()=>v[0]||(v[0]=[f("i",{class:"icon-[lucide--x] block size-4 leading-none"},null,-1)])),_:1},8,["aria-label"])]),f("div",Pf,[f("p",Df,z(C(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogDescription")),1),f("p",Af,z(C(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogAssetsNote")),1)]),f("footer",Ef,[f("div",Lf,[W(ee,{variant:"muted-textonly",size:"lg",onClick:u},{default:L(()=>[_e(z(C(s)("g.cancel")),1)]),_:1}),W(ee,{variant:"secondary",size:"lg",disabled:l.value,onClick:r},{default:L(()=>[_e(z(C(s)("g.clear")),1)]),_:1},8,["disabled"])])])]))}}),Of=n(()=>{const e=St(),o=Qe(),t=k(()=>e.runningTasks.length>0||!o.isIdle),s=E(null),a=E(null),l=E(null),i=n(()=>{l.value!==null&&(clearTimeout(l.value),l.value=null)},"clearDismissTimer"),r=n(()=>{i(),l.value=window.setTimeout(()=>{a.value=null,l.value=null},6e3)},"startDismissTimer"),u=n(()=>{a.value=null,i()},"clearSummary");return se(t,(v,h)=>{if(!h&&v&&(s.value=Date.now()),h&&!v){const d=s.value??0,b=e.historyTasks.filter(_=>{const S=_.executionEndTimestamp;return typeof S=="number"&&S>=d});if(!b.length){a.value=null,i();return}let y=0,g=0;const c=[];for(const _ of b){const S=as(_,!1);if(S==="completed"){y++;const x=_.previewOutput;x?.isImage&&c.push(x.urlWithTimestamp)}else S==="failed"&&g++}if(y===0&&g===0){a.value=null,i();return}let w="mixed";g===0?w="allSuccess":y===0&&(w="allFailed"),a.value={mode:w,completedCount:y,failedCount:g,thumbnailUrls:c.slice(0,3)},r()}},{immediate:!0}),{summary:k(()=>a.value),clearSummary:u}},"useCompletionSummary");function Rf(e){const o=E(-1),t=Je([]);return{galleryActiveIndex:o,galleryItems:t,onViewItem:n(a=>{const l=e().flatMap(u=>{const p=u.previewOutput;return p&&p.supportsPreview?[p]:[]});if(!l.length)return;t.value=l;const i=a.taskRef?.previewOutput?.url,r=i?l.findIndex(u=>u.url===i):0;o.value=r>=0?r:0},"onViewItem")}}n(Rf,"useResultGallery");const Wf={class:Q(["flex","justify-end","w-full","pointer-events-none"])},zf=H({__name:"QueueProgressOverlay",props:{expanded:{type:Boolean},menuHovered:{type:Boolean,default:!1}},emits:["update:expanded"],setup(e,{emit:o}){const t=e,s=o,{t:a}=de(),l=St(),i=Ce(),r=Qe(),u=Uo(),p=ht(),v=Ra(),h=_i(),{wrapWithErrorHandlingAsync:d}=Wt(),{totalPercentFormatted:b,currentNodePercentFormatted:y,totalProgressStyle:g,currentNodeProgressStyle:c}=ul(),w=E(!1),_=k(()=>w.value||t.menuHovered),S=E(!1),x=k({get:n(()=>t.expanded===void 0?S.value:t.expanded,"get"),set:n(te=>{t.expanded===void 0&&(S.value=te),s("update:expanded",te)},"set")}),{summary:D,clearSummary:P}=Of(),T=k(()=>D.value!==null),$=k(()=>l.runningTasks.length),I=k(()=>l.pendingTasks.length),B=k(()=>!r.isIdle),G=k(()=>$.value>0||B.value),M=k(()=>$.value+I.value),V=k(()=>x.value?"expanded":G.value?"active":T.value?"empty":"hidden"),U=k(()=>V.value==="expanded"||V.value==="empty"||V.value==="active"&&_.value),R=k(()=>V.value!=="hidden"),j=k(()=>U.value?"border-interface-stroke bg-interface-panel-surface shadow-interface":"border-transparent bg-transparent shadow-none"),q=k(()=>`flex items-center justify-end gap-4 transition-opacity duration-200 ease-in-out ${V.value==="active"&&_.value?"opacity-100 pointer-events-auto":"opacity-0 pointer-events-none"}`),K=k(()=>G.value?`${M.value} ${a("sideToolbar.queueProgressOverlay.activeJobsSuffix")}`:a("sideToolbar.queueProgressOverlay.jobQueue")),ne=k(()=>r.runningWorkflowCount),ce=k(()=>ne.value>1),{selectedJobTab:X,selectedWorkflowFilter:oe,selectedSortMode:ae,hasFailedJobs:xe,filteredTasks:Ue,groupedJobItems:qe,currentNodeName:nt}=gp(),He=k(()=>qe.value),Ge=d(async te=>{const Te=te.taskRef?.promptId;Te&&(te.state==="running"||te.state==="initialization"?(await we.interrupt(Te),await l.update()):te.state==="pending"&&(await we.deleteItem("queue",Te),await l.update()))}),bt=d(async te=>{te.taskRef&&await l.delete(te.taskRef)}),{galleryActiveIndex:rt,galleryItems:Ft,onViewItem:Ut}=Rf(()=>Ue.value),xt=n(te=>{x.value=te},"setExpanded"),ut=n(()=>{xt(!0)},"openExpandedFromEmpty"),It=n(()=>{xt(!0)},"viewAllJobs"),Mt=n(()=>{ut(),P()},"onSummaryClick"),ct=n(()=>{u.activeSidebarTabId="assets"},"openAssetsSidebar"),io=n(async te=>{const Te=te.taskRef,Ve=Te?.promptId,$l=Te?.previewOutput;if(!Ve||!$l)return;const hs=String(Ve);if(ct(),await Oe(),await v.updateHistory(),!v.historyAssets.find(Il=>Il.id===hs))throw new Error("Asset not found in media assets panel");h.setSelection([hs])},"focusAssetInSidebar"),ro=d(async te=>{Ut(te),await io(te)}),Ke=d(async()=>{await i.execute("Comfy.ClearPendingTasks")}),Y=d(async()=>{const Te=l.runningTasks.map(Ve=>Ve.promptId).filter(Ve=>typeof Ve=="string"&&Ve.length>0);Te.length&&await Promise.all(Te.map(Ve=>we.interrupt(Ve)))}),Z=n(()=>{p.showDialog({key:"queue-clear-history",component:Vf,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"),$e=n(()=>{Z()},"onClearHistoryFromMenu");return(te,Te)=>(m(),N(le,null,[ue(f("div",Wf,[f("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",j.value]),onMouseenter:Te[3]||(Te[3]=Ve=>w.value=!0),onMouseleave:Te[4]||(Te[4]=Ve=>w.value=!1)},[x.value?(m(),F(Nf,{key:0,"selected-job-tab":C(X),"onUpdate:selectedJobTab":Te[0]||(Te[0]=Ve=>ft(X)?X.value=Ve:null),"selected-workflow-filter":C(oe),"onUpdate:selectedWorkflowFilter":Te[1]||(Te[1]=Ve=>ft(oe)?oe.value=Ve:null),"selected-sort-mode":C(ae),"onUpdate:selectedSortMode":Te[2]||(Te[2]=Ve=>ft(ae)?ae.value=Ve:null),class:"flex-1 min-h-0","header-title":K.value,"show-concurrent-indicator":ce.value,"concurrent-workflow-count":ne.value,"queued-count":I.value,"displayed-job-groups":He.value,"has-failed-jobs":C(xe),onShowAssets:ct,onClearHistory:$e,onClearQueued:C(Ke),onCancelItem:C(Ge),onDeleteItem:C(bt),onViewItem:C(ro)},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"])):G.value?(m(),F(Od,{key:1,"total-progress-style":C(g),"current-node-progress-style":C(c),"total-percent-formatted":C(b),"current-node-percent-formatted":C(y),"current-node-name":C(nt),"running-count":$.value,"queued-count":I.value,"bottom-row-class":q.value,onInterruptAll:C(Y),onClearQueued:C(Ke),onViewAllJobs:It},null,8,["total-progress-style","current-node-progress-style","total-percent-formatted","current-node-percent-formatted","current-node-name","running-count","queued-count","bottom-row-class","onInterruptAll","onClearQueued"])):C(D)?(m(),F(Yd,{key:2,summary:C(D),onSummaryClick:Mt},null,8,["summary"])):O("",!0)],34)],512),[[Ye,R.value]]),W(Ti,{"active-index":C(rt),"onUpdate:activeIndex":Te[5]||(Te[5]=Ve=>ft(rt)?rt.value=Ve:null),"all-gallery-items":C(Ft)},null,8,["active-index","all-gallery-items"])],64))}}),Bf=Ot("actionBarButton",()=>{const e=Yn();return{buttons:k(()=>e.extensions.flatMap(t=>t.actionBarButtons??[]))}}),Ff={class:"flex h-full shrink-0 items-center gap-1"},Uf={key:0},Gf=H({__name:"ActionBarButtons",setup(e){const o=Bf(),s=Jo(Yo).smaller("sm");return(a,l)=>{const i=Se("tooltip");return m(),N("div",Ff,[(m(!0),N(le,null,be(C(o).buttons,(r,u)=>ue((m(),F(ee,{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:L(()=>[f("i",{class:Q(r.icon)},null,2),!C(s)&&r.label?(m(),N("span",Uf,z(r.label),1)):O("",!0)]),_:2},1032,["aria-label","class","onClick"])),[[i,r.tooltip,void 0,{bottom:!0}]])),128))])}}}),jf={class:"current-user-popover w-80 -m-3 p-2 rounded-lg border border-border-default bg-base-background shadow-[1px_1px_8px_0_rgba(0,0,0,0.4)]"},Hf={class:"flex flex-col items-center px-0 py-3 mb-4"},qf={class:"my-0 mb-1 truncate text-base font-bold text-base-foreground"},Kf={key:0,class:"my-0 truncate text-sm text-muted"},Jf={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"},Yf={key:0,class:"flex items-center gap-2 px-4 py-2"},Qf={key:1,class:"text-base font-semibold text-base-foreground"},Xf={class:"icon-[lucide--circle-help] cursor-help text-base text-muted-foreground mr-auto"},Zf={key:1,class:"flex justify-center px-4"},em={class:"text-sm text-base-foreground flex-1"},tm={class:"text-sm text-base-foreground flex-1"},om={key:0,class:"text-xs font-bold text-base-background bg-base-foreground px-1.5 py-0.5 rounded-full"},nm={class:"text-sm text-base-foreground flex-1"},sm={class:"text-sm text-base-foreground flex-1"},am={class:"text-sm text-base-foreground flex-1"},lm=H({__name:"CurrentUserPopover",emits:["close"],setup(e,{emit:o}){const t=o,{buildDocsUrl:s,docsPaths:a}=so(),{userDisplayName:l,userEmail:i,userPhotoUrl:r,handleSignOut:u}=ao(),p=Wa(),v=za(),h=et(),{isActiveSubscription:d,subscriptionTierName:b,subscriptionTier:y,fetchStatus:g}=Kn(),c=Qc(),{locale:w}=de(),_=k(()=>{const G=v.balance?.effective_balance_micros??v.balance?.amount_micros??0;return Ni({cents:G,locale:w.value,numberOptions:{minimumFractionDigits:0,maximumFractionDigits:2}})}),S=k(()=>{const G=y.value;return G==="FOUNDERS_EDITION"||G==="STANDARD"||G==="CREATOR"}),x=n(()=>{h.showSettingsDialog("user"),t("close")},"handleOpenUserSettings"),D=n(()=>{c.show(),t("close")},"handleOpenPlansAndPricing"),P=n(()=>{h.showSettingsDialog("credits"),t("close")},"handleOpenPlanAndCreditsSettings"),T=n(()=>{h.showTopUpCreditsDialog(),t("close")},"handleTopUp"),$=n(()=>{window.open(s(a.partnerNodesPricing,{includeLocale:!0}),"_blank"),t("close")},"handleOpenPartnerNodesInfo"),I=n(async()=>{await u(),t("close")},"handleLogout"),B=n(async()=>{await g()},"handleSubscribed");return Le(()=>{p.fetchBalance()}),(G,M)=>{const V=Se("tooltip");return m(),N("div",jf,[f("div",Hf,[W(nl,{class:"mb-1","photo-url":C(r),"pt:icon:class":{"text-2xl!":!C(r)},size:"large"},null,8,["photo-url","pt:icon:class"]),f("h3",qf,z(C(l)||G.$t("g.user")),1),C(i)?(m(),N("p",Kf,z(C(i)),1)):O("",!0),C(b)?(m(),N("span",Jf,z(C(b)),1)):O("",!0)]),C(d)?(m(),N("div",Yf,[M[0]||(M[0]=f("i",{class:"icon-[lucide--component] text-amber-400 text-sm"},null,-1)),C(v).isFetchingBalance?(m(),F(C(jn),{key:0,width:"4rem",height:"1.25rem",class:"w-full"})):(m(),N("span",Qf,z(_.value),1)),ue(f("i",Xf,null,512),[[V,{value:G.$t("credits.unified.tooltip"),showDelay:300}]]),W(ee,{variant:"secondary",size:"sm",class:"text-base-foreground","data-testid":"add-credits-button",onClick:T},{default:L(()=>[_e(z(G.$t("subscription.addCredits")),1)]),_:1})])):(m(),N("div",Zf,[W(Yc,{fluid:!1,label:G.$t("subscription.subscribeToComfyCloud"),size:"sm",variant:"gradient",onSubscribed:B},null,8,["label"])])),W(C(Ss),{class:"my-2 mx-0"}),C(d)?(m(),N("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:$},[M[1]||(M[1]=f("i",{class:"icon-[lucide--tag] text-muted-foreground text-sm"},null,-1)),f("span",em,z(G.$t("subscription.partnerNodesCredits")),1)])):O("",!0),f("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:D},[M[2]||(M[2]=f("i",{class:"icon-[lucide--receipt-text] text-muted-foreground text-sm"},null,-1)),f("span",tm,z(G.$t("subscription.plansAndPricing")),1),S.value?(m(),N("span",om,z(G.$t("subscription.upgrade")),1)):O("",!0)]),C(d)?(m(),N("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:P},[M[3]||(M[3]=f("i",{class:"icon-[lucide--file-text] text-muted-foreground text-sm"},null,-1)),f("span",nm,z(G.$t("subscription.managePlan")),1)])):O("",!0),f("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:x},[M[4]||(M[4]=f("i",{class:"icon-[lucide--settings-2] text-muted-foreground text-sm"},null,-1)),f("span",sm,z(G.$t("userSettings.accountSettings")),1)]),W(C(Ss),{class:"my-2 mx-0"}),f("div",{class:"flex items-center gap-2 px-4 py-2 cursor-pointer hover:bg-secondary-background-hover","data-testid":"logout-menu-item",onClick:I},[M[5]||(M[5]=f("i",{class:"icon-[lucide--log-out] text-muted-foreground text-sm"},null,-1)),f("span",am,z(G.$t("auth.signOut.signOut")),1)])])}}}),im={class:"flex items-center gap-1 rounded-full hover:bg-interface-button-hover-surface"},cl=H({__name:"CurrentUserButton",setup(e){const{isLoggedIn:o,userPhotoUrl:t}=ao(),s=E(null),a=k(()=>t.value??void 0),l=n(()=>{s.value?.hide()},"closePopover");return(i,r)=>(m(),N("div",null,[C(o)?(m(),F(ee,{key:0,class:"p-1 hover:bg-transparent",variant:"muted-textonly","aria-label":i.$t("g.currentUser"),onClick:r[0]||(r[0]=u=>s.value?.toggle(u))},{default:L(()=>[f("div",im,[W(nl,{"photo-url":a.value},null,8,["photo-url"]),r[1]||(r[1]=f("i",{class:"icon-[lucide--chevron-down] size-3 px-1"},null,-1))])]),_:1},8,["aria-label"])):O("",!0),W(C(Ze),{ref_key:"popover",ref:s,"show-arrow":!1,pt:{root:{class:"rounded-lg"}}},{default:L(()=>[W(lm,{onClose:l})]),_:1},512)]))}}),rm={class:"mb-1"},um=["href"],dl=H({__name:"LoginButton",setup(e){const{isLoggedIn:o,handleSignIn:t}=ao(),{buildDocsUrl:s}=so(),a=s("/tutorials/api-nodes/overview#api-nodes",{includeLocale:!0}),l=E(null);let i=null,r=null;const u=n(h=>{i&&(clearTimeout(i),i=null),r&&(clearTimeout(r),r=null),r=setTimeout(()=>{l.value&&l.value.show(h,h.target)},200)},"showPopover"),p=n(()=>{i&&(clearTimeout(i),i=null)},"cancelHidePopover"),v=n(()=>{r&&(clearTimeout(r),r=null),i=setTimeout(()=>{l.value&&l.value.hide()},150)},"hidePopover");return(h,d)=>(m(),N(le,null,[C(o)?O("",!0):(m(),F(ee,{key:0,variant:"secondary",size:"icon",class:"rounded-full bg-secondary-background text-base-foreground hover:bg-secondary-background-hover","aria-label":C(re)("g.login"),onClick:d[0]||(d[0]=b=>C(t)()),onMouseenter:u,onMouseleave:v},{default:L(()=>d[1]||(d[1]=[f("i",{class:"icon-[lucide--user] size-4"},null,-1)])),_:1},8,["aria-label"])),W(C(Ze),{ref_key:"popoverRef",ref:l,class:"p-2",onMouseout:v,onMouseover:p},{default:L(()=>[f("div",null,[f("div",rm,z(C(re)("auth.loginButton.tooltipHelp")),1),f("a",{href:C(a),target:"_blank",class:"text-neutral-500 hover:text-primary"},z(C(re)("auth.loginButton.tooltipLearnMore")),9,um)])]),_:1},512)],64))}}),cm={class:"min-w-0 flex-1"},dm={class:"mx-1 flex flex-col items-end gap-1"},pm={class:"flex items-center gap-2"},fm={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"},mm={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"},vm={key:0,class:"absolute -top-1 -right-1 min-w-[16px] rounded-full bg-primary-background py-0.25 text-[10px] font-medium leading-[14px] text-white"},gm=H({__name:"TopMenuSection",setup(e){const o=tt(),t=to(),s=pt(),{isLoggedIn:a}=ao(),l=Be(),{t:i}=de(),{toastErrorHandler:r}=Wt(),u=E(!1),p=St(),v=E(!1),h=k(()=>p.pendingTasks.length),d=k(()=>Xe(i("sideToolbar.queueProgressOverlay.viewJobHistory"))),b=k(()=>Xe(i("menu.customNodesManager"))),{isOpen:y}=Fe(t),g=k(()=>Xe(i("rightSidePanel.togglePanel"))),c=E();Le(()=>{c.value&&(J.menu.element.style.width="fit-content",c.value.appendChild(J.menu.element))});const w=n(()=>{u.value=!u.value},"toggleQueueOverlay"),_=n(async()=>{try{await s.openManager({initialTab:Jt.All,showToastOnLegacyError:!1})}catch(S){try{r(S)}catch(x){console.error(S),console.error(x)}}},"openCustomNodeManager");return(S,x)=>{const D=Se("tooltip");return C(o).focusMode?O("",!0):(m(),N("div",{key:0,class:"ml-1 flex gap-x-0.5 pt-1",onMouseenter:x[1]||(x[1]=P=>v.value=!0),onMouseleave:x[2]||(x[2]=P=>v.value=!1)},[f("div",cm,[W(yd)]),f("div",dm,[f("div",pm,[C(s).shouldShowManagerButtons.value?(m(),N("div",fm,[ue((m(),F(ee,{variant:"secondary",size:"icon","aria-label":C(i)("menu.customNodesManager"),onClick:_},{default:L(()=>x[3]||(x[3]=[f("i",{class:"icon-[lucide--puzzle] size-4"},null,-1)])),_:1},8,["aria-label"])),[[D,b.value,void 0,{bottom:!0}]])])):O("",!0),f("div",mm,[W(Gf),f("div",{ref_key:"legacyCommandsContainerRef",ref:c,class:"[&:not(:has(*>*:not(:empty)))]:hidden"},null,512),W(rd),ue((m(),F(ee,{type:"destructive",size:"icon","aria-pressed":u.value,"aria-label":C(i)("sideToolbar.queueProgressOverlay.expandCollapsedQueue"),onClick:w},{default:L(()=>[x[4]||(x[4]=f("i",{class:"icon-[lucide--history] size-4"},null,-1)),h.value>0?(m(),N("span",vm,z(h.value),1)):O("",!0)]),_:1},8,["aria-pressed","aria-label"])),[[D,d.value,void 0,{bottom:!0}]]),C(a)?(m(),F(cl,{key:0,class:"shrink-0"})):C(l)?(m(),F(dl,{key:1})):O("",!0),C(y)?O("",!0):ue((m(),F(ee,{key:2,type:"secondary",size:"icon","aria-label":C(i)("rightSidePanel.togglePanel"),onClick:C(t).togglePanel},{default:L(()=>x[5]||(x[5]=[f("i",{class:"icon-[lucide--panel-right] size-4"},null,-1)])),_:1},8,["aria-label","onClick"])),[[D,g.value,void 0,{bottom:!0}]])])]),W(zf,{expanded:u.value,"onUpdate:expanded":x[0]||(x[0]=P=>u.value=P),"menu-hovered":v.value},null,8,["expanded","menu-hovered"])])],32))}}}),ls=H({__name:"ExtensionSlot",props:{extension:{}},setup(e){const o=e,t=n((s,a)=>{s.render(a)},"mountCustomExtension");return gt(()=>{o.extension.type==="custom"&&o.extension.destroy&&o.extension.destroy()}),(s,a)=>s.extension.type==="vue"?(m(),F(Qt(s.extension.component),{key:0})):(m(),N("div",{key:1,ref:n(l=>{l&&t(o.extension,l)},"ref")},null,512))}}),hm={class:"flex h-full flex-col"},ym={class:"flex w-full justify-between"},bm={class:"tabs-container font-inter"},wm={class:"font-normal"},km={class:"flex items-center gap-2"},Cm={class:"h-0 grow"},Sm=H({__name:"BottomPanel",setup(e){const o=oo(),t=et(),{t:s}=de(),a=k(()=>{const p=o.activeBottomPanelTabId;return p==="shortcuts-essentials"||p==="shortcuts-view-controls"}),l=n(p=>p!=="shortcuts-essentials"&&p!=="shortcuts-view-controls","shouldCapitalizeTab"),i=n(p=>{const v=p.titleKey?s(p.titleKey):p.title||"";return l(p.id)?v.toUpperCase():v},"getTabDisplayTitle"),r=n(async()=>{t.showSettingsDialog("keybinding")},"openKeybindingSettings"),u=n(()=>{o.activePanel=null},"closeBottomPanel");return(p,v)=>(m(),N("div",hm,[(m(),F(C(si),{key:p.$i18n.locale,value:C(o).activeBottomPanelTabId,"onUpdate:value":v[0]||(v[0]=h=>C(o).activeBottomPanelTabId=h),style:{"--p-tabs-tablist-background":"var(--comfy-menu-bg)"}},{default:L(()=>[W(C(ai),{"pt:tab-list":"border-none h-full flex items-center py-2 border-b-1 border-solid",class:"bg-transparent"},{default:L(()=>[f("div",ym,[f("div",bm,[(m(!0),N(le,null,be(C(o).bottomPanelTabs,h=>(m(),F(C(li),{key:h.id,value:h.id,class:Q(["m-1 mx-2 border-none font-inter",{"tab-list-single-item":C(o).bottomPanelTabs.length===1}]),"pt:root":n(d=>({class:{"p-3 rounded-lg":!0,"pointer-events-none":C(o).bottomPanelTabs.length===1},style:{color:"var(--fg-color)",backgroundColor:!d.context.active||C(o).bottomPanelTabs.length===1?"":"var(--bg-color)"}}),"pt:root")},{default:L(()=>[f("span",wm,z(i(h)),1)]),_:2},1032,["value","class","pt:root"]))),128))]),f("div",km,[a.value?(m(),F(ee,{key:0,variant:"muted-textonly",size:"sm",onClick:r},{default:L(()=>[v[1]||(v[1]=f("i",{class:"pi pi-cog"},null,-1)),_e(" "+z(p.$t("shortcuts.manageShortcuts")),1)]),_:1})):O("",!0),W(ee,{class:"justify-self-end",variant:"muted-textonly",size:"sm","aria-label":C(s)("g.close"),onClick:u},{default:L(()=>v[2]||(v[2]=[f("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])])]),_:1})]),_:1},8,["value"])),f("div",Cm,[C(o).bottomPanelVisible&&C(o).activeBottomPanelTab?(m(),F(ls,{key:0,extension:C(o).activeBottomPanelTab},null,8,["extension"])):O("",!0)])]))}}),xm=De(Sm,[["__scopeId","data-v-9d1ea2c9"]]);function pl(e={}){const{useTransform:o=!1}=e,s=fe().getCanvas(),{canvasPosToClientPos:a,update:l}=$i(s.canvas,s),i=ie();se([()=>i.get("Comfy.Sidebar.Location"),()=>i.get("Comfy.Sidebar.Size"),()=>i.get("Comfy.UseNewMenu")],()=>l(),{flush:"post"});const r=E({}),u=n(v=>{const{pos:h,size:d,scale:b=s.ds.scale}=v,[y,g]=a(h),[c,w]=d;return o?{position:"fixed",transformOrigin:"0 0",transform:`scale(${b})`,left:`${y}px`,top:`${g}px`,width:`${c}px`,height:`${w}px`}:{position:"fixed",left:`${y}px`,top:`${g}px`,width:`${c*b}px`,height:`${w*b}px`}},"computeStyle");return{style:r,updatePosition:n(v=>{r.value=u(v)},"updatePosition")}}n(pl,"useAbsolutePosition");function _m(e,o){const t=Math.max(e.x,o.x),s=Math.max(e.y,o.y),a=Math.min(e.x+e.width,o.x+o.width),l=Math.min(e.y+e.height,o.y+o.height);return t>=a||s>=l?null:[t,s,a-t,l-s]}n(_m,"intersect");const Tm=n((e={})=>{const o=E({}),{margin:t=4}=e,s=n((l,i,r,u)=>{if(!r&&u){const{scale:p,offset:v}=u,h=_m({x:l.left-i.left,y:l.top-i.top,width:l.width,height:l.height},{x:(u.x+v[0]-t)*p,y:(u.y+v[1]-t)*p,width:(u.width+2*t)*p,height:(u.height+2*t)*p});if(!h)return"";const d=(h[0]-l.left+i.left)/p+"px",b=(h[1]-l.top+i.top)/p+"px",y=h[2]/p+"px",g=h[3]/p+"px";return`polygon(0% 0%, 0% 100%, ${d} 100%, ${d} ${b}, calc(${d} + ${y}) ${b}, calc(${d} + ${y}) calc(${b} + ${g}), ${d} calc(${b} + ${g}), ${d} 100%, 100% 100%, 100% 0%)`}return""},"calculateClipPath");return{style:o,updateClipPath:n((l,i,r,u)=>{const p=l.getBoundingClientRect(),v=i.getBoundingClientRect(),h=s(p,v,r,u);o.value={clipPath:h||"none",willChange:"clip-path"}},"updateClipPath")}},"useDomClipping"),Nm=["title"],$m=H({__name:"DomWidget",props:{widgetState:{}},emits:["update:widgetValue"],setup(e,{emit:o}){const t=e.widgetState.widget,s=o,a=E(),l=E({}),{style:i,updatePosition:r}=pl({useTransform:!0}),{style:u,updateClipPath:p}=Tm(),v=fe(),h=ie(),d=k(()=>h.get("Comfy.DOMClippingEnabled")),b=n(()=>{const S=v.canvas;if(!S||!a.value)return;const x=Object.values(S.selected_nodes??{})[0];if(!x){p(a.value,S.canvas,!1,void 0);return}const D=x===e.widgetState.widget.node,P=x?.renderArea,T=S.ds.offset,$=S.ds.scale,I=P?{x:P[0],y:P[1],width:P[2],height:P[3],scale:$,offset:[T[0],T[1]]}:void 0;p(a.value,S.canvas,D,I)},"updateDomClipping"),{left:y,top:g}=Un(v.getCanvas().canvas);se([()=>e.widgetState,y,g],([S,x,D])=>{r(S),d.value&&b(),l.value={...i.value,...d.value?u.value:{},zIndex:S.zIndex,pointerEvents:S.readonly||t.computedDisabled?"none":"auto",opacity:t.computedDisabled?.5:1}},{deep:!0}),se(()=>e.widgetState.visible,(S,x)=>{!S&&x&&t.options.onHide?.(t)}),Ae(document,"mousedown",S=>{!fo(t)||!e.widgetState.visible||!t.element.blur||t.element.contains(S.target)||t.element.blur()}),Le(()=>{fo(t)&&Ae(t.element,t.options.selectOn??["focus","click"],()=>{const S=v.canvas;S?.selectNode(e.widgetState.widget.node),S?.bringToFront(e.widgetState.widget.node)})});const w=t.node.constructor.nodeData?.inputs?.[t.name]?.tooltip,_=n(()=>{e.widgetState.visible&&fo(t)&&a.value&&(a.value.contains(t.element)||a.value.appendChild(t.element))},"mountElementIfVisible");return Le(()=>{Oe(()=>{_()}).catch(S=>{console.error("Error mounting DOM widget element:",S)})}),se(()=>e.widgetState.visible,()=>{_()}),(S,x)=>ue((m(),N("div",{ref_key:"widgetElement",ref:a,class:"dom-widget",title:C(w),style:ve(l.value)},[C(Ii)(C(t))?(m(),F(Qt(C(t).component),$t({key:0,"model-value":C(t).value,widget:C(t)},C(t).props,{"onUpdate:modelValue":x[0]||(x[0]=D=>s("update:widgetValue",D))}),null,16,["model-value","widget"])):O("",!0)],12,Nm)),[[Ye,S.widgetState.visible]])}}),Im=De($m,[["__scopeId","data-v-781496d2"]]),Mm={class:"isolate"},Pm=H({__name:"DomWidgets",setup(e){const o=Mi(),t=k(()=>[...o.widgetStates.values()]),s=n(()=>{const l=a.canvas;if(!l)return;const i=l.low_quality,r=l.graph;for(const u of t.value){const p=u.widget;if(!p.isVisible()||!u.active){u.visible=!1;continue}const v=p.node,h=r?.nodes.includes(v);if(u.visible=!!h&&l.isNodeVisible(v)&&!(p.options.hideOnZoom&&i),u.visible&&v){const d=p.margin;u.pos=[v.pos[0]+d,v.pos[1]+d+p.y],u.size=[(p.width??v.width)-d*2,(p.computedHeight??50)-d*2],u.zIndex=l.graph?.nodes.indexOf(v)??-1,u.readonly=l.read_only}}},"updateWidgets"),a=fe();return ko(()=>a.canvas,l=>l.onDrawForeground=Xt(l.onDrawForeground,s),{immediate:!0}),(l,i)=>(m(),N("div",Mm,[(m(!0),N(le,null,be(t.value,r=>(m(),F(Im,{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 Dm(){const e=E(!1),o=n(()=>{e.value=!0},"showModal"),t=n(()=>{e.value=!1},"hideModal"),s=n(()=>{e.value=!e.value},"toggleModal"),a=k(()=>e.value);return{isModalVisible:e,showModal:o,hideModal:t,toggleModal:s,hasActivePopup:a}}n(Dm,"useZoomControls");function Am(e,o){const t=new Map,s=E(""),a=E(0),l=E({bounds:!1,nodes:!1,connections:!1,viewport:!1}),i=Me.getVersion(),r=new Map,u=Wl(()=>{o()},500),p=n(()=>{const g=e.value;if(!g||r.has(g.id))return;const c={onNodeAdded:g.onNodeAdded,onNodeRemoved:g.onNodeRemoved,onConnectionChange:g.onConnectionChange,onTrigger:g.onTrigger};r.set(g.id,c),g.onNodeAdded=function(w){c.onNodeAdded?.call(this,w),u()},g.onNodeRemoved=function(w){c.onNodeRemoved?.call(this,w),t.delete(w.id),u()},g.onConnectionChange=function(w){c.onConnectionChange?.call(this,w),u()},g.onTrigger=function(w){c.onTrigger?.call(this,w),w.type==="node:property:changed"&&(w.property==="mode"||w.property==="bgcolor"||w.property==="color")&&(t.delete(String(w.nodeId)),u())}},"setupEventListeners"),v=n(g=>{const c=g||e.value;if(!c)return;const w=r.get(c.id);if(!w){console.error("Attempted to cleanup event listeners for graph that was never set up");return}c.onNodeAdded=w.onNodeAdded,c.onNodeRemoved=w.onNodeRemoved,c.onConnectionChange=w.onConnectionChange,c.onTrigger=w.onTrigger,r.delete(c.id)},"cleanupEventListeners");return{updateFlags:l,setupEventListeners:p,cleanupEventListeners:v,checkForChanges:n(()=>{const g=e.value;if(!g)return!1;let c=!1,w=!1,_=!1;const S=Ba.create(g),x=S.getNodeCount();x!==a.value&&(c=!0,a.value=x);const D=S.getNodes();for(const $ of D){const I=$.id,B=`${$.x},${$.y},${$.width},${$.height}`;t.get(I)!==B&&(w=!0,t.set(I,B))}const P=new Set(D.map($=>$.id));for(const[$]of t)P.has($)||(t.delete($),c=!0);const T=JSON.stringify(g.links||{});return T!==s.value&&(_=!0,s.value=T),(c||w)&&(l.value.bounds=!0,l.value.nodes=!0),_&&(l.value.connections=!0),c||w||_},"checkForChangesInternal"),init:n(()=>{p(),we.addEventListener("graphChanged",u),se(i,()=>{u()})},"init"),destroy:n(()=>{v(),we.removeEventListener("graphChanged",u),t.clear()},"destroy"),clearCache:n(()=>{t.clear(),s.value="",a.value=0},"clearCache")}}n(Am,"useMinimapGraph");function Em(e,o,t,s,a,l,i){const r=E(!1),u=E({left:0,top:0,width:s,height:a}),p=n(()=>{if(!e.value)return;const c=e.value.getBoundingClientRect();u.value={left:c.left,top:c.top,width:c.width,height:c.height}},"updateContainerRect"),v=n(c=>{r.value=!0,p();const w=c.currentTarget;w instanceof HTMLElement&&w.setPointerCapture(c.pointerId),h(c)},"handlePointerDown"),h=n(c=>{if(!r.value||!i.value)return;const w=c.clientX-u.value.left,_=c.clientY-u.value.top,S=(s-o.value.width*t.value)/2,x=(a-o.value.height*t.value)/2,D=(w-S)/t.value+o.value.minX,P=(_-x)/t.value+o.value.minY;l(D,P)},"handlePointerMove"),d=n(c=>{if(r.value=!1,!c)return;const w=c.currentTarget;w instanceof HTMLElement&&w.hasPointerCapture(c.pointerId)&&w.releasePointerCapture(c.pointerId)},"releasePointer");return{isDragging:r,containerRect:u,updateContainerRect:p,handlePointerDown:v,handlePointerMove:h,handlePointerUp:d,handlePointerCancel:d,handleWheel:n(c=>{c.preventDefault();const w=i.value;if(!w)return;u.value.left===0&&u.value.top===0&&e.value&&p();const _=w.ds,S=c.deltaY>0?.9:1.1,x=_.scale*S;if(x<.1||x>10)return;const T=c.clientX-u.value.left,$=c.clientY-u.value.top,I=(s-o.value.width*t.value)/2,B=(a-o.value.height*t.value)/2,G=(T-I)/t.value+o.value.minX,M=($-B)/t.value+o.value.minY;_.scale=x,l(G,M)},"handleWheel")}}n(Em,"useMinimapInteraction");function Lm(e,o,t,s,a,l,i,r){const u=E(!0),p=E(!0),v=n(()=>{const b=o.value;if(!e.value||!b)return;const y=e.value.getContext("2d");if(!y)return;if(!b._nodes||b._nodes.length===0){y.clearRect(0,0,i,r);return}(u.value||a.value.nodes||a.value.connections)&&(Pi(e.value,b,{bounds:t.value,scale:s.value,settings:{nodeColors:l.nodeColors.value,showLinks:l.showLinks.value,showGroups:l.showGroups.value,renderBypass:l.renderBypass.value,renderError:l.renderError.value},width:i,height:r}),u.value=!1,a.value.nodes=!1,a.value.connections=!1)},"renderMinimap");return{needsFullRedraw:u,needsBoundsUpdate:p,renderMinimap:v,updateMinimap:n((b,y)=>{(p.value||a.value.bounds)&&(b(),p.value=!1,a.value.bounds=!1,u.value=!0,a.value.viewport=!0),(u.value||a.value.nodes||a.value.connections)&&v(),a.value.viewport&&(y(),a.value.viewport=!1)},"updateMinimap"),forceFullRedraw:n(()=>{u.value=!0,a.value.bounds=!0,a.value.nodes=!0,a.value.connections=!0,a.value.viewport=!0},"forceFullRedraw")}}n(Lm,"useMinimapRenderer");function Vm(){const e=ie(),o=it(),t=k(()=>e.get("Comfy.Minimap.NodeColors")),s=k(()=>e.get("Comfy.Minimap.ShowLinks")),a=k(()=>e.get("Comfy.Minimap.ShowGroups")),l=k(()=>e.get("Comfy.Minimap.RenderBypassState")),i=k(()=>e.get("Comfy.Minimap.RenderErrorState")),r=253,u=200,p=k(()=>o.completedActivePalette.light_theme),v=k(()=>({width:`${r}px`,height:`${u}px`,border:"1px solid var(--interface-stroke)",borderRadius:"8px"})),h=k(()=>({width:"210px",height:`${u}px`,border:"1px solid var(--interface-stroke)",borderRadius:"8px"}));return{nodeColors:t,showLinks:s,showGroups:a,renderBypass:l,renderError:i,containerStyles:v,panelStyles:h,isLightTheme:p}}n(Vm,"useMinimapSettings");function Om(e,o,t,s){const a=E({minX:0,minY:0,maxX:0,maxY:0,width:0,height:0}),l=E(1),i=E({x:0,y:0,width:0,height:0}),r=E({width:0,height:0}),u=n(()=>{const c=e.value;if(!c)return;const w=c.canvas,_=window.devicePixelRatio||1;r.value={width:w.clientWidth||w.width/_,height:w.clientHeight||w.height/_}},"updateCanvasDimensions"),p=n(()=>{const c=Ba.create(o.value);if(!c.hasData())return{minX:0,minY:0,maxX:100,maxY:100,width:100,height:100};const w=c.getBounds();return Di(w)},"calculateGraphBounds"),v=n(()=>Ai(a.value,t,s),"calculateScale"),h=n(()=>{const c=e.value;if(!c)return;(r.value.width===0||r.value.height===0)&&u();const w=c.ds,_=r.value.width/w.scale,S=r.value.height/w.scale,x=-w.offset[0],D=-w.offset[1],P=(t-a.value.width*l.value)/2,T=(s-a.value.height*l.value)/2;i.value={x:(x-a.value.minX)*l.value+P,y:(D-a.value.minY)*l.value+T,width:_*l.value,height:S*l.value}},"updateViewport"),d=n(()=>{a.value=p(),l.value=v()},"updateBounds"),b=n((c,w)=>{const _=e.value;if(!_)return;(r.value.width===0||r.value.height===0)&&u();const S=_.ds,x=r.value.width/S.scale,D=r.value.height/S.scale;S.offset[0]=-(c-x/2),S.offset[1]=-(w-D/2),_.setDirty(!0,!0)},"centerViewOn"),{resume:y,pause:g}=eo(h);return{bounds:k(()=>a.value),scale:k(()=>l.value),viewportTransform:k(()=>i.value),canvasDimensions:k(()=>r.value),updateCanvasDimensions:u,updateViewport:h,updateBounds:d,centerViewOn:b,startViewportSync:y,stopViewportSync:g}}n(Om,"useMinimapViewport");function is({canvasRefMaybe:e,containerRefMaybe:o}={}){const t=fe(),s=Pe(),a=ie(),l=E(null),i=e??Je(null),r=o??Je(null),u=E(!0),p=E(!1),v=250,h=200,d=k(()=>t.canvas),b=k(()=>s.activeSubgraph||d.value?.graph),y=Vm(),{nodeColors:g,showLinks:c,showGroups:w,renderBypass:_,renderError:S,containerStyles:x,panelStyles:D}=y,P=n(async(K,ne)=>{await a.set(K,ne),B.forceFullRedraw(),B.updateMinimap(T.updateBounds,T.updateViewport)},"updateOption"),T=Om(d,b,v,h),$=Em(r,T.bounds,T.scale,v,h,T.centerViewOn,d),I=Am(b,()=>{B.forceFullRedraw(),B.updateMinimap(T.updateBounds,T.updateViewport)}),B=Lm(i,b,T.bounds,T.scale,I.updateFlags,y,v,h),{pause:G,resume:M}=eo(async()=>{u.value&&await I.checkForChanges()&&B.updateMinimap(T.updateBounds,T.updateViewport)},{immediate:!1}),V=n(async()=>{p.value||(u.value=a.get("Comfy.Minimap.Visible"),d.value&&b.value&&(I.init(),r.value&&$.updateContainerRect(),T.updateCanvasDimensions(),window.addEventListener("resize",$.updateContainerRect),window.addEventListener("scroll",$.updateContainerRect),window.addEventListener("resize",T.updateCanvasDimensions),B.forceFullRedraw(),B.updateMinimap(T.updateBounds,T.updateViewport),T.updateViewport(),u.value&&(M(),T.startViewportSync()),p.value=!0))},"init"),U=n(()=>{G(),T.stopViewportSync(),I.destroy(),window.removeEventListener("resize",$.updateContainerRect),window.removeEventListener("scroll",$.updateContainerRect),window.removeEventListener("resize",T.updateCanvasDimensions),p.value=!1},"destroy");se(d,async(K,ne)=>{ne&&(I.cleanupEventListeners(),G(),T.stopViewportSync(),I.destroy(),window.removeEventListener("resize",$.updateContainerRect),window.removeEventListener("scroll",$.updateContainerRect),window.removeEventListener("resize",T.updateCanvasDimensions)),K&&!p.value&&await V()},{immediate:!0,flush:"post"}),se(b,(K,ne)=>{K&&K!==ne&&(I.cleanupEventListeners(ne||void 0),I.setupEventListeners(),B.forceFullRedraw(),B.updateMinimap(T.updateBounds,T.updateViewport))}),se(u,async K=>{K?(r.value&&$.updateContainerRect(),T.updateCanvasDimensions(),B.forceFullRedraw(),await Oe(),await Oe(),B.updateMinimap(T.updateBounds,T.updateViewport),T.updateViewport(),M(),T.startViewportSync()):(G(),T.stopViewportSync())});const R=n(async()=>{u.value=!u.value,await a.set("Comfy.Minimap.Visible",u.value)},"toggle"),j=n(K=>{l.value=K},"setMinimapRef"),q=k(()=>{const K=T.viewportTransform.value;return{transform:`translate(${K.x}px, ${K.y}px)`,width:`${K.width}px`,height:`${K.height}px`,border:`2px solid ${y.isLightTheme.value?"#E0E0E0":"#FFF"}`,backgroundColor:"rgba(255, 255, 255, 0.2)",willChange:"transform",backfaceVisibility:"hidden",perspective:"1000px",pointerEvents:"none"}});return{visible:k(()=>u.value),initialized:k(()=>p.value),containerStyles:x,viewportStyles:q,panelStyles:D,width:v,height:h,nodeColors:g,showLinks:c,showGroups:w,renderBypass:_,renderError:S,init:V,destroy:U,toggle:R,renderMinimap:B.renderMinimap,handlePointerDown:$.handlePointerDown,handlePointerMove:$.handlePointerMove,handlePointerUp:$.handlePointerUp,handlePointerCancel:$.handlePointerCancel,handleWheel:$.handleWheel,setMinimapRef:j,updateOption:P}}n(is,"useMinimap");const Rm={class:"flex items-center gap-1 pr-0.5"},Wm={class:"rounded-lg bg-interface-panel-selected-surface p-2 group-hover:bg-interface-button-hover-surface"},zm={class:"flex flex-col gap-1"},Bm={class:"flex items-center gap-2"},Fm={class:"text-[9px] text-text-primary"},Um={class:"flex items-center gap-2"},Gm={class:"text-[9px] text-text-primary"},jm=H({__name:"CanvasModeSelector",props:{buttonStyles:{}},setup(e){const o=E(),t=E(),s=Ce(),a=fe(),l=k(()=>a.canvas?.read_only??!1),i=k(()=>l.value?"icon-[lucide--hand]":"icon-[lucide--mouse-pointer-2]"),r=k(()=>s.formatKeySequence(s.getCommand("Comfy.Canvas.Unlock")).toUpperCase()),u=k(()=>s.formatKeySequence(s.getCommand("Comfy.Canvas.Lock")).toUpperCase()),p=n(d=>{const b=o.value?.$el||o.value;t.value?.toggle(d,b)},"toggle"),v=n(d=>{d==="select"&&l.value?s.execute("Comfy.Canvas.Unlock"):d==="hand"&&!l.value&&s.execute("Comfy.Canvas.Lock"),t.value?.hide()},"setMode"),h=k(()=>({root:{class:"absolute z-50 -translate-y-2"},content:{class:["mb-2 text-text-primary","shadow-lg border border-interface-stroke","bg-nav-background","rounded-lg","p-2 px-3","min-w-39","select-none"]}}));return(d,b)=>(m(),N(le,null,[W(ee,{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:ve(d.buttonStyles),onClick:p},{default:L(()=>[f("div",Rm,[f("div",Wm,[f("i",{class:Q([i.value,"block h-4 w-4"])},null,2)]),b[2]||(b[2]=f("i",{class:"icon-[lucide--chevron-down] block h-4 w-4 pr-1.5"},null,-1))])]),_:1},8,["style"]),W(C(Ze),{ref_key:"popover",ref:t,"auto-z-index":!0,"base-z-index":1e3,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:h.value},{default:L(()=>[f("div",zm,[f("div",{class:"flex cursor-pointer items-center justify-between px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onClick:b[0]||(b[0]=y=>v("select"))},[f("div",Bm,[b[3]||(b[3]=f("i",{class:"icon-[lucide--mouse-pointer-2] h-4 w-4"},null,-1)),f("span",null,z(d.$t("graphCanvasMenu.select")),1)]),f("span",Fm,z(r.value),1)]),f("div",{class:"flex cursor-pointer items-center justify-between rounded px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onClick:b[1]||(b[1]=y=>v("hand"))},[f("div",Um,[b[4]||(b[4]=f("i",{class:"icon-[lucide--hand] h-4 w-4"},null,-1)),f("span",null,z(d.$t("graphCanvasMenu.hand")),1)]),f("span",Gm,z(u.value),1)])])]),_:1},8,["pt"])],64))}}),Hm={key:0,class:"absolute right-0 bottom-[62px] z-1300 flex w-[250px] justify-center border-0! bg-inherit!"},qm={class:"flex flex-col gap-1"},Km={class:"font-medium"},Jm={class:"text-[9px] text-text-primary"},Ym={class:"font-medium"},Qm={class:"text-[9px] text-text-primary"},Xm={class:"font-medium"},Zm={class:"text-[9px] text-text-primary"},ev=H({__name:"ZoomControlsModal",props:{visible:{type:Boolean}},setup(e){const o=is(),t=Ce(),s=fe(),{formatKeySequence:a}=Ce(),l=e,i=E(null),r=n(c=>{const w=c.value;isNaN(w)||w<1||w>1e3||s.setAppZoomFromPercentage(w)},"applyZoom"),u=n(c=>{t.execute(c)},"executeCommand"),p=n(c=>{if(i.value)return;const w=n(()=>t.execute(c),"cmd");w(),i.value=window.setInterval(w,100)},"startRepeat"),v=n(()=>{i.value&&(clearInterval(i.value),i.value=null)},"stopRepeat"),h=k(()=>({...o.containerStyles.value,height:void 0,width:void 0})),d=k(()=>a(t.getCommand("Comfy.Canvas.ZoomIn"))),b=k(()=>a(t.getCommand("Comfy.Canvas.ZoomOut"))),y=k(()=>a(t.getCommand("Comfy.Canvas.FitView"))),g=E(null);return se(()=>l.visible,async c=>{c&&(await Oe(),g.value?.querySelector("input")?.focus())}),(c,w)=>c.visible?(m(),N("div",Hm,[f("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:ve(h.value),onClick:w[3]||(w[3]=ke(()=>{},["stop"]))},[f("div",qm,[f("div",{class:"flex cursor-pointer items-center justify-between rounded px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onMousedown:w[0]||(w[0]=_=>p("Comfy.Canvas.ZoomIn")),onMouseup:v,onMouseleave:v},[f("span",Km,z(c.$t("graphCanvasMenu.zoomIn")),1),f("span",Jm,z(d.value),1)],32),f("div",{class:"flex cursor-pointer items-center justify-between rounded px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onMousedown:w[1]||(w[1]=_=>p("Comfy.Canvas.ZoomOut")),onMouseup:v,onMouseleave:v},[f("span",Ym,z(c.$t("graphCanvasMenu.zoomOut")),1),f("span",Qm,z(b.value),1)],32),f("div",{class:"flex cursor-pointer items-center justify-between rounded px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onClick:w[2]||(w[2]=_=>u("Comfy.Canvas.FitView"))},[f("span",Xm,z(c.$t("zoomControls.zoomToFit")),1),f("span",Zm,z(y.value),1)]),f("div",{ref_key:"zoomInputContainer",ref:g,class:"zoomInputContainer flex items-center gap-1 rounded bg-input-surface p-2"},[W(C(ii),{"default-value":C(s).appScalePercentage,min:1,max:1e3,"show-buttons":!1,"use-grouping":!1,unstyled:!0,"input-class":"bg-transparent border-none outline-hidden text-sm shadow-none my-0 w-full",fluid:"",onInput:r,onKeyup:Yt(r,["enter"])},null,8,["default-value"]),w[4]||(w[4]=f("span",{class:"flex-shrink-0 text-sm text-text-primary"},"%",-1))],512)])],4)])):O("",!0)}}),tv={class:"inline-flex items-center gap-1 px-2 text-xs"},ov=H({__name:"GraphCanvasMenu",setup(e){const{t:o}=de(),t=Ce(),{formatKeySequence:s}=Ce(),a=fe(),l=ie(),i=lo(),r=is(),{isModalVisible:u,toggleModal:p,hideModal:v,hasActivePopup:h}=Dm(),d=k(()=>{const I=["borderRadius"],B=["borderRadius"],G={border:"none"},M=r.containerStyles.value,V={...Object.fromEntries(Object.entries(M).filter(([R])=>B.includes(R))),...G},U=Object.entries(M).filter(([R])=>I.includes(R)).reduce((R,[j,q])=>({...R,[j]:q}),{});return{buttonStyles:V,buttonGroupStyles:U}}),b=k(()=>l.get("Comfy.LinkRenderMode")===me.HIDDEN_LINK),y=k(()=>s(t.getCommand("Comfy.Canvas.FitView")).toUpperCase()),g=k(()=>s(t.getCommand("Comfy.Canvas.ToggleMinimap")).toUpperCase()),c=k(()=>["bg-comfy-menu-bg",u.value?"not-active:bg-interface-panel-selected-surface!":"","hover:bg-interface-button-hover-surface!","p-0","h-8","w-15"]),w=k(()=>({"bg-comfy-menu-bg":!0,"hover:bg-interface-button-hover-surface!":!0,"not-active:bg-interface-panel-selected-surface!":l.get("Comfy.Minimap.Visible"),"p-0":!0,"w-8":!0,"h-8":!0})),_=k(()=>{const I=o("graphCanvasMenu.fitView"),B=y.value;return B?`${I} (${B})`:I}),S=k(()=>{const I=l.get("Comfy.Minimap.Visible")?o("zoomControls.hideMinimap"):o("zoomControls.showMinimap"),B=g.value;return B?`${I} (${B})`:I}),x=k(()=>b.value?o("graphCanvasMenu.showLinks"):o("graphCanvasMenu.hideLinks")),D=k(()=>b.value?o("graphCanvasMenu.showLinks"):o("graphCanvasMenu.hideLinks")),P=k(()=>["bg-comfy-menu-bg",b.value?"not-active:bg-interface-panel-selected-surface!":"","hover:bg-interface-button-hover-surface!","p-0","w-8","h-8"]);Le(()=>{a.initScaleSync()});const T=n(()=>{t.execute("Comfy.Canvas.ToggleMinimap")},"onMinimapToggleClick"),$=n(()=>{t.execute("Comfy.Canvas.ToggleLinkVisibility")},"onLinkVisibilityToggleClick");return gt(()=>{a.cleanupScaleSync()}),(I,B)=>{const G=Se("tooltip");return m(),N("div",null,[W(ev,{visible:C(u),onClose:C(v)},null,8,["visible","onClose"]),C(h)?(m(),N("div",{key:0,class:"fixed inset-0 z-1200",onClick:B[0]||(B[0]=(...M)=>C(v)&&C(v)(...M))})):O("",!0),W(C(ri),{class:"absolute right-0 bottom-0 z-1200 flex-row gap-1 border-[1px] border-interface-stroke bg-comfy-menu-bg p-2",style:ve({...d.value.buttonGroupStyles}),onWheel:C(i).handleWheel},{default:L(()=>[W(jm,{"button-styles":d.value.buttonStyles},null,8,["button-styles"]),B[6]||(B[6]=f("div",{class:"h-[27px] w-[1px] self-center bg-node-divider"},null,-1)),ue((m(),F(ee,{variant:"secondary","aria-label":_.value,style:ve(d.value.buttonStyles),class:"h-8 w-8 bg-comfy-menu-bg p-0 hover:bg-interface-button-hover-surface!",onClick:B[1]||(B[1]=()=>C(t).execute("Comfy.Canvas.FitView"))},{default:L(()=>B[2]||(B[2]=[f("i",{class:"icon-[lucide--focus] h-4 w-4"},null,-1)])),_:1},8,["aria-label","style"])),[[G,_.value,void 0,{top:!0}]]),ue((m(),F(ee,{variant:"secondary",class:Q(c.value),"aria-label":C(o)("zoomControls.label"),"data-testid":"zoom-controls-button",style:ve(d.value.buttonStyles),onClick:C(p)},{default:L(()=>[f("span",tv,[f("span",null,z(C(a).appScalePercentage)+"%",1),B[3]||(B[3]=f("i",{class:"icon-[lucide--chevron-down] h-4 w-4"},null,-1))])]),_:1},8,["class","aria-label","style","onClick"])),[[G,C(o)("zoomControls.label"),void 0,{top:!0}]]),B[7]||(B[7]=f("div",{class:"h-[27px] w-[1px] self-center bg-node-divider"},null,-1)),ue((m(),F(ee,{variant:"secondary","aria-label":S.value,"data-testid":"toggle-minimap-button",style:ve(d.value.buttonStyles),class:Q(w.value),onClick:T},{default:L(()=>B[4]||(B[4]=[f("i",{class:"icon-[lucide--map] h-4 w-4"},null,-1)])),_:1},8,["aria-label","style","class"])),[[G,S.value,void 0,{top:!0}]]),ue((m(),F(ee,{variant:"secondary",class:Q(P.value),"aria-label":D.value,"data-testid":"toggle-link-visibility-button",style:ve(d.value.buttonStyles),onClick:$},{default:L(()=>B[5]||(B[5]=[f("i",{class:"icon-[lucide--route-off] h-4 w-4"},null,-1)])),_:1},8,["class","aria-label","style"])),[[G,{value:x.value,pt:{root:{style:"z-index: 2; transform: translateY(-20px);"}}},void 0,{top:!0}]])]),_:1},8,["style","onWheel"])])}}}),nv=H({__name:"NodeTooltip",setup(e){let o;const t=yt(),s=ie(),a=E(),l=E(""),i=E(),r=E();function u(){return l.value=""}n(u,"hideTooltip");async function p(d){if(!d)return;i.value=J.canvas.mouse[0]+"px",r.value=J.canvas.mouse[1]+"px",l.value=d,await Oe();const b=a.value?.getBoundingClientRect();b&&(b.right>window.innerWidth&&(i.value=J.canvas.mouse[0]-b.width+"px"),b.top<0&&(r.value=J.canvas.mouse[1]+b.height+"px"))}n(p,"showTooltip");function v(){const{canvas:d}=J,b=d?.node_over;if(!b)return;const y=b.constructor,g=t.nodeDefsByName[b.type??""];if(y.title_mode!==me.NO_TITLE&&d.graph_mouse[1]<b.pos[1])return p(g?.description);if(b.flags?.collapsed)return;const c=Ei(b,d.graph_mouse[0],d.graph_mouse[1],[0,0]);if(c!==-1){const S=b.inputs[c].name,x=ye(`nodeDefs.${Re(b.type??"")}.inputs.${Re(S)}.tooltip`,g?.inputs[S]?.tooltip??"");return p(x)}const w=Li(b,d.graph_mouse[0],d.graph_mouse[1],[0,0]);if(w!==-1){const S=ye(`nodeDefs.${Re(b.type??"")}.outputs.${w}.tooltip`,g?.outputs[w]?.tooltip??"");return p(S)}const _=J.canvas.getWidgetAtCursor();if(_&&!fo(_)){const S=ye(`nodeDefs.${Re(b.type??"")}.inputs.${Re(_.name)}.tooltip`,g?.inputs[_.name]?.tooltip??"");return p(_.tooltip??S)}}return n(v,"onIdle"),Ae(window,"mousemove",n(d=>{u(),clearTimeout(o),d.target.nodeName==="CANVAS"&&(o=window.setTimeout(v,s.get("LiteGraph.Node.TooltipDelay")))},"onMouseMove")),Ae(window,"click",u),(d,b)=>l.value?(m(),N("div",{key:0,ref_key:"tooltipRef",ref:a,class:"node-tooltip",style:ve({left:i.value,top:r.value})},z(l.value),5)):O("",!0)}}),sv=De(nv,[["__scopeId","data-v-96b1458a"]]),av=H({__name:"BypassButton",setup(e){const o=Ce(),t=n(async()=>{await o.execute("Comfy.Canvas.ToggleSelectedNodes.Bypass")},"toggleBypass");return(s,a)=>{const l=Se("tooltip");return ue((m(),F(ee,{variant:"muted-textonly","aria-label":s.$t("commands.Comfy_Canvas_ToggleSelectedNodes_Bypass.label"),"data-testid":"bypass-button",class:"hover:bg-secondary-background",onClick:t},{default:L(()=>a[0]||(a[0]=[f("i",{class:"icon-[lucide--redo-dot] size-4"},null,-1)])),_:1},8,["aria-label"])),[[l,{value:s.$t("commands.Comfy_Canvas_ToggleSelectedNodes_Bypass.label"),showDelay:1e3},void 0,{top:!0}]])}}}),lv={class:"relative"},iv={class:"flex items-center gap-1 px-0"},rv={key:0,class:"color-picker-container absolute -top-10 left-1/2"},uv=["data-testid"],cv=H({__name:"ColorPickerButton",setup(e){const{t:o}=de(),t=fe(),s=it(),a=Pe(),l=k(()=>s.completedActivePalette.light_theme),i=n(c=>Et(c,{lightness:.5}),"toLightThemeColor"),r=E(!1),u={name:"noColor",localizedName:o("color.noColor"),value:{dark:me.NODE_DEFAULT_BGCOLOR,light:i(me.NODE_DEFAULT_BGCOLOR)}},p=[u,...Object.entries(je.node_colors).map(([c,w])=>({name:c,localizedName:o(`color.${c}`),value:{dark:w.bgcolor,light:i(w.bgcolor)}}))],v=E(null),h=n(c=>{const w=c?.name??u.name,_=w===u.name?null:je.node_colors[w];for(const S of t.selectedItems)Ao(S)&&S.setColorOption(_);t.canvas?.setDirty(!0,!0),d.value=_,r.value=!1,a.activeWorkflow?.changeTracker.checkState()},"applyColor"),d=E(null),b=k(()=>d.value?l.value?i(d.value?.bgcolor):d.value?.bgcolor:null),y=k(()=>d.value?.bgcolor?p.find(w=>w.value.dark===d.value?.bgcolor||w.value.light===d.value?.bgcolor)?.localizedName??u.localizedName:null),g=n(c=>{r.value=!1,v.value=null,d.value=Vi(c)},"updateColorSelectionFromNode");return se(()=>t.selectedItems,c=>{g(c)},{immediate:!0}),(c,w)=>{const _=Se("tooltip");return m(),N("div",lv,[ue((m(),F(ee,{"data-testid":"color-picker-button",variant:"muted-textonly","aria-label":C(o)("g.color"),onClick:w[0]||(w[0]=()=>r.value=!r.value)},{default:L(()=>[f("div",iv,[f("i",{class:"pi pi-circle-fill",style:ve({color:b.value??""})},null,4),w[1]||(w[1]=f("i",{class:"icon-[lucide--chevron-down]"},null,-1))])]),_:1},8,["aria-label"])),[[_,{value:y.value??C(o)("color.noColor"),showDelay:1e3},void 0,{top:!0}]]),r.value?(m(),N("div",rv,[W(C(Ia),{"model-value":v.value,options:p,"option-label":"name","data-key":"value","onUpdate:modelValue":h},{option:L(({option:S})=>[ue(f("i",{class:"pi pi-circle-fill",style:ve({color:l.value?S.value.light:S.value.dark}),"data-testid":S.name},null,12,uv),[[_,S.localizedName,void 0,{top:!0}]])]),_:1},8,["model-value"])])):O("",!0)])}}}),dv=De(cv,[["__scopeId","data-v-2197e0a1"]]),pv=H({__name:"ConfigureSubgraph",setup(e){const o=to(),t=n(()=>{o.openPanel("subgraph")},"handleClick");return(s,a)=>{const l=Se("tooltip");return ue((m(),F(ee,{variant:"muted-textonly","aria-label":s.$t("commands.Comfy_Graph_EditSubgraphWidgets.label"),onClick:t},{default:L(()=>a[0]||(a[0]=[f("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["aria-label"])),[[l,{value:s.$t("commands.Comfy_Graph_EditSubgraphWidgets.label"),showDelay:1e3},void 0,{top:!0}]])}}}),fv=H({__name:"ConvertToSubgraphButton",setup(e){const o=Ce(),{isSingleSubgraph:t,hasAnySelection:s}=zt(),a=t,l=k(()=>s.value&&!t.value);return(i,r)=>{const u=Se("tooltip");return C(a)?ue((m(),F(ee,{key:0,variant:"muted-textonly","aria-label":i.$t("commands.Comfy_Graph_UnpackSubgraph.label"),"data-testid":"convert-to-subgraph-button",onClick:r[0]||(r[0]=()=>C(o).execute("Comfy.Graph.UnpackSubgraph"))},{default:L(()=>r[2]||(r[2]=[f("i",{class:"icon-[lucide--expand] size-4"},null,-1)])),_:1},8,["aria-label"])),[[u,{value:i.$t("commands.Comfy_Graph_UnpackSubgraph.label"),showDelay:1e3},void 0,{top:!0}]]):l.value?ue((m(),F(ee,{key:1,variant:"muted-textonly",size:"icon","aria-label":i.$t("commands.Comfy_Graph_ConvertToSubgraph.label"),"data-testid":"convert-to-subgraph-button",onClick:r[1]||(r[1]=()=>C(o).execute("Comfy.Graph.ConvertToSubgraph"))},{default:L(()=>r[3]||(r[3]=[f("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}]]):O("",!0)}}}),mv=H({__name:"DeleteButton",setup(e){const o=Ce(),{selectedItems:t}=zt(),s=k(()=>t.value.some(a=>a.removable!==!1));return(a,l)=>{const i=Se("tooltip");return ue((m(),F(ee,{variant:"muted-textonly","aria-label":a.$t("commands.Comfy_Canvas_DeleteSelectedItems.label"),"data-testid":"delete-button",onClick:l[0]||(l[0]=()=>C(o).execute("Comfy.Canvas.DeleteSelectedItems"))},{default:L(()=>l[1]||(l[1]=[f("i",{class:"icon-[lucide--trash-2]"},null,-1)])),_:1},8,["aria-label"])),[[Ye,s.value],[i,{value:a.$t("commands.Comfy_Canvas_DeleteSelectedItems.label"),showDelay:1e3},void 0,{top:!0}]])}}}),vv=H({__name:"ExecuteButton",setup(e){const{t:o}=de(),t=Ce(),s=fe(),{selectedNodes:a}=zt(),l=s.getCanvas(),i=E(!1),r=k(()=>a.value.filter(Zt).filter(Oi));function u(){if(this.selected&&this.constructor.nodeData?.output_node&&i.value)return{color:"orange",lineWidth:2,padding:10}}n(u,"outputNodeStokeStyle");const p=n(()=>{i.value=!0;for(const d of r.value)d.strokeStyles.outputNode=u;l.setDirty(!0)},"handleMouseEnter"),v=n(()=>{i.value=!1,l.setDirty(!0)},"handleMouseLeave"),h=n(async()=>{await t.execute("Comfy.QueueSelectedOutputNodes")},"handleClick");return(d,b)=>{const y=Se("tooltip");return ue((m(),F(ee,{variant:"primary","aria-label":C(o)("selectionToolbox.executeButton.tooltip"),onMouseenter:b[0]||(b[0]=()=>p()),onMouseleave:b[1]||(b[1]=()=>v()),onClick:h},{default:L(()=>b[2]||(b[2]=[f("i",{class:"icon-[lucide--play]"},null,-1)])),_:1},8,["aria-label"])),[[y,{value:C(o)("selectionToolbox.executeButton.tooltip"),showDelay:1e3},void 0,{top:!0}]])}}}),gv=H({__name:"ExtensionCommandButton",props:{command:{}},setup(e){const o=Ce();return(t,s)=>{const a=Se("tooltip");return ue((m(),F(ee,{variant:"muted-textonly","aria-label":C(ye)(`commands.${C(Re)(t.command.id)}.label`,""),onClick:s[0]||(s[0]=()=>C(o).execute(t.command.id))},{default:L(()=>[f("i",{class:Q([typeof t.command.icon=="function"?t.command.icon():t.command.icon])},null,2)]),_:1},8,["aria-label"])),[[a,{value:C(ye)(`commands.${C(Re)(t.command.id)}.label`,"")||void 0,showDelay:1e3},void 0,{top:!0}]])}}}),hv=H({__name:"InfoButton",setup(e){const o=to(),t=n(()=>{o.openPanel("info")},"onInfoClick");return(s,a)=>{const l=Se("tooltip");return ue((m(),F(ee,{"data-testid":"info-button",variant:"muted-textonly","aria-label":s.$t("g.info"),onClick:t},{default:L(()=>a[0]||(a[0]=[f("i",{class:"icon-[lucide--info]"},null,-1)])),_:1},8,["aria-label"])),[[l,{value:s.$t("g.info"),showDelay:1e3},void 0,{top:!0}]])}}}),yv=H({__name:"Load3DViewerButton",setup(e){const o=Ce(),t=n(()=>{o.execute("Comfy.3DViewer.Open3DViewer")},"open3DViewer");return(s,a)=>{const l=Se("tooltip");return ue((m(),F(ee,{variant:"muted-textonly","aria-label":s.$t("commands.Comfy_3DViewer_Open3DViewer.label"),onClick:t},{default:L(()=>a[0]||(a[0]=[f("i",{class:"icon-[lucide--pencil]"},null,-1)])),_:1},8,["aria-label"])),[[l,{value:s.$t("commands.Comfy_3DViewer_Open3DViewer.label"),showDelay:1e3},void 0,{top:!0}]])}}}),bv=H({__name:"MaskEditorButton",setup(e){const o=Ce(),{isSingleImageNode:t}=zt(),s=n(()=>{o.execute("Comfy.MaskEditor.OpenMaskEditor")},"openMaskEditor");return(a,l)=>{const i=Se("tooltip");return ue((m(),F(ee,{variant:"muted-textonly","aria-label":a.$t("commands.Comfy_MaskEditor_OpenMaskEditor.label"),onClick:s},{default:L(()=>l[0]||(l[0]=[f("i",{class:"icon-[comfy--mask]"},null,-1)])),_:1},8,["aria-label"])),[[Ye,C(t)],[i,{value:a.$t("commands.Comfy_MaskEditor_OpenMaskEditor.label"),showDelay:1e3},void 0,{top:!0}]])}}}),wv=n(e=>e!=null&&typeof e=="object"&&"refresh"in e&&typeof e.refresh=="function","isRefreshableWidget"),kv=n(()=>{const e=fe(),o=E([]);he(()=>{o.value=e.selectedItems.filter(Zt)});const t=k(()=>o.value.flatMap(l=>{if(!l.widgets)return[];const i=[];for(const r of l.widgets)wv(r)&&i.push(r);return i})),s=k(()=>t.value.length>0);async function a(){s.value&&await Promise.all(t.value.map(l=>l.refresh()))}return n(a,"refreshSelected"),{isRefreshable:s,refreshSelected:a}},"useRefreshableSelection"),Cv=H({__name:"RefreshSelectionButton",setup(e){const{t:o}=de(),{isRefreshable:t,refreshSelected:s}=kv();return(a,l)=>{const i=Se("tooltip");return ue((m(),F(ee,{variant:"muted-textonly","aria-label":C(o)("g.refreshNode"),"data-testid":"refresh-button",onClick:C(s)},{default:L(()=>l[0]||(l[0]=[f("i",{class:"icon-[lucide--refresh-cw]"},null,-1)])),_:1},8,["aria-label","onClick"])),[[Ye,C(t)],[i,C(o)("g.refreshNode"),void 0,{top:!0}]])}}}),Sv=H({__name:"SaveToSubgraphLibrary",setup(e){const o=Ce(),t=fe(),s=k(()=>t.selectedItems?.length===1&&t.selectedItems[0]instanceof Qn);return(a,l)=>{const i=Se("tooltip");return ue((m(),F(ee,{variant:"muted-textonly","aria-label":a.$t("commands.Comfy_PublishSubgraph.label"),onClick:l[0]||(l[0]=()=>C(o).execute("Comfy.PublishSubgraph"))},{default:L(()=>l[1]||(l[1]=[f("i",{class:"icon-[lucide--book-open]"},null,-1)])),_:1},8,["aria-label"])),[[Ye,s.value],[i,{value:a.$t("commands.Comfy_PublishSubgraph.label"),showDelay:1e3},void 0,{top:!0}]])}}}),co=E(!1),xv=E(0),_v=E(0),st=E(!1);let Pt=!1,at=null;function Ro(e){const o=e.canvas;if(!o)return null;const t=Array.from(o.selectedItems);if(t.length!==1)return null;const s=t[0];return Zt(s)?`N:${s.id}`:Zn(s)?`G:${s.id}`:null}n(Ro,"buildSelectionSignature");function Tv(e){return at?Ro(e)===at:!1}n(Tv,"currentSelectionMatchesSignature");function Nv(e){const o=fe(),t=o.getCanvas(),{getSelectableItems:s}=Xn(),{shouldRenderVueNodes:a}=Go(),l=E({x:0,y:0}),i=E(!1),{left:r,top:u}=Un(t.canvas),p=k(()=>{const w=o.canvas?.state?.draggingItems??!1,_=a.value&&Me.isDraggingVueNodes.value;return w||_}),v=n(()=>{const w=s();if(!w.size){i.value=!1;return}if(p.value){i.value=!1;return}i.value=!0;const _=[];for(const x of w)if(x.id!=null)if(a.value&&typeof x.id=="string"){const D=Me.getNodeLayoutRef(x.id).value;D&&_.push([D.bounds.x,D.bounds.y,D.bounds.width,D.bounds.height])}else(x instanceof vt||x instanceof Lt)&&_.push([x.pos[0],x.pos[1]-me.NODE_TITLE_HEIGHT,x.size[0],x.size[1]+me.NODE_TITLE_HEIGHT]);const S=Ri(_);S&&(l.value={x:S.x+S.width/2,y:S.y-10},h())},"updateSelectionBounds"),h=n(()=>{if(!i.value)return;const{scale:w,offset:_}=t.ds,S=(l.value.x+_[0])*w+r.value,x=(l.value.y+_[1])*w+u.value;e.value&&(e.value.style.setProperty("--tb-x",`${S}px`),e.value.style.setProperty("--tb-y",`${x}px`))},"updateTransform"),{resume:d,pause:b}=eo(h);he(()=>{i.value?d():b()}),se(()=>o.getCanvas().state.selectionChanged,w=>{w&&((st.value||at)&&(st.value=!1,Pt=!1,co.value?at=Ro(o):at=null),v(),o.getCanvas().state.selectionChanged=!1)},{immediate:!0}),se(()=>co.value,w=>{w?at=Ro(o):o.canvas?.state?.draggingItems||(at=null,st.value&&(st.value=!1))});const y=n(w=>{if(w){g();return}c()},"handleDragStateChange"),g=n(()=>{if(i.value=!1,!co.value){st.value=!1,Pt=!1;return}if(Ro(o)!==at&&(at=null),co.value=!1,Pt=!0,st.value=!!at,st.value){xv.value++;return}Pt=!1},"handleDragStart"),c=n(()=>{requestAnimationFrame(()=>{v();const w=Tv(o),_=Pt&&i.value&&st.value&&w;st.value=_&&st.value,Pt=!1,_&&_v.value++})},"handleDragEnd");return se(p,y),lt(()=>{$v()}),{visible:i}}n(Nv,"useSelectionToolboxPosition");function $v(){co.value=!1,st.value=!1,Pt=!1,at=null}n($v,"resetMoreOptionsState");const Iv=new Set(["Properties","Colors","Shapes","Title","Mode","Properties Panel","Copy (Clipspace)"]),Mv=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 Ks(e){return e.toLowerCase().replace(/^un/,"").trim()}n(Ks,"normalizeLabel");function Pv(e,o){const t=Ks(e),s={color:["color","colors"],shape:["shape","shapes"],pin:["pin","unpin"],delete:["remove","delete"],duplicate:["clone","duplicate"]};return o.some(a=>{if(!a.label)return!1;const l=Ks(a.label);if(l===t)return!0;for(const i of Object.values(s))if(i.includes(t)&&i.includes(l))return!0;return!1})}n(Pv,"isDuplicateItem");function Dv(e){return Mv.has(e)}n(Dv,"isCoreMenuItem");function Av(e){const o=new Map,t=[];for(const l of e){if(l.type==="divider"||l.type==="category"){t.push(l);continue}if(!l.label){t.push(l);continue}o.has(l.label)||o.set(l.label,[]),o.get(l.label).push(l)}const s=[],a=new Set;for(const l of e){if(l.type==="divider"||l.type==="category"||!l.label){if(t.includes(l)){s.push(l);const u=t.indexOf(l);t.splice(u,1)}continue}if(a.has(l.label))continue;a.add(l.label);const i=o.get(l.label);if(i.length===1){s.push(i[0]);continue}const r=i.find(u=>u.source==="vue");r?s.push(r):s.push(i[0])}return s}n(Av,"removeDuplicateMenuOptions");const Ev=["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 hn(e){const o=Ev.indexOf(e);return o===-1?999:o}n(hn,"getMenuItemOrder");function Mn(e){const o=Av(e),t=new Map,s=[];let a;for(const v of o){if(v.type==="divider"||v.type==="category")continue;if((v.label==="Delete"||v.label==="Remove")&&!v.hasSubmenu){a=v;continue}v.label&&Dv(v.label)?t.set(v.label,v):s.push(v)}const l=[],i=Array.from(t.keys());i.sort((v,h)=>hn(v)-hn(h));const r=n(v=>v<=2?1:v<=8?2:v<=15?3:v<=17?4:5,"getSectionNumber");let u=0;for(const v of i){const h=t.get(v),d=hn(v),b=r(d);u>0&&b!==u&&l.push({type:"divider"}),l.push(h),u=b}const p=[];return p.push(...l),s.length>0&&(p.push({type:"divider"}),p.push({label:"Extensions",type:"category",disabled:!0}),p.push(...s)),a&&(p.push({type:"divider"}),p.push(a)),p}n(Mn,"buildStructuredMenu");function Lv(e,o,t=!0){const s=[];for(const a of e){if(a===null){s.push({type:"divider"});continue}if(!a.content||Iv.has(a.content)||Pv(a.content,s))continue;const l={label:a.content,source:"litegraph"};if(a.disabled&&(l.disabled=!0),a.has_submenu){if(a.submenu?.options)l.hasSubmenu=!0,l.submenu=fl(a.submenu.options);else if(a.callback&&!a.disabled){l.hasSubmenu=!0;const i=Vv(a,o);i?l.submenu=i:console.warn("[ContextMenuConverter] Failed to capture submenu for:",a.content)}}else a.callback&&!a.disabled&&(l.action=()=>{try{a.callback?.call(a,a.value,{},void 0,void 0,a)}catch(i){console.error("Error executing context menu callback:",i)}});s.push(l)}return t?Mn(s):s}n(Lv,"convertContextMenuToOptions");function Vv(e,o){let t,s;const a=me.ContextMenu;try{me.ContextMenu=function(l,i){return t=l,s=i,{close:n(()=>{},"close"),root:document.createElement("div")}};try{const l=new MouseEvent("click",{bubbles:!0,cancelable:!0,clientX:0,clientY:0}),i={close:n(()=>{},"close"),root:document.createElement("div")};e.callback?.call(e,e.value,{},l,i,o)}catch(l){console.warn("[ContextMenuConverter] Error executing callback for:",e.content,l)}}finally{me.ContextMenu=a}if(t)return fl(t,s);console.warn("[ContextMenuConverter] No items captured for:",e.content)}n(Vv,"captureDynamicSubmenu");function fl(e,o){const t=[];for(const s of e){if(s===null)continue;if(typeof s=="string"){const i={label:s,action:n(()=>{try{o?.callback&&o.callback.call(null,s,o,void 0,void 0,o.extra)}catch(r){console.error("Error executing string item callback:",r)}},"action")};t.push(i);continue}if(!s.content)continue;const l={label:Ov(s.content),action:n(()=>{try{s.callback?.call(s,s.value,{},void 0,void 0,s)}catch(i){console.error("Error executing submenu callback:",i)}},"action")};s.disabled&&(l.disabled=!0),t.push(l)}return t}n(fl,"convertSubmenuToOptions");function Ov(e){return Ct.sanitize(e,{ALLOWED_TAGS:[]}).trim()||e.replace(/<[^>]*>/g,"").trim()||e}n(Ov,"stripHtmlTags");function rs(){const e=fe(),o=Pe();return{refreshCanvas:n(()=>{e.canvas?.emitBeforeChange(),e.canvas?.setDirty(!0,!0),e.canvas?.graph?.afterChange(),e.canvas?.emitAfterChange(),o.activeWorkflow?.changeTracker?.checkState()},"refreshCanvas")}}n(rs,"useCanvasRefresh");function us(){const{t:e}=de(),o=fe(),t=it(),s=rs(),a=k(()=>t.completedActivePalette.light_theme),l=n(b=>Et(b,{lightness:.5}),"toLightThemeColor"),i={name:"noColor",localizedName:e("color.noColor"),value:{dark:me.NODE_DEFAULT_BGCOLOR,light:l(me.NODE_DEFAULT_BGCOLOR)}},r=[i,...Object.entries(je.node_colors).map(([b,y])=>({name:b,localizedName:e(`color.${b}`),value:{dark:y.bgcolor,light:l(y.bgcolor)}}))],u=[{name:"default",localizedName:e("shape.default"),value:Tt.ROUND},{name:"box",localizedName:e("shape.box"),value:Tt.BOX},{name:"card",localizedName:e("shape.CARD"),value:Tt.CARD}];return{colorOptions:r,shapeOptions:u,applyColor:n(b=>{const y=b?.name??i.name,g=y===i.name?null:je.node_colors[y];for(const c of o.selectedItems)Ao(c)&&c.setColorOption(g);s.refreshCanvas()},"applyColor"),applyShape:n(b=>{const y=Array.from(o.selectedItems).filter(g=>g instanceof vt);y.length!==0&&(y.forEach(g=>{g.shape=b.value}),s.refreshCanvas())},"applyShape"),getCurrentColor:n(()=>{const b=Array.from(o.selectedItems);if(b.length===0)return null;const y=b.find(w=>Ao(w));if(!y||!Ao(y))return null;const c=y.getColorOption()?.bgcolor??null;return r.find(w=>w.value.dark===c||w.value.light===c)??i},"getCurrentColor"),getCurrentShape:n(()=>{const b=Array.from(o.selectedItems).filter(c=>c instanceof vt);if(b.length===0)return null;const g=b[0].shape??Tt.ROUND;return u.find(c=>c.value===g)??u[0]},"getCurrentShape"),isLightTheme:a}}n(us,"useNodeCustomization");function Rv(){const{t:e}=de(),o=fe(),t=Pe(),s=ie(),a=rs(),{shapeOptions:l,colorOptions:i,isLightTheme:r}=us();return{getFitGroupToNodesOption:n(d=>({label:"Fit Group To Nodes",icon:"icon-[lucide--move-diagonal-2]",action:n(()=>{try{d.recomputeInsideNodes()}catch(y){console.warn("Failed to recompute group nodes:",y);return}const b=s.get("Comfy.GroupSelectedNodes.Padding");d.resizeTo(d.children,b),d.graph?.change(),o.canvas?.setDirty(!0,!0),t.activeWorkflow?.changeTracker?.checkState()},"action")}),"getFitGroupToNodesOption"),getGroupShapeOptions:n((d,b)=>({label:e("contextMenu.Shape"),icon:"icon-[lucide--box]",hasSubmenu:!0,submenu:l.map(y=>({label:y.localizedName,action:n(()=>{(d.nodes||[]).forEach(c=>c.shape=y.value),a.refreshCanvas(),b()},"action")}))}),"getGroupShapeOptions"),getGroupColorOptions:n((d,b)=>({label:e("contextMenu.Color"),icon:"icon-[lucide--palette]",hasSubmenu:!0,submenu:i.map(y=>({label:y.localizedName,color:r.value?y.value.light:y.value.dark,action:n(()=>{d.color=r.value?y.value.light:y.value.dark,a.refreshCanvas(),b()},"action")}))}),"getGroupColorOptions"),getGroupModeOptions:n((d,b)=>{const y=[];try{d.recomputeInsideNodes()}catch(_){return console.warn("Failed to recompute group nodes for mode options:",_),y}const g=d.nodes||[];if(!g.length)return y;let c=!0;for(let _=1;_<g.length;_++)if(g[_].mode!==g[0].mode){c=!1;break}const w=n((_,S)=>({label:e(`selectionToolbox.${_}`),icon:S===Ee.BYPASS?"icon-[lucide--ban]":S===Ee.NEVER?"icon-[lucide--zap-off]":"icon-[lucide--play]",action:n(()=>{g.forEach(x=>{x.mode=S}),o.canvas?.setDirty(!0,!0),d.graph?.change(),t.activeWorkflow?.changeTracker?.checkState(),b()},"action")}),"createModeAction");if(c)switch(g[0].mode){case Ee.ALWAYS:y.push(w("Set Group Nodes to Never",Ee.NEVER)),y.push(w("Bypass Group Nodes",Ee.BYPASS));break;case Ee.NEVER:y.push(w("Set Group Nodes to Always",Ee.ALWAYS)),y.push(w("Bypass Group Nodes",Ee.BYPASS));break;case Ee.BYPASS:y.push(w("Set Group Nodes to Always",Ee.ALWAYS)),y.push(w("Set Group Nodes to Never",Ee.NEVER));break;default:y.push(w("Set Group Nodes to Always",Ee.ALWAYS)),y.push(w("Set Group Nodes to Never",Ee.NEVER)),y.push(w("Bypass Group Nodes",Ee.BYPASS));break}else y.push(w("Set Group Nodes to Always",Ee.ALWAYS)),y.push(w("Set Group Nodes to Never",Ee.NEVER)),y.push(w("Bypass Group Nodes",Ee.BYPASS));return y},"getGroupModeOptions")}}n(Rv,"useGroupMenuOptions");function Wv(){const{t:e}=de(),o=n(()=>{Ce().execute("Comfy.MaskEditor.OpenMaskEditor")},"openMaskEditor"),t=n(i=>{if(!i?.imgs?.length)return;const r=i.imgs[i.imageIndex??0];if(!r)return;const u=new URL(r.src);u.searchParams.delete("preview"),window.open(u.toString(),"_blank")},"openImage"),s=n(async i=>{if(!i?.imgs?.length)return;const r=i.imgs[i.imageIndex??0];if(!r)return;const u=document.createElement("canvas"),p=u.getContext("2d");if(p){u.width=r.naturalWidth,u.height=r.naturalHeight,p.drawImage(r,0,0);try{const v=await new Promise(h=>{u.toBlob(h,"image/png")});if(!v){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":v})])}catch(v){console.error("Failed to copy image to clipboard:",v)}}},"copyImage"),a=n(i=>{if(!i?.imgs?.length)return;const r=i.imgs[i.imageIndex??0];if(r)try{const u=new URL(r.src);u.searchParams.delete("preview"),tn(u.toString())}catch(u){console.error("Failed to save image:",u)}},"saveImage");return{getImageMenuOptions:n(i=>i?.imgs?.length?[{label:e("contextMenu.Open in Mask Editor"),action:n(()=>o(),"action")},{label:e("contextMenu.Open Image"),icon:"icon-[lucide--external-link]",action:n(()=>t(i),"action")},{label:e("contextMenu.Copy Image"),icon:"icon-[lucide--copy]",action:n(()=>s(i),"action")},{label:e("contextMenu.Save Image"),icon:"icon-[lucide--download]",action:n(()=>a(i),"action")}]:[],"getImageMenuOptions")}}n(Wv,"useImageMenuOptions");function zv(){const{getSelectedNodes:e,toggleSelectedNodesMode:o}=Xn(),t=Ce(),s=Pe();return{adjustNodeSize:n(()=>{e().forEach(v=>{const h=v.computeSize();v.setSize([h[0],h[1]])}),J.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"adjustNodeSize"),toggleNodeCollapse:n(()=>{e().forEach(v=>{v.collapse()}),J.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"toggleNodeCollapse"),toggleNodePin:n(()=>{e().forEach(v=>{v.pin(!v.pinned)}),J.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"toggleNodePin"),toggleNodeBypass:n(()=>{o(Ee.BYPASS),J.canvas.setDirty(!0,!0)},"toggleNodeBypass"),runBranch:n(async()=>{const p=e();Fa(p).length!==0&&await t.execute("Comfy.QueueSelectedOutputNodes")},"runBranch")}}n(zv,"useSelectedNodeActions");function Bv(){const{t:e}=de(),{shapeOptions:o,applyShape:t,applyColor:s,colorOptions:a,isLightTheme:l}=us(),{adjustNodeSize:i,toggleNodeCollapse:r,toggleNodePin:u,toggleNodeBypass:p,runBranch:v}=zv(),h=k(()=>o.map(S=>({label:S.localizedName,action:n(()=>t(S),"action")}))),d=k(()=>a.map(S=>({label:S.localizedName,color:l.value?S.value.light:S.value.dark,action:n(()=>s(S.name==="noColor"?null:S),"action")})));return{getNodeInfoOption:n(S=>({label:e("contextMenu.Node Info"),icon:"icon-[lucide--info]",action:S}),"getNodeInfoOption"),getAdjustSizeOption:n(()=>({label:e("contextMenu.Adjust Size"),icon:"icon-[lucide--move-diagonal-2]",action:i}),"getAdjustSizeOption"),getNodeVisualOptions:n((S,x)=>[{label:S.collapsed?e("contextMenu.Expand Node"):e("contextMenu.Minimize Node"),icon:S.collapsed?"icon-[lucide--maximize-2]":"icon-[lucide--minimize-2]",action:n(()=>{r(),x()},"action")},{label:e("contextMenu.Shape"),icon:"icon-[lucide--box]",hasSubmenu:!0,submenu:h.value,action:n(()=>{},"action")},{label:e("contextMenu.Color"),icon:"icon-[lucide--palette]",hasSubmenu:!0,submenu:d.value,isColorPicker:!0,action:n(()=>{},"action")}],"getNodeVisualOptions"),getPinOption:n((S,x)=>({label:S.pinned?e("contextMenu.Unpin"):e("contextMenu.Pin"),icon:S.pinned?"icon-[lucide--pin-off]":"icon-[lucide--pin]",action:n(()=>{u(),x()},"action")}),"getPinOption"),getBypassOption:n((S,x)=>({label:S.bypassed?e("contextMenu.Remove Bypass"):e("contextMenu.Bypass"),icon:"icon-[lucide--redo-dot]",shortcut:"Ctrl+B",action:n(()=>{p(),x()},"action")}),"getBypassOption"),getRunBranchOption:n(()=>({label:e("contextMenu.Run Branch"),icon:"icon-[lucide--play]",action:v}),"getRunBranchOption"),colorSubmenu:d}}n(Bv,"useNodeMenuOptions");function ml(){const e=ie(),o=on(),{hasMultipleSelection:t}=zt(),s=k(()=>t.value);return{frameNodes:n(()=>{const{canvas:l}=J;if(!l.selectedItems?.size)return;const i=new Lt,r=e.get("Comfy.GroupSelectedNodes.Padding");i.resizeTo(l.selectedItems,r),l.graph?.add(i),o.titleEditorTarget=i},"frameNodes"),canFrame:s}}n(ml,"useFrameNodes");function Fv(){const{t:e}=de(),o=fe(),t=rs(),s=[{name:"top",localizedName:e("contextMenu.Top"),value:"top",icon:"icon-[lucide--align-start-vertical]"},{name:"bottom",localizedName:e("contextMenu.Bottom"),value:"bottom",icon:"icon-[lucide--align-end-vertical]"},{name:"left",localizedName:e("contextMenu.Left"),value:"left",icon:"icon-[lucide--align-start-horizontal]"},{name:"right",localizedName:e("contextMenu.Right"),value:"right",icon:"icon-[lucide--align-end-horizontal]"}],a=[{name:"horizontal",localizedName:e("contextMenu.Horizontal"),value:!0,icon:"icon-[lucide--align-center-horizontal]"},{name:"vertical",localizedName:e("contextMenu.Vertical"),value:!1,icon:"icon-[lucide--align-center-vertical]"}];return{alignOptions:s,distributeOptions:a,applyAlign:n(r=>{const u=Array.from(o.selectedItems).filter(v=>Zt(v));if(u.length===0)return;const p=zi(u,r.value);o.canvas?.repositionNodesVueMode(p),t.refreshCanvas()},"applyAlign"),applyDistribute:n(r=>{const u=Array.from(o.selectedItems).filter(v=>Zt(v));if(u.length<2)return;const p=Wi(u,r.value);o.canvas?.repositionNodesVueMode(p),t.refreshCanvas()},"applyDistribute")}}n(Fv,"useNodeArrangement");function Uv(){const e=fe(),o=Nt(),t=et(),s=on(),a=Pe();return{copySelection:n(()=>{const v=J.canvas;if(!v.selectedItems||v.selectedItems.size===0){o.add({severity:"warn",summary:re("g.nothingToCopy"),detail:re("g.selectItemsToCopy"),life:3e3});return}v.copyToClipboard(),o.add({severity:"success",summary:re("g.copied"),detail:re("g.itemsCopiedToClipboard"),life:2e3})},"copySelection"),pasteSelection:n(()=>{J.canvas.pasteFromClipboard({connectInputs:!1}),a.activeWorkflow?.changeTracker?.checkState()},"pasteSelection"),duplicateSelection:n(()=>{const v=J.canvas;if(!v.selectedItems||v.selectedItems.size===0){o.add({severity:"warn",summary:re("g.nothingToDuplicate"),detail:re("g.selectItemsToDuplicate"),life:3e3});return}v.copyToClipboard(),v.selectedItems.clear(),e.updateSelectedItems(),v.pasteFromClipboard({connectInputs:!1}),a.activeWorkflow?.changeTracker?.checkState()},"duplicateSelection"),deleteSelection:n(()=>{const v=J.canvas;if(!v.selectedItems||v.selectedItems.size===0){o.add({severity:"warn",summary:re("g.nothingToDelete"),detail:re("g.selectItemsToDelete"),life:3e3});return}v.deleteSelected(),v.setDirty(!0,!0),a.activeWorkflow?.changeTracker?.checkState()},"deleteSelection"),renameSelection:n(async()=>{const v=Array.from(e.selectedItems);if(v.length===1){const h=v[0];if(h instanceof vt){s.titleEditorTarget=h;return}const d="title"in h?h.title:"",b=await t.prompt({title:re("g.rename"),message:re("g.enterNewName"),defaultValue:d});if(b&&b!==d&&"title"in h){const y=h;y.title=b,J.canvas.setDirty(!0,!0),a.activeWorkflow?.changeTracker?.checkState()}return}if(v.length>1){const h=await t.prompt({title:re("g.batchRename"),message:re("g.enterBaseName"),defaultValue:"Item"});h&&(v.forEach((d,b)=>{if("title"in d){const y=d;y.title=`${h} ${b+1}`}}),J.canvas.setDirty(!0,!0),a.activeWorkflow?.changeTracker?.checkState());return}o.add({severity:"warn",summary:re("g.nothingToRename"),detail:re("g.selectItemsToRename"),life:3e3})},"renameSelection")}}n(Uv,"useSelectionOperations");function Gv(){const{t:e}=de(),{copySelection:o,duplicateSelection:t,deleteSelection:s,renameSelection:a}=Uv(),{alignOptions:l,distributeOptions:i,applyAlign:r,applyDistribute:u}=Fv(),{convertToSubgraph:p,unpackSubgraph:v,addSubgraphToLibrary:h}=Ua(),{frameNodes:d}=ml(),b=k(()=>l.map(x=>({label:x.localizedName,icon:x.icon,action:n(()=>r(x),"action")}))),y=k(()=>i.map(x=>({label:x.localizedName,icon:x.icon,action:n(()=>u(x),"action")})));return{getBasicSelectionOptions:n(()=>[{label:e("contextMenu.Rename"),action:a},{label:e("contextMenu.Copy"),shortcut:"Ctrl+C",action:o},{label:e("contextMenu.Duplicate"),shortcut:"Ctrl+D",action:t}],"getBasicSelectionOptions"),getSubgraphOptions:n(({hasSubgraphs:x,hasMultipleSelection:D})=>{const P={label:e("contextMenu.Convert to Subgraph"),icon:"icon-[lucide--shrink]",action:p,badge:Pn.NEW},T=[];return(!x||D)&&T.push(P),x&&T.push({label:e("contextMenu.Add Subgraph to Library"),icon:"icon-[lucide--folder-plus]",action:h},{label:e("contextMenu.Unpack Subgraph"),icon:"icon-[lucide--expand]",action:v}),T},"getSubgraphOptions"),getMultipleNodesOptions:n(()=>{const x=n(()=>{Ce().execute("Comfy.GroupNode.ConvertSelectedNodesToGroupNode")},"convertToGroupNodes");return[{label:e("contextMenu.Convert to Group Node"),icon:"icon-[lucide--group]",action:x,badge:Pn.DEPRECATED},{label:e("g.frameNodes"),icon:"icon-[lucide--frame]",action:d}]},"getMultipleNodesOptions"),getDeleteOption:n(()=>({label:e("contextMenu.Delete"),icon:"icon-[lucide--trash-2]",shortcut:"Delete",action:s}),"getDeleteOption"),getAlignmentOptions:n(()=>[{label:e("contextMenu.Align Selected To"),icon:"icon-[lucide--align-start-horizontal]",hasSubmenu:!0,submenu:b.value,action:n(()=>{},"action")},{label:e("contextMenu.Distribute Nodes"),icon:"icon-[lucide--align-center-horizontal]",hasSubmenu:!0,submenu:y.value,action:n(()=>{},"action")}],"getAlignmentOptions"),alignSubmenu:b,distributeSubmenu:y}}n(Gv,"useSelectionMenuOptions");var Pn=(e=>(e.NEW="new",e.DEPRECATED="deprecated",e))(Pn||{});let bo=null;function jv(e){bo?.toggle&&bo.toggle(e)}n(jv,"toggleNodeOptions");function Hv(e){bo?.show&&bo.show(e)}n(Hv,"showNodeOptions");function Dn(e){bo=e}n(Dn,"registerNodeOptionsInstance");function qv(e){return e.map(o=>o.type==="divider"||o.type==="category"?o:{...o,source:"vue"})}n(qv,"markAsVueOptions");function Kv(){const{selectedItems:e,selectedNodes:o,nodeDef:t,showNodeHelp:s,hasSubgraphs:a,hasImageNode:l,hasOutputNodesSelected:i,hasMultipleSelection:r,computeSelectionFlags:u}=zt(),p=fe(),{getImageMenuOptions:v}=Wv(),{getNodeInfoOption:h,getNodeVisualOptions:d,getPinOption:b,getBypassOption:y,getRunBranchOption:g}=Bv(),{getFitGroupToNodesOption:c,getGroupColorOptions:w,getGroupModeOptions:_}=Rv(),{getBasicSelectionOptions:S,getSubgraphOptions:x,getMultipleNodesOptions:D}=Gv(),P=a,T=r,$=E(0),I=n(()=>{$.value++},"bump"),B=k(()=>{$.value;const M=u(),V=e.value.filter(Zn),U=V.length===1&&o.value.length===0?V[0]:null,R=P.value,j=[];if(o.value.length===1&&!U&&p.canvas)try{const X=o.value[0],oe=p.canvas.getNodeMenuOptions(X);j.push(...Lv(oe,X,!1))}catch(X){console.error("Error getting LiteGraph menu items:",X)}const q=[],K=S();if(q.push(...K),q.push({type:"divider"}),i.value){const X=g();q.push(X)}if(!U){const X=b(M,I),oe=y(M,I);q.push(X),q.push(oe)}if(U){const X=_(U,I);q.push(...X)}if(q.push({type:"divider"}),q.push(...x({hasSubgraphs:R,hasMultipleSelection:T.value})),T.value&&q.push(...D()),U)q.push(c(U));else{const X=d(M,I);X.length>0&&q.push(X[0])}if(q.push({type:"divider"}),t.value&&q.push(h(s)),U)q.push(w(U,I));else{const X=d(M,I);X.length>1&&q.push(X[1]),X.length>2&&q.push(X[2])}q.push({type:"divider"}),l.value&&o.value.length>0&&(q.push(...v(o.value[0])),q.push({type:"divider"}));const ne=qv(q);if(j.length>0){const X=[...j,...ne];return Mn(X)}return Mn(ne)}),G=k(()=>B.value.filter(M=>M.hasSubmenu&&M.submenu));return{menuOptions:B,menuOptionsWithSubmenu:G,bump:I,hasSubgraphs:P,registerNodeOptionsInstance:Dn}}n(Kv,"useMoreOptionsMenu");const Jv=["title","onClick"],Yv={key:0,class:"icon-[lucide--check] size-4 flex-shrink-0"},Qv={key:1,class:"w-4 flex-shrink-0"},Xv=H({__name:"ColorPickerMenu",props:{option:{}},emits:["submenu-click"],setup(e,{expose:o,emit:t}){const s=e,a=t,{getCurrentShape:l}=us(),i=E();o({toggle:n((h,d)=>{i.value?.toggle(h,d)},"toggle")});const u=n(h=>{h.disabled||(a("submenu-click",h),i.value?.hide())},"handleSubmenuClick"),p=n(h=>{if(h.color)return!1;const d=l();return d?d.localizedName===h.label:!1},"isShapeSelected"),v=k(()=>s.option.submenu&&s.option.submenu.length>0&&s.option.submenu.every(h=>h.color&&!h.icon));return(h,d)=>(m(),F(C(Ze),{ref_key:"popoverRef",ref:i,"auto-z-index":!0,"base-z-index":1100,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-60"},content:{class:["text-base-foreground rounded-lg","shadow-lg border border-base-background","bg-interface-panel-surface"]}}},{default:L(()=>[f("div",{class:Q(v.value?"flex flex-col gap-1 p-2":"flex flex-col p-2 min-w-40")},[(m(!0),N(le,null,be(h.option.submenu,b=>(m(),N("div",{key:b.label,class:Q(C(pe)("hover:bg-secondary-background-hover rounded cursor-pointer",v.value?"w-7 h-7 flex items-center justify-center":"flex items-center gap-2 px-3 py-1.5 text-sm",b.disabled?"cursor-not-allowed pointer-events-none text-node-icon-disabled":"hover:bg-secondary-background-hover")),title:b.label,onClick:n(y=>u(b),"onClick")},[b.color?(m(),N("div",{key:0,class:"size-5 rounded-full border border-border-default",style:ve({backgroundColor:b.color})},null,4)):b.color?O("",!0):(m(),N(le,{key:1},[p(b)?(m(),N("i",Yv)):(m(),N("div",Qv)),f("span",null,z(b.label),1)],64))],10,Jv))),128))],2)]),_:1},512))}}),Zv=["onClick"],eg={class:"flex-1"},tg={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"},og={key:2,class:"icon-[lucide--chevron-right] size-4 opacity-60"},ng=H({__name:"NodeContextMenu",setup(e,{expose:o}){const t=E(),s=E(),a=E(!1),{menuOptions:l,bump:i}=Kv(),r=fe(),u=E({x:0,y:0}),p=r.getCanvas(),{left:v,top:h}=Un(p.canvas);let d=0,b=0,y=0;const g=n(()=>{if(!a.value)return;const U=t.value?.container;if(!U)return;const{scale:R,offset:j}=p.ds;if(R===d&&j[0]===b&&j[1]===y)return;d=R,b=j[0],y=j[1];const q=(u.value.x+j[0])*R+v.value,K=(u.value.y+j[1])*R+h.value;U.style.left=`${q}px`,U.style.top=`${K}px`},"updateMenuPosition"),{resume:c,pause:w}=eo(g,{immediate:!1});he(()=>{a.value?c():w()}),Ae(window,"touchstart",V=>{if(!a.value||!t.value)return;const U=V.target,R=t.value,j=R.container||R.$el;j&&!j.contains(U)&&T()},{passive:!0});const _=k(()=>l.value.find(V=>V.isColorPicker));function S(V){return!!V.isColorPicker}n(S,"isColorOption");function x(V){if(V.type==="divider")return{separator:!0};const U=S(V),R={label:V.label,icon:V.icon,disabled:V.disabled,shortcut:V.shortcut,isColorSubmenu:U,originalOption:V};return V.hasSubmenu&&V.submenu&&!U&&(R.items=V.submenu.map(j=>({label:j.label,icon:j.icon,disabled:j.disabled,command:n(()=>{j.action(),T()},"command")}))),!V.hasSubmenu&&V.action&&(R.command=()=>{V.action?.(),T()}),R}n(x,"convertToMenuItem");const D=k(()=>l.value.map(x));function P(V){i();const U=V.clientX-v.value,R=V.clientY-h.value,{scale:j,offset:q}=p.ds;u.value={x:U/j-q[0],y:R/j-q[1]},a.value=!0,t.value?.show(V)}n(P,"show");function T(){t.value?.hide()}n(T,"hide");function $(V){a.value?T():P(V)}n($,"toggle"),o({toggle:$,hide:T,isOpen:a,show:P});function I(V){V.stopPropagation(),V.preventDefault();const U=Array.from(V.currentTarget.children).find(R=>R.classList.contains("icon-[lucide--chevron-right]"));s.value?.toggle(V,U)}n(I,"showColorPopover");function B(V){V.action(),T()}n(B,"handleColorSelect");function G(){a.value=!0}n(G,"onMenuShow");function M(){a.value=!1}return n(M,"onMenuHide"),Le(()=>{Dn({toggle:$,show:P,hide:T,isOpen:a})}),lt(()=>{Dn(null)}),(V,U)=>(m(),N(le,null,[W(C(Ma),{ref_key:"contextMenu",ref:t,model:D.value,class:"max-h-[80vh] md:max-h-none overflow-y-auto md:overflow-y-visible",onShow:G,onHide:M},{item:L(({item:R,props:j,hasSubmenu:q})=>[f("a",$t(j.action,{class:"flex items-center gap-2 px-3 py-1.5",onClick:n(K=>R.isColorSubmenu?I(K):void 0,"onClick")}),[R.icon?(m(),N("i",{key:0,class:Q([R.icon,"size-4"])},null,2)):O("",!0),f("span",eg,z(R.label),1),R.shortcut?(m(),N("span",tg,z(R.shortcut),1)):O("",!0),q||R.isColorSubmenu?(m(),N("i",og)):O("",!0)],16,Zv)]),_:1},8,["model"]),_.value?(m(),F(Xv,{ref_key:"colorPickerMenu",ref:s,key:"color-picker-menu",option:_.value,onSubmenuClick:B},null,8,["option"])):O("",!0)],64))}}),sg=H({__name:"FrameNodes",setup(e){const{frameNodes:o}=ml();return(t,s)=>{const a=Se("tooltip");return ue((m(),F(ee,{variant:"muted-textonly","aria-label":t.$t("g.frameNodes"),onClick:C(o)},{default:L(()=>s[0]||(s[0]=[f("i",{class:"icon-[lucide--frame]"},null,-1)])),_:1},8,["aria-label","onClick"])),[[a,{value:t.$t("g.frameNodes"),showDelay:1e3},void 0,{top:!0}]])}}}),ag=H({__name:"NodeOptionsButton",setup(e){const o=n(t=>{jv(t)},"handleClick");return(t,s)=>{const a=Se("tooltip");return ue((m(),F(ee,{"data-testid":"more-options-button",variant:"muted-textonly","aria-label":t.$t("g.moreOptions"),onClick:o},{default:L(()=>s[0]||(s[0]=[f("i",{class:"icon-[lucide--more-vertical]"},null,-1)])),_:1},8,["aria-label"])),[[a,{value:t.$t("g.moreOptions"),showDelay:1e3},void 0,{top:!0}]])}}}),lg={},ig={class:"h-6 w-px self-center bg-border-default"};function rg(e,o){return m(),N("div",ig)}n(rg,"_sfc_render$1");const Js=De(lg,[["render",rg]]),ug=H({__name:"SelectionToolbox",setup(e){const o=Ce(),t=fe(),s=Bi(),a=lo(),l=E(),{visible:i}=Nv(l),r=k(()=>{const V=new Set(t.selectedItems.map(U=>s.invokeExtensions("getSelectionToolboxCommands",U).flat()).flat());return Array.from(V).map(U=>o.getCommand(U)).filter(U=>U!==void 0)}),{hasAnySelection:u,hasMultipleSelection:p,isSingleNode:v,isSingleSubgraph:h,isSingleImageNode:d,hasAny3DNodeSelected:b,hasOutputNodesSelected:y,nodeDef:g}=zt(),c=k(()=>!!g.value),w=k(()=>u.value),_=k(()=>u.value),S=k(()=>p.value),x=k(()=>h.value),D=k(()=>v.value||h.value||p.value),P=k(()=>b.value),T=k(()=>d.value),$=k(()=>u.value),I=k(()=>u.value),B=k(()=>y.value),G=k(()=>w.value||_.value||S.value||x.value),M=k(()=>D.value);return(V,U)=>(m(),N(le,null,[f("div",{ref_key:"toolboxRef",ref:l,style:{transform:"translate(var(--tb-x), var(--tb-y))"},class:"pointer-events-none fixed top-0 left-0 z-40"},[W(zn,{name:"slide-up"},{default:L(()=>[C(i)?(m(),F(C(Na),{key:0,class:"selection-toolbox pointer-events-auto rounded-lg border border-interface-stroke bg-interface-panel-surface",pt:{header:"hidden",content:"p-2 h-12 flex flex-row gap-1"},onWheel:C(a).forwardEventToCanvas},{default:L(()=>[$.value?(m(),F(mv,{key:0})):O("",!0),c.value&&G.value?(m(),F(Js,{key:1})):O("",!0),c.value?(m(),F(hv,{key:2})):O("",!0),w.value?(m(),F(dv,{key:3})):O("",!0),S.value?(m(),F(sg,{key:4})):O("",!0),_.value?(m(),F(fv,{key:5})):O("",!0),x.value?(m(),F(pv,{key:6})):O("",!0),x.value?(m(),F(Sv,{key:7})):O("",!0),T.value?(m(),F(bv,{key:8})):O("",!0),G.value&&M.value?(m(),F(Js,{key:9})):O("",!0),D.value?(m(),F(av,{key:10})):O("",!0),I.value?(m(),F(Cv,{key:11})):O("",!0),P.value?(m(),F(yv,{key:12})):O("",!0),(m(!0),N(le,null,be(r.value,R=>(m(),F(gv,{key:R.id,command:R},null,8,["command"]))),128)),B.value?(m(),F(vv,{key:13})):O("",!0),W(ag)]),_:1},8,["onWheel"])):O("",!0)]),_:1})],512),W(ng)],64))}}),cg=De(ug,[["__scopeId","data-v-c6489a20"]]),dg=H({__name:"TitleEditor",setup(e){const o=ie(),t=E(!1),s=E(""),{style:a,updatePosition:l}=pl(),i=E({}),r=k(()=>({...a.value,...i.value})),u=on(),p=fe(),v=E(!0),h=n(b=>{if(u.titleEditorTarget&&b?.trim()){const y=b.trim();u.titleEditorTarget.title=y;const g=u.titleEditorTarget;g instanceof vt&&g.isSubgraphNode?.()&&(g.subgraph.name=y),J.canvas.setDirty(!0,!0)}t.value=!1,u.titleEditorTarget=null,p.canvas.allow_dragcanvas=v.value},"onEdit");return se(()=>u.titleEditorTarget,b=>{if(b===null)return;s.value=b.title,t.value=!0;const y=p.canvas;v.value=y.allow_dragcanvas,y.allow_dragcanvas=!1;const g=y.ds.scale;if(b instanceof Lt){const c=b;l({pos:c.pos,size:[c.size[0],c.titleHeight]}),i.value={fontSize:`${c.font_size*g}px`}}else if(b instanceof vt){const c=b,[w,_]=c.getBounding();l({pos:[w,_],size:[c.width,me.NODE_TITLE_HEIGHT]}),i.value={fontSize:`${12*g}px`}}}),Ae(document,"litegraph:canvas",n(b=>{if(b.detail.subType==="group-double-click"){if(!o.get("Comfy.Group.DoubleClickTitleToEdit"))return;const y=b.detail.group,[g,c]=y.pos;b.detail.originalEvent.canvasY-c<=y.titleHeight&&(u.titleEditorTarget=y)}else if(b.detail.subType==="node-double-click"){if(!o.get("Comfy.Node.DoubleClickTitleToEdit"))return;const y=b.detail.node,[g,c]=y.pos;b.detail.originalEvent.canvasY-c<=0&&(u.titleEditorTarget=y)}},"canvasEventHandler")),(b,y)=>t.value?(m(),N("div",{key:0,class:"group-title-editor node-title-editor",style:ve(r.value)},[W(Hn,{"is-editing":t.value,"model-value":s.value,onEdit:h},null,8,["is-editing","model-value"])],4)):O("",!0)}}),pg=De(dg,[["__scopeId","data-v-aceb018c"]]),fg={key:0,class:"p-3"},mg=H({__name:"TabInfo",props:{nodes:{}},setup(e){const o=k(()=>e.nodes[0]),t=yt(),s=Fi(),a=k(()=>t.fromLGraphNode(o.value));return ko(a,l=>{s.openHelp(l)},{immediate:!0}),(l,i)=>a.value?(m(),N("div",fg,[W(Ui,{node:a.value},null,8,["node"])])):O("",!0)}}),vg=["placeholder"],vl=H({__name:"SidePanelSearch",props:Bn({searcher:{type:Function,default:n(async()=>{},"default")},updateKey:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const o=Bo(e,"modelValue"),t=E(!1),s=va(o,100,{maxWait:100});se(o,l=>{t.value=l!==s.value});const a=zl(()=>ze(e.updateKey));return se([s,a],(l,i,r)=>{let u=!1,p;r(()=>{u=!0,p?.()}),e.searcher(s.value,v=>p=v).catch(v=>{console.error("[SidePanelSearch] searcher failed",v)}).finally(()=>{u||(t.value=!1)})},{immediate:!0}),(l,i)=>(m(),N("label",{class:Q(C(pe)("mt-1 py-1.5 bg-secondary-background rounded-lg transition-all duration-150","flex-1 flex gap-2 px-2 items-center","text-base-foreground border-0","focus-within:ring focus-within:ring-component-node-widget-background-highlighted/80"))},[f("i",{class:Q(C(pe)("size-4 text-muted-foreground",t.value?"icon-[lucide--loader-circle] animate-spin":"icon-[lucide--search]"))},null,2),ue(f("input",{"onUpdate:modelValue":i[0]||(i[0]=r=>o.value=r),type:"text",class:"bg-transparent border-0 outline-0 ring-0 h-5",placeholder:l.$t("g.searchPlaceholder")},null,8,vg),[[Bl,o.value]])],2))}}),gg=["fixed","increment","decrement","randomize"];function hg(e){return gg.includes(e)}n(hg,"isControlOption");function Ys(e){return hg(e)?e:"randomize"}n(Ys,"normalizeControlOption");function yg(e){e.vueTrack||ga((o,t)=>(e.callback=Xt(e.callback,t),e.vueTrack=o,{get(){},set(){}}))}n(yg,"widgetWithVueTrack");function gl(e){return yg(e),e.vueTrack(),e.value}n(gl,"useReactiveWidgetValue");function bg(e){const o=e.linkedWidgets?.find(t=>t.name=="control_after_generate");if(o)return{value:Ys(o.value),update:n(t=>o.value=Ys(t),"update")}}n(bg,"getControlWidget");function wg(e,o){return!e.isSubgraphNode()||!Gi(o)?void 0:e.subgraph.getNodeById(o._overlay.nodeId)?.type}n(wg,"getNodeType");const kg=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 hl(e,o){const t=yt();return function(s){try{const a=t.getInputSpecForWidget(e,s.name),l=o.get(s.name),i=s.promoted?"ring ring-component-node-widget-promoted":s.advanced?"ring ring-component-node-widget-advanced":void 0,r=n(u=>{const p=kg(u);s.value=p??void 0,s.callback?.(p)},"callback");return{name:s.name,type:s.type,value:gl(s),borderStyle:i,callback:r,controlWidget:bg(s),isDOMWidget:fo(s),label:s.label,nodeType:wg(e,s),options:s.options,spec:a,slotMetadata:l}}catch{return{name:s.name||"unknown",type:s.type||"text",value:void 0}}}}n(hl,"safeWidgetMapper");function Cg(e){return e==null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="object"}n(Cg,"isValidWidgetValue");function Sg(e){const{createNode:o,deleteNode:t,setSource:s}=nn(),a=ha(new Map),l=new Map,i=n(g=>{const c=l.get(g),w=a.get(g);if(!c||!w)return;const _=new Map;c.inputs?.forEach((x,D)=>{x?.widget?.name&&_.set(x.widget.name,{index:D,linked:x.link!=null})});const S=w.widgets?.map(x=>{const D=_.get(x.name);return D?{...x,slotMetadata:D}:x});a.set(g,{...w,widgets:S,inputs:c.inputs?[...c.inputs]:void 0,outputs:c.outputs?[...c.outputs]:void 0})},"refreshNodeSlots");function r(g){const c=g.graph&&"id"in g.graph&&g.graph!==g.graph.rootGraph?String(g.graph.id):null,w=new Map,_=ws(g.widgets??[]);Object.defineProperty(g,"widgets",{get(){return _},set($){_.splice(0,_.length,...$)}});const S=ws(g.inputs??[]);Object.defineProperty(g,"inputs",{get(){return S},set($){S.splice(0,S.length,...$)}});const x=Fl(()=>(g.inputs?.forEach(($,I)=>{$?.widget?.name&&w.set($.widget.name,{index:I,linked:$.link!=null})}),g.widgets?.map(hl(g,w))??[])),D=g.type||g.constructor?.comfyClass||g.constructor?.title||g.constructor?.name||"Unknown",P=g.constructor?.nodeData?.api_node??!1,T=g.badges;return{id:String(g.id),title:typeof g.title=="string"?g.title:"",type:D,mode:g.mode||0,titleMode:g.title_mode,selected:g.selected||!1,executing:!1,subgraphId:c,apiNode:P,badges:T,hasErrors:!!g.has_errors,widgets:x,inputs:S,outputs:g.outputs?[...g.outputs]:void 0,flags:g.flags?{...g.flags}:void 0,color:g.color||void 0,bgcolor:g.bgcolor||void 0,shape:g.shape}}n(r,"extractVueNodeData");const u=n(g=>l.get(g),"getNode"),p=n(()=>{if(!e?._nodes)return;const g=new Set(e._nodes.map(c=>String(c.id)));for(const c of Array.from(a.keys()))g.has(c)||(l.delete(c),a.delete(c));e._nodes.forEach(c=>{const w=String(c.id);l.set(w,c),a.set(w,r(c))})},"syncWithGraph"),v=n((g,c)=>{const w=String(g.id);l.set(w,g),a.set(w,r(g));const _=n(()=>{const S={x:g.pos[0],y:g.pos[1]},x={width:g.size[0],height:g.size[1]};s(go.Canvas),o(w,{position:S,size:x,zIndex:g.order||0,visible:!0})},"initializeVueNodeLayout");window.app?.configuringGraph?g.onAfterGraphConfigured=Xt(g.onAfterGraphConfigured,()=>{a.set(w,r(g)),_()}):_(),c&&c(g)},"handleNodeAdded"),h=n((g,c)=>{const w=String(g.id);s(go.Canvas),t(w),l.delete(w),a.delete(w),c&&c(g)},"handleNodeRemoved"),d=n((g,c,w)=>()=>{e.onNodeAdded=g||void 0,e.onNodeRemoved=c||void 0,e.onTrigger=w||void 0,l.clear(),a.clear()},"createCleanupFunction"),y=n(()=>{const g=e.onNodeAdded,c=e.onNodeRemoved,w=e.onTrigger;e.onNodeAdded=S=>{v(S,g)},e.onNodeRemoved=S=>{h(S,c)};const _={"node:property:changed":n(S=>{const x=String(S.nodeId),D=a.get(x);if(D)switch(S.property){case"title":a.set(x,{...D,title:String(S.newValue)});break;case"flags.collapsed":a.set(x,{...D,flags:{...D.flags,collapsed:!!S.newValue}});break;case"flags.pinned":a.set(x,{...D,flags:{...D.flags,pinned:!!S.newValue}});break;case"mode":a.set(x,{...D,mode:typeof S.newValue=="number"?S.newValue:0});break;case"color":a.set(x,{...D,color:typeof S.newValue=="string"?S.newValue:void 0});break;case"bgcolor":a.set(x,{...D,bgcolor:typeof S.newValue=="string"?S.newValue:void 0});break;case"shape":a.set(x,{...D,shape:typeof S.newValue=="number"?S.newValue:void 0})}},"node:property:changed"),"node:slot-errors:changed":n(S=>{i(String(S.nodeId))},"node:slot-errors:changed"),"node:slot-links:changed":n(S=>{S.slotType===ji.INPUT&&i(String(S.nodeId))},"node:slot-links:changed")};return e.onTrigger=S=>{switch(S.type){case"node:property:changed":_["node:property:changed"](S);break;case"node:slot-errors:changed":_["node:slot-errors:changed"](S);break;case"node:slot-links:changed":_["node:slot-links:changed"](S);break}w?.(S)},p(),d(g||void 0,c||void 0,w||void 0)},"setupEventListeners")();return e._nodes&&e._nodes.length>0&&e._nodes.forEach(g=>{e.onNodeAdded&&e.onNodeAdded(g)}),{vueNodeData:a,getNode:u,cleanup:y}}n(Sg,"useGraphNodeManager");const xg={class:"flex flex-col bg-interface-panel-surface"},_g={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl bg-inherit"},Tg=["disabled"],Ng={class:"text-sm font-semibold line-clamp-2"},$g={key:0,class:"pb-4"},Ig=H({__name:"PropertiesAccordionItem",props:Bn({isEmpty:{type:Boolean}},{collapse:{type:Boolean,default:!1},collapseModifiers:{}}),emits:["update:collapse"],setup(e){const o=Bo(e,"collapse");return(t,s)=>{const a=Se("tooltip");return m(),N("div",xg,[f("div",_g,[ue((m(),N("button",{type:"button",class:Q(C(pe)("group min-h-12 bg-transparent border-0 outline-0 ring-0 w-full text-left flex items-center justify-between pl-4 pr-3",!t.isEmpty&&"cursor-pointer")),disabled:t.isEmpty,onClick:s[0]||(s[0]=l=>o.value=!o.value)},[f("span",Ng,[Ne(t.$slots,"label")]),t.isEmpty?O("",!0):(m(),N("i",{key:0,class:Q(C(pe)("text-muted-foreground group-hover:text-base-foreground group-focus:text-base-foreground icon-[lucide--chevron-up] size-4 transition-all",o.value&&"-rotate-180"))},null,2))],10,Tg)),[[a,t.isEmpty?{value:t.$t("rightSidePanel.inputsNoneTooltip"),showDelay:1e3}:void 0]])]),!o.value&&!t.isEmpty?(m(),N("div",$g,[Ne(t.$slots,"default")])):O("",!0)])}}}),Mg={key:0,class:"space-y-4 rounded-lg bg-interface-surface px-4"},Pg={class:"min-h-8"},Dg={key:0,class:"text-sm leading-8 p-0 m-0 line-clamp-1"},Ag=H({__name:"SectionWidgets",props:{label:{},widgets:{}},setup(e){Qo("hideLayoutField",!0);const o=fe(),{t}=de();function s(r){return qi(r.type,r.name)||Ki}n(s,"getWidgetComponent");function a(r,u){r.value=u,r.callback?.(u),o.canvas?.setDirty(!0,!0)}n(a,"onWidgetValueChange");const l=k(()=>e.widgets.length===0),i=k(()=>e.label??(l.value?t("rightSidePanel.inputsNone"):t("rightSidePanel.inputs")));return(r,u)=>(m(),F(Ig,{"is-empty":l.value},{label:L(()=>[Ne(r.$slots,"label",{},()=>[_e(z(i.value),1)])]),default:L(()=>[l.value?O("",!0):(m(),N("div",Mg,[(m(!0),N(le,null,be(r.widgets,({widget:p,node:v},h)=>(m(),N("div",{key:`widget-${h}-${p.name}`,class:"widget-item gap-1.5 col-span-full grid grid-cols-subgrid"},[f("div",Pg,[p.name?(m(),N("p",Dg,z(p.label||p.name),1)):O("",!0)]),(m(),F(Qt(s(p)),{widget:p,"model-value":C(gl)(p),"node-id":String(v.id),"node-type":v.type,class:Q(C(pe)("col-span-1",C(Hi)(p.type)&&"min-h-36")),"onUpdate:modelValue":n(d=>a(p,d),"onUpdate:modelValue")},null,8,["widget","model-value","node-id","node-type","class","onUpdate:modelValue"]))]))),128))]))]),_:3},8,["is-empty"]))}}),Eg={class:"px-4 pb-4 flex gap-2 border-b border-interface-stroke"},Lg=H({__name:"TabParameters",props:{nodes:{}},setup(e){const o=k(()=>e.nodes.map(a=>{const{widgets:l=[]}=a;return{widgets:l.filter(r=>!(r.options?.canvasOnly||r.options?.hidden)).map(r=>({node:a,widget:r})),node:a}})),t=Je([]);async function s(a){if(a.trim()===""){t.value=o.value;return}const l=a.trim().toLowerCase().split(" ");t.value=o.value.map(i=>({...i,widgets:i.widgets.filter(({widget:r})=>{const u=r.label?.toLowerCase(),p=r.name.toLowerCase(),v=r.type.toLowerCase(),h=r.value?.toString().toLowerCase();return l.every(d=>p.includes(d)||u?.includes(d)||v?.includes(d)||h?.includes(d))})})).filter(i=>i.widgets.length>0)}return n(s,"searcher"),(a,l)=>(m(),N(le,null,[f("div",Eg,[W(vl,{searcher:s,"update-key":o.value},null,8,["update-key"])]),(m(!0),N(le,null,be(t.value,i=>(m(),F(Ag,{key:i.node.id,label:o.value.length>1?i.node.title:void 0,widgets:i.widgets,"default-collapse":o.value.length>1&&o.value===t.value,class:"border-b border-interface-stroke"},null,8,["label","widgets","default-collapse"]))),128))],64))}}),Vg=["disabled","onClick"],Og=H({__name:"FormSelectButton",props:{modelValue:{},options:{},optionLabel:{default:"label"},optionValue:{default:"value"},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:o}){const t=e,s=o,a=n((u,p)=>{if(typeof u!="object")return u;const v=t.optionValue;return u[v]??u.value??u.name??u.label??p},"getOptionValue"),l=n(u=>{if(typeof u=="object"&&u!==null){const p=t.optionLabel;return u[p]??u.label??u.name??u.value??String(u)}return String(u)},"getOptionLabel"),i=n(u=>{const p=a(t.options[u],u);return String(p)===String(t.modelValue??"")},"isSelected"),r=n(u=>{if(t.disabled)return;const p=a(t.options[u],u);s("update:modelValue",p)},"handleSelect");return(u,p)=>(m(),N("div",{class:Q(C(pe)(C(ru),"p-1 inline-flex justify-center items-center gap-1"))},[(m(!0),N(le,null,be(u.options,(v,h)=>(m(),N("button",{key:a(v,h),class:Q(C(pe)("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(h)&&!u.disabled,"hover:bg-interface-menu-component-surface-selected/50":!i(h)&&!u.disabled,"opacity-50 cursor-not-allowed":u.disabled,"cursor-pointer":!u.disabled},i(h)&&!u.disabled?"text-text-primary":"text-text-secondary")),disabled:u.disabled,onClick:n(d=>r(h),"onClick")},z(l(v)),11,Vg))),128))],2))}}),Rg={class:"space-y-4 p-3 text-sm text-muted-foreground"},Wg={class:"flex flex-col gap-2"},zg={class:"flex flex-col gap-2"},Bg={class:"bg-secondary-background border-none rounded-lg p-1 grid grid-cols-5 gap-1 justify-items-center"},Fg=["onClick"],Ug=["data-testid"],Gg={class:"flex items-center justify-between"},jg=H({__name:"TabSettings",props:{nodes:{}},setup(e){const o=e,t=Je([]);he(()=>{o.nodes?t.value=o.nodes:t.value=[]});const{t:s}=de(),a=fe(),l=it(),i=k(()=>l.completedActivePalette.light_theme),r=k({get(){let y=null;const g=t.value;return g.length===0?null:(g.length>1?(y=g[0].mode,g.every(c=>c.mode===y)||(y=null)):y=g[0].mode,y)},set(y){t.value.forEach(g=>{g.mode=y}),po(t),a.canvas?.setDirty(!0,!0)}}),u=k({get(){return t.value.some(y=>y.pinned)},set(y){t.value.forEach(g=>g.pin(y)),po(t),a.canvas?.setDirty(!0,!0)}});function p(y){return{dark:Et(y,{lightness:.3}),light:Et(y,{lightness:.4}),ringDark:Et(y,{lightness:.5}),ringLight:Et(y,{lightness:.1})}}n(p,"getColorValue");const v={name:"noColor",localizedName:n(()=>s("color.noColor"),"localizedName"),value:p(me.NODE_DEFAULT_BGCOLOR)},h=Object.entries(je.node_colors),d=[v,...h.map(([y,g])=>({name:y,localizedName:n(()=>s(`color.${y}`),"localizedName"),value:p(g.bgcolor)}))],b=k({get(){if(t.value.length===0)return null;const y=t.value.map(c=>c.getColorOption());let g=y[0];return y.every(c=>c===g)||(g=!1),g===!1?null:g==null||!g.bgcolor&&!g.color?v.name:h.find(([c,w])=>w.bgcolor===g.bgcolor&&w.color===g.color)?.[0]??null},set(y){if(y===null)return;const g=y===v.name?null:je.node_colors[y];for(const c of t.value)c.setColorOption(g);po(t),a.canvas?.setDirty(!0,!0)}});return(y,g)=>{const c=Se("tooltip");return m(),N("div",Rg,[f("div",Wg,[f("span",null,z(C(s)("rightSidePanel.nodeState")),1),W(Og,{modelValue:r.value,"onUpdate:modelValue":g[0]||(g[0]=w=>r.value=w),class:"w-full",options:[{label:C(s)("rightSidePanel.normal"),value:C(Ee).ALWAYS},{label:C(s)("rightSidePanel.bypass"),value:C(Ee).BYPASS},{label:C(s)("rightSidePanel.mute"),value:C(Ee).NEVER}]},null,8,["modelValue","options"])]),f("div",zg,[f("span",null,z(C(s)("rightSidePanel.color")),1),f("div",Bg,[(m(),N(le,null,be(d,w=>f("button",{key:w.name,class:Q(C(pe)("size-8 rounded-lg bg-transparent border-0 outline-0 ring-0 text-left flex justify-center items-center cursor-pointer",w.name===b.value?"bg-interface-menu-component-surface-selected":"hover:bg-interface-menu-component-surface-selected")),onClick:n(_=>b.value=w.name,"onClick")},[ue(f("div",{class:Q(C(pe)("size-4 rounded-full ring-2 ring-gray-500/10")),style:ve({backgroundColor:i.value?w.value.light:w.value.dark,"--tw-ring-color":w.name===b.value?i.value?w.value.ringLight:w.value.ringDark:void 0}),"data-testid":w.name},null,14,Ug),[[c,w.localizedName(),void 0,{top:!0}]])],10,Fg)),64))])]),f("div",Gg,[f("span",null,z(C(s)("rightSidePanel.pinned")),1),W(C(Pa),{modelValue:u.value,"onUpdate:modelValue":g[1]||(g[1]=w=>u.value=w)},null,8,["modelValue"])])])}}}),Hg={class:"pointer-events-none flex-1"},qg={class:"text-xs text-text-secondary line-clamp-1"},Kg={class:"text-sm line-clamp-1 leading-8"},Jg={key:0,class:"size-4 pointer-events-none icon-[lucide--grip-vertical]"},Qs=H({__name:"SubgraphNodeWidget",props:{nodeTitle:{},widgetName:{},isDraggable:{type:Boolean},isPhysical:{type:Boolean},class:{type:[Array,Object,String,Number,null,Boolean]}},emits:["toggleVisibility"],setup(e){const o=e;function t(){return o.isPhysical?"icon-[lucide--link]":o.isDraggable?"icon-[lucide--eye]":"icon-[lucide--eye-off]"}return n(t,"getIcon"),(s,a)=>(m(),N("div",{class:Q(C(pe)("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))},[f("div",Hg,[f("div",qg,z(s.nodeTitle),1),f("div",Kg,z(s.widgetName),1)]),W(ee,{variant:"muted-textonly",size:"sm",disabled:s.isPhysical,onClick:a[0]||(a[0]=ke(l=>s.$emit("toggleVisibility"),["stop"]))},{default:L(()=>[f("i",{class:Q(t())},null,2)]),_:1},8,["disabled"]),s.isDraggable?(m(),N("div",Jg)):O("",!0)],2))}}),Yg={key:0,class:"subgraph-edit-section flex h-full flex-col"},Qg={class:"p-4 flex gap-2"},Xg={class:"flex-1"},Zg={key:0,class:"flex flex-col border-t border-interface-stroke"},eh={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl min-h-12 px-4"},th={class:"text-sm font-semibold uppercase line-clamp-1"},oh={key:1,class:"flex flex-col border-t border-interface-stroke"},nh={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl min-h-12 px-4"},sh={class:"text-sm font-semibold uppercase line-clamp-1"},ah={class:"pb-2 px-2 space-y-0.5 mt-0.5"},lh={key:2,class:"flex justify-center border-t border-interface-stroke py-4"},ih=H({__name:"SubgraphEditor",setup(e){const o=fe(),t=E(void 0),s=E(),a=E(""),l=ga((P,T)=>({get(){P();const $=r.value;return $?Ji($.properties.proxyWidgets):[]},set($){T();const I=r.value;if($){if(!I){console.error("Attempted to toggle widgets with no node selected");return}I.properties.proxyWidgets=$}}}));async function i(P){a.value=P}n(i,"searcher");const r=k(()=>{const P=o.selectedItems[0];if(P instanceof Qn)return P}),u=k({get(){if(!r.value)return[];const P=r.value;function T([$,I]){if($==="-1"){const M=P.widgets.find(V=>V.name===I);return M?[[{id:-1,title:"(Linked)",type:""},M]]:[]}const B=P.subgraph._nodes_by_id[$];if(!B?.widgets)return[];const G=B.widgets.find(M=>M.name===I);return G?[[B,G]]:[]}return n(T,"mapWidgets"),l.value.flatMap(T)},set(P){if(!r.value){console.error("Attempted to toggle widgets with no node selected");return}l.value=P.map(ln)}}),p=k(()=>{const P=r.value;if(!P)return[];const{updatePreviews:T}=no(),$=P.subgraph.nodes;for(const I of $)I.updateComputedDisabled(),T(I);return $.flatMap(g).filter(([I,B])=>!B.computedDisabled)}),v=k(()=>{if(!r.value)return[];const T=l.value;return p.value.filter($=>!T.some(Yi($)))}),h=k(()=>{const P=a.value.toLowerCase();return P?v.value.filter(([T,$])=>T.title.toLowerCase().includes(P)||$.name.toLowerCase().includes(P)):v.value}),d=k(()=>r.value?h.value.filter(Qi):[]),b=k(()=>{const P=a.value.toLowerCase();return P?u.value.filter(([T,$])=>T.title.toLowerCase().includes(P)||$.name.toLowerCase().includes(P)):u.value});function y(P){return`${P[0].id}: ${P[1].name}`}n(y,"toKey");function g(P){return P.widgets?P.widgets.map(T=>[P,T]):[]}n(g,"nodeWidgets");function c([P,T]){const $=r.value;if(!$)return[];Zi(P,T,[$]),po(l)}n(c,"demote");function w([P,T]){const $=r.value;if(!$)return[];er(P,T,[$]),po(l)}n(w,"promote");function _(){if(!r.value)return;const T=l.value,$=h.value.map(ln);T.push(...$),l.value=T}n(_,"showAll");function S(){r.value&&(l.value=l.value.filter(T=>!b.value.some(tr(T))||T[0]==="-1"))}n(S,"hideAll");function x(){if(!r.value)return;const T=l.value,$=d.value.map(ln);T.push(...$),l.value=T}n(x,"showRecommended");function D(){t.value?.dispose(),!(a.value||!s.value?.children?.length)&&(t.value=new or(s.value,".draggable-item"),t.value.applyNewItemsOrder=function(){const P=[];let T=-1;this.getAllItems().forEach((G,M)=>{if(G===this.draggableItem){T=M;return}if(!this.isItemToggled(G)){P[M]=G;return}const V=this.isItemAbove(G)?M+1:M-1;P[V]=G});for(let G=0;G<this.getAllItems().length;G++)typeof P[G]>"u"&&(P[G]=this.draggableItem);const $=P.indexOf(this.draggableItem),I=u.value,[B]=I.splice(T,1);I.splice($,0,B),u.value=I})}return n(D,"setDraggableState"),qt(b,()=>{D()},{debounce:100}),Le(()=>{D(),r.value&&Xi(r.value)}),gt(()=>{t.value?.dispose()}),(P,T)=>r.value?(m(),N("div",Yg,[f("div",Qg,[W(vl,{searcher:i})]),f("div",Xg,[b.value.length?(m(),N("div",Zg,[f("div",eh,[f("div",th,z(P.$t("subgraphStore.shown")),1),f("a",{class:"cursor-pointer text-right text-xs font-normal text-text-secondary hover:text-azure-600 whitespace-nowrap",onClick:ke(S,["stop"])},z(P.$t("subgraphStore.hideAll")),1)]),f("div",{ref_key:"draggableItems",ref:s,class:"pb-2 px-2 space-y-0.5 mt-0.5"},[(m(!0),N(le,null,be(b.value,([$,I])=>(m(),F(Qs,{key:y([$,I]),class:"bg-interface-panel-surface","node-title":$.title,"widget-name":I.name,"is-shown":!0,"is-draggable":!a.value,"is-physical":$.id===-1,onToggleVisibility:n(B=>c([$,I]),"onToggleVisibility")},null,8,["node-title","widget-name","is-draggable","is-physical","onToggleVisibility"]))),128))],512)])):O("",!0),h.value.length?(m(),N("div",oh,[f("div",nh,[f("div",sh,z(P.$t("subgraphStore.hidden")),1),f("a",{class:"cursor-pointer text-right text-xs font-normal text-text-secondary hover:text-azure-600 whitespace-nowrap",onClick:ke(_,["stop"])},z(P.$t("subgraphStore.showAll")),1)]),f("div",ah,[(m(!0),N(le,null,be(h.value,([$,I])=>(m(),F(Qs,{key:y([$,I]),class:"bg-interface-panel-surface","node-title":$.title,"widget-name":I.name,onToggleVisibility:n(B=>w([$,I]),"onToggleVisibility")},null,8,["node-title","widget-name","onToggleVisibility"]))),128))])])):O("",!0),d.value.length?(m(),N("div",lh,[W(ee,{size:"sm",class:"rounded border-none px-3 py-0.5",onClick:ke(x,["stop"])},{default:L(()=>[_e(z(P.$t("subgraphStore.showRecommended")),1)]),_:1})])):O("",!0)])])):O("",!0)}}),rh={"data-testid":"properties-panel",class:"flex size-full flex-col bg-interface-panel-surface"},uh={class:"pt-1"},ch={class:"flex items-center justify-between pl-4 pr-3"},dh={class:"my-3.5 text-sm font-semibold line-clamp-2"},ph={class:"flex gap-2"},fh={key:0,class:"px-4 pb-2 pt-1"},mh={class:"scrollbar-thin flex-1 overflow-y-auto"},vh={key:0,class:"flex size-full p-4 items-start justify-start text-sm text-muted-foreground"},gh=H({__name:"RightSidePanel",setup(e){const o=fe(),t=to(),s=ie(),{t:a}=de(),{selectedItems:l}=Fe(o),{activeTab:i,isEditingSubgraph:r}=Fe(t),u=k(()=>s.get("Comfy.Sidebar.Location")),p=k(()=>u.value==="right"?"icon-[lucide--panel-left]":"icon-[lucide--panel-right]"),v=k(()=>l.value.length>0),h=k(()=>l.value.filter(Zt)),d=k(()=>y.value instanceof Qn),b=k(()=>h.value.length===1),y=k(()=>b.value?h.value[0]:null),g=k(()=>l.value.length),c=k(()=>b.value&&y.value?y.value.title||y.value.type||"Node":a("rightSidePanel.title",{count:g.value}));function w(){t.closePanel()}n(w,"closePanel");const _=k(()=>{const P=[{label:n(()=>a("rightSidePanel.parameters"),"label"),value:"parameters"},{label:n(()=>a("g.settings"),"label"),value:"settings"}];return(!v.value||b.value&&!d.value)&&P.push({label:n(()=>a("rightSidePanel.info"),"label"),value:"info"}),P});he(()=>{!_.value.some(P=>P.value===i.value)&&!(i.value==="subgraph"&&d.value)&&t.openPanel(_.value[0].value)});const S=E(!1);function x(P){S.value=!1;const T=P.trim();if(!T)return;const $=ze(y);$&&T!==$.title&&($.title=T,o.canvas?.setDirty(!0,!1))}n(x,"handleTitleEdit");function D(){S.value=!1}return n(D,"handleTitleCancel"),(P,T)=>(m(),N("div",rh,[f("section",uh,[f("div",ch,[f("h3",dh,[b.value?(m(),F(Hn,{key:0,"model-value":c.value,"is-editing":S.value,"input-attrs":{"data-testid":"node-title-input"},onEdit:x,onCancel:D,onDblclick:T[0]||(T[0]=$=>S.value=!0)},null,8,["model-value","is-editing"])):(m(),N(le,{key:1},[_e(z(c.value),1)],64))]),f("div",ph,[d.value?(m(),F(ee,{key:0,variant:"secondary",size:"icon",class:Q(C(pe)(C(r)&&"bg-secondary-background-selected")),onClick:T[1]||(T[1]=$=>C(t).openPanel(C(r)?"parameters":"subgraph"))},{default:L(()=>T[3]||(T[3]=[f("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["class"])):O("",!0),W(ee,{variant:"secondary",size:"icon","aria-pressed":C(t).isOpen,"aria-label":C(a)("rightSidePanel.togglePanel"),onClick:w},{default:L(()=>[f("i",{class:Q(C(pe)(p.value,"size-4"))},null,2)]),_:1},8,["aria-pressed","aria-label"])])]),v.value?(m(),N("nav",fh,[W(nr,{"model-value":C(i),"onUpdate:modelValue":T[2]||(T[2]=$=>{C(t).openPanel($)})},{default:L(()=>[(m(!0),N(le,null,be(_.value,$=>(m(),F(sr,{key:$.value,class:"text-sm py-1 px-2 font-inter",value:$.value},{default:L(()=>[_e(z($.label()),1)]),_:2},1032,["value"]))),128))]),_:1},8,["model-value"])])):O("",!0)]),f("div",mh,[v.value?d.value&&C(r)?(m(),F(ih,{key:1,node:y.value},null,8,["node"])):(m(),N(le,{key:2},[C(i)==="parameters"?(m(),F(Lg,{key:0,nodes:h.value},null,8,["nodes"])):C(i)==="info"?(m(),F(mg,{key:1,nodes:h.value},null,8,["nodes"])):C(i)==="settings"?(m(),F(jg,{key:2,nodes:h.value},null,8,["nodes"])):O("",!0)],64)):(m(),N("div",vh,z(P.$t("rightSidePanel.noSelection")),1))])]))}}),cs=Ot("searchBox",()=>{const e=ie(),{x:o,y:t}=Ul(),s=k(()=>e.get("Comfy.NodeSearchBoxImpl")==="default"),a=Je(null);function l(u){a.value=u}n(l,"setPopoverRef");const i=E(!1);function r(){if(s.value){i.value=!i.value;return}a.value&&a.value.showSearchBox(new MouseEvent("click",{clientX:o.value,clientY:t.value,layerY:t.value}))}return n(r,"toggleVisible"),{newSearchBoxEnabled:s,setPopoverRef:l,toggleVisible:r,visible:i}}),hh={name:"AutoCompletePlus",extends:xo,emits:["focused-option-changed"],data(){return{isComposing:!1}},mounted(){typeof xo.mounted=="function"&&xo.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}xo.methods.onKeyDown.call(this,e)}}},yh={class:"option-container flex w-full cursor-pointer items-center justify-between overflow-hidden px-2 py-0"},bh={class:"option-display-name flex flex-col font-semibold"},wh={key:0},kh=["innerHTML"],Ch=["innerHTML"],Sh={key:0,class:"option-category truncate text-sm font-light text-muted"},xh={class:"option-badges"},_h=H({__name:"NodeSearchItem",props:{nodeDef:{},currentQuery:{}},setup(e){const o=ie(),t=k(()=>o.get("Comfy.NodeSearchBoxImpl.ShowCategory")),s=k(()=>o.get("Comfy.NodeSearchBoxImpl.ShowIdName")),a=k(()=>o.get("Comfy.NodeSearchBoxImpl.ShowNodeFrequency")),l=es(),i=k(()=>l.getNodeFrequency(p.nodeDef)),r=ar(),u=k(()=>r.isBookmarked(p.nodeDef)),p=e;return(v,h)=>(m(),N("div",yh,[f("div",bh,[f("div",null,[u.value?(m(),N("span",wh,h[0]||(h[0]=[f("i",{class:"pi pi-bookmark-fill mr-1 text-sm"},null,-1)]))):O("",!0),f("span",{innerHTML:C(xs)(v.nodeDef.display_name,v.currentQuery)},null,8,kh),h[1]||(h[1]=f("span",null," ",-1)),s.value?(m(),F(C(Kt),{key:1,severity:"secondary"},{default:L(()=>[f("span",{innerHTML:C(xs)(v.nodeDef.name,v.currentQuery)},null,8,Ch)]),_:1})):O("",!0)]),t.value?(m(),N("div",Sh,z(v.nodeDef.category.replaceAll("/"," > ")),1)):O("",!0)]),f("div",xh,[v.nodeDef.experimental?(m(),F(C(Kt),{key:0,value:v.$t("g.experimental"),severity:"primary"},null,8,["value"])):O("",!0),v.nodeDef.deprecated?(m(),F(C(Kt),{key:1,value:v.$t("g.deprecated"),severity:"danger"},null,8,["value"])):O("",!0),a.value&&i.value>0?(m(),F(C(Kt),{key:2,value:C(lr)(i.value,{roundToInt:!0}),severity:"secondary"},null,8,["value"])):O("",!0),v.nodeDef.nodeSource.type!==C(ir).Unknown?(m(),F(C(ui),{key:3,class:"text-sm font-light"},{default:L(()=>[_e(z(v.nodeDef.nodeSource.displayText),1)]),_:1})):O("",!0)])]))}}),Th=De(_h,[["__scopeId","data-v-acda36a0"]]),Nh={class:"comfy-vue-node-search-container flex w-full min-w-96 items-center justify-center"},$h={class:"_dialog-body"},Ih=H({__name:"NodeSearchBox",props:{filters:{},searchLimit:{default:64}},emits:["addFilter","removeFilter","addNode"],setup(e,{emit:o}){const t=ie(),{t:s}=de(),a=k(()=>t.get("Comfy.NodeSearchBoxImpl.NodePreview")),l=E(),i=E(!1),r=`comfy-vue-node-search-box-input-${Math.random()}`,u=E([]),p=E(null),v=E(""),h=k(()=>e.filters.length===0?s("g.searchNodes")+"...":""),d=yt(),b=es(),y=Xo(T=>{T.trim()},500),g=n(T=>{const $=T===""&&e.filters.length===0;v.value=T,u.value=$?b.topNodeDefs:[...d.nodeSearchService.searchNode(T,e.filters,{limit:e.searchLimit})],y(T)},"search"),c=o,w=n(T=>{c("addNode",T)},"onAddNode");let _=null;const S=n(async()=>{_??=document.getElementById(r),_&&(_.blur(),await Oe(()=>_?.focus()))},"reFocusInput");Le(()=>{_??=document.getElementById(r),_&&_.focus(),l.value.hide=()=>g(""),g(""),l.value.show()});const x=n(T=>{i.value=!1,c("addFilter",T)},"onAddFilter"),D=n(async(T,$)=>{T.stopPropagation(),T.preventDefault(),c("removeFilter",$),await S()},"onRemoveFilter"),P=n(T=>{if(T===-1){p.value=null;return}const $=u.value[T];p.value=$},"setHoverSuggestion");return(T,$)=>(m(),N("div",Nh,[a.value&&p.value?(m(),N("div",{key:0,class:"comfy-vue-node-preview-container absolute top-[50px] left-[-375px] z-50 cursor-pointer",onMousedown:$[0]||($[0]=ke(I=>w(p.value),["stop"]))},[(m(),F(rr,{key:p.value?.name||"","node-def":p.value},null,8,["node-def"]))],32)):O("",!0),W(ee,{variant:"secondary","aria-label":T.$t("g.addNodeFilterCondition"),class:"filter-button z-10",onClick:$[1]||($[1]=I=>i.value=!0)},{default:L(()=>$[6]||($[6]=[f("i",{class:"pi pi-filter"},null,-1)])),_:1},8,["aria-label"]),W(C(Da),{visible:i.value,"onUpdate:visible":$[2]||($[2]=I=>i.value=I),class:"min-w-96","dismissable-mask":"",modal:"",onHide:S},{header:L(()=>[f("h3",null,z(T.$t("g.addNodeFilterCondition")),1)]),default:L(()=>[f("div",$h,[W(ur,{onAddFilter:x})])]),_:1},8,["visible"]),W(hh,{ref_key:"autoCompletePlus",ref:l,"model-value":T.filters,class:"comfy-vue-node-search-box z-10 grow","scroll-height":"40vh",placeholder:h.value,"input-id":r,"append-to":"self",suggestions:u.value,delay:100,loading:!C(b).isLoaded,"complete-on-focus":"","auto-option-focus":"","force-selection":"",multiple:"","option-label":"display_name",onComplete:$[3]||($[3]=I=>g(I.query)),onOptionSelect:$[4]||($[4]=I=>w(I.value)),onFocusedOptionChanged:$[5]||($[5]=I=>P(I))},{option:L(({option:I})=>[W(Th,{"node-def":I,"current-query":v.value},null,8,["node-def","current-query"])]),chip:L(({value:I})=>[I.filterDef&&I.value?(m(),F(cr,{key:`${I.filterDef.id}-${I.value}`,text:I.value,badge:I.filterDef.invokeSequence.toUpperCase(),"badge-class":I.filterDef.invokeSequence+"-badge",onRemove:n(B=>D(B,I),"onRemove")},null,8,["text","badge","badge-class","onRemove"])):O("",!0)]),_:1},8,["model-value","placeholder","suggestions","loading"])]))}}),Mh=H({__name:"NodeSearchBoxPopover",setup(e,{expose:o}){let t=null,s=null,a=!1;const l=ie(),i=cs(),r=no(),{visible:u,newSearchBoxEnabled:p}=Fe(i),v=E(!0);function h(){return t?[t.canvasX,t.canvasY]:r.getCanvasCenter()}n(h,"getNewNodeLocation");const d=E([]);function b(R){d.value.push(R)}n(b,"addFilter");function y(R){d.value=d.value.filter(j=>ks(j)!==ks(R))}n(y,"removeFilter");function g(){d.value=[]}n(g,"clearFilters");function c(){u.value=!1}n(c,"closeDialog");const w=fe();function _(R){const j=r.addNodeOnGraph(R,{pos:h()});a&&t?w.getCanvas().linkConnector.connectToNode(j,t):t||console.warn("The trigger event was undefined when addNode was called."),a=!1,Pe().activeWorkflow?.changeTracker?.checkState(),window.requestAnimationFrame(c)}n(_,"addNode");function S(R){p.value?R?.pointerType==="touch"?setTimeout(()=>{P(R)},128):P(R):w.getCanvas().showSearchBox(R)}n(S,"showSearchBox");function x(){return w.getCanvas().linkConnector.renderLinks.at(0)}n(x,"getFirstLink");const D=yt();function P(R){const j=x();if(j){const q=j.toType==="input"?D.nodeSearchService.inputTypeFilter:D.nodeSearchService.outputTypeFilter,K=j.fromSlot.type?.toString()??"";b({filterDef:q,value:K})}u.value=!0,t=R,v.value=!1,setTimeout(()=>{v.value=!0},300)}n(P,"showNewSearchBox");function T(R){const j=x();if(!j)return;const{node:q,fromSlot:K,toType:ne}=j,ce={e:R,allow_searchbox:!0,showSearchBox:n(()=>{nt(),S(R)},"showSearchBox")},X=j.fromReroute?.id,oe=ne==="input"?{nodeFrom:q,slotFrom:K,afterRerouteId:X}:{nodeTo:q,slotTo:K,afterRerouteId:X},ae=w.getCanvas(),xe=ae.showConnectionMenu({...oe,...ce});if(!xe){console.warn("No menu was returned from showConnectionMenu");return}t=R,s=new AbortController;const{signal:Ue}=s,qe={once:!0,signal:Ue};Ae(ae.canvas,"connect-new-default-node",He=>{if(!(He instanceof CustomEvent))throw new Error("Invalid event");const Ge=He.detail?.node;if(!(Ge instanceof vt))throw new Error("Invalid node");a=!1,He.preventDefault(),ae.linkConnector.connectToNode(Ge,R)},qe);const nt=Ae(xe.controller.signal,"abort",U,qe)}n(T,"showContextMenu"),he(()=>{const{canvas:R}=w;R&&(me.release_link_on_empty_shows_menu=!1,R.allow_searchbox=!1,Ae(R.linkConnector.events,"dropped-on-canvas",V))});function $(R){if(R.detail.subType==="empty-double-click")S(R.detail.originalEvent);else if(R.detail.subType==="group-double-click"){const j=R.detail.group,[q,K]=j.pos;R.detail.originalEvent.canvasY-K>j.titleHeight&&S(R.detail.originalEvent)}}n($,"canvasEventHandler");const I=k(()=>l.get("Comfy.LinkRelease.Action")),B=k(()=>l.get("Comfy.LinkRelease.ActionShift"));function G(R){return R.preventDefault()}n(G,"preventDefault");function M(R){R.preventDefault();const j=w.getCanvas();j.linkConnector.state.snapLinksPos=[R.detail.canvasX,R.detail.canvasY],Ae(j.linkConnector.events,"reset",G,{once:!0})}n(M,"cancelNextReset");function V(R){switch(a=!0,R.detail.shiftKey?B.value:I.value){case kt.SEARCH_BOX:M(R),S(R.detail);break;case kt.CONTEXT_MENU:M(R),T(R.detail);break;case kt.NO_ACTION:}}n(V,"handleDroppedOnCanvas");function U(){s?.abort(),s=null,t=null;const R=w.getCanvas();R.linkConnector.events.removeEventListener("reset",G),a&&R.linkConnector.disconnectLinks(),R.linkConnector.reset(),R.setDirty(!0,!0)}return n(U,"reset"),se(u,()=>{u.value||U()}),Ae(document,"litegraph:canvas",$),o({showSearchBox:S}),(R,j)=>(m(),N("div",null,[W(C(Da),{visible:C(u),"onUpdate:visible":j[0]||(j[0]=q=>ft(u)?u.value=q:null),modal:"","dismissable-mask":v.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:g},{container:L(()=>[W(Ih,{filters:d.value,onAddFilter:b,onRemoveFilter:y,onAddNode:_},null,8,["filters"])]),_:1},8,["visible","dismissable-mask"])]))}}),Ph=["width","height"],Dh=H({__name:"ComfyLogo",props:{size:{default:16},color:{default:"currentColor"},class:{},mode:{default:"outline"}},setup(e){const o=k(()=>e.class||""),t=k(()=>({stroke:e.mode==="outline"?e.color:void 0,strokeWidth:e.mode==="outline"?1:void 0,fill:e.mode==="fill"?e.color:"none"}));return(s,a)=>(m(),N("svg",{class:Q(o.value),width:s.size,height:s.size,viewBox:"0 0 18 18",xmlns:"http://www.w3.org/2000/svg"},[f("path",$t({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,Ph))}}),Ah={class:"relative aspect-square w-full overflow-hidden rounded-t-lg select-none"},Eh={key:1,class:"flex h-full w-full items-center justify-center"},Lh=H({__name:"BaseThumbnail",props:{hoverZoom:{default:4},isHovered:{type:Boolean}},setup(e){const o=E(!1),t=E(null);return Le(()=>{Array.from(t.value?.getElementsByTagName("img")??[]).forEach(a=>{Ae(a,"error",()=>{o.value=!0})})}),(s,a)=>(m(),N("div",Ah,[o.value?(m(),N("div",Eh,a[0]||(a[0]=[f("img",{src:du,draggable:"false",class:"h-full w-full transform-gpu object-cover transition-transform duration-300 ease-out"},null,-1)]))):(m(),N("div",{key:0,ref_key:"contentRef",ref:t,class:"h-full w-full transform-gpu transition-transform duration-1000 ease-out",style:ve(s.isHovered?{transform:`scale(${1+s.hoverZoom/100})`}:void 0)},[Ne(s.$slots,"default",{},void 0,!0)],4))]))}}),an=De(Lh,[["__scopeId","data-v-c216f2c0"]]),Vh={class:"flex h-full w-full items-center justify-center p-4",style:{backgroundImage:"url(/assets/images/default-template.png)",backgroundRepeat:"round"}},Oh=["src"],Rh=H({__name:"AudioThumbnail",props:{src:{}},setup(e){return(o,t)=>(m(),F(an,null,{default:L(()=>[f("div",Vh,[f("audio",{controls:"",class:"relative w-full",src:o.src,onClick:t[0]||(t[0]=ke(()=>{},["stop"]))},null,8,Oh)])]),_:1}))}}),Wh=50,zh=H({__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=E(Wh),s=E(null),{elementX:a,elementWidth:l,isOutside:i}=Gl(s);return se([()=>e.isHovered,a,l,i],([r,u,p,v])=>{r&&(v||(t.value=u/p*100))}),(r,u)=>(m(),F(an,{"is-hovered":r.isHovered},{default:L(()=>[W(ho,{src:r.baseImageSrc,alt:r.alt,"image-class":C(o)?"w-full h-full object-cover":"max-w-full max-h-64 object-contain"},null,8,["src","alt","image-class"]),f("div",{ref_key:"containerRef",ref:s,class:"absolute inset-0"},[W(ho,{src:r.overlayImageSrc,alt:r.alt,"image-class":C(o)?"w-full h-full object-cover":"max-w-full max-h-64 object-contain","image-style":{clipPath:`inset(0 ${100-t.value}% 0 0)`}},null,8,["src","alt","image-class","image-style"]),f("div",{class:"pointer-events-none absolute inset-y-0 z-10 w-0.5 bg-white/30 backdrop-blur-sm",style:ve({left:`${t.value}%`})},null,4)],512)]),_:1},8,["is-hovered"]))}}),Bh=H({__name:"DefaultThumbnail",props:{src:{},alt:{},hoverZoom:{},isHovered:{type:Boolean},isVideo:{type:Boolean}},setup(e){const o=e.isVideo??(e.src?.toLowerCase().endsWith(".webp")||!1);return(t,s)=>(m(),F(an,{"hover-zoom":t.hoverZoom,"is-hovered":t.isHovered},{default:L(()=>[W(ho,{src:t.src,alt:t.alt,"image-class":["transform-gpu transition-transform duration-300 ease-out",C(o)?"w-full h-full object-cover":"max-w-full max-h-64 object-contain"],"image-style":t.isHovered?{transform:`scale(${1+t.hoverZoom/100})`}:void 0},null,8,["src","alt","image-class","image-style"])]),_:1},8,["hover-zoom","is-hovered"]))}}),Fh={class:"relative h-full w-full"},Uh={class:"absolute inset-0"},Gh={class:"absolute inset-0 z-10"},jh=H({__name:"HoverDissolveThumbnail",props:{baseImageSrc:{},overlayImageSrc:{},alt:{},isHovered:{type:Boolean},isVideo:{type:Boolean}},setup(e){const o=e.isVideo||e.baseImageSrc?.toLowerCase().endsWith(".webp")||e.overlayImageSrc?.toLowerCase().endsWith(".webp")||!1,t=k(()=>o?"size-full object-cover":"size-full object-contain"),s=k(()=>{const a="size-full transition-opacity duration-300",l=o?"object-cover":"object-contain",i=e.isHovered?"opacity-100":"opacity-0";return`${a} ${l} ${i}`});return(a,l)=>(m(),F(an,{"is-hovered":a.isHovered},{default:L(()=>[f("div",Fh,[f("div",Uh,[W(ho,{src:a.baseImageSrc,alt:a.alt,"image-class":t.value},null,8,["src","alt","image-class"])]),f("div",Gh,[W(ho,{src:a.overlayImageSrc,alt:a.alt,"image-class":s.value},null,8,["src","alt","image-class"])])])]),_:1},8,["is-hovered"]))}});function Hh(e,o={}){const{itemsPerPage:t=12,initialPage:s=1}=o,a=E(s),l=E(!1),i=Je(new Set([])),r=k(()=>{const b="value"in e?e.value:e;return Array.isArray(b)?b:[]}),u=k(()=>{const b=r.value;if(b.length===0)return[];const y=Array.from(i.value).sort((w,_)=>w-_),c=Math.max(...y,0)*t;return b.slice(0,c)}),p=k(()=>{const b=r.value;if(b.length===0)return!1;const y=Array.from(i.value);return Math.max(...y,0)*t<b.length}),v=k(()=>{const b=r.value;return b.length===0?0:Math.ceil(b.length/t)}),h=n(async()=>{if(l.value||!p.value)return;l.value=!0;const b=Array.from(i.value),y=Math.max(...b,0)+1,g=new Set(i.value);g.add(y),i.value=g,a.value=y,l.value=!1},"loadNextPage");return se(()=>r.value.length,b=>{b>0&&i.value.size===0&&(i.value=new Set([1]))},{immediate:!0}),{paginatedItems:u,isLoading:l,hasMoreItems:p,currentPage:a,totalPages:v,loadNextPage:h,reset:n(()=>{a.value=s,i.value=new Set([]),l.value=!1,r.value.length>0&&(i.value=new Set([1]))},"reset")}}n(Hh,"useLazyPagination");function qh(e){const o=ie(),t=E(""),s=E(o.get("Comfy.Templates.SelectedModels")),a=E(o.get("Comfy.Templates.SelectedUseCases")),l=E(o.get("Comfy.Templates.SelectedRunsOn")),i=E(o.get("Comfy.Templates.SortBy")),r=k(()=>{const M="value"in e?e.value:e;return Array.isArray(M)?M:[]}),u={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},p=k(()=>new ra(r.value,u)),v=k(()=>{const M=new Set;return r.value.forEach(V=>{Array.isArray(V.models)&&V.models.forEach(U=>M.add(U))}),Array.from(M).sort()}),h=k(()=>{const M=new Set;return r.value.forEach(V=>{V.tags&&Array.isArray(V.tags)&&V.tags.forEach(U=>M.add(U))}),Array.from(M).sort()}),d=k(()=>["ComfyUI","External or Remote API"]),b=va(t,50),y=k(()=>b.value.trim()?p.value.search(b.value).map(V=>V.item):r.value),g=k(()=>s.value.length===0?y.value:y.value.filter(M=>!M.models||!Array.isArray(M.models)?!1:s.value.some(V=>M.models?.includes(V)))),c=k(()=>a.value.length===0?g.value:g.value.filter(M=>!M.tags||!Array.isArray(M.tags)?!1:a.value.some(V=>M.tags?.includes(V)))),w=k(()=>l.value.length===0?c.value:c.value.filter(M=>{const V=M.openSource===!1,U=M.openSource!==!1;return l.value.some(R=>R==="External or Remote API"?V:R==="ComfyUI"?U:!1)})),_=n(M=>typeof M.vram=="number"&&Number.isFinite(M.vram)&&M.vram>0?M.vram:Number.POSITIVE_INFINITY,"getVramMetric"),S=k(()=>{const M=[...w.value];switch(i.value){case"alphabetical":return M.sort((V,U)=>{const R=V.title||V.name||"",j=U.title||U.name||"";return R.localeCompare(j)});case"newest":return M.sort((V,U)=>{const R=new Date(V.date||"1970-01-01");return new Date(U.date||"1970-01-01").getTime()-R.getTime()});case"vram-low-to-high":return M.sort((V,U)=>{const R=_(V),j=_(U);if(R===j){const q=V.title||V.name||"",K=U.title||U.name||"";return q.localeCompare(K)}return R===Number.POSITIVE_INFINITY?1:j===Number.POSITIVE_INFINITY?-1:R-j});case"model-size-low-to-high":return M.sort((V,U)=>{const R=typeof V.size=="number"?V.size:Number.POSITIVE_INFINITY,j=typeof U.size=="number"?U.size:Number.POSITIVE_INFINITY;return R===j?0:R-j});case"default":default:return M}}),x=k(()=>S.value),D=n(()=>{t.value="",s.value=[],a.value=[],l.value=[],i.value="newest"},"resetFilters"),P=n(M=>{s.value=s.value.filter(V=>V!==M)},"removeModelFilter"),T=n(M=>{a.value=a.value.filter(V=>V!==M)},"removeUseCaseFilter"),$=n(M=>{l.value=l.value.filter(V=>V!==M)},"removeRunsOnFilter"),I=k(()=>x.value.length),B=k(()=>r.value.length),G=Xo(()=>{},500);return se([t,s,a,l,i],()=>{(t.value.trim()!==""||s.value.length>0||a.value.length>0||l.value.length>0||i.value!=="default")&&G()},{deep:!0}),qt(s,M=>{o.set("Comfy.Templates.SelectedModels",M)},{debounce:500,deep:!0}),qt(a,M=>{o.set("Comfy.Templates.SelectedUseCases",M)},{debounce:500,deep:!0}),qt(l,M=>{o.set("Comfy.Templates.SelectedRunsOn",M)},{debounce:500,deep:!0}),qt(i,M=>{o.set("Comfy.Templates.SortBy",M)},{debounce:500}),{searchQuery:t,selectedModels:s,selectedUseCases:a,selectedRunsOn:l,sortBy:i,filteredTemplates:x,availableModels:v,availableUseCases:h,availableRunsOn:d,filteredCount:I,totalCount:B,resetFilters:D,removeModelFilter:P,removeUseCaseFilter:T,removeRunsOnFilter:$}}n(qh,"useTemplateFiltering");function yl(){const{t:e}=de(),o=sl(),t=ht(),s=E(null),a=E(null),l=k(()=>o.isLoaded),i=k(()=>o.groupedTemplates),r=n(async()=>(o.isLoaded||await o.loadWorkflowTemplates(),o.isLoaded),"loadTemplates"),u=n(()=>{if(i.value.length>0){const g=i.value[0].modules[0];p(g)}},"selectFirstTemplateCategory"),p=n(g=>(s.value=g,g!==null),"selectTemplateCategory"),v=n((g,c,w="1")=>{const _=c==="default"?we.fileURL(`/templates/${g.name}`):we.apiURL(`/workflow_templates/${c}/${g.name}`),S=c==="default"&&w?`-${w}`:"";return`${_}${S}.${g.mediaSubtype}`},"getTemplateThumbnailUrl"),h=n((g,c)=>{const w=g.title??g.name??`${c} Template`;return c==="default"?g.localizedTitle??w:w},"getTemplateTitle"),d=n(g=>(g.localizedDescription||g.description)?.replace(/[-_]/g," ").trim()??"","getTemplateDescription"),b=n(async(g,c)=>{if(!l.value)return!1;a.value=g;let w;try{if(c==="all"){const D=i.value.find($=>$.label===e("templateWorkflows.category.ComfyUI Examples","ComfyUI Examples"))?.modules.find($=>$.moduleName==="all")?.templates.find($=>$.name===g);if(!D||!D.sourceModule)return!1;const P=D.sourceModule;w=await y(g,P);const T=P==="default"?e(`templateWorkflows.template.${g}`,g):g;return t.closeDialog(),await J.loadGraphData(w,!0,!0,T,{openSource:"template"}),!0}w=await y(g,c);const _=c==="default"?e(`templateWorkflows.template.${g}`,g):g;return t.closeDialog(),await J.loadGraphData(w,!0,!0,_,{openSource:"template"}),!0}catch(_){return console.error("Error loading workflow template:",_),!1}finally{a.value=null}},"loadWorkflowTemplate"),y=n(async(g,c)=>c==="default"?fetch(we.fileURL(`/templates/${g}.json`)).then(w=>w.json()):fetch(we.apiURL(`/workflow_templates/${c}/${g}.json`)).then(w=>w.json()),"fetchTemplateJson");return{selectedTemplate:s,loadingTemplateId:a,isTemplatesLoaded:l,allTemplateGroups:i,loadTemplates:r,selectFirstTemplateCategory:u,selectTemplateCategory:p,getTemplateThumbnailUrl:v,getTemplateTitle:h,getTemplateDescription:d,loadWorkflowTemplate:b}}n(yl,"useTemplateWorkflows");function bl(e={}){const{minWidth:o="15rem",maxWidth:t="1fr",padding:s="0",gap:a="1rem",columns:l}=e;return l!==void 0&&l<1&&console.warn("createGridStyle: columns must be >= 1, defaulting to 1"),{display:"grid",gridTemplateColumns:l?`repeat(${Math.max(1,l??1)}, 1fr)`:`repeat(auto-fill, minmax(${o}, ${t}))`,padding:s,gap:a}}n(bl,"createGridStyle");const Kh={class:"text-neutral text-base"},Jh={class:"flex gap-2"},Yh={class:"relative flex flex-wrap justify-between gap-2 px-6 pb-4"},Qh={class:"flex flex-wrap gap-2"},Xh={key:0,class:"text-neutral px-6 pt-4 pb-2 text-2xl font-semibold"},Zh={key:0,class:"flex h-64 flex-col items-center justify-center text-neutral-500"},ey={class:"mb-2 text-lg"},ty={class:"text-sm"},oy={key:1},ny={key:0,class:"inline-block h-8 w-48 animate-pulse rounded bg-dialog-surface"},sy={class:"relative h-full w-full overflow-hidden rounded-lg"},ay={class:"flex flex-col gap-2 pt-3"},ly=["title"],iy={class:"flex justify-between gap-2"},ry={class:"flex-1"},uy=["title"],cy={key:0,class:"flex flex-col-reverse justify-center"},dy={key:0,class:"text-sm text-muted"},py={key:3,class:"mt-6 px-6 text-sm text-muted"},fy=H({__name:"WorkflowTemplateSelectorDialog",props:{onClose:{type:Function}},setup(e){const{t:o}=de(),t=E(0),s=E(!1);Le(()=>{t.value=Date.now()});const a=n(()=>{e.onClose()},"onClose");Qo(sn,a);const l=sl(),{loadTemplates:i,loadWorkflowTemplate:r,getTemplateThumbnailUrl:u,getTemplateTitle:p,getTemplateDescription:v}=yl(),h=n(Y=>Y.sourceModule||"default","getEffectiveSourceModule"),d=n(Y=>{const Z=h(Y);return u(Y,Z,Z==="default"?"1":"")},"getBaseThumbnailSrc"),b=n(Y=>{const Z=h(Y);return u(Y,Z,Z==="default"?"2":"")},"getOverlayThumbnailSrc"),y=n(Y=>{Y.tutorialUrl&&window.open(Y.tutorialUrl,"_blank")},"openTutorial"),g=k(()=>Ke.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]"}]}]:l.navGroupedTemplates),c=k(()=>bl()),w=k(()=>l.enhancedTemplates),_=k(()=>oe.value?l.filterTemplatesByCategory(oe.value):w.value),{searchQuery:S,selectedModels:x,selectedUseCases:D,selectedRunsOn:P,sortBy:T,filteredTemplates:$,availableModels:I,availableUseCases:B,availableRunsOn:G,filteredCount:M,totalCount:V,resetFilters:U}=qh(_),R=k({get(){return x.value.map(Y=>({name:Y,value:Y}))},set(Y){x.value=Y.map(Z=>Z.value)}}),j=k({get(){return D.value.map(Y=>({name:Y,value:Y}))},set(Y){D.value=Y.map(Z=>Z.value)}}),q=k({get(){return P.value.map(Y=>({name:Y,value:Y}))},set(Y){P.value=Y.map(Z=>Z.value)}}),K=E(null),ne=E(null),ce=E([]),X=E(0),oe=E("all"),ae=E(""),xe=k(()=>I.value.map(Y=>({name:Y,value:Y}))),Ue=k(()=>B.value.map(Y=>({name:Y,value:Y}))),qe=k(()=>G.value.map(Y=>({name:Y,value:Y}))),nt=k(()=>R.value.length===0?o("templateWorkflows.modelFilter","Model Filter"):R.value.length===1?R.value[0].name:o("templateWorkflows.modelsSelected",{count:R.value.length})),He=k(()=>j.value.length===0?o("templateWorkflows.useCaseFilter","Use Case"):j.value.length===1?j.value[0].name:o("templateWorkflows.useCasesSelected",{count:j.value.length})),Ge=k(()=>q.value.length===0?o("templateWorkflows.runsOnFilter","Runs On"):q.value.length===1?q.value[0].name:o("templateWorkflows.runsOnSelected",{count:q.value.length})),bt=k(()=>[{name:o("templateWorkflows.sort.newest","Newest"),value:"newest"},{name:o("templateWorkflows.sort.default","Default"),value:"default"},{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"}]),rt=E(null),Ft=k(()=>!S.value.trim()),{paginatedItems:Ut,isLoading:xt,hasMoreItems:ut,loadNextPage:It,reset:Mt}=Hh($,{itemsPerPage:24}),ct=k(()=>Ft.value?Ut.value:$.value);pu(rt,()=>{Ft.value&&ut.value&&!xt.value&&It()}),se([S,oe,T,x,D,P],()=>{Mt(),K.value=null,X.value++});const io=n(async Y=>{K.value=Y.name;try{await r(Y.name,h(Y)),s.value=!0,a()}finally{K.value=null}},"onLoadWorkflow"),ro=k(()=>{const Y=g.value.find(Z=>"id"in Z?Z.id===oe.value:Z.items?.some($e=>$e.id===oe.value));return Y?"id"in Y?Y.label:Y.items?.find(Z=>Z.id===oe.value)?.label||o("templateWorkflows.allTemplates","All Templates"):o("templateWorkflows.allTemplates","All Templates")}),{isLoading:Ke}=ca(async()=>(await Promise.all([i(),l.loadWorkflowTemplates()]),!0),!1,{immediate:!0});return gt(()=>{ce.value=[]}),(Y,Z)=>{const $e=Se("tooltip");return m(),F(ns,{"content-title":Y.$t("templateWorkflows.title","Workflow Templates"),class:"workflow-template-selector-dialog"},{leftPanel:L(()=>[W(ss,{modelValue:oe.value,"onUpdate:modelValue":Z[0]||(Z[0]=te=>oe.value=te),"nav-items":g.value},{"header-icon":L(()=>Z[8]||(Z[8]=[f("i",{class:"icon-[comfy--template]"},null,-1)])),"header-title":L(()=>[f("span",Kh,z(Y.$t("sideToolbar.templates","Templates")),1)]),_:1},8,["modelValue","nav-items"])]),header:L(()=>[W(en,{modelValue:C(S),"onUpdate:modelValue":Z[1]||(Z[1]=te=>ft(S)?S.value=te:null),size:"lg",class:"max-w-[384px]"},null,8,["modelValue"])]),"header-right-area":L(()=>[f("div",Jh,[C(M)!==C(V)?(m(),F(ee,{key:0,variant:"secondary",size:"lg",onClick:C(U)},{default:L(()=>[Z[9]||(Z[9]=f("i",{class:"icon-[lucide--filter-x]"},null,-1)),f("span",null,z(Y.$t("templateWorkflows.resetFilters","Clear Filters")),1)]),_:1},8,["onClick"])):O("",!0)])]),contentFilter:L(()=>[f("div",Yh,[f("div",Qh,[W(Vt,{modelValue:R.value,"onUpdate:modelValue":Z[2]||(Z[2]=te=>R.value=te),"search-query":ae.value,"onUpdate:searchQuery":Z[3]||(Z[3]=te=>ae.value=te),class:"w-[250px]",label:nt.value,options:xe.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:L(()=>Z[10]||(Z[10]=[f("i",{class:"icon-[lucide--cpu]"},null,-1)])),_:1},8,["modelValue","search-query","label","options"]),W(Vt,{modelValue:j.value,"onUpdate:modelValue":Z[4]||(Z[4]=te=>j.value=te),label:He.value,options:Ue.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:L(()=>Z[11]||(Z[11]=[f("i",{class:"icon-[lucide--target]"},null,-1)])),_:1},8,["modelValue","label","options"]),W(Vt,{modelValue:q.value,"onUpdate:modelValue":Z[5]||(Z[5]=te=>q.value=te),label:Ge.value,options:qe.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:L(()=>Z[12]||(Z[12]=[f("i",{class:"icon-[lucide--server]"},null,-1)])),_:1},8,["modelValue","label","options"])]),f("div",null,[W(jo,{modelValue:C(T),"onUpdate:modelValue":Z[6]||(Z[6]=te=>ft(T)?T.value=te:null),label:Y.$t("templateWorkflows.sorting","Sort by"),options:bt.value,class:"w-62.5"},{icon:L(()=>Z[13]||(Z[13]=[f("i",{class:"icon-[lucide--arrow-up-down] text-muted-foreground"},null,-1)])),_:1},8,["modelValue","label","options"])])]),C(Ke)?O("",!0):(m(),N("div",Xh,[f("span",null,z(ro.value),1)]))]),content:L(()=>[!C(Ke)&&C($).length===0?(m(),N("div",Zh,[Z[14]||(Z[14]=f("i",{class:"mb-4 icon-[lucide--search] h-12 w-12 opacity-50"},null,-1)),f("p",ey,z(Y.$t("templateWorkflows.noResults","No templates found")),1),f("p",ty,z(Y.$t("templateWorkflows.noResultsHint","Try adjusting your search or filters")),1)])):(m(),N("div",oy,[C(Ke)?(m(),N("span",ny)):O("",!0),(m(),N("div",{key:X.value,style:ve(c.value),"data-testid":"template-workflows-content"},[(m(!0),N(le,null,be(C(Ke)?12:0,te=>(m(),F(Eo,{key:`initial-skeleton-${te}`,size:"compact",variant:"ghost",rounded:"lg",class:"hover:bg-base-background"},{top:L(()=>[W(Vo,{ratio:"landscape"},{default:L(()=>Z[15]||(Z[15]=[f("div",{class:"h-full w-full animate-pulse bg-dialog-surface"},null,-1)])),_:1})]),bottom:L(()=>[W(Lo,null,{default:L(()=>Z[16]||(Z[16]=[f("div",{class:"px-4 py-3"},[f("div",{class:"mb-2 h-6 animate-pulse rounded bg-dialog-surface"}),f("div",{class:"h-4 animate-pulse rounded bg-dialog-surface"})],-1)])),_:1})]),_:2},1024))),128)),(m(!0),N(le,null,be(C(Ke)?[]:ct.value,te=>(m(),F(Eo,{key:te.name,ref_for:!0,ref_key:"cardRefs",ref:ce,size:"compact",variant:"ghost",rounded:"lg","data-testid":`template-workflow-${te.name}`,class:"hover:bg-base-background",onMouseenter:n(Te=>ne.value=te.name,"onMouseenter"),onMouseleave:Z[7]||(Z[7]=Te=>ne.value=null),onClick:n(Te=>io(te),"onClick")},{top:L(()=>[W(Vo,{ratio:"square"},{default:L(()=>[f("div",sy,[te.mediaType==="audio"?(m(),F(Rh,{key:0,src:d(te)},null,8,["src"])):te.thumbnailVariant==="compareSlider"?(m(),F(zh,{key:1,"base-image-src":d(te),"overlay-image-src":b(te),alt:C(p)(te,h(te)),"is-hovered":ne.value===te.name,"is-video":te.mediaType==="video"||te.mediaSubtype==="webp"},null,8,["base-image-src","overlay-image-src","alt","is-hovered","is-video"])):te.thumbnailVariant==="hoverDissolve"?(m(),F(jh,{key:2,"base-image-src":d(te),"overlay-image-src":b(te),alt:C(p)(te,h(te)),"is-hovered":ne.value===te.name,"is-video":te.mediaType==="video"||te.mediaSubtype==="webp"},null,8,["base-image-src","overlay-image-src","alt","is-hovered","is-video"])):(m(),F(Bh,{key:3,src:d(te),alt:C(p)(te,h(te)),"is-hovered":ne.value===te.name,"is-video":te.mediaType==="video"||te.mediaSubtype==="webp","hover-zoom":te.thumbnailVariant==="zoomHover"?16:5},null,8,["src","alt","is-hovered","is-video","hover-zoom"])),K.value===te.name?(m(),F(C(ci),{key:4,class:"absolute inset-0 z-10 m-auto h-12 w-12"})):O("",!0)])]),"bottom-right":L(()=>[te.tags&&te.tags.length>0?(m(!0),N(le,{key:0},be(te.tags,Te=>(m(),F(Oo,{key:Te,label:Te},null,8,["label"]))),128)):O("",!0)]),_:2},1024)]),bottom:L(()=>[W(Lo,null,{default:L(()=>[f("div",ay,[f("h3",{class:"m-0 line-clamp-1 text-sm",title:C(p)(te,h(te))},z(C(p)(te,h(te))),9,ly),f("div",iy,[f("div",ry,[f("p",{class:"m-0 line-clamp-2 text-sm text-muted",title:C(v)(te)},z(C(v)(te)),9,uy)]),te.tutorialUrl?(m(),N("div",cy,[ne.value===te.name?ue((m(),F(ee,$t({key:0,ref_for:!0},Y.$attrs,{variant:"inverted",size:"icon",onClick:ke(Te=>y(te),["stop"])}),{default:L(()=>Z[17]||(Z[17]=[f("i",{class:"icon-[lucide--info] size-4"},null,-1)])),_:2},1040,["onClick"])),[[$e,Y.$t("g.seeTutorial"),void 0,{bottom:!0}]]):O("",!0)])):O("",!0)])])]),_:2},1024)]),_:2},1032,["data-testid","onMouseenter","onClick"]))),128)),(m(!0),N(le,null,be(C(xt)?6:0,te=>(m(),F(Eo,{key:`skeleton-${te}`,size:"compact",variant:"ghost",rounded:"lg",class:"hover:bg-base-background"},{top:L(()=>[W(Vo,{ratio:"square"},{default:L(()=>Z[18]||(Z[18]=[f("div",{class:"h-full w-full animate-pulse bg-dialog-surface"},null,-1)])),_:1})]),bottom:L(()=>[W(Lo,null,{default:L(()=>Z[19]||(Z[19]=[f("div",{class:"px-4 py-3"},[f("div",{class:"mb-2 h-6 animate-pulse rounded bg-dialog-surface"}),f("div",{class:"h-4 animate-pulse rounded bg-dialog-surface"})],-1)])),_:1})]),_:2},1024))),128))],4))])),!C(Ke)&&C(ut)?(m(),N("div",{key:2,ref_key:"loadTrigger",ref:rt,class:"mt-4 flex h-4 w-full items-center justify-center"},[C(xt)?(m(),N("div",dy,z(Y.$t("templateWorkflows.loadingMore","Loading more...")),1)):O("",!0)],512)):O("",!0),C(Ke)?O("",!0):(m(),N("div",py,z(Y.$t("templateWorkflows.resultsCount",{count:C(M),total:C(V)})),1))]),_:1},8,["content-title"])}}}),Xs="global-workflow-template-selector",ds=n(()=>{const e=et(),o=ht();function t(){o.closeDialog({key:Xs})}n(t,"hide");function s(a="command"){e.showLayoutDialog({key:Xs,component:fy,props:{onClose:t},dialogComponentProps:{pt:{content:{class:"!px-0 overflow-hidden h-full !py-0"},root:{style:"width: 90vw; height: 85vh; max-width: 1400px; display: flex;"}}}})}return n(s,"show"),{show:s,hide:t}},"useWorkflowTemplateSelectorDialog"),An=n((e,o,t=30)=>{const s=e instanceof HTMLElement?e:e.target;let a=0;const l=setInterval(()=>{o(a++)},t),i=n(()=>{clearInterval(l),r(),u()},"dispose"),r=Ae(document,"mouseup",i),u=Ae(s,"mouseup",i);return{dispose:i}},"whileMouseDown"),my={class:"flex h-8 w-8 items-center justify-center rounded-lg bg-black"},vy=["href","onMousedown","onClick"],gy={class:"p-menubar-item-label text-nowrap"},hy={key:3,class:"keybinding-tag ml-auto rounded border border-surface p-1 text-xs text-nowrap text-muted"},yy={key:4,class:"pi pi-angle-right ml-auto"},by={class:"p-menubar-item-label text-nowrap"},wy=H({__name:"ComfyMenuButton",setup(e){const{t:o}=de(),t=Ce(),s=Ga(),a=it(),l=ja(),i=ht(),r=pt(),u=ie(),p=E(null),v=k({get:n(()=>u.get("Comfy.VueNodes.Enabled")??!1,"get"),set:n(async I=>{await u.set("Comfy.VueNodes.Enabled",I)},"set")});function h(I){p.value?.toggle(I)}n(h,"onLogoMenuClick");const d=n(I=>{const B=typeof I.label=="function"?I.label():I.label,G=B?o(`menuLabels.${Re(B)}`,B):void 0;return{...I,label:G,items:I.items?.map(d)}},"translateMenuItem"),b=n(I=>{i.showDialog({key:"global-settings",headerComponent:pr,component:dr,props:{defaultPanel:I}})},"showSettings"),y=n(async()=>{await r.openManager({initialTab:Jt.All,showToastOnLegacyError:!1})},"showManageExtensions"),g=k(()=>a.palettes.map(I=>({key:`theme-${I.id}`,label:I.name,parentPath:"theme",comfyCommand:{active:n(()=>a.activePaletteId===I.id,"active")},command:n(async()=>{await l.loadColorPalette(I.id)},"command")}))),c=k(()=>[{separator:!0},{key:"theme",label:o("menu.theme"),items:g.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(()=>ds().show("menu"),"command")},{key:"settings",label:o("g.settings"),icon:"mdi mdi-cog-outline",command:n(()=>{b()},"command")},{key:"manage-extensions",label:o("menu.manageExtensions"),icon:"mdi mdi-puzzle-outline",command:y}]),w=k(()=>{const I=s.menuItems.map(d);let B=I.findIndex(M=>M.key==="Help"),G;if(B!==-1){I[B].icon="mdi mdi-help-circle-outline";const M=B!==I.length-1;G=I.splice(B,1,...M?[{separator:!0}]:[])[0]}return B=I.length,I.splice(B,0,...c.value,...G?[{separator:!0},G]:[]),I}),_=n(()=>{Oe(()=>{p.value&&(p.value.dirty=!0)})},"onMenuShow"),S=n(I=>I.comfyCommand?.id==="Comfy.Canvas.ZoomIn"||I.comfyCommand?.id==="Comfy.Canvas.ZoomOut","isZoomCommand"),x=n((I,B)=>{I.comfyCommand&&An(B,async()=>{await t.execute(I.comfyCommand.id)},50)},"handleZoomMouseDown"),D=n((I,B)=>{if(S(I)||I.comfyCommand?.active)return B.preventDefault(),B.stopPropagation(),I.comfyCommand?.active&&I.command?.({item:I,originalEvent:B}),!1},"handleItemClick"),P=n(I=>I.parentPath&&(I.parentPath==="theme"||s.menuItemHasActiveStateChildren[I.parentPath]),"hasActiveStateSiblings"),T=n(()=>!1,"handleNodes2ToggleClick"),$=n(async I=>{await u.set("Comfy.VueNodes.Enabled",I)},"onNodes2ToggleChange");return(I,B)=>{const G=Se("tooltip");return m(),N(le,null,[ue((m(),N("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":p.value?.visible}]),onClick:B[0]||(B[0]=M=>h(M))},[f("div",my,[W(Dh,{alt:"ComfyUI Logo",class:"comfyui-logo h-[18px] w-[18px] text-white",mode:"fill"})])],2)),[[G,{value:C(o)("sideToolbar.labels.menu"),showDelay:300,hideDelay:300}]]),W(C(di),{ref_key:"menuRef",ref:p,model:w.value,popup:!0,class:"comfy-command-menu",onShow:_},{item:L(({item:M,props:V})=>[M.key!=="nodes-2.0-toggle"?(m(),N("a",$t({key:0,class:"p-menubar-item-link px-4 py-2"},V.action,{href:M.url,target:"_blank",class:typeof M.class=="function"?M.class():M.class,onMousedown:n(U=>S(M)?x(M,U):void 0,"onMousedown"),onClick:n(U=>D(M,U),"onClick")}),[P(M)?(m(),N("i",{key:0,class:Q(["p-menubar-item-icon pi pi-check text-sm",{invisible:!M.comfyCommand?.active?.()}])},null,2)):M.icon&&M.comfyCommand?.id!=="Comfy.NewBlankWorkflow"?(m(),N("span",{key:1,class:Q(["p-menubar-item-icon text-sm",M.icon])},null,2)):O("",!0),f("span",gy,z(M.label),1),M.comfyCommand?.id==="Comfy.NewBlankWorkflow"?(m(),N("i",{key:2,class:Q(["ml-auto",M.icon])},null,2)):O("",!0),M?.comfyCommand?.keybinding?(m(),N("span",hy,z(M.comfyCommand.keybinding.combo.toString()),1)):O("",!0),M.items?(m(),N("i",yy)):O("",!0)],16,vy)):(m(),N("div",{key:1,class:"flex items-center justify-between px-4 py-2",onClick:ke(T,["stop"])},[f("span",by,z(M.label),1),W(C(Kt),{severity:"info",class:"ml-2 text-xs"},{default:L(()=>[_e(z(I.$t("g.beta")),1)]),_:1}),W(C(Pa),{modelValue:v.value,"onUpdate:modelValue":[B[1]||(B[1]=U=>v.value=U),$],class:"ml-4","aria-label":M.label,pt:{root:{style:{width:"38px",height:"20px"}},handle:{style:{width:"16px",height:"16px"}}},onClick:B[2]||(B[2]=ke(()=>{},["stop"]))},null,8,["modelValue","aria-label"])]))]),_:1},8,["model"])],64)}}}),ky=De(wy,[["__scopeId","data-v-7f8c3b49"]]),Cy={class:"side-bar-button-content"},Sy={key:0,class:"side-bar-button-label"},xy=H({__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(),s=o,a=k(()=>typeof e.iconBadge=="function"?e.iconBadge()??"":e.iconBadge),l=k(()=>!!a.value),i=k(()=>t(e.tooltip)+e.tooltipSuffix);return(r,u)=>{const p=Se("tooltip");return ue((m(),F(ee,{class:Q(C(pe)("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]=v=>s("click",v))},{default:L(()=>[f("div",Cy,[Ne(r.$slots,"icon",{},()=>[l.value?(m(),F(C(pi),{key:0,value:a.value},{default:L(()=>[typeof r.icon=="string"?(m(),N("i",{key:0,class:Q(r.icon+" side-bar-button-icon")},null,2)):(m(),F(Qt(r.icon),{key:1,class:"side-bar-button-icon"}))]),_:1},8,["value"])):typeof r.icon=="string"?(m(),N("i",{key:1,class:Q(r.icon+" side-bar-button-icon")},null,2)):typeof r.icon=="object"?(m(),F(Qt(r.icon),{key:2,class:"side-bar-button-icon"})):O("",!0)],!0),r.label&&!r.isSmall?(m(),N("span",Sy,z(C(t)(r.label)),1)):O("",!0)])]),_:3},8,["class","aria-label"])),[[p,{value:i.value,showDelay:300,hideDelay:300}]])}}}),Bt=De(xy,[["__scopeId","data-v-bbb98ec9"]]),_y=H({__name:"SidebarBottomPanelToggleButton",setup(e){const o=oo(),t=n(()=>{o.toggleBottomPanel()},"toggleConsole");return(s,a)=>(m(),F(Bt,{icon:"icon-[ph--terminal-bold]",label:s.$t("sideToolbar.labels.console"),tooltip:s.$t("menu.toggleBottomPanel"),selected:C(o).activePanel=="terminal",onClick:t},null,8,["label","tooltip","selected"]))}}),Ty=H({__name:"SidebarSettingsButton",setup(e){const{t:o}=de(),{getCommand:t,formatKeySequence:s}=Ce(),a=t("Comfy.ShowSettingsDialog"),l=k(()=>`${o("g.settings")} (${s(a)})`),i=n(()=>{a.function()},"showSettingsDialog");return(r,u)=>(m(),F(Bt,{icon:"icon-[lucide--settings]",label:r.$t("g.settings"),tooltip:l.value,onClick:i},null,8,["label","tooltip"]))}}),Ny=H({__name:"SidebarShortcutsToggleButton",setup(e){const{t:o}=de(),t=oo(),s=Ce(),a=s.getCommand("Workspace.ToggleBottomPanel.Shortcuts"),{formatKeySequence:l}=s,i=k(()=>t.activePanel==="shortcuts"),r=k(()=>`${o("shortcuts.keyboardShortcuts")} (${l(a)})`),u=n(()=>{t.togglePanel("shortcuts")},"toggleShortcutsPanel");return(p,v)=>(m(),F(Bt,{icon:"icon-[lucide--keyboard]",label:p.$t("shortcuts.shortcuts"),tooltip:r.value,selected:i.value,onClick:u},null,8,["label","tooltip","selected"]))}}),$y=["width","height"],Iy={"clip-path":"url(#clip0_1099_16244)"},My=["stroke"],Py=H({__name:"PuzzleIcon",props:{size:{default:16},color:{default:"currentColor"},class:{}},setup(e){const o=k(()=>e.class||"");return(t,s)=>(m(),N("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)},[f("g",Iy,[f("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,My)]),s[0]||(s[0]=f("defs",null,[f("clipPath",{id:"clip0_1099_16244"},[f("rect",{width:"16",height:"16",fill:"white"})])],-1))],10,$y))}}),Zs=ya.create({baseURL:Ha(),headers:{"Content-Type":"application/json"}}),Dy=n(()=>{const e=E(!1),o=E(null);se(()=>Ha(),l=>{Zs.defaults.baseURL=l});const t=n((l,i,r)=>{if(!ya.isAxiosError(l))return l instanceof Error?`${i}: ${l.message}`:`${i}: Unknown error occurred`;const u=l;if(u.response){const{status:p,data:v}=u.response;if(r&&r[p])return r[p];switch(p){case 400:return`Bad request: ${v?.message||"Invalid input"}`;case 401:return"Unauthorized: Authentication required";case 403:return`Forbidden: ${v?.message||"Access denied"}`;case 404:return`Not found: ${v?.message||"Resource not found"}`;case 500:return`Server error: ${v?.message||"Internal server error"}`;default:return`${i}: ${v?.message||u.message}`}}return`${i}: ${u.message}`},"handleApiError"),s=n(async(l,i,r)=>{e.value=!0,o.value=null;try{return(await l()).data}catch(u){return fr(u)||(o.value=t(u,i,r)),null}finally{e.value=!1}},"executeApiRequest");return{isLoading:e,error:o,getReleases:n(async(l,i)=>{const r="/releases";return await s(()=>Zs.get(r,{params:l,signal:i}),"Failed to get releases",{400:"Invalid project or version parameter"})},"getReleases")}},"useReleaseService"),So=Ot("release",()=>{const e=E([]),o=E(!1),t=E(null),s=Dy(),a=qa(),l=ie(),i=k(()=>a?.systemStats?.system?.comfyui_version??""),r=k(()=>l.get("Comfy.Locale")),u=k(()=>l.get("Comfy.Release.Version")),p=k(()=>l.get("Comfy.Release.Status")),v=k(()=>l.get("Comfy.Release.Timestamp")),h=k(()=>l.get("Comfy.Notification.ShowVersionUpdates")),d=k(()=>e.value[0]??null),b=k(()=>e.value.slice(0,3)),y=4320*60*1e3,g=n((G,M)=>At.valid(G)&&At.valid(M)?At.compare(G,M):G===M?0:1,"compareVersions"),c=k(()=>!!d.value&&g(d.value.version,i.value||"0.0.0")>0),w=k(()=>!!d.value&&g(d.value.version,i.value||"0.0.0")===0),_=k(()=>{const G=d.value?.attention;return G==="medium"||G==="high"}),S=k(()=>!(!Be()||mt||!h.value||!c.value||!_.value||u.value===d.value?.version&&["skipped","changelog seen"].includes(p.value))),x=k(()=>{if(!Be()||mt||!h.value||!c.value)return!1;const{version:G}=d.value;return u.value===G&&p.value==="changelog seen"?!1:_.value?!0:!(u.value===G&&p.value==="skipped"&&v.value&&Date.now()-v.value>=y)}),D=k(()=>!(!Be()&&!mt||!h.value||!d.value||!!At.valid(i.value)&&!w.value||u.value===d.value.version&&p.value==="what's new seen"));async function P(G){G!==d.value?.version||p.value==="changelog seen"||(await l.set("Comfy.Release.Version",G),await l.set("Comfy.Release.Status","skipped"),await l.set("Comfy.Release.Timestamp",Date.now()))}n(P,"handleSkipRelease");async function T(G){G===d.value?.version&&(await l.set("Comfy.Release.Version",G),await l.set("Comfy.Release.Status","changelog seen"),await l.set("Comfy.Release.Timestamp",Date.now()))}n(T,"handleShowChangelog");async function $(G){G===d.value?.version&&(await l.set("Comfy.Release.Version",G),await l.set("Comfy.Release.Status","what's new seen"),await l.set("Comfy.Release.Timestamp",Date.now()))}n($,"handleWhatsNewSeen");async function I(){if(!o.value&&h.value&&!a.systemStats?.system?.argv?.includes("--disable-api-nodes")){o.value=!0,t.value=null;try{a.systemStats||await ba(a.isInitialized);const G=await s.getReleases({project:mt?"cloud":"comfyui",current_version:i.value,form_factor:a.getFormFactor(),locale:mr(r.value)});G!==null?e.value=G:s.error.value&&(t.value=s.error.value)}catch(G){t.value=G instanceof Error?G.message:"Unknown error occurred"}finally{o.value=!1}}}n(I,"fetchReleases");async function B(){await I()}return n(B,"initialize"),{releases:e,isLoading:o,error:t,recentRelease:d,recentReleases:b,shouldShowToast:S,shouldShowRedDot:x,shouldShowPopup:D,shouldShowUpdateButton:c,handleSkipRelease:P,handleShowChangelog:T,handleWhatsNewSeen:$,fetchReleases:I,initialize:B}}),Ay=Object.freeze(Object.defineProperty({__proto__:null,useReleaseStore:So},Symbol.toStringTag,{value:"Module"})),Ey=["aria-label"],Ly={class:"w-full"},Vy={class:"flex w-full flex-col gap-2",role:"menubar"},Oy=["onClick","onMouseenter","onMouseleave"],Ry={class:"help-menu-icon-container"},Wy={class:"help-menu-icon"},zy={key:0,class:"menu-red-dot"},By={class:"menu-label"},Fy={key:0,class:"icon-[lucide--external-link] text-primary w-4 h-4 ml-auto"},Uy={key:1,class:"pi pi-chevron-right ml-auto"},Gy={key:0,class:"submenu-divider"},jy=["onClick"],Hy={class:"menu-label"},qy={key:0,class:"w-full","data-testid":"whats-new-section"},Ky={class:"section-description flex items-center gap-2.5 self-stretch px-8 pt-2 pb-2"},Jy=["aria-label"],Yy=["onClick","onKeydown"],Qy={class:"release-content"},Xy={class:"release-title"},Zy=["datetime"],eb={class:"normal-state"},tb={class:"hover-state"},ob={key:1,class:"help-menu-item",role:"status","aria-live":"polite"},nb={key:2,class:"help-menu-item",role:"status"},sb=H({__name:"HelpCenterMenuContent",emits:["close"],setup(e,{emit:o}){const t={MINUTE:6e4,HOUR:36e5,DAY:864e5,WEEK:6048e5,MONTH:2592e6,YEAR:31536e6},s={DELAY_MS:100,OFFSET_PX:8,Z_INDEX:10001},{t:a}=de(),l=Rt(),{staticUrls:i,buildDocsUrl:r}=so(),u=So(),p=Ce(),v=ie(),h=E(Date.now()),d=o,b=E(!1),y=E(null),g=E({});let c=null;const w=k(()=>u.releases.length>0),_=k(()=>v.get("Comfy.Notification.ShowVersionUpdates")),{shouldShowRedDot:S}=Ka(),{isNewManagerUI:x}=pt(),D=k(()=>[{key:"desktop-guide",type:"item",label:a("helpCenter.desktopUserGuide"),visible:Be(),action:n(()=>{I(r("/installation/desktop",{includeLocale:!0,platform:!0})),d("close")},"action")},{key:"dev-tools",type:"item",label:a("helpCenter.openDevTools"),visible:Be(),action:n(()=>{q(),d("close")},"action")},{key:"divider-1",type:"divider",visible:Be()},{key:"reinstall",type:"item",label:a("helpCenter.reinstall"),visible:Be(),action:n(()=>{K(),d("close")},"action")}].filter(oe=>oe.visible!==!1)),P=k(()=>!!D.value.length),T=k(()=>$.value.find(X=>X.key==="more")),$=k(()=>{const X=[{key:"feedback",type:"item",icon:"icon-[lucide--clipboard-pen]",label:a("helpCenter.feedback"),action:n(()=>{p.execute("Comfy.ContactSupport"),d("close")},"action")},{key:"help",type:"item",icon:"icon-[lucide--message-circle-question]",label:a("helpCenter.help"),action:n(()=>{p.execute("Comfy.ContactSupport"),d("close")},"action")},{key:"docs",type:"item",icon:"icon-[lucide--book-open]",label:a("helpCenter.docs"),showExternalIcon:!0,action:n(()=>{I(r("/",{includeLocale:!0})),d("close")},"action")},{key:"discord",type:"item",icon:"pi pi-discord",label:"Discord",showExternalIcon:!0,action:n(()=>{I(i.discord),d("close")},"action")},{key:"github",type:"item",icon:"icon-[lucide--github]",label:a("helpCenter.github"),showExternalIcon:!0,action:n(()=>{I(i.github),d("close")},"action")}];return X.push({key:"manager",type:"item",icon:Py,label:a("helpCenter.managerExtension"),showRedDot:S.value,action:n(async()=>{await pt().openManager({initialTab:Jt.All,showToastOnLegacyError:!1}),d("close")},"action")}),!Be()&&!mt&&x.value&&X.push({key:"update-comfyui",type:"item",icon:"icon-[lucide--download]",label:a("helpCenter.updateComfyUI"),action:n(()=>{ne(),d("close")},"action")}),X.push({key:"more",type:"item",icon:"",label:a("helpCenter.more"),visible:P.value,action:n(()=>{},"action"),items:D.value}),X}),I=n(X=>{window.open(X,"_blank","noopener,noreferrer")},"openExternalLink"),B=n(()=>{c&&(clearTimeout(c),c=null)},"clearHoverTimeout"),G=n(X=>{const oe=X.getBoundingClientRect(),ae=210,Ue=(T.value?.items?.filter(rt=>rt.visible!==!1).length||0)*48+16,qe=y.value?.offsetHeight||Ue,nt=window.innerWidth,He=window.innerHeight;let Ge=oe.top,bt=oe.right+s.OFFSET_PX;return bt+ae>nt&&(bt=oe.left-ae-s.OFFSET_PX),Ge+qe>He&&(Ge=Math.max(s.OFFSET_PX,oe.bottom-qe)),Ge<s.OFFSET_PX&&(Ge=s.OFFSET_PX),Ge-=8,{position:"fixed",top:`${Ge}px`,left:`${bt}px`,zIndex:s.Z_INDEX}},"calculateSubmenuPosition"),M=n(X=>{if(!X)return"date";const oe=new Date(X),xe=Math.abs(new Date().getTime()-oe.getTime()),Ue=[{unit:t.YEAR,key:"yearsAgo"},{unit:t.MONTH,key:"monthsAgo"},{unit:t.WEEK,key:"weeksAgo"},{unit:t.DAY,key:"daysAgo"},{unit:t.HOUR,key:"hoursAgo"},{unit:t.MINUTE,key:"minutesAgo"}];for(const{unit:qe,key:nt}of Ue){const He=Math.floor(xe/qe);if(He>0)return a(`g.relativeTime.${nt}`,{count:He})}return a("g.relativeTime.now")},"formatReleaseDate"),V=n(async(X,oe)=>{if(X!=="more"||!T.value?.items||!T.value.items.some(Ue=>Ue.visible!==!1))return;B();const xe=oe.currentTarget;g.value=G(xe),b.value=!0,await Oe(),y.value&&(g.value=G(xe))},"onMenuItemHover"),U=n(X=>{X==="more"&&(c=window.setTimeout(()=>{b.value=!1},s.DELAY_MS))},"onMenuItemLeave"),R=n(()=>{B()},"onSubmenuHover"),j=n(()=>{b.value=!1},"onSubmenuLeave"),q=n(()=>{Be()&&mo().openDevTools()},"openDevTools"),K=n(()=>{Be()&&mo().reinstall()},"onReinstall"),ne=n(async()=>{const{updateComfyUI:X,rebootComfyUI:oe,error:ae}=vr();l.add({severity:"info",summary:a("helpCenter.updateComfyUIStarted"),detail:a("helpCenter.updateComfyUIStartedDetail"),life:3e3});try{if(await X({is_stable:!0})===null||ae.value){l.add({severity:"error",summary:a("g.error"),detail:ae.value||a("helpCenter.updateComfyUIFailed"),life:5e3});return}l.add({severity:"success",summary:a("helpCenter.updateComfyUISuccess"),detail:a("helpCenter.updateComfyUISuccessDetail"),life:3e3}),await oe()}catch(xe){l.add({severity:"error",summary:a("g.error"),detail:xe instanceof Error?xe.message:a("g.unknownError"),life:5e3})}},"onUpdateComfyUI"),ce=n(X=>{u.handleShowChangelog(X.version);const oe=ts(X.version),ae=`${r("/changelog",{includeLocale:!0})}#${oe}`;I(ae),d("close")},"onReleaseClick");return Le(async()=>{w.value||await u.fetchReleases()}),gt(()=>{Math.round((Date.now()-h.value)/1e3)}),(X,oe)=>(m(),N("div",{class:"help-center-menu flex flex-col items-start gap-1",role:"menu","aria-label":X.$t("help.helpCenterMenu")},[f("div",Ly,[f("nav",Vy,[(m(!0),N(le,null,be($.value,ae=>ue((m(),N("button",{key:ae.key,type:"button",class:Q(["help-menu-item",{"more-item":ae.key==="more"}]),role:"menuitem",onClick:ae.action,onMouseenter:n(xe=>V(ae.key,xe),"onMouseenter"),onMouseleave:n(xe=>U(ae.key),"onMouseleave")},[f("div",Ry,[f("div",Wy,[typeof ae.icon=="object"?(m(),F(Qt(ae.icon),{key:0,size:16})):(m(),N("i",{key:1,class:Q(ae.icon)},null,2))]),ae.showRedDot?(m(),N("div",zy)):O("",!0)]),f("span",By,z(ae.label),1),ae.showExternalIcon?(m(),N("i",Fy)):O("",!0),ae.key==="more"?(m(),N("i",Uy)):O("",!0)],42,Oy)),[[Ye,ae.visible!==!1]])),128))]),oe[0]||(oe[0]=f("div",{class:"flex h-4 flex-col items-center justify-between self-stretch p-2"},[f("div",{class:"w-full border-b border-interface-menu-stroke"})],-1))]),(m(),F(Dt,{to:"body"},[b.value?(m(),N("div",{key:0,ref_key:"submenuRef",ref:y,class:"more-submenu",style:ve(g.value),onMouseenter:R,onMouseleave:j},[(m(!0),N(le,null,be(T.value?.items,ae=>(m(),N(le,{key:ae.key},[ae.type==="divider"?ue((m(),N("div",Gy,null,512)),[[Ye,ae.visible!==!1]]):ue((m(),N("button",{key:1,type:"button",class:"help-menu-item submenu-item",role:"menuitem",onClick:ae.action},[f("span",Hy,z(ae.label),1)],8,jy)),[[Ye,ae.visible!==!1]])],64))),128))],36)):O("",!0)])),_.value?(m(),N("section",qy,[f("h3",Ky,z(X.$t("helpCenter.whatsNew")),1),w.value?(m(),N("div",{key:0,role:"group","aria-label":X.$t("help.recentReleases")},[(m(!0),N(le,null,be(C(u).recentReleases,ae=>(m(),N("article",{key:ae.id||ae.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(xe=>ce(ae),"onClick"),onKeydown:[Yt(xe=>ce(ae),["enter"]),Yt(ke(xe=>ce(ae),["prevent"]),["space"])]},[oe[1]||(oe[1]=f("i",{class:"help-menu-icon icon-[lucide--package]","aria-hidden":"true"},null,-1)),f("div",Qy,[f("span",Xy,z(X.$t("g.releaseTitle",{package:"Comfy",version:ae.version})),1),f("time",{class:"release-date",datetime:ae.published_at},[f("span",eb,z(M(ae.published_at)),1),f("span",tb,z(X.$t("helpCenter.clickToLearnMore")),1)],8,Zy)])],40,Yy))),128))],8,Jy)):C(u).isLoading?(m(),N("div",ob,[oe[2]||(oe[2]=f("i",{class:"pi pi-spin pi-spinner help-menu-icon","aria-hidden":"true"},null,-1)),f("span",null,z(X.$t("helpCenter.loadingReleases")),1)])):(m(),N("div",nb,[oe[3]||(oe[3]=f("i",{class:"pi pi-info-circle help-menu-icon","aria-hidden":"true"},null,-1)),f("span",null,z(X.$t("helpCenter.noRecentReleases")),1)]))])):O("",!0)],8,Ey))}}),ab=De(sb,[["__scopeId","data-v-8ecd06e2"]]),lb={key:0,class:"release-toast-popup"},ib={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"},rb={class:"p-4 flex flex-col gap-4 flex-1 min-h-0"},ub={class:"flex items-center gap-4"},cb={class:"flex flex-col gap-1"},db={class:"text-sm font-normal text-base-foreground leading-[1.429]"},pb={class:"text-sm font-normal text-muted-foreground leading-[1.21]"},fb=["innerHTML"],mb={class:"flex justify-between items-center px-4 pb-4"},vb=["href"],gb={class:"flex items-center gap-4"},hb=H({__name:"ReleaseNotificationToast",setup(e,{expose:o}){const{buildDocsUrl:t}=so(),{toastErrorHandler:s}=Wt(),a=So(),{t:l}=de(),i=E(!1),r=k(()=>a.recentRelease),u=k(()=>a.shouldShowToast&&!i.value),p=k(()=>{const _=t("/changelog",{includeLocale:!0});if(r.value?.version){const S=ts(r.value.version);return`${_}#${S}`}return _}),v=k(()=>{if(!r.value?.content)return Ct.sanitize(`<p>${l("releaseToast.description")}</p>`);try{const x=r.value.content.replace(/^# .+$/m,"").replace(/!\[.*?\]\(.*?\)/g,""),D=x.trim();return!D||D.replace(/\s+/g,"")===""?Ct.sanitize(`<p>${l("releaseToast.description")}</p>`):Ja(x)}catch(_){console.error("Error parsing markdown:",_);const S=r.value.content.replace(/\n/g,"<br>");return S.trim()?Ct.sanitize(S):Ct.sanitize(`<p>${l("releaseToast.description")}</p>`)}});let h=null;const d=n(()=>{h&&clearTimeout(h),h=setTimeout(()=>{y()},8e3)},"startAutoHide"),b=n(()=>{h&&(clearTimeout(h),h=null)},"clearAutoHide"),y=n(()=>{i.value=!0,b()},"dismissToast"),g=n(()=>{r.value&&a.handleSkipRelease(r.value.version),y()},"handleSkip"),c=n(()=>{r.value&&a.handleShowChangelog(r.value.version),y()},"handleLearnMore"),w=n(async()=>{if(Be()){try{await Ce().execute("Comfy-Desktop.CheckForUpdates"),y()}catch(_){s(_)}return}window.open(t("/installation/update_comfyui",{includeLocale:!0}),"_blank"),y()},"handleUpdate");return se(u,_=>{_?d():b()}),Le(async()=>{a.releases.length||await a.fetchReleases()}),o({handleSkip:g,handleLearnMore:c,handleUpdate:w}),(_,S)=>u.value?(m(),N("div",lb,[f("div",ib,[f("div",rb,[f("div",ub,[S[0]||(S[0]=f("div",{class:"p-3 bg-primary-background-hover rounded-lg flex items-center justify-center shrink-0"},[f("i",{class:"icon-[lucide--rocket] w-4 h-4 text-white"})],-1)),f("div",cb,[f("div",db,z(_.$t("releaseToast.newVersionAvailable")),1),f("div",pb,z(r.value?.version),1)])]),f("div",{class:"pl-14 text-sm font-normal text-muted-foreground leading-[1.21] overflow-y-auto flex-1 min-h-0",innerHTML:v.value},null,8,fb)]),f("div",mb,[f("a",{class:"flex items-center gap-2 text-sm font-normal py-1 text-muted-foreground hover:text-base-foreground",href:p.value,target:"_blank",rel:"noopener noreferrer",onClick:c},[S[1]||(S[1]=f("i",{class:"icon-[lucide--external-link] w-4 h-4"},null,-1)),_e(" "+z(_.$t("releaseToast.whatsNew")),1)],8,vb),f("div",gb,[f("button",{class:"h-6 px-0 bg-transparent border-none text-sm font-normal text-muted-foreground hover:text-base-foreground cursor-pointer",onClick:g},z(_.$t("releaseToast.skip")),1),f("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:w},z(_.$t("releaseToast.update")),1)])])])])):O("",!0)}}),yb=De(hb,[["__scopeId","data-v-ba02c61a"]]),bb={key:0,class:"whats-new-popup-container left-4"},wb={class:"modal-body flex flex-col gap-4 px-0 pt-0 pb-2 flex-1"},kb=["innerHTML"],Cb={class:"modal-footer flex justify-between items-center gap-4 px-4 pb-4"},Sb=["href"],xb={class:"footer-actions flex items-center gap-4"},_b=H({__name:"WhatsNewPopup",emits:["whats-new-dismissed"],setup(e,{expose:o,emit:t}){const{buildDocsUrl:s}=so(),a=So(),{t:l}=de(),i=t,r=E(!1),u=k(()=>a.recentRelease),p=k(()=>a.shouldShowPopup&&!r.value),v=k(()=>{const g=s("/changelog",{includeLocale:!0});if(u.value?.version){const c=ts(u.value.version);return`${g}#${c}`}return g}),h=k(()=>{if(!u.value?.content)return Ct.sanitize(`<p>${l("whatsNewPopup.noReleaseNotes")}</p>`);try{const g=u.value.content,c=g.trim();if(!c||c.replace(/\s+/g,"")==="")return Ct.sanitize(`<p>${l("whatsNewPopup.noReleaseNotes")}</p>`);const w=g.match(/!\[.*?\]\(.*?\)/),_=w?w[0]:"",S=g.replace(/!\[.*?\]\(.*?\)/,"").trim(),x=[_,S].filter(Boolean).join(`
9
9
 
10
10
  `);return Ja(x)}catch(g){console.error("Error parsing markdown:",g);const c=u.value.content.replace(/\n/g,"<br>");return c.trim()?Ct.sanitize(c):Ct.sanitize(`<p>${l("whatsNewPopup.noReleaseNotes")}</p>`)}}),d=n(()=>{r.value=!1},"show"),b=n(()=>{r.value=!0,i("whats-new-dismissed")},"hide"),y=n(async()=>{u.value&&await a.handleWhatsNewSeen(u.value.version),b()},"closePopup");return Le(async()=>{a.releases.length||await a.fetchReleases()}),o({show:d,hide:b,closePopup:y}),(g,c)=>p.value?(m(),N("div",bb,[f("div",{class:"whats-new-popup",onClick:c[0]||(c[0]=ke(()=>{},["stop"]))},[W(ee,{class:"close-button absolute top-2 right-2 z-10 w-8 h-8 p-2 rounded-lg opacity-50","aria-label":g.$t("g.close"),size:"icon-sm",variant:"muted-textonly",onClick:y},{default:L(()=>c[1]||(c[1]=[f("i",{class:"icon-[lucide--x]"},null,-1)])),_:1},8,["aria-label"]),f("div",wb,[f("div",{class:"content-text max-h-96 overflow-y-auto",innerHTML:h.value},null,8,kb)]),f("div",Cb,[f("a",{class:"learn-more-link flex items-center gap-2 text-sm font-normal py-1",href:v.value,target:"_blank",rel:"noopener noreferrer",onClick:y},[c[2]||(c[2]=f("i",{class:"icon-[lucide--external-link]"},null,-1)),_e(" "+z(g.$t("whatsNewPopup.learnMore")),1)],8,Sb),f("div",xb,[W(ee,{class:"h-8",size:"sm",variant:"muted-textonly",onClick:y},{default:L(()=>[_e(z(g.$t("whatsNewPopup.later")),1)]),_:1})])])])])):O("",!0)}}),Tb=De(_b,[["__scopeId","data-v-98a9f324"]]),En=Ot("helpCenter",()=>{const e=E(!1);return{isVisible:e,toggle:n(()=>{e.value=!e.value},"toggle"),show:n(()=>{e.value=!0},"show"),hide:n(()=>{e.value=!1},"hide")}}),Nb=H({__name:"SidebarHelpCenterIcon",props:{isSmall:{type:Boolean}},setup(e){const o=ie(),t=So(),s=En(),{isVisible:a}=Fe(s),{shouldShowRedDot:l}=Fe(t),i=gr(),{showNodeConflictDialog:r}=et(),{shouldShowRedDot:u,markConflictsAsSeen:p}=Ka(),v=e,{isSmall:h}=wa(v),d=k(()=>l.value||u.value),b=k(()=>o.get("Comfy.Sidebar.Location")),y=n(()=>{s.toggle()},"toggleHelpCenter"),g=n(()=>{s.hide()},"closeHelpCenter"),c=n(async()=>{try{await i.shouldShowConflictModalAfterUpdate()&&w()}catch(_){console.error("[HelpCenter] Error checking conflict modal:",_)}},"handleWhatsNewDismissed"),w=n(()=>{r({showAfterWhatsNew:!0,dialogComponentProps:{onClose:n(()=>{p()},"onClose")}})},"showConflictModal");return Le(async()=>{await t.initialize()}),(_,S)=>(m(),N("div",null,[W(Bt,{icon:"pi pi-question-circle",class:"comfy-help-center-btn",label:_.$t("menu.help"),tooltip:_.$t("sideToolbar.helpCenter"),"icon-badge":d.value?"•":"","is-small":C(h),onClick:y},null,8,["label","tooltip","icon-badge","is-small"]),(m(),F(Dt,{to:"#graph-canvas-container"},[C(a)?(m(),N("div",{key:0,class:Q(["help-center-popup",{"sidebar-left":b.value==="left","sidebar-right":b.value==="right","small-sidebar":C(h)}])},[W(ab,{onClose:g})],2)):O("",!0)])),(m(),F(Dt,{to:"#graph-canvas-container"},[W(yb,{class:Q({"sidebar-left":b.value==="left","sidebar-right":b.value==="right","small-sidebar":C(h)})},null,8,["class"])])),(m(),F(Dt,{to:"#graph-canvas-container"},[W(Tb,{class:Q({"sidebar-left":b.value==="left","sidebar-right":b.value==="right","small-sidebar":C(h)}),onWhatsNewDismissed:c},null,8,["class"])])),(m(),F(Dt,{to:"body"},[C(a)?(m(),N("div",{key:0,class:"help-center-backdrop",onClick:g})):O("",!0)]))]))}}),$b=De(Nb,[["__scopeId","data-v-91ae5559"]]),Ib=H({__name:"SidebarLogoutIcon",setup(e){const{t:o}=de(),t=Ya(),s=k(()=>`${o("sideToolbar.logout")} (${t.currentUser?.username})`),a=n(async()=>{await t.logout(),window.location.reload()},"logout");return(l,i)=>(m(),F(Bt,{icon:"pi pi-sign-out",tooltip:s.value,label:l.$t("sideToolbar.logout"),onClick:a},null,8,["tooltip","label"]))}}),Mb=H({__name:"SidebarTemplatesButton",setup(e){const o=ie(),t=k(()=>o.get("Comfy.Sidebar.Size")==="small"),s=n(()=>{ds().show("sidebar")},"openTemplates");return(a,l)=>(m(),F(Bt,{icon:"icon-[comfy--template]",tooltip:a.$t("sideToolbar.templates"),label:a.$t("sideToolbar.labels.templates"),"is-small":t.value,class:"templates-tab-button",onClick:s},null,8,["tooltip","label","is-small"]))}}),Pb=20,Db=50,Ab=H({__name:"SideToolbar",setup(e){const o=tt(),t=ie(),s=Ya(),a=Ce(),l=fe(),i=E(),r=E(),u=E(),p=k(()=>t.get("Comfy.Sidebar.Size")==="small"),v=k(()=>t.get("Comfy.Sidebar.Location")),h=k(()=>t.get("Comfy.Sidebar.Style")),d=k(()=>y.value||_.value||h.value==="connected"),b=k(()=>o.getSidebarTabs()),y=k(()=>o.sidebarTab.activeSidebarTab),g=n(async D=>{D.id,D.id,D.id,D.id,await a.commands.find(P=>P.id===`Workspace.ToggleSidebarTab.${D.id}`)?.function?.()},"onTabClick"),c=hr(),w=n(D=>{const P=c.getKeybindingByCommandId(`Workspace.ToggleSidebarTab.${D.id}`);return P?` (${P.combo.toString()})`:""},"getTabTooltipSuffix"),_=E(!1),S=k(()=>pe("sidebar-item-group flex flex-col items-center overflow-hidden flex-shrink-0"+(d.value?"":" rounded-lg shadow-interface"))),x=Xo(()=>{if(!i.value||!r.value||!u.value)return;const D=i.value.clientHeight,P=r.value.scrollHeight,T=u.value.scrollHeight,$=P+T;_.value?_.value=D<$+Db:_.value=D<$+Pb},16);return Le(()=>{if(!i.value)return;const D=pa(i.value,x);x(),gt(()=>{D.stop()}),se([p,v],async()=>{l.canvas&&(v.value==="left"?(await Oe(),l.canvas.fpsInfoLocation=[i.value?.getBoundingClientRect()?.right,null]):l.canvas.fpsInfoLocation=null,l.canvas.setDirty(!1,!0))},{immediate:!0})}),(D,P)=>(m(),N("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 pointer-events-auto",{"small-sidebar":p.value,"connected-sidebar":d.value,"floating-sidebar":!d.value,"overflowing-sidebar":_.value,"border-r border-[var(--interface-stroke)] shadow-interface":d.value}])},[f("div",{class:Q(_.value?"side-tool-bar-container overflow-y-auto":"flex flex-col h-full")},[f("div",{ref_key:"topToolbarRef",ref:r,class:Q(S.value)},[W(ky),(m(!0),N(le,null,be(b.value,T=>(m(),F(Bt,{key:T.id,icon:T.icon,"icon-badge":T.iconBadge,tooltip:T.tooltip,"tooltip-suffix":w(T),label:T.label||T.title,"is-small":p.value,selected:T.id===y.value?.id,class:Q(T.id+"-tab-button"),onClick:n($=>g(T),"onClick")},null,8,["icon","icon-badge","tooltip","tooltip-suffix","label","is-small","selected","class","onClick"]))),128)),W(Mb)],2),f("div",{ref_key:"bottomToolbarRef",ref:u,class:Q(["mt-auto",S.value])},[C(s).isMultiUserServer?(m(),F(Ib,{key:0,"is-small":p.value},null,8,["is-small"])):O("",!0),W($b,{"is-small":p.value},null,8,["is-small"]),W(_y,{"is-small":p.value},null,8,["is-small"]),W(Ny,{"is-small":p.value},null,8,["is-small"]),W(Ty,{"is-small":p.value},null,8,["is-small"])],2)],2)],2))}}),Eb=De(Ab,[["__scopeId","data-v-2a2f0be8"]]),Lb=Ot("topbarBadge",()=>{const e=Yn();return{badges:k(()=>e.extensions.flatMap(t=>t.topbarBadges??[]))}}),Vb={class:"flex h-full shrink-0 items-center"},wl=H({__name:"TopbarBadges",props:{reverseOrder:{type:Boolean,default:!1},noPadding:{type:Boolean,default:!1}},setup(e){const o=Jo(Yo),t=o.greaterOrEqual("xl"),s=o.greaterOrEqual("lg"),a=k(()=>t.value?"full":s.value?"compact":"icon-only"),l=Lb();return(i,r)=>(m(),N("div",Vb,[(m(!0),N(le,null,be(C(l).badges,u=>(m(),F(qc,{key:u.text,badge:u,"display-mode":a.value,"reverse-order":i.reverseOrder,"no-padding":i.noPadding},null,8,["badge","display-mode","reverse-order","no-padding"]))),128))]))}}),Ob={class:"workflow-preview-content"},Rb={key:0,class:"workflow-preview-thumbnail relative"},Wb=["src"],zb={class:"workflow-preview-footer"},Bb={class:"workflow-preview-name"},Fb=250,Ub=H({__name:"WorkflowTabPopover",props:{workflowFilename:{},thumbnailUrl:{},isActiveTab:{type:Boolean}},setup(e,{expose:o}){const t=e,{thumbnailUrl:s,isActiveTab:a}=wa(t),l=E(null),i=E(null);let r=null,u=null;const p=_n(),v=n(y=>{r&&(clearTimeout(r),r=null),u&&(clearTimeout(u),u=null),u=setTimeout(async()=>{if(l.value&&i.value){l.value.show(y,i.value),await Oe();const g=document.querySelector(`.workflow-popover-fade[data-popover-id="${p}"]`);if(g){const c=i.value.getBoundingClientRect().left,w=g.getBoundingClientRect().width,_=w/2;let S=c-_,x=0;if(S<0)x=S-8,S=8;else if(S+w>window.innerWidth){const D=window.innerWidth-w-16;x=S-D,S=D}x+_<0&&(x=-_+24),g.style.left=`${S}px`,g.style.setProperty("--shift",`${x}px`)}}},200)},"showPopover"),h=n(()=>{},"cancelHidePopover"),d=n(()=>{u&&(clearTimeout(u),u=null),r=setTimeout(()=>{l.value&&l.value.hide()},100)},"hidePopover");return o({showPopover:v,hidePopover:d,togglePopover:n(y=>{l.value&&l.value.toggle(y)},"togglePopover")}),(y,g)=>(m(),N(le,null,[f("div",{ref_key:"positionRef",ref:i,class:"absolute bottom-0 left-1/2 -translate-x-1/2"},null,512),W(C(Ze),{ref_key:"popoverRef",ref:l,"append-to":"body",pt:{root:{class:"workflow-popover-fade fit-content","data-popover-id":C(p)}},onMouseenter:h,onMouseleave:d},{default:L(()=>[f("div",Ob,[C(s)&&!C(a)?(m(),N("div",Rb,[f("img",{src:C(s),class:"block h-[200px] rounded-lg object-cover p-2",style:ve({width:`${Fb}px`})},null,12,Wb)])):O("",!0),f("div",zb,[f("span",Bb,z(y.workflowFilename),1)])])]),_:1},8,["pt"])],64))}}),Gb=De(Ub,[["__scopeId","data-v-4c13cb50"]]),jb={class:"workflow-label inline-block max-w-[150px] truncate text-sm"},Hb={class:"relative"},qb={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"},Kb=H({__name:"WorkflowTab",props:{workflowOption:{}},setup(e){const o=e,{t}=de(),s=tt(),a=Pe(),l=ie(),i=E(null),r=E(null),u=yr(),p=k(()=>l.get("Comfy.Workflow.AutoSave")),v=k(()=>l.get("Comfy.Workflow.AutoSaveDelay")),h=k(()=>s.shiftDown?!1:o.workflowOption.workflow.isPersisted?o.workflowOption.workflow.isModified?p.value==="off"||p.value==="after delay"&&v.value>3e3:!1:!0),d=k(()=>a.activeWorkflow?.key===o.workflowOption.workflow.key),b=k(()=>u.getThumbnail(o.workflowOption.workflow.key)),y=n(x=>{r.value?.showPopover(x)},"handleMouseEnter"),g=n(()=>{r.value?.hidePopover()},"handleMouseLeave"),c=n(x=>{r.value?.togglePopover(x)},"handleClick"),w=n(async x=>{for(const D of x)if(!await ot().closeWorkflow(D.workflow,{warnIfUnsaved:!s.shiftDown,hint:t("sideToolbar.workflowTab.dirtyCloseHint")}))break},"closeWorkflows"),_=n(async x=>{await w([x])},"onCloseWorkflow"),S=n(()=>i.value,"tabGetter");return br(S,{getInitialData:n(()=>({workflowKey:o.workflowOption.workflow.key}),"getInitialData")}),Qa(S,{getData:n(()=>({workflowKey:o.workflowOption.workflow.key}),"getData"),onDrop:n(x=>{const D=a.openWorkflows.findIndex(T=>T.key===x.source.data.workflowKey),P=a.openWorkflows.findIndex(T=>T.key===x.location.current.dropTargets[0]?.data.workflowKey);D!==P&&a.reorderWorkflows(D,P)},"onDrop")}),lt(()=>{r.value?.hidePopover()}),(x,D)=>(m(),N(le,null,[f("div",$t({ref_key:"workflowTabRef",ref:i,class:"workflow-tab group flex gap-2 p-2"},x.$attrs,{onMouseenter:y,onMouseleave:g,onClick:c}),[f("span",jb,z(x.workflowOption.workflow.filename),1),f("div",Hb,[h.value?(m(),N("span",qb,"•")):O("",!0),W(ee,{class:"close-button invisible w-auto p-0",variant:"muted-textonly",size:"icon-sm","aria-label":C(t)("g.close"),onClick:D[0]||(D[0]=ke(P=>_(x.workflowOption),["stop"]))},{default:L(()=>D[1]||(D[1]=[f("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])],16),W(Gb,{ref_key:"popoverRef",ref:r,"workflow-filename":x.workflowOption.workflow.filename,"thumbnail-url":b.value,"is-active-tab":d.value},null,8,["workflow-filename","thumbnail-url","is-active-tab"])],64))}}),Jb=H({__name:"WorkflowOverflowMenu",props:{workflows:{},activeWorkflow:{}},setup(e){const o=e,t=E(null),s=ot(),a=k(()=>o.workflows.map(l=>({label:l.filename,icon:o.activeWorkflow?.key===l.key?"pi pi-check":void 0,command:n(()=>{s.openWorkflow(l)},"command")})));return(l,i)=>{const r=Se("tooltip");return m(),N("div",null,[ue((m(),F(ee,{class:"rounded-none h-full w-auto aspect-square",variant:"muted-textonly",size:"icon","aria-label":l.$t("g.moreWorkflows"),onClick:i[0]||(i[0]=u=>t.value?.toggle(u))},{default:L(()=>i[1]||(i[1]=[f("i",{class:"pi pi-ellipsis-h"},null,-1)])),_:1},8,["aria-label"])),[[r,{value:l.$t("g.moreWorkflows"),showDelay:300}]]),W(C($a),{ref_key:"menu",ref:t,model:a.value,popup:!0,class:"max-h-[40vh] overflow-auto"},null,8,["model"])])}}}),Yb={key:3,class:"window-actions-spacer app-drag shrink-0"},Qb=H({__name:"WorkflowTabs",props:{class:{}},setup(e){const o=e,{t}=de(),s=tt(),a=Pe(),l=wr(),i=ot(),r=E(),u=E(),p=E(null),v=E(!1),h=E(!1),d=E(!1),b=Be(),y=n(U=>({value:U.path,workflow:U}),"workflowToOption"),g=k(()=>a.openWorkflows.map(y)),c=k(()=>a.activeWorkflow?y(a.activeWorkflow):null),w=n(async U=>{U&&c.value?.value!==U.value&&await i.openWorkflow(U.workflow)},"onWorkflowChange"),_=n(async U=>{for(const R of U)if(!await i.closeWorkflow(R.workflow,{warnIfUnsaved:!s.shiftDown}))break},"closeWorkflows"),S=n(async U=>{await _([U])},"onCloseWorkflow"),x=n((U,R)=>{r.value=R,u.value.show(U)},"showContextMenu"),D=k(()=>{const U=r.value;if(!U)return[];const R=g.value.findIndex(j=>j.workflow===U.workflow);return[{label:t("tabMenu.duplicateTab"),command:n(async()=>{await i.duplicateWorkflow(U.workflow)},"command")},{separator:!0},{label:t("tabMenu.closeTab"),command:n(()=>S(U),"command")},{label:t("tabMenu.closeTabsToLeft"),command:n(()=>_(g.value.slice(0,R)),"command"),disabled:R<=0},{label:t("tabMenu.closeTabsToRight"),command:n(()=>_(g.value.slice(R+1)),"command"),disabled:R===g.value.length-1},{label:t("tabMenu.closeOtherTabs"),command:n(()=>_([...g.value.slice(R+1),...g.value.slice(0,R)]),"command"),disabled:g.value.length<=1},{label:l.isBookmarked(U.workflow.path)?t("tabMenu.removeFromBookmarks"):t("tabMenu.addToBookmarks"),command:n(()=>l.toggleBookmarked(U.workflow.path),"command"),disabled:U.workflow.isTemporary}]}),P=Ce(),T=n(U=>{const R=U.currentTarget,j=U.deltaX||U.deltaY;R.scroll({left:R.scrollLeft+j})},"handleWheel"),$=k(()=>p.value?.querySelector(".p-scrollpanel-content")??null),I=n(U=>{const R=$.value;R&&R.scrollBy({left:U*20})},"scroll"),B=n(async(U={})=>{if(!c.value)return;U.waitForDom!==!1&&await Oe();const R=p.value;if(!R)return;const j=R.querySelector(".p-togglebutton-checked");j&&j.scrollIntoView({block:"nearest",inline:"nearest"})},"ensureActiveTabVisible");se(()=>a.activeWorkflow,()=>{B()},{immediate:!0});let G=null,M=null,V=null;return se($,(U,R,j)=>{if(M?.(),V?.(),G?.dispose(),!U)return;const q=jl(U);M=se([()=>q.arrivedState.left,()=>q.arrivedState.right],([K,ne])=>{h.value=!K,d.value=!ne},{immediate:!0}),G=rl(U),V=se(G.isOverflowing,K=>{v.value=K,K&&Oe(()=>{q.measure(),B({waitForDom:!1})})},{immediate:!0}),j(()=>{M?.(),V?.(),G?.dispose()})},{immediate:!0}),fa(()=>{G?.disposed.value||G?.checkOverflow()}),(U,R)=>{const j=Se("tooltip");return m(),N("div",{ref_key:"containerRef",ref:p,class:Q(["workflow-tabs-container flex h-full max-w-full flex-auto flex-row overflow-hidden",{"workflow-tabs-container-desktop":C(b)}])},[v.value?(m(),F(ee,{key:0,variant:"muted-textonly",size:"icon",class:"overflow-arrow overflow-arrow-left h-full w-auto aspect-square","aria-label":U.$t("g.scrollLeft"),disabled:!h.value,onMousedown:R[0]||(R[0]=q=>C(An)(q,()=>I(-1)))},{default:L(()=>R[3]||(R[3]=[f("i",{class:"icon-[lucide--chevron-left] size-full"},null,-1)])),_:1},8,["aria-label","disabled"])):O("",!0),W(C(fi),{class:"no-drag overflow-hidden","pt:content":{class:"p-0 w-full flex",onwheel:T},"pt:bar-x":"h-1"},{default:L(()=>[W(C(Ia),{class:Q(["workflow-tabs bg-transparent",o.class]),"model-value":c.value,options:g.value,"option-label":"label","data-key":"value","onUpdate:modelValue":w},{option:L(({option:q})=>[W(Kb,{"workflow-option":q,onContextmenu:n(K=>x(K,q),"onContextmenu"),onMouseup:ke(K=>S(q),["middle"])},null,8,["workflow-option","onContextmenu","onMouseup"])]),_:1},8,["class","model-value","options"])]),_:1},8,["pt:content"]),v.value?(m(),F(ee,{key:1,variant:"muted-textonly",size:"icon",class:"overflow-arrow overflow-arrow-right h-full w-auto aspect-square","aria-label":U.$t("g.scrollRight"),disabled:!d.value,onMousedown:R[1]||(R[1]=q=>C(An)(q,()=>I(1)))},{default:L(()=>R[4]||(R[4]=[f("i",{class:"icon-[lucide--chevron-right] size-full"},null,-1)])),_:1},8,["aria-label","disabled"])):O("",!0),v.value?(m(),F(Jb,{key:2,workflows:C(a).openWorkflows,"active-workflow":C(a).activeWorkflow},null,8,["workflows","active-workflow"])):O("",!0),ue((m(),F(ee,{class:"new-blank-workflow-button no-drag shrink-0 rounded-none h-full w-auto aspect-square",variant:"muted-textonly",size:"icon","aria-label":U.$t("sideToolbar.newBlankWorkflow"),onClick:R[2]||(R[2]=()=>C(P).execute("Comfy.NewBlankWorkflow"))},{default:L(()=>R[5]||(R[5]=[f("i",{class:"pi pi-plus"},null,-1)])),_:1},8,["aria-label"])),[[j,{value:U.$t("sideToolbar.newBlankWorkflow"),showDelay:300}]]),W(C(Ma),{ref_key:"menu",ref:u,model:D.value},null,8,["model"]),C(b)?(m(),N("div",Yb)):O("",!0)],2)}}}),kl=De(Qb,[["__scopeId","data-v-3fb85a76"]]);function Xb(){const e=E();function o(s){s?.graph&&(t(),e.value=Me.onChange(a=>{for(const l of a.nodeIds){const i=Me.getNodeLayoutRef(l).value;if(!i)continue;const r=s.graph?.getNodeById(parseInt(l));r&&((r.pos[0]!==i.position.x||r.pos[1]!==i.position.y)&&(r.pos[0]=i.position.x,r.pos[1]=i.position.y),(r.size[0]!==i.size.width||r.size[1]!==i.size.height)&&r.setSize([i.size.width,i.size.height]))}s.setDirty(!0,!0)}))}n(o,"startSync");function t(){e.value?.(),e.value=void 0}return n(t,"stopSync"),lt(t),{startSync:o,stopSync:t}}n(Xb,"useLayoutSync");function Zb(){const e=fe(),o=nn(),{shouldRenderVueNodes:t}=Go(),s=Je(null),{startSync:a}=Xb(),l=n(()=>{const p=J.canvas?.graph;if(!p||s.value)return;const v=Sg(p);s.value=v;const h=p._nodes.map(d=>({id:d.id.toString(),pos:[d.pos[0],d.pos[1]],size:[d.size[0],kr(d.size[1])]}));Me.initializeFromLiteGraph(h);for(const d of p.reroutes.values()){const[b,y]=d.pos,g=d.parentId??void 0,c=Array.from(d.linkIds);o.createReroute(d.id,{x:b,y},g,c)}for(const d of p._links.values())o.createLink(d.id,d.origin_id,d.origin_slot,d.target_id,d.target_slot);a(e.canvas)},"initializeNodeManager"),i=n(()=>{if(s.value){try{s.value.cleanup()}catch{}s.value=null}},"disposeNodeManagerAndSyncs");return se(()=>t.value&&!!J.canvas?.graph,p=>{p&&(l(),_s(J.canvas?.graph?.extra.workflowRendererVersion))},{immediate:!0}),ko(()=>!t.value,()=>{_s(J.canvas?.graph?.extra.workflowRendererVersion),i(),J.canvas?.setDirty(!0,!0)}),se(()=>t.value,(p,v)=>{p!==v&&Me.clearAllSlotLayouts()},{immediate:!0,flush:"sync"}),{nodeManager:s,initializeNodeManager:l,disposeNodeManagerAndSyncs:i,setupEmptyGraphListener:n(()=>{const p=J.canvas?.graph;if(!t.value||s.value||p?._nodes.length!==0)return;const v=p.onNodeAdded;p.onNodeAdded=function(h){p.onNodeAdded=v,t.value&&!s.value&&l(),v&&v.call(this,h)}},"setupEmptyGraphListener"),cleanup:n(()=>{s.value&&(s.value.cleanup(),s.value=null)},"cleanup")}}n(Zb,"useVueNodeLifecycleIndividual");const ps=Zo(Zb),ew={minimumFractionDigits:0,maximumFractionDigits:0},qo=n(e=>Cr({usd:e,numberOptions:ew}),"formatCreditsValue"),fs=n(e=>e?"~":"","makePrefix"),ms=n(e=>e??"/Run","makeSuffix"),vs=n(e=>e?` ${e}`:"","appendNote"),A=n((e,{suffix:o,note:t,approximate:s}={})=>`${fs(s)}${qo(e)} credits${ms(o)}${vs(t)}`,"formatCreditsLabel"),ge=n((e,o,{suffix:t,note:s,approximate:a}={})=>{const l=qo(e),i=qo(o),r=l===i?l:`${l}-${i}`;return`${fs(a)}${r} credits${ms(t)}${vs(s)}`},"formatCreditsRangeLabel"),We=n((e,{suffix:o,note:t,approximate:s,separator:a}={})=>{const i=e.map(r=>qo(r)).join(a??"/");return`${fs(s)}${i} credits${ms(o)}${vs(t)}`},"formatCreditsListLabel");function tw(e,o,t=""){try{return e(o)}catch{return t}}n(tw,"safePricingExecution");const yn=n(e=>{const o=e.widgets?.find(l=>l.name==="duration");if(!o)return A(.0715,{suffix:"/second"});const t=Number(o.value),a=.0715*(isNaN(t)?5:t);return A(a)},"calculateRunwayDurationPrice"),To=n(e=>o=>{const t=o.widgets?.find(l=>l.name==="duration");if(!t)return A(e,{suffix:"/second"});const s=parseFloat(String(t.value));if(!Number.isFinite(s))return A(e,{suffix:"/second"});const a=e*s;return A(a)},"makeOmniProDurationCalculator"),ow=n(e=>{const o=e.widgets?.find(s=>s.name==="mode");if(!o)return We([.07,.112],{suffix:"/second",note:"(std/pro)"});const t=String(o.value).toLowerCase();return t==="pro"?A(.112,{suffix:"/second"}):t==="std"?A(.07,{suffix:"/second"}):We([.07,.112],{suffix:"/second",note:"(std/pro)"})},"klingMotionControlPricingCalculator"),bn=n(e=>{const o=e.widgets?.find(r=>r.name==="duration_seconds"),t=e.widgets?.find(r=>r.name==="quality"),s=e.widgets?.find(r=>r.name==="motion_mode");if(!o||!t)return ge(.45,1.2,{note:"(varies with duration, quality & motion mode)"});const a=String(o.value),l=String(t.value),i=String(s?.value);if(a.includes("5")){if(l.includes("1080p")||l.includes("720p")&&i?.includes("fast"))return A(1.2);if(l.includes("720p")&&i?.includes("normal"))return A(.6);if(l.includes("540p")&&i?.includes("fast"))return A(.9);if(l.includes("540p")&&i?.includes("normal"))return A(.45);if(l.includes("360p")&&i?.includes("fast"))return A(.9);if(l.includes("360p")&&i?.includes("normal"))return A(.45)}else if(a.includes("8")){if(l.includes("540p")&&i?.includes("normal"))return A(.9);if(l.includes("540p")&&i?.includes("fast"))return A(1.2);if(l.includes("360p")&&i?.includes("normal"))return A(.9);if(l.includes("360p")&&i?.includes("fast")||l.includes("1080p")&&i?.includes("normal")||l.includes("1080p")&&i?.includes("fast")||l.includes("720p")&&i?.includes("normal")||l.includes("720p")&&i?.includes("fast"))return A(1.2)}return A(.9)},"pixversePricingCalculator"),No=n(e=>{const o=e.widgets?.find(c=>c.name==="model"),t=e.widgets?.find(c=>c.name==="duration"),s=e.widgets?.find(c=>c.name==="resolution");if(!o||!t||!s)return"Token-based";const a=String(o.value).toLowerCase(),l=String(s.value).toLowerCase(),i=parseFloat(String(t.value)),r={"seedance-1-0-pro":{"480p":[.23,.24],"720p":[.51,.56],"1080p":[1.18,1.22]},"seedance-1-0-pro-fast":{"480p":[.09,.1],"720p":[.21,.23],"1080p":[.47,.49]},"seedance-1-0-lite":{"480p":[.17,.18],"720p":[.37,.41],"1080p":[.85,.88]}},u=a.includes("seedance-1-0-pro-fast")?"seedance-1-0-pro-fast":a.includes("seedance-1-0-pro")?"seedance-1-0-pro":a.includes("seedance-1-0-lite")?"seedance-1-0-lite":"",p=l.includes("1080")?"1080p":l.includes("720")?"720p":l.includes("480")?"480p":"",v=u&&p?r[u]?.[p]:void 0;if(!v)return"Token-based";const[h,d]=v,b=i/10,y=h*b,g=d*b;return y===g?A(y):ge(y,g)},"byteDanceVideoPricingCalculator"),ea=n(e=>{const o=e.widgets?.find(d=>d.name==="model"),t=e.widgets?.find(d=>d.name==="duration"),s=e.widgets?.find(d=>d.name==="resolution"),a=ge(.04,.24,{suffix:"/second"});if(!o||!t||!s)return a;const l=String(o.value).toLowerCase(),i=String(s.value).toLowerCase(),r=parseFloat(String(t.value)),p={"ltx-2 (pro)":{"1920x1080":.06,"2560x1440":.12,"3840x2160":.24},"ltx-2 (fast)":{"1920x1080":.04,"2560x1440":.08,"3840x2160":.16}}[l];if(!p)return a;const v=p[i];if(!v)return a;const h=v*r;return A(h)},"ltxvPricingCalculator"),ta=n(e=>{const o=e.widgets?.find(l=>l.name==="duration"),t=e.widgets?.find(l=>l.name==="generate_audio");if(!o||!t)return ge(.35,1.4,{note:"(varies with duration & audio)"});const s=String(o.value),a=String(t.value).toLowerCase()==="true";return s==="5"?A(a?.7:.35):s==="10"?A(a?1.4:.7):ge(.35,1.4,{note:"(varies with duration & audio)"})},"klingVideoWithAudioPricingCalculator"),wo={BASIC:new Set(["720x1280","1280x720"]),PRO:new Set(["1024x1792","1792x1024"])},nw=new Set([...wo.BASIC,...wo.PRO]);function sw(e,o,t){const s=e?.toLowerCase()??"",a=t?.toLowerCase()??"";if(!o||Number.isNaN(o))return"Set duration (4s / 8s / 12s)";if(!a)return"Set size (720x1280, 1280x720, 1024x1792, 1792x1024)";if(!nw.has(a))return"Invalid size. Must be 720x1280, 1280x720, 1024x1792, or 1792x1024.";if(!s.includes("sora-2-pro")){if(s.includes("sora-2")&&!wo.BASIC.has(a))return"sora-2 supports only 720x1280 or 1280x720";if(!s.includes("sora-2"))return"Unsupported model"}}n(sw,"validateSora2Selection");function aw(e,o){const t=e?.toLowerCase()??"",s=o?.toLowerCase()??"";return t.includes("sora-2-pro")?wo.PRO.has(s)?.5:.3:t.includes("sora-2")?.1:wo.PRO.has(s)?.5:.1}n(aw,"perSecForSora2");function lw(e,o){return A(Number((e*o).toFixed(2)))}n(lw,"formatRunPrice");const iw=n(e=>{const o=n(r=>String(e.widgets?.find(u=>u.name===r)?.value??""),"getWidgetValue"),t=o("model"),s=o("size"),a=Number(e.widgets?.find(r=>["duration","duration_s"].includes(r.name))?.value);if(!t||!s||!a)return"Set model, duration & size";const l=sw(t,a,s);if(l)return l;const i=aw(t,s);return lw(i,a)},"sora2PricingCalculator"),wn=n((e,o)=>{const t=n(S=>e.widgets?.find(x=>x.name===S),"getWidget"),s=n((S,x)=>{const D=t(S);return!D||D.value===void 0||D.value===null?x:String(D.value)},"getString"),a=n((S,x)=>{const D=t(S);if(!D||D.value===void 0||D.value===null)return x;const P=D.value;if(typeof P=="number")return P!==0;const T=String(P).toLowerCase();return T==="true"?!0:T==="false"?!1:x},"getBool"),l=s("model_version","").toLowerCase();if(l==="")return ge(.1,.65,{note:"(varies with quad, style, texture & quality)"});const r=s("style","None").toLowerCase()!=="none",u=a("texture",!1),p=a("pbr",!1),v=a("quad",!1),h=s("texture_quality","standard").toLowerCase(),d=s("geometry_quality","standard").toLowerCase(),b=h==="detailed",y=d==="detailed",g=u||p;let c;l.includes("v1.4")||g?o==="text"?c=20:c=30:o==="text"?c=10:c=20;let w=c;r&&(w+=5),v&&(w+=5),b&&(w+=10),y&&(w+=20);const _=w*.01;return A(_)},"calculateTripo3DGenerationPrice"),oa={FluxProCannyNode:{displayPrice:A(.05)},FluxProDepthNode:{displayPrice:A(.05)},FluxProExpandNode:{displayPrice:A(.05)},FluxProFillNode:{displayPrice:A(.05)},FluxProUltraImageNode:{displayPrice:A(.06)},FluxProKontextProNode:{displayPrice:A(.04)},FluxProKontextMaxNode:{displayPrice:A(.08)},Flux2ProImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(v=>v.name==="width"),t=e.widgets?.find(v=>v.name==="height"),s=Number(o?.value),a=Number(t?.value);if(!Number.isFinite(s)||!Number.isFinite(a)||s<=0||a<=0)return ge(.03,.15);const l=e.inputs?.find(v=>v.name==="images"),i=typeof l?.link<"u"&&l.link!=null,r=1024*1024,u=Math.max(1,Math.floor((s*a+r-1)/r)),p=.03+.015*Math.max(u-1,0);if(i){const v=p+.015,h=p+.12;return ge(v,h,{approximate:!0})}return A(p)},"displayPrice")},Flux2MaxImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(v=>v.name==="width"),t=e.widgets?.find(v=>v.name==="height"),s=Number(o?.value),a=Number(t?.value);if(!Number.isFinite(s)||!Number.isFinite(a)||s<=0||a<=0)return ge(.07,.35);const l=e.inputs?.find(v=>v.name==="images"),i=typeof l?.link<"u"&&l.link!=null,r=1024*1024,u=Math.max(1,Math.floor((s*a+r-1)/r)),p=.07+.03*Math.max(u-1,0);if(i){const v=p+.03,h=p+.24;return ge(v,h)}return A(p)},"displayPrice")},OpenAIVideoSora2:{displayPrice:iw},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 ge(.03,.09,{suffix:" x num_images/Run"});const s=Number(o.value)||1,l=String(t?.value).toLowerCase()==="true"?.0286:.0858,i=Number((l*s).toFixed(2));return A(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 ge(.07,.11,{suffix:" x num_images/Run"});const s=Number(o.value)||1,l=String(t?.value).toLowerCase()==="true"?.0715:.1144,i=Number((l*s).toFixed(2));return A(i)},"displayPrice")},IdeogramV3:{displayPrice:n(e=>{const o=e.widgets?.find(p=>p.name==="rendering_speed"),t=e.widgets?.find(p=>p.name==="num_images"),s=e.inputs?.find(p=>p.name==="character_image"),a=typeof s?.link<"u"&&s.link!=null;if(!o)return ge(.04,.11,{suffix:" x num_images/Run",note:"(varies with rendering speed & num_images)"});const l=Number(t?.value)||1;let i=.0858;const r=String(o.value);r.toLowerCase().includes("quality")?a?i=.286:i=.1287:r.toLowerCase().includes("default")?a?i=.2145:i=.0858:r.toLowerCase().includes("turbo")&&(a?i=.143:i=.0429);const u=Number((i*l).toFixed(2));return A(u)},"displayPrice")},KlingCameraControlI2VNode:{displayPrice:A(.49)},KlingCameraControlT2VNode:{displayPrice:A(.14)},KlingDualCharacterVideoEffectNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="mode"),t=e.widgets?.find(r=>r.name==="model_name"),s=e.widgets?.find(r=>r.name==="duration");if(!o||!t||!s)return ge(.14,2.8,{note:"(varies with model, mode & duration)"});const a=String(o.value),l=String(s.value),i=String(t.value);return i.includes("v1-6")||i.includes("v1-5")?a.includes("pro")?l.includes("10")?A(.98):A(.49):l.includes("10")?A(.56):A(.28):i.includes("v1")?a.includes("pro")?l.includes("10")?A(.98):A(.49):l.includes("10")?A(.28):A(.14):A(.14)},"displayPrice")},KlingImage2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="mode"),t=e.widgets?.find(r=>r.name==="model_name"),s=e.widgets?.find(r=>r.name==="duration");if(!o){if(!t)return ge(.14,2.8,{note:"(varies with model, mode & duration)"});const r=String(t.value);return r.includes("v2-1-master")||r.includes("v2-master")?A(1.4):r.includes("v1-6")||r.includes("v1-5")?A(.28):A(.14)}const a=String(o.value),l=String(s.value),i=String(t.value);return i.includes("v2-5-turbo")?l.includes("10")?A(.7):A(.35):i.includes("v2-1-master")||i.includes("v2-master")?l.includes("10")?A(2.8):A(1.4):i.includes("v2-1")||i.includes("v1-6")||i.includes("v1-5")?a.includes("pro")?l.includes("10")?A(.98):A(.49):l.includes("10")?A(.56):A(.28):i.includes("v1")?a.includes("pro")?l.includes("10")?A(.98):A(.49):l.includes("10")?A(.28):A(.14):A(.14)},"displayPrice")},KlingImageGenerationNode:{displayPrice:n(e=>{const t=e.inputs?.find(p=>p.name==="image")?.link?"image to image":"text to image",s=e.widgets?.find(p=>p.name==="model_name"),a=e.widgets?.find(p=>p.name==="n");if(!s)return ge(.0035,.028,{suffix:" x n/Run",note:"(varies with modality & model)"});const l=String(s.value),i=Number(a?.value)||1;let r=.014;t.includes("text to image")?l.includes("kling-v1-5")||l.includes("kling-v2")?r=.014:l.includes("kling-v1")&&(r=.0035):t.includes("image to image")&&(l.includes("kling-v1-5")?r=.028:l.includes("kling-v1")&&(r=.0035));const u=r*i;return A(u)},"displayPrice")},KlingLipSyncAudioToVideoNode:{displayPrice:A(.1,{approximate:!0})},KlingLipSyncTextToVideoNode:{displayPrice:A(.1,{approximate:!0})},KlingSingleImageVideoEffectNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="effect_scene");if(!o)return ge(.28,.49,{note:"(varies with effect scene)"});const t=String(o.value);return t.includes("fuzzyfuzzy")||t.includes("squish")?A(.28):t.includes("dizzydizzy")||t.includes("bloombloom")?A(.49):(t.includes("expansion"),A(.28))},"displayPrice")},KlingStartEndFrameNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="mode");if(!o)return ge(.14,2.8,{note:"(varies with model, mode & duration)"});const t=String(o.value);return t.includes("v2-5-turbo")?t.includes("10")?A(.7):A(.35):t.includes("v2-1")?t.includes("10s")?A(.98):A(.49):t.includes("v2-master")?t.includes("10s")?A(2.8):A(1.4):t.includes("v1-6")?t.includes("pro")?t.includes("10s")?A(.98):A(.49):t.includes("10s")?A(.56):A(.28):t.includes("v1")?t.includes("pro")?t.includes("10s")?A(.98):A(.49):t.includes("10s")?A(.28):A(.14):A(.14)},"displayPrice")},KlingTextToVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="mode");if(!o)return ge(.14,2.8,{note:"(varies with model, mode & duration)"});const t=String(o.value);return t.includes("v2-5-turbo")?t.includes("10")?A(.7):A(.35):t.includes("v2-1-master")||t.includes("v2-master")?t.includes("10s")?A(2.8):A(1.4):t.includes("v1-6")?t.includes("pro")?t.includes("10s")?A(.98):A(.49):t.includes("10s")?A(.56):A(.28):t.includes("v1")?t.includes("pro")?t.includes("10s")?A(.98):A(.49):t.includes("10s")?A(.28):A(.14):A(.14)},"displayPrice")},KlingVideoExtendNode:{displayPrice:A(.28)},KlingVirtualTryOnNode:{displayPrice:A(.07)},KlingOmniProTextToVideoNode:{displayPrice:To(.112)},KlingOmniProFirstLastFrameNode:{displayPrice:To(.112)},KlingOmniProImageToVideoNode:{displayPrice:To(.112)},KlingOmniProVideoToVideoNode:{displayPrice:To(.168)},KlingMotionControl:{displayPrice:ow},KlingOmniProEditVideoNode:{displayPrice:A(.168,{suffix:"/second"})},KlingOmniProImageNode:{displayPrice:A(.028)},KlingTextToVideoWithAudio:{displayPrice:ta},KlingImageToVideoWithAudio:{displayPrice:ta},LumaImageToVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="model"),t=e.widgets?.find(r=>r.name==="resolution"),s=e.widgets?.find(r=>r.name==="duration");if(!o||!t||!s)return ge(.2,16.4,{note:"(varies with model, resolution & duration)"});const a=String(o.value),l=String(t.value).toLowerCase(),i=String(s.value);if(a.includes("ray-flash-2")){if(i.includes("5s")){if(l.includes("4k"))return A(3.13);if(l.includes("1080p"))return A(.79);if(l.includes("720p"))return A(.34);if(l.includes("540p"))return A(.2)}else if(i.includes("9s")){if(l.includes("4k"))return A(5.65);if(l.includes("1080p"))return A(1.42);if(l.includes("720p"))return A(.61);if(l.includes("540p"))return A(.36)}}else if(a.includes("ray-2")){if(i.includes("5s")){if(l.includes("4k"))return A(9.11);if(l.includes("1080p"))return A(2.27);if(l.includes("720p"))return A(1.02);if(l.includes("540p"))return A(.57)}else if(i.includes("9s")){if(l.includes("4k"))return A(16.4);if(l.includes("1080p"))return A(4.1);if(l.includes("720p"))return A(1.83);if(l.includes("540p"))return A(1.03)}}else if(a.includes("ray-1-6"))return A(.5);return A(.79)},"displayPrice")},LumaVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="model"),t=e.widgets?.find(r=>r.name==="resolution"),s=e.widgets?.find(r=>r.name==="duration");if(!o||!t||!s)return ge(.2,16.4,{note:"(varies with model, resolution & duration)"});const a=String(o.value),l=String(t.value).toLowerCase(),i=String(s.value);if(a.includes("ray-flash-2")){if(i.includes("5s")){if(l.includes("4k"))return A(3.13);if(l.includes("1080p"))return A(.79);if(l.includes("720p"))return A(.34);if(l.includes("540p"))return A(.2)}else if(i.includes("9s")){if(l.includes("4k"))return A(5.65);if(l.includes("1080p"))return A(1.42);if(l.includes("720p"))return A(.61);if(l.includes("540p"))return A(.36)}}else if(a.includes("ray-2")){if(i.includes("5s")){if(l.includes("4k"))return A(9.11);if(l.includes("1080p"))return A(2.27);if(l.includes("720p"))return A(1.02);if(l.includes("540p"))return A(.57)}else if(i.includes("9s")){if(l.includes("4k"))return A(16.4);if(l.includes("1080p"))return A(4.1);if(l.includes("720p"))return A(1.83);if(l.includes("540p"))return A(1.03)}}else if(a.includes("ray-1-6"))return A(.5);return A(.79)},"displayPrice")},MinimaxImageToVideoNode:{displayPrice:A(.43)},MinimaxTextToVideoNode:{displayPrice:A(.43)},MinimaxHailuoVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="resolution"),t=e.widgets?.find(l=>l.name==="duration");if(!o||!t)return ge(.28,.56,{note:"(varies with resolution & duration)"});const s=String(o.value),a=String(t.value);if(s.includes("768P")){if(a.includes("6"))return A(.28);if(a.includes("10"))return A(.56)}else if(s.includes("1080P")&&a.includes("6"))return A(.49);return A(.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 ge(.016,.02,{suffix:" x n/Run",note:"(varies with size & n)"});const s=String(o.value),a=Number(t?.value)||1;let l=.02;s.includes("1024x1024")?l=.02:s.includes("512x512")?l=.018:s.includes("256x256")&&(l=.016);const i=Number((l*a).toFixed(3));return A(i)},"displayPrice")},OpenAIDalle3:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="size"),t=e.widgets?.find(l=>l.name==="quality");if(!o||!t)return ge(.04,.12,{note:"(varies with size & quality)"});const s=String(o.value),a=String(t.value);return s.includes("1024x1024")?a.includes("hd")?A(.08):A(.04):s.includes("1792x1024")||s.includes("1024x1792")?a.includes("hd")?A(.12):A(.08):A(.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 ge(.011,.3,{suffix:" x n/Run",note:"(varies with quality & n)"});const s=String(o.value),a=Number(t?.value)||1;let l=[.046,.07];return s.includes("high")?l=[.167,.3]:s.includes("medium")?l=[.046,.07]:s.includes("low")&&(l=[.011,.02]),a===1?ge(l[0],l[1]):ge(l[0],l[1],{suffix:` x ${a}/Run`})},"displayPrice")},PixverseImageToVideoNode:{displayPrice:bn},PixverseTextToVideoNode:{displayPrice:bn},PixverseTransitionVideoNode:{displayPrice:bn},RecraftCreativeUpscaleNode:{displayPrice:A(.25)},RecraftCrispUpscaleNode:{displayPrice:A(.004)},RecraftGenerateColorFromImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="n");if(!o)return A(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return A(s)},"displayPrice")},RecraftGenerateImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="n");if(!o)return A(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return A(s)},"displayPrice")},RecraftGenerateVectorImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="n");if(!o)return A(.08,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.08*t).toFixed(2));return A(s)},"displayPrice")},RecraftImageInpaintingNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="n");if(!o)return A(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return A(s)},"displayPrice")},RecraftImageToImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="n");if(!o)return A(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return A(s)},"displayPrice")},RecraftRemoveBackgroundNode:{displayPrice:A(.01)},RecraftReplaceBackgroundNode:{displayPrice:A(.04)},RecraftTextToImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="n");if(!o)return A(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return A(s)},"displayPrice")},RecraftTextToVectorNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="n");if(!o)return A(.08,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.08*t).toFixed(2));return A(s)},"displayPrice")},RecraftVectorizeImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="n");if(!o)return A(.01,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.01*t).toFixed(2));return A(s)},"displayPrice")},StabilityStableImageSD_3_5Node:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return ge(.035,.065,{note:"(varies with model)"});const t=String(o.value).toLowerCase();return t.includes("large")?A(.065):(t.includes("medium"),A(.035))},"displayPrice")},StabilityStableImageUltraNode:{displayPrice:A(.08)},StabilityUpscaleConservativeNode:{displayPrice:A(.25)},StabilityUpscaleCreativeNode:{displayPrice:A(.25)},StabilityUpscaleFastNode:{displayPrice:A(.01)},StabilityTextToAudio:{displayPrice:A(.2)},StabilityAudioToAudio:{displayPrice:A(.2)},StabilityAudioInpaint:{displayPrice:A(.2)},VeoVideoGenerationNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="duration_seconds");if(!o)return ge(2.5,5,{note:"(varies with duration)"});const t=.5*Number(o.value);return A(t)},"displayPrice")},Veo3VideoGenerationNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="model"),t=e.widgets?.find(l=>l.name==="generate_audio");if(!o||!t)return ge(.8,3.2,{note:"(varies with model & audio generation)"});const s=String(o.value),a=String(t.value).toLowerCase()==="true";return s.includes("veo-3.0-fast-generate-001")||s.includes("veo-3.1-fast-generate")?A(a?1.2:.8):s.includes("veo-3.0-generate-001")||s.includes("veo-3.1-generate")?A(a?3.2:1.6):ge(.8,3.2)},"displayPrice")},Veo3FirstLastFrameNode:{displayPrice:n(e=>{const o=e.widgets?.find(p=>p.name==="model"),t=e.widgets?.find(p=>p.name==="generate_audio"),s=e.widgets?.find(p=>p.name==="duration");if(!o||!t||!s)return ge(.4,3.2,{note:"(varies with model & audio generation)"});const a=String(o.value),l=String(t.value).toLowerCase()==="true",i=parseFloat(String(s.value));let r=null;if(a.includes("veo-3.1-fast-generate")?r=l?.15:.1:a.includes("veo-3.1-generate")&&(r=l?.4:.2),r===null)return ge(.4,3.2);const u=r*i;return A(u)},"displayPrice")},LumaImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="model"),t=e.widgets?.find(a=>a.name==="aspect_ratio");if(!o||!t)return ge(.0064,.026,{note:"(varies with model & aspect ratio)"});const s=String(o.value);return s.includes("photon-flash-1")?A(.0027):s.includes("photon-1")?A(.0104):A(.0246)},"displayPrice")},LumaImageModifyNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return ge(.0027,.0104,{note:"(varies with model)"});const t=String(o.value);return t.includes("photon-flash-1")?A(.0027):t.includes("photon-1")?A(.0104):A(.0246)},"displayPrice")},MoonvalleyTxt2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return A(1.5);const t=String(o.value);return A(t==="5s"?1.5:t==="10s"?3:1.5)},"displayPrice")},MoonvalleyImg2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return A(1.5);const t=String(o.value);return A(t==="5s"?1.5:t==="10s"?3:1.5)},"displayPrice")},MoonvalleyVideo2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return A(2.25);const t=String(o.value);return A(t==="5s"?2.25:t==="10s"?4:2.25)},"displayPrice")},RunwayTextToImageNode:{displayPrice:A(.11)},RunwayImageToVideoNodeGen3a:{displayPrice:yn},RunwayImageToVideoNodeGen4:{displayPrice:yn},RunwayFirstLastFrameNode:{displayPrice:yn},Rodin3D_Regular:{displayPrice:A(.4)},Rodin3D_Detail:{displayPrice:A(.4)},Rodin3D_Smooth:{displayPrice:A(.4)},Rodin3D_Sketch:{displayPrice:A(.4)},TripoTextToModelNode:{displayPrice:n(e=>wn(e,"text"),"displayPrice")},TripoImageToModelNode:{displayPrice:n(e=>wn(e,"image"),"displayPrice")},TripoMultiviewToModelNode:{displayPrice:n(e=>wn(e,"multiview"),"displayPrice")},TripoTextureNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="texture_quality");return o?String(o.value).includes("detailed")?A(.2):A(.1):ge(.1,.2,{note:"(varies with quality)"})},"displayPrice")},TripoRigNode:{displayPrice:"$0.25/Run"},TripoConversionNode:{displayPrice:n(e=>{const o=n(y=>e.widgets?.find(g=>g.name===y)?.value,"getWidgetValue"),t=n((y,g)=>{const c=o(y);if(c==null||c==="")return g;if(typeof c=="number")return Number.isFinite(c)?c:g;const w=Number(c);return Number.isFinite(w)?w:g},"getNumber"),s=n((y,g)=>{const c=o(y);if(c==null)return g;if(typeof c=="number")return c!==0;const w=String(c).toLowerCase();return w==="true"?!0:w==="false"?!1:g},"getBool");let a=!1;return s("quad",!1)&&(a=!0),s("force_symmetry",!1)&&(a=!0),s("flatten_bottom",!1)&&(a=!0),s("pivot_to_center_bottom",!1)&&(a=!0),s("with_animation",!1)&&(a=!0),s("pack_uv",!1)&&(a=!0),s("bake",!1)&&(a=!0),s("export_vertex_colors",!1)&&(a=!0),s("animate_in_place",!1)&&(a=!0),t("face_limit",-1)!==-1&&(a=!0),t("texture_size",4096)!==4096&&(a=!0),t("flatten_bottom_threshold",0)!==0&&(a=!0),t("scale_factor",1)!==1&&(a=!0),String(o("texture_format")??"JPEG").toUpperCase()!=="JPEG"&&(a=!0),String(o("part_names")??"").trim().length>0&&(a=!0),String(o("fbx_preset")??"blender").toLowerCase()!=="blender"&&(a=!0),String(o("export_orientation")??"default").toLowerCase()!=="default"&&(a=!0),A((a?10:5)*.01)},"displayPrice")},TripoRetargetNode:{displayPrice:A(.1)},TripoRefineNode:{displayPrice:A(.3)},GeminiNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return"Token-based";const t=String(o.value);return t.includes("veo-2.0")?A(.5,{suffix:"/second"}):t.includes("gemini-2.5-flash-preview-04-17")?We([3e-4,.0025],{suffix:" per 1K tokens"}):t.includes("gemini-2.5-flash")?We([3e-4,.0025],{suffix:" per 1K tokens"}):t.includes("gemini-2.5-pro-preview-05-06")?We([.00125,.01],{suffix:" per 1K tokens"}):t.includes("gemini-2.5-pro")?We([.00125,.01],{suffix:" per 1K tokens"}):t.includes("gemini-3-pro-preview")?We([.002,.012],{suffix:" per 1K tokens"}):"Token-based"},"displayPrice")},GeminiImageNode:{displayPrice:A(.039,{suffix:"/Image (1K)",approximate:!0})},GeminiImage2Node:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="resolution");if(!o)return"Token-based";const t=String(o.value);return t.includes("1K")?A(.134,{suffix:"/Image",approximate:!0}):t.includes("2K")?A(.134,{suffix:"/Image",approximate:!0}):t.includes("4K")?A(.24,{suffix:"/Image",approximate:!0}):"Token-based"},"displayPrice")},OpenAIChatNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return"Token-based";const t=String(o.value);return t.includes("o4-mini")?We([.0011,.0044],{suffix:" per 1K tokens"}):t.includes("o1-pro")?We([.15,.6],{suffix:" per 1K tokens"}):t.includes("o1")?We([.015,.06],{suffix:" per 1K tokens"}):t.includes("o3-mini")?We([.0011,.0044],{suffix:" per 1K tokens"}):t.includes("o3")?We([.01,.04],{suffix:" per 1K tokens"}):t.includes("gpt-4o")?We([.0025,.01],{suffix:" per 1K tokens"}):t.includes("gpt-4.1-nano")?We([1e-4,4e-4],{suffix:" per 1K tokens"}):t.includes("gpt-4.1-mini")?We([4e-4,.0016],{suffix:" per 1K tokens"}):t.includes("gpt-4.1")?We([.002,.008],{suffix:" per 1K tokens"}):t.includes("gpt-5-nano")?We([5e-5,4e-4],{suffix:" per 1K tokens"}):t.includes("gpt-5-mini")?We([25e-5,.002],{suffix:" per 1K tokens"}):t.includes("gpt-5")?We([.00125,.01],{suffix:" per 1K tokens"}):"Token-based"},"displayPrice")},ViduTextToVideoNode:{displayPrice:A(.4)},ViduImageToVideoNode:{displayPrice:A(.4)},ViduReferenceVideoNode:{displayPrice:A(.4)},ViduStartEndToVideoNode:{displayPrice:A(.4)},ByteDanceImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");return o&&String(o.value).includes("seedream-3-0-t2i")?A(.03):"Token-based"},"displayPrice")},ByteDanceImageEditNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");return o&&String(o.value).includes("seededit-3-0-i2i")?A(.03):"Token-based"},"displayPrice")},ByteDanceSeedreamNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="model"),t=String(o?.value??"").toLowerCase();let s=.03;return t.includes("seedream-4-5-251128")?s=.04:t.includes("seedream-4-0-250828")&&(s=.03),A(s,{suffix:" x images/Run",approximate:!0})},"displayPrice")},ByteDanceTextToVideoNode:{displayPrice:No},ByteDanceImageToVideoNode:{displayPrice:No},ByteDanceFirstLastFrameNode:{displayPrice:No},ByteDanceImageReferenceNode:{displayPrice:No},WanTextToVideoApi:{displayPrice:n(e=>{const o=e.widgets?.find(p=>p.name==="duration"),t=e.widgets?.find(p=>p.name==="size");if(!o||!t)return ge(.05,.15,{suffix:"/second"});const s=parseFloat(String(o.value)),a=String(t.value).toLowerCase(),l=a.includes("1080")?"1080p":a.includes("720")?"720p":a.includes("480")?"480p":a.match(/^\s*(\d{3,4}p)/)?.[1]??"",r={"480p":.05,"720p":.1,"1080p":.15}[l];if(isNaN(s)||!r)return ge(.05,.15,{suffix:"/second"});const u=Number((r*s).toFixed(2));return A(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 ge(.05,.15,{suffix:"/second"});const s=parseFloat(String(o.value)),a=String(t.value).trim().toLowerCase(),i={"480p":.05,"720p":.1,"1080p":.15}[a];if(isNaN(s)||!i)return ge(.05,.15,{suffix:"/second"});const r=Number((i*s).toFixed(2));return A(r)},"displayPrice")},WanTextToImageApi:{displayPrice:A(.03)},WanImageToImageApi:{displayPrice:A(.03)},LtxvApiTextToVideo:{displayPrice:ea},LtxvApiImageToVideo:{displayPrice:ea}},rw=n(()=>({getNodeDisplayPrice:n(s=>{if(!s.constructor?.nodeData?.api_node)return"";const a=s.constructor.nodeData.name,l=oa[a];return l?typeof l.displayPrice=="function"?tw(l.displayPrice,s,""):l.displayPrice:""},"getNodeDisplayPrice"),getNodePricingConfig:n(s=>oa[s.constructor.nodeData?.name??""],"getNodePricingConfig"),getRelevantWidgetNames:n(s=>({KlingTextToVideoNode:["mode","model_name","duration"],KlingImage2VideoNode:["mode","model_name","duration"],KlingImageGenerationNode:["modality","model_name","n"],KlingDualCharacterVideoEffectNode:["mode","model_name","duration"],KlingSingleImageVideoEffectNode:["effect_scene"],KlingStartEndFrameNode:["mode","model_name","duration"],KlingTextToVideoWithAudio:["duration","generate_audio"],KlingImageToVideoWithAudio:["duration","generate_audio"],KlingOmniProTextToVideoNode:["duration"],KlingOmniProFirstLastFrameNode:["duration"],KlingOmniProImageToVideoNode:["duration"],KlingOmniProVideoToVideoNode:["duration"],KlingMotionControl:["mode"],MinimaxHailuoVideoNode:["resolution","duration"],OpenAIDalle3:["size","quality"],OpenAIDalle2:["size","n"],OpenAIVideoSora2:["model","size","duration"],OpenAIGPTImage1:["quality","n"],IdeogramV1:["num_images","turbo"],IdeogramV2:["num_images","turbo"],IdeogramV3:["rendering_speed","num_images","character_image"],FluxProKontextProNode:[],FluxProKontextMaxNode:[],Flux2ProImageNode:["width","height","images"],Flux2MaxImageNode:["width","height","images"],VeoVideoGenerationNode:["duration_seconds"],Veo3VideoGenerationNode:["model","generate_audio"],Veo3FirstLastFrameNode:["model","generate_audio","duration"],LumaVideoNode:["model","resolution","duration"],LumaImageToVideoNode:["model","resolution","duration"],LumaImageNode:["model","aspect_ratio"],LumaImageModifyNode:["model","aspect_ratio"],PixverseTextToVideoNode:["duration_seconds","quality","motion_mode"],PixverseTransitionVideoNode:["duration_seconds","motion_mode","quality"],PixverseImageToVideoNode:["duration_seconds","quality","motion_mode"],StabilityStableImageSD_3_5Node:["model"],RecraftTextToImageNode:["n"],RecraftImageToImageNode:["n"],RecraftImageInpaintingNode:["n"],RecraftTextToVectorNode:["n"],RecraftVectorizeImageNode:["n"],RecraftGenerateColorFromImageNode:["n"],RecraftGenerateImageNode:["n"],RecraftGenerateVectorImageNode:["n"],MoonvalleyTxt2VideoNode:["length"],MoonvalleyImg2VideoNode:["length"],MoonvalleyVideo2VideoNode:["length"],RunwayImageToVideoNodeGen3a:["duration"],RunwayImageToVideoNodeGen4:["duration"],RunwayFirstLastFrameNode:["duration"],TripoTextToModelNode:["model_version","quad","style","texture","pbr","texture_quality","geometry_quality"],TripoImageToModelNode:["model_version","quad","style","texture","pbr","texture_quality","geometry_quality"],TripoMultiviewToModelNode:["model_version","quad","texture","pbr","texture_quality","geometry_quality"],TripoConversionNode:["quad","face_limit","texture_size","texture_format","force_symmetry","flatten_bottom","flatten_bottom_threshold","pivot_to_center_bottom","scale_factor","with_animation","pack_uv","bake","part_names","fbx_preset","export_vertex_colors","export_orientation","animate_in_place"],TripoTextureNode:["texture_quality"],GeminiNode:["model"],GeminiImage2Node:["resolution"],OpenAIChatNode:["model"],ByteDanceImageNode:["model"],ByteDanceImageEditNode:["model"],ByteDanceSeedreamNode:["model","sequential_image_generation","max_images"],ByteDanceTextToVideoNode:["model","duration","resolution"],ByteDanceImageToVideoNode:["model","duration","resolution"],ByteDanceFirstLastFrameNode:["model","duration","resolution"],ByteDanceImageReferenceNode:["model","duration","resolution"],WanTextToVideoApi:["duration","size"],WanImageToVideoApi:["duration","resolution"],LtxvApiTextToVideo:["model","duration","resolution"],LtxvApiImageToVideo:["model","duration","resolution"]})[s]||[],"getRelevantWidgetNames")}),"useNodePricing"),Ln=new Image;Ln.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 uw=n(()=>{function e(l){if(!l.isSubgraphNode())return;l.badges=l.badges.filter(r=>!t(r));const i=o(l.subgraph);i.length>1?l.badges.push(a("Partner Nodes x "+i.length)):l.badges.push(...i)}n(e,"updateSubgraphCredits");function o(l,i=new Set){if(i.has(l.id))return[];i.add(l.id);const r=[];for(const u of l.nodes)r.push(...u.isSubgraphNode()?o(u.subgraph,i):u.badges.filter(p=>t(p)));return r}n(o,"collectCreditsBadges");function t(l){return(typeof l=="function"?l():l).icon?.image===Ln}n(t,"isCreditsBadge");const s=it();function a(l){const i=s.completedActivePalette.light_theme;return new os({text:l,iconOptions:{image:Ln,size:8},fgColor:s.completedActivePalette.colors.litegraph_base.BADGE_FG_COLOR,bgColor:i?Et("#8D6932",{lightness:.5}):"#8D6932"})}return n(a,"getCreditsBadge"),{getCreditsBadge:a,updateSubgraphCredits:e}},"usePriceBadge"),cw=n((e,o={})=>{const{widgetNames:t,triggerCanvasRedraw:s=!1}=o,a=E({});if(e.widgets){const l=t?e.widgets.filter(r=>t.includes(r.name)):e.widgets,i={};if(l.forEach(r=>{i[r.name]=r.value}),a.value=i,l.forEach(r=>{r.callback=Xt(r.callback,()=>{a.value={...a.value,[r.name]:r.value},s&&e.graph?.setDirtyCanvas(!0,!0)})}),t&&t.length>l.length){const r=t.map(u=>l.some(p=>p.name==u)?-1:e.inputs.findIndex(p=>p.name==u)).filter(u=>u>=0);e.onConnectionsChange=Xt(e.onConnectionsChange,(u,p,v)=>{r.includes(p)&&(a.value={...a.value,[r[p]]:v},s&&e.graph?.setDirtyCanvas(!0,!0))})}}return l=>Hl(a,l)},"useComputedWithWidgetWatch"),dw=n(()=>{const e=ie(),o=Yn(),t=it(),s=uw(),a=k(()=>e.get("Comfy.NodeBadge.NodeSourceBadgeMode")),l=k(()=>e.get("Comfy.NodeBadge.NodeIdBadgeMode")),i=k(()=>e.get("Comfy.NodeBadge.NodeLifeCycleBadgeMode")),r=k(()=>e.get("Comfy.NodeBadge.ShowApiPricing"));se([a,l,i,r],()=>{J.canvas?.setDirty(!0,!0)});const u=yt();function p(v,h){return!(h===dt.None||v?.isCoreNode&&h===dt.HideBuiltIn)}n(p,"badgeTextVisible"),Le(()=>{const v=rw();o.registerExtension({name:"Comfy.NodeBadge",nodeCreated(h){h.badgePosition=Sr.TopRight;const d=k(()=>{const b=u.fromLGraphNode(h);return new os({text:ql.truncate([p(b,l.value)?`#${h.id}`:"",p(b,i.value)?b?.nodeLifeCycleBadgeText??"":"",p(b,a.value)?b?.nodeSource?.badgeText??"":""].filter(y=>y.length>0).join(" "),{length:31}),fgColor:t.completedActivePalette.colors.litegraph_base.BADGE_FG_COLOR,bgColor:t.completedActivePalette.colors.litegraph_base.BADGE_BG_COLOR})});if(h.badges.push(()=>d.value),h.constructor.nodeData?.api_node&&r.value){const y=typeof v.getNodePricingConfig(h)?.displayPrice=="function";let g;const c=n(()=>{const w=v.getNodeDisplayPrice(h);return s.getCreditsBadge(w)},"createBadge");if(y){const w=v.getRelevantWidgetNames(h.constructor.nodeData?.name);g=cw(h,{widgetNames:w,triggerCanvasRedraw:!0})(c)}else g=k(c);h.badges.push(()=>g.value)}},init(){J.canvas.canvas.addEventListener("litegraph:set-graph",()=>{for(const h of J.canvas.graph?.nodes??[])s.updateSubgraphCredits(h)}),J.canvas.canvas.addEventListener("subgraph-converted",h=>s.updateSubgraphCredits(h.detail.subgraphNode))},afterConfigureGraph(){for(const h of J.canvas.graph?.nodes??[])s.updateSubgraphCredits(h)}})})},"useNodeBadge"),pw=n(e=>{const o=qn(),t=no(),s=ot();Qa(()=>e.value,{getDropEffect:n(a=>a.source.data.type==="tree-explorer-node"?"copy":"move","getDropEffect"),onDrop:n(async a=>{const l=a.location.current.input,i=a.source.data;if(i.type==="tree-explorer-node"){const r=i.data,p=Xa().clientPosToCanvasPos([l.clientX,l.clientY]);if(r.data instanceof xr){const v=r.data,h=[...p];h[1]+=me.NODE_TITLE_HEIGHT,t.addNodeOnGraph(v,{pos:h})}else if(r.data instanceof _r){const v=r.data,h=p,d=J.canvas.graph?.getNodeOnPos(h[0],h[1]);let b=null,y=null;if(d){const g=o.getAllNodeProviders(v.directory);for(const c of g)c.nodeDef.name===d.comfyClass&&(y=d,b=c)}if(!y){const g=o.getNodeProvider(v.directory);g&&(y=t.addNodeOnGraph(g.nodeDef,{pos:h}),b=g)}if(y){const g=y.widgets?.find(c=>c.name===b?.key);g&&(g.value=v.file_name)}}else if(r.data instanceof Ea){const v=r.data;await s.insertWorkflow(v,{position:p})}}},"onDrop")})},"useCanvasDrop"),fw=n(()=>{jt.install(je.prototype,"getCanvasMenuOptions");const{getCanvasMenuOptions:e}=je.prototype,o=n(function(...r){const u=e.apply(this,r),p=J.collectCanvasMenuItems(this);for(const h of p)u.push(h);const v=jt.extractLegacyItems("getCanvasMenuOptions",this,...r);for(const h of v)u.push(h);for(const h of u)h?.content&&(h.content=ye(`contextMenu.${h.content}`,h.content));return u},"getCanvasCenterMenuOptions");je.prototype.getCanvasMenuOptions=o,jt.registerWrapper("getCanvasMenuOptions",o,e,je.prototype),jt.install(je.prototype,"getNodeMenuOptions");const t=je.prototype.getNodeMenuOptions,s=n(function(...r){const u=t.apply(this,r),p=r[0],v=J.collectNodeMenuItems(p);for(const d of v)u.push(d);const h=jt.extractLegacyItems("getNodeMenuOptions",this,...r);for(const d of h)u.push(d);return u},"getNodeMenuOptionsWithExtensions");je.prototype.getNodeMenuOptions=s,jt.registerWrapper("getNodeMenuOptions",s,t,je.prototype);function a(r,u){if(!r)return;const p=/Convert (.*) to input/,v=/Convert (.*) to widget/,h=ye("contextMenu.Convert ","Convert "),d=ye("contextMenu. to input"," to input"),b=ye("contextMenu. to widget"," to widget");for(const y of r){if(typeof y=="string"||(a(y?.submenu?.options,u),!y?.content))continue;Tr(`contextMenu.${y.content}`)&&(y.content=ye(`contextMenu.${y.content}`,y.content));const g=u.extra||u.parentMenu?.options?.extra,c=y.content?.match(p);if(c){let _=c[1];g?.inputs?.find(S=>{if(S.name!=_)return!1;_=S.label?S.label:S.name}),g?.widgets?.find(S=>{if(S.name!=_)return!1;_=S.label?S.label:S.name}),y.content=h+_+d;continue}const w=y.content?.match(v);if(w){let _=w[1];g?.inputs?.find(S=>{if(S.name!=_)return!1;_=S.label?S.label:S.name}),g?.widgets?.find(S=>{if(S.name!=_)return!1;_=S.label?S.label:S.name}),y.content=h+_+b;continue}}}n(a,"translateMenus");const l=me.ContextMenu;function i(r,u){return u.title&&(u.title=ye(`nodeDefs.${Re(u.title)}.display_name`,u.title)),a(r,u),new l(r,u)}n(i,"ContextMenu"),me.ContextMenu=i,me.ContextMenu.prototype=l.prototype},"useContextMenuTranslation");function mw(){const e=window.getSelection();return e!==null&&e.toString().trim().length>0}n(mw,"hasTextSelection");function Cl(e){return e instanceof HTMLTextAreaElement||e instanceof HTMLInputElement&&!["button","checkbox","file","hidden","image","radio","range","reset","search","submit"].includes(e.type)||fe().linearMode||mw()}n(Cl,"shouldIgnoreCopyPaste");const vw=['<meta charset="utf-8"><div><span data-metadata="','"></span></div><span style="white-space:pre-wrap;">Text</span>'],gw=n(()=>{const e=fe();Ae(document,"copy",o=>{if(Cl(o.target))return;const t=e.canvas;if(t?.selectedItems){const s=t.copyToClipboard(),a=btoa(String.fromCharCode(...Array.from(new TextEncoder().encode(s))));return o.clipboardData?.setData("text/html",vw.join(a)),o.preventDefault(),o.stopImmediatePropagation(),!1}})},"useCopy"),hw=n(()=>{window.LiteGraph=me,window.LGraph=Nr,window.LLink=$r,window.LGraphNode=vt,window.LGraphGroup=Lt,window.DragAndScale=Ir,window.LGraphCanvas=je,window.ContextMenu=Mr,window.LGraphBadge=os},"useGlobalLitegraph");function yw(e){const t=e.getData("text/html").match(/data-metadata="([A-Za-z0-9+/=]+)"/)?.[1];if(!t)return!1;try{const s=atob(t),a=Uint8Array.from(s,i=>i.charCodeAt(0)),l=new TextDecoder().decode(a);return fe().getCanvas()._deserializeItems(JSON.parse(l),{}),!0}catch(s){console.error(s)}return!1}n(yw,"pasteClipboardItems");const bw=n(()=>{const e=tt(),o=fe(),t=n((s,a,l)=>{if(!a)return;const i=Array.from(s).filter(u=>u.type.startsWith(l)),r=i[0]?.getAsFile();r&&(a.pasteFile?.(r),a.pasteFiles?.(Array.from(i).map(u=>u.getAsFile()).filter(u=>u!==null)))},"pasteItemsOnNode");Ae(document,"paste",async s=>{if(Cl(s.target)||e.shiftDown)return;const{canvas:a}=o;if(!a)return;const{graph:l}=a;let i=s.clipboardData;if(!i)throw new Error("No clipboard data on clipboard event");const{items:r}=i,u=a.current_node,p=u?.is_selected,v=p&&Pr(u),h=p&&Dr(u),d=p&&Ar(u);let b=v?u:null,y=d?u:null;const g=h?u:null;for(const w of r)if(w.type.startsWith("image/")){if(!b){const _=me.createNode("LoadImage");_&&(_.pos=[a.graph_mouse[0],a.graph_mouse[1]],b=l?.add(_)??null),l?.change()}t(r,b,"image");return}else if(w.type.startsWith("video/")){if(g){t(r,g,"video");return}}else if(w.type.startsWith("audio/")){if(!y){const _=me.createNode("LoadAudio");_&&(_.pos=[a.graph_mouse[0],a.graph_mouse[1]],y=l?.add(_)??null),l?.change()}t(r,y,"audio");return}if(yw(i))return;i=i.getData("text/plain");let c=null;try{i=i.slice(i.indexOf("{")),c=JSON.parse(i)}catch{try{i=i.slice(i.indexOf(`workflow
11
11
  `)),i=i.slice(i.indexOf("{")),c=JSON.parse(i)}catch{c=null}}if(c&&c.version&&c.nodes&&c.extra)await J.loadGraphData(c);else{if(s.target instanceof HTMLTextAreaElement&&s.target.type==="textarea"||s.target instanceof HTMLInputElement&&s.target.type==="text")return;a.pasteFromClipboard()}})},"usePaste"),ww=n(()=>{const e=ie(),o=fe();he(()=>{const t=e.get("Comfy.Graph.CanvasInfo");o.canvas&&(o.canvas.show_info=t,o.canvas.draw(!1,!0))}),he(()=>{const t=e.get("Comfy.Graph.ZoomSpeed");o.canvas&&(o.canvas.zoom_speed=t)}),he(()=>{me.snaps_for_comfy=e.get("Comfy.Node.AutoSnapLinkToSlot")}),he(()=>{me.snap_highlights_node=e.get("Comfy.Node.SnapHighlightsNode")}),he(()=>{vt.keepAllLinksOnBypass=e.get("Comfy.Node.BypassAllLinksOnDelete")}),he(()=>{me.middle_click_slot_add_default_node=e.get("Comfy.Node.MiddleClickRerouteNode")}),he(()=>{const t=e.get("Comfy.LinkRenderMode");o.canvas&&(o.canvas.links_render_mode=t,o.canvas.setDirty(!1,!0))}),he(()=>{const t=e.get("LiteGraph.Canvas.MinFontSizeForLOD");o.canvas&&(o.canvas.min_font_size_for_lod=t,o.canvas.setDirty(!0,!0))}),he(()=>{const t=e.get("Comfy.Graph.LinkMarkers"),{canvas:s}=o;s&&(s.linkMarkerShape=t,s.setDirty(!1,!0))}),he(()=>{const t=e.get("LiteGraph.Canvas.MaximumFps"),{canvas:s}=o;s&&(s.maximumFps=t)}),he(()=>{const t=e.get("Comfy.Graph.CtrlShiftZoom"),{canvas:s}=o;s&&(s.dragZoomEnabled=t)}),he(()=>{const t=e.get("Comfy.Graph.LiveSelection"),{canvas:s}=o;s&&(s.liveSelection=t)}),he(()=>{rn.doubleClickTime=e.get("Comfy.Pointer.DoubleClickTime")}),he(()=>{rn.bufferTime=e.get("Comfy.Pointer.ClickBufferTime")}),he(()=>{rn.maxClickDrift=e.get("Comfy.Pointer.ClickDrift")}),he(()=>{me.CANVAS_GRID_SIZE=e.get("Comfy.SnapToGrid.GridSize")}),he(()=>{me.alwaysSnapToGrid=e.get("pysssss.SnapToGrid")}),he(()=>{me.context_menu_scaling=e.get("LiteGraph.ContextMenu.Scaling")}),he(()=>{me.Reroute.maxSplineOffset=e.get("LiteGraph.Reroute.SplineOffset")}),he(()=>{const t=e.get("Comfy.Canvas.NavigationMode");me.canvasNavigationMode=t,me.macTrackpadGestures=t==="standard"}),he(()=>{const t=e.get("Comfy.Canvas.LeftMouseClickBehavior");me.leftMouseClickBehavior=t}),he(()=>{const t=e.get("Comfy.Canvas.MouseWheelScroll");me.mouseWheelScroll=t}),he(()=>{me.saveViewportWithGraph=e.get("Comfy.EnableWorkflowViewRestore")})},"useLitegraphSettings"),kw=[{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(kt),defaultValue:kt.CONTEXT_MENU,defaultsByInstallVersion:{"1.24.1":kt.SEARCH_BOX}},{id:"Comfy.LinkRelease.ActionShift",category:["LiteGraph","LinkRelease","ActionShift"],name:"Action on link release (Shift)",type:"combo",options:Object.values(kt),defaultValue:kt.SEARCH_BOX,defaultsByInstallVersion:{"1.24.1":kt.CONTEXT_MENU}},{id:"Comfy.NodeSearchBoxImpl.NodePreview",category:["Comfy","Node Search Box","NodePreview"],name:"Node preview",tooltip:"Only applies to the default implementation",type:"boolean",defaultValue:!0},{id:"Comfy.NodeSearchBoxImpl.ShowCategory",category:["Comfy","Node Search Box","ShowCategory"],name:"Show node category in search results",tooltip:"Only applies to the default implementation",type:"boolean",defaultValue:!0},{id:"Comfy.NodeSearchBoxImpl.ShowIdName",category:["Comfy","Node Search Box","ShowIdName"],name:"Show node id name in search results",tooltip:"Only applies to the default implementation",type:"boolean",defaultValue:!1},{id:"Comfy.NodeSearchBoxImpl.ShowNodeFrequency",category:["Comfy","Node Search Box","ShowNodeFrequency"],name:"Show node frequency in search results",tooltip:"Only applies to the default implementation",type:"boolean",defaultValue:!1},{id:"Comfy.Sidebar.Location",category:["Appearance","Sidebar","Location"],name:"Sidebar location",type:"combo",options:["left","right"],defaultValue:"left"},{id:"Comfy.Sidebar.Size",category:["Appearance","Sidebar","Size"],name:"Sidebar size",type:"combo",options:["normal","small"],defaultValue:n(()=>window.innerWidth<1536?"small":"normal","defaultValue")},{id:"Comfy.Sidebar.UnifiedWidth",category:["Appearance","Sidebar","UnifiedWidth"],name:"Unified sidebar width",type:"boolean",defaultValue:!0,versionAdded:"1.18.1"},{id:"Comfy.Sidebar.Style",category:["Appearance","Sidebar","Style"],name:"Sidebar style",type:"combo",options:["floating","connected"],defaultValue:"connected"},{id:"Comfy.TextareaWidget.FontSize",category:["Appearance","Node Widget","TextareaWidget","FontSize"],name:"Textarea widget font size",type:"slider",defaultValue:10,attrs:{min:8,max:24}},{id:"Comfy.TextareaWidget.Spellcheck",category:["Comfy","Node Widget","TextareaWidget","Spellcheck"],name:"Textarea widget spellcheck",type:"boolean",defaultValue:!1},{id:"Comfy.Workflow.SortNodeIdOnSave",name:"Sort node IDs when saving workflow",type:"boolean",defaultValue:!1},{id:"Comfy.Canvas.NavigationMode",category:["LiteGraph","Canvas Navigation","NavigationMode"],name:"Navigation Mode",defaultValue:"legacy",type:"combo",sortOrder:100,options:[{value:"standard",text:"Standard (New)"},{value:"legacy",text:"Drag Navigation"},{value:"custom",text:"Custom"}],versionAdded:"1.25.0",defaultsByInstallVersion:{"1.25.0":"legacy"},onChange:n(async(e,o)=>{if(!o)return;const t=ie();e==="standard"?(await t.set("Comfy.Canvas.LeftMouseClickBehavior","select"),await t.set("Comfy.Canvas.MouseWheelScroll","panning")):e==="legacy"&&(await t.set("Comfy.Canvas.LeftMouseClickBehavior","panning"),await t.set("Comfy.Canvas.MouseWheelScroll","zoom"))},"onChange")},{id:"Comfy.Canvas.LeftMouseClickBehavior",category:["LiteGraph","Canvas Navigation","LeftMouseClickBehavior"],name:"Left Mouse Click Behavior",defaultValue:"panning",type:"radio",sortOrder:50,options:[{value:"panning",text:"Panning"},{value:"select",text:"Select"}],versionAdded:"1.27.4",onChange:n(async e=>{const o=ie(),t=o.get("Comfy.Canvas.NavigationMode");if(t!=="custom"){if(e==="select"&&t==="standard"||e==="panning"&&t==="legacy")return;await o.set("Comfy.Canvas.NavigationMode","custom")}},"onChange")},{id:"Comfy.Canvas.MouseWheelScroll",category:["LiteGraph","Canvas Navigation","MouseWheelScroll"],name:"Mouse Wheel Scroll",defaultValue:"zoom",type:"radio",options:[{value:"panning",text:"Panning"},{value:"zoom",text:"Zoom in/out"}],versionAdded:"1.27.4",onChange:n(async e=>{const o=ie(),t=o.get("Comfy.Canvas.NavigationMode");if(t!=="custom"){if(e==="panning"&&t==="standard"||e==="zoom"&&t==="legacy")return;await o.set("Comfy.Canvas.NavigationMode","custom")}},"onChange")},{id:"Comfy.Graph.CanvasInfo",category:["LiteGraph","Canvas","CanvasInfo"],name:"Show canvas info on bottom left corner (fps, etc.)",type:"boolean",defaultValue:!0},{id:"Comfy.Node.ShowDeprecated",name:"Show deprecated nodes in search",tooltip:"Deprecated nodes are hidden by default in the UI, but remain functional in existing workflows that use them.",type:"boolean",defaultValue:!1},{id:"Comfy.Node.ShowExperimental",name:"Show experimental nodes in search",tooltip:"Experimental nodes are marked as such in the UI and may be subject to significant changes or removal in future versions. Use with caution in production workflows",type:"boolean",defaultValue:!0},{id:"Comfy.Node.Opacity",category:["Appearance","Node","Opacity"],name:"Node opacity",type:"slider",defaultValue:1,attrs:{min:.01,max:1,step:.01}},{id:"Comfy.Workflow.ShowMissingNodesWarning",name:"Show missing nodes warning",type:"boolean",defaultValue:!0},{id:"Comfy.Workflow.ShowMissingModelsWarning",name:"Show missing models warning",type:"boolean",defaultValue:!0,experimental:!0},{id:"Comfy.Workflow.WarnBlueprintOverwrite",name:"Require confirmation to overwrite an existing subgraph blueprint",type:"boolean",defaultValue:!0},{id:"Comfy.Graph.ZoomSpeed",category:["LiteGraph","Canvas","ZoomSpeed"],name:"Canvas zoom speed",type:"slider",defaultValue:1.1,attrs:{min:1.01,max:2.5,step:.01}},{id:"Comfy.NodeLibrary.Bookmarks",name:"Node library bookmarks with display name (deprecated)",type:"hidden",defaultValue:[],deprecated:!0},{id:"Comfy.NodeLibrary.Bookmarks.V2",name:"Node library bookmarks v2 with unique name",type:"hidden",defaultValue:[]},{id:"Comfy.NodeLibrary.BookmarksCustomization",name:"Node library bookmarks customization",type:"hidden",defaultValue:{}},{id:"Comfy.GroupSelectedNodes.Padding",category:["LiteGraph","Group","Padding"],name:"Group selected nodes padding",type:"slider",defaultValue:10,attrs:{min:0,max:100}},{id:"Comfy.Node.DoubleClickTitleToEdit",category:["LiteGraph","Node","DoubleClickTitleToEdit"],name:"Double click node title to edit",type:"boolean",defaultValue:!0},{id:"Comfy.Node.AllowImageSizeDraw",category:["LiteGraph","Node Widget","AllowImageSizeDraw"],name:"Show width × height below the image preview",type:"boolean",defaultValue:!0},{id:"Comfy.Group.DoubleClickTitleToEdit",category:["LiteGraph","Group","DoubleClickTitleToEdit"],name:"Double click group title to edit",type:"boolean",defaultValue:!0},{id:"Comfy.Window.UnloadConfirmation",name:"Show confirmation when closing window",type:"boolean",defaultValue:!0,versionModified:"1.7.12"},{id:"Comfy.TreeExplorer.ItemPadding",category:["Appearance","Tree Explorer","ItemPadding"],name:"Tree explorer item padding",type:"slider",defaultValue:2,attrs:{min:0,max:8,step:1}},{id:"Comfy.ModelLibrary.AutoLoadAll",name:"Automatically load all model folders",tooltip:"If true, all folders will load as soon as you open the model library (this may cause delays while it loads). If false, root level model folders will only load once you click on them.",type:"boolean",defaultValue:!1},{id:"Comfy.ModelLibrary.NameFormat",name:"What name to display in the model library tree view",tooltip:'Select "filename" to render a simplified view of the raw filename (without directory or ".safetensors" extension) in the model list. Select "title" to display the configurable model metadata title.',type:"combo",options:["filename","title"],defaultValue:"title"},{id:"Comfy.Locale",name:"Language",type:"combo",options:[{value:"en",text:"English"},{value:"zh",text:"中文"},{value:"zh-TW",text:"繁體中文"},{value:"ru",text:"Русский"},{value:"ja",text:"日本語"},{value:"ko",text:"한국어"},{value:"fr",text:"Français"},{value:"es",text:"Español"},{value:"ar",text:"عربي"},{value:"tr",text:"Türkçe"},{value:"pt-BR",text:"Português (BR)"}],defaultValue:n(()=>navigator.language.split("-")[0]||"en","defaultValue")},{id:"Comfy.NodeBadge.NodeSourceBadgeMode",category:["LiteGraph","Node","NodeSourceBadgeMode"],name:"Node source badge mode",type:"combo",options:Object.values(dt),defaultValue:dt.HideBuiltIn},{id:"Comfy.NodeBadge.NodeIdBadgeMode",category:["LiteGraph","Node","NodeIdBadgeMode"],name:"Node ID badge mode",type:"combo",options:[dt.None,dt.ShowAll],defaultValue:dt.None},{id:"Comfy.NodeBadge.NodeLifeCycleBadgeMode",category:["LiteGraph","Node","NodeLifeCycleBadgeMode"],name:"Node life cycle badge mode",type:"combo",options:[dt.None,dt.ShowAll],defaultValue:dt.ShowAll},{id:"Comfy.NodeBadge.ShowApiPricing",category:["Comfy","API Nodes"],name:"Show API node pricing badge",type:"boolean",defaultValue:!0,versionAdded:"1.20.3"},{id:"Comfy.Notification.ShowVersionUpdates",category:["Comfy","Notification Preferences"],name:"Show version updates",tooltip:"Show updates for new models, and major new features.",type:"boolean",defaultValue:!0},{id:"Comfy.ConfirmClear",category:["Comfy","Workflow","ConfirmClear"],name:"Require confirmation when clearing workflow",type:"boolean",defaultValue:!0},{id:"Comfy.PromptFilename",category:["Comfy","Workflow","PromptFilename"],name:"Prompt for filename when saving workflow",type:"boolean",defaultValue:!0},{id:"Comfy.PreviewFormat",category:["LiteGraph","Node Widget","PreviewFormat"],name:"Preview image format",tooltip:"When displaying a preview in the image widget, convert it to a lightweight image, e.g. webp, jpeg, webp;50, etc.",type:"text",defaultValue:""},{id:"Comfy.DisableSliders",category:["LiteGraph","Node Widget","DisableSliders"],name:"Disable node widget sliders",type:"boolean",defaultValue:!1},{id:"Comfy.DisableFloatRounding",category:["LiteGraph","Node Widget","DisableFloatRounding"],name:"Disable default float widget rounding.",tooltip:"(requires page reload) Cannot disable round when round is set by the node in the backend.",type:"boolean",defaultValue:!1},{id:"Comfy.FloatRoundingPrecision",category:["LiteGraph","Node Widget","FloatRoundingPrecision"],name:"Float widget rounding decimal places [0 = auto].",tooltip:"(requires page reload)",type:"slider",attrs:{min:0,max:6,step:1},defaultValue:0},{id:"LiteGraph.Node.TooltipDelay",name:"Tooltip Delay",type:"number",attrs:{min:100,max:3e3,step:50},defaultValue:500,versionAdded:"1.9.0"},{id:"Comfy.EnableTooltips",category:["LiteGraph","Node","EnableTooltips"],name:"Enable Tooltips",type:"boolean",defaultValue:!0},{id:"Comfy.DevMode",name:"Enable dev mode options (API save, etc.)",type:"boolean",defaultValue:!1,onChange:n(e=>{const o=document.getElementById("comfy-dev-save-api-button");o&&(o.style.display=e?"flex":"none")},"onChange")},{id:"Comfy.UseNewMenu",category:["Comfy","Menu","UseNewMenu"],defaultValue:"Top",name:"Use new menu",type:"combo",options:["Disabled","Top"],tooltip:"Enable the redesigned top menu bar.",migrateDeprecatedValue:n(e=>e==="Floating"||e==="Bottom"?"Top":e,"migrateDeprecatedValue")},{id:"Comfy.Workflow.WorkflowTabsPosition",name:"Opened workflows position",type:"combo",options:["Sidebar","Topbar"],defaultValue:"Topbar",migrateDeprecatedValue:n(e=>e==="Topbar (2nd-row)"?"Topbar":e,"migrateDeprecatedValue")},{id:"Comfy.Graph.CanvasMenu",category:["LiteGraph","Canvas","CanvasMenu"],name:"Show graph canvas menu",type:"boolean",defaultValue:!0},{id:"Comfy.QueueButton.BatchCountLimit",name:"Batch count limit",tooltip:"The maximum number of tasks added to the queue at one button click",type:"number",defaultValue:100,versionAdded:"1.3.5"},{id:"Comfy.Keybinding.UnsetBindings",name:"Keybindings unset by the user",type:"hidden",defaultValue:[],versionAdded:"1.3.7",versionModified:"1.7.3",migrateDeprecatedValue:n(e=>e.map(o=>(o.targetSelector==="#graph-canvas"&&(o.targetElementId="graph-canvas-container"),o)),"migrateDeprecatedValue")},{id:"Comfy.Keybinding.NewBindings",name:"Keybindings set by the user",type:"hidden",defaultValue:[],versionAdded:"1.3.7"},{id:"Comfy.Extension.Disabled",name:"Disabled extension names",type:"hidden",defaultValue:[],versionAdded:"1.3.11"},{id:"Comfy.LinkRenderMode",category:["LiteGraph","Graph","LinkRenderMode"],name:"Link Render Mode",defaultValue:2,type:"combo",options:[{value:me.STRAIGHT_LINK,text:"Straight"},{value:me.LINEAR_LINK,text:"Linear"},{value:me.SPLINE_LINK,text:"Spline"},{value:me.HIDDEN_LINK,text:"Hidden"}]},{id:"Comfy.Node.AutoSnapLinkToSlot",category:["LiteGraph","Node","AutoSnapLinkToSlot"],name:"Auto snap link to node slot",tooltip:"When dragging a link over a node, the link automatically snap to a viable input slot on the node",type:"boolean",defaultValue:!0,versionAdded:"1.3.29"},{id:"Comfy.Node.SnapHighlightsNode",category:["LiteGraph","Node","SnapHighlightsNode"],name:"Snap highlights node",tooltip:"When dragging a link over a node with viable input slot, highlight the node",type:"boolean",defaultValue:!0,versionAdded:"1.3.29"},{id:"Comfy.Node.BypassAllLinksOnDelete",category:["LiteGraph","Node","BypassAllLinksOnDelete"],name:"Keep all links when deleting nodes",tooltip:"When deleting a node, attempt to reconnect all of its input and output links (bypassing the deleted node)",type:"boolean",defaultValue:!0,versionAdded:"1.3.40"},{id:"Comfy.Node.MiddleClickRerouteNode",category:["LiteGraph","Node","MiddleClickRerouteNode"],name:"Middle-click creates a new Reroute node",type:"boolean",defaultValue:!0,versionAdded:"1.3.42"},{id:"Comfy.Graph.LinkMarkers",category:["LiteGraph","Link","LinkMarkers"],name:"Link midpoint markers",defaultValue:_o.Circle,type:"combo",options:[{value:_o.None,text:"None"},{value:_o.Circle,text:"Circle"},{value:_o.Arrow,text:"Arrow"}],versionAdded:"1.3.42"},{id:"Comfy.DOMClippingEnabled",category:["LiteGraph","Node","DOMClippingEnabled"],name:"Enable DOM element clipping (enabling may reduce performance)",type:"boolean",defaultValue:!0},{id:"Comfy.Graph.CtrlShiftZoom",category:["LiteGraph","Canvas","CtrlShiftZoom"],name:"Enable fast-zoom shortcut (Ctrl + Shift + Drag)",type:"boolean",defaultValue:!0,versionAdded:"1.4.0"},{id:"Comfy.Graph.LiveSelection",category:["LiteGraph","Canvas","LiveSelection"],name:"Live selection",tooltip:"When enabled, nodes are selected/deselected in real-time as you drag the selection rectangle, similar to other design tools.",type:"boolean",defaultValue:!1,versionAdded:"1.36.1"},{id:"Comfy.Pointer.ClickDrift",category:["LiteGraph","Pointer","ClickDrift"],name:"Pointer click drift (maximum distance)",tooltip:`If the pointer moves more than this distance while holding a button down, it is considered dragging (rather than clicking).
12
12
 
13
13
  Helps prevent objects from being unintentionally nudged if the pointer is moved whilst clicking.`,experimental:!0,type:"slider",attrs:{min:0,max:20,step:1},defaultValue:6,versionAdded:"1.4.3"},{id:"Comfy.Pointer.ClickBufferTime",category:["LiteGraph","Pointer","ClickBufferTime"],name:"Pointer click drift delay",tooltip:`After pressing a pointer button down, this is the maximum time (in milliseconds) that pointer movement can be ignored for.
14
14
 
15
- Helps prevent objects from being unintentionally nudged if the pointer is moved whilst clicking.`,experimental:!0,type:"slider",attrs:{min:0,max:1e3,step:25},defaultValue:150,versionAdded:"1.4.3"},{id:"Comfy.Pointer.DoubleClickTime",category:["LiteGraph","Pointer","DoubleClickTime"],name:"Double click interval (maximum)",tooltip:"The maximum time in milliseconds between the two clicks of a double-click. Increasing this value may assist if double-clicks are sometimes not registered.",type:"slider",attrs:{min:100,max:1e3,step:50},defaultValue:300,versionAdded:"1.4.3"},{id:"Comfy.SnapToGrid.GridSize",category:["LiteGraph","Canvas","GridSize"],name:"Snap to grid size",type:"slider",attrs:{min:1,max:500},tooltip:"When dragging and resizing nodes while holding shift they will be aligned to the grid, this controls the size of that grid.",defaultValue:me.CANVAS_GRID_SIZE},{id:"pysssss.SnapToGrid",category:["LiteGraph","Canvas","AlwaysSnapToGrid"],name:"Always snap to grid",type:"boolean",defaultValue:!1,versionAdded:"1.3.13"},{id:"Comfy.Server.ServerConfigValues",name:"Server config values for frontend display",tooltip:"Server config values used for frontend display only",type:"hidden",defaultValue:{},versionAdded:"1.4.8"},{id:"Comfy.Server.LaunchArgs",name:"Server launch arguments",tooltip:"These are the actual arguments that are passed to the server when it is launched.",type:"hidden",defaultValue:{},versionAdded:"1.4.8"},{id:"Comfy.Queue.MaxHistoryItems",name:"Queue history size",tooltip:"The maximum number of tasks that show in the queue history.",type:"slider",attrs:{min:2,max:256,step:2},defaultValue:64,versionAdded:"1.4.12"},{id:"Comfy.Execution.PreviewMethod",category:["Comfy","Execution","PreviewMethod"],name:"Live preview method",tooltip:'Live preview method during image generation. "default" uses the server CLI setting.',type:"combo",options:["default","none","auto","latent2rgb","taesd"],defaultValue:"default",versionAdded:"1.36.0"},{id:"LiteGraph.Canvas.MaximumFps",name:"Maximum FPS",tooltip:"The maximum frames per second that the canvas is allowed to render. Caps GPU usage at the cost of smoothness. If 0, the screen refresh rate is used. Default: 0",type:"slider",attrs:{min:0,max:120},defaultValue:0,versionAdded:"1.5.1"},{id:"Comfy.EnableWorkflowViewRestore",category:["Comfy","Workflow","EnableWorkflowViewRestore"],name:"Save and restore canvas position and zoom level in workflows",type:"boolean",defaultValue:!0,versionModified:"1.5.4"},{id:"Comfy.Workflow.ConfirmDelete",name:"Show confirmation when deleting workflows",type:"boolean",defaultValue:!0,versionAdded:"1.5.6"},{id:"Comfy.ColorPalette",name:"The active color palette id",type:"hidden",defaultValue:"dark",versionModified:"1.6.7",migrateDeprecatedValue(e){return e.startsWith("custom_")?e.replace("custom_",""):e}},{id:"Comfy.CustomColorPalettes",name:"Custom color palettes",type:"hidden",defaultValue:{},versionModified:"1.6.7"},{id:"Comfy.WidgetControlMode",category:["Comfy","Node Widget","WidgetControlMode"],name:"Widget control mode",tooltip:"Controls when widget values are updated (randomize/increment/decrement), either before the prompt is queued or after.",type:"combo",defaultValue:"after",options:["before","after"],versionModified:"1.6.10"},{id:"Comfy.TutorialCompleted",name:"Tutorial completed",type:"hidden",defaultValue:!1,versionAdded:"1.8.7"},{id:"Comfy.InstalledVersion",name:"The frontend version that was running when the user first installed ComfyUI",type:"hidden",defaultValue:null,versionAdded:"1.24.0"},{id:"LiteGraph.ContextMenu.Scaling",name:"Scale node combo widget menus (lists) when zoomed in",defaultValue:!1,type:"boolean",versionAdded:"1.8.8"},{id:"LiteGraph.Canvas.LowQualityRenderingZoomThreshold",type:"hidden",deprecated:!0,name:"Low quality rendering zoom threshold (deprecated)",tooltip:"Zoom level threshold for performance mode. Lower values (0.1) = quality at all zoom levels. Higher values (1.0) = performance mode even when zoomed in. Performance mode simplifies rendering by hiding text labels, shadows, and details.",attrs:{min:.1,max:1,step:.01},defaultValue:.6,versionAdded:"1.9.1",versionModified:"1.26.7"},{id:"LiteGraph.Canvas.MinFontSizeForLOD",name:"Zoom Node Level of Detail - font size threshold",tooltip:"Controls when the nodes switch to low quality LOD rendering. Uses font size in pixels to determine when to switch. Set to 0 to disable. Values 1-24 set the minimum font size threshold for LOD - higher values (24px) = switch nodes to simplified rendering sooner when zooming out, lower values (1px) = maintain full node quality longer.",type:"slider",attrs:{min:0,max:24,step:1},defaultValue:8,versionAdded:"1.26.7",hideInVueNodes:!0},{id:"Comfy.Canvas.SelectionToolbox",category:["LiteGraph","Canvas","SelectionToolbox"],name:"Show selection toolbox",type:"boolean",defaultValue:!0,versionAdded:"1.10.5"},{id:"LiteGraph.Reroute.SplineOffset",name:"Reroute spline offset",tooltip:"The bezier control point offset from the reroute centre point",type:"slider",defaultValue:20,attrs:{min:0,max:400},versionAdded:"1.15.7"},{id:"Comfy.Toast.DisableReconnectingToast",name:"Disable toasts when reconnecting or reconnected",type:"hidden",defaultValue:!1,versionAdded:"1.15.12"},{id:"Comfy.Minimap.Visible",name:"Display minimap on canvas",type:"hidden",defaultValue:window.innerWidth>=Yo.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:"newest"},{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"}];function Cw(){const e=Pe(),o=ie(),t=ot(),s=k(()=>o.get("Comfy.Workflow.AutoSave")),a=k(()=>o.get("Comfy.Workflow.AutoSaveDelay"));let l=null,i=!1,r=!1;const u=n(()=>{if(l&&(clearTimeout(l),l=null),s.value==="after delay"){if(i){r=!0;return}const v=a.value;l=setTimeout(async()=>{const h=e.activeWorkflow;if(h?.isModified&&h.isPersisted)try{i=!0,await t.saveWorkflow(h)}catch(d){console.error("Auto save failed:",d)}finally{i=!1,r&&(r=!1,u())}},v)}},"scheduleAutoSave");se(s,v=>{l&&(clearTimeout(l),l=null),v==="after delay"&&e.activeWorkflow?.isModified&&u()},{immediate:!0});const p=n(()=>{u()},"onGraphChanged");we.addEventListener("graphChanged",p),lt(()=>{l&&(clearTimeout(l),l=null),we.removeEventListener("graphChanged",p)})}n(Cw,"useWorkflowAutoSave");function Sw(){const e=xa(),o=_a(),{t}=de(),s=Rt(),a=yl(),l=fe(),i=Za.TEMPLATE,r=["linear"],u=n(d=>/^[a-zA-Z0-9_.-]+$/.test(d),"isValidParameter"),p=n(d=>r.includes(d),"isSupportedMode"),v=n(()=>{const d={...e.query};delete d.template,delete d.source,delete d.mode,o.replace({query:d})},"cleanupUrlParams");return{loadTemplateFromUrl:n(async()=>{const d=e.query.template;if(!d||typeof d!="string")return;if(!u(d)){console.warn(`[useTemplateUrlLoader] Invalid template parameter format: ${d}`);return}const b=e.query.source||"default";if(!u(b)){console.warn(`[useTemplateUrlLoader] Invalid source parameter format: ${b}`);return}const y=e.query.mode;if(y&&(typeof y!="string"||!u(y))){console.warn(`[useTemplateUrlLoader] Invalid mode parameter format: ${y}`);return}y&&!p(y)&&console.warn(`[useTemplateUrlLoader] Unsupported mode parameter: ${y}. Supported modes: ${r.join(", ")}`);try{await a.loadTemplates(),await a.loadWorkflowTemplate(d,b)?y==="linear"&&(l.linearMode=!0):s.add({severity:"error",summary:t("g.error"),detail:t("templateWorkflows.error.templateNotFound",{templateName:d}),life:3e3})}catch(g){console.error("[useTemplateUrlLoader] Failed to load template from URL:",g),s.add({severity:"error",summary:t("g.error"),detail:t("g.errorLoadingTemplate"),life:3e3})}finally{v(),Er(i)}},"loadTemplateFromUrl")}}n(Sw,"useTemplateUrlLoader");function xw(){const e=Pe(),o=ie(),t=xa(),s=_a(),a=Sw(),l=Za.TEMPLATE,i=n(async()=>{Lr(l);const x=Vr(l,t.query);return x&&await s.replace({query:x}),x??t.query},"ensureTemplateQueryFromIntent"),r=k(()=>o.get("Comfy.Workflow.Persist")),u=n(()=>{if(!r.value)return;const x=JSON.stringify(J.rootGraph.serialize());try{localStorage.setItem("workflow",x),we.clientId&&sessionStorage.setItem(`workflow:${we.clientId}`,x)}catch(D){const P=Object.keys(sessionStorage).filter(T=>T.startsWith("workflow:")||T==="workflow");throw console.error("QuotaExceededError details:",{workflowSizeKB:Math.round(x.length/1024),totalStorageItems:Object.keys(sessionStorage).length,ourWorkflowKeys:P.length,ourWorkflowSizes:P.map(T=>({key:T,sizeKB:Math.round(sessionStorage[T].length/1024)})),error:D instanceof Error?D.message:String(D)}),D}},"persistCurrentWorkflow"),p=n(async(x,D)=>{if(!x)return!1;const P=JSON.parse(x);return await J.loadGraphData(P,!0,!0,D),!0},"loadWorkflowFromStorage"),v=n(async()=>{const x=un("Comfy.PreviousWorkflow"),D=we.initialClientId??we.clientId;if(D){const T=sessionStorage.getItem(`workflow:${D}`);if(await p(T,x))return!0}const P=localStorage.getItem("workflow");return await p(P,x)},"loadPreviousWorkflowFromStorage"),h=n(async()=>{o.get("Comfy.TutorialCompleted")?await J.loadGraphData():(await o.set("Comfy.TutorialCompleted",!0),await ot().loadBlankWorkflow(),await Ce().execute("Comfy.BrowseTemplates"))},"loadDefaultWorkflow"),d=n(async()=>{if(r.value)try{await v()||await h()}catch(x){console.error("Error loading previous workflow",x),await h()}},"initializeWorkflow"),b=n(async()=>{const x=await i();x.template&&typeof x.template=="string"&&await a.loadTemplateFromUrl()},"loadTemplateFromUrlIfPresent");se(()=>e.activeWorkflow?.key,x=>{x&&(cn("Comfy.PreviousWorkflow",x),u())}),we.addEventListener("graphChanged",u),ka(()=>{we.removeEventListener("graphChanged",u)});const y=k(()=>e.openWorkflows),g=k(()=>e.activeWorkflow),c=k(()=>{if(!y.value||!g.value)return{paths:[],activeIndex:-1};const x=y.value.filter(P=>P?.isPersisted).map(P=>P.path),D=y.value.findIndex(P=>P.path===g.value?.path);return{paths:x,activeIndex:D}}),w=JSON.parse(un("Comfy.OpenWorkflowsPaths")||"[]"),_=JSON.parse(un("Comfy.ActiveWorkflowIndex")||"-1");return se(c,({paths:x,activeIndex:D})=>{r.value&&(cn("Comfy.OpenWorkflowsPaths",JSON.stringify(x)),cn("Comfy.ActiveWorkflowIndex",JSON.stringify(D)))}),{initializeWorkflow:d,loadTemplateFromUrlIfPresent:b,restoreWorkflowTabsState:n(()=>{if(!r.value)return;w?.length>0&&_>=0&&e.openWorkflowsInBackground({left:w.slice(0,_),right:w.slice(_)})},"restoreWorkflowTabsState")}}n(xw,"useWorkflowPersistence");function _w(e,o={}){const{settleDelay:t=256,passive:s=!0}=o,a=E(!1),l=n(()=>{a.value=!0},"markTransformActive"),i=Kl(()=>{a.value=!1},t);return Ae(e,"wheel",n(()=>{l(),i()},"handleWheel"),{capture:!0,passive:s}),{isTransforming:a}}n(_w,"useTransformSettling");function Tw(){const e=ha({x:0,y:0,z:1}),o=k(()=>({transform:`scale(${e.z}) translate(${e.x}px, ${e.y}px)`,transformOrigin:"0 0"}));function t(d){!d||!d.ds||(e.x=d.ds.offset[0],e.y=d.ds.offset[1],e.z=d.ds.scale||1)}n(t,"syncWithCanvas");function s(d){return{x:(d.x+e.x)*e.z,y:(d.y+e.y)*e.z}}n(s,"canvasToScreen");const a=n(d=>({x:d.x/e.z-e.x,y:d.y/e.z-e.y}),"screenToCanvas");function l(d,b){const y=s({x:d[0],y:d[1]}),g=b[0]*e.z,c=b[1]*e.z;return new DOMRect(y.x,y.y,g,c)}n(l,"getNodeScreenBounds");function i(d){return e.z<.1?Math.min(d*5,2):e.z>3?Math.max(d*.5,.05):d}n(i,"calculateAdjustedMargin");function r(d){return Math.max(d[0],d[1])*e.z<4}n(r,"isNodeTooSmall");function u(d,b){const y=d.width*b,g=d.height*b;return{left:-y,right:d.width+y,top:-g,bottom:d.height+g}}n(u,"getExpandedViewportBounds");function p(d,b,y){const g=d.x+b[0]*e.z,c=d.y+b[1]*e.z;return!(g<y.left||d.x>y.right||c<y.top||d.y>y.bottom)}n(p,"testViewportIntersection");function v(d,b,y,g=.2){if(r(b))return!1;const c=s({x:d[0],y:d[1]}),w=i(g),_=u(y,w);return p(c,b,_)}n(v,"isNodeInViewport");function h(d,b=.2){const y=d.width*b,g=d.height*b,c=a({x:-y,y:-g}),w=a({x:d.width+y,y:d.height+g});return{x:c.x,y:c.y,width:w.x-c.x,height:w.y-c.y}}return n(h,"getViewportBounds"),{camera:Tn(e),transformStyle:o,syncWithCanvas:t,canvasToScreen:s,screenToCanvas:a,getNodeScreenBounds:l,isNodeInViewport:v,getViewportBounds:h}}n(Tw,"useTransformStateIndividual");const gs=Zo(Tw),Nw=H({__name:"TransformPane",props:{canvas:{}},setup(e){const o=e,{transformStyle:t,syncWithCanvas:s}=gs(),a=k(()=>o.canvas?.canvas),{isTransforming:l}=_w(a,{settleDelay:16});return eo(()=>{o.canvas&&s(o.canvas)},{immediate:!0}),(i,r)=>(m(),N("div",{"data-testid":"transform-pane",class:Q(C(pe)("absolute inset-0 w-full h-full pointer-events-none",C(l)?"transform-pane--interacting":"will-change-auto")),style:ve(C(t))},[Ne(i.$slots,"default",{},void 0,!0)],6))}}),$w=De(Nw,[["__scopeId","data-v-4d46eee6"]]),Iw={class:"flex items-center gap-2"},Mw={for:"node-colors"},Pw={class:"flex items-center gap-2"},Dw={for:"show-links"},Aw={class:"flex items-center gap-2"},Ew={for:"show-groups"},Lw={class:"flex items-center gap-2"},Vw={for:"render-bypass"},Ow={class:"flex items-center gap-2"},Rw={for:"render-error"},Ww=H({__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)=>(m(),N("div",{class:"minimap-panel mr-2 flex flex-col gap-2 bg-comfy-menu-bg p-3 text-sm shadow-interface",style:ve(o.panelStyles)},[f("div",Iw,[W(C(uo),{"input-id":"node-colors",name:"node-colors","model-value":o.nodeColors,binary:"","onUpdate:modelValue":t[0]||(t[0]=s=>o.$emit("updateOption","Comfy.Minimap.NodeColors",s))},null,8,["model-value"]),t[5]||(t[5]=f("i",{class:"icon-[lucide--palette]"},null,-1)),f("label",Mw,z(o.$t("minimap.nodeColors")),1)]),f("div",Pw,[W(C(uo),{"input-id":"show-links",name:"show-links","model-value":o.showLinks,binary:"","onUpdate:modelValue":t[1]||(t[1]=s=>o.$emit("updateOption","Comfy.Minimap.ShowLinks",s))},null,8,["model-value"]),t[6]||(t[6]=f("i",{class:"icon-[lucide--route]"},null,-1)),f("label",Dw,z(o.$t("minimap.showLinks")),1)]),f("div",Aw,[W(C(uo),{"input-id":"show-groups",name:"show-groups","model-value":o.showGroups,binary:"","onUpdate:modelValue":t[2]||(t[2]=s=>o.$emit("updateOption","Comfy.Minimap.ShowGroups",s))},null,8,["model-value"]),t[7]||(t[7]=f("i",{class:"icon-[lucide--frame]"},null,-1)),f("label",Ew,z(o.$t("minimap.showGroups")),1)]),f("div",Lw,[W(C(uo),{"input-id":"render-bypass",name:"render-bypass","model-value":o.renderBypass,binary:"","onUpdate:modelValue":t[3]||(t[3]=s=>o.$emit("updateOption","Comfy.Minimap.RenderBypassState",s))},null,8,["model-value"]),t[8]||(t[8]=f("i",{class:"icon-[lucide--circle-slash-2]"},null,-1)),f("label",Vw,z(o.$t("minimap.renderBypassState")),1)]),f("div",Ow,[W(C(uo),{"input-id":"render-error",name:"render-error","model-value":o.renderError,binary:"","onUpdate:modelValue":t[4]||(t[4]=s=>o.$emit("updateOption","Comfy.Minimap.RenderErrorState",s))},null,8,["model-value"]),t[9]||(t[9]=f("i",{class:"icon-[lucide--message-circle-warning]"},null,-1)),f("label",Rw,z(o.$t("minimap.renderErrorState")),1)])],4))}}),zw=["width","height"],Bw=H({__name:"MiniMap",setup(e){const o=Ce(),t=E(),s=xn("containerRef"),a=xn("canvasRef"),{initialized:l,visible:i,containerStyles:r,viewportStyles:u,width:p,height:v,panelStyles:h,nodeColors:d,showLinks:b,showGroups:y,renderBypass:g,renderError:c,updateOption:w,destroy:_,handlePointerDown:S,handlePointerMove:x,handlePointerUp:D,handlePointerCancel:P,handleWheel:T,setMinimapRef:$}=is({containerRefMaybe:s,canvasRefMaybe:a}),I=E(!1),B=n(()=>{I.value=!I.value},"toggleOptionsPanel");return Le(()=>{t.value&&$(t.value)}),lt(()=>{_()}),(G,M)=>C(i)&&C(l)?(m(),N("div",{key:0,ref_key:"minimapRef",ref:t,class:"minimap-main-container absolute right-0 bottom-[54px] z-1000 flex"},[I.value?(m(),F(Ww,{key:0,"panel-styles":C(h),"node-colors":C(d),"show-links":C(b),"show-groups":C(y),"render-bypass":C(g),"render-error":C(c),onUpdateOption:C(w)},null,8,["panel-styles","node-colors","show-links","show-groups","render-bypass","render-error","onUpdateOption"])):O("",!0),f("div",{ref_key:"containerRef",ref:s,class:"litegraph-minimap relative border border-interface-stroke bg-comfy-menu-bg shadow-interface",style:ve(C(r))},[W(ee,{class:"absolute top-0 left-0 z-10",size:"icon",variant:"muted-textonly","aria-label":G.$t("g.settings"),onClick:ke(B,["stop"])},{default:L(()=>M[7]||(M[7]=[f("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["aria-label"]),W(ee,{class:"absolute top-0 right-0 z-10",size:"icon",variant:"muted-textonly","aria-label":G.$t("g.close"),"data-testid":"close-minmap-button",onClick:M[0]||(M[0]=ke(()=>C(o).execute("Comfy.Canvas.ToggleMinimap"),["stop"]))},{default:L(()=>M[8]||(M[8]=[f("i",{class:"icon-[lucide--x]"},null,-1)])),_:1},8,["aria-label"]),f("hr",{class:"absolute top-6 h-px border-0 bg-node-component-border",style:ve({width:C(r).width})},null,4),f("canvas",{ref_key:"canvasRef",ref:a,width:C(p),height:C(v),class:"minimap-canvas"},null,8,zw),f("div",{class:"minimap-viewport",style:ve(C(u))},null,4),f("div",{class:"absolute inset-0 touch-none",onPointerdown:M[1]||(M[1]=(...V)=>C(S)&&C(S)(...V)),onPointermove:M[2]||(M[2]=(...V)=>C(x)&&C(x)(...V)),onPointerup:M[3]||(M[3]=(...V)=>C(D)&&C(D)(...V)),onPointerleave:M[4]||(M[4]=(...V)=>C(D)&&C(D)(...V)),onPointercancel:M[5]||(M[5]=(...V)=>C(P)&&C(P)(...V)),onWheel:M[6]||(M[6]=(...V)=>C(T)&&C(T)(...V))},null,32)],4)],512)):O("",!0)}}),Fw=De(Bw,[["__scopeId","data-v-66f11255"]]);function Vn(e){return e.ctrlKey||e.metaKey||e.shiftKey}n(Vn,"isMultiSelectKey");function Uw(){const e=fe(),{nodeManager:o}=ps(),{bringNodeToFront:t}=el(),{shouldHandleNodePointerEvents:s}=lo();function a(p,v){if(!s.value||!e.canvas||!o.value)return;const h=o.value.getNode(v);if(!h)return;const d=Vn(p),b=e.selectedItems.length,y=!d&&h.selected&&b>1;d?h.selected||e.canvas.select(h):y||(e.canvas.deselectAll(),e.canvas.select(h)),h.flags?.pinned||t(v),e.updateSelectedItems()}n(a,"handleNodeSelect");function l(p,v){if(!s.value||!o.value)return;const h=o.value.getNode(p);if(!h)return;(h.flags?.collapsed??!1)!==v&&h.collapse()}n(l,"handleNodeCollapse");function i(p,v){if(!s.value||!o.value)return;const h=o.value.getNode(p);h&&(h.title=v)}n(i,"handleNodeTitleUpdate");function r(p,v){if(!s.value||!e.canvas||!o.value)return;const h=o.value.getNode(v);h&&(p.preventDefault(),h.selected||a(p,v))}n(r,"handleNodeRightClick");function u(p,v){if(!s.value||!e.canvas||!o.value)return;const h=o.value.getNode(p);if(h){if(!v){e.canvas.deselectAll(),e.canvas.select(h),e.updateSelectedItems(),h.flags?.pinned||t(p);return}h.selected?e.canvas.deselect(h):(e.canvas.select(h),h.flags?.pinned||t(p)),e.updateSelectedItems()}}return n(u,"toggleNodeSelectionAfterPointerUp"),{handleNodeSelect:a,handleNodeCollapse:l,handleNodeTitleUpdate:i,handleNodeRightClick:r,toggleNodeSelectionAfterPointerUp:u}}n(Uw,"useNodeEventHandlersIndividual");const Sl=Zo(Uw);function xl(){const e=ie(),o=k(()=>e.get("Comfy.SnapToGrid.GridSize")),t=k(()=>e.get("pysssss.SnapToGrid"));function s(i){return i.shiftKey||t.value}n(s,"shouldSnap");function a(i){const r=o.value;if(!r)return{...i};const u=[i.x,i.y];return Ts(u,r)?{x:u[0],y:u[1]}:{...i}}n(a,"applySnapToPosition");function l(i){const r=o.value;if(!r)return{...i};const u=[i.width,i.height];return Ts(u,r)?{width:u[0],height:u[1]}:{...i}}return n(l,"applySnapToSize"),{gridSize:o,alwaysSnap:t,shouldSnap:s,applySnapToPosition:a,applySnapToSize:l}}n(xl,"useNodeSnap");function _l(){const e=Je(!1);let o=null;function t(a){a!==e.value&&(!o&&(o=J.canvas?.canvas??null,!o)||(e.value=a,o.dispatchEvent(new KeyboardEvent(a?"keydown":"keyup",{key:"Shift",shiftKey:a,bubbles:!0}))))}n(t,"syncShiftState");function s(a){t(a.shiftKey);const l=n(u=>{u.key==="Shift"&&t(u.shiftKey)},"handleKeyEvent"),i=Ae(window,"keydown",l,{passive:!0}),r=Ae(window,"keyup",l,{passive:!0});return()=>{i(),r()}}return n(s,"trackShiftKey"),ka(()=>{e.value=!1,o=null}),{trackShiftKey:s}}n(_l,"useShiftKeySync");const Tl=Zo(Gw);function Gw(){const e=nn(),{selectedNodeIds:o,selectedItems:t}=Fe(fe()),s=gs(),{shouldSnap:a,applySnapToPosition:l}=xl(),{trackShiftKey:i}=_l();let r=null,u=null,p=null,v=null,h=null,d=null,b=null;function y(w,_){const S=ze(Me.getNodeLayoutRef(_));if(!S)return;const x=S.position??{x:0,y:0};h=i(w),r={...x},u={x:w.clientX,y:w.clientY};const D=ze(o),P=D?.has(_);if(P&&D.size>1){p=new Map;for(const T of D){if(T===_)continue;const $=Me.getNodeLayoutRef(T).value;$&&p.set(T,{...$.position})}}else p=null;P?(b=ze(t).filter(Zn),d={x:0,y:0}):(b=null,d=null),e.setSource(go.Vue)}n(y,"startDrag");function g(w,_){if(!r||!u||v!==null)return;const{target:S,pointerId:x}=w;S instanceof HTMLElement&&!S.hasPointerCapture(x)&&S.setPointerCapture(x),v=requestAnimationFrame(()=>{if(v=null,!r||!u)return;const D={x:w.clientX-u.x,y:w.clientY-u.y},P=s.screenToCanvas({x:0,y:0}),T=s.screenToCanvas(D),$={x:T.x-P.x,y:T.y-P.y},I={x:r.x+$.x,y:r.y+$.y};if(e.moveNode(_,I),p&&p.size>0)for(const[B,G]of p){const M={x:G.x+$.x,y:G.y+$.y};e.moveNode(B,M)}if(b&&b.length>0&&d){const B={x:$.x-d.x,y:$.y-d.y};for(const G of b)G.move(B.x,B.y,!0)}d=$})}n(g,"handleDrag");function c(w,_){if(a(w)&&_){const S=[],x=ze(Me.getNodeLayoutRef(_));if(x){const D=x.position,P=l({...D});(P.x!==D.x||P.y!==D.y)&&S.push({nodeId:_,bounds:{x:P.x,y:P.y,width:x.size.width,height:x.size.height}})}if(p&&p.size>0)for(const D of p.keys()){const P=Me.getNodeLayoutRef(D).value;if(P){const T={...P.position},$=l(T);($.x!==T.x||$.y!==T.y)&&S.push({nodeId:D,bounds:{x:$.x,y:$.y,width:P.size.width,height:P.size.height}})}}S.length>0&&Me.batchUpdateNodeBounds(S)}r=null,u=null,p=null,b=null,d=null,h?.(),h=null,v!==null&&(cancelAnimationFrame(v),v=null)}return n(c,"endDrag"),{startDrag:y,handleDrag:g,endDrag:c}}n(Gw,"useNodeDragIndividual");function jw(e){const{startDrag:o,endDrag:t,handleDrag:s}=Tl(),{forwardEventToCanvas:a,shouldHandleNodePointerEvents:l}=lo(),{handleNodeSelect:i,toggleNodeSelectionAfterPointerUp:r}=Sl(),{nodeManager:u}=ps(),p=n(P=>Or(P)?(a(P),!0):!1,"forwardMiddlePointerIfNeeded");let v=!1;const h=E({x:0,y:0}),d=3;function b(P){if(p(P)||P.button!==0)return;if(!l.value){a(P);return}const T=ze(e);if(!T){console.warn("LGraphNode: nodeData is null/undefined in handlePointerDown");return}u.value?.getNode(T)?.flags?.pinned||(h.value={x:P.clientX,y:P.clientY},c(P,T))}n(b,"onPointerdown");function y(P){if(p(P)||Me.isResizingVueNodes.value)return;const T=ze(e);if(u.value?.getNode(T)?.flags?.pinned)return;const $=Vn(P),I=P.buttons&1;if(I&&$&&!Me.isDraggingVueNodes.value){Me.isDraggingVueNodes.value=!0,i(P,T),c(P,T);return}if(I&&!Me.isDraggingVueNodes.value){const B=P.clientX-h.value.x,G=P.clientY-h.value.y;Math.sqrt(B*B+G*G)>d&&(Me.isDraggingVueNodes.value=!0,i(P,T))}Me.isDraggingVueNodes.value&&s(P,T)}n(y,"onPointermove");function g(){Me.isDraggingVueNodes.value=!1}n(g,"cleanupDragState");function c(P,T){try{o(P,T)}finally{v=!0}}n(c,"safeDragStart");function w(P){try{const T=ze(e);t(P,T)}catch(T){console.error("Error during endDrag:",T)}finally{v=!1,g()}}n(w,"safeDragEnd");function _(P){if(p(P))return;if(!l.value){a(P);return}const $=Me.isDraggingVueNodes.value;if((v||$)&&(w(P),$)||P.button===2)return;const I=Vn(P),B=ze(e);B&&r(B,I)}n(_,"onPointerup");function S(P){Me.isDraggingVueNodes.value&&w(P)}n(S,"onPointercancel");function x(P){Me.isDraggingVueNodes.value&&(P.preventDefault(),g())}return n(x,"onContextmenu"),Jl(()=>{g()}),{pointerHandlers:{onPointerdown:b,onPointermove:y,onPointerup:_,onPointercancel:S,onContextmenu:x}}}n(jw,"useNodePointerInteractions");const Ko=new Map([["node",{dataAttribute:"nodeId",updateHandler:n(e=>{const o=e.map(({id:t,bounds:s})=>({nodeId:t,bounds:s}));Me.batchUpdateNodeBounds(o)},"updateHandler")}]]),na=new ResizeObserver(e=>{if(fe().linearMode)return;const o=Xa(),t=new Map,s=new Set;for(const a of e){if(!(a.target instanceof HTMLElement))continue;const l=a.target;let i,r;for(const[w,_]of Ko){const S=l.dataset[_.dataAttribute];if(S){i=w,r=S;break}}if(!i||!r)continue;const u=Array.isArray(a.borderBoxSize)?a.borderBoxSize[0]:{inlineSize:a.contentRect.width,blockSize:a.contentRect.height},p=u.inlineSize,v=u.blockSize,h=l.getBoundingClientRect(),[d,b]=o.clientPosToCanvasPos([h.left,h.top]),y={x:d,y:b},g={x:y.x,y:y.y+me.NODE_TITLE_HEIGHT,width:Math.max(0,p),height:Math.max(0,v)};let c=t.get(i);c||(c=[],t.set(i,c)),c.push({id:r,bounds:g}),i==="node"&&r&&s.add(r)}Me.setSource(go.DOM);for(const[a,l]of t){const i=Ko.get(a);i&&l.length&&i.updateHandler(l)}if(s.size>0)for(const a of s)Rr(a)});function Hw(e,o){const t=ze(e);Le(()=>{const s=Cs()?.proxy?.$el;if(!(s instanceof HTMLElement)||!t)return;const a=Ko.get(o);a&&(s.dataset[a.dataAttribute]=t,na.observe(s))}),lt(()=>{const s=Cs()?.proxy?.$el;if(!(s instanceof HTMLElement))return;const a=Ko.get(o);a&&(delete s.dataset[a.dataAttribute],na.unobserve(s))})}n(Hw,"useVueElementTracking");const qw=n(e=>{const o=k(()=>ze(e)??""),{nodeLocationProgressStates:t,isIdle:s}=Fe(Qe()),a=k(()=>{const p=o.value;return p?t.value[p]:void 0}),l=k(()=>!s.value&&a.value?.state==="running"),i=k(()=>{const p=a.value;return p&&p.max>0?p.value/p.max:void 0}),r=k(()=>{const p=i.value;return p!==void 0?Math.round(p*100):void 0}),u=k(()=>{const p=a.value;return p?p.state:"idle"});return{executing:l,progress:i,progressPercentage:r,progressState:a,executionState:u}},"useNodeExecutionState");function Kw(e){const o=ze(e),t=nn(),s=Me.getNodeLayoutRef(o);lt(()=>{Me.cleanupNodeRef(o)});const a=k(()=>s.value?.position??{x:0,y:0}),l=k(()=>s.value?.size??{width:200,height:100}),i=k(()=>s.value?.zIndex??0);function r(u){t.setSource(go.Vue),t.moveNode(o,u)}return n(r,"moveNodeTo"),{position:a,size:l,zIndex:i,moveNodeTo:r}}n(Kw,"useNodeLayout");const Jw=n((e,o)=>{const t=ze(e),s=Pe(),{nodePreviewImages:a}=Fe(Co()),l=k(()=>s.nodeIdToNodeLocatorId(t)),i=k(()=>{const v=l.value;if(!v)return;const h=a.value[v];return h?.length?h:void 0}),r=k(()=>!!i.value?.length),u=k(()=>{const v=i.value;return v?.length?v.at(-1):""}),p=k(()=>o?.isCollapsed?!o.isCollapsed.value&&r.value:r.value);return{locatorId:l,previewUrls:i,hasPreview:r,latestPreviewUrl:u,shouldShowPreviewImg:p}},"useNodePreviewState");function Yw(e){const o=gs(),t=E(!1),s=E(null),a=E(null),{shouldSnap:l,applySnapToSize:i}=xl(),{trackShiftKey:r}=_l();return{startResize:n(p=>{p.preventDefault(),p.stopPropagation();const v=p.currentTarget;if(!(v instanceof HTMLElement))return;const h=v.closest("[data-node-id]");if(!(h instanceof HTMLElement))return;const d=h.getBoundingClientRect(),b=o.camera.z,y={width:d.width/b,height:d.height/b},g=r(p);v.setPointerCapture(p.pointerId),Me.isResizingVueNodes.value=!0,t.value=!0,s.value={x:p.clientX,y:p.clientY},a.value=y;const c=n(x=>{if(!t.value||!s.value||!a.value)return;const D=o.camera.z,P=(x.clientX-s.value.x)/(D||1),T=(x.clientY-s.value.y)/(D||1);let $={width:a.value.width+P,height:a.value.height+T};l(x)&&($=i($));const I=v.closest("[data-node-id]");I instanceof HTMLElement&&e({size:$},I)},"handlePointerMove"),w=n(x=>{t.value&&(t.value=!1,Me.isResizingVueNodes.value=!1,s.value=null,a.value=null,g(),v.releasePointerCapture(x.pointerId),_(),S())},"handlePointerUp"),_=Ae("pointermove",c),S=Ae("pointerup",w)},"startResize"),isResizing:t}}n(Yw,"useNodeResize");const Qw={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Xw(e,o){return m(),N("svg",Qw,[...o[0]||(o[0]=[f("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[f("path",{d:"m2 2l20 20M10.41 10.41a2 2 0 1 1-2.83-2.83m5.92 5.92L6 21m12-9l3 3"}),f("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(Xw,"render$1");const Zw=Ca({name:"lucide-image-off",render:Xw}),e0={key:0,class:"flex h-full min-h-16 w-full min-w-16 flex-col"},t0={class:"relative h-88 w-full grow overflow-hidden rounded-[5px] bg-node-component-surface"},o0={key:0,class:"text-pure-white flex h-full w-full flex-col items-center justify-center text-center"},n0={class:"text-xs text-smoke-400"},s0=["src","alt"],a0={class:"text-node-component-header-text mt-1 text-center text-xs"},l0=H({__name:"LivePreview",props:{imageUrl:{}},setup(e){const o=e,t=E(null),s=E(!1);se(()=>o.imageUrl,()=>{t.value=null,s.value=!1});const a=n(i=>{if(!i.target||!(i.target instanceof HTMLImageElement))return;const r=i.target;s.value=!1,r.naturalWidth&&r.naturalHeight&&(t.value=`${r.naturalWidth} x ${r.naturalHeight}`)},"handleImageLoad"),l=n(()=>{s.value=!0,t.value=null},"handleImageError");return(i,r)=>{const u=Zw;return i.imageUrl?(m(),N("div",e0,[f("div",t0,[s.value?(m(),N("div",o0,[W(u,{class:"mb-1 size-8 text-smoke-500"}),f("p",n0,z(i.$t("g.imageFailedToLoad")),1)])):(m(),N("img",{key:1,src:i.imageUrl,alt:i.$t("g.liveSamplingPreview"),class:"pointer-events-none h-full w-full object-contain object-center",onLoad:a,onError:l},null,40,s0))]),f("div",a0,z(s.value?i.$t("g.errorLoadingImage"):t.value||i.$t("g.calculatingDimensions")),1)])):O("",!0)}}}),i0=["aria-label","aria-busy"],r0={key:0,class:"flex size-full flex-col items-center justify-center bg-smoke-800/50 text-center text-white py-8"},u0={class:"text-sm text-smoke-300"},c0={class:"mt-1 text-xs text-smoke-400"},d0=["src"],p0={key:3,class:"actions absolute top-2 right-2 flex gap-2.5"},f0=["title","aria-label"],m0=["title","aria-label"],v0={key:4,class:"absolute right-2 bottom-2 left-2 flex justify-center gap-1"},g0=["aria-label","onClick"],h0={class:"mt-2 text-center text-xs text-muted-foreground"},y0={key:0,class:"text-red-400"},b0={key:1,class:"text-smoke-400"},w0={key:2},sa="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",k0=H({__name:"VideoPreview",props:{imageUrls:{},nodeId:{}},setup(e){const o=e,{t}=de(),s=Co(),a=E(0),l=E(!1),i=E(!1),r=E(null),u=E(!1),p=E(!1),v=E(),h=k(()=>o.imageUrls[a.value]),d=k(()=>o.imageUrls.length>1);se(()=>o.imageUrls,I=>{a.value>=I.length&&(a.value=0),r.value=null,u.value=!1,p.value=I.length>0},{deep:!0,immediate:!0});const b=n(I=>{if(!I.target||!(I.target instanceof HTMLVideoElement))return;const B=I.target;p.value=!1,u.value=!1,B.videoWidth&&B.videoHeight&&(r.value=`${B.videoWidth} x ${B.videoHeight}`)},"handleVideoLoad"),y=n(()=>{p.value=!1,u.value=!0,r.value=null},"handleVideoError"),g=n(()=>{try{tn(h.value)}catch{Rt().add({severity:"error",summary:"Error",detail:t("g.failedToDownloadVideo"),life:3e3,group:"video-preview"})}},"handleDownload"),c=n(()=>{o.nodeId&&s.removeNodeOutputs(o.nodeId)},"handleRemove"),w=n(I=>{I>=0&&I<o.imageUrls.length&&(a.value=I,r.value=null,p.value=!0,u.value=!1)},"setCurrentIndex"),_=n(()=>{l.value=!0},"handleMouseEnter"),S=n(()=>{l.value=!1},"handleMouseLeave"),x=n(()=>{i.value=!0},"handleFocusIn"),D=n(I=>{v.value?.contains(I.relatedTarget)||(i.value=!1)},"handleFocusOut"),P=n(I=>["w-2 h-2 rounded-full transition-all duration-200 border-0 cursor-pointer",I===a.value?"bg-white":"bg-white/50 hover:bg-white/80"],"getNavigationDotClass"),T=n(I=>{if(!(o.imageUrls.length<=1))switch(I.key){case"ArrowLeft":I.preventDefault(),w(a.value>0?a.value-1:o.imageUrls.length-1);break;case"ArrowRight":I.preventDefault(),w(a.value<o.imageUrls.length-1?a.value+1:0);break;case"Home":I.preventDefault(),w(0);break;case"End":I.preventDefault(),w(o.imageUrls.length-1);break}},"handleKeyDown"),$=n(I=>{try{return new URL(I).searchParams.get("filename")||"Unknown file"}catch{return"Invalid URL"}},"getVideoFilename");return(I,B)=>I.imageUrls.length>0?(m(),N("div",{key:0,class:"video-preview group relative flex size-full min-h-16 min-w-16 flex-col px-2",onKeydown:T},[f("div",{ref_key:"videoWrapperEl",ref:v,class:"relative h-full w-full grow overflow-hidden rounded-[5px] bg-node-component-surface",tabindex:"0",role:"region","aria-label":I.$t("g.videoPreview"),"aria-busy":p.value,onMouseenter:_,onMouseleave:S,onFocusin:x,onFocusout:D},[u.value?(m(),N("div",r0,[B[0]||(B[0]=f("i",{class:"mb-2 icon-[lucide--video-off] h-12 w-12 text-smoke-400"},null,-1)),f("p",u0,z(I.$t("g.videoFailedToLoad")),1),f("p",c0,z($(h.value)),1)])):O("",!0),p.value&&!u.value?(m(),F(C(jn),{key:1,class:"absolute inset-0 size-full","border-radius":"5px",width:"100%",height:"100%"})):O("",!0),u.value?O("",!0):(m(),N("video",{key:2,src:h.value,class:Q(C(pe)("block size-full object-contain",p.value&&"invisible")),controls:"",loop:"",playsinline:"",onLoadeddata:b,onError:y},null,42,d0)),l.value||i.value?(m(),N("div",p0,[f("button",{class:Q(sa),title:I.$t("g.downloadVideo"),"aria-label":I.$t("g.downloadVideo"),onClick:g},B[1]||(B[1]=[f("i",{class:"icon-[lucide--download] h-4 w-4"},null,-1)]),8,f0),f("button",{class:Q(sa),title:I.$t("g.removeVideo"),"aria-label":I.$t("g.removeVideo"),onClick:c},B[2]||(B[2]=[f("i",{class:"icon-[lucide--x] h-4 w-4"},null,-1)]),8,m0)])):O("",!0),d.value?(m(),N("div",v0,[(m(!0),N(le,null,be(I.imageUrls,(G,M)=>(m(),N("button",{key:M,class:Q(P(M)),"aria-label":I.$t("g.viewVideoOfTotal",{index:M+1,total:I.imageUrls.length}),onClick:n(V=>w(M),"onClick")},null,10,g0))),128))])):O("",!0)],40,i0),f("div",h0,[u.value?(m(),N("span",y0,z(I.$t("g.errorLoadingVideo")),1)):p.value?(m(),N("span",b0,z(I.$t("g.loading"))+"... ",1)):(m(),N("span",w0,z(r.value||I.$t("g.calculatingDimensions")),1))])],32)):O("",!0)}}),C0={width:"1.2em",height:"1.2em",xmlns:"http://www.w3.org/2000/svg",class:"",viewBox:"0 0 16 16",fill:"none"},S0=["clip-path"],x0=["id"];function _0(e,o){return m(),N("svg",C0,[f("g",{"clip-path":"url(#"+e.idMap.clip0_704_2695+")"},[...o[0]||(o[0]=[Yl('<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,S0),f("defs",null,[f("clipPath",{id:e.idMap.clip0_704_2695},[...o[1]||(o[1]=[f("rect",{width:"16",height:"16",fill:"white"},null,-1)])],8,x0)])])}n(_0,"render");const T0=Ca({name:"comfy-mask",render:_0,setup(){return{idMap:{clip0_704_2695:"uicons-"+n(()=>Math.random().toString(36).substr(2,10),"__randId")()}}}}),N0=["aria-label","aria-busy"],$0={key:0,role:"alert",class:"flex size-full flex-col items-center justify-center bg-muted-background text-center text-base-foreground py-8"},I0={class:"text-sm text-base-foreground"},M0={class:"mt-1 text-xs text-base-foreground"},P0={key:1,class:"size-full"},D0=["src","alt"],A0={key:3,class:"actions absolute top-2 right-2 flex gap-2.5"},E0=["title","aria-label"],L0=["title","aria-label"],V0=["title","aria-label"],O0={class:"pt-2 text-center text-xs text-base-foreground"},R0={key:0,class:"text-red-400"},W0={key:1,class:"text-base-foreground"},z0={key:2},B0={key:0,class:"flex justify-center gap-1 pt-4"},F0=["aria-current","aria-label","onClick"],kn="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",U0=H({__name:"ImagePreview",props:{imageUrls:{},nodeId:{}},setup(e){const o=e,{t}=de(),s=Ce(),a=Co(),l=E(0),i=E(!1),r=E(!1),u=E(null),p=E(!1),v=E(!1),h=E(),d=E(),{start:b,stop:y}=Ql(()=>{v.value=!0},250,{immediate:!1}),g=k(()=>o.imageUrls[l.value]),c=k(()=>o.imageUrls.length>1),w=k(()=>`Node output ${l.value+1}`);se(()=>o.imageUrls,j=>{l.value>=j.length&&(l.value=0),u.value=null,p.value=!1,j.length>0&&b()},{deep:!0,immediate:!0});const _=n(j=>{if(!j.target||!(j.target instanceof HTMLImageElement))return;const q=j.target;y(),v.value=!1,p.value=!1,q.naturalWidth&&q.naturalHeight&&(u.value=`${q.naturalWidth} x ${q.naturalHeight}`)},"handleImageLoad"),S=n(()=>{y(),v.value=!1,p.value=!0,u.value=null},"handleImageError"),x=n(()=>{if(!o.nodeId||!h.value)return;const j=J.rootGraph?.getNodeById(o.nodeId);j&&(j.imageIndex=l.value,j.imgs=[h.value],J.canvas?.select(j))},"setupNodeForMaskEditor"),D=n(()=>{x(),s.execute("Comfy.MaskEditor.OpenMaskEditor")},"handleEditMask"),P=n(()=>{try{tn(g.value)}catch{Rt().add({severity:"error",summary:"Error",detail:t("g.failedToDownloadImage"),life:3e3,group:"image-preview"})}},"handleDownload"),T=n(()=>{o.nodeId&&a.removeNodeOutputs(o.nodeId)},"handleRemove"),$=n(j=>{l.value!==j&&j>=0&&j<o.imageUrls.length&&(l.value=j,b(),p.value=!1)},"setCurrentIndex"),I=n(()=>{i.value=!0},"handleMouseEnter"),B=n(()=>{i.value=!1},"handleMouseLeave"),G=n(()=>{r.value=!0},"handleFocusIn"),M=n(j=>{d.value?.contains(j.relatedTarget)||(r.value=!1)},"handleFocusOut"),V=n(j=>["w-2 h-2 rounded-full transition-all duration-200 border-0 cursor-pointer p-0",j===l.value?"bg-base-foreground":"bg-base-foreground/50 hover:bg-base-foreground/80"],"getNavigationDotClass"),U=n(j=>{if(!(o.imageUrls.length<=1))switch(j.key){case"ArrowLeft":j.preventDefault(),$(l.value>0?l.value-1:o.imageUrls.length-1);break;case"ArrowRight":j.preventDefault(),$(l.value<o.imageUrls.length-1?l.value+1:0);break;case"Home":j.preventDefault(),$(0);break;case"End":j.preventDefault(),$(o.imageUrls.length-1);break}},"handleKeyDown"),R=n(j=>{try{return new URL(j).searchParams.get("filename")||"Unknown file"}catch{return"Invalid URL"}},"getImageFilename");return(j,q)=>{const K=T0;return j.imageUrls.length>0?(m(),N("div",{key:0,class:"image-preview group relative flex size-full min-h-16 min-w-16 flex-col px-2 justify-center",onKeydown:U},[f("div",{ref_key:"imageWrapperEl",ref:d,class:"h-full w-full overflow-hidden rounded-[5px] bg-muted-background relative",tabindex:"0",role:"img","aria-label":j.$t("g.imagePreview"),"aria-busy":v.value,onMouseenter:I,onMouseleave:B,onFocusin:G,onFocusout:M},[p.value?(m(),N("div",$0,[q[0]||(q[0]=f("i",{class:"mb-2 icon-[lucide--image-off] h-12 w-12 text-base-foreground"},null,-1)),f("p",I0,z(j.$t("g.imageFailedToLoad")),1),f("p",M0,z(R(g.value)),1)])):O("",!0),v.value&&!p.value?(m(),N("div",P0,[W(C(jn),{"border-radius":"5px",width:"100%",height:"100%"})])):O("",!0),p.value?O("",!0):(m(),N("img",{key:2,ref_key:"currentImageEl",ref:h,src:g.value,alt:w.value,class:"block size-full object-contain pointer-events-none",onLoad:_,onError:S},null,40,D0)),i.value||r.value?(m(),N("div",A0,[c.value?O("",!0):(m(),N("button",{key:0,class:Q(kn),title:j.$t("g.editOrMaskImage"),"aria-label":j.$t("g.editOrMaskImage"),onClick:D},[W(K,{class:"h-4 w-4"})],8,E0)),f("button",{class:Q(kn),title:j.$t("g.downloadImage"),"aria-label":j.$t("g.downloadImage"),onClick:P},q[1]||(q[1]=[f("i",{class:"icon-[lucide--download] h-4 w-4"},null,-1)]),8,L0),f("button",{class:Q(kn),title:j.$t("g.removeImage"),"aria-label":j.$t("g.removeImage"),onClick:T},q[2]||(q[2]=[f("i",{class:"icon-[lucide--x] h-4 w-4"},null,-1)]),8,V0)])):O("",!0)],40,N0),f("div",O0,[p.value?(m(),N("span",R0,z(j.$t("g.errorLoadingImage")),1)):v.value?(m(),N("span",W0,z(j.$t("g.loading"))+"... ",1)):(m(),N("span",z0,z(u.value||j.$t("g.calculatingDimensions")),1))]),c.value?(m(),N("div",B0,[(m(!0),N(le,null,be(j.imageUrls,(ne,ce)=>(m(),N("button",{key:ce,class:Q(V(ce)),"aria-current":ce===l.value?"true":void 0,"aria-label":j.$t("g.viewImageOfTotal",{index:ce+1,total:j.imageUrls.length}),onClick:n(X=>$(ce),"onClick")},null,10,F0))),128))])):O("",!0)],32)):O("",!0)}}}),G0={key:0,class:"node-error p-2 text-sm text-red-500"},j0={key:1,class:"lg-node-content flex grow flex-col"},H0=H({__name:"NodeContent",props:{nodeData:{},media:{}},setup(e){const o=e,t=k(()=>o.media&&o.media.urls.length>0),s=k(()=>o.nodeData?.id?.toString()),a=E(null),{toastErrorHandler:l}=Wt();return Sa(i=>(a.value=i.message,l(i),!1)),(i,r)=>a.value?(m(),N("div",G0,z(C(ye)("nodeErrors.content","Node Content Error")),1)):(m(),N("div",j0,[Ne(i.$slots,"default",{},()=>[t.value&&i.media?.type==="video"?(m(),F(k0,{key:0,"image-urls":i.media.urls,"node-id":s.value,class:"mt-2"},null,8,["image-urls","node-id"])):t.value&&i.media?.type==="image"?(m(),F(U0,{key:1,"image-urls":i.media.urls,"node-id":s.value,class:"mt-2"},null,8,["image-urls","node-id"])):O("",!0)])]))}}),q0={key:0,class:"node-error p-2 text-sm text-red-500"},K0=["data-node-id"],J0={key:0,class:"flex flex-col justify-center items-center relative"},Y0={class:"relative mb-1"},Q0=["data-testid"],X0={key:1,class:"min-h-0 flex-1 flex"},Z0={key:2,class:"min-h-0 flex-1 px-4"},e1=["aria-label"],t1="absolute h-3 w-3 opacity-0 pointer-events-auto focus-visible:outline focus-visible:outline-2 focus-visible:outline-white/40",o1=225,aa="h-2 bg-primary-500 transition-all duration-300",n1=H({__name:"LGraphNode",props:{nodeData:{},error:{default:null}},setup(e){const{t:o}=de(),{handleNodeCollapse:t,handleNodeTitleUpdate:s,handleNodeRightClick:a}=Sl(),{bringNodeToFront:l}=el();Hw(()=>e.nodeData.id,"node");const{selectedNodeIds:i}=Fe(fe()),r=k(()=>i.value.has(e.nodeData.id)),u=k(()=>dn(e.nodeData)),{executing:p,progress:v}=qw(u),h=Qe(),d=k(()=>h.lastExecutionErrorNodeId===e.nodeData.id),b=k(()=>!!(d.value||e.nodeData.hasErrors||e.error||(h.lastNodeErrors?.[e.nodeData.id]?.errors.length??0)>0)),y=k(()=>e.nodeData.titleMode!==Wr.NO_TITLE),g=k(()=>e.nodeData.flags?.collapsed??!1),c=k(()=>e.nodeData.mode===Ee.BYPASS),w=k(()=>e.nodeData.mode===Ee.NEVER),_=k(()=>{const Y=it();return e.nodeData.bgcolor?zr(e.nodeData.bgcolor,!!Y.completedActivePalette.light_theme):""}),S=k(()=>{const Y=ie().get("Comfy.Node.Opacity")??1;return c.value||w.value?Y*.5:Y}),x=k(()=>Br(e.nodeData).length>0),D=k(()=>!!e.nodeData.outputs?.length),{handleWheel:P,shouldHandleNodePointerEvents:T}=lo(),$=E(null),{toastErrorHandler:I}=Wt();Sa(Y=>($.value=Y.message,I(Y),!1));const{position:B,size:G,zIndex:M}=Kw(()=>e.nodeData.id),{pointerHandlers:V}=jw(()=>e.nodeData.id),{onPointerdown:U,...R}=V,{startDrag:j}=Tl();async function q(Y){if(Y.altKey&&ut.value){const Z=je.cloneNodes([ut.value]);if(Z?.created?.length){const[$e]=Z.created;j(Y,`${$e.id}`),Me.isDraggingVueNodes.value=!0,await Oe(),l(`${$e.id}`);return}}U(Y)}n(q,"nodeOnPointerdown");const K=n(Y=>{Y.preventDefault(),Y.stopPropagation(),a(Y,e.nodeData.id),Hv(Y)},"handleContextMenu");Le(()=>{ne()});function ne(){const Y=Mt.value,{width:Z,height:$e}=G.value;if(!Y)return;const te=g.value?"-x":"";Y.style.setProperty(`--node-width${te}`,`${Z}px`),Y.style.setProperty(`--node-height${te}`,`${$e}px`)}n(ne,"initSizeStyles");const{startResize:ce}=Yw((Y,Z)=>{if(g.value)return;const $e=Math.max(Y.size.width,o1);Z.style.setProperty("--node-width",`${$e}px`),Z.style.setProperty("--node-height",`${Y.size.height}px`)}),X=n(Y=>{Y.button===0&&T.value&&(e.nodeData.flags?.pinned||ce(Y))},"handleResizePointerDown");se(g,Y=>{const Z=Mt.value;if(!Z)return;const[$e,te]=Y?["","-x"]:["-x",""],Te=Z.style.getPropertyValue(`--node-width${$e}`);Z.style.setProperty(`--node-width${te}`,Te),Z.style.setProperty(`--node-width${$e}`,"");const Ve=Z.style.getPropertyValue(`--node-height${$e}`);Z.style.setProperty(`--node-height${te}`,Ve),Z.style.setProperty(`--node-height${$e}`,"")});const oe=k(()=>!!It.value&&It.value.urls.length>0),{latestPreviewUrl:ae,shouldShowPreviewImg:xe}=Jw(()=>e.nodeData.id,{isCollapsed:g}),Ue=k(()=>b.value?"border-node-stroke-error":!y.value&&e.nodeData.bgcolor&&Fr(e.nodeData.bgcolor)?"border-0":""),qe=k(()=>pe(r.value&&"outline-node-component-outline",b.value&&"outline-node-stroke-error",p.value&&"outline-node-stroke-executing")),nt=k(()=>pe(e.nodeData.flags?.pinned?"cursor-default":Me.isDraggingVueNodes.value?"cursor-grabbing":"cursor-grab")),He=k(()=>{switch(e.nodeData.shape){case Tt.BOX:return"rounded-none";case Tt.CARD:return"rounded-tl-2xl rounded-br-2xl rounded-tr-none rounded-bl-none";default:return"rounded-2xl"}}),Ge=k(()=>{switch(e.nodeData.shape){case Tt.BOX:return"before:rounded-none";case Tt.CARD:return"before:rounded-tl-2xl before:rounded-br-2xl before:rounded-tr-none before:rounded-bl-none";default:return"before:rounded-2xl"}}),bt=n(()=>{t(e.nodeData.id,!g.value)},"handleCollapse"),rt=n(Y=>{s(e.nodeData.id,Y)},"handleHeaderTitleUpdate"),Ft=n(()=>{const Y=J.rootGraph;if(!Y){console.warn("LGraphNode: No graph available for subgraph navigation");return}const Z=dn(e.nodeData),$e=Ns(Y,Z);if(!$e?.isSubgraphNode()||!("subgraph"in $e)){console.warn("LGraphNode: Node is not a valid subgraph node",$e);return}const te=J.canvas;if(!te||typeof te.openSubgraph!="function"){console.warn("LGraphNode: Canvas or openSubgraph method not available");return}te.openSubgraph($e.subgraph,$e)},"handleEnterSubgraph"),Ut=Co(),xt=k(()=>e.nodeData.subgraphId?`${e.nodeData.subgraphId}:${e.nodeData.id}`:e.nodeData.id),ut=k(()=>{const Y=dn(e.nodeData);return Ns(J.rootGraph,Y)}),It=k(()=>{const Y=Ut.nodeOutputs[xt.value],Z=ut.value;if(!Z||!Y?.images?.length)return;const $e=Ut.getNodeImageUrls(Z);if(!$e?.length)return;const te=Z.inputs?.some(Ve=>Ve.type==="VIDEO");return{type:Z.previewMediaType==="video"||!Z.previewMediaType&&te?"video":"image",urls:$e}}),Mt=E(),ct=E(!1);function io(Y){const Z=ut.value;if(!Z||!Z.onDragOver){ct.value=!1;return}const $e=Z.onDragOver(Y);ct.value=$e}n(io,"handleDragOver");function ro(){ct.value=!1}n(ro,"handleDragLeave");async function Ke(Y){ct.value=!1;const Z=ut.value;!Z||!Z.onDragDrop||await Z.onDragDrop(Y)}return n(Ke,"handleDrop"),(Y,Z)=>$.value?(m(),N("div",q0,z(C(ye)("nodeErrors.render","Node Render Error")),1)):(m(),N("div",$t({key:1,ref_key:"nodeContainerRef",ref:Mt,tabindex:"0","data-node-id":Y.nodeData.id,class:C(pe)("bg-component-node-background lg-node absolute text-sm","contain-style contain-layout min-w-[225px] min-h-(--node-height) w-(--node-width)",He.value,"touch-none flex flex-col","border-1 border-solid border-component-node-border",C(T)&&"hover:ring-7 ring-node-component-ring","outline-transparent outline-2 focus-visible:outline-node-component-outline",Ue.value,qe.value,nt.value,{[`${Ge.value} before:pointer-events-none before:absolute before:bg-bypass/60 before:inset-0`]:c.value,[`${Ge.value} before:pointer-events-none before:absolute before:inset-0`]:w.value,"ring-4 ring-primary-500 bg-primary-500/10":ct.value},C(T)?"pointer-events-auto":"pointer-events-none",!g.value&&" pb-1"),style:[{transform:`translate(${C(B).x??0}px, ${(C(B).y??0)-C(me).NODE_TITLE_HEIGHT}px)`,zIndex:C(M),opacity:S.value,"--component-node-background":_.value}]},R,{onPointerdown:q,onWheel:Z[0]||(Z[0]=(...$e)=>C(P)&&C(P)(...$e)),onContextmenu:K,onDragover:ke(io,["prevent"]),onDragleave:ro,onDrop:ke(Ke,["stop","prevent"])}),[y.value?(m(),N("div",J0,[g.value?(m(),N(le,{key:0},[x.value?(m(),F($s,{key:0,multi:"",class:"absolute left-0 -translate-x-1/2"})):O("",!0),D.value?(m(),F($s,{key:1,multi:"",class:"absolute right-0 translate-x-1/2"})):O("",!0),W(Is,{"node-data":Y.nodeData,unified:""},null,8,["node-data"])],64)):O("",!0),W(Ur,{"node-data":Y.nodeData,collapsed:g.value,onCollapse:bt,"onUpdate:title":rt,onEnterSubgraph:Ft},null,8,["node-data","collapsed"])])):O("",!0),g.value&&C(p)&&C(v)!==void 0?(m(),N("div",{key:1,class:Q(C(pe)("absolute inset-x-4 -bottom-[1px] translate-y-1/2 rounded-full",aa)),style:ve({width:`${Math.min(C(v)*100,100)}%`})},null,6)):O("",!0),g.value?O("",!0):(m(),N(le,{key:2},[f("div",Y0,[C(p)&&C(v)!==void 0?(m(),N("div",{key:0,class:Q(C(pe)("absolute inset-x-0 top-1/2 -translate-y-1/2",C(v)<1&&"rounded-r-full",aa)),style:ve({width:`${Math.min(C(v)*100,100)}%`})},null,6)):O("",!0)]),f("div",{class:"flex flex-1 flex-col gap-1 pb-2","data-testid":`node-body-${Y.nodeData.id}`},[W(Is,{"node-data":Y.nodeData},null,8,["node-data"]),Y.nodeData.widgets?.length?(m(),F(tl,{key:0,"node-data":Y.nodeData},null,8,["node-data"])):O("",!0),oe.value?(m(),N("div",X0,[W(H0,{"node-data":Y.nodeData,media:It.value},null,8,["node-data","media"])])):O("",!0),C(xe)?(m(),N("div",Z0,[W(l0,{"image-url":C(ae)||null},null,8,["image-url"])])):O("",!0)],8,Q0)],64)),g.value?O("",!0):(m(),N("div",{key:3,role:"button","aria-label":C(o)("g.resizeFromBottomRight"),class:Q(C(pe)(t1,"right-0 bottom-0 cursor-se-resize")),onPointerdown:ke(X,["stop"])},null,42,e1))],16,K0))}});let $o=[],Io=!1,Mo=null;const s1=n(()=>{function e(a){const l=Object.keys(a.settingValues).length===0||!a.get("Comfy.TutorialCompleted"),i=!localStorage.getItem("workflow"),r=!localStorage.getItem("Comfy.PreviousWorkflow");return l&&i&&r}n(e,"checkIsNewUser");async function o(a){if(Io){if(Mo)try{await a()}catch(l){console.error("New user initialization callback failed:",l)}}else $o.push(a)}n(o,"registerInitCallback");async function t(a){if(!Io){if(Mo=e(a),Io=!0,!Mo){$o=[];return}await a.set("Comfy.InstalledVersion","1.37.1");for(const l of $o)try{await l()}catch(i){console.error("New user initialization callback failed:",i)}$o=[]}}n(t,"initializeIfNewUser");function s(){return Io?Mo:null}return n(s,"isNewUser"),{registerInitCallback:o,initializeIfNewUser:t,isNewUser:s}},"newUserService"),a1=H({__name:"SelectionRectangle",setup(e){const o=fe(),t=E(null);eo(()=>{const l=o.canvas;if(!l){t.value=null;return}const{pointer:i,dragging_rectangle:r}=l;if(r&&i.eDown&&i.eMove){const u=i.eDown.safeOffsetX,p=i.eDown.safeOffsetY,v=i.eMove.safeOffsetX-u,h=i.eMove.safeOffsetY-p;t.value={x:u,y:p,w:v,h}}else t.value=null});const s=k(()=>t.value!==null),a=k(()=>{const l=t.value;if(!l)return{};const i=l.w>=0?l.x:l.x+l.w,r=l.h>=0?l.y:l.y+l.h,u=Math.abs(l.w),p=Math.abs(l.h);return{left:`${i}px`,top:`${r}px`,width:`${u}px`,height:`${p}px`}});return(l,i)=>s.value?(m(),N("div",{key:0,class:"pointer-events-none absolute z-9999 border border-blue-400 bg-blue-500/20",style:ve(a.value)},null,4)):O("",!0)}}),l1={key:0,class:"workflow-tabs-container pointer-events-auto relative h-9.5 w-full"},i1={key:0,class:"app-drag fixed top-0 left-0 z-10 h-[var(--comfy-topbar-height)] w-full"},r1={class:"flex h-full items-center border-b border-interface-stroke bg-comfy-menu-bg shadow-interface"},u1={class:"sidebar-content-container h-full w-full overflow-x-hidden overflow-y-auto"},c1=H({__name:"GraphCanvas",emits:["ready"],setup(e,{emit:o}){const t=o,s=E(null),a=Je(null),l=ie(),i=yt(),r=tt(),u=fe(),p=Qe(),v=Nt(),h=it(),d=ja(),b=lo(),y=k(()=>l.get("Comfy.UseNewMenu")!=="Disabled"),g=k(()=>l.get("Comfy.Workflow.WorkflowTabsPosition")),c=k(()=>l.get("Comfy.Graph.CanvasMenu")),w=k(()=>l.get("Comfy.EnableTooltips")),_=k(()=>l.get("Comfy.Canvas.SelectionToolbox")),S=k(()=>r.sidebarTab.activeSidebarTab),x=k(()=>!r.focusMode&&y.value),D=k(()=>l.get("Comfy.Minimap.Visible")),{shouldRenderVueNodes:P}=Go(),T=ps(),$=n(async()=>{P.value&&(T.disposeNodeManagerAndSyncs(),await Oe(),T.initializeNodeManager())},"handleVueNodeLifecycleReset");se(()=>u.currentGraph,$),se(()=>u.isInSubgraph,async(V,U)=>{U&&!V&&Pe().updateActiveGraph(),await $()});const I=k(()=>Array.from(T.nodeManager.value?.vueNodeData?.values()??[]));he(()=>{me.nodeOpacity=l.get("Comfy.Node.Opacity")}),he(()=>{me.nodeLightness=h.completedActivePalette.light_theme?.5:void 0}),he(()=>{i.showDeprecated=l.get("Comfy.Node.ShowDeprecated")}),he(()=>{i.showExperimental=l.get("Comfy.Node.ShowExperimental")}),he(()=>{const V=l.get("Comfy.TextareaWidget.Spellcheck");document.querySelectorAll("textarea.comfy-multiline-input").forEach(R=>{R.spellcheck=V,R.focus(),R.blur()})}),se(()=>l.get("Comfy.WidgetControlMode"),()=>{u.canvas&&(Ms(J.rootGraph,V=>{if(V.widgets){for(const U of V.widgets)if(U[Kr]&&(Ps(U),!!U.linkedWidgets))for(const R of U.linkedWidgets)Ps(R)}}),u.canvas.setDirty(!0))}),se([()=>u.canvas,()=>l.get("Comfy.ColorPalette")],async([V,U])=>{V&&await d.loadColorPalette(U)}),se(()=>l.get("Comfy.Canvas.BackgroundImage"),async()=>{if(!u.canvas)return;const V=h.activePaletteId;V&&(await d.loadColorPalette(V),u.canvas.setDirty(!1,!0))}),se(()=>h.activePaletteId,async V=>{await l.set("Comfy.ColorPalette",V)}),se(()=>[p.nodeLocationProgressStates,u.canvas],([V,U])=>{if(U?.graph){for(const R of U.graph.nodes){const j=Pe().nodeIdToNodeLocatorId(R.id),q=V[j];q&&q.state==="running"?R.progress=q.value/q.max:R.progress=void 0}U.setDirty(!0,!1)}},{deep:!0}),se(()=>p.lastNodeErrors,V=>{J.graph&&(Ms(J.rootGraph,U=>{for(const q of U.inputs)delete q.hasErrors;for(const q of U.outputs)delete q.hasErrors;const R=V?.[U.id];if(!R)return;R.errors.filter(q=>q.extra_info?.input_name!==void 0).forEach(q=>{const K=q.extra_info.input_name,ne=U.findInputSlot(K);ne!==-1&&(U.inputs[ne].hasErrors=!0)})}),J.canvas.setDirty(!0,!0))}),Ae(s,"litegraph:no-items-selected",()=>{v.add({severity:"warn",summary:re("toastMessages.nothingSelected"),life:2e3})},{passive:!0});const B=n(async()=>{try{const V=await we.getCustomNodesI18n();qr(V)}catch(V){console.error("Failed to load custom nodes i18n",V)}},"loadCustomNodesI18n"),G=E(!1),M=xw();return pw(s),ww(),dw(),Le(async()=>{hw(),fw(),gw(),bw(),Cw(),Go(),J.vueAppReady=!0,r.spinner=!0,Gr.init(),await B();try{await l.loadSettingValues()}catch(R){if(R instanceof jr)localStorage.removeItem("Comfy.userId"),localStorage.removeItem("Comfy.userName"),window.location.reload();else throw R}kw.forEach(l.addSetting),await s1().initializeIfNewUser(l),await J.setup(s.value),u.canvas=J.canvas,u.canvas.render_canvas_border=!1,r.spinner=!1,cs().setPopoverRef(a.value),window.app=J,window.graph=J.graph,G.value=!0,T.setupEmptyGraphListener(),J.canvas.onSelectionChange=Xt(J.canvas.onSelectionChange,()=>u.updateSelectedItems()),h.customPalettes=l.get("Comfy.CustomColorPalettes"),await M.initializeWorkflow(),M.restoreWorkflowTabsState(),await M.loadTemplateFromUrlIfPresent();const{useReleaseStore:V}=await Gn(async()=>{const{useReleaseStore:R}=await Promise.resolve().then(()=>Ay);return{useReleaseStore:R}},void 0,import.meta.url);V().initialize(),se(()=>l.get("Comfy.Locale"),async()=>{await Ce().execute("Comfy.RefreshNodeDefinitions"),await ot().reloadCurrentWorkflow()}),ko(()=>fe().canvas,R=>{Ae(R.canvas,"litegraph:set-graph",()=>{Pe().updateActiveGraph()})},{immediate:!0}),t("ready")}),lt(()=>{T.cleanup()}),(V,U)=>(m(),N(le,null,[G.value?(m(),F(ad,{key:0},Fn({"graph-canvas-panel":L(()=>[c.value?(m(),F(ov,{key:0,class:"pointer-events-auto"})):O("",!0),G.value&&D.value&&y.value?(m(),F(Fw,{key:1,class:"pointer-events-auto"})):O("",!0)]),_:2},[x.value?{name:"workflow-tabs",fn:L(()=>[g.value==="Topbar"?(m(),N("div",l1,[C(Hr)()&&g.value!=="Topbar"?(m(),N("div",i1)):O("",!0),f("div",r1,[W(kl),W(wl)])])):O("",!0)]),key:"0"}:void 0,x.value?{name:"side-toolbar",fn:L(()=>[W(Eb)]),key:"1"}:void 0,x.value?{name:"side-bar-panel",fn:L(()=>[f("div",u1,[S.value?(m(),F(ls,{key:0,extension:S.value},null,8,["extension"])):O("",!0)])]),key:"2"}:void 0,x.value?{name:"topmenu",fn:L(()=>[W(gm)]),key:"3"}:void 0,x.value?{name:"bottom-panel",fn:L(()=>[W(xm)]),key:"4"}:void 0,x.value?{name:"right-side-panel",fn:L(()=>[W(gh)]),key:"5"}:void 0]),1024)):O("",!0),f("canvas",{id:"graph-canvas",ref_key:"canvasRef",ref:s,tabindex:"1",class:"absolute inset-0 size-full touch-none"},null,512),C(P)&&C(J).canvas&&G.value?(m(),F($w,{key:1,canvas:C(J).canvas,onWheelCapture:C(b).forwardEventToCanvas},{default:L(()=>[(m(!0),N(le,null,be(I.value,R=>(m(),F(n1,{key:R.id,"node-data":R,error:C(p).lastExecutionError?.node_id===R.id?"Execution error":null,"zoom-level":C(u).canvas?.ds?.scale||1,"data-node-id":R.id},null,8,["node-data","error","zoom-level","data-node-id"]))),128))]),_:1},8,["canvas","onWheelCapture"])):O("",!0),G.value?(m(),F(a1,{key:2})):O("",!0),w.value?(m(),F(sv,{key:3})):O("",!0),W(Mh,{ref_key:"nodeSearchboxPopoverRef",ref:a},null,512),G.value?(m(),N(le,{key:4},[W(pg),_.value?(m(),F(cg,{key:0})):O("",!0),C(P)?O("",!0):(m(),F(Pm,{key:1}))],64)):O("",!0)],64))}}),d1={class:"flex flex-auto flex-col items-start"},p1={class:"my-4 text-lg font-medium"},f1=H({__name:"RerouteMigrationToast",setup(e){const{t:o}=de(),t=Rt(),s=Pe(),a=n(async()=>{const l=J.rootGraph.serialize(),i=Jr(l);await J.loadGraphData(i,!1,!1,s.activeWorkflow),t.removeGroup("reroute-migration")},"migrateToLitegraphReroute");return(l,i)=>(m(),F(C(Ta),{group:"reroute-migration"},{message:L(()=>[f("div",d1,[f("div",p1,z(C(o)("toastMessages.migrateToLitegraphReroute")),1),W(ee,{class:"self-end",size:"sm",onClick:a},{default:L(()=>[_e(z(C(o)("g.migrate")),1)]),_:1})])]),_:1}))}}),la="ComfyUI",m1=" - ComfyUI",v1=n(()=>{const e=Qe(),o=ie(),t=Pe(),s=tt(),a=k(()=>e.isIdle?"":`[${Math.round(e.executionProgress*100)}%]`),l=k(()=>o.get("Comfy.UseNewMenu")!=="Disabled"),i=k(()=>o.get("Comfy.Workflow.AutoSave")==="after delay"),r=k(()=>!!t.activeWorkflow?.isModified),u=k(()=>!!t.activeWorkflow?.isPersisted),p=k(()=>s.shiftDown||i.value?!1:!!(!u.value||r.value)),v=k(()=>p.value?" *":""),h=k(()=>{const g=t.activeWorkflow?.filename;return g?v.value+g+m1:la}),d=k(()=>{const c=Object.entries(e.nodeProgressStates).filter(([D,P])=>P.state==="running");if(c.length===0)return"";if(c.length>1)return`${a.value}[${c.length} ${re("g.nodesRunning","nodes running")}]`;const[w,_]=c[0],S=Math.round(_.value/_.max*100),x=e.activePrompt?.workflow?.changeTracker?.activeState.nodes.find(D=>String(D.id)===w)?.type||"Node";return`${a.value}[${S}%] ${x}`}),b=k(()=>a.value+(l.value?h.value:la)),y=k(()=>d.value||b.value);Xl(y)},"useBrowserTabTitle"),g1={},h1={class:"size-full bg-modal-panel-background pr-6 pb-8 pl-4"};function y1(e,o){return m(),N("div",h1,[Ne(e.$slots,"default")])}n(y1,"_sfc_render");const b1=De(g1,[["render",y1]]),w1={class:"text-neutral text-base"},k1={class:"flex gap-2"},C1={class:"relative flex gap-2 px-6 pb-4"},S1=H({__name:"SampleModelSelector",props:{onClose:{type:Function}},setup(e){const o=E([{name:"Vue",value:"vue"},{name:"React",value:"react"},{name:"Angular",value:"angular"},{name:"Svelte",value:"svelte"}]),t=E([{name:"Project A",value:"proj-a"},{name:"Project B",value:"proj-b"},{name:"Project C",value:"proj-c"}]),s=E([{name:"Popular",value:"popular"},{name:"Latest",value:"latest"},{name:"A → Z",value:"az"}]),a=E([{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]"}]}]);Qo(sn,e.onClose);const l=E(""),i=E(""),r=E([]),u=E([]),p=E("popular"),v=E("installed"),h=k(()=>bl());return(d,b)=>(m(),F(ns,{"content-title":d.$t("assetBrowser.checkpoints")},{leftPanel:L(()=>[W(ss,{modelValue:v.value,"onUpdate:modelValue":b[0]||(b[0]=y=>v.value=y),"nav-items":a.value},{"header-icon":L(()=>b[6]||(b[6]=[f("i",{class:"text-neutral icon-[lucide--puzzle]"},null,-1)])),"header-title":L(()=>[f("span",w1,z(d.$t("g.title")),1)]),_:1},8,["modelValue","nav-items"])]),header:L(()=>[W(en,{modelValue:l.value,"onUpdate:modelValue":b[1]||(b[1]=y=>l.value=y),size:"lg",class:"max-w-[384px]"},null,8,["modelValue"])]),"header-right-area":L(()=>[f("div",k1,[W(ee,{variant:"primary",onClick:n(()=>{},"onClick")},{default:L(()=>[b[7]||(b[7]=f("i",{class:"icon-[lucide--upload]"},null,-1)),f("span",null,z(d.$t("g.upload")),1)]),_:1}),W(al,null,{default:L(({close:y})=>[W(ee,{variant:"secondary",onClick:n(()=>{y()},"onClick")},{default:L(()=>[b[8]||(b[8]=f("i",{class:"icon-[lucide--download]"},null,-1)),f("span",null,z(d.$t("g.settings")),1)]),_:2},1032,["onClick"]),W(ee,{variant:"primary",onClick:n(()=>{y()},"onClick")},{default:L(()=>[b[9]||(b[9]=f("i",{class:"icon-[lucide--scroll]"},null,-1)),f("span",null,z(d.$t("g.profile")),1)]),_:2},1032,["onClick"])]),_:1})])]),contentFilter:L(()=>[f("div",C1,[W(Vt,{modelValue:r.value,"onUpdate:modelValue":b[2]||(b[2]=y=>r.value=y),"search-query":i.value,"onUpdate:searchQuery":b[3]||(b[3]=y=>i.value=y),class:"w-[250px]",label:d.$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"]),W(Vt,{modelValue:u.value,"onUpdate:modelValue":b[4]||(b[4]=y=>u.value=y),label:d.$t("assetBrowser.selectProjects"),options:t.value},null,8,["modelValue","label","options"]),W(jo,{modelValue:p.value,"onUpdate:modelValue":b[5]||(b[5]=y=>p.value=y),label:d.$t("assetBrowser.sortingType"),options:s.value,class:"w-[135px]"},{icon:L(()=>b[10]||(b[10]=[f("i",{class:"icon-[lucide--filter]"},null,-1)])),_:1},8,["modelValue","label","options"])])]),content:L(()=>[f("div",{style:ve(h.value)},[(m(),N(le,null,be(100,y=>W(Eo,{key:y,size:"regular"},{top:L(()=>[W(Vo,{ratio:"landscape"},{default:L(()=>b[11]||(b[11]=[f("div",{class:"h-full w-full bg-blue-500"},null,-1)])),"top-right":L(()=>[W(ee,{size:"icon",class:"!bg-white !text-neutral-900",onClick:n(()=>{},"onClick")},{default:L(()=>b[12]||(b[12]=[f("i",{class:"icon-[lucide--info]"},null,-1)])),_:1})]),"bottom-right":L(()=>[W(Oo,{label:"png"}),W(Oo,{label:"1.2 MB"}),W(Oo,{label:"LoRA"},{icon:L(()=>b[13]||(b[13]=[f("i",{class:"icon-[lucide--folder]"},null,-1)])),_:1})]),_:1})]),bottom:L(()=>[W(Lo)]),_:2},1024)),64))],4)]),rightPanel:L(()=>[W(b1)]),_:1},8,["content-title"]))}}),ia="global-model-selector",x1=n(()=>{const e=et(),o=ht();function t(){o.closeDialog({key:ia})}n(t,"hide");function s(){e.showLayoutDialog({key:ia,component:S1,props:{onClose:t}})}return n(s,"show"),{show:s,hide:t}},"useModelSelectorDialog");function _1(e,o){const t=Yr.safeParse(e);if(!t.success){const g=t.error.errors.map(c=>`${c.path.join(".")}: ${c.message}`).join(", ");return console.error("Invalid asset item:",g),{success:!1,error:{code:"INVALID_ASSET",message:"Asset schema validation failed",assetId:e.id,details:{validationErrors:g}}}}const s=t.data,a=s.user_metadata;if(!a)return console.error(`Asset ${s.id} missing required user_metadata`),{success:!1,error:{code:"INVALID_ASSET",message:"Asset missing required user_metadata",assetId:s.id}};const l=a.filename;if(typeof l!="string"||l.length===0)return console.error(`Asset ${s.id} has invalid user_metadata.filename (expected non-empty string, got ${typeof l})`),{success:!1,error:{code:"INVALID_ASSET",message:`Invalid filename (expected non-empty string, got ${typeof l})`,assetId:s.id}};if(s.tags.length===0)return console.error(`Asset ${s.id} has no tags defined (expected at least one category tag)`),{success:!1,error:{code:"INVALID_ASSET",message:"Asset has no tags defined",assetId:s.id}};const i=s.tags.find(g=>g!==Ds&&g!==As);if(!i)return console.error(`Asset ${s.id} has no valid category tag. Available tags: ${s.tags.join(", ")} (expected tag other than '${Ds}' or '${As}')`),{success:!1,error:{code:"INVALID_ASSET",message:"Asset has no valid category tag",assetId:s.id,details:{availableTags:s.tags}}};const u=qn().getNodeProvider(i);if(!u)return console.error(`No node provider registered for category: ${i}`),{success:!1,error:{code:"NO_PROVIDER",message:`No node provider registered for category: ${i}`,assetId:s.id,details:{category:i}}};const v=no().getCanvasCenter(),h=me.createNode(u.nodeDef.name,u.nodeDef.display_name,{pos:v});if(!h)return console.error(`Failed to create node for type: ${u.nodeDef.name}`),{success:!1,error:{code:"NODE_CREATION_FAILED",message:`Failed to create node for type: ${u.nodeDef.name}`,assetId:s.id,details:{nodeType:u.nodeDef.name}}};const d=Pe(),b=d.isSubgraphActive?d.activeSubgraph:J.canvas.graph;if(!b)return console.error("No active graph available"),{success:!1,error:{code:"NO_GRAPH",message:"No active graph available",assetId:s.id}};const y=h.widgets?.find(g=>g.name===u.key);return y?(y.value=l,b.add(h),{success:!0,value:h}):(console.error(`Widget ${u.key} not found on node ${u.nodeDef.name}`),{success:!1,error:{code:"MISSING_WIDGET",message:`Widget ${u.key} not found on node ${u.nodeDef.name}`,assetId:s.id,details:{widgetName:u.key,nodeType:u.nodeDef.name}}})}n(_1,"createModelNodeFromAsset");const Po={DISTRIBUTION:"tf_42243568391700",ANONYMOUS_EMAIL:"tf_anonymous_requester_email",EMAIL:"tf_40029135130388",USER_ID:"tf_42515251051412"},T1="https://support.comfy.org/hc/en-us/requests/new";function N1(e){const o=new URLSearchParams({[Po.DISTRIBUTION]:"oss"});return e?.userEmail&&(o.append(Po.ANONYMOUS_EMAIL,e.userEmail),o.append(Po.EMAIL,e.userEmail)),e?.userId&&o.append(Po.USER_ID,e.userId),`${T1}?${o.toString()}`}n(N1,"buildSupportUrl");const{isActiveSubscription:Cn,showSubscriptionDialog:Sn}=Kn(),Do="1.22.2";function $1(){const e=ot(),o=Pe(),t=et(),s=it(),a=Wa(),l=Nt(),i=fe(),r=Qe(),{staticUrls:u,buildDocsUrl:p}=so(),v=oo(),{getSelectedNodes:h,toggleSelectedNodesMode:d}=Xn(),b=n(()=>o.activeWorkflow?.changeTracker,"getTracker"),y=n(c=>{const w=h();if(w.length===0)return;const _=ie().get("Comfy.SnapToGrid.GridSize");w.forEach(S=>{S.pos=c(S.pos,_)}),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 c=Pe().activeWorkflow;c&&await e.saveWorkflow(c)},"function")},{id:"Comfy.PublishSubgraph",icon:"pi pi-save",label:"Publish Subgraph",menubarLabel:"Publish",function:n(async()=>{await Va().publishSubgraph()},"function")},{id:"Comfy.SaveWorkflowAs",icon:"pi pi-save",label:"Save Workflow As",menubarLabel:"Save As",category:"essentials",function:n(async()=>{const c=Pe().activeWorkflow;c&&await e.saveWorkflowAs(c)},"function")},{id:"Comfy.ExportWorkflow",icon:"pi pi-download",label:"Export Workflow",menubarLabel:"Export",category:"essentials",function:n(async()=>{await e.exportWorkflow("workflow","workflow")},"function")},{id:"Comfy.ExportWorkflowAPI",icon:"pi pi-download",label:"Export Workflow (API Format)",menubarLabel:"Export (API)",function:n(async()=>{await e.exportWorkflow("workflow_api","output")},"function")},{id:"Comfy.Undo",icon:"pi pi-undo",label:"Undo",category:"essentials",function:n(async()=>{await b()?.undo?.()},"function")},{id:"Comfy.Redo",icon:"pi pi-refresh",label:"Redo",category:"essentials",function:n(async()=>{await b()?.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 w=J.canvas.subgraph;Xr(w).forEach(S=>w.remove(S))}we.dispatchCustomEvent("graphCleared")}},"function")},{id:"Comfy.Canvas.ResetView",icon:"pi pi-expand",label:"Reset View",function:n(()=>{no().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 we.interrupt(r.activePromptId),l.add({severity:"info",summary:re("g.interrupted"),detail:re("toastMessages.interrupted"),life:1e3})},"function")},{id:"Comfy.ClearPendingTasks",icon:"pi pi-stop",label:"Clear Pending Tasks",category:"essentials",function:n(async()=>{await St().clear(["queue"]),l.add({severity:"info",summary:re("g.confirmed"),detail:re("toastMessages.pendingTasksDeleted"),life:3e3})},"function")},{id:"Comfy.BrowseTemplates",icon:"pi pi-folder-open",label:"Browse Templates",function:n(()=>{ds().show()},"function")},{id:"Comfy.Canvas.ZoomIn",icon:"pi pi-plus",label:"Zoom In",category:"view-controls",function:n(()=>{const c=J.canvas.ds;c.changeScale(c.scale*1.1,c.element?[c.element.width/2,c.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 c=J.canvas.ds;c.changeScale(c.scale/1.1,c.element?[c.element.width/2,c.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 c=ie(),w=c.get("Comfy.VueNodes.Enabled")??!1;await c.set("Comfy.VueNodes.Enabled",!w)},"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){l.add({severity:"error",summary:re("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 c=ie();let w=me.SPLINE_LINK;return async()=>{const _=c.get("Comfy.LinkRenderMode");_===me.HIDDEN_LINK?await c.set("Comfy.LinkRenderMode",w):(w=_,await c.set("Comfy.LinkRenderMode",me.HIDDEN_LINK))}})(),active:n(()=>ie().get("Comfy.LinkRenderMode")!==me.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 c=ie();await c.set("Comfy.Minimap.Visible",!c.get("Comfy.Minimap.Visible"))},"function"),active:n(()=>ie().get("Comfy.Minimap.Visible"),"active")},{id:"Comfy.QueuePrompt",icon:"pi pi-play",label:"Queue Prompt",versionAdded:"1.3.7",category:"essentials",function:n(async c=>{if(!Cn.value){Sn();return}const w=vo().batchCount;await J.queuePrompt(0,w)},"function")},{id:"Comfy.QueuePromptFront",icon:"pi pi-play",label:"Queue Prompt (Front)",versionAdded:"1.3.7",category:"essentials",function:n(async c=>{if(!Cn.value){Sn();return}const w=vo().batchCount;await J.queuePrompt(-1,w)},"function")},{id:"Comfy.QueueSelectedOutputNodes",icon:"pi pi-play",label:"Queue Selected Output Nodes",versionAdded:"1.19.6",function:n(async c=>{if(!Cn.value){Sn();return}const w=vo().batchCount,_=h(),S=Fa(_);if(S.length===0){l.add({severity:"error",summary:re("toastMessages.nothingToQueue"),detail:re("toastMessages.pleaseSelectOutputNodes"),life:3e3});return}const x=Zr(S);if(x.length===0){l.add({severity:"error",summary:re("toastMessages.failedToQueue"),detail:re("toastMessages.failedExecutionPathResolution"),life:3e3});return}await J.queuePrompt(0,w,x)},"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:c}=J;if(!c.selectedItems?.size){l.add({severity:"error",summary:re("toastMessages.nothingToGroup"),detail:re("toastMessages.pleaseSelectNodesToGroup"),life:3e3});return}const w=new Lt,_=ie().get("Comfy.GroupSelectedNodes.Padding");w.resizeTo(c.selectedItems,_),c.graph?.add(w),w.recomputeInsideNodes(),on().titleEditorTarget=w},"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(()=>{d(Ee.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(()=>{d(Ee.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(()=>{h().forEach(c=>{c.pin(!c.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 c of J.canvas.selectedItems)(c instanceof vt||c instanceof Lt)&&c.pin(!c.pinned);J.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.Resize",icon:"pi pi-minus",label:"Resize Selected Nodes",versionAdded:"",function:n(()=>{h().forEach(c=>{const w=c.computeSize();c.setSize([w[0],w[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(()=>{h().forEach(c=>{c.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 c=eu.id,w=tu.id;return async()=>{const _=ie(),S=s.completedActivePalette;S.light_theme?(w=S.id,await _.set("Comfy.ColorPalette",c)):(c=S.id,await _.set("Comfy.ColorPalette",w))}})()},{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(()=>{tt().toggleFocusMode()},"function"),active:n(()=>tt().focusMode,"active")},{id:"Comfy.Graph.FitGroupToContents",icon:"pi pi-expand",label:"Fit Group To Contents",versionAdded:"1.4.9",function:n(()=>{for(const c of J.canvas.selectedItems)if(c instanceof Lt){c.recomputeInsideNodes();const w=ie().get("Comfy.GroupSelectedNodes.Padding");c.resizeTo(c.children,w),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(p("/",{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(()=>{cs().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:c,resolvedUserInfo:w}=ao(),_=N1({userEmail:c.value,userId:w.value?.id});window.open(_,"_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 pt().openManager({showToastOnLegacyError:!0})},"function")},{id:"Comfy.Manager.ShowUpdateAvailablePacks",icon:"pi pi-sync",label:"Check for Custom Node Updates",versionAdded:"1.17.0",function:n(async()=>{const c=pt();if(c.managerUIState.value===ou.DISABLED){l.add({severity:"error",summary:re("g.error"),detail:re("manager.notAvailable"),life:3e3});return}await c.openManager({initialTab:Jt.UpdateAvailable,showToastOnLegacyError:!1})},"function")},{id:"Comfy.Manager.ShowMissingPacks",icon:"pi pi-exclamation-circle",label:"Install Missing Custom Nodes",versionAdded:"1.17.0",function:n(async()=>{await pt().openManager({initialTab:Jt.Missing,showToastOnLegacyError:!1})},"function")},{id:"Comfy.Manager.ToggleManagerProgressDialog",icon:"pi pi-spinner",label:"Toggle the Custom Nodes Manager Progress Bar",versionAdded:"1.13.9",function:n(()=>{t.toggleManagerProgressDialog()},"function")},{id:"Comfy.User.OpenSignInDialog",icon:"pi pi-user",label:"Open Sign In Dialog",versionAdded:"1.17.6",function:n(async()=>{await t.showSignInDialog()},"function")},{id:"Comfy.User.SignOut",icon:"pi pi-sign-out",label:"Sign Out",versionAdded:"1.18.1",function:n(async()=>{await a.logout()},"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Up",icon:"pi pi-arrow-up",label:"Move Selected Nodes Up",versionAdded:Do,function:n(()=>y(([c,w],_)=>[c,w-_]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Down",icon:"pi pi-arrow-down",label:"Move Selected Nodes Down",versionAdded:Do,function:n(()=>y(([c,w],_)=>[c,w+_]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Left",icon:"pi pi-arrow-left",label:"Move Selected Nodes Left",versionAdded:Do,function:n(()=>y(([c,w],_)=>[c-_,w]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Right",icon:"pi pi-arrow-right",label:"Move Selected Nodes Right",versionAdded:Do,function:n(()=>y(([c,w],_)=>[c+_,w]),"function")},{id:"Comfy.Graph.ConvertToSubgraph",icon:"icon-[lucide--shrink]",label:"Convert Selection to Subgraph",versionAdded:"1.20.1",category:"essentials",function:n(()=>{const c=i.getCanvas(),w=c.subgraph??c.graph;if(!w)throw new TypeError("Canvas has no graph or subgraph set.");const _=w.convertToSubgraph(c.selectedItems);if(!_){l.add({severity:"error",summary:re("toastMessages.cannotCreateSubgraph"),detail:re("toastMessages.failedToConvertToSubgraph"),life:3e3});return}const{node:S}=_;c.select(S),i.updateSelectedItems()},"function")},{id:"Comfy.Graph.UnpackSubgraph",icon:"icon-[lucide--expand]",label:"Unpack the selected Subgraph",versionAdded:"1.26.3",function:n(()=>{const{unpackSubgraph:c}=Ua();c()},"function")},{id:"Comfy.Graph.EditSubgraphWidgets",label:"Edit Subgraph Widgets",icon:"icon-[lucide--settings-2]",versionAdded:"1.28.5",function:n(()=>{to().openPanel("subgraph")},"function")},{id:"Comfy.Graph.ToggleWidgetPromotion",icon:"icon-[lucide--arrow-left-right]",label:"Toggle promotion of hovered widget",versionAdded:"1.30.1",function:Qr},{id:"Comfy.OpenManagerDialog",icon:"mdi mdi-puzzle-outline",label:"Manager",function:n(async()=>{await pt().openManager({initialTab:Jt.All,showToastOnLegacyError:!1})},"function")},{id:"Comfy.ToggleHelpCenter",icon:"pi pi-question-circle",label:"Help Center",function:n(()=>{En().toggle()},"function"),active:n(()=>En().isVisible,"active")},{id:"Comfy.ToggleCanvasInfo",icon:"pi pi-info-circle",label:"Canvas Performance",function:n(async()=>{const c=ie(),w=c.get("Comfy.Graph.CanvasInfo");await c.set("Comfy.Graph.CanvasInfo",!w)},"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 c=fe().getCanvas(),w=Jn();c.graph&&c.setGraph(w.navigationStack.at(-2)??c.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(()=>{x1().show()},"function")},{id:"Comfy.Manager.CustomNodesManager.ShowLegacyCustomNodesMenu",icon:"pi pi-bars",label:"Custom Nodes (Legacy)",versionAdded:"1.16.4",function:n(async()=>{await pt().openManager({legacyCommand:"Comfy.Manager.CustomNodesManager.ToggleVisibility",showToastOnLegacyError:!0,isLegacyOnly:!0})},"function")},{id:"Comfy.Manager.ShowLegacyManagerMenu",icon:"mdi mdi-puzzle",label:"Manager Menu (Legacy)",versionAdded:"1.16.4",function:n(async()=>{await pt().openManager({showToastOnLegacyError:!0,isLegacyOnly:!0})},"function")},{id:"Comfy.Memory.UnloadModels",icon:"mdi mdi-vacuum-outline",label:"Unload Models",versionAdded:"1.16.4",function:n(async()=>{if(!ie().get("Comfy.Memory.AllowManualUnload")){Nt().add({severity:"error",summary:re("g.error"),detail:re("g.commandProhibited",{command:"Comfy.Memory.UnloadModels"}),life:3e3});return}await we.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")){Nt().add({severity:"error",summary:re("g.error"),detail:re("g.commandProhibited",{command:"Comfy.Memory.UnloadModelsAndExecutionCache"}),life:3e3});return}await we.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 zc().browse({assetType:"models",title:re("sideToolbar.modelLibrary"),onAssetSelected:n(w=>{const _=_1(w);_.success||(l.add({severity:"error",summary:re("g.error"),detail:re("assetBrowser.failedToCreateNode")}),console.error("Node creation failed:",_.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 c=ie(),w=c.get("Comfy.Assets.UseAssetAPI")??!1;await c.set("Comfy.Assets.UseAssetAPI",!w),await ot().reloadCurrentWorkflow()},"function")},{id:"Comfy.ToggleLinear",icon:"pi pi-database",label:"toggle linear mode",function:n(()=>i.linearMode=!i.linearMode,"function")}].map(c=>({...c,source:"System"}))}n($1,"useCoreCommands");const I1=n(()=>{const e="/assets/images/favicon_progress_16x16/frame_9.png",o=Zl(e),t=Qe(),s=10;se([()=>t.executionProgress,()=>t.isIdle],([a,l])=>{if(l)o.value=e;else{const i=Math.min(Math.max(0,Math.floor(a*s)),s-1);o.value=`/assets/images/favicon_progress_16x16/frame_${i}.png`}})},"useProgressFavicon");var On=(e=>(e.NoPreviews="none",e.Auto="auto",e.Latent2RGB="latent2rgb",e.TAESD="taesd",e))(On||{}),Rn=(e=>(e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.CRITICAL="CRITICAL",e))(Rn||{}),Wn=(e=>(e.MD5="md5",e.SHA1="sha1",e.SHA256="sha256",e.SHA512="sha512",e))(Wn||{}),Ht=(e=>(e.Auto="auto",e.Disable="disable",e.Enable="enable",e))(Ht||{}),Ie=(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))(Ie||{}),Wo=(e=>(e.Auto="auto",e.Split="split",e.Quad="quad",e.Pytorch="pytorch",e))(Wo||{}),zo=(e=>(e.Auto="auto",e.GPUOnly="gpu-only",e.HighVram="highvram",e.NormalVram="normalvram",e.LowVram="lowvram",e.NoVram="novram",e.CPU="cpu",e))(zo||{});const M1=[{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(Ht),defaultValue:Ht.Auto,getValue:n(e=>{switch(e){case Ht.Auto:return{};case Ht.Enable:return{"cuda-malloc":!0};case Ht.Disable:return{"disable-cuda-malloc":!0}}},"getValue")},{id:"global-precision",name:"Global floating point precision",category:["Inference"],type:"combo",options:[Ie.AUTO,Ie.FP32,Ie.FP16],defaultValue:Ie.AUTO,tooltip:"Global floating point precision",getValue:n(e=>{switch(e){case Ie.AUTO:return{};case Ie.FP32:return{"force-fp32":!0};case Ie.FP16:return{"force-fp16":!0};default:return{}}},"getValue")},{id:"unet-precision",name:"UNET precision",category:["Inference"],type:"combo",options:[Ie.AUTO,Ie.FP64,Ie.FP32,Ie.FP16,Ie.BF16,Ie.FP8E4M3FN,Ie.FP8E5M2],defaultValue:Ie.AUTO,tooltip:"UNET precision",getValue:n(e=>{switch(e){case Ie.AUTO:return{};default:return{[`${e.toLowerCase()}-unet`]:!0}}},"getValue")},{id:"vae-precision",name:"VAE precision",category:["Inference"],type:"combo",options:[Ie.AUTO,Ie.FP16,Ie.FP32,Ie.BF16],defaultValue:Ie.AUTO,tooltip:"VAE precision",getValue:n(e=>{switch(e){case Ie.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:[Ie.AUTO,Ie.FP8E4M3FN,Ie.FP8E5M2,Ie.FP16,Ie.FP32],defaultValue:Ie.AUTO,tooltip:"Text Encoder precision",getValue:n(e=>{switch(e){case Ie.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(On),defaultValue:On.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(Wo),defaultValue:Wo.Auto,getValue:n(e=>{switch(e){case Wo.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(zo),defaultValue:zo.Auto,getValue:n(e=>{switch(e){case zo.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(Wn),defaultValue:Wn.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(Rn),defaultValue:Rn.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:""}],P1=10080*60*1e3,Nl=Ot("versionCompatibility",()=>{const e=qa(),o=ie(),t=k(()=>nu.app_version),s=k(()=>e.systemStats?.system?.comfyui_version??""),a=k(()=>e.systemStats?.system?.required_frontend_version??""),l=k(()=>!t.value||!a.value||!At.valid(t.value)||!At.valid(a.value)?!1:At.gt(a.value,t.value)),i=k(()=>!1),r=k(()=>l.value),u=k(()=>!t.value||!s.value||!a.value?null:`${t.value}-${s.value}-${a.value}`),p=ei("comfy.versionMismatch.dismissals",{},localStorage,{serializer:{read:n(c=>{try{return JSON.parse(c)}catch{return{}}},"read"),write:n(c=>JSON.stringify(c),"write")}}),v=k(()=>{if(!u.value)return!1;const c=p.value[u.value];return c?Date.now()<c:!1}),h=k(()=>{const c=o.get("Comfy.VersionCompatibility.DisableWarnings");return r.value&&!v.value&&!c}),d=k(()=>l.value?{type:"outdated",frontendVersion:t.value,requiredVersion:a.value}:null);async function b(){e.systemStats||await ba(e.isInitialized)}n(b,"checkVersionCompatibility");function y(){if(!u.value)return;const c=Date.now()+P1;p.value={...p.value,[u.value]:c}}n(y,"dismissWarning");async function g(){await b()}return n(g,"initialize"),{frontendVersion:t,backendVersion:s,requiredFrontendVersion:a,hasVersionMismatch:r,shouldShowWarning:h,warningMessage:d,isFrontendOutdated:l,isFrontendNewer:i,checkVersionCompatibility:b,dismissWarning:y,initialize:g}});function D1(e={}){const{immediate:o=!1}=e,{t}=de(),s=Nt(),a=Nl();let l=!1;const i=n(()=>{if(l)return;const r=a.warningMessage;if(!r)return;const u=t("g.frontendOutdated",{frontendVersion:r.frontendVersion,requiredVersion:r.requiredVersion}),p=t("g.versionMismatchWarningMessage",{warning:t("g.versionMismatchWarning"),detail:u});s.addAlert(p),l=!0,a.dismissWarning()},"showWarning");return Le(()=>{o&&ko(()=>a.shouldShowWarning,()=>{i()},{immediate:!0,once:!0})}),{showWarning:i,shouldShowWarning:k(()=>a.shouldShowWarning),dismissWarning:a.dismissWarning,hasVersionMismatch:k(()=>a.hasVersionMismatch)}}n(D1,"useFrontendVersionMismatchWarning");function A1(){const e=ol(),o=vo();let t=!1,s=0;we.addEventListener("graphChanged",()=>{o.mode==="change"&&(s?t=!0:(t=!1,J.queuePrompt(0,o.batchCount),s++))}),e.$subscribe(async()=>{s=e.count,!s&&!J.lastExecutionError&&(o.mode==="instant"||o.mode==="change"&&t)&&(t=!1,await J.queuePrompt(0,o.batchCount))},{detached:!0})}n(A1,"setupAutoQueueHandler");const E1={class:"absolute w-full h-full"},L1={class:"workflow-tabs-container pointer-events-auto h-9.5 w-full"},V1={class:"flex h-full items-center"},O1={class:"sidebar-content-container h-full w-full overflow-x-hidden overflow-y-auto border-r-1 border-node-component-border"},R1=["src"],W1={key:0,class:"pointer-events-none object-contain flex-1 max-h-full brightness-50 opacity-10",src:au},z1={class:"actionbar-container flex h-12 items-center rounded-lg border border-[var(--interface-stroke)] p-2 gap-2 bg-comfy-menu-bg justify-end"},B1={class:"rounded-lg border p-2 gap-2 h-full border-[var(--interface-stroke)] bg-comfy-menu-bg flex flex-col"},F1={class:"grow-1 flex justify-start flex-col overflow-y-auto contain-size *:max-h-100"},U1={class:"p-4 pb-0 border-t border-node-component-border"},G1=H({__name:"LinearView",setup(e){const o=Co(),t=Ce(),s=k(()=>{function v(h){const d=hl(h,new Map),b=h.widgets?.map(y=>{const g=d(y);return g.callback=function(c){if(Cg(c))return y.value=c??void 0,y.callback?.(y.value)},g})??[];return{id:`${h.id}`,title:h.title,type:h.type,mode:0,selected:!1,executing:!1,widgets:b}}return n(v,"nodeToNodeData"),J.rootGraph.nodes.filter(h=>h.mode===0&&h.widgets?.length).map(v)}),{isLoggedIn:a}=ao(),l=Be(),i={options:{step2:1,precision:1,min:1,max:100},value:1,name:re("Number of generations"),type:"number"},{batchCount:r}=Fe(vo());async function u(v){const d="shiftKey"in v&&v.shiftKey?"Comfy.QueuePromptFront":"Comfy.QueuePrompt";r.value>1,await t.execute(d,{metadata:{subscribe_to_run:!1,trigger_source:"button"}})}n(u,"runButtonClick");function p(){window.open("https://support.comfy.org/hc/en-us/requests/new?ticket_form_id=40026345549204","_blank","noopener,noreferrer")}return n(p,"openFeedback"),(v,h)=>(m(),N("div",E1,[f("div",L1,[f("div",V1,[W(kl),W(wl)])]),W(C(Nn),{class:"h-[calc(100%-38px)] w-full bg-comfy-menu-secondary-bg",pt:{gutter:{class:"bg-transparent w-4 -mx-3"}}},{default:L(()=>[W(C(_t),{size:1,class:"min-w-min bg-comfy-menu-bg"},{default:L(()=>[f("div",O1,[W(ls,{extension:C(su)()},null,8,["extension"])])]),_:1}),W(C(_t),{size:98,class:"flex flex-row overflow-y-auto flex-wrap min-w-min gap-4 m-4"},{default:L(()=>[(m(!0),N(le,null,be(C(o).latestOutput,d=>(m(),N("img",{key:d,class:"pointer-events-none object-contain flex-1 max-h-full",src:d},null,8,R1))),128)),C(o).latestOutput.length===0?(m(),N("img",W1)):O("",!0)]),_:1}),W(C(_t),{size:1,class:"flex flex-col gap-1 p-1 min-w-min"},{default:L(()=>[f("div",z1,[W(ee,{variant:"secondary",onClick:p},{default:L(()=>[_e(z(C(re)("g.feedback")),1)]),_:1}),W(ee,{variant:"secondary",class:"min-w-max",onClick:h[0]||(h[0]=d=>C(fe)().linearMode=!1)},{default:L(()=>[_e(z(C(re)("linearMode.openWorkflow"))+" ",1),h[3]||(h[3]=f("i",{class:"icon-[comfy--workflow]"},null,-1))]),_:1}),W(ee,{variant:"inverted",onClick:h[1]||(h[1]=d=>C(ot)().exportWorkflow("workflow","workflow"))},{default:L(()=>[_e(z(C(re)("linearMode.share")),1)]),_:1}),C(a)?(m(),F(cl,{key:0})):C(l)?(m(),F(dl,{key:1})):O("",!0)]),f("div",B1,[f("div",F1,[(m(!0),N(le,null,be(s.value,d=>(m(),F(tl,{key:d.id,"node-data":d,class:"border-b-1 border-node-component-border pt-1 pb-2 last:border-none"},null,8,["node-data"]))),128))]),f("div",U1,[W(mu,{modelValue:C(r),"onUpdate:modelValue":h[2]||(h[2]=d=>ft(r)?r.value=d:null),widget:i,class:"*:[.min-w-56]:basis-0"},null,8,["modelValue"]),W(ee,{class:"w-full mt-4",onClick:u},{default:L(()=>[h[4]||(h[4]=f("i",{class:"icon-[lucide--play]"},null,-1)),_e(" "+z(C(re)("menu.run")),1)]),_:1})])])]),_:1})]),_:1})]))}}),j1={class:"comfyui-body grid h-full w-full overflow-hidden"},H1=H({__name:"GraphView",setup(e){A1(),I1(),v1();const{t:o}=de(),t=Rt(),s=ie(),a=Qe(),l=it(),i=St(),r=Ra(),u=Nl(),p=E(null),{linearMode:v}=Fe(fe());za(),se(()=>l.completedActivePalette,T=>{const $="dark-theme";T.light_theme?document.body.classList.remove($):document.body.classList.add($),Be()&&mo().changeTheme({color:"rgba(0, 0, 0, 0)",symbolColor:T.colors.comfy_base["input-text"]})},{immediate:!0}),Be()&&se(()=>i.tasks,(T,$)=>{const I=new Set($.filter(B=>B.isRunning).map(B=>B.promptId));T.filter(B=>I.has(B.promptId)&&B.isHistory).forEach(B=>{mo().Events.incrementUserProperty(`execution:${B.displayStatus.toLowerCase()}`,1),mo().Events.trackEvent("execution",{status:B.displayStatus.toLowerCase()})})},{deep:!0}),he(()=>{const T=s.get("Comfy.TextareaWidget.FontSize");document.documentElement.style.setProperty("--comfy-textarea-font-size",`${T}px`)}),he(()=>{const T=s.get("Comfy.TreeExplorer.ItemPadding");document.documentElement.style.setProperty("--comfy-tree-explorer-item-padding",`${T}px`)}),he(async()=>{const T=s.get("Comfy.Locale");if(T)try{await lu(T),Aa.global.locale.value=T}catch($){console.error(`Failed to switch to locale "${T}":`,$)}});const h=k(()=>s.get("Comfy.UseNewMenu"));he(()=>{h.value==="Disabled"?(J.ui.menuContainer.style.setProperty("display","block"),J.ui.restoreMenuPosition()):J.ui.menuContainer.style.setProperty("display","none")}),he(()=>{i.maxHistoryItems=s.get("Comfy.Queue.MaxHistoryItems")});const d=n(()=>{const T=$1();Ce().registerCommands(T),Ga().registerCoreMenuCommands(),pn().registerCoreKeybindings(),Uo().registerCoreSidebarTabs(),oo().registerCoreBottomPanelTabs(),J.extensionManager=tt()},"init"),b=ol(),y=Uo(),g=n(async T=>{b.update(T),await i.update(),y.activeSidebarTabId==="assets"&&await r.updateHistory()},"onStatus"),c=n(async()=>{await i.update(),y.activeSidebarTabId==="assets"&&await r.updateHistory()},"onExecutionSuccess"),w={severity:"error",summary:o("g.reconnecting")},_=n(()=>{s.get("Comfy.Toast.DisableReconnectingToast")||(t.remove(w),t.add(w))},"onReconnecting"),S=n(()=>{s.get("Comfy.Toast.DisableReconnectingToast")||(t.remove(w),t.add({severity:"success",summary:o("g.reconnected"),life:2e3}))},"onReconnected");Le(()=>{we.addEventListener("status",g),we.addEventListener("execution_success",c),we.addEventListener("reconnecting",_),we.addEventListener("reconnected",S),a.bindExecutionEvents();try{d(),p.value?.prepend(J.ui.menuContainer)}catch(T){console.error("Failed to init ComfyUI frontend",T)}}),gt(()=>{we.removeEventListener("status",g),we.removeEventListener("execution_success",c),we.removeEventListener("reconnecting",_),we.removeEventListener("reconnected",S),a.unbindExecutionEvents()}),Ae(window,"keydown",pn().keybindHandler);const{wrapWithErrorHandling:x,wrapWithErrorHandlingAsync:D}=Wt();D1({immediate:!0}),Oe(()=>{u.initialize().catch(T=>{console.warn("Version compatibility check failed:",T)})});const P=n(()=>{il(()=>{x(pn().registerUserKeybindings)(),x(fu().loadServerConfig)(M1,s.get("Comfy.Server.ServerConfigValues")),D(iu().loadModelFolders)(),D(es().loadNodeFrequencies)(),yt().nodeSearchService.searchNode("")},1e3)},"onGraphReady");return(T,$)=>(m(),N(le,null,[f("div",j1,[$[0]||($[0]=f("div",{id:"comfyui-body-top",class:"comfyui-body-top"},null,-1)),$[1]||($[1]=f("div",{id:"comfyui-body-bottom",class:"comfyui-body-bottom"},null,-1)),$[2]||($[2]=f("div",{id:"comfyui-body-left",class:"comfyui-body-left"},null,-1)),$[3]||($[3]=f("div",{id:"comfyui-body-right",class:"comfyui-body-right"},null,-1)),ue(f("div",{id:"graph-canvas-container",ref_key:"graphCanvasContainerRef",ref:p,class:"graph-canvas-container"},[W(c1,{onReady:P})],512),[[Ye,!C(v)]]),C(v)?(m(),F(G1,{key:0})):O("",!0)]),W(Xc),W(f1),C(Be)()?O("",!0):(m(),F(td,{key:0})),W(ed)],64))}}),q1=De(H1,[["__scopeId","data-v-f93a6874"]]),lk=Object.freeze(Object.defineProperty({__proto__:null,default:q1},Symbol.toStringTag,{value:"Module"}));export{lk as G,qc as _,Yc as a,dd as g};
16
- //# sourceMappingURL=GraphView-Cx4wYzNo.js.map
15
+ Helps prevent objects from being unintentionally nudged if the pointer is moved whilst clicking.`,experimental:!0,type:"slider",attrs:{min:0,max:1e3,step:25},defaultValue:150,versionAdded:"1.4.3"},{id:"Comfy.Pointer.DoubleClickTime",category:["LiteGraph","Pointer","DoubleClickTime"],name:"Double click interval (maximum)",tooltip:"The maximum time in milliseconds between the two clicks of a double-click. Increasing this value may assist if double-clicks are sometimes not registered.",type:"slider",attrs:{min:100,max:1e3,step:50},defaultValue:300,versionAdded:"1.4.3"},{id:"Comfy.SnapToGrid.GridSize",category:["LiteGraph","Canvas","GridSize"],name:"Snap to grid size",type:"slider",attrs:{min:1,max:500},tooltip:"When dragging and resizing nodes while holding shift they will be aligned to the grid, this controls the size of that grid.",defaultValue:me.CANVAS_GRID_SIZE},{id:"pysssss.SnapToGrid",category:["LiteGraph","Canvas","AlwaysSnapToGrid"],name:"Always snap to grid",type:"boolean",defaultValue:!1,versionAdded:"1.3.13"},{id:"Comfy.Server.ServerConfigValues",name:"Server config values for frontend display",tooltip:"Server config values used for frontend display only",type:"hidden",defaultValue:{},versionAdded:"1.4.8"},{id:"Comfy.Server.LaunchArgs",name:"Server launch arguments",tooltip:"These are the actual arguments that are passed to the server when it is launched.",type:"hidden",defaultValue:{},versionAdded:"1.4.8"},{id:"Comfy.Queue.MaxHistoryItems",name:"Queue history size",tooltip:"The maximum number of tasks that show in the queue history.",type:"slider",attrs:{min:2,max:256,step:2},defaultValue:64,versionAdded:"1.4.12"},{id:"Comfy.Execution.PreviewMethod",category:["Comfy","Execution","PreviewMethod"],name:"Live preview method",tooltip:'Live preview method during image generation. "default" uses the server CLI setting.',type:"combo",options:["default","none","auto","latent2rgb","taesd"],defaultValue:"default",versionAdded:"1.36.0"},{id:"LiteGraph.Canvas.MaximumFps",name:"Maximum FPS",tooltip:"The maximum frames per second that the canvas is allowed to render. Caps GPU usage at the cost of smoothness. If 0, the screen refresh rate is used. Default: 0",type:"slider",attrs:{min:0,max:120},defaultValue:0,versionAdded:"1.5.1"},{id:"Comfy.EnableWorkflowViewRestore",category:["Comfy","Workflow","EnableWorkflowViewRestore"],name:"Save and restore canvas position and zoom level in workflows",type:"boolean",defaultValue:!0,versionModified:"1.5.4"},{id:"Comfy.Workflow.ConfirmDelete",name:"Show confirmation when deleting workflows",type:"boolean",defaultValue:!0,versionAdded:"1.5.6"},{id:"Comfy.ColorPalette",name:"The active color palette id",type:"hidden",defaultValue:"dark",versionModified:"1.6.7",migrateDeprecatedValue(e){return e.startsWith("custom_")?e.replace("custom_",""):e}},{id:"Comfy.CustomColorPalettes",name:"Custom color palettes",type:"hidden",defaultValue:{},versionModified:"1.6.7"},{id:"Comfy.WidgetControlMode",category:["Comfy","Node Widget","WidgetControlMode"],name:"Widget control mode",tooltip:"Controls when widget values are updated (randomize/increment/decrement), either before the prompt is queued or after.",type:"combo",defaultValue:"after",options:["before","after"],versionModified:"1.6.10"},{id:"Comfy.TutorialCompleted",name:"Tutorial completed",type:"hidden",defaultValue:!1,versionAdded:"1.8.7"},{id:"Comfy.InstalledVersion",name:"The frontend version that was running when the user first installed ComfyUI",type:"hidden",defaultValue:null,versionAdded:"1.24.0"},{id:"LiteGraph.ContextMenu.Scaling",name:"Scale node combo widget menus (lists) when zoomed in",defaultValue:!1,type:"boolean",versionAdded:"1.8.8"},{id:"LiteGraph.Canvas.LowQualityRenderingZoomThreshold",type:"hidden",deprecated:!0,name:"Low quality rendering zoom threshold (deprecated)",tooltip:"Zoom level threshold for performance mode. Lower values (0.1) = quality at all zoom levels. Higher values (1.0) = performance mode even when zoomed in. Performance mode simplifies rendering by hiding text labels, shadows, and details.",attrs:{min:.1,max:1,step:.01},defaultValue:.6,versionAdded:"1.9.1",versionModified:"1.26.7"},{id:"LiteGraph.Canvas.MinFontSizeForLOD",name:"Zoom Node Level of Detail - font size threshold",tooltip:"Controls when the nodes switch to low quality LOD rendering. Uses font size in pixels to determine when to switch. Set to 0 to disable. Values 1-24 set the minimum font size threshold for LOD - higher values (24px) = switch nodes to simplified rendering sooner when zooming out, lower values (1px) = maintain full node quality longer.",type:"slider",attrs:{min:0,max:24,step:1},defaultValue:8,versionAdded:"1.26.7",hideInVueNodes:!0},{id:"Comfy.Canvas.SelectionToolbox",category:["LiteGraph","Canvas","SelectionToolbox"],name:"Show selection toolbox",type:"boolean",defaultValue:!0,versionAdded:"1.10.5"},{id:"LiteGraph.Reroute.SplineOffset",name:"Reroute spline offset",tooltip:"The bezier control point offset from the reroute centre point",type:"slider",defaultValue:20,attrs:{min:0,max:400},versionAdded:"1.15.7"},{id:"Comfy.Toast.DisableReconnectingToast",name:"Disable toasts when reconnecting or reconnected",type:"hidden",defaultValue:!1,versionAdded:"1.15.12"},{id:"Comfy.Minimap.Visible",name:"Display minimap on canvas",type:"hidden",defaultValue:window.innerWidth>=Yo.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:"newest"},{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"}];function Cw(){const e=Pe(),o=ie(),t=ot(),s=k(()=>o.get("Comfy.Workflow.AutoSave")),a=k(()=>o.get("Comfy.Workflow.AutoSaveDelay"));let l=null,i=!1,r=!1;const u=n(()=>{if(l&&(clearTimeout(l),l=null),s.value==="after delay"){if(i){r=!0;return}const v=a.value;l=setTimeout(async()=>{const h=e.activeWorkflow;if(h?.isModified&&h.isPersisted)try{i=!0,await t.saveWorkflow(h)}catch(d){console.error("Auto save failed:",d)}finally{i=!1,r&&(r=!1,u())}},v)}},"scheduleAutoSave");se(s,v=>{l&&(clearTimeout(l),l=null),v==="after delay"&&e.activeWorkflow?.isModified&&u()},{immediate:!0});const p=n(()=>{u()},"onGraphChanged");we.addEventListener("graphChanged",p),lt(()=>{l&&(clearTimeout(l),l=null),we.removeEventListener("graphChanged",p)})}n(Cw,"useWorkflowAutoSave");function Sw(){const e=xa(),o=_a(),{t}=de(),s=Rt(),a=yl(),l=fe(),i=Za.TEMPLATE,r=["linear"],u=n(d=>/^[a-zA-Z0-9_.-]+$/.test(d),"isValidParameter"),p=n(d=>r.includes(d),"isSupportedMode"),v=n(()=>{const d={...e.query};delete d.template,delete d.source,delete d.mode,o.replace({query:d})},"cleanupUrlParams");return{loadTemplateFromUrl:n(async()=>{const d=e.query.template;if(!d||typeof d!="string")return;if(!u(d)){console.warn(`[useTemplateUrlLoader] Invalid template parameter format: ${d}`);return}const b=e.query.source||"default";if(!u(b)){console.warn(`[useTemplateUrlLoader] Invalid source parameter format: ${b}`);return}const y=e.query.mode;if(y&&(typeof y!="string"||!u(y))){console.warn(`[useTemplateUrlLoader] Invalid mode parameter format: ${y}`);return}y&&!p(y)&&console.warn(`[useTemplateUrlLoader] Unsupported mode parameter: ${y}. Supported modes: ${r.join(", ")}`);try{await a.loadTemplates(),await a.loadWorkflowTemplate(d,b)?y==="linear"&&(l.linearMode=!0):s.add({severity:"error",summary:t("g.error"),detail:t("templateWorkflows.error.templateNotFound",{templateName:d}),life:3e3})}catch(g){console.error("[useTemplateUrlLoader] Failed to load template from URL:",g),s.add({severity:"error",summary:t("g.error"),detail:t("g.errorLoadingTemplate"),life:3e3})}finally{v(),Er(i)}},"loadTemplateFromUrl")}}n(Sw,"useTemplateUrlLoader");function xw(){const e=Pe(),o=ie(),t=xa(),s=_a(),a=Sw(),l=Za.TEMPLATE,i=n(async()=>{Lr(l);const x=Vr(l,t.query);return x&&await s.replace({query:x}),x??t.query},"ensureTemplateQueryFromIntent"),r=k(()=>o.get("Comfy.Workflow.Persist")),u=n(()=>{if(!r.value)return;const x=JSON.stringify(J.rootGraph.serialize());try{localStorage.setItem("workflow",x),we.clientId&&sessionStorage.setItem(`workflow:${we.clientId}`,x)}catch(D){const P=Object.keys(sessionStorage).filter(T=>T.startsWith("workflow:")||T==="workflow");throw console.error("QuotaExceededError details:",{workflowSizeKB:Math.round(x.length/1024),totalStorageItems:Object.keys(sessionStorage).length,ourWorkflowKeys:P.length,ourWorkflowSizes:P.map(T=>({key:T,sizeKB:Math.round(sessionStorage[T].length/1024)})),error:D instanceof Error?D.message:String(D)}),D}},"persistCurrentWorkflow"),p=n(async(x,D)=>{if(!x)return!1;const P=JSON.parse(x);return await J.loadGraphData(P,!0,!0,D),!0},"loadWorkflowFromStorage"),v=n(async()=>{const x=un("Comfy.PreviousWorkflow"),D=we.initialClientId??we.clientId;if(D){const T=sessionStorage.getItem(`workflow:${D}`);if(await p(T,x))return!0}const P=localStorage.getItem("workflow");return await p(P,x)},"loadPreviousWorkflowFromStorage"),h=n(async()=>{o.get("Comfy.TutorialCompleted")?await J.loadGraphData():(await o.set("Comfy.TutorialCompleted",!0),await ot().loadBlankWorkflow(),await Ce().execute("Comfy.BrowseTemplates"))},"loadDefaultWorkflow"),d=n(async()=>{if(r.value)try{await v()||await h()}catch(x){console.error("Error loading previous workflow",x),await h()}},"initializeWorkflow"),b=n(async()=>{const x=await i();x.template&&typeof x.template=="string"&&await a.loadTemplateFromUrl()},"loadTemplateFromUrlIfPresent");se(()=>e.activeWorkflow?.key,x=>{x&&(cn("Comfy.PreviousWorkflow",x),u())}),we.addEventListener("graphChanged",u),ka(()=>{we.removeEventListener("graphChanged",u)});const y=k(()=>e.openWorkflows),g=k(()=>e.activeWorkflow),c=k(()=>{if(!y.value||!g.value)return{paths:[],activeIndex:-1};const x=y.value.filter(P=>P?.isPersisted).map(P=>P.path),D=y.value.findIndex(P=>P.path===g.value?.path);return{paths:x,activeIndex:D}}),w=JSON.parse(un("Comfy.OpenWorkflowsPaths")||"[]"),_=JSON.parse(un("Comfy.ActiveWorkflowIndex")||"-1");return se(c,({paths:x,activeIndex:D})=>{r.value&&(cn("Comfy.OpenWorkflowsPaths",JSON.stringify(x)),cn("Comfy.ActiveWorkflowIndex",JSON.stringify(D)))}),{initializeWorkflow:d,loadTemplateFromUrlIfPresent:b,restoreWorkflowTabsState:n(()=>{if(!r.value)return;w?.length>0&&_>=0&&e.openWorkflowsInBackground({left:w.slice(0,_),right:w.slice(_)})},"restoreWorkflowTabsState")}}n(xw,"useWorkflowPersistence");function _w(e,o={}){const{settleDelay:t=256,passive:s=!0}=o,a=E(!1),l=n(()=>{a.value=!0},"markTransformActive"),i=Kl(()=>{a.value=!1},t);return Ae(e,"wheel",n(()=>{l(),i()},"handleWheel"),{capture:!0,passive:s}),{isTransforming:a}}n(_w,"useTransformSettling");function Tw(){const e=ha({x:0,y:0,z:1}),o=k(()=>({transform:`scale(${e.z}) translate(${e.x}px, ${e.y}px)`,transformOrigin:"0 0"}));function t(d){!d||!d.ds||(e.x=d.ds.offset[0],e.y=d.ds.offset[1],e.z=d.ds.scale||1)}n(t,"syncWithCanvas");function s(d){return{x:(d.x+e.x)*e.z,y:(d.y+e.y)*e.z}}n(s,"canvasToScreen");const a=n(d=>({x:d.x/e.z-e.x,y:d.y/e.z-e.y}),"screenToCanvas");function l(d,b){const y=s({x:d[0],y:d[1]}),g=b[0]*e.z,c=b[1]*e.z;return new DOMRect(y.x,y.y,g,c)}n(l,"getNodeScreenBounds");function i(d){return e.z<.1?Math.min(d*5,2):e.z>3?Math.max(d*.5,.05):d}n(i,"calculateAdjustedMargin");function r(d){return Math.max(d[0],d[1])*e.z<4}n(r,"isNodeTooSmall");function u(d,b){const y=d.width*b,g=d.height*b;return{left:-y,right:d.width+y,top:-g,bottom:d.height+g}}n(u,"getExpandedViewportBounds");function p(d,b,y){const g=d.x+b[0]*e.z,c=d.y+b[1]*e.z;return!(g<y.left||d.x>y.right||c<y.top||d.y>y.bottom)}n(p,"testViewportIntersection");function v(d,b,y,g=.2){if(r(b))return!1;const c=s({x:d[0],y:d[1]}),w=i(g),_=u(y,w);return p(c,b,_)}n(v,"isNodeInViewport");function h(d,b=.2){const y=d.width*b,g=d.height*b,c=a({x:-y,y:-g}),w=a({x:d.width+y,y:d.height+g});return{x:c.x,y:c.y,width:w.x-c.x,height:w.y-c.y}}return n(h,"getViewportBounds"),{camera:Tn(e),transformStyle:o,syncWithCanvas:t,canvasToScreen:s,screenToCanvas:a,getNodeScreenBounds:l,isNodeInViewport:v,getViewportBounds:h}}n(Tw,"useTransformStateIndividual");const gs=Zo(Tw),Nw=H({__name:"TransformPane",props:{canvas:{}},setup(e){const o=e,{transformStyle:t,syncWithCanvas:s}=gs(),a=k(()=>o.canvas?.canvas),{isTransforming:l}=_w(a,{settleDelay:16});return eo(()=>{o.canvas&&s(o.canvas)},{immediate:!0}),(i,r)=>(m(),N("div",{"data-testid":"transform-pane",class:Q(C(pe)("absolute inset-0 w-full h-full pointer-events-none",C(l)?"transform-pane--interacting":"will-change-auto")),style:ve(C(t))},[Ne(i.$slots,"default",{},void 0,!0)],6))}}),$w=De(Nw,[["__scopeId","data-v-4d46eee6"]]),Iw={class:"flex items-center gap-2"},Mw={for:"node-colors"},Pw={class:"flex items-center gap-2"},Dw={for:"show-links"},Aw={class:"flex items-center gap-2"},Ew={for:"show-groups"},Lw={class:"flex items-center gap-2"},Vw={for:"render-bypass"},Ow={class:"flex items-center gap-2"},Rw={for:"render-error"},Ww=H({__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)=>(m(),N("div",{class:"minimap-panel mr-2 flex flex-col gap-2 bg-comfy-menu-bg p-3 text-sm shadow-interface",style:ve(o.panelStyles)},[f("div",Iw,[W(C(uo),{"input-id":"node-colors",name:"node-colors","model-value":o.nodeColors,binary:"","onUpdate:modelValue":t[0]||(t[0]=s=>o.$emit("updateOption","Comfy.Minimap.NodeColors",s))},null,8,["model-value"]),t[5]||(t[5]=f("i",{class:"icon-[lucide--palette]"},null,-1)),f("label",Mw,z(o.$t("minimap.nodeColors")),1)]),f("div",Pw,[W(C(uo),{"input-id":"show-links",name:"show-links","model-value":o.showLinks,binary:"","onUpdate:modelValue":t[1]||(t[1]=s=>o.$emit("updateOption","Comfy.Minimap.ShowLinks",s))},null,8,["model-value"]),t[6]||(t[6]=f("i",{class:"icon-[lucide--route]"},null,-1)),f("label",Dw,z(o.$t("minimap.showLinks")),1)]),f("div",Aw,[W(C(uo),{"input-id":"show-groups",name:"show-groups","model-value":o.showGroups,binary:"","onUpdate:modelValue":t[2]||(t[2]=s=>o.$emit("updateOption","Comfy.Minimap.ShowGroups",s))},null,8,["model-value"]),t[7]||(t[7]=f("i",{class:"icon-[lucide--frame]"},null,-1)),f("label",Ew,z(o.$t("minimap.showGroups")),1)]),f("div",Lw,[W(C(uo),{"input-id":"render-bypass",name:"render-bypass","model-value":o.renderBypass,binary:"","onUpdate:modelValue":t[3]||(t[3]=s=>o.$emit("updateOption","Comfy.Minimap.RenderBypassState",s))},null,8,["model-value"]),t[8]||(t[8]=f("i",{class:"icon-[lucide--circle-slash-2]"},null,-1)),f("label",Vw,z(o.$t("minimap.renderBypassState")),1)]),f("div",Ow,[W(C(uo),{"input-id":"render-error",name:"render-error","model-value":o.renderError,binary:"","onUpdate:modelValue":t[4]||(t[4]=s=>o.$emit("updateOption","Comfy.Minimap.RenderErrorState",s))},null,8,["model-value"]),t[9]||(t[9]=f("i",{class:"icon-[lucide--message-circle-warning]"},null,-1)),f("label",Rw,z(o.$t("minimap.renderErrorState")),1)])],4))}}),zw=["width","height"],Bw=H({__name:"MiniMap",setup(e){const o=Ce(),t=E(),s=xn("containerRef"),a=xn("canvasRef"),{initialized:l,visible:i,containerStyles:r,viewportStyles:u,width:p,height:v,panelStyles:h,nodeColors:d,showLinks:b,showGroups:y,renderBypass:g,renderError:c,updateOption:w,destroy:_,handlePointerDown:S,handlePointerMove:x,handlePointerUp:D,handlePointerCancel:P,handleWheel:T,setMinimapRef:$}=is({containerRefMaybe:s,canvasRefMaybe:a}),I=E(!1),B=n(()=>{I.value=!I.value},"toggleOptionsPanel");return Le(()=>{t.value&&$(t.value)}),lt(()=>{_()}),(G,M)=>C(i)&&C(l)?(m(),N("div",{key:0,ref_key:"minimapRef",ref:t,class:"minimap-main-container absolute right-0 bottom-[54px] z-1000 flex"},[I.value?(m(),F(Ww,{key:0,"panel-styles":C(h),"node-colors":C(d),"show-links":C(b),"show-groups":C(y),"render-bypass":C(g),"render-error":C(c),onUpdateOption:C(w)},null,8,["panel-styles","node-colors","show-links","show-groups","render-bypass","render-error","onUpdateOption"])):O("",!0),f("div",{ref_key:"containerRef",ref:s,class:"litegraph-minimap relative border border-interface-stroke bg-comfy-menu-bg shadow-interface",style:ve(C(r))},[W(ee,{class:"absolute top-0 left-0 z-10",size:"icon",variant:"muted-textonly","aria-label":G.$t("g.settings"),onClick:ke(B,["stop"])},{default:L(()=>M[7]||(M[7]=[f("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["aria-label"]),W(ee,{class:"absolute top-0 right-0 z-10",size:"icon",variant:"muted-textonly","aria-label":G.$t("g.close"),"data-testid":"close-minmap-button",onClick:M[0]||(M[0]=ke(()=>C(o).execute("Comfy.Canvas.ToggleMinimap"),["stop"]))},{default:L(()=>M[8]||(M[8]=[f("i",{class:"icon-[lucide--x]"},null,-1)])),_:1},8,["aria-label"]),f("hr",{class:"absolute top-6 h-px border-0 bg-node-component-border",style:ve({width:C(r).width})},null,4),f("canvas",{ref_key:"canvasRef",ref:a,width:C(p),height:C(v),class:"minimap-canvas"},null,8,zw),f("div",{class:"minimap-viewport",style:ve(C(u))},null,4),f("div",{class:"absolute inset-0 touch-none",onPointerdown:M[1]||(M[1]=(...V)=>C(S)&&C(S)(...V)),onPointermove:M[2]||(M[2]=(...V)=>C(x)&&C(x)(...V)),onPointerup:M[3]||(M[3]=(...V)=>C(D)&&C(D)(...V)),onPointerleave:M[4]||(M[4]=(...V)=>C(D)&&C(D)(...V)),onPointercancel:M[5]||(M[5]=(...V)=>C(P)&&C(P)(...V)),onWheel:M[6]||(M[6]=(...V)=>C(T)&&C(T)(...V))},null,32)],4)],512)):O("",!0)}}),Fw=De(Bw,[["__scopeId","data-v-66f11255"]]);function Vn(e){return e.ctrlKey||e.metaKey||e.shiftKey}n(Vn,"isMultiSelectKey");function Uw(){const e=fe(),{nodeManager:o}=ps(),{bringNodeToFront:t}=el(),{shouldHandleNodePointerEvents:s}=lo();function a(p,v){if(!s.value||!e.canvas||!o.value)return;const h=o.value.getNode(v);if(!h)return;const d=Vn(p),b=e.selectedItems.length,y=!d&&h.selected&&b>1;d?h.selected||e.canvas.select(h):y||(e.canvas.deselectAll(),e.canvas.select(h)),h.flags?.pinned||t(v),e.updateSelectedItems()}n(a,"handleNodeSelect");function l(p,v){if(!s.value||!o.value)return;const h=o.value.getNode(p);if(!h)return;(h.flags?.collapsed??!1)!==v&&h.collapse()}n(l,"handleNodeCollapse");function i(p,v){if(!s.value||!o.value)return;const h=o.value.getNode(p);h&&(h.title=v)}n(i,"handleNodeTitleUpdate");function r(p,v){if(!s.value||!e.canvas||!o.value)return;const h=o.value.getNode(v);h&&(p.preventDefault(),h.selected||a(p,v))}n(r,"handleNodeRightClick");function u(p,v){if(!s.value||!e.canvas||!o.value)return;const h=o.value.getNode(p);if(h){if(!v){e.canvas.deselectAll(),e.canvas.select(h),e.updateSelectedItems(),h.flags?.pinned||t(p);return}h.selected?e.canvas.deselect(h):(e.canvas.select(h),h.flags?.pinned||t(p)),e.updateSelectedItems()}}return n(u,"toggleNodeSelectionAfterPointerUp"),{handleNodeSelect:a,handleNodeCollapse:l,handleNodeTitleUpdate:i,handleNodeRightClick:r,toggleNodeSelectionAfterPointerUp:u}}n(Uw,"useNodeEventHandlersIndividual");const Sl=Zo(Uw);function xl(){const e=ie(),o=k(()=>e.get("Comfy.SnapToGrid.GridSize")),t=k(()=>e.get("pysssss.SnapToGrid"));function s(i){return i.shiftKey||t.value}n(s,"shouldSnap");function a(i){const r=o.value;if(!r)return{...i};const u=[i.x,i.y];return Ts(u,r)?{x:u[0],y:u[1]}:{...i}}n(a,"applySnapToPosition");function l(i){const r=o.value;if(!r)return{...i};const u=[i.width,i.height];return Ts(u,r)?{width:u[0],height:u[1]}:{...i}}return n(l,"applySnapToSize"),{gridSize:o,alwaysSnap:t,shouldSnap:s,applySnapToPosition:a,applySnapToSize:l}}n(xl,"useNodeSnap");function _l(){const e=Je(!1);let o=null;function t(a){a!==e.value&&(!o&&(o=J.canvas?.canvas??null,!o)||(e.value=a,o.dispatchEvent(new KeyboardEvent(a?"keydown":"keyup",{key:"Shift",shiftKey:a,bubbles:!0}))))}n(t,"syncShiftState");function s(a){t(a.shiftKey);const l=n(u=>{u.key==="Shift"&&t(u.shiftKey)},"handleKeyEvent"),i=Ae(window,"keydown",l,{passive:!0}),r=Ae(window,"keyup",l,{passive:!0});return()=>{i(),r()}}return n(s,"trackShiftKey"),ka(()=>{e.value=!1,o=null}),{trackShiftKey:s}}n(_l,"useShiftKeySync");const Tl=Zo(Gw);function Gw(){const e=nn(),{selectedNodeIds:o,selectedItems:t}=Fe(fe()),s=gs(),{shouldSnap:a,applySnapToPosition:l}=xl(),{trackShiftKey:i}=_l();let r=null,u=null,p=null,v=null,h=null,d=null,b=null;function y(w,_){const S=ze(Me.getNodeLayoutRef(_));if(!S)return;const x=S.position??{x:0,y:0};h=i(w),r={...x},u={x:w.clientX,y:w.clientY};const D=ze(o),P=D?.has(_);if(P&&D.size>1){p=new Map;for(const T of D){if(T===_)continue;const $=Me.getNodeLayoutRef(T).value;$&&p.set(T,{...$.position})}}else p=null;P?(b=ze(t).filter(Zn),d={x:0,y:0}):(b=null,d=null),e.setSource(go.Vue)}n(y,"startDrag");function g(w,_){if(!r||!u||v!==null)return;const{target:S,pointerId:x}=w;S instanceof HTMLElement&&!S.hasPointerCapture(x)&&S.setPointerCapture(x),v=requestAnimationFrame(()=>{if(v=null,!r||!u)return;const D={x:w.clientX-u.x,y:w.clientY-u.y},P=s.screenToCanvas({x:0,y:0}),T=s.screenToCanvas(D),$={x:T.x-P.x,y:T.y-P.y},I={x:r.x+$.x,y:r.y+$.y};if(e.moveNode(_,I),p&&p.size>0)for(const[B,G]of p){const M={x:G.x+$.x,y:G.y+$.y};e.moveNode(B,M)}if(b&&b.length>0&&d){const B={x:$.x-d.x,y:$.y-d.y};for(const G of b)G.move(B.x,B.y,!0)}d=$})}n(g,"handleDrag");function c(w,_){if(a(w)&&_){const S=[],x=ze(Me.getNodeLayoutRef(_));if(x){const D=x.position,P=l({...D});(P.x!==D.x||P.y!==D.y)&&S.push({nodeId:_,bounds:{x:P.x,y:P.y,width:x.size.width,height:x.size.height}})}if(p&&p.size>0)for(const D of p.keys()){const P=Me.getNodeLayoutRef(D).value;if(P){const T={...P.position},$=l(T);($.x!==T.x||$.y!==T.y)&&S.push({nodeId:D,bounds:{x:$.x,y:$.y,width:P.size.width,height:P.size.height}})}}S.length>0&&Me.batchUpdateNodeBounds(S)}r=null,u=null,p=null,b=null,d=null,h?.(),h=null,v!==null&&(cancelAnimationFrame(v),v=null)}return n(c,"endDrag"),{startDrag:y,handleDrag:g,endDrag:c}}n(Gw,"useNodeDragIndividual");function jw(e){const{startDrag:o,endDrag:t,handleDrag:s}=Tl(),{forwardEventToCanvas:a,shouldHandleNodePointerEvents:l}=lo(),{handleNodeSelect:i,toggleNodeSelectionAfterPointerUp:r}=Sl(),{nodeManager:u}=ps(),p=n(P=>Or(P)?(a(P),!0):!1,"forwardMiddlePointerIfNeeded");let v=!1;const h=E({x:0,y:0}),d=3;function b(P){if(p(P)||P.button!==0)return;if(!l.value){a(P);return}const T=ze(e);if(!T){console.warn("LGraphNode: nodeData is null/undefined in handlePointerDown");return}u.value?.getNode(T)?.flags?.pinned||(h.value={x:P.clientX,y:P.clientY},c(P,T))}n(b,"onPointerdown");function y(P){if(p(P)||Me.isResizingVueNodes.value)return;const T=ze(e);if(u.value?.getNode(T)?.flags?.pinned)return;const $=Vn(P),I=P.buttons&1;if(I&&$&&!Me.isDraggingVueNodes.value){Me.isDraggingVueNodes.value=!0,i(P,T),c(P,T);return}if(I&&!Me.isDraggingVueNodes.value){const B=P.clientX-h.value.x,G=P.clientY-h.value.y;Math.sqrt(B*B+G*G)>d&&(Me.isDraggingVueNodes.value=!0,i(P,T))}Me.isDraggingVueNodes.value&&s(P,T)}n(y,"onPointermove");function g(){Me.isDraggingVueNodes.value=!1}n(g,"cleanupDragState");function c(P,T){try{o(P,T)}finally{v=!0}}n(c,"safeDragStart");function w(P){try{const T=ze(e);t(P,T)}catch(T){console.error("Error during endDrag:",T)}finally{v=!1,g()}}n(w,"safeDragEnd");function _(P){if(p(P))return;if(!l.value){a(P);return}const $=Me.isDraggingVueNodes.value;if((v||$)&&(w(P),$)||P.button===2)return;const I=Vn(P),B=ze(e);B&&r(B,I)}n(_,"onPointerup");function S(P){Me.isDraggingVueNodes.value&&w(P)}n(S,"onPointercancel");function x(P){Me.isDraggingVueNodes.value&&(P.preventDefault(),g())}return n(x,"onContextmenu"),Jl(()=>{g()}),{pointerHandlers:{onPointerdown:b,onPointermove:y,onPointerup:_,onPointercancel:S,onContextmenu:x}}}n(jw,"useNodePointerInteractions");const Ko=new Map([["node",{dataAttribute:"nodeId",updateHandler:n(e=>{const o=e.map(({id:t,bounds:s})=>({nodeId:t,bounds:s}));Me.batchUpdateNodeBounds(o)},"updateHandler")}]]),na=new ResizeObserver(e=>{if(fe().linearMode)return;const o=Xa(),t=new Map,s=new Set;for(const a of e){if(!(a.target instanceof HTMLElement))continue;const l=a.target;let i,r;for(const[w,_]of Ko){const S=l.dataset[_.dataAttribute];if(S){i=w,r=S;break}}if(!i||!r)continue;const u=Array.isArray(a.borderBoxSize)?a.borderBoxSize[0]:{inlineSize:a.contentRect.width,blockSize:a.contentRect.height},p=u.inlineSize,v=u.blockSize,h=l.getBoundingClientRect(),[d,b]=o.clientPosToCanvasPos([h.left,h.top]),y={x:d,y:b},g={x:y.x,y:y.y+me.NODE_TITLE_HEIGHT,width:Math.max(0,p),height:Math.max(0,v)};let c=t.get(i);c||(c=[],t.set(i,c)),c.push({id:r,bounds:g}),i==="node"&&r&&s.add(r)}Me.setSource(go.DOM);for(const[a,l]of t){const i=Ko.get(a);i&&l.length&&i.updateHandler(l)}if(s.size>0)for(const a of s)Rr(a)});function Hw(e,o){const t=ze(e);Le(()=>{const s=Cs()?.proxy?.$el;if(!(s instanceof HTMLElement)||!t)return;const a=Ko.get(o);a&&(s.dataset[a.dataAttribute]=t,na.observe(s))}),lt(()=>{const s=Cs()?.proxy?.$el;if(!(s instanceof HTMLElement))return;const a=Ko.get(o);a&&(delete s.dataset[a.dataAttribute],na.unobserve(s))})}n(Hw,"useVueElementTracking");const qw=n(e=>{const o=k(()=>ze(e)??""),{nodeLocationProgressStates:t,isIdle:s}=Fe(Qe()),a=k(()=>{const p=o.value;return p?t.value[p]:void 0}),l=k(()=>!s.value&&a.value?.state==="running"),i=k(()=>{const p=a.value;return p&&p.max>0?p.value/p.max:void 0}),r=k(()=>{const p=i.value;return p!==void 0?Math.round(p*100):void 0}),u=k(()=>{const p=a.value;return p?p.state:"idle"});return{executing:l,progress:i,progressPercentage:r,progressState:a,executionState:u}},"useNodeExecutionState");function Kw(e){const o=ze(e),t=nn(),s=Me.getNodeLayoutRef(o);lt(()=>{Me.cleanupNodeRef(o)});const a=k(()=>s.value?.position??{x:0,y:0}),l=k(()=>s.value?.size??{width:200,height:100}),i=k(()=>s.value?.zIndex??0);function r(u){t.setSource(go.Vue),t.moveNode(o,u)}return n(r,"moveNodeTo"),{position:a,size:l,zIndex:i,moveNodeTo:r}}n(Kw,"useNodeLayout");const Jw=n((e,o)=>{const t=ze(e),s=Pe(),{nodePreviewImages:a}=Fe(Co()),l=k(()=>s.nodeIdToNodeLocatorId(t)),i=k(()=>{const v=l.value;if(!v)return;const h=a.value[v];return h?.length?h:void 0}),r=k(()=>!!i.value?.length),u=k(()=>{const v=i.value;return v?.length?v.at(-1):""}),p=k(()=>o?.isCollapsed?!o.isCollapsed.value&&r.value:r.value);return{locatorId:l,previewUrls:i,hasPreview:r,latestPreviewUrl:u,shouldShowPreviewImg:p}},"useNodePreviewState");function Yw(e){const o=gs(),t=E(!1),s=E(null),a=E(null),{shouldSnap:l,applySnapToSize:i}=xl(),{trackShiftKey:r}=_l();return{startResize:n(p=>{p.preventDefault(),p.stopPropagation();const v=p.currentTarget;if(!(v instanceof HTMLElement))return;const h=v.closest("[data-node-id]");if(!(h instanceof HTMLElement))return;const d=h.getBoundingClientRect(),b=o.camera.z,y={width:d.width/b,height:d.height/b},g=r(p);v.setPointerCapture(p.pointerId),Me.isResizingVueNodes.value=!0,t.value=!0,s.value={x:p.clientX,y:p.clientY},a.value=y;const c=n(x=>{if(!t.value||!s.value||!a.value)return;const D=o.camera.z,P=(x.clientX-s.value.x)/(D||1),T=(x.clientY-s.value.y)/(D||1);let $={width:a.value.width+P,height:a.value.height+T};l(x)&&($=i($));const I=v.closest("[data-node-id]");I instanceof HTMLElement&&e({size:$},I)},"handlePointerMove"),w=n(x=>{t.value&&(t.value=!1,Me.isResizingVueNodes.value=!1,s.value=null,a.value=null,g(),v.releasePointerCapture(x.pointerId),_(),S())},"handlePointerUp"),_=Ae("pointermove",c),S=Ae("pointerup",w)},"startResize"),isResizing:t}}n(Yw,"useNodeResize");const Qw={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Xw(e,o){return m(),N("svg",Qw,[...o[0]||(o[0]=[f("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[f("path",{d:"m2 2l20 20M10.41 10.41a2 2 0 1 1-2.83-2.83m5.92 5.92L6 21m12-9l3 3"}),f("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(Xw,"render$1");const Zw=Ca({name:"lucide-image-off",render:Xw}),e0={key:0,class:"flex h-full min-h-16 w-full min-w-16 flex-col"},t0={class:"relative h-88 w-full grow overflow-hidden rounded-[5px] bg-node-component-surface"},o0={key:0,class:"text-pure-white flex h-full w-full flex-col items-center justify-center text-center"},n0={class:"text-xs text-smoke-400"},s0=["src","alt"],a0={class:"text-node-component-header-text mt-1 text-center text-xs"},l0=H({__name:"LivePreview",props:{imageUrl:{}},setup(e){const o=e,t=E(null),s=E(!1);se(()=>o.imageUrl,()=>{t.value=null,s.value=!1});const a=n(i=>{if(!i.target||!(i.target instanceof HTMLImageElement))return;const r=i.target;s.value=!1,r.naturalWidth&&r.naturalHeight&&(t.value=`${r.naturalWidth} x ${r.naturalHeight}`)},"handleImageLoad"),l=n(()=>{s.value=!0,t.value=null},"handleImageError");return(i,r)=>{const u=Zw;return i.imageUrl?(m(),N("div",e0,[f("div",t0,[s.value?(m(),N("div",o0,[W(u,{class:"mb-1 size-8 text-smoke-500"}),f("p",n0,z(i.$t("g.imageFailedToLoad")),1)])):(m(),N("img",{key:1,src:i.imageUrl,alt:i.$t("g.liveSamplingPreview"),class:"pointer-events-none h-full w-full object-contain object-center",onLoad:a,onError:l},null,40,s0))]),f("div",a0,z(s.value?i.$t("g.errorLoadingImage"):t.value||i.$t("g.calculatingDimensions")),1)])):O("",!0)}}}),i0=["aria-label","aria-busy"],r0={key:0,class:"flex size-full flex-col items-center justify-center bg-smoke-800/50 text-center text-white py-8"},u0={class:"text-sm text-smoke-300"},c0={class:"mt-1 text-xs text-smoke-400"},d0=["src"],p0={key:3,class:"actions absolute top-2 right-2 flex gap-2.5"},f0=["title","aria-label"],m0=["title","aria-label"],v0={key:4,class:"absolute right-2 bottom-2 left-2 flex justify-center gap-1"},g0=["aria-label","onClick"],h0={class:"mt-2 text-center text-xs text-muted-foreground"},y0={key:0,class:"text-red-400"},b0={key:1,class:"text-smoke-400"},w0={key:2},sa="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",k0=H({__name:"VideoPreview",props:{imageUrls:{},nodeId:{}},setup(e){const o=e,{t}=de(),s=Co(),a=E(0),l=E(!1),i=E(!1),r=E(null),u=E(!1),p=E(!1),v=E(),h=k(()=>o.imageUrls[a.value]),d=k(()=>o.imageUrls.length>1);se(()=>o.imageUrls,I=>{a.value>=I.length&&(a.value=0),r.value=null,u.value=!1,p.value=I.length>0},{deep:!0,immediate:!0});const b=n(I=>{if(!I.target||!(I.target instanceof HTMLVideoElement))return;const B=I.target;p.value=!1,u.value=!1,B.videoWidth&&B.videoHeight&&(r.value=`${B.videoWidth} x ${B.videoHeight}`)},"handleVideoLoad"),y=n(()=>{p.value=!1,u.value=!0,r.value=null},"handleVideoError"),g=n(()=>{try{tn(h.value)}catch{Rt().add({severity:"error",summary:"Error",detail:t("g.failedToDownloadVideo"),life:3e3,group:"video-preview"})}},"handleDownload"),c=n(()=>{o.nodeId&&s.removeNodeOutputs(o.nodeId)},"handleRemove"),w=n(I=>{I>=0&&I<o.imageUrls.length&&(a.value=I,r.value=null,p.value=!0,u.value=!1)},"setCurrentIndex"),_=n(()=>{l.value=!0},"handleMouseEnter"),S=n(()=>{l.value=!1},"handleMouseLeave"),x=n(()=>{i.value=!0},"handleFocusIn"),D=n(I=>{v.value?.contains(I.relatedTarget)||(i.value=!1)},"handleFocusOut"),P=n(I=>["w-2 h-2 rounded-full transition-all duration-200 border-0 cursor-pointer",I===a.value?"bg-white":"bg-white/50 hover:bg-white/80"],"getNavigationDotClass"),T=n(I=>{if(!(o.imageUrls.length<=1))switch(I.key){case"ArrowLeft":I.preventDefault(),w(a.value>0?a.value-1:o.imageUrls.length-1);break;case"ArrowRight":I.preventDefault(),w(a.value<o.imageUrls.length-1?a.value+1:0);break;case"Home":I.preventDefault(),w(0);break;case"End":I.preventDefault(),w(o.imageUrls.length-1);break}},"handleKeyDown"),$=n(I=>{try{return new URL(I).searchParams.get("filename")||"Unknown file"}catch{return"Invalid URL"}},"getVideoFilename");return(I,B)=>I.imageUrls.length>0?(m(),N("div",{key:0,class:"video-preview group relative flex size-full min-h-16 min-w-16 flex-col px-2",onKeydown:T},[f("div",{ref_key:"videoWrapperEl",ref:v,class:"relative h-full w-full grow overflow-hidden rounded-[5px] bg-node-component-surface",tabindex:"0",role:"region","aria-label":I.$t("g.videoPreview"),"aria-busy":p.value,onMouseenter:_,onMouseleave:S,onFocusin:x,onFocusout:D},[u.value?(m(),N("div",r0,[B[0]||(B[0]=f("i",{class:"mb-2 icon-[lucide--video-off] h-12 w-12 text-smoke-400"},null,-1)),f("p",u0,z(I.$t("g.videoFailedToLoad")),1),f("p",c0,z($(h.value)),1)])):O("",!0),p.value&&!u.value?(m(),F(C(jn),{key:1,class:"absolute inset-0 size-full","border-radius":"5px",width:"100%",height:"100%"})):O("",!0),u.value?O("",!0):(m(),N("video",{key:2,src:h.value,class:Q(C(pe)("block size-full object-contain",p.value&&"invisible")),controls:"",loop:"",playsinline:"",onLoadeddata:b,onError:y},null,42,d0)),l.value||i.value?(m(),N("div",p0,[f("button",{class:Q(sa),title:I.$t("g.downloadVideo"),"aria-label":I.$t("g.downloadVideo"),onClick:g},B[1]||(B[1]=[f("i",{class:"icon-[lucide--download] h-4 w-4"},null,-1)]),8,f0),f("button",{class:Q(sa),title:I.$t("g.removeVideo"),"aria-label":I.$t("g.removeVideo"),onClick:c},B[2]||(B[2]=[f("i",{class:"icon-[lucide--x] h-4 w-4"},null,-1)]),8,m0)])):O("",!0),d.value?(m(),N("div",v0,[(m(!0),N(le,null,be(I.imageUrls,(G,M)=>(m(),N("button",{key:M,class:Q(P(M)),"aria-label":I.$t("g.viewVideoOfTotal",{index:M+1,total:I.imageUrls.length}),onClick:n(V=>w(M),"onClick")},null,10,g0))),128))])):O("",!0)],40,i0),f("div",h0,[u.value?(m(),N("span",y0,z(I.$t("g.errorLoadingVideo")),1)):p.value?(m(),N("span",b0,z(I.$t("g.loading"))+"... ",1)):(m(),N("span",w0,z(r.value||I.$t("g.calculatingDimensions")),1))])],32)):O("",!0)}}),C0={width:"1.2em",height:"1.2em",xmlns:"http://www.w3.org/2000/svg",class:"",viewBox:"0 0 16 16",fill:"none"},S0=["clip-path"],x0=["id"];function _0(e,o){return m(),N("svg",C0,[f("g",{"clip-path":"url(#"+e.idMap.clip0_704_2695+")"},[...o[0]||(o[0]=[Yl('<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,S0),f("defs",null,[f("clipPath",{id:e.idMap.clip0_704_2695},[...o[1]||(o[1]=[f("rect",{width:"16",height:"16",fill:"white"},null,-1)])],8,x0)])])}n(_0,"render");const T0=Ca({name:"comfy-mask",render:_0,setup(){return{idMap:{clip0_704_2695:"uicons-"+n(()=>Math.random().toString(36).substr(2,10),"__randId")()}}}}),N0=["aria-label","aria-busy"],$0={key:0,role:"alert",class:"flex size-full flex-col items-center justify-center bg-muted-background text-center text-base-foreground py-8"},I0={class:"text-sm text-base-foreground"},M0={class:"mt-1 text-xs text-base-foreground"},P0={key:1,class:"size-full"},D0=["src","alt"],A0={key:3,class:"actions absolute top-2 right-2 flex gap-2.5"},E0=["title","aria-label"],L0=["title","aria-label"],V0=["title","aria-label"],O0={class:"pt-2 text-center text-xs text-base-foreground"},R0={key:0,class:"text-red-400"},W0={key:1,class:"text-base-foreground"},z0={key:2},B0={key:0,class:"flex justify-center gap-1 pt-4"},F0=["aria-current","aria-label","onClick"],kn="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",U0=H({__name:"ImagePreview",props:{imageUrls:{},nodeId:{}},setup(e){const o=e,{t}=de(),s=Ce(),a=Co(),l=E(0),i=E(!1),r=E(!1),u=E(null),p=E(!1),v=E(!1),h=E(),d=E(),{start:b,stop:y}=Ql(()=>{v.value=!0},250,{immediate:!1}),g=k(()=>o.imageUrls[l.value]),c=k(()=>o.imageUrls.length>1),w=k(()=>`Node output ${l.value+1}`);se(()=>o.imageUrls,j=>{l.value>=j.length&&(l.value=0),u.value=null,p.value=!1,j.length>0&&b()},{deep:!0,immediate:!0});const _=n(j=>{if(!j.target||!(j.target instanceof HTMLImageElement))return;const q=j.target;y(),v.value=!1,p.value=!1,q.naturalWidth&&q.naturalHeight&&(u.value=`${q.naturalWidth} x ${q.naturalHeight}`)},"handleImageLoad"),S=n(()=>{y(),v.value=!1,p.value=!0,u.value=null},"handleImageError"),x=n(()=>{if(!o.nodeId||!h.value)return;const j=J.rootGraph?.getNodeById(o.nodeId);j&&(j.imageIndex=l.value,j.imgs=[h.value],J.canvas?.select(j))},"setupNodeForMaskEditor"),D=n(()=>{x(),s.execute("Comfy.MaskEditor.OpenMaskEditor")},"handleEditMask"),P=n(()=>{try{tn(g.value)}catch{Rt().add({severity:"error",summary:"Error",detail:t("g.failedToDownloadImage"),life:3e3,group:"image-preview"})}},"handleDownload"),T=n(()=>{o.nodeId&&a.removeNodeOutputs(o.nodeId)},"handleRemove"),$=n(j=>{l.value!==j&&j>=0&&j<o.imageUrls.length&&(l.value=j,b(),p.value=!1)},"setCurrentIndex"),I=n(()=>{i.value=!0},"handleMouseEnter"),B=n(()=>{i.value=!1},"handleMouseLeave"),G=n(()=>{r.value=!0},"handleFocusIn"),M=n(j=>{d.value?.contains(j.relatedTarget)||(r.value=!1)},"handleFocusOut"),V=n(j=>["w-2 h-2 rounded-full transition-all duration-200 border-0 cursor-pointer p-0",j===l.value?"bg-base-foreground":"bg-base-foreground/50 hover:bg-base-foreground/80"],"getNavigationDotClass"),U=n(j=>{if(!(o.imageUrls.length<=1))switch(j.key){case"ArrowLeft":j.preventDefault(),$(l.value>0?l.value-1:o.imageUrls.length-1);break;case"ArrowRight":j.preventDefault(),$(l.value<o.imageUrls.length-1?l.value+1:0);break;case"Home":j.preventDefault(),$(0);break;case"End":j.preventDefault(),$(o.imageUrls.length-1);break}},"handleKeyDown"),R=n(j=>{try{return new URL(j).searchParams.get("filename")||"Unknown file"}catch{return"Invalid URL"}},"getImageFilename");return(j,q)=>{const K=T0;return j.imageUrls.length>0?(m(),N("div",{key:0,class:"image-preview group relative flex size-full min-h-16 min-w-16 flex-col px-2 justify-center",onKeydown:U},[f("div",{ref_key:"imageWrapperEl",ref:d,class:"h-full w-full overflow-hidden rounded-[5px] bg-muted-background relative",tabindex:"0",role:"img","aria-label":j.$t("g.imagePreview"),"aria-busy":v.value,onMouseenter:I,onMouseleave:B,onFocusin:G,onFocusout:M},[p.value?(m(),N("div",$0,[q[0]||(q[0]=f("i",{class:"mb-2 icon-[lucide--image-off] h-12 w-12 text-base-foreground"},null,-1)),f("p",I0,z(j.$t("g.imageFailedToLoad")),1),f("p",M0,z(R(g.value)),1)])):O("",!0),v.value&&!p.value?(m(),N("div",P0,[W(C(jn),{"border-radius":"5px",width:"100%",height:"100%"})])):O("",!0),p.value?O("",!0):(m(),N("img",{key:2,ref_key:"currentImageEl",ref:h,src:g.value,alt:w.value,class:"block size-full object-contain pointer-events-none",onLoad:_,onError:S},null,40,D0)),i.value||r.value?(m(),N("div",A0,[c.value?O("",!0):(m(),N("button",{key:0,class:Q(kn),title:j.$t("g.editOrMaskImage"),"aria-label":j.$t("g.editOrMaskImage"),onClick:D},[W(K,{class:"h-4 w-4"})],8,E0)),f("button",{class:Q(kn),title:j.$t("g.downloadImage"),"aria-label":j.$t("g.downloadImage"),onClick:P},q[1]||(q[1]=[f("i",{class:"icon-[lucide--download] h-4 w-4"},null,-1)]),8,L0),f("button",{class:Q(kn),title:j.$t("g.removeImage"),"aria-label":j.$t("g.removeImage"),onClick:T},q[2]||(q[2]=[f("i",{class:"icon-[lucide--x] h-4 w-4"},null,-1)]),8,V0)])):O("",!0)],40,N0),f("div",O0,[p.value?(m(),N("span",R0,z(j.$t("g.errorLoadingImage")),1)):v.value?(m(),N("span",W0,z(j.$t("g.loading"))+"... ",1)):(m(),N("span",z0,z(u.value||j.$t("g.calculatingDimensions")),1))]),c.value?(m(),N("div",B0,[(m(!0),N(le,null,be(j.imageUrls,(ne,ce)=>(m(),N("button",{key:ce,class:Q(V(ce)),"aria-current":ce===l.value?"true":void 0,"aria-label":j.$t("g.viewImageOfTotal",{index:ce+1,total:j.imageUrls.length}),onClick:n(X=>$(ce),"onClick")},null,10,F0))),128))])):O("",!0)],32)):O("",!0)}}}),G0={key:0,class:"node-error p-2 text-sm text-red-500"},j0={key:1,class:"lg-node-content flex grow flex-col"},H0=H({__name:"NodeContent",props:{nodeData:{},media:{}},setup(e){const o=e,t=k(()=>o.media&&o.media.urls.length>0),s=k(()=>o.nodeData?.id?.toString()),a=E(null),{toastErrorHandler:l}=Wt();return Sa(i=>(a.value=i.message,l(i),!1)),(i,r)=>a.value?(m(),N("div",G0,z(C(ye)("nodeErrors.content","Node Content Error")),1)):(m(),N("div",j0,[Ne(i.$slots,"default",{},()=>[t.value&&i.media?.type==="video"?(m(),F(k0,{key:0,"image-urls":i.media.urls,"node-id":s.value,class:"mt-2"},null,8,["image-urls","node-id"])):t.value&&i.media?.type==="image"?(m(),F(U0,{key:1,"image-urls":i.media.urls,"node-id":s.value,class:"mt-2"},null,8,["image-urls","node-id"])):O("",!0)])]))}}),q0={key:0,class:"node-error p-2 text-sm text-red-500"},K0=["data-node-id"],J0={key:0,class:"flex flex-col justify-center items-center relative"},Y0={class:"relative mb-1"},Q0=["data-testid"],X0={key:1,class:"min-h-0 flex-1 flex"},Z0={key:2,class:"min-h-0 flex-1 px-4"},e1=["aria-label"],t1="absolute h-3 w-3 opacity-0 pointer-events-auto focus-visible:outline focus-visible:outline-2 focus-visible:outline-white/40",o1=225,aa="h-2 bg-primary-500 transition-all duration-300",n1=H({__name:"LGraphNode",props:{nodeData:{},error:{default:null}},setup(e){const{t:o}=de(),{handleNodeCollapse:t,handleNodeTitleUpdate:s,handleNodeRightClick:a}=Sl(),{bringNodeToFront:l}=el();Hw(()=>e.nodeData.id,"node");const{selectedNodeIds:i}=Fe(fe()),r=k(()=>i.value.has(e.nodeData.id)),u=k(()=>dn(e.nodeData)),{executing:p,progress:v}=qw(u),h=Qe(),d=k(()=>h.lastExecutionErrorNodeId===e.nodeData.id),b=k(()=>!!(d.value||e.nodeData.hasErrors||e.error||(h.lastNodeErrors?.[e.nodeData.id]?.errors.length??0)>0)),y=k(()=>e.nodeData.titleMode!==Wr.NO_TITLE),g=k(()=>e.nodeData.flags?.collapsed??!1),c=k(()=>e.nodeData.mode===Ee.BYPASS),w=k(()=>e.nodeData.mode===Ee.NEVER),_=k(()=>{const Y=it();return e.nodeData.bgcolor?zr(e.nodeData.bgcolor,!!Y.completedActivePalette.light_theme):""}),S=k(()=>{const Y=ie().get("Comfy.Node.Opacity")??1;return c.value||w.value?Y*.5:Y}),x=k(()=>Br(e.nodeData).length>0),D=k(()=>!!e.nodeData.outputs?.length),{handleWheel:P,shouldHandleNodePointerEvents:T}=lo(),$=E(null),{toastErrorHandler:I}=Wt();Sa(Y=>($.value=Y.message,I(Y),!1));const{position:B,size:G,zIndex:M}=Kw(()=>e.nodeData.id),{pointerHandlers:V}=jw(()=>e.nodeData.id),{onPointerdown:U,...R}=V,{startDrag:j}=Tl();async function q(Y){if(Y.altKey&&ut.value){const Z=je.cloneNodes([ut.value]);if(Z?.created?.length){const[$e]=Z.created;j(Y,`${$e.id}`),Me.isDraggingVueNodes.value=!0,await Oe(),l(`${$e.id}`);return}}U(Y)}n(q,"nodeOnPointerdown");const K=n(Y=>{Y.preventDefault(),Y.stopPropagation(),a(Y,e.nodeData.id),Hv(Y)},"handleContextMenu");Le(()=>{ne()});function ne(){const Y=Mt.value,{width:Z,height:$e}=G.value;if(!Y)return;const te=g.value?"-x":"";Y.style.setProperty(`--node-width${te}`,`${Z}px`),Y.style.setProperty(`--node-height${te}`,`${$e}px`)}n(ne,"initSizeStyles");const{startResize:ce}=Yw((Y,Z)=>{if(g.value)return;const $e=Math.max(Y.size.width,o1);Z.style.setProperty("--node-width",`${$e}px`),Z.style.setProperty("--node-height",`${Y.size.height}px`)}),X=n(Y=>{Y.button===0&&T.value&&(e.nodeData.flags?.pinned||ce(Y))},"handleResizePointerDown");se(g,Y=>{const Z=Mt.value;if(!Z)return;const[$e,te]=Y?["","-x"]:["-x",""],Te=Z.style.getPropertyValue(`--node-width${$e}`);Z.style.setProperty(`--node-width${te}`,Te),Z.style.setProperty(`--node-width${$e}`,"");const Ve=Z.style.getPropertyValue(`--node-height${$e}`);Z.style.setProperty(`--node-height${te}`,Ve),Z.style.setProperty(`--node-height${$e}`,"")});const oe=k(()=>!!It.value&&It.value.urls.length>0),{latestPreviewUrl:ae,shouldShowPreviewImg:xe}=Jw(()=>e.nodeData.id,{isCollapsed:g}),Ue=k(()=>b.value?"border-node-stroke-error":!y.value&&e.nodeData.bgcolor&&Fr(e.nodeData.bgcolor)?"border-0":""),qe=k(()=>pe(r.value&&"outline-node-component-outline",b.value&&"outline-node-stroke-error",p.value&&"outline-node-stroke-executing")),nt=k(()=>pe(e.nodeData.flags?.pinned?"cursor-default":Me.isDraggingVueNodes.value?"cursor-grabbing":"cursor-grab")),He=k(()=>{switch(e.nodeData.shape){case Tt.BOX:return"rounded-none";case Tt.CARD:return"rounded-tl-2xl rounded-br-2xl rounded-tr-none rounded-bl-none";default:return"rounded-2xl"}}),Ge=k(()=>{switch(e.nodeData.shape){case Tt.BOX:return"before:rounded-none";case Tt.CARD:return"before:rounded-tl-2xl before:rounded-br-2xl before:rounded-tr-none before:rounded-bl-none";default:return"before:rounded-2xl"}}),bt=n(()=>{t(e.nodeData.id,!g.value)},"handleCollapse"),rt=n(Y=>{s(e.nodeData.id,Y)},"handleHeaderTitleUpdate"),Ft=n(()=>{const Y=J.rootGraph;if(!Y){console.warn("LGraphNode: No graph available for subgraph navigation");return}const Z=dn(e.nodeData),$e=Ns(Y,Z);if(!$e?.isSubgraphNode()||!("subgraph"in $e)){console.warn("LGraphNode: Node is not a valid subgraph node",$e);return}const te=J.canvas;if(!te||typeof te.openSubgraph!="function"){console.warn("LGraphNode: Canvas or openSubgraph method not available");return}te.openSubgraph($e.subgraph,$e)},"handleEnterSubgraph"),Ut=Co(),xt=k(()=>e.nodeData.subgraphId?`${e.nodeData.subgraphId}:${e.nodeData.id}`:e.nodeData.id),ut=k(()=>{const Y=dn(e.nodeData);return Ns(J.rootGraph,Y)}),It=k(()=>{const Y=Ut.nodeOutputs[xt.value],Z=ut.value;if(!Z||!Y?.images?.length)return;const $e=Ut.getNodeImageUrls(Z);if(!$e?.length)return;const te=Z.inputs?.some(Ve=>Ve.type==="VIDEO");return{type:Z.previewMediaType==="video"||!Z.previewMediaType&&te?"video":"image",urls:$e}}),Mt=E(),ct=E(!1);function io(Y){const Z=ut.value;if(!Z||!Z.onDragOver){ct.value=!1;return}const $e=Z.onDragOver(Y);ct.value=$e}n(io,"handleDragOver");function ro(){ct.value=!1}n(ro,"handleDragLeave");async function Ke(Y){ct.value=!1;const Z=ut.value;!Z||!Z.onDragDrop||await Z.onDragDrop(Y)}return n(Ke,"handleDrop"),(Y,Z)=>$.value?(m(),N("div",q0,z(C(ye)("nodeErrors.render","Node Render Error")),1)):(m(),N("div",$t({key:1,ref_key:"nodeContainerRef",ref:Mt,tabindex:"0","data-node-id":Y.nodeData.id,class:C(pe)("bg-component-node-background lg-node absolute text-sm","contain-style contain-layout min-w-[225px] min-h-(--node-height) w-(--node-width)",He.value,"touch-none flex flex-col","border-1 border-solid border-component-node-border",C(T)&&"hover:ring-7 ring-node-component-ring","outline-transparent outline-2 focus-visible:outline-node-component-outline",Ue.value,qe.value,nt.value,{[`${Ge.value} before:pointer-events-none before:absolute before:bg-bypass/60 before:inset-0`]:c.value,[`${Ge.value} before:pointer-events-none before:absolute before:inset-0`]:w.value,"ring-4 ring-primary-500 bg-primary-500/10":ct.value},C(T)?"pointer-events-auto":"pointer-events-none",!g.value&&" pb-1"),style:[{transform:`translate(${C(B).x??0}px, ${(C(B).y??0)-C(me).NODE_TITLE_HEIGHT}px)`,zIndex:C(M),opacity:S.value,"--component-node-background":_.value}]},R,{onPointerdown:q,onWheel:Z[0]||(Z[0]=(...$e)=>C(P)&&C(P)(...$e)),onContextmenu:K,onDragover:ke(io,["prevent"]),onDragleave:ro,onDrop:ke(Ke,["stop","prevent"])}),[y.value?(m(),N("div",J0,[g.value?(m(),N(le,{key:0},[x.value?(m(),F($s,{key:0,multi:"",class:"absolute left-0 -translate-x-1/2"})):O("",!0),D.value?(m(),F($s,{key:1,multi:"",class:"absolute right-0 translate-x-1/2"})):O("",!0),W(Is,{"node-data":Y.nodeData,unified:""},null,8,["node-data"])],64)):O("",!0),W(Ur,{"node-data":Y.nodeData,collapsed:g.value,onCollapse:bt,"onUpdate:title":rt,onEnterSubgraph:Ft},null,8,["node-data","collapsed"])])):O("",!0),g.value&&C(p)&&C(v)!==void 0?(m(),N("div",{key:1,class:Q(C(pe)("absolute inset-x-4 -bottom-[1px] translate-y-1/2 rounded-full",aa)),style:ve({width:`${Math.min(C(v)*100,100)}%`})},null,6)):O("",!0),g.value?O("",!0):(m(),N(le,{key:2},[f("div",Y0,[C(p)&&C(v)!==void 0?(m(),N("div",{key:0,class:Q(C(pe)("absolute inset-x-0 top-1/2 -translate-y-1/2",C(v)<1&&"rounded-r-full",aa)),style:ve({width:`${Math.min(C(v)*100,100)}%`})},null,6)):O("",!0)]),f("div",{class:"flex flex-1 flex-col gap-1 pb-2","data-testid":`node-body-${Y.nodeData.id}`},[W(Is,{"node-data":Y.nodeData},null,8,["node-data"]),Y.nodeData.widgets?.length?(m(),F(tl,{key:0,"node-data":Y.nodeData},null,8,["node-data"])):O("",!0),oe.value?(m(),N("div",X0,[W(H0,{"node-data":Y.nodeData,media:It.value},null,8,["node-data","media"])])):O("",!0),C(xe)?(m(),N("div",Z0,[W(l0,{"image-url":C(ae)||null},null,8,["image-url"])])):O("",!0)],8,Q0)],64)),g.value?O("",!0):(m(),N("div",{key:3,role:"button","aria-label":C(o)("g.resizeFromBottomRight"),class:Q(C(pe)(t1,"right-0 bottom-0 cursor-se-resize")),onPointerdown:ke(X,["stop"])},null,42,e1))],16,K0))}});let $o=[],Io=!1,Mo=null;const s1=n(()=>{function e(a){const l=Object.keys(a.settingValues).length===0||!a.get("Comfy.TutorialCompleted"),i=!localStorage.getItem("workflow"),r=!localStorage.getItem("Comfy.PreviousWorkflow");return l&&i&&r}n(e,"checkIsNewUser");async function o(a){if(Io){if(Mo)try{await a()}catch(l){console.error("New user initialization callback failed:",l)}}else $o.push(a)}n(o,"registerInitCallback");async function t(a){if(!Io){if(Mo=e(a),Io=!0,!Mo){$o=[];return}await a.set("Comfy.InstalledVersion","1.37.2");for(const l of $o)try{await l()}catch(i){console.error("New user initialization callback failed:",i)}$o=[]}}n(t,"initializeIfNewUser");function s(){return Io?Mo:null}return n(s,"isNewUser"),{registerInitCallback:o,initializeIfNewUser:t,isNewUser:s}},"newUserService"),a1=H({__name:"SelectionRectangle",setup(e){const o=fe(),t=E(null);eo(()=>{const l=o.canvas;if(!l){t.value=null;return}const{pointer:i,dragging_rectangle:r}=l;if(r&&i.eDown&&i.eMove){const u=i.eDown.safeOffsetX,p=i.eDown.safeOffsetY,v=i.eMove.safeOffsetX-u,h=i.eMove.safeOffsetY-p;t.value={x:u,y:p,w:v,h}}else t.value=null});const s=k(()=>t.value!==null),a=k(()=>{const l=t.value;if(!l)return{};const i=l.w>=0?l.x:l.x+l.w,r=l.h>=0?l.y:l.y+l.h,u=Math.abs(l.w),p=Math.abs(l.h);return{left:`${i}px`,top:`${r}px`,width:`${u}px`,height:`${p}px`}});return(l,i)=>s.value?(m(),N("div",{key:0,class:"pointer-events-none absolute z-9999 border border-blue-400 bg-blue-500/20",style:ve(a.value)},null,4)):O("",!0)}}),l1={key:0,class:"workflow-tabs-container pointer-events-auto relative h-9.5 w-full"},i1={key:0,class:"app-drag fixed top-0 left-0 z-10 h-[var(--comfy-topbar-height)] w-full"},r1={class:"flex h-full items-center border-b border-interface-stroke bg-comfy-menu-bg shadow-interface"},u1={class:"sidebar-content-container h-full w-full overflow-x-hidden overflow-y-auto"},c1=H({__name:"GraphCanvas",emits:["ready"],setup(e,{emit:o}){const t=o,s=E(null),a=Je(null),l=ie(),i=yt(),r=tt(),u=fe(),p=Qe(),v=Nt(),h=it(),d=ja(),b=lo(),y=k(()=>l.get("Comfy.UseNewMenu")!=="Disabled"),g=k(()=>l.get("Comfy.Workflow.WorkflowTabsPosition")),c=k(()=>l.get("Comfy.Graph.CanvasMenu")),w=k(()=>l.get("Comfy.EnableTooltips")),_=k(()=>l.get("Comfy.Canvas.SelectionToolbox")),S=k(()=>r.sidebarTab.activeSidebarTab),x=k(()=>!r.focusMode&&y.value),D=k(()=>l.get("Comfy.Minimap.Visible")),{shouldRenderVueNodes:P}=Go(),T=ps(),$=n(async()=>{P.value&&(T.disposeNodeManagerAndSyncs(),await Oe(),T.initializeNodeManager())},"handleVueNodeLifecycleReset");se(()=>u.currentGraph,$),se(()=>u.isInSubgraph,async(V,U)=>{U&&!V&&Pe().updateActiveGraph(),await $()});const I=k(()=>Array.from(T.nodeManager.value?.vueNodeData?.values()??[]));he(()=>{me.nodeOpacity=l.get("Comfy.Node.Opacity")}),he(()=>{me.nodeLightness=h.completedActivePalette.light_theme?.5:void 0}),he(()=>{i.showDeprecated=l.get("Comfy.Node.ShowDeprecated")}),he(()=>{i.showExperimental=l.get("Comfy.Node.ShowExperimental")}),he(()=>{const V=l.get("Comfy.TextareaWidget.Spellcheck");document.querySelectorAll("textarea.comfy-multiline-input").forEach(R=>{R.spellcheck=V,R.focus(),R.blur()})}),se(()=>l.get("Comfy.WidgetControlMode"),()=>{u.canvas&&(Ms(J.rootGraph,V=>{if(V.widgets){for(const U of V.widgets)if(U[Kr]&&(Ps(U),!!U.linkedWidgets))for(const R of U.linkedWidgets)Ps(R)}}),u.canvas.setDirty(!0))}),se([()=>u.canvas,()=>l.get("Comfy.ColorPalette")],async([V,U])=>{V&&await d.loadColorPalette(U)}),se(()=>l.get("Comfy.Canvas.BackgroundImage"),async()=>{if(!u.canvas)return;const V=h.activePaletteId;V&&(await d.loadColorPalette(V),u.canvas.setDirty(!1,!0))}),se(()=>h.activePaletteId,async V=>{await l.set("Comfy.ColorPalette",V)}),se(()=>[p.nodeLocationProgressStates,u.canvas],([V,U])=>{if(U?.graph){for(const R of U.graph.nodes){const j=Pe().nodeIdToNodeLocatorId(R.id),q=V[j];q&&q.state==="running"?R.progress=q.value/q.max:R.progress=void 0}U.setDirty(!0,!1)}},{deep:!0}),se(()=>p.lastNodeErrors,V=>{J.graph&&(Ms(J.rootGraph,U=>{for(const q of U.inputs)delete q.hasErrors;for(const q of U.outputs)delete q.hasErrors;const R=V?.[U.id];if(!R)return;R.errors.filter(q=>q.extra_info?.input_name!==void 0).forEach(q=>{const K=q.extra_info.input_name,ne=U.findInputSlot(K);ne!==-1&&(U.inputs[ne].hasErrors=!0)})}),J.canvas.setDirty(!0,!0))}),Ae(s,"litegraph:no-items-selected",()=>{v.add({severity:"warn",summary:re("toastMessages.nothingSelected"),life:2e3})},{passive:!0});const B=n(async()=>{try{const V=await we.getCustomNodesI18n();qr(V)}catch(V){console.error("Failed to load custom nodes i18n",V)}},"loadCustomNodesI18n"),G=E(!1),M=xw();return pw(s),ww(),dw(),Le(async()=>{hw(),fw(),gw(),bw(),Cw(),Go(),J.vueAppReady=!0,r.spinner=!0,Gr.init(),await B();try{await l.loadSettingValues()}catch(R){if(R instanceof jr)localStorage.removeItem("Comfy.userId"),localStorage.removeItem("Comfy.userName"),window.location.reload();else throw R}kw.forEach(l.addSetting),await s1().initializeIfNewUser(l),await J.setup(s.value),u.canvas=J.canvas,u.canvas.render_canvas_border=!1,r.spinner=!1,cs().setPopoverRef(a.value),window.app=J,window.graph=J.graph,G.value=!0,T.setupEmptyGraphListener(),J.canvas.onSelectionChange=Xt(J.canvas.onSelectionChange,()=>u.updateSelectedItems()),h.customPalettes=l.get("Comfy.CustomColorPalettes"),await M.initializeWorkflow(),M.restoreWorkflowTabsState(),await M.loadTemplateFromUrlIfPresent();const{useReleaseStore:V}=await Gn(async()=>{const{useReleaseStore:R}=await Promise.resolve().then(()=>Ay);return{useReleaseStore:R}},void 0,import.meta.url);V().initialize(),se(()=>l.get("Comfy.Locale"),async()=>{await Ce().execute("Comfy.RefreshNodeDefinitions"),await ot().reloadCurrentWorkflow()}),ko(()=>fe().canvas,R=>{Ae(R.canvas,"litegraph:set-graph",()=>{Pe().updateActiveGraph()})},{immediate:!0}),t("ready")}),lt(()=>{T.cleanup()}),(V,U)=>(m(),N(le,null,[G.value?(m(),F(ad,{key:0},Fn({"graph-canvas-panel":L(()=>[c.value?(m(),F(ov,{key:0,class:"pointer-events-auto"})):O("",!0),G.value&&D.value&&y.value?(m(),F(Fw,{key:1,class:"pointer-events-auto"})):O("",!0)]),_:2},[x.value?{name:"workflow-tabs",fn:L(()=>[g.value==="Topbar"?(m(),N("div",l1,[C(Hr)()&&g.value!=="Topbar"?(m(),N("div",i1)):O("",!0),f("div",r1,[W(kl),W(wl)])])):O("",!0)]),key:"0"}:void 0,x.value?{name:"side-toolbar",fn:L(()=>[W(Eb)]),key:"1"}:void 0,x.value?{name:"side-bar-panel",fn:L(()=>[f("div",u1,[S.value?(m(),F(ls,{key:0,extension:S.value},null,8,["extension"])):O("",!0)])]),key:"2"}:void 0,x.value?{name:"topmenu",fn:L(()=>[W(gm)]),key:"3"}:void 0,x.value?{name:"bottom-panel",fn:L(()=>[W(xm)]),key:"4"}:void 0,x.value?{name:"right-side-panel",fn:L(()=>[W(gh)]),key:"5"}:void 0]),1024)):O("",!0),f("canvas",{id:"graph-canvas",ref_key:"canvasRef",ref:s,tabindex:"1",class:"absolute inset-0 size-full touch-none"},null,512),C(P)&&C(J).canvas&&G.value?(m(),F($w,{key:1,canvas:C(J).canvas,onWheelCapture:C(b).forwardEventToCanvas},{default:L(()=>[(m(!0),N(le,null,be(I.value,R=>(m(),F(n1,{key:R.id,"node-data":R,error:C(p).lastExecutionError?.node_id===R.id?"Execution error":null,"zoom-level":C(u).canvas?.ds?.scale||1,"data-node-id":R.id},null,8,["node-data","error","zoom-level","data-node-id"]))),128))]),_:1},8,["canvas","onWheelCapture"])):O("",!0),G.value?(m(),F(a1,{key:2})):O("",!0),w.value?(m(),F(sv,{key:3})):O("",!0),W(Mh,{ref_key:"nodeSearchboxPopoverRef",ref:a},null,512),G.value?(m(),N(le,{key:4},[W(pg),_.value?(m(),F(cg,{key:0})):O("",!0),C(P)?O("",!0):(m(),F(Pm,{key:1}))],64)):O("",!0)],64))}}),d1={class:"flex flex-auto flex-col items-start"},p1={class:"my-4 text-lg font-medium"},f1=H({__name:"RerouteMigrationToast",setup(e){const{t:o}=de(),t=Rt(),s=Pe(),a=n(async()=>{const l=J.rootGraph.serialize(),i=Jr(l);await J.loadGraphData(i,!1,!1,s.activeWorkflow),t.removeGroup("reroute-migration")},"migrateToLitegraphReroute");return(l,i)=>(m(),F(C(Ta),{group:"reroute-migration"},{message:L(()=>[f("div",d1,[f("div",p1,z(C(o)("toastMessages.migrateToLitegraphReroute")),1),W(ee,{class:"self-end",size:"sm",onClick:a},{default:L(()=>[_e(z(C(o)("g.migrate")),1)]),_:1})])]),_:1}))}}),la="ComfyUI",m1=" - ComfyUI",v1=n(()=>{const e=Qe(),o=ie(),t=Pe(),s=tt(),a=k(()=>e.isIdle?"":`[${Math.round(e.executionProgress*100)}%]`),l=k(()=>o.get("Comfy.UseNewMenu")!=="Disabled"),i=k(()=>o.get("Comfy.Workflow.AutoSave")==="after delay"),r=k(()=>!!t.activeWorkflow?.isModified),u=k(()=>!!t.activeWorkflow?.isPersisted),p=k(()=>s.shiftDown||i.value?!1:!!(!u.value||r.value)),v=k(()=>p.value?" *":""),h=k(()=>{const g=t.activeWorkflow?.filename;return g?v.value+g+m1:la}),d=k(()=>{const c=Object.entries(e.nodeProgressStates).filter(([D,P])=>P.state==="running");if(c.length===0)return"";if(c.length>1)return`${a.value}[${c.length} ${re("g.nodesRunning","nodes running")}]`;const[w,_]=c[0],S=Math.round(_.value/_.max*100),x=e.activePrompt?.workflow?.changeTracker?.activeState.nodes.find(D=>String(D.id)===w)?.type||"Node";return`${a.value}[${S}%] ${x}`}),b=k(()=>a.value+(l.value?h.value:la)),y=k(()=>d.value||b.value);Xl(y)},"useBrowserTabTitle"),g1={},h1={class:"size-full bg-modal-panel-background pr-6 pb-8 pl-4"};function y1(e,o){return m(),N("div",h1,[Ne(e.$slots,"default")])}n(y1,"_sfc_render");const b1=De(g1,[["render",y1]]),w1={class:"text-neutral text-base"},k1={class:"flex gap-2"},C1={class:"relative flex gap-2 px-6 pb-4"},S1=H({__name:"SampleModelSelector",props:{onClose:{type:Function}},setup(e){const o=E([{name:"Vue",value:"vue"},{name:"React",value:"react"},{name:"Angular",value:"angular"},{name:"Svelte",value:"svelte"}]),t=E([{name:"Project A",value:"proj-a"},{name:"Project B",value:"proj-b"},{name:"Project C",value:"proj-c"}]),s=E([{name:"Popular",value:"popular"},{name:"Latest",value:"latest"},{name:"A → Z",value:"az"}]),a=E([{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]"}]}]);Qo(sn,e.onClose);const l=E(""),i=E(""),r=E([]),u=E([]),p=E("popular"),v=E("installed"),h=k(()=>bl());return(d,b)=>(m(),F(ns,{"content-title":d.$t("assetBrowser.checkpoints")},{leftPanel:L(()=>[W(ss,{modelValue:v.value,"onUpdate:modelValue":b[0]||(b[0]=y=>v.value=y),"nav-items":a.value},{"header-icon":L(()=>b[6]||(b[6]=[f("i",{class:"text-neutral icon-[lucide--puzzle]"},null,-1)])),"header-title":L(()=>[f("span",w1,z(d.$t("g.title")),1)]),_:1},8,["modelValue","nav-items"])]),header:L(()=>[W(en,{modelValue:l.value,"onUpdate:modelValue":b[1]||(b[1]=y=>l.value=y),size:"lg",class:"max-w-[384px]"},null,8,["modelValue"])]),"header-right-area":L(()=>[f("div",k1,[W(ee,{variant:"primary",onClick:n(()=>{},"onClick")},{default:L(()=>[b[7]||(b[7]=f("i",{class:"icon-[lucide--upload]"},null,-1)),f("span",null,z(d.$t("g.upload")),1)]),_:1}),W(al,null,{default:L(({close:y})=>[W(ee,{variant:"secondary",onClick:n(()=>{y()},"onClick")},{default:L(()=>[b[8]||(b[8]=f("i",{class:"icon-[lucide--download]"},null,-1)),f("span",null,z(d.$t("g.settings")),1)]),_:2},1032,["onClick"]),W(ee,{variant:"primary",onClick:n(()=>{y()},"onClick")},{default:L(()=>[b[9]||(b[9]=f("i",{class:"icon-[lucide--scroll]"},null,-1)),f("span",null,z(d.$t("g.profile")),1)]),_:2},1032,["onClick"])]),_:1})])]),contentFilter:L(()=>[f("div",C1,[W(Vt,{modelValue:r.value,"onUpdate:modelValue":b[2]||(b[2]=y=>r.value=y),"search-query":i.value,"onUpdate:searchQuery":b[3]||(b[3]=y=>i.value=y),class:"w-[250px]",label:d.$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"]),W(Vt,{modelValue:u.value,"onUpdate:modelValue":b[4]||(b[4]=y=>u.value=y),label:d.$t("assetBrowser.selectProjects"),options:t.value},null,8,["modelValue","label","options"]),W(jo,{modelValue:p.value,"onUpdate:modelValue":b[5]||(b[5]=y=>p.value=y),label:d.$t("assetBrowser.sortingType"),options:s.value,class:"w-[135px]"},{icon:L(()=>b[10]||(b[10]=[f("i",{class:"icon-[lucide--filter]"},null,-1)])),_:1},8,["modelValue","label","options"])])]),content:L(()=>[f("div",{style:ve(h.value)},[(m(),N(le,null,be(100,y=>W(Eo,{key:y,size:"regular"},{top:L(()=>[W(Vo,{ratio:"landscape"},{default:L(()=>b[11]||(b[11]=[f("div",{class:"h-full w-full bg-blue-500"},null,-1)])),"top-right":L(()=>[W(ee,{size:"icon",class:"!bg-white !text-neutral-900",onClick:n(()=>{},"onClick")},{default:L(()=>b[12]||(b[12]=[f("i",{class:"icon-[lucide--info]"},null,-1)])),_:1})]),"bottom-right":L(()=>[W(Oo,{label:"png"}),W(Oo,{label:"1.2 MB"}),W(Oo,{label:"LoRA"},{icon:L(()=>b[13]||(b[13]=[f("i",{class:"icon-[lucide--folder]"},null,-1)])),_:1})]),_:1})]),bottom:L(()=>[W(Lo)]),_:2},1024)),64))],4)]),rightPanel:L(()=>[W(b1)]),_:1},8,["content-title"]))}}),ia="global-model-selector",x1=n(()=>{const e=et(),o=ht();function t(){o.closeDialog({key:ia})}n(t,"hide");function s(){e.showLayoutDialog({key:ia,component:S1,props:{onClose:t}})}return n(s,"show"),{show:s,hide:t}},"useModelSelectorDialog");function _1(e,o){const t=Yr.safeParse(e);if(!t.success){const g=t.error.errors.map(c=>`${c.path.join(".")}: ${c.message}`).join(", ");return console.error("Invalid asset item:",g),{success:!1,error:{code:"INVALID_ASSET",message:"Asset schema validation failed",assetId:e.id,details:{validationErrors:g}}}}const s=t.data,a=s.user_metadata;if(!a)return console.error(`Asset ${s.id} missing required user_metadata`),{success:!1,error:{code:"INVALID_ASSET",message:"Asset missing required user_metadata",assetId:s.id}};const l=a.filename;if(typeof l!="string"||l.length===0)return console.error(`Asset ${s.id} has invalid user_metadata.filename (expected non-empty string, got ${typeof l})`),{success:!1,error:{code:"INVALID_ASSET",message:`Invalid filename (expected non-empty string, got ${typeof l})`,assetId:s.id}};if(s.tags.length===0)return console.error(`Asset ${s.id} has no tags defined (expected at least one category tag)`),{success:!1,error:{code:"INVALID_ASSET",message:"Asset has no tags defined",assetId:s.id}};const i=s.tags.find(g=>g!==Ds&&g!==As);if(!i)return console.error(`Asset ${s.id} has no valid category tag. Available tags: ${s.tags.join(", ")} (expected tag other than '${Ds}' or '${As}')`),{success:!1,error:{code:"INVALID_ASSET",message:"Asset has no valid category tag",assetId:s.id,details:{availableTags:s.tags}}};const u=qn().getNodeProvider(i);if(!u)return console.error(`No node provider registered for category: ${i}`),{success:!1,error:{code:"NO_PROVIDER",message:`No node provider registered for category: ${i}`,assetId:s.id,details:{category:i}}};const v=no().getCanvasCenter(),h=me.createNode(u.nodeDef.name,u.nodeDef.display_name,{pos:v});if(!h)return console.error(`Failed to create node for type: ${u.nodeDef.name}`),{success:!1,error:{code:"NODE_CREATION_FAILED",message:`Failed to create node for type: ${u.nodeDef.name}`,assetId:s.id,details:{nodeType:u.nodeDef.name}}};const d=Pe(),b=d.isSubgraphActive?d.activeSubgraph:J.canvas.graph;if(!b)return console.error("No active graph available"),{success:!1,error:{code:"NO_GRAPH",message:"No active graph available",assetId:s.id}};const y=h.widgets?.find(g=>g.name===u.key);return y?(y.value=l,b.add(h),{success:!0,value:h}):(console.error(`Widget ${u.key} not found on node ${u.nodeDef.name}`),{success:!1,error:{code:"MISSING_WIDGET",message:`Widget ${u.key} not found on node ${u.nodeDef.name}`,assetId:s.id,details:{widgetName:u.key,nodeType:u.nodeDef.name}}})}n(_1,"createModelNodeFromAsset");const Po={DISTRIBUTION:"tf_42243568391700",ANONYMOUS_EMAIL:"tf_anonymous_requester_email",EMAIL:"tf_40029135130388",USER_ID:"tf_42515251051412"},T1="https://support.comfy.org/hc/en-us/requests/new";function N1(e){const o=new URLSearchParams({[Po.DISTRIBUTION]:"oss"});return e?.userEmail&&(o.append(Po.ANONYMOUS_EMAIL,e.userEmail),o.append(Po.EMAIL,e.userEmail)),e?.userId&&o.append(Po.USER_ID,e.userId),`${T1}?${o.toString()}`}n(N1,"buildSupportUrl");const{isActiveSubscription:Cn,showSubscriptionDialog:Sn}=Kn(),Do="1.22.2";function $1(){const e=ot(),o=Pe(),t=et(),s=it(),a=Wa(),l=Nt(),i=fe(),r=Qe(),{staticUrls:u,buildDocsUrl:p}=so(),v=oo(),{getSelectedNodes:h,toggleSelectedNodesMode:d}=Xn(),b=n(()=>o.activeWorkflow?.changeTracker,"getTracker"),y=n(c=>{const w=h();if(w.length===0)return;const _=ie().get("Comfy.SnapToGrid.GridSize");w.forEach(S=>{S.pos=c(S.pos,_)}),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 c=Pe().activeWorkflow;c&&await e.saveWorkflow(c)},"function")},{id:"Comfy.PublishSubgraph",icon:"pi pi-save",label:"Publish Subgraph",menubarLabel:"Publish",function:n(async()=>{await Va().publishSubgraph()},"function")},{id:"Comfy.SaveWorkflowAs",icon:"pi pi-save",label:"Save Workflow As",menubarLabel:"Save As",category:"essentials",function:n(async()=>{const c=Pe().activeWorkflow;c&&await e.saveWorkflowAs(c)},"function")},{id:"Comfy.ExportWorkflow",icon:"pi pi-download",label:"Export Workflow",menubarLabel:"Export",category:"essentials",function:n(async()=>{await e.exportWorkflow("workflow","workflow")},"function")},{id:"Comfy.ExportWorkflowAPI",icon:"pi pi-download",label:"Export Workflow (API Format)",menubarLabel:"Export (API)",function:n(async()=>{await e.exportWorkflow("workflow_api","output")},"function")},{id:"Comfy.Undo",icon:"pi pi-undo",label:"Undo",category:"essentials",function:n(async()=>{await b()?.undo?.()},"function")},{id:"Comfy.Redo",icon:"pi pi-refresh",label:"Redo",category:"essentials",function:n(async()=>{await b()?.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 w=J.canvas.subgraph;Xr(w).forEach(S=>w.remove(S))}we.dispatchCustomEvent("graphCleared")}},"function")},{id:"Comfy.Canvas.ResetView",icon:"pi pi-expand",label:"Reset View",function:n(()=>{no().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 we.interrupt(r.activePromptId),l.add({severity:"info",summary:re("g.interrupted"),detail:re("toastMessages.interrupted"),life:1e3})},"function")},{id:"Comfy.ClearPendingTasks",icon:"pi pi-stop",label:"Clear Pending Tasks",category:"essentials",function:n(async()=>{await St().clear(["queue"]),l.add({severity:"info",summary:re("g.confirmed"),detail:re("toastMessages.pendingTasksDeleted"),life:3e3})},"function")},{id:"Comfy.BrowseTemplates",icon:"pi pi-folder-open",label:"Browse Templates",function:n(()=>{ds().show()},"function")},{id:"Comfy.Canvas.ZoomIn",icon:"pi pi-plus",label:"Zoom In",category:"view-controls",function:n(()=>{const c=J.canvas.ds;c.changeScale(c.scale*1.1,c.element?[c.element.width/2,c.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 c=J.canvas.ds;c.changeScale(c.scale/1.1,c.element?[c.element.width/2,c.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 c=ie(),w=c.get("Comfy.VueNodes.Enabled")??!1;await c.set("Comfy.VueNodes.Enabled",!w)},"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){l.add({severity:"error",summary:re("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 c=ie();let w=me.SPLINE_LINK;return async()=>{const _=c.get("Comfy.LinkRenderMode");_===me.HIDDEN_LINK?await c.set("Comfy.LinkRenderMode",w):(w=_,await c.set("Comfy.LinkRenderMode",me.HIDDEN_LINK))}})(),active:n(()=>ie().get("Comfy.LinkRenderMode")!==me.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 c=ie();await c.set("Comfy.Minimap.Visible",!c.get("Comfy.Minimap.Visible"))},"function"),active:n(()=>ie().get("Comfy.Minimap.Visible"),"active")},{id:"Comfy.QueuePrompt",icon:"pi pi-play",label:"Queue Prompt",versionAdded:"1.3.7",category:"essentials",function:n(async c=>{if(!Cn.value){Sn();return}const w=vo().batchCount;await J.queuePrompt(0,w)},"function")},{id:"Comfy.QueuePromptFront",icon:"pi pi-play",label:"Queue Prompt (Front)",versionAdded:"1.3.7",category:"essentials",function:n(async c=>{if(!Cn.value){Sn();return}const w=vo().batchCount;await J.queuePrompt(-1,w)},"function")},{id:"Comfy.QueueSelectedOutputNodes",icon:"pi pi-play",label:"Queue Selected Output Nodes",versionAdded:"1.19.6",function:n(async c=>{if(!Cn.value){Sn();return}const w=vo().batchCount,_=h(),S=Fa(_);if(S.length===0){l.add({severity:"error",summary:re("toastMessages.nothingToQueue"),detail:re("toastMessages.pleaseSelectOutputNodes"),life:3e3});return}const x=Zr(S);if(x.length===0){l.add({severity:"error",summary:re("toastMessages.failedToQueue"),detail:re("toastMessages.failedExecutionPathResolution"),life:3e3});return}await J.queuePrompt(0,w,x)},"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:c}=J;if(!c.selectedItems?.size){l.add({severity:"error",summary:re("toastMessages.nothingToGroup"),detail:re("toastMessages.pleaseSelectNodesToGroup"),life:3e3});return}const w=new Lt,_=ie().get("Comfy.GroupSelectedNodes.Padding");w.resizeTo(c.selectedItems,_),c.graph?.add(w),w.recomputeInsideNodes(),on().titleEditorTarget=w},"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(()=>{d(Ee.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(()=>{d(Ee.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(()=>{h().forEach(c=>{c.pin(!c.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 c of J.canvas.selectedItems)(c instanceof vt||c instanceof Lt)&&c.pin(!c.pinned);J.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.Resize",icon:"pi pi-minus",label:"Resize Selected Nodes",versionAdded:"",function:n(()=>{h().forEach(c=>{const w=c.computeSize();c.setSize([w[0],w[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(()=>{h().forEach(c=>{c.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 c=eu.id,w=tu.id;return async()=>{const _=ie(),S=s.completedActivePalette;S.light_theme?(w=S.id,await _.set("Comfy.ColorPalette",c)):(c=S.id,await _.set("Comfy.ColorPalette",w))}})()},{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(()=>{tt().toggleFocusMode()},"function"),active:n(()=>tt().focusMode,"active")},{id:"Comfy.Graph.FitGroupToContents",icon:"pi pi-expand",label:"Fit Group To Contents",versionAdded:"1.4.9",function:n(()=>{for(const c of J.canvas.selectedItems)if(c instanceof Lt){c.recomputeInsideNodes();const w=ie().get("Comfy.GroupSelectedNodes.Padding");c.resizeTo(c.children,w),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(p("/",{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(()=>{cs().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:c,resolvedUserInfo:w}=ao(),_=N1({userEmail:c.value,userId:w.value?.id});window.open(_,"_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 pt().openManager({showToastOnLegacyError:!0})},"function")},{id:"Comfy.Manager.ShowUpdateAvailablePacks",icon:"pi pi-sync",label:"Check for Custom Node Updates",versionAdded:"1.17.0",function:n(async()=>{const c=pt();if(c.managerUIState.value===ou.DISABLED){l.add({severity:"error",summary:re("g.error"),detail:re("manager.notAvailable"),life:3e3});return}await c.openManager({initialTab:Jt.UpdateAvailable,showToastOnLegacyError:!1})},"function")},{id:"Comfy.Manager.ShowMissingPacks",icon:"pi pi-exclamation-circle",label:"Install Missing Custom Nodes",versionAdded:"1.17.0",function:n(async()=>{await pt().openManager({initialTab:Jt.Missing,showToastOnLegacyError:!1})},"function")},{id:"Comfy.Manager.ToggleManagerProgressDialog",icon:"pi pi-spinner",label:"Toggle the Custom Nodes Manager Progress Bar",versionAdded:"1.13.9",function:n(()=>{t.toggleManagerProgressDialog()},"function")},{id:"Comfy.User.OpenSignInDialog",icon:"pi pi-user",label:"Open Sign In Dialog",versionAdded:"1.17.6",function:n(async()=>{await t.showSignInDialog()},"function")},{id:"Comfy.User.SignOut",icon:"pi pi-sign-out",label:"Sign Out",versionAdded:"1.18.1",function:n(async()=>{await a.logout()},"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Up",icon:"pi pi-arrow-up",label:"Move Selected Nodes Up",versionAdded:Do,function:n(()=>y(([c,w],_)=>[c,w-_]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Down",icon:"pi pi-arrow-down",label:"Move Selected Nodes Down",versionAdded:Do,function:n(()=>y(([c,w],_)=>[c,w+_]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Left",icon:"pi pi-arrow-left",label:"Move Selected Nodes Left",versionAdded:Do,function:n(()=>y(([c,w],_)=>[c-_,w]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Right",icon:"pi pi-arrow-right",label:"Move Selected Nodes Right",versionAdded:Do,function:n(()=>y(([c,w],_)=>[c+_,w]),"function")},{id:"Comfy.Graph.ConvertToSubgraph",icon:"icon-[lucide--shrink]",label:"Convert Selection to Subgraph",versionAdded:"1.20.1",category:"essentials",function:n(()=>{const c=i.getCanvas(),w=c.subgraph??c.graph;if(!w)throw new TypeError("Canvas has no graph or subgraph set.");const _=w.convertToSubgraph(c.selectedItems);if(!_){l.add({severity:"error",summary:re("toastMessages.cannotCreateSubgraph"),detail:re("toastMessages.failedToConvertToSubgraph"),life:3e3});return}const{node:S}=_;c.select(S),i.updateSelectedItems()},"function")},{id:"Comfy.Graph.UnpackSubgraph",icon:"icon-[lucide--expand]",label:"Unpack the selected Subgraph",versionAdded:"1.26.3",function:n(()=>{const{unpackSubgraph:c}=Ua();c()},"function")},{id:"Comfy.Graph.EditSubgraphWidgets",label:"Edit Subgraph Widgets",icon:"icon-[lucide--settings-2]",versionAdded:"1.28.5",function:n(()=>{to().openPanel("subgraph")},"function")},{id:"Comfy.Graph.ToggleWidgetPromotion",icon:"icon-[lucide--arrow-left-right]",label:"Toggle promotion of hovered widget",versionAdded:"1.30.1",function:Qr},{id:"Comfy.OpenManagerDialog",icon:"mdi mdi-puzzle-outline",label:"Manager",function:n(async()=>{await pt().openManager({initialTab:Jt.All,showToastOnLegacyError:!1})},"function")},{id:"Comfy.ToggleHelpCenter",icon:"pi pi-question-circle",label:"Help Center",function:n(()=>{En().toggle()},"function"),active:n(()=>En().isVisible,"active")},{id:"Comfy.ToggleCanvasInfo",icon:"pi pi-info-circle",label:"Canvas Performance",function:n(async()=>{const c=ie(),w=c.get("Comfy.Graph.CanvasInfo");await c.set("Comfy.Graph.CanvasInfo",!w)},"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 c=fe().getCanvas(),w=Jn();c.graph&&c.setGraph(w.navigationStack.at(-2)??c.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(()=>{x1().show()},"function")},{id:"Comfy.Manager.CustomNodesManager.ShowLegacyCustomNodesMenu",icon:"pi pi-bars",label:"Custom Nodes (Legacy)",versionAdded:"1.16.4",function:n(async()=>{await pt().openManager({legacyCommand:"Comfy.Manager.CustomNodesManager.ToggleVisibility",showToastOnLegacyError:!0,isLegacyOnly:!0})},"function")},{id:"Comfy.Manager.ShowLegacyManagerMenu",icon:"mdi mdi-puzzle",label:"Manager Menu (Legacy)",versionAdded:"1.16.4",function:n(async()=>{await pt().openManager({showToastOnLegacyError:!0,isLegacyOnly:!0})},"function")},{id:"Comfy.Memory.UnloadModels",icon:"mdi mdi-vacuum-outline",label:"Unload Models",versionAdded:"1.16.4",function:n(async()=>{if(!ie().get("Comfy.Memory.AllowManualUnload")){Nt().add({severity:"error",summary:re("g.error"),detail:re("g.commandProhibited",{command:"Comfy.Memory.UnloadModels"}),life:3e3});return}await we.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")){Nt().add({severity:"error",summary:re("g.error"),detail:re("g.commandProhibited",{command:"Comfy.Memory.UnloadModelsAndExecutionCache"}),life:3e3});return}await we.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 zc().browse({assetType:"models",title:re("sideToolbar.modelLibrary"),onAssetSelected:n(w=>{const _=_1(w);_.success||(l.add({severity:"error",summary:re("g.error"),detail:re("assetBrowser.failedToCreateNode")}),console.error("Node creation failed:",_.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 c=ie(),w=c.get("Comfy.Assets.UseAssetAPI")??!1;await c.set("Comfy.Assets.UseAssetAPI",!w),await ot().reloadCurrentWorkflow()},"function")},{id:"Comfy.ToggleLinear",icon:"pi pi-database",label:"toggle linear mode",function:n(()=>i.linearMode=!i.linearMode,"function")}].map(c=>({...c,source:"System"}))}n($1,"useCoreCommands");const I1=n(()=>{const e="/assets/images/favicon_progress_16x16/frame_9.png",o=Zl(e),t=Qe(),s=10;se([()=>t.executionProgress,()=>t.isIdle],([a,l])=>{if(l)o.value=e;else{const i=Math.min(Math.max(0,Math.floor(a*s)),s-1);o.value=`/assets/images/favicon_progress_16x16/frame_${i}.png`}})},"useProgressFavicon");var On=(e=>(e.NoPreviews="none",e.Auto="auto",e.Latent2RGB="latent2rgb",e.TAESD="taesd",e))(On||{}),Rn=(e=>(e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.CRITICAL="CRITICAL",e))(Rn||{}),Wn=(e=>(e.MD5="md5",e.SHA1="sha1",e.SHA256="sha256",e.SHA512="sha512",e))(Wn||{}),Ht=(e=>(e.Auto="auto",e.Disable="disable",e.Enable="enable",e))(Ht||{}),Ie=(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))(Ie||{}),Wo=(e=>(e.Auto="auto",e.Split="split",e.Quad="quad",e.Pytorch="pytorch",e))(Wo||{}),zo=(e=>(e.Auto="auto",e.GPUOnly="gpu-only",e.HighVram="highvram",e.NormalVram="normalvram",e.LowVram="lowvram",e.NoVram="novram",e.CPU="cpu",e))(zo||{});const M1=[{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(Ht),defaultValue:Ht.Auto,getValue:n(e=>{switch(e){case Ht.Auto:return{};case Ht.Enable:return{"cuda-malloc":!0};case Ht.Disable:return{"disable-cuda-malloc":!0}}},"getValue")},{id:"global-precision",name:"Global floating point precision",category:["Inference"],type:"combo",options:[Ie.AUTO,Ie.FP32,Ie.FP16],defaultValue:Ie.AUTO,tooltip:"Global floating point precision",getValue:n(e=>{switch(e){case Ie.AUTO:return{};case Ie.FP32:return{"force-fp32":!0};case Ie.FP16:return{"force-fp16":!0};default:return{}}},"getValue")},{id:"unet-precision",name:"UNET precision",category:["Inference"],type:"combo",options:[Ie.AUTO,Ie.FP64,Ie.FP32,Ie.FP16,Ie.BF16,Ie.FP8E4M3FN,Ie.FP8E5M2],defaultValue:Ie.AUTO,tooltip:"UNET precision",getValue:n(e=>{switch(e){case Ie.AUTO:return{};default:return{[`${e.toLowerCase()}-unet`]:!0}}},"getValue")},{id:"vae-precision",name:"VAE precision",category:["Inference"],type:"combo",options:[Ie.AUTO,Ie.FP16,Ie.FP32,Ie.BF16],defaultValue:Ie.AUTO,tooltip:"VAE precision",getValue:n(e=>{switch(e){case Ie.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:[Ie.AUTO,Ie.FP8E4M3FN,Ie.FP8E5M2,Ie.FP16,Ie.FP32],defaultValue:Ie.AUTO,tooltip:"Text Encoder precision",getValue:n(e=>{switch(e){case Ie.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(On),defaultValue:On.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(Wo),defaultValue:Wo.Auto,getValue:n(e=>{switch(e){case Wo.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(zo),defaultValue:zo.Auto,getValue:n(e=>{switch(e){case zo.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(Wn),defaultValue:Wn.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(Rn),defaultValue:Rn.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:""}],P1=10080*60*1e3,Nl=Ot("versionCompatibility",()=>{const e=qa(),o=ie(),t=k(()=>nu.app_version),s=k(()=>e.systemStats?.system?.comfyui_version??""),a=k(()=>e.systemStats?.system?.required_frontend_version??""),l=k(()=>!t.value||!a.value||!At.valid(t.value)||!At.valid(a.value)?!1:At.gt(a.value,t.value)),i=k(()=>!1),r=k(()=>l.value),u=k(()=>!t.value||!s.value||!a.value?null:`${t.value}-${s.value}-${a.value}`),p=ei("comfy.versionMismatch.dismissals",{},localStorage,{serializer:{read:n(c=>{try{return JSON.parse(c)}catch{return{}}},"read"),write:n(c=>JSON.stringify(c),"write")}}),v=k(()=>{if(!u.value)return!1;const c=p.value[u.value];return c?Date.now()<c:!1}),h=k(()=>{const c=o.get("Comfy.VersionCompatibility.DisableWarnings");return r.value&&!v.value&&!c}),d=k(()=>l.value?{type:"outdated",frontendVersion:t.value,requiredVersion:a.value}:null);async function b(){e.systemStats||await ba(e.isInitialized)}n(b,"checkVersionCompatibility");function y(){if(!u.value)return;const c=Date.now()+P1;p.value={...p.value,[u.value]:c}}n(y,"dismissWarning");async function g(){await b()}return n(g,"initialize"),{frontendVersion:t,backendVersion:s,requiredFrontendVersion:a,hasVersionMismatch:r,shouldShowWarning:h,warningMessage:d,isFrontendOutdated:l,isFrontendNewer:i,checkVersionCompatibility:b,dismissWarning:y,initialize:g}});function D1(e={}){const{immediate:o=!1}=e,{t}=de(),s=Nt(),a=Nl();let l=!1;const i=n(()=>{if(l)return;const r=a.warningMessage;if(!r)return;const u=t("g.frontendOutdated",{frontendVersion:r.frontendVersion,requiredVersion:r.requiredVersion}),p=t("g.versionMismatchWarningMessage",{warning:t("g.versionMismatchWarning"),detail:u});s.addAlert(p),l=!0,a.dismissWarning()},"showWarning");return Le(()=>{o&&ko(()=>a.shouldShowWarning,()=>{i()},{immediate:!0,once:!0})}),{showWarning:i,shouldShowWarning:k(()=>a.shouldShowWarning),dismissWarning:a.dismissWarning,hasVersionMismatch:k(()=>a.hasVersionMismatch)}}n(D1,"useFrontendVersionMismatchWarning");function A1(){const e=ol(),o=vo();let t=!1,s=0;we.addEventListener("graphChanged",()=>{o.mode==="change"&&(s?t=!0:(t=!1,J.queuePrompt(0,o.batchCount),s++))}),e.$subscribe(async()=>{s=e.count,!s&&!J.lastExecutionError&&(o.mode==="instant"||o.mode==="change"&&t)&&(t=!1,await J.queuePrompt(0,o.batchCount))},{detached:!0})}n(A1,"setupAutoQueueHandler");const E1={class:"absolute w-full h-full"},L1={class:"workflow-tabs-container pointer-events-auto h-9.5 w-full"},V1={class:"flex h-full items-center"},O1={class:"sidebar-content-container h-full w-full overflow-x-hidden overflow-y-auto border-r-1 border-node-component-border"},R1=["src"],W1={key:0,class:"pointer-events-none object-contain flex-1 max-h-full brightness-50 opacity-10",src:au},z1={class:"actionbar-container flex h-12 items-center rounded-lg border border-[var(--interface-stroke)] p-2 gap-2 bg-comfy-menu-bg justify-end"},B1={class:"rounded-lg border p-2 gap-2 h-full border-[var(--interface-stroke)] bg-comfy-menu-bg flex flex-col"},F1={class:"grow-1 flex justify-start flex-col overflow-y-auto contain-size *:max-h-100"},U1={class:"p-4 pb-0 border-t border-node-component-border"},G1=H({__name:"LinearView",setup(e){const o=Co(),t=Ce(),s=k(()=>{function v(h){const d=hl(h,new Map),b=h.widgets?.map(y=>{const g=d(y);return g.callback=function(c){if(Cg(c))return y.value=c??void 0,y.callback?.(y.value)},g})??[];return{id:`${h.id}`,title:h.title,type:h.type,mode:0,selected:!1,executing:!1,widgets:b}}return n(v,"nodeToNodeData"),J.rootGraph.nodes.filter(h=>h.mode===0&&h.widgets?.length).map(v)}),{isLoggedIn:a}=ao(),l=Be(),i={options:{step2:1,precision:1,min:1,max:100},value:1,name:re("Number of generations"),type:"number"},{batchCount:r}=Fe(vo());async function u(v){const d="shiftKey"in v&&v.shiftKey?"Comfy.QueuePromptFront":"Comfy.QueuePrompt";r.value>1,await t.execute(d,{metadata:{subscribe_to_run:!1,trigger_source:"button"}})}n(u,"runButtonClick");function p(){window.open("https://support.comfy.org/hc/en-us/requests/new?ticket_form_id=40026345549204","_blank","noopener,noreferrer")}return n(p,"openFeedback"),(v,h)=>(m(),N("div",E1,[f("div",L1,[f("div",V1,[W(kl),W(wl)])]),W(C(Nn),{class:"h-[calc(100%-38px)] w-full bg-comfy-menu-secondary-bg",pt:{gutter:{class:"bg-transparent w-4 -mx-3"}}},{default:L(()=>[W(C(_t),{size:1,class:"min-w-min bg-comfy-menu-bg"},{default:L(()=>[f("div",O1,[W(ls,{extension:C(su)()},null,8,["extension"])])]),_:1}),W(C(_t),{size:98,class:"flex flex-row overflow-y-auto flex-wrap min-w-min gap-4 m-4"},{default:L(()=>[(m(!0),N(le,null,be(C(o).latestOutput,d=>(m(),N("img",{key:d,class:"pointer-events-none object-contain flex-1 max-h-full",src:d},null,8,R1))),128)),C(o).latestOutput.length===0?(m(),N("img",W1)):O("",!0)]),_:1}),W(C(_t),{size:1,class:"flex flex-col gap-1 p-1 min-w-min"},{default:L(()=>[f("div",z1,[W(ee,{variant:"secondary",onClick:p},{default:L(()=>[_e(z(C(re)("g.feedback")),1)]),_:1}),W(ee,{variant:"secondary",class:"min-w-max",onClick:h[0]||(h[0]=d=>C(fe)().linearMode=!1)},{default:L(()=>[_e(z(C(re)("linearMode.openWorkflow"))+" ",1),h[3]||(h[3]=f("i",{class:"icon-[comfy--workflow]"},null,-1))]),_:1}),W(ee,{variant:"inverted",onClick:h[1]||(h[1]=d=>C(ot)().exportWorkflow("workflow","workflow"))},{default:L(()=>[_e(z(C(re)("linearMode.share")),1)]),_:1}),C(a)?(m(),F(cl,{key:0})):C(l)?(m(),F(dl,{key:1})):O("",!0)]),f("div",B1,[f("div",F1,[(m(!0),N(le,null,be(s.value,d=>(m(),F(tl,{key:d.id,"node-data":d,class:"border-b-1 border-node-component-border pt-1 pb-2 last:border-none"},null,8,["node-data"]))),128))]),f("div",U1,[W(mu,{modelValue:C(r),"onUpdate:modelValue":h[2]||(h[2]=d=>ft(r)?r.value=d:null),widget:i,class:"*:[.min-w-56]:basis-0"},null,8,["modelValue"]),W(ee,{class:"w-full mt-4",onClick:u},{default:L(()=>[h[4]||(h[4]=f("i",{class:"icon-[lucide--play]"},null,-1)),_e(" "+z(C(re)("menu.run")),1)]),_:1})])])]),_:1})]),_:1})]))}}),j1={class:"comfyui-body grid h-full w-full overflow-hidden"},H1=H({__name:"GraphView",setup(e){A1(),I1(),v1();const{t:o}=de(),t=Rt(),s=ie(),a=Qe(),l=it(),i=St(),r=Ra(),u=Nl(),p=E(null),{linearMode:v}=Fe(fe());za(),se(()=>l.completedActivePalette,T=>{const $="dark-theme";T.light_theme?document.body.classList.remove($):document.body.classList.add($),Be()&&mo().changeTheme({color:"rgba(0, 0, 0, 0)",symbolColor:T.colors.comfy_base["input-text"]})},{immediate:!0}),Be()&&se(()=>i.tasks,(T,$)=>{const I=new Set($.filter(B=>B.isRunning).map(B=>B.promptId));T.filter(B=>I.has(B.promptId)&&B.isHistory).forEach(B=>{mo().Events.incrementUserProperty(`execution:${B.displayStatus.toLowerCase()}`,1),mo().Events.trackEvent("execution",{status:B.displayStatus.toLowerCase()})})},{deep:!0}),he(()=>{const T=s.get("Comfy.TextareaWidget.FontSize");document.documentElement.style.setProperty("--comfy-textarea-font-size",`${T}px`)}),he(()=>{const T=s.get("Comfy.TreeExplorer.ItemPadding");document.documentElement.style.setProperty("--comfy-tree-explorer-item-padding",`${T}px`)}),he(async()=>{const T=s.get("Comfy.Locale");if(T)try{await lu(T),Aa.global.locale.value=T}catch($){console.error(`Failed to switch to locale "${T}":`,$)}});const h=k(()=>s.get("Comfy.UseNewMenu"));he(()=>{h.value==="Disabled"?(J.ui.menuContainer.style.setProperty("display","block"),J.ui.restoreMenuPosition()):J.ui.menuContainer.style.setProperty("display","none")}),he(()=>{i.maxHistoryItems=s.get("Comfy.Queue.MaxHistoryItems")});const d=n(()=>{const T=$1();Ce().registerCommands(T),Ga().registerCoreMenuCommands(),pn().registerCoreKeybindings(),Uo().registerCoreSidebarTabs(),oo().registerCoreBottomPanelTabs(),J.extensionManager=tt()},"init"),b=ol(),y=Uo(),g=n(async T=>{b.update(T),await i.update(),y.activeSidebarTabId==="assets"&&await r.updateHistory()},"onStatus"),c=n(async()=>{await i.update(),y.activeSidebarTabId==="assets"&&await r.updateHistory()},"onExecutionSuccess"),w={severity:"error",summary:o("g.reconnecting")},_=n(()=>{s.get("Comfy.Toast.DisableReconnectingToast")||(t.remove(w),t.add(w))},"onReconnecting"),S=n(()=>{s.get("Comfy.Toast.DisableReconnectingToast")||(t.remove(w),t.add({severity:"success",summary:o("g.reconnected"),life:2e3}))},"onReconnected");Le(()=>{we.addEventListener("status",g),we.addEventListener("execution_success",c),we.addEventListener("reconnecting",_),we.addEventListener("reconnected",S),a.bindExecutionEvents();try{d(),p.value?.prepend(J.ui.menuContainer)}catch(T){console.error("Failed to init ComfyUI frontend",T)}}),gt(()=>{we.removeEventListener("status",g),we.removeEventListener("execution_success",c),we.removeEventListener("reconnecting",_),we.removeEventListener("reconnected",S),a.unbindExecutionEvents()}),Ae(window,"keydown",pn().keybindHandler);const{wrapWithErrorHandling:x,wrapWithErrorHandlingAsync:D}=Wt();D1({immediate:!0}),Oe(()=>{u.initialize().catch(T=>{console.warn("Version compatibility check failed:",T)})});const P=n(()=>{il(()=>{x(pn().registerUserKeybindings)(),x(fu().loadServerConfig)(M1,s.get("Comfy.Server.ServerConfigValues")),D(iu().loadModelFolders)(),D(es().loadNodeFrequencies)(),yt().nodeSearchService.searchNode("")},1e3)},"onGraphReady");return(T,$)=>(m(),N(le,null,[f("div",j1,[$[0]||($[0]=f("div",{id:"comfyui-body-top",class:"comfyui-body-top"},null,-1)),$[1]||($[1]=f("div",{id:"comfyui-body-bottom",class:"comfyui-body-bottom"},null,-1)),$[2]||($[2]=f("div",{id:"comfyui-body-left",class:"comfyui-body-left"},null,-1)),$[3]||($[3]=f("div",{id:"comfyui-body-right",class:"comfyui-body-right"},null,-1)),ue(f("div",{id:"graph-canvas-container",ref_key:"graphCanvasContainerRef",ref:p,class:"graph-canvas-container"},[W(c1,{onReady:P})],512),[[Ye,!C(v)]]),C(v)?(m(),F(G1,{key:0})):O("",!0)]),W(Xc),W(f1),C(Be)()?O("",!0):(m(),F(td,{key:0})),W(ed)],64))}}),q1=De(H1,[["__scopeId","data-v-f93a6874"]]),lk=Object.freeze(Object.defineProperty({__proto__:null,default:q1},Symbol.toStringTag,{value:"Module"}));export{lk as G,qc as _,Yc as a,dd as g};
16
+ //# sourceMappingURL=GraphView-xK7kCVVH.js.map