comfyui-frontend-package 1.38.5__py3-none-any.whl → 1.38.6__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 (139) hide show
  1. comfyui_frontend_package/static/assets/{AboutPanel-CHse5rOA.js → AboutPanel-lkjGFasi.js} +2 -2
  2. comfyui_frontend_package/static/assets/{AboutPanel-CHse5rOA.js.map → AboutPanel-lkjGFasi.js.map} +1 -1
  3. comfyui_frontend_package/static/assets/{AudioPreviewPlayer-CAa8V66L.js → AudioPreviewPlayer-BxCSKPl9.js} +2 -2
  4. comfyui_frontend_package/static/assets/{AudioPreviewPlayer-CAa8V66L.js.map → AudioPreviewPlayer-BxCSKPl9.js.map} +1 -1
  5. comfyui_frontend_package/static/assets/AudioPreviewPlayer-CkxKvcVf.js +1 -0
  6. comfyui_frontend_package/static/assets/{BaseViewTemplate-DA6zfigT.js → BaseViewTemplate-CjODF2hh.js} +2 -2
  7. comfyui_frontend_package/static/assets/{BaseViewTemplate-DA6zfigT.js.map → BaseViewTemplate-CjODF2hh.js.map} +1 -1
  8. comfyui_frontend_package/static/assets/{CloudAuthTimeoutView-9OPBS1hE.js → CloudAuthTimeoutView-D-QkjPNh.js} +2 -2
  9. comfyui_frontend_package/static/assets/{CloudAuthTimeoutView-9OPBS1hE.js.map → CloudAuthTimeoutView-D-QkjPNh.js.map} +1 -1
  10. comfyui_frontend_package/static/assets/{CloudBadge-BnLiAHDN.js → CloudBadge-B4nmLus2.js} +2 -2
  11. comfyui_frontend_package/static/assets/{CloudBadge-BnLiAHDN.js.map → CloudBadge-B4nmLus2.js.map} +1 -1
  12. comfyui_frontend_package/static/assets/{CloudForgotPasswordView-BqDR_C7K.js → CloudForgotPasswordView-DOEV9hGr.js} +2 -2
  13. comfyui_frontend_package/static/assets/{CloudForgotPasswordView-BqDR_C7K.js.map → CloudForgotPasswordView-DOEV9hGr.js.map} +1 -1
  14. comfyui_frontend_package/static/assets/{CloudLayoutView-vTrrVUOY.js → CloudLayoutView-ShKH6rRV.js} +2 -2
  15. comfyui_frontend_package/static/assets/{CloudLayoutView-vTrrVUOY.js.map → CloudLayoutView-ShKH6rRV.js.map} +1 -1
  16. comfyui_frontend_package/static/assets/{CloudLoginView-T17euJly.js → CloudLoginView-C3Te42U9.js} +2 -2
  17. comfyui_frontend_package/static/assets/{CloudLoginView-T17euJly.js.map → CloudLoginView-C3Te42U9.js.map} +1 -1
  18. comfyui_frontend_package/static/assets/CloudRunButtonWrapper-Cub7EB34.js +3 -0
  19. comfyui_frontend_package/static/assets/{CloudRunButtonWrapper-hQc4BNkX.js.map → CloudRunButtonWrapper-Cub7EB34.js.map} +1 -1
  20. comfyui_frontend_package/static/assets/{CloudSignupView-vEDby5k3.js → CloudSignupView-X2oiL3ZR.js} +2 -2
  21. comfyui_frontend_package/static/assets/{CloudSignupView-vEDby5k3.js.map → CloudSignupView-X2oiL3ZR.js.map} +1 -1
  22. comfyui_frontend_package/static/assets/{CloudSubscriptionRedirectView-DPyO745g.js → CloudSubscriptionRedirectView-UjNv8emo.js} +2 -2
  23. comfyui_frontend_package/static/assets/{CloudSubscriptionRedirectView-DPyO745g.js.map → CloudSubscriptionRedirectView-UjNv8emo.js.map} +1 -1
  24. comfyui_frontend_package/static/assets/{CloudSurveyView-CBtTd9Ru.js → CloudSurveyView-IaiucCTP.js} +2 -2
  25. comfyui_frontend_package/static/assets/{CloudSurveyView-CBtTd9Ru.js.map → CloudSurveyView-IaiucCTP.js.map} +1 -1
  26. comfyui_frontend_package/static/assets/ComfyQueueButton-BppnHbrl.js +1 -0
  27. comfyui_frontend_package/static/assets/{ComfyQueueButton-MZrp7wYJ.js → ComfyQueueButton-HjSIKZKO.js} +2 -2
  28. comfyui_frontend_package/static/assets/{ComfyQueueButton-MZrp7wYJ.js.map → ComfyQueueButton-HjSIKZKO.js.map} +1 -1
  29. comfyui_frontend_package/static/assets/{ExtensionPanel-CrWVGUtg.js → ExtensionPanel-Bzb9QtKj.js} +2 -2
  30. comfyui_frontend_package/static/assets/{ExtensionPanel-CrWVGUtg.js.map → ExtensionPanel-Bzb9QtKj.js.map} +1 -1
  31. comfyui_frontend_package/static/assets/{GlobalToast-BiCmpIvO.js → GlobalToast-BSCvu6Hw.js} +2 -2
  32. comfyui_frontend_package/static/assets/{GlobalToast-BiCmpIvO.js.map → GlobalToast-BSCvu6Hw.js.map} +1 -1
  33. comfyui_frontend_package/static/assets/{GraphView-BCkpNGgz.js → GraphView-gYVCtm1V.js} +5 -5
  34. comfyui_frontend_package/static/assets/GraphView-gYVCtm1V.js.map +1 -0
  35. comfyui_frontend_package/static/assets/{KeybindingPanel-CAXL5TlV.js → KeybindingPanel-DF-bG4iO.js} +2 -2
  36. comfyui_frontend_package/static/assets/{KeybindingPanel-CAXL5TlV.js.map → KeybindingPanel-DF-bG4iO.js.map} +1 -1
  37. comfyui_frontend_package/static/assets/{LegacyCreditsPanel-6vR8koQy.js → LegacyCreditsPanel-D-CboO8k.js} +2 -2
  38. comfyui_frontend_package/static/assets/{LegacyCreditsPanel-6vR8koQy.js.map → LegacyCreditsPanel-D-CboO8k.js.map} +1 -1
  39. comfyui_frontend_package/static/assets/Load3D-c9UwgGoI.js +1 -0
  40. comfyui_frontend_package/static/assets/{Load3D-ei1BUF9O.js → Load3D-vYr8M3jJ.js} +2 -2
  41. comfyui_frontend_package/static/assets/{Load3D-ei1BUF9O.js.map → Load3D-vYr8M3jJ.js.map} +1 -1
  42. comfyui_frontend_package/static/assets/{PanelTemplate-BjN5XNg2.js → PanelTemplate-BJda9e5J.js} +2 -2
  43. comfyui_frontend_package/static/assets/{PanelTemplate-BjN5XNg2.js.map → PanelTemplate-BJda9e5J.js.map} +1 -1
  44. comfyui_frontend_package/static/assets/{ServerConfigPanel-CxovH9Qk.js → ServerConfigPanel-VsC6xlZJ.js} +2 -2
  45. comfyui_frontend_package/static/assets/{ServerConfigPanel-CxovH9Qk.js.map → ServerConfigPanel-VsC6xlZJ.js.map} +1 -1
  46. comfyui_frontend_package/static/assets/{SubscribeButton-CTOQRkfg.js → SubscribeButton-DZBycfCA.js} +2 -2
  47. comfyui_frontend_package/static/assets/{SubscribeButton-CTOQRkfg.js.map → SubscribeButton-DZBycfCA.js.map} +1 -1
  48. comfyui_frontend_package/static/assets/{SubscribeToRun-DnXzV8y0.js → SubscribeToRun-4YolxBOL.js} +2 -2
  49. comfyui_frontend_package/static/assets/{SubscribeToRun-DnXzV8y0.js.map → SubscribeToRun-4YolxBOL.js.map} +1 -1
  50. comfyui_frontend_package/static/assets/{SubscriptionPanel-D9uv7z8f.js → SubscriptionPanel-B6txX4Vm.js} +2 -2
  51. comfyui_frontend_package/static/assets/{SubscriptionPanel-D9uv7z8f.js.map → SubscriptionPanel-B6txX4Vm.js.map} +1 -1
  52. comfyui_frontend_package/static/assets/{SubscriptionRequiredDialogContent--VmT16oc.js → SubscriptionRequiredDialogContent-COEF2VQ_.js} +2 -2
  53. comfyui_frontend_package/static/assets/{SubscriptionRequiredDialogContent--VmT16oc.js.map → SubscriptionRequiredDialogContent-COEF2VQ_.js.map} +1 -1
  54. comfyui_frontend_package/static/assets/{UserCheckView-spD3LyMu.js → UserCheckView-x-fkcYzc.js} +2 -2
  55. comfyui_frontend_package/static/assets/{UserCheckView-spD3LyMu.js.map → UserCheckView-x-fkcYzc.js.map} +1 -1
  56. comfyui_frontend_package/static/assets/{UserPanel-Su6NtJ5q.js → UserPanel-7N9QknQj.js} +2 -2
  57. comfyui_frontend_package/static/assets/{UserPanel-Su6NtJ5q.js.map → UserPanel-7N9QknQj.js.map} +1 -1
  58. comfyui_frontend_package/static/assets/{UserSelectView-C5LBOPcv.js → UserSelectView-BYjOkfSa.js} +2 -2
  59. comfyui_frontend_package/static/assets/{UserSelectView-C5LBOPcv.js.map → UserSelectView-BYjOkfSa.js.map} +1 -1
  60. comfyui_frontend_package/static/assets/{ValueControlPopover-BdlDzT8l.js → ValueControlPopover-BPAa35QG.js} +2 -2
  61. comfyui_frontend_package/static/assets/{ValueControlPopover-BdlDzT8l.js.map → ValueControlPopover-BPAa35QG.js.map} +1 -1
  62. comfyui_frontend_package/static/assets/{WidgetAudioUI-BDZxDx_r.js → WidgetAudioUI-Dw-r3Ews.js} +2 -2
  63. comfyui_frontend_package/static/assets/{WidgetAudioUI-BDZxDx_r.js.map → WidgetAudioUI-Dw-r3Ews.js.map} +1 -1
  64. comfyui_frontend_package/static/assets/{WidgetImageCrop-CYRW7t2Q.js → WidgetImageCrop-kERy9g5I.js} +2 -2
  65. comfyui_frontend_package/static/assets/{WidgetImageCrop-CYRW7t2Q.js.map → WidgetImageCrop-kERy9g5I.js.map} +1 -1
  66. comfyui_frontend_package/static/assets/{WidgetInputNumber-BOKO36G3.js → WidgetInputNumber-BaClCNAC.js} +1 -1
  67. comfyui_frontend_package/static/assets/WidgetInputNumber-DU_D0Fzy.js +3 -0
  68. comfyui_frontend_package/static/assets/WidgetInputNumber-DU_D0Fzy.js.map +1 -0
  69. comfyui_frontend_package/static/assets/{WidgetLegacy-Bslv9wZZ.js → WidgetLegacy-B4nipUM9.js} +1 -1
  70. comfyui_frontend_package/static/assets/{WidgetRecordAudio-Bzy8PIzN.js → WidgetRecordAudio-Nk8dH238.js} +2 -2
  71. comfyui_frontend_package/static/assets/{WidgetRecordAudio-Bzy8PIzN.js.map → WidgetRecordAudio-Nk8dH238.js.map} +1 -1
  72. comfyui_frontend_package/static/assets/WidgetSelect-DzZPpO_-.js +1 -0
  73. comfyui_frontend_package/static/assets/{WidgetSelect-zgrFVzHH.js → WidgetSelect-nSQrk_hd.js} +2 -2
  74. comfyui_frontend_package/static/assets/{WidgetSelect-zgrFVzHH.js.map → WidgetSelect-nSQrk_hd.js.map} +1 -1
  75. comfyui_frontend_package/static/assets/{WidgetWithControl-Dh2FWOiA.js → WidgetWithControl-Da6zUB5e.js} +3 -3
  76. comfyui_frontend_package/static/assets/{WidgetWithControl-Dh2FWOiA.js.map → WidgetWithControl-Da6zUB5e.js.map} +1 -1
  77. comfyui_frontend_package/static/assets/{api-CUAc7rDA.js → api-Dwq2LQIW.js} +4 -4
  78. comfyui_frontend_package/static/assets/api-Dwq2LQIW.js.map +1 -0
  79. comfyui_frontend_package/static/assets/{audioService-DvndbCi2.js → audioService-DvVaKhuU.js} +2 -2
  80. comfyui_frontend_package/static/assets/{audioService-DvndbCi2.js.map → audioService-DvVaKhuU.js.map} +1 -1
  81. comfyui_frontend_package/static/assets/{audioUtils-DpjpcKbH.js → audioUtils-DD4rUYVZ.js} +2 -2
  82. comfyui_frontend_package/static/assets/{audioUtils-DpjpcKbH.js.map → audioUtils-DD4rUYVZ.js.map} +1 -1
  83. comfyui_frontend_package/static/assets/{auth-B8ZZ0KKQ.js → auth-B9axG-yZ.js} +2 -2
  84. comfyui_frontend_package/static/assets/{auth-B8ZZ0KKQ.js.map → auth-B9axG-yZ.js.map} +1 -1
  85. comfyui_frontend_package/static/assets/auth-D74DTev8.js +1 -0
  86. comfyui_frontend_package/static/assets/{cloudBadges-C1a7fBky.js → cloudBadges-D5mGJbRy.js} +2 -2
  87. comfyui_frontend_package/static/assets/{cloudBadges-C1a7fBky.js.map → cloudBadges-D5mGJbRy.js.map} +1 -1
  88. comfyui_frontend_package/static/assets/{cloudFeedbackTopbarButton-DR0T8sWG.js → cloudFeedbackTopbarButton-RZUssOmb.js} +2 -2
  89. comfyui_frontend_package/static/assets/{cloudFeedbackTopbarButton-DR0T8sWG.js.map → cloudFeedbackTopbarButton-RZUssOmb.js.map} +1 -1
  90. comfyui_frontend_package/static/assets/{cloudRemoteConfig-DhMjC5TB.js → cloudRemoteConfig-F9J0iGyF.js} +2 -2
  91. comfyui_frontend_package/static/assets/{cloudRemoteConfig-DhMjC5TB.js.map → cloudRemoteConfig-F9J0iGyF.js.map} +1 -1
  92. comfyui_frontend_package/static/assets/{cloudSessionCookie-Duxk6ux1.js → cloudSessionCookie-MEORlqtg.js} +2 -2
  93. comfyui_frontend_package/static/assets/{cloudSessionCookie-Duxk6ux1.js.map → cloudSessionCookie-MEORlqtg.js.map} +1 -1
  94. comfyui_frontend_package/static/assets/{cloudSubscription-B8l6B9Nx.js → cloudSubscription-CuWNXKVx.js} +2 -2
  95. comfyui_frontend_package/static/assets/{cloudSubscription-B8l6B9Nx.js.map → cloudSubscription-CuWNXKVx.js.map} +1 -1
  96. comfyui_frontend_package/static/assets/{core-DBfeqMDR.js → core-IYu8XAIx.js} +4 -4
  97. comfyui_frontend_package/static/assets/{core-DBfeqMDR.js.map → core-IYu8XAIx.js.map} +1 -1
  98. comfyui_frontend_package/static/assets/{dialogService-BZ1FmjZL.js → dialogService-YG0RH337.js} +9 -9
  99. comfyui_frontend_package/static/assets/{dialogService-BZ1FmjZL.js.map → dialogService-YG0RH337.js.map} +1 -1
  100. comfyui_frontend_package/static/assets/firebaseAuthStore-DnNaPbuZ.js +1 -0
  101. comfyui_frontend_package/static/assets/{graphHasMissingNodes-C79Wi51S.js → graphHasMissingNodes-BhD1N6zI.js} +2 -2
  102. comfyui_frontend_package/static/assets/{graphHasMissingNodes-C79Wi51S.js.map → graphHasMissingNodes-BhD1N6zI.js.map} +1 -1
  103. comfyui_frontend_package/static/assets/{index-CGxJFSof.js → index-BMy3twho.js} +3 -3
  104. comfyui_frontend_package/static/assets/{index-CGxJFSof.js.map → index-BMy3twho.js.map} +1 -1
  105. comfyui_frontend_package/static/assets/{index-DNpOhRra.css → index-KMO9qFHH.css} +1 -1
  106. comfyui_frontend_package/static/assets/{keybindingService-B88NjeAU.js → keybindingService-CBLPjYHI.js} +2 -2
  107. comfyui_frontend_package/static/assets/{keybindingService-B88NjeAU.js.map → keybindingService-CBLPjYHI.js.map} +1 -1
  108. comfyui_frontend_package/static/assets/{releaseStore-x0vHjxrw.js → releaseStore-DDOxzkVb.js} +2 -2
  109. comfyui_frontend_package/static/assets/{releaseStore-x0vHjxrw.js.map → releaseStore-DDOxzkVb.js.map} +1 -1
  110. comfyui_frontend_package/static/assets/releaseStore-iVkqunL8.js +1 -0
  111. comfyui_frontend_package/static/assets/{subscriptionCheckoutUtil-B_OvUP2T.js → subscriptionCheckoutUtil-DswSOreM.js} +2 -2
  112. comfyui_frontend_package/static/assets/{subscriptionCheckoutUtil-B_OvUP2T.js.map → subscriptionCheckoutUtil-DswSOreM.js.map} +1 -1
  113. comfyui_frontend_package/static/assets/{useCurrentUser-BJcn2Vgo.js → useCurrentUser-NdaCJzIK.js} +1 -1
  114. comfyui_frontend_package/static/assets/{useErrorHandling-CI8_F4yx.js → useErrorHandling-Cfa5N_7c.js} +2 -2
  115. comfyui_frontend_package/static/assets/{useErrorHandling-CI8_F4yx.js.map → useErrorHandling-Cfa5N_7c.js.map} +1 -1
  116. comfyui_frontend_package/static/assets/{useSubscriptionDialog-Chxkdny5.js → useSubscriptionDialog-792qfEJ2.js} +3 -3
  117. comfyui_frontend_package/static/assets/{useSubscriptionDialog-Chxkdny5.js.map → useSubscriptionDialog-792qfEJ2.js.map} +1 -1
  118. comfyui_frontend_package/static/assets/useSubscriptionDialog-B-eGeK3j.js +1 -0
  119. comfyui_frontend_package/static/assets/{userStore-BkgQPjq6.js → userStore-BAS9m9W6.js} +2 -2
  120. comfyui_frontend_package/static/assets/{userStore-BkgQPjq6.js.map → userStore-BAS9m9W6.js.map} +1 -1
  121. comfyui_frontend_package/static/assets/vendor-three-BFcUNSs9.js.map +1 -1
  122. comfyui_frontend_package/static/index.html +1 -1
  123. {comfyui_frontend_package-1.38.5.dist-info → comfyui_frontend_package-1.38.6.dist-info}/METADATA +1 -1
  124. {comfyui_frontend_package-1.38.5.dist-info → comfyui_frontend_package-1.38.6.dist-info}/RECORD +126 -126
  125. comfyui_frontend_package/static/assets/AudioPreviewPlayer-BoEdyGI_.js +0 -1
  126. comfyui_frontend_package/static/assets/CloudRunButtonWrapper-hQc4BNkX.js +0 -3
  127. comfyui_frontend_package/static/assets/ComfyQueueButton-BbQnRThI.js +0 -1
  128. comfyui_frontend_package/static/assets/GraphView-BCkpNGgz.js.map +0 -1
  129. comfyui_frontend_package/static/assets/Load3D-DHBmC_AU.js +0 -1
  130. comfyui_frontend_package/static/assets/WidgetInputNumber-DGKypM5j.js +0 -3
  131. comfyui_frontend_package/static/assets/WidgetInputNumber-DGKypM5j.js.map +0 -1
  132. comfyui_frontend_package/static/assets/WidgetSelect-DsJGH12l.js +0 -1
  133. comfyui_frontend_package/static/assets/api-CUAc7rDA.js.map +0 -1
  134. comfyui_frontend_package/static/assets/auth-D3RiiqZ8.js +0 -1
  135. comfyui_frontend_package/static/assets/firebaseAuthStore-CZgxeMyf.js +0 -1
  136. comfyui_frontend_package/static/assets/releaseStore-CubqSv5t.js +0 -1
  137. comfyui_frontend_package/static/assets/useSubscriptionDialog-BzMzio2H.js +0 -1
  138. {comfyui_frontend_package-1.38.5.dist-info → comfyui_frontend_package-1.38.6.dist-info}/WHEEL +0 -0
  139. {comfyui_frontend_package-1.38.5.dist-info → comfyui_frontend_package-1.38.6.dist-info}/top_level.txt +0 -0
@@ -1,10 +1,10 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./CloudRunButtonWrapper-hQc4BNkX.js","./vendor-primevue-DcMRXJN3.js","./vendor-other-DlQF6V2E.js","./rolldown-runtime-BN4meiq5.js","./vendor-other-CaaUC6Qe.css","./dialogService-BZ1FmjZL.js","./_plugin-vue_export-helper-PHE0iSCb.js","./vendor-vue-D9IUuwPJ.js","./vendor-three-BFcUNSs9.js","./vendor-tiptap-_UqYL7N_.js","./vendor-xterm-BU_lcTPR.js","./vendor-xterm-kHJ-D0s7.css","./PanelTemplate-BjN5XNg2.js","./api-CUAc7rDA.js","./widget-DNFXpyU8.js","./colorUtil-CzxntCbX.js","./src-DTrob8OL.js","./Button-Do2I1OAA.js","./vendor-reka-ui-CmnTduBl.js","./Slider-De1ykl8L.js","./useErrorHandling-CI8_F4yx.js","./remoteConfig-CZcEXsZS.js","./userStore-BkgQPjq6.js","./markdownRendererUtil-DglHsU8t.js","./dialogService-BMbgJ9MG.css","./ComfyQueueButton-MZrp7wYJ.js","./graphHasMissingNodes-C79Wi51S.js","./ComfyQueueButton-Chw03MdC.css","./SubscribeToRun-DnXzV8y0.js","./ComfyQueueButton-BbQnRThI.js","./releaseStore-CubqSv5t.js","./releaseStore-x0vHjxrw.js"])))=>i.map(i=>d[i]);
2
- var Hr=Object.defineProperty;var a=(e,o)=>Hr(e,"name",{value:o,configurable:!0});import{$ as Rn,A as Ps,B as jr,C as $s,D as Ms,E as qr,F as Ds,Q as Ls,S as Kr,T as nn,W as As,X as Wn,Z as Qr,b as Ua,c as to,ct as bo,dt as Fa,et as wt,h as Yr,it as Jr,lt as sn,m as Xr,mt as lo,o as Zr,p as el,q as tl,st as ol,tt as al,u as nl,y as At,z as sl}from"./vendor-primevue-DcMRXJN3.js";import{$i as rl,$o as R,$t as ll,Aa as tt,Ai as il,Ba as c,Bo as Bn,Ci as Oe,Co as Qe,Do as M,Ei as ul,Fa as dl,Fi as rn,Fo as cl,Ga as pl,Go as fl,Ha as A,Hi as vl,Ho as Je,Ia as yt,Ii as ml,Ja as zn,Ji as gl,Jo as u,Ka as Ie,Ko as et,Kr as ca,Li as hl,Lo as Es,Ma as ke,Mi as yl,Ni as io,No as qe,Nr as bl,Oi as Un,Oo as ce,Pa as Z,Pi as Vs,Po as Os,Pr as wl,Qi as _l,Qo as be,Qr as Jt,Ri as kl,Ro as Ga,So as Cl,Ta as ln,To as we,Ua as x,Uo as sa,Va as O,Wa as Sl,Wi as xl,Xa as Fn,Xo as Q,Ya as q,Yi as Tl,Zi as Nl,Zo as Il,_i as un,_o as so,bi as dn,bo as Pl,co as Re,do as p,ea as Ut,en as $l,eo as Ml,fi as pa,fo as fa,gi as Dl,go as Pe,hi as Xt,ho as Rs,io as Ue,ja as To,ji as Ll,ki as Ws,ko as va,lo as kt,mo as _e,no as Eo,oo as rt,po as ye,qa as L,qi as Bs,qo as Ha,ro as lt,so as zs,ta as bt,uo as Us,wa as ma,wi as Al,wo as ie,xo as Vo,y as $t,yi as El,za as y,zi as ga,zo as E}from"./vendor-other-DlQF6V2E.js";import{c as Fs,m as ze,n as ue,p as uo,s as Gs}from"./vendor-vue-D9IUuwPJ.js";import{A as le,At as Et,B as Jo,Bt as Xe,Ct as Gn,D as Vl,E as Ol,Et as We,F as Rl,Ft as Wl,G as Hn,H as Bl,Ht as zl,I as Ul,It as oo,J as Fl,K as Gl,L as Hl,Lt as Fe,Mt as jl,O as ql,Ot as Ft,P as Kl,R as cn,St as Ql,T as jn,Tt as qn,V as Xo,Vt as Yl,X as Jl,Y as wa,Z as Kn,_ as Oo,b as _t,bt as Xl,c as Zl,f as ge,g as ei,h as ti,ht as Ae,j as oi,jt as ai,k as Ze,kt as ni,m as Ke,mt as ha,n as si,o as It,p as ri,q as li,r as Ne,s as gt,xt as ii,y as Ht,yt as No,zt as ko}from"./api-CUAc7rDA.js";import"./remoteConfig-CZcEXsZS.js";import{i as ui,t as Gt}from"./colorUtil-CzxntCbX.js";import{n as di,t as jt}from"./useErrorHandling-CI8_F4yx.js";import{a as ci,c as pi,l as fi,o as vi,s as mi}from"./vendor-reka-ui-CmnTduBl.js";import{t as ae}from"./src-DTrob8OL.js";import{t as X}from"./Button-Do2I1OAA.js";import{O as Hs,d as pn,g as Qn,k as co,l as gi,n as fn,r as hi,x as Pt}from"./PanelTemplate-BjN5XNg2.js";import{$ as _a,$n as js,$r as ra,$t as Yn,A as yi,An as bi,At as wi,Bn as _i,Bt as ki,C as Ci,Cn as po,Ct as Si,D as xi,Dr as fo,Dt as ja,E as Ti,En as Ni,Er as qs,Et as Ii,F as Pi,Fn as $i,Ft as Mi,G as vo,Gn as Di,Gt as Li,H as Ai,Ht as Ks,I as Ei,It as Vi,J as Oi,Jn as Qs,Jr as Ri,Jt as Wi,K as qa,Kn as Bi,Kr as zi,Kt as Ui,L as Jn,Lt as Ka,M as ya,Mn as Fi,Mr as Ys,Mt as Xn,Nn as mo,Nr as vn,Nt as Zn,O as Js,Or as Ce,Ot as Gi,P as Y,Pn as Mt,Pt as Hi,Q as ji,Qn as Xs,Qr as Io,Qt as Zs,R as mn,Rt as la,S as er,Sn as qi,St as Ki,T as Qi,Tt as Yi,Un as tr,Ut as Ji,V as Xi,Vn as Zi,Vr as or,Vt as eu,Wn as tu,Wt as ou,X as ar,Xn as qt,Xr as gn,Xt as es,Y as au,Yn as nu,Yr as ro,Yt as ts,Z as su,Zn as hn,Zt as ru,_ as nr,_n as Co,_t as nt,an as lu,ar as iu,b as uu,bn as du,bt as cu,cr as Zt,ct as yn,d as pu,dr as fu,dt as it,ei as vu,en as os,er as So,et as bn,f as mu,fr as gu,ft as Le,g as ao,gn as sr,gt as wn,h as ht,hn as hu,ht as _n,i as yu,in as bu,ir as rr,j as fe,jn as wu,jr as _u,jt as lr,k as ku,kn as as,kt as Cu,ln as Su,lr as ir,lt as ur,m as xu,mr as ka,mt as Ct,n as Tu,nn as Nu,nr as dr,o as Iu,on as Qa,ot as Pu,p as cr,pr as Ca,pt as $u,q as Mu,qr as xo,qt as Du,rn as Lu,rr as pr,rt as Ro,s as Au,sn as Eu,sr as kn,st as ut,t as vt,ti as fr,tn as Vu,tr as vr,ur as St,ut as Wo,v as Ou,vn as Vt,vt as st,w as Ve,wt as Ru,x as Wu,xn as Bu,xt as zu,y as Cn,yn as Ya,yr as ne,yt as Po,zn as go,zt as Uu}from"./dialogService-BZ1FmjZL.js";import{t as Be}from"./_plugin-vue_export-helper-PHE0iSCb.js";import"./vendor-tiptap-_UqYL7N_.js";import"./vendor-xterm-BU_lcTPR.js";import{t as Fu}from"./Slider-De1ykl8L.js";import"./vendor-three-BFcUNSs9.js";import{t as mr}from"./markdownRendererUtil-DglHsU8t.js";import{t as gr}from"./userStore-BkgQPjq6.js";import{a as Gu,i as Hu,r as ju,t as hr}from"./preservedQueryNamespaces-BXriQIIi.js";import{t as qu}from"./graphHasMissingNodes-C79Wi51S.js";import{t as ns}from"./SubscribeToRun-DnXzV8y0.js";import{t as Sa}from"./keybindingService-B88NjeAU.js";import{t as yr}from"./UserAvatar-Cfg5vVJL.js";import{t as Ku}from"./GlobalToast-BiCmpIvO.js";import{n as Qu,t as Yu}from"./SubscribeButton-CTOQRkfg.js";import{t as Ju}from"./useSubscriptionDialog-Chxkdny5.js";import{t as Xu}from"./serverConfigStore-60S1CDhK.js";import{t as Bo}from"./releaseStore-x0vHjxrw.js";import{n as Zu,t as Sn}from"./nodeFilterUtil-BYFD-MqA.js";import"./widgetPropFilter-CKhENku4.js";import{t as ia}from"./layout-C9TPTaej.js";import{i as zo,n as ed,t as $o}from"./LazyImage-D5qRMpUj.js";import"./WidgetWithControl-Dh2FWOiA.js";import{t as ss}from"./WidgetInputNumber-DGKypM5j.js";var xa;let br;(function(){const e=globalThis;typeof e.requestIdleCallback!="function"||typeof e.cancelIdleCallback!="function"?xa=a((o,t,s)=>{setTimeout(()=>{if(r)return;const n=Date.now()+15;t(Object.freeze({didTimeout:!0,timeRemaining(){return Math.max(0,n-Date.now())}}))});let r=!1;return{dispose(){r||(r=!0)}}},"_runWhenIdle"):xa=a((o,t,s)=>{const r=o.requestIdleCallback(t,typeof s=="number"?{timeout:s}:void 0);let n=!1;return{dispose(){n||(n=!0,o.cancelIdleCallback(r))}}},"_runWhenIdle"),br=a((o,t)=>xa(globalThis,o,t),"runWhenGlobalIdle")})();var td={class:"fixed z-9999 flex flex-row no-drag top-0 right-0"},od=q({__name:"MenuHamburger",setup(e){const o=st(),t=ne(),s=a(()=>{o.focusMode=!1},"exitFocusMode");return we(()=>{t.get("Comfy.UseNewMenu")==="Disabled"&&(o.focusMode?Y.ui.menuContainer.style.display="none":Y.ui.menuContainer.style.display="block")}),(r,n)=>{const l=Pe("tooltip");return ce((p(),x("div",td,[ce((p(),O(X,{variant:"muted-textonly",size:"lg","aria-label":r.$t("menu.showMenu"),"aria-live":"assertive",onClick:s,onContextmenu:u(zl)},{default:M(()=>n[0]||(n[0]=[c("i",{class:"pi pi-bars"},null,-1)])),_:1},8,["aria-label","onContextmenu"])),[[l,{value:r.$t("menu.showMenu"),showDelay:300}]]),n[1]||(n[1]=c("div",{class:"window-actions-spacer"},null,-1))],512)),[[tt,u(o).focusMode]])}}}),ad=od,nd=q({__name:"UnloadWindowConfirmDialog",setup(e){const o=ne(),t=Ve(),s=a(r=>{if(o.get("Comfy.Window.UnloadConfirmation")&&t.modifiedWorkflows.length>0)return r.preventDefault(),!0},"handleBeforeUnload");return Re(()=>{window.addEventListener("beforeunload",s)}),rt(()=>{window.removeEventListener("beforeunload",s)}),(r,n)=>(p(),x("div"))}}),sd=nd,rd={class:"w-full h-full absolute top-0 left-0 z-999 pointer-events-none flex flex-col"},ld={class:"side-toolbar-container"},id=q({__name:"LiteGraphCanvasSplitterOverlay",setup(e){const o=st(),t=ne(),s=ut(),r=Po(),{t:n}=ue(),l=y(()=>t.get("Comfy.Sidebar.Location")),i=y(()=>t.get("Comfy.Sidebar.UnifiedWidth")),{focusMode:d}=ze(o),{activeSidebarTabId:f,activeSidebarTab:m}=ze(r),{bottomPanelVisible:v}=ze(po()),{isOpen:h}=ze(s),g=y(()=>m.value!==null),b=y(()=>i.value?"unified-sidebar":f.value??"default-sidebar");function S({originalEvent:T}){T.preventDefault()}a(S,"onResizestart");const k=y(()=>`main-splitter${h.value?"-with-right-panel":""}-${l.value}`),w=y(()=>{if(l.value==="left")return{display:g.value?"flex":"none"}}),C=y(()=>{if(l.value==="right")return{display:g.value?"flex":"none"}});return(T,I)=>(p(),x("div",rd,[_e(T.$slots,"workflow-tabs",{},void 0,!0),c("div",{class:Q(["pointer-events-none flex flex-1 overflow-hidden",{"flex-row":l.value==="left","flex-row-reverse":l.value==="right"}])},[c("div",ld,[_e(T.$slots,"side-toolbar",{},void 0,!0)]),(p(),O(u(Ua),{key:k.value,class:"bg-transparent pointer-events-none border-none flex-1 overflow-hidden","state-key":b.value,"state-storage":"local",onResizestart:S},{default:M(()=>[!u(d)&&(l.value==="left"||u(h))?(p(),O(u(At),{key:0,class:Q(l.value==="left"?u(ae)("side-bar-panel bg-comfy-menu-bg pointer-events-auto",g.value&&"min-w-78"):"bg-comfy-menu-bg pointer-events-auto"),"min-size":l.value==="left"?10:15,size:20,style:be(w.value),role:l.value==="left"?"complementary":void 0,"aria-label":l.value==="left"?u(n)("sideToolbar.sidebar"):void 0},{default:M(()=>[l.value==="left"&&g.value?_e(T.$slots,"side-bar-panel",{key:0},void 0,!0):l.value==="right"?_e(T.$slots,"right-side-panel",{key:1},void 0,!0):A("",!0)]),_:3},8,["class","min-size","style","role","aria-label"])):A("",!0),L(u(At),{size:80,class:"flex flex-col"},{default:M(()=>[_e(T.$slots,"topmenu",{sidebarPanelVisible:g.value},void 0,!0),L(u(Ua),{class:"bg-transparent pointer-events-none border-none splitter-overlay-bottom mr-1 mb-1 ml-1 flex-1",layout:"vertical","pt:gutter":u(ae)("rounded-tl-lg rounded-tr-lg ",!(u(v)&&!u(d))&&"hidden"),"state-key":"bottom-panel-splitter","state-storage":"local",onResizestart:S},{default:M(()=>[L(u(At),{class:"graph-canvas-panel relative"},{default:M(()=>[_e(T.$slots,"graph-canvas-panel",{},void 0,!0)]),_:3}),ce(L(u(At),{class:"bottom-panel border border-(--p-panel-border-color) max-w-full overflow-x-auto bg-comfy-menu-bg pointer-events-auto rounded-lg"},{default:M(()=>[_e(T.$slots,"bottom-panel",{},void 0,!0)]),_:3},512),[[tt,u(v)&&!u(d)]])]),_:3},8,["pt:gutter"])]),_:3}),!u(d)&&(l.value==="right"||u(h))?(p(),O(u(At),{key:1,class:Q(l.value==="right"?u(ae)("side-bar-panel bg-comfy-menu-bg pointer-events-auto",g.value&&"min-w-78"):"bg-comfy-menu-bg pointer-events-auto"),"min-size":l.value==="right"?10:15,size:20,style:be(C.value),role:l.value==="right"?"complementary":void 0,"aria-label":l.value==="right"?u(n)("sideToolbar.sidebar"):void 0},{default:M(()=>[l.value==="left"?_e(T.$slots,"right-side-panel",{key:0},void 0,!0):l.value==="right"&&g.value?_e(T.$slots,"side-bar-panel",{key:1},void 0,!0):A("",!0)]),_:3},8,["class","min-size","style","role","aria-label"])):A("",!0)]),_:3},8,["state-key"]))],2)]))}}),ud=Be(id,[["__scopeId","data-v-78b7f6de"]]);const at=a(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");var dd=Fe&&window.__CONFIG__?.subscription_required?zn(()=>Fa(()=>import("./CloudRunButtonWrapper-hQc4BNkX.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28]),import.meta.url)):zn(()=>Fa(()=>import("./ComfyQueueButton-BbQnRThI.js"),__vite__mapDeps([29,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]),import.meta.url)),cd=q({__name:"ComfyActionbar",setup(e){const o=ne(),t=Ce(),{t:s}=ue(),{isIdle:r}=ze(it()),n=y(()=>o.get("Comfy.UseNewMenu")),l=y(()=>n.value!=="Disabled"),i=E(null),d=E(null),f=Un("Comfy.MenuPosition.Docked",!0),m=Un("Comfy.MenuPosition.Floating",{x:0,y:0}),{x:v,y:h,style:g,isDragging:b}=El(i,{initialValue:{x:0,y:0},handle:d,containerElement:document.body});Ut([v,h],([U,j])=>{m.value={x:U,y:j}},{debounce:300});const S=a(()=>{if(i.value){const U=window.innerWidth,j=window.innerHeight,W=i.value.offsetWidth,F=i.value.offsetHeight;if(W===0||F===0)return;if(m.value.x!==0||m.value.y!==0){v.value=Jt(m.value.x,0,U-W),h.value=Jt(m.value.y,0,j-F),C();return}v.value===0&&h.value===0&&(v.value=Jt((U-W)/2,0,U-W),h.value=Jt(j-F-10,0,j-F),C())}},"setInitialPosition");async function k(){await Ue(),S()}a(k,"comfyRunButtonResolved"),ie(l,async U=>{U&&await Ue(S)}),Oe(d,"mousedown",()=>{Le()?.trackUiButtonClicked({button_id:"actionbar_run_handle_drag_start"})});const w=E({x:v.value,y:h.value,windowWidth:window.innerWidth,windowHeight:window.innerHeight}),C=a(()=>{w.value={x:v.value,y:h.value,windowWidth:window.innerWidth,windowHeight:window.innerHeight}},"captureLastDragState");ie(b,U=>{U||C()},{immediate:!0}),Oe(window,"resize",a(()=>{if(i.value){const U=window.innerWidth,j=window.innerHeight,W=i.value.offsetWidth,F=i.value.offsetHeight,G=w.value.x,z=w.value.windowWidth-(w.value.x+W),K=w.value.y,H=w.value.windowHeight-(w.value.y+F),J=[{edge:"left",distance:G},{edge:"right",distance:z},{edge:"top",distance:K},{edge:"bottom",distance:H}].reduce(($e,se)=>se.distance<$e.distance?se:$e),te=w.value.y/w.value.windowHeight,he=w.value.x/w.value.windowWidth;J.edge==="left"?(v.value=J.distance,h.value=te*j):J.edge==="right"?(v.value=U-W-J.distance,h.value=te*j):J.edge==="top"?(v.value=he*U,h.value=J.distance):(v.value=he*U,h.value=j-F-J.distance),v.value=Jt(v.value,0,U-W),h.value=Jt(h.value,0,j-F)}},"adjustMenuPosition"));const I=E(!1),_=a(()=>{b.value&&(I.value=!0)},"onMouseEnterDropZone"),N=a(()=>{b.value&&(I.value=!1)},"onMouseLeaveDropZone");ie(b,U=>{U?f.value&&(f.value=!1):(I.value&&(f.value=!0),I.value=!1)});const $=y(()=>at(s("menu.interrupt"))),V=a(async()=>{r.value||await t.execute("Comfy.Interrupt")},"cancelCurrentJob"),B=y(()=>ae("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",I.value&&"border-[3px] opacity-100 scale-105 shadow-[0_0_20px] shadow-blue-500")),D=y(()=>ae("actionbar pointer-events-auto z-1300",b.value&&"select-none pointer-events-none",f.value?"p-0 static border-none bg-transparent":"fixed shadow-interface"));return(U,j)=>{const W=Pe("tooltip");return p(),x("div",{class:Q(["flex h-full items-center",u(ae)(!u(f)&&"-ml-2")])},[u(b)&&!u(f)?(p(),x("div",{key:0,class:Q(B.value),onMouseenter:_,onMouseleave:N},R(u(s)("actionbar.dockToTop")),35)):A("",!0),L(u(nn),{class:Q(["pointer-events-auto",D.value]),style:be(u(g)),pt:{header:{class:"hidden"},content:{class:u(f)?"p-0":"p-1"}}},{default:M(()=>[c("div",{ref_key:"panelRef",ref:i,class:"flex items-center select-none gap-2"},[c("span",{ref_key:"dragHandleRef",ref:d,class:Q(u(ae)("drag-handle cursor-grab w-3 h-max",u(b)&&"cursor-grabbing"))},null,2),(p(),O(dl,{onResolve:k},{default:M(()=>[L(u(dd))]),_:1})),ce((p(),O(X,{variant:"destructive",size:"icon",disabled:u(r),"aria-label":u(s)("menu.interrupt"),onClick:V},{default:M(()=>j[0]||(j[0]=[c("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["disabled","aria-label"])),[[W,$.value,void 0,{bottom:!0}]])],512)]),_:1},8,["style","class","pt"])],2)}}}),pd=cd;function wr(e,o={}){const{isRoot:t=!0,includeDelete:s=!0,workflow:r}=o,{t:n}=ue(),l=Ve(),i=nt(),d=Ci(),f=Ce(),m=wn(),v=y(()=>r?.value??l.activeWorkflow),h=a(async g=>{!g||g===l.activeWorkflow||await i.openWorkflow(g)},"ensureWorkflowActive");return{menuItems:y(()=>{const g=v.value,b=g?m.isSubgraphBlueprint(g):!1,S=[],k=a((w,C,T,I=!0,_=!1,N=!1)=>{I&&(N&&S.push({separator:!0}),S.push({label:w,icon:C,command:T,disabled:_}))},"addItem");return k(n("g.rename"),"pi pi-pencil",async()=>{await h(v.value),e()},!0,t&&!g?.isPersisted),k(n("breadcrumbsMenu.duplicate"),"pi pi-copy",async()=>{g&&await i.duplicateWorkflow(g)},t&&!b),k(n("menuLabels.Save"),"pi pi-save",async()=>{await h(g),await f.execute("Comfy.SaveWorkflow")},t,!1,!0),k(n("menuLabels.Save As"),"pi pi-save",async()=>{await h(g),await f.execute("Comfy.SaveWorkflowAs")},t),k(d.isBookmarked(g?.path??"")?n("tabMenu.removeFromBookmarks"):n("tabMenu.addToBookmarks"),"pi pi-bookmark"+(d.isBookmarked(g?.path??"")?"-fill":""),async()=>{g?.path&&await d.toggleBookmarked(g.path)},t,g?.isTemporary??!1),k(n("menuLabels.Export"),"pi pi-download",async()=>{await h(g),await f.execute("Comfy.ExportWorkflow")},t),k(n("menuLabels.Export (API)"),"pi pi-download",async()=>{await h(g),await f.execute("Comfy.ExportWorkflowAPI")},t),k(n("breadcrumbsMenu.clearWorkflow"),"pi pi-trash",async()=>{await h(g),await f.execute("Comfy.ClearWorkflow")},!0,!1,!0),k(n("subgraphStore.publish"),"pi pi-upload",async()=>{g&&await i.saveWorkflowAs(g)},t&&b,!1,!0),k(n(b?"breadcrumbsMenu.deleteBlueprint":"breadcrumbsMenu.deleteWorkflow"),"pi pi-times",async()=>{g&&await i.deleteWorkflow(g)},t&&s,!1,!0),S})}}a(wr,"useWorkflowActionsMenu");var fd={key:0,class:"icon-[lucide--triangle-alert] text-warning-background"},vd={class:"p-breadcrumb-item-label px-2"},md={key:2,class:"pi pi-angle-down text-[10px]"},gd=q({__name:"SubgraphBreadcrumbItem",props:{item:{},isActive:{type:Boolean,default:!1}},setup(e,{expose:o}){const t=e,s=Ct(),r=y(()=>qu(Y.rootGraph,s.nodeDefsByName)),{t:n}=ue(),l=E(),i=vt(),d=Ve(),f=nt(),m=E(!1),v=E(),h=E(),g=E(),b=a(async(N,$)=>{if(N&&N!==$){if(t.item.updateTitle?.(N),d.activeSubgraph)d.activeSubgraph.name=N;else if(d.activeWorkflow)try{await f.renameWorkflow(d.activeWorkflow,er.basePath+hi(N))}catch(B){console.error(B),i.showErrorDialog(B);return}const V=bn();V.restoreState(V.exportState())}},"rename"),S=t.item.key==="root",k=y(()=>r.value&&S?n("breadcrumbsMenu.missingNodesWarning"):t.item.label),w=a(async()=>{if(S&&g.value?.offsetParent===null){await Ce().execute("Comfy.RenameWorkflow");return}m.value=!0,v.value=t.item.label,Ue(()=>{h.value?.$el&&(h.value.$el.focus(),h.value.$el.select(),g.value&&(h.value.$el.style.width=`${Math.max(200,g.value.offsetWidth)}px`))})},"startRename"),{menuItems:C}=wr(w,{isRoot:S}),T=a(N=>{m.value||(N.detail===1?t.isActive?l.value?.toggle(N):t.item.command?.({item:t.item,originalEvent:N}):t.isActive&&N.detail===2&&(l.value?.hide(),N.stopPropagation(),N.preventDefault(),w()))},"handleClick"),I=a(async N=>{N&&await b(v.value,t.item.label),m.value=!1},"inputBlur");return o({toggleMenu:a(N=>{l.value?.toggle(N)},"toggleMenu")}),(N,$)=>{const V=Pe("tooltip");return p(),x(Z,null,[ce((p(),x("a",{ref_key:"wrapperRef",ref:g,draggable:"false",href:"#",class:Q(["p-breadcrumb-item-link h-8 cursor-pointer px-2",{"flex items-center gap-1":N.isActive,"p-breadcrumb-item-link-menu-visible":l.value?.overlayVisible,"p-breadcrumb-item-link-icon-visible":N.isActive,"active-breadcrumb-item":N.isActive}]),onClick:T},[r.value&&S?(p(),x("i",fd)):A("",!0),c("span",vd,R(N.item.label),1),N.item.isBlueprint?(p(),O(u(to),{key:1,value:"Blueprint",severity:"primary"})):A("",!0),N.isActive?(p(),x("i",md)):A("",!0)],2)),[[V,{value:k.value,showDelay:512},void 0,{bottom:!0}]]),N.isActive||S?(p(),O(u(Ms),{key:0,ref_key:"menu",ref:l,model:u(C),popup:!0,pt:{root:{style:"background-color: var(--comfy-menu-bg)"},itemLink:{class:"py-2"}}},null,8,["model"])):A("",!0),m.value?(p(),O(u(Jr),{key:1,ref_key:"itemInputRef",ref:h,modelValue:v.value,"onUpdate:modelValue":$[0]||($[0]=B=>v.value=B),class:"fixed z-10000 px-2 py-2 text-[.8rem]",onBlur:$[1]||($[1]=B=>I(!1)),onClick:$[2]||($[2]=ke(()=>{},["stop"])),onKeydown:[$[3]||($[3]=To(B=>I(!0),["enter"])),$[4]||($[4]=To(B=>I(!1),["esc"]))]},null,8,["modelValue"])):A("",!0)],64)}}}),hd=Be(gd,[["__scopeId","data-v-d7b126c3"]]);const _r=a((e,o)=>{o={debounceTime:25,useMutationObserver:!0,useResizeObserver:!0,...o};const t=E(!1),s=[],r=E(!1),n=a(()=>{t.value=e.scrollWidth>e.clientWidth,o.onCheck?.(t.value)},"checkOverflowFn"),l=o.debounceTime?ca(n,o.debounceTime):n;return o.useMutationObserver&&s.push(yl(e,l,{subtree:!0,childList:!0}).stop),o.useResizeObserver&&s.push(Vs(e,l).stop),{isOverflowing:Ga(t),disposed:Ga(r),checkOverflow:l,dispose:a(()=>{r.value=!0,s.forEach(i=>i())},"dispose")}},"useOverflowObserver");var rs=28,ls=8,Ta=8,is=20,yd=q({__name:"SubgraphBreadcrumb",setup(e){const o=Ve(),t=bn(),s=E(),r=E(),n=a((C,T)=>{C.key==="root"&&(r.value=T)},"setItemRef"),l=y(()=>o.activeWorkflow?.filename),i=y(()=>wn().isSubgraphBlueprint(o.activeWorkflow)),d=E(!1),f=E(!1),m=y(()=>t.navigationStack.length>0),v=y(()=>({label:l.value,icon:"pi pi-home",key:"root",isBlueprint:i.value,command:a(()=>{Le()?.trackUiButtonClicked({button_id:"breadcrumb_subgraph_root_selected"});const C=fe().getCanvas();if(!C.graph)throw new TypeError("Canvas has no graph");C.setGraph(C.graph.rootGraph)},"command")})),h=y(()=>{const C=t.navigationStack.map(T=>({label:T.name,key:`subgraph-${T.id}`,command:a(()=>{Le()?.trackUiButtonClicked({button_id:"breadcrumb_subgraph_item_selected"});const I=fe().getCanvas();if(!I.graph)throw new TypeError("Canvas has no graph");I.setGraph(T)},"command"),updateTitle:a(I=>{const _=fe().getCanvas().graph?.rootGraph;_&&Gl(_,T.id,N=>{N.title=I})},"updateTitle")}));return[v.value,...C]}),g=y(()=>h.value.at(-1)?.key),b=a(C=>{Le()?.trackUiButtonClicked({button_id:"breadcrumb_subgraph_menu_selected"}),r.value?.toggleMenu(C)},"handleMenuClick"),S=a(()=>{Ce().execute("Comfy.Graph.ExitSubgraph")},"handleBackClick"),k=y(()=>s.value?s.value.$el?.querySelector(".p-breadcrumb-list"):null);let w;return ie(k,C=>{w?.dispose(),w=void 0,C&&(w=_r(C,{onCheck:a(T=>{if(f.value=T,d.value){if(!T){const I=[...C.querySelectorAll(".p-breadcrumb-item")];if(I.length<3)return;const _=I.filter(U=>U.querySelector(".p-breadcrumb-item-link-icon-visible")).length,N=C.querySelectorAll(".p-breadcrumb-separator"),$=N[N.length-1].offsetWidth,V=(rs+Ta+Ta)*I.length+_*is,B=(I.length-1)*$,D=(I.length-1)*(ls*2);V+B+D<=C.clientWidth&&(d.value=!1)}}else T&&(d.value=!0)},"onCheck")}))}),Us(()=>{w?.disposed.value||w?.checkOverflow()}),(C,T)=>(p(),x("div",{class:Q(["subgraph-breadcrumb flex w-auto drop-shadow-[var(--interface-panel-drop-shadow)]",{"subgraph-breadcrumb-collapse":d.value,"subgraph-breadcrumb-overflow":f.value}]),style:be({"--p-breadcrumb-gap":"0px","--p-breadcrumb-item-margin":`${ls/2}px`,"--p-breadcrumb-item-min-width":`${rs}px`,"--p-breadcrumb-item-padding":`${Ta}px`,"--p-breadcrumb-icon-width":`${is}px`})},[L(u(Rn),{class:"context-menu-button pointer-events-auto h-8 w-8 shrink-0 border border-transparent bg-transparent p-0 transition-all hover:rounded-lg hover:border-interface-stroke hover:bg-comfy-menu-bg",icon:"pi pi-bars",text:"",severity:"secondary",size:"small",onClick:b}),m.value?(p(),O(u(Rn),{key:0,class:"back-button pointer-events-auto h-8 w-8 shrink-0 border border-transparent bg-transparent p-0 transition-all hover:rounded-lg hover:border-interface-stroke hover:bg-comfy-menu-bg",text:"",severity:"secondary",size:"small",onClick:S},{default:M(()=>T[0]||(T[0]=[c("i",{class:"icon-[lucide--undo-2]"},null,-1)])),_:1})):A("",!0),L(u(jr),{ref_key:"breadcrumbRef",ref:s,class:Q(["w-fit rounded-lg p-0",{hidden:!m.value}]),model:h.value,pt:{item:{class:"pointer-events-auto"}},"aria-label":C.$t("g.graphNavigation")},{item:M(({item:I})=>[L(hd,{ref:a(_=>n(I,_),"ref"),item:I,"is-active":I.key===g.value},null,8,["item","is-active"])]),separator:M(()=>T[1]||(T[1]=[c("span",{style:{transform:"scale(1.5)"}}," / ",-1)])),_:1},8,["class","model","aria-label"])],6))}}),bd=Be(yd,[["__scopeId","data-v-50f75d4e"]]),wd={class:"flex flex-col gap-3 p-2"},_d={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"},Td={class:"flex items-center gap-1 text-text-secondary"},Nd={class:"inline-block max-w-[10rem] truncate"},Id={class:"flex items-center gap-1"},Pd={class:"flex items-center gap-4 text-[12px] text-text-primary"},$d={class:"flex items-center gap-2"},Md={class:"opacity-90"},Dd={class:"font-bold"},Ld={class:"ml-1"},Ad={class:"flex items-center gap-2"},Ed={class:"opacity-90"},Vd={class:"font-bold"},Od={class:"ml-1"},Rd=q({__name:"QueueOverlayActive",props:{totalProgressStyle:{},currentNodeProgressStyle:{},totalPercentFormatted:{},currentNodePercentFormatted:{},currentNodeName:{},runningCount:{},queuedCount:{},bottomRowClass:{}},emits:["interruptAll","clearQueued","viewAllJobs"],setup(e){const{t:o}=ue(),t=y(()=>at(o("sideToolbar.queueProgressOverlay.cancelJobTooltip"))),s=y(()=>at(o("sideToolbar.queueProgressOverlay.clearQueueTooltip")));return(r,n)=>{const l=Rs("i18n-t"),i=Pe("tooltip");return p(),x("div",wd,[c("div",_d,[c("div",kd,[c("div",{class:"absolute inset-0 h-full rounded-full transition-[width]",style:be(r.totalProgressStyle)},null,4),c("div",{class:"absolute inset-0 h-full rounded-full transition-[width]",style:be(r.currentNodeProgressStyle)},null,4)]),c("div",Cd,[c("div",Sd,[L(l,{keypath:"sideToolbar.queueProgressOverlay.total"},{percent:M(()=>[c("span",xd,R(r.totalPercentFormatted),1)]),_:1})]),c("div",Td,[c("span",null,R(u(o)("sideToolbar.queueProgressOverlay.currentNode")),1),c("span",Nd,R(r.currentNodeName),1),c("span",Id,[c("span",null,R(r.currentNodePercentFormatted),1)])])])]),c("div",{class:Q(r.bottomRowClass)},[c("div",Pd,[c("div",$d,[c("span",Md,[c("span",Dd,R(r.runningCount),1),c("span",Ld,R(u(o)("sideToolbar.queueProgressOverlay.running")),1)]),r.runningCount>0?ce((p(),O(X,{key:0,variant:"destructive",size:"icon","aria-label":u(o)("sideToolbar.queueProgressOverlay.interruptAll"),onClick:n[0]||(n[0]=d=>r.$emit("interruptAll"))},{default:M(()=>n[3]||(n[3]=[c("i",{class:"icon-[lucide--x] block size-4 leading-none text-text-primary"},null,-1)])),_:1},8,["aria-label"])),[[i,t.value,void 0,{top:!0}]]):A("",!0)]),c("div",Ad,[c("span",Ed,[c("span",Vd,R(r.queuedCount),1),c("span",Od,R(u(o)("sideToolbar.queueProgressOverlay.queuedSuffix")),1)]),r.queuedCount>0?ce((p(),O(X,{key:0,variant:"destructive",size:"icon","aria-label":u(o)("sideToolbar.queueProgressOverlay.clearQueued"),onClick:n[1]||(n[1]=d=>r.$emit("clearQueued"))},{default:M(()=>n[4]||(n[4]=[c("i",{class:"icon-[lucide--list-x] block size-4 leading-none text-text-primary"},null,-1)])),_:1},8,["aria-label"])),[[i,s.value,void 0,{top:!0}]]):A("",!0)])]),L(X,{class:"min-w-30 flex-1 px-2 py-0",variant:"secondary",size:"md",onClick:n[2]||(n[2]=d=>r.$emit("viewAllJobs"))},{default:M(()=>[Ie(R(u(o)("sideToolbar.queueProgressOverlay.viewAllJobs")),1)]),_:1})],2)])}}}),Wd=Rd,Bd={class:"inline-flex items-center gap-2"},zd={key:0,class:"inline-flex items-center"},Ud={class:"inline-flex items-center gap-2"},Fd={key:0,class:"relative inline-flex h-6 items-center"},Gd=["src","alt"],Hd={class:"text-[14px] font-normal text-text-primary"},jd={class:"font-bold"},qd={class:"font-bold"},Kd={class:"font-bold"},Qd={class:"font-bold"},Yd=q({__name:"CompletionSummaryBanner",props:{mode:{},completedCount:{},failedCount:{},thumbnailUrls:{default:a(()=>[],"default")},ariaLabel:{}},emits:["click"],setup(e,{emit:o}){const t=e,s=o;return(r,n)=>{const l=Rs("i18n-t");return p(),O(X,{variant:"secondary",size:"lg",class:"group w-full justify-between gap-3 p-1 text-left font-normal hover:cursor-pointer focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-background","aria-label":t.ariaLabel,onClick:n[0]||(n[0]=i=>s("click",i))},{default:M(()=>[c("span",Bd,[t.mode==="allFailed"?(p(),x("span",zd,n[1]||(n[1]=[c("i",{class:"ml-1 icon-[lucide--circle-alert] block size-4 leading-none text-destructive-background"},null,-1)]))):A("",!0),c("span",Ud,[t.mode!=="allFailed"?(p(),x("span",Fd,[(p(!0),x(Z,null,ye(t.thumbnailUrls,(i,d)=>(p(),x("span",{key:i+d,class:"inline-block h-6 w-6 overflow-hidden rounded-[6px] border-0 bg-secondary-background",style:be({marginLeft:d===0?"0":"-12px"})},[c("img",{src:i,alt:r.$t("sideToolbar.queueProgressOverlay.preview"),class:"h-full w-full object-cover"},null,8,Gd)],4))),128))])):A("",!0),c("span",Hd,[t.mode==="allSuccess"?(p(),O(l,{key:0,keypath:"sideToolbar.queueProgressOverlay.jobsCompleted",plural:t.completedCount},{count:M(()=>[c("span",jd,R(t.completedCount),1)]),_:1},8,["plural"])):t.mode==="mixed"?(p(),x(Z,{key:1},[L(l,{keypath:"sideToolbar.queueProgressOverlay.jobsCompleted",plural:t.completedCount},{count:M(()=>[c("span",qd,R(t.completedCount),1)]),_:1},8,["plural"]),n[2]||(n[2]=c("span",null,", ",-1)),L(l,{keypath:"sideToolbar.queueProgressOverlay.jobsFailed",plural:t.failedCount},{count:M(()=>[c("span",Kd,R(t.failedCount),1)]),_:1},8,["plural"])],64)):(p(),O(l,{key:2,keypath:"sideToolbar.queueProgressOverlay.jobsFailed",plural:t.failedCount},{count:M(()=>[c("span",Qd,R(t.failedCount),1)]),_:1},8,["plural"]))])])]),n[3]||(n[3]=c("span",{class:"flex items-center justify-center rounded p-1 text-text-secondary transition-colors duration-200 ease-in-out"},[c("i",{class:"icon-[lucide--chevron-down] block size-4 leading-none"})],-1))]),_:1},8,["aria-label"])}}}),Jd=Yd,Xd={class:"pointer-events-auto"},Zd=q({__name:"QueueOverlayEmpty",props:{summary:{}},emits:["summaryClick"],setup(e){const{t:o}=ue();return(t,s)=>(p(),x("div",Xd,[L(Jd,{mode:t.summary.mode,"completed-count":t.summary.completedCount,"failed-count":t.summary.failedCount,"thumbnail-urls":t.summary.thumbnailUrls,"aria-label":u(o)("sideToolbar.queueProgressOverlay.expandCollapsedQueue"),onClick:s[0]||(s[0]=r=>t.$emit("summaryClick"))},null,8,["mode","completed-count","failed-count","thumbnail-urls","aria-label"])]))}}),ec=Zd,tc={class:"flex h-12 items-center justify-between gap-2 border-b border-interface-stroke px-2"},oc={class:"px-2 text-[14px] font-normal text-text-primary"},ac={key:0,class:"ml-4 inline-flex items-center gap-1 text-blue-100"},nc={class:"font-bold"},sc={class:"ml-1"},rc={key:0,class:"flex items-center gap-1"},lc={class:"flex flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3 font-inter"},ic=q({__name:"QueueOverlayHeader",props:{headerTitle:{},showConcurrentIndicator:{type:Boolean},concurrentWorkflowCount:{}},emits:["clearHistory"],setup(e,{emit:o}){const t=o,{t:s}=ue(),r=E(null),n=y(()=>at(s("g.more"))),l=a(d=>{r.value?.toggle(d)},"onMoreClick"),i=a(()=>{r.value?.hide(),t("clearHistory")},"onClearHistoryFromMenu");return(d,f)=>{const m=Pe("tooltip");return p(),x("div",tc,[c("div",oc,[c("span",null,R(d.headerTitle),1),d.showConcurrentIndicator?(p(),x("span",ac,[f[0]||(f[0]=c("span",{class:"inline-block size-2 rounded-full bg-blue-100"},null,-1)),c("span",null,[c("span",nc,R(d.concurrentWorkflowCount),1),c("span",sc,R(u(s)("sideToolbar.queueProgressOverlay.running")),1)])])):A("",!0)]),u(Fe)?A("",!0):(p(),x("div",rc,[ce((p(),O(X,{variant:"textonly",size:"icon","aria-label":u(s)("sideToolbar.queueProgressOverlay.moreOptions"),onClick:l},{default:M(()=>f[1]||(f[1]=[c("i",{class:"icon-[lucide--more-horizontal] block size-4 leading-none text-text-secondary"},null,-1)])),_:1},8,["aria-label"])),[[m,n.value,void 0,{top:!0}]]),L(u(wt),{ref_key:"morePopoverRef",ref:r,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:M(()=>[c("div",lc,[L(X,{class:"w-full justify-start",variant:"textonly",size:"sm","aria-label":u(s)("sideToolbar.queueProgressOverlay.clearHistory"),onClick:i},{default:M(()=>[f[2]||(f[2]=c("i",{class:"icon-[lucide--file-x-2] size-4 text-muted"},null,-1)),c("span",null,R(u(s)("sideToolbar.queueProgressOverlay.clearHistory")),1)]),_:1},8,["aria-label"])])]),_:1},512)]))])}}}),uc=ic,dc={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"},cc={key:0,class:"px-2 py-1"},pc=q({__name:"JobContextMenu",props:{entries:{}},emits:["action"],setup(e,{expose:o,emit:t}){const s=t,r=E(null);function n(d){r.value&&r.value.toggle(d)}a(n,"open");function l(){r.value?.hide()}a(l,"hide");function i(d){s("action",d)}return a(i,"onEntry"),o({open:n,hide:l}),(d,f)=>(p(),O(u(wt),{ref_key:"jobItemPopoverRef",ref:r,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:M(()=>[c("div",dc,[(p(!0),x(Z,null,ye(d.entries,m=>(p(),x(Z,{key:m.key},[m.kind==="divider"?(p(),x("div",cc,f[0]||(f[0]=[c("div",{class:"h-px bg-interface-stroke"},null,-1)]))):(p(),O(X,{key:1,class:"w-full justify-start bg-transparent",variant:"textonly",size:"sm","aria-label":m.label,onClick:a(v=>i(m),"onClick")},{default:M(()=>[m.icon?(p(),x("i",{key:0,class:Q([m.icon,"block size-4 shrink-0 leading-none text-text-secondary"])},null,2)):A("",!0),c("span",null,R(m.label),1)]),_:2},1032,["aria-label","onClick"]))],64))),128))])]),_:1},512))}}),fc=pc,vc={class:"flex items-center justify-between gap-2 px-3"},mc={class:"min-w-0 flex-1 overflow-x-auto"},gc={class:"inline-flex items-center gap-1 whitespace-nowrap"},hc={class:"ml-2 flex shrink-0 items-center gap-2"},yc={key:0,class:"pointer-events-none absolute -top-1 -right-1 inline-block size-2 rounded-full bg-base-foreground"},bc={class:"flex min-w-[12rem] flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},wc={key:0,class:"icon-[lucide--check] size-4"},_c={key:0,class:"icon-[lucide--check] block size-4 leading-none text-text-secondary"},kc={key:0,class:"pointer-events-none absolute -top-1 -right-1 inline-block size-2 rounded-full bg-base-foreground"},Cc={class:"flex min-w-[12rem] flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},Sc={key:0,class:"icon-[lucide--check] size-4 text-text-secondary"},xc={key:0,class:"mx-2 mt-1 h-px"},Tc=q({__name:"JobFiltersBar",props:{selectedJobTab:{},selectedWorkflowFilter:{},selectedSortMode:{},hasFailedJobs:{type:Boolean}},emits:["update:selectedJobTab","update:selectedWorkflowFilter","update:selectedSortMode"],setup(e,{emit:o}){const t=e,s=o,{t:r}=ue(),n=E(null),l=E(null),i=y(()=>at(r("sideToolbar.queueProgressOverlay.filterBy"))),d=y(()=>at(r("sideToolbar.queueProgressOverlay.sortBy"))),f=!Fe,m=y(()=>t.hasFailedJobs?es:es.filter(w=>w!=="Failed")),v=a(w=>{n.value&&n.value.toggle(w)},"onFilterClick"),h=a(w=>{n.value?.hide?.(),s("update:selectedWorkflowFilter",w)},"selectWorkflowFilter"),g=a(w=>{l.value&&l.value.toggle(w)},"onSortClick"),b=a(w=>{l.value?.hide?.(),s("update:selectedSortMode",w)},"selectSortMode"),S=a(w=>r(w==="All"?"g.all":w==="Completed"?"g.completed":"g.failed"),"tabLabel"),k=a(w=>w==="mostRecent"?r("queue.jobList.sortMostRecent"):w==="totalGenerationTime"?r("queue.jobList.sortTotalGenerationTime"):"","sortLabel");return(w,C)=>{const T=Pe("tooltip");return p(),x("div",vc,[c("div",mc,[c("div",gc,[(p(!0),x(Z,null,ye(m.value,I=>(p(),O(X,{key:I,variant:w.selectedJobTab===I?"secondary":"muted-textonly",size:"sm",class:"px-3",onClick:a(_=>w.$emit("update:selectedJobTab",I),"onClick")},{default:M(()=>[Ie(R(S(I)),1)]),_:2},1032,["variant","onClick"]))),128))])]),c("div",hc,[f?ce((p(),O(X,{key:0,variant:"secondary",size:"icon","aria-label":u(r)("sideToolbar.queueProgressOverlay.filterJobs"),onClick:v},{default:M(()=>[C[2]||(C[2]=c("i",{class:"icon-[lucide--list-filter] size-4"},null,-1)),w.selectedWorkflowFilter!=="all"?(p(),x("span",yc)):A("",!0)]),_:1},8,["aria-label"])),[[T,i.value,void 0,{top:!0}]]):A("",!0),f?(p(),O(u(wt),{key:1,ref_key:"filterPopoverRef",ref:n,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:M(()=>[c("div",bc,[L(X,{class:"w-full justify-between",variant:"textonly",size:"sm",onClick:C[0]||(C[0]=I=>h("all"))},{default:M(()=>[c("span",null,R(u(r)("sideToolbar.queueProgressOverlay.filterAllWorkflows")),1),w.selectedWorkflowFilter==="all"?(p(),x("i",wc)):A("",!0)]),_:1}),C[3]||(C[3]=c("div",{class:"mx-2 mt-1 h-px"},null,-1)),L(X,{class:"w-full justify-between",variant:"textonly",onClick:C[1]||(C[1]=I=>h("current"))},{default:M(()=>[c("span",null,R(u(r)("sideToolbar.queueProgressOverlay.filterCurrentWorkflow")),1),w.selectedWorkflowFilter==="current"?(p(),x("i",_c)):A("",!0)]),_:1})])]),_:1},512)):A("",!0),ce((p(),O(X,{variant:"secondary",size:"icon","aria-label":u(r)("sideToolbar.queueProgressOverlay.sortJobs"),onClick:g},{default:M(()=>[C[4]||(C[4]=c("i",{class:"icon-[lucide--arrow-up-down] size-4"},null,-1)),w.selectedSortMode!=="mostRecent"?(p(),x("span",kc)):A("",!0)]),_:1},8,["aria-label"])),[[T,d.value,void 0,{top:!0}]]),L(u(wt),{ref_key:"sortPopoverRef",ref:l,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:M(()=>[c("div",Cc,[(p(!0),x(Z,null,ye(u(ts),(I,_)=>(p(),x(Z,{key:I},[L(X,{class:"w-full justify-between",variant:"textonly",size:"sm",onClick:a(N=>b(I),"onClick")},{default:M(()=>[c("span",null,R(k(I)),1),w.selectedSortMode===I?(p(),x("i",Sc)):A("",!0)]),_:2},1032,["onClick"]),_<u(ts).length-1?(p(),x("div",xc)):A("",!0)],64))),128))])]),_:1},512)])])}}}),Nc=Tc;const Ic=a(({taskForJob:e,copyToClipboard:o,dialog:t})=>{const s=y(()=>e.value?.errorMessage??"");return{errorMessageValue:s,copyErrorMessage:a(()=>{s.value&&o(s.value)},"copyErrorMessage"),reportJobError:a(()=>{const l=e.value?.executionError;if(l){t.showExecutionErrorDialog(l);return}s.value&&t.showErrorDialog(new Error(s.value),{reportType:"queueJobError"})},"reportJobError")}},"useJobErrorReporting"),Ja=a(e=>{const o=Math.max(0,Math.floor(e/1e3));return`${Math.floor(o/60)}m ${o%60}s`},"formatElapsedTime");var Pc=a(e=>e.historyTasks.map(o=>Number(o.executionTimeInSeconds)).filter(o=>typeof o=="number"&&!Number.isNaN(o)),"pickRecentDurations");const $c=a(({queueStore:e,executionStore:o,taskForJob:t,jobState:s,firstSeenTs:r,jobsAhead:n,nowTs:l})=>{const i=y(()=>o.runningWorkflowCount),d=y(()=>s.value==="pending"&&!!r.value&&(i.value??0)>1),f=y(()=>Pc(e).slice(-20)),m=y(()=>{const v=f.value;if(!v.length)return null;const h=v.slice().sort((C,T)=>C-T),g=h.reduce((C,T)=>C+T,0)/h.length,b=h[Math.min(h.length-1,Math.floor(h.length*.75))],S=e.runningTasks,k=l.value,w=S.map(C=>C.executionStartTimestamp).filter(C=>typeof C=="number").map(C=>{const T=Math.max(0,Math.floor((k-C)/1e3));return{lo:Math.max(0,Math.round(g-T)),hi:Math.max(0,Math.round(b-T))}});return w.length?[w.reduce((C,T)=>Math.min(C,T.lo),1/0),w.reduce((C,T)=>Math.min(C,T.hi),1/0)]:null});return{runningWorkflowCount:i,showParallelQueuedStats:d,estimateRangeSeconds:y(()=>{const v=f.value;if(!v.length)return null;const h=n.value;if(h==null)return null;const g=v.slice().sort((C,T)=>C-T),b=g.reduce((C,T)=>C+T,0)/g.length,S=g[Math.min(g.length-1,Math.floor(g.length*.75))];if(h<=0)return m.value??[0,0];const k=Math.max(1,i.value||1),w=Math.ceil(h/k);return[Math.round(b*w),Math.round(S*w)]}),estimateRemainingRangeSeconds:y(()=>{const v=f.value;if(!v.length)return null;const h=v.slice().sort((C,T)=>C-T),g=h.reduce((C,T)=>C+T,0)/h.length,b=h[Math.min(h.length-1,Math.floor(h.length*.75))],S=t.value,k=(s.value==="running"?S?.executionStartTimestamp:void 0)??r.value,w=k?Math.max(0,Math.floor((l.value-k)/1e3)):0;return[Math.max(0,Math.round(g-w)),Math.max(0,Math.round(b-w))]}),timeElapsedValue:y(()=>{const v=t.value,h=(s.value==="running"?v?.executionStartTimestamp:void 0)??r.value;return h?Ja(l.value-h):""})}},"useQueueEstimates");var Mc={class:"w-[300px] min-w-[260px] rounded-lg border border-interface-stroke bg-interface-panel-surface shadow-md"},Dc={class:"flex items-center border-b border-interface-stroke p-4"},Lc={class:"text-[0.875rem] leading-normal font-normal text-text-primary"},Ac={class:"flex flex-col gap-6 px-4 pt-4 pb-4"},Ec={class:"grid grid-cols-2 items-center gap-x-2 gap-y-2"},Vc={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Oc={class:"flex min-w-0 items-center text-[0.75rem] leading-normal font-normal text-text-secondary"},Rc={class:"block min-w-0 truncate"},Wc={key:0,class:"grid grid-cols-2 items-center gap-x-2 gap-y-2"},Bc={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},zc={class:"flex min-w-0 items-center text-[0.75rem] leading-normal font-normal text-text-secondary"},Uc={class:"block min-w-0 truncate"},Fc={key:1,class:"grid grid-cols-2 gap-x-2"},Gc={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Hc={class:"flex items-center justify-between gap-4"},jc={class:"col-span-2 mt-2 rounded bg-interface-panel-hover-surface px-4 py-2 text-[0.75rem] leading-normal text-text-secondary"},qc=q({__name:"JobDetailsPopover",props:{jobId:{},workflowId:{}},setup(e){const o=e,t=y(()=>d("g.copy")),s=Ve(),r=Vt(),n=it(),l=vt(),{locale:i,t:d}=ue(),f=y(()=>{const H=o.workflowId;if(!H)return"";const J=s.activeWorkflow?.activeState?.id;return J&&J===H?s.activeWorkflow?.filename??H:H}),m=y(()=>o.jobId),{copyToClipboard:v}=Eu(),h=a(()=>{v(m.value)},"copyJobId"),g=y(()=>{const H=o.jobId,J=a(te=>te.find(he=>String(he.promptId??"")===String(H)),"findIn");return J(r.pendingTasks)||J(r.runningTasks)||J(r.historyTasks)||null}),b=y(()=>{const H=g.value;return H?Zs(H,n.isPromptInitializing(String(H?.promptId))):null}),S=y(()=>g.value?.createTime),k=y(()=>S.value!==void 0?os(S.value,i.value):""),w=y(()=>{const H=g.value;return H?Number(H.queueIndex):null}),C=y(()=>{const H=w.value;return H==null?null:r.pendingTasks.filter(J=>Number(J.queueIndex)<H).length}),T=y(()=>{if(C.value==null)return"";const H=C.value;return d("queue.jobDetails.queuePositionValue",{count:H},H)}),I=E(Date.now());let _=null;Re(()=>{_=window.setInterval(()=>{I.value=Date.now()},1e3)}),kt(()=>{_!=null&&(clearInterval(_),_=null)});const{showParallelQueuedStats:N,estimateRangeSeconds:$,estimateRemainingRangeSeconds:V,timeElapsedValue:B}=$c({queueStore:r,executionStore:n,taskForJob:g,jobState:b,firstSeenTs:S,jobsAhead:C,nowTs:I}),D=a((H,J)=>{if(J<=60){const $e=Math.max(1,Math.round(J)),se=Math.max(1,Math.min($e,Math.round(H)));return se===$e?d("queue.jobDetails.eta.seconds",{count:$e},$e):d("queue.jobDetails.eta.secondsRange",{lo:se,hi:$e})}if(H>=60&&J<90)return d("queue.jobDetails.eta.minutes",{count:1},1);const te=Math.max(1,Math.floor(H/60)),he=Math.max(te,Math.ceil(J/60));return te===he?d("queue.jobDetails.eta.minutes",{count:te},te):d("queue.jobDetails.eta.minutesRange",{lo:te,hi:he})},"formatEta"),U=y(()=>{const H=$.value;if(!H)return"";const[J,te]=H;return D(J,te)}),j=y(()=>{const H=V.value;if(!H)return"";const[J,te]=H;return D(J,te)}),W=y(()=>[{label:d("queue.jobDetails.workflow"),value:f.value},{label:d("queue.jobDetails.jobId"),value:m.value,canCopy:!0}]),F=y(()=>{if(b.value==="pending"){if(!S.value)return[];const H=[{label:d("queue.jobDetails.queuedAt"),value:k.value}];return N.value&&H.push({label:d("queue.jobDetails.queuePosition"),value:T.value},{label:d("queue.jobDetails.timeElapsed"),value:B.value},{label:d("queue.jobDetails.estimatedStartIn"),value:U.value}),H}if(b.value==="running")return S.value?[{label:d("queue.jobDetails.queuedAt"),value:k.value},{label:d("queue.jobDetails.timeElapsed"),value:B.value},{label:d("queue.jobDetails.estimatedFinishIn"),value:j.value}]:[];if(b.value==="completed"){const H=g.value,J=H?.executionEndTimestamp,te=H?.executionTime,he=J?os(J,i.value):"",$e=te!==void 0?Ja(te):"",se=te!==void 0?(te/36e5).toFixed(3)+" hours":"",Se=[{label:d("queue.jobDetails.generatedOn"),value:he},{label:d("queue.jobDetails.totalGenerationTime"),value:$e}];return Fe&&Se.push({label:d("queue.jobDetails.computeHoursUsed"),value:se}),Se}if(b.value==="failed"){const H=g.value?.executionTime,J=H!==void 0?Ja(H):"",te=H!==void 0?(H/36e5).toFixed(3)+" hours":"",he=[{label:d("queue.jobDetails.queuedAt"),value:k.value},{label:d("queue.jobDetails.failedAfter"),value:J}];return Fe&&he.push({label:d("queue.jobDetails.computeHoursUsed"),value:te}),he}return[]}),{errorMessageValue:G,copyErrorMessage:z,reportJobError:K}=Ic({taskForJob:g,copyToClipboard:v,dialog:l});return(H,J)=>(p(),x("div",Mc,[c("div",Dc,[c("span",Lc,R(u(d)("queue.jobDetails.header")),1)]),c("div",Ac,[c("div",Ec,[(p(!0),x(Z,null,ye(W.value,te=>(p(),x(Z,{key:te.label},[c("div",Vc,R(te.label),1),c("div",Oc,[c("span",Rc,R(te.value),1),te.canCopy?(p(),O(X,{key:0,size:"icon",variant:"muted-textonly","aria-label":t.value,onClick:ke(h,["stop"])},{default:M(()=>J[0]||(J[0]=[c("i",{class:"icon-[lucide--copy] size-4"},null,-1)])),_:1},8,["aria-label"])):A("",!0)])],64))),128))]),F.value.length?(p(),x("div",Wc,[(p(!0),x(Z,null,ye(F.value,te=>(p(),x(Z,{key:te.label},[c("div",Bc,R(te.label),1),c("div",zc,[c("span",Uc,R(te.value),1)])],64))),128))])):A("",!0),b.value==="failed"?(p(),x("div",Fc,[c("div",Gc,R(u(d)("queue.jobDetails.errorMessage")),1),c("div",Hc,[L(X,{class:"justify-start px-0",variant:"muted-textonly",size:"sm","icon-position":"right",onClick:ke(u(z),["stop"])},{default:M(()=>[c("span",null,R(t.value),1),J[1]||(J[1]=c("i",{class:"icon-[lucide--copy] block size-3.5 leading-none"},null,-1))]),_:1},8,["onClick"]),L(X,{class:"justify-start px-0",variant:"muted-textonly",size:"sm","icon-position":"right",onClick:ke(u(K),["stop"])},{default:M(()=>[c("span",null,R(u(d)("queue.jobDetails.report")),1),J[2]||(J[2]=c("i",{class:"icon-[lucide--message-circle-warning] block size-3.5 leading-none"},null,-1))]),_:1},8,["onClick"])]),c("div",jc,R(u(G)),1)])):A("",!0)])]))}}),Kc=qc,Qc={class:"w-[300px] min-w-[260px] rounded-lg shadow-md"},Yc={class:"p-3"},Jc={class:"relative aspect-square w-full overflow-hidden rounded-lg"},Xc=["src","alt"],Zc={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)"}},ep={class:"mt-2 text-center"},tp=["title"],op={key:0,class:"mt-1 text-[0.75rem] leading-normal text-text-secondary"},ap=q({inheritAttrs:!1,__name:"QueueAssetPreview",props:{imageUrl:{},name:{},timeLabel:{}},emits:["image-click"],setup(e){const o=E(null),t=E(null),s=E(null),r=a(()=>{const n=o.value;n&&(t.value=n.naturalWidth||null,s.value=n.naturalHeight||null)},"onImgLoad");return(n,l)=>(p(),x("div",Qc,[c("div",Yc,[c("div",Jc,[c("img",{ref_key:"imgRef",ref:o,src:n.imageUrl,alt:n.name,class:"h-full w-full cursor-pointer object-contain",onClick:l[0]||(l[0]=i=>n.$emit("image-click")),onLoad:r},null,40,Xc),n.timeLabel?(p(),x("div",Zc,R(n.timeLabel),1)):A("",!0)]),c("div",ep,[c("div",{class:"truncate text-[0.875rem] leading-normal font-semibold text-text-primary",title:n.name},R(n.name),9,tp),t.value&&s.value?(p(),x("div",op,R(t.value)+"x"+R(s.value),1)):A("",!0)])])]))}}),np=ap,sp={class:"relative z-1 flex items-center gap-1"},rp={class:"relative inline-flex items-center justify-center"},lp={class:"inline-flex h-6 w-6 items-center justify-center overflow-hidden rounded-[6px]"},ip=["src"],up={class:"relative z-1 min-w-0 flex-1"},dp=["title"],cp={class:"relative z-1 flex items-center gap-2 text-text-secondary"},pp={key:"actions",class:"inline-flex items-center gap-2 pr-1"},fp={key:"secondary",class:"pr-2"},vp=q({__name:"QueueJobItem",props:{jobId:{},workflowId:{default:void 0},state:{},title:{},rightText:{default:""},iconName:{default:void 0},iconImageUrl:{default:void 0},showClear:{type:Boolean,default:void 0},showMenu:{type:Boolean,default:void 0},progressTotalPercent:{default:void 0},progressCurrentPercent:{default:void 0},activeDetailsId:{default:null}},emits:["cancel","delete","menu","view","details-enter","details-leave"],setup(e,{emit:o}){const t=e,s=o,{t:r}=ue(),{progressBarContainerClass:n,progressBarPrimaryClass:l,progressBarSecondaryClass:i,hasProgressPercent:d,hasAnyProgressPercent:f,progressPercentStyle:m}=Wi(),v=y(()=>at(r("g.cancel"))),h=y(()=>at(r("g.delete"))),g=y(()=>at(r("g.more"))),b=E(null),S=y(()=>t.activeDetailsId===t.jobId),k=a(()=>{I.value||s("details-enter",t.jobId)},"onRowEnter"),w=a(()=>s("details-leave",t.jobId),"onRowLeave"),C=a(()=>s("details-enter",t.jobId),"onPopoverEnter"),T=a(()=>s("details-leave",t.jobId),"onPopoverLeave"),I=E(!1),_=E(null),N=E(null),$=a(()=>{_.value!==null&&(clearTimeout(_.value),_.value=null)},"clearPreviewHideTimer"),V=a(()=>{N.value!==null&&(clearTimeout(N.value),N.value=null)},"clearPreviewShowTimer"),B=y(()=>t.state==="completed"&&!!t.iconImageUrl),D=a(()=>{B.value&&($(),V(),N.value=window.setTimeout(()=>{I.value=!0,N.value=null},200))},"scheduleShowPreview"),U=a(()=>{$(),V(),_.value=window.setTimeout(()=>{I.value=!1,_.value=null},150)},"scheduleHidePreview"),j=a(()=>D(),"onIconEnter"),W=a(()=>U(),"onIconLeave"),F=a(()=>D(),"onPreviewEnter"),G=a(()=>U(),"onPreviewLeave"),z=E(null),K=a(()=>{const xe=b.value;if(!xe)return;const Te=xe.getBoundingClientRect();z.value={top:Te.top,right:window.innerWidth-Te.left+8}},"updatePopoverPosition");ie(y(()=>S.value||I.value&&B.value),xe=>{xe?Ue(K):z.value=null},{immediate:!1});const H=E(!1),J=y(()=>t.iconName?t.iconName:Yn(t.state)),te=y(()=>t.state==="pending"&&J.value===Yn("pending")&&!t.iconImageUrl),he=y(()=>t.showClear!==void 0?t.showClear:t.state!=="completed"),$e=a(()=>s("details-leave",t.jobId),"emitDetailsLeave"),se=a(()=>{$e(),s("cancel")},"onCancelClick"),Se=a(()=>{$e(),s("delete")},"onDeleteClick"),ve=a(xe=>{(t.showMenu===void 0||t.showMenu)&&s("menu",xe)},"onContextMenu");return(xe,Te)=>{const He=Pe("tooltip");return p(),x("div",{ref_key:"rowRef",ref:b,class:"relative",onMouseenter:k,onMouseleave:w,onContextmenu:ke(ve,["stop","prevent"])},[(p(),O(yt,{to:"body"},[!I.value&&S.value&&z.value?(p(),x("div",{key:0,class:"fixed z-50",style:be({top:`${z.value.top}px`,right:`${z.value.right}px`}),onMouseenter:C,onMouseleave:T},[L(Kc,{"job-id":t.jobId,"workflow-id":t.workflowId},null,8,["job-id","workflow-id"])],36)):A("",!0)])),(p(),O(yt,{to:"body"},[I.value&&B.value&&z.value?(p(),x("div",{key:0,class:"fixed z-50",style:be({top:`${z.value.top}px`,right:`${z.value.right}px`}),onMouseenter:F,onMouseleave:G},[L(np,{"image-url":xe.iconImageUrl,name:t.title,"time-label":xe.rightText||void 0,onImageClick:Te[0]||(Te[0]=je=>s("view"))},null,8,["image-url","name","time-label"])],36)):A("",!0)])),c("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:Te[3]||(Te[3]=je=>H.value=!0),onMouseleave:Te[4]||(Te[4]=je=>H.value=!1)},[t.state==="running"&&u(f)(t.progressTotalPercent,t.progressCurrentPercent)?(p(),x("div",{key:0,class:Q(u(n))},[u(d)(t.progressTotalPercent)?(p(),x("div",{key:0,class:Q(u(l)),style:be(u(m)(t.progressTotalPercent))},null,6)):A("",!0),u(d)(t.progressCurrentPercent)?(p(),x("div",{key:1,class:Q(u(i)),style:be(u(m)(t.progressCurrentPercent))},null,6)):A("",!0)],2)):A("",!0),c("div",sp,[c("div",rp,[c("div",{class:"absolute left-1/2 top-1/2 size-10 -translate-x-1/2 -translate-y-1/2",onMouseenter:ke(j,["stop"]),onMouseleave:ke(W,["stop"])},null,32),c("div",lp,[xe.iconImageUrl?(p(),x("img",{key:0,src:xe.iconImageUrl,class:"h-full w-full object-cover"},null,8,ip)):(p(),x("i",{key:1,class:Q(u(ae)(J.value,"size-4",te.value&&"animate-spin"))},null,2))])])]),c("div",up,[c("div",{class:"truncate opacity-90",title:t.title},[_e(xe.$slots,"primary",{},()=>[Ie(R(t.title),1)])],8,dp)]),c("div",cp,[L(ma,{mode:"out-in","enter-active-class":"transition-opacity transition-transform duration-150 ease-out","leave-active-class":"transition-opacity transition-transform duration-150 ease-in","enter-from-class":"opacity-0 translate-y-0.5","enter-to-class":"opacity-100 translate-y-0","leave-from-class":"opacity-100 translate-y-0","leave-to-class":"opacity-0 translate-y-0.5"},{default:M(()=>[H.value?(p(),x("div",pp,[t.state==="failed"&&he.value?ce((p(),O(X,{key:0,variant:"destructive",size:"icon","aria-label":u(r)("g.delete"),onClick:ke(Se,["stop"])},{default:M(()=>Te[5]||(Te[5]=[c("i",{class:"icon-[lucide--trash-2] size-4"},null,-1)])),_:1},8,["aria-label"])),[[He,h.value,void 0,{top:!0}]]):t.state!=="completed"&&t.state!=="running"&&he.value?ce((p(),O(X,{key:1,variant:"destructive",size:"icon","aria-label":u(r)("g.cancel"),onClick:ke(se,["stop"])},{default:M(()=>Te[6]||(Te[6]=[c("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"])),[[He,v.value,void 0,{top:!0}]]):t.state==="completed"?(p(),O(X,{key:2,variant:"textonly",size:"sm",onClick:Te[1]||(Te[1]=ke(je=>s("view"),["stop"]))},{default:M(()=>[Ie(R(u(r)("menuLabels.View")),1)]),_:1})):A("",!0),t.showMenu===void 0||t.showMenu?ce((p(),O(X,{key:3,variant:"textonly",size:"icon-sm","aria-label":u(r)("g.more"),onClick:Te[2]||(Te[2]=ke(je=>s("menu",je),["stop"]))},{default:M(()=>Te[7]||(Te[7]=[c("i",{class:"icon-[lucide--more-horizontal] size-4"},null,-1)])),_:1},8,["aria-label"])),[[He,g.value,void 0,{top:!0}]]):A("",!0)])):t.state!=="running"?(p(),x("div",fp,[_e(xe.$slots,"secondary",{},()=>[Ie(R(t.rightText),1)])])):A("",!0)]),_:3}),t.state==="running"&&he.value?ce((p(),O(X,{key:0,variant:"destructive",size:"icon","aria-label":u(r)("g.cancel"),onClick:ke(se,["stop"])},{default:M(()=>Te[8]||(Te[8]=[c("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"])),[[He,v.value,void 0,{top:!0}]]):A("",!0)])],32)],544)}}}),mp=vp,gp={class:"flex flex-col gap-4 px-3 pb-4"},hp={class:"text-[12px] leading-none text-text-secondary"},yp=q({__name:"JobGroupsList",props:{displayedJobGroups:{}},emits:["cancelItem","deleteItem","menu","viewItem"],setup(e,{emit:o}){const t=e,s=o,r=a(b=>{s("cancelItem",b)},"emitCancelItem"),n=a(b=>{s("deleteItem",b)},"emitDeleteItem"),l=E(null),i=E(null),d=E(null),f=a(()=>{i.value!==null&&(clearTimeout(i.value),i.value=null)},"clearHideTimer"),m=a(()=>{d.value!==null&&(clearTimeout(d.value),d.value=null)},"clearShowTimer"),v=a(b=>{f(),m(),d.value=window.setTimeout(()=>{l.value=b,d.value=null},200)},"onDetailsEnter"),h=a(b=>{f(),m(),i.value=window.setTimeout(()=>{l.value===b&&(l.value=null),i.value=null},150)},"onDetailsLeave"),g=a(()=>{f(),m(),l.value=null},"resetActiveDetails");return ie(()=>t.displayedJobGroups,b=>{const S=l.value;S&&(b.some(k=>k.items.some(w=>w.id===S))||g())}),rt(g),(b,S)=>(p(),x("div",gp,[(p(!0),x(Z,null,ye(b.displayedJobGroups,k=>(p(),x("div",{key:k.key,class:"flex flex-col gap-2"},[c("div",hp,R(k.label),1),(p(!0),x(Z,null,ye(k.items,w=>(p(),O(mp,{key:w.id,"job-id":w.id,"workflow-id":w.taskRef?.workflowId,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":l.value,onCancel:a(C=>r(w),"onCancel"),onDelete:a(C=>n(w),"onDelete"),onMenu:a(C=>b.$emit("menu",w,C),"onMenu"),onView:a(C=>b.$emit("viewItem",w),"onView"),onDetailsEnter:v,onDetailsLeave:h},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))]))}}),bp=yp,wp={class:"flex w-full flex-col gap-4"},_p={class:"flex items-center justify-between px-3"},kp={class:"ml-4 inline-flex items-center"},Cp={class:"inline-flex h-6 items-center text-[12px] leading-none text-text-primary opacity-90"},Sp={class:"font-bold"},xp={class:"ml-1"},Tp={class:"flex-1 min-h-0 overflow-y-auto"},Np=q({__name:"QueueOverlayExpanded",props:{headerTitle:{},showConcurrentIndicator:{type:Boolean},concurrentWorkflowCount:{},queuedCount:{},selectedJobTab:{},selectedWorkflowFilter:{},selectedSortMode:{},displayedJobGroups:{},hasFailedJobs:{type:Boolean}},emits:["showAssets","clearHistory","clearQueued","update:selectedJobTab","update:selectedWorkflowFilter","update:selectedSortMode","cancelItem","deleteItem","viewItem"],setup(e,{emit:o}){const t=o,{t:s}=ue(),r=E(null),n=E(null),{jobMenuEntries:l}=Lu(()=>r.value,v=>t("viewItem",v)),i=a(v=>{t("cancelItem",v)},"onCancelItemEvent"),d=a(v=>{t("deleteItem",v)},"onDeleteItemEvent"),f=a((v,h)=>{r.value=v,n.value?.open(h)},"onMenuItem"),m=a(async v=>{v.kind!=="divider"&&(v.onClick&&await v.onClick(),n.value?.hide())},"onJobMenuAction");return(v,h)=>(p(),x("div",wp,[L(uc,{"header-title":v.headerTitle,"show-concurrent-indicator":v.showConcurrentIndicator,"concurrent-workflow-count":v.concurrentWorkflowCount,onClearHistory:h[0]||(h[0]=g=>v.$emit("clearHistory"))},null,8,["header-title","show-concurrent-indicator","concurrent-workflow-count"]),c("div",_p,[L(X,{class:"grow gap-1 justify-center",variant:"secondary",size:"sm",onClick:h[1]||(h[1]=g=>v.$emit("showAssets"))},{default:M(()=>[h[7]||(h[7]=c("i",{class:"icon-[comfy--image-ai-edit] size-4"},null,-1)),c("span",null,R(u(s)("sideToolbar.queueProgressOverlay.showAssets")),1)]),_:1}),c("div",kp,[c("div",Cp,[c("span",Sp,R(v.queuedCount),1),c("span",xp,R(u(s)("sideToolbar.queueProgressOverlay.queuedSuffix")),1)]),v.queuedCount>0?(p(),O(X,{key:0,class:"ml-2",variant:"destructive",size:"icon","aria-label":u(s)("sideToolbar.queueProgressOverlay.clearQueued"),onClick:h[2]||(h[2]=g=>v.$emit("clearQueued"))},{default:M(()=>h[8]||(h[8]=[c("i",{class:"icon-[lucide--list-x] size-4"},null,-1)])),_:1},8,["aria-label"])):A("",!0)])]),L(Nc,{"selected-job-tab":v.selectedJobTab,"selected-workflow-filter":v.selectedWorkflowFilter,"selected-sort-mode":v.selectedSortMode,"has-failed-jobs":v.hasFailedJobs,"onUpdate:selectedJobTab":h[3]||(h[3]=g=>v.$emit("update:selectedJobTab",g)),"onUpdate:selectedWorkflowFilter":h[4]||(h[4]=g=>v.$emit("update:selectedWorkflowFilter",g)),"onUpdate:selectedSortMode":h[5]||(h[5]=g=>v.$emit("update:selectedSortMode",g))},null,8,["selected-job-tab","selected-workflow-filter","selected-sort-mode","has-failed-jobs"]),c("div",Tp,[L(bp,{"displayed-job-groups":v.displayedJobGroups,onCancelItem:i,onDeleteItem:d,onViewItem:h[6]||(h[6]=g=>v.$emit("viewItem",g)),onMenu:f},null,8,["displayed-job-groups"])]),L(fc,{ref_key:"jobContextMenuRef",ref:n,entries:u(l),onAction:m},null,8,["entries"])]))}}),Ip=Np,Pp={class:"w-[360px] rounded-2xl border border-interface-stroke bg-interface-panel-surface text-text-primary shadow-interface font-inter"},$p={class:"flex items-center justify-between border-b border-interface-stroke px-4 py-4"},Mp={class:"m-0 text-[14px] font-normal leading-none"},Dp={class:"flex flex-col gap-4 px-4 py-4 text-[14px] text-text-secondary"},Lp={class:"m-0"},Ap={class:"m-0"},Ep={class:"flex items-center justify-end px-4 py-4"},Vp={class:"flex items-center gap-4 leading-none"},Op=q({__name:"QueueClearHistoryDialog",setup(e){const o=qt(),t=Vt(),{t:s}=ue(),{wrapWithErrorHandlingAsync:r}=jt(),n=E(!1),l=r(async()=>{await t.clear(["history"]),o.closeDialog()},void 0,()=>{n.value=!1}),i=a(async()=>{n.value||(n.value=!0,await l())},"onConfirm"),d=a(()=>{o.closeDialog()},"onCancel");return(f,m)=>(p(),x("section",Pp,[c("header",$p,[c("p",Mp,R(u(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogTitle")),1),L(X,{size:"icon",variant:"muted-textonly","aria-label":u(s)("g.close"),onClick:d},{default:M(()=>m[0]||(m[0]=[c("i",{class:"icon-[lucide--x] block size-4 leading-none"},null,-1)])),_:1},8,["aria-label"])]),c("div",Dp,[c("p",Lp,R(u(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogDescription")),1),c("p",Ap,R(u(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogAssetsNote")),1)]),c("footer",Ep,[c("div",Vp,[L(X,{variant:"muted-textonly",size:"lg",onClick:d},{default:M(()=>[Ie(R(u(s)("g.cancel")),1)]),_:1}),L(X,{variant:"secondary",size:"lg",disabled:n.value,onClick:i},{default:M(()=>[Ie(R(u(s)("g.clear")),1)]),_:1},8,["disabled"])])])]))}}),Rp=Op;const Wp=a(()=>{const e=Vt(),o=it(),t=y(()=>e.runningTasks.length>0||!o.isIdle),s=E(null),r=E(null),n=E(null),l=a(()=>{n.value!==null&&(clearTimeout(n.value),n.value=null)},"clearDismissTimer"),i=a(()=>{l(),n.value=window.setTimeout(()=>{r.value=null,n.value=null},6e3)},"startDismissTimer"),d=a(()=>{r.value=null,l()},"clearSummary");return ie(t,(f,m)=>{if(!m&&f&&(s.value=Date.now()),m&&!f){const v=s.value??0,h=e.historyTasks.filter(w=>{const C=w.executionEndTimestamp;return typeof C=="number"&&C>=v});if(!h.length){r.value=null,l();return}let g=0,b=0;const S=[];for(const w of h){const C=Zs(w,!1);if(C==="completed"){g++;const T=w.previewOutput;T?.isImage&&S.push(T.urlWithTimestamp)}else C==="failed"&&b++}if(g===0&&b===0){r.value=null,l();return}let k="mixed";b===0?k="allSuccess":g===0&&(k="allFailed"),r.value={mode:k,completedCount:g,failedCount:b,thumbnailUrls:S.slice(0,3)},i()}},{immediate:!0}),{summary:y(()=>r.value),clearSummary:d}},"useCompletionSummary");function Bp(e){const o=E(-1),t=Je([]);async function s(r){const n=e();if(!n.length)return;const l=r.taskRef,i=l?await Bu(l):null;if(i===null&&l)return;const d=i?.length?i:n.map(f=>f.previewOutput).filter(f=>!!f);d.length&&(t.value=d,o.value=du(d,r.taskRef?.previewOutput?.url))}return a(s,"onViewItem"),{galleryActiveIndex:o,galleryItems:t,onViewItem:s}}a(Bp,"useResultGallery");var zp={class:Q(["flex","justify-end","w-full","pointer-events-none"])},Up=q({__name:"QueueProgressOverlay",props:{expanded:{type:Boolean},menuHovered:{type:Boolean,default:!1}},emits:["update:expanded"],setup(e,{emit:o}){const t=e,s=o,{t:r}=ue(),n=Vt(),l=Ce(),i=it(),d=Po(),f=qt(),m=tr(),v=Ji(),{wrapWithErrorHandlingAsync:h}=jt(),{totalPercentFormatted:g,currentNodePercentFormatted:b,totalProgressStyle:S,currentNodeProgressStyle:k}=Nu(),w=E(!1),C=y(()=>w.value||t.menuHovered),T=E(!1),I=y({get:a(()=>t.expanded===void 0?T.value:t.expanded,"get"),set:a(Me=>{t.expanded===void 0&&(T.value=Me),s("update:expanded",Me)},"set")}),{summary:_,clearSummary:N}=Wp(),$=y(()=>_.value!==null),V=y(()=>n.runningTasks.length),B=y(()=>n.pendingTasks.length),D=y(()=>!i.isIdle),U=y(()=>V.value>0||D.value),j=y(()=>V.value+B.value),W=y(()=>I.value?"expanded":U.value?"active":$.value?"empty":"hidden"),F=y(()=>W.value==="expanded"||W.value==="empty"||W.value==="active"&&C.value),G=y(()=>W.value!=="hidden"),z=y(()=>F.value?"border-interface-stroke bg-interface-panel-surface shadow-interface":"border-transparent bg-transparent shadow-none"),K=y(()=>`flex items-center justify-end gap-4 transition-opacity duration-200 ease-in-out ${W.value==="active"&&C.value?"opacity-100 pointer-events-auto":"opacity-0 pointer-events-none"}`),H=y(()=>U.value?`${j.value} ${r("sideToolbar.queueProgressOverlay.activeJobsSuffix")}`:r("sideToolbar.queueProgressOverlay.jobQueue")),J=y(()=>i.runningWorkflowCount),te=y(()=>J.value>1),{selectedJobTab:he,selectedWorkflowFilter:$e,selectedSortMode:se,hasFailedJobs:Se,filteredTasks:ve,groupedJobItems:xe,currentNodeName:Te}=ru(),He=y(()=>xe.value),je=h(async Me=>{const ee=Me.taskRef?.promptId;ee&&(Me.state==="running"||Me.state==="initialization"?(await Ne.interrupt(ee),await n.update()):Me.state==="pending"&&(await Ne.deleteItem("queue",ee),await n.update()))}),Ye=h(async Me=>{Me.taskRef&&await n.delete(Me.taskRef)}),{galleryActiveIndex:ot,galleryItems:Rt,onViewItem:mt}=Bp(()=>ve.value),Wt=a(Me=>{I.value=Me},"setExpanded"),Qt=a(()=>{Wt(!0)},"openExpandedFromEmpty"),Bt=a(()=>{Wt(!0)},"viewAllJobs"),xt=a(()=>{Qt(),N()},"onSummaryClick"),dt=a(()=>{d.activeSidebarTabId="assets"},"openAssetsSidebar"),ho=a(async Me=>{const ee=Me.taskRef,oe=ee?.promptId,Tt=ee?.previewOutput;if(!oe||!Tt)return;const re=String(oe);if(dt(),await Ue(),await m.updateHistory(),!m.historyAssets.find(Dt=>Dt.id===re))throw new Error("Asset not found in media assets panel");v.setSelection([re])},"focusAssetInSidebar"),yo=h(async Me=>{await mt(Me),await ho(Me)}),Yt=h(async()=>{await l.execute("Comfy.ClearPendingTasks")}),de=h(async()=>{const Me=n.runningTasks.map(ee=>ee.promptId).filter(ee=>typeof ee=="string"&&ee.length>0);if(Me.length){if(Fe){await Promise.all(Me.map(ee=>Ne.deleteItem("queue",ee)));return}await Promise.all(Me.map(ee=>Ne.interrupt(ee)))}}),me=a(()=>{f.showDialog({key:"queue-clear-history",component:Rp,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"),De=a(()=>{me()},"onClearHistoryFromMenu");return(Me,ee)=>(p(),x(Z,null,[ce(c("div",zp,[c("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",z.value]),onMouseenter:ee[3]||(ee[3]=oe=>w.value=!0),onMouseleave:ee[4]||(ee[4]=oe=>w.value=!1)},[I.value?(p(),O(Ip,{key:0,"selected-job-tab":u(he),"onUpdate:selectedJobTab":ee[0]||(ee[0]=oe=>qe(he)?he.value=oe:null),"selected-workflow-filter":u($e),"onUpdate:selectedWorkflowFilter":ee[1]||(ee[1]=oe=>qe($e)?$e.value=oe:null),"selected-sort-mode":u(se),"onUpdate:selectedSortMode":ee[2]||(ee[2]=oe=>qe(se)?se.value=oe:null),class:"flex-1 min-h-0","header-title":H.value,"show-concurrent-indicator":te.value,"concurrent-workflow-count":J.value,"queued-count":B.value,"displayed-job-groups":He.value,"has-failed-jobs":u(Se),onShowAssets:dt,onClearHistory:De,onClearQueued:u(Yt),onCancelItem:u(je),onDeleteItem:u(Ye),onViewItem:u(yo)},null,8,["selected-job-tab","selected-workflow-filter","selected-sort-mode","header-title","show-concurrent-indicator","concurrent-workflow-count","queued-count","displayed-job-groups","has-failed-jobs","onClearQueued","onCancelItem","onDeleteItem","onViewItem"])):U.value?(p(),O(Wd,{key:1,"total-progress-style":u(S),"current-node-progress-style":u(k),"total-percent-formatted":u(g),"current-node-percent-formatted":u(b),"current-node-name":u(Te),"running-count":V.value,"queued-count":B.value,"bottom-row-class":K.value,onInterruptAll:u(de),onClearQueued:u(Yt),onViewAllJobs:Bt},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"])):u(_)?(p(),O(ec,{key:2,summary:u(_),onSummaryClick:xt},null,8,["summary"])):A("",!0)],34)],512),[[tt,G.value]]),L(Du,{"active-index":u(ot),"onUpdate:activeIndex":ee[5]||(ee[5]=oe=>qe(ot)?ot.value=oe:null),"all-gallery-items":u(Rt)},null,8,["active-index","all-gallery-items"])],64))}}),Fp=Up;const Gp=uo("actionBarButton",()=>{const e=fn();return{buttons:y(()=>e.extensions.flatMap(o=>o.actionBarButtons??[]))}});var Hp={class:"flex h-full shrink-0 items-center gap-1 empty:hidden"},jp={key:0},qp=q({__name:"ActionBarButtons",setup(e){const o=Gp(),t=un(pa).smaller("sm");return(s,r)=>{const n=Pe("tooltip");return p(),x("div",Hp,[(p(!0),x(Z,null,ye(u(o).buttons,(l,i)=>ce((p(),O(X,{key:i,"aria-label":l.tooltip||l.label,class:Q([l.class,"h-7 rounded-full"]),variant:"muted-textonly",size:"sm",onClick:l.onClick},{default:M(()=>[c("i",{class:Q(l.icon)},null,2),!u(t)&&l.label?(p(),x("span",jp,R(l.label),1)):A("",!0)]),_:2},1032,["aria-label","class","onClick"])),[[n,l.tooltip,void 0,{bottom:!0}]])),128))])}}}),Kp=qp,Qp={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)]"},Yp={class:"flex flex-col items-center px-0 py-3 mb-4"},Jp={class:"my-0 mb-1 truncate text-base font-bold text-base-foreground"},Xp={key:0,class:"my-0 truncate text-sm text-muted"},Zp={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"},ef={key:0,class:"flex items-center gap-2 px-4 py-2"},tf={key:1,class:"text-base font-semibold text-base-foreground"},of={class:"icon-[lucide--circle-help] cursor-help text-base text-muted-foreground mr-auto"},af={key:1,class:"flex justify-center px-4"},nf={class:"text-sm text-base-foreground flex-1"},sf={class:"text-sm text-base-foreground flex-1"},rf={key:0,class:"text-xs font-bold text-base-background bg-base-foreground px-1.5 py-0.5 rounded-full"},lf={class:"text-sm text-base-foreground flex-1"},uf={class:"text-sm text-base-foreground flex-1"},df={class:"text-sm text-base-foreground flex-1"},cf=q({__name:"CurrentUserPopover",emits:["close"],setup(e,{emit:o}){const t=o,{buildDocsUrl:s,docsPaths:r}=co(),{userDisplayName:n,userEmail:l,userPhotoUrl:i,handleSignOut:d}=fo(),f=Ys(),m=or(),v=vt(),{isActiveSubscription:h,subscriptionTierName:g,subscriptionTier:b,fetchStatus:S}=vn(),k=Ju(),{locale:w}=ue(),C=y(()=>Iu({cents:m.balance?.effective_balance_micros??m.balance?.amount_micros??0,locale:w.value,numberOptions:{minimumFractionDigits:0,maximumFractionDigits:2}})),T=y(()=>{const U=b.value;return U==="FOUNDERS_EDITION"||U==="STANDARD"||U==="CREATOR"}),I=a(()=>{v.showSettingsDialog("user"),t("close")},"handleOpenUserSettings"),_=a(()=>{k.show(),t("close")},"handleOpenPlansAndPricing"),N=a(()=>{Fe?v.showSettingsDialog("subscription"):v.showSettingsDialog("credits"),t("close")},"handleOpenPlanAndCreditsSettings"),$=a(()=>{Le()?.trackAddApiCreditButtonClicked(),v.showTopUpCreditsDialog(),t("close")},"handleTopUp"),V=a(()=>{window.open(s(r.partnerNodesPricing,{includeLocale:!0}),"_blank"),t("close")},"handleOpenPartnerNodesInfo"),B=a(async()=>{await d(),t("close")},"handleLogout"),D=a(async()=>{await S()},"handleSubscribed");return Re(()=>{f.fetchBalance()}),(U,j)=>{const W=Pe("tooltip");return p(),x("div",Qp,[c("div",Yp,[L(yr,{class:"mb-1","photo-url":u(i),"pt:icon:class":{"text-2xl!":!u(i)},size:"large"},null,8,["photo-url","pt:icon:class"]),c("h3",Jp,R(u(n)||U.$t("g.user")),1),u(l)?(p(),x("p",Xp,R(u(l)),1)):A("",!0),u(g)?(p(),x("span",Zp,R(u(g)),1)):A("",!0)]),u(h)?(p(),x("div",ef,[j[0]||(j[0]=c("i",{class:"icon-[lucide--component] text-amber-400 text-sm"},null,-1)),u(m).isFetchingBalance?(p(),O(u(sn),{key:0,width:"4rem",height:"1.25rem",class:"w-full"})):(p(),x("span",tf,R(C.value),1)),ce(c("i",of,null,512),[[W,{value:U.$t("credits.unified.tooltip"),showDelay:300}]]),L(X,{variant:"secondary",size:"sm",class:"text-base-foreground","data-testid":"add-credits-button",onClick:$},{default:M(()=>[Ie(R(U.$t("subscription.addCredits")),1)]),_:1})])):(p(),x("div",af,[L(Yu,{fluid:!1,label:U.$t("subscription.subscribeToComfyCloud"),size:"sm",variant:"gradient",onSubscribed:D},null,8,["label"])])),L(u(Wn),{class:"my-2 mx-0"}),u(h)?(p(),x("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:V},[j[1]||(j[1]=c("i",{class:"icon-[lucide--tag] text-muted-foreground text-sm"},null,-1)),c("span",nf,R(U.$t("subscription.partnerNodesCredits")),1)])):A("",!0),c("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:_},[j[2]||(j[2]=c("i",{class:"icon-[lucide--receipt-text] text-muted-foreground text-sm"},null,-1)),c("span",sf,R(U.$t("subscription.plansAndPricing")),1),T.value?(p(),x("span",rf,R(U.$t("subscription.upgrade")),1)):A("",!0)]),u(h)?(p(),x("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:N},[j[3]||(j[3]=c("i",{class:"icon-[lucide--file-text] text-muted-foreground text-sm"},null,-1)),c("span",lf,R(U.$t("subscription.managePlan")),1)])):A("",!0),c("div",{class:"flex items-center gap-2 px-4 py-2 cursor-pointer hover:bg-secondary-background-hover","data-testid":"user-settings-menu-item",onClick:I},[j[4]||(j[4]=c("i",{class:"icon-[lucide--settings-2] text-muted-foreground text-sm"},null,-1)),c("span",uf,R(U.$t("userSettings.accountSettings")),1)]),L(u(Wn),{class:"my-2 mx-0"}),c("div",{class:"flex items-center gap-2 px-4 py-2 cursor-pointer hover:bg-secondary-background-hover","data-testid":"logout-menu-item",onClick:B},[j[5]||(j[5]=c("i",{class:"icon-[lucide--log-out] text-muted-foreground text-sm"},null,-1)),c("span",df,R(U.$t("auth.signOut.signOut")),1)])])}}}),pf=cf,ff={key:0,class:"icon-[lucide--chevron-down] size-3 px-1"},vf=q({__name:"CurrentUserButton",props:{showArrow:{type:Boolean,default:!0},compact:{type:Boolean,default:!1}},setup(e){const{isLoggedIn:o,userPhotoUrl:t}=fo(),s=E(null),r=y(()=>t.value??void 0),n=a(()=>{s.value?.hide()},"closePopover");return(l,i)=>(p(),x("div",null,[u(o)?(p(),O(X,{key:0,class:"p-1 hover:bg-transparent",variant:"muted-textonly","aria-label":l.$t("g.currentUser"),onClick:i[0]||(i[0]=d=>s.value?.toggle(d))},{default:M(()=>[c("div",{class:Q(u(ae)("flex items-center gap-1 rounded-full hover:bg-interface-button-hover-surface justify-center",l.compact&&"size-full aspect-square"))},[L(yr,{"photo-url":r.value,class:Q(l.compact&&"size-full")},null,8,["photo-url","class"]),l.showArrow?(p(),x("i",ff)):A("",!0)],2)]),_:1},8,["aria-label"])):A("",!0),L(u(wt),{ref_key:"popover",ref:s,"show-arrow":!1,pt:{root:{class:"rounded-lg"}}},{default:M(()=>[L(pf,{onClose:n})]),_:1},512)]))}}),kr=vf,mf={class:"mb-1"},gf=["href"],hf=q({__name:"LoginButton",props:{class:{}},setup(e){const{isLoggedIn:o,handleSignIn:t}=fo(),{buildDocsUrl:s}=co(),r=s("/tutorials/api-nodes/overview#api-nodes",{includeLocale:!0}),n=E(null);let l=null,i=null;const d=a(v=>{l&&(clearTimeout(l),l=null),i&&(clearTimeout(i),i=null),i=setTimeout(()=>{n.value&&n.value.show(v,v.target)},200)},"showPopover"),f=a(()=>{l&&(clearTimeout(l),l=null)},"cancelHidePopover"),m=a(()=>{i&&(clearTimeout(i),i=null),l=setTimeout(()=>{n.value&&n.value.hide()},150)},"hidePopover");return(v,h)=>(p(),x(Z,null,[u(o)?A("",!0):(p(),O(X,{key:0,variant:"textonly",size:"icon",class:Q(u(ae)("group rounded-full text-base-foreground p-0",e.class)),"aria-label":u(le)("g.login"),onClick:h[0]||(h[0]=g=>u(t)()),onMouseenter:d,onMouseleave:m},{default:M(()=>h[1]||(h[1]=[c("span",{class:"flex size-full items-center justify-center rounded-full bg-secondary-background transition-colors group-hover:bg-transparent"},[c("i",{class:"icon-[lucide--user] size-4"})],-1)])),_:1},8,["class","aria-label"])),L(u(wt),{ref_key:"popoverRef",ref:n,class:"p-2",onMouseout:m,onMouseover:f},{default:M(()=>[c("div",null,[c("div",mf,R(u(le)("auth.loginButton.tooltipHelp")),1),c("a",{href:u(r),target:"_blank",class:"text-neutral-500 hover:text-primary"},R(u(le)("auth.loginButton.tooltipLearnMore")),9,gf)])]),_:1},512)],64))}}),Cr=hf,yf={class:"min-w-0 flex-1"},bf={class:"mx-1 flex flex-col items-end gap-1"},wf={class:"flex items-center gap-2"},_f={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"},kf={key:0,class:"absolute top-0.5 right-1 size-2 rounded-full bg-red-500"},Cf={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"},Sf={key:0,class:"absolute -top-1 -right-1 min-w-[16px] rounded-full bg-primary-background py-0.25 text-[10px] font-medium leading-[14px] text-base-foreground"},xf=q({__name:"TopMenuSection",setup(e){const o=ne(),t=st(),s=ut(),r=ht(),{isLoggedIn:n}=fo(),l=Xe(),{t:i}=ue(),{toastErrorHandler:d}=jt(),f=Ce(),m=Vt(),{isOverlayExpanded:v}=ze(Ya()),{shouldShowRedDot:h}=ze(Bo()),{shouldShowRedDot:g}=Cn(),b=E(!1),S=y(()=>m.pendingTasks.length),k=y(()=>o.get("Comfy.UI.TabBarLayout")==="Integrated"),w=y(()=>at(i("sideToolbar.queueProgressOverlay.viewJobHistory"))),C=y(()=>at(i("menu.customNodesManager"))),T=y(()=>h.value||g.value),{isOpen:I}=ze(s),_=y(()=>at(i("rightSidePanel.togglePanel"))),N=E();Re(()=>{N.value&&(Y.menu.element.style.width="fit-content",N.value.appendChild(Y.menu.element))});const $=a(()=>{f.execute("Comfy.Queue.ToggleOverlay")},"toggleQueueOverlay"),V=a(async()=>{try{await r.openManager({initialTab:ao.All,showToastOnLegacyError:!1})}catch(B){try{d(B)}catch(D){console.error(B),console.error(D)}}},"openCustomNodeManager");return(B,D)=>{const U=Pe("tooltip");return u(t).focusMode?A("",!0):(p(),x("div",{key:0,class:"ml-1 flex gap-x-0.5 pt-1",onMouseenter:D[1]||(D[1]=j=>b.value=!0),onMouseleave:D[2]||(D[2]=j=>b.value=!1)},[c("div",yf,[L(bd)]),c("div",bf,[c("div",wf,[u(r).shouldShowManagerButtons.value?(p(),x("div",_f,[ce((p(),O(X,{variant:"secondary",size:"icon","aria-label":u(i)("menu.customNodesManager"),class:"relative",onClick:V},{default:M(()=>[D[3]||(D[3]=c("i",{class:"icon-[lucide--puzzle] size-4"},null,-1)),T.value?(p(),x("span",kf)):A("",!0)]),_:1},8,["aria-label"])),[[U,C.value,void 0,{bottom:!0}]])])):A("",!0),c("div",Cf,[L(Kp),c("div",{ref_key:"legacyCommandsContainerRef",ref:N,class:"[&:not(:has(*>*:not(:empty)))]:hidden"},null,512),L(pd),ce((p(),O(X,{type:"destructive",size:"icon","aria-pressed":u(v),"aria-label":u(i)("sideToolbar.queueProgressOverlay.expandCollapsedQueue"),onClick:$},{default:M(()=>[D[4]||(D[4]=c("i",{class:"icon-[lucide--history] size-4"},null,-1)),S.value>0?(p(),x("span",Sf,R(S.value),1)):A("",!0)]),_:1},8,["aria-pressed","aria-label"])),[[U,w.value,void 0,{bottom:!0}]]),u(n)&&!k.value?(p(),O(kr,{key:0,class:"shrink-0"})):u(l)&&!k.value?(p(),O(Cr,{key:1})):A("",!0),u(I)?A("",!0):ce((p(),O(X,{key:2,type:"secondary",size:"icon","aria-label":u(i)("rightSidePanel.togglePanel"),onClick:u(s).togglePanel},{default:M(()=>D[5]||(D[5]=[c("i",{class:"icon-[lucide--panel-right] size-4"},null,-1)])),_:1},8,["aria-label","onClick"])),[[U,_.value,void 0,{bottom:!0}]])])]),L(Fp,{expanded:u(v),"onUpdate:expanded":D[0]||(D[0]=j=>qe(v)?v.value=j:null),"menu-hovered":b.value},null,8,["expanded","menu-hovered"])])],32))}}}),Tf=xf,Nf=q({__name:"ExtensionSlot",props:{extension:{}},setup(e){const o=e,t=a((s,r)=>{s.render(r)},"mountCustomExtension");return rt(()=>{o.extension.type==="custom"&&o.extension.destroy&&o.extension.destroy()}),(s,r)=>s.extension.type==="vue"?(p(),O(so(s.extension.component),{key:0})):(p(),x("div",{key:1,ref:a(n=>{n&&t(o.extension,n)},"ref")},null,512))}}),Sr=Nf,If={class:"flex h-full flex-col"},Pf={class:"flex w-full justify-between"},$f={class:"tabs-container font-inter"},Mf={class:"font-normal"},Df={class:"flex items-center gap-2"},Lf={class:"h-0 grow"},Af=q({__name:"BottomPanel",setup(e){const o=po(),t=vt(),{t:s}=ue(),r=y(()=>{const f=o.activeBottomPanelTabId;return f==="shortcuts-essentials"||f==="shortcuts-view-controls"}),n=a(f=>f!=="shortcuts-essentials"&&f!=="shortcuts-view-controls","shouldCapitalizeTab"),l=a(f=>{const m=f.titleKey?s(f.titleKey):f.title||"";return n(f.id)?m.toUpperCase():m},"getTabDisplayTitle"),i=a(async()=>{t.showSettingsDialog("keybinding")},"openKeybindingSettings"),d=a(()=>{o.activePanel=null},"closeBottomPanel");return(f,m)=>(p(),x("div",If,[(p(),O(u(nl),{key:f.$i18n.locale,value:u(o).activeBottomPanelTabId,"onUpdate:value":m[0]||(m[0]=v=>u(o).activeBottomPanelTabId=v),style:{"--p-tabs-tablist-background":"var(--comfy-menu-bg)"}},{default:M(()=>[L(u(Xr),{"pt:tab-list":"border-none h-full flex items-center py-2 border-b-1 border-solid",class:"bg-transparent"},{default:M(()=>[c("div",Pf,[c("div",$f,[(p(!0),x(Z,null,ye(u(o).bottomPanelTabs,v=>(p(),O(u(Yr),{key:v.id,value:v.id,class:Q(["m-1 mx-2 border-none font-inter",{"tab-list-single-item":u(o).bottomPanelTabs.length===1}]),"pt:root":a(h=>({class:{"p-3 rounded-lg":!0,"pointer-events-none":u(o).bottomPanelTabs.length===1},style:{color:"var(--fg-color)",backgroundColor:!h.context.active||u(o).bottomPanelTabs.length===1?"":"var(--bg-color)"}}),"pt:root")},{default:M(()=>[c("span",Mf,R(l(v)),1)]),_:2},1032,["value","class","pt:root"]))),128))]),c("div",Df,[r.value?(p(),O(X,{key:0,variant:"muted-textonly",size:"sm",onClick:i},{default:M(()=>[m[1]||(m[1]=c("i",{class:"pi pi-cog"},null,-1)),Ie(" "+R(f.$t("shortcuts.manageShortcuts")),1)]),_:1})):A("",!0),L(X,{class:"justify-self-end",variant:"muted-textonly",size:"sm","aria-label":u(s)("g.close"),onClick:d},{default:M(()=>m[2]||(m[2]=[c("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])])]),_:1})]),_:1},8,["value"])),c("div",Lf,[u(o).bottomPanelVisible&&u(o).activeBottomPanelTab?(p(),O(Sr,{key:0,extension:u(o).activeBottomPanelTab},null,8,["extension"])):A("",!0)])]))}}),Ef=Be(Af,[["__scopeId","data-v-9d1ea2c9"]]);function xr(e={}){const{useTransform:o=!1}=e,t=fe().getCanvas(),{canvasPosToClientPos:s,update:r}=vu(t.canvas,t),n=ne();ie([()=>n.get("Comfy.Sidebar.Location"),()=>n.get("Comfy.Sidebar.Size"),()=>n.get("Comfy.UseNewMenu")],()=>r(),{flush:"post"});const l=E({}),i=a(f=>{const{pos:m,size:v,scale:h=t.ds.scale}=f,[g,b]=s(m),[S,k]=v;return o?{position:"fixed",transformOrigin:"0 0",transform:`scale(${h})`,left:`${g}px`,top:`${b}px`,width:`${S}px`,height:`${k}px`}:{position:"fixed",left:`${g}px`,top:`${b}px`,width:`${S*h}px`,height:`${k*h}px`}},"computeStyle");return{style:l,updatePosition:a(f=>{l.value=i(f)},"updatePosition")}}a(xr,"useAbsolutePosition");function Vf(e,o){const t=Math.max(e.x,o.x),s=Math.max(e.y,o.y),r=Math.min(e.x+e.width,o.x+o.width),n=Math.min(e.y+e.height,o.y+o.height);return t>=r||s>=n?null:[t,s,r-t,n-s]}a(Vf,"intersect");const Of=a((e={})=>{const o=E({}),{margin:t=4}=e,s=a((n,l,i,d)=>{if(!i&&d){const{scale:f,offset:m}=d,v=Vf({x:n.left-l.left,y:n.top-l.top,width:n.width,height:n.height},{x:(d.x+m[0]-t)*f,y:(d.y+m[1]-t)*f,width:(d.width+2*t)*f,height:(d.height+2*t)*f});if(!v)return"";const h=(v[0]-n.left+l.left)/f+"px",g=(v[1]-n.top+l.top)/f+"px",b=v[2]/f+"px",S=v[3]/f+"px";return`polygon(0% 0%, 0% 100%, ${h} 100%, ${h} ${g}, calc(${h} + ${b}) ${g}, calc(${h} + ${b}) calc(${g} + ${S}), ${h} calc(${g} + ${S}), ${h} 100%, 100% 100%, 100% 0%)`}return""},"calculateClipPath");return{style:o,updateClipPath:a((n,l,i,d)=>{o.value={clipPath:s(n.getBoundingClientRect(),l.getBoundingClientRect(),i,d)||"none",willChange:"clip-path"}},"updateClipPath")}},"useDomClipping");var Rf=["title"],Wf=q({__name:"DomWidget",props:{widgetState:{}},emits:["update:widgetValue"],setup(e,{emit:o}){const t=e.widgetState.widget,s=o,r=E(),n=E({}),{style:l,updatePosition:i}=xr({useTransform:!0}),{style:d,updateClipPath:f}=Of(),m=fe(),v=ne(),h=y(()=>v.get("Comfy.DOMClippingEnabled")),g=a(()=>{const C=m.canvas;if(!C||!r.value)return;const T=Object.values(C.selected_nodes??{})[0];if(!T){f(r.value,C.canvas,!1,void 0);return}const I=T===e.widgetState.widget.node,_=T?.renderArea,N=C.ds.offset,$=C.ds.scale,V=_?{x:_[0],y:_[1],width:_[2],height:_[3],scale:$,offset:[N[0],N[1]]}:void 0;f(r.value,C.canvas,I,V)},"updateDomClipping"),{left:b,top:S}=dn(m.getCanvas().canvas);ie([()=>e.widgetState,b,S],([C,T,I])=>{i(C),h.value&&g(),n.value={...l.value,...h.value?d.value:{},zIndex:C.zIndex,pointerEvents:C.readonly||t.computedDisabled?"none":"auto",opacity:t.computedDisabled?.5:1}},{deep:!0}),ie(()=>e.widgetState.visible,(C,T)=>{!C&&T&&t.options.onHide?.(t)}),Oe(document,"mousedown",C=>{!xo(t)||!e.widgetState.visible||!t.element.blur||t.element.contains(C.target)||t.element.blur()}),Re(()=>{xo(t)&&Oe(t.element,t.options.selectOn??["focus","click"],()=>{const C=m.canvas;C?.selectNode(e.widgetState.widget.node),C?.bringToFront(e.widgetState.widget.node)})});const k=t.node.constructor.nodeData?.inputs?.[t.name]?.tooltip,w=a(()=>{e.widgetState.visible&&xo(t)&&r.value&&(r.value.contains(t.element)||r.value.appendChild(t.element))},"mountElementIfVisible");return Re(()=>{Ue(()=>{w()}).catch(C=>{console.error("Error mounting DOM widget element:",C)})}),ie(()=>e.widgetState.visible,()=>{w()}),(C,T)=>ce((p(),x("div",{ref_key:"widgetElement",ref:r,class:"dom-widget",title:u(k),style:be(n.value)},[u(zi)(u(t))?(p(),O(so(u(t).component),lt({key:0,"model-value":u(t).value,widget:u(t)},u(t).props,{"onUpdate:modelValue":T[0]||(T[0]=I=>s("update:widgetValue",I))}),null,16,["model-value","widget"])):A("",!0)],12,Rf)),[[tt,C.widgetState.visible]])}}),Bf=Be(Wf,[["__scopeId","data-v-781496d2"]]),zf={class:"isolate"},Uf=q({__name:"DomWidgets",setup(e){const o=Ri(),t=y(()=>[...o.widgetStates.values()]),s=a(()=>{const n=r.canvas;if(!n)return;const l=n.low_quality,i=n.graph;for(const d of t.value){const f=d.widget;if(!f.isVisible()||!d.active){d.visible=!1;continue}const m=f.node;if(d.visible=!!i?.nodes.includes(m)&&n.isNodeVisible(m)&&!(f.options.hideOnZoom&&l),d.visible&&m){const v=f.margin;d.pos=[m.pos[0]+v,m.pos[1]+v+f.y],d.size=[(f.width??m.width)-v*2,(f.computedHeight??50)-v*2],d.zIndex=n.graph?.nodes.indexOf(m)??-1,d.readonly=n.read_only}}},"updateWidgets"),r=fe();return bt(()=>r.canvas,n=>n.onDrawForeground=ro(n.onDrawForeground,s),{immediate:!0}),(n,l)=>(p(),x("div",zf,[(p(!0),x(Z,null,ye(t.value,i=>(p(),O(Bf,{key:i.widget.id,"widget-state":i,"onUpdate:widgetValue":a(d=>i.widget.value=d,"onUpdate:widgetValue")},null,8,["widget-state","onUpdate:widgetValue"]))),128))]))}}),Ff=Uf;function Gf(){const e=E(!1);return{isModalVisible:e,showModal:a(()=>{e.value=!0},"showModal"),hideModal:a(()=>{e.value=!1},"hideModal"),toggleModal:a(()=>{e.value=!e.value},"toggleModal"),hasActivePopup:y(()=>e.value)}}a(Gf,"useZoomControls");function Hf(e,o){const t=new Map,s=E(""),r=E(0),n=E({bounds:!1,nodes:!1,connections:!1,viewport:!1}),l=Ae.getVersion(),i=new Map,d=Nl(()=>{o()},500),f=a(()=>{const S=e.value;if(!S||i.has(S.id))return;const k={onNodeAdded:S.onNodeAdded,onNodeRemoved:S.onNodeRemoved,onConnectionChange:S.onConnectionChange,onTrigger:S.onTrigger};i.set(S.id,k),S.onNodeAdded=function(w){k.onNodeAdded?.call(this,w),d()},S.onNodeRemoved=function(w){k.onNodeRemoved?.call(this,w),t.delete(w.id),d()},S.onConnectionChange=function(w){k.onConnectionChange?.call(this,w),d()},S.onTrigger=function(w){k.onTrigger?.call(this,w),w.type==="node:property:changed"&&(w.property==="mode"||w.property==="bgcolor"||w.property==="color")&&(t.delete(String(w.nodeId)),d())}},"setupEventListeners"),m=a(S=>{const k=S||e.value;if(!k)return;const w=i.get(k.id);if(!w){console.error("Attempted to cleanup event listeners for graph that was never set up");return}k.onNodeAdded=w.onNodeAdded,k.onNodeRemoved=w.onNodeRemoved,k.onConnectionChange=w.onConnectionChange,k.onTrigger=w.onTrigger,i.delete(k.id)},"cleanupEventListeners");return{updateFlags:n,setupEventListeners:f,cleanupEventListeners:m,checkForChanges:a(()=>{const S=e.value;if(!S)return!1;let k=!1,w=!1,C=!1;const T=Js.create(S),I=T.getNodeCount();I!==r.value&&(k=!0,r.value=I);const _=T.getNodes();for(const V of _){const B=V.id,D=`${V.x},${V.y},${V.width},${V.height}`;t.get(B)!==D&&(w=!0,t.set(B,D))}const N=new Set(_.map(V=>V.id));for(const[V]of t)N.has(V)||(t.delete(V),k=!0);const $=JSON.stringify(S.links||{});return $!==s.value&&(C=!0,s.value=$),(k||w)&&(n.value.bounds=!0,n.value.nodes=!0),C&&(n.value.connections=!0),k||w||C},"checkForChangesInternal"),init:a(()=>{f(),Ne.addEventListener("graphChanged",d),ie(l,()=>{d()})},"init"),destroy:a(()=>{m(),Ne.removeEventListener("graphChanged",d),t.clear()},"destroy"),clearCache:a(()=>{t.clear(),s.value="",r.value=0},"clearCache")}}a(Hf,"useMinimapGraph");function jf(e,o,t,s,r,n,l){const i=E(!1),d=E({left:0,top:0,width:s,height:r}),f=a(()=>{if(!e.value)return;const k=e.value.getBoundingClientRect();d.value={left:k.left,top:k.top,width:k.width,height:k.height}},"updateContainerRect"),m=a(k=>{i.value=!0,f();const w=k.currentTarget;w instanceof HTMLElement&&w.setPointerCapture(k.pointerId),v(k)},"handlePointerDown"),v=a(k=>{if(!i.value||!l.value)return;const w=k.clientX-d.value.left,C=k.clientY-d.value.top,T=(s-o.value.width*t.value)/2,I=(r-o.value.height*t.value)/2;n((w-T)/t.value+o.value.minX,(C-I)/t.value+o.value.minY)},"handlePointerMove"),h=a(k=>{if(i.value=!1,!k)return;const w=k.currentTarget;w instanceof HTMLElement&&w.hasPointerCapture(k.pointerId)&&w.releasePointerCapture(k.pointerId)},"releasePointer");return{isDragging:i,containerRect:d,updateContainerRect:f,handlePointerDown:m,handlePointerMove:v,handlePointerUp:h,handlePointerCancel:h,handleWheel:a(k=>{k.preventDefault();const w=l.value;if(!w)return;d.value.left===0&&d.value.top===0&&e.value&&f();const C=w.ds,T=k.deltaY>0?.9:1.1,I=C.scale*T;if(I<.1||I>10)return;const _=k.clientX-d.value.left,N=k.clientY-d.value.top,$=(s-o.value.width*t.value)/2,V=(r-o.value.height*t.value)/2,B=(_-$)/t.value+o.value.minX,D=(N-V)/t.value+o.value.minY;C.scale=I,n(B,D)},"handleWheel")}}a(jf,"useMinimapInteraction");function qf(e,o,t,s,r,n,l,i){const d=E(!0),f=E(!0),m=a(()=>{const g=o.value;if(!e.value||!g)return;const b=e.value.getContext("2d");if(b){if(!g._nodes||g._nodes.length===0){b.clearRect(0,0,l,i);return}(d.value||r.value.nodes||r.value.connections)&&(xi(e.value,g,{bounds:t.value,scale:s.value,settings:{nodeColors:n.nodeColors.value,showLinks:n.showLinks.value,showGroups:n.showGroups.value,renderBypass:n.renderBypass.value,renderError:n.renderError.value},width:l,height:i}),d.value=!1,r.value.nodes=!1,r.value.connections=!1)}},"renderMinimap");return{needsFullRedraw:d,needsBoundsUpdate:f,renderMinimap:m,updateMinimap:a((g,b)=>{(f.value||r.value.bounds)&&(g(),f.value=!1,r.value.bounds=!1,d.value=!0,r.value.viewport=!0),(d.value||r.value.nodes||r.value.connections)&&m(),r.value.viewport&&(b(),r.value.viewport=!1)},"updateMinimap"),forceFullRedraw:a(()=>{d.value=!0,r.value.bounds=!0,r.value.nodes=!0,r.value.connections=!0,r.value.viewport=!0},"forceFullRedraw")}}a(qf,"useMinimapRenderer");function Kf(){const e=ne(),o=St(),t=y(()=>e.get("Comfy.Minimap.NodeColors")),s=y(()=>e.get("Comfy.Minimap.ShowLinks")),r=y(()=>e.get("Comfy.Minimap.ShowGroups")),n=y(()=>e.get("Comfy.Minimap.RenderBypassState")),l=y(()=>e.get("Comfy.Minimap.RenderErrorState")),i=253,d=200,f=y(()=>o.completedActivePalette.light_theme);return{nodeColors:t,showLinks:s,showGroups:r,renderBypass:n,renderError:l,containerStyles:y(()=>({width:`${i}px`,height:`${d}px`,border:"1px solid var(--interface-stroke)",borderRadius:"8px"})),panelStyles:y(()=>({width:"210px",height:`${d}px`,border:"1px solid var(--interface-stroke)",borderRadius:"8px"})),isLightTheme:f}}a(Kf,"useMinimapSettings");function Qf(e,o,t,s){const r=E({minX:0,minY:0,maxX:0,maxY:0,width:0,height:0}),n=E(1),l=E({x:0,y:0,width:0,height:0}),i=E({width:0,height:0}),d=a(()=>{const k=e.value;if(!k)return;const w=k.canvas,C=window.devicePixelRatio||1;i.value={width:w.clientWidth||w.width/C,height:w.clientHeight||w.height/C}},"updateCanvasDimensions"),f=a(()=>{const k=Js.create(o.value);return k.hasData()?yi(k.getBounds()):{minX:0,minY:0,maxX:100,maxY:100,width:100,height:100}},"calculateGraphBounds"),m=a(()=>ku(r.value,t,s),"calculateScale"),v=a(()=>{const k=e.value;if(!k)return;(i.value.width===0||i.value.height===0)&&d();const w=k.ds,C=i.value.width/w.scale,T=i.value.height/w.scale,I=-w.offset[0],_=-w.offset[1],N=(t-r.value.width*n.value)/2,$=(s-r.value.height*n.value)/2;l.value={x:(I-r.value.minX)*n.value+N,y:(_-r.value.minY)*n.value+$,width:C*n.value,height:T*n.value}},"updateViewport"),h=a(()=>{r.value=f(),n.value=m()},"updateBounds"),g=a((k,w)=>{const C=e.value;if(!C)return;(i.value.width===0||i.value.height===0)&&d();const T=C.ds,I=i.value.width/T.scale,_=i.value.height/T.scale;T.offset[0]=-(k-I/2),T.offset[1]=-(w-_/2),C.setDirty(!0,!0)},"centerViewOn"),{resume:b,pause:S}=io(v);return{bounds:y(()=>r.value),scale:y(()=>n.value),viewportTransform:y(()=>l.value),canvasDimensions:y(()=>i.value),updateCanvasDimensions:d,updateViewport:v,updateBounds:h,centerViewOn:g,startViewportSync:b,stopViewportSync:S}}a(Qf,"useMinimapViewport");function xn({canvasRefMaybe:e,containerRefMaybe:o}={}){const t=fe(),s=Ve(),r=ne(),n=E(null),l=e??Je(null),i=o??Je(null),d=E(!0),f=E(!1),m=250,v=200,h=y(()=>t.canvas),g=y(()=>s.activeSubgraph||h.value?.graph),b=Kf(),{nodeColors:S,showLinks:k,showGroups:w,renderBypass:C,renderError:T,containerStyles:I,panelStyles:_}=b,N=a(async(H,J)=>{await r.set(H,J),D.forceFullRedraw(),D.updateMinimap($.updateBounds,$.updateViewport)},"updateOption"),$=Qf(h,g,m,v),V=jf(i,$.bounds,$.scale,m,v,$.centerViewOn,h),B=Hf(g,()=>{D.forceFullRedraw(),D.updateMinimap($.updateBounds,$.updateViewport)}),D=qf(l,g,$.bounds,$.scale,B.updateFlags,b,m,v),{pause:U,resume:j}=io(async()=>{d.value&&await B.checkForChanges()&&D.updateMinimap($.updateBounds,$.updateViewport)},{immediate:!1}),W=a(async()=>{f.value||(d.value=r.get("Comfy.Minimap.Visible"),h.value&&g.value&&(B.init(),i.value&&V.updateContainerRect(),$.updateCanvasDimensions(),window.addEventListener("resize",V.updateContainerRect),window.addEventListener("scroll",V.updateContainerRect),window.addEventListener("resize",$.updateCanvasDimensions),D.forceFullRedraw(),D.updateMinimap($.updateBounds,$.updateViewport),$.updateViewport(),d.value&&(j(),$.startViewportSync()),f.value=!0))},"init"),F=a(()=>{U(),$.stopViewportSync(),B.destroy(),window.removeEventListener("resize",V.updateContainerRect),window.removeEventListener("scroll",V.updateContainerRect),window.removeEventListener("resize",$.updateCanvasDimensions),f.value=!1},"destroy");ie(h,async(H,J)=>{J&&(B.cleanupEventListeners(),U(),$.stopViewportSync(),B.destroy(),window.removeEventListener("resize",V.updateContainerRect),window.removeEventListener("scroll",V.updateContainerRect),window.removeEventListener("resize",$.updateCanvasDimensions)),H&&!f.value&&await W()},{immediate:!0,flush:"post"}),ie(g,(H,J)=>{H&&H!==J&&(B.cleanupEventListeners(J||void 0),B.setupEventListeners(),D.forceFullRedraw(),D.updateMinimap($.updateBounds,$.updateViewport))}),ie(d,async H=>{H?(i.value&&V.updateContainerRect(),$.updateCanvasDimensions(),D.forceFullRedraw(),await Ue(),await Ue(),D.updateMinimap($.updateBounds,$.updateViewport),$.updateViewport(),j(),$.startViewportSync()):(U(),$.stopViewportSync())});const G=a(async()=>{d.value=!d.value,await r.set("Comfy.Minimap.Visible",d.value)},"toggle"),z=a(H=>{n.value=H},"setMinimapRef"),K=y(()=>{const H=$.viewportTransform.value;return{transform:`translate(${H.x}px, ${H.y}px)`,width:`${H.width}px`,height:`${H.height}px`,border:`2px solid ${b.isLightTheme.value?"#E0E0E0":"#FFF"}`,backgroundColor:"rgba(255, 255, 255, 0.2)",willChange:"transform",backfaceVisibility:"hidden",perspective:"1000px",pointerEvents:"none"}});return{visible:y(()=>d.value),initialized:y(()=>f.value),containerStyles:I,viewportStyles:K,panelStyles:_,width:m,height:v,nodeColors:S,showLinks:k,showGroups:w,renderBypass:C,renderError:T,init:W,destroy:F,toggle:G,renderMinimap:D.renderMinimap,handlePointerDown:V.handlePointerDown,handlePointerMove:V.handlePointerMove,handlePointerUp:V.handlePointerUp,handlePointerCancel:V.handlePointerCancel,handleWheel:V.handleWheel,setMinimapRef:z,updateOption:N}}a(xn,"useMinimap");var Yf={class:"flex items-center gap-1 pr-0.5"},Jf={class:"rounded-lg bg-interface-panel-selected-surface p-2 group-hover:bg-interface-button-hover-surface"},Xf={class:"flex flex-col gap-1"},Zf={class:"flex items-center gap-2"},ev={class:"text-[9px] text-text-primary"},tv={class:"flex items-center gap-2"},ov={class:"text-[9px] text-text-primary"},av=q({__name:"CanvasModeSelector",props:{buttonStyles:{}},setup(e){const o=E(),t=E(),s=Ce(),r=fe(),n=y(()=>r.canvas?.read_only??!1),l=y(()=>n.value?"icon-[lucide--hand]":"icon-[lucide--mouse-pointer-2]"),i=y(()=>s.formatKeySequence(s.getCommand("Comfy.Canvas.Unlock")).toUpperCase()),d=y(()=>s.formatKeySequence(s.getCommand("Comfy.Canvas.Lock")).toUpperCase()),f=a(h=>{const g=o.value?.$el||o.value;t.value?.toggle(h,g)},"toggle"),m=a(h=>{h==="select"&&n.value?s.execute("Comfy.Canvas.Unlock"):h==="hand"&&!n.value&&s.execute("Comfy.Canvas.Lock"),t.value?.hide()},"setMode"),v=y(()=>({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(h,g)=>(p(),x(Z,null,[L(X,{ref_key:"buttonRef",ref:o,variant:"secondary",class:"group h-8 rounded-none! bg-comfy-menu-bg p-0 transition-none! hover:rounded-lg! hover:bg-interface-button-hover-surface!",style:be(h.buttonStyles),onClick:f},{default:M(()=>[c("div",Yf,[c("div",Jf,[c("i",{class:Q([l.value,"block h-4 w-4"])},null,2)]),g[2]||(g[2]=c("i",{class:"icon-[lucide--chevron-down] block h-4 w-4 pr-1.5"},null,-1))])]),_:1},8,["style"]),L(u(wt),{ref_key:"popover",ref:t,"auto-z-index":!0,"base-z-index":1e3,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:v.value},{default:M(()=>[c("div",Xf,[c("div",{class:"flex cursor-pointer items-center justify-between px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onClick:g[0]||(g[0]=b=>m("select"))},[c("div",Zf,[g[3]||(g[3]=c("i",{class:"icon-[lucide--mouse-pointer-2] h-4 w-4"},null,-1)),c("span",null,R(h.$t("graphCanvasMenu.select")),1)]),c("span",ev,R(i.value),1)]),c("div",{class:"flex cursor-pointer items-center justify-between rounded px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onClick:g[1]||(g[1]=b=>m("hand"))},[c("div",tv,[g[4]||(g[4]=c("i",{class:"icon-[lucide--hand] h-4 w-4"},null,-1)),c("span",null,R(h.$t("graphCanvasMenu.hand")),1)]),c("span",ov,R(d.value),1)])])]),_:1},8,["pt"])],64))}}),nv=av,sv={key:0,class:"absolute right-0 bottom-[62px] z-1300 flex w-[250px] justify-center border-0! bg-inherit!"},rv={class:"flex flex-col gap-1"},lv={class:"font-medium"},iv={class:"text-[9px] text-text-primary"},uv={class:"font-medium"},dv={class:"text-[9px] text-text-primary"},cv={class:"font-medium"},pv={class:"text-[9px] text-text-primary"},fv=q({__name:"ZoomControlsModal",props:{visible:{type:Boolean}},setup(e){const o=xn(),t=Ce(),s=fe(),{formatKeySequence:r}=Ce(),n=e,l=E(null),i=a(k=>{const w=k.value;isNaN(w)||w<1||w>1e3||s.setAppZoomFromPercentage(w)},"applyZoom"),d=a(k=>{t.execute(k)},"executeCommand"),f=a(k=>{if(l.value)return;const w=a(()=>t.execute(k),"cmd");w(),l.value=window.setInterval(w,100)},"startRepeat"),m=a(()=>{l.value&&(clearInterval(l.value),l.value=null)},"stopRepeat"),v=y(()=>({...o.containerStyles.value,height:void 0,width:void 0})),h=y(()=>r(t.getCommand("Comfy.Canvas.ZoomIn"))),g=y(()=>r(t.getCommand("Comfy.Canvas.ZoomOut"))),b=y(()=>r(t.getCommand("Comfy.Canvas.FitView"))),S=E(null);return ie(()=>n.visible,async k=>{k&&(await Ue(),S.value?.querySelector("input")?.focus())}),(k,w)=>k.visible?(p(),x("div",sv,[c("div",{class:"w-4/5 rounded-lg border border-interface-stroke bg-interface-panel-surface p-2 text-text-primary shadow-lg select-none",style:be(v.value),onClick:w[3]||(w[3]=ke(()=>{},["stop"]))},[c("div",rv,[c("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]=C=>f("Comfy.Canvas.ZoomIn")),onMouseup:m,onMouseleave:m},[c("span",lv,R(k.$t("graphCanvasMenu.zoomIn")),1),c("span",iv,R(h.value),1)],32),c("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]=C=>f("Comfy.Canvas.ZoomOut")),onMouseup:m,onMouseleave:m},[c("span",uv,R(k.$t("graphCanvasMenu.zoomOut")),1),c("span",dv,R(g.value),1)],32),c("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]=C=>d("Comfy.Canvas.FitView"))},[c("span",cv,R(k.$t("zoomControls.zoomToFit")),1),c("span",pv,R(b.value),1)]),c("div",{ref_key:"zoomInputContainer",ref:S,class:"zoomInputContainer flex items-center gap-1 rounded bg-input-surface p-2"},[L(u(Ds),{"default-value":u(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:i,onKeyup:To(i,["enter"])},null,8,["default-value"]),w[4]||(w[4]=c("span",{class:"flex-shrink-0 text-sm text-text-primary"},"%",-1))],512)])],4)])):A("",!0)}}),vv=fv,mv={class:"inline-flex items-center gap-1 px-2 text-xs"},gv=q({__name:"GraphCanvasMenu",setup(e){const{t:o}=ue(),t=Ce(),{formatKeySequence:s}=Ce(),r=fe(),n=ne(),l=go(),i=xn(),{isModalVisible:d,toggleModal:f,hideModal:m,hasActivePopup:v}=Gf(),h=y(()=>{const B=["borderRadius"],D=["borderRadius"],U={border:"none"},j=i.containerStyles.value;return{buttonStyles:{...Object.fromEntries(Object.entries(j).filter(([W])=>D.includes(W))),...U},buttonGroupStyles:Object.entries(j).filter(([W])=>B.includes(W)).reduce((W,[F,G])=>({...W,[F]:G}),{})}}),g=y(()=>n.get("Comfy.LinkRenderMode")===ge.HIDDEN_LINK),b=y(()=>s(t.getCommand("Comfy.Canvas.FitView")).toUpperCase()),S=y(()=>s(t.getCommand("Comfy.Canvas.ToggleMinimap")).toUpperCase()),k=y(()=>["bg-comfy-menu-bg",d.value?"not-active:bg-interface-panel-selected-surface!":"","hover:bg-interface-button-hover-surface!","p-0","h-8","w-15"]),w=y(()=>({"bg-comfy-menu-bg":!0,"hover:bg-interface-button-hover-surface!":!0,"not-active:bg-interface-panel-selected-surface!":n.get("Comfy.Minimap.Visible"),"p-0":!0,"w-8":!0,"h-8":!0})),C=y(()=>{const B=o("graphCanvasMenu.fitView"),D=b.value;return D?`${B} (${D})`:B}),T=y(()=>{const B=n.get("Comfy.Minimap.Visible")?o("zoomControls.hideMinimap"):o("zoomControls.showMinimap"),D=S.value;return D?`${B} (${D})`:B}),I=y(()=>g.value?o("graphCanvasMenu.showLinks"):o("graphCanvasMenu.hideLinks")),_=y(()=>g.value?o("graphCanvasMenu.showLinks"):o("graphCanvasMenu.hideLinks")),N=y(()=>["bg-comfy-menu-bg",g.value?"not-active:bg-interface-panel-selected-surface!":"","hover:bg-interface-button-hover-surface!","p-0","w-8","h-8"]);Re(()=>{r.initScaleSync()});const $=a(()=>{Le()?.trackUiButtonClicked({button_id:"graph_menu_minimap_toggle_clicked"}),t.execute("Comfy.Canvas.ToggleMinimap")},"onMinimapToggleClick"),V=a(()=>{Le()?.trackUiButtonClicked({button_id:"graph_menu_hide_links_toggle_clicked"}),t.execute("Comfy.Canvas.ToggleLinkVisibility")},"onLinkVisibilityToggleClick");return rt(()=>{r.cleanupScaleSync()}),(B,D)=>{const U=Pe("tooltip");return p(),x("div",null,[L(vv,{visible:u(d),onClose:u(m)},null,8,["visible","onClose"]),u(v)?(p(),x("div",{key:0,class:"fixed inset-0 z-1200",onClick:D[0]||(D[0]=(...j)=>u(m)&&u(m)(...j))})):A("",!0),L(u(sl),{class:"absolute right-0 bottom-0 z-1200 flex-row gap-1 border-[1px] border-interface-stroke bg-comfy-menu-bg p-2",style:be({...h.value.buttonGroupStyles}),onWheel:u(l).handleWheel},{default:M(()=>[L(nv,{"button-styles":h.value.buttonStyles},null,8,["button-styles"]),D[6]||(D[6]=c("div",{class:"h-[27px] w-[1px] self-center bg-node-divider"},null,-1)),ce((p(),O(X,{variant:"secondary","aria-label":C.value,style:be(h.value.buttonStyles),class:"h-8 w-8 bg-comfy-menu-bg p-0 hover:bg-interface-button-hover-surface!",onClick:D[1]||(D[1]=()=>u(t).execute("Comfy.Canvas.FitView"))},{default:M(()=>D[2]||(D[2]=[c("i",{class:"icon-[lucide--focus] h-4 w-4"},null,-1)])),_:1},8,["aria-label","style"])),[[U,C.value,void 0,{top:!0}]]),ce((p(),O(X,{variant:"secondary",class:Q(k.value),"aria-label":u(o)("zoomControls.label"),"data-testid":"zoom-controls-button",style:be(h.value.buttonStyles),onClick:u(f)},{default:M(()=>[c("span",mv,[c("span",null,R(u(r).appScalePercentage)+"%",1),D[3]||(D[3]=c("i",{class:"icon-[lucide--chevron-down] h-4 w-4"},null,-1))])]),_:1},8,["class","aria-label","style","onClick"])),[[U,u(o)("zoomControls.label"),void 0,{top:!0}]]),D[7]||(D[7]=c("div",{class:"h-[27px] w-[1px] self-center bg-node-divider"},null,-1)),ce((p(),O(X,{variant:"secondary","aria-label":T.value,"data-testid":"toggle-minimap-button",style:be(h.value.buttonStyles),class:Q(w.value),onClick:$},{default:M(()=>D[4]||(D[4]=[c("i",{class:"icon-[lucide--map] h-4 w-4"},null,-1)])),_:1},8,["aria-label","style","class"])),[[U,T.value,void 0,{top:!0}]]),ce((p(),O(X,{variant:"secondary",class:Q(N.value),"aria-label":_.value,"data-testid":"toggle-link-visibility-button",style:be(h.value.buttonStyles),onClick:V},{default:M(()=>D[5]||(D[5]=[c("i",{class:"icon-[lucide--route-off] h-4 w-4"},null,-1)])),_:1},8,["class","aria-label","style"])),[[U,{value:I.value,pt:{root:{style:"z-index: 2; transform: translateY(-20px);"}}},void 0,{top:!0}]])]),_:1},8,["style","onWheel"])])}}}),hv=gv,yv=q({__name:"NodeTooltip",setup(e){let o;const t=Ct(),s=ne(),r=E(),n=E(""),l=E(),i=E();function d(){return n.value=""}a(d,"hideTooltip");async function f(h){if(!h)return;l.value=Y.canvas.mouse[0]+"px",i.value=Y.canvas.mouse[1]+"px",n.value=h,await Ue();const g=r.value?.getBoundingClientRect();g&&(g.right>window.innerWidth&&(l.value=Y.canvas.mouse[0]-g.width+"px"),g.top<0&&(i.value=Y.canvas.mouse[1]+g.height+"px"))}a(f,"showTooltip");function m(){const{canvas:h}=Y,g=h?.node_over;if(!g)return;const b=g.constructor,S=t.nodeDefsByName[g.type??""];if(b.title_mode!==ge.NO_TITLE&&h.graph_mouse[1]<g.pos[1])return f(S?.description);if(g.flags?.collapsed)return;const k=Kl(g,h.graph_mouse[0],h.graph_mouse[1],[0,0]);if(k!==-1){const T=g.inputs[k].name;return f(Ze(`nodeDefs.${Pt(g.type??"")}.inputs.${Pt(T)}.tooltip`,S?.inputs[T]?.tooltip??""))}const w=Rl(g,h.graph_mouse[0],h.graph_mouse[1],[0,0]);if(w!==-1)return f(Ze(`nodeDefs.${Pt(g.type??"")}.outputs.${w}.tooltip`,S?.outputs[w]?.tooltip??""));const C=Y.canvas.getWidgetAtCursor();if(C&&!xo(C)){const T=Ze(`nodeDefs.${Pt(g.type??"")}.inputs.${Pt(C.name)}.tooltip`,S?.inputs[C.name]?.tooltip??"");return f(C.tooltip??T)}}return a(m,"onIdle"),Oe(window,"mousemove",a(h=>{d(),clearTimeout(o),h.target.nodeName==="CANVAS"&&(o=window.setTimeout(m,s.get("LiteGraph.Node.TooltipDelay")))},"onMouseMove")),Oe(window,"click",d),(h,g)=>n.value?(p(),x("div",{key:0,ref_key:"tooltipRef",ref:r,class:"node-tooltip",style:be({left:l.value,top:i.value})},R(n.value),5)):A("",!0)}}),bv=Be(yv,[["__scopeId","data-v-96b1458a"]]),wv=q({__name:"BypassButton",setup(e){const o=Ce(),t=a(async()=>{await o.execute("Comfy.Canvas.ToggleSelectedNodes.Bypass")},"toggleBypass");return(s,r)=>{const n=Pe("tooltip");return ce((p(),O(X,{variant:"muted-textonly","aria-label":s.$t("commands.Comfy_Canvas_ToggleSelectedNodes_Bypass.label"),"data-testid":"bypass-button",class:"hover:bg-secondary-background",onClick:t},{default:M(()=>r[0]||(r[0]=[c("i",{class:"icon-[lucide--redo-dot] size-4"},null,-1)])),_:1},8,["aria-label"])),[[n,{value:s.$t("commands.Comfy_Canvas_ToggleSelectedNodes_Bypass.label"),showDelay:1e3},void 0,{top:!0}]])}}}),_v=wv,kv={class:"relative"},Cv={class:"flex items-center gap-1 px-0"},Sv={key:0,class:"color-picker-container absolute -top-10 left-1/2"},xv=["data-testid"],Tv=q({__name:"ColorPickerButton",setup(e){const{t:o}=ue(),t=fe(),s=St(),r=Ve(),n=y(()=>s.completedActivePalette.light_theme),l=a(k=>Gt(k,{lightness:.5}),"toLightThemeColor"),i=E(!1),d={name:"noColor",localizedName:o("color.noColor"),value:{dark:ge.NODE_DEFAULT_BGCOLOR,light:l(ge.NODE_DEFAULT_BGCOLOR)}},f=[d,...Object.entries(Ke.node_colors).map(([k,w])=>({name:k,localizedName:o(`color.${k}`),value:{dark:w.bgcolor,light:l(w.bgcolor)}}))],m=E(null),v=a(k=>{const w=k?.name??d.name,C=w===d.name?null:Ke.node_colors[w];for(const T of t.selectedItems)Jo(T)&&T.setColorOption(C);t.canvas?.setDirty(!0,!0),h.value=C,i.value=!1,r.activeWorkflow?.changeTracker.checkState()},"applyColor"),h=E(null),g=y(()=>h.value?n.value?l(h.value?.bgcolor):h.value?.bgcolor:null),b=y(()=>h.value?.bgcolor?f.find(k=>k.value.dark===h.value?.bgcolor||k.value.light===h.value?.bgcolor)?.localizedName??d.localizedName:null),S=a(k=>{i.value=!1,m.value=null,h.value=wu(k)},"updateColorSelectionFromNode");return ie(()=>t.selectedItems,k=>{S(k)},{immediate:!0}),(k,w)=>{const C=Pe("tooltip");return p(),x("div",kv,[ce((p(),O(X,{"data-testid":"color-picker-button",variant:"muted-textonly","aria-label":u(o)("g.color"),onClick:w[0]||(w[0]=()=>i.value=!i.value)},{default:M(()=>[c("div",Cv,[c("i",{class:"pi pi-circle-fill",style:be({color:g.value??""})},null,4),w[1]||(w[1]=c("i",{class:"icon-[lucide--chevron-down]"},null,-1))])]),_:1},8,["aria-label"])),[[C,{value:b.value??u(o)("color.noColor"),showDelay:1e3},void 0,{top:!0}]]),i.value?(p(),x("div",Sv,[L(u($s),{"model-value":m.value,options:f,"option-label":"name","data-key":"value","onUpdate:modelValue":v},{option:M(({option:T})=>[ce(c("i",{class:"pi pi-circle-fill",style:be({color:n.value?T.value.light:T.value.dark}),"data-testid":T.name},null,12,xv),[[C,T.localizedName,void 0,{top:!0}]])]),_:1},8,["model-value"])])):A("",!0)])}}}),Nv=Be(Tv,[["__scopeId","data-v-2197e0a1"]]),Iv=q({__name:"ConfigureSubgraph",setup(e){const o=ut(),t=a(()=>{o.openPanel("subgraph")},"handleClick");return(s,r)=>{const n=Pe("tooltip");return ce((p(),O(X,{variant:"muted-textonly","aria-label":s.$t("commands.Comfy_Graph_EditSubgraphWidgets.label"),onClick:t},{default:M(()=>r[0]||(r[0]=[c("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["aria-label"])),[[n,{value:s.$t("commands.Comfy_Graph_EditSubgraphWidgets.label"),showDelay:1e3},void 0,{top:!0}]])}}}),Pv=Iv;function Kt(){const e=fe(),o=Ct(),t=Po(),s=Ki(),{id:r}=zu(),{selectedItems:n}=ze(e),l=y(()=>n.value.filter(N=>Mt(N))),i=y(()=>l.value.length!==1?null:o.fromLGraphNode(l.value[0])),d=y(()=>n.value.length>0),f=y(()=>n.value.length===1),m=y(()=>n.value.length>1),v=y(()=>f.value&&Mt(n.value[0])),h=y(()=>v.value&&n.value[0]?.isSubgraphNode?.()),g=y(()=>v.value&&Fi(n.value[0])),b=y(()=>n.value.some(N=>N instanceof Oo)),S=y(()=>{const N=ne().get("Comfy.Load3D.3DViewerEnable");return l.value.length===1&&l.value.some($i)&&N}),k=y(()=>g.value),w=y(()=>Sn(l.value).length>0),C=a(N=>N.length?{collapsed:N.some($=>$.flags?.collapsed),pinned:N.some($=>$.pinned),bypassed:N.some($=>$.mode===We.BYPASS)}:{collapsed:!1,pinned:!1,bypassed:!1},"computeSelectionStatesFromNodes"),T=y(()=>C(l.value));return{selectedItems:n,selectedNodes:l,nodeDef:i,showNodeHelp:a(()=>{const N=i.value;if(!N)return;const $=t.activeSidebarTabId===r,V=s.currentHelpNode;if($&&s.isHelpOpen&&V?.nodePath===N.nodePath){s.closeHelp(),t.toggleSidebarTab(r);return}$||t.toggleSidebarTab(r),s.openHelp(N)},"showNodeHelp"),hasAny3DNodeSelected:S,hasAnySelection:d,hasSingleSelection:f,hasMultipleSelection:m,isSingleNode:v,isSingleSubgraph:h,isSingleImageNode:g,hasSubgraphs:b,hasImageNode:k,hasOutputNodesSelected:w,selectedNodesStates:T,computeSelectionFlags:a(()=>C(l.value),"computeSelectionFlags")}}a(Kt,"useSelectionState");var $v=q({__name:"ConvertToSubgraphButton",setup(e){const o=Ce(),{isSingleSubgraph:t,hasAnySelection:s}=Kt(),r=t,n=y(()=>s.value&&!t.value);return(l,i)=>{const d=Pe("tooltip");return u(r)?ce((p(),O(X,{key:0,variant:"muted-textonly","aria-label":l.$t("commands.Comfy_Graph_UnpackSubgraph.label"),"data-testid":"convert-to-subgraph-button",onClick:i[0]||(i[0]=()=>u(o).execute("Comfy.Graph.UnpackSubgraph"))},{default:M(()=>i[2]||(i[2]=[c("i",{class:"icon-[lucide--expand] size-4"},null,-1)])),_:1},8,["aria-label"])),[[d,{value:l.$t("commands.Comfy_Graph_UnpackSubgraph.label"),showDelay:1e3},void 0,{top:!0}]]):n.value?ce((p(),O(X,{key:1,variant:"muted-textonly",size:"icon","aria-label":l.$t("commands.Comfy_Graph_ConvertToSubgraph.label"),"data-testid":"convert-to-subgraph-button",onClick:i[1]||(i[1]=()=>u(o).execute("Comfy.Graph.ConvertToSubgraph"))},{default:M(()=>i[3]||(i[3]=[c("i",{class:"icon-[lucide--shrink] size-4"},null,-1)])),_:1},8,["aria-label"])),[[d,{value:l.$t("commands.Comfy_Graph_ConvertToSubgraph.label"),showDelay:1e3},void 0,{top:!0}]]):A("",!0)}}}),Mv=$v,Dv=q({__name:"DeleteButton",setup(e){const o=Ce(),{selectedItems:t}=Kt(),s=y(()=>t.value.some(r=>r.removable!==!1));return(r,n)=>{const l=Pe("tooltip");return ce((p(),O(X,{variant:"muted-textonly","aria-label":r.$t("commands.Comfy_Canvas_DeleteSelectedItems.label"),"data-testid":"delete-button",onClick:n[0]||(n[0]=()=>u(o).execute("Comfy.Canvas.DeleteSelectedItems"))},{default:M(()=>n[1]||(n[1]=[c("i",{class:"icon-[lucide--trash-2]"},null,-1)])),_:1},8,["aria-label"])),[[tt,s.value],[l,{value:r.$t("commands.Comfy_Canvas_DeleteSelectedItems.label"),showDelay:1e3},void 0,{top:!0}]])}}}),Lv=Dv,Av=q({__name:"ExecuteButton",setup(e){const{t:o}=ue(),t=Ce(),s=fe(),{selectedNodes:r}=Kt(),n=s.getCanvas(),l=E(!1),i=y(()=>r.value.filter(Mt).filter(Zu));function d(){if(this.selected&&this.constructor.nodeData?.output_node&&l.value)return{color:"orange",lineWidth:2,padding:10}}a(d,"outputNodeStokeStyle");const f=a(()=>{l.value=!0;for(const h of i.value)h.strokeStyles.outputNode=d;n.setDirty(!0)},"handleMouseEnter"),m=a(()=>{l.value=!1,n.setDirty(!0)},"handleMouseLeave"),v=a(async()=>{await t.execute("Comfy.QueueSelectedOutputNodes")},"handleClick");return(h,g)=>{const b=Pe("tooltip");return ce((p(),O(X,{variant:"primary","aria-label":u(o)("selectionToolbox.executeButton.tooltip"),onMouseenter:g[0]||(g[0]=()=>f()),onMouseleave:g[1]||(g[1]=()=>m()),onClick:v},{default:M(()=>g[2]||(g[2]=[c("i",{class:"icon-[lucide--play]"},null,-1)])),_:1},8,["aria-label"])),[[b,{value:u(o)("selectionToolbox.executeButton.tooltip"),showDelay:1e3},void 0,{top:!0}]])}}}),Ev=Av,Vv=q({__name:"ExtensionCommandButton",props:{command:{}},setup(e){const o=Ce();return(t,s)=>{const r=Pe("tooltip");return ce((p(),O(X,{variant:"muted-textonly","aria-label":u(Ze)(`commands.${u(Pt)(t.command.id)}.label`,""),onClick:s[0]||(s[0]=()=>u(o).execute(t.command.id))},{default:M(()=>[c("i",{class:Q([typeof t.command.icon=="function"?t.command.icon():t.command.icon])},null,2)]),_:1},8,["aria-label"])),[[r,{value:u(Ze)(`commands.${u(Pt)(t.command.id)}.label`,"")||void 0,showDelay:1e3},void 0,{top:!0}]])}}}),Ov=Vv,Rv=q({__name:"InfoButton",setup(e){const o=ut(),t=a(()=>{Le()?.trackUiButtonClicked({button_id:"selection_toolbox_node_info_opened"}),o.openPanel("info")},"onInfoClick");return(s,r)=>{const n=Pe("tooltip");return ce((p(),O(X,{"data-testid":"info-button",variant:"muted-textonly","aria-label":s.$t("g.info"),onClick:t},{default:M(()=>r[0]||(r[0]=[c("i",{class:"icon-[lucide--info]"},null,-1)])),_:1},8,["aria-label"])),[[n,{value:s.$t("g.info"),showDelay:1e3},void 0,{top:!0}]])}}}),Wv=Rv,Bv=q({__name:"Load3DViewerButton",setup(e){const o=Ce(),t=a(()=>{o.execute("Comfy.3DViewer.Open3DViewer")},"open3DViewer");return(s,r)=>{const n=Pe("tooltip");return ce((p(),O(X,{variant:"muted-textonly","aria-label":s.$t("commands.Comfy_3DViewer_Open3DViewer.label"),onClick:t},{default:M(()=>r[0]||(r[0]=[c("i",{class:"icon-[lucide--pencil]"},null,-1)])),_:1},8,["aria-label"])),[[n,{value:s.$t("commands.Comfy_3DViewer_Open3DViewer.label"),showDelay:1e3},void 0,{top:!0}]])}}}),zv=Bv,Uv=q({__name:"MaskEditorButton",setup(e){const o=Ce(),{isSingleImageNode:t}=Kt(),s=a(()=>{o.execute("Comfy.MaskEditor.OpenMaskEditor")},"openMaskEditor");return(r,n)=>{const l=Pe("tooltip");return ce((p(),O(X,{variant:"muted-textonly","aria-label":r.$t("commands.Comfy_MaskEditor_OpenMaskEditor.label"),onClick:s},{default:M(()=>n[0]||(n[0]=[c("i",{class:"icon-[comfy--mask]"},null,-1)])),_:1},8,["aria-label"])),[[tt,u(t)],[l,{value:r.$t("commands.Comfy_MaskEditor_OpenMaskEditor.label"),showDelay:1e3},void 0,{top:!0}]])}}}),Fv=Uv,Gv=a(e=>e!=null&&typeof e=="object"&&"refresh"in e&&typeof e.refresh=="function","isRefreshableWidget");const Hv=a(()=>{const e=fe(),o=E([]);we(()=>{o.value=e.selectedItems.filter(Mt)});const t=y(()=>o.value.flatMap(n=>{if(!n.widgets)return[];const l=[];for(const i of n.widgets)Gv(i)&&l.push(i);return l})),s=y(()=>t.value.length>0);async function r(){s.value&&await Promise.all(t.value.map(n=>n.refresh()))}return a(r,"refreshSelected"),{isRefreshable:s,refreshSelected:r}},"useRefreshableSelection");var jv=q({__name:"RefreshSelectionButton",setup(e){const{t:o}=ue(),{isRefreshable:t,refreshSelected:s}=Hv();return(r,n)=>{const l=Pe("tooltip");return ce((p(),O(X,{variant:"muted-textonly","aria-label":u(o)("g.refreshNode"),"data-testid":"refresh-button",onClick:u(s)},{default:M(()=>n[0]||(n[0]=[c("i",{class:"icon-[lucide--refresh-cw]"},null,-1)])),_:1},8,["aria-label","onClick"])),[[tt,u(t)],[l,u(o)("g.refreshNode"),void 0,{top:!0}]])}}}),qv=jv,Kv=q({__name:"SaveToSubgraphLibrary",setup(e){const o=Ce(),t=fe(),s=y(()=>t.selectedItems?.length===1&&t.selectedItems[0]instanceof Oo);return(r,n)=>{const l=Pe("tooltip");return ce((p(),O(X,{variant:"muted-textonly","aria-label":r.$t("commands.Comfy_PublishSubgraph.label"),onClick:n[0]||(n[0]=()=>u(o).execute("Comfy.PublishSubgraph"))},{default:M(()=>n[1]||(n[1]=[c("i",{class:"icon-[lucide--book-open]"},null,-1)])),_:1},8,["aria-label"])),[[tt,s.value],[l,{value:r.$t("commands.Comfy_PublishSubgraph.label"),showDelay:1e3},void 0,{top:!0}]])}}}),Qv=Kv,_o=E(!1),Yv=E(0),Jv=E(0),ct=E(!1),zt=!1,pt=null;function Zo(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 Mt(s)?`N:${s.id}`:mo(s)?`G:${s.id}`:null}a(Zo,"buildSelectionSignature");function Xv(e){return pt?Zo(e)===pt:!1}a(Xv,"currentSelectionMatchesSignature");function Zv(e){const o=fe(),t=o.getCanvas(),{getSelectableItems:s}=gn(),{shouldRenderVueNodes:r}=la(),n=E({x:0,y:0}),l=E(!1),{left:i,top:d}=dn(t.canvas),f=y(()=>{const w=o.canvas?.state?.draggingItems??!1,C=r.value&&Ae.isDraggingVueNodes.value;return w||C}),m=a(()=>{const w=s();if(!w.size){l.value=!1;return}if(f.value){l.value=!1;return}l.value=!0;const C=[];for(const I of w)if(I.id!=null)if(r.value&&typeof I.id=="string"){const _=Ae.getNodeLayoutRef(I.id).value;_&&C.push([_.bounds.x,_.bounds.y,_.bounds.width,_.bounds.height])}else(I instanceof _t||I instanceof Ht)&&C.push([I.pos[0],I.pos[1]-ge.NODE_TITLE_HEIGHT,I.size[0],I.size[1]+ge.NODE_TITLE_HEIGHT]);const T=Ai(C);T&&(n.value={x:T.x+T.width/2,y:T.y-10},v())},"updateSelectionBounds"),v=a(()=>{if(!l.value)return;const{scale:w,offset:C}=t.ds,T=(n.value.x+C[0])*w+i.value,I=(n.value.y+C[1])*w+d.value;e.value&&(e.value.style.setProperty("--tb-x",`${T}px`),e.value.style.setProperty("--tb-y",`${I}px`))},"updateTransform"),{resume:h,pause:g}=io(v);we(()=>{l.value?h():g()}),ie(()=>o.getCanvas().state.selectionChanged,w=>{w&&((ct.value||pt)&&(ct.value=!1,zt=!1,_o.value?pt=Zo(o):pt=null),m(),o.getCanvas().state.selectionChanged=!1)},{immediate:!0}),ie(()=>_o.value,w=>{w?pt=Zo(o):o.canvas?.state?.draggingItems||(pt=null,ct.value&&(ct.value=!1))});const b=a(w=>{if(w){S();return}k()},"handleDragStateChange"),S=a(()=>{if(l.value=!1,!_o.value){ct.value=!1,zt=!1;return}if(Zo(o)!==pt&&(pt=null),_o.value=!1,zt=!0,ct.value=!!pt,ct.value){Yv.value++;return}zt=!1},"handleDragStart"),k=a(()=>{requestAnimationFrame(()=>{m();const w=Xv(o),C=zt&&l.value&&ct.value&&w;ct.value=C&&ct.value,zt=!1,C&&Jv.value++})},"handleDragEnd");return ie(f,b),kt(()=>{em()}),{visible:l}}a(Zv,"useSelectionToolboxPosition");function em(){_o.value=!1,ct.value=!1,zt=!1,pt=null}a(em,"resetMoreOptionsState");var tm=new Set(["Properties","Colors","Shapes","Title","Mode","Properties Panel","Copy (Clipspace)"]),om=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 us(e){return e.toLowerCase().replace(/^un/,"").trim()}a(us,"normalizeLabel");function am(e,o){const t=us(e),s={color:["color","colors"],shape:["shape","shapes"],pin:["pin","unpin"],delete:["remove","delete"],duplicate:["clone","duplicate"]};return o.some(r=>{if(!r.label)return!1;const n=us(r.label);if(n===t)return!0;for(const l of Object.values(s))if(l.includes(t)&&l.includes(n))return!0;return!1})}a(am,"isDuplicateItem");function nm(e){return om.has(e)}a(nm,"isCoreMenuItem");function sm(e){const o=new Map,t=[];for(const n of e){if(n.type==="divider"||n.type==="category"){t.push(n);continue}if(!n.label){t.push(n);continue}o.has(n.label)||o.set(n.label,[]),o.get(n.label).push(n)}const s=[],r=new Set;for(const n of e){if(n.type==="divider"||n.type==="category"||!n.label){if(t.includes(n)){s.push(n);const d=t.indexOf(n);t.splice(d,1)}continue}if(r.has(n.label))continue;r.add(n.label);const l=o.get(n.label);if(l.length===1){s.push(l[0]);continue}const i=l.find(d=>d.source==="vue");i?s.push(i):s.push(l[0])}return s}a(sm,"removeDuplicateMenuOptions");var rm=["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 Na(e){const o=rm.indexOf(e);return o===-1?999:o}a(Na,"getMenuItemOrder");function Xa(e){const o=sm(e),t=new Map,s=[];let r;for(const m of o)if(m.type!=="divider"&&m.type!=="category"){if((m.label==="Delete"||m.label==="Remove")&&!m.hasSubmenu){r=m;continue}m.label&&nm(m.label)?t.set(m.label,m):s.push(m)}const n=[],l=Array.from(t.keys());l.sort((m,v)=>Na(m)-Na(v));const i=a(m=>m<=2?1:m<=8?2:m<=15?3:m<=17?4:5,"getSectionNumber");let d=0;for(const m of l){const v=t.get(m),h=i(Na(m));d>0&&h!==d&&n.push({type:"divider"}),n.push(v),d=h}const f=[];return f.push(...n),s.length>0&&(f.push({type:"divider"}),f.push({label:"Extensions",type:"category",disabled:!0}),f.push(...s)),r&&(f.push({type:"divider"}),f.push(r)),f}a(Xa,"buildStructuredMenu");function lm(e,o,t=!0){const s=[];for(const r of e){if(r===null){s.push({type:"divider"});continue}if(!r.content||tm.has(r.content)||am(r.content,s))continue;const n={label:r.content,source:"litegraph"};if(r.disabled&&(n.disabled=!0),r.has_submenu){if(r.submenu?.options)n.hasSubmenu=!0,n.submenu=Tr(r.submenu.options);else if(r.callback&&!r.disabled){n.hasSubmenu=!0;const l=im(r,o);l?n.submenu=l:console.warn("[ContextMenuConverter] Failed to capture submenu for:",r.content)}}else r.callback&&!r.disabled&&(n.action=()=>{try{r.callback?.call(r,r.value,{},void 0,void 0,r)}catch(l){console.error("Error executing context menu callback:",l)}});s.push(n)}return t?Xa(s):s}a(lm,"convertContextMenuToOptions");function im(e,o){let t,s;const r=ge.ContextMenu;try{ge.ContextMenu=function(n,l){return t=n,s=l,{close:a(()=>{},"close"),root:document.createElement("div")}};try{const n=new MouseEvent("click",{bubbles:!0,cancelable:!0,clientX:0,clientY:0}),l={close:a(()=>{},"close"),root:document.createElement("div")};e.callback?.call(e,e.value,{},n,l,o)}catch(n){console.warn("[ContextMenuConverter] Error executing callback for:",e.content,n)}}finally{ge.ContextMenu=r}if(t)return Tr(t,s);console.warn("[ContextMenuConverter] No items captured for:",e.content)}a(im,"captureDynamicSubmenu");function Tr(e,o){const t=[];for(const s of e){if(s===null)continue;if(typeof s=="string"){const n={label:s,action:a(()=>{try{o?.callback&&o.callback.call(null,s,o,void 0,void 0,o.extra)}catch(l){console.error("Error executing string item callback:",l)}},"action")};t.push(n);continue}if(!s.content)continue;const r={label:um(s.content),action:a(()=>{try{s.callback?.call(s,s.value,{},void 0,void 0,s)}catch(n){console.error("Error executing submenu callback:",n)}},"action")};s.disabled&&(r.disabled=!0),t.push(r)}return t}a(Tr,"convertSubmenuToOptions");function um(e){return $t.sanitize(e,{ALLOWED_TAGS:[]}).trim()||e.replace(/<[^>]*>/g,"").trim()||e}a(um,"stripHtmlTags");function Tn(){const e=fe(),o=Ve();return{refreshCanvas:a(()=>{e.canvas?.emitBeforeChange(),e.canvas?.setDirty(!0,!0),e.canvas?.graph?.afterChange(),e.canvas?.emitAfterChange(),o.activeWorkflow?.changeTracker?.checkState()},"refreshCanvas")}}a(Tn,"useCanvasRefresh");function Nn(){const{t:e}=ue(),o=fe(),t=St(),s=Tn(),r=y(()=>t.completedActivePalette.light_theme),n=a(g=>Gt(g,{lightness:.5}),"toLightThemeColor"),l={name:"noColor",localizedName:e("color.noColor"),value:{dark:ge.NODE_DEFAULT_BGCOLOR,light:n(ge.NODE_DEFAULT_BGCOLOR)}},i=[l,...Object.entries(Ke.node_colors).map(([g,b])=>({name:g,localizedName:e(`color.${g}`),value:{dark:b.bgcolor,light:n(b.bgcolor)}}))],d=[{name:"default",localizedName:e("shape.default"),value:Et.ROUND},{name:"box",localizedName:e("shape.box"),value:Et.BOX},{name:"card",localizedName:e("shape.CARD"),value:Et.CARD}];return{colorOptions:i,shapeOptions:d,applyColor:a(g=>{const b=g?.name??l.name,S=b===l.name?null:Ke.node_colors[b];for(const k of o.selectedItems)Jo(k)&&k.setColorOption(S);s.refreshCanvas()},"applyColor"),applyShape:a(g=>{const b=Array.from(o.selectedItems).filter(S=>S instanceof _t);b.length!==0&&(b.forEach(S=>{S.shape=g.value}),s.refreshCanvas())},"applyShape"),getCurrentColor:a(()=>{const g=Array.from(o.selectedItems);if(g.length===0)return null;const b=g.find(k=>Jo(k));if(!b||!Jo(b))return null;const S=b.getColorOption()?.bgcolor??null;return i.find(k=>k.value.dark===S||k.value.light===S)??l},"getCurrentColor"),getCurrentShape:a(()=>{const g=Array.from(o.selectedItems).filter(S=>S instanceof _t);if(g.length===0)return null;const b=g[0].shape??Et.ROUND;return d.find(S=>S.value===b)??d[0]},"getCurrentShape"),isLightTheme:r}}a(Nn,"useNodeCustomization");function dm(){const{t:e}=ue(),o=fe(),t=Ve(),s=ne(),r=Tn(),{shapeOptions:n,colorOptions:l,isLightTheme:i}=Nn();return{getFitGroupToNodesOption:a(h=>({label:"Fit Group To Nodes",icon:"icon-[lucide--move-diagonal-2]",action:a(()=>{try{h.recomputeInsideNodes()}catch(b){console.warn("Failed to recompute group nodes:",b);return}const g=s.get("Comfy.GroupSelectedNodes.Padding");h.resizeTo(h.children,g),h.graph?.change(),o.canvas?.setDirty(!0,!0),t.activeWorkflow?.changeTracker?.checkState()},"action")}),"getFitGroupToNodesOption"),getGroupShapeOptions:a((h,g)=>({label:e("contextMenu.Shape"),icon:"icon-[lucide--box]",hasSubmenu:!0,submenu:n.map(b=>({label:b.localizedName,action:a(()=>{(h.nodes||[]).forEach(S=>S.shape=b.value),r.refreshCanvas(),g()},"action")}))}),"getGroupShapeOptions"),getGroupColorOptions:a((h,g)=>({label:e("contextMenu.Color"),icon:"icon-[lucide--palette]",hasSubmenu:!0,submenu:l.map(b=>({label:b.localizedName,color:i.value?b.value.light:b.value.dark,action:a(()=>{h.color=i.value?b.value.light:b.value.dark,r.refreshCanvas(),g()},"action")}))}),"getGroupColorOptions"),getGroupModeOptions:a((h,g)=>{const b=[];try{h.recomputeInsideNodes()}catch(C){return console.warn("Failed to recompute group nodes for mode options:",C),b}const S=h.nodes||[];if(!S.length)return b;let k=!0;for(let C=1;C<S.length;C++)if(S[C].mode!==S[0].mode){k=!1;break}const w=a((C,T)=>({label:e(`selectionToolbox.${C}`),icon:T===We.BYPASS?"icon-[lucide--ban]":T===We.NEVER?"icon-[lucide--zap-off]":"icon-[lucide--play]",action:a(()=>{S.forEach(I=>{I.mode=T}),o.canvas?.setDirty(!0,!0),h.graph?.change(),t.activeWorkflow?.changeTracker?.checkState(),g()},"action")}),"createModeAction");if(k)switch(S[0].mode){case We.ALWAYS:b.push(w("Set Group Nodes to Never",We.NEVER)),b.push(w("Bypass Group Nodes",We.BYPASS));break;case We.NEVER:b.push(w("Set Group Nodes to Always",We.ALWAYS)),b.push(w("Bypass Group Nodes",We.BYPASS));break;case We.BYPASS:b.push(w("Set Group Nodes to Always",We.ALWAYS)),b.push(w("Set Group Nodes to Never",We.NEVER));break;default:b.push(w("Set Group Nodes to Always",We.ALWAYS)),b.push(w("Set Group Nodes to Never",We.NEVER)),b.push(w("Bypass Group Nodes",We.BYPASS));break}else b.push(w("Set Group Nodes to Always",We.ALWAYS)),b.push(w("Set Group Nodes to Never",We.NEVER)),b.push(w("Bypass Group Nodes",We.BYPASS));return b},"getGroupModeOptions")}}a(dm,"useGroupMenuOptions");function cm(){const{t:e}=ue(),o=a(()=>{Ce().execute("Comfy.MaskEditor.OpenMaskEditor")},"openMaskEditor"),t=a(l=>{if(!l?.imgs?.length)return;const i=l.imgs[l.imageIndex??0];if(!i)return;const d=new URL(i.src);d.searchParams.delete("preview"),window.open(d.toString(),"_blank")},"openImage"),s=a(async l=>{if(!l?.imgs?.length)return;const i=l.imgs[l.imageIndex??0];if(!i)return;const d=document.createElement("canvas"),f=d.getContext("2d");if(f){d.width=i.naturalWidth,d.height=i.naturalHeight,f.drawImage(i,0,0);try{const m=await new Promise(v=>{d.toBlob(v,"image/png")});if(!m){console.warn("Failed to create image blob");return}if(!navigator.clipboard?.write){console.warn("Clipboard API not available");return}await navigator.clipboard.write([new ClipboardItem({"image/png":m})])}catch(m){console.error("Failed to copy image to clipboard:",m)}}},"copyImage"),r=a(l=>{if(!l?.imgs?.length)return;const i=l.imgs[l.imageIndex??0];if(i)try{const d=new URL(i.src);d.searchParams.delete("preview"),Io(d.toString())}catch(d){console.error("Failed to save image:",d)}},"saveImage");return{getImageMenuOptions:a(l=>l?.imgs?.length?[{label:e("contextMenu.Open in Mask Editor"),action:a(()=>o(),"action")},{label:e("contextMenu.Open Image"),icon:"icon-[lucide--external-link]",action:a(()=>t(l),"action")},{label:e("contextMenu.Copy Image"),icon:"icon-[lucide--copy]",action:a(()=>s(l),"action")},{label:e("contextMenu.Save Image"),icon:"icon-[lucide--download]",action:a(()=>r(l),"action")}]:[],"getImageMenuOptions")}}a(cm,"useImageMenuOptions");function pm(){const{getSelectedNodes:e,toggleSelectedNodesMode:o}=gn(),t=Ce(),s=Ve();return{adjustNodeSize:a(()=>{e().forEach(f=>{const m=f.computeSize();f.setSize([m[0],m[1]])}),Y.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"adjustNodeSize"),toggleNodeCollapse:a(()=>{e().forEach(f=>{f.collapse()}),Y.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"toggleNodeCollapse"),toggleNodePin:a(()=>{e().forEach(f=>{f.pin(!f.pinned)}),Y.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"toggleNodePin"),toggleNodeBypass:a(()=>{o(We.BYPASS),Y.canvas.setDirty(!0,!0)},"toggleNodeBypass"),runBranch:a(async()=>{Sn(e()).length!==0&&await t.execute("Comfy.QueueSelectedOutputNodes")},"runBranch")}}a(pm,"useSelectedNodeActions");function fm(){const{t:e}=ue(),{shapeOptions:o,applyShape:t,applyColor:s,colorOptions:r,isLightTheme:n}=Nn(),{adjustNodeSize:l,toggleNodeCollapse:i,toggleNodePin:d,toggleNodeBypass:f,runBranch:m}=pm(),v=y(()=>o.map(T=>({label:T.localizedName,action:a(()=>t(T),"action")}))),h=y(()=>r.map(T=>({label:T.localizedName,color:n.value?T.value.light:T.value.dark,action:a(()=>s(T.name==="noColor"?null:T),"action")})));return{getNodeInfoOption:a(T=>({label:e("contextMenu.Node Info"),icon:"icon-[lucide--info]",action:T}),"getNodeInfoOption"),getAdjustSizeOption:a(()=>({label:e("contextMenu.Adjust Size"),icon:"icon-[lucide--move-diagonal-2]",action:l}),"getAdjustSizeOption"),getNodeVisualOptions:a((T,I)=>[{label:T.collapsed?e("contextMenu.Expand Node"):e("contextMenu.Minimize Node"),icon:T.collapsed?"icon-[lucide--maximize-2]":"icon-[lucide--minimize-2]",action:a(()=>{i(),I()},"action")},{label:e("contextMenu.Shape"),icon:"icon-[lucide--box]",hasSubmenu:!0,submenu:v.value,action:a(()=>{},"action")},{label:e("contextMenu.Color"),icon:"icon-[lucide--palette]",hasSubmenu:!0,submenu:h.value,isColorPicker:!0,action:a(()=>{},"action")}],"getNodeVisualOptions"),getPinOption:a((T,I)=>({label:T.pinned?e("contextMenu.Unpin"):e("contextMenu.Pin"),icon:T.pinned?"icon-[lucide--pin-off]":"icon-[lucide--pin]",action:a(()=>{d(),I()},"action")}),"getPinOption"),getBypassOption:a((T,I)=>({label:T.bypassed?e("contextMenu.Remove Bypass"):e("contextMenu.Bypass"),icon:"icon-[lucide--redo-dot]",shortcut:"Ctrl+B",action:a(()=>{f(),I()},"action")}),"getBypassOption"),getRunBranchOption:a(()=>({label:e("contextMenu.Run Branch"),icon:"icon-[lucide--play]",action:m}),"getRunBranchOption"),colorSubmenu:h}}a(fm,"useNodeMenuOptions");function Nr(){const e=ne(),o=ya(),{hasMultipleSelection:t}=Kt(),s=y(()=>t.value);return{frameNodes:a(()=>{const{canvas:n}=Y;if(!n.selectedItems?.size)return;const l=new Ht,i=e.get("Comfy.GroupSelectedNodes.Padding");l.resizeTo(n.selectedItems,i),n.graph?.add(l),o.titleEditorTarget=l},"frameNodes"),canFrame:s}}a(Nr,"useFrameNodes");function vm(){const{t:e}=ue(),o=fe(),t=Tn(),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]"}],r=[{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:r,applyAlign:a(i=>{const d=Array.from(o.selectedItems).filter(m=>Mt(m));if(d.length===0)return;const f=ti(d,i.value);o.canvas?.repositionNodesVueMode(f),t.refreshCanvas()},"applyAlign"),applyDistribute:a(i=>{const d=Array.from(o.selectedItems).filter(m=>Mt(m));if(d.length<2)return;const f=ei(d,i.value);o.canvas?.repositionNodesVueMode(f),t.refreshCanvas()},"applyDistribute")}}a(vm,"useNodeArrangement");function mm(){const e=fe(),o=oo(),t=vt(),s=ya(),r=Ve();return{copySelection:a(()=>{const m=Y.canvas;if(!m.selectedItems||m.selectedItems.size===0){o.add({severity:"warn",summary:le("g.nothingToCopy"),detail:le("g.selectItemsToCopy"),life:3e3});return}m.copyToClipboard(),o.add({severity:"success",summary:le("g.copied"),detail:le("g.itemsCopiedToClipboard"),life:2e3})},"copySelection"),pasteSelection:a(()=>{Y.canvas.pasteFromClipboard({connectInputs:!1}),r.activeWorkflow?.changeTracker?.checkState()},"pasteSelection"),duplicateSelection:a(()=>{const m=Y.canvas;if(!m.selectedItems||m.selectedItems.size===0){o.add({severity:"warn",summary:le("g.nothingToDuplicate"),detail:le("g.selectItemsToDuplicate"),life:3e3});return}m.copyToClipboard(),m.selectedItems.clear(),e.updateSelectedItems(),m.pasteFromClipboard({connectInputs:!1}),r.activeWorkflow?.changeTracker?.checkState()},"duplicateSelection"),deleteSelection:a(()=>{const m=Y.canvas;if(!m.selectedItems||m.selectedItems.size===0){o.add({severity:"warn",summary:le("g.nothingToDelete"),detail:le("g.selectItemsToDelete"),life:3e3});return}m.deleteSelected(),m.setDirty(!0,!0),r.activeWorkflow?.changeTracker?.checkState()},"deleteSelection"),renameSelection:a(async()=>{const m=Array.from(e.selectedItems);if(m.length===1){const v=m[0];if(v instanceof _t){s.titleEditorTarget=v;return}const h="title"in v?v.title:"",g=await t.prompt({title:le("g.rename"),message:le("g.enterNewName"),defaultValue:h});if(g&&g!==h&&"title"in v){const b=v;b.title=g,Y.canvas.setDirty(!0,!0),r.activeWorkflow?.changeTracker?.checkState()}return}if(m.length>1){const v=await t.prompt({title:le("g.batchRename"),message:le("g.enterBaseName"),defaultValue:"Item"});v&&(m.forEach((h,g)=>{if("title"in h){const b=h;b.title=`${v} ${g+1}`}}),Y.canvas.setDirty(!0,!0),r.activeWorkflow?.changeTracker?.checkState());return}o.add({severity:"warn",summary:le("g.nothingToRename"),detail:le("g.selectItemsToRename"),life:3e3})},"renameSelection")}}a(mm,"useSelectionOperations");function gm(){const{t:e}=ue(),{copySelection:o,duplicateSelection:t,deleteSelection:s,renameSelection:r}=mm(),{alignOptions:n,distributeOptions:l,applyAlign:i,applyDistribute:d}=vm(),{convertToSubgraph:f,unpackSubgraph:m,addSubgraphToLibrary:v}=ur(),{frameNodes:h}=Nr(),g=y(()=>n.map(I=>({label:I.localizedName,icon:I.icon,action:a(()=>i(I),"action")}))),b=y(()=>l.map(I=>({label:I.localizedName,icon:I.icon,action:a(()=>d(I),"action")})));return{getBasicSelectionOptions:a(()=>[{label:e("contextMenu.Rename"),action:r},{label:e("contextMenu.Copy"),shortcut:"Ctrl+C",action:o},{label:e("contextMenu.Duplicate"),shortcut:"Ctrl+D",action:t}],"getBasicSelectionOptions"),getSubgraphOptions:a(({hasSubgraphs:I,hasMultipleSelection:_})=>{const N={label:e("contextMenu.Convert to Subgraph"),icon:"icon-[lucide--shrink]",action:f,badge:ds.NEW},$=[];return(!I||_)&&$.push(N),I&&$.push({label:e("contextMenu.Add Subgraph to Library"),icon:"icon-[lucide--folder-plus]",action:v},{label:e("contextMenu.Unpack Subgraph"),icon:"icon-[lucide--expand]",action:m}),$},"getSubgraphOptions"),getMultipleNodesOptions:a(()=>{const I=a(()=>{Ce().execute("Comfy.GroupNode.ConvertSelectedNodesToGroupNode")},"convertToGroupNodes");return[{label:e("contextMenu.Convert to Group Node"),icon:"icon-[lucide--group]",action:I,badge:ds.DEPRECATED},{label:e("g.frameNodes"),icon:"icon-[lucide--frame]",action:h}]},"getMultipleNodesOptions"),getDeleteOption:a(()=>({label:e("contextMenu.Delete"),icon:"icon-[lucide--trash-2]",shortcut:"Delete",action:s}),"getDeleteOption"),getAlignmentOptions:a(()=>[{label:e("contextMenu.Align Selected To"),icon:"icon-[lucide--align-start-horizontal]",hasSubmenu:!0,submenu:g.value,action:a(()=>{},"action")},{label:e("contextMenu.Distribute Nodes"),icon:"icon-[lucide--align-center-horizontal]",hasSubmenu:!0,submenu:b.value,action:a(()=>{},"action")}],"getAlignmentOptions"),alignSubmenu:g,distributeSubmenu:b}}a(gm,"useSelectionMenuOptions");let ds=(function(e){return e.NEW="new",e.DEPRECATED="deprecated",e})({});var Mo=null;function hm(e){Mo?.toggle&&Mo.toggle(e)}a(hm,"toggleNodeOptions");function ym(e){Mo?.show&&Mo.show(e)}a(ym,"showNodeOptions");function Za(e){Mo=e}a(Za,"registerNodeOptionsInstance");function bm(e){return e.map(o=>o.type==="divider"||o.type==="category"?o:{...o,source:"vue"})}a(bm,"markAsVueOptions");function wm(){const{selectedItems:e,selectedNodes:o,nodeDef:t,showNodeHelp:s,hasSubgraphs:r,hasImageNode:n,hasOutputNodesSelected:l,hasMultipleSelection:i,computeSelectionFlags:d}=Kt(),f=fe(),{getImageMenuOptions:m}=cm(),{getNodeInfoOption:v,getNodeVisualOptions:h,getPinOption:g,getBypassOption:b,getRunBranchOption:S}=fm(),{getFitGroupToNodesOption:k,getGroupColorOptions:w,getGroupModeOptions:C}=dm(),{getBasicSelectionOptions:T,getSubgraphOptions:I,getMultipleNodesOptions:_}=gm(),N=r,$=i,V=E(0),B=a(()=>{V.value++},"bump"),D=y(()=>{V.value;const U=d(),j=e.value.filter(mo),W=j.length===1&&o.value.length===0?j[0]:null,F=N.value,G=[];if(o.value.length===1&&!W&&f.canvas)try{const J=o.value[0],te=f.canvas.getNodeMenuOptions(J);G.push(...lm(te,J,!1))}catch(J){console.error("Error getting LiteGraph menu items:",J)}const z=[],K=T();if(z.push(...K),z.push({type:"divider"}),l.value){const J=S();z.push(J)}if(!W){const J=g(U,B),te=b(U,B);z.push(J),z.push(te)}if(W){const J=C(W,B);z.push(...J)}if(z.push({type:"divider"}),z.push(...I({hasSubgraphs:F,hasMultipleSelection:$.value})),$.value&&z.push(..._()),W)z.push(k(W));else{const J=h(U,B);J.length>0&&z.push(J[0])}if(z.push({type:"divider"}),t.value&&z.push(v(s)),W)z.push(w(W,B));else{const J=h(U,B);J.length>1&&z.push(J[1]),J.length>2&&z.push(J[2])}z.push({type:"divider"}),n.value&&o.value.length>0&&(z.push(...m(o.value[0])),z.push({type:"divider"}));const H=bm(z);return G.length>0?Xa([...G,...H]):Xa(H)});return{menuOptions:D,menuOptionsWithSubmenu:y(()=>D.value.filter(U=>U.hasSubmenu&&U.submenu)),bump:B,hasSubgraphs:N,registerNodeOptionsInstance:Za}}a(wm,"useMoreOptionsMenu");var _m=["title","onClick"],km={key:0,class:"icon-[lucide--check] size-4 flex-shrink-0"},Cm={key:1,class:"w-4 flex-shrink-0"},Sm=q({__name:"ColorPickerMenu",props:{option:{}},emits:["submenu-click"],setup(e,{expose:o,emit:t}){const s=e,r=t,{getCurrentShape:n}=Nn(),l=E();o({toggle:a((v,h)=>{l.value?.toggle(v,h)},"toggle")});const d=a(v=>{v.disabled||(r("submenu-click",v),l.value?.hide())},"handleSubmenuClick"),f=a(v=>{if(v.color)return!1;const h=n();return h?h.localizedName===v.label:!1},"isShapeSelected"),m=y(()=>s.option.submenu&&s.option.submenu.length>0&&s.option.submenu.every(v=>v.color&&!v.icon));return(v,h)=>(p(),O(u(wt),{ref_key:"popoverRef",ref:l,"auto-z-index":!0,"base-z-index":1100,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-60"},content:{class:["text-base-foreground rounded-lg","shadow-lg border border-base-background","bg-interface-panel-surface"]}}},{default:M(()=>[c("div",{class:Q(m.value?"flex flex-col gap-1 p-2":"flex flex-col p-2 min-w-40")},[(p(!0),x(Z,null,ye(v.option.submenu,g=>(p(),x("div",{key:g.label,class:Q(u(ae)("hover:bg-secondary-background-hover rounded cursor-pointer",m.value?"w-7 h-7 flex items-center justify-center":"flex items-center gap-2 px-3 py-1.5 text-sm",g.disabled?"cursor-not-allowed pointer-events-none text-node-icon-disabled":"hover:bg-secondary-background-hover")),title:g.label,onClick:a(b=>d(g),"onClick")},[g.color?(p(),x("div",{key:0,class:"size-5 rounded-full border border-border-default",style:be({backgroundColor:g.color})},null,4)):g.color?A("",!0):(p(),x(Z,{key:1},[f(g)?(p(),x("i",km)):(p(),x("div",Cm)),c("span",null,R(g.label),1)],64))],10,_m))),128))],2)]),_:1},512))}}),xm=Sm,Tm=["onClick"],Nm={class:"flex-1"},Im={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"},Pm={key:2,class:"icon-[lucide--chevron-right] size-4 opacity-60"},$m=q({__name:"NodeContextMenu",setup(e,{expose:o}){const t=E(),s=E(),r=E(!1),{menuOptions:n,bump:l}=wm(),i=fe(),d=E({x:0,y:0}),f=i.getCanvas(),{left:m,top:v}=dn(f.canvas);let h=0,g=0,b=0;const S=a(()=>{if(!r.value)return;const W=t.value?.container;if(!W)return;const{scale:F,offset:G}=f.ds;if(F===h&&G[0]===g&&G[1]===b)return;h=F,g=G[0],b=G[1];const z=(d.value.x+G[0])*F+m.value,K=(d.value.y+G[1])*F+v.value;W.style.left=`${z}px`,W.style.top=`${K}px`},"updateMenuPosition"),{resume:k,pause:w}=io(S,{immediate:!1});we(()=>{r.value?k():w()}),Oe(window,"touchstart",W=>{if(!r.value||!t.value)return;const F=W.target,G=t.value,z=G.container||G.$el;z&&!z.contains(F)&&$()},{passive:!0});const C=y(()=>n.value.find(W=>W.isColorPicker));function T(W){return!!W.isColorPicker}a(T,"isColorOption");function I(W){if(W.type==="divider")return{separator:!0};const F=T(W),G={label:W.label,icon:W.icon,disabled:W.disabled,shortcut:W.shortcut,isColorSubmenu:F,originalOption:W};return W.hasSubmenu&&W.submenu&&!F&&(G.items=W.submenu.map(z=>({label:z.label,icon:z.icon,disabled:z.disabled,command:a(()=>{z.action(),$()},"command")}))),!W.hasSubmenu&&W.action&&(G.command=()=>{W.action?.(),$()}),G}a(I,"convertToMenuItem");const _=y(()=>n.value.map(I));function N(W){l();const F=W.clientX-m.value,G=W.clientY-v.value,{scale:z,offset:K}=f.ds;d.value={x:F/z-K[0],y:G/z-K[1]},h=z,g=K[0],b=K[1],r.value=!0,t.value?.show(W)}a(N,"show");function $(){t.value?.hide()}a($,"hide");function V(W){r.value?$():N(W)}a(V,"toggle"),o({toggle:V,hide:$,isOpen:r,show:N});function B(W){W.stopPropagation(),W.preventDefault();const F=Array.from(W.currentTarget.children).find(G=>G.classList.contains("icon-[lucide--chevron-right]"));s.value?.toggle(W,F)}a(B,"showColorPopover");function D(W){W.action(),$()}a(D,"handleColorSelect");function U(){r.value=!0}a(U,"onMenuShow");function j(){r.value=!1}return a(j,"onMenuHide"),Re(()=>{Za({toggle:V,show:N,hide:$,isOpen:r})}),kt(()=>{Za(null)}),(W,F)=>(p(),x(Z,null,[L(u(As),{ref_key:"contextMenu",ref:t,model:_.value,class:"max-h-[80vh] md:max-h-none overflow-y-auto md:overflow-y-visible",onShow:U,onHide:j},{item:M(({item:G,props:z,hasSubmenu:K})=>[c("a",lt(z.action,{class:"flex items-center gap-2 px-3 py-1.5",onClick:a(H=>G.isColorSubmenu?B(H):void 0,"onClick")}),[G.icon?(p(),x("i",{key:0,class:Q([G.icon,"size-4"])},null,2)):A("",!0),c("span",Nm,R(G.label),1),G.shortcut?(p(),x("span",Im,R(G.shortcut),1)):A("",!0),K||G.isColorSubmenu?(p(),x("i",Pm)):A("",!0)],16,Tm)]),_:1},8,["model"]),C.value?(p(),O(xm,{ref_key:"colorPickerMenu",ref:s,key:"color-picker-menu",option:C.value,onSubmenuClick:D},null,8,["option"])):A("",!0)],64))}}),Mm=$m,Dm=q({__name:"FrameNodes",setup(e){const{frameNodes:o}=Nr();return(t,s)=>{const r=Pe("tooltip");return ce((p(),O(X,{variant:"muted-textonly","aria-label":t.$t("g.frameNodes"),onClick:u(o)},{default:M(()=>s[0]||(s[0]=[c("i",{class:"icon-[lucide--frame]"},null,-1)])),_:1},8,["aria-label","onClick"])),[[r,{value:t.$t("g.frameNodes"),showDelay:1e3},void 0,{top:!0}]])}}}),Lm=Dm,Am=q({__name:"NodeOptionsButton",setup(e){const o=a(t=>{hm(t)},"handleClick");return(t,s)=>{const r=Pe("tooltip");return ce((p(),O(X,{"data-testid":"more-options-button",variant:"muted-textonly","aria-label":t.$t("g.moreOptions"),onClick:o},{default:M(()=>s[0]||(s[0]=[c("i",{class:"icon-[lucide--more-vertical]"},null,-1)])),_:1},8,["aria-label"])),[[r,{value:t.$t("g.moreOptions"),showDelay:1e3},void 0,{top:!0}]])}}}),Em=Am,Vm={},Om={class:"h-6 w-px self-center bg-border-default"};function Rm(e,o){return p(),x("div",Om)}a(Rm,"_sfc_render$1");var cs=Be(Vm,[["render",Rm]]),Wm=q({__name:"SelectionToolbox",setup(e){const o=Ce(),t=fe(),s=qi(),r=go(),n=E(),{visible:l}=Zv(n),i=y(()=>{const W=new Set(t.selectedItems.map(F=>s.invokeExtensions("getSelectionToolboxCommands",F).flat()).flat());return Array.from(W).map(F=>o.getCommand(F)).filter(F=>F!==void 0)}),{hasAnySelection:d,hasMultipleSelection:f,isSingleNode:m,isSingleSubgraph:v,isSingleImageNode:h,hasAny3DNodeSelected:g,hasOutputNodesSelected:b,nodeDef:S}=Kt(),k=y(()=>!!S.value),w=y(()=>d.value),C=y(()=>d.value),T=y(()=>f.value),I=y(()=>v.value),_=y(()=>m.value||v.value||f.value),N=y(()=>g.value),$=y(()=>h.value),V=y(()=>d.value),B=y(()=>d.value),D=y(()=>b.value),U=y(()=>w.value||C.value||T.value||I.value),j=y(()=>_.value);return(W,F)=>(p(),x(Z,null,[c("div",{ref_key:"toolboxRef",ref:n,style:{transform:"translate(var(--tb-x), var(--tb-y))"},class:"pointer-events-none fixed top-0 left-0 z-40"},[L(ma,{name:"slide-up"},{default:M(()=>[u(l)?(p(),O(u(nn),{key:0,class:"selection-toolbox pointer-events-auto rounded-lg border border-interface-stroke bg-interface-panel-surface",pt:{header:"hidden",content:"p-1 h-10 flex flex-row gap-1"},onWheel:u(r).forwardEventToCanvas},{default:M(()=>[V.value?(p(),O(Lv,{key:0})):A("",!0),k.value&&U.value?(p(),O(cs,{key:1})):A("",!0),k.value?(p(),O(Wv,{key:2})):A("",!0),w.value?(p(),O(Nv,{key:3})):A("",!0),T.value?(p(),O(Lm,{key:4})):A("",!0),C.value?(p(),O(Mv,{key:5})):A("",!0),I.value?(p(),O(Pv,{key:6})):A("",!0),I.value?(p(),O(Qv,{key:7})):A("",!0),$.value?(p(),O(Fv,{key:8})):A("",!0),U.value&&j.value?(p(),O(cs,{key:9})):A("",!0),_.value?(p(),O(_v,{key:10})):A("",!0),B.value?(p(),O(qv,{key:11})):A("",!0),N.value?(p(),O(zv,{key:12})):A("",!0),(p(!0),x(Z,null,ye(i.value,G=>(p(),O(Ov,{key:G.id,command:G},null,8,["command"]))),128)),D.value?(p(),O(Ev,{key:13})):A("",!0),L(Em)]),_:1},8,["onWheel"])):A("",!0)]),_:1})],512),L(Mm)],64))}}),Bm=Be(Wm,[["__scopeId","data-v-8b7b6797"]]),zm=q({__name:"TitleEditor",setup(e){const o=ne(),t=E(!1),s=E(""),{style:r,updatePosition:n}=xr(),l=E({}),i=y(()=>({...r.value,...l.value})),d=ya(),f=fe(),m=E(!0),v=a(g=>{if(d.titleEditorTarget&&g?.trim()){const b=g.trim();d.titleEditorTarget.title=b;const S=d.titleEditorTarget;S instanceof _t&&S.isSubgraphNode?.()&&(S.subgraph.name=b),Y.canvas.setDirty(!0,!0)}t.value=!1,d.titleEditorTarget=null,f.canvas.allow_dragcanvas=m.value},"onEdit");return ie(()=>d.titleEditorTarget,g=>{if(g===null)return;s.value=g.title,t.value=!0;const b=f.canvas;m.value=b.allow_dragcanvas,b.allow_dragcanvas=!1;const S=b.ds.scale;if(g instanceof Ht){const k=g;n({pos:k.pos,size:[k.size[0],k.titleHeight]}),l.value={fontSize:`${k.font_size*S}px`}}else if(g instanceof _t){const k=g,[w,C]=k.getBounding();n({pos:[w,C],size:[k.width,ge.NODE_TITLE_HEIGHT]}),l.value={fontSize:`${12*S}px`}}}),Oe(document,"litegraph:canvas",a(g=>{if(g.detail.subType==="group-double-click"){if(!o.get("Comfy.Group.DoubleClickTitleToEdit"))return;const b=g.detail.group,[S,k]=b.pos;g.detail.originalEvent.canvasY-k<=b.titleHeight&&(d.titleEditorTarget=b)}else if(g.detail.subType==="node-double-click"){if(!o.get("Comfy.Node.DoubleClickTitleToEdit"))return;const b=g.detail.node,[S,k]=b.pos;g.detail.originalEvent.canvasY-k<=0&&(d.titleEditorTarget=b)}},"canvasEventHandler")),(g,b)=>t.value?(p(),x("div",{key:0,class:"group-title-editor node-title-editor",style:be(i.value)},[L(hn,{"is-editing":t.value,"model-value":s.value,onEdit:v},null,8,["is-editing","model-value"])],4)):A("",!0)}}),Um=Be(zm,[["__scopeId","data-v-aceb018c"]]);function Fm(){const e=fe();function o(t){const s=e.canvas?.graph?.groups??[];let r=null;for(const n of s){const l=n.boundingRect;if(!Ql(l,t.boundingRect))continue;if(!r){r=n;continue}const i=r.boundingRect,d=Gn(i,l),f=Gn(l,i);if(d&&!f){r=n;continue}l[2]*l[3]<i[2]*i[3]&&(r=n)}return r}return a(o,"findParentGroup"),{findParentGroup:o}}a(Fm,"useGraphHierarchy");var Gm={key:0,class:"p-3"},Hm=q({__name:"TabInfo",props:{nodes:{}},setup(e){const o=y(()=>e.nodes[0]),t=Ct(),s=y(()=>t.fromLGraphNode(o.value));return(r,n)=>s.value?(p(),x("div",Gm,[L(Ru,{node:s.value},null,8,["node"])])):A("",!0)}}),jm=Hm;const Ir=Symbol("getNodeParentGroup");function In(e,o){if(o.trim()==="")return e;const t=o.trim().toLowerCase().split(" ");return e.filter(({widget:s})=>{const r=s.label?.toLowerCase(),n=s.name.toLowerCase(),l=s.type.toLowerCase(),i=s.value?.toString().toLowerCase();return t.every(d=>n.includes(d)||r?.includes(d)||l?.includes(d)||i?.includes(d))})}a(In,"searchWidgets");function Pr(e,o){if(o.trim()==="")return e;const t=o.trim().toLowerCase().split(" ");return e.map(s=>{const{node:r}=s,n=r.getTitle().toLowerCase();return t.every(l=>n.includes(l))?{...s,keep:!0}:{...s,keep:!1,widgets:In(s.widgets,o)}}).filter(s=>s.keep||s.widgets.length>0)}a(Pr,"searchWidgetsAndNodes");function qm(e){const o={nodeToParentGroup:new Map,depth:0},{all:t,nodes:s,groups:r,others:n}=$r(e,o);return{all:Uo(t),nodes:Uo(s),groups:Uo(r),others:Uo(n),nodeToParentGroup:o.nodeToParentGroup}}a(qm,"flatAndCategorizeSelectedItems");function Km(e){const o=y(()=>qm(et(e)));return{flattedItems:y(()=>o.value.all),selectedNodes:y(()=>o.value.nodes),selectedGroups:y(()=>o.value.groups),selectedOthers:y(()=>o.value.others),nodeToParentGroup:y(()=>o.value.nodeToParentGroup)}}a(Km,"useFlatAndCategorizeSelectedItems");function $r(e,o){const t=[],s=[],r=[],n=[];if(o.depth>1e3)return{all:[],nodes:[],groups:[],others:[]};for(let l=0;l<e.length;l++){const i=e[l];if(mo(i)){t.push(i),r.push(i);const{all:d,nodes:f,groups:m,others:v}=$r(Array.from(i.children),{nodeToParentGroup:o.nodeToParentGroup,depth:o.depth+1,parentGroup:i});t.push(...d),s.push(...f),r.push(...m),n.push(...v)}else Mt(i)?(t.push(i),s.push(i),o.parentGroup&&o.nodeToParentGroup.set(i,o.parentGroup)):n.push(i)}return{all:t,nodes:s,groups:r,others:n}}a($r,"flatItems");function Uo(e){const o=new Set,t=[];for(const s of e)o.has(s)||(o.add(s),t.push(s));return t}a(Uo,"repeatItems");function Qm(e,o,t,s){if(vo(e)&&s?.length){const n=s[0].subgraph;if(!n)return console.error("Could not find subgraph for proxy widget"),!1;const l=n.getNodeById(parseInt(e._overlay.nodeId));if(!l)return console.error("Could not find interior node for proxy widget"),!1;const i=l.widgets?.find(f=>f.name===e._overlay.widgetName);if(!i)return console.error("Could not find original widget for proxy widget"),!1;i.label=t||void 0;const d=l.inputs?.find(f=>f.widget?.name===e._overlay.widgetName);d&&(d.label=t||void 0)}const r=o.inputs?.find(n=>n.widget?.name===e.name);return e.label=t||void 0,r&&(r.label=t||void 0),!0}a(Qm,"renameWidget");var Nt="0px",Ym=q({__name:"TransitionCollapse",props:{duration:{default:150},easingEnter:{default:"ease-in-out"},easingLeave:{default:"ease-in-out"},opacityClosed:{default:0},opacityOpened:{default:1},disable:{type:Boolean}},setup(e){const o=e,t=E(!1);Re(()=>t.value=!0);const s=y(()=>t.value&&!o.disable?o.duration:0);function r(m){return{height:m.style.height,width:m.style.width,position:m.style.position,visibility:m.style.visibility,overflow:m.style.overflow,paddingTop:m.style.paddingTop,paddingBottom:m.style.paddingBottom,borderTopWidth:m.style.borderTopWidth,borderBottomWidth:m.style.borderBottomWidth,marginTop:m.style.marginTop,marginBottom:m.style.marginBottom}}a(r,"getElementStyle");function n(m,v){const{width:h}=getComputedStyle(m);m.style.width=h,m.style.position="absolute",m.style.visibility="hidden",m.style.height="";const{height:g}=getComputedStyle(m);return m.style.width=v.width,m.style.position=v.position,m.style.visibility=v.visibility,m.style.height=Nt,m.style.overflow="hidden",v.height&&v.height!==Nt?v.height:g}a(n,"prepareElement");function l(m,v,h,g,b){const S=m.animate(g,b);m.style.height=v.height,S.onfinish=()=>{m.style.overflow=v.overflow,h()}}a(l,"animateTransition");function i(m,v){return[{height:Nt,opacity:o.opacityClosed,paddingTop:Nt,paddingBottom:Nt,borderTopWidth:Nt,borderBottomWidth:Nt,marginTop:Nt,marginBottom:Nt},{height:m,opacity:o.opacityOpened,paddingTop:v.paddingTop,paddingBottom:v.paddingBottom,borderTopWidth:v.borderTopWidth,borderBottomWidth:v.borderBottomWidth,marginTop:v.marginTop,marginBottom:v.marginBottom}]}a(i,"getEnterKeyframes");function d(m,v){const h=m,g=r(h);l(h,g,v,i(n(h,g),g),{duration:s.value,easing:o.easingEnter})}a(d,"enterTransition");function f(m,v){const h=m,g=r(h),{height:b}=getComputedStyle(h);h.style.height=b,h.style.overflow="hidden",l(h,g,v,i(b,g).reverse(),{duration:s.value,easing:o.easingLeave})}return a(f,"leaveTransition"),(m,v)=>(p(),O(ma,{css:!1,onEnter:d,onLeave:f},{default:M(()=>[_e(m.$slots,"default")]),_:3}))}}),Jm=Ym,Xm={class:"flex flex-col bg-comfy-menu-bg"},Zm={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl bg-inherit"},eg=["disabled"],tg={class:"text-sm font-semibold line-clamp-2 flex-1"},og={key:0,class:"pb-4"},ag=q({__name:"PropertiesAccordionItem",props:Eo({disabled:{type:Boolean},label:{},enableEmptyState:{type:Boolean},tooltip:{}},{collapse:{type:Boolean,default:!1},collapseModifiers:{}}),emits:["update:collapse"],setup(e){const o=e,t=Vo(e,"collapse"),s=y(()=>!t.value&&!o.disabled),r=y(()=>{if(o.tooltip)return{value:o.tooltip,showDelay:1e3}});return(n,l)=>{const i=Pe("tooltip");return p(),x("div",Xm,[c("div",Zm,[ce((p(),x("button",{type:"button",class:Q(u(ae)("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",!n.disabled&&"cursor-pointer")),disabled:n.disabled,onClick:l[0]||(l[0]=d=>t.value=!t.value)},[c("span",tg,[_e(n.$slots,"label",{},()=>[Ie(R(n.label),1)])]),c("i",{class:Q(u(ae)("text-muted-foreground group-hover:text-base-foreground group-has-[.subbutton:hover]:text-muted-foreground group-focus:text-base-foreground icon-[lucide--chevron-up] size-4 transition-all",t.value&&"-rotate-180",n.disabled&&"opacity-0"))},null,2)],10,eg)),[[i,r.value]])]),L(Jm,null,{default:M(()=>[s.value?(p(),x("div",og,[_e(n.$slots,"default")])):n.enableEmptyState&&n.disabled?_e(n.$slots,"empty",{key:1},()=>[c("div",null,R(n.$t("g.empty")),1)]):A("",!0)]),_:3})])}}}),no=ag,ng=["fixed","increment","decrement","randomize"];function sg(e){return ng.includes(e)}a(sg,"isControlOption");function ps(e){return sg(e)?e:"randomize"}a(ps,"normalizeControlOption");function rg(e){e.vueTrack||va((o,t)=>(e.callback=ro(e.callback,t),e.vueTrack=o,{get(){},set(){}}))}a(rg,"widgetWithVueTrack");function lg(e){return rg(e),e.vueTrack(),e.value}a(lg,"useReactiveWidgetValue");function ig(e){const o=e.linkedWidgets?.find(t=>t.name=="control_after_generate");if(o)return{value:ps(o.value),update:a(t=>o.value=ps(t),"update")}}a(ig,"getControlWidget");function ug(e,o){if(!(!e.isSubgraphNode()||!vo(o)))return e.subgraph.getNodeById(o._overlay.nodeId)?.type}a(ug,"getNodeType");function Mr(e,o){const t=Ct();return{value:lg(o),controlWidget:ig(o),spec:t.getInputSpecForWidget(e,o.name),nodeType:ug(e,o),borderStyle:o.promoted?"ring ring-component-node-widget-promoted":o.advanced?"ring ring-component-node-widget-advanced":void 0,label:o.label,options:o.options}}a(Mr,"getSharedWidgetEnhancements");var dg=a(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 cg(e,o){return function(t){try{const s=Mr(e,t),r=o.get(t.name),n=a(l=>{const i=dg(l);t.value=i??void 0,t.callback?.(i,Y.canvas,e),e.widgets?.forEach(d=>d.triggerDraw?.())},"callback");return{name:t.name,type:t.type,...s,callback:n,hasLayoutSize:typeof t.computeLayoutSize=="function",isDOMWidget:xo(t),slotMetadata:r}}catch{return{name:t.name||"unknown",type:t.type||"text",value:void 0}}}}a(cg,"safeWidgetMapper");function ea(e){const o=e.graph&&"id"in e.graph&&e.graph!==e.graph.rootGraph?String(e.graph.id):null,t=new Map,s=Bn(e.widgets??[]);Object.defineProperty(e,"widgets",{get(){return s},set(f){s.splice(0,s.length,...f)}});const r=Bn(e.inputs??[]);Object.defineProperty(e,"inputs",{get(){return r},set(f){r.splice(0,r.length,...f)}});const n=vl(()=>(e.inputs?.forEach((f,m)=>{f?.widget?.name&&t.set(f.widget.name,{index:m,linked:f.link!=null})}),e.widgets?.map(cg(e,t))??[])),l=e.type||e.constructor?.comfyClass||e.constructor?.title||e.constructor?.name||"Unknown",i=e.constructor?.nodeData?.api_node??!1,d=e.badges;return{id:String(e.id),title:typeof e.title=="string"?e.title:"",type:l,mode:e.mode||0,titleMode:e.title_mode,selected:e.selected||!1,executing:!1,subgraphId:o,apiNode:i,badges:d,hasErrors:!!e.has_errors,widgets:n,inputs:r,outputs:e.outputs?[...e.outputs]:void 0,flags:e.flags?{...e.flags}:void 0,color:e.color||void 0,bgcolor:e.bgcolor||void 0,resizable:e.resizable,shape:e.shape}}a(ea,"extractVueNodeData");function pg(e){const{createNode:o,deleteNode:t,setSource:s}=ha(),r=Es(new Map),n=new Map,l=a(b=>{const S=n.get(b),k=r.get(b);if(!S||!k)return;const w=new Map;S.inputs?.forEach((C,T)=>{C?.widget?.name&&w.set(C.widget.name,{index:T,linked:C.link!=null})});for(const C of k.widgets??[]){const T=w.get(C.name);T&&(C.slotMetadata=T)}},"refreshNodeSlots"),i=a(b=>n.get(b),"getNode"),d=a(()=>{if(!e?._nodes)return;const b=new Set(e._nodes.map(S=>String(S.id)));for(const S of Array.from(r.keys()))b.has(S)||(n.delete(S),r.delete(S));e._nodes.forEach(S=>{const k=String(S.id);n.set(k,S),r.set(k,ea(S))})},"syncWithGraph"),f=a((b,S)=>{const k=String(b.id);n.set(k,b),r.set(k,ea(b));const w=a(()=>{const C={x:b.pos[0],y:b.pos[1]},T={width:b.size[0],height:b.size[1]};s(No.Canvas),o(k,{position:C,size:T,zIndex:b.order||0,visible:!0})},"initializeVueNodeLayout");window.app?.configuringGraph?b.onAfterGraphConfigured=ro(b.onAfterGraphConfigured,()=>{r.set(k,ea(b)),w()}):w(),S&&S(b)},"handleNodeAdded"),m=a((b,S)=>{const k=String(b.id);s(No.Canvas),t(k),n.delete(k),r.delete(k),S&&S(b)},"handleNodeRemoved"),v=a((b,S,k)=>()=>{e.onNodeAdded=b||void 0,e.onNodeRemoved=S||void 0,e.onTrigger=k||void 0,n.clear(),r.clear()},"createCleanupFunction"),g=a(()=>{const b=e.onNodeAdded,S=e.onNodeRemoved,k=e.onTrigger;e.onNodeAdded=C=>{f(C,b)},e.onNodeRemoved=C=>{m(C,S)};const w={"node:property:changed":a(C=>{const T=String(C.nodeId),I=r.get(T);if(I)switch(C.property){case"title":r.set(T,{...I,title:String(C.newValue)});break;case"flags.collapsed":r.set(T,{...I,flags:{...I.flags,collapsed:!!C.newValue}});break;case"flags.pinned":r.set(T,{...I,flags:{...I.flags,pinned:!!C.newValue}});break;case"mode":r.set(T,{...I,mode:typeof C.newValue=="number"?C.newValue:0});break;case"color":r.set(T,{...I,color:typeof C.newValue=="string"?C.newValue:void 0});break;case"bgcolor":r.set(T,{...I,bgcolor:typeof C.newValue=="string"?C.newValue:void 0});break;case"shape":r.set(T,{...I,shape:typeof C.newValue=="number"?C.newValue:void 0})}},"node:property:changed"),"node:slot-errors:changed":a(C=>{l(String(C.nodeId))},"node:slot-errors:changed"),"node:slot-links:changed":a(C=>{C.slotType===ni.INPUT&&l(String(C.nodeId))},"node:slot-links:changed")};return e.onTrigger=C=>{switch(C.type){case"node:property:changed":w["node:property:changed"](C);break;case"node:slot-errors:changed":w["node:slot-errors:changed"](C);break;case"node:slot-links:changed":w["node:slot-links:changed"](C);break}k?.(C)},d(),v(b||void 0,S||void 0,k||void 0)},"setupEventListeners")();return e._nodes&&e._nodes.length>0&&e._nodes.forEach(b=>{e.onNodeAdded&&e.onNodeAdded(b)}),{vueNodeData:r,getNode:i,cleanup:g}}a(pg,"useGraphNodeManager");var fg=["onClick"],vg=["onClick"],mg=["onClick"],gg=q({__name:"WidgetActions",props:Eo({widget:{},node:{},parents:{default:a(()=>[],"default")},isShownOnParents:{type:Boolean,default:!1}},{label:{required:!0},labelModifiers:{}}),emits:["update:label"],setup(e){const o=Vo(e,"label"),t=fe(),s=yn(),r=vt(),{t:n}=ue(),l=y(()=>e.parents?.length>0),i=y(()=>e.isShownOnParents&&l.value?e.parents[0]:e.node),d=y(()=>s.isFavorited(i.value,e.widget.name));async function f(){const b=await r.prompt({title:n("g.rename"),message:n("g.enterNewName")+":",defaultValue:e.widget.label,placeholder:e.widget.name});b!==null&&(o.value=b)}a(f,"handleRename");function m(){if(e.parents?.length){if(vo(e.widget)){const b=e.parents[0].subgraph.getNodeById(parseInt(e.widget._overlay.nodeId));if(!b){console.error("Could not find interior node for proxy widget");return}const S=b.widgets?.find(k=>k.name===e.widget._overlay.widgetName);if(!S){console.error("Could not find original widget for proxy widget");return}qa(b,S,e.parents)}else qa(e.node,e.widget,e.parents);t.canvas?.setDirty(!0,!0)}}a(m,"handleHideInput");function v(){e.parents?.length&&(ar(e.node,e.widget,e.parents),t.canvas?.setDirty(!0,!0))}a(v,"handleShowInput");function h(){s.toggleFavorite(i.value,e.widget.name)}a(h,"handleToggleFavorite");const g=ae(["border-none bg-transparent","w-full flex items-center gap-2 rounded px-3 py-2 text-sm","cursor-pointer transition-all hover:bg-secondary-background-hover active:scale-95"]);return(b,S)=>(p(),O(Xs,{"is-vertical":"",class:"text-muted-foreground bg-transparent hover:text-base-foreground hover:bg-secondary-background-hover active:scale-95 transition-all"},{default:M(({close:k})=>[c("button",{class:Q(u(g)),onClick:a(()=>{f(),k()},"onClick")},[S[0]||(S[0]=c("i",{class:"icon-[lucide--edit] size-4"},null,-1)),c("span",null,R(u(n)("g.rename")),1)],10,fg),l.value?(p(),x("button",{key:0,class:Q(u(g)),onClick:a(()=>{b.isShownOnParents?m():v(),k()},"onClick")},[b.isShownOnParents?(p(),x(Z,{key:0},[S[1]||(S[1]=c("i",{class:"icon-[lucide--eye-off] size-4"},null,-1)),c("span",null,R(u(n)("rightSidePanel.hideInput")),1)],64)):(p(),x(Z,{key:1},[S[2]||(S[2]=c("i",{class:"icon-[lucide--eye] size-4"},null,-1)),c("span",null,R(u(n)("rightSidePanel.showInput")),1)],64))],10,vg)):A("",!0),c("button",{class:Q(u(g)),onClick:a(()=>{h(),k()},"onClick")},[d.value?(p(),x(Z,{key:0},[S[3]||(S[3]=c("i",{class:"icon-[lucide--star]"},null,-1)),c("span",null,R(u(n)("rightSidePanel.removeFavorite")),1)],64)):(p(),x(Z,{key:1},[S[4]||(S[4]=c("i",{class:"icon-[lucide--star]"},null,-1)),c("span",null,R(u(n)("rightSidePanel.addFavorite")),1)],64))],10,mg)]),_:1}))}}),hg=gg,yg={key:1,class:"text-xs text-muted-foreground flex-1 p-0 my-0 mx-1 truncate text-right min-w-10"},bg={class:"flex items-center gap-1 shrink-0 pointer-events-auto"},wg={key:0,class:"relative z-2 pointer-events-none"},_g=q({__name:"WidgetItem",props:{widget:{},node:{},isDraggable:{type:Boolean,default:!1},hiddenFavoriteIndicator:{type:Boolean,default:!1},showNodeName:{type:Boolean,default:!1},parents:{default:a(()=>[],"default")},isShownOnParents:{type:Boolean,default:!1}},setup(e){const o=fe(),t=yn(),s=E(!1),r=y(()=>Gi(e.widget.type,e.widget.name)||wi),n=y(()=>{const v=Mr(e.node,e.widget);return{...e.widget,...v}}),l=y(()=>{let v=e.node;if(vo(e.widget)){const{graph:h,nodeId:g}=e.widget._overlay;v=Jl(h,g)}return v?v.title||v.type:null}),i=y(()=>e.parents?.length>0),d=y(()=>e.isShownOnParents&&i.value?e.parents[0]:e.node),f=y({get:a(()=>(e.widget.vueTrack?.(),e.widget.value),"get"),set:a(v=>{e.widget.value=v,e.widget.callback?.(v),o.canvas?.setDirty(!0,!0)},"set")}),m=va((v,h)=>({get(){return v(),e.widget.label||e.widget.name},set(g){s.value=!1;const b=g.trim();Qm(e.widget,e.node,b,e.parents)&&(o.canvas?.setDirty(!0),h())}}));return(v,h)=>(p(),x("div",{class:Q(u(ae)("widget-item col-span-full grid grid-cols-subgrid rounded-lg group",v.isDraggable&&"draggable-item !will-change-auto drag-handle cursor-grab bg-comfy-menu-bg [&.is-draggable]:cursor-grabbing outline-comfy-menu-bg [&.is-draggable]:outline-4 [&.is-draggable]:outline-offset-0 [&.is-draggable]:opacity-70"))},[c("div",{class:Q(u(ae)("min-h-8 flex items-center justify-between gap-1 mb-1.5 min-w-0",v.isDraggable&&"pointer-events-none"))},[v.widget.name?(p(),O(hn,{key:0,"model-value":m.value,"is-editing":s.value,"input-attrs":{placeholder:v.widget.name},class:"text-sm leading-8 p-0 m-0 truncate pointer-events-auto cursor-text",onEdit:h[0]||(h[0]=g=>m.value=g),onCancel:h[1]||(h[1]=g=>s.value=!1),onClick:h[2]||(h[2]=g=>s.value=!0)},null,8,["model-value","is-editing","input-attrs"])):A("",!0),(v.showNodeName||i.value)&&l.value?(p(),x("span",yg,R(l.value),1)):A("",!0),c("div",bg,[L(hg,{label:m.value,"onUpdate:label":h[3]||(h[3]=g=>m.value=g),widget:v.widget,node:v.node,parents:v.parents,"is-shown-on-parents":v.isShownOnParents},null,8,["label","widget","node","parents","is-shown-on-parents"])])],2),!v.hiddenFavoriteIndicator&&u(t).isFavorited(d.value,v.widget.name)?(p(),x("div",wg,h[5]||(h[5]=[c("i",{class:"absolute -right-1 -top-1 pi pi-star-fill text-xs text-muted-foreground pointer-events-none"},null,-1)]))):A("",!0),(p(),O(so(r.value),{modelValue:f.value,"onUpdate:modelValue":h[4]||(h[4]=g=>f.value=g),widget:n.value,"node-id":String(v.node.id),"node-type":v.node.type,class:Q(u(ae)("col-span-1",u(Cu)(v.widget.type)&&"min-h-36"))},null,8,["modelValue","widget","node-id","node-type","class"])),c("div",{class:Q(u(ae)("pointer-events-none mt-1.5 mx-auto max-w-40 w-1/2 h-1 rounded-lg bg-transparent transition-colors duration-150","group-hover:bg-interface-stroke group-[.is-draggable]:bg-component-node-widget-background-highlighted",!v.isDraggable&&"opacity-0"))},null,2)],2))}}),kg=_g,Cg={class:"flex items-center gap-2 flex-1 min-w-0"},Sg={class:"flex-1 flex items-center gap-2 min-w-0"},xg={class:"truncate"},Tg=["title"],Ng=q({__name:"SectionWidgets",props:Eo({label:{},parents:{default:a(()=>[],"default")},node:{},widgets:{},showLocateButton:{type:Boolean,default:!1},isDraggable:{type:Boolean,default:!1},hiddenFavoriteIndicator:{type:Boolean,default:!1},showNodeName:{type:Boolean,default:!1},enableEmptyState:{type:Boolean,default:!1},tooltip:{}},{collapse:{type:Boolean,default:!1},collapseModifiers:{}}),emits:["update:collapse"],setup(e,{expose:o}){const t=Vo(e,"collapse"),s=E(),r=E(),n=Je(e.widgets);we(()=>n.value=e.widgets),fa("hideLayoutField",!0);const l=fe(),{t:i}=ue(),d=Ml(Ir,null);function f(k,w){if(!e.parents.length)return!1;const C=ra(e.parents[0].properties.proxyWidgets);return vo(w)?C.some(([T,I])=>w._overlay.nodeId==T&&w._overlay.widgetName===I):C.some(([T,I])=>k.id==T&&w.name===I)}a(f,"isWidgetShownOnParents");const m=y(()=>n.value.length===0),v=y(()=>e.label??(e.node?e.node.title:i("rightSidePanel.inputs"))),h=y(()=>{if(e.node)return e.node;if(m.value)return null;const k=n.value[0].node.id;return n.value.every(({node:w})=>w.id===k)?n.value[0].node:null}),g=y(()=>!h.value||!d?null:d(h.value)),b=y(()=>e.showLocateButton&&h.value!==null);function S(){if(!h.value||!l.canvas)return;const k=l.canvas.graph?.getNodeById(h.value.id);k&&l.canvas.animateToBounds(k.boundingRect)}return a(S,"handleLocateNode"),o({widgetsContainer:s,rootElement:r}),(k,w)=>(p(),x("div",{ref_key:"rootElement",ref:r},[L(no,{collapse:t.value,"onUpdate:collapse":w[0]||(w[0]=C=>t.value=C),"enable-empty-state":k.enableEmptyState,disabled:m.value,tooltip:k.tooltip},{label:M(()=>[c("div",Cg,[c("span",Sg,[c("span",xg,[_e(k.$slots,"label",{},()=>[Ie(R(v.value),1)])]),g.value?(p(),x("span",{key:0,class:"text-xs text-muted-foreground truncate flex-1 text-right min-w-11",title:g.value.title},R(g.value.title),9,Tg)):A("",!0)]),b.value?(p(),O(X,{key:0,variant:"textonly",size:"icon-sm",class:"subbutton shrink-0 mr-3 size-8 cursor-pointer text-muted-foreground hover:text-base-foreground",title:u(i)("rightSidePanel.locateNode"),"aria-label":u(i)("rightSidePanel.locateNode"),onClick:ke(S,["stop"])},{default:M(()=>w[1]||(w[1]=[c("i",{class:"icon-[lucide--locate] size-4"},null,-1)])),_:1},8,["title","aria-label"])):A("",!0)])]),empty:M(()=>[_e(k.$slots,"empty")]),default:M(()=>[c("div",{ref_key:"widgetsContainer",ref:s,class:"space-y-2 rounded-lg px-4 pt-1 relative"},[L(ln,{name:"list-scale"},{default:M(()=>[(p(!0),x(Z,null,ye(n.value,({widget:C,node:T})=>(p(),O(kg,{key:`${T.id}-${C.name}-${C.type}`,widget:C,node:T,"is-draggable":k.isDraggable,"hidden-favorite-indicator":k.hiddenFavoriteIndicator,"show-node-name":k.showNodeName,parents:k.parents,"is-shown-on-parents":f(T,C)},null,8,["widget","node","is-draggable","hidden-favorite-indicator","show-node-name","parents","is-shown-on-parents"]))),128))]),_:1})],512)]),_:3},8,["collapse","enable-empty-state","disabled","tooltip"])],512))}}),Do=Ng,Ig={class:"px-4 pt-1 pb-4 flex gap-2 border-b border-interface-stroke"},Pg={class:"text-sm text-muted-foreground px-4 text-center py-10"},$g=q({__name:"TabGlobalParameters",setup(e){const o=yn(),{searchQuery:t}=ze(ut()),{t:s}=ue(),r=E(void 0),n=E(),l=E(!1),i=y(()=>o.validFavoritedWidgets),d=y(()=>i.value.length===0?s("rightSidePanel.favoritesNone"):s("rightSidePanel.favorites")),f=Je(i.value);async function m(g){l.value=g.trim().length>0,f.value=In(i.value,g)}a(m,"searcher");const v=Ws();function h(){if(!v.value)return;r.value?.dispose();const g=n.value?.widgetsContainer;l.value||!g?.children?.length||(r.value=new mn(g,".draggable-item"),r.value.applyNewItemsOrder=function(){const b=[];let S=-1;this.getAllItems().forEach((T,I)=>{if(T===this.draggableItem){S=I;return}if(!this.isItemToggled(T)){b[I]=T;return}const _=this.isItemAbove(T)?I+1:I-1;b[_]=T});for(let T=0;T<this.getAllItems().length;T++)typeof b[T]>"u"&&(b[T]=this.draggableItem);const k=b.indexOf(this.draggableItem),w=[...f.value],[C]=w.splice(S,1);w.splice(k,0,C),f.value=w,o.reorderFavorites(w)})}return a(h,"setDraggableState"),Ut(f,()=>{h()},{debounce:100}),Re(()=>{h()}),rt(()=>{r.value?.dispose()}),(g,b)=>(p(),x(Z,null,[c("div",Ig,[L(zo,{modelValue:u(t),"onUpdate:modelValue":b[0]||(b[0]=S=>qe(t)?t.value=S:null),searcher:m,"update-key":i.value},null,8,["modelValue","update-key"])]),L(Do,{ref_key:"sectionWidgetsRef",ref:n,label:d.value,widgets:f.value,"is-draggable":!l.value,"hidden-favorite-indicator":"","show-node-name":"","enable-empty-state":"",class:"border-b border-interface-stroke","onUpdate:collapse":b[1]||(b[1]=S=>Ue(h))},{empty:M(()=>[c("div",Pg,R(l.value?u(s)("rightSidePanel.noneSearchDesc"):u(s)("rightSidePanel.favoritesNoneDesc")),1)]),_:1},8,["label","widgets","is-draggable"])],64))}}),Mg=$g,Dg={class:"px-4 pt-1 pb-4 flex gap-2 border-b border-interface-stroke"},Lg={key:0,class:"text-sm text-muted-foreground px-4 text-center pt-5 pb-15"},Ag=q({__name:"TabNodes",setup(e){const o=fe(),t=Ve(),s=y(()=>(t.activeWorkflow?.path,o.canvas?.graph?.nodes??[])),{searchQuery:r}=ze(ut()),n=y(()=>s.value.map(f=>{const{widgets:m=[]}=f;return{widgets:m.filter(v=>!(v.options?.canvasOnly||v.options?.hidden)).map(v=>({node:f,widget:v})),node:f}})),l=Je(n.value),i=E(!1);async function d(f){const m=n.value,v=l;i.value=f.trim()!=="",v.value=Pr(m,f)}return a(d,"searcher"),(f,m)=>(p(),x(Z,null,[c("div",Dg,[L(zo,{modelValue:u(r),"onUpdate:modelValue":m[0]||(m[0]=v=>qe(r)?r.value=v:null),searcher:d,"update-key":n.value},null,8,["modelValue","update-key"])]),L(ln,{tag:"div",name:"list-scale",class:"relative"},{default:M(()=>[i.value&&l.value.length===0?(p(),x("div",Lg,R(f.$t("rightSidePanel.noneSearchDesc")),1)):A("",!0),(p(!0),x(Z,null,ye(l.value,({node:v,widgets:h})=>(p(),O(Do,{key:v.id,node:v,widgets:h,collapse:!i.value,tooltip:i.value||h.length?"":f.$t("rightSidePanel.inputsNoneTooltip"),"show-locate-button":"",class:"border-b border-interface-stroke"},null,8,["node","widgets","collapse","tooltip"]))),128))]),_:1})],64))}}),Eg=Ag,Vg={class:"px-4 pt-1 pb-4 flex gap-2 border-b border-interface-stroke"},Og={key:0,class:"text-sm text-muted-foreground px-4 py-10 text-center"},Rg=q({__name:"TabNormalInputs",props:{mustShowNodeTitle:{type:Boolean},nodes:{}},setup(e){const{t:o}=ue(),{searchQuery:t}=ze(ut()),s=y(()=>e.nodes.map(f=>{const{widgets:m=[]}=f;return{widgets:m.filter(v=>!(v.options?.canvasOnly||v.options?.hidden)).map(v=>({node:f,widget:v})),node:f}})),r=y(()=>s.value.length>1),n=Je(s.value),l=E(!1);async function i(f){const m=s.value,v=n;l.value=f.trim()!=="",v.value=Pr(m,f)}a(i,"searcher");const d=y(()=>{const f=s.value;return!e.mustShowNodeTitle&&f.length===1?f[0].widgets.length!==0?o("rightSidePanel.inputs"):o("rightSidePanel.inputsNone"):void 0});return(f,m)=>(p(),x(Z,null,[c("div",Vg,[L(zo,{modelValue:u(t),"onUpdate:modelValue":m[0]||(m[0]=v=>qe(t)?t.value=v:null),searcher:i,"update-key":s.value},null,8,["modelValue","update-key"])]),L(ln,{tag:"div",name:"list-scale",class:"relative"},{default:M(()=>[n.value.length===0?(p(),x("div",Og,R(l.value?u(o)("rightSidePanel.noneSearchDesc"):u(o)("rightSidePanel.nodesNoneDesc")),1)):A("",!0),(p(!0),x(Z,null,ye(n.value,({widgets:v,node:h})=>(p(),O(Do,{key:h.id,node:h,label:d.value,widgets:v,collapse:r.value&&!l.value,"show-locate-button":r.value,tooltip:l.value||v.length?"":u(o)("rightSidePanel.inputsNoneTooltip"),class:"border-b border-interface-stroke"},null,8,["node","label","widgets","collapse","show-locate-button","tooltip"]))),128))]),_:1})],64))}}),Wg=Rg,Bg={class:"px-4 pt-1 pb-4 flex gap-2 border-b border-interface-stroke"},zg={class:"text-sm text-muted-foreground px-4 text-center pt-5 pb-15"},Ug=q({__name:"TabSubgraphInputs",props:{node:{}},setup(e){const{t:o}=ue(),t=fe(),s=ut(),{focusedSection:r,searchQuery:n}=ze(s),l=E(!0),i=E(void 0),d=Qe("sectionWidgetsRef"),f=Qe("advancedInputsSectionRef"),m=va((I,_)=>({get(){return I(),ra(e.node.properties.proxyWidgets)},set(N){_(),N&&(e.node.properties.proxyWidgets=N)}}));ie(r,async I=>{if(I==="advanced-inputs"){l.value=!1,s.clearFocusedSection(),await Ue(),await new Promise(N=>setTimeout(N,300));const _=f.value?.rootElement;_&&_.scrollIntoView({behavior:"smooth",block:"start"})}},{immediate:!0});const v=y(()=>{const I=m.value,{widgets:_=[]}=e.node,N=[];for(const[$,V]of I){const B=_.find(D=>vo(D)?String(D._overlay.nodeId)===$&&D._overlay.widgetName===V:D.name===V);B&&N.push({node:e.node,widget:B})}return N}),h=y(()=>{const I=e.node.subgraph.nodes,_=ra(e.node.properties.proxyWidgets);return I.flatMap(N=>{const{widgets:$=[]}=N;return $.filter(V=>!V.computedDisabled).map(V=>({node:N,widget:V}))}).filter(({node:N,widget:$})=>!_.some(([V,B])=>N.id==V&&$.name===B))}),g=y(()=>[e.node]),b=Je(v.value),S=E(!1);async function k(I){S.value=I.trim()!=="",b.value=In(v.value,I)}a(k,"searcher");const w=Ws();function C(){if(!w.value)return;i.value?.dispose();const I=d.value?.widgetsContainer;S.value||!I?.children?.length||(i.value=new mn(I,".draggable-item"),i.value.applyNewItemsOrder=function(){const _=[];let N=-1;if(this.getAllItems().forEach((D,U)=>{if(D===this.draggableItem){N=U;return}if(!this.isItemToggled(D)){_[U]=D;return}const j=this.isItemAbove(D)?U+1:U-1;_[j]=D}),N===-1){console.error("[TabSubgraphInputs] draggableItem not found in items");return}for(let D=0;D<this.getAllItems().length;D++)typeof _[D]>"u"&&(_[D]=this.draggableItem);const $=_.indexOf(this.draggableItem),V=m.value,[B]=V.splice(N,1);V.splice($,0,B),m.value=V,t.canvas?.setDirty(!0,!0),Ha(m)})}a(C,"setDraggableState"),Ut(b,()=>C(),{debounce:100}),Re(()=>C()),rt(()=>i.value?.dispose());const T=y(()=>b.value.length!==0?o("rightSidePanel.inputs"):o("rightSidePanel.inputsNone"));return(I,_)=>(p(),x(Z,null,[c("div",Bg,[L(zo,{modelValue:u(n),"onUpdate:modelValue":_[0]||(_[0]=N=>qe(n)?n.value=N:null),searcher:k,"update-key":v.value},null,8,["modelValue","update-key"])]),L(Do,{ref_key:"sectionWidgetsRef",ref:d,node:I.node,label:T.value,parents:g.value,widgets:b.value,"is-draggable":!S.value,"enable-empty-state":S.value,tooltip:S.value||b.value.length?"":u(o)("rightSidePanel.inputsNoneTooltip"),class:"border-b border-interface-stroke","onUpdate:collapse":_[1]||(_[1]=N=>Ue(C))},{empty:M(()=>[c("div",zg,R(u(o)("rightSidePanel.noneSearchDesc")),1)]),_:1},8,["node","label","parents","widgets","is-draggable","enable-empty-state","tooltip"]),h.value.length>0?(p(),O(Do,{key:0,ref_key:"advancedInputsSectionRef",ref:f,collapse:l.value,"onUpdate:collapse":_[2]||(_[2]=N=>l.value=N),label:u(o)("rightSidePanel.advancedInputs"),parents:g.value,widgets:h.value,"show-node-name":"",class:"border-b border-interface-stroke"},null,8,["collapse","label","parents","widgets"])):A("",!0)],64))}}),Fg=Ug,Gg=q({__name:"LayoutField",props:{label:{},tooltip:{},singleline:{type:Boolean}},setup(e){return(o,t)=>{const s=Pe("tooltip");return p(),x("div",{class:Q(u(ae)("flex gap-2",o.singleline?"items-center justify-between":"flex-col"))},[ce((p(),x("span",{class:Q(u(ae)("text-sm text-muted-foreground truncate",o.tooltip?"cursor-help":"",o.singleline?"flex-1":""))},[Ie(R(o.label),1)],2)),[[s,o.tooltip?{value:o.tooltip,showDelay:300}:null,void 0,{left:!0}]]),_e(o.$slots,"default")],2)}}}),Lo=Gg,Hg=q({__name:"FieldSwitch",props:Eo({label:{},tooltip:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const o=Vo(e,"modelValue");return(t,s)=>(p(),O(Lo,{singleline:"",label:t.label,tooltip:t.tooltip},{default:M(()=>[L(u(Ps),{modelValue:o.value,"onUpdate:modelValue":s[0]||(s[0]=r=>o.value=r),class:"transition-transform active:scale-90"},null,8,["modelValue"])]),_:1},8,["label","tooltip"]))}}),eo=Hg,jg={class:"flex flex-col border-t border-interface-stroke"},qg={class:"space-y-4 px-4 py-3"},Kg={class:"space-y-4 px-4 py-3"},Qg={class:"space-y-4 px-4 py-3"},Yg={class:"flex items-center justify-center p-4 border-b border-interface-stroke"},Ia=1,Pa=100,Fo=1,Jg=q({__name:"TabGlobalSettings",setup(e){const{t:o}=ue(),t=ne(),s=vt(),r=E(!1),n=y({get:a(()=>t.get("Comfy.Canvas.SelectionToolbox"),"get"),set:a(k=>t.set("Comfy.Canvas.SelectionToolbox",k),"set")}),l=y({get:a(()=>t.get("Comfy.VueNodes.Enabled"),"get"),set:a(k=>t.set("Comfy.VueNodes.Enabled",k),"set")}),i=y({get:a(()=>t.get("Comfy.SnapToGrid.GridSize"),"get"),set:a(k=>t.set("Comfy.SnapToGrid.GridSize",k),"set")}),d=y({get:a(()=>t.get("pysssss.SnapToGrid"),"get"),set:a(k=>t.set("pysssss.SnapToGrid",k),"set")}),f=y({get:a(()=>t.get("Comfy.Graph.LinkMarkers"),"get"),set:a(k=>t.set("Comfy.Graph.LinkMarkers",k),"set")}),m=y(()=>[{value:Ft.None,label:o("g.none")},{value:Ft.Circle,label:o("shape.circle")},{value:Ft.Arrow,label:o("shape.arrow")}]);let v=ge.SPLINE_LINK;const h=y({get:a(()=>t.get("Comfy.LinkRenderMode")!==ge.HIDDEN_LINK,"get"),set:a(k=>{let w=t.get("Comfy.LinkRenderMode");w!==ge.HIDDEN_LINK&&(v=w);const C=k?v:ge.HIDDEN_LINK;t.set("Comfy.LinkRenderMode",C)},"set")});function g(k){k?.length&&(i.value=k[0])}a(g,"updateGridSpacingFromSlider");function b(k){if(typeof k!="number")return;const w=Math.min(Pa,Math.max(Ia,k));i.value=Math.round(w/Fo)*Fo}a(b,"updateGridSpacingFromInput");function S(){s.showSettingsDialog()}return a(S,"openFullSettings"),(k,w)=>(p(),x("div",jg,[L(no,{class:"border-b border-interface-stroke"},{label:M(()=>[Ie(R(u(o)("rightSidePanel.globalSettings.nodes")),1)]),default:M(()=>[c("div",qg,[L(eo,{modelValue:r.value,"onUpdate:modelValue":w[0]||(w[0]=C=>r.value=C),label:u(o)("rightSidePanel.globalSettings.showAdvanced"),tooltip:u(o)("rightSidePanel.globalSettings.showAdvancedTooltip")},null,8,["modelValue","label","tooltip"]),L(eo,{modelValue:n.value,"onUpdate:modelValue":w[1]||(w[1]=C=>n.value=C),label:u(o)("rightSidePanel.globalSettings.showToolbox")},null,8,["modelValue","label"]),L(eo,{modelValue:l.value,"onUpdate:modelValue":w[2]||(w[2]=C=>l.value=C),label:u(o)("rightSidePanel.globalSettings.nodes2")},null,8,["modelValue","label"])])]),_:1}),L(no,{class:"border-b border-interface-stroke"},{label:M(()=>[Ie(R(u(o)("rightSidePanel.globalSettings.canvas")),1)]),default:M(()=>[c("div",Kg,[L(Lo,{label:u(o)("rightSidePanel.globalSettings.gridSpacing")},{default:M(()=>[c("div",{class:Q(u(ae)(u(ia),"flex items-center gap-2 pl-3 pr-2"))},[L(Fu,{"model-value":[i.value],class:"flex-grow text-xs",min:Ia,max:Pa,step:Fo,"onUpdate:modelValue":g},null,8,["model-value"]),L(u(Ds),{"model-value":i.value,class:"w-16",size:"small","pt:pc-input-text:root":"min-w-[4ch] bg-transparent border-none text-center truncate",min:Ia,max:Pa,step:Fo,"allow-empty":!1,"onUpdate:modelValue":b},null,8,["model-value"])],2)]),_:1},8,["label"]),L(eo,{modelValue:d.value,"onUpdate:modelValue":w[3]||(w[3]=C=>d.value=C),label:u(o)("rightSidePanel.globalSettings.snapNodesToGrid")},null,8,["modelValue","label"])])]),_:1}),L(no,{class:"border-b border-interface-stroke"},{label:M(()=>[Ie(R(u(o)("rightSidePanel.globalSettings.connectionLinks")),1)]),default:M(()=>[c("div",Qg,[L(Lo,{label:u(o)("rightSidePanel.globalSettings.linkShape")},{default:M(()=>[L(u(al),{modelValue:f.value,"onUpdate:modelValue":w[4]||(w[4]=C=>f.value=C),options:m.value,"aria-label":u(o)("rightSidePanel.globalSettings.linkShape"),class:Q(u(ae)(u(ia),"w-full text-xs")),size:"small",pt:{option:"text-xs",dropdown:"w-8",label:u(ae)("truncate min-w-[4ch]",k.$slots.default&&"mr-5"),overlay:"w-fit min-w-full"},"data-capture-wheel":"true","option-label":"label","option-value":"value"},null,8,["modelValue","options","aria-label","class","pt"])]),_:1},8,["label"]),L(eo,{modelValue:h.value,"onUpdate:modelValue":w[5]||(w[5]=C=>h.value=C),label:u(o)("rightSidePanel.globalSettings.showConnectedLinks")},null,8,["modelValue","label"])])]),_:1}),c("div",Yg,[L(X,{variant:"muted-textonly",size:"sm",class:"gap-2 text-sm",onClick:S},{default:M(()=>[Ie(R(u(o)("rightSidePanel.globalSettings.viewAllSettings"))+" ",1),w[6]||(w[6]=c("i",{class:"icon-[lucide--settings] size-4"},null,-1))]),_:1})])]))}}),Xg=Jg,Zg={class:"bg-secondary-background border-none rounded-lg p-1 grid grid-cols-5 gap-1 justify-items-center"},eh=["onClick"],th=["data-testid"],oh=q({__name:"SetNodeColor",props:{nodes:{}},emits:["changed"],setup(e,{emit:o}){const t=o,{t:s}=ue(),r=St(),n=Object.entries(Ke.node_colors);function l(v){return{dark:Gt(v,{lightness:.3}),light:Gt(v,{lightness:.4}),ringDark:Gt(v,{lightness:.5}),ringLight:Gt(v,{lightness:.1})}}a(l,"getColorValue");const i={name:"noColor",localizedName:a(()=>s("color.noColor"),"localizedName"),value:l(ge.NODE_DEFAULT_BGCOLOR)},d=[i,...n.map(([v,h])=>({name:v,localizedName:a(()=>s(`color.${v}`),"localizedName"),value:l(h.bgcolor)}))],f=y(()=>r.completedActivePalette.light_theme),m=y({get(){if(e.nodes.length===0)return null;const v=e.nodes.map(g=>g.getColorOption());let h=v[0];return v.every(g=>g===h)||(h=!1),h===!1?null:h==null||!h.bgcolor&&!h.color?i.name:n.find(([g,b])=>b.bgcolor===h.bgcolor&&b.color===h.color)?.[0]??null},set(v){if(v===null)return;const h=v===i.name?null:Ke.node_colors[v];for(const g of e.nodes)g.setColorOption(h);t("changed")}});return(v,h)=>{const g=Pe("tooltip");return p(),O(Lo,{label:u(s)("rightSidePanel.color")},{default:M(()=>[c("div",Zg,[(p(),x(Z,null,ye(d,b=>c("button",{key:b.name,class:Q(u(ae)("size-8 rounded-lg bg-transparent border-0 outline-0 ring-0 text-left flex justify-center items-center cursor-pointer",b.name===m.value?"bg-interface-menu-component-surface-selected":"hover:bg-interface-menu-component-surface-selected")),onClick:a(S=>m.value=b.name,"onClick")},[ce(c("div",{class:Q(u(ae)("size-4 rounded-full ring-2 ring-gray-500/10")),style:be({backgroundColor:f.value?b.value.light:b.value.dark,"--tw-ring-color":b.name===m.value?f.value?b.value.ringLight:b.value.ringDark:void 0}),"data-testid":b.name},null,14,th),[[g,b.localizedName(),void 0,{top:!0}]])],10,eh)),64))])]),_:1},8,["label"])}}}),ah=oh,nh=["disabled","onClick"],sh=q({__name:"FormSelectButton",props:{modelValue:{},options:{},optionLabel:{default:"label"},optionValue:{default:"value"},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:o}){const t=e,s=o,r=a((d,f)=>typeof d!="object"?d:d[t.optionValue]??d.value??d.name??d.label??f,"getOptionValue"),n=a(d=>typeof d=="object"&&d!==null?d[t.optionLabel]??d.label??d.name??d.value??String(d):String(d),"getOptionLabel"),l=a(d=>{const f=r(t.options[d],d);return String(f)===String(t.modelValue??"")},"isSelected"),i=a(d=>{t.disabled||s("update:modelValue",r(t.options[d],d))},"handleSelect");return(d,f)=>(p(),x("div",{class:Q(u(ae)(u(ia),"p-1 inline-flex justify-center items-center gap-1"))},[(p(!0),x(Z,null,ye(d.options,(m,v)=>(p(),x("button",{key:r(m,v),class:Q(u(ae)("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":l(v)&&!d.disabled,"hover:bg-interface-menu-component-surface-selected/50":!l(v)&&!d.disabled,"opacity-50 cursor-not-allowed":d.disabled,"cursor-pointer":!d.disabled},l(v)&&!d.disabled?"text-text-primary":"text-text-secondary")),disabled:d.disabled,onClick:a(h=>i(v),"onClick")},R(n(m)),11,nh))),128))],2))}}),rh=sh,lh=q({__name:"SetNodeState",props:{nodes:{}},emits:["changed"],setup(e,{emit:o}){const t=o,{t:s}=ue(),r=y({get(){let n=null;return e.nodes.length===0?null:(e.nodes.length>1?(n=e.nodes[0].mode,e.nodes.every(l=>l.mode===n)||(n=null)):n=e.nodes[0].mode,n)},set(n){e.nodes.forEach(l=>{l.mode=n}),t("changed")}});return(n,l)=>(p(),O(Lo,{label:u(s)("rightSidePanel.nodeState")},{default:M(()=>[L(rh,{modelValue:r.value,"onUpdate:modelValue":l[0]||(l[0]=i=>r.value=i),class:"w-full",options:[{label:u(s)("rightSidePanel.normal"),value:u(We).ALWAYS},{label:u(s)("rightSidePanel.bypass"),value:u(We).BYPASS},{label:u(s)("rightSidePanel.mute"),value:u(We).NEVER}]},null,8,["modelValue","options"])]),_:1},8,["label"]))}}),ih=lh,uh=q({__name:"SetPinned",props:{nodes:{}},emits:["changed"],setup(e,{emit:o}){const t=o,{t:s}=ue(),r=y({get(){return e.nodes.some(n=>n.pinned)},set(n){e.nodes.forEach(l=>l.pin(n)),t("changed")}});return(n,l)=>(p(),O(eo,{modelValue:r.value,"onUpdate:modelValue":l[0]||(l[0]=i=>r.value=i),label:u(s)("rightSidePanel.pinned")},null,8,["modelValue","label"]))}}),dh=uh,ch={class:"space-y-4 text-sm text-muted-foreground"},ph=q({__name:"NodeSettings",props:{nodes:{}},setup(e){const o=e,t=Je([]);we(()=>{o.nodes?t.value=o.nodes:t.value=[]});const s=fe();function r(l){return!l.some(i=>mo(i))}a(r,"isNodes");function n(){t.value=t.value.slice(),s.canvas?.setDirty(!0,!0)}return a(n,"handleChanged"),(l,i)=>(p(),x("div",ch,[r(t.value)?(p(),O(ih,{key:0,nodes:t.value,onChanged:n},null,8,["nodes"])):A("",!0),L(ah,{nodes:t.value,onChanged:n},null,8,["nodes"]),L(dh,{nodes:t.value,onChanged:n},null,8,["nodes"])]))}}),$a=ph,fh={key:0,class:"p-4"},vh={key:1,class:"border-t border-interface-stroke"},mh=q({__name:"TabSettings",props:{nodes:{}},setup(e){const o=e,t=y(()=>o.nodes.filter(i=>Mt(i))),s=y(()=>o.nodes.filter(i=>mo(i))),r=y(()=>s.value.length>0),n=y(()=>t.value.length>0),l=y(()=>n.value&&!r.value);return(i,d)=>l.value?(p(),x("div",fh,[L($a,{nodes:t.value},null,8,["nodes"])])):(p(),x("div",vh,[n.value?(p(),O(no,{key:0,class:"border-b border-interface-stroke",label:i.$t("rightSidePanel.nodes")},{default:M(()=>[L($a,{nodes:t.value,class:"p-4"},null,8,["nodes"])]),_:1},8,["label"])):A("",!0),r.value?(p(),O(no,{key:1,class:"border-b border-interface-stroke",label:i.$t("rightSidePanel.groups")},{default:M(()=>[L($a,{nodes:s.value,class:"p-4"},null,8,["nodes"])]),_:1},8,["label"])):A("",!0)]))}}),gh=mh,hh={class:"pointer-events-none flex-1"},yh={class:"text-xs text-text-secondary line-clamp-1"},bh={class:"text-sm line-clamp-1 leading-8"},wh={key:0,class:"size-4 pointer-events-none icon-[lucide--grip-vertical]"},_h=q({__name:"SubgraphNodeWidget",props:{nodeTitle:{},widgetName:{},isDraggable:{type:Boolean},isPhysical:{type:Boolean},class:{type:[Array,Object,String,Number,null,Boolean]}},emits:["toggleVisibility"],setup(e){const o=e;function t(){return o.isPhysical?"icon-[lucide--link]":o.isDraggable?"icon-[lucide--eye]":"icon-[lucide--eye-off]"}return a(t,"getIcon"),(s,r)=>(p(),x("div",{class:Q(u(ae)("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))},[c("div",hh,[c("div",yh,R(s.nodeTitle),1),c("div",bh,R(s.widgetName),1)]),L(X,{variant:"muted-textonly",size:"sm",disabled:s.isPhysical,onClick:r[0]||(r[0]=ke(n=>s.$emit("toggleVisibility"),["stop"]))},{default:M(()=>[c("i",{class:Q(t())},null,2)]),_:1},8,["disabled"]),s.isDraggable?(p(),x("div",wh)):A("",!0)],2))}}),fs=_h,kh={key:0,class:"subgraph-edit-section flex h-full flex-col"},Ch={class:"px-4 pb-4 pt-1 flex gap-2 border-b border-interface-stroke"},Sh={class:"flex-1"},xh={key:0,class:"text-sm text-muted-foreground px-4 py-10 text-center"},Th={key:1,class:"flex flex-col border-b border-interface-stroke"},Nh={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl min-h-12 px-4"},Ih={class:"text-sm font-semibold uppercase line-clamp-1"},Ph={key:2,class:"flex flex-col border-b border-interface-stroke"},$h={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl min-h-12 px-4"},Mh={class:"text-sm font-semibold uppercase line-clamp-1"},Dh={class:"pb-2 px-2 space-y-0.5 mt-0.5"},Lh={key:3,class:"flex justify-center border-b border-interface-stroke py-4"},Ah=q({__name:"SubgraphEditor",setup(e){const o=fe(),{searchQuery:t}=ze(ut()),s=E(void 0),r=E(),n=va((_,N)=>({get(){_();const $=l.value;return $?ra($.properties.proxyWidgets):[]},set($){N();const V=l.value;if($){if(!V){console.error("Attempted to toggle widgets with no node selected");return}V.properties.proxyWidgets=$}}})),l=y(()=>{const _=o.selectedItems[0];if(_ instanceof Oo)return _}),i=y({get(){if(!l.value)return[];const _=l.value;function N([$,V]){if($==="-1"){const U=_.widgets.find(j=>j.name===V);return U?[[{id:-1,title:"(Linked)",type:""},U]]:[]}const B=_.subgraph._nodes_by_id[$];if(!B?.widgets)return[];const D=B.widgets.find(U=>U.name===V);return D?[[B,D]]:[]}return a(N,"mapWidgets"),n.value.flatMap(N)},set(_){if(!l.value){console.error("Attempted to toggle widgets with no node selected");return}n.value=_.map(_a)}}),d=y(()=>{const _=l.value;if(!_)return[];const{updatePreviews:N}=Ro(),$=_.subgraph.nodes;for(const V of $)V.updateComputedDisabled(),N(V);return $.flatMap(b).filter(([V,B])=>!B.computedDisabled)}),f=y(()=>{if(!l.value)return[];const _=n.value;return d.value.filter(N=>!_.some(Oi(N)))}),m=y(()=>{const _=t.value.toLowerCase();return _?f.value.filter(([N,$])=>N.title.toLowerCase().includes(_)||$.name.toLowerCase().includes(_)):f.value}),v=y(()=>l.value?m.value.filter(Mu):[]),h=y(()=>{const _=t.value.toLowerCase();return _?i.value.filter(([N,$])=>N.title.toLowerCase().includes(_)||$.name.toLowerCase().includes(_)):i.value});function g(_){return`${_[0].id}: ${_[1].name}`}a(g,"toKey");function b(_){return _.widgets?_.widgets.map(N=>[_,N]):[]}a(b,"nodeWidgets");function S([_,N]){const $=l.value;if(!$)return[];qa(_,N,[$]),Ha(n)}a(S,"demote");function k([_,N]){const $=l.value;if(!$)return[];ar(_,N,[$]),Ha(n)}a(k,"promote");function w(){if(!l.value)return;const _=n.value,N=m.value.map(_a);_.push(...N),n.value=_}a(w,"showAll");function C(){l.value&&(n.value=n.value.filter(_=>!h.value.some(au(_))||_[0]==="-1"))}a(C,"hideAll");function T(){if(!l.value)return;const _=n.value,N=v.value.map(_a);_.push(...N),n.value=_}a(T,"showRecommended");function I(){s.value?.dispose(),!(t.value||!r.value?.children?.length)&&(s.value=new mn(r.value,".draggable-item"),s.value.applyNewItemsOrder=function(){const _=[];let N=-1;this.getAllItems().forEach((D,U)=>{if(D===this.draggableItem){N=U;return}if(!this.isItemToggled(D)){_[U]=D;return}const j=this.isItemAbove(D)?U+1:U-1;_[j]=D});for(let D=0;D<this.getAllItems().length;D++)typeof _[D]>"u"&&(_[D]=this.draggableItem);const $=_.indexOf(this.draggableItem),V=i.value,[B]=V.splice(N,1);V.splice($,0,B),i.value=V})}return a(I,"setDraggableState"),ie(h,()=>{I()}),Re(()=>{I(),l.value&&su(l.value)}),rt(()=>{s.value?.dispose()}),(_,N)=>l.value?(p(),x("div",kh,[c("div",Ch,[L(zo,{modelValue:u(t),"onUpdate:modelValue":N[0]||(N[0]=$=>qe(t)?t.value=$:null)},null,8,["modelValue"])]),c("div",Sh,[u(t)&&h.value.length===0&&m.value.length===0?(p(),x("div",xh,R(_.$t("rightSidePanel.noneSearchDesc")),1)):A("",!0),h.value.length?(p(),x("div",Th,[c("div",Nh,[c("div",Ih,R(_.$t("subgraphStore.shown")),1),c("a",{class:"cursor-pointer text-right text-xs font-normal text-text-secondary hover:text-azure-600 whitespace-nowrap",onClick:ke(C,["stop"])},R(_.$t("subgraphStore.hideAll")),1)]),c("div",{ref_key:"draggableItems",ref:r,class:"pb-2 px-2 space-y-0.5 mt-0.5"},[(p(!0),x(Z,null,ye(h.value,([$,V])=>(p(),O(fs,{key:g([$,V]),class:"bg-comfy-menu-bg","node-title":$.title,"widget-name":V.name,"is-shown":!0,"is-draggable":!u(t),"is-physical":$.id===-1,onToggleVisibility:a(B=>S([$,V]),"onToggleVisibility")},null,8,["node-title","widget-name","is-draggable","is-physical","onToggleVisibility"]))),128))],512)])):A("",!0),m.value.length?(p(),x("div",Ph,[c("div",$h,[c("div",Mh,R(_.$t("subgraphStore.hidden")),1),c("a",{class:"cursor-pointer text-right text-xs font-normal text-text-secondary hover:text-azure-600 whitespace-nowrap",onClick:ke(w,["stop"])},R(_.$t("subgraphStore.showAll")),1)]),c("div",Dh,[(p(!0),x(Z,null,ye(m.value,([$,V])=>(p(),O(fs,{key:g([$,V]),class:"bg-comfy-menu-bg","node-title":$.title,"widget-name":V.name,onToggleVisibility:a(B=>k([$,V]),"onToggleVisibility")},null,8,["node-title","widget-name","onToggleVisibility"]))),128))])])):A("",!0),v.value.length?(p(),x("div",Lh,[L(X,{size:"sm",class:"rounded border-none px-3 py-0.5",onClick:ke(T,["stop"])},{default:M(()=>[Ie(R(_.$t("subgraphStore.showRecommended")),1)]),_:1})])):A("",!0)])])):A("",!0)}}),Eh=Ah,Vh={"data-testid":"properties-panel",class:"flex size-full flex-col bg-comfy-menu-bg"},Oh={class:"pt-1"},Rh={class:"flex items-center justify-between pl-4 pr-3"},Wh={class:"my-3.5 text-sm font-semibold line-clamp-2 cursor-default"},Bh={class:"flex gap-2"},zh={class:"px-4 pb-2 pt-1 overflow-x-auto"},Uh={class:"scrollbar-thin flex-1 overflow-y-auto"},Fh=q({__name:"RightSidePanel",setup(e){const o=fe(),t=ut(),s=ne(),{t:r}=ue(),{findParentGroup:n}=Fm(),{selectedItems:l}=ze(o),{activeTab:i,isEditingSubgraph:d}=ze(t),f=y(()=>s.get("Comfy.Sidebar.Location")),m=y(()=>f.value==="right"?"icon-[lucide--panel-left]":"icon-[lucide--panel-right]"),{flattedItems:v,selectedNodes:h,selectedGroups:g,nodeToParentGroup:b}=Km(l),S=y(()=>!(l.value.length===1&&(g.value.length===1||h.value.length===1)));fa(Ir,U=>S.value?b.value.get(U)??n(U):null);const k=y(()=>v.value.length>0),w=y(()=>h.value.length===1&&v.value.length===1?h.value[0]:null),C=y(()=>w.value instanceof Oo);function T(){t.closePanel()}a(T,"closePanel");const I=y(()=>{const U=[];return U.push({label:a(()=>v.value.length>1?r("rightSidePanel.nodes"):r("rightSidePanel.parameters"),"label"),value:"parameters"}),k.value||U.push({label:a(()=>r("rightSidePanel.nodes"),"label"),value:"nodes"}),k.value&&w.value&&!C.value&&U.push({label:a(()=>r("rightSidePanel.info"),"label"),value:"info"}),U.push({label:a(()=>k.value?r("g.settings"):r("rightSidePanel.globalSettings.title"),"label"),value:"settings"}),U});we(()=>{!I.value.some(U=>U.value===i.value)&&!(i.value==="subgraph"&&C.value)&&t.openPanel(I.value[0].value)});function _(){const U=v.value,j=h.value,W=g.value;if(U.length===0)return r("rightSidePanel.workflowOverview");if(l.value.length===1){if(W.length===1)return W[0].title||r("rightSidePanel.fallbackGroupTitle");if(j.length===1)return j[0].title||j[0].type||r("rightSidePanel.fallbackNodeTitle")}return r("rightSidePanel.title",{count:U.length})}a(_,"resolveTitle");const N=E(_());we(()=>N.value=_());const $=E(!1),V=y(()=>l.value.length===1&&(g.value.length===1||h.value.length===1));function B(U){$.value=!1;const j=U.trim();if(!j)return;const W=g.value[0]||h.value[0];W&&j!==W.title&&(W.title=j,N.value=j,o.canvas?.setDirty(!0,!0))}a(B,"handleTitleEdit");function D(){$.value=!1}return a(D,"handleTitleCancel"),(U,j)=>(p(),x("div",Vh,[c("section",Oh,[c("div",Rh,[c("h3",Wh,[V.value?(p(),x(Z,{key:0},[L(hn,{"model-value":N.value,"is-editing":$.value,"input-attrs":{"data-testid":"node-title-input"},class:"cursor-text",onEdit:B,onCancel:D,onClick:j[0]||(j[0]=W=>$.value=!0)},null,8,["model-value","is-editing"]),$.value?A("",!0):(p(),x("i",{key:0,class:"icon-[lucide--pencil] size-4 text-muted-foreground ml-2 content-center relative top-[2px] hover:text-base-foreground cursor-pointer shrink-0",onClick:j[1]||(j[1]=W=>$.value=!0)}))],64)):(p(),x(Z,{key:1},[Ie(R(N.value),1)],64))]),c("div",Bh,[C.value?(p(),O(X,{key:0,variant:"secondary",size:"icon",class:Q(u(ae)(u(d)&&"bg-secondary-background-selected")),onClick:j[2]||(j[2]=W=>u(t).openPanel(u(d)?"parameters":"subgraph"))},{default:M(()=>j[4]||(j[4]=[c("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["class"])):A("",!0),L(X,{variant:"secondary",size:"icon","aria-pressed":u(t).isOpen,"aria-label":u(r)("rightSidePanel.togglePanel"),onClick:T},{default:M(()=>[c("i",{class:Q(u(ae)(m.value,"size-4"))},null,2)]),_:1},8,["aria-pressed","aria-label"])])]),c("nav",zh,[L(Li,{"model-value":u(i),"onUpdate:modelValue":j[3]||(j[3]=W=>{u(t).openPanel(W)})},{default:M(()=>[(p(!0),x(Z,null,ye(I.value,W=>(p(),O(Ui,{key:W.value,class:"text-sm py-1 px-2 font-inter transition-all active:scale-95",value:W.value},{default:M(()=>[Ie(R(W.label()),1)]),_:2},1032,["value"]))),128))]),_:1},8,["model-value"])])]),c("div",Uh,[k.value?C.value&&u(d)?(p(),O(Eh,{key:1,node:w.value},null,8,["node"])):(p(),x(Z,{key:2},[u(i)==="parameters"&&C.value?(p(),O(Fg,{key:0,node:w.value},null,8,["node"])):u(i)==="parameters"?(p(),O(Wg,{key:1,nodes:u(h),"must-show-node-title":u(g).length>0},null,8,["nodes","must-show-node-title"])):u(i)==="info"?(p(),O(jm,{key:2,nodes:u(h)},null,8,["nodes"])):u(i)==="settings"?(p(),O(gh,{key:3,nodes:u(v)},null,8,["nodes"])):A("",!0)],64)):(p(),x(Z,{key:0},[u(i)==="parameters"?(p(),O(Mg,{key:0})):u(i)==="nodes"?(p(),O(Eg,{key:1})):u(i)==="settings"?(p(),O(Xg,{key:2})):A("",!0)],64))])]))}}),Gh=Fh;const Pn=uo("searchBox",()=>{const e=ne(),{x:o,y:t}=il(),s=y(()=>e.get("Comfy.NodeSearchBoxImpl")==="default"),r=Je(null);function n(d){r.value=d}a(n,"setPopoverRef");const l=E(!1);function i(){if(s.value){l.value=!l.value;return}r.value&&r.value.showSearchBox(new MouseEvent("click",{clientX:o.value,clientY:t.value,layerY:t.value}))}return a(i,"toggleVisible"),{newSearchBoxEnabled:s,setPopoverRef:n,toggleVisible:i,visible:l}});var Hh={class:"option-container flex w-full cursor-pointer items-center justify-between overflow-hidden px-2 py-0"},jh={class:"option-display-name flex flex-col font-semibold"},qh={key:0},Kh=["innerHTML"],Qh=["innerHTML"],Yh={key:0,class:"option-category truncate text-sm font-light text-muted"},Jh={class:"option-badges"},Xh=q({__name:"NodeSearchItem",props:{nodeDef:{},currentQuery:{}},setup(e){const o=ne(),t=y(()=>o.get("Comfy.NodeSearchBoxImpl.ShowCategory")),s=y(()=>o.get("Comfy.NodeSearchBoxImpl.ShowIdName")),r=y(()=>o.get("Comfy.NodeSearchBoxImpl.ShowNodeFrequency")),n=_n(),l=y(()=>n.getNodeFrequency(f.nodeDef)),i=Si(),d=y(()=>i.isBookmarked(f.nodeDef)),f=e;return(m,v)=>(p(),x("div",Hh,[c("div",jh,[c("div",null,[d.value?(p(),x("span",qh,v[0]||(v[0]=[c("i",{class:"pi pi-bookmark-fill mr-1 text-sm"},null,-1)]))):A("",!0),c("span",{innerHTML:u(Qn)(m.nodeDef.display_name,m.currentQuery)},null,8,Kh),v[1]||(v[1]=c("span",null," ",-1)),s.value?(p(),O(u(to),{key:1,severity:"secondary"},{default:M(()=>[c("span",{innerHTML:u(Qn)(m.nodeDef.name,m.currentQuery)},null,8,Qh)]),_:1})):A("",!0)]),t.value?(p(),x("div",Yh,R(m.nodeDef.category.replaceAll("/"," > ")),1)):A("",!0)]),c("div",Jh,[m.nodeDef.experimental?(p(),O(u(to),{key:0,value:m.$t("g.experimental"),severity:"primary"},null,8,["value"])):A("",!0),m.nodeDef.deprecated?(p(),O(u(to),{key:1,value:m.$t("g.deprecated"),severity:"danger"},null,8,["value"])):A("",!0),r.value&&l.value>0?(p(),O(u(to),{key:2,value:u(gi)(l.value,{roundToInt:!0}),severity:"secondary"},null,8,["value"])):A("",!0),m.nodeDef.nodeSource.type!==u(Zl).Unknown?(p(),O(u(ol),{key:3,class:"text-sm font-light"},{default:M(()=>[Ie(R(m.nodeDef.nodeSource.displayText),1)]),_:1})):A("",!0)])]))}}),Zh=Be(Xh,[["__scopeId","data-v-acda36a0"]]),ey={class:"comfy-vue-node-search-container flex w-full min-w-96 items-center justify-center"},ty={class:"_dialog-body"},oy=q({__name:"NodeSearchBox",props:{filters:{},searchLimit:{default:64}},emits:["addFilter","removeFilter","addNode"],setup(e,{emit:o}){const t=ne(),{t:s}=ue(),r=Le(),n=y(()=>t.get("Comfy.NodeSearchBoxImpl.NodePreview")),l=E(),i=E(!1),d=`comfy-vue-node-search-box-input-${Math.random()}`,f=E([]),m=E(null),v=E(""),h=y(()=>e.filters.length===0?s("g.searchNodes")+"...":""),g=Ct(),b=_n(),S=ca(V=>{V.trim()&&r?.trackNodeSearch({query:V})},500),k=a(V=>{const B=V===""&&e.filters.length===0;v.value=V,f.value=B?b.topNodeDefs:[...g.nodeSearchService.searchNode(V,e.filters,{limit:e.searchLimit})],S(V)},"search"),w=o,C=a(V=>{r?.trackNodeSearchResultSelected({node_type:V.name,last_query:v.value}),w("addNode",V)},"onAddNode");let T=null;const I=a(async()=>{T??=document.getElementById(d),T&&(T.blur(),await Ue(()=>T?.focus()))},"reFocusInput");Re(()=>{T??=document.getElementById(d),T&&T.focus(),l.value.hide=()=>k(""),k(""),l.value.show()});const _=a(V=>{i.value=!1,w("addFilter",V)},"onAddFilter"),N=a(async(V,B)=>{V.stopPropagation(),V.preventDefault(),w("removeFilter",B),await I()},"onRemoveFilter"),$=a(V=>{if(V===-1){m.value=null;return}m.value=f.value[V]},"setHoverSuggestion");return(V,B)=>(p(),x("div",ey,[n.value&&m.value?(p(),x("div",{key:0,class:"comfy-vue-node-preview-container absolute top-[50px] left-[-375px] z-50 cursor-pointer",onMousedown:B[0]||(B[0]=ke(D=>C(m.value),["stop"]))},[(p(),O(Ii,{key:m.value?.name||"","node-def":m.value},null,8,["node-def"]))],32)):A("",!0),L(X,{variant:"secondary","aria-label":V.$t("g.addNodeFilterCondition"),class:"filter-button z-10",onClick:B[1]||(B[1]=D=>i.value=!0)},{default:M(()=>B[6]||(B[6]=[c("i",{class:"pi pi-filter"},null,-1)])),_:1},8,["aria-label"]),L(u(Ls),{visible:i.value,"onUpdate:visible":B[2]||(B[2]=D=>i.value=D),class:"min-w-96","dismissable-mask":"",modal:"",onHide:I},{header:M(()=>[c("h3",null,R(V.$t("g.addNodeFilterCondition")),1)]),default:M(()=>[c("div",ty,[L(Yi,{onAddFilter:_})])]),_:1},8,["visible"]),L(Wu,{ref_key:"autoCompletePlus",ref:l,"model-value":V.filters,class:"comfy-vue-node-search-box z-10 grow","scroll-height":"40vh",placeholder:h.value,"input-id":d,"append-to":"self",suggestions:f.value,delay:100,loading:!u(b).isLoaded,"complete-on-focus":"","auto-option-focus":"","force-selection":"",multiple:"","option-label":"display_name",onComplete:B[3]||(B[3]=D=>k(D.query)),onOptionSelect:B[4]||(B[4]=D=>C(D.value)),onFocusedOptionChanged:B[5]||(B[5]=D=>$(D))},{option:M(({option:D})=>[L(Zh,{"node-def":D,"current-query":v.value},null,8,["node-def","current-query"])]),chip:M(({value:D})=>[D.filterDef&&D.value?(p(),O(iu,{key:`${D.filterDef.id}-${D.value}`,text:D.value,badge:D.filterDef.invokeSequence.toUpperCase(),"badge-class":D.filterDef.invokeSequence+"-badge",onRemove:a(U=>N(U,D),"onRemove")},null,8,["text","badge","badge-class","onRemove"])):A("",!0)]),_:1},8,["model-value","placeholder","suggestions","loading"])]))}}),ay=oy,ny=q({__name:"NodeSearchBoxPopover",setup(e,{expose:o}){let t=null,s=null,r=!1;const n=ne(),l=Pn(),i=Ro(),{visible:d,newSearchBoxEnabled:f}=ze(l),m=E(!0);function v(){return t?[t.canvasX,t.canvasY]:i.getCanvasCenter()}a(v,"getNewNodeLocation");const h=E([]);function g(G){h.value.push(G)}a(g,"addFilter");function b(G){h.value=h.value.filter(z=>sa(z)!==sa(G))}a(b,"removeFilter");function S(){h.value=[]}a(S,"clearFilters");function k(){d.value=!1}a(k,"closeDialog");const w=fe();function C(G){const z=i.addNodeOnGraph(G,{pos:v()});r&&t?w.getCanvas().linkConnector.connectToNode(z,t):t||console.warn("The trigger event was undefined when addNode was called."),r=!1,Ve().activeWorkflow?.changeTracker?.checkState(),window.requestAnimationFrame(k)}a(C,"addNode");function T(G){f.value?G?.pointerType==="touch"?setTimeout(()=>{N(G)},128):N(G):w.getCanvas().showSearchBox(G)}a(T,"showSearchBox");function I(){return w.getCanvas().linkConnector.renderLinks.at(0)}a(I,"getFirstLink");const _=Ct();function N(G){const z=I();z&&g({filterDef:z.toType==="input"?_.nodeSearchService.inputTypeFilter:_.nodeSearchService.outputTypeFilter,value:z.fromSlot.type?.toString()??""}),d.value=!0,t=G,m.value=!1,setTimeout(()=>{m.value=!0},300)}a(N,"showNewSearchBox");function $(G){const z=I();if(!z)return;const{node:K,fromSlot:H,toType:J}=z,te={e:G,allow_searchbox:!0,showSearchBox:a(()=>{Te(),T(G)},"showSearchBox")},he=z.fromReroute?.id,$e=J==="input"?{nodeFrom:K,slotFrom:H,afterRerouteId:he}:{nodeTo:K,slotTo:H,afterRerouteId:he},se=w.getCanvas(),Se=se.showConnectionMenu({...$e,...te});if(!Se){console.warn("No menu was returned from showConnectionMenu");return}t=G,s=new AbortController;const{signal:ve}=s,xe={once:!0,signal:ve};Oe(se.canvas,"connect-new-default-node",He=>{if(!(He instanceof CustomEvent))throw new Error("Invalid event");const je=He.detail?.node;if(!(je instanceof _t))throw new Error("Invalid node");r=!1,He.preventDefault(),se.linkConnector.connectToNode(je,G)},xe);const Te=Oe(Se.controller.signal,"abort",F,xe)}a($,"showContextMenu"),we(()=>{const{canvas:G}=w;G&&(ge.release_link_on_empty_shows_menu=!1,G.allow_searchbox=!1,Oe(G.linkConnector.events,"dropped-on-canvas",W))});function V(G){if(G.detail.subType==="empty-double-click")T(G.detail.originalEvent);else if(G.detail.subType==="group-double-click"){const z=G.detail.group,[K,H]=z.pos;G.detail.originalEvent.canvasY-H>z.titleHeight&&T(G.detail.originalEvent)}}a(V,"canvasEventHandler");const B=y(()=>n.get("Comfy.LinkRelease.Action")),D=y(()=>n.get("Comfy.LinkRelease.ActionShift"));function U(G){return G.preventDefault()}a(U,"preventDefault");function j(G){G.preventDefault();const z=w.getCanvas();z.linkConnector.state.snapLinksPos=[G.detail.canvasX,G.detail.canvasY],Oe(z.linkConnector.events,"reset",U,{once:!0})}a(j,"cancelNextReset");function W(G){switch(r=!0,G.detail.shiftKey?D.value:B.value){case It.SEARCH_BOX:j(G),T(G.detail);break;case It.CONTEXT_MENU:j(G),$(G.detail);break;case It.NO_ACTION:default:break}}a(W,"handleDroppedOnCanvas");function F(){s?.abort(),s=null,t=null;const G=w.getCanvas();G.linkConnector.events.removeEventListener("reset",U),r&&G.linkConnector.disconnectLinks(),G.linkConnector.reset(),G.setDirty(!0,!0)}return a(F,"reset"),ie(d,()=>{d.value||F()}),Oe(document,"litegraph:canvas",V),o({showSearchBox:T}),(G,z)=>(p(),x("div",null,[L(u(Ls),{visible:u(d),"onUpdate:visible":z[0]||(z[0]=K=>qe(d)?d.value=K:null),modal:"","dismissable-mask":m.value,pt:{root:{class:"invisible-dialog-root",role:"search"},mask:{class:"node-search-box-dialog-mask"},transition:{enterFromClass:"opacity-0 scale-75",enterActiveClass:"transition-all duration-100 ease-out",leaveActiveClass:"transition-all duration-100 ease-in",leaveToClass:"opacity-0 scale-75"}},onHide:S},{container:M(()=>[L(ay,{filters:h.value,onAddFilter:g,onRemoveFilter:b,onAddNode:C},null,8,["filters"])]),_:1},8,["visible","dismissable-mask"])]))}}),sy=ny;const en=uo("helpCenter",()=>{const e=E(!1),o=E("sidebar");return{isVisible:e,triggerLocation:o,toggle:a((n="sidebar")=>{e.value||(o.value=n),e.value=!e.value},"toggle"),show:a((n="sidebar")=>{o.value=n,e.value=!0},"show"),hide:a(()=>{e.value=!1},"hide")}});function $n(e="sidebar"){const o=ne(),t=Bo(),s=en(),{isVisible:r,triggerLocation:n}=ze(s),{shouldShowRedDot:l}=ze(t),i=nr(),{showNodeConflictDialog:d}=vt(),{shouldShowRedDot:f,markConflictsAsSeen:m}=Cn(),v=y(()=>l.value||f.value),h=y(()=>o.get("Comfy.Sidebar.Location")),g=a(()=>{Le()?.trackUiButtonClicked({button_id:`${e}_help_center_toggled`}),s.toggle(e)},"toggleHelpCenter"),b=a(()=>{s.hide()},"closeHelpCenter"),S=a(async()=>{try{await i.shouldShowConflictModalAfterUpdate()&&k()}catch(w){console.error("[HelpCenter] Error checking conflict modal:",w)}},"handleWhatsNewDismissed"),k=a(()=>{d({showAfterWhatsNew:!0,dialogComponentProps:{onClose:a(()=>{m()},"onClose")}})},"showConflictModal");return Re(async()=>{await t.initialize()}),{isHelpCenterVisible:r,triggerLocation:n,shouldShowRedDot:v,sidebarLocation:h,toggleHelpCenter:g,closeHelpCenter:b,handleWhatsNewDismissed:S}}a($n,"useHelpCenter");var ry={key:0,class:"release-toast-popup"},ly={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"},iy={class:"p-4 flex flex-col gap-4 flex-1 min-h-0"},uy={class:"flex items-center gap-4"},dy={class:"flex flex-col gap-1"},cy={class:"text-sm font-normal text-base-foreground leading-[1.429]"},py={class:"text-sm font-normal text-muted-foreground leading-[1.21]"},fy=["innerHTML"],vy={class:"flex justify-between items-center px-4 pb-4"},my=["href"],gy={class:"flex items-center gap-4"},hy=q({__name:"ReleaseNotificationToast",setup(e,{expose:o}){const{buildDocsUrl:t}=co(),{toastErrorHandler:s}=jt(),r=Bo(),{t:n}=ue(),l=E(!1),i=y(()=>r.recentRelease),d=y(()=>r.shouldShowToast&&!l.value),f=y(()=>{const C=t("/changelog",{includeLocale:!0});return i.value?.version?`${C}#${pn(i.value.version)}`:C}),m=y(()=>{if(!i.value?.content)return $t.sanitize(`<p>${n("releaseToast.description")}</p>`);try{const C=i.value.content.replace(/^# .+$/m,"").replace(/!\[.*?\]\(.*?\)/g,""),T=C.trim();return!T||T.replace(/\s+/g,"")===""?$t.sanitize(`<p>${n("releaseToast.description")}</p>`):mr(C)}catch(C){console.error("Error parsing markdown:",C);const T=i.value.content.replace(/\n/g,"<br>");return T.trim()?$t.sanitize(T):$t.sanitize(`<p>${n("releaseToast.description")}</p>`)}});let v=null;const h=a(()=>{v&&clearTimeout(v),v=setTimeout(()=>{b()},8e3)},"startAutoHide"),g=a(()=>{v&&(clearTimeout(v),v=null)},"clearAutoHide"),b=a(()=>{l.value=!0,g()},"dismissToast"),S=a(()=>{i.value&&r.handleSkipRelease(i.value.version),b()},"handleSkip"),k=a(()=>{i.value&&r.handleShowChangelog(i.value.version),b()},"handleLearnMore"),w=a(async()=>{if(Xe()){try{await Ce().execute("Comfy-Desktop.CheckForUpdates"),b()}catch(C){s(C)}return}window.open(t("/installation/update_comfyui",{includeLocale:!0}),"_blank"),b()},"handleUpdate");return ie(d,C=>{C?h():g()}),Re(async()=>{r.releases.length||await r.fetchReleases()}),o({handleSkip:S,handleLearnMore:k,handleUpdate:w}),(C,T)=>d.value?(p(),x("div",ry,[c("div",ly,[c("div",iy,[c("div",uy,[T[0]||(T[0]=c("div",{class:"p-3 bg-primary-background-hover rounded-lg flex items-center justify-center shrink-0"},[c("i",{class:"icon-[lucide--rocket] w-4 h-4 text-white"})],-1)),c("div",dy,[c("div",cy,R(C.$t("releaseToast.newVersionAvailable")),1),c("div",py,R(i.value?.version),1)])]),c("div",{class:"pl-14 text-sm font-normal text-muted-foreground leading-[1.21] overflow-y-auto flex-1 min-h-0",innerHTML:m.value},null,8,fy)]),c("div",vy,[c("a",{class:"flex items-center gap-2 text-sm font-normal py-1 text-muted-foreground hover:text-base-foreground",href:f.value,target:"_blank",rel:"noopener noreferrer",onClick:k},[T[1]||(T[1]=c("i",{class:"icon-[lucide--external-link] w-4 h-4"},null,-1)),Ie(" "+R(C.$t("releaseToast.whatsNew")),1)],8,my),c("div",gy,[c("button",{class:"h-6 px-0 bg-transparent border-none text-sm font-normal text-muted-foreground hover:text-base-foreground cursor-pointer",onClick:S},R(C.$t("releaseToast.skip")),1),c("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},R(C.$t("releaseToast.update")),1)])])])])):A("",!0)}}),yy=Be(hy,[["__scopeId","data-v-ba02c61a"]]),by={key:0,class:"whats-new-popup-container left-4"},wy={class:"modal-body flex flex-col gap-4 px-0 pt-0 pb-2 flex-1"},_y=["innerHTML"],ky={class:"modal-footer flex justify-between items-center gap-4 px-4 pb-4"},Cy=["href"],Sy={class:"footer-actions flex items-center gap-4"},xy=q({__name:"WhatsNewPopup",emits:["whats-new-dismissed"],setup(e,{expose:o,emit:t}){const{buildDocsUrl:s}=co(),r=Bo(),{t:n}=ue(),l=t,i=E(!1),d=y(()=>r.recentRelease),f=y(()=>r.shouldShowPopup&&!i.value),m=y(()=>{const S=s("/changelog",{includeLocale:!0});return d.value?.version?`${S}#${pn(d.value.version)}`:S}),v=y(()=>{if(!d.value?.content)return $t.sanitize(`<p>${n("whatsNewPopup.noReleaseNotes")}</p>`);try{const S=d.value.content,k=S.trim();if(!k||k.replace(/\s+/g,"")==="")return $t.sanitize(`<p>${n("whatsNewPopup.noReleaseNotes")}</p>`);const w=S.match(/!\[.*?\]\(.*?\)/);return mr([w?w[0]:"",S.replace(/!\[.*?\]\(.*?\)/,"").trim()].filter(Boolean).join(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./CloudRunButtonWrapper-Cub7EB34.js","./vendor-primevue-DcMRXJN3.js","./vendor-other-DlQF6V2E.js","./rolldown-runtime-BN4meiq5.js","./vendor-other-CaaUC6Qe.css","./dialogService-YG0RH337.js","./_plugin-vue_export-helper-PHE0iSCb.js","./vendor-vue-D9IUuwPJ.js","./vendor-three-BFcUNSs9.js","./vendor-tiptap-_UqYL7N_.js","./vendor-xterm-BU_lcTPR.js","./vendor-xterm-kHJ-D0s7.css","./PanelTemplate-BJda9e5J.js","./api-Dwq2LQIW.js","./widget-DNFXpyU8.js","./colorUtil-CzxntCbX.js","./src-DTrob8OL.js","./Button-Do2I1OAA.js","./vendor-reka-ui-CmnTduBl.js","./Slider-De1ykl8L.js","./useErrorHandling-Cfa5N_7c.js","./remoteConfig-CZcEXsZS.js","./userStore-BAS9m9W6.js","./markdownRendererUtil-DglHsU8t.js","./dialogService-BMbgJ9MG.css","./ComfyQueueButton-HjSIKZKO.js","./graphHasMissingNodes-BhD1N6zI.js","./ComfyQueueButton-Chw03MdC.css","./SubscribeToRun-4YolxBOL.js","./ComfyQueueButton-BppnHbrl.js","./releaseStore-iVkqunL8.js","./releaseStore-DDOxzkVb.js"])))=>i.map(i=>d[i]);
2
+ var Hr=Object.defineProperty;var a=(e,o)=>Hr(e,"name",{value:o,configurable:!0});import{$ as Rn,A as Ps,B as jr,C as $s,D as Ms,E as qr,F as Ds,Q as Ls,S as Kr,T as nn,W as As,X as Wn,Z as Qr,b as Ua,c as to,ct as bo,dt as Fa,et as wt,h as Yr,it as Jr,lt as sn,m as Xr,mt as lo,o as Zr,p as el,q as tl,st as ol,tt as al,u as nl,y as At,z as sl}from"./vendor-primevue-DcMRXJN3.js";import{$i as rl,$o as R,$t as ll,Aa as tt,Ai as il,Ba as c,Bo as Bn,Ci as Oe,Co as Qe,Do as M,Ei as ul,Fa as dl,Fi as rn,Fo as cl,Ga as pl,Go as fl,Ha as A,Hi as vl,Ho as Je,Ia as yt,Ii as ml,Ja as zn,Ji as gl,Jo as u,Ka as Ie,Ko as et,Kr as ca,Li as hl,Lo as Es,Ma as ke,Mi as yl,Ni as io,No as qe,Nr as bl,Oi as Un,Oo as ce,Pa as Z,Pi as Vs,Po as Os,Pr as wl,Qi as _l,Qo as be,Qr as Jt,Ri as kl,Ro as Ga,So as Cl,Ta as ln,To as we,Ua as x,Uo as sa,Va as O,Wa as Sl,Wi as xl,Xa as Fn,Xo as Q,Ya as q,Yi as Tl,Zi as Nl,Zo as Il,_i as un,_o as so,bi as dn,bo as Pl,co as Re,do as p,ea as Ut,en as $l,eo as Ml,fi as pa,fo as fa,gi as Dl,go as Pe,hi as Xt,ho as Rs,io as Ue,ja as To,ji as Ll,ki as Ws,ko as va,lo as kt,mo as _e,no as Eo,oo as rt,po as ye,qa as L,qi as Bs,qo as Ha,ro as lt,so as zs,ta as bt,uo as Us,wa as ma,wi as Al,wo as ie,xo as Vo,y as $t,yi as El,za as y,zi as ga,zo as E}from"./vendor-other-DlQF6V2E.js";import{c as Fs,m as ze,n as ue,p as uo,s as Gs}from"./vendor-vue-D9IUuwPJ.js";import{A as le,At as Et,B as Jo,Bt as Xe,Ct as Gn,D as Vl,E as Ol,Et as We,F as Rl,Ft as Wl,G as Hn,H as Bl,Ht as zl,I as Ul,It as oo,J as Fl,K as Gl,L as Hl,Lt as Fe,Mt as jl,O as ql,Ot as Ft,P as Kl,R as cn,St as Ql,T as jn,Tt as qn,V as Xo,Vt as Yl,X as Jl,Y as wa,Z as Kn,_ as Oo,b as _t,bt as Xl,c as Zl,f as ge,g as ei,h as ti,ht as Ae,j as oi,jt as ai,k as Ze,kt as ni,m as Ke,mt as ha,n as si,o as It,p as ri,q as li,r as Ne,s as gt,xt as ii,y as Ht,yt as No,zt as ko}from"./api-Dwq2LQIW.js";import"./remoteConfig-CZcEXsZS.js";import{i as ui,t as Gt}from"./colorUtil-CzxntCbX.js";import{n as di,t as jt}from"./useErrorHandling-Cfa5N_7c.js";import{a as ci,c as pi,l as fi,o as vi,s as mi}from"./vendor-reka-ui-CmnTduBl.js";import{t as ae}from"./src-DTrob8OL.js";import{t as X}from"./Button-Do2I1OAA.js";import{O as Hs,d as pn,g as Qn,k as co,l as gi,n as fn,r as hi,x as Pt}from"./PanelTemplate-BJda9e5J.js";import{$ as _a,$n as js,$r as ra,$t as Yn,A as yi,An as bi,At as wi,Bn as _i,Bt as ki,C as Ci,Cn as po,Ct as Si,D as xi,Dr as fo,Dt as ja,E as Ti,En as Ni,Er as qs,Et as Ii,F as Pi,Fn as $i,Ft as Mi,G as vo,Gn as Di,Gt as Li,H as Ai,Ht as Ks,I as Ei,It as Vi,J as Oi,Jn as Qs,Jr as Ri,Jt as Wi,K as qa,Kn as Bi,Kr as zi,Kt as Ui,L as Jn,Lt as Ka,M as ya,Mn as Fi,Mr as Ys,Mt as Xn,Nn as mo,Nr as vn,Nt as Zn,O as Js,Or as Ce,Ot as Gi,P as Y,Pn as Mt,Pt as Hi,Q as ji,Qn as Xs,Qr as Io,Qt as Zs,R as mn,Rt as la,S as er,Sn as qi,St as Ki,T as Qi,Tt as Yi,Un as tr,Ut as Ji,V as Xi,Vn as Zi,Vr as or,Vt as eu,Wn as tu,Wt as ou,X as ar,Xn as qt,Xr as gn,Xt as es,Y as au,Yn as nu,Yr as ro,Yt as ts,Z as su,Zn as hn,Zt as ru,_ as nr,_n as Co,_t as nt,an as lu,ar as iu,b as uu,bn as du,bt as cu,cr as Zt,ct as yn,d as pu,dr as fu,dt as it,ei as vu,en as os,er as So,et as bn,f as mu,fr as gu,ft as Le,g as ao,gn as sr,gt as wn,h as ht,hn as hu,ht as _n,i as yu,in as bu,ir as rr,j as fe,jn as wu,jr as _u,jt as lr,k as ku,kn as as,kt as Cu,ln as Su,lr as ir,lt as ur,m as xu,mr as ka,mt as Ct,n as Tu,nn as Nu,nr as dr,o as Iu,on as Qa,ot as Pu,p as cr,pr as Ca,pt as $u,q as Mu,qr as xo,qt as Du,rn as Lu,rr as pr,rt as Ro,s as Au,sn as Eu,sr as kn,st as ut,t as vt,ti as fr,tn as Vu,tr as vr,ur as St,ut as Wo,v as Ou,vn as Vt,vt as st,w as Ve,wt as Ru,x as Wu,xn as Bu,xt as zu,y as Cn,yn as Ya,yr as ne,yt as Po,zn as go,zt as Uu}from"./dialogService-YG0RH337.js";import{t as Be}from"./_plugin-vue_export-helper-PHE0iSCb.js";import"./vendor-tiptap-_UqYL7N_.js";import"./vendor-xterm-BU_lcTPR.js";import{t as Fu}from"./Slider-De1ykl8L.js";import"./vendor-three-BFcUNSs9.js";import{t as mr}from"./markdownRendererUtil-DglHsU8t.js";import{t as gr}from"./userStore-BAS9m9W6.js";import{a as Gu,i as Hu,r as ju,t as hr}from"./preservedQueryNamespaces-BXriQIIi.js";import{t as qu}from"./graphHasMissingNodes-BhD1N6zI.js";import{t as ns}from"./SubscribeToRun-4YolxBOL.js";import{t as Sa}from"./keybindingService-CBLPjYHI.js";import{t as yr}from"./UserAvatar-Cfg5vVJL.js";import{t as Ku}from"./GlobalToast-BSCvu6Hw.js";import{n as Qu,t as Yu}from"./SubscribeButton-DZBycfCA.js";import{t as Ju}from"./useSubscriptionDialog-792qfEJ2.js";import{t as Xu}from"./serverConfigStore-60S1CDhK.js";import{t as Bo}from"./releaseStore-DDOxzkVb.js";import{n as Zu,t as Sn}from"./nodeFilterUtil-BYFD-MqA.js";import"./widgetPropFilter-CKhENku4.js";import{t as ia}from"./layout-C9TPTaej.js";import{i as zo,n as ed,t as $o}from"./LazyImage-D5qRMpUj.js";import"./WidgetWithControl-Da6zUB5e.js";import{t as ss}from"./WidgetInputNumber-DU_D0Fzy.js";var xa;let br;(function(){const e=globalThis;typeof e.requestIdleCallback!="function"||typeof e.cancelIdleCallback!="function"?xa=a((o,t,s)=>{setTimeout(()=>{if(r)return;const n=Date.now()+15;t(Object.freeze({didTimeout:!0,timeRemaining(){return Math.max(0,n-Date.now())}}))});let r=!1;return{dispose(){r||(r=!0)}}},"_runWhenIdle"):xa=a((o,t,s)=>{const r=o.requestIdleCallback(t,typeof s=="number"?{timeout:s}:void 0);let n=!1;return{dispose(){n||(n=!0,o.cancelIdleCallback(r))}}},"_runWhenIdle"),br=a((o,t)=>xa(globalThis,o,t),"runWhenGlobalIdle")})();var td={class:"fixed z-9999 flex flex-row no-drag top-0 right-0"},od=q({__name:"MenuHamburger",setup(e){const o=st(),t=ne(),s=a(()=>{o.focusMode=!1},"exitFocusMode");return we(()=>{t.get("Comfy.UseNewMenu")==="Disabled"&&(o.focusMode?Y.ui.menuContainer.style.display="none":Y.ui.menuContainer.style.display="block")}),(r,n)=>{const l=Pe("tooltip");return ce((p(),x("div",td,[ce((p(),O(X,{variant:"muted-textonly",size:"lg","aria-label":r.$t("menu.showMenu"),"aria-live":"assertive",onClick:s,onContextmenu:u(zl)},{default:M(()=>n[0]||(n[0]=[c("i",{class:"pi pi-bars"},null,-1)])),_:1},8,["aria-label","onContextmenu"])),[[l,{value:r.$t("menu.showMenu"),showDelay:300}]]),n[1]||(n[1]=c("div",{class:"window-actions-spacer"},null,-1))],512)),[[tt,u(o).focusMode]])}}}),ad=od,nd=q({__name:"UnloadWindowConfirmDialog",setup(e){const o=ne(),t=Ve(),s=a(r=>{if(o.get("Comfy.Window.UnloadConfirmation")&&t.modifiedWorkflows.length>0)return r.preventDefault(),!0},"handleBeforeUnload");return Re(()=>{window.addEventListener("beforeunload",s)}),rt(()=>{window.removeEventListener("beforeunload",s)}),(r,n)=>(p(),x("div"))}}),sd=nd,rd={class:"w-full h-full absolute top-0 left-0 z-999 pointer-events-none flex flex-col"},ld={class:"side-toolbar-container"},id=q({__name:"LiteGraphCanvasSplitterOverlay",setup(e){const o=st(),t=ne(),s=ut(),r=Po(),{t:n}=ue(),l=y(()=>t.get("Comfy.Sidebar.Location")),i=y(()=>t.get("Comfy.Sidebar.UnifiedWidth")),{focusMode:d}=ze(o),{activeSidebarTabId:f,activeSidebarTab:m}=ze(r),{bottomPanelVisible:v}=ze(po()),{isOpen:h}=ze(s),g=y(()=>m.value!==null),b=y(()=>i.value?"unified-sidebar":f.value??"default-sidebar");function S({originalEvent:T}){T.preventDefault()}a(S,"onResizestart");const k=y(()=>`main-splitter${h.value?"-with-right-panel":""}-${l.value}`),w=y(()=>{if(l.value==="left")return{display:g.value?"flex":"none"}}),C=y(()=>{if(l.value==="right")return{display:g.value?"flex":"none"}});return(T,I)=>(p(),x("div",rd,[_e(T.$slots,"workflow-tabs",{},void 0,!0),c("div",{class:Q(["pointer-events-none flex flex-1 overflow-hidden",{"flex-row":l.value==="left","flex-row-reverse":l.value==="right"}])},[c("div",ld,[_e(T.$slots,"side-toolbar",{},void 0,!0)]),(p(),O(u(Ua),{key:k.value,class:"bg-transparent pointer-events-none border-none flex-1 overflow-hidden","state-key":b.value,"state-storage":"local",onResizestart:S},{default:M(()=>[!u(d)&&(l.value==="left"||u(h))?(p(),O(u(At),{key:0,class:Q(l.value==="left"?u(ae)("side-bar-panel bg-comfy-menu-bg pointer-events-auto",g.value&&"min-w-78"):"bg-comfy-menu-bg pointer-events-auto"),"min-size":l.value==="left"?10:15,size:20,style:be(w.value),role:l.value==="left"?"complementary":void 0,"aria-label":l.value==="left"?u(n)("sideToolbar.sidebar"):void 0},{default:M(()=>[l.value==="left"&&g.value?_e(T.$slots,"side-bar-panel",{key:0},void 0,!0):l.value==="right"?_e(T.$slots,"right-side-panel",{key:1},void 0,!0):A("",!0)]),_:3},8,["class","min-size","style","role","aria-label"])):A("",!0),L(u(At),{size:80,class:"flex flex-col"},{default:M(()=>[_e(T.$slots,"topmenu",{sidebarPanelVisible:g.value},void 0,!0),L(u(Ua),{class:"bg-transparent pointer-events-none border-none splitter-overlay-bottom mr-1 mb-1 ml-1 flex-1",layout:"vertical","pt:gutter":u(ae)("rounded-tl-lg rounded-tr-lg ",!(u(v)&&!u(d))&&"hidden"),"state-key":"bottom-panel-splitter","state-storage":"local",onResizestart:S},{default:M(()=>[L(u(At),{class:"graph-canvas-panel relative"},{default:M(()=>[_e(T.$slots,"graph-canvas-panel",{},void 0,!0)]),_:3}),ce(L(u(At),{class:"bottom-panel border border-(--p-panel-border-color) max-w-full overflow-x-auto bg-comfy-menu-bg pointer-events-auto rounded-lg"},{default:M(()=>[_e(T.$slots,"bottom-panel",{},void 0,!0)]),_:3},512),[[tt,u(v)&&!u(d)]])]),_:3},8,["pt:gutter"])]),_:3}),!u(d)&&(l.value==="right"||u(h))?(p(),O(u(At),{key:1,class:Q(l.value==="right"?u(ae)("side-bar-panel bg-comfy-menu-bg pointer-events-auto",g.value&&"min-w-78"):"bg-comfy-menu-bg pointer-events-auto"),"min-size":l.value==="right"?10:15,size:20,style:be(C.value),role:l.value==="right"?"complementary":void 0,"aria-label":l.value==="right"?u(n)("sideToolbar.sidebar"):void 0},{default:M(()=>[l.value==="left"?_e(T.$slots,"right-side-panel",{key:0},void 0,!0):l.value==="right"&&g.value?_e(T.$slots,"side-bar-panel",{key:1},void 0,!0):A("",!0)]),_:3},8,["class","min-size","style","role","aria-label"])):A("",!0)]),_:3},8,["state-key"]))],2)]))}}),ud=Be(id,[["__scopeId","data-v-78b7f6de"]]);const at=a(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");var dd=Fe&&window.__CONFIG__?.subscription_required?zn(()=>Fa(()=>import("./CloudRunButtonWrapper-Cub7EB34.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28]),import.meta.url)):zn(()=>Fa(()=>import("./ComfyQueueButton-BppnHbrl.js"),__vite__mapDeps([29,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]),import.meta.url)),cd=q({__name:"ComfyActionbar",setup(e){const o=ne(),t=Ce(),{t:s}=ue(),{isIdle:r}=ze(it()),n=y(()=>o.get("Comfy.UseNewMenu")),l=y(()=>n.value!=="Disabled"),i=E(null),d=E(null),f=Un("Comfy.MenuPosition.Docked",!0),m=Un("Comfy.MenuPosition.Floating",{x:0,y:0}),{x:v,y:h,style:g,isDragging:b}=El(i,{initialValue:{x:0,y:0},handle:d,containerElement:document.body});Ut([v,h],([U,j])=>{m.value={x:U,y:j}},{debounce:300});const S=a(()=>{if(i.value){const U=window.innerWidth,j=window.innerHeight,W=i.value.offsetWidth,F=i.value.offsetHeight;if(W===0||F===0)return;if(m.value.x!==0||m.value.y!==0){v.value=Jt(m.value.x,0,U-W),h.value=Jt(m.value.y,0,j-F),C();return}v.value===0&&h.value===0&&(v.value=Jt((U-W)/2,0,U-W),h.value=Jt(j-F-10,0,j-F),C())}},"setInitialPosition");async function k(){await Ue(),S()}a(k,"comfyRunButtonResolved"),ie(l,async U=>{U&&await Ue(S)}),Oe(d,"mousedown",()=>{Le()?.trackUiButtonClicked({button_id:"actionbar_run_handle_drag_start"})});const w=E({x:v.value,y:h.value,windowWidth:window.innerWidth,windowHeight:window.innerHeight}),C=a(()=>{w.value={x:v.value,y:h.value,windowWidth:window.innerWidth,windowHeight:window.innerHeight}},"captureLastDragState");ie(b,U=>{U||C()},{immediate:!0}),Oe(window,"resize",a(()=>{if(i.value){const U=window.innerWidth,j=window.innerHeight,W=i.value.offsetWidth,F=i.value.offsetHeight,G=w.value.x,z=w.value.windowWidth-(w.value.x+W),K=w.value.y,H=w.value.windowHeight-(w.value.y+F),J=[{edge:"left",distance:G},{edge:"right",distance:z},{edge:"top",distance:K},{edge:"bottom",distance:H}].reduce(($e,se)=>se.distance<$e.distance?se:$e),te=w.value.y/w.value.windowHeight,he=w.value.x/w.value.windowWidth;J.edge==="left"?(v.value=J.distance,h.value=te*j):J.edge==="right"?(v.value=U-W-J.distance,h.value=te*j):J.edge==="top"?(v.value=he*U,h.value=J.distance):(v.value=he*U,h.value=j-F-J.distance),v.value=Jt(v.value,0,U-W),h.value=Jt(h.value,0,j-F)}},"adjustMenuPosition"));const I=E(!1),_=a(()=>{b.value&&(I.value=!0)},"onMouseEnterDropZone"),N=a(()=>{b.value&&(I.value=!1)},"onMouseLeaveDropZone");ie(b,U=>{U?f.value&&(f.value=!1):(I.value&&(f.value=!0),I.value=!1)});const $=y(()=>at(s("menu.interrupt"))),V=a(async()=>{r.value||await t.execute("Comfy.Interrupt")},"cancelCurrentJob"),B=y(()=>ae("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",I.value&&"border-[3px] opacity-100 scale-105 shadow-[0_0_20px] shadow-blue-500")),D=y(()=>ae("actionbar pointer-events-auto z-1300",b.value&&"select-none pointer-events-none",f.value?"p-0 static border-none bg-transparent":"fixed shadow-interface"));return(U,j)=>{const W=Pe("tooltip");return p(),x("div",{class:Q(["flex h-full items-center",u(ae)(!u(f)&&"-ml-2")])},[u(b)&&!u(f)?(p(),x("div",{key:0,class:Q(B.value),onMouseenter:_,onMouseleave:N},R(u(s)("actionbar.dockToTop")),35)):A("",!0),L(u(nn),{class:Q(["pointer-events-auto",D.value]),style:be(u(g)),pt:{header:{class:"hidden"},content:{class:u(f)?"p-0":"p-1"}}},{default:M(()=>[c("div",{ref_key:"panelRef",ref:i,class:"flex items-center select-none gap-2"},[c("span",{ref_key:"dragHandleRef",ref:d,class:Q(u(ae)("drag-handle cursor-grab w-3 h-max",u(b)&&"cursor-grabbing"))},null,2),(p(),O(dl,{onResolve:k},{default:M(()=>[L(u(dd))]),_:1})),ce((p(),O(X,{variant:"destructive",size:"icon",disabled:u(r),"aria-label":u(s)("menu.interrupt"),onClick:V},{default:M(()=>j[0]||(j[0]=[c("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["disabled","aria-label"])),[[W,$.value,void 0,{bottom:!0}]])],512)]),_:1},8,["style","class","pt"])],2)}}}),pd=cd;function wr(e,o={}){const{isRoot:t=!0,includeDelete:s=!0,workflow:r}=o,{t:n}=ue(),l=Ve(),i=nt(),d=Ci(),f=Ce(),m=wn(),v=y(()=>r?.value??l.activeWorkflow),h=a(async g=>{!g||g===l.activeWorkflow||await i.openWorkflow(g)},"ensureWorkflowActive");return{menuItems:y(()=>{const g=v.value,b=g?m.isSubgraphBlueprint(g):!1,S=[],k=a((w,C,T,I=!0,_=!1,N=!1)=>{I&&(N&&S.push({separator:!0}),S.push({label:w,icon:C,command:T,disabled:_}))},"addItem");return k(n("g.rename"),"pi pi-pencil",async()=>{await h(v.value),e()},!0,t&&!g?.isPersisted),k(n("breadcrumbsMenu.duplicate"),"pi pi-copy",async()=>{g&&await i.duplicateWorkflow(g)},t&&!b),k(n("menuLabels.Save"),"pi pi-save",async()=>{await h(g),await f.execute("Comfy.SaveWorkflow")},t,!1,!0),k(n("menuLabels.Save As"),"pi pi-save",async()=>{await h(g),await f.execute("Comfy.SaveWorkflowAs")},t),k(d.isBookmarked(g?.path??"")?n("tabMenu.removeFromBookmarks"):n("tabMenu.addToBookmarks"),"pi pi-bookmark"+(d.isBookmarked(g?.path??"")?"-fill":""),async()=>{g?.path&&await d.toggleBookmarked(g.path)},t,g?.isTemporary??!1),k(n("menuLabels.Export"),"pi pi-download",async()=>{await h(g),await f.execute("Comfy.ExportWorkflow")},t),k(n("menuLabels.Export (API)"),"pi pi-download",async()=>{await h(g),await f.execute("Comfy.ExportWorkflowAPI")},t),k(n("breadcrumbsMenu.clearWorkflow"),"pi pi-trash",async()=>{await h(g),await f.execute("Comfy.ClearWorkflow")},!0,!1,!0),k(n("subgraphStore.publish"),"pi pi-upload",async()=>{g&&await i.saveWorkflowAs(g)},t&&b,!1,!0),k(n(b?"breadcrumbsMenu.deleteBlueprint":"breadcrumbsMenu.deleteWorkflow"),"pi pi-times",async()=>{g&&await i.deleteWorkflow(g)},t&&s,!1,!0),S})}}a(wr,"useWorkflowActionsMenu");var fd={key:0,class:"icon-[lucide--triangle-alert] text-warning-background"},vd={class:"p-breadcrumb-item-label px-2"},md={key:2,class:"pi pi-angle-down text-[10px]"},gd=q({__name:"SubgraphBreadcrumbItem",props:{item:{},isActive:{type:Boolean,default:!1}},setup(e,{expose:o}){const t=e,s=Ct(),r=y(()=>qu(Y.rootGraph,s.nodeDefsByName)),{t:n}=ue(),l=E(),i=vt(),d=Ve(),f=nt(),m=E(!1),v=E(),h=E(),g=E(),b=a(async(N,$)=>{if(N&&N!==$){if(t.item.updateTitle?.(N),d.activeSubgraph)d.activeSubgraph.name=N;else if(d.activeWorkflow)try{await f.renameWorkflow(d.activeWorkflow,er.basePath+hi(N))}catch(B){console.error(B),i.showErrorDialog(B);return}const V=bn();V.restoreState(V.exportState())}},"rename"),S=t.item.key==="root",k=y(()=>r.value&&S?n("breadcrumbsMenu.missingNodesWarning"):t.item.label),w=a(async()=>{if(S&&g.value?.offsetParent===null){await Ce().execute("Comfy.RenameWorkflow");return}m.value=!0,v.value=t.item.label,Ue(()=>{h.value?.$el&&(h.value.$el.focus(),h.value.$el.select(),g.value&&(h.value.$el.style.width=`${Math.max(200,g.value.offsetWidth)}px`))})},"startRename"),{menuItems:C}=wr(w,{isRoot:S}),T=a(N=>{m.value||(N.detail===1?t.isActive?l.value?.toggle(N):t.item.command?.({item:t.item,originalEvent:N}):t.isActive&&N.detail===2&&(l.value?.hide(),N.stopPropagation(),N.preventDefault(),w()))},"handleClick"),I=a(async N=>{N&&await b(v.value,t.item.label),m.value=!1},"inputBlur");return o({toggleMenu:a(N=>{l.value?.toggle(N)},"toggleMenu")}),(N,$)=>{const V=Pe("tooltip");return p(),x(Z,null,[ce((p(),x("a",{ref_key:"wrapperRef",ref:g,draggable:"false",href:"#",class:Q(["p-breadcrumb-item-link h-8 cursor-pointer px-2",{"flex items-center gap-1":N.isActive,"p-breadcrumb-item-link-menu-visible":l.value?.overlayVisible,"p-breadcrumb-item-link-icon-visible":N.isActive,"active-breadcrumb-item":N.isActive}]),onClick:T},[r.value&&S?(p(),x("i",fd)):A("",!0),c("span",vd,R(N.item.label),1),N.item.isBlueprint?(p(),O(u(to),{key:1,value:"Blueprint",severity:"primary"})):A("",!0),N.isActive?(p(),x("i",md)):A("",!0)],2)),[[V,{value:k.value,showDelay:512},void 0,{bottom:!0}]]),N.isActive||S?(p(),O(u(Ms),{key:0,ref_key:"menu",ref:l,model:u(C),popup:!0,pt:{root:{style:"background-color: var(--comfy-menu-bg)"},itemLink:{class:"py-2"}}},null,8,["model"])):A("",!0),m.value?(p(),O(u(Jr),{key:1,ref_key:"itemInputRef",ref:h,modelValue:v.value,"onUpdate:modelValue":$[0]||($[0]=B=>v.value=B),class:"fixed z-10000 px-2 py-2 text-[.8rem]",onBlur:$[1]||($[1]=B=>I(!1)),onClick:$[2]||($[2]=ke(()=>{},["stop"])),onKeydown:[$[3]||($[3]=To(B=>I(!0),["enter"])),$[4]||($[4]=To(B=>I(!1),["esc"]))]},null,8,["modelValue"])):A("",!0)],64)}}}),hd=Be(gd,[["__scopeId","data-v-d7b126c3"]]);const _r=a((e,o)=>{o={debounceTime:25,useMutationObserver:!0,useResizeObserver:!0,...o};const t=E(!1),s=[],r=E(!1),n=a(()=>{t.value=e.scrollWidth>e.clientWidth,o.onCheck?.(t.value)},"checkOverflowFn"),l=o.debounceTime?ca(n,o.debounceTime):n;return o.useMutationObserver&&s.push(yl(e,l,{subtree:!0,childList:!0}).stop),o.useResizeObserver&&s.push(Vs(e,l).stop),{isOverflowing:Ga(t),disposed:Ga(r),checkOverflow:l,dispose:a(()=>{r.value=!0,s.forEach(i=>i())},"dispose")}},"useOverflowObserver");var rs=28,ls=8,Ta=8,is=20,yd=q({__name:"SubgraphBreadcrumb",setup(e){const o=Ve(),t=bn(),s=E(),r=E(),n=a((C,T)=>{C.key==="root"&&(r.value=T)},"setItemRef"),l=y(()=>o.activeWorkflow?.filename),i=y(()=>wn().isSubgraphBlueprint(o.activeWorkflow)),d=E(!1),f=E(!1),m=y(()=>t.navigationStack.length>0),v=y(()=>({label:l.value,icon:"pi pi-home",key:"root",isBlueprint:i.value,command:a(()=>{Le()?.trackUiButtonClicked({button_id:"breadcrumb_subgraph_root_selected"});const C=fe().getCanvas();if(!C.graph)throw new TypeError("Canvas has no graph");C.setGraph(C.graph.rootGraph)},"command")})),h=y(()=>{const C=t.navigationStack.map(T=>({label:T.name,key:`subgraph-${T.id}`,command:a(()=>{Le()?.trackUiButtonClicked({button_id:"breadcrumb_subgraph_item_selected"});const I=fe().getCanvas();if(!I.graph)throw new TypeError("Canvas has no graph");I.setGraph(T)},"command"),updateTitle:a(I=>{const _=fe().getCanvas().graph?.rootGraph;_&&Gl(_,T.id,N=>{N.title=I})},"updateTitle")}));return[v.value,...C]}),g=y(()=>h.value.at(-1)?.key),b=a(C=>{Le()?.trackUiButtonClicked({button_id:"breadcrumb_subgraph_menu_selected"}),r.value?.toggleMenu(C)},"handleMenuClick"),S=a(()=>{Ce().execute("Comfy.Graph.ExitSubgraph")},"handleBackClick"),k=y(()=>s.value?s.value.$el?.querySelector(".p-breadcrumb-list"):null);let w;return ie(k,C=>{w?.dispose(),w=void 0,C&&(w=_r(C,{onCheck:a(T=>{if(f.value=T,d.value){if(!T){const I=[...C.querySelectorAll(".p-breadcrumb-item")];if(I.length<3)return;const _=I.filter(U=>U.querySelector(".p-breadcrumb-item-link-icon-visible")).length,N=C.querySelectorAll(".p-breadcrumb-separator"),$=N[N.length-1].offsetWidth,V=(rs+Ta+Ta)*I.length+_*is,B=(I.length-1)*$,D=(I.length-1)*(ls*2);V+B+D<=C.clientWidth&&(d.value=!1)}}else T&&(d.value=!0)},"onCheck")}))}),Us(()=>{w?.disposed.value||w?.checkOverflow()}),(C,T)=>(p(),x("div",{class:Q(["subgraph-breadcrumb flex w-auto drop-shadow-[var(--interface-panel-drop-shadow)]",{"subgraph-breadcrumb-collapse":d.value,"subgraph-breadcrumb-overflow":f.value}]),style:be({"--p-breadcrumb-gap":"0px","--p-breadcrumb-item-margin":`${ls/2}px`,"--p-breadcrumb-item-min-width":`${rs}px`,"--p-breadcrumb-item-padding":`${Ta}px`,"--p-breadcrumb-icon-width":`${is}px`})},[L(u(Rn),{class:"context-menu-button pointer-events-auto h-8 w-8 shrink-0 border border-transparent bg-transparent p-0 transition-all hover:rounded-lg hover:border-interface-stroke hover:bg-comfy-menu-bg",icon:"pi pi-bars",text:"",severity:"secondary",size:"small",onClick:b}),m.value?(p(),O(u(Rn),{key:0,class:"back-button pointer-events-auto h-8 w-8 shrink-0 border border-transparent bg-transparent p-0 transition-all hover:rounded-lg hover:border-interface-stroke hover:bg-comfy-menu-bg",text:"",severity:"secondary",size:"small",onClick:S},{default:M(()=>T[0]||(T[0]=[c("i",{class:"icon-[lucide--undo-2]"},null,-1)])),_:1})):A("",!0),L(u(jr),{ref_key:"breadcrumbRef",ref:s,class:Q(["w-fit rounded-lg p-0",{hidden:!m.value}]),model:h.value,pt:{item:{class:"pointer-events-auto"}},"aria-label":C.$t("g.graphNavigation")},{item:M(({item:I})=>[L(hd,{ref:a(_=>n(I,_),"ref"),item:I,"is-active":I.key===g.value},null,8,["item","is-active"])]),separator:M(()=>T[1]||(T[1]=[c("span",{style:{transform:"scale(1.5)"}}," / ",-1)])),_:1},8,["class","model","aria-label"])],6))}}),bd=Be(yd,[["__scopeId","data-v-50f75d4e"]]),wd={class:"flex flex-col gap-3 p-2"},_d={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"},Td={class:"flex items-center gap-1 text-text-secondary"},Nd={class:"inline-block max-w-[10rem] truncate"},Id={class:"flex items-center gap-1"},Pd={class:"flex items-center gap-4 text-[12px] text-text-primary"},$d={class:"flex items-center gap-2"},Md={class:"opacity-90"},Dd={class:"font-bold"},Ld={class:"ml-1"},Ad={class:"flex items-center gap-2"},Ed={class:"opacity-90"},Vd={class:"font-bold"},Od={class:"ml-1"},Rd=q({__name:"QueueOverlayActive",props:{totalProgressStyle:{},currentNodeProgressStyle:{},totalPercentFormatted:{},currentNodePercentFormatted:{},currentNodeName:{},runningCount:{},queuedCount:{},bottomRowClass:{}},emits:["interruptAll","clearQueued","viewAllJobs"],setup(e){const{t:o}=ue(),t=y(()=>at(o("sideToolbar.queueProgressOverlay.cancelJobTooltip"))),s=y(()=>at(o("sideToolbar.queueProgressOverlay.clearQueueTooltip")));return(r,n)=>{const l=Rs("i18n-t"),i=Pe("tooltip");return p(),x("div",wd,[c("div",_d,[c("div",kd,[c("div",{class:"absolute inset-0 h-full rounded-full transition-[width]",style:be(r.totalProgressStyle)},null,4),c("div",{class:"absolute inset-0 h-full rounded-full transition-[width]",style:be(r.currentNodeProgressStyle)},null,4)]),c("div",Cd,[c("div",Sd,[L(l,{keypath:"sideToolbar.queueProgressOverlay.total"},{percent:M(()=>[c("span",xd,R(r.totalPercentFormatted),1)]),_:1})]),c("div",Td,[c("span",null,R(u(o)("sideToolbar.queueProgressOverlay.currentNode")),1),c("span",Nd,R(r.currentNodeName),1),c("span",Id,[c("span",null,R(r.currentNodePercentFormatted),1)])])])]),c("div",{class:Q(r.bottomRowClass)},[c("div",Pd,[c("div",$d,[c("span",Md,[c("span",Dd,R(r.runningCount),1),c("span",Ld,R(u(o)("sideToolbar.queueProgressOverlay.running")),1)]),r.runningCount>0?ce((p(),O(X,{key:0,variant:"destructive",size:"icon","aria-label":u(o)("sideToolbar.queueProgressOverlay.interruptAll"),onClick:n[0]||(n[0]=d=>r.$emit("interruptAll"))},{default:M(()=>n[3]||(n[3]=[c("i",{class:"icon-[lucide--x] block size-4 leading-none text-text-primary"},null,-1)])),_:1},8,["aria-label"])),[[i,t.value,void 0,{top:!0}]]):A("",!0)]),c("div",Ad,[c("span",Ed,[c("span",Vd,R(r.queuedCount),1),c("span",Od,R(u(o)("sideToolbar.queueProgressOverlay.queuedSuffix")),1)]),r.queuedCount>0?ce((p(),O(X,{key:0,variant:"destructive",size:"icon","aria-label":u(o)("sideToolbar.queueProgressOverlay.clearQueued"),onClick:n[1]||(n[1]=d=>r.$emit("clearQueued"))},{default:M(()=>n[4]||(n[4]=[c("i",{class:"icon-[lucide--list-x] block size-4 leading-none text-text-primary"},null,-1)])),_:1},8,["aria-label"])),[[i,s.value,void 0,{top:!0}]]):A("",!0)])]),L(X,{class:"min-w-30 flex-1 px-2 py-0",variant:"secondary",size:"md",onClick:n[2]||(n[2]=d=>r.$emit("viewAllJobs"))},{default:M(()=>[Ie(R(u(o)("sideToolbar.queueProgressOverlay.viewAllJobs")),1)]),_:1})],2)])}}}),Wd=Rd,Bd={class:"inline-flex items-center gap-2"},zd={key:0,class:"inline-flex items-center"},Ud={class:"inline-flex items-center gap-2"},Fd={key:0,class:"relative inline-flex h-6 items-center"},Gd=["src","alt"],Hd={class:"text-[14px] font-normal text-text-primary"},jd={class:"font-bold"},qd={class:"font-bold"},Kd={class:"font-bold"},Qd={class:"font-bold"},Yd=q({__name:"CompletionSummaryBanner",props:{mode:{},completedCount:{},failedCount:{},thumbnailUrls:{default:a(()=>[],"default")},ariaLabel:{}},emits:["click"],setup(e,{emit:o}){const t=e,s=o;return(r,n)=>{const l=Rs("i18n-t");return p(),O(X,{variant:"secondary",size:"lg",class:"group w-full justify-between gap-3 p-1 text-left font-normal hover:cursor-pointer focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-background","aria-label":t.ariaLabel,onClick:n[0]||(n[0]=i=>s("click",i))},{default:M(()=>[c("span",Bd,[t.mode==="allFailed"?(p(),x("span",zd,n[1]||(n[1]=[c("i",{class:"ml-1 icon-[lucide--circle-alert] block size-4 leading-none text-destructive-background"},null,-1)]))):A("",!0),c("span",Ud,[t.mode!=="allFailed"?(p(),x("span",Fd,[(p(!0),x(Z,null,ye(t.thumbnailUrls,(i,d)=>(p(),x("span",{key:i+d,class:"inline-block h-6 w-6 overflow-hidden rounded-[6px] border-0 bg-secondary-background",style:be({marginLeft:d===0?"0":"-12px"})},[c("img",{src:i,alt:r.$t("sideToolbar.queueProgressOverlay.preview"),class:"h-full w-full object-cover"},null,8,Gd)],4))),128))])):A("",!0),c("span",Hd,[t.mode==="allSuccess"?(p(),O(l,{key:0,keypath:"sideToolbar.queueProgressOverlay.jobsCompleted",plural:t.completedCount},{count:M(()=>[c("span",jd,R(t.completedCount),1)]),_:1},8,["plural"])):t.mode==="mixed"?(p(),x(Z,{key:1},[L(l,{keypath:"sideToolbar.queueProgressOverlay.jobsCompleted",plural:t.completedCount},{count:M(()=>[c("span",qd,R(t.completedCount),1)]),_:1},8,["plural"]),n[2]||(n[2]=c("span",null,", ",-1)),L(l,{keypath:"sideToolbar.queueProgressOverlay.jobsFailed",plural:t.failedCount},{count:M(()=>[c("span",Kd,R(t.failedCount),1)]),_:1},8,["plural"])],64)):(p(),O(l,{key:2,keypath:"sideToolbar.queueProgressOverlay.jobsFailed",plural:t.failedCount},{count:M(()=>[c("span",Qd,R(t.failedCount),1)]),_:1},8,["plural"]))])])]),n[3]||(n[3]=c("span",{class:"flex items-center justify-center rounded p-1 text-text-secondary transition-colors duration-200 ease-in-out"},[c("i",{class:"icon-[lucide--chevron-down] block size-4 leading-none"})],-1))]),_:1},8,["aria-label"])}}}),Jd=Yd,Xd={class:"pointer-events-auto"},Zd=q({__name:"QueueOverlayEmpty",props:{summary:{}},emits:["summaryClick"],setup(e){const{t:o}=ue();return(t,s)=>(p(),x("div",Xd,[L(Jd,{mode:t.summary.mode,"completed-count":t.summary.completedCount,"failed-count":t.summary.failedCount,"thumbnail-urls":t.summary.thumbnailUrls,"aria-label":u(o)("sideToolbar.queueProgressOverlay.expandCollapsedQueue"),onClick:s[0]||(s[0]=r=>t.$emit("summaryClick"))},null,8,["mode","completed-count","failed-count","thumbnail-urls","aria-label"])]))}}),ec=Zd,tc={class:"flex h-12 items-center justify-between gap-2 border-b border-interface-stroke px-2"},oc={class:"px-2 text-[14px] font-normal text-text-primary"},ac={key:0,class:"ml-4 inline-flex items-center gap-1 text-blue-100"},nc={class:"font-bold"},sc={class:"ml-1"},rc={key:0,class:"flex items-center gap-1"},lc={class:"flex flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3 font-inter"},ic=q({__name:"QueueOverlayHeader",props:{headerTitle:{},showConcurrentIndicator:{type:Boolean},concurrentWorkflowCount:{}},emits:["clearHistory"],setup(e,{emit:o}){const t=o,{t:s}=ue(),r=E(null),n=y(()=>at(s("g.more"))),l=a(d=>{r.value?.toggle(d)},"onMoreClick"),i=a(()=>{r.value?.hide(),t("clearHistory")},"onClearHistoryFromMenu");return(d,f)=>{const m=Pe("tooltip");return p(),x("div",tc,[c("div",oc,[c("span",null,R(d.headerTitle),1),d.showConcurrentIndicator?(p(),x("span",ac,[f[0]||(f[0]=c("span",{class:"inline-block size-2 rounded-full bg-blue-100"},null,-1)),c("span",null,[c("span",nc,R(d.concurrentWorkflowCount),1),c("span",sc,R(u(s)("sideToolbar.queueProgressOverlay.running")),1)])])):A("",!0)]),u(Fe)?A("",!0):(p(),x("div",rc,[ce((p(),O(X,{variant:"textonly",size:"icon","aria-label":u(s)("sideToolbar.queueProgressOverlay.moreOptions"),onClick:l},{default:M(()=>f[1]||(f[1]=[c("i",{class:"icon-[lucide--more-horizontal] block size-4 leading-none text-text-secondary"},null,-1)])),_:1},8,["aria-label"])),[[m,n.value,void 0,{top:!0}]]),L(u(wt),{ref_key:"morePopoverRef",ref:r,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:M(()=>[c("div",lc,[L(X,{class:"w-full justify-start",variant:"textonly",size:"sm","aria-label":u(s)("sideToolbar.queueProgressOverlay.clearHistory"),onClick:i},{default:M(()=>[f[2]||(f[2]=c("i",{class:"icon-[lucide--file-x-2] size-4 text-muted"},null,-1)),c("span",null,R(u(s)("sideToolbar.queueProgressOverlay.clearHistory")),1)]),_:1},8,["aria-label"])])]),_:1},512)]))])}}}),uc=ic,dc={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"},cc={key:0,class:"px-2 py-1"},pc=q({__name:"JobContextMenu",props:{entries:{}},emits:["action"],setup(e,{expose:o,emit:t}){const s=t,r=E(null);function n(d){r.value&&r.value.toggle(d)}a(n,"open");function l(){r.value?.hide()}a(l,"hide");function i(d){s("action",d)}return a(i,"onEntry"),o({open:n,hide:l}),(d,f)=>(p(),O(u(wt),{ref_key:"jobItemPopoverRef",ref:r,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:M(()=>[c("div",dc,[(p(!0),x(Z,null,ye(d.entries,m=>(p(),x(Z,{key:m.key},[m.kind==="divider"?(p(),x("div",cc,f[0]||(f[0]=[c("div",{class:"h-px bg-interface-stroke"},null,-1)]))):(p(),O(X,{key:1,class:"w-full justify-start bg-transparent",variant:"textonly",size:"sm","aria-label":m.label,onClick:a(v=>i(m),"onClick")},{default:M(()=>[m.icon?(p(),x("i",{key:0,class:Q([m.icon,"block size-4 shrink-0 leading-none text-text-secondary"])},null,2)):A("",!0),c("span",null,R(m.label),1)]),_:2},1032,["aria-label","onClick"]))],64))),128))])]),_:1},512))}}),fc=pc,vc={class:"flex items-center justify-between gap-2 px-3"},mc={class:"min-w-0 flex-1 overflow-x-auto"},gc={class:"inline-flex items-center gap-1 whitespace-nowrap"},hc={class:"ml-2 flex shrink-0 items-center gap-2"},yc={key:0,class:"pointer-events-none absolute -top-1 -right-1 inline-block size-2 rounded-full bg-base-foreground"},bc={class:"flex min-w-[12rem] flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},wc={key:0,class:"icon-[lucide--check] size-4"},_c={key:0,class:"icon-[lucide--check] block size-4 leading-none text-text-secondary"},kc={key:0,class:"pointer-events-none absolute -top-1 -right-1 inline-block size-2 rounded-full bg-base-foreground"},Cc={class:"flex min-w-[12rem] flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},Sc={key:0,class:"icon-[lucide--check] size-4 text-text-secondary"},xc={key:0,class:"mx-2 mt-1 h-px"},Tc=q({__name:"JobFiltersBar",props:{selectedJobTab:{},selectedWorkflowFilter:{},selectedSortMode:{},hasFailedJobs:{type:Boolean}},emits:["update:selectedJobTab","update:selectedWorkflowFilter","update:selectedSortMode"],setup(e,{emit:o}){const t=e,s=o,{t:r}=ue(),n=E(null),l=E(null),i=y(()=>at(r("sideToolbar.queueProgressOverlay.filterBy"))),d=y(()=>at(r("sideToolbar.queueProgressOverlay.sortBy"))),f=!Fe,m=y(()=>t.hasFailedJobs?es:es.filter(w=>w!=="Failed")),v=a(w=>{n.value&&n.value.toggle(w)},"onFilterClick"),h=a(w=>{n.value?.hide?.(),s("update:selectedWorkflowFilter",w)},"selectWorkflowFilter"),g=a(w=>{l.value&&l.value.toggle(w)},"onSortClick"),b=a(w=>{l.value?.hide?.(),s("update:selectedSortMode",w)},"selectSortMode"),S=a(w=>r(w==="All"?"g.all":w==="Completed"?"g.completed":"g.failed"),"tabLabel"),k=a(w=>w==="mostRecent"?r("queue.jobList.sortMostRecent"):w==="totalGenerationTime"?r("queue.jobList.sortTotalGenerationTime"):"","sortLabel");return(w,C)=>{const T=Pe("tooltip");return p(),x("div",vc,[c("div",mc,[c("div",gc,[(p(!0),x(Z,null,ye(m.value,I=>(p(),O(X,{key:I,variant:w.selectedJobTab===I?"secondary":"muted-textonly",size:"sm",class:"px-3",onClick:a(_=>w.$emit("update:selectedJobTab",I),"onClick")},{default:M(()=>[Ie(R(S(I)),1)]),_:2},1032,["variant","onClick"]))),128))])]),c("div",hc,[f?ce((p(),O(X,{key:0,variant:"secondary",size:"icon","aria-label":u(r)("sideToolbar.queueProgressOverlay.filterJobs"),onClick:v},{default:M(()=>[C[2]||(C[2]=c("i",{class:"icon-[lucide--list-filter] size-4"},null,-1)),w.selectedWorkflowFilter!=="all"?(p(),x("span",yc)):A("",!0)]),_:1},8,["aria-label"])),[[T,i.value,void 0,{top:!0}]]):A("",!0),f?(p(),O(u(wt),{key:1,ref_key:"filterPopoverRef",ref:n,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:M(()=>[c("div",bc,[L(X,{class:"w-full justify-between",variant:"textonly",size:"sm",onClick:C[0]||(C[0]=I=>h("all"))},{default:M(()=>[c("span",null,R(u(r)("sideToolbar.queueProgressOverlay.filterAllWorkflows")),1),w.selectedWorkflowFilter==="all"?(p(),x("i",wc)):A("",!0)]),_:1}),C[3]||(C[3]=c("div",{class:"mx-2 mt-1 h-px"},null,-1)),L(X,{class:"w-full justify-between",variant:"textonly",onClick:C[1]||(C[1]=I=>h("current"))},{default:M(()=>[c("span",null,R(u(r)("sideToolbar.queueProgressOverlay.filterCurrentWorkflow")),1),w.selectedWorkflowFilter==="current"?(p(),x("i",_c)):A("",!0)]),_:1})])]),_:1},512)):A("",!0),ce((p(),O(X,{variant:"secondary",size:"icon","aria-label":u(r)("sideToolbar.queueProgressOverlay.sortJobs"),onClick:g},{default:M(()=>[C[4]||(C[4]=c("i",{class:"icon-[lucide--arrow-up-down] size-4"},null,-1)),w.selectedSortMode!=="mostRecent"?(p(),x("span",kc)):A("",!0)]),_:1},8,["aria-label"])),[[T,d.value,void 0,{top:!0}]]),L(u(wt),{ref_key:"sortPopoverRef",ref:l,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:M(()=>[c("div",Cc,[(p(!0),x(Z,null,ye(u(ts),(I,_)=>(p(),x(Z,{key:I},[L(X,{class:"w-full justify-between",variant:"textonly",size:"sm",onClick:a(N=>b(I),"onClick")},{default:M(()=>[c("span",null,R(k(I)),1),w.selectedSortMode===I?(p(),x("i",Sc)):A("",!0)]),_:2},1032,["onClick"]),_<u(ts).length-1?(p(),x("div",xc)):A("",!0)],64))),128))])]),_:1},512)])])}}}),Nc=Tc;const Ic=a(({taskForJob:e,copyToClipboard:o,dialog:t})=>{const s=y(()=>e.value?.errorMessage??"");return{errorMessageValue:s,copyErrorMessage:a(()=>{s.value&&o(s.value)},"copyErrorMessage"),reportJobError:a(()=>{const l=e.value?.executionError;if(l){t.showExecutionErrorDialog(l);return}s.value&&t.showErrorDialog(new Error(s.value),{reportType:"queueJobError"})},"reportJobError")}},"useJobErrorReporting"),Ja=a(e=>{const o=Math.max(0,Math.floor(e/1e3));return`${Math.floor(o/60)}m ${o%60}s`},"formatElapsedTime");var Pc=a(e=>e.historyTasks.map(o=>Number(o.executionTimeInSeconds)).filter(o=>typeof o=="number"&&!Number.isNaN(o)),"pickRecentDurations");const $c=a(({queueStore:e,executionStore:o,taskForJob:t,jobState:s,firstSeenTs:r,jobsAhead:n,nowTs:l})=>{const i=y(()=>o.runningWorkflowCount),d=y(()=>s.value==="pending"&&!!r.value&&(i.value??0)>1),f=y(()=>Pc(e).slice(-20)),m=y(()=>{const v=f.value;if(!v.length)return null;const h=v.slice().sort((C,T)=>C-T),g=h.reduce((C,T)=>C+T,0)/h.length,b=h[Math.min(h.length-1,Math.floor(h.length*.75))],S=e.runningTasks,k=l.value,w=S.map(C=>C.executionStartTimestamp).filter(C=>typeof C=="number").map(C=>{const T=Math.max(0,Math.floor((k-C)/1e3));return{lo:Math.max(0,Math.round(g-T)),hi:Math.max(0,Math.round(b-T))}});return w.length?[w.reduce((C,T)=>Math.min(C,T.lo),1/0),w.reduce((C,T)=>Math.min(C,T.hi),1/0)]:null});return{runningWorkflowCount:i,showParallelQueuedStats:d,estimateRangeSeconds:y(()=>{const v=f.value;if(!v.length)return null;const h=n.value;if(h==null)return null;const g=v.slice().sort((C,T)=>C-T),b=g.reduce((C,T)=>C+T,0)/g.length,S=g[Math.min(g.length-1,Math.floor(g.length*.75))];if(h<=0)return m.value??[0,0];const k=Math.max(1,i.value||1),w=Math.ceil(h/k);return[Math.round(b*w),Math.round(S*w)]}),estimateRemainingRangeSeconds:y(()=>{const v=f.value;if(!v.length)return null;const h=v.slice().sort((C,T)=>C-T),g=h.reduce((C,T)=>C+T,0)/h.length,b=h[Math.min(h.length-1,Math.floor(h.length*.75))],S=t.value,k=(s.value==="running"?S?.executionStartTimestamp:void 0)??r.value,w=k?Math.max(0,Math.floor((l.value-k)/1e3)):0;return[Math.max(0,Math.round(g-w)),Math.max(0,Math.round(b-w))]}),timeElapsedValue:y(()=>{const v=t.value,h=(s.value==="running"?v?.executionStartTimestamp:void 0)??r.value;return h?Ja(l.value-h):""})}},"useQueueEstimates");var Mc={class:"w-[300px] min-w-[260px] rounded-lg border border-interface-stroke bg-interface-panel-surface shadow-md"},Dc={class:"flex items-center border-b border-interface-stroke p-4"},Lc={class:"text-[0.875rem] leading-normal font-normal text-text-primary"},Ac={class:"flex flex-col gap-6 px-4 pt-4 pb-4"},Ec={class:"grid grid-cols-2 items-center gap-x-2 gap-y-2"},Vc={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Oc={class:"flex min-w-0 items-center text-[0.75rem] leading-normal font-normal text-text-secondary"},Rc={class:"block min-w-0 truncate"},Wc={key:0,class:"grid grid-cols-2 items-center gap-x-2 gap-y-2"},Bc={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},zc={class:"flex min-w-0 items-center text-[0.75rem] leading-normal font-normal text-text-secondary"},Uc={class:"block min-w-0 truncate"},Fc={key:1,class:"grid grid-cols-2 gap-x-2"},Gc={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Hc={class:"flex items-center justify-between gap-4"},jc={class:"col-span-2 mt-2 rounded bg-interface-panel-hover-surface px-4 py-2 text-[0.75rem] leading-normal text-text-secondary"},qc=q({__name:"JobDetailsPopover",props:{jobId:{},workflowId:{}},setup(e){const o=e,t=y(()=>d("g.copy")),s=Ve(),r=Vt(),n=it(),l=vt(),{locale:i,t:d}=ue(),f=y(()=>{const H=o.workflowId;if(!H)return"";const J=s.activeWorkflow?.activeState?.id;return J&&J===H?s.activeWorkflow?.filename??H:H}),m=y(()=>o.jobId),{copyToClipboard:v}=Eu(),h=a(()=>{v(m.value)},"copyJobId"),g=y(()=>{const H=o.jobId,J=a(te=>te.find(he=>String(he.promptId??"")===String(H)),"findIn");return J(r.pendingTasks)||J(r.runningTasks)||J(r.historyTasks)||null}),b=y(()=>{const H=g.value;return H?Zs(H,n.isPromptInitializing(String(H?.promptId))):null}),S=y(()=>g.value?.createTime),k=y(()=>S.value!==void 0?os(S.value,i.value):""),w=y(()=>{const H=g.value;return H?Number(H.queueIndex):null}),C=y(()=>{const H=w.value;return H==null?null:r.pendingTasks.filter(J=>Number(J.queueIndex)<H).length}),T=y(()=>{if(C.value==null)return"";const H=C.value;return d("queue.jobDetails.queuePositionValue",{count:H},H)}),I=E(Date.now());let _=null;Re(()=>{_=window.setInterval(()=>{I.value=Date.now()},1e3)}),kt(()=>{_!=null&&(clearInterval(_),_=null)});const{showParallelQueuedStats:N,estimateRangeSeconds:$,estimateRemainingRangeSeconds:V,timeElapsedValue:B}=$c({queueStore:r,executionStore:n,taskForJob:g,jobState:b,firstSeenTs:S,jobsAhead:C,nowTs:I}),D=a((H,J)=>{if(J<=60){const $e=Math.max(1,Math.round(J)),se=Math.max(1,Math.min($e,Math.round(H)));return se===$e?d("queue.jobDetails.eta.seconds",{count:$e},$e):d("queue.jobDetails.eta.secondsRange",{lo:se,hi:$e})}if(H>=60&&J<90)return d("queue.jobDetails.eta.minutes",{count:1},1);const te=Math.max(1,Math.floor(H/60)),he=Math.max(te,Math.ceil(J/60));return te===he?d("queue.jobDetails.eta.minutes",{count:te},te):d("queue.jobDetails.eta.minutesRange",{lo:te,hi:he})},"formatEta"),U=y(()=>{const H=$.value;if(!H)return"";const[J,te]=H;return D(J,te)}),j=y(()=>{const H=V.value;if(!H)return"";const[J,te]=H;return D(J,te)}),W=y(()=>[{label:d("queue.jobDetails.workflow"),value:f.value},{label:d("queue.jobDetails.jobId"),value:m.value,canCopy:!0}]),F=y(()=>{if(b.value==="pending"){if(!S.value)return[];const H=[{label:d("queue.jobDetails.queuedAt"),value:k.value}];return N.value&&H.push({label:d("queue.jobDetails.queuePosition"),value:T.value},{label:d("queue.jobDetails.timeElapsed"),value:B.value},{label:d("queue.jobDetails.estimatedStartIn"),value:U.value}),H}if(b.value==="running")return S.value?[{label:d("queue.jobDetails.queuedAt"),value:k.value},{label:d("queue.jobDetails.timeElapsed"),value:B.value},{label:d("queue.jobDetails.estimatedFinishIn"),value:j.value}]:[];if(b.value==="completed"){const H=g.value,J=H?.executionEndTimestamp,te=H?.executionTime,he=J?os(J,i.value):"",$e=te!==void 0?Ja(te):"",se=te!==void 0?(te/36e5).toFixed(3)+" hours":"",Se=[{label:d("queue.jobDetails.generatedOn"),value:he},{label:d("queue.jobDetails.totalGenerationTime"),value:$e}];return Fe&&Se.push({label:d("queue.jobDetails.computeHoursUsed"),value:se}),Se}if(b.value==="failed"){const H=g.value?.executionTime,J=H!==void 0?Ja(H):"",te=H!==void 0?(H/36e5).toFixed(3)+" hours":"",he=[{label:d("queue.jobDetails.queuedAt"),value:k.value},{label:d("queue.jobDetails.failedAfter"),value:J}];return Fe&&he.push({label:d("queue.jobDetails.computeHoursUsed"),value:te}),he}return[]}),{errorMessageValue:G,copyErrorMessage:z,reportJobError:K}=Ic({taskForJob:g,copyToClipboard:v,dialog:l});return(H,J)=>(p(),x("div",Mc,[c("div",Dc,[c("span",Lc,R(u(d)("queue.jobDetails.header")),1)]),c("div",Ac,[c("div",Ec,[(p(!0),x(Z,null,ye(W.value,te=>(p(),x(Z,{key:te.label},[c("div",Vc,R(te.label),1),c("div",Oc,[c("span",Rc,R(te.value),1),te.canCopy?(p(),O(X,{key:0,size:"icon",variant:"muted-textonly","aria-label":t.value,onClick:ke(h,["stop"])},{default:M(()=>J[0]||(J[0]=[c("i",{class:"icon-[lucide--copy] size-4"},null,-1)])),_:1},8,["aria-label"])):A("",!0)])],64))),128))]),F.value.length?(p(),x("div",Wc,[(p(!0),x(Z,null,ye(F.value,te=>(p(),x(Z,{key:te.label},[c("div",Bc,R(te.label),1),c("div",zc,[c("span",Uc,R(te.value),1)])],64))),128))])):A("",!0),b.value==="failed"?(p(),x("div",Fc,[c("div",Gc,R(u(d)("queue.jobDetails.errorMessage")),1),c("div",Hc,[L(X,{class:"justify-start px-0",variant:"muted-textonly",size:"sm","icon-position":"right",onClick:ke(u(z),["stop"])},{default:M(()=>[c("span",null,R(t.value),1),J[1]||(J[1]=c("i",{class:"icon-[lucide--copy] block size-3.5 leading-none"},null,-1))]),_:1},8,["onClick"]),L(X,{class:"justify-start px-0",variant:"muted-textonly",size:"sm","icon-position":"right",onClick:ke(u(K),["stop"])},{default:M(()=>[c("span",null,R(u(d)("queue.jobDetails.report")),1),J[2]||(J[2]=c("i",{class:"icon-[lucide--message-circle-warning] block size-3.5 leading-none"},null,-1))]),_:1},8,["onClick"])]),c("div",jc,R(u(G)),1)])):A("",!0)])]))}}),Kc=qc,Qc={class:"w-[300px] min-w-[260px] rounded-lg shadow-md"},Yc={class:"p-3"},Jc={class:"relative aspect-square w-full overflow-hidden rounded-lg"},Xc=["src","alt"],Zc={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)"}},ep={class:"mt-2 text-center"},tp=["title"],op={key:0,class:"mt-1 text-[0.75rem] leading-normal text-text-secondary"},ap=q({inheritAttrs:!1,__name:"QueueAssetPreview",props:{imageUrl:{},name:{},timeLabel:{}},emits:["image-click"],setup(e){const o=E(null),t=E(null),s=E(null),r=a(()=>{const n=o.value;n&&(t.value=n.naturalWidth||null,s.value=n.naturalHeight||null)},"onImgLoad");return(n,l)=>(p(),x("div",Qc,[c("div",Yc,[c("div",Jc,[c("img",{ref_key:"imgRef",ref:o,src:n.imageUrl,alt:n.name,class:"h-full w-full cursor-pointer object-contain",onClick:l[0]||(l[0]=i=>n.$emit("image-click")),onLoad:r},null,40,Xc),n.timeLabel?(p(),x("div",Zc,R(n.timeLabel),1)):A("",!0)]),c("div",ep,[c("div",{class:"truncate text-[0.875rem] leading-normal font-semibold text-text-primary",title:n.name},R(n.name),9,tp),t.value&&s.value?(p(),x("div",op,R(t.value)+"x"+R(s.value),1)):A("",!0)])])]))}}),np=ap,sp={class:"relative z-1 flex items-center gap-1"},rp={class:"relative inline-flex items-center justify-center"},lp={class:"inline-flex h-6 w-6 items-center justify-center overflow-hidden rounded-[6px]"},ip=["src"],up={class:"relative z-1 min-w-0 flex-1"},dp=["title"],cp={class:"relative z-1 flex items-center gap-2 text-text-secondary"},pp={key:"actions",class:"inline-flex items-center gap-2 pr-1"},fp={key:"secondary",class:"pr-2"},vp=q({__name:"QueueJobItem",props:{jobId:{},workflowId:{default:void 0},state:{},title:{},rightText:{default:""},iconName:{default:void 0},iconImageUrl:{default:void 0},showClear:{type:Boolean,default:void 0},showMenu:{type:Boolean,default:void 0},progressTotalPercent:{default:void 0},progressCurrentPercent:{default:void 0},activeDetailsId:{default:null}},emits:["cancel","delete","menu","view","details-enter","details-leave"],setup(e,{emit:o}){const t=e,s=o,{t:r}=ue(),{progressBarContainerClass:n,progressBarPrimaryClass:l,progressBarSecondaryClass:i,hasProgressPercent:d,hasAnyProgressPercent:f,progressPercentStyle:m}=Wi(),v=y(()=>at(r("g.cancel"))),h=y(()=>at(r("g.delete"))),g=y(()=>at(r("g.more"))),b=E(null),S=y(()=>t.activeDetailsId===t.jobId),k=a(()=>{I.value||s("details-enter",t.jobId)},"onRowEnter"),w=a(()=>s("details-leave",t.jobId),"onRowLeave"),C=a(()=>s("details-enter",t.jobId),"onPopoverEnter"),T=a(()=>s("details-leave",t.jobId),"onPopoverLeave"),I=E(!1),_=E(null),N=E(null),$=a(()=>{_.value!==null&&(clearTimeout(_.value),_.value=null)},"clearPreviewHideTimer"),V=a(()=>{N.value!==null&&(clearTimeout(N.value),N.value=null)},"clearPreviewShowTimer"),B=y(()=>t.state==="completed"&&!!t.iconImageUrl),D=a(()=>{B.value&&($(),V(),N.value=window.setTimeout(()=>{I.value=!0,N.value=null},200))},"scheduleShowPreview"),U=a(()=>{$(),V(),_.value=window.setTimeout(()=>{I.value=!1,_.value=null},150)},"scheduleHidePreview"),j=a(()=>D(),"onIconEnter"),W=a(()=>U(),"onIconLeave"),F=a(()=>D(),"onPreviewEnter"),G=a(()=>U(),"onPreviewLeave"),z=E(null),K=a(()=>{const xe=b.value;if(!xe)return;const Te=xe.getBoundingClientRect();z.value={top:Te.top,right:window.innerWidth-Te.left+8}},"updatePopoverPosition");ie(y(()=>S.value||I.value&&B.value),xe=>{xe?Ue(K):z.value=null},{immediate:!1});const H=E(!1),J=y(()=>t.iconName?t.iconName:Yn(t.state)),te=y(()=>t.state==="pending"&&J.value===Yn("pending")&&!t.iconImageUrl),he=y(()=>t.showClear!==void 0?t.showClear:t.state!=="completed"),$e=a(()=>s("details-leave",t.jobId),"emitDetailsLeave"),se=a(()=>{$e(),s("cancel")},"onCancelClick"),Se=a(()=>{$e(),s("delete")},"onDeleteClick"),ve=a(xe=>{(t.showMenu===void 0||t.showMenu)&&s("menu",xe)},"onContextMenu");return(xe,Te)=>{const He=Pe("tooltip");return p(),x("div",{ref_key:"rowRef",ref:b,class:"relative",onMouseenter:k,onMouseleave:w,onContextmenu:ke(ve,["stop","prevent"])},[(p(),O(yt,{to:"body"},[!I.value&&S.value&&z.value?(p(),x("div",{key:0,class:"fixed z-50",style:be({top:`${z.value.top}px`,right:`${z.value.right}px`}),onMouseenter:C,onMouseleave:T},[L(Kc,{"job-id":t.jobId,"workflow-id":t.workflowId},null,8,["job-id","workflow-id"])],36)):A("",!0)])),(p(),O(yt,{to:"body"},[I.value&&B.value&&z.value?(p(),x("div",{key:0,class:"fixed z-50",style:be({top:`${z.value.top}px`,right:`${z.value.right}px`}),onMouseenter:F,onMouseleave:G},[L(np,{"image-url":xe.iconImageUrl,name:t.title,"time-label":xe.rightText||void 0,onImageClick:Te[0]||(Te[0]=je=>s("view"))},null,8,["image-url","name","time-label"])],36)):A("",!0)])),c("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:Te[3]||(Te[3]=je=>H.value=!0),onMouseleave:Te[4]||(Te[4]=je=>H.value=!1)},[t.state==="running"&&u(f)(t.progressTotalPercent,t.progressCurrentPercent)?(p(),x("div",{key:0,class:Q(u(n))},[u(d)(t.progressTotalPercent)?(p(),x("div",{key:0,class:Q(u(l)),style:be(u(m)(t.progressTotalPercent))},null,6)):A("",!0),u(d)(t.progressCurrentPercent)?(p(),x("div",{key:1,class:Q(u(i)),style:be(u(m)(t.progressCurrentPercent))},null,6)):A("",!0)],2)):A("",!0),c("div",sp,[c("div",rp,[c("div",{class:"absolute left-1/2 top-1/2 size-10 -translate-x-1/2 -translate-y-1/2",onMouseenter:ke(j,["stop"]),onMouseleave:ke(W,["stop"])},null,32),c("div",lp,[xe.iconImageUrl?(p(),x("img",{key:0,src:xe.iconImageUrl,class:"h-full w-full object-cover"},null,8,ip)):(p(),x("i",{key:1,class:Q(u(ae)(J.value,"size-4",te.value&&"animate-spin"))},null,2))])])]),c("div",up,[c("div",{class:"truncate opacity-90",title:t.title},[_e(xe.$slots,"primary",{},()=>[Ie(R(t.title),1)])],8,dp)]),c("div",cp,[L(ma,{mode:"out-in","enter-active-class":"transition-opacity transition-transform duration-150 ease-out","leave-active-class":"transition-opacity transition-transform duration-150 ease-in","enter-from-class":"opacity-0 translate-y-0.5","enter-to-class":"opacity-100 translate-y-0","leave-from-class":"opacity-100 translate-y-0","leave-to-class":"opacity-0 translate-y-0.5"},{default:M(()=>[H.value?(p(),x("div",pp,[t.state==="failed"&&he.value?ce((p(),O(X,{key:0,variant:"destructive",size:"icon","aria-label":u(r)("g.delete"),onClick:ke(Se,["stop"])},{default:M(()=>Te[5]||(Te[5]=[c("i",{class:"icon-[lucide--trash-2] size-4"},null,-1)])),_:1},8,["aria-label"])),[[He,h.value,void 0,{top:!0}]]):t.state!=="completed"&&t.state!=="running"&&he.value?ce((p(),O(X,{key:1,variant:"destructive",size:"icon","aria-label":u(r)("g.cancel"),onClick:ke(se,["stop"])},{default:M(()=>Te[6]||(Te[6]=[c("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"])),[[He,v.value,void 0,{top:!0}]]):t.state==="completed"?(p(),O(X,{key:2,variant:"textonly",size:"sm",onClick:Te[1]||(Te[1]=ke(je=>s("view"),["stop"]))},{default:M(()=>[Ie(R(u(r)("menuLabels.View")),1)]),_:1})):A("",!0),t.showMenu===void 0||t.showMenu?ce((p(),O(X,{key:3,variant:"textonly",size:"icon-sm","aria-label":u(r)("g.more"),onClick:Te[2]||(Te[2]=ke(je=>s("menu",je),["stop"]))},{default:M(()=>Te[7]||(Te[7]=[c("i",{class:"icon-[lucide--more-horizontal] size-4"},null,-1)])),_:1},8,["aria-label"])),[[He,g.value,void 0,{top:!0}]]):A("",!0)])):t.state!=="running"?(p(),x("div",fp,[_e(xe.$slots,"secondary",{},()=>[Ie(R(t.rightText),1)])])):A("",!0)]),_:3}),t.state==="running"&&he.value?ce((p(),O(X,{key:0,variant:"destructive",size:"icon","aria-label":u(r)("g.cancel"),onClick:ke(se,["stop"])},{default:M(()=>Te[8]||(Te[8]=[c("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"])),[[He,v.value,void 0,{top:!0}]]):A("",!0)])],32)],544)}}}),mp=vp,gp={class:"flex flex-col gap-4 px-3 pb-4"},hp={class:"text-[12px] leading-none text-text-secondary"},yp=q({__name:"JobGroupsList",props:{displayedJobGroups:{}},emits:["cancelItem","deleteItem","menu","viewItem"],setup(e,{emit:o}){const t=e,s=o,r=a(b=>{s("cancelItem",b)},"emitCancelItem"),n=a(b=>{s("deleteItem",b)},"emitDeleteItem"),l=E(null),i=E(null),d=E(null),f=a(()=>{i.value!==null&&(clearTimeout(i.value),i.value=null)},"clearHideTimer"),m=a(()=>{d.value!==null&&(clearTimeout(d.value),d.value=null)},"clearShowTimer"),v=a(b=>{f(),m(),d.value=window.setTimeout(()=>{l.value=b,d.value=null},200)},"onDetailsEnter"),h=a(b=>{f(),m(),i.value=window.setTimeout(()=>{l.value===b&&(l.value=null),i.value=null},150)},"onDetailsLeave"),g=a(()=>{f(),m(),l.value=null},"resetActiveDetails");return ie(()=>t.displayedJobGroups,b=>{const S=l.value;S&&(b.some(k=>k.items.some(w=>w.id===S))||g())}),rt(g),(b,S)=>(p(),x("div",gp,[(p(!0),x(Z,null,ye(b.displayedJobGroups,k=>(p(),x("div",{key:k.key,class:"flex flex-col gap-2"},[c("div",hp,R(k.label),1),(p(!0),x(Z,null,ye(k.items,w=>(p(),O(mp,{key:w.id,"job-id":w.id,"workflow-id":w.taskRef?.workflowId,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":l.value,onCancel:a(C=>r(w),"onCancel"),onDelete:a(C=>n(w),"onDelete"),onMenu:a(C=>b.$emit("menu",w,C),"onMenu"),onView:a(C=>b.$emit("viewItem",w),"onView"),onDetailsEnter:v,onDetailsLeave:h},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))]))}}),bp=yp,wp={class:"flex w-full flex-col gap-4"},_p={class:"flex items-center justify-between px-3"},kp={class:"ml-4 inline-flex items-center"},Cp={class:"inline-flex h-6 items-center text-[12px] leading-none text-text-primary opacity-90"},Sp={class:"font-bold"},xp={class:"ml-1"},Tp={class:"flex-1 min-h-0 overflow-y-auto"},Np=q({__name:"QueueOverlayExpanded",props:{headerTitle:{},showConcurrentIndicator:{type:Boolean},concurrentWorkflowCount:{},queuedCount:{},selectedJobTab:{},selectedWorkflowFilter:{},selectedSortMode:{},displayedJobGroups:{},hasFailedJobs:{type:Boolean}},emits:["showAssets","clearHistory","clearQueued","update:selectedJobTab","update:selectedWorkflowFilter","update:selectedSortMode","cancelItem","deleteItem","viewItem"],setup(e,{emit:o}){const t=o,{t:s}=ue(),r=E(null),n=E(null),{jobMenuEntries:l}=Lu(()=>r.value,v=>t("viewItem",v)),i=a(v=>{t("cancelItem",v)},"onCancelItemEvent"),d=a(v=>{t("deleteItem",v)},"onDeleteItemEvent"),f=a((v,h)=>{r.value=v,n.value?.open(h)},"onMenuItem"),m=a(async v=>{v.kind!=="divider"&&(v.onClick&&await v.onClick(),n.value?.hide())},"onJobMenuAction");return(v,h)=>(p(),x("div",wp,[L(uc,{"header-title":v.headerTitle,"show-concurrent-indicator":v.showConcurrentIndicator,"concurrent-workflow-count":v.concurrentWorkflowCount,onClearHistory:h[0]||(h[0]=g=>v.$emit("clearHistory"))},null,8,["header-title","show-concurrent-indicator","concurrent-workflow-count"]),c("div",_p,[L(X,{class:"grow gap-1 justify-center",variant:"secondary",size:"sm",onClick:h[1]||(h[1]=g=>v.$emit("showAssets"))},{default:M(()=>[h[7]||(h[7]=c("i",{class:"icon-[comfy--image-ai-edit] size-4"},null,-1)),c("span",null,R(u(s)("sideToolbar.queueProgressOverlay.showAssets")),1)]),_:1}),c("div",kp,[c("div",Cp,[c("span",Sp,R(v.queuedCount),1),c("span",xp,R(u(s)("sideToolbar.queueProgressOverlay.queuedSuffix")),1)]),v.queuedCount>0?(p(),O(X,{key:0,class:"ml-2",variant:"destructive",size:"icon","aria-label":u(s)("sideToolbar.queueProgressOverlay.clearQueued"),onClick:h[2]||(h[2]=g=>v.$emit("clearQueued"))},{default:M(()=>h[8]||(h[8]=[c("i",{class:"icon-[lucide--list-x] size-4"},null,-1)])),_:1},8,["aria-label"])):A("",!0)])]),L(Nc,{"selected-job-tab":v.selectedJobTab,"selected-workflow-filter":v.selectedWorkflowFilter,"selected-sort-mode":v.selectedSortMode,"has-failed-jobs":v.hasFailedJobs,"onUpdate:selectedJobTab":h[3]||(h[3]=g=>v.$emit("update:selectedJobTab",g)),"onUpdate:selectedWorkflowFilter":h[4]||(h[4]=g=>v.$emit("update:selectedWorkflowFilter",g)),"onUpdate:selectedSortMode":h[5]||(h[5]=g=>v.$emit("update:selectedSortMode",g))},null,8,["selected-job-tab","selected-workflow-filter","selected-sort-mode","has-failed-jobs"]),c("div",Tp,[L(bp,{"displayed-job-groups":v.displayedJobGroups,onCancelItem:i,onDeleteItem:d,onViewItem:h[6]||(h[6]=g=>v.$emit("viewItem",g)),onMenu:f},null,8,["displayed-job-groups"])]),L(fc,{ref_key:"jobContextMenuRef",ref:n,entries:u(l),onAction:m},null,8,["entries"])]))}}),Ip=Np,Pp={class:"w-[360px] rounded-2xl border border-interface-stroke bg-interface-panel-surface text-text-primary shadow-interface font-inter"},$p={class:"flex items-center justify-between border-b border-interface-stroke px-4 py-4"},Mp={class:"m-0 text-[14px] font-normal leading-none"},Dp={class:"flex flex-col gap-4 px-4 py-4 text-[14px] text-text-secondary"},Lp={class:"m-0"},Ap={class:"m-0"},Ep={class:"flex items-center justify-end px-4 py-4"},Vp={class:"flex items-center gap-4 leading-none"},Op=q({__name:"QueueClearHistoryDialog",setup(e){const o=qt(),t=Vt(),{t:s}=ue(),{wrapWithErrorHandlingAsync:r}=jt(),n=E(!1),l=r(async()=>{await t.clear(["history"]),o.closeDialog()},void 0,()=>{n.value=!1}),i=a(async()=>{n.value||(n.value=!0,await l())},"onConfirm"),d=a(()=>{o.closeDialog()},"onCancel");return(f,m)=>(p(),x("section",Pp,[c("header",$p,[c("p",Mp,R(u(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogTitle")),1),L(X,{size:"icon",variant:"muted-textonly","aria-label":u(s)("g.close"),onClick:d},{default:M(()=>m[0]||(m[0]=[c("i",{class:"icon-[lucide--x] block size-4 leading-none"},null,-1)])),_:1},8,["aria-label"])]),c("div",Dp,[c("p",Lp,R(u(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogDescription")),1),c("p",Ap,R(u(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogAssetsNote")),1)]),c("footer",Ep,[c("div",Vp,[L(X,{variant:"muted-textonly",size:"lg",onClick:d},{default:M(()=>[Ie(R(u(s)("g.cancel")),1)]),_:1}),L(X,{variant:"secondary",size:"lg",disabled:n.value,onClick:i},{default:M(()=>[Ie(R(u(s)("g.clear")),1)]),_:1},8,["disabled"])])])]))}}),Rp=Op;const Wp=a(()=>{const e=Vt(),o=it(),t=y(()=>e.runningTasks.length>0||!o.isIdle),s=E(null),r=E(null),n=E(null),l=a(()=>{n.value!==null&&(clearTimeout(n.value),n.value=null)},"clearDismissTimer"),i=a(()=>{l(),n.value=window.setTimeout(()=>{r.value=null,n.value=null},6e3)},"startDismissTimer"),d=a(()=>{r.value=null,l()},"clearSummary");return ie(t,(f,m)=>{if(!m&&f&&(s.value=Date.now()),m&&!f){const v=s.value??0,h=e.historyTasks.filter(w=>{const C=w.executionEndTimestamp;return typeof C=="number"&&C>=v});if(!h.length){r.value=null,l();return}let g=0,b=0;const S=[];for(const w of h){const C=Zs(w,!1);if(C==="completed"){g++;const T=w.previewOutput;T?.isImage&&S.push(T.urlWithTimestamp)}else C==="failed"&&b++}if(g===0&&b===0){r.value=null,l();return}let k="mixed";b===0?k="allSuccess":g===0&&(k="allFailed"),r.value={mode:k,completedCount:g,failedCount:b,thumbnailUrls:S.slice(0,3)},i()}},{immediate:!0}),{summary:y(()=>r.value),clearSummary:d}},"useCompletionSummary");function Bp(e){const o=E(-1),t=Je([]);async function s(r){const n=e();if(!n.length)return;const l=r.taskRef,i=l?await Bu(l):null;if(i===null&&l)return;const d=i?.length?i:n.map(f=>f.previewOutput).filter(f=>!!f);d.length&&(t.value=d,o.value=du(d,r.taskRef?.previewOutput?.url))}return a(s,"onViewItem"),{galleryActiveIndex:o,galleryItems:t,onViewItem:s}}a(Bp,"useResultGallery");var zp={class:Q(["flex","justify-end","w-full","pointer-events-none"])},Up=q({__name:"QueueProgressOverlay",props:{expanded:{type:Boolean},menuHovered:{type:Boolean,default:!1}},emits:["update:expanded"],setup(e,{emit:o}){const t=e,s=o,{t:r}=ue(),n=Vt(),l=Ce(),i=it(),d=Po(),f=qt(),m=tr(),v=Ji(),{wrapWithErrorHandlingAsync:h}=jt(),{totalPercentFormatted:g,currentNodePercentFormatted:b,totalProgressStyle:S,currentNodeProgressStyle:k}=Nu(),w=E(!1),C=y(()=>w.value||t.menuHovered),T=E(!1),I=y({get:a(()=>t.expanded===void 0?T.value:t.expanded,"get"),set:a(Me=>{t.expanded===void 0&&(T.value=Me),s("update:expanded",Me)},"set")}),{summary:_,clearSummary:N}=Wp(),$=y(()=>_.value!==null),V=y(()=>n.runningTasks.length),B=y(()=>n.pendingTasks.length),D=y(()=>!i.isIdle),U=y(()=>V.value>0||D.value),j=y(()=>V.value+B.value),W=y(()=>I.value?"expanded":U.value?"active":$.value?"empty":"hidden"),F=y(()=>W.value==="expanded"||W.value==="empty"||W.value==="active"&&C.value),G=y(()=>W.value!=="hidden"),z=y(()=>F.value?"border-interface-stroke bg-interface-panel-surface shadow-interface":"border-transparent bg-transparent shadow-none"),K=y(()=>`flex items-center justify-end gap-4 transition-opacity duration-200 ease-in-out ${W.value==="active"&&C.value?"opacity-100 pointer-events-auto":"opacity-0 pointer-events-none"}`),H=y(()=>U.value?`${j.value} ${r("sideToolbar.queueProgressOverlay.activeJobsSuffix")}`:r("sideToolbar.queueProgressOverlay.jobQueue")),J=y(()=>i.runningWorkflowCount),te=y(()=>J.value>1),{selectedJobTab:he,selectedWorkflowFilter:$e,selectedSortMode:se,hasFailedJobs:Se,filteredTasks:ve,groupedJobItems:xe,currentNodeName:Te}=ru(),He=y(()=>xe.value),je=h(async Me=>{const ee=Me.taskRef?.promptId;ee&&(Me.state==="running"||Me.state==="initialization"?(await Ne.interrupt(ee),await n.update()):Me.state==="pending"&&(await Ne.deleteItem("queue",ee),await n.update()))}),Ye=h(async Me=>{Me.taskRef&&await n.delete(Me.taskRef)}),{galleryActiveIndex:ot,galleryItems:Rt,onViewItem:mt}=Bp(()=>ve.value),Wt=a(Me=>{I.value=Me},"setExpanded"),Qt=a(()=>{Wt(!0)},"openExpandedFromEmpty"),Bt=a(()=>{Wt(!0)},"viewAllJobs"),xt=a(()=>{Qt(),N()},"onSummaryClick"),dt=a(()=>{d.activeSidebarTabId="assets"},"openAssetsSidebar"),ho=a(async Me=>{const ee=Me.taskRef,oe=ee?.promptId,Tt=ee?.previewOutput;if(!oe||!Tt)return;const re=String(oe);if(dt(),await Ue(),await m.updateHistory(),!m.historyAssets.find(Dt=>Dt.id===re))throw new Error("Asset not found in media assets panel");v.setSelection([re])},"focusAssetInSidebar"),yo=h(async Me=>{await mt(Me),await ho(Me)}),Yt=h(async()=>{await l.execute("Comfy.ClearPendingTasks")}),de=h(async()=>{const Me=n.runningTasks.map(ee=>ee.promptId).filter(ee=>typeof ee=="string"&&ee.length>0);if(Me.length){if(Fe){await Promise.all(Me.map(ee=>Ne.deleteItem("queue",ee)));return}await Promise.all(Me.map(ee=>Ne.interrupt(ee)))}}),me=a(()=>{f.showDialog({key:"queue-clear-history",component:Rp,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"),De=a(()=>{me()},"onClearHistoryFromMenu");return(Me,ee)=>(p(),x(Z,null,[ce(c("div",zp,[c("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",z.value]),onMouseenter:ee[3]||(ee[3]=oe=>w.value=!0),onMouseleave:ee[4]||(ee[4]=oe=>w.value=!1)},[I.value?(p(),O(Ip,{key:0,"selected-job-tab":u(he),"onUpdate:selectedJobTab":ee[0]||(ee[0]=oe=>qe(he)?he.value=oe:null),"selected-workflow-filter":u($e),"onUpdate:selectedWorkflowFilter":ee[1]||(ee[1]=oe=>qe($e)?$e.value=oe:null),"selected-sort-mode":u(se),"onUpdate:selectedSortMode":ee[2]||(ee[2]=oe=>qe(se)?se.value=oe:null),class:"flex-1 min-h-0","header-title":H.value,"show-concurrent-indicator":te.value,"concurrent-workflow-count":J.value,"queued-count":B.value,"displayed-job-groups":He.value,"has-failed-jobs":u(Se),onShowAssets:dt,onClearHistory:De,onClearQueued:u(Yt),onCancelItem:u(je),onDeleteItem:u(Ye),onViewItem:u(yo)},null,8,["selected-job-tab","selected-workflow-filter","selected-sort-mode","header-title","show-concurrent-indicator","concurrent-workflow-count","queued-count","displayed-job-groups","has-failed-jobs","onClearQueued","onCancelItem","onDeleteItem","onViewItem"])):U.value?(p(),O(Wd,{key:1,"total-progress-style":u(S),"current-node-progress-style":u(k),"total-percent-formatted":u(g),"current-node-percent-formatted":u(b),"current-node-name":u(Te),"running-count":V.value,"queued-count":B.value,"bottom-row-class":K.value,onInterruptAll:u(de),onClearQueued:u(Yt),onViewAllJobs:Bt},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"])):u(_)?(p(),O(ec,{key:2,summary:u(_),onSummaryClick:xt},null,8,["summary"])):A("",!0)],34)],512),[[tt,G.value]]),L(Du,{"active-index":u(ot),"onUpdate:activeIndex":ee[5]||(ee[5]=oe=>qe(ot)?ot.value=oe:null),"all-gallery-items":u(Rt)},null,8,["active-index","all-gallery-items"])],64))}}),Fp=Up;const Gp=uo("actionBarButton",()=>{const e=fn();return{buttons:y(()=>e.extensions.flatMap(o=>o.actionBarButtons??[]))}});var Hp={class:"flex h-full shrink-0 items-center gap-1 empty:hidden"},jp={key:0},qp=q({__name:"ActionBarButtons",setup(e){const o=Gp(),t=un(pa).smaller("sm");return(s,r)=>{const n=Pe("tooltip");return p(),x("div",Hp,[(p(!0),x(Z,null,ye(u(o).buttons,(l,i)=>ce((p(),O(X,{key:i,"aria-label":l.tooltip||l.label,class:Q([l.class,"h-7 rounded-full"]),variant:"muted-textonly",size:"sm",onClick:l.onClick},{default:M(()=>[c("i",{class:Q(l.icon)},null,2),!u(t)&&l.label?(p(),x("span",jp,R(l.label),1)):A("",!0)]),_:2},1032,["aria-label","class","onClick"])),[[n,l.tooltip,void 0,{bottom:!0}]])),128))])}}}),Kp=qp,Qp={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)]"},Yp={class:"flex flex-col items-center px-0 py-3 mb-4"},Jp={class:"my-0 mb-1 truncate text-base font-bold text-base-foreground"},Xp={key:0,class:"my-0 truncate text-sm text-muted"},Zp={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"},ef={key:0,class:"flex items-center gap-2 px-4 py-2"},tf={key:1,class:"text-base font-semibold text-base-foreground"},of={class:"icon-[lucide--circle-help] cursor-help text-base text-muted-foreground mr-auto"},af={key:1,class:"flex justify-center px-4"},nf={class:"text-sm text-base-foreground flex-1"},sf={class:"text-sm text-base-foreground flex-1"},rf={key:0,class:"text-xs font-bold text-base-background bg-base-foreground px-1.5 py-0.5 rounded-full"},lf={class:"text-sm text-base-foreground flex-1"},uf={class:"text-sm text-base-foreground flex-1"},df={class:"text-sm text-base-foreground flex-1"},cf=q({__name:"CurrentUserPopover",emits:["close"],setup(e,{emit:o}){const t=o,{buildDocsUrl:s,docsPaths:r}=co(),{userDisplayName:n,userEmail:l,userPhotoUrl:i,handleSignOut:d}=fo(),f=Ys(),m=or(),v=vt(),{isActiveSubscription:h,subscriptionTierName:g,subscriptionTier:b,fetchStatus:S}=vn(),k=Ju(),{locale:w}=ue(),C=y(()=>Iu({cents:m.balance?.effective_balance_micros??m.balance?.amount_micros??0,locale:w.value,numberOptions:{minimumFractionDigits:0,maximumFractionDigits:2}})),T=y(()=>{const U=b.value;return U==="FOUNDERS_EDITION"||U==="STANDARD"||U==="CREATOR"}),I=a(()=>{v.showSettingsDialog("user"),t("close")},"handleOpenUserSettings"),_=a(()=>{k.show(),t("close")},"handleOpenPlansAndPricing"),N=a(()=>{Fe?v.showSettingsDialog("subscription"):v.showSettingsDialog("credits"),t("close")},"handleOpenPlanAndCreditsSettings"),$=a(()=>{Le()?.trackAddApiCreditButtonClicked(),v.showTopUpCreditsDialog(),t("close")},"handleTopUp"),V=a(()=>{window.open(s(r.partnerNodesPricing,{includeLocale:!0}),"_blank"),t("close")},"handleOpenPartnerNodesInfo"),B=a(async()=>{await d(),t("close")},"handleLogout"),D=a(async()=>{await S()},"handleSubscribed");return Re(()=>{f.fetchBalance()}),(U,j)=>{const W=Pe("tooltip");return p(),x("div",Qp,[c("div",Yp,[L(yr,{class:"mb-1","photo-url":u(i),"pt:icon:class":{"text-2xl!":!u(i)},size:"large"},null,8,["photo-url","pt:icon:class"]),c("h3",Jp,R(u(n)||U.$t("g.user")),1),u(l)?(p(),x("p",Xp,R(u(l)),1)):A("",!0),u(g)?(p(),x("span",Zp,R(u(g)),1)):A("",!0)]),u(h)?(p(),x("div",ef,[j[0]||(j[0]=c("i",{class:"icon-[lucide--component] text-amber-400 text-sm"},null,-1)),u(m).isFetchingBalance?(p(),O(u(sn),{key:0,width:"4rem",height:"1.25rem",class:"w-full"})):(p(),x("span",tf,R(C.value),1)),ce(c("i",of,null,512),[[W,{value:U.$t("credits.unified.tooltip"),showDelay:300}]]),L(X,{variant:"secondary",size:"sm",class:"text-base-foreground","data-testid":"add-credits-button",onClick:$},{default:M(()=>[Ie(R(U.$t("subscription.addCredits")),1)]),_:1})])):(p(),x("div",af,[L(Yu,{fluid:!1,label:U.$t("subscription.subscribeToComfyCloud"),size:"sm",variant:"gradient",onSubscribed:D},null,8,["label"])])),L(u(Wn),{class:"my-2 mx-0"}),u(h)?(p(),x("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:V},[j[1]||(j[1]=c("i",{class:"icon-[lucide--tag] text-muted-foreground text-sm"},null,-1)),c("span",nf,R(U.$t("subscription.partnerNodesCredits")),1)])):A("",!0),c("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:_},[j[2]||(j[2]=c("i",{class:"icon-[lucide--receipt-text] text-muted-foreground text-sm"},null,-1)),c("span",sf,R(U.$t("subscription.plansAndPricing")),1),T.value?(p(),x("span",rf,R(U.$t("subscription.upgrade")),1)):A("",!0)]),u(h)?(p(),x("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:N},[j[3]||(j[3]=c("i",{class:"icon-[lucide--file-text] text-muted-foreground text-sm"},null,-1)),c("span",lf,R(U.$t("subscription.managePlan")),1)])):A("",!0),c("div",{class:"flex items-center gap-2 px-4 py-2 cursor-pointer hover:bg-secondary-background-hover","data-testid":"user-settings-menu-item",onClick:I},[j[4]||(j[4]=c("i",{class:"icon-[lucide--settings-2] text-muted-foreground text-sm"},null,-1)),c("span",uf,R(U.$t("userSettings.accountSettings")),1)]),L(u(Wn),{class:"my-2 mx-0"}),c("div",{class:"flex items-center gap-2 px-4 py-2 cursor-pointer hover:bg-secondary-background-hover","data-testid":"logout-menu-item",onClick:B},[j[5]||(j[5]=c("i",{class:"icon-[lucide--log-out] text-muted-foreground text-sm"},null,-1)),c("span",df,R(U.$t("auth.signOut.signOut")),1)])])}}}),pf=cf,ff={key:0,class:"icon-[lucide--chevron-down] size-3 px-1"},vf=q({__name:"CurrentUserButton",props:{showArrow:{type:Boolean,default:!0},compact:{type:Boolean,default:!1}},setup(e){const{isLoggedIn:o,userPhotoUrl:t}=fo(),s=E(null),r=y(()=>t.value??void 0),n=a(()=>{s.value?.hide()},"closePopover");return(l,i)=>(p(),x("div",null,[u(o)?(p(),O(X,{key:0,class:"p-1 hover:bg-transparent",variant:"muted-textonly","aria-label":l.$t("g.currentUser"),onClick:i[0]||(i[0]=d=>s.value?.toggle(d))},{default:M(()=>[c("div",{class:Q(u(ae)("flex items-center gap-1 rounded-full hover:bg-interface-button-hover-surface justify-center",l.compact&&"size-full aspect-square"))},[L(yr,{"photo-url":r.value,class:Q(l.compact&&"size-full")},null,8,["photo-url","class"]),l.showArrow?(p(),x("i",ff)):A("",!0)],2)]),_:1},8,["aria-label"])):A("",!0),L(u(wt),{ref_key:"popover",ref:s,"show-arrow":!1,pt:{root:{class:"rounded-lg"}}},{default:M(()=>[L(pf,{onClose:n})]),_:1},512)]))}}),kr=vf,mf={class:"mb-1"},gf=["href"],hf=q({__name:"LoginButton",props:{class:{}},setup(e){const{isLoggedIn:o,handleSignIn:t}=fo(),{buildDocsUrl:s}=co(),r=s("/tutorials/api-nodes/overview#api-nodes",{includeLocale:!0}),n=E(null);let l=null,i=null;const d=a(v=>{l&&(clearTimeout(l),l=null),i&&(clearTimeout(i),i=null),i=setTimeout(()=>{n.value&&n.value.show(v,v.target)},200)},"showPopover"),f=a(()=>{l&&(clearTimeout(l),l=null)},"cancelHidePopover"),m=a(()=>{i&&(clearTimeout(i),i=null),l=setTimeout(()=>{n.value&&n.value.hide()},150)},"hidePopover");return(v,h)=>(p(),x(Z,null,[u(o)?A("",!0):(p(),O(X,{key:0,variant:"textonly",size:"icon",class:Q(u(ae)("group rounded-full text-base-foreground p-0",e.class)),"aria-label":u(le)("g.login"),onClick:h[0]||(h[0]=g=>u(t)()),onMouseenter:d,onMouseleave:m},{default:M(()=>h[1]||(h[1]=[c("span",{class:"flex size-full items-center justify-center rounded-full bg-secondary-background transition-colors group-hover:bg-transparent"},[c("i",{class:"icon-[lucide--user] size-4"})],-1)])),_:1},8,["class","aria-label"])),L(u(wt),{ref_key:"popoverRef",ref:n,class:"p-2",onMouseout:m,onMouseover:f},{default:M(()=>[c("div",null,[c("div",mf,R(u(le)("auth.loginButton.tooltipHelp")),1),c("a",{href:u(r),target:"_blank",class:"text-neutral-500 hover:text-primary"},R(u(le)("auth.loginButton.tooltipLearnMore")),9,gf)])]),_:1},512)],64))}}),Cr=hf,yf={class:"min-w-0 flex-1"},bf={class:"mx-1 flex flex-col items-end gap-1"},wf={class:"flex items-center gap-2"},_f={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"},kf={key:0,class:"absolute top-0.5 right-1 size-2 rounded-full bg-red-500"},Cf={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"},Sf={key:0,class:"absolute -top-1 -right-1 min-w-[16px] rounded-full bg-primary-background py-0.25 text-[10px] font-medium leading-[14px] text-base-foreground"},xf=q({__name:"TopMenuSection",setup(e){const o=ne(),t=st(),s=ut(),r=ht(),{isLoggedIn:n}=fo(),l=Xe(),{t:i}=ue(),{toastErrorHandler:d}=jt(),f=Ce(),m=Vt(),{isOverlayExpanded:v}=ze(Ya()),{shouldShowRedDot:h}=ze(Bo()),{shouldShowRedDot:g}=Cn(),b=E(!1),S=y(()=>m.pendingTasks.length),k=y(()=>o.get("Comfy.UI.TabBarLayout")==="Integrated"),w=y(()=>at(i("sideToolbar.queueProgressOverlay.viewJobHistory"))),C=y(()=>at(i("menu.customNodesManager"))),T=y(()=>h.value||g.value),{isOpen:I}=ze(s),_=y(()=>at(i("rightSidePanel.togglePanel"))),N=E();Re(()=>{N.value&&(Y.menu.element.style.width="fit-content",N.value.appendChild(Y.menu.element))});const $=a(()=>{f.execute("Comfy.Queue.ToggleOverlay")},"toggleQueueOverlay"),V=a(async()=>{try{await r.openManager({initialTab:ao.All,showToastOnLegacyError:!1})}catch(B){try{d(B)}catch(D){console.error(B),console.error(D)}}},"openCustomNodeManager");return(B,D)=>{const U=Pe("tooltip");return u(t).focusMode?A("",!0):(p(),x("div",{key:0,class:"ml-1 flex gap-x-0.5 pt-1",onMouseenter:D[1]||(D[1]=j=>b.value=!0),onMouseleave:D[2]||(D[2]=j=>b.value=!1)},[c("div",yf,[L(bd)]),c("div",bf,[c("div",wf,[u(r).shouldShowManagerButtons.value?(p(),x("div",_f,[ce((p(),O(X,{variant:"secondary",size:"icon","aria-label":u(i)("menu.customNodesManager"),class:"relative",onClick:V},{default:M(()=>[D[3]||(D[3]=c("i",{class:"icon-[lucide--puzzle] size-4"},null,-1)),T.value?(p(),x("span",kf)):A("",!0)]),_:1},8,["aria-label"])),[[U,C.value,void 0,{bottom:!0}]])])):A("",!0),c("div",Cf,[L(Kp),c("div",{ref_key:"legacyCommandsContainerRef",ref:N,class:"[&:not(:has(*>*:not(:empty)))]:hidden"},null,512),L(pd),ce((p(),O(X,{type:"destructive",size:"icon","aria-pressed":u(v),"aria-label":u(i)("sideToolbar.queueProgressOverlay.expandCollapsedQueue"),onClick:$},{default:M(()=>[D[4]||(D[4]=c("i",{class:"icon-[lucide--history] size-4"},null,-1)),S.value>0?(p(),x("span",Sf,R(S.value),1)):A("",!0)]),_:1},8,["aria-pressed","aria-label"])),[[U,w.value,void 0,{bottom:!0}]]),u(n)&&!k.value?(p(),O(kr,{key:0,class:"shrink-0"})):u(l)&&!k.value?(p(),O(Cr,{key:1})):A("",!0),u(I)?A("",!0):ce((p(),O(X,{key:2,type:"secondary",size:"icon","aria-label":u(i)("rightSidePanel.togglePanel"),onClick:u(s).togglePanel},{default:M(()=>D[5]||(D[5]=[c("i",{class:"icon-[lucide--panel-right] size-4"},null,-1)])),_:1},8,["aria-label","onClick"])),[[U,_.value,void 0,{bottom:!0}]])])]),L(Fp,{expanded:u(v),"onUpdate:expanded":D[0]||(D[0]=j=>qe(v)?v.value=j:null),"menu-hovered":b.value},null,8,["expanded","menu-hovered"])])],32))}}}),Tf=xf,Nf=q({__name:"ExtensionSlot",props:{extension:{}},setup(e){const o=e,t=a((s,r)=>{s.render(r)},"mountCustomExtension");return rt(()=>{o.extension.type==="custom"&&o.extension.destroy&&o.extension.destroy()}),(s,r)=>s.extension.type==="vue"?(p(),O(so(s.extension.component),{key:0})):(p(),x("div",{key:1,ref:a(n=>{n&&t(o.extension,n)},"ref")},null,512))}}),Sr=Nf,If={class:"flex h-full flex-col"},Pf={class:"flex w-full justify-between"},$f={class:"tabs-container font-inter"},Mf={class:"font-normal"},Df={class:"flex items-center gap-2"},Lf={class:"h-0 grow"},Af=q({__name:"BottomPanel",setup(e){const o=po(),t=vt(),{t:s}=ue(),r=y(()=>{const f=o.activeBottomPanelTabId;return f==="shortcuts-essentials"||f==="shortcuts-view-controls"}),n=a(f=>f!=="shortcuts-essentials"&&f!=="shortcuts-view-controls","shouldCapitalizeTab"),l=a(f=>{const m=f.titleKey?s(f.titleKey):f.title||"";return n(f.id)?m.toUpperCase():m},"getTabDisplayTitle"),i=a(async()=>{t.showSettingsDialog("keybinding")},"openKeybindingSettings"),d=a(()=>{o.activePanel=null},"closeBottomPanel");return(f,m)=>(p(),x("div",If,[(p(),O(u(nl),{key:f.$i18n.locale,value:u(o).activeBottomPanelTabId,"onUpdate:value":m[0]||(m[0]=v=>u(o).activeBottomPanelTabId=v),style:{"--p-tabs-tablist-background":"var(--comfy-menu-bg)"}},{default:M(()=>[L(u(Xr),{"pt:tab-list":"border-none h-full flex items-center py-2 border-b-1 border-solid",class:"bg-transparent"},{default:M(()=>[c("div",Pf,[c("div",$f,[(p(!0),x(Z,null,ye(u(o).bottomPanelTabs,v=>(p(),O(u(Yr),{key:v.id,value:v.id,class:Q(["m-1 mx-2 border-none font-inter",{"tab-list-single-item":u(o).bottomPanelTabs.length===1}]),"pt:root":a(h=>({class:{"p-3 rounded-lg":!0,"pointer-events-none":u(o).bottomPanelTabs.length===1},style:{color:"var(--fg-color)",backgroundColor:!h.context.active||u(o).bottomPanelTabs.length===1?"":"var(--bg-color)"}}),"pt:root")},{default:M(()=>[c("span",Mf,R(l(v)),1)]),_:2},1032,["value","class","pt:root"]))),128))]),c("div",Df,[r.value?(p(),O(X,{key:0,variant:"muted-textonly",size:"sm",onClick:i},{default:M(()=>[m[1]||(m[1]=c("i",{class:"pi pi-cog"},null,-1)),Ie(" "+R(f.$t("shortcuts.manageShortcuts")),1)]),_:1})):A("",!0),L(X,{class:"justify-self-end",variant:"muted-textonly",size:"sm","aria-label":u(s)("g.close"),onClick:d},{default:M(()=>m[2]||(m[2]=[c("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])])]),_:1})]),_:1},8,["value"])),c("div",Lf,[u(o).bottomPanelVisible&&u(o).activeBottomPanelTab?(p(),O(Sr,{key:0,extension:u(o).activeBottomPanelTab},null,8,["extension"])):A("",!0)])]))}}),Ef=Be(Af,[["__scopeId","data-v-9d1ea2c9"]]);function xr(e={}){const{useTransform:o=!1}=e,t=fe().getCanvas(),{canvasPosToClientPos:s,update:r}=vu(t.canvas,t),n=ne();ie([()=>n.get("Comfy.Sidebar.Location"),()=>n.get("Comfy.Sidebar.Size"),()=>n.get("Comfy.UseNewMenu")],()=>r(),{flush:"post"});const l=E({}),i=a(f=>{const{pos:m,size:v,scale:h=t.ds.scale}=f,[g,b]=s(m),[S,k]=v;return o?{position:"fixed",transformOrigin:"0 0",transform:`scale(${h})`,left:`${g}px`,top:`${b}px`,width:`${S}px`,height:`${k}px`}:{position:"fixed",left:`${g}px`,top:`${b}px`,width:`${S*h}px`,height:`${k*h}px`}},"computeStyle");return{style:l,updatePosition:a(f=>{l.value=i(f)},"updatePosition")}}a(xr,"useAbsolutePosition");function Vf(e,o){const t=Math.max(e.x,o.x),s=Math.max(e.y,o.y),r=Math.min(e.x+e.width,o.x+o.width),n=Math.min(e.y+e.height,o.y+o.height);return t>=r||s>=n?null:[t,s,r-t,n-s]}a(Vf,"intersect");const Of=a((e={})=>{const o=E({}),{margin:t=4}=e,s=a((n,l,i,d)=>{if(!i&&d){const{scale:f,offset:m}=d,v=Vf({x:n.left-l.left,y:n.top-l.top,width:n.width,height:n.height},{x:(d.x+m[0]-t)*f,y:(d.y+m[1]-t)*f,width:(d.width+2*t)*f,height:(d.height+2*t)*f});if(!v)return"";const h=(v[0]-n.left+l.left)/f+"px",g=(v[1]-n.top+l.top)/f+"px",b=v[2]/f+"px",S=v[3]/f+"px";return`polygon(0% 0%, 0% 100%, ${h} 100%, ${h} ${g}, calc(${h} + ${b}) ${g}, calc(${h} + ${b}) calc(${g} + ${S}), ${h} calc(${g} + ${S}), ${h} 100%, 100% 100%, 100% 0%)`}return""},"calculateClipPath");return{style:o,updateClipPath:a((n,l,i,d)=>{o.value={clipPath:s(n.getBoundingClientRect(),l.getBoundingClientRect(),i,d)||"none",willChange:"clip-path"}},"updateClipPath")}},"useDomClipping");var Rf=["title"],Wf=q({__name:"DomWidget",props:{widgetState:{}},emits:["update:widgetValue"],setup(e,{emit:o}){const t=e.widgetState.widget,s=o,r=E(),n=E({}),{style:l,updatePosition:i}=xr({useTransform:!0}),{style:d,updateClipPath:f}=Of(),m=fe(),v=ne(),h=y(()=>v.get("Comfy.DOMClippingEnabled")),g=a(()=>{const C=m.canvas;if(!C||!r.value)return;const T=Object.values(C.selected_nodes??{})[0];if(!T){f(r.value,C.canvas,!1,void 0);return}const I=T===e.widgetState.widget.node,_=T?.renderArea,N=C.ds.offset,$=C.ds.scale,V=_?{x:_[0],y:_[1],width:_[2],height:_[3],scale:$,offset:[N[0],N[1]]}:void 0;f(r.value,C.canvas,I,V)},"updateDomClipping"),{left:b,top:S}=dn(m.getCanvas().canvas);ie([()=>e.widgetState,b,S],([C,T,I])=>{i(C),h.value&&g(),n.value={...l.value,...h.value?d.value:{},zIndex:C.zIndex,pointerEvents:C.readonly||t.computedDisabled?"none":"auto",opacity:t.computedDisabled?.5:1}},{deep:!0}),ie(()=>e.widgetState.visible,(C,T)=>{!C&&T&&t.options.onHide?.(t)}),Oe(document,"mousedown",C=>{!xo(t)||!e.widgetState.visible||!t.element.blur||t.element.contains(C.target)||t.element.blur()}),Re(()=>{xo(t)&&Oe(t.element,t.options.selectOn??["focus","click"],()=>{const C=m.canvas;C?.selectNode(e.widgetState.widget.node),C?.bringToFront(e.widgetState.widget.node)})});const k=t.node.constructor.nodeData?.inputs?.[t.name]?.tooltip,w=a(()=>{e.widgetState.visible&&xo(t)&&r.value&&(r.value.contains(t.element)||r.value.appendChild(t.element))},"mountElementIfVisible");return Re(()=>{Ue(()=>{w()}).catch(C=>{console.error("Error mounting DOM widget element:",C)})}),ie(()=>e.widgetState.visible,()=>{w()}),(C,T)=>ce((p(),x("div",{ref_key:"widgetElement",ref:r,class:"dom-widget",title:u(k),style:be(n.value)},[u(zi)(u(t))?(p(),O(so(u(t).component),lt({key:0,"model-value":u(t).value,widget:u(t)},u(t).props,{"onUpdate:modelValue":T[0]||(T[0]=I=>s("update:widgetValue",I))}),null,16,["model-value","widget"])):A("",!0)],12,Rf)),[[tt,C.widgetState.visible]])}}),Bf=Be(Wf,[["__scopeId","data-v-781496d2"]]),zf={class:"isolate"},Uf=q({__name:"DomWidgets",setup(e){const o=Ri(),t=y(()=>[...o.widgetStates.values()]),s=a(()=>{const n=r.canvas;if(!n)return;const l=n.low_quality,i=n.graph;for(const d of t.value){const f=d.widget;if(!f.isVisible()||!d.active){d.visible=!1;continue}const m=f.node;if(d.visible=!!i?.nodes.includes(m)&&n.isNodeVisible(m)&&!(f.options.hideOnZoom&&l),d.visible&&m){const v=f.margin;d.pos=[m.pos[0]+v,m.pos[1]+v+f.y],d.size=[(f.width??m.width)-v*2,(f.computedHeight??50)-v*2],d.zIndex=n.graph?.nodes.indexOf(m)??-1,d.readonly=n.read_only}}},"updateWidgets"),r=fe();return bt(()=>r.canvas,n=>n.onDrawForeground=ro(n.onDrawForeground,s),{immediate:!0}),(n,l)=>(p(),x("div",zf,[(p(!0),x(Z,null,ye(t.value,i=>(p(),O(Bf,{key:i.widget.id,"widget-state":i,"onUpdate:widgetValue":a(d=>i.widget.value=d,"onUpdate:widgetValue")},null,8,["widget-state","onUpdate:widgetValue"]))),128))]))}}),Ff=Uf;function Gf(){const e=E(!1);return{isModalVisible:e,showModal:a(()=>{e.value=!0},"showModal"),hideModal:a(()=>{e.value=!1},"hideModal"),toggleModal:a(()=>{e.value=!e.value},"toggleModal"),hasActivePopup:y(()=>e.value)}}a(Gf,"useZoomControls");function Hf(e,o){const t=new Map,s=E(""),r=E(0),n=E({bounds:!1,nodes:!1,connections:!1,viewport:!1}),l=Ae.getVersion(),i=new Map,d=Nl(()=>{o()},500),f=a(()=>{const S=e.value;if(!S||i.has(S.id))return;const k={onNodeAdded:S.onNodeAdded,onNodeRemoved:S.onNodeRemoved,onConnectionChange:S.onConnectionChange,onTrigger:S.onTrigger};i.set(S.id,k),S.onNodeAdded=function(w){k.onNodeAdded?.call(this,w),d()},S.onNodeRemoved=function(w){k.onNodeRemoved?.call(this,w),t.delete(w.id),d()},S.onConnectionChange=function(w){k.onConnectionChange?.call(this,w),d()},S.onTrigger=function(w){k.onTrigger?.call(this,w),w.type==="node:property:changed"&&(w.property==="mode"||w.property==="bgcolor"||w.property==="color")&&(t.delete(String(w.nodeId)),d())}},"setupEventListeners"),m=a(S=>{const k=S||e.value;if(!k)return;const w=i.get(k.id);if(!w){console.error("Attempted to cleanup event listeners for graph that was never set up");return}k.onNodeAdded=w.onNodeAdded,k.onNodeRemoved=w.onNodeRemoved,k.onConnectionChange=w.onConnectionChange,k.onTrigger=w.onTrigger,i.delete(k.id)},"cleanupEventListeners");return{updateFlags:n,setupEventListeners:f,cleanupEventListeners:m,checkForChanges:a(()=>{const S=e.value;if(!S)return!1;let k=!1,w=!1,C=!1;const T=Js.create(S),I=T.getNodeCount();I!==r.value&&(k=!0,r.value=I);const _=T.getNodes();for(const V of _){const B=V.id,D=`${V.x},${V.y},${V.width},${V.height}`;t.get(B)!==D&&(w=!0,t.set(B,D))}const N=new Set(_.map(V=>V.id));for(const[V]of t)N.has(V)||(t.delete(V),k=!0);const $=JSON.stringify(S.links||{});return $!==s.value&&(C=!0,s.value=$),(k||w)&&(n.value.bounds=!0,n.value.nodes=!0),C&&(n.value.connections=!0),k||w||C},"checkForChangesInternal"),init:a(()=>{f(),Ne.addEventListener("graphChanged",d),ie(l,()=>{d()})},"init"),destroy:a(()=>{m(),Ne.removeEventListener("graphChanged",d),t.clear()},"destroy"),clearCache:a(()=>{t.clear(),s.value="",r.value=0},"clearCache")}}a(Hf,"useMinimapGraph");function jf(e,o,t,s,r,n,l){const i=E(!1),d=E({left:0,top:0,width:s,height:r}),f=a(()=>{if(!e.value)return;const k=e.value.getBoundingClientRect();d.value={left:k.left,top:k.top,width:k.width,height:k.height}},"updateContainerRect"),m=a(k=>{i.value=!0,f();const w=k.currentTarget;w instanceof HTMLElement&&w.setPointerCapture(k.pointerId),v(k)},"handlePointerDown"),v=a(k=>{if(!i.value||!l.value)return;const w=k.clientX-d.value.left,C=k.clientY-d.value.top,T=(s-o.value.width*t.value)/2,I=(r-o.value.height*t.value)/2;n((w-T)/t.value+o.value.minX,(C-I)/t.value+o.value.minY)},"handlePointerMove"),h=a(k=>{if(i.value=!1,!k)return;const w=k.currentTarget;w instanceof HTMLElement&&w.hasPointerCapture(k.pointerId)&&w.releasePointerCapture(k.pointerId)},"releasePointer");return{isDragging:i,containerRect:d,updateContainerRect:f,handlePointerDown:m,handlePointerMove:v,handlePointerUp:h,handlePointerCancel:h,handleWheel:a(k=>{k.preventDefault();const w=l.value;if(!w)return;d.value.left===0&&d.value.top===0&&e.value&&f();const C=w.ds,T=k.deltaY>0?.9:1.1,I=C.scale*T;if(I<.1||I>10)return;const _=k.clientX-d.value.left,N=k.clientY-d.value.top,$=(s-o.value.width*t.value)/2,V=(r-o.value.height*t.value)/2,B=(_-$)/t.value+o.value.minX,D=(N-V)/t.value+o.value.minY;C.scale=I,n(B,D)},"handleWheel")}}a(jf,"useMinimapInteraction");function qf(e,o,t,s,r,n,l,i){const d=E(!0),f=E(!0),m=a(()=>{const g=o.value;if(!e.value||!g)return;const b=e.value.getContext("2d");if(b){if(!g._nodes||g._nodes.length===0){b.clearRect(0,0,l,i);return}(d.value||r.value.nodes||r.value.connections)&&(xi(e.value,g,{bounds:t.value,scale:s.value,settings:{nodeColors:n.nodeColors.value,showLinks:n.showLinks.value,showGroups:n.showGroups.value,renderBypass:n.renderBypass.value,renderError:n.renderError.value},width:l,height:i}),d.value=!1,r.value.nodes=!1,r.value.connections=!1)}},"renderMinimap");return{needsFullRedraw:d,needsBoundsUpdate:f,renderMinimap:m,updateMinimap:a((g,b)=>{(f.value||r.value.bounds)&&(g(),f.value=!1,r.value.bounds=!1,d.value=!0,r.value.viewport=!0),(d.value||r.value.nodes||r.value.connections)&&m(),r.value.viewport&&(b(),r.value.viewport=!1)},"updateMinimap"),forceFullRedraw:a(()=>{d.value=!0,r.value.bounds=!0,r.value.nodes=!0,r.value.connections=!0,r.value.viewport=!0},"forceFullRedraw")}}a(qf,"useMinimapRenderer");function Kf(){const e=ne(),o=St(),t=y(()=>e.get("Comfy.Minimap.NodeColors")),s=y(()=>e.get("Comfy.Minimap.ShowLinks")),r=y(()=>e.get("Comfy.Minimap.ShowGroups")),n=y(()=>e.get("Comfy.Minimap.RenderBypassState")),l=y(()=>e.get("Comfy.Minimap.RenderErrorState")),i=253,d=200,f=y(()=>o.completedActivePalette.light_theme);return{nodeColors:t,showLinks:s,showGroups:r,renderBypass:n,renderError:l,containerStyles:y(()=>({width:`${i}px`,height:`${d}px`,border:"1px solid var(--interface-stroke)",borderRadius:"8px"})),panelStyles:y(()=>({width:"210px",height:`${d}px`,border:"1px solid var(--interface-stroke)",borderRadius:"8px"})),isLightTheme:f}}a(Kf,"useMinimapSettings");function Qf(e,o,t,s){const r=E({minX:0,minY:0,maxX:0,maxY:0,width:0,height:0}),n=E(1),l=E({x:0,y:0,width:0,height:0}),i=E({width:0,height:0}),d=a(()=>{const k=e.value;if(!k)return;const w=k.canvas,C=window.devicePixelRatio||1;i.value={width:w.clientWidth||w.width/C,height:w.clientHeight||w.height/C}},"updateCanvasDimensions"),f=a(()=>{const k=Js.create(o.value);return k.hasData()?yi(k.getBounds()):{minX:0,minY:0,maxX:100,maxY:100,width:100,height:100}},"calculateGraphBounds"),m=a(()=>ku(r.value,t,s),"calculateScale"),v=a(()=>{const k=e.value;if(!k)return;(i.value.width===0||i.value.height===0)&&d();const w=k.ds,C=i.value.width/w.scale,T=i.value.height/w.scale,I=-w.offset[0],_=-w.offset[1],N=(t-r.value.width*n.value)/2,$=(s-r.value.height*n.value)/2;l.value={x:(I-r.value.minX)*n.value+N,y:(_-r.value.minY)*n.value+$,width:C*n.value,height:T*n.value}},"updateViewport"),h=a(()=>{r.value=f(),n.value=m()},"updateBounds"),g=a((k,w)=>{const C=e.value;if(!C)return;(i.value.width===0||i.value.height===0)&&d();const T=C.ds,I=i.value.width/T.scale,_=i.value.height/T.scale;T.offset[0]=-(k-I/2),T.offset[1]=-(w-_/2),C.setDirty(!0,!0)},"centerViewOn"),{resume:b,pause:S}=io(v);return{bounds:y(()=>r.value),scale:y(()=>n.value),viewportTransform:y(()=>l.value),canvasDimensions:y(()=>i.value),updateCanvasDimensions:d,updateViewport:v,updateBounds:h,centerViewOn:g,startViewportSync:b,stopViewportSync:S}}a(Qf,"useMinimapViewport");function xn({canvasRefMaybe:e,containerRefMaybe:o}={}){const t=fe(),s=Ve(),r=ne(),n=E(null),l=e??Je(null),i=o??Je(null),d=E(!0),f=E(!1),m=250,v=200,h=y(()=>t.canvas),g=y(()=>s.activeSubgraph||h.value?.graph),b=Kf(),{nodeColors:S,showLinks:k,showGroups:w,renderBypass:C,renderError:T,containerStyles:I,panelStyles:_}=b,N=a(async(H,J)=>{await r.set(H,J),D.forceFullRedraw(),D.updateMinimap($.updateBounds,$.updateViewport)},"updateOption"),$=Qf(h,g,m,v),V=jf(i,$.bounds,$.scale,m,v,$.centerViewOn,h),B=Hf(g,()=>{D.forceFullRedraw(),D.updateMinimap($.updateBounds,$.updateViewport)}),D=qf(l,g,$.bounds,$.scale,B.updateFlags,b,m,v),{pause:U,resume:j}=io(async()=>{d.value&&await B.checkForChanges()&&D.updateMinimap($.updateBounds,$.updateViewport)},{immediate:!1}),W=a(async()=>{f.value||(d.value=r.get("Comfy.Minimap.Visible"),h.value&&g.value&&(B.init(),i.value&&V.updateContainerRect(),$.updateCanvasDimensions(),window.addEventListener("resize",V.updateContainerRect),window.addEventListener("scroll",V.updateContainerRect),window.addEventListener("resize",$.updateCanvasDimensions),D.forceFullRedraw(),D.updateMinimap($.updateBounds,$.updateViewport),$.updateViewport(),d.value&&(j(),$.startViewportSync()),f.value=!0))},"init"),F=a(()=>{U(),$.stopViewportSync(),B.destroy(),window.removeEventListener("resize",V.updateContainerRect),window.removeEventListener("scroll",V.updateContainerRect),window.removeEventListener("resize",$.updateCanvasDimensions),f.value=!1},"destroy");ie(h,async(H,J)=>{J&&(B.cleanupEventListeners(),U(),$.stopViewportSync(),B.destroy(),window.removeEventListener("resize",V.updateContainerRect),window.removeEventListener("scroll",V.updateContainerRect),window.removeEventListener("resize",$.updateCanvasDimensions)),H&&!f.value&&await W()},{immediate:!0,flush:"post"}),ie(g,(H,J)=>{H&&H!==J&&(B.cleanupEventListeners(J||void 0),B.setupEventListeners(),D.forceFullRedraw(),D.updateMinimap($.updateBounds,$.updateViewport))}),ie(d,async H=>{H?(i.value&&V.updateContainerRect(),$.updateCanvasDimensions(),D.forceFullRedraw(),await Ue(),await Ue(),D.updateMinimap($.updateBounds,$.updateViewport),$.updateViewport(),j(),$.startViewportSync()):(U(),$.stopViewportSync())});const G=a(async()=>{d.value=!d.value,await r.set("Comfy.Minimap.Visible",d.value)},"toggle"),z=a(H=>{n.value=H},"setMinimapRef"),K=y(()=>{const H=$.viewportTransform.value;return{transform:`translate(${H.x}px, ${H.y}px)`,width:`${H.width}px`,height:`${H.height}px`,border:`2px solid ${b.isLightTheme.value?"#E0E0E0":"#FFF"}`,backgroundColor:"rgba(255, 255, 255, 0.2)",willChange:"transform",backfaceVisibility:"hidden",perspective:"1000px",pointerEvents:"none"}});return{visible:y(()=>d.value),initialized:y(()=>f.value),containerStyles:I,viewportStyles:K,panelStyles:_,width:m,height:v,nodeColors:S,showLinks:k,showGroups:w,renderBypass:C,renderError:T,init:W,destroy:F,toggle:G,renderMinimap:D.renderMinimap,handlePointerDown:V.handlePointerDown,handlePointerMove:V.handlePointerMove,handlePointerUp:V.handlePointerUp,handlePointerCancel:V.handlePointerCancel,handleWheel:V.handleWheel,setMinimapRef:z,updateOption:N}}a(xn,"useMinimap");var Yf={class:"flex items-center gap-1 pr-0.5"},Jf={class:"rounded-lg bg-interface-panel-selected-surface p-2 group-hover:bg-interface-button-hover-surface"},Xf={class:"flex flex-col gap-1"},Zf={class:"flex items-center gap-2"},ev={class:"text-[9px] text-text-primary"},tv={class:"flex items-center gap-2"},ov={class:"text-[9px] text-text-primary"},av=q({__name:"CanvasModeSelector",props:{buttonStyles:{}},setup(e){const o=E(),t=E(),s=Ce(),r=fe(),n=y(()=>r.canvas?.read_only??!1),l=y(()=>n.value?"icon-[lucide--hand]":"icon-[lucide--mouse-pointer-2]"),i=y(()=>s.formatKeySequence(s.getCommand("Comfy.Canvas.Unlock")).toUpperCase()),d=y(()=>s.formatKeySequence(s.getCommand("Comfy.Canvas.Lock")).toUpperCase()),f=a(h=>{const g=o.value?.$el||o.value;t.value?.toggle(h,g)},"toggle"),m=a(h=>{h==="select"&&n.value?s.execute("Comfy.Canvas.Unlock"):h==="hand"&&!n.value&&s.execute("Comfy.Canvas.Lock"),t.value?.hide()},"setMode"),v=y(()=>({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(h,g)=>(p(),x(Z,null,[L(X,{ref_key:"buttonRef",ref:o,variant:"secondary",class:"group h-8 rounded-none! bg-comfy-menu-bg p-0 transition-none! hover:rounded-lg! hover:bg-interface-button-hover-surface!",style:be(h.buttonStyles),onClick:f},{default:M(()=>[c("div",Yf,[c("div",Jf,[c("i",{class:Q([l.value,"block h-4 w-4"])},null,2)]),g[2]||(g[2]=c("i",{class:"icon-[lucide--chevron-down] block h-4 w-4 pr-1.5"},null,-1))])]),_:1},8,["style"]),L(u(wt),{ref_key:"popover",ref:t,"auto-z-index":!0,"base-z-index":1e3,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:v.value},{default:M(()=>[c("div",Xf,[c("div",{class:"flex cursor-pointer items-center justify-between px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onClick:g[0]||(g[0]=b=>m("select"))},[c("div",Zf,[g[3]||(g[3]=c("i",{class:"icon-[lucide--mouse-pointer-2] h-4 w-4"},null,-1)),c("span",null,R(h.$t("graphCanvasMenu.select")),1)]),c("span",ev,R(i.value),1)]),c("div",{class:"flex cursor-pointer items-center justify-between rounded px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onClick:g[1]||(g[1]=b=>m("hand"))},[c("div",tv,[g[4]||(g[4]=c("i",{class:"icon-[lucide--hand] h-4 w-4"},null,-1)),c("span",null,R(h.$t("graphCanvasMenu.hand")),1)]),c("span",ov,R(d.value),1)])])]),_:1},8,["pt"])],64))}}),nv=av,sv={key:0,class:"absolute right-0 bottom-[62px] z-1300 flex w-[250px] justify-center border-0! bg-inherit!"},rv={class:"flex flex-col gap-1"},lv={class:"font-medium"},iv={class:"text-[9px] text-text-primary"},uv={class:"font-medium"},dv={class:"text-[9px] text-text-primary"},cv={class:"font-medium"},pv={class:"text-[9px] text-text-primary"},fv=q({__name:"ZoomControlsModal",props:{visible:{type:Boolean}},setup(e){const o=xn(),t=Ce(),s=fe(),{formatKeySequence:r}=Ce(),n=e,l=E(null),i=a(k=>{const w=k.value;isNaN(w)||w<1||w>1e3||s.setAppZoomFromPercentage(w)},"applyZoom"),d=a(k=>{t.execute(k)},"executeCommand"),f=a(k=>{if(l.value)return;const w=a(()=>t.execute(k),"cmd");w(),l.value=window.setInterval(w,100)},"startRepeat"),m=a(()=>{l.value&&(clearInterval(l.value),l.value=null)},"stopRepeat"),v=y(()=>({...o.containerStyles.value,height:void 0,width:void 0})),h=y(()=>r(t.getCommand("Comfy.Canvas.ZoomIn"))),g=y(()=>r(t.getCommand("Comfy.Canvas.ZoomOut"))),b=y(()=>r(t.getCommand("Comfy.Canvas.FitView"))),S=E(null);return ie(()=>n.visible,async k=>{k&&(await Ue(),S.value?.querySelector("input")?.focus())}),(k,w)=>k.visible?(p(),x("div",sv,[c("div",{class:"w-4/5 rounded-lg border border-interface-stroke bg-interface-panel-surface p-2 text-text-primary shadow-lg select-none",style:be(v.value),onClick:w[3]||(w[3]=ke(()=>{},["stop"]))},[c("div",rv,[c("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]=C=>f("Comfy.Canvas.ZoomIn")),onMouseup:m,onMouseleave:m},[c("span",lv,R(k.$t("graphCanvasMenu.zoomIn")),1),c("span",iv,R(h.value),1)],32),c("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]=C=>f("Comfy.Canvas.ZoomOut")),onMouseup:m,onMouseleave:m},[c("span",uv,R(k.$t("graphCanvasMenu.zoomOut")),1),c("span",dv,R(g.value),1)],32),c("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]=C=>d("Comfy.Canvas.FitView"))},[c("span",cv,R(k.$t("zoomControls.zoomToFit")),1),c("span",pv,R(b.value),1)]),c("div",{ref_key:"zoomInputContainer",ref:S,class:"zoomInputContainer flex items-center gap-1 rounded bg-input-surface p-2"},[L(u(Ds),{"default-value":u(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:i,onKeyup:To(i,["enter"])},null,8,["default-value"]),w[4]||(w[4]=c("span",{class:"flex-shrink-0 text-sm text-text-primary"},"%",-1))],512)])],4)])):A("",!0)}}),vv=fv,mv={class:"inline-flex items-center gap-1 px-2 text-xs"},gv=q({__name:"GraphCanvasMenu",setup(e){const{t:o}=ue(),t=Ce(),{formatKeySequence:s}=Ce(),r=fe(),n=ne(),l=go(),i=xn(),{isModalVisible:d,toggleModal:f,hideModal:m,hasActivePopup:v}=Gf(),h=y(()=>{const B=["borderRadius"],D=["borderRadius"],U={border:"none"},j=i.containerStyles.value;return{buttonStyles:{...Object.fromEntries(Object.entries(j).filter(([W])=>D.includes(W))),...U},buttonGroupStyles:Object.entries(j).filter(([W])=>B.includes(W)).reduce((W,[F,G])=>({...W,[F]:G}),{})}}),g=y(()=>n.get("Comfy.LinkRenderMode")===ge.HIDDEN_LINK),b=y(()=>s(t.getCommand("Comfy.Canvas.FitView")).toUpperCase()),S=y(()=>s(t.getCommand("Comfy.Canvas.ToggleMinimap")).toUpperCase()),k=y(()=>["bg-comfy-menu-bg",d.value?"not-active:bg-interface-panel-selected-surface!":"","hover:bg-interface-button-hover-surface!","p-0","h-8","w-15"]),w=y(()=>({"bg-comfy-menu-bg":!0,"hover:bg-interface-button-hover-surface!":!0,"not-active:bg-interface-panel-selected-surface!":n.get("Comfy.Minimap.Visible"),"p-0":!0,"w-8":!0,"h-8":!0})),C=y(()=>{const B=o("graphCanvasMenu.fitView"),D=b.value;return D?`${B} (${D})`:B}),T=y(()=>{const B=n.get("Comfy.Minimap.Visible")?o("zoomControls.hideMinimap"):o("zoomControls.showMinimap"),D=S.value;return D?`${B} (${D})`:B}),I=y(()=>g.value?o("graphCanvasMenu.showLinks"):o("graphCanvasMenu.hideLinks")),_=y(()=>g.value?o("graphCanvasMenu.showLinks"):o("graphCanvasMenu.hideLinks")),N=y(()=>["bg-comfy-menu-bg",g.value?"not-active:bg-interface-panel-selected-surface!":"","hover:bg-interface-button-hover-surface!","p-0","w-8","h-8"]);Re(()=>{r.initScaleSync()});const $=a(()=>{Le()?.trackUiButtonClicked({button_id:"graph_menu_minimap_toggle_clicked"}),t.execute("Comfy.Canvas.ToggleMinimap")},"onMinimapToggleClick"),V=a(()=>{Le()?.trackUiButtonClicked({button_id:"graph_menu_hide_links_toggle_clicked"}),t.execute("Comfy.Canvas.ToggleLinkVisibility")},"onLinkVisibilityToggleClick");return rt(()=>{r.cleanupScaleSync()}),(B,D)=>{const U=Pe("tooltip");return p(),x("div",null,[L(vv,{visible:u(d),onClose:u(m)},null,8,["visible","onClose"]),u(v)?(p(),x("div",{key:0,class:"fixed inset-0 z-1200",onClick:D[0]||(D[0]=(...j)=>u(m)&&u(m)(...j))})):A("",!0),L(u(sl),{class:"absolute right-0 bottom-0 z-1200 flex-row gap-1 border-[1px] border-interface-stroke bg-comfy-menu-bg p-2",style:be({...h.value.buttonGroupStyles}),onWheel:u(l).handleWheel},{default:M(()=>[L(nv,{"button-styles":h.value.buttonStyles},null,8,["button-styles"]),D[6]||(D[6]=c("div",{class:"h-[27px] w-[1px] self-center bg-node-divider"},null,-1)),ce((p(),O(X,{variant:"secondary","aria-label":C.value,style:be(h.value.buttonStyles),class:"h-8 w-8 bg-comfy-menu-bg p-0 hover:bg-interface-button-hover-surface!",onClick:D[1]||(D[1]=()=>u(t).execute("Comfy.Canvas.FitView"))},{default:M(()=>D[2]||(D[2]=[c("i",{class:"icon-[lucide--focus] h-4 w-4"},null,-1)])),_:1},8,["aria-label","style"])),[[U,C.value,void 0,{top:!0}]]),ce((p(),O(X,{variant:"secondary",class:Q(k.value),"aria-label":u(o)("zoomControls.label"),"data-testid":"zoom-controls-button",style:be(h.value.buttonStyles),onClick:u(f)},{default:M(()=>[c("span",mv,[c("span",null,R(u(r).appScalePercentage)+"%",1),D[3]||(D[3]=c("i",{class:"icon-[lucide--chevron-down] h-4 w-4"},null,-1))])]),_:1},8,["class","aria-label","style","onClick"])),[[U,u(o)("zoomControls.label"),void 0,{top:!0}]]),D[7]||(D[7]=c("div",{class:"h-[27px] w-[1px] self-center bg-node-divider"},null,-1)),ce((p(),O(X,{variant:"secondary","aria-label":T.value,"data-testid":"toggle-minimap-button",style:be(h.value.buttonStyles),class:Q(w.value),onClick:$},{default:M(()=>D[4]||(D[4]=[c("i",{class:"icon-[lucide--map] h-4 w-4"},null,-1)])),_:1},8,["aria-label","style","class"])),[[U,T.value,void 0,{top:!0}]]),ce((p(),O(X,{variant:"secondary",class:Q(N.value),"aria-label":_.value,"data-testid":"toggle-link-visibility-button",style:be(h.value.buttonStyles),onClick:V},{default:M(()=>D[5]||(D[5]=[c("i",{class:"icon-[lucide--route-off] h-4 w-4"},null,-1)])),_:1},8,["class","aria-label","style"])),[[U,{value:I.value,pt:{root:{style:"z-index: 2; transform: translateY(-20px);"}}},void 0,{top:!0}]])]),_:1},8,["style","onWheel"])])}}}),hv=gv,yv=q({__name:"NodeTooltip",setup(e){let o;const t=Ct(),s=ne(),r=E(),n=E(""),l=E(),i=E();function d(){return n.value=""}a(d,"hideTooltip");async function f(h){if(!h)return;l.value=Y.canvas.mouse[0]+"px",i.value=Y.canvas.mouse[1]+"px",n.value=h,await Ue();const g=r.value?.getBoundingClientRect();g&&(g.right>window.innerWidth&&(l.value=Y.canvas.mouse[0]-g.width+"px"),g.top<0&&(i.value=Y.canvas.mouse[1]+g.height+"px"))}a(f,"showTooltip");function m(){const{canvas:h}=Y,g=h?.node_over;if(!g)return;const b=g.constructor,S=t.nodeDefsByName[g.type??""];if(b.title_mode!==ge.NO_TITLE&&h.graph_mouse[1]<g.pos[1])return f(S?.description);if(g.flags?.collapsed)return;const k=Kl(g,h.graph_mouse[0],h.graph_mouse[1],[0,0]);if(k!==-1){const T=g.inputs[k].name;return f(Ze(`nodeDefs.${Pt(g.type??"")}.inputs.${Pt(T)}.tooltip`,S?.inputs[T]?.tooltip??""))}const w=Rl(g,h.graph_mouse[0],h.graph_mouse[1],[0,0]);if(w!==-1)return f(Ze(`nodeDefs.${Pt(g.type??"")}.outputs.${w}.tooltip`,S?.outputs[w]?.tooltip??""));const C=Y.canvas.getWidgetAtCursor();if(C&&!xo(C)){const T=Ze(`nodeDefs.${Pt(g.type??"")}.inputs.${Pt(C.name)}.tooltip`,S?.inputs[C.name]?.tooltip??"");return f(C.tooltip??T)}}return a(m,"onIdle"),Oe(window,"mousemove",a(h=>{d(),clearTimeout(o),h.target.nodeName==="CANVAS"&&(o=window.setTimeout(m,s.get("LiteGraph.Node.TooltipDelay")))},"onMouseMove")),Oe(window,"click",d),(h,g)=>n.value?(p(),x("div",{key:0,ref_key:"tooltipRef",ref:r,class:"node-tooltip",style:be({left:l.value,top:i.value})},R(n.value),5)):A("",!0)}}),bv=Be(yv,[["__scopeId","data-v-96b1458a"]]),wv=q({__name:"BypassButton",setup(e){const o=Ce(),t=a(async()=>{await o.execute("Comfy.Canvas.ToggleSelectedNodes.Bypass")},"toggleBypass");return(s,r)=>{const n=Pe("tooltip");return ce((p(),O(X,{variant:"muted-textonly","aria-label":s.$t("commands.Comfy_Canvas_ToggleSelectedNodes_Bypass.label"),"data-testid":"bypass-button",class:"hover:bg-secondary-background",onClick:t},{default:M(()=>r[0]||(r[0]=[c("i",{class:"icon-[lucide--redo-dot] size-4"},null,-1)])),_:1},8,["aria-label"])),[[n,{value:s.$t("commands.Comfy_Canvas_ToggleSelectedNodes_Bypass.label"),showDelay:1e3},void 0,{top:!0}]])}}}),_v=wv,kv={class:"relative"},Cv={class:"flex items-center gap-1 px-0"},Sv={key:0,class:"color-picker-container absolute -top-10 left-1/2"},xv=["data-testid"],Tv=q({__name:"ColorPickerButton",setup(e){const{t:o}=ue(),t=fe(),s=St(),r=Ve(),n=y(()=>s.completedActivePalette.light_theme),l=a(k=>Gt(k,{lightness:.5}),"toLightThemeColor"),i=E(!1),d={name:"noColor",localizedName:o("color.noColor"),value:{dark:ge.NODE_DEFAULT_BGCOLOR,light:l(ge.NODE_DEFAULT_BGCOLOR)}},f=[d,...Object.entries(Ke.node_colors).map(([k,w])=>({name:k,localizedName:o(`color.${k}`),value:{dark:w.bgcolor,light:l(w.bgcolor)}}))],m=E(null),v=a(k=>{const w=k?.name??d.name,C=w===d.name?null:Ke.node_colors[w];for(const T of t.selectedItems)Jo(T)&&T.setColorOption(C);t.canvas?.setDirty(!0,!0),h.value=C,i.value=!1,r.activeWorkflow?.changeTracker.checkState()},"applyColor"),h=E(null),g=y(()=>h.value?n.value?l(h.value?.bgcolor):h.value?.bgcolor:null),b=y(()=>h.value?.bgcolor?f.find(k=>k.value.dark===h.value?.bgcolor||k.value.light===h.value?.bgcolor)?.localizedName??d.localizedName:null),S=a(k=>{i.value=!1,m.value=null,h.value=wu(k)},"updateColorSelectionFromNode");return ie(()=>t.selectedItems,k=>{S(k)},{immediate:!0}),(k,w)=>{const C=Pe("tooltip");return p(),x("div",kv,[ce((p(),O(X,{"data-testid":"color-picker-button",variant:"muted-textonly","aria-label":u(o)("g.color"),onClick:w[0]||(w[0]=()=>i.value=!i.value)},{default:M(()=>[c("div",Cv,[c("i",{class:"pi pi-circle-fill",style:be({color:g.value??""})},null,4),w[1]||(w[1]=c("i",{class:"icon-[lucide--chevron-down]"},null,-1))])]),_:1},8,["aria-label"])),[[C,{value:b.value??u(o)("color.noColor"),showDelay:1e3},void 0,{top:!0}]]),i.value?(p(),x("div",Sv,[L(u($s),{"model-value":m.value,options:f,"option-label":"name","data-key":"value","onUpdate:modelValue":v},{option:M(({option:T})=>[ce(c("i",{class:"pi pi-circle-fill",style:be({color:n.value?T.value.light:T.value.dark}),"data-testid":T.name},null,12,xv),[[C,T.localizedName,void 0,{top:!0}]])]),_:1},8,["model-value"])])):A("",!0)])}}}),Nv=Be(Tv,[["__scopeId","data-v-2197e0a1"]]),Iv=q({__name:"ConfigureSubgraph",setup(e){const o=ut(),t=a(()=>{o.openPanel("subgraph")},"handleClick");return(s,r)=>{const n=Pe("tooltip");return ce((p(),O(X,{variant:"muted-textonly","aria-label":s.$t("commands.Comfy_Graph_EditSubgraphWidgets.label"),onClick:t},{default:M(()=>r[0]||(r[0]=[c("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["aria-label"])),[[n,{value:s.$t("commands.Comfy_Graph_EditSubgraphWidgets.label"),showDelay:1e3},void 0,{top:!0}]])}}}),Pv=Iv;function Kt(){const e=fe(),o=Ct(),t=Po(),s=Ki(),{id:r}=zu(),{selectedItems:n}=ze(e),l=y(()=>n.value.filter(N=>Mt(N))),i=y(()=>l.value.length!==1?null:o.fromLGraphNode(l.value[0])),d=y(()=>n.value.length>0),f=y(()=>n.value.length===1),m=y(()=>n.value.length>1),v=y(()=>f.value&&Mt(n.value[0])),h=y(()=>v.value&&n.value[0]?.isSubgraphNode?.()),g=y(()=>v.value&&Fi(n.value[0])),b=y(()=>n.value.some(N=>N instanceof Oo)),S=y(()=>{const N=ne().get("Comfy.Load3D.3DViewerEnable");return l.value.length===1&&l.value.some($i)&&N}),k=y(()=>g.value),w=y(()=>Sn(l.value).length>0),C=a(N=>N.length?{collapsed:N.some($=>$.flags?.collapsed),pinned:N.some($=>$.pinned),bypassed:N.some($=>$.mode===We.BYPASS)}:{collapsed:!1,pinned:!1,bypassed:!1},"computeSelectionStatesFromNodes"),T=y(()=>C(l.value));return{selectedItems:n,selectedNodes:l,nodeDef:i,showNodeHelp:a(()=>{const N=i.value;if(!N)return;const $=t.activeSidebarTabId===r,V=s.currentHelpNode;if($&&s.isHelpOpen&&V?.nodePath===N.nodePath){s.closeHelp(),t.toggleSidebarTab(r);return}$||t.toggleSidebarTab(r),s.openHelp(N)},"showNodeHelp"),hasAny3DNodeSelected:S,hasAnySelection:d,hasSingleSelection:f,hasMultipleSelection:m,isSingleNode:v,isSingleSubgraph:h,isSingleImageNode:g,hasSubgraphs:b,hasImageNode:k,hasOutputNodesSelected:w,selectedNodesStates:T,computeSelectionFlags:a(()=>C(l.value),"computeSelectionFlags")}}a(Kt,"useSelectionState");var $v=q({__name:"ConvertToSubgraphButton",setup(e){const o=Ce(),{isSingleSubgraph:t,hasAnySelection:s}=Kt(),r=t,n=y(()=>s.value&&!t.value);return(l,i)=>{const d=Pe("tooltip");return u(r)?ce((p(),O(X,{key:0,variant:"muted-textonly","aria-label":l.$t("commands.Comfy_Graph_UnpackSubgraph.label"),"data-testid":"convert-to-subgraph-button",onClick:i[0]||(i[0]=()=>u(o).execute("Comfy.Graph.UnpackSubgraph"))},{default:M(()=>i[2]||(i[2]=[c("i",{class:"icon-[lucide--expand] size-4"},null,-1)])),_:1},8,["aria-label"])),[[d,{value:l.$t("commands.Comfy_Graph_UnpackSubgraph.label"),showDelay:1e3},void 0,{top:!0}]]):n.value?ce((p(),O(X,{key:1,variant:"muted-textonly",size:"icon","aria-label":l.$t("commands.Comfy_Graph_ConvertToSubgraph.label"),"data-testid":"convert-to-subgraph-button",onClick:i[1]||(i[1]=()=>u(o).execute("Comfy.Graph.ConvertToSubgraph"))},{default:M(()=>i[3]||(i[3]=[c("i",{class:"icon-[lucide--shrink] size-4"},null,-1)])),_:1},8,["aria-label"])),[[d,{value:l.$t("commands.Comfy_Graph_ConvertToSubgraph.label"),showDelay:1e3},void 0,{top:!0}]]):A("",!0)}}}),Mv=$v,Dv=q({__name:"DeleteButton",setup(e){const o=Ce(),{selectedItems:t}=Kt(),s=y(()=>t.value.some(r=>r.removable!==!1));return(r,n)=>{const l=Pe("tooltip");return ce((p(),O(X,{variant:"muted-textonly","aria-label":r.$t("commands.Comfy_Canvas_DeleteSelectedItems.label"),"data-testid":"delete-button",onClick:n[0]||(n[0]=()=>u(o).execute("Comfy.Canvas.DeleteSelectedItems"))},{default:M(()=>n[1]||(n[1]=[c("i",{class:"icon-[lucide--trash-2]"},null,-1)])),_:1},8,["aria-label"])),[[tt,s.value],[l,{value:r.$t("commands.Comfy_Canvas_DeleteSelectedItems.label"),showDelay:1e3},void 0,{top:!0}]])}}}),Lv=Dv,Av=q({__name:"ExecuteButton",setup(e){const{t:o}=ue(),t=Ce(),s=fe(),{selectedNodes:r}=Kt(),n=s.getCanvas(),l=E(!1),i=y(()=>r.value.filter(Mt).filter(Zu));function d(){if(this.selected&&this.constructor.nodeData?.output_node&&l.value)return{color:"orange",lineWidth:2,padding:10}}a(d,"outputNodeStokeStyle");const f=a(()=>{l.value=!0;for(const h of i.value)h.strokeStyles.outputNode=d;n.setDirty(!0)},"handleMouseEnter"),m=a(()=>{l.value=!1,n.setDirty(!0)},"handleMouseLeave"),v=a(async()=>{await t.execute("Comfy.QueueSelectedOutputNodes")},"handleClick");return(h,g)=>{const b=Pe("tooltip");return ce((p(),O(X,{variant:"primary","aria-label":u(o)("selectionToolbox.executeButton.tooltip"),onMouseenter:g[0]||(g[0]=()=>f()),onMouseleave:g[1]||(g[1]=()=>m()),onClick:v},{default:M(()=>g[2]||(g[2]=[c("i",{class:"icon-[lucide--play]"},null,-1)])),_:1},8,["aria-label"])),[[b,{value:u(o)("selectionToolbox.executeButton.tooltip"),showDelay:1e3},void 0,{top:!0}]])}}}),Ev=Av,Vv=q({__name:"ExtensionCommandButton",props:{command:{}},setup(e){const o=Ce();return(t,s)=>{const r=Pe("tooltip");return ce((p(),O(X,{variant:"muted-textonly","aria-label":u(Ze)(`commands.${u(Pt)(t.command.id)}.label`,""),onClick:s[0]||(s[0]=()=>u(o).execute(t.command.id))},{default:M(()=>[c("i",{class:Q([typeof t.command.icon=="function"?t.command.icon():t.command.icon])},null,2)]),_:1},8,["aria-label"])),[[r,{value:u(Ze)(`commands.${u(Pt)(t.command.id)}.label`,"")||void 0,showDelay:1e3},void 0,{top:!0}]])}}}),Ov=Vv,Rv=q({__name:"InfoButton",setup(e){const o=ut(),t=a(()=>{Le()?.trackUiButtonClicked({button_id:"selection_toolbox_node_info_opened"}),o.openPanel("info")},"onInfoClick");return(s,r)=>{const n=Pe("tooltip");return ce((p(),O(X,{"data-testid":"info-button",variant:"muted-textonly","aria-label":s.$t("g.info"),onClick:t},{default:M(()=>r[0]||(r[0]=[c("i",{class:"icon-[lucide--info]"},null,-1)])),_:1},8,["aria-label"])),[[n,{value:s.$t("g.info"),showDelay:1e3},void 0,{top:!0}]])}}}),Wv=Rv,Bv=q({__name:"Load3DViewerButton",setup(e){const o=Ce(),t=a(()=>{o.execute("Comfy.3DViewer.Open3DViewer")},"open3DViewer");return(s,r)=>{const n=Pe("tooltip");return ce((p(),O(X,{variant:"muted-textonly","aria-label":s.$t("commands.Comfy_3DViewer_Open3DViewer.label"),onClick:t},{default:M(()=>r[0]||(r[0]=[c("i",{class:"icon-[lucide--pencil]"},null,-1)])),_:1},8,["aria-label"])),[[n,{value:s.$t("commands.Comfy_3DViewer_Open3DViewer.label"),showDelay:1e3},void 0,{top:!0}]])}}}),zv=Bv,Uv=q({__name:"MaskEditorButton",setup(e){const o=Ce(),{isSingleImageNode:t}=Kt(),s=a(()=>{o.execute("Comfy.MaskEditor.OpenMaskEditor")},"openMaskEditor");return(r,n)=>{const l=Pe("tooltip");return ce((p(),O(X,{variant:"muted-textonly","aria-label":r.$t("commands.Comfy_MaskEditor_OpenMaskEditor.label"),onClick:s},{default:M(()=>n[0]||(n[0]=[c("i",{class:"icon-[comfy--mask]"},null,-1)])),_:1},8,["aria-label"])),[[tt,u(t)],[l,{value:r.$t("commands.Comfy_MaskEditor_OpenMaskEditor.label"),showDelay:1e3},void 0,{top:!0}]])}}}),Fv=Uv,Gv=a(e=>e!=null&&typeof e=="object"&&"refresh"in e&&typeof e.refresh=="function","isRefreshableWidget");const Hv=a(()=>{const e=fe(),o=E([]);we(()=>{o.value=e.selectedItems.filter(Mt)});const t=y(()=>o.value.flatMap(n=>{if(!n.widgets)return[];const l=[];for(const i of n.widgets)Gv(i)&&l.push(i);return l})),s=y(()=>t.value.length>0);async function r(){s.value&&await Promise.all(t.value.map(n=>n.refresh()))}return a(r,"refreshSelected"),{isRefreshable:s,refreshSelected:r}},"useRefreshableSelection");var jv=q({__name:"RefreshSelectionButton",setup(e){const{t:o}=ue(),{isRefreshable:t,refreshSelected:s}=Hv();return(r,n)=>{const l=Pe("tooltip");return ce((p(),O(X,{variant:"muted-textonly","aria-label":u(o)("g.refreshNode"),"data-testid":"refresh-button",onClick:u(s)},{default:M(()=>n[0]||(n[0]=[c("i",{class:"icon-[lucide--refresh-cw]"},null,-1)])),_:1},8,["aria-label","onClick"])),[[tt,u(t)],[l,u(o)("g.refreshNode"),void 0,{top:!0}]])}}}),qv=jv,Kv=q({__name:"SaveToSubgraphLibrary",setup(e){const o=Ce(),t=fe(),s=y(()=>t.selectedItems?.length===1&&t.selectedItems[0]instanceof Oo);return(r,n)=>{const l=Pe("tooltip");return ce((p(),O(X,{variant:"muted-textonly","aria-label":r.$t("commands.Comfy_PublishSubgraph.label"),onClick:n[0]||(n[0]=()=>u(o).execute("Comfy.PublishSubgraph"))},{default:M(()=>n[1]||(n[1]=[c("i",{class:"icon-[lucide--book-open]"},null,-1)])),_:1},8,["aria-label"])),[[tt,s.value],[l,{value:r.$t("commands.Comfy_PublishSubgraph.label"),showDelay:1e3},void 0,{top:!0}]])}}}),Qv=Kv,_o=E(!1),Yv=E(0),Jv=E(0),ct=E(!1),zt=!1,pt=null;function Zo(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 Mt(s)?`N:${s.id}`:mo(s)?`G:${s.id}`:null}a(Zo,"buildSelectionSignature");function Xv(e){return pt?Zo(e)===pt:!1}a(Xv,"currentSelectionMatchesSignature");function Zv(e){const o=fe(),t=o.getCanvas(),{getSelectableItems:s}=gn(),{shouldRenderVueNodes:r}=la(),n=E({x:0,y:0}),l=E(!1),{left:i,top:d}=dn(t.canvas),f=y(()=>{const w=o.canvas?.state?.draggingItems??!1,C=r.value&&Ae.isDraggingVueNodes.value;return w||C}),m=a(()=>{const w=s();if(!w.size){l.value=!1;return}if(f.value){l.value=!1;return}l.value=!0;const C=[];for(const I of w)if(I.id!=null)if(r.value&&typeof I.id=="string"){const _=Ae.getNodeLayoutRef(I.id).value;_&&C.push([_.bounds.x,_.bounds.y,_.bounds.width,_.bounds.height])}else(I instanceof _t||I instanceof Ht)&&C.push([I.pos[0],I.pos[1]-ge.NODE_TITLE_HEIGHT,I.size[0],I.size[1]+ge.NODE_TITLE_HEIGHT]);const T=Ai(C);T&&(n.value={x:T.x+T.width/2,y:T.y-10},v())},"updateSelectionBounds"),v=a(()=>{if(!l.value)return;const{scale:w,offset:C}=t.ds,T=(n.value.x+C[0])*w+i.value,I=(n.value.y+C[1])*w+d.value;e.value&&(e.value.style.setProperty("--tb-x",`${T}px`),e.value.style.setProperty("--tb-y",`${I}px`))},"updateTransform"),{resume:h,pause:g}=io(v);we(()=>{l.value?h():g()}),ie(()=>o.getCanvas().state.selectionChanged,w=>{w&&((ct.value||pt)&&(ct.value=!1,zt=!1,_o.value?pt=Zo(o):pt=null),m(),o.getCanvas().state.selectionChanged=!1)},{immediate:!0}),ie(()=>_o.value,w=>{w?pt=Zo(o):o.canvas?.state?.draggingItems||(pt=null,ct.value&&(ct.value=!1))});const b=a(w=>{if(w){S();return}k()},"handleDragStateChange"),S=a(()=>{if(l.value=!1,!_o.value){ct.value=!1,zt=!1;return}if(Zo(o)!==pt&&(pt=null),_o.value=!1,zt=!0,ct.value=!!pt,ct.value){Yv.value++;return}zt=!1},"handleDragStart"),k=a(()=>{requestAnimationFrame(()=>{m();const w=Xv(o),C=zt&&l.value&&ct.value&&w;ct.value=C&&ct.value,zt=!1,C&&Jv.value++})},"handleDragEnd");return ie(f,b),kt(()=>{em()}),{visible:l}}a(Zv,"useSelectionToolboxPosition");function em(){_o.value=!1,ct.value=!1,zt=!1,pt=null}a(em,"resetMoreOptionsState");var tm=new Set(["Properties","Colors","Shapes","Title","Mode","Properties Panel","Copy (Clipspace)"]),om=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 us(e){return e.toLowerCase().replace(/^un/,"").trim()}a(us,"normalizeLabel");function am(e,o){const t=us(e),s={color:["color","colors"],shape:["shape","shapes"],pin:["pin","unpin"],delete:["remove","delete"],duplicate:["clone","duplicate"]};return o.some(r=>{if(!r.label)return!1;const n=us(r.label);if(n===t)return!0;for(const l of Object.values(s))if(l.includes(t)&&l.includes(n))return!0;return!1})}a(am,"isDuplicateItem");function nm(e){return om.has(e)}a(nm,"isCoreMenuItem");function sm(e){const o=new Map,t=[];for(const n of e){if(n.type==="divider"||n.type==="category"){t.push(n);continue}if(!n.label){t.push(n);continue}o.has(n.label)||o.set(n.label,[]),o.get(n.label).push(n)}const s=[],r=new Set;for(const n of e){if(n.type==="divider"||n.type==="category"||!n.label){if(t.includes(n)){s.push(n);const d=t.indexOf(n);t.splice(d,1)}continue}if(r.has(n.label))continue;r.add(n.label);const l=o.get(n.label);if(l.length===1){s.push(l[0]);continue}const i=l.find(d=>d.source==="vue");i?s.push(i):s.push(l[0])}return s}a(sm,"removeDuplicateMenuOptions");var rm=["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 Na(e){const o=rm.indexOf(e);return o===-1?999:o}a(Na,"getMenuItemOrder");function Xa(e){const o=sm(e),t=new Map,s=[];let r;for(const m of o)if(m.type!=="divider"&&m.type!=="category"){if((m.label==="Delete"||m.label==="Remove")&&!m.hasSubmenu){r=m;continue}m.label&&nm(m.label)?t.set(m.label,m):s.push(m)}const n=[],l=Array.from(t.keys());l.sort((m,v)=>Na(m)-Na(v));const i=a(m=>m<=2?1:m<=8?2:m<=15?3:m<=17?4:5,"getSectionNumber");let d=0;for(const m of l){const v=t.get(m),h=i(Na(m));d>0&&h!==d&&n.push({type:"divider"}),n.push(v),d=h}const f=[];return f.push(...n),s.length>0&&(f.push({type:"divider"}),f.push({label:"Extensions",type:"category",disabled:!0}),f.push(...s)),r&&(f.push({type:"divider"}),f.push(r)),f}a(Xa,"buildStructuredMenu");function lm(e,o,t=!0){const s=[];for(const r of e){if(r===null){s.push({type:"divider"});continue}if(!r.content||tm.has(r.content)||am(r.content,s))continue;const n={label:r.content,source:"litegraph"};if(r.disabled&&(n.disabled=!0),r.has_submenu){if(r.submenu?.options)n.hasSubmenu=!0,n.submenu=Tr(r.submenu.options);else if(r.callback&&!r.disabled){n.hasSubmenu=!0;const l=im(r,o);l?n.submenu=l:console.warn("[ContextMenuConverter] Failed to capture submenu for:",r.content)}}else r.callback&&!r.disabled&&(n.action=()=>{try{r.callback?.call(r,r.value,{},void 0,void 0,r)}catch(l){console.error("Error executing context menu callback:",l)}});s.push(n)}return t?Xa(s):s}a(lm,"convertContextMenuToOptions");function im(e,o){let t,s;const r=ge.ContextMenu;try{ge.ContextMenu=function(n,l){return t=n,s=l,{close:a(()=>{},"close"),root:document.createElement("div")}};try{const n=new MouseEvent("click",{bubbles:!0,cancelable:!0,clientX:0,clientY:0}),l={close:a(()=>{},"close"),root:document.createElement("div")};e.callback?.call(e,e.value,{},n,l,o)}catch(n){console.warn("[ContextMenuConverter] Error executing callback for:",e.content,n)}}finally{ge.ContextMenu=r}if(t)return Tr(t,s);console.warn("[ContextMenuConverter] No items captured for:",e.content)}a(im,"captureDynamicSubmenu");function Tr(e,o){const t=[];for(const s of e){if(s===null)continue;if(typeof s=="string"){const n={label:s,action:a(()=>{try{o?.callback&&o.callback.call(null,s,o,void 0,void 0,o.extra)}catch(l){console.error("Error executing string item callback:",l)}},"action")};t.push(n);continue}if(!s.content)continue;const r={label:um(s.content),action:a(()=>{try{s.callback?.call(s,s.value,{},void 0,void 0,s)}catch(n){console.error("Error executing submenu callback:",n)}},"action")};s.disabled&&(r.disabled=!0),t.push(r)}return t}a(Tr,"convertSubmenuToOptions");function um(e){return $t.sanitize(e,{ALLOWED_TAGS:[]}).trim()||e.replace(/<[^>]*>/g,"").trim()||e}a(um,"stripHtmlTags");function Tn(){const e=fe(),o=Ve();return{refreshCanvas:a(()=>{e.canvas?.emitBeforeChange(),e.canvas?.setDirty(!0,!0),e.canvas?.graph?.afterChange(),e.canvas?.emitAfterChange(),o.activeWorkflow?.changeTracker?.checkState()},"refreshCanvas")}}a(Tn,"useCanvasRefresh");function Nn(){const{t:e}=ue(),o=fe(),t=St(),s=Tn(),r=y(()=>t.completedActivePalette.light_theme),n=a(g=>Gt(g,{lightness:.5}),"toLightThemeColor"),l={name:"noColor",localizedName:e("color.noColor"),value:{dark:ge.NODE_DEFAULT_BGCOLOR,light:n(ge.NODE_DEFAULT_BGCOLOR)}},i=[l,...Object.entries(Ke.node_colors).map(([g,b])=>({name:g,localizedName:e(`color.${g}`),value:{dark:b.bgcolor,light:n(b.bgcolor)}}))],d=[{name:"default",localizedName:e("shape.default"),value:Et.ROUND},{name:"box",localizedName:e("shape.box"),value:Et.BOX},{name:"card",localizedName:e("shape.CARD"),value:Et.CARD}];return{colorOptions:i,shapeOptions:d,applyColor:a(g=>{const b=g?.name??l.name,S=b===l.name?null:Ke.node_colors[b];for(const k of o.selectedItems)Jo(k)&&k.setColorOption(S);s.refreshCanvas()},"applyColor"),applyShape:a(g=>{const b=Array.from(o.selectedItems).filter(S=>S instanceof _t);b.length!==0&&(b.forEach(S=>{S.shape=g.value}),s.refreshCanvas())},"applyShape"),getCurrentColor:a(()=>{const g=Array.from(o.selectedItems);if(g.length===0)return null;const b=g.find(k=>Jo(k));if(!b||!Jo(b))return null;const S=b.getColorOption()?.bgcolor??null;return i.find(k=>k.value.dark===S||k.value.light===S)??l},"getCurrentColor"),getCurrentShape:a(()=>{const g=Array.from(o.selectedItems).filter(S=>S instanceof _t);if(g.length===0)return null;const b=g[0].shape??Et.ROUND;return d.find(S=>S.value===b)??d[0]},"getCurrentShape"),isLightTheme:r}}a(Nn,"useNodeCustomization");function dm(){const{t:e}=ue(),o=fe(),t=Ve(),s=ne(),r=Tn(),{shapeOptions:n,colorOptions:l,isLightTheme:i}=Nn();return{getFitGroupToNodesOption:a(h=>({label:"Fit Group To Nodes",icon:"icon-[lucide--move-diagonal-2]",action:a(()=>{try{h.recomputeInsideNodes()}catch(b){console.warn("Failed to recompute group nodes:",b);return}const g=s.get("Comfy.GroupSelectedNodes.Padding");h.resizeTo(h.children,g),h.graph?.change(),o.canvas?.setDirty(!0,!0),t.activeWorkflow?.changeTracker?.checkState()},"action")}),"getFitGroupToNodesOption"),getGroupShapeOptions:a((h,g)=>({label:e("contextMenu.Shape"),icon:"icon-[lucide--box]",hasSubmenu:!0,submenu:n.map(b=>({label:b.localizedName,action:a(()=>{(h.nodes||[]).forEach(S=>S.shape=b.value),r.refreshCanvas(),g()},"action")}))}),"getGroupShapeOptions"),getGroupColorOptions:a((h,g)=>({label:e("contextMenu.Color"),icon:"icon-[lucide--palette]",hasSubmenu:!0,submenu:l.map(b=>({label:b.localizedName,color:i.value?b.value.light:b.value.dark,action:a(()=>{h.color=i.value?b.value.light:b.value.dark,r.refreshCanvas(),g()},"action")}))}),"getGroupColorOptions"),getGroupModeOptions:a((h,g)=>{const b=[];try{h.recomputeInsideNodes()}catch(C){return console.warn("Failed to recompute group nodes for mode options:",C),b}const S=h.nodes||[];if(!S.length)return b;let k=!0;for(let C=1;C<S.length;C++)if(S[C].mode!==S[0].mode){k=!1;break}const w=a((C,T)=>({label:e(`selectionToolbox.${C}`),icon:T===We.BYPASS?"icon-[lucide--ban]":T===We.NEVER?"icon-[lucide--zap-off]":"icon-[lucide--play]",action:a(()=>{S.forEach(I=>{I.mode=T}),o.canvas?.setDirty(!0,!0),h.graph?.change(),t.activeWorkflow?.changeTracker?.checkState(),g()},"action")}),"createModeAction");if(k)switch(S[0].mode){case We.ALWAYS:b.push(w("Set Group Nodes to Never",We.NEVER)),b.push(w("Bypass Group Nodes",We.BYPASS));break;case We.NEVER:b.push(w("Set Group Nodes to Always",We.ALWAYS)),b.push(w("Bypass Group Nodes",We.BYPASS));break;case We.BYPASS:b.push(w("Set Group Nodes to Always",We.ALWAYS)),b.push(w("Set Group Nodes to Never",We.NEVER));break;default:b.push(w("Set Group Nodes to Always",We.ALWAYS)),b.push(w("Set Group Nodes to Never",We.NEVER)),b.push(w("Bypass Group Nodes",We.BYPASS));break}else b.push(w("Set Group Nodes to Always",We.ALWAYS)),b.push(w("Set Group Nodes to Never",We.NEVER)),b.push(w("Bypass Group Nodes",We.BYPASS));return b},"getGroupModeOptions")}}a(dm,"useGroupMenuOptions");function cm(){const{t:e}=ue(),o=a(()=>{Ce().execute("Comfy.MaskEditor.OpenMaskEditor")},"openMaskEditor"),t=a(l=>{if(!l?.imgs?.length)return;const i=l.imgs[l.imageIndex??0];if(!i)return;const d=new URL(i.src);d.searchParams.delete("preview"),window.open(d.toString(),"_blank")},"openImage"),s=a(async l=>{if(!l?.imgs?.length)return;const i=l.imgs[l.imageIndex??0];if(!i)return;const d=document.createElement("canvas"),f=d.getContext("2d");if(f){d.width=i.naturalWidth,d.height=i.naturalHeight,f.drawImage(i,0,0);try{const m=await new Promise(v=>{d.toBlob(v,"image/png")});if(!m){console.warn("Failed to create image blob");return}if(!navigator.clipboard?.write){console.warn("Clipboard API not available");return}await navigator.clipboard.write([new ClipboardItem({"image/png":m})])}catch(m){console.error("Failed to copy image to clipboard:",m)}}},"copyImage"),r=a(l=>{if(!l?.imgs?.length)return;const i=l.imgs[l.imageIndex??0];if(i)try{const d=new URL(i.src);d.searchParams.delete("preview"),Io(d.toString())}catch(d){console.error("Failed to save image:",d)}},"saveImage");return{getImageMenuOptions:a(l=>l?.imgs?.length?[{label:e("contextMenu.Open in Mask Editor"),action:a(()=>o(),"action")},{label:e("contextMenu.Open Image"),icon:"icon-[lucide--external-link]",action:a(()=>t(l),"action")},{label:e("contextMenu.Copy Image"),icon:"icon-[lucide--copy]",action:a(()=>s(l),"action")},{label:e("contextMenu.Save Image"),icon:"icon-[lucide--download]",action:a(()=>r(l),"action")}]:[],"getImageMenuOptions")}}a(cm,"useImageMenuOptions");function pm(){const{getSelectedNodes:e,toggleSelectedNodesMode:o}=gn(),t=Ce(),s=Ve();return{adjustNodeSize:a(()=>{e().forEach(f=>{const m=f.computeSize();f.setSize([m[0],m[1]])}),Y.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"adjustNodeSize"),toggleNodeCollapse:a(()=>{e().forEach(f=>{f.collapse()}),Y.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"toggleNodeCollapse"),toggleNodePin:a(()=>{e().forEach(f=>{f.pin(!f.pinned)}),Y.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"toggleNodePin"),toggleNodeBypass:a(()=>{o(We.BYPASS),Y.canvas.setDirty(!0,!0)},"toggleNodeBypass"),runBranch:a(async()=>{Sn(e()).length!==0&&await t.execute("Comfy.QueueSelectedOutputNodes")},"runBranch")}}a(pm,"useSelectedNodeActions");function fm(){const{t:e}=ue(),{shapeOptions:o,applyShape:t,applyColor:s,colorOptions:r,isLightTheme:n}=Nn(),{adjustNodeSize:l,toggleNodeCollapse:i,toggleNodePin:d,toggleNodeBypass:f,runBranch:m}=pm(),v=y(()=>o.map(T=>({label:T.localizedName,action:a(()=>t(T),"action")}))),h=y(()=>r.map(T=>({label:T.localizedName,color:n.value?T.value.light:T.value.dark,action:a(()=>s(T.name==="noColor"?null:T),"action")})));return{getNodeInfoOption:a(T=>({label:e("contextMenu.Node Info"),icon:"icon-[lucide--info]",action:T}),"getNodeInfoOption"),getAdjustSizeOption:a(()=>({label:e("contextMenu.Adjust Size"),icon:"icon-[lucide--move-diagonal-2]",action:l}),"getAdjustSizeOption"),getNodeVisualOptions:a((T,I)=>[{label:T.collapsed?e("contextMenu.Expand Node"):e("contextMenu.Minimize Node"),icon:T.collapsed?"icon-[lucide--maximize-2]":"icon-[lucide--minimize-2]",action:a(()=>{i(),I()},"action")},{label:e("contextMenu.Shape"),icon:"icon-[lucide--box]",hasSubmenu:!0,submenu:v.value,action:a(()=>{},"action")},{label:e("contextMenu.Color"),icon:"icon-[lucide--palette]",hasSubmenu:!0,submenu:h.value,isColorPicker:!0,action:a(()=>{},"action")}],"getNodeVisualOptions"),getPinOption:a((T,I)=>({label:T.pinned?e("contextMenu.Unpin"):e("contextMenu.Pin"),icon:T.pinned?"icon-[lucide--pin-off]":"icon-[lucide--pin]",action:a(()=>{d(),I()},"action")}),"getPinOption"),getBypassOption:a((T,I)=>({label:T.bypassed?e("contextMenu.Remove Bypass"):e("contextMenu.Bypass"),icon:"icon-[lucide--redo-dot]",shortcut:"Ctrl+B",action:a(()=>{f(),I()},"action")}),"getBypassOption"),getRunBranchOption:a(()=>({label:e("contextMenu.Run Branch"),icon:"icon-[lucide--play]",action:m}),"getRunBranchOption"),colorSubmenu:h}}a(fm,"useNodeMenuOptions");function Nr(){const e=ne(),o=ya(),{hasMultipleSelection:t}=Kt(),s=y(()=>t.value);return{frameNodes:a(()=>{const{canvas:n}=Y;if(!n.selectedItems?.size)return;const l=new Ht,i=e.get("Comfy.GroupSelectedNodes.Padding");l.resizeTo(n.selectedItems,i),n.graph?.add(l),o.titleEditorTarget=l},"frameNodes"),canFrame:s}}a(Nr,"useFrameNodes");function vm(){const{t:e}=ue(),o=fe(),t=Tn(),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]"}],r=[{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:r,applyAlign:a(i=>{const d=Array.from(o.selectedItems).filter(m=>Mt(m));if(d.length===0)return;const f=ti(d,i.value);o.canvas?.repositionNodesVueMode(f),t.refreshCanvas()},"applyAlign"),applyDistribute:a(i=>{const d=Array.from(o.selectedItems).filter(m=>Mt(m));if(d.length<2)return;const f=ei(d,i.value);o.canvas?.repositionNodesVueMode(f),t.refreshCanvas()},"applyDistribute")}}a(vm,"useNodeArrangement");function mm(){const e=fe(),o=oo(),t=vt(),s=ya(),r=Ve();return{copySelection:a(()=>{const m=Y.canvas;if(!m.selectedItems||m.selectedItems.size===0){o.add({severity:"warn",summary:le("g.nothingToCopy"),detail:le("g.selectItemsToCopy"),life:3e3});return}m.copyToClipboard(),o.add({severity:"success",summary:le("g.copied"),detail:le("g.itemsCopiedToClipboard"),life:2e3})},"copySelection"),pasteSelection:a(()=>{Y.canvas.pasteFromClipboard({connectInputs:!1}),r.activeWorkflow?.changeTracker?.checkState()},"pasteSelection"),duplicateSelection:a(()=>{const m=Y.canvas;if(!m.selectedItems||m.selectedItems.size===0){o.add({severity:"warn",summary:le("g.nothingToDuplicate"),detail:le("g.selectItemsToDuplicate"),life:3e3});return}m.copyToClipboard(),m.selectedItems.clear(),e.updateSelectedItems(),m.pasteFromClipboard({connectInputs:!1}),r.activeWorkflow?.changeTracker?.checkState()},"duplicateSelection"),deleteSelection:a(()=>{const m=Y.canvas;if(!m.selectedItems||m.selectedItems.size===0){o.add({severity:"warn",summary:le("g.nothingToDelete"),detail:le("g.selectItemsToDelete"),life:3e3});return}m.deleteSelected(),m.setDirty(!0,!0),r.activeWorkflow?.changeTracker?.checkState()},"deleteSelection"),renameSelection:a(async()=>{const m=Array.from(e.selectedItems);if(m.length===1){const v=m[0];if(v instanceof _t){s.titleEditorTarget=v;return}const h="title"in v?v.title:"",g=await t.prompt({title:le("g.rename"),message:le("g.enterNewName"),defaultValue:h});if(g&&g!==h&&"title"in v){const b=v;b.title=g,Y.canvas.setDirty(!0,!0),r.activeWorkflow?.changeTracker?.checkState()}return}if(m.length>1){const v=await t.prompt({title:le("g.batchRename"),message:le("g.enterBaseName"),defaultValue:"Item"});v&&(m.forEach((h,g)=>{if("title"in h){const b=h;b.title=`${v} ${g+1}`}}),Y.canvas.setDirty(!0,!0),r.activeWorkflow?.changeTracker?.checkState());return}o.add({severity:"warn",summary:le("g.nothingToRename"),detail:le("g.selectItemsToRename"),life:3e3})},"renameSelection")}}a(mm,"useSelectionOperations");function gm(){const{t:e}=ue(),{copySelection:o,duplicateSelection:t,deleteSelection:s,renameSelection:r}=mm(),{alignOptions:n,distributeOptions:l,applyAlign:i,applyDistribute:d}=vm(),{convertToSubgraph:f,unpackSubgraph:m,addSubgraphToLibrary:v}=ur(),{frameNodes:h}=Nr(),g=y(()=>n.map(I=>({label:I.localizedName,icon:I.icon,action:a(()=>i(I),"action")}))),b=y(()=>l.map(I=>({label:I.localizedName,icon:I.icon,action:a(()=>d(I),"action")})));return{getBasicSelectionOptions:a(()=>[{label:e("contextMenu.Rename"),action:r},{label:e("contextMenu.Copy"),shortcut:"Ctrl+C",action:o},{label:e("contextMenu.Duplicate"),shortcut:"Ctrl+D",action:t}],"getBasicSelectionOptions"),getSubgraphOptions:a(({hasSubgraphs:I,hasMultipleSelection:_})=>{const N={label:e("contextMenu.Convert to Subgraph"),icon:"icon-[lucide--shrink]",action:f,badge:ds.NEW},$=[];return(!I||_)&&$.push(N),I&&$.push({label:e("contextMenu.Add Subgraph to Library"),icon:"icon-[lucide--folder-plus]",action:v},{label:e("contextMenu.Unpack Subgraph"),icon:"icon-[lucide--expand]",action:m}),$},"getSubgraphOptions"),getMultipleNodesOptions:a(()=>{const I=a(()=>{Ce().execute("Comfy.GroupNode.ConvertSelectedNodesToGroupNode")},"convertToGroupNodes");return[{label:e("contextMenu.Convert to Group Node"),icon:"icon-[lucide--group]",action:I,badge:ds.DEPRECATED},{label:e("g.frameNodes"),icon:"icon-[lucide--frame]",action:h}]},"getMultipleNodesOptions"),getDeleteOption:a(()=>({label:e("contextMenu.Delete"),icon:"icon-[lucide--trash-2]",shortcut:"Delete",action:s}),"getDeleteOption"),getAlignmentOptions:a(()=>[{label:e("contextMenu.Align Selected To"),icon:"icon-[lucide--align-start-horizontal]",hasSubmenu:!0,submenu:g.value,action:a(()=>{},"action")},{label:e("contextMenu.Distribute Nodes"),icon:"icon-[lucide--align-center-horizontal]",hasSubmenu:!0,submenu:b.value,action:a(()=>{},"action")}],"getAlignmentOptions"),alignSubmenu:g,distributeSubmenu:b}}a(gm,"useSelectionMenuOptions");let ds=(function(e){return e.NEW="new",e.DEPRECATED="deprecated",e})({});var Mo=null;function hm(e){Mo?.toggle&&Mo.toggle(e)}a(hm,"toggleNodeOptions");function ym(e){Mo?.show&&Mo.show(e)}a(ym,"showNodeOptions");function Za(e){Mo=e}a(Za,"registerNodeOptionsInstance");function bm(e){return e.map(o=>o.type==="divider"||o.type==="category"?o:{...o,source:"vue"})}a(bm,"markAsVueOptions");function wm(){const{selectedItems:e,selectedNodes:o,nodeDef:t,showNodeHelp:s,hasSubgraphs:r,hasImageNode:n,hasOutputNodesSelected:l,hasMultipleSelection:i,computeSelectionFlags:d}=Kt(),f=fe(),{getImageMenuOptions:m}=cm(),{getNodeInfoOption:v,getNodeVisualOptions:h,getPinOption:g,getBypassOption:b,getRunBranchOption:S}=fm(),{getFitGroupToNodesOption:k,getGroupColorOptions:w,getGroupModeOptions:C}=dm(),{getBasicSelectionOptions:T,getSubgraphOptions:I,getMultipleNodesOptions:_}=gm(),N=r,$=i,V=E(0),B=a(()=>{V.value++},"bump"),D=y(()=>{V.value;const U=d(),j=e.value.filter(mo),W=j.length===1&&o.value.length===0?j[0]:null,F=N.value,G=[];if(o.value.length===1&&!W&&f.canvas)try{const J=o.value[0],te=f.canvas.getNodeMenuOptions(J);G.push(...lm(te,J,!1))}catch(J){console.error("Error getting LiteGraph menu items:",J)}const z=[],K=T();if(z.push(...K),z.push({type:"divider"}),l.value){const J=S();z.push(J)}if(!W){const J=g(U,B),te=b(U,B);z.push(J),z.push(te)}if(W){const J=C(W,B);z.push(...J)}if(z.push({type:"divider"}),z.push(...I({hasSubgraphs:F,hasMultipleSelection:$.value})),$.value&&z.push(..._()),W)z.push(k(W));else{const J=h(U,B);J.length>0&&z.push(J[0])}if(z.push({type:"divider"}),t.value&&z.push(v(s)),W)z.push(w(W,B));else{const J=h(U,B);J.length>1&&z.push(J[1]),J.length>2&&z.push(J[2])}z.push({type:"divider"}),n.value&&o.value.length>0&&(z.push(...m(o.value[0])),z.push({type:"divider"}));const H=bm(z);return G.length>0?Xa([...G,...H]):Xa(H)});return{menuOptions:D,menuOptionsWithSubmenu:y(()=>D.value.filter(U=>U.hasSubmenu&&U.submenu)),bump:B,hasSubgraphs:N,registerNodeOptionsInstance:Za}}a(wm,"useMoreOptionsMenu");var _m=["title","onClick"],km={key:0,class:"icon-[lucide--check] size-4 flex-shrink-0"},Cm={key:1,class:"w-4 flex-shrink-0"},Sm=q({__name:"ColorPickerMenu",props:{option:{}},emits:["submenu-click"],setup(e,{expose:o,emit:t}){const s=e,r=t,{getCurrentShape:n}=Nn(),l=E();o({toggle:a((v,h)=>{l.value?.toggle(v,h)},"toggle")});const d=a(v=>{v.disabled||(r("submenu-click",v),l.value?.hide())},"handleSubmenuClick"),f=a(v=>{if(v.color)return!1;const h=n();return h?h.localizedName===v.label:!1},"isShapeSelected"),m=y(()=>s.option.submenu&&s.option.submenu.length>0&&s.option.submenu.every(v=>v.color&&!v.icon));return(v,h)=>(p(),O(u(wt),{ref_key:"popoverRef",ref:l,"auto-z-index":!0,"base-z-index":1100,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-60"},content:{class:["text-base-foreground rounded-lg","shadow-lg border border-base-background","bg-interface-panel-surface"]}}},{default:M(()=>[c("div",{class:Q(m.value?"flex flex-col gap-1 p-2":"flex flex-col p-2 min-w-40")},[(p(!0),x(Z,null,ye(v.option.submenu,g=>(p(),x("div",{key:g.label,class:Q(u(ae)("hover:bg-secondary-background-hover rounded cursor-pointer",m.value?"w-7 h-7 flex items-center justify-center":"flex items-center gap-2 px-3 py-1.5 text-sm",g.disabled?"cursor-not-allowed pointer-events-none text-node-icon-disabled":"hover:bg-secondary-background-hover")),title:g.label,onClick:a(b=>d(g),"onClick")},[g.color?(p(),x("div",{key:0,class:"size-5 rounded-full border border-border-default",style:be({backgroundColor:g.color})},null,4)):g.color?A("",!0):(p(),x(Z,{key:1},[f(g)?(p(),x("i",km)):(p(),x("div",Cm)),c("span",null,R(g.label),1)],64))],10,_m))),128))],2)]),_:1},512))}}),xm=Sm,Tm=["onClick"],Nm={class:"flex-1"},Im={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"},Pm={key:2,class:"icon-[lucide--chevron-right] size-4 opacity-60"},$m=q({__name:"NodeContextMenu",setup(e,{expose:o}){const t=E(),s=E(),r=E(!1),{menuOptions:n,bump:l}=wm(),i=fe(),d=E({x:0,y:0}),f=i.getCanvas(),{left:m,top:v}=dn(f.canvas);let h=0,g=0,b=0;const S=a(()=>{if(!r.value)return;const W=t.value?.container;if(!W)return;const{scale:F,offset:G}=f.ds;if(F===h&&G[0]===g&&G[1]===b)return;h=F,g=G[0],b=G[1];const z=(d.value.x+G[0])*F+m.value,K=(d.value.y+G[1])*F+v.value;W.style.left=`${z}px`,W.style.top=`${K}px`},"updateMenuPosition"),{resume:k,pause:w}=io(S,{immediate:!1});we(()=>{r.value?k():w()}),Oe(window,"touchstart",W=>{if(!r.value||!t.value)return;const F=W.target,G=t.value,z=G.container||G.$el;z&&!z.contains(F)&&$()},{passive:!0});const C=y(()=>n.value.find(W=>W.isColorPicker));function T(W){return!!W.isColorPicker}a(T,"isColorOption");function I(W){if(W.type==="divider")return{separator:!0};const F=T(W),G={label:W.label,icon:W.icon,disabled:W.disabled,shortcut:W.shortcut,isColorSubmenu:F,originalOption:W};return W.hasSubmenu&&W.submenu&&!F&&(G.items=W.submenu.map(z=>({label:z.label,icon:z.icon,disabled:z.disabled,command:a(()=>{z.action(),$()},"command")}))),!W.hasSubmenu&&W.action&&(G.command=()=>{W.action?.(),$()}),G}a(I,"convertToMenuItem");const _=y(()=>n.value.map(I));function N(W){l();const F=W.clientX-m.value,G=W.clientY-v.value,{scale:z,offset:K}=f.ds;d.value={x:F/z-K[0],y:G/z-K[1]},h=z,g=K[0],b=K[1],r.value=!0,t.value?.show(W)}a(N,"show");function $(){t.value?.hide()}a($,"hide");function V(W){r.value?$():N(W)}a(V,"toggle"),o({toggle:V,hide:$,isOpen:r,show:N});function B(W){W.stopPropagation(),W.preventDefault();const F=Array.from(W.currentTarget.children).find(G=>G.classList.contains("icon-[lucide--chevron-right]"));s.value?.toggle(W,F)}a(B,"showColorPopover");function D(W){W.action(),$()}a(D,"handleColorSelect");function U(){r.value=!0}a(U,"onMenuShow");function j(){r.value=!1}return a(j,"onMenuHide"),Re(()=>{Za({toggle:V,show:N,hide:$,isOpen:r})}),kt(()=>{Za(null)}),(W,F)=>(p(),x(Z,null,[L(u(As),{ref_key:"contextMenu",ref:t,model:_.value,class:"max-h-[80vh] md:max-h-none overflow-y-auto md:overflow-y-visible",onShow:U,onHide:j},{item:M(({item:G,props:z,hasSubmenu:K})=>[c("a",lt(z.action,{class:"flex items-center gap-2 px-3 py-1.5",onClick:a(H=>G.isColorSubmenu?B(H):void 0,"onClick")}),[G.icon?(p(),x("i",{key:0,class:Q([G.icon,"size-4"])},null,2)):A("",!0),c("span",Nm,R(G.label),1),G.shortcut?(p(),x("span",Im,R(G.shortcut),1)):A("",!0),K||G.isColorSubmenu?(p(),x("i",Pm)):A("",!0)],16,Tm)]),_:1},8,["model"]),C.value?(p(),O(xm,{ref_key:"colorPickerMenu",ref:s,key:"color-picker-menu",option:C.value,onSubmenuClick:D},null,8,["option"])):A("",!0)],64))}}),Mm=$m,Dm=q({__name:"FrameNodes",setup(e){const{frameNodes:o}=Nr();return(t,s)=>{const r=Pe("tooltip");return ce((p(),O(X,{variant:"muted-textonly","aria-label":t.$t("g.frameNodes"),onClick:u(o)},{default:M(()=>s[0]||(s[0]=[c("i",{class:"icon-[lucide--frame]"},null,-1)])),_:1},8,["aria-label","onClick"])),[[r,{value:t.$t("g.frameNodes"),showDelay:1e3},void 0,{top:!0}]])}}}),Lm=Dm,Am=q({__name:"NodeOptionsButton",setup(e){const o=a(t=>{hm(t)},"handleClick");return(t,s)=>{const r=Pe("tooltip");return ce((p(),O(X,{"data-testid":"more-options-button",variant:"muted-textonly","aria-label":t.$t("g.moreOptions"),onClick:o},{default:M(()=>s[0]||(s[0]=[c("i",{class:"icon-[lucide--more-vertical]"},null,-1)])),_:1},8,["aria-label"])),[[r,{value:t.$t("g.moreOptions"),showDelay:1e3},void 0,{top:!0}]])}}}),Em=Am,Vm={},Om={class:"h-6 w-px self-center bg-border-default"};function Rm(e,o){return p(),x("div",Om)}a(Rm,"_sfc_render$1");var cs=Be(Vm,[["render",Rm]]),Wm=q({__name:"SelectionToolbox",setup(e){const o=Ce(),t=fe(),s=qi(),r=go(),n=E(),{visible:l}=Zv(n),i=y(()=>{const W=new Set(t.selectedItems.map(F=>s.invokeExtensions("getSelectionToolboxCommands",F).flat()).flat());return Array.from(W).map(F=>o.getCommand(F)).filter(F=>F!==void 0)}),{hasAnySelection:d,hasMultipleSelection:f,isSingleNode:m,isSingleSubgraph:v,isSingleImageNode:h,hasAny3DNodeSelected:g,hasOutputNodesSelected:b,nodeDef:S}=Kt(),k=y(()=>!!S.value),w=y(()=>d.value),C=y(()=>d.value),T=y(()=>f.value),I=y(()=>v.value),_=y(()=>m.value||v.value||f.value),N=y(()=>g.value),$=y(()=>h.value),V=y(()=>d.value),B=y(()=>d.value),D=y(()=>b.value),U=y(()=>w.value||C.value||T.value||I.value),j=y(()=>_.value);return(W,F)=>(p(),x(Z,null,[c("div",{ref_key:"toolboxRef",ref:n,style:{transform:"translate(var(--tb-x), var(--tb-y))"},class:"pointer-events-none fixed top-0 left-0 z-40"},[L(ma,{name:"slide-up"},{default:M(()=>[u(l)?(p(),O(u(nn),{key:0,class:"selection-toolbox pointer-events-auto rounded-lg border border-interface-stroke bg-interface-panel-surface",pt:{header:"hidden",content:"p-1 h-10 flex flex-row gap-1"},onWheel:u(r).forwardEventToCanvas},{default:M(()=>[V.value?(p(),O(Lv,{key:0})):A("",!0),k.value&&U.value?(p(),O(cs,{key:1})):A("",!0),k.value?(p(),O(Wv,{key:2})):A("",!0),w.value?(p(),O(Nv,{key:3})):A("",!0),T.value?(p(),O(Lm,{key:4})):A("",!0),C.value?(p(),O(Mv,{key:5})):A("",!0),I.value?(p(),O(Pv,{key:6})):A("",!0),I.value?(p(),O(Qv,{key:7})):A("",!0),$.value?(p(),O(Fv,{key:8})):A("",!0),U.value&&j.value?(p(),O(cs,{key:9})):A("",!0),_.value?(p(),O(_v,{key:10})):A("",!0),B.value?(p(),O(qv,{key:11})):A("",!0),N.value?(p(),O(zv,{key:12})):A("",!0),(p(!0),x(Z,null,ye(i.value,G=>(p(),O(Ov,{key:G.id,command:G},null,8,["command"]))),128)),D.value?(p(),O(Ev,{key:13})):A("",!0),L(Em)]),_:1},8,["onWheel"])):A("",!0)]),_:1})],512),L(Mm)],64))}}),Bm=Be(Wm,[["__scopeId","data-v-8b7b6797"]]),zm=q({__name:"TitleEditor",setup(e){const o=ne(),t=E(!1),s=E(""),{style:r,updatePosition:n}=xr(),l=E({}),i=y(()=>({...r.value,...l.value})),d=ya(),f=fe(),m=E(!0),v=a(g=>{if(d.titleEditorTarget&&g?.trim()){const b=g.trim();d.titleEditorTarget.title=b;const S=d.titleEditorTarget;S instanceof _t&&S.isSubgraphNode?.()&&(S.subgraph.name=b),Y.canvas.setDirty(!0,!0)}t.value=!1,d.titleEditorTarget=null,f.canvas.allow_dragcanvas=m.value},"onEdit");return ie(()=>d.titleEditorTarget,g=>{if(g===null)return;s.value=g.title,t.value=!0;const b=f.canvas;m.value=b.allow_dragcanvas,b.allow_dragcanvas=!1;const S=b.ds.scale;if(g instanceof Ht){const k=g;n({pos:k.pos,size:[k.size[0],k.titleHeight]}),l.value={fontSize:`${k.font_size*S}px`}}else if(g instanceof _t){const k=g,[w,C]=k.getBounding();n({pos:[w,C],size:[k.width,ge.NODE_TITLE_HEIGHT]}),l.value={fontSize:`${12*S}px`}}}),Oe(document,"litegraph:canvas",a(g=>{if(g.detail.subType==="group-double-click"){if(!o.get("Comfy.Group.DoubleClickTitleToEdit"))return;const b=g.detail.group,[S,k]=b.pos;g.detail.originalEvent.canvasY-k<=b.titleHeight&&(d.titleEditorTarget=b)}else if(g.detail.subType==="node-double-click"){if(!o.get("Comfy.Node.DoubleClickTitleToEdit"))return;const b=g.detail.node,[S,k]=b.pos;g.detail.originalEvent.canvasY-k<=0&&(d.titleEditorTarget=b)}},"canvasEventHandler")),(g,b)=>t.value?(p(),x("div",{key:0,class:"group-title-editor node-title-editor",style:be(i.value)},[L(hn,{"is-editing":t.value,"model-value":s.value,onEdit:v},null,8,["is-editing","model-value"])],4)):A("",!0)}}),Um=Be(zm,[["__scopeId","data-v-aceb018c"]]);function Fm(){const e=fe();function o(t){const s=e.canvas?.graph?.groups??[];let r=null;for(const n of s){const l=n.boundingRect;if(!Ql(l,t.boundingRect))continue;if(!r){r=n;continue}const i=r.boundingRect,d=Gn(i,l),f=Gn(l,i);if(d&&!f){r=n;continue}l[2]*l[3]<i[2]*i[3]&&(r=n)}return r}return a(o,"findParentGroup"),{findParentGroup:o}}a(Fm,"useGraphHierarchy");var Gm={key:0,class:"p-3"},Hm=q({__name:"TabInfo",props:{nodes:{}},setup(e){const o=y(()=>e.nodes[0]),t=Ct(),s=y(()=>t.fromLGraphNode(o.value));return(r,n)=>s.value?(p(),x("div",Gm,[L(Ru,{node:s.value},null,8,["node"])])):A("",!0)}}),jm=Hm;const Ir=Symbol("getNodeParentGroup");function In(e,o){if(o.trim()==="")return e;const t=o.trim().toLowerCase().split(" ");return e.filter(({widget:s})=>{const r=s.label?.toLowerCase(),n=s.name.toLowerCase(),l=s.type.toLowerCase(),i=s.value?.toString().toLowerCase();return t.every(d=>n.includes(d)||r?.includes(d)||l?.includes(d)||i?.includes(d))})}a(In,"searchWidgets");function Pr(e,o){if(o.trim()==="")return e;const t=o.trim().toLowerCase().split(" ");return e.map(s=>{const{node:r}=s,n=r.getTitle().toLowerCase();return t.every(l=>n.includes(l))?{...s,keep:!0}:{...s,keep:!1,widgets:In(s.widgets,o)}}).filter(s=>s.keep||s.widgets.length>0)}a(Pr,"searchWidgetsAndNodes");function qm(e){const o={nodeToParentGroup:new Map,depth:0},{all:t,nodes:s,groups:r,others:n}=$r(e,o);return{all:Uo(t),nodes:Uo(s),groups:Uo(r),others:Uo(n),nodeToParentGroup:o.nodeToParentGroup}}a(qm,"flatAndCategorizeSelectedItems");function Km(e){const o=y(()=>qm(et(e)));return{flattedItems:y(()=>o.value.all),selectedNodes:y(()=>o.value.nodes),selectedGroups:y(()=>o.value.groups),selectedOthers:y(()=>o.value.others),nodeToParentGroup:y(()=>o.value.nodeToParentGroup)}}a(Km,"useFlatAndCategorizeSelectedItems");function $r(e,o){const t=[],s=[],r=[],n=[];if(o.depth>1e3)return{all:[],nodes:[],groups:[],others:[]};for(let l=0;l<e.length;l++){const i=e[l];if(mo(i)){t.push(i),r.push(i);const{all:d,nodes:f,groups:m,others:v}=$r(Array.from(i.children),{nodeToParentGroup:o.nodeToParentGroup,depth:o.depth+1,parentGroup:i});t.push(...d),s.push(...f),r.push(...m),n.push(...v)}else Mt(i)?(t.push(i),s.push(i),o.parentGroup&&o.nodeToParentGroup.set(i,o.parentGroup)):n.push(i)}return{all:t,nodes:s,groups:r,others:n}}a($r,"flatItems");function Uo(e){const o=new Set,t=[];for(const s of e)o.has(s)||(o.add(s),t.push(s));return t}a(Uo,"repeatItems");var Nt="0px",Qm=q({__name:"TransitionCollapse",props:{duration:{default:150},easingEnter:{default:"ease-in-out"},easingLeave:{default:"ease-in-out"},opacityClosed:{default:0},opacityOpened:{default:1},disable:{type:Boolean}},setup(e){const o=e,t=E(!1);Re(()=>t.value=!0);const s=y(()=>t.value&&!o.disable?o.duration:0);function r(m){return{height:m.style.height,width:m.style.width,position:m.style.position,visibility:m.style.visibility,overflow:m.style.overflow,paddingTop:m.style.paddingTop,paddingBottom:m.style.paddingBottom,borderTopWidth:m.style.borderTopWidth,borderBottomWidth:m.style.borderBottomWidth,marginTop:m.style.marginTop,marginBottom:m.style.marginBottom}}a(r,"getElementStyle");function n(m,v){const{width:h}=getComputedStyle(m);m.style.width=h,m.style.position="absolute",m.style.visibility="hidden",m.style.height="";const{height:g}=getComputedStyle(m);return m.style.width=v.width,m.style.position=v.position,m.style.visibility=v.visibility,m.style.height=Nt,m.style.overflow="hidden",v.height&&v.height!==Nt?v.height:g}a(n,"prepareElement");function l(m,v,h,g,b){const S=m.animate(g,b);m.style.height=v.height,S.onfinish=()=>{m.style.overflow=v.overflow,h()}}a(l,"animateTransition");function i(m,v){return[{height:Nt,opacity:o.opacityClosed,paddingTop:Nt,paddingBottom:Nt,borderTopWidth:Nt,borderBottomWidth:Nt,marginTop:Nt,marginBottom:Nt},{height:m,opacity:o.opacityOpened,paddingTop:v.paddingTop,paddingBottom:v.paddingBottom,borderTopWidth:v.borderTopWidth,borderBottomWidth:v.borderBottomWidth,marginTop:v.marginTop,marginBottom:v.marginBottom}]}a(i,"getEnterKeyframes");function d(m,v){const h=m,g=r(h);l(h,g,v,i(n(h,g),g),{duration:s.value,easing:o.easingEnter})}a(d,"enterTransition");function f(m,v){const h=m,g=r(h),{height:b}=getComputedStyle(h);h.style.height=b,h.style.overflow="hidden",l(h,g,v,i(b,g).reverse(),{duration:s.value,easing:o.easingLeave})}return a(f,"leaveTransition"),(m,v)=>(p(),O(ma,{css:!1,onEnter:d,onLeave:f},{default:M(()=>[_e(m.$slots,"default")]),_:3}))}}),Ym=Qm,Jm={class:"flex flex-col bg-comfy-menu-bg"},Xm={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl bg-inherit"},Zm=["disabled"],eg={class:"text-sm font-semibold line-clamp-2 flex-1"},tg={key:0,class:"pb-4"},og=q({__name:"PropertiesAccordionItem",props:Eo({disabled:{type:Boolean},label:{},enableEmptyState:{type:Boolean},tooltip:{}},{collapse:{type:Boolean,default:!1},collapseModifiers:{}}),emits:["update:collapse"],setup(e){const o=e,t=Vo(e,"collapse"),s=y(()=>!t.value&&!o.disabled),r=y(()=>{if(o.tooltip)return{value:o.tooltip,showDelay:1e3}});return(n,l)=>{const i=Pe("tooltip");return p(),x("div",Jm,[c("div",Xm,[ce((p(),x("button",{type:"button",class:Q(u(ae)("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",!n.disabled&&"cursor-pointer")),disabled:n.disabled,onClick:l[0]||(l[0]=d=>t.value=!t.value)},[c("span",eg,[_e(n.$slots,"label",{},()=>[Ie(R(n.label),1)])]),c("i",{class:Q(u(ae)("text-muted-foreground group-hover:text-base-foreground group-has-[.subbutton:hover]:text-muted-foreground group-focus:text-base-foreground icon-[lucide--chevron-up] size-4 transition-all",t.value&&"-rotate-180",n.disabled&&"opacity-0"))},null,2)],10,Zm)),[[i,r.value]])]),L(Ym,null,{default:M(()=>[s.value?(p(),x("div",tg,[_e(n.$slots,"default")])):n.enableEmptyState&&n.disabled?_e(n.$slots,"empty",{key:1},()=>[c("div",null,R(n.$t("g.empty")),1)]):A("",!0)]),_:3})])}}}),no=og,ag=["fixed","increment","decrement","randomize"];function ng(e){return ag.includes(e)}a(ng,"isControlOption");function ps(e){return ng(e)?e:"randomize"}a(ps,"normalizeControlOption");function sg(e){e.vueTrack||va((o,t)=>(e.callback=ro(e.callback,t),e.vueTrack=o,{get(){},set(){}}))}a(sg,"widgetWithVueTrack");function rg(e){return sg(e),e.vueTrack(),e.value}a(rg,"useReactiveWidgetValue");function lg(e){const o=e.linkedWidgets?.find(t=>t.name=="control_after_generate");if(o)return{value:ps(o.value),update:a(t=>o.value=ps(t),"update")}}a(lg,"getControlWidget");function ig(e,o){if(!(!e.isSubgraphNode()||!vo(o)))return e.subgraph.getNodeById(o._overlay.nodeId)?.type}a(ig,"getNodeType");function Mr(e,o){const t=Ct();return{value:rg(o),controlWidget:lg(o),spec:t.getInputSpecForWidget(e,o.name),nodeType:ig(e,o),borderStyle:o.promoted?"ring ring-component-node-widget-promoted":o.advanced?"ring ring-component-node-widget-advanced":void 0,label:o.label,options:o.options}}a(Mr,"getSharedWidgetEnhancements");var ug=a(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 dg(e,o){return function(t){try{const s=Mr(e,t),r=o.get(t.name),n=a(l=>{const i=ug(l);t.value=i??void 0,t.callback?.(i,Y.canvas,e),e.widgets?.forEach(d=>d.triggerDraw?.())},"callback");return{name:t.name,type:t.type,...s,callback:n,hasLayoutSize:typeof t.computeLayoutSize=="function",isDOMWidget:xo(t),slotMetadata:r}}catch{return{name:t.name||"unknown",type:t.type||"text",value:void 0}}}}a(dg,"safeWidgetMapper");function ea(e){const o=e.graph&&"id"in e.graph&&e.graph!==e.graph.rootGraph?String(e.graph.id):null,t=new Map,s=Bn(e.widgets??[]);Object.defineProperty(e,"widgets",{get(){return s},set(f){s.splice(0,s.length,...f)}});const r=Bn(e.inputs??[]);Object.defineProperty(e,"inputs",{get(){return r},set(f){r.splice(0,r.length,...f)}});const n=vl(()=>(e.inputs?.forEach((f,m)=>{f?.widget?.name&&t.set(f.widget.name,{index:m,linked:f.link!=null})}),e.widgets?.map(dg(e,t))??[])),l=e.type||e.constructor?.comfyClass||e.constructor?.title||e.constructor?.name||"Unknown",i=e.constructor?.nodeData?.api_node??!1,d=e.badges;return{id:String(e.id),title:typeof e.title=="string"?e.title:"",type:l,mode:e.mode||0,titleMode:e.title_mode,selected:e.selected||!1,executing:!1,subgraphId:o,apiNode:i,badges:d,hasErrors:!!e.has_errors,widgets:n,inputs:r,outputs:e.outputs?[...e.outputs]:void 0,flags:e.flags?{...e.flags}:void 0,color:e.color||void 0,bgcolor:e.bgcolor||void 0,resizable:e.resizable,shape:e.shape}}a(ea,"extractVueNodeData");function cg(e){const{createNode:o,deleteNode:t,setSource:s}=ha(),r=Es(new Map),n=new Map,l=a(b=>{const S=n.get(b),k=r.get(b);if(!S||!k)return;const w=new Map;S.inputs?.forEach((C,T)=>{C?.widget?.name&&w.set(C.widget.name,{index:T,linked:C.link!=null})});for(const C of k.widgets??[]){const T=w.get(C.name);T&&(C.slotMetadata=T)}},"refreshNodeSlots"),i=a(b=>n.get(b),"getNode"),d=a(()=>{if(!e?._nodes)return;const b=new Set(e._nodes.map(S=>String(S.id)));for(const S of Array.from(r.keys()))b.has(S)||(n.delete(S),r.delete(S));e._nodes.forEach(S=>{const k=String(S.id);n.set(k,S),r.set(k,ea(S))})},"syncWithGraph"),f=a((b,S)=>{const k=String(b.id);n.set(k,b),r.set(k,ea(b));const w=a(()=>{const C={x:b.pos[0],y:b.pos[1]},T={width:b.size[0],height:b.size[1]};s(No.Canvas),o(k,{position:C,size:T,zIndex:b.order||0,visible:!0})},"initializeVueNodeLayout");window.app?.configuringGraph?b.onAfterGraphConfigured=ro(b.onAfterGraphConfigured,()=>{r.set(k,ea(b)),w()}):w(),S&&S(b)},"handleNodeAdded"),m=a((b,S)=>{const k=String(b.id);s(No.Canvas),t(k),n.delete(k),r.delete(k),S&&S(b)},"handleNodeRemoved"),v=a((b,S,k)=>()=>{e.onNodeAdded=b||void 0,e.onNodeRemoved=S||void 0,e.onTrigger=k||void 0,n.clear(),r.clear()},"createCleanupFunction"),g=a(()=>{const b=e.onNodeAdded,S=e.onNodeRemoved,k=e.onTrigger;e.onNodeAdded=C=>{f(C,b)},e.onNodeRemoved=C=>{m(C,S)};const w={"node:property:changed":a(C=>{const T=String(C.nodeId),I=r.get(T);if(I)switch(C.property){case"title":r.set(T,{...I,title:String(C.newValue)});break;case"flags.collapsed":r.set(T,{...I,flags:{...I.flags,collapsed:!!C.newValue}});break;case"flags.pinned":r.set(T,{...I,flags:{...I.flags,pinned:!!C.newValue}});break;case"mode":r.set(T,{...I,mode:typeof C.newValue=="number"?C.newValue:0});break;case"color":r.set(T,{...I,color:typeof C.newValue=="string"?C.newValue:void 0});break;case"bgcolor":r.set(T,{...I,bgcolor:typeof C.newValue=="string"?C.newValue:void 0});break;case"shape":r.set(T,{...I,shape:typeof C.newValue=="number"?C.newValue:void 0})}},"node:property:changed"),"node:slot-errors:changed":a(C=>{l(String(C.nodeId))},"node:slot-errors:changed"),"node:slot-links:changed":a(C=>{C.slotType===ni.INPUT&&l(String(C.nodeId))},"node:slot-links:changed")};return e.onTrigger=C=>{switch(C.type){case"node:property:changed":w["node:property:changed"](C);break;case"node:slot-errors:changed":w["node:slot-errors:changed"](C);break;case"node:slot-links:changed":w["node:slot-links:changed"](C);break}k?.(C)},d(),v(b||void 0,S||void 0,k||void 0)},"setupEventListeners")();return e._nodes&&e._nodes.length>0&&e._nodes.forEach(b=>{e.onNodeAdded&&e.onNodeAdded(b)}),{vueNodeData:r,getNode:i,cleanup:g}}a(cg,"useGraphNodeManager");function pg(e,o,t,s){if(vo(e)&&s?.length){const n=s[0].subgraph;if(!n)return console.error("Could not find subgraph for proxy widget"),!1;const l=n.getNodeById(e._overlay.nodeId);if(!l)return console.error("Could not find interior node for proxy widget"),!1;const i=l.widgets?.find(f=>f.name===e._overlay.widgetName);if(!i)return console.error("Could not find original widget for proxy widget"),!1;i.label=t||void 0;const d=l.inputs?.find(f=>f.widget?.name===e._overlay.widgetName);d&&(d.label=t||void 0)}const r=o.inputs?.find(n=>n.widget?.name===e.name);return e.label=t||void 0,r&&(r.label=t||void 0),!0}a(pg,"renameWidget");var fg=["onClick"],vg=["onClick"],mg=["onClick"],gg=q({__name:"WidgetActions",props:Eo({widget:{},node:{},parents:{default:a(()=>[],"default")},isShownOnParents:{type:Boolean,default:!1}},{label:{required:!0},labelModifiers:{}}),emits:["update:label"],setup(e){const o=Vo(e,"label"),t=fe(),s=yn(),r=vt(),{t:n}=ue(),l=y(()=>e.parents?.length>0),i=y(()=>e.isShownOnParents&&l.value?e.parents[0]:e.node),d=y(()=>s.isFavorited(i.value,e.widget.name));async function f(){const b=await r.prompt({title:n("g.rename"),message:n("g.enterNewName")+":",defaultValue:e.widget.label,placeholder:e.widget.name});b!==null&&(o.value=b)}a(f,"handleRename");function m(){if(e.parents?.length){if(vo(e.widget)){const b=e.parents[0].subgraph.getNodeById(parseInt(e.widget._overlay.nodeId));if(!b){console.error("Could not find interior node for proxy widget");return}const S=b.widgets?.find(k=>k.name===e.widget._overlay.widgetName);if(!S){console.error("Could not find original widget for proxy widget");return}qa(b,S,e.parents)}else qa(e.node,e.widget,e.parents);t.canvas?.setDirty(!0,!0)}}a(m,"handleHideInput");function v(){e.parents?.length&&(ar(e.node,e.widget,e.parents),t.canvas?.setDirty(!0,!0))}a(v,"handleShowInput");function h(){s.toggleFavorite(i.value,e.widget.name)}a(h,"handleToggleFavorite");const g=ae(["border-none bg-transparent","w-full flex items-center gap-2 rounded px-3 py-2 text-sm","cursor-pointer transition-all hover:bg-secondary-background-hover active:scale-95"]);return(b,S)=>(p(),O(Xs,{"is-vertical":"",class:"text-muted-foreground bg-transparent hover:text-base-foreground hover:bg-secondary-background-hover active:scale-95 transition-all"},{default:M(({close:k})=>[c("button",{class:Q(u(g)),onClick:a(()=>{f(),k()},"onClick")},[S[0]||(S[0]=c("i",{class:"icon-[lucide--edit] size-4"},null,-1)),c("span",null,R(u(n)("g.rename")),1)],10,fg),l.value?(p(),x("button",{key:0,class:Q(u(g)),onClick:a(()=>{b.isShownOnParents?m():v(),k()},"onClick")},[b.isShownOnParents?(p(),x(Z,{key:0},[S[1]||(S[1]=c("i",{class:"icon-[lucide--eye-off] size-4"},null,-1)),c("span",null,R(u(n)("rightSidePanel.hideInput")),1)],64)):(p(),x(Z,{key:1},[S[2]||(S[2]=c("i",{class:"icon-[lucide--eye] size-4"},null,-1)),c("span",null,R(u(n)("rightSidePanel.showInput")),1)],64))],10,vg)):A("",!0),c("button",{class:Q(u(g)),onClick:a(()=>{h(),k()},"onClick")},[d.value?(p(),x(Z,{key:0},[S[3]||(S[3]=c("i",{class:"icon-[lucide--star]"},null,-1)),c("span",null,R(u(n)("rightSidePanel.removeFavorite")),1)],64)):(p(),x(Z,{key:1},[S[4]||(S[4]=c("i",{class:"icon-[lucide--star]"},null,-1)),c("span",null,R(u(n)("rightSidePanel.addFavorite")),1)],64))],10,mg)]),_:1}))}}),hg=gg,yg={key:1,class:"text-xs text-muted-foreground flex-1 p-0 my-0 mx-1 truncate text-right min-w-10"},bg={class:"flex items-center gap-1 shrink-0 pointer-events-auto"},wg={key:0,class:"relative z-2 pointer-events-none"},_g=q({__name:"WidgetItem",props:{widget:{},node:{},isDraggable:{type:Boolean,default:!1},hiddenFavoriteIndicator:{type:Boolean,default:!1},showNodeName:{type:Boolean,default:!1},parents:{default:a(()=>[],"default")},isShownOnParents:{type:Boolean,default:!1}},setup(e){const o=fe(),t=yn(),s=E(!1),r=y(()=>Gi(e.widget.type,e.widget.name)||wi),n=y(()=>{const v=Mr(e.node,e.widget);return{...e.widget,...v}}),l=y(()=>{let v=e.node;if(vo(e.widget)){const{graph:h,nodeId:g}=e.widget._overlay;v=Jl(h,g)}return v?v.title||v.type:null}),i=y(()=>e.parents?.length>0),d=y(()=>e.isShownOnParents&&i.value?e.parents[0]:e.node),f=y({get:a(()=>(e.widget.vueTrack?.(),e.widget.value),"get"),set:a(v=>{e.widget.value=v,e.widget.callback?.(v),o.canvas?.setDirty(!0,!0)},"set")}),m=va((v,h)=>({get(){return v(),e.widget.label||e.widget.name},set(g){s.value=!1;const b=g.trim();pg(e.widget,e.node,b,e.parents)&&(o.canvas?.setDirty(!0),h())}}));return(v,h)=>(p(),x("div",{class:Q(u(ae)("widget-item col-span-full grid grid-cols-subgrid rounded-lg group",v.isDraggable&&"draggable-item !will-change-auto drag-handle cursor-grab bg-comfy-menu-bg [&.is-draggable]:cursor-grabbing outline-comfy-menu-bg [&.is-draggable]:outline-4 [&.is-draggable]:outline-offset-0 [&.is-draggable]:opacity-70"))},[c("div",{class:Q(u(ae)("min-h-8 flex items-center justify-between gap-1 mb-1.5 min-w-0",v.isDraggable&&"pointer-events-none"))},[v.widget.name?(p(),O(hn,{key:0,"model-value":m.value,"is-editing":s.value,"input-attrs":{placeholder:v.widget.name},class:"text-sm leading-8 p-0 m-0 truncate pointer-events-auto cursor-text",onEdit:h[0]||(h[0]=g=>m.value=g),onCancel:h[1]||(h[1]=g=>s.value=!1),onClick:h[2]||(h[2]=g=>s.value=!0)},null,8,["model-value","is-editing","input-attrs"])):A("",!0),(v.showNodeName||i.value)&&l.value?(p(),x("span",yg,R(l.value),1)):A("",!0),c("div",bg,[L(hg,{label:m.value,"onUpdate:label":h[3]||(h[3]=g=>m.value=g),widget:v.widget,node:v.node,parents:v.parents,"is-shown-on-parents":v.isShownOnParents},null,8,["label","widget","node","parents","is-shown-on-parents"])])],2),!v.hiddenFavoriteIndicator&&u(t).isFavorited(d.value,v.widget.name)?(p(),x("div",wg,h[5]||(h[5]=[c("i",{class:"absolute -right-1 -top-1 pi pi-star-fill text-xs text-muted-foreground pointer-events-none"},null,-1)]))):A("",!0),(p(),O(so(r.value),{modelValue:f.value,"onUpdate:modelValue":h[4]||(h[4]=g=>f.value=g),widget:n.value,"node-id":String(v.node.id),"node-type":v.node.type,class:Q(u(ae)("col-span-1",u(Cu)(v.widget.type)&&"min-h-36"))},null,8,["modelValue","widget","node-id","node-type","class"])),c("div",{class:Q(u(ae)("pointer-events-none mt-1.5 mx-auto max-w-40 w-1/2 h-1 rounded-lg bg-transparent transition-colors duration-150","group-hover:bg-interface-stroke group-[.is-draggable]:bg-component-node-widget-background-highlighted",!v.isDraggable&&"opacity-0"))},null,2)],2))}}),kg=_g,Cg={class:"flex items-center gap-2 flex-1 min-w-0"},Sg={class:"flex-1 flex items-center gap-2 min-w-0"},xg={class:"truncate"},Tg=["title"],Ng=q({__name:"SectionWidgets",props:Eo({label:{},parents:{default:a(()=>[],"default")},node:{},widgets:{},showLocateButton:{type:Boolean,default:!1},isDraggable:{type:Boolean,default:!1},hiddenFavoriteIndicator:{type:Boolean,default:!1},showNodeName:{type:Boolean,default:!1},enableEmptyState:{type:Boolean,default:!1},tooltip:{}},{collapse:{type:Boolean,default:!1},collapseModifiers:{}}),emits:["update:collapse"],setup(e,{expose:o}){const t=Vo(e,"collapse"),s=E(),r=E(),n=Je(e.widgets);we(()=>n.value=e.widgets),fa("hideLayoutField",!0);const l=fe(),{t:i}=ue(),d=Ml(Ir,null);function f(k,w){if(!e.parents.length)return!1;const C=ra(e.parents[0].properties.proxyWidgets);return vo(w)?C.some(([T,I])=>w._overlay.nodeId==T&&w._overlay.widgetName===I):C.some(([T,I])=>k.id==T&&w.name===I)}a(f,"isWidgetShownOnParents");const m=y(()=>n.value.length===0),v=y(()=>e.label??(e.node?e.node.title:i("rightSidePanel.inputs"))),h=y(()=>{if(e.node)return e.node;if(m.value)return null;const k=n.value[0].node.id;return n.value.every(({node:w})=>w.id===k)?n.value[0].node:null}),g=y(()=>!h.value||!d?null:d(h.value)),b=y(()=>e.showLocateButton&&h.value!==null);function S(){if(!h.value||!l.canvas)return;const k=l.canvas.graph?.getNodeById(h.value.id);k&&l.canvas.animateToBounds(k.boundingRect)}return a(S,"handleLocateNode"),o({widgetsContainer:s,rootElement:r}),(k,w)=>(p(),x("div",{ref_key:"rootElement",ref:r},[L(no,{collapse:t.value,"onUpdate:collapse":w[0]||(w[0]=C=>t.value=C),"enable-empty-state":k.enableEmptyState,disabled:m.value,tooltip:k.tooltip},{label:M(()=>[c("div",Cg,[c("span",Sg,[c("span",xg,[_e(k.$slots,"label",{},()=>[Ie(R(v.value),1)])]),g.value?(p(),x("span",{key:0,class:"text-xs text-muted-foreground truncate flex-1 text-right min-w-11",title:g.value.title},R(g.value.title),9,Tg)):A("",!0)]),b.value?(p(),O(X,{key:0,variant:"textonly",size:"icon-sm",class:"subbutton shrink-0 mr-3 size-8 cursor-pointer text-muted-foreground hover:text-base-foreground",title:u(i)("rightSidePanel.locateNode"),"aria-label":u(i)("rightSidePanel.locateNode"),onClick:ke(S,["stop"])},{default:M(()=>w[1]||(w[1]=[c("i",{class:"icon-[lucide--locate] size-4"},null,-1)])),_:1},8,["title","aria-label"])):A("",!0)])]),empty:M(()=>[_e(k.$slots,"empty")]),default:M(()=>[c("div",{ref_key:"widgetsContainer",ref:s,class:"space-y-2 rounded-lg px-4 pt-1 relative"},[L(ln,{name:"list-scale"},{default:M(()=>[(p(!0),x(Z,null,ye(n.value,({widget:C,node:T})=>(p(),O(kg,{key:`${T.id}-${C.name}-${C.type}`,widget:C,node:T,"is-draggable":k.isDraggable,"hidden-favorite-indicator":k.hiddenFavoriteIndicator,"show-node-name":k.showNodeName,parents:k.parents,"is-shown-on-parents":f(T,C)},null,8,["widget","node","is-draggable","hidden-favorite-indicator","show-node-name","parents","is-shown-on-parents"]))),128))]),_:1})],512)]),_:3},8,["collapse","enable-empty-state","disabled","tooltip"])],512))}}),Do=Ng,Ig={class:"px-4 pt-1 pb-4 flex gap-2 border-b border-interface-stroke"},Pg={class:"text-sm text-muted-foreground px-4 text-center py-10"},$g=q({__name:"TabGlobalParameters",setup(e){const o=yn(),{searchQuery:t}=ze(ut()),{t:s}=ue(),r=E(void 0),n=E(),l=E(!1),i=y(()=>o.validFavoritedWidgets),d=y(()=>i.value.length===0?s("rightSidePanel.favoritesNone"):s("rightSidePanel.favorites")),f=Je(i.value);async function m(g){l.value=g.trim().length>0,f.value=In(i.value,g)}a(m,"searcher");const v=Ws();function h(){if(!v.value)return;r.value?.dispose();const g=n.value?.widgetsContainer;l.value||!g?.children?.length||(r.value=new mn(g,".draggable-item"),r.value.applyNewItemsOrder=function(){const b=[];let S=-1;this.getAllItems().forEach((T,I)=>{if(T===this.draggableItem){S=I;return}if(!this.isItemToggled(T)){b[I]=T;return}const _=this.isItemAbove(T)?I+1:I-1;b[_]=T});for(let T=0;T<this.getAllItems().length;T++)typeof b[T]>"u"&&(b[T]=this.draggableItem);const k=b.indexOf(this.draggableItem),w=[...f.value],[C]=w.splice(S,1);w.splice(k,0,C),f.value=w,o.reorderFavorites(w)})}return a(h,"setDraggableState"),Ut(f,()=>{h()},{debounce:100}),Re(()=>{h()}),rt(()=>{r.value?.dispose()}),(g,b)=>(p(),x(Z,null,[c("div",Ig,[L(zo,{modelValue:u(t),"onUpdate:modelValue":b[0]||(b[0]=S=>qe(t)?t.value=S:null),searcher:m,"update-key":i.value},null,8,["modelValue","update-key"])]),L(Do,{ref_key:"sectionWidgetsRef",ref:n,label:d.value,widgets:f.value,"is-draggable":!l.value,"hidden-favorite-indicator":"","show-node-name":"","enable-empty-state":"",class:"border-b border-interface-stroke","onUpdate:collapse":b[1]||(b[1]=S=>Ue(h))},{empty:M(()=>[c("div",Pg,R(l.value?u(s)("rightSidePanel.noneSearchDesc"):u(s)("rightSidePanel.favoritesNoneDesc")),1)]),_:1},8,["label","widgets","is-draggable"])],64))}}),Mg=$g,Dg={class:"px-4 pt-1 pb-4 flex gap-2 border-b border-interface-stroke"},Lg={key:0,class:"text-sm text-muted-foreground px-4 text-center pt-5 pb-15"},Ag=q({__name:"TabNodes",setup(e){const o=fe(),t=Ve(),s=y(()=>(t.activeWorkflow?.path,o.canvas?.graph?.nodes??[])),{searchQuery:r}=ze(ut()),n=y(()=>s.value.map(f=>{const{widgets:m=[]}=f;return{widgets:m.filter(v=>!(v.options?.canvasOnly||v.options?.hidden)).map(v=>({node:f,widget:v})),node:f}})),l=Je(n.value),i=E(!1);async function d(f){const m=n.value,v=l;i.value=f.trim()!=="",v.value=Pr(m,f)}return a(d,"searcher"),(f,m)=>(p(),x(Z,null,[c("div",Dg,[L(zo,{modelValue:u(r),"onUpdate:modelValue":m[0]||(m[0]=v=>qe(r)?r.value=v:null),searcher:d,"update-key":n.value},null,8,["modelValue","update-key"])]),L(ln,{tag:"div",name:"list-scale",class:"relative"},{default:M(()=>[i.value&&l.value.length===0?(p(),x("div",Lg,R(f.$t("rightSidePanel.noneSearchDesc")),1)):A("",!0),(p(!0),x(Z,null,ye(l.value,({node:v,widgets:h})=>(p(),O(Do,{key:v.id,node:v,widgets:h,collapse:!i.value,tooltip:i.value||h.length?"":f.$t("rightSidePanel.inputsNoneTooltip"),"show-locate-button":"",class:"border-b border-interface-stroke"},null,8,["node","widgets","collapse","tooltip"]))),128))]),_:1})],64))}}),Eg=Ag,Vg={class:"px-4 pt-1 pb-4 flex gap-2 border-b border-interface-stroke"},Og={key:0,class:"text-sm text-muted-foreground px-4 py-10 text-center"},Rg=q({__name:"TabNormalInputs",props:{mustShowNodeTitle:{type:Boolean},nodes:{}},setup(e){const{t:o}=ue(),{searchQuery:t}=ze(ut()),s=y(()=>e.nodes.map(f=>{const{widgets:m=[]}=f;return{widgets:m.filter(v=>!(v.options?.canvasOnly||v.options?.hidden)).map(v=>({node:f,widget:v})),node:f}})),r=y(()=>s.value.length>1),n=Je(s.value),l=E(!1);async function i(f){const m=s.value,v=n;l.value=f.trim()!=="",v.value=Pr(m,f)}a(i,"searcher");const d=y(()=>{const f=s.value;return!e.mustShowNodeTitle&&f.length===1?f[0].widgets.length!==0?o("rightSidePanel.inputs"):o("rightSidePanel.inputsNone"):void 0});return(f,m)=>(p(),x(Z,null,[c("div",Vg,[L(zo,{modelValue:u(t),"onUpdate:modelValue":m[0]||(m[0]=v=>qe(t)?t.value=v:null),searcher:i,"update-key":s.value},null,8,["modelValue","update-key"])]),L(ln,{tag:"div",name:"list-scale",class:"relative"},{default:M(()=>[n.value.length===0?(p(),x("div",Og,R(l.value?u(o)("rightSidePanel.noneSearchDesc"):u(o)("rightSidePanel.nodesNoneDesc")),1)):A("",!0),(p(!0),x(Z,null,ye(n.value,({widgets:v,node:h})=>(p(),O(Do,{key:h.id,node:h,label:d.value,widgets:v,collapse:r.value&&!l.value,"show-locate-button":r.value,tooltip:l.value||v.length?"":u(o)("rightSidePanel.inputsNoneTooltip"),class:"border-b border-interface-stroke"},null,8,["node","label","widgets","collapse","show-locate-button","tooltip"]))),128))]),_:1})],64))}}),Wg=Rg,Bg={class:"px-4 pt-1 pb-4 flex gap-2 border-b border-interface-stroke"},zg={class:"text-sm text-muted-foreground px-4 text-center pt-5 pb-15"},Ug=q({__name:"TabSubgraphInputs",props:{node:{}},setup(e){const{t:o}=ue(),t=fe(),s=ut(),{focusedSection:r,searchQuery:n}=ze(s),l=E(!0),i=E(void 0),d=Qe("sectionWidgetsRef"),f=Qe("advancedInputsSectionRef"),m=va((I,_)=>({get(){return I(),ra(e.node.properties.proxyWidgets)},set(N){_(),N&&(e.node.properties.proxyWidgets=N)}}));ie(r,async I=>{if(I==="advanced-inputs"){l.value=!1,s.clearFocusedSection(),await Ue(),await new Promise(N=>setTimeout(N,300));const _=f.value?.rootElement;_&&_.scrollIntoView({behavior:"smooth",block:"start"})}},{immediate:!0});const v=y(()=>{const I=m.value,{widgets:_=[]}=e.node,N=[];for(const[$,V]of I){const B=_.find(D=>vo(D)?String(D._overlay.nodeId)===$&&D._overlay.widgetName===V:D.name===V);B&&N.push({node:e.node,widget:B})}return N}),h=y(()=>{const I=e.node.subgraph.nodes,_=ra(e.node.properties.proxyWidgets);return I.flatMap(N=>{const{widgets:$=[]}=N;return $.filter(V=>!V.computedDisabled).map(V=>({node:N,widget:V}))}).filter(({node:N,widget:$})=>!_.some(([V,B])=>N.id==V&&$.name===B))}),g=y(()=>[e.node]),b=Je(v.value),S=E(!1);async function k(I){S.value=I.trim()!=="",b.value=In(v.value,I)}a(k,"searcher");const w=Ws();function C(){if(!w.value)return;i.value?.dispose();const I=d.value?.widgetsContainer;S.value||!I?.children?.length||(i.value=new mn(I,".draggable-item"),i.value.applyNewItemsOrder=function(){const _=[];let N=-1;if(this.getAllItems().forEach((D,U)=>{if(D===this.draggableItem){N=U;return}if(!this.isItemToggled(D)){_[U]=D;return}const j=this.isItemAbove(D)?U+1:U-1;_[j]=D}),N===-1){console.error("[TabSubgraphInputs] draggableItem not found in items");return}for(let D=0;D<this.getAllItems().length;D++)typeof _[D]>"u"&&(_[D]=this.draggableItem);const $=_.indexOf(this.draggableItem),V=m.value,[B]=V.splice(N,1);V.splice($,0,B),m.value=V,t.canvas?.setDirty(!0,!0),Ha(m)})}a(C,"setDraggableState"),Ut(b,()=>C(),{debounce:100}),Re(()=>C()),rt(()=>i.value?.dispose());const T=y(()=>b.value.length!==0?o("rightSidePanel.inputs"):o("rightSidePanel.inputsNone"));return(I,_)=>(p(),x(Z,null,[c("div",Bg,[L(zo,{modelValue:u(n),"onUpdate:modelValue":_[0]||(_[0]=N=>qe(n)?n.value=N:null),searcher:k,"update-key":v.value},null,8,["modelValue","update-key"])]),L(Do,{ref_key:"sectionWidgetsRef",ref:d,node:I.node,label:T.value,parents:g.value,widgets:b.value,"is-draggable":!S.value,"enable-empty-state":S.value,tooltip:S.value||b.value.length?"":u(o)("rightSidePanel.inputsNoneTooltip"),class:"border-b border-interface-stroke","onUpdate:collapse":_[1]||(_[1]=N=>Ue(C))},{empty:M(()=>[c("div",zg,R(u(o)("rightSidePanel.noneSearchDesc")),1)]),_:1},8,["node","label","parents","widgets","is-draggable","enable-empty-state","tooltip"]),h.value.length>0?(p(),O(Do,{key:0,ref_key:"advancedInputsSectionRef",ref:f,collapse:l.value,"onUpdate:collapse":_[2]||(_[2]=N=>l.value=N),label:u(o)("rightSidePanel.advancedInputs"),parents:g.value,widgets:h.value,"show-node-name":"",class:"border-b border-interface-stroke"},null,8,["collapse","label","parents","widgets"])):A("",!0)],64))}}),Fg=Ug,Gg=q({__name:"LayoutField",props:{label:{},tooltip:{},singleline:{type:Boolean}},setup(e){return(o,t)=>{const s=Pe("tooltip");return p(),x("div",{class:Q(u(ae)("flex gap-2",o.singleline?"items-center justify-between":"flex-col"))},[ce((p(),x("span",{class:Q(u(ae)("text-sm text-muted-foreground truncate",o.tooltip?"cursor-help":"",o.singleline?"flex-1":""))},[Ie(R(o.label),1)],2)),[[s,o.tooltip?{value:o.tooltip,showDelay:300}:null,void 0,{left:!0}]]),_e(o.$slots,"default")],2)}}}),Lo=Gg,Hg=q({__name:"FieldSwitch",props:Eo({label:{},tooltip:{}},{modelValue:{type:Boolean,default:!1},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const o=Vo(e,"modelValue");return(t,s)=>(p(),O(Lo,{singleline:"",label:t.label,tooltip:t.tooltip},{default:M(()=>[L(u(Ps),{modelValue:o.value,"onUpdate:modelValue":s[0]||(s[0]=r=>o.value=r),class:"transition-transform active:scale-90"},null,8,["modelValue"])]),_:1},8,["label","tooltip"]))}}),eo=Hg,jg={class:"flex flex-col border-t border-interface-stroke"},qg={class:"space-y-4 px-4 py-3"},Kg={class:"space-y-4 px-4 py-3"},Qg={class:"space-y-4 px-4 py-3"},Yg={class:"flex items-center justify-center p-4 border-b border-interface-stroke"},Ia=1,Pa=100,Fo=1,Jg=q({__name:"TabGlobalSettings",setup(e){const{t:o}=ue(),t=ne(),s=vt(),r=E(!1),n=y({get:a(()=>t.get("Comfy.Canvas.SelectionToolbox"),"get"),set:a(k=>t.set("Comfy.Canvas.SelectionToolbox",k),"set")}),l=y({get:a(()=>t.get("Comfy.VueNodes.Enabled"),"get"),set:a(k=>t.set("Comfy.VueNodes.Enabled",k),"set")}),i=y({get:a(()=>t.get("Comfy.SnapToGrid.GridSize"),"get"),set:a(k=>t.set("Comfy.SnapToGrid.GridSize",k),"set")}),d=y({get:a(()=>t.get("pysssss.SnapToGrid"),"get"),set:a(k=>t.set("pysssss.SnapToGrid",k),"set")}),f=y({get:a(()=>t.get("Comfy.Graph.LinkMarkers"),"get"),set:a(k=>t.set("Comfy.Graph.LinkMarkers",k),"set")}),m=y(()=>[{value:Ft.None,label:o("g.none")},{value:Ft.Circle,label:o("shape.circle")},{value:Ft.Arrow,label:o("shape.arrow")}]);let v=ge.SPLINE_LINK;const h=y({get:a(()=>t.get("Comfy.LinkRenderMode")!==ge.HIDDEN_LINK,"get"),set:a(k=>{let w=t.get("Comfy.LinkRenderMode");w!==ge.HIDDEN_LINK&&(v=w);const C=k?v:ge.HIDDEN_LINK;t.set("Comfy.LinkRenderMode",C)},"set")});function g(k){k?.length&&(i.value=k[0])}a(g,"updateGridSpacingFromSlider");function b(k){if(typeof k!="number")return;const w=Math.min(Pa,Math.max(Ia,k));i.value=Math.round(w/Fo)*Fo}a(b,"updateGridSpacingFromInput");function S(){s.showSettingsDialog()}return a(S,"openFullSettings"),(k,w)=>(p(),x("div",jg,[L(no,{class:"border-b border-interface-stroke"},{label:M(()=>[Ie(R(u(o)("rightSidePanel.globalSettings.nodes")),1)]),default:M(()=>[c("div",qg,[L(eo,{modelValue:r.value,"onUpdate:modelValue":w[0]||(w[0]=C=>r.value=C),label:u(o)("rightSidePanel.globalSettings.showAdvanced"),tooltip:u(o)("rightSidePanel.globalSettings.showAdvancedTooltip")},null,8,["modelValue","label","tooltip"]),L(eo,{modelValue:n.value,"onUpdate:modelValue":w[1]||(w[1]=C=>n.value=C),label:u(o)("rightSidePanel.globalSettings.showToolbox")},null,8,["modelValue","label"]),L(eo,{modelValue:l.value,"onUpdate:modelValue":w[2]||(w[2]=C=>l.value=C),label:u(o)("rightSidePanel.globalSettings.nodes2")},null,8,["modelValue","label"])])]),_:1}),L(no,{class:"border-b border-interface-stroke"},{label:M(()=>[Ie(R(u(o)("rightSidePanel.globalSettings.canvas")),1)]),default:M(()=>[c("div",Kg,[L(Lo,{label:u(o)("rightSidePanel.globalSettings.gridSpacing")},{default:M(()=>[c("div",{class:Q(u(ae)(u(ia),"flex items-center gap-2 pl-3 pr-2"))},[L(Fu,{"model-value":[i.value],class:"flex-grow text-xs",min:Ia,max:Pa,step:Fo,"onUpdate:modelValue":g},null,8,["model-value"]),L(u(Ds),{"model-value":i.value,class:"w-16",size:"small","pt:pc-input-text:root":"min-w-[4ch] bg-transparent border-none text-center truncate",min:Ia,max:Pa,step:Fo,"allow-empty":!1,"onUpdate:modelValue":b},null,8,["model-value"])],2)]),_:1},8,["label"]),L(eo,{modelValue:d.value,"onUpdate:modelValue":w[3]||(w[3]=C=>d.value=C),label:u(o)("rightSidePanel.globalSettings.snapNodesToGrid")},null,8,["modelValue","label"])])]),_:1}),L(no,{class:"border-b border-interface-stroke"},{label:M(()=>[Ie(R(u(o)("rightSidePanel.globalSettings.connectionLinks")),1)]),default:M(()=>[c("div",Qg,[L(Lo,{label:u(o)("rightSidePanel.globalSettings.linkShape")},{default:M(()=>[L(u(al),{modelValue:f.value,"onUpdate:modelValue":w[4]||(w[4]=C=>f.value=C),options:m.value,"aria-label":u(o)("rightSidePanel.globalSettings.linkShape"),class:Q(u(ae)(u(ia),"w-full text-xs")),size:"small",pt:{option:"text-xs",dropdown:"w-8",label:u(ae)("truncate min-w-[4ch]",k.$slots.default&&"mr-5"),overlay:"w-fit min-w-full"},"data-capture-wheel":"true","option-label":"label","option-value":"value"},null,8,["modelValue","options","aria-label","class","pt"])]),_:1},8,["label"]),L(eo,{modelValue:h.value,"onUpdate:modelValue":w[5]||(w[5]=C=>h.value=C),label:u(o)("rightSidePanel.globalSettings.showConnectedLinks")},null,8,["modelValue","label"])])]),_:1}),c("div",Yg,[L(X,{variant:"muted-textonly",size:"sm",class:"gap-2 text-sm",onClick:S},{default:M(()=>[Ie(R(u(o)("rightSidePanel.globalSettings.viewAllSettings"))+" ",1),w[6]||(w[6]=c("i",{class:"icon-[lucide--settings] size-4"},null,-1))]),_:1})])]))}}),Xg=Jg,Zg={class:"bg-secondary-background border-none rounded-lg p-1 grid grid-cols-5 gap-1 justify-items-center"},eh=["onClick"],th=["data-testid"],oh=q({__name:"SetNodeColor",props:{nodes:{}},emits:["changed"],setup(e,{emit:o}){const t=o,{t:s}=ue(),r=St(),n=Object.entries(Ke.node_colors);function l(v){return{dark:Gt(v,{lightness:.3}),light:Gt(v,{lightness:.4}),ringDark:Gt(v,{lightness:.5}),ringLight:Gt(v,{lightness:.1})}}a(l,"getColorValue");const i={name:"noColor",localizedName:a(()=>s("color.noColor"),"localizedName"),value:l(ge.NODE_DEFAULT_BGCOLOR)},d=[i,...n.map(([v,h])=>({name:v,localizedName:a(()=>s(`color.${v}`),"localizedName"),value:l(h.bgcolor)}))],f=y(()=>r.completedActivePalette.light_theme),m=y({get(){if(e.nodes.length===0)return null;const v=e.nodes.map(g=>g.getColorOption());let h=v[0];return v.every(g=>g===h)||(h=!1),h===!1?null:h==null||!h.bgcolor&&!h.color?i.name:n.find(([g,b])=>b.bgcolor===h.bgcolor&&b.color===h.color)?.[0]??null},set(v){if(v===null)return;const h=v===i.name?null:Ke.node_colors[v];for(const g of e.nodes)g.setColorOption(h);t("changed")}});return(v,h)=>{const g=Pe("tooltip");return p(),O(Lo,{label:u(s)("rightSidePanel.color")},{default:M(()=>[c("div",Zg,[(p(),x(Z,null,ye(d,b=>c("button",{key:b.name,class:Q(u(ae)("size-8 rounded-lg bg-transparent border-0 outline-0 ring-0 text-left flex justify-center items-center cursor-pointer",b.name===m.value?"bg-interface-menu-component-surface-selected":"hover:bg-interface-menu-component-surface-selected")),onClick:a(S=>m.value=b.name,"onClick")},[ce(c("div",{class:Q(u(ae)("size-4 rounded-full ring-2 ring-gray-500/10")),style:be({backgroundColor:f.value?b.value.light:b.value.dark,"--tw-ring-color":b.name===m.value?f.value?b.value.ringLight:b.value.ringDark:void 0}),"data-testid":b.name},null,14,th),[[g,b.localizedName(),void 0,{top:!0}]])],10,eh)),64))])]),_:1},8,["label"])}}}),ah=oh,nh=["disabled","onClick"],sh=q({__name:"FormSelectButton",props:{modelValue:{},options:{},optionLabel:{default:"label"},optionValue:{default:"value"},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:o}){const t=e,s=o,r=a((d,f)=>typeof d!="object"?d:d[t.optionValue]??d.value??d.name??d.label??f,"getOptionValue"),n=a(d=>typeof d=="object"&&d!==null?d[t.optionLabel]??d.label??d.name??d.value??String(d):String(d),"getOptionLabel"),l=a(d=>{const f=r(t.options[d],d);return String(f)===String(t.modelValue??"")},"isSelected"),i=a(d=>{t.disabled||s("update:modelValue",r(t.options[d],d))},"handleSelect");return(d,f)=>(p(),x("div",{class:Q(u(ae)(u(ia),"p-1 inline-flex justify-center items-center gap-1"))},[(p(!0),x(Z,null,ye(d.options,(m,v)=>(p(),x("button",{key:r(m,v),class:Q(u(ae)("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":l(v)&&!d.disabled,"hover:bg-interface-menu-component-surface-selected/50":!l(v)&&!d.disabled,"opacity-50 cursor-not-allowed":d.disabled,"cursor-pointer":!d.disabled},l(v)&&!d.disabled?"text-text-primary":"text-text-secondary")),disabled:d.disabled,onClick:a(h=>i(v),"onClick")},R(n(m)),11,nh))),128))],2))}}),rh=sh,lh=q({__name:"SetNodeState",props:{nodes:{}},emits:["changed"],setup(e,{emit:o}){const t=o,{t:s}=ue(),r=y({get(){let n=null;return e.nodes.length===0?null:(e.nodes.length>1?(n=e.nodes[0].mode,e.nodes.every(l=>l.mode===n)||(n=null)):n=e.nodes[0].mode,n)},set(n){e.nodes.forEach(l=>{l.mode=n}),t("changed")}});return(n,l)=>(p(),O(Lo,{label:u(s)("rightSidePanel.nodeState")},{default:M(()=>[L(rh,{modelValue:r.value,"onUpdate:modelValue":l[0]||(l[0]=i=>r.value=i),class:"w-full",options:[{label:u(s)("rightSidePanel.normal"),value:u(We).ALWAYS},{label:u(s)("rightSidePanel.bypass"),value:u(We).BYPASS},{label:u(s)("rightSidePanel.mute"),value:u(We).NEVER}]},null,8,["modelValue","options"])]),_:1},8,["label"]))}}),ih=lh,uh=q({__name:"SetPinned",props:{nodes:{}},emits:["changed"],setup(e,{emit:o}){const t=o,{t:s}=ue(),r=y({get(){return e.nodes.some(n=>n.pinned)},set(n){e.nodes.forEach(l=>l.pin(n)),t("changed")}});return(n,l)=>(p(),O(eo,{modelValue:r.value,"onUpdate:modelValue":l[0]||(l[0]=i=>r.value=i),label:u(s)("rightSidePanel.pinned")},null,8,["modelValue","label"]))}}),dh=uh,ch={class:"space-y-4 text-sm text-muted-foreground"},ph=q({__name:"NodeSettings",props:{nodes:{}},setup(e){const o=e,t=Je([]);we(()=>{o.nodes?t.value=o.nodes:t.value=[]});const s=fe();function r(l){return!l.some(i=>mo(i))}a(r,"isNodes");function n(){t.value=t.value.slice(),s.canvas?.setDirty(!0,!0)}return a(n,"handleChanged"),(l,i)=>(p(),x("div",ch,[r(t.value)?(p(),O(ih,{key:0,nodes:t.value,onChanged:n},null,8,["nodes"])):A("",!0),L(ah,{nodes:t.value,onChanged:n},null,8,["nodes"]),L(dh,{nodes:t.value,onChanged:n},null,8,["nodes"])]))}}),$a=ph,fh={key:0,class:"p-4"},vh={key:1,class:"border-t border-interface-stroke"},mh=q({__name:"TabSettings",props:{nodes:{}},setup(e){const o=e,t=y(()=>o.nodes.filter(i=>Mt(i))),s=y(()=>o.nodes.filter(i=>mo(i))),r=y(()=>s.value.length>0),n=y(()=>t.value.length>0),l=y(()=>n.value&&!r.value);return(i,d)=>l.value?(p(),x("div",fh,[L($a,{nodes:t.value},null,8,["nodes"])])):(p(),x("div",vh,[n.value?(p(),O(no,{key:0,class:"border-b border-interface-stroke",label:i.$t("rightSidePanel.nodes")},{default:M(()=>[L($a,{nodes:t.value,class:"p-4"},null,8,["nodes"])]),_:1},8,["label"])):A("",!0),r.value?(p(),O(no,{key:1,class:"border-b border-interface-stroke",label:i.$t("rightSidePanel.groups")},{default:M(()=>[L($a,{nodes:s.value,class:"p-4"},null,8,["nodes"])]),_:1},8,["label"])):A("",!0)]))}}),gh=mh,hh={class:"pointer-events-none flex-1"},yh={class:"text-xs text-text-secondary line-clamp-1"},bh={class:"text-sm line-clamp-1 leading-8"},wh={key:0,class:"size-4 pointer-events-none icon-[lucide--grip-vertical]"},_h=q({__name:"SubgraphNodeWidget",props:{nodeTitle:{},widgetName:{},isDraggable:{type:Boolean},isPhysical:{type:Boolean},class:{type:[Array,Object,String,Number,null,Boolean]}},emits:["toggleVisibility"],setup(e){const o=e;function t(){return o.isPhysical?"icon-[lucide--link]":o.isDraggable?"icon-[lucide--eye]":"icon-[lucide--eye-off]"}return a(t,"getIcon"),(s,r)=>(p(),x("div",{class:Q(u(ae)("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))},[c("div",hh,[c("div",yh,R(s.nodeTitle),1),c("div",bh,R(s.widgetName),1)]),L(X,{variant:"muted-textonly",size:"sm",disabled:s.isPhysical,onClick:r[0]||(r[0]=ke(n=>s.$emit("toggleVisibility"),["stop"]))},{default:M(()=>[c("i",{class:Q(t())},null,2)]),_:1},8,["disabled"]),s.isDraggable?(p(),x("div",wh)):A("",!0)],2))}}),fs=_h,kh={key:0,class:"subgraph-edit-section flex h-full flex-col"},Ch={class:"px-4 pb-4 pt-1 flex gap-2 border-b border-interface-stroke"},Sh={class:"flex-1"},xh={key:0,class:"text-sm text-muted-foreground px-4 py-10 text-center"},Th={key:1,class:"flex flex-col border-b border-interface-stroke"},Nh={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl min-h-12 px-4"},Ih={class:"text-sm font-semibold uppercase line-clamp-1"},Ph={key:2,class:"flex flex-col border-b border-interface-stroke"},$h={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl min-h-12 px-4"},Mh={class:"text-sm font-semibold uppercase line-clamp-1"},Dh={class:"pb-2 px-2 space-y-0.5 mt-0.5"},Lh={key:3,class:"flex justify-center border-b border-interface-stroke py-4"},Ah=q({__name:"SubgraphEditor",setup(e){const o=fe(),{searchQuery:t}=ze(ut()),s=E(void 0),r=E(),n=va((_,N)=>({get(){_();const $=l.value;return $?ra($.properties.proxyWidgets):[]},set($){N();const V=l.value;if($){if(!V){console.error("Attempted to toggle widgets with no node selected");return}V.properties.proxyWidgets=$}}})),l=y(()=>{const _=o.selectedItems[0];if(_ instanceof Oo)return _}),i=y({get(){if(!l.value)return[];const _=l.value;function N([$,V]){if($==="-1"){const U=_.widgets.find(j=>j.name===V);return U?[[{id:-1,title:"(Linked)",type:""},U]]:[]}const B=_.subgraph._nodes_by_id[$];if(!B?.widgets)return[];const D=B.widgets.find(U=>U.name===V);return D?[[B,D]]:[]}return a(N,"mapWidgets"),n.value.flatMap(N)},set(_){if(!l.value){console.error("Attempted to toggle widgets with no node selected");return}n.value=_.map(_a)}}),d=y(()=>{const _=l.value;if(!_)return[];const{updatePreviews:N}=Ro(),$=_.subgraph.nodes;for(const V of $)V.updateComputedDisabled(),N(V);return $.flatMap(b).filter(([V,B])=>!B.computedDisabled)}),f=y(()=>{if(!l.value)return[];const _=n.value;return d.value.filter(N=>!_.some(Oi(N)))}),m=y(()=>{const _=t.value.toLowerCase();return _?f.value.filter(([N,$])=>N.title.toLowerCase().includes(_)||$.name.toLowerCase().includes(_)):f.value}),v=y(()=>l.value?m.value.filter(Mu):[]),h=y(()=>{const _=t.value.toLowerCase();return _?i.value.filter(([N,$])=>N.title.toLowerCase().includes(_)||$.name.toLowerCase().includes(_)):i.value});function g(_){return`${_[0].id}: ${_[1].name}`}a(g,"toKey");function b(_){return _.widgets?_.widgets.map(N=>[_,N]):[]}a(b,"nodeWidgets");function S([_,N]){const $=l.value;if(!$)return[];qa(_,N,[$]),Ha(n)}a(S,"demote");function k([_,N]){const $=l.value;if(!$)return[];ar(_,N,[$]),Ha(n)}a(k,"promote");function w(){if(!l.value)return;const _=n.value,N=m.value.map(_a);_.push(...N),n.value=_}a(w,"showAll");function C(){l.value&&(n.value=n.value.filter(_=>!h.value.some(au(_))||_[0]==="-1"))}a(C,"hideAll");function T(){if(!l.value)return;const _=n.value,N=v.value.map(_a);_.push(...N),n.value=_}a(T,"showRecommended");function I(){s.value?.dispose(),!(t.value||!r.value?.children?.length)&&(s.value=new mn(r.value,".draggable-item"),s.value.applyNewItemsOrder=function(){const _=[];let N=-1;this.getAllItems().forEach((D,U)=>{if(D===this.draggableItem){N=U;return}if(!this.isItemToggled(D)){_[U]=D;return}const j=this.isItemAbove(D)?U+1:U-1;_[j]=D});for(let D=0;D<this.getAllItems().length;D++)typeof _[D]>"u"&&(_[D]=this.draggableItem);const $=_.indexOf(this.draggableItem),V=i.value,[B]=V.splice(N,1);V.splice($,0,B),i.value=V})}return a(I,"setDraggableState"),ie(h,()=>{I()}),Re(()=>{I(),l.value&&su(l.value)}),rt(()=>{s.value?.dispose()}),(_,N)=>l.value?(p(),x("div",kh,[c("div",Ch,[L(zo,{modelValue:u(t),"onUpdate:modelValue":N[0]||(N[0]=$=>qe(t)?t.value=$:null)},null,8,["modelValue"])]),c("div",Sh,[u(t)&&h.value.length===0&&m.value.length===0?(p(),x("div",xh,R(_.$t("rightSidePanel.noneSearchDesc")),1)):A("",!0),h.value.length?(p(),x("div",Th,[c("div",Nh,[c("div",Ih,R(_.$t("subgraphStore.shown")),1),c("a",{class:"cursor-pointer text-right text-xs font-normal text-text-secondary hover:text-azure-600 whitespace-nowrap",onClick:ke(C,["stop"])},R(_.$t("subgraphStore.hideAll")),1)]),c("div",{ref_key:"draggableItems",ref:r,class:"pb-2 px-2 space-y-0.5 mt-0.5"},[(p(!0),x(Z,null,ye(h.value,([$,V])=>(p(),O(fs,{key:g([$,V]),class:"bg-comfy-menu-bg","node-title":$.title,"widget-name":V.name,"is-shown":!0,"is-draggable":!u(t),"is-physical":$.id===-1,onToggleVisibility:a(B=>S([$,V]),"onToggleVisibility")},null,8,["node-title","widget-name","is-draggable","is-physical","onToggleVisibility"]))),128))],512)])):A("",!0),m.value.length?(p(),x("div",Ph,[c("div",$h,[c("div",Mh,R(_.$t("subgraphStore.hidden")),1),c("a",{class:"cursor-pointer text-right text-xs font-normal text-text-secondary hover:text-azure-600 whitespace-nowrap",onClick:ke(w,["stop"])},R(_.$t("subgraphStore.showAll")),1)]),c("div",Dh,[(p(!0),x(Z,null,ye(m.value,([$,V])=>(p(),O(fs,{key:g([$,V]),class:"bg-comfy-menu-bg","node-title":$.title,"widget-name":V.name,onToggleVisibility:a(B=>k([$,V]),"onToggleVisibility")},null,8,["node-title","widget-name","onToggleVisibility"]))),128))])])):A("",!0),v.value.length?(p(),x("div",Lh,[L(X,{size:"sm",class:"rounded border-none px-3 py-0.5",onClick:ke(T,["stop"])},{default:M(()=>[Ie(R(_.$t("subgraphStore.showRecommended")),1)]),_:1})])):A("",!0)])])):A("",!0)}}),Eh=Ah,Vh={"data-testid":"properties-panel",class:"flex size-full flex-col bg-comfy-menu-bg"},Oh={class:"pt-1"},Rh={class:"flex items-center justify-between pl-4 pr-3"},Wh={class:"my-3.5 text-sm font-semibold line-clamp-2 cursor-default"},Bh={class:"flex gap-2"},zh={class:"px-4 pb-2 pt-1 overflow-x-auto"},Uh={class:"scrollbar-thin flex-1 overflow-y-auto"},Fh=q({__name:"RightSidePanel",setup(e){const o=fe(),t=ut(),s=ne(),{t:r}=ue(),{findParentGroup:n}=Fm(),{selectedItems:l}=ze(o),{activeTab:i,isEditingSubgraph:d}=ze(t),f=y(()=>s.get("Comfy.Sidebar.Location")),m=y(()=>f.value==="right"?"icon-[lucide--panel-left]":"icon-[lucide--panel-right]"),{flattedItems:v,selectedNodes:h,selectedGroups:g,nodeToParentGroup:b}=Km(l),S=y(()=>!(l.value.length===1&&(g.value.length===1||h.value.length===1)));fa(Ir,U=>S.value?b.value.get(U)??n(U):null);const k=y(()=>v.value.length>0),w=y(()=>h.value.length===1&&v.value.length===1?h.value[0]:null),C=y(()=>w.value instanceof Oo);function T(){t.closePanel()}a(T,"closePanel");const I=y(()=>{const U=[];return U.push({label:a(()=>v.value.length>1?r("rightSidePanel.nodes"):r("rightSidePanel.parameters"),"label"),value:"parameters"}),k.value||U.push({label:a(()=>r("rightSidePanel.nodes"),"label"),value:"nodes"}),k.value&&w.value&&!C.value&&U.push({label:a(()=>r("rightSidePanel.info"),"label"),value:"info"}),U.push({label:a(()=>k.value?r("g.settings"):r("rightSidePanel.globalSettings.title"),"label"),value:"settings"}),U});we(()=>{!I.value.some(U=>U.value===i.value)&&!(i.value==="subgraph"&&C.value)&&t.openPanel(I.value[0].value)});function _(){const U=v.value,j=h.value,W=g.value;if(U.length===0)return r("rightSidePanel.workflowOverview");if(l.value.length===1){if(W.length===1)return W[0].title||r("rightSidePanel.fallbackGroupTitle");if(j.length===1)return j[0].title||j[0].type||r("rightSidePanel.fallbackNodeTitle")}return r("rightSidePanel.title",{count:U.length})}a(_,"resolveTitle");const N=E(_());we(()=>N.value=_());const $=E(!1),V=y(()=>l.value.length===1&&(g.value.length===1||h.value.length===1));function B(U){$.value=!1;const j=U.trim();if(!j)return;const W=g.value[0]||h.value[0];W&&j!==W.title&&(W.title=j,N.value=j,o.canvas?.setDirty(!0,!0))}a(B,"handleTitleEdit");function D(){$.value=!1}return a(D,"handleTitleCancel"),(U,j)=>(p(),x("div",Vh,[c("section",Oh,[c("div",Rh,[c("h3",Wh,[V.value?(p(),x(Z,{key:0},[L(hn,{"model-value":N.value,"is-editing":$.value,"input-attrs":{"data-testid":"node-title-input"},class:"cursor-text",onEdit:B,onCancel:D,onClick:j[0]||(j[0]=W=>$.value=!0)},null,8,["model-value","is-editing"]),$.value?A("",!0):(p(),x("i",{key:0,class:"icon-[lucide--pencil] size-4 text-muted-foreground ml-2 content-center relative top-[2px] hover:text-base-foreground cursor-pointer shrink-0",onClick:j[1]||(j[1]=W=>$.value=!0)}))],64)):(p(),x(Z,{key:1},[Ie(R(N.value),1)],64))]),c("div",Bh,[C.value?(p(),O(X,{key:0,variant:"secondary",size:"icon",class:Q(u(ae)(u(d)&&"bg-secondary-background-selected")),onClick:j[2]||(j[2]=W=>u(t).openPanel(u(d)?"parameters":"subgraph"))},{default:M(()=>j[4]||(j[4]=[c("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["class"])):A("",!0),L(X,{variant:"secondary",size:"icon","aria-pressed":u(t).isOpen,"aria-label":u(r)("rightSidePanel.togglePanel"),onClick:T},{default:M(()=>[c("i",{class:Q(u(ae)(m.value,"size-4"))},null,2)]),_:1},8,["aria-pressed","aria-label"])])]),c("nav",zh,[L(Li,{"model-value":u(i),"onUpdate:modelValue":j[3]||(j[3]=W=>{u(t).openPanel(W)})},{default:M(()=>[(p(!0),x(Z,null,ye(I.value,W=>(p(),O(Ui,{key:W.value,class:"text-sm py-1 px-2 font-inter transition-all active:scale-95",value:W.value},{default:M(()=>[Ie(R(W.label()),1)]),_:2},1032,["value"]))),128))]),_:1},8,["model-value"])])]),c("div",Uh,[k.value?C.value&&u(d)?(p(),O(Eh,{key:1,node:w.value},null,8,["node"])):(p(),x(Z,{key:2},[u(i)==="parameters"&&C.value?(p(),O(Fg,{key:0,node:w.value},null,8,["node"])):u(i)==="parameters"?(p(),O(Wg,{key:1,nodes:u(h),"must-show-node-title":u(g).length>0},null,8,["nodes","must-show-node-title"])):u(i)==="info"?(p(),O(jm,{key:2,nodes:u(h)},null,8,["nodes"])):u(i)==="settings"?(p(),O(gh,{key:3,nodes:u(v)},null,8,["nodes"])):A("",!0)],64)):(p(),x(Z,{key:0},[u(i)==="parameters"?(p(),O(Mg,{key:0})):u(i)==="nodes"?(p(),O(Eg,{key:1})):u(i)==="settings"?(p(),O(Xg,{key:2})):A("",!0)],64))])]))}}),Gh=Fh;const Pn=uo("searchBox",()=>{const e=ne(),{x:o,y:t}=il(),s=y(()=>e.get("Comfy.NodeSearchBoxImpl")==="default"),r=Je(null);function n(d){r.value=d}a(n,"setPopoverRef");const l=E(!1);function i(){if(s.value){l.value=!l.value;return}r.value&&r.value.showSearchBox(new MouseEvent("click",{clientX:o.value,clientY:t.value,layerY:t.value}))}return a(i,"toggleVisible"),{newSearchBoxEnabled:s,setPopoverRef:n,toggleVisible:i,visible:l}});var Hh={class:"option-container flex w-full cursor-pointer items-center justify-between overflow-hidden px-2 py-0"},jh={class:"option-display-name flex flex-col font-semibold"},qh={key:0},Kh=["innerHTML"],Qh=["innerHTML"],Yh={key:0,class:"option-category truncate text-sm font-light text-muted"},Jh={class:"option-badges"},Xh=q({__name:"NodeSearchItem",props:{nodeDef:{},currentQuery:{}},setup(e){const o=ne(),t=y(()=>o.get("Comfy.NodeSearchBoxImpl.ShowCategory")),s=y(()=>o.get("Comfy.NodeSearchBoxImpl.ShowIdName")),r=y(()=>o.get("Comfy.NodeSearchBoxImpl.ShowNodeFrequency")),n=_n(),l=y(()=>n.getNodeFrequency(f.nodeDef)),i=Si(),d=y(()=>i.isBookmarked(f.nodeDef)),f=e;return(m,v)=>(p(),x("div",Hh,[c("div",jh,[c("div",null,[d.value?(p(),x("span",qh,v[0]||(v[0]=[c("i",{class:"pi pi-bookmark-fill mr-1 text-sm"},null,-1)]))):A("",!0),c("span",{innerHTML:u(Qn)(m.nodeDef.display_name,m.currentQuery)},null,8,Kh),v[1]||(v[1]=c("span",null," ",-1)),s.value?(p(),O(u(to),{key:1,severity:"secondary"},{default:M(()=>[c("span",{innerHTML:u(Qn)(m.nodeDef.name,m.currentQuery)},null,8,Qh)]),_:1})):A("",!0)]),t.value?(p(),x("div",Yh,R(m.nodeDef.category.replaceAll("/"," > ")),1)):A("",!0)]),c("div",Jh,[m.nodeDef.experimental?(p(),O(u(to),{key:0,value:m.$t("g.experimental"),severity:"primary"},null,8,["value"])):A("",!0),m.nodeDef.deprecated?(p(),O(u(to),{key:1,value:m.$t("g.deprecated"),severity:"danger"},null,8,["value"])):A("",!0),r.value&&l.value>0?(p(),O(u(to),{key:2,value:u(gi)(l.value,{roundToInt:!0}),severity:"secondary"},null,8,["value"])):A("",!0),m.nodeDef.nodeSource.type!==u(Zl).Unknown?(p(),O(u(ol),{key:3,class:"text-sm font-light"},{default:M(()=>[Ie(R(m.nodeDef.nodeSource.displayText),1)]),_:1})):A("",!0)])]))}}),Zh=Be(Xh,[["__scopeId","data-v-acda36a0"]]),ey={class:"comfy-vue-node-search-container flex w-full min-w-96 items-center justify-center"},ty={class:"_dialog-body"},oy=q({__name:"NodeSearchBox",props:{filters:{},searchLimit:{default:64}},emits:["addFilter","removeFilter","addNode"],setup(e,{emit:o}){const t=ne(),{t:s}=ue(),r=Le(),n=y(()=>t.get("Comfy.NodeSearchBoxImpl.NodePreview")),l=E(),i=E(!1),d=`comfy-vue-node-search-box-input-${Math.random()}`,f=E([]),m=E(null),v=E(""),h=y(()=>e.filters.length===0?s("g.searchNodes")+"...":""),g=Ct(),b=_n(),S=ca(V=>{V.trim()&&r?.trackNodeSearch({query:V})},500),k=a(V=>{const B=V===""&&e.filters.length===0;v.value=V,f.value=B?b.topNodeDefs:[...g.nodeSearchService.searchNode(V,e.filters,{limit:e.searchLimit})],S(V)},"search"),w=o,C=a(V=>{r?.trackNodeSearchResultSelected({node_type:V.name,last_query:v.value}),w("addNode",V)},"onAddNode");let T=null;const I=a(async()=>{T??=document.getElementById(d),T&&(T.blur(),await Ue(()=>T?.focus()))},"reFocusInput");Re(()=>{T??=document.getElementById(d),T&&T.focus(),l.value.hide=()=>k(""),k(""),l.value.show()});const _=a(V=>{i.value=!1,w("addFilter",V)},"onAddFilter"),N=a(async(V,B)=>{V.stopPropagation(),V.preventDefault(),w("removeFilter",B),await I()},"onRemoveFilter"),$=a(V=>{if(V===-1){m.value=null;return}m.value=f.value[V]},"setHoverSuggestion");return(V,B)=>(p(),x("div",ey,[n.value&&m.value?(p(),x("div",{key:0,class:"comfy-vue-node-preview-container absolute top-[50px] left-[-375px] z-50 cursor-pointer",onMousedown:B[0]||(B[0]=ke(D=>C(m.value),["stop"]))},[(p(),O(Ii,{key:m.value?.name||"","node-def":m.value},null,8,["node-def"]))],32)):A("",!0),L(X,{variant:"secondary","aria-label":V.$t("g.addNodeFilterCondition"),class:"filter-button z-10",onClick:B[1]||(B[1]=D=>i.value=!0)},{default:M(()=>B[6]||(B[6]=[c("i",{class:"pi pi-filter"},null,-1)])),_:1},8,["aria-label"]),L(u(Ls),{visible:i.value,"onUpdate:visible":B[2]||(B[2]=D=>i.value=D),class:"min-w-96","dismissable-mask":"",modal:"",onHide:I},{header:M(()=>[c("h3",null,R(V.$t("g.addNodeFilterCondition")),1)]),default:M(()=>[c("div",ty,[L(Yi,{onAddFilter:_})])]),_:1},8,["visible"]),L(Wu,{ref_key:"autoCompletePlus",ref:l,"model-value":V.filters,class:"comfy-vue-node-search-box z-10 grow","scroll-height":"40vh",placeholder:h.value,"input-id":d,"append-to":"self",suggestions:f.value,delay:100,loading:!u(b).isLoaded,"complete-on-focus":"","auto-option-focus":"","force-selection":"",multiple:"","option-label":"display_name",onComplete:B[3]||(B[3]=D=>k(D.query)),onOptionSelect:B[4]||(B[4]=D=>C(D.value)),onFocusedOptionChanged:B[5]||(B[5]=D=>$(D))},{option:M(({option:D})=>[L(Zh,{"node-def":D,"current-query":v.value},null,8,["node-def","current-query"])]),chip:M(({value:D})=>[D.filterDef&&D.value?(p(),O(iu,{key:`${D.filterDef.id}-${D.value}`,text:D.value,badge:D.filterDef.invokeSequence.toUpperCase(),"badge-class":D.filterDef.invokeSequence+"-badge",onRemove:a(U=>N(U,D),"onRemove")},null,8,["text","badge","badge-class","onRemove"])):A("",!0)]),_:1},8,["model-value","placeholder","suggestions","loading"])]))}}),ay=oy,ny=q({__name:"NodeSearchBoxPopover",setup(e,{expose:o}){let t=null,s=null,r=!1;const n=ne(),l=Pn(),i=Ro(),{visible:d,newSearchBoxEnabled:f}=ze(l),m=E(!0);function v(){return t?[t.canvasX,t.canvasY]:i.getCanvasCenter()}a(v,"getNewNodeLocation");const h=E([]);function g(G){h.value.push(G)}a(g,"addFilter");function b(G){h.value=h.value.filter(z=>sa(z)!==sa(G))}a(b,"removeFilter");function S(){h.value=[]}a(S,"clearFilters");function k(){d.value=!1}a(k,"closeDialog");const w=fe();function C(G){const z=i.addNodeOnGraph(G,{pos:v()});r&&t?w.getCanvas().linkConnector.connectToNode(z,t):t||console.warn("The trigger event was undefined when addNode was called."),r=!1,Ve().activeWorkflow?.changeTracker?.checkState(),window.requestAnimationFrame(k)}a(C,"addNode");function T(G){f.value?G?.pointerType==="touch"?setTimeout(()=>{N(G)},128):N(G):w.getCanvas().showSearchBox(G)}a(T,"showSearchBox");function I(){return w.getCanvas().linkConnector.renderLinks.at(0)}a(I,"getFirstLink");const _=Ct();function N(G){const z=I();z&&g({filterDef:z.toType==="input"?_.nodeSearchService.inputTypeFilter:_.nodeSearchService.outputTypeFilter,value:z.fromSlot.type?.toString()??""}),d.value=!0,t=G,m.value=!1,setTimeout(()=>{m.value=!0},300)}a(N,"showNewSearchBox");function $(G){const z=I();if(!z)return;const{node:K,fromSlot:H,toType:J}=z,te={e:G,allow_searchbox:!0,showSearchBox:a(()=>{Te(),T(G)},"showSearchBox")},he=z.fromReroute?.id,$e=J==="input"?{nodeFrom:K,slotFrom:H,afterRerouteId:he}:{nodeTo:K,slotTo:H,afterRerouteId:he},se=w.getCanvas(),Se=se.showConnectionMenu({...$e,...te});if(!Se){console.warn("No menu was returned from showConnectionMenu");return}t=G,s=new AbortController;const{signal:ve}=s,xe={once:!0,signal:ve};Oe(se.canvas,"connect-new-default-node",He=>{if(!(He instanceof CustomEvent))throw new Error("Invalid event");const je=He.detail?.node;if(!(je instanceof _t))throw new Error("Invalid node");r=!1,He.preventDefault(),se.linkConnector.connectToNode(je,G)},xe);const Te=Oe(Se.controller.signal,"abort",F,xe)}a($,"showContextMenu"),we(()=>{const{canvas:G}=w;G&&(ge.release_link_on_empty_shows_menu=!1,G.allow_searchbox=!1,Oe(G.linkConnector.events,"dropped-on-canvas",W))});function V(G){if(G.detail.subType==="empty-double-click")T(G.detail.originalEvent);else if(G.detail.subType==="group-double-click"){const z=G.detail.group,[K,H]=z.pos;G.detail.originalEvent.canvasY-H>z.titleHeight&&T(G.detail.originalEvent)}}a(V,"canvasEventHandler");const B=y(()=>n.get("Comfy.LinkRelease.Action")),D=y(()=>n.get("Comfy.LinkRelease.ActionShift"));function U(G){return G.preventDefault()}a(U,"preventDefault");function j(G){G.preventDefault();const z=w.getCanvas();z.linkConnector.state.snapLinksPos=[G.detail.canvasX,G.detail.canvasY],Oe(z.linkConnector.events,"reset",U,{once:!0})}a(j,"cancelNextReset");function W(G){switch(r=!0,G.detail.shiftKey?D.value:B.value){case It.SEARCH_BOX:j(G),T(G.detail);break;case It.CONTEXT_MENU:j(G),$(G.detail);break;case It.NO_ACTION:default:break}}a(W,"handleDroppedOnCanvas");function F(){s?.abort(),s=null,t=null;const G=w.getCanvas();G.linkConnector.events.removeEventListener("reset",U),r&&G.linkConnector.disconnectLinks(),G.linkConnector.reset(),G.setDirty(!0,!0)}return a(F,"reset"),ie(d,()=>{d.value||F()}),Oe(document,"litegraph:canvas",V),o({showSearchBox:T}),(G,z)=>(p(),x("div",null,[L(u(Ls),{visible:u(d),"onUpdate:visible":z[0]||(z[0]=K=>qe(d)?d.value=K:null),modal:"","dismissable-mask":m.value,pt:{root:{class:"invisible-dialog-root",role:"search"},mask:{class:"node-search-box-dialog-mask"},transition:{enterFromClass:"opacity-0 scale-75",enterActiveClass:"transition-all duration-100 ease-out",leaveActiveClass:"transition-all duration-100 ease-in",leaveToClass:"opacity-0 scale-75"}},onHide:S},{container:M(()=>[L(ay,{filters:h.value,onAddFilter:g,onRemoveFilter:b,onAddNode:C},null,8,["filters"])]),_:1},8,["visible","dismissable-mask"])]))}}),sy=ny;const en=uo("helpCenter",()=>{const e=E(!1),o=E("sidebar");return{isVisible:e,triggerLocation:o,toggle:a((n="sidebar")=>{e.value||(o.value=n),e.value=!e.value},"toggle"),show:a((n="sidebar")=>{o.value=n,e.value=!0},"show"),hide:a(()=>{e.value=!1},"hide")}});function $n(e="sidebar"){const o=ne(),t=Bo(),s=en(),{isVisible:r,triggerLocation:n}=ze(s),{shouldShowRedDot:l}=ze(t),i=nr(),{showNodeConflictDialog:d}=vt(),{shouldShowRedDot:f,markConflictsAsSeen:m}=Cn(),v=y(()=>l.value||f.value),h=y(()=>o.get("Comfy.Sidebar.Location")),g=a(()=>{Le()?.trackUiButtonClicked({button_id:`${e}_help_center_toggled`}),s.toggle(e)},"toggleHelpCenter"),b=a(()=>{s.hide()},"closeHelpCenter"),S=a(async()=>{try{await i.shouldShowConflictModalAfterUpdate()&&k()}catch(w){console.error("[HelpCenter] Error checking conflict modal:",w)}},"handleWhatsNewDismissed"),k=a(()=>{d({showAfterWhatsNew:!0,dialogComponentProps:{onClose:a(()=>{m()},"onClose")}})},"showConflictModal");return Re(async()=>{await t.initialize()}),{isHelpCenterVisible:r,triggerLocation:n,shouldShowRedDot:v,sidebarLocation:h,toggleHelpCenter:g,closeHelpCenter:b,handleWhatsNewDismissed:S}}a($n,"useHelpCenter");var ry={key:0,class:"release-toast-popup"},ly={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"},iy={class:"p-4 flex flex-col gap-4 flex-1 min-h-0"},uy={class:"flex items-center gap-4"},dy={class:"flex flex-col gap-1"},cy={class:"text-sm font-normal text-base-foreground leading-[1.429]"},py={class:"text-sm font-normal text-muted-foreground leading-[1.21]"},fy=["innerHTML"],vy={class:"flex justify-between items-center px-4 pb-4"},my=["href"],gy={class:"flex items-center gap-4"},hy=q({__name:"ReleaseNotificationToast",setup(e,{expose:o}){const{buildDocsUrl:t}=co(),{toastErrorHandler:s}=jt(),r=Bo(),{t:n}=ue(),l=E(!1),i=y(()=>r.recentRelease),d=y(()=>r.shouldShowToast&&!l.value),f=y(()=>{const C=t("/changelog",{includeLocale:!0});return i.value?.version?`${C}#${pn(i.value.version)}`:C}),m=y(()=>{if(!i.value?.content)return $t.sanitize(`<p>${n("releaseToast.description")}</p>`);try{const C=i.value.content.replace(/^# .+$/m,"").replace(/!\[.*?\]\(.*?\)/g,""),T=C.trim();return!T||T.replace(/\s+/g,"")===""?$t.sanitize(`<p>${n("releaseToast.description")}</p>`):mr(C)}catch(C){console.error("Error parsing markdown:",C);const T=i.value.content.replace(/\n/g,"<br>");return T.trim()?$t.sanitize(T):$t.sanitize(`<p>${n("releaseToast.description")}</p>`)}});let v=null;const h=a(()=>{v&&clearTimeout(v),v=setTimeout(()=>{b()},8e3)},"startAutoHide"),g=a(()=>{v&&(clearTimeout(v),v=null)},"clearAutoHide"),b=a(()=>{l.value=!0,g()},"dismissToast"),S=a(()=>{i.value&&r.handleSkipRelease(i.value.version),b()},"handleSkip"),k=a(()=>{i.value&&r.handleShowChangelog(i.value.version),b()},"handleLearnMore"),w=a(async()=>{if(Xe()){try{await Ce().execute("Comfy-Desktop.CheckForUpdates"),b()}catch(C){s(C)}return}window.open(t("/installation/update_comfyui",{includeLocale:!0}),"_blank"),b()},"handleUpdate");return ie(d,C=>{C?h():g()}),Re(async()=>{r.releases.length||await r.fetchReleases()}),o({handleSkip:S,handleLearnMore:k,handleUpdate:w}),(C,T)=>d.value?(p(),x("div",ry,[c("div",ly,[c("div",iy,[c("div",uy,[T[0]||(T[0]=c("div",{class:"p-3 bg-primary-background-hover rounded-lg flex items-center justify-center shrink-0"},[c("i",{class:"icon-[lucide--rocket] w-4 h-4 text-white"})],-1)),c("div",dy,[c("div",cy,R(C.$t("releaseToast.newVersionAvailable")),1),c("div",py,R(i.value?.version),1)])]),c("div",{class:"pl-14 text-sm font-normal text-muted-foreground leading-[1.21] overflow-y-auto flex-1 min-h-0",innerHTML:m.value},null,8,fy)]),c("div",vy,[c("a",{class:"flex items-center gap-2 text-sm font-normal py-1 text-muted-foreground hover:text-base-foreground",href:f.value,target:"_blank",rel:"noopener noreferrer",onClick:k},[T[1]||(T[1]=c("i",{class:"icon-[lucide--external-link] w-4 h-4"},null,-1)),Ie(" "+R(C.$t("releaseToast.whatsNew")),1)],8,my),c("div",gy,[c("button",{class:"h-6 px-0 bg-transparent border-none text-sm font-normal text-muted-foreground hover:text-base-foreground cursor-pointer",onClick:S},R(C.$t("releaseToast.skip")),1),c("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},R(C.$t("releaseToast.update")),1)])])])])):A("",!0)}}),yy=Be(hy,[["__scopeId","data-v-ba02c61a"]]),by={key:0,class:"whats-new-popup-container left-4"},wy={class:"modal-body flex flex-col gap-4 px-0 pt-0 pb-2 flex-1"},_y=["innerHTML"],ky={class:"modal-footer flex justify-between items-center gap-4 px-4 pb-4"},Cy=["href"],Sy={class:"footer-actions flex items-center gap-4"},xy=q({__name:"WhatsNewPopup",emits:["whats-new-dismissed"],setup(e,{expose:o,emit:t}){const{buildDocsUrl:s}=co(),r=Bo(),{t:n}=ue(),l=t,i=E(!1),d=y(()=>r.recentRelease),f=y(()=>r.shouldShowPopup&&!i.value),m=y(()=>{const S=s("/changelog",{includeLocale:!0});return d.value?.version?`${S}#${pn(d.value.version)}`:S}),v=y(()=>{if(!d.value?.content)return $t.sanitize(`<p>${n("whatsNewPopup.noReleaseNotes")}</p>`);try{const S=d.value.content,k=S.trim();if(!k||k.replace(/\s+/g,"")==="")return $t.sanitize(`<p>${n("whatsNewPopup.noReleaseNotes")}</p>`);const w=S.match(/!\[.*?\]\(.*?\)/);return mr([w?w[0]:"",S.replace(/!\[.*?\]\(.*?\)/,"").trim()].filter(Boolean).join(`
3
3
 
4
- `))}catch(S){console.error("Error parsing markdown:",S);const k=d.value.content.replace(/\n/g,"<br>");return k.trim()?$t.sanitize(k):$t.sanitize(`<p>${n("whatsNewPopup.noReleaseNotes")}</p>`)}}),h=a(()=>{i.value=!1},"show"),g=a(()=>{i.value=!0,l("whats-new-dismissed")},"hide"),b=a(async()=>{d.value&&await r.handleWhatsNewSeen(d.value.version),g()},"closePopup");return Re(async()=>{r.releases.length||await r.fetchReleases()}),o({show:h,hide:g,closePopup:b}),(S,k)=>f.value?(p(),x("div",by,[c("div",{class:"whats-new-popup",onClick:k[0]||(k[0]=ke(()=>{},["stop"]))},[L(X,{class:"close-button absolute top-2 right-2 z-10 w-8 h-8 p-2 rounded-lg opacity-50","aria-label":S.$t("g.close"),size:"icon-sm",variant:"muted-textonly",onClick:b},{default:M(()=>k[1]||(k[1]=[c("i",{class:"icon-[lucide--x]"},null,-1)])),_:1},8,["aria-label"]),c("div",wy,[c("div",{class:"content-text max-h-96 overflow-y-auto",innerHTML:v.value},null,8,_y)]),c("div",ky,[c("a",{class:"learn-more-link flex items-center gap-2 text-sm font-normal py-1",href:m.value,target:"_blank",rel:"noopener noreferrer",onClick:b},[k[2]||(k[2]=c("i",{class:"icon-[lucide--external-link]"},null,-1)),Ie(" "+R(S.$t("whatsNewPopup.learnMore")),1)],8,Cy),c("div",Sy,[L(X,{class:"h-8",size:"sm",variant:"muted-textonly",onClick:b},{default:M(()=>[Ie(R(S.$t("whatsNewPopup.later")),1)]),_:1})])])])])):A("",!0)}}),Ty=Be(xy,[["__scopeId","data-v-98a9f324"]]),Ny=["width","height"],Iy={"clip-path":"url(#clip0_1099_16244)"},Py=["stroke"],$y=q({__name:"PuzzleIcon",props:{size:{default:16},color:{default:"currentColor"},class:{}},setup(e){const o=y(()=>e.class||"");return(t,s)=>(p(),x("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)},[c("g",Iy,[c("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,Py)]),s[0]||(s[0]=c("defs",null,[c("clipPath",{id:"clip0_1099_16244"},[c("rect",{width:"16",height:"16",fill:"white"})])],-1))],10,Ny))}}),My=$y,Dy=["aria-label"],Ly={class:"w-full"},Ay={class:"flex w-full flex-col gap-2",role:"menubar"},Ey=["onClick","onMouseenter","onMouseleave"],Vy={class:"help-menu-icon-container"},Oy={class:"help-menu-icon"},Ry={key:0,class:"menu-red-dot"},Wy={class:"menu-label"},By={key:0,class:"icon-[lucide--external-link] text-primary w-4 h-4 ml-auto"},zy={key:1,class:"pi pi-chevron-right ml-auto"},Uy={key:0,class:"submenu-divider"},Fy=["onClick"],Gy={class:"menu-label"},Hy={key:0,class:"w-full","data-testid":"whats-new-section"},jy={class:"section-description flex items-center gap-2.5 self-stretch px-8 pt-2 pb-2"},qy=["aria-label"],Ky=["onClick","onKeydown"],Qy={class:"release-content"},Yy={class:"release-title"},Jy=["datetime"],Xy={class:"normal-state"},Zy={class:"hover-state"},eb={key:1,class:"help-menu-item",role:"status","aria-live":"polite"},tb={key:2,class:"help-menu-item",role:"status"},ob=q({__name:"HelpCenterMenuContent",emits:["close"],setup(e,{emit:o}){const t={MINUTE:6e4,HOUR:36e5,DAY:864e5,WEEK:6048e5,MONTH:2592e6,YEAR:31536e6},s={DELAY_MS:100,OFFSET_PX:8,Z_INDEX:10001},{t:r}=ue(),n=lo(),{staticUrls:l,buildDocsUrl:i}=co(),d=Bo(),f=Ce(),m=ne(),v=Le(),h=E(Date.now()),g=o,b=E(!1),S=E(null),k=E({});let w=null;const C=y(()=>d.releases.length>0),T=y(()=>m.get("Comfy.Notification.ShowVersionUpdates")),{shouldShowRedDot:I}=Cn(),{isNewManagerUI:_}=ht(),N=y(()=>[{key:"desktop-guide",type:"item",label:r("helpCenter.desktopUserGuide"),visible:Xe(),action:a(()=>{D("docs",!0),U(i("/installation/desktop",{includeLocale:!0,platform:!0})),g("close")},"action")},{key:"dev-tools",type:"item",label:r("helpCenter.openDevTools"),visible:Xe(),action:a(()=>{J(),g("close")},"action")},{key:"divider-1",type:"divider",visible:Xe()},{key:"reinstall",type:"item",label:r("helpCenter.reinstall"),visible:Xe(),action:a(()=>{te(),g("close")},"action")}].filter(se=>se.visible!==!1)),$=y(()=>!!N.value.length),V=y(()=>B.value.find(se=>se.key==="more")),B=y(()=>{const se=[{key:"feedback",type:"item",icon:"icon-[lucide--clipboard-pen]",label:r("helpCenter.feedback"),action:a(()=>{D("help_feedback",!1),f.execute("Comfy.ContactSupport"),g("close")},"action")},{key:"help",type:"item",icon:"icon-[lucide--message-circle-question]",label:r("helpCenter.help"),action:a(()=>{D("help_feedback",!1),f.execute("Comfy.ContactSupport"),g("close")},"action")},{key:"docs",type:"item",icon:"icon-[lucide--book-open]",label:r("helpCenter.docs"),showExternalIcon:!0,action:a(()=>{D("docs",!0),U(i(Fe?"/get_started/cloud":"/",{includeLocale:!0})),g("close")},"action")},{key:"discord",type:"item",icon:"pi pi-discord",label:"Discord",showExternalIcon:!0,action:a(()=>{D("discord",!0),U(l.discord),g("close")},"action")},{key:"github",type:"item",icon:"icon-[lucide--github]",label:r("helpCenter.github"),showExternalIcon:!0,action:a(()=>{D("github",!0),U(l.github),g("close")},"action")}];return Fe||se.push({key:"manager",type:"item",icon:My,label:r("helpCenter.managerExtension"),showRedDot:I.value,action:a(async()=>{D("manager",!1),await ht().openManager({initialTab:ao.All,showToastOnLegacyError:!1}),g("close")},"action")}),!Xe()&&!Fe&&_.value&&se.push({key:"update-comfyui",type:"item",icon:"icon-[lucide--download]",label:r("helpCenter.updateComfyUI"),action:a(()=>{he(),g("close")},"action")}),se.push({key:"more",type:"item",icon:"",label:r("helpCenter.more"),visible:$.value,action:a(()=>{},"action"),items:N.value}),se}),D=a((se,Se)=>{v?.trackHelpResourceClicked({resource_type:se,is_external:Se,source:"help_center"})},"trackResourceClick"),U=a(se=>{window.open(se,"_blank","noopener,noreferrer")},"openExternalLink"),j=a(()=>{w&&(clearTimeout(w),w=null)},"clearHoverTimeout"),W=a(se=>{const Se=se.getBoundingClientRect(),ve=210,xe=(V.value?.items?.filter(Rt=>Rt.visible!==!1).length||0)*48+16,Te=S.value?.offsetHeight||xe,He=window.innerWidth,je=window.innerHeight;let Ye=Se.top,ot=Se.right+s.OFFSET_PX;return ot+ve>He&&(ot=Se.left-ve-s.OFFSET_PX),Ye+Te>je&&(Ye=Math.max(s.OFFSET_PX,Se.bottom-Te)),Ye<s.OFFSET_PX&&(Ye=s.OFFSET_PX),Ye-=8,{position:"fixed",top:`${Ye}px`,left:`${ot}px`,zIndex:s.Z_INDEX}},"calculateSubmenuPosition"),F=a(se=>{if(!se)return"date";const Se=new Date(se),xe=Math.abs(new Date().getTime()-Se.getTime()),Te=[{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:He,key:je}of Te){const Ye=Math.floor(xe/He);if(Ye>0)return r(`g.relativeTime.${je}`,{count:Ye})}return r("g.relativeTime.now")},"formatReleaseDate"),G=a(async(se,Se)=>{if(se!=="more"||!V.value?.items||!V.value.items.some(xe=>xe.visible!==!1))return;j();const ve=Se.currentTarget;k.value=W(ve),b.value=!0,await Ue(),S.value&&(k.value=W(ve))},"onMenuItemHover"),z=a(se=>{se==="more"&&(w=window.setTimeout(()=>{b.value=!1},s.DELAY_MS))},"onMenuItemLeave"),K=a(()=>{j()},"onSubmenuHover"),H=a(()=>{b.value=!1},"onSubmenuLeave"),J=a(()=>{Xe()&&ko().openDevTools()},"openDevTools"),te=a(()=>{Xe()&&ko().reinstall()},"onReinstall"),he=a(async()=>{const{updateComfyUI:se,rebootComfyUI:Se,error:ve}=cr();n.add({severity:"info",summary:r("helpCenter.updateComfyUIStarted"),detail:r("helpCenter.updateComfyUIStartedDetail"),life:3e3});try{if(await se({is_stable:!0})===null||ve.value){n.add({severity:"error",summary:r("g.error"),detail:ve.value||r("helpCenter.updateComfyUIFailed"),life:5e3});return}n.add({severity:"success",summary:r("helpCenter.updateComfyUISuccess"),detail:r("helpCenter.updateComfyUISuccessDetail"),life:3e3}),await Se()}catch(xe){n.add({severity:"error",summary:r("g.error"),detail:xe instanceof Error?xe.message:r("g.unknownError"),life:5e3})}},"onUpdateComfyUI"),$e=a(se=>{D("release_notes",!0),d.handleShowChangelog(se.version);const Se=pn(se.version);U(`${i("/changelog",{includeLocale:!0})}#${Se}`),g("close")},"onReleaseClick");return Re(async()=>{v?.trackHelpCenterOpened({source:"sidebar"}),C.value||await d.fetchReleases()}),rt(()=>{const se=Math.round((Date.now()-h.value)/1e3);v?.trackHelpCenterClosed({time_spent_seconds:se})}),(se,Se)=>(p(),x("div",{class:"help-center-menu flex flex-col items-start gap-1",role:"menu","aria-label":se.$t("help.helpCenterMenu")},[c("div",Ly,[c("nav",Ay,[(p(!0),x(Z,null,ye(B.value,ve=>ce((p(),x("button",{key:ve.key,type:"button",class:Q(["help-menu-item",{"more-item":ve.key==="more"}]),role:"menuitem",onClick:ve.action,onMouseenter:a(xe=>G(ve.key,xe),"onMouseenter"),onMouseleave:a(xe=>z(ve.key),"onMouseleave")},[c("div",Vy,[c("div",Oy,[typeof ve.icon=="object"?(p(),O(so(ve.icon),{key:0,size:16})):(p(),x("i",{key:1,class:Q(ve.icon)},null,2))]),ve.showRedDot?(p(),x("div",Ry)):A("",!0)]),c("span",Wy,R(ve.label),1),ve.showExternalIcon?(p(),x("i",By)):A("",!0),ve.key==="more"?(p(),x("i",zy)):A("",!0)],42,Ey)),[[tt,ve.visible!==!1]])),128))]),Se[0]||(Se[0]=c("div",{class:"flex h-4 flex-col items-center justify-between self-stretch p-2"},[c("div",{class:"w-full border-b border-interface-menu-stroke"})],-1))]),(p(),O(yt,{to:"body"},[b.value?(p(),x("div",{key:0,ref_key:"submenuRef",ref:S,class:"more-submenu",style:be(k.value),onMouseenter:K,onMouseleave:H},[(p(!0),x(Z,null,ye(V.value?.items,ve=>(p(),x(Z,{key:ve.key},[ve.type==="divider"?ce((p(),x("div",Uy,null,512)),[[tt,ve.visible!==!1]]):ce((p(),x("button",{key:1,type:"button",class:"help-menu-item submenu-item",role:"menuitem",onClick:ve.action},[c("span",Gy,R(ve.label),1)],8,Fy)),[[tt,ve.visible!==!1]])],64))),128))],36)):A("",!0)])),T.value?(p(),x("section",Hy,[c("h3",jy,R(se.$t("helpCenter.whatsNew")),1),C.value?(p(),x("div",{key:0,role:"group","aria-label":se.$t("help.recentReleases")},[(p(!0),x(Z,null,ye(u(d).recentReleases,ve=>(p(),x("article",{key:ve.id||ve.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:a(xe=>$e(ve),"onClick"),onKeydown:[To(xe=>$e(ve),["enter"]),To(ke(xe=>$e(ve),["prevent"]),["space"])]},[Se[1]||(Se[1]=c("i",{class:"help-menu-icon icon-[lucide--package]","aria-hidden":"true"},null,-1)),c("div",Qy,[c("span",Yy,R(se.$t("g.releaseTitle",{package:"Comfy",version:ve.version})),1),c("time",{class:"release-date",datetime:ve.published_at},[c("span",Xy,R(F(ve.published_at)),1),c("span",Zy,R(se.$t("helpCenter.clickToLearnMore")),1)],8,Jy)])],40,Ky))),128))],8,qy)):u(d).isLoading?(p(),x("div",eb,[Se[2]||(Se[2]=c("i",{class:"pi pi-spin pi-spinner help-menu-icon","aria-hidden":"true"},null,-1)),c("span",null,R(se.$t("helpCenter.loadingReleases")),1)])):(p(),x("div",tb,[Se[3]||(Se[3]=c("i",{class:"pi pi-info-circle help-menu-icon","aria-hidden":"true"},null,-1)),c("span",null,R(se.$t("helpCenter.noRecentReleases")),1)]))])):A("",!0)],8,Dy))}}),ab=Be(ob,[["__scopeId","data-v-8ecd06e2"]]),nb=q({__name:"HelpCenterPopups",props:{isSmall:{type:Boolean,default:!1}},setup(e){const{isHelpCenterVisible:o,triggerLocation:t,sidebarLocation:s,closeHelpCenter:r,handleWhatsNewDismissed:n}=$n();return(l,i)=>(p(),x(Z,null,[(p(),O(yt,{to:"#graph-canvas-container"},[u(o)?(p(),x("div",{key:0,class:Q(["help-center-popup",{"sidebar-left":u(t)==="sidebar"&&u(s)==="left","sidebar-right":u(t)==="sidebar"&&u(s)==="right","topbar-right":u(t)==="topbar","small-sidebar":l.isSmall}])},[L(ab,{onClose:u(r)},null,8,["onClose"])],2)):A("",!0)])),(p(),O(yt,{to:"#graph-canvas-container"},[L(yy,{class:Q({"sidebar-left":u(s)==="left","sidebar-right":u(s)==="right","small-sidebar":l.isSmall})},null,8,["class"])])),(p(),O(yt,{to:"#graph-canvas-container"},[L(Ty,{class:Q({"sidebar-left":u(s)==="left","sidebar-right":u(s)==="right","small-sidebar":l.isSmall}),onWhatsNewDismissed:u(n)},null,8,["class","onWhatsNewDismissed"])])),(p(),O(yt,{to:"body"},[u(o)?(p(),x("div",{key:0,class:"help-center-backdrop",onClick:i[0]||(i[0]=(...d)=>u(r)&&u(r)(...d))})):A("",!0)]))],64))}}),sb=Be(nb,[["__scopeId","data-v-2583d84f"]]),rb=["width","height"],lb=q({__name:"ComfyLogo",props:{size:{default:16},color:{default:"currentColor"},class:{},mode:{default:"outline"}},setup(e){const o=y(()=>e.class||""),t=y(()=>({stroke:e.mode==="outline"?e.color:void 0,strokeWidth:e.mode==="outline"?1:void 0,fill:e.mode==="fill"?e.color:"none"}));return(s,r)=>(p(),x("svg",{class:Q(o.value),width:s.size,height:s.size,viewBox:"0 0 18 18",xmlns:"http://www.w3.org/2000/svg"},[c("path",lt({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,rb))}}),ib=lb,ub=q({__name:"CardBottom",props:{fullHeight:{type:Boolean,default:!0}},setup(e){const o=y(()=>ae("flex-1 w-full",e.fullHeight&&"h-full"));return(t,s)=>(p(),x("div",{class:Q(o.value)},[_e(t.$slots,"default")],2))}}),ta=ub,db="flex flex-col overflow-hidden",cb=q({__name:"CardContainer",props:{size:{default:"regular"},variant:{default:"default"},rounded:{default:"md"},customAspectRatio:{},hasBorder:{type:Boolean,default:!0},hasBackground:{type:Boolean,default:!0},hasShadow:{type:Boolean,default:!0},hasCursor:{type:Boolean,default:!0},class:{default:""}},setup(e){const o={none:"rounded-none",md:"rounded",lg:"rounded-lg",xl:"rounded-xl"},t=y(()=>{const s={default:ae(e.hasBackground&&"bg-modal-card-background",e.hasBorder&&"border border-border-default",e.hasShadow&&"shadow-sm",e.hasCursor&&"cursor-pointer"),ghost:ae(e.hasCursor&&"cursor-pointer","p-2 transition-colors duration-200"),outline:ae(e.hasBorder&&"border-2 border-border-subtle",e.hasCursor&&"cursor-pointer","hover:border-border-subtle/50 transition-colors")},r=e.customAspectRatio?`aspect-[${e.customAspectRatio}]`:{mini:"aspect-100/120",compact:"aspect-240/311",regular:"aspect-256/308",portrait:"aspect-256/325",tall:"aspect-256/353"}[e.size];return ae(db,o[e.rounded],s[e.variant],r,e.class)});return(s,r)=>(p(),x("div",{class:Q(t.value)},[_e(s.$slots,"top"),_e(s.$slots,"bottom")],2))}}),oa=cb,pb=q({__name:"CardTop",props:{ratio:{default:"square"},topLeftClass:{},topRightClass:{},centerLeftClass:{},centerRightClass:{},bottomLeftClass:{},bottomRightClass:{}},setup(e){const o=Cl(),t=y(()=>`relative p-0 overflow-hidden ${{square:"aspect-square",landscape:"aspect-48/27"}[e.ratio]}`),s={"top-left":"absolute top-2 left-2 flex flex-wrap justify-start gap-2","top-right":"absolute top-2 right-2 flex flex-wrap justify-end gap-2","center-left":"absolute top-1/2 left-2 flex -translate-y-1/2 flex-wrap justify-start gap-2","center-right":"absolute top-1/2 right-2 flex -translate-y-1/2 flex-wrap justify-end gap-2","bottom-left":"absolute bottom-2 left-2 flex flex-wrap justify-start gap-2","bottom-right":"absolute right-2 bottom-2 flex flex-wrap justify-end gap-2"},r=y(()=>({"top-left":ae(s["top-left"],e.topLeftClass),"top-right":ae(s["top-right"],e.topRightClass),"center-left":ae(s["center-left"],e.centerLeftClass),"center-right":ae(s["center-right"],e.centerRightClass),"bottom-left":ae(s["bottom-left"],e.bottomLeftClass),"bottom-right":ae(s["bottom-right"],e.bottomRightClass)}));return(n,l)=>(p(),x("div",{class:Q(t.value)},[_e(n.$slots,"default",{class:"absolute top-0 left-0 h-full w-full"}),u(o)["top-left"]?(p(),x("div",{key:0,class:Q(r.value["top-left"])},[_e(n.$slots,"top-left")],2)):A("",!0),u(o)["top-right"]?(p(),x("div",{key:1,class:Q(r.value["top-right"])},[_e(n.$slots,"top-right")],2)):A("",!0),u(o)["center-left"]?(p(),x("div",{key:2,class:Q(r.value["center-left"])},[_e(n.$slots,"center-left")],2)):A("",!0),u(o)["center-right"]?(p(),x("div",{key:3,class:Q(r.value["center-right"])},[_e(n.$slots,"center-right")],2)):A("",!0),u(o)["bottom-left"]?(p(),x("div",{key:4,class:Q(r.value["bottom-left"])},[_e(n.$slots,"bottom-left")],2)):A("",!0),u(o)["bottom-right"]?(p(),x("div",{key:5,class:Q(r.value["bottom-right"])},[_e(n.$slots,"bottom-right")],2)):A("",!0)],2))}}),aa=pb,fb="inline-flex shrink-0 items-center justify-center gap-1 rounded px-2 py-1 text-xs font-bold",vb=q({__name:"SquareChip",props:{label:{},variant:{default:"dark"}},setup(e){const o={dark:"bg-zinc-500/40 text-white/90",light:ae("backdrop-blur-[2px] bg-base-background/50 text-base-foreground"),gray:ae("backdrop-blur-[2px] bg-modal-card-tag-background text-base-foreground")},t=y(()=>ae(fb,o[e.variant]));return(s,r)=>(p(),x("div",{class:Q(t.value)},[_e(s.$slots,"icon"),c("span",null,R(s.label),1)],2))}}),na=vb,mb={class:"relative aspect-square w-full overflow-hidden rounded-t-lg select-none"},gb={key:1,class:"flex h-full w-full items-center justify-center"},hb=q({__name:"BaseThumbnail",props:{hoverZoom:{default:4},isHovered:{type:Boolean}},setup(e){const o=E(!1),t=E(null);return Re(()=>{Array.from(t.value?.getElementsByTagName("img")??[]).forEach(s=>{Oe(s,"error",()=>{o.value=!0})})}),(s,r)=>(p(),x("div",mb,[o.value?(p(),x("div",gb,r[0]||(r[0]=[c("img",{src:""+new URL("images/default-template.png",import.meta.url).href,draggable:"false",class:"h-full w-full transform-gpu object-cover transition-transform duration-300 ease-out"},null,-1)]))):(p(),x("div",{key:0,ref_key:"contentRef",ref:t,class:"h-full w-full transform-gpu transition-transform duration-1000 ease-out",style:be(s.isHovered?{transform:`scale(${1+s.hoverZoom/100})`}:void 0)},[_e(s.$slots,"default",{},void 0,!0)],4))]))}}),ba=Be(hb,[["__scopeId","data-v-c216f2c0"]]),yb={class:"flex h-full w-full items-center justify-center p-4",style:{backgroundImage:"url(/assets/images/default-template.png)",backgroundRepeat:"round"}},bb=["src"],wb=q({__name:"AudioThumbnail",props:{src:{}},setup(e){return(o,t)=>(p(),O(ba,null,{default:M(()=>[c("div",yb,[c("audio",{controls:"",class:"relative w-full",src:o.src,onClick:t[0]||(t[0]=ke(()=>{},["stop"]))},null,8,bb)])]),_:1}))}}),_b=wb,kb=50,Cb=q({__name:"CompareSliderThumbnail",props:{baseImageSrc:{},overlayImageSrc:{},alt:{},isHovered:{type:Boolean},isVideo:{type:Boolean}},setup(e){const o=e.isVideo||e.baseImageSrc?.toLowerCase().endsWith(".webp")||e.overlayImageSrc?.toLowerCase().endsWith(".webp")||!1,t=E(kb),s=E(null),{elementX:r,elementWidth:n,isOutside:l}=Ll(s);return ie([()=>e.isHovered,r,n,l],([i,d,f,m])=>{i&&(m||(t.value=d/f*100))}),(i,d)=>(p(),O(ba,{"is-hovered":i.isHovered},{default:M(()=>[L($o,{src:i.baseImageSrc,alt:i.alt,"image-class":u(o)?"w-full h-full object-cover":"max-w-full max-h-64 object-contain"},null,8,["src","alt","image-class"]),c("div",{ref_key:"containerRef",ref:s,class:"absolute inset-0"},[L($o,{src:i.overlayImageSrc,alt:i.alt,"image-class":u(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"]),c("div",{class:"pointer-events-none absolute inset-y-0 z-10 w-0.5 bg-white/30 backdrop-blur-sm",style:be({left:`${t.value}%`})},null,4)],512)]),_:1},8,["is-hovered"]))}}),Sb=Cb,xb=q({__name:"DefaultThumbnail",props:{src:{},alt:{},hoverZoom:{},isHovered:{type:Boolean},isVideo:{type:Boolean}},setup(e){const o=e.isVideo??(e.src?.toLowerCase().endsWith(".webp")||!1);return(t,s)=>(p(),O(ba,{"hover-zoom":t.hoverZoom,"is-hovered":t.isHovered},{default:M(()=>[L($o,{src:t.src,alt:t.alt,"image-class":["transform-gpu transition-transform duration-300 ease-out",u(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"]))}}),Tb=xb,Nb={class:"relative h-full w-full"},Ib={class:"absolute inset-0"},Pb={class:"absolute inset-0 z-10"},$b=q({__name:"HoverDissolveThumbnail",props:{baseImageSrc:{},overlayImageSrc:{},alt:{},isHovered:{type:Boolean},isVideo:{type:Boolean}},setup(e){const o=e.isVideo||e.baseImageSrc?.toLowerCase().endsWith(".webp")||e.overlayImageSrc?.toLowerCase().endsWith(".webp")||!1,t=y(()=>o?"size-full object-cover":"size-full object-contain"),s=y(()=>`size-full transition-opacity duration-300 ${o?"object-cover":"object-contain"} ${e.isHovered?"opacity-100":"opacity-0"}`);return(r,n)=>(p(),O(ba,{"is-hovered":r.isHovered},{default:M(()=>[c("div",Nb,[c("div",Ib,[L($o,{src:r.baseImageSrc,alt:r.alt,"image-class":t.value},null,8,["src","alt","image-class"])]),c("div",Pb,[L($o,{src:r.overlayImageSrc,alt:r.alt,"image-class":s.value},null,8,["src","alt","image-class"])])])]),_:1},8,["is-hovered"]))}}),Mb=$b;function Db(e,o={}){const{itemsPerPage:t=12,initialPage:s=1}=o,r=E(s),n=E(!1),l=Je(new Set([])),i=y(()=>{const g="value"in e?e.value:e;return Array.isArray(g)?g:[]}),d=y(()=>{const g=i.value;if(g.length===0)return[];const b=Array.from(l.value).sort((k,w)=>k-w),S=Math.max(...b,0)*t;return g.slice(0,S)}),f=y(()=>{const g=i.value;if(g.length===0)return!1;const b=Array.from(l.value);return Math.max(...b,0)*t<g.length}),m=y(()=>{const g=i.value;return g.length===0?0:Math.ceil(g.length/t)}),v=a(async()=>{if(n.value||!f.value)return;n.value=!0;const g=Array.from(l.value),b=Math.max(...g,0)+1,S=new Set(l.value);S.add(b),l.value=S,r.value=b,n.value=!1},"loadNextPage");return ie(()=>i.value.length,g=>{g>0&&l.value.size===0&&(l.value=new Set([1]))},{immediate:!0}),{paginatedItems:d,isLoading:n,hasMoreItems:f,currentPage:r,totalPages:m,loadNextPage:v,reset:a(()=>{r.value=s,l.value=new Set([]),n.value=!1,i.value.length>0&&(l.value=new Set([1]))},"reset")}}a(Db,"useLazyPagination");const Lb=uo("templateRanking",()=>{const e=E(),o=a(n=>n/(e.value??n),"normalizeUsageScore"),t=a(n=>{if(!n)return .5;const l=new Date(n);if(isNaN(l.getTime()))return .5;const i=(Date.now()-l.getTime())/(1e3*60*60*24);return Math.max(.1,1/(1+i/90))},"computeFreshness");return{largestUsageScore:e,computeFreshness:t,computeDefaultScore:a((n,l,i=0)=>{const d=(l??5)/10,f=t(n);return o(i)*.5+d*.3+f*.2},"computeDefaultScore"),computePopularScore:a((n,l=0)=>{const i=t(n);return o(l)*.9+i*.1},"computePopularScore")}});var Ab={keys:[{name:"name",weight:.3},{name:"title",weight:.3},{name:"description",weight:.1},{name:"tags",weight:.2},{name:"models",weight:.3}],threshold:.33,includeScore:!0,includeMatches:!0};function Eb(e){const o=ne(),t=Lb(),s=E(""),r=E(o.get("Comfy.Templates.SelectedModels")),n=E(o.get("Comfy.Templates.SelectedUseCases")),l=E(o.get("Comfy.Templates.SelectedRunsOn")),i=E(o.get("Comfy.Templates.SortBy")),d=E(Ab),f=y(()=>{const F="value"in e?e.value:e;return Array.isArray(F)?F:[]}),m=y(()=>new ll(f.value,d.value)),v=y(()=>{const F=new Set;return f.value.forEach(G=>{Array.isArray(G.models)&&G.models.forEach(z=>F.add(z))}),Array.from(F).sort()}),h=y(()=>{const F=new Set;return f.value.forEach(G=>{G.tags&&Array.isArray(G.tags)&&G.tags.forEach(z=>F.add(z))}),Array.from(F).sort()}),g=y(()=>["ComfyUI","External or Remote API"]),b=xl(s,50),S=y(()=>b.value.trim()?m.value.search(b.value).map(F=>F.item):f.value),k=y(()=>r.value.length===0?S.value:S.value.filter(F=>!F.models||!Array.isArray(F.models)?!1:r.value.some(G=>F.models?.includes(G)))),w=y(()=>n.value.length===0?k.value:k.value.filter(F=>!F.tags||!Array.isArray(F.tags)?!1:n.value.some(G=>F.tags?.includes(G)))),C=y(()=>l.value.length===0?w.value:w.value.filter(F=>{const G=F.openSource===!1,z=F.openSource!==!1;return l.value.some(K=>K==="External or Remote API"?G:K==="ComfyUI"?z:!1)})),T=a(F=>typeof F.vram=="number"&&Number.isFinite(F.vram)&&F.vram>0?F.vram:Number.POSITIVE_INFINITY,"getVramMetric");ie(C,F=>{t.largestUsageScore=Math.max(...F.map(G=>G.usage||0))},{immediate:!0});const I=y(()=>{const F=[...C.value];switch(i.value){case"recommended":return F.sort((G,z)=>{const K=t.computeDefaultScore(G.date,G.searchRank,G.usage);return t.computeDefaultScore(z.date,z.searchRank,z.usage)-K});case"popular":return F.sort((G,z)=>{const K=t.computePopularScore(G.date,G.usage);return t.computePopularScore(z.date,z.usage)-K});case"alphabetical":return F.sort((G,z)=>{const K=G.title||G.name||"",H=z.title||z.name||"";return K.localeCompare(H)});case"newest":return F.sort((G,z)=>{const K=new Date(G.date||"1970-01-01");return new Date(z.date||"1970-01-01").getTime()-K.getTime()});case"vram-low-to-high":return F.sort((G,z)=>{const K=T(G),H=T(z);if(K===H){const J=G.title||G.name||"",te=z.title||z.name||"";return J.localeCompare(te)}return K===Number.POSITIVE_INFINITY?1:H===Number.POSITIVE_INFINITY?-1:K-H});case"model-size-low-to-high":return F.sort((G,z)=>{const K=typeof G.size=="number"?G.size:Number.POSITIVE_INFINITY,H=typeof z.size=="number"?z.size:Number.POSITIVE_INFINITY;return K===H?0:K-H});case"default":default:return F}}),_=y(()=>I.value),N=a(()=>{s.value="",r.value=[],n.value=[],l.value=[],i.value="default"},"resetFilters"),$=a(F=>{r.value=r.value.filter(G=>G!==F)},"removeModelFilter"),V=a(F=>{n.value=n.value.filter(G=>G!==F)},"removeUseCaseFilter"),B=a(F=>{l.value=l.value.filter(G=>G!==F)},"removeRunsOnFilter"),D=y(()=>_.value.length),U=y(()=>f.value.length),j=ca(()=>{Le()?.trackTemplateFilterChanged({search_query:s.value||void 0,selected_models:r.value,selected_use_cases:n.value,selected_runs_on:l.value,sort_by:i.value,filtered_count:D.value,total_count:U.value})},500),W=a(async()=>{const F=await Ne.getFuseOptions();F&&(d.value=F)},"loadFuseOptions");return ie([s,r,n,l,i],()=>{(s.value.trim()!==""||r.value.length>0||n.value.length>0||l.value.length>0||i.value!=="default")&&j()},{deep:!0}),Ut(r,F=>{o.set("Comfy.Templates.SelectedModels",F)},{debounce:500,deep:!0}),Ut(n,F=>{o.set("Comfy.Templates.SelectedUseCases",F)},{debounce:500,deep:!0}),Ut(l,F=>{o.set("Comfy.Templates.SelectedRunsOn",F)},{debounce:500,deep:!0}),Ut(i,F=>{o.set("Comfy.Templates.SortBy",F)},{debounce:500}),{searchQuery:s,selectedModels:r,selectedUseCases:n,selectedRunsOn:l,sortBy:i,filteredTemplates:_,availableModels:v,availableUseCases:h,availableRunsOn:g,filteredCount:D,totalCount:U,resetFilters:N,removeModelFilter:$,removeUseCaseFilter:V,removeRunsOnFilter:B,loadFuseOptions:W}}a(Eb,"useTemplateFiltering");function Dr(){const{t:e}=ue(),o=qs(),t=qt(),s=E(null),r=E(null),n=y(()=>o.isLoaded),l=y(()=>o.groupedTemplates),i=a(async()=>(o.isLoaded||await o.loadWorkflowTemplates(),o.isLoaded),"loadTemplates"),d=a(()=>{if(l.value.length>0){const S=l.value[0].modules[0];f(S)}},"selectFirstTemplateCategory"),f=a(S=>(s.value=S,S!==null),"selectTemplateCategory"),m=a((S,k,w="1")=>`${k==="default"?Ne.fileURL(`/templates/${S.name}`):Ne.apiURL(`/workflow_templates/${k}/${S.name}`)}${k==="default"&&w?`-${w}`:""}.${S.mediaSubtype}`,"getTemplateThumbnailUrl"),v=a((S,k)=>{const w=S.title??S.name??`${k} Template`;return k==="default"?S.localizedTitle??w:w},"getTemplateTitle"),h=a(S=>(S.localizedDescription||S.description)?.replace(/[-_]/g," ").trim()??"","getTemplateDescription"),g=a(async(S,k)=>{if(!n.value)return!1;r.value=S;let w;try{if(k==="all"){const T=l.value.find(I=>I.label===e("templateWorkflows.category.ComfyUI Examples","ComfyUI Examples"))?.modules.find(I=>I.moduleName==="all")?.templates.find(I=>I.name===S);if(!T||!T.sourceModule)return!1;k=T.sourceModule}w=await b(S,k);const C=k==="default"?e(`templateWorkflows.template.${S}`,S):S;return Fe&&Le()?.trackTemplate({workflow_name:S,template_source:k}),t.closeDialog(),await Y.loadGraphData(w,!0,!0,C,{openSource:"template"}),!0}catch(C){return console.error("Error loading workflow template:",C),!1}finally{r.value=null}},"loadWorkflowTemplate"),b=a(async(S,k)=>k==="default"?fetch(Ne.fileURL(`/templates/${S}.json`)).then(w=>w.json()):fetch(Ne.apiURL(`/workflow_templates/${k}/${S}.json`)).then(w=>w.json()),"fetchTemplateJson");return{selectedTemplate:s,loadingTemplateId:r,isTemplatesLoaded:n,allTemplateGroups:l,loadTemplates:i,selectFirstTemplateCategory:d,selectTemplateCategory:f,getTemplateThumbnailUrl:m,getTemplateTitle:v,getTemplateDescription:h,loadWorkflowTemplate:g}}a(Dr,"useTemplateWorkflows");function Lr(e={}){const{minWidth:o="15rem",maxWidth:t="1fr",padding:s="0",gap:r="1rem",columns:n}=e;return n!==void 0&&n<1&&console.warn("createGridStyle: columns must be >= 1, defaulting to 1"),{display:"grid",gridTemplateColumns:n?`repeat(${Math.max(1,n??1)}, 1fr)`:`repeat(auto-fill, minmax(${o}, ${t}))`,padding:s,gap:r}}a(Lr,"createGridStyle");var Vb={class:"text-neutral text-base"},Ob={class:"flex gap-2"},Rb={class:"relative flex flex-wrap justify-between gap-2 px-6 pb-4"},Wb={class:"flex flex-wrap gap-2"},Bb={key:0,class:"text-neutral px-6 pt-4 pb-2 text-2xl font-semibold"},zb={key:0,class:"flex h-64 flex-col items-center justify-center text-neutral-500"},Ub={class:"mb-2 text-lg"},Fb={class:"text-sm"},Gb={key:1},Hb={key:0,class:"inline-block h-8 w-48 animate-pulse rounded bg-dialog-surface"},jb={class:"relative h-full w-full overflow-hidden rounded-lg"},qb={class:"flex flex-col gap-2 pt-3"},Kb=["title"],Qb={class:"flex justify-between gap-2"},Yb={class:"flex-1"},Jb=["title"],Xb={key:0,class:"flex flex-col-reverse justify-center"},Zb={key:0,class:"text-sm text-muted"},ew={key:3,class:"mt-6 px-6 text-sm text-muted"},tw=q({__name:"WorkflowTemplateSelectorDialog",props:{onClose:{type:Function}},setup(e){const{t:o}=ue(),t=E(0),s=E(!1);Re(()=>{t.value=Date.now()});const r=Hs(),n=y(()=>[Wl.Local]),l=a(()=>{if(Fe){const ee=Math.floor((Date.now()-t.value)/1e3);Le()?.trackTemplateLibraryClosed({template_selected:s.value,time_spent_seconds:ee})}e.onClose()},"onClose");fa(pr,l);const i=qs(),{loadTemplates:d,loadWorkflowTemplate:f,getTemplateThumbnailUrl:m,getTemplateTitle:v,getTemplateDescription:h}=Dr(),g=a(ee=>ee.sourceModule||"default","getEffectiveSourceModule"),b=a(ee=>{const oe=g(ee);return m(ee,oe,oe==="default"?"1":"")},"getBaseThumbnailSrc"),S=a(ee=>{const oe=g(ee);return m(ee,oe,oe==="default"?"2":"")},"getOverlayThumbnailSrc"),k=a(ee=>{ee.tutorialUrl&&window.open(ee.tutorialUrl,"_blank")},"openTutorial"),w=y(()=>De.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]"}]}]:i.navGroupedTemplates),C=y(()=>Lr()),T=y(()=>i.enhancedTemplates),I=E("all"),{searchQuery:_,selectedModels:N,selectedUseCases:$,selectedRunsOn:V,sortBy:B,filteredTemplates:D,availableModels:U,availableUseCases:j,availableRunsOn:W,filteredCount:F,totalCount:G,resetFilters:z,loadFuseOptions:K}=Eb(y(()=>I.value?i.filterTemplatesByCategory(I.value):T.value)),H=a(ee=>{const oe=I.value==="popular",Tt=B.value==="popular";ee==="nav"?oe&&!Tt?B.value="popular":!oe&&Tt&&(B.value="default"):ee==="sort"&&oe&&!Tt&&(I.value="all")},"coordinateNavAndSort");ie(I,()=>H("nav")),ie(B,()=>H("sort"));const J=y({get(){return N.value.map(ee=>({name:ee,value:ee}))},set(ee){N.value=ee.map(oe=>oe.value)}}),te=y({get(){return $.value.map(ee=>({name:ee,value:ee}))},set(ee){$.value=ee.map(oe=>oe.value)}}),he=y({get(){return V.value.map(ee=>({name:ee,value:ee}))},set(ee){V.value=ee.map(oe=>oe.value)}}),$e=E(null),se=E(null),Se=E([]),ve=E(0),xe=E(""),Te=y(()=>U.value.map(ee=>({name:ee,value:ee}))),He=y(()=>j.value.map(ee=>({name:ee,value:ee}))),je=y(()=>W.value.map(ee=>({name:ee,value:ee}))),Ye=y(()=>J.value.length===0?o("templateWorkflows.modelFilter","Model Filter"):J.value.length===1?J.value[0].name:o("templateWorkflows.modelsSelected",{count:J.value.length})),ot=y(()=>te.value.length===0?o("templateWorkflows.useCaseFilter","Use Case"):te.value.length===1?te.value[0].name:o("templateWorkflows.useCasesSelected",{count:te.value.length})),Rt=y(()=>he.value.length===0?o("templateWorkflows.runsOnFilter","Runs On"):he.value.length===1?he.value[0].name:o("templateWorkflows.runsOnSelected",{count:he.value.length})),mt=y(()=>[{name:o("templateWorkflows.sort.default","Default"),value:"default"},{name:o("templateWorkflows.sort.recommended","Recommended"),value:"recommended"},{name:o("templateWorkflows.sort.popular","Popular"),value:"popular"},{name:o("templateWorkflows.sort.newest","Newest"),value:"newest"},{name:o("templateWorkflows.sort.vramLowToHigh","VRAM Usage (Low to High)"),value:"vram-low-to-high"},{name:o("templateWorkflows.sort.modelSizeLowToHigh","Model Size (Low to High)"),value:"model-size-low-to-high"},{name:o("templateWorkflows.sort.alphabetical","Alphabetical (A-Z)"),value:"alphabetical"}]),Wt=E(null),Qt=y(()=>!_.value.trim()),{paginatedItems:Bt,isLoading:xt,hasMoreItems:dt,loadNextPage:ho,reset:yo}=Db(D,{itemsPerPage:24}),Yt=y(()=>Qt.value?Bt.value:D.value);ed(Wt,()=>{Qt.value&&dt.value&&!xt.value&&ho()}),ie([_,I,B,N,$,V],()=>{yo(),$e.value=null,ve.value++});const de=a(async ee=>{$e.value=ee.name;try{await f(ee.name,g(ee)),s.value=!0,l()}finally{$e.value=null}},"onLoadWorkflow"),me=y(()=>{const ee=w.value.find(oe=>"id"in oe?oe.id===I.value:oe.items?.some(Tt=>Tt.id===I.value));return ee?"id"in ee?ee.label:ee.items?.find(oe=>oe.id===I.value)?.label||o("templateWorkflows.allTemplates","All Templates"):o("templateWorkflows.allTemplates","All Templates")}),{isLoading:De}=Dl(async()=>(await Promise.all([d(),i.loadWorkflowTemplates(),K()]),!0),!1,{immediate:!0}),Me=a(ee=>(ee.includeOnDistributions?.length??0)>0?n.value.some(oe=>ee.includeOnDistributions?.includes(oe)):!0,"isTemplateVisibleOnDistribution");return rt(()=>{Se.value=[]}),(ee,oe)=>{const Tt=Pe("tooltip");return p(),O(dr,{"content-title":ee.$t("templateWorkflows.title","Workflow Templates"),class:"workflow-template-selector-dialog"},{leftPanel:M(()=>[L(vr,{modelValue:I.value,"onUpdate:modelValue":oe[0]||(oe[0]=re=>I.value=re),"nav-items":w.value},{"header-icon":M(()=>oe[8]||(oe[8]=[c("i",{class:"icon-[comfy--template]"},null,-1)])),"header-title":M(()=>[c("span",Vb,R(ee.$t("sideToolbar.templates","Templates")),1)]),_:1},8,["modelValue","nav-items"])]),header:M(()=>[L(rr,{modelValue:u(_),"onUpdate:modelValue":oe[1]||(oe[1]=re=>qe(_)?_.value=re:null),size:"lg",class:"max-w-[384px]"},null,8,["modelValue"])]),"header-right-area":M(()=>[c("div",Ob,[u(F)!==u(G)?(p(),O(X,{key:0,variant:"secondary",size:"lg",onClick:u(z)},{default:M(()=>[oe[9]||(oe[9]=c("i",{class:"icon-[lucide--filter-x]"},null,-1)),c("span",null,R(ee.$t("templateWorkflows.resetFilters","Clear Filters")),1)]),_:1},8,["onClick"])):A("",!0)])]),contentFilter:M(()=>[c("div",Rb,[c("div",Wb,[L(So,{modelValue:J.value,"onUpdate:modelValue":oe[2]||(oe[2]=re=>J.value=re),"search-query":xe.value,"onUpdate:searchQuery":oe[3]||(oe[3]=re=>xe.value=re),class:"w-[250px]",label:Ye.value,options:Te.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:M(()=>oe[10]||(oe[10]=[c("i",{class:"icon-[lucide--cpu]"},null,-1)])),_:1},8,["modelValue","search-query","label","options"]),L(So,{modelValue:te.value,"onUpdate:modelValue":oe[4]||(oe[4]=re=>te.value=re),label:ot.value,options:He.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:M(()=>oe[11]||(oe[11]=[c("i",{class:"icon-[lucide--target]"},null,-1)])),_:1},8,["modelValue","label","options"]),L(So,{modelValue:he.value,"onUpdate:modelValue":oe[5]||(oe[5]=re=>he.value=re),label:Rt.value,options:je.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:M(()=>oe[12]||(oe[12]=[c("i",{class:"icon-[lucide--server]"},null,-1)])),_:1},8,["modelValue","label","options"])]),c("div",null,[L(js,{modelValue:u(B),"onUpdate:modelValue":oe[6]||(oe[6]=re=>qe(B)?B.value=re:null),label:ee.$t("templateWorkflows.sorting","Sort by"),options:mt.value,class:"w-62.5"},{icon:M(()=>oe[13]||(oe[13]=[c("i",{class:"icon-[lucide--arrow-up-down] text-muted-foreground"},null,-1)])),_:1},8,["modelValue","label","options"])])]),u(De)?A("",!0):(p(),x("div",Bb,[c("span",null,R(me.value),1)]))]),content:M(()=>[!u(De)&&u(D).length===0?(p(),x("div",zb,[oe[14]||(oe[14]=c("i",{class:"mb-4 icon-[lucide--search] h-12 w-12 opacity-50"},null,-1)),c("p",Ub,R(ee.$t("templateWorkflows.noResults","No templates found")),1),c("p",Fb,R(ee.$t("templateWorkflows.noResultsHint","Try adjusting your search or filters")),1)])):(p(),x("div",Gb,[u(De)?(p(),x("span",Hb)):A("",!0),(p(),x("div",{key:ve.value,style:be(C.value),"data-testid":"template-workflows-content"},[(p(!0),x(Z,null,ye(u(De)?12:0,re=>(p(),O(oa,{key:`initial-skeleton-${re}`,size:"compact",variant:"ghost",rounded:"lg",class:"hover:bg-base-background"},{top:M(()=>[L(aa,{ratio:"landscape"},{default:M(()=>oe[15]||(oe[15]=[c("div",{class:"h-full w-full animate-pulse bg-dialog-surface"},null,-1)])),_:1})]),bottom:M(()=>[L(ta,null,{default:M(()=>oe[16]||(oe[16]=[c("div",{class:"px-4 py-3"},[c("div",{class:"mb-2 h-6 animate-pulse rounded bg-dialog-surface"}),c("div",{class:"h-4 animate-pulse rounded bg-dialog-surface"})],-1)])),_:1})]),_:2},1024))),128)),(p(!0),x(Z,null,ye(u(De)?[]:Yt.value,re=>ce((p(),O(oa,{key:re.name,ref_for:!0,ref_key:"cardRefs",ref:Se,size:"compact",variant:"ghost",rounded:"lg","data-testid":`template-workflow-${re.name}`,class:"hover:bg-base-background",onMouseenter:a(Dt=>se.value=re.name,"onMouseenter"),onMouseleave:oe[7]||(oe[7]=Dt=>se.value=null),onClick:a(Dt=>de(re),"onClick")},{top:M(()=>[L(aa,{ratio:"square"},{default:M(()=>[c("div",jb,[re.mediaType==="audio"?(p(),O(_b,{key:0,src:b(re)},null,8,["src"])):re.thumbnailVariant==="compareSlider"?(p(),O(Sb,{key:1,"base-image-src":b(re),"overlay-image-src":S(re),alt:u(v)(re,g(re)),"is-hovered":se.value===re.name,"is-video":re.mediaType==="video"||re.mediaSubtype==="webp"},null,8,["base-image-src","overlay-image-src","alt","is-hovered","is-video"])):re.thumbnailVariant==="hoverDissolve"?(p(),O(Mb,{key:2,"base-image-src":b(re),"overlay-image-src":S(re),alt:u(v)(re,g(re)),"is-hovered":se.value===re.name,"is-video":re.mediaType==="video"||re.mediaSubtype==="webp"},null,8,["base-image-src","overlay-image-src","alt","is-hovered","is-video"])):(p(),O(Tb,{key:3,src:b(re),alt:u(v)(re,g(re)),"is-hovered":se.value===re.name,"is-video":re.mediaType==="video"||re.mediaSubtype==="webp","hover-zoom":re.thumbnailVariant==="zoomHover"?16:5},null,8,["src","alt","is-hovered","is-video","hover-zoom"])),$e.value===re.name?(p(),O(u(Qr),{key:4,class:"absolute inset-0 z-10 m-auto h-12 w-12"})):A("",!0)])]),"bottom-right":M(()=>[re.tags&&re.tags.length>0?(p(!0),x(Z,{key:0},ye(re.tags,Dt=>(p(),O(na,{key:Dt,label:Dt},null,8,["label"]))),128)):A("",!0)]),_:2},1024)]),bottom:M(()=>[L(ta,null,{default:M(()=>[c("div",qb,[c("h3",{class:"m-0 line-clamp-1 text-sm",title:u(v)(re,g(re))},R(u(v)(re,g(re))),9,Kb),c("div",Qb,[c("div",Yb,[c("p",{class:"m-0 line-clamp-2 text-sm text-muted",title:u(h)(re)},R(u(h)(re)),9,Jb)]),re.tutorialUrl?(p(),x("div",Xb,[se.value===re.name?ce((p(),O(X,lt({key:0,ref_for:!0},ee.$attrs,{variant:"inverted",size:"icon",onClick:ke(Dt=>k(re),["stop"])}),{default:M(()=>oe[17]||(oe[17]=[c("i",{class:"icon-[lucide--info] size-4"},null,-1)])),_:2},1040,["onClick"])),[[Tt,ee.$t("g.seeTutorial"),void 0,{bottom:!0}]]):A("",!0)])):A("",!0)])])]),_:2},1024)]),_:2},1032,["data-testid","onMouseenter","onClick"])),[[tt,Me(re)]])),128)),(p(!0),x(Z,null,ye(u(xt)?6:0,re=>(p(),O(oa,{key:`skeleton-${re}`,size:"compact",variant:"ghost",rounded:"lg",class:"hover:bg-base-background"},{top:M(()=>[L(aa,{ratio:"square"},{default:M(()=>oe[18]||(oe[18]=[c("div",{class:"h-full w-full animate-pulse bg-dialog-surface"},null,-1)])),_:1})]),bottom:M(()=>[L(ta,null,{default:M(()=>oe[19]||(oe[19]=[c("div",{class:"px-4 py-3"},[c("div",{class:"mb-2 h-6 animate-pulse rounded bg-dialog-surface"}),c("div",{class:"h-4 animate-pulse rounded bg-dialog-surface"})],-1)])),_:1})]),_:2},1024))),128))],4))])),!u(De)&&u(dt)?(p(),x("div",{key:2,ref_key:"loadTrigger",ref:Wt,class:"mt-4 flex h-4 w-full items-center justify-center"},[u(xt)?(p(),x("div",Zb,R(ee.$t("templateWorkflows.loadingMore","Loading more...")),1)):A("",!0)],512)):A("",!0),u(De)?A("",!0):(p(),x("div",ew,R(ee.$t("templateWorkflows.resultsCount",{count:u(F),total:u(G)})),1))]),_:1},8,["content-title"])}}}),ow=tw,vs="global-workflow-template-selector";const Mn=a(()=>{const e=vt(),o=qt();function t(){o.closeDialog({key:vs})}a(t,"hide");function s(r="command"){Le()?.trackTemplateLibraryOpened({source:r}),e.showLayoutDialog({key:vs,component:ow,props:{onClose:t},dialogComponentProps:{pt:{content:{class:"!px-0 overflow-hidden h-full !py-0"},root:{style:"width: 90vw; height: 85vh; max-width: 1400px; display: flex;"}}}})}return a(s,"show"),{show:s,hide:t}},"useWorkflowTemplateSelectorDialog"),tn=a((e,o,t=30)=>{const s=e instanceof HTMLElement?e:e.target;let r=0;const n=setInterval(()=>{o(r++)},t),l=a(()=>{clearInterval(n),i(),d()},"dispose"),i=Oe(document,"mouseup",l),d=Oe(s,"mouseup",l);return{dispose:l}},"whileMouseDown");var aw={class:"flex h-8 w-8 items-center justify-center rounded-lg bg-black"},nw=["href","onMousedown","onClick"],sw={class:"p-menubar-item-label text-nowrap"},rw={key:3,class:"keybinding-tag ml-auto rounded border border-surface p-1 text-xs text-nowrap text-muted"},lw={key:4,class:"pi pi-angle-right ml-auto"},iw={class:"p-menubar-item-label text-nowrap"},uw=q({__name:"ComfyMenuButton",setup(e){const{t:o}=ue(),t=Ce(),s=kn(),r=St(),n=ir(),l=qt(),i=ht(),d=ne(),f=E(null),m=y({get:a(()=>d.get("Comfy.VueNodes.Enabled")??!1,"get"),set:a(async D=>{await d.set("Comfy.VueNodes.Enabled",D)},"set")}),v=Le();function h(D){v?.trackUiButtonClicked({button_id:"sidebar_comfy_menu_opened"}),f.value?.toggle(D)}a(h,"onLogoMenuClick");const g=a(D=>{const U=typeof D.label=="function"?D.label():D.label,j=U?o(`menuLabels.${Pt(U)}`,U):void 0;return{...D,label:j,items:D.items?.map(g)}},"translateMenuItem"),b=a(D=>{l.showDialog({key:"global-settings",headerComponent:yu,component:Tu,props:{defaultPanel:D}})},"showSettings"),S=a(async()=>{await i.openManager({initialTab:ao.All,showToastOnLegacyError:!1})},"showManageExtensions"),k=y(()=>r.palettes.map(D=>({key:`theme-${D.id}`,label:D.name,parentPath:"theme",comfyCommand:{active:a(()=>r.activePaletteId===D.id,"active")},command:a(async()=>{await n.loadColorPalette(D.id)},"command")}))),w=y(()=>[{separator:!0},{key:"theme",label:o("menu.theme"),items:k.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:a(()=>Mn().show("menu"),"command")},{key:"settings",label:o("g.settings"),icon:"mdi mdi-cog-outline",command:a(()=>{v?.trackUiButtonClicked({button_id:"sidebar_settings_menu_opened"}),b()},"command")},{key:"manage-extensions",label:o("menu.manageExtensions"),icon:"mdi mdi-puzzle-outline",command:S}]),C=y(()=>{const D=s.menuItems.map(g);let U=D.findIndex(W=>W.key==="Help"),j;if(U!==-1){D[U].icon="mdi mdi-help-circle-outline";const W=U!==D.length-1;j=D.splice(U,1,...W?[{separator:!0}]:[])[0]}return U=D.length,D.splice(U,0,...w.value,...j?[{separator:!0},j]:[]),D}),T=a(()=>{Ue(()=>{f.value&&(f.value.dirty=!0)})},"onMenuShow"),I=a(D=>D.comfyCommand?.id==="Comfy.Canvas.ZoomIn"||D.comfyCommand?.id==="Comfy.Canvas.ZoomOut","isZoomCommand"),_=a((D,U)=>{D.comfyCommand&&tn(U,async()=>{await t.execute(D.comfyCommand.id)},50)},"handleZoomMouseDown"),N=a((D,U)=>{if(I(D)||D.comfyCommand?.active)return U.preventDefault(),U.stopPropagation(),D.comfyCommand?.active&&D.command?.({item:D,originalEvent:U}),!1},"handleItemClick"),$=a(D=>D.parentPath&&(D.parentPath==="theme"||s.menuItemHasActiveStateChildren[D.parentPath]),"hasActiveStateSiblings"),V=a(()=>!1,"handleNodes2ToggleClick"),B=a(async D=>{await d.set("Comfy.VueNodes.Enabled",D),v?.trackUiButtonClicked({button_id:`menu_nodes_2.0_toggle_${D?"enabled":"disabled"}`})},"onNodes2ToggleChange");return(D,U)=>{const j=Pe("tooltip");return p(),x(Z,null,[ce((p(),x("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":f.value?.visible}]),onClick:U[0]||(U[0]=W=>h(W))},[c("div",aw,[L(ib,{alt:"ComfyUI Logo",class:"comfyui-logo h-[18px] w-[18px] text-white",mode:"fill"})])],2)),[[j,{value:u(o)("sideToolbar.labels.menu"),showDelay:300,hideDelay:300}]]),L(u(Kr),{ref_key:"menuRef",ref:f,model:C.value,popup:!0,class:"comfy-command-menu",onShow:T},{item:M(({item:W,props:F})=>[W.key!=="nodes-2.0-toggle"?(p(),x("a",lt({key:0,class:"p-menubar-item-link px-4 py-2"},F.action,{href:W.url,target:"_blank",class:typeof W.class=="function"?W.class():W.class,onMousedown:a(G=>I(W)?_(W,G):void 0,"onMousedown"),onClick:a(G=>N(W,G),"onClick")}),[$(W)?(p(),x("i",{key:0,class:Q(["p-menubar-item-icon pi pi-check text-sm",{invisible:!W.comfyCommand?.active?.()}])},null,2)):W.icon&&W.comfyCommand?.id!=="Comfy.NewBlankWorkflow"?(p(),x("span",{key:1,class:Q(["p-menubar-item-icon text-sm",W.icon])},null,2)):A("",!0),c("span",sw,R(W.label),1),W.comfyCommand?.id==="Comfy.NewBlankWorkflow"?(p(),x("i",{key:2,class:Q(["ml-auto",W.icon])},null,2)):A("",!0),W?.comfyCommand?.keybinding?(p(),x("span",rw,R(W.comfyCommand.keybinding.combo.toString()),1)):A("",!0),W.items?(p(),x("i",lw)):A("",!0)],16,nw)):(p(),x("div",{key:1,class:"flex items-center justify-between px-4 py-2",onClick:ke(V,["stop"])},[c("span",iw,R(W.label),1),L(u(to),{severity:"info",class:"ml-2 text-xs"},{default:M(()=>[Ie(R(D.$t("g.beta")),1)]),_:1}),L(u(Ps),{modelValue:m.value,"onUpdate:modelValue":[U[1]||(U[1]=G=>m.value=G),B],class:"ml-4","aria-label":W.label,pt:{root:{style:{width:"38px",height:"20px"}},handle:{style:{width:"16px",height:"16px"}}},onClick:U[2]||(U[2]=ke(()=>{},["stop"]))},null,8,["modelValue","aria-label"])]))]),_:1},8,["model"])],64)}}}),dw=Be(uw,[["__scopeId","data-v-7f8c3b49"]]),cw={class:"p-1 bg-secondary-background rounded-lg w-10"},pw=q({__name:"ModeToggle",setup(e){const o=fe();return(t,s)=>(p(),x("div",cw,[L(X,{size:"icon",title:u(le)("linearMode.linearMode"),variant:u(o).linearMode?"inverted":"secondary",onClick:s[0]||(s[0]=r=>u(Ce)().execute("Comfy.ToggleLinear"))},{default:M(()=>s[2]||(s[2]=[c("i",{class:"icon-[lucide--panels-top-left]"},null,-1)])),_:1},8,["title","variant"]),L(X,{size:"icon",title:u(le)("linearMode.graphMode"),variant:u(o).linearMode?"secondary":"inverted",onClick:s[1]||(s[1]=r=>u(Ce)().execute("Comfy.ToggleLinear"))},{default:M(()=>s[3]||(s[3]=[c("i",{class:"icon-[comfy--workflow]"},null,-1)])),_:1},8,["title","variant"])]))}}),Ar=pw,fw={class:"side-bar-button-content"},vw={key:0,class:"side-bar-button-label"},mw=q({__name:"SidebarIcon",props:{icon:{default:""},selected:{type:Boolean,default:!1},tooltip:{default:""},tooltipSuffix:{default:""},iconBadge:{type:[String,Function],default:""},label:{default:""},isSmall:{type:Boolean,default:!1}},emits:["click"],setup(e,{emit:o}){const{t}=ue(),s=o,r=y(()=>typeof e.iconBadge=="function"?e.iconBadge()??"":e.iconBadge),n=y(()=>!!r.value),l=y(()=>t(e.tooltip)+e.tooltipSuffix);return(i,d)=>{const f=Pe("tooltip");return ce((p(),O(X,{class:Q(u(ae)("side-bar-button cursor-pointer border-none",i.selected&&"side-bar-button-selected")),variant:"muted-textonly","aria-label":l.value,onClick:d[0]||(d[0]=m=>s("click",m))},{default:M(()=>[c("div",fw,[_e(i.$slots,"icon",{},()=>[n.value?(p(),O(u(qr),{key:0,value:r.value},{default:M(()=>[typeof i.icon=="string"?(p(),x("i",{key:0,class:Q(i.icon+" side-bar-button-icon")},null,2)):(p(),O(so(i.icon),{key:1,class:"side-bar-button-icon"}))]),_:1},8,["value"])):typeof i.icon=="string"?(p(),x("i",{key:1,class:Q(i.icon+" side-bar-button-icon")},null,2)):typeof i.icon=="object"?(p(),O(so(i.icon),{key:2,class:"side-bar-button-icon"})):A("",!0)],!0),i.label&&!i.isSmall?(p(),x("span",vw,R(u(t)(i.label)),1)):A("",!0)])]),_:3},8,["class","aria-label"])),[[f,{value:l.value,showDelay:300,hideDelay:300}]])}}}),Ot=Be(mw,[["__scopeId","data-v-bbb98ec9"]]),gw=q({__name:"SidebarBottomPanelToggleButton",setup(e){const o=po(),t=a(()=>{Le()?.trackUiButtonClicked({button_id:"sidebar_bottom_panel_console_toggled"}),o.toggleBottomPanel()},"toggleConsole");return(s,r)=>(p(),O(Ot,{icon:"icon-[ph--terminal-bold]",label:s.$t("sideToolbar.labels.console"),tooltip:s.$t("menu.toggleBottomPanel"),selected:u(o).activePanel=="terminal",onClick:t},null,8,["label","tooltip","selected"]))}}),hw=gw,yw=q({__name:"SidebarSettingsButton",setup(e){const{t:o}=ue(),{getCommand:t,formatKeySequence:s}=Ce(),r=t("Comfy.ShowSettingsDialog"),n=y(()=>`${o("g.settings")} (${s(r)})`),l=a(()=>{r.function(),Le()?.trackUiButtonClicked({button_id:"sidebar_settings_button_clicked"})},"showSettingsDialog");return(i,d)=>(p(),O(Ot,{icon:"icon-[lucide--settings]",label:i.$t("g.settings"),tooltip:n.value,onClick:l},null,8,["label","tooltip"]))}}),bw=yw,ww=q({__name:"SidebarShortcutsToggleButton",setup(e){const{t:o}=ue(),t=po(),s=Ce(),r=s.getCommand("Workspace.ToggleBottomPanel.Shortcuts"),{formatKeySequence:n}=s,l=y(()=>t.activePanel==="shortcuts"),i=y(()=>`${o("shortcuts.keyboardShortcuts")} (${n(r)})`),d=a(()=>{Le()?.trackUiButtonClicked({button_id:"sidebar_shortcuts_panel_toggled"}),t.togglePanel("shortcuts")},"toggleShortcutsPanel");return(f,m)=>(p(),O(Ot,{icon:"icon-[lucide--keyboard]",label:f.$t("shortcuts.shortcuts"),tooltip:i.value,selected:l.value,onClick:d},null,8,["label","tooltip","selected"]))}}),_w=ww,kw=q({__name:"SidebarHelpCenterIcon",props:{isSmall:{type:Boolean}},setup(e){const{shouldShowRedDot:o,toggleHelpCenter:t}=$n();return(s,r)=>(p(),O(Ot,{icon:"pi pi-question-circle",class:"comfy-help-center-btn",label:s.$t("menu.help"),tooltip:s.$t("sideToolbar.helpCenter"),"icon-badge":u(o)?"•":"","is-small":s.isSmall,onClick:u(t)},null,8,["label","tooltip","icon-badge","is-small","onClick"]))}}),Cw=Be(kw,[["__scopeId","data-v-4a7593e2"]]),Sw=q({__name:"SidebarLogoutIcon",setup(e){const{t:o}=ue(),t=gr(),s=y(()=>`${o("sideToolbar.logout")} (${t.currentUser?.username})`),r=a(async()=>{await t.logout(),window.location.reload()},"logout");return(n,l)=>(p(),O(Ot,{icon:"pi pi-sign-out",tooltip:s.value,label:n.$t("sideToolbar.logout"),onClick:r},null,8,["tooltip","label"]))}}),xw=Sw,Tw=q({__name:"SidebarTemplatesButton",setup(e){const o=ne(),t=y(()=>o.get("Comfy.Sidebar.Size")==="small"),s=a(()=>{Le()?.trackUiButtonClicked({button_id:"sidebar_templates_dialog_opened"}),Mn().show("sidebar")},"openTemplates");return(r,n)=>(p(),O(Ot,{icon:"icon-[comfy--template]",tooltip:r.$t("sideToolbar.templates"),label:r.$t("sideToolbar.labels.templates"),"is-small":t.value,class:"templates-tab-button",onClick:s},null,8,["tooltip","label","is-small"]))}}),Er=Tw,Nw=20,Iw=50,Pw=q({__name:"SideToolbar",setup(e){const o=st(),t=ne(),s=gr(),r=Ce(),n=fe(),l=kn(),i=E(),d=E(),f=E(),{flags:m}=di(),v=y(()=>t.get("Comfy.Sidebar.Size")==="small"),h=y(()=>t.get("Comfy.Sidebar.Location")),g=y(()=>t.get("Comfy.Sidebar.Style")),b=y(()=>t.get("Comfy.UI.TabBarLayout")==="Integrated"),S=y(()=>w.value||_.value||g.value==="connected"),k=y(()=>o.getSidebarTabs()),w=y(()=>o.sidebarTab.activeSidebarTab),C=a(async V=>{const B=Le(),D=V.id==="node-library",U=V.id==="model-library",j=V.id==="workflows",W=V.id==="assets";D?B?.trackUiButtonClicked({button_id:"sidebar_tab_node_library_selected"}):U?B?.trackUiButtonClicked({button_id:"sidebar_tab_model_library_selected"}):j?B?.trackUiButtonClicked({button_id:"sidebar_tab_workflows_selected"}):W&&B?.trackUiButtonClicked({button_id:"sidebar_tab_assets_media_selected"}),await r.commands.find(F=>F.id===`Workspace.ToggleSidebarTab.${V.id}`)?.function?.()},"onTabClick"),T=_u(),I=a(V=>{const B=T.getKeybindingByCommandId(`Workspace.ToggleSidebarTab.${V.id}`);return B?` (${B.combo.toString()})`:""},"getTabTooltipSuffix"),_=E(!1),N=y(()=>ae("sidebar-item-group flex flex-col items-center overflow-hidden flex-shrink-0",!S.value&&"rounded-lg shadow-interface pointer-events-auto")),$=ca(()=>{if(!i.value||!d.value||!f.value)return;const V=i.value.clientHeight,B=d.value.scrollHeight+f.value.scrollHeight;_.value?_.value=V<B+Iw:_.value=V<B+Nw},16);return Re(()=>{if(!i.value)return;const V=Vs(i.value,$);$(),rt(()=>{V.stop()}),ie([v,h],async()=>{n.canvas&&(h.value==="left"?(await Ue(),n.canvas.fpsInfoLocation=[i.value?.getBoundingClientRect()?.right,null]):n.canvas.fpsInfoLocation=null,n.canvas.setDirty(!1,!0))},{immediate:!0})}),(V,B)=>(p(),x("nav",{ref_key:"sideToolbarRef",ref:i,class:Q(["side-tool-bar-container flex h-full flex-col items-center bg-transparent [.floating-sidebar]:-mr-2",{"small-sidebar":v.value,"connected-sidebar pointer-events-auto":S.value,"floating-sidebar":!S.value,"overflowing-sidebar":_.value,"border-r border-[var(--interface-stroke)] shadow-interface":S.value}])},[c("div",{class:Q(_.value?"side-tool-bar-container overflow-y-auto":"flex flex-col h-full")},[c("div",{ref_key:"topToolbarRef",ref:d,class:Q(N.value)},[L(dw),(p(!0),x(Z,null,ye(k.value,D=>(p(),O(Ot,{key:D.id,icon:D.icon,"icon-badge":D.iconBadge,tooltip:D.tooltip,"tooltip-suffix":I(D),label:D.label||D.title,"is-small":v.value,selected:D.id===w.value?.id,class:Q(D.id+"-tab-button"),onClick:a(U=>C(D),"onClick")},null,8,["icon","icon-badge","tooltip","tooltip-suffix","label","is-small","selected","class","onClick"]))),128)),L(Er)],2),c("div",{ref_key:"bottomToolbarRef",ref:f,class:Q(["mt-auto",N.value])},[u(s).isMultiUserServer?(p(),O(xw,{key:0,"is-small":v.value},null,8,["is-small"])):A("",!0),b.value?A("",!0):(p(),O(Cw,{key:1,"is-small":v.value},null,8,["is-small"])),L(hw,{"is-small":v.value},null,8,["is-small"]),L(_w,{"is-small":v.value},null,8,["is-small"]),L(bw,{"is-small":v.value},null,8,["is-small"]),u(l).hasSeenLinear||u(m).linearToggleEnabled?(p(),O(Ar,{key:2})):A("",!0)],2)],2),L(sb,{"is-small":v.value},null,8,["is-small"])],2))}}),$w=Be(Pw,[["__scopeId","data-v-38c1e769"]]);const Mw=uo("topbarBadge",()=>{const e=fn();return{badges:y(()=>e.extensions.flatMap(o=>o.topbarBadges??[]))}});var Dw={class:"flex h-full shrink-0 items-center"},Lw=q({__name:"TopbarBadges",props:{reverseOrder:{type:Boolean,default:!1},noPadding:{type:Boolean,default:!1}},setup(e){const o=un(pa),t=o.greaterOrEqual("xl"),s=o.greaterOrEqual("lg"),r=y(()=>t.value?"full":s.value?"compact":"icon-only"),n=Mw();return(l,i)=>(p(),x("div",Dw,[(p(!0),x(Z,null,ye(u(n).badges,d=>(p(),O(Qu,{key:d.text,badge:d,"display-mode":r.value,"reverse-order":l.reverseOrder,"no-padding":l.noPadding},null,8,["badge","display-mode","reverse-order","no-padding"]))),128))]))}}),Vr=Lw,Aw={class:"relative inline-flex items-center justify-center size-[1em]"},Ew=q({__name:"OverlayIcon",props:{mainIcon:{},subIcon:{},positionX:{default:"right"},positionY:{default:"bottom"},offsetX:{default:0},offsetY:{default:0},subIconScale:{default:.6}},setup(e){const o=["-1px -1px 0 rgba(0, 0, 0, 0.7)","1px -1px 0 rgba(0, 0, 0, 0.7)","-1px 1px 0 rgba(0, 0, 0, 0.7)","1px 1px 0 rgba(0, 0, 0, 0.7)","-1px 0 0 rgba(0, 0, 0, 0.7)","1px 0 0 rgba(0, 0, 0, 0.7)","0 -1px 0 rgba(0, 0, 0, 0.7)","0 1px 0 rgba(0, 0, 0, 0.7)"].join(", "),t=y(()=>({fontSize:`${e.subIconScale}em`,textShadow:o,...e.offsetX!==0&&{[e.positionX==="left"?"left":"right"]:`${e.offsetX}px`},...e.offsetY!==0&&{[e.positionY==="top"?"top":"bottom"]:`${e.offsetY}px`}}));return(s,r)=>(p(),x("span",Aw,[c("i",{class:Q([s.mainIcon,"text-[1em]"])},null,2),c("i",{class:Q(u(ae)(s.subIcon,"absolute leading-none pointer-events-none",s.positionX==="left"?"left-0":"right-0",s.positionY==="top"?"top-0":"bottom-0")),style:be(t.value)},null,6)]))}}),Vw=Ew,Ow={class:"not-md:hidden"},Rw={key:0,class:"absolute top-[7px] right-[7px] size-1.5 rounded-full bg-[#ff3b30]"},Ww=q({__name:"TopMenuHelpButton",setup(e){const{shouldShowRedDot:o,toggleHelpCenter:t}=$n("topbar");return(s,r)=>(p(),O(X,{class:"comfy-help-center-btn relative text-base-foreground",variant:"textonly",onClick:u(t)},{default:M(()=>[c("div",Ow,R(s.$t("menu.helpAndFeedback")),1),r[0]||(r[0]=c("i",{class:"icon-[lucide--circle-help] ml-0.5"},null,-1)),u(o)?(p(),x("span",Rw)):A("",!0)]),_:1},8,["onClick"]))}}),Bw=Ww,zw={class:"workflow-preview-content"},Uw={key:0,class:"workflow-preview-thumbnail relative"},Fw=["src"],Gw={class:"workflow-preview-footer"},Hw={class:"workflow-preview-name"},jw=250,qw=q({__name:"WorkflowTabPopover",props:{workflowFilename:{},thumbnailUrl:{},isActiveTab:{type:Boolean}},setup(e,{expose:o}){const{thumbnailUrl:t,isActiveTab:s}=fl(e),r=E(null),n=E(null);let l=null,i=null;const d=Pl(),f=a(g=>{l&&(clearTimeout(l),l=null),i&&(clearTimeout(i),i=null),i=setTimeout(async()=>{if(r.value&&n.value){r.value.show(g,n.value),await Ue();const b=document.querySelector(`.workflow-popover-fade[data-popover-id="${d}"]`);if(b){const S=n.value.getBoundingClientRect().left,k=b.getBoundingClientRect().width,w=k/2;let C=S-w,T=0;if(C<0)T=C-8,C=8;else if(C+k>window.innerWidth){const I=window.innerWidth-k-16;T=C-I,C=I}T+w<0&&(T=-w+24),b.style.left=`${C}px`,b.style.setProperty("--shift",`${T}px`)}}},200)},"showPopover"),m=a(()=>{},"cancelHidePopover"),v=a(()=>{i&&(clearTimeout(i),i=null),l=setTimeout(()=>{r.value&&r.value.hide()},100)},"hidePopover");return o({showPopover:f,hidePopover:v,togglePopover:a(g=>{r.value&&r.value.toggle(g)},"togglePopover")}),(g,b)=>(p(),x(Z,null,[c("div",{ref_key:"positionRef",ref:n,class:"absolute bottom-0 left-1/2 -translate-x-1/2"},null,512),L(u(wt),{ref_key:"popoverRef",ref:r,"append-to":"body",pt:{root:{class:"workflow-popover-fade fit-content","data-popover-id":u(d)}},onMouseenter:m,onMouseleave:v},{default:M(()=>[c("div",zw,[u(t)&&!u(s)?(p(),x("div",Uw,[c("img",{src:u(t),class:"block h-[200px] rounded-lg object-cover p-2",style:be({width:`${jw}px`})},null,12,Fw)])):A("",!0),c("div",Gw,[c("span",Hw,R(g.workflowFilename),1)])])]),_:1},8,["pt"])],64))}}),Kw=Be(qw,[["__scopeId","data-v-4c13cb50"]]),Qw={key:0,class:"icon-[lucide--panels-top-left] bg-primary-background"},Yw={class:"workflow-label inline-block max-w-[150px] truncate text-sm"},Jw={class:"relative"},Xw={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"},Zw=q({__name:"WorkflowTab",props:{workflowOption:{}},setup(e){const o=e,{t}=ue(),s=st(),r=Ve(),n=ne(),l=E(null),i=E(null),d=Ti(),f=y(()=>n.get("Comfy.Workflow.AutoSave")),m=y(()=>n.get("Comfy.Workflow.AutoSaveDelay")),v=y(()=>s.shiftDown?!1:o.workflowOption.workflow.isPersisted?o.workflowOption.workflow.isModified?f.value==="off"||f.value==="after delay"&&m.value>3e3:!1:!0),h=y(()=>r.activeWorkflow?.key===o.workflowOption.workflow.key),g=y(()=>d.getThumbnail(o.workflowOption.workflow.key)),b=a(I=>{i.value?.showPopover(I)},"handleMouseEnter"),S=a(()=>{i.value?.hidePopover()},"handleMouseLeave"),k=a(I=>{i.value?.togglePopover(I)},"handleClick"),w=a(async I=>{for(const _ of I)if(!await nt().closeWorkflow(_.workflow,{warnIfUnsaved:!s.shiftDown,hint:t("sideToolbar.workflowTab.dirtyCloseHint")}))break},"closeWorkflows"),C=a(async I=>{await w([I])},"onCloseWorkflow"),T=a(()=>l.value,"tabGetter");return eu(T,{getInitialData:a(()=>({workflowKey:o.workflowOption.workflow.key}),"getInitialData")}),Ks(T,{getData:a(()=>({workflowKey:o.workflowOption.workflow.key}),"getData"),onDrop:a(I=>{const _=r.openWorkflows.findIndex($=>$.key===I.source.data.workflowKey),N=r.openWorkflows.findIndex($=>$.key===I.location.current.dropTargets[0]?.data.workflowKey);_!==N&&r.reorderWorkflows(_,N)},"onDrop")}),kt(()=>{i.value?.hidePopover()}),(I,_)=>(p(),x(Z,null,[c("div",lt({ref_key:"workflowTabRef",ref:l,class:"workflow-tab group flex gap-2 p-2"},I.$attrs,{onMouseenter:b,onMouseleave:S,onClick:k}),[I.workflowOption.workflow.activeState?.extra?.linearMode?(p(),x("i",Qw)):A("",!0),c("span",Yw,R(I.workflowOption.workflow.filename),1),c("div",Jw,[v.value?(p(),x("span",Xw,"•")):A("",!0),L(X,{class:"close-button invisible w-auto p-0",variant:"muted-textonly",size:"icon-sm","aria-label":u(t)("g.close"),onClick:_[0]||(_[0]=ke(N=>C(I.workflowOption),["stop"]))},{default:M(()=>_[1]||(_[1]=[c("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])],16),L(Kw,{ref_key:"popoverRef",ref:i,"workflow-filename":I.workflowOption.workflow.filename,"thumbnail-url":g.value,"is-active-tab":h.value},null,8,["workflow-filename","thumbnail-url","is-active-tab"])],64))}}),e1=Zw,t1=q({__name:"WorkflowOverflowMenu",props:{workflows:{},activeWorkflow:{}},setup(e){const o=e,t=E(null),s=nt(),r=y(()=>o.workflows.map(n=>({label:n.filename,icon:o.activeWorkflow?.key===n.key?"pi pi-check":void 0,command:a(()=>{s.openWorkflow(n)},"command")})));return(n,l)=>{const i=Pe("tooltip");return p(),x("div",null,[ce((p(),O(X,{class:"rounded-none h-full w-auto aspect-square",variant:"muted-textonly",size:"icon","aria-label":n.$t("g.moreWorkflows"),onClick:l[0]||(l[0]=d=>t.value?.toggle(d))},{default:M(()=>l[1]||(l[1]=[c("i",{class:"pi pi-ellipsis-h"},null,-1)])),_:1},8,["aria-label"])),[[i,{value:n.$t("g.moreWorkflows"),showDelay:300}]]),L(u(Ms),{ref_key:"menu",ref:t,model:r.value,popup:!0,class:"max-h-[40vh] overflow-auto"},null,8,["model"])])}}}),o1=t1,a1={key:3,class:"ml-auto flex shrink-0 items-center gap-2 px-2"},n1={key:4,class:"window-actions-spacer app-drag shrink-0"},s1=q({__name:"WorkflowTabs",props:{class:{}},setup(e){const o=e,{t}=ue(),s=ne(),r=st(),n=Ve(),l=nt(),i=Ce(),{isLoggedIn:d}=fo(),f=y(()=>s.get("Comfy.UI.TabBarLayout")==="Integrated"),m=E(),v=E(),h=E(null),g=E(!1),b=E(!1),S=E(!1),k=Xe(),w=a(K=>({value:K.path,workflow:K}),"workflowToOption"),C=y(()=>n.openWorkflows.map(w)),T=y(()=>n.activeWorkflow?w(n.activeWorkflow):null),I=a(async K=>{K&&T.value?.value!==K.value&&await l.openWorkflow(K.workflow)},"onWorkflowChange"),_=a(async K=>{for(const H of K)if(!await l.closeWorkflow(H.workflow,{warnIfUnsaved:!r.shiftDown}))break},"closeWorkflows"),N=a(async K=>{await _([K])},"onCloseWorkflow"),$=a((K,H)=>{m.value=H,v.value.show(K)},"showContextMenu"),{menuItems:V}=wr(()=>i.execute("Comfy.RenameWorkflow"),{includeDelete:!1,workflow:y(()=>m.value?.workflow??null)}),B=y(()=>{const K=m.value;if(!K)return[];const H=C.value.findIndex(J=>J.workflow===K.workflow);return[...V.value,{label:t("tabMenu.closeTab"),icon:"pi pi-times",command:a(()=>N(K),"command")},{label:t("tabMenu.closeTabsToLeft"),overlayIcon:{mainIcon:"pi pi-times",subIcon:"pi pi-arrow-left",positionX:"right",positionY:"bottom",subIconScale:.5},command:a(()=>_(C.value.slice(0,H)),"command"),disabled:H<=0},{label:t("tabMenu.closeTabsToRight"),overlayIcon:{mainIcon:"pi pi-times",subIcon:"pi pi-arrow-right",positionX:"right",positionY:"bottom",subIconScale:.5},command:a(()=>_(C.value.slice(H+1)),"command"),disabled:H===C.value.length-1},{label:t("tabMenu.closeOtherTabs"),overlayIcon:{mainIcon:"pi pi-times",subIcon:"pi pi-arrows-h",positionX:"right",positionY:"bottom",subIconScale:.5},command:a(()=>_([...C.value.slice(H+1),...C.value.slice(0,H)]),"command"),disabled:C.value.length<=1}]}),D=a(K=>{const H=K.currentTarget,J=K.deltaX||K.deltaY;H.scroll({left:H.scrollLeft+J})},"handleWheel"),U=y(()=>h.value?.querySelector(".p-scrollpanel-content")??null),j=a(K=>{const H=U.value;H&&H.scrollBy({left:K*20})},"scroll"),W=a(async(K={})=>{if(!T.value)return;K.waitForDom!==!1&&await Ue();const H=h.value;if(!H)return;const J=H.querySelector(".p-togglebutton-checked");J&&J.scrollIntoView({block:"nearest",inline:"nearest"})},"ensureActiveTabVisible");ie(()=>n.activeWorkflow,()=>{W()},{immediate:!0});let F=null,G=null,z=null;return ie(U,(K,H,J)=>{if(G?.(),z?.(),F?.dispose(),!K)return;const te=rn(K);G=ie([()=>te.arrivedState.left,()=>te.arrivedState.right],([he,$e])=>{b.value=!he,S.value=!$e},{immediate:!0}),F=_r(K),z=ie(F.isOverflowing,he=>{g.value=he,he&&Ue(()=>{te.measure(),W({waitForDom:!1})})},{immediate:!0}),J(()=>{G?.(),z?.(),F?.dispose()})},{immediate:!0}),Us(()=>{F?.disposed.value||F?.checkOverflow()}),(K,H)=>{const J=Pe("tooltip");return p(),x("div",{ref_key:"containerRef",ref:h,class:Q(["workflow-tabs-container flex h-full max-w-full flex-auto flex-row overflow-hidden",{"workflow-tabs-container-desktop":u(k)}])},[g.value?(p(),O(X,{key:0,variant:"muted-textonly",size:"icon",class:"overflow-arrow overflow-arrow-left h-full w-auto aspect-square","aria-label":K.$t("g.scrollLeft"),disabled:!b.value,onMousedown:H[0]||(H[0]=te=>u(tn)(te,()=>j(-1)))},{default:M(()=>H[3]||(H[3]=[c("i",{class:"icon-[lucide--chevron-left] size-full"},null,-1)])),_:1},8,["aria-label","disabled"])):A("",!0),L(u(tl),{class:"no-drag overflow-hidden","pt:content":{class:"p-0 w-full flex",onwheel:D},"pt:bar-x":"h-1"},{default:M(()=>[L(u($s),{class:Q(["workflow-tabs bg-transparent",o.class]),"model-value":T.value,options:C.value,"option-label":"label","data-key":"value","onUpdate:modelValue":I},{option:M(({option:te})=>[L(e1,{"workflow-option":te,onContextmenu:a(he=>$(he,te),"onContextmenu"),onMouseup:ke(he=>N(te),["middle"])},null,8,["workflow-option","onContextmenu","onMouseup"])]),_:1},8,["class","model-value","options"])]),_:1},8,["pt:content"]),g.value?(p(),O(X,{key:1,variant:"muted-textonly",size:"icon",class:"overflow-arrow overflow-arrow-right h-full w-auto aspect-square","aria-label":K.$t("g.scrollRight"),disabled:!S.value,onMousedown:H[1]||(H[1]=te=>u(tn)(te,()=>j(1)))},{default:M(()=>H[4]||(H[4]=[c("i",{class:"icon-[lucide--chevron-right] size-full"},null,-1)])),_:1},8,["aria-label","disabled"])):A("",!0),g.value?(p(),O(o1,{key:2,workflows:u(n).openWorkflows,"active-workflow":u(n).activeWorkflow},null,8,["workflows","active-workflow"])):A("",!0),ce((p(),O(X,{class:"new-blank-workflow-button no-drag shrink-0 rounded-none h-full w-auto aspect-square",variant:"muted-textonly",size:"icon","aria-label":K.$t("sideToolbar.newBlankWorkflow"),onClick:H[2]||(H[2]=()=>u(i).execute("Comfy.NewBlankWorkflow"))},{default:M(()=>H[5]||(H[5]=[c("i",{class:"pi pi-plus"},null,-1)])),_:1},8,["aria-label"])),[[J,{value:K.$t("sideToolbar.newBlankWorkflow"),showDelay:300}]]),f.value?(p(),x("div",a1,[L(Bw),u(d)?(p(),O(kr,{key:0,"show-arrow":!1,compact:"",class:"shrink-0 p-1"})):u(k)?(p(),O(Cr,{key:1,class:"p-1"})):A("",!0)])):A("",!0),L(u(As),{ref_key:"menu",ref:v,model:B.value},{itemicon:M(({item:te})=>[te.overlayIcon?(p(),O(Vw,Il(lt({key:0},te.overlayIcon)),null,16)):te.icon?(p(),x("i",{key:1,class:Q(te.icon)},null,2)):A("",!0)]),_:1},8,["model"]),u(k)?(p(),x("div",n1)):A("",!0)],2)}}}),Or=Be(s1,[["__scopeId","data-v-09158161"]]);function r1(){const e=E();function o(s){s?.graph&&(t(),e.value=Ae.onChange(r=>{for(const n of r.nodeIds){const l=Ae.getNodeLayoutRef(n).value;if(!l)continue;const i=s.graph?.getNodeById(parseInt(n));i&&((i.pos[0]!==l.position.x||i.pos[1]!==l.position.y)&&(i.pos[0]=l.position.x,i.pos[1]=l.position.y),(i.size[0]!==l.size.width||i.size[1]!==l.size.height)&&i.setSize([l.size.width,l.size.height]))}s.setDirty(!0,!0)}))}a(o,"startSync");function t(){e.value?.(),e.value=void 0}return a(t,"stopSync"),kt(t),{startSync:o,stopSync:t}}a(r1,"useLayoutSync");function l1(){const e=fe(),o=ha(),{shouldRenderVueNodes:t}=la(),s=Je(null),{startSync:r}=r1(),n=a(()=>{const f=Y.canvas?.graph;if(!f||s.value)return;s.value=pg(f);const m=f._nodes.map(v=>({id:v.id.toString(),pos:[v.pos[0],v.pos[1]],size:[v.size[0],Xl(v.size[1])]}));Ae.initializeFromLiteGraph(m);for(const v of f.reroutes.values()){const[h,g]=v.pos,b=v.parentId??void 0,S=Array.from(v.linkIds);o.createReroute(v.id,{x:h,y:g},b,S)}for(const v of f._links.values())o.createLink(v.id,v.origin_id,v.origin_slot,v.target_id,v.target_slot);r(e.canvas)},"initializeNodeManager"),l=a(()=>{if(s.value){try{s.value.cleanup()}catch{}s.value=null}},"disposeNodeManagerAndSyncs");return ie(()=>t.value&&!!Y.canvas?.graph,f=>{f&&(n(),Jn(Y.canvas?.graph?.extra.workflowRendererVersion))},{immediate:!0}),bt(()=>!t.value,()=>{Jn(Y.canvas?.graph?.extra.workflowRendererVersion),l(),Y.canvas?.setDirty(!0,!0)}),ie(()=>t.value,(f,m)=>{f!==m&&Ae.clearAllSlotLayouts()},{immediate:!0,flush:"sync"}),{nodeManager:s,initializeNodeManager:n,disposeNodeManagerAndSyncs:l,setupEmptyGraphListener:a(()=>{const f=Y.canvas?.graph;if(!t.value||s.value||f?._nodes.length!==0)return;const m=f.onNodeAdded;f.onNodeAdded=function(v){f.onNodeAdded=m,t.value&&!s.value&&n(),m&&m.call(this,v)}},"setupEmptyGraphListener"),cleanup:a(()=>{s.value&&(s.value.cleanup(),s.value=null)},"cleanup")}}a(l1,"useVueNodeLifecycleIndividual");const Dn=ga(l1);var i1=.04,ft=a(e=>e*i1,"meshyCreditsToUsd"),u1={minimumFractionDigits:0,maximumFractionDigits:0},ua=a(e=>Au({usd:e,numberOptions:u1}),"formatCreditsValue"),Ln=a(e=>e?"~":"","makePrefix"),An=a(e=>e??"/Run","makeSuffix"),En=a(e=>e?` ${e}`:"","appendNote"),P=a((e,{suffix:o,note:t,approximate:s}={})=>`${Ln(s)}${ua(e)} credits${An(o)}${En(t)}`,"formatCreditsLabel"),pe=a((e,o,{suffix:t,note:s,approximate:r}={})=>{const n=ua(e),l=ua(o),i=n===l?n:`${n}-${l}`;return`${Ln(r)}${i} credits${An(t)}${En(s)}`},"formatCreditsRangeLabel"),Ge=a((e,{suffix:o,note:t,approximate:s,separator:r}={})=>{const n=e.map(l=>ua(l)).join(r??"/");return`${Ln(s)}${n} credits${An(o)}${En(t)}`},"formatCreditsListLabel");function d1(e,o,t=""){try{return e(o)}catch{return t}}a(d1,"safePricingExecution");var Ma=a(e=>{const o=e.widgets?.find(s=>s.name==="duration");if(!o)return P(.0715,{suffix:"/second"});const t=Number(o.value);return P(.0715*(isNaN(t)?5:t))},"calculateRunwayDurationPrice"),Go=a(e=>o=>{const t=o.widgets?.find(r=>r.name==="duration");if(!t)return P(e,{suffix:"/second"});const s=parseFloat(String(t.value));return Number.isFinite(s)?P(e*s):P(e,{suffix:"/second"})},"makeOmniProDurationCalculator"),c1=a(e=>{const o=e.widgets?.find(s=>s.name==="mode");if(!o)return Ge([.07,.112],{suffix:"/second",note:"(std/pro)"});const t=String(o.value).toLowerCase();return t==="pro"?P(.112,{suffix:"/second"}):t==="std"?P(.07,{suffix:"/second"}):Ge([.07,.112],{suffix:"/second",note:"(std/pro)"})},"klingMotionControlPricingCalculator"),Da=a(e=>{const o=e.widgets?.find(i=>i.name==="duration_seconds"),t=e.widgets?.find(i=>i.name==="quality"),s=e.widgets?.find(i=>i.name==="motion_mode");if(!o||!t)return pe(.45,1.2,{note:"(varies with duration, quality & motion mode)"});const r=String(o.value),n=String(t.value),l=String(s?.value);if(r.includes("5")){if(n.includes("1080p")||n.includes("720p")&&l?.includes("fast"))return P(1.2);if(n.includes("720p")&&l?.includes("normal"))return P(.6);if(n.includes("540p")&&l?.includes("fast"))return P(.9);if(n.includes("540p")&&l?.includes("normal"))return P(.45);if(n.includes("360p")&&l?.includes("fast"))return P(.9);if(n.includes("360p")&&l?.includes("normal"))return P(.45)}else if(r.includes("8")){if(n.includes("540p")&&l?.includes("normal"))return P(.9);if(n.includes("540p")&&l?.includes("fast"))return P(1.2);if(n.includes("360p")&&l?.includes("normal"))return P(.9);if(n.includes("360p")&&l?.includes("fast")||n.includes("1080p")&&l?.includes("normal")||n.includes("1080p")&&l?.includes("fast")||n.includes("720p")&&l?.includes("normal")||n.includes("720p")&&l?.includes("fast"))return P(1.2)}return P(.9)},"pixversePricingCalculator"),Ho=a(e=>{const o=e.widgets?.find(T=>T.name==="model"),t=e.widgets?.find(T=>T.name==="duration"),s=e.widgets?.find(T=>T.name==="resolution"),r=e.widgets?.find(T=>T.name==="generate_audio");if(!o||!t||!s)return"Token-based";const n=String(o.value).toLowerCase(),l=String(s.value).toLowerCase(),i=parseFloat(String(t.value)),d=r&&String(r.value).toLowerCase()==="true",f={"seedance-1-5-pro":{"480p":[.12,.12],"720p":[.26,.26],"1080p":[.58,.59]},"seedance-1-0-pro":{"480p":[.23,.24],"720p":[.51,.56],"1080p":[1.18,1.22]},"seedance-1-0-pro-fast":{"480p":[.09,.1],"720p":[.21,.23],"1080p":[.47,.49]},"seedance-1-0-lite":{"480p":[.17,.18],"720p":[.37,.41],"1080p":[.85,.88]}},m=n.includes("seedance-1-5-pro")?"seedance-1-5-pro":n.includes("seedance-1-0-pro-fast")?"seedance-1-0-pro-fast":n.includes("seedance-1-0-pro")?"seedance-1-0-pro":n.includes("seedance-1-0-lite")?"seedance-1-0-lite":"",v=l.includes("1080")?"1080p":l.includes("720")?"720p":l.includes("480")?"480p":"",h=m&&v?f[m]?.[v]:void 0;if(!h)return"Token-based";const[g,b]=h,S=i/10,k=m==="seedance-1-5-pro"&&d?2:1,w=g*S*k,C=b*S*k;return w===C?P(w):pe(w,C)},"byteDanceVideoPricingCalculator"),ms=a(e=>{const o=e.widgets?.find(m=>m.name==="model"),t=e.widgets?.find(m=>m.name==="duration"),s=e.widgets?.find(m=>m.name==="resolution"),r=pe(.04,.24,{suffix:"/second"});if(!o||!t||!s)return r;const n=String(o.value).toLowerCase(),l=String(s.value).toLowerCase(),i=parseFloat(String(t.value)),d={"ltx-2 (pro)":{"1920x1080":.06,"2560x1440":.12,"3840x2160":.24},"ltx-2 (fast)":{"1920x1080":.04,"2560x1440":.08,"3840x2160":.16}}[n];if(!d)return r;const f=d[l];return f?P(f*i):r},"ltxvPricingCalculator"),gs=a(e=>{const o=e.widgets?.find(n=>n.name==="duration"),t=e.widgets?.find(n=>n.name==="generate_audio");if(!o||!t)return pe(.35,1.4,{note:"(varies with duration & audio)"});const s=String(o.value),r=String(t.value).toLowerCase()==="true";return s==="5"?P(r?.7:.35):s==="10"?P(r?1.4:.7):pe(.35,1.4,{note:"(varies with duration & audio)"})},"klingVideoWithAudioPricingCalculator"),Ao={BASIC:new Set(["720x1280","1280x720"]),PRO:new Set(["1024x1792","1792x1024"])},p1=new Set([...Ao.BASIC,...Ao.PRO]);function f1(e,o,t){const s=e?.toLowerCase()??"",r=t?.toLowerCase()??"";if(!o||Number.isNaN(o))return"Set duration (4s / 8s / 12s)";if(!r)return"Set size (720x1280, 1280x720, 1024x1792, 1792x1024)";if(!p1.has(r))return"Invalid size. Must be 720x1280, 1280x720, 1024x1792, or 1792x1024.";if(!s.includes("sora-2-pro")){if(s.includes("sora-2")&&!Ao.BASIC.has(r))return"sora-2 supports only 720x1280 or 1280x720";if(!s.includes("sora-2"))return"Unsupported model"}}a(f1,"validateSora2Selection");function v1(e,o){const t=e?.toLowerCase()??"",s=o?.toLowerCase()??"";return t.includes("sora-2-pro")?Ao.PRO.has(s)?.5:.3:t.includes("sora-2")?.1:Ao.PRO.has(s)?.5:.1}a(v1,"perSecForSora2");function m1(e,o){return P(Number((e*o).toFixed(2)))}a(m1,"formatRunPrice");var g1=a(e=>{const o=a(l=>String(e.widgets?.find(i=>i.name===l)?.value??""),"getWidgetValue"),t=o("model"),s=o("size"),r=Number(e.widgets?.find(l=>["duration","duration_s"].includes(l.name))?.value);if(!t||!s||!r)return"Set model, duration & size";const n=f1(t,r,s);return n||m1(v1(t,s),r)},"sora2PricingCalculator"),La=a((e,o)=>{const t=a(w=>e.widgets?.find(C=>C.name===w),"getWidget"),s=a((w,C)=>{const T=t(w);return!T||T.value===void 0||T.value===null?C:String(T.value)},"getString"),r=a((w,C)=>{const T=t(w);if(!T||T.value===void 0||T.value===null)return C;const I=T.value;if(typeof I=="number")return I!==0;const _=String(I).toLowerCase();return _==="true"?!0:_==="false"?!1:C},"getBool"),n=s("model_version","").toLowerCase();if(n==="")return pe(.1,.65,{note:"(varies with quad, style, texture & quality)"});const l=s("style","None").toLowerCase()!=="none",i=r("texture",!1),d=r("pbr",!1),f=r("quad",!1),m=s("texture_quality","standard").toLowerCase(),v=s("geometry_quality","standard").toLowerCase(),h=m==="detailed",g=v==="detailed",b=i||d;let S;n.includes("v1.4")||b?o==="text"?S=20:S=30:o==="text"?S=10:S=20;let k=S;return l&&(k+=5),f&&(k+=5),h&&(k+=10),g&&(k+=20),P(k*.01)},"calculateTripo3DGenerationPrice"),h1=a(e=>{const o=e.widgets?.find(t=>t.name==="should_texture");return o?P(ft(String(o.value).toLowerCase()==="true"?30:20)):pe(ft(20),ft(30),{note:"(varies with texture)"})},"calculateMeshyImageToModelPrice"),y1=a(e=>{const o=e.widgets?.find(t=>t.name==="should_texture");return o?P(ft(String(o.value).toLowerCase()==="true"?15:5)):pe(ft(5),ft(15),{note:"(varies with texture)"})},"calculateMeshyMultiImageToModelPrice"),hs={FluxProCannyNode:{displayPrice:P(.05)},FluxProDepthNode:{displayPrice:P(.05)},FluxProExpandNode:{displayPrice:P(.05)},FluxProFillNode:{displayPrice:P(.05)},FluxProUltraImageNode:{displayPrice:P(.06)},FluxProKontextProNode:{displayPrice:P(.04)},FluxProKontextMaxNode:{displayPrice:P(.08)},Flux2ProImageNode:{displayPrice:a(e=>{const o=e.widgets?.find(m=>m.name==="width"),t=e.widgets?.find(m=>m.name==="height"),s=Number(o?.value),r=Number(t?.value);if(!Number.isFinite(s)||!Number.isFinite(r)||s<=0||r<=0)return pe(.03,.15);const n=e.inputs?.find(m=>m.name==="images"),l=typeof n?.link<"u"&&n.link!=null,i=1024*1024,d=Math.max(1,Math.floor((s*r+i-1)/i)),f=.03+.015*Math.max(d-1,0);return l?pe(f+.015,f+.12,{approximate:!0}):P(f)},"displayPrice")},Flux2MaxImageNode:{displayPrice:a(e=>{const o=e.widgets?.find(m=>m.name==="width"),t=e.widgets?.find(m=>m.name==="height"),s=Number(o?.value),r=Number(t?.value);if(!Number.isFinite(s)||!Number.isFinite(r)||s<=0||r<=0)return pe(.07,.35);const n=e.inputs?.find(m=>m.name==="images"),l=typeof n?.link<"u"&&n.link!=null,i=1024*1024,d=Math.max(1,Math.floor((s*r+i-1)/i)),f=.07+.03*Math.max(d-1,0);return l?pe(f+.03,f+.24):P(f)},"displayPrice")},OpenAIVideoSora2:{displayPrice:g1},IdeogramV1:{displayPrice:a(e=>{const o=e.widgets?.find(n=>n.name==="num_images"),t=e.widgets?.find(n=>n.name==="turbo");if(!o)return pe(.03,.09,{suffix:" x num_images/Run"});const s=Number(o.value)||1,r=String(t?.value).toLowerCase()==="true"?.0286:.0858;return P(Number((r*s).toFixed(2)))},"displayPrice")},IdeogramV2:{displayPrice:a(e=>{const o=e.widgets?.find(n=>n.name==="num_images"),t=e.widgets?.find(n=>n.name==="turbo");if(!o)return pe(.07,.11,{suffix:" x num_images/Run"});const s=Number(o.value)||1,r=String(t?.value).toLowerCase()==="true"?.0715:.1144;return P(Number((r*s).toFixed(2)))},"displayPrice")},IdeogramV3:{displayPrice:a(e=>{const o=e.widgets?.find(d=>d.name==="rendering_speed"),t=e.widgets?.find(d=>d.name==="num_images"),s=e.inputs?.find(d=>d.name==="character_image"),r=typeof s?.link<"u"&&s.link!=null;if(!o)return pe(.04,.11,{suffix:" x num_images/Run",note:"(varies with rendering speed & num_images)"});const n=Number(t?.value)||1;let l=.0858;const i=String(o.value);return i.toLowerCase().includes("quality")?r?l=.286:l=.1287:i.toLowerCase().includes("default")?r?l=.2145:l=.0858:i.toLowerCase().includes("turbo")&&(r?l=.143:l=.0429),P(Number((l*n).toFixed(2)))},"displayPrice")},KlingCameraControlI2VNode:{displayPrice:P(.49)},KlingCameraControlT2VNode:{displayPrice:P(.14)},KlingDualCharacterVideoEffectNode:{displayPrice:a(e=>{const o=e.widgets?.find(i=>i.name==="mode"),t=e.widgets?.find(i=>i.name==="model_name"),s=e.widgets?.find(i=>i.name==="duration");if(!o||!t||!s)return pe(.14,2.8,{note:"(varies with model, mode & duration)"});const r=String(o.value),n=String(s.value),l=String(t.value);return l.includes("v1-6")||l.includes("v1-5")?r.includes("pro")?n.includes("10")?P(.98):P(.49):n.includes("10")?P(.56):P(.28):l.includes("v1")?r.includes("pro")?n.includes("10")?P(.98):P(.49):n.includes("10")?P(.28):P(.14):P(.14)},"displayPrice")},KlingImage2VideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(i=>i.name==="mode"),t=e.widgets?.find(i=>i.name==="model_name"),s=e.widgets?.find(i=>i.name==="duration");if(!o){if(!t)return pe(.14,2.8,{note:"(varies with model, mode & duration)"});const i=String(t.value);return i.includes("v2-1-master")||i.includes("v2-master")?P(1.4):i.includes("v1-6")||i.includes("v1-5")?P(.28):P(.14)}const r=String(o.value),n=String(s.value),l=String(t.value);return l.includes("v2-5-turbo")?n.includes("10")?P(.7):P(.35):l.includes("v2-1-master")||l.includes("v2-master")?n.includes("10")?P(2.8):P(1.4):l.includes("v2-1")||l.includes("v1-6")||l.includes("v1-5")?r.includes("pro")?n.includes("10")?P(.98):P(.49):n.includes("10")?P(.56):P(.28):l.includes("v1")?r.includes("pro")?n.includes("10")?P(.98):P(.49):n.includes("10")?P(.28):P(.14):P(.14)},"displayPrice")},KlingImageGenerationNode:{displayPrice:a(e=>{const o=e.inputs?.find(i=>i.name==="image")?.link?"image to image":"text to image",t=e.widgets?.find(i=>i.name==="model_name"),s=e.widgets?.find(i=>i.name==="n");if(!t)return pe(.0035,.028,{suffix:" x n/Run",note:"(varies with modality & model)"});const r=String(t.value),n=Number(s?.value)||1;let l=.014;return o.includes("text to image")?r.includes("kling-v1-5")||r.includes("kling-v2")?l=.014:r.includes("kling-v1")&&(l=.0035):o.includes("image to image")&&(r.includes("kling-v1-5")?l=.028:r.includes("kling-v1")&&(l=.0035)),P(l*n)},"displayPrice")},KlingLipSyncAudioToVideoNode:{displayPrice:P(.1,{approximate:!0})},KlingLipSyncTextToVideoNode:{displayPrice:P(.1,{approximate:!0})},KlingSingleImageVideoEffectNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="effect_scene");if(!o)return pe(.28,.49,{note:"(varies with effect scene)"});const t=String(o.value);return t.includes("fuzzyfuzzy")||t.includes("squish")?P(.28):t.includes("dizzydizzy")||t.includes("bloombloom")?P(.49):(t.includes("expansion"),P(.28))},"displayPrice")},KlingStartEndFrameNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="mode");if(!o)return pe(.14,2.8,{note:"(varies with model, mode & duration)"});const t=String(o.value);return t.includes("v2-5-turbo")?t.includes("10")?P(.7):P(.35):t.includes("v2-1")?t.includes("10s")?P(.98):P(.49):t.includes("v2-master")?t.includes("10s")?P(2.8):P(1.4):t.includes("v1-6")?t.includes("pro")?t.includes("10s")?P(.98):P(.49):t.includes("10s")?P(.56):P(.28):t.includes("v1")?t.includes("pro")?t.includes("10s")?P(.98):P(.49):t.includes("10s")?P(.28):P(.14):P(.14)},"displayPrice")},KlingTextToVideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="mode");if(!o)return pe(.14,2.8,{note:"(varies with model, mode & duration)"});const t=String(o.value);return t.includes("v2-5-turbo")?t.includes("10")?P(.7):P(.35):t.includes("v2-1-master")||t.includes("v2-master")?t.includes("10s")?P(2.8):P(1.4):t.includes("v1-6")?t.includes("pro")?t.includes("10s")?P(.98):P(.49):t.includes("10s")?P(.56):P(.28):t.includes("v1")?t.includes("pro")?t.includes("10s")?P(.98):P(.49):t.includes("10s")?P(.28):P(.14):P(.14)},"displayPrice")},KlingVideoExtendNode:{displayPrice:P(.28)},KlingVirtualTryOnNode:{displayPrice:P(.07)},KlingOmniProTextToVideoNode:{displayPrice:Go(.112)},KlingOmniProFirstLastFrameNode:{displayPrice:Go(.112)},KlingOmniProImageToVideoNode:{displayPrice:Go(.112)},KlingOmniProVideoToVideoNode:{displayPrice:Go(.168)},KlingMotionControl:{displayPrice:c1},KlingOmniProEditVideoNode:{displayPrice:P(.168,{suffix:"/second"})},KlingOmniProImageNode:{displayPrice:P(.028)},KlingTextToVideoWithAudio:{displayPrice:gs},KlingImageToVideoWithAudio:{displayPrice:gs},LumaImageToVideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(i=>i.name==="model"),t=e.widgets?.find(i=>i.name==="resolution"),s=e.widgets?.find(i=>i.name==="duration");if(!o||!t||!s)return pe(.2,16.4,{note:"(varies with model, resolution & duration)"});const r=String(o.value),n=String(t.value).toLowerCase(),l=String(s.value);if(r.includes("ray-flash-2")){if(l.includes("5s")){if(n.includes("4k"))return P(3.13);if(n.includes("1080p"))return P(.79);if(n.includes("720p"))return P(.34);if(n.includes("540p"))return P(.2)}else if(l.includes("9s")){if(n.includes("4k"))return P(5.65);if(n.includes("1080p"))return P(1.42);if(n.includes("720p"))return P(.61);if(n.includes("540p"))return P(.36)}}else if(r.includes("ray-2")){if(l.includes("5s")){if(n.includes("4k"))return P(9.11);if(n.includes("1080p"))return P(2.27);if(n.includes("720p"))return P(1.02);if(n.includes("540p"))return P(.57)}else if(l.includes("9s")){if(n.includes("4k"))return P(16.4);if(n.includes("1080p"))return P(4.1);if(n.includes("720p"))return P(1.83);if(n.includes("540p"))return P(1.03)}}else if(r.includes("ray-1-6"))return P(.5);return P(.79)},"displayPrice")},LumaVideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(i=>i.name==="model"),t=e.widgets?.find(i=>i.name==="resolution"),s=e.widgets?.find(i=>i.name==="duration");if(!o||!t||!s)return pe(.2,16.4,{note:"(varies with model, resolution & duration)"});const r=String(o.value),n=String(t.value).toLowerCase(),l=String(s.value);if(r.includes("ray-flash-2")){if(l.includes("5s")){if(n.includes("4k"))return P(3.13);if(n.includes("1080p"))return P(.79);if(n.includes("720p"))return P(.34);if(n.includes("540p"))return P(.2)}else if(l.includes("9s")){if(n.includes("4k"))return P(5.65);if(n.includes("1080p"))return P(1.42);if(n.includes("720p"))return P(.61);if(n.includes("540p"))return P(.36)}}else if(r.includes("ray-2")){if(l.includes("5s")){if(n.includes("4k"))return P(9.11);if(n.includes("1080p"))return P(2.27);if(n.includes("720p"))return P(1.02);if(n.includes("540p"))return P(.57)}else if(l.includes("9s")){if(n.includes("4k"))return P(16.4);if(n.includes("1080p"))return P(4.1);if(n.includes("720p"))return P(1.83);if(n.includes("540p"))return P(1.03)}}else if(r.includes("ray-1-6"))return P(.5);return P(.79)},"displayPrice")},MinimaxImageToVideoNode:{displayPrice:P(.43)},MinimaxTextToVideoNode:{displayPrice:P(.43)},MinimaxHailuoVideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(n=>n.name==="resolution"),t=e.widgets?.find(n=>n.name==="duration");if(!o||!t)return pe(.28,.56,{note:"(varies with resolution & duration)"});const s=String(o.value),r=String(t.value);if(s.includes("768P")){if(r.includes("6"))return P(.28);if(r.includes("10"))return P(.56)}else if(s.includes("1080P")&&r.includes("6"))return P(.49);return P(.43)},"displayPrice")},OpenAIDalle2:{displayPrice:a(e=>{const o=e.widgets?.find(l=>l.name==="size"),t=e.widgets?.find(l=>l.name==="n");if(!o)return pe(.016,.02,{suffix:" x n/Run",note:"(varies with size & n)"});const s=String(o.value),r=Number(t?.value)||1;let n=.02;return s.includes("1024x1024")?n=.02:s.includes("512x512")?n=.018:s.includes("256x256")&&(n=.016),P(Number((n*r).toFixed(3)))},"displayPrice")},OpenAIDalle3:{displayPrice:a(e=>{const o=e.widgets?.find(n=>n.name==="size"),t=e.widgets?.find(n=>n.name==="quality");if(!o||!t)return pe(.04,.12,{note:"(varies with size & quality)"});const s=String(o.value),r=String(t.value);return s.includes("1024x1024")?r.includes("hd")?P(.08):P(.04):s.includes("1792x1024")||s.includes("1024x1792")?r.includes("hd")?P(.12):P(.08):P(.04)},"displayPrice")},OpenAIGPTImage1:{displayPrice:a(e=>{const o=e.widgets?.find(l=>l.name==="quality"),t=e.widgets?.find(l=>l.name==="n");if(!o)return pe(.011,.3,{suffix:" x n/Run",note:"(varies with quality & n)"});const s=String(o.value),r=Number(t?.value)||1;let n=[.046,.07];return s.includes("high")?n=[.167,.3]:s.includes("medium")?n=[.046,.07]:s.includes("low")&&(n=[.011,.02]),r===1?pe(n[0],n[1]):pe(n[0],n[1],{suffix:` x ${r}/Run`})},"displayPrice")},PixverseImageToVideoNode:{displayPrice:Da},PixverseTextToVideoNode:{displayPrice:Da},PixverseTransitionVideoNode:{displayPrice:Da},RecraftCreativeUpscaleNode:{displayPrice:P(.25)},RecraftCrispUpscaleNode:{displayPrice:P(.004)},RecraftGenerateColorFromImageNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="n");if(!o)return P(.04,{suffix:" x n/Run"});const t=Number(o.value)||1;return P(Number((.04*t).toFixed(2)))},"displayPrice")},RecraftGenerateImageNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="n");if(!o)return P(.04,{suffix:" x n/Run"});const t=Number(o.value)||1;return P(Number((.04*t).toFixed(2)))},"displayPrice")},RecraftGenerateVectorImageNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="n");if(!o)return P(.08,{suffix:" x n/Run"});const t=Number(o.value)||1;return P(Number((.08*t).toFixed(2)))},"displayPrice")},RecraftImageInpaintingNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="n");if(!o)return P(.04,{suffix:" x n/Run"});const t=Number(o.value)||1;return P(Number((.04*t).toFixed(2)))},"displayPrice")},RecraftImageToImageNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="n");if(!o)return P(.04,{suffix:" x n/Run"});const t=Number(o.value)||1;return P(Number((.04*t).toFixed(2)))},"displayPrice")},RecraftRemoveBackgroundNode:{displayPrice:P(.01)},RecraftReplaceBackgroundNode:{displayPrice:P(.04)},RecraftTextToImageNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="n");if(!o)return P(.04,{suffix:" x n/Run"});const t=Number(o.value)||1;return P(Number((.04*t).toFixed(2)))},"displayPrice")},RecraftTextToVectorNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="n");if(!o)return P(.08,{suffix:" x n/Run"});const t=Number(o.value)||1;return P(Number((.08*t).toFixed(2)))},"displayPrice")},RecraftVectorizeImageNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="n");if(!o)return P(.01,{suffix:" x n/Run"});const t=Number(o.value)||1;return P(Number((.01*t).toFixed(2)))},"displayPrice")},StabilityStableImageSD_3_5Node:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return pe(.035,.065,{note:"(varies with model)"});const t=String(o.value).toLowerCase();return t.includes("large")?P(.065):(t.includes("medium"),P(.035))},"displayPrice")},StabilityStableImageUltraNode:{displayPrice:P(.08)},StabilityUpscaleConservativeNode:{displayPrice:P(.25)},StabilityUpscaleCreativeNode:{displayPrice:P(.25)},StabilityUpscaleFastNode:{displayPrice:P(.01)},StabilityTextToAudio:{displayPrice:P(.2)},StabilityAudioToAudio:{displayPrice:P(.2)},StabilityAudioInpaint:{displayPrice:P(.2)},VeoVideoGenerationNode:{displayPrice:a(e=>{const o=e.widgets?.find(t=>t.name==="duration_seconds");return o?P(.5*Number(o.value)):pe(2.5,5,{note:"(varies with duration)"})},"displayPrice")},Veo3VideoGenerationNode:{displayPrice:a(e=>{const o=e.widgets?.find(n=>n.name==="model"),t=e.widgets?.find(n=>n.name==="generate_audio");if(!o||!t)return pe(.8,3.2,{note:"(varies with model & audio generation)"});const s=String(o.value),r=String(t.value).toLowerCase()==="true";return s.includes("veo-3.0-fast-generate-001")||s.includes("veo-3.1-fast-generate")?P(r?1.2:.8):s.includes("veo-3.0-generate-001")||s.includes("veo-3.1-generate")?P(r?3.2:1.6):pe(.8,3.2)},"displayPrice")},Veo3FirstLastFrameNode:{displayPrice:a(e=>{const o=e.widgets?.find(d=>d.name==="model"),t=e.widgets?.find(d=>d.name==="generate_audio"),s=e.widgets?.find(d=>d.name==="duration");if(!o||!t||!s)return pe(.4,3.2,{note:"(varies with model & audio generation)"});const r=String(o.value),n=String(t.value).toLowerCase()==="true",l=parseFloat(String(s.value));let i=null;return r.includes("veo-3.1-fast-generate")?i=n?.15:.1:r.includes("veo-3.1-generate")&&(i=n?.4:.2),i===null?pe(.4,3.2):P(i*l)},"displayPrice")},LumaImageNode:{displayPrice:a(e=>{const o=e.widgets?.find(r=>r.name==="model"),t=e.widgets?.find(r=>r.name==="aspect_ratio");if(!o||!t)return pe(.0064,.026,{note:"(varies with model & aspect ratio)"});const s=String(o.value);return s.includes("photon-flash-1")?P(.0027):s.includes("photon-1")?P(.0104):P(.0246)},"displayPrice")},LumaImageModifyNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return pe(.0027,.0104,{note:"(varies with model)"});const t=String(o.value);return t.includes("photon-flash-1")?P(.0027):t.includes("photon-1")?P(.0104):P(.0246)},"displayPrice")},MoonvalleyTxt2VideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return P(1.5);const t=String(o.value);return P(t==="5s"?1.5:t==="10s"?3:1.5)},"displayPrice")},MoonvalleyImg2VideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return P(1.5);const t=String(o.value);return P(t==="5s"?1.5:t==="10s"?3:1.5)},"displayPrice")},MoonvalleyVideo2VideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return P(2.25);const t=String(o.value);return P(t==="5s"?2.25:t==="10s"?4:2.25)},"displayPrice")},RunwayTextToImageNode:{displayPrice:P(.11)},RunwayImageToVideoNodeGen3a:{displayPrice:Ma},RunwayImageToVideoNodeGen4:{displayPrice:Ma},RunwayFirstLastFrameNode:{displayPrice:Ma},Rodin3D_Regular:{displayPrice:P(.4)},Rodin3D_Detail:{displayPrice:P(.4)},Rodin3D_Smooth:{displayPrice:P(.4)},Rodin3D_Sketch:{displayPrice:P(.4)},TripoTextToModelNode:{displayPrice:a(e=>La(e,"text"),"displayPrice")},TripoImageToModelNode:{displayPrice:a(e=>La(e,"image"),"displayPrice")},TripoMultiviewToModelNode:{displayPrice:a(e=>La(e,"multiview"),"displayPrice")},TripoTextureNode:{displayPrice:a(e=>{const o=e.widgets?.find(t=>t.name==="texture_quality");return o?String(o.value).includes("detailed")?P(.2):P(.1):pe(.1,.2,{note:"(varies with quality)"})},"displayPrice")},TripoRigNode:{displayPrice:"$0.25/Run"},TripoConversionNode:{displayPrice:a(e=>{const o=a(n=>e.widgets?.find(l=>l.name===n)?.value,"getWidgetValue"),t=a((n,l)=>{const i=o(n);if(i==null||i==="")return l;if(typeof i=="number")return Number.isFinite(i)?i:l;const d=Number(i);return Number.isFinite(d)?d:l},"getNumber"),s=a((n,l)=>{const i=o(n);if(i==null)return l;if(typeof i=="number")return i!==0;const d=String(i).toLowerCase();return d==="true"?!0:d==="false"?!1:l},"getBool");let r=!1;return s("quad",!1)&&(r=!0),s("force_symmetry",!1)&&(r=!0),s("flatten_bottom",!1)&&(r=!0),s("pivot_to_center_bottom",!1)&&(r=!0),s("with_animation",!1)&&(r=!0),s("pack_uv",!1)&&(r=!0),s("bake",!1)&&(r=!0),s("export_vertex_colors",!1)&&(r=!0),s("animate_in_place",!1)&&(r=!0),t("face_limit",-1)!==-1&&(r=!0),t("texture_size",4096)!==4096&&(r=!0),t("flatten_bottom_threshold",0)!==0&&(r=!0),t("scale_factor",1)!==1&&(r=!0),String(o("texture_format")??"JPEG").toUpperCase()!=="JPEG"&&(r=!0),String(o("part_names")??"").trim().length>0&&(r=!0),String(o("fbx_preset")??"blender").toLowerCase()!=="blender"&&(r=!0),String(o("export_orientation")??"default").toLowerCase()!=="default"&&(r=!0),P((r?10:5)*.01)},"displayPrice")},TripoRetargetNode:{displayPrice:P(.1)},TripoRefineNode:{displayPrice:P(.3)},MeshyTextToModelNode:{displayPrice:P(ft(20))},MeshyRefineNode:{displayPrice:P(ft(10))},MeshyImageToModelNode:{displayPrice:h1},MeshyMultiImageToModelNode:{displayPrice:y1},MeshyRigModelNode:{displayPrice:P(ft(5))},MeshyAnimateModelNode:{displayPrice:P(ft(3))},MeshyTextureNode:{displayPrice:P(ft(10))},GeminiNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return"Token-based";const t=String(o.value);return t.includes("gemini-2.5-flash-preview-04-17")?Ge([3e-4,.0025],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gemini-2.5-flash")?Ge([3e-4,.0025],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gemini-2.5-pro-preview-05-06")?Ge([.00125,.01],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gemini-2.5-pro")?Ge([.00125,.01],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gemini-3-pro-preview")?Ge([.002,.012],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):"Token-based"},"displayPrice")},GeminiImageNode:{displayPrice:P(.039,{suffix:"/Image (1K)",approximate:!0})},GeminiImage2Node:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="resolution");if(!o)return"Token-based";const t=String(o.value);return t.includes("1K")?P(.134,{suffix:"/Image",approximate:!0}):t.includes("2K")?P(.134,{suffix:"/Image",approximate:!0}):t.includes("4K")?P(.24,{suffix:"/Image",approximate:!0}):"Token-based"},"displayPrice")},OpenAIChatNode:{displayPrice:a(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")?Ge([.0011,.0044],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("o1-pro")?Ge([.15,.6],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("o1")?Ge([.015,.06],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("o3-mini")?Ge([.0011,.0044],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("o3")?Ge([.01,.04],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-4o")?Ge([.0025,.01],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-4.1-nano")?Ge([1e-4,4e-4],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-4.1-mini")?Ge([4e-4,.0016],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-4.1")?Ge([.002,.008],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-5-nano")?Ge([5e-5,4e-4],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-5-mini")?Ge([25e-5,.002],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-5")?Ge([.00125,.01],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):"Token-based"},"displayPrice")},ViduTextToVideoNode:{displayPrice:P(.4)},ViduImageToVideoNode:{displayPrice:P(.4)},ViduReferenceVideoNode:{displayPrice:P(.4)},ViduStartEndToVideoNode:{displayPrice:P(.4)},ByteDanceImageNode:{displayPrice:a(e=>{const o=e.widgets?.find(t=>t.name==="model");return o&&String(o.value).includes("seedream-3-0-t2i")?P(.03):"Token-based"},"displayPrice")},ByteDanceImageEditNode:{displayPrice:a(e=>{const o=e.widgets?.find(t=>t.name==="model");return o&&String(o.value).includes("seededit-3-0-i2i")?P(.03):"Token-based"},"displayPrice")},ByteDanceSeedreamNode:{displayPrice:a(e=>{const o=e.widgets?.find(r=>r.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),P(s,{suffix:" x images/Run",approximate:!0})},"displayPrice")},ByteDanceTextToVideoNode:{displayPrice:Ho},ByteDanceImageToVideoNode:{displayPrice:Ho},ByteDanceFirstLastFrameNode:{displayPrice:Ho},ByteDanceImageReferenceNode:{displayPrice:Ho},WanTextToVideoApi:{displayPrice:a(e=>{const o=e.widgets?.find(i=>i.name==="duration"),t=e.widgets?.find(i=>i.name==="size");if(!o||!t)return pe(.05,.15,{suffix:"/second"});const s=parseFloat(String(o.value)),r=String(t.value).toLowerCase(),n=r.includes("1080")?"1080p":r.includes("720")?"720p":r.includes("480")?"480p":r.match(/^\s*(\d{3,4}p)/)?.[1]??"",l={"480p":.05,"720p":.1,"1080p":.15}[n];return isNaN(s)||!l?pe(.05,.15,{suffix:"/second"}):P(Number((l*s).toFixed(2)))},"displayPrice")},WanImageToVideoApi:{displayPrice:a(e=>{const o=e.widgets?.find(l=>l.name==="duration"),t=e.widgets?.find(l=>l.name==="resolution");if(!o||!t)return pe(.05,.15,{suffix:"/second"});const s=parseFloat(String(o.value)),r=String(t.value).trim().toLowerCase(),n={"480p":.05,"720p":.1,"1080p":.15}[r];return isNaN(s)||!n?pe(.05,.15,{suffix:"/second"}):P(Number((n*s).toFixed(2)))},"displayPrice")},WanTextToImageApi:{displayPrice:P(.03)},WanImageToImageApi:{displayPrice:P(.03)},LtxvApiTextToVideo:{displayPrice:ms},LtxvApiImageToVideo:{displayPrice:ms},WanReferenceVideoApi:{displayPrice:a(e=>{const o=e.widgets?.find(d=>d.name==="duration"),t=e.widgets?.find(d=>d.name==="size");if(!o||!t)return pe(.7,1.5,{note:"(varies with size & duration)"});const s=parseFloat(String(o.value)),r=String(t.value).toLowerCase().includes("1080p")?.15:.1,n=2*r,l=5*r,i=s*r;return pe(n+i,l+i)},"displayPrice")},Vidu2TextToVideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(i=>i.name==="duration"),t=e.widgets?.find(i=>i.name==="resolution");if(!o||!t)return pe(.075,.6,{note:"(varies with duration & resolution)"});const s=parseFloat(String(o.value)),r=String(t.value).toLowerCase();let n,l;return r.includes("1080")?(n=.1,l=.05):(n=.075,l=.025),!Number.isFinite(s)||s<=0?pe(.075,.6,{note:"(varies with duration & resolution)"}):P(n+l*(s-1))},"displayPrice")},Vidu2ImageToVideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(f=>f.name==="model"),t=e.widgets?.find(f=>f.name==="duration"),s=e.widgets?.find(f=>f.name==="resolution");if(!o||!t||!s)return pe(.04,1,{note:"(varies with model, duration & resolution)"});const r=String(o.value).toLowerCase(),n=parseFloat(String(t.value)),l=String(s.value).toLowerCase().includes("1080");let i,d;if(r.includes("q2-pro-fast"))i=l?.08:.04,d=l?.02:.01;else if(r.includes("q2-pro"))i=l?.275:.075,d=l?.075:.05;else if(r.includes("q2-turbo"))if(l)i=.175,d=.05;else return n<=1?P(.04):n<=2?P(.05):P(.05+.05*(n-2));else return pe(.04,1,{note:"(varies with model, duration & resolution)"});return!Number.isFinite(n)||n<=0?pe(.04,1,{note:"(varies with model, duration & resolution)"}):P(i+d*(n-1))},"displayPrice")},Vidu2ReferenceVideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(v=>v.name==="duration"),t=e.widgets?.find(v=>v.name==="resolution"),s=e.widgets?.find(v=>v.name==="audio");if(!o)return pe(.125,1.5,{note:"(varies with duration, resolution & audio)"});const r=parseFloat(String(o.value)),n=String(t?.value??"").toLowerCase().includes("1080"),l=s?.value,i=l!=null&&String(l).toLowerCase()!=="false"&&String(l).toLowerCase()!=="none"&&l!=="";let d,f;n?(d=.375,f=.05):(d=.125,f=.025);let m=d;return Number.isFinite(r)&&r>0&&(m=d+f*(r-1)),i&&(m+=.075),P(m)},"displayPrice")},Vidu2StartEndToVideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(f=>f.name==="model"),t=e.widgets?.find(f=>f.name==="duration"),s=e.widgets?.find(f=>f.name==="resolution");if(!o||!t||!s)return pe(.04,1,{note:"(varies with model, duration & resolution)"});const r=String(o.value).toLowerCase(),n=parseFloat(String(t.value)),l=String(s.value).toLowerCase().includes("1080");let i,d;if(r.includes("q2-pro-fast"))i=l?.08:.04,d=l?.02:.01;else if(r.includes("q2-pro"))i=l?.275:.075,d=l?.075:.05;else if(r.includes("q2-turbo"))if(l)i=.175,d=.05;else return!Number.isFinite(n)||n<=1?P(.04):n<=2?P(.05):P(.05+.05*(n-2));else return pe(.04,1,{note:"(varies with model, duration & resolution)"});return!Number.isFinite(n)||n<=0?P(i):P(i+d*(n-1))},"displayPrice")}};const b1=a(()=>({getNodeDisplayPrice:a(s=>{if(!s.constructor?.nodeData?.api_node)return"";const r=hs[s.constructor.nodeData.name];return r?typeof r.displayPrice=="function"?d1(r.displayPrice,s,""):r.displayPrice:""},"getNodeDisplayPrice"),getNodePricingConfig:a(s=>hs[s.constructor.nodeData?.name??""],"getNodePricingConfig"),getRelevantWidgetNames:a(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"],MeshyImageToModelNode:["should_texture"],MeshyMultiImageToModelNode:["should_texture"],GeminiNode:["model"],GeminiImage2Node:["resolution"],OpenAIChatNode:["model"],ByteDanceImageNode:["model"],ByteDanceImageEditNode:["model"],ByteDanceSeedreamNode:["model","sequential_image_generation","max_images"],ByteDanceTextToVideoNode:["model","duration","resolution","generate_audio"],ByteDanceImageToVideoNode:["model","duration","resolution","generate_audio"],ByteDanceFirstLastFrameNode:["model","duration","resolution","generate_audio"],ByteDanceImageReferenceNode:["model","duration","resolution"],WanTextToVideoApi:["duration","size"],WanImageToVideoApi:["duration","resolution"],WanReferenceVideoApi:["duration","size"],LtxvApiTextToVideo:["model","duration","resolution"],LtxvApiImageToVideo:["model","duration","resolution"],Vidu2TextToVideoNode:["model","duration","resolution"],Vidu2ImageToVideoNode:["model","duration","resolution"],Vidu2ReferenceVideoNode:["audio","duration","resolution"],Vidu2StartEndToVideoNode:["model","duration","resolution"]})[s]||[],"getRelevantWidgetNames")}),"useNodePricing");var on=new Image;on.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 w1=a(()=>{function e(n){if(!n.isSubgraphNode())return;n.badges=n.badges.filter(i=>!t(i));const l=o(n.subgraph);l.length>1?n.badges.push(r("Partner Nodes x "+l.length)):n.badges.push(...l)}a(e,"updateSubgraphCredits");function o(n,l=new Set){if(l.has(n.id))return[];l.add(n.id);const i=[];for(const d of n.nodes)i.push(...d.isSubgraphNode()?o(d.subgraph,l):d.badges.filter(f=>t(f)));return i}a(o,"collectCreditsBadges");function t(n){return(typeof n=="function"?n():n).icon?.image===on}a(t,"isCreditsBadge");const s=St();function r(n){const l=s.completedActivePalette.light_theme;return new cn({text:n,iconOptions:{image:on,size:8},fgColor:s.completedActivePalette.colors.litegraph_base.BADGE_FG_COLOR,bgColor:l?Gt("#8D6932",{lightness:.5}):"#8D6932"})}return a(r,"getCreditsBadge"),{getCreditsBadge:r,updateSubgraphCredits:e}},"usePriceBadge"),_1=a((e,o={})=>{const{widgetNames:t,triggerCanvasRedraw:s=!1}=o,r=E({});if(e.widgets){const n=t?e.widgets.filter(i=>t.includes(i.name)):e.widgets,l={};if(n.forEach(i=>{l[i.name]=i.value}),r.value=l,n.forEach(i=>{i.callback=ro(i.callback,()=>{r.value={...r.value,[i.name]:i.value},s&&e.graph?.setDirtyCanvas(!0,!0)})}),t&&t.length>n.length){const i=t.map(d=>n.some(f=>f.name==d)?-1:e.inputs.findIndex(f=>f.name==d)).filter(d=>d>=0);e.onConnectionsChange=ro(e.onConnectionsChange,(d,f,m)=>{i.includes(f)&&(r.value={...r.value,[i[f]]:m},s&&e.graph?.setDirtyCanvas(!0,!0))})}}return n=>kl(r,n)},"useComputedWithWidgetWatch"),k1=a(()=>{const e=ne(),o=fn(),t=St(),s=w1(),r=y(()=>e.get("Comfy.NodeBadge.NodeSourceBadgeMode")),n=y(()=>e.get("Comfy.NodeBadge.NodeIdBadgeMode")),l=y(()=>e.get("Comfy.NodeBadge.NodeLifeCycleBadgeMode")),i=y(()=>e.get("Comfy.NodeBadge.ShowApiPricing"));ie([r,n,l,i],()=>{Y.canvas?.setDirty(!0,!0)});const d=Ct();function f(m,v){return!(v===gt.None||m?.isCoreNode&&v===gt.HideBuiltIn)}a(f,"badgeTextVisible"),Re(()=>{const m=b1();o.registerExtension({name:"Comfy.NodeBadge",nodeCreated(v){v.badgePosition=Hl.TopRight;const h=y(()=>{const g=d.fromLGraphNode(v);return new cn({text:wl.truncate([f(g,n.value)?`#${v.id}`:"",f(g,l.value)?g?.nodeLifeCycleBadgeText??"":"",f(g,r.value)?g?.nodeSource?.badgeText??"":""].filter(b=>b.length>0).join(" "),{length:31}),fgColor:t.completedActivePalette.colors.litegraph_base.BADGE_FG_COLOR,bgColor:t.completedActivePalette.colors.litegraph_base.BADGE_BG_COLOR})});if(v.badges.push(()=>h.value),v.constructor.nodeData?.api_node&&i.value){const g=typeof m.getNodePricingConfig(v)?.displayPrice=="function";let b;const S=a(()=>{const k=m.getNodeDisplayPrice(v);return s.getCreditsBadge(k)},"createBadge");g?b=_1(v,{widgetNames:m.getRelevantWidgetNames(v.constructor.nodeData?.name),triggerCanvasRedraw:!0})(S):b=y(S),v.badges.push(()=>b.value)}},init(){Y.canvas.canvas.addEventListener("litegraph:set-graph",()=>{for(const v of Y.canvas.graph?.nodes??[])s.updateSubgraphCredits(v)}),Y.canvas.canvas.addEventListener("subgraph-converted",v=>s.updateSubgraphCredits(v.detail.subgraphNode))},afterConfigureGraph(){for(const v of Y.canvas.graph?.nodes??[])s.updateSubgraphCredits(v)}})})},"useNodeBadge"),C1=a(e=>{const o=Qs(),t=Ro(),s=nt();Ks(()=>e.value,{getDropEffect:a(r=>r.source.data.type==="tree-explorer-node"?"copy":"move","getDropEffect"),onDrop:a(async r=>{const n=r.location.current.input,l=r.source.data;if(l.type==="tree-explorer-node"){const i=l.data,d=fr().clientPosToCanvasPos([n.clientX,n.clientY]);if(i.data instanceof $u){const f=i.data,m=[...d];m[1]+=ge.NODE_TITLE_HEIGHT,t.addNodeOnGraph(f,{pos:m})}else if(i.data instanceof Uu){const f=i.data,m=d,v=Y.canvas.graph?.getNodeOnPos(m[0],m[1]);let h=null,g=null;if(v){const b=o.getAllNodeProviders(f.directory);for(const S of b)S.nodeDef.name===v.comfyClass&&(g=v,h=S)}if(!g){const b=o.getNodeProvider(f.directory);b&&(g=t.addNodeOnGraph(b.nodeDef,{pos:m}),h=b)}if(g){const b=g.widgets?.find(S=>S.name===h?.key);b&&(b.value=f.file_name)}}else if(i.data instanceof er){const f=i.data;await s.insertWorkflow(f,{position:d})}}},"onDrop")})},"useCanvasDrop"),S1=a(()=>{Zt.install(Ke.prototype,"getCanvasMenuOptions");const{getCanvasMenuOptions:e}=Ke.prototype,o=a(function(...i){const d=e.apply(this,i),f=Y.collectCanvasMenuItems(this);for(const v of f)d.push(v);const m=Zt.extractLegacyItems("getCanvasMenuOptions",this,...i);for(const v of m)d.push(v);for(const v of d)v?.content&&(v.content=Ze(`contextMenu.${v.content}`,v.content));return d},"getCanvasCenterMenuOptions");Ke.prototype.getCanvasMenuOptions=o,Zt.registerWrapper("getCanvasMenuOptions",o,e,Ke.prototype),Zt.install(Ke.prototype,"getNodeMenuOptions");const t=Ke.prototype.getNodeMenuOptions,s=a(function(...i){const d=t.apply(this,i),f=i[0],m=Y.collectNodeMenuItems(f);for(const h of m)d.push(h);const v=Zt.extractLegacyItems("getNodeMenuOptions",this,...i);for(const h of v)d.push(h);return d},"getNodeMenuOptionsWithExtensions");Ke.prototype.getNodeMenuOptions=s,Zt.registerWrapper("getNodeMenuOptions",s,t,Ke.prototype);function r(i,d){if(!i)return;const f=/Convert (.*) to input/,m=/Convert (.*) to widget/,v=Ze("contextMenu.Convert ","Convert "),h=Ze("contextMenu. to input"," to input"),g=Ze("contextMenu. to widget"," to widget");for(const b of i){if(typeof b=="string"||(r(b?.submenu?.options,d),!b?.content))continue;oi(`contextMenu.${b.content}`)&&(b.content=Ze(`contextMenu.${b.content}`,b.content));const S=d.extra||d.parentMenu?.options?.extra,k=b.content?.match(f);if(k){let C=k[1];S?.inputs?.find(T=>{if(T.name!=C)return!1;C=T.label?T.label:T.name}),S?.widgets?.find(T=>{if(T.name!=C)return!1;C=T.label?T.label:T.name}),b.content=v+C+h;continue}const w=b.content?.match(m);if(w){let C=w[1];S?.inputs?.find(T=>{if(T.name!=C)return!1;C=T.label?T.label:T.name}),S?.widgets?.find(T=>{if(T.name!=C)return!1;C=T.label?T.label:T.name}),b.content=v+C+g;continue}}}a(r,"translateMenus");const n=ge.ContextMenu;function l(i,d){return d.title&&(d.title=Ze(`nodeDefs.${Pt(d.title)}.display_name`,d.title)),r(i,d),new n(i,d)}a(l,"ContextMenu$1"),ge.ContextMenu=l,ge.ContextMenu.prototype=n.prototype},"useContextMenuTranslation");var x1=['<meta charset="utf-8"><div><span data-metadata="','"></span></div><span style="white-space:pre-wrap;">Text</span>'];const T1=a(()=>{const e=fe();Oe(document,"copy",o=>{if(Ei(o.target))return;const t=e.canvas;if(t?.selectedItems){const s=t.copyToClipboard(),r=btoa(String.fromCharCode(...Array.from(new TextEncoder().encode(s))));return o.clipboardData?.setData("text/html",x1.join(r)),o.preventDefault(),o.stopImmediatePropagation(),!1}})},"useCopy"),N1=a(()=>{window.LiteGraph=ge,window.LGraph=ri,window.LLink=Ul,window.LGraphNode=_t,window.LGraphGroup=Ht,window.DragAndScale=ii,window.LGraphCanvas=Ke,window.ContextMenu=jl,window.LGraphBadge=cn},"useGlobalLitegraph"),I1=a(()=>{const e=ne(),o=fe();we(()=>{const t=e.get("Comfy.Graph.CanvasInfo");o.canvas&&(o.canvas.show_info=t,o.canvas.draw(!1,!0))}),we(()=>{const t=e.get("Comfy.Graph.ZoomSpeed");o.canvas&&(o.canvas.zoom_speed=t)}),we(()=>{ge.snaps_for_comfy=e.get("Comfy.Node.AutoSnapLinkToSlot")}),we(()=>{ge.snap_highlights_node=e.get("Comfy.Node.SnapHighlightsNode")}),we(()=>{_t.keepAllLinksOnBypass=e.get("Comfy.Node.BypassAllLinksOnDelete")}),we(()=>{ge.middle_click_slot_add_default_node=e.get("Comfy.Node.MiddleClickRerouteNode")}),we(()=>{const t=e.get("Comfy.LinkRenderMode");o.canvas&&(o.canvas.links_render_mode=t,o.canvas.setDirty(!1,!0))}),we(()=>{const t=e.get("LiteGraph.Canvas.MinFontSizeForLOD");o.canvas&&(o.canvas.min_font_size_for_lod=t,o.canvas.setDirty(!0,!0))}),we(()=>{const t=e.get("Comfy.Graph.LinkMarkers"),{canvas:s}=o;s&&(s.linkMarkerShape=t,s.setDirty(!1,!0))}),we(()=>{const t=e.get("LiteGraph.Canvas.MaximumFps"),{canvas:s}=o;s&&(s.maximumFps=t)}),we(()=>{const t=e.get("Comfy.Graph.CtrlShiftZoom"),{canvas:s}=o;s&&(s.dragZoomEnabled=t)}),we(()=>{const t=e.get("Comfy.Graph.LiveSelection"),{canvas:s}=o;s&&(s.liveSelection=t)}),we(()=>{Xo.doubleClickTime=e.get("Comfy.Pointer.DoubleClickTime")}),we(()=>{Xo.bufferTime=e.get("Comfy.Pointer.ClickBufferTime")}),we(()=>{Xo.maxClickDrift=e.get("Comfy.Pointer.ClickDrift")}),we(()=>{ge.CANVAS_GRID_SIZE=e.get("Comfy.SnapToGrid.GridSize")}),we(()=>{ge.alwaysSnapToGrid=e.get("pysssss.SnapToGrid")}),we(()=>{ge.context_menu_scaling=e.get("LiteGraph.ContextMenu.Scaling")}),we(()=>{ge.Reroute.maxSplineOffset=e.get("LiteGraph.Reroute.SplineOffset")}),we(()=>{const t=e.get("Comfy.Canvas.NavigationMode");ge.canvasNavigationMode=t,ge.macTrackpadGestures=t==="standard"}),we(()=>{ge.leftMouseClickBehavior=e.get("Comfy.Canvas.LeftMouseClickBehavior")}),we(()=>{ge.mouseWheelScroll=e.get("Comfy.Canvas.MouseWheelScroll")}),we(()=>{ge.saveViewportWithGraph=e.get("Comfy.EnableWorkflowViewRestore")})},"useLitegraphSettings"),P1=[{id:"Comfy.Memory.AllowManualUnload",name:"Allow manual unload of models and execution cache via user command",type:"hidden",defaultValue:!Fe,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(It),defaultValue:It.CONTEXT_MENU,defaultsByInstallVersion:{"1.24.1":It.SEARCH_BOX}},{id:"Comfy.LinkRelease.ActionShift",category:["LiteGraph","LinkRelease","ActionShift"],name:"Action on link release (Shift)",type:"combo",options:Object.values(It),defaultValue:It.SEARCH_BOX,defaultsByInstallVersion:{"1.24.1":It.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:a(()=>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:a(async(e,o)=>{if(!o)return;const t=ne();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:a(async e=>{const o=ne(),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:a(async e=>{const o=ne(),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:Fe?"hidden":"boolean",defaultValue:!Fe,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:Fe?"hidden":"boolean",defaultValue:!1},{id:"Comfy.ModelLibrary.NameFormat",name:"What name to display in the model library tree view",tooltip:'Select "filename" to render a simplified view of the raw filename (without directory or ".safetensors" extension) in the model list. Select "title" to display the configurable model metadata title.',type:"combo",options:["filename","title"],defaultValue:"title"},{id:"Comfy.Locale",name:"Language",type:"combo",options:[{value:"en",text:"English"},{value:"zh",text:"中文"},{value:"zh-TW",text:"繁體中文"},{value:"ru",text:"Русский"},{value:"ja",text:"日本語"},{value:"ko",text:"한국어"},{value:"fr",text:"Français"},{value:"es",text:"Español"},{value:"ar",text:"عربي"},{value:"tr",text:"Türkçe"},{value:"pt-BR",text:"Português (BR)"},{value:"fa",text:"فارسی"}],defaultValue:a(()=>navigator.language.split("-")[0]||"en","defaultValue")},{id:"Comfy.NodeBadge.NodeSourceBadgeMode",category:["LiteGraph","Node","NodeSourceBadgeMode"],name:"Node source badge mode",type:"combo",options:Object.values(gt),defaultValue:gt.HideBuiltIn},{id:"Comfy.NodeBadge.NodeIdBadgeMode",category:["LiteGraph","Node","NodeIdBadgeMode"],name:"Node ID badge mode",type:"combo",options:[gt.None,gt.ShowAll],defaultValue:gt.None},{id:"Comfy.NodeBadge.NodeLifeCycleBadgeMode",category:["LiteGraph","Node","NodeLifeCycleBadgeMode"],name:"Node life cycle badge mode",type:"combo",options:[gt.None,gt.ShowAll],defaultValue:gt.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:a(e=>{const o=document.getElementById("comfy-dev-save-api-button");o&&(o.style.display=e?"flex":"none")},"onChange")},{id:"Comfy.UI.TabBarLayout",category:["Appearance","General"],name:"Tab Bar Layout",type:"combo",options:["Default","Integrated"],tooltip:'Controls the layout of the tab bar. "Integrated" moves Help and User controls into the tab bar area.',defaultValue:"Default"},{id:"Comfy.UseNewMenu",category:["Comfy","Menu","UseNewMenu"],defaultValue:"Top",name:"Use new menu",type:"combo",options:["Disabled","Top"],tooltip:"Enable the redesigned top menu bar.",migrateDeprecatedValue:a(e=>e==="Floating"||e==="Bottom"?"Top":e,"migrateDeprecatedValue")},{id:"Comfy.Workflow.WorkflowTabsPosition",name:"Opened workflows position",type:"combo",options:["Sidebar","Topbar"],defaultValue:"Topbar",migrateDeprecatedValue:a(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:Fe?4: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:a(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:ge.STRAIGHT_LINK,text:"Straight"},{value:ge.LINEAR_LINK,text:"Linear"},{value:ge.SPLINE_LINK,text:"Spline"},{value:ge.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:Ft.Circle,type:"combo",options:[{value:Ft.None,text:"None"},{value:Ft.Circle,text:"Circle"},{value:Ft.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).
4
+ `))}catch(S){console.error("Error parsing markdown:",S);const k=d.value.content.replace(/\n/g,"<br>");return k.trim()?$t.sanitize(k):$t.sanitize(`<p>${n("whatsNewPopup.noReleaseNotes")}</p>`)}}),h=a(()=>{i.value=!1},"show"),g=a(()=>{i.value=!0,l("whats-new-dismissed")},"hide"),b=a(async()=>{d.value&&await r.handleWhatsNewSeen(d.value.version),g()},"closePopup");return Re(async()=>{r.releases.length||await r.fetchReleases()}),o({show:h,hide:g,closePopup:b}),(S,k)=>f.value?(p(),x("div",by,[c("div",{class:"whats-new-popup",onClick:k[0]||(k[0]=ke(()=>{},["stop"]))},[L(X,{class:"close-button absolute top-2 right-2 z-10 w-8 h-8 p-2 rounded-lg opacity-50","aria-label":S.$t("g.close"),size:"icon-sm",variant:"muted-textonly",onClick:b},{default:M(()=>k[1]||(k[1]=[c("i",{class:"icon-[lucide--x]"},null,-1)])),_:1},8,["aria-label"]),c("div",wy,[c("div",{class:"content-text max-h-96 overflow-y-auto",innerHTML:v.value},null,8,_y)]),c("div",ky,[c("a",{class:"learn-more-link flex items-center gap-2 text-sm font-normal py-1",href:m.value,target:"_blank",rel:"noopener noreferrer",onClick:b},[k[2]||(k[2]=c("i",{class:"icon-[lucide--external-link]"},null,-1)),Ie(" "+R(S.$t("whatsNewPopup.learnMore")),1)],8,Cy),c("div",Sy,[L(X,{class:"h-8",size:"sm",variant:"muted-textonly",onClick:b},{default:M(()=>[Ie(R(S.$t("whatsNewPopup.later")),1)]),_:1})])])])])):A("",!0)}}),Ty=Be(xy,[["__scopeId","data-v-98a9f324"]]),Ny=["width","height"],Iy={"clip-path":"url(#clip0_1099_16244)"},Py=["stroke"],$y=q({__name:"PuzzleIcon",props:{size:{default:16},color:{default:"currentColor"},class:{}},setup(e){const o=y(()=>e.class||"");return(t,s)=>(p(),x("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)},[c("g",Iy,[c("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,Py)]),s[0]||(s[0]=c("defs",null,[c("clipPath",{id:"clip0_1099_16244"},[c("rect",{width:"16",height:"16",fill:"white"})])],-1))],10,Ny))}}),My=$y,Dy=["aria-label"],Ly={class:"w-full"},Ay={class:"flex w-full flex-col gap-2",role:"menubar"},Ey=["onClick","onMouseenter","onMouseleave"],Vy={class:"help-menu-icon-container"},Oy={class:"help-menu-icon"},Ry={key:0,class:"menu-red-dot"},Wy={class:"menu-label"},By={key:0,class:"icon-[lucide--external-link] text-primary w-4 h-4 ml-auto"},zy={key:1,class:"pi pi-chevron-right ml-auto"},Uy={key:0,class:"submenu-divider"},Fy=["onClick"],Gy={class:"menu-label"},Hy={key:0,class:"w-full","data-testid":"whats-new-section"},jy={class:"section-description flex items-center gap-2.5 self-stretch px-8 pt-2 pb-2"},qy=["aria-label"],Ky=["onClick","onKeydown"],Qy={class:"release-content"},Yy={class:"release-title"},Jy=["datetime"],Xy={class:"normal-state"},Zy={class:"hover-state"},eb={key:1,class:"help-menu-item",role:"status","aria-live":"polite"},tb={key:2,class:"help-menu-item",role:"status"},ob=q({__name:"HelpCenterMenuContent",emits:["close"],setup(e,{emit:o}){const t={MINUTE:6e4,HOUR:36e5,DAY:864e5,WEEK:6048e5,MONTH:2592e6,YEAR:31536e6},s={DELAY_MS:100,OFFSET_PX:8,Z_INDEX:10001},{t:r}=ue(),n=lo(),{staticUrls:l,buildDocsUrl:i}=co(),d=Bo(),f=Ce(),m=ne(),v=Le(),h=E(Date.now()),g=o,b=E(!1),S=E(null),k=E({});let w=null;const C=y(()=>d.releases.length>0),T=y(()=>m.get("Comfy.Notification.ShowVersionUpdates")),{shouldShowRedDot:I}=Cn(),{isNewManagerUI:_}=ht(),N=y(()=>[{key:"desktop-guide",type:"item",label:r("helpCenter.desktopUserGuide"),visible:Xe(),action:a(()=>{D("docs",!0),U(i("/installation/desktop",{includeLocale:!0,platform:!0})),g("close")},"action")},{key:"dev-tools",type:"item",label:r("helpCenter.openDevTools"),visible:Xe(),action:a(()=>{J(),g("close")},"action")},{key:"divider-1",type:"divider",visible:Xe()},{key:"reinstall",type:"item",label:r("helpCenter.reinstall"),visible:Xe(),action:a(()=>{te(),g("close")},"action")}].filter(se=>se.visible!==!1)),$=y(()=>!!N.value.length),V=y(()=>B.value.find(se=>se.key==="more")),B=y(()=>{const se=[{key:"feedback",type:"item",icon:"icon-[lucide--clipboard-pen]",label:r("helpCenter.feedback"),action:a(()=>{D("help_feedback",!1),f.execute("Comfy.ContactSupport"),g("close")},"action")},{key:"help",type:"item",icon:"icon-[lucide--message-circle-question]",label:r("helpCenter.help"),action:a(()=>{D("help_feedback",!1),f.execute("Comfy.ContactSupport"),g("close")},"action")},{key:"docs",type:"item",icon:"icon-[lucide--book-open]",label:r("helpCenter.docs"),showExternalIcon:!0,action:a(()=>{D("docs",!0),U(i(Fe?"/get_started/cloud":"/",{includeLocale:!0})),g("close")},"action")},{key:"discord",type:"item",icon:"pi pi-discord",label:"Discord",showExternalIcon:!0,action:a(()=>{D("discord",!0),U(l.discord),g("close")},"action")},{key:"github",type:"item",icon:"icon-[lucide--github]",label:r("helpCenter.github"),showExternalIcon:!0,action:a(()=>{D("github",!0),U(l.github),g("close")},"action")}];return Fe||se.push({key:"manager",type:"item",icon:My,label:r("helpCenter.managerExtension"),showRedDot:I.value,action:a(async()=>{D("manager",!1),await ht().openManager({initialTab:ao.All,showToastOnLegacyError:!1}),g("close")},"action")}),!Xe()&&!Fe&&_.value&&se.push({key:"update-comfyui",type:"item",icon:"icon-[lucide--download]",label:r("helpCenter.updateComfyUI"),action:a(()=>{he(),g("close")},"action")}),se.push({key:"more",type:"item",icon:"",label:r("helpCenter.more"),visible:$.value,action:a(()=>{},"action"),items:N.value}),se}),D=a((se,Se)=>{v?.trackHelpResourceClicked({resource_type:se,is_external:Se,source:"help_center"})},"trackResourceClick"),U=a(se=>{window.open(se,"_blank","noopener,noreferrer")},"openExternalLink"),j=a(()=>{w&&(clearTimeout(w),w=null)},"clearHoverTimeout"),W=a(se=>{const Se=se.getBoundingClientRect(),ve=210,xe=(V.value?.items?.filter(Rt=>Rt.visible!==!1).length||0)*48+16,Te=S.value?.offsetHeight||xe,He=window.innerWidth,je=window.innerHeight;let Ye=Se.top,ot=Se.right+s.OFFSET_PX;return ot+ve>He&&(ot=Se.left-ve-s.OFFSET_PX),Ye+Te>je&&(Ye=Math.max(s.OFFSET_PX,Se.bottom-Te)),Ye<s.OFFSET_PX&&(Ye=s.OFFSET_PX),Ye-=8,{position:"fixed",top:`${Ye}px`,left:`${ot}px`,zIndex:s.Z_INDEX}},"calculateSubmenuPosition"),F=a(se=>{if(!se)return"date";const Se=new Date(se),xe=Math.abs(new Date().getTime()-Se.getTime()),Te=[{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:He,key:je}of Te){const Ye=Math.floor(xe/He);if(Ye>0)return r(`g.relativeTime.${je}`,{count:Ye})}return r("g.relativeTime.now")},"formatReleaseDate"),G=a(async(se,Se)=>{if(se!=="more"||!V.value?.items||!V.value.items.some(xe=>xe.visible!==!1))return;j();const ve=Se.currentTarget;k.value=W(ve),b.value=!0,await Ue(),S.value&&(k.value=W(ve))},"onMenuItemHover"),z=a(se=>{se==="more"&&(w=window.setTimeout(()=>{b.value=!1},s.DELAY_MS))},"onMenuItemLeave"),K=a(()=>{j()},"onSubmenuHover"),H=a(()=>{b.value=!1},"onSubmenuLeave"),J=a(()=>{Xe()&&ko().openDevTools()},"openDevTools"),te=a(()=>{Xe()&&ko().reinstall()},"onReinstall"),he=a(async()=>{const{updateComfyUI:se,rebootComfyUI:Se,error:ve}=cr();n.add({severity:"info",summary:r("helpCenter.updateComfyUIStarted"),detail:r("helpCenter.updateComfyUIStartedDetail"),life:3e3});try{if(await se({is_stable:!0})===null||ve.value){n.add({severity:"error",summary:r("g.error"),detail:ve.value||r("helpCenter.updateComfyUIFailed"),life:5e3});return}n.add({severity:"success",summary:r("helpCenter.updateComfyUISuccess"),detail:r("helpCenter.updateComfyUISuccessDetail"),life:3e3}),await Se()}catch(xe){n.add({severity:"error",summary:r("g.error"),detail:xe instanceof Error?xe.message:r("g.unknownError"),life:5e3})}},"onUpdateComfyUI"),$e=a(se=>{D("release_notes",!0),d.handleShowChangelog(se.version);const Se=pn(se.version);U(`${i("/changelog",{includeLocale:!0})}#${Se}`),g("close")},"onReleaseClick");return Re(async()=>{v?.trackHelpCenterOpened({source:"sidebar"}),C.value||await d.fetchReleases()}),rt(()=>{const se=Math.round((Date.now()-h.value)/1e3);v?.trackHelpCenterClosed({time_spent_seconds:se})}),(se,Se)=>(p(),x("div",{class:"help-center-menu flex flex-col items-start gap-1",role:"menu","aria-label":se.$t("help.helpCenterMenu")},[c("div",Ly,[c("nav",Ay,[(p(!0),x(Z,null,ye(B.value,ve=>ce((p(),x("button",{key:ve.key,type:"button",class:Q(["help-menu-item",{"more-item":ve.key==="more"}]),role:"menuitem",onClick:ve.action,onMouseenter:a(xe=>G(ve.key,xe),"onMouseenter"),onMouseleave:a(xe=>z(ve.key),"onMouseleave")},[c("div",Vy,[c("div",Oy,[typeof ve.icon=="object"?(p(),O(so(ve.icon),{key:0,size:16})):(p(),x("i",{key:1,class:Q(ve.icon)},null,2))]),ve.showRedDot?(p(),x("div",Ry)):A("",!0)]),c("span",Wy,R(ve.label),1),ve.showExternalIcon?(p(),x("i",By)):A("",!0),ve.key==="more"?(p(),x("i",zy)):A("",!0)],42,Ey)),[[tt,ve.visible!==!1]])),128))]),Se[0]||(Se[0]=c("div",{class:"flex h-4 flex-col items-center justify-between self-stretch p-2"},[c("div",{class:"w-full border-b border-interface-menu-stroke"})],-1))]),(p(),O(yt,{to:"body"},[b.value?(p(),x("div",{key:0,ref_key:"submenuRef",ref:S,class:"more-submenu",style:be(k.value),onMouseenter:K,onMouseleave:H},[(p(!0),x(Z,null,ye(V.value?.items,ve=>(p(),x(Z,{key:ve.key},[ve.type==="divider"?ce((p(),x("div",Uy,null,512)),[[tt,ve.visible!==!1]]):ce((p(),x("button",{key:1,type:"button",class:"help-menu-item submenu-item",role:"menuitem",onClick:ve.action},[c("span",Gy,R(ve.label),1)],8,Fy)),[[tt,ve.visible!==!1]])],64))),128))],36)):A("",!0)])),T.value?(p(),x("section",Hy,[c("h3",jy,R(se.$t("helpCenter.whatsNew")),1),C.value?(p(),x("div",{key:0,role:"group","aria-label":se.$t("help.recentReleases")},[(p(!0),x(Z,null,ye(u(d).recentReleases,ve=>(p(),x("article",{key:ve.id||ve.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:a(xe=>$e(ve),"onClick"),onKeydown:[To(xe=>$e(ve),["enter"]),To(ke(xe=>$e(ve),["prevent"]),["space"])]},[Se[1]||(Se[1]=c("i",{class:"help-menu-icon icon-[lucide--package]","aria-hidden":"true"},null,-1)),c("div",Qy,[c("span",Yy,R(se.$t("g.releaseTitle",{package:"Comfy",version:ve.version})),1),c("time",{class:"release-date",datetime:ve.published_at},[c("span",Xy,R(F(ve.published_at)),1),c("span",Zy,R(se.$t("helpCenter.clickToLearnMore")),1)],8,Jy)])],40,Ky))),128))],8,qy)):u(d).isLoading?(p(),x("div",eb,[Se[2]||(Se[2]=c("i",{class:"pi pi-spin pi-spinner help-menu-icon","aria-hidden":"true"},null,-1)),c("span",null,R(se.$t("helpCenter.loadingReleases")),1)])):(p(),x("div",tb,[Se[3]||(Se[3]=c("i",{class:"pi pi-info-circle help-menu-icon","aria-hidden":"true"},null,-1)),c("span",null,R(se.$t("helpCenter.noRecentReleases")),1)]))])):A("",!0)],8,Dy))}}),ab=Be(ob,[["__scopeId","data-v-8ecd06e2"]]),nb=q({__name:"HelpCenterPopups",props:{isSmall:{type:Boolean,default:!1}},setup(e){const{isHelpCenterVisible:o,triggerLocation:t,sidebarLocation:s,closeHelpCenter:r,handleWhatsNewDismissed:n}=$n();return(l,i)=>(p(),x(Z,null,[(p(),O(yt,{to:"#graph-canvas-container"},[u(o)?(p(),x("div",{key:0,class:Q(["help-center-popup",{"sidebar-left":u(t)==="sidebar"&&u(s)==="left","sidebar-right":u(t)==="sidebar"&&u(s)==="right","topbar-right":u(t)==="topbar","small-sidebar":l.isSmall}])},[L(ab,{onClose:u(r)},null,8,["onClose"])],2)):A("",!0)])),(p(),O(yt,{to:"#graph-canvas-container"},[L(yy,{class:Q({"sidebar-left":u(s)==="left","sidebar-right":u(s)==="right","small-sidebar":l.isSmall})},null,8,["class"])])),(p(),O(yt,{to:"#graph-canvas-container"},[L(Ty,{class:Q({"sidebar-left":u(s)==="left","sidebar-right":u(s)==="right","small-sidebar":l.isSmall}),onWhatsNewDismissed:u(n)},null,8,["class","onWhatsNewDismissed"])])),(p(),O(yt,{to:"body"},[u(o)?(p(),x("div",{key:0,class:"help-center-backdrop",onClick:i[0]||(i[0]=(...d)=>u(r)&&u(r)(...d))})):A("",!0)]))],64))}}),sb=Be(nb,[["__scopeId","data-v-2583d84f"]]),rb=["width","height"],lb=q({__name:"ComfyLogo",props:{size:{default:16},color:{default:"currentColor"},class:{},mode:{default:"outline"}},setup(e){const o=y(()=>e.class||""),t=y(()=>({stroke:e.mode==="outline"?e.color:void 0,strokeWidth:e.mode==="outline"?1:void 0,fill:e.mode==="fill"?e.color:"none"}));return(s,r)=>(p(),x("svg",{class:Q(o.value),width:s.size,height:s.size,viewBox:"0 0 18 18",xmlns:"http://www.w3.org/2000/svg"},[c("path",lt({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,rb))}}),ib=lb,ub=q({__name:"CardBottom",props:{fullHeight:{type:Boolean,default:!0}},setup(e){const o=y(()=>ae("flex-1 w-full",e.fullHeight&&"h-full"));return(t,s)=>(p(),x("div",{class:Q(o.value)},[_e(t.$slots,"default")],2))}}),ta=ub,db="flex flex-col overflow-hidden",cb=q({__name:"CardContainer",props:{size:{default:"regular"},variant:{default:"default"},rounded:{default:"md"},customAspectRatio:{},hasBorder:{type:Boolean,default:!0},hasBackground:{type:Boolean,default:!0},hasShadow:{type:Boolean,default:!0},hasCursor:{type:Boolean,default:!0},class:{default:""}},setup(e){const o={none:"rounded-none",md:"rounded",lg:"rounded-lg",xl:"rounded-xl"},t=y(()=>{const s={default:ae(e.hasBackground&&"bg-modal-card-background",e.hasBorder&&"border border-border-default",e.hasShadow&&"shadow-sm",e.hasCursor&&"cursor-pointer"),ghost:ae(e.hasCursor&&"cursor-pointer","p-2 transition-colors duration-200"),outline:ae(e.hasBorder&&"border-2 border-border-subtle",e.hasCursor&&"cursor-pointer","hover:border-border-subtle/50 transition-colors")},r=e.customAspectRatio?`aspect-[${e.customAspectRatio}]`:{mini:"aspect-100/120",compact:"aspect-240/311",regular:"aspect-256/308",portrait:"aspect-256/325",tall:"aspect-256/353"}[e.size];return ae(db,o[e.rounded],s[e.variant],r,e.class)});return(s,r)=>(p(),x("div",{class:Q(t.value)},[_e(s.$slots,"top"),_e(s.$slots,"bottom")],2))}}),oa=cb,pb=q({__name:"CardTop",props:{ratio:{default:"square"},topLeftClass:{},topRightClass:{},centerLeftClass:{},centerRightClass:{},bottomLeftClass:{},bottomRightClass:{}},setup(e){const o=Cl(),t=y(()=>`relative p-0 overflow-hidden ${{square:"aspect-square",landscape:"aspect-48/27"}[e.ratio]}`),s={"top-left":"absolute top-2 left-2 flex flex-wrap justify-start gap-2","top-right":"absolute top-2 right-2 flex flex-wrap justify-end gap-2","center-left":"absolute top-1/2 left-2 flex -translate-y-1/2 flex-wrap justify-start gap-2","center-right":"absolute top-1/2 right-2 flex -translate-y-1/2 flex-wrap justify-end gap-2","bottom-left":"absolute bottom-2 left-2 flex flex-wrap justify-start gap-2","bottom-right":"absolute right-2 bottom-2 flex flex-wrap justify-end gap-2"},r=y(()=>({"top-left":ae(s["top-left"],e.topLeftClass),"top-right":ae(s["top-right"],e.topRightClass),"center-left":ae(s["center-left"],e.centerLeftClass),"center-right":ae(s["center-right"],e.centerRightClass),"bottom-left":ae(s["bottom-left"],e.bottomLeftClass),"bottom-right":ae(s["bottom-right"],e.bottomRightClass)}));return(n,l)=>(p(),x("div",{class:Q(t.value)},[_e(n.$slots,"default",{class:"absolute top-0 left-0 h-full w-full"}),u(o)["top-left"]?(p(),x("div",{key:0,class:Q(r.value["top-left"])},[_e(n.$slots,"top-left")],2)):A("",!0),u(o)["top-right"]?(p(),x("div",{key:1,class:Q(r.value["top-right"])},[_e(n.$slots,"top-right")],2)):A("",!0),u(o)["center-left"]?(p(),x("div",{key:2,class:Q(r.value["center-left"])},[_e(n.$slots,"center-left")],2)):A("",!0),u(o)["center-right"]?(p(),x("div",{key:3,class:Q(r.value["center-right"])},[_e(n.$slots,"center-right")],2)):A("",!0),u(o)["bottom-left"]?(p(),x("div",{key:4,class:Q(r.value["bottom-left"])},[_e(n.$slots,"bottom-left")],2)):A("",!0),u(o)["bottom-right"]?(p(),x("div",{key:5,class:Q(r.value["bottom-right"])},[_e(n.$slots,"bottom-right")],2)):A("",!0)],2))}}),aa=pb,fb="inline-flex shrink-0 items-center justify-center gap-1 rounded px-2 py-1 text-xs font-bold",vb=q({__name:"SquareChip",props:{label:{},variant:{default:"dark"}},setup(e){const o={dark:"bg-zinc-500/40 text-white/90",light:ae("backdrop-blur-[2px] bg-base-background/50 text-base-foreground"),gray:ae("backdrop-blur-[2px] bg-modal-card-tag-background text-base-foreground")},t=y(()=>ae(fb,o[e.variant]));return(s,r)=>(p(),x("div",{class:Q(t.value)},[_e(s.$slots,"icon"),c("span",null,R(s.label),1)],2))}}),na=vb,mb={class:"relative aspect-square w-full overflow-hidden rounded-t-lg select-none"},gb={key:1,class:"flex h-full w-full items-center justify-center"},hb=q({__name:"BaseThumbnail",props:{hoverZoom:{default:4},isHovered:{type:Boolean}},setup(e){const o=E(!1),t=E(null);return Re(()=>{Array.from(t.value?.getElementsByTagName("img")??[]).forEach(s=>{Oe(s,"error",()=>{o.value=!0})})}),(s,r)=>(p(),x("div",mb,[o.value?(p(),x("div",gb,r[0]||(r[0]=[c("img",{src:""+new URL("images/default-template.png",import.meta.url).href,draggable:"false",class:"h-full w-full transform-gpu object-cover transition-transform duration-300 ease-out"},null,-1)]))):(p(),x("div",{key:0,ref_key:"contentRef",ref:t,class:"h-full w-full transform-gpu transition-transform duration-1000 ease-out",style:be(s.isHovered?{transform:`scale(${1+s.hoverZoom/100})`}:void 0)},[_e(s.$slots,"default",{},void 0,!0)],4))]))}}),ba=Be(hb,[["__scopeId","data-v-c216f2c0"]]),yb={class:"flex h-full w-full items-center justify-center p-4",style:{backgroundImage:"url(/assets/images/default-template.png)",backgroundRepeat:"round"}},bb=["src"],wb=q({__name:"AudioThumbnail",props:{src:{}},setup(e){return(o,t)=>(p(),O(ba,null,{default:M(()=>[c("div",yb,[c("audio",{controls:"",class:"relative w-full",src:o.src,onClick:t[0]||(t[0]=ke(()=>{},["stop"]))},null,8,bb)])]),_:1}))}}),_b=wb,kb=50,Cb=q({__name:"CompareSliderThumbnail",props:{baseImageSrc:{},overlayImageSrc:{},alt:{},isHovered:{type:Boolean},isVideo:{type:Boolean}},setup(e){const o=e.isVideo||e.baseImageSrc?.toLowerCase().endsWith(".webp")||e.overlayImageSrc?.toLowerCase().endsWith(".webp")||!1,t=E(kb),s=E(null),{elementX:r,elementWidth:n,isOutside:l}=Ll(s);return ie([()=>e.isHovered,r,n,l],([i,d,f,m])=>{i&&(m||(t.value=d/f*100))}),(i,d)=>(p(),O(ba,{"is-hovered":i.isHovered},{default:M(()=>[L($o,{src:i.baseImageSrc,alt:i.alt,"image-class":u(o)?"w-full h-full object-cover":"max-w-full max-h-64 object-contain"},null,8,["src","alt","image-class"]),c("div",{ref_key:"containerRef",ref:s,class:"absolute inset-0"},[L($o,{src:i.overlayImageSrc,alt:i.alt,"image-class":u(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"]),c("div",{class:"pointer-events-none absolute inset-y-0 z-10 w-0.5 bg-white/30 backdrop-blur-sm",style:be({left:`${t.value}%`})},null,4)],512)]),_:1},8,["is-hovered"]))}}),Sb=Cb,xb=q({__name:"DefaultThumbnail",props:{src:{},alt:{},hoverZoom:{},isHovered:{type:Boolean},isVideo:{type:Boolean}},setup(e){const o=e.isVideo??(e.src?.toLowerCase().endsWith(".webp")||!1);return(t,s)=>(p(),O(ba,{"hover-zoom":t.hoverZoom,"is-hovered":t.isHovered},{default:M(()=>[L($o,{src:t.src,alt:t.alt,"image-class":["transform-gpu transition-transform duration-300 ease-out",u(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"]))}}),Tb=xb,Nb={class:"relative h-full w-full"},Ib={class:"absolute inset-0"},Pb={class:"absolute inset-0 z-10"},$b=q({__name:"HoverDissolveThumbnail",props:{baseImageSrc:{},overlayImageSrc:{},alt:{},isHovered:{type:Boolean},isVideo:{type:Boolean}},setup(e){const o=e.isVideo||e.baseImageSrc?.toLowerCase().endsWith(".webp")||e.overlayImageSrc?.toLowerCase().endsWith(".webp")||!1,t=y(()=>o?"size-full object-cover":"size-full object-contain"),s=y(()=>`size-full transition-opacity duration-300 ${o?"object-cover":"object-contain"} ${e.isHovered?"opacity-100":"opacity-0"}`);return(r,n)=>(p(),O(ba,{"is-hovered":r.isHovered},{default:M(()=>[c("div",Nb,[c("div",Ib,[L($o,{src:r.baseImageSrc,alt:r.alt,"image-class":t.value},null,8,["src","alt","image-class"])]),c("div",Pb,[L($o,{src:r.overlayImageSrc,alt:r.alt,"image-class":s.value},null,8,["src","alt","image-class"])])])]),_:1},8,["is-hovered"]))}}),Mb=$b;function Db(e,o={}){const{itemsPerPage:t=12,initialPage:s=1}=o,r=E(s),n=E(!1),l=Je(new Set([])),i=y(()=>{const g="value"in e?e.value:e;return Array.isArray(g)?g:[]}),d=y(()=>{const g=i.value;if(g.length===0)return[];const b=Array.from(l.value).sort((k,w)=>k-w),S=Math.max(...b,0)*t;return g.slice(0,S)}),f=y(()=>{const g=i.value;if(g.length===0)return!1;const b=Array.from(l.value);return Math.max(...b,0)*t<g.length}),m=y(()=>{const g=i.value;return g.length===0?0:Math.ceil(g.length/t)}),v=a(async()=>{if(n.value||!f.value)return;n.value=!0;const g=Array.from(l.value),b=Math.max(...g,0)+1,S=new Set(l.value);S.add(b),l.value=S,r.value=b,n.value=!1},"loadNextPage");return ie(()=>i.value.length,g=>{g>0&&l.value.size===0&&(l.value=new Set([1]))},{immediate:!0}),{paginatedItems:d,isLoading:n,hasMoreItems:f,currentPage:r,totalPages:m,loadNextPage:v,reset:a(()=>{r.value=s,l.value=new Set([]),n.value=!1,i.value.length>0&&(l.value=new Set([1]))},"reset")}}a(Db,"useLazyPagination");const Lb=uo("templateRanking",()=>{const e=E(),o=a(n=>n/(e.value??n),"normalizeUsageScore"),t=a(n=>{if(!n)return .5;const l=new Date(n);if(isNaN(l.getTime()))return .5;const i=(Date.now()-l.getTime())/(1e3*60*60*24);return Math.max(.1,1/(1+i/90))},"computeFreshness");return{largestUsageScore:e,computeFreshness:t,computeDefaultScore:a((n,l,i=0)=>{const d=(l??5)/10,f=t(n);return o(i)*.5+d*.3+f*.2},"computeDefaultScore"),computePopularScore:a((n,l=0)=>{const i=t(n);return o(l)*.9+i*.1},"computePopularScore")}});var Ab={keys:[{name:"name",weight:.3},{name:"title",weight:.3},{name:"description",weight:.1},{name:"tags",weight:.2},{name:"models",weight:.3}],threshold:.33,includeScore:!0,includeMatches:!0};function Eb(e){const o=ne(),t=Lb(),s=E(""),r=E(o.get("Comfy.Templates.SelectedModels")),n=E(o.get("Comfy.Templates.SelectedUseCases")),l=E(o.get("Comfy.Templates.SelectedRunsOn")),i=E(o.get("Comfy.Templates.SortBy")),d=E(Ab),f=y(()=>{const F="value"in e?e.value:e;return Array.isArray(F)?F:[]}),m=y(()=>new ll(f.value,d.value)),v=y(()=>{const F=new Set;return f.value.forEach(G=>{Array.isArray(G.models)&&G.models.forEach(z=>F.add(z))}),Array.from(F).sort()}),h=y(()=>{const F=new Set;return f.value.forEach(G=>{G.tags&&Array.isArray(G.tags)&&G.tags.forEach(z=>F.add(z))}),Array.from(F).sort()}),g=y(()=>["ComfyUI","External or Remote API"]),b=xl(s,50),S=y(()=>b.value.trim()?m.value.search(b.value).map(F=>F.item):f.value),k=y(()=>r.value.length===0?S.value:S.value.filter(F=>!F.models||!Array.isArray(F.models)?!1:r.value.some(G=>F.models?.includes(G)))),w=y(()=>n.value.length===0?k.value:k.value.filter(F=>!F.tags||!Array.isArray(F.tags)?!1:n.value.some(G=>F.tags?.includes(G)))),C=y(()=>l.value.length===0?w.value:w.value.filter(F=>{const G=F.openSource===!1,z=F.openSource!==!1;return l.value.some(K=>K==="External or Remote API"?G:K==="ComfyUI"?z:!1)})),T=a(F=>typeof F.vram=="number"&&Number.isFinite(F.vram)&&F.vram>0?F.vram:Number.POSITIVE_INFINITY,"getVramMetric");ie(C,F=>{t.largestUsageScore=Math.max(...F.map(G=>G.usage||0))},{immediate:!0});const I=y(()=>{const F=[...C.value];switch(i.value){case"recommended":return F.sort((G,z)=>{const K=t.computeDefaultScore(G.date,G.searchRank,G.usage);return t.computeDefaultScore(z.date,z.searchRank,z.usage)-K});case"popular":return F.sort((G,z)=>{const K=t.computePopularScore(G.date,G.usage);return t.computePopularScore(z.date,z.usage)-K});case"alphabetical":return F.sort((G,z)=>{const K=G.title||G.name||"",H=z.title||z.name||"";return K.localeCompare(H)});case"newest":return F.sort((G,z)=>{const K=new Date(G.date||"1970-01-01");return new Date(z.date||"1970-01-01").getTime()-K.getTime()});case"vram-low-to-high":return F.sort((G,z)=>{const K=T(G),H=T(z);if(K===H){const J=G.title||G.name||"",te=z.title||z.name||"";return J.localeCompare(te)}return K===Number.POSITIVE_INFINITY?1:H===Number.POSITIVE_INFINITY?-1:K-H});case"model-size-low-to-high":return F.sort((G,z)=>{const K=typeof G.size=="number"?G.size:Number.POSITIVE_INFINITY,H=typeof z.size=="number"?z.size:Number.POSITIVE_INFINITY;return K===H?0:K-H});case"default":default:return F}}),_=y(()=>I.value),N=a(()=>{s.value="",r.value=[],n.value=[],l.value=[],i.value="default"},"resetFilters"),$=a(F=>{r.value=r.value.filter(G=>G!==F)},"removeModelFilter"),V=a(F=>{n.value=n.value.filter(G=>G!==F)},"removeUseCaseFilter"),B=a(F=>{l.value=l.value.filter(G=>G!==F)},"removeRunsOnFilter"),D=y(()=>_.value.length),U=y(()=>f.value.length),j=ca(()=>{Le()?.trackTemplateFilterChanged({search_query:s.value||void 0,selected_models:r.value,selected_use_cases:n.value,selected_runs_on:l.value,sort_by:i.value,filtered_count:D.value,total_count:U.value})},500),W=a(async()=>{const F=await Ne.getFuseOptions();F&&(d.value=F)},"loadFuseOptions");return ie([s,r,n,l,i],()=>{(s.value.trim()!==""||r.value.length>0||n.value.length>0||l.value.length>0||i.value!=="default")&&j()},{deep:!0}),Ut(r,F=>{o.set("Comfy.Templates.SelectedModels",F)},{debounce:500,deep:!0}),Ut(n,F=>{o.set("Comfy.Templates.SelectedUseCases",F)},{debounce:500,deep:!0}),Ut(l,F=>{o.set("Comfy.Templates.SelectedRunsOn",F)},{debounce:500,deep:!0}),Ut(i,F=>{o.set("Comfy.Templates.SortBy",F)},{debounce:500}),{searchQuery:s,selectedModels:r,selectedUseCases:n,selectedRunsOn:l,sortBy:i,filteredTemplates:_,availableModels:v,availableUseCases:h,availableRunsOn:g,filteredCount:D,totalCount:U,resetFilters:N,removeModelFilter:$,removeUseCaseFilter:V,removeRunsOnFilter:B,loadFuseOptions:W}}a(Eb,"useTemplateFiltering");function Dr(){const{t:e}=ue(),o=qs(),t=qt(),s=E(null),r=E(null),n=y(()=>o.isLoaded),l=y(()=>o.groupedTemplates),i=a(async()=>(o.isLoaded||await o.loadWorkflowTemplates(),o.isLoaded),"loadTemplates"),d=a(()=>{if(l.value.length>0){const S=l.value[0].modules[0];f(S)}},"selectFirstTemplateCategory"),f=a(S=>(s.value=S,S!==null),"selectTemplateCategory"),m=a((S,k,w="1")=>`${k==="default"?Ne.fileURL(`/templates/${S.name}`):Ne.apiURL(`/workflow_templates/${k}/${S.name}`)}${k==="default"&&w?`-${w}`:""}.${S.mediaSubtype}`,"getTemplateThumbnailUrl"),v=a((S,k)=>{const w=S.title??S.name??`${k} Template`;return k==="default"?S.localizedTitle??w:w},"getTemplateTitle"),h=a(S=>(S.localizedDescription||S.description)?.replace(/[-_]/g," ").trim()??"","getTemplateDescription"),g=a(async(S,k)=>{if(!n.value)return!1;r.value=S;let w;try{if(k==="all"){const T=l.value.find(I=>I.label===e("templateWorkflows.category.ComfyUI Examples","ComfyUI Examples"))?.modules.find(I=>I.moduleName==="all")?.templates.find(I=>I.name===S);if(!T||!T.sourceModule)return!1;k=T.sourceModule}w=await b(S,k);const C=k==="default"?e(`templateWorkflows.template.${S}`,S):S;return Fe&&Le()?.trackTemplate({workflow_name:S,template_source:k}),t.closeDialog(),await Y.loadGraphData(w,!0,!0,C,{openSource:"template"}),!0}catch(C){return console.error("Error loading workflow template:",C),!1}finally{r.value=null}},"loadWorkflowTemplate"),b=a(async(S,k)=>k==="default"?fetch(Ne.fileURL(`/templates/${S}.json`)).then(w=>w.json()):fetch(Ne.apiURL(`/workflow_templates/${k}/${S}.json`)).then(w=>w.json()),"fetchTemplateJson");return{selectedTemplate:s,loadingTemplateId:r,isTemplatesLoaded:n,allTemplateGroups:l,loadTemplates:i,selectFirstTemplateCategory:d,selectTemplateCategory:f,getTemplateThumbnailUrl:m,getTemplateTitle:v,getTemplateDescription:h,loadWorkflowTemplate:g}}a(Dr,"useTemplateWorkflows");function Lr(e={}){const{minWidth:o="15rem",maxWidth:t="1fr",padding:s="0",gap:r="1rem",columns:n}=e;return n!==void 0&&n<1&&console.warn("createGridStyle: columns must be >= 1, defaulting to 1"),{display:"grid",gridTemplateColumns:n?`repeat(${Math.max(1,n??1)}, 1fr)`:`repeat(auto-fill, minmax(${o}, ${t}))`,padding:s,gap:r}}a(Lr,"createGridStyle");var Vb={class:"text-neutral text-base"},Ob={class:"flex gap-2"},Rb={class:"relative flex flex-wrap justify-between gap-2 px-6 pb-4"},Wb={class:"flex flex-wrap gap-2"},Bb={key:0,class:"text-neutral px-6 pt-4 pb-2 text-2xl font-semibold"},zb={key:0,class:"flex h-64 flex-col items-center justify-center text-neutral-500"},Ub={class:"mb-2 text-lg"},Fb={class:"text-sm"},Gb={key:1},Hb={key:0,class:"inline-block h-8 w-48 animate-pulse rounded bg-dialog-surface"},jb={class:"relative h-full w-full overflow-hidden rounded-lg"},qb={class:"flex flex-col gap-2 pt-3"},Kb=["title"],Qb={class:"flex justify-between gap-2"},Yb={class:"flex-1"},Jb=["title"],Xb={key:0,class:"flex flex-col-reverse justify-center"},Zb={key:0,class:"text-sm text-muted"},ew={key:3,class:"mt-6 px-6 text-sm text-muted"},tw=q({__name:"WorkflowTemplateSelectorDialog",props:{onClose:{type:Function}},setup(e){const{t:o}=ue(),t=E(0),s=E(!1);Re(()=>{t.value=Date.now()});const r=Hs(),n=y(()=>[Wl.Local]),l=a(()=>{if(Fe){const ee=Math.floor((Date.now()-t.value)/1e3);Le()?.trackTemplateLibraryClosed({template_selected:s.value,time_spent_seconds:ee})}e.onClose()},"onClose");fa(pr,l);const i=qs(),{loadTemplates:d,loadWorkflowTemplate:f,getTemplateThumbnailUrl:m,getTemplateTitle:v,getTemplateDescription:h}=Dr(),g=a(ee=>ee.sourceModule||"default","getEffectiveSourceModule"),b=a(ee=>{const oe=g(ee);return m(ee,oe,oe==="default"?"1":"")},"getBaseThumbnailSrc"),S=a(ee=>{const oe=g(ee);return m(ee,oe,oe==="default"?"2":"")},"getOverlayThumbnailSrc"),k=a(ee=>{ee.tutorialUrl&&window.open(ee.tutorialUrl,"_blank")},"openTutorial"),w=y(()=>De.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]"}]}]:i.navGroupedTemplates),C=y(()=>Lr()),T=y(()=>i.enhancedTemplates),I=E("all"),{searchQuery:_,selectedModels:N,selectedUseCases:$,selectedRunsOn:V,sortBy:B,filteredTemplates:D,availableModels:U,availableUseCases:j,availableRunsOn:W,filteredCount:F,totalCount:G,resetFilters:z,loadFuseOptions:K}=Eb(y(()=>I.value?i.filterTemplatesByCategory(I.value):T.value)),H=a(ee=>{const oe=I.value==="popular",Tt=B.value==="popular";ee==="nav"?oe&&!Tt?B.value="popular":!oe&&Tt&&(B.value="default"):ee==="sort"&&oe&&!Tt&&(I.value="all")},"coordinateNavAndSort");ie(I,()=>H("nav")),ie(B,()=>H("sort"));const J=y({get(){return N.value.map(ee=>({name:ee,value:ee}))},set(ee){N.value=ee.map(oe=>oe.value)}}),te=y({get(){return $.value.map(ee=>({name:ee,value:ee}))},set(ee){$.value=ee.map(oe=>oe.value)}}),he=y({get(){return V.value.map(ee=>({name:ee,value:ee}))},set(ee){V.value=ee.map(oe=>oe.value)}}),$e=E(null),se=E(null),Se=E([]),ve=E(0),xe=E(""),Te=y(()=>U.value.map(ee=>({name:ee,value:ee}))),He=y(()=>j.value.map(ee=>({name:ee,value:ee}))),je=y(()=>W.value.map(ee=>({name:ee,value:ee}))),Ye=y(()=>J.value.length===0?o("templateWorkflows.modelFilter","Model Filter"):J.value.length===1?J.value[0].name:o("templateWorkflows.modelsSelected",{count:J.value.length})),ot=y(()=>te.value.length===0?o("templateWorkflows.useCaseFilter","Use Case"):te.value.length===1?te.value[0].name:o("templateWorkflows.useCasesSelected",{count:te.value.length})),Rt=y(()=>he.value.length===0?o("templateWorkflows.runsOnFilter","Runs On"):he.value.length===1?he.value[0].name:o("templateWorkflows.runsOnSelected",{count:he.value.length})),mt=y(()=>[{name:o("templateWorkflows.sort.default","Default"),value:"default"},{name:o("templateWorkflows.sort.recommended","Recommended"),value:"recommended"},{name:o("templateWorkflows.sort.popular","Popular"),value:"popular"},{name:o("templateWorkflows.sort.newest","Newest"),value:"newest"},{name:o("templateWorkflows.sort.vramLowToHigh","VRAM Usage (Low to High)"),value:"vram-low-to-high"},{name:o("templateWorkflows.sort.modelSizeLowToHigh","Model Size (Low to High)"),value:"model-size-low-to-high"},{name:o("templateWorkflows.sort.alphabetical","Alphabetical (A-Z)"),value:"alphabetical"}]),Wt=E(null),Qt=y(()=>!_.value.trim()),{paginatedItems:Bt,isLoading:xt,hasMoreItems:dt,loadNextPage:ho,reset:yo}=Db(D,{itemsPerPage:24}),Yt=y(()=>Qt.value?Bt.value:D.value);ed(Wt,()=>{Qt.value&&dt.value&&!xt.value&&ho()}),ie([_,I,B,N,$,V],()=>{yo(),$e.value=null,ve.value++});const de=a(async ee=>{$e.value=ee.name;try{await f(ee.name,g(ee)),s.value=!0,l()}finally{$e.value=null}},"onLoadWorkflow"),me=y(()=>{const ee=w.value.find(oe=>"id"in oe?oe.id===I.value:oe.items?.some(Tt=>Tt.id===I.value));return ee?"id"in ee?ee.label:ee.items?.find(oe=>oe.id===I.value)?.label||o("templateWorkflows.allTemplates","All Templates"):o("templateWorkflows.allTemplates","All Templates")}),{isLoading:De}=Dl(async()=>(await Promise.all([d(),i.loadWorkflowTemplates(),K()]),!0),!1,{immediate:!0}),Me=a(ee=>(ee.includeOnDistributions?.length??0)>0?n.value.some(oe=>ee.includeOnDistributions?.includes(oe)):!0,"isTemplateVisibleOnDistribution");return rt(()=>{Se.value=[]}),(ee,oe)=>{const Tt=Pe("tooltip");return p(),O(dr,{"content-title":ee.$t("templateWorkflows.title","Workflow Templates"),class:"workflow-template-selector-dialog"},{leftPanel:M(()=>[L(vr,{modelValue:I.value,"onUpdate:modelValue":oe[0]||(oe[0]=re=>I.value=re),"nav-items":w.value},{"header-icon":M(()=>oe[8]||(oe[8]=[c("i",{class:"icon-[comfy--template]"},null,-1)])),"header-title":M(()=>[c("span",Vb,R(ee.$t("sideToolbar.templates","Templates")),1)]),_:1},8,["modelValue","nav-items"])]),header:M(()=>[L(rr,{modelValue:u(_),"onUpdate:modelValue":oe[1]||(oe[1]=re=>qe(_)?_.value=re:null),size:"lg",class:"max-w-[384px]"},null,8,["modelValue"])]),"header-right-area":M(()=>[c("div",Ob,[u(F)!==u(G)?(p(),O(X,{key:0,variant:"secondary",size:"lg",onClick:u(z)},{default:M(()=>[oe[9]||(oe[9]=c("i",{class:"icon-[lucide--filter-x]"},null,-1)),c("span",null,R(ee.$t("templateWorkflows.resetFilters","Clear Filters")),1)]),_:1},8,["onClick"])):A("",!0)])]),contentFilter:M(()=>[c("div",Rb,[c("div",Wb,[L(So,{modelValue:J.value,"onUpdate:modelValue":oe[2]||(oe[2]=re=>J.value=re),"search-query":xe.value,"onUpdate:searchQuery":oe[3]||(oe[3]=re=>xe.value=re),class:"w-[250px]",label:Ye.value,options:Te.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:M(()=>oe[10]||(oe[10]=[c("i",{class:"icon-[lucide--cpu]"},null,-1)])),_:1},8,["modelValue","search-query","label","options"]),L(So,{modelValue:te.value,"onUpdate:modelValue":oe[4]||(oe[4]=re=>te.value=re),label:ot.value,options:He.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:M(()=>oe[11]||(oe[11]=[c("i",{class:"icon-[lucide--target]"},null,-1)])),_:1},8,["modelValue","label","options"]),L(So,{modelValue:he.value,"onUpdate:modelValue":oe[5]||(oe[5]=re=>he.value=re),label:Rt.value,options:je.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:M(()=>oe[12]||(oe[12]=[c("i",{class:"icon-[lucide--server]"},null,-1)])),_:1},8,["modelValue","label","options"])]),c("div",null,[L(js,{modelValue:u(B),"onUpdate:modelValue":oe[6]||(oe[6]=re=>qe(B)?B.value=re:null),label:ee.$t("templateWorkflows.sorting","Sort by"),options:mt.value,class:"w-62.5"},{icon:M(()=>oe[13]||(oe[13]=[c("i",{class:"icon-[lucide--arrow-up-down] text-muted-foreground"},null,-1)])),_:1},8,["modelValue","label","options"])])]),u(De)?A("",!0):(p(),x("div",Bb,[c("span",null,R(me.value),1)]))]),content:M(()=>[!u(De)&&u(D).length===0?(p(),x("div",zb,[oe[14]||(oe[14]=c("i",{class:"mb-4 icon-[lucide--search] h-12 w-12 opacity-50"},null,-1)),c("p",Ub,R(ee.$t("templateWorkflows.noResults","No templates found")),1),c("p",Fb,R(ee.$t("templateWorkflows.noResultsHint","Try adjusting your search or filters")),1)])):(p(),x("div",Gb,[u(De)?(p(),x("span",Hb)):A("",!0),(p(),x("div",{key:ve.value,style:be(C.value),"data-testid":"template-workflows-content"},[(p(!0),x(Z,null,ye(u(De)?12:0,re=>(p(),O(oa,{key:`initial-skeleton-${re}`,size:"compact",variant:"ghost",rounded:"lg",class:"hover:bg-base-background"},{top:M(()=>[L(aa,{ratio:"landscape"},{default:M(()=>oe[15]||(oe[15]=[c("div",{class:"h-full w-full animate-pulse bg-dialog-surface"},null,-1)])),_:1})]),bottom:M(()=>[L(ta,null,{default:M(()=>oe[16]||(oe[16]=[c("div",{class:"px-4 py-3"},[c("div",{class:"mb-2 h-6 animate-pulse rounded bg-dialog-surface"}),c("div",{class:"h-4 animate-pulse rounded bg-dialog-surface"})],-1)])),_:1})]),_:2},1024))),128)),(p(!0),x(Z,null,ye(u(De)?[]:Yt.value,re=>ce((p(),O(oa,{key:re.name,ref_for:!0,ref_key:"cardRefs",ref:Se,size:"compact",variant:"ghost",rounded:"lg","data-testid":`template-workflow-${re.name}`,class:"hover:bg-base-background",onMouseenter:a(Dt=>se.value=re.name,"onMouseenter"),onMouseleave:oe[7]||(oe[7]=Dt=>se.value=null),onClick:a(Dt=>de(re),"onClick")},{top:M(()=>[L(aa,{ratio:"square"},{default:M(()=>[c("div",jb,[re.mediaType==="audio"?(p(),O(_b,{key:0,src:b(re)},null,8,["src"])):re.thumbnailVariant==="compareSlider"?(p(),O(Sb,{key:1,"base-image-src":b(re),"overlay-image-src":S(re),alt:u(v)(re,g(re)),"is-hovered":se.value===re.name,"is-video":re.mediaType==="video"||re.mediaSubtype==="webp"},null,8,["base-image-src","overlay-image-src","alt","is-hovered","is-video"])):re.thumbnailVariant==="hoverDissolve"?(p(),O(Mb,{key:2,"base-image-src":b(re),"overlay-image-src":S(re),alt:u(v)(re,g(re)),"is-hovered":se.value===re.name,"is-video":re.mediaType==="video"||re.mediaSubtype==="webp"},null,8,["base-image-src","overlay-image-src","alt","is-hovered","is-video"])):(p(),O(Tb,{key:3,src:b(re),alt:u(v)(re,g(re)),"is-hovered":se.value===re.name,"is-video":re.mediaType==="video"||re.mediaSubtype==="webp","hover-zoom":re.thumbnailVariant==="zoomHover"?16:5},null,8,["src","alt","is-hovered","is-video","hover-zoom"])),$e.value===re.name?(p(),O(u(Qr),{key:4,class:"absolute inset-0 z-10 m-auto h-12 w-12"})):A("",!0)])]),"bottom-right":M(()=>[re.tags&&re.tags.length>0?(p(!0),x(Z,{key:0},ye(re.tags,Dt=>(p(),O(na,{key:Dt,label:Dt},null,8,["label"]))),128)):A("",!0)]),_:2},1024)]),bottom:M(()=>[L(ta,null,{default:M(()=>[c("div",qb,[c("h3",{class:"m-0 line-clamp-1 text-sm",title:u(v)(re,g(re))},R(u(v)(re,g(re))),9,Kb),c("div",Qb,[c("div",Yb,[c("p",{class:"m-0 line-clamp-2 text-sm text-muted",title:u(h)(re)},R(u(h)(re)),9,Jb)]),re.tutorialUrl?(p(),x("div",Xb,[se.value===re.name?ce((p(),O(X,lt({key:0,ref_for:!0},ee.$attrs,{variant:"inverted",size:"icon",onClick:ke(Dt=>k(re),["stop"])}),{default:M(()=>oe[17]||(oe[17]=[c("i",{class:"icon-[lucide--info] size-4"},null,-1)])),_:2},1040,["onClick"])),[[Tt,ee.$t("g.seeTutorial"),void 0,{bottom:!0}]]):A("",!0)])):A("",!0)])])]),_:2},1024)]),_:2},1032,["data-testid","onMouseenter","onClick"])),[[tt,Me(re)]])),128)),(p(!0),x(Z,null,ye(u(xt)?6:0,re=>(p(),O(oa,{key:`skeleton-${re}`,size:"compact",variant:"ghost",rounded:"lg",class:"hover:bg-base-background"},{top:M(()=>[L(aa,{ratio:"square"},{default:M(()=>oe[18]||(oe[18]=[c("div",{class:"h-full w-full animate-pulse bg-dialog-surface"},null,-1)])),_:1})]),bottom:M(()=>[L(ta,null,{default:M(()=>oe[19]||(oe[19]=[c("div",{class:"px-4 py-3"},[c("div",{class:"mb-2 h-6 animate-pulse rounded bg-dialog-surface"}),c("div",{class:"h-4 animate-pulse rounded bg-dialog-surface"})],-1)])),_:1})]),_:2},1024))),128))],4))])),!u(De)&&u(dt)?(p(),x("div",{key:2,ref_key:"loadTrigger",ref:Wt,class:"mt-4 flex h-4 w-full items-center justify-center"},[u(xt)?(p(),x("div",Zb,R(ee.$t("templateWorkflows.loadingMore","Loading more...")),1)):A("",!0)],512)):A("",!0),u(De)?A("",!0):(p(),x("div",ew,R(ee.$t("templateWorkflows.resultsCount",{count:u(F),total:u(G)})),1))]),_:1},8,["content-title"])}}}),ow=tw,vs="global-workflow-template-selector";const Mn=a(()=>{const e=vt(),o=qt();function t(){o.closeDialog({key:vs})}a(t,"hide");function s(r="command"){Le()?.trackTemplateLibraryOpened({source:r}),e.showLayoutDialog({key:vs,component:ow,props:{onClose:t},dialogComponentProps:{pt:{content:{class:"!px-0 overflow-hidden h-full !py-0"},root:{style:"width: 90vw; height: 85vh; max-width: 1400px; display: flex;"}}}})}return a(s,"show"),{show:s,hide:t}},"useWorkflowTemplateSelectorDialog"),tn=a((e,o,t=30)=>{const s=e instanceof HTMLElement?e:e.target;let r=0;const n=setInterval(()=>{o(r++)},t),l=a(()=>{clearInterval(n),i(),d()},"dispose"),i=Oe(document,"mouseup",l),d=Oe(s,"mouseup",l);return{dispose:l}},"whileMouseDown");var aw={class:"flex h-8 w-8 items-center justify-center rounded-lg bg-black"},nw=["href","onMousedown","onClick"],sw={class:"p-menubar-item-label text-nowrap"},rw={key:3,class:"keybinding-tag ml-auto rounded border border-surface p-1 text-xs text-nowrap text-muted"},lw={key:4,class:"pi pi-angle-right ml-auto"},iw={class:"p-menubar-item-label text-nowrap"},uw=q({__name:"ComfyMenuButton",setup(e){const{t:o}=ue(),t=Ce(),s=kn(),r=St(),n=ir(),l=qt(),i=ht(),d=ne(),f=E(null),m=y({get:a(()=>d.get("Comfy.VueNodes.Enabled")??!1,"get"),set:a(async D=>{await d.set("Comfy.VueNodes.Enabled",D)},"set")}),v=Le();function h(D){v?.trackUiButtonClicked({button_id:"sidebar_comfy_menu_opened"}),f.value?.toggle(D)}a(h,"onLogoMenuClick");const g=a(D=>{const U=typeof D.label=="function"?D.label():D.label,j=U?o(`menuLabels.${Pt(U)}`,U):void 0;return{...D,label:j,items:D.items?.map(g)}},"translateMenuItem"),b=a(D=>{l.showDialog({key:"global-settings",headerComponent:yu,component:Tu,props:{defaultPanel:D}})},"showSettings"),S=a(async()=>{await i.openManager({initialTab:ao.All,showToastOnLegacyError:!1})},"showManageExtensions"),k=y(()=>r.palettes.map(D=>({key:`theme-${D.id}`,label:D.name,parentPath:"theme",comfyCommand:{active:a(()=>r.activePaletteId===D.id,"active")},command:a(async()=>{await n.loadColorPalette(D.id)},"command")}))),w=y(()=>[{separator:!0},{key:"theme",label:o("menu.theme"),items:k.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:a(()=>Mn().show("menu"),"command")},{key:"settings",label:o("g.settings"),icon:"mdi mdi-cog-outline",command:a(()=>{v?.trackUiButtonClicked({button_id:"sidebar_settings_menu_opened"}),b()},"command")},{key:"manage-extensions",label:o("menu.manageExtensions"),icon:"mdi mdi-puzzle-outline",command:S}]),C=y(()=>{const D=s.menuItems.map(g);let U=D.findIndex(W=>W.key==="Help"),j;if(U!==-1){D[U].icon="mdi mdi-help-circle-outline";const W=U!==D.length-1;j=D.splice(U,1,...W?[{separator:!0}]:[])[0]}return U=D.length,D.splice(U,0,...w.value,...j?[{separator:!0},j]:[]),D}),T=a(()=>{Ue(()=>{f.value&&(f.value.dirty=!0)})},"onMenuShow"),I=a(D=>D.comfyCommand?.id==="Comfy.Canvas.ZoomIn"||D.comfyCommand?.id==="Comfy.Canvas.ZoomOut","isZoomCommand"),_=a((D,U)=>{D.comfyCommand&&tn(U,async()=>{await t.execute(D.comfyCommand.id)},50)},"handleZoomMouseDown"),N=a((D,U)=>{if(I(D)||D.comfyCommand?.active)return U.preventDefault(),U.stopPropagation(),D.comfyCommand?.active&&D.command?.({item:D,originalEvent:U}),!1},"handleItemClick"),$=a(D=>D.parentPath&&(D.parentPath==="theme"||s.menuItemHasActiveStateChildren[D.parentPath]),"hasActiveStateSiblings"),V=a(()=>!1,"handleNodes2ToggleClick"),B=a(async D=>{await d.set("Comfy.VueNodes.Enabled",D),v?.trackUiButtonClicked({button_id:`menu_nodes_2.0_toggle_${D?"enabled":"disabled"}`})},"onNodes2ToggleChange");return(D,U)=>{const j=Pe("tooltip");return p(),x(Z,null,[ce((p(),x("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":f.value?.visible}]),onClick:U[0]||(U[0]=W=>h(W))},[c("div",aw,[L(ib,{alt:"ComfyUI Logo",class:"comfyui-logo h-[18px] w-[18px] text-white",mode:"fill"})])],2)),[[j,{value:u(o)("sideToolbar.labels.menu"),showDelay:300,hideDelay:300}]]),L(u(Kr),{ref_key:"menuRef",ref:f,model:C.value,popup:!0,class:"comfy-command-menu",onShow:T},{item:M(({item:W,props:F})=>[W.key!=="nodes-2.0-toggle"?(p(),x("a",lt({key:0,class:"p-menubar-item-link px-4 py-2"},F.action,{href:W.url,target:"_blank",class:typeof W.class=="function"?W.class():W.class,onMousedown:a(G=>I(W)?_(W,G):void 0,"onMousedown"),onClick:a(G=>N(W,G),"onClick")}),[$(W)?(p(),x("i",{key:0,class:Q(["p-menubar-item-icon pi pi-check text-sm",{invisible:!W.comfyCommand?.active?.()}])},null,2)):W.icon&&W.comfyCommand?.id!=="Comfy.NewBlankWorkflow"?(p(),x("span",{key:1,class:Q(["p-menubar-item-icon text-sm",W.icon])},null,2)):A("",!0),c("span",sw,R(W.label),1),W.comfyCommand?.id==="Comfy.NewBlankWorkflow"?(p(),x("i",{key:2,class:Q(["ml-auto",W.icon])},null,2)):A("",!0),W?.comfyCommand?.keybinding?(p(),x("span",rw,R(W.comfyCommand.keybinding.combo.toString()),1)):A("",!0),W.items?(p(),x("i",lw)):A("",!0)],16,nw)):(p(),x("div",{key:1,class:"flex items-center justify-between px-4 py-2",onClick:ke(V,["stop"])},[c("span",iw,R(W.label),1),L(u(to),{severity:"info",class:"ml-2 text-xs"},{default:M(()=>[Ie(R(D.$t("g.beta")),1)]),_:1}),L(u(Ps),{modelValue:m.value,"onUpdate:modelValue":[U[1]||(U[1]=G=>m.value=G),B],class:"ml-4","aria-label":W.label,pt:{root:{style:{width:"38px",height:"20px"}},handle:{style:{width:"16px",height:"16px"}}},onClick:U[2]||(U[2]=ke(()=>{},["stop"]))},null,8,["modelValue","aria-label"])]))]),_:1},8,["model"])],64)}}}),dw=Be(uw,[["__scopeId","data-v-7f8c3b49"]]),cw={class:"p-1 bg-secondary-background rounded-lg w-10"},pw=q({__name:"ModeToggle",setup(e){const o=fe();return(t,s)=>(p(),x("div",cw,[L(X,{size:"icon",title:u(le)("linearMode.linearMode"),variant:u(o).linearMode?"inverted":"secondary",onClick:s[0]||(s[0]=r=>u(Ce)().execute("Comfy.ToggleLinear"))},{default:M(()=>s[2]||(s[2]=[c("i",{class:"icon-[lucide--panels-top-left]"},null,-1)])),_:1},8,["title","variant"]),L(X,{size:"icon",title:u(le)("linearMode.graphMode"),variant:u(o).linearMode?"secondary":"inverted",onClick:s[1]||(s[1]=r=>u(Ce)().execute("Comfy.ToggleLinear"))},{default:M(()=>s[3]||(s[3]=[c("i",{class:"icon-[comfy--workflow]"},null,-1)])),_:1},8,["title","variant"])]))}}),Ar=pw,fw={class:"side-bar-button-content"},vw={key:0,class:"side-bar-button-label"},mw=q({__name:"SidebarIcon",props:{icon:{default:""},selected:{type:Boolean,default:!1},tooltip:{default:""},tooltipSuffix:{default:""},iconBadge:{type:[String,Function],default:""},label:{default:""},isSmall:{type:Boolean,default:!1}},emits:["click"],setup(e,{emit:o}){const{t}=ue(),s=o,r=y(()=>typeof e.iconBadge=="function"?e.iconBadge()??"":e.iconBadge),n=y(()=>!!r.value),l=y(()=>t(e.tooltip)+e.tooltipSuffix);return(i,d)=>{const f=Pe("tooltip");return ce((p(),O(X,{class:Q(u(ae)("side-bar-button cursor-pointer border-none",i.selected&&"side-bar-button-selected")),variant:"muted-textonly","aria-label":l.value,onClick:d[0]||(d[0]=m=>s("click",m))},{default:M(()=>[c("div",fw,[_e(i.$slots,"icon",{},()=>[n.value?(p(),O(u(qr),{key:0,value:r.value},{default:M(()=>[typeof i.icon=="string"?(p(),x("i",{key:0,class:Q(i.icon+" side-bar-button-icon")},null,2)):(p(),O(so(i.icon),{key:1,class:"side-bar-button-icon"}))]),_:1},8,["value"])):typeof i.icon=="string"?(p(),x("i",{key:1,class:Q(i.icon+" side-bar-button-icon")},null,2)):typeof i.icon=="object"?(p(),O(so(i.icon),{key:2,class:"side-bar-button-icon"})):A("",!0)],!0),i.label&&!i.isSmall?(p(),x("span",vw,R(u(t)(i.label)),1)):A("",!0)])]),_:3},8,["class","aria-label"])),[[f,{value:l.value,showDelay:300,hideDelay:300}]])}}}),Ot=Be(mw,[["__scopeId","data-v-bbb98ec9"]]),gw=q({__name:"SidebarBottomPanelToggleButton",setup(e){const o=po(),t=a(()=>{Le()?.trackUiButtonClicked({button_id:"sidebar_bottom_panel_console_toggled"}),o.toggleBottomPanel()},"toggleConsole");return(s,r)=>(p(),O(Ot,{icon:"icon-[ph--terminal-bold]",label:s.$t("sideToolbar.labels.console"),tooltip:s.$t("menu.toggleBottomPanel"),selected:u(o).activePanel=="terminal",onClick:t},null,8,["label","tooltip","selected"]))}}),hw=gw,yw=q({__name:"SidebarSettingsButton",setup(e){const{t:o}=ue(),{getCommand:t,formatKeySequence:s}=Ce(),r=t("Comfy.ShowSettingsDialog"),n=y(()=>`${o("g.settings")} (${s(r)})`),l=a(()=>{r.function(),Le()?.trackUiButtonClicked({button_id:"sidebar_settings_button_clicked"})},"showSettingsDialog");return(i,d)=>(p(),O(Ot,{icon:"icon-[lucide--settings]",label:i.$t("g.settings"),tooltip:n.value,onClick:l},null,8,["label","tooltip"]))}}),bw=yw,ww=q({__name:"SidebarShortcutsToggleButton",setup(e){const{t:o}=ue(),t=po(),s=Ce(),r=s.getCommand("Workspace.ToggleBottomPanel.Shortcuts"),{formatKeySequence:n}=s,l=y(()=>t.activePanel==="shortcuts"),i=y(()=>`${o("shortcuts.keyboardShortcuts")} (${n(r)})`),d=a(()=>{Le()?.trackUiButtonClicked({button_id:"sidebar_shortcuts_panel_toggled"}),t.togglePanel("shortcuts")},"toggleShortcutsPanel");return(f,m)=>(p(),O(Ot,{icon:"icon-[lucide--keyboard]",label:f.$t("shortcuts.shortcuts"),tooltip:i.value,selected:l.value,onClick:d},null,8,["label","tooltip","selected"]))}}),_w=ww,kw=q({__name:"SidebarHelpCenterIcon",props:{isSmall:{type:Boolean}},setup(e){const{shouldShowRedDot:o,toggleHelpCenter:t}=$n();return(s,r)=>(p(),O(Ot,{icon:"pi pi-question-circle",class:"comfy-help-center-btn",label:s.$t("menu.help"),tooltip:s.$t("sideToolbar.helpCenter"),"icon-badge":u(o)?"•":"","is-small":s.isSmall,onClick:u(t)},null,8,["label","tooltip","icon-badge","is-small","onClick"]))}}),Cw=Be(kw,[["__scopeId","data-v-4a7593e2"]]),Sw=q({__name:"SidebarLogoutIcon",setup(e){const{t:o}=ue(),t=gr(),s=y(()=>`${o("sideToolbar.logout")} (${t.currentUser?.username})`),r=a(async()=>{await t.logout(),window.location.reload()},"logout");return(n,l)=>(p(),O(Ot,{icon:"pi pi-sign-out",tooltip:s.value,label:n.$t("sideToolbar.logout"),onClick:r},null,8,["tooltip","label"]))}}),xw=Sw,Tw=q({__name:"SidebarTemplatesButton",setup(e){const o=ne(),t=y(()=>o.get("Comfy.Sidebar.Size")==="small"),s=a(()=>{Le()?.trackUiButtonClicked({button_id:"sidebar_templates_dialog_opened"}),Mn().show("sidebar")},"openTemplates");return(r,n)=>(p(),O(Ot,{icon:"icon-[comfy--template]",tooltip:r.$t("sideToolbar.templates"),label:r.$t("sideToolbar.labels.templates"),"is-small":t.value,class:"templates-tab-button",onClick:s},null,8,["tooltip","label","is-small"]))}}),Er=Tw,Nw=20,Iw=50,Pw=q({__name:"SideToolbar",setup(e){const o=st(),t=ne(),s=gr(),r=Ce(),n=fe(),l=kn(),i=E(),d=E(),f=E(),{flags:m}=di(),v=y(()=>t.get("Comfy.Sidebar.Size")==="small"),h=y(()=>t.get("Comfy.Sidebar.Location")),g=y(()=>t.get("Comfy.Sidebar.Style")),b=y(()=>t.get("Comfy.UI.TabBarLayout")==="Integrated"),S=y(()=>w.value||_.value||g.value==="connected"),k=y(()=>o.getSidebarTabs()),w=y(()=>o.sidebarTab.activeSidebarTab),C=a(async V=>{const B=Le(),D=V.id==="node-library",U=V.id==="model-library",j=V.id==="workflows",W=V.id==="assets";D?B?.trackUiButtonClicked({button_id:"sidebar_tab_node_library_selected"}):U?B?.trackUiButtonClicked({button_id:"sidebar_tab_model_library_selected"}):j?B?.trackUiButtonClicked({button_id:"sidebar_tab_workflows_selected"}):W&&B?.trackUiButtonClicked({button_id:"sidebar_tab_assets_media_selected"}),await r.commands.find(F=>F.id===`Workspace.ToggleSidebarTab.${V.id}`)?.function?.()},"onTabClick"),T=_u(),I=a(V=>{const B=T.getKeybindingByCommandId(`Workspace.ToggleSidebarTab.${V.id}`);return B?` (${B.combo.toString()})`:""},"getTabTooltipSuffix"),_=E(!1),N=y(()=>ae("sidebar-item-group flex flex-col items-center overflow-hidden flex-shrink-0",!S.value&&"rounded-lg shadow-interface pointer-events-auto")),$=ca(()=>{if(!i.value||!d.value||!f.value)return;const V=i.value.clientHeight,B=d.value.scrollHeight+f.value.scrollHeight;_.value?_.value=V<B+Iw:_.value=V<B+Nw},16);return Re(()=>{if(!i.value)return;const V=Vs(i.value,$);$(),rt(()=>{V.stop()}),ie([v,h],async()=>{n.canvas&&(h.value==="left"?(await Ue(),n.canvas.fpsInfoLocation=[i.value?.getBoundingClientRect()?.right,null]):n.canvas.fpsInfoLocation=null,n.canvas.setDirty(!1,!0))},{immediate:!0})}),(V,B)=>(p(),x("nav",{ref_key:"sideToolbarRef",ref:i,class:Q(["side-tool-bar-container flex h-full flex-col items-center bg-transparent [.floating-sidebar]:-mr-2",{"small-sidebar":v.value,"connected-sidebar pointer-events-auto":S.value,"floating-sidebar":!S.value,"overflowing-sidebar":_.value,"border-r border-[var(--interface-stroke)] shadow-interface":S.value}])},[c("div",{class:Q(_.value?"side-tool-bar-container overflow-y-auto":"flex flex-col h-full")},[c("div",{ref_key:"topToolbarRef",ref:d,class:Q(N.value)},[L(dw),(p(!0),x(Z,null,ye(k.value,D=>(p(),O(Ot,{key:D.id,icon:D.icon,"icon-badge":D.iconBadge,tooltip:D.tooltip,"tooltip-suffix":I(D),label:D.label||D.title,"is-small":v.value,selected:D.id===w.value?.id,class:Q(D.id+"-tab-button"),onClick:a(U=>C(D),"onClick")},null,8,["icon","icon-badge","tooltip","tooltip-suffix","label","is-small","selected","class","onClick"]))),128)),L(Er)],2),c("div",{ref_key:"bottomToolbarRef",ref:f,class:Q(["mt-auto",N.value])},[u(s).isMultiUserServer?(p(),O(xw,{key:0,"is-small":v.value},null,8,["is-small"])):A("",!0),b.value?A("",!0):(p(),O(Cw,{key:1,"is-small":v.value},null,8,["is-small"])),L(hw,{"is-small":v.value},null,8,["is-small"]),L(_w,{"is-small":v.value},null,8,["is-small"]),L(bw,{"is-small":v.value},null,8,["is-small"]),u(l).hasSeenLinear||u(m).linearToggleEnabled?(p(),O(Ar,{key:2})):A("",!0)],2)],2),L(sb,{"is-small":v.value},null,8,["is-small"])],2))}}),$w=Be(Pw,[["__scopeId","data-v-38c1e769"]]);const Mw=uo("topbarBadge",()=>{const e=fn();return{badges:y(()=>e.extensions.flatMap(o=>o.topbarBadges??[]))}});var Dw={class:"flex h-full shrink-0 items-center"},Lw=q({__name:"TopbarBadges",props:{reverseOrder:{type:Boolean,default:!1},noPadding:{type:Boolean,default:!1}},setup(e){const o=un(pa),t=o.greaterOrEqual("xl"),s=o.greaterOrEqual("lg"),r=y(()=>t.value?"full":s.value?"compact":"icon-only"),n=Mw();return(l,i)=>(p(),x("div",Dw,[(p(!0),x(Z,null,ye(u(n).badges,d=>(p(),O(Qu,{key:d.text,badge:d,"display-mode":r.value,"reverse-order":l.reverseOrder,"no-padding":l.noPadding},null,8,["badge","display-mode","reverse-order","no-padding"]))),128))]))}}),Vr=Lw,Aw={class:"relative inline-flex items-center justify-center size-[1em]"},Ew=q({__name:"OverlayIcon",props:{mainIcon:{},subIcon:{},positionX:{default:"right"},positionY:{default:"bottom"},offsetX:{default:0},offsetY:{default:0},subIconScale:{default:.6}},setup(e){const o=["-1px -1px 0 rgba(0, 0, 0, 0.7)","1px -1px 0 rgba(0, 0, 0, 0.7)","-1px 1px 0 rgba(0, 0, 0, 0.7)","1px 1px 0 rgba(0, 0, 0, 0.7)","-1px 0 0 rgba(0, 0, 0, 0.7)","1px 0 0 rgba(0, 0, 0, 0.7)","0 -1px 0 rgba(0, 0, 0, 0.7)","0 1px 0 rgba(0, 0, 0, 0.7)"].join(", "),t=y(()=>({fontSize:`${e.subIconScale}em`,textShadow:o,...e.offsetX!==0&&{[e.positionX==="left"?"left":"right"]:`${e.offsetX}px`},...e.offsetY!==0&&{[e.positionY==="top"?"top":"bottom"]:`${e.offsetY}px`}}));return(s,r)=>(p(),x("span",Aw,[c("i",{class:Q([s.mainIcon,"text-[1em]"])},null,2),c("i",{class:Q(u(ae)(s.subIcon,"absolute leading-none pointer-events-none",s.positionX==="left"?"left-0":"right-0",s.positionY==="top"?"top-0":"bottom-0")),style:be(t.value)},null,6)]))}}),Vw=Ew,Ow={class:"not-md:hidden"},Rw={key:0,class:"absolute top-[7px] right-[7px] size-1.5 rounded-full bg-[#ff3b30]"},Ww=q({__name:"TopMenuHelpButton",setup(e){const{shouldShowRedDot:o,toggleHelpCenter:t}=$n("topbar");return(s,r)=>(p(),O(X,{class:"comfy-help-center-btn relative text-base-foreground",variant:"textonly",onClick:u(t)},{default:M(()=>[c("div",Ow,R(s.$t("menu.helpAndFeedback")),1),r[0]||(r[0]=c("i",{class:"icon-[lucide--circle-help] ml-0.5"},null,-1)),u(o)?(p(),x("span",Rw)):A("",!0)]),_:1},8,["onClick"]))}}),Bw=Ww,zw={class:"workflow-preview-content"},Uw={key:0,class:"workflow-preview-thumbnail relative"},Fw=["src"],Gw={class:"workflow-preview-footer"},Hw={class:"workflow-preview-name"},jw=250,qw=q({__name:"WorkflowTabPopover",props:{workflowFilename:{},thumbnailUrl:{},isActiveTab:{type:Boolean}},setup(e,{expose:o}){const{thumbnailUrl:t,isActiveTab:s}=fl(e),r=E(null),n=E(null);let l=null,i=null;const d=Pl(),f=a(g=>{l&&(clearTimeout(l),l=null),i&&(clearTimeout(i),i=null),i=setTimeout(async()=>{if(r.value&&n.value){r.value.show(g,n.value),await Ue();const b=document.querySelector(`.workflow-popover-fade[data-popover-id="${d}"]`);if(b){const S=n.value.getBoundingClientRect().left,k=b.getBoundingClientRect().width,w=k/2;let C=S-w,T=0;if(C<0)T=C-8,C=8;else if(C+k>window.innerWidth){const I=window.innerWidth-k-16;T=C-I,C=I}T+w<0&&(T=-w+24),b.style.left=`${C}px`,b.style.setProperty("--shift",`${T}px`)}}},200)},"showPopover"),m=a(()=>{},"cancelHidePopover"),v=a(()=>{i&&(clearTimeout(i),i=null),l=setTimeout(()=>{r.value&&r.value.hide()},100)},"hidePopover");return o({showPopover:f,hidePopover:v,togglePopover:a(g=>{r.value&&r.value.toggle(g)},"togglePopover")}),(g,b)=>(p(),x(Z,null,[c("div",{ref_key:"positionRef",ref:n,class:"absolute bottom-0 left-1/2 -translate-x-1/2"},null,512),L(u(wt),{ref_key:"popoverRef",ref:r,"append-to":"body",pt:{root:{class:"workflow-popover-fade fit-content","data-popover-id":u(d)}},onMouseenter:m,onMouseleave:v},{default:M(()=>[c("div",zw,[u(t)&&!u(s)?(p(),x("div",Uw,[c("img",{src:u(t),class:"block h-[200px] rounded-lg object-cover p-2",style:be({width:`${jw}px`})},null,12,Fw)])):A("",!0),c("div",Gw,[c("span",Hw,R(g.workflowFilename),1)])])]),_:1},8,["pt"])],64))}}),Kw=Be(qw,[["__scopeId","data-v-4c13cb50"]]),Qw={key:0,class:"icon-[lucide--panels-top-left] bg-primary-background"},Yw={class:"workflow-label inline-block max-w-[150px] truncate text-sm"},Jw={class:"relative"},Xw={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"},Zw=q({__name:"WorkflowTab",props:{workflowOption:{}},setup(e){const o=e,{t}=ue(),s=st(),r=Ve(),n=ne(),l=E(null),i=E(null),d=Ti(),f=y(()=>n.get("Comfy.Workflow.AutoSave")),m=y(()=>n.get("Comfy.Workflow.AutoSaveDelay")),v=y(()=>s.shiftDown?!1:o.workflowOption.workflow.isPersisted?o.workflowOption.workflow.isModified?f.value==="off"||f.value==="after delay"&&m.value>3e3:!1:!0),h=y(()=>r.activeWorkflow?.key===o.workflowOption.workflow.key),g=y(()=>d.getThumbnail(o.workflowOption.workflow.key)),b=a(I=>{i.value?.showPopover(I)},"handleMouseEnter"),S=a(()=>{i.value?.hidePopover()},"handleMouseLeave"),k=a(I=>{i.value?.togglePopover(I)},"handleClick"),w=a(async I=>{for(const _ of I)if(!await nt().closeWorkflow(_.workflow,{warnIfUnsaved:!s.shiftDown,hint:t("sideToolbar.workflowTab.dirtyCloseHint")}))break},"closeWorkflows"),C=a(async I=>{await w([I])},"onCloseWorkflow"),T=a(()=>l.value,"tabGetter");return eu(T,{getInitialData:a(()=>({workflowKey:o.workflowOption.workflow.key}),"getInitialData")}),Ks(T,{getData:a(()=>({workflowKey:o.workflowOption.workflow.key}),"getData"),onDrop:a(I=>{const _=r.openWorkflows.findIndex($=>$.key===I.source.data.workflowKey),N=r.openWorkflows.findIndex($=>$.key===I.location.current.dropTargets[0]?.data.workflowKey);_!==N&&r.reorderWorkflows(_,N)},"onDrop")}),kt(()=>{i.value?.hidePopover()}),(I,_)=>(p(),x(Z,null,[c("div",lt({ref_key:"workflowTabRef",ref:l,class:"workflow-tab group flex gap-2 p-2"},I.$attrs,{onMouseenter:b,onMouseleave:S,onClick:k}),[I.workflowOption.workflow.activeState?.extra?.linearMode?(p(),x("i",Qw)):A("",!0),c("span",Yw,R(I.workflowOption.workflow.filename),1),c("div",Jw,[v.value?(p(),x("span",Xw,"•")):A("",!0),L(X,{class:"close-button invisible w-auto p-0",variant:"muted-textonly",size:"icon-sm","aria-label":u(t)("g.close"),onClick:_[0]||(_[0]=ke(N=>C(I.workflowOption),["stop"]))},{default:M(()=>_[1]||(_[1]=[c("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])],16),L(Kw,{ref_key:"popoverRef",ref:i,"workflow-filename":I.workflowOption.workflow.filename,"thumbnail-url":g.value,"is-active-tab":h.value},null,8,["workflow-filename","thumbnail-url","is-active-tab"])],64))}}),e1=Zw,t1=q({__name:"WorkflowOverflowMenu",props:{workflows:{},activeWorkflow:{}},setup(e){const o=e,t=E(null),s=nt(),r=y(()=>o.workflows.map(n=>({label:n.filename,icon:o.activeWorkflow?.key===n.key?"pi pi-check":void 0,command:a(()=>{s.openWorkflow(n)},"command")})));return(n,l)=>{const i=Pe("tooltip");return p(),x("div",null,[ce((p(),O(X,{class:"rounded-none h-full w-auto aspect-square",variant:"muted-textonly",size:"icon","aria-label":n.$t("g.moreWorkflows"),onClick:l[0]||(l[0]=d=>t.value?.toggle(d))},{default:M(()=>l[1]||(l[1]=[c("i",{class:"pi pi-ellipsis-h"},null,-1)])),_:1},8,["aria-label"])),[[i,{value:n.$t("g.moreWorkflows"),showDelay:300}]]),L(u(Ms),{ref_key:"menu",ref:t,model:r.value,popup:!0,class:"max-h-[40vh] overflow-auto"},null,8,["model"])])}}}),o1=t1,a1={key:3,class:"ml-auto flex shrink-0 items-center gap-2 px-2"},n1={key:4,class:"window-actions-spacer app-drag shrink-0"},s1=q({__name:"WorkflowTabs",props:{class:{}},setup(e){const o=e,{t}=ue(),s=ne(),r=st(),n=Ve(),l=nt(),i=Ce(),{isLoggedIn:d}=fo(),f=y(()=>s.get("Comfy.UI.TabBarLayout")==="Integrated"),m=E(),v=E(),h=E(null),g=E(!1),b=E(!1),S=E(!1),k=Xe(),w=a(K=>({value:K.path,workflow:K}),"workflowToOption"),C=y(()=>n.openWorkflows.map(w)),T=y(()=>n.activeWorkflow?w(n.activeWorkflow):null),I=a(async K=>{K&&T.value?.value!==K.value&&await l.openWorkflow(K.workflow)},"onWorkflowChange"),_=a(async K=>{for(const H of K)if(!await l.closeWorkflow(H.workflow,{warnIfUnsaved:!r.shiftDown}))break},"closeWorkflows"),N=a(async K=>{await _([K])},"onCloseWorkflow"),$=a((K,H)=>{m.value=H,v.value.show(K)},"showContextMenu"),{menuItems:V}=wr(()=>i.execute("Comfy.RenameWorkflow"),{includeDelete:!1,workflow:y(()=>m.value?.workflow??null)}),B=y(()=>{const K=m.value;if(!K)return[];const H=C.value.findIndex(J=>J.workflow===K.workflow);return[...V.value,{label:t("tabMenu.closeTab"),icon:"pi pi-times",command:a(()=>N(K),"command")},{label:t("tabMenu.closeTabsToLeft"),overlayIcon:{mainIcon:"pi pi-times",subIcon:"pi pi-arrow-left",positionX:"right",positionY:"bottom",subIconScale:.5},command:a(()=>_(C.value.slice(0,H)),"command"),disabled:H<=0},{label:t("tabMenu.closeTabsToRight"),overlayIcon:{mainIcon:"pi pi-times",subIcon:"pi pi-arrow-right",positionX:"right",positionY:"bottom",subIconScale:.5},command:a(()=>_(C.value.slice(H+1)),"command"),disabled:H===C.value.length-1},{label:t("tabMenu.closeOtherTabs"),overlayIcon:{mainIcon:"pi pi-times",subIcon:"pi pi-arrows-h",positionX:"right",positionY:"bottom",subIconScale:.5},command:a(()=>_([...C.value.slice(H+1),...C.value.slice(0,H)]),"command"),disabled:C.value.length<=1}]}),D=a(K=>{const H=K.currentTarget,J=K.deltaX||K.deltaY;H.scroll({left:H.scrollLeft+J})},"handleWheel"),U=y(()=>h.value?.querySelector(".p-scrollpanel-content")??null),j=a(K=>{const H=U.value;H&&H.scrollBy({left:K*20})},"scroll"),W=a(async(K={})=>{if(!T.value)return;K.waitForDom!==!1&&await Ue();const H=h.value;if(!H)return;const J=H.querySelector(".p-togglebutton-checked");J&&J.scrollIntoView({block:"nearest",inline:"nearest"})},"ensureActiveTabVisible");ie(()=>n.activeWorkflow,()=>{W()},{immediate:!0});let F=null,G=null,z=null;return ie(U,(K,H,J)=>{if(G?.(),z?.(),F?.dispose(),!K)return;const te=rn(K);G=ie([()=>te.arrivedState.left,()=>te.arrivedState.right],([he,$e])=>{b.value=!he,S.value=!$e},{immediate:!0}),F=_r(K),z=ie(F.isOverflowing,he=>{g.value=he,he&&Ue(()=>{te.measure(),W({waitForDom:!1})})},{immediate:!0}),J(()=>{G?.(),z?.(),F?.dispose()})},{immediate:!0}),Us(()=>{F?.disposed.value||F?.checkOverflow()}),(K,H)=>{const J=Pe("tooltip");return p(),x("div",{ref_key:"containerRef",ref:h,class:Q(["workflow-tabs-container flex h-full max-w-full flex-auto flex-row overflow-hidden",{"workflow-tabs-container-desktop":u(k)}])},[g.value?(p(),O(X,{key:0,variant:"muted-textonly",size:"icon",class:"overflow-arrow overflow-arrow-left h-full w-auto aspect-square","aria-label":K.$t("g.scrollLeft"),disabled:!b.value,onMousedown:H[0]||(H[0]=te=>u(tn)(te,()=>j(-1)))},{default:M(()=>H[3]||(H[3]=[c("i",{class:"icon-[lucide--chevron-left] size-full"},null,-1)])),_:1},8,["aria-label","disabled"])):A("",!0),L(u(tl),{class:"no-drag overflow-hidden","pt:content":{class:"p-0 w-full flex",onwheel:D},"pt:bar-x":"h-1"},{default:M(()=>[L(u($s),{class:Q(["workflow-tabs bg-transparent",o.class]),"model-value":T.value,options:C.value,"option-label":"label","data-key":"value","onUpdate:modelValue":I},{option:M(({option:te})=>[L(e1,{"workflow-option":te,onContextmenu:a(he=>$(he,te),"onContextmenu"),onMouseup:ke(he=>N(te),["middle"])},null,8,["workflow-option","onContextmenu","onMouseup"])]),_:1},8,["class","model-value","options"])]),_:1},8,["pt:content"]),g.value?(p(),O(X,{key:1,variant:"muted-textonly",size:"icon",class:"overflow-arrow overflow-arrow-right h-full w-auto aspect-square","aria-label":K.$t("g.scrollRight"),disabled:!S.value,onMousedown:H[1]||(H[1]=te=>u(tn)(te,()=>j(1)))},{default:M(()=>H[4]||(H[4]=[c("i",{class:"icon-[lucide--chevron-right] size-full"},null,-1)])),_:1},8,["aria-label","disabled"])):A("",!0),g.value?(p(),O(o1,{key:2,workflows:u(n).openWorkflows,"active-workflow":u(n).activeWorkflow},null,8,["workflows","active-workflow"])):A("",!0),ce((p(),O(X,{class:"new-blank-workflow-button no-drag shrink-0 rounded-none h-full w-auto aspect-square",variant:"muted-textonly",size:"icon","aria-label":K.$t("sideToolbar.newBlankWorkflow"),onClick:H[2]||(H[2]=()=>u(i).execute("Comfy.NewBlankWorkflow"))},{default:M(()=>H[5]||(H[5]=[c("i",{class:"pi pi-plus"},null,-1)])),_:1},8,["aria-label"])),[[J,{value:K.$t("sideToolbar.newBlankWorkflow"),showDelay:300}]]),f.value?(p(),x("div",a1,[L(Bw),u(d)?(p(),O(kr,{key:0,"show-arrow":!1,compact:"",class:"shrink-0 p-1"})):u(k)?(p(),O(Cr,{key:1,class:"p-1"})):A("",!0)])):A("",!0),L(u(As),{ref_key:"menu",ref:v,model:B.value},{itemicon:M(({item:te})=>[te.overlayIcon?(p(),O(Vw,Il(lt({key:0},te.overlayIcon)),null,16)):te.icon?(p(),x("i",{key:1,class:Q(te.icon)},null,2)):A("",!0)]),_:1},8,["model"]),u(k)?(p(),x("div",n1)):A("",!0)],2)}}}),Or=Be(s1,[["__scopeId","data-v-09158161"]]);function r1(){const e=E();function o(s){s?.graph&&(t(),e.value=Ae.onChange(r=>{for(const n of r.nodeIds){const l=Ae.getNodeLayoutRef(n).value;if(!l)continue;const i=s.graph?.getNodeById(parseInt(n));i&&((i.pos[0]!==l.position.x||i.pos[1]!==l.position.y)&&(i.pos[0]=l.position.x,i.pos[1]=l.position.y),(i.size[0]!==l.size.width||i.size[1]!==l.size.height)&&i.setSize([l.size.width,l.size.height]))}s.setDirty(!0,!0)}))}a(o,"startSync");function t(){e.value?.(),e.value=void 0}return a(t,"stopSync"),kt(t),{startSync:o,stopSync:t}}a(r1,"useLayoutSync");function l1(){const e=fe(),o=ha(),{shouldRenderVueNodes:t}=la(),s=Je(null),{startSync:r}=r1(),n=a(()=>{const f=Y.canvas?.graph;if(!f||s.value)return;s.value=cg(f);const m=f._nodes.map(v=>({id:v.id.toString(),pos:[v.pos[0],v.pos[1]],size:[v.size[0],Xl(v.size[1])]}));Ae.initializeFromLiteGraph(m);for(const v of f.reroutes.values()){const[h,g]=v.pos,b=v.parentId??void 0,S=Array.from(v.linkIds);o.createReroute(v.id,{x:h,y:g},b,S)}for(const v of f._links.values())o.createLink(v.id,v.origin_id,v.origin_slot,v.target_id,v.target_slot);r(e.canvas)},"initializeNodeManager"),l=a(()=>{if(s.value){try{s.value.cleanup()}catch{}s.value=null}},"disposeNodeManagerAndSyncs");return ie(()=>t.value&&!!Y.canvas?.graph,f=>{f&&(n(),Jn(Y.canvas?.graph?.extra.workflowRendererVersion))},{immediate:!0}),bt(()=>!t.value,()=>{Jn(Y.canvas?.graph?.extra.workflowRendererVersion),l(),Y.canvas?.setDirty(!0,!0)}),ie(()=>t.value,(f,m)=>{f!==m&&Ae.clearAllSlotLayouts()},{immediate:!0,flush:"sync"}),{nodeManager:s,initializeNodeManager:n,disposeNodeManagerAndSyncs:l,setupEmptyGraphListener:a(()=>{const f=Y.canvas?.graph;if(!t.value||s.value||f?._nodes.length!==0)return;const m=f.onNodeAdded;f.onNodeAdded=function(v){f.onNodeAdded=m,t.value&&!s.value&&n(),m&&m.call(this,v)}},"setupEmptyGraphListener"),cleanup:a(()=>{s.value&&(s.value.cleanup(),s.value=null)},"cleanup")}}a(l1,"useVueNodeLifecycleIndividual");const Dn=ga(l1);var i1=.04,ft=a(e=>e*i1,"meshyCreditsToUsd"),u1={minimumFractionDigits:0,maximumFractionDigits:0},ua=a(e=>Au({usd:e,numberOptions:u1}),"formatCreditsValue"),Ln=a(e=>e?"~":"","makePrefix"),An=a(e=>e??"/Run","makeSuffix"),En=a(e=>e?` ${e}`:"","appendNote"),P=a((e,{suffix:o,note:t,approximate:s}={})=>`${Ln(s)}${ua(e)} credits${An(o)}${En(t)}`,"formatCreditsLabel"),pe=a((e,o,{suffix:t,note:s,approximate:r}={})=>{const n=ua(e),l=ua(o),i=n===l?n:`${n}-${l}`;return`${Ln(r)}${i} credits${An(t)}${En(s)}`},"formatCreditsRangeLabel"),Ge=a((e,{suffix:o,note:t,approximate:s,separator:r}={})=>{const n=e.map(l=>ua(l)).join(r??"/");return`${Ln(s)}${n} credits${An(o)}${En(t)}`},"formatCreditsListLabel");function d1(e,o,t=""){try{return e(o)}catch{return t}}a(d1,"safePricingExecution");var Ma=a(e=>{const o=e.widgets?.find(s=>s.name==="duration");if(!o)return P(.0715,{suffix:"/second"});const t=Number(o.value);return P(.0715*(isNaN(t)?5:t))},"calculateRunwayDurationPrice"),Go=a(e=>o=>{const t=o.widgets?.find(r=>r.name==="duration");if(!t)return P(e,{suffix:"/second"});const s=parseFloat(String(t.value));return Number.isFinite(s)?P(e*s):P(e,{suffix:"/second"})},"makeOmniProDurationCalculator"),c1=a(e=>{const o=e.widgets?.find(s=>s.name==="mode");if(!o)return Ge([.07,.112],{suffix:"/second",note:"(std/pro)"});const t=String(o.value).toLowerCase();return t==="pro"?P(.112,{suffix:"/second"}):t==="std"?P(.07,{suffix:"/second"}):Ge([.07,.112],{suffix:"/second",note:"(std/pro)"})},"klingMotionControlPricingCalculator"),Da=a(e=>{const o=e.widgets?.find(i=>i.name==="duration_seconds"),t=e.widgets?.find(i=>i.name==="quality"),s=e.widgets?.find(i=>i.name==="motion_mode");if(!o||!t)return pe(.45,1.2,{note:"(varies with duration, quality & motion mode)"});const r=String(o.value),n=String(t.value),l=String(s?.value);if(r.includes("5")){if(n.includes("1080p")||n.includes("720p")&&l?.includes("fast"))return P(1.2);if(n.includes("720p")&&l?.includes("normal"))return P(.6);if(n.includes("540p")&&l?.includes("fast"))return P(.9);if(n.includes("540p")&&l?.includes("normal"))return P(.45);if(n.includes("360p")&&l?.includes("fast"))return P(.9);if(n.includes("360p")&&l?.includes("normal"))return P(.45)}else if(r.includes("8")){if(n.includes("540p")&&l?.includes("normal"))return P(.9);if(n.includes("540p")&&l?.includes("fast"))return P(1.2);if(n.includes("360p")&&l?.includes("normal"))return P(.9);if(n.includes("360p")&&l?.includes("fast")||n.includes("1080p")&&l?.includes("normal")||n.includes("1080p")&&l?.includes("fast")||n.includes("720p")&&l?.includes("normal")||n.includes("720p")&&l?.includes("fast"))return P(1.2)}return P(.9)},"pixversePricingCalculator"),Ho=a(e=>{const o=e.widgets?.find(T=>T.name==="model"),t=e.widgets?.find(T=>T.name==="duration"),s=e.widgets?.find(T=>T.name==="resolution"),r=e.widgets?.find(T=>T.name==="generate_audio");if(!o||!t||!s)return"Token-based";const n=String(o.value).toLowerCase(),l=String(s.value).toLowerCase(),i=parseFloat(String(t.value)),d=r&&String(r.value).toLowerCase()==="true",f={"seedance-1-5-pro":{"480p":[.12,.12],"720p":[.26,.26],"1080p":[.58,.59]},"seedance-1-0-pro":{"480p":[.23,.24],"720p":[.51,.56],"1080p":[1.18,1.22]},"seedance-1-0-pro-fast":{"480p":[.09,.1],"720p":[.21,.23],"1080p":[.47,.49]},"seedance-1-0-lite":{"480p":[.17,.18],"720p":[.37,.41],"1080p":[.85,.88]}},m=n.includes("seedance-1-5-pro")?"seedance-1-5-pro":n.includes("seedance-1-0-pro-fast")?"seedance-1-0-pro-fast":n.includes("seedance-1-0-pro")?"seedance-1-0-pro":n.includes("seedance-1-0-lite")?"seedance-1-0-lite":"",v=l.includes("1080")?"1080p":l.includes("720")?"720p":l.includes("480")?"480p":"",h=m&&v?f[m]?.[v]:void 0;if(!h)return"Token-based";const[g,b]=h,S=i/10,k=m==="seedance-1-5-pro"&&d?2:1,w=g*S*k,C=b*S*k;return w===C?P(w):pe(w,C)},"byteDanceVideoPricingCalculator"),ms=a(e=>{const o=e.widgets?.find(m=>m.name==="model"),t=e.widgets?.find(m=>m.name==="duration"),s=e.widgets?.find(m=>m.name==="resolution"),r=pe(.04,.24,{suffix:"/second"});if(!o||!t||!s)return r;const n=String(o.value).toLowerCase(),l=String(s.value).toLowerCase(),i=parseFloat(String(t.value)),d={"ltx-2 (pro)":{"1920x1080":.06,"2560x1440":.12,"3840x2160":.24},"ltx-2 (fast)":{"1920x1080":.04,"2560x1440":.08,"3840x2160":.16}}[n];if(!d)return r;const f=d[l];return f?P(f*i):r},"ltxvPricingCalculator"),gs=a(e=>{const o=e.widgets?.find(n=>n.name==="duration"),t=e.widgets?.find(n=>n.name==="generate_audio");if(!o||!t)return pe(.35,1.4,{note:"(varies with duration & audio)"});const s=String(o.value),r=String(t.value).toLowerCase()==="true";return s==="5"?P(r?.7:.35):s==="10"?P(r?1.4:.7):pe(.35,1.4,{note:"(varies with duration & audio)"})},"klingVideoWithAudioPricingCalculator"),Ao={BASIC:new Set(["720x1280","1280x720"]),PRO:new Set(["1024x1792","1792x1024"])},p1=new Set([...Ao.BASIC,...Ao.PRO]);function f1(e,o,t){const s=e?.toLowerCase()??"",r=t?.toLowerCase()??"";if(!o||Number.isNaN(o))return"Set duration (4s / 8s / 12s)";if(!r)return"Set size (720x1280, 1280x720, 1024x1792, 1792x1024)";if(!p1.has(r))return"Invalid size. Must be 720x1280, 1280x720, 1024x1792, or 1792x1024.";if(!s.includes("sora-2-pro")){if(s.includes("sora-2")&&!Ao.BASIC.has(r))return"sora-2 supports only 720x1280 or 1280x720";if(!s.includes("sora-2"))return"Unsupported model"}}a(f1,"validateSora2Selection");function v1(e,o){const t=e?.toLowerCase()??"",s=o?.toLowerCase()??"";return t.includes("sora-2-pro")?Ao.PRO.has(s)?.5:.3:t.includes("sora-2")?.1:Ao.PRO.has(s)?.5:.1}a(v1,"perSecForSora2");function m1(e,o){return P(Number((e*o).toFixed(2)))}a(m1,"formatRunPrice");var g1=a(e=>{const o=a(l=>String(e.widgets?.find(i=>i.name===l)?.value??""),"getWidgetValue"),t=o("model"),s=o("size"),r=Number(e.widgets?.find(l=>["duration","duration_s"].includes(l.name))?.value);if(!t||!s||!r)return"Set model, duration & size";const n=f1(t,r,s);return n||m1(v1(t,s),r)},"sora2PricingCalculator"),La=a((e,o)=>{const t=a(w=>e.widgets?.find(C=>C.name===w),"getWidget"),s=a((w,C)=>{const T=t(w);return!T||T.value===void 0||T.value===null?C:String(T.value)},"getString"),r=a((w,C)=>{const T=t(w);if(!T||T.value===void 0||T.value===null)return C;const I=T.value;if(typeof I=="number")return I!==0;const _=String(I).toLowerCase();return _==="true"?!0:_==="false"?!1:C},"getBool"),n=s("model_version","").toLowerCase();if(n==="")return pe(.1,.65,{note:"(varies with quad, style, texture & quality)"});const l=s("style","None").toLowerCase()!=="none",i=r("texture",!1),d=r("pbr",!1),f=r("quad",!1),m=s("texture_quality","standard").toLowerCase(),v=s("geometry_quality","standard").toLowerCase(),h=m==="detailed",g=v==="detailed",b=i||d;let S;n.includes("v1.4")||b?o==="text"?S=20:S=30:o==="text"?S=10:S=20;let k=S;return l&&(k+=5),f&&(k+=5),h&&(k+=10),g&&(k+=20),P(k*.01)},"calculateTripo3DGenerationPrice"),h1=a(e=>{const o=e.widgets?.find(t=>t.name==="should_texture");return o?P(ft(String(o.value).toLowerCase()==="true"?30:20)):pe(ft(20),ft(30),{note:"(varies with texture)"})},"calculateMeshyImageToModelPrice"),y1=a(e=>{const o=e.widgets?.find(t=>t.name==="should_texture");return o?P(ft(String(o.value).toLowerCase()==="true"?15:5)):pe(ft(5),ft(15),{note:"(varies with texture)"})},"calculateMeshyMultiImageToModelPrice"),hs={FluxProCannyNode:{displayPrice:P(.05)},FluxProDepthNode:{displayPrice:P(.05)},FluxProExpandNode:{displayPrice:P(.05)},FluxProFillNode:{displayPrice:P(.05)},FluxProUltraImageNode:{displayPrice:P(.06)},FluxProKontextProNode:{displayPrice:P(.04)},FluxProKontextMaxNode:{displayPrice:P(.08)},Flux2ProImageNode:{displayPrice:a(e=>{const o=e.widgets?.find(m=>m.name==="width"),t=e.widgets?.find(m=>m.name==="height"),s=Number(o?.value),r=Number(t?.value);if(!Number.isFinite(s)||!Number.isFinite(r)||s<=0||r<=0)return pe(.03,.15);const n=e.inputs?.find(m=>m.name==="images"),l=typeof n?.link<"u"&&n.link!=null,i=1024*1024,d=Math.max(1,Math.floor((s*r+i-1)/i)),f=.03+.015*Math.max(d-1,0);return l?pe(f+.015,f+.12,{approximate:!0}):P(f)},"displayPrice")},Flux2MaxImageNode:{displayPrice:a(e=>{const o=e.widgets?.find(m=>m.name==="width"),t=e.widgets?.find(m=>m.name==="height"),s=Number(o?.value),r=Number(t?.value);if(!Number.isFinite(s)||!Number.isFinite(r)||s<=0||r<=0)return pe(.07,.35);const n=e.inputs?.find(m=>m.name==="images"),l=typeof n?.link<"u"&&n.link!=null,i=1024*1024,d=Math.max(1,Math.floor((s*r+i-1)/i)),f=.07+.03*Math.max(d-1,0);return l?pe(f+.03,f+.24):P(f)},"displayPrice")},OpenAIVideoSora2:{displayPrice:g1},IdeogramV1:{displayPrice:a(e=>{const o=e.widgets?.find(n=>n.name==="num_images"),t=e.widgets?.find(n=>n.name==="turbo");if(!o)return pe(.03,.09,{suffix:" x num_images/Run"});const s=Number(o.value)||1,r=String(t?.value).toLowerCase()==="true"?.0286:.0858;return P(Number((r*s).toFixed(2)))},"displayPrice")},IdeogramV2:{displayPrice:a(e=>{const o=e.widgets?.find(n=>n.name==="num_images"),t=e.widgets?.find(n=>n.name==="turbo");if(!o)return pe(.07,.11,{suffix:" x num_images/Run"});const s=Number(o.value)||1,r=String(t?.value).toLowerCase()==="true"?.0715:.1144;return P(Number((r*s).toFixed(2)))},"displayPrice")},IdeogramV3:{displayPrice:a(e=>{const o=e.widgets?.find(d=>d.name==="rendering_speed"),t=e.widgets?.find(d=>d.name==="num_images"),s=e.inputs?.find(d=>d.name==="character_image"),r=typeof s?.link<"u"&&s.link!=null;if(!o)return pe(.04,.11,{suffix:" x num_images/Run",note:"(varies with rendering speed & num_images)"});const n=Number(t?.value)||1;let l=.0858;const i=String(o.value);return i.toLowerCase().includes("quality")?r?l=.286:l=.1287:i.toLowerCase().includes("default")?r?l=.2145:l=.0858:i.toLowerCase().includes("turbo")&&(r?l=.143:l=.0429),P(Number((l*n).toFixed(2)))},"displayPrice")},KlingCameraControlI2VNode:{displayPrice:P(.49)},KlingCameraControlT2VNode:{displayPrice:P(.14)},KlingDualCharacterVideoEffectNode:{displayPrice:a(e=>{const o=e.widgets?.find(i=>i.name==="mode"),t=e.widgets?.find(i=>i.name==="model_name"),s=e.widgets?.find(i=>i.name==="duration");if(!o||!t||!s)return pe(.14,2.8,{note:"(varies with model, mode & duration)"});const r=String(o.value),n=String(s.value),l=String(t.value);return l.includes("v1-6")||l.includes("v1-5")?r.includes("pro")?n.includes("10")?P(.98):P(.49):n.includes("10")?P(.56):P(.28):l.includes("v1")?r.includes("pro")?n.includes("10")?P(.98):P(.49):n.includes("10")?P(.28):P(.14):P(.14)},"displayPrice")},KlingImage2VideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(i=>i.name==="mode"),t=e.widgets?.find(i=>i.name==="model_name"),s=e.widgets?.find(i=>i.name==="duration");if(!o){if(!t)return pe(.14,2.8,{note:"(varies with model, mode & duration)"});const i=String(t.value);return i.includes("v2-1-master")||i.includes("v2-master")?P(1.4):i.includes("v1-6")||i.includes("v1-5")?P(.28):P(.14)}const r=String(o.value),n=String(s.value),l=String(t.value);return l.includes("v2-5-turbo")?n.includes("10")?P(.7):P(.35):l.includes("v2-1-master")||l.includes("v2-master")?n.includes("10")?P(2.8):P(1.4):l.includes("v2-1")||l.includes("v1-6")||l.includes("v1-5")?r.includes("pro")?n.includes("10")?P(.98):P(.49):n.includes("10")?P(.56):P(.28):l.includes("v1")?r.includes("pro")?n.includes("10")?P(.98):P(.49):n.includes("10")?P(.28):P(.14):P(.14)},"displayPrice")},KlingImageGenerationNode:{displayPrice:a(e=>{const o=e.inputs?.find(i=>i.name==="image")?.link?"image to image":"text to image",t=e.widgets?.find(i=>i.name==="model_name"),s=e.widgets?.find(i=>i.name==="n");if(!t)return pe(.0035,.028,{suffix:" x n/Run",note:"(varies with modality & model)"});const r=String(t.value),n=Number(s?.value)||1;let l=.014;return o.includes("text to image")?r.includes("kling-v1-5")||r.includes("kling-v2")?l=.014:r.includes("kling-v1")&&(l=.0035):o.includes("image to image")&&(r.includes("kling-v1-5")?l=.028:r.includes("kling-v1")&&(l=.0035)),P(l*n)},"displayPrice")},KlingLipSyncAudioToVideoNode:{displayPrice:P(.1,{approximate:!0})},KlingLipSyncTextToVideoNode:{displayPrice:P(.1,{approximate:!0})},KlingSingleImageVideoEffectNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="effect_scene");if(!o)return pe(.28,.49,{note:"(varies with effect scene)"});const t=String(o.value);return t.includes("fuzzyfuzzy")||t.includes("squish")?P(.28):t.includes("dizzydizzy")||t.includes("bloombloom")?P(.49):(t.includes("expansion"),P(.28))},"displayPrice")},KlingStartEndFrameNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="mode");if(!o)return pe(.14,2.8,{note:"(varies with model, mode & duration)"});const t=String(o.value);return t.includes("v2-5-turbo")?t.includes("10")?P(.7):P(.35):t.includes("v2-1")?t.includes("10s")?P(.98):P(.49):t.includes("v2-master")?t.includes("10s")?P(2.8):P(1.4):t.includes("v1-6")?t.includes("pro")?t.includes("10s")?P(.98):P(.49):t.includes("10s")?P(.56):P(.28):t.includes("v1")?t.includes("pro")?t.includes("10s")?P(.98):P(.49):t.includes("10s")?P(.28):P(.14):P(.14)},"displayPrice")},KlingTextToVideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="mode");if(!o)return pe(.14,2.8,{note:"(varies with model, mode & duration)"});const t=String(o.value);return t.includes("v2-5-turbo")?t.includes("10")?P(.7):P(.35):t.includes("v2-1-master")||t.includes("v2-master")?t.includes("10s")?P(2.8):P(1.4):t.includes("v1-6")?t.includes("pro")?t.includes("10s")?P(.98):P(.49):t.includes("10s")?P(.56):P(.28):t.includes("v1")?t.includes("pro")?t.includes("10s")?P(.98):P(.49):t.includes("10s")?P(.28):P(.14):P(.14)},"displayPrice")},KlingVideoExtendNode:{displayPrice:P(.28)},KlingVirtualTryOnNode:{displayPrice:P(.07)},KlingOmniProTextToVideoNode:{displayPrice:Go(.112)},KlingOmniProFirstLastFrameNode:{displayPrice:Go(.112)},KlingOmniProImageToVideoNode:{displayPrice:Go(.112)},KlingOmniProVideoToVideoNode:{displayPrice:Go(.168)},KlingMotionControl:{displayPrice:c1},KlingOmniProEditVideoNode:{displayPrice:P(.168,{suffix:"/second"})},KlingOmniProImageNode:{displayPrice:P(.028)},KlingTextToVideoWithAudio:{displayPrice:gs},KlingImageToVideoWithAudio:{displayPrice:gs},LumaImageToVideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(i=>i.name==="model"),t=e.widgets?.find(i=>i.name==="resolution"),s=e.widgets?.find(i=>i.name==="duration");if(!o||!t||!s)return pe(.2,16.4,{note:"(varies with model, resolution & duration)"});const r=String(o.value),n=String(t.value).toLowerCase(),l=String(s.value);if(r.includes("ray-flash-2")){if(l.includes("5s")){if(n.includes("4k"))return P(3.13);if(n.includes("1080p"))return P(.79);if(n.includes("720p"))return P(.34);if(n.includes("540p"))return P(.2)}else if(l.includes("9s")){if(n.includes("4k"))return P(5.65);if(n.includes("1080p"))return P(1.42);if(n.includes("720p"))return P(.61);if(n.includes("540p"))return P(.36)}}else if(r.includes("ray-2")){if(l.includes("5s")){if(n.includes("4k"))return P(9.11);if(n.includes("1080p"))return P(2.27);if(n.includes("720p"))return P(1.02);if(n.includes("540p"))return P(.57)}else if(l.includes("9s")){if(n.includes("4k"))return P(16.4);if(n.includes("1080p"))return P(4.1);if(n.includes("720p"))return P(1.83);if(n.includes("540p"))return P(1.03)}}else if(r.includes("ray-1-6"))return P(.5);return P(.79)},"displayPrice")},LumaVideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(i=>i.name==="model"),t=e.widgets?.find(i=>i.name==="resolution"),s=e.widgets?.find(i=>i.name==="duration");if(!o||!t||!s)return pe(.2,16.4,{note:"(varies with model, resolution & duration)"});const r=String(o.value),n=String(t.value).toLowerCase(),l=String(s.value);if(r.includes("ray-flash-2")){if(l.includes("5s")){if(n.includes("4k"))return P(3.13);if(n.includes("1080p"))return P(.79);if(n.includes("720p"))return P(.34);if(n.includes("540p"))return P(.2)}else if(l.includes("9s")){if(n.includes("4k"))return P(5.65);if(n.includes("1080p"))return P(1.42);if(n.includes("720p"))return P(.61);if(n.includes("540p"))return P(.36)}}else if(r.includes("ray-2")){if(l.includes("5s")){if(n.includes("4k"))return P(9.11);if(n.includes("1080p"))return P(2.27);if(n.includes("720p"))return P(1.02);if(n.includes("540p"))return P(.57)}else if(l.includes("9s")){if(n.includes("4k"))return P(16.4);if(n.includes("1080p"))return P(4.1);if(n.includes("720p"))return P(1.83);if(n.includes("540p"))return P(1.03)}}else if(r.includes("ray-1-6"))return P(.5);return P(.79)},"displayPrice")},MinimaxImageToVideoNode:{displayPrice:P(.43)},MinimaxTextToVideoNode:{displayPrice:P(.43)},MinimaxHailuoVideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(n=>n.name==="resolution"),t=e.widgets?.find(n=>n.name==="duration");if(!o||!t)return pe(.28,.56,{note:"(varies with resolution & duration)"});const s=String(o.value),r=String(t.value);if(s.includes("768P")){if(r.includes("6"))return P(.28);if(r.includes("10"))return P(.56)}else if(s.includes("1080P")&&r.includes("6"))return P(.49);return P(.43)},"displayPrice")},OpenAIDalle2:{displayPrice:a(e=>{const o=e.widgets?.find(l=>l.name==="size"),t=e.widgets?.find(l=>l.name==="n");if(!o)return pe(.016,.02,{suffix:" x n/Run",note:"(varies with size & n)"});const s=String(o.value),r=Number(t?.value)||1;let n=.02;return s.includes("1024x1024")?n=.02:s.includes("512x512")?n=.018:s.includes("256x256")&&(n=.016),P(Number((n*r).toFixed(3)))},"displayPrice")},OpenAIDalle3:{displayPrice:a(e=>{const o=e.widgets?.find(n=>n.name==="size"),t=e.widgets?.find(n=>n.name==="quality");if(!o||!t)return pe(.04,.12,{note:"(varies with size & quality)"});const s=String(o.value),r=String(t.value);return s.includes("1024x1024")?r.includes("hd")?P(.08):P(.04):s.includes("1792x1024")||s.includes("1024x1792")?r.includes("hd")?P(.12):P(.08):P(.04)},"displayPrice")},OpenAIGPTImage1:{displayPrice:a(e=>{const o=e.widgets?.find(l=>l.name==="quality"),t=e.widgets?.find(l=>l.name==="n");if(!o)return pe(.011,.3,{suffix:" x n/Run",note:"(varies with quality & n)"});const s=String(o.value),r=Number(t?.value)||1;let n=[.046,.07];return s.includes("high")?n=[.167,.3]:s.includes("medium")?n=[.046,.07]:s.includes("low")&&(n=[.011,.02]),r===1?pe(n[0],n[1]):pe(n[0],n[1],{suffix:` x ${r}/Run`})},"displayPrice")},PixverseImageToVideoNode:{displayPrice:Da},PixverseTextToVideoNode:{displayPrice:Da},PixverseTransitionVideoNode:{displayPrice:Da},RecraftCreativeUpscaleNode:{displayPrice:P(.25)},RecraftCrispUpscaleNode:{displayPrice:P(.004)},RecraftGenerateColorFromImageNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="n");if(!o)return P(.04,{suffix:" x n/Run"});const t=Number(o.value)||1;return P(Number((.04*t).toFixed(2)))},"displayPrice")},RecraftGenerateImageNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="n");if(!o)return P(.04,{suffix:" x n/Run"});const t=Number(o.value)||1;return P(Number((.04*t).toFixed(2)))},"displayPrice")},RecraftGenerateVectorImageNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="n");if(!o)return P(.08,{suffix:" x n/Run"});const t=Number(o.value)||1;return P(Number((.08*t).toFixed(2)))},"displayPrice")},RecraftImageInpaintingNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="n");if(!o)return P(.04,{suffix:" x n/Run"});const t=Number(o.value)||1;return P(Number((.04*t).toFixed(2)))},"displayPrice")},RecraftImageToImageNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="n");if(!o)return P(.04,{suffix:" x n/Run"});const t=Number(o.value)||1;return P(Number((.04*t).toFixed(2)))},"displayPrice")},RecraftRemoveBackgroundNode:{displayPrice:P(.01)},RecraftReplaceBackgroundNode:{displayPrice:P(.04)},RecraftTextToImageNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="n");if(!o)return P(.04,{suffix:" x n/Run"});const t=Number(o.value)||1;return P(Number((.04*t).toFixed(2)))},"displayPrice")},RecraftTextToVectorNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="n");if(!o)return P(.08,{suffix:" x n/Run"});const t=Number(o.value)||1;return P(Number((.08*t).toFixed(2)))},"displayPrice")},RecraftVectorizeImageNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="n");if(!o)return P(.01,{suffix:" x n/Run"});const t=Number(o.value)||1;return P(Number((.01*t).toFixed(2)))},"displayPrice")},StabilityStableImageSD_3_5Node:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return pe(.035,.065,{note:"(varies with model)"});const t=String(o.value).toLowerCase();return t.includes("large")?P(.065):(t.includes("medium"),P(.035))},"displayPrice")},StabilityStableImageUltraNode:{displayPrice:P(.08)},StabilityUpscaleConservativeNode:{displayPrice:P(.25)},StabilityUpscaleCreativeNode:{displayPrice:P(.25)},StabilityUpscaleFastNode:{displayPrice:P(.01)},StabilityTextToAudio:{displayPrice:P(.2)},StabilityAudioToAudio:{displayPrice:P(.2)},StabilityAudioInpaint:{displayPrice:P(.2)},VeoVideoGenerationNode:{displayPrice:a(e=>{const o=e.widgets?.find(t=>t.name==="duration_seconds");return o?P(.5*Number(o.value)):pe(2.5,5,{note:"(varies with duration)"})},"displayPrice")},Veo3VideoGenerationNode:{displayPrice:a(e=>{const o=e.widgets?.find(n=>n.name==="model"),t=e.widgets?.find(n=>n.name==="generate_audio");if(!o||!t)return pe(.8,3.2,{note:"(varies with model & audio generation)"});const s=String(o.value),r=String(t.value).toLowerCase()==="true";return s.includes("veo-3.0-fast-generate-001")||s.includes("veo-3.1-fast-generate")?P(r?1.2:.8):s.includes("veo-3.0-generate-001")||s.includes("veo-3.1-generate")?P(r?3.2:1.6):pe(.8,3.2)},"displayPrice")},Veo3FirstLastFrameNode:{displayPrice:a(e=>{const o=e.widgets?.find(d=>d.name==="model"),t=e.widgets?.find(d=>d.name==="generate_audio"),s=e.widgets?.find(d=>d.name==="duration");if(!o||!t||!s)return pe(.4,3.2,{note:"(varies with model & audio generation)"});const r=String(o.value),n=String(t.value).toLowerCase()==="true",l=parseFloat(String(s.value));let i=null;return r.includes("veo-3.1-fast-generate")?i=n?.15:.1:r.includes("veo-3.1-generate")&&(i=n?.4:.2),i===null?pe(.4,3.2):P(i*l)},"displayPrice")},LumaImageNode:{displayPrice:a(e=>{const o=e.widgets?.find(r=>r.name==="model"),t=e.widgets?.find(r=>r.name==="aspect_ratio");if(!o||!t)return pe(.0064,.026,{note:"(varies with model & aspect ratio)"});const s=String(o.value);return s.includes("photon-flash-1")?P(.0027):s.includes("photon-1")?P(.0104):P(.0246)},"displayPrice")},LumaImageModifyNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return pe(.0027,.0104,{note:"(varies with model)"});const t=String(o.value);return t.includes("photon-flash-1")?P(.0027):t.includes("photon-1")?P(.0104):P(.0246)},"displayPrice")},MoonvalleyTxt2VideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return P(1.5);const t=String(o.value);return P(t==="5s"?1.5:t==="10s"?3:1.5)},"displayPrice")},MoonvalleyImg2VideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return P(1.5);const t=String(o.value);return P(t==="5s"?1.5:t==="10s"?3:1.5)},"displayPrice")},MoonvalleyVideo2VideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return P(2.25);const t=String(o.value);return P(t==="5s"?2.25:t==="10s"?4:2.25)},"displayPrice")},RunwayTextToImageNode:{displayPrice:P(.11)},RunwayImageToVideoNodeGen3a:{displayPrice:Ma},RunwayImageToVideoNodeGen4:{displayPrice:Ma},RunwayFirstLastFrameNode:{displayPrice:Ma},Rodin3D_Regular:{displayPrice:P(.4)},Rodin3D_Detail:{displayPrice:P(.4)},Rodin3D_Smooth:{displayPrice:P(.4)},Rodin3D_Sketch:{displayPrice:P(.4)},TripoTextToModelNode:{displayPrice:a(e=>La(e,"text"),"displayPrice")},TripoImageToModelNode:{displayPrice:a(e=>La(e,"image"),"displayPrice")},TripoMultiviewToModelNode:{displayPrice:a(e=>La(e,"multiview"),"displayPrice")},TripoTextureNode:{displayPrice:a(e=>{const o=e.widgets?.find(t=>t.name==="texture_quality");return o?String(o.value).includes("detailed")?P(.2):P(.1):pe(.1,.2,{note:"(varies with quality)"})},"displayPrice")},TripoRigNode:{displayPrice:"$0.25/Run"},TripoConversionNode:{displayPrice:a(e=>{const o=a(n=>e.widgets?.find(l=>l.name===n)?.value,"getWidgetValue"),t=a((n,l)=>{const i=o(n);if(i==null||i==="")return l;if(typeof i=="number")return Number.isFinite(i)?i:l;const d=Number(i);return Number.isFinite(d)?d:l},"getNumber"),s=a((n,l)=>{const i=o(n);if(i==null)return l;if(typeof i=="number")return i!==0;const d=String(i).toLowerCase();return d==="true"?!0:d==="false"?!1:l},"getBool");let r=!1;return s("quad",!1)&&(r=!0),s("force_symmetry",!1)&&(r=!0),s("flatten_bottom",!1)&&(r=!0),s("pivot_to_center_bottom",!1)&&(r=!0),s("with_animation",!1)&&(r=!0),s("pack_uv",!1)&&(r=!0),s("bake",!1)&&(r=!0),s("export_vertex_colors",!1)&&(r=!0),s("animate_in_place",!1)&&(r=!0),t("face_limit",-1)!==-1&&(r=!0),t("texture_size",4096)!==4096&&(r=!0),t("flatten_bottom_threshold",0)!==0&&(r=!0),t("scale_factor",1)!==1&&(r=!0),String(o("texture_format")??"JPEG").toUpperCase()!=="JPEG"&&(r=!0),String(o("part_names")??"").trim().length>0&&(r=!0),String(o("fbx_preset")??"blender").toLowerCase()!=="blender"&&(r=!0),String(o("export_orientation")??"default").toLowerCase()!=="default"&&(r=!0),P((r?10:5)*.01)},"displayPrice")},TripoRetargetNode:{displayPrice:P(.1)},TripoRefineNode:{displayPrice:P(.3)},MeshyTextToModelNode:{displayPrice:P(ft(20))},MeshyRefineNode:{displayPrice:P(ft(10))},MeshyImageToModelNode:{displayPrice:h1},MeshyMultiImageToModelNode:{displayPrice:y1},MeshyRigModelNode:{displayPrice:P(ft(5))},MeshyAnimateModelNode:{displayPrice:P(ft(3))},MeshyTextureNode:{displayPrice:P(ft(10))},GeminiNode:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return"Token-based";const t=String(o.value);return t.includes("gemini-2.5-flash-preview-04-17")?Ge([3e-4,.0025],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gemini-2.5-flash")?Ge([3e-4,.0025],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gemini-2.5-pro-preview-05-06")?Ge([.00125,.01],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gemini-2.5-pro")?Ge([.00125,.01],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gemini-3-pro-preview")?Ge([.002,.012],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):"Token-based"},"displayPrice")},GeminiImageNode:{displayPrice:P(.039,{suffix:"/Image (1K)",approximate:!0})},GeminiImage2Node:{displayPrice:a(e=>{const o=e.widgets?.find(s=>s.name==="resolution");if(!o)return"Token-based";const t=String(o.value);return t.includes("1K")?P(.134,{suffix:"/Image",approximate:!0}):t.includes("2K")?P(.134,{suffix:"/Image",approximate:!0}):t.includes("4K")?P(.24,{suffix:"/Image",approximate:!0}):"Token-based"},"displayPrice")},OpenAIChatNode:{displayPrice:a(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")?Ge([.0011,.0044],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("o1-pro")?Ge([.15,.6],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("o1")?Ge([.015,.06],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("o3-mini")?Ge([.0011,.0044],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("o3")?Ge([.01,.04],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-4o")?Ge([.0025,.01],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-4.1-nano")?Ge([1e-4,4e-4],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-4.1-mini")?Ge([4e-4,.0016],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-4.1")?Ge([.002,.008],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-5-nano")?Ge([5e-5,4e-4],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-5-mini")?Ge([25e-5,.002],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-5")?Ge([.00125,.01],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):"Token-based"},"displayPrice")},ViduTextToVideoNode:{displayPrice:P(.4)},ViduImageToVideoNode:{displayPrice:P(.4)},ViduReferenceVideoNode:{displayPrice:P(.4)},ViduStartEndToVideoNode:{displayPrice:P(.4)},ByteDanceImageNode:{displayPrice:a(e=>{const o=e.widgets?.find(t=>t.name==="model");return o&&String(o.value).includes("seedream-3-0-t2i")?P(.03):"Token-based"},"displayPrice")},ByteDanceImageEditNode:{displayPrice:a(e=>{const o=e.widgets?.find(t=>t.name==="model");return o&&String(o.value).includes("seededit-3-0-i2i")?P(.03):"Token-based"},"displayPrice")},ByteDanceSeedreamNode:{displayPrice:a(e=>{const o=e.widgets?.find(r=>r.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),P(s,{suffix:" x images/Run",approximate:!0})},"displayPrice")},ByteDanceTextToVideoNode:{displayPrice:Ho},ByteDanceImageToVideoNode:{displayPrice:Ho},ByteDanceFirstLastFrameNode:{displayPrice:Ho},ByteDanceImageReferenceNode:{displayPrice:Ho},WanTextToVideoApi:{displayPrice:a(e=>{const o=e.widgets?.find(i=>i.name==="duration"),t=e.widgets?.find(i=>i.name==="size");if(!o||!t)return pe(.05,.15,{suffix:"/second"});const s=parseFloat(String(o.value)),r=String(t.value).toLowerCase(),n=r.includes("1080")?"1080p":r.includes("720")?"720p":r.includes("480")?"480p":r.match(/^\s*(\d{3,4}p)/)?.[1]??"",l={"480p":.05,"720p":.1,"1080p":.15}[n];return isNaN(s)||!l?pe(.05,.15,{suffix:"/second"}):P(Number((l*s).toFixed(2)))},"displayPrice")},WanImageToVideoApi:{displayPrice:a(e=>{const o=e.widgets?.find(l=>l.name==="duration"),t=e.widgets?.find(l=>l.name==="resolution");if(!o||!t)return pe(.05,.15,{suffix:"/second"});const s=parseFloat(String(o.value)),r=String(t.value).trim().toLowerCase(),n={"480p":.05,"720p":.1,"1080p":.15}[r];return isNaN(s)||!n?pe(.05,.15,{suffix:"/second"}):P(Number((n*s).toFixed(2)))},"displayPrice")},WanTextToImageApi:{displayPrice:P(.03)},WanImageToImageApi:{displayPrice:P(.03)},LtxvApiTextToVideo:{displayPrice:ms},LtxvApiImageToVideo:{displayPrice:ms},WanReferenceVideoApi:{displayPrice:a(e=>{const o=e.widgets?.find(d=>d.name==="duration"),t=e.widgets?.find(d=>d.name==="size");if(!o||!t)return pe(.7,1.5,{note:"(varies with size & duration)"});const s=parseFloat(String(o.value)),r=String(t.value).toLowerCase().includes("1080p")?.15:.1,n=2*r,l=5*r,i=s*r;return pe(n+i,l+i)},"displayPrice")},Vidu2TextToVideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(i=>i.name==="duration"),t=e.widgets?.find(i=>i.name==="resolution");if(!o||!t)return pe(.075,.6,{note:"(varies with duration & resolution)"});const s=parseFloat(String(o.value)),r=String(t.value).toLowerCase();let n,l;return r.includes("1080")?(n=.1,l=.05):(n=.075,l=.025),!Number.isFinite(s)||s<=0?pe(.075,.6,{note:"(varies with duration & resolution)"}):P(n+l*(s-1))},"displayPrice")},Vidu2ImageToVideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(f=>f.name==="model"),t=e.widgets?.find(f=>f.name==="duration"),s=e.widgets?.find(f=>f.name==="resolution");if(!o||!t||!s)return pe(.04,1,{note:"(varies with model, duration & resolution)"});const r=String(o.value).toLowerCase(),n=parseFloat(String(t.value)),l=String(s.value).toLowerCase().includes("1080");let i,d;if(r.includes("q2-pro-fast"))i=l?.08:.04,d=l?.02:.01;else if(r.includes("q2-pro"))i=l?.275:.075,d=l?.075:.05;else if(r.includes("q2-turbo"))if(l)i=.175,d=.05;else return n<=1?P(.04):n<=2?P(.05):P(.05+.05*(n-2));else return pe(.04,1,{note:"(varies with model, duration & resolution)"});return!Number.isFinite(n)||n<=0?pe(.04,1,{note:"(varies with model, duration & resolution)"}):P(i+d*(n-1))},"displayPrice")},Vidu2ReferenceVideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(v=>v.name==="duration"),t=e.widgets?.find(v=>v.name==="resolution"),s=e.widgets?.find(v=>v.name==="audio");if(!o)return pe(.125,1.5,{note:"(varies with duration, resolution & audio)"});const r=parseFloat(String(o.value)),n=String(t?.value??"").toLowerCase().includes("1080"),l=s?.value,i=l!=null&&String(l).toLowerCase()!=="false"&&String(l).toLowerCase()!=="none"&&l!=="";let d,f;n?(d=.375,f=.05):(d=.125,f=.025);let m=d;return Number.isFinite(r)&&r>0&&(m=d+f*(r-1)),i&&(m+=.075),P(m)},"displayPrice")},Vidu2StartEndToVideoNode:{displayPrice:a(e=>{const o=e.widgets?.find(f=>f.name==="model"),t=e.widgets?.find(f=>f.name==="duration"),s=e.widgets?.find(f=>f.name==="resolution");if(!o||!t||!s)return pe(.04,1,{note:"(varies with model, duration & resolution)"});const r=String(o.value).toLowerCase(),n=parseFloat(String(t.value)),l=String(s.value).toLowerCase().includes("1080");let i,d;if(r.includes("q2-pro-fast"))i=l?.08:.04,d=l?.02:.01;else if(r.includes("q2-pro"))i=l?.275:.075,d=l?.075:.05;else if(r.includes("q2-turbo"))if(l)i=.175,d=.05;else return!Number.isFinite(n)||n<=1?P(.04):n<=2?P(.05):P(.05+.05*(n-2));else return pe(.04,1,{note:"(varies with model, duration & resolution)"});return!Number.isFinite(n)||n<=0?P(i):P(i+d*(n-1))},"displayPrice")}};const b1=a(()=>({getNodeDisplayPrice:a(s=>{if(!s.constructor?.nodeData?.api_node)return"";const r=hs[s.constructor.nodeData.name];return r?typeof r.displayPrice=="function"?d1(r.displayPrice,s,""):r.displayPrice:""},"getNodeDisplayPrice"),getNodePricingConfig:a(s=>hs[s.constructor.nodeData?.name??""],"getNodePricingConfig"),getRelevantWidgetNames:a(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"],MeshyImageToModelNode:["should_texture"],MeshyMultiImageToModelNode:["should_texture"],GeminiNode:["model"],GeminiImage2Node:["resolution"],OpenAIChatNode:["model"],ByteDanceImageNode:["model"],ByteDanceImageEditNode:["model"],ByteDanceSeedreamNode:["model","sequential_image_generation","max_images"],ByteDanceTextToVideoNode:["model","duration","resolution","generate_audio"],ByteDanceImageToVideoNode:["model","duration","resolution","generate_audio"],ByteDanceFirstLastFrameNode:["model","duration","resolution","generate_audio"],ByteDanceImageReferenceNode:["model","duration","resolution"],WanTextToVideoApi:["duration","size"],WanImageToVideoApi:["duration","resolution"],WanReferenceVideoApi:["duration","size"],LtxvApiTextToVideo:["model","duration","resolution"],LtxvApiImageToVideo:["model","duration","resolution"],Vidu2TextToVideoNode:["model","duration","resolution"],Vidu2ImageToVideoNode:["model","duration","resolution"],Vidu2ReferenceVideoNode:["audio","duration","resolution"],Vidu2StartEndToVideoNode:["model","duration","resolution"]})[s]||[],"getRelevantWidgetNames")}),"useNodePricing");var on=new Image;on.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 w1=a(()=>{function e(n){if(!n.isSubgraphNode())return;n.badges=n.badges.filter(i=>!t(i));const l=o(n.subgraph);l.length>1?n.badges.push(r("Partner Nodes x "+l.length)):n.badges.push(...l)}a(e,"updateSubgraphCredits");function o(n,l=new Set){if(l.has(n.id))return[];l.add(n.id);const i=[];for(const d of n.nodes)i.push(...d.isSubgraphNode()?o(d.subgraph,l):d.badges.filter(f=>t(f)));return i}a(o,"collectCreditsBadges");function t(n){return(typeof n=="function"?n():n).icon?.image===on}a(t,"isCreditsBadge");const s=St();function r(n){const l=s.completedActivePalette.light_theme;return new cn({text:n,iconOptions:{image:on,size:8},fgColor:s.completedActivePalette.colors.litegraph_base.BADGE_FG_COLOR,bgColor:l?Gt("#8D6932",{lightness:.5}):"#8D6932"})}return a(r,"getCreditsBadge"),{getCreditsBadge:r,updateSubgraphCredits:e}},"usePriceBadge"),_1=a((e,o={})=>{const{widgetNames:t,triggerCanvasRedraw:s=!1}=o,r=E({});if(e.widgets){const n=t?e.widgets.filter(i=>t.includes(i.name)):e.widgets,l={};if(n.forEach(i=>{l[i.name]=i.value}),r.value=l,n.forEach(i=>{i.callback=ro(i.callback,()=>{r.value={...r.value,[i.name]:i.value},s&&e.graph?.setDirtyCanvas(!0,!0)})}),t&&t.length>n.length){const i=t.map(d=>n.some(f=>f.name==d)?-1:e.inputs.findIndex(f=>f.name==d)).filter(d=>d>=0);e.onConnectionsChange=ro(e.onConnectionsChange,(d,f,m)=>{i.includes(f)&&(r.value={...r.value,[i[f]]:m},s&&e.graph?.setDirtyCanvas(!0,!0))})}}return n=>kl(r,n)},"useComputedWithWidgetWatch"),k1=a(()=>{const e=ne(),o=fn(),t=St(),s=w1(),r=y(()=>e.get("Comfy.NodeBadge.NodeSourceBadgeMode")),n=y(()=>e.get("Comfy.NodeBadge.NodeIdBadgeMode")),l=y(()=>e.get("Comfy.NodeBadge.NodeLifeCycleBadgeMode")),i=y(()=>e.get("Comfy.NodeBadge.ShowApiPricing"));ie([r,n,l,i],()=>{Y.canvas?.setDirty(!0,!0)});const d=Ct();function f(m,v){return!(v===gt.None||m?.isCoreNode&&v===gt.HideBuiltIn)}a(f,"badgeTextVisible"),Re(()=>{const m=b1();o.registerExtension({name:"Comfy.NodeBadge",nodeCreated(v){v.badgePosition=Hl.TopRight;const h=y(()=>{const g=d.fromLGraphNode(v);return new cn({text:wl.truncate([f(g,n.value)?`#${v.id}`:"",f(g,l.value)?g?.nodeLifeCycleBadgeText??"":"",f(g,r.value)?g?.nodeSource?.badgeText??"":""].filter(b=>b.length>0).join(" "),{length:31}),fgColor:t.completedActivePalette.colors.litegraph_base.BADGE_FG_COLOR,bgColor:t.completedActivePalette.colors.litegraph_base.BADGE_BG_COLOR})});if(v.badges.push(()=>h.value),v.constructor.nodeData?.api_node&&i.value){const g=typeof m.getNodePricingConfig(v)?.displayPrice=="function";let b;const S=a(()=>{const k=m.getNodeDisplayPrice(v);return s.getCreditsBadge(k)},"createBadge");g?b=_1(v,{widgetNames:m.getRelevantWidgetNames(v.constructor.nodeData?.name),triggerCanvasRedraw:!0})(S):b=y(S),v.badges.push(()=>b.value)}},init(){Y.canvas.canvas.addEventListener("litegraph:set-graph",()=>{for(const v of Y.canvas.graph?.nodes??[])s.updateSubgraphCredits(v)}),Y.canvas.canvas.addEventListener("subgraph-converted",v=>s.updateSubgraphCredits(v.detail.subgraphNode))},afterConfigureGraph(){for(const v of Y.canvas.graph?.nodes??[])s.updateSubgraphCredits(v)}})})},"useNodeBadge"),C1=a(e=>{const o=Qs(),t=Ro(),s=nt();Ks(()=>e.value,{getDropEffect:a(r=>r.source.data.type==="tree-explorer-node"?"copy":"move","getDropEffect"),onDrop:a(async r=>{const n=r.location.current.input,l=r.source.data;if(l.type==="tree-explorer-node"){const i=l.data,d=fr().clientPosToCanvasPos([n.clientX,n.clientY]);if(i.data instanceof $u){const f=i.data,m=[...d];m[1]+=ge.NODE_TITLE_HEIGHT,t.addNodeOnGraph(f,{pos:m})}else if(i.data instanceof Uu){const f=i.data,m=d,v=Y.canvas.graph?.getNodeOnPos(m[0],m[1]);let h=null,g=null;if(v){const b=o.getAllNodeProviders(f.directory);for(const S of b)S.nodeDef.name===v.comfyClass&&(g=v,h=S)}if(!g){const b=o.getNodeProvider(f.directory);b&&(g=t.addNodeOnGraph(b.nodeDef,{pos:m}),h=b)}if(g){const b=g.widgets?.find(S=>S.name===h?.key);b&&(b.value=f.file_name)}}else if(i.data instanceof er){const f=i.data;await s.insertWorkflow(f,{position:d})}}},"onDrop")})},"useCanvasDrop"),S1=a(()=>{Zt.install(Ke.prototype,"getCanvasMenuOptions");const{getCanvasMenuOptions:e}=Ke.prototype,o=a(function(...i){const d=e.apply(this,i),f=Y.collectCanvasMenuItems(this);for(const v of f)d.push(v);const m=Zt.extractLegacyItems("getCanvasMenuOptions",this,...i);for(const v of m)d.push(v);for(const v of d)v?.content&&(v.content=Ze(`contextMenu.${v.content}`,v.content));return d},"getCanvasCenterMenuOptions");Ke.prototype.getCanvasMenuOptions=o,Zt.registerWrapper("getCanvasMenuOptions",o,e,Ke.prototype),Zt.install(Ke.prototype,"getNodeMenuOptions");const t=Ke.prototype.getNodeMenuOptions,s=a(function(...i){const d=t.apply(this,i),f=i[0],m=Y.collectNodeMenuItems(f);for(const h of m)d.push(h);const v=Zt.extractLegacyItems("getNodeMenuOptions",this,...i);for(const h of v)d.push(h);return d},"getNodeMenuOptionsWithExtensions");Ke.prototype.getNodeMenuOptions=s,Zt.registerWrapper("getNodeMenuOptions",s,t,Ke.prototype);function r(i,d){if(!i)return;const f=/Convert (.*) to input/,m=/Convert (.*) to widget/,v=Ze("contextMenu.Convert ","Convert "),h=Ze("contextMenu. to input"," to input"),g=Ze("contextMenu. to widget"," to widget");for(const b of i){if(typeof b=="string"||(r(b?.submenu?.options,d),!b?.content))continue;oi(`contextMenu.${b.content}`)&&(b.content=Ze(`contextMenu.${b.content}`,b.content));const S=d.extra||d.parentMenu?.options?.extra,k=b.content?.match(f);if(k){let C=k[1];S?.inputs?.find(T=>{if(T.name!=C)return!1;C=T.label?T.label:T.name}),S?.widgets?.find(T=>{if(T.name!=C)return!1;C=T.label?T.label:T.name}),b.content=v+C+h;continue}const w=b.content?.match(m);if(w){let C=w[1];S?.inputs?.find(T=>{if(T.name!=C)return!1;C=T.label?T.label:T.name}),S?.widgets?.find(T=>{if(T.name!=C)return!1;C=T.label?T.label:T.name}),b.content=v+C+g;continue}}}a(r,"translateMenus");const n=ge.ContextMenu;function l(i,d){return d.title&&(d.title=Ze(`nodeDefs.${Pt(d.title)}.display_name`,d.title)),r(i,d),new n(i,d)}a(l,"ContextMenu$1"),ge.ContextMenu=l,ge.ContextMenu.prototype=n.prototype},"useContextMenuTranslation");var x1=['<meta charset="utf-8"><div><span data-metadata="','"></span></div><span style="white-space:pre-wrap;">Text</span>'];const T1=a(()=>{const e=fe();Oe(document,"copy",o=>{if(Ei(o.target))return;const t=e.canvas;if(t?.selectedItems){const s=t.copyToClipboard(),r=btoa(String.fromCharCode(...Array.from(new TextEncoder().encode(s))));return o.clipboardData?.setData("text/html",x1.join(r)),o.preventDefault(),o.stopImmediatePropagation(),!1}})},"useCopy"),N1=a(()=>{window.LiteGraph=ge,window.LGraph=ri,window.LLink=Ul,window.LGraphNode=_t,window.LGraphGroup=Ht,window.DragAndScale=ii,window.LGraphCanvas=Ke,window.ContextMenu=jl,window.LGraphBadge=cn},"useGlobalLitegraph"),I1=a(()=>{const e=ne(),o=fe();we(()=>{const t=e.get("Comfy.Graph.CanvasInfo");o.canvas&&(o.canvas.show_info=t,o.canvas.draw(!1,!0))}),we(()=>{const t=e.get("Comfy.Graph.ZoomSpeed");o.canvas&&(o.canvas.zoom_speed=t)}),we(()=>{ge.snaps_for_comfy=e.get("Comfy.Node.AutoSnapLinkToSlot")}),we(()=>{ge.snap_highlights_node=e.get("Comfy.Node.SnapHighlightsNode")}),we(()=>{_t.keepAllLinksOnBypass=e.get("Comfy.Node.BypassAllLinksOnDelete")}),we(()=>{ge.middle_click_slot_add_default_node=e.get("Comfy.Node.MiddleClickRerouteNode")}),we(()=>{const t=e.get("Comfy.LinkRenderMode");o.canvas&&(o.canvas.links_render_mode=t,o.canvas.setDirty(!1,!0))}),we(()=>{const t=e.get("LiteGraph.Canvas.MinFontSizeForLOD");o.canvas&&(o.canvas.min_font_size_for_lod=t,o.canvas.setDirty(!0,!0))}),we(()=>{const t=e.get("Comfy.Graph.LinkMarkers"),{canvas:s}=o;s&&(s.linkMarkerShape=t,s.setDirty(!1,!0))}),we(()=>{const t=e.get("LiteGraph.Canvas.MaximumFps"),{canvas:s}=o;s&&(s.maximumFps=t)}),we(()=>{const t=e.get("Comfy.Graph.CtrlShiftZoom"),{canvas:s}=o;s&&(s.dragZoomEnabled=t)}),we(()=>{const t=e.get("Comfy.Graph.LiveSelection"),{canvas:s}=o;s&&(s.liveSelection=t)}),we(()=>{Xo.doubleClickTime=e.get("Comfy.Pointer.DoubleClickTime")}),we(()=>{Xo.bufferTime=e.get("Comfy.Pointer.ClickBufferTime")}),we(()=>{Xo.maxClickDrift=e.get("Comfy.Pointer.ClickDrift")}),we(()=>{ge.CANVAS_GRID_SIZE=e.get("Comfy.SnapToGrid.GridSize")}),we(()=>{ge.alwaysSnapToGrid=e.get("pysssss.SnapToGrid")}),we(()=>{ge.context_menu_scaling=e.get("LiteGraph.ContextMenu.Scaling")}),we(()=>{ge.Reroute.maxSplineOffset=e.get("LiteGraph.Reroute.SplineOffset")}),we(()=>{const t=e.get("Comfy.Canvas.NavigationMode");ge.canvasNavigationMode=t,ge.macTrackpadGestures=t==="standard"}),we(()=>{ge.leftMouseClickBehavior=e.get("Comfy.Canvas.LeftMouseClickBehavior")}),we(()=>{ge.mouseWheelScroll=e.get("Comfy.Canvas.MouseWheelScroll")}),we(()=>{ge.saveViewportWithGraph=e.get("Comfy.EnableWorkflowViewRestore")})},"useLitegraphSettings"),P1=[{id:"Comfy.Memory.AllowManualUnload",name:"Allow manual unload of models and execution cache via user command",type:"hidden",defaultValue:!Fe,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(It),defaultValue:It.CONTEXT_MENU,defaultsByInstallVersion:{"1.24.1":It.SEARCH_BOX}},{id:"Comfy.LinkRelease.ActionShift",category:["LiteGraph","LinkRelease","ActionShift"],name:"Action on link release (Shift)",type:"combo",options:Object.values(It),defaultValue:It.SEARCH_BOX,defaultsByInstallVersion:{"1.24.1":It.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:a(()=>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:a(async(e,o)=>{if(!o)return;const t=ne();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:a(async e=>{const o=ne(),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:a(async e=>{const o=ne(),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:Fe?"hidden":"boolean",defaultValue:!Fe,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:Fe?"hidden":"boolean",defaultValue:!1},{id:"Comfy.ModelLibrary.NameFormat",name:"What name to display in the model library tree view",tooltip:'Select "filename" to render a simplified view of the raw filename (without directory or ".safetensors" extension) in the model list. Select "title" to display the configurable model metadata title.',type:"combo",options:["filename","title"],defaultValue:"title"},{id:"Comfy.Locale",name:"Language",type:"combo",options:[{value:"en",text:"English"},{value:"zh",text:"中文"},{value:"zh-TW",text:"繁體中文"},{value:"ru",text:"Русский"},{value:"ja",text:"日本語"},{value:"ko",text:"한국어"},{value:"fr",text:"Français"},{value:"es",text:"Español"},{value:"ar",text:"عربي"},{value:"tr",text:"Türkçe"},{value:"pt-BR",text:"Português (BR)"},{value:"fa",text:"فارسی"}],defaultValue:a(()=>navigator.language.split("-")[0]||"en","defaultValue")},{id:"Comfy.NodeBadge.NodeSourceBadgeMode",category:["LiteGraph","Node","NodeSourceBadgeMode"],name:"Node source badge mode",type:"combo",options:Object.values(gt),defaultValue:gt.HideBuiltIn},{id:"Comfy.NodeBadge.NodeIdBadgeMode",category:["LiteGraph","Node","NodeIdBadgeMode"],name:"Node ID badge mode",type:"combo",options:[gt.None,gt.ShowAll],defaultValue:gt.None},{id:"Comfy.NodeBadge.NodeLifeCycleBadgeMode",category:["LiteGraph","Node","NodeLifeCycleBadgeMode"],name:"Node life cycle badge mode",type:"combo",options:[gt.None,gt.ShowAll],defaultValue:gt.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:a(e=>{const o=document.getElementById("comfy-dev-save-api-button");o&&(o.style.display=e?"flex":"none")},"onChange")},{id:"Comfy.UI.TabBarLayout",category:["Appearance","General"],name:"Tab Bar Layout",type:"combo",options:["Default","Integrated"],tooltip:'Controls the layout of the tab bar. "Integrated" moves Help and User controls into the tab bar area.',defaultValue:"Default"},{id:"Comfy.UseNewMenu",category:["Comfy","Menu","UseNewMenu"],defaultValue:"Top",name:"Use new menu",type:"combo",options:["Disabled","Top"],tooltip:"Enable the redesigned top menu bar.",migrateDeprecatedValue:a(e=>e==="Floating"||e==="Bottom"?"Top":e,"migrateDeprecatedValue")},{id:"Comfy.Workflow.WorkflowTabsPosition",name:"Opened workflows position",type:"combo",options:["Sidebar","Topbar"],defaultValue:"Topbar",migrateDeprecatedValue:a(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:Fe?4: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:a(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:ge.STRAIGHT_LINK,text:"Straight"},{value:ge.LINEAR_LINK,text:"Linear"},{value:ge.SPLINE_LINK,text:"Spline"},{value:ge.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:Ft.Circle,type:"combo",options:[{value:Ft.None,text:"None"},{value:Ft.Circle,text:"Circle"},{value:Ft.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).
5
5
 
6
6
  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.
7
7
 
8
- 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:ge.CANVAS_GRID_SIZE},{id:"pysssss.SnapToGrid",category:["LiteGraph","Canvas","AlwaysSnapToGrid"],name:"Always snap to grid",type:"boolean",defaultValue:!1,versionAdded:"1.3.13"},{id:"Comfy.Server.ServerConfigValues",name:"Server config values for frontend display",tooltip:"Server config values used for frontend display only",type:"hidden",defaultValue:{},versionAdded:"1.4.8"},{id:"Comfy.Server.LaunchArgs",name:"Server launch arguments",tooltip:"These are the actual arguments that are passed to the server when it is launched.",type:"hidden",defaultValue:{},versionAdded:"1.4.8"},{id:"Comfy.Queue.MaxHistoryItems",name:"Queue history size",tooltip:"The maximum number of tasks that show in the queue history.",type:"slider",attrs:{min:2,max:256,step:2},defaultValue:64,versionAdded:"1.4.12"},{id:"Comfy.Queue.History.Expanded",name:"Queue history expanded",type:"hidden",defaultValue:!1,versionAdded:"1.37.0"},{id:"Comfy.Execution.PreviewMethod",category:["Comfy","Execution","PreviewMethod"],name:"Live preview method",tooltip:'Live preview method during image generation. "default" uses the server CLI setting.',type:"combo",options:["default","none","auto","latent2rgb","taesd"],defaultValue:"default",versionAdded:"1.36.0"},{id:"LiteGraph.Canvas.MaximumFps",name:"Maximum FPS",tooltip:"The maximum frames per second that the canvas is allowed to render. Caps GPU usage at the cost of smoothness. If 0, the screen refresh rate is used. Default: 0",type:"slider",attrs:{min:0,max:120},defaultValue:0,versionAdded:"1.5.1"},{id:"Comfy.EnableWorkflowViewRestore",category:["Comfy","Workflow","EnableWorkflowViewRestore"],name:"Save and restore canvas position and zoom level in workflows",type:"boolean",defaultValue:!0,versionModified:"1.5.4"},{id:"Comfy.Workflow.ConfirmDelete",name:"Show confirmation when deleting workflows",type:"boolean",defaultValue:!0,versionAdded:"1.5.6"},{id:"Comfy.ColorPalette",name:"The active color palette id",type:"hidden",defaultValue:"dark",versionModified:"1.6.7",migrateDeprecatedValue(e){return e.startsWith("custom_")?e.replace("custom_",""):e}},{id:"Comfy.CustomColorPalettes",name:"Custom color palettes",type:"hidden",defaultValue:{},versionModified:"1.6.7"},{id:"Comfy.WidgetControlMode",category:["Comfy","Node Widget","WidgetControlMode"],name:"Widget control mode",tooltip:"Controls when widget values are updated (randomize/increment/decrement), either before the prompt is queued or after.",type:"combo",defaultValue:"after",options:["before","after"],versionModified:"1.6.10"},{id:"Comfy.TutorialCompleted",name:"Tutorial completed",type:"hidden",defaultValue:!1,versionAdded:"1.8.7"},{id:"Comfy.InstalledVersion",name:"The frontend version that was running when the user first installed ComfyUI",type:"hidden",defaultValue:null,versionAdded:"1.24.0"},{id:"LiteGraph.ContextMenu.Scaling",name:"Scale node combo widget menus (lists) when zoomed in",defaultValue:!1,type:"boolean",versionAdded:"1.8.8"},{id:"LiteGraph.Canvas.LowQualityRenderingZoomThreshold",type:"hidden",deprecated:!0,name:"Low quality rendering zoom threshold (deprecated)",tooltip:"Zoom level threshold for performance mode. Lower values (0.1) = quality at all zoom levels. Higher values (1.0) = performance mode even when zoomed in. Performance mode simplifies rendering by hiding text labels, shadows, and details.",attrs:{min:.1,max:1,step:.01},defaultValue:.6,versionAdded:"1.9.1",versionModified:"1.26.7"},{id:"LiteGraph.Canvas.MinFontSizeForLOD",name:"Zoom Node Level of Detail - font size threshold",tooltip:"Controls when the nodes switch to low quality LOD rendering. Uses font size in pixels to determine when to switch. Set to 0 to disable. Values 1-24 set the minimum font size threshold for LOD - higher values (24px) = switch nodes to simplified rendering sooner when zooming out, lower values (1px) = maintain full node quality longer.",type:"slider",attrs:{min:0,max:24,step:1},defaultValue:8,versionAdded:"1.26.7",hideInVueNodes:!0},{id:"Comfy.Canvas.SelectionToolbox",category:["LiteGraph","Canvas","SelectionToolbox"],name:"Show selection toolbox",type:"boolean",defaultValue:!0,versionAdded:"1.10.5"},{id:"LiteGraph.Reroute.SplineOffset",name:"Reroute spline offset",tooltip:"The bezier control point offset from the reroute centre point",type:"slider",defaultValue:20,attrs:{min:0,max:400},versionAdded:"1.15.7"},{id:"Comfy.Toast.DisableReconnectingToast",name:"Disable toasts when reconnecting or reconnected",type:"hidden",defaultValue:!1,versionAdded:"1.15.12"},{id:"Comfy.Minimap.Visible",name:"Display minimap on canvas",type:"hidden",defaultValue:window.innerWidth>=pa.lg,versionAdded:"1.25.0"},{id:"Comfy.Minimap.NodeColors",name:"Display node with its original color on minimap",type:"hidden",defaultValue:!1,versionAdded:"1.26.0"},{id:"Comfy.Minimap.ShowLinks",name:"Display links on minimap",type:"hidden",defaultValue:!0,versionAdded:"1.26.0"},{id:"Comfy.Minimap.ShowGroups",name:"Display node groups on minimap",type:"hidden",defaultValue:!0,versionAdded:"1.26.0"},{id:"Comfy.Minimap.RenderBypassState",name:"Render bypass state on minimap",type:"hidden",defaultValue:!0,versionAdded:"1.26.0"},{id:"Comfy.Minimap.RenderErrorState",name:"Render error state on minimap",type:"hidden",defaultValue:!0,versionAdded:"1.26.0"},{id:"Comfy.Workflow.AutoSaveDelay",name:"Auto Save Delay (ms)",defaultValue:1e3,type:"number",tooltip:'Only applies if Auto Save is set to "after delay".',versionAdded:"1.16.0"},{id:"Comfy.Workflow.AutoSave",name:"Auto Save",type:"combo",options:["off","after delay"],defaultValue:"off",versionAdded:"1.16.0"},{id:"Comfy.Workflow.Persist",name:"Persist workflow state and restore on page (re)load",type:"boolean",defaultValue:!0,versionAdded:"1.16.1"},{id:"LiteGraph.Node.DefaultPadding",name:"Always shrink new nodes",tooltip:"Resize nodes to the smallest possible size when created. When disabled, a newly added node will be widened slightly to show widget values.",type:"boolean",defaultValue:!1,versionAdded:"1.18.0"},{id:"Comfy.Canvas.BackgroundImage",category:["Appearance","Canvas","Background"],name:"Canvas background image",type:"backgroundImage",tooltip:'Image URL for the canvas background. You can right-click an image in the outputs panel and select "Set as Background" to use it, or upload your own image using the upload button.',defaultValue:"",versionAdded:"1.20.4",versionModified:"1.20.5"},{id:"Comfy.Release.Version",name:"Last seen release version",type:"hidden",defaultValue:""},{id:"Comfy.Release.Status",name:"Release status",type:"hidden",defaultValue:"skipped"},{id:"Comfy.Release.Timestamp",name:"Release seen timestamp",type:"hidden",defaultValue:0},{id:"Comfy.Templates.SelectedModels",name:"Template library - Selected model filters",type:"hidden",defaultValue:[]},{id:"Comfy.Templates.SelectedUseCases",name:"Template library - Selected use case filters",type:"hidden",defaultValue:[]},{id:"Comfy.Templates.SelectedRunsOn",name:"Template library - Selected runs on filters",type:"hidden",defaultValue:[]},{id:"Comfy.Templates.SortBy",name:"Template library - Sort preference",type:"hidden",defaultValue:"default"},{id:"Comfy.VueNodes.Enabled",category:["Comfy","Nodes 2.0","VueNodesEnabled"],name:"Modern Node Design (Nodes 2.0)",type:"boolean",tooltip:"Modern: DOM-based rendering with enhanced interactivity, native browser features, and updated visual design. Classic: Traditional canvas rendering.",defaultValue:!1,sortOrder:100,experimental:!0,versionAdded:"1.27.1"},{id:"Comfy.VueNodes.AutoScaleLayout",category:["Comfy","Nodes 2.0","AutoScaleLayout"],name:"Auto-scale layout (Nodes 2.0)",tooltip:"Automatically scale node positions when switching to Nodes 2.0 rendering to prevent overlap",type:"boolean",sortOrder:50,experimental:!0,defaultValue:!0,versionAdded:"1.30.3"},{id:"Comfy.Assets.UseAssetAPI",name:"Use Asset API for model library",type:"hidden",tooltip:"Use new Asset API for model browsing",defaultValue:!!Fe,experimental:!0},{id:"Comfy.VersionCompatibility.DisableWarnings",name:"Disable version compatibility warnings",type:"hidden",defaultValue:!1,versionAdded:"1.34.1"},{id:"Comfy.RightSidePanel.IsOpen",name:"Right side panel open state",type:"hidden",defaultValue:!1,versionAdded:"1.37.0"},{id:"Comfy.Queue.QPOV2",category:["Comfy","Queue","Layout"],name:"Use the unified job queue in the Assets side panel",type:"boolean",tooltip:"Replaces the floating job queue panel with an equivalent job queue embedded in the Assets side panel. You can disable this to return to the floating panel layout.",defaultValue:!0,experimental:!0}];function $1(){const e=Ve(),o=ne(),t=nt(),s=y(()=>o.get("Comfy.Workflow.AutoSave")),r=y(()=>o.get("Comfy.Workflow.AutoSaveDelay"));let n=null,l=!1,i=!1;const d=a(()=>{if(n&&(clearTimeout(n),n=null),s.value==="after delay"){if(l){i=!0;return}const m=r.value;n=setTimeout(async()=>{const v=e.activeWorkflow;if(v?.isModified&&v.isPersisted)try{l=!0,await t.saveWorkflow(v)}catch(h){console.error("Auto save failed:",h)}finally{l=!1,i&&(i=!1,d())}},m)}},"scheduleAutoSave");ie(s,m=>{n&&(clearTimeout(n),n=null),m==="after delay"&&e.activeWorkflow?.isModified&&d()},{immediate:!0});const f=a(()=>{d()},"onGraphChanged");Ne.addEventListener("graphChanged",f),kt(()=>{n&&(clearTimeout(n),n=null),Ne.removeEventListener("graphChanged",f)})}a($1,"useWorkflowAutoSave");function M1(){const e=Gs(),o=Fs(),{t}=ue(),s=lo(),r=Dr(),n=fe(),l=hr.TEMPLATE,i=["linear"],d=a(h=>/^[a-zA-Z0-9_.-]+$/.test(h),"isValidParameter"),f=a(h=>i.includes(h),"isSupportedMode"),m=a(()=>{const h={...e.query};delete h.template,delete h.source,delete h.mode,o.replace({query:h})},"cleanupUrlParams");return{loadTemplateFromUrl:a(async()=>{const h=e.query.template;if(!h||typeof h!="string")return;if(!d(h)){console.warn(`[useTemplateUrlLoader] Invalid template parameter format: ${h}`);return}const g=e.query.source||"default";if(!d(g)){console.warn(`[useTemplateUrlLoader] Invalid source parameter format: ${g}`);return}const b=e.query.mode;if(b&&(typeof b!="string"||!d(b))){console.warn(`[useTemplateUrlLoader] Invalid mode parameter format: ${b}`);return}b&&!f(b)&&console.warn(`[useTemplateUrlLoader] Unsupported mode parameter: ${b}. Supported modes: ${i.join(", ")}`);try{await r.loadTemplates(),await r.loadWorkflowTemplate(h,g)?b==="linear"&&(n.linearMode=!0):s.add({severity:"error",summary:t("g.error"),detail:t("templateWorkflows.error.templateNotFound",{templateName:h}),life:3e3})}catch(S){console.error("[useTemplateUrlLoader] Failed to load template from URL:",S),s.add({severity:"error",summary:t("g.error"),detail:t("g.errorLoadingTemplate"),life:3e3})}finally{m(),ju(l)}},"loadTemplateFromUrl")}}a(M1,"useTemplateUrlLoader");function D1(){const e=Ve(),o=ne(),t=Gs(),s=Fs(),r=M1(),n=hr.TEMPLATE,l=a(async()=>{Hu(n);const I=Gu(n,t.query);return I&&await s.replace({query:I}),I??t.query},"ensureTemplateQueryFromIntent"),i=y(()=>o.get("Comfy.Workflow.Persist")),d=a(()=>{if(!i.value)return;const I=JSON.stringify(Y.rootGraph.serialize());try{localStorage.setItem("workflow",I),Ne.clientId&&sessionStorage.setItem(`workflow:${Ne.clientId}`,I)}catch(_){const N=Object.keys(sessionStorage).filter($=>$.startsWith("workflow:")||$==="workflow");throw console.error("QuotaExceededError details:",{workflowSizeKB:Math.round(I.length/1024),totalStorageItems:Object.keys(sessionStorage).length,ourWorkflowKeys:N.length,ourWorkflowSizes:N.map($=>({key:$,sizeKB:Math.round(sessionStorage[$].length/1024)})),error:_ instanceof Error?_.message:String(_)}),_}},"persistCurrentWorkflow"),f=a(async(I,_)=>{if(!I)return!1;const N=JSON.parse(I);return await Y.loadGraphData(N,!0,!0,_),!0},"loadWorkflowFromStorage"),m=a(async()=>{const I=Ca("Comfy.PreviousWorkflow"),_=Ne.initialClientId??Ne.clientId;return _&&await f(sessionStorage.getItem(`workflow:${_}`),I)?!0:await f(localStorage.getItem("workflow"),I)},"loadPreviousWorkflowFromStorage"),v=a(async()=>{o.get("Comfy.TutorialCompleted")?await Y.loadGraphData():(await o.set("Comfy.TutorialCompleted",!0),await nt().loadBlankWorkflow(),await Ce().execute("Comfy.BrowseTemplates"))},"loadDefaultWorkflow"),h=a(async()=>{if(i.value)try{await m()||await v()}catch(I){console.error("Error loading previous workflow",I),await v()}},"initializeWorkflow"),g=a(async()=>{const I=await l();I.template&&typeof I.template=="string"&&await r.loadTemplateFromUrl()},"loadTemplateFromUrlIfPresent");ie(()=>e.activeWorkflow?.key,I=>{I&&(ka("Comfy.PreviousWorkflow",I),d())}),Ne.addEventListener("graphChanged",d),Bs(()=>{Ne.removeEventListener("graphChanged",d)});const b=y(()=>e.openWorkflows),S=y(()=>e.activeWorkflow),k=y(()=>!b.value||!S.value?{paths:[],activeIndex:-1}:{paths:b.value.filter(I=>I?.isPersisted).map(I=>I.path),activeIndex:b.value.findIndex(I=>I.path===S.value?.path)}),w=JSON.parse(Ca("Comfy.OpenWorkflowsPaths")||"[]"),C=JSON.parse(Ca("Comfy.ActiveWorkflowIndex")||"-1");return ie(k,({paths:I,activeIndex:_})=>{i.value&&(ka("Comfy.OpenWorkflowsPaths",JSON.stringify(I)),ka("Comfy.ActiveWorkflowIndex",JSON.stringify(_)))}),{initializeWorkflow:h,loadTemplateFromUrlIfPresent:g,restoreWorkflowTabsState:a(()=>{i.value&&w?.length>0&&C>=0&&e.openWorkflowsInBackground({left:w.slice(0,C),right:w.slice(C)})},"restoreWorkflowTabsState")}}a(D1,"useWorkflowPersistence");function L1(e,o={}){const{settleDelay:t=256,passive:s=!0}=o,r=E(!1),n=a(()=>{r.value=!0},"markTransformActive"),l=Tl(()=>{r.value=!1},t);return Oe(e,"wheel",a(()=>{n(),l()},"handleWheel"),{capture:!0,passive:s}),{isTransforming:r}}a(L1,"useTransformSettling");function A1(){const e=Es({x:0,y:0,z:1}),o=y(()=>({transform:`scale(${e.z}) translate(${e.x}px, ${e.y}px)`,transformOrigin:"0 0"}));function t(h){!h||!h.ds||(e.x=h.ds.offset[0],e.y=h.ds.offset[1],e.z=h.ds.scale||1)}a(t,"syncWithCanvas");function s(h){return{x:(h.x+e.x)*e.z,y:(h.y+e.y)*e.z}}a(s,"canvasToScreen");const r=a(h=>({x:h.x/e.z-e.x,y:h.y/e.z-e.y}),"screenToCanvas");function n(h,g){const b=s({x:h[0],y:h[1]}),S=g[0]*e.z,k=g[1]*e.z;return new DOMRect(b.x,b.y,S,k)}a(n,"getNodeScreenBounds");function l(h){return e.z<.1?Math.min(h*5,2):e.z>3?Math.max(h*.5,.05):h}a(l,"calculateAdjustedMargin");function i(h){return Math.max(h[0],h[1])*e.z<4}a(i,"isNodeTooSmall");function d(h,g){const b=h.width*g,S=h.height*g;return{left:-b,right:h.width+b,top:-S,bottom:h.height+S}}a(d,"getExpandedViewportBounds");function f(h,g,b){const S=h.x+g[0]*e.z,k=h.y+g[1]*e.z;return!(S<b.left||h.x>b.right||k<b.top||h.y>b.bottom)}a(f,"testViewportIntersection");function m(h,g,b,S=.2){return i(g)?!1:f(s({x:h[0],y:h[1]}),g,d(b,l(S)))}a(m,"isNodeInViewport");function v(h,g=.2){const b=h.width*g,S=h.height*g,k=r({x:-b,y:-S}),w=r({x:h.width+b,y:h.height+S});return{x:k.x,y:k.y,width:w.x-k.x,height:w.y-k.y}}return a(v,"getViewportBounds"),{camera:Ga(e),transformStyle:o,syncWithCanvas:t,canvasToScreen:s,screenToCanvas:r,getNodeScreenBounds:n,isNodeInViewport:m,getViewportBounds:v}}a(A1,"useTransformStateIndividual");const Vn=ga(A1);var E1=q({__name:"TransformPane",props:{canvas:{}},setup(e){const o=e,{transformStyle:t,syncWithCanvas:s}=Vn(),{isTransforming:r}=L1(y(()=>o.canvas?.canvas),{settleDelay:16});return io(()=>{o.canvas&&s(o.canvas)},{immediate:!0}),(n,l)=>(p(),x("div",{"data-testid":"transform-pane",class:Q(u(ae)("absolute inset-0 w-full h-full pointer-events-none",u(r)?"transform-pane--interacting":"will-change-auto")),style:be(u(t))},[_e(n.$slots,"default",{},void 0,!0)],6))}}),V1=Be(E1,[["__scopeId","data-v-4d46eee6"]]),O1={class:"flex items-center gap-2"},R1={for:"node-colors"},W1={class:"flex items-center gap-2"},B1={for:"show-links"},z1={class:"flex items-center gap-2"},U1={for:"show-groups"},F1={class:"flex items-center gap-2"},G1={for:"render-bypass"},H1={class:"flex items-center gap-2"},j1={for:"render-error"},q1=q({__name:"MiniMapPanel",props:{panelStyles:{},nodeColors:{type:Boolean},showLinks:{type:Boolean},showGroups:{type:Boolean},renderBypass:{type:Boolean},renderError:{type:Boolean}},emits:["updateOption"],setup(e){return(o,t)=>(p(),x("div",{class:"minimap-panel mr-2 flex flex-col gap-2 bg-comfy-menu-bg p-3 text-sm shadow-interface",style:be(o.panelStyles)},[c("div",O1,[L(u(bo),{"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]=c("i",{class:"icon-[lucide--palette]"},null,-1)),c("label",R1,R(o.$t("minimap.nodeColors")),1)]),c("div",W1,[L(u(bo),{"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]=c("i",{class:"icon-[lucide--route]"},null,-1)),c("label",B1,R(o.$t("minimap.showLinks")),1)]),c("div",z1,[L(u(bo),{"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]=c("i",{class:"icon-[lucide--frame]"},null,-1)),c("label",U1,R(o.$t("minimap.showGroups")),1)]),c("div",F1,[L(u(bo),{"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]=c("i",{class:"icon-[lucide--circle-slash-2]"},null,-1)),c("label",G1,R(o.$t("minimap.renderBypassState")),1)]),c("div",H1,[L(u(bo),{"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]=c("i",{class:"icon-[lucide--message-circle-warning]"},null,-1)),c("label",j1,R(o.$t("minimap.renderErrorState")),1)])],4))}}),K1=q1,Q1=["width","height"],Y1=q({__name:"MiniMap",setup(e){const o=Ce(),t=E(),s=Qe("containerRef"),r=Qe("canvasRef"),{initialized:n,visible:l,containerStyles:i,viewportStyles:d,width:f,height:m,panelStyles:v,nodeColors:h,showLinks:g,showGroups:b,renderBypass:S,renderError:k,updateOption:w,destroy:C,handlePointerDown:T,handlePointerMove:I,handlePointerUp:_,handlePointerCancel:N,handleWheel:$,setMinimapRef:V}=xn({containerRefMaybe:s,canvasRefMaybe:r}),B=E(!1),D=a(()=>{B.value=!B.value},"toggleOptionsPanel");return Re(()=>{t.value&&V(t.value)}),kt(()=>{C()}),(U,j)=>u(l)&&u(n)?(p(),x("div",{key:0,ref_key:"minimapRef",ref:t,class:"minimap-main-container absolute right-0 bottom-[54px] z-1000 flex"},[B.value?(p(),O(K1,{key:0,"panel-styles":u(v),"node-colors":u(h),"show-links":u(g),"show-groups":u(b),"render-bypass":u(S),"render-error":u(k),onUpdateOption:u(w)},null,8,["panel-styles","node-colors","show-links","show-groups","render-bypass","render-error","onUpdateOption"])):A("",!0),c("div",{ref_key:"containerRef",ref:s,class:"litegraph-minimap relative border border-interface-stroke bg-comfy-menu-bg shadow-interface",style:be(u(i))},[L(X,{class:"absolute top-0 left-0 z-10",size:"icon",variant:"muted-textonly","aria-label":U.$t("g.settings"),onClick:ke(D,["stop"])},{default:M(()=>j[7]||(j[7]=[c("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["aria-label"]),L(X,{class:"absolute top-0 right-0 z-10",size:"icon",variant:"muted-textonly","aria-label":U.$t("g.close"),"data-testid":"close-minmap-button",onClick:j[0]||(j[0]=ke(()=>u(o).execute("Comfy.Canvas.ToggleMinimap"),["stop"]))},{default:M(()=>j[8]||(j[8]=[c("i",{class:"icon-[lucide--x]"},null,-1)])),_:1},8,["aria-label"]),c("hr",{class:"absolute top-6 h-px border-0 bg-node-component-border",style:be({width:u(i).width})},null,4),c("canvas",{ref_key:"canvasRef",ref:r,width:u(f),height:u(m),class:"minimap-canvas"},null,8,Q1),c("div",{class:"minimap-viewport",style:be(u(d))},null,4),c("div",{class:"absolute inset-0 touch-none",onPointerdown:j[1]||(j[1]=(...W)=>u(T)&&u(T)(...W)),onPointermove:j[2]||(j[2]=(...W)=>u(I)&&u(I)(...W)),onPointerup:j[3]||(j[3]=(...W)=>u(_)&&u(_)(...W)),onPointerleave:j[4]||(j[4]=(...W)=>u(_)&&u(_)(...W)),onPointercancel:j[5]||(j[5]=(...W)=>u(N)&&u(N)(...W)),onWheel:j[6]||(j[6]=(...W)=>u($)&&u($)(...W))},null,32)],4)],512)):A("",!0)}}),J1=Be(Y1,[["__scopeId","data-v-66f11255"]]);function an(e){return e.ctrlKey||e.metaKey||e.shiftKey}a(an,"isMultiSelectKey");function X1(){const e=fe(),{nodeManager:o}=Dn(),{bringNodeToFront:t}=lr(),{shouldHandleNodePointerEvents:s}=go();function r(f,m){if(!s.value||!e.canvas||!o.value)return;const v=o.value.getNode(m);if(!v)return;const h=an(f),g=e.selectedItems.length,b=!h&&v.selected&&g>1;h?v.selected||e.canvas.select(v):b||(e.canvas.deselectAll(),e.canvas.select(v)),v.flags?.pinned||t(m),e.updateSelectedItems()}a(r,"handleNodeSelect");function n(f,m){if(!s.value||!o.value)return;const v=o.value.getNode(f);v&&(v.flags?.collapsed??!1)!==m&&v.collapse()}a(n,"handleNodeCollapse");function l(f,m){if(!s.value||!o.value)return;const v=o.value.getNode(f);v&&(v.title=m)}a(l,"handleNodeTitleUpdate");function i(f,m){if(!s.value||!e.canvas||!o.value)return;const v=o.value.getNode(m);v&&(f.preventDefault(),v.selected||r(f,m))}a(i,"handleNodeRightClick");function d(f,m){if(!s.value||!e.canvas||!o.value)return;const v=o.value.getNode(f);if(v){if(!m){e.canvas.deselectAll(),e.canvas.select(v),e.updateSelectedItems(),v.flags?.pinned||t(f);return}v.selected?e.canvas.deselect(v):(e.canvas.select(v),v.flags?.pinned||t(f)),e.updateSelectedItems()}}return a(d,"toggleNodeSelectionAfterPointerUp"),{handleNodeSelect:r,handleNodeCollapse:n,handleNodeTitleUpdate:l,handleNodeRightClick:i,toggleNodeSelectionAfterPointerUp:d}}a(X1,"useNodeEventHandlersIndividual");const Rr=ga(X1);function Wr(){const e=ne(),o=y(()=>e.get("Comfy.SnapToGrid.GridSize")),t=y(()=>e.get("pysssss.SnapToGrid"));function s(l){return l.shiftKey||t.value}a(s,"shouldSnap");function r(l){const i=o.value;if(!i)return{...l};const d=[l.x,l.y];return qn(d,i)?{x:d[0],y:d[1]}:{...l}}a(r,"applySnapToPosition");function n(l){const i=o.value;if(!i)return{...l};const d=[l.width,l.height];return qn(d,i)?{width:d[0],height:d[1]}:{...l}}return a(n,"applySnapToSize"),{gridSize:o,alwaysSnap:t,shouldSnap:s,applySnapToPosition:r,applySnapToSize:n}}a(Wr,"useNodeSnap");function Br(){const e=Je(!1);let o=null;function t(r){r!==e.value&&(!o&&(o=Y.canvas?.canvas??null,!o)||(e.value=r,o.dispatchEvent(new KeyboardEvent(r?"keydown":"keyup",{key:"Shift",shiftKey:r,bubbles:!0}))))}a(t,"syncShiftState");function s(r){t(r.shiftKey);const n=a(d=>{d.key==="Shift"&&t(d.shiftKey)},"handleKeyEvent"),l=Oe(window,"keydown",n,{passive:!0}),i=Oe(window,"keyup",n,{passive:!0});return()=>{l(),i()}}return a(s,"trackShiftKey"),Bs(()=>{e.value=!1,o=null}),{trackShiftKey:s}}a(Br,"useShiftKeySync");const zr=ga(Z1);function Z1(){const e=ha(),{selectedNodeIds:o,selectedItems:t}=ze(fe()),s=Vn(),{shouldSnap:r,applySnapToPosition:n}=Wr(),{trackShiftKey:l}=Br();let i=null,d=null,f=null,m=null,v=null,h=null,g=null;function b(w,C){const T=et(Ae.getNodeLayoutRef(C));if(!T)return;const I=T.position??{x:0,y:0};v=l(w),i={...I},d={x:w.clientX,y:w.clientY};const _=et(o),N=_?.has(C);if(N&&_.size>1){f=new Map;for(const $ of _){if($===C)continue;const V=Ae.getNodeLayoutRef($).value;V&&f.set($,{...V.position})}}else f=null;N?(g=et(t).filter(mo),h={x:0,y:0}):(g=null,h=null),e.setSource(No.Vue)}a(b,"startDrag");function S(w,C){if(!i||!d||m!==null)return;const{target:T,pointerId:I}=w;T instanceof HTMLElement&&!T.hasPointerCapture(I)&&T.setPointerCapture(I),m=requestAnimationFrame(()=>{if(m=null,!i||!d)return;const _={x:w.clientX-d.x,y:w.clientY-d.y},N=s.screenToCanvas({x:0,y:0}),$=s.screenToCanvas(_),V={x:$.x-N.x,y:$.y-N.y},B={x:i.x+V.x,y:i.y+V.y};if(e.moveNode(C,B),f&&f.size>0)for(const[D,U]of f){const j={x:U.x+V.x,y:U.y+V.y};e.moveNode(D,j)}if(g&&g.length>0&&h){const D={x:V.x-h.x,y:V.y-h.y};for(const U of g)U.move(D.x,D.y,!0)}h=V})}a(S,"handleDrag");function k(w,C){if(r(w)&&C){const T=[],I=et(Ae.getNodeLayoutRef(C));if(I){const _=I.position,N=n({..._});(N.x!==_.x||N.y!==_.y)&&T.push({nodeId:C,bounds:{x:N.x,y:N.y,width:I.size.width,height:I.size.height}})}if(f&&f.size>0)for(const _ of f.keys()){const N=Ae.getNodeLayoutRef(_).value;if(N){const $={...N.position},V=n($);(V.x!==$.x||V.y!==$.y)&&T.push({nodeId:_,bounds:{x:V.x,y:V.y,width:N.size.width,height:N.size.height}})}}T.length>0&&Ae.batchUpdateNodeBounds(T)}i=null,d=null,f=null,g=null,h=null,v?.(),v=null,m!==null&&(cancelAnimationFrame(m),m=null)}return a(k,"endDrag"),{startDrag:b,handleDrag:S,endDrag:k}}a(Z1,"useNodeDragIndividual");function e0(e){const{startDrag:o,endDrag:t,handleDrag:s}=zr(),{forwardEventToCanvas:r,shouldHandleNodePointerEvents:n}=go(),{handleNodeSelect:l,toggleNodeSelectionAfterPointerUp:i}=Rr(),{nodeManager:d}=Dn(),f=a(_=>_i(_)?(r(_),!0):!1,"forwardMiddlePointerIfNeeded");let m=!1;const v=E({x:0,y:0}),h=3;function g(_){if(f(_)||_.button!==0)return;if(!n.value){r(_);return}const N=et(e);if(!N){console.warn("LGraphNode: nodeData is null/undefined in handlePointerDown");return}d.value?.getNode(N)?.flags?.pinned||(v.value={x:_.clientX,y:_.clientY},k(_,N))}a(g,"onPointerdown");function b(_){if(f(_)||Ae.isResizingVueNodes.value)return;const N=et(e);if(d.value?.getNode(N)?.flags?.pinned)return;const $=an(_),V=_.buttons&1;if(V&&$&&!Ae.isDraggingVueNodes.value){Ae.isDraggingVueNodes.value=!0,l(_,N),k(_,N);return}if(V&&!Ae.isDraggingVueNodes.value){const B=_.clientX-v.value.x,D=_.clientY-v.value.y;Math.sqrt(B*B+D*D)>h&&(Ae.isDraggingVueNodes.value=!0,l(_,N))}Ae.isDraggingVueNodes.value&&s(_,N)}a(b,"onPointermove");function S(){Ae.isDraggingVueNodes.value=!1}a(S,"cleanupDragState");function k(_,N){try{o(_,N)}finally{m=!0}}a(k,"safeDragStart");function w(_){try{t(_,et(e))}catch(N){console.error("Error during endDrag:",N)}finally{m=!1,S()}}a(w,"safeDragEnd");function C(_){if(f(_))return;if(!n.value){r(_);return}const N=Ae.isDraggingVueNodes.value;if((m||N)&&(w(_),N)||_.button===2)return;const $=an(_),V=et(e);V&&i(V,$)}a(C,"onPointerup");function T(_){Ae.isDraggingVueNodes.value&&w(_)}a(T,"onPointercancel");function I(_){Ae.isDraggingVueNodes.value&&(_.preventDefault(),S())}return a(I,"onContextmenu"),cl(()=>{S()}),{pointerHandlers:{onPointerdown:g,onPointermove:b,onPointerup:C,onPointercancel:T,onContextmenu:I}}}a(e0,"useNodePointerInteractions");var da=new Map([["node",{dataAttribute:"nodeId",updateHandler:a(e=>{const o=e.map(({id:t,bounds:s})=>({nodeId:t,bounds:s}));Ae.batchUpdateNodeBounds(o)},"updateHandler")}]]),ys=new ResizeObserver(e=>{if(fe().linearMode)return;const o=fr(),t=new Map,s=new Set;for(const r of e){if(!(r.target instanceof HTMLElement))continue;const n=r.target;let l,i;for(const[w,C]of da){const T=n.dataset[C.dataAttribute];if(T){l=w,i=T;break}}if(!l||!i)continue;const d=Array.isArray(r.borderBoxSize)?r.borderBoxSize[0]:{inlineSize:r.contentRect.width,blockSize:r.contentRect.height},f=d.inlineSize,m=d.blockSize,v=n.getBoundingClientRect(),[h,g]=o.clientPosToCanvasPos([v.left,v.top]),b={x:h,y:g},S={x:b.x,y:b.y+ge.NODE_TITLE_HEIGHT,width:Math.max(0,f),height:Math.max(0,m)};let k=t.get(l);k||(k=[],t.set(l,k)),k.push({id:i,bounds:S}),l==="node"&&i&&s.add(i)}Ae.setSource(No.DOM);for(const[r,n]of t){const l=da.get(r);l&&n.length&&l.updateHandler(n)}if(s.size>0)for(const r of s)Hi(r)});function t0(e,o){const t=et(e);Re(()=>{const s=Fn()?.proxy?.$el;if(!(s instanceof HTMLElement)||!t)return;const r=da.get(o);r&&(s.dataset[r.dataAttribute]=t,ys.observe(s))}),kt(()=>{const s=Fn()?.proxy?.$el;if(!(s instanceof HTMLElement))return;const r=da.get(o);r&&(delete s.dataset[r.dataAttribute],ys.unobserve(s))})}a(t0,"useVueElementTracking");const o0=a(e=>{const o=y(()=>et(e)??""),{nodeLocationProgressStates:t,isIdle:s}=ze(it()),r=y(()=>{const i=o.value;return i?t.value[i]:void 0}),n=y(()=>!s.value&&r.value?.state==="running"),l=y(()=>{const i=r.value;return i&&i.max>0?i.value/i.max:void 0});return{executing:n,progress:l,progressPercentage:y(()=>{const i=l.value;return i!==void 0?Math.round(i*100):void 0}),progressState:r,executionState:y(()=>{const i=r.value;return i?i.state:"idle"})}},"useNodeExecutionState");function a0(e){const o=et(e),t=ha(),s=Ae.getNodeLayoutRef(o);kt(()=>{Ae.cleanupNodeRef(o)});const r=y(()=>s.value?.position??{x:0,y:0}),n=y(()=>s.value?.size??{width:200,height:100}),l=y(()=>s.value?.zIndex??0);function i(d){t.setSource(No.Vue),t.moveNode(o,d)}return a(i,"moveNodeTo"),{position:r,size:n,zIndex:l,moveNodeTo:i}}a(a0,"useNodeLayout");const n0=a((e,o)=>{const t=et(e),s=Ve(),{nodePreviewImages:r}=ze(Wo()),n=y(()=>s.nodeIdToNodeLocatorId(t)),l=y(()=>{const d=n.value;if(!d)return;const f=r.value[d];return f?.length?f:void 0}),i=y(()=>!!l.value?.length);return{locatorId:n,previewUrls:l,hasPreview:i,latestPreviewUrl:y(()=>{const d=l.value;return d?.length?d.at(-1):""}),shouldShowPreviewImg:y(()=>o?.isCollapsed?!o.isCollapsed.value&&i.value:i.value)}},"useNodePreviewState");function s0(e){const o=Vn(),t=E(!1),s=E(null),r=E(null),{shouldSnap:n,applySnapToSize:l}=Wr(),{trackShiftKey:i}=Br();return{startResize:a(f=>{f.preventDefault(),f.stopPropagation();const m=f.currentTarget;if(!(m instanceof HTMLElement))return;const v=m.closest("[data-node-id]");if(!(v instanceof HTMLElement))return;const h=v.getBoundingClientRect(),g=o.camera.z,b={width:h.width/g,height:h.height/g},S=i(f);m.setPointerCapture(f.pointerId),Ae.isResizingVueNodes.value=!0,t.value=!0,s.value={x:f.clientX,y:f.clientY},r.value=b;const k=a(I=>{if(!t.value||!s.value||!r.value)return;const _=o.camera.z,N=(I.clientX-s.value.x)/(_||1),$=(I.clientY-s.value.y)/(_||1);let V={width:r.value.width+N,height:r.value.height+$};n(I)&&(V=l(V));const B=m.closest("[data-node-id]");B instanceof HTMLElement&&e({size:V},B)},"handlePointerMove"),w=a(I=>{t.value&&(t.value=!1,Ae.isResizingVueNodes.value=!1,s.value=null,r.value=null,S(),m.releasePointerCapture(I.pointerId),C(),T())},"handlePointerUp"),C=Oe("pointermove",k),T=Oe("pointerup",w)},"startResize"),isResizing:t}}a(s0,"useNodeResize");var r0={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function l0(e,o){return p(),x("svg",r0,[...o[0]||(o[0]=[c("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[c("path",{d:"m2 2l20 20M10.41 10.41a2 2 0 1 1-2.83-2.83m5.92 5.92L6 21m12-9l3 3"}),c("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)])])}a(l0,"render$1");var i0=Os({name:"lucide-image-off",render:l0}),u0={key:0,class:"flex h-full min-h-16 w-full min-w-16 flex-col"},d0={class:"relative h-88 w-full grow overflow-hidden rounded-[5px] bg-node-component-surface"},c0={key:0,class:"text-pure-white flex h-full w-full flex-col items-center justify-center text-center"},p0={class:"text-xs text-smoke-400"},f0=["src","alt"],v0={class:"text-node-component-header-text mt-1 text-center text-xs"},m0=q({__name:"LivePreview",props:{imageUrl:{}},setup(e){const o=e,t=E(null),s=E(!1);ie(()=>o.imageUrl,()=>{t.value=null,s.value=!1});const r=a(l=>{if(!l.target||!(l.target instanceof HTMLImageElement))return;const i=l.target;s.value=!1,i.naturalWidth&&i.naturalHeight&&(t.value=`${i.naturalWidth} x ${i.naturalHeight}`)},"handleImageLoad"),n=a(()=>{s.value=!0,t.value=null},"handleImageError");return(l,i)=>{const d=i0;return l.imageUrl?(p(),x("div",u0,[c("div",d0,[s.value?(p(),x("div",c0,[L(d,{class:"mb-1 size-8 text-smoke-500"}),c("p",p0,R(l.$t("g.imageFailedToLoad")),1)])):(p(),x("img",{key:1,src:l.imageUrl,alt:l.$t("g.liveSamplingPreview"),class:"pointer-events-none h-full w-full object-contain object-center",onLoad:r,onError:n},null,40,f0))]),c("div",v0,R(s.value?l.$t("g.errorLoadingImage"):t.value||l.$t("g.calculatingDimensions")),1)])):A("",!0)}}}),g0=m0,h0=["aria-label","aria-busy"],y0={key:0,role:"alert",class:"flex size-full flex-col items-center justify-center bg-muted-background text-center text-base-foreground py-8"},b0={class:"text-sm text-base-foreground"},w0={class:"mt-1 text-xs text-base-foreground"},_0=["src"],k0={key:3,class:"actions absolute top-2 right-2 flex gap-2.5"},C0=["title","aria-label"],S0=["title","aria-label"],x0={key:4,class:"absolute right-2 bottom-2 left-2 flex justify-center gap-1"},T0=["aria-label","onClick"],N0={class:"mt-2 text-center text-xs text-muted-foreground"},I0={key:0,class:"text-red-400"},P0={key:1,class:"text-smoke-400"},$0={key:2},bs="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",M0=q({__name:"VideoPreview",props:{imageUrls:{},nodeId:{}},setup(e){const o=e,{t}=ue(),s=Wo(),r=E(0),n=E(!1),l=E(!1),i=E(null),d=E(!1),f=E(!1),m=E(),v=y(()=>o.imageUrls[r.value]),h=y(()=>o.imageUrls.length>1);ie(()=>o.imageUrls,B=>{r.value>=B.length&&(r.value=0),i.value=null,d.value=!1,f.value=B.length>0},{deep:!0,immediate:!0});const g=a(B=>{if(!B.target||!(B.target instanceof HTMLVideoElement))return;const D=B.target;f.value=!1,d.value=!1,D.videoWidth&&D.videoHeight&&(i.value=`${D.videoWidth} x ${D.videoHeight}`)},"handleVideoLoad"),b=a(()=>{f.value=!1,d.value=!0,i.value=null},"handleVideoError"),S=a(()=>{try{Io(v.value)}catch{lo().add({severity:"error",summary:"Error",detail:t("g.failedToDownloadVideo"),life:3e3,group:"video-preview"})}},"handleDownload"),k=a(()=>{o.nodeId&&s.removeNodeOutputs(o.nodeId)},"handleRemove"),w=a(B=>{B>=0&&B<o.imageUrls.length&&(r.value=B,i.value=null,f.value=!0,d.value=!1)},"setCurrentIndex"),C=a(()=>{n.value=!0},"handleMouseEnter"),T=a(()=>{n.value=!1},"handleMouseLeave"),I=a(()=>{l.value=!0},"handleFocusIn"),_=a(B=>{m.value?.contains(B.relatedTarget)||(l.value=!1)},"handleFocusOut"),N=a(B=>["w-2 h-2 rounded-full transition-all duration-200 border-0 cursor-pointer",B===r.value?"bg-white":"bg-white/50 hover:bg-white/80"],"getNavigationDotClass"),$=a(B=>{if(!(o.imageUrls.length<=1))switch(B.key){case"ArrowLeft":B.preventDefault(),w(r.value>0?r.value-1:o.imageUrls.length-1);break;case"ArrowRight":B.preventDefault(),w(r.value<o.imageUrls.length-1?r.value+1:0);break;case"Home":B.preventDefault(),w(0);break;case"End":B.preventDefault(),w(o.imageUrls.length-1);break}},"handleKeyDown"),V=a(B=>{try{return new URL(B).searchParams.get("filename")||"Unknown file"}catch{return"Invalid URL"}},"getVideoFilename");return(B,D)=>B.imageUrls.length>0?(p(),x("div",{key:0,class:"video-preview group relative flex size-full min-h-16 min-w-16 flex-col px-2",onKeydown:$},[c("div",{ref_key:"videoWrapperEl",ref:m,class:"relative h-full w-full grow overflow-hidden rounded-[5px] bg-node-component-surface",tabindex:"0",role:"region","aria-label":B.$t("g.videoPreview"),"aria-busy":f.value,onMouseenter:C,onMouseleave:T,onFocusin:I,onFocusout:_},[d.value?(p(),x("div",y0,[D[0]||(D[0]=c("i",{class:"mb-2 icon-[lucide--video-off] h-12 w-12 text-base-foreground"},null,-1)),c("p",b0,R(B.$t("g.videoFailedToLoad")),1),c("p",w0,R(V(v.value)),1)])):A("",!0),f.value&&!d.value?(p(),O(u(sn),{key:1,class:"absolute inset-0 size-full","border-radius":"5px",width:"100%",height:"100%"})):A("",!0),d.value?A("",!0):(p(),x("video",{key:2,src:v.value,class:Q(u(ae)("block size-full object-contain",f.value&&"invisible")),controls:"",loop:"",playsinline:"",onLoadeddata:g,onError:b},null,42,_0)),n.value||l.value?(p(),x("div",k0,[c("button",{class:Q(bs),title:B.$t("g.downloadVideo"),"aria-label":B.$t("g.downloadVideo"),onClick:S},D[1]||(D[1]=[c("i",{class:"icon-[lucide--download] h-4 w-4"},null,-1)]),8,C0),c("button",{class:Q(bs),title:B.$t("g.removeVideo"),"aria-label":B.$t("g.removeVideo"),onClick:k},D[2]||(D[2]=[c("i",{class:"icon-[lucide--x] h-4 w-4"},null,-1)]),8,S0)])):A("",!0),h.value?(p(),x("div",x0,[(p(!0),x(Z,null,ye(B.imageUrls,(U,j)=>(p(),x("button",{key:j,class:Q(N(j)),"aria-label":B.$t("g.viewVideoOfTotal",{index:j+1,total:B.imageUrls.length}),onClick:a(W=>w(j),"onClick")},null,10,T0))),128))])):A("",!0)],40,h0),c("div",N0,[d.value?(p(),x("span",I0,R(B.$t("g.errorLoadingVideo")),1)):f.value?(p(),x("span",P0,R(B.$t("g.loading"))+"... ",1)):(p(),x("span",$0,R(i.value||B.$t("g.calculatingDimensions")),1))])],32)):A("",!0)}}),D0=M0,L0={width:"1.2em",height:"1.2em",xmlns:"http://www.w3.org/2000/svg",class:"",viewBox:"0 0 16 16",fill:"none"},A0=["clip-path"],E0=["id"];function V0(e,o){return p(),x("svg",L0,[c("g",{"clip-path":"url(#"+e.idMap.clip0_704_2695+")"},[...o[0]||(o[0]=[pl('<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,A0),c("defs",null,[c("clipPath",{id:e.idMap.clip0_704_2695},[...o[1]||(o[1]=[c("rect",{width:"16",height:"16",fill:"white"},null,-1)])],8,E0)])])}a(V0,"render");var O0=Os({name:"comfy-mask",render:V0,setup(){return{idMap:{clip0_704_2695:"uicons-"+a(()=>Math.random().toString(36).substr(2,10),"__randId")()}}}}),R0=["aria-label","aria-busy"],W0={key:0,role:"alert",class:"flex size-full flex-col items-center justify-center bg-muted-background text-center text-base-foreground py-8"},B0={class:"text-sm text-base-foreground"},z0={class:"mt-1 text-xs text-base-foreground"},U0={key:1,class:"size-full"},F0=["src","alt"],G0={key:3,class:"actions absolute top-2 right-2 flex gap-2.5"},H0=["title","aria-label"],j0=["title","aria-label"],q0=["title","aria-label"],K0={class:"pt-2 text-center text-xs text-base-foreground"},Q0={key:0,class:"text-red-400"},Y0={key:1,class:"text-base-foreground"},J0={key:2},X0={key:0,class:"flex flex-wrap justify-center gap-1 pt-4"},Z0=["aria-current","aria-label","onClick"],Aa="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",e_=q({__name:"ImagePreview",props:{imageUrls:{},nodeId:{}},setup(e){const o=e,{t}=ue(),s=Ce(),r=Wo(),n=E(0),l=E(!1),i=E(!1),d=E(null),f=E(!1),m=E(!1),v=E(),h=E(),{start:g,stop:b}=rl(()=>{m.value=!0},250,{immediate:!1}),S=y(()=>o.imageUrls[n.value]),k=y(()=>o.imageUrls.length>1),w=y(()=>`Node output ${n.value+1}`);ie(()=>o.imageUrls,z=>{n.value>=z.length&&(n.value=0),d.value=null,f.value=!1,z.length>0&&g()},{deep:!0,immediate:!0});const C=a(z=>{if(!z.target||!(z.target instanceof HTMLImageElement))return;const K=z.target;b(),m.value=!1,f.value=!1,K.naturalWidth&&K.naturalHeight&&(d.value=`${K.naturalWidth} x ${K.naturalHeight}`)},"handleImageLoad"),T=a(()=>{b(),m.value=!1,f.value=!0,d.value=null},"handleImageError"),I=a(()=>{if(!o.nodeId||!v.value)return;const z=Y.rootGraph?.getNodeById(o.nodeId);z&&(z.imageIndex=n.value,z.imgs=[v.value],Y.canvas?.select(z))},"setupNodeForMaskEditor"),_=a(()=>{I(),s.execute("Comfy.MaskEditor.OpenMaskEditor")},"handleEditMask"),N=a(()=>{try{Io(S.value)}catch{lo().add({severity:"error",summary:"Error",detail:t("g.failedToDownloadImage"),life:3e3,group:"image-preview"})}},"handleDownload"),$=a(()=>{o.nodeId&&r.removeNodeOutputs(o.nodeId)},"handleRemove"),V=a(z=>{n.value!==z&&z>=0&&z<o.imageUrls.length&&(n.value=z,g(),f.value=!1)},"setCurrentIndex"),B=a(()=>{l.value=!0},"handleMouseEnter"),D=a(()=>{l.value=!1},"handleMouseLeave"),U=a(()=>{i.value=!0},"handleFocusIn"),j=a(z=>{h.value?.contains(z.relatedTarget)||(i.value=!1)},"handleFocusOut"),W=a(z=>["w-2 h-2 rounded-full transition-all duration-200 border-0 cursor-pointer p-0",z===n.value?"bg-base-foreground":"bg-base-foreground/50 hover:bg-base-foreground/80"],"getNavigationDotClass"),F=a(z=>{if(!(o.imageUrls.length<=1))switch(z.key){case"ArrowLeft":z.preventDefault(),V(n.value>0?n.value-1:o.imageUrls.length-1);break;case"ArrowRight":z.preventDefault(),V(n.value<o.imageUrls.length-1?n.value+1:0);break;case"Home":z.preventDefault(),V(0);break;case"End":z.preventDefault(),V(o.imageUrls.length-1);break}},"handleKeyDown"),G=a(z=>{try{return new URL(z).searchParams.get("filename")||"Unknown file"}catch{return"Invalid URL"}},"getImageFilename");return(z,K)=>{const H=O0;return z.imageUrls.length>0?(p(),x("div",{key:0,class:"image-preview group relative flex size-full min-h-16 min-w-16 flex-col px-2 justify-center",onKeydown:F},[c("div",{ref_key:"imageWrapperEl",ref:h,class:"h-full w-full overflow-hidden rounded-[5px] bg-muted-background relative",tabindex:"0",role:"img","aria-label":z.$t("g.imagePreview"),"aria-busy":m.value,onMouseenter:B,onMouseleave:D,onFocusin:U,onFocusout:j},[f.value?(p(),x("div",W0,[K[0]||(K[0]=c("i",{class:"mb-2 icon-[lucide--image-off] h-12 w-12 text-base-foreground"},null,-1)),c("p",B0,R(z.$t("g.imageFailedToLoad")),1),c("p",z0,R(G(S.value)),1)])):A("",!0),m.value&&!f.value?(p(),x("div",U0,[L(u(sn),{"border-radius":"5px",width:"100%",height:"100%"})])):A("",!0),f.value?A("",!0):(p(),x("img",{key:2,ref_key:"currentImageEl",ref:v,src:S.value,alt:w.value,class:"block size-full object-contain pointer-events-none",onLoad:C,onError:T},null,40,F0)),l.value||i.value?(p(),x("div",G0,[k.value?A("",!0):(p(),x("button",{key:0,class:Q(Aa),title:z.$t("g.editOrMaskImage"),"aria-label":z.$t("g.editOrMaskImage"),onClick:_},[L(H,{class:"h-4 w-4"})],8,H0)),c("button",{class:Q(Aa),title:z.$t("g.downloadImage"),"aria-label":z.$t("g.downloadImage"),onClick:N},K[1]||(K[1]=[c("i",{class:"icon-[lucide--download] h-4 w-4"},null,-1)]),8,j0),c("button",{class:Q(Aa),title:z.$t("g.removeImage"),"aria-label":z.$t("g.removeImage"),onClick:$},K[2]||(K[2]=[c("i",{class:"icon-[lucide--x] h-4 w-4"},null,-1)]),8,q0)])):A("",!0)],40,R0),c("div",K0,[f.value?(p(),x("span",Q0,R(z.$t("g.errorLoadingImage")),1)):m.value?(p(),x("span",Y0,R(z.$t("g.loading"))+"... ",1)):(p(),x("span",J0,R(d.value||z.$t("g.calculatingDimensions")),1))]),k.value?(p(),x("div",X0,[(p(!0),x(Z,null,ye(z.imageUrls,(J,te)=>(p(),x("button",{key:te,class:Q(W(te)),"aria-current":te===n.value?"true":void 0,"aria-label":z.$t("g.viewImageOfTotal",{index:te+1,total:z.imageUrls.length}),onClick:a(he=>V(te),"onClick")},null,10,Z0))),128))])):A("",!0)],32)):A("",!0)}}}),t_=e_,o_={key:0,class:"node-error p-2 text-sm text-red-500"},a_={key:1,class:"lg-node-content flex grow flex-col"},n_=q({__name:"NodeContent",props:{nodeData:{},media:{}},setup(e){const o=e,t=y(()=>o.media&&o.media.urls.length>0),s=y(()=>o.nodeData?.id?.toString()),r=E(null),{toastErrorHandler:n}=jt();return zs(l=>(r.value=l.message,n(l),!1)),(l,i)=>r.value?(p(),x("div",o_,R(u(Ze)("nodeErrors.content","Node Content Error")),1)):(p(),x("div",a_,[_e(l.$slots,"default",{},()=>[t.value&&l.media?.type==="video"?(p(),O(D0,{key:0,"image-urls":l.media.urls,"node-id":s.value,class:"mt-2"},null,8,["image-urls","node-id"])):t.value&&l.media?.type==="image"?(p(),O(t_,{key:1,"image-urls":l.media.urls,"node-id":s.value,class:"mt-2"},null,8,["image-urls","node-id"])):A("",!0)])]))}}),s_=n_,r_={key:0,class:"node-error p-2 text-sm text-red-500"},l_=["data-node-id"],i_={key:0,class:"flex flex-col justify-center items-center relative"},u_={class:"relative mb-1"},d_=["data-testid"],c_={key:1,class:"min-h-0 flex-1 flex"},p_={key:2,class:"min-h-0 flex-1 px-4"},f_={key:3,class:"flex justify-center px-3"},v_=["aria-label"],m_="absolute h-3 w-3 opacity-0 pointer-events-auto focus-visible:outline focus-visible:outline-2 focus-visible:outline-white/40",g_=225,ws="h-2 bg-primary-500 transition-all duration-300",h_=q({__name:"LGraphNode",props:{nodeData:{},error:{default:null}},setup(e){const{t:o}=ue(),{handleNodeCollapse:t,handleNodeTitleUpdate:s,handleNodeRightClick:r}=Rr(),{bringNodeToFront:n}=lr();t0(()=>e.nodeData.id,"node");const{selectedNodeIds:l}=ze(fe()),i=y(()=>l.value.has(e.nodeData.id)),{executing:d,progress:f}=o0(y(()=>wa(e.nodeData))),m=it(),v=y(()=>m.lastExecutionErrorNodeId===e.nodeData.id),h=y(()=>!!(v.value||e.nodeData.hasErrors||e.error||(m.lastNodeErrors?.[e.nodeData.id]?.errors.length??0)>0)),g=y(()=>e.nodeData.titleMode!==ai.NO_TITLE),b=y(()=>e.nodeData.flags?.collapsed??!1),S=y(()=>e.nodeData.mode===We.BYPASS),k=y(()=>e.nodeData.mode===We.NEVER),w=y(()=>{const de=ne().get("Comfy.Node.Opacity")??1;return S.value||k.value?de*.5:de}),C=y(()=>Mi(e.nodeData).length>0),T=y(()=>!!e.nodeData.outputs?.length),{handleWheel:I,shouldHandleNodePointerEvents:_}=go(),N=E(null),{toastErrorHandler:$}=jt();zs(de=>(N.value=de.message,$(de),!1));const{position:V,size:B,zIndex:D}=a0(()=>e.nodeData.id),{pointerHandlers:U}=e0(()=>e.nodeData.id),{onPointerdown:j,...W}=U,{startDrag:F}=zr();async function G(de){if(de.altKey&&mt.value){const me=Ke.cloneNodes([mt.value]);if(me?.created?.length){const[De]=me.created;F(de,`${De.id}`),Ae.isDraggingVueNodes.value=!0,await Ue(),n(`${De.id}`);return}}j(de)}a(G,"nodeOnPointerdown");const z=a(de=>{de.preventDefault(),de.stopPropagation(),r(de,e.nodeData.id),ym(de)},"handleContextMenu");Re(()=>{K()});function K(){const de=xt.value,{width:me,height:De}=B.value;if(!de)return;const Me=b.value?"-x":"";de.style.setProperty(`--node-width${Me}`,`${me}px`),de.style.setProperty(`--node-height${Me}`,`${De}px`)}a(K,"initSizeStyles");const{startResize:H}=s0((de,me)=>{if(b.value)return;const De=Math.max(de.size.width,g_);me.style.setProperty("--node-width",`${De}px`),me.style.setProperty("--node-height",`${de.size.height}px`)}),J=a(de=>{de.button===0&&_.value&&(e.nodeData.flags?.pinned||e.nodeData.resizable!==!1&&H(de))},"handleResizePointerDown");ie(b,de=>{const me=xt.value;if(!me)return;const[De,Me]=de?["","-x"]:["-x",""],ee=me.style.getPropertyValue(`--node-width${De}`);me.style.setProperty(`--node-width${Me}`,ee),me.style.setProperty(`--node-width${De}`,"");const oe=me.style.getPropertyValue(`--node-height${De}`);me.style.setProperty(`--node-height${Me}`,oe),me.style.setProperty(`--node-height${De}`,"")});const te=y(()=>!!Bt.value&&Bt.value.urls.length>0),{latestPreviewUrl:he,shouldShowPreviewImg:$e}=n0(()=>e.nodeData.id,{isCollapsed:b}),se=y(()=>h.value?"border-node-stroke-error":!g.value&&e.nodeData.bgcolor&&ui(e.nodeData.bgcolor)?"border-0":""),Se=y(()=>ae(i.value&&"outline-node-component-outline",h.value&&"outline-node-stroke-error",d.value&&"outline-node-stroke-executing")),ve=y(()=>ae(e.nodeData.flags?.pinned?"cursor-default":Ae.isDraggingVueNodes.value?"cursor-grabbing":"cursor-grab")),xe=y(()=>{switch(e.nodeData.shape){case Et.BOX:return"rounded-none";case Et.CARD:return"rounded-tl-2xl rounded-br-2xl rounded-tr-none rounded-bl-none";default:return"rounded-2xl"}}),Te=y(()=>{switch(e.nodeData.shape){case Et.BOX:return"before:rounded-none";case Et.CARD:return"before:rounded-tl-2xl before:rounded-br-2xl before:rounded-tr-none before:rounded-bl-none";default:return"before:rounded-2xl"}}),He=a(()=>{t(e.nodeData.id,!b.value)},"handleCollapse"),je=a(de=>{s(e.nodeData.id,de)},"handleHeaderTitleUpdate"),Ye=a(()=>{Le()?.trackUiButtonClicked({button_id:"graph_node_open_subgraph_clicked"});const de=Y.rootGraph;if(!de){console.warn("LGraphNode: No graph available for subgraph navigation");return}const me=Kn(de,wa(e.nodeData));if(!me?.isSubgraphNode()||!("subgraph"in me)){console.warn("LGraphNode: Node is not a valid subgraph node",me);return}const De=Y.canvas;if(!De||typeof De.openSubgraph!="function"){console.warn("LGraphNode: Canvas or openSubgraph method not available");return}De.openSubgraph(me.subgraph,me)},"handleEnterSubgraph"),ot=Wo(),Rt=y(()=>e.nodeData.subgraphId?`${e.nodeData.subgraphId}:${e.nodeData.id}`:e.nodeData.id),mt=y(()=>{const de=wa(e.nodeData);return Kn(Y.rootGraph,de)}),Wt=y(()=>{const de=mt.value;return!de||!(de instanceof Oo)?!1:de.subgraph.nodes.flatMap(me=>me.widgets??[]).some(me=>!me.computedDisabled&&!me.promoted)});function Qt(){ut().focusSection("advanced-inputs")}a(Qt,"handleShowAdvancedInputs");const Bt=y(()=>{const de=ot.nodeOutputs[Rt.value],me=mt.value;if(!me||!de?.images?.length)return;const De=ot.getNodeImageUrls(me);if(!De?.length)return;const Me=me.inputs?.some(ee=>ee.type==="VIDEO");return{type:me.previewMediaType==="video"||!me.previewMediaType&&Me?"video":"image",urls:De}}),xt=E(),dt=E(!1);function ho(de){const me=mt.value;if(!me||!me.onDragOver){dt.value=!1;return}dt.value=me.onDragOver(de)}a(ho,"handleDragOver");function yo(){dt.value=!1}a(yo,"handleDragLeave");async function Yt(de){dt.value=!1;const me=mt.value;!me||!me.onDragDrop||await me.onDragDrop(de)}return a(Yt,"handleDrop"),(de,me)=>N.value?(p(),x("div",r_,R(u(Ze)("nodeErrors.render","Node Render Error")),1)):(p(),x("div",lt({key:1,ref_key:"nodeContainerRef",ref:xt,tabindex:"0","data-node-id":de.nodeData.id,class:u(ae)("bg-component-node-background lg-node absolute text-sm","contain-style contain-layout min-w-[225px] min-h-(--node-height) w-(--node-width)",xe.value,"touch-none flex flex-col","border-1 border-solid border-component-node-border",u(_)&&"hover:ring-7 ring-node-component-ring","outline-transparent outline-2 focus-visible:outline-node-component-outline",se.value,Se.value,ve.value,{[`${Te.value} before:pointer-events-none before:absolute before:bg-bypass/60 before:inset-0`]:S.value,[`${Te.value} before:pointer-events-none before:absolute before:inset-0`]:k.value,"ring-4 ring-primary-500 bg-primary-500/10":dt.value},u(_)?"pointer-events-auto":"pointer-events-none",!b.value&&" pb-1"),style:[{transform:`translate(${u(V).x??0}px, ${(u(V).y??0)-u(ge).NODE_TITLE_HEIGHT}px)`,zIndex:u(D),opacity:w.value,"--component-node-background":u(Ka)(de.nodeData.bgcolor)}]},W,{onPointerdown:G,onWheel:me[0]||(me[0]=(...De)=>u(I)&&u(I)(...De)),onContextmenu:z,onDragover:ke(ho,["prevent"]),onDragleave:yo,onDrop:ke(Yt,["stop","prevent"])}),[g.value?(p(),x("div",i_,[b.value?(p(),x(Z,{key:0},[C.value?(p(),O(Zn,{key:0,multi:"",class:"absolute left-0 -translate-x-1/2"})):A("",!0),T.value?(p(),O(Zn,{key:1,multi:"",class:"absolute right-0 translate-x-1/2"})):A("",!0),L(Xn,{"node-data":de.nodeData,unified:""},null,8,["node-data"])],64)):A("",!0),L(Vi,{"node-data":de.nodeData,collapsed:b.value,onCollapse:He,"onUpdate:title":je,onEnterSubgraph:Ye},null,8,["node-data","collapsed"])])):A("",!0),b.value&&u(d)&&u(f)!==void 0?(p(),x("div",{key:1,class:Q(u(ae)("absolute inset-x-4 -bottom-[1px] translate-y-1/2 rounded-full",ws)),style:be({width:`${Math.min(u(f)*100,100)}%`})},null,6)):A("",!0),b.value?A("",!0):(p(),x(Z,{key:2},[c("div",u_,[u(d)&&u(f)!==void 0?(p(),x("div",{key:0,class:Q(u(ae)("absolute inset-x-0 top-1/2 -translate-y-1/2",u(f)<1&&"rounded-r-full",ws)),style:be({width:`${Math.min(u(f)*100,100)}%`})},null,6)):A("",!0)]),c("div",{class:"flex flex-1 flex-col gap-1 pb-2","data-testid":`node-body-${de.nodeData.id}`},[L(Xn,{"node-data":de.nodeData},null,8,["node-data"]),de.nodeData.widgets?.length?(p(),O(ja,{key:0,"node-data":de.nodeData},null,8,["node-data"])):A("",!0),te.value?(p(),x("div",c_,[L(s_,{"node-data":de.nodeData,media:Bt.value},null,8,["node-data","media"])])):A("",!0),u($e)?(p(),x("div",p_,[L(g0,{"image-url":u(he)||null},null,8,["image-url"])])):A("",!0),Wt.value?(p(),x("div",f_,[c("button",{class:Q(u(ae)(u(ia),"w-full h-7 flex justify-center items-center gap-2 text-sm px-3 outline-0 ring-0 truncate","transition-all cursor-pointer hover:bg-accent-background duration-150 active:scale-95")),onClick:ke(Qt,["stop"])},[me[1]||(me[1]=c("i",{class:"icon-[lucide--settings-2] size-4"},null,-1)),c("span",null,R(u(o)("rightSidePanel.showAdvancedInputsButton")),1)],2)])):A("",!0)],8,d_)],64)),!b.value&&de.nodeData.resizable!==!1?(p(),x("div",{key:3,role:"button","aria-label":u(o)("g.resizeFromBottomRight"),class:Q(u(ae)(m_,"right-0 bottom-0 cursor-se-resize")),onPointerdown:ke(J,["stop"])},null,42,v_)):A("",!0)],16,l_))}}),y_=h_,jo=[],qo=!1,Ko=null;const b_=a(()=>{function e(r){const n=Object.keys(r.settingValues).length===0||!r.get("Comfy.TutorialCompleted"),l=!localStorage.getItem("workflow"),i=!localStorage.getItem("Comfy.PreviousWorkflow");return n&&l&&i}a(e,"checkIsNewUser");async function o(r){if(qo){if(Ko)try{await r()}catch(n){console.error("New user initialization callback failed:",n)}}else jo.push(r)}a(o,"registerInitCallback");async function t(r){if(!qo){if(Ko=e(r),qo=!0,!Ko){jo=[];return}await r.set("Comfy.InstalledVersion","1.38.5");for(const n of jo)try{await n()}catch(l){console.error("New user initialization callback failed:",l)}jo=[]}}a(t,"initializeIfNewUser");function s(){return qo?Ko:null}return a(s,"isNewUser"),{registerInitCallback:o,initializeIfNewUser:t,isNewUser:s}},"newUserService");var w_=q({__name:"SelectionRectangle",setup(e){const o=fe(),t=E(null);io(()=>{const n=o.canvas;if(!n){t.value=null;return}const{pointer:l,dragging_rectangle:i}=n;if(i&&l.eDown&&l.eMove){const d=l.eDown.safeOffsetX,f=l.eDown.safeOffsetY;t.value={x:d,y:f,w:l.eMove.safeOffsetX-d,h:l.eMove.safeOffsetY-f}}else t.value=null});const s=y(()=>t.value!==null),r=y(()=>{const n=t.value;if(!n)return{};const l=n.w>=0?n.x:n.x+n.w,i=n.h>=0?n.y:n.y+n.h,d=Math.abs(n.w),f=Math.abs(n.h);return{left:`${l}px`,top:`${i}px`,width:`${d}px`,height:`${f}px`}});return(n,l)=>s.value?(p(),x("div",{key:0,class:"pointer-events-none absolute z-9999 border border-blue-400 bg-blue-500/20",style:be(r.value)},null,4)):A("",!0)}}),__=w_,k_={key:0,class:"workflow-tabs-container pointer-events-auto relative h-9.5 w-full"},C_={key:0,class:"app-drag fixed top-0 left-0 z-10 h-[var(--comfy-topbar-height)] w-full"},S_={class:"flex h-full items-center border-b border-interface-stroke bg-comfy-menu-bg shadow-interface"},x_={class:"sidebar-content-container h-full w-full overflow-x-hidden overflow-y-auto"},T_=q({__name:"GraphCanvas",emits:["ready"],setup(e,{emit:o}){const t=o,s=E(null),r=Je(null),n=ne(),l=Ct(),i=st(),d=fe(),f=it(),m=oo(),v=St(),h=ir(),g=go(),b=y(()=>n.get("Comfy.UseNewMenu")!=="Disabled"),S=y(()=>n.get("Comfy.Workflow.WorkflowTabsPosition")),k=y(()=>n.get("Comfy.Graph.CanvasMenu")),w=y(()=>n.get("Comfy.EnableTooltips")),C=y(()=>n.get("Comfy.Canvas.SelectionToolbox")),T=y(()=>i.sidebarTab.activeSidebarTab),I=y(()=>!i.focusMode&&b.value),_=y(()=>n.get("Comfy.Minimap.Visible")),{shouldRenderVueNodes:N}=la(),$=Dn(),V=a(async()=>{N.value&&($.disposeNodeManagerAndSyncs(),await Ue(),$.initializeNodeManager())},"handleVueNodeLifecycleReset");ie(()=>d.currentGraph,V),ie(()=>d.isInSubgraph,async(W,F)=>{F&&!W&&Ve().updateActiveGraph(),await V()});const B=y(()=>Array.from($.nodeManager.value?.vueNodeData?.values()??[]));we(()=>{ge.nodeOpacity=n.get("Comfy.Node.Opacity")}),we(()=>{ge.nodeLightness=v.completedActivePalette.light_theme?.5:void 0}),we(()=>{l.showDeprecated=n.get("Comfy.Node.ShowDeprecated")}),we(()=>{l.showExperimental=n.get("Comfy.Node.ShowExperimental")}),we(()=>{const W=n.get("Comfy.TextareaWidget.Spellcheck");document.querySelectorAll("textarea.comfy-multiline-input").forEach(F=>{F.spellcheck=W,F.focus(),F.blur()})}),ie(()=>n.get("Comfy.WidgetControlMode"),()=>{d.canvas&&(Hn(Y.rootGraph,W=>{if(W.widgets){for(const F of W.widgets)if(F[Ni]&&(as(F),!!F.linkedWidgets))for(const G of F.linkedWidgets)as(G)}}),d.canvas.setDirty(!0))}),ie([()=>d.canvas,()=>n.get("Comfy.ColorPalette")],async([W,F])=>{W&&await h.loadColorPalette(F)}),ie(()=>n.get("Comfy.Canvas.BackgroundImage"),async()=>{if(!d.canvas)return;const W=v.activePaletteId;W&&(await h.loadColorPalette(W),d.canvas.setDirty(!1,!0))}),ie(()=>v.activePaletteId,async W=>{await n.set("Comfy.ColorPalette",W)}),ie(()=>[f.nodeLocationProgressStates,d.canvas],([W,F])=>{if(F?.graph){for(const G of F.graph.nodes){const z=W[Ve().nodeIdToNodeLocatorId(G.id)];z&&z.state==="running"?G.progress=z.value/z.max:G.progress=void 0}F.setDirty(!0,!1)}},{deep:!0}),ie(()=>f.lastNodeErrors,W=>{Y.graph&&(Hn(Y.rootGraph,F=>{for(const z of F.inputs)delete z.hasErrors;for(const z of F.outputs)delete z.hasErrors;const G=W?.[F.id];G&&G.errors.filter(z=>z.extra_info?.input_name!==void 0).forEach(z=>{const K=z.extra_info.input_name,H=F.findInputSlot(K);H!==-1&&(F.inputs[H].hasErrors=!0)})}),Y.canvas.setDirty(!0,!0))}),Oe(s,"litegraph:no-items-selected",()=>{m.add({severity:"warn",summary:le("toastMessages.nothingSelected"),life:2e3})},{passive:!0});const D=a(async()=>{try{ql(await Ne.getCustomNodesI18n())}catch(W){console.error("Failed to load custom nodes i18n",W)}},"loadCustomNodesI18n"),U=E(!1),j=D1();return C1(s),I1(),k1(),Re(async()=>{N1(),S1(),T1(),Pi(),$1(),la(),Y.vueAppReady=!0,i.spinner=!0,Qi.init(),await D();try{await n.loadSettingValues()}catch(F){if(F instanceof si)localStorage.removeItem("Comfy.userId"),localStorage.removeItem("Comfy.userName"),window.location.reload();else throw F}P1.forEach(n.addSetting),await b_().initializeIfNewUser(n),await Y.setup(s.value),d.canvas=Y.canvas,d.canvas.render_canvas_border=!1,i.spinner=!1,Pn().setPopoverRef(r.value),window.app=Y,window.graph=Y.graph,U.value=!0,$.setupEmptyGraphListener(),Y.canvas.onSelectionChange=ro(Y.canvas.onSelectionChange,()=>d.updateSelectedItems()),v.customPalettes=n.get("Comfy.CustomColorPalettes"),await j.initializeWorkflow(),j.restoreWorkflowTabsState(),await j.loadTemplateFromUrlIfPresent();const{useReleaseStore:W}=await Fa(async()=>{const{useReleaseStore:F}=await import("./releaseStore-CubqSv5t.js");return{useReleaseStore:F}},__vite__mapDeps([30,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,31]),import.meta.url);W().initialize(),ie(()=>n.get("Comfy.Locale"),async()=>{await Ce().execute("Comfy.RefreshNodeDefinitions"),await nt().reloadCurrentWorkflow()}),bt(()=>fe().canvas,F=>{Oe(F.canvas,"litegraph:set-graph",()=>{Ve().updateActiveGraph()})},{immediate:!0}),t("ready")}),kt(()=>{$.cleanup()}),(W,F)=>(p(),x(Z,null,[U.value?(p(),O(ud,{key:0},Sl({"graph-canvas-panel":M(()=>[k.value?(p(),O(hv,{key:0,class:"pointer-events-auto"})):A("",!0),U.value&&_.value&&b.value?(p(),O(J1,{key:1,class:"pointer-events-auto"})):A("",!0)]),_:2},[I.value?{name:"workflow-tabs",fn:M(()=>[S.value==="Topbar"?(p(),x("div",k_,[u(Yl)()&&S.value!=="Topbar"?(p(),x("div",C_)):A("",!0),c("div",S_,[L(Or),L(Vr)])])):A("",!0)]),key:"0"}:void 0,I.value?{name:"side-toolbar",fn:M(()=>[L($w)]),key:"1"}:void 0,I.value?{name:"side-bar-panel",fn:M(()=>[c("div",x_,[T.value?(p(),O(Sr,{key:0,extension:T.value},null,8,["extension"])):A("",!0)])]),key:"2"}:void 0,I.value?{name:"topmenu",fn:M(()=>[L(Tf)]),key:"3"}:void 0,I.value?{name:"bottom-panel",fn:M(()=>[L(Ef)]),key:"4"}:void 0,I.value?{name:"right-side-panel",fn:M(()=>[L(Gh)]),key:"5"}:void 0]),1024)):A("",!0),c("canvas",{id:"graph-canvas",ref_key:"canvasRef",ref:s,tabindex:"1",class:"absolute inset-0 size-full touch-none"},null,512),u(N)&&u(Y).canvas&&U.value?(p(),O(V1,{key:1,canvas:u(Y).canvas,onWheelCapture:u(g).forwardEventToCanvas},{default:M(()=>[(p(!0),x(Z,null,ye(B.value,G=>(p(),O(y_,{key:G.id,"node-data":G,error:u(f).lastExecutionError?.node_id===G.id?"Execution error":null,"zoom-level":u(d).canvas?.ds?.scale||1,"data-node-id":G.id},null,8,["node-data","error","zoom-level","data-node-id"]))),128))]),_:1},8,["canvas","onWheelCapture"])):A("",!0),U.value?(p(),O(__,{key:2})):A("",!0),w.value?(p(),O(bv,{key:3})):A("",!0),L(sy,{ref_key:"nodeSearchboxPopoverRef",ref:r},null,512),U.value?(p(),x(Z,{key:4},[L(Um),C.value?(p(),O(Bm,{key:0})):A("",!0),u(N)?A("",!0):(p(),O(Ff,{key:1}))],64)):A("",!0)],64))}}),N_=T_,I_={class:"flex flex-auto flex-col items-start"},P_={class:"my-4 text-lg font-medium"},$_=q({__name:"RerouteMigrationToast",setup(e){const{t:o}=ue(),t=lo(),s=Ve(),r=a(async()=>{const n=Xi(Y.rootGraph.serialize());await Y.loadGraphData(n,!1,!1,s.activeWorkflow),t.removeGroup("reroute-migration")},"migrateToLitegraphReroute");return(n,l)=>(p(),O(u(Zr),{group:"reroute-migration"},{message:M(()=>[c("div",I_,[c("div",P_,R(u(o)("toastMessages.migrateToLitegraphReroute")),1),L(X,{class:"self-end",size:"sm",onClick:r},{default:M(()=>[Ie(R(u(o)("g.migrate")),1)]),_:1})])]),_:1}))}}),M_=$_,_s="ComfyUI",D_=" - ComfyUI";const L_=a(()=>{const e=it(),o=ne(),t=Ve(),s=st(),r=y(()=>e.isIdle?"":`[${Math.round(e.executionProgress*100)}%]`),n=y(()=>o.get("Comfy.UseNewMenu")!=="Disabled"),l=y(()=>o.get("Comfy.Workflow.AutoSave")==="after delay"),i=y(()=>!!t.activeWorkflow?.isModified),d=y(()=>!!t.activeWorkflow?.isPersisted),f=y(()=>s.shiftDown||l.value?!1:!!(!d.value||i.value)),m=y(()=>f.value?" *":""),v=y(()=>{const b=t.activeWorkflow?.filename;return b?m.value+b+D_:_s}),h=y(()=>{const b=Object.entries(e.nodeProgressStates).filter(([T,I])=>I.state==="running");if(b.length===0)return"";if(b.length>1)return`${r.value}[${b.length} ${le("g.nodesRunning","nodes running")}]`;const[S,k]=b[0],w=Math.round(k.value/k.max*100),C=e.activePrompt?.workflow?.changeTracker?.activeState.nodes.find(T=>String(T.id)===S)?.type||"Node";return`${r.value}[${w}%] ${C}`}),g=y(()=>r.value+(n.value?v.value:_s));hl(y(()=>h.value||g.value))},"useBrowserTabTitle");var A_={},E_={class:"size-full bg-modal-panel-background pr-6 pb-8 pl-4"};function V_(e,o){return p(),x("div",E_,[_e(e.$slots,"default")])}a(V_,"_sfc_render");var O_=Be(A_,[["render",V_]]),R_={class:"text-neutral text-base"},W_={class:"flex gap-2"},B_={class:"relative flex gap-2 px-6 pb-4"},z_=q({__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"}]),r=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]"}]}]);fa(pr,e.onClose);const n=E(""),l=E(""),i=E([]),d=E([]),f=E("popular"),m=E("installed"),v=y(()=>Lr());return(h,g)=>(p(),O(dr,{"content-title":h.$t("assetBrowser.checkpoints")},{leftPanel:M(()=>[L(vr,{modelValue:m.value,"onUpdate:modelValue":g[0]||(g[0]=b=>m.value=b),"nav-items":r.value},{"header-icon":M(()=>g[6]||(g[6]=[c("i",{class:"text-neutral icon-[lucide--puzzle]"},null,-1)])),"header-title":M(()=>[c("span",R_,R(h.$t("g.title")),1)]),_:1},8,["modelValue","nav-items"])]),header:M(()=>[L(rr,{modelValue:n.value,"onUpdate:modelValue":g[1]||(g[1]=b=>n.value=b),size:"lg",class:"max-w-[384px]"},null,8,["modelValue"])]),"header-right-area":M(()=>[c("div",W_,[L(X,{variant:"primary",onClick:a(()=>{},"onClick")},{default:M(()=>[g[7]||(g[7]=c("i",{class:"icon-[lucide--upload]"},null,-1)),c("span",null,R(h.$t("g.upload")),1)]),_:1}),L(Xs,null,{default:M(({close:b})=>[L(X,{variant:"secondary",onClick:a(()=>{b()},"onClick")},{default:M(()=>[g[8]||(g[8]=c("i",{class:"icon-[lucide--download]"},null,-1)),c("span",null,R(h.$t("g.settings")),1)]),_:2},1032,["onClick"]),L(X,{variant:"primary",onClick:a(()=>{b()},"onClick")},{default:M(()=>[g[9]||(g[9]=c("i",{class:"icon-[lucide--scroll]"},null,-1)),c("span",null,R(h.$t("g.profile")),1)]),_:2},1032,["onClick"])]),_:1})])]),contentFilter:M(()=>[c("div",B_,[L(So,{modelValue:i.value,"onUpdate:modelValue":g[2]||(g[2]=b=>i.value=b),"search-query":l.value,"onUpdate:searchQuery":g[3]||(g[3]=b=>l.value=b),class:"w-[250px]",label:h.$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"]),L(So,{modelValue:d.value,"onUpdate:modelValue":g[4]||(g[4]=b=>d.value=b),label:h.$t("assetBrowser.selectProjects"),options:t.value},null,8,["modelValue","label","options"]),L(js,{modelValue:f.value,"onUpdate:modelValue":g[5]||(g[5]=b=>f.value=b),label:h.$t("assetBrowser.sortingType"),options:s.value,class:"w-[135px]"},{icon:M(()=>g[10]||(g[10]=[c("i",{class:"icon-[lucide--filter]"},null,-1)])),_:1},8,["modelValue","label","options"])])]),content:M(()=>[c("div",{style:be(v.value)},[(p(),x(Z,null,ye(100,b=>L(oa,{key:b,size:"regular"},{top:M(()=>[L(aa,{ratio:"landscape"},{default:M(()=>g[11]||(g[11]=[c("div",{class:"h-full w-full bg-blue-500"},null,-1)])),"top-right":M(()=>[L(X,{size:"icon",class:"!bg-white !text-neutral-900",onClick:a(()=>{},"onClick")},{default:M(()=>g[12]||(g[12]=[c("i",{class:"icon-[lucide--info]"},null,-1)])),_:1})]),"bottom-right":M(()=>[L(na,{label:"png"}),L(na,{label:"1.2 MB"}),L(na,{label:"LoRA"},{icon:M(()=>g[13]||(g[13]=[c("i",{class:"icon-[lucide--folder]"},null,-1)])),_:1})]),_:1})]),bottom:M(()=>[L(ta)]),_:2},1024)),64))],4)]),rightPanel:M(()=>[L(O_)]),_:1},8,["content-title"]))}}),U_=z_,ks="global-model-selector";const F_=a(()=>{const e=vt(),o=qt();function t(){o.closeDialog({key:ks})}a(t,"hide");function s(){e.showLayoutDialog({key:ks,component:U_,props:{onClose:t}})}return a(s,"show"),{show:s,hide:t}},"useModelSelectorDialog");function G_(e,o){const t=nu.safeParse(e);if(!t.success){const b=t.error.errors.map(S=>`${S.path.join(".")}: ${S.message}`).join(", ");return console.error("Invalid asset item:",b),{success:!1,error:{code:"INVALID_ASSET",message:"Asset schema validation failed",assetId:e.id,details:{validationErrors:b}}}}const s=t.data,r=s.user_metadata;if(!r)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 n=r.filename;if(typeof n!="string"||n.length===0)return console.error(`Asset ${s.id} has invalid user_metadata.filename (expected non-empty string, got ${typeof n})`),{success:!1,error:{code:"INVALID_ASSET",message:`Invalid filename (expected non-empty string, got ${typeof n})`,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 l=s.tags.find(b=>b!=="models"&&b!=="missing");if(!l)return console.error(`Asset ${s.id} has no valid category tag. Available tags: ${s.tags.join(", ")} (expected tag other than '${Bi}' or '${Di}')`),{success:!1,error:{code:"INVALID_ASSET",message:"Asset has no valid category tag",assetId:s.id,details:{availableTags:s.tags}}};const i=Qs().getNodeProvider(l);if(!i)return console.error(`No node provider registered for category: ${l}`),{success:!1,error:{code:"NO_PROVIDER",message:`No node provider registered for category: ${l}`,assetId:s.id,details:{category:l}}};const d=Ro(),f=o?.position??d.getCanvasCenter(),m=ge.createNode(i.nodeDef.name,i.nodeDef.display_name,{pos:f});if(!m)return console.error(`Failed to create node for type: ${i.nodeDef.name}`),{success:!1,error:{code:"NODE_CREATION_FAILED",message:`Failed to create node for type: ${i.nodeDef.name}`,assetId:s.id,details:{nodeType:i.nodeDef.name}}};const v=Ve(),h=v.isSubgraphActive?v.activeSubgraph:Y.canvas.graph;if(!h)return console.error("No active graph available"),{success:!1,error:{code:"NO_GRAPH",message:"No active graph available",assetId:s.id}};const g=m.widgets?.find(b=>b.name===i.key);return g?(g.value=n,h.add(m),{success:!0,value:m}):(console.error(`Widget ${i.key} not found on node ${i.nodeDef.name}`),{success:!1,error:{code:"MISSING_WIDGET",message:`Widget ${i.key} not found on node ${i.nodeDef.name}`,assetId:s.id,details:{widgetName:i.key,nodeType:i.nodeDef.name}}})}a(G_,"createModelNodeFromAsset");var Qo={DISTRIBUTION:"tf_42243568391700",ANONYMOUS_EMAIL:"tf_anonymous_requester_email",EMAIL:"tf_40029135130388",USER_ID:"tf_42515251051412"},H_="https://support.comfy.org/hc/en-us/requests/new";function j_(e){const o=new URLSearchParams({[Qo.DISTRIBUTION]:Fe?"ccloud":"oss"});return e?.userEmail&&(o.append(Qo.ANONYMOUS_EMAIL,e.userEmail),o.append(Qo.EMAIL,e.userEmail)),e?.userId&&o.append(Qo.USER_ID,e.userId),`${H_}?${o.toString()}`}a(j_,"buildSupportUrl");var{isActiveSubscription:Ea,showSubscriptionDialog:Va}=vn(),Yo="1.22.2";function q_(){const e=nt(),o=Ve(),t=vt(),s=St(),r=Ys(),n=oo(),l=fe(),i=it(),d=Le(),{staticUrls:f,buildDocsUrl:m}=co(),v=ne(),h=po(),g=qt(),b=Pu(),{getSelectedNodes:S,toggleSelectedNodesMode:k}=gn(),w=a(()=>o.activeWorkflow?.changeTracker,"getTracker");function C(){return v.get("Comfy.Queue.QPOV2")}a(C,"isQueuePanelV2Enabled");async function T(){await v.set("Comfy.Queue.QPOV2",!C())}a(T,"toggleQueuePanelV2");const I=a(_=>{const N=S();if(N.length===0)return;const $=ne().get("Comfy.SnapToGrid.GridSize");N.forEach(V=>{V.pos=_(V.pos,$)}),Y.canvas.state.selectionChanged=!0,Y.canvas.setDirty(!0,!0)},"moveSelectedNodes");return[{id:"Comfy.NewBlankWorkflow",icon:"pi pi-plus",label:"New Blank Workflow",menubarLabel:"New",category:"essentials",function:a(async()=>{const _=Y.rootGraph._nodes.length>0;await e.loadBlankWorkflow(),d?.trackWorkflowCreated({workflow_type:"blank",previous_workflow_had_nodes:_})},"function")},{id:"Comfy.OpenWorkflow",icon:"pi pi-folder-open",label:"Open Workflow",menubarLabel:"Open",category:"essentials",function:a(()=>{Y.ui.loadFile()},"function")},{id:"Comfy.LoadDefaultWorkflow",icon:"pi pi-code",label:"Load Default Workflow",function:a(async()=>{const _=Y.rootGraph._nodes.length>0;await e.loadDefaultWorkflow(),d?.trackWorkflowCreated({workflow_type:"default",previous_workflow_had_nodes:_})},"function")},{id:"Comfy.SaveWorkflow",icon:"pi pi-save",label:"Save Workflow",menubarLabel:"Save",category:"essentials",function:a(async()=>{const _=Ve().activeWorkflow;_&&await e.saveWorkflow(_)},"function")},{id:"Comfy.PublishSubgraph",icon:"pi pi-save",label:"Publish Subgraph",menubarLabel:"Publish",function:a(async()=>{await wn().publishSubgraph()},"function")},{id:"Comfy.SaveWorkflowAs",icon:"pi pi-save",label:"Save Workflow As",menubarLabel:"Save As",category:"essentials",function:a(async()=>{const _=Ve().activeWorkflow;_&&await e.saveWorkflowAs(_)},"function")},{id:"Comfy.RenameWorkflow",icon:"pi pi-pencil",label:"Rename Workflow",menubarLabel:"Rename",function:a(async()=>{const _=o.activeWorkflow;if(!_||!_.isPersisted)return;const N=await t.prompt({title:le("g.rename"),message:le("workflowService.enterFilename")+":",defaultValue:_.filename});if(!N||N===_.filename)return;const $=_.directory+"/"+N+".json";await e.renameWorkflow(_,$)},"function")},{id:"Comfy.ExportWorkflow",icon:"pi pi-download",label:"Export Workflow",menubarLabel:"Export",category:"essentials",function:a(async()=>{await e.exportWorkflow("workflow","workflow")},"function")},{id:"Comfy.ExportWorkflowAPI",icon:"pi pi-download",label:"Export Workflow (API Format)",menubarLabel:"Export (API)",function:a(async()=>{await e.exportWorkflow("workflow_api","output")},"function")},{id:"Comfy.Undo",icon:"pi pi-undo",label:"Undo",category:"essentials",function:a(async()=>{g.isDialogOpen("global-mask-editor")?b.canvasHistory.undo():await w()?.undo?.()},"function")},{id:"Comfy.Redo",icon:"pi pi-refresh",label:"Redo",category:"essentials",function:a(async()=>{g.isDialogOpen("global-mask-editor")?b.canvasHistory.redo():await w()?.redo?.()},"function")},{id:"Comfy.ClearWorkflow",icon:"pi pi-trash",label:"Clear Workflow",category:"essentials",function:a(()=>{if(!ne().get("Comfy.ConfirmClear")||confirm("Clear workflow?")){if(Y.clean(),Y.canvas.subgraph){const _=Y.canvas.subgraph;li(_).forEach(N=>_.remove(N))}Ne.dispatchCustomEvent("graphCleared")}},"function")},{id:"Comfy.Canvas.ResetView",icon:"pi pi-expand",label:"Reset View",function:a(()=>{Ro().resetView()},"function")},{id:"Comfy.OpenClipspace",icon:"pi pi-clipboard",label:"Clipspace",function:a(()=>{Y.openClipspace()},"function")},{id:"Comfy.RefreshNodeDefinitions",icon:"pi pi-refresh",label:"Refresh Node Definitions",category:"essentials",function:a(async()=>{await Y.refreshComboInNodes()},"function")},{id:"Comfy.Interrupt",icon:"pi pi-stop",label:"Interrupt",category:"essentials",function:a(async()=>{await Ne.interrupt(i.activePromptId),n.add({severity:"info",summary:le("g.interrupted"),detail:le("toastMessages.interrupted"),life:1e3})},"function")},{id:"Comfy.ClearPendingTasks",icon:"pi pi-stop",label:"Clear Pending Tasks",category:"essentials",function:a(async()=>{await Vt().clear(["queue"]),n.add({severity:"info",summary:le("g.confirmed"),detail:le("toastMessages.pendingTasksDeleted"),life:3e3})},"function")},{id:"Comfy.BrowseTemplates",icon:"pi pi-folder-open",label:"Browse Templates",function:a(()=>{Mn().show()},"function")},{id:"Comfy.Canvas.ZoomIn",icon:"pi pi-plus",label:"Zoom In",category:"view-controls",function:a(()=>{const _=Y.canvas.ds;_.changeScale(_.scale*1.1,_.element?[_.element.width/2,_.element.height/2]:void 0),Y.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.ZoomOut",icon:"pi pi-minus",label:"Zoom Out",category:"view-controls",function:a(()=>{const _=Y.canvas.ds;_.changeScale(_.scale/1.1,_.element?[_.element.width/2,_.element.height/2]:void 0),Y.canvas.setDirty(!0,!0)},"function")},{id:"Experimental.ToggleVueNodes",label:a(()=>`Experimental: ${ne().get("Comfy.VueNodes.Enabled")?"Disable":"Enable"} Nodes 2.0`,"label"),function:a(async()=>{const _=ne(),N=_.get("Comfy.VueNodes.Enabled")??!1;await _.set("Comfy.VueNodes.Enabled",!N)},"function")},{id:"Comfy.Canvas.FitView",icon:"pi pi-expand",label:"Fit view to selected nodes",menubarLabel:"Zoom to fit",category:"view-controls",function:a(()=>{if(Y.canvas.empty){n.add({severity:"error",summary:le("toastMessages.emptyCanvas"),life:3e3});return}Y.canvas.fitViewToSelectionAnimated()},"function")},{id:"Comfy.Canvas.ToggleLock",icon:"pi pi-lock",label:"Canvas Toggle Lock",category:"view-controls",function:a(()=>{Y.canvas.state.readOnly=!Y.canvas.state.readOnly},"function")},{id:"Comfy.Canvas.Lock",icon:"pi pi-lock",label:"Lock Canvas",category:"view-controls",function:a(()=>{Y.canvas.state.readOnly=!0},"function")},{id:"Comfy.Canvas.Unlock",icon:"pi pi-lock-open",label:"Unlock Canvas",function:a(()=>{Y.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 _=ne();let N=ge.SPLINE_LINK;return async()=>{const $=_.get("Comfy.LinkRenderMode");$===ge.HIDDEN_LINK?await _.set("Comfy.LinkRenderMode",N):(N=$,await _.set("Comfy.LinkRenderMode",ge.HIDDEN_LINK))}})(),active:a(()=>ne().get("Comfy.LinkRenderMode")!==ge.HIDDEN_LINK,"active")},{id:"Comfy.Canvas.ToggleMinimap",icon:"pi pi-map",label:"Canvas Toggle Minimap",menubarLabel:"Minimap",versionAdded:"1.24.1",function:a(async()=>{const _=ne();await _.set("Comfy.Minimap.Visible",!_.get("Comfy.Minimap.Visible"))},"function"),active:a(()=>ne().get("Comfy.Minimap.Visible"),"active")},{id:"Comfy.Queue.ToggleOverlay",icon:"pi pi-history",label:a(()=>le("queue.toggleJobHistory"),"label"),menubarLabel:a(()=>le("queue.jobHistory"),"menubarLabel"),versionAdded:"1.37.0",category:"view-controls",function:a(()=>{Ya().toggleOverlay()},"function"),active:a(()=>Ya().isOverlayExpanded,"active")},{id:"Comfy.QueuePrompt",icon:"pi pi-play",label:"Queue Prompt",versionAdded:"1.3.7",category:"essentials",function:a(async _=>{if(Le()?.trackRunButton(_),!Ea.value){Va();return}const N=Co().batchCount;Le()?.trackWorkflowExecution(),await Y.queuePrompt(0,N)},"function")},{id:"Comfy.QueuePromptFront",icon:"pi pi-play",label:"Queue Prompt (Front)",versionAdded:"1.3.7",category:"essentials",function:a(async _=>{if(Le()?.trackRunButton(_),!Ea.value){Va();return}const N=Co().batchCount;Le()?.trackWorkflowExecution(),await Y.queuePrompt(-1,N)},"function")},{id:"Comfy.QueueSelectedOutputNodes",icon:"pi pi-play",label:"Queue Selected Output Nodes",versionAdded:"1.19.6",function:a(async _=>{if(Le()?.trackRunButton(_),!Ea.value){Va();return}const N=Co().batchCount,$=Sn(S());if($.length===0){n.add({severity:"error",summary:le("toastMessages.nothingToQueue"),detail:le("toastMessages.pleaseSelectOutputNodes"),life:3e3});return}const V=Fl($);if(V.length===0){n.add({severity:"error",summary:le("toastMessages.failedToQueue"),detail:le("toastMessages.failedExecutionPathResolution"),life:3e3});return}Le()?.trackWorkflowExecution(),await Y.queuePrompt(0,N,V)},"function")},{id:"Comfy.ShowSettingsDialog",icon:"pi pi-cog",label:"Show Settings Dialog",versionAdded:"1.3.7",category:"view-controls",function:a(()=>{t.showSettingsDialog()},"function")},{id:"Comfy.Graph.GroupSelectedNodes",icon:"pi pi-sitemap",label:"Group Selected Nodes",versionAdded:"1.3.7",category:"essentials",function:a(()=>{const{canvas:_}=Y;if(!_.selectedItems?.size){n.add({severity:"error",summary:le("toastMessages.nothingToGroup"),detail:le("toastMessages.pleaseSelectNodesToGroup"),life:3e3});return}const N=new Ht,$=ne().get("Comfy.GroupSelectedNodes.Padding");N.resizeTo(_.selectedItems,$),_.graph?.add(N),N.recomputeInsideNodes(),ya().titleEditorTarget=N},"function")},{id:"Workspace.NextOpenedWorkflow",icon:"pi pi-step-forward",label:"Next Opened Workflow",versionAdded:"1.3.9",function:a(async()=>{await e.loadNextOpenedWorkflow()},"function")},{id:"Workspace.PreviousOpenedWorkflow",icon:"pi pi-step-backward",label:"Previous Opened Workflow",versionAdded:"1.3.9",function:a(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:a(()=>{k(We.NEVER),Y.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:a(()=>{k(We.BYPASS),Y.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:a(()=>{S().forEach(_=>{_.pin(!_.pinned)}),Y.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.ToggleSelected.Pin",icon:"pi pi-pin",label:"Pin/Unpin Selected Items",versionAdded:"1.3.33",function:a(()=>{for(const _ of Y.canvas.selectedItems)(_ instanceof _t||_ instanceof Ht)&&_.pin(!_.pinned);Y.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.Resize",icon:"pi pi-minus",label:"Resize Selected Nodes",versionAdded:"",function:a(()=>{S().forEach(_=>{const N=_.computeSize();_.setSize([N[0],N[1]])}),Y.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.ToggleSelectedNodes.Collapse",icon:"pi pi-minus",label:"Collapse/Expand Selected Nodes",versionAdded:"1.3.11",function:a(()=>{S().forEach(_=>{_.collapse()}),Y.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.ToggleTheme",icon:"pi pi-moon",label:"Toggle Theme (Dark/Light)",versionAdded:"1.3.12",function:(()=>{let _=fu.id,N=gu.id;return async()=>{const $=ne(),V=s.completedActivePalette;V.light_theme?(N=V.id,await $.set("Comfy.ColorPalette",_)):(_=V.id,await $.set("Comfy.ColorPalette",N))}})()},{id:"Workspace.ToggleBottomPanel",icon:"pi pi-list",label:"Toggle Bottom Panel",menubarLabel:"Bottom Panel",versionAdded:"1.3.22",category:"view-controls",function:a(()=>{h.toggleBottomPanel()},"function"),active:a(()=>h.bottomPanelVisible,"active")},{id:"Workspace.ToggleFocusMode",icon:"pi pi-eye",label:"Toggle Focus Mode",menubarLabel:"Focus Mode",versionAdded:"1.3.27",category:"view-controls",function:a(()=>{st().toggleFocusMode()},"function"),active:a(()=>st().focusMode,"active")},{id:"Comfy.Graph.FitGroupToContents",icon:"pi pi-expand",label:"Fit Group To Contents",versionAdded:"1.4.9",function:a(()=>{for(const _ of Y.canvas.selectedItems)if(_ instanceof Ht){_.recomputeInsideNodes();const N=ne().get("Comfy.GroupSelectedNodes.Padding");_.resizeTo(_.children,N),Y.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:a(()=>{d?.trackHelpResourceClicked({resource_type:"github",is_external:!0,source:"menu"}),window.open(f.githubIssues,"_blank")},"function")},{id:"Comfy.Help.OpenComfyUIDocs",icon:"pi pi-info-circle",label:"Open ComfyUI Docs",menubarLabel:"ComfyUI Docs",versionAdded:"1.5.5",function:a(()=>{d?.trackHelpResourceClicked({resource_type:"docs",is_external:!0,source:"menu"}),window.open(m("/",{includeLocale:!0}),"_blank")},"function")},{id:"Comfy.Help.OpenComfyOrgDiscord",icon:"pi pi-discord",label:"Open Comfy-Org Discord",menubarLabel:"Comfy-Org Discord",versionAdded:"1.5.5",function:a(()=>{d?.trackHelpResourceClicked({resource_type:"discord",is_external:!0,source:"menu"}),window.open(f.discord,"_blank")},"function")},{id:"Workspace.SearchBox.Toggle",icon:"pi pi-search",label:"Toggle Search Box",versionAdded:"1.5.7",function:a(()=>{Pn().toggleVisible()},"function")},{id:"Comfy.Help.AboutComfyUI",icon:"pi pi-info-circle",label:"Open About ComfyUI",menubarLabel:"About ComfyUI",versionAdded:"1.6.4",function:a(()=>{t.showSettingsDialog("about")},"function")},{id:"Comfy.DuplicateWorkflow",icon:"pi pi-clone",label:"Duplicate Current Workflow",versionAdded:"1.6.15",function:a(async()=>{await e.duplicateWorkflow(o.activeWorkflow)},"function")},{id:"Workspace.CloseWorkflow",icon:"pi pi-times",label:"Close Current Workflow",versionAdded:"1.7.3",function:a(async()=>{o.activeWorkflow&&await e.closeWorkflow(o.activeWorkflow)},"function")},{id:"Comfy.ContactSupport",icon:"pi pi-question",label:"Contact Support",versionAdded:"1.17.8",function:a(()=>{const{userEmail:_,resolvedUserInfo:N}=fo(),$=j_({userEmail:_.value,userId:N.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:a(()=>{d?.trackHelpResourceClicked({resource_type:"help_feedback",is_external:!0,source:"menu"}),window.open(f.forum,"_blank")},"function")},{id:"Comfy.Canvas.DeleteSelectedItems",icon:"pi pi-trash",label:"Delete Selected Items",versionAdded:"1.10.5",function:a(()=>{Y.canvas.deleteSelected(),Y.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Manager.CustomNodesManager.ShowCustomNodesMenu",icon:"pi pi-puzzle",label:"Custom Nodes Manager",versionAdded:"1.12.10",function:a(async()=>{await ht().openManager({showToastOnLegacyError:!0})},"function")},{id:"Comfy.Manager.ShowUpdateAvailablePacks",icon:"pi pi-sync",label:"Check for Custom Node Updates",versionAdded:"1.17.0",function:a(async()=>{const _=ht();if(_.managerUIState.value===xu.DISABLED){n.add({severity:"error",summary:le("g.error"),detail:le("manager.notAvailable"),life:3e3});return}await _.openManager({initialTab:ao.UpdateAvailable,showToastOnLegacyError:!1})},"function")},{id:"Comfy.Manager.ShowMissingPacks",icon:"pi pi-exclamation-circle",label:"Install Missing Custom Nodes",versionAdded:"1.17.0",function:a(async()=>{await ht().openManager({initialTab:ao.Missing,showToastOnLegacyError:!1})},"function")},{id:"Comfy.User.OpenSignInDialog",icon:"pi pi-user",label:"Open Sign In Dialog",versionAdded:"1.17.6",function:a(async()=>{await t.showSignInDialog()},"function")},{id:"Comfy.User.SignOut",icon:"pi pi-sign-out",label:"Sign Out",versionAdded:"1.18.1",function:a(async()=>{await r.logout()},"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Up",icon:"pi pi-arrow-up",label:"Move Selected Nodes Up",versionAdded:Yo,function:a(()=>I(([_,N],$)=>[_,N-$]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Down",icon:"pi pi-arrow-down",label:"Move Selected Nodes Down",versionAdded:Yo,function:a(()=>I(([_,N],$)=>[_,N+$]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Left",icon:"pi pi-arrow-left",label:"Move Selected Nodes Left",versionAdded:Yo,function:a(()=>I(([_,N],$)=>[_-$,N]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Right",icon:"pi pi-arrow-right",label:"Move Selected Nodes Right",versionAdded:Yo,function:a(()=>I(([_,N],$)=>[_+$,N]),"function")},{id:"Comfy.Graph.ConvertToSubgraph",icon:"icon-[lucide--shrink]",label:"Convert Selection to Subgraph",versionAdded:"1.20.1",category:"essentials",function:a(()=>{const _=l.getCanvas(),N=_.subgraph??_.graph;if(!N)throw new TypeError("Canvas has no graph or subgraph set.");const $=N.convertToSubgraph(_.selectedItems);if(!$){n.add({severity:"error",summary:le("toastMessages.cannotCreateSubgraph"),detail:le("toastMessages.failedToConvertToSubgraph"),life:3e3});return}const{node:V}=$;_.select(V),l.updateSelectedItems()},"function")},{id:"Comfy.Graph.UnpackSubgraph",icon:"icon-[lucide--expand]",label:"Unpack the selected Subgraph",versionAdded:"1.26.3",function:a(()=>{const{unpackSubgraph:_}=ur();_()},"function")},{id:"Comfy.Graph.EditSubgraphWidgets",label:"Edit Subgraph Widgets",icon:"icon-[lucide--settings-2]",versionAdded:"1.28.5",function:a(()=>{ut().openPanel("subgraph")},"function")},{id:"Comfy.Graph.ToggleWidgetPromotion",icon:"icon-[lucide--arrow-left-right]",label:"Toggle promotion of hovered widget",versionAdded:"1.30.1",function:ji},{id:"Comfy.OpenManagerDialog",icon:"mdi mdi-puzzle-outline",label:"Manager",function:a(async()=>{await ht().openManager({initialTab:ao.All,showToastOnLegacyError:!1})},"function")},{id:"Comfy.ToggleHelpCenter",icon:"pi pi-question-circle",label:"Help Center",function:a(()=>{en().toggle()},"function"),active:a(()=>en().isVisible,"active")},{id:"Comfy.ToggleCanvasInfo",icon:"pi pi-info-circle",label:"Canvas Performance",function:a(async()=>{const _=ne(),N=_.get("Comfy.Graph.CanvasInfo");await _.set("Comfy.Graph.CanvasInfo",!N)},"function"),active:a(()=>ne().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:a(()=>{h.togglePanel("shortcuts")},"function")},{id:"Comfy.Graph.ExitSubgraph",icon:"pi pi-arrow-up",label:"Exit Subgraph",versionAdded:"1.20.1",function:a(()=>{const _=fe().getCanvas(),N=bn();_.graph&&_.setGraph(N.navigationStack.at(-2)??_.graph.rootGraph)},"function")},{id:"Comfy.Dev.ShowModelSelector",icon:"pi pi-box",label:"Show Model Selector (Dev)",versionAdded:"1.26.2",category:"view-controls",function:a(()=>{F_().show()},"function")},{id:"Comfy.Manager.CustomNodesManager.ShowLegacyCustomNodesMenu",icon:"pi pi-bars",label:"Custom Nodes (Legacy)",versionAdded:"1.16.4",function:a(async()=>{await ht().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:a(async()=>{await ht().openManager({showToastOnLegacyError:!0,isLegacyOnly:!0})},"function")},{id:"Comfy.Memory.UnloadModels",icon:"mdi mdi-vacuum-outline",label:"Unload Models",versionAdded:"1.16.4",function:a(async()=>{if(!ne().get("Comfy.Memory.AllowManualUnload")){oo().add({severity:"error",summary:le("g.error"),detail:le("g.commandProhibited",{command:"Comfy.Memory.UnloadModels"}),life:3e3});return}await Ne.freeMemory({freeExecutionCache:!1})},"function")},{id:"Comfy.Memory.UnloadModelsAndExecutionCache",icon:"mdi mdi-vacuum-outline",label:"Unload Models and Execution Cache",versionAdded:"1.16.4",function:a(async()=>{if(!ne().get("Comfy.Memory.AllowManualUnload")){oo().add({severity:"error",summary:le("g.error"),detail:le("g.commandProhibited",{command:"Comfy.Memory.UnloadModelsAndExecutionCache"}),life:3e3});return}await Ne.freeMemory({freeExecutionCache:!0})},"function")},{id:"Comfy.BrowseModelAssets",icon:"pi pi-folder-open",label:"Experimental: Browse Model Assets",versionAdded:"1.28.3",function:a(async()=>{if(!ne().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 ne().set("Comfy.Assets.UseAssetAPI",!0),await e.reloadCurrentWorkflow()}await Zi().browse({assetType:"models",title:le("sideToolbar.modelLibrary"),onAssetSelected:a(_=>{const N=G_(_);N.success||(n.add({severity:"error",summary:le("g.error"),detail:le("assetBrowser.failedToCreateNode")}),console.error("Node creation failed:",N.error))},"onAssetSelected")})},"function")},{id:"Comfy.ToggleAssetAPI",icon:"pi pi-database",label:a(()=>`Experimental: ${ne().get("Comfy.Assets.UseAssetAPI")?"Disable":"Enable"} AssetAPI`,"label"),function:a(async()=>{const _=ne(),N=_.get("Comfy.Assets.UseAssetAPI")??!1;await _.set("Comfy.Assets.UseAssetAPI",!N),await nt().reloadCurrentWorkflow()},"function")},{id:"Comfy.ToggleQPOV2",icon:"pi pi-list",label:"Toggle Queue Panel V2",function:T},{id:"Comfy.ToggleLinear",icon:"pi pi-database",label:"Toggle Simple Mode",function:a(()=>{const _=!l.linearMode;Y.rootGraph.extra.linearMode=_,o.activeWorkflow?.changeTracker?.checkState(),l.linearMode=_},"function")}].map(_=>({..._,source:"System"}))}a(q_,"useCoreCommands");const K_=a(()=>{const e="/assets/images/favicon_progress_16x16/frame_9.png",o=Al(e),t=it(),s=10;ie([()=>t.executionProgress,()=>t.isIdle],([r,n])=>{n?o.value=e:o.value=`/assets/images/favicon_progress_16x16/frame_${Math.min(Math.max(0,Math.floor(r*s)),s-1)}.png`})},"useProgressFavicon");let Cs=(function(e){return e.NoPreviews="none",e.Auto="auto",e.Latent2RGB="latent2rgb",e.TAESD="taesd",e})({}),Ss=(function(e){return e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.CRITICAL="CRITICAL",e})({}),xs=(function(e){return e.MD5="md5",e.SHA1="sha1",e.SHA256="sha256",e.SHA512="sha512",e})({}),wo=(function(e){return e.Auto="auto",e.Disable="disable",e.Enable="enable",e})({}),Ee=(function(e){return e.AUTO="auto",e.FP64="fp64",e.FP32="fp32",e.FP16="fp16",e.BF16="bf16",e.FP8E4M3FN="fp8_e4m3fn",e.FP8E5M2="fp8_e5m2",e})({}),Oa=(function(e){return e.Auto="auto",e.Split="split",e.Quad="quad",e.Pytorch="pytorch",e})({}),Ra=(function(e){return e.Auto="auto",e.GPUOnly="gpu-only",e.HighVram="highvram",e.NormalVram="normalvram",e.LowVram="lowvram",e.NoVram="novram",e.CPU="cpu",e})({});const Q_=[{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(wo),defaultValue:wo.Auto,getValue:a(e=>{switch(e){case wo.Auto:return{};case wo.Enable:return{"cuda-malloc":!0};case wo.Disable:return{"disable-cuda-malloc":!0}}},"getValue")},{id:"global-precision",name:"Global floating point precision",category:["Inference"],type:"combo",options:[Ee.AUTO,Ee.FP32,Ee.FP16],defaultValue:Ee.AUTO,tooltip:"Global floating point precision",getValue:a(e=>{switch(e){case Ee.AUTO:return{};case Ee.FP32:return{"force-fp32":!0};case Ee.FP16:return{"force-fp16":!0};default:return{}}},"getValue")},{id:"unet-precision",name:"UNET precision",category:["Inference"],type:"combo",options:[Ee.AUTO,Ee.FP64,Ee.FP32,Ee.FP16,Ee.BF16,Ee.FP8E4M3FN,Ee.FP8E5M2],defaultValue:Ee.AUTO,tooltip:"UNET precision",getValue:a(e=>{switch(e){case Ee.AUTO:return{};default:return{[`${e.toLowerCase()}-unet`]:!0}}},"getValue")},{id:"vae-precision",name:"VAE precision",category:["Inference"],type:"combo",options:[Ee.AUTO,Ee.FP16,Ee.FP32,Ee.BF16],defaultValue:Ee.AUTO,tooltip:"VAE precision",getValue:a(e=>{switch(e){case Ee.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:[Ee.AUTO,Ee.FP8E4M3FN,Ee.FP8E5M2,Ee.FP16,Ee.FP32],defaultValue:Ee.AUTO,tooltip:"Text Encoder precision",getValue:a(e=>{switch(e){case Ee.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(Cs),defaultValue:Cs.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(Oa),defaultValue:Oa.Auto,getValue:a(e=>{switch(e){case Oa.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(Ra),defaultValue:Ra.Auto,getValue:a(e=>{switch(e){case Ra.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(xs),defaultValue:xs.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(Ss),defaultValue:Ss.INFO,getValue:a(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:""}];var Y_={key:0,role:"status","aria-live":"polite",class:"fixed inset-x-0 bottom-6 z-9999 mx-auto w-4/5 max-w-3xl overflow-hidden rounded-lg border border-border-default bg-base-background shadow-lg"},J_=q({__name:"HoneyToast",props:Eo({visible:{type:Boolean}},{expanded:{type:Boolean,default:!1},expandedModifiers:{}}),emits:["update:expanded"],setup(e){const o=Vo(e,"expanded");function t(){o.value=!o.value}return a(t,"toggle"),(s,r)=>(p(),O(yt,{to:"body"},[L(ma,{"enter-active-class":"transition-all duration-300 ease-out","enter-from-class":"translate-y-full opacity-0","enter-to-class":"translate-y-0 opacity-100","leave-active-class":"transition-all duration-200 ease-in","leave-from-class":"translate-y-0 opacity-100","leave-to-class":"translate-y-full opacity-0"},{default:M(()=>[s.visible?(p(),x("div",Y_,[c("div",{class:Q(u(ae)("overflow-hidden transition-all duration-300",o.value?"max-h-[400px]":"max-h-0"))},[_e(s.$slots,"default",{isExpanded:o.value})],2),_e(s.$slots,"footer",{isExpanded:o.value,toggle:t})])):A("",!0)]),_:3})]))}}),Ur=J_,X_=q({__name:"StatusBadge",props:{label:{},severity:{default:"default"}},setup(e){function o(t){const s="inline-flex h-3.5 items-center justify-center rounded-full px-1 text-xxxs font-semibold uppercase";switch(t){case"danger":return`${s} bg-destructive-background text-white`;case"contrast":return`${s} bg-base-foreground text-base-background`;case"warn":return`${s} bg-warning-background text-base-background`;case"secondary":return`${s} bg-secondary-background text-base-foreground`;default:return`${s} bg-primary-background text-base-foreground`}}return a(o,"badgeClasses"),(t,s)=>(p(),x("span",{class:Q(o(t.severity))},R(t.label),3))}}),Ts=X_,Z_={class:"min-w-0 flex-1"},ek={class:"block truncate text-sm text-base-foreground"},tk={class:"flex flex-shrink-0 items-center gap-2"},ok={class:"text-xs text-base-foreground"},ak={key:3,class:"text-xs text-muted-foreground"},nk=q({__name:"ProgressToastItem",props:{job:{}},setup(e){const{t:o}=ue(),t=y(()=>Math.round(e.job.progress*100)),s=y(()=>e.job.status==="completed"),r=y(()=>e.job.status==="failed"),n=y(()=>e.job.status==="running"),l=y(()=>e.job.status==="created");return(i,d)=>(p(),x("div",{class:Q(u(ae)("flex items-center justify-between rounded-lg bg-modal-card-background px-4 py-3",s.value&&"opacity-50"))},[c("div",Z_,[c("span",ek,R(i.job.assetName),1)]),c("div",tk,[r.value?(p(),x(Z,{key:0},[d[0]||(d[0]=c("i",{class:"icon-[lucide--circle-alert] size-4 text-destructive-background"},null,-1)),L(Ts,{label:u(o)("progressToast.failed"),severity:"danger"},null,8,["label"])],64)):s.value?(p(),O(Ts,{key:1,label:u(o)("progressToast.finished"),severity:"contrast"},null,8,["label"])):n.value?(p(),x(Z,{key:2},[d[1]||(d[1]=c("i",{class:"icon-[lucide--loader-circle] size-4 animate-spin text-base-foreground"},null,-1)),c("span",ok,R(t.value)+"% ",1)],64)):l.value?(p(),x("span",ak,R(u(o)("progressToast.pending")),1)):A("",!0)])],2))}}),sk=nk,rk={class:"flex h-12 items-center justify-between border-b border-border-default px-4"},lk={class:"text-sm font-bold text-base-foreground"},ik={class:"flex items-center gap-2"},uk={class:"flex min-w-30 flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},dk={class:"relative max-h-75 overflow-y-auto px-4 py-4"},ck={key:0,class:"absolute right-1 top-4 h-12 w-1 rounded-full bg-muted-foreground"},pk={class:"flex flex-col gap-2"},fk={key:1,class:"flex flex-col items-center justify-center py-6 text-center"},vk={class:"text-sm text-muted-foreground"},mk={class:"flex h-12 items-center justify-between gap-2 border-t border-border-default px-4"},gk={class:"flex min-w-0 flex-1 items-center gap-2 text-sm"},hk={class:"min-w-0 flex-1 truncate font-bold text-base-foreground"},yk={class:"min-w-0 truncate font-bold text-base-foreground"},bk={class:"min-w-0 truncate font-bold text-base-foreground"},wk={class:"flex flex-shrink-0 items-center gap-2"},_k={key:0,class:"whitespace-nowrap text-sm text-muted-foreground"},kk={class:"flex items-center"},Ck=q({__name:"ModelImportProgressDialog",setup(e){const{t:o}=ue(),t=tu(),s=y(()=>t.hasDownloads),r=E(!1),n=E("all"),l=E(null);bt(()=>!r.value,()=>l.value?.hide());const i=[{value:"all",label:"all"},{value:"completed",label:"completed"},{value:"failed",label:"failed"}];function d(I){l.value?.toggle(I)}a(d,"onFilterClick");function f(I){n.value=I,l.value?.hide()}a(f,"setFilter");const m=y(()=>t.downloadList),v=y(()=>t.finishedDownloads.filter(I=>I.status==="completed")),h=y(()=>t.finishedDownloads.filter(I=>I.status==="failed")),g=y(()=>t.hasActiveDownloads),b=y(()=>m.value.find(I=>I.status==="running")?.assetName||o("progressToast.downloadingModel")),S=y(()=>v.value.length+h.value.length),k=y(()=>m.value.length),w=y(()=>{switch(n.value){case"completed":return v.value;case"failed":return h.value;default:return m.value}}),C=y(()=>{const I=i.find(_=>_.value===n.value);return o(I?`progressToast.filter.${I.label}`:"progressToast.filter.all")});function T(){t.clearFinishedDownloads(),r.value=!1}return a(T,"closeDialog"),(I,_)=>(p(),O(Ur,{expanded:r.value,"onUpdate:expanded":_[0]||(_[0]=N=>r.value=N),visible:s.value},{default:M(()=>[c("div",rk,[c("h3",lk,R(u(o)("progressToast.importingModels")),1),c("div",ik,[L(X,{variant:"secondary",size:"md",class:"gap-1.5 px-2",onClick:d},{default:M(()=>[_[1]||(_[1]=c("i",{class:"icon-[lucide--list-filter] size-4"},null,-1)),c("span",null,R(C.value),1),_[2]||(_[2]=c("i",{class:"icon-[lucide--chevron-down] size-3"},null,-1))]),_:1}),L(u(wt),{ref_key:"filterPopoverRef",ref:l,dismissable:!0,"close-on-escape":!0,unstyled:"","base-z-index":9999,pt:{root:{class:"absolute z-50"},content:{class:"bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg"}}},{default:M(()=>[c("div",uk,[(p(),x(Z,null,ye(i,N=>L(X,{key:N.value,variant:"textonly",size:"sm",class:Q(u(ae)("w-full justify-start bg-transparent",n.value===N.value&&"bg-secondary-background-selected")),onClick:a($=>f(N.value),"onClick")},{default:M(()=>[Ie(R(u(o)(`progressToast.filter.${N.label}`)),1)]),_:2},1032,["class","onClick"])),64))])]),_:1},512)])]),c("div",dk,[w.value.length>3?(p(),x("div",ck)):A("",!0),c("div",pk,[(p(!0),x(Z,null,ye(w.value,N=>(p(),O(sk,{key:N.taskId,job:N},null,8,["job"]))),128))]),w.value.length===0?(p(),x("div",fk,[c("span",vk,R(u(o)("progressToast.noImportsInQueue",{filter:C.value})),1)])):A("",!0)])]),footer:M(({toggle:N})=>[c("div",mk,[c("div",gk,[g.value?(p(),x(Z,{key:0},[_[3]||(_[3]=c("i",{class:"icon-[lucide--loader-circle] size-4 flex-shrink-0 animate-spin text-muted-foreground"},null,-1)),c("span",hk,R(b.value),1)],64)):h.value.length>0?(p(),x(Z,{key:1},[_[4]||(_[4]=c("i",{class:"icon-[lucide--circle-alert] size-4 flex-shrink-0 text-destructive-background"},null,-1)),c("span",yk,R(u(o)("progressToast.downloadsFailed",{count:h.value.length})),1)],64)):(p(),x(Z,{key:2},[_[5]||(_[5]=c("i",{class:"icon-[lucide--check-circle] size-4 flex-shrink-0 text-jade-600"},null,-1)),c("span",bk,R(u(o)("progressToast.allDownloadsCompleted")),1)],64))]),c("div",wk,[g.value?(p(),x("span",_k,R(u(o)("progressToast.progressCount",{completed:S.value,total:k.value})),1)):A("",!0),c("div",kk,[L(X,{variant:"muted-textonly",size:"icon","aria-label":r.value?u(o)("contextMenu.Collapse"):u(o)("contextMenu.Expand"),onClick:ke(N,["stop"])},{default:M(()=>[c("i",{class:Q(u(ae)("size-4",r.value?"icon-[lucide--chevron-down]":"icon-[lucide--chevron-up]"))},null,2)]),_:2},1032,["aria-label","onClick"]),g.value?A("",!0):(p(),O(X,{key:0,variant:"muted-textonly",size:"icon","aria-label":u(o)("g.close"),onClick:ke(T,["stop"])},{default:M(()=>_[6]||(_[6]=[c("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"]))])])])]),_:1},8,["expanded","visible"]))}}),Sk=Ck,Wa=$l(),xk=10080*60*1e3;const Fr=uo("versionCompatibility",()=>{const e=Hs(),o=ne(),t=y(()=>Ou.app_version),s=y(()=>e.systemStats?.system?.comfyui_version??""),r=y(()=>e.systemStats?.system?.required_frontend_version??""),n=y(()=>!t.value||!r.value||!(0,Wa.valid)(t.value)||!(0,Wa.valid)(r.value)?!1:(0,Wa.gt)(r.value,t.value)),l=y(()=>!1),i=y(()=>n.value),d=y(()=>!t.value||!s.value||!r.value?null:`${t.value}-${s.value}-${r.value}`),f=ml("comfy.versionMismatch.dismissals",{},localStorage,{serializer:{read:a(w=>{try{return JSON.parse(w)}catch{return{}}},"read"),write:a(w=>JSON.stringify(w),"write")}}),m=y(()=>{if(!d.value)return!1;const w=f.value[d.value];return w?Date.now()<w:!1}),v=y(()=>o.get("Comfy.VersionCompatibility.DisableWarnings")),h=y(()=>i.value&&!m.value&&!v.value),g=y(()=>n.value?{type:"outdated",frontendVersion:t.value,requiredVersion:r.value}:null);async function b(){e.systemStats||await gl(e.isInitialized)}a(b,"checkVersionCompatibility");function S(){if(!d.value)return;const w=Date.now()+xk;f.value={...f.value,[d.value]:w}}a(S,"dismissWarning");async function k(){await b()}return a(k,"initialize"),{frontendVersion:t,backendVersion:s,requiredFrontendVersion:r,hasVersionMismatch:i,shouldShowWarning:h,warningMessage:g,isFrontendOutdated:n,isFrontendNewer:l,checkVersionCompatibility:b,dismissWarning:S,initialize:k}});function Tk(e={}){const{immediate:o=!1}=e,{t}=ue(),s=oo(),r=Fr();let n=!1;const l=a(()=>{if(n)return;const i=r.warningMessage;if(!i)return;const d=t("g.frontendOutdated",{frontendVersion:i.frontendVersion,requiredVersion:i.requiredVersion}),f=t("g.versionMismatchWarningMessage",{warning:t("g.versionMismatchWarning"),detail:d});s.addAlert(f),n=!0,r.dismissWarning()},"showWarning");return Re(async()=>{o&&(await Ue(),bt(()=>r.shouldShowWarning,()=>{l()},{immediate:!0,once:!0}))}),{showWarning:l,shouldShowWarning:y(()=>r.shouldShowWarning),dismissWarning:r.dismissWarning,hasVersionMismatch:y(()=>r.hasVersionMismatch)}}a(Tk,"useFrontendVersionMismatchWarning");function Nk(){const e=sr(),o=Co();let t=!1,s=0;Ne.addEventListener("graphChanged",()=>{o.mode==="change"&&(s?t=!0:(t=!1,Y.queuePrompt(0,o.batchCount),s++))}),e.$subscribe(async()=>{s=e.count,!s&&!Y.lastExecutionError&&(o.mode==="instant"||o.mode==="change"&&t)&&(t=!1,await Y.queuePrompt(0,o.batchCount))},{detached:!0})}a(Nk,"setupAutoQueueHandler");var Ik={class:"flex flex-col p-1"},Pk=["onClick"],$k=q({inheritAttrs:!1,__name:"Popover",props:{entries:{},icon:{},to:{}},setup(e){return(o,t)=>(p(),O(u(fi),null,{default:M(({close:s})=>[L(u(ci),{"as-child":""},{default:M(()=>[_e(o.$slots,"button",{},()=>[L(X,{size:"icon"},{default:M(()=>[c("i",{class:Q(o.icon??"icon-[lucide--ellipsis]")},null,2)]),_:1})])]),_:3}),L(u(vi),{to:o.to},{default:M(()=>[L(u(mi),lt({side:"bottom","side-offset":5,"collision-padding":10},o.$attrs,{class:"rounded-lg p-2 bg-base-background shadow-sm border border-border-subtle will-change-[transform,opacity] data-[state=open]:data-[side=top]:animate-slideDownAndFade data-[state=open]:data-[side=right]:animate-slideLeftAndFade data-[state=open]:data-[side=bottom]:animate-slideUpAndFade data-[state=open]:data-[side=left]:animate-slideRightAndFade"}),{default:M(()=>[_e(o.$slots,"default",{},()=>[c("div",Ik,[(p(!0),x(Z,null,ye(o.entries??[],(r,n)=>(p(),x("section",{key:n,class:"flex flex-col border-b-2 last:border-none border-border-subtle"},[(p(!0),x(Z,null,ye(r,({label:l,action:i,icon:d})=>(p(),x("div",{key:l,class:Q(u(ae)("flex flex-row gap-4 p-2 rounded-sm my-1",i&&"cursor-pointer hover:bg-secondary-background-hover")),onClick:a(()=>{i&&(i(),s())},"onClick")},[d?(p(),x("i",{key:0,class:Q(d)},null,2)):A("",!0),Ie(" "+R(l),1)],10,Pk))),128))]))),128))])]),L(u(pi),{class:"fill-base-background stroke-border-subtle"})]),_:2},1040)]),_:2},1032,["to"])]),_:3}))}}),On=$k,Mk=["data-tf-widget"],Dk=q({__name:"TypeformPopoverButton",props:{dataTfWidget:{}},setup(e){const o=Qe("feedbackRef");return bt(o,()=>{const t=document.createElement("script");t.src="//embed.typeform.com/next/embed.js",o.value?.appendChild(t)}),(t,s)=>(p(),O(On,null,{button:M(()=>[L(X,{variant:"inverted",class:"rounded-full size-12"},{default:M(()=>s[0]||(s[0]=[c("i",{class:"icon-[lucide--circle-question-mark] size-6"},null,-1)])),_:1})]),default:M(()=>[c("div",{ref_key:"feedbackRef",ref:o,"data-tf-auto-resize":"","data-tf-widget":t.dataTfWidget},null,8,Mk)]),_:1}))}}),Ns=Dk,Lk=["src"],Ak=["textContent"],Ek=q({__name:"DropZone",props:{onDragOver:{type:Function},onDragDrop:{type:Function},dropIndicator:{}},setup(e){const o=E(!1);return(t,s)=>t.onDragOver&&t.onDragDrop?(p(),x("div",{key:0,class:Q(u(ae)("rounded-lg ring-inset ring-primary-500",o.value&&"ring-4 bg-primary-500/10")),onDragover:s[1]||(s[1]=ke(r=>o.value=t.onDragOver?.(r),["prevent"])),onDragleave:s[2]||(s[2]=r=>o.value=!1),onDrop:s[3]||(s[3]=ke(r=>{t.onDragDrop(r),o.value=!1},["stop","prevent"]))},[_e(t.$slots,"default"),t.dropIndicator?(p(),x("div",{key:0,class:Q(u(ae)("flex flex-col items-center justify-center gap-2 border-dashed rounded-lg border h-25 border-border-subtle m-3 py-2",t.dropIndicator?.onClick&&"cursor-pointer")),onClick:s[0]||(s[0]=ke(r=>t.dropIndicator?.onClick?.(r),["prevent"]))},[t.dropIndicator?.imageUrl?(p(),x("img",{key:0,class:"h-23",src:t.dropIndicator?.imageUrl},null,8,Lk)):(p(),x(Z,{key:1},[t.dropIndicator.label?(p(),x("span",{key:0,textContent:R(t.dropIndicator.label)},null,8,Ak)):A("",!0),t.dropIndicator.iconClass?(p(),x("i",{key:1,class:Q(t.dropIndicator.iconClass)},null,2)):A("",!0)],64))],2)):A("",!0)],34)):_e(t.$slots,"default",{key:1})}}),Vk=Ek,Ok={class:"flex flex-col min-w-80 md:h-full"},Rk={key:0,"data-testid":"linear-run-button",class:"p-4 pb-6 border-t border-node-component-border"},Wk={key:1,class:"flex mt-4 gap-2"},Bk={"data-testid":"linear-workflow-info",class:"h-12 border-x border-border-subtle py-2 px-4 gap-2 bg-comfy-menu-bg flex items-center md:contain-size"},zk=["textContent"],Uk={key:0,class:"w-full border-t border-border-subtle"},Fk={class:"border gap-2 md:h-full border-[var(--interface-stroke)] bg-comfy-menu-bg flex flex-col px-2"},Gk={"data-testid":"linear-widgets",class:"grow-1 md:overflow-y-auto md:contain-size"},Hk={key:0,class:"w-full border-t-1 border-node-component-border"},jk={key:0,"data-testid":"linear-run-button",class:"p-4 pb-6 border-t border-node-component-border"},qk={key:1,class:"flex mt-4 gap-2"},Kk={class:"bg-base-foreground text-base-background rounded-sm flex h-8 p-1 pr-2 gap-2 items-center"},Qk={key:0,class:"icon-[lucide--check] size-5 bg-success-background"},Yk={key:1,class:"icon-[lucide--loader-circle] size-4 animate-spin"},Jk=["textContent"],Xk=q({__name:"LinearControls",props:{toastTo:{},notesTo:{},mobile:{type:Boolean}},setup(e,{expose:o}){const t=Ce(),s=it(),{batchCount:r}=ze(Co()),{isActiveSubscription:n}=vn(),l=Ve(),i=E(!0),{ready:d,start:f}=_l(5e3,{controls:!0,immediate:!1}),m=Je(Y.rootGraph.nodes);Oe(Y.rootGraph.events,"configured",()=>m.value=Y.rootGraph.nodes);function v(k){if(k.type!=="LoadImage")return;const w=k.widgets?.[0]?.value,C={type:"input",filename:`${w}`};return{iconClass:"icon-[lucide--image]",imageUrl:w?Ne.apiURL(`/view?${new URLSearchParams(C)}${Y.getPreviewFormatParam()}`):void 0,label:le("linearMode.dragAndDropImage"),onClick:a(()=>k.widgets?.[1]?.callback?.(void 0),"onClick")}}a(v,"getDropIndicator");function h(k){const w=v(k),C=ea(k);for(const T of C.widgets??[])T.slotMetadata=void 0;return{...C,hasErrors:!!s.lastNodeErrors?.[k.id],dropIndicator:w,onDragDrop:k.onDragDrop,onDragOver:k.onDragOver}}a(h,"nodeToNodeData");const g=y(()=>{const k=bl(m.value.filter(w=>w.mode===0&&w.widgets?.length).map(h).reverse(),w=>["MarkdownNote","Note"].includes(w.type));for(const w of k[0])for(const C of w.widgets??[])C.options={...C.options,read_only:!0};return k}),b={options:{precision:0,min:1,max:Fe?4:99},value:1,name:le("linearMode.runCount"),type:"number"};async function S(k){if(i.value)try{i.value=!1,f();const w="shiftKey"in k&&k.shiftKey?"Comfy.QueuePromptFront":"Comfy.QueuePrompt";r.value>1&&Le()?.trackUiButtonClicked({button_id:"queue_run_multiple_batches_submitted"}),await t.execute(w,{metadata:{subscribe_to_run:!1,trigger_source:"linear"}})}finally{i.value=!0}}return a(S,"runButtonClick"),o({runButtonClick:S}),(k,w)=>(p(),x(Z,null,[c("div",Ok,[k.mobile?(p(),x("section",Rk,[L(ss,{modelValue:u(r),"onUpdate:modelValue":w[0]||(w[0]=C=>qe(r)?r.value=C:null),widget:b,class:"*:[.min-w-0]:w-24 grid-cols-[auto_96px]!"},null,8,["modelValue"]),u(n)?(p(),x("div",Wk,[L(X,{variant:"primary",class:"grow-1",size:"lg",onClick:S},{default:M(()=>[w[4]||(w[4]=c("i",{class:"icon-[lucide--play]"},null,-1)),Ie(" "+R(u(le)("menu.run")),1)]),_:1}),u(s).isIdle?A("",!0):(p(),O(X,{key:0,variant:"destructive",size:"lg",class:"w-10 p-2",onClick:w[1]||(w[1]=C=>u(t).execute("Comfy.Interrupt"))},{default:M(()=>w[5]||(w[5]=[c("i",{class:"icon-[lucide--x]"},null,-1)])),_:1}))])):(p(),O(ns,{key:0,class:"w-full mt-4"}))])):A("",!0),c("section",Bk,[c("span",{class:"font-bold truncate",textContent:R(u(l).activeWorkflow?.filename)},null,8,zk),w[7]||(w[7]=c("div",{class:"flex-1"},null,-1)),g.value[0].length?(p(),O(On,{key:0,align:"start",class:"overflow-y-auto overflow-x-clip max-h-(--reka-popover-content-available-height) z-100",reference:k.notesTo,side:"left",to:k.notesTo},{button:M(()=>[L(X,{variant:"muted-textonly"},{default:M(()=>w[6]||(w[6]=[c("i",{class:"icon-[lucide--info]"},null,-1)])),_:1})]),default:M(()=>[c("div",null,[(p(!0),x(Z,null,ye(g.value[0],(C,T)=>(p(),x(Z,{key:C.id},[T!==0?(p(),x("div",Uk)):A("",!0),L(ja,{"node-data":C,style:be({background:u(Ka)(C.bgcolor)}),class:"py-3 gap-y-3 **:[.col-span-2]:grid-cols-1 not-has-[textarea]:flex-0 rounded-lg max-w-100"},null,8,["node-data","style"])],64))),128))])]),_:1},8,["reference","to"])):A("",!0),A("",!0)]),c("div",Fk,[c("section",Gk,[(p(!0),x(Z,null,ye(g.value[1],(C,T)=>(p(),x(Z,{key:C.id},[T!==0?(p(),x("div",Hk)):A("",!0),L(Vk,{"on-drag-over":C.onDragOver,"on-drag-drop":C.onDragDrop,"drop-indicator":k.mobile?void 0:C.dropIndicator,class:"text-muted-foreground"},{default:M(()=>[L(ja,{"node-data":C,class:Q(u(ae)("py-3 gap-y-3 **:[.col-span-2]:grid-cols-1 not-has-[textarea]:flex-0 rounded-lg",C.hasErrors&&"ring-2 ring-inset ring-node-stroke-error")),style:be({background:u(Ka)(C.bgcolor)})},null,8,["node-data","class","style"])]),_:2},1032,["on-drag-over","on-drag-drop","drop-indicator"])],64))),128))]),k.mobile?A("",!0):(p(),x("section",jk,[L(ss,{modelValue:u(r),"onUpdate:modelValue":w[2]||(w[2]=C=>qe(r)?r.value=C:null),widget:b,class:"*:[.min-w-0]:w-24 grid-cols-[auto_96px]!"},null,8,["modelValue"]),u(n)?(p(),x("div",qk,[L(X,{variant:"primary",class:"grow-1",size:"lg",onClick:S},{default:M(()=>[w[8]||(w[8]=c("i",{class:"icon-[lucide--play]"},null,-1)),Ie(" "+R(u(le)("menu.run")),1)]),_:1}),u(s).isIdle?A("",!0):(p(),O(X,{key:0,variant:"destructive",size:"lg",class:"w-10 p-2",onClick:w[3]||(w[3]=C=>u(t).execute("Comfy.Interrupt"))},{default:M(()=>w[9]||(w[9]=[c("i",{class:"icon-[lucide--x]"},null,-1)])),_:1}))])):(p(),O(ns,{key:0,class:"w-full mt-4"}))]))])]),(!u(d)||!i.value)&&k.toastTo?(p(),O(yt,{key:0,defer:"",to:k.toastTo},[c("div",Kk,[i.value?(p(),x("i",Qk)):(p(),x("i",Yk)),c("span",{textContent:R(u(le)("queue.jobAddedToQueue"))},null,8,Jk)])],8,["to"])):A("",!0),A("",!0)],64))}}),Ba=Xk,Zk=q({__name:"ZoomPane",setup(e){const o=Qe("zoomPane"),t=E(1),s=E(0),r=E(0);function n(m){const v=o.value;if(!v)return;t.value-=m.deltaY;const{x:h,y:g,width:b,height:S}=v.getBoundingClientRect(),k=m.clientX-h-b/2,w=m.clientY-g-S/2,C=1.1**(m.deltaY/-30);r.value=r.value*C-w*(C-1),s.value=s.value*C-k*(C-1)}a(n,"handleWheel");let l=!1;function i(m){if(m.button!==0)return;const v=o.value;v&&(v.parentElement?.focus(),v.setPointerCapture(m.pointerId),l=!0)}a(i,"handleDown");function d(m){l&&(s.value+=m.movementX,r.value+=m.movementY)}a(d,"handleMove");const f=y(()=>{const m=1.1**(t.value/30);return`matrix(${[m,0,0,m,s.value,r.value].join(",")})`});return(m,v)=>(p(),x("div",{ref_key:"zoomPane",ref:o,class:"contain-size place-content-center",onWheel:n,onPointerdown:ke(i,["prevent"]),onPointermove:d,onPointerup:v[0]||(v[0]=h=>qe(l)?l.value=!1:l=!1),onPointercancel:v[1]||(v[1]=h=>qe(l)?l.value=!1:l=!1)},[_e(m.$slots,"default",{style:be({transform:f.value})})],544))}}),eC=Zk,tC=["src"],oC=["src"],aC=["textContent"],nC=q({__name:"ImagePreview",props:{src:{},mobile:{type:Boolean}},setup(e){const o=Qe("imageRef"),t=E(""),s=E("");return(r,n)=>(p(),x(Z,null,[r.mobile?(p(),x("img",{key:1,ref_key:"imageRef",ref:o,class:"w-full",src:r.src,onLoad:n[1]||(n[1]=()=>{u(o)&&(t.value=`${u(o).naturalWidth}`,s.value=`${u(o).naturalHeight}`)})},null,40,oC)):(p(),O(eC,{key:0,class:"flex-1 w-full"},{default:M(l=>[c("img",lt({ref_key:"imageRef",ref:o,src:r.src},l,{class:"h-full object-contain w-full",onLoad:n[0]||(n[0]=()=>{u(o)&&(t.value=`${u(o).naturalWidth}`,s.value=`${u(o).naturalHeight}`)})}),null,16,tC)]),_:1})),c("span",{class:"self-center md:z-10",textContent:R(`${t.value} x ${s.value}`)},null,8,aC)],64))}}),sC=nC,rC={class:"pointer-events-none absolute top-0 left-0 size-full"},lC=q({__name:"Preview3d",props:{modelUrl:{}},setup(e){const o=Qe("containerRef"),t=Su();return ie([o,()=>e.modelUrl],async()=>{!o.value||!e.modelUrl||await t.initializeStandaloneViewer(o.value,e.modelUrl)}),(s,r)=>(p(),x("div",{ref_key:"containerRef",ref:o,class:"relative w-full h-full",onMouseenter:r[6]||(r[6]=(...n)=>u(t).handleMouseEnter&&u(t).handleMouseEnter(...n)),onMouseleave:r[7]||(r[7]=(...n)=>u(t).handleMouseLeave&&u(t).handleMouseLeave(...n)),onResize:r[8]||(r[8]=(...n)=>u(t).handleResize&&u(t).handleResize(...n))},[c("div",rC,[u(t).animations.value&&u(t).animations.value.length>0?(p(),O(hu,{key:0,animations:u(t).animations.value,"onUpdate:animations":r[0]||(r[0]=n=>u(t).animations.value=n),playing:u(t).playing.value,"onUpdate:playing":r[1]||(r[1]=n=>u(t).playing.value=n),"selected-speed":u(t).selectedSpeed.value,"onUpdate:selectedSpeed":r[2]||(r[2]=n=>u(t).selectedSpeed.value=n),"selected-animation":u(t).selectedAnimation.value,"onUpdate:selectedAnimation":r[3]||(r[3]=n=>u(t).selectedAnimation.value=n),"animation-progress":u(t).animationProgress.value,"onUpdate:animationProgress":r[4]||(r[4]=n=>u(t).animationProgress.value=n),"animation-duration":u(t).animationDuration.value,"onUpdate:animationDuration":r[5]||(r[5]=n=>u(t).animationDuration.value=n),onSeek:u(t).handleSeek},null,8,["animations","playing","selected-speed","selected-animation","animation-progress","animation-duration","onSeek"])):A("",!0)])],544))}}),iC=lC,uC=["src"],dC=["textContent"],cC=q({__name:"VideoPreview",props:{src:{}},setup(e){const o=Qe("videoRef"),t=E(""),s=E("");return(r,n)=>(p(),x(Z,null,[c("video",lt({ref_key:"videoRef",ref:o,src:r.src,controls:""},r.$attrs,{onLoadedmetadata:n[0]||(n[0]=()=>{u(o)&&(t.value=`${u(o).videoWidth}`,s.value=`${u(o).videoHeight}`)})}),null,16,uC),c("span",{class:"self-center z-10",textContent:R(`${t.value} x ${s.value}`)},null,8,dC)],64))}}),pC=cC;const Gr={"3d":{content:le("sideToolbar.mediaAssets.filter3D"),iconClass:"icon-[lucide--box]"},audio:{content:le("sideToolbar.mediaAssets.filterAudio"),iconClass:"icon-[lucide--audio-lines]"},images:{content:le("sideToolbar.mediaAssets.filterImage"),iconClass:"icon-[lucide--image]"},text:{content:le("sideToolbar.mediaAssets.filterText"),iconClass:"icon-[lucide--text]"},video:{content:le("sideToolbar.mediaAssets.filterVideo"),iconClass:"icon-[lucide--video]"}};function Lt(e){return e?e.isVideo?"video":e.mediaType:""}a(Lt,"getMediaType");var fC={key:0,"data-testid":"linear-output-info",class:"flex flex-wrap gap-2 p-1 w-full md:z-10 tabular-nums justify-between text-sm"},vC={class:"flex gap-3 text-nowrap"},mC={class:"flex gap-3 justify-self-end"},gC=["src"],hC=["textContent"],yC={key:6,class:"pointer-events-none flex-1 max-h-full md:contain-size brightness-50 opacity-10",src:pu},bC=q({__name:"LinearPreview",props:{latentPreview:{},runButtonClick:{type:Function},selectedItem:{},selectedOutput:{},mobile:{type:Boolean}},setup(e){const o=bu(),t={month:"short",day:"numeric",year:"numeric"},s={hour:"numeric",minute:"numeric",second:"numeric"};function r(f){if(!f)return"";const m=new Date(f);return`${jn(m,t)} | ${jn(m,s)}`}a(r,"formatTime");const n=y(()=>{if(!e.selectedItem)return[];const f=Qa(e.selectedItem.user_metadata);if(!f)return[];const{allOutputs:m}=f;return[{content:r(e.selectedItem.created_at)},{content:Vu(f.executionTimeInSeconds)},m&&{content:le("g.asset",m.length)},(e.selectedOutput&&Gr[Lt(e.selectedOutput)])??{}].filter(v=>!!v)});function l(f){const m=Qa(f?.user_metadata);for(const v of m?.allOutputs??[])Io(v.url,v.filename)}a(l,"downloadAsset");async function i(f){if(!f)return;const{workflow:m}=await lu(f);if(!m)return;if(m.id!==Y.rootGraph.id)return Y.loadGraphData(m);const v=Ve().activeWorkflow?.changeTracker;if(!v)return Y.loadGraphData(m);v.redoQueue=[],v.updateState([m],v.undoQueue)}a(i,"loadWorkflow");async function d(f){e.runButtonClick&&(await i(e.selectedItem),await new Promise(m=>setTimeout(m,500)),bi(Bl(Y.rootGraph),"afterQueued"),e.runButtonClick(f))}return a(d,"rerun"),(f,m)=>(p(),x(Z,null,[f.selectedItem?(p(),x("section",fC,[c("div",vC,[(p(!0),x(Z,null,ye(n.value,({content:v,iconClass:h},g)=>(p(),x("div",{key:g,class:"flex items-center justify-items-center gap-1 tabular-nums"},[h?(p(),x("i",{key:0,class:Q(h)},null,2)):A("",!0),Ie(" "+R(v),1)]))),128))]),c("div",mC,[L(X,{size:"md",onClick:d},{default:M(()=>[Ie(R(u(le)("linearMode.rerun"))+" ",1),m[2]||(m[2]=c("i",{class:"icon-[lucide--refresh-cw]"},null,-1))]),_:1}),L(X,{size:"md",onClick:m[0]||(m[0]=()=>i(f.selectedItem))},{default:M(()=>[Ie(R(u(le)("linearMode.reuseParameters"))+" ",1),m[3]||(m[3]=c("i",{class:"icon-[lucide--list-restart]"},null,-1))]),_:1}),m[5]||(m[5]=c("div",{class:"border-r border-border-subtle mx-1"},null,-1)),L(X,{size:"icon",onClick:m[1]||(m[1]=()=>{f.selectedOutput?.url&&u(Io)(f.selectedOutput.url)})},{default:M(()=>m[4]||(m[4]=[c("i",{class:"icon-[lucide--download]"},null,-1)])),_:1}),L(On,{entries:[[{icon:"icon-[lucide--download]",label:u(le)("linearMode.downloadAll"),action:a(()=>l(f.selectedItem),"action")}],[{icon:"icon-[lucide--trash-2]",label:u(le)("queue.jobMenu.deleteAsset"),action:a(()=>u(o).confirmDelete(f.selectedItem),"action")}]]},null,8,["entries"])])])):A("",!0),f.latentPreview??u(Lt)(f.selectedOutput)==="images"?(p(),O(sC,{key:1,mobile:f.mobile,src:f.latentPreview??f.selectedOutput.url},null,8,["mobile","src"])):u(Lt)(f.selectedOutput)==="video"?(p(),O(pC,{key:2,src:f.selectedOutput.url,class:"object-contain flex-1 md:contain-size"},null,8,["src"])):u(Lt)(f.selectedOutput)==="audio"?(p(),x("audio",{key:3,class:"w-full m-auto",controls:"",src:f.selectedOutput.url},null,8,gC)):u(Lt)(f.selectedOutput)==="text"?(p(),x("article",{key:4,class:"w-full max-w-128 m-auto my-12 overflow-y-auto",textContent:R(f.selectedOutput.url)},null,8,hC)):u(Lt)(f.selectedOutput)==="3d"?(p(),O(iC,{key:5,"model-url":f.selectedOutput.url},null,8,["model-url"])):(p(),x("img",yC))],64))}}),Is=bC,wC={key:0,class:"h-full flex flex-col w-14 shrink-0 overflow-hidden items-center p-2"},_C={key:0,"data-testid":"linear-job",class:"py-3 not-md:h-24 md:w-full aspect-square px-1 relative"},kC={key:0,class:"icon-[lucide--loader-circle] size-full animate-spin"},CC={key:1,class:"icon-[lucide--ellipsis] size-full animate-pulse"},SC=["textContent"],xC=["src","onClick"],TC=["onClick"],NC=q({__name:"OutputHistory",props:{scrollResetButtonTo:{},mobile:{type:Boolean}},emits:["updateSelection"],setup(e,{expose:o,emit:t}){const s=E(!1),r=ou("output"),n=Vt(),l=ne(),i=st().getSidebarTabs().find(_=>_.id==="workflows");r.fetchMediaList();const d=t;o({onWheel:I});const f=E([-1,0]);ie(f,()=>{const[_]=f.value;d("updateSelection",[r.media.value[_],S.value,f.value[0]<=0])});const m=Qe("outputsRef"),{reset:v}=ul(m,r.loadMore,{canLoadMore:a(()=>r.hasMore.value,"canLoadMore")});function h(){v(),m.value?.scrollTo(0,0)}a(h,"resetOutputsScroll");const{y:g}=rn(m);ie(f,()=>{const[_,N]=f.value;if(!m.value)return;const $=m.value?.children?.[_]?.children?.[N];$&&$.scrollIntoView({block:"nearest"})});function b(_){const N=Qa(_?.user_metadata);return N?.allOutputs?N.allOutputs:[]}a(b,"allOutputs");const S=y(()=>{const[_,N]=f.value;if(_<0)return;const $=b(r.media.value[_])[N];return $||b(r.media.value[0])[0]});ie(()=>r.media.value,(_,N)=>{if(_.length===N.length||N.length===0)return;if(f.value[0]<=0){f.value=[0,0];return}const $=sa(N[f.value[0]]?.id),V=sa(_).findIndex(B=>B?.id===$);V===-1?f.value=[0,0]:f.value=[V,f.value[1]]});function k(){const[_,N]=f.value;if(_<0||N<0){f.value=[0,0];return}const $=r.media.value[_];if(b($)[N+1]){f.value=[_,N+1];return}r.media.value[_+1]&&(f.value=[_+1,0])}a(k,"gotoNextOutput");function w(){const[_,N]=f.value;if(N>0){f.value=[_,N-1];return}if(_>0){const $=r.media.value[_-1];f.value=[_-1,b($).length-1];return}f.value=[0,0]}a(w,"gotoPreviousOutput");let C=new Xo(document.body),T=0;function I(_){if(!(!_.ctrlKey&&!_.metaKey)){if(_.preventDefault(),_.stopPropagation(),!C.isTrackpadGesture(_)){_.deltaY>0?k():w();return}for(T+=_.deltaY;T>=60;)T-=60,k();for(;T<=-60;)T+=60,w()}}return a(I,"onWheel"),Oe(document.body,"keydown",_=>{_.key!=="ArrowDown"&&_.key!=="ArrowUp"||_.target instanceof HTMLTextAreaElement||_.target instanceof HTMLInputElement||(_.preventDefault(),_.stopPropagation(),_.key==="ArrowDown"?k():w())}),(_,N)=>(p(),x(Z,null,[c("div",lt({class:u(ae)("min-w-38 flex bg-comfy-menu-bg md:h-full border-border-subtle",u(l).get("Comfy.Sidebar.Location")==="right"?"flex-row-reverse border-l":"md:border-r")},_.$attrs),[_.mobile?A("",!0):(p(),x("div",wC,[u(i)?(p(),O(Ot,{key:0,icon:u(i).icon,"icon-badge":u(i).iconBadge,tooltip:u(i).tooltip,label:u(i).label||u(i).title,class:Q(u(i).id+"-tab-button"),selected:s.value,"is-small":u(l).get("Comfy.Sidebar.Size")==="small",onClick:N[0]||(N[0]=$=>s.value=!s.value)},null,8,["icon","icon-badge","tooltip","label","class","selected","is-small"])):A("",!0),L(Er),N[1]||(N[1]=c("div",{class:"flex-1"},null,-1)),L(Ar)])),N[3]||(N[3]=c("div",{class:"border-border-subtle md:border-r"},null,-1)),s.value?(p(),O(cu,{key:1,class:"min-w-50 grow-1"})):(p(),x("article",{key:2,ref_key:"outputsRef",ref:m,"data-testid":"linear-outputs",class:"h-24 md:h-full min-w-24 grow-1 p-3 overflow-x-auto overflow-y-clip md:overflow-y-auto md:overflow-x-clip md:border-r-1 border-node-component-border flex md:flex-col items-center contain-size"},[u(n).runningTasks.length>0||u(n).pendingTasks.length>0?(p(),x("section",_C,[u(n).runningTasks.length>0?(p(),x("i",kC)):(p(),x("i",CC)),u(n).runningTasks.length+u(n).pendingTasks.length>1?(p(),x("div",{key:2,class:"absolute top-0 right-0 p-1 min-w-5 h-5 flex justify-center items-center rounded-full bg-primary-background text-text-primary",textContent:R(u(n).runningTasks.length+u(n).pendingTasks.length)},null,8,SC)):A("",!0)])):A("",!0),(p(!0),x(Z,null,ye(u(r).media.value,($,V)=>(p(),x(Z,{key:V},[N[2]||(N[2]=c("div",{class:"border-border-subtle not-md:border-l md:border-t first:border-none not-md:h-21 md:w-full m-3"},null,-1)),(p(!0),x(Z,null,ye(b($),(B,D)=>(p(),x(Z,{key:D},[u(Lt)(B)==="images"?(p(),x("img",{key:0,class:Q(u(ae)("p-1 rounded-lg aspect-square object-cover not-md:h-20 md:w-full",V===f.value[0]&&D===f.value[1]&&"border-2")),src:B.url,onClick:a(U=>f.value=[V,D],"onClick")},null,10,xC)):(p(),x("div",{key:1,class:Q(u(ae)("p-1 rounded-lg aspect-square w-full",V===f.value[0]&&D===f.value[1]&&"border-2")),onClick:a(U=>f.value=[V,D],"onClick")},[c("i",{class:Q(u(ae)(u(Gr)[u(Lt)(B)]?.iconClass,"size-full"))},null,2)],10,TC))],64))),128))],64))),128))],512))],16),u(g)&&_.scrollResetButtonTo?(p(),O(yt,{key:0,to:_.scrollResetButtonTo},[L(X,{class:Q(u(ae)("p-3 size-10 bg-base-foreground",u(l).get("Comfy.Sidebar.Location")==="left"?"left-4":"right-4")),onClick:h},{default:M(()=>N[4]||(N[4]=[c("i",{class:"icon-[lucide--arrow-up] size-4 bg-base-background"},null,-1)])),_:1},8,["class"])],8,["to"])):A("",!0)],64))}}),za=NC,IC={class:"workflow-tabs-container pointer-events-auto h-9.5 w-full"},PC={class:"flex h-full items-center"},$C={key:0,class:"justify-center border-border-subtle border-t overflow-y-scroll h-[calc(100%-38px)] bg-comfy-menu-bg"},MC={class:"flex flex-col text-muted-foreground"},DC={class:"text-base-foreground flex items-center gap-4 justify-end m-4"},LC=["textContent"],AC={class:"absolute z-20 bottom-4 right-4 text-base-foreground flex items-center gap-4"},EC=["textContent"],VC=q({__name:"LinearView",setup(e){const o=Wo(),t=ne(),s=un(pa).smaller("md"),r=E(!1);bt(()=>o.latestPreview[0],()=>r.value=!0);const n=E(),l=E(),i=E(!0),d=Qe("outputHistoryRef"),f=Qe("topLeftRef"),m=Qe("topRightRef"),v=Qe("bottomLeftRef"),h=Qe("bottomRightRef"),g=Qe("linearWorkflowRef");return(b,S)=>(p(),x("div",{class:"absolute w-full h-full",onWheelCapture:S[4]||(S[4]=k=>u(d)?.onWheel(k))},[c("div",IC,[c("div",PC,[L(Or),L(Vr)])]),u(s)?(p(),x("div",$C,[c("div",MC,[L(Is,{"latent-preview":i.value&&r.value?u(o).latestPreview[0]:void 0,"run-button-click":u(g)?.runButtonClick,"selected-item":n.value,"selected-output":l.value,mobile:""},null,8,["latent-preview","run-button-click","selected-item","selected-output"])]),L(za,{ref_key:"outputHistoryRef",ref:d,mobile:"",onUpdateSelection:S[0]||(S[0]=([k,w,C])=>{n.value=k,l.value=w,i.value=C,r.value=!1})},null,512),L(Ba,{ref_key:"linearWorkflowRef",ref:g,mobile:""},null,512),c("div",DC,[c("a",{href:"https://form.typeform.com/to/gmVqFi8l",textContent:R(u(le)("linearMode.beta"))},null,8,LC),L(Ns,{"data-tf-widget":"gmVqFi8l"})])])):(p(),O(u(Ua),{key:1,class:"h-[calc(100%-38px)] w-full bg-comfy-menu-secondary-bg",pt:{gutter:{class:"bg-transparent w-4 -mx-3"}},onResizestart:S[3]||(S[3]=({originalEvent:k})=>k.preventDefault())},{default:M(()=>[L(u(At),{id:"linearLeftPanel",size:1,class:"min-w-min outline-none"},{default:M(()=>[u(t).get("Comfy.Sidebar.Location")==="left"?(p(),O(za,{key:0,ref_key:"outputHistoryRef",ref:d,"scroll-reset-button-to":u(Xt)(u(v))??void 0,onUpdateSelection:S[1]||(S[1]=([k,w,C])=>{n.value=k,l.value=w,i.value=C,r.value=!1})},null,8,["scroll-reset-button-to"])):(p(),O(Ba,{key:1,ref_key:"linearWorkflowRef",ref:g,"toast-to":u(Xt)(u(v))??void 0,"notes-to":u(Xt)(u(f))??void 0},null,8,["toast-to","notes-to"])),S[5]||(S[5]=c("div",null,null,-1))]),_:1}),L(u(At),{id:"linearCenterPanel",size:98,class:"flex flex-col min-w-min gap-4 mx-2 px-10 pt-8 pb-4 relative text-muted-foreground outline-none"},{default:M(()=>[L(Is,{"latent-preview":i.value&&r.value?u(o).latestPreview[0]:void 0,"run-button-click":u(g)?.runButtonClick,"selected-item":n.value,"selected-output":l.value},null,8,["latent-preview","run-button-click","selected-item","selected-output"]),c("div",{ref_key:"topLeftRef",ref:f,class:"absolute z-21 top-4 left-4"},null,512),c("div",{ref_key:"topRightRef",ref:m,class:"absolute z-21 top-4 right-4"},null,512),c("div",{ref_key:"bottomLeftRef",ref:v,class:"absolute z-20 bottom-4 left-4"},null,512),c("div",{ref_key:"bottomRightRef",ref:h,class:"absolute z-20 bottom-24 right-4"},null,512),c("div",AC,[c("div",{textContent:R(u(le)("linearMode.beta"))},null,8,EC),L(Ns,{"data-tf-widget":"gmVqFi8l",align:u(t).get("Comfy.Sidebar.Location")==="left"?"end":"start"},null,8,["align"])])]),_:1}),L(u(At),{id:"linearRightPanel",size:1,class:"min-w-min outline-none"},{default:M(()=>[u(t).get("Comfy.Sidebar.Location")==="left"?(p(),O(Ba,{key:0,ref_key:"linearWorkflowRef",ref:g,"toast-to":u(Xt)(u(h))??void 0,"notes-to":u(Xt)(u(m))??void 0},null,8,["toast-to","notes-to"])):(p(),O(za,{key:1,ref_key:"outputHistoryRef",ref:d,"scroll-reset-button-to":u(Xt)(u(h))??void 0,onUpdateSelection:S[2]||(S[2]=([k,w,C])=>{n.value=k,l.value=w,i.value=C,r.value=!1})},null,8,["scroll-reset-button-to"])),S[6]||(S[6]=c("div",null,null,-1))]),_:1})]),_:1}))],32))}}),OC=VC,RC={key:0,class:"flex items-center px-4 py-2"},WC={class:"flex w-full items-center justify-between py-2"},BC={class:"flex flex-col text-sm leading-normal font-medium"},zC={class:"text-muted"},UC={class:"h-full"},FC={class:"break-words whitespace-pre-wrap"},GC={class:"flex w-full items-center justify-between px-6 py-2 shadow-lg"},HC={class:"flex items-center text-base leading-none"},jC={class:"flex items-center"},qC={class:"flex items-center gap-4"},KC={key:0,class:"text-sm text-muted-foreground"},QC={class:"flex items-center"},YC=q({__name:"ManagerProgressToast",setup(e){const{t:o}=ue(),t=mu(),s=ne(),{runFullConflictAnalysis:r}=nr(),n=E(!1),l=E(0),i=y(()=>[{label:o("manager.installationQueue")},{label:o("manager.failed",{count:t.failedTasksIds.length})}]),d=y(()=>l.value===0?t.succeededTasksLogs:t.failedTasksLogs),f=y(()=>t.taskLogs.length>0),m=E(!1),v=E(!1),h=y(()=>t.isProcessingTasks||m.value),g=a(z=>{const K=d.value[z];if(!K)return!1;const H=t.taskQueue;return H?[...H.running_queue||[],...H.pending_queue||[]].some(J=>J.ui_id===K.taskId):!1},"isTaskInProgress"),b=y(()=>t.succeededTasksIds.length+t.failedTasksIds.length),S=y(()=>{const z=Object.keys(t.taskHistory).length,K=t.taskQueue;return z+(K?(K.running_queue?.length||0)+(K.pending_queue?.length||0):0)}),k=y(()=>m.value?o("manager.restartingBackend"):v.value?o("manager.extensionsSuccessfullyInstalled"):t.taskLogs.length?t.taskLogs.at(-1)?.taskName??o("manager.installingDependencies"):o("manager.installingDependencies")),w=E({});function C(z){w.value[z]=!w.value[z]}a(C,"togglePanel");const T=E(null),{y:I}=rn(T,{eventListenerOptions:{passive:!0}}),_=E(null),N=E(!1),$=y(()=>d.value?.at(-1)?.logs);function V(z){return z?Math.abs(z.scrollHeight-z.scrollTop-z.clientHeight)<20:!1}a(V,"isAtBottom");function B(){!_.value||N.value||(_.value.scrollTop=_.value.scrollHeight)}a(B,"scrollLastPanelToBottom");function D(){I.value=T.value?.scrollHeight??0}a(D,"scrollContentToBottom");function U(){N.value=!1}a(U,"resetUserScrolling");function j(z){const K=z.target;K===_.value&&(N.value=!V(K))}a(j,"handleScroll");function W(){N.value||B()}a(W,"onLogsAdded"),bt($,W,{flush:"post",deep:!0}),bt(()=>n.value,D),bt(()=>!n.value,U);function F(){t.resetTaskState(),n.value=!1}a(F,"closeToast");async function G(){const z=s.get("Comfy.Toast.DisableReconnectingToast");try{await s.set("Comfy.Toast.DisableReconnectingToast",!0),m.value=!0,Oe(Ne,"reconnected",a(async()=>{try{t.setStale(),await Ce().execute("Comfy.RefreshNodeDefinitions"),await nt().reloadCurrentWorkflow(),r()}finally{await s.set("Comfy.Toast.DisableReconnectingToast",z),m.value=!1,v.value=!0,setTimeout(()=>{F()},3e3)}},"onReconnect"),{once:!0}),await cr().rebootComfyUI()}catch(K){throw await s.set("Comfy.Toast.DisableReconnectingToast",z),m.value=!1,v.value=!1,F(),K}}return a(G,"handleRestart"),Re(()=>{D()}),rt(()=>{n.value=!1}),(z,K)=>(p(),O(Ur,{expanded:n.value,"onUpdate:expanded":K[1]||(K[1]=H=>n.value=H),visible:f.value},{default:M(()=>[n.value?(p(),x("div",RC,[L(u(el),{"active-index":l.value,"onUpdate:activeIndex":K[0]||(K[0]=H=>l.value=H),model:i.value,class:"w-full border-none",pt:{menu:{class:"border-none"},menuitem:{class:"font-medium"},action:{class:"px-4 py-2"}}},null,8,["active-index","model"])])):A("",!0),c("div",{ref_key:"sectionsContainerRef",ref:T,class:"scroll-container max-h-[450px] overflow-y-auto px-6 py-4",style:{scrollbarWidth:"thin",scrollbarColor:"rgba(156, 163, 175, 0.5) transparent"}},[(p(!0),x(Z,null,ye(d.value,(H,J)=>(p(),x("div",{key:J},[L(u(nn),{expanded:w.value[J]===!0,toggleable:"",class:"shadow-elevation-1 mt-2 rounded-lg"},{header:M(()=>[c("div",WC,[c("div",BC,[c("span",null,R(H.taskName),1),c("span",zC,R(g(J)?u(o)("g.inProgress"):u(o)("g.completed")+" ✓"),1)])])]),toggleicon:M(()=>[L(X,{variant:"textonly",class:"text-neutral-300",onClick:a(te=>C(J),"onClick")},{default:M(()=>[c("i",{class:Q(w.value[J]?"pi pi-chevron-right":"pi pi-chevron-down")},null,2)]),_:2},1032,["onClick"])]),default:M(()=>[c("div",{ref_for:!0,ref:J===d.value.length-1?te=>_.value=te:void 0,class:Q(["h-64 overflow-y-auto rounded-lg bg-black",{"h-64":J!==d.value.length-1,grow:J===d.value.length-1}]),onScroll:j},[c("div",UC,[(p(!0),x(Z,null,ye(H.logs,(te,he)=>(p(),x("div",{key:he,class:"text-muted"},[c("pre",FC,R(te),1)]))),128))])],34)]),_:2},1032,["expanded"])]))),128))],512)]),footer:M(({toggle:H})=>[c("div",GC,[c("div",HC,[c("div",jC,[h.value?(p(),x(Z,{key:0},[L(uu,{duration:"1s",class:"mr-2"}),c("span",null,R(k.value),1)],64)):v.value?(p(),x(Z,{key:1},[K[2]||(K[2]=c("span",{class:"mr-2"},"🎉",-1)),c("span",null,R(k.value),1)],64)):(p(),x(Z,{key:2},[K[3]||(K[3]=c("span",{class:"mr-2"},"✅",-1)),c("span",null,R(u(o)("manager.restartToApplyChanges")),1)],64))])]),c("div",qC,[h.value?(p(),x("span",KC,R(b.value)+" "+R(u(o)("g.progressCountOf"))+" "+R(S.value),1)):A("",!0),c("div",QC,[!h.value&&!v.value?(p(),O(X,{key:0,variant:"secondary",class:"mr-4 rounded-full border-2 border-base-foreground px-3 text-base-foreground hover:bg-secondary-background-hover",onClick:G},{default:M(()=>[Ie(R(u(o)("manager.applyChanges")),1)]),_:1})):v.value?A("",!0):(p(),O(X,{key:1,variant:"muted-textonly",size:"sm",class:"rounded-full font-bold","aria-label":u(o)(n.value?"contextMenu.Collapse":"contextMenu.Expand"),onClick:ke(H,["stop"])},{default:M(()=>[c("i",{class:Q(n.value?"pi pi-chevron-up":"pi pi-chevron-down")},null,2)]),_:2},1032,["aria-label","onClick"])),L(X,{variant:"muted-textonly",size:"sm",class:"rounded-full font-bold","aria-label":u(o)("g.close"),onClick:ke(F,["stop"])},{default:M(()=>K[4]||(K[4]=[c("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])])])]),_:1},8,["expanded","visible"]))}}),JC=YC,XC={class:"comfyui-body grid h-full w-full overflow-hidden"},ZC=q({__name:"GraphView",setup(e){Nk(),K_(),L_();const{t:o}=ue(),t=lo(),s=ne(),r=it(),n=St(),l=Vt(),i=tr(),d=Fr(),f=E(null),{linearMode:m}=ze(fe()),v=Le(),h=or();let g=!1,b=null,S=null,k=null;ie(()=>n.completedActivePalette,W=>{const F="dark-theme";W.light_theme?document.body.classList.remove(F):document.body.classList.add(F),Xe()&&ko().changeTheme({color:"rgba(0, 0, 0, 0)",symbolColor:W.colors.comfy_base["input-text"]})},{immediate:!0}),Xe()&&ie(()=>l.tasks,(W,F)=>{const G=new Set(F.filter(z=>z.isRunning).map(z=>z.promptId));W.filter(z=>G.has(z.promptId)&&z.isHistory).forEach(z=>{ko().Events.incrementUserProperty(`execution:${z.displayStatus.toLowerCase()}`,1),ko().Events.trackEvent("execution",{status:z.displayStatus.toLowerCase()})})},{deep:!0}),we(()=>{const W=s.get("Comfy.TextareaWidget.FontSize");document.documentElement.style.setProperty("--comfy-textarea-font-size",`${W}px`)}),we(()=>{const W=s.get("Comfy.TreeExplorer.ItemPadding");document.documentElement.style.setProperty("--comfy-tree-explorer-item-padding",`${W}px`)}),we(async()=>{const W=s.get("Comfy.Locale");if(W)try{await Vl(W),Ol.global.locale.value=W}catch(F){console.error(`Failed to switch to locale "${W}":`,F)}});const w=y(()=>s.get("Comfy.UseNewMenu"));we(()=>{w.value==="Disabled"?(Y.ui.menuContainer.style.setProperty("display","block"),Y.ui.restoreMenuPosition()):Y.ui.menuContainer.style.setProperty("display","none")}),we(()=>{l.maxHistoryItems=s.get("Comfy.Queue.MaxHistoryItems")});const C=a(()=>{const W=q_();Ce().registerCommands(W),kn().registerCoreMenuCommands(),Sa().registerCoreKeybindings(),Po().registerCoreSidebarTabs(),po().registerCoreBottomPanelTabs(),Y.extensionManager=st()},"init"),T=sr(),I=Po(),_=a(async W=>{T.update(W),await l.update(),(I.activeSidebarTabId==="assets"||m.value)&&await i.updateHistory()},"onStatus"),N=a(async()=>{await l.update(),I.activeSidebarTabId==="assets"&&await i.updateHistory()},"onExecutionSuccess"),$={severity:"error",summary:o("g.reconnecting")},V=a(()=>{s.get("Comfy.Toast.DisableReconnectingToast")||(t.remove($),t.add($))},"onReconnecting"),B=a(()=>{s.get("Comfy.Toast.DisableReconnectingToast")||(t.remove($),t.add({severity:"success",summary:o("g.reconnected"),life:2e3}))},"onReconnected");Re(()=>{Ne.addEventListener("status",_),Ne.addEventListener("execution_success",N),Ne.addEventListener("reconnecting",V),Ne.addEventListener("reconnected",B),r.bindExecutionEvents();try{C(),f.value?.prepend(Y.ui.menuContainer)}catch(W){console.error("Failed to init ComfyUI frontend",W)}}),rt(()=>{Ne.removeEventListener("status",_),Ne.removeEventListener("execution_success",N),Ne.removeEventListener("reconnecting",V),Ne.removeEventListener("reconnected",B),r.unbindExecutionEvents(),b&&(document.removeEventListener("visibilitychange",b),b=null),S&&(window.clearInterval(S),S=null),k&&(k.close(),k=null)}),Oe(window,"keydown",Sa().keybindHandler);const{wrapWithErrorHandling:D,wrapWithErrorHandlingAsync:U}=jt();Tk({immediate:!0}),Ue(()=>{d.initialize().catch(W=>{console.warn("Version compatibility check failed:",W)})});const j=a(()=>{br(()=>{if(Fe&&h.isAuthenticated&&!g&&(v?.trackUserLoggedIn(),g=!0),Fe&&v&&!b&&(b=a(()=>{v.trackPageVisibilityChanged({visibility_state:document.visibilityState})},"visibilityListener"),document.addEventListener("visibilitychange",b)),Fe&&v&&!S){k=new BroadcastChannel("comfyui-tab-count");const W=new Map,F=crypto.randomUUID();k.onmessage=G=>{G.data.type==="heartbeat"&&G.data.tabId!==F&&W.set(G.data.tabId,Date.now())},S=window.setInterval(()=>{const G=Date.now();W.forEach((K,H)=>{G-K>45e3&&W.delete(H)}),k?.postMessage({type:"heartbeat",tabId:F});const z=W.size+1;v.trackTabCount({tab_count:z})},6e4*5),k.postMessage({type:"heartbeat",tabId:F})}D(Sa().registerUserKeybindings)(),D(Xu().loadServerConfig)(Q_,s.get("Comfy.Server.ServerConfigValues")),U(ki().loadModelFolders)(),U(_n().loadNodeFrequencies)(),Ct().nodeSearchService.searchNode("")},1e3)},"onGraphReady");return(W,F)=>(p(),x(Z,null,[c("div",XC,[F[0]||(F[0]=c("div",{id:"comfyui-body-top",class:"comfyui-body-top"},null,-1)),F[1]||(F[1]=c("div",{id:"comfyui-body-bottom",class:"comfyui-body-bottom"},null,-1)),F[2]||(F[2]=c("div",{id:"comfyui-body-left",class:"comfyui-body-left"},null,-1)),F[3]||(F[3]=c("div",{id:"comfyui-body-right",class:"comfyui-body-right"},null,-1)),ce(c("div",{id:"graph-canvas-container",ref_key:"graphCanvasContainerRef",ref:f,class:"graph-canvas-container"},[L(N_,{onReady:j})],512),[[tt,!u(m)]]),u(m)?(p(),O(OC,{key:0})):A("",!0)]),L(Ku),L(M_),L(Sk),L(JC),u(Xe)()?A("",!0):(p(),O(sd,{key:0})),L(ad)],64))}}),OS=Be(ZC,[["__scopeId","data-v-0aea237e"]]);export{OS as default};
8
+ 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:ge.CANVAS_GRID_SIZE},{id:"pysssss.SnapToGrid",category:["LiteGraph","Canvas","AlwaysSnapToGrid"],name:"Always snap to grid",type:"boolean",defaultValue:!1,versionAdded:"1.3.13"},{id:"Comfy.Server.ServerConfigValues",name:"Server config values for frontend display",tooltip:"Server config values used for frontend display only",type:"hidden",defaultValue:{},versionAdded:"1.4.8"},{id:"Comfy.Server.LaunchArgs",name:"Server launch arguments",tooltip:"These are the actual arguments that are passed to the server when it is launched.",type:"hidden",defaultValue:{},versionAdded:"1.4.8"},{id:"Comfy.Queue.MaxHistoryItems",name:"Queue history size",tooltip:"The maximum number of tasks that show in the queue history.",type:"slider",attrs:{min:2,max:256,step:2},defaultValue:64,versionAdded:"1.4.12"},{id:"Comfy.Queue.History.Expanded",name:"Queue history expanded",type:"hidden",defaultValue:!1,versionAdded:"1.37.0"},{id:"Comfy.Execution.PreviewMethod",category:["Comfy","Execution","PreviewMethod"],name:"Live preview method",tooltip:'Live preview method during image generation. "default" uses the server CLI setting.',type:"combo",options:["default","none","auto","latent2rgb","taesd"],defaultValue:"default",versionAdded:"1.36.0"},{id:"LiteGraph.Canvas.MaximumFps",name:"Maximum FPS",tooltip:"The maximum frames per second that the canvas is allowed to render. Caps GPU usage at the cost of smoothness. If 0, the screen refresh rate is used. Default: 0",type:"slider",attrs:{min:0,max:120},defaultValue:0,versionAdded:"1.5.1"},{id:"Comfy.EnableWorkflowViewRestore",category:["Comfy","Workflow","EnableWorkflowViewRestore"],name:"Save and restore canvas position and zoom level in workflows",type:"boolean",defaultValue:!0,versionModified:"1.5.4"},{id:"Comfy.Workflow.ConfirmDelete",name:"Show confirmation when deleting workflows",type:"boolean",defaultValue:!0,versionAdded:"1.5.6"},{id:"Comfy.ColorPalette",name:"The active color palette id",type:"hidden",defaultValue:"dark",versionModified:"1.6.7",migrateDeprecatedValue(e){return e.startsWith("custom_")?e.replace("custom_",""):e}},{id:"Comfy.CustomColorPalettes",name:"Custom color palettes",type:"hidden",defaultValue:{},versionModified:"1.6.7"},{id:"Comfy.WidgetControlMode",category:["Comfy","Node Widget","WidgetControlMode"],name:"Widget control mode",tooltip:"Controls when widget values are updated (randomize/increment/decrement), either before the prompt is queued or after.",type:"combo",defaultValue:"after",options:["before","after"],versionModified:"1.6.10"},{id:"Comfy.TutorialCompleted",name:"Tutorial completed",type:"hidden",defaultValue:!1,versionAdded:"1.8.7"},{id:"Comfy.InstalledVersion",name:"The frontend version that was running when the user first installed ComfyUI",type:"hidden",defaultValue:null,versionAdded:"1.24.0"},{id:"LiteGraph.ContextMenu.Scaling",name:"Scale node combo widget menus (lists) when zoomed in",defaultValue:!1,type:"boolean",versionAdded:"1.8.8"},{id:"LiteGraph.Canvas.LowQualityRenderingZoomThreshold",type:"hidden",deprecated:!0,name:"Low quality rendering zoom threshold (deprecated)",tooltip:"Zoom level threshold for performance mode. Lower values (0.1) = quality at all zoom levels. Higher values (1.0) = performance mode even when zoomed in. Performance mode simplifies rendering by hiding text labels, shadows, and details.",attrs:{min:.1,max:1,step:.01},defaultValue:.6,versionAdded:"1.9.1",versionModified:"1.26.7"},{id:"LiteGraph.Canvas.MinFontSizeForLOD",name:"Zoom Node Level of Detail - font size threshold",tooltip:"Controls when the nodes switch to low quality LOD rendering. Uses font size in pixels to determine when to switch. Set to 0 to disable. Values 1-24 set the minimum font size threshold for LOD - higher values (24px) = switch nodes to simplified rendering sooner when zooming out, lower values (1px) = maintain full node quality longer.",type:"slider",attrs:{min:0,max:24,step:1},defaultValue:8,versionAdded:"1.26.7",hideInVueNodes:!0},{id:"Comfy.Canvas.SelectionToolbox",category:["LiteGraph","Canvas","SelectionToolbox"],name:"Show selection toolbox",type:"boolean",defaultValue:!0,versionAdded:"1.10.5"},{id:"LiteGraph.Reroute.SplineOffset",name:"Reroute spline offset",tooltip:"The bezier control point offset from the reroute centre point",type:"slider",defaultValue:20,attrs:{min:0,max:400},versionAdded:"1.15.7"},{id:"Comfy.Toast.DisableReconnectingToast",name:"Disable toasts when reconnecting or reconnected",type:"hidden",defaultValue:!1,versionAdded:"1.15.12"},{id:"Comfy.Minimap.Visible",name:"Display minimap on canvas",type:"hidden",defaultValue:window.innerWidth>=pa.lg,versionAdded:"1.25.0"},{id:"Comfy.Minimap.NodeColors",name:"Display node with its original color on minimap",type:"hidden",defaultValue:!1,versionAdded:"1.26.0"},{id:"Comfy.Minimap.ShowLinks",name:"Display links on minimap",type:"hidden",defaultValue:!0,versionAdded:"1.26.0"},{id:"Comfy.Minimap.ShowGroups",name:"Display node groups on minimap",type:"hidden",defaultValue:!0,versionAdded:"1.26.0"},{id:"Comfy.Minimap.RenderBypassState",name:"Render bypass state on minimap",type:"hidden",defaultValue:!0,versionAdded:"1.26.0"},{id:"Comfy.Minimap.RenderErrorState",name:"Render error state on minimap",type:"hidden",defaultValue:!0,versionAdded:"1.26.0"},{id:"Comfy.Workflow.AutoSaveDelay",name:"Auto Save Delay (ms)",defaultValue:1e3,type:"number",tooltip:'Only applies if Auto Save is set to "after delay".',versionAdded:"1.16.0"},{id:"Comfy.Workflow.AutoSave",name:"Auto Save",type:"combo",options:["off","after delay"],defaultValue:"off",versionAdded:"1.16.0"},{id:"Comfy.Workflow.Persist",name:"Persist workflow state and restore on page (re)load",type:"boolean",defaultValue:!0,versionAdded:"1.16.1"},{id:"LiteGraph.Node.DefaultPadding",name:"Always shrink new nodes",tooltip:"Resize nodes to the smallest possible size when created. When disabled, a newly added node will be widened slightly to show widget values.",type:"boolean",defaultValue:!1,versionAdded:"1.18.0"},{id:"Comfy.Canvas.BackgroundImage",category:["Appearance","Canvas","Background"],name:"Canvas background image",type:"backgroundImage",tooltip:'Image URL for the canvas background. You can right-click an image in the outputs panel and select "Set as Background" to use it, or upload your own image using the upload button.',defaultValue:"",versionAdded:"1.20.4",versionModified:"1.20.5"},{id:"Comfy.Release.Version",name:"Last seen release version",type:"hidden",defaultValue:""},{id:"Comfy.Release.Status",name:"Release status",type:"hidden",defaultValue:"skipped"},{id:"Comfy.Release.Timestamp",name:"Release seen timestamp",type:"hidden",defaultValue:0},{id:"Comfy.Templates.SelectedModels",name:"Template library - Selected model filters",type:"hidden",defaultValue:[]},{id:"Comfy.Templates.SelectedUseCases",name:"Template library - Selected use case filters",type:"hidden",defaultValue:[]},{id:"Comfy.Templates.SelectedRunsOn",name:"Template library - Selected runs on filters",type:"hidden",defaultValue:[]},{id:"Comfy.Templates.SortBy",name:"Template library - Sort preference",type:"hidden",defaultValue:"default"},{id:"Comfy.VueNodes.Enabled",category:["Comfy","Nodes 2.0","VueNodesEnabled"],name:"Modern Node Design (Nodes 2.0)",type:"boolean",tooltip:"Modern: DOM-based rendering with enhanced interactivity, native browser features, and updated visual design. Classic: Traditional canvas rendering.",defaultValue:!1,sortOrder:100,experimental:!0,versionAdded:"1.27.1"},{id:"Comfy.VueNodes.AutoScaleLayout",category:["Comfy","Nodes 2.0","AutoScaleLayout"],name:"Auto-scale layout (Nodes 2.0)",tooltip:"Automatically scale node positions when switching to Nodes 2.0 rendering to prevent overlap",type:"boolean",sortOrder:50,experimental:!0,defaultValue:!0,versionAdded:"1.30.3"},{id:"Comfy.Assets.UseAssetAPI",name:"Use Asset API for model library",type:"hidden",tooltip:"Use new Asset API for model browsing",defaultValue:!!Fe,experimental:!0},{id:"Comfy.VersionCompatibility.DisableWarnings",name:"Disable version compatibility warnings",type:"hidden",defaultValue:!1,versionAdded:"1.34.1"},{id:"Comfy.RightSidePanel.IsOpen",name:"Right side panel open state",type:"hidden",defaultValue:!1,versionAdded:"1.37.0"},{id:"Comfy.Queue.QPOV2",category:["Comfy","Queue","Layout"],name:"Use the unified job queue in the Assets side panel",type:"boolean",tooltip:"Replaces the floating job queue panel with an equivalent job queue embedded in the Assets side panel. You can disable this to return to the floating panel layout.",defaultValue:!0,experimental:!0}];function $1(){const e=Ve(),o=ne(),t=nt(),s=y(()=>o.get("Comfy.Workflow.AutoSave")),r=y(()=>o.get("Comfy.Workflow.AutoSaveDelay"));let n=null,l=!1,i=!1;const d=a(()=>{if(n&&(clearTimeout(n),n=null),s.value==="after delay"){if(l){i=!0;return}const m=r.value;n=setTimeout(async()=>{const v=e.activeWorkflow;if(v?.isModified&&v.isPersisted)try{l=!0,await t.saveWorkflow(v)}catch(h){console.error("Auto save failed:",h)}finally{l=!1,i&&(i=!1,d())}},m)}},"scheduleAutoSave");ie(s,m=>{n&&(clearTimeout(n),n=null),m==="after delay"&&e.activeWorkflow?.isModified&&d()},{immediate:!0});const f=a(()=>{d()},"onGraphChanged");Ne.addEventListener("graphChanged",f),kt(()=>{n&&(clearTimeout(n),n=null),Ne.removeEventListener("graphChanged",f)})}a($1,"useWorkflowAutoSave");function M1(){const e=Gs(),o=Fs(),{t}=ue(),s=lo(),r=Dr(),n=fe(),l=hr.TEMPLATE,i=["linear"],d=a(h=>/^[a-zA-Z0-9_.-]+$/.test(h),"isValidParameter"),f=a(h=>i.includes(h),"isSupportedMode"),m=a(()=>{const h={...e.query};delete h.template,delete h.source,delete h.mode,o.replace({query:h})},"cleanupUrlParams");return{loadTemplateFromUrl:a(async()=>{const h=e.query.template;if(!h||typeof h!="string")return;if(!d(h)){console.warn(`[useTemplateUrlLoader] Invalid template parameter format: ${h}`);return}const g=e.query.source||"default";if(!d(g)){console.warn(`[useTemplateUrlLoader] Invalid source parameter format: ${g}`);return}const b=e.query.mode;if(b&&(typeof b!="string"||!d(b))){console.warn(`[useTemplateUrlLoader] Invalid mode parameter format: ${b}`);return}b&&!f(b)&&console.warn(`[useTemplateUrlLoader] Unsupported mode parameter: ${b}. Supported modes: ${i.join(", ")}`);try{await r.loadTemplates(),await r.loadWorkflowTemplate(h,g)?b==="linear"&&(n.linearMode=!0):s.add({severity:"error",summary:t("g.error"),detail:t("templateWorkflows.error.templateNotFound",{templateName:h}),life:3e3})}catch(S){console.error("[useTemplateUrlLoader] Failed to load template from URL:",S),s.add({severity:"error",summary:t("g.error"),detail:t("g.errorLoadingTemplate"),life:3e3})}finally{m(),ju(l)}},"loadTemplateFromUrl")}}a(M1,"useTemplateUrlLoader");function D1(){const e=Ve(),o=ne(),t=Gs(),s=Fs(),r=M1(),n=hr.TEMPLATE,l=a(async()=>{Hu(n);const I=Gu(n,t.query);return I&&await s.replace({query:I}),I??t.query},"ensureTemplateQueryFromIntent"),i=y(()=>o.get("Comfy.Workflow.Persist")),d=a(()=>{if(!i.value)return;const I=JSON.stringify(Y.rootGraph.serialize());try{localStorage.setItem("workflow",I),Ne.clientId&&sessionStorage.setItem(`workflow:${Ne.clientId}`,I)}catch(_){const N=Object.keys(sessionStorage).filter($=>$.startsWith("workflow:")||$==="workflow");throw console.error("QuotaExceededError details:",{workflowSizeKB:Math.round(I.length/1024),totalStorageItems:Object.keys(sessionStorage).length,ourWorkflowKeys:N.length,ourWorkflowSizes:N.map($=>({key:$,sizeKB:Math.round(sessionStorage[$].length/1024)})),error:_ instanceof Error?_.message:String(_)}),_}},"persistCurrentWorkflow"),f=a(async(I,_)=>{if(!I)return!1;const N=JSON.parse(I);return await Y.loadGraphData(N,!0,!0,_),!0},"loadWorkflowFromStorage"),m=a(async()=>{const I=Ca("Comfy.PreviousWorkflow"),_=Ne.initialClientId??Ne.clientId;return _&&await f(sessionStorage.getItem(`workflow:${_}`),I)?!0:await f(localStorage.getItem("workflow"),I)},"loadPreviousWorkflowFromStorage"),v=a(async()=>{o.get("Comfy.TutorialCompleted")?await Y.loadGraphData():(await o.set("Comfy.TutorialCompleted",!0),await nt().loadBlankWorkflow(),await Ce().execute("Comfy.BrowseTemplates"))},"loadDefaultWorkflow"),h=a(async()=>{if(i.value)try{await m()||await v()}catch(I){console.error("Error loading previous workflow",I),await v()}},"initializeWorkflow"),g=a(async()=>{const I=await l();I.template&&typeof I.template=="string"&&await r.loadTemplateFromUrl()},"loadTemplateFromUrlIfPresent");ie(()=>e.activeWorkflow?.key,I=>{I&&(ka("Comfy.PreviousWorkflow",I),d())}),Ne.addEventListener("graphChanged",d),Bs(()=>{Ne.removeEventListener("graphChanged",d)});const b=y(()=>e.openWorkflows),S=y(()=>e.activeWorkflow),k=y(()=>!b.value||!S.value?{paths:[],activeIndex:-1}:{paths:b.value.filter(I=>I?.isPersisted).map(I=>I.path),activeIndex:b.value.findIndex(I=>I.path===S.value?.path)}),w=JSON.parse(Ca("Comfy.OpenWorkflowsPaths")||"[]"),C=JSON.parse(Ca("Comfy.ActiveWorkflowIndex")||"-1");return ie(k,({paths:I,activeIndex:_})=>{i.value&&(ka("Comfy.OpenWorkflowsPaths",JSON.stringify(I)),ka("Comfy.ActiveWorkflowIndex",JSON.stringify(_)))}),{initializeWorkflow:h,loadTemplateFromUrlIfPresent:g,restoreWorkflowTabsState:a(()=>{i.value&&w?.length>0&&C>=0&&e.openWorkflowsInBackground({left:w.slice(0,C),right:w.slice(C)})},"restoreWorkflowTabsState")}}a(D1,"useWorkflowPersistence");function L1(e,o={}){const{settleDelay:t=256,passive:s=!0}=o,r=E(!1),n=a(()=>{r.value=!0},"markTransformActive"),l=Tl(()=>{r.value=!1},t);return Oe(e,"wheel",a(()=>{n(),l()},"handleWheel"),{capture:!0,passive:s}),{isTransforming:r}}a(L1,"useTransformSettling");function A1(){const e=Es({x:0,y:0,z:1}),o=y(()=>({transform:`scale(${e.z}) translate(${e.x}px, ${e.y}px)`,transformOrigin:"0 0"}));function t(h){!h||!h.ds||(e.x=h.ds.offset[0],e.y=h.ds.offset[1],e.z=h.ds.scale||1)}a(t,"syncWithCanvas");function s(h){return{x:(h.x+e.x)*e.z,y:(h.y+e.y)*e.z}}a(s,"canvasToScreen");const r=a(h=>({x:h.x/e.z-e.x,y:h.y/e.z-e.y}),"screenToCanvas");function n(h,g){const b=s({x:h[0],y:h[1]}),S=g[0]*e.z,k=g[1]*e.z;return new DOMRect(b.x,b.y,S,k)}a(n,"getNodeScreenBounds");function l(h){return e.z<.1?Math.min(h*5,2):e.z>3?Math.max(h*.5,.05):h}a(l,"calculateAdjustedMargin");function i(h){return Math.max(h[0],h[1])*e.z<4}a(i,"isNodeTooSmall");function d(h,g){const b=h.width*g,S=h.height*g;return{left:-b,right:h.width+b,top:-S,bottom:h.height+S}}a(d,"getExpandedViewportBounds");function f(h,g,b){const S=h.x+g[0]*e.z,k=h.y+g[1]*e.z;return!(S<b.left||h.x>b.right||k<b.top||h.y>b.bottom)}a(f,"testViewportIntersection");function m(h,g,b,S=.2){return i(g)?!1:f(s({x:h[0],y:h[1]}),g,d(b,l(S)))}a(m,"isNodeInViewport");function v(h,g=.2){const b=h.width*g,S=h.height*g,k=r({x:-b,y:-S}),w=r({x:h.width+b,y:h.height+S});return{x:k.x,y:k.y,width:w.x-k.x,height:w.y-k.y}}return a(v,"getViewportBounds"),{camera:Ga(e),transformStyle:o,syncWithCanvas:t,canvasToScreen:s,screenToCanvas:r,getNodeScreenBounds:n,isNodeInViewport:m,getViewportBounds:v}}a(A1,"useTransformStateIndividual");const Vn=ga(A1);var E1=q({__name:"TransformPane",props:{canvas:{}},setup(e){const o=e,{transformStyle:t,syncWithCanvas:s}=Vn(),{isTransforming:r}=L1(y(()=>o.canvas?.canvas),{settleDelay:16});return io(()=>{o.canvas&&s(o.canvas)},{immediate:!0}),(n,l)=>(p(),x("div",{"data-testid":"transform-pane",class:Q(u(ae)("absolute inset-0 w-full h-full pointer-events-none",u(r)?"transform-pane--interacting":"will-change-auto")),style:be(u(t))},[_e(n.$slots,"default",{},void 0,!0)],6))}}),V1=Be(E1,[["__scopeId","data-v-4d46eee6"]]),O1={class:"flex items-center gap-2"},R1={for:"node-colors"},W1={class:"flex items-center gap-2"},B1={for:"show-links"},z1={class:"flex items-center gap-2"},U1={for:"show-groups"},F1={class:"flex items-center gap-2"},G1={for:"render-bypass"},H1={class:"flex items-center gap-2"},j1={for:"render-error"},q1=q({__name:"MiniMapPanel",props:{panelStyles:{},nodeColors:{type:Boolean},showLinks:{type:Boolean},showGroups:{type:Boolean},renderBypass:{type:Boolean},renderError:{type:Boolean}},emits:["updateOption"],setup(e){return(o,t)=>(p(),x("div",{class:"minimap-panel mr-2 flex flex-col gap-2 bg-comfy-menu-bg p-3 text-sm shadow-interface",style:be(o.panelStyles)},[c("div",O1,[L(u(bo),{"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]=c("i",{class:"icon-[lucide--palette]"},null,-1)),c("label",R1,R(o.$t("minimap.nodeColors")),1)]),c("div",W1,[L(u(bo),{"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]=c("i",{class:"icon-[lucide--route]"},null,-1)),c("label",B1,R(o.$t("minimap.showLinks")),1)]),c("div",z1,[L(u(bo),{"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]=c("i",{class:"icon-[lucide--frame]"},null,-1)),c("label",U1,R(o.$t("minimap.showGroups")),1)]),c("div",F1,[L(u(bo),{"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]=c("i",{class:"icon-[lucide--circle-slash-2]"},null,-1)),c("label",G1,R(o.$t("minimap.renderBypassState")),1)]),c("div",H1,[L(u(bo),{"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]=c("i",{class:"icon-[lucide--message-circle-warning]"},null,-1)),c("label",j1,R(o.$t("minimap.renderErrorState")),1)])],4))}}),K1=q1,Q1=["width","height"],Y1=q({__name:"MiniMap",setup(e){const o=Ce(),t=E(),s=Qe("containerRef"),r=Qe("canvasRef"),{initialized:n,visible:l,containerStyles:i,viewportStyles:d,width:f,height:m,panelStyles:v,nodeColors:h,showLinks:g,showGroups:b,renderBypass:S,renderError:k,updateOption:w,destroy:C,handlePointerDown:T,handlePointerMove:I,handlePointerUp:_,handlePointerCancel:N,handleWheel:$,setMinimapRef:V}=xn({containerRefMaybe:s,canvasRefMaybe:r}),B=E(!1),D=a(()=>{B.value=!B.value},"toggleOptionsPanel");return Re(()=>{t.value&&V(t.value)}),kt(()=>{C()}),(U,j)=>u(l)&&u(n)?(p(),x("div",{key:0,ref_key:"minimapRef",ref:t,class:"minimap-main-container absolute right-0 bottom-[54px] z-1000 flex"},[B.value?(p(),O(K1,{key:0,"panel-styles":u(v),"node-colors":u(h),"show-links":u(g),"show-groups":u(b),"render-bypass":u(S),"render-error":u(k),onUpdateOption:u(w)},null,8,["panel-styles","node-colors","show-links","show-groups","render-bypass","render-error","onUpdateOption"])):A("",!0),c("div",{ref_key:"containerRef",ref:s,class:"litegraph-minimap relative border border-interface-stroke bg-comfy-menu-bg shadow-interface",style:be(u(i))},[L(X,{class:"absolute top-0 left-0 z-10",size:"icon",variant:"muted-textonly","aria-label":U.$t("g.settings"),onClick:ke(D,["stop"])},{default:M(()=>j[7]||(j[7]=[c("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["aria-label"]),L(X,{class:"absolute top-0 right-0 z-10",size:"icon",variant:"muted-textonly","aria-label":U.$t("g.close"),"data-testid":"close-minmap-button",onClick:j[0]||(j[0]=ke(()=>u(o).execute("Comfy.Canvas.ToggleMinimap"),["stop"]))},{default:M(()=>j[8]||(j[8]=[c("i",{class:"icon-[lucide--x]"},null,-1)])),_:1},8,["aria-label"]),c("hr",{class:"absolute top-6 h-px border-0 bg-node-component-border",style:be({width:u(i).width})},null,4),c("canvas",{ref_key:"canvasRef",ref:r,width:u(f),height:u(m),class:"minimap-canvas"},null,8,Q1),c("div",{class:"minimap-viewport",style:be(u(d))},null,4),c("div",{class:"absolute inset-0 touch-none",onPointerdown:j[1]||(j[1]=(...W)=>u(T)&&u(T)(...W)),onPointermove:j[2]||(j[2]=(...W)=>u(I)&&u(I)(...W)),onPointerup:j[3]||(j[3]=(...W)=>u(_)&&u(_)(...W)),onPointerleave:j[4]||(j[4]=(...W)=>u(_)&&u(_)(...W)),onPointercancel:j[5]||(j[5]=(...W)=>u(N)&&u(N)(...W)),onWheel:j[6]||(j[6]=(...W)=>u($)&&u($)(...W))},null,32)],4)],512)):A("",!0)}}),J1=Be(Y1,[["__scopeId","data-v-66f11255"]]);function an(e){return e.ctrlKey||e.metaKey||e.shiftKey}a(an,"isMultiSelectKey");function X1(){const e=fe(),{nodeManager:o}=Dn(),{bringNodeToFront:t}=lr(),{shouldHandleNodePointerEvents:s}=go();function r(f,m){if(!s.value||!e.canvas||!o.value)return;const v=o.value.getNode(m);if(!v)return;const h=an(f),g=e.selectedItems.length,b=!h&&v.selected&&g>1;h?v.selected||e.canvas.select(v):b||(e.canvas.deselectAll(),e.canvas.select(v)),v.flags?.pinned||t(m),e.updateSelectedItems()}a(r,"handleNodeSelect");function n(f,m){if(!s.value||!o.value)return;const v=o.value.getNode(f);v&&(v.flags?.collapsed??!1)!==m&&v.collapse()}a(n,"handleNodeCollapse");function l(f,m){if(!s.value||!o.value)return;const v=o.value.getNode(f);v&&(v.title=m)}a(l,"handleNodeTitleUpdate");function i(f,m){if(!s.value||!e.canvas||!o.value)return;const v=o.value.getNode(m);v&&(f.preventDefault(),v.selected||r(f,m))}a(i,"handleNodeRightClick");function d(f,m){if(!s.value||!e.canvas||!o.value)return;const v=o.value.getNode(f);if(v){if(!m){e.canvas.deselectAll(),e.canvas.select(v),e.updateSelectedItems(),v.flags?.pinned||t(f);return}v.selected?e.canvas.deselect(v):(e.canvas.select(v),v.flags?.pinned||t(f)),e.updateSelectedItems()}}return a(d,"toggleNodeSelectionAfterPointerUp"),{handleNodeSelect:r,handleNodeCollapse:n,handleNodeTitleUpdate:l,handleNodeRightClick:i,toggleNodeSelectionAfterPointerUp:d}}a(X1,"useNodeEventHandlersIndividual");const Rr=ga(X1);function Wr(){const e=ne(),o=y(()=>e.get("Comfy.SnapToGrid.GridSize")),t=y(()=>e.get("pysssss.SnapToGrid"));function s(l){return l.shiftKey||t.value}a(s,"shouldSnap");function r(l){const i=o.value;if(!i)return{...l};const d=[l.x,l.y];return qn(d,i)?{x:d[0],y:d[1]}:{...l}}a(r,"applySnapToPosition");function n(l){const i=o.value;if(!i)return{...l};const d=[l.width,l.height];return qn(d,i)?{width:d[0],height:d[1]}:{...l}}return a(n,"applySnapToSize"),{gridSize:o,alwaysSnap:t,shouldSnap:s,applySnapToPosition:r,applySnapToSize:n}}a(Wr,"useNodeSnap");function Br(){const e=Je(!1);let o=null;function t(r){r!==e.value&&(!o&&(o=Y.canvas?.canvas??null,!o)||(e.value=r,o.dispatchEvent(new KeyboardEvent(r?"keydown":"keyup",{key:"Shift",shiftKey:r,bubbles:!0}))))}a(t,"syncShiftState");function s(r){t(r.shiftKey);const n=a(d=>{d.key==="Shift"&&t(d.shiftKey)},"handleKeyEvent"),l=Oe(window,"keydown",n,{passive:!0}),i=Oe(window,"keyup",n,{passive:!0});return()=>{l(),i()}}return a(s,"trackShiftKey"),Bs(()=>{e.value=!1,o=null}),{trackShiftKey:s}}a(Br,"useShiftKeySync");const zr=ga(Z1);function Z1(){const e=ha(),{selectedNodeIds:o,selectedItems:t}=ze(fe()),s=Vn(),{shouldSnap:r,applySnapToPosition:n}=Wr(),{trackShiftKey:l}=Br();let i=null,d=null,f=null,m=null,v=null,h=null,g=null;function b(w,C){const T=et(Ae.getNodeLayoutRef(C));if(!T)return;const I=T.position??{x:0,y:0};v=l(w),i={...I},d={x:w.clientX,y:w.clientY};const _=et(o),N=_?.has(C);if(N&&_.size>1){f=new Map;for(const $ of _){if($===C)continue;const V=Ae.getNodeLayoutRef($).value;V&&f.set($,{...V.position})}}else f=null;N?(g=et(t).filter(mo),h={x:0,y:0}):(g=null,h=null),e.setSource(No.Vue)}a(b,"startDrag");function S(w,C){if(!i||!d||m!==null)return;const{target:T,pointerId:I}=w;T instanceof HTMLElement&&!T.hasPointerCapture(I)&&T.setPointerCapture(I),m=requestAnimationFrame(()=>{if(m=null,!i||!d)return;const _={x:w.clientX-d.x,y:w.clientY-d.y},N=s.screenToCanvas({x:0,y:0}),$=s.screenToCanvas(_),V={x:$.x-N.x,y:$.y-N.y},B={x:i.x+V.x,y:i.y+V.y};if(e.moveNode(C,B),f&&f.size>0)for(const[D,U]of f){const j={x:U.x+V.x,y:U.y+V.y};e.moveNode(D,j)}if(g&&g.length>0&&h){const D={x:V.x-h.x,y:V.y-h.y};for(const U of g)U.move(D.x,D.y,!0)}h=V})}a(S,"handleDrag");function k(w,C){if(r(w)&&C){const T=[],I=et(Ae.getNodeLayoutRef(C));if(I){const _=I.position,N=n({..._});(N.x!==_.x||N.y!==_.y)&&T.push({nodeId:C,bounds:{x:N.x,y:N.y,width:I.size.width,height:I.size.height}})}if(f&&f.size>0)for(const _ of f.keys()){const N=Ae.getNodeLayoutRef(_).value;if(N){const $={...N.position},V=n($);(V.x!==$.x||V.y!==$.y)&&T.push({nodeId:_,bounds:{x:V.x,y:V.y,width:N.size.width,height:N.size.height}})}}T.length>0&&Ae.batchUpdateNodeBounds(T)}i=null,d=null,f=null,g=null,h=null,v?.(),v=null,m!==null&&(cancelAnimationFrame(m),m=null)}return a(k,"endDrag"),{startDrag:b,handleDrag:S,endDrag:k}}a(Z1,"useNodeDragIndividual");function e0(e){const{startDrag:o,endDrag:t,handleDrag:s}=zr(),{forwardEventToCanvas:r,shouldHandleNodePointerEvents:n}=go(),{handleNodeSelect:l,toggleNodeSelectionAfterPointerUp:i}=Rr(),{nodeManager:d}=Dn(),f=a(_=>_i(_)?(r(_),!0):!1,"forwardMiddlePointerIfNeeded");let m=!1;const v=E({x:0,y:0}),h=3;function g(_){if(f(_)||_.button!==0)return;if(!n.value){r(_);return}const N=et(e);if(!N){console.warn("LGraphNode: nodeData is null/undefined in handlePointerDown");return}d.value?.getNode(N)?.flags?.pinned||(v.value={x:_.clientX,y:_.clientY},k(_,N))}a(g,"onPointerdown");function b(_){if(f(_)||Ae.isResizingVueNodes.value)return;const N=et(e);if(d.value?.getNode(N)?.flags?.pinned)return;const $=an(_),V=_.buttons&1;if(V&&$&&!Ae.isDraggingVueNodes.value){Ae.isDraggingVueNodes.value=!0,l(_,N),k(_,N);return}if(V&&!Ae.isDraggingVueNodes.value){const B=_.clientX-v.value.x,D=_.clientY-v.value.y;Math.sqrt(B*B+D*D)>h&&(Ae.isDraggingVueNodes.value=!0,l(_,N))}Ae.isDraggingVueNodes.value&&s(_,N)}a(b,"onPointermove");function S(){Ae.isDraggingVueNodes.value=!1}a(S,"cleanupDragState");function k(_,N){try{o(_,N)}finally{m=!0}}a(k,"safeDragStart");function w(_){try{t(_,et(e))}catch(N){console.error("Error during endDrag:",N)}finally{m=!1,S()}}a(w,"safeDragEnd");function C(_){if(f(_))return;if(!n.value){r(_);return}const N=Ae.isDraggingVueNodes.value;if((m||N)&&(w(_),N)||_.button===2)return;const $=an(_),V=et(e);V&&i(V,$)}a(C,"onPointerup");function T(_){Ae.isDraggingVueNodes.value&&w(_)}a(T,"onPointercancel");function I(_){Ae.isDraggingVueNodes.value&&(_.preventDefault(),S())}return a(I,"onContextmenu"),cl(()=>{S()}),{pointerHandlers:{onPointerdown:g,onPointermove:b,onPointerup:C,onPointercancel:T,onContextmenu:I}}}a(e0,"useNodePointerInteractions");var da=new Map([["node",{dataAttribute:"nodeId",updateHandler:a(e=>{const o=e.map(({id:t,bounds:s})=>({nodeId:t,bounds:s}));Ae.batchUpdateNodeBounds(o)},"updateHandler")}]]),ys=new ResizeObserver(e=>{if(fe().linearMode)return;const o=fr(),t=new Map,s=new Set;for(const r of e){if(!(r.target instanceof HTMLElement))continue;const n=r.target;let l,i;for(const[w,C]of da){const T=n.dataset[C.dataAttribute];if(T){l=w,i=T;break}}if(!l||!i)continue;const d=Array.isArray(r.borderBoxSize)?r.borderBoxSize[0]:{inlineSize:r.contentRect.width,blockSize:r.contentRect.height},f=d.inlineSize,m=d.blockSize,v=n.getBoundingClientRect(),[h,g]=o.clientPosToCanvasPos([v.left,v.top]),b={x:h,y:g},S={x:b.x,y:b.y+ge.NODE_TITLE_HEIGHT,width:Math.max(0,f),height:Math.max(0,m)};let k=t.get(l);k||(k=[],t.set(l,k)),k.push({id:i,bounds:S}),l==="node"&&i&&s.add(i)}Ae.setSource(No.DOM);for(const[r,n]of t){const l=da.get(r);l&&n.length&&l.updateHandler(n)}if(s.size>0)for(const r of s)Hi(r)});function t0(e,o){const t=et(e);Re(()=>{const s=Fn()?.proxy?.$el;if(!(s instanceof HTMLElement)||!t)return;const r=da.get(o);r&&(s.dataset[r.dataAttribute]=t,ys.observe(s))}),kt(()=>{const s=Fn()?.proxy?.$el;if(!(s instanceof HTMLElement))return;const r=da.get(o);r&&(delete s.dataset[r.dataAttribute],ys.unobserve(s))})}a(t0,"useVueElementTracking");const o0=a(e=>{const o=y(()=>et(e)??""),{nodeLocationProgressStates:t,isIdle:s}=ze(it()),r=y(()=>{const i=o.value;return i?t.value[i]:void 0}),n=y(()=>!s.value&&r.value?.state==="running"),l=y(()=>{const i=r.value;return i&&i.max>0?i.value/i.max:void 0});return{executing:n,progress:l,progressPercentage:y(()=>{const i=l.value;return i!==void 0?Math.round(i*100):void 0}),progressState:r,executionState:y(()=>{const i=r.value;return i?i.state:"idle"})}},"useNodeExecutionState");function a0(e){const o=et(e),t=ha(),s=Ae.getNodeLayoutRef(o);kt(()=>{Ae.cleanupNodeRef(o)});const r=y(()=>s.value?.position??{x:0,y:0}),n=y(()=>s.value?.size??{width:200,height:100}),l=y(()=>s.value?.zIndex??0);function i(d){t.setSource(No.Vue),t.moveNode(o,d)}return a(i,"moveNodeTo"),{position:r,size:n,zIndex:l,moveNodeTo:i}}a(a0,"useNodeLayout");const n0=a((e,o)=>{const t=et(e),s=Ve(),{nodePreviewImages:r}=ze(Wo()),n=y(()=>s.nodeIdToNodeLocatorId(t)),l=y(()=>{const d=n.value;if(!d)return;const f=r.value[d];return f?.length?f:void 0}),i=y(()=>!!l.value?.length);return{locatorId:n,previewUrls:l,hasPreview:i,latestPreviewUrl:y(()=>{const d=l.value;return d?.length?d.at(-1):""}),shouldShowPreviewImg:y(()=>o?.isCollapsed?!o.isCollapsed.value&&i.value:i.value)}},"useNodePreviewState");function s0(e){const o=Vn(),t=E(!1),s=E(null),r=E(null),{shouldSnap:n,applySnapToSize:l}=Wr(),{trackShiftKey:i}=Br();return{startResize:a(f=>{f.preventDefault(),f.stopPropagation();const m=f.currentTarget;if(!(m instanceof HTMLElement))return;const v=m.closest("[data-node-id]");if(!(v instanceof HTMLElement))return;const h=v.getBoundingClientRect(),g=o.camera.z,b={width:h.width/g,height:h.height/g},S=i(f);m.setPointerCapture(f.pointerId),Ae.isResizingVueNodes.value=!0,t.value=!0,s.value={x:f.clientX,y:f.clientY},r.value=b;const k=a(I=>{if(!t.value||!s.value||!r.value)return;const _=o.camera.z,N=(I.clientX-s.value.x)/(_||1),$=(I.clientY-s.value.y)/(_||1);let V={width:r.value.width+N,height:r.value.height+$};n(I)&&(V=l(V));const B=m.closest("[data-node-id]");B instanceof HTMLElement&&e({size:V},B)},"handlePointerMove"),w=a(I=>{t.value&&(t.value=!1,Ae.isResizingVueNodes.value=!1,s.value=null,r.value=null,S(),m.releasePointerCapture(I.pointerId),C(),T())},"handlePointerUp"),C=Oe("pointermove",k),T=Oe("pointerup",w)},"startResize"),isResizing:t}}a(s0,"useNodeResize");var r0={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function l0(e,o){return p(),x("svg",r0,[...o[0]||(o[0]=[c("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[c("path",{d:"m2 2l20 20M10.41 10.41a2 2 0 1 1-2.83-2.83m5.92 5.92L6 21m12-9l3 3"}),c("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)])])}a(l0,"render$1");var i0=Os({name:"lucide-image-off",render:l0}),u0={key:0,class:"flex h-full min-h-16 w-full min-w-16 flex-col"},d0={class:"relative h-88 w-full grow overflow-hidden rounded-[5px] bg-node-component-surface"},c0={key:0,class:"text-pure-white flex h-full w-full flex-col items-center justify-center text-center"},p0={class:"text-xs text-smoke-400"},f0=["src","alt"],v0={class:"text-node-component-header-text mt-1 text-center text-xs"},m0=q({__name:"LivePreview",props:{imageUrl:{}},setup(e){const o=e,t=E(null),s=E(!1);ie(()=>o.imageUrl,()=>{t.value=null,s.value=!1});const r=a(l=>{if(!l.target||!(l.target instanceof HTMLImageElement))return;const i=l.target;s.value=!1,i.naturalWidth&&i.naturalHeight&&(t.value=`${i.naturalWidth} x ${i.naturalHeight}`)},"handleImageLoad"),n=a(()=>{s.value=!0,t.value=null},"handleImageError");return(l,i)=>{const d=i0;return l.imageUrl?(p(),x("div",u0,[c("div",d0,[s.value?(p(),x("div",c0,[L(d,{class:"mb-1 size-8 text-smoke-500"}),c("p",p0,R(l.$t("g.imageFailedToLoad")),1)])):(p(),x("img",{key:1,src:l.imageUrl,alt:l.$t("g.liveSamplingPreview"),class:"pointer-events-none h-full w-full object-contain object-center",onLoad:r,onError:n},null,40,f0))]),c("div",v0,R(s.value?l.$t("g.errorLoadingImage"):t.value||l.$t("g.calculatingDimensions")),1)])):A("",!0)}}}),g0=m0,h0=["aria-label","aria-busy"],y0={key:0,role:"alert",class:"flex size-full flex-col items-center justify-center bg-muted-background text-center text-base-foreground py-8"},b0={class:"text-sm text-base-foreground"},w0={class:"mt-1 text-xs text-base-foreground"},_0=["src"],k0={key:3,class:"actions absolute top-2 right-2 flex gap-2.5"},C0=["title","aria-label"],S0=["title","aria-label"],x0={key:4,class:"absolute right-2 bottom-2 left-2 flex justify-center gap-1"},T0=["aria-label","onClick"],N0={class:"mt-2 text-center text-xs text-muted-foreground"},I0={key:0,class:"text-red-400"},P0={key:1,class:"text-smoke-400"},$0={key:2},bs="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",M0=q({__name:"VideoPreview",props:{imageUrls:{},nodeId:{}},setup(e){const o=e,{t}=ue(),s=Wo(),r=E(0),n=E(!1),l=E(!1),i=E(null),d=E(!1),f=E(!1),m=E(),v=y(()=>o.imageUrls[r.value]),h=y(()=>o.imageUrls.length>1);ie(()=>o.imageUrls,B=>{r.value>=B.length&&(r.value=0),i.value=null,d.value=!1,f.value=B.length>0},{deep:!0,immediate:!0});const g=a(B=>{if(!B.target||!(B.target instanceof HTMLVideoElement))return;const D=B.target;f.value=!1,d.value=!1,D.videoWidth&&D.videoHeight&&(i.value=`${D.videoWidth} x ${D.videoHeight}`)},"handleVideoLoad"),b=a(()=>{f.value=!1,d.value=!0,i.value=null},"handleVideoError"),S=a(()=>{try{Io(v.value)}catch{lo().add({severity:"error",summary:"Error",detail:t("g.failedToDownloadVideo"),life:3e3,group:"video-preview"})}},"handleDownload"),k=a(()=>{o.nodeId&&s.removeNodeOutputs(o.nodeId)},"handleRemove"),w=a(B=>{B>=0&&B<o.imageUrls.length&&(r.value=B,i.value=null,f.value=!0,d.value=!1)},"setCurrentIndex"),C=a(()=>{n.value=!0},"handleMouseEnter"),T=a(()=>{n.value=!1},"handleMouseLeave"),I=a(()=>{l.value=!0},"handleFocusIn"),_=a(B=>{m.value?.contains(B.relatedTarget)||(l.value=!1)},"handleFocusOut"),N=a(B=>["w-2 h-2 rounded-full transition-all duration-200 border-0 cursor-pointer",B===r.value?"bg-white":"bg-white/50 hover:bg-white/80"],"getNavigationDotClass"),$=a(B=>{if(!(o.imageUrls.length<=1))switch(B.key){case"ArrowLeft":B.preventDefault(),w(r.value>0?r.value-1:o.imageUrls.length-1);break;case"ArrowRight":B.preventDefault(),w(r.value<o.imageUrls.length-1?r.value+1:0);break;case"Home":B.preventDefault(),w(0);break;case"End":B.preventDefault(),w(o.imageUrls.length-1);break}},"handleKeyDown"),V=a(B=>{try{return new URL(B).searchParams.get("filename")||"Unknown file"}catch{return"Invalid URL"}},"getVideoFilename");return(B,D)=>B.imageUrls.length>0?(p(),x("div",{key:0,class:"video-preview group relative flex size-full min-h-16 min-w-16 flex-col px-2",onKeydown:$},[c("div",{ref_key:"videoWrapperEl",ref:m,class:"relative h-full w-full grow overflow-hidden rounded-[5px] bg-node-component-surface",tabindex:"0",role:"region","aria-label":B.$t("g.videoPreview"),"aria-busy":f.value,onMouseenter:C,onMouseleave:T,onFocusin:I,onFocusout:_},[d.value?(p(),x("div",y0,[D[0]||(D[0]=c("i",{class:"mb-2 icon-[lucide--video-off] h-12 w-12 text-base-foreground"},null,-1)),c("p",b0,R(B.$t("g.videoFailedToLoad")),1),c("p",w0,R(V(v.value)),1)])):A("",!0),f.value&&!d.value?(p(),O(u(sn),{key:1,class:"absolute inset-0 size-full","border-radius":"5px",width:"100%",height:"100%"})):A("",!0),d.value?A("",!0):(p(),x("video",{key:2,src:v.value,class:Q(u(ae)("block size-full object-contain",f.value&&"invisible")),controls:"",loop:"",playsinline:"",onLoadeddata:g,onError:b},null,42,_0)),n.value||l.value?(p(),x("div",k0,[c("button",{class:Q(bs),title:B.$t("g.downloadVideo"),"aria-label":B.$t("g.downloadVideo"),onClick:S},D[1]||(D[1]=[c("i",{class:"icon-[lucide--download] h-4 w-4"},null,-1)]),8,C0),c("button",{class:Q(bs),title:B.$t("g.removeVideo"),"aria-label":B.$t("g.removeVideo"),onClick:k},D[2]||(D[2]=[c("i",{class:"icon-[lucide--x] h-4 w-4"},null,-1)]),8,S0)])):A("",!0),h.value?(p(),x("div",x0,[(p(!0),x(Z,null,ye(B.imageUrls,(U,j)=>(p(),x("button",{key:j,class:Q(N(j)),"aria-label":B.$t("g.viewVideoOfTotal",{index:j+1,total:B.imageUrls.length}),onClick:a(W=>w(j),"onClick")},null,10,T0))),128))])):A("",!0)],40,h0),c("div",N0,[d.value?(p(),x("span",I0,R(B.$t("g.errorLoadingVideo")),1)):f.value?(p(),x("span",P0,R(B.$t("g.loading"))+"... ",1)):(p(),x("span",$0,R(i.value||B.$t("g.calculatingDimensions")),1))])],32)):A("",!0)}}),D0=M0,L0={width:"1.2em",height:"1.2em",xmlns:"http://www.w3.org/2000/svg",class:"",viewBox:"0 0 16 16",fill:"none"},A0=["clip-path"],E0=["id"];function V0(e,o){return p(),x("svg",L0,[c("g",{"clip-path":"url(#"+e.idMap.clip0_704_2695+")"},[...o[0]||(o[0]=[pl('<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,A0),c("defs",null,[c("clipPath",{id:e.idMap.clip0_704_2695},[...o[1]||(o[1]=[c("rect",{width:"16",height:"16",fill:"white"},null,-1)])],8,E0)])])}a(V0,"render");var O0=Os({name:"comfy-mask",render:V0,setup(){return{idMap:{clip0_704_2695:"uicons-"+a(()=>Math.random().toString(36).substr(2,10),"__randId")()}}}}),R0=["aria-label","aria-busy"],W0={key:0,role:"alert",class:"flex size-full flex-col items-center justify-center bg-muted-background text-center text-base-foreground py-8"},B0={class:"text-sm text-base-foreground"},z0={class:"mt-1 text-xs text-base-foreground"},U0={key:1,class:"size-full"},F0=["src","alt"],G0={key:3,class:"actions absolute top-2 right-2 flex gap-2.5"},H0=["title","aria-label"],j0=["title","aria-label"],q0=["title","aria-label"],K0={class:"pt-2 text-center text-xs text-base-foreground"},Q0={key:0,class:"text-red-400"},Y0={key:1,class:"text-base-foreground"},J0={key:2},X0={key:0,class:"flex flex-wrap justify-center gap-1 pt-4"},Z0=["aria-current","aria-label","onClick"],Aa="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",e_=q({__name:"ImagePreview",props:{imageUrls:{},nodeId:{}},setup(e){const o=e,{t}=ue(),s=Ce(),r=Wo(),n=E(0),l=E(!1),i=E(!1),d=E(null),f=E(!1),m=E(!1),v=E(),h=E(),{start:g,stop:b}=rl(()=>{m.value=!0},250,{immediate:!1}),S=y(()=>o.imageUrls[n.value]),k=y(()=>o.imageUrls.length>1),w=y(()=>`Node output ${n.value+1}`);ie(()=>o.imageUrls,z=>{n.value>=z.length&&(n.value=0),d.value=null,f.value=!1,z.length>0&&g()},{deep:!0,immediate:!0});const C=a(z=>{if(!z.target||!(z.target instanceof HTMLImageElement))return;const K=z.target;b(),m.value=!1,f.value=!1,K.naturalWidth&&K.naturalHeight&&(d.value=`${K.naturalWidth} x ${K.naturalHeight}`)},"handleImageLoad"),T=a(()=>{b(),m.value=!1,f.value=!0,d.value=null},"handleImageError"),I=a(()=>{if(!o.nodeId||!v.value)return;const z=Y.rootGraph?.getNodeById(o.nodeId);z&&(z.imageIndex=n.value,z.imgs=[v.value],Y.canvas?.select(z))},"setupNodeForMaskEditor"),_=a(()=>{I(),s.execute("Comfy.MaskEditor.OpenMaskEditor")},"handleEditMask"),N=a(()=>{try{Io(S.value)}catch{lo().add({severity:"error",summary:"Error",detail:t("g.failedToDownloadImage"),life:3e3,group:"image-preview"})}},"handleDownload"),$=a(()=>{o.nodeId&&r.removeNodeOutputs(o.nodeId)},"handleRemove"),V=a(z=>{n.value!==z&&z>=0&&z<o.imageUrls.length&&(n.value=z,g(),f.value=!1)},"setCurrentIndex"),B=a(()=>{l.value=!0},"handleMouseEnter"),D=a(()=>{l.value=!1},"handleMouseLeave"),U=a(()=>{i.value=!0},"handleFocusIn"),j=a(z=>{h.value?.contains(z.relatedTarget)||(i.value=!1)},"handleFocusOut"),W=a(z=>["w-2 h-2 rounded-full transition-all duration-200 border-0 cursor-pointer p-0",z===n.value?"bg-base-foreground":"bg-base-foreground/50 hover:bg-base-foreground/80"],"getNavigationDotClass"),F=a(z=>{if(!(o.imageUrls.length<=1))switch(z.key){case"ArrowLeft":z.preventDefault(),V(n.value>0?n.value-1:o.imageUrls.length-1);break;case"ArrowRight":z.preventDefault(),V(n.value<o.imageUrls.length-1?n.value+1:0);break;case"Home":z.preventDefault(),V(0);break;case"End":z.preventDefault(),V(o.imageUrls.length-1);break}},"handleKeyDown"),G=a(z=>{try{return new URL(z).searchParams.get("filename")||"Unknown file"}catch{return"Invalid URL"}},"getImageFilename");return(z,K)=>{const H=O0;return z.imageUrls.length>0?(p(),x("div",{key:0,class:"image-preview group relative flex size-full min-h-16 min-w-16 flex-col px-2 justify-center",onKeydown:F},[c("div",{ref_key:"imageWrapperEl",ref:h,class:"h-full w-full overflow-hidden rounded-[5px] bg-muted-background relative",tabindex:"0",role:"img","aria-label":z.$t("g.imagePreview"),"aria-busy":m.value,onMouseenter:B,onMouseleave:D,onFocusin:U,onFocusout:j},[f.value?(p(),x("div",W0,[K[0]||(K[0]=c("i",{class:"mb-2 icon-[lucide--image-off] h-12 w-12 text-base-foreground"},null,-1)),c("p",B0,R(z.$t("g.imageFailedToLoad")),1),c("p",z0,R(G(S.value)),1)])):A("",!0),m.value&&!f.value?(p(),x("div",U0,[L(u(sn),{"border-radius":"5px",width:"100%",height:"100%"})])):A("",!0),f.value?A("",!0):(p(),x("img",{key:2,ref_key:"currentImageEl",ref:v,src:S.value,alt:w.value,class:"block size-full object-contain pointer-events-none",onLoad:C,onError:T},null,40,F0)),l.value||i.value?(p(),x("div",G0,[k.value?A("",!0):(p(),x("button",{key:0,class:Q(Aa),title:z.$t("g.editOrMaskImage"),"aria-label":z.$t("g.editOrMaskImage"),onClick:_},[L(H,{class:"h-4 w-4"})],8,H0)),c("button",{class:Q(Aa),title:z.$t("g.downloadImage"),"aria-label":z.$t("g.downloadImage"),onClick:N},K[1]||(K[1]=[c("i",{class:"icon-[lucide--download] h-4 w-4"},null,-1)]),8,j0),c("button",{class:Q(Aa),title:z.$t("g.removeImage"),"aria-label":z.$t("g.removeImage"),onClick:$},K[2]||(K[2]=[c("i",{class:"icon-[lucide--x] h-4 w-4"},null,-1)]),8,q0)])):A("",!0)],40,R0),c("div",K0,[f.value?(p(),x("span",Q0,R(z.$t("g.errorLoadingImage")),1)):m.value?(p(),x("span",Y0,R(z.$t("g.loading"))+"... ",1)):(p(),x("span",J0,R(d.value||z.$t("g.calculatingDimensions")),1))]),k.value?(p(),x("div",X0,[(p(!0),x(Z,null,ye(z.imageUrls,(J,te)=>(p(),x("button",{key:te,class:Q(W(te)),"aria-current":te===n.value?"true":void 0,"aria-label":z.$t("g.viewImageOfTotal",{index:te+1,total:z.imageUrls.length}),onClick:a(he=>V(te),"onClick")},null,10,Z0))),128))])):A("",!0)],32)):A("",!0)}}}),t_=e_,o_={key:0,class:"node-error p-2 text-sm text-red-500"},a_={key:1,class:"lg-node-content flex grow flex-col"},n_=q({__name:"NodeContent",props:{nodeData:{},media:{}},setup(e){const o=e,t=y(()=>o.media&&o.media.urls.length>0),s=y(()=>o.nodeData?.id?.toString()),r=E(null),{toastErrorHandler:n}=jt();return zs(l=>(r.value=l.message,n(l),!1)),(l,i)=>r.value?(p(),x("div",o_,R(u(Ze)("nodeErrors.content","Node Content Error")),1)):(p(),x("div",a_,[_e(l.$slots,"default",{},()=>[t.value&&l.media?.type==="video"?(p(),O(D0,{key:0,"image-urls":l.media.urls,"node-id":s.value,class:"mt-2"},null,8,["image-urls","node-id"])):t.value&&l.media?.type==="image"?(p(),O(t_,{key:1,"image-urls":l.media.urls,"node-id":s.value,class:"mt-2"},null,8,["image-urls","node-id"])):A("",!0)])]))}}),s_=n_,r_={key:0,class:"node-error p-2 text-sm text-red-500"},l_=["data-node-id"],i_={key:0,class:"flex flex-col justify-center items-center relative"},u_={class:"relative mb-1"},d_=["data-testid"],c_={key:1,class:"min-h-0 flex-1 flex"},p_={key:2,class:"min-h-0 flex-1 px-4"},f_={key:3,class:"flex justify-center px-3"},v_=["aria-label"],m_="absolute h-3 w-3 opacity-0 pointer-events-auto focus-visible:outline focus-visible:outline-2 focus-visible:outline-white/40",g_=225,ws="h-2 bg-primary-500 transition-all duration-300",h_=q({__name:"LGraphNode",props:{nodeData:{},error:{default:null}},setup(e){const{t:o}=ue(),{handleNodeCollapse:t,handleNodeTitleUpdate:s,handleNodeRightClick:r}=Rr(),{bringNodeToFront:n}=lr();t0(()=>e.nodeData.id,"node");const{selectedNodeIds:l}=ze(fe()),i=y(()=>l.value.has(e.nodeData.id)),{executing:d,progress:f}=o0(y(()=>wa(e.nodeData))),m=it(),v=y(()=>m.lastExecutionErrorNodeId===e.nodeData.id),h=y(()=>!!(v.value||e.nodeData.hasErrors||e.error||(m.lastNodeErrors?.[e.nodeData.id]?.errors.length??0)>0)),g=y(()=>e.nodeData.titleMode!==ai.NO_TITLE),b=y(()=>e.nodeData.flags?.collapsed??!1),S=y(()=>e.nodeData.mode===We.BYPASS),k=y(()=>e.nodeData.mode===We.NEVER),w=y(()=>{const de=ne().get("Comfy.Node.Opacity")??1;return S.value||k.value?de*.5:de}),C=y(()=>Mi(e.nodeData).length>0),T=y(()=>!!e.nodeData.outputs?.length),{handleWheel:I,shouldHandleNodePointerEvents:_}=go(),N=E(null),{toastErrorHandler:$}=jt();zs(de=>(N.value=de.message,$(de),!1));const{position:V,size:B,zIndex:D}=a0(()=>e.nodeData.id),{pointerHandlers:U}=e0(()=>e.nodeData.id),{onPointerdown:j,...W}=U,{startDrag:F}=zr();async function G(de){if(de.altKey&&mt.value){const me=Ke.cloneNodes([mt.value]);if(me?.created?.length){const[De]=me.created;F(de,`${De.id}`),Ae.isDraggingVueNodes.value=!0,await Ue(),n(`${De.id}`);return}}j(de)}a(G,"nodeOnPointerdown");const z=a(de=>{de.preventDefault(),de.stopPropagation(),r(de,e.nodeData.id),ym(de)},"handleContextMenu");Re(()=>{K()});function K(){const de=xt.value,{width:me,height:De}=B.value;if(!de)return;const Me=b.value?"-x":"";de.style.setProperty(`--node-width${Me}`,`${me}px`),de.style.setProperty(`--node-height${Me}`,`${De}px`)}a(K,"initSizeStyles");const{startResize:H}=s0((de,me)=>{if(b.value)return;const De=Math.max(de.size.width,g_);me.style.setProperty("--node-width",`${De}px`),me.style.setProperty("--node-height",`${de.size.height}px`)}),J=a(de=>{de.button===0&&_.value&&(e.nodeData.flags?.pinned||e.nodeData.resizable!==!1&&H(de))},"handleResizePointerDown");ie(b,de=>{const me=xt.value;if(!me)return;const[De,Me]=de?["","-x"]:["-x",""],ee=me.style.getPropertyValue(`--node-width${De}`);me.style.setProperty(`--node-width${Me}`,ee),me.style.setProperty(`--node-width${De}`,"");const oe=me.style.getPropertyValue(`--node-height${De}`);me.style.setProperty(`--node-height${Me}`,oe),me.style.setProperty(`--node-height${De}`,"")});const te=y(()=>!!Bt.value&&Bt.value.urls.length>0),{latestPreviewUrl:he,shouldShowPreviewImg:$e}=n0(()=>e.nodeData.id,{isCollapsed:b}),se=y(()=>h.value?"border-node-stroke-error":!g.value&&e.nodeData.bgcolor&&ui(e.nodeData.bgcolor)?"border-0":""),Se=y(()=>ae(i.value&&"outline-node-component-outline",h.value&&"outline-node-stroke-error",d.value&&"outline-node-stroke-executing")),ve=y(()=>ae(e.nodeData.flags?.pinned?"cursor-default":Ae.isDraggingVueNodes.value?"cursor-grabbing":"cursor-grab")),xe=y(()=>{switch(e.nodeData.shape){case Et.BOX:return"rounded-none";case Et.CARD:return"rounded-tl-2xl rounded-br-2xl rounded-tr-none rounded-bl-none";default:return"rounded-2xl"}}),Te=y(()=>{switch(e.nodeData.shape){case Et.BOX:return"before:rounded-none";case Et.CARD:return"before:rounded-tl-2xl before:rounded-br-2xl before:rounded-tr-none before:rounded-bl-none";default:return"before:rounded-2xl"}}),He=a(()=>{t(e.nodeData.id,!b.value)},"handleCollapse"),je=a(de=>{s(e.nodeData.id,de)},"handleHeaderTitleUpdate"),Ye=a(()=>{Le()?.trackUiButtonClicked({button_id:"graph_node_open_subgraph_clicked"});const de=Y.rootGraph;if(!de){console.warn("LGraphNode: No graph available for subgraph navigation");return}const me=Kn(de,wa(e.nodeData));if(!me?.isSubgraphNode()||!("subgraph"in me)){console.warn("LGraphNode: Node is not a valid subgraph node",me);return}const De=Y.canvas;if(!De||typeof De.openSubgraph!="function"){console.warn("LGraphNode: Canvas or openSubgraph method not available");return}De.openSubgraph(me.subgraph,me)},"handleEnterSubgraph"),ot=Wo(),Rt=y(()=>e.nodeData.subgraphId?`${e.nodeData.subgraphId}:${e.nodeData.id}`:e.nodeData.id),mt=y(()=>{const de=wa(e.nodeData);return Kn(Y.rootGraph,de)}),Wt=y(()=>{const de=mt.value;return!de||!(de instanceof Oo)?!1:de.subgraph.nodes.flatMap(me=>me.widgets??[]).some(me=>!me.computedDisabled&&!me.promoted)});function Qt(){ut().focusSection("advanced-inputs")}a(Qt,"handleShowAdvancedInputs");const Bt=y(()=>{const de=ot.nodeOutputs[Rt.value],me=mt.value;if(!me||!de?.images?.length)return;const De=ot.getNodeImageUrls(me);if(!De?.length)return;const Me=me.inputs?.some(ee=>ee.type==="VIDEO");return{type:me.previewMediaType==="video"||!me.previewMediaType&&Me?"video":"image",urls:De}}),xt=E(),dt=E(!1);function ho(de){const me=mt.value;if(!me||!me.onDragOver){dt.value=!1;return}dt.value=me.onDragOver(de)}a(ho,"handleDragOver");function yo(){dt.value=!1}a(yo,"handleDragLeave");async function Yt(de){dt.value=!1;const me=mt.value;!me||!me.onDragDrop||await me.onDragDrop(de)}return a(Yt,"handleDrop"),(de,me)=>N.value?(p(),x("div",r_,R(u(Ze)("nodeErrors.render","Node Render Error")),1)):(p(),x("div",lt({key:1,ref_key:"nodeContainerRef",ref:xt,tabindex:"0","data-node-id":de.nodeData.id,class:u(ae)("bg-component-node-background lg-node absolute text-sm","contain-style contain-layout min-w-[225px] min-h-(--node-height) w-(--node-width)",xe.value,"touch-none flex flex-col","border-1 border-solid border-component-node-border",u(_)&&"hover:ring-7 ring-node-component-ring","outline-transparent outline-2 focus-visible:outline-node-component-outline",se.value,Se.value,ve.value,{[`${Te.value} before:pointer-events-none before:absolute before:bg-bypass/60 before:inset-0`]:S.value,[`${Te.value} before:pointer-events-none before:absolute before:inset-0`]:k.value,"ring-4 ring-primary-500 bg-primary-500/10":dt.value},u(_)?"pointer-events-auto":"pointer-events-none",!b.value&&" pb-1"),style:[{transform:`translate(${u(V).x??0}px, ${(u(V).y??0)-u(ge).NODE_TITLE_HEIGHT}px)`,zIndex:u(D),opacity:w.value,"--component-node-background":u(Ka)(de.nodeData.bgcolor)}]},W,{onPointerdown:G,onWheel:me[0]||(me[0]=(...De)=>u(I)&&u(I)(...De)),onContextmenu:z,onDragover:ke(ho,["prevent"]),onDragleave:yo,onDrop:ke(Yt,["stop","prevent"])}),[g.value?(p(),x("div",i_,[b.value?(p(),x(Z,{key:0},[C.value?(p(),O(Zn,{key:0,multi:"",class:"absolute left-0 -translate-x-1/2"})):A("",!0),T.value?(p(),O(Zn,{key:1,multi:"",class:"absolute right-0 translate-x-1/2"})):A("",!0),L(Xn,{"node-data":de.nodeData,unified:""},null,8,["node-data"])],64)):A("",!0),L(Vi,{"node-data":de.nodeData,collapsed:b.value,onCollapse:He,"onUpdate:title":je,onEnterSubgraph:Ye},null,8,["node-data","collapsed"])])):A("",!0),b.value&&u(d)&&u(f)!==void 0?(p(),x("div",{key:1,class:Q(u(ae)("absolute inset-x-4 -bottom-[1px] translate-y-1/2 rounded-full",ws)),style:be({width:`${Math.min(u(f)*100,100)}%`})},null,6)):A("",!0),b.value?A("",!0):(p(),x(Z,{key:2},[c("div",u_,[u(d)&&u(f)!==void 0?(p(),x("div",{key:0,class:Q(u(ae)("absolute inset-x-0 top-1/2 -translate-y-1/2",u(f)<1&&"rounded-r-full",ws)),style:be({width:`${Math.min(u(f)*100,100)}%`})},null,6)):A("",!0)]),c("div",{class:"flex flex-1 flex-col gap-1 pb-2","data-testid":`node-body-${de.nodeData.id}`},[L(Xn,{"node-data":de.nodeData},null,8,["node-data"]),de.nodeData.widgets?.length?(p(),O(ja,{key:0,"node-data":de.nodeData},null,8,["node-data"])):A("",!0),te.value?(p(),x("div",c_,[L(s_,{"node-data":de.nodeData,media:Bt.value},null,8,["node-data","media"])])):A("",!0),u($e)?(p(),x("div",p_,[L(g0,{"image-url":u(he)||null},null,8,["image-url"])])):A("",!0),Wt.value?(p(),x("div",f_,[c("button",{class:Q(u(ae)(u(ia),"w-full h-7 flex justify-center items-center gap-2 text-sm px-3 outline-0 ring-0 truncate","transition-all cursor-pointer hover:bg-accent-background duration-150 active:scale-95")),onClick:ke(Qt,["stop"])},[me[1]||(me[1]=c("i",{class:"icon-[lucide--settings-2] size-4"},null,-1)),c("span",null,R(u(o)("rightSidePanel.showAdvancedInputsButton")),1)],2)])):A("",!0)],8,d_)],64)),!b.value&&de.nodeData.resizable!==!1?(p(),x("div",{key:3,role:"button","aria-label":u(o)("g.resizeFromBottomRight"),class:Q(u(ae)(m_,"right-0 bottom-0 cursor-se-resize")),onPointerdown:ke(J,["stop"])},null,42,v_)):A("",!0)],16,l_))}}),y_=h_,jo=[],qo=!1,Ko=null;const b_=a(()=>{function e(r){const n=Object.keys(r.settingValues).length===0||!r.get("Comfy.TutorialCompleted"),l=!localStorage.getItem("workflow"),i=!localStorage.getItem("Comfy.PreviousWorkflow");return n&&l&&i}a(e,"checkIsNewUser");async function o(r){if(qo){if(Ko)try{await r()}catch(n){console.error("New user initialization callback failed:",n)}}else jo.push(r)}a(o,"registerInitCallback");async function t(r){if(!qo){if(Ko=e(r),qo=!0,!Ko){jo=[];return}await r.set("Comfy.InstalledVersion","1.38.6");for(const n of jo)try{await n()}catch(l){console.error("New user initialization callback failed:",l)}jo=[]}}a(t,"initializeIfNewUser");function s(){return qo?Ko:null}return a(s,"isNewUser"),{registerInitCallback:o,initializeIfNewUser:t,isNewUser:s}},"newUserService");var w_=q({__name:"SelectionRectangle",setup(e){const o=fe(),t=E(null);io(()=>{const n=o.canvas;if(!n){t.value=null;return}const{pointer:l,dragging_rectangle:i}=n;if(i&&l.eDown&&l.eMove){const d=l.eDown.safeOffsetX,f=l.eDown.safeOffsetY;t.value={x:d,y:f,w:l.eMove.safeOffsetX-d,h:l.eMove.safeOffsetY-f}}else t.value=null});const s=y(()=>t.value!==null),r=y(()=>{const n=t.value;if(!n)return{};const l=n.w>=0?n.x:n.x+n.w,i=n.h>=0?n.y:n.y+n.h,d=Math.abs(n.w),f=Math.abs(n.h);return{left:`${l}px`,top:`${i}px`,width:`${d}px`,height:`${f}px`}});return(n,l)=>s.value?(p(),x("div",{key:0,class:"pointer-events-none absolute z-9999 border border-blue-400 bg-blue-500/20",style:be(r.value)},null,4)):A("",!0)}}),__=w_,k_={key:0,class:"workflow-tabs-container pointer-events-auto relative h-9.5 w-full"},C_={key:0,class:"app-drag fixed top-0 left-0 z-10 h-[var(--comfy-topbar-height)] w-full"},S_={class:"flex h-full items-center border-b border-interface-stroke bg-comfy-menu-bg shadow-interface"},x_={class:"sidebar-content-container h-full w-full overflow-x-hidden overflow-y-auto"},T_=q({__name:"GraphCanvas",emits:["ready"],setup(e,{emit:o}){const t=o,s=E(null),r=Je(null),n=ne(),l=Ct(),i=st(),d=fe(),f=it(),m=oo(),v=St(),h=ir(),g=go(),b=y(()=>n.get("Comfy.UseNewMenu")!=="Disabled"),S=y(()=>n.get("Comfy.Workflow.WorkflowTabsPosition")),k=y(()=>n.get("Comfy.Graph.CanvasMenu")),w=y(()=>n.get("Comfy.EnableTooltips")),C=y(()=>n.get("Comfy.Canvas.SelectionToolbox")),T=y(()=>i.sidebarTab.activeSidebarTab),I=y(()=>!i.focusMode&&b.value),_=y(()=>n.get("Comfy.Minimap.Visible")),{shouldRenderVueNodes:N}=la(),$=Dn(),V=a(async()=>{N.value&&($.disposeNodeManagerAndSyncs(),await Ue(),$.initializeNodeManager())},"handleVueNodeLifecycleReset");ie(()=>d.currentGraph,V),ie(()=>d.isInSubgraph,async(W,F)=>{F&&!W&&Ve().updateActiveGraph(),await V()});const B=y(()=>Array.from($.nodeManager.value?.vueNodeData?.values()??[]));we(()=>{ge.nodeOpacity=n.get("Comfy.Node.Opacity")}),we(()=>{ge.nodeLightness=v.completedActivePalette.light_theme?.5:void 0}),we(()=>{l.showDeprecated=n.get("Comfy.Node.ShowDeprecated")}),we(()=>{l.showExperimental=n.get("Comfy.Node.ShowExperimental")}),we(()=>{const W=n.get("Comfy.TextareaWidget.Spellcheck");document.querySelectorAll("textarea.comfy-multiline-input").forEach(F=>{F.spellcheck=W,F.focus(),F.blur()})}),ie(()=>n.get("Comfy.WidgetControlMode"),()=>{d.canvas&&(Hn(Y.rootGraph,W=>{if(W.widgets){for(const F of W.widgets)if(F[Ni]&&(as(F),!!F.linkedWidgets))for(const G of F.linkedWidgets)as(G)}}),d.canvas.setDirty(!0))}),ie([()=>d.canvas,()=>n.get("Comfy.ColorPalette")],async([W,F])=>{W&&await h.loadColorPalette(F)}),ie(()=>n.get("Comfy.Canvas.BackgroundImage"),async()=>{if(!d.canvas)return;const W=v.activePaletteId;W&&(await h.loadColorPalette(W),d.canvas.setDirty(!1,!0))}),ie(()=>v.activePaletteId,async W=>{await n.set("Comfy.ColorPalette",W)}),ie(()=>[f.nodeLocationProgressStates,d.canvas],([W,F])=>{if(F?.graph){for(const G of F.graph.nodes){const z=W[Ve().nodeIdToNodeLocatorId(G.id)];z&&z.state==="running"?G.progress=z.value/z.max:G.progress=void 0}F.setDirty(!0,!1)}},{deep:!0}),ie(()=>f.lastNodeErrors,W=>{Y.graph&&(Hn(Y.rootGraph,F=>{for(const z of F.inputs)delete z.hasErrors;for(const z of F.outputs)delete z.hasErrors;const G=W?.[F.id];G&&G.errors.filter(z=>z.extra_info?.input_name!==void 0).forEach(z=>{const K=z.extra_info.input_name,H=F.findInputSlot(K);H!==-1&&(F.inputs[H].hasErrors=!0)})}),Y.canvas.setDirty(!0,!0))}),Oe(s,"litegraph:no-items-selected",()=>{m.add({severity:"warn",summary:le("toastMessages.nothingSelected"),life:2e3})},{passive:!0});const D=a(async()=>{try{ql(await Ne.getCustomNodesI18n())}catch(W){console.error("Failed to load custom nodes i18n",W)}},"loadCustomNodesI18n"),U=E(!1),j=D1();return C1(s),I1(),k1(),Re(async()=>{N1(),S1(),T1(),Pi(),$1(),la(),Y.vueAppReady=!0,i.spinner=!0,Qi.init(),await D();try{await n.loadSettingValues()}catch(F){if(F instanceof si)localStorage.removeItem("Comfy.userId"),localStorage.removeItem("Comfy.userName"),window.location.reload();else throw F}P1.forEach(n.addSetting),await b_().initializeIfNewUser(n),await Y.setup(s.value),d.canvas=Y.canvas,d.canvas.render_canvas_border=!1,i.spinner=!1,Pn().setPopoverRef(r.value),window.app=Y,window.graph=Y.graph,U.value=!0,$.setupEmptyGraphListener(),Y.canvas.onSelectionChange=ro(Y.canvas.onSelectionChange,()=>d.updateSelectedItems()),v.customPalettes=n.get("Comfy.CustomColorPalettes"),await j.initializeWorkflow(),j.restoreWorkflowTabsState(),await j.loadTemplateFromUrlIfPresent();const{useReleaseStore:W}=await Fa(async()=>{const{useReleaseStore:F}=await import("./releaseStore-iVkqunL8.js");return{useReleaseStore:F}},__vite__mapDeps([30,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,31]),import.meta.url);W().initialize(),ie(()=>n.get("Comfy.Locale"),async()=>{await Ce().execute("Comfy.RefreshNodeDefinitions"),await nt().reloadCurrentWorkflow()}),bt(()=>fe().canvas,F=>{Oe(F.canvas,"litegraph:set-graph",()=>{Ve().updateActiveGraph()})},{immediate:!0}),t("ready")}),kt(()=>{$.cleanup()}),(W,F)=>(p(),x(Z,null,[U.value?(p(),O(ud,{key:0},Sl({"graph-canvas-panel":M(()=>[k.value?(p(),O(hv,{key:0,class:"pointer-events-auto"})):A("",!0),U.value&&_.value&&b.value?(p(),O(J1,{key:1,class:"pointer-events-auto"})):A("",!0)]),_:2},[I.value?{name:"workflow-tabs",fn:M(()=>[S.value==="Topbar"?(p(),x("div",k_,[u(Yl)()&&S.value!=="Topbar"?(p(),x("div",C_)):A("",!0),c("div",S_,[L(Or),L(Vr)])])):A("",!0)]),key:"0"}:void 0,I.value?{name:"side-toolbar",fn:M(()=>[L($w)]),key:"1"}:void 0,I.value?{name:"side-bar-panel",fn:M(()=>[c("div",x_,[T.value?(p(),O(Sr,{key:0,extension:T.value},null,8,["extension"])):A("",!0)])]),key:"2"}:void 0,I.value?{name:"topmenu",fn:M(()=>[L(Tf)]),key:"3"}:void 0,I.value?{name:"bottom-panel",fn:M(()=>[L(Ef)]),key:"4"}:void 0,I.value?{name:"right-side-panel",fn:M(()=>[L(Gh)]),key:"5"}:void 0]),1024)):A("",!0),c("canvas",{id:"graph-canvas",ref_key:"canvasRef",ref:s,tabindex:"1",class:"absolute inset-0 size-full touch-none"},null,512),u(N)&&u(Y).canvas&&U.value?(p(),O(V1,{key:1,canvas:u(Y).canvas,onWheelCapture:u(g).forwardEventToCanvas},{default:M(()=>[(p(!0),x(Z,null,ye(B.value,G=>(p(),O(y_,{key:G.id,"node-data":G,error:u(f).lastExecutionError?.node_id===G.id?"Execution error":null,"zoom-level":u(d).canvas?.ds?.scale||1,"data-node-id":G.id},null,8,["node-data","error","zoom-level","data-node-id"]))),128))]),_:1},8,["canvas","onWheelCapture"])):A("",!0),U.value?(p(),O(__,{key:2})):A("",!0),w.value?(p(),O(bv,{key:3})):A("",!0),L(sy,{ref_key:"nodeSearchboxPopoverRef",ref:r},null,512),U.value?(p(),x(Z,{key:4},[L(Um),C.value?(p(),O(Bm,{key:0})):A("",!0),u(N)?A("",!0):(p(),O(Ff,{key:1}))],64)):A("",!0)],64))}}),N_=T_,I_={class:"flex flex-auto flex-col items-start"},P_={class:"my-4 text-lg font-medium"},$_=q({__name:"RerouteMigrationToast",setup(e){const{t:o}=ue(),t=lo(),s=Ve(),r=a(async()=>{const n=Xi(Y.rootGraph.serialize());await Y.loadGraphData(n,!1,!1,s.activeWorkflow),t.removeGroup("reroute-migration")},"migrateToLitegraphReroute");return(n,l)=>(p(),O(u(Zr),{group:"reroute-migration"},{message:M(()=>[c("div",I_,[c("div",P_,R(u(o)("toastMessages.migrateToLitegraphReroute")),1),L(X,{class:"self-end",size:"sm",onClick:r},{default:M(()=>[Ie(R(u(o)("g.migrate")),1)]),_:1})])]),_:1}))}}),M_=$_,_s="ComfyUI",D_=" - ComfyUI";const L_=a(()=>{const e=it(),o=ne(),t=Ve(),s=st(),r=y(()=>e.isIdle?"":`[${Math.round(e.executionProgress*100)}%]`),n=y(()=>o.get("Comfy.UseNewMenu")!=="Disabled"),l=y(()=>o.get("Comfy.Workflow.AutoSave")==="after delay"),i=y(()=>!!t.activeWorkflow?.isModified),d=y(()=>!!t.activeWorkflow?.isPersisted),f=y(()=>s.shiftDown||l.value?!1:!!(!d.value||i.value)),m=y(()=>f.value?" *":""),v=y(()=>{const b=t.activeWorkflow?.filename;return b?m.value+b+D_:_s}),h=y(()=>{const b=Object.entries(e.nodeProgressStates).filter(([T,I])=>I.state==="running");if(b.length===0)return"";if(b.length>1)return`${r.value}[${b.length} ${le("g.nodesRunning","nodes running")}]`;const[S,k]=b[0],w=Math.round(k.value/k.max*100),C=e.activePrompt?.workflow?.changeTracker?.activeState.nodes.find(T=>String(T.id)===S)?.type||"Node";return`${r.value}[${w}%] ${C}`}),g=y(()=>r.value+(n.value?v.value:_s));hl(y(()=>h.value||g.value))},"useBrowserTabTitle");var A_={},E_={class:"size-full bg-modal-panel-background pr-6 pb-8 pl-4"};function V_(e,o){return p(),x("div",E_,[_e(e.$slots,"default")])}a(V_,"_sfc_render");var O_=Be(A_,[["render",V_]]),R_={class:"text-neutral text-base"},W_={class:"flex gap-2"},B_={class:"relative flex gap-2 px-6 pb-4"},z_=q({__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"}]),r=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]"}]}]);fa(pr,e.onClose);const n=E(""),l=E(""),i=E([]),d=E([]),f=E("popular"),m=E("installed"),v=y(()=>Lr());return(h,g)=>(p(),O(dr,{"content-title":h.$t("assetBrowser.checkpoints")},{leftPanel:M(()=>[L(vr,{modelValue:m.value,"onUpdate:modelValue":g[0]||(g[0]=b=>m.value=b),"nav-items":r.value},{"header-icon":M(()=>g[6]||(g[6]=[c("i",{class:"text-neutral icon-[lucide--puzzle]"},null,-1)])),"header-title":M(()=>[c("span",R_,R(h.$t("g.title")),1)]),_:1},8,["modelValue","nav-items"])]),header:M(()=>[L(rr,{modelValue:n.value,"onUpdate:modelValue":g[1]||(g[1]=b=>n.value=b),size:"lg",class:"max-w-[384px]"},null,8,["modelValue"])]),"header-right-area":M(()=>[c("div",W_,[L(X,{variant:"primary",onClick:a(()=>{},"onClick")},{default:M(()=>[g[7]||(g[7]=c("i",{class:"icon-[lucide--upload]"},null,-1)),c("span",null,R(h.$t("g.upload")),1)]),_:1}),L(Xs,null,{default:M(({close:b})=>[L(X,{variant:"secondary",onClick:a(()=>{b()},"onClick")},{default:M(()=>[g[8]||(g[8]=c("i",{class:"icon-[lucide--download]"},null,-1)),c("span",null,R(h.$t("g.settings")),1)]),_:2},1032,["onClick"]),L(X,{variant:"primary",onClick:a(()=>{b()},"onClick")},{default:M(()=>[g[9]||(g[9]=c("i",{class:"icon-[lucide--scroll]"},null,-1)),c("span",null,R(h.$t("g.profile")),1)]),_:2},1032,["onClick"])]),_:1})])]),contentFilter:M(()=>[c("div",B_,[L(So,{modelValue:i.value,"onUpdate:modelValue":g[2]||(g[2]=b=>i.value=b),"search-query":l.value,"onUpdate:searchQuery":g[3]||(g[3]=b=>l.value=b),class:"w-[250px]",label:h.$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"]),L(So,{modelValue:d.value,"onUpdate:modelValue":g[4]||(g[4]=b=>d.value=b),label:h.$t("assetBrowser.selectProjects"),options:t.value},null,8,["modelValue","label","options"]),L(js,{modelValue:f.value,"onUpdate:modelValue":g[5]||(g[5]=b=>f.value=b),label:h.$t("assetBrowser.sortingType"),options:s.value,class:"w-[135px]"},{icon:M(()=>g[10]||(g[10]=[c("i",{class:"icon-[lucide--filter]"},null,-1)])),_:1},8,["modelValue","label","options"])])]),content:M(()=>[c("div",{style:be(v.value)},[(p(),x(Z,null,ye(100,b=>L(oa,{key:b,size:"regular"},{top:M(()=>[L(aa,{ratio:"landscape"},{default:M(()=>g[11]||(g[11]=[c("div",{class:"h-full w-full bg-blue-500"},null,-1)])),"top-right":M(()=>[L(X,{size:"icon",class:"!bg-white !text-neutral-900",onClick:a(()=>{},"onClick")},{default:M(()=>g[12]||(g[12]=[c("i",{class:"icon-[lucide--info]"},null,-1)])),_:1})]),"bottom-right":M(()=>[L(na,{label:"png"}),L(na,{label:"1.2 MB"}),L(na,{label:"LoRA"},{icon:M(()=>g[13]||(g[13]=[c("i",{class:"icon-[lucide--folder]"},null,-1)])),_:1})]),_:1})]),bottom:M(()=>[L(ta)]),_:2},1024)),64))],4)]),rightPanel:M(()=>[L(O_)]),_:1},8,["content-title"]))}}),U_=z_,ks="global-model-selector";const F_=a(()=>{const e=vt(),o=qt();function t(){o.closeDialog({key:ks})}a(t,"hide");function s(){e.showLayoutDialog({key:ks,component:U_,props:{onClose:t}})}return a(s,"show"),{show:s,hide:t}},"useModelSelectorDialog");function G_(e,o){const t=nu.safeParse(e);if(!t.success){const b=t.error.errors.map(S=>`${S.path.join(".")}: ${S.message}`).join(", ");return console.error("Invalid asset item:",b),{success:!1,error:{code:"INVALID_ASSET",message:"Asset schema validation failed",assetId:e.id,details:{validationErrors:b}}}}const s=t.data,r=s.user_metadata;if(!r)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 n=r.filename;if(typeof n!="string"||n.length===0)return console.error(`Asset ${s.id} has invalid user_metadata.filename (expected non-empty string, got ${typeof n})`),{success:!1,error:{code:"INVALID_ASSET",message:`Invalid filename (expected non-empty string, got ${typeof n})`,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 l=s.tags.find(b=>b!=="models"&&b!=="missing");if(!l)return console.error(`Asset ${s.id} has no valid category tag. Available tags: ${s.tags.join(", ")} (expected tag other than '${Bi}' or '${Di}')`),{success:!1,error:{code:"INVALID_ASSET",message:"Asset has no valid category tag",assetId:s.id,details:{availableTags:s.tags}}};const i=Qs().getNodeProvider(l);if(!i)return console.error(`No node provider registered for category: ${l}`),{success:!1,error:{code:"NO_PROVIDER",message:`No node provider registered for category: ${l}`,assetId:s.id,details:{category:l}}};const d=Ro(),f=o?.position??d.getCanvasCenter(),m=ge.createNode(i.nodeDef.name,i.nodeDef.display_name,{pos:f});if(!m)return console.error(`Failed to create node for type: ${i.nodeDef.name}`),{success:!1,error:{code:"NODE_CREATION_FAILED",message:`Failed to create node for type: ${i.nodeDef.name}`,assetId:s.id,details:{nodeType:i.nodeDef.name}}};const v=Ve(),h=v.isSubgraphActive?v.activeSubgraph:Y.canvas.graph;if(!h)return console.error("No active graph available"),{success:!1,error:{code:"NO_GRAPH",message:"No active graph available",assetId:s.id}};const g=m.widgets?.find(b=>b.name===i.key);return g?(g.value=n,h.add(m),{success:!0,value:m}):(console.error(`Widget ${i.key} not found on node ${i.nodeDef.name}`),{success:!1,error:{code:"MISSING_WIDGET",message:`Widget ${i.key} not found on node ${i.nodeDef.name}`,assetId:s.id,details:{widgetName:i.key,nodeType:i.nodeDef.name}}})}a(G_,"createModelNodeFromAsset");var Qo={DISTRIBUTION:"tf_42243568391700",ANONYMOUS_EMAIL:"tf_anonymous_requester_email",EMAIL:"tf_40029135130388",USER_ID:"tf_42515251051412"},H_="https://support.comfy.org/hc/en-us/requests/new";function j_(e){const o=new URLSearchParams({[Qo.DISTRIBUTION]:Fe?"ccloud":"oss"});return e?.userEmail&&(o.append(Qo.ANONYMOUS_EMAIL,e.userEmail),o.append(Qo.EMAIL,e.userEmail)),e?.userId&&o.append(Qo.USER_ID,e.userId),`${H_}?${o.toString()}`}a(j_,"buildSupportUrl");var{isActiveSubscription:Ea,showSubscriptionDialog:Va}=vn(),Yo="1.22.2";function q_(){const e=nt(),o=Ve(),t=vt(),s=St(),r=Ys(),n=oo(),l=fe(),i=it(),d=Le(),{staticUrls:f,buildDocsUrl:m}=co(),v=ne(),h=po(),g=qt(),b=Pu(),{getSelectedNodes:S,toggleSelectedNodesMode:k}=gn(),w=a(()=>o.activeWorkflow?.changeTracker,"getTracker");function C(){return v.get("Comfy.Queue.QPOV2")}a(C,"isQueuePanelV2Enabled");async function T(){await v.set("Comfy.Queue.QPOV2",!C())}a(T,"toggleQueuePanelV2");const I=a(_=>{const N=S();if(N.length===0)return;const $=ne().get("Comfy.SnapToGrid.GridSize");N.forEach(V=>{V.pos=_(V.pos,$)}),Y.canvas.state.selectionChanged=!0,Y.canvas.setDirty(!0,!0)},"moveSelectedNodes");return[{id:"Comfy.NewBlankWorkflow",icon:"pi pi-plus",label:"New Blank Workflow",menubarLabel:"New",category:"essentials",function:a(async()=>{const _=Y.rootGraph._nodes.length>0;await e.loadBlankWorkflow(),d?.trackWorkflowCreated({workflow_type:"blank",previous_workflow_had_nodes:_})},"function")},{id:"Comfy.OpenWorkflow",icon:"pi pi-folder-open",label:"Open Workflow",menubarLabel:"Open",category:"essentials",function:a(()=>{Y.ui.loadFile()},"function")},{id:"Comfy.LoadDefaultWorkflow",icon:"pi pi-code",label:"Load Default Workflow",function:a(async()=>{const _=Y.rootGraph._nodes.length>0;await e.loadDefaultWorkflow(),d?.trackWorkflowCreated({workflow_type:"default",previous_workflow_had_nodes:_})},"function")},{id:"Comfy.SaveWorkflow",icon:"pi pi-save",label:"Save Workflow",menubarLabel:"Save",category:"essentials",function:a(async()=>{const _=Ve().activeWorkflow;_&&await e.saveWorkflow(_)},"function")},{id:"Comfy.PublishSubgraph",icon:"pi pi-save",label:"Publish Subgraph",menubarLabel:"Publish",function:a(async()=>{await wn().publishSubgraph()},"function")},{id:"Comfy.SaveWorkflowAs",icon:"pi pi-save",label:"Save Workflow As",menubarLabel:"Save As",category:"essentials",function:a(async()=>{const _=Ve().activeWorkflow;_&&await e.saveWorkflowAs(_)},"function")},{id:"Comfy.RenameWorkflow",icon:"pi pi-pencil",label:"Rename Workflow",menubarLabel:"Rename",function:a(async()=>{const _=o.activeWorkflow;if(!_||!_.isPersisted)return;const N=await t.prompt({title:le("g.rename"),message:le("workflowService.enterFilename")+":",defaultValue:_.filename});if(!N||N===_.filename)return;const $=_.directory+"/"+N+".json";await e.renameWorkflow(_,$)},"function")},{id:"Comfy.ExportWorkflow",icon:"pi pi-download",label:"Export Workflow",menubarLabel:"Export",category:"essentials",function:a(async()=>{await e.exportWorkflow("workflow","workflow")},"function")},{id:"Comfy.ExportWorkflowAPI",icon:"pi pi-download",label:"Export Workflow (API Format)",menubarLabel:"Export (API)",function:a(async()=>{await e.exportWorkflow("workflow_api","output")},"function")},{id:"Comfy.Undo",icon:"pi pi-undo",label:"Undo",category:"essentials",function:a(async()=>{g.isDialogOpen("global-mask-editor")?b.canvasHistory.undo():await w()?.undo?.()},"function")},{id:"Comfy.Redo",icon:"pi pi-refresh",label:"Redo",category:"essentials",function:a(async()=>{g.isDialogOpen("global-mask-editor")?b.canvasHistory.redo():await w()?.redo?.()},"function")},{id:"Comfy.ClearWorkflow",icon:"pi pi-trash",label:"Clear Workflow",category:"essentials",function:a(()=>{if(!ne().get("Comfy.ConfirmClear")||confirm("Clear workflow?")){if(Y.clean(),Y.canvas.subgraph){const _=Y.canvas.subgraph;li(_).forEach(N=>_.remove(N))}Ne.dispatchCustomEvent("graphCleared")}},"function")},{id:"Comfy.Canvas.ResetView",icon:"pi pi-expand",label:"Reset View",function:a(()=>{Ro().resetView()},"function")},{id:"Comfy.OpenClipspace",icon:"pi pi-clipboard",label:"Clipspace",function:a(()=>{Y.openClipspace()},"function")},{id:"Comfy.RefreshNodeDefinitions",icon:"pi pi-refresh",label:"Refresh Node Definitions",category:"essentials",function:a(async()=>{await Y.refreshComboInNodes()},"function")},{id:"Comfy.Interrupt",icon:"pi pi-stop",label:"Interrupt",category:"essentials",function:a(async()=>{await Ne.interrupt(i.activePromptId),n.add({severity:"info",summary:le("g.interrupted"),detail:le("toastMessages.interrupted"),life:1e3})},"function")},{id:"Comfy.ClearPendingTasks",icon:"pi pi-stop",label:"Clear Pending Tasks",category:"essentials",function:a(async()=>{await Vt().clear(["queue"]),n.add({severity:"info",summary:le("g.confirmed"),detail:le("toastMessages.pendingTasksDeleted"),life:3e3})},"function")},{id:"Comfy.BrowseTemplates",icon:"pi pi-folder-open",label:"Browse Templates",function:a(()=>{Mn().show()},"function")},{id:"Comfy.Canvas.ZoomIn",icon:"pi pi-plus",label:"Zoom In",category:"view-controls",function:a(()=>{const _=Y.canvas.ds;_.changeScale(_.scale*1.1,_.element?[_.element.width/2,_.element.height/2]:void 0),Y.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.ZoomOut",icon:"pi pi-minus",label:"Zoom Out",category:"view-controls",function:a(()=>{const _=Y.canvas.ds;_.changeScale(_.scale/1.1,_.element?[_.element.width/2,_.element.height/2]:void 0),Y.canvas.setDirty(!0,!0)},"function")},{id:"Experimental.ToggleVueNodes",label:a(()=>`Experimental: ${ne().get("Comfy.VueNodes.Enabled")?"Disable":"Enable"} Nodes 2.0`,"label"),function:a(async()=>{const _=ne(),N=_.get("Comfy.VueNodes.Enabled")??!1;await _.set("Comfy.VueNodes.Enabled",!N)},"function")},{id:"Comfy.Canvas.FitView",icon:"pi pi-expand",label:"Fit view to selected nodes",menubarLabel:"Zoom to fit",category:"view-controls",function:a(()=>{if(Y.canvas.empty){n.add({severity:"error",summary:le("toastMessages.emptyCanvas"),life:3e3});return}Y.canvas.fitViewToSelectionAnimated()},"function")},{id:"Comfy.Canvas.ToggleLock",icon:"pi pi-lock",label:"Canvas Toggle Lock",category:"view-controls",function:a(()=>{Y.canvas.state.readOnly=!Y.canvas.state.readOnly},"function")},{id:"Comfy.Canvas.Lock",icon:"pi pi-lock",label:"Lock Canvas",category:"view-controls",function:a(()=>{Y.canvas.state.readOnly=!0},"function")},{id:"Comfy.Canvas.Unlock",icon:"pi pi-lock-open",label:"Unlock Canvas",function:a(()=>{Y.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 _=ne();let N=ge.SPLINE_LINK;return async()=>{const $=_.get("Comfy.LinkRenderMode");$===ge.HIDDEN_LINK?await _.set("Comfy.LinkRenderMode",N):(N=$,await _.set("Comfy.LinkRenderMode",ge.HIDDEN_LINK))}})(),active:a(()=>ne().get("Comfy.LinkRenderMode")!==ge.HIDDEN_LINK,"active")},{id:"Comfy.Canvas.ToggleMinimap",icon:"pi pi-map",label:"Canvas Toggle Minimap",menubarLabel:"Minimap",versionAdded:"1.24.1",function:a(async()=>{const _=ne();await _.set("Comfy.Minimap.Visible",!_.get("Comfy.Minimap.Visible"))},"function"),active:a(()=>ne().get("Comfy.Minimap.Visible"),"active")},{id:"Comfy.Queue.ToggleOverlay",icon:"pi pi-history",label:a(()=>le("queue.toggleJobHistory"),"label"),menubarLabel:a(()=>le("queue.jobHistory"),"menubarLabel"),versionAdded:"1.37.0",category:"view-controls",function:a(()=>{Ya().toggleOverlay()},"function"),active:a(()=>Ya().isOverlayExpanded,"active")},{id:"Comfy.QueuePrompt",icon:"pi pi-play",label:"Queue Prompt",versionAdded:"1.3.7",category:"essentials",function:a(async _=>{if(Le()?.trackRunButton(_),!Ea.value){Va();return}const N=Co().batchCount;Le()?.trackWorkflowExecution(),await Y.queuePrompt(0,N)},"function")},{id:"Comfy.QueuePromptFront",icon:"pi pi-play",label:"Queue Prompt (Front)",versionAdded:"1.3.7",category:"essentials",function:a(async _=>{if(Le()?.trackRunButton(_),!Ea.value){Va();return}const N=Co().batchCount;Le()?.trackWorkflowExecution(),await Y.queuePrompt(-1,N)},"function")},{id:"Comfy.QueueSelectedOutputNodes",icon:"pi pi-play",label:"Queue Selected Output Nodes",versionAdded:"1.19.6",function:a(async _=>{if(Le()?.trackRunButton(_),!Ea.value){Va();return}const N=Co().batchCount,$=Sn(S());if($.length===0){n.add({severity:"error",summary:le("toastMessages.nothingToQueue"),detail:le("toastMessages.pleaseSelectOutputNodes"),life:3e3});return}const V=Fl($);if(V.length===0){n.add({severity:"error",summary:le("toastMessages.failedToQueue"),detail:le("toastMessages.failedExecutionPathResolution"),life:3e3});return}Le()?.trackWorkflowExecution(),await Y.queuePrompt(0,N,V)},"function")},{id:"Comfy.ShowSettingsDialog",icon:"pi pi-cog",label:"Show Settings Dialog",versionAdded:"1.3.7",category:"view-controls",function:a(()=>{t.showSettingsDialog()},"function")},{id:"Comfy.Graph.GroupSelectedNodes",icon:"pi pi-sitemap",label:"Group Selected Nodes",versionAdded:"1.3.7",category:"essentials",function:a(()=>{const{canvas:_}=Y;if(!_.selectedItems?.size){n.add({severity:"error",summary:le("toastMessages.nothingToGroup"),detail:le("toastMessages.pleaseSelectNodesToGroup"),life:3e3});return}const N=new Ht,$=ne().get("Comfy.GroupSelectedNodes.Padding");N.resizeTo(_.selectedItems,$),_.graph?.add(N),N.recomputeInsideNodes(),ya().titleEditorTarget=N},"function")},{id:"Workspace.NextOpenedWorkflow",icon:"pi pi-step-forward",label:"Next Opened Workflow",versionAdded:"1.3.9",function:a(async()=>{await e.loadNextOpenedWorkflow()},"function")},{id:"Workspace.PreviousOpenedWorkflow",icon:"pi pi-step-backward",label:"Previous Opened Workflow",versionAdded:"1.3.9",function:a(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:a(()=>{k(We.NEVER),Y.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:a(()=>{k(We.BYPASS),Y.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:a(()=>{S().forEach(_=>{_.pin(!_.pinned)}),Y.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.ToggleSelected.Pin",icon:"pi pi-pin",label:"Pin/Unpin Selected Items",versionAdded:"1.3.33",function:a(()=>{for(const _ of Y.canvas.selectedItems)(_ instanceof _t||_ instanceof Ht)&&_.pin(!_.pinned);Y.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.Resize",icon:"pi pi-minus",label:"Resize Selected Nodes",versionAdded:"",function:a(()=>{S().forEach(_=>{const N=_.computeSize();_.setSize([N[0],N[1]])}),Y.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.ToggleSelectedNodes.Collapse",icon:"pi pi-minus",label:"Collapse/Expand Selected Nodes",versionAdded:"1.3.11",function:a(()=>{S().forEach(_=>{_.collapse()}),Y.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.ToggleTheme",icon:"pi pi-moon",label:"Toggle Theme (Dark/Light)",versionAdded:"1.3.12",function:(()=>{let _=fu.id,N=gu.id;return async()=>{const $=ne(),V=s.completedActivePalette;V.light_theme?(N=V.id,await $.set("Comfy.ColorPalette",_)):(_=V.id,await $.set("Comfy.ColorPalette",N))}})()},{id:"Workspace.ToggleBottomPanel",icon:"pi pi-list",label:"Toggle Bottom Panel",menubarLabel:"Bottom Panel",versionAdded:"1.3.22",category:"view-controls",function:a(()=>{h.toggleBottomPanel()},"function"),active:a(()=>h.bottomPanelVisible,"active")},{id:"Workspace.ToggleFocusMode",icon:"pi pi-eye",label:"Toggle Focus Mode",menubarLabel:"Focus Mode",versionAdded:"1.3.27",category:"view-controls",function:a(()=>{st().toggleFocusMode()},"function"),active:a(()=>st().focusMode,"active")},{id:"Comfy.Graph.FitGroupToContents",icon:"pi pi-expand",label:"Fit Group To Contents",versionAdded:"1.4.9",function:a(()=>{for(const _ of Y.canvas.selectedItems)if(_ instanceof Ht){_.recomputeInsideNodes();const N=ne().get("Comfy.GroupSelectedNodes.Padding");_.resizeTo(_.children,N),Y.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:a(()=>{d?.trackHelpResourceClicked({resource_type:"github",is_external:!0,source:"menu"}),window.open(f.githubIssues,"_blank")},"function")},{id:"Comfy.Help.OpenComfyUIDocs",icon:"pi pi-info-circle",label:"Open ComfyUI Docs",menubarLabel:"ComfyUI Docs",versionAdded:"1.5.5",function:a(()=>{d?.trackHelpResourceClicked({resource_type:"docs",is_external:!0,source:"menu"}),window.open(m("/",{includeLocale:!0}),"_blank")},"function")},{id:"Comfy.Help.OpenComfyOrgDiscord",icon:"pi pi-discord",label:"Open Comfy-Org Discord",menubarLabel:"Comfy-Org Discord",versionAdded:"1.5.5",function:a(()=>{d?.trackHelpResourceClicked({resource_type:"discord",is_external:!0,source:"menu"}),window.open(f.discord,"_blank")},"function")},{id:"Workspace.SearchBox.Toggle",icon:"pi pi-search",label:"Toggle Search Box",versionAdded:"1.5.7",function:a(()=>{Pn().toggleVisible()},"function")},{id:"Comfy.Help.AboutComfyUI",icon:"pi pi-info-circle",label:"Open About ComfyUI",menubarLabel:"About ComfyUI",versionAdded:"1.6.4",function:a(()=>{t.showSettingsDialog("about")},"function")},{id:"Comfy.DuplicateWorkflow",icon:"pi pi-clone",label:"Duplicate Current Workflow",versionAdded:"1.6.15",function:a(async()=>{await e.duplicateWorkflow(o.activeWorkflow)},"function")},{id:"Workspace.CloseWorkflow",icon:"pi pi-times",label:"Close Current Workflow",versionAdded:"1.7.3",function:a(async()=>{o.activeWorkflow&&await e.closeWorkflow(o.activeWorkflow)},"function")},{id:"Comfy.ContactSupport",icon:"pi pi-question",label:"Contact Support",versionAdded:"1.17.8",function:a(()=>{const{userEmail:_,resolvedUserInfo:N}=fo(),$=j_({userEmail:_.value,userId:N.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:a(()=>{d?.trackHelpResourceClicked({resource_type:"help_feedback",is_external:!0,source:"menu"}),window.open(f.forum,"_blank")},"function")},{id:"Comfy.Canvas.DeleteSelectedItems",icon:"pi pi-trash",label:"Delete Selected Items",versionAdded:"1.10.5",function:a(()=>{Y.canvas.deleteSelected(),Y.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Manager.CustomNodesManager.ShowCustomNodesMenu",icon:"pi pi-puzzle",label:"Custom Nodes Manager",versionAdded:"1.12.10",function:a(async()=>{await ht().openManager({showToastOnLegacyError:!0})},"function")},{id:"Comfy.Manager.ShowUpdateAvailablePacks",icon:"pi pi-sync",label:"Check for Custom Node Updates",versionAdded:"1.17.0",function:a(async()=>{const _=ht();if(_.managerUIState.value===xu.DISABLED){n.add({severity:"error",summary:le("g.error"),detail:le("manager.notAvailable"),life:3e3});return}await _.openManager({initialTab:ao.UpdateAvailable,showToastOnLegacyError:!1})},"function")},{id:"Comfy.Manager.ShowMissingPacks",icon:"pi pi-exclamation-circle",label:"Install Missing Custom Nodes",versionAdded:"1.17.0",function:a(async()=>{await ht().openManager({initialTab:ao.Missing,showToastOnLegacyError:!1})},"function")},{id:"Comfy.User.OpenSignInDialog",icon:"pi pi-user",label:"Open Sign In Dialog",versionAdded:"1.17.6",function:a(async()=>{await t.showSignInDialog()},"function")},{id:"Comfy.User.SignOut",icon:"pi pi-sign-out",label:"Sign Out",versionAdded:"1.18.1",function:a(async()=>{await r.logout()},"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Up",icon:"pi pi-arrow-up",label:"Move Selected Nodes Up",versionAdded:Yo,function:a(()=>I(([_,N],$)=>[_,N-$]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Down",icon:"pi pi-arrow-down",label:"Move Selected Nodes Down",versionAdded:Yo,function:a(()=>I(([_,N],$)=>[_,N+$]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Left",icon:"pi pi-arrow-left",label:"Move Selected Nodes Left",versionAdded:Yo,function:a(()=>I(([_,N],$)=>[_-$,N]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Right",icon:"pi pi-arrow-right",label:"Move Selected Nodes Right",versionAdded:Yo,function:a(()=>I(([_,N],$)=>[_+$,N]),"function")},{id:"Comfy.Graph.ConvertToSubgraph",icon:"icon-[lucide--shrink]",label:"Convert Selection to Subgraph",versionAdded:"1.20.1",category:"essentials",function:a(()=>{const _=l.getCanvas(),N=_.subgraph??_.graph;if(!N)throw new TypeError("Canvas has no graph or subgraph set.");const $=N.convertToSubgraph(_.selectedItems);if(!$){n.add({severity:"error",summary:le("toastMessages.cannotCreateSubgraph"),detail:le("toastMessages.failedToConvertToSubgraph"),life:3e3});return}const{node:V}=$;_.select(V),l.updateSelectedItems()},"function")},{id:"Comfy.Graph.UnpackSubgraph",icon:"icon-[lucide--expand]",label:"Unpack the selected Subgraph",versionAdded:"1.26.3",function:a(()=>{const{unpackSubgraph:_}=ur();_()},"function")},{id:"Comfy.Graph.EditSubgraphWidgets",label:"Edit Subgraph Widgets",icon:"icon-[lucide--settings-2]",versionAdded:"1.28.5",function:a(()=>{ut().openPanel("subgraph")},"function")},{id:"Comfy.Graph.ToggleWidgetPromotion",icon:"icon-[lucide--arrow-left-right]",label:"Toggle promotion of hovered widget",versionAdded:"1.30.1",function:ji},{id:"Comfy.OpenManagerDialog",icon:"mdi mdi-puzzle-outline",label:"Manager",function:a(async()=>{await ht().openManager({initialTab:ao.All,showToastOnLegacyError:!1})},"function")},{id:"Comfy.ToggleHelpCenter",icon:"pi pi-question-circle",label:"Help Center",function:a(()=>{en().toggle()},"function"),active:a(()=>en().isVisible,"active")},{id:"Comfy.ToggleCanvasInfo",icon:"pi pi-info-circle",label:"Canvas Performance",function:a(async()=>{const _=ne(),N=_.get("Comfy.Graph.CanvasInfo");await _.set("Comfy.Graph.CanvasInfo",!N)},"function"),active:a(()=>ne().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:a(()=>{h.togglePanel("shortcuts")},"function")},{id:"Comfy.Graph.ExitSubgraph",icon:"pi pi-arrow-up",label:"Exit Subgraph",versionAdded:"1.20.1",function:a(()=>{const _=fe().getCanvas(),N=bn();_.graph&&_.setGraph(N.navigationStack.at(-2)??_.graph.rootGraph)},"function")},{id:"Comfy.Dev.ShowModelSelector",icon:"pi pi-box",label:"Show Model Selector (Dev)",versionAdded:"1.26.2",category:"view-controls",function:a(()=>{F_().show()},"function")},{id:"Comfy.Manager.CustomNodesManager.ShowLegacyCustomNodesMenu",icon:"pi pi-bars",label:"Custom Nodes (Legacy)",versionAdded:"1.16.4",function:a(async()=>{await ht().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:a(async()=>{await ht().openManager({showToastOnLegacyError:!0,isLegacyOnly:!0})},"function")},{id:"Comfy.Memory.UnloadModels",icon:"mdi mdi-vacuum-outline",label:"Unload Models",versionAdded:"1.16.4",function:a(async()=>{if(!ne().get("Comfy.Memory.AllowManualUnload")){oo().add({severity:"error",summary:le("g.error"),detail:le("g.commandProhibited",{command:"Comfy.Memory.UnloadModels"}),life:3e3});return}await Ne.freeMemory({freeExecutionCache:!1})},"function")},{id:"Comfy.Memory.UnloadModelsAndExecutionCache",icon:"mdi mdi-vacuum-outline",label:"Unload Models and Execution Cache",versionAdded:"1.16.4",function:a(async()=>{if(!ne().get("Comfy.Memory.AllowManualUnload")){oo().add({severity:"error",summary:le("g.error"),detail:le("g.commandProhibited",{command:"Comfy.Memory.UnloadModelsAndExecutionCache"}),life:3e3});return}await Ne.freeMemory({freeExecutionCache:!0})},"function")},{id:"Comfy.BrowseModelAssets",icon:"pi pi-folder-open",label:"Experimental: Browse Model Assets",versionAdded:"1.28.3",function:a(async()=>{if(!ne().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 ne().set("Comfy.Assets.UseAssetAPI",!0),await e.reloadCurrentWorkflow()}await Zi().browse({assetType:"models",title:le("sideToolbar.modelLibrary"),onAssetSelected:a(_=>{const N=G_(_);N.success||(n.add({severity:"error",summary:le("g.error"),detail:le("assetBrowser.failedToCreateNode")}),console.error("Node creation failed:",N.error))},"onAssetSelected")})},"function")},{id:"Comfy.ToggleAssetAPI",icon:"pi pi-database",label:a(()=>`Experimental: ${ne().get("Comfy.Assets.UseAssetAPI")?"Disable":"Enable"} AssetAPI`,"label"),function:a(async()=>{const _=ne(),N=_.get("Comfy.Assets.UseAssetAPI")??!1;await _.set("Comfy.Assets.UseAssetAPI",!N),await nt().reloadCurrentWorkflow()},"function")},{id:"Comfy.ToggleQPOV2",icon:"pi pi-list",label:"Toggle Queue Panel V2",function:T},{id:"Comfy.ToggleLinear",icon:"pi pi-database",label:"Toggle Simple Mode",function:a(()=>{const _=!l.linearMode;Y.rootGraph.extra.linearMode=_,o.activeWorkflow?.changeTracker?.checkState(),l.linearMode=_},"function")}].map(_=>({..._,source:"System"}))}a(q_,"useCoreCommands");const K_=a(()=>{const e="/assets/images/favicon_progress_16x16/frame_9.png",o=Al(e),t=it(),s=10;ie([()=>t.executionProgress,()=>t.isIdle],([r,n])=>{n?o.value=e:o.value=`/assets/images/favicon_progress_16x16/frame_${Math.min(Math.max(0,Math.floor(r*s)),s-1)}.png`})},"useProgressFavicon");let Cs=(function(e){return e.NoPreviews="none",e.Auto="auto",e.Latent2RGB="latent2rgb",e.TAESD="taesd",e})({}),Ss=(function(e){return e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.CRITICAL="CRITICAL",e})({}),xs=(function(e){return e.MD5="md5",e.SHA1="sha1",e.SHA256="sha256",e.SHA512="sha512",e})({}),wo=(function(e){return e.Auto="auto",e.Disable="disable",e.Enable="enable",e})({}),Ee=(function(e){return e.AUTO="auto",e.FP64="fp64",e.FP32="fp32",e.FP16="fp16",e.BF16="bf16",e.FP8E4M3FN="fp8_e4m3fn",e.FP8E5M2="fp8_e5m2",e})({}),Oa=(function(e){return e.Auto="auto",e.Split="split",e.Quad="quad",e.Pytorch="pytorch",e})({}),Ra=(function(e){return e.Auto="auto",e.GPUOnly="gpu-only",e.HighVram="highvram",e.NormalVram="normalvram",e.LowVram="lowvram",e.NoVram="novram",e.CPU="cpu",e})({});const Q_=[{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(wo),defaultValue:wo.Auto,getValue:a(e=>{switch(e){case wo.Auto:return{};case wo.Enable:return{"cuda-malloc":!0};case wo.Disable:return{"disable-cuda-malloc":!0}}},"getValue")},{id:"global-precision",name:"Global floating point precision",category:["Inference"],type:"combo",options:[Ee.AUTO,Ee.FP32,Ee.FP16],defaultValue:Ee.AUTO,tooltip:"Global floating point precision",getValue:a(e=>{switch(e){case Ee.AUTO:return{};case Ee.FP32:return{"force-fp32":!0};case Ee.FP16:return{"force-fp16":!0};default:return{}}},"getValue")},{id:"unet-precision",name:"UNET precision",category:["Inference"],type:"combo",options:[Ee.AUTO,Ee.FP64,Ee.FP32,Ee.FP16,Ee.BF16,Ee.FP8E4M3FN,Ee.FP8E5M2],defaultValue:Ee.AUTO,tooltip:"UNET precision",getValue:a(e=>{switch(e){case Ee.AUTO:return{};default:return{[`${e.toLowerCase()}-unet`]:!0}}},"getValue")},{id:"vae-precision",name:"VAE precision",category:["Inference"],type:"combo",options:[Ee.AUTO,Ee.FP16,Ee.FP32,Ee.BF16],defaultValue:Ee.AUTO,tooltip:"VAE precision",getValue:a(e=>{switch(e){case Ee.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:[Ee.AUTO,Ee.FP8E4M3FN,Ee.FP8E5M2,Ee.FP16,Ee.FP32],defaultValue:Ee.AUTO,tooltip:"Text Encoder precision",getValue:a(e=>{switch(e){case Ee.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(Cs),defaultValue:Cs.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(Oa),defaultValue:Oa.Auto,getValue:a(e=>{switch(e){case Oa.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(Ra),defaultValue:Ra.Auto,getValue:a(e=>{switch(e){case Ra.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(xs),defaultValue:xs.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(Ss),defaultValue:Ss.INFO,getValue:a(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:""}];var Y_={key:0,role:"status","aria-live":"polite",class:"fixed inset-x-0 bottom-6 z-9999 mx-auto w-4/5 max-w-3xl overflow-hidden rounded-lg border border-border-default bg-base-background shadow-lg"},J_=q({__name:"HoneyToast",props:Eo({visible:{type:Boolean}},{expanded:{type:Boolean,default:!1},expandedModifiers:{}}),emits:["update:expanded"],setup(e){const o=Vo(e,"expanded");function t(){o.value=!o.value}return a(t,"toggle"),(s,r)=>(p(),O(yt,{to:"body"},[L(ma,{"enter-active-class":"transition-all duration-300 ease-out","enter-from-class":"translate-y-full opacity-0","enter-to-class":"translate-y-0 opacity-100","leave-active-class":"transition-all duration-200 ease-in","leave-from-class":"translate-y-0 opacity-100","leave-to-class":"translate-y-full opacity-0"},{default:M(()=>[s.visible?(p(),x("div",Y_,[c("div",{class:Q(u(ae)("overflow-hidden transition-all duration-300",o.value?"max-h-[400px]":"max-h-0"))},[_e(s.$slots,"default",{isExpanded:o.value})],2),_e(s.$slots,"footer",{isExpanded:o.value,toggle:t})])):A("",!0)]),_:3})]))}}),Ur=J_,X_=q({__name:"StatusBadge",props:{label:{},severity:{default:"default"}},setup(e){function o(t){const s="inline-flex h-3.5 items-center justify-center rounded-full px-1 text-xxxs font-semibold uppercase";switch(t){case"danger":return`${s} bg-destructive-background text-white`;case"contrast":return`${s} bg-base-foreground text-base-background`;case"warn":return`${s} bg-warning-background text-base-background`;case"secondary":return`${s} bg-secondary-background text-base-foreground`;default:return`${s} bg-primary-background text-base-foreground`}}return a(o,"badgeClasses"),(t,s)=>(p(),x("span",{class:Q(o(t.severity))},R(t.label),3))}}),Ts=X_,Z_={class:"min-w-0 flex-1"},ek={class:"block truncate text-sm text-base-foreground"},tk={class:"flex flex-shrink-0 items-center gap-2"},ok={class:"text-xs text-base-foreground"},ak={key:3,class:"text-xs text-muted-foreground"},nk=q({__name:"ProgressToastItem",props:{job:{}},setup(e){const{t:o}=ue(),t=y(()=>Math.round(e.job.progress*100)),s=y(()=>e.job.status==="completed"),r=y(()=>e.job.status==="failed"),n=y(()=>e.job.status==="running"),l=y(()=>e.job.status==="created");return(i,d)=>(p(),x("div",{class:Q(u(ae)("flex items-center justify-between rounded-lg bg-modal-card-background px-4 py-3",s.value&&"opacity-50"))},[c("div",Z_,[c("span",ek,R(i.job.assetName),1)]),c("div",tk,[r.value?(p(),x(Z,{key:0},[d[0]||(d[0]=c("i",{class:"icon-[lucide--circle-alert] size-4 text-destructive-background"},null,-1)),L(Ts,{label:u(o)("progressToast.failed"),severity:"danger"},null,8,["label"])],64)):s.value?(p(),O(Ts,{key:1,label:u(o)("progressToast.finished"),severity:"contrast"},null,8,["label"])):n.value?(p(),x(Z,{key:2},[d[1]||(d[1]=c("i",{class:"icon-[lucide--loader-circle] size-4 animate-spin text-base-foreground"},null,-1)),c("span",ok,R(t.value)+"% ",1)],64)):l.value?(p(),x("span",ak,R(u(o)("progressToast.pending")),1)):A("",!0)])],2))}}),sk=nk,rk={class:"flex h-12 items-center justify-between border-b border-border-default px-4"},lk={class:"text-sm font-bold text-base-foreground"},ik={class:"flex items-center gap-2"},uk={class:"flex min-w-30 flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},dk={class:"relative max-h-75 overflow-y-auto px-4 py-4"},ck={key:0,class:"absolute right-1 top-4 h-12 w-1 rounded-full bg-muted-foreground"},pk={class:"flex flex-col gap-2"},fk={key:1,class:"flex flex-col items-center justify-center py-6 text-center"},vk={class:"text-sm text-muted-foreground"},mk={class:"flex h-12 items-center justify-between gap-2 border-t border-border-default px-4"},gk={class:"flex min-w-0 flex-1 items-center gap-2 text-sm"},hk={class:"min-w-0 flex-1 truncate font-bold text-base-foreground"},yk={class:"min-w-0 truncate font-bold text-base-foreground"},bk={class:"min-w-0 truncate font-bold text-base-foreground"},wk={class:"flex flex-shrink-0 items-center gap-2"},_k={key:0,class:"whitespace-nowrap text-sm text-muted-foreground"},kk={class:"flex items-center"},Ck=q({__name:"ModelImportProgressDialog",setup(e){const{t:o}=ue(),t=tu(),s=y(()=>t.hasDownloads),r=E(!1),n=E("all"),l=E(null);bt(()=>!r.value,()=>l.value?.hide());const i=[{value:"all",label:"all"},{value:"completed",label:"completed"},{value:"failed",label:"failed"}];function d(I){l.value?.toggle(I)}a(d,"onFilterClick");function f(I){n.value=I,l.value?.hide()}a(f,"setFilter");const m=y(()=>t.downloadList),v=y(()=>t.finishedDownloads.filter(I=>I.status==="completed")),h=y(()=>t.finishedDownloads.filter(I=>I.status==="failed")),g=y(()=>t.hasActiveDownloads),b=y(()=>m.value.find(I=>I.status==="running")?.assetName||o("progressToast.downloadingModel")),S=y(()=>v.value.length+h.value.length),k=y(()=>m.value.length),w=y(()=>{switch(n.value){case"completed":return v.value;case"failed":return h.value;default:return m.value}}),C=y(()=>{const I=i.find(_=>_.value===n.value);return o(I?`progressToast.filter.${I.label}`:"progressToast.filter.all")});function T(){t.clearFinishedDownloads(),r.value=!1}return a(T,"closeDialog"),(I,_)=>(p(),O(Ur,{expanded:r.value,"onUpdate:expanded":_[0]||(_[0]=N=>r.value=N),visible:s.value},{default:M(()=>[c("div",rk,[c("h3",lk,R(u(o)("progressToast.importingModels")),1),c("div",ik,[L(X,{variant:"secondary",size:"md",class:"gap-1.5 px-2",onClick:d},{default:M(()=>[_[1]||(_[1]=c("i",{class:"icon-[lucide--list-filter] size-4"},null,-1)),c("span",null,R(C.value),1),_[2]||(_[2]=c("i",{class:"icon-[lucide--chevron-down] size-3"},null,-1))]),_:1}),L(u(wt),{ref_key:"filterPopoverRef",ref:l,dismissable:!0,"close-on-escape":!0,unstyled:"","base-z-index":9999,pt:{root:{class:"absolute z-50"},content:{class:"bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg"}}},{default:M(()=>[c("div",uk,[(p(),x(Z,null,ye(i,N=>L(X,{key:N.value,variant:"textonly",size:"sm",class:Q(u(ae)("w-full justify-start bg-transparent",n.value===N.value&&"bg-secondary-background-selected")),onClick:a($=>f(N.value),"onClick")},{default:M(()=>[Ie(R(u(o)(`progressToast.filter.${N.label}`)),1)]),_:2},1032,["class","onClick"])),64))])]),_:1},512)])]),c("div",dk,[w.value.length>3?(p(),x("div",ck)):A("",!0),c("div",pk,[(p(!0),x(Z,null,ye(w.value,N=>(p(),O(sk,{key:N.taskId,job:N},null,8,["job"]))),128))]),w.value.length===0?(p(),x("div",fk,[c("span",vk,R(u(o)("progressToast.noImportsInQueue",{filter:C.value})),1)])):A("",!0)])]),footer:M(({toggle:N})=>[c("div",mk,[c("div",gk,[g.value?(p(),x(Z,{key:0},[_[3]||(_[3]=c("i",{class:"icon-[lucide--loader-circle] size-4 flex-shrink-0 animate-spin text-muted-foreground"},null,-1)),c("span",hk,R(b.value),1)],64)):h.value.length>0?(p(),x(Z,{key:1},[_[4]||(_[4]=c("i",{class:"icon-[lucide--circle-alert] size-4 flex-shrink-0 text-destructive-background"},null,-1)),c("span",yk,R(u(o)("progressToast.downloadsFailed",{count:h.value.length})),1)],64)):(p(),x(Z,{key:2},[_[5]||(_[5]=c("i",{class:"icon-[lucide--check-circle] size-4 flex-shrink-0 text-jade-600"},null,-1)),c("span",bk,R(u(o)("progressToast.allDownloadsCompleted")),1)],64))]),c("div",wk,[g.value?(p(),x("span",_k,R(u(o)("progressToast.progressCount",{completed:S.value,total:k.value})),1)):A("",!0),c("div",kk,[L(X,{variant:"muted-textonly",size:"icon","aria-label":r.value?u(o)("contextMenu.Collapse"):u(o)("contextMenu.Expand"),onClick:ke(N,["stop"])},{default:M(()=>[c("i",{class:Q(u(ae)("size-4",r.value?"icon-[lucide--chevron-down]":"icon-[lucide--chevron-up]"))},null,2)]),_:2},1032,["aria-label","onClick"]),g.value?A("",!0):(p(),O(X,{key:0,variant:"muted-textonly",size:"icon","aria-label":u(o)("g.close"),onClick:ke(T,["stop"])},{default:M(()=>_[6]||(_[6]=[c("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"]))])])])]),_:1},8,["expanded","visible"]))}}),Sk=Ck,Wa=$l(),xk=10080*60*1e3;const Fr=uo("versionCompatibility",()=>{const e=Hs(),o=ne(),t=y(()=>Ou.app_version),s=y(()=>e.systemStats?.system?.comfyui_version??""),r=y(()=>e.systemStats?.system?.required_frontend_version??""),n=y(()=>!t.value||!r.value||!(0,Wa.valid)(t.value)||!(0,Wa.valid)(r.value)?!1:(0,Wa.gt)(r.value,t.value)),l=y(()=>!1),i=y(()=>n.value),d=y(()=>!t.value||!s.value||!r.value?null:`${t.value}-${s.value}-${r.value}`),f=ml("comfy.versionMismatch.dismissals",{},localStorage,{serializer:{read:a(w=>{try{return JSON.parse(w)}catch{return{}}},"read"),write:a(w=>JSON.stringify(w),"write")}}),m=y(()=>{if(!d.value)return!1;const w=f.value[d.value];return w?Date.now()<w:!1}),v=y(()=>o.get("Comfy.VersionCompatibility.DisableWarnings")),h=y(()=>i.value&&!m.value&&!v.value),g=y(()=>n.value?{type:"outdated",frontendVersion:t.value,requiredVersion:r.value}:null);async function b(){e.systemStats||await gl(e.isInitialized)}a(b,"checkVersionCompatibility");function S(){if(!d.value)return;const w=Date.now()+xk;f.value={...f.value,[d.value]:w}}a(S,"dismissWarning");async function k(){await b()}return a(k,"initialize"),{frontendVersion:t,backendVersion:s,requiredFrontendVersion:r,hasVersionMismatch:i,shouldShowWarning:h,warningMessage:g,isFrontendOutdated:n,isFrontendNewer:l,checkVersionCompatibility:b,dismissWarning:S,initialize:k}});function Tk(e={}){const{immediate:o=!1}=e,{t}=ue(),s=oo(),r=Fr();let n=!1;const l=a(()=>{if(n)return;const i=r.warningMessage;if(!i)return;const d=t("g.frontendOutdated",{frontendVersion:i.frontendVersion,requiredVersion:i.requiredVersion}),f=t("g.versionMismatchWarningMessage",{warning:t("g.versionMismatchWarning"),detail:d});s.addAlert(f),n=!0,r.dismissWarning()},"showWarning");return Re(async()=>{o&&(await Ue(),bt(()=>r.shouldShowWarning,()=>{l()},{immediate:!0,once:!0}))}),{showWarning:l,shouldShowWarning:y(()=>r.shouldShowWarning),dismissWarning:r.dismissWarning,hasVersionMismatch:y(()=>r.hasVersionMismatch)}}a(Tk,"useFrontendVersionMismatchWarning");function Nk(){const e=sr(),o=Co();let t=!1,s=0;Ne.addEventListener("graphChanged",()=>{o.mode==="change"&&(s?t=!0:(t=!1,Y.queuePrompt(0,o.batchCount),s++))}),e.$subscribe(async()=>{s=e.count,!s&&!Y.lastExecutionError&&(o.mode==="instant"||o.mode==="change"&&t)&&(t=!1,await Y.queuePrompt(0,o.batchCount))},{detached:!0})}a(Nk,"setupAutoQueueHandler");var Ik={class:"flex flex-col p-1"},Pk=["onClick"],$k=q({inheritAttrs:!1,__name:"Popover",props:{entries:{},icon:{},to:{}},setup(e){return(o,t)=>(p(),O(u(fi),null,{default:M(({close:s})=>[L(u(ci),{"as-child":""},{default:M(()=>[_e(o.$slots,"button",{},()=>[L(X,{size:"icon"},{default:M(()=>[c("i",{class:Q(o.icon??"icon-[lucide--ellipsis]")},null,2)]),_:1})])]),_:3}),L(u(vi),{to:o.to},{default:M(()=>[L(u(mi),lt({side:"bottom","side-offset":5,"collision-padding":10},o.$attrs,{class:"rounded-lg p-2 bg-base-background shadow-sm border border-border-subtle will-change-[transform,opacity] data-[state=open]:data-[side=top]:animate-slideDownAndFade data-[state=open]:data-[side=right]:animate-slideLeftAndFade data-[state=open]:data-[side=bottom]:animate-slideUpAndFade data-[state=open]:data-[side=left]:animate-slideRightAndFade"}),{default:M(()=>[_e(o.$slots,"default",{},()=>[c("div",Ik,[(p(!0),x(Z,null,ye(o.entries??[],(r,n)=>(p(),x("section",{key:n,class:"flex flex-col border-b-2 last:border-none border-border-subtle"},[(p(!0),x(Z,null,ye(r,({label:l,action:i,icon:d})=>(p(),x("div",{key:l,class:Q(u(ae)("flex flex-row gap-4 p-2 rounded-sm my-1",i&&"cursor-pointer hover:bg-secondary-background-hover")),onClick:a(()=>{i&&(i(),s())},"onClick")},[d?(p(),x("i",{key:0,class:Q(d)},null,2)):A("",!0),Ie(" "+R(l),1)],10,Pk))),128))]))),128))])]),L(u(pi),{class:"fill-base-background stroke-border-subtle"})]),_:2},1040)]),_:2},1032,["to"])]),_:3}))}}),On=$k,Mk=["data-tf-widget"],Dk=q({__name:"TypeformPopoverButton",props:{dataTfWidget:{}},setup(e){const o=Qe("feedbackRef");return bt(o,()=>{const t=document.createElement("script");t.src="//embed.typeform.com/next/embed.js",o.value?.appendChild(t)}),(t,s)=>(p(),O(On,null,{button:M(()=>[L(X,{variant:"inverted",class:"rounded-full size-12"},{default:M(()=>s[0]||(s[0]=[c("i",{class:"icon-[lucide--circle-question-mark] size-6"},null,-1)])),_:1})]),default:M(()=>[c("div",{ref_key:"feedbackRef",ref:o,"data-tf-auto-resize":"","data-tf-widget":t.dataTfWidget},null,8,Mk)]),_:1}))}}),Ns=Dk,Lk=["src"],Ak=["textContent"],Ek=q({__name:"DropZone",props:{onDragOver:{type:Function},onDragDrop:{type:Function},dropIndicator:{}},setup(e){const o=E(!1);return(t,s)=>t.onDragOver&&t.onDragDrop?(p(),x("div",{key:0,class:Q(u(ae)("rounded-lg ring-inset ring-primary-500",o.value&&"ring-4 bg-primary-500/10")),onDragover:s[1]||(s[1]=ke(r=>o.value=t.onDragOver?.(r),["prevent"])),onDragleave:s[2]||(s[2]=r=>o.value=!1),onDrop:s[3]||(s[3]=ke(r=>{t.onDragDrop(r),o.value=!1},["stop","prevent"]))},[_e(t.$slots,"default"),t.dropIndicator?(p(),x("div",{key:0,class:Q(u(ae)("flex flex-col items-center justify-center gap-2 border-dashed rounded-lg border h-25 border-border-subtle m-3 py-2",t.dropIndicator?.onClick&&"cursor-pointer")),onClick:s[0]||(s[0]=ke(r=>t.dropIndicator?.onClick?.(r),["prevent"]))},[t.dropIndicator?.imageUrl?(p(),x("img",{key:0,class:"h-23",src:t.dropIndicator?.imageUrl},null,8,Lk)):(p(),x(Z,{key:1},[t.dropIndicator.label?(p(),x("span",{key:0,textContent:R(t.dropIndicator.label)},null,8,Ak)):A("",!0),t.dropIndicator.iconClass?(p(),x("i",{key:1,class:Q(t.dropIndicator.iconClass)},null,2)):A("",!0)],64))],2)):A("",!0)],34)):_e(t.$slots,"default",{key:1})}}),Vk=Ek,Ok={class:"flex flex-col min-w-80 md:h-full"},Rk={key:0,"data-testid":"linear-run-button",class:"p-4 pb-6 border-t border-node-component-border"},Wk={key:1,class:"flex mt-4 gap-2"},Bk={"data-testid":"linear-workflow-info",class:"h-12 border-x border-border-subtle py-2 px-4 gap-2 bg-comfy-menu-bg flex items-center md:contain-size"},zk=["textContent"],Uk={key:0,class:"w-full border-t border-border-subtle"},Fk={class:"border gap-2 md:h-full border-[var(--interface-stroke)] bg-comfy-menu-bg flex flex-col px-2"},Gk={"data-testid":"linear-widgets",class:"grow-1 md:overflow-y-auto md:contain-size"},Hk={key:0,class:"w-full border-t-1 border-node-component-border"},jk={key:0,"data-testid":"linear-run-button",class:"p-4 pb-6 border-t border-node-component-border"},qk={key:1,class:"flex mt-4 gap-2"},Kk={class:"bg-base-foreground text-base-background rounded-sm flex h-8 p-1 pr-2 gap-2 items-center"},Qk={key:0,class:"icon-[lucide--check] size-5 bg-success-background"},Yk={key:1,class:"icon-[lucide--loader-circle] size-4 animate-spin"},Jk=["textContent"],Xk=q({__name:"LinearControls",props:{toastTo:{},notesTo:{},mobile:{type:Boolean}},setup(e,{expose:o}){const t=Ce(),s=it(),{batchCount:r}=ze(Co()),{isActiveSubscription:n}=vn(),l=Ve(),i=E(!0),{ready:d,start:f}=_l(5e3,{controls:!0,immediate:!1}),m=Je(Y.rootGraph.nodes);Oe(Y.rootGraph.events,"configured",()=>m.value=Y.rootGraph.nodes);function v(k){if(k.type!=="LoadImage")return;const w=k.widgets?.[0]?.value,C={type:"input",filename:`${w}`};return{iconClass:"icon-[lucide--image]",imageUrl:w?Ne.apiURL(`/view?${new URLSearchParams(C)}${Y.getPreviewFormatParam()}`):void 0,label:le("linearMode.dragAndDropImage"),onClick:a(()=>k.widgets?.[1]?.callback?.(void 0),"onClick")}}a(v,"getDropIndicator");function h(k){const w=v(k),C=ea(k);for(const T of C.widgets??[])T.slotMetadata=void 0;return{...C,hasErrors:!!s.lastNodeErrors?.[k.id],dropIndicator:w,onDragDrop:k.onDragDrop,onDragOver:k.onDragOver}}a(h,"nodeToNodeData");const g=y(()=>{const k=bl(m.value.filter(w=>w.mode===0&&w.widgets?.length).map(h).reverse(),w=>["MarkdownNote","Note"].includes(w.type));for(const w of k[0])for(const C of w.widgets??[])C.options={...C.options,read_only:!0};return k}),b={options:{precision:0,min:1,max:Fe?4:99},value:1,name:le("linearMode.runCount"),type:"number"};async function S(k){if(i.value)try{i.value=!1,f();const w="shiftKey"in k&&k.shiftKey?"Comfy.QueuePromptFront":"Comfy.QueuePrompt";r.value>1&&Le()?.trackUiButtonClicked({button_id:"queue_run_multiple_batches_submitted"}),await t.execute(w,{metadata:{subscribe_to_run:!1,trigger_source:"linear"}})}finally{i.value=!0}}return a(S,"runButtonClick"),o({runButtonClick:S}),(k,w)=>(p(),x(Z,null,[c("div",Ok,[k.mobile?(p(),x("section",Rk,[L(ss,{modelValue:u(r),"onUpdate:modelValue":w[0]||(w[0]=C=>qe(r)?r.value=C:null),widget:b,class:"*:[.min-w-0]:w-24 grid-cols-[auto_96px]!"},null,8,["modelValue"]),u(n)?(p(),x("div",Wk,[L(X,{variant:"primary",class:"grow-1",size:"lg",onClick:S},{default:M(()=>[w[4]||(w[4]=c("i",{class:"icon-[lucide--play]"},null,-1)),Ie(" "+R(u(le)("menu.run")),1)]),_:1}),u(s).isIdle?A("",!0):(p(),O(X,{key:0,variant:"destructive",size:"lg",class:"w-10 p-2",onClick:w[1]||(w[1]=C=>u(t).execute("Comfy.Interrupt"))},{default:M(()=>w[5]||(w[5]=[c("i",{class:"icon-[lucide--x]"},null,-1)])),_:1}))])):(p(),O(ns,{key:0,class:"w-full mt-4"}))])):A("",!0),c("section",Bk,[c("span",{class:"font-bold truncate",textContent:R(u(l).activeWorkflow?.filename)},null,8,zk),w[7]||(w[7]=c("div",{class:"flex-1"},null,-1)),g.value[0].length?(p(),O(On,{key:0,align:"start",class:"overflow-y-auto overflow-x-clip max-h-(--reka-popover-content-available-height) z-100",reference:k.notesTo,side:"left",to:k.notesTo},{button:M(()=>[L(X,{variant:"muted-textonly"},{default:M(()=>w[6]||(w[6]=[c("i",{class:"icon-[lucide--info]"},null,-1)])),_:1})]),default:M(()=>[c("div",null,[(p(!0),x(Z,null,ye(g.value[0],(C,T)=>(p(),x(Z,{key:C.id},[T!==0?(p(),x("div",Uk)):A("",!0),L(ja,{"node-data":C,style:be({background:u(Ka)(C.bgcolor)}),class:"py-3 gap-y-3 **:[.col-span-2]:grid-cols-1 not-has-[textarea]:flex-0 rounded-lg max-w-100"},null,8,["node-data","style"])],64))),128))])]),_:1},8,["reference","to"])):A("",!0),A("",!0)]),c("div",Fk,[c("section",Gk,[(p(!0),x(Z,null,ye(g.value[1],(C,T)=>(p(),x(Z,{key:C.id},[T!==0?(p(),x("div",Hk)):A("",!0),L(Vk,{"on-drag-over":C.onDragOver,"on-drag-drop":C.onDragDrop,"drop-indicator":k.mobile?void 0:C.dropIndicator,class:"text-muted-foreground"},{default:M(()=>[L(ja,{"node-data":C,class:Q(u(ae)("py-3 gap-y-3 **:[.col-span-2]:grid-cols-1 not-has-[textarea]:flex-0 rounded-lg",C.hasErrors&&"ring-2 ring-inset ring-node-stroke-error")),style:be({background:u(Ka)(C.bgcolor)})},null,8,["node-data","class","style"])]),_:2},1032,["on-drag-over","on-drag-drop","drop-indicator"])],64))),128))]),k.mobile?A("",!0):(p(),x("section",jk,[L(ss,{modelValue:u(r),"onUpdate:modelValue":w[2]||(w[2]=C=>qe(r)?r.value=C:null),widget:b,class:"*:[.min-w-0]:w-24 grid-cols-[auto_96px]!"},null,8,["modelValue"]),u(n)?(p(),x("div",qk,[L(X,{variant:"primary",class:"grow-1",size:"lg",onClick:S},{default:M(()=>[w[8]||(w[8]=c("i",{class:"icon-[lucide--play]"},null,-1)),Ie(" "+R(u(le)("menu.run")),1)]),_:1}),u(s).isIdle?A("",!0):(p(),O(X,{key:0,variant:"destructive",size:"lg",class:"w-10 p-2",onClick:w[3]||(w[3]=C=>u(t).execute("Comfy.Interrupt"))},{default:M(()=>w[9]||(w[9]=[c("i",{class:"icon-[lucide--x]"},null,-1)])),_:1}))])):(p(),O(ns,{key:0,class:"w-full mt-4"}))]))])]),(!u(d)||!i.value)&&k.toastTo?(p(),O(yt,{key:0,defer:"",to:k.toastTo},[c("div",Kk,[i.value?(p(),x("i",Qk)):(p(),x("i",Yk)),c("span",{textContent:R(u(le)("queue.jobAddedToQueue"))},null,8,Jk)])],8,["to"])):A("",!0),A("",!0)],64))}}),Ba=Xk,Zk=q({__name:"ZoomPane",setup(e){const o=Qe("zoomPane"),t=E(1),s=E(0),r=E(0);function n(m){const v=o.value;if(!v)return;t.value-=m.deltaY;const{x:h,y:g,width:b,height:S}=v.getBoundingClientRect(),k=m.clientX-h-b/2,w=m.clientY-g-S/2,C=1.1**(m.deltaY/-30);r.value=r.value*C-w*(C-1),s.value=s.value*C-k*(C-1)}a(n,"handleWheel");let l=!1;function i(m){if(m.button!==0)return;const v=o.value;v&&(v.parentElement?.focus(),v.setPointerCapture(m.pointerId),l=!0)}a(i,"handleDown");function d(m){l&&(s.value+=m.movementX,r.value+=m.movementY)}a(d,"handleMove");const f=y(()=>{const m=1.1**(t.value/30);return`matrix(${[m,0,0,m,s.value,r.value].join(",")})`});return(m,v)=>(p(),x("div",{ref_key:"zoomPane",ref:o,class:"contain-size place-content-center",onWheel:n,onPointerdown:ke(i,["prevent"]),onPointermove:d,onPointerup:v[0]||(v[0]=h=>qe(l)?l.value=!1:l=!1),onPointercancel:v[1]||(v[1]=h=>qe(l)?l.value=!1:l=!1)},[_e(m.$slots,"default",{style:be({transform:f.value})})],544))}}),eC=Zk,tC=["src"],oC=["src"],aC=["textContent"],nC=q({__name:"ImagePreview",props:{src:{},mobile:{type:Boolean}},setup(e){const o=Qe("imageRef"),t=E(""),s=E("");return(r,n)=>(p(),x(Z,null,[r.mobile?(p(),x("img",{key:1,ref_key:"imageRef",ref:o,class:"w-full",src:r.src,onLoad:n[1]||(n[1]=()=>{u(o)&&(t.value=`${u(o).naturalWidth}`,s.value=`${u(o).naturalHeight}`)})},null,40,oC)):(p(),O(eC,{key:0,class:"flex-1 w-full"},{default:M(l=>[c("img",lt({ref_key:"imageRef",ref:o,src:r.src},l,{class:"h-full object-contain w-full",onLoad:n[0]||(n[0]=()=>{u(o)&&(t.value=`${u(o).naturalWidth}`,s.value=`${u(o).naturalHeight}`)})}),null,16,tC)]),_:1})),c("span",{class:"self-center md:z-10",textContent:R(`${t.value} x ${s.value}`)},null,8,aC)],64))}}),sC=nC,rC={class:"pointer-events-none absolute top-0 left-0 size-full"},lC=q({__name:"Preview3d",props:{modelUrl:{}},setup(e){const o=Qe("containerRef"),t=Su();return ie([o,()=>e.modelUrl],async()=>{!o.value||!e.modelUrl||await t.initializeStandaloneViewer(o.value,e.modelUrl)}),(s,r)=>(p(),x("div",{ref_key:"containerRef",ref:o,class:"relative w-full h-full",onMouseenter:r[6]||(r[6]=(...n)=>u(t).handleMouseEnter&&u(t).handleMouseEnter(...n)),onMouseleave:r[7]||(r[7]=(...n)=>u(t).handleMouseLeave&&u(t).handleMouseLeave(...n)),onResize:r[8]||(r[8]=(...n)=>u(t).handleResize&&u(t).handleResize(...n))},[c("div",rC,[u(t).animations.value&&u(t).animations.value.length>0?(p(),O(hu,{key:0,animations:u(t).animations.value,"onUpdate:animations":r[0]||(r[0]=n=>u(t).animations.value=n),playing:u(t).playing.value,"onUpdate:playing":r[1]||(r[1]=n=>u(t).playing.value=n),"selected-speed":u(t).selectedSpeed.value,"onUpdate:selectedSpeed":r[2]||(r[2]=n=>u(t).selectedSpeed.value=n),"selected-animation":u(t).selectedAnimation.value,"onUpdate:selectedAnimation":r[3]||(r[3]=n=>u(t).selectedAnimation.value=n),"animation-progress":u(t).animationProgress.value,"onUpdate:animationProgress":r[4]||(r[4]=n=>u(t).animationProgress.value=n),"animation-duration":u(t).animationDuration.value,"onUpdate:animationDuration":r[5]||(r[5]=n=>u(t).animationDuration.value=n),onSeek:u(t).handleSeek},null,8,["animations","playing","selected-speed","selected-animation","animation-progress","animation-duration","onSeek"])):A("",!0)])],544))}}),iC=lC,uC=["src"],dC=["textContent"],cC=q({__name:"VideoPreview",props:{src:{}},setup(e){const o=Qe("videoRef"),t=E(""),s=E("");return(r,n)=>(p(),x(Z,null,[c("video",lt({ref_key:"videoRef",ref:o,src:r.src,controls:""},r.$attrs,{onLoadedmetadata:n[0]||(n[0]=()=>{u(o)&&(t.value=`${u(o).videoWidth}`,s.value=`${u(o).videoHeight}`)})}),null,16,uC),c("span",{class:"self-center z-10",textContent:R(`${t.value} x ${s.value}`)},null,8,dC)],64))}}),pC=cC;const Gr={"3d":{content:le("sideToolbar.mediaAssets.filter3D"),iconClass:"icon-[lucide--box]"},audio:{content:le("sideToolbar.mediaAssets.filterAudio"),iconClass:"icon-[lucide--audio-lines]"},images:{content:le("sideToolbar.mediaAssets.filterImage"),iconClass:"icon-[lucide--image]"},text:{content:le("sideToolbar.mediaAssets.filterText"),iconClass:"icon-[lucide--text]"},video:{content:le("sideToolbar.mediaAssets.filterVideo"),iconClass:"icon-[lucide--video]"}};function Lt(e){return e?e.isVideo?"video":e.mediaType:""}a(Lt,"getMediaType");var fC={key:0,"data-testid":"linear-output-info",class:"flex flex-wrap gap-2 p-1 w-full md:z-10 tabular-nums justify-between text-sm"},vC={class:"flex gap-3 text-nowrap"},mC={class:"flex gap-3 justify-self-end"},gC=["src"],hC=["textContent"],yC={key:6,class:"pointer-events-none flex-1 max-h-full md:contain-size brightness-50 opacity-10",src:pu},bC=q({__name:"LinearPreview",props:{latentPreview:{},runButtonClick:{type:Function},selectedItem:{},selectedOutput:{},mobile:{type:Boolean}},setup(e){const o=bu(),t={month:"short",day:"numeric",year:"numeric"},s={hour:"numeric",minute:"numeric",second:"numeric"};function r(f){if(!f)return"";const m=new Date(f);return`${jn(m,t)} | ${jn(m,s)}`}a(r,"formatTime");const n=y(()=>{if(!e.selectedItem)return[];const f=Qa(e.selectedItem.user_metadata);if(!f)return[];const{allOutputs:m}=f;return[{content:r(e.selectedItem.created_at)},{content:Vu(f.executionTimeInSeconds)},m&&{content:le("g.asset",m.length)},(e.selectedOutput&&Gr[Lt(e.selectedOutput)])??{}].filter(v=>!!v)});function l(f){const m=Qa(f?.user_metadata);for(const v of m?.allOutputs??[])Io(v.url,v.filename)}a(l,"downloadAsset");async function i(f){if(!f)return;const{workflow:m}=await lu(f);if(!m)return;if(m.id!==Y.rootGraph.id)return Y.loadGraphData(m);const v=Ve().activeWorkflow?.changeTracker;if(!v)return Y.loadGraphData(m);v.redoQueue=[],v.updateState([m],v.undoQueue)}a(i,"loadWorkflow");async function d(f){e.runButtonClick&&(await i(e.selectedItem),await new Promise(m=>setTimeout(m,500)),bi(Bl(Y.rootGraph),"afterQueued"),e.runButtonClick(f))}return a(d,"rerun"),(f,m)=>(p(),x(Z,null,[f.selectedItem?(p(),x("section",fC,[c("div",vC,[(p(!0),x(Z,null,ye(n.value,({content:v,iconClass:h},g)=>(p(),x("div",{key:g,class:"flex items-center justify-items-center gap-1 tabular-nums"},[h?(p(),x("i",{key:0,class:Q(h)},null,2)):A("",!0),Ie(" "+R(v),1)]))),128))]),c("div",mC,[L(X,{size:"md",onClick:d},{default:M(()=>[Ie(R(u(le)("linearMode.rerun"))+" ",1),m[2]||(m[2]=c("i",{class:"icon-[lucide--refresh-cw]"},null,-1))]),_:1}),L(X,{size:"md",onClick:m[0]||(m[0]=()=>i(f.selectedItem))},{default:M(()=>[Ie(R(u(le)("linearMode.reuseParameters"))+" ",1),m[3]||(m[3]=c("i",{class:"icon-[lucide--list-restart]"},null,-1))]),_:1}),m[5]||(m[5]=c("div",{class:"border-r border-border-subtle mx-1"},null,-1)),L(X,{size:"icon",onClick:m[1]||(m[1]=()=>{f.selectedOutput?.url&&u(Io)(f.selectedOutput.url)})},{default:M(()=>m[4]||(m[4]=[c("i",{class:"icon-[lucide--download]"},null,-1)])),_:1}),L(On,{entries:[[{icon:"icon-[lucide--download]",label:u(le)("linearMode.downloadAll"),action:a(()=>l(f.selectedItem),"action")}],[{icon:"icon-[lucide--trash-2]",label:u(le)("queue.jobMenu.deleteAsset"),action:a(()=>u(o).confirmDelete(f.selectedItem),"action")}]]},null,8,["entries"])])])):A("",!0),f.latentPreview??u(Lt)(f.selectedOutput)==="images"?(p(),O(sC,{key:1,mobile:f.mobile,src:f.latentPreview??f.selectedOutput.url},null,8,["mobile","src"])):u(Lt)(f.selectedOutput)==="video"?(p(),O(pC,{key:2,src:f.selectedOutput.url,class:"object-contain flex-1 md:contain-size"},null,8,["src"])):u(Lt)(f.selectedOutput)==="audio"?(p(),x("audio",{key:3,class:"w-full m-auto",controls:"",src:f.selectedOutput.url},null,8,gC)):u(Lt)(f.selectedOutput)==="text"?(p(),x("article",{key:4,class:"w-full max-w-128 m-auto my-12 overflow-y-auto",textContent:R(f.selectedOutput.url)},null,8,hC)):u(Lt)(f.selectedOutput)==="3d"?(p(),O(iC,{key:5,"model-url":f.selectedOutput.url},null,8,["model-url"])):(p(),x("img",yC))],64))}}),Is=bC,wC={key:0,class:"h-full flex flex-col w-14 shrink-0 overflow-hidden items-center p-2"},_C={key:0,"data-testid":"linear-job",class:"py-3 not-md:h-24 md:w-full aspect-square px-1 relative"},kC={key:0,class:"icon-[lucide--loader-circle] size-full animate-spin"},CC={key:1,class:"icon-[lucide--ellipsis] size-full animate-pulse"},SC=["textContent"],xC=["src","onClick"],TC=["onClick"],NC=q({__name:"OutputHistory",props:{scrollResetButtonTo:{},mobile:{type:Boolean}},emits:["updateSelection"],setup(e,{expose:o,emit:t}){const s=E(!1),r=ou("output"),n=Vt(),l=ne(),i=st().getSidebarTabs().find(_=>_.id==="workflows");r.fetchMediaList();const d=t;o({onWheel:I});const f=E([-1,0]);ie(f,()=>{const[_]=f.value;d("updateSelection",[r.media.value[_],S.value,f.value[0]<=0])});const m=Qe("outputsRef"),{reset:v}=ul(m,r.loadMore,{canLoadMore:a(()=>r.hasMore.value,"canLoadMore")});function h(){v(),m.value?.scrollTo(0,0)}a(h,"resetOutputsScroll");const{y:g}=rn(m);ie(f,()=>{const[_,N]=f.value;if(!m.value)return;const $=m.value?.children?.[_]?.children?.[N];$&&$.scrollIntoView({block:"nearest"})});function b(_){const N=Qa(_?.user_metadata);return N?.allOutputs?N.allOutputs:[]}a(b,"allOutputs");const S=y(()=>{const[_,N]=f.value;if(_<0)return;const $=b(r.media.value[_])[N];return $||b(r.media.value[0])[0]});ie(()=>r.media.value,(_,N)=>{if(_.length===N.length||N.length===0)return;if(f.value[0]<=0){f.value=[0,0];return}const $=sa(N[f.value[0]]?.id),V=sa(_).findIndex(B=>B?.id===$);V===-1?f.value=[0,0]:f.value=[V,f.value[1]]});function k(){const[_,N]=f.value;if(_<0||N<0){f.value=[0,0];return}const $=r.media.value[_];if(b($)[N+1]){f.value=[_,N+1];return}r.media.value[_+1]&&(f.value=[_+1,0])}a(k,"gotoNextOutput");function w(){const[_,N]=f.value;if(N>0){f.value=[_,N-1];return}if(_>0){const $=r.media.value[_-1];f.value=[_-1,b($).length-1];return}f.value=[0,0]}a(w,"gotoPreviousOutput");let C=new Xo(document.body),T=0;function I(_){if(!(!_.ctrlKey&&!_.metaKey)){if(_.preventDefault(),_.stopPropagation(),!C.isTrackpadGesture(_)){_.deltaY>0?k():w();return}for(T+=_.deltaY;T>=60;)T-=60,k();for(;T<=-60;)T+=60,w()}}return a(I,"onWheel"),Oe(document.body,"keydown",_=>{_.key!=="ArrowDown"&&_.key!=="ArrowUp"||_.target instanceof HTMLTextAreaElement||_.target instanceof HTMLInputElement||(_.preventDefault(),_.stopPropagation(),_.key==="ArrowDown"?k():w())}),(_,N)=>(p(),x(Z,null,[c("div",lt({class:u(ae)("min-w-38 flex bg-comfy-menu-bg md:h-full border-border-subtle",u(l).get("Comfy.Sidebar.Location")==="right"?"flex-row-reverse border-l":"md:border-r")},_.$attrs),[_.mobile?A("",!0):(p(),x("div",wC,[u(i)?(p(),O(Ot,{key:0,icon:u(i).icon,"icon-badge":u(i).iconBadge,tooltip:u(i).tooltip,label:u(i).label||u(i).title,class:Q(u(i).id+"-tab-button"),selected:s.value,"is-small":u(l).get("Comfy.Sidebar.Size")==="small",onClick:N[0]||(N[0]=$=>s.value=!s.value)},null,8,["icon","icon-badge","tooltip","label","class","selected","is-small"])):A("",!0),L(Er),N[1]||(N[1]=c("div",{class:"flex-1"},null,-1)),L(Ar)])),N[3]||(N[3]=c("div",{class:"border-border-subtle md:border-r"},null,-1)),s.value?(p(),O(cu,{key:1,class:"min-w-50 grow-1"})):(p(),x("article",{key:2,ref_key:"outputsRef",ref:m,"data-testid":"linear-outputs",class:"h-24 md:h-full min-w-24 grow-1 p-3 overflow-x-auto overflow-y-clip md:overflow-y-auto md:overflow-x-clip md:border-r-1 border-node-component-border flex md:flex-col items-center contain-size"},[u(n).runningTasks.length>0||u(n).pendingTasks.length>0?(p(),x("section",_C,[u(n).runningTasks.length>0?(p(),x("i",kC)):(p(),x("i",CC)),u(n).runningTasks.length+u(n).pendingTasks.length>1?(p(),x("div",{key:2,class:"absolute top-0 right-0 p-1 min-w-5 h-5 flex justify-center items-center rounded-full bg-primary-background text-text-primary",textContent:R(u(n).runningTasks.length+u(n).pendingTasks.length)},null,8,SC)):A("",!0)])):A("",!0),(p(!0),x(Z,null,ye(u(r).media.value,($,V)=>(p(),x(Z,{key:V},[N[2]||(N[2]=c("div",{class:"border-border-subtle not-md:border-l md:border-t first:border-none not-md:h-21 md:w-full m-3"},null,-1)),(p(!0),x(Z,null,ye(b($),(B,D)=>(p(),x(Z,{key:D},[u(Lt)(B)==="images"?(p(),x("img",{key:0,class:Q(u(ae)("p-1 rounded-lg aspect-square object-cover not-md:h-20 md:w-full",V===f.value[0]&&D===f.value[1]&&"border-2")),src:B.url,onClick:a(U=>f.value=[V,D],"onClick")},null,10,xC)):(p(),x("div",{key:1,class:Q(u(ae)("p-1 rounded-lg aspect-square w-full",V===f.value[0]&&D===f.value[1]&&"border-2")),onClick:a(U=>f.value=[V,D],"onClick")},[c("i",{class:Q(u(ae)(u(Gr)[u(Lt)(B)]?.iconClass,"size-full"))},null,2)],10,TC))],64))),128))],64))),128))],512))],16),u(g)&&_.scrollResetButtonTo?(p(),O(yt,{key:0,to:_.scrollResetButtonTo},[L(X,{class:Q(u(ae)("p-3 size-10 bg-base-foreground",u(l).get("Comfy.Sidebar.Location")==="left"?"left-4":"right-4")),onClick:h},{default:M(()=>N[4]||(N[4]=[c("i",{class:"icon-[lucide--arrow-up] size-4 bg-base-background"},null,-1)])),_:1},8,["class"])],8,["to"])):A("",!0)],64))}}),za=NC,IC={class:"workflow-tabs-container pointer-events-auto h-9.5 w-full"},PC={class:"flex h-full items-center"},$C={key:0,class:"justify-center border-border-subtle border-t overflow-y-scroll h-[calc(100%-38px)] bg-comfy-menu-bg"},MC={class:"flex flex-col text-muted-foreground"},DC={class:"text-base-foreground flex items-center gap-4 justify-end m-4"},LC=["textContent"],AC={class:"absolute z-20 bottom-4 right-4 text-base-foreground flex items-center gap-4"},EC=["textContent"],VC=q({__name:"LinearView",setup(e){const o=Wo(),t=ne(),s=un(pa).smaller("md"),r=E(!1);bt(()=>o.latestPreview[0],()=>r.value=!0);const n=E(),l=E(),i=E(!0),d=Qe("outputHistoryRef"),f=Qe("topLeftRef"),m=Qe("topRightRef"),v=Qe("bottomLeftRef"),h=Qe("bottomRightRef"),g=Qe("linearWorkflowRef");return(b,S)=>(p(),x("div",{class:"absolute w-full h-full",onWheelCapture:S[4]||(S[4]=k=>u(d)?.onWheel(k))},[c("div",IC,[c("div",PC,[L(Or),L(Vr)])]),u(s)?(p(),x("div",$C,[c("div",MC,[L(Is,{"latent-preview":i.value&&r.value?u(o).latestPreview[0]:void 0,"run-button-click":u(g)?.runButtonClick,"selected-item":n.value,"selected-output":l.value,mobile:""},null,8,["latent-preview","run-button-click","selected-item","selected-output"])]),L(za,{ref_key:"outputHistoryRef",ref:d,mobile:"",onUpdateSelection:S[0]||(S[0]=([k,w,C])=>{n.value=k,l.value=w,i.value=C,r.value=!1})},null,512),L(Ba,{ref_key:"linearWorkflowRef",ref:g,mobile:""},null,512),c("div",DC,[c("a",{href:"https://form.typeform.com/to/gmVqFi8l",textContent:R(u(le)("linearMode.beta"))},null,8,LC),L(Ns,{"data-tf-widget":"gmVqFi8l"})])])):(p(),O(u(Ua),{key:1,class:"h-[calc(100%-38px)] w-full bg-comfy-menu-secondary-bg",pt:{gutter:{class:"bg-transparent w-4 -mx-3"}},onResizestart:S[3]||(S[3]=({originalEvent:k})=>k.preventDefault())},{default:M(()=>[L(u(At),{id:"linearLeftPanel",size:1,class:"min-w-min outline-none"},{default:M(()=>[u(t).get("Comfy.Sidebar.Location")==="left"?(p(),O(za,{key:0,ref_key:"outputHistoryRef",ref:d,"scroll-reset-button-to":u(Xt)(u(v))??void 0,onUpdateSelection:S[1]||(S[1]=([k,w,C])=>{n.value=k,l.value=w,i.value=C,r.value=!1})},null,8,["scroll-reset-button-to"])):(p(),O(Ba,{key:1,ref_key:"linearWorkflowRef",ref:g,"toast-to":u(Xt)(u(v))??void 0,"notes-to":u(Xt)(u(f))??void 0},null,8,["toast-to","notes-to"])),S[5]||(S[5]=c("div",null,null,-1))]),_:1}),L(u(At),{id:"linearCenterPanel",size:98,class:"flex flex-col min-w-min gap-4 mx-2 px-10 pt-8 pb-4 relative text-muted-foreground outline-none"},{default:M(()=>[L(Is,{"latent-preview":i.value&&r.value?u(o).latestPreview[0]:void 0,"run-button-click":u(g)?.runButtonClick,"selected-item":n.value,"selected-output":l.value},null,8,["latent-preview","run-button-click","selected-item","selected-output"]),c("div",{ref_key:"topLeftRef",ref:f,class:"absolute z-21 top-4 left-4"},null,512),c("div",{ref_key:"topRightRef",ref:m,class:"absolute z-21 top-4 right-4"},null,512),c("div",{ref_key:"bottomLeftRef",ref:v,class:"absolute z-20 bottom-4 left-4"},null,512),c("div",{ref_key:"bottomRightRef",ref:h,class:"absolute z-20 bottom-24 right-4"},null,512),c("div",AC,[c("div",{textContent:R(u(le)("linearMode.beta"))},null,8,EC),L(Ns,{"data-tf-widget":"gmVqFi8l",align:u(t).get("Comfy.Sidebar.Location")==="left"?"end":"start"},null,8,["align"])])]),_:1}),L(u(At),{id:"linearRightPanel",size:1,class:"min-w-min outline-none"},{default:M(()=>[u(t).get("Comfy.Sidebar.Location")==="left"?(p(),O(Ba,{key:0,ref_key:"linearWorkflowRef",ref:g,"toast-to":u(Xt)(u(h))??void 0,"notes-to":u(Xt)(u(m))??void 0},null,8,["toast-to","notes-to"])):(p(),O(za,{key:1,ref_key:"outputHistoryRef",ref:d,"scroll-reset-button-to":u(Xt)(u(h))??void 0,onUpdateSelection:S[2]||(S[2]=([k,w,C])=>{n.value=k,l.value=w,i.value=C,r.value=!1})},null,8,["scroll-reset-button-to"])),S[6]||(S[6]=c("div",null,null,-1))]),_:1})]),_:1}))],32))}}),OC=VC,RC={key:0,class:"flex items-center px-4 py-2"},WC={class:"flex w-full items-center justify-between py-2"},BC={class:"flex flex-col text-sm leading-normal font-medium"},zC={class:"text-muted"},UC={class:"h-full"},FC={class:"break-words whitespace-pre-wrap"},GC={class:"flex w-full items-center justify-between px-6 py-2 shadow-lg"},HC={class:"flex items-center text-base leading-none"},jC={class:"flex items-center"},qC={class:"flex items-center gap-4"},KC={key:0,class:"text-sm text-muted-foreground"},QC={class:"flex items-center"},YC=q({__name:"ManagerProgressToast",setup(e){const{t:o}=ue(),t=mu(),s=ne(),{runFullConflictAnalysis:r}=nr(),n=E(!1),l=E(0),i=y(()=>[{label:o("manager.installationQueue")},{label:o("manager.failed",{count:t.failedTasksIds.length})}]),d=y(()=>l.value===0?t.succeededTasksLogs:t.failedTasksLogs),f=y(()=>t.taskLogs.length>0),m=E(!1),v=E(!1),h=y(()=>t.isProcessingTasks||m.value),g=a(z=>{const K=d.value[z];if(!K)return!1;const H=t.taskQueue;return H?[...H.running_queue||[],...H.pending_queue||[]].some(J=>J.ui_id===K.taskId):!1},"isTaskInProgress"),b=y(()=>t.succeededTasksIds.length+t.failedTasksIds.length),S=y(()=>{const z=Object.keys(t.taskHistory).length,K=t.taskQueue;return z+(K?(K.running_queue?.length||0)+(K.pending_queue?.length||0):0)}),k=y(()=>m.value?o("manager.restartingBackend"):v.value?o("manager.extensionsSuccessfullyInstalled"):t.taskLogs.length?t.taskLogs.at(-1)?.taskName??o("manager.installingDependencies"):o("manager.installingDependencies")),w=E({});function C(z){w.value[z]=!w.value[z]}a(C,"togglePanel");const T=E(null),{y:I}=rn(T,{eventListenerOptions:{passive:!0}}),_=E(null),N=E(!1),$=y(()=>d.value?.at(-1)?.logs);function V(z){return z?Math.abs(z.scrollHeight-z.scrollTop-z.clientHeight)<20:!1}a(V,"isAtBottom");function B(){!_.value||N.value||(_.value.scrollTop=_.value.scrollHeight)}a(B,"scrollLastPanelToBottom");function D(){I.value=T.value?.scrollHeight??0}a(D,"scrollContentToBottom");function U(){N.value=!1}a(U,"resetUserScrolling");function j(z){const K=z.target;K===_.value&&(N.value=!V(K))}a(j,"handleScroll");function W(){N.value||B()}a(W,"onLogsAdded"),bt($,W,{flush:"post",deep:!0}),bt(()=>n.value,D),bt(()=>!n.value,U);function F(){t.resetTaskState(),n.value=!1}a(F,"closeToast");async function G(){const z=s.get("Comfy.Toast.DisableReconnectingToast");try{await s.set("Comfy.Toast.DisableReconnectingToast",!0),m.value=!0,Oe(Ne,"reconnected",a(async()=>{try{t.setStale(),await Ce().execute("Comfy.RefreshNodeDefinitions"),await nt().reloadCurrentWorkflow(),r()}finally{await s.set("Comfy.Toast.DisableReconnectingToast",z),m.value=!1,v.value=!0,setTimeout(()=>{F()},3e3)}},"onReconnect"),{once:!0}),await cr().rebootComfyUI()}catch(K){throw await s.set("Comfy.Toast.DisableReconnectingToast",z),m.value=!1,v.value=!1,F(),K}}return a(G,"handleRestart"),Re(()=>{D()}),rt(()=>{n.value=!1}),(z,K)=>(p(),O(Ur,{expanded:n.value,"onUpdate:expanded":K[1]||(K[1]=H=>n.value=H),visible:f.value},{default:M(()=>[n.value?(p(),x("div",RC,[L(u(el),{"active-index":l.value,"onUpdate:activeIndex":K[0]||(K[0]=H=>l.value=H),model:i.value,class:"w-full border-none",pt:{menu:{class:"border-none"},menuitem:{class:"font-medium"},action:{class:"px-4 py-2"}}},null,8,["active-index","model"])])):A("",!0),c("div",{ref_key:"sectionsContainerRef",ref:T,class:"scroll-container max-h-[450px] overflow-y-auto px-6 py-4",style:{scrollbarWidth:"thin",scrollbarColor:"rgba(156, 163, 175, 0.5) transparent"}},[(p(!0),x(Z,null,ye(d.value,(H,J)=>(p(),x("div",{key:J},[L(u(nn),{expanded:w.value[J]===!0,toggleable:"",class:"shadow-elevation-1 mt-2 rounded-lg"},{header:M(()=>[c("div",WC,[c("div",BC,[c("span",null,R(H.taskName),1),c("span",zC,R(g(J)?u(o)("g.inProgress"):u(o)("g.completed")+" ✓"),1)])])]),toggleicon:M(()=>[L(X,{variant:"textonly",class:"text-neutral-300",onClick:a(te=>C(J),"onClick")},{default:M(()=>[c("i",{class:Q(w.value[J]?"pi pi-chevron-right":"pi pi-chevron-down")},null,2)]),_:2},1032,["onClick"])]),default:M(()=>[c("div",{ref_for:!0,ref:J===d.value.length-1?te=>_.value=te:void 0,class:Q(["h-64 overflow-y-auto rounded-lg bg-black",{"h-64":J!==d.value.length-1,grow:J===d.value.length-1}]),onScroll:j},[c("div",UC,[(p(!0),x(Z,null,ye(H.logs,(te,he)=>(p(),x("div",{key:he,class:"text-muted"},[c("pre",FC,R(te),1)]))),128))])],34)]),_:2},1032,["expanded"])]))),128))],512)]),footer:M(({toggle:H})=>[c("div",GC,[c("div",HC,[c("div",jC,[h.value?(p(),x(Z,{key:0},[L(uu,{duration:"1s",class:"mr-2"}),c("span",null,R(k.value),1)],64)):v.value?(p(),x(Z,{key:1},[K[2]||(K[2]=c("span",{class:"mr-2"},"🎉",-1)),c("span",null,R(k.value),1)],64)):(p(),x(Z,{key:2},[K[3]||(K[3]=c("span",{class:"mr-2"},"✅",-1)),c("span",null,R(u(o)("manager.restartToApplyChanges")),1)],64))])]),c("div",qC,[h.value?(p(),x("span",KC,R(b.value)+" "+R(u(o)("g.progressCountOf"))+" "+R(S.value),1)):A("",!0),c("div",QC,[!h.value&&!v.value?(p(),O(X,{key:0,variant:"secondary",class:"mr-4 rounded-full border-2 border-base-foreground px-3 text-base-foreground hover:bg-secondary-background-hover",onClick:G},{default:M(()=>[Ie(R(u(o)("manager.applyChanges")),1)]),_:1})):v.value?A("",!0):(p(),O(X,{key:1,variant:"muted-textonly",size:"sm",class:"rounded-full font-bold","aria-label":u(o)(n.value?"contextMenu.Collapse":"contextMenu.Expand"),onClick:ke(H,["stop"])},{default:M(()=>[c("i",{class:Q(n.value?"pi pi-chevron-up":"pi pi-chevron-down")},null,2)]),_:2},1032,["aria-label","onClick"])),L(X,{variant:"muted-textonly",size:"sm",class:"rounded-full font-bold","aria-label":u(o)("g.close"),onClick:ke(F,["stop"])},{default:M(()=>K[4]||(K[4]=[c("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])])])]),_:1},8,["expanded","visible"]))}}),JC=YC,XC={class:"comfyui-body grid h-full w-full overflow-hidden"},ZC=q({__name:"GraphView",setup(e){Nk(),K_(),L_();const{t:o}=ue(),t=lo(),s=ne(),r=it(),n=St(),l=Vt(),i=tr(),d=Fr(),f=E(null),{linearMode:m}=ze(fe()),v=Le(),h=or();let g=!1,b=null,S=null,k=null;ie(()=>n.completedActivePalette,W=>{const F="dark-theme";W.light_theme?document.body.classList.remove(F):document.body.classList.add(F),Xe()&&ko().changeTheme({color:"rgba(0, 0, 0, 0)",symbolColor:W.colors.comfy_base["input-text"]})},{immediate:!0}),Xe()&&ie(()=>l.tasks,(W,F)=>{const G=new Set(F.filter(z=>z.isRunning).map(z=>z.promptId));W.filter(z=>G.has(z.promptId)&&z.isHistory).forEach(z=>{ko().Events.incrementUserProperty(`execution:${z.displayStatus.toLowerCase()}`,1),ko().Events.trackEvent("execution",{status:z.displayStatus.toLowerCase()})})},{deep:!0}),we(()=>{const W=s.get("Comfy.TextareaWidget.FontSize");document.documentElement.style.setProperty("--comfy-textarea-font-size",`${W}px`)}),we(()=>{const W=s.get("Comfy.TreeExplorer.ItemPadding");document.documentElement.style.setProperty("--comfy-tree-explorer-item-padding",`${W}px`)}),we(async()=>{const W=s.get("Comfy.Locale");if(W)try{await Vl(W),Ol.global.locale.value=W}catch(F){console.error(`Failed to switch to locale "${W}":`,F)}});const w=y(()=>s.get("Comfy.UseNewMenu"));we(()=>{w.value==="Disabled"?(Y.ui.menuContainer.style.setProperty("display","block"),Y.ui.restoreMenuPosition()):Y.ui.menuContainer.style.setProperty("display","none")}),we(()=>{l.maxHistoryItems=s.get("Comfy.Queue.MaxHistoryItems")});const C=a(()=>{const W=q_();Ce().registerCommands(W),kn().registerCoreMenuCommands(),Sa().registerCoreKeybindings(),Po().registerCoreSidebarTabs(),po().registerCoreBottomPanelTabs(),Y.extensionManager=st()},"init"),T=sr(),I=Po(),_=a(async W=>{T.update(W),await l.update(),(I.activeSidebarTabId==="assets"||m.value)&&await i.updateHistory()},"onStatus"),N=a(async()=>{await l.update(),I.activeSidebarTabId==="assets"&&await i.updateHistory()},"onExecutionSuccess"),$={severity:"error",summary:o("g.reconnecting")},V=a(()=>{s.get("Comfy.Toast.DisableReconnectingToast")||(t.remove($),t.add($))},"onReconnecting"),B=a(()=>{s.get("Comfy.Toast.DisableReconnectingToast")||(t.remove($),t.add({severity:"success",summary:o("g.reconnected"),life:2e3}))},"onReconnected");Re(()=>{Ne.addEventListener("status",_),Ne.addEventListener("execution_success",N),Ne.addEventListener("reconnecting",V),Ne.addEventListener("reconnected",B),r.bindExecutionEvents();try{C(),f.value?.prepend(Y.ui.menuContainer)}catch(W){console.error("Failed to init ComfyUI frontend",W)}}),rt(()=>{Ne.removeEventListener("status",_),Ne.removeEventListener("execution_success",N),Ne.removeEventListener("reconnecting",V),Ne.removeEventListener("reconnected",B),r.unbindExecutionEvents(),b&&(document.removeEventListener("visibilitychange",b),b=null),S&&(window.clearInterval(S),S=null),k&&(k.close(),k=null)}),Oe(window,"keydown",Sa().keybindHandler);const{wrapWithErrorHandling:D,wrapWithErrorHandlingAsync:U}=jt();Tk({immediate:!0}),Ue(()=>{d.initialize().catch(W=>{console.warn("Version compatibility check failed:",W)})});const j=a(()=>{br(()=>{if(Fe&&h.isAuthenticated&&!g&&(v?.trackUserLoggedIn(),g=!0),Fe&&v&&!b&&(b=a(()=>{v.trackPageVisibilityChanged({visibility_state:document.visibilityState})},"visibilityListener"),document.addEventListener("visibilitychange",b)),Fe&&v&&!S){k=new BroadcastChannel("comfyui-tab-count");const W=new Map,F=crypto.randomUUID();k.onmessage=G=>{G.data.type==="heartbeat"&&G.data.tabId!==F&&W.set(G.data.tabId,Date.now())},S=window.setInterval(()=>{const G=Date.now();W.forEach((K,H)=>{G-K>45e3&&W.delete(H)}),k?.postMessage({type:"heartbeat",tabId:F});const z=W.size+1;v.trackTabCount({tab_count:z})},6e4*5),k.postMessage({type:"heartbeat",tabId:F})}D(Sa().registerUserKeybindings)(),D(Xu().loadServerConfig)(Q_,s.get("Comfy.Server.ServerConfigValues")),U(ki().loadModelFolders)(),U(_n().loadNodeFrequencies)(),Ct().nodeSearchService.searchNode("")},1e3)},"onGraphReady");return(W,F)=>(p(),x(Z,null,[c("div",XC,[F[0]||(F[0]=c("div",{id:"comfyui-body-top",class:"comfyui-body-top"},null,-1)),F[1]||(F[1]=c("div",{id:"comfyui-body-bottom",class:"comfyui-body-bottom"},null,-1)),F[2]||(F[2]=c("div",{id:"comfyui-body-left",class:"comfyui-body-left"},null,-1)),F[3]||(F[3]=c("div",{id:"comfyui-body-right",class:"comfyui-body-right"},null,-1)),ce(c("div",{id:"graph-canvas-container",ref_key:"graphCanvasContainerRef",ref:f,class:"graph-canvas-container"},[L(N_,{onReady:j})],512),[[tt,!u(m)]]),u(m)?(p(),O(OC,{key:0})):A("",!0)]),L(Ku),L(M_),L(Sk),L(JC),u(Xe)()?A("",!0):(p(),O(sd,{key:0})),L(ad)],64))}}),OS=Be(ZC,[["__scopeId","data-v-0aea237e"]]);export{OS as default};
9
9
 
10
- //# sourceMappingURL=GraphView-BCkpNGgz.js.map
10
+ //# sourceMappingURL=GraphView-gYVCtm1V.js.map