comfyui-frontend-package 1.37.9__py3-none-any.whl → 1.37.10__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 (174) hide show
  1. comfyui_frontend_package/static/assets/{AboutPanel-BudnQURa.js → AboutPanel-C5DQxPC9.js} +2 -2
  2. comfyui_frontend_package/static/assets/{AboutPanel-BudnQURa.js.map → AboutPanel-C5DQxPC9.js.map} +1 -1
  3. comfyui_frontend_package/static/assets/{AudioPreviewPlayer-CHjtFZRu.js → AudioPreviewPlayer-BNO9ZjOM.js} +2 -2
  4. comfyui_frontend_package/static/assets/{AudioPreviewPlayer-CHjtFZRu.js.map → AudioPreviewPlayer-BNO9ZjOM.js.map} +1 -1
  5. comfyui_frontend_package/static/assets/{ComfyQueueButton-QhN0FmOY.js → ComfyQueueButton-D0Y-jFOd.js} +2 -2
  6. comfyui_frontend_package/static/assets/{ComfyQueueButton-QhN0FmOY.js.map → ComfyQueueButton-D0Y-jFOd.js.map} +1 -1
  7. comfyui_frontend_package/static/assets/{ExtensionPanel-D2sITMri.js → ExtensionPanel-CbCxE4jg.js} +2 -2
  8. comfyui_frontend_package/static/assets/{ExtensionPanel-D2sITMri.js.map → ExtensionPanel-CbCxE4jg.js.map} +1 -1
  9. comfyui_frontend_package/static/assets/GraphView-CepV6iZo.css +1 -0
  10. comfyui_frontend_package/static/assets/GraphView-_ZGu5uNf.js +15 -0
  11. comfyui_frontend_package/static/assets/GraphView-_ZGu5uNf.js.map +1 -0
  12. comfyui_frontend_package/static/assets/{KeybindingPanel-Dm6H1RN2.js → KeybindingPanel-Ceb51ttS.js} +2 -2
  13. comfyui_frontend_package/static/assets/{KeybindingPanel-Dm6H1RN2.js.map → KeybindingPanel-Ceb51ttS.js.map} +1 -1
  14. comfyui_frontend_package/static/assets/{LazyImage.vue_vue_type_script_setup_true_lang-C58MdJKR.js → LazyImage.vue_vue_type_script_setup_true_lang-BHcWsrBj.js} +2 -2
  15. comfyui_frontend_package/static/assets/{LazyImage.vue_vue_type_script_setup_true_lang-C58MdJKR.js.map → LazyImage.vue_vue_type_script_setup_true_lang-BHcWsrBj.js.map} +1 -1
  16. comfyui_frontend_package/static/assets/{LegacyCreditsPanel-Be7L1Af3.js → LegacyCreditsPanel-K_GDtrt_.js} +2 -2
  17. comfyui_frontend_package/static/assets/{LegacyCreditsPanel-Be7L1Af3.js.map → LegacyCreditsPanel-K_GDtrt_.js.map} +1 -1
  18. comfyui_frontend_package/static/assets/{Load3D-BAJ3yM4D.js → Load3D-CbCbkSys.js} +2 -2
  19. comfyui_frontend_package/static/assets/Load3D-CbCbkSys.js.map +1 -0
  20. comfyui_frontend_package/static/assets/{Load3D.vue_vue_type_script_setup_true_lang-DMHpkO9N.js → Load3D.vue_vue_type_script_setup_true_lang-3QcwinlP.js} +2 -2
  21. comfyui_frontend_package/static/assets/{Load3D.vue_vue_type_script_setup_true_lang-DMHpkO9N.js.map → Load3D.vue_vue_type_script_setup_true_lang-3QcwinlP.js.map} +1 -1
  22. comfyui_frontend_package/static/assets/{Media3DTop-DdNgRlQW.js → Media3DTop--kp0iekJ.js} +2 -2
  23. comfyui_frontend_package/static/assets/{Media3DTop-DdNgRlQW.js.map → Media3DTop--kp0iekJ.js.map} +1 -1
  24. comfyui_frontend_package/static/assets/{ServerConfigPanel-LtRqEOzu.js → ServerConfigPanel-BGnrWtif.js} +2 -2
  25. comfyui_frontend_package/static/assets/{ServerConfigPanel-LtRqEOzu.js.map → ServerConfigPanel-BGnrWtif.js.map} +1 -1
  26. comfyui_frontend_package/static/assets/{SubscriptionRequiredDialogContent-CDaF1jns.js → SubscriptionRequiredDialogContent-BMLw-0ti.js} +2 -2
  27. comfyui_frontend_package/static/assets/{SubscriptionRequiredDialogContent-CDaF1jns.js.map → SubscriptionRequiredDialogContent-BMLw-0ti.js.map} +1 -1
  28. comfyui_frontend_package/static/assets/{UserPanel-_xK7KdbS.js → UserPanel-BfOBqtyE.js} +2 -2
  29. comfyui_frontend_package/static/assets/{UserPanel-_xK7KdbS.js.map → UserPanel-BfOBqtyE.js.map} +1 -1
  30. comfyui_frontend_package/static/assets/{UserSelectView-B_VOz5XU.js → UserSelectView-hAFmUbm0.js} +2 -2
  31. comfyui_frontend_package/static/assets/{UserSelectView-B_VOz5XU.js.map → UserSelectView-hAFmUbm0.js.map} +1 -1
  32. comfyui_frontend_package/static/assets/{ValueControlPopover-BPJIx3_y.js → ValueControlPopover-BEbJxP9Z.js} +2 -2
  33. comfyui_frontend_package/static/assets/{ValueControlPopover-BPJIx3_y.js.map → ValueControlPopover-BEbJxP9Z.js.map} +1 -1
  34. comfyui_frontend_package/static/assets/{WidgetAudioUI-5nP5sugf.js → WidgetAudioUI-BuXP7XBQ.js} +2 -2
  35. comfyui_frontend_package/static/assets/{WidgetAudioUI-5nP5sugf.js.map → WidgetAudioUI-BuXP7XBQ.js.map} +1 -1
  36. comfyui_frontend_package/static/assets/{WidgetButton-Cd9G_fIM.js → WidgetButton-vKBzo4q0.js} +2 -2
  37. comfyui_frontend_package/static/assets/{WidgetButton-Cd9G_fIM.js.map → WidgetButton-vKBzo4q0.js.map} +1 -1
  38. comfyui_frontend_package/static/assets/{WidgetColorPicker-x6uZPjSf.js → WidgetColorPicker-FoC3o0Lp.js} +2 -2
  39. comfyui_frontend_package/static/assets/{WidgetColorPicker-x6uZPjSf.js.map → WidgetColorPicker-FoC3o0Lp.js.map} +1 -1
  40. comfyui_frontend_package/static/assets/{WidgetGalleria-DHPc3hwg.js → WidgetGalleria-CV4Nv2wv.js} +2 -2
  41. comfyui_frontend_package/static/assets/{WidgetGalleria-DHPc3hwg.js.map → WidgetGalleria-CV4Nv2wv.js.map} +1 -1
  42. comfyui_frontend_package/static/assets/WidgetInputNumber-zsVb0Vit.js +2 -0
  43. comfyui_frontend_package/static/assets/WidgetInputNumber-zsVb0Vit.js.map +1 -0
  44. comfyui_frontend_package/static/assets/{WidgetInputNumber.vue_vue_type_script_setup_true_lang-vY96bQKz.js → WidgetInputNumber.vue_vue_type_script_setup_true_lang-D-IwEPPr.js} +2 -2
  45. comfyui_frontend_package/static/assets/{WidgetInputNumber.vue_vue_type_script_setup_true_lang-vY96bQKz.js.map → WidgetInputNumber.vue_vue_type_script_setup_true_lang-D-IwEPPr.js.map} +1 -1
  46. comfyui_frontend_package/static/assets/{WidgetInputText-BbfUME5C.js → WidgetInputText-Cv8Z1_b9.js} +2 -2
  47. comfyui_frontend_package/static/assets/{WidgetInputText-BbfUME5C.js.map → WidgetInputText-Cv8Z1_b9.js.map} +1 -1
  48. comfyui_frontend_package/static/assets/{WidgetLayoutField.vue_vue_type_script_setup_true_lang-7bIn_5fI.js → WidgetLayoutField.vue_vue_type_script_setup_true_lang-DFWVBJH-.js} +2 -2
  49. comfyui_frontend_package/static/assets/{WidgetLayoutField.vue_vue_type_script_setup_true_lang-7bIn_5fI.js.map → WidgetLayoutField.vue_vue_type_script_setup_true_lang-DFWVBJH-.js.map} +1 -1
  50. comfyui_frontend_package/static/assets/{WidgetLegacy-AkIJRd8v.js → WidgetLegacy-Dh4xE798.js} +2 -2
  51. comfyui_frontend_package/static/assets/WidgetLegacy-Dh4xE798.js.map +1 -0
  52. comfyui_frontend_package/static/assets/WidgetMarkdown-C4CnxNoM.js +2 -0
  53. comfyui_frontend_package/static/assets/{WidgetMarkdown-voa7Ohgp.js.map → WidgetMarkdown-C4CnxNoM.js.map} +1 -1
  54. comfyui_frontend_package/static/assets/{WidgetRecordAudio-DelweXYm.js → WidgetRecordAudio-BQ9yATXo.js} +2 -2
  55. comfyui_frontend_package/static/assets/{WidgetRecordAudio-DelweXYm.js.map → WidgetRecordAudio-BQ9yATXo.js.map} +1 -1
  56. comfyui_frontend_package/static/assets/WidgetSelect-B9DwAKiE.js +2 -0
  57. comfyui_frontend_package/static/assets/WidgetSelect-B9DwAKiE.js.map +1 -0
  58. comfyui_frontend_package/static/assets/{WidgetSelect.vue_vue_type_script_setup_true_lang-CT0J0vij.js → WidgetSelect.vue_vue_type_script_setup_true_lang-EU2Y4eXi.js} +2 -2
  59. comfyui_frontend_package/static/assets/{WidgetSelect.vue_vue_type_script_setup_true_lang-CT0J0vij.js.map → WidgetSelect.vue_vue_type_script_setup_true_lang-EU2Y4eXi.js.map} +1 -1
  60. comfyui_frontend_package/static/assets/{WidgetTextarea-SHMM72Cj.js → WidgetTextarea-C3Wo0ULT.js} +2 -2
  61. comfyui_frontend_package/static/assets/{WidgetTextarea-SHMM72Cj.js.map → WidgetTextarea-C3Wo0ULT.js.map} +1 -1
  62. comfyui_frontend_package/static/assets/{WidgetToggleSwitch-BmT1MQCn.js → WidgetToggleSwitch-BZUubsU5.js} +2 -2
  63. comfyui_frontend_package/static/assets/{WidgetToggleSwitch-BmT1MQCn.js.map → WidgetToggleSwitch-BZUubsU5.js.map} +1 -1
  64. comfyui_frontend_package/static/assets/{WidgetWithControl.vue_vue_type_script_setup_true_lang-CTEGWC4h.js → WidgetWithControl.vue_vue_type_script_setup_true_lang-B7cz0rwK.js} +3 -3
  65. comfyui_frontend_package/static/assets/{WidgetWithControl.vue_vue_type_script_setup_true_lang-CTEGWC4h.js.map → WidgetWithControl.vue_vue_type_script_setup_true_lang-B7cz0rwK.js.map} +1 -1
  66. comfyui_frontend_package/static/assets/{audioService-BcbrJBnn.js → audioService-CNb54hvw.js} +2 -2
  67. comfyui_frontend_package/static/assets/{audioService-BcbrJBnn.js.map → audioService-CNb54hvw.js.map} +1 -1
  68. comfyui_frontend_package/static/assets/{audioUtils-CJCA0wCG.js → audioUtils-ClyG3xvN.js} +2 -2
  69. comfyui_frontend_package/static/assets/{audioUtils-CJCA0wCG.js.map → audioUtils-ClyG3xvN.js.map} +1 -1
  70. comfyui_frontend_package/static/assets/commands-DHxq3nWN.js +2 -0
  71. comfyui_frontend_package/static/assets/commands-DHxq3nWN.js.map +1 -0
  72. comfyui_frontend_package/static/assets/{index-DvCHS_f2.js → index-B3VEOed6.js} +20 -20
  73. comfyui_frontend_package/static/assets/index-B3VEOed6.js.map +1 -0
  74. comfyui_frontend_package/static/assets/index-B5S_Le6r.js +5 -0
  75. comfyui_frontend_package/static/assets/index-B5S_Le6r.js.map +1 -0
  76. comfyui_frontend_package/static/assets/index-CPtP45Cb.css +1 -0
  77. comfyui_frontend_package/static/assets/{index-kQCr6fgp.js → index-CtDW77xi.js} +2 -2
  78. comfyui_frontend_package/static/assets/{index-kQCr6fgp.js.map → index-CtDW77xi.js.map} +1 -1
  79. comfyui_frontend_package/static/assets/{keybindingService-D3pQ4cJG.js → keybindingService-50G4NbCc.js} +2 -2
  80. comfyui_frontend_package/static/assets/{keybindingService-D3pQ4cJG.js.map → keybindingService-50G4NbCc.js.map} +1 -1
  81. comfyui_frontend_package/static/assets/{main-BFC5CmrY.js → main-B3vd7GL1.js} +3 -3
  82. comfyui_frontend_package/static/assets/main-B3vd7GL1.js.map +1 -0
  83. comfyui_frontend_package/static/assets/{main-M4YqFlAB.js → main-BKCc2TkD.js} +3 -3
  84. comfyui_frontend_package/static/assets/main-BKCc2TkD.js.map +1 -0
  85. comfyui_frontend_package/static/assets/{main-C0iYASPd.js → main-BNvzUx74.js} +3 -3
  86. comfyui_frontend_package/static/assets/main-BNvzUx74.js.map +1 -0
  87. comfyui_frontend_package/static/assets/main-BPu7av80.js +17 -0
  88. comfyui_frontend_package/static/assets/main-BPu7av80.js.map +1 -0
  89. comfyui_frontend_package/static/assets/{main-Dd3BY3MO.js → main-BQ4z0Xxc.js} +2 -2
  90. comfyui_frontend_package/static/assets/main-BQ4z0Xxc.js.map +1 -0
  91. comfyui_frontend_package/static/assets/{main-BI-3llij.js → main-BoyaoV4J.js} +2 -2
  92. comfyui_frontend_package/static/assets/main-BoyaoV4J.js.map +1 -0
  93. comfyui_frontend_package/static/assets/{main-DB30B6rY.js → main-CJ1ZmTbz.js} +3 -3
  94. comfyui_frontend_package/static/assets/main-CJ1ZmTbz.js.map +1 -0
  95. comfyui_frontend_package/static/assets/{main-D8hMMX5u.js → main-DxByB8u3.js} +2 -2
  96. comfyui_frontend_package/static/assets/main-DxByB8u3.js.map +1 -0
  97. comfyui_frontend_package/static/assets/{main-BdVq5c-Q.js → main-Dyk43SJi.js} +2 -2
  98. comfyui_frontend_package/static/assets/main-Dyk43SJi.js.map +1 -0
  99. comfyui_frontend_package/static/assets/{main-Cte3FX_T.js → main-QMLeyFJQ.js} +3 -3
  100. comfyui_frontend_package/static/assets/main-QMLeyFJQ.js.map +1 -0
  101. comfyui_frontend_package/static/assets/{main-BPVbVwRz.js → main-f7MqrMkx.js} +3 -3
  102. comfyui_frontend_package/static/assets/main-f7MqrMkx.js.map +1 -0
  103. comfyui_frontend_package/static/assets/nodeDefs-CqPqVYqF.js +54 -0
  104. comfyui_frontend_package/static/assets/nodeDefs-CqPqVYqF.js.map +1 -0
  105. comfyui_frontend_package/static/assets/settings-BDcsAddA.js +6 -0
  106. comfyui_frontend_package/static/assets/settings-BDcsAddA.js.map +1 -0
  107. comfyui_frontend_package/static/assets/settings-BscQZApb.js +6 -0
  108. comfyui_frontend_package/static/assets/settings-BscQZApb.js.map +1 -0
  109. comfyui_frontend_package/static/assets/settings-BxGvSZQt.js +6 -0
  110. comfyui_frontend_package/static/assets/settings-BxGvSZQt.js.map +1 -0
  111. comfyui_frontend_package/static/assets/settings-CRbIyGOx.js +6 -0
  112. comfyui_frontend_package/static/assets/settings-CRbIyGOx.js.map +1 -0
  113. comfyui_frontend_package/static/assets/settings-C_M95LcR.js +6 -0
  114. comfyui_frontend_package/static/assets/settings-C_M95LcR.js.map +1 -0
  115. comfyui_frontend_package/static/assets/{settings-C83z84hb.js → settings-CfAtcjYG.js} +3 -3
  116. comfyui_frontend_package/static/assets/settings-CfAtcjYG.js.map +1 -0
  117. comfyui_frontend_package/static/assets/settings-D1FGfDLO.js +6 -0
  118. comfyui_frontend_package/static/assets/settings-D1FGfDLO.js.map +1 -0
  119. comfyui_frontend_package/static/assets/settings-DIhoSYUg.js +6 -0
  120. comfyui_frontend_package/static/assets/settings-DIhoSYUg.js.map +1 -0
  121. comfyui_frontend_package/static/assets/settings-DR935Ify.js +6 -0
  122. comfyui_frontend_package/static/assets/settings-DR935Ify.js.map +1 -0
  123. comfyui_frontend_package/static/assets/settings-DwzAhg99.js +6 -0
  124. comfyui_frontend_package/static/assets/settings-DwzAhg99.js.map +1 -0
  125. comfyui_frontend_package/static/assets/settings-ydiuzS6H.js +6 -0
  126. comfyui_frontend_package/static/assets/settings-ydiuzS6H.js.map +1 -0
  127. comfyui_frontend_package/static/index.html +1 -1
  128. {comfyui_frontend_package-1.37.9.dist-info → comfyui_frontend_package-1.37.10.dist-info}/METADATA +1 -1
  129. {comfyui_frontend_package-1.37.9.dist-info → comfyui_frontend_package-1.37.10.dist-info}/RECORD +131 -123
  130. comfyui_frontend_package/static/assets/GraphView-BZLpyVMl.css +0 -1
  131. comfyui_frontend_package/static/assets/GraphView-C35zkdNN.js +0 -15
  132. comfyui_frontend_package/static/assets/GraphView-C35zkdNN.js.map +0 -1
  133. comfyui_frontend_package/static/assets/Load3D-BAJ3yM4D.js.map +0 -1
  134. comfyui_frontend_package/static/assets/WidgetInputNumber-Cnhf4Ann.js +0 -2
  135. comfyui_frontend_package/static/assets/WidgetInputNumber-Cnhf4Ann.js.map +0 -1
  136. comfyui_frontend_package/static/assets/WidgetLegacy-AkIJRd8v.js.map +0 -1
  137. comfyui_frontend_package/static/assets/WidgetMarkdown-voa7Ohgp.js +0 -2
  138. comfyui_frontend_package/static/assets/WidgetSelect-XG4R8CnZ.js +0 -2
  139. comfyui_frontend_package/static/assets/WidgetSelect-XG4R8CnZ.js.map +0 -1
  140. comfyui_frontend_package/static/assets/index-BB_8e12C.css +0 -1
  141. comfyui_frontend_package/static/assets/index-Cm0D-ExL.js +0 -5
  142. comfyui_frontend_package/static/assets/index-Cm0D-ExL.js.map +0 -1
  143. comfyui_frontend_package/static/assets/index-DvCHS_f2.js.map +0 -1
  144. comfyui_frontend_package/static/assets/main-BFC5CmrY.js.map +0 -1
  145. comfyui_frontend_package/static/assets/main-BI-3llij.js.map +0 -1
  146. comfyui_frontend_package/static/assets/main-BPVbVwRz.js.map +0 -1
  147. comfyui_frontend_package/static/assets/main-BdVq5c-Q.js.map +0 -1
  148. comfyui_frontend_package/static/assets/main-C0iYASPd.js.map +0 -1
  149. comfyui_frontend_package/static/assets/main-Cte3FX_T.js.map +0 -1
  150. comfyui_frontend_package/static/assets/main-D8hMMX5u.js.map +0 -1
  151. comfyui_frontend_package/static/assets/main-DB30B6rY.js.map +0 -1
  152. comfyui_frontend_package/static/assets/main-Dd3BY3MO.js.map +0 -1
  153. comfyui_frontend_package/static/assets/main-M4YqFlAB.js.map +0 -1
  154. comfyui_frontend_package/static/assets/settings-2GCqRrJG.js +0 -6
  155. comfyui_frontend_package/static/assets/settings-2GCqRrJG.js.map +0 -1
  156. comfyui_frontend_package/static/assets/settings-BwT6YspU.js +0 -6
  157. comfyui_frontend_package/static/assets/settings-BwT6YspU.js.map +0 -1
  158. comfyui_frontend_package/static/assets/settings-C83z84hb.js.map +0 -1
  159. comfyui_frontend_package/static/assets/settings-CpGAolL8.js +0 -6
  160. comfyui_frontend_package/static/assets/settings-CpGAolL8.js.map +0 -1
  161. comfyui_frontend_package/static/assets/settings-DHYEklkf.js +0 -6
  162. comfyui_frontend_package/static/assets/settings-DHYEklkf.js.map +0 -1
  163. comfyui_frontend_package/static/assets/settings-DLFPCNJr.js +0 -6
  164. comfyui_frontend_package/static/assets/settings-DLFPCNJr.js.map +0 -1
  165. comfyui_frontend_package/static/assets/settings-JVJwzdtf.js +0 -6
  166. comfyui_frontend_package/static/assets/settings-JVJwzdtf.js.map +0 -1
  167. comfyui_frontend_package/static/assets/settings-Tg5NBf0t.js +0 -6
  168. comfyui_frontend_package/static/assets/settings-Tg5NBf0t.js.map +0 -1
  169. comfyui_frontend_package/static/assets/settings-_tes1LYa.js +0 -6
  170. comfyui_frontend_package/static/assets/settings-_tes1LYa.js.map +0 -1
  171. comfyui_frontend_package/static/assets/settings-cav_bQJj.js +0 -6
  172. comfyui_frontend_package/static/assets/settings-cav_bQJj.js.map +0 -1
  173. {comfyui_frontend_package-1.37.9.dist-info → comfyui_frontend_package-1.37.10.dist-info}/WHEEL +0 -0
  174. {comfyui_frontend_package-1.37.9.dist-info → comfyui_frontend_package-1.37.10.dist-info}/top_level.txt +0 -0
@@ -1,15 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SubscriptionRequiredDialogContent-CDaF1jns.js","./index-DvCHS_f2.js","./vendor-primevue-Bp7MMXLP.js","./vendor-other-B8t_Wf2K.js","./vendor-other-DYX1NpEr.css","./vendor-vue-DaLZjKA7.js","./vendor-xterm-CWYFmgbN.js","./vendor-xterm-xj0gfbX3.css","./vendor-three-DH0o8VQ7.js","./vendor-tiptap-VxK0yxkd.js","./index-BB_8e12C.css","./UserAvatar.vue_vue_type_script_setup_true_lang-48WRCWXz.js","./index-kQCr6fgp.js","./LazyImage.vue_vue_type_script_setup_true_lang-C58MdJKR.js","./keybindingService-D3pQ4cJG.js","./serverConfigStore-D8kGBwZ6.js","./WidgetInputNumber.vue_vue_type_script_setup_true_lang-vY96bQKz.js","./widgetPropFilter-CygYoMQt.js","./WidgetLayoutField.vue_vue_type_script_setup_true_lang-7bIn_5fI.js","./WidgetWithControl.vue_vue_type_script_setup_true_lang-CTEGWC4h.js","./WidgetInputNumber-DwTgzZ6Z.css","./SubscriptionRequiredDialogContent-BJ80blC4.css","./ComfyQueueButton-QhN0FmOY.js","./ComfyQueueButton-Chw03MdC.css"])))=>i.map(i=>d[i]);
2
- var Il=Object.defineProperty;var n=(e,o)=>Il(e,"name",{value:o,configurable:!0});import{bw as Xe,r as L,E as y,d6 as ca,bx as H,ep as da,i as Ml,eb as Qo,w as se,c as $,d,l as ce,z as O,e as c,v as Je,k as A,s as K,by as h,q as E,p as he,T as Yo,j as W,u as V,F as oe,y as be,A as $e,cM as Jo,cN as bo,eq as Pl,er as pa,m as It,D as Wn,I as Ce,G as ye,L as je,es as ys,dH as xn,e9 as Sn,et as Dl,h as Ne,J as Xt,ec as Xo,bB as Zo,bg as at,dc as it,du as fa,n as Be,dI as we,o as We,cO as bs,eu as Al,d8 as Qt,d2 as Ee,e7 as Ll,cB as Ht,db as en,ev as El,dy as ma,a as _n,ew as va,f as ga,cd as vt,x as Tt,cp as ha,cx as Et,dg as ya,t as Zt,cy as zn,d5 as xt,e8 as Vl,ex as oo,dK as Ct,dw as ba,bl as Ol,dn as Rl,cF as wa,b as Ca,bz as ws,ey as Wl,ez as vo,eA as zl,bi as Cs,eB as Bl,cw as Fl,bj as ka,da as xa,d3 as tn,eC as Ul,d4 as Gl,dF as Sa,dz as jl,bn as Hl,g as ks,bk as _a,dG as ql,d0 as Kl,dE as Ta,eD as Ql,em as Yl,e2 as Jl}from"./vendor-other-B8t_Wf2K.js";import{d as Mt,u as fe,s as He,j as $a,k as Na}from"./vendor-vue-DaLZjKA7.js";import{b as Xl,p as Ze,_ as Bn,u as Wt,Z as Ia,$ as Tn,a0 as _t,a1 as Fn,w as Yt,a2 as Ma,e as Zl,a3 as ei,a as Un,q as xs,M as ti,O as oi,P as ni,J as si,a4 as ai,v as Pa,o as Da,L as Aa,R as To,c as li,y as La,g as ii,a5 as ri,a6 as ui,m as ci,k as fo,a7 as di}from"./vendor-primevue-Bp7MMXLP.js";import{s as Ae,n as Ge,a as Te,i as Ea,b as kt,c as ne,_ as J,d as Le,S as on,t as ue,u as rt,e as re,f as Nt,g as pi,E as Gn,h as Ss,V as fi,j as mi,k as jn,l as Hn,m as qn,o as vi,p as gt,q as lt,r as Y,v as gi,w as Re,x as no,y as Go,z as so,A as Se,B as ut,C as hi,D as St,F as tt,G as Va,H as yi,I as Kn,J as Oa,K as ge,L as bi,M as _s,N as Ts,O as zt,P as wi,Q as Ra,R as $s,T as Ns,U as Ci,W as ki,X as Bt,Y as xi,Z as Si,$ as _i,a0 as Ti,a1 as Qn,a2 as ao,a3 as lo,a4 as Wa,a5 as za,a6 as $i,a7 as Ni,a8 as Ba,a9 as Yn,aa as qe,ab as Ii,ac as ft,ad as $n,ae as Jn,af as Jt,ag as Mi,ah as go,ai as Pi,aj as Di,ak as eo,al as De,am as Fa,an as Ai,ao as ct,ap as Li,aq as Ei,ar as io,as as ve,at as Vi,au as Oi,av as Vt,aw as Qe,ax as Vo,ay as Ri,az as Ft,aA as to,aB as Wi,aC as Xn,aD as Zn,aE as jo,aF as es,aG as mt,aH as Ot,aI as zi,aJ as $t,aK as Oe,aL as ts,aM as Ua,aN as nn,aO as Bi,aP as Fi,aQ as Ga,aR as Ui,aS as Gi,aT as ji,aU as Hi,aV as sn,aW as wo,aX as qi,aY as Ki,aZ as Qi,a_ as Yi,a$ as Ji,b0 as rn,b1 as So,b2 as Xi,b3 as Zi,b4 as er,b5 as tr,b6 as or,b7 as nr,b8 as sr,b9 as ar,ba as lr,bb as os,bc as ir,bd as Is,be as rr,bf as ur,bg as cr,bh as dr,bi as pr,bj as wt,bk as ja,bl as Ha,bm as fr,bn as mr,bo as ho,bp as qa,bq as ns,br as Ka,bs as Qa,bt as Ya,bu as vr,bv as gr,bw as hr,bx as Ja,by as yr,bz as Ms,bA as br,bB as wr,bC as ss,bD as Cr,bE as pt,bF as Xa,bG as kr,bH as xr,bI as qt,bJ as Sr,bK as _r,bL as Tr,bM as $r,bN as Nr,bO as Ir,bP as un,bQ as $o,bR as Mr,bS as Za,bT as cn,bU as Pr,bV as Dr,bW as dn,bX as el,bY as Ps,bZ as Ar,b_ as Lr,b$ as _o,c0 as pn,c1 as Er,c2 as Vr,c3 as Or,c4 as Rr,c5 as Ds,c6 as As,c7 as Ls,c8 as Wr,c9 as tl,ca as zr,cb as Br,cc as Fr,cd as Ur,ce as Gr,cf as Es,cg as jr,ch as Vs,ci as Hr,cj as qr,ck as Os,cl as Rs,cm as Kr,cn as Qr,co as Yr,cp as yo,cq as Jr,cr as Xr,cs as Zr,ct as eu,cu as tu,cv as ou,cw as ol,cx as nu,cy as su,cz as au,cA as lu,cB as iu,cC as ru}from"./index-DvCHS_f2.js";import{_ as nl}from"./UserAvatar.vue_vue_type_script_setup_true_lang-48WRCWXz.js";import{W as uu}from"./index-kQCr6fgp.js";import{_ as Ho,u as cu,a as du,b as pu,c as Co,d as fu}from"./LazyImage.vue_vue_type_script_setup_true_lang-C58MdJKR.js";import{u as fn}from"./keybindingService-D3pQ4cJG.js";import{u as mu}from"./serverConfigStore-D8kGBwZ6.js";import{_ as vu}from"./WidgetInputNumber.vue_vue_type_script_setup_true_lang-vY96bQKz.js";var sl=(e=>(e.Cloud="cloud",e.Local="local",e.Desktop="desktop",e.Mac="mac",e.Windows="windows",e))(sl||{});const No=n(e=>({all:"icon-[lucide--list]","getting-started":"icon-[lucide--graduation-cap]","generation-image":"icon-[lucide--image]",image:"icon-[lucide--image]","generation-video":"icon-[lucide--film]",video:"icon-[lucide--film]","generation-3d":"icon-[lucide--box]","3d":"icon-[lucide--box]","generation-audio":"icon-[lucide--volume-2]",audio:"icon-[lucide--volume-2]","generation-llm":"icon-[lucide--message-square-text]","api-nodes":"icon-[lucide--hand-coins]","closed-models":"icon-[lucide--hand-coins]",llm:"icon-[lucide--message-square-text]",llms:"icon-[lucide--message-square-text]","llm-api":"icon-[lucide--message-square-text]","small-models":"icon-[lucide--zap]",performance:"icon-[lucide--zap]","mac-compatible":"icon-[lucide--command]","runs-on-mac":"icon-[lucide--command]","lora-training":"icon-[lucide--dumbbell]",training:"icon-[lucide--dumbbell]",extensions:"icon-[lucide--puzzle]",tools:"icon-[lucide--wrench]",upscaling:"icon-[lucide--maximize-2]",controlnet:"icon-[lucide--sliders-horizontal]","area-composition":"icon-[lucide--layout-grid]"})[e.toLowerCase()]||"icon-[lucide--folder]","getCategoryIcon");function Ws(e,o){return`${e.toLowerCase().replace(/\s+/g,"-")}-${o.toLowerCase().replace(/\s+/g,"-")}`}n(Ws,"generateCategoryId");const al=Mt("workflowTemplates",()=>{const e=Xe({}),o=Xe([]),t=Xe([]),s=L(!1),l=L(new Set),a=n(N=>p.value.find(T=>T.name===N),"getTemplateByName"),i=L(new Map),r=n((N,T)=>({...N,localizedTitle:Ae(`templateWorkflows.template.${Ge(T)}.${Ge(N.name)}`,N.title??N.name),localizedDescription:Ae(`templateWorkflows.templateDescription.${Ge(T)}.${Ge(N.name)}`,N.description)}),"addLocalizedFieldsToTemplate"),u=n((N,T)=>N.map(x=>r(x,T)),"localizeTemplateList"),f=n(N=>({...N,localizedTitle:Ae(`templateWorkflows.category.${Ge(N.title)}`,N.title??N.moduleName),templates:u(N.templates,N.title)}),"localizeTemplateCategory"),m=n(()=>{const N=o.value.flatMap(x=>x.templates.map(S=>({...r(S,x.title),sourceModule:x.moduleName}))),T=Object.entries(e.value).flatMap(([x,S])=>S.map(I=>({name:I,mediaType:"image",mediaSubtype:"jpg",description:I,sourceModule:x})));return{moduleName:"all",title:"All",localizedTitle:Ae("templateWorkflows.category.All","All Templates"),templates:[...N,...T]}},"createAllCategory"),v=y(()=>{const N=[...o.value.map(f),...Object.entries(e.value).map(([x,S])=>({moduleName:x,title:x,localizedTitle:Ae(`templateWorkflows.category.${Ge(x)}`,x),templates:S.map(I=>({name:I,mediaType:"image",mediaSubtype:"jpg",description:I}))}))];return[{label:Ae("templateWorkflows.category.ComfyUI Examples","ComfyUI Examples"),modules:[m(),...N.filter(x=>x.moduleName==="default")]},...Object.keys(e.value).length>0?[{label:Ae("templateWorkflows.category.Custom Nodes","Custom Nodes"),modules:N.filter(x=>x.moduleName!=="default")}]:[]]}),p=y(()=>{const N=[];return o.value.forEach(x=>{x.templates.forEach(S=>{const I={...S,sourceModule:x.moduleName,category:x.title,categoryType:x.type,categoryGroup:x.category,isEssential:x.isEssential,isPartnerNode:S.openSource===!1,searchableText:[S.title||S.name,S.description||"",x.title,...S.tags||[],...S.models||[]].join(" ")};N.push(I)})}),Object.entries(e.value).forEach(([x,S])=>{S.forEach(I=>{const _={name:I,title:I,description:I,mediaType:"image",mediaSubtype:"jpg",sourceModule:x,category:"Extensions",categoryType:"extension",searchableText:`${I} ${x} extension`};N.push(_)})}),N.filter(x=>!x.requiresCustomNodes?.length)}),w=y(()=>{const N={keys:[{name:"searchableText",weight:.4},{name:"title",weight:.3},{name:"name",weight:.2},{name:"tags",weight:.1}],threshold:.3,includeScore:!0};return new ca(p.value,N)}),C=n(N=>{if(N==="all")return p.value;if(N.startsWith("basics-"))return p.value.filter(x=>x.isEssential&&x.category?.toLowerCase().replace(/\s+/g,"-")===N.replace("basics-",""));if(N==="popular")return p.value;if(N==="partner-nodes")return p.value.filter(x=>x.isPartnerNode);if(N.startsWith("extension-")){const x=N.replace("extension-","");return p.value.filter(S=>S.sourceModule===x)}const T=i.value.get(N);return T?p.value.filter(x=>!(T.category&&x.category!==T.category||T.categoryGroup&&x.categoryGroup!==T.categoryGroup)):p.value},"filterTemplatesByCategory"),g=y(()=>{if(!s.value)return[];const N=[];i.value.clear(),N.push({id:"all",label:Ae("templateWorkflows.category.All","All Templates"),icon:No("all")}),N.push({id:"popular",label:Ae("templateWorkflows.category.Popular","Popular"),icon:"icon-[lucide--flame]"});const T=o.value.filter(_=>_.isEssential&&_.templates.length>0);T.length>0&&T.forEach(_=>{const M=_.icon,P=_.title??"Getting Started",B=Ws("basics",_.title);N.push({id:B,label:Ae(`templateWorkflows.category.${Ge(P)}`,P),icon:M||No(_.type||"getting-started")})});const x=new Map;if(o.value.forEach(_=>{if(_.isEssential)return;const M=_.category,P=_.icon;if(M){x.has(M)||x.set(M,{title:M,items:[]});const B=x.get(M),j=Ws(M,_.title);i.value.set(j,{category:_.title,categoryGroup:M}),B.items.push({id:j,label:Ae(`templateWorkflows.category.${Ge(_.title)}`,_.title),icon:P||No(_.type||"default")})}}),x.forEach((_,M)=>{_.items.length>0&&N.push({title:Ae(`templateWorkflows.category.${Ge(M)}`,M.split(" ").map(P=>P.charAt(0).toUpperCase()+P.slice(1).toLowerCase()).join(" ")),items:_.items})}),p.value.filter(_=>_.isPartnerNode).length>0&&N.push({id:"partner-nodes",label:Ae("templateWorkflows.category.Partner Nodes","Partner Nodes"),icon:"icon-[lucide--handshake]"}),p.value.filter(_=>_.sourceModule!=="default").length>0){const M=Array.from(new Set(p.value.filter(P=>P.sourceModule!=="default").map(P=>P.sourceModule))).sort().map(P=>({id:`extension-${P}`,label:Ae(`templateWorkflows.category.${Ge(P)}`,P),icon:No("extensions")}));N.push({title:Ae("templateWorkflows.category.Extensions","Extensions"),items:M,collapsible:!0})}return N});async function b(){try{if(!s.value){e.value=await Te.getWorkflowTemplates();const N=Ea.global.locale.value,[T,x]=await Promise.all([Te.getCoreWorkflowTemplates(N),kt&&N!=="en"?Te.getCoreWorkflowTemplates("en"):Promise.resolve([])]);o.value=T,t.value=x;const S=o.value.flatMap(_=>_.templates.map(M=>M.name)),I=Object.values(e.value).flat();l.value=new Set([...S,...I]),s.value=!0}}catch(N){console.error("Error fetching workflow templates:",N)}}n(b,"loadWorkflowTemplates");function k(N){if(t.value.length===0)return null;for(const T of t.value){const x=T.templates.find(S=>S.name===N);if(x)return{tags:x.tags,category:T.title,useCase:x.useCase,models:x.models,license:x.license}}return null}return n(k,"getEnglishMetadata"),{groupedTemplates:v,navGroupedTemplates:g,enhancedTemplates:p,templateFuse:w,filterTemplatesByCategory:C,isLoaded:s,loadWorkflowTemplates:b,knownTemplateNames:l,getTemplateByName:a,getEnglishMetadata:k}}),an=Symbol(),gu={class:"base-widget-layout rounded-2xl overflow-hidden relative"},hu={class:"flex h-full w-full"},yu={class:"flex-1 flex bg-base-background"},bu={class:"flex h-full w-full flex-col"},wu={key:0,class:"w-full h-18 px-6 flex items-center justify-between gap-2"},Cu={class:"flex flex-1 shrink-0 gap-2"},ku={class:"flex min-h-0 flex-1 flex-col"},xu={key:0,class:"text-xxl m-0 px-6 pt-2 pb-6 capitalize"},Su={class:"min-h-0 flex-1 px-6 pt-0 pb-10 overflow-y-auto scrollbar-custom"},_u={key:0,class:"w-1/4 min-w-40 max-w-80"},Tu=H({__name:"BaseModalLayout",props:{contentTitle:{}},setup(e){const o={md:880},t={width:"w-1/3",minWidth:"min-w-40",maxWidth:"max-w-56"},s=da(),l=Ml(an,()=>{}),i=Qo(o).greater("md"),r=L(!0),u=L(!1),f=L(!1),m=y(()=>!!s.rightPanel);se(i,C=>{C||(f.value=!1)});const v=y(()=>i.value?r.value:f.value),p=n(()=>{i.value?r.value=!r.value:f.value=!f.value},"toggleLeftPanel"),w=n(()=>{u.value=!u.value},"toggleRightPanel");return(C,g)=>(d(),$("div",gu,[ce(O(J,{size:"icon",class:K(h(ne)("absolute top-4 right-18 z-10","transition-opacity duration-200",{"opacity-0 pointer-events-none":u.value||!m.value})),onClick:w},{default:A(()=>g[0]||(g[0]=[c("i",{class:"icon-[lucide--panel-right] text-sm"},null,-1)])),_:1},8,["class"]),[[Je,!u.value&&m.value]]),O(J,{size:"lg",class:"absolute top-4 right-6 z-10 transition-opacity duration-200 w-10",onClick:h(l)},{default:A(()=>g[1]||(g[1]=[c("i",{class:"pi pi-times"},null,-1)])),_:1},8,["onClick"]),c("div",hu,[O(Yo,{name:"slide-panel"},{default:A(()=>[C.$slots.leftPanel&&v.value?(d(),$("nav",{key:0,class:K([t.width,t.minWidth,t.maxWidth])},[he(C.$slots,"leftPanel",{},void 0,!0)],2)):E("",!0)]),_:3}),c("div",yu,[c("div",bu,[C.$slots.header?(d(),$("header",wu,[c("div",Cu,[h(i)?E("",!0):(d(),W(J,{key:0,size:"icon",onClick:p},{default:A(()=>[c("i",{class:K(h(ne)(v.value?"icon-[lucide--panel-left]":"icon-[lucide--panel-left-close]"))},null,2)]),_:1})),he(C.$slots,"header",{},void 0,!0)]),he(C.$slots,"header-right-area",{},void 0,!0),c("div",{class:K(h(ne)("flex justify-end gap-2 w-0",m.value&&!u.value?"min-w-22":"min-w-10"))},[u.value&&m.value?(d(),W(J,{key:0,size:"icon",onClick:w},{default:A(()=>g[2]||(g[2]=[c("i",{class:"icon-[lucide--panel-right-close]"},null,-1)])),_:1})):E("",!0)],2)])):E("",!0),c("main",ku,[he(C.$slots,"contentFilter",{},void 0,!0),C.$slots.leftPanel?E("",!0):(d(),$("h2",xu,V(C.contentTitle),1)),c("div",Su,[he(C.$slots,"content",{},void 0,!0)])])]),m.value&&u.value?(d(),$("aside",_u,[he(C.$slots,"rightPanel",{},void 0,!0)])):E("",!0)])])]))}}),as=Le(Tu,[["__scopeId","data-v-643fc509"]]),$u=H({__name:"NavIcon",props:{icon:{}},setup(e){return(o,t)=>(d(),$("i",{class:K([o.icon,"text-neutral text-sm shrink-0"])},null,2))}}),Nu={key:0,class:"pt-0.5"},Iu={key:1,class:"text-neutral icon-[lucide--folder] text-xs shrink-0"},Mu={class:"flex items-center break-all"},zs=H({__name:"NavItem",props:{icon:{},active:{type:Boolean},onClick:{type:Function}},setup(e){return(o,t)=>(d(),$("div",{class:K(["flex cursor-pointer items-start gap-2 rounded-md px-4 py-3 text-sm transition-colors text-base-foreground",o.active?"bg-interface-menu-component-surface-selected":"hover:bg-interface-menu-component-surface-hovered"]),role:"button",onClick:t[0]||(t[0]=(...s)=>o.onClick&&o.onClick(...s))},[o.icon?(d(),$("div",Nu,[O($u,{icon:o.icon},null,8,["icon"])])):(d(),$("i",Iu)),c("span",Mu,[he(o.$slots,"default")])],2))}}),Pu={class:"text-xs font-bold text-text-secondary uppercase"},Du=H({__name:"NavTitle",props:{title:{},modelValue:{type:Boolean,default:!1},collapsible:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:o}){const t=o,s=y({get:n(()=>e.modelValue,"get"),set:n(a=>t("update:modelValue",a),"set")}),l=n(()=>{s.value=!s.value},"toggleCollapse");return(a,i)=>(d(),$("div",{class:K(h(ne)("flex items-center justify-between m-0 px-3 py-0 pt-5",a.collapsible&&"cursor-pointer select-none")),onClick:i[0]||(i[0]=r=>a.collapsible&&l())},[c("h3",Pu,V(a.title),1),a.collapsible?(d(),$("i",{key:0,class:K(h(ne)("pi transition-transform duration-200 text-xs text-text-secondary ",s.value?"pi-chevron-right":"pi-chevron-down"))},null,2)):E("",!0)],2))}}),Au={},Lu={class:"flex h-16 items-center justify-between px-6"},Eu={class:"flex items-center gap-2 pl-1"},Vu={class:"text-neutral text-base font-bold"};function Ou(e,o){return d(),$("header",Lu,[c("div",Eu,[he(e.$slots,"icon",{},()=>[o[0]||(o[0]=c("i",{class:"text-neutral icon-[lucide--puzzle] text-base"},null,-1))]),c("h2",Vu,[he(e.$slots,"default")])])])}n(Ou,"_sfc_render$2");const Ru=Le(Au,[["render",Ou]]),Wu={class:"flex h-full w-full flex-col bg-modal-panel-background"},zu={class:"flex scrollbar-hide flex-1 flex-col gap-1 overflow-y-auto px-3 py-4"},Bu={key:0,class:"flex flex-col gap-2"},Fu={key:1,class:"flex flex-col gap-2"},ls=H({__name:"LeftSidePanel",props:{navItems:{default:n(()=>[],"default")},modelValue:{}},emits:["update:modelValue"],setup(e,{emit:o}){const t=o,s=L({}),l=n(()=>{if(!e.navItems||e.navItems.length===0)return null;const i=e.navItems[0];return"items"in i&&i.items.length>0?i.items[0].id:"id"in i?i.id:null},"getFirstItemId"),a=y({get:n(()=>e.modelValue??l(),"get"),set:n(i=>t("update:modelValue",i),"set")});return(i,r)=>(d(),$("div",Wu,[O(Ru,null,{icon:A(()=>[he(i.$slots,"header-icon")]),default:A(()=>[he(i.$slots,"header-title")]),_:3}),c("nav",zu,[(d(!0),$(oe,null,be(i.navItems,(u,f)=>(d(),$(oe,{key:f},["items"in u?(d(),$("div",Bu,[O(Du,{modelValue:s.value[u.title],"onUpdate:modelValue":n(m=>s.value[u.title]=m,"onUpdate:modelValue"),title:u.title,collapsible:u.collapsible},null,8,["modelValue","onUpdate:modelValue","title","collapsible"]),!u.collapsible||!s.value[u.title]?(d(!0),$(oe,{key:0},be(u.items,m=>(d(),W(zs,{key:m.id,icon:m.icon,active:a.value===m.id,onClick:n(v=>a.value=m.id,"onClick")},{default:A(()=>[$e(V(m.label),1)]),_:2},1032,["icon","active","onClick"]))),128)):E("",!0)])):(d(),$("div",Fu,[O(zs,{icon:u.icon,active:a.value===u.id,onClick:n(m=>a.value=u.id,"onClick")},{default:A(()=>[$e(V(u.label),1)]),_:2},1032,["icon","active","onClick"])]))],64))),128))])]))}});function Uu(e){return y(()=>{const{minWidth:o,maxWidth:t}=e,s={};return o&&(s.minWidth=o),t&&(s.maxWidth=t),s})}n(Uu,"usePopoverSizing");const Gu={class:"flex flex-col px-2 pt-2 pb-0"},ju={key:1,class:"mt-2 flex items-center justify-between"},Hu={key:0,class:"px-1 text-sm text-base-foreground"},qu={class:"text-sm"},Ku={key:0,class:"pointer-events-none absolute -top-2 -right-2 z-10 flex h-5 w-5 items-center justify-center rounded-full bg-primary-background text-xs font-semibold text-base-foreground"},Qu={key:0,class:"text-bold icon-[lucide--check] text-xs text-base-foreground"},Rt=H({inheritAttrs:!1,__name:"MultiSelect",props:Jo({label:{},showSearchBox:{type:Boolean,default:!1},showSelectedCount:{type:Boolean,default:!1},showClearButton:{type:Boolean,default:!1},searchPlaceholder:{default:"Search..."},listMaxHeight:{default:"28rem"},popoverMinWidth:{},popoverMaxWidth:{}},{modelValue:{required:!0},modelModifiers:{},searchQuery:{default:""},searchQueryModifiers:{}}),emits:["update:modelValue","update:searchQuery"],setup(e){const o=bo(e,"modelValue"),t=bo(e,"searchQuery"),{t:s}=fe(),l=y(()=>o.value.length),a=Uu({minWidth:e.popoverMinWidth,maxWidth:e.popoverMaxWidth}),i=Pl(),r=y(()=>i.options||[]),u={fuseOptions:{keys:["name","value"],threshold:.3,includeScore:!1},matchAllWhenSearchEmpty:!0},{results:f}=pa(t,r,u),m=y(()=>{if(!t.value||t.value.trim()==="")return r.value;const v=f.value.map(w=>w.item);return[...o.value.filter(w=>!v.some(C=>C.value===w.value)),...v]});return(v,p)=>(d(),W(h(Xl),It({modelValue:o.value,"onUpdate:modelValue":p[2]||(p[2]=w=>o.value=w)},{...v.$attrs,options:m.value},{"option-label":"name",unstyled:"","max-selected-labels":0,pt:{root:n(({props:w})=>({class:h(ne)("h-10 relative inline-flex cursor-pointer select-none","rounded-lg bg-secondary-background text-base-foreground","transition-all duration-200 ease-in-out","border-[2.5px] border-solid",l.value>0?"border-node-component-border":"border-transparent","focus-within:border-node-component-border",{"opacity-60 cursor-default":w.disabled})}),"root"),labelContainer:{class:"flex-1 flex items-center overflow-hidden whitespace-nowrap pl-4 py-2 "},label:{class:"p-0"},dropdown:{class:"flex shrink-0 cursor-pointer items-center justify-center px-3"},header:n(()=>({class:v.showSearchBox||v.showSelectedCount||v.showClearButton?"block":"hidden"}),"header"),overlay:{class:h(ne)("mt-2 rounded-lg py-2 px-2","bg-base-background","text-base-foreground","border border-solid border-border-default")},listContainer:n(()=>({style:{maxHeight:`min(${v.listMaxHeight}, 50vh)`},class:"scrollbar-custom"}),"listContainer"),list:{class:"flex flex-col gap-0 p-0 m-0 list-none border-none text-sm"},option:n(({context:w})=>({class:h(ne)("flex gap-2 items-center h-10 px-2 rounded-lg cursor-pointer","hover:bg-secondary-background-hover",w?.focused&&"bg-secondary-background-selected hover:bg-secondary-background-selected")}),"option"),pcHeaderCheckbox:{root:{class:"hidden"},style:{display:"none"}},pcOptionCheckbox:{root:{class:"hidden"},style:{display:"none"}}},"aria-label":v.label||h(s)("g.multiSelectDropdown"),role:"combobox","aria-expanded":!1,"aria-haspopup":"listbox",tabindex:0}),Wn({value:A(()=>[c("span",qu,V(v.label),1),l.value>0?(d(),$("span",Ku,V(l.value),1)):E("",!0)]),dropdownicon:A(()=>[p[4]||(p[4]=c("i",{class:"icon-[lucide--chevron-down] text-muted-foreground"},null,-1))]),option:A(w=>[c("div",{role:"button",class:"flex items-center gap-2 cursor-pointer",style:ye(h(a))},[c("div",{class:K(["flex size-4 shrink-0 items-center justify-center rounded p-0.5 transition-all duration-200",w.selected?"bg-primary-background":"bg-secondary-background"])},[w.selected?(d(),$("i",Qu)):E("",!0)],2),c("span",null,V(w.option.name),1)],4)]),_:2},[v.showSearchBox||v.showSelectedCount||v.showClearButton?{name:"header",fn:A(()=>[c("div",Gu,[v.showSearchBox?(d(),W(on,{key:0,modelValue:t.value,"onUpdate:modelValue":p[0]||(p[0]=w=>t.value=w),class:K(v.showSelectedCount||v.showClearButton?"mb-2":""),"show-order":!0,"show-border":!0,"place-holder":v.searchPlaceholder},null,8,["modelValue","class","place-holder"])):E("",!0),v.showSelectedCount||v.showClearButton?(d(),$("div",ju,[v.showSelectedCount?(d(),$("span",Hu,V(l.value>0?v.$t("g.itemsSelected",{selectedCount:l.value}):v.$t("g.itemSelected",{selectedCount:l.value})),1)):E("",!0),v.showClearButton?(d(),W(J,{key:1,variant:"textonly",size:"md",onClick:p[1]||(p[1]=Ce(w=>o.value=[],["stop"]))},{default:A(()=>[$e(V(v.$t("g.clearAll")),1)]),_:1})):E("",!0)])):E("",!0),p[3]||(p[3]=c("div",{class:"my-4 h-px bg-border-default"},null,-1))])]),key:"0"}:void 0]),1040,["modelValue","pt","aria-label"]))}});function Yu(e){const o=y(()=>{const l=je(e).map(i=>{const r=i.name.split(".").pop();return r&&r!==i.name?r:null}).filter(i=>i!==null);return ys(l,(i,r)=>i===r).sort().map(i=>({name:`.${i}`,value:i}))}),t=y(()=>{const l=je(e).map(i=>i.user_metadata?.base_model).filter(i=>i!==void 0&&typeof i=="string");return ys(l,(i,r)=>i===r).sort().map(i=>({name:i,value:i}))});return{availableFileFormats:o,availableBaseModels:t}}n(Yu,"useAssetFilterOptions");const Ju={class:"flex gap-4 items-center justify-between px-6 pt-2 pb-6","data-component-id":"asset-filter-bar"},Xu={class:"flex gap-4 items-center","data-component-id":"asset-filter-bar-left"},Zu={class:"flex items-center","data-component-id":"asset-filter-bar-right"},ec=H({__name:"AssetFilterBar",props:{assets:{default:n(()=>[],"default")},allAssets:{default:n(()=>[],"default")}},emits:["filterChange"],setup(e,{emit:o}){const s=[...[{name:ue("assetBrowser.sortRecent"),value:"recent"},{name:ue("assetBrowser.sortAZ"),value:"name-asc"},{name:ue("assetBrowser.sortZA"),value:"name-desc"}]],l=[{name:ue("assetBrowser.ownershipAll"),value:"all"},{name:ue("assetBrowser.ownershipMyModels"),value:"my-models"},{name:ue("assetBrowser.ownershipPublicModels"),value:"public-models"}],a=L([]),i=L([]),r=L("recent"),u=L("all"),{availableFileFormats:f,availableBaseModels:m}=Yu(e.assets),v=y(()=>(e.allAssets.length?e.allAssets:e.assets).some(g=>g.is_immutable===!1)),p=o;function w(){p("filterChange",{fileFormats:a.value.map(C=>C.value),baseModels:i.value.map(C=>C.value),sortBy:r.value,ownership:u.value})}return n(w,"handleFilterChange"),(C,g)=>(d(),$("div",Ju,[c("div",Xu,[h(f).length>0?(d(),W(Rt,{key:0,modelValue:a.value,"onUpdate:modelValue":[g[0]||(g[0]=b=>a.value=b),w],label:C.$t("assetBrowser.fileFormats"),options:h(f),class:"min-w-32","data-component-id":"asset-filter-file-formats"},null,8,["modelValue","label","options"])):E("",!0),h(m).length>0?(d(),W(Rt,{key:1,modelValue:i.value,"onUpdate:modelValue":[g[1]||(g[1]=b=>i.value=b),w],label:C.$t("assetBrowser.baseModels"),options:h(m),class:"min-w-32","data-component-id":"asset-filter-base-models"},null,8,["modelValue","label","options"])):E("",!0),v.value?(d(),W(Ho,{key:2,modelValue:u.value,"onUpdate:modelValue":[g[2]||(g[2]=b=>u.value=b),w],label:C.$t("assetBrowser.ownership"),options:l,class:"min-w-42","data-component-id":"asset-filter-ownership"},null,8,["modelValue","label"])):E("",!0)]),c("div",Zu,[O(Ho,{modelValue:r.value,"onUpdate:modelValue":[g[3]||(g[3]=b=>r.value=b),w],label:C.$t("assetBrowser.sortBy"),options:s,class:"min-w-32","data-component-id":"asset-filter-sort"},{icon:A(()=>g[4]||(g[4]=[c("i",{class:"icon-[lucide--arrow-up-down]"},null,-1)])),_:1},8,["modelValue","label"])])]))}}),tc={class:"relative inline-flex items-center"},oc={class:"flex min-w-40 flex-col gap-2 p-2"},ll=H({__name:"MoreButton",props:{isVertical:{type:Boolean,default:!1}},emits:["menuOpened","menuClosed"],setup(e,{expose:o}){const t=L(!1),s=L();function l(){s.value?.hide()}return n(l,"hide"),o({hide:l,isOpen:t}),(a,i)=>(d(),$("div",tc,[O(J,{size:"icon",variant:"secondary",onClick:s.value?.toggle},{default:A(()=>[c("i",{class:K(h(ne)(a.isVertical?"icon-[lucide--more-vertical]":"icon-[lucide--ellipsis]","text-sm"))},null,2)]),_:1},8,["onClick"]),O(h(Ze),{ref_key:"popover",ref:s,"append-to":"body","auto-z-index":"",dismissable:"","close-on-escape":"",unstyled:"","base-z-index":1e3,pt:{root:{class:h(ne)("absolute z-50")},content:{class:h(ne)("mt-1 rounded-lg","bg-secondary-background text-base-foreground","shadow-lg")}},onShow:i[0]||(i[0]=()=>{t.value=!0,a.$emit("menuOpened")}),onHide:i[1]||(i[1]=()=>{t.value=!1,a.$emit("menuClosed")})},{default:A(()=>[c("div",oc,[he(a.$slots,"default",{close:l})])]),_:3},8,["pt"])]))}}),nc={class:"flex flex-col px-4 py-2 text-sm text-muted-foreground border-t border-border-default"},sc={key:0},ac=H({__name:"ConfirmBody",props:{promptText:{}},setup(e){const o=y(()=>je(e.promptText));return(t,s)=>(d(),$("div",nc,[o.value?(d(),$("p",sc,V(o.value),1)):E("",!0)]))}}),lc={class:"w-full flex gap-2 justify-end px-2 pb-2"},ic=H({__name:"ConfirmFooter",props:{cancelText:{},confirmText:{},confirmClass:{},optionsDisabled:{}},emits:["cancel","confirm"],setup(e){const{t:o}=fe(),t=y(()=>e.confirmText||o("g.confirm")),s=y(()=>e.cancelText||o("g.cancel")),l=y(()=>je(e.optionsDisabled));return(a,i)=>(d(),$("section",lc,[O(J,{disabled:l.value,variant:"textonly",autofocus:"",onClick:i[0]||(i[0]=r=>a.$emit("cancel"))},{default:A(()=>[$e(V(s.value),1)]),_:1},8,["disabled"]),O(J,{disabled:l.value,variant:"textonly",class:K(a.confirmClass),onClick:i[1]||(i[1]=r=>a.$emit("confirm"))},{default:A(()=>[$e(V(t.value),1)]),_:1},8,["disabled","class"])]))}}),rc={class:"flex items-center gap-2 p-4 font-bold text-sm text-base-foreground font-inter"},uc={key:0,class:"flex-auto"},cc=H({__name:"ConfirmHeader",props:{title:{}},setup(e){return(o,t)=>(d(),$("div",rc,[o.title?(d(),$("span",uc,V(o.title),1)):E("",!0)]))}});function dc(e={}){const o=rt(),{headerProps:t,props:s,footerProps:l}=e;return o.showDialog({headerComponent:cc,component:ac,footerComponent:ic,headerProps:t,props:s,footerProps:l,dialogComponentProps:{pt:{header:"py-0! px-0!",content:"p-0!",footer:"p-0!"}}})}n(dc,"showConfirmDialog");const pc={class:"absolute left-2 bottom-2 flex flex-wrap justify-start gap-1"},fc=H({__name:"AssetBadgeGroup",props:{badges:{}},setup(e){return(o,t)=>(d(),$("div",pc,[(d(!0),$(oe,null,be(o.badges,s=>(d(),$("span",{key:s.label,class:K(h(ne)("px-2 py-1 rounded text-xs font-bold uppercase tracking-wider text-modal-card-tag-foreground bg-modal-card-tag-background break-all"))},V(s.label),3))),128))]))}}),mc=["data-asset-id","aria-labelledby","aria-describedby","tabindex"],vc={class:"relative aspect-square w-full overflow-hidden rounded-xl"},gc=["src","alt"],hc={class:"max-h-32 flex flex-col gap-2 justify-between flex-auto"},yc=["id"],bc=["id"],wc={class:"flex gap-4 text-xs text-muted-foreground mt-auto"},Cc={key:0,class:"flex items-center gap-1"},kc={key:1,class:"flex items-center gap-1"},xc={key:2,class:"flex items-center gap-1"},Sc=H({__name:"AssetCard",props:{asset:{},interactive:{type:Boolean}},emits:["select"],setup(e){const{t:o}=fe(),t=re(),{closeDialog:s}=rt(),{flags:l}=cu(),a=Nt(),i=xn("dropdown-menu-button"),r=Sn(),u=Sn(),f=L(!1),m=L(),v=L(!1),p=y(()=>m.value??e.asset.name),w=y(()=>(l.assetDeletionEnabled||l.assetRenameEnabled)&&!(e.asset.is_immutable??!0)),C=y(()=>t.get("LiteGraph.Node.TooltipDelay")),{isLoading:g,error:b}=Dl({src:e.asset.preview_url??"",alt:e.asset.name});function k(){i.value?.hide();const x=je(p),S=L(o("assetBrowser.deletion.body")),I=L(!1),_=dc({headerProps:{title:o("assetBrowser.deletion.header")},props:{promptText:S},footerProps:{confirmText:o("g.delete"),confirmClass:ne("bg-danger-200 text-base-foreground hover:bg-danger-200/80 focus:bg-danger-200/80 focus:ring ring-base-foreground"),optionsDisabled:I,onCancel:n(()=>{s(_)},"onCancel"),onConfirm:n(async()=>{I.value=!0;try{S.value=o("assetBrowser.deletion.inProgress",{assetName:x}),await Ss.deleteAsset(e.asset.id),S.value=o("assetBrowser.deletion.complete",{assetName:x}),await new Promise(M=>setTimeout(M,1e3)),v.value=!0}catch(M){console.error(M),S.value=o("assetBrowser.deletion.failed",{assetName:x}),await new Promise(P=>setTimeout(P,3e3))}finally{s(_)}},"onConfirm")}})}n(k,"confirmDeletion");function N(){i.value?.hide(),f.value=!0}n(N,"startAssetRename");async function T(x){if(f.value=!1,x){m.value=x;try{const S=await Ss.updateAsset(e.asset.id,{name:x});m.value=S.name}catch(S){console.error(S),a.add({severity:"error",summary:o("assetBrowser.rename.failed"),life:1e4}),m.value=void 0}}}return n(T,"assetRename"),(x,S)=>{const I=Ne("tooltip");return v.value?E("",!0):(d(),$("div",{key:0,"data-component-id":"AssetCard","data-asset-id":x.asset.id,"aria-labelledby":h(r),"aria-describedby":h(u),tabindex:x.interactive?0:-1,class:K(h(ne)("rounded-2xl overflow-hidden transition-all duration-200 bg-modal-card-background p-2 gap-2 flex flex-col h-full",x.interactive&&"group appearance-none bg-transparent m-0 outline-none text-left hover:bg-secondary-background focus:bg-secondary-background border-none focus:outline-solid outline-base-foreground outline-4")),onKeydown:S[3]||(S[3]=Xt(Ce(_=>x.interactive&&x.$emit("select",x.asset),["self"]),["enter"]))},[c("div",vc,[h(g)||h(b)?(d(),$("div",{key:0,class:"flex size-full cursor-pointer items-center justify-center bg-gradient-to-br from-smoke-400 via-smoke-800 to-charcoal-400",role:"button",onClick:S[0]||(S[0]=Ce(_=>x.interactive&&x.$emit("select",x.asset),["self"]))})):(d(),$("img",{key:1,src:x.asset.preview_url,alt:p.value,class:"size-full object-cover cursor-pointer",role:"button",onClick:S[1]||(S[1]=Ce(_=>x.interactive&&x.$emit("select",x.asset),["self"]))},null,8,gc)),O(fc,{badges:x.asset.badges},null,8,["badges"]),w.value?(d(),W(pi,{key:2,class:K(h(ne)("absolute top-2 right-2 invisible group-hover:visible",h(i)?.isOpen&&"visible"))},{default:A(()=>[O(ll,{ref:"dropdown-menu-button",size:"sm"},{default:A(()=>[h(l).assetRenameEnabled?(d(),W(J,{key:0,variant:"secondary",size:"md",class:"justify-start",onClick:N},{default:A(()=>[S[4]||(S[4]=c("i",{class:"icon-[lucide--pencil]"},null,-1)),c("span",null,V(x.$t("g.rename")),1)]),_:1})):E("",!0),h(l).assetDeletionEnabled?(d(),W(J,{key:1,variant:"secondary",size:"md",class:"justify-start",onClick:k},{default:A(()=>[S[5]||(S[5]=c("i",{class:"icon-[lucide--trash-2]"},null,-1)),c("span",null,V(x.$t("g.delete")),1)]),_:1})):E("",!0)]),_:1},512)]),_:1},8,["class"])):E("",!0)]),c("div",hc,[ce((d(),$("h3",{id:h(r),class:K(h(ne)("mb-2 m-0 text-base font-semibold line-clamp-2 wrap-anywhere","text-base-foreground"))},[O(Gn,{"model-value":p.value,"is-editing":f.value,"input-attrs":{"data-testid":"asset-name-input"},onEdit:T,onCancel:S[2]||(S[2]=_=>T())},null,8,["model-value","is-editing"])],10,yc)),[[I,{value:p.value,showDelay:C.value},void 0,{top:!0}]]),ce((d(),$("p",{id:h(u),class:K(h(ne)("m-0 text-sm leading-6 overflow-hidden [-webkit-box-orient:vertical] [-webkit-line-clamp:2] [display:-webkit-box] text-muted-foreground"))},[$e(V(x.asset.description),1)],10,bc)),[[I,{value:x.asset.description,showDelay:C.value},void 0,{top:!0}]]),c("div",wc,[x.asset.stats.stars?(d(),$("span",Cc,[S[6]||(S[6]=c("i",{class:"icon-[lucide--star] size-3"},null,-1)),$e(" "+V(x.asset.stats.stars),1)])):E("",!0),x.asset.stats.downloadCount?(d(),$("span",kc,[S[7]||(S[7]=c("i",{class:"icon-[lucide--download] size-3"},null,-1)),$e(" "+V(x.asset.stats.downloadCount),1)])):E("",!0),x.asset.stats.formattedDate?(d(),$("span",xc,[S[8]||(S[8]=c("i",{class:"icon-[lucide--clock] size-3"},null,-1)),$e(" "+V(x.asset.stats.formattedDate),1)])):E("",!0)])])],42,mc))}}}),_c=["aria-label","aria-setsize"],Tc={key:0,class:"flex h-full items-center justify-center py-20"},$c={key:1,class:"flex h-full flex-col items-center justify-center py-16 text-muted-foreground"},Nc={class:"mb-2 text-lg font-medium"},Ic={class:"text-sm"},Mc=H({__name:"AssetGrid",props:{assets:{},loading:{type:Boolean}},emits:["assetSelect"],setup(e){const o=y(()=>e.assets.map(s=>({...s,key:s.id}))),t={display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(15rem, 1fr))",gap:"1rem",padding:"0.5rem"};return(s,l)=>(d(),$("div",{"data-component-id":"AssetGrid",class:"h-full",role:"grid","aria-label":s.$t("assetBrowser.assetCollection"),"aria-rowcount":-1,"aria-colcount":-1,"aria-setsize":s.assets.length},[s.loading?(d(),$("div",Tc,l[1]||(l[1]=[c("i",{class:"icon-[lucide--loader] size-12 animate-spin text-muted-foreground"},null,-1)]))):s.assets.length===0?(d(),$("div",$c,[l[2]||(l[2]=c("i",{class:"mb-4 icon-[lucide--search] size-10"},null,-1)),c("h3",Nc,V(s.$t("assetBrowser.noAssetsFound")),1),c("p",Ic,V(s.$t("assetBrowser.tryAdjustingFilters")),1)])):(d(),W(fi,{key:2,items:o.value,"grid-style":t,"default-item-height":320,"default-item-width":240},{item:A(({item:a})=>[O(Sc,{asset:a,interactive:!0,onSelect:l[0]||(l[0]=i=>s.$emit("assetSelect",i))},null,8,["asset"])]),_:1},8,["items"]))],8,_c))}});function Pc(e){return typeof e.user_metadata?.description=="string"?e.user_metadata.description:null}n(Pc,"getAssetDescription");function il(e){return typeof e.user_metadata?.base_model=="string"?e.user_metadata.base_model:null}n(il,"getAssetBaseModel");function Dc(e){return o=>e==="all"||o.tags.includes(e)?!0:o.tags.some(t=>typeof t=="string"&&t.includes("/")?t.split("/")[0]===e:!1)}n(Dc,"filterByCategory");function Ac(e){return o=>{if(e.length===0)return!0;const t=new Set(e),s=o.name.split(".").pop()?.toLowerCase();return s?t.has(s):!1}}n(Ac,"filterByFileFormats");function Lc(e){return o=>{if(e.length===0)return!0;const t=new Set(e),s=il(o);return s?t.has(s):!1}}n(Lc,"filterByBaseModels");function Ec(e){return o=>e==="all"?!0:e==="my-models"?o.is_immutable===!1:e==="public-models"?o.is_immutable===!0:!0}n(Ec,"filterByOwnership");function Vc(e=L([])){const o=y(()=>e.value??[]),t=L(""),s=L("all"),l=L({sortBy:"recent",fileFormats:[],baseModels:[],ownership:"all"});function a(C){const g=C.tags.find(x=>x!=="models"),b=Pc(C)||`${g||ue("assetBrowser.unknown")} model`,k=[];if(g){const x=g.includes("/")?g.substring(g.indexOf("/")+1):g;k.push({label:x,type:"type"})}const N=il(C);N&&k.push({label:N,type:"base"});const T={formattedDate:mi(new Date(C.created_at),{dateStyle:"short"}),downloadCount:void 0,stars:void 0};return{...C,description:b,badges:k,stats:T}}n(a,"transformAssetForDisplay");const i=y(()=>{const C=o.value.filter(b=>b.tags[0]==="models").map(b=>b.tags[1]).filter(b=>typeof b=="string"&&b.length>0).map(b=>b.split("/")[0]),g=Array.from(new Set(C)).sort().map(b=>({id:b,label:b.charAt(0).toUpperCase()+b.slice(1),icon:"icon-[lucide--package]"}));return[{id:"all",label:ue("assetBrowser.allModels"),icon:"icon-[lucide--folder]"},...g]}),r=y(()=>s.value==="all"?ue("assetBrowser.allModels"):i.value.find(g=>g.id===s.value)?.label||ue("assetBrowser.assets")),u=y(()=>o.value.filter(Dc(s.value))),f={fuseOptions:{keys:[{name:"name",weight:.4},{name:"tags",weight:.3}],threshold:.4,ignoreLocation:!0,includeScore:!0},matchAllWhenSearchEmpty:!0},{results:m}=pa(t,u,f),v=y(()=>m.value.map(C=>C.item)),p=y(()=>{const g=[...v.value.filter(Ac(l.value.fileFormats)).filter(Lc(l.value.baseModels)).filter(Ec(l.value.ownership))];return g.sort((b,k)=>{switch(l.value.sortBy){case"name-desc":return k.name.localeCompare(b.name);case"recent":return new Date(k.created_at).getTime()-new Date(b.created_at).getTime();case"popular":return b.name.localeCompare(k.name);case"name-asc":default:return b.name.localeCompare(k.name)}}),g.map(a)});function w(C){l.value={...C}}return n(w,"updateFilters"),{searchQuery:t,selectedCategory:s,availableCategories:i,contentTitle:r,categoryFilteredAssets:u,filteredAssets:p,updateFilters:w}}n(Vc,"useAssetBrowser");const Oc=new Set(["VAE","CLIP","GLIGEN"]);function Rc(e){return e?e==="diffusion_models"?"Diffusion":e.split("_").map(o=>{const t=o.toUpperCase();if(Oc.has(t))return t;const s=o.toLowerCase();return s.charAt(0).toUpperCase()+s.slice(1)}).join(" "):"Models"}n(Rc,"formatCategoryLabel");const Wc={class:"capitalize"},zc={class:"flex w-full items-center justify-between gap-2"},Bc={class:"hidden md:inline"},Bs=H({__name:"AssetBrowserModal",props:{nodeType:{},assetType:{},onSelect:{type:Function},onClose:{type:Function},showLeftPanel:{type:Boolean},title:{}},emits:["asset-select","close"],setup(e,{emit:o}){const{t}=fe(),s=jn(),l=Hn(),a=Qo(Xo),i=e,r=o;Zo(an,i.onClose??(()=>{}));const u=y(()=>i.nodeType?i.nodeType:i.assetType?`tag:${i.assetType}`:""),f=y(()=>s.modelAssetsByNodeType.get(u.value)??[]),m=y(()=>s.modelLoadingByNodeType.get(u.value)??!1),v=y(()=>m.value&&f.value.length===0);async function p(){return i.nodeType?await s.updateModelsForNodeType(i.nodeType):i.assetType?await s.updateModelsForTag(i.assetType):[]}n(p,"refreshAssets"),p();const{isUploadButtonEnabled:w,showUploadDialog:C}=du(p),{searchQuery:g,selectedCategory:b,availableCategories:k,categoryFilteredAssets:N,filteredAssets:T,updateFilters:x}=Vc(f),S=y(()=>{const U=(f.value??[]).map(R=>R.tags?.find(F=>F!=="models")).find(R=>typeof R=="string"&&R.length>0);if(U)return U;if(i.nodeType){const R=l.getCategoryForNodeType(i.nodeType);if(R)return R}return i.assetType?i.assetType:"models"}),I=y(()=>b.value!=="all"?b.value:S.value),_=y(()=>{if(i.title)return i.title;const j=Rc(I.value);return t("assetBrowser.allCategory",{category:j})}),M=y(()=>i.showLeftPanel??!0);function P(){i.onClose?.(),r("close")}n(P,"handleClose");function B(j){r("asset-select",j),i.onSelect?.(j)}return n(B,"handleAssetSelectAndEmit"),(j,U)=>(d(),W(as,{"data-component-id":"AssetBrowserModal",class:"size-full max-h-full max-w-full min-w-0","content-title":_.value,onClose:P},Wn({header:A(()=>[c("div",zc,[O(on,{modelValue:h(g),"onUpdate:modelValue":U[1]||(U[1]=R=>at(g)?g.value=R:null),autofocus:!0,size:"lg",placeholder:j.$t("g.searchPlaceholder"),class:"max-w-96"},null,8,["modelValue","placeholder"]),h(w)?(d(),W(J,{key:0,variant:"primary",size:h(a).md?"lg":"icon","data-attr":"upload-model-button",onClick:h(C)},{default:A(()=>[U[3]||(U[3]=c("i",{class:"icon-[lucide--folder-input]"},null,-1)),c("span",Bc,V(j.$t("assetBrowser.uploadModel")),1)]),_:1},8,["size","onClick"])):E("",!0)])]),contentFilter:A(()=>[O(ec,{assets:h(N),"all-assets":f.value,onFilterChange:h(x)},null,8,["assets","all-assets","onFilterChange"])]),content:A(()=>[O(Mc,{assets:h(T),loading:v.value,onAssetSelect:B},null,8,["assets","loading"])]),_:2},[M.value?{name:"leftPanel",fn:A(()=>[O(ls,{modelValue:h(b),"onUpdate:modelValue":U[0]||(U[0]=R=>at(b)?b.value=R:null),"data-component-id":"AssetBrowserModal-LeftSidePanel","nav-items":h(k)},{"header-icon":A(()=>U[2]||(U[2]=[c("div",{class:"icon-[lucide--folder] size-4"},null,-1)])),"header-title":A(()=>[c("span",Wc,V(_.value),1)]),_:1},8,["modelValue","nav-items"])]),key:"0"}:void 0]),1032,["content-title"]))}}),Fs={headless:!0,modal:!0,closable:!0,pt:{root:{class:"rounded-2xl overflow-hidden asset-browser-dialog"},header:{class:"!p-0 hidden"},content:{class:"!p-0 !m-0 h-full w-full"}}},Fc=n(()=>{const e=rt(),o="global-asset-browser";async function t(l){const a=n(i=>{l.onAssetSelected?.(i),e.closeDialog({key:o})},"handleAssetSelected");e.showDialog({key:o,component:Bs,props:{nodeType:l.nodeType,inputName:l.inputName,currentValue:l.currentValue,onSelect:a,onClose:n(()=>e.closeDialog({key:o}),"onClose")},dialogComponentProps:Fs})}n(t,"show");async function s(l){const a=n(i=>{l.onAssetSelected?.(i),e.closeDialog({key:o})},"handleAssetSelected");e.showDialog({key:o,component:Bs,props:{showLeftPanel:!0,assetType:l.assetType,title:l.title,onSelect:a,onClose:n(()=>e.closeDialog({key:o}),"onClose")},dialogComponentProps:Fs})}return n(s,"browse"),{show:t,browse:s}},"useAssetBrowserDialog"),Uc={class:"flex max-w-xs min-w-40 flex-col gap-2 p-3"},Gc={class:"text-sm font-inter"},jc={key:1,class:"text-xs"},Hc={class:"flex max-w-xs min-w-40 flex-col gap-2 p-3"},qc={class:"text-sm font-inter"},Kc={key:1,class:"text-xs"},Us="cursor-pointer transition-opacity hover:opacity-80",Qc=H({__name:"TopbarBadge",props:{badge:{},displayMode:{default:"full"},reverseOrder:{type:Boolean,default:!1},noPadding:{type:Boolean,default:!1},backgroundColor:{default:"var(--comfy-menu-bg)"}},setup(e){const o=e,t=L(),s=n(p=>{t.value?.toggle(p)},"togglePopover"),l=y(()=>o.badge.variant??"info"),a=y(()=>({backgroundColor:o.backgroundColor})),i=y(()=>{switch(l.value){case"error":return"bg-danger-100 text-white";case"warning":return"bg-gold-600 text-black";case"info":default:return"bg-white text-black"}}),r=y(()=>{switch(l.value){case"error":return"text-danger-100";case"warning":return"text-warning-background";case"info":default:return"text-text-primary"}}),u=y(()=>r.value),f=y(()=>{if(o.badge.icon)return o.badge.icon;switch(l.value){case"error":return"pi pi-exclamation-circle";case"warning":return"icon-[lucide--triangle-alert]";case"info":default:return}}),m=y(()=>{switch(l.value){case"error":return"bg-danger-100";case"warning":return"bg-gold-600";case"info":default:return"bg-slate-100"}}),v=y(()=>({root:{class:ne("absolute z-50")},content:{class:ne("mt-1 rounded-lg","bg-base-background","text-base-foreground","shadow-lg","border border-border-default")}}));return(p,w)=>{const C=Ne("tooltip");return p.displayMode==="icon-only"?(d(),$("div",{key:0,class:K(["relative inline-flex h-full shrink-0 items-center justify-center px-2",Us]),style:ye(a.value),onClick:s},[f.value?(d(),$("i",{key:0,class:K(["shrink-0 text-base",f.value,u.value])},null,2)):p.badge.label?(d(),$("div",{key:1,class:K(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},V(p.badge.label),3)):(d(),$("div",{key:2,class:K(["size-2 shrink-0 rounded-full",m.value])},null,2)),O(h(Ze),{ref_key:"popover",ref:t,"append-to":"body","auto-z-index":!0,"base-z-index":1e3,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:v.value},{default:A(()=>[c("div",Uc,[p.badge.label?(d(),$("div",{key:0,class:K(["w-fit rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},V(p.badge.label),3)):E("",!0),c("div",Gc,V(p.badge.text),1),p.badge.tooltip?(d(),$("div",jc,V(p.badge.tooltip),1)):E("",!0)])]),_:1},8,["pt"])],4)):p.displayMode==="compact"?(d(),$("div",{key:1,class:"relative inline-flex h-full",style:ye(a.value)},[c("div",{class:K(["flex h-full shrink-0 items-center gap-2 whitespace-nowrap",[{"flex-row-reverse":p.reverseOrder},p.noPadding?"":"px-3",Us]]),onClick:s},[f.value?(d(),$("i",{key:0,class:K(["shrink-0 text-base",f.value,u.value])},null,2)):E("",!0),p.badge.label?(d(),$("div",{key:1,class:K(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},V(p.badge.label),3)):E("",!0)],2),O(h(Ze),{ref_key:"popover",ref:t,"append-to":"body","auto-z-index":!0,"base-z-index":1e3,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:v.value},{default:A(()=>[c("div",Hc,[p.badge.label?(d(),$("div",{key:0,class:K(["w-fit rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},V(p.badge.label),3)):E("",!0),c("div",qc,V(p.badge.text),1),p.badge.tooltip?(d(),$("div",Kc,V(p.badge.tooltip),1)):E("",!0)])]),_:1},8,["pt"])],4)):ce((d(),$("div",{key:2,class:K(["flex h-full shrink-0 items-center gap-2 whitespace-nowrap",[{"flex-row-reverse":p.reverseOrder},p.noPadding?"":"px-3"]]),style:ye(a.value)},[f.value?(d(),$("i",{key:0,class:K(["shrink-0 text-base",f.value,u.value])},null,2)):E("",!0),p.badge.label?(d(),$("div",{key:1,class:K(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},V(p.badge.label),3)):E("",!0),c("div",{class:K(["font-inter text-sm",r.value])},V(p.badge.text),3)],6)),[[C,p.badge.tooltip]])}}}),Yc=3e3,Jc=300*1e3,Xc=H({__name:"SubscribeButton",props:{label:{},size:{default:"lg"},variant:{default:"default"},fluid:{type:Boolean,default:!0}},emits:["subscribed"],setup(e,{emit:o}){const t=o,{subscribe:s,isActiveSubscription:l,fetchStatus:a,showSubscriptionDialog:i}=qn(),r=vi(),u=L(!1),f=L(!1);let m=null;const v=L(!1),p=n(()=>{f.value=!0,u.value=!0;const g=Date.now(),b=n(async()=>{try{if(Date.now()-g>Jc){w();return}await a(),l.value&&(w(),r?.trackMonthlySubscriptionSucceeded(),t("subscribed"))}catch(k){console.error("[SubscribeButton] Error polling subscription status:",k)}},"poll");b(),m=window.setInterval(b,Yc)},"startPollingSubscriptionStatus"),w=n(()=>{m&&(clearInterval(m),m=null),f.value=!1,u.value=!1},"stopPolling");se([v,l],([g,b])=>{});const C=n(async()=>{u.value=!0;try{await s(),p()}catch(g){console.error("[SubscribeButton] Error initiating subscription:",g),u.value=!1}},"handleSubscribe");return it(()=>{w(),v.value=!1}),(g,b)=>(d(),W(J,{size:g.size,loading:u.value,disabled:f.value,variant:"primary",style:ye(g.variant==="gradient"?{background:"var(--color-subscription-button-gradient)",color:"var(--color-white)"}:void 0),class:K(h(ne)("font-bold",g.fluid&&"w-full")),onClick:C},{default:A(()=>[$e(V(g.label||g.$t("subscription.required.subscribe")),1)]),_:1},8,["size","loading","disabled","style","class"]))}}),Gs="subscription-required",Zc=n(()=>{const e=gt(),o=rt();function t(){o.closeDialog({key:Gs})}n(t,"hide");function s(){e.showLayoutDialog({key:Gs,component:fa(()=>Bn(()=>import("./SubscriptionRequiredDialogContent-CDaF1jns.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]),import.meta.url)),props:{onClose:t},dialogComponentProps:{style:"width: min(1328px, 95vw); max-height: 90vh;",pt:{root:{class:"rounded-2xl bg-transparent"},content:{class:"!p-0 rounded-2xl border border-border-default bg-base-background/60 backdrop-blur-md shadow-[0_25px_80px_rgba(5,6,12,0.45)]"}}}})}return n(s,"show"),{show:s,hide:t}},"useSubscriptionDialog"),ed=H({__name:"GlobalToast",setup(e){const o=Wt(),t=Nt(),s=re();se(()=>t.messagesToAdd,i=>{i.length!==0&&(i.forEach(r=>{o.add(r)}),t.messagesToAdd=[])},{deep:!0}),se(()=>t.messagesToRemove,i=>{i.length!==0&&(i.forEach(r=>{o.remove(r)}),t.messagesToRemove=[])},{deep:!0}),se(()=>t.removeAllRequested,i=>{i&&(o.removeAllGroups(),t.removeAllRequested=!1)});function l(){const i=document.getElementById("dynamic-toast-style")||a(),r=document.querySelector(".graph-canvas-container")?.getBoundingClientRect();r&&(i.textContent=`
3
- .p-toast.p-component.p-toast-top-right {
4
- top: ${r.top+100}px !important;
5
- right: ${window.innerWidth-(r.left+r.width)+20}px !important;
6
- z-index: 10000 !important;
7
- }
8
- `)}n(l,"updateToastPosition");function a(){const i=document.createElement("style");return i.id="dynamic-toast-style",document.head.appendChild(i),i}return n(a,"createStyleElement"),se(()=>s.get("Comfy.UseNewMenu"),()=>Be(l),{immediate:!0}),se(()=>s.get("Comfy.Sidebar.Location"),()=>Be(l),{immediate:!0}),(i,r)=>(d(),W(h(Ia)))}});let mn,rl;(function(){const e=globalThis;typeof e.requestIdleCallback!="function"||typeof e.cancelIdleCallback!="function"?mn=n((o,t,s)=>{setTimeout(()=>{if(l)return;const a=Date.now()+15;t(Object.freeze({didTimeout:!0,timeRemaining(){return Math.max(0,a-Date.now())}}))});let l=!1;return{dispose(){l||(l=!0)}}},"_runWhenIdle"):mn=n((o,t,s)=>{const l=o.requestIdleCallback(t,typeof s=="number"?{timeout:s}:void 0);let a=!1;return{dispose(){a||(a=!0,o.cancelIdleCallback(l))}}},"_runWhenIdle"),rl=n((o,t)=>mn(globalThis,o,t),"runWhenGlobalIdle")})();const td={class:"fixed z-9999 flex flex-row no-drag top-0 right-0"},od=H({__name:"MenuHamburger",setup(e){const o=lt(),t=re(),s=n(()=>{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")}),(l,a)=>{const i=Ne("tooltip");return ce((d(),$("div",td,[ce((d(),W(J,{variant:"muted-textonly",size:"lg","aria-label":l.$t("menu.showMenu"),"aria-live":"assertive",onClick:s,onContextmenu:h(gi)},{default:A(()=>a[0]||(a[0]=[c("i",{class:"pi pi-bars"},null,-1)])),_:1},8,["aria-label","onContextmenu"])),[[i,{value:l.$t("menu.showMenu"),showDelay:300}]]),a[1]||(a[1]=c("div",{class:"window-actions-spacer"},null,-1))],512)),[[Je,h(o).focusMode]])}}}),nd=H({__name:"UnloadWindowConfirmDialog",setup(e){const o=re(),t=Re(),s=n(l=>{if(o.get("Comfy.Window.UnloadConfirmation")&&t.modifiedWorkflows.length>0)return l.preventDefault(),!0},"handleBeforeUnload");return We(()=>{window.addEventListener("beforeunload",s)}),it(()=>{window.removeEventListener("beforeunload",s)}),(l,a)=>(d(),$("div"))}}),sd={class:"w-full h-full absolute top-0 left-0 z-999 pointer-events-none flex flex-col"},ad={class:"side-toolbar-container"},ld=H({__name:"LiteGraphCanvasSplitterOverlay",setup(e){const o=lt(),t=re(),s=no(),l=Go(),{t:a}=fe(),i=y(()=>t.get("Comfy.Sidebar.Location")),r=y(()=>t.get("Comfy.Sidebar.UnifiedWidth")),{focusMode:u}=He(o),{activeSidebarTabId:f,activeSidebarTab:m}=He(l),{bottomPanelVisible:v}=He(so()),{isOpen:p}=He(s),w=y(()=>m.value!==null),C=y(()=>r.value?"unified-sidebar":f.value??"default-sidebar");function g({originalEvent:T}){T.preventDefault()}n(g,"onResizestart");const b=y(()=>`main-splitter${p.value?"-with-right-panel":""}-${i.value}`),k=y(()=>{if(i.value==="left")return{display:w.value?"flex":"none"}}),N=y(()=>{if(i.value==="right")return{display:w.value?"flex":"none"}});return(T,x)=>(d(),$("div",sd,[he(T.$slots,"workflow-tabs",{},void 0,!0),c("div",{class:K(["pointer-events-none flex flex-1 overflow-hidden",{"flex-row":i.value==="left","flex-row-reverse":i.value==="right"}])},[c("div",ad,[he(T.$slots,"side-toolbar",{},void 0,!0)]),(d(),W(h(Tn),{key:b.value,class:"bg-transparent pointer-events-none border-none flex-1 overflow-hidden","state-key":C.value,"state-storage":"local",onResizestart:g},{default:A(()=>[!h(u)&&(i.value==="left"||h(p))?(d(),W(h(_t),{key:0,class:K(i.value==="left"?h(ne)("side-bar-panel bg-comfy-menu-bg pointer-events-auto",w.value&&"min-w-78"):"bg-comfy-menu-bg pointer-events-auto"),"min-size":i.value==="left"?10:15,size:20,style:ye(k.value),role:i.value==="left"?"complementary":void 0,"aria-label":i.value==="left"?h(a)("sideToolbar.sidebar"):void 0},{default:A(()=>[i.value==="left"&&w.value?he(T.$slots,"side-bar-panel",{key:0},void 0,!0):i.value==="right"?he(T.$slots,"right-side-panel",{key:1},void 0,!0):E("",!0)]),_:3},8,["class","min-size","style","role","aria-label"])):E("",!0),O(h(_t),{size:80,class:"flex flex-col"},{default:A(()=>[he(T.$slots,"topmenu",{sidebarPanelVisible:w.value},void 0,!0),O(h(Tn),{class:"bg-transparent pointer-events-none border-none splitter-overlay-bottom mr-1 mb-1 ml-1 flex-1",layout:"vertical","pt:gutter":h(ne)("rounded-tl-lg rounded-tr-lg ",!(h(v)&&!h(u))&&"hidden"),"state-key":"bottom-panel-splitter","state-storage":"local",onResizestart:g},{default:A(()=>[O(h(_t),{class:"graph-canvas-panel relative"},{default:A(()=>[he(T.$slots,"graph-canvas-panel",{},void 0,!0)]),_:3}),ce(O(h(_t),{class:"bottom-panel border border-(--p-panel-border-color) max-w-full overflow-x-auto bg-comfy-menu-bg pointer-events-auto rounded-lg"},{default:A(()=>[he(T.$slots,"bottom-panel",{},void 0,!0)]),_:3},512),[[Je,h(v)&&!h(u)]])]),_:3},8,["pt:gutter"])]),_:3}),!h(u)&&(i.value==="right"||h(p))?(d(),W(h(_t),{key:1,class:K(i.value==="right"?h(ne)("side-bar-panel bg-comfy-menu-bg pointer-events-auto",w.value&&"min-w-78"):"bg-comfy-menu-bg pointer-events-auto"),"min-size":i.value==="right"?10:15,size:20,style:ye(N.value),role:i.value==="right"?"complementary":void 0,"aria-label":i.value==="right"?h(a)("sideToolbar.sidebar"):void 0},{default:A(()=>[i.value==="left"?he(T.$slots,"right-side-panel",{key:0},void 0,!0):i.value==="right"&&w.value?he(T.$slots,"side-bar-panel",{key:1},void 0,!0):E("",!0)]),_:3},8,["class","min-size","style","role","aria-label"])):E("",!0)]),_:3},8,["state-key"]))],2)]))}}),id=Le(ld,[["__scopeId","data-v-78b7f6de"]]),et=n(e=>({value:e,showDelay:300,hideDelay:0,pt:{text:{class:"border-node-component-tooltip-border bg-node-component-tooltip-surface text-node-component-tooltip border rounded-md px-2 py-1 text-xs leading-none shadow-none"},arrow:{class:"border-t-node-component-tooltip-border"}}}),"buildTooltipConfig"),rd=fa(()=>Bn(()=>import("./ComfyQueueButton-QhN0FmOY.js"),__vite__mapDeps([22,5,3,4,2,1,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,23]),import.meta.url)),ud={class:"flex h-full items-center"},cd=H({__name:"ComfyActionbar",setup(e){const o=re(),t=Se(),{t:s}=fe(),{isIdle:l}=He(ut()),a=y(()=>o.get("Comfy.UseNewMenu")),i=y(()=>a.value!=="Disabled"),r=document.querySelector(".workflow-tabs-container"),u=L(null),f=L(null),m=bs("Comfy.MenuPosition.Docked",!0),v=bs("Comfy.MenuPosition.Floating",{x:0,y:0}),{x:p,y:w,style:C,isDragging:g}=Al(u,{initialValue:{x:0,y:0},handle:f,containerElement:document.body,onMove:n(U=>{const R=r?.getBoundingClientRect().bottom??40;U.y<R&&(U.y=R)},"onMove")});Qt([p,w],([U,R])=>{v.value={x:U,y:R}},{debounce:300});const b=n(()=>{if(u.value){const U=window.innerWidth,R=window.innerHeight,F=u.value.offsetWidth,z=u.value.offsetHeight;if(F===0||z===0)return;if(v.value.x!==0||v.value.y!==0){p.value=Ht(v.value.x,0,U-F),w.value=Ht(v.value.y,0,R-z),T();return}p.value===0&&w.value===0&&(p.value=Ht((U-F)/2,0,U-F),w.value=Ht(R-z-10,0,R-z),T())}},"setInitialPosition");async function k(){await Be(),b()}n(k,"comfyRunButtonResolved"),se(i,async U=>{U&&await Be(b)}),Ee(f,"mousedown",()=>{});const N=L({x:p.value,y:w.value,windowWidth:window.innerWidth,windowHeight:window.innerHeight}),T=n(()=>{N.value={x:p.value,y:w.value,windowWidth:window.innerWidth,windowHeight:window.innerHeight}},"captureLastDragState");se(g,U=>{U||T()},{immediate:!0}),Ee(window,"resize",n(()=>{if(u.value){const U=window.innerWidth,R=window.innerHeight,F=u.value.offsetWidth,z=u.value.offsetHeight,G=N.value.x,q=N.value.windowWidth-(N.value.x+F),Q=N.value.y,te=N.value.windowHeight-(N.value.y+z),X=[{edge:"left",distance:G},{edge:"right",distance:q},{edge:"top",distance:Q},{edge:"bottom",distance:te}].reduce((Me,Fe)=>Fe.distance<Me.distance?Fe:Me),de=N.value.y/N.value.windowHeight,ae=N.value.x/N.value.windowWidth;X.edge==="left"?(p.value=X.distance,w.value=de*R):X.edge==="right"?(p.value=U-F-X.distance,w.value=de*R):X.edge==="top"?(p.value=ae*U,w.value=X.distance):(p.value=ae*U,w.value=R-z-X.distance),p.value=Ht(p.value,0,U-F),w.value=Ht(w.value,0,R-z)}},"adjustMenuPosition"));const S=L(!1),I=n(()=>{g.value&&(S.value=!0)},"onMouseEnterDropZone"),_=n(()=>{g.value&&(S.value=!1)},"onMouseLeaveDropZone");se(g,U=>{U?m.value&&(m.value=!1):(S.value&&(m.value=!0),S.value=!1)});const M=y(()=>et(s("menu.interrupt"))),P=n(async()=>{l.value||await t.execute("Comfy.Interrupt")},"cancelCurrentJob"),B=y(()=>ne("w-[200px] border-dashed border-blue-500 opacity-80","m-1.5 flex items-center justify-center self-stretch","rounded-md before:w-50 before:-ml-50 before:h-full","pointer-events-auto",S.value&&"border-[3px] opacity-100 scale-105 shadow-[0_0_20px] shadow-blue-500")),j=y(()=>ne("actionbar pointer-events-auto z-1300",g.value&&"select-none pointer-events-none",m.value?"p-0 static border-none bg-transparent":"fixed shadow-interface"));return(U,R)=>{const F=Ne("tooltip");return d(),$("div",ud,[h(g)&&!h(m)?(d(),$("div",{key:0,class:K(B.value),onMouseenter:I,onMouseleave:_},V(h(s)("actionbar.dockToTop")),35)):E("",!0),O(h(Fn),{class:K(["pointer-events-auto",j.value]),style:ye(h(C)),pt:{header:{class:"hidden"},content:{class:h(m)?"p-0":"p-1"}}},{default:A(()=>[c("div",{ref_key:"panelRef",ref:u,class:"flex items-center select-none gap-2"},[c("span",{ref_key:"dragHandleRef",ref:f,class:K(h(ne)("drag-handle cursor-grab w-3 h-max",h(g)&&"cursor-grabbing"))},null,2),(d(),W(Ll,{onResolve:k},{default:A(()=>[O(h(rd))]),_:1})),ce((d(),W(J,{variant:"destructive",size:"icon",disabled:h(l),"aria-label":h(s)("menu.interrupt"),onClick:P},{default:A(()=>R[0]||(R[0]=[c("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["disabled","aria-label"])),[[F,M.value,void 0,{bottom:!0}]])],512)]),_:1},8,["style","class","pt"])])}}}),dd=n((e,o)=>{const t=e?.type;return t?!o[t]:!1},"isNodeMissingDefinition"),pd=n((e,o)=>{if(!e)return[];const t=h(o);return hi(e,s=>dd(s,t))},"collectMissingNodes"),fd=n((e,o)=>pd(e,o).length>0,"graphHasMissingNodes"),md={key:0,class:"icon-[lucide--triangle-alert] text-warning-background"},vd={class:"p-breadcrumb-item-label px-2"},gd={key:2,class:"pi pi-angle-down text-[10px]"},hd=H({__name:"SubgraphBreadcrumbItem",props:{item:{},isActive:{type:Boolean,default:!1}},setup(e){const o=e,t=St(),s=y(()=>fd(Y.rootGraph,t.nodeDefsByName)),{t:l}=fe(),a=L(),i=gt(),r=Re(),u=tt(),f=L(!1),m=L(),v=L(),p=L(),w=n(async(x,S)=>{if(x&&x!==S){if(o.item.updateTitle?.(x),r.activeSubgraph)r.activeSubgraph.name=x;else if(r.activeWorkflow)try{await u.renameWorkflow(r.activeWorkflow,Va.basePath+yi(x))}catch(_){console.error(_),i.showErrorDialog(_);return}const I=Kn();I.restoreState(I.exportState())}},"rename"),C=o.item.key==="root",g=y(()=>s.value&&C?l("breadcrumbsMenu.missingNodesWarning"):o.item.label),b=y(()=>[{label:l("g.rename"),icon:"pi pi-pencil",command:N},{label:l("breadcrumbsMenu.duplicate"),icon:"pi pi-copy",command:n(async()=>{await u.duplicateWorkflow(r.activeWorkflow)},"command"),visible:C&&!o.item.isBlueprint},{separator:!0,visible:C},{label:l("menuLabels.Save"),icon:"pi pi-save",command:n(async()=>{await Se().execute("Comfy.SaveWorkflow")},"command"),visible:C},{label:l("menuLabels.Save As"),icon:"pi pi-save",command:n(async()=>{await Se().execute("Comfy.SaveWorkflowAs")},"command"),visible:C},{separator:!0},{label:l("breadcrumbsMenu.clearWorkflow"),icon:"pi pi-trash",command:n(async()=>{await Se().execute("Comfy.ClearWorkflow")},"command")},{separator:!0,visible:o.item.key==="root"&&o.item.isBlueprint},{label:l("subgraphStore.publish"),icon:"pi pi-copy",command:n(async()=>{await u.saveWorkflowAs(r.activeWorkflow)},"command"),visible:o.item.key==="root"&&o.item.isBlueprint},{separator:!0,visible:C},{label:o.item.isBlueprint?l("breadcrumbsMenu.deleteBlueprint"):l("breadcrumbsMenu.deleteWorkflow"),icon:"pi pi-times",command:n(async()=>{await u.deleteWorkflow(r.activeWorkflow)},"command"),visible:C}]),k=n(x=>{f.value||(x.detail===1?o.isActive?a.value?.toggle(x):o.item.command?.({item:o.item,originalEvent:x}):o.isActive&&x.detail===2&&(a.value?.hide(),x.stopPropagation(),x.preventDefault(),N()))},"handleClick"),N=n(()=>{f.value=!0,m.value=o.item.label,Be(()=>{v.value?.$el&&(v.value.$el.focus(),v.value.$el.select(),p.value&&(v.value.$el.style.width=`${Math.max(200,p.value.offsetWidth)}px`))})},"startRename"),T=n(async x=>{x&&await w(m.value,o.item.label),f.value=!1},"inputBlur");return(x,S)=>{const I=Ne("tooltip");return d(),$(oe,null,[ce((d(),$("a",{ref_key:"wrapperRef",ref:p,draggable:"false",href:"#",class:K(["p-breadcrumb-item-link h-12 cursor-pointer px-2",{"flex items-center gap-1":x.isActive,"p-breadcrumb-item-link-menu-visible":a.value?.overlayVisible,"p-breadcrumb-item-link-icon-visible":x.isActive,"active-breadcrumb-item":x.isActive}]),onClick:k},[s.value&&C?(d(),$("i",md)):E("",!0),c("span",vd,V(x.item.label),1),x.item.isBlueprint?(d(),W(h(Yt),{key:1,value:"Blueprint",severity:"primary"})):E("",!0),x.isActive?(d(),$("i",gd)):E("",!0)],2)),[[I,{value:g.value,showDelay:512},void 0,{bottom:!0}]]),x.isActive?(d(),W(h(Ma),{key:0,ref_key:"menu",ref:a,model:b.value,popup:!0,pt:{root:{style:"background-color: var(--comfy-menu-bg)"},itemLink:{class:"py-2"}}},null,8,["model"])):E("",!0),f.value?(d(),W(h(Zl),{key:1,ref_key:"itemInputRef",ref:v,modelValue:m.value,"onUpdate:modelValue":S[0]||(S[0]=_=>m.value=_),class:"fixed z-10000 px-2 py-2 text-[.8rem]",onBlur:S[1]||(S[1]=_=>T(!1)),onClick:S[2]||(S[2]=Ce(()=>{},["stop"])),onKeydown:[S[3]||(S[3]=Xt(_=>T(!0),["enter"])),S[4]||(S[4]=Xt(_=>T(!1),["esc"]))]},null,8,["modelValue"])):E("",!0)],64)}}}),yd=Le(hd,[["__scopeId","data-v-09d35179"]]),ul=n((e,o)=>{o={debounceTime:25,useMutationObserver:!0,useResizeObserver:!0,...o};const t=L(!1),s=[],l=L(!1),a=n(()=>{t.value=e.scrollWidth>e.clientWidth,o.onCheck?.(t.value)},"checkOverflowFn"),i=o.debounceTime?en(a,o.debounceTime):a;return o.useMutationObserver&&s.push(El(e,i,{subtree:!0,childList:!0}).stop),o.useResizeObserver&&s.push(ma(e,i).stop),{isOverflowing:_n(t),disposed:_n(l),checkOverflow:i,dispose:n(()=>{l.value=!0,s.forEach(r=>r())},"dispose")}},"useOverflowObserver"),js=28,Hs=8,vn=8,qs=20,bd=H({__name:"SubgraphBreadcrumb",setup(e){const o=Re(),t=Kn(),s=L(),l=y(()=>o.activeWorkflow?.filename),a=y(()=>Oa().isSubgraphBlueprint(o.activeWorkflow)),i=L(!1),r=L(!1),u=y(()=>s.value?s.value.$el?.querySelector(".p-breadcrumb-list"):null),f=y(()=>{const p=t.navigationStack.map(w=>({label:w.name,command:n(()=>{const C=ge().getCanvas();if(!C.graph)throw new TypeError("Canvas has no graph");C.setGraph(w)},"command"),updateTitle:n(C=>{const g=ge().getCanvas().graph?.rootGraph;g&&bi(g,w.id,b=>{b.title=C})},"updateTitle")}));return[m.value,...p]}),m=y(()=>({label:l.value,icon:"pi pi-home",key:"root",isBlueprint:a.value,command:n(()=>{const p=ge().getCanvas();if(!p.graph)throw new TypeError("Canvas has no graph");p.setGraph(p.graph.rootGraph)},"command")}));let v;return se(u,p=>{v?.dispose(),v=void 0,p&&(v=ul(p,{onCheck:n(w=>{if(r.value=w,i.value){if(!w){const C=[...p.querySelectorAll(".p-breadcrumb-item")];if(C.length<3)return;const g=C.filter(M=>M.querySelector(".p-breadcrumb-item-link-icon-visible")).length,b=p.querySelectorAll(".p-breadcrumb-separator"),N=b[b.length-1].offsetWidth,T=(js+vn+vn)*C.length+g*qs,x=(C.length-1)*N,S=(C.length-1)*(Hs*2),I=T+x+S,_=p.clientWidth;I<=_&&(i.value=!1)}}else w&&(i.value=!0)},"onCheck")}))}),va(()=>{v?.disposed.value||v?.checkOverflow()}),(p,w)=>(d(),$("div",{class:K(["subgraph-breadcrumb w-auto drop-shadow-[var(--interface-panel-drop-shadow)]",{"subgraph-breadcrumb-collapse":i.value,"subgraph-breadcrumb-overflow":r.value}]),style:ye({"--p-breadcrumb-gap":"0px","--p-breadcrumb-item-margin":`${Hs/2}px`,"--p-breadcrumb-item-min-width":`${js}px`,"--p-breadcrumb-item-padding":`${vn}px`,"--p-breadcrumb-icon-width":`${qs}px`})},[O(h(ei),{ref_key:"breadcrumbRef",ref:s,class:"w-fit rounded-lg p-0",model:f.value,pt:{item:{class:"pointer-events-auto"}},"aria-label":p.$t("g.graphNavigation")},{item:A(({item:C})=>[O(yd,{item:C,"is-active":C===f.value.at(-1)},null,8,["item","is-active"])]),separator:A(()=>w[0]||(w[0]=[c("span",{style:{transform:"scale(1.5)"}}," / ",-1)])),_:1},8,["model","aria-label"])],6))}}),wd=Le(bd,[["__scopeId","data-v-0e6867de"]]),Cd={class:"flex flex-col gap-3 p-2"},kd={class:"flex flex-col gap-1"},xd={class:"relative h-2 w-full overflow-hidden rounded-full border border-interface-stroke bg-interface-panel-surface"},Sd={class:"flex items-start justify-end gap-4 text-[12px] leading-none"},_d={class:"flex items-center gap-1 text-text-primary opacity-90"},Td={class:"font-bold"},$d={class:"flex items-center gap-1 text-text-secondary"},Nd={class:"inline-block max-w-[10rem] truncate"},Id={class:"flex items-center gap-1"},Md={class:"flex items-center gap-4 text-[12px] text-text-primary"},Pd={class:"flex items-center gap-2"},Dd={class:"opacity-90"},Ad={class:"font-bold"},Ld={class:"ml-1"},Ed={class:"flex items-center gap-2"},Vd={class:"opacity-90"},Od={class:"font-bold"},Rd={class:"ml-1"},Wd=H({__name:"QueueOverlayActive",props:{totalProgressStyle:{},currentNodeProgressStyle:{},totalPercentFormatted:{},currentNodePercentFormatted:{},currentNodeName:{},runningCount:{},queuedCount:{},bottomRowClass:{}},emits:["interruptAll","clearQueued","viewAllJobs"],setup(e){const{t:o}=fe(),t=y(()=>et(o("sideToolbar.queueProgressOverlay.cancelJobTooltip"))),s=y(()=>et(o("sideToolbar.queueProgressOverlay.clearQueueTooltip")));return(l,a)=>{const i=ga("i18n-t"),r=Ne("tooltip");return d(),$("div",Cd,[c("div",kd,[c("div",xd,[c("div",{class:"absolute inset-0 h-full rounded-full transition-[width]",style:ye(l.totalProgressStyle)},null,4),c("div",{class:"absolute inset-0 h-full rounded-full transition-[width]",style:ye(l.currentNodeProgressStyle)},null,4)]),c("div",Sd,[c("div",_d,[O(i,{keypath:"sideToolbar.queueProgressOverlay.total"},{percent:A(()=>[c("span",Td,V(l.totalPercentFormatted),1)]),_:1})]),c("div",$d,[c("span",null,V(h(o)("sideToolbar.queueProgressOverlay.currentNode")),1),c("span",Nd,V(l.currentNodeName),1),c("span",Id,[c("span",null,V(l.currentNodePercentFormatted),1)])])])]),c("div",{class:K(l.bottomRowClass)},[c("div",Md,[c("div",Pd,[c("span",Dd,[c("span",Ad,V(l.runningCount),1),c("span",Ld,V(h(o)("sideToolbar.queueProgressOverlay.running")),1)]),l.runningCount>0?ce((d(),W(J,{key:0,variant:"destructive",size:"icon","aria-label":h(o)("sideToolbar.queueProgressOverlay.interruptAll"),onClick:a[0]||(a[0]=u=>l.$emit("interruptAll"))},{default:A(()=>a[3]||(a[3]=[c("i",{class:"icon-[lucide--x] block size-4 leading-none text-text-primary"},null,-1)])),_:1},8,["aria-label"])),[[r,t.value,void 0,{top:!0}]]):E("",!0)]),c("div",Ed,[c("span",Vd,[c("span",Od,V(l.queuedCount),1),c("span",Rd,V(h(o)("sideToolbar.queueProgressOverlay.queuedSuffix")),1)]),l.queuedCount>0?ce((d(),W(J,{key:0,variant:"destructive",size:"icon","aria-label":h(o)("sideToolbar.queueProgressOverlay.clearQueued"),onClick:a[1]||(a[1]=u=>l.$emit("clearQueued"))},{default:A(()=>a[4]||(a[4]=[c("i",{class:"icon-[lucide--list-x] block size-4 leading-none text-text-primary"},null,-1)])),_:1},8,["aria-label"])),[[r,s.value,void 0,{top:!0}]]):E("",!0)])]),O(J,{class:"min-w-30 flex-1 px-2 py-0",variant:"secondary",size:"md",onClick:a[2]||(a[2]=u=>l.$emit("viewAllJobs"))},{default:A(()=>[$e(V(h(o)("sideToolbar.queueProgressOverlay.viewAllJobs")),1)]),_:1})],2)])}}}),zd={class:"inline-flex items-center gap-2"},Bd={key:0,class:"inline-flex items-center"},Fd={class:"inline-flex items-center gap-2"},Ud={key:0,class:"relative inline-flex h-6 items-center"},Gd=["src","alt"],jd={class:"text-[14px] font-normal text-text-primary"},Hd={class:"font-bold"},qd={class:"font-bold"},Kd={class:"font-bold"},Qd={class:"font-bold"},Yd=H({__name:"CompletionSummaryBanner",props:{mode:{},completedCount:{},failedCount:{},thumbnailUrls:{default:n(()=>[],"default")},ariaLabel:{}},emits:["click"],setup(e,{emit:o}){const t=e,s=o;return(l,a)=>{const i=ga("i18n-t");return d(),W(J,{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:a[0]||(a[0]=r=>s("click",r))},{default:A(()=>[c("span",zd,[t.mode==="allFailed"?(d(),$("span",Bd,a[1]||(a[1]=[c("i",{class:"ml-1 icon-[lucide--circle-alert] block size-4 leading-none text-destructive-background"},null,-1)]))):E("",!0),c("span",Fd,[t.mode!=="allFailed"?(d(),$("span",Ud,[(d(!0),$(oe,null,be(t.thumbnailUrls,(r,u)=>(d(),$("span",{key:r+u,class:"inline-block h-6 w-6 overflow-hidden rounded-[6px] border-0 bg-secondary-background",style:ye({marginLeft:u===0?"0":"-12px"})},[c("img",{src:r,alt:l.$t("sideToolbar.queueProgressOverlay.preview"),class:"h-full w-full object-cover"},null,8,Gd)],4))),128))])):E("",!0),c("span",jd,[t.mode==="allSuccess"?(d(),W(i,{key:0,keypath:"sideToolbar.queueProgressOverlay.jobsCompleted",plural:t.completedCount},{count:A(()=>[c("span",Hd,V(t.completedCount),1)]),_:1},8,["plural"])):t.mode==="mixed"?(d(),$(oe,{key:1},[O(i,{keypath:"sideToolbar.queueProgressOverlay.jobsCompleted",plural:t.completedCount},{count:A(()=>[c("span",qd,V(t.completedCount),1)]),_:1},8,["plural"]),a[2]||(a[2]=c("span",null,", ",-1)),O(i,{keypath:"sideToolbar.queueProgressOverlay.jobsFailed",plural:t.failedCount},{count:A(()=>[c("span",Kd,V(t.failedCount),1)]),_:1},8,["plural"])],64)):(d(),W(i,{key:2,keypath:"sideToolbar.queueProgressOverlay.jobsFailed",plural:t.failedCount},{count:A(()=>[c("span",Qd,V(t.failedCount),1)]),_:1},8,["plural"]))])])]),a[3]||(a[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={class:"pointer-events-auto"},Xd=H({__name:"QueueOverlayEmpty",props:{summary:{}},emits:["summaryClick"],setup(e){const{t:o}=fe();return(t,s)=>(d(),$("div",Jd,[O(Yd,{mode:t.summary.mode,"completed-count":t.summary.completedCount,"failed-count":t.summary.failedCount,"thumbnail-urls":t.summary.thumbnailUrls,"aria-label":h(o)("sideToolbar.queueProgressOverlay.expandCollapsedQueue"),onClick:s[0]||(s[0]=l=>t.$emit("summaryClick"))},null,8,["mode","completed-count","failed-count","thumbnail-urls","aria-label"])]))}}),Zd={class:"flex h-12 items-center justify-between gap-2 border-b border-interface-stroke px-2"},ep={class:"px-2 text-[14px] font-normal text-text-primary"},tp={key:0,class:"ml-4 inline-flex items-center gap-1 text-blue-100"},op={class:"font-bold"},np={class:"ml-1"},sp={key:0,class:"flex items-center gap-1"},ap={class:"flex flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3 font-inter"},lp=H({__name:"QueueOverlayHeader",props:{headerTitle:{},showConcurrentIndicator:{type:Boolean},concurrentWorkflowCount:{}},emits:["clearHistory"],setup(e,{emit:o}){const t=o,{t:s}=fe(),l=L(null),a=y(()=>et(s("g.more"))),i=n(u=>{l.value?.toggle(u)},"onMoreClick"),r=n(()=>{l.value?.hide(),t("clearHistory")},"onClearHistoryFromMenu");return(u,f)=>{const m=Ne("tooltip");return d(),$("div",Zd,[c("div",ep,[c("span",null,V(u.headerTitle),1),u.showConcurrentIndicator?(d(),$("span",tp,[f[0]||(f[0]=c("span",{class:"inline-block size-2 rounded-full bg-blue-100"},null,-1)),c("span",null,[c("span",op,V(u.concurrentWorkflowCount),1),c("span",np,V(h(s)("sideToolbar.queueProgressOverlay.running")),1)])])):E("",!0)]),h(kt)?E("",!0):(d(),$("div",sp,[ce((d(),W(J,{variant:"textonly",size:"icon","aria-label":h(s)("sideToolbar.queueProgressOverlay.moreOptions"),onClick:i},{default:A(()=>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,a.value,void 0,{top:!0}]]),O(h(Ze),{ref_key:"morePopoverRef",ref:l,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:A(()=>[c("div",ap,[O(J,{class:"w-full justify-start",variant:"textonly",size:"sm","aria-label":h(s)("sideToolbar.queueProgressOverlay.clearHistory"),onClick:r},{default:A(()=>[f[2]||(f[2]=c("i",{class:"icon-[lucide--file-x-2] size-4 text-muted"},null,-1)),c("span",null,V(h(s)("sideToolbar.queueProgressOverlay.clearHistory")),1)]),_:1},8,["aria-label"])])]),_:1},512)]))])}}}),ip={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"},rp={key:0,class:"px-2 py-1"},up=H({__name:"JobContextMenu",props:{entries:{}},emits:["action"],setup(e,{expose:o,emit:t}){const s=t,l=L(null);function a(u){l.value&&l.value.toggle(u)}n(a,"open");function i(){l.value?.hide()}n(i,"hide");function r(u){s("action",u)}return n(r,"onEntry"),o({open:a,hide:i}),(u,f)=>(d(),W(h(Ze),{ref_key:"jobItemPopoverRef",ref:l,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:A(()=>[c("div",ip,[(d(!0),$(oe,null,be(u.entries,m=>(d(),$(oe,{key:m.key},[m.kind==="divider"?(d(),$("div",rp,f[0]||(f[0]=[c("div",{class:"h-px bg-interface-stroke"},null,-1)]))):(d(),W(J,{key:1,class:"w-full justify-start bg-transparent",variant:"textonly",size:"sm","aria-label":m.label,onClick:n(v=>r(m),"onClick")},{default:A(()=>[m.icon?(d(),$("i",{key:0,class:K([m.icon,"block size-4 shrink-0 leading-none text-text-secondary"])},null,2)):E("",!0),c("span",null,V(m.label),1)]),_:2},1032,["aria-label","onClick"]))],64))),128))])]),_:1},512))}}),cp={class:"flex items-center justify-between gap-2 px-3"},dp={class:"min-w-0 flex-1 overflow-x-auto"},pp={class:"inline-flex items-center gap-1 whitespace-nowrap"},fp={class:"ml-2 flex shrink-0 items-center gap-2"},mp={key:0,class:"pointer-events-none absolute -top-1 -right-1 inline-block size-2 rounded-full bg-base-foreground"},vp={class:"flex min-w-[12rem] flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},gp={key:0,class:"icon-[lucide--check] size-4"},hp={key:0,class:"icon-[lucide--check] block size-4 leading-none text-text-secondary"},yp={key:0,class:"pointer-events-none absolute -top-1 -right-1 inline-block size-2 rounded-full bg-base-foreground"},bp={class:"flex min-w-[12rem] flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},wp={key:0,class:"icon-[lucide--check] size-4 text-text-secondary"},Cp={key:0,class:"mx-2 mt-1 h-px"},kp=H({__name:"JobFiltersBar",props:{selectedJobTab:{},selectedWorkflowFilter:{},selectedSortMode:{},hasFailedJobs:{type:Boolean}},emits:["update:selectedJobTab","update:selectedWorkflowFilter","update:selectedSortMode"],setup(e,{emit:o}){const t=e,s=o,{t:l}=fe(),a=L(null),i=L(null),r=y(()=>et(l("sideToolbar.queueProgressOverlay.filterBy"))),u=y(()=>et(l("sideToolbar.queueProgressOverlay.sortBy"))),f=y(()=>t.hasFailedJobs?_s:_s.filter(b=>b!=="Failed")),m=n(b=>{a.value&&a.value.toggle(b)},"onFilterClick"),v=n(b=>{a.value?.hide?.(),s("update:selectedWorkflowFilter",b)},"selectWorkflowFilter"),p=n(b=>{i.value&&i.value.toggle(b)},"onSortClick"),w=n(b=>{i.value?.hide?.(),s("update:selectedSortMode",b)},"selectSortMode"),C=n(b=>l(b==="All"?"g.all":b==="Completed"?"g.completed":"g.failed"),"tabLabel"),g=n(b=>b==="mostRecent"?l("queue.jobList.sortMostRecent"):b==="totalGenerationTime"?l("queue.jobList.sortTotalGenerationTime"):"","sortLabel");return(b,k)=>{const N=Ne("tooltip");return d(),$("div",cp,[c("div",dp,[c("div",pp,[(d(!0),$(oe,null,be(f.value,T=>(d(),W(J,{key:T,variant:b.selectedJobTab===T?"secondary":"muted-textonly",size:"sm",class:"px-3",onClick:n(x=>b.$emit("update:selectedJobTab",T),"onClick")},{default:A(()=>[$e(V(C(T)),1)]),_:2},1032,["variant","onClick"]))),128))])]),c("div",fp,[ce((d(),W(J,{key:0,variant:"secondary",size:"icon","aria-label":h(l)("sideToolbar.queueProgressOverlay.filterJobs"),onClick:m},{default:A(()=>[k[2]||(k[2]=c("i",{class:"icon-[lucide--list-filter] size-4"},null,-1)),b.selectedWorkflowFilter!=="all"?(d(),$("span",mp)):E("",!0)]),_:1},8,["aria-label"])),[[N,r.value,void 0,{top:!0}]]),(d(),W(h(Ze),{key:1,ref_key:"filterPopoverRef",ref:a,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:A(()=>[c("div",vp,[O(J,{class:"w-full justify-between",variant:"textonly",size:"sm",onClick:k[0]||(k[0]=T=>v("all"))},{default:A(()=>[c("span",null,V(h(l)("sideToolbar.queueProgressOverlay.filterAllWorkflows")),1),b.selectedWorkflowFilter==="all"?(d(),$("i",gp)):E("",!0)]),_:1}),k[3]||(k[3]=c("div",{class:"mx-2 mt-1 h-px"},null,-1)),O(J,{class:"w-full justify-between",variant:"textonly",onClick:k[1]||(k[1]=T=>v("current"))},{default:A(()=>[c("span",null,V(h(l)("sideToolbar.queueProgressOverlay.filterCurrentWorkflow")),1),b.selectedWorkflowFilter==="current"?(d(),$("i",hp)):E("",!0)]),_:1})])]),_:1},512)),ce((d(),W(J,{variant:"secondary",size:"icon","aria-label":h(l)("sideToolbar.queueProgressOverlay.sortJobs"),onClick:p},{default:A(()=>[k[4]||(k[4]=c("i",{class:"icon-[lucide--arrow-up-down] size-4"},null,-1)),b.selectedSortMode!=="mostRecent"?(d(),$("span",yp)):E("",!0)]),_:1},8,["aria-label"])),[[N,u.value,void 0,{top:!0}]]),O(h(Ze),{ref_key:"sortPopoverRef",ref:i,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-50"},content:{class:["bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg font-inter"]}}},{default:A(()=>[c("div",bp,[(d(!0),$(oe,null,be(h(Ts),(T,x)=>(d(),$(oe,{key:T},[O(J,{class:"w-full justify-between",variant:"textonly",size:"sm",onClick:n(S=>w(T),"onClick")},{default:A(()=>[c("span",null,V(g(T)),1),b.selectedSortMode===T?(d(),$("i",wp)):E("",!0)]),_:2},1032,["onClick"]),x<h(Ts).length-1?(d(),$("div",Cp)):E("",!0)],64))),128))])]),_:1},512)])])}}}),Ks=n(e=>{const t=e?.status?.messages;if(!Array.isArray(t)||!t.length)return null;const s=t.find(i=>Array.isArray(i)&&i[0]==="execution_error");if(!s)return null;const l=s[1],a=String(l?.exception_message??"");return{detail:l,message:a}},"extractExecutionError"),xp=n(({taskForJob:e,copyToClipboard:o,dialog:t})=>{const s=y(()=>Ks(e.value)?.message??"");return{errorMessageValue:s,copyErrorMessage:n(()=>{s.value&&o(s.value)},"copyErrorMessage"),reportJobError:n(()=>{const i=Ks(e.value);if(i?.detail){t.showExecutionErrorDialog(i.detail);return}s.value&&t.showErrorDialog(new Error(s.value),{reportType:"queueJobError"})},"reportJobError")}},"useJobErrorReporting"),Nn=n(e=>{const o=Math.max(0,Math.floor(e/1e3)),t=Math.floor(o/60),s=o%60;return`${t}m ${s}s`},"formatElapsedTime"),Sp=n(e=>e.historyTasks.map(o=>Number(o.executionTimeInSeconds)).filter(o=>typeof o=="number"&&!Number.isNaN(o)),"pickRecentDurations"),_p=n(({queueStore:e,executionStore:o,taskForJob:t,jobState:s,firstSeenTs:l,jobsAhead:a,nowTs:i})=>{const r=y(()=>o.runningWorkflowCount),u=y(()=>s.value==="pending"&&!!l.value&&(r.value??0)>1),f=y(()=>Sp(e).slice(-20)),m=y(()=>{const C=f.value;if(!C.length)return null;const g=C.slice().sort((_,M)=>_-M),b=g.reduce((_,M)=>_+M,0)/g.length,k=g[Math.min(g.length-1,Math.floor(g.length*.75))],N=e.runningTasks,T=i.value,x=N.map(_=>_.executionStartTimestamp).filter(_=>typeof _=="number").map(_=>{const M=Math.max(0,Math.floor((T-_)/1e3));return{lo:Math.max(0,Math.round(b-M)),hi:Math.max(0,Math.round(k-M))}});if(!x.length)return null;const S=x.reduce((_,M)=>Math.min(_,M.lo),1/0),I=x.reduce((_,M)=>Math.min(_,M.hi),1/0);return[S,I]}),v=y(()=>{const C=f.value;if(!C.length)return null;const g=a.value;if(g==null)return null;const b=C.slice().sort((S,I)=>S-I),k=b.reduce((S,I)=>S+I,0)/b.length,N=b[Math.min(b.length-1,Math.floor(b.length*.75))];if(g<=0)return m.value??[0,0];const T=Math.max(1,r.value||1),x=Math.ceil(g/T);return[Math.round(k*x),Math.round(N*x)]}),p=y(()=>{const C=f.value;if(!C.length)return null;const g=C.slice().sort((M,P)=>M-P),b=g.reduce((M,P)=>M+P,0)/g.length,k=g[Math.min(g.length-1,Math.floor(g.length*.75))],N=t.value,x=(s.value==="running"?N?.executionStartTimestamp:void 0)??l.value,S=x?Math.max(0,Math.floor((i.value-x)/1e3)):0,I=Math.max(0,Math.round(b-S)),_=Math.max(0,Math.round(k-S));return[I,_]}),w=y(()=>{const C=t.value,b=(s.value==="running"?C?.executionStartTimestamp:void 0)??l.value;return b?Nn(i.value-b):""});return{runningWorkflowCount:r,showParallelQueuedStats:u,estimateRangeSeconds:v,estimateRemainingRangeSeconds:p,timeElapsedValue:w}},"useQueueEstimates"),Tp={class:"w-[300px] min-w-[260px] rounded-lg border border-interface-stroke bg-interface-panel-surface shadow-md"},$p={class:"flex items-center border-b border-interface-stroke p-4"},Np={class:"text-[0.875rem] leading-normal font-normal text-text-primary"},Ip={class:"flex flex-col gap-6 px-4 pt-4 pb-4"},Mp={class:"grid grid-cols-2 items-center gap-x-2 gap-y-2"},Pp={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Dp={class:"flex min-w-0 items-center text-[0.75rem] leading-normal font-normal text-text-secondary"},Ap={class:"block min-w-0 truncate"},Lp={key:0,class:"grid grid-cols-2 items-center gap-x-2 gap-y-2"},Ep={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Vp={class:"flex min-w-0 items-center text-[0.75rem] leading-normal font-normal text-text-secondary"},Op={class:"block min-w-0 truncate"},Rp={key:1,class:"grid grid-cols-2 gap-x-2"},Wp={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},zp={class:"flex items-center justify-between gap-4"},Bp={class:"col-span-2 mt-2 rounded bg-interface-panel-hover-surface px-4 py-2 text-[0.75rem] leading-normal text-text-secondary"},Fp=H({__name:"JobDetailsPopover",props:{jobId:{},workflowId:{}},setup(e){const o=e,t=y(()=>u("g.copy")),s=Re(),l=zt(),a=ut(),i=gt(),{locale:r,t:u}=fe(),f=y(()=>{const Q=o.workflowId;if(!Q)return"";const te=s.activeWorkflow?.activeState?.id;return te&&te===Q?s.activeWorkflow?.filename??Q:Q}),m=y(()=>o.jobId),{copyToClipboard:v}=wi(),p=n(()=>{v(m.value)},"copyJobId"),w=y(()=>{const Q=o.jobId,te=n(le=>le.find(X=>String(X.promptId??"")===String(Q)),"findIn");return te(l.pendingTasks)||te(l.runningTasks)||te(l.historyTasks)||null}),C=y(()=>{const Q=w.value;if(!Q)return null;const te=a.isPromptInitializing(String(Q?.promptId));return Ra(Q,te)}),g=y(()=>w.value?.createTime),b=y(()=>g.value!==void 0?$s(g.value,r.value):""),k=y(()=>{const Q=w.value;return Q?Number(Q.queueIndex):null}),N=y(()=>{const Q=k.value;return Q==null?null:l.pendingTasks.filter(le=>Number(le.queueIndex)<Q).length}),T=y(()=>{if(N.value==null)return"";const Q=N.value;return u("queue.jobDetails.queuePositionValue",{count:Q},Q)}),x=L(Date.now());let S=null;We(()=>{S=window.setInterval(()=>{x.value=Date.now()},1e3)}),vt(()=>{S!=null&&(clearInterval(S),S=null)});const{showParallelQueuedStats:I,estimateRangeSeconds:_,estimateRemainingRangeSeconds:M,timeElapsedValue:P}=_p({queueStore:l,executionStore:a,taskForJob:w,jobState:C,firstSeenTs:g,jobsAhead:N,nowTs:x}),B=n((Q,te)=>{if(te<=60){const de=Math.max(1,Math.round(te)),ae=Math.max(1,Math.min(de,Math.round(Q)));return ae===de?u("queue.jobDetails.eta.seconds",{count:de},de):u("queue.jobDetails.eta.secondsRange",{lo:ae,hi:de})}if(Q>=60&&te<90)return u("queue.jobDetails.eta.minutes",{count:1},1);const le=Math.max(1,Math.floor(Q/60)),X=Math.max(le,Math.ceil(te/60));return le===X?u("queue.jobDetails.eta.minutes",{count:le},le):u("queue.jobDetails.eta.minutesRange",{lo:le,hi:X})},"formatEta"),j=y(()=>{const Q=_.value;if(!Q)return"";const[te,le]=Q;return B(te,le)}),U=y(()=>{const Q=M.value;if(!Q)return"";const[te,le]=Q;return B(te,le)}),R=y(()=>[{label:u("queue.jobDetails.workflow"),value:f.value},{label:u("queue.jobDetails.jobId"),value:m.value,canCopy:!0}]),F=y(()=>{if(C.value==="pending"){if(!g.value)return[];const Q=[{label:u("queue.jobDetails.queuedAt"),value:b.value}];return I.value&&Q.push({label:u("queue.jobDetails.queuePosition"),value:T.value},{label:u("queue.jobDetails.timeElapsed"),value:P.value},{label:u("queue.jobDetails.estimatedStartIn"),value:j.value}),Q}if(C.value==="running")return g.value?[{label:u("queue.jobDetails.queuedAt"),value:b.value},{label:u("queue.jobDetails.timeElapsed"),value:P.value},{label:u("queue.jobDetails.estimatedFinishIn"),value:U.value}]:[];if(C.value==="completed"){const Q=w.value,te=Q?.executionEndTimestamp,le=Q?.executionTime,X=te?$s(te,r.value):"",de=le!==void 0?Nn(le):"";return le!==void 0&&(le/36e5).toFixed(3)+"",[{label:u("queue.jobDetails.generatedOn"),value:X},{label:u("queue.jobDetails.totalGenerationTime"),value:de}]}if(C.value==="failed"){const te=w.value?.executionTime,le=te!==void 0?Nn(te):"";return te!==void 0&&(te/36e5).toFixed(3)+"",[{label:u("queue.jobDetails.queuedAt"),value:b.value},{label:u("queue.jobDetails.failedAfter"),value:le}]}return[]}),{errorMessageValue:z,copyErrorMessage:G,reportJobError:q}=xp({taskForJob:w,copyToClipboard:v,dialog:i});return(Q,te)=>(d(),$("div",Tp,[c("div",$p,[c("span",Np,V(h(u)("queue.jobDetails.header")),1)]),c("div",Ip,[c("div",Mp,[(d(!0),$(oe,null,be(R.value,le=>(d(),$(oe,{key:le.label},[c("div",Pp,V(le.label),1),c("div",Dp,[c("span",Ap,V(le.value),1),le.canCopy?(d(),W(J,{key:0,size:"icon",variant:"muted-textonly","aria-label":t.value,onClick:Ce(p,["stop"])},{default:A(()=>te[0]||(te[0]=[c("i",{class:"icon-[lucide--copy] size-4"},null,-1)])),_:1},8,["aria-label"])):E("",!0)])],64))),128))]),F.value.length?(d(),$("div",Lp,[(d(!0),$(oe,null,be(F.value,le=>(d(),$(oe,{key:le.label},[c("div",Ep,V(le.label),1),c("div",Vp,[c("span",Op,V(le.value),1)])],64))),128))])):E("",!0),C.value==="failed"?(d(),$("div",Rp,[c("div",Wp,V(h(u)("queue.jobDetails.errorMessage")),1),c("div",zp,[O(J,{class:"justify-start px-0",variant:"muted-textonly",size:"sm","icon-position":"right",onClick:Ce(h(G),["stop"])},{default:A(()=>[c("span",null,V(t.value),1),te[1]||(te[1]=c("i",{class:"icon-[lucide--copy] block size-3.5 leading-none"},null,-1))]),_:1},8,["onClick"]),O(J,{class:"justify-start px-0",variant:"muted-textonly",size:"sm","icon-position":"right",onClick:Ce(h(q),["stop"])},{default:A(()=>[c("span",null,V(h(u)("queue.jobDetails.report")),1),te[2]||(te[2]=c("i",{class:"icon-[lucide--message-circle-warning] block size-3.5 leading-none"},null,-1))]),_:1},8,["onClick"])]),c("div",Bp,V(h(z)),1)])):E("",!0)])]))}}),Up={class:"w-[300px] min-w-[260px] rounded-lg shadow-md"},Gp={class:"p-3"},jp={class:"relative aspect-square w-full overflow-hidden rounded-lg"},Hp=["src","alt"],qp={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)"}},Kp={class:"mt-2 text-center"},Qp=["title"],Yp={key:0,class:"mt-1 text-[0.75rem] leading-normal text-text-secondary"},Jp=H({inheritAttrs:!1,__name:"QueueAssetPreview",props:{imageUrl:{},name:{},timeLabel:{}},emits:["image-click"],setup(e){const o=L(null),t=L(null),s=L(null),l=n(()=>{const a=o.value;a&&(t.value=a.naturalWidth||null,s.value=a.naturalHeight||null)},"onImgLoad");return(a,i)=>(d(),$("div",Up,[c("div",Gp,[c("div",jp,[c("img",{ref_key:"imgRef",ref:o,src:a.imageUrl,alt:a.name,class:"h-full w-full cursor-pointer object-contain",onClick:i[0]||(i[0]=r=>a.$emit("image-click")),onLoad:l},null,40,Hp),a.timeLabel?(d(),$("div",qp,V(a.timeLabel),1)):E("",!0)]),c("div",Kp,[c("div",{class:"truncate text-[0.875rem] leading-normal font-semibold text-text-primary",title:a.name},V(a.name),9,Qp),t.value&&s.value?(d(),$("div",Yp,V(t.value)+"x"+V(s.value),1)):E("",!0)])])]))}}),Xp={class:"relative z-1 flex items-center gap-1"},Zp={class:"relative inline-flex items-center justify-center"},ef={class:"inline-flex h-6 w-6 items-center justify-center overflow-hidden rounded-[6px]"},tf=["src"],of={class:"relative z-1 min-w-0 flex-1"},nf=["title"],sf={class:"relative z-1 flex items-center gap-2 text-text-secondary"},af={key:"actions",class:"inline-flex items-center gap-2 pr-1"},lf={key:"secondary",class:"pr-2"},rf=H({__name:"QueueJobItem",props:{jobId:{},workflowId:{default:void 0},state:{},title:{},rightText:{default:""},iconName:{default:void 0},iconImageUrl:{default:void 0},showClear:{type:Boolean,default:void 0},showMenu:{type:Boolean,default:void 0},progressTotalPercent:{default:void 0},progressCurrentPercent:{default:void 0},activeDetailsId:{default:null}},emits:["cancel","delete","menu","view","details-enter","details-leave"],setup(e,{emit:o}){const t=e,s=o,{t:l}=fe(),{progressBarContainerClass:a,progressBarPrimaryClass:i,progressBarSecondaryClass:r,hasProgressPercent:u,hasAnyProgressPercent:f,progressPercentStyle:m}=Ci(),v=y(()=>et(l("g.cancel"))),p=y(()=>et(l("g.delete"))),w=y(()=>et(l("g.more"))),C=L(null),g=y(()=>t.activeDetailsId===t.jobId),b=n(()=>{x.value||s("details-enter",t.jobId)},"onRowEnter"),k=n(()=>s("details-leave",t.jobId),"onRowLeave"),N=n(()=>s("details-enter",t.jobId),"onPopoverEnter"),T=n(()=>s("details-leave",t.jobId),"onPopoverLeave"),x=L(!1),S=L(null),I=L(null),_=n(()=>{S.value!==null&&(clearTimeout(S.value),S.value=null)},"clearPreviewHideTimer"),M=n(()=>{I.value!==null&&(clearTimeout(I.value),I.value=null)},"clearPreviewShowTimer"),P=y(()=>t.state==="completed"&&!!t.iconImageUrl),B=n(()=>{P.value&&(_(),M(),I.value=window.setTimeout(()=>{x.value=!0,I.value=null},200))},"scheduleShowPreview"),j=n(()=>{_(),M(),S.value=window.setTimeout(()=>{x.value=!1,S.value=null},150)},"scheduleHidePreview"),U=n(()=>B(),"onIconEnter"),R=n(()=>j(),"onIconLeave"),F=n(()=>B(),"onPreviewEnter"),z=n(()=>j(),"onPreviewLeave"),G=L(null),q=n(()=>{const Ve=C.value;if(!Ve)return;const xe=Ve.getBoundingClientRect(),ze=8;G.value={top:xe.top,right:window.innerWidth-xe.left+ze}},"updatePopoverPosition"),Q=y(()=>g.value||x.value&&P.value);se(Q,Ve=>{Ve?Be(q):G.value=null},{immediate:!1});const te=L(!1),le=y(()=>t.iconName?t.iconName:Ns(t.state)),X=y(()=>t.state==="pending"&&le.value===Ns("pending")&&!t.iconImageUrl),de=y(()=>t.showClear!==void 0?t.showClear:t.state!=="completed"),ae=n(()=>s("details-leave",t.jobId),"emitDetailsLeave"),Me=n(()=>{ae(),s("cancel")},"onCancelClick"),Fe=n(()=>{ae(),s("delete")},"onDeleteClick"),Ke=n(Ve=>{(t.showMenu===void 0||t.showMenu)&&s("menu",Ve)},"onContextMenu");return(Ve,xe)=>{const ze=Ne("tooltip");return d(),$("div",{ref_key:"rowRef",ref:C,class:"relative",onMouseenter:b,onMouseleave:k,onContextmenu:Ce(Ke,["stop","prevent"])},[(d(),W(Tt,{to:"body"},[!x.value&&g.value&&G.value?(d(),$("div",{key:0,class:"fixed z-50",style:ye({top:`${G.value.top}px`,right:`${G.value.right}px`}),onMouseenter:N,onMouseleave:T},[O(Fp,{"job-id":t.jobId,"workflow-id":t.workflowId},null,8,["job-id","workflow-id"])],36)):E("",!0)])),(d(),W(Tt,{to:"body"},[x.value&&P.value&&G.value?(d(),$("div",{key:0,class:"fixed z-50",style:ye({top:`${G.value.top}px`,right:`${G.value.right}px`}),onMouseenter:F,onMouseleave:z},[O(Jp,{"image-url":Ve.iconImageUrl,name:t.title,"time-label":Ve.rightText||void 0,onImageClick:xe[0]||(xe[0]=Ye=>s("view"))},null,8,["image-url","name","time-label"])],36)):E("",!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:xe[3]||(xe[3]=Ye=>te.value=!0),onMouseleave:xe[4]||(xe[4]=Ye=>te.value=!1)},[t.state==="running"&&h(f)(t.progressTotalPercent,t.progressCurrentPercent)?(d(),$("div",{key:0,class:K(h(a))},[h(u)(t.progressTotalPercent)?(d(),$("div",{key:0,class:K(h(i)),style:ye(h(m)(t.progressTotalPercent))},null,6)):E("",!0),h(u)(t.progressCurrentPercent)?(d(),$("div",{key:1,class:K(h(r)),style:ye(h(m)(t.progressCurrentPercent))},null,6)):E("",!0)],2)):E("",!0),c("div",Xp,[c("div",Zp,[c("div",{class:"absolute left-1/2 top-1/2 size-10 -translate-x-1/2 -translate-y-1/2",onMouseenter:Ce(U,["stop"]),onMouseleave:Ce(R,["stop"])},null,32),c("div",ef,[Ve.iconImageUrl?(d(),$("img",{key:0,src:Ve.iconImageUrl,class:"h-full w-full object-cover"},null,8,tf)):(d(),$("i",{key:1,class:K(h(ne)(le.value,"size-4",X.value&&"animate-spin"))},null,2))])])]),c("div",of,[c("div",{class:"truncate opacity-90",title:t.title},[he(Ve.$slots,"primary",{},()=>[$e(V(t.title),1)])],8,nf)]),c("div",sf,[O(Yo,{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:A(()=>[te.value?(d(),$("div",af,[t.state==="failed"&&de.value?ce((d(),W(J,{key:0,variant:"destructive",size:"icon","aria-label":h(l)("g.delete"),onClick:Ce(Fe,["stop"])},{default:A(()=>xe[5]||(xe[5]=[c("i",{class:"icon-[lucide--trash-2] size-4"},null,-1)])),_:1},8,["aria-label"])),[[ze,p.value,void 0,{top:!0}]]):t.state!=="completed"&&t.state!=="running"&&de.value?ce((d(),W(J,{key:1,variant:"destructive",size:"icon","aria-label":h(l)("g.cancel"),onClick:Ce(Me,["stop"])},{default:A(()=>xe[6]||(xe[6]=[c("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"])),[[ze,v.value,void 0,{top:!0}]]):t.state==="completed"?(d(),W(J,{key:2,variant:"textonly",size:"sm",onClick:xe[1]||(xe[1]=Ce(Ye=>s("view"),["stop"]))},{default:A(()=>[$e(V(h(l)("menuLabels.View")),1)]),_:1})):E("",!0),t.showMenu===void 0||t.showMenu?ce((d(),W(J,{key:3,variant:"textonly",size:"icon-sm","aria-label":h(l)("g.more"),onClick:xe[2]||(xe[2]=Ce(Ye=>s("menu",Ye),["stop"]))},{default:A(()=>xe[7]||(xe[7]=[c("i",{class:"icon-[lucide--more-horizontal] size-4"},null,-1)])),_:1},8,["aria-label"])),[[ze,w.value,void 0,{top:!0}]]):E("",!0)])):t.state!=="running"?(d(),$("div",lf,[he(Ve.$slots,"secondary",{},()=>[$e(V(t.rightText),1)])])):E("",!0)]),_:3}),t.state==="running"&&de.value?ce((d(),W(J,{key:0,variant:"destructive",size:"icon","aria-label":h(l)("g.cancel"),onClick:Ce(Me,["stop"])},{default:A(()=>xe[8]||(xe[8]=[c("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"])),[[ze,v.value,void 0,{top:!0}]]):E("",!0)])],32)],544)}}}),uf={class:"flex flex-col gap-4 px-3 pb-4"},cf={class:"text-[12px] leading-none text-text-secondary"},df=H({__name:"JobGroupsList",props:{displayedJobGroups:{}},emits:["cancelItem","deleteItem","menu","viewItem"],setup(e,{emit:o}){const t=e,s=o,l=n(C=>{s("cancelItem",C)},"emitCancelItem"),a=n(C=>{s("deleteItem",C)},"emitDeleteItem"),i=L(null),r=L(null),u=L(null),f=n(()=>{r.value!==null&&(clearTimeout(r.value),r.value=null)},"clearHideTimer"),m=n(()=>{u.value!==null&&(clearTimeout(u.value),u.value=null)},"clearShowTimer"),v=n(C=>{f(),m(),u.value=window.setTimeout(()=>{i.value=C,u.value=null},200)},"onDetailsEnter"),p=n(C=>{f(),m(),r.value=window.setTimeout(()=>{i.value===C&&(i.value=null),r.value=null},150)},"onDetailsLeave"),w=n(()=>{f(),m(),i.value=null},"resetActiveDetails");return se(()=>t.displayedJobGroups,C=>{const g=i.value;if(!g)return;C.some(k=>k.items.some(N=>N.id===g))||w()}),it(w),(C,g)=>(d(),$("div",uf,[(d(!0),$(oe,null,be(C.displayedJobGroups,b=>(d(),$("div",{key:b.key,class:"flex flex-col gap-2"},[c("div",cf,V(b.label),1),(d(!0),$(oe,null,be(b.items,k=>(d(),W(rf,{key:k.id,"job-id":k.id,"workflow-id":k.taskRef?.workflow?.id,state:k.state,title:k.title,"right-text":k.meta,"icon-name":k.iconName,"icon-image-url":k.iconImageUrl,"show-clear":k.showClear,"show-menu":!0,"progress-total-percent":k.progressTotalPercent,"progress-current-percent":k.progressCurrentPercent,"running-node-name":k.runningNodeName,"active-details-id":i.value,onCancel:n(N=>l(k),"onCancel"),onDelete:n(N=>a(k),"onDelete"),onMenu:n(N=>C.$emit("menu",k,N),"onMenu"),onView:n(N=>C.$emit("viewItem",k),"onView"),onDetailsEnter:v,onDetailsLeave:p},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))]))}}),pf={class:"flex w-full flex-col gap-4"},ff={class:"flex items-center justify-between px-3"},mf={class:"ml-4 inline-flex items-center"},vf={class:"inline-flex h-6 items-center text-[12px] leading-none text-text-primary opacity-90"},gf={class:"font-bold"},hf={class:"ml-1"},yf={class:"flex-1 min-h-0 overflow-y-auto"},bf=H({__name:"QueueOverlayExpanded",props:{headerTitle:{},showConcurrentIndicator:{type:Boolean},concurrentWorkflowCount:{},queuedCount:{},selectedJobTab:{},selectedWorkflowFilter:{},selectedSortMode:{},displayedJobGroups:{},hasFailedJobs:{type:Boolean}},emits:["showAssets","clearHistory","clearQueued","update:selectedJobTab","update:selectedWorkflowFilter","update:selectedSortMode","cancelItem","deleteItem","viewItem"],setup(e,{emit:o}){const t=o,{t:s}=fe(),l=L(null),a=L(null),{jobMenuEntries:i}=ki(()=>l.value,v=>t("viewItem",v)),r=n(v=>{t("cancelItem",v)},"onCancelItemEvent"),u=n(v=>{t("deleteItem",v)},"onDeleteItemEvent"),f=n((v,p)=>{l.value=v,a.value?.open(p)},"onMenuItem"),m=n(async v=>{v.kind!=="divider"&&(v.onClick&&await v.onClick(),a.value?.hide())},"onJobMenuAction");return(v,p)=>(d(),$("div",pf,[O(lp,{"header-title":v.headerTitle,"show-concurrent-indicator":v.showConcurrentIndicator,"concurrent-workflow-count":v.concurrentWorkflowCount,onClearHistory:p[0]||(p[0]=w=>v.$emit("clearHistory"))},null,8,["header-title","show-concurrent-indicator","concurrent-workflow-count"]),c("div",ff,[O(J,{class:"grow gap-1 justify-center",variant:"secondary",size:"sm",onClick:p[1]||(p[1]=w=>v.$emit("showAssets"))},{default:A(()=>[p[7]||(p[7]=c("i",{class:"icon-[comfy--image-ai-edit] size-4"},null,-1)),c("span",null,V(h(s)("sideToolbar.queueProgressOverlay.showAssets")),1)]),_:1}),c("div",mf,[c("div",vf,[c("span",gf,V(v.queuedCount),1),c("span",hf,V(h(s)("sideToolbar.queueProgressOverlay.queuedSuffix")),1)]),v.queuedCount>0?(d(),W(J,{key:0,class:"ml-2",variant:"destructive",size:"icon","aria-label":h(s)("sideToolbar.queueProgressOverlay.clearQueued"),onClick:p[2]||(p[2]=w=>v.$emit("clearQueued"))},{default:A(()=>p[8]||(p[8]=[c("i",{class:"icon-[lucide--list-x] size-4"},null,-1)])),_:1},8,["aria-label"])):E("",!0)])]),O(kp,{"selected-job-tab":v.selectedJobTab,"selected-workflow-filter":v.selectedWorkflowFilter,"selected-sort-mode":v.selectedSortMode,"has-failed-jobs":v.hasFailedJobs,"onUpdate:selectedJobTab":p[3]||(p[3]=w=>v.$emit("update:selectedJobTab",w)),"onUpdate:selectedWorkflowFilter":p[4]||(p[4]=w=>v.$emit("update:selectedWorkflowFilter",w)),"onUpdate:selectedSortMode":p[5]||(p[5]=w=>v.$emit("update:selectedSortMode",w))},null,8,["selected-job-tab","selected-workflow-filter","selected-sort-mode","has-failed-jobs"]),c("div",yf,[O(df,{"displayed-job-groups":v.displayedJobGroups,onCancelItem:r,onDeleteItem:u,onViewItem:p[6]||(p[6]=w=>v.$emit("viewItem",w)),onMenu:f},null,8,["displayed-job-groups"])]),O(up,{ref_key:"jobContextMenuRef",ref:a,entries:h(i),onAction:m},null,8,["entries"])]))}}),wf={class:"w-[360px] rounded-2xl border border-interface-stroke bg-interface-panel-surface text-text-primary shadow-interface font-inter"},Cf={class:"flex items-center justify-between border-b border-interface-stroke px-4 py-4"},kf={class:"m-0 text-[14px] font-normal leading-none"},xf={class:"flex flex-col gap-4 px-4 py-4 text-[14px] text-text-secondary"},Sf={class:"m-0"},_f={class:"m-0"},Tf={class:"flex items-center justify-end px-4 py-4"},$f={class:"flex items-center gap-4 leading-none"},Nf=H({__name:"QueueClearHistoryDialog",setup(e){const o=rt(),t=zt(),{t:s}=fe(),{wrapWithErrorHandlingAsync:l}=Bt(),a=L(!1),i=l(async()=>{await t.clear(["history"]),o.closeDialog()},void 0,()=>{a.value=!1}),r=n(async()=>{a.value||(a.value=!0,await i())},"onConfirm"),u=n(()=>{o.closeDialog()},"onCancel");return(f,m)=>(d(),$("section",wf,[c("header",Cf,[c("p",kf,V(h(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogTitle")),1),O(J,{size:"icon",variant:"muted-textonly","aria-label":h(s)("g.close"),onClick:u},{default:A(()=>m[0]||(m[0]=[c("i",{class:"icon-[lucide--x] block size-4 leading-none"},null,-1)])),_:1},8,["aria-label"])]),c("div",xf,[c("p",Sf,V(h(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogDescription")),1),c("p",_f,V(h(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogAssetsNote")),1)]),c("footer",Tf,[c("div",$f,[O(J,{variant:"muted-textonly",size:"lg",onClick:u},{default:A(()=>[$e(V(h(s)("g.cancel")),1)]),_:1}),O(J,{variant:"secondary",size:"lg",disabled:a.value,onClick:r},{default:A(()=>[$e(V(h(s)("g.clear")),1)]),_:1},8,["disabled"])])])]))}}),If=n(()=>{const e=zt(),o=ut(),t=y(()=>e.runningTasks.length>0||!o.isIdle),s=L(null),l=L(null),a=L(null),i=n(()=>{a.value!==null&&(clearTimeout(a.value),a.value=null)},"clearDismissTimer"),r=n(()=>{i(),a.value=window.setTimeout(()=>{l.value=null,a.value=null},6e3)},"startDismissTimer"),u=n(()=>{l.value=null,i()},"clearSummary");return se(t,(m,v)=>{if(!v&&m&&(s.value=Date.now()),v&&!m){const p=s.value??0,w=e.historyTasks.filter(N=>{const T=N.executionEndTimestamp;return typeof T=="number"&&T>=p});if(!w.length){l.value=null,i();return}let C=0,g=0;const b=[];for(const N of w){const T=Ra(N,!1);if(T==="completed"){C++;const x=N.previewOutput;x?.isImage&&b.push(x.urlWithTimestamp)}else T==="failed"&&g++}if(C===0&&g===0){l.value=null,i();return}let k="mixed";g===0?k="allSuccess":C===0&&(k="allFailed"),l.value={mode:k,completedCount:C,failedCount:g,thumbnailUrls:b.slice(0,3)},r()}},{immediate:!0}),{summary:y(()=>l.value),clearSummary:u}},"useCompletionSummary");function Mf(e){const o=L(-1),t=Xe([]);return{galleryActiveIndex:o,galleryItems:t,onViewItem:n(l=>{const a=e().flatMap(u=>{const f=u.previewOutput;return f&&f.supportsPreview?[f]:[]});if(!a.length)return;t.value=a;const i=l.taskRef?.previewOutput?.url,r=i?a.findIndex(u=>u.url===i):0;o.value=r>=0?r:0},"onViewItem")}}n(Mf,"useResultGallery");const Pf={class:K(["flex","justify-end","w-full","pointer-events-none"])},Df=H({__name:"QueueProgressOverlay",props:{expanded:{type:Boolean},menuHovered:{type:Boolean,default:!1}},emits:["update:expanded"],setup(e,{emit:o}){const t=e,s=o,{t:l}=fe(),a=zt(),i=Se(),r=ut(),u=Go(),f=rt(),m=jn(),v=xi(),{wrapWithErrorHandlingAsync:p}=Bt(),{totalPercentFormatted:w,currentNodePercentFormatted:C,totalProgressStyle:g,currentNodeProgressStyle:b}=Si(),k=L(!1),N=y(()=>k.value||t.menuHovered),T=L(!1),x=y({get:n(()=>t.expanded===void 0?T.value:t.expanded,"get"),set:n(Ie=>{t.expanded===void 0&&(T.value=Ie),s("update:expanded",Ie)},"set")}),{summary:S,clearSummary:I}=If(),_=y(()=>S.value!==null),M=y(()=>a.runningTasks.length),P=y(()=>a.pendingTasks.length),B=y(()=>!r.isIdle),j=y(()=>M.value>0||B.value),U=y(()=>M.value+P.value),R=y(()=>x.value?"expanded":j.value?"active":_.value?"empty":"hidden"),F=y(()=>R.value==="expanded"||R.value==="empty"||R.value==="active"&&N.value),z=y(()=>R.value!=="hidden"),G=y(()=>F.value?"border-interface-stroke bg-interface-panel-surface shadow-interface":"border-transparent bg-transparent shadow-none"),q=y(()=>`flex items-center justify-end gap-4 transition-opacity duration-200 ease-in-out ${R.value==="active"&&N.value?"opacity-100 pointer-events-auto":"opacity-0 pointer-events-none"}`),Q=y(()=>j.value?`${U.value} ${l("sideToolbar.queueProgressOverlay.activeJobsSuffix")}`:l("sideToolbar.queueProgressOverlay.jobQueue")),te=y(()=>r.runningWorkflowCount),le=y(()=>te.value>1),{selectedJobTab:X,selectedWorkflowFilter:de,selectedSortMode:ae,hasFailedJobs:Me,filteredTasks:Fe,groupedJobItems:Ke,currentNodeName:Ve}=_i(),xe=y(()=>Ke.value),ze=p(async Ie=>{const ee=Ie.taskRef?.promptId;ee&&(Ie.state==="running"||Ie.state==="initialization"?(await Te.interrupt(ee),await a.update()):Ie.state==="pending"&&(await Te.deleteItem("queue",ee),await a.update()))}),Ye=p(async Ie=>{Ie.taskRef&&await a.delete(Ie.taskRef)}),{galleryActiveIndex:ht,galleryItems:uo,onViewItem:Gt}=Mf(()=>Fe.value),Pt=n(Ie=>{x.value=Ie},"setExpanded"),dt=n(()=>{Pt(!0)},"openExpandedFromEmpty"),Dt=n(()=>{Pt(!0)},"viewAllJobs"),yt=n(()=>{dt(),I()},"onSummaryClick"),ot=n(()=>{u.activeSidebarTabId="assets"},"openAssetsSidebar"),co=n(async Ie=>{const ee=Ie.taskRef,Z=ee?.promptId,bt=ee?.previewOutput;if(!Z||!bt)return;const ie=String(Z);if(ot(),await Be(),await m.updateHistory(),!m.historyAssets.find(Nl=>Nl.id===ie))throw new Error("Asset not found in media assets panel");v.setSelection([ie])},"focusAssetInSidebar"),po=p(async Ie=>{Gt(Ie),await co(Ie)}),jt=p(async()=>{await i.execute("Comfy.ClearPendingTasks")}),pe=p(async()=>{const ee=a.runningTasks.map(Z=>Z.promptId).filter(Z=>typeof Z=="string"&&Z.length>0);ee.length&&await Promise.all(ee.map(Z=>Te.interrupt(Z)))}),ke=n(()=>{f.showDialog({key:"queue-clear-history",component:Nf,dialogComponentProps:{headless:!0,closable:!1,closeOnEscape:!0,dismissableMask:!0,pt:{root:{class:"max-w-[360px] w-auto bg-transparent border-none shadow-none"},content:{class:"!p-0 bg-transparent"}}}})},"showClearHistoryDialog"),_e=n(()=>{ke()},"onClearHistoryFromMenu");return(Ie,ee)=>(d(),$(oe,null,[ce(c("div",Pf,[c("div",{class:K(["pointer-events-auto flex w-[350px] min-w-[310px] max-h-[60vh] flex-col overflow-hidden rounded-lg border font-inter transition-colors duration-200 ease-in-out",G.value]),onMouseenter:ee[3]||(ee[3]=Z=>k.value=!0),onMouseleave:ee[4]||(ee[4]=Z=>k.value=!1)},[x.value?(d(),W(bf,{key:0,"selected-job-tab":h(X),"onUpdate:selectedJobTab":ee[0]||(ee[0]=Z=>at(X)?X.value=Z:null),"selected-workflow-filter":h(de),"onUpdate:selectedWorkflowFilter":ee[1]||(ee[1]=Z=>at(de)?de.value=Z:null),"selected-sort-mode":h(ae),"onUpdate:selectedSortMode":ee[2]||(ee[2]=Z=>at(ae)?ae.value=Z:null),class:"flex-1 min-h-0","header-title":Q.value,"show-concurrent-indicator":le.value,"concurrent-workflow-count":te.value,"queued-count":P.value,"displayed-job-groups":xe.value,"has-failed-jobs":h(Me),onShowAssets:ot,onClearHistory:_e,onClearQueued:h(jt),onCancelItem:h(ze),onDeleteItem:h(Ye),onViewItem:h(po)},null,8,["selected-job-tab","selected-workflow-filter","selected-sort-mode","header-title","show-concurrent-indicator","concurrent-workflow-count","queued-count","displayed-job-groups","has-failed-jobs","onClearQueued","onCancelItem","onDeleteItem","onViewItem"])):j.value?(d(),W(Wd,{key:1,"total-progress-style":h(g),"current-node-progress-style":h(b),"total-percent-formatted":h(w),"current-node-percent-formatted":h(C),"current-node-name":h(Ve),"running-count":M.value,"queued-count":P.value,"bottom-row-class":q.value,onInterruptAll:h(pe),onClearQueued:h(jt),onViewAllJobs:Dt},null,8,["total-progress-style","current-node-progress-style","total-percent-formatted","current-node-percent-formatted","current-node-name","running-count","queued-count","bottom-row-class","onInterruptAll","onClearQueued"])):h(S)?(d(),W(Xd,{key:2,summary:h(S),onSummaryClick:yt},null,8,["summary"])):E("",!0)],34)],512),[[Je,z.value]]),O(Ti,{"active-index":h(ht),"onUpdate:activeIndex":ee[5]||(ee[5]=Z=>at(ht)?ht.value=Z:null),"all-gallery-items":h(uo)},null,8,["active-index","all-gallery-items"])],64))}}),Af=Mt("actionBarButton",()=>{const e=Qn();return{buttons:y(()=>e.extensions.flatMap(t=>t.actionBarButtons??[]))}}),Lf={class:"flex h-full shrink-0 items-center gap-1"},Ef={key:0},Vf=H({__name:"ActionBarButtons",setup(e){const o=Af(),s=Qo(Xo).smaller("sm");return(l,a)=>{const i=Ne("tooltip");return d(),$("div",Lf,[(d(!0),$(oe,null,be(h(o).buttons,(r,u)=>ce((d(),W(J,{key:u,"aria-label":r.tooltip||r.label,class:K([r.class,"h-7 rounded-full"]),variant:"muted-textonly",size:"sm",onClick:r.onClick},{default:A(()=>[c("i",{class:K(r.icon)},null,2),!h(s)&&r.label?(d(),$("span",Ef,V(r.label),1)):E("",!0)]),_:2},1032,["aria-label","class","onClick"])),[[i,r.tooltip,void 0,{bottom:!0}]])),128))])}}}),Of={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)]"},Rf={class:"flex flex-col items-center px-0 py-3 mb-4"},Wf={class:"my-0 mb-1 truncate text-base font-bold text-base-foreground"},zf={key:0,class:"my-0 truncate text-sm text-muted"},Bf={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"},Ff={key:0,class:"flex items-center gap-2 px-4 py-2"},Uf={key:1,class:"text-base font-semibold text-base-foreground"},Gf={class:"icon-[lucide--circle-help] cursor-help text-base text-muted-foreground mr-auto"},jf={key:1,class:"flex justify-center px-4"},Hf={class:"text-sm text-base-foreground flex-1"},qf={class:"text-sm text-base-foreground flex-1"},Kf={key:0,class:"text-xs font-bold text-base-background bg-base-foreground px-1.5 py-0.5 rounded-full"},Qf={class:"text-sm text-base-foreground flex-1"},Yf={class:"text-sm text-base-foreground flex-1"},Jf={class:"text-sm text-base-foreground flex-1"},Xf=H({__name:"CurrentUserPopover",emits:["close"],setup(e,{emit:o}){const t=o,{buildDocsUrl:s,docsPaths:l}=ao(),{userDisplayName:a,userEmail:i,userPhotoUrl:r,handleSignOut:u}=lo(),f=Wa(),m=za(),v=gt(),{isActiveSubscription:p,subscriptionTierName:w,subscriptionTier:C,fetchStatus:g}=qn(),b=Zc(),{locale:k}=fe(),N=y(()=>{const j=m.balance?.effective_balance_micros??m.balance?.amount_micros??0;return $i({cents:j,locale:k.value,numberOptions:{minimumFractionDigits:0,maximumFractionDigits:2}})}),T=y(()=>{const j=C.value;return j==="FOUNDERS_EDITION"||j==="STANDARD"||j==="CREATOR"}),x=n(()=>{v.showSettingsDialog("user"),t("close")},"handleOpenUserSettings"),S=n(()=>{b.show(),t("close")},"handleOpenPlansAndPricing"),I=n(()=>{v.showSettingsDialog("credits"),t("close")},"handleOpenPlanAndCreditsSettings"),_=n(()=>{v.showTopUpCreditsDialog(),t("close")},"handleTopUp"),M=n(()=>{window.open(s(l.partnerNodesPricing,{includeLocale:!0}),"_blank"),t("close")},"handleOpenPartnerNodesInfo"),P=n(async()=>{await u(),t("close")},"handleLogout"),B=n(async()=>{await g()},"handleSubscribed");return We(()=>{f.fetchBalance()}),(j,U)=>{const R=Ne("tooltip");return d(),$("div",Of,[c("div",Rf,[O(nl,{class:"mb-1","photo-url":h(r),"pt:icon:class":{"text-2xl!":!h(r)},size:"large"},null,8,["photo-url","pt:icon:class"]),c("h3",Wf,V(h(a)||j.$t("g.user")),1),h(i)?(d(),$("p",zf,V(h(i)),1)):E("",!0),h(w)?(d(),$("span",Bf,V(h(w)),1)):E("",!0)]),h(p)?(d(),$("div",Ff,[U[0]||(U[0]=c("i",{class:"icon-[lucide--component] text-amber-400 text-sm"},null,-1)),h(m).isFetchingBalance?(d(),W(h(Un),{key:0,width:"4rem",height:"1.25rem",class:"w-full"})):(d(),$("span",Uf,V(N.value),1)),ce(c("i",Gf,null,512),[[R,{value:j.$t("credits.unified.tooltip"),showDelay:300}]]),O(J,{variant:"secondary",size:"sm",class:"text-base-foreground","data-testid":"add-credits-button",onClick:_},{default:A(()=>[$e(V(j.$t("subscription.addCredits")),1)]),_:1})])):(d(),$("div",jf,[O(Xc,{fluid:!1,label:j.$t("subscription.subscribeToComfyCloud"),size:"sm",variant:"gradient",onSubscribed:B},null,8,["label"])])),O(h(xs),{class:"my-2 mx-0"}),h(p)?(d(),$("div",{key:2,class:"flex items-center gap-2 px-4 py-2 cursor-pointer hover:bg-secondary-background-hover","data-testid":"partner-nodes-menu-item",onClick:M},[U[1]||(U[1]=c("i",{class:"icon-[lucide--tag] text-muted-foreground text-sm"},null,-1)),c("span",Hf,V(j.$t("subscription.partnerNodesCredits")),1)])):E("",!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:S},[U[2]||(U[2]=c("i",{class:"icon-[lucide--receipt-text] text-muted-foreground text-sm"},null,-1)),c("span",qf,V(j.$t("subscription.plansAndPricing")),1),T.value?(d(),$("span",Kf,V(j.$t("subscription.upgrade")),1)):E("",!0)]),h(p)?(d(),$("div",{key:3,class:"flex items-center gap-2 px-4 py-2 cursor-pointer hover:bg-secondary-background-hover","data-testid":"manage-plan-menu-item",onClick:I},[U[3]||(U[3]=c("i",{class:"icon-[lucide--file-text] text-muted-foreground text-sm"},null,-1)),c("span",Qf,V(j.$t("subscription.managePlan")),1)])):E("",!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:x},[U[4]||(U[4]=c("i",{class:"icon-[lucide--settings-2] text-muted-foreground text-sm"},null,-1)),c("span",Yf,V(j.$t("userSettings.accountSettings")),1)]),O(h(xs),{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:P},[U[5]||(U[5]=c("i",{class:"icon-[lucide--log-out] text-muted-foreground text-sm"},null,-1)),c("span",Jf,V(j.$t("auth.signOut.signOut")),1)])])}}}),Zf={class:"flex items-center gap-1 rounded-full hover:bg-interface-button-hover-surface"},cl=H({__name:"CurrentUserButton",setup(e){const{isLoggedIn:o,userPhotoUrl:t}=lo(),s=L(null),l=y(()=>t.value??void 0),a=n(()=>{s.value?.hide()},"closePopover");return(i,r)=>(d(),$("div",null,[h(o)?(d(),W(J,{key:0,class:"p-1 hover:bg-transparent",variant:"muted-textonly","aria-label":i.$t("g.currentUser"),onClick:r[0]||(r[0]=u=>s.value?.toggle(u))},{default:A(()=>[c("div",Zf,[O(nl,{"photo-url":l.value},null,8,["photo-url"]),r[1]||(r[1]=c("i",{class:"icon-[lucide--chevron-down] size-3 px-1"},null,-1))])]),_:1},8,["aria-label"])):E("",!0),O(h(Ze),{ref_key:"popover",ref:s,"show-arrow":!1,pt:{root:{class:"rounded-lg"}}},{default:A(()=>[O(Xf,{onClose:a})]),_:1},512)]))}}),em={class:"mb-1"},tm=["href"],dl=H({__name:"LoginButton",setup(e){const{isLoggedIn:o,handleSignIn:t}=lo(),{buildDocsUrl:s}=ao(),l=s("/tutorials/api-nodes/overview#api-nodes",{includeLocale:!0}),a=L(null);let i=null,r=null;const u=n(v=>{i&&(clearTimeout(i),i=null),r&&(clearTimeout(r),r=null),r=setTimeout(()=>{a.value&&a.value.show(v,v.target)},200)},"showPopover"),f=n(()=>{i&&(clearTimeout(i),i=null)},"cancelHidePopover"),m=n(()=>{r&&(clearTimeout(r),r=null),i=setTimeout(()=>{a.value&&a.value.hide()},150)},"hidePopover");return(v,p)=>(d(),$(oe,null,[h(o)?E("",!0):(d(),W(J,{key:0,variant:"secondary",size:"icon",class:"rounded-full bg-secondary-background text-base-foreground hover:bg-secondary-background-hover","aria-label":h(ue)("g.login"),onClick:p[0]||(p[0]=w=>h(t)()),onMouseenter:u,onMouseleave:m},{default:A(()=>p[1]||(p[1]=[c("i",{class:"icon-[lucide--user] size-4"},null,-1)])),_:1},8,["aria-label"])),O(h(Ze),{ref_key:"popoverRef",ref:a,class:"p-2",onMouseout:m,onMouseover:f},{default:A(()=>[c("div",null,[c("div",em,V(h(ue)("auth.loginButton.tooltipHelp")),1),c("a",{href:h(l),target:"_blank",class:"text-neutral-500 hover:text-primary"},V(h(ue)("auth.loginButton.tooltipLearnMore")),9,tm)])]),_:1},512)],64))}}),Qs=ha.create({baseURL:Ba(),headers:{"Content-Type":"application/json"}}),om=n(()=>{const e=L(!1),o=L(null);se(()=>Ba(),a=>{Qs.defaults.baseURL=a});const t=n((a,i,r)=>{if(!ha.isAxiosError(a))return a instanceof Error?`${i}: ${a.message}`:`${i}: Unknown error occurred`;const u=a;if(u.response){const{status:f,data:m}=u.response;if(r&&r[f])return r[f];switch(f){case 400:return`Bad request: ${m?.message||"Invalid input"}`;case 401:return"Unauthorized: Authentication required";case 403:return`Forbidden: ${m?.message||"Access denied"}`;case 404:return`Not found: ${m?.message||"Resource not found"}`;case 500:return`Server error: ${m?.message||"Internal server error"}`;default:return`${i}: ${m?.message||u.message}`}}return`${i}: ${u.message}`},"handleApiError"),s=n(async(a,i,r)=>{e.value=!0,o.value=null;try{return(await a()).data}catch(u){return Ni(u)||(o.value=t(u,i,r)),null}finally{e.value=!1}},"executeApiRequest");return{isLoading:e,error:o,getReleases:n(async(a,i)=>{const r="/releases";return await s(()=>Qs.get(r,{params:a,signal:i}),"Failed to get releases",{400:"Invalid project or version parameter"})},"getReleases")}},"useReleaseService"),ro=Mt("release",()=>{const e=L([]),o=L(!1),t=L(null),s=om(),l=Yn(),a=re(),i=y(()=>l?.systemStats?.system?.comfyui_version??""),r=y(()=>a.get("Comfy.Locale")),u=y(()=>a.get("Comfy.Release.Version")),f=y(()=>a.get("Comfy.Release.Status")),m=y(()=>a.get("Comfy.Release.Timestamp")),v=y(()=>a.get("Comfy.Notification.ShowVersionUpdates")),p=y(()=>e.value[0]??null),w=y(()=>e.value.slice(0,3)),C=4320*60*1e3,g=n((j,U)=>Et.valid(j)&&Et.valid(U)?Et.compare(j,U):j===U?0:1,"compareVersions"),b=y(()=>!!p.value&&g(p.value.version,i.value||"0.0.0")>0),k=y(()=>!!p.value&&g(p.value.version,i.value||"0.0.0")===0),N=y(()=>{const j=p.value?.attention;return j==="medium"||j==="high"}),T=y(()=>!(!qe()||kt||!v.value||!b.value||!N.value||u.value===p.value?.version&&["skipped","changelog seen"].includes(f.value))),x=y(()=>{if(!qe()||kt||!v.value||!b.value)return!1;const{version:j}=p.value;return u.value===j&&f.value==="changelog seen"?!1:N.value?!0:!(u.value===j&&f.value==="skipped"&&m.value&&Date.now()-m.value>=C)}),S=y(()=>!(!qe()&&!kt||!v.value||!p.value||!!Et.valid(i.value)&&!k.value||u.value===p.value.version&&f.value==="what's new seen"));async function I(j){j!==p.value?.version||f.value==="changelog seen"||(await a.set("Comfy.Release.Version",j),await a.set("Comfy.Release.Status","skipped"),await a.set("Comfy.Release.Timestamp",Date.now()))}n(I,"handleSkipRelease");async function _(j){j===p.value?.version&&(await a.set("Comfy.Release.Version",j),await a.set("Comfy.Release.Status","changelog seen"),await a.set("Comfy.Release.Timestamp",Date.now()))}n(_,"handleShowChangelog");async function M(j){j===p.value?.version&&(await a.set("Comfy.Release.Version",j),await a.set("Comfy.Release.Status","what's new seen"),await a.set("Comfy.Release.Timestamp",Date.now()))}n(M,"handleWhatsNewSeen");async function P(){if(!o.value&&v.value&&!l.systemStats?.system?.argv?.includes("--disable-api-nodes")){o.value=!0,t.value=null;try{l.systemStats||await ya(l.isInitialized);const j=await s.getReleases({project:kt?"cloud":"comfyui",current_version:i.value,form_factor:l.getFormFactor(),locale:Ii(r.value)});j!==null?e.value=j:s.error.value&&(t.value=s.error.value)}catch(j){t.value=j instanceof Error?j.message:"Unknown error occurred"}finally{o.value=!1}}}n(P,"fetchReleases");async function B(){await P()}return n(B,"initialize"),{releases:e,isLoading:o,error:t,recentRelease:p,recentReleases:w,shouldShowToast:T,shouldShowRedDot:x,shouldShowPopup:S,shouldShowUpdateButton:b,handleSkipRelease:I,handleShowChangelog:_,handleWhatsNewSeen:M,fetchReleases:P,initialize:B}}),nm=Object.freeze(Object.defineProperty({__proto__:null,useReleaseStore:ro},Symbol.toStringTag,{value:"Module"})),sm={class:"min-w-0 flex-1"},am={class:"mx-1 flex flex-col items-end gap-1"},lm={class:"flex items-center gap-2"},im={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"},rm={key:0,class:"absolute top-0.5 right-1 size-2 rounded-full bg-red-500"},um={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"},cm={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"},dm=H({__name:"TopMenuSection",setup(e){const o=lt(),t=no(),s=ft(),{isLoggedIn:l}=lo(),a=qe(),{t:i}=fe(),{toastErrorHandler:r}=Bt(),u=Se(),f=zt(),m=$n(),{isOverlayExpanded:v}=He(m),p=ro(),{shouldShowRedDot:w}=He(p),{shouldShowRedDot:C}=Jn(),g=L(!1),b=y(()=>f.pendingTasks.length),k=y(()=>et(i("sideToolbar.queueProgressOverlay.viewJobHistory"))),N=y(()=>et(i("menu.customNodesManager"))),T=y(()=>w.value||C.value),{isOpen:x}=He(t),S=y(()=>et(i("rightSidePanel.togglePanel"))),I=L();We(()=>{I.value&&(Y.menu.element.style.width="fit-content",I.value.appendChild(Y.menu.element))});const _=n(()=>{u.execute("Comfy.Queue.ToggleOverlay")},"toggleQueueOverlay"),M=n(async()=>{try{await s.openManager({initialTab:Jt.All,showToastOnLegacyError:!1})}catch(P){try{r(P)}catch(B){console.error(P),console.error(B)}}},"openCustomNodeManager");return(P,B)=>{const j=Ne("tooltip");return h(o).focusMode?E("",!0):(d(),$("div",{key:0,class:"ml-1 flex gap-x-0.5 pt-1",onMouseenter:B[1]||(B[1]=U=>g.value=!0),onMouseleave:B[2]||(B[2]=U=>g.value=!1)},[c("div",sm,[O(wd)]),c("div",am,[c("div",lm,[h(s).shouldShowManagerButtons.value?(d(),$("div",im,[ce((d(),W(J,{variant:"secondary",size:"icon","aria-label":h(i)("menu.customNodesManager"),class:"relative",onClick:M},{default:A(()=>[B[3]||(B[3]=c("i",{class:"icon-[lucide--puzzle] size-4"},null,-1)),T.value?(d(),$("span",rm)):E("",!0)]),_:1},8,["aria-label"])),[[j,N.value,void 0,{bottom:!0}]])])):E("",!0),c("div",um,[O(Vf),c("div",{ref_key:"legacyCommandsContainerRef",ref:I,class:"[&:not(:has(*>*:not(:empty)))]:hidden"},null,512),O(cd),ce((d(),W(J,{type:"destructive",size:"icon","aria-pressed":h(v),"aria-label":h(i)("sideToolbar.queueProgressOverlay.expandCollapsedQueue"),onClick:_},{default:A(()=>[B[4]||(B[4]=c("i",{class:"icon-[lucide--history] size-4"},null,-1)),b.value>0?(d(),$("span",cm,V(b.value),1)):E("",!0)]),_:1},8,["aria-pressed","aria-label"])),[[j,k.value,void 0,{bottom:!0}]]),h(l)?(d(),W(cl,{key:0,class:"shrink-0"})):h(a)?(d(),W(dl,{key:1})):E("",!0),h(x)?E("",!0):ce((d(),W(J,{key:2,type:"secondary",size:"icon","aria-label":h(i)("rightSidePanel.togglePanel"),onClick:h(t).togglePanel},{default:A(()=>B[5]||(B[5]=[c("i",{class:"icon-[lucide--panel-right] size-4"},null,-1)])),_:1},8,["aria-label","onClick"])),[[j,S.value,void 0,{bottom:!0}]])])]),O(Df,{expanded:h(v),"onUpdate:expanded":B[0]||(B[0]=U=>at(v)?v.value=U:null),"menu-hovered":g.value},null,8,["expanded","menu-hovered"])])],32))}}}),is=H({__name:"ExtensionSlot",props:{extension:{}},setup(e){const o=e,t=n((s,l)=>{s.render(l)},"mountCustomExtension");return it(()=>{o.extension.type==="custom"&&o.extension.destroy&&o.extension.destroy()}),(s,l)=>s.extension.type==="vue"?(d(),W(Zt(s.extension.component),{key:0})):(d(),$("div",{key:1,ref:n(a=>{a&&t(o.extension,a)},"ref")},null,512))}}),pm={class:"flex h-full flex-col"},fm={class:"flex w-full justify-between"},mm={class:"tabs-container font-inter"},vm={class:"font-normal"},gm={class:"flex items-center gap-2"},hm={class:"h-0 grow"},ym=H({__name:"BottomPanel",setup(e){const o=so(),t=gt(),{t:s}=fe(),l=y(()=>{const f=o.activeBottomPanelTabId;return f==="shortcuts-essentials"||f==="shortcuts-view-controls"}),a=n(f=>f!=="shortcuts-essentials"&&f!=="shortcuts-view-controls","shouldCapitalizeTab"),i=n(f=>{const m=f.titleKey?s(f.titleKey):f.title||"";return a(f.id)?m.toUpperCase():m},"getTabDisplayTitle"),r=n(async()=>{t.showSettingsDialog("keybinding")},"openKeybindingSettings"),u=n(()=>{o.activePanel=null},"closeBottomPanel");return(f,m)=>(d(),$("div",pm,[(d(),W(h(ti),{key:f.$i18n.locale,value:h(o).activeBottomPanelTabId,"onUpdate:value":m[0]||(m[0]=v=>h(o).activeBottomPanelTabId=v),style:{"--p-tabs-tablist-background":"var(--comfy-menu-bg)"}},{default:A(()=>[O(h(oi),{"pt:tab-list":"border-none h-full flex items-center py-2 border-b-1 border-solid",class:"bg-transparent"},{default:A(()=>[c("div",fm,[c("div",mm,[(d(!0),$(oe,null,be(h(o).bottomPanelTabs,v=>(d(),W(h(ni),{key:v.id,value:v.id,class:K(["m-1 mx-2 border-none font-inter",{"tab-list-single-item":h(o).bottomPanelTabs.length===1}]),"pt:root":n(p=>({class:{"p-3 rounded-lg":!0,"pointer-events-none":h(o).bottomPanelTabs.length===1},style:{color:"var(--fg-color)",backgroundColor:!p.context.active||h(o).bottomPanelTabs.length===1?"":"var(--bg-color)"}}),"pt:root")},{default:A(()=>[c("span",vm,V(i(v)),1)]),_:2},1032,["value","class","pt:root"]))),128))]),c("div",gm,[l.value?(d(),W(J,{key:0,variant:"muted-textonly",size:"sm",onClick:r},{default:A(()=>[m[1]||(m[1]=c("i",{class:"pi pi-cog"},null,-1)),$e(" "+V(f.$t("shortcuts.manageShortcuts")),1)]),_:1})):E("",!0),O(J,{class:"justify-self-end",variant:"muted-textonly",size:"sm","aria-label":h(s)("g.close"),onClick:u},{default:A(()=>m[2]||(m[2]=[c("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])])]),_:1})]),_:1},8,["value"])),c("div",hm,[h(o).bottomPanelVisible&&h(o).activeBottomPanelTab?(d(),W(is,{key:0,extension:h(o).activeBottomPanelTab},null,8,["extension"])):E("",!0)])]))}}),bm=Le(ym,[["__scopeId","data-v-9d1ea2c9"]]);function pl(e={}){const{useTransform:o=!1}=e,s=ge().getCanvas(),{canvasPosToClientPos:l,update:a}=Mi(s.canvas,s),i=re();se([()=>i.get("Comfy.Sidebar.Location"),()=>i.get("Comfy.Sidebar.Size"),()=>i.get("Comfy.UseNewMenu")],()=>a(),{flush:"post"});const r=L({}),u=n(m=>{const{pos:v,size:p,scale:w=s.ds.scale}=m,[C,g]=l(v),[b,k]=p;return o?{position:"fixed",transformOrigin:"0 0",transform:`scale(${w})`,left:`${C}px`,top:`${g}px`,width:`${b}px`,height:`${k}px`}:{position:"fixed",left:`${C}px`,top:`${g}px`,width:`${b*w}px`,height:`${k*w}px`}},"computeStyle");return{style:r,updatePosition:n(m=>{r.value=u(m)},"updatePosition")}}n(pl,"useAbsolutePosition");function wm(e,o){const t=Math.max(e.x,o.x),s=Math.max(e.y,o.y),l=Math.min(e.x+e.width,o.x+o.width),a=Math.min(e.y+e.height,o.y+o.height);return t>=l||s>=a?null:[t,s,l-t,a-s]}n(wm,"intersect");const Cm=n((e={})=>{const o=L({}),{margin:t=4}=e,s=n((a,i,r,u)=>{if(!r&&u){const{scale:f,offset:m}=u,v=wm({x:a.left-i.left,y:a.top-i.top,width:a.width,height:a.height},{x:(u.x+m[0]-t)*f,y:(u.y+m[1]-t)*f,width:(u.width+2*t)*f,height:(u.height+2*t)*f});if(!v)return"";const p=(v[0]-a.left+i.left)/f+"px",w=(v[1]-a.top+i.top)/f+"px",C=v[2]/f+"px",g=v[3]/f+"px";return`polygon(0% 0%, 0% 100%, ${p} 100%, ${p} ${w}, calc(${p} + ${C}) ${w}, calc(${p} + ${C}) calc(${w} + ${g}), ${p} calc(${w} + ${g}), ${p} 100%, 100% 100%, 100% 0%)`}return""},"calculateClipPath");return{style:o,updateClipPath:n((a,i,r,u)=>{const f=a.getBoundingClientRect(),m=i.getBoundingClientRect(),v=s(f,m,r,u);o.value={clipPath:v||"none",willChange:"clip-path"}},"updateClipPath")}},"useDomClipping"),km=["title"],xm=H({__name:"DomWidget",props:{widgetState:{}},emits:["update:widgetValue"],setup(e,{emit:o}){const t=e.widgetState.widget,s=o,l=L(),a=L({}),{style:i,updatePosition:r}=pl({useTransform:!0}),{style:u,updateClipPath:f}=Cm(),m=ge(),v=re(),p=y(()=>v.get("Comfy.DOMClippingEnabled")),w=n(()=>{const T=m.canvas;if(!T||!l.value)return;const x=Object.values(T.selected_nodes??{})[0];if(!x){f(l.value,T.canvas,!1,void 0);return}const S=x===e.widgetState.widget.node,I=x?.renderArea,_=T.ds.offset,M=T.ds.scale,P=I?{x:I[0],y:I[1],width:I[2],height:I[3],scale:M,offset:[_[0],_[1]]}:void 0;f(l.value,T.canvas,S,P)},"updateDomClipping"),{left:C,top:g}=zn(m.getCanvas().canvas);se([()=>e.widgetState,C,g],([T,x,S])=>{r(T),p.value&&w(),a.value={...i.value,...p.value?u.value:{},zIndex:T.zIndex,pointerEvents:T.readonly||t.computedDisabled?"none":"auto",opacity:t.computedDisabled?.5:1}},{deep:!0}),se(()=>e.widgetState.visible,(T,x)=>{!T&&x&&t.options.onHide?.(t)}),Ee(document,"mousedown",T=>{!go(t)||!e.widgetState.visible||!t.element.blur||t.element.contains(T.target)||t.element.blur()}),We(()=>{go(t)&&Ee(t.element,t.options.selectOn??["focus","click"],()=>{const T=m.canvas;T?.selectNode(e.widgetState.widget.node),T?.bringToFront(e.widgetState.widget.node)})});const k=t.node.constructor.nodeData?.inputs?.[t.name]?.tooltip,N=n(()=>{e.widgetState.visible&&go(t)&&l.value&&(l.value.contains(t.element)||l.value.appendChild(t.element))},"mountElementIfVisible");return We(()=>{Be(()=>{N()}).catch(T=>{console.error("Error mounting DOM widget element:",T)})}),se(()=>e.widgetState.visible,()=>{N()}),(T,x)=>ce((d(),$("div",{ref_key:"widgetElement",ref:l,class:"dom-widget",title:h(k),style:ye(a.value)},[h(Pi)(h(t))?(d(),W(Zt(h(t).component),It({key:0,"model-value":h(t).value,widget:h(t)},h(t).props,{"onUpdate:modelValue":x[0]||(x[0]=S=>s("update:widgetValue",S))}),null,16,["model-value","widget"])):E("",!0)],12,km)),[[Je,T.widgetState.visible]])}}),Sm=Le(xm,[["__scopeId","data-v-781496d2"]]),_m={class:"isolate"},Tm=H({__name:"DomWidgets",setup(e){const o=Di(),t=y(()=>[...o.widgetStates.values()]),s=n(()=>{const a=l.canvas;if(!a)return;const i=a.low_quality,r=a.graph;for(const u of t.value){const f=u.widget;if(!f.isVisible()||!u.active){u.visible=!1;continue}const m=f.node,v=r?.nodes.includes(m);if(u.visible=!!v&&a.isNodeVisible(m)&&!(f.options.hideOnZoom&&i),u.visible&&m){const p=f.margin;u.pos=[m.pos[0]+p,m.pos[1]+p+f.y],u.size=[(f.width??m.width)-p*2,(f.computedHeight??50)-p*2],u.zIndex=a.graph?.nodes.indexOf(m)??-1,u.readonly=a.read_only}}},"updateWidgets"),l=ge();return xt(()=>l.canvas,a=>a.onDrawForeground=eo(a.onDrawForeground,s),{immediate:!0}),(a,i)=>(d(),$("div",_m,[(d(!0),$(oe,null,be(t.value,r=>(d(),W(Sm,{key:r.widget.id,"widget-state":r,"onUpdate:widgetValue":n(u=>r.widget.value=u,"onUpdate:widgetValue")},null,8,["widget-state","onUpdate:widgetValue"]))),128))]))}});function $m(){const e=L(!1),o=n(()=>{e.value=!0},"showModal"),t=n(()=>{e.value=!1},"hideModal"),s=n(()=>{e.value=!e.value},"toggleModal"),l=y(()=>e.value);return{isModalVisible:e,showModal:o,hideModal:t,toggleModal:s,hasActivePopup:l}}n($m,"useZoomControls");function Nm(e,o){const t=new Map,s=L(""),l=L(0),a=L({bounds:!1,nodes:!1,connections:!1,viewport:!1}),i=De.getVersion(),r=new Map,u=Vl(()=>{o()},500),f=n(()=>{const g=e.value;if(!g||r.has(g.id))return;const b={onNodeAdded:g.onNodeAdded,onNodeRemoved:g.onNodeRemoved,onConnectionChange:g.onConnectionChange,onTrigger:g.onTrigger};r.set(g.id,b),g.onNodeAdded=function(k){b.onNodeAdded?.call(this,k),u()},g.onNodeRemoved=function(k){b.onNodeRemoved?.call(this,k),t.delete(k.id),u()},g.onConnectionChange=function(k){b.onConnectionChange?.call(this,k),u()},g.onTrigger=function(k){b.onTrigger?.call(this,k),k.type==="node:property:changed"&&(k.property==="mode"||k.property==="bgcolor"||k.property==="color")&&(t.delete(String(k.nodeId)),u())}},"setupEventListeners"),m=n(g=>{const b=g||e.value;if(!b)return;const k=r.get(b.id);if(!k){console.error("Attempted to cleanup event listeners for graph that was never set up");return}b.onNodeAdded=k.onNodeAdded,b.onNodeRemoved=k.onNodeRemoved,b.onConnectionChange=k.onConnectionChange,b.onTrigger=k.onTrigger,r.delete(b.id)},"cleanupEventListeners");return{updateFlags:a,setupEventListeners:f,cleanupEventListeners:m,checkForChanges:n(()=>{const g=e.value;if(!g)return!1;let b=!1,k=!1,N=!1;const T=Fa.create(g),x=T.getNodeCount();x!==l.value&&(b=!0,l.value=x);const S=T.getNodes();for(const M of S){const P=M.id,B=`${M.x},${M.y},${M.width},${M.height}`;t.get(P)!==B&&(k=!0,t.set(P,B))}const I=new Set(S.map(M=>M.id));for(const[M]of t)I.has(M)||(t.delete(M),b=!0);const _=JSON.stringify(g.links||{});return _!==s.value&&(N=!0,s.value=_),(b||k)&&(a.value.bounds=!0,a.value.nodes=!0),N&&(a.value.connections=!0),b||k||N},"checkForChangesInternal"),init:n(()=>{f(),Te.addEventListener("graphChanged",u),se(i,()=>{u()})},"init"),destroy:n(()=>{m(),Te.removeEventListener("graphChanged",u),t.clear()},"destroy"),clearCache:n(()=>{t.clear(),s.value="",l.value=0},"clearCache")}}n(Nm,"useMinimapGraph");function Im(e,o,t,s,l,a,i){const r=L(!1),u=L({left:0,top:0,width:s,height:l}),f=n(()=>{if(!e.value)return;const b=e.value.getBoundingClientRect();u.value={left:b.left,top:b.top,width:b.width,height:b.height}},"updateContainerRect"),m=n(b=>{r.value=!0,f();const k=b.currentTarget;k instanceof HTMLElement&&k.setPointerCapture(b.pointerId),v(b)},"handlePointerDown"),v=n(b=>{if(!r.value||!i.value)return;const k=b.clientX-u.value.left,N=b.clientY-u.value.top,T=(s-o.value.width*t.value)/2,x=(l-o.value.height*t.value)/2,S=(k-T)/t.value+o.value.minX,I=(N-x)/t.value+o.value.minY;a(S,I)},"handlePointerMove"),p=n(b=>{if(r.value=!1,!b)return;const k=b.currentTarget;k instanceof HTMLElement&&k.hasPointerCapture(b.pointerId)&&k.releasePointerCapture(b.pointerId)},"releasePointer");return{isDragging:r,containerRect:u,updateContainerRect:f,handlePointerDown:m,handlePointerMove:v,handlePointerUp:p,handlePointerCancel:p,handleWheel:n(b=>{b.preventDefault();const k=i.value;if(!k)return;u.value.left===0&&u.value.top===0&&e.value&&f();const N=k.ds,T=b.deltaY>0?.9:1.1,x=N.scale*T;if(x<.1||x>10)return;const _=b.clientX-u.value.left,M=b.clientY-u.value.top,P=(s-o.value.width*t.value)/2,B=(l-o.value.height*t.value)/2,j=(_-P)/t.value+o.value.minX,U=(M-B)/t.value+o.value.minY;N.scale=x,a(j,U)},"handleWheel")}}n(Im,"useMinimapInteraction");function Mm(e,o,t,s,l,a,i,r){const u=L(!0),f=L(!0),m=n(()=>{const w=o.value;if(!e.value||!w)return;const C=e.value.getContext("2d");if(!C)return;if(!w._nodes||w._nodes.length===0){C.clearRect(0,0,i,r);return}(u.value||l.value.nodes||l.value.connections)&&(Ai(e.value,w,{bounds:t.value,scale:s.value,settings:{nodeColors:a.nodeColors.value,showLinks:a.showLinks.value,showGroups:a.showGroups.value,renderBypass:a.renderBypass.value,renderError:a.renderError.value},width:i,height:r}),u.value=!1,l.value.nodes=!1,l.value.connections=!1)},"renderMinimap");return{needsFullRedraw:u,needsBoundsUpdate:f,renderMinimap:m,updateMinimap:n((w,C)=>{(f.value||l.value.bounds)&&(w(),f.value=!1,l.value.bounds=!1,u.value=!0,l.value.viewport=!0),(u.value||l.value.nodes||l.value.connections)&&m(),l.value.viewport&&(C(),l.value.viewport=!1)},"updateMinimap"),forceFullRedraw:n(()=>{u.value=!0,l.value.bounds=!0,l.value.nodes=!0,l.value.connections=!0,l.value.viewport=!0},"forceFullRedraw")}}n(Mm,"useMinimapRenderer");function Pm(){const e=re(),o=ct(),t=y(()=>e.get("Comfy.Minimap.NodeColors")),s=y(()=>e.get("Comfy.Minimap.ShowLinks")),l=y(()=>e.get("Comfy.Minimap.ShowGroups")),a=y(()=>e.get("Comfy.Minimap.RenderBypassState")),i=y(()=>e.get("Comfy.Minimap.RenderErrorState")),r=253,u=200,f=y(()=>o.completedActivePalette.light_theme),m=y(()=>({width:`${r}px`,height:`${u}px`,border:"1px solid var(--interface-stroke)",borderRadius:"8px"})),v=y(()=>({width:"210px",height:`${u}px`,border:"1px solid var(--interface-stroke)",borderRadius:"8px"}));return{nodeColors:t,showLinks:s,showGroups:l,renderBypass:a,renderError:i,containerStyles:m,panelStyles:v,isLightTheme:f}}n(Pm,"useMinimapSettings");function Dm(e,o,t,s){const l=L({minX:0,minY:0,maxX:0,maxY:0,width:0,height:0}),a=L(1),i=L({x:0,y:0,width:0,height:0}),r=L({width:0,height:0}),u=n(()=>{const b=e.value;if(!b)return;const k=b.canvas,N=window.devicePixelRatio||1;r.value={width:k.clientWidth||k.width/N,height:k.clientHeight||k.height/N}},"updateCanvasDimensions"),f=n(()=>{const b=Fa.create(o.value);if(!b.hasData())return{minX:0,minY:0,maxX:100,maxY:100,width:100,height:100};const k=b.getBounds();return Li(k)},"calculateGraphBounds"),m=n(()=>Ei(l.value,t,s),"calculateScale"),v=n(()=>{const b=e.value;if(!b)return;(r.value.width===0||r.value.height===0)&&u();const k=b.ds,N=r.value.width/k.scale,T=r.value.height/k.scale,x=-k.offset[0],S=-k.offset[1],I=(t-l.value.width*a.value)/2,_=(s-l.value.height*a.value)/2;i.value={x:(x-l.value.minX)*a.value+I,y:(S-l.value.minY)*a.value+_,width:N*a.value,height:T*a.value}},"updateViewport"),p=n(()=>{l.value=f(),a.value=m()},"updateBounds"),w=n((b,k)=>{const N=e.value;if(!N)return;(r.value.width===0||r.value.height===0)&&u();const T=N.ds,x=r.value.width/T.scale,S=r.value.height/T.scale;T.offset[0]=-(b-x/2),T.offset[1]=-(k-S/2),N.setDirty(!0,!0)},"centerViewOn"),{resume:C,pause:g}=oo(v);return{bounds:y(()=>l.value),scale:y(()=>a.value),viewportTransform:y(()=>i.value),canvasDimensions:y(()=>r.value),updateCanvasDimensions:u,updateViewport:v,updateBounds:p,centerViewOn:w,startViewportSync:C,stopViewportSync:g}}n(Dm,"useMinimapViewport");function rs({canvasRefMaybe:e,containerRefMaybe:o}={}){const t=ge(),s=Re(),l=re(),a=L(null),i=e??Xe(null),r=o??Xe(null),u=L(!0),f=L(!1),m=250,v=200,p=y(()=>t.canvas),w=y(()=>s.activeSubgraph||p.value?.graph),C=Pm(),{nodeColors:g,showLinks:b,showGroups:k,renderBypass:N,renderError:T,containerStyles:x,panelStyles:S}=C,I=n(async(Q,te)=>{await l.set(Q,te),B.forceFullRedraw(),B.updateMinimap(_.updateBounds,_.updateViewport)},"updateOption"),_=Dm(p,w,m,v),M=Im(r,_.bounds,_.scale,m,v,_.centerViewOn,p),P=Nm(w,()=>{B.forceFullRedraw(),B.updateMinimap(_.updateBounds,_.updateViewport)}),B=Mm(i,w,_.bounds,_.scale,P.updateFlags,C,m,v),{pause:j,resume:U}=oo(async()=>{u.value&&await P.checkForChanges()&&B.updateMinimap(_.updateBounds,_.updateViewport)},{immediate:!1}),R=n(async()=>{f.value||(u.value=l.get("Comfy.Minimap.Visible"),p.value&&w.value&&(P.init(),r.value&&M.updateContainerRect(),_.updateCanvasDimensions(),window.addEventListener("resize",M.updateContainerRect),window.addEventListener("scroll",M.updateContainerRect),window.addEventListener("resize",_.updateCanvasDimensions),B.forceFullRedraw(),B.updateMinimap(_.updateBounds,_.updateViewport),_.updateViewport(),u.value&&(U(),_.startViewportSync()),f.value=!0))},"init"),F=n(()=>{j(),_.stopViewportSync(),P.destroy(),window.removeEventListener("resize",M.updateContainerRect),window.removeEventListener("scroll",M.updateContainerRect),window.removeEventListener("resize",_.updateCanvasDimensions),f.value=!1},"destroy");se(p,async(Q,te)=>{te&&(P.cleanupEventListeners(),j(),_.stopViewportSync(),P.destroy(),window.removeEventListener("resize",M.updateContainerRect),window.removeEventListener("scroll",M.updateContainerRect),window.removeEventListener("resize",_.updateCanvasDimensions)),Q&&!f.value&&await R()},{immediate:!0,flush:"post"}),se(w,(Q,te)=>{Q&&Q!==te&&(P.cleanupEventListeners(te||void 0),P.setupEventListeners(),B.forceFullRedraw(),B.updateMinimap(_.updateBounds,_.updateViewport))}),se(u,async Q=>{Q?(r.value&&M.updateContainerRect(),_.updateCanvasDimensions(),B.forceFullRedraw(),await Be(),await Be(),B.updateMinimap(_.updateBounds,_.updateViewport),_.updateViewport(),U(),_.startViewportSync()):(j(),_.stopViewportSync())});const z=n(async()=>{u.value=!u.value,await l.set("Comfy.Minimap.Visible",u.value)},"toggle"),G=n(Q=>{a.value=Q},"setMinimapRef"),q=y(()=>{const Q=_.viewportTransform.value;return{transform:`translate(${Q.x}px, ${Q.y}px)`,width:`${Q.width}px`,height:`${Q.height}px`,border:`2px solid ${C.isLightTheme.value?"#E0E0E0":"#FFF"}`,backgroundColor:"rgba(255, 255, 255, 0.2)",willChange:"transform",backfaceVisibility:"hidden",perspective:"1000px",pointerEvents:"none"}});return{visible:y(()=>u.value),initialized:y(()=>f.value),containerStyles:x,viewportStyles:q,panelStyles:S,width:m,height:v,nodeColors:g,showLinks:b,showGroups:k,renderBypass:N,renderError:T,init:R,destroy:F,toggle:z,renderMinimap:B.renderMinimap,handlePointerDown:M.handlePointerDown,handlePointerMove:M.handlePointerMove,handlePointerUp:M.handlePointerUp,handlePointerCancel:M.handlePointerCancel,handleWheel:M.handleWheel,setMinimapRef:G,updateOption:I}}n(rs,"useMinimap");const Am={class:"flex items-center gap-1 pr-0.5"},Lm={class:"rounded-lg bg-interface-panel-selected-surface p-2 group-hover:bg-interface-button-hover-surface"},Em={class:"flex flex-col gap-1"},Vm={class:"flex items-center gap-2"},Om={class:"text-[9px] text-text-primary"},Rm={class:"flex items-center gap-2"},Wm={class:"text-[9px] text-text-primary"},zm=H({__name:"CanvasModeSelector",props:{buttonStyles:{}},setup(e){const o=L(),t=L(),s=Se(),l=ge(),a=y(()=>l.canvas?.read_only??!1),i=y(()=>a.value?"icon-[lucide--hand]":"icon-[lucide--mouse-pointer-2]"),r=y(()=>s.formatKeySequence(s.getCommand("Comfy.Canvas.Unlock")).toUpperCase()),u=y(()=>s.formatKeySequence(s.getCommand("Comfy.Canvas.Lock")).toUpperCase()),f=n(p=>{const w=o.value?.$el||o.value;t.value?.toggle(p,w)},"toggle"),m=n(p=>{p==="select"&&a.value?s.execute("Comfy.Canvas.Unlock"):p==="hand"&&!a.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(p,w)=>(d(),$(oe,null,[O(J,{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:ye(p.buttonStyles),onClick:f},{default:A(()=>[c("div",Am,[c("div",Lm,[c("i",{class:K([i.value,"block h-4 w-4"])},null,2)]),w[2]||(w[2]=c("i",{class:"icon-[lucide--chevron-down] block h-4 w-4 pr-1.5"},null,-1))])]),_:1},8,["style"]),O(h(Ze),{ref_key:"popover",ref:t,"auto-z-index":!0,"base-z-index":1e3,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:v.value},{default:A(()=>[c("div",Em,[c("div",{class:"flex cursor-pointer items-center justify-between px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onClick:w[0]||(w[0]=C=>m("select"))},[c("div",Vm,[w[3]||(w[3]=c("i",{class:"icon-[lucide--mouse-pointer-2] h-4 w-4"},null,-1)),c("span",null,V(p.$t("graphCanvasMenu.select")),1)]),c("span",Om,V(r.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:w[1]||(w[1]=C=>m("hand"))},[c("div",Rm,[w[4]||(w[4]=c("i",{class:"icon-[lucide--hand] h-4 w-4"},null,-1)),c("span",null,V(p.$t("graphCanvasMenu.hand")),1)]),c("span",Wm,V(u.value),1)])])]),_:1},8,["pt"])],64))}}),Bm={key:0,class:"absolute right-0 bottom-[62px] z-1300 flex w-[250px] justify-center border-0! bg-inherit!"},Fm={class:"flex flex-col gap-1"},Um={class:"font-medium"},Gm={class:"text-[9px] text-text-primary"},jm={class:"font-medium"},Hm={class:"text-[9px] text-text-primary"},qm={class:"font-medium"},Km={class:"text-[9px] text-text-primary"},Qm=H({__name:"ZoomControlsModal",props:{visible:{type:Boolean}},setup(e){const o=rs(),t=Se(),s=ge(),{formatKeySequence:l}=Se(),a=e,i=L(null),r=n(b=>{const k=b.value;isNaN(k)||k<1||k>1e3||s.setAppZoomFromPercentage(k)},"applyZoom"),u=n(b=>{t.execute(b)},"executeCommand"),f=n(b=>{if(i.value)return;const k=n(()=>t.execute(b),"cmd");k(),i.value=window.setInterval(k,100)},"startRepeat"),m=n(()=>{i.value&&(clearInterval(i.value),i.value=null)},"stopRepeat"),v=y(()=>({...o.containerStyles.value,height:void 0,width:void 0})),p=y(()=>l(t.getCommand("Comfy.Canvas.ZoomIn"))),w=y(()=>l(t.getCommand("Comfy.Canvas.ZoomOut"))),C=y(()=>l(t.getCommand("Comfy.Canvas.FitView"))),g=L(null);return se(()=>a.visible,async b=>{b&&(await Be(),g.value?.querySelector("input")?.focus())}),(b,k)=>b.visible?(d(),$("div",Bm,[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:ye(v.value),onClick:k[3]||(k[3]=Ce(()=>{},["stop"]))},[c("div",Fm,[c("div",{class:"flex cursor-pointer items-center justify-between rounded px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onMousedown:k[0]||(k[0]=N=>f("Comfy.Canvas.ZoomIn")),onMouseup:m,onMouseleave:m},[c("span",Um,V(b.$t("graphCanvasMenu.zoomIn")),1),c("span",Gm,V(p.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:k[1]||(k[1]=N=>f("Comfy.Canvas.ZoomOut")),onMouseup:m,onMouseleave:m},[c("span",jm,V(b.$t("graphCanvasMenu.zoomOut")),1),c("span",Hm,V(w.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:k[2]||(k[2]=N=>u("Comfy.Canvas.FitView"))},[c("span",qm,V(b.$t("zoomControls.zoomToFit")),1),c("span",Km,V(C.value),1)]),c("div",{ref_key:"zoomInputContainer",ref:g,class:"zoomInputContainer flex items-center gap-1 rounded bg-input-surface p-2"},[O(h(si),{"default-value":h(s).appScalePercentage,min:1,max:1e3,"show-buttons":!1,"use-grouping":!1,unstyled:!0,"input-class":"bg-transparent border-none outline-hidden text-sm shadow-none my-0 w-full",fluid:"",onInput:r,onKeyup:Xt(r,["enter"])},null,8,["default-value"]),k[4]||(k[4]=c("span",{class:"flex-shrink-0 text-sm text-text-primary"},"%",-1))],512)])],4)])):E("",!0)}}),Ym={class:"inline-flex items-center gap-1 px-2 text-xs"},Jm=H({__name:"GraphCanvasMenu",setup(e){const{t:o}=fe(),t=Se(),{formatKeySequence:s}=Se(),l=ge(),a=re(),i=io(),r=rs(),{isModalVisible:u,toggleModal:f,hideModal:m,hasActivePopup:v}=$m(),p=y(()=>{const P=["borderRadius"],B=["borderRadius"],j={border:"none"},U=r.containerStyles.value,R={...Object.fromEntries(Object.entries(U).filter(([z])=>B.includes(z))),...j},F=Object.entries(U).filter(([z])=>P.includes(z)).reduce((z,[G,q])=>({...z,[G]:q}),{});return{buttonStyles:R,buttonGroupStyles:F}}),w=y(()=>a.get("Comfy.LinkRenderMode")===ve.HIDDEN_LINK),C=y(()=>s(t.getCommand("Comfy.Canvas.FitView")).toUpperCase()),g=y(()=>s(t.getCommand("Comfy.Canvas.ToggleMinimap")).toUpperCase()),b=y(()=>["bg-comfy-menu-bg",u.value?"not-active:bg-interface-panel-selected-surface!":"","hover:bg-interface-button-hover-surface!","p-0","h-8","w-15"]),k=y(()=>({"bg-comfy-menu-bg":!0,"hover:bg-interface-button-hover-surface!":!0,"not-active:bg-interface-panel-selected-surface!":a.get("Comfy.Minimap.Visible"),"p-0":!0,"w-8":!0,"h-8":!0})),N=y(()=>{const P=o("graphCanvasMenu.fitView"),B=C.value;return B?`${P} (${B})`:P}),T=y(()=>{const P=a.get("Comfy.Minimap.Visible")?o("zoomControls.hideMinimap"):o("zoomControls.showMinimap"),B=g.value;return B?`${P} (${B})`:P}),x=y(()=>w.value?o("graphCanvasMenu.showLinks"):o("graphCanvasMenu.hideLinks")),S=y(()=>w.value?o("graphCanvasMenu.showLinks"):o("graphCanvasMenu.hideLinks")),I=y(()=>["bg-comfy-menu-bg",w.value?"not-active:bg-interface-panel-selected-surface!":"","hover:bg-interface-button-hover-surface!","p-0","w-8","h-8"]);We(()=>{l.initScaleSync()});const _=n(()=>{t.execute("Comfy.Canvas.ToggleMinimap")},"onMinimapToggleClick"),M=n(()=>{t.execute("Comfy.Canvas.ToggleLinkVisibility")},"onLinkVisibilityToggleClick");return it(()=>{l.cleanupScaleSync()}),(P,B)=>{const j=Ne("tooltip");return d(),$("div",null,[O(Qm,{visible:h(u),onClose:h(m)},null,8,["visible","onClose"]),h(v)?(d(),$("div",{key:0,class:"fixed inset-0 z-1200",onClick:B[0]||(B[0]=(...U)=>h(m)&&h(m)(...U))})):E("",!0),O(h(ai),{class:"absolute right-0 bottom-0 z-1200 flex-row gap-1 border-[1px] border-interface-stroke bg-comfy-menu-bg p-2",style:ye({...p.value.buttonGroupStyles}),onWheel:h(i).handleWheel},{default:A(()=>[O(zm,{"button-styles":p.value.buttonStyles},null,8,["button-styles"]),B[6]||(B[6]=c("div",{class:"h-[27px] w-[1px] self-center bg-node-divider"},null,-1)),ce((d(),W(J,{variant:"secondary","aria-label":N.value,style:ye(p.value.buttonStyles),class:"h-8 w-8 bg-comfy-menu-bg p-0 hover:bg-interface-button-hover-surface!",onClick:B[1]||(B[1]=()=>h(t).execute("Comfy.Canvas.FitView"))},{default:A(()=>B[2]||(B[2]=[c("i",{class:"icon-[lucide--focus] h-4 w-4"},null,-1)])),_:1},8,["aria-label","style"])),[[j,N.value,void 0,{top:!0}]]),ce((d(),W(J,{variant:"secondary",class:K(b.value),"aria-label":h(o)("zoomControls.label"),"data-testid":"zoom-controls-button",style:ye(p.value.buttonStyles),onClick:h(f)},{default:A(()=>[c("span",Ym,[c("span",null,V(h(l).appScalePercentage)+"%",1),B[3]||(B[3]=c("i",{class:"icon-[lucide--chevron-down] h-4 w-4"},null,-1))])]),_:1},8,["class","aria-label","style","onClick"])),[[j,h(o)("zoomControls.label"),void 0,{top:!0}]]),B[7]||(B[7]=c("div",{class:"h-[27px] w-[1px] self-center bg-node-divider"},null,-1)),ce((d(),W(J,{variant:"secondary","aria-label":T.value,"data-testid":"toggle-minimap-button",style:ye(p.value.buttonStyles),class:K(k.value),onClick:_},{default:A(()=>B[4]||(B[4]=[c("i",{class:"icon-[lucide--map] h-4 w-4"},null,-1)])),_:1},8,["aria-label","style","class"])),[[j,T.value,void 0,{top:!0}]]),ce((d(),W(J,{variant:"secondary",class:K(I.value),"aria-label":S.value,"data-testid":"toggle-link-visibility-button",style:ye(p.value.buttonStyles),onClick:M},{default:A(()=>B[5]||(B[5]=[c("i",{class:"icon-[lucide--route-off] h-4 w-4"},null,-1)])),_:1},8,["class","aria-label","style"])),[[j,{value:x.value,pt:{root:{style:"z-index: 2; transform: translateY(-20px);"}}},void 0,{top:!0}]])]),_:1},8,["style","onWheel"])])}}}),Xm=H({__name:"NodeTooltip",setup(e){let o;const t=St(),s=re(),l=L(),a=L(""),i=L(),r=L();function u(){return a.value=""}n(u,"hideTooltip");async function f(p){if(!p)return;i.value=Y.canvas.mouse[0]+"px",r.value=Y.canvas.mouse[1]+"px",a.value=p,await Be();const w=l.value?.getBoundingClientRect();w&&(w.right>window.innerWidth&&(i.value=Y.canvas.mouse[0]-w.width+"px"),w.top<0&&(r.value=Y.canvas.mouse[1]+w.height+"px"))}n(f,"showTooltip");function m(){const{canvas:p}=Y,w=p?.node_over;if(!w)return;const C=w.constructor,g=t.nodeDefsByName[w.type??""];if(C.title_mode!==ve.NO_TITLE&&p.graph_mouse[1]<w.pos[1])return f(g?.description);if(w.flags?.collapsed)return;const b=Vi(w,p.graph_mouse[0],p.graph_mouse[1],[0,0]);if(b!==-1){const T=w.inputs[b].name,x=Ae(`nodeDefs.${Ge(w.type??"")}.inputs.${Ge(T)}.tooltip`,g?.inputs[T]?.tooltip??"");return f(x)}const k=Oi(w,p.graph_mouse[0],p.graph_mouse[1],[0,0]);if(k!==-1){const T=Ae(`nodeDefs.${Ge(w.type??"")}.outputs.${k}.tooltip`,g?.outputs[k]?.tooltip??"");return f(T)}const N=Y.canvas.getWidgetAtCursor();if(N&&!go(N)){const T=Ae(`nodeDefs.${Ge(w.type??"")}.inputs.${Ge(N.name)}.tooltip`,g?.inputs[N.name]?.tooltip??"");return f(N.tooltip??T)}}return n(m,"onIdle"),Ee(window,"mousemove",n(p=>{u(),clearTimeout(o),p.target.nodeName==="CANVAS"&&(o=window.setTimeout(m,s.get("LiteGraph.Node.TooltipDelay")))},"onMouseMove")),Ee(window,"click",u),(p,w)=>a.value?(d(),$("div",{key:0,ref_key:"tooltipRef",ref:l,class:"node-tooltip",style:ye({left:i.value,top:r.value})},V(a.value),5)):E("",!0)}}),Zm=Le(Xm,[["__scopeId","data-v-96b1458a"]]),ev=H({__name:"BypassButton",setup(e){const o=Se(),t=n(async()=>{await o.execute("Comfy.Canvas.ToggleSelectedNodes.Bypass")},"toggleBypass");return(s,l)=>{const a=Ne("tooltip");return ce((d(),W(J,{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:A(()=>l[0]||(l[0]=[c("i",{class:"icon-[lucide--redo-dot] size-4"},null,-1)])),_:1},8,["aria-label"])),[[a,{value:s.$t("commands.Comfy_Canvas_ToggleSelectedNodes_Bypass.label"),showDelay:1e3},void 0,{top:!0}]])}}}),tv={class:"relative"},ov={class:"flex items-center gap-1 px-0"},nv={key:0,class:"color-picker-container absolute -top-10 left-1/2"},sv=["data-testid"],av=H({__name:"ColorPickerButton",setup(e){const{t:o}=fe(),t=ge(),s=ct(),l=Re(),a=y(()=>s.completedActivePalette.light_theme),i=n(b=>Vt(b,{lightness:.5}),"toLightThemeColor"),r=L(!1),u={name:"noColor",localizedName:o("color.noColor"),value:{dark:ve.NODE_DEFAULT_BGCOLOR,light:i(ve.NODE_DEFAULT_BGCOLOR)}},f=[u,...Object.entries(Qe.node_colors).map(([b,k])=>({name:b,localizedName:o(`color.${b}`),value:{dark:k.bgcolor,light:i(k.bgcolor)}}))],m=L(null),v=n(b=>{const k=b?.name??u.name,N=k===u.name?null:Qe.node_colors[k];for(const T of t.selectedItems)Vo(T)&&T.setColorOption(N);t.canvas?.setDirty(!0,!0),p.value=N,r.value=!1,l.activeWorkflow?.changeTracker.checkState()},"applyColor"),p=L(null),w=y(()=>p.value?a.value?i(p.value?.bgcolor):p.value?.bgcolor:null),C=y(()=>p.value?.bgcolor?f.find(k=>k.value.dark===p.value?.bgcolor||k.value.light===p.value?.bgcolor)?.localizedName??u.localizedName:null),g=n(b=>{r.value=!1,m.value=null,p.value=Ri(b)},"updateColorSelectionFromNode");return se(()=>t.selectedItems,b=>{g(b)},{immediate:!0}),(b,k)=>{const N=Ne("tooltip");return d(),$("div",tv,[ce((d(),W(J,{"data-testid":"color-picker-button",variant:"muted-textonly","aria-label":h(o)("g.color"),onClick:k[0]||(k[0]=()=>r.value=!r.value)},{default:A(()=>[c("div",ov,[c("i",{class:"pi pi-circle-fill",style:ye({color:w.value??""})},null,4),k[1]||(k[1]=c("i",{class:"icon-[lucide--chevron-down]"},null,-1))])]),_:1},8,["aria-label"])),[[N,{value:C.value??h(o)("color.noColor"),showDelay:1e3},void 0,{top:!0}]]),r.value?(d(),$("div",nv,[O(h(Pa),{"model-value":m.value,options:f,"option-label":"name","data-key":"value","onUpdate:modelValue":v},{option:A(({option:T})=>[ce(c("i",{class:"pi pi-circle-fill",style:ye({color:a.value?T.value.light:T.value.dark}),"data-testid":T.name},null,12,sv),[[N,T.localizedName,void 0,{top:!0}]])]),_:1},8,["model-value"])])):E("",!0)])}}}),lv=Le(av,[["__scopeId","data-v-2197e0a1"]]),iv=H({__name:"ConfigureSubgraph",setup(e){const o=no(),t=n(()=>{o.openPanel("subgraph")},"handleClick");return(s,l)=>{const a=Ne("tooltip");return ce((d(),W(J,{variant:"muted-textonly","aria-label":s.$t("commands.Comfy_Graph_EditSubgraphWidgets.label"),onClick:t},{default:A(()=>l[0]||(l[0]=[c("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["aria-label"])),[[a,{value:s.$t("commands.Comfy_Graph_EditSubgraphWidgets.label"),showDelay:1e3},void 0,{top:!0}]])}}}),rv=H({__name:"ConvertToSubgraphButton",setup(e){const o=Se(),{isSingleSubgraph:t,hasAnySelection:s}=Ft(),l=t,a=y(()=>s.value&&!t.value);return(i,r)=>{const u=Ne("tooltip");return h(l)?ce((d(),W(J,{key:0,variant:"muted-textonly","aria-label":i.$t("commands.Comfy_Graph_UnpackSubgraph.label"),"data-testid":"convert-to-subgraph-button",onClick:r[0]||(r[0]=()=>h(o).execute("Comfy.Graph.UnpackSubgraph"))},{default:A(()=>r[2]||(r[2]=[c("i",{class:"icon-[lucide--expand] size-4"},null,-1)])),_:1},8,["aria-label"])),[[u,{value:i.$t("commands.Comfy_Graph_UnpackSubgraph.label"),showDelay:1e3},void 0,{top:!0}]]):a.value?ce((d(),W(J,{key:1,variant:"muted-textonly",size:"icon","aria-label":i.$t("commands.Comfy_Graph_ConvertToSubgraph.label"),"data-testid":"convert-to-subgraph-button",onClick:r[1]||(r[1]=()=>h(o).execute("Comfy.Graph.ConvertToSubgraph"))},{default:A(()=>r[3]||(r[3]=[c("i",{class:"icon-[lucide--shrink] size-4"},null,-1)])),_:1},8,["aria-label"])),[[u,{value:i.$t("commands.Comfy_Graph_ConvertToSubgraph.label"),showDelay:1e3},void 0,{top:!0}]]):E("",!0)}}}),uv=H({__name:"DeleteButton",setup(e){const o=Se(),{selectedItems:t}=Ft(),s=y(()=>t.value.some(l=>l.removable!==!1));return(l,a)=>{const i=Ne("tooltip");return ce((d(),W(J,{variant:"muted-textonly","aria-label":l.$t("commands.Comfy_Canvas_DeleteSelectedItems.label"),"data-testid":"delete-button",onClick:a[0]||(a[0]=()=>h(o).execute("Comfy.Canvas.DeleteSelectedItems"))},{default:A(()=>a[1]||(a[1]=[c("i",{class:"icon-[lucide--trash-2]"},null,-1)])),_:1},8,["aria-label"])),[[Je,s.value],[i,{value:l.$t("commands.Comfy_Canvas_DeleteSelectedItems.label"),showDelay:1e3},void 0,{top:!0}]])}}}),cv=H({__name:"ExecuteButton",setup(e){const{t:o}=fe(),t=Se(),s=ge(),{selectedNodes:l}=Ft(),a=s.getCanvas(),i=L(!1),r=y(()=>l.value.filter(to).filter(Wi));function u(){if(this.selected&&this.constructor.nodeData?.output_node&&i.value)return{color:"orange",lineWidth:2,padding:10}}n(u,"outputNodeStokeStyle");const f=n(()=>{i.value=!0;for(const p of r.value)p.strokeStyles.outputNode=u;a.setDirty(!0)},"handleMouseEnter"),m=n(()=>{i.value=!1,a.setDirty(!0)},"handleMouseLeave"),v=n(async()=>{await t.execute("Comfy.QueueSelectedOutputNodes")},"handleClick");return(p,w)=>{const C=Ne("tooltip");return ce((d(),W(J,{variant:"primary","aria-label":h(o)("selectionToolbox.executeButton.tooltip"),onMouseenter:w[0]||(w[0]=()=>f()),onMouseleave:w[1]||(w[1]=()=>m()),onClick:v},{default:A(()=>w[2]||(w[2]=[c("i",{class:"icon-[lucide--play]"},null,-1)])),_:1},8,["aria-label"])),[[C,{value:h(o)("selectionToolbox.executeButton.tooltip"),showDelay:1e3},void 0,{top:!0}]])}}}),dv=H({__name:"ExtensionCommandButton",props:{command:{}},setup(e){const o=Se();return(t,s)=>{const l=Ne("tooltip");return ce((d(),W(J,{variant:"muted-textonly","aria-label":h(Ae)(`commands.${h(Ge)(t.command.id)}.label`,""),onClick:s[0]||(s[0]=()=>h(o).execute(t.command.id))},{default:A(()=>[c("i",{class:K([typeof t.command.icon=="function"?t.command.icon():t.command.icon])},null,2)]),_:1},8,["aria-label"])),[[l,{value:h(Ae)(`commands.${h(Ge)(t.command.id)}.label`,"")||void 0,showDelay:1e3},void 0,{top:!0}]])}}}),pv=H({__name:"InfoButton",setup(e){const o=no(),t=n(()=>{o.openPanel("info")},"onInfoClick");return(s,l)=>{const a=Ne("tooltip");return ce((d(),W(J,{"data-testid":"info-button",variant:"muted-textonly","aria-label":s.$t("g.info"),onClick:t},{default:A(()=>l[0]||(l[0]=[c("i",{class:"icon-[lucide--info]"},null,-1)])),_:1},8,["aria-label"])),[[a,{value:s.$t("g.info"),showDelay:1e3},void 0,{top:!0}]])}}}),fv=H({__name:"Load3DViewerButton",setup(e){const o=Se(),t=n(()=>{o.execute("Comfy.3DViewer.Open3DViewer")},"open3DViewer");return(s,l)=>{const a=Ne("tooltip");return ce((d(),W(J,{variant:"muted-textonly","aria-label":s.$t("commands.Comfy_3DViewer_Open3DViewer.label"),onClick:t},{default:A(()=>l[0]||(l[0]=[c("i",{class:"icon-[lucide--pencil]"},null,-1)])),_:1},8,["aria-label"])),[[a,{value:s.$t("commands.Comfy_3DViewer_Open3DViewer.label"),showDelay:1e3},void 0,{top:!0}]])}}}),mv=H({__name:"MaskEditorButton",setup(e){const o=Se(),{isSingleImageNode:t}=Ft(),s=n(()=>{o.execute("Comfy.MaskEditor.OpenMaskEditor")},"openMaskEditor");return(l,a)=>{const i=Ne("tooltip");return ce((d(),W(J,{variant:"muted-textonly","aria-label":l.$t("commands.Comfy_MaskEditor_OpenMaskEditor.label"),onClick:s},{default:A(()=>a[0]||(a[0]=[c("i",{class:"icon-[comfy--mask]"},null,-1)])),_:1},8,["aria-label"])),[[Je,h(t)],[i,{value:l.$t("commands.Comfy_MaskEditor_OpenMaskEditor.label"),showDelay:1e3},void 0,{top:!0}]])}}}),vv=n(e=>e!=null&&typeof e=="object"&&"refresh"in e&&typeof e.refresh=="function","isRefreshableWidget"),gv=n(()=>{const e=ge(),o=L([]);we(()=>{o.value=e.selectedItems.filter(to)});const t=y(()=>o.value.flatMap(a=>{if(!a.widgets)return[];const i=[];for(const r of a.widgets)vv(r)&&i.push(r);return i})),s=y(()=>t.value.length>0);async function l(){s.value&&await Promise.all(t.value.map(a=>a.refresh()))}return n(l,"refreshSelected"),{isRefreshable:s,refreshSelected:l}},"useRefreshableSelection"),hv=H({__name:"RefreshSelectionButton",setup(e){const{t:o}=fe(),{isRefreshable:t,refreshSelected:s}=gv();return(l,a)=>{const i=Ne("tooltip");return ce((d(),W(J,{variant:"muted-textonly","aria-label":h(o)("g.refreshNode"),"data-testid":"refresh-button",onClick:h(s)},{default:A(()=>a[0]||(a[0]=[c("i",{class:"icon-[lucide--refresh-cw]"},null,-1)])),_:1},8,["aria-label","onClick"])),[[Je,h(t)],[i,h(o)("g.refreshNode"),void 0,{top:!0}]])}}}),yv=H({__name:"SaveToSubgraphLibrary",setup(e){const o=Se(),t=ge(),s=y(()=>t.selectedItems?.length===1&&t.selectedItems[0]instanceof Xn);return(l,a)=>{const i=Ne("tooltip");return ce((d(),W(J,{variant:"muted-textonly","aria-label":l.$t("commands.Comfy_PublishSubgraph.label"),onClick:a[0]||(a[0]=()=>h(o).execute("Comfy.PublishSubgraph"))},{default:A(()=>a[1]||(a[1]=[c("i",{class:"icon-[lucide--book-open]"},null,-1)])),_:1},8,["aria-label"])),[[Je,s.value],[i,{value:l.$t("commands.Comfy_PublishSubgraph.label"),showDelay:1e3},void 0,{top:!0}]])}}}),mo=L(!1),bv=L(0),wv=L(0),nt=L(!1);let Lt=!1,st=null;function Oo(e){const o=e.canvas;if(!o)return null;const t=Array.from(o.selectedItems);if(t.length!==1)return null;const s=t[0];return to(s)?`N:${s.id}`:es(s)?`G:${s.id}`:null}n(Oo,"buildSelectionSignature");function Cv(e){return st?Oo(e)===st:!1}n(Cv,"currentSelectionMatchesSignature");function kv(e){const o=ge(),t=o.getCanvas(),{getSelectableItems:s}=Zn(),{shouldRenderVueNodes:l}=jo(),a=L({x:0,y:0}),i=L(!1),{left:r,top:u}=zn(t.canvas),f=y(()=>{const k=o.canvas?.state?.draggingItems??!1,N=l.value&&De.isDraggingVueNodes.value;return k||N}),m=n(()=>{const k=s();if(!k.size){i.value=!1;return}if(f.value){i.value=!1;return}i.value=!0;const N=[];for(const x of k)if(x.id!=null)if(l.value&&typeof x.id=="string"){const S=De.getNodeLayoutRef(x.id).value;S&&N.push([S.bounds.x,S.bounds.y,S.bounds.width,S.bounds.height])}else(x instanceof mt||x instanceof Ot)&&N.push([x.pos[0],x.pos[1]-ve.NODE_TITLE_HEIGHT,x.size[0],x.size[1]+ve.NODE_TITLE_HEIGHT]);const T=zi(N);T&&(a.value={x:T.x+T.width/2,y:T.y-10},v())},"updateSelectionBounds"),v=n(()=>{if(!i.value)return;const{scale:k,offset:N}=t.ds,T=(a.value.x+N[0])*k+r.value,x=(a.value.y+N[1])*k+u.value;e.value&&(e.value.style.setProperty("--tb-x",`${T}px`),e.value.style.setProperty("--tb-y",`${x}px`))},"updateTransform"),{resume:p,pause:w}=oo(v);we(()=>{i.value?p():w()}),se(()=>o.getCanvas().state.selectionChanged,k=>{k&&((nt.value||st)&&(nt.value=!1,Lt=!1,mo.value?st=Oo(o):st=null),m(),o.getCanvas().state.selectionChanged=!1)},{immediate:!0}),se(()=>mo.value,k=>{k?st=Oo(o):o.canvas?.state?.draggingItems||(st=null,nt.value&&(nt.value=!1))});const C=n(k=>{if(k){g();return}b()},"handleDragStateChange"),g=n(()=>{if(i.value=!1,!mo.value){nt.value=!1,Lt=!1;return}if(Oo(o)!==st&&(st=null),mo.value=!1,Lt=!0,nt.value=!!st,nt.value){bv.value++;return}Lt=!1},"handleDragStart"),b=n(()=>{requestAnimationFrame(()=>{m();const k=Cv(o),N=Lt&&i.value&&nt.value&&k;nt.value=N&&nt.value,Lt=!1,N&&wv.value++})},"handleDragEnd");return se(f,C),vt(()=>{xv()}),{visible:i}}n(kv,"useSelectionToolboxPosition");function xv(){mo.value=!1,nt.value=!1,Lt=!1,st=null}n(xv,"resetMoreOptionsState");const Sv=new Set(["Properties","Colors","Shapes","Title","Mode","Properties Panel","Copy (Clipspace)"]),_v=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 Ys(e){return e.toLowerCase().replace(/^un/,"").trim()}n(Ys,"normalizeLabel");function Tv(e,o){const t=Ys(e),s={color:["color","colors"],shape:["shape","shapes"],pin:["pin","unpin"],delete:["remove","delete"],duplicate:["clone","duplicate"]};return o.some(l=>{if(!l.label)return!1;const a=Ys(l.label);if(a===t)return!0;for(const i of Object.values(s))if(i.includes(t)&&i.includes(a))return!0;return!1})}n(Tv,"isDuplicateItem");function $v(e){return _v.has(e)}n($v,"isCoreMenuItem");function Nv(e){const o=new Map,t=[];for(const a of e){if(a.type==="divider"||a.type==="category"){t.push(a);continue}if(!a.label){t.push(a);continue}o.has(a.label)||o.set(a.label,[]),o.get(a.label).push(a)}const s=[],l=new Set;for(const a of e){if(a.type==="divider"||a.type==="category"||!a.label){if(t.includes(a)){s.push(a);const u=t.indexOf(a);t.splice(u,1)}continue}if(l.has(a.label))continue;l.add(a.label);const i=o.get(a.label);if(i.length===1){s.push(i[0]);continue}const r=i.find(u=>u.source==="vue");r?s.push(r):s.push(i[0])}return s}n(Nv,"removeDuplicateMenuOptions");const Iv=["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 gn(e){const o=Iv.indexOf(e);return o===-1?999:o}n(gn,"getMenuItemOrder");function In(e){const o=Nv(e),t=new Map,s=[];let l;for(const m of o){if(m.type==="divider"||m.type==="category")continue;if((m.label==="Delete"||m.label==="Remove")&&!m.hasSubmenu){l=m;continue}m.label&&$v(m.label)?t.set(m.label,m):s.push(m)}const a=[],i=Array.from(t.keys());i.sort((m,v)=>gn(m)-gn(v));const r=n(m=>m<=2?1:m<=8?2:m<=15?3:m<=17?4:5,"getSectionNumber");let u=0;for(const m of i){const v=t.get(m),p=gn(m),w=r(p);u>0&&w!==u&&a.push({type:"divider"}),a.push(v),u=w}const f=[];return f.push(...a),s.length>0&&(f.push({type:"divider"}),f.push({label:"Extensions",type:"category",disabled:!0}),f.push(...s)),l&&(f.push({type:"divider"}),f.push(l)),f}n(In,"buildStructuredMenu");function Mv(e,o,t=!0){const s=[];for(const l of e){if(l===null){s.push({type:"divider"});continue}if(!l.content||Sv.has(l.content)||Tv(l.content,s))continue;const a={label:l.content,source:"litegraph"};if(l.disabled&&(a.disabled=!0),l.has_submenu){if(l.submenu?.options)a.hasSubmenu=!0,a.submenu=fl(l.submenu.options);else if(l.callback&&!l.disabled){a.hasSubmenu=!0;const i=Pv(l,o);i?a.submenu=i:console.warn("[ContextMenuConverter] Failed to capture submenu for:",l.content)}}else l.callback&&!l.disabled&&(a.action=()=>{try{l.callback?.call(l,l.value,{},void 0,void 0,l)}catch(i){console.error("Error executing context menu callback:",i)}});s.push(a)}return t?In(s):s}n(Mv,"convertContextMenuToOptions");function Pv(e,o){let t,s;const l=ve.ContextMenu;try{ve.ContextMenu=function(a,i){return t=a,s=i,{close:n(()=>{},"close"),root:document.createElement("div")}};try{const a=new MouseEvent("click",{bubbles:!0,cancelable:!0,clientX:0,clientY:0}),i={close:n(()=>{},"close"),root:document.createElement("div")};e.callback?.call(e,e.value,{},a,i,o)}catch(a){console.warn("[ContextMenuConverter] Error executing callback for:",e.content,a)}}finally{ve.ContextMenu=l}if(t)return fl(t,s);console.warn("[ContextMenuConverter] No items captured for:",e.content)}n(Pv,"captureDynamicSubmenu");function fl(e,o){const t=[];for(const s of e){if(s===null)continue;if(typeof s=="string"){const i={label:s,action:n(()=>{try{o?.callback&&o.callback.call(null,s,o,void 0,void 0,o.extra)}catch(r){console.error("Error executing string item callback:",r)}},"action")};t.push(i);continue}if(!s.content)continue;const a={label:Dv(s.content),action:n(()=>{try{s.callback?.call(s,s.value,{},void 0,void 0,s)}catch(i){console.error("Error executing submenu callback:",i)}},"action")};s.disabled&&(a.disabled=!0),t.push(a)}return t}n(fl,"convertSubmenuToOptions");function Dv(e){return Ct.sanitize(e,{ALLOWED_TAGS:[]}).trim()||e.replace(/<[^>]*>/g,"").trim()||e}n(Dv,"stripHtmlTags");function us(){const e=ge(),o=Re();return{refreshCanvas:n(()=>{e.canvas?.emitBeforeChange(),e.canvas?.setDirty(!0,!0),e.canvas?.graph?.afterChange(),e.canvas?.emitAfterChange(),o.activeWorkflow?.changeTracker?.checkState()},"refreshCanvas")}}n(us,"useCanvasRefresh");function cs(){const{t:e}=fe(),o=ge(),t=ct(),s=us(),l=y(()=>t.completedActivePalette.light_theme),a=n(w=>Vt(w,{lightness:.5}),"toLightThemeColor"),i={name:"noColor",localizedName:e("color.noColor"),value:{dark:ve.NODE_DEFAULT_BGCOLOR,light:a(ve.NODE_DEFAULT_BGCOLOR)}},r=[i,...Object.entries(Qe.node_colors).map(([w,C])=>({name:w,localizedName:e(`color.${w}`),value:{dark:C.bgcolor,light:a(C.bgcolor)}}))],u=[{name:"default",localizedName:e("shape.default"),value:$t.ROUND},{name:"box",localizedName:e("shape.box"),value:$t.BOX},{name:"card",localizedName:e("shape.CARD"),value:$t.CARD}];return{colorOptions:r,shapeOptions:u,applyColor:n(w=>{const C=w?.name??i.name,g=C===i.name?null:Qe.node_colors[C];for(const b of o.selectedItems)Vo(b)&&b.setColorOption(g);s.refreshCanvas()},"applyColor"),applyShape:n(w=>{const C=Array.from(o.selectedItems).filter(g=>g instanceof mt);C.length!==0&&(C.forEach(g=>{g.shape=w.value}),s.refreshCanvas())},"applyShape"),getCurrentColor:n(()=>{const w=Array.from(o.selectedItems);if(w.length===0)return null;const C=w.find(k=>Vo(k));if(!C||!Vo(C))return null;const b=C.getColorOption()?.bgcolor??null;return r.find(k=>k.value.dark===b||k.value.light===b)??i},"getCurrentColor"),getCurrentShape:n(()=>{const w=Array.from(o.selectedItems).filter(b=>b instanceof mt);if(w.length===0)return null;const g=w[0].shape??$t.ROUND;return u.find(b=>b.value===g)??u[0]},"getCurrentShape"),isLightTheme:l}}n(cs,"useNodeCustomization");function Av(){const{t:e}=fe(),o=ge(),t=Re(),s=re(),l=us(),{shapeOptions:a,colorOptions:i,isLightTheme:r}=cs();return{getFitGroupToNodesOption:n(p=>({label:"Fit Group To Nodes",icon:"icon-[lucide--move-diagonal-2]",action:n(()=>{try{p.recomputeInsideNodes()}catch(C){console.warn("Failed to recompute group nodes:",C);return}const w=s.get("Comfy.GroupSelectedNodes.Padding");p.resizeTo(p.children,w),p.graph?.change(),o.canvas?.setDirty(!0,!0),t.activeWorkflow?.changeTracker?.checkState()},"action")}),"getFitGroupToNodesOption"),getGroupShapeOptions:n((p,w)=>({label:e("contextMenu.Shape"),icon:"icon-[lucide--box]",hasSubmenu:!0,submenu:a.map(C=>({label:C.localizedName,action:n(()=>{(p.nodes||[]).forEach(b=>b.shape=C.value),l.refreshCanvas(),w()},"action")}))}),"getGroupShapeOptions"),getGroupColorOptions:n((p,w)=>({label:e("contextMenu.Color"),icon:"icon-[lucide--palette]",hasSubmenu:!0,submenu:i.map(C=>({label:C.localizedName,color:r.value?C.value.light:C.value.dark,action:n(()=>{p.color=r.value?C.value.light:C.value.dark,l.refreshCanvas(),w()},"action")}))}),"getGroupColorOptions"),getGroupModeOptions:n((p,w)=>{const C=[];try{p.recomputeInsideNodes()}catch(N){return console.warn("Failed to recompute group nodes for mode options:",N),C}const g=p.nodes||[];if(!g.length)return C;let b=!0;for(let N=1;N<g.length;N++)if(g[N].mode!==g[0].mode){b=!1;break}const k=n((N,T)=>({label:e(`selectionToolbox.${N}`),icon:T===Oe.BYPASS?"icon-[lucide--ban]":T===Oe.NEVER?"icon-[lucide--zap-off]":"icon-[lucide--play]",action:n(()=>{g.forEach(x=>{x.mode=T}),o.canvas?.setDirty(!0,!0),p.graph?.change(),t.activeWorkflow?.changeTracker?.checkState(),w()},"action")}),"createModeAction");if(b)switch(g[0].mode){case Oe.ALWAYS:C.push(k("Set Group Nodes to Never",Oe.NEVER)),C.push(k("Bypass Group Nodes",Oe.BYPASS));break;case Oe.NEVER:C.push(k("Set Group Nodes to Always",Oe.ALWAYS)),C.push(k("Bypass Group Nodes",Oe.BYPASS));break;case Oe.BYPASS:C.push(k("Set Group Nodes to Always",Oe.ALWAYS)),C.push(k("Set Group Nodes to Never",Oe.NEVER));break;default:C.push(k("Set Group Nodes to Always",Oe.ALWAYS)),C.push(k("Set Group Nodes to Never",Oe.NEVER)),C.push(k("Bypass Group Nodes",Oe.BYPASS));break}else C.push(k("Set Group Nodes to Always",Oe.ALWAYS)),C.push(k("Set Group Nodes to Never",Oe.NEVER)),C.push(k("Bypass Group Nodes",Oe.BYPASS));return C},"getGroupModeOptions")}}n(Av,"useGroupMenuOptions");function Lv(){const{t:e}=fe(),o=n(()=>{Se().execute("Comfy.MaskEditor.OpenMaskEditor")},"openMaskEditor"),t=n(i=>{if(!i?.imgs?.length)return;const r=i.imgs[i.imageIndex??0];if(!r)return;const u=new URL(r.src);u.searchParams.delete("preview"),window.open(u.toString(),"_blank")},"openImage"),s=n(async i=>{if(!i?.imgs?.length)return;const r=i.imgs[i.imageIndex??0];if(!r)return;const u=document.createElement("canvas"),f=u.getContext("2d");if(f){u.width=r.naturalWidth,u.height=r.naturalHeight,f.drawImage(r,0,0);try{const m=await new Promise(v=>{u.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"),l=n(i=>{if(!i?.imgs?.length)return;const r=i.imgs[i.imageIndex??0];if(r)try{const u=new URL(r.src);u.searchParams.delete("preview"),ts(u.toString())}catch(u){console.error("Failed to save image:",u)}},"saveImage");return{getImageMenuOptions:n(i=>i?.imgs?.length?[{label:e("contextMenu.Open in Mask Editor"),action:n(()=>o(),"action")},{label:e("contextMenu.Open Image"),icon:"icon-[lucide--external-link]",action:n(()=>t(i),"action")},{label:e("contextMenu.Copy Image"),icon:"icon-[lucide--copy]",action:n(()=>s(i),"action")},{label:e("contextMenu.Save Image"),icon:"icon-[lucide--download]",action:n(()=>l(i),"action")}]:[],"getImageMenuOptions")}}n(Lv,"useImageMenuOptions");function Ev(){const{getSelectedNodes:e,toggleSelectedNodesMode:o}=Zn(),t=Se(),s=Re();return{adjustNodeSize:n(()=>{e().forEach(m=>{const v=m.computeSize();m.setSize([v[0],v[1]])}),Y.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"adjustNodeSize"),toggleNodeCollapse:n(()=>{e().forEach(m=>{m.collapse()}),Y.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"toggleNodeCollapse"),toggleNodePin:n(()=>{e().forEach(m=>{m.pin(!m.pinned)}),Y.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"toggleNodePin"),toggleNodeBypass:n(()=>{o(Oe.BYPASS),Y.canvas.setDirty(!0,!0)},"toggleNodeBypass"),runBranch:n(async()=>{const f=e();Ua(f).length!==0&&await t.execute("Comfy.QueueSelectedOutputNodes")},"runBranch")}}n(Ev,"useSelectedNodeActions");function Vv(){const{t:e}=fe(),{shapeOptions:o,applyShape:t,applyColor:s,colorOptions:l,isLightTheme:a}=cs(),{adjustNodeSize:i,toggleNodeCollapse:r,toggleNodePin:u,toggleNodeBypass:f,runBranch:m}=Ev(),v=y(()=>o.map(T=>({label:T.localizedName,action:n(()=>t(T),"action")}))),p=y(()=>l.map(T=>({label:T.localizedName,color:a.value?T.value.light:T.value.dark,action:n(()=>s(T.name==="noColor"?null:T),"action")})));return{getNodeInfoOption:n(T=>({label:e("contextMenu.Node Info"),icon:"icon-[lucide--info]",action:T}),"getNodeInfoOption"),getAdjustSizeOption:n(()=>({label:e("contextMenu.Adjust Size"),icon:"icon-[lucide--move-diagonal-2]",action:i}),"getAdjustSizeOption"),getNodeVisualOptions:n((T,x)=>[{label:T.collapsed?e("contextMenu.Expand Node"):e("contextMenu.Minimize Node"),icon:T.collapsed?"icon-[lucide--maximize-2]":"icon-[lucide--minimize-2]",action:n(()=>{r(),x()},"action")},{label:e("contextMenu.Shape"),icon:"icon-[lucide--box]",hasSubmenu:!0,submenu:v.value,action:n(()=>{},"action")},{label:e("contextMenu.Color"),icon:"icon-[lucide--palette]",hasSubmenu:!0,submenu:p.value,isColorPicker:!0,action:n(()=>{},"action")}],"getNodeVisualOptions"),getPinOption:n((T,x)=>({label:T.pinned?e("contextMenu.Unpin"):e("contextMenu.Pin"),icon:T.pinned?"icon-[lucide--pin-off]":"icon-[lucide--pin]",action:n(()=>{u(),x()},"action")}),"getPinOption"),getBypassOption:n((T,x)=>({label:T.bypassed?e("contextMenu.Remove Bypass"):e("contextMenu.Bypass"),icon:"icon-[lucide--redo-dot]",shortcut:"Ctrl+B",action:n(()=>{f(),x()},"action")}),"getBypassOption"),getRunBranchOption:n(()=>({label:e("contextMenu.Run Branch"),icon:"icon-[lucide--play]",action:m}),"getRunBranchOption"),colorSubmenu:p}}n(Vv,"useNodeMenuOptions");function ml(){const e=re(),o=nn(),{hasMultipleSelection:t}=Ft(),s=y(()=>t.value);return{frameNodes:n(()=>{const{canvas:a}=Y;if(!a.selectedItems?.size)return;const i=new Ot,r=e.get("Comfy.GroupSelectedNodes.Padding");i.resizeTo(a.selectedItems,r),a.graph?.add(i),o.titleEditorTarget=i},"frameNodes"),canFrame:s}}n(ml,"useFrameNodes");function Ov(){const{t:e}=fe(),o=ge(),t=us(),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]"}],l=[{name:"horizontal",localizedName:e("contextMenu.Horizontal"),value:!0,icon:"icon-[lucide--align-center-horizontal]"},{name:"vertical",localizedName:e("contextMenu.Vertical"),value:!1,icon:"icon-[lucide--align-center-vertical]"}];return{alignOptions:s,distributeOptions:l,applyAlign:n(r=>{const u=Array.from(o.selectedItems).filter(m=>to(m));if(u.length===0)return;const f=Fi(u,r.value);o.canvas?.repositionNodesVueMode(f),t.refreshCanvas()},"applyAlign"),applyDistribute:n(r=>{const u=Array.from(o.selectedItems).filter(m=>to(m));if(u.length<2)return;const f=Bi(u,r.value);o.canvas?.repositionNodesVueMode(f),t.refreshCanvas()},"applyDistribute")}}n(Ov,"useNodeArrangement");function Rv(){const e=ge(),o=Nt(),t=gt(),s=nn(),l=Re();return{copySelection:n(()=>{const m=Y.canvas;if(!m.selectedItems||m.selectedItems.size===0){o.add({severity:"warn",summary:ue("g.nothingToCopy"),detail:ue("g.selectItemsToCopy"),life:3e3});return}m.copyToClipboard(),o.add({severity:"success",summary:ue("g.copied"),detail:ue("g.itemsCopiedToClipboard"),life:2e3})},"copySelection"),pasteSelection:n(()=>{Y.canvas.pasteFromClipboard({connectInputs:!1}),l.activeWorkflow?.changeTracker?.checkState()},"pasteSelection"),duplicateSelection:n(()=>{const m=Y.canvas;if(!m.selectedItems||m.selectedItems.size===0){o.add({severity:"warn",summary:ue("g.nothingToDuplicate"),detail:ue("g.selectItemsToDuplicate"),life:3e3});return}m.copyToClipboard(),m.selectedItems.clear(),e.updateSelectedItems(),m.pasteFromClipboard({connectInputs:!1}),l.activeWorkflow?.changeTracker?.checkState()},"duplicateSelection"),deleteSelection:n(()=>{const m=Y.canvas;if(!m.selectedItems||m.selectedItems.size===0){o.add({severity:"warn",summary:ue("g.nothingToDelete"),detail:ue("g.selectItemsToDelete"),life:3e3});return}m.deleteSelected(),m.setDirty(!0,!0),l.activeWorkflow?.changeTracker?.checkState()},"deleteSelection"),renameSelection:n(async()=>{const m=Array.from(e.selectedItems);if(m.length===1){const v=m[0];if(v instanceof mt){s.titleEditorTarget=v;return}const p="title"in v?v.title:"",w=await t.prompt({title:ue("g.rename"),message:ue("g.enterNewName"),defaultValue:p});if(w&&w!==p&&"title"in v){const C=v;C.title=w,Y.canvas.setDirty(!0,!0),l.activeWorkflow?.changeTracker?.checkState()}return}if(m.length>1){const v=await t.prompt({title:ue("g.batchRename"),message:ue("g.enterBaseName"),defaultValue:"Item"});v&&(m.forEach((p,w)=>{if("title"in p){const C=p;C.title=`${v} ${w+1}`}}),Y.canvas.setDirty(!0,!0),l.activeWorkflow?.changeTracker?.checkState());return}o.add({severity:"warn",summary:ue("g.nothingToRename"),detail:ue("g.selectItemsToRename"),life:3e3})},"renameSelection")}}n(Rv,"useSelectionOperations");function Wv(){const{t:e}=fe(),{copySelection:o,duplicateSelection:t,deleteSelection:s,renameSelection:l}=Rv(),{alignOptions:a,distributeOptions:i,applyAlign:r,applyDistribute:u}=Ov(),{convertToSubgraph:f,unpackSubgraph:m,addSubgraphToLibrary:v}=Ga(),{frameNodes:p}=ml(),w=y(()=>a.map(x=>({label:x.localizedName,icon:x.icon,action:n(()=>r(x),"action")}))),C=y(()=>i.map(x=>({label:x.localizedName,icon:x.icon,action:n(()=>u(x),"action")})));return{getBasicSelectionOptions:n(()=>[{label:e("contextMenu.Rename"),action:l},{label:e("contextMenu.Copy"),shortcut:"Ctrl+C",action:o},{label:e("contextMenu.Duplicate"),shortcut:"Ctrl+D",action:t}],"getBasicSelectionOptions"),getSubgraphOptions:n(({hasSubgraphs:x,hasMultipleSelection:S})=>{const I={label:e("contextMenu.Convert to Subgraph"),icon:"icon-[lucide--shrink]",action:f,badge:Mn.NEW},_=[];return(!x||S)&&_.push(I),x&&_.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:n(()=>{const x=n(()=>{Se().execute("Comfy.GroupNode.ConvertSelectedNodesToGroupNode")},"convertToGroupNodes");return[{label:e("contextMenu.Convert to Group Node"),icon:"icon-[lucide--group]",action:x,badge:Mn.DEPRECATED},{label:e("g.frameNodes"),icon:"icon-[lucide--frame]",action:p}]},"getMultipleNodesOptions"),getDeleteOption:n(()=>({label:e("contextMenu.Delete"),icon:"icon-[lucide--trash-2]",shortcut:"Delete",action:s}),"getDeleteOption"),getAlignmentOptions:n(()=>[{label:e("contextMenu.Align Selected To"),icon:"icon-[lucide--align-start-horizontal]",hasSubmenu:!0,submenu:w.value,action:n(()=>{},"action")},{label:e("contextMenu.Distribute Nodes"),icon:"icon-[lucide--align-center-horizontal]",hasSubmenu:!0,submenu:C.value,action:n(()=>{},"action")}],"getAlignmentOptions"),alignSubmenu:w,distributeSubmenu:C}}n(Wv,"useSelectionMenuOptions");var Mn=(e=>(e.NEW="new",e.DEPRECATED="deprecated",e))(Mn||{});let ko=null;function zv(e){ko?.toggle&&ko.toggle(e)}n(zv,"toggleNodeOptions");function Bv(e){ko?.show&&ko.show(e)}n(Bv,"showNodeOptions");function Pn(e){ko=e}n(Pn,"registerNodeOptionsInstance");function Fv(e){return e.map(o=>o.type==="divider"||o.type==="category"?o:{...o,source:"vue"})}n(Fv,"markAsVueOptions");function Uv(){const{selectedItems:e,selectedNodes:o,nodeDef:t,showNodeHelp:s,hasSubgraphs:l,hasImageNode:a,hasOutputNodesSelected:i,hasMultipleSelection:r,computeSelectionFlags:u}=Ft(),f=ge(),{getImageMenuOptions:m}=Lv(),{getNodeInfoOption:v,getNodeVisualOptions:p,getPinOption:w,getBypassOption:C,getRunBranchOption:g}=Vv(),{getFitGroupToNodesOption:b,getGroupColorOptions:k,getGroupModeOptions:N}=Av(),{getBasicSelectionOptions:T,getSubgraphOptions:x,getMultipleNodesOptions:S}=Wv(),I=l,_=r,M=L(0),P=n(()=>{M.value++},"bump"),B=y(()=>{M.value;const U=u(),R=e.value.filter(es),F=R.length===1&&o.value.length===0?R[0]:null,z=I.value,G=[];if(o.value.length===1&&!F&&f.canvas)try{const X=o.value[0],de=f.canvas.getNodeMenuOptions(X);G.push(...Mv(de,X,!1))}catch(X){console.error("Error getting LiteGraph menu items:",X)}const q=[],Q=T();if(q.push(...Q),q.push({type:"divider"}),i.value){const X=g();q.push(X)}if(!F){const X=w(U,P),de=C(U,P);q.push(X),q.push(de)}if(F){const X=N(F,P);q.push(...X)}if(q.push({type:"divider"}),q.push(...x({hasSubgraphs:z,hasMultipleSelection:_.value})),_.value&&q.push(...S()),F)q.push(b(F));else{const X=p(U,P);X.length>0&&q.push(X[0])}if(q.push({type:"divider"}),t.value&&q.push(v(s)),F)q.push(k(F,P));else{const X=p(U,P);X.length>1&&q.push(X[1]),X.length>2&&q.push(X[2])}q.push({type:"divider"}),a.value&&o.value.length>0&&(q.push(...m(o.value[0])),q.push({type:"divider"}));const te=Fv(q);if(G.length>0){const X=[...G,...te];return In(X)}return In(te)}),j=y(()=>B.value.filter(U=>U.hasSubmenu&&U.submenu));return{menuOptions:B,menuOptionsWithSubmenu:j,bump:P,hasSubgraphs:I,registerNodeOptionsInstance:Pn}}n(Uv,"useMoreOptionsMenu");const Gv=["title","onClick"],jv={key:0,class:"icon-[lucide--check] size-4 flex-shrink-0"},Hv={key:1,class:"w-4 flex-shrink-0"},qv=H({__name:"ColorPickerMenu",props:{option:{}},emits:["submenu-click"],setup(e,{expose:o,emit:t}){const s=e,l=t,{getCurrentShape:a}=cs(),i=L();o({toggle:n((v,p)=>{i.value?.toggle(v,p)},"toggle")});const u=n(v=>{v.disabled||(l("submenu-click",v),i.value?.hide())},"handleSubmenuClick"),f=n(v=>{if(v.color)return!1;const p=a();return p?p.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,p)=>(d(),W(h(Ze),{ref_key:"popoverRef",ref:i,"auto-z-index":!0,"base-z-index":1100,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"absolute z-60"},content:{class:["text-base-foreground rounded-lg","shadow-lg border border-base-background","bg-interface-panel-surface"]}}},{default:A(()=>[c("div",{class:K(m.value?"flex flex-col gap-1 p-2":"flex flex-col p-2 min-w-40")},[(d(!0),$(oe,null,be(v.option.submenu,w=>(d(),$("div",{key:w.label,class:K(h(ne)("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",w.disabled?"cursor-not-allowed pointer-events-none text-node-icon-disabled":"hover:bg-secondary-background-hover")),title:w.label,onClick:n(C=>u(w),"onClick")},[w.color?(d(),$("div",{key:0,class:"size-5 rounded-full border border-border-default",style:ye({backgroundColor:w.color})},null,4)):w.color?E("",!0):(d(),$(oe,{key:1},[f(w)?(d(),$("i",jv)):(d(),$("div",Hv)),c("span",null,V(w.label),1)],64))],10,Gv))),128))],2)]),_:1},512))}}),Kv=["onClick"],Qv={class:"flex-1"},Yv={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"},Jv={key:2,class:"icon-[lucide--chevron-right] size-4 opacity-60"},Xv=H({__name:"NodeContextMenu",setup(e,{expose:o}){const t=L(),s=L(),l=L(!1),{menuOptions:a,bump:i}=Uv(),r=ge(),u=L({x:0,y:0}),f=r.getCanvas(),{left:m,top:v}=zn(f.canvas);let p=0,w=0,C=0;const g=n(()=>{if(!l.value)return;const F=t.value?.container;if(!F)return;const{scale:z,offset:G}=f.ds;if(z===p&&G[0]===w&&G[1]===C)return;p=z,w=G[0],C=G[1];const q=(u.value.x+G[0])*z+m.value,Q=(u.value.y+G[1])*z+v.value;F.style.left=`${q}px`,F.style.top=`${Q}px`},"updateMenuPosition"),{resume:b,pause:k}=oo(g,{immediate:!1});we(()=>{l.value?b():k()}),Ee(window,"touchstart",R=>{if(!l.value||!t.value)return;const F=R.target,z=t.value,G=z.container||z.$el;G&&!G.contains(F)&&_()},{passive:!0});const N=y(()=>a.value.find(R=>R.isColorPicker));function T(R){return!!R.isColorPicker}n(T,"isColorOption");function x(R){if(R.type==="divider")return{separator:!0};const F=T(R),z={label:R.label,icon:R.icon,disabled:R.disabled,shortcut:R.shortcut,isColorSubmenu:F,originalOption:R};return R.hasSubmenu&&R.submenu&&!F&&(z.items=R.submenu.map(G=>({label:G.label,icon:G.icon,disabled:G.disabled,command:n(()=>{G.action(),_()},"command")}))),!R.hasSubmenu&&R.action&&(z.command=()=>{R.action?.(),_()}),z}n(x,"convertToMenuItem");const S=y(()=>a.value.map(x));function I(R){i();const F=R.clientX-m.value,z=R.clientY-v.value,{scale:G,offset:q}=f.ds;u.value={x:F/G-q[0],y:z/G-q[1]},l.value=!0,t.value?.show(R)}n(I,"show");function _(){t.value?.hide()}n(_,"hide");function M(R){l.value?_():I(R)}n(M,"toggle"),o({toggle:M,hide:_,isOpen:l,show:I});function P(R){R.stopPropagation(),R.preventDefault();const F=Array.from(R.currentTarget.children).find(z=>z.classList.contains("icon-[lucide--chevron-right]"));s.value?.toggle(R,F)}n(P,"showColorPopover");function B(R){R.action(),_()}n(B,"handleColorSelect");function j(){l.value=!0}n(j,"onMenuShow");function U(){l.value=!1}return n(U,"onMenuHide"),We(()=>{Pn({toggle:M,show:I,hide:_,isOpen:l})}),vt(()=>{Pn(null)}),(R,F)=>(d(),$(oe,null,[O(h(Da),{ref_key:"contextMenu",ref:t,model:S.value,class:"max-h-[80vh] md:max-h-none overflow-y-auto md:overflow-y-visible",onShow:j,onHide:U},{item:A(({item:z,props:G,hasSubmenu:q})=>[c("a",It(G.action,{class:"flex items-center gap-2 px-3 py-1.5",onClick:n(Q=>z.isColorSubmenu?P(Q):void 0,"onClick")}),[z.icon?(d(),$("i",{key:0,class:K([z.icon,"size-4"])},null,2)):E("",!0),c("span",Qv,V(z.label),1),z.shortcut?(d(),$("span",Yv,V(z.shortcut),1)):E("",!0),q||z.isColorSubmenu?(d(),$("i",Jv)):E("",!0)],16,Kv)]),_:1},8,["model"]),N.value?(d(),W(qv,{ref_key:"colorPickerMenu",ref:s,key:"color-picker-menu",option:N.value,onSubmenuClick:B},null,8,["option"])):E("",!0)],64))}}),Zv=H({__name:"FrameNodes",setup(e){const{frameNodes:o}=ml();return(t,s)=>{const l=Ne("tooltip");return ce((d(),W(J,{variant:"muted-textonly","aria-label":t.$t("g.frameNodes"),onClick:h(o)},{default:A(()=>s[0]||(s[0]=[c("i",{class:"icon-[lucide--frame]"},null,-1)])),_:1},8,["aria-label","onClick"])),[[l,{value:t.$t("g.frameNodes"),showDelay:1e3},void 0,{top:!0}]])}}}),eg=H({__name:"NodeOptionsButton",setup(e){const o=n(t=>{zv(t)},"handleClick");return(t,s)=>{const l=Ne("tooltip");return ce((d(),W(J,{"data-testid":"more-options-button",variant:"muted-textonly","aria-label":t.$t("g.moreOptions"),onClick:o},{default:A(()=>s[0]||(s[0]=[c("i",{class:"icon-[lucide--more-vertical]"},null,-1)])),_:1},8,["aria-label"])),[[l,{value:t.$t("g.moreOptions"),showDelay:1e3},void 0,{top:!0}]])}}}),tg={},og={class:"h-6 w-px self-center bg-border-default"};function ng(e,o){return d(),$("div",og)}n(ng,"_sfc_render$1");const Js=Le(tg,[["render",ng]]),sg=H({__name:"SelectionToolbox",setup(e){const o=Se(),t=ge(),s=Ui(),l=io(),a=L(),{visible:i}=kv(a),r=y(()=>{const R=new Set(t.selectedItems.map(F=>s.invokeExtensions("getSelectionToolboxCommands",F).flat()).flat());return Array.from(R).map(F=>o.getCommand(F)).filter(F=>F!==void 0)}),{hasAnySelection:u,hasMultipleSelection:f,isSingleNode:m,isSingleSubgraph:v,isSingleImageNode:p,hasAny3DNodeSelected:w,hasOutputNodesSelected:C,nodeDef:g}=Ft(),b=y(()=>!!g.value),k=y(()=>u.value),N=y(()=>u.value),T=y(()=>f.value),x=y(()=>v.value),S=y(()=>m.value||v.value||f.value),I=y(()=>w.value),_=y(()=>p.value),M=y(()=>u.value),P=y(()=>u.value),B=y(()=>C.value),j=y(()=>k.value||N.value||T.value||x.value),U=y(()=>S.value);return(R,F)=>(d(),$(oe,null,[c("div",{ref_key:"toolboxRef",ref:a,style:{transform:"translate(var(--tb-x), var(--tb-y))"},class:"pointer-events-none fixed top-0 left-0 z-40"},[O(Yo,{name:"slide-up"},{default:A(()=>[h(i)?(d(),W(h(Fn),{key:0,class:"selection-toolbox pointer-events-auto rounded-lg border border-interface-stroke bg-interface-panel-surface",pt:{header:"hidden",content:"p-2 h-12 flex flex-row gap-1"},onWheel:h(l).forwardEventToCanvas},{default:A(()=>[M.value?(d(),W(uv,{key:0})):E("",!0),b.value&&j.value?(d(),W(Js,{key:1})):E("",!0),b.value?(d(),W(pv,{key:2})):E("",!0),k.value?(d(),W(lv,{key:3})):E("",!0),T.value?(d(),W(Zv,{key:4})):E("",!0),N.value?(d(),W(rv,{key:5})):E("",!0),x.value?(d(),W(iv,{key:6})):E("",!0),x.value?(d(),W(yv,{key:7})):E("",!0),_.value?(d(),W(mv,{key:8})):E("",!0),j.value&&U.value?(d(),W(Js,{key:9})):E("",!0),S.value?(d(),W(ev,{key:10})):E("",!0),P.value?(d(),W(hv,{key:11})):E("",!0),I.value?(d(),W(fv,{key:12})):E("",!0),(d(!0),$(oe,null,be(r.value,z=>(d(),W(dv,{key:z.id,command:z},null,8,["command"]))),128)),B.value?(d(),W(cv,{key:13})):E("",!0),O(eg)]),_:1},8,["onWheel"])):E("",!0)]),_:1})],512),O(Xv)],64))}}),ag=Le(sg,[["__scopeId","data-v-c6489a20"]]),lg=H({__name:"TitleEditor",setup(e){const o=re(),t=L(!1),s=L(""),{style:l,updatePosition:a}=pl(),i=L({}),r=y(()=>({...l.value,...i.value})),u=nn(),f=ge(),m=L(!0),v=n(w=>{if(u.titleEditorTarget&&w?.trim()){const C=w.trim();u.titleEditorTarget.title=C;const g=u.titleEditorTarget;g instanceof mt&&g.isSubgraphNode?.()&&(g.subgraph.name=C),Y.canvas.setDirty(!0,!0)}t.value=!1,u.titleEditorTarget=null,f.canvas.allow_dragcanvas=m.value},"onEdit");return se(()=>u.titleEditorTarget,w=>{if(w===null)return;s.value=w.title,t.value=!0;const C=f.canvas;m.value=C.allow_dragcanvas,C.allow_dragcanvas=!1;const g=C.ds.scale;if(w instanceof Ot){const b=w;a({pos:b.pos,size:[b.size[0],b.titleHeight]}),i.value={fontSize:`${b.font_size*g}px`}}else if(w instanceof mt){const b=w,[k,N]=b.getBounding();a({pos:[k,N],size:[b.width,ve.NODE_TITLE_HEIGHT]}),i.value={fontSize:`${12*g}px`}}}),Ee(document,"litegraph:canvas",n(w=>{if(w.detail.subType==="group-double-click"){if(!o.get("Comfy.Group.DoubleClickTitleToEdit"))return;const C=w.detail.group,[g,b]=C.pos;w.detail.originalEvent.canvasY-b<=C.titleHeight&&(u.titleEditorTarget=C)}else if(w.detail.subType==="node-double-click"){if(!o.get("Comfy.Node.DoubleClickTitleToEdit"))return;const C=w.detail.node,[g,b]=C.pos;w.detail.originalEvent.canvasY-b<=0&&(u.titleEditorTarget=C)}},"canvasEventHandler")),(w,C)=>t.value?(d(),$("div",{key:0,class:"group-title-editor node-title-editor",style:ye(r.value)},[O(Gn,{"is-editing":t.value,"model-value":s.value,onEdit:v},null,8,["is-editing","model-value"])],4)):E("",!0)}}),ig=Le(lg,[["__scopeId","data-v-aceb018c"]]),rg={key:0,class:"p-3"},ug=H({__name:"TabInfo",props:{nodes:{}},setup(e){const o=y(()=>e.nodes[0]),t=St(),s=Gi(),l=y(()=>t.fromLGraphNode(o.value));return xt(l,a=>{s.openHelp(a)},{immediate:!0}),(a,i)=>l.value?(d(),$("div",rg,[O(ji,{node:l.value},null,8,["node"])])):E("",!0)}}),cg=["placeholder"],vl=H({__name:"SidePanelSearch",props:Jo({searcher:{type:Function,default:n(async()=>{},"default")},updateKey:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const o=bo(e,"modelValue"),t=L(!1),s=ba(o,100,{maxWait:100});se(o,a=>{t.value=a!==s.value});const l=Ol(()=>je(e.updateKey));return se([s,l],(a,i,r)=>{let u=!1,f;r(()=>{u=!0,f?.()}),e.searcher(s.value,m=>f=m).catch(m=>{console.error("[SidePanelSearch] searcher failed",m)}).finally(()=>{u||(t.value=!1)})},{immediate:!0}),(a,i)=>(d(),$("label",{class:K(h(ne)("mt-1 py-1.5 bg-secondary-background rounded-lg transition-all duration-150","flex-1 flex gap-2 px-2 items-center","text-base-foreground border-0","focus-within:ring focus-within:ring-component-node-widget-background-highlighted/80"))},[c("i",{class:K(h(ne)("size-4 text-muted-foreground",t.value?"icon-[lucide--loader-circle] animate-spin":"icon-[lucide--search]"))},null,2),ce(c("input",{"onUpdate:modelValue":i[0]||(i[0]=r=>o.value=r),type:"text",class:"bg-transparent border-0 outline-0 ring-0 h-5",placeholder:a.$t("g.searchPlaceholder")},null,8,cg),[[Rl,o.value]])],2))}}),dg=["fixed","increment","decrement","randomize"];function pg(e){return dg.includes(e)}n(pg,"isControlOption");function Xs(e){return pg(e)?e:"randomize"}n(Xs,"normalizeControlOption");function fg(e){e.vueTrack||wa((o,t)=>(e.callback=eo(e.callback,t),e.vueTrack=o,{get(){},set(){}}))}n(fg,"widgetWithVueTrack");function gl(e){return fg(e),e.vueTrack(),e.value}n(gl,"useReactiveWidgetValue");function mg(e){const o=e.linkedWidgets?.find(t=>t.name=="control_after_generate");if(o)return{value:Xs(o.value),update:n(t=>o.value=Xs(t),"update")}}n(mg,"getControlWidget");function vg(e,o){return!e.isSubgraphNode()||!Hi(o)?void 0:e.subgraph.getNodeById(o._overlay.nodeId)?.type}n(vg,"getNodeType");const gg=n(e=>{if(!(e==null||e===void 0)){if(typeof e=="string"||typeof e=="number"||typeof e=="boolean")return e;if(typeof e=="object")return Array.isArray(e)&&e.length>0&&e.every(o=>o instanceof File),e;console.warn(`Invalid widget value type: ${typeof e}`,e)}},"normalizeWidgetValue");function hl(e,o){const t=St();return function(s){try{const l=t.getInputSpecForWidget(e,s.name),a=o.get(s.name),i=s.promoted?"ring ring-component-node-widget-promoted":s.advanced?"ring ring-component-node-widget-advanced":void 0,r=n(u=>{const f=gg(u);s.value=f??void 0,s.callback?.(f,Y.canvas,e),e.widgets?.forEach(m=>m.triggerDraw?.())},"callback");return{name:s.name,type:s.type,value:gl(s),borderStyle:i,callback:r,controlWidget:mg(s),hasLayoutSize:typeof s.computeLayoutSize=="function",isDOMWidget:go(s),label:s.label,nodeType:vg(e,s),options:s.options,spec:l,slotMetadata:a}}catch{return{name:s.name||"unknown",type:s.type||"text",value:void 0}}}}n(hl,"safeWidgetMapper");function hg(e){return e==null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="object"}n(hg,"isValidWidgetValue");function yg(e){const{createNode:o,deleteNode:t,setSource:s}=sn(),l=Ca(new Map),a=new Map,i=n(g=>{const b=a.get(g),k=l.get(g);if(!b||!k)return;const N=new Map;b.inputs?.forEach((x,S)=>{x?.widget?.name&&N.set(x.widget.name,{index:S,linked:x.link!=null})});const T=k.widgets?.map(x=>{const S=N.get(x.name);return S?{...x,slotMetadata:S}:x});l.set(g,{...k,widgets:T,inputs:b.inputs?[...b.inputs]:void 0,outputs:b.outputs?[...b.outputs]:void 0})},"refreshNodeSlots");function r(g){const b=g.graph&&"id"in g.graph&&g.graph!==g.graph.rootGraph?String(g.graph.id):null,k=new Map,N=ws(g.widgets??[]);Object.defineProperty(g,"widgets",{get(){return N},set(M){N.splice(0,N.length,...M)}});const T=ws(g.inputs??[]);Object.defineProperty(g,"inputs",{get(){return T},set(M){T.splice(0,T.length,...M)}});const x=Wl(()=>(g.inputs?.forEach((M,P)=>{M?.widget?.name&&k.set(M.widget.name,{index:P,linked:M.link!=null})}),g.widgets?.map(hl(g,k))??[])),S=g.type||g.constructor?.comfyClass||g.constructor?.title||g.constructor?.name||"Unknown",I=g.constructor?.nodeData?.api_node??!1,_=g.badges;return{id:String(g.id),title:typeof g.title=="string"?g.title:"",type:S,mode:g.mode||0,titleMode:g.title_mode,selected:g.selected||!1,executing:!1,subgraphId:b,apiNode:I,badges:_,hasErrors:!!g.has_errors,widgets:x,inputs:T,outputs:g.outputs?[...g.outputs]:void 0,flags:g.flags?{...g.flags}:void 0,color:g.color||void 0,bgcolor:g.bgcolor||void 0,resizable:g.resizable,shape:g.shape}}n(r,"extractVueNodeData");const u=n(g=>a.get(g),"getNode"),f=n(()=>{if(!e?._nodes)return;const g=new Set(e._nodes.map(b=>String(b.id)));for(const b of Array.from(l.keys()))g.has(b)||(a.delete(b),l.delete(b));e._nodes.forEach(b=>{const k=String(b.id);a.set(k,b),l.set(k,r(b))})},"syncWithGraph"),m=n((g,b)=>{const k=String(g.id);a.set(k,g),l.set(k,r(g));const N=n(()=>{const T={x:g.pos[0],y:g.pos[1]},x={width:g.size[0],height:g.size[1]};s(wo.Canvas),o(k,{position:T,size:x,zIndex:g.order||0,visible:!0})},"initializeVueNodeLayout");window.app?.configuringGraph?g.onAfterGraphConfigured=eo(g.onAfterGraphConfigured,()=>{l.set(k,r(g)),N()}):N(),b&&b(g)},"handleNodeAdded"),v=n((g,b)=>{const k=String(g.id);s(wo.Canvas),t(k),a.delete(k),l.delete(k),b&&b(g)},"handleNodeRemoved"),p=n((g,b,k)=>()=>{e.onNodeAdded=g||void 0,e.onNodeRemoved=b||void 0,e.onTrigger=k||void 0,a.clear(),l.clear()},"createCleanupFunction"),C=n(()=>{const g=e.onNodeAdded,b=e.onNodeRemoved,k=e.onTrigger;e.onNodeAdded=T=>{m(T,g)},e.onNodeRemoved=T=>{v(T,b)};const N={"node:property:changed":n(T=>{const x=String(T.nodeId),S=l.get(x);if(S)switch(T.property){case"title":l.set(x,{...S,title:String(T.newValue)});break;case"flags.collapsed":l.set(x,{...S,flags:{...S.flags,collapsed:!!T.newValue}});break;case"flags.pinned":l.set(x,{...S,flags:{...S.flags,pinned:!!T.newValue}});break;case"mode":l.set(x,{...S,mode:typeof T.newValue=="number"?T.newValue:0});break;case"color":l.set(x,{...S,color:typeof T.newValue=="string"?T.newValue:void 0});break;case"bgcolor":l.set(x,{...S,bgcolor:typeof T.newValue=="string"?T.newValue:void 0});break;case"shape":l.set(x,{...S,shape:typeof T.newValue=="number"?T.newValue:void 0})}},"node:property:changed"),"node:slot-errors:changed":n(T=>{i(String(T.nodeId))},"node:slot-errors:changed"),"node:slot-links:changed":n(T=>{T.slotType===qi.INPUT&&i(String(T.nodeId))},"node:slot-links:changed")};return e.onTrigger=T=>{switch(T.type){case"node:property:changed":N["node:property:changed"](T);break;case"node:slot-errors:changed":N["node:slot-errors:changed"](T);break;case"node:slot-links:changed":N["node:slot-links:changed"](T);break}k?.(T)},f(),p(g||void 0,b||void 0,k||void 0)},"setupEventListeners")();return e._nodes&&e._nodes.length>0&&e._nodes.forEach(g=>{e.onNodeAdded&&e.onNodeAdded(g)}),{vueNodeData:l,getNode:u,cleanup:C}}n(yg,"useGraphNodeManager");const bg={class:"flex flex-col bg-interface-panel-surface"},wg={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl bg-inherit"},Cg=["disabled"],kg={class:"text-sm font-semibold line-clamp-2"},xg={key:0,class:"pb-4"},Sg=H({__name:"PropertiesAccordionItem",props:Jo({isEmpty:{type:Boolean}},{collapse:{type:Boolean,default:!1},collapseModifiers:{}}),emits:["update:collapse"],setup(e){const o=bo(e,"collapse");return(t,s)=>{const l=Ne("tooltip");return d(),$("div",bg,[c("div",wg,[ce((d(),$("button",{type:"button",class:K(h(ne)("group min-h-12 bg-transparent border-0 outline-0 ring-0 w-full text-left flex items-center justify-between pl-4 pr-3",!t.isEmpty&&"cursor-pointer")),disabled:t.isEmpty,onClick:s[0]||(s[0]=a=>o.value=!o.value)},[c("span",kg,[he(t.$slots,"label")]),t.isEmpty?E("",!0):(d(),$("i",{key:0,class:K(h(ne)("text-muted-foreground group-hover:text-base-foreground group-focus:text-base-foreground icon-[lucide--chevron-up] size-4 transition-all",o.value&&"-rotate-180"))},null,2))],10,Cg)),[[l,t.isEmpty?{value:t.$t("rightSidePanel.inputsNoneTooltip"),showDelay:1e3}:void 0]])]),!o.value&&!t.isEmpty?(d(),$("div",xg,[he(t.$slots,"default")])):E("",!0)])}}}),_g={key:0,class:"space-y-4 rounded-lg bg-interface-surface px-4"},Tg={class:"min-h-8"},$g={key:0,class:"text-sm leading-8 p-0 m-0 line-clamp-1"},Ng=H({__name:"SectionWidgets",props:{label:{},widgets:{}},setup(e){Zo("hideLayoutField",!0);const o=ge(),{t}=fe();function s(r){return Qi(r.type,r.name)||Yi}n(s,"getWidgetComponent");function l(r,u){r.value=u,r.callback?.(u),o.canvas?.setDirty(!0,!0)}n(l,"onWidgetValueChange");const a=y(()=>e.widgets.length===0),i=y(()=>e.label??(a.value?t("rightSidePanel.inputsNone"):t("rightSidePanel.inputs")));return(r,u)=>(d(),W(Sg,{"is-empty":a.value},{label:A(()=>[he(r.$slots,"label",{},()=>[$e(V(i.value),1)])]),default:A(()=>[a.value?E("",!0):(d(),$("div",_g,[(d(!0),$(oe,null,be(r.widgets,({widget:f,node:m},v)=>(d(),$("div",{key:`widget-${v}-${f.name}`,class:"widget-item gap-1.5 col-span-full grid grid-cols-subgrid"},[c("div",Tg,[f.name?(d(),$("p",$g,V(f.label||f.name),1)):E("",!0)]),(d(),W(Zt(s(f)),{widget:f,"model-value":h(gl)(f),"node-id":String(m.id),"node-type":m.type,class:K(h(ne)("col-span-1",h(Ki)(f.type)&&"min-h-36")),"onUpdate:modelValue":n(p=>l(f,p),"onUpdate:modelValue")},null,8,["widget","model-value","node-id","node-type","class","onUpdate:modelValue"]))]))),128))]))]),_:3},8,["is-empty"]))}}),Ig={class:"px-4 pb-4 flex gap-2 border-b border-interface-stroke"},Mg=H({__name:"TabParameters",props:{nodes:{}},setup(e){const o=y(()=>e.nodes.map(l=>{const{widgets:a=[]}=l;return{widgets:a.filter(r=>!(r.options?.canvasOnly||r.options?.hidden)).map(r=>({node:l,widget:r})),node:l}})),t=Xe([]);async function s(l){if(l.trim()===""){t.value=o.value;return}const a=l.trim().toLowerCase().split(" ");t.value=o.value.map(i=>({...i,widgets:i.widgets.filter(({widget:r})=>{const u=r.label?.toLowerCase(),f=r.name.toLowerCase(),m=r.type.toLowerCase(),v=r.value?.toString().toLowerCase();return a.every(p=>f.includes(p)||u?.includes(p)||m?.includes(p)||v?.includes(p))})})).filter(i=>i.widgets.length>0)}return n(s,"searcher"),(l,a)=>(d(),$(oe,null,[c("div",Ig,[O(vl,{searcher:s,"update-key":o.value},null,8,["update-key"])]),(d(!0),$(oe,null,be(t.value,i=>(d(),W(Ng,{key:i.node.id,label:o.value.length>1?i.node.title:void 0,widgets:i.widgets,"default-collapse":o.value.length>1&&o.value===t.value,class:"border-b border-interface-stroke"},null,8,["label","widgets","default-collapse"]))),128))],64))}}),Pg=["disabled","onClick"],Dg=H({__name:"FormSelectButton",props:{modelValue:{},options:{},optionLabel:{default:"label"},optionValue:{default:"value"},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:o}){const t=e,s=o,l=n((u,f)=>{if(typeof u!="object")return u;const m=t.optionValue;return u[m]??u.value??u.name??u.label??f},"getOptionValue"),a=n(u=>{if(typeof u=="object"&&u!==null){const f=t.optionLabel;return u[f]??u.label??u.name??u.value??String(u)}return String(u)},"getOptionLabel"),i=n(u=>{const f=l(t.options[u],u);return String(f)===String(t.modelValue??"")},"isSelected"),r=n(u=>{if(t.disabled)return;const f=l(t.options[u],u);s("update:modelValue",f)},"handleSelect");return(u,f)=>(d(),$("div",{class:K(h(ne)(h(uu),"p-1 inline-flex justify-center items-center gap-1"))},[(d(!0),$(oe,null,be(u.options,(m,v)=>(d(),$("button",{key:l(m,v),class:K(h(ne)("flex-1 h-6 px-5 py-[5px] rounded flex justify-center items-center gap-1 transition-all duration-150 ease-in-out truncate min-w-[4ch]","bg-transparent border-none","text-center text-xs font-normal",{"bg-interface-menu-component-surface-selected":i(v)&&!u.disabled,"hover:bg-interface-menu-component-surface-selected/50":!i(v)&&!u.disabled,"opacity-50 cursor-not-allowed":u.disabled,"cursor-pointer":!u.disabled},i(v)&&!u.disabled?"text-text-primary":"text-text-secondary")),disabled:u.disabled,onClick:n(p=>r(v),"onClick")},V(a(m)),11,Pg))),128))],2))}}),Ag={class:"space-y-4 p-3 text-sm text-muted-foreground"},Lg={class:"flex flex-col gap-2"},Eg={class:"flex flex-col gap-2"},Vg={class:"bg-secondary-background border-none rounded-lg p-1 grid grid-cols-5 gap-1 justify-items-center"},Og=["onClick"],Rg=["data-testid"],Wg={class:"flex items-center justify-between"},zg=H({__name:"TabSettings",props:{nodes:{}},setup(e){const o=e,t=Xe([]);we(()=>{o.nodes?t.value=o.nodes:t.value=[]});const{t:s}=fe(),l=ge(),a=ct(),i=y(()=>a.completedActivePalette.light_theme),r=y({get(){let C=null;const g=t.value;return g.length===0?null:(g.length>1?(C=g[0].mode,g.every(b=>b.mode===C)||(C=null)):C=g[0].mode,C)},set(C){t.value.forEach(g=>{g.mode=C}),vo(t),l.canvas?.setDirty(!0,!0)}}),u=y({get(){return t.value.some(C=>C.pinned)},set(C){t.value.forEach(g=>g.pin(C)),vo(t),l.canvas?.setDirty(!0,!0)}});function f(C){return{dark:Vt(C,{lightness:.3}),light:Vt(C,{lightness:.4}),ringDark:Vt(C,{lightness:.5}),ringLight:Vt(C,{lightness:.1})}}n(f,"getColorValue");const m={name:"noColor",localizedName:n(()=>s("color.noColor"),"localizedName"),value:f(ve.NODE_DEFAULT_BGCOLOR)},v=Object.entries(Qe.node_colors),p=[m,...v.map(([C,g])=>({name:C,localizedName:n(()=>s(`color.${C}`),"localizedName"),value:f(g.bgcolor)}))],w=y({get(){if(t.value.length===0)return null;const C=t.value.map(b=>b.getColorOption());let g=C[0];return C.every(b=>b===g)||(g=!1),g===!1?null:g==null||!g.bgcolor&&!g.color?m.name:v.find(([b,k])=>k.bgcolor===g.bgcolor&&k.color===g.color)?.[0]??null},set(C){if(C===null)return;const g=C===m.name?null:Qe.node_colors[C];for(const b of t.value)b.setColorOption(g);vo(t),l.canvas?.setDirty(!0,!0)}});return(C,g)=>{const b=Ne("tooltip");return d(),$("div",Ag,[c("div",Lg,[c("span",null,V(h(s)("rightSidePanel.nodeState")),1),O(Dg,{modelValue:r.value,"onUpdate:modelValue":g[0]||(g[0]=k=>r.value=k),class:"w-full",options:[{label:h(s)("rightSidePanel.normal"),value:h(Oe).ALWAYS},{label:h(s)("rightSidePanel.bypass"),value:h(Oe).BYPASS},{label:h(s)("rightSidePanel.mute"),value:h(Oe).NEVER}]},null,8,["modelValue","options"])]),c("div",Eg,[c("span",null,V(h(s)("rightSidePanel.color")),1),c("div",Vg,[(d(),$(oe,null,be(p,k=>c("button",{key:k.name,class:K(h(ne)("size-8 rounded-lg bg-transparent border-0 outline-0 ring-0 text-left flex justify-center items-center cursor-pointer",k.name===w.value?"bg-interface-menu-component-surface-selected":"hover:bg-interface-menu-component-surface-selected")),onClick:n(N=>w.value=k.name,"onClick")},[ce(c("div",{class:K(h(ne)("size-4 rounded-full ring-2 ring-gray-500/10")),style:ye({backgroundColor:i.value?k.value.light:k.value.dark,"--tw-ring-color":k.name===w.value?i.value?k.value.ringLight:k.value.ringDark:void 0}),"data-testid":k.name},null,14,Rg),[[b,k.localizedName(),void 0,{top:!0}]])],10,Og)),64))])]),c("div",Wg,[c("span",null,V(h(s)("rightSidePanel.pinned")),1),O(h(Aa),{modelValue:u.value,"onUpdate:modelValue":g[1]||(g[1]=k=>u.value=k)},null,8,["modelValue"])])])}}}),Bg={class:"pointer-events-none flex-1"},Fg={class:"text-xs text-text-secondary line-clamp-1"},Ug={class:"text-sm line-clamp-1 leading-8"},Gg={key:0,class:"size-4 pointer-events-none icon-[lucide--grip-vertical]"},Zs=H({__name:"SubgraphNodeWidget",props:{nodeTitle:{},widgetName:{},isDraggable:{type:Boolean},isPhysical:{type:Boolean},class:{type:[Array,Object,String,Number,null,Boolean]}},emits:["toggleVisibility"],setup(e){const o=e;function t(){return o.isPhysical?"icon-[lucide--link]":o.isDraggable?"icon-[lucide--eye]":"icon-[lucide--eye-off]"}return n(t,"getIcon"),(s,l)=>(d(),$("div",{class:K(h(ne)("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",Bg,[c("div",Fg,V(s.nodeTitle),1),c("div",Ug,V(s.widgetName),1)]),O(J,{variant:"muted-textonly",size:"sm",disabled:s.isPhysical,onClick:l[0]||(l[0]=Ce(a=>s.$emit("toggleVisibility"),["stop"]))},{default:A(()=>[c("i",{class:K(t())},null,2)]),_:1},8,["disabled"]),s.isDraggable?(d(),$("div",Gg)):E("",!0)],2))}}),jg={key:0,class:"subgraph-edit-section flex h-full flex-col"},Hg={class:"p-4 flex gap-2"},qg={class:"flex-1"},Kg={key:0,class:"flex flex-col border-t border-interface-stroke"},Qg={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl min-h-12 px-4"},Yg={class:"text-sm font-semibold uppercase line-clamp-1"},Jg={key:1,class:"flex flex-col border-t border-interface-stroke"},Xg={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl min-h-12 px-4"},Zg={class:"text-sm font-semibold uppercase line-clamp-1"},eh={class:"pb-2 px-2 space-y-0.5 mt-0.5"},th={key:2,class:"flex justify-center border-t border-interface-stroke py-4"},oh=H({__name:"SubgraphEditor",setup(e){const o=ge(),t=L(void 0),s=L(),l=L(""),a=wa((I,_)=>({get(){I();const M=r.value;return M?Ji(M.properties.proxyWidgets):[]},set(M){_();const P=r.value;if(M){if(!P){console.error("Attempted to toggle widgets with no node selected");return}P.properties.proxyWidgets=M}}}));async function i(I){l.value=I}n(i,"searcher");const r=y(()=>{const I=o.selectedItems[0];if(I instanceof Xn)return I}),u=y({get(){if(!r.value)return[];const I=r.value;function _([M,P]){if(M==="-1"){const U=I.widgets.find(R=>R.name===P);return U?[[{id:-1,title:"(Linked)",type:""},U]]:[]}const B=I.subgraph._nodes_by_id[M];if(!B?.widgets)return[];const j=B.widgets.find(U=>U.name===P);return j?[[B,j]]:[]}return n(_,"mapWidgets"),a.value.flatMap(_)},set(I){if(!r.value){console.error("Attempted to toggle widgets with no node selected");return}a.value=I.map(rn)}}),f=y(()=>{const I=r.value;if(!I)return[];const{updatePreviews:_}=So(),M=I.subgraph.nodes;for(const P of M)P.updateComputedDisabled(),_(P);return M.flatMap(g).filter(([P,B])=>!B.computedDisabled)}),m=y(()=>{if(!r.value)return[];const _=a.value;return f.value.filter(M=>!_.some(Xi(M)))}),v=y(()=>{const I=l.value.toLowerCase();return I?m.value.filter(([_,M])=>_.title.toLowerCase().includes(I)||M.name.toLowerCase().includes(I)):m.value}),p=y(()=>r.value?v.value.filter(Zi):[]),w=y(()=>{const I=l.value.toLowerCase();return I?u.value.filter(([_,M])=>_.title.toLowerCase().includes(I)||M.name.toLowerCase().includes(I)):u.value});function C(I){return`${I[0].id}: ${I[1].name}`}n(C,"toKey");function g(I){return I.widgets?I.widgets.map(_=>[I,_]):[]}n(g,"nodeWidgets");function b([I,_]){const M=r.value;if(!M)return[];tr(I,_,[M]),vo(a)}n(b,"demote");function k([I,_]){const M=r.value;if(!M)return[];or(I,_,[M]),vo(a)}n(k,"promote");function N(){if(!r.value)return;const _=a.value,M=v.value.map(rn);_.push(...M),a.value=_}n(N,"showAll");function T(){r.value&&(a.value=a.value.filter(_=>!w.value.some(nr(_))||_[0]==="-1"))}n(T,"hideAll");function x(){if(!r.value)return;const _=a.value,M=p.value.map(rn);_.push(...M),a.value=_}n(x,"showRecommended");function S(){t.value?.dispose(),!(l.value||!s.value?.children?.length)&&(t.value=new sr(s.value,".draggable-item"),t.value.applyNewItemsOrder=function(){const I=[];let _=-1;this.getAllItems().forEach((j,U)=>{if(j===this.draggableItem){_=U;return}if(!this.isItemToggled(j)){I[U]=j;return}const R=this.isItemAbove(j)?U+1:U-1;I[R]=j});for(let j=0;j<this.getAllItems().length;j++)typeof I[j]>"u"&&(I[j]=this.draggableItem);const M=I.indexOf(this.draggableItem),P=u.value,[B]=P.splice(_,1);P.splice(M,0,B),u.value=P})}return n(S,"setDraggableState"),Qt(w,()=>{S()},{debounce:100}),We(()=>{S(),r.value&&er(r.value)}),it(()=>{t.value?.dispose()}),(I,_)=>r.value?(d(),$("div",jg,[c("div",Hg,[O(vl,{searcher:i})]),c("div",qg,[w.value.length?(d(),$("div",Kg,[c("div",Qg,[c("div",Yg,V(I.$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:Ce(T,["stop"])},V(I.$t("subgraphStore.hideAll")),1)]),c("div",{ref_key:"draggableItems",ref:s,class:"pb-2 px-2 space-y-0.5 mt-0.5"},[(d(!0),$(oe,null,be(w.value,([M,P])=>(d(),W(Zs,{key:C([M,P]),class:"bg-interface-panel-surface","node-title":M.title,"widget-name":P.name,"is-shown":!0,"is-draggable":!l.value,"is-physical":M.id===-1,onToggleVisibility:n(B=>b([M,P]),"onToggleVisibility")},null,8,["node-title","widget-name","is-draggable","is-physical","onToggleVisibility"]))),128))],512)])):E("",!0),v.value.length?(d(),$("div",Jg,[c("div",Xg,[c("div",Zg,V(I.$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:Ce(N,["stop"])},V(I.$t("subgraphStore.showAll")),1)]),c("div",eh,[(d(!0),$(oe,null,be(v.value,([M,P])=>(d(),W(Zs,{key:C([M,P]),class:"bg-interface-panel-surface","node-title":M.title,"widget-name":P.name,onToggleVisibility:n(B=>k([M,P]),"onToggleVisibility")},null,8,["node-title","widget-name","onToggleVisibility"]))),128))])])):E("",!0),p.value.length?(d(),$("div",th,[O(J,{size:"sm",class:"rounded border-none px-3 py-0.5",onClick:Ce(x,["stop"])},{default:A(()=>[$e(V(I.$t("subgraphStore.showRecommended")),1)]),_:1})])):E("",!0)])])):E("",!0)}}),nh={"data-testid":"properties-panel",class:"flex size-full flex-col bg-interface-panel-surface"},sh={class:"pt-1"},ah={class:"flex items-center justify-between pl-4 pr-3"},lh={class:"my-3.5 text-sm font-semibold line-clamp-2"},ih={class:"flex gap-2"},rh={key:0,class:"px-4 pb-2 pt-1"},uh={class:"scrollbar-thin flex-1 overflow-y-auto"},ch={key:0,class:"flex size-full p-4 items-start justify-start text-sm text-muted-foreground"},dh=H({__name:"RightSidePanel",setup(e){const o=ge(),t=no(),s=re(),{t:l}=fe(),{selectedItems:a}=He(o),{activeTab:i,isEditingSubgraph:r}=He(t),u=y(()=>s.get("Comfy.Sidebar.Location")),f=y(()=>u.value==="right"?"icon-[lucide--panel-left]":"icon-[lucide--panel-right]"),m=y(()=>a.value.length>0),v=y(()=>a.value.filter(to)),p=y(()=>C.value instanceof Xn),w=y(()=>v.value.length===1),C=y(()=>w.value?v.value[0]:null),g=y(()=>a.value.length),b=y(()=>w.value&&C.value?C.value.title||C.value.type||"Node":l("rightSidePanel.title",{count:g.value}));function k(){t.closePanel()}n(k,"closePanel");const N=y(()=>{const I=[{label:n(()=>l("rightSidePanel.parameters"),"label"),value:"parameters"},{label:n(()=>l("g.settings"),"label"),value:"settings"}];return(!m.value||w.value&&!p.value)&&I.push({label:n(()=>l("rightSidePanel.info"),"label"),value:"info"}),I});we(()=>{!N.value.some(I=>I.value===i.value)&&!(i.value==="subgraph"&&p.value)&&t.openPanel(N.value[0].value)});const T=L(!1);function x(I){T.value=!1;const _=I.trim();if(!_)return;const M=je(C);M&&_!==M.title&&(M.title=_,o.canvas?.setDirty(!0,!1))}n(x,"handleTitleEdit");function S(){T.value=!1}return n(S,"handleTitleCancel"),(I,_)=>(d(),$("div",nh,[c("section",sh,[c("div",ah,[c("h3",lh,[w.value?(d(),W(Gn,{key:0,"model-value":b.value,"is-editing":T.value,"input-attrs":{"data-testid":"node-title-input"},onEdit:x,onCancel:S,onDblclick:_[0]||(_[0]=M=>T.value=!0)},null,8,["model-value","is-editing"])):(d(),$(oe,{key:1},[$e(V(b.value),1)],64))]),c("div",ih,[p.value?(d(),W(J,{key:0,variant:"secondary",size:"icon",class:K(h(ne)(h(r)&&"bg-secondary-background-selected")),onClick:_[1]||(_[1]=M=>h(t).openPanel(h(r)?"parameters":"subgraph"))},{default:A(()=>_[3]||(_[3]=[c("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["class"])):E("",!0),O(J,{variant:"secondary",size:"icon","aria-pressed":h(t).isOpen,"aria-label":h(l)("rightSidePanel.togglePanel"),onClick:k},{default:A(()=>[c("i",{class:K(h(ne)(f.value,"size-4"))},null,2)]),_:1},8,["aria-pressed","aria-label"])])]),m.value?(d(),$("nav",rh,[O(ar,{"model-value":h(i),"onUpdate:modelValue":_[2]||(_[2]=M=>{h(t).openPanel(M)})},{default:A(()=>[(d(!0),$(oe,null,be(N.value,M=>(d(),W(lr,{key:M.value,class:"text-sm py-1 px-2 font-inter",value:M.value},{default:A(()=>[$e(V(M.label()),1)]),_:2},1032,["value"]))),128))]),_:1},8,["model-value"])])):E("",!0)]),c("div",uh,[m.value?p.value&&h(r)?(d(),W(oh,{key:1,node:C.value},null,8,["node"])):(d(),$(oe,{key:2},[h(i)==="parameters"?(d(),W(Mg,{key:0,nodes:v.value},null,8,["nodes"])):h(i)==="info"?(d(),W(ug,{key:1,nodes:v.value},null,8,["nodes"])):h(i)==="settings"?(d(),W(zg,{key:2,nodes:v.value},null,8,["nodes"])):E("",!0)],64)):(d(),$("div",ch,V(I.$t("rightSidePanel.noSelection")),1))])]))}}),ds=Mt("searchBox",()=>{const e=re(),{x:o,y:t}=zl(),s=y(()=>e.get("Comfy.NodeSearchBoxImpl")==="default"),l=Xe(null);function a(u){l.value=u}n(a,"setPopoverRef");const i=L(!1);function r(){if(s.value){i.value=!i.value;return}l.value&&l.value.showSearchBox(new MouseEvent("click",{clientX:o.value,clientY:t.value,layerY:t.value}))}return n(r,"toggleVisible"),{newSearchBoxEnabled:s,setPopoverRef:a,toggleVisible:r,visible:i}}),ph={name:"AutoCompletePlus",extends:To,emits:["focused-option-changed"],data(){return{isComposing:!1}},mounted(){typeof To.mounted=="function"&&To.mounted.call(this);const e=this.$el.querySelector("input");e&&(e.addEventListener("compositionstart",()=>{this.isComposing=!0}),e.addEventListener("compositionend",()=>{this.isComposing=!1})),this.$watch(()=>this.focusedOptionIndex,(o,t)=>{this.$emit("focused-option-changed",o)})},methods:{onKeyDown(e){if(e.key==="Enter"&&this.isComposing){e.preventDefault(),e.stopPropagation();return}To.methods.onKeyDown.call(this,e)}}},fh={class:"option-container flex w-full cursor-pointer items-center justify-between overflow-hidden px-2 py-0"},mh={class:"option-display-name flex flex-col font-semibold"},vh={key:0},gh=["innerHTML"],hh=["innerHTML"],yh={key:0,class:"option-category truncate text-sm font-light text-muted"},bh={class:"option-badges"},wh=H({__name:"NodeSearchItem",props:{nodeDef:{},currentQuery:{}},setup(e){const o=re(),t=y(()=>o.get("Comfy.NodeSearchBoxImpl.ShowCategory")),s=y(()=>o.get("Comfy.NodeSearchBoxImpl.ShowIdName")),l=y(()=>o.get("Comfy.NodeSearchBoxImpl.ShowNodeFrequency")),a=os(),i=y(()=>a.getNodeFrequency(f.nodeDef)),r=ir(),u=y(()=>r.isBookmarked(f.nodeDef)),f=e;return(m,v)=>(d(),$("div",fh,[c("div",mh,[c("div",null,[u.value?(d(),$("span",vh,v[0]||(v[0]=[c("i",{class:"pi pi-bookmark-fill mr-1 text-sm"},null,-1)]))):E("",!0),c("span",{innerHTML:h(Is)(m.nodeDef.display_name,m.currentQuery)},null,8,gh),v[1]||(v[1]=c("span",null," ",-1)),s.value?(d(),W(h(Yt),{key:1,severity:"secondary"},{default:A(()=>[c("span",{innerHTML:h(Is)(m.nodeDef.name,m.currentQuery)},null,8,hh)]),_:1})):E("",!0)]),t.value?(d(),$("div",yh,V(m.nodeDef.category.replaceAll("/"," > ")),1)):E("",!0)]),c("div",bh,[m.nodeDef.experimental?(d(),W(h(Yt),{key:0,value:m.$t("g.experimental"),severity:"primary"},null,8,["value"])):E("",!0),m.nodeDef.deprecated?(d(),W(h(Yt),{key:1,value:m.$t("g.deprecated"),severity:"danger"},null,8,["value"])):E("",!0),l.value&&i.value>0?(d(),W(h(Yt),{key:2,value:h(rr)(i.value,{roundToInt:!0}),severity:"secondary"},null,8,["value"])):E("",!0),m.nodeDef.nodeSource.type!==h(ur).Unknown?(d(),W(h(li),{key:3,class:"text-sm font-light"},{default:A(()=>[$e(V(m.nodeDef.nodeSource.displayText),1)]),_:1})):E("",!0)])]))}}),Ch=Le(wh,[["__scopeId","data-v-acda36a0"]]),kh={class:"comfy-vue-node-search-container flex w-full min-w-96 items-center justify-center"},xh={class:"_dialog-body"},Sh=H({__name:"NodeSearchBox",props:{filters:{},searchLimit:{default:64}},emits:["addFilter","removeFilter","addNode"],setup(e,{emit:o}){const t=re(),{t:s}=fe(),l=y(()=>t.get("Comfy.NodeSearchBoxImpl.NodePreview")),a=L(),i=L(!1),r=`comfy-vue-node-search-box-input-${Math.random()}`,u=L([]),f=L(null),m=L(""),v=y(()=>e.filters.length===0?s("g.searchNodes")+"...":""),p=St(),w=os(),C=en(_=>{_.trim()},500),g=n(_=>{const M=_===""&&e.filters.length===0;m.value=_,u.value=M?w.topNodeDefs:[...p.nodeSearchService.searchNode(_,e.filters,{limit:e.searchLimit})],C(_)},"search"),b=o,k=n(_=>{b("addNode",_)},"onAddNode");let N=null;const T=n(async()=>{N??=document.getElementById(r),N&&(N.blur(),await Be(()=>N?.focus()))},"reFocusInput");We(()=>{N??=document.getElementById(r),N&&N.focus(),a.value.hide=()=>g(""),g(""),a.value.show()});const x=n(_=>{i.value=!1,b("addFilter",_)},"onAddFilter"),S=n(async(_,M)=>{_.stopPropagation(),_.preventDefault(),b("removeFilter",M),await T()},"onRemoveFilter"),I=n(_=>{if(_===-1){f.value=null;return}const M=u.value[_];f.value=M},"setHoverSuggestion");return(_,M)=>(d(),$("div",kh,[l.value&&f.value?(d(),$("div",{key:0,class:"comfy-vue-node-preview-container absolute top-[50px] left-[-375px] z-50 cursor-pointer",onMousedown:M[0]||(M[0]=Ce(P=>k(f.value),["stop"]))},[(d(),W(cr,{key:f.value?.name||"","node-def":f.value},null,8,["node-def"]))],32)):E("",!0),O(J,{variant:"secondary","aria-label":_.$t("g.addNodeFilterCondition"),class:"filter-button z-10",onClick:M[1]||(M[1]=P=>i.value=!0)},{default:A(()=>M[6]||(M[6]=[c("i",{class:"pi pi-filter"},null,-1)])),_:1},8,["aria-label"]),O(h(La),{visible:i.value,"onUpdate:visible":M[2]||(M[2]=P=>i.value=P),class:"min-w-96","dismissable-mask":"",modal:"",onHide:T},{header:A(()=>[c("h3",null,V(_.$t("g.addNodeFilterCondition")),1)]),default:A(()=>[c("div",xh,[O(dr,{onAddFilter:x})])]),_:1},8,["visible"]),O(ph,{ref_key:"autoCompletePlus",ref:a,"model-value":_.filters,class:"comfy-vue-node-search-box z-10 grow","scroll-height":"40vh",placeholder:v.value,"input-id":r,"append-to":"self",suggestions:u.value,delay:100,loading:!h(w).isLoaded,"complete-on-focus":"","auto-option-focus":"","force-selection":"",multiple:"","option-label":"display_name",onComplete:M[3]||(M[3]=P=>g(P.query)),onOptionSelect:M[4]||(M[4]=P=>k(P.value)),onFocusedOptionChanged:M[5]||(M[5]=P=>I(P))},{option:A(({option:P})=>[O(Ch,{"node-def":P,"current-query":m.value},null,8,["node-def","current-query"])]),chip:A(({value:P})=>[P.filterDef&&P.value?(d(),W(pr,{key:`${P.filterDef.id}-${P.value}`,text:P.value,badge:P.filterDef.invokeSequence.toUpperCase(),"badge-class":P.filterDef.invokeSequence+"-badge",onRemove:n(B=>S(B,P),"onRemove")},null,8,["text","badge","badge-class","onRemove"])):E("",!0)]),_:1},8,["model-value","placeholder","suggestions","loading"])]))}}),_h=H({__name:"NodeSearchBoxPopover",setup(e,{expose:o}){let t=null,s=null,l=!1;const a=re(),i=ds(),r=So(),{visible:u,newSearchBoxEnabled:f}=He(i),m=L(!0);function v(){return t?[t.canvasX,t.canvasY]:r.getCanvasCenter()}n(v,"getNewNodeLocation");const p=L([]);function w(z){p.value.push(z)}n(w,"addFilter");function C(z){p.value=p.value.filter(G=>Cs(G)!==Cs(z))}n(C,"removeFilter");function g(){p.value=[]}n(g,"clearFilters");function b(){u.value=!1}n(b,"closeDialog");const k=ge();function N(z){const G=r.addNodeOnGraph(z,{pos:v()});l&&t?k.getCanvas().linkConnector.connectToNode(G,t):t||console.warn("The trigger event was undefined when addNode was called."),l=!1,Re().activeWorkflow?.changeTracker?.checkState(),window.requestAnimationFrame(b)}n(N,"addNode");function T(z){f.value?z?.pointerType==="touch"?setTimeout(()=>{I(z)},128):I(z):k.getCanvas().showSearchBox(z)}n(T,"showSearchBox");function x(){return k.getCanvas().linkConnector.renderLinks.at(0)}n(x,"getFirstLink");const S=St();function I(z){const G=x();if(G){const q=G.toType==="input"?S.nodeSearchService.inputTypeFilter:S.nodeSearchService.outputTypeFilter,Q=G.fromSlot.type?.toString()??"";w({filterDef:q,value:Q})}u.value=!0,t=z,m.value=!1,setTimeout(()=>{m.value=!0},300)}n(I,"showNewSearchBox");function _(z){const G=x();if(!G)return;const{node:q,fromSlot:Q,toType:te}=G,le={e:z,allow_searchbox:!0,showSearchBox:n(()=>{Ve(),T(z)},"showSearchBox")},X=G.fromReroute?.id,de=te==="input"?{nodeFrom:q,slotFrom:Q,afterRerouteId:X}:{nodeTo:q,slotTo:Q,afterRerouteId:X},ae=k.getCanvas(),Me=ae.showConnectionMenu({...de,...le});if(!Me){console.warn("No menu was returned from showConnectionMenu");return}t=z,s=new AbortController;const{signal:Fe}=s,Ke={once:!0,signal:Fe};Ee(ae.canvas,"connect-new-default-node",xe=>{if(!(xe instanceof CustomEvent))throw new Error("Invalid event");const ze=xe.detail?.node;if(!(ze instanceof mt))throw new Error("Invalid node");l=!1,xe.preventDefault(),ae.linkConnector.connectToNode(ze,z)},Ke);const Ve=Ee(Me.controller.signal,"abort",F,Ke)}n(_,"showContextMenu"),we(()=>{const{canvas:z}=k;z&&(ve.release_link_on_empty_shows_menu=!1,z.allow_searchbox=!1,Ee(z.linkConnector.events,"dropped-on-canvas",R))});function M(z){if(z.detail.subType==="empty-double-click")T(z.detail.originalEvent);else if(z.detail.subType==="group-double-click"){const G=z.detail.group,[q,Q]=G.pos;z.detail.originalEvent.canvasY-Q>G.titleHeight&&T(z.detail.originalEvent)}}n(M,"canvasEventHandler");const P=y(()=>a.get("Comfy.LinkRelease.Action")),B=y(()=>a.get("Comfy.LinkRelease.ActionShift"));function j(z){return z.preventDefault()}n(j,"preventDefault");function U(z){z.preventDefault();const G=k.getCanvas();G.linkConnector.state.snapLinksPos=[z.detail.canvasX,z.detail.canvasY],Ee(G.linkConnector.events,"reset",j,{once:!0})}n(U,"cancelNextReset");function R(z){switch(l=!0,z.detail.shiftKey?B.value:P.value){case wt.SEARCH_BOX:U(z),T(z.detail);break;case wt.CONTEXT_MENU:U(z),_(z.detail);break;case wt.NO_ACTION:}}n(R,"handleDroppedOnCanvas");function F(){s?.abort(),s=null,t=null;const z=k.getCanvas();z.linkConnector.events.removeEventListener("reset",j),l&&z.linkConnector.disconnectLinks(),z.linkConnector.reset(),z.setDirty(!0,!0)}return n(F,"reset"),se(u,()=>{u.value||F()}),Ee(document,"litegraph:canvas",M),o({showSearchBox:T}),(z,G)=>(d(),$("div",null,[O(h(La),{visible:h(u),"onUpdate:visible":G[0]||(G[0]=q=>at(u)?u.value=q: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:g},{container:A(()=>[O(Sh,{filters:p.value,onAddFilter:w,onRemoveFilter:C,onAddNode:N},null,8,["filters"])]),_:1},8,["visible","dismissable-mask"])]))}}),Th=["width","height"],$h=H({__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,l)=>(d(),$("svg",{class:K(o.value),width:s.size,height:s.size,viewBox:"0 0 18 18",xmlns:"http://www.w3.org/2000/svg"},[c("path",It({d:"M14.8193 0.600586C15.1248 0.600586 15.3296 0.70893 15.459 0.881836C15.5914 1.05888 15.6471 1.33774 15.5527 1.66895L14.8037 4.30176C14.7063 4.64386 14.4729 4.97024 14.1641 5.21191C13.8544 5.45415 13.496 5.58984 13.1699 5.58984H13.1689L9.5791 5.59668H7.90625C7.52654 5.59668 7.19496 5.84986 7.09082 6.21289L5.69434 11.0889C5.63007 11.3133 5.66134 11.5534 5.77734 11.7529L5.83203 11.8359C5.99177 12.0491 6.24252 12.1758 6.50977 12.1758H6.51074L8.88281 12.1709H11.4971C11.7643 12.171 11.9541 12.254 12.084 12.3906L12.1357 12.4521C12.2685 12.6295 12.3249 12.9089 12.2305 13.2402L11.4805 15.8721C11.383 16.2144 11.1498 16.5415 10.8408 16.7832C10.5314 17.0252 10.1736 17.161 9.84766 17.1611H9.84668L6.25684 17.168H3.64258C3.33762 17.1679 3.13349 17.0588 3.00391 16.8857C2.87135 16.7087 2.81482 16.43 2.90918 16.0986L3.39551 14.3887C3.46841 14.1327 3.41794 13.8576 3.25879 13.6445V13.6436C3.09901 13.4303 2.84745 13.3037 2.58008 13.3037H1.18066C0.875088 13.3037 0.670398 13.1953 0.541016 13.0225C0.408483 12.8451 0.351891 12.5655 0.446289 12.2344L2.11914 6.38965L2.30371 5.74707V5.74609C2.40139 5.40341 2.63456 5.07671 2.94336 4.83496C3.25302 4.59258 3.61143 4.45705 3.9375 4.45703H5.6123C5.94484 4.45703 6.24083 4.26316 6.37891 3.9707L6.42773 3.83984L6.98145 1.89551C7.07894 1.55317 7.31212 1.22614 7.62109 0.984375C7.93074 0.742127 8.2892 0.606445 8.61523 0.606445H8.61621L12.1982 0.600586H14.8193Z"},t.value),null,16)],10,Th))}}),Ro=H({__name:"CardBottom",props:{fullHeight:{type:Boolean,default:!0}},setup(e){const o=y(()=>ne("flex-1 w-full",e.fullHeight&&"h-full"));return(t,s)=>(d(),$("div",{class:K(o.value)},[he(t.$slots,"default")],2))}}),Nh="flex flex-col overflow-hidden",Wo=H({__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:ne(e.hasBackground&&"bg-modal-card-background",e.hasBorder&&"border border-border-default",e.hasShadow&&"shadow-sm",e.hasCursor&&"cursor-pointer"),ghost:ne(e.hasCursor&&"cursor-pointer","p-2 transition-colors duration-200"),outline:ne(e.hasBorder&&"border-2 border-border-subtle",e.hasCursor&&"cursor-pointer","hover:border-border-subtle/50 transition-colors")},l=e.customAspectRatio?`aspect-[${e.customAspectRatio}]`:{mini:"aspect-100/120",compact:"aspect-240/311",regular:"aspect-256/308",portrait:"aspect-256/325",tall:"aspect-256/353"}[e.size];return ne(Nh,o[e.rounded],s[e.variant],l,e.class)});return(s,l)=>(d(),$("div",{class:K(t.value)},[he(s.$slots,"top"),he(s.$slots,"bottom")],2))}}),zo=H({__name:"CardTop",props:{ratio:{default:"square"},topLeftClass:{},topRightClass:{},centerLeftClass:{},centerRightClass:{},bottomLeftClass:{},bottomRightClass:{}},setup(e){const o=da(),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"},l=y(()=>({"top-left":ne(s["top-left"],e.topLeftClass),"top-right":ne(s["top-right"],e.topRightClass),"center-left":ne(s["center-left"],e.centerLeftClass),"center-right":ne(s["center-right"],e.centerRightClass),"bottom-left":ne(s["bottom-left"],e.bottomLeftClass),"bottom-right":ne(s["bottom-right"],e.bottomRightClass)}));return(a,i)=>(d(),$("div",{class:K(t.value)},[he(a.$slots,"default",{class:"absolute top-0 left-0 h-full w-full"}),h(o)["top-left"]?(d(),$("div",{key:0,class:K(l.value["top-left"])},[he(a.$slots,"top-left")],2)):E("",!0),h(o)["top-right"]?(d(),$("div",{key:1,class:K(l.value["top-right"])},[he(a.$slots,"top-right")],2)):E("",!0),h(o)["center-left"]?(d(),$("div",{key:2,class:K(l.value["center-left"])},[he(a.$slots,"center-left")],2)):E("",!0),h(o)["center-right"]?(d(),$("div",{key:3,class:K(l.value["center-right"])},[he(a.$slots,"center-right")],2)):E("",!0),h(o)["bottom-left"]?(d(),$("div",{key:4,class:K(l.value["bottom-left"])},[he(a.$slots,"bottom-left")],2)):E("",!0),h(o)["bottom-right"]?(d(),$("div",{key:5,class:K(l.value["bottom-right"])},[he(a.$slots,"bottom-right")],2)):E("",!0)],2))}}),Ih="inline-flex shrink-0 items-center justify-center gap-1 rounded px-2 py-1 text-xs font-bold",Bo=H({__name:"SquareChip",props:{label:{},variant:{default:"dark"}},setup(e){const o={dark:"bg-zinc-500/40 text-white/90",light:ne("backdrop-blur-[2px] bg-base-background/50 text-base-foreground"),gray:ne("backdrop-blur-[2px] bg-modal-card-tag-background text-base-foreground")},t=y(()=>ne(Ih,o[e.variant]));return(s,l)=>(d(),$("div",{class:K(t.value)},[he(s.$slots,"icon"),c("span",null,V(s.label),1)],2))}}),Mh={class:"relative aspect-square w-full overflow-hidden rounded-t-lg select-none"},Ph={key:1,class:"flex h-full w-full items-center justify-center"},Dh=H({__name:"BaseThumbnail",props:{hoverZoom:{default:4},isHovered:{type:Boolean}},setup(e){const o=L(!1),t=L(null);return We(()=>{Array.from(t.value?.getElementsByTagName("img")??[]).forEach(l=>{Ee(l,"error",()=>{o.value=!0})})}),(s,l)=>(d(),$("div",Mh,[o.value?(d(),$("div",Ph,l[0]||(l[0]=[c("img",{src:pu,draggable:"false",class:"h-full w-full transform-gpu object-cover transition-transform duration-300 ease-out"},null,-1)]))):(d(),$("div",{key:0,ref_key:"contentRef",ref:t,class:"h-full w-full transform-gpu transition-transform duration-1000 ease-out",style:ye(s.isHovered?{transform:`scale(${1+s.hoverZoom/100})`}:void 0)},[he(s.$slots,"default",{},void 0,!0)],4))]))}}),ln=Le(Dh,[["__scopeId","data-v-c216f2c0"]]),Ah={class:"flex h-full w-full items-center justify-center p-4",style:{backgroundImage:"url(/assets/images/default-template.png)",backgroundRepeat:"round"}},Lh=["src"],Eh=H({__name:"AudioThumbnail",props:{src:{}},setup(e){return(o,t)=>(d(),W(ln,null,{default:A(()=>[c("div",Ah,[c("audio",{controls:"",class:"relative w-full",src:o.src,onClick:t[0]||(t[0]=Ce(()=>{},["stop"]))},null,8,Lh)])]),_:1}))}}),Vh=50,Oh=H({__name:"CompareSliderThumbnail",props:{baseImageSrc:{},overlayImageSrc:{},alt:{},isHovered:{type:Boolean},isVideo:{type:Boolean}},setup(e){const o=e.isVideo||e.baseImageSrc?.toLowerCase().endsWith(".webp")||e.overlayImageSrc?.toLowerCase().endsWith(".webp")||!1,t=L(Vh),s=L(null),{elementX:l,elementWidth:a,isOutside:i}=Bl(s);return se([()=>e.isHovered,l,a,i],([r,u,f,m])=>{r&&(m||(t.value=u/f*100))}),(r,u)=>(d(),W(ln,{"is-hovered":r.isHovered},{default:A(()=>[O(Co,{src:r.baseImageSrc,alt:r.alt,"image-class":h(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"},[O(Co,{src:r.overlayImageSrc,alt:r.alt,"image-class":h(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:ye({left:`${t.value}%`})},null,4)],512)]),_:1},8,["is-hovered"]))}}),Rh=H({__name:"DefaultThumbnail",props:{src:{},alt:{},hoverZoom:{},isHovered:{type:Boolean},isVideo:{type:Boolean}},setup(e){const o=e.isVideo??(e.src?.toLowerCase().endsWith(".webp")||!1);return(t,s)=>(d(),W(ln,{"hover-zoom":t.hoverZoom,"is-hovered":t.isHovered},{default:A(()=>[O(Co,{src:t.src,alt:t.alt,"image-class":["transform-gpu transition-transform duration-300 ease-out",h(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"]))}}),Wh={class:"relative h-full w-full"},zh={class:"absolute inset-0"},Bh={class:"absolute inset-0 z-10"},Fh=H({__name:"HoverDissolveThumbnail",props:{baseImageSrc:{},overlayImageSrc:{},alt:{},isHovered:{type:Boolean},isVideo:{type:Boolean}},setup(e){const o=e.isVideo||e.baseImageSrc?.toLowerCase().endsWith(".webp")||e.overlayImageSrc?.toLowerCase().endsWith(".webp")||!1,t=y(()=>o?"size-full object-cover":"size-full object-contain"),s=y(()=>{const l="size-full transition-opacity duration-300",a=o?"object-cover":"object-contain",i=e.isHovered?"opacity-100":"opacity-0";return`${l} ${a} ${i}`});return(l,a)=>(d(),W(ln,{"is-hovered":l.isHovered},{default:A(()=>[c("div",Wh,[c("div",zh,[O(Co,{src:l.baseImageSrc,alt:l.alt,"image-class":t.value},null,8,["src","alt","image-class"])]),c("div",Bh,[O(Co,{src:l.overlayImageSrc,alt:l.alt,"image-class":s.value},null,8,["src","alt","image-class"])])])]),_:1},8,["is-hovered"]))}});function Uh(e,o={}){const{itemsPerPage:t=12,initialPage:s=1}=o,l=L(s),a=L(!1),i=Xe(new Set([])),r=y(()=>{const w="value"in e?e.value:e;return Array.isArray(w)?w:[]}),u=y(()=>{const w=r.value;if(w.length===0)return[];const C=Array.from(i.value).sort((k,N)=>k-N),b=Math.max(...C,0)*t;return w.slice(0,b)}),f=y(()=>{const w=r.value;if(w.length===0)return!1;const C=Array.from(i.value);return Math.max(...C,0)*t<w.length}),m=y(()=>{const w=r.value;return w.length===0?0:Math.ceil(w.length/t)}),v=n(async()=>{if(a.value||!f.value)return;a.value=!0;const w=Array.from(i.value),C=Math.max(...w,0)+1,g=new Set(i.value);g.add(C),i.value=g,l.value=C,a.value=!1},"loadNextPage");return se(()=>r.value.length,w=>{w>0&&i.value.size===0&&(i.value=new Set([1]))},{immediate:!0}),{paginatedItems:u,isLoading:a,hasMoreItems:f,currentPage:l,totalPages:m,loadNextPage:v,reset:n(()=>{l.value=s,i.value=new Set([]),a.value=!1,r.value.length>0&&(i.value=new Set([1]))},"reset")}}n(Uh,"useLazyPagination");const Gh=Mt("templateRanking",()=>{const e=L(),o=n(a=>a/(e.value??a),"normalizeUsageScore"),t=n(a=>{if(!a)return .5;const i=new Date(a);if(isNaN(i.getTime()))return .5;const r=(Date.now()-i.getTime())/(1e3*60*60*24);return Math.max(.1,1/(1+r/90))},"computeFreshness");return{largestUsageScore:e,computeFreshness:t,computeDefaultScore:n((a,i,r=0)=>{const u=(i??5)/10,f=t(a);return o(r)*.5+u*.3+f*.2},"computeDefaultScore"),computePopularScore:n((a,i=0)=>{const r=t(a);return o(i)*.9+r*.1},"computePopularScore")}});function jh(e){const o=re(),t=Gh(),s=L(""),l=L(o.get("Comfy.Templates.SelectedModels")),a=L(o.get("Comfy.Templates.SelectedUseCases")),i=L(o.get("Comfy.Templates.SelectedRunsOn")),r=L(o.get("Comfy.Templates.SortBy")),u=y(()=>{const R="value"in e?e.value:e;return Array.isArray(R)?R:[]}),f={keys:[{name:"name",weight:.3},{name:"title",weight:.3},{name:"description",weight:.1},{name:"tags",weight:.2},{name:"models",weight:.3}],threshold:.33,includeScore:!0,includeMatches:!0},m=y(()=>new ca(u.value,f)),v=y(()=>{const R=new Set;return u.value.forEach(F=>{Array.isArray(F.models)&&F.models.forEach(z=>R.add(z))}),Array.from(R).sort()}),p=y(()=>{const R=new Set;return u.value.forEach(F=>{F.tags&&Array.isArray(F.tags)&&F.tags.forEach(z=>R.add(z))}),Array.from(R).sort()}),w=y(()=>["ComfyUI","External or Remote API"]),C=ba(s,50),g=y(()=>C.value.trim()?m.value.search(C.value).map(F=>F.item):u.value),b=y(()=>l.value.length===0?g.value:g.value.filter(R=>!R.models||!Array.isArray(R.models)?!1:l.value.some(F=>R.models?.includes(F)))),k=y(()=>a.value.length===0?b.value:b.value.filter(R=>!R.tags||!Array.isArray(R.tags)?!1:a.value.some(F=>R.tags?.includes(F)))),N=y(()=>i.value.length===0?k.value:k.value.filter(R=>{const F=R.openSource===!1,z=R.openSource!==!1;return i.value.some(G=>G==="External or Remote API"?F:G==="ComfyUI"?z:!1)})),T=n(R=>typeof R.vram=="number"&&Number.isFinite(R.vram)&&R.vram>0?R.vram:Number.POSITIVE_INFINITY,"getVramMetric");se(N,R=>{t.largestUsageScore=Math.max(...R.map(F=>F.usage||0))},{immediate:!0});const x=y(()=>{const R=[...N.value];switch(r.value){case"recommended":return R.sort((F,z)=>{const G=t.computeDefaultScore(F.date,F.searchRank,F.usage);return t.computeDefaultScore(z.date,z.searchRank,z.usage)-G});case"popular":return R.sort((F,z)=>{const G=t.computePopularScore(F.date,F.usage);return t.computePopularScore(z.date,z.usage)-G});case"alphabetical":return R.sort((F,z)=>{const G=F.title||F.name||"",q=z.title||z.name||"";return G.localeCompare(q)});case"newest":return R.sort((F,z)=>{const G=new Date(F.date||"1970-01-01");return new Date(z.date||"1970-01-01").getTime()-G.getTime()});case"vram-low-to-high":return R.sort((F,z)=>{const G=T(F),q=T(z);if(G===q){const Q=F.title||F.name||"",te=z.title||z.name||"";return Q.localeCompare(te)}return G===Number.POSITIVE_INFINITY?1:q===Number.POSITIVE_INFINITY?-1:G-q});case"model-size-low-to-high":return R.sort((F,z)=>{const G=typeof F.size=="number"?F.size:Number.POSITIVE_INFINITY,q=typeof z.size=="number"?z.size:Number.POSITIVE_INFINITY;return G===q?0:G-q});case"default":default:return R}}),S=y(()=>x.value),I=n(()=>{s.value="",l.value=[],a.value=[],i.value=[],r.value="default"},"resetFilters"),_=n(R=>{l.value=l.value.filter(F=>F!==R)},"removeModelFilter"),M=n(R=>{a.value=a.value.filter(F=>F!==R)},"removeUseCaseFilter"),P=n(R=>{i.value=i.value.filter(F=>F!==R)},"removeRunsOnFilter"),B=y(()=>S.value.length),j=y(()=>u.value.length),U=en(()=>{},500);return se([s,l,a,i,r],()=>{(s.value.trim()!==""||l.value.length>0||a.value.length>0||i.value.length>0||r.value!=="default")&&U()},{deep:!0}),Qt(l,R=>{o.set("Comfy.Templates.SelectedModels",R)},{debounce:500,deep:!0}),Qt(a,R=>{o.set("Comfy.Templates.SelectedUseCases",R)},{debounce:500,deep:!0}),Qt(i,R=>{o.set("Comfy.Templates.SelectedRunsOn",R)},{debounce:500,deep:!0}),Qt(r,R=>{o.set("Comfy.Templates.SortBy",R)},{debounce:500}),{searchQuery:s,selectedModels:l,selectedUseCases:a,selectedRunsOn:i,sortBy:r,filteredTemplates:S,availableModels:v,availableUseCases:p,availableRunsOn:w,filteredCount:B,totalCount:j,resetFilters:I,removeModelFilter:_,removeUseCaseFilter:M,removeRunsOnFilter:P}}n(jh,"useTemplateFiltering");function yl(){const{t:e}=fe(),o=al(),t=rt(),s=L(null),l=L(null),a=y(()=>o.isLoaded),i=y(()=>o.groupedTemplates),r=n(async()=>(o.isLoaded||await o.loadWorkflowTemplates(),o.isLoaded),"loadTemplates"),u=n(()=>{if(i.value.length>0){const g=i.value[0].modules[0];f(g)}},"selectFirstTemplateCategory"),f=n(g=>(s.value=g,g!==null),"selectTemplateCategory"),m=n((g,b,k="1")=>{const N=b==="default"?Te.fileURL(`/templates/${g.name}`):Te.apiURL(`/workflow_templates/${b}/${g.name}`),T=b==="default"&&k?`-${k}`:"";return`${N}${T}.${g.mediaSubtype}`},"getTemplateThumbnailUrl"),v=n((g,b)=>{const k=g.title??g.name??`${b} Template`;return b==="default"?g.localizedTitle??k:k},"getTemplateTitle"),p=n(g=>(g.localizedDescription||g.description)?.replace(/[-_]/g," ").trim()??"","getTemplateDescription"),w=n(async(g,b)=>{if(!a.value)return!1;l.value=g;let k;try{if(b==="all"){const S=i.value.find(M=>M.label===e("templateWorkflows.category.ComfyUI Examples","ComfyUI Examples"))?.modules.find(M=>M.moduleName==="all")?.templates.find(M=>M.name===g);if(!S||!S.sourceModule)return!1;const I=S.sourceModule;k=await C(g,I);const _=I==="default"?e(`templateWorkflows.template.${g}`,g):g;return t.closeDialog(),await Y.loadGraphData(k,!0,!0,_,{openSource:"template"}),!0}k=await C(g,b);const N=b==="default"?e(`templateWorkflows.template.${g}`,g):g;return t.closeDialog(),await Y.loadGraphData(k,!0,!0,N,{openSource:"template"}),!0}catch(N){return console.error("Error loading workflow template:",N),!1}finally{l.value=null}},"loadWorkflowTemplate"),C=n(async(g,b)=>b==="default"?fetch(Te.fileURL(`/templates/${g}.json`)).then(k=>k.json()):fetch(Te.apiURL(`/workflow_templates/${b}/${g}.json`)).then(k=>k.json()),"fetchTemplateJson");return{selectedTemplate:s,loadingTemplateId:l,isTemplatesLoaded:a,allTemplateGroups:i,loadTemplates:r,selectFirstTemplateCategory:u,selectTemplateCategory:f,getTemplateThumbnailUrl:m,getTemplateTitle:v,getTemplateDescription:p,loadWorkflowTemplate:w}}n(yl,"useTemplateWorkflows");function bl(e={}){const{minWidth:o="15rem",maxWidth:t="1fr",padding:s="0",gap:l="1rem",columns:a}=e;return a!==void 0&&a<1&&console.warn("createGridStyle: columns must be >= 1, defaulting to 1"),{display:"grid",gridTemplateColumns:a?`repeat(${Math.max(1,a??1)}, 1fr)`:`repeat(auto-fill, minmax(${o}, ${t}))`,padding:s,gap:l}}n(bl,"createGridStyle");const Hh={class:"text-neutral text-base"},qh={class:"flex gap-2"},Kh={class:"relative flex flex-wrap justify-between gap-2 px-6 pb-4"},Qh={class:"flex flex-wrap gap-2"},Yh={key:0,class:"text-neutral px-6 pt-4 pb-2 text-2xl font-semibold"},Jh={key:0,class:"flex h-64 flex-col items-center justify-center text-neutral-500"},Xh={class:"mb-2 text-lg"},Zh={class:"text-sm"},ey={key:1},ty={key:0,class:"inline-block h-8 w-48 animate-pulse rounded bg-dialog-surface"},oy={class:"relative h-full w-full overflow-hidden rounded-lg"},ny={class:"flex flex-col gap-2 pt-3"},sy=["title"],ay={class:"flex justify-between gap-2"},ly={class:"flex-1"},iy=["title"],ry={key:0,class:"flex flex-col-reverse justify-center"},uy={key:0,class:"text-sm text-muted"},cy={key:3,class:"mt-6 px-6 text-sm text-muted"},dy=H({__name:"WorkflowTemplateSelectorDialog",props:{onClose:{type:Function}},setup(e){const{t:o}=fe(),t=L(0),s=L(!1);We(()=>{t.value=Date.now()});const l=Yn(),a=y(()=>[sl.Local]),i=n(()=>{e.onClose()},"onClose");Zo(an,i);const r=al(),{loadTemplates:u,loadWorkflowTemplate:f,getTemplateThumbnailUrl:m,getTemplateTitle:v,getTemplateDescription:p}=yl(),w=n(ee=>ee.sourceModule||"default","getEffectiveSourceModule"),C=n(ee=>{const Z=w(ee);return m(ee,Z,Z==="default"?"1":"")},"getBaseThumbnailSrc"),g=n(ee=>{const Z=w(ee);return m(ee,Z,Z==="default"?"2":"")},"getOverlayThumbnailSrc"),b=n(ee=>{ee.tutorialUrl&&window.open(ee.tutorialUrl,"_blank")},"openTutorial"),k=y(()=>_e.value?[{id:"skeleton-all",label:"All Templates",icon:"icon-[lucide--layout-grid]"},{id:"skeleton-basics",label:"Basics",icon:"icon-[lucide--graduation-cap]"},{title:"Generation Type",items:[{id:"skeleton-1",label:"...",icon:"icon-[lucide--loader-2]"},{id:"skeleton-2",label:"...",icon:"icon-[lucide--loader-2]"}]},{title:"Closed Source Models",items:[{id:"skeleton-3",label:"...",icon:"icon-[lucide--loader-2]"}]}]:r.navGroupedTemplates),N=y(()=>bl()),T=y(()=>r.enhancedTemplates),x=L("all"),S=y(()=>x.value?r.filterTemplatesByCategory(x.value):T.value),{searchQuery:I,selectedModels:_,selectedUseCases:M,selectedRunsOn:P,sortBy:B,filteredTemplates:j,availableModels:U,availableUseCases:R,availableRunsOn:F,filteredCount:z,totalCount:G,resetFilters:q}=jh(S),Q=n(ee=>{const Z=x.value==="popular",bt=B.value==="popular";ee==="nav"?Z&&!bt?B.value="popular":!Z&&bt&&(B.value="default"):ee==="sort"&&Z&&!bt&&(x.value="all")},"coordinateNavAndSort");se(x,()=>Q("nav")),se(B,()=>Q("sort"));const te=y({get(){return _.value.map(ee=>({name:ee,value:ee}))},set(ee){_.value=ee.map(Z=>Z.value)}}),le=y({get(){return M.value.map(ee=>({name:ee,value:ee}))},set(ee){M.value=ee.map(Z=>Z.value)}}),X=y({get(){return P.value.map(ee=>({name:ee,value:ee}))},set(ee){P.value=ee.map(Z=>Z.value)}}),de=L(null),ae=L(null),Me=L([]),Fe=L(0),Ke=L(""),Ve=y(()=>U.value.map(ee=>({name:ee,value:ee}))),xe=y(()=>R.value.map(ee=>({name:ee,value:ee}))),ze=y(()=>F.value.map(ee=>({name:ee,value:ee}))),Ye=y(()=>te.value.length===0?o("templateWorkflows.modelFilter","Model Filter"):te.value.length===1?te.value[0].name:o("templateWorkflows.modelsSelected",{count:te.value.length})),ht=y(()=>le.value.length===0?o("templateWorkflows.useCaseFilter","Use Case"):le.value.length===1?le.value[0].name:o("templateWorkflows.useCasesSelected",{count:le.value.length})),uo=y(()=>X.value.length===0?o("templateWorkflows.runsOnFilter","Runs On"):X.value.length===1?X.value[0].name:o("templateWorkflows.runsOnSelected",{count:X.value.length})),Gt=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"}]),Pt=L(null),dt=y(()=>!I.value.trim()),{paginatedItems:Dt,isLoading:yt,hasMoreItems:ot,loadNextPage:co,reset:po}=Uh(j,{itemsPerPage:24}),jt=y(()=>dt.value?Dt.value:j.value);fu(Pt,()=>{dt.value&&ot.value&&!yt.value&&co()}),se([I,x,B,_,M,P],()=>{po(),de.value=null,Fe.value++});const pe=n(async ee=>{de.value=ee.name;try{await f(ee.name,w(ee)),s.value=!0,i()}finally{de.value=null}},"onLoadWorkflow"),ke=y(()=>{const ee=k.value.find(Z=>"id"in Z?Z.id===x.value:Z.items?.some(bt=>bt.id===x.value));return ee?"id"in ee?ee.label:ee.items?.find(Z=>Z.id===x.value)?.label||o("templateWorkflows.allTemplates","All Templates"):o("templateWorkflows.allTemplates","All Templates")}),{isLoading:_e}=Fl(async()=>(await Promise.all([u(),r.loadWorkflowTemplates()]),!0),!1,{immediate:!0}),Ie=n(ee=>(ee.includeOnDistributions?.length??0)>0?a.value.some(Z=>ee.includeOnDistributions?.includes(Z)):!0,"isTemplateVisibleOnDistribution");return it(()=>{Me.value=[]}),(ee,Z)=>{const bt=Ne("tooltip");return d(),W(as,{"content-title":ee.$t("templateWorkflows.title","Workflow Templates"),class:"workflow-template-selector-dialog"},{leftPanel:A(()=>[O(ls,{modelValue:x.value,"onUpdate:modelValue":Z[0]||(Z[0]=ie=>x.value=ie),"nav-items":k.value},{"header-icon":A(()=>Z[8]||(Z[8]=[c("i",{class:"icon-[comfy--template]"},null,-1)])),"header-title":A(()=>[c("span",Hh,V(ee.$t("sideToolbar.templates","Templates")),1)]),_:1},8,["modelValue","nav-items"])]),header:A(()=>[O(on,{modelValue:h(I),"onUpdate:modelValue":Z[1]||(Z[1]=ie=>at(I)?I.value=ie:null),size:"lg",class:"max-w-[384px]"},null,8,["modelValue"])]),"header-right-area":A(()=>[c("div",qh,[h(z)!==h(G)?(d(),W(J,{key:0,variant:"secondary",size:"lg",onClick:h(q)},{default:A(()=>[Z[9]||(Z[9]=c("i",{class:"icon-[lucide--filter-x]"},null,-1)),c("span",null,V(ee.$t("templateWorkflows.resetFilters","Clear Filters")),1)]),_:1},8,["onClick"])):E("",!0)])]),contentFilter:A(()=>[c("div",Kh,[c("div",Qh,[O(Rt,{modelValue:te.value,"onUpdate:modelValue":Z[2]||(Z[2]=ie=>te.value=ie),"search-query":Ke.value,"onUpdate:searchQuery":Z[3]||(Z[3]=ie=>Ke.value=ie),class:"w-[250px]",label:Ye.value,options:Ve.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:A(()=>Z[10]||(Z[10]=[c("i",{class:"icon-[lucide--cpu]"},null,-1)])),_:1},8,["modelValue","search-query","label","options"]),O(Rt,{modelValue:le.value,"onUpdate:modelValue":Z[4]||(Z[4]=ie=>le.value=ie),label:ht.value,options:xe.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:A(()=>Z[11]||(Z[11]=[c("i",{class:"icon-[lucide--target]"},null,-1)])),_:1},8,["modelValue","label","options"]),O(Rt,{modelValue:X.value,"onUpdate:modelValue":Z[5]||(Z[5]=ie=>X.value=ie),label:uo.value,options:ze.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:A(()=>Z[12]||(Z[12]=[c("i",{class:"icon-[lucide--server]"},null,-1)])),_:1},8,["modelValue","label","options"])]),c("div",null,[O(Ho,{modelValue:h(B),"onUpdate:modelValue":Z[6]||(Z[6]=ie=>at(B)?B.value=ie:null),label:ee.$t("templateWorkflows.sorting","Sort by"),options:Gt.value,class:"w-62.5"},{icon:A(()=>Z[13]||(Z[13]=[c("i",{class:"icon-[lucide--arrow-up-down] text-muted-foreground"},null,-1)])),_:1},8,["modelValue","label","options"])])]),h(_e)?E("",!0):(d(),$("div",Yh,[c("span",null,V(ke.value),1)]))]),content:A(()=>[!h(_e)&&h(j).length===0?(d(),$("div",Jh,[Z[14]||(Z[14]=c("i",{class:"mb-4 icon-[lucide--search] h-12 w-12 opacity-50"},null,-1)),c("p",Xh,V(ee.$t("templateWorkflows.noResults","No templates found")),1),c("p",Zh,V(ee.$t("templateWorkflows.noResultsHint","Try adjusting your search or filters")),1)])):(d(),$("div",ey,[h(_e)?(d(),$("span",ty)):E("",!0),(d(),$("div",{key:Fe.value,style:ye(N.value),"data-testid":"template-workflows-content"},[(d(!0),$(oe,null,be(h(_e)?12:0,ie=>(d(),W(Wo,{key:`initial-skeleton-${ie}`,size:"compact",variant:"ghost",rounded:"lg",class:"hover:bg-base-background"},{top:A(()=>[O(zo,{ratio:"landscape"},{default:A(()=>Z[15]||(Z[15]=[c("div",{class:"h-full w-full animate-pulse bg-dialog-surface"},null,-1)])),_:1})]),bottom:A(()=>[O(Ro,null,{default:A(()=>Z[16]||(Z[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)),(d(!0),$(oe,null,be(h(_e)?[]:jt.value,ie=>ce((d(),W(Wo,{key:ie.name,ref_for:!0,ref_key:"cardRefs",ref:Me,size:"compact",variant:"ghost",rounded:"lg","data-testid":`template-workflow-${ie.name}`,class:"hover:bg-base-background",onMouseenter:n(At=>ae.value=ie.name,"onMouseenter"),onMouseleave:Z[7]||(Z[7]=At=>ae.value=null),onClick:n(At=>pe(ie),"onClick")},{top:A(()=>[O(zo,{ratio:"square"},{default:A(()=>[c("div",oy,[ie.mediaType==="audio"?(d(),W(Eh,{key:0,src:C(ie)},null,8,["src"])):ie.thumbnailVariant==="compareSlider"?(d(),W(Oh,{key:1,"base-image-src":C(ie),"overlay-image-src":g(ie),alt:h(v)(ie,w(ie)),"is-hovered":ae.value===ie.name,"is-video":ie.mediaType==="video"||ie.mediaSubtype==="webp"},null,8,["base-image-src","overlay-image-src","alt","is-hovered","is-video"])):ie.thumbnailVariant==="hoverDissolve"?(d(),W(Fh,{key:2,"base-image-src":C(ie),"overlay-image-src":g(ie),alt:h(v)(ie,w(ie)),"is-hovered":ae.value===ie.name,"is-video":ie.mediaType==="video"||ie.mediaSubtype==="webp"},null,8,["base-image-src","overlay-image-src","alt","is-hovered","is-video"])):(d(),W(Rh,{key:3,src:C(ie),alt:h(v)(ie,w(ie)),"is-hovered":ae.value===ie.name,"is-video":ie.mediaType==="video"||ie.mediaSubtype==="webp","hover-zoom":ie.thumbnailVariant==="zoomHover"?16:5},null,8,["src","alt","is-hovered","is-video","hover-zoom"])),de.value===ie.name?(d(),W(h(ii),{key:4,class:"absolute inset-0 z-10 m-auto h-12 w-12"})):E("",!0)])]),"bottom-right":A(()=>[ie.tags&&ie.tags.length>0?(d(!0),$(oe,{key:0},be(ie.tags,At=>(d(),W(Bo,{key:At,label:At},null,8,["label"]))),128)):E("",!0)]),_:2},1024)]),bottom:A(()=>[O(Ro,null,{default:A(()=>[c("div",ny,[c("h3",{class:"m-0 line-clamp-1 text-sm",title:h(v)(ie,w(ie))},V(h(v)(ie,w(ie))),9,sy),c("div",ay,[c("div",ly,[c("p",{class:"m-0 line-clamp-2 text-sm text-muted",title:h(p)(ie)},V(h(p)(ie)),9,iy)]),ie.tutorialUrl?(d(),$("div",ry,[ae.value===ie.name?ce((d(),W(J,It({key:0,ref_for:!0},ee.$attrs,{variant:"inverted",size:"icon",onClick:Ce(At=>b(ie),["stop"])}),{default:A(()=>Z[17]||(Z[17]=[c("i",{class:"icon-[lucide--info] size-4"},null,-1)])),_:2},1040,["onClick"])),[[bt,ee.$t("g.seeTutorial"),void 0,{bottom:!0}]]):E("",!0)])):E("",!0)])])]),_:2},1024)]),_:2},1032,["data-testid","onMouseenter","onClick"])),[[Je,Ie(ie)]])),128)),(d(!0),$(oe,null,be(h(yt)?6:0,ie=>(d(),W(Wo,{key:`skeleton-${ie}`,size:"compact",variant:"ghost",rounded:"lg",class:"hover:bg-base-background"},{top:A(()=>[O(zo,{ratio:"square"},{default:A(()=>Z[18]||(Z[18]=[c("div",{class:"h-full w-full animate-pulse bg-dialog-surface"},null,-1)])),_:1})]),bottom:A(()=>[O(Ro,null,{default:A(()=>Z[19]||(Z[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))])),!h(_e)&&h(ot)?(d(),$("div",{key:2,ref_key:"loadTrigger",ref:Pt,class:"mt-4 flex h-4 w-full items-center justify-center"},[h(yt)?(d(),$("div",uy,V(ee.$t("templateWorkflows.loadingMore","Loading more...")),1)):E("",!0)],512)):E("",!0),h(_e)?E("",!0):(d(),$("div",cy,V(ee.$t("templateWorkflows.resultsCount",{count:h(z),total:h(G)})),1))]),_:1},8,["content-title"])}}}),ea="global-workflow-template-selector",ps=n(()=>{const e=gt(),o=rt();function t(){o.closeDialog({key:ea})}n(t,"hide");function s(l="command"){e.showLayoutDialog({key:ea,component:dy,props:{onClose:t},dialogComponentProps:{pt:{content:{class:"!px-0 overflow-hidden h-full !py-0"},root:{style:"width: 90vw; height: 85vh; max-width: 1400px; display: flex;"}}}})}return n(s,"show"),{show:s,hide:t}},"useWorkflowTemplateSelectorDialog"),Dn=n((e,o,t=30)=>{const s=e instanceof HTMLElement?e:e.target;let l=0;const a=setInterval(()=>{o(l++)},t),i=n(()=>{clearInterval(a),r(),u()},"dispose"),r=Ee(document,"mouseup",i),u=Ee(s,"mouseup",i);return{dispose:i}},"whileMouseDown"),py={class:"flex h-8 w-8 items-center justify-center rounded-lg bg-black"},fy=["href","onMousedown","onClick"],my={class:"p-menubar-item-label text-nowrap"},vy={key:3,class:"keybinding-tag ml-auto rounded border border-surface p-1 text-xs text-nowrap text-muted"},gy={key:4,class:"pi pi-angle-right ml-auto"},hy={class:"p-menubar-item-label text-nowrap"},yy=H({__name:"ComfyMenuButton",setup(e){const{t:o}=fe(),t=Se(),s=ja(),l=ct(),a=Ha(),i=rt(),r=ft(),u=re(),f=L(null),m=y({get:n(()=>u.get("Comfy.VueNodes.Enabled")??!1,"get"),set:n(async P=>{await u.set("Comfy.VueNodes.Enabled",P)},"set")});function v(P){f.value?.toggle(P)}n(v,"onLogoMenuClick");const p=n(P=>{const B=typeof P.label=="function"?P.label():P.label,j=B?o(`menuLabels.${Ge(B)}`,B):void 0;return{...P,label:j,items:P.items?.map(p)}},"translateMenuItem"),w=n(P=>{i.showDialog({key:"global-settings",headerComponent:mr,component:fr,props:{defaultPanel:P}})},"showSettings"),C=n(async()=>{await r.openManager({initialTab:Jt.All,showToastOnLegacyError:!1})},"showManageExtensions"),g=y(()=>l.palettes.map(P=>({key:`theme-${P.id}`,label:P.name,parentPath:"theme",comfyCommand:{active:n(()=>l.activePaletteId===P.id,"active")},command:n(async()=>{await a.loadColorPalette(P.id)},"command")}))),b=y(()=>[{separator:!0},{key:"theme",label:o("menu.theme"),items:g.value},{key:"nodes-2.0-toggle",label:"Nodes 2.0"},{separator:!0},{key:"browse-templates",label:o("menuLabels.Browse Templates"),icon:"icon-[comfy--template]",command:n(()=>ps().show("menu"),"command")},{key:"settings",label:o("g.settings"),icon:"mdi mdi-cog-outline",command:n(()=>{w()},"command")},{key:"manage-extensions",label:o("menu.manageExtensions"),icon:"mdi mdi-puzzle-outline",command:C}]),k=y(()=>{const P=s.menuItems.map(p);let B=P.findIndex(U=>U.key==="Help"),j;if(B!==-1){P[B].icon="mdi mdi-help-circle-outline";const U=B!==P.length-1;j=P.splice(B,1,...U?[{separator:!0}]:[])[0]}return B=P.length,P.splice(B,0,...b.value,...j?[{separator:!0},j]:[]),P}),N=n(()=>{Be(()=>{f.value&&(f.value.dirty=!0)})},"onMenuShow"),T=n(P=>P.comfyCommand?.id==="Comfy.Canvas.ZoomIn"||P.comfyCommand?.id==="Comfy.Canvas.ZoomOut","isZoomCommand"),x=n((P,B)=>{P.comfyCommand&&Dn(B,async()=>{await t.execute(P.comfyCommand.id)},50)},"handleZoomMouseDown"),S=n((P,B)=>{if(T(P)||P.comfyCommand?.active)return B.preventDefault(),B.stopPropagation(),P.comfyCommand?.active&&P.command?.({item:P,originalEvent:B}),!1},"handleItemClick"),I=n(P=>P.parentPath&&(P.parentPath==="theme"||s.menuItemHasActiveStateChildren[P.parentPath]),"hasActiveStateSiblings"),_=n(()=>!1,"handleNodes2ToggleClick"),M=n(async P=>{await u.set("Comfy.VueNodes.Enabled",P)},"onNodes2ToggleChange");return(P,B)=>{const j=Ne("tooltip");return d(),$(oe,null,[ce((d(),$("div",{class:K(["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:B[0]||(B[0]=U=>v(U))},[c("div",py,[O($h,{alt:"ComfyUI Logo",class:"comfyui-logo h-[18px] w-[18px] text-white",mode:"fill"})])],2)),[[j,{value:h(o)("sideToolbar.labels.menu"),showDelay:300,hideDelay:300}]]),O(h(ri),{ref_key:"menuRef",ref:f,model:k.value,popup:!0,class:"comfy-command-menu",onShow:N},{item:A(({item:U,props:R})=>[U.key!=="nodes-2.0-toggle"?(d(),$("a",It({key:0,class:"p-menubar-item-link px-4 py-2"},R.action,{href:U.url,target:"_blank",class:typeof U.class=="function"?U.class():U.class,onMousedown:n(F=>T(U)?x(U,F):void 0,"onMousedown"),onClick:n(F=>S(U,F),"onClick")}),[I(U)?(d(),$("i",{key:0,class:K(["p-menubar-item-icon pi pi-check text-sm",{invisible:!U.comfyCommand?.active?.()}])},null,2)):U.icon&&U.comfyCommand?.id!=="Comfy.NewBlankWorkflow"?(d(),$("span",{key:1,class:K(["p-menubar-item-icon text-sm",U.icon])},null,2)):E("",!0),c("span",my,V(U.label),1),U.comfyCommand?.id==="Comfy.NewBlankWorkflow"?(d(),$("i",{key:2,class:K(["ml-auto",U.icon])},null,2)):E("",!0),U?.comfyCommand?.keybinding?(d(),$("span",vy,V(U.comfyCommand.keybinding.combo.toString()),1)):E("",!0),U.items?(d(),$("i",gy)):E("",!0)],16,fy)):(d(),$("div",{key:1,class:"flex items-center justify-between px-4 py-2",onClick:Ce(_,["stop"])},[c("span",hy,V(U.label),1),O(h(Yt),{severity:"info",class:"ml-2 text-xs"},{default:A(()=>[$e(V(P.$t("g.beta")),1)]),_:1}),O(h(Aa),{modelValue:m.value,"onUpdate:modelValue":[B[1]||(B[1]=F=>m.value=F),M],class:"ml-4","aria-label":U.label,pt:{root:{style:{width:"38px",height:"20px"}},handle:{style:{width:"16px",height:"16px"}}},onClick:B[2]||(B[2]=Ce(()=>{},["stop"]))},null,8,["modelValue","aria-label"])]))]),_:1},8,["model"])],64)}}}),by=Le(yy,[["__scopeId","data-v-7f8c3b49"]]),wy={class:"side-bar-button-content"},Cy={key:0,class:"side-bar-button-label"},ky=H({__name:"SidebarIcon",props:{icon:{default:""},selected:{type:Boolean,default:!1},tooltip:{default:""},tooltipSuffix:{default:""},iconBadge:{type:[String,Function],default:""},label:{default:""},isSmall:{type:Boolean,default:!1}},emits:["click"],setup(e,{emit:o}){const{t}=fe(),s=o,l=y(()=>typeof e.iconBadge=="function"?e.iconBadge()??"":e.iconBadge),a=y(()=>!!l.value),i=y(()=>t(e.tooltip)+e.tooltipSuffix);return(r,u)=>{const f=Ne("tooltip");return ce((d(),W(J,{class:K(h(ne)("side-bar-button cursor-pointer border-none",r.selected&&"side-bar-button-selected")),variant:"muted-textonly","aria-label":i.value,onClick:u[0]||(u[0]=m=>s("click",m))},{default:A(()=>[c("div",wy,[he(r.$slots,"icon",{},()=>[a.value?(d(),W(h(ui),{key:0,value:l.value},{default:A(()=>[typeof r.icon=="string"?(d(),$("i",{key:0,class:K(r.icon+" side-bar-button-icon")},null,2)):(d(),W(Zt(r.icon),{key:1,class:"side-bar-button-icon"}))]),_:1},8,["value"])):typeof r.icon=="string"?(d(),$("i",{key:1,class:K(r.icon+" side-bar-button-icon")},null,2)):typeof r.icon=="object"?(d(),W(Zt(r.icon),{key:2,class:"side-bar-button-icon"})):E("",!0)],!0),r.label&&!r.isSmall?(d(),$("span",Cy,V(h(t)(r.label)),1)):E("",!0)])]),_:3},8,["class","aria-label"])),[[f,{value:i.value,showDelay:300,hideDelay:300}]])}}}),Ut=Le(ky,[["__scopeId","data-v-bbb98ec9"]]),xy=H({__name:"SidebarBottomPanelToggleButton",setup(e){const o=so(),t=n(()=>{o.toggleBottomPanel()},"toggleConsole");return(s,l)=>(d(),W(Ut,{icon:"icon-[ph--terminal-bold]",label:s.$t("sideToolbar.labels.console"),tooltip:s.$t("menu.toggleBottomPanel"),selected:h(o).activePanel=="terminal",onClick:t},null,8,["label","tooltip","selected"]))}}),Sy=H({__name:"SidebarSettingsButton",setup(e){const{t:o}=fe(),{getCommand:t,formatKeySequence:s}=Se(),l=t("Comfy.ShowSettingsDialog"),a=y(()=>`${o("g.settings")} (${s(l)})`),i=n(()=>{l.function()},"showSettingsDialog");return(r,u)=>(d(),W(Ut,{icon:"icon-[lucide--settings]",label:r.$t("g.settings"),tooltip:a.value,onClick:i},null,8,["label","tooltip"]))}}),_y=H({__name:"SidebarShortcutsToggleButton",setup(e){const{t:o}=fe(),t=so(),s=Se(),l=s.getCommand("Workspace.ToggleBottomPanel.Shortcuts"),{formatKeySequence:a}=s,i=y(()=>t.activePanel==="shortcuts"),r=y(()=>`${o("shortcuts.keyboardShortcuts")} (${a(l)})`),u=n(()=>{t.togglePanel("shortcuts")},"toggleShortcutsPanel");return(f,m)=>(d(),W(Ut,{icon:"icon-[lucide--keyboard]",label:f.$t("shortcuts.shortcuts"),tooltip:r.value,selected:i.value,onClick:u},null,8,["label","tooltip","selected"]))}}),Ty=["width","height"],$y={"clip-path":"url(#clip0_1099_16244)"},Ny=["stroke"],Iy=H({__name:"PuzzleIcon",props:{size:{default:16},color:{default:"currentColor"},class:{}},setup(e){const o=y(()=>e.class||"");return(t,s)=>(d(),$("svg",{xmlns:"http://www.w3.org/2000/svg",width:t.size,height:t.size,viewBox:"0 0 16 16",fill:"none",class:K(o.value)},[c("g",$y,[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,Ny)]),s[0]||(s[0]=c("defs",null,[c("clipPath",{id:"clip0_1099_16244"},[c("rect",{width:"16",height:"16",fill:"white"})])],-1))],10,Ty))}}),My=["aria-label"],Py={class:"w-full"},Dy={class:"flex w-full flex-col gap-2",role:"menubar"},Ay=["onClick","onMouseenter","onMouseleave"],Ly={class:"help-menu-icon-container"},Ey={class:"help-menu-icon"},Vy={key:0,class:"menu-red-dot"},Oy={class:"menu-label"},Ry={key:0,class:"icon-[lucide--external-link] text-primary w-4 h-4 ml-auto"},Wy={key:1,class:"pi pi-chevron-right ml-auto"},zy={key:0,class:"submenu-divider"},By=["onClick"],Fy={class:"menu-label"},Uy={key:0,class:"w-full","data-testid":"whats-new-section"},Gy={class:"section-description flex items-center gap-2.5 self-stretch px-8 pt-2 pb-2"},jy=["aria-label"],Hy=["onClick","onKeydown"],qy={class:"release-content"},Ky={class:"release-title"},Qy=["datetime"],Yy={class:"normal-state"},Jy={class:"hover-state"},Xy={key:1,class:"help-menu-item",role:"status","aria-live":"polite"},Zy={key:2,class:"help-menu-item",role:"status"},eb=H({__name:"HelpCenterMenuContent",emits:["close"],setup(e,{emit:o}){const t={MINUTE:6e4,HOUR:36e5,DAY:864e5,WEEK:6048e5,MONTH:2592e6,YEAR:31536e6},s={DELAY_MS:100,OFFSET_PX:8,Z_INDEX:10001},{t:l}=fe(),a=Wt(),{staticUrls:i,buildDocsUrl:r}=ao(),u=ro(),f=Se(),m=re(),v=L(Date.now()),p=o,w=L(!1),C=L(null),g=L({});let b=null;const k=y(()=>u.releases.length>0),N=y(()=>m.get("Comfy.Notification.ShowVersionUpdates")),{shouldShowRedDot:T}=Jn(),{isNewManagerUI:x}=ft(),S=y(()=>[{key:"desktop-guide",type:"item",label:l("helpCenter.desktopUserGuide"),visible:qe(),action:n(()=>{P(r("/installation/desktop",{includeLocale:!0,platform:!0})),p("close")},"action")},{key:"dev-tools",type:"item",label:l("helpCenter.openDevTools"),visible:qe(),action:n(()=>{q(),p("close")},"action")},{key:"divider-1",type:"divider",visible:qe()},{key:"reinstall",type:"item",label:l("helpCenter.reinstall"),visible:qe(),action:n(()=>{Q(),p("close")},"action")}].filter(de=>de.visible!==!1)),I=y(()=>!!S.value.length),_=y(()=>M.value.find(X=>X.key==="more")),M=y(()=>{const X=[{key:"feedback",type:"item",icon:"icon-[lucide--clipboard-pen]",label:l("helpCenter.feedback"),action:n(()=>{f.execute("Comfy.ContactSupport"),p("close")},"action")},{key:"help",type:"item",icon:"icon-[lucide--message-circle-question]",label:l("helpCenter.help"),action:n(()=>{f.execute("Comfy.ContactSupport"),p("close")},"action")},{key:"docs",type:"item",icon:"icon-[lucide--book-open]",label:l("helpCenter.docs"),showExternalIcon:!0,action:n(()=>{P(r("/",{includeLocale:!0})),p("close")},"action")},{key:"discord",type:"item",icon:"pi pi-discord",label:"Discord",showExternalIcon:!0,action:n(()=>{P(i.discord),p("close")},"action")},{key:"github",type:"item",icon:"icon-[lucide--github]",label:l("helpCenter.github"),showExternalIcon:!0,action:n(()=>{P(i.github),p("close")},"action")}];return X.push({key:"manager",type:"item",icon:Iy,label:l("helpCenter.managerExtension"),showRedDot:T.value,action:n(async()=>{await ft().openManager({initialTab:Jt.All,showToastOnLegacyError:!1}),p("close")},"action")}),!qe()&&!kt&&x.value&&X.push({key:"update-comfyui",type:"item",icon:"icon-[lucide--download]",label:l("helpCenter.updateComfyUI"),action:n(()=>{te(),p("close")},"action")}),X.push({key:"more",type:"item",icon:"",label:l("helpCenter.more"),visible:I.value,action:n(()=>{},"action"),items:S.value}),X}),P=n(X=>{window.open(X,"_blank","noopener,noreferrer")},"openExternalLink"),B=n(()=>{b&&(clearTimeout(b),b=null)},"clearHoverTimeout"),j=n(X=>{const de=X.getBoundingClientRect(),ae=210,Fe=(_.value?.items?.filter(ht=>ht.visible!==!1).length||0)*48+16,Ke=C.value?.offsetHeight||Fe,Ve=window.innerWidth,xe=window.innerHeight;let ze=de.top,Ye=de.right+s.OFFSET_PX;return Ye+ae>Ve&&(Ye=de.left-ae-s.OFFSET_PX),ze+Ke>xe&&(ze=Math.max(s.OFFSET_PX,de.bottom-Ke)),ze<s.OFFSET_PX&&(ze=s.OFFSET_PX),ze-=8,{position:"fixed",top:`${ze}px`,left:`${Ye}px`,zIndex:s.Z_INDEX}},"calculateSubmenuPosition"),U=n(X=>{if(!X)return"date";const de=new Date(X),Me=Math.abs(new Date().getTime()-de.getTime()),Fe=[{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:Ke,key:Ve}of Fe){const xe=Math.floor(Me/Ke);if(xe>0)return l(`g.relativeTime.${Ve}`,{count:xe})}return l("g.relativeTime.now")},"formatReleaseDate"),R=n(async(X,de)=>{if(X!=="more"||!_.value?.items||!_.value.items.some(Fe=>Fe.visible!==!1))return;B();const Me=de.currentTarget;g.value=j(Me),w.value=!0,await Be(),C.value&&(g.value=j(Me))},"onMenuItemHover"),F=n(X=>{X==="more"&&(b=window.setTimeout(()=>{w.value=!1},s.DELAY_MS))},"onMenuItemLeave"),z=n(()=>{B()},"onSubmenuHover"),G=n(()=>{w.value=!1},"onSubmenuLeave"),q=n(()=>{qe()&&ho().openDevTools()},"openDevTools"),Q=n(()=>{qe()&&ho().reinstall()},"onReinstall"),te=n(async()=>{const{updateComfyUI:X,rebootComfyUI:de,error:ae}=qa();a.add({severity:"info",summary:l("helpCenter.updateComfyUIStarted"),detail:l("helpCenter.updateComfyUIStartedDetail"),life:3e3});try{if(await X({is_stable:!0})===null||ae.value){a.add({severity:"error",summary:l("g.error"),detail:ae.value||l("helpCenter.updateComfyUIFailed"),life:5e3});return}a.add({severity:"success",summary:l("helpCenter.updateComfyUISuccess"),detail:l("helpCenter.updateComfyUISuccessDetail"),life:3e3}),await de()}catch(Me){a.add({severity:"error",summary:l("g.error"),detail:Me instanceof Error?Me.message:l("g.unknownError"),life:5e3})}},"onUpdateComfyUI"),le=n(X=>{u.handleShowChangelog(X.version);const de=ns(X.version),ae=`${r("/changelog",{includeLocale:!0})}#${de}`;P(ae),p("close")},"onReleaseClick");return We(async()=>{k.value||await u.fetchReleases()}),it(()=>{Math.round((Date.now()-v.value)/1e3)}),(X,de)=>(d(),$("div",{class:"help-center-menu flex flex-col items-start gap-1",role:"menu","aria-label":X.$t("help.helpCenterMenu")},[c("div",Py,[c("nav",Dy,[(d(!0),$(oe,null,be(M.value,ae=>ce((d(),$("button",{key:ae.key,type:"button",class:K(["help-menu-item",{"more-item":ae.key==="more"}]),role:"menuitem",onClick:ae.action,onMouseenter:n(Me=>R(ae.key,Me),"onMouseenter"),onMouseleave:n(Me=>F(ae.key),"onMouseleave")},[c("div",Ly,[c("div",Ey,[typeof ae.icon=="object"?(d(),W(Zt(ae.icon),{key:0,size:16})):(d(),$("i",{key:1,class:K(ae.icon)},null,2))]),ae.showRedDot?(d(),$("div",Vy)):E("",!0)]),c("span",Oy,V(ae.label),1),ae.showExternalIcon?(d(),$("i",Ry)):E("",!0),ae.key==="more"?(d(),$("i",Wy)):E("",!0)],42,Ay)),[[Je,ae.visible!==!1]])),128))]),de[0]||(de[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))]),(d(),W(Tt,{to:"body"},[w.value?(d(),$("div",{key:0,ref_key:"submenuRef",ref:C,class:"more-submenu",style:ye(g.value),onMouseenter:z,onMouseleave:G},[(d(!0),$(oe,null,be(_.value?.items,ae=>(d(),$(oe,{key:ae.key},[ae.type==="divider"?ce((d(),$("div",zy,null,512)),[[Je,ae.visible!==!1]]):ce((d(),$("button",{key:1,type:"button",class:"help-menu-item submenu-item",role:"menuitem",onClick:ae.action},[c("span",Fy,V(ae.label),1)],8,By)),[[Je,ae.visible!==!1]])],64))),128))],36)):E("",!0)])),N.value?(d(),$("section",Uy,[c("h3",Gy,V(X.$t("helpCenter.whatsNew")),1),k.value?(d(),$("div",{key:0,role:"group","aria-label":X.$t("help.recentReleases")},[(d(!0),$(oe,null,be(h(u).recentReleases,ae=>(d(),$("article",{key:ae.id||ae.version,class:"release-menu-item flex h-12 min-h-6 cursor-pointer items-center gap-2 self-stretch rounded p-2 transition-colors hover:bg-interface-menu-component-surface-hovered",role:"button",tabindex:"0",onClick:n(Me=>le(ae),"onClick"),onKeydown:[Xt(Me=>le(ae),["enter"]),Xt(Ce(Me=>le(ae),["prevent"]),["space"])]},[de[1]||(de[1]=c("i",{class:"help-menu-icon icon-[lucide--package]","aria-hidden":"true"},null,-1)),c("div",qy,[c("span",Ky,V(X.$t("g.releaseTitle",{package:"Comfy",version:ae.version})),1),c("time",{class:"release-date",datetime:ae.published_at},[c("span",Yy,V(U(ae.published_at)),1),c("span",Jy,V(X.$t("helpCenter.clickToLearnMore")),1)],8,Qy)])],40,Hy))),128))],8,jy)):h(u).isLoading?(d(),$("div",Xy,[de[2]||(de[2]=c("i",{class:"pi pi-spin pi-spinner help-menu-icon","aria-hidden":"true"},null,-1)),c("span",null,V(X.$t("helpCenter.loadingReleases")),1)])):(d(),$("div",Zy,[de[3]||(de[3]=c("i",{class:"pi pi-info-circle help-menu-icon","aria-hidden":"true"},null,-1)),c("span",null,V(X.$t("helpCenter.noRecentReleases")),1)]))])):E("",!0)],8,My))}}),tb=Le(eb,[["__scopeId","data-v-8ecd06e2"]]),ob={key:0,class:"release-toast-popup"},nb={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"},sb={class:"p-4 flex flex-col gap-4 flex-1 min-h-0"},ab={class:"flex items-center gap-4"},lb={class:"flex flex-col gap-1"},ib={class:"text-sm font-normal text-base-foreground leading-[1.429]"},rb={class:"text-sm font-normal text-muted-foreground leading-[1.21]"},ub=["innerHTML"],cb={class:"flex justify-between items-center px-4 pb-4"},db=["href"],pb={class:"flex items-center gap-4"},fb=H({__name:"ReleaseNotificationToast",setup(e,{expose:o}){const{buildDocsUrl:t}=ao(),{toastErrorHandler:s}=Bt(),l=ro(),{t:a}=fe(),i=L(!1),r=y(()=>l.recentRelease),u=y(()=>l.shouldShowToast&&!i.value),f=y(()=>{const N=t("/changelog",{includeLocale:!0});if(r.value?.version){const T=ns(r.value.version);return`${N}#${T}`}return N}),m=y(()=>{if(!r.value?.content)return Ct.sanitize(`<p>${a("releaseToast.description")}</p>`);try{const x=r.value.content.replace(/^# .+$/m,"").replace(/!\[.*?\]\(.*?\)/g,""),S=x.trim();return!S||S.replace(/\s+/g,"")===""?Ct.sanitize(`<p>${a("releaseToast.description")}</p>`):Ka(x)}catch(N){console.error("Error parsing markdown:",N);const T=r.value.content.replace(/\n/g,"<br>");return T.trim()?Ct.sanitize(T):Ct.sanitize(`<p>${a("releaseToast.description")}</p>`)}});let v=null;const p=n(()=>{v&&clearTimeout(v),v=setTimeout(()=>{C()},8e3)},"startAutoHide"),w=n(()=>{v&&(clearTimeout(v),v=null)},"clearAutoHide"),C=n(()=>{i.value=!0,w()},"dismissToast"),g=n(()=>{r.value&&l.handleSkipRelease(r.value.version),C()},"handleSkip"),b=n(()=>{r.value&&l.handleShowChangelog(r.value.version),C()},"handleLearnMore"),k=n(async()=>{if(qe()){try{await Se().execute("Comfy-Desktop.CheckForUpdates"),C()}catch(N){s(N)}return}window.open(t("/installation/update_comfyui",{includeLocale:!0}),"_blank"),C()},"handleUpdate");return se(u,N=>{N?p():w()}),We(async()=>{l.releases.length||await l.fetchReleases()}),o({handleSkip:g,handleLearnMore:b,handleUpdate:k}),(N,T)=>u.value?(d(),$("div",ob,[c("div",nb,[c("div",sb,[c("div",ab,[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",lb,[c("div",ib,V(N.$t("releaseToast.newVersionAvailable")),1),c("div",rb,V(r.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,ub)]),c("div",cb,[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:b},[T[1]||(T[1]=c("i",{class:"icon-[lucide--external-link] w-4 h-4"},null,-1)),$e(" "+V(N.$t("releaseToast.whatsNew")),1)],8,db),c("div",pb,[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:g},V(N.$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:k},V(N.$t("releaseToast.update")),1)])])])])):E("",!0)}}),mb=Le(fb,[["__scopeId","data-v-ba02c61a"]]),vb={key:0,class:"whats-new-popup-container left-4"},gb={class:"modal-body flex flex-col gap-4 px-0 pt-0 pb-2 flex-1"},hb=["innerHTML"],yb={class:"modal-footer flex justify-between items-center gap-4 px-4 pb-4"},bb=["href"],wb={class:"footer-actions flex items-center gap-4"},Cb=H({__name:"WhatsNewPopup",emits:["whats-new-dismissed"],setup(e,{expose:o,emit:t}){const{buildDocsUrl:s}=ao(),l=ro(),{t:a}=fe(),i=t,r=L(!1),u=y(()=>l.recentRelease),f=y(()=>l.shouldShowPopup&&!r.value),m=y(()=>{const g=s("/changelog",{includeLocale:!0});if(u.value?.version){const b=ns(u.value.version);return`${g}#${b}`}return g}),v=y(()=>{if(!u.value?.content)return Ct.sanitize(`<p>${a("whatsNewPopup.noReleaseNotes")}</p>`);try{const g=u.value.content,b=g.trim();if(!b||b.replace(/\s+/g,"")==="")return Ct.sanitize(`<p>${a("whatsNewPopup.noReleaseNotes")}</p>`);const k=g.match(/!\[.*?\]\(.*?\)/),N=k?k[0]:"",T=g.replace(/!\[.*?\]\(.*?\)/,"").trim(),x=[N,T].filter(Boolean).join(`
9
-
10
- `);return Ka(x)}catch(g){console.error("Error parsing markdown:",g);const b=u.value.content.replace(/\n/g,"<br>");return b.trim()?Ct.sanitize(b):Ct.sanitize(`<p>${a("whatsNewPopup.noReleaseNotes")}</p>`)}}),p=n(()=>{r.value=!1},"show"),w=n(()=>{r.value=!0,i("whats-new-dismissed")},"hide"),C=n(async()=>{u.value&&await l.handleWhatsNewSeen(u.value.version),w()},"closePopup");return We(async()=>{l.releases.length||await l.fetchReleases()}),o({show:p,hide:w,closePopup:C}),(g,b)=>f.value?(d(),$("div",vb,[c("div",{class:"whats-new-popup",onClick:b[0]||(b[0]=Ce(()=>{},["stop"]))},[O(J,{class:"close-button absolute top-2 right-2 z-10 w-8 h-8 p-2 rounded-lg opacity-50","aria-label":g.$t("g.close"),size:"icon-sm",variant:"muted-textonly",onClick:C},{default:A(()=>b[1]||(b[1]=[c("i",{class:"icon-[lucide--x]"},null,-1)])),_:1},8,["aria-label"]),c("div",gb,[c("div",{class:"content-text max-h-96 overflow-y-auto",innerHTML:v.value},null,8,hb)]),c("div",yb,[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:C},[b[2]||(b[2]=c("i",{class:"icon-[lucide--external-link]"},null,-1)),$e(" "+V(g.$t("whatsNewPopup.learnMore")),1)],8,bb),c("div",wb,[O(J,{class:"h-8",size:"sm",variant:"muted-textonly",onClick:C},{default:A(()=>[$e(V(g.$t("whatsNewPopup.later")),1)]),_:1})])])])])):E("",!0)}}),kb=Le(Cb,[["__scopeId","data-v-98a9f324"]]),An=Mt("helpCenter",()=>{const e=L(!1);return{isVisible:e,toggle:n(()=>{e.value=!e.value},"toggle"),show:n(()=>{e.value=!0},"show"),hide:n(()=>{e.value=!1},"hide")}}),xb=H({__name:"SidebarHelpCenterIcon",props:{isSmall:{type:Boolean}},setup(e){const o=re(),t=ro(),s=An(),{isVisible:l}=He(s),{shouldShowRedDot:a}=He(t),i=Qa(),{showNodeConflictDialog:r}=gt(),{shouldShowRedDot:u,markConflictsAsSeen:f}=Jn(),m=e,{isSmall:v}=ka(m),p=y(()=>a.value||u.value),w=y(()=>o.get("Comfy.Sidebar.Location")),C=n(()=>{s.toggle()},"toggleHelpCenter"),g=n(()=>{s.hide()},"closeHelpCenter"),b=n(async()=>{try{await i.shouldShowConflictModalAfterUpdate()&&k()}catch(N){console.error("[HelpCenter] Error checking conflict modal:",N)}},"handleWhatsNewDismissed"),k=n(()=>{r({showAfterWhatsNew:!0,dialogComponentProps:{onClose:n(()=>{f()},"onClose")}})},"showConflictModal");return We(async()=>{await t.initialize()}),(N,T)=>(d(),$("div",null,[O(Ut,{icon:"pi pi-question-circle",class:"comfy-help-center-btn",label:N.$t("menu.help"),tooltip:N.$t("sideToolbar.helpCenter"),"icon-badge":p.value?"•":"","is-small":h(v),onClick:C},null,8,["label","tooltip","icon-badge","is-small"]),(d(),W(Tt,{to:"#graph-canvas-container"},[h(l)?(d(),$("div",{key:0,class:K(["help-center-popup",{"sidebar-left":w.value==="left","sidebar-right":w.value==="right","small-sidebar":h(v)}])},[O(tb,{onClose:g})],2)):E("",!0)])),(d(),W(Tt,{to:"#graph-canvas-container"},[O(mb,{class:K({"sidebar-left":w.value==="left","sidebar-right":w.value==="right","small-sidebar":h(v)})},null,8,["class"])])),(d(),W(Tt,{to:"#graph-canvas-container"},[O(kb,{class:K({"sidebar-left":w.value==="left","sidebar-right":w.value==="right","small-sidebar":h(v)}),onWhatsNewDismissed:b},null,8,["class"])])),(d(),W(Tt,{to:"body"},[h(l)?(d(),$("div",{key:0,class:"help-center-backdrop",onClick:g})):E("",!0)]))]))}}),Sb=Le(xb,[["__scopeId","data-v-91ae5559"]]),_b=H({__name:"SidebarLogoutIcon",setup(e){const{t:o}=fe(),t=Ya(),s=y(()=>`${o("sideToolbar.logout")} (${t.currentUser?.username})`),l=n(async()=>{await t.logout(),window.location.reload()},"logout");return(a,i)=>(d(),W(Ut,{icon:"pi pi-sign-out",tooltip:s.value,label:a.$t("sideToolbar.logout"),onClick:l},null,8,["tooltip","label"]))}}),Tb=H({__name:"SidebarTemplatesButton",setup(e){const o=re(),t=y(()=>o.get("Comfy.Sidebar.Size")==="small"),s=n(()=>{ps().show("sidebar")},"openTemplates");return(l,a)=>(d(),W(Ut,{icon:"icon-[comfy--template]",tooltip:l.$t("sideToolbar.templates"),label:l.$t("sideToolbar.labels.templates"),"is-small":t.value,class:"templates-tab-button",onClick:s},null,8,["tooltip","label","is-small"]))}}),$b=20,Nb=50,Ib=H({__name:"SideToolbar",setup(e){const o=lt(),t=re(),s=Ya(),l=Se(),a=ge(),i=L(),r=L(),u=L(),f=y(()=>t.get("Comfy.Sidebar.Size")==="small"),m=y(()=>t.get("Comfy.Sidebar.Location")),v=y(()=>t.get("Comfy.Sidebar.Style")),p=y(()=>C.value||N.value||v.value==="connected"),w=y(()=>o.getSidebarTabs()),C=y(()=>o.sidebarTab.activeSidebarTab),g=n(async S=>{S.id,S.id,S.id,S.id,await l.commands.find(I=>I.id===`Workspace.ToggleSidebarTab.${S.id}`)?.function?.()},"onTabClick"),b=vr(),k=n(S=>{const I=b.getKeybindingByCommandId(`Workspace.ToggleSidebarTab.${S.id}`);return I?` (${I.combo.toString()})`:""},"getTabTooltipSuffix"),N=L(!1),T=y(()=>ne("sidebar-item-group flex flex-col items-center overflow-hidden flex-shrink-0",!p.value&&"rounded-lg shadow-interface pointer-events-auto")),x=en(()=>{if(!i.value||!r.value||!u.value)return;const S=i.value.clientHeight,I=r.value.scrollHeight,_=u.value.scrollHeight,M=I+_;N.value?N.value=S<M+Nb:N.value=S<M+$b},16);return We(()=>{if(!i.value)return;const S=ma(i.value,x);x(),it(()=>{S.stop()}),se([f,m],async()=>{a.canvas&&(m.value==="left"?(await Be(),a.canvas.fpsInfoLocation=[i.value?.getBoundingClientRect()?.right,null]):a.canvas.fpsInfoLocation=null,a.canvas.setDirty(!1,!0))},{immediate:!0})}),(S,I)=>(d(),$("nav",{ref_key:"sideToolbarRef",ref:i,class:K(["side-tool-bar-container flex h-full flex-col items-center bg-transparent [.floating-sidebar]:-mr-2",{"small-sidebar":f.value,"connected-sidebar pointer-events-auto":p.value,"floating-sidebar":!p.value,"overflowing-sidebar":N.value,"border-r border-[var(--interface-stroke)] shadow-interface":p.value}])},[c("div",{class:K(N.value?"side-tool-bar-container overflow-y-auto":"flex flex-col h-full")},[c("div",{ref_key:"topToolbarRef",ref:r,class:K(T.value)},[O(by),(d(!0),$(oe,null,be(w.value,_=>(d(),W(Ut,{key:_.id,icon:_.icon,"icon-badge":_.iconBadge,tooltip:_.tooltip,"tooltip-suffix":k(_),label:_.label||_.title,"is-small":f.value,selected:_.id===C.value?.id,class:K(_.id+"-tab-button"),onClick:n(M=>g(_),"onClick")},null,8,["icon","icon-badge","tooltip","tooltip-suffix","label","is-small","selected","class","onClick"]))),128)),O(Tb)],2),c("div",{ref_key:"bottomToolbarRef",ref:u,class:K(["mt-auto",T.value])},[h(s).isMultiUserServer?(d(),W(_b,{key:0,"is-small":f.value},null,8,["is-small"])):E("",!0),O(Sb,{"is-small":f.value},null,8,["is-small"]),O(xy,{"is-small":f.value},null,8,["is-small"]),O(_y,{"is-small":f.value},null,8,["is-small"]),O(Sy,{"is-small":f.value},null,8,["is-small"])],2)],2)],2))}}),Mb=Le(Ib,[["__scopeId","data-v-f17a518c"]]),Pb=Mt("topbarBadge",()=>{const e=Qn();return{badges:y(()=>e.extensions.flatMap(t=>t.topbarBadges??[]))}}),Db={class:"flex h-full shrink-0 items-center"},wl=H({__name:"TopbarBadges",props:{reverseOrder:{type:Boolean,default:!1},noPadding:{type:Boolean,default:!1}},setup(e){const o=Qo(Xo),t=o.greaterOrEqual("xl"),s=o.greaterOrEqual("lg"),l=y(()=>t.value?"full":s.value?"compact":"icon-only"),a=Pb();return(i,r)=>(d(),$("div",Db,[(d(!0),$(oe,null,be(h(a).badges,u=>(d(),W(Qc,{key:u.text,badge:u,"display-mode":l.value,"reverse-order":i.reverseOrder,"no-padding":i.noPadding},null,8,["badge","display-mode","reverse-order","no-padding"]))),128))]))}}),Ab={class:"workflow-preview-content"},Lb={key:0,class:"workflow-preview-thumbnail relative"},Eb=["src"],Vb={class:"workflow-preview-footer"},Ob={class:"workflow-preview-name"},Rb=250,Wb=H({__name:"WorkflowTabPopover",props:{workflowFilename:{},thumbnailUrl:{},isActiveTab:{type:Boolean}},setup(e,{expose:o}){const t=e,{thumbnailUrl:s,isActiveTab:l}=ka(t),a=L(null),i=L(null);let r=null,u=null;const f=Sn(),m=n(C=>{r&&(clearTimeout(r),r=null),u&&(clearTimeout(u),u=null),u=setTimeout(async()=>{if(a.value&&i.value){a.value.show(C,i.value),await Be();const g=document.querySelector(`.workflow-popover-fade[data-popover-id="${f}"]`);if(g){const b=i.value.getBoundingClientRect().left,k=g.getBoundingClientRect().width,N=k/2;let T=b-N,x=0;if(T<0)x=T-8,T=8;else if(T+k>window.innerWidth){const S=window.innerWidth-k-16;x=T-S,T=S}x+N<0&&(x=-N+24),g.style.left=`${T}px`,g.style.setProperty("--shift",`${x}px`)}}},200)},"showPopover"),v=n(()=>{},"cancelHidePopover"),p=n(()=>{u&&(clearTimeout(u),u=null),r=setTimeout(()=>{a.value&&a.value.hide()},100)},"hidePopover");return o({showPopover:m,hidePopover:p,togglePopover:n(C=>{a.value&&a.value.toggle(C)},"togglePopover")}),(C,g)=>(d(),$(oe,null,[c("div",{ref_key:"positionRef",ref:i,class:"absolute bottom-0 left-1/2 -translate-x-1/2"},null,512),O(h(Ze),{ref_key:"popoverRef",ref:a,"append-to":"body",pt:{root:{class:"workflow-popover-fade fit-content","data-popover-id":h(f)}},onMouseenter:v,onMouseleave:p},{default:A(()=>[c("div",Ab,[h(s)&&!h(l)?(d(),$("div",Lb,[c("img",{src:h(s),class:"block h-[200px] rounded-lg object-cover p-2",style:ye({width:`${Rb}px`})},null,12,Eb)])):E("",!0),c("div",Vb,[c("span",Ob,V(C.workflowFilename),1)])])]),_:1},8,["pt"])],64))}}),zb=Le(Wb,[["__scopeId","data-v-4c13cb50"]]),Bb={class:"workflow-label inline-block max-w-[150px] truncate text-sm"},Fb={class:"relative"},Ub={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"},Gb=H({__name:"WorkflowTab",props:{workflowOption:{}},setup(e){const o=e,{t}=fe(),s=lt(),l=Re(),a=re(),i=L(null),r=L(null),u=gr(),f=y(()=>a.get("Comfy.Workflow.AutoSave")),m=y(()=>a.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),p=y(()=>l.activeWorkflow?.key===o.workflowOption.workflow.key),w=y(()=>u.getThumbnail(o.workflowOption.workflow.key)),C=n(x=>{r.value?.showPopover(x)},"handleMouseEnter"),g=n(()=>{r.value?.hidePopover()},"handleMouseLeave"),b=n(x=>{r.value?.togglePopover(x)},"handleClick"),k=n(async x=>{for(const S of x)if(!await tt().closeWorkflow(S.workflow,{warnIfUnsaved:!s.shiftDown,hint:t("sideToolbar.workflowTab.dirtyCloseHint")}))break},"closeWorkflows"),N=n(async x=>{await k([x])},"onCloseWorkflow"),T=n(()=>i.value,"tabGetter");return hr(T,{getInitialData:n(()=>({workflowKey:o.workflowOption.workflow.key}),"getInitialData")}),Ja(T,{getData:n(()=>({workflowKey:o.workflowOption.workflow.key}),"getData"),onDrop:n(x=>{const S=l.openWorkflows.findIndex(_=>_.key===x.source.data.workflowKey),I=l.openWorkflows.findIndex(_=>_.key===x.location.current.dropTargets[0]?.data.workflowKey);S!==I&&l.reorderWorkflows(S,I)},"onDrop")}),vt(()=>{r.value?.hidePopover()}),(x,S)=>(d(),$(oe,null,[c("div",It({ref_key:"workflowTabRef",ref:i,class:"workflow-tab group flex gap-2 p-2"},x.$attrs,{onMouseenter:C,onMouseleave:g,onClick:b}),[c("span",Bb,V(x.workflowOption.workflow.filename),1),c("div",Fb,[v.value?(d(),$("span",Ub,"•")):E("",!0),O(J,{class:"close-button invisible w-auto p-0",variant:"muted-textonly",size:"icon-sm","aria-label":h(t)("g.close"),onClick:S[0]||(S[0]=Ce(I=>N(x.workflowOption),["stop"]))},{default:A(()=>S[1]||(S[1]=[c("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])],16),O(zb,{ref_key:"popoverRef",ref:r,"workflow-filename":x.workflowOption.workflow.filename,"thumbnail-url":w.value,"is-active-tab":p.value},null,8,["workflow-filename","thumbnail-url","is-active-tab"])],64))}}),jb=H({__name:"WorkflowOverflowMenu",props:{workflows:{},activeWorkflow:{}},setup(e){const o=e,t=L(null),s=tt(),l=y(()=>o.workflows.map(a=>({label:a.filename,icon:o.activeWorkflow?.key===a.key?"pi pi-check":void 0,command:n(()=>{s.openWorkflow(a)},"command")})));return(a,i)=>{const r=Ne("tooltip");return d(),$("div",null,[ce((d(),W(J,{class:"rounded-none h-full w-auto aspect-square",variant:"muted-textonly",size:"icon","aria-label":a.$t("g.moreWorkflows"),onClick:i[0]||(i[0]=u=>t.value?.toggle(u))},{default:A(()=>i[1]||(i[1]=[c("i",{class:"pi pi-ellipsis-h"},null,-1)])),_:1},8,["aria-label"])),[[r,{value:a.$t("g.moreWorkflows"),showDelay:300}]]),O(h(Ma),{ref_key:"menu",ref:t,model:l.value,popup:!0,class:"max-h-[40vh] overflow-auto"},null,8,["model"])])}}}),Hb={key:3,class:"window-actions-spacer app-drag shrink-0"},qb=H({__name:"WorkflowTabs",props:{class:{}},setup(e){const o=e,{t}=fe(),s=lt(),l=Re(),a=yr(),i=tt(),r=L(),u=L(),f=L(null),m=L(!1),v=L(!1),p=L(!1),w=qe(),C=n(F=>({value:F.path,workflow:F}),"workflowToOption"),g=y(()=>l.openWorkflows.map(C)),b=y(()=>l.activeWorkflow?C(l.activeWorkflow):null),k=n(async F=>{F&&b.value?.value!==F.value&&await i.openWorkflow(F.workflow)},"onWorkflowChange"),N=n(async F=>{for(const z of F)if(!await i.closeWorkflow(z.workflow,{warnIfUnsaved:!s.shiftDown}))break},"closeWorkflows"),T=n(async F=>{await N([F])},"onCloseWorkflow"),x=n((F,z)=>{r.value=z,u.value.show(F)},"showContextMenu"),S=y(()=>{const F=r.value;if(!F)return[];const z=g.value.findIndex(G=>G.workflow===F.workflow);return[{label:t("tabMenu.duplicateTab"),command:n(async()=>{await i.duplicateWorkflow(F.workflow)},"command")},{separator:!0},{label:t("tabMenu.closeTab"),command:n(()=>T(F),"command")},{label:t("tabMenu.closeTabsToLeft"),command:n(()=>N(g.value.slice(0,z)),"command"),disabled:z<=0},{label:t("tabMenu.closeTabsToRight"),command:n(()=>N(g.value.slice(z+1)),"command"),disabled:z===g.value.length-1},{label:t("tabMenu.closeOtherTabs"),command:n(()=>N([...g.value.slice(z+1),...g.value.slice(0,z)]),"command"),disabled:g.value.length<=1},{label:a.isBookmarked(F.workflow.path)?t("tabMenu.removeFromBookmarks"):t("tabMenu.addToBookmarks"),command:n(()=>a.toggleBookmarked(F.workflow.path),"command"),disabled:F.workflow.isTemporary}]}),I=Se(),_=n(F=>{const z=F.currentTarget,G=F.deltaX||F.deltaY;z.scroll({left:z.scrollLeft+G})},"handleWheel"),M=y(()=>f.value?.querySelector(".p-scrollpanel-content")??null),P=n(F=>{const z=M.value;z&&z.scrollBy({left:F*20})},"scroll"),B=n(async(F={})=>{if(!b.value)return;F.waitForDom!==!1&&await Be();const z=f.value;if(!z)return;const G=z.querySelector(".p-togglebutton-checked");G&&G.scrollIntoView({block:"nearest",inline:"nearest"})},"ensureActiveTabVisible");se(()=>l.activeWorkflow,()=>{B()},{immediate:!0});let j=null,U=null,R=null;return se(M,(F,z,G)=>{if(U?.(),R?.(),j?.dispose(),!F)return;const q=xa(F);U=se([()=>q.arrivedState.left,()=>q.arrivedState.right],([Q,te])=>{v.value=!Q,p.value=!te},{immediate:!0}),j=ul(F),R=se(j.isOverflowing,Q=>{m.value=Q,Q&&Be(()=>{q.measure(),B({waitForDom:!1})})},{immediate:!0}),G(()=>{U?.(),R?.(),j?.dispose()})},{immediate:!0}),va(()=>{j?.disposed.value||j?.checkOverflow()}),(F,z)=>{const G=Ne("tooltip");return d(),$("div",{ref_key:"containerRef",ref:f,class:K(["workflow-tabs-container flex h-full max-w-full flex-auto flex-row overflow-hidden",{"workflow-tabs-container-desktop":h(w)}])},[m.value?(d(),W(J,{key:0,variant:"muted-textonly",size:"icon",class:"overflow-arrow overflow-arrow-left h-full w-auto aspect-square","aria-label":F.$t("g.scrollLeft"),disabled:!v.value,onMousedown:z[0]||(z[0]=q=>h(Dn)(q,()=>P(-1)))},{default:A(()=>z[3]||(z[3]=[c("i",{class:"icon-[lucide--chevron-left] size-full"},null,-1)])),_:1},8,["aria-label","disabled"])):E("",!0),O(h(ci),{class:"no-drag overflow-hidden","pt:content":{class:"p-0 w-full flex",onwheel:_},"pt:bar-x":"h-1"},{default:A(()=>[O(h(Pa),{class:K(["workflow-tabs bg-transparent",o.class]),"model-value":b.value,options:g.value,"option-label":"label","data-key":"value","onUpdate:modelValue":k},{option:A(({option:q})=>[O(Gb,{"workflow-option":q,onContextmenu:n(Q=>x(Q,q),"onContextmenu"),onMouseup:Ce(Q=>T(q),["middle"])},null,8,["workflow-option","onContextmenu","onMouseup"])]),_:1},8,["class","model-value","options"])]),_:1},8,["pt:content"]),m.value?(d(),W(J,{key:1,variant:"muted-textonly",size:"icon",class:"overflow-arrow overflow-arrow-right h-full w-auto aspect-square","aria-label":F.$t("g.scrollRight"),disabled:!p.value,onMousedown:z[1]||(z[1]=q=>h(Dn)(q,()=>P(1)))},{default:A(()=>z[4]||(z[4]=[c("i",{class:"icon-[lucide--chevron-right] size-full"},null,-1)])),_:1},8,["aria-label","disabled"])):E("",!0),m.value?(d(),W(jb,{key:2,workflows:h(l).openWorkflows,"active-workflow":h(l).activeWorkflow},null,8,["workflows","active-workflow"])):E("",!0),ce((d(),W(J,{class:"new-blank-workflow-button no-drag shrink-0 rounded-none h-full w-auto aspect-square",variant:"muted-textonly",size:"icon","aria-label":F.$t("sideToolbar.newBlankWorkflow"),onClick:z[2]||(z[2]=()=>h(I).execute("Comfy.NewBlankWorkflow"))},{default:A(()=>z[5]||(z[5]=[c("i",{class:"pi pi-plus"},null,-1)])),_:1},8,["aria-label"])),[[G,{value:F.$t("sideToolbar.newBlankWorkflow"),showDelay:300}]]),O(h(Da),{ref_key:"menu",ref:u,model:S.value},null,8,["model"]),h(w)?(d(),$("div",Hb)):E("",!0)],2)}}}),Cl=Le(qb,[["__scopeId","data-v-3fb85a76"]]);function Kb(){const e=L();function o(s){s?.graph&&(t(),e.value=De.onChange(l=>{for(const a of l.nodeIds){const i=De.getNodeLayoutRef(a).value;if(!i)continue;const r=s.graph?.getNodeById(parseInt(a));r&&((r.pos[0]!==i.position.x||r.pos[1]!==i.position.y)&&(r.pos[0]=i.position.x,r.pos[1]=i.position.y),(r.size[0]!==i.size.width||r.size[1]!==i.size.height)&&r.setSize([i.size.width,i.size.height]))}s.setDirty(!0,!0)}))}n(o,"startSync");function t(){e.value?.(),e.value=void 0}return n(t,"stopSync"),vt(t),{startSync:o,stopSync:t}}n(Kb,"useLayoutSync");function Qb(){const e=ge(),o=sn(),{shouldRenderVueNodes:t}=jo(),s=Xe(null),{startSync:l}=Kb(),a=n(()=>{const f=Y.canvas?.graph;if(!f||s.value)return;const m=yg(f);s.value=m;const v=f._nodes.map(p=>({id:p.id.toString(),pos:[p.pos[0],p.pos[1]],size:[p.size[0],br(p.size[1])]}));De.initializeFromLiteGraph(v);for(const p of f.reroutes.values()){const[w,C]=p.pos,g=p.parentId??void 0,b=Array.from(p.linkIds);o.createReroute(p.id,{x:w,y:C},g,b)}for(const p of f._links.values())o.createLink(p.id,p.origin_id,p.origin_slot,p.target_id,p.target_slot);l(e.canvas)},"initializeNodeManager"),i=n(()=>{if(s.value){try{s.value.cleanup()}catch{}s.value=null}},"disposeNodeManagerAndSyncs");return se(()=>t.value&&!!Y.canvas?.graph,f=>{f&&(a(),Ms(Y.canvas?.graph?.extra.workflowRendererVersion))},{immediate:!0}),xt(()=>!t.value,()=>{Ms(Y.canvas?.graph?.extra.workflowRendererVersion),i(),Y.canvas?.setDirty(!0,!0)}),se(()=>t.value,(f,m)=>{f!==m&&De.clearAllSlotLayouts()},{immediate:!0,flush:"sync"}),{nodeManager:s,initializeNodeManager:a,disposeNodeManagerAndSyncs:i,setupEmptyGraphListener:n(()=>{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&&a(),m&&m.call(this,v)}},"setupEmptyGraphListener"),cleanup:n(()=>{s.value&&(s.value.cleanup(),s.value=null)},"cleanup")}}n(Qb,"useVueNodeLifecycleIndividual");const fs=tn(Qb),Yb={minimumFractionDigits:0,maximumFractionDigits:0},qo=n(e=>wr({usd:e,numberOptions:Yb}),"formatCreditsValue"),ms=n(e=>e?"~":"","makePrefix"),vs=n(e=>e??"/Run","makeSuffix"),gs=n(e=>e?` ${e}`:"","appendNote"),D=n((e,{suffix:o,note:t,approximate:s}={})=>`${ms(s)}${qo(e)} credits${vs(o)}${gs(t)}`,"formatCreditsLabel"),me=n((e,o,{suffix:t,note:s,approximate:l}={})=>{const a=qo(e),i=qo(o),r=a===i?a:`${a}-${i}`;return`${ms(l)}${r} credits${vs(t)}${gs(s)}`},"formatCreditsRangeLabel"),Ue=n((e,{suffix:o,note:t,approximate:s,separator:l}={})=>{const i=e.map(r=>qo(r)).join(l??"/");return`${ms(s)}${i} credits${vs(o)}${gs(t)}`},"formatCreditsListLabel");function Jb(e,o,t=""){try{return e(o)}catch{return t}}n(Jb,"safePricingExecution");const hn=n(e=>{const o=e.widgets?.find(a=>a.name==="duration");if(!o)return D(.0715,{suffix:"/second"});const t=Number(o.value),l=.0715*(isNaN(t)?5:t);return D(l)},"calculateRunwayDurationPrice"),Io=n(e=>o=>{const t=o.widgets?.find(a=>a.name==="duration");if(!t)return D(e,{suffix:"/second"});const s=parseFloat(String(t.value));if(!Number.isFinite(s))return D(e,{suffix:"/second"});const l=e*s;return D(l)},"makeOmniProDurationCalculator"),Xb=n(e=>{const o=e.widgets?.find(s=>s.name==="mode");if(!o)return Ue([.07,.112],{suffix:"/second",note:"(std/pro)"});const t=String(o.value).toLowerCase();return t==="pro"?D(.112,{suffix:"/second"}):t==="std"?D(.07,{suffix:"/second"}):Ue([.07,.112],{suffix:"/second",note:"(std/pro)"})},"klingMotionControlPricingCalculator"),yn=n(e=>{const o=e.widgets?.find(r=>r.name==="duration_seconds"),t=e.widgets?.find(r=>r.name==="quality"),s=e.widgets?.find(r=>r.name==="motion_mode");if(!o||!t)return me(.45,1.2,{note:"(varies with duration, quality & motion mode)"});const l=String(o.value),a=String(t.value),i=String(s?.value);if(l.includes("5")){if(a.includes("1080p")||a.includes("720p")&&i?.includes("fast"))return D(1.2);if(a.includes("720p")&&i?.includes("normal"))return D(.6);if(a.includes("540p")&&i?.includes("fast"))return D(.9);if(a.includes("540p")&&i?.includes("normal"))return D(.45);if(a.includes("360p")&&i?.includes("fast"))return D(.9);if(a.includes("360p")&&i?.includes("normal"))return D(.45)}else if(l.includes("8")){if(a.includes("540p")&&i?.includes("normal"))return D(.9);if(a.includes("540p")&&i?.includes("fast"))return D(1.2);if(a.includes("360p")&&i?.includes("normal"))return D(.9);if(a.includes("360p")&&i?.includes("fast")||a.includes("1080p")&&i?.includes("normal")||a.includes("1080p")&&i?.includes("fast")||a.includes("720p")&&i?.includes("normal")||a.includes("720p")&&i?.includes("fast"))return D(1.2)}return D(.9)},"pixversePricingCalculator"),Mo=n(e=>{const o=e.widgets?.find(b=>b.name==="model"),t=e.widgets?.find(b=>b.name==="duration"),s=e.widgets?.find(b=>b.name==="resolution");if(!o||!t||!s)return"Token-based";const l=String(o.value).toLowerCase(),a=String(s.value).toLowerCase(),i=parseFloat(String(t.value)),r={"seedance-1-0-pro":{"480p":[.23,.24],"720p":[.51,.56],"1080p":[1.18,1.22]},"seedance-1-0-pro-fast":{"480p":[.09,.1],"720p":[.21,.23],"1080p":[.47,.49]},"seedance-1-0-lite":{"480p":[.17,.18],"720p":[.37,.41],"1080p":[.85,.88]}},u=l.includes("seedance-1-0-pro-fast")?"seedance-1-0-pro-fast":l.includes("seedance-1-0-pro")?"seedance-1-0-pro":l.includes("seedance-1-0-lite")?"seedance-1-0-lite":"",f=a.includes("1080")?"1080p":a.includes("720")?"720p":a.includes("480")?"480p":"",m=u&&f?r[u]?.[f]:void 0;if(!m)return"Token-based";const[v,p]=m,w=i/10,C=v*w,g=p*w;return C===g?D(C):me(C,g)},"byteDanceVideoPricingCalculator"),ta=n(e=>{const o=e.widgets?.find(p=>p.name==="model"),t=e.widgets?.find(p=>p.name==="duration"),s=e.widgets?.find(p=>p.name==="resolution"),l=me(.04,.24,{suffix:"/second"});if(!o||!t||!s)return l;const a=String(o.value).toLowerCase(),i=String(s.value).toLowerCase(),r=parseFloat(String(t.value)),f={"ltx-2 (pro)":{"1920x1080":.06,"2560x1440":.12,"3840x2160":.24},"ltx-2 (fast)":{"1920x1080":.04,"2560x1440":.08,"3840x2160":.16}}[a];if(!f)return l;const m=f[i];if(!m)return l;const v=m*r;return D(v)},"ltxvPricingCalculator"),oa=n(e=>{const o=e.widgets?.find(a=>a.name==="duration"),t=e.widgets?.find(a=>a.name==="generate_audio");if(!o||!t)return me(.35,1.4,{note:"(varies with duration & audio)"});const s=String(o.value),l=String(t.value).toLowerCase()==="true";return s==="5"?D(l?.7:.35):s==="10"?D(l?1.4:.7):me(.35,1.4,{note:"(varies with duration & audio)"})},"klingVideoWithAudioPricingCalculator"),xo={BASIC:new Set(["720x1280","1280x720"]),PRO:new Set(["1024x1792","1792x1024"])},Zb=new Set([...xo.BASIC,...xo.PRO]);function ew(e,o,t){const s=e?.toLowerCase()??"",l=t?.toLowerCase()??"";if(!o||Number.isNaN(o))return"Set duration (4s / 8s / 12s)";if(!l)return"Set size (720x1280, 1280x720, 1024x1792, 1792x1024)";if(!Zb.has(l))return"Invalid size. Must be 720x1280, 1280x720, 1024x1792, or 1792x1024.";if(!s.includes("sora-2-pro")){if(s.includes("sora-2")&&!xo.BASIC.has(l))return"sora-2 supports only 720x1280 or 1280x720";if(!s.includes("sora-2"))return"Unsupported model"}}n(ew,"validateSora2Selection");function tw(e,o){const t=e?.toLowerCase()??"",s=o?.toLowerCase()??"";return t.includes("sora-2-pro")?xo.PRO.has(s)?.5:.3:t.includes("sora-2")?.1:xo.PRO.has(s)?.5:.1}n(tw,"perSecForSora2");function ow(e,o){return D(Number((e*o).toFixed(2)))}n(ow,"formatRunPrice");const nw=n(e=>{const o=n(r=>String(e.widgets?.find(u=>u.name===r)?.value??""),"getWidgetValue"),t=o("model"),s=o("size"),l=Number(e.widgets?.find(r=>["duration","duration_s"].includes(r.name))?.value);if(!t||!s||!l)return"Set model, duration & size";const a=ew(t,l,s);if(a)return a;const i=tw(t,s);return ow(i,l)},"sora2PricingCalculator"),bn=n((e,o)=>{const t=n(T=>e.widgets?.find(x=>x.name===T),"getWidget"),s=n((T,x)=>{const S=t(T);return!S||S.value===void 0||S.value===null?x:String(S.value)},"getString"),l=n((T,x)=>{const S=t(T);if(!S||S.value===void 0||S.value===null)return x;const I=S.value;if(typeof I=="number")return I!==0;const _=String(I).toLowerCase();return _==="true"?!0:_==="false"?!1:x},"getBool"),a=s("model_version","").toLowerCase();if(a==="")return me(.1,.65,{note:"(varies with quad, style, texture & quality)"});const r=s("style","None").toLowerCase()!=="none",u=l("texture",!1),f=l("pbr",!1),m=l("quad",!1),v=s("texture_quality","standard").toLowerCase(),p=s("geometry_quality","standard").toLowerCase(),w=v==="detailed",C=p==="detailed",g=u||f;let b;a.includes("v1.4")||g?o==="text"?b=20:b=30:o==="text"?b=10:b=20;let k=b;r&&(k+=5),m&&(k+=5),w&&(k+=10),C&&(k+=20);const N=k*.01;return D(N)},"calculateTripo3DGenerationPrice"),na={FluxProCannyNode:{displayPrice:D(.05)},FluxProDepthNode:{displayPrice:D(.05)},FluxProExpandNode:{displayPrice:D(.05)},FluxProFillNode:{displayPrice:D(.05)},FluxProUltraImageNode:{displayPrice:D(.06)},FluxProKontextProNode:{displayPrice:D(.04)},FluxProKontextMaxNode:{displayPrice:D(.08)},Flux2ProImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(m=>m.name==="width"),t=e.widgets?.find(m=>m.name==="height"),s=Number(o?.value),l=Number(t?.value);if(!Number.isFinite(s)||!Number.isFinite(l)||s<=0||l<=0)return me(.03,.15);const a=e.inputs?.find(m=>m.name==="images"),i=typeof a?.link<"u"&&a.link!=null,r=1024*1024,u=Math.max(1,Math.floor((s*l+r-1)/r)),f=.03+.015*Math.max(u-1,0);if(i){const m=f+.015,v=f+.12;return me(m,v,{approximate:!0})}return D(f)},"displayPrice")},Flux2MaxImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(m=>m.name==="width"),t=e.widgets?.find(m=>m.name==="height"),s=Number(o?.value),l=Number(t?.value);if(!Number.isFinite(s)||!Number.isFinite(l)||s<=0||l<=0)return me(.07,.35);const a=e.inputs?.find(m=>m.name==="images"),i=typeof a?.link<"u"&&a.link!=null,r=1024*1024,u=Math.max(1,Math.floor((s*l+r-1)/r)),f=.07+.03*Math.max(u-1,0);if(i){const m=f+.03,v=f+.24;return me(m,v)}return D(f)},"displayPrice")},OpenAIVideoSora2:{displayPrice:nw},IdeogramV1:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="num_images"),t=e.widgets?.find(r=>r.name==="turbo");if(!o)return me(.03,.09,{suffix:" x num_images/Run"});const s=Number(o.value)||1,a=String(t?.value).toLowerCase()==="true"?.0286:.0858,i=Number((a*s).toFixed(2));return D(i)},"displayPrice")},IdeogramV2:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="num_images"),t=e.widgets?.find(r=>r.name==="turbo");if(!o)return me(.07,.11,{suffix:" x num_images/Run"});const s=Number(o.value)||1,a=String(t?.value).toLowerCase()==="true"?.0715:.1144,i=Number((a*s).toFixed(2));return D(i)},"displayPrice")},IdeogramV3:{displayPrice:n(e=>{const o=e.widgets?.find(f=>f.name==="rendering_speed"),t=e.widgets?.find(f=>f.name==="num_images"),s=e.inputs?.find(f=>f.name==="character_image"),l=typeof s?.link<"u"&&s.link!=null;if(!o)return me(.04,.11,{suffix:" x num_images/Run",note:"(varies with rendering speed & num_images)"});const a=Number(t?.value)||1;let i=.0858;const r=String(o.value);r.toLowerCase().includes("quality")?l?i=.286:i=.1287:r.toLowerCase().includes("default")?l?i=.2145:i=.0858:r.toLowerCase().includes("turbo")&&(l?i=.143:i=.0429);const u=Number((i*a).toFixed(2));return D(u)},"displayPrice")},KlingCameraControlI2VNode:{displayPrice:D(.49)},KlingCameraControlT2VNode:{displayPrice:D(.14)},KlingDualCharacterVideoEffectNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="mode"),t=e.widgets?.find(r=>r.name==="model_name"),s=e.widgets?.find(r=>r.name==="duration");if(!o||!t||!s)return me(.14,2.8,{note:"(varies with model, mode & duration)"});const l=String(o.value),a=String(s.value),i=String(t.value);return i.includes("v1-6")||i.includes("v1-5")?l.includes("pro")?a.includes("10")?D(.98):D(.49):a.includes("10")?D(.56):D(.28):i.includes("v1")?l.includes("pro")?a.includes("10")?D(.98):D(.49):a.includes("10")?D(.28):D(.14):D(.14)},"displayPrice")},KlingImage2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="mode"),t=e.widgets?.find(r=>r.name==="model_name"),s=e.widgets?.find(r=>r.name==="duration");if(!o){if(!t)return me(.14,2.8,{note:"(varies with model, mode & duration)"});const r=String(t.value);return r.includes("v2-1-master")||r.includes("v2-master")?D(1.4):r.includes("v1-6")||r.includes("v1-5")?D(.28):D(.14)}const l=String(o.value),a=String(s.value),i=String(t.value);return i.includes("v2-5-turbo")?a.includes("10")?D(.7):D(.35):i.includes("v2-1-master")||i.includes("v2-master")?a.includes("10")?D(2.8):D(1.4):i.includes("v2-1")||i.includes("v1-6")||i.includes("v1-5")?l.includes("pro")?a.includes("10")?D(.98):D(.49):a.includes("10")?D(.56):D(.28):i.includes("v1")?l.includes("pro")?a.includes("10")?D(.98):D(.49):a.includes("10")?D(.28):D(.14):D(.14)},"displayPrice")},KlingImageGenerationNode:{displayPrice:n(e=>{const t=e.inputs?.find(f=>f.name==="image")?.link?"image to image":"text to image",s=e.widgets?.find(f=>f.name==="model_name"),l=e.widgets?.find(f=>f.name==="n");if(!s)return me(.0035,.028,{suffix:" x n/Run",note:"(varies with modality & model)"});const a=String(s.value),i=Number(l?.value)||1;let r=.014;t.includes("text to image")?a.includes("kling-v1-5")||a.includes("kling-v2")?r=.014:a.includes("kling-v1")&&(r=.0035):t.includes("image to image")&&(a.includes("kling-v1-5")?r=.028:a.includes("kling-v1")&&(r=.0035));const u=r*i;return D(u)},"displayPrice")},KlingLipSyncAudioToVideoNode:{displayPrice:D(.1,{approximate:!0})},KlingLipSyncTextToVideoNode:{displayPrice:D(.1,{approximate:!0})},KlingSingleImageVideoEffectNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="effect_scene");if(!o)return me(.28,.49,{note:"(varies with effect scene)"});const t=String(o.value);return t.includes("fuzzyfuzzy")||t.includes("squish")?D(.28):t.includes("dizzydizzy")||t.includes("bloombloom")?D(.49):(t.includes("expansion"),D(.28))},"displayPrice")},KlingStartEndFrameNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="mode");if(!o)return me(.14,2.8,{note:"(varies with model, mode & duration)"});const t=String(o.value);return t.includes("v2-5-turbo")?t.includes("10")?D(.7):D(.35):t.includes("v2-1")?t.includes("10s")?D(.98):D(.49):t.includes("v2-master")?t.includes("10s")?D(2.8):D(1.4):t.includes("v1-6")?t.includes("pro")?t.includes("10s")?D(.98):D(.49):t.includes("10s")?D(.56):D(.28):t.includes("v1")?t.includes("pro")?t.includes("10s")?D(.98):D(.49):t.includes("10s")?D(.28):D(.14):D(.14)},"displayPrice")},KlingTextToVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="mode");if(!o)return me(.14,2.8,{note:"(varies with model, mode & duration)"});const t=String(o.value);return t.includes("v2-5-turbo")?t.includes("10")?D(.7):D(.35):t.includes("v2-1-master")||t.includes("v2-master")?t.includes("10s")?D(2.8):D(1.4):t.includes("v1-6")?t.includes("pro")?t.includes("10s")?D(.98):D(.49):t.includes("10s")?D(.56):D(.28):t.includes("v1")?t.includes("pro")?t.includes("10s")?D(.98):D(.49):t.includes("10s")?D(.28):D(.14):D(.14)},"displayPrice")},KlingVideoExtendNode:{displayPrice:D(.28)},KlingVirtualTryOnNode:{displayPrice:D(.07)},KlingOmniProTextToVideoNode:{displayPrice:Io(.112)},KlingOmniProFirstLastFrameNode:{displayPrice:Io(.112)},KlingOmniProImageToVideoNode:{displayPrice:Io(.112)},KlingOmniProVideoToVideoNode:{displayPrice:Io(.168)},KlingMotionControl:{displayPrice:Xb},KlingOmniProEditVideoNode:{displayPrice:D(.168,{suffix:"/second"})},KlingOmniProImageNode:{displayPrice:D(.028)},KlingTextToVideoWithAudio:{displayPrice:oa},KlingImageToVideoWithAudio:{displayPrice:oa},LumaImageToVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="model"),t=e.widgets?.find(r=>r.name==="resolution"),s=e.widgets?.find(r=>r.name==="duration");if(!o||!t||!s)return me(.2,16.4,{note:"(varies with model, resolution & duration)"});const l=String(o.value),a=String(t.value).toLowerCase(),i=String(s.value);if(l.includes("ray-flash-2")){if(i.includes("5s")){if(a.includes("4k"))return D(3.13);if(a.includes("1080p"))return D(.79);if(a.includes("720p"))return D(.34);if(a.includes("540p"))return D(.2)}else if(i.includes("9s")){if(a.includes("4k"))return D(5.65);if(a.includes("1080p"))return D(1.42);if(a.includes("720p"))return D(.61);if(a.includes("540p"))return D(.36)}}else if(l.includes("ray-2")){if(i.includes("5s")){if(a.includes("4k"))return D(9.11);if(a.includes("1080p"))return D(2.27);if(a.includes("720p"))return D(1.02);if(a.includes("540p"))return D(.57)}else if(i.includes("9s")){if(a.includes("4k"))return D(16.4);if(a.includes("1080p"))return D(4.1);if(a.includes("720p"))return D(1.83);if(a.includes("540p"))return D(1.03)}}else if(l.includes("ray-1-6"))return D(.5);return D(.79)},"displayPrice")},LumaVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="model"),t=e.widgets?.find(r=>r.name==="resolution"),s=e.widgets?.find(r=>r.name==="duration");if(!o||!t||!s)return me(.2,16.4,{note:"(varies with model, resolution & duration)"});const l=String(o.value),a=String(t.value).toLowerCase(),i=String(s.value);if(l.includes("ray-flash-2")){if(i.includes("5s")){if(a.includes("4k"))return D(3.13);if(a.includes("1080p"))return D(.79);if(a.includes("720p"))return D(.34);if(a.includes("540p"))return D(.2)}else if(i.includes("9s")){if(a.includes("4k"))return D(5.65);if(a.includes("1080p"))return D(1.42);if(a.includes("720p"))return D(.61);if(a.includes("540p"))return D(.36)}}else if(l.includes("ray-2")){if(i.includes("5s")){if(a.includes("4k"))return D(9.11);if(a.includes("1080p"))return D(2.27);if(a.includes("720p"))return D(1.02);if(a.includes("540p"))return D(.57)}else if(i.includes("9s")){if(a.includes("4k"))return D(16.4);if(a.includes("1080p"))return D(4.1);if(a.includes("720p"))return D(1.83);if(a.includes("540p"))return D(1.03)}}else if(l.includes("ray-1-6"))return D(.5);return D(.79)},"displayPrice")},MinimaxImageToVideoNode:{displayPrice:D(.43)},MinimaxTextToVideoNode:{displayPrice:D(.43)},MinimaxHailuoVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="resolution"),t=e.widgets?.find(a=>a.name==="duration");if(!o||!t)return me(.28,.56,{note:"(varies with resolution & duration)"});const s=String(o.value),l=String(t.value);if(s.includes("768P")){if(l.includes("6"))return D(.28);if(l.includes("10"))return D(.56)}else if(s.includes("1080P")&&l.includes("6"))return D(.49);return D(.43)},"displayPrice")},OpenAIDalle2:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="size"),t=e.widgets?.find(r=>r.name==="n");if(!o)return me(.016,.02,{suffix:" x n/Run",note:"(varies with size & n)"});const s=String(o.value),l=Number(t?.value)||1;let a=.02;s.includes("1024x1024")?a=.02:s.includes("512x512")?a=.018:s.includes("256x256")&&(a=.016);const i=Number((a*l).toFixed(3));return D(i)},"displayPrice")},OpenAIDalle3:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="size"),t=e.widgets?.find(a=>a.name==="quality");if(!o||!t)return me(.04,.12,{note:"(varies with size & quality)"});const s=String(o.value),l=String(t.value);return s.includes("1024x1024")?l.includes("hd")?D(.08):D(.04):s.includes("1792x1024")||s.includes("1024x1792")?l.includes("hd")?D(.12):D(.08):D(.04)},"displayPrice")},OpenAIGPTImage1:{displayPrice:n(e=>{const o=e.widgets?.find(i=>i.name==="quality"),t=e.widgets?.find(i=>i.name==="n");if(!o)return me(.011,.3,{suffix:" x n/Run",note:"(varies with quality & n)"});const s=String(o.value),l=Number(t?.value)||1;let a=[.046,.07];return s.includes("high")?a=[.167,.3]:s.includes("medium")?a=[.046,.07]:s.includes("low")&&(a=[.011,.02]),l===1?me(a[0],a[1]):me(a[0],a[1],{suffix:` x ${l}/Run`})},"displayPrice")},PixverseImageToVideoNode:{displayPrice:yn},PixverseTextToVideoNode:{displayPrice:yn},PixverseTransitionVideoNode:{displayPrice:yn},RecraftCreativeUpscaleNode:{displayPrice:D(.25)},RecraftCrispUpscaleNode:{displayPrice:D(.004)},RecraftGenerateColorFromImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return D(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return D(s)},"displayPrice")},RecraftGenerateImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return D(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return D(s)},"displayPrice")},RecraftGenerateVectorImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return D(.08,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.08*t).toFixed(2));return D(s)},"displayPrice")},RecraftImageInpaintingNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return D(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return D(s)},"displayPrice")},RecraftImageToImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return D(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return D(s)},"displayPrice")},RecraftRemoveBackgroundNode:{displayPrice:D(.01)},RecraftReplaceBackgroundNode:{displayPrice:D(.04)},RecraftTextToImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return D(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return D(s)},"displayPrice")},RecraftTextToVectorNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return D(.08,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.08*t).toFixed(2));return D(s)},"displayPrice")},RecraftVectorizeImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return D(.01,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.01*t).toFixed(2));return D(s)},"displayPrice")},StabilityStableImageSD_3_5Node:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return me(.035,.065,{note:"(varies with model)"});const t=String(o.value).toLowerCase();return t.includes("large")?D(.065):(t.includes("medium"),D(.035))},"displayPrice")},StabilityStableImageUltraNode:{displayPrice:D(.08)},StabilityUpscaleConservativeNode:{displayPrice:D(.25)},StabilityUpscaleCreativeNode:{displayPrice:D(.25)},StabilityUpscaleFastNode:{displayPrice:D(.01)},StabilityTextToAudio:{displayPrice:D(.2)},StabilityAudioToAudio:{displayPrice:D(.2)},StabilityAudioInpaint:{displayPrice:D(.2)},VeoVideoGenerationNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="duration_seconds");if(!o)return me(2.5,5,{note:"(varies with duration)"});const t=.5*Number(o.value);return D(t)},"displayPrice")},Veo3VideoGenerationNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="model"),t=e.widgets?.find(a=>a.name==="generate_audio");if(!o||!t)return me(.8,3.2,{note:"(varies with model & audio generation)"});const s=String(o.value),l=String(t.value).toLowerCase()==="true";return s.includes("veo-3.0-fast-generate-001")||s.includes("veo-3.1-fast-generate")?D(l?1.2:.8):s.includes("veo-3.0-generate-001")||s.includes("veo-3.1-generate")?D(l?3.2:1.6):me(.8,3.2)},"displayPrice")},Veo3FirstLastFrameNode:{displayPrice:n(e=>{const o=e.widgets?.find(f=>f.name==="model"),t=e.widgets?.find(f=>f.name==="generate_audio"),s=e.widgets?.find(f=>f.name==="duration");if(!o||!t||!s)return me(.4,3.2,{note:"(varies with model & audio generation)"});const l=String(o.value),a=String(t.value).toLowerCase()==="true",i=parseFloat(String(s.value));let r=null;if(l.includes("veo-3.1-fast-generate")?r=a?.15:.1:l.includes("veo-3.1-generate")&&(r=a?.4:.2),r===null)return me(.4,3.2);const u=r*i;return D(u)},"displayPrice")},LumaImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="model"),t=e.widgets?.find(l=>l.name==="aspect_ratio");if(!o||!t)return me(.0064,.026,{note:"(varies with model & aspect ratio)"});const s=String(o.value);return s.includes("photon-flash-1")?D(.0027):s.includes("photon-1")?D(.0104):D(.0246)},"displayPrice")},LumaImageModifyNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return me(.0027,.0104,{note:"(varies with model)"});const t=String(o.value);return t.includes("photon-flash-1")?D(.0027):t.includes("photon-1")?D(.0104):D(.0246)},"displayPrice")},MoonvalleyTxt2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return D(1.5);const t=String(o.value);return D(t==="5s"?1.5:t==="10s"?3:1.5)},"displayPrice")},MoonvalleyImg2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return D(1.5);const t=String(o.value);return D(t==="5s"?1.5:t==="10s"?3:1.5)},"displayPrice")},MoonvalleyVideo2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return D(2.25);const t=String(o.value);return D(t==="5s"?2.25:t==="10s"?4:2.25)},"displayPrice")},RunwayTextToImageNode:{displayPrice:D(.11)},RunwayImageToVideoNodeGen3a:{displayPrice:hn},RunwayImageToVideoNodeGen4:{displayPrice:hn},RunwayFirstLastFrameNode:{displayPrice:hn},Rodin3D_Regular:{displayPrice:D(.4)},Rodin3D_Detail:{displayPrice:D(.4)},Rodin3D_Smooth:{displayPrice:D(.4)},Rodin3D_Sketch:{displayPrice:D(.4)},TripoTextToModelNode:{displayPrice:n(e=>bn(e,"text"),"displayPrice")},TripoImageToModelNode:{displayPrice:n(e=>bn(e,"image"),"displayPrice")},TripoMultiviewToModelNode:{displayPrice:n(e=>bn(e,"multiview"),"displayPrice")},TripoTextureNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="texture_quality");return o?String(o.value).includes("detailed")?D(.2):D(.1):me(.1,.2,{note:"(varies with quality)"})},"displayPrice")},TripoRigNode:{displayPrice:"$0.25/Run"},TripoConversionNode:{displayPrice:n(e=>{const o=n(C=>e.widgets?.find(g=>g.name===C)?.value,"getWidgetValue"),t=n((C,g)=>{const b=o(C);if(b==null||b==="")return g;if(typeof b=="number")return Number.isFinite(b)?b:g;const k=Number(b);return Number.isFinite(k)?k:g},"getNumber"),s=n((C,g)=>{const b=o(C);if(b==null)return g;if(typeof b=="number")return b!==0;const k=String(b).toLowerCase();return k==="true"?!0:k==="false"?!1:g},"getBool");let l=!1;return s("quad",!1)&&(l=!0),s("force_symmetry",!1)&&(l=!0),s("flatten_bottom",!1)&&(l=!0),s("pivot_to_center_bottom",!1)&&(l=!0),s("with_animation",!1)&&(l=!0),s("pack_uv",!1)&&(l=!0),s("bake",!1)&&(l=!0),s("export_vertex_colors",!1)&&(l=!0),s("animate_in_place",!1)&&(l=!0),t("face_limit",-1)!==-1&&(l=!0),t("texture_size",4096)!==4096&&(l=!0),t("flatten_bottom_threshold",0)!==0&&(l=!0),t("scale_factor",1)!==1&&(l=!0),String(o("texture_format")??"JPEG").toUpperCase()!=="JPEG"&&(l=!0),String(o("part_names")??"").trim().length>0&&(l=!0),String(o("fbx_preset")??"blender").toLowerCase()!=="blender"&&(l=!0),String(o("export_orientation")??"default").toLowerCase()!=="default"&&(l=!0),D((l?10:5)*.01)},"displayPrice")},TripoRetargetNode:{displayPrice:D(.1)},TripoRefineNode:{displayPrice:D(.3)},GeminiNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return"Token-based";const t=String(o.value);return t.includes("gemini-2.5-flash-preview-04-17")?Ue([3e-4,.0025],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gemini-2.5-flash")?Ue([3e-4,.0025],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gemini-2.5-pro-preview-05-06")?Ue([.00125,.01],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gemini-2.5-pro")?Ue([.00125,.01],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gemini-3-pro-preview")?Ue([.002,.012],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):"Token-based"},"displayPrice")},GeminiImageNode:{displayPrice:D(.039,{suffix:"/Image (1K)",approximate:!0})},GeminiImage2Node:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="resolution");if(!o)return"Token-based";const t=String(o.value);return t.includes("1K")?D(.134,{suffix:"/Image",approximate:!0}):t.includes("2K")?D(.134,{suffix:"/Image",approximate:!0}):t.includes("4K")?D(.24,{suffix:"/Image",approximate:!0}):"Token-based"},"displayPrice")},OpenAIChatNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return"Token-based";const t=String(o.value);return t.includes("o4-mini")?Ue([.0011,.0044],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("o1-pro")?Ue([.15,.6],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("o1")?Ue([.015,.06],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("o3-mini")?Ue([.0011,.0044],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("o3")?Ue([.01,.04],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-4o")?Ue([.0025,.01],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-4.1-nano")?Ue([1e-4,4e-4],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-4.1-mini")?Ue([4e-4,.0016],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-4.1")?Ue([.002,.008],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-5-nano")?Ue([5e-5,4e-4],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-5-mini")?Ue([25e-5,.002],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-5")?Ue([.00125,.01],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):"Token-based"},"displayPrice")},ViduTextToVideoNode:{displayPrice:D(.4)},ViduImageToVideoNode:{displayPrice:D(.4)},ViduReferenceVideoNode:{displayPrice:D(.4)},ViduStartEndToVideoNode:{displayPrice:D(.4)},ByteDanceImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");return o&&String(o.value).includes("seedream-3-0-t2i")?D(.03):"Token-based"},"displayPrice")},ByteDanceImageEditNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");return o&&String(o.value).includes("seededit-3-0-i2i")?D(.03):"Token-based"},"displayPrice")},ByteDanceSeedreamNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="model"),t=String(o?.value??"").toLowerCase();let s=.03;return t.includes("seedream-4-5-251128")?s=.04:t.includes("seedream-4-0-250828")&&(s=.03),D(s,{suffix:" x images/Run",approximate:!0})},"displayPrice")},ByteDanceTextToVideoNode:{displayPrice:Mo},ByteDanceImageToVideoNode:{displayPrice:Mo},ByteDanceFirstLastFrameNode:{displayPrice:Mo},ByteDanceImageReferenceNode:{displayPrice:Mo},WanTextToVideoApi:{displayPrice:n(e=>{const o=e.widgets?.find(f=>f.name==="duration"),t=e.widgets?.find(f=>f.name==="size");if(!o||!t)return me(.05,.15,{suffix:"/second"});const s=parseFloat(String(o.value)),l=String(t.value).toLowerCase(),a=l.includes("1080")?"1080p":l.includes("720")?"720p":l.includes("480")?"480p":l.match(/^\s*(\d{3,4}p)/)?.[1]??"",r={"480p":.05,"720p":.1,"1080p":.15}[a];if(isNaN(s)||!r)return me(.05,.15,{suffix:"/second"});const u=Number((r*s).toFixed(2));return D(u)},"displayPrice")},WanImageToVideoApi:{displayPrice:n(e=>{const o=e.widgets?.find(u=>u.name==="duration"),t=e.widgets?.find(u=>u.name==="resolution");if(!o||!t)return me(.05,.15,{suffix:"/second"});const s=parseFloat(String(o.value)),l=String(t.value).trim().toLowerCase(),i={"480p":.05,"720p":.1,"1080p":.15}[l];if(isNaN(s)||!i)return me(.05,.15,{suffix:"/second"});const r=Number((i*s).toFixed(2));return D(r)},"displayPrice")},WanTextToImageApi:{displayPrice:D(.03)},WanImageToImageApi:{displayPrice:D(.03)},LtxvApiTextToVideo:{displayPrice:ta},LtxvApiImageToVideo:{displayPrice:ta},WanReferenceVideoApi:{displayPrice:n(e=>{const o=e.widgets?.find(v=>v.name==="duration"),t=e.widgets?.find(v=>v.name==="size");if(!o||!t)return me(.7,1.5,{note:"(varies with size & duration)"});const s=parseFloat(String(o.value)),a=String(t.value).toLowerCase().includes("1080p")?.15:.1,i=2*a,r=5*a,u=s*a,f=i+u,m=r+u;return me(f,m)},"displayPrice")},Vidu2TextToVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(u=>u.name==="duration"),t=e.widgets?.find(u=>u.name==="resolution");if(!o||!t)return me(.075,.6,{note:"(varies with duration & resolution)"});const s=parseFloat(String(o.value)),l=String(t.value).toLowerCase();let a,i;if(l.includes("1080")?(a=.1,i=.05):(a=.075,i=.025),!Number.isFinite(s)||s<=0)return me(.075,.6,{note:"(varies with duration & resolution)"});const r=a+i*(s-1);return D(r)},"displayPrice")},Vidu2ImageToVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(v=>v.name==="model"),t=e.widgets?.find(v=>v.name==="duration"),s=e.widgets?.find(v=>v.name==="resolution");if(!o||!t||!s)return me(.04,1,{note:"(varies with model, duration & resolution)"});const l=String(o.value).toLowerCase(),a=parseFloat(String(t.value)),r=String(s.value).toLowerCase().includes("1080");let u,f;if(l.includes("q2-pro-fast"))u=r?.08:.04,f=r?.02:.01;else if(l.includes("q2-pro"))u=r?.275:.075,f=r?.075:.05;else if(l.includes("q2-turbo"))if(r)u=.175,f=.05;else{if(a<=1)return D(.04);if(a<=2)return D(.05);const v=.05+.05*(a-2);return D(v)}else return me(.04,1,{note:"(varies with model, duration & resolution)"});if(!Number.isFinite(a)||a<=0)return me(.04,1,{note:"(varies with model, duration & resolution)"});const m=u+f*(a-1);return D(m)},"displayPrice")},Vidu2ReferenceVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(p=>p.name==="duration"),t=e.widgets?.find(p=>p.name==="resolution"),s=e.widgets?.find(p=>p.name==="audio");if(!o)return me(.125,1.5,{note:"(varies with duration, resolution & audio)"});const l=parseFloat(String(o.value)),i=String(t?.value??"").toLowerCase().includes("1080"),r=s?.value,u=r!=null&&String(r).toLowerCase()!=="false"&&String(r).toLowerCase()!=="none"&&r!=="";let f,m;i?(f=.375,m=.05):(f=.125,m=.025);let v=f;return Number.isFinite(l)&&l>0&&(v=f+m*(l-1)),u&&(v+=.075),D(v)},"displayPrice")},Vidu2StartEndToVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(v=>v.name==="model"),t=e.widgets?.find(v=>v.name==="duration"),s=e.widgets?.find(v=>v.name==="resolution");if(!o||!t||!s)return me(.04,1,{note:"(varies with model, duration & resolution)"});const l=String(o.value).toLowerCase(),a=parseFloat(String(t.value)),r=String(s.value).toLowerCase().includes("1080");let u,f;if(l.includes("q2-pro-fast"))u=r?.08:.04,f=r?.02:.01;else if(l.includes("q2-pro"))u=r?.275:.075,f=r?.075:.05;else if(l.includes("q2-turbo"))if(r)u=.175,f=.05;else{if(!Number.isFinite(a)||a<=1)return D(.04);if(a<=2)return D(.05);const v=.05+.05*(a-2);return D(v)}else return me(.04,1,{note:"(varies with model, duration & resolution)"});if(!Number.isFinite(a)||a<=0)return D(u);const m=u+f*(a-1);return D(m)},"displayPrice")}},sw=n(()=>({getNodeDisplayPrice:n(s=>{if(!s.constructor?.nodeData?.api_node)return"";const l=s.constructor.nodeData.name,a=na[l];return a?typeof a.displayPrice=="function"?Jb(a.displayPrice,s,""):a.displayPrice:""},"getNodeDisplayPrice"),getNodePricingConfig:n(s=>na[s.constructor.nodeData?.name??""],"getNodePricingConfig"),getRelevantWidgetNames:n(s=>({KlingTextToVideoNode:["mode","model_name","duration"],KlingImage2VideoNode:["mode","model_name","duration"],KlingImageGenerationNode:["modality","model_name","n"],KlingDualCharacterVideoEffectNode:["mode","model_name","duration"],KlingSingleImageVideoEffectNode:["effect_scene"],KlingStartEndFrameNode:["mode","model_name","duration"],KlingTextToVideoWithAudio:["duration","generate_audio"],KlingImageToVideoWithAudio:["duration","generate_audio"],KlingOmniProTextToVideoNode:["duration"],KlingOmniProFirstLastFrameNode:["duration"],KlingOmniProImageToVideoNode:["duration"],KlingOmniProVideoToVideoNode:["duration"],KlingMotionControl:["mode"],MinimaxHailuoVideoNode:["resolution","duration"],OpenAIDalle3:["size","quality"],OpenAIDalle2:["size","n"],OpenAIVideoSora2:["model","size","duration"],OpenAIGPTImage1:["quality","n"],IdeogramV1:["num_images","turbo"],IdeogramV2:["num_images","turbo"],IdeogramV3:["rendering_speed","num_images","character_image"],FluxProKontextProNode:[],FluxProKontextMaxNode:[],Flux2ProImageNode:["width","height","images"],Flux2MaxImageNode:["width","height","images"],VeoVideoGenerationNode:["duration_seconds"],Veo3VideoGenerationNode:["model","generate_audio"],Veo3FirstLastFrameNode:["model","generate_audio","duration"],LumaVideoNode:["model","resolution","duration"],LumaImageToVideoNode:["model","resolution","duration"],LumaImageNode:["model","aspect_ratio"],LumaImageModifyNode:["model","aspect_ratio"],PixverseTextToVideoNode:["duration_seconds","quality","motion_mode"],PixverseTransitionVideoNode:["duration_seconds","motion_mode","quality"],PixverseImageToVideoNode:["duration_seconds","quality","motion_mode"],StabilityStableImageSD_3_5Node:["model"],RecraftTextToImageNode:["n"],RecraftImageToImageNode:["n"],RecraftImageInpaintingNode:["n"],RecraftTextToVectorNode:["n"],RecraftVectorizeImageNode:["n"],RecraftGenerateColorFromImageNode:["n"],RecraftGenerateImageNode:["n"],RecraftGenerateVectorImageNode:["n"],MoonvalleyTxt2VideoNode:["length"],MoonvalleyImg2VideoNode:["length"],MoonvalleyVideo2VideoNode:["length"],RunwayImageToVideoNodeGen3a:["duration"],RunwayImageToVideoNodeGen4:["duration"],RunwayFirstLastFrameNode:["duration"],TripoTextToModelNode:["model_version","quad","style","texture","pbr","texture_quality","geometry_quality"],TripoImageToModelNode:["model_version","quad","style","texture","pbr","texture_quality","geometry_quality"],TripoMultiviewToModelNode:["model_version","quad","texture","pbr","texture_quality","geometry_quality"],TripoConversionNode:["quad","face_limit","texture_size","texture_format","force_symmetry","flatten_bottom","flatten_bottom_threshold","pivot_to_center_bottom","scale_factor","with_animation","pack_uv","bake","part_names","fbx_preset","export_vertex_colors","export_orientation","animate_in_place"],TripoTextureNode:["texture_quality"],GeminiNode:["model"],GeminiImage2Node:["resolution"],OpenAIChatNode:["model"],ByteDanceImageNode:["model"],ByteDanceImageEditNode:["model"],ByteDanceSeedreamNode:["model","sequential_image_generation","max_images"],ByteDanceTextToVideoNode:["model","duration","resolution"],ByteDanceImageToVideoNode:["model","duration","resolution"],ByteDanceFirstLastFrameNode:["model","duration","resolution"],ByteDanceImageReferenceNode:["model","duration","resolution"],WanTextToVideoApi:["duration","size"],WanImageToVideoApi:["duration","resolution"],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"),Ln=new Image;Ln.src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='oklch(83.01%25 0.163 83.16)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M15.536 11.293a1 1 0 0 0 0 1.414l2.376 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0zm-13.239 0a1 1 0 0 0 0 1.414l2.377 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414L6.088 8.916a1 1 0 0 0-1.414 0zm6.619 6.619a1 1 0 0 0 0 1.415l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.415l-2.377-2.376a1 1 0 0 0-1.414 0zm0-13.238a1 1 0 0 0 0 1.414l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z'/%3E%3C/svg%3E";const aw=n(()=>{function e(a){if(!a.isSubgraphNode())return;a.badges=a.badges.filter(r=>!t(r));const i=o(a.subgraph);i.length>1?a.badges.push(l("Partner Nodes x "+i.length)):a.badges.push(...i)}n(e,"updateSubgraphCredits");function o(a,i=new Set){if(i.has(a.id))return[];i.add(a.id);const r=[];for(const u of a.nodes)r.push(...u.isSubgraphNode()?o(u.subgraph,i):u.badges.filter(f=>t(f)));return r}n(o,"collectCreditsBadges");function t(a){return(typeof a=="function"?a():a).icon?.image===Ln}n(t,"isCreditsBadge");const s=ct();function l(a){const i=s.completedActivePalette.light_theme;return new ss({text:a,iconOptions:{image:Ln,size:8},fgColor:s.completedActivePalette.colors.litegraph_base.BADGE_FG_COLOR,bgColor:i?Vt("#8D6932",{lightness:.5}):"#8D6932"})}return n(l,"getCreditsBadge"),{getCreditsBadge:l,updateSubgraphCredits:e}},"usePriceBadge"),lw=n((e,o={})=>{const{widgetNames:t,triggerCanvasRedraw:s=!1}=o,l=L({});if(e.widgets){const a=t?e.widgets.filter(r=>t.includes(r.name)):e.widgets,i={};if(a.forEach(r=>{i[r.name]=r.value}),l.value=i,a.forEach(r=>{r.callback=eo(r.callback,()=>{l.value={...l.value,[r.name]:r.value},s&&e.graph?.setDirtyCanvas(!0,!0)})}),t&&t.length>a.length){const r=t.map(u=>a.some(f=>f.name==u)?-1:e.inputs.findIndex(f=>f.name==u)).filter(u=>u>=0);e.onConnectionsChange=eo(e.onConnectionsChange,(u,f,m)=>{r.includes(f)&&(l.value={...l.value,[r[f]]:m},s&&e.graph?.setDirtyCanvas(!0,!0))})}}return a=>Ul(l,a)},"useComputedWithWidgetWatch"),iw=n(()=>{const e=re(),o=Qn(),t=ct(),s=aw(),l=y(()=>e.get("Comfy.NodeBadge.NodeSourceBadgeMode")),a=y(()=>e.get("Comfy.NodeBadge.NodeIdBadgeMode")),i=y(()=>e.get("Comfy.NodeBadge.NodeLifeCycleBadgeMode")),r=y(()=>e.get("Comfy.NodeBadge.ShowApiPricing"));se([l,a,i,r],()=>{Y.canvas?.setDirty(!0,!0)});const u=St();function f(m,v){return!(v===pt.None||m?.isCoreNode&&v===pt.HideBuiltIn)}n(f,"badgeTextVisible"),We(()=>{const m=sw();o.registerExtension({name:"Comfy.NodeBadge",nodeCreated(v){v.badgePosition=Cr.TopRight;const p=y(()=>{const w=u.fromLGraphNode(v);return new ss({text:Gl.truncate([f(w,a.value)?`#${v.id}`:"",f(w,i.value)?w?.nodeLifeCycleBadgeText??"":"",f(w,l.value)?w?.nodeSource?.badgeText??"":""].filter(C=>C.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(()=>p.value),v.constructor.nodeData?.api_node&&r.value){const C=typeof m.getNodePricingConfig(v)?.displayPrice=="function";let g;const b=n(()=>{const k=m.getNodeDisplayPrice(v);return s.getCreditsBadge(k)},"createBadge");if(C){const k=m.getRelevantWidgetNames(v.constructor.nodeData?.name);g=lw(v,{widgetNames:k,triggerCanvasRedraw:!0})(b)}else g=y(b);v.badges.push(()=>g.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"),rw=n(e=>{const o=Hn(),t=So(),s=tt();Ja(()=>e.value,{getDropEffect:n(l=>l.source.data.type==="tree-explorer-node"?"copy":"move","getDropEffect"),onDrop:n(async l=>{const a=l.location.current.input,i=l.source.data;if(i.type==="tree-explorer-node"){const r=i.data,f=Xa().clientPosToCanvasPos([a.clientX,a.clientY]);if(r.data instanceof kr){const m=r.data,v=[...f];v[1]+=ve.NODE_TITLE_HEIGHT,t.addNodeOnGraph(m,{pos:v})}else if(r.data instanceof xr){const m=r.data,v=f,p=Y.canvas.graph?.getNodeOnPos(v[0],v[1]);let w=null,C=null;if(p){const g=o.getAllNodeProviders(m.directory);for(const b of g)b.nodeDef.name===p.comfyClass&&(C=p,w=b)}if(!C){const g=o.getNodeProvider(m.directory);g&&(C=t.addNodeOnGraph(g.nodeDef,{pos:v}),w=g)}if(C){const g=C.widgets?.find(b=>b.name===w?.key);g&&(g.value=m.file_name)}}else if(r.data instanceof Va){const m=r.data;await s.insertWorkflow(m,{position:f})}}},"onDrop")})},"useCanvasDrop"),uw=n(()=>{qt.install(Qe.prototype,"getCanvasMenuOptions");const{getCanvasMenuOptions:e}=Qe.prototype,o=n(function(...r){const u=e.apply(this,r),f=Y.collectCanvasMenuItems(this);for(const v of f)u.push(v);const m=qt.extractLegacyItems("getCanvasMenuOptions",this,...r);for(const v of m)u.push(v);for(const v of u)v?.content&&(v.content=Ae(`contextMenu.${v.content}`,v.content));return u},"getCanvasCenterMenuOptions");Qe.prototype.getCanvasMenuOptions=o,qt.registerWrapper("getCanvasMenuOptions",o,e,Qe.prototype),qt.install(Qe.prototype,"getNodeMenuOptions");const t=Qe.prototype.getNodeMenuOptions,s=n(function(...r){const u=t.apply(this,r),f=r[0],m=Y.collectNodeMenuItems(f);for(const p of m)u.push(p);const v=qt.extractLegacyItems("getNodeMenuOptions",this,...r);for(const p of v)u.push(p);return u},"getNodeMenuOptionsWithExtensions");Qe.prototype.getNodeMenuOptions=s,qt.registerWrapper("getNodeMenuOptions",s,t,Qe.prototype);function l(r,u){if(!r)return;const f=/Convert (.*) to input/,m=/Convert (.*) to widget/,v=Ae("contextMenu.Convert ","Convert "),p=Ae("contextMenu. to input"," to input"),w=Ae("contextMenu. to widget"," to widget");for(const C of r){if(typeof C=="string"||(l(C?.submenu?.options,u),!C?.content))continue;Sr(`contextMenu.${C.content}`)&&(C.content=Ae(`contextMenu.${C.content}`,C.content));const g=u.extra||u.parentMenu?.options?.extra,b=C.content?.match(f);if(b){let N=b[1];g?.inputs?.find(T=>{if(T.name!=N)return!1;N=T.label?T.label:T.name}),g?.widgets?.find(T=>{if(T.name!=N)return!1;N=T.label?T.label:T.name}),C.content=v+N+p;continue}const k=C.content?.match(m);if(k){let N=k[1];g?.inputs?.find(T=>{if(T.name!=N)return!1;N=T.label?T.label:T.name}),g?.widgets?.find(T=>{if(T.name!=N)return!1;N=T.label?T.label:T.name}),C.content=v+N+w;continue}}}n(l,"translateMenus");const a=ve.ContextMenu;function i(r,u){return u.title&&(u.title=Ae(`nodeDefs.${Ge(u.title)}.display_name`,u.title)),l(r,u),new a(r,u)}n(i,"ContextMenu"),ve.ContextMenu=i,ve.ContextMenu.prototype=a.prototype},"useContextMenuTranslation"),cw=['<meta charset="utf-8"><div><span data-metadata="','"></span></div><span style="white-space:pre-wrap;">Text</span>'],dw=n(()=>{const e=ge();Ee(document,"copy",o=>{if(_r(o.target))return;const t=e.canvas;if(t?.selectedItems){const s=t.copyToClipboard(),l=btoa(String.fromCharCode(...Array.from(new TextEncoder().encode(s))));return o.clipboardData?.setData("text/html",cw.join(l)),o.preventDefault(),o.stopImmediatePropagation(),!1}})},"useCopy"),pw=n(()=>{window.LiteGraph=ve,window.LGraph=Tr,window.LLink=$r,window.LGraphNode=mt,window.LGraphGroup=Ot,window.DragAndScale=Nr,window.LGraphCanvas=Qe,window.ContextMenu=Ir,window.LGraphBadge=ss},"useGlobalLitegraph"),fw=n(()=>{const e=re(),o=ge();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(()=>{ve.snaps_for_comfy=e.get("Comfy.Node.AutoSnapLinkToSlot")}),we(()=>{ve.snap_highlights_node=e.get("Comfy.Node.SnapHighlightsNode")}),we(()=>{mt.keepAllLinksOnBypass=e.get("Comfy.Node.BypassAllLinksOnDelete")}),we(()=>{ve.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(()=>{un.doubleClickTime=e.get("Comfy.Pointer.DoubleClickTime")}),we(()=>{un.bufferTime=e.get("Comfy.Pointer.ClickBufferTime")}),we(()=>{un.maxClickDrift=e.get("Comfy.Pointer.ClickDrift")}),we(()=>{ve.CANVAS_GRID_SIZE=e.get("Comfy.SnapToGrid.GridSize")}),we(()=>{ve.alwaysSnapToGrid=e.get("pysssss.SnapToGrid")}),we(()=>{ve.context_menu_scaling=e.get("LiteGraph.ContextMenu.Scaling")}),we(()=>{ve.Reroute.maxSplineOffset=e.get("LiteGraph.Reroute.SplineOffset")}),we(()=>{const t=e.get("Comfy.Canvas.NavigationMode");ve.canvasNavigationMode=t,ve.macTrackpadGestures=t==="standard"}),we(()=>{const t=e.get("Comfy.Canvas.LeftMouseClickBehavior");ve.leftMouseClickBehavior=t}),we(()=>{const t=e.get("Comfy.Canvas.MouseWheelScroll");ve.mouseWheelScroll=t}),we(()=>{ve.saveViewportWithGraph=e.get("Comfy.EnableWorkflowViewRestore")})},"useLitegraphSettings"),mw=[{id:"Comfy.Memory.AllowManualUnload",name:"Allow manual unload of models and execution cache via user command",type:"hidden",defaultValue:!0,versionAdded:"1.18.0"},{id:"Comfy.Validation.Workflows",name:"Validate workflows",type:"boolean",defaultValue:!1},{id:"Comfy.NodeSearchBoxImpl",category:["Comfy","Node Search Box","Implementation"],experimental:!0,name:"Node search box implementation",type:"combo",options:["default","litegraph (legacy)"],defaultValue:"default"},{id:"Comfy.LinkRelease.Action",category:["LiteGraph","LinkRelease","Action"],name:"Action on link release (No modifier)",type:"combo",options:Object.values(wt),defaultValue:wt.CONTEXT_MENU,defaultsByInstallVersion:{"1.24.1":wt.SEARCH_BOX}},{id:"Comfy.LinkRelease.ActionShift",category:["LiteGraph","LinkRelease","ActionShift"],name:"Action on link release (Shift)",type:"combo",options:Object.values(wt),defaultValue:wt.SEARCH_BOX,defaultsByInstallVersion:{"1.24.1":wt.CONTEXT_MENU}},{id:"Comfy.NodeSearchBoxImpl.NodePreview",category:["Comfy","Node Search Box","NodePreview"],name:"Node preview",tooltip:"Only applies to the default implementation",type:"boolean",defaultValue:!0},{id:"Comfy.NodeSearchBoxImpl.ShowCategory",category:["Comfy","Node Search Box","ShowCategory"],name:"Show node category in search results",tooltip:"Only applies to the default implementation",type:"boolean",defaultValue:!0},{id:"Comfy.NodeSearchBoxImpl.ShowIdName",category:["Comfy","Node Search Box","ShowIdName"],name:"Show node id name in search results",tooltip:"Only applies to the default implementation",type:"boolean",defaultValue:!1},{id:"Comfy.NodeSearchBoxImpl.ShowNodeFrequency",category:["Comfy","Node Search Box","ShowNodeFrequency"],name:"Show node frequency in search results",tooltip:"Only applies to the default implementation",type:"boolean",defaultValue:!1},{id:"Comfy.Sidebar.Location",category:["Appearance","Sidebar","Location"],name:"Sidebar location",type:"combo",options:["left","right"],defaultValue:"left"},{id:"Comfy.Sidebar.Size",category:["Appearance","Sidebar","Size"],name:"Sidebar size",type:"combo",options:["normal","small"],defaultValue:n(()=>window.innerWidth<1536?"small":"normal","defaultValue")},{id:"Comfy.Sidebar.UnifiedWidth",category:["Appearance","Sidebar","UnifiedWidth"],name:"Unified sidebar width",type:"boolean",defaultValue:!0,versionAdded:"1.18.1"},{id:"Comfy.Sidebar.Style",category:["Appearance","Sidebar","Style"],name:"Sidebar style",type:"combo",options:["floating","connected"],defaultValue:"connected"},{id:"Comfy.TextareaWidget.FontSize",category:["Appearance","Node Widget","TextareaWidget","FontSize"],name:"Textarea widget font size",type:"slider",defaultValue:10,attrs:{min:8,max:24}},{id:"Comfy.TextareaWidget.Spellcheck",category:["Comfy","Node Widget","TextareaWidget","Spellcheck"],name:"Textarea widget spellcheck",type:"boolean",defaultValue:!1},{id:"Comfy.Workflow.SortNodeIdOnSave",name:"Sort node IDs when saving workflow",type:"boolean",defaultValue:!1},{id:"Comfy.Canvas.NavigationMode",category:["LiteGraph","Canvas Navigation","NavigationMode"],name:"Navigation Mode",defaultValue:"legacy",type:"combo",sortOrder:100,options:[{value:"standard",text:"Standard (New)"},{value:"legacy",text:"Drag Navigation"},{value:"custom",text:"Custom"}],versionAdded:"1.25.0",defaultsByInstallVersion:{"1.25.0":"legacy"},onChange:n(async(e,o)=>{if(!o)return;const t=re();e==="standard"?(await t.set("Comfy.Canvas.LeftMouseClickBehavior","select"),await t.set("Comfy.Canvas.MouseWheelScroll","panning")):e==="legacy"&&(await t.set("Comfy.Canvas.LeftMouseClickBehavior","panning"),await t.set("Comfy.Canvas.MouseWheelScroll","zoom"))},"onChange")},{id:"Comfy.Canvas.LeftMouseClickBehavior",category:["LiteGraph","Canvas Navigation","LeftMouseClickBehavior"],name:"Left Mouse Click Behavior",defaultValue:"panning",type:"radio",sortOrder:50,options:[{value:"panning",text:"Panning"},{value:"select",text:"Select"}],versionAdded:"1.27.4",onChange:n(async e=>{const o=re(),t=o.get("Comfy.Canvas.NavigationMode");if(t!=="custom"){if(e==="select"&&t==="standard"||e==="panning"&&t==="legacy")return;await o.set("Comfy.Canvas.NavigationMode","custom")}},"onChange")},{id:"Comfy.Canvas.MouseWheelScroll",category:["LiteGraph","Canvas Navigation","MouseWheelScroll"],name:"Mouse Wheel Scroll",defaultValue:"zoom",type:"radio",options:[{value:"panning",text:"Panning"},{value:"zoom",text:"Zoom in/out"}],versionAdded:"1.27.4",onChange:n(async e=>{const o=re(),t=o.get("Comfy.Canvas.NavigationMode");if(t!=="custom"){if(e==="panning"&&t==="standard"||e==="zoom"&&t==="legacy")return;await o.set("Comfy.Canvas.NavigationMode","custom")}},"onChange")},{id:"Comfy.Graph.CanvasInfo",category:["LiteGraph","Canvas","CanvasInfo"],name:"Show canvas info on bottom left corner (fps, etc.)",type:"boolean",defaultValue:!0},{id:"Comfy.Node.ShowDeprecated",name:"Show deprecated nodes in search",tooltip:"Deprecated nodes are hidden by default in the UI, but remain functional in existing workflows that use them.",type:"boolean",defaultValue:!1},{id:"Comfy.Node.ShowExperimental",name:"Show experimental nodes in search",tooltip:"Experimental nodes are marked as such in the UI and may be subject to significant changes or removal in future versions. Use with caution in production workflows",type:"boolean",defaultValue:!0},{id:"Comfy.Node.Opacity",category:["Appearance","Node","Opacity"],name:"Node opacity",type:"slider",defaultValue:1,attrs:{min:.01,max:1,step:.01}},{id:"Comfy.Workflow.ShowMissingNodesWarning",name:"Show missing nodes warning",type:"boolean",defaultValue:!0},{id:"Comfy.Workflow.ShowMissingModelsWarning",name:"Show missing models warning",type:"boolean",defaultValue:!0,experimental:!0},{id:"Comfy.Workflow.WarnBlueprintOverwrite",name:"Require confirmation to overwrite an existing subgraph blueprint",type:"boolean",defaultValue:!0},{id:"Comfy.Graph.ZoomSpeed",category:["LiteGraph","Canvas","ZoomSpeed"],name:"Canvas zoom speed",type:"slider",defaultValue:1.1,attrs:{min:1.01,max:2.5,step:.01}},{id:"Comfy.NodeLibrary.Bookmarks",name:"Node library bookmarks with display name (deprecated)",type:"hidden",defaultValue:[],deprecated:!0},{id:"Comfy.NodeLibrary.Bookmarks.V2",name:"Node library bookmarks v2 with unique name",type:"hidden",defaultValue:[]},{id:"Comfy.NodeLibrary.BookmarksCustomization",name:"Node library bookmarks customization",type:"hidden",defaultValue:{}},{id:"Comfy.GroupSelectedNodes.Padding",category:["LiteGraph","Group","Padding"],name:"Group selected nodes padding",type:"slider",defaultValue:10,attrs:{min:0,max:100}},{id:"Comfy.Node.DoubleClickTitleToEdit",category:["LiteGraph","Node","DoubleClickTitleToEdit"],name:"Double click node title to edit",type:"boolean",defaultValue:!0},{id:"Comfy.Node.AllowImageSizeDraw",category:["LiteGraph","Node Widget","AllowImageSizeDraw"],name:"Show width × height below the image preview",type:"boolean",defaultValue:!0},{id:"Comfy.Group.DoubleClickTitleToEdit",category:["LiteGraph","Group","DoubleClickTitleToEdit"],name:"Double click group title to edit",type:"boolean",defaultValue:!0},{id:"Comfy.Window.UnloadConfirmation",name:"Show confirmation when closing window",type:"boolean",defaultValue:!0,versionModified:"1.7.12"},{id:"Comfy.TreeExplorer.ItemPadding",category:["Appearance","Tree Explorer","ItemPadding"],name:"Tree explorer item padding",type:"slider",defaultValue:2,attrs:{min:0,max:8,step:1}},{id:"Comfy.ModelLibrary.AutoLoadAll",name:"Automatically load all model folders",tooltip:"If true, all folders will load as soon as you open the model library (this may cause delays while it loads). If false, root level model folders will only load once you click on them.",type:"boolean",defaultValue:!1},{id:"Comfy.ModelLibrary.NameFormat",name:"What name to display in the model library tree view",tooltip:'Select "filename" to render a simplified view of the raw filename (without directory or ".safetensors" extension) in the model list. Select "title" to display the configurable model metadata title.',type:"combo",options:["filename","title"],defaultValue:"title"},{id:"Comfy.Locale",name:"Language",type:"combo",options:[{value:"en",text:"English"},{value:"zh",text:"中文"},{value:"zh-TW",text:"繁體中文"},{value:"ru",text:"Русский"},{value:"ja",text:"日本語"},{value:"ko",text:"한국어"},{value:"fr",text:"Français"},{value:"es",text:"Español"},{value:"ar",text:"عربي"},{value:"tr",text:"Türkçe"},{value:"pt-BR",text:"Português (BR)"}],defaultValue:n(()=>navigator.language.split("-")[0]||"en","defaultValue")},{id:"Comfy.NodeBadge.NodeSourceBadgeMode",category:["LiteGraph","Node","NodeSourceBadgeMode"],name:"Node source badge mode",type:"combo",options:Object.values(pt),defaultValue:pt.HideBuiltIn},{id:"Comfy.NodeBadge.NodeIdBadgeMode",category:["LiteGraph","Node","NodeIdBadgeMode"],name:"Node ID badge mode",type:"combo",options:[pt.None,pt.ShowAll],defaultValue:pt.None},{id:"Comfy.NodeBadge.NodeLifeCycleBadgeMode",category:["LiteGraph","Node","NodeLifeCycleBadgeMode"],name:"Node life cycle badge mode",type:"combo",options:[pt.None,pt.ShowAll],defaultValue:pt.ShowAll},{id:"Comfy.NodeBadge.ShowApiPricing",category:["Comfy","API Nodes"],name:"Show API node pricing badge",type:"boolean",defaultValue:!0,versionAdded:"1.20.3"},{id:"Comfy.Notification.ShowVersionUpdates",category:["Comfy","Notification Preferences"],name:"Show version updates",tooltip:"Show updates for new models, and major new features.",type:"boolean",defaultValue:!0},{id:"Comfy.ConfirmClear",category:["Comfy","Workflow","ConfirmClear"],name:"Require confirmation when clearing workflow",type:"boolean",defaultValue:!0},{id:"Comfy.PromptFilename",category:["Comfy","Workflow","PromptFilename"],name:"Prompt for filename when saving workflow",type:"boolean",defaultValue:!0},{id:"Comfy.PreviewFormat",category:["LiteGraph","Node Widget","PreviewFormat"],name:"Preview image format",tooltip:"When displaying a preview in the image widget, convert it to a lightweight image, e.g. webp, jpeg, webp;50, etc.",type:"text",defaultValue:""},{id:"Comfy.DisableSliders",category:["LiteGraph","Node Widget","DisableSliders"],name:"Disable node widget sliders",type:"boolean",defaultValue:!1},{id:"Comfy.DisableFloatRounding",category:["LiteGraph","Node Widget","DisableFloatRounding"],name:"Disable default float widget rounding.",tooltip:"(requires page reload) Cannot disable round when round is set by the node in the backend.",type:"boolean",defaultValue:!1},{id:"Comfy.FloatRoundingPrecision",category:["LiteGraph","Node Widget","FloatRoundingPrecision"],name:"Float widget rounding decimal places [0 = auto].",tooltip:"(requires page reload)",type:"slider",attrs:{min:0,max:6,step:1},defaultValue:0},{id:"LiteGraph.Node.TooltipDelay",name:"Tooltip Delay",type:"number",attrs:{min:100,max:3e3,step:50},defaultValue:500,versionAdded:"1.9.0"},{id:"Comfy.EnableTooltips",category:["LiteGraph","Node","EnableTooltips"],name:"Enable Tooltips",type:"boolean",defaultValue:!0},{id:"Comfy.DevMode",name:"Enable dev mode options (API save, etc.)",type:"boolean",defaultValue:!1,onChange:n(e=>{const o=document.getElementById("comfy-dev-save-api-button");o&&(o.style.display=e?"flex":"none")},"onChange")},{id:"Comfy.UseNewMenu",category:["Comfy","Menu","UseNewMenu"],defaultValue:"Top",name:"Use new menu",type:"combo",options:["Disabled","Top"],tooltip:"Enable the redesigned top menu bar.",migrateDeprecatedValue:n(e=>e==="Floating"||e==="Bottom"?"Top":e,"migrateDeprecatedValue")},{id:"Comfy.Workflow.WorkflowTabsPosition",name:"Opened workflows position",type:"combo",options:["Sidebar","Topbar"],defaultValue:"Topbar",migrateDeprecatedValue:n(e=>e==="Topbar (2nd-row)"?"Topbar":e,"migrateDeprecatedValue")},{id:"Comfy.Graph.CanvasMenu",category:["LiteGraph","Canvas","CanvasMenu"],name:"Show graph canvas menu",type:"boolean",defaultValue:!0},{id:"Comfy.QueueButton.BatchCountLimit",name:"Batch count limit",tooltip:"The maximum number of tasks added to the queue at one button click",type:"number",defaultValue:100,versionAdded:"1.3.5"},{id:"Comfy.Keybinding.UnsetBindings",name:"Keybindings unset by the user",type:"hidden",defaultValue:[],versionAdded:"1.3.7",versionModified:"1.7.3",migrateDeprecatedValue:n(e=>e.map(o=>(o.targetSelector==="#graph-canvas"&&(o.targetElementId="graph-canvas-container"),o)),"migrateDeprecatedValue")},{id:"Comfy.Keybinding.NewBindings",name:"Keybindings set by the user",type:"hidden",defaultValue:[],versionAdded:"1.3.7"},{id:"Comfy.Extension.Disabled",name:"Disabled extension names",type:"hidden",defaultValue:[],versionAdded:"1.3.11"},{id:"Comfy.LinkRenderMode",category:["LiteGraph","Graph","LinkRenderMode"],name:"Link Render Mode",defaultValue:2,type:"combo",options:[{value:ve.STRAIGHT_LINK,text:"Straight"},{value:ve.LINEAR_LINK,text:"Linear"},{value:ve.SPLINE_LINK,text:"Spline"},{value:ve.HIDDEN_LINK,text:"Hidden"}]},{id:"Comfy.Node.AutoSnapLinkToSlot",category:["LiteGraph","Node","AutoSnapLinkToSlot"],name:"Auto snap link to node slot",tooltip:"When dragging a link over a node, the link automatically snap to a viable input slot on the node",type:"boolean",defaultValue:!0,versionAdded:"1.3.29"},{id:"Comfy.Node.SnapHighlightsNode",category:["LiteGraph","Node","SnapHighlightsNode"],name:"Snap highlights node",tooltip:"When dragging a link over a node with viable input slot, highlight the node",type:"boolean",defaultValue:!0,versionAdded:"1.3.29"},{id:"Comfy.Node.BypassAllLinksOnDelete",category:["LiteGraph","Node","BypassAllLinksOnDelete"],name:"Keep all links when deleting nodes",tooltip:"When deleting a node, attempt to reconnect all of its input and output links (bypassing the deleted node)",type:"boolean",defaultValue:!0,versionAdded:"1.3.40"},{id:"Comfy.Node.MiddleClickRerouteNode",category:["LiteGraph","Node","MiddleClickRerouteNode"],name:"Middle-click creates a new Reroute node",type:"boolean",defaultValue:!0,versionAdded:"1.3.42"},{id:"Comfy.Graph.LinkMarkers",category:["LiteGraph","Link","LinkMarkers"],name:"Link midpoint markers",defaultValue:$o.Circle,type:"combo",options:[{value:$o.None,text:"None"},{value:$o.Circle,text:"Circle"},{value:$o.Arrow,text:"Arrow"}],versionAdded:"1.3.42"},{id:"Comfy.DOMClippingEnabled",category:["LiteGraph","Node","DOMClippingEnabled"],name:"Enable DOM element clipping (enabling may reduce performance)",type:"boolean",defaultValue:!0},{id:"Comfy.Graph.CtrlShiftZoom",category:["LiteGraph","Canvas","CtrlShiftZoom"],name:"Enable fast-zoom shortcut (Ctrl + Shift + Drag)",type:"boolean",defaultValue:!0,versionAdded:"1.4.0"},{id:"Comfy.Graph.LiveSelection",category:["LiteGraph","Canvas","LiveSelection"],name:"Live selection",tooltip:"When enabled, nodes are selected/deselected in real-time as you drag the selection rectangle, similar to other design tools.",type:"boolean",defaultValue:!1,versionAdded:"1.36.1"},{id:"Comfy.Pointer.ClickDrift",category:["LiteGraph","Pointer","ClickDrift"],name:"Pointer click drift (maximum distance)",tooltip:`If the pointer moves more than this distance while holding a button down, it is considered dragging (rather than clicking).
11
-
12
- Helps prevent objects from being unintentionally nudged if the pointer is moved whilst clicking.`,experimental:!0,type:"slider",attrs:{min:0,max:20,step:1},defaultValue:6,versionAdded:"1.4.3"},{id:"Comfy.Pointer.ClickBufferTime",category:["LiteGraph","Pointer","ClickBufferTime"],name:"Pointer click drift delay",tooltip:`After pressing a pointer button down, this is the maximum time (in milliseconds) that pointer movement can be ignored for.
13
-
14
- Helps prevent objects from being unintentionally nudged if the pointer is moved whilst clicking.`,experimental:!0,type:"slider",attrs:{min:0,max:1e3,step:25},defaultValue:150,versionAdded:"1.4.3"},{id:"Comfy.Pointer.DoubleClickTime",category:["LiteGraph","Pointer","DoubleClickTime"],name:"Double click interval (maximum)",tooltip:"The maximum time in milliseconds between the two clicks of a double-click. Increasing this value may assist if double-clicks are sometimes not registered.",type:"slider",attrs:{min:100,max:1e3,step:50},defaultValue:300,versionAdded:"1.4.3"},{id:"Comfy.SnapToGrid.GridSize",category:["LiteGraph","Canvas","GridSize"],name:"Snap to grid size",type:"slider",attrs:{min:1,max:500},tooltip:"When dragging and resizing nodes while holding shift they will be aligned to the grid, this controls the size of that grid.",defaultValue:ve.CANVAS_GRID_SIZE},{id:"pysssss.SnapToGrid",category:["LiteGraph","Canvas","AlwaysSnapToGrid"],name:"Always snap to grid",type:"boolean",defaultValue:!1,versionAdded:"1.3.13"},{id:"Comfy.Server.ServerConfigValues",name:"Server config values for frontend display",tooltip:"Server config values used for frontend display only",type:"hidden",defaultValue:{},versionAdded:"1.4.8"},{id:"Comfy.Server.LaunchArgs",name:"Server launch arguments",tooltip:"These are the actual arguments that are passed to the server when it is launched.",type:"hidden",defaultValue:{},versionAdded:"1.4.8"},{id:"Comfy.Queue.MaxHistoryItems",name:"Queue history size",tooltip:"The maximum number of tasks that show in the queue history.",type:"slider",attrs:{min:2,max:256,step:2},defaultValue:64,versionAdded:"1.4.12"},{id:"Comfy.Execution.PreviewMethod",category:["Comfy","Execution","PreviewMethod"],name:"Live preview method",tooltip:'Live preview method during image generation. "default" uses the server CLI setting.',type:"combo",options:["default","none","auto","latent2rgb","taesd"],defaultValue:"default",versionAdded:"1.36.0"},{id:"LiteGraph.Canvas.MaximumFps",name:"Maximum FPS",tooltip:"The maximum frames per second that the canvas is allowed to render. Caps GPU usage at the cost of smoothness. If 0, the screen refresh rate is used. Default: 0",type:"slider",attrs:{min:0,max:120},defaultValue:0,versionAdded:"1.5.1"},{id:"Comfy.EnableWorkflowViewRestore",category:["Comfy","Workflow","EnableWorkflowViewRestore"],name:"Save and restore canvas position and zoom level in workflows",type:"boolean",defaultValue:!0,versionModified:"1.5.4"},{id:"Comfy.Workflow.ConfirmDelete",name:"Show confirmation when deleting workflows",type:"boolean",defaultValue:!0,versionAdded:"1.5.6"},{id:"Comfy.ColorPalette",name:"The active color palette id",type:"hidden",defaultValue:"dark",versionModified:"1.6.7",migrateDeprecatedValue(e){return e.startsWith("custom_")?e.replace("custom_",""):e}},{id:"Comfy.CustomColorPalettes",name:"Custom color palettes",type:"hidden",defaultValue:{},versionModified:"1.6.7"},{id:"Comfy.WidgetControlMode",category:["Comfy","Node Widget","WidgetControlMode"],name:"Widget control mode",tooltip:"Controls when widget values are updated (randomize/increment/decrement), either before the prompt is queued or after.",type:"combo",defaultValue:"after",options:["before","after"],versionModified:"1.6.10"},{id:"Comfy.TutorialCompleted",name:"Tutorial completed",type:"hidden",defaultValue:!1,versionAdded:"1.8.7"},{id:"Comfy.InstalledVersion",name:"The frontend version that was running when the user first installed ComfyUI",type:"hidden",defaultValue:null,versionAdded:"1.24.0"},{id:"LiteGraph.ContextMenu.Scaling",name:"Scale node combo widget menus (lists) when zoomed in",defaultValue:!1,type:"boolean",versionAdded:"1.8.8"},{id:"LiteGraph.Canvas.LowQualityRenderingZoomThreshold",type:"hidden",deprecated:!0,name:"Low quality rendering zoom threshold (deprecated)",tooltip:"Zoom level threshold for performance mode. Lower values (0.1) = quality at all zoom levels. Higher values (1.0) = performance mode even when zoomed in. Performance mode simplifies rendering by hiding text labels, shadows, and details.",attrs:{min:.1,max:1,step:.01},defaultValue:.6,versionAdded:"1.9.1",versionModified:"1.26.7"},{id:"LiteGraph.Canvas.MinFontSizeForLOD",name:"Zoom Node Level of Detail - font size threshold",tooltip:"Controls when the nodes switch to low quality LOD rendering. Uses font size in pixels to determine when to switch. Set to 0 to disable. Values 1-24 set the minimum font size threshold for LOD - higher values (24px) = switch nodes to simplified rendering sooner when zooming out, lower values (1px) = maintain full node quality longer.",type:"slider",attrs:{min:0,max:24,step:1},defaultValue:8,versionAdded:"1.26.7",hideInVueNodes:!0},{id:"Comfy.Canvas.SelectionToolbox",category:["LiteGraph","Canvas","SelectionToolbox"],name:"Show selection toolbox",type:"boolean",defaultValue:!0,versionAdded:"1.10.5"},{id:"LiteGraph.Reroute.SplineOffset",name:"Reroute spline offset",tooltip:"The bezier control point offset from the reroute centre point",type:"slider",defaultValue:20,attrs:{min:0,max:400},versionAdded:"1.15.7"},{id:"Comfy.Toast.DisableReconnectingToast",name:"Disable toasts when reconnecting or reconnected",type:"hidden",defaultValue:!1,versionAdded:"1.15.12"},{id:"Comfy.Minimap.Visible",name:"Display minimap on canvas",type:"hidden",defaultValue:window.innerWidth>=Xo.lg,versionAdded:"1.25.0"},{id:"Comfy.Minimap.NodeColors",name:"Display node with its original color on minimap",type:"hidden",defaultValue:!1,versionAdded:"1.26.0"},{id:"Comfy.Minimap.ShowLinks",name:"Display links on minimap",type:"hidden",defaultValue:!0,versionAdded:"1.26.0"},{id:"Comfy.Minimap.ShowGroups",name:"Display node groups on minimap",type:"hidden",defaultValue:!0,versionAdded:"1.26.0"},{id:"Comfy.Minimap.RenderBypassState",name:"Render bypass state on minimap",type:"hidden",defaultValue:!0,versionAdded:"1.26.0"},{id:"Comfy.Minimap.RenderErrorState",name:"Render error state on minimap",type:"hidden",defaultValue:!0,versionAdded:"1.26.0"},{id:"Comfy.Workflow.AutoSaveDelay",name:"Auto Save Delay (ms)",defaultValue:1e3,type:"number",tooltip:'Only applies if Auto Save is set to "after delay".',versionAdded:"1.16.0"},{id:"Comfy.Workflow.AutoSave",name:"Auto Save",type:"combo",options:["off","after delay"],defaultValue:"off",versionAdded:"1.16.0"},{id:"Comfy.Workflow.Persist",name:"Persist workflow state and restore on page (re)load",type:"boolean",defaultValue:!0,versionAdded:"1.16.1"},{id:"LiteGraph.Node.DefaultPadding",name:"Always shrink new nodes",tooltip:"Resize nodes to the smallest possible size when created. When disabled, a newly added node will be widened slightly to show widget values.",type:"boolean",defaultValue:!1,versionAdded:"1.18.0"},{id:"Comfy.Canvas.BackgroundImage",category:["Appearance","Canvas","Background"],name:"Canvas background image",type:"backgroundImage",tooltip:'Image URL for the canvas background. You can right-click an image in the outputs panel and select "Set as Background" to use it, or upload your own image using the upload button.',defaultValue:"",versionAdded:"1.20.4",versionModified:"1.20.5"},{id:"Comfy.Release.Version",name:"Last seen release version",type:"hidden",defaultValue:""},{id:"Comfy.Release.Status",name:"Release status",type:"hidden",defaultValue:"skipped"},{id:"Comfy.Release.Timestamp",name:"Release seen timestamp",type:"hidden",defaultValue:0},{id:"Comfy.Templates.SelectedModels",name:"Template library - Selected model filters",type:"hidden",defaultValue:[]},{id:"Comfy.Templates.SelectedUseCases",name:"Template library - Selected use case filters",type:"hidden",defaultValue:[]},{id:"Comfy.Templates.SelectedRunsOn",name:"Template library - Selected runs on filters",type:"hidden",defaultValue:[]},{id:"Comfy.Templates.SortBy",name:"Template library - Sort preference",type:"hidden",defaultValue:"default"},{id:"Comfy.VueNodes.Enabled",category:["Comfy","Nodes 2.0","VueNodesEnabled"],name:"Modern Node Design (Nodes 2.0)",type:"boolean",tooltip:"Modern: DOM-based rendering with enhanced interactivity, native browser features, and updated visual design. Classic: Traditional canvas rendering.",defaultValue:!1,sortOrder:100,experimental:!0,versionAdded:"1.27.1"},{id:"Comfy.VueNodes.AutoScaleLayout",category:["Comfy","Nodes 2.0","AutoScaleLayout"],name:"Auto-scale layout (Nodes 2.0)",tooltip:"Automatically scale node positions when switching to Nodes 2.0 rendering to prevent overlap",type:"boolean",sortOrder:50,experimental:!0,defaultValue:!0,versionAdded:"1.30.3"},{id:"Comfy.Assets.UseAssetAPI",name:"Use Asset API for model library",type:"hidden",tooltip:"Use new Asset API for model browsing",defaultValue:!1,experimental:!0},{id:"Comfy.VersionCompatibility.DisableWarnings",name:"Disable version compatibility warnings",type:"hidden",defaultValue:!1,versionAdded:"1.34.1"},{id:"Comfy.Queue.QPOV2",name:"Queue Panel V2",type:"hidden",tooltip:"Enable the new Assets Panel design with list/grid view toggle",defaultValue:!1,experimental:!0}];function vw(){const e=Re(),o=re(),t=tt(),s=y(()=>o.get("Comfy.Workflow.AutoSave")),l=y(()=>o.get("Comfy.Workflow.AutoSaveDelay"));let a=null,i=!1,r=!1;const u=n(()=>{if(a&&(clearTimeout(a),a=null),s.value==="after delay"){if(i){r=!0;return}const m=l.value;a=setTimeout(async()=>{const v=e.activeWorkflow;if(v?.isModified&&v.isPersisted)try{i=!0,await t.saveWorkflow(v)}catch(p){console.error("Auto save failed:",p)}finally{i=!1,r&&(r=!1,u())}},m)}},"scheduleAutoSave");se(s,m=>{a&&(clearTimeout(a),a=null),m==="after delay"&&e.activeWorkflow?.isModified&&u()},{immediate:!0});const f=n(()=>{u()},"onGraphChanged");Te.addEventListener("graphChanged",f),vt(()=>{a&&(clearTimeout(a),a=null),Te.removeEventListener("graphChanged",f)})}n(vw,"useWorkflowAutoSave");function gw(){const e=$a(),o=Na(),{t}=fe(),s=Wt(),l=yl(),a=ge(),i=Za.TEMPLATE,r=["linear"],u=n(p=>/^[a-zA-Z0-9_.-]+$/.test(p),"isValidParameter"),f=n(p=>r.includes(p),"isSupportedMode"),m=n(()=>{const p={...e.query};delete p.template,delete p.source,delete p.mode,o.replace({query:p})},"cleanupUrlParams");return{loadTemplateFromUrl:n(async()=>{const p=e.query.template;if(!p||typeof p!="string")return;if(!u(p)){console.warn(`[useTemplateUrlLoader] Invalid template parameter format: ${p}`);return}const w=e.query.source||"default";if(!u(w)){console.warn(`[useTemplateUrlLoader] Invalid source parameter format: ${w}`);return}const C=e.query.mode;if(C&&(typeof C!="string"||!u(C))){console.warn(`[useTemplateUrlLoader] Invalid mode parameter format: ${C}`);return}C&&!f(C)&&console.warn(`[useTemplateUrlLoader] Unsupported mode parameter: ${C}. Supported modes: ${r.join(", ")}`);try{await l.loadTemplates(),await l.loadWorkflowTemplate(p,w)?C==="linear"&&(a.linearMode=!0):s.add({severity:"error",summary:t("g.error"),detail:t("templateWorkflows.error.templateNotFound",{templateName:p}),life:3e3})}catch(g){console.error("[useTemplateUrlLoader] Failed to load template from URL:",g),s.add({severity:"error",summary:t("g.error"),detail:t("g.errorLoadingTemplate"),life:3e3})}finally{m(),Mr(i)}},"loadTemplateFromUrl")}}n(gw,"useTemplateUrlLoader");function hw(){const e=Re(),o=re(),t=$a(),s=Na(),l=gw(),a=Za.TEMPLATE,i=n(async()=>{Pr(a);const x=Dr(a,t.query);return x&&await s.replace({query:x}),x??t.query},"ensureTemplateQueryFromIntent"),r=y(()=>o.get("Comfy.Workflow.Persist")),u=n(()=>{if(!r.value)return;const x=JSON.stringify(Y.rootGraph.serialize());try{localStorage.setItem("workflow",x),Te.clientId&&sessionStorage.setItem(`workflow:${Te.clientId}`,x)}catch(S){const I=Object.keys(sessionStorage).filter(_=>_.startsWith("workflow:")||_==="workflow");throw console.error("QuotaExceededError details:",{workflowSizeKB:Math.round(x.length/1024),totalStorageItems:Object.keys(sessionStorage).length,ourWorkflowKeys:I.length,ourWorkflowSizes:I.map(_=>({key:_,sizeKB:Math.round(sessionStorage[_].length/1024)})),error:S instanceof Error?S.message:String(S)}),S}},"persistCurrentWorkflow"),f=n(async(x,S)=>{if(!x)return!1;const I=JSON.parse(x);return await Y.loadGraphData(I,!0,!0,S),!0},"loadWorkflowFromStorage"),m=n(async()=>{const x=cn("Comfy.PreviousWorkflow"),S=Te.initialClientId??Te.clientId;if(S){const _=sessionStorage.getItem(`workflow:${S}`);if(await f(_,x))return!0}const I=localStorage.getItem("workflow");return await f(I,x)},"loadPreviousWorkflowFromStorage"),v=n(async()=>{o.get("Comfy.TutorialCompleted")?await Y.loadGraphData():(await o.set("Comfy.TutorialCompleted",!0),await tt().loadBlankWorkflow(),await Se().execute("Comfy.BrowseTemplates"))},"loadDefaultWorkflow"),p=n(async()=>{if(r.value)try{await m()||await v()}catch(x){console.error("Error loading previous workflow",x),await v()}},"initializeWorkflow"),w=n(async()=>{const x=await i();x.template&&typeof x.template=="string"&&await l.loadTemplateFromUrl()},"loadTemplateFromUrlIfPresent");se(()=>e.activeWorkflow?.key,x=>{x&&(dn("Comfy.PreviousWorkflow",x),u())}),Te.addEventListener("graphChanged",u),Sa(()=>{Te.removeEventListener("graphChanged",u)});const C=y(()=>e.openWorkflows),g=y(()=>e.activeWorkflow),b=y(()=>{if(!C.value||!g.value)return{paths:[],activeIndex:-1};const x=C.value.filter(I=>I?.isPersisted).map(I=>I.path),S=C.value.findIndex(I=>I.path===g.value?.path);return{paths:x,activeIndex:S}}),k=JSON.parse(cn("Comfy.OpenWorkflowsPaths")||"[]"),N=JSON.parse(cn("Comfy.ActiveWorkflowIndex")||"-1");return se(b,({paths:x,activeIndex:S})=>{r.value&&(dn("Comfy.OpenWorkflowsPaths",JSON.stringify(x)),dn("Comfy.ActiveWorkflowIndex",JSON.stringify(S)))}),{initializeWorkflow:p,loadTemplateFromUrlIfPresent:w,restoreWorkflowTabsState:n(()=>{if(!r.value)return;k?.length>0&&N>=0&&e.openWorkflowsInBackground({left:k.slice(0,N),right:k.slice(N)})},"restoreWorkflowTabsState")}}n(hw,"useWorkflowPersistence");function yw(e,o={}){const{settleDelay:t=256,passive:s=!0}=o,l=L(!1),a=n(()=>{l.value=!0},"markTransformActive"),i=jl(()=>{l.value=!1},t);return Ee(e,"wheel",n(()=>{a(),i()},"handleWheel"),{capture:!0,passive:s}),{isTransforming:l}}n(yw,"useTransformSettling");function bw(){const e=Ca({x:0,y:0,z:1}),o=y(()=>({transform:`scale(${e.z}) translate(${e.x}px, ${e.y}px)`,transformOrigin:"0 0"}));function t(p){!p||!p.ds||(e.x=p.ds.offset[0],e.y=p.ds.offset[1],e.z=p.ds.scale||1)}n(t,"syncWithCanvas");function s(p){return{x:(p.x+e.x)*e.z,y:(p.y+e.y)*e.z}}n(s,"canvasToScreen");const l=n(p=>({x:p.x/e.z-e.x,y:p.y/e.z-e.y}),"screenToCanvas");function a(p,w){const C=s({x:p[0],y:p[1]}),g=w[0]*e.z,b=w[1]*e.z;return new DOMRect(C.x,C.y,g,b)}n(a,"getNodeScreenBounds");function i(p){return e.z<.1?Math.min(p*5,2):e.z>3?Math.max(p*.5,.05):p}n(i,"calculateAdjustedMargin");function r(p){return Math.max(p[0],p[1])*e.z<4}n(r,"isNodeTooSmall");function u(p,w){const C=p.width*w,g=p.height*w;return{left:-C,right:p.width+C,top:-g,bottom:p.height+g}}n(u,"getExpandedViewportBounds");function f(p,w,C){const g=p.x+w[0]*e.z,b=p.y+w[1]*e.z;return!(g<C.left||p.x>C.right||b<C.top||p.y>C.bottom)}n(f,"testViewportIntersection");function m(p,w,C,g=.2){if(r(w))return!1;const b=s({x:p[0],y:p[1]}),k=i(g),N=u(C,k);return f(b,w,N)}n(m,"isNodeInViewport");function v(p,w=.2){const C=p.width*w,g=p.height*w,b=l({x:-C,y:-g}),k=l({x:p.width+C,y:p.height+g});return{x:b.x,y:b.y,width:k.x-b.x,height:k.y-b.y}}return n(v,"getViewportBounds"),{camera:_n(e),transformStyle:o,syncWithCanvas:t,canvasToScreen:s,screenToCanvas:l,getNodeScreenBounds:a,isNodeInViewport:m,getViewportBounds:v}}n(bw,"useTransformStateIndividual");const hs=tn(bw),ww=H({__name:"TransformPane",props:{canvas:{}},setup(e){const o=e,{transformStyle:t,syncWithCanvas:s}=hs(),l=y(()=>o.canvas?.canvas),{isTransforming:a}=yw(l,{settleDelay:16});return oo(()=>{o.canvas&&s(o.canvas)},{immediate:!0}),(i,r)=>(d(),$("div",{"data-testid":"transform-pane",class:K(h(ne)("absolute inset-0 w-full h-full pointer-events-none",h(a)?"transform-pane--interacting":"will-change-auto")),style:ye(h(t))},[he(i.$slots,"default",{},void 0,!0)],6))}}),Cw=Le(ww,[["__scopeId","data-v-4d46eee6"]]),kw={class:"flex items-center gap-2"},xw={for:"node-colors"},Sw={class:"flex items-center gap-2"},_w={for:"show-links"},Tw={class:"flex items-center gap-2"},$w={for:"show-groups"},Nw={class:"flex items-center gap-2"},Iw={for:"render-bypass"},Mw={class:"flex items-center gap-2"},Pw={for:"render-error"},Dw=H({__name:"MiniMapPanel",props:{panelStyles:{},nodeColors:{type:Boolean},showLinks:{type:Boolean},showGroups:{type:Boolean},renderBypass:{type:Boolean},renderError:{type:Boolean}},emits:["updateOption"],setup(e){return(o,t)=>(d(),$("div",{class:"minimap-panel mr-2 flex flex-col gap-2 bg-comfy-menu-bg p-3 text-sm shadow-interface",style:ye(o.panelStyles)},[c("div",kw,[O(h(fo),{"input-id":"node-colors",name:"node-colors","model-value":o.nodeColors,binary:"","onUpdate:modelValue":t[0]||(t[0]=s=>o.$emit("updateOption","Comfy.Minimap.NodeColors",s))},null,8,["model-value"]),t[5]||(t[5]=c("i",{class:"icon-[lucide--palette]"},null,-1)),c("label",xw,V(o.$t("minimap.nodeColors")),1)]),c("div",Sw,[O(h(fo),{"input-id":"show-links",name:"show-links","model-value":o.showLinks,binary:"","onUpdate:modelValue":t[1]||(t[1]=s=>o.$emit("updateOption","Comfy.Minimap.ShowLinks",s))},null,8,["model-value"]),t[6]||(t[6]=c("i",{class:"icon-[lucide--route]"},null,-1)),c("label",_w,V(o.$t("minimap.showLinks")),1)]),c("div",Tw,[O(h(fo),{"input-id":"show-groups",name:"show-groups","model-value":o.showGroups,binary:"","onUpdate:modelValue":t[2]||(t[2]=s=>o.$emit("updateOption","Comfy.Minimap.ShowGroups",s))},null,8,["model-value"]),t[7]||(t[7]=c("i",{class:"icon-[lucide--frame]"},null,-1)),c("label",$w,V(o.$t("minimap.showGroups")),1)]),c("div",Nw,[O(h(fo),{"input-id":"render-bypass",name:"render-bypass","model-value":o.renderBypass,binary:"","onUpdate:modelValue":t[3]||(t[3]=s=>o.$emit("updateOption","Comfy.Minimap.RenderBypassState",s))},null,8,["model-value"]),t[8]||(t[8]=c("i",{class:"icon-[lucide--circle-slash-2]"},null,-1)),c("label",Iw,V(o.$t("minimap.renderBypassState")),1)]),c("div",Mw,[O(h(fo),{"input-id":"render-error",name:"render-error","model-value":o.renderError,binary:"","onUpdate:modelValue":t[4]||(t[4]=s=>o.$emit("updateOption","Comfy.Minimap.RenderErrorState",s))},null,8,["model-value"]),t[9]||(t[9]=c("i",{class:"icon-[lucide--message-circle-warning]"},null,-1)),c("label",Pw,V(o.$t("minimap.renderErrorState")),1)])],4))}}),Aw=["width","height"],Lw=H({__name:"MiniMap",setup(e){const o=Se(),t=L(),s=xn("containerRef"),l=xn("canvasRef"),{initialized:a,visible:i,containerStyles:r,viewportStyles:u,width:f,height:m,panelStyles:v,nodeColors:p,showLinks:w,showGroups:C,renderBypass:g,renderError:b,updateOption:k,destroy:N,handlePointerDown:T,handlePointerMove:x,handlePointerUp:S,handlePointerCancel:I,handleWheel:_,setMinimapRef:M}=rs({containerRefMaybe:s,canvasRefMaybe:l}),P=L(!1),B=n(()=>{P.value=!P.value},"toggleOptionsPanel");return We(()=>{t.value&&M(t.value)}),vt(()=>{N()}),(j,U)=>h(i)&&h(a)?(d(),$("div",{key:0,ref_key:"minimapRef",ref:t,class:"minimap-main-container absolute right-0 bottom-[54px] z-1000 flex"},[P.value?(d(),W(Dw,{key:0,"panel-styles":h(v),"node-colors":h(p),"show-links":h(w),"show-groups":h(C),"render-bypass":h(g),"render-error":h(b),onUpdateOption:h(k)},null,8,["panel-styles","node-colors","show-links","show-groups","render-bypass","render-error","onUpdateOption"])):E("",!0),c("div",{ref_key:"containerRef",ref:s,class:"litegraph-minimap relative border border-interface-stroke bg-comfy-menu-bg shadow-interface",style:ye(h(r))},[O(J,{class:"absolute top-0 left-0 z-10",size:"icon",variant:"muted-textonly","aria-label":j.$t("g.settings"),onClick:Ce(B,["stop"])},{default:A(()=>U[7]||(U[7]=[c("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["aria-label"]),O(J,{class:"absolute top-0 right-0 z-10",size:"icon",variant:"muted-textonly","aria-label":j.$t("g.close"),"data-testid":"close-minmap-button",onClick:U[0]||(U[0]=Ce(()=>h(o).execute("Comfy.Canvas.ToggleMinimap"),["stop"]))},{default:A(()=>U[8]||(U[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:ye({width:h(r).width})},null,4),c("canvas",{ref_key:"canvasRef",ref:l,width:h(f),height:h(m),class:"minimap-canvas"},null,8,Aw),c("div",{class:"minimap-viewport",style:ye(h(u))},null,4),c("div",{class:"absolute inset-0 touch-none",onPointerdown:U[1]||(U[1]=(...R)=>h(T)&&h(T)(...R)),onPointermove:U[2]||(U[2]=(...R)=>h(x)&&h(x)(...R)),onPointerup:U[3]||(U[3]=(...R)=>h(S)&&h(S)(...R)),onPointerleave:U[4]||(U[4]=(...R)=>h(S)&&h(S)(...R)),onPointercancel:U[5]||(U[5]=(...R)=>h(I)&&h(I)(...R)),onWheel:U[6]||(U[6]=(...R)=>h(_)&&h(_)(...R))},null,32)],4)],512)):E("",!0)}}),Ew=Le(Lw,[["__scopeId","data-v-66f11255"]]);function En(e){return e.ctrlKey||e.metaKey||e.shiftKey}n(En,"isMultiSelectKey");function Vw(){const e=ge(),{nodeManager:o}=fs(),{bringNodeToFront:t}=el(),{shouldHandleNodePointerEvents:s}=io();function l(f,m){if(!s.value||!e.canvas||!o.value)return;const v=o.value.getNode(m);if(!v)return;const p=En(f),w=e.selectedItems.length,C=!p&&v.selected&&w>1;p?v.selected||e.canvas.select(v):C||(e.canvas.deselectAll(),e.canvas.select(v)),v.flags?.pinned||t(m),e.updateSelectedItems()}n(l,"handleNodeSelect");function a(f,m){if(!s.value||!o.value)return;const v=o.value.getNode(f);if(!v)return;(v.flags?.collapsed??!1)!==m&&v.collapse()}n(a,"handleNodeCollapse");function i(f,m){if(!s.value||!o.value)return;const v=o.value.getNode(f);v&&(v.title=m)}n(i,"handleNodeTitleUpdate");function r(f,m){if(!s.value||!e.canvas||!o.value)return;const v=o.value.getNode(m);v&&(f.preventDefault(),v.selected||l(f,m))}n(r,"handleNodeRightClick");function u(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 n(u,"toggleNodeSelectionAfterPointerUp"),{handleNodeSelect:l,handleNodeCollapse:a,handleNodeTitleUpdate:i,handleNodeRightClick:r,toggleNodeSelectionAfterPointerUp:u}}n(Vw,"useNodeEventHandlersIndividual");const kl=tn(Vw);function xl(){const e=re(),o=y(()=>e.get("Comfy.SnapToGrid.GridSize")),t=y(()=>e.get("pysssss.SnapToGrid"));function s(i){return i.shiftKey||t.value}n(s,"shouldSnap");function l(i){const r=o.value;if(!r)return{...i};const u=[i.x,i.y];return Ps(u,r)?{x:u[0],y:u[1]}:{...i}}n(l,"applySnapToPosition");function a(i){const r=o.value;if(!r)return{...i};const u=[i.width,i.height];return Ps(u,r)?{width:u[0],height:u[1]}:{...i}}return n(a,"applySnapToSize"),{gridSize:o,alwaysSnap:t,shouldSnap:s,applySnapToPosition:l,applySnapToSize:a}}n(xl,"useNodeSnap");function Sl(){const e=Xe(!1);let o=null;function t(l){l!==e.value&&(!o&&(o=Y.canvas?.canvas??null,!o)||(e.value=l,o.dispatchEvent(new KeyboardEvent(l?"keydown":"keyup",{key:"Shift",shiftKey:l,bubbles:!0}))))}n(t,"syncShiftState");function s(l){t(l.shiftKey);const a=n(u=>{u.key==="Shift"&&t(u.shiftKey)},"handleKeyEvent"),i=Ee(window,"keydown",a,{passive:!0}),r=Ee(window,"keyup",a,{passive:!0});return()=>{i(),r()}}return n(s,"trackShiftKey"),Sa(()=>{e.value=!1,o=null}),{trackShiftKey:s}}n(Sl,"useShiftKeySync");const _l=tn(Ow);function Ow(){const e=sn(),{selectedNodeIds:o,selectedItems:t}=He(ge()),s=hs(),{shouldSnap:l,applySnapToPosition:a}=xl(),{trackShiftKey:i}=Sl();let r=null,u=null,f=null,m=null,v=null,p=null,w=null;function C(k,N){const T=je(De.getNodeLayoutRef(N));if(!T)return;const x=T.position??{x:0,y:0};v=i(k),r={...x},u={x:k.clientX,y:k.clientY};const S=je(o),I=S?.has(N);if(I&&S.size>1){f=new Map;for(const _ of S){if(_===N)continue;const M=De.getNodeLayoutRef(_).value;M&&f.set(_,{...M.position})}}else f=null;I?(w=je(t).filter(es),p={x:0,y:0}):(w=null,p=null),e.setSource(wo.Vue)}n(C,"startDrag");function g(k,N){if(!r||!u||m!==null)return;const{target:T,pointerId:x}=k;T instanceof HTMLElement&&!T.hasPointerCapture(x)&&T.setPointerCapture(x),m=requestAnimationFrame(()=>{if(m=null,!r||!u)return;const S={x:k.clientX-u.x,y:k.clientY-u.y},I=s.screenToCanvas({x:0,y:0}),_=s.screenToCanvas(S),M={x:_.x-I.x,y:_.y-I.y},P={x:r.x+M.x,y:r.y+M.y};if(e.moveNode(N,P),f&&f.size>0)for(const[B,j]of f){const U={x:j.x+M.x,y:j.y+M.y};e.moveNode(B,U)}if(w&&w.length>0&&p){const B={x:M.x-p.x,y:M.y-p.y};for(const j of w)j.move(B.x,B.y,!0)}p=M})}n(g,"handleDrag");function b(k,N){if(l(k)&&N){const T=[],x=je(De.getNodeLayoutRef(N));if(x){const S=x.position,I=a({...S});(I.x!==S.x||I.y!==S.y)&&T.push({nodeId:N,bounds:{x:I.x,y:I.y,width:x.size.width,height:x.size.height}})}if(f&&f.size>0)for(const S of f.keys()){const I=De.getNodeLayoutRef(S).value;if(I){const _={...I.position},M=a(_);(M.x!==_.x||M.y!==_.y)&&T.push({nodeId:S,bounds:{x:M.x,y:M.y,width:I.size.width,height:I.size.height}})}}T.length>0&&De.batchUpdateNodeBounds(T)}r=null,u=null,f=null,w=null,p=null,v?.(),v=null,m!==null&&(cancelAnimationFrame(m),m=null)}return n(b,"endDrag"),{startDrag:C,handleDrag:g,endDrag:b}}n(Ow,"useNodeDragIndividual");function Rw(e){const{startDrag:o,endDrag:t,handleDrag:s}=_l(),{forwardEventToCanvas:l,shouldHandleNodePointerEvents:a}=io(),{handleNodeSelect:i,toggleNodeSelectionAfterPointerUp:r}=kl(),{nodeManager:u}=fs(),f=n(I=>Ar(I)?(l(I),!0):!1,"forwardMiddlePointerIfNeeded");let m=!1;const v=L({x:0,y:0}),p=3;function w(I){if(f(I)||I.button!==0)return;if(!a.value){l(I);return}const _=je(e);if(!_){console.warn("LGraphNode: nodeData is null/undefined in handlePointerDown");return}u.value?.getNode(_)?.flags?.pinned||(v.value={x:I.clientX,y:I.clientY},b(I,_))}n(w,"onPointerdown");function C(I){if(f(I)||De.isResizingVueNodes.value)return;const _=je(e);if(u.value?.getNode(_)?.flags?.pinned)return;const M=En(I),P=I.buttons&1;if(P&&M&&!De.isDraggingVueNodes.value){De.isDraggingVueNodes.value=!0,i(I,_),b(I,_);return}if(P&&!De.isDraggingVueNodes.value){const B=I.clientX-v.value.x,j=I.clientY-v.value.y;Math.sqrt(B*B+j*j)>p&&(De.isDraggingVueNodes.value=!0,i(I,_))}De.isDraggingVueNodes.value&&s(I,_)}n(C,"onPointermove");function g(){De.isDraggingVueNodes.value=!1}n(g,"cleanupDragState");function b(I,_){try{o(I,_)}finally{m=!0}}n(b,"safeDragStart");function k(I){try{const _=je(e);t(I,_)}catch(_){console.error("Error during endDrag:",_)}finally{m=!1,g()}}n(k,"safeDragEnd");function N(I){if(f(I))return;if(!a.value){l(I);return}const M=De.isDraggingVueNodes.value;if((m||M)&&(k(I),M)||I.button===2)return;const P=En(I),B=je(e);B&&r(B,P)}n(N,"onPointerup");function T(I){De.isDraggingVueNodes.value&&k(I)}n(T,"onPointercancel");function x(I){De.isDraggingVueNodes.value&&(I.preventDefault(),g())}return n(x,"onContextmenu"),Hl(()=>{g()}),{pointerHandlers:{onPointerdown:w,onPointermove:C,onPointerup:N,onPointercancel:T,onContextmenu:x}}}n(Rw,"useNodePointerInteractions");const Ko=new Map([["node",{dataAttribute:"nodeId",updateHandler:n(e=>{const o=e.map(({id:t,bounds:s})=>({nodeId:t,bounds:s}));De.batchUpdateNodeBounds(o)},"updateHandler")}]]),sa=new ResizeObserver(e=>{if(ge().linearMode)return;const o=Xa(),t=new Map,s=new Set;for(const l of e){if(!(l.target instanceof HTMLElement))continue;const a=l.target;let i,r;for(const[k,N]of Ko){const T=a.dataset[N.dataAttribute];if(T){i=k,r=T;break}}if(!i||!r)continue;const u=Array.isArray(l.borderBoxSize)?l.borderBoxSize[0]:{inlineSize:l.contentRect.width,blockSize:l.contentRect.height},f=u.inlineSize,m=u.blockSize,v=a.getBoundingClientRect(),[p,w]=o.clientPosToCanvasPos([v.left,v.top]),C={x:p,y:w},g={x:C.x,y:C.y+ve.NODE_TITLE_HEIGHT,width:Math.max(0,f),height:Math.max(0,m)};let b=t.get(i);b||(b=[],t.set(i,b)),b.push({id:r,bounds:g}),i==="node"&&r&&s.add(r)}De.setSource(wo.DOM);for(const[l,a]of t){const i=Ko.get(l);i&&a.length&&i.updateHandler(a)}if(s.size>0)for(const l of s)Lr(l)});function Ww(e,o){const t=je(e);We(()=>{const s=ks()?.proxy?.$el;if(!(s instanceof HTMLElement)||!t)return;const l=Ko.get(o);l&&(s.dataset[l.dataAttribute]=t,sa.observe(s))}),vt(()=>{const s=ks()?.proxy?.$el;if(!(s instanceof HTMLElement))return;const l=Ko.get(o);l&&(delete s.dataset[l.dataAttribute],sa.unobserve(s))})}n(Ww,"useVueElementTracking");const zw=n(e=>{const o=y(()=>je(e)??""),{nodeLocationProgressStates:t,isIdle:s}=He(ut()),l=y(()=>{const f=o.value;return f?t.value[f]:void 0}),a=y(()=>!s.value&&l.value?.state==="running"),i=y(()=>{const f=l.value;return f&&f.max>0?f.value/f.max:void 0}),r=y(()=>{const f=i.value;return f!==void 0?Math.round(f*100):void 0}),u=y(()=>{const f=l.value;return f?f.state:"idle"});return{executing:a,progress:i,progressPercentage:r,progressState:l,executionState:u}},"useNodeExecutionState");function Bw(e){const o=je(e),t=sn(),s=De.getNodeLayoutRef(o);vt(()=>{De.cleanupNodeRef(o)});const l=y(()=>s.value?.position??{x:0,y:0}),a=y(()=>s.value?.size??{width:200,height:100}),i=y(()=>s.value?.zIndex??0);function r(u){t.setSource(wo.Vue),t.moveNode(o,u)}return n(r,"moveNodeTo"),{position:l,size:a,zIndex:i,moveNodeTo:r}}n(Bw,"useNodeLayout");const Fw=n((e,o)=>{const t=je(e),s=Re(),{nodePreviewImages:l}=He(_o()),a=y(()=>s.nodeIdToNodeLocatorId(t)),i=y(()=>{const m=a.value;if(!m)return;const v=l.value[m];return v?.length?v:void 0}),r=y(()=>!!i.value?.length),u=y(()=>{const m=i.value;return m?.length?m.at(-1):""}),f=y(()=>o?.isCollapsed?!o.isCollapsed.value&&r.value:r.value);return{locatorId:a,previewUrls:i,hasPreview:r,latestPreviewUrl:u,shouldShowPreviewImg:f}},"useNodePreviewState");function Uw(e){const o=hs(),t=L(!1),s=L(null),l=L(null),{shouldSnap:a,applySnapToSize:i}=xl(),{trackShiftKey:r}=Sl();return{startResize:n(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 p=v.getBoundingClientRect(),w=o.camera.z,C={width:p.width/w,height:p.height/w},g=r(f);m.setPointerCapture(f.pointerId),De.isResizingVueNodes.value=!0,t.value=!0,s.value={x:f.clientX,y:f.clientY},l.value=C;const b=n(x=>{if(!t.value||!s.value||!l.value)return;const S=o.camera.z,I=(x.clientX-s.value.x)/(S||1),_=(x.clientY-s.value.y)/(S||1);let M={width:l.value.width+I,height:l.value.height+_};a(x)&&(M=i(M));const P=m.closest("[data-node-id]");P instanceof HTMLElement&&e({size:M},P)},"handlePointerMove"),k=n(x=>{t.value&&(t.value=!1,De.isResizingVueNodes.value=!1,s.value=null,l.value=null,g(),m.releasePointerCapture(x.pointerId),N(),T())},"handlePointerUp"),N=Ee("pointermove",b),T=Ee("pointerup",k)},"startResize"),isResizing:t}}n(Uw,"useNodeResize");const Gw={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function jw(e,o){return d(),$("svg",Gw,[...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)])])}n(jw,"render$1");const Hw=_a({name:"lucide-image-off",render:jw}),qw={key:0,class:"flex h-full min-h-16 w-full min-w-16 flex-col"},Kw={class:"relative h-88 w-full grow overflow-hidden rounded-[5px] bg-node-component-surface"},Qw={key:0,class:"text-pure-white flex h-full w-full flex-col items-center justify-center text-center"},Yw={class:"text-xs text-smoke-400"},Jw=["src","alt"],Xw={class:"text-node-component-header-text mt-1 text-center text-xs"},Zw=H({__name:"LivePreview",props:{imageUrl:{}},setup(e){const o=e,t=L(null),s=L(!1);se(()=>o.imageUrl,()=>{t.value=null,s.value=!1});const l=n(i=>{if(!i.target||!(i.target instanceof HTMLImageElement))return;const r=i.target;s.value=!1,r.naturalWidth&&r.naturalHeight&&(t.value=`${r.naturalWidth} x ${r.naturalHeight}`)},"handleImageLoad"),a=n(()=>{s.value=!0,t.value=null},"handleImageError");return(i,r)=>{const u=Hw;return i.imageUrl?(d(),$("div",qw,[c("div",Kw,[s.value?(d(),$("div",Qw,[O(u,{class:"mb-1 size-8 text-smoke-500"}),c("p",Yw,V(i.$t("g.imageFailedToLoad")),1)])):(d(),$("img",{key:1,src:i.imageUrl,alt:i.$t("g.liveSamplingPreview"),class:"pointer-events-none h-full w-full object-contain object-center",onLoad:l,onError:a},null,40,Jw))]),c("div",Xw,V(s.value?i.$t("g.errorLoadingImage"):t.value||i.$t("g.calculatingDimensions")),1)])):E("",!0)}}}),e0=["aria-label","aria-busy"],t0={key:0,role:"alert",class:"flex size-full flex-col items-center justify-center bg-muted-background text-center text-base-foreground py-8"},o0={class:"text-sm text-base-foreground"},n0={class:"mt-1 text-xs text-base-foreground"},s0=["src"],a0={key:3,class:"actions absolute top-2 right-2 flex gap-2.5"},l0=["title","aria-label"],i0=["title","aria-label"],r0={key:4,class:"absolute right-2 bottom-2 left-2 flex justify-center gap-1"},u0=["aria-label","onClick"],c0={class:"mt-2 text-center text-xs text-muted-foreground"},d0={key:0,class:"text-red-400"},p0={key:1,class:"text-smoke-400"},f0={key:2},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",m0=H({__name:"VideoPreview",props:{imageUrls:{},nodeId:{}},setup(e){const o=e,{t}=fe(),s=_o(),l=L(0),a=L(!1),i=L(!1),r=L(null),u=L(!1),f=L(!1),m=L(),v=y(()=>o.imageUrls[l.value]),p=y(()=>o.imageUrls.length>1);se(()=>o.imageUrls,P=>{l.value>=P.length&&(l.value=0),r.value=null,u.value=!1,f.value=P.length>0},{deep:!0,immediate:!0});const w=n(P=>{if(!P.target||!(P.target instanceof HTMLVideoElement))return;const B=P.target;f.value=!1,u.value=!1,B.videoWidth&&B.videoHeight&&(r.value=`${B.videoWidth} x ${B.videoHeight}`)},"handleVideoLoad"),C=n(()=>{f.value=!1,u.value=!0,r.value=null},"handleVideoError"),g=n(()=>{try{ts(v.value)}catch{Wt().add({severity:"error",summary:"Error",detail:t("g.failedToDownloadVideo"),life:3e3,group:"video-preview"})}},"handleDownload"),b=n(()=>{o.nodeId&&s.removeNodeOutputs(o.nodeId)},"handleRemove"),k=n(P=>{P>=0&&P<o.imageUrls.length&&(l.value=P,r.value=null,f.value=!0,u.value=!1)},"setCurrentIndex"),N=n(()=>{a.value=!0},"handleMouseEnter"),T=n(()=>{a.value=!1},"handleMouseLeave"),x=n(()=>{i.value=!0},"handleFocusIn"),S=n(P=>{m.value?.contains(P.relatedTarget)||(i.value=!1)},"handleFocusOut"),I=n(P=>["w-2 h-2 rounded-full transition-all duration-200 border-0 cursor-pointer",P===l.value?"bg-white":"bg-white/50 hover:bg-white/80"],"getNavigationDotClass"),_=n(P=>{if(!(o.imageUrls.length<=1))switch(P.key){case"ArrowLeft":P.preventDefault(),k(l.value>0?l.value-1:o.imageUrls.length-1);break;case"ArrowRight":P.preventDefault(),k(l.value<o.imageUrls.length-1?l.value+1:0);break;case"Home":P.preventDefault(),k(0);break;case"End":P.preventDefault(),k(o.imageUrls.length-1);break}},"handleKeyDown"),M=n(P=>{try{return new URL(P).searchParams.get("filename")||"Unknown file"}catch{return"Invalid URL"}},"getVideoFilename");return(P,B)=>P.imageUrls.length>0?(d(),$("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":P.$t("g.videoPreview"),"aria-busy":f.value,onMouseenter:N,onMouseleave:T,onFocusin:x,onFocusout:S},[u.value?(d(),$("div",t0,[B[0]||(B[0]=c("i",{class:"mb-2 icon-[lucide--video-off] h-12 w-12 text-base-foreground"},null,-1)),c("p",o0,V(P.$t("g.videoFailedToLoad")),1),c("p",n0,V(M(v.value)),1)])):E("",!0),f.value&&!u.value?(d(),W(h(Un),{key:1,class:"absolute inset-0 size-full","border-radius":"5px",width:"100%",height:"100%"})):E("",!0),u.value?E("",!0):(d(),$("video",{key:2,src:v.value,class:K(h(ne)("block size-full object-contain",f.value&&"invisible")),controls:"",loop:"",playsinline:"",onLoadeddata:w,onError:C},null,42,s0)),a.value||i.value?(d(),$("div",a0,[c("button",{class:K(aa),title:P.$t("g.downloadVideo"),"aria-label":P.$t("g.downloadVideo"),onClick:g},B[1]||(B[1]=[c("i",{class:"icon-[lucide--download] h-4 w-4"},null,-1)]),8,l0),c("button",{class:K(aa),title:P.$t("g.removeVideo"),"aria-label":P.$t("g.removeVideo"),onClick:b},B[2]||(B[2]=[c("i",{class:"icon-[lucide--x] h-4 w-4"},null,-1)]),8,i0)])):E("",!0),p.value?(d(),$("div",r0,[(d(!0),$(oe,null,be(P.imageUrls,(j,U)=>(d(),$("button",{key:U,class:K(I(U)),"aria-label":P.$t("g.viewVideoOfTotal",{index:U+1,total:P.imageUrls.length}),onClick:n(R=>k(U),"onClick")},null,10,u0))),128))])):E("",!0)],40,e0),c("div",c0,[u.value?(d(),$("span",d0,V(P.$t("g.errorLoadingVideo")),1)):f.value?(d(),$("span",p0,V(P.$t("g.loading"))+"... ",1)):(d(),$("span",f0,V(r.value||P.$t("g.calculatingDimensions")),1))])],32)):E("",!0)}}),v0={width:"1.2em",height:"1.2em",xmlns:"http://www.w3.org/2000/svg",class:"",viewBox:"0 0 16 16",fill:"none"},g0=["clip-path"],h0=["id"];function y0(e,o){return d(),$("svg",v0,[c("g",{"clip-path":"url(#"+e.idMap.clip0_704_2695+")"},[...o[0]||(o[0]=[ql('<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,g0),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,h0)])])}n(y0,"render");const b0=_a({name:"comfy-mask",render:y0,setup(){return{idMap:{clip0_704_2695:"uicons-"+n(()=>Math.random().toString(36).substr(2,10),"__randId")()}}}}),w0=["aria-label","aria-busy"],C0={key:0,role:"alert",class:"flex size-full flex-col items-center justify-center bg-muted-background text-center text-base-foreground py-8"},k0={class:"text-sm text-base-foreground"},x0={class:"mt-1 text-xs text-base-foreground"},S0={key:1,class:"size-full"},_0=["src","alt"],T0={key:3,class:"actions absolute top-2 right-2 flex gap-2.5"},$0=["title","aria-label"],N0=["title","aria-label"],I0=["title","aria-label"],M0={class:"pt-2 text-center text-xs text-base-foreground"},P0={key:0,class:"text-red-400"},D0={key:1,class:"text-base-foreground"},A0={key:2},L0={key:0,class:"flex flex-wrap justify-center gap-1 pt-4"},E0=["aria-current","aria-label","onClick"],wn="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",V0=H({__name:"ImagePreview",props:{imageUrls:{},nodeId:{}},setup(e){const o=e,{t}=fe(),s=Se(),l=_o(),a=L(0),i=L(!1),r=L(!1),u=L(null),f=L(!1),m=L(!1),v=L(),p=L(),{start:w,stop:C}=Kl(()=>{m.value=!0},250,{immediate:!1}),g=y(()=>o.imageUrls[a.value]),b=y(()=>o.imageUrls.length>1),k=y(()=>`Node output ${a.value+1}`);se(()=>o.imageUrls,G=>{a.value>=G.length&&(a.value=0),u.value=null,f.value=!1,G.length>0&&w()},{deep:!0,immediate:!0});const N=n(G=>{if(!G.target||!(G.target instanceof HTMLImageElement))return;const q=G.target;C(),m.value=!1,f.value=!1,q.naturalWidth&&q.naturalHeight&&(u.value=`${q.naturalWidth} x ${q.naturalHeight}`)},"handleImageLoad"),T=n(()=>{C(),m.value=!1,f.value=!0,u.value=null},"handleImageError"),x=n(()=>{if(!o.nodeId||!v.value)return;const G=Y.rootGraph?.getNodeById(o.nodeId);G&&(G.imageIndex=a.value,G.imgs=[v.value],Y.canvas?.select(G))},"setupNodeForMaskEditor"),S=n(()=>{x(),s.execute("Comfy.MaskEditor.OpenMaskEditor")},"handleEditMask"),I=n(()=>{try{ts(g.value)}catch{Wt().add({severity:"error",summary:"Error",detail:t("g.failedToDownloadImage"),life:3e3,group:"image-preview"})}},"handleDownload"),_=n(()=>{o.nodeId&&l.removeNodeOutputs(o.nodeId)},"handleRemove"),M=n(G=>{a.value!==G&&G>=0&&G<o.imageUrls.length&&(a.value=G,w(),f.value=!1)},"setCurrentIndex"),P=n(()=>{i.value=!0},"handleMouseEnter"),B=n(()=>{i.value=!1},"handleMouseLeave"),j=n(()=>{r.value=!0},"handleFocusIn"),U=n(G=>{p.value?.contains(G.relatedTarget)||(r.value=!1)},"handleFocusOut"),R=n(G=>["w-2 h-2 rounded-full transition-all duration-200 border-0 cursor-pointer p-0",G===a.value?"bg-base-foreground":"bg-base-foreground/50 hover:bg-base-foreground/80"],"getNavigationDotClass"),F=n(G=>{if(!(o.imageUrls.length<=1))switch(G.key){case"ArrowLeft":G.preventDefault(),M(a.value>0?a.value-1:o.imageUrls.length-1);break;case"ArrowRight":G.preventDefault(),M(a.value<o.imageUrls.length-1?a.value+1:0);break;case"Home":G.preventDefault(),M(0);break;case"End":G.preventDefault(),M(o.imageUrls.length-1);break}},"handleKeyDown"),z=n(G=>{try{return new URL(G).searchParams.get("filename")||"Unknown file"}catch{return"Invalid URL"}},"getImageFilename");return(G,q)=>{const Q=b0;return G.imageUrls.length>0?(d(),$("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:p,class:"h-full w-full overflow-hidden rounded-[5px] bg-muted-background relative",tabindex:"0",role:"img","aria-label":G.$t("g.imagePreview"),"aria-busy":m.value,onMouseenter:P,onMouseleave:B,onFocusin:j,onFocusout:U},[f.value?(d(),$("div",C0,[q[0]||(q[0]=c("i",{class:"mb-2 icon-[lucide--image-off] h-12 w-12 text-base-foreground"},null,-1)),c("p",k0,V(G.$t("g.imageFailedToLoad")),1),c("p",x0,V(z(g.value)),1)])):E("",!0),m.value&&!f.value?(d(),$("div",S0,[O(h(Un),{"border-radius":"5px",width:"100%",height:"100%"})])):E("",!0),f.value?E("",!0):(d(),$("img",{key:2,ref_key:"currentImageEl",ref:v,src:g.value,alt:k.value,class:"block size-full object-contain pointer-events-none",onLoad:N,onError:T},null,40,_0)),i.value||r.value?(d(),$("div",T0,[b.value?E("",!0):(d(),$("button",{key:0,class:K(wn),title:G.$t("g.editOrMaskImage"),"aria-label":G.$t("g.editOrMaskImage"),onClick:S},[O(Q,{class:"h-4 w-4"})],8,$0)),c("button",{class:K(wn),title:G.$t("g.downloadImage"),"aria-label":G.$t("g.downloadImage"),onClick:I},q[1]||(q[1]=[c("i",{class:"icon-[lucide--download] h-4 w-4"},null,-1)]),8,N0),c("button",{class:K(wn),title:G.$t("g.removeImage"),"aria-label":G.$t("g.removeImage"),onClick:_},q[2]||(q[2]=[c("i",{class:"icon-[lucide--x] h-4 w-4"},null,-1)]),8,I0)])):E("",!0)],40,w0),c("div",M0,[f.value?(d(),$("span",P0,V(G.$t("g.errorLoadingImage")),1)):m.value?(d(),$("span",D0,V(G.$t("g.loading"))+"... ",1)):(d(),$("span",A0,V(u.value||G.$t("g.calculatingDimensions")),1))]),b.value?(d(),$("div",L0,[(d(!0),$(oe,null,be(G.imageUrls,(te,le)=>(d(),$("button",{key:le,class:K(R(le)),"aria-current":le===a.value?"true":void 0,"aria-label":G.$t("g.viewImageOfTotal",{index:le+1,total:G.imageUrls.length}),onClick:n(X=>M(le),"onClick")},null,10,E0))),128))])):E("",!0)],32)):E("",!0)}}}),O0={key:0,class:"node-error p-2 text-sm text-red-500"},R0={key:1,class:"lg-node-content flex grow flex-col"},W0=H({__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()),l=L(null),{toastErrorHandler:a}=Bt();return Ta(i=>(l.value=i.message,a(i),!1)),(i,r)=>l.value?(d(),$("div",O0,V(h(Ae)("nodeErrors.content","Node Content Error")),1)):(d(),$("div",R0,[he(i.$slots,"default",{},()=>[t.value&&i.media?.type==="video"?(d(),W(m0,{key:0,"image-urls":i.media.urls,"node-id":s.value,class:"mt-2"},null,8,["image-urls","node-id"])):t.value&&i.media?.type==="image"?(d(),W(V0,{key:1,"image-urls":i.media.urls,"node-id":s.value,class:"mt-2"},null,8,["image-urls","node-id"])):E("",!0)])]))}}),z0={key:0,class:"node-error p-2 text-sm text-red-500"},B0=["data-node-id"],F0={key:0,class:"flex flex-col justify-center items-center relative"},U0={class:"relative mb-1"},G0=["data-testid"],j0={key:1,class:"min-h-0 flex-1 flex"},H0={key:2,class:"min-h-0 flex-1 px-4"},q0=["aria-label"],K0="absolute h-3 w-3 opacity-0 pointer-events-auto focus-visible:outline focus-visible:outline-2 focus-visible:outline-white/40",Q0=225,la="h-2 bg-primary-500 transition-all duration-300",Y0=H({__name:"LGraphNode",props:{nodeData:{},error:{default:null}},setup(e){const{t:o}=fe(),{handleNodeCollapse:t,handleNodeTitleUpdate:s,handleNodeRightClick:l}=kl(),{bringNodeToFront:a}=el();Ww(()=>e.nodeData.id,"node");const{selectedNodeIds:i}=He(ge()),r=y(()=>i.value.has(e.nodeData.id)),u=y(()=>pn(e.nodeData)),{executing:f,progress:m}=zw(u),v=ut(),p=y(()=>v.lastExecutionErrorNodeId===e.nodeData.id),w=y(()=>!!(p.value||e.nodeData.hasErrors||e.error||(v.lastNodeErrors?.[e.nodeData.id]?.errors.length??0)>0)),C=y(()=>e.nodeData.titleMode!==Er.NO_TITLE),g=y(()=>e.nodeData.flags?.collapsed??!1),b=y(()=>e.nodeData.mode===Oe.BYPASS),k=y(()=>e.nodeData.mode===Oe.NEVER),N=y(()=>{const pe=ct();return e.nodeData.bgcolor?Vr(e.nodeData.bgcolor,!!pe.completedActivePalette.light_theme):""}),T=y(()=>{const pe=re().get("Comfy.Node.Opacity")??1;return b.value||k.value?pe*.5:pe}),x=y(()=>Or(e.nodeData).length>0),S=y(()=>!!e.nodeData.outputs?.length),{handleWheel:I,shouldHandleNodePointerEvents:_}=io(),M=L(null),{toastErrorHandler:P}=Bt();Ta(pe=>(M.value=pe.message,P(pe),!1));const{position:B,size:j,zIndex:U}=Bw(()=>e.nodeData.id),{pointerHandlers:R}=Rw(()=>e.nodeData.id),{onPointerdown:F,...z}=R,{startDrag:G}=_l();async function q(pe){if(pe.altKey&&dt.value){const ke=Qe.cloneNodes([dt.value]);if(ke?.created?.length){const[_e]=ke.created;G(pe,`${_e.id}`),De.isDraggingVueNodes.value=!0,await Be(),a(`${_e.id}`);return}}F(pe)}n(q,"nodeOnPointerdown");const Q=n(pe=>{pe.preventDefault(),pe.stopPropagation(),l(pe,e.nodeData.id),Bv(pe)},"handleContextMenu");We(()=>{te()});function te(){const pe=yt.value,{width:ke,height:_e}=j.value;if(!pe)return;const Ie=g.value?"-x":"";pe.style.setProperty(`--node-width${Ie}`,`${ke}px`),pe.style.setProperty(`--node-height${Ie}`,`${_e}px`)}n(te,"initSizeStyles");const{startResize:le}=Uw((pe,ke)=>{if(g.value)return;const _e=Math.max(pe.size.width,Q0);ke.style.setProperty("--node-width",`${_e}px`),ke.style.setProperty("--node-height",`${pe.size.height}px`)}),X=n(pe=>{pe.button===0&&_.value&&(e.nodeData.flags?.pinned||e.nodeData.resizable!==!1&&le(pe))},"handleResizePointerDown");se(g,pe=>{const ke=yt.value;if(!ke)return;const[_e,Ie]=pe?["","-x"]:["-x",""],ee=ke.style.getPropertyValue(`--node-width${_e}`);ke.style.setProperty(`--node-width${Ie}`,ee),ke.style.setProperty(`--node-width${_e}`,"");const Z=ke.style.getPropertyValue(`--node-height${_e}`);ke.style.setProperty(`--node-height${Ie}`,Z),ke.style.setProperty(`--node-height${_e}`,"")});const de=y(()=>!!Dt.value&&Dt.value.urls.length>0),{latestPreviewUrl:ae,shouldShowPreviewImg:Me}=Fw(()=>e.nodeData.id,{isCollapsed:g}),Fe=y(()=>w.value?"border-node-stroke-error":!C.value&&e.nodeData.bgcolor&&Rr(e.nodeData.bgcolor)?"border-0":""),Ke=y(()=>ne(r.value&&"outline-node-component-outline",w.value&&"outline-node-stroke-error",f.value&&"outline-node-stroke-executing")),Ve=y(()=>ne(e.nodeData.flags?.pinned?"cursor-default":De.isDraggingVueNodes.value?"cursor-grabbing":"cursor-grab")),xe=y(()=>{switch(e.nodeData.shape){case $t.BOX:return"rounded-none";case $t.CARD:return"rounded-tl-2xl rounded-br-2xl rounded-tr-none rounded-bl-none";default:return"rounded-2xl"}}),ze=y(()=>{switch(e.nodeData.shape){case $t.BOX:return"before:rounded-none";case $t.CARD:return"before:rounded-tl-2xl before:rounded-br-2xl before:rounded-tr-none before:rounded-bl-none";default:return"before:rounded-2xl"}}),Ye=n(()=>{t(e.nodeData.id,!g.value)},"handleCollapse"),ht=n(pe=>{s(e.nodeData.id,pe)},"handleHeaderTitleUpdate"),uo=n(()=>{const pe=Y.rootGraph;if(!pe){console.warn("LGraphNode: No graph available for subgraph navigation");return}const ke=pn(e.nodeData),_e=Ds(pe,ke);if(!_e?.isSubgraphNode()||!("subgraph"in _e)){console.warn("LGraphNode: Node is not a valid subgraph node",_e);return}const Ie=Y.canvas;if(!Ie||typeof Ie.openSubgraph!="function"){console.warn("LGraphNode: Canvas or openSubgraph method not available");return}Ie.openSubgraph(_e.subgraph,_e)},"handleEnterSubgraph"),Gt=_o(),Pt=y(()=>e.nodeData.subgraphId?`${e.nodeData.subgraphId}:${e.nodeData.id}`:e.nodeData.id),dt=y(()=>{const pe=pn(e.nodeData);return Ds(Y.rootGraph,pe)}),Dt=y(()=>{const pe=Gt.nodeOutputs[Pt.value],ke=dt.value;if(!ke||!pe?.images?.length)return;const _e=Gt.getNodeImageUrls(ke);if(!_e?.length)return;const Ie=ke.inputs?.some(Z=>Z.type==="VIDEO");return{type:ke.previewMediaType==="video"||!ke.previewMediaType&&Ie?"video":"image",urls:_e}}),yt=L(),ot=L(!1);function co(pe){const ke=dt.value;if(!ke||!ke.onDragOver){ot.value=!1;return}const _e=ke.onDragOver(pe);ot.value=_e}n(co,"handleDragOver");function po(){ot.value=!1}n(po,"handleDragLeave");async function jt(pe){ot.value=!1;const ke=dt.value;!ke||!ke.onDragDrop||await ke.onDragDrop(pe)}return n(jt,"handleDrop"),(pe,ke)=>M.value?(d(),$("div",z0,V(h(Ae)("nodeErrors.render","Node Render Error")),1)):(d(),$("div",It({key:1,ref_key:"nodeContainerRef",ref:yt,tabindex:"0","data-node-id":pe.nodeData.id,class:h(ne)("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",h(_)&&"hover:ring-7 ring-node-component-ring","outline-transparent outline-2 focus-visible:outline-node-component-outline",Fe.value,Ke.value,Ve.value,{[`${ze.value} before:pointer-events-none before:absolute before:bg-bypass/60 before:inset-0`]:b.value,[`${ze.value} before:pointer-events-none before:absolute before:inset-0`]:k.value,"ring-4 ring-primary-500 bg-primary-500/10":ot.value},h(_)?"pointer-events-auto":"pointer-events-none",!g.value&&" pb-1"),style:[{transform:`translate(${h(B).x??0}px, ${(h(B).y??0)-h(ve).NODE_TITLE_HEIGHT}px)`,zIndex:h(U),opacity:T.value,"--component-node-background":N.value}]},z,{onPointerdown:q,onWheel:ke[0]||(ke[0]=(..._e)=>h(I)&&h(I)(..._e)),onContextmenu:Q,onDragover:Ce(co,["prevent"]),onDragleave:po,onDrop:Ce(jt,["stop","prevent"])}),[C.value?(d(),$("div",F0,[g.value?(d(),$(oe,{key:0},[x.value?(d(),W(As,{key:0,multi:"",class:"absolute left-0 -translate-x-1/2"})):E("",!0),S.value?(d(),W(As,{key:1,multi:"",class:"absolute right-0 translate-x-1/2"})):E("",!0),O(Ls,{"node-data":pe.nodeData,unified:""},null,8,["node-data"])],64)):E("",!0),O(Wr,{"node-data":pe.nodeData,collapsed:g.value,onCollapse:Ye,"onUpdate:title":ht,onEnterSubgraph:uo},null,8,["node-data","collapsed"])])):E("",!0),g.value&&h(f)&&h(m)!==void 0?(d(),$("div",{key:1,class:K(h(ne)("absolute inset-x-4 -bottom-[1px] translate-y-1/2 rounded-full",la)),style:ye({width:`${Math.min(h(m)*100,100)}%`})},null,6)):E("",!0),g.value?E("",!0):(d(),$(oe,{key:2},[c("div",U0,[h(f)&&h(m)!==void 0?(d(),$("div",{key:0,class:K(h(ne)("absolute inset-x-0 top-1/2 -translate-y-1/2",h(m)<1&&"rounded-r-full",la)),style:ye({width:`${Math.min(h(m)*100,100)}%`})},null,6)):E("",!0)]),c("div",{class:"flex flex-1 flex-col gap-1 pb-2","data-testid":`node-body-${pe.nodeData.id}`},[O(Ls,{"node-data":pe.nodeData},null,8,["node-data"]),pe.nodeData.widgets?.length?(d(),W(tl,{key:0,"node-data":pe.nodeData},null,8,["node-data"])):E("",!0),de.value?(d(),$("div",j0,[O(W0,{"node-data":pe.nodeData,media:Dt.value},null,8,["node-data","media"])])):E("",!0),h(Me)?(d(),$("div",H0,[O(Zw,{"image-url":h(ae)||null},null,8,["image-url"])])):E("",!0)],8,G0)],64)),!g.value&&pe.nodeData.resizable!==!1?(d(),$("div",{key:3,role:"button","aria-label":h(o)("g.resizeFromBottomRight"),class:K(h(ne)(K0,"right-0 bottom-0 cursor-se-resize")),onPointerdown:Ce(X,["stop"])},null,42,q0)):E("",!0)],16,B0))}});let Po=[],Do=!1,Ao=null;const J0=n(()=>{function e(l){const a=Object.keys(l.settingValues).length===0||!l.get("Comfy.TutorialCompleted"),i=!localStorage.getItem("workflow"),r=!localStorage.getItem("Comfy.PreviousWorkflow");return a&&i&&r}n(e,"checkIsNewUser");async function o(l){if(Do){if(Ao)try{await l()}catch(a){console.error("New user initialization callback failed:",a)}}else Po.push(l)}n(o,"registerInitCallback");async function t(l){if(!Do){if(Ao=e(l),Do=!0,!Ao){Po=[];return}await l.set("Comfy.InstalledVersion","1.37.9");for(const a of Po)try{await a()}catch(i){console.error("New user initialization callback failed:",i)}Po=[]}}n(t,"initializeIfNewUser");function s(){return Do?Ao:null}return n(s,"isNewUser"),{registerInitCallback:o,initializeIfNewUser:t,isNewUser:s}},"newUserService"),X0=H({__name:"SelectionRectangle",setup(e){const o=ge(),t=L(null);oo(()=>{const a=o.canvas;if(!a){t.value=null;return}const{pointer:i,dragging_rectangle:r}=a;if(r&&i.eDown&&i.eMove){const u=i.eDown.safeOffsetX,f=i.eDown.safeOffsetY,m=i.eMove.safeOffsetX-u,v=i.eMove.safeOffsetY-f;t.value={x:u,y:f,w:m,h:v}}else t.value=null});const s=y(()=>t.value!==null),l=y(()=>{const a=t.value;if(!a)return{};const i=a.w>=0?a.x:a.x+a.w,r=a.h>=0?a.y:a.y+a.h,u=Math.abs(a.w),f=Math.abs(a.h);return{left:`${i}px`,top:`${r}px`,width:`${u}px`,height:`${f}px`}});return(a,i)=>s.value?(d(),$("div",{key:0,class:"pointer-events-none absolute z-9999 border border-blue-400 bg-blue-500/20",style:ye(l.value)},null,4)):E("",!0)}}),Z0={key:0,class:"workflow-tabs-container pointer-events-auto relative h-9.5 w-full"},e1={key:0,class:"app-drag fixed top-0 left-0 z-10 h-[var(--comfy-topbar-height)] w-full"},t1={class:"flex h-full items-center border-b border-interface-stroke bg-comfy-menu-bg shadow-interface"},o1={class:"sidebar-content-container h-full w-full overflow-x-hidden overflow-y-auto"},n1=H({__name:"GraphCanvas",emits:["ready"],setup(e,{emit:o}){const t=o,s=L(null),l=Xe(null),a=re(),i=St(),r=lt(),u=ge(),f=ut(),m=Nt(),v=ct(),p=Ha(),w=io(),C=y(()=>a.get("Comfy.UseNewMenu")!=="Disabled"),g=y(()=>a.get("Comfy.Workflow.WorkflowTabsPosition")),b=y(()=>a.get("Comfy.Graph.CanvasMenu")),k=y(()=>a.get("Comfy.EnableTooltips")),N=y(()=>a.get("Comfy.Canvas.SelectionToolbox")),T=y(()=>r.sidebarTab.activeSidebarTab),x=y(()=>!r.focusMode&&C.value),S=y(()=>a.get("Comfy.Minimap.Visible")),{shouldRenderVueNodes:I}=jo(),_=fs(),M=n(async()=>{I.value&&(_.disposeNodeManagerAndSyncs(),await Be(),_.initializeNodeManager())},"handleVueNodeLifecycleReset");se(()=>u.currentGraph,M),se(()=>u.isInSubgraph,async(R,F)=>{F&&!R&&Re().updateActiveGraph(),await M()});const P=y(()=>Array.from(_.nodeManager.value?.vueNodeData?.values()??[]));we(()=>{ve.nodeOpacity=a.get("Comfy.Node.Opacity")}),we(()=>{ve.nodeLightness=v.completedActivePalette.light_theme?.5:void 0}),we(()=>{i.showDeprecated=a.get("Comfy.Node.ShowDeprecated")}),we(()=>{i.showExperimental=a.get("Comfy.Node.ShowExperimental")}),we(()=>{const R=a.get("Comfy.TextareaWidget.Spellcheck");document.querySelectorAll("textarea.comfy-multiline-input").forEach(z=>{z.spellcheck=R,z.focus(),z.blur()})}),se(()=>a.get("Comfy.WidgetControlMode"),()=>{u.canvas&&(Es(Y.rootGraph,R=>{if(R.widgets){for(const F of R.widgets)if(F[jr]&&(Vs(F),!!F.linkedWidgets))for(const z of F.linkedWidgets)Vs(z)}}),u.canvas.setDirty(!0))}),se([()=>u.canvas,()=>a.get("Comfy.ColorPalette")],async([R,F])=>{R&&await p.loadColorPalette(F)}),se(()=>a.get("Comfy.Canvas.BackgroundImage"),async()=>{if(!u.canvas)return;const R=v.activePaletteId;R&&(await p.loadColorPalette(R),u.canvas.setDirty(!1,!0))}),se(()=>v.activePaletteId,async R=>{await a.set("Comfy.ColorPalette",R)}),se(()=>[f.nodeLocationProgressStates,u.canvas],([R,F])=>{if(F?.graph){for(const z of F.graph.nodes){const G=Re().nodeIdToNodeLocatorId(z.id),q=R[G];q&&q.state==="running"?z.progress=q.value/q.max:z.progress=void 0}F.setDirty(!0,!1)}},{deep:!0}),se(()=>f.lastNodeErrors,R=>{Y.graph&&(Es(Y.rootGraph,F=>{for(const q of F.inputs)delete q.hasErrors;for(const q of F.outputs)delete q.hasErrors;const z=R?.[F.id];if(!z)return;z.errors.filter(q=>q.extra_info?.input_name!==void 0).forEach(q=>{const Q=q.extra_info.input_name,te=F.findInputSlot(Q);te!==-1&&(F.inputs[te].hasErrors=!0)})}),Y.canvas.setDirty(!0,!0))}),Ee(s,"litegraph:no-items-selected",()=>{m.add({severity:"warn",summary:ue("toastMessages.nothingSelected"),life:2e3})},{passive:!0});const B=n(async()=>{try{const R=await Te.getCustomNodesI18n();Gr(R)}catch(R){console.error("Failed to load custom nodes i18n",R)}},"loadCustomNodesI18n"),j=L(!1),U=hw();return rw(s),fw(),iw(),We(async()=>{pw(),uw(),dw(),zr(),vw(),jo(),Y.vueAppReady=!0,r.spinner=!0,Br.init(),await B();try{await a.loadSettingValues()}catch(z){if(z instanceof Fr)localStorage.removeItem("Comfy.userId"),localStorage.removeItem("Comfy.userName"),window.location.reload();else throw z}mw.forEach(a.addSetting),await J0().initializeIfNewUser(a),await Y.setup(s.value),u.canvas=Y.canvas,u.canvas.render_canvas_border=!1,r.spinner=!1,ds().setPopoverRef(l.value),window.app=Y,window.graph=Y.graph,j.value=!0,_.setupEmptyGraphListener(),Y.canvas.onSelectionChange=eo(Y.canvas.onSelectionChange,()=>u.updateSelectedItems()),v.customPalettes=a.get("Comfy.CustomColorPalettes"),await U.initializeWorkflow(),U.restoreWorkflowTabsState(),await U.loadTemplateFromUrlIfPresent();const{useReleaseStore:R}=await Bn(async()=>{const{useReleaseStore:z}=await Promise.resolve().then(()=>nm);return{useReleaseStore:z}},void 0,import.meta.url);R().initialize(),se(()=>a.get("Comfy.Locale"),async()=>{await Se().execute("Comfy.RefreshNodeDefinitions"),await tt().reloadCurrentWorkflow()}),xt(()=>ge().canvas,z=>{Ee(z.canvas,"litegraph:set-graph",()=>{Re().updateActiveGraph()})},{immediate:!0}),t("ready")}),vt(()=>{_.cleanup()}),(R,F)=>(d(),$(oe,null,[j.value?(d(),W(id,{key:0},Wn({"graph-canvas-panel":A(()=>[b.value?(d(),W(Jm,{key:0,class:"pointer-events-auto"})):E("",!0),j.value&&S.value&&C.value?(d(),W(Ew,{key:1,class:"pointer-events-auto"})):E("",!0)]),_:2},[x.value?{name:"workflow-tabs",fn:A(()=>[g.value==="Topbar"?(d(),$("div",Z0,[h(Ur)()&&g.value!=="Topbar"?(d(),$("div",e1)):E("",!0),c("div",t1,[O(Cl),O(wl)])])):E("",!0)]),key:"0"}:void 0,x.value?{name:"side-toolbar",fn:A(()=>[O(Mb)]),key:"1"}:void 0,x.value?{name:"side-bar-panel",fn:A(()=>[c("div",o1,[T.value?(d(),W(is,{key:0,extension:T.value},null,8,["extension"])):E("",!0)])]),key:"2"}:void 0,x.value?{name:"topmenu",fn:A(()=>[O(dm)]),key:"3"}:void 0,x.value?{name:"bottom-panel",fn:A(()=>[O(bm)]),key:"4"}:void 0,x.value?{name:"right-side-panel",fn:A(()=>[O(dh)]),key:"5"}:void 0]),1024)):E("",!0),c("canvas",{id:"graph-canvas",ref_key:"canvasRef",ref:s,tabindex:"1",class:"absolute inset-0 size-full touch-none"},null,512),h(I)&&h(Y).canvas&&j.value?(d(),W(Cw,{key:1,canvas:h(Y).canvas,onWheelCapture:h(w).forwardEventToCanvas},{default:A(()=>[(d(!0),$(oe,null,be(P.value,z=>(d(),W(Y0,{key:z.id,"node-data":z,error:h(f).lastExecutionError?.node_id===z.id?"Execution error":null,"zoom-level":h(u).canvas?.ds?.scale||1,"data-node-id":z.id},null,8,["node-data","error","zoom-level","data-node-id"]))),128))]),_:1},8,["canvas","onWheelCapture"])):E("",!0),j.value?(d(),W(X0,{key:2})):E("",!0),k.value?(d(),W(Zm,{key:3})):E("",!0),O(_h,{ref_key:"nodeSearchboxPopoverRef",ref:l},null,512),j.value?(d(),$(oe,{key:4},[O(ig),N.value?(d(),W(ag,{key:0})):E("",!0),h(I)?E("",!0):(d(),W(Tm,{key:1}))],64)):E("",!0)],64))}}),s1={class:"flex flex-auto flex-col items-start"},a1={class:"my-4 text-lg font-medium"},l1=H({__name:"RerouteMigrationToast",setup(e){const{t:o}=fe(),t=Wt(),s=Re(),l=n(async()=>{const a=Y.rootGraph.serialize(),i=Hr(a);await Y.loadGraphData(i,!1,!1,s.activeWorkflow),t.removeGroup("reroute-migration")},"migrateToLitegraphReroute");return(a,i)=>(d(),W(h(Ia),{group:"reroute-migration"},{message:A(()=>[c("div",s1,[c("div",a1,V(h(o)("toastMessages.migrateToLitegraphReroute")),1),O(J,{class:"self-end",size:"sm",onClick:l},{default:A(()=>[$e(V(h(o)("g.migrate")),1)]),_:1})])]),_:1}))}}),ia="ComfyUI",i1=" - ComfyUI",r1=n(()=>{const e=ut(),o=re(),t=Re(),s=lt(),l=y(()=>e.isIdle?"":`[${Math.round(e.executionProgress*100)}%]`),a=y(()=>o.get("Comfy.UseNewMenu")!=="Disabled"),i=y(()=>o.get("Comfy.Workflow.AutoSave")==="after delay"),r=y(()=>!!t.activeWorkflow?.isModified),u=y(()=>!!t.activeWorkflow?.isPersisted),f=y(()=>s.shiftDown||i.value?!1:!!(!u.value||r.value)),m=y(()=>f.value?" *":""),v=y(()=>{const g=t.activeWorkflow?.filename;return g?m.value+g+i1:ia}),p=y(()=>{const b=Object.entries(e.nodeProgressStates).filter(([S,I])=>I.state==="running");if(b.length===0)return"";if(b.length>1)return`${l.value}[${b.length} ${ue("g.nodesRunning","nodes running")}]`;const[k,N]=b[0],T=Math.round(N.value/N.max*100),x=e.activePrompt?.workflow?.changeTracker?.activeState.nodes.find(S=>String(S.id)===k)?.type||"Node";return`${l.value}[${T}%] ${x}`}),w=y(()=>l.value+(a.value?v.value:ia)),C=y(()=>p.value||w.value);Ql(C)},"useBrowserTabTitle"),u1={},c1={class:"size-full bg-modal-panel-background pr-6 pb-8 pl-4"};function d1(e,o){return d(),$("div",c1,[he(e.$slots,"default")])}n(d1,"_sfc_render");const p1=Le(u1,[["render",d1]]),f1={class:"text-neutral text-base"},m1={class:"flex gap-2"},v1={class:"relative flex gap-2 px-6 pb-4"},g1=H({__name:"SampleModelSelector",props:{onClose:{type:Function}},setup(e){const o=L([{name:"Vue",value:"vue"},{name:"React",value:"react"},{name:"Angular",value:"angular"},{name:"Svelte",value:"svelte"}]),t=L([{name:"Project A",value:"proj-a"},{name:"Project B",value:"proj-b"},{name:"Project C",value:"proj-c"}]),s=L([{name:"Popular",value:"popular"},{name:"Latest",value:"latest"},{name:"A → Z",value:"az"}]),l=L([{id:"installed",label:"Installed",icon:"icon-[lucide--download]"},{title:"TAGS",items:[{id:"tag-sd15",label:"SD 1.5",icon:"icon-[lucide--tag]"},{id:"tag-sdxl",label:"SDXL",icon:"icon-[lucide--tag]"},{id:"tag-utility",label:"Utility",icon:"icon-[lucide--tag]"}]},{title:"CATEGORIES",items:[{id:"cat-models",label:"Models",icon:"icon-[lucide--layers]"},{id:"cat-nodes",label:"Nodes",icon:"icon-[lucide--grid-3x3]"}]}]);Zo(an,e.onClose);const a=L(""),i=L(""),r=L([]),u=L([]),f=L("popular"),m=L("installed"),v=y(()=>bl());return(p,w)=>(d(),W(as,{"content-title":p.$t("assetBrowser.checkpoints")},{leftPanel:A(()=>[O(ls,{modelValue:m.value,"onUpdate:modelValue":w[0]||(w[0]=C=>m.value=C),"nav-items":l.value},{"header-icon":A(()=>w[6]||(w[6]=[c("i",{class:"text-neutral icon-[lucide--puzzle]"},null,-1)])),"header-title":A(()=>[c("span",f1,V(p.$t("g.title")),1)]),_:1},8,["modelValue","nav-items"])]),header:A(()=>[O(on,{modelValue:a.value,"onUpdate:modelValue":w[1]||(w[1]=C=>a.value=C),size:"lg",class:"max-w-[384px]"},null,8,["modelValue"])]),"header-right-area":A(()=>[c("div",m1,[O(J,{variant:"primary",onClick:n(()=>{},"onClick")},{default:A(()=>[w[7]||(w[7]=c("i",{class:"icon-[lucide--upload]"},null,-1)),c("span",null,V(p.$t("g.upload")),1)]),_:1}),O(ll,null,{default:A(({close:C})=>[O(J,{variant:"secondary",onClick:n(()=>{C()},"onClick")},{default:A(()=>[w[8]||(w[8]=c("i",{class:"icon-[lucide--download]"},null,-1)),c("span",null,V(p.$t("g.settings")),1)]),_:2},1032,["onClick"]),O(J,{variant:"primary",onClick:n(()=>{C()},"onClick")},{default:A(()=>[w[9]||(w[9]=c("i",{class:"icon-[lucide--scroll]"},null,-1)),c("span",null,V(p.$t("g.profile")),1)]),_:2},1032,["onClick"])]),_:1})])]),contentFilter:A(()=>[c("div",v1,[O(Rt,{modelValue:r.value,"onUpdate:modelValue":w[2]||(w[2]=C=>r.value=C),"search-query":i.value,"onUpdate:searchQuery":w[3]||(w[3]=C=>i.value=C),class:"w-[250px]",label:p.$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"]),O(Rt,{modelValue:u.value,"onUpdate:modelValue":w[4]||(w[4]=C=>u.value=C),label:p.$t("assetBrowser.selectProjects"),options:t.value},null,8,["modelValue","label","options"]),O(Ho,{modelValue:f.value,"onUpdate:modelValue":w[5]||(w[5]=C=>f.value=C),label:p.$t("assetBrowser.sortingType"),options:s.value,class:"w-[135px]"},{icon:A(()=>w[10]||(w[10]=[c("i",{class:"icon-[lucide--filter]"},null,-1)])),_:1},8,["modelValue","label","options"])])]),content:A(()=>[c("div",{style:ye(v.value)},[(d(),$(oe,null,be(100,C=>O(Wo,{key:C,size:"regular"},{top:A(()=>[O(zo,{ratio:"landscape"},{default:A(()=>w[11]||(w[11]=[c("div",{class:"h-full w-full bg-blue-500"},null,-1)])),"top-right":A(()=>[O(J,{size:"icon",class:"!bg-white !text-neutral-900",onClick:n(()=>{},"onClick")},{default:A(()=>w[12]||(w[12]=[c("i",{class:"icon-[lucide--info]"},null,-1)])),_:1})]),"bottom-right":A(()=>[O(Bo,{label:"png"}),O(Bo,{label:"1.2 MB"}),O(Bo,{label:"LoRA"},{icon:A(()=>w[13]||(w[13]=[c("i",{class:"icon-[lucide--folder]"},null,-1)])),_:1})]),_:1})]),bottom:A(()=>[O(Ro)]),_:2},1024)),64))],4)]),rightPanel:A(()=>[O(p1)]),_:1},8,["content-title"]))}}),ra="global-model-selector",h1=n(()=>{const e=gt(),o=rt();function t(){o.closeDialog({key:ra})}n(t,"hide");function s(){e.showLayoutDialog({key:ra,component:g1,props:{onClose:t}})}return n(s,"show"),{show:s,hide:t}},"useModelSelectorDialog");function y1(e,o){const t=qr.safeParse(e);if(!t.success){const g=t.error.errors.map(b=>`${b.path.join(".")}: ${b.message}`).join(", ");return console.error("Invalid asset item:",g),{success:!1,error:{code:"INVALID_ASSET",message:"Asset schema validation failed",assetId:e.id,details:{validationErrors:g}}}}const s=t.data,l=s.user_metadata;if(!l)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 a=l.filename;if(typeof a!="string"||a.length===0)return console.error(`Asset ${s.id} has invalid user_metadata.filename (expected non-empty string, got ${typeof a})`),{success:!1,error:{code:"INVALID_ASSET",message:`Invalid filename (expected non-empty string, got ${typeof a})`,assetId:s.id}};if(s.tags.length===0)return console.error(`Asset ${s.id} has no tags defined (expected at least one category tag)`),{success:!1,error:{code:"INVALID_ASSET",message:"Asset has no tags defined",assetId:s.id}};const i=s.tags.find(g=>g!==Os&&g!==Rs);if(!i)return console.error(`Asset ${s.id} has no valid category tag. Available tags: ${s.tags.join(", ")} (expected tag other than '${Os}' or '${Rs}')`),{success:!1,error:{code:"INVALID_ASSET",message:"Asset has no valid category tag",assetId:s.id,details:{availableTags:s.tags}}};const u=Hn().getNodeProvider(i);if(!u)return console.error(`No node provider registered for category: ${i}`),{success:!1,error:{code:"NO_PROVIDER",message:`No node provider registered for category: ${i}`,assetId:s.id,details:{category:i}}};const m=So().getCanvasCenter(),v=ve.createNode(u.nodeDef.name,u.nodeDef.display_name,{pos:m});if(!v)return console.error(`Failed to create node for type: ${u.nodeDef.name}`),{success:!1,error:{code:"NODE_CREATION_FAILED",message:`Failed to create node for type: ${u.nodeDef.name}`,assetId:s.id,details:{nodeType:u.nodeDef.name}}};const p=Re(),w=p.isSubgraphActive?p.activeSubgraph:Y.canvas.graph;if(!w)return console.error("No active graph available"),{success:!1,error:{code:"NO_GRAPH",message:"No active graph available",assetId:s.id}};const C=v.widgets?.find(g=>g.name===u.key);return C?(C.value=a,w.add(v),{success:!0,value:v}):(console.error(`Widget ${u.key} not found on node ${u.nodeDef.name}`),{success:!1,error:{code:"MISSING_WIDGET",message:`Widget ${u.key} not found on node ${u.nodeDef.name}`,assetId:s.id,details:{widgetName:u.key,nodeType:u.nodeDef.name}}})}n(y1,"createModelNodeFromAsset");const Lo={DISTRIBUTION:"tf_42243568391700",ANONYMOUS_EMAIL:"tf_anonymous_requester_email",EMAIL:"tf_40029135130388",USER_ID:"tf_42515251051412"},b1="https://support.comfy.org/hc/en-us/requests/new";function w1(e){const o=new URLSearchParams({[Lo.DISTRIBUTION]:"oss"});return e?.userEmail&&(o.append(Lo.ANONYMOUS_EMAIL,e.userEmail),o.append(Lo.EMAIL,e.userEmail)),e?.userId&&o.append(Lo.USER_ID,e.userId),`${b1}?${o.toString()}`}n(w1,"buildSupportUrl");const{isActiveSubscription:Cn,showSubscriptionDialog:kn}=qn(),Eo="1.22.2";function C1(){const e=tt(),o=Re(),t=gt(),s=ct(),l=Wa(),a=Nt(),i=ge(),r=ut(),{staticUrls:u,buildDocsUrl:f}=ao(),m=re(),v=so(),p=rt(),w=Kr(),{getSelectedNodes:C,toggleSelectedNodesMode:g}=Zn(),b=n(()=>o.activeWorkflow?.changeTracker,"getTracker");function k(){return m.get("Comfy.Queue.QPOV2")}n(k,"isQueuePanelV2Enabled");async function N(){await m.set("Comfy.Queue.QPOV2",!k())}n(N,"toggleQueuePanelV2");const T=n(S=>{const I=C();if(I.length===0)return;const _=re().get("Comfy.SnapToGrid.GridSize");I.forEach(M=>{M.pos=S(M.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:n(async()=>{Y.rootGraph._nodes.length>0,await e.loadBlankWorkflow()},"function")},{id:"Comfy.OpenWorkflow",icon:"pi pi-folder-open",label:"Open Workflow",menubarLabel:"Open",category:"essentials",function:n(()=>{Y.ui.loadFile()},"function")},{id:"Comfy.LoadDefaultWorkflow",icon:"pi pi-code",label:"Load Default Workflow",function:n(async()=>{Y.rootGraph._nodes.length>0,await e.loadDefaultWorkflow()},"function")},{id:"Comfy.SaveWorkflow",icon:"pi pi-save",label:"Save Workflow",menubarLabel:"Save",category:"essentials",function:n(async()=>{const S=Re().activeWorkflow;S&&await e.saveWorkflow(S)},"function")},{id:"Comfy.PublishSubgraph",icon:"pi pi-save",label:"Publish Subgraph",menubarLabel:"Publish",function:n(async()=>{await Oa().publishSubgraph()},"function")},{id:"Comfy.SaveWorkflowAs",icon:"pi pi-save",label:"Save Workflow As",menubarLabel:"Save As",category:"essentials",function:n(async()=>{const S=Re().activeWorkflow;S&&await e.saveWorkflowAs(S)},"function")},{id:"Comfy.ExportWorkflow",icon:"pi pi-download",label:"Export Workflow",menubarLabel:"Export",category:"essentials",function:n(async()=>{await e.exportWorkflow("workflow","workflow")},"function")},{id:"Comfy.ExportWorkflowAPI",icon:"pi pi-download",label:"Export Workflow (API Format)",menubarLabel:"Export (API)",function:n(async()=>{await e.exportWorkflow("workflow_api","output")},"function")},{id:"Comfy.Undo",icon:"pi pi-undo",label:"Undo",category:"essentials",function:n(async()=>{p.isDialogOpen("global-mask-editor")?w.canvasHistory.undo():await b()?.undo?.()},"function")},{id:"Comfy.Redo",icon:"pi pi-refresh",label:"Redo",category:"essentials",function:n(async()=>{p.isDialogOpen("global-mask-editor")?w.canvasHistory.redo():await b()?.redo?.()},"function")},{id:"Comfy.ClearWorkflow",icon:"pi pi-trash",label:"Clear Workflow",category:"essentials",function:n(()=>{if(!re().get("Comfy.ConfirmClear")||confirm("Clear workflow?")){if(Y.clean(),Y.canvas.subgraph){const I=Y.canvas.subgraph;Yr(I).forEach(M=>I.remove(M))}Te.dispatchCustomEvent("graphCleared")}},"function")},{id:"Comfy.Canvas.ResetView",icon:"pi pi-expand",label:"Reset View",function:n(()=>{So().resetView()},"function")},{id:"Comfy.OpenClipspace",icon:"pi pi-clipboard",label:"Clipspace",function:n(()=>{Y.openClipspace()},"function")},{id:"Comfy.RefreshNodeDefinitions",icon:"pi pi-refresh",label:"Refresh Node Definitions",category:"essentials",function:n(async()=>{await Y.refreshComboInNodes()},"function")},{id:"Comfy.Interrupt",icon:"pi pi-stop",label:"Interrupt",category:"essentials",function:n(async()=>{await Te.interrupt(r.activePromptId),a.add({severity:"info",summary:ue("g.interrupted"),detail:ue("toastMessages.interrupted"),life:1e3})},"function")},{id:"Comfy.ClearPendingTasks",icon:"pi pi-stop",label:"Clear Pending Tasks",category:"essentials",function:n(async()=>{await zt().clear(["queue"]),a.add({severity:"info",summary:ue("g.confirmed"),detail:ue("toastMessages.pendingTasksDeleted"),life:3e3})},"function")},{id:"Comfy.BrowseTemplates",icon:"pi pi-folder-open",label:"Browse Templates",function:n(()=>{ps().show()},"function")},{id:"Comfy.Canvas.ZoomIn",icon:"pi pi-plus",label:"Zoom In",category:"view-controls",function:n(()=>{const S=Y.canvas.ds;S.changeScale(S.scale*1.1,S.element?[S.element.width/2,S.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:n(()=>{const S=Y.canvas.ds;S.changeScale(S.scale/1.1,S.element?[S.element.width/2,S.element.height/2]:void 0),Y.canvas.setDirty(!0,!0)},"function")},{id:"Experimental.ToggleVueNodes",label:n(()=>`Experimental: ${re().get("Comfy.VueNodes.Enabled")?"Disable":"Enable"} Nodes 2.0`,"label"),function:n(async()=>{const S=re(),I=S.get("Comfy.VueNodes.Enabled")??!1;await S.set("Comfy.VueNodes.Enabled",!I)},"function")},{id:"Comfy.Canvas.FitView",icon:"pi pi-expand",label:"Fit view to selected nodes",menubarLabel:"Zoom to fit",category:"view-controls",function:n(()=>{if(Y.canvas.empty){a.add({severity:"error",summary:ue("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:n(()=>{Y.canvas.state.readOnly=!Y.canvas.state.readOnly},"function")},{id:"Comfy.Canvas.Lock",icon:"pi pi-lock",label:"Lock Canvas",category:"view-controls",function:n(()=>{Y.canvas.state.readOnly=!0},"function")},{id:"Comfy.Canvas.Unlock",icon:"pi pi-lock-open",label:"Unlock Canvas",function:n(()=>{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 S=re();let I=ve.SPLINE_LINK;return async()=>{const _=S.get("Comfy.LinkRenderMode");_===ve.HIDDEN_LINK?await S.set("Comfy.LinkRenderMode",I):(I=_,await S.set("Comfy.LinkRenderMode",ve.HIDDEN_LINK))}})(),active:n(()=>re().get("Comfy.LinkRenderMode")!==ve.HIDDEN_LINK,"active")},{id:"Comfy.Canvas.ToggleMinimap",icon:"pi pi-map",label:"Canvas Toggle Minimap",menubarLabel:"Minimap",versionAdded:"1.24.1",function:n(async()=>{const S=re();await S.set("Comfy.Minimap.Visible",!S.get("Comfy.Minimap.Visible"))},"function"),active:n(()=>re().get("Comfy.Minimap.Visible"),"active")},{id:"Comfy.Queue.ToggleOverlay",icon:"pi pi-history",label:n(()=>ue("queue.toggleJobHistory"),"label"),menubarLabel:n(()=>ue("queue.jobHistory"),"menubarLabel"),versionAdded:"1.37.0",category:"view-controls",function:n(()=>{$n().toggleOverlay()},"function"),active:n(()=>$n().isOverlayExpanded,"active")},{id:"Comfy.QueuePrompt",icon:"pi pi-play",label:"Queue Prompt",versionAdded:"1.3.7",category:"essentials",function:n(async S=>{if(!Cn.value){kn();return}const I=yo().batchCount;await Y.queuePrompt(0,I)},"function")},{id:"Comfy.QueuePromptFront",icon:"pi pi-play",label:"Queue Prompt (Front)",versionAdded:"1.3.7",category:"essentials",function:n(async S=>{if(!Cn.value){kn();return}const I=yo().batchCount;await Y.queuePrompt(-1,I)},"function")},{id:"Comfy.QueueSelectedOutputNodes",icon:"pi pi-play",label:"Queue Selected Output Nodes",versionAdded:"1.19.6",function:n(async S=>{if(!Cn.value){kn();return}const I=yo().batchCount,_=C(),M=Ua(_);if(M.length===0){a.add({severity:"error",summary:ue("toastMessages.nothingToQueue"),detail:ue("toastMessages.pleaseSelectOutputNodes"),life:3e3});return}const P=Jr(M);if(P.length===0){a.add({severity:"error",summary:ue("toastMessages.failedToQueue"),detail:ue("toastMessages.failedExecutionPathResolution"),life:3e3});return}await Y.queuePrompt(0,I,P)},"function")},{id:"Comfy.ShowSettingsDialog",icon:"pi pi-cog",label:"Show Settings Dialog",versionAdded:"1.3.7",category:"view-controls",function:n(()=>{t.showSettingsDialog()},"function")},{id:"Comfy.Graph.GroupSelectedNodes",icon:"pi pi-sitemap",label:"Group Selected Nodes",versionAdded:"1.3.7",category:"essentials",function:n(()=>{const{canvas:S}=Y;if(!S.selectedItems?.size){a.add({severity:"error",summary:ue("toastMessages.nothingToGroup"),detail:ue("toastMessages.pleaseSelectNodesToGroup"),life:3e3});return}const I=new Ot,_=re().get("Comfy.GroupSelectedNodes.Padding");I.resizeTo(S.selectedItems,_),S.graph?.add(I),I.recomputeInsideNodes(),nn().titleEditorTarget=I},"function")},{id:"Workspace.NextOpenedWorkflow",icon:"pi pi-step-forward",label:"Next Opened Workflow",versionAdded:"1.3.9",function:n(async()=>{await e.loadNextOpenedWorkflow()},"function")},{id:"Workspace.PreviousOpenedWorkflow",icon:"pi pi-step-backward",label:"Previous Opened Workflow",versionAdded:"1.3.9",function:n(async()=>{await e.loadPreviousOpenedWorkflow()},"function")},{id:"Comfy.Canvas.ToggleSelectedNodes.Mute",icon:"pi pi-volume-off",label:"Mute/Unmute Selected Nodes",versionAdded:"1.3.11",category:"essentials",function:n(()=>{g(Oe.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:n(()=>{g(Oe.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:n(()=>{C().forEach(S=>{S.pin(!S.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:n(()=>{for(const S of Y.canvas.selectedItems)(S instanceof mt||S instanceof Ot)&&S.pin(!S.pinned);Y.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.Resize",icon:"pi pi-minus",label:"Resize Selected Nodes",versionAdded:"",function:n(()=>{C().forEach(S=>{const I=S.computeSize();S.setSize([I[0],I[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:n(()=>{C().forEach(S=>{S.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 S=Xr.id,I=Zr.id;return async()=>{const _=re(),M=s.completedActivePalette;M.light_theme?(I=M.id,await _.set("Comfy.ColorPalette",S)):(S=M.id,await _.set("Comfy.ColorPalette",I))}})()},{id:"Workspace.ToggleBottomPanel",icon:"pi pi-list",label:"Toggle Bottom Panel",menubarLabel:"Bottom Panel",versionAdded:"1.3.22",category:"view-controls",function:n(()=>{v.toggleBottomPanel()},"function"),active:n(()=>v.bottomPanelVisible,"active")},{id:"Workspace.ToggleFocusMode",icon:"pi pi-eye",label:"Toggle Focus Mode",menubarLabel:"Focus Mode",versionAdded:"1.3.27",category:"view-controls",function:n(()=>{lt().toggleFocusMode()},"function"),active:n(()=>lt().focusMode,"active")},{id:"Comfy.Graph.FitGroupToContents",icon:"pi pi-expand",label:"Fit Group To Contents",versionAdded:"1.4.9",function:n(()=>{for(const S of Y.canvas.selectedItems)if(S instanceof Ot){S.recomputeInsideNodes();const I=re().get("Comfy.GroupSelectedNodes.Padding");S.resizeTo(S.children,I),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:n(()=>{window.open(u.githubIssues,"_blank")},"function")},{id:"Comfy.Help.OpenComfyUIDocs",icon:"pi pi-info-circle",label:"Open ComfyUI Docs",menubarLabel:"ComfyUI Docs",versionAdded:"1.5.5",function:n(()=>{window.open(f("/",{includeLocale:!0}),"_blank")},"function")},{id:"Comfy.Help.OpenComfyOrgDiscord",icon:"pi pi-discord",label:"Open Comfy-Org Discord",menubarLabel:"Comfy-Org Discord",versionAdded:"1.5.5",function:n(()=>{window.open(u.discord,"_blank")},"function")},{id:"Workspace.SearchBox.Toggle",icon:"pi pi-search",label:"Toggle Search Box",versionAdded:"1.5.7",function:n(()=>{ds().toggleVisible()},"function")},{id:"Comfy.Help.AboutComfyUI",icon:"pi pi-info-circle",label:"Open About ComfyUI",menubarLabel:"About ComfyUI",versionAdded:"1.6.4",function:n(()=>{t.showSettingsDialog("about")},"function")},{id:"Comfy.DuplicateWorkflow",icon:"pi pi-clone",label:"Duplicate Current Workflow",versionAdded:"1.6.15",function:n(async()=>{await e.duplicateWorkflow(o.activeWorkflow)},"function")},{id:"Workspace.CloseWorkflow",icon:"pi pi-times",label:"Close Current Workflow",versionAdded:"1.7.3",function:n(async()=>{o.activeWorkflow&&await e.closeWorkflow(o.activeWorkflow)},"function")},{id:"Comfy.ContactSupport",icon:"pi pi-question",label:"Contact Support",versionAdded:"1.17.8",function:n(()=>{const{userEmail:S,resolvedUserInfo:I}=lo(),_=w1({userEmail:S.value,userId:I.value?.id});window.open(_,"_blank")},"function")},{id:"Comfy.Help.OpenComfyUIForum",icon:"pi pi-comments",label:"Open ComfyUI Forum",menubarLabel:"ComfyUI Forum",versionAdded:"1.8.2",function:n(()=>{window.open(u.forum,"_blank")},"function")},{id:"Comfy.Canvas.DeleteSelectedItems",icon:"pi pi-trash",label:"Delete Selected Items",versionAdded:"1.10.5",function:n(()=>{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:n(async()=>{await ft().openManager({showToastOnLegacyError:!0})},"function")},{id:"Comfy.Manager.ShowUpdateAvailablePacks",icon:"pi pi-sync",label:"Check for Custom Node Updates",versionAdded:"1.17.0",function:n(async()=>{const S=ft();if(S.managerUIState.value===eu.DISABLED){a.add({severity:"error",summary:ue("g.error"),detail:ue("manager.notAvailable"),life:3e3});return}await S.openManager({initialTab:Jt.UpdateAvailable,showToastOnLegacyError:!1})},"function")},{id:"Comfy.Manager.ShowMissingPacks",icon:"pi pi-exclamation-circle",label:"Install Missing Custom Nodes",versionAdded:"1.17.0",function:n(async()=>{await ft().openManager({initialTab:Jt.Missing,showToastOnLegacyError:!1})},"function")},{id:"Comfy.User.OpenSignInDialog",icon:"pi pi-user",label:"Open Sign In Dialog",versionAdded:"1.17.6",function:n(async()=>{await t.showSignInDialog()},"function")},{id:"Comfy.User.SignOut",icon:"pi pi-sign-out",label:"Sign Out",versionAdded:"1.18.1",function:n(async()=>{await l.logout()},"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Up",icon:"pi pi-arrow-up",label:"Move Selected Nodes Up",versionAdded:Eo,function:n(()=>T(([S,I],_)=>[S,I-_]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Down",icon:"pi pi-arrow-down",label:"Move Selected Nodes Down",versionAdded:Eo,function:n(()=>T(([S,I],_)=>[S,I+_]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Left",icon:"pi pi-arrow-left",label:"Move Selected Nodes Left",versionAdded:Eo,function:n(()=>T(([S,I],_)=>[S-_,I]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Right",icon:"pi pi-arrow-right",label:"Move Selected Nodes Right",versionAdded:Eo,function:n(()=>T(([S,I],_)=>[S+_,I]),"function")},{id:"Comfy.Graph.ConvertToSubgraph",icon:"icon-[lucide--shrink]",label:"Convert Selection to Subgraph",versionAdded:"1.20.1",category:"essentials",function:n(()=>{const S=i.getCanvas(),I=S.subgraph??S.graph;if(!I)throw new TypeError("Canvas has no graph or subgraph set.");const _=I.convertToSubgraph(S.selectedItems);if(!_){a.add({severity:"error",summary:ue("toastMessages.cannotCreateSubgraph"),detail:ue("toastMessages.failedToConvertToSubgraph"),life:3e3});return}const{node:M}=_;S.select(M),i.updateSelectedItems()},"function")},{id:"Comfy.Graph.UnpackSubgraph",icon:"icon-[lucide--expand]",label:"Unpack the selected Subgraph",versionAdded:"1.26.3",function:n(()=>{const{unpackSubgraph:S}=Ga();S()},"function")},{id:"Comfy.Graph.EditSubgraphWidgets",label:"Edit Subgraph Widgets",icon:"icon-[lucide--settings-2]",versionAdded:"1.28.5",function:n(()=>{no().openPanel("subgraph")},"function")},{id:"Comfy.Graph.ToggleWidgetPromotion",icon:"icon-[lucide--arrow-left-right]",label:"Toggle promotion of hovered widget",versionAdded:"1.30.1",function:Qr},{id:"Comfy.OpenManagerDialog",icon:"mdi mdi-puzzle-outline",label:"Manager",function:n(async()=>{await ft().openManager({initialTab:Jt.All,showToastOnLegacyError:!1})},"function")},{id:"Comfy.ToggleHelpCenter",icon:"pi pi-question-circle",label:"Help Center",function:n(()=>{An().toggle()},"function"),active:n(()=>An().isVisible,"active")},{id:"Comfy.ToggleCanvasInfo",icon:"pi pi-info-circle",label:"Canvas Performance",function:n(async()=>{const S=re(),I=S.get("Comfy.Graph.CanvasInfo");await S.set("Comfy.Graph.CanvasInfo",!I)},"function"),active:n(()=>re().get("Comfy.Graph.CanvasInfo"),"active")},{id:"Workspace.ToggleBottomPanel.Shortcuts",icon:"pi pi-key",label:"Show Keybindings Dialog",versionAdded:"1.24.1",category:"view-controls",function:n(()=>{v.togglePanel("shortcuts")},"function")},{id:"Comfy.Graph.ExitSubgraph",icon:"pi pi-arrow-up",label:"Exit Subgraph",versionAdded:"1.20.1",function:n(()=>{const S=ge().getCanvas(),I=Kn();S.graph&&S.setGraph(I.navigationStack.at(-2)??S.graph.rootGraph)},"function")},{id:"Comfy.Dev.ShowModelSelector",icon:"pi pi-box",label:"Show Model Selector (Dev)",versionAdded:"1.26.2",category:"view-controls",function:n(()=>{h1().show()},"function")},{id:"Comfy.Manager.CustomNodesManager.ShowLegacyCustomNodesMenu",icon:"pi pi-bars",label:"Custom Nodes (Legacy)",versionAdded:"1.16.4",function:n(async()=>{await ft().openManager({legacyCommand:"Comfy.Manager.CustomNodesManager.ToggleVisibility",showToastOnLegacyError:!0,isLegacyOnly:!0})},"function")},{id:"Comfy.Manager.ShowLegacyManagerMenu",icon:"mdi mdi-puzzle",label:"Manager Menu (Legacy)",versionAdded:"1.16.4",function:n(async()=>{await ft().openManager({showToastOnLegacyError:!0,isLegacyOnly:!0})},"function")},{id:"Comfy.Memory.UnloadModels",icon:"mdi mdi-vacuum-outline",label:"Unload Models",versionAdded:"1.16.4",function:n(async()=>{if(!re().get("Comfy.Memory.AllowManualUnload")){Nt().add({severity:"error",summary:ue("g.error"),detail:ue("g.commandProhibited",{command:"Comfy.Memory.UnloadModels"}),life:3e3});return}await Te.freeMemory({freeExecutionCache:!1})},"function")},{id:"Comfy.Memory.UnloadModelsAndExecutionCache",icon:"mdi mdi-vacuum-outline",label:"Unload Models and Execution Cache",versionAdded:"1.16.4",function:n(async()=>{if(!re().get("Comfy.Memory.AllowManualUnload")){Nt().add({severity:"error",summary:ue("g.error"),detail:ue("g.commandProhibited",{command:"Comfy.Memory.UnloadModelsAndExecutionCache"}),life:3e3});return}await Te.freeMemory({freeExecutionCache:!0})},"function")},{id:"Comfy.BrowseModelAssets",icon:"pi pi-folder-open",label:"Experimental: Browse Model Assets",versionAdded:"1.28.3",function:n(async()=>{if(!re().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 re().set("Comfy.Assets.UseAssetAPI",!0),await e.reloadCurrentWorkflow()}await Fc().browse({assetType:"models",title:ue("sideToolbar.modelLibrary"),onAssetSelected:n(I=>{const _=y1(I);_.success||(a.add({severity:"error",summary:ue("g.error"),detail:ue("assetBrowser.failedToCreateNode")}),console.error("Node creation failed:",_.error))},"onAssetSelected")})},"function")},{id:"Comfy.ToggleAssetAPI",icon:"pi pi-database",label:n(()=>`Experimental: ${re().get("Comfy.Assets.UseAssetAPI")?"Disable":"Enable"} AssetAPI`,"label"),function:n(async()=>{const S=re(),I=S.get("Comfy.Assets.UseAssetAPI")??!1;await S.set("Comfy.Assets.UseAssetAPI",!I),await tt().reloadCurrentWorkflow()},"function")},{id:"Comfy.ToggleQPOV2",icon:"pi pi-list",label:"Toggle Queue Panel V2",function:N},{id:"Comfy.ToggleLinear",icon:"pi pi-database",label:"toggle linear mode",function:n(()=>i.linearMode=!i.linearMode,"function")}].map(S=>({...S,source:"System"}))}n(C1,"useCoreCommands");const k1=n(()=>{const e="/assets/images/favicon_progress_16x16/frame_9.png",o=Yl(e),t=ut(),s=10;se([()=>t.executionProgress,()=>t.isIdle],([l,a])=>{if(a)o.value=e;else{const i=Math.min(Math.max(0,Math.floor(l*s)),s-1);o.value=`/assets/images/favicon_progress_16x16/frame_${i}.png`}})},"useProgressFavicon");var Vn=(e=>(e.NoPreviews="none",e.Auto="auto",e.Latent2RGB="latent2rgb",e.TAESD="taesd",e))(Vn||{}),On=(e=>(e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.CRITICAL="CRITICAL",e))(On||{}),Rn=(e=>(e.MD5="md5",e.SHA1="sha1",e.SHA256="sha256",e.SHA512="sha512",e))(Rn||{}),Kt=(e=>(e.Auto="auto",e.Disable="disable",e.Enable="enable",e))(Kt||{}),Pe=(e=>(e.AUTO="auto",e.FP64="fp64",e.FP32="fp32",e.FP16="fp16",e.BF16="bf16",e.FP8E4M3FN="fp8_e4m3fn",e.FP8E5M2="fp8_e5m2",e))(Pe||{}),Fo=(e=>(e.Auto="auto",e.Split="split",e.Quad="quad",e.Pytorch="pytorch",e))(Fo||{}),Uo=(e=>(e.Auto="auto",e.GPUOnly="gpu-only",e.HighVram="highvram",e.NormalVram="normalvram",e.LowVram="lowvram",e.NoVram="novram",e.CPU="cpu",e))(Uo||{});const x1=[{id:"listen",name:"Host: The IP address to listen on",category:["Network"],type:"text",defaultValue:"127.0.0.1"},{id:"port",name:"Port: The port to listen on",category:["Network"],type:"number",defaultValue:8e3},{id:"tls-keyfile",name:"TLS Key File: Path to TLS key file for HTTPS",category:["Network"],type:"text",defaultValue:""},{id:"tls-certfile",name:"TLS Certificate File: Path to TLS certificate file for HTTPS",category:["Network"],type:"text",defaultValue:""},{id:"enable-cors-header",name:'Enable CORS header: Use "*" for all origins or specify domain',category:["Network"],type:"text",defaultValue:""},{id:"max-upload-size",name:"Maximum upload size (MB)",category:["Network"],type:"number",defaultValue:100},{id:"cuda-device",name:"CUDA device index to use",category:["CUDA"],type:"number",defaultValue:null},{id:"cuda-malloc",name:"Use CUDA malloc for memory allocation",category:["CUDA"],type:"combo",options:Object.values(Kt),defaultValue:Kt.Auto,getValue:n(e=>{switch(e){case Kt.Auto:return{};case Kt.Enable:return{"cuda-malloc":!0};case Kt.Disable:return{"disable-cuda-malloc":!0}}},"getValue")},{id:"global-precision",name:"Global floating point precision",category:["Inference"],type:"combo",options:[Pe.AUTO,Pe.FP32,Pe.FP16],defaultValue:Pe.AUTO,tooltip:"Global floating point precision",getValue:n(e=>{switch(e){case Pe.AUTO:return{};case Pe.FP32:return{"force-fp32":!0};case Pe.FP16:return{"force-fp16":!0};default:return{}}},"getValue")},{id:"unet-precision",name:"UNET precision",category:["Inference"],type:"combo",options:[Pe.AUTO,Pe.FP64,Pe.FP32,Pe.FP16,Pe.BF16,Pe.FP8E4M3FN,Pe.FP8E5M2],defaultValue:Pe.AUTO,tooltip:"UNET precision",getValue:n(e=>{switch(e){case Pe.AUTO:return{};default:return{[`${e.toLowerCase()}-unet`]:!0}}},"getValue")},{id:"vae-precision",name:"VAE precision",category:["Inference"],type:"combo",options:[Pe.AUTO,Pe.FP16,Pe.FP32,Pe.BF16],defaultValue:Pe.AUTO,tooltip:"VAE precision",getValue:n(e=>{switch(e){case Pe.AUTO:return{};default:return{[`${e.toLowerCase()}-vae`]:!0}}},"getValue")},{id:"cpu-vae",name:"Run VAE on CPU",category:["Inference"],type:"boolean",defaultValue:!1},{id:"text-encoder-precision",name:"Text Encoder precision",category:["Inference"],type:"combo",options:[Pe.AUTO,Pe.FP8E4M3FN,Pe.FP8E5M2,Pe.FP16,Pe.FP32],defaultValue:Pe.AUTO,tooltip:"Text Encoder precision",getValue:n(e=>{switch(e){case Pe.AUTO:return{};default:return{[`${e.toLowerCase()}-text-enc`]:!0}}},"getValue")},{id:"force-channels-last",name:"Force channels-last memory format",category:["Memory"],type:"boolean",defaultValue:!1},{id:"directml",name:"DirectML device index",category:["Memory"],type:"number",defaultValue:null},{id:"disable-ipex-optimize",name:"Disable IPEX optimization",category:["Memory"],type:"boolean",defaultValue:!1},{id:"preview-method",name:"Method used for latent previews",category:["Preview"],type:"combo",options:Object.values(Vn),defaultValue:Vn.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(Fo),defaultValue:Fo.Auto,getValue:n(e=>{switch(e){case Fo.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(Uo),defaultValue:Uo.Auto,getValue:n(e=>{switch(e){case Uo.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(Rn),defaultValue:Rn.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(On),defaultValue:On.INFO,getValue:n(e=>({verbose:e}),"getValue")},{id:"input-directory",name:"Input directory",category:["Directories"],type:"text",defaultValue:""},{id:"output-directory",name:"Output directory",category:["Directories"],type:"text",defaultValue:""}],S1={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"},Tl=H({__name:"HoneyToast",props:Jo({visible:{type:Boolean}},{expanded:{type:Boolean,default:!1},expandedModifiers:{}}),emits:["update:expanded"],setup(e){const o=bo(e,"expanded");function t(){o.value=!o.value}return n(t,"toggle"),(s,l)=>(d(),W(Tt,{to:"body"},[O(Yo,{"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:A(()=>[s.visible?(d(),$("div",S1,[c("div",{class:K(h(ne)("overflow-hidden transition-all duration-300",o.value?"max-h-[400px]":"max-h-0"))},[he(s.$slots,"default",{isExpanded:o.value})],2),he(s.$slots,"footer",{isExpanded:o.value,toggle:t})])):E("",!0)]),_:3})]))}}),ua=H({__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 n(o,"badgeClasses"),(t,s)=>(d(),$("span",{class:K(o(t.severity))},V(t.label),3))}}),_1={class:"min-w-0 flex-1"},T1={class:"block truncate text-sm text-base-foreground"},$1={class:"flex flex-shrink-0 items-center gap-2"},N1={class:"text-xs text-base-foreground"},I1={key:3,class:"text-xs text-muted-foreground"},M1=H({__name:"ProgressToastItem",props:{job:{}},setup(e){const{t:o}=fe(),t=y(()=>Math.round(e.job.progress*100)),s=y(()=>e.job.status==="completed"),l=y(()=>e.job.status==="failed"),a=y(()=>e.job.status==="running"),i=y(()=>e.job.status==="created");return(r,u)=>(d(),$("div",{class:K(h(ne)("flex items-center justify-between rounded-lg bg-modal-card-background px-4 py-3",s.value&&"opacity-50"))},[c("div",_1,[c("span",T1,V(r.job.assetName),1)]),c("div",$1,[l.value?(d(),$(oe,{key:0},[u[0]||(u[0]=c("i",{class:"icon-[lucide--circle-alert] size-4 text-destructive-background"},null,-1)),O(ua,{label:h(o)("progressToast.failed"),severity:"danger"},null,8,["label"])],64)):s.value?(d(),W(ua,{key:1,label:h(o)("progressToast.finished"),severity:"contrast"},null,8,["label"])):a.value?(d(),$(oe,{key:2},[u[1]||(u[1]=c("i",{class:"icon-[lucide--loader-circle] size-4 animate-spin text-base-foreground"},null,-1)),c("span",N1,V(t.value)+"% ",1)],64)):i.value?(d(),$("span",I1,V(h(o)("progressToast.pending")),1)):E("",!0)])],2))}}),P1={class:"flex h-12 items-center justify-between border-b border-border-default px-4"},D1={class:"text-sm font-bold text-base-foreground"},A1={class:"flex items-center gap-2"},L1={class:"flex min-w-30 flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},E1={class:"relative max-h-75 overflow-y-auto px-4 py-4"},V1={key:0,class:"absolute right-1 top-4 h-12 w-1 rounded-full bg-muted-foreground"},O1={class:"flex flex-col gap-2"},R1={key:1,class:"flex flex-col items-center justify-center py-6 text-center"},W1={class:"text-sm text-muted-foreground"},z1={class:"flex h-12 items-center justify-between gap-2 border-t border-border-default px-4"},B1={class:"flex min-w-0 flex-1 items-center gap-2 text-sm"},F1={class:"min-w-0 flex-1 truncate font-bold text-base-foreground"},U1={class:"min-w-0 truncate font-bold text-base-foreground"},G1={class:"min-w-0 truncate font-bold text-base-foreground"},j1={class:"flex flex-shrink-0 items-center gap-2"},H1={key:0,class:"whitespace-nowrap text-sm text-muted-foreground"},q1={class:"flex items-center"},K1=H({__name:"ModelImportProgressDialog",setup(e){const{t:o}=fe(),t=tu(),s=y(()=>t.hasDownloads),l=L(!1),a=L("all"),i=L(null);xt(()=>!l.value,()=>i.value?.hide());const r=[{value:"all",label:"all"},{value:"completed",label:"completed"},{value:"failed",label:"failed"}];function u(x){i.value?.toggle(x)}n(u,"onFilterClick");function f(x){a.value=x,i.value?.hide()}n(f,"setFilter");const m=y(()=>t.downloadList),v=y(()=>t.finishedDownloads.filter(x=>x.status==="completed")),p=y(()=>t.finishedDownloads.filter(x=>x.status==="failed")),w=y(()=>t.hasActiveDownloads),C=y(()=>m.value.find(S=>S.status==="running")?.assetName||o("progressToast.downloadingModel")),g=y(()=>v.value.length+p.value.length),b=y(()=>m.value.length),k=y(()=>{switch(a.value){case"completed":return v.value;case"failed":return p.value;default:return m.value}}),N=y(()=>{const x=r.find(S=>S.value===a.value);return o(x?`progressToast.filter.${x.label}`:"progressToast.filter.all")});function T(){t.clearFinishedDownloads(),l.value=!1}return n(T,"closeDialog"),(x,S)=>(d(),W(Tl,{expanded:l.value,"onUpdate:expanded":S[0]||(S[0]=I=>l.value=I),visible:s.value},{default:A(()=>[c("div",P1,[c("h3",D1,V(h(o)("progressToast.importingModels")),1),c("div",A1,[O(J,{variant:"secondary",size:"md",class:"gap-1.5 px-2",onClick:u},{default:A(()=>[S[1]||(S[1]=c("i",{class:"icon-[lucide--list-filter] size-4"},null,-1)),c("span",null,V(N.value),1),S[2]||(S[2]=c("i",{class:"icon-[lucide--chevron-down] size-3"},null,-1))]),_:1}),O(h(Ze),{ref_key:"filterPopoverRef",ref:i,dismissable:!0,"close-on-escape":!0,unstyled:"","base-z-index":9999,pt:{root:{class:"absolute z-50"},content:{class:"bg-transparent border-none p-0 pt-2 rounded-lg shadow-lg"}}},{default:A(()=>[c("div",L1,[(d(),$(oe,null,be(r,I=>O(J,{key:I.value,variant:"textonly",size:"sm",class:K(h(ne)("w-full justify-start bg-transparent",a.value===I.value&&"bg-secondary-background-selected")),onClick:n(_=>f(I.value),"onClick")},{default:A(()=>[$e(V(h(o)(`progressToast.filter.${I.label}`)),1)]),_:2},1032,["class","onClick"])),64))])]),_:1},512)])]),c("div",E1,[k.value.length>3?(d(),$("div",V1)):E("",!0),c("div",O1,[(d(!0),$(oe,null,be(k.value,I=>(d(),W(M1,{key:I.taskId,job:I},null,8,["job"]))),128))]),k.value.length===0?(d(),$("div",R1,[c("span",W1,V(h(o)("progressToast.noImportsInQueue",{filter:N.value})),1)])):E("",!0)])]),footer:A(({toggle:I})=>[c("div",z1,[c("div",B1,[w.value?(d(),$(oe,{key:0},[S[3]||(S[3]=c("i",{class:"icon-[lucide--loader-circle] size-4 flex-shrink-0 animate-spin text-muted-foreground"},null,-1)),c("span",F1,V(C.value),1)],64)):p.value.length>0?(d(),$(oe,{key:1},[S[4]||(S[4]=c("i",{class:"icon-[lucide--circle-alert] size-4 flex-shrink-0 text-destructive-background"},null,-1)),c("span",U1,V(h(o)("progressToast.downloadsFailed",{count:p.value.length})),1)],64)):(d(),$(oe,{key:2},[S[5]||(S[5]=c("i",{class:"icon-[lucide--check-circle] size-4 flex-shrink-0 text-jade-600"},null,-1)),c("span",G1,V(h(o)("progressToast.allDownloadsCompleted")),1)],64))]),c("div",j1,[w.value?(d(),$("span",H1,V(h(o)("progressToast.progressCount",{completed:g.value,total:b.value})),1)):E("",!0),c("div",q1,[O(J,{variant:"muted-textonly",size:"icon","aria-label":l.value?h(o)("contextMenu.Collapse"):h(o)("contextMenu.Expand"),onClick:Ce(I,["stop"])},{default:A(()=>[c("i",{class:K(h(ne)("size-4",l.value?"icon-[lucide--chevron-down]":"icon-[lucide--chevron-up]"))},null,2)]),_:2},1032,["aria-label","onClick"]),w.value?E("",!0):(d(),W(J,{key:0,variant:"muted-textonly",size:"icon","aria-label":h(o)("g.close"),onClick:Ce(T,["stop"])},{default:A(()=>S[6]||(S[6]=[c("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"]))])])])]),_:1},8,["expanded","visible"]))}}),Q1=10080*60*1e3,$l=Mt("versionCompatibility",()=>{const e=Yn(),o=re(),t=y(()=>ou.app_version),s=y(()=>e.systemStats?.system?.comfyui_version??""),l=y(()=>e.systemStats?.system?.required_frontend_version??""),a=y(()=>!t.value||!l.value||!Et.valid(t.value)||!Et.valid(l.value)?!1:Et.gt(l.value,t.value)),i=y(()=>!1),r=y(()=>a.value),u=y(()=>!t.value||!s.value||!l.value?null:`${t.value}-${s.value}-${l.value}`),f=Jl("comfy.versionMismatch.dismissals",{},localStorage,{serializer:{read:n(b=>{try{return JSON.parse(b)}catch{return{}}},"read"),write:n(b=>JSON.stringify(b),"write")}}),m=y(()=>{if(!u.value)return!1;const b=f.value[u.value];return b?Date.now()<b:!1}),v=y(()=>{const b=o.get("Comfy.VersionCompatibility.DisableWarnings");return r.value&&!m.value&&!b}),p=y(()=>a.value?{type:"outdated",frontendVersion:t.value,requiredVersion:l.value}:null);async function w(){e.systemStats||await ya(e.isInitialized)}n(w,"checkVersionCompatibility");function C(){if(!u.value)return;const b=Date.now()+Q1;f.value={...f.value,[u.value]:b}}n(C,"dismissWarning");async function g(){await w()}return n(g,"initialize"),{frontendVersion:t,backendVersion:s,requiredFrontendVersion:l,hasVersionMismatch:r,shouldShowWarning:v,warningMessage:p,isFrontendOutdated:a,isFrontendNewer:i,checkVersionCompatibility:w,dismissWarning:C,initialize:g}});function Y1(e={}){const{immediate:o=!1}=e,{t}=fe(),s=Nt(),l=$l();let a=!1;const i=n(()=>{if(a)return;const r=l.warningMessage;if(!r)return;const u=t("g.frontendOutdated",{frontendVersion:r.frontendVersion,requiredVersion:r.requiredVersion}),f=t("g.versionMismatchWarningMessage",{warning:t("g.versionMismatchWarning"),detail:u});s.addAlert(f),a=!0,l.dismissWarning()},"showWarning");return We(()=>{o&&xt(()=>l.shouldShowWarning,()=>{i()},{immediate:!0,once:!0})}),{showWarning:i,shouldShowWarning:y(()=>l.shouldShowWarning),dismissWarning:l.dismissWarning,hasVersionMismatch:y(()=>l.hasVersionMismatch)}}n(Y1,"useFrontendVersionMismatchWarning");function J1(){const e=ol(),o=yo();let t=!1,s=0;Te.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})}n(J1,"setupAutoQueueHandler");const X1={class:"absolute w-full h-full"},Z1={class:"workflow-tabs-container pointer-events-auto h-9.5 w-full"},eC={class:"flex h-full items-center"},tC={class:"sidebar-content-container h-full w-full overflow-x-hidden overflow-y-auto border-r-1 border-node-component-border"},oC=["src"],nC={key:0,class:"pointer-events-none object-contain flex-1 max-h-full brightness-50 opacity-10",src:su},sC={class:"actionbar-container flex h-12 items-center rounded-lg border border-[var(--interface-stroke)] p-2 gap-2 bg-comfy-menu-bg justify-end"},aC={class:"rounded-lg border p-2 gap-2 h-full border-[var(--interface-stroke)] bg-comfy-menu-bg flex flex-col"},lC={class:"grow-1 flex justify-start flex-col overflow-y-auto contain-size *:max-h-100"},iC={class:"p-4 pb-0 border-t border-node-component-border"},rC=H({__name:"LinearView",setup(e){const o=_o(),t=Se(),s=y(()=>{function m(v){const p=hl(v,new Map),w=v.widgets?.map(C=>{const g=p(C);return g.callback=function(b){if(hg(b))return C.value=b??void 0,C.callback?.(C.value)},g})??[];return{id:`${v.id}`,title:v.title,type:v.type,mode:0,selected:!1,executing:!1,widgets:w}}return n(m,"nodeToNodeData"),Y.rootGraph.nodes.filter(v=>v.mode===0&&v.widgets?.length).map(m)}),{isLoggedIn:l}=lo(),a=qe(),i={options:{step2:1,precision:1,min:1,max:100},value:1,name:ue("Number of generations"),type:"number"},{batchCount:r}=He(yo());async function u(m){const p="shiftKey"in m&&m.shiftKey?"Comfy.QueuePromptFront":"Comfy.QueuePrompt";r.value>1,await t.execute(p,{metadata:{subscribe_to_run:!1,trigger_source:"button"}})}n(u,"runButtonClick");function f(){window.open("https://support.comfy.org/hc/en-us/requests/new?ticket_form_id=40026345549204","_blank","noopener,noreferrer")}return n(f,"openFeedback"),(m,v)=>(d(),$("div",X1,[c("div",Z1,[c("div",eC,[O(Cl),O(wl)])]),O(h(Tn),{class:"h-[calc(100%-38px)] w-full bg-comfy-menu-secondary-bg",pt:{gutter:{class:"bg-transparent w-4 -mx-3"}}},{default:A(()=>[O(h(_t),{size:1,class:"min-w-min bg-comfy-menu-bg"},{default:A(()=>[c("div",tC,[O(is,{extension:h(nu)()},null,8,["extension"])])]),_:1}),O(h(_t),{size:98,class:"flex flex-row overflow-y-auto flex-wrap min-w-min gap-4 m-4"},{default:A(()=>[(d(!0),$(oe,null,be(h(o).latestOutput,p=>(d(),$("img",{key:p,class:"pointer-events-none object-contain flex-1 max-h-full",src:p},null,8,oC))),128)),h(o).latestOutput.length===0?(d(),$("img",nC)):E("",!0)]),_:1}),O(h(_t),{size:1,class:"flex flex-col gap-1 p-1 min-w-min"},{default:A(()=>[c("div",sC,[O(J,{variant:"secondary",onClick:f},{default:A(()=>[$e(V(h(ue)("g.feedback")),1)]),_:1}),O(J,{variant:"secondary",class:"min-w-max",onClick:v[0]||(v[0]=p=>h(ge)().linearMode=!1)},{default:A(()=>[$e(V(h(ue)("linearMode.openWorkflow"))+" ",1),v[3]||(v[3]=c("i",{class:"icon-[comfy--workflow]"},null,-1))]),_:1}),O(J,{variant:"inverted",onClick:v[1]||(v[1]=p=>h(tt)().exportWorkflow("workflow","workflow"))},{default:A(()=>[$e(V(h(ue)("linearMode.share")),1)]),_:1}),h(l)?(d(),W(cl,{key:0})):h(a)?(d(),W(dl,{key:1})):E("",!0)]),c("div",aC,[c("div",lC,[(d(!0),$(oe,null,be(s.value,p=>(d(),W(tl,{key:p.id,"node-data":p,class:"border-b-1 border-node-component-border pt-1 pb-2 last:border-none"},null,8,["node-data"]))),128))]),c("div",iC,[O(vu,{modelValue:h(r),"onUpdate:modelValue":v[2]||(v[2]=p=>at(r)?r.value=p:null),widget:i,class:"*:[.min-w-56]:basis-0"},null,8,["modelValue"]),O(J,{class:"w-full mt-4",onClick:u},{default:A(()=>[v[4]||(v[4]=c("i",{class:"icon-[lucide--play]"},null,-1)),$e(" "+V(h(ue)("menu.run")),1)]),_:1})])])]),_:1})]),_:1})]))}}),uC={key:0,class:"flex items-center px-4 py-2"},cC={class:"flex w-full items-center justify-between py-2"},dC={class:"flex flex-col text-sm leading-normal font-medium"},pC={class:"text-muted"},fC={class:"h-full"},mC={class:"break-words whitespace-pre-wrap"},vC={class:"flex w-full items-center justify-between px-6 py-2 shadow-lg"},gC={class:"flex items-center text-base leading-none"},hC={class:"flex items-center"},yC={class:"flex items-center gap-4"},bC={key:0,class:"text-sm text-muted-foreground"},wC={class:"flex items-center"},CC=H({__name:"ManagerProgressToast",setup(e){const{t:o}=fe(),t=au(),s=re(),{runFullConflictAnalysis:l}=Qa(),a=L(!1),i=L(0),r=y(()=>[{label:o("manager.installationQueue")},{label:o("manager.failed",{count:t.failedTasksIds.length})}]),u=y(()=>i.value===0?t.succeededTasksLogs:t.failedTasksLogs),f=y(()=>t.taskLogs.length>0),m=L(!1),v=L(!1),p=y(()=>t.isProcessingTasks||m.value),w=n(G=>{const q=u.value[G];if(!q)return!1;const Q=t.taskQueue;return Q?[...Q.running_queue||[],...Q.pending_queue||[]].some(le=>le.ui_id===q.taskId):!1},"isTaskInProgress"),C=y(()=>t.succeededTasksIds.length+t.failedTasksIds.length),g=y(()=>{const G=Object.keys(t.taskHistory).length,q=t.taskQueue,Q=q?(q.running_queue?.length||0)+(q.pending_queue?.length||0):0;return G+Q}),b=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")),k=L({});function N(G){k.value[G]=!k.value[G]}n(N,"togglePanel");const T=L(null),{y:x}=xa(T,{eventListenerOptions:{passive:!0}}),S=L(null),I=L(!1),_=y(()=>u.value?.at(-1)?.logs);function M(G){return G?Math.abs(G.scrollHeight-G.scrollTop-G.clientHeight)<20:!1}n(M,"isAtBottom");function P(){!S.value||I.value||(S.value.scrollTop=S.value.scrollHeight)}n(P,"scrollLastPanelToBottom");function B(){x.value=T.value?.scrollHeight??0}n(B,"scrollContentToBottom");function j(){I.value=!1}n(j,"resetUserScrolling");function U(G){const q=G.target;q===S.value&&(I.value=!M(q))}n(U,"handleScroll");function R(){I.value||P()}n(R,"onLogsAdded"),xt(_,R,{flush:"post",deep:!0}),xt(()=>a.value,B),xt(()=>!a.value,j);function F(){t.resetTaskState(),a.value=!1}n(F,"closeToast");async function z(){const G=s.get("Comfy.Toast.DisableReconnectingToast");try{await s.set("Comfy.Toast.DisableReconnectingToast",!0),m.value=!0,Ee(Te,"reconnected",n(async()=>{try{t.setStale(),await Se().execute("Comfy.RefreshNodeDefinitions"),await tt().reloadCurrentWorkflow(),l()}finally{await s.set("Comfy.Toast.DisableReconnectingToast",G),m.value=!1,v.value=!0,setTimeout(()=>{F()},3e3)}},"onReconnect"),{once:!0}),await qa().rebootComfyUI()}catch(q){throw await s.set("Comfy.Toast.DisableReconnectingToast",G),m.value=!1,v.value=!1,F(),q}}return n(z,"handleRestart"),We(()=>{B()}),it(()=>{a.value=!1}),(G,q)=>(d(),W(Tl,{expanded:a.value,"onUpdate:expanded":q[1]||(q[1]=Q=>a.value=Q),visible:f.value},{default:A(()=>[a.value?(d(),$("div",uC,[O(h(di),{"active-index":i.value,"onUpdate:activeIndex":q[0]||(q[0]=Q=>i.value=Q),model:r.value,class:"w-full border-none",pt:{menu:{class:"border-none"},menuitem:{class:"font-medium"},action:{class:"px-4 py-2"}}},null,8,["active-index","model"])])):E("",!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"}},[(d(!0),$(oe,null,be(u.value,(Q,te)=>(d(),$("div",{key:te},[O(h(Fn),{expanded:k.value[te]===!0,toggleable:"",class:"shadow-elevation-1 mt-2 rounded-lg"},{header:A(()=>[c("div",cC,[c("div",dC,[c("span",null,V(Q.taskName),1),c("span",pC,V(w(te)?h(o)("g.inProgress"):h(o)("g.completed")+" ✓"),1)])])]),toggleicon:A(()=>[O(J,{variant:"textonly",class:"text-neutral-300",onClick:n(le=>N(te),"onClick")},{default:A(()=>[c("i",{class:K(k.value[te]?"pi pi-chevron-right":"pi pi-chevron-down")},null,2)]),_:2},1032,["onClick"])]),default:A(()=>[c("div",{ref_for:!0,ref:te===u.value.length-1?le=>S.value=le:void 0,class:K(["h-64 overflow-y-auto rounded-lg bg-black",{"h-64":te!==u.value.length-1,grow:te===u.value.length-1}]),onScroll:U},[c("div",fC,[(d(!0),$(oe,null,be(Q.logs,(le,X)=>(d(),$("div",{key:X,class:"text-muted"},[c("pre",mC,V(le),1)]))),128))])],34)]),_:2},1032,["expanded"])]))),128))],512)]),footer:A(({toggle:Q})=>[c("div",vC,[c("div",gC,[c("div",hC,[p.value?(d(),$(oe,{key:0},[O(lu,{duration:"1s",class:"mr-2"}),c("span",null,V(b.value),1)],64)):v.value?(d(),$(oe,{key:1},[q[2]||(q[2]=c("span",{class:"mr-2"},"🎉",-1)),c("span",null,V(b.value),1)],64)):(d(),$(oe,{key:2},[q[3]||(q[3]=c("span",{class:"mr-2"},"✅",-1)),c("span",null,V(h(o)("manager.restartToApplyChanges")),1)],64))])]),c("div",yC,[p.value?(d(),$("span",bC,V(C.value)+" "+V(h(o)("g.progressCountOf"))+" "+V(g.value),1)):E("",!0),c("div",wC,[!p.value&&!v.value?(d(),W(J,{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:z},{default:A(()=>[$e(V(h(o)("manager.applyChanges")),1)]),_:1})):v.value?E("",!0):(d(),W(J,{key:1,variant:"muted-textonly",size:"sm",class:"rounded-full font-bold","aria-label":h(o)(a.value?"contextMenu.Collapse":"contextMenu.Expand"),onClick:Ce(Q,["stop"])},{default:A(()=>[c("i",{class:K(a.value?"pi pi-chevron-up":"pi pi-chevron-down")},null,2)]),_:2},1032,["aria-label","onClick"])),O(J,{variant:"muted-textonly",size:"sm",class:"rounded-full font-bold","aria-label":h(o)("g.close"),onClick:Ce(F,["stop"])},{default:A(()=>q[4]||(q[4]=[c("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])])])]),_:1},8,["expanded","visible"]))}}),kC={class:"comfyui-body grid h-full w-full overflow-hidden"},xC=H({__name:"GraphView",setup(e){J1(),k1(),r1();const{t:o}=fe(),t=Wt(),s=re(),l=ut(),a=ct(),i=zt(),r=jn(),u=$l(),f=L(null),{linearMode:m}=He(ge());za(),se(()=>a.completedActivePalette,_=>{const M="dark-theme";_.light_theme?document.body.classList.remove(M):document.body.classList.add(M),qe()&&ho().changeTheme({color:"rgba(0, 0, 0, 0)",symbolColor:_.colors.comfy_base["input-text"]})},{immediate:!0}),qe()&&se(()=>i.tasks,(_,M)=>{const P=new Set(M.filter(B=>B.isRunning).map(B=>B.promptId));_.filter(B=>P.has(B.promptId)&&B.isHistory).forEach(B=>{ho().Events.incrementUserProperty(`execution:${B.displayStatus.toLowerCase()}`,1),ho().Events.trackEvent("execution",{status:B.displayStatus.toLowerCase()})})},{deep:!0}),we(()=>{const _=s.get("Comfy.TextareaWidget.FontSize");document.documentElement.style.setProperty("--comfy-textarea-font-size",`${_}px`)}),we(()=>{const _=s.get("Comfy.TreeExplorer.ItemPadding");document.documentElement.style.setProperty("--comfy-tree-explorer-item-padding",`${_}px`)}),we(async()=>{const _=s.get("Comfy.Locale");if(_)try{await iu(_),Ea.global.locale.value=_}catch(M){console.error(`Failed to switch to locale "${_}":`,M)}});const v=y(()=>s.get("Comfy.UseNewMenu"));we(()=>{v.value==="Disabled"?(Y.ui.menuContainer.style.setProperty("display","block"),Y.ui.restoreMenuPosition()):Y.ui.menuContainer.style.setProperty("display","none")}),we(()=>{i.maxHistoryItems=s.get("Comfy.Queue.MaxHistoryItems")});const p=n(()=>{const _=C1();Se().registerCommands(_),ja().registerCoreMenuCommands(),fn().registerCoreKeybindings(),Go().registerCoreSidebarTabs(),so().registerCoreBottomPanelTabs(),Y.extensionManager=lt()},"init"),w=ol(),C=Go(),g=n(async _=>{w.update(_),await i.update(),C.activeSidebarTabId==="assets"&&await r.updateHistory()},"onStatus"),b=n(async()=>{await i.update(),C.activeSidebarTabId==="assets"&&await r.updateHistory()},"onExecutionSuccess"),k={severity:"error",summary:o("g.reconnecting")},N=n(()=>{s.get("Comfy.Toast.DisableReconnectingToast")||(t.remove(k),t.add(k))},"onReconnecting"),T=n(()=>{s.get("Comfy.Toast.DisableReconnectingToast")||(t.remove(k),t.add({severity:"success",summary:o("g.reconnected"),life:2e3}))},"onReconnected");We(()=>{Te.addEventListener("status",g),Te.addEventListener("execution_success",b),Te.addEventListener("reconnecting",N),Te.addEventListener("reconnected",T),l.bindExecutionEvents();try{p(),f.value?.prepend(Y.ui.menuContainer)}catch(_){console.error("Failed to init ComfyUI frontend",_)}}),it(()=>{Te.removeEventListener("status",g),Te.removeEventListener("execution_success",b),Te.removeEventListener("reconnecting",N),Te.removeEventListener("reconnected",T),l.unbindExecutionEvents()}),Ee(window,"keydown",fn().keybindHandler);const{wrapWithErrorHandling:x,wrapWithErrorHandlingAsync:S}=Bt();Y1({immediate:!0}),Be(()=>{u.initialize().catch(_=>{console.warn("Version compatibility check failed:",_)})});const I=n(()=>{rl(()=>{x(fn().registerUserKeybindings)(),x(mu().loadServerConfig)(x1,s.get("Comfy.Server.ServerConfigValues")),S(ru().loadModelFolders)(),S(os().loadNodeFrequencies)(),St().nodeSearchService.searchNode("")},1e3)},"onGraphReady");return(_,M)=>(d(),$(oe,null,[c("div",kC,[M[0]||(M[0]=c("div",{id:"comfyui-body-top",class:"comfyui-body-top"},null,-1)),M[1]||(M[1]=c("div",{id:"comfyui-body-bottom",class:"comfyui-body-bottom"},null,-1)),M[2]||(M[2]=c("div",{id:"comfyui-body-left",class:"comfyui-body-left"},null,-1)),M[3]||(M[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"},[O(n1,{onReady:I})],512),[[Je,!h(m)]]),h(m)?(d(),W(rC,{key:0})):E("",!0)]),O(ed),O(l1),O(K1),O(CC),h(qe)()?E("",!0):(d(),W(nd,{key:0})),O(od)],64))}}),SC=Le(xC,[["__scopeId","data-v-5229bbd8"]]),VC=Object.freeze(Object.defineProperty({__proto__:null,default:SC},Symbol.toStringTag,{value:"Module"}));export{VC as G,Qc as _,Xc as a,fd as g};
15
- //# sourceMappingURL=GraphView-C35zkdNN.js.map