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.
- comfyui_frontend_package/static/assets/{AboutPanel-BudnQURa.js → AboutPanel-C5DQxPC9.js} +2 -2
- comfyui_frontend_package/static/assets/{AboutPanel-BudnQURa.js.map → AboutPanel-C5DQxPC9.js.map} +1 -1
- comfyui_frontend_package/static/assets/{AudioPreviewPlayer-CHjtFZRu.js → AudioPreviewPlayer-BNO9ZjOM.js} +2 -2
- comfyui_frontend_package/static/assets/{AudioPreviewPlayer-CHjtFZRu.js.map → AudioPreviewPlayer-BNO9ZjOM.js.map} +1 -1
- comfyui_frontend_package/static/assets/{ComfyQueueButton-QhN0FmOY.js → ComfyQueueButton-D0Y-jFOd.js} +2 -2
- comfyui_frontend_package/static/assets/{ComfyQueueButton-QhN0FmOY.js.map → ComfyQueueButton-D0Y-jFOd.js.map} +1 -1
- comfyui_frontend_package/static/assets/{ExtensionPanel-D2sITMri.js → ExtensionPanel-CbCxE4jg.js} +2 -2
- comfyui_frontend_package/static/assets/{ExtensionPanel-D2sITMri.js.map → ExtensionPanel-CbCxE4jg.js.map} +1 -1
- comfyui_frontend_package/static/assets/GraphView-CepV6iZo.css +1 -0
- comfyui_frontend_package/static/assets/GraphView-_ZGu5uNf.js +15 -0
- comfyui_frontend_package/static/assets/GraphView-_ZGu5uNf.js.map +1 -0
- comfyui_frontend_package/static/assets/{KeybindingPanel-Dm6H1RN2.js → KeybindingPanel-Ceb51ttS.js} +2 -2
- comfyui_frontend_package/static/assets/{KeybindingPanel-Dm6H1RN2.js.map → KeybindingPanel-Ceb51ttS.js.map} +1 -1
- 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
- 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
- comfyui_frontend_package/static/assets/{LegacyCreditsPanel-Be7L1Af3.js → LegacyCreditsPanel-K_GDtrt_.js} +2 -2
- comfyui_frontend_package/static/assets/{LegacyCreditsPanel-Be7L1Af3.js.map → LegacyCreditsPanel-K_GDtrt_.js.map} +1 -1
- comfyui_frontend_package/static/assets/{Load3D-BAJ3yM4D.js → Load3D-CbCbkSys.js} +2 -2
- comfyui_frontend_package/static/assets/Load3D-CbCbkSys.js.map +1 -0
- 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
- 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
- comfyui_frontend_package/static/assets/{Media3DTop-DdNgRlQW.js → Media3DTop--kp0iekJ.js} +2 -2
- comfyui_frontend_package/static/assets/{Media3DTop-DdNgRlQW.js.map → Media3DTop--kp0iekJ.js.map} +1 -1
- comfyui_frontend_package/static/assets/{ServerConfigPanel-LtRqEOzu.js → ServerConfigPanel-BGnrWtif.js} +2 -2
- comfyui_frontend_package/static/assets/{ServerConfigPanel-LtRqEOzu.js.map → ServerConfigPanel-BGnrWtif.js.map} +1 -1
- comfyui_frontend_package/static/assets/{SubscriptionRequiredDialogContent-CDaF1jns.js → SubscriptionRequiredDialogContent-BMLw-0ti.js} +2 -2
- comfyui_frontend_package/static/assets/{SubscriptionRequiredDialogContent-CDaF1jns.js.map → SubscriptionRequiredDialogContent-BMLw-0ti.js.map} +1 -1
- comfyui_frontend_package/static/assets/{UserPanel-_xK7KdbS.js → UserPanel-BfOBqtyE.js} +2 -2
- comfyui_frontend_package/static/assets/{UserPanel-_xK7KdbS.js.map → UserPanel-BfOBqtyE.js.map} +1 -1
- comfyui_frontend_package/static/assets/{UserSelectView-B_VOz5XU.js → UserSelectView-hAFmUbm0.js} +2 -2
- comfyui_frontend_package/static/assets/{UserSelectView-B_VOz5XU.js.map → UserSelectView-hAFmUbm0.js.map} +1 -1
- comfyui_frontend_package/static/assets/{ValueControlPopover-BPJIx3_y.js → ValueControlPopover-BEbJxP9Z.js} +2 -2
- comfyui_frontend_package/static/assets/{ValueControlPopover-BPJIx3_y.js.map → ValueControlPopover-BEbJxP9Z.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetAudioUI-5nP5sugf.js → WidgetAudioUI-BuXP7XBQ.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetAudioUI-5nP5sugf.js.map → WidgetAudioUI-BuXP7XBQ.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetButton-Cd9G_fIM.js → WidgetButton-vKBzo4q0.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetButton-Cd9G_fIM.js.map → WidgetButton-vKBzo4q0.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetColorPicker-x6uZPjSf.js → WidgetColorPicker-FoC3o0Lp.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetColorPicker-x6uZPjSf.js.map → WidgetColorPicker-FoC3o0Lp.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetGalleria-DHPc3hwg.js → WidgetGalleria-CV4Nv2wv.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetGalleria-DHPc3hwg.js.map → WidgetGalleria-CV4Nv2wv.js.map} +1 -1
- comfyui_frontend_package/static/assets/WidgetInputNumber-zsVb0Vit.js +2 -0
- comfyui_frontend_package/static/assets/WidgetInputNumber-zsVb0Vit.js.map +1 -0
- 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
- 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
- comfyui_frontend_package/static/assets/{WidgetInputText-BbfUME5C.js → WidgetInputText-Cv8Z1_b9.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetInputText-BbfUME5C.js.map → WidgetInputText-Cv8Z1_b9.js.map} +1 -1
- 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
- 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
- comfyui_frontend_package/static/assets/{WidgetLegacy-AkIJRd8v.js → WidgetLegacy-Dh4xE798.js} +2 -2
- comfyui_frontend_package/static/assets/WidgetLegacy-Dh4xE798.js.map +1 -0
- comfyui_frontend_package/static/assets/WidgetMarkdown-C4CnxNoM.js +2 -0
- comfyui_frontend_package/static/assets/{WidgetMarkdown-voa7Ohgp.js.map → WidgetMarkdown-C4CnxNoM.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetRecordAudio-DelweXYm.js → WidgetRecordAudio-BQ9yATXo.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetRecordAudio-DelweXYm.js.map → WidgetRecordAudio-BQ9yATXo.js.map} +1 -1
- comfyui_frontend_package/static/assets/WidgetSelect-B9DwAKiE.js +2 -0
- comfyui_frontend_package/static/assets/WidgetSelect-B9DwAKiE.js.map +1 -0
- 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
- 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
- comfyui_frontend_package/static/assets/{WidgetTextarea-SHMM72Cj.js → WidgetTextarea-C3Wo0ULT.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetTextarea-SHMM72Cj.js.map → WidgetTextarea-C3Wo0ULT.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetToggleSwitch-BmT1MQCn.js → WidgetToggleSwitch-BZUubsU5.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetToggleSwitch-BmT1MQCn.js.map → WidgetToggleSwitch-BZUubsU5.js.map} +1 -1
- 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
- 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
- comfyui_frontend_package/static/assets/{audioService-BcbrJBnn.js → audioService-CNb54hvw.js} +2 -2
- comfyui_frontend_package/static/assets/{audioService-BcbrJBnn.js.map → audioService-CNb54hvw.js.map} +1 -1
- comfyui_frontend_package/static/assets/{audioUtils-CJCA0wCG.js → audioUtils-ClyG3xvN.js} +2 -2
- comfyui_frontend_package/static/assets/{audioUtils-CJCA0wCG.js.map → audioUtils-ClyG3xvN.js.map} +1 -1
- comfyui_frontend_package/static/assets/commands-DHxq3nWN.js +2 -0
- comfyui_frontend_package/static/assets/commands-DHxq3nWN.js.map +1 -0
- comfyui_frontend_package/static/assets/{index-DvCHS_f2.js → index-B3VEOed6.js} +20 -20
- comfyui_frontend_package/static/assets/index-B3VEOed6.js.map +1 -0
- comfyui_frontend_package/static/assets/index-B5S_Le6r.js +5 -0
- comfyui_frontend_package/static/assets/index-B5S_Le6r.js.map +1 -0
- comfyui_frontend_package/static/assets/index-CPtP45Cb.css +1 -0
- comfyui_frontend_package/static/assets/{index-kQCr6fgp.js → index-CtDW77xi.js} +2 -2
- comfyui_frontend_package/static/assets/{index-kQCr6fgp.js.map → index-CtDW77xi.js.map} +1 -1
- comfyui_frontend_package/static/assets/{keybindingService-D3pQ4cJG.js → keybindingService-50G4NbCc.js} +2 -2
- comfyui_frontend_package/static/assets/{keybindingService-D3pQ4cJG.js.map → keybindingService-50G4NbCc.js.map} +1 -1
- comfyui_frontend_package/static/assets/{main-BFC5CmrY.js → main-B3vd7GL1.js} +3 -3
- comfyui_frontend_package/static/assets/main-B3vd7GL1.js.map +1 -0
- comfyui_frontend_package/static/assets/{main-M4YqFlAB.js → main-BKCc2TkD.js} +3 -3
- comfyui_frontend_package/static/assets/main-BKCc2TkD.js.map +1 -0
- comfyui_frontend_package/static/assets/{main-C0iYASPd.js → main-BNvzUx74.js} +3 -3
- comfyui_frontend_package/static/assets/main-BNvzUx74.js.map +1 -0
- comfyui_frontend_package/static/assets/main-BPu7av80.js +17 -0
- comfyui_frontend_package/static/assets/main-BPu7av80.js.map +1 -0
- comfyui_frontend_package/static/assets/{main-Dd3BY3MO.js → main-BQ4z0Xxc.js} +2 -2
- comfyui_frontend_package/static/assets/main-BQ4z0Xxc.js.map +1 -0
- comfyui_frontend_package/static/assets/{main-BI-3llij.js → main-BoyaoV4J.js} +2 -2
- comfyui_frontend_package/static/assets/main-BoyaoV4J.js.map +1 -0
- comfyui_frontend_package/static/assets/{main-DB30B6rY.js → main-CJ1ZmTbz.js} +3 -3
- comfyui_frontend_package/static/assets/main-CJ1ZmTbz.js.map +1 -0
- comfyui_frontend_package/static/assets/{main-D8hMMX5u.js → main-DxByB8u3.js} +2 -2
- comfyui_frontend_package/static/assets/main-DxByB8u3.js.map +1 -0
- comfyui_frontend_package/static/assets/{main-BdVq5c-Q.js → main-Dyk43SJi.js} +2 -2
- comfyui_frontend_package/static/assets/main-Dyk43SJi.js.map +1 -0
- comfyui_frontend_package/static/assets/{main-Cte3FX_T.js → main-QMLeyFJQ.js} +3 -3
- comfyui_frontend_package/static/assets/main-QMLeyFJQ.js.map +1 -0
- comfyui_frontend_package/static/assets/{main-BPVbVwRz.js → main-f7MqrMkx.js} +3 -3
- comfyui_frontend_package/static/assets/main-f7MqrMkx.js.map +1 -0
- comfyui_frontend_package/static/assets/nodeDefs-CqPqVYqF.js +54 -0
- comfyui_frontend_package/static/assets/nodeDefs-CqPqVYqF.js.map +1 -0
- comfyui_frontend_package/static/assets/settings-BDcsAddA.js +6 -0
- comfyui_frontend_package/static/assets/settings-BDcsAddA.js.map +1 -0
- comfyui_frontend_package/static/assets/settings-BscQZApb.js +6 -0
- comfyui_frontend_package/static/assets/settings-BscQZApb.js.map +1 -0
- comfyui_frontend_package/static/assets/settings-BxGvSZQt.js +6 -0
- comfyui_frontend_package/static/assets/settings-BxGvSZQt.js.map +1 -0
- comfyui_frontend_package/static/assets/settings-CRbIyGOx.js +6 -0
- comfyui_frontend_package/static/assets/settings-CRbIyGOx.js.map +1 -0
- comfyui_frontend_package/static/assets/settings-C_M95LcR.js +6 -0
- comfyui_frontend_package/static/assets/settings-C_M95LcR.js.map +1 -0
- comfyui_frontend_package/static/assets/{settings-C83z84hb.js → settings-CfAtcjYG.js} +3 -3
- comfyui_frontend_package/static/assets/settings-CfAtcjYG.js.map +1 -0
- comfyui_frontend_package/static/assets/settings-D1FGfDLO.js +6 -0
- comfyui_frontend_package/static/assets/settings-D1FGfDLO.js.map +1 -0
- comfyui_frontend_package/static/assets/settings-DIhoSYUg.js +6 -0
- comfyui_frontend_package/static/assets/settings-DIhoSYUg.js.map +1 -0
- comfyui_frontend_package/static/assets/settings-DR935Ify.js +6 -0
- comfyui_frontend_package/static/assets/settings-DR935Ify.js.map +1 -0
- comfyui_frontend_package/static/assets/settings-DwzAhg99.js +6 -0
- comfyui_frontend_package/static/assets/settings-DwzAhg99.js.map +1 -0
- comfyui_frontend_package/static/assets/settings-ydiuzS6H.js +6 -0
- comfyui_frontend_package/static/assets/settings-ydiuzS6H.js.map +1 -0
- comfyui_frontend_package/static/index.html +1 -1
- {comfyui_frontend_package-1.37.9.dist-info → comfyui_frontend_package-1.37.10.dist-info}/METADATA +1 -1
- {comfyui_frontend_package-1.37.9.dist-info → comfyui_frontend_package-1.37.10.dist-info}/RECORD +131 -123
- comfyui_frontend_package/static/assets/GraphView-BZLpyVMl.css +0 -1
- comfyui_frontend_package/static/assets/GraphView-C35zkdNN.js +0 -15
- comfyui_frontend_package/static/assets/GraphView-C35zkdNN.js.map +0 -1
- comfyui_frontend_package/static/assets/Load3D-BAJ3yM4D.js.map +0 -1
- comfyui_frontend_package/static/assets/WidgetInputNumber-Cnhf4Ann.js +0 -2
- comfyui_frontend_package/static/assets/WidgetInputNumber-Cnhf4Ann.js.map +0 -1
- comfyui_frontend_package/static/assets/WidgetLegacy-AkIJRd8v.js.map +0 -1
- comfyui_frontend_package/static/assets/WidgetMarkdown-voa7Ohgp.js +0 -2
- comfyui_frontend_package/static/assets/WidgetSelect-XG4R8CnZ.js +0 -2
- comfyui_frontend_package/static/assets/WidgetSelect-XG4R8CnZ.js.map +0 -1
- comfyui_frontend_package/static/assets/index-BB_8e12C.css +0 -1
- comfyui_frontend_package/static/assets/index-Cm0D-ExL.js +0 -5
- comfyui_frontend_package/static/assets/index-Cm0D-ExL.js.map +0 -1
- comfyui_frontend_package/static/assets/index-DvCHS_f2.js.map +0 -1
- comfyui_frontend_package/static/assets/main-BFC5CmrY.js.map +0 -1
- comfyui_frontend_package/static/assets/main-BI-3llij.js.map +0 -1
- comfyui_frontend_package/static/assets/main-BPVbVwRz.js.map +0 -1
- comfyui_frontend_package/static/assets/main-BdVq5c-Q.js.map +0 -1
- comfyui_frontend_package/static/assets/main-C0iYASPd.js.map +0 -1
- comfyui_frontend_package/static/assets/main-Cte3FX_T.js.map +0 -1
- comfyui_frontend_package/static/assets/main-D8hMMX5u.js.map +0 -1
- comfyui_frontend_package/static/assets/main-DB30B6rY.js.map +0 -1
- comfyui_frontend_package/static/assets/main-Dd3BY3MO.js.map +0 -1
- comfyui_frontend_package/static/assets/main-M4YqFlAB.js.map +0 -1
- comfyui_frontend_package/static/assets/settings-2GCqRrJG.js +0 -6
- comfyui_frontend_package/static/assets/settings-2GCqRrJG.js.map +0 -1
- comfyui_frontend_package/static/assets/settings-BwT6YspU.js +0 -6
- comfyui_frontend_package/static/assets/settings-BwT6YspU.js.map +0 -1
- comfyui_frontend_package/static/assets/settings-C83z84hb.js.map +0 -1
- comfyui_frontend_package/static/assets/settings-CpGAolL8.js +0 -6
- comfyui_frontend_package/static/assets/settings-CpGAolL8.js.map +0 -1
- comfyui_frontend_package/static/assets/settings-DHYEklkf.js +0 -6
- comfyui_frontend_package/static/assets/settings-DHYEklkf.js.map +0 -1
- comfyui_frontend_package/static/assets/settings-DLFPCNJr.js +0 -6
- comfyui_frontend_package/static/assets/settings-DLFPCNJr.js.map +0 -1
- comfyui_frontend_package/static/assets/settings-JVJwzdtf.js +0 -6
- comfyui_frontend_package/static/assets/settings-JVJwzdtf.js.map +0 -1
- comfyui_frontend_package/static/assets/settings-Tg5NBf0t.js +0 -6
- comfyui_frontend_package/static/assets/settings-Tg5NBf0t.js.map +0 -1
- comfyui_frontend_package/static/assets/settings-_tes1LYa.js +0 -6
- comfyui_frontend_package/static/assets/settings-_tes1LYa.js.map +0 -1
- comfyui_frontend_package/static/assets/settings-cav_bQJj.js +0 -6
- comfyui_frontend_package/static/assets/settings-cav_bQJj.js.map +0 -1
- {comfyui_frontend_package-1.37.9.dist-info → comfyui_frontend_package-1.37.10.dist-info}/WHEEL +0 -0
- {comfyui_frontend_package-1.37.9.dist-info → comfyui_frontend_package-1.37.10.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SubscriptionRequiredDialogContent-BMLw-0ti.js","./index-B3VEOed6.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-CPtP45Cb.css","./UserAvatar.vue_vue_type_script_setup_true_lang-48WRCWXz.js","./index-CtDW77xi.js","./LazyImage.vue_vue_type_script_setup_true_lang-BHcWsrBj.js","./keybindingService-50G4NbCc.js","./serverConfigStore-D8kGBwZ6.js","./WidgetInputNumber.vue_vue_type_script_setup_true_lang-D-IwEPPr.js","./widgetPropFilter-CygYoMQt.js","./WidgetLayoutField.vue_vue_type_script_setup_true_lang-DFWVBJH-.js","./WidgetWithControl.vue_vue_type_script_setup_true_lang-B7cz0rwK.js","./WidgetInputNumber-DwTgzZ6Z.css","./SubscriptionRequiredDialogContent-BJ80blC4.css","./ComfyQueueButton-D0Y-jFOd.js","./ComfyQueueButton-Chw03MdC.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
var Nl=Object.defineProperty;var n=(e,o)=>Nl(e,"name",{value:o,configurable:!0});import{bw as Ze,r as L,E as y,bx as K,ep as ma,i as Il,eb as Yo,w as se,c as $,d,l as de,z as O,e as c,v as Xe,k as A,s as Q,by as m,q as E,p as he,T as Jo,j as R,u as V,F as oe,y as be,A as $e,cM as Xo,cN as wo,eq as Ml,er as ga,m as Pt,D as zn,I as ke,G as ye,L as je,es as ks,dH as Sn,e9 as _n,et as Pl,h as Ie,J as to,ec as Zo,bB as en,bg as lt,dc as rt,du as va,n as Fe,dI as Ce,o as ze,cO as xs,eu as Dl,d8 as Xt,d2 as Oe,e7 as Al,cB as Qt,db as tn,ev as Ll,dy as ha,a as Tn,ew as ya,f as ba,cd as ht,x as Nt,cp as wa,cx as Et,dg as Ca,t as oo,cy as Bn,d5 as xt,e8 as El,ex as ao,dK as Ct,dw as ka,bl as Vl,dn as Ol,cF as xa,b as Sa,bz as Ss,ey as Rl,ez as vo,eA as Wl,bi as _s,eB as zl,d6 as Bl,cw as Fl,bj as Ul,da as _a,d3 as on,eC as Gl,d4 as Hl,dF as Ta,dz as jl,bn as ql,g as Ts,bk as $a,dG as Kl,d0 as Ql,dE as Na,eD as Yl,em as Jl,e2 as Xl}from"./vendor-other-B8t_Wf2K.js";import{d as Dt,u as fe,s as qe,j as Ia,k as Ma}from"./vendor-vue-DaLZjKA7.js";import{b as Zl,p as et,_ as Fn,u as Wt,Z as Pa,$ as $n,a0 as $t,a1 as Un,w as Zt,a2 as Da,e as ei,a3 as ti,a as Gn,q as $s,M as oi,O as ni,P as si,J as ai,a4 as li,v as Aa,o as La,L as Ea,R as $o,c as ii,y as Va,g as ri,a5 as ui,a6 as ci,m as di,k as mo,a7 as pi}from"./vendor-primevue-Bp7MMXLP.js";import{s as Ae,n as He,a as Te,i as Oa,b as kt,c as ne,_ as J,d as Le,S as nn,t as ce,u as ut,e as ie,f as Mt,g as fi,E as Hn,h as Ns,V as mi,j as gi,k as jn,l as qn,m as Kn,o as vi,p as yt,q as it,r as Y,v as hi,w as We,x as lo,y as Ho,z as io,A as _e,B as ct,C as yi,D as St,F as nt,G as Ra,H as bi,I as Qn,J as Wa,K as ve,L as wi,M as Is,N as Ms,O as zt,P as Ci,Q as za,R as Ps,T as Ds,U as ki,W as xi,X as Bt,Y as Si,Z as _i,$ as Ti,a0 as $i,a1 as Yn,a2 as ro,a3 as Ft,a4 as Ba,a5 as Fa,a6 as Ni,a7 as Ii,a8 as Ua,a9 as Jn,aa as Ke,ab as Mi,ac as gt,ad as Nn,ae as Xn,af as eo,ag as Pi,ah as ho,ai as Di,aj as Ai,ak as no,al as Pe,am as Ga,an as Li,ao as dt,ap as Ei,aq as Vi,ar as uo,as as ge,at as Oi,au as Ri,av as Vt,aw as Ye,ax as Oo,ay as Wi,az as Ut,aA as so,aB as zi,aC as Zn,aD as es,aE as jo,aF as ts,aG as vt,aH as Ot,aI as Bi,aJ as It,aK as Re,aL as os,aM as Ha,aN as sn,aO as Fi,aP as Ui,aQ as ja,aR as Gi,aS as Hi,aT as ji,aU as qi,aV as an,aW as Co,aX as Ki,aY as Qi,aZ as Yi,a_ as Ji,a$ as Xi,b0 as un,b1 as _o,b2 as Zi,b3 as er,b4 as tr,b5 as or,b6 as nr,b7 as sr,b8 as ar,b9 as lr,ba as ir,bb as ns,bc as rr,bd as As,be as ur,bf as cr,bg as dr,bh as pr,bi as fr,bj as wt,bk as qa,bl as ss,bm as Ka,bn as yo,bo as Qa,bp as Ya,bq as Ja,br as mr,bs as gr,bt as Xa,bu as vr,bv as hr,bw as yr,bx as Za,by as br,bz as Ls,bA as wr,bB as Cr,bC as as,bD as kr,bE as mt,bF as el,bG as xr,bH as Sr,bI as Yt,bJ as _r,bK as Tr,bL as $r,bM as Nr,bN as Ir,bO as Mr,bP as cn,bQ as No,bR as Pr,bS as tl,bT as dn,bU as Dr,bV as Ar,bW as pn,bX as ol,bY as Es,bZ as Lr,b_ as Er,b$ as To,c0 as fn,c1 as Vr,c2 as Or,c3 as Rr,c4 as Wr,c5 as Vs,c6 as Os,c7 as Rs,c8 as zr,c9 as nl,ca as Br,cb as Fr,cc as Ur,cd as Gr,ce as Hr,cf as Ws,cg as jr,ch as zs,ci as qr,cj as Kr,ck as Bs,cl as Fs,cm as Qr,cn as Yr,co as Jr,cp as bo,cq as Xr,cr as Zr,cs as eu,ct as tu,cu as ou,cv as nu,cw as sl,cx as su,cy as au,cz as lu,cA as iu,cB as ru,cC as uu}from"./index-B3VEOed6.js";import{_ as al}from"./UserAvatar.vue_vue_type_script_setup_true_lang-48WRCWXz.js";import{W as cu}from"./index-CtDW77xi.js";import{_ as qo,u as du,a as pu,b as fu,c as ko,d as mu}from"./LazyImage.vue_vue_type_script_setup_true_lang-BHcWsrBj.js";import{u as mn}from"./keybindingService-50G4NbCc.js";import{u as gu}from"./serverConfigStore-D8kGBwZ6.js";import{_ as vu}from"./WidgetInputNumber.vue_vue_type_script_setup_true_lang-D-IwEPPr.js";var ll=(e=>(e.Cloud="cloud",e.Local="local",e.Desktop="desktop",e.Mac="mac",e.Windows="windows",e))(ll||{});const Io=n(e=>({all:"icon-[lucide--list]","getting-started":"icon-[lucide--graduation-cap]","generation-image":"icon-[lucide--image]",image:"icon-[lucide--image]","generation-video":"icon-[lucide--film]",video:"icon-[lucide--film]","generation-3d":"icon-[lucide--box]","3d":"icon-[lucide--box]","generation-audio":"icon-[lucide--volume-2]",audio:"icon-[lucide--volume-2]","generation-llm":"icon-[lucide--message-square-text]","api-nodes":"icon-[lucide--hand-coins]","closed-models":"icon-[lucide--hand-coins]",llm:"icon-[lucide--message-square-text]",llms:"icon-[lucide--message-square-text]","llm-api":"icon-[lucide--message-square-text]","small-models":"icon-[lucide--zap]",performance:"icon-[lucide--zap]","mac-compatible":"icon-[lucide--command]","runs-on-mac":"icon-[lucide--command]","lora-training":"icon-[lucide--dumbbell]",training:"icon-[lucide--dumbbell]",extensions:"icon-[lucide--puzzle]",tools:"icon-[lucide--wrench]",upscaling:"icon-[lucide--maximize-2]",controlnet:"icon-[lucide--sliders-horizontal]","area-composition":"icon-[lucide--layout-grid]"})[e.toLowerCase()]||"icon-[lucide--folder]","getCategoryIcon");function Us(e,o){return`${e.toLowerCase().replace(/\s+/g,"-")}-${o.toLowerCase().replace(/\s+/g,"-")}`}n(Us,"generateCategoryId");const il=Dt("workflowTemplates",()=>{const e=Ze({}),o=Ze([]),t=Ze([]),s=L(!1),l=L(new Set),a=n(k=>f.value.find(I=>I.name===k),"getTemplateByName"),i=L(new Map),r=n((k,I)=>({...k,localizedTitle:Ae(`templateWorkflows.template.${He(I)}.${He(k.name)}`,k.title??k.name),localizedDescription:Ae(`templateWorkflows.templateDescription.${He(I)}.${He(k.name)}`,k.description)}),"addLocalizedFieldsToTemplate"),u=n((k,I)=>k.map(x=>r(x,I)),"localizeTemplateList"),p=n(k=>({...k,localizedTitle:Ae(`templateWorkflows.category.${He(k.title)}`,k.title??k.moduleName),templates:u(k.templates,k.title)}),"localizeTemplateCategory"),g=n(()=>{const k=o.value.flatMap(x=>x.templates.map(_=>({...r(_,x.title),sourceModule:x.moduleName}))),I=Object.entries(e.value).flatMap(([x,_])=>_.map(S=>({name:S,mediaType:"image",mediaSubtype:"jpg",description:S,sourceModule:x})));return{moduleName:"all",title:"All",localizedTitle:Ae("templateWorkflows.category.All","All Templates"),templates:[...k,...I]}},"createAllCategory"),v=y(()=>{const k=[...o.value.map(p),...Object.entries(e.value).map(([x,_])=>({moduleName:x,title:x,localizedTitle:Ae(`templateWorkflows.category.${He(x)}`,x),templates:_.map(S=>({name:S,mediaType:"image",mediaSubtype:"jpg",description:S}))}))];return[{label:Ae("templateWorkflows.category.ComfyUI Examples","ComfyUI Examples"),modules:[g(),...k.filter(x=>x.moduleName==="default")]},...Object.keys(e.value).length>0?[{label:Ae("templateWorkflows.category.Custom Nodes","Custom Nodes"),modules:k.filter(x=>x.moduleName!=="default")}]:[]]}),f=y(()=>{const k=[];return o.value.forEach(x=>{x.templates.forEach(_=>{const S={..._,sourceModule:x.moduleName,category:x.title,categoryType:x.type,categoryGroup:x.category,isEssential:x.isEssential,isPartnerNode:_.openSource===!1,searchableText:[_.title||_.name,_.description||"",x.title,..._.tags||[],..._.models||[]].join(" ")};k.push(S)})}),Object.entries(e.value).forEach(([x,_])=>{_.forEach(S=>{const T={name:S,title:S,description:S,mediaType:"image",mediaSubtype:"jpg",sourceModule:x,category:"Extensions",categoryType:"extension",searchableText:`${S} ${x} extension`};k.push(T)})}),k.filter(x=>!x.requiresCustomNodes?.length)}),b=n(k=>{if(k==="all")return f.value;if(k.startsWith("basics-"))return f.value.filter(x=>x.isEssential&&x.category?.toLowerCase().replace(/\s+/g,"-")===k.replace("basics-",""));if(k==="popular")return f.value;if(k==="partner-nodes")return f.value.filter(x=>x.isPartnerNode);if(k.startsWith("extension-")){const x=k.replace("extension-","");return f.value.filter(_=>_.sourceModule===x)}const I=i.value.get(k);return I?f.value.filter(x=>!(I.category&&x.category!==I.category||I.categoryGroup&&x.categoryGroup!==I.categoryGroup)):f.value},"filterTemplatesByCategory"),C=y(()=>{if(!s.value)return[];const k=[];i.value.clear(),k.push({id:"all",label:Ae("templateWorkflows.category.All","All Templates"),icon:Io("all")}),k.push({id:"popular",label:Ae("templateWorkflows.category.Popular","Popular"),icon:"icon-[lucide--flame]"});const I=o.value.filter(T=>T.isEssential&&T.templates.length>0);I.length>0&&I.forEach(T=>{const N=T.icon,M=T.title??"Getting Started",D=Us("basics",T.title);k.push({id:D,label:Ae(`templateWorkflows.category.${He(M)}`,M),icon:N||Io(T.type||"getting-started")})});const x=new Map;if(o.value.forEach(T=>{if(T.isEssential)return;const N=T.category,M=T.icon;if(N){x.has(N)||x.set(N,{title:N,items:[]});const D=x.get(N),B=Us(N,T.title);i.value.set(B,{category:T.title,categoryGroup:N}),D.items.push({id:B,label:Ae(`templateWorkflows.category.${He(T.title)}`,T.title),icon:M||Io(T.type||"default")})}}),x.forEach((T,N)=>{T.items.length>0&&k.push({title:Ae(`templateWorkflows.category.${He(N)}`,N.split(" ").map(M=>M.charAt(0).toUpperCase()+M.slice(1).toLowerCase()).join(" ")),items:T.items})}),f.value.filter(T=>T.isPartnerNode).length>0&&k.push({id:"partner-nodes",label:Ae("templateWorkflows.category.Partner Nodes","Partner Nodes"),icon:"icon-[lucide--handshake]"}),f.value.filter(T=>T.sourceModule!=="default").length>0){const N=Array.from(new Set(f.value.filter(M=>M.sourceModule!=="default").map(M=>M.sourceModule))).sort().map(M=>({id:`extension-${M}`,label:Ae(`templateWorkflows.category.${He(M)}`,M),icon:Io("extensions")}));k.push({title:Ae("templateWorkflows.category.Extensions","Extensions"),items:N,collapsible:!0})}return k});async function h(){try{if(!s.value){e.value=await Te.getWorkflowTemplates();const k=Oa.global.locale.value,[I,x]=await Promise.all([Te.getCoreWorkflowTemplates(k),kt&&k!=="en"?Te.getCoreWorkflowTemplates("en"):Promise.resolve([])]);o.value=I,t.value=x;const _=o.value.flatMap(T=>T.templates.map(N=>N.name)),S=Object.values(e.value).flat();l.value=new Set([..._,...S]),s.value=!0}}catch(k){console.error("Error fetching workflow templates:",k)}}n(h,"loadWorkflowTemplates");function w(k){if(t.value.length===0)return null;for(const I of t.value){const x=I.templates.find(_=>_.name===k);if(x)return{tags:x.tags,category:I.title,useCase:x.useCase,models:x.models,license:x.license}}return null}return n(w,"getEnglishMetadata"),{groupedTemplates:v,navGroupedTemplates:C,enhancedTemplates:f,filterTemplatesByCategory:b,isLoaded:s,loadWorkflowTemplates:h,knownTemplateNames:l,getTemplateByName:a,getEnglishMetadata:w}}),ln=Symbol(),hu={class:"base-widget-layout rounded-2xl overflow-hidden relative"},yu={class:"flex h-full w-full"},bu={class:"flex-1 flex bg-base-background"},wu={class:"flex h-full w-full flex-col"},Cu={key:0,class:"w-full h-18 px-6 flex items-center justify-between gap-2"},ku={class:"flex flex-1 shrink-0 gap-2"},xu={class:"flex min-h-0 flex-1 flex-col"},Su={key:0,class:"text-xxl m-0 px-6 pt-2 pb-6 capitalize"},_u={class:"min-h-0 flex-1 px-6 pt-0 pb-10 overflow-y-auto scrollbar-custom"},Tu={key:0,class:"w-1/4 min-w-40 max-w-80"},$u=K({__name:"BaseModalLayout",props:{contentTitle:{}},setup(e){const o={md:880},t={width:"w-1/3",minWidth:"min-w-40",maxWidth:"max-w-56"},s=ma(),l=Il(ln,()=>{}),i=Yo(o).greater("md"),r=L(!0),u=L(!1),p=L(!1),g=y(()=>!!s.rightPanel);se(i,C=>{C||(p.value=!1)});const v=y(()=>i.value?r.value:p.value),f=n(()=>{i.value?r.value=!r.value:p.value=!p.value},"toggleLeftPanel"),b=n(()=>{u.value=!u.value},"toggleRightPanel");return(C,h)=>(d(),$("div",hu,[de(O(J,{size:"icon",class:Q(m(ne)("absolute top-4 right-18 z-10","transition-opacity duration-200",{"opacity-0 pointer-events-none":u.value||!g.value})),onClick:b},{default:A(()=>h[0]||(h[0]=[c("i",{class:"icon-[lucide--panel-right] text-sm"},null,-1)])),_:1},8,["class"]),[[Xe,!u.value&&g.value]]),O(J,{size:"lg",class:"absolute top-4 right-6 z-10 transition-opacity duration-200 w-10",onClick:m(l)},{default:A(()=>h[1]||(h[1]=[c("i",{class:"pi pi-times"},null,-1)])),_:1},8,["onClick"]),c("div",yu,[O(Jo,{name:"slide-panel"},{default:A(()=>[C.$slots.leftPanel&&v.value?(d(),$("nav",{key:0,class:Q([t.width,t.minWidth,t.maxWidth])},[he(C.$slots,"leftPanel",{},void 0,!0)],2)):E("",!0)]),_:3}),c("div",bu,[c("div",wu,[C.$slots.header?(d(),$("header",Cu,[c("div",ku,[m(i)?E("",!0):(d(),R(J,{key:0,size:"icon",onClick:f},{default:A(()=>[c("i",{class:Q(m(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:Q(m(ne)("flex justify-end gap-2 w-0",g.value&&!u.value?"min-w-22":"min-w-10"))},[u.value&&g.value?(d(),R(J,{key:0,size:"icon",onClick:b},{default:A(()=>h[2]||(h[2]=[c("i",{class:"icon-[lucide--panel-right-close]"},null,-1)])),_:1})):E("",!0)],2)])):E("",!0),c("main",xu,[he(C.$slots,"contentFilter",{},void 0,!0),C.$slots.leftPanel?E("",!0):(d(),$("h2",Su,V(C.contentTitle),1)),c("div",_u,[he(C.$slots,"content",{},void 0,!0)])])]),g.value&&u.value?(d(),$("aside",Tu,[he(C.$slots,"rightPanel",{},void 0,!0)])):E("",!0)])])]))}}),ls=Le($u,[["__scopeId","data-v-643fc509"]]),Nu=K({__name:"NavIcon",props:{icon:{}},setup(e){return(o,t)=>(d(),$("i",{class:Q([o.icon,"text-neutral text-sm shrink-0"])},null,2))}}),Iu={key:0,class:"pt-0.5"},Mu={key:1,class:"text-neutral icon-[lucide--folder] text-xs shrink-0"},Pu={class:"flex items-center break-all"},Gs=K({__name:"NavItem",props:{icon:{},active:{type:Boolean},onClick:{type:Function}},setup(e){return(o,t)=>(d(),$("div",{class:Q(["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",Iu,[O(Nu,{icon:o.icon},null,8,["icon"])])):(d(),$("i",Mu)),c("span",Pu,[he(o.$slots,"default")])],2))}}),Du={class:"text-xs font-bold text-text-secondary uppercase"},Au=K({__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:Q(m(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",Du,V(a.title),1),a.collapsible?(d(),$("i",{key:0,class:Q(m(ne)("pi transition-transform duration-200 text-xs text-text-secondary ",s.value?"pi-chevron-right":"pi-chevron-down"))},null,2)):E("",!0)],2))}}),Lu={},Eu={class:"flex h-16 items-center justify-between px-6"},Vu={class:"flex items-center gap-2 pl-1"},Ou={class:"text-neutral text-base font-bold"};function Ru(e,o){return d(),$("header",Eu,[c("div",Vu,[he(e.$slots,"icon",{},()=>[o[0]||(o[0]=c("i",{class:"text-neutral icon-[lucide--puzzle] text-base"},null,-1))]),c("h2",Ou,[he(e.$slots,"default")])])])}n(Ru,"_sfc_render$2");const Wu=Le(Lu,[["render",Ru]]),zu={class:"flex h-full w-full flex-col bg-modal-panel-background"},Bu={class:"flex scrollbar-hide flex-1 flex-col gap-1 overflow-y-auto px-3 py-4"},Fu={key:0,class:"flex flex-col gap-2"},Uu={key:1,class:"flex flex-col gap-2"},is=K({__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",zu,[O(Wu,null,{icon:A(()=>[he(i.$slots,"header-icon")]),default:A(()=>[he(i.$slots,"header-title")]),_:3}),c("nav",Bu,[(d(!0),$(oe,null,be(i.navItems,(u,p)=>(d(),$(oe,{key:p},["items"in u?(d(),$("div",Fu,[O(Au,{modelValue:s.value[u.title],"onUpdate:modelValue":n(g=>s.value[u.title]=g,"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,g=>(d(),R(Gs,{key:g.id,icon:g.icon,active:a.value===g.id,onClick:n(v=>a.value=g.id,"onClick")},{default:A(()=>[$e(V(g.label),1)]),_:2},1032,["icon","active","onClick"]))),128)):E("",!0)])):(d(),$("div",Uu,[O(Gs,{icon:u.icon,active:a.value===u.id,onClick:n(g=>a.value=u.id,"onClick")},{default:A(()=>[$e(V(u.label),1)]),_:2},1032,["icon","active","onClick"])]))],64))),128))])]))}});function Gu(e){return y(()=>{const{minWidth:o,maxWidth:t}=e,s={};return o&&(s.minWidth=o),t&&(s.maxWidth=t),s})}n(Gu,"usePopoverSizing");const Hu={class:"flex flex-col px-2 pt-2 pb-0"},ju={key:1,class:"mt-2 flex items-center justify-between"},qu={key:0,class:"px-1 text-sm text-base-foreground"},Ku={class:"text-sm"},Qu={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"},Yu={key:0,class:"text-bold icon-[lucide--check] text-xs text-base-foreground"},Rt=K({inheritAttrs:!1,__name:"MultiSelect",props:Xo({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=wo(e,"modelValue"),t=wo(e,"searchQuery"),{t:s}=fe(),l=y(()=>o.value.length),a=Gu({minWidth:e.popoverMinWidth,maxWidth:e.popoverMaxWidth}),i=Ml(),r=y(()=>i.options||[]),u={fuseOptions:{keys:["name","value"],threshold:.3,includeScore:!1},matchAllWhenSearchEmpty:!0},{results:p}=ga(t,r,u),g=y(()=>{if(!t.value||t.value.trim()==="")return r.value;const v=p.value.map(b=>b.item);return[...o.value.filter(b=>!v.some(C=>C.value===b.value)),...v]});return(v,f)=>(d(),R(m(Zl),Pt({modelValue:o.value,"onUpdate:modelValue":f[2]||(f[2]=b=>o.value=b)},{...v.$attrs,options:g.value},{"option-label":"name",unstyled:"","max-selected-labels":0,pt:{root:n(({props:b})=>({class:m(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":b.disabled})}),"root"),labelContainer:{class:"flex-1 flex items-center overflow-hidden whitespace-nowrap pl-4 py-2 "},label:{class:"p-0"},dropdown:{class:"flex shrink-0 cursor-pointer items-center justify-center px-3"},header:n(()=>({class:v.showSearchBox||v.showSelectedCount||v.showClearButton?"block":"hidden"}),"header"),overlay:{class:m(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:b})=>({class:m(ne)("flex gap-2 items-center h-10 px-2 rounded-lg cursor-pointer","hover:bg-secondary-background-hover",b?.focused&&"bg-secondary-background-selected hover:bg-secondary-background-selected")}),"option"),pcHeaderCheckbox:{root:{class:"hidden"},style:{display:"none"}},pcOptionCheckbox:{root:{class:"hidden"},style:{display:"none"}}},"aria-label":v.label||m(s)("g.multiSelectDropdown"),role:"combobox","aria-expanded":!1,"aria-haspopup":"listbox",tabindex:0}),zn({value:A(()=>[c("span",Ku,V(v.label),1),l.value>0?(d(),$("span",Qu,V(l.value),1)):E("",!0)]),dropdownicon:A(()=>[f[4]||(f[4]=c("i",{class:"icon-[lucide--chevron-down] text-muted-foreground"},null,-1))]),option:A(b=>[c("div",{role:"button",class:"flex items-center gap-2 cursor-pointer",style:ye(m(a))},[c("div",{class:Q(["flex size-4 shrink-0 items-center justify-center rounded p-0.5 transition-all duration-200",b.selected?"bg-primary-background":"bg-secondary-background"])},[b.selected?(d(),$("i",Yu)):E("",!0)],2),c("span",null,V(b.option.name),1)],4)]),_:2},[v.showSearchBox||v.showSelectedCount||v.showClearButton?{name:"header",fn:A(()=>[c("div",Hu,[v.showSearchBox?(d(),R(nn,{key:0,modelValue:t.value,"onUpdate:modelValue":f[0]||(f[0]=b=>t.value=b),class:Q(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",qu,V(l.value>0?v.$t("g.itemsSelected",{selectedCount:l.value}):v.$t("g.itemSelected",{selectedCount:l.value})),1)):E("",!0),v.showClearButton?(d(),R(J,{key:1,variant:"textonly",size:"md",onClick:f[1]||(f[1]=ke(b=>o.value=[],["stop"]))},{default:A(()=>[$e(V(v.$t("g.clearAll")),1)]),_:1})):E("",!0)])):E("",!0),f[3]||(f[3]=c("div",{class:"my-4 h-px bg-border-default"},null,-1))])]),key:"0"}:void 0]),1040,["modelValue","pt","aria-label"]))}});function Ju(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 ks(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 ks(l,(i,r)=>i===r).sort().map(i=>({name:i,value:i}))});return{availableFileFormats:o,availableBaseModels:t}}n(Ju,"useAssetFilterOptions");const Xu={class:"flex gap-4 items-center justify-between px-6 pt-2 pb-6","data-component-id":"asset-filter-bar"},Zu={class:"flex gap-4 items-center","data-component-id":"asset-filter-bar-left"},ec={class:"flex items-center","data-component-id":"asset-filter-bar-right"},tc=K({__name:"AssetFilterBar",props:{assets:{default:n(()=>[],"default")},allAssets:{default:n(()=>[],"default")}},emits:["filterChange"],setup(e,{emit:o}){const s=[...[{name:ce("assetBrowser.sortRecent"),value:"recent"},{name:ce("assetBrowser.sortAZ"),value:"name-asc"},{name:ce("assetBrowser.sortZA"),value:"name-desc"}]],l=[{name:ce("assetBrowser.ownershipAll"),value:"all"},{name:ce("assetBrowser.ownershipMyModels"),value:"my-models"},{name:ce("assetBrowser.ownershipPublicModels"),value:"public-models"}],a=L([]),i=L([]),r=L("recent"),u=L("all"),{availableFileFormats:p,availableBaseModels:g}=Ju(e.assets),v=y(()=>(e.allAssets.length?e.allAssets:e.assets).some(h=>h.is_immutable===!1)),f=o;function b(){f("filterChange",{fileFormats:a.value.map(C=>C.value),baseModels:i.value.map(C=>C.value),sortBy:r.value,ownership:u.value})}return n(b,"handleFilterChange"),(C,h)=>(d(),$("div",Xu,[c("div",Zu,[m(p).length>0?(d(),R(Rt,{key:0,modelValue:a.value,"onUpdate:modelValue":[h[0]||(h[0]=w=>a.value=w),b],label:C.$t("assetBrowser.fileFormats"),options:m(p),class:"min-w-32","data-component-id":"asset-filter-file-formats"},null,8,["modelValue","label","options"])):E("",!0),m(g).length>0?(d(),R(Rt,{key:1,modelValue:i.value,"onUpdate:modelValue":[h[1]||(h[1]=w=>i.value=w),b],label:C.$t("assetBrowser.baseModels"),options:m(g),class:"min-w-32","data-component-id":"asset-filter-base-models"},null,8,["modelValue","label","options"])):E("",!0),v.value?(d(),R(qo,{key:2,modelValue:u.value,"onUpdate:modelValue":[h[2]||(h[2]=w=>u.value=w),b],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",ec,[O(qo,{modelValue:r.value,"onUpdate:modelValue":[h[3]||(h[3]=w=>r.value=w),b],label:C.$t("assetBrowser.sortBy"),options:s,class:"min-w-32","data-component-id":"asset-filter-sort"},{icon:A(()=>h[4]||(h[4]=[c("i",{class:"icon-[lucide--arrow-up-down]"},null,-1)])),_:1},8,["modelValue","label"])])]))}}),oc={class:"relative inline-flex items-center"},nc={class:"flex min-w-40 flex-col gap-2 p-2"},rl=K({__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",oc,[O(J,{size:"icon",variant:"secondary",onClick:s.value?.toggle},{default:A(()=>[c("i",{class:Q(m(ne)(a.isVertical?"icon-[lucide--more-vertical]":"icon-[lucide--ellipsis]","text-sm"))},null,2)]),_:1},8,["onClick"]),O(m(et),{ref_key:"popover",ref:s,"append-to":"body","auto-z-index":"",dismissable:"","close-on-escape":"",unstyled:"","base-z-index":1e3,pt:{root:{class:m(ne)("absolute z-50")},content:{class:m(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",nc,[he(a.$slots,"default",{close:l})])]),_:3},8,["pt"])]))}}),sc={class:"flex flex-col px-4 py-2 text-sm text-muted-foreground border-t border-border-default"},ac={key:0},lc=K({__name:"ConfirmBody",props:{promptText:{}},setup(e){const o=y(()=>je(e.promptText));return(t,s)=>(d(),$("div",sc,[o.value?(d(),$("p",ac,V(o.value),1)):E("",!0)]))}}),ic={class:"w-full flex gap-2 justify-end px-2 pb-2"},rc=K({__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",ic,[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:Q(a.confirmClass),onClick:i[1]||(i[1]=r=>a.$emit("confirm"))},{default:A(()=>[$e(V(t.value),1)]),_:1},8,["disabled","class"])]))}}),uc={class:"flex items-center gap-2 p-4 font-bold text-sm text-base-foreground font-inter"},cc={key:0,class:"flex-auto"},dc=K({__name:"ConfirmHeader",props:{title:{}},setup(e){return(o,t)=>(d(),$("div",uc,[o.title?(d(),$("span",cc,V(o.title),1)):E("",!0)]))}});function pc(e={}){const o=ut(),{headerProps:t,props:s,footerProps:l}=e;return o.showDialog({headerComponent:dc,component:lc,footerComponent:rc,headerProps:t,props:s,footerProps:l,dialogComponentProps:{pt:{header:"py-0! px-0!",content:"p-0!",footer:"p-0!"}}})}n(pc,"showConfirmDialog");const fc={class:"absolute left-2 bottom-2 flex flex-wrap justify-start gap-1"},mc=K({__name:"AssetBadgeGroup",props:{badges:{}},setup(e){return(o,t)=>(d(),$("div",fc,[(d(!0),$(oe,null,be(o.badges,s=>(d(),$("span",{key:s.label,class:Q(m(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))]))}}),gc=["data-asset-id","aria-labelledby","aria-describedby","tabindex"],vc={class:"relative aspect-square w-full overflow-hidden rounded-xl"},hc=["src","alt"],yc={class:"max-h-32 flex flex-col gap-2 justify-between flex-auto"},bc=["id"],wc=["id"],Cc={class:"flex gap-4 text-xs text-muted-foreground mt-auto"},kc={key:0,class:"flex items-center gap-1"},xc={key:1,class:"flex items-center gap-1"},Sc={key:2,class:"flex items-center gap-1"},_c=K({__name:"AssetCard",props:{asset:{},interactive:{type:Boolean}},emits:["select"],setup(e){const{t:o}=fe(),t=ie(),{closeDialog:s}=ut(),{flags:l}=du(),a=Mt(),i=Sn("dropdown-menu-button"),r=_n(),u=_n(),p=L(!1),g=L(),v=L(!1),f=y(()=>g.value??e.asset.name),b=y(()=>(l.assetDeletionEnabled||l.assetRenameEnabled)&&!(e.asset.is_immutable??!0)),C=y(()=>t.get("LiteGraph.Node.TooltipDelay")),{isLoading:h,error:w}=Pl({src:e.asset.preview_url??"",alt:e.asset.name});function k(){i.value?.hide();const _=je(f),S=L(o("assetBrowser.deletion.body")),T=L(!1),N=pc({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:T,onCancel:n(()=>{s(N)},"onCancel"),onConfirm:n(async()=>{T.value=!0;try{S.value=o("assetBrowser.deletion.inProgress",{assetName:_}),await Ns.deleteAsset(e.asset.id),S.value=o("assetBrowser.deletion.complete",{assetName:_}),await new Promise(M=>setTimeout(M,1e3)),v.value=!0}catch(M){console.error(M),S.value=o("assetBrowser.deletion.failed",{assetName:_}),await new Promise(D=>setTimeout(D,3e3))}finally{s(N)}},"onConfirm")}})}n(k,"confirmDeletion");function I(){i.value?.hide(),p.value=!0}n(I,"startAssetRename");async function x(_){if(p.value=!1,_){g.value=_;try{const S=await Ns.updateAsset(e.asset.id,{name:_});g.value=S.name}catch(S){console.error(S),a.add({severity:"error",summary:o("assetBrowser.rename.failed"),life:1e4}),g.value=void 0}}}return n(x,"assetRename"),(_,S)=>{const T=Ie("tooltip");return v.value?E("",!0):(d(),$("div",{key:0,"data-component-id":"AssetCard","data-asset-id":_.asset.id,"aria-labelledby":m(r),"aria-describedby":m(u),tabindex:_.interactive?0:-1,class:Q(m(ne)("rounded-2xl overflow-hidden transition-all duration-200 bg-modal-card-background p-2 gap-2 flex flex-col h-full",_.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]=to(ke(N=>_.interactive&&_.$emit("select",_.asset),["self"]),["enter"]))},[c("div",vc,[m(h)||m(w)?(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]=ke(N=>_.interactive&&_.$emit("select",_.asset),["self"]))})):(d(),$("img",{key:1,src:_.asset.preview_url,alt:f.value,class:"size-full object-cover cursor-pointer",role:"button",onClick:S[1]||(S[1]=ke(N=>_.interactive&&_.$emit("select",_.asset),["self"]))},null,8,hc)),O(mc,{badges:_.asset.badges},null,8,["badges"]),b.value?(d(),R(fi,{key:2,class:Q(m(ne)("absolute top-2 right-2 invisible group-hover:visible",m(i)?.isOpen&&"visible"))},{default:A(()=>[O(rl,{ref:"dropdown-menu-button",size:"sm"},{default:A(()=>[m(l).assetRenameEnabled?(d(),R(J,{key:0,variant:"secondary",size:"md",class:"justify-start",onClick:I},{default:A(()=>[S[4]||(S[4]=c("i",{class:"icon-[lucide--pencil]"},null,-1)),c("span",null,V(_.$t("g.rename")),1)]),_:1})):E("",!0),m(l).assetDeletionEnabled?(d(),R(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(_.$t("g.delete")),1)]),_:1})):E("",!0)]),_:1},512)]),_:1},8,["class"])):E("",!0)]),c("div",yc,[de((d(),$("h3",{id:m(r),class:Q(m(ne)("mb-2 m-0 text-base font-semibold line-clamp-2 wrap-anywhere","text-base-foreground"))},[O(Hn,{"model-value":f.value,"is-editing":p.value,"input-attrs":{"data-testid":"asset-name-input"},onEdit:x,onCancel:S[2]||(S[2]=N=>x())},null,8,["model-value","is-editing"])],10,bc)),[[T,{value:f.value,showDelay:C.value},void 0,{top:!0}]]),de((d(),$("p",{id:m(u),class:Q(m(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(_.asset.description),1)],10,wc)),[[T,{value:_.asset.description,showDelay:C.value},void 0,{top:!0}]]),c("div",Cc,[_.asset.stats.stars?(d(),$("span",kc,[S[6]||(S[6]=c("i",{class:"icon-[lucide--star] size-3"},null,-1)),$e(" "+V(_.asset.stats.stars),1)])):E("",!0),_.asset.stats.downloadCount?(d(),$("span",xc,[S[7]||(S[7]=c("i",{class:"icon-[lucide--download] size-3"},null,-1)),$e(" "+V(_.asset.stats.downloadCount),1)])):E("",!0),_.asset.stats.formattedDate?(d(),$("span",Sc,[S[8]||(S[8]=c("i",{class:"icon-[lucide--clock] size-3"},null,-1)),$e(" "+V(_.asset.stats.formattedDate),1)])):E("",!0)])])],42,gc))}}}),Tc=["aria-label","aria-setsize"],$c={key:0,class:"flex h-full items-center justify-center py-20"},Nc={key:1,class:"flex h-full flex-col items-center justify-center py-16 text-muted-foreground"},Ic={class:"mb-2 text-lg font-medium"},Mc={class:"text-sm"},Pc=K({__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",$c,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",Nc,[l[2]||(l[2]=c("i",{class:"mb-4 icon-[lucide--search] size-10"},null,-1)),c("h3",Ic,V(s.$t("assetBrowser.noAssetsFound")),1),c("p",Mc,V(s.$t("assetBrowser.tryAdjustingFilters")),1)])):(d(),R(mi,{key:2,items:o.value,"grid-style":t,"default-item-height":320,"default-item-width":240},{item:A(({item:a})=>[O(_c,{asset:a,interactive:!0,onSelect:l[0]||(l[0]=i=>s.$emit("assetSelect",i))},null,8,["asset"])]),_:1},8,["items"]))],8,Tc))}});function Dc(e){return typeof e.user_metadata?.description=="string"?e.user_metadata.description:null}n(Dc,"getAssetDescription");function ul(e){return typeof e.user_metadata?.base_model=="string"?e.user_metadata.base_model:null}n(ul,"getAssetBaseModel");function Ac(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(Ac,"filterByCategory");function Lc(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(Lc,"filterByFileFormats");function Ec(e){return o=>{if(e.length===0)return!0;const t=new Set(e),s=ul(o);return s?t.has(s):!1}}n(Ec,"filterByBaseModels");function Vc(e){return o=>e==="all"?!0:e==="my-models"?o.is_immutable===!1:e==="public-models"?o.is_immutable===!0:!0}n(Vc,"filterByOwnership");function Oc(e=L([])){const o=y(()=>e.value??[]),t=L(""),s=L("all"),l=L({sortBy:"recent",fileFormats:[],baseModels:[],ownership:"all"});function a(C){const h=C.tags.find(_=>_!=="models"),w=Dc(C)||`${h||ce("assetBrowser.unknown")} model`,k=[];if(h){const _=h.includes("/")?h.substring(h.indexOf("/")+1):h;k.push({label:_,type:"type"})}const I=ul(C);I&&k.push({label:I,type:"base"});const x={formattedDate:gi(new Date(C.created_at),{dateStyle:"short"}),downloadCount:void 0,stars:void 0};return{...C,description:w,badges:k,stats:x}}n(a,"transformAssetForDisplay");const i=y(()=>{const C=o.value.filter(w=>w.tags[0]==="models").map(w=>w.tags[1]).filter(w=>typeof w=="string"&&w.length>0).map(w=>w.split("/")[0]),h=Array.from(new Set(C)).sort().map(w=>({id:w,label:w.charAt(0).toUpperCase()+w.slice(1),icon:"icon-[lucide--package]"}));return[{id:"all",label:ce("assetBrowser.allModels"),icon:"icon-[lucide--folder]"},...h]}),r=y(()=>s.value==="all"?ce("assetBrowser.allModels"):i.value.find(h=>h.id===s.value)?.label||ce("assetBrowser.assets")),u=y(()=>o.value.filter(Ac(s.value))),p={fuseOptions:{keys:[{name:"name",weight:.4},{name:"tags",weight:.3}],threshold:.4,ignoreLocation:!0,includeScore:!0},matchAllWhenSearchEmpty:!0},{results:g}=ga(t,u,p),v=y(()=>g.value.map(C=>C.item)),f=y(()=>{const h=[...v.value.filter(Lc(l.value.fileFormats)).filter(Ec(l.value.baseModels)).filter(Vc(l.value.ownership))];return h.sort((w,k)=>{switch(l.value.sortBy){case"name-desc":return k.name.localeCompare(w.name);case"recent":return new Date(k.created_at).getTime()-new Date(w.created_at).getTime();case"popular":return w.name.localeCompare(k.name);case"name-asc":default:return w.name.localeCompare(k.name)}}),h.map(a)});function b(C){l.value={...C}}return n(b,"updateFilters"),{searchQuery:t,selectedCategory:s,availableCategories:i,contentTitle:r,categoryFilteredAssets:u,filteredAssets:f,updateFilters:b}}n(Oc,"useAssetBrowser");const Rc=new Set(["VAE","CLIP","GLIGEN"]);function Wc(e){return e?e==="diffusion_models"?"Diffusion":e.split("_").map(o=>{const t=o.toUpperCase();if(Rc.has(t))return t;const s=o.toLowerCase();return s.charAt(0).toUpperCase()+s.slice(1)}).join(" "):"Models"}n(Wc,"formatCategoryLabel");const zc={class:"capitalize"},Bc={class:"flex w-full items-center justify-between gap-2"},Fc={class:"hidden md:inline"},Hs=K({__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=qn(),a=Yo(Zo),i=e,r=o;en(ln,i.onClose??(()=>{}));const u=y(()=>i.nodeType?i.nodeType:i.assetType?`tag:${i.assetType}`:""),p=y(()=>s.modelAssetsByNodeType.get(u.value)??[]),g=y(()=>s.modelLoadingByNodeType.get(u.value)??!1),v=y(()=>g.value&&p.value.length===0);async function f(){return i.nodeType?await s.updateModelsForNodeType(i.nodeType):i.assetType?await s.updateModelsForTag(i.assetType):[]}n(f,"refreshAssets"),f();const{isUploadButtonEnabled:b,showUploadDialog:C}=pu(f),{searchQuery:h,selectedCategory:w,availableCategories:k,categoryFilteredAssets:I,filteredAssets:x,updateFilters:_}=Oc(p),S=y(()=>{const W=(p.value??[]).map(H=>H.tags?.find(U=>U!=="models")).find(H=>typeof H=="string"&&H.length>0);if(W)return W;if(i.nodeType){const H=l.getCategoryForNodeType(i.nodeType);if(H)return H}return i.assetType?i.assetType:"models"}),T=y(()=>w.value!=="all"?w.value:S.value),N=y(()=>{if(i.title)return i.title;const j=Wc(T.value);return t("assetBrowser.allCategory",{category:j})}),M=y(()=>i.showLeftPanel??!0);function D(){i.onClose?.(),r("close")}n(D,"handleClose");function B(j){r("asset-select",j),i.onSelect?.(j)}return n(B,"handleAssetSelectAndEmit"),(j,W)=>(d(),R(ls,{"data-component-id":"AssetBrowserModal",class:"size-full max-h-full max-w-full min-w-0","content-title":N.value,onClose:D},zn({header:A(()=>[c("div",Bc,[O(nn,{modelValue:m(h),"onUpdate:modelValue":W[1]||(W[1]=H=>lt(h)?h.value=H:null),autofocus:!0,size:"lg",placeholder:j.$t("g.searchPlaceholder"),class:"max-w-96"},null,8,["modelValue","placeholder"]),m(b)?(d(),R(J,{key:0,variant:"primary",size:m(a).md?"lg":"icon","data-attr":"upload-model-button",onClick:m(C)},{default:A(()=>[W[3]||(W[3]=c("i",{class:"icon-[lucide--folder-input]"},null,-1)),c("span",Fc,V(j.$t("assetBrowser.uploadModel")),1)]),_:1},8,["size","onClick"])):E("",!0)])]),contentFilter:A(()=>[O(tc,{assets:m(I),"all-assets":p.value,onFilterChange:m(_)},null,8,["assets","all-assets","onFilterChange"])]),content:A(()=>[O(Pc,{assets:m(x),loading:v.value,onAssetSelect:B},null,8,["assets","loading"])]),_:2},[M.value?{name:"leftPanel",fn:A(()=>[O(is,{modelValue:m(w),"onUpdate:modelValue":W[0]||(W[0]=H=>lt(w)?w.value=H:null),"data-component-id":"AssetBrowserModal-LeftSidePanel","nav-items":m(k)},{"header-icon":A(()=>W[2]||(W[2]=[c("div",{class:"icon-[lucide--folder] size-4"},null,-1)])),"header-title":A(()=>[c("span",zc,V(N.value),1)]),_:1},8,["modelValue","nav-items"])]),key:"0"}:void 0]),1032,["content-title"]))}}),js={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"}}},Uc=n(()=>{const e=ut(),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:Hs,props:{nodeType:l.nodeType,inputName:l.inputName,currentValue:l.currentValue,onSelect:a,onClose:n(()=>e.closeDialog({key:o}),"onClose")},dialogComponentProps:js})}n(t,"show");async function s(l){const a=n(i=>{l.onAssetSelected?.(i),e.closeDialog({key:o})},"handleAssetSelected");e.showDialog({key:o,component:Hs,props:{showLeftPanel:!0,assetType:l.assetType,title:l.title,onSelect:a,onClose:n(()=>e.closeDialog({key:o}),"onClose")},dialogComponentProps:js})}return n(s,"browse"),{show:t,browse:s}},"useAssetBrowserDialog"),Gc={class:"flex max-w-xs min-w-40 flex-col gap-2 p-3"},Hc={class:"text-sm font-inter"},jc={key:1,class:"text-xs"},qc={class:"flex max-w-xs min-w-40 flex-col gap-2 p-3"},Kc={class:"text-sm font-inter"},Qc={key:1,class:"text-xs"},qs="cursor-pointer transition-opacity hover:opacity-80",Yc=K({__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(f=>{t.value?.toggle(f)},"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),p=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}}),g=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(f,b)=>{const C=Ie("tooltip");return f.displayMode==="icon-only"?(d(),$("div",{key:0,class:Q(["relative inline-flex h-full shrink-0 items-center justify-center px-2",qs]),style:ye(a.value),onClick:s},[p.value?(d(),$("i",{key:0,class:Q(["shrink-0 text-base",p.value,u.value])},null,2)):f.badge.label?(d(),$("div",{key:1,class:Q(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},V(f.badge.label),3)):(d(),$("div",{key:2,class:Q(["size-2 shrink-0 rounded-full",g.value])},null,2)),O(m(et),{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",Gc,[f.badge.label?(d(),$("div",{key:0,class:Q(["w-fit rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},V(f.badge.label),3)):E("",!0),c("div",Hc,V(f.badge.text),1),f.badge.tooltip?(d(),$("div",jc,V(f.badge.tooltip),1)):E("",!0)])]),_:1},8,["pt"])],4)):f.displayMode==="compact"?(d(),$("div",{key:1,class:"relative inline-flex h-full",style:ye(a.value)},[c("div",{class:Q(["flex h-full shrink-0 items-center gap-2 whitespace-nowrap",[{"flex-row-reverse":f.reverseOrder},f.noPadding?"":"px-3",qs]]),onClick:s},[p.value?(d(),$("i",{key:0,class:Q(["shrink-0 text-base",p.value,u.value])},null,2)):E("",!0),f.badge.label?(d(),$("div",{key:1,class:Q(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},V(f.badge.label),3)):E("",!0)],2),O(m(et),{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",qc,[f.badge.label?(d(),$("div",{key:0,class:Q(["w-fit rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},V(f.badge.label),3)):E("",!0),c("div",Kc,V(f.badge.text),1),f.badge.tooltip?(d(),$("div",Qc,V(f.badge.tooltip),1)):E("",!0)])]),_:1},8,["pt"])],4)):de((d(),$("div",{key:2,class:Q(["flex h-full shrink-0 items-center gap-2 whitespace-nowrap",[{"flex-row-reverse":f.reverseOrder},f.noPadding?"":"px-3"]]),style:ye(a.value)},[p.value?(d(),$("i",{key:0,class:Q(["shrink-0 text-base",p.value,u.value])},null,2)):E("",!0),f.badge.label?(d(),$("div",{key:1,class:Q(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},V(f.badge.label),3)):E("",!0),c("div",{class:Q(["font-inter text-sm",r.value])},V(f.badge.text),3)],6)),[[C,f.badge.tooltip]])}}}),Jc=3e3,Xc=300*1e3,Zc=K({__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}=Kn(),r=vi(),u=L(!1),p=L(!1);let g=null;const v=L(!1),f=n(()=>{p.value=!0,u.value=!0;const h=Date.now(),w=n(async()=>{try{if(Date.now()-h>Xc){b();return}await a(),l.value&&(b(),r?.trackMonthlySubscriptionSucceeded(),t("subscribed"))}catch(k){console.error("[SubscribeButton] Error polling subscription status:",k)}},"poll");w(),g=window.setInterval(w,Jc)},"startPollingSubscriptionStatus"),b=n(()=>{g&&(clearInterval(g),g=null),p.value=!1,u.value=!1},"stopPolling");se([v,l],([h,w])=>{});const C=n(async()=>{u.value=!0;try{await s(),f()}catch(h){console.error("[SubscribeButton] Error initiating subscription:",h),u.value=!1}},"handleSubscribe");return rt(()=>{b(),v.value=!1}),(h,w)=>(d(),R(J,{size:h.size,loading:u.value,disabled:p.value,variant:"primary",style:ye(h.variant==="gradient"?{background:"var(--color-subscription-button-gradient)",color:"var(--color-white)"}:void 0),class:Q(m(ne)("font-bold",h.fluid&&"w-full")),onClick:C},{default:A(()=>[$e(V(h.label||h.$t("subscription.required.subscribe")),1)]),_:1},8,["size","loading","disabled","style","class"]))}}),Ks="subscription-required",ed=n(()=>{const e=yt(),o=ut();function t(){o.closeDialog({key:Ks})}n(t,"hide");function s(){e.showLayoutDialog({key:Ks,component:va(()=>Fn(()=>import("./SubscriptionRequiredDialogContent-BMLw-0ti.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"),td=K({__name:"GlobalToast",setup(e){const o=Wt(),t=Mt(),s=ie();se(()=>t.messagesToAdd,i=>{i.length!==0&&(i.forEach(r=>{o.add(r)}),t.messagesToAdd=[])},{deep:!0}),se(()=>t.messagesToRemove,i=>{i.length!==0&&(i.forEach(r=>{o.remove(r)}),t.messagesToRemove=[])},{deep:!0}),se(()=>t.removeAllRequested,i=>{i&&(o.removeAllGroups(),t.removeAllRequested=!1)});function 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"),()=>Fe(l),{immediate:!0}),se(()=>s.get("Comfy.Sidebar.Location"),()=>Fe(l),{immediate:!0}),(i,r)=>(d(),R(m(Pa)))}});let gn,cl;(function(){const e=globalThis;typeof e.requestIdleCallback!="function"||typeof e.cancelIdleCallback!="function"?gn=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"):gn=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"),cl=n((o,t)=>gn(globalThis,o,t),"runWhenGlobalIdle")})();const od={class:"fixed z-9999 flex flex-row no-drag top-0 right-0"},nd=K({__name:"MenuHamburger",setup(e){const o=it(),t=ie(),s=n(()=>{o.focusMode=!1},"exitFocusMode");return Ce(()=>{t.get("Comfy.UseNewMenu")==="Disabled"&&(o.focusMode?Y.ui.menuContainer.style.display="none":Y.ui.menuContainer.style.display="block")}),(l,a)=>{const i=Ie("tooltip");return de((d(),$("div",od,[de((d(),R(J,{variant:"muted-textonly",size:"lg","aria-label":l.$t("menu.showMenu"),"aria-live":"assertive",onClick:s,onContextmenu:m(hi)},{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)),[[Xe,m(o).focusMode]])}}}),sd=K({__name:"UnloadWindowConfirmDialog",setup(e){const o=ie(),t=We(),s=n(l=>{if(o.get("Comfy.Window.UnloadConfirmation")&&t.modifiedWorkflows.length>0)return l.preventDefault(),!0},"handleBeforeUnload");return ze(()=>{window.addEventListener("beforeunload",s)}),rt(()=>{window.removeEventListener("beforeunload",s)}),(l,a)=>(d(),$("div"))}}),ad={class:"w-full h-full absolute top-0 left-0 z-999 pointer-events-none flex flex-col"},ld={class:"side-toolbar-container"},id=K({__name:"LiteGraphCanvasSplitterOverlay",setup(e){const o=it(),t=ie(),s=lo(),l=Ho(),{t:a}=fe(),i=y(()=>t.get("Comfy.Sidebar.Location")),r=y(()=>t.get("Comfy.Sidebar.UnifiedWidth")),{focusMode:u}=qe(o),{activeSidebarTabId:p,activeSidebarTab:g}=qe(l),{bottomPanelVisible:v}=qe(io()),{isOpen:f}=qe(s),b=y(()=>g.value!==null),C=y(()=>r.value?"unified-sidebar":p.value??"default-sidebar");function h({originalEvent:x}){x.preventDefault()}n(h,"onResizestart");const w=y(()=>`main-splitter${f.value?"-with-right-panel":""}-${i.value}`),k=y(()=>{if(i.value==="left")return{display:b.value?"flex":"none"}}),I=y(()=>{if(i.value==="right")return{display:b.value?"flex":"none"}});return(x,_)=>(d(),$("div",ad,[he(x.$slots,"workflow-tabs",{},void 0,!0),c("div",{class:Q(["pointer-events-none flex flex-1 overflow-hidden",{"flex-row":i.value==="left","flex-row-reverse":i.value==="right"}])},[c("div",ld,[he(x.$slots,"side-toolbar",{},void 0,!0)]),(d(),R(m($n),{key:w.value,class:"bg-transparent pointer-events-none border-none flex-1 overflow-hidden","state-key":C.value,"state-storage":"local",onResizestart:h},{default:A(()=>[!m(u)&&(i.value==="left"||m(f))?(d(),R(m($t),{key:0,class:Q(i.value==="left"?m(ne)("side-bar-panel bg-comfy-menu-bg pointer-events-auto",b.value&&"min-w-78"):"bg-comfy-menu-bg pointer-events-auto"),"min-size":i.value==="left"?10:15,size:20,style:ye(k.value),role:i.value==="left"?"complementary":void 0,"aria-label":i.value==="left"?m(a)("sideToolbar.sidebar"):void 0},{default:A(()=>[i.value==="left"&&b.value?he(x.$slots,"side-bar-panel",{key:0},void 0,!0):i.value==="right"?he(x.$slots,"right-side-panel",{key:1},void 0,!0):E("",!0)]),_:3},8,["class","min-size","style","role","aria-label"])):E("",!0),O(m($t),{size:80,class:"flex flex-col"},{default:A(()=>[he(x.$slots,"topmenu",{sidebarPanelVisible:b.value},void 0,!0),O(m($n),{class:"bg-transparent pointer-events-none border-none splitter-overlay-bottom mr-1 mb-1 ml-1 flex-1",layout:"vertical","pt:gutter":m(ne)("rounded-tl-lg rounded-tr-lg ",!(m(v)&&!m(u))&&"hidden"),"state-key":"bottom-panel-splitter","state-storage":"local",onResizestart:h},{default:A(()=>[O(m($t),{class:"graph-canvas-panel relative"},{default:A(()=>[he(x.$slots,"graph-canvas-panel",{},void 0,!0)]),_:3}),de(O(m($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(x.$slots,"bottom-panel",{},void 0,!0)]),_:3},512),[[Xe,m(v)&&!m(u)]])]),_:3},8,["pt:gutter"])]),_:3}),!m(u)&&(i.value==="right"||m(f))?(d(),R(m($t),{key:1,class:Q(i.value==="right"?m(ne)("side-bar-panel bg-comfy-menu-bg pointer-events-auto",b.value&&"min-w-78"):"bg-comfy-menu-bg pointer-events-auto"),"min-size":i.value==="right"?10:15,size:20,style:ye(I.value),role:i.value==="right"?"complementary":void 0,"aria-label":i.value==="right"?m(a)("sideToolbar.sidebar"):void 0},{default:A(()=>[i.value==="left"?he(x.$slots,"right-side-panel",{key:0},void 0,!0):i.value==="right"&&b.value?he(x.$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)]))}}),rd=Le(id,[["__scopeId","data-v-78b7f6de"]]),ot=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"),ud=va(()=>Fn(()=>import("./ComfyQueueButton-D0Y-jFOd.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)),cd={class:"flex h-full items-center"},dd=K({__name:"ComfyActionbar",setup(e){const o=ie(),t=_e(),{t:s}=fe(),{isIdle:l}=qe(ct()),a=y(()=>o.get("Comfy.UseNewMenu")),i=y(()=>a.value!=="Disabled"),r=document.querySelector(".workflow-tabs-container"),u=L(null),p=L(null),g=xs("Comfy.MenuPosition.Docked",!0),v=xs("Comfy.MenuPosition.Floating",{x:0,y:0}),{x:f,y:b,style:C,isDragging:h}=Dl(u,{initialValue:{x:0,y:0},handle:p,containerElement:document.body,onMove:n(W=>{const H=r?.getBoundingClientRect().bottom??40;W.y<H&&(W.y=H)},"onMove")});Xt([f,b],([W,H])=>{v.value={x:W,y:H}},{debounce:300});const w=n(()=>{if(u.value){const W=window.innerWidth,H=window.innerHeight,U=u.value.offsetWidth,z=u.value.offsetHeight;if(U===0||z===0)return;if(v.value.x!==0||v.value.y!==0){f.value=Qt(v.value.x,0,W-U),b.value=Qt(v.value.y,0,H-z),x();return}f.value===0&&b.value===0&&(f.value=Qt((W-U)/2,0,W-U),b.value=Qt(H-z-10,0,H-z),x())}},"setInitialPosition");async function k(){await Fe(),w()}n(k,"comfyRunButtonResolved"),se(i,async W=>{W&&await Fe(w)}),Oe(p,"mousedown",()=>{});const I=L({x:f.value,y:b.value,windowWidth:window.innerWidth,windowHeight:window.innerHeight}),x=n(()=>{I.value={x:f.value,y:b.value,windowWidth:window.innerWidth,windowHeight:window.innerHeight}},"captureLastDragState");se(h,W=>{W||x()},{immediate:!0}),Oe(window,"resize",n(()=>{if(u.value){const W=window.innerWidth,H=window.innerHeight,U=u.value.offsetWidth,z=u.value.offsetHeight,F=I.value.x,G=I.value.windowWidth-(I.value.x+U),q=I.value.y,Z=I.value.windowHeight-(I.value.y+z),X=[{edge:"left",distance:F},{edge:"right",distance:G},{edge:"top",distance:q},{edge:"bottom",distance:Z}].reduce((Ne,Ue)=>Ue.distance<Ne.distance?Ue:Ne),ue=I.value.y/I.value.windowHeight,le=I.value.x/I.value.windowWidth;X.edge==="left"?(f.value=X.distance,b.value=ue*H):X.edge==="right"?(f.value=W-U-X.distance,b.value=ue*H):X.edge==="top"?(f.value=le*W,b.value=X.distance):(f.value=le*W,b.value=H-z-X.distance),f.value=Qt(f.value,0,W-U),b.value=Qt(b.value,0,H-z)}},"adjustMenuPosition"));const S=L(!1),T=n(()=>{h.value&&(S.value=!0)},"onMouseEnterDropZone"),N=n(()=>{h.value&&(S.value=!1)},"onMouseLeaveDropZone");se(h,W=>{W?g.value&&(g.value=!1):(S.value&&(g.value=!0),S.value=!1)});const M=y(()=>ot(s("menu.interrupt"))),D=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",h.value&&"select-none pointer-events-none",g.value?"p-0 static border-none bg-transparent":"fixed shadow-interface"));return(W,H)=>{const U=Ie("tooltip");return d(),$("div",cd,[m(h)&&!m(g)?(d(),$("div",{key:0,class:Q(B.value),onMouseenter:T,onMouseleave:N},V(m(s)("actionbar.dockToTop")),35)):E("",!0),O(m(Un),{class:Q(["pointer-events-auto",j.value]),style:ye(m(C)),pt:{header:{class:"hidden"},content:{class:m(g)?"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:p,class:Q(m(ne)("drag-handle cursor-grab w-3 h-max",m(h)&&"cursor-grabbing"))},null,2),(d(),R(Al,{onResolve:k},{default:A(()=>[O(m(ud))]),_:1})),de((d(),R(J,{variant:"destructive",size:"icon",disabled:m(l),"aria-label":m(s)("menu.interrupt"),onClick:D},{default:A(()=>H[0]||(H[0]=[c("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["disabled","aria-label"])),[[U,M.value,void 0,{bottom:!0}]])],512)]),_:1},8,["style","class","pt"])])}}}),pd=n((e,o)=>{const t=e?.type;return t?!o[t]:!1},"isNodeMissingDefinition"),fd=n((e,o)=>{if(!e)return[];const t=m(o);return yi(e,s=>pd(s,t))},"collectMissingNodes"),md=n((e,o)=>fd(e,o).length>0,"graphHasMissingNodes"),gd={key:0,class:"icon-[lucide--triangle-alert] text-warning-background"},vd={class:"p-breadcrumb-item-label px-2"},hd={key:2,class:"pi pi-angle-down text-[10px]"},yd=K({__name:"SubgraphBreadcrumbItem",props:{item:{},isActive:{type:Boolean,default:!1}},setup(e){const o=e,t=St(),s=y(()=>md(Y.rootGraph,t.nodeDefsByName)),{t:l}=fe(),a=L(),i=yt(),r=We(),u=nt(),p=L(!1),g=L(),v=L(),f=L(),b=n(async(_,S)=>{if(_&&_!==S){if(o.item.updateTitle?.(_),r.activeSubgraph)r.activeSubgraph.name=_;else if(r.activeWorkflow)try{await u.renameWorkflow(r.activeWorkflow,Ra.basePath+bi(_))}catch(N){console.error(N),i.showErrorDialog(N);return}const T=Qn();T.restoreState(T.exportState())}},"rename"),C=o.item.key==="root",h=y(()=>s.value&&C?l("breadcrumbsMenu.missingNodesWarning"):o.item.label),w=y(()=>[{label:l("g.rename"),icon:"pi pi-pencil",command:I},{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 _e().execute("Comfy.SaveWorkflow")},"command"),visible:C},{label:l("menuLabels.Save As"),icon:"pi pi-save",command:n(async()=>{await _e().execute("Comfy.SaveWorkflowAs")},"command"),visible:C},{separator:!0},{label:l("breadcrumbsMenu.clearWorkflow"),icon:"pi pi-trash",command:n(async()=>{await _e().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(_=>{p.value||(_.detail===1?o.isActive?a.value?.toggle(_):o.item.command?.({item:o.item,originalEvent:_}):o.isActive&&_.detail===2&&(a.value?.hide(),_.stopPropagation(),_.preventDefault(),I()))},"handleClick"),I=n(()=>{p.value=!0,g.value=o.item.label,Fe(()=>{v.value?.$el&&(v.value.$el.focus(),v.value.$el.select(),f.value&&(v.value.$el.style.width=`${Math.max(200,f.value.offsetWidth)}px`))})},"startRename"),x=n(async _=>{_&&await b(g.value,o.item.label),p.value=!1},"inputBlur");return(_,S)=>{const T=Ie("tooltip");return d(),$(oe,null,[de((d(),$("a",{ref_key:"wrapperRef",ref:f,draggable:"false",href:"#",class:Q(["p-breadcrumb-item-link h-12 cursor-pointer px-2",{"flex items-center gap-1":_.isActive,"p-breadcrumb-item-link-menu-visible":a.value?.overlayVisible,"p-breadcrumb-item-link-icon-visible":_.isActive,"active-breadcrumb-item":_.isActive}]),onClick:k},[s.value&&C?(d(),$("i",gd)):E("",!0),c("span",vd,V(_.item.label),1),_.item.isBlueprint?(d(),R(m(Zt),{key:1,value:"Blueprint",severity:"primary"})):E("",!0),_.isActive?(d(),$("i",hd)):E("",!0)],2)),[[T,{value:h.value,showDelay:512},void 0,{bottom:!0}]]),_.isActive?(d(),R(m(Da),{key:0,ref_key:"menu",ref:a,model:w.value,popup:!0,pt:{root:{style:"background-color: var(--comfy-menu-bg)"},itemLink:{class:"py-2"}}},null,8,["model"])):E("",!0),p.value?(d(),R(m(ei),{key:1,ref_key:"itemInputRef",ref:v,modelValue:g.value,"onUpdate:modelValue":S[0]||(S[0]=N=>g.value=N),class:"fixed z-10000 px-2 py-2 text-[.8rem]",onBlur:S[1]||(S[1]=N=>x(!1)),onClick:S[2]||(S[2]=ke(()=>{},["stop"])),onKeydown:[S[3]||(S[3]=to(N=>x(!0),["enter"])),S[4]||(S[4]=to(N=>x(!1),["esc"]))]},null,8,["modelValue"])):E("",!0)],64)}}}),bd=Le(yd,[["__scopeId","data-v-09d35179"]]),dl=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?tn(a,o.debounceTime):a;return o.useMutationObserver&&s.push(Ll(e,i,{subtree:!0,childList:!0}).stop),o.useResizeObserver&&s.push(ha(e,i).stop),{isOverflowing:Tn(t),disposed:Tn(l),checkOverflow:i,dispose:n(()=>{l.value=!0,s.forEach(r=>r())},"dispose")}},"useOverflowObserver"),Qs=28,Ys=8,vn=8,Js=20,wd=K({__name:"SubgraphBreadcrumb",setup(e){const o=We(),t=Qn(),s=L(),l=y(()=>o.activeWorkflow?.filename),a=y(()=>Wa().isSubgraphBlueprint(o.activeWorkflow)),i=L(!1),r=L(!1),u=y(()=>s.value?s.value.$el?.querySelector(".p-breadcrumb-list"):null),p=y(()=>{const f=t.navigationStack.map(b=>({label:b.name,command:n(()=>{const C=ve().getCanvas();if(!C.graph)throw new TypeError("Canvas has no graph");C.setGraph(b)},"command"),updateTitle:n(C=>{const h=ve().getCanvas().graph?.rootGraph;h&&wi(h,b.id,w=>{w.title=C})},"updateTitle")}));return[g.value,...f]}),g=y(()=>({label:l.value,icon:"pi pi-home",key:"root",isBlueprint:a.value,command:n(()=>{const f=ve().getCanvas();if(!f.graph)throw new TypeError("Canvas has no graph");f.setGraph(f.graph.rootGraph)},"command")}));let v;return se(u,f=>{v?.dispose(),v=void 0,f&&(v=dl(f,{onCheck:n(b=>{if(r.value=b,i.value){if(!b){const C=[...f.querySelectorAll(".p-breadcrumb-item")];if(C.length<3)return;const h=C.filter(M=>M.querySelector(".p-breadcrumb-item-link-icon-visible")).length,w=f.querySelectorAll(".p-breadcrumb-separator"),I=w[w.length-1].offsetWidth,x=(Qs+vn+vn)*C.length+h*Js,_=(C.length-1)*I,S=(C.length-1)*(Ys*2),T=x+_+S,N=f.clientWidth;T<=N&&(i.value=!1)}}else b&&(i.value=!0)},"onCheck")}))}),ya(()=>{v?.disposed.value||v?.checkOverflow()}),(f,b)=>(d(),$("div",{class:Q(["subgraph-breadcrumb w-auto drop-shadow-[var(--interface-panel-drop-shadow)]",{"subgraph-breadcrumb-collapse":i.value,"subgraph-breadcrumb-overflow":r.value}]),style:ye({"--p-breadcrumb-gap":"0px","--p-breadcrumb-item-margin":`${Ys/2}px`,"--p-breadcrumb-item-min-width":`${Qs}px`,"--p-breadcrumb-item-padding":`${vn}px`,"--p-breadcrumb-icon-width":`${Js}px`})},[O(m(ti),{ref_key:"breadcrumbRef",ref:s,class:"w-fit rounded-lg p-0",model:p.value,pt:{item:{class:"pointer-events-auto"}},"aria-label":f.$t("g.graphNavigation")},{item:A(({item:C})=>[O(bd,{item:C,"is-active":C===p.value.at(-1)},null,8,["item","is-active"])]),separator:A(()=>b[0]||(b[0]=[c("span",{style:{transform:"scale(1.5)"}}," / ",-1)])),_:1},8,["model","aria-label"])],6))}}),Cd=Le(wd,[["__scopeId","data-v-0e6867de"]]),kd={class:"flex flex-col gap-3 p-2"},xd={class:"flex flex-col gap-1"},Sd={class:"relative h-2 w-full overflow-hidden rounded-full border border-interface-stroke bg-interface-panel-surface"},_d={class:"flex items-start justify-end gap-4 text-[12px] leading-none"},Td={class:"flex items-center gap-1 text-text-primary opacity-90"},$d={class:"font-bold"},Nd={class:"flex items-center gap-1 text-text-secondary"},Id={class:"inline-block max-w-[10rem] truncate"},Md={class:"flex items-center gap-1"},Pd={class:"flex items-center gap-4 text-[12px] text-text-primary"},Dd={class:"flex items-center gap-2"},Ad={class:"opacity-90"},Ld={class:"font-bold"},Ed={class:"ml-1"},Vd={class:"flex items-center gap-2"},Od={class:"opacity-90"},Rd={class:"font-bold"},Wd={class:"ml-1"},zd=K({__name:"QueueOverlayActive",props:{totalProgressStyle:{},currentNodeProgressStyle:{},totalPercentFormatted:{},currentNodePercentFormatted:{},currentNodeName:{},runningCount:{},queuedCount:{},bottomRowClass:{}},emits:["interruptAll","clearQueued","viewAllJobs"],setup(e){const{t:o}=fe(),t=y(()=>ot(o("sideToolbar.queueProgressOverlay.cancelJobTooltip"))),s=y(()=>ot(o("sideToolbar.queueProgressOverlay.clearQueueTooltip")));return(l,a)=>{const i=ba("i18n-t"),r=Ie("tooltip");return d(),$("div",kd,[c("div",xd,[c("div",Sd,[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",_d,[c("div",Td,[O(i,{keypath:"sideToolbar.queueProgressOverlay.total"},{percent:A(()=>[c("span",$d,V(l.totalPercentFormatted),1)]),_:1})]),c("div",Nd,[c("span",null,V(m(o)("sideToolbar.queueProgressOverlay.currentNode")),1),c("span",Id,V(l.currentNodeName),1),c("span",Md,[c("span",null,V(l.currentNodePercentFormatted),1)])])])]),c("div",{class:Q(l.bottomRowClass)},[c("div",Pd,[c("div",Dd,[c("span",Ad,[c("span",Ld,V(l.runningCount),1),c("span",Ed,V(m(o)("sideToolbar.queueProgressOverlay.running")),1)]),l.runningCount>0?de((d(),R(J,{key:0,variant:"destructive",size:"icon","aria-label":m(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",Vd,[c("span",Od,[c("span",Rd,V(l.queuedCount),1),c("span",Wd,V(m(o)("sideToolbar.queueProgressOverlay.queuedSuffix")),1)]),l.queuedCount>0?de((d(),R(J,{key:0,variant:"destructive",size:"icon","aria-label":m(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(m(o)("sideToolbar.queueProgressOverlay.viewAllJobs")),1)]),_:1})],2)])}}}),Bd={class:"inline-flex items-center gap-2"},Fd={key:0,class:"inline-flex items-center"},Ud={class:"inline-flex items-center gap-2"},Gd={key:0,class:"relative inline-flex h-6 items-center"},Hd=["src","alt"],jd={class:"text-[14px] font-normal text-text-primary"},qd={class:"font-bold"},Kd={class:"font-bold"},Qd={class:"font-bold"},Yd={class:"font-bold"},Jd=K({__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=ba("i18n-t");return d(),R(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",Bd,[t.mode==="allFailed"?(d(),$("span",Fd,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",Ud,[t.mode!=="allFailed"?(d(),$("span",Gd,[(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,Hd)],4))),128))])):E("",!0),c("span",jd,[t.mode==="allSuccess"?(d(),R(i,{key:0,keypath:"sideToolbar.queueProgressOverlay.jobsCompleted",plural:t.completedCount},{count:A(()=>[c("span",qd,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",Kd,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",Qd,V(t.failedCount),1)]),_:1},8,["plural"])],64)):(d(),R(i,{key:2,keypath:"sideToolbar.queueProgressOverlay.jobsFailed",plural:t.failedCount},{count:A(()=>[c("span",Yd,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"])}}}),Xd={class:"pointer-events-auto"},Zd=K({__name:"QueueOverlayEmpty",props:{summary:{}},emits:["summaryClick"],setup(e){const{t:o}=fe();return(t,s)=>(d(),$("div",Xd,[O(Jd,{mode:t.summary.mode,"completed-count":t.summary.completedCount,"failed-count":t.summary.failedCount,"thumbnail-urls":t.summary.thumbnailUrls,"aria-label":m(o)("sideToolbar.queueProgressOverlay.expandCollapsedQueue"),onClick:s[0]||(s[0]=l=>t.$emit("summaryClick"))},null,8,["mode","completed-count","failed-count","thumbnail-urls","aria-label"])]))}}),ep={class:"flex h-12 items-center justify-between gap-2 border-b border-interface-stroke px-2"},tp={class:"px-2 text-[14px] font-normal text-text-primary"},op={key:0,class:"ml-4 inline-flex items-center gap-1 text-blue-100"},np={class:"font-bold"},sp={class:"ml-1"},ap={key:0,class:"flex items-center gap-1"},lp={class:"flex flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3 font-inter"},ip=K({__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(()=>ot(s("g.more"))),i=n(u=>{l.value?.toggle(u)},"onMoreClick"),r=n(()=>{l.value?.hide(),t("clearHistory")},"onClearHistoryFromMenu");return(u,p)=>{const g=Ie("tooltip");return d(),$("div",ep,[c("div",tp,[c("span",null,V(u.headerTitle),1),u.showConcurrentIndicator?(d(),$("span",op,[p[0]||(p[0]=c("span",{class:"inline-block size-2 rounded-full bg-blue-100"},null,-1)),c("span",null,[c("span",np,V(u.concurrentWorkflowCount),1),c("span",sp,V(m(s)("sideToolbar.queueProgressOverlay.running")),1)])])):E("",!0)]),m(kt)?E("",!0):(d(),$("div",ap,[de((d(),R(J,{variant:"textonly",size:"icon","aria-label":m(s)("sideToolbar.queueProgressOverlay.moreOptions"),onClick:i},{default:A(()=>p[1]||(p[1]=[c("i",{class:"icon-[lucide--more-horizontal] block size-4 leading-none text-text-secondary"},null,-1)])),_:1},8,["aria-label"])),[[g,a.value,void 0,{top:!0}]]),O(m(et),{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",lp,[O(J,{class:"w-full justify-start",variant:"textonly",size:"sm","aria-label":m(s)("sideToolbar.queueProgressOverlay.clearHistory"),onClick:r},{default:A(()=>[p[2]||(p[2]=c("i",{class:"icon-[lucide--file-x-2] size-4 text-muted"},null,-1)),c("span",null,V(m(s)("sideToolbar.queueProgressOverlay.clearHistory")),1)]),_:1},8,["aria-label"])])]),_:1},512)]))])}}}),rp={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"},up={key:0,class:"px-2 py-1"},cp=K({__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,p)=>(d(),R(m(et),{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",rp,[(d(!0),$(oe,null,be(u.entries,g=>(d(),$(oe,{key:g.key},[g.kind==="divider"?(d(),$("div",up,p[0]||(p[0]=[c("div",{class:"h-px bg-interface-stroke"},null,-1)]))):(d(),R(J,{key:1,class:"w-full justify-start bg-transparent",variant:"textonly",size:"sm","aria-label":g.label,onClick:n(v=>r(g),"onClick")},{default:A(()=>[g.icon?(d(),$("i",{key:0,class:Q([g.icon,"block size-4 shrink-0 leading-none text-text-secondary"])},null,2)):E("",!0),c("span",null,V(g.label),1)]),_:2},1032,["aria-label","onClick"]))],64))),128))])]),_:1},512))}}),dp={class:"flex items-center justify-between gap-2 px-3"},pp={class:"min-w-0 flex-1 overflow-x-auto"},fp={class:"inline-flex items-center gap-1 whitespace-nowrap"},mp={class:"ml-2 flex shrink-0 items-center gap-2"},gp={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"},hp={key:0,class:"icon-[lucide--check] size-4"},yp={key:0,class:"icon-[lucide--check] block size-4 leading-none text-text-secondary"},bp={key:0,class:"pointer-events-none absolute -top-1 -right-1 inline-block size-2 rounded-full bg-base-foreground"},wp={class:"flex min-w-[12rem] flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},Cp={key:0,class:"icon-[lucide--check] size-4 text-text-secondary"},kp={key:0,class:"mx-2 mt-1 h-px"},xp=K({__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(()=>ot(l("sideToolbar.queueProgressOverlay.filterBy"))),u=y(()=>ot(l("sideToolbar.queueProgressOverlay.sortBy"))),p=y(()=>t.hasFailedJobs?Is:Is.filter(w=>w!=="Failed")),g=n(w=>{a.value&&a.value.toggle(w)},"onFilterClick"),v=n(w=>{a.value?.hide?.(),s("update:selectedWorkflowFilter",w)},"selectWorkflowFilter"),f=n(w=>{i.value&&i.value.toggle(w)},"onSortClick"),b=n(w=>{i.value?.hide?.(),s("update:selectedSortMode",w)},"selectSortMode"),C=n(w=>l(w==="All"?"g.all":w==="Completed"?"g.completed":"g.failed"),"tabLabel"),h=n(w=>w==="mostRecent"?l("queue.jobList.sortMostRecent"):w==="totalGenerationTime"?l("queue.jobList.sortTotalGenerationTime"):"","sortLabel");return(w,k)=>{const I=Ie("tooltip");return d(),$("div",dp,[c("div",pp,[c("div",fp,[(d(!0),$(oe,null,be(p.value,x=>(d(),R(J,{key:x,variant:w.selectedJobTab===x?"secondary":"muted-textonly",size:"sm",class:"px-3",onClick:n(_=>w.$emit("update:selectedJobTab",x),"onClick")},{default:A(()=>[$e(V(C(x)),1)]),_:2},1032,["variant","onClick"]))),128))])]),c("div",mp,[de((d(),R(J,{key:0,variant:"secondary",size:"icon","aria-label":m(l)("sideToolbar.queueProgressOverlay.filterJobs"),onClick:g},{default:A(()=>[k[2]||(k[2]=c("i",{class:"icon-[lucide--list-filter] size-4"},null,-1)),w.selectedWorkflowFilter!=="all"?(d(),$("span",gp)):E("",!0)]),_:1},8,["aria-label"])),[[I,r.value,void 0,{top:!0}]]),(d(),R(m(et),{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]=x=>v("all"))},{default:A(()=>[c("span",null,V(m(l)("sideToolbar.queueProgressOverlay.filterAllWorkflows")),1),w.selectedWorkflowFilter==="all"?(d(),$("i",hp)):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]=x=>v("current"))},{default:A(()=>[c("span",null,V(m(l)("sideToolbar.queueProgressOverlay.filterCurrentWorkflow")),1),w.selectedWorkflowFilter==="current"?(d(),$("i",yp)):E("",!0)]),_:1})])]),_:1},512)),de((d(),R(J,{variant:"secondary",size:"icon","aria-label":m(l)("sideToolbar.queueProgressOverlay.sortJobs"),onClick:f},{default:A(()=>[k[4]||(k[4]=c("i",{class:"icon-[lucide--arrow-up-down] size-4"},null,-1)),w.selectedSortMode!=="mostRecent"?(d(),$("span",bp)):E("",!0)]),_:1},8,["aria-label"])),[[I,u.value,void 0,{top:!0}]]),O(m(et),{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",wp,[(d(!0),$(oe,null,be(m(Ms),(x,_)=>(d(),$(oe,{key:x},[O(J,{class:"w-full justify-between",variant:"textonly",size:"sm",onClick:n(S=>b(x),"onClick")},{default:A(()=>[c("span",null,V(h(x)),1),w.selectedSortMode===x?(d(),$("i",Cp)):E("",!0)]),_:2},1032,["onClick"]),_<m(Ms).length-1?(d(),$("div",kp)):E("",!0)],64))),128))])]),_:1},512)])])}}}),Xs=n(e=>{const t=e?.status?.messages;if(!Array.isArray(t)||!t.length)return null;const s=t.find(i=>Array.isArray(i)&&i[0]==="execution_error");if(!s)return null;const l=s[1],a=String(l?.exception_message??"");return{detail:l,message:a}},"extractExecutionError"),Sp=n(({taskForJob:e,copyToClipboard:o,dialog:t})=>{const s=y(()=>Xs(e.value)?.message??"");return{errorMessageValue:s,copyErrorMessage:n(()=>{s.value&&o(s.value)},"copyErrorMessage"),reportJobError:n(()=>{const i=Xs(e.value);if(i?.detail){t.showExecutionErrorDialog(i.detail);return}s.value&&t.showErrorDialog(new Error(s.value),{reportType:"queueJobError"})},"reportJobError")}},"useJobErrorReporting"),In=n(e=>{const o=Math.max(0,Math.floor(e/1e3)),t=Math.floor(o/60),s=o%60;return`${t}m ${s}s`},"formatElapsedTime"),_p=n(e=>e.historyTasks.map(o=>Number(o.executionTimeInSeconds)).filter(o=>typeof o=="number"&&!Number.isNaN(o)),"pickRecentDurations"),Tp=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),p=y(()=>_p(e).slice(-20)),g=y(()=>{const C=p.value;if(!C.length)return null;const h=C.slice().sort((N,M)=>N-M),w=h.reduce((N,M)=>N+M,0)/h.length,k=h[Math.min(h.length-1,Math.floor(h.length*.75))],I=e.runningTasks,x=i.value,_=I.map(N=>N.executionStartTimestamp).filter(N=>typeof N=="number").map(N=>{const M=Math.max(0,Math.floor((x-N)/1e3));return{lo:Math.max(0,Math.round(w-M)),hi:Math.max(0,Math.round(k-M))}});if(!_.length)return null;const S=_.reduce((N,M)=>Math.min(N,M.lo),1/0),T=_.reduce((N,M)=>Math.min(N,M.hi),1/0);return[S,T]}),v=y(()=>{const C=p.value;if(!C.length)return null;const h=a.value;if(h==null)return null;const w=C.slice().sort((S,T)=>S-T),k=w.reduce((S,T)=>S+T,0)/w.length,I=w[Math.min(w.length-1,Math.floor(w.length*.75))];if(h<=0)return g.value??[0,0];const x=Math.max(1,r.value||1),_=Math.ceil(h/x);return[Math.round(k*_),Math.round(I*_)]}),f=y(()=>{const C=p.value;if(!C.length)return null;const h=C.slice().sort((M,D)=>M-D),w=h.reduce((M,D)=>M+D,0)/h.length,k=h[Math.min(h.length-1,Math.floor(h.length*.75))],I=t.value,_=(s.value==="running"?I?.executionStartTimestamp:void 0)??l.value,S=_?Math.max(0,Math.floor((i.value-_)/1e3)):0,T=Math.max(0,Math.round(w-S)),N=Math.max(0,Math.round(k-S));return[T,N]}),b=y(()=>{const C=t.value,w=(s.value==="running"?C?.executionStartTimestamp:void 0)??l.value;return w?In(i.value-w):""});return{runningWorkflowCount:r,showParallelQueuedStats:u,estimateRangeSeconds:v,estimateRemainingRangeSeconds:f,timeElapsedValue:b}},"useQueueEstimates"),$p={class:"w-[300px] min-w-[260px] rounded-lg border border-interface-stroke bg-interface-panel-surface shadow-md"},Np={class:"flex items-center border-b border-interface-stroke p-4"},Ip={class:"text-[0.875rem] leading-normal font-normal text-text-primary"},Mp={class:"flex flex-col gap-6 px-4 pt-4 pb-4"},Pp={class:"grid grid-cols-2 items-center gap-x-2 gap-y-2"},Dp={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Ap={class:"flex min-w-0 items-center text-[0.75rem] leading-normal font-normal text-text-secondary"},Lp={class:"block min-w-0 truncate"},Ep={key:0,class:"grid grid-cols-2 items-center gap-x-2 gap-y-2"},Vp={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Op={class:"flex min-w-0 items-center text-[0.75rem] leading-normal font-normal text-text-secondary"},Rp={class:"block min-w-0 truncate"},Wp={key:1,class:"grid grid-cols-2 gap-x-2"},zp={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Bp={class:"flex items-center justify-between gap-4"},Fp={class:"col-span-2 mt-2 rounded bg-interface-panel-hover-surface px-4 py-2 text-[0.75rem] leading-normal text-text-secondary"},Up=K({__name:"JobDetailsPopover",props:{jobId:{},workflowId:{}},setup(e){const o=e,t=y(()=>u("g.copy")),s=We(),l=zt(),a=ct(),i=yt(),{locale:r,t:u}=fe(),p=y(()=>{const q=o.workflowId;if(!q)return"";const Z=s.activeWorkflow?.activeState?.id;return Z&&Z===q?s.activeWorkflow?.filename??q:q}),g=y(()=>o.jobId),{copyToClipboard:v}=Ci(),f=n(()=>{v(g.value)},"copyJobId"),b=y(()=>{const q=o.jobId,Z=n(te=>te.find(X=>String(X.promptId??"")===String(q)),"findIn");return Z(l.pendingTasks)||Z(l.runningTasks)||Z(l.historyTasks)||null}),C=y(()=>{const q=b.value;if(!q)return null;const Z=a.isPromptInitializing(String(q?.promptId));return za(q,Z)}),h=y(()=>b.value?.createTime),w=y(()=>h.value!==void 0?Ps(h.value,r.value):""),k=y(()=>{const q=b.value;return q?Number(q.queueIndex):null}),I=y(()=>{const q=k.value;return q==null?null:l.pendingTasks.filter(te=>Number(te.queueIndex)<q).length}),x=y(()=>{if(I.value==null)return"";const q=I.value;return u("queue.jobDetails.queuePositionValue",{count:q},q)}),_=L(Date.now());let S=null;ze(()=>{S=window.setInterval(()=>{_.value=Date.now()},1e3)}),ht(()=>{S!=null&&(clearInterval(S),S=null)});const{showParallelQueuedStats:T,estimateRangeSeconds:N,estimateRemainingRangeSeconds:M,timeElapsedValue:D}=Tp({queueStore:l,executionStore:a,taskForJob:b,jobState:C,firstSeenTs:h,jobsAhead:I,nowTs:_}),B=n((q,Z)=>{if(Z<=60){const ue=Math.max(1,Math.round(Z)),le=Math.max(1,Math.min(ue,Math.round(q)));return le===ue?u("queue.jobDetails.eta.seconds",{count:ue},ue):u("queue.jobDetails.eta.secondsRange",{lo:le,hi:ue})}if(q>=60&&Z<90)return u("queue.jobDetails.eta.minutes",{count:1},1);const te=Math.max(1,Math.floor(q/60)),X=Math.max(te,Math.ceil(Z/60));return te===X?u("queue.jobDetails.eta.minutes",{count:te},te):u("queue.jobDetails.eta.minutesRange",{lo:te,hi:X})},"formatEta"),j=y(()=>{const q=N.value;if(!q)return"";const[Z,te]=q;return B(Z,te)}),W=y(()=>{const q=M.value;if(!q)return"";const[Z,te]=q;return B(Z,te)}),H=y(()=>[{label:u("queue.jobDetails.workflow"),value:p.value},{label:u("queue.jobDetails.jobId"),value:g.value,canCopy:!0}]),U=y(()=>{if(C.value==="pending"){if(!h.value)return[];const q=[{label:u("queue.jobDetails.queuedAt"),value:w.value}];return T.value&&q.push({label:u("queue.jobDetails.queuePosition"),value:x.value},{label:u("queue.jobDetails.timeElapsed"),value:D.value},{label:u("queue.jobDetails.estimatedStartIn"),value:j.value}),q}if(C.value==="running")return h.value?[{label:u("queue.jobDetails.queuedAt"),value:w.value},{label:u("queue.jobDetails.timeElapsed"),value:D.value},{label:u("queue.jobDetails.estimatedFinishIn"),value:W.value}]:[];if(C.value==="completed"){const q=b.value,Z=q?.executionEndTimestamp,te=q?.executionTime,X=Z?Ps(Z,r.value):"",ue=te!==void 0?In(te):"";return te!==void 0&&(te/36e5).toFixed(3)+"",[{label:u("queue.jobDetails.generatedOn"),value:X},{label:u("queue.jobDetails.totalGenerationTime"),value:ue}]}if(C.value==="failed"){const Z=b.value?.executionTime,te=Z!==void 0?In(Z):"";return Z!==void 0&&(Z/36e5).toFixed(3)+"",[{label:u("queue.jobDetails.queuedAt"),value:w.value},{label:u("queue.jobDetails.failedAfter"),value:te}]}return[]}),{errorMessageValue:z,copyErrorMessage:F,reportJobError:G}=Sp({taskForJob:b,copyToClipboard:v,dialog:i});return(q,Z)=>(d(),$("div",$p,[c("div",Np,[c("span",Ip,V(m(u)("queue.jobDetails.header")),1)]),c("div",Mp,[c("div",Pp,[(d(!0),$(oe,null,be(H.value,te=>(d(),$(oe,{key:te.label},[c("div",Dp,V(te.label),1),c("div",Ap,[c("span",Lp,V(te.value),1),te.canCopy?(d(),R(J,{key:0,size:"icon",variant:"muted-textonly","aria-label":t.value,onClick:ke(f,["stop"])},{default:A(()=>Z[0]||(Z[0]=[c("i",{class:"icon-[lucide--copy] size-4"},null,-1)])),_:1},8,["aria-label"])):E("",!0)])],64))),128))]),U.value.length?(d(),$("div",Ep,[(d(!0),$(oe,null,be(U.value,te=>(d(),$(oe,{key:te.label},[c("div",Vp,V(te.label),1),c("div",Op,[c("span",Rp,V(te.value),1)])],64))),128))])):E("",!0),C.value==="failed"?(d(),$("div",Wp,[c("div",zp,V(m(u)("queue.jobDetails.errorMessage")),1),c("div",Bp,[O(J,{class:"justify-start px-0",variant:"muted-textonly",size:"sm","icon-position":"right",onClick:ke(m(F),["stop"])},{default:A(()=>[c("span",null,V(t.value),1),Z[1]||(Z[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:ke(m(G),["stop"])},{default:A(()=>[c("span",null,V(m(u)("queue.jobDetails.report")),1),Z[2]||(Z[2]=c("i",{class:"icon-[lucide--message-circle-warning] block size-3.5 leading-none"},null,-1))]),_:1},8,["onClick"])]),c("div",Fp,V(m(z)),1)])):E("",!0)])]))}}),Gp={class:"w-[300px] min-w-[260px] rounded-lg shadow-md"},Hp={class:"p-3"},jp={class:"relative aspect-square w-full overflow-hidden rounded-lg"},qp=["src","alt"],Kp={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)"}},Qp={class:"mt-2 text-center"},Yp=["title"],Jp={key:0,class:"mt-1 text-[0.75rem] leading-normal text-text-secondary"},Xp=K({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",Gp,[c("div",Hp,[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,qp),a.timeLabel?(d(),$("div",Kp,V(a.timeLabel),1)):E("",!0)]),c("div",Qp,[c("div",{class:"truncate text-[0.875rem] leading-normal font-semibold text-text-primary",title:a.name},V(a.name),9,Yp),t.value&&s.value?(d(),$("div",Jp,V(t.value)+"x"+V(s.value),1)):E("",!0)])])]))}}),Zp={class:"relative z-1 flex items-center gap-1"},ef={class:"relative inline-flex items-center justify-center"},tf={class:"inline-flex h-6 w-6 items-center justify-center overflow-hidden rounded-[6px]"},of=["src"],nf={class:"relative z-1 min-w-0 flex-1"},sf=["title"],af={class:"relative z-1 flex items-center gap-2 text-text-secondary"},lf={key:"actions",class:"inline-flex items-center gap-2 pr-1"},rf={key:"secondary",class:"pr-2"},uf=K({__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:p,progressPercentStyle:g}=ki(),v=y(()=>ot(l("g.cancel"))),f=y(()=>ot(l("g.delete"))),b=y(()=>ot(l("g.more"))),C=L(null),h=y(()=>t.activeDetailsId===t.jobId),w=n(()=>{_.value||s("details-enter",t.jobId)},"onRowEnter"),k=n(()=>s("details-leave",t.jobId),"onRowLeave"),I=n(()=>s("details-enter",t.jobId),"onPopoverEnter"),x=n(()=>s("details-leave",t.jobId),"onPopoverLeave"),_=L(!1),S=L(null),T=L(null),N=n(()=>{S.value!==null&&(clearTimeout(S.value),S.value=null)},"clearPreviewHideTimer"),M=n(()=>{T.value!==null&&(clearTimeout(T.value),T.value=null)},"clearPreviewShowTimer"),D=y(()=>t.state==="completed"&&!!t.iconImageUrl),B=n(()=>{D.value&&(N(),M(),T.value=window.setTimeout(()=>{_.value=!0,T.value=null},200))},"scheduleShowPreview"),j=n(()=>{N(),M(),S.value=window.setTimeout(()=>{_.value=!1,S.value=null},150)},"scheduleHidePreview"),W=n(()=>B(),"onIconEnter"),H=n(()=>j(),"onIconLeave"),U=n(()=>B(),"onPreviewEnter"),z=n(()=>j(),"onPreviewLeave"),F=L(null),G=n(()=>{const Ve=C.value;if(!Ve)return;const Se=Ve.getBoundingClientRect(),Be=8;F.value={top:Se.top,right:window.innerWidth-Se.left+Be}},"updatePopoverPosition"),q=y(()=>h.value||_.value&&D.value);se(q,Ve=>{Ve?Fe(G):F.value=null},{immediate:!1});const Z=L(!1),te=y(()=>t.iconName?t.iconName:Ds(t.state)),X=y(()=>t.state==="pending"&&te.value===Ds("pending")&&!t.iconImageUrl),ue=y(()=>t.showClear!==void 0?t.showClear:t.state!=="completed"),le=n(()=>s("details-leave",t.jobId),"emitDetailsLeave"),Ne=n(()=>{le(),s("cancel")},"onCancelClick"),Ue=n(()=>{le(),s("delete")},"onDeleteClick"),Qe=n(Ve=>{(t.showMenu===void 0||t.showMenu)&&s("menu",Ve)},"onContextMenu");return(Ve,Se)=>{const Be=Ie("tooltip");return d(),$("div",{ref_key:"rowRef",ref:C,class:"relative",onMouseenter:w,onMouseleave:k,onContextmenu:ke(Qe,["stop","prevent"])},[(d(),R(Nt,{to:"body"},[!_.value&&h.value&&F.value?(d(),$("div",{key:0,class:"fixed z-50",style:ye({top:`${F.value.top}px`,right:`${F.value.right}px`}),onMouseenter:I,onMouseleave:x},[O(Up,{"job-id":t.jobId,"workflow-id":t.workflowId},null,8,["job-id","workflow-id"])],36)):E("",!0)])),(d(),R(Nt,{to:"body"},[_.value&&D.value&&F.value?(d(),$("div",{key:0,class:"fixed z-50",style:ye({top:`${F.value.top}px`,right:`${F.value.right}px`}),onMouseenter:U,onMouseleave:z},[O(Xp,{"image-url":Ve.iconImageUrl,name:t.title,"time-label":Ve.rightText||void 0,onImageClick:Se[0]||(Se[0]=Je=>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:Se[3]||(Se[3]=Je=>Z.value=!0),onMouseleave:Se[4]||(Se[4]=Je=>Z.value=!1)},[t.state==="running"&&m(p)(t.progressTotalPercent,t.progressCurrentPercent)?(d(),$("div",{key:0,class:Q(m(a))},[m(u)(t.progressTotalPercent)?(d(),$("div",{key:0,class:Q(m(i)),style:ye(m(g)(t.progressTotalPercent))},null,6)):E("",!0),m(u)(t.progressCurrentPercent)?(d(),$("div",{key:1,class:Q(m(r)),style:ye(m(g)(t.progressCurrentPercent))},null,6)):E("",!0)],2)):E("",!0),c("div",Zp,[c("div",ef,[c("div",{class:"absolute left-1/2 top-1/2 size-10 -translate-x-1/2 -translate-y-1/2",onMouseenter:ke(W,["stop"]),onMouseleave:ke(H,["stop"])},null,32),c("div",tf,[Ve.iconImageUrl?(d(),$("img",{key:0,src:Ve.iconImageUrl,class:"h-full w-full object-cover"},null,8,of)):(d(),$("i",{key:1,class:Q(m(ne)(te.value,"size-4",X.value&&"animate-spin"))},null,2))])])]),c("div",nf,[c("div",{class:"truncate opacity-90",title:t.title},[he(Ve.$slots,"primary",{},()=>[$e(V(t.title),1)])],8,sf)]),c("div",af,[O(Jo,{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(()=>[Z.value?(d(),$("div",lf,[t.state==="failed"&&ue.value?de((d(),R(J,{key:0,variant:"destructive",size:"icon","aria-label":m(l)("g.delete"),onClick:ke(Ue,["stop"])},{default:A(()=>Se[5]||(Se[5]=[c("i",{class:"icon-[lucide--trash-2] size-4"},null,-1)])),_:1},8,["aria-label"])),[[Be,f.value,void 0,{top:!0}]]):t.state!=="completed"&&t.state!=="running"&&ue.value?de((d(),R(J,{key:1,variant:"destructive",size:"icon","aria-label":m(l)("g.cancel"),onClick:ke(Ne,["stop"])},{default:A(()=>Se[6]||(Se[6]=[c("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"])),[[Be,v.value,void 0,{top:!0}]]):t.state==="completed"?(d(),R(J,{key:2,variant:"textonly",size:"sm",onClick:Se[1]||(Se[1]=ke(Je=>s("view"),["stop"]))},{default:A(()=>[$e(V(m(l)("menuLabels.View")),1)]),_:1})):E("",!0),t.showMenu===void 0||t.showMenu?de((d(),R(J,{key:3,variant:"textonly",size:"icon-sm","aria-label":m(l)("g.more"),onClick:Se[2]||(Se[2]=ke(Je=>s("menu",Je),["stop"]))},{default:A(()=>Se[7]||(Se[7]=[c("i",{class:"icon-[lucide--more-horizontal] size-4"},null,-1)])),_:1},8,["aria-label"])),[[Be,b.value,void 0,{top:!0}]]):E("",!0)])):t.state!=="running"?(d(),$("div",rf,[he(Ve.$slots,"secondary",{},()=>[$e(V(t.rightText),1)])])):E("",!0)]),_:3}),t.state==="running"&&ue.value?de((d(),R(J,{key:0,variant:"destructive",size:"icon","aria-label":m(l)("g.cancel"),onClick:ke(Ne,["stop"])},{default:A(()=>Se[8]||(Se[8]=[c("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"])),[[Be,v.value,void 0,{top:!0}]]):E("",!0)])],32)],544)}}}),cf={class:"flex flex-col gap-4 px-3 pb-4"},df={class:"text-[12px] leading-none text-text-secondary"},pf=K({__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),p=n(()=>{r.value!==null&&(clearTimeout(r.value),r.value=null)},"clearHideTimer"),g=n(()=>{u.value!==null&&(clearTimeout(u.value),u.value=null)},"clearShowTimer"),v=n(C=>{p(),g(),u.value=window.setTimeout(()=>{i.value=C,u.value=null},200)},"onDetailsEnter"),f=n(C=>{p(),g(),r.value=window.setTimeout(()=>{i.value===C&&(i.value=null),r.value=null},150)},"onDetailsLeave"),b=n(()=>{p(),g(),i.value=null},"resetActiveDetails");return se(()=>t.displayedJobGroups,C=>{const h=i.value;if(!h)return;C.some(k=>k.items.some(I=>I.id===h))||b()}),rt(b),(C,h)=>(d(),$("div",cf,[(d(!0),$(oe,null,be(C.displayedJobGroups,w=>(d(),$("div",{key:w.key,class:"flex flex-col gap-2"},[c("div",df,V(w.label),1),(d(!0),$(oe,null,be(w.items,k=>(d(),R(uf,{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(I=>l(k),"onCancel"),onDelete:n(I=>a(k),"onDelete"),onMenu:n(I=>C.$emit("menu",k,I),"onMenu"),onView:n(I=>C.$emit("viewItem",k),"onView"),onDetailsEnter:v,onDetailsLeave:f},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))]))}}),ff={class:"flex w-full flex-col gap-4"},mf={class:"flex items-center justify-between px-3"},gf={class:"ml-4 inline-flex items-center"},vf={class:"inline-flex h-6 items-center text-[12px] leading-none text-text-primary opacity-90"},hf={class:"font-bold"},yf={class:"ml-1"},bf={class:"flex-1 min-h-0 overflow-y-auto"},wf=K({__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}=xi(()=>l.value,v=>t("viewItem",v)),r=n(v=>{t("cancelItem",v)},"onCancelItemEvent"),u=n(v=>{t("deleteItem",v)},"onDeleteItemEvent"),p=n((v,f)=>{l.value=v,a.value?.open(f)},"onMenuItem"),g=n(async v=>{v.kind!=="divider"&&(v.onClick&&await v.onClick(),a.value?.hide())},"onJobMenuAction");return(v,f)=>(d(),$("div",ff,[O(ip,{"header-title":v.headerTitle,"show-concurrent-indicator":v.showConcurrentIndicator,"concurrent-workflow-count":v.concurrentWorkflowCount,onClearHistory:f[0]||(f[0]=b=>v.$emit("clearHistory"))},null,8,["header-title","show-concurrent-indicator","concurrent-workflow-count"]),c("div",mf,[O(J,{class:"grow gap-1 justify-center",variant:"secondary",size:"sm",onClick:f[1]||(f[1]=b=>v.$emit("showAssets"))},{default:A(()=>[f[7]||(f[7]=c("i",{class:"icon-[comfy--image-ai-edit] size-4"},null,-1)),c("span",null,V(m(s)("sideToolbar.queueProgressOverlay.showAssets")),1)]),_:1}),c("div",gf,[c("div",vf,[c("span",hf,V(v.queuedCount),1),c("span",yf,V(m(s)("sideToolbar.queueProgressOverlay.queuedSuffix")),1)]),v.queuedCount>0?(d(),R(J,{key:0,class:"ml-2",variant:"destructive",size:"icon","aria-label":m(s)("sideToolbar.queueProgressOverlay.clearQueued"),onClick:f[2]||(f[2]=b=>v.$emit("clearQueued"))},{default:A(()=>f[8]||(f[8]=[c("i",{class:"icon-[lucide--list-x] size-4"},null,-1)])),_:1},8,["aria-label"])):E("",!0)])]),O(xp,{"selected-job-tab":v.selectedJobTab,"selected-workflow-filter":v.selectedWorkflowFilter,"selected-sort-mode":v.selectedSortMode,"has-failed-jobs":v.hasFailedJobs,"onUpdate:selectedJobTab":f[3]||(f[3]=b=>v.$emit("update:selectedJobTab",b)),"onUpdate:selectedWorkflowFilter":f[4]||(f[4]=b=>v.$emit("update:selectedWorkflowFilter",b)),"onUpdate:selectedSortMode":f[5]||(f[5]=b=>v.$emit("update:selectedSortMode",b))},null,8,["selected-job-tab","selected-workflow-filter","selected-sort-mode","has-failed-jobs"]),c("div",bf,[O(pf,{"displayed-job-groups":v.displayedJobGroups,onCancelItem:r,onDeleteItem:u,onViewItem:f[6]||(f[6]=b=>v.$emit("viewItem",b)),onMenu:p},null,8,["displayed-job-groups"])]),O(cp,{ref_key:"jobContextMenuRef",ref:a,entries:m(i),onAction:g},null,8,["entries"])]))}}),Cf={class:"w-[360px] rounded-2xl border border-interface-stroke bg-interface-panel-surface text-text-primary shadow-interface font-inter"},kf={class:"flex items-center justify-between border-b border-interface-stroke px-4 py-4"},xf={class:"m-0 text-[14px] font-normal leading-none"},Sf={class:"flex flex-col gap-4 px-4 py-4 text-[14px] text-text-secondary"},_f={class:"m-0"},Tf={class:"m-0"},$f={class:"flex items-center justify-end px-4 py-4"},Nf={class:"flex items-center gap-4 leading-none"},If=K({__name:"QueueClearHistoryDialog",setup(e){const o=ut(),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(p,g)=>(d(),$("section",Cf,[c("header",kf,[c("p",xf,V(m(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogTitle")),1),O(J,{size:"icon",variant:"muted-textonly","aria-label":m(s)("g.close"),onClick:u},{default:A(()=>g[0]||(g[0]=[c("i",{class:"icon-[lucide--x] block size-4 leading-none"},null,-1)])),_:1},8,["aria-label"])]),c("div",Sf,[c("p",_f,V(m(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogDescription")),1),c("p",Tf,V(m(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogAssetsNote")),1)]),c("footer",$f,[c("div",Nf,[O(J,{variant:"muted-textonly",size:"lg",onClick:u},{default:A(()=>[$e(V(m(s)("g.cancel")),1)]),_:1}),O(J,{variant:"secondary",size:"lg",disabled:a.value,onClick:r},{default:A(()=>[$e(V(m(s)("g.clear")),1)]),_:1},8,["disabled"])])])]))}}),Mf=n(()=>{const e=zt(),o=ct(),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,(g,v)=>{if(!v&&g&&(s.value=Date.now()),v&&!g){const f=s.value??0,b=e.historyTasks.filter(I=>{const x=I.executionEndTimestamp;return typeof x=="number"&&x>=f});if(!b.length){l.value=null,i();return}let C=0,h=0;const w=[];for(const I of b){const x=za(I,!1);if(x==="completed"){C++;const _=I.previewOutput;_?.isImage&&w.push(_.urlWithTimestamp)}else x==="failed"&&h++}if(C===0&&h===0){l.value=null,i();return}let k="mixed";h===0?k="allSuccess":C===0&&(k="allFailed"),l.value={mode:k,completedCount:C,failedCount:h,thumbnailUrls:w.slice(0,3)},r()}},{immediate:!0}),{summary:y(()=>l.value),clearSummary:u}},"useCompletionSummary");function Pf(e){const o=L(-1),t=Ze([]);return{galleryActiveIndex:o,galleryItems:t,onViewItem:n(l=>{const a=e().flatMap(u=>{const p=u.previewOutput;return p&&p.supportsPreview?[p]:[]});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(Pf,"useResultGallery");const Df={class:Q(["flex","justify-end","w-full","pointer-events-none"])},Af=K({__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=_e(),r=ct(),u=Ho(),p=ut(),g=jn(),v=Si(),{wrapWithErrorHandlingAsync:f}=Bt(),{totalPercentFormatted:b,currentNodePercentFormatted:C,totalProgressStyle:h,currentNodeProgressStyle:w}=_i(),k=L(!1),I=y(()=>k.value||t.menuHovered),x=L(!1),_=y({get:n(()=>t.expanded===void 0?x.value:t.expanded,"get"),set:n(we=>{t.expanded===void 0&&(x.value=we),s("update:expanded",we)},"set")}),{summary:S,clearSummary:T}=Mf(),N=y(()=>S.value!==null),M=y(()=>a.runningTasks.length),D=y(()=>a.pendingTasks.length),B=y(()=>!r.isIdle),j=y(()=>M.value>0||B.value),W=y(()=>M.value+D.value),H=y(()=>_.value?"expanded":j.value?"active":N.value?"empty":"hidden"),U=y(()=>H.value==="expanded"||H.value==="empty"||H.value==="active"&&I.value),z=y(()=>H.value!=="hidden"),F=y(()=>U.value?"border-interface-stroke bg-interface-panel-surface shadow-interface":"border-transparent bg-transparent shadow-none"),G=y(()=>`flex items-center justify-end gap-4 transition-opacity duration-200 ease-in-out ${H.value==="active"&&I.value?"opacity-100 pointer-events-auto":"opacity-0 pointer-events-none"}`),q=y(()=>j.value?`${W.value} ${l("sideToolbar.queueProgressOverlay.activeJobsSuffix")}`:l("sideToolbar.queueProgressOverlay.jobQueue")),Z=y(()=>r.runningWorkflowCount),te=y(()=>Z.value>1),{selectedJobTab:X,selectedWorkflowFilter:ue,selectedSortMode:le,hasFailedJobs:Ne,filteredTasks:Ue,groupedJobItems:Qe,currentNodeName:Ve}=Ti(),Se=y(()=>Qe.value),Be=f(async we=>{const Ee=we.taskRef?.promptId;Ee&&(we.state==="running"||we.state==="initialization"?(await Te.interrupt(Ee),await a.update()):we.state==="pending"&&(await Te.deleteItem("queue",Ee),await a.update()))}),Je=f(async we=>{we.taskRef&&await a.delete(we.taskRef)}),{galleryActiveIndex:bt,galleryItems:po,onViewItem:Ht}=Pf(()=>Ue.value),jt=n(we=>{_.value=we},"setExpanded"),pt=n(()=>{jt(!0)},"openExpandedFromEmpty"),_t=n(()=>{jt(!0)},"viewAllJobs"),At=n(()=>{pt(),T()},"onSummaryClick"),tt=n(()=>{u.activeSidebarTabId="assets"},"openAssetsSidebar"),qt=n(async we=>{const Ee=we.taskRef,ee=Ee?.promptId,ae=Ee?.previewOutput;if(!ee||!ae)return;const ft=String(ee);if(tt(),await Fe(),await g.updateHistory(),!g.historyAssets.find(Tt=>Tt.id===ft))throw new Error("Asset not found in media assets panel");v.setSelection([ft])},"focusAssetInSidebar"),fo=f(async we=>{Ht(we),await qt(we)}),Kt=f(async()=>{await i.execute("Comfy.ClearPendingTasks")}),pe=f(async()=>{const Ee=a.runningTasks.map(ee=>ee.promptId).filter(ee=>typeof ee=="string"&&ee.length>0);Ee.length&&await Promise.all(Ee.map(ee=>Te.interrupt(ee)))}),xe=n(()=>{p.showDialog({key:"queue-clear-history",component:If,dialogComponentProps:{headless:!0,closable:!1,closeOnEscape:!0,dismissableMask:!0,pt:{root:{class:"max-w-[360px] w-auto bg-transparent border-none shadow-none"},content:{class:"!p-0 bg-transparent"}}}})},"showClearHistoryDialog"),De=n(()=>{xe()},"onClearHistoryFromMenu");return(we,Ee)=>(d(),$(oe,null,[de(c("div",Df,[c("div",{class:Q(["pointer-events-auto flex w-[350px] min-w-[310px] max-h-[60vh] flex-col overflow-hidden rounded-lg border font-inter transition-colors duration-200 ease-in-out",F.value]),onMouseenter:Ee[3]||(Ee[3]=ee=>k.value=!0),onMouseleave:Ee[4]||(Ee[4]=ee=>k.value=!1)},[_.value?(d(),R(wf,{key:0,"selected-job-tab":m(X),"onUpdate:selectedJobTab":Ee[0]||(Ee[0]=ee=>lt(X)?X.value=ee:null),"selected-workflow-filter":m(ue),"onUpdate:selectedWorkflowFilter":Ee[1]||(Ee[1]=ee=>lt(ue)?ue.value=ee:null),"selected-sort-mode":m(le),"onUpdate:selectedSortMode":Ee[2]||(Ee[2]=ee=>lt(le)?le.value=ee:null),class:"flex-1 min-h-0","header-title":q.value,"show-concurrent-indicator":te.value,"concurrent-workflow-count":Z.value,"queued-count":D.value,"displayed-job-groups":Se.value,"has-failed-jobs":m(Ne),onShowAssets:tt,onClearHistory:De,onClearQueued:m(Kt),onCancelItem:m(Be),onDeleteItem:m(Je),onViewItem:m(fo)},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(),R(zd,{key:1,"total-progress-style":m(h),"current-node-progress-style":m(w),"total-percent-formatted":m(b),"current-node-percent-formatted":m(C),"current-node-name":m(Ve),"running-count":M.value,"queued-count":D.value,"bottom-row-class":G.value,onInterruptAll:m(pe),onClearQueued:m(Kt),onViewAllJobs:_t},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"])):m(S)?(d(),R(Zd,{key:2,summary:m(S),onSummaryClick:At},null,8,["summary"])):E("",!0)],34)],512),[[Xe,z.value]]),O($i,{"active-index":m(bt),"onUpdate:activeIndex":Ee[5]||(Ee[5]=ee=>lt(bt)?bt.value=ee:null),"all-gallery-items":m(po)},null,8,["active-index","all-gallery-items"])],64))}}),Lf=Dt("actionBarButton",()=>{const e=Yn();return{buttons:y(()=>e.extensions.flatMap(t=>t.actionBarButtons??[]))}}),Ef={class:"flex h-full shrink-0 items-center gap-1"},Vf={key:0},Of=K({__name:"ActionBarButtons",setup(e){const o=Lf(),s=Yo(Zo).smaller("sm");return(l,a)=>{const i=Ie("tooltip");return d(),$("div",Ef,[(d(!0),$(oe,null,be(m(o).buttons,(r,u)=>de((d(),R(J,{key:u,"aria-label":r.tooltip||r.label,class:Q([r.class,"h-7 rounded-full"]),variant:"muted-textonly",size:"sm",onClick:r.onClick},{default:A(()=>[c("i",{class:Q(r.icon)},null,2),!m(s)&&r.label?(d(),$("span",Vf,V(r.label),1)):E("",!0)]),_:2},1032,["aria-label","class","onClick"])),[[i,r.tooltip,void 0,{bottom:!0}]])),128))])}}}),Rf={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)]"},Wf={class:"flex flex-col items-center px-0 py-3 mb-4"},zf={class:"my-0 mb-1 truncate text-base font-bold text-base-foreground"},Bf={key:0,class:"my-0 truncate text-sm text-muted"},Ff={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"},Uf={key:0,class:"flex items-center gap-2 px-4 py-2"},Gf={key:1,class:"text-base font-semibold text-base-foreground"},Hf={class:"icon-[lucide--circle-help] cursor-help text-base text-muted-foreground mr-auto"},jf={key:1,class:"flex justify-center px-4"},qf={class:"text-sm text-base-foreground flex-1"},Kf={class:"text-sm text-base-foreground flex-1"},Qf={key:0,class:"text-xs font-bold text-base-background bg-base-foreground px-1.5 py-0.5 rounded-full"},Yf={class:"text-sm text-base-foreground flex-1"},Jf={class:"text-sm text-base-foreground flex-1"},Xf={class:"text-sm text-base-foreground flex-1"},Zf=K({__name:"CurrentUserPopover",emits:["close"],setup(e,{emit:o}){const t=o,{buildDocsUrl:s,docsPaths:l}=ro(),{userDisplayName:a,userEmail:i,userPhotoUrl:r,handleSignOut:u}=Ft(),p=Ba(),g=Fa(),v=yt(),{isActiveSubscription:f,subscriptionTierName:b,subscriptionTier:C,fetchStatus:h}=Kn(),w=ed(),{locale:k}=fe(),I=y(()=>{const j=g.balance?.effective_balance_micros??g.balance?.amount_micros??0;return Ni({cents:j,locale:k.value,numberOptions:{minimumFractionDigits:0,maximumFractionDigits:2}})}),x=y(()=>{const j=C.value;return j==="FOUNDERS_EDITION"||j==="STANDARD"||j==="CREATOR"}),_=n(()=>{v.showSettingsDialog("user"),t("close")},"handleOpenUserSettings"),S=n(()=>{w.show(),t("close")},"handleOpenPlansAndPricing"),T=n(()=>{v.showSettingsDialog("credits"),t("close")},"handleOpenPlanAndCreditsSettings"),N=n(()=>{v.showTopUpCreditsDialog(),t("close")},"handleTopUp"),M=n(()=>{window.open(s(l.partnerNodesPricing,{includeLocale:!0}),"_blank"),t("close")},"handleOpenPartnerNodesInfo"),D=n(async()=>{await u(),t("close")},"handleLogout"),B=n(async()=>{await h()},"handleSubscribed");return ze(()=>{p.fetchBalance()}),(j,W)=>{const H=Ie("tooltip");return d(),$("div",Rf,[c("div",Wf,[O(al,{class:"mb-1","photo-url":m(r),"pt:icon:class":{"text-2xl!":!m(r)},size:"large"},null,8,["photo-url","pt:icon:class"]),c("h3",zf,V(m(a)||j.$t("g.user")),1),m(i)?(d(),$("p",Bf,V(m(i)),1)):E("",!0),m(b)?(d(),$("span",Ff,V(m(b)),1)):E("",!0)]),m(f)?(d(),$("div",Uf,[W[0]||(W[0]=c("i",{class:"icon-[lucide--component] text-amber-400 text-sm"},null,-1)),m(g).isFetchingBalance?(d(),R(m(Gn),{key:0,width:"4rem",height:"1.25rem",class:"w-full"})):(d(),$("span",Gf,V(I.value),1)),de(c("i",Hf,null,512),[[H,{value:j.$t("credits.unified.tooltip"),showDelay:300}]]),O(J,{variant:"secondary",size:"sm",class:"text-base-foreground","data-testid":"add-credits-button",onClick:N},{default:A(()=>[$e(V(j.$t("subscription.addCredits")),1)]),_:1})])):(d(),$("div",jf,[O(Zc,{fluid:!1,label:j.$t("subscription.subscribeToComfyCloud"),size:"sm",variant:"gradient",onSubscribed:B},null,8,["label"])])),O(m($s),{class:"my-2 mx-0"}),m(f)?(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},[W[1]||(W[1]=c("i",{class:"icon-[lucide--tag] text-muted-foreground text-sm"},null,-1)),c("span",qf,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},[W[2]||(W[2]=c("i",{class:"icon-[lucide--receipt-text] text-muted-foreground text-sm"},null,-1)),c("span",Kf,V(j.$t("subscription.plansAndPricing")),1),x.value?(d(),$("span",Qf,V(j.$t("subscription.upgrade")),1)):E("",!0)]),m(f)?(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:T},[W[3]||(W[3]=c("i",{class:"icon-[lucide--file-text] text-muted-foreground text-sm"},null,-1)),c("span",Yf,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:_},[W[4]||(W[4]=c("i",{class:"icon-[lucide--settings-2] text-muted-foreground text-sm"},null,-1)),c("span",Jf,V(j.$t("userSettings.accountSettings")),1)]),O(m($s),{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:D},[W[5]||(W[5]=c("i",{class:"icon-[lucide--log-out] text-muted-foreground text-sm"},null,-1)),c("span",Xf,V(j.$t("auth.signOut.signOut")),1)])])}}}),em={key:0,class:"icon-[lucide--chevron-down] size-3 px-1"},rs=K({__name:"CurrentUserButton",props:{showArrow:{type:Boolean,default:!0},compact:{type:Boolean,default:!1}},setup(e){const{isLoggedIn:o,userPhotoUrl:t}=Ft(),s=L(null),l=y(()=>t.value??void 0),a=n(()=>{s.value?.hide()},"closePopover");return(i,r)=>(d(),$("div",null,[m(o)?(d(),R(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",{class:Q(m(ne)("flex items-center gap-1 rounded-full hover:bg-interface-button-hover-surface justify-center",i.compact&&"size-full "))},[O(al,{"photo-url":l.value,class:Q(i.compact&&"size-full")},null,8,["photo-url","class"]),i.showArrow?(d(),$("i",em)):E("",!0)],2)]),_:1},8,["aria-label"])):E("",!0),O(m(et),{ref_key:"popover",ref:s,"show-arrow":!1,pt:{root:{class:"rounded-lg"}}},{default:A(()=>[O(Zf,{onClose:a})]),_:1},512)]))}}),tm={class:"mb-1"},om=["href"],us=K({__name:"LoginButton",props:{class:{}},setup(e){const{isLoggedIn:o,handleSignIn:t}=Ft(),{buildDocsUrl:s}=ro(),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"),p=n(()=>{i&&(clearTimeout(i),i=null)},"cancelHidePopover"),g=n(()=>{r&&(clearTimeout(r),r=null),i=setTimeout(()=>{a.value&&a.value.hide()},150)},"hidePopover");return(v,f)=>(d(),$(oe,null,[m(o)?E("",!0):(d(),R(J,{key:0,variant:"textonly",size:"icon",class:Q(m(ne)("group rounded-full text-base-foreground p-0",e.class)),"aria-label":m(ce)("g.login"),onClick:f[0]||(f[0]=b=>m(t)()),onMouseenter:u,onMouseleave:g},{default:A(()=>f[1]||(f[1]=[c("span",{class:"flex size-full items-center justify-center rounded-full bg-secondary-background transition-colors group-hover:bg-transparent"},[c("i",{class:"icon-[lucide--user] size-4"})],-1)])),_:1},8,["class","aria-label"])),O(m(et),{ref_key:"popoverRef",ref:a,class:"p-2",onMouseout:g,onMouseover:p},{default:A(()=>[c("div",null,[c("div",tm,V(m(ce)("auth.loginButton.tooltipHelp")),1),c("a",{href:m(l),target:"_blank",class:"text-neutral-500 hover:text-primary"},V(m(ce)("auth.loginButton.tooltipLearnMore")),9,om)])]),_:1},512)],64))}}),Zs=wa.create({baseURL:Ua(),headers:{"Content-Type":"application/json"}}),nm=n(()=>{const e=L(!1),o=L(null);se(()=>Ua(),a=>{Zs.defaults.baseURL=a});const t=n((a,i,r)=>{if(!wa.isAxiosError(a))return a instanceof Error?`${i}: ${a.message}`:`${i}: Unknown error occurred`;const u=a;if(u.response){const{status:p,data:g}=u.response;if(r&&r[p])return r[p];switch(p){case 400:return`Bad request: ${g?.message||"Invalid input"}`;case 401:return"Unauthorized: Authentication required";case 403:return`Forbidden: ${g?.message||"Access denied"}`;case 404:return`Not found: ${g?.message||"Resource not found"}`;case 500:return`Server error: ${g?.message||"Internal server error"}`;default:return`${i}: ${g?.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 Ii(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(()=>Zs.get(r,{params:a,signal:i}),"Failed to get releases",{400:"Invalid project or version parameter"})},"getReleases")}},"useReleaseService"),co=Dt("release",()=>{const e=L([]),o=L(!1),t=L(null),s=nm(),l=Jn(),a=ie(),i=y(()=>l?.systemStats?.system?.comfyui_version??""),r=y(()=>a.get("Comfy.Locale")),u=y(()=>a.get("Comfy.Release.Version")),p=y(()=>a.get("Comfy.Release.Status")),g=y(()=>a.get("Comfy.Release.Timestamp")),v=y(()=>a.get("Comfy.Notification.ShowVersionUpdates")),f=y(()=>e.value[0]??null),b=y(()=>e.value.slice(0,3)),C=4320*60*1e3,h=n((j,W)=>Et.valid(j)&&Et.valid(W)?Et.compare(j,W):j===W?0:1,"compareVersions"),w=y(()=>!!f.value&&h(f.value.version,i.value||"0.0.0")>0),k=y(()=>!!f.value&&h(f.value.version,i.value||"0.0.0")===0),I=y(()=>{const j=f.value?.attention;return j==="medium"||j==="high"}),x=y(()=>!(!Ke()||kt||!v.value||!w.value||!I.value||u.value===f.value?.version&&["skipped","changelog seen"].includes(p.value))),_=y(()=>{if(!Ke()||kt||!v.value||!w.value)return!1;const{version:j}=f.value;return u.value===j&&p.value==="changelog seen"?!1:I.value?!0:!(u.value===j&&p.value==="skipped"&&g.value&&Date.now()-g.value>=C)}),S=y(()=>!(!Ke()&&!kt||!v.value||!f.value||!!Et.valid(i.value)&&!k.value||u.value===f.value.version&&p.value==="what's new seen"));async function T(j){j!==f.value?.version||p.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(T,"handleSkipRelease");async function N(j){j===f.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(N,"handleShowChangelog");async function M(j){j===f.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 D(){if(!o.value&&v.value&&!l.systemStats?.system?.argv?.includes("--disable-api-nodes")){o.value=!0,t.value=null;try{l.systemStats||await Ca(l.isInitialized);const j=await s.getReleases({project:kt?"cloud":"comfyui",current_version:i.value,form_factor:l.getFormFactor(),locale:Mi(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(D,"fetchReleases");async function B(){await D()}return n(B,"initialize"),{releases:e,isLoading:o,error:t,recentRelease:f,recentReleases:b,shouldShowToast:x,shouldShowRedDot:_,shouldShowPopup:S,shouldShowUpdateButton:w,handleSkipRelease:T,handleShowChangelog:N,handleWhatsNewSeen:M,fetchReleases:D,initialize:B}}),sm=Object.freeze(Object.defineProperty({__proto__:null,useReleaseStore:co},Symbol.toStringTag,{value:"Module"})),am={class:"min-w-0 flex-1"},lm={class:"mx-1 flex flex-col items-end gap-1"},im={class:"flex items-center gap-2"},rm={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"},um={key:0,class:"absolute top-0.5 right-1 size-2 rounded-full bg-red-500"},cm={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"},dm={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"},pm=K({__name:"TopMenuSection",setup(e){const o=ie(),t=it(),s=lo(),l=gt(),{isLoggedIn:a}=Ft(),i=Ke(),{t:r}=fe(),{toastErrorHandler:u}=Bt(),p=_e(),g=zt(),v=Nn(),{isOverlayExpanded:f}=qe(v),b=co(),{shouldShowRedDot:C}=qe(b),{shouldShowRedDot:h}=Xn(),w=L(!1),k=y(()=>g.pendingTasks.length),I=y(()=>o.get("Comfy.UI.TabBarLayout")==="Integrated"),x=y(()=>ot(r("sideToolbar.queueProgressOverlay.viewJobHistory"))),_=y(()=>ot(r("menu.customNodesManager"))),S=y(()=>C.value||h.value),{isOpen:T}=qe(s),N=y(()=>ot(r("rightSidePanel.togglePanel"))),M=L();ze(()=>{M.value&&(Y.menu.element.style.width="fit-content",M.value.appendChild(Y.menu.element))});const D=n(()=>{p.execute("Comfy.Queue.ToggleOverlay")},"toggleQueueOverlay"),B=n(async()=>{try{await l.openManager({initialTab:eo.All,showToastOnLegacyError:!1})}catch(j){try{u(j)}catch(W){console.error(j),console.error(W)}}},"openCustomNodeManager");return(j,W)=>{const H=Ie("tooltip");return m(t).focusMode?E("",!0):(d(),$("div",{key:0,class:"ml-1 flex gap-x-0.5 pt-1",onMouseenter:W[1]||(W[1]=U=>w.value=!0),onMouseleave:W[2]||(W[2]=U=>w.value=!1)},[c("div",am,[O(Cd)]),c("div",lm,[c("div",im,[m(l).shouldShowManagerButtons.value?(d(),$("div",rm,[de((d(),R(J,{variant:"secondary",size:"icon","aria-label":m(r)("menu.customNodesManager"),class:"relative",onClick:B},{default:A(()=>[W[3]||(W[3]=c("i",{class:"icon-[lucide--puzzle] size-4"},null,-1)),S.value?(d(),$("span",um)):E("",!0)]),_:1},8,["aria-label"])),[[H,_.value,void 0,{bottom:!0}]])])):E("",!0),c("div",cm,[O(Of),c("div",{ref_key:"legacyCommandsContainerRef",ref:M,class:"[&:not(:has(*>*:not(:empty)))]:hidden"},null,512),O(dd),de((d(),R(J,{type:"destructive",size:"icon","aria-pressed":m(f),"aria-label":m(r)("sideToolbar.queueProgressOverlay.expandCollapsedQueue"),onClick:D},{default:A(()=>[W[4]||(W[4]=c("i",{class:"icon-[lucide--history] size-4"},null,-1)),k.value>0?(d(),$("span",dm,V(k.value),1)):E("",!0)]),_:1},8,["aria-pressed","aria-label"])),[[H,x.value,void 0,{bottom:!0}]]),m(a)&&!I.value?(d(),R(rs,{key:0,class:"shrink-0"})):m(i)&&!I.value?(d(),R(us,{key:1})):E("",!0),m(T)?E("",!0):de((d(),R(J,{key:2,type:"secondary",size:"icon","aria-label":m(r)("rightSidePanel.togglePanel"),onClick:m(s).togglePanel},{default:A(()=>W[5]||(W[5]=[c("i",{class:"icon-[lucide--panel-right] size-4"},null,-1)])),_:1},8,["aria-label","onClick"])),[[H,N.value,void 0,{bottom:!0}]])])]),O(Af,{expanded:m(f),"onUpdate:expanded":W[0]||(W[0]=U=>lt(f)?f.value=U:null),"menu-hovered":w.value},null,8,["expanded","menu-hovered"])])],32))}}}),cs=K({__name:"ExtensionSlot",props:{extension:{}},setup(e){const o=e,t=n((s,l)=>{s.render(l)},"mountCustomExtension");return rt(()=>{o.extension.type==="custom"&&o.extension.destroy&&o.extension.destroy()}),(s,l)=>s.extension.type==="vue"?(d(),R(oo(s.extension.component),{key:0})):(d(),$("div",{key:1,ref:n(a=>{a&&t(o.extension,a)},"ref")},null,512))}}),fm={class:"flex h-full flex-col"},mm={class:"flex w-full justify-between"},gm={class:"tabs-container font-inter"},vm={class:"font-normal"},hm={class:"flex items-center gap-2"},ym={class:"h-0 grow"},bm=K({__name:"BottomPanel",setup(e){const o=io(),t=yt(),{t:s}=fe(),l=y(()=>{const p=o.activeBottomPanelTabId;return p==="shortcuts-essentials"||p==="shortcuts-view-controls"}),a=n(p=>p!=="shortcuts-essentials"&&p!=="shortcuts-view-controls","shouldCapitalizeTab"),i=n(p=>{const g=p.titleKey?s(p.titleKey):p.title||"";return a(p.id)?g.toUpperCase():g},"getTabDisplayTitle"),r=n(async()=>{t.showSettingsDialog("keybinding")},"openKeybindingSettings"),u=n(()=>{o.activePanel=null},"closeBottomPanel");return(p,g)=>(d(),$("div",fm,[(d(),R(m(oi),{key:p.$i18n.locale,value:m(o).activeBottomPanelTabId,"onUpdate:value":g[0]||(g[0]=v=>m(o).activeBottomPanelTabId=v),style:{"--p-tabs-tablist-background":"var(--comfy-menu-bg)"}},{default:A(()=>[O(m(ni),{"pt:tab-list":"border-none h-full flex items-center py-2 border-b-1 border-solid",class:"bg-transparent"},{default:A(()=>[c("div",mm,[c("div",gm,[(d(!0),$(oe,null,be(m(o).bottomPanelTabs,v=>(d(),R(m(si),{key:v.id,value:v.id,class:Q(["m-1 mx-2 border-none font-inter",{"tab-list-single-item":m(o).bottomPanelTabs.length===1}]),"pt:root":n(f=>({class:{"p-3 rounded-lg":!0,"pointer-events-none":m(o).bottomPanelTabs.length===1},style:{color:"var(--fg-color)",backgroundColor:!f.context.active||m(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",hm,[l.value?(d(),R(J,{key:0,variant:"muted-textonly",size:"sm",onClick:r},{default:A(()=>[g[1]||(g[1]=c("i",{class:"pi pi-cog"},null,-1)),$e(" "+V(p.$t("shortcuts.manageShortcuts")),1)]),_:1})):E("",!0),O(J,{class:"justify-self-end",variant:"muted-textonly",size:"sm","aria-label":m(s)("g.close"),onClick:u},{default:A(()=>g[2]||(g[2]=[c("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])])]),_:1})]),_:1},8,["value"])),c("div",ym,[m(o).bottomPanelVisible&&m(o).activeBottomPanelTab?(d(),R(cs,{key:0,extension:m(o).activeBottomPanelTab},null,8,["extension"])):E("",!0)])]))}}),wm=Le(bm,[["__scopeId","data-v-9d1ea2c9"]]);function pl(e={}){const{useTransform:o=!1}=e,s=ve().getCanvas(),{canvasPosToClientPos:l,update:a}=Pi(s.canvas,s),i=ie();se([()=>i.get("Comfy.Sidebar.Location"),()=>i.get("Comfy.Sidebar.Size"),()=>i.get("Comfy.UseNewMenu")],()=>a(),{flush:"post"});const r=L({}),u=n(g=>{const{pos:v,size:f,scale:b=s.ds.scale}=g,[C,h]=l(v),[w,k]=f;return o?{position:"fixed",transformOrigin:"0 0",transform:`scale(${b})`,left:`${C}px`,top:`${h}px`,width:`${w}px`,height:`${k}px`}:{position:"fixed",left:`${C}px`,top:`${h}px`,width:`${w*b}px`,height:`${k*b}px`}},"computeStyle");return{style:r,updatePosition:n(g=>{r.value=u(g)},"updatePosition")}}n(pl,"useAbsolutePosition");function Cm(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(Cm,"intersect");const km=n((e={})=>{const o=L({}),{margin:t=4}=e,s=n((a,i,r,u)=>{if(!r&&u){const{scale:p,offset:g}=u,v=Cm({x:a.left-i.left,y:a.top-i.top,width:a.width,height:a.height},{x:(u.x+g[0]-t)*p,y:(u.y+g[1]-t)*p,width:(u.width+2*t)*p,height:(u.height+2*t)*p});if(!v)return"";const f=(v[0]-a.left+i.left)/p+"px",b=(v[1]-a.top+i.top)/p+"px",C=v[2]/p+"px",h=v[3]/p+"px";return`polygon(0% 0%, 0% 100%, ${f} 100%, ${f} ${b}, calc(${f} + ${C}) ${b}, calc(${f} + ${C}) calc(${b} + ${h}), ${f} calc(${b} + ${h}), ${f} 100%, 100% 100%, 100% 0%)`}return""},"calculateClipPath");return{style:o,updateClipPath:n((a,i,r,u)=>{const p=a.getBoundingClientRect(),g=i.getBoundingClientRect(),v=s(p,g,r,u);o.value={clipPath:v||"none",willChange:"clip-path"}},"updateClipPath")}},"useDomClipping"),xm=["title"],Sm=K({__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:p}=km(),g=ve(),v=ie(),f=y(()=>v.get("Comfy.DOMClippingEnabled")),b=n(()=>{const x=g.canvas;if(!x||!l.value)return;const _=Object.values(x.selected_nodes??{})[0];if(!_){p(l.value,x.canvas,!1,void 0);return}const S=_===e.widgetState.widget.node,T=_?.renderArea,N=x.ds.offset,M=x.ds.scale,D=T?{x:T[0],y:T[1],width:T[2],height:T[3],scale:M,offset:[N[0],N[1]]}:void 0;p(l.value,x.canvas,S,D)},"updateDomClipping"),{left:C,top:h}=Bn(g.getCanvas().canvas);se([()=>e.widgetState,C,h],([x,_,S])=>{r(x),f.value&&b(),a.value={...i.value,...f.value?u.value:{},zIndex:x.zIndex,pointerEvents:x.readonly||t.computedDisabled?"none":"auto",opacity:t.computedDisabled?.5:1}},{deep:!0}),se(()=>e.widgetState.visible,(x,_)=>{!x&&_&&t.options.onHide?.(t)}),Oe(document,"mousedown",x=>{!ho(t)||!e.widgetState.visible||!t.element.blur||t.element.contains(x.target)||t.element.blur()}),ze(()=>{ho(t)&&Oe(t.element,t.options.selectOn??["focus","click"],()=>{const x=g.canvas;x?.selectNode(e.widgetState.widget.node),x?.bringToFront(e.widgetState.widget.node)})});const k=t.node.constructor.nodeData?.inputs?.[t.name]?.tooltip,I=n(()=>{e.widgetState.visible&&ho(t)&&l.value&&(l.value.contains(t.element)||l.value.appendChild(t.element))},"mountElementIfVisible");return ze(()=>{Fe(()=>{I()}).catch(x=>{console.error("Error mounting DOM widget element:",x)})}),se(()=>e.widgetState.visible,()=>{I()}),(x,_)=>de((d(),$("div",{ref_key:"widgetElement",ref:l,class:"dom-widget",title:m(k),style:ye(a.value)},[m(Di)(m(t))?(d(),R(oo(m(t).component),Pt({key:0,"model-value":m(t).value,widget:m(t)},m(t).props,{"onUpdate:modelValue":_[0]||(_[0]=S=>s("update:widgetValue",S))}),null,16,["model-value","widget"])):E("",!0)],12,xm)),[[Xe,x.widgetState.visible]])}}),_m=Le(Sm,[["__scopeId","data-v-781496d2"]]),Tm={class:"isolate"},$m=K({__name:"DomWidgets",setup(e){const o=Ai(),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 p=u.widget;if(!p.isVisible()||!u.active){u.visible=!1;continue}const g=p.node,v=r?.nodes.includes(g);if(u.visible=!!v&&a.isNodeVisible(g)&&!(p.options.hideOnZoom&&i),u.visible&&g){const f=p.margin;u.pos=[g.pos[0]+f,g.pos[1]+f+p.y],u.size=[(p.width??g.width)-f*2,(p.computedHeight??50)-f*2],u.zIndex=a.graph?.nodes.indexOf(g)??-1,u.readonly=a.read_only}}},"updateWidgets"),l=ve();return xt(()=>l.canvas,a=>a.onDrawForeground=no(a.onDrawForeground,s),{immediate:!0}),(a,i)=>(d(),$("div",Tm,[(d(!0),$(oe,null,be(t.value,r=>(d(),R(_m,{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 Nm(){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(Nm,"useZoomControls");function Im(e,o){const t=new Map,s=L(""),l=L(0),a=L({bounds:!1,nodes:!1,connections:!1,viewport:!1}),i=Pe.getVersion(),r=new Map,u=El(()=>{o()},500),p=n(()=>{const h=e.value;if(!h||r.has(h.id))return;const w={onNodeAdded:h.onNodeAdded,onNodeRemoved:h.onNodeRemoved,onConnectionChange:h.onConnectionChange,onTrigger:h.onTrigger};r.set(h.id,w),h.onNodeAdded=function(k){w.onNodeAdded?.call(this,k),u()},h.onNodeRemoved=function(k){w.onNodeRemoved?.call(this,k),t.delete(k.id),u()},h.onConnectionChange=function(k){w.onConnectionChange?.call(this,k),u()},h.onTrigger=function(k){w.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"),g=n(h=>{const w=h||e.value;if(!w)return;const k=r.get(w.id);if(!k){console.error("Attempted to cleanup event listeners for graph that was never set up");return}w.onNodeAdded=k.onNodeAdded,w.onNodeRemoved=k.onNodeRemoved,w.onConnectionChange=k.onConnectionChange,w.onTrigger=k.onTrigger,r.delete(w.id)},"cleanupEventListeners");return{updateFlags:a,setupEventListeners:p,cleanupEventListeners:g,checkForChanges:n(()=>{const h=e.value;if(!h)return!1;let w=!1,k=!1,I=!1;const x=Ga.create(h),_=x.getNodeCount();_!==l.value&&(w=!0,l.value=_);const S=x.getNodes();for(const M of S){const D=M.id,B=`${M.x},${M.y},${M.width},${M.height}`;t.get(D)!==B&&(k=!0,t.set(D,B))}const T=new Set(S.map(M=>M.id));for(const[M]of t)T.has(M)||(t.delete(M),w=!0);const N=JSON.stringify(h.links||{});return N!==s.value&&(I=!0,s.value=N),(w||k)&&(a.value.bounds=!0,a.value.nodes=!0),I&&(a.value.connections=!0),w||k||I},"checkForChangesInternal"),init:n(()=>{p(),Te.addEventListener("graphChanged",u),se(i,()=>{u()})},"init"),destroy:n(()=>{g(),Te.removeEventListener("graphChanged",u),t.clear()},"destroy"),clearCache:n(()=>{t.clear(),s.value="",l.value=0},"clearCache")}}n(Im,"useMinimapGraph");function Mm(e,o,t,s,l,a,i){const r=L(!1),u=L({left:0,top:0,width:s,height:l}),p=n(()=>{if(!e.value)return;const w=e.value.getBoundingClientRect();u.value={left:w.left,top:w.top,width:w.width,height:w.height}},"updateContainerRect"),g=n(w=>{r.value=!0,p();const k=w.currentTarget;k instanceof HTMLElement&&k.setPointerCapture(w.pointerId),v(w)},"handlePointerDown"),v=n(w=>{if(!r.value||!i.value)return;const k=w.clientX-u.value.left,I=w.clientY-u.value.top,x=(s-o.value.width*t.value)/2,_=(l-o.value.height*t.value)/2,S=(k-x)/t.value+o.value.minX,T=(I-_)/t.value+o.value.minY;a(S,T)},"handlePointerMove"),f=n(w=>{if(r.value=!1,!w)return;const k=w.currentTarget;k instanceof HTMLElement&&k.hasPointerCapture(w.pointerId)&&k.releasePointerCapture(w.pointerId)},"releasePointer");return{isDragging:r,containerRect:u,updateContainerRect:p,handlePointerDown:g,handlePointerMove:v,handlePointerUp:f,handlePointerCancel:f,handleWheel:n(w=>{w.preventDefault();const k=i.value;if(!k)return;u.value.left===0&&u.value.top===0&&e.value&&p();const I=k.ds,x=w.deltaY>0?.9:1.1,_=I.scale*x;if(_<.1||_>10)return;const N=w.clientX-u.value.left,M=w.clientY-u.value.top,D=(s-o.value.width*t.value)/2,B=(l-o.value.height*t.value)/2,j=(N-D)/t.value+o.value.minX,W=(M-B)/t.value+o.value.minY;I.scale=_,a(j,W)},"handleWheel")}}n(Mm,"useMinimapInteraction");function Pm(e,o,t,s,l,a,i,r){const u=L(!0),p=L(!0),g=n(()=>{const b=o.value;if(!e.value||!b)return;const C=e.value.getContext("2d");if(!C)return;if(!b._nodes||b._nodes.length===0){C.clearRect(0,0,i,r);return}(u.value||l.value.nodes||l.value.connections)&&(Li(e.value,b,{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:p,renderMinimap:g,updateMinimap:n((b,C)=>{(p.value||l.value.bounds)&&(b(),p.value=!1,l.value.bounds=!1,u.value=!0,l.value.viewport=!0),(u.value||l.value.nodes||l.value.connections)&&g(),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(Pm,"useMinimapRenderer");function Dm(){const e=ie(),o=dt(),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,p=y(()=>o.completedActivePalette.light_theme),g=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:g,panelStyles:v,isLightTheme:p}}n(Dm,"useMinimapSettings");function Am(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 w=e.value;if(!w)return;const k=w.canvas,I=window.devicePixelRatio||1;r.value={width:k.clientWidth||k.width/I,height:k.clientHeight||k.height/I}},"updateCanvasDimensions"),p=n(()=>{const w=Ga.create(o.value);if(!w.hasData())return{minX:0,minY:0,maxX:100,maxY:100,width:100,height:100};const k=w.getBounds();return Ei(k)},"calculateGraphBounds"),g=n(()=>Vi(l.value,t,s),"calculateScale"),v=n(()=>{const w=e.value;if(!w)return;(r.value.width===0||r.value.height===0)&&u();const k=w.ds,I=r.value.width/k.scale,x=r.value.height/k.scale,_=-k.offset[0],S=-k.offset[1],T=(t-l.value.width*a.value)/2,N=(s-l.value.height*a.value)/2;i.value={x:(_-l.value.minX)*a.value+T,y:(S-l.value.minY)*a.value+N,width:I*a.value,height:x*a.value}},"updateViewport"),f=n(()=>{l.value=p(),a.value=g()},"updateBounds"),b=n((w,k)=>{const I=e.value;if(!I)return;(r.value.width===0||r.value.height===0)&&u();const x=I.ds,_=r.value.width/x.scale,S=r.value.height/x.scale;x.offset[0]=-(w-_/2),x.offset[1]=-(k-S/2),I.setDirty(!0,!0)},"centerViewOn"),{resume:C,pause:h}=ao(v);return{bounds:y(()=>l.value),scale:y(()=>a.value),viewportTransform:y(()=>i.value),canvasDimensions:y(()=>r.value),updateCanvasDimensions:u,updateViewport:v,updateBounds:f,centerViewOn:b,startViewportSync:C,stopViewportSync:h}}n(Am,"useMinimapViewport");function ds({canvasRefMaybe:e,containerRefMaybe:o}={}){const t=ve(),s=We(),l=ie(),a=L(null),i=e??Ze(null),r=o??Ze(null),u=L(!0),p=L(!1),g=250,v=200,f=y(()=>t.canvas),b=y(()=>s.activeSubgraph||f.value?.graph),C=Dm(),{nodeColors:h,showLinks:w,showGroups:k,renderBypass:I,renderError:x,containerStyles:_,panelStyles:S}=C,T=n(async(q,Z)=>{await l.set(q,Z),B.forceFullRedraw(),B.updateMinimap(N.updateBounds,N.updateViewport)},"updateOption"),N=Am(f,b,g,v),M=Mm(r,N.bounds,N.scale,g,v,N.centerViewOn,f),D=Im(b,()=>{B.forceFullRedraw(),B.updateMinimap(N.updateBounds,N.updateViewport)}),B=Pm(i,b,N.bounds,N.scale,D.updateFlags,C,g,v),{pause:j,resume:W}=ao(async()=>{u.value&&await D.checkForChanges()&&B.updateMinimap(N.updateBounds,N.updateViewport)},{immediate:!1}),H=n(async()=>{p.value||(u.value=l.get("Comfy.Minimap.Visible"),f.value&&b.value&&(D.init(),r.value&&M.updateContainerRect(),N.updateCanvasDimensions(),window.addEventListener("resize",M.updateContainerRect),window.addEventListener("scroll",M.updateContainerRect),window.addEventListener("resize",N.updateCanvasDimensions),B.forceFullRedraw(),B.updateMinimap(N.updateBounds,N.updateViewport),N.updateViewport(),u.value&&(W(),N.startViewportSync()),p.value=!0))},"init"),U=n(()=>{j(),N.stopViewportSync(),D.destroy(),window.removeEventListener("resize",M.updateContainerRect),window.removeEventListener("scroll",M.updateContainerRect),window.removeEventListener("resize",N.updateCanvasDimensions),p.value=!1},"destroy");se(f,async(q,Z)=>{Z&&(D.cleanupEventListeners(),j(),N.stopViewportSync(),D.destroy(),window.removeEventListener("resize",M.updateContainerRect),window.removeEventListener("scroll",M.updateContainerRect),window.removeEventListener("resize",N.updateCanvasDimensions)),q&&!p.value&&await H()},{immediate:!0,flush:"post"}),se(b,(q,Z)=>{q&&q!==Z&&(D.cleanupEventListeners(Z||void 0),D.setupEventListeners(),B.forceFullRedraw(),B.updateMinimap(N.updateBounds,N.updateViewport))}),se(u,async q=>{q?(r.value&&M.updateContainerRect(),N.updateCanvasDimensions(),B.forceFullRedraw(),await Fe(),await Fe(),B.updateMinimap(N.updateBounds,N.updateViewport),N.updateViewport(),W(),N.startViewportSync()):(j(),N.stopViewportSync())});const z=n(async()=>{u.value=!u.value,await l.set("Comfy.Minimap.Visible",u.value)},"toggle"),F=n(q=>{a.value=q},"setMinimapRef"),G=y(()=>{const q=N.viewportTransform.value;return{transform:`translate(${q.x}px, ${q.y}px)`,width:`${q.width}px`,height:`${q.height}px`,border:`2px solid ${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(()=>p.value),containerStyles:_,viewportStyles:G,panelStyles:S,width:g,height:v,nodeColors:h,showLinks:w,showGroups:k,renderBypass:I,renderError:x,init:H,destroy:U,toggle:z,renderMinimap:B.renderMinimap,handlePointerDown:M.handlePointerDown,handlePointerMove:M.handlePointerMove,handlePointerUp:M.handlePointerUp,handlePointerCancel:M.handlePointerCancel,handleWheel:M.handleWheel,setMinimapRef:F,updateOption:T}}n(ds,"useMinimap");const Lm={class:"flex items-center gap-1 pr-0.5"},Em={class:"rounded-lg bg-interface-panel-selected-surface p-2 group-hover:bg-interface-button-hover-surface"},Vm={class:"flex flex-col gap-1"},Om={class:"flex items-center gap-2"},Rm={class:"text-[9px] text-text-primary"},Wm={class:"flex items-center gap-2"},zm={class:"text-[9px] text-text-primary"},Bm=K({__name:"CanvasModeSelector",props:{buttonStyles:{}},setup(e){const o=L(),t=L(),s=_e(),l=ve(),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()),p=n(f=>{const b=o.value?.$el||o.value;t.value?.toggle(f,b)},"toggle"),g=n(f=>{f==="select"&&a.value?s.execute("Comfy.Canvas.Unlock"):f==="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(f,b)=>(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(f.buttonStyles),onClick:p},{default:A(()=>[c("div",Lm,[c("div",Em,[c("i",{class:Q([i.value,"block h-4 w-4"])},null,2)]),b[2]||(b[2]=c("i",{class:"icon-[lucide--chevron-down] block h-4 w-4 pr-1.5"},null,-1))])]),_:1},8,["style"]),O(m(et),{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",Vm,[c("div",{class:"flex cursor-pointer items-center justify-between px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onClick:b[0]||(b[0]=C=>g("select"))},[c("div",Om,[b[3]||(b[3]=c("i",{class:"icon-[lucide--mouse-pointer-2] h-4 w-4"},null,-1)),c("span",null,V(f.$t("graphCanvasMenu.select")),1)]),c("span",Rm,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:b[1]||(b[1]=C=>g("hand"))},[c("div",Wm,[b[4]||(b[4]=c("i",{class:"icon-[lucide--hand] h-4 w-4"},null,-1)),c("span",null,V(f.$t("graphCanvasMenu.hand")),1)]),c("span",zm,V(u.value),1)])])]),_:1},8,["pt"])],64))}}),Fm={key:0,class:"absolute right-0 bottom-[62px] z-1300 flex w-[250px] justify-center border-0! bg-inherit!"},Um={class:"flex flex-col gap-1"},Gm={class:"font-medium"},Hm={class:"text-[9px] text-text-primary"},jm={class:"font-medium"},qm={class:"text-[9px] text-text-primary"},Km={class:"font-medium"},Qm={class:"text-[9px] text-text-primary"},Ym=K({__name:"ZoomControlsModal",props:{visible:{type:Boolean}},setup(e){const o=ds(),t=_e(),s=ve(),{formatKeySequence:l}=_e(),a=e,i=L(null),r=n(w=>{const k=w.value;isNaN(k)||k<1||k>1e3||s.setAppZoomFromPercentage(k)},"applyZoom"),u=n(w=>{t.execute(w)},"executeCommand"),p=n(w=>{if(i.value)return;const k=n(()=>t.execute(w),"cmd");k(),i.value=window.setInterval(k,100)},"startRepeat"),g=n(()=>{i.value&&(clearInterval(i.value),i.value=null)},"stopRepeat"),v=y(()=>({...o.containerStyles.value,height:void 0,width:void 0})),f=y(()=>l(t.getCommand("Comfy.Canvas.ZoomIn"))),b=y(()=>l(t.getCommand("Comfy.Canvas.ZoomOut"))),C=y(()=>l(t.getCommand("Comfy.Canvas.FitView"))),h=L(null);return se(()=>a.visible,async w=>{w&&(await Fe(),h.value?.querySelector("input")?.focus())}),(w,k)=>w.visible?(d(),$("div",Fm,[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]=ke(()=>{},["stop"]))},[c("div",Um,[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]=I=>p("Comfy.Canvas.ZoomIn")),onMouseup:g,onMouseleave:g},[c("span",Gm,V(w.$t("graphCanvasMenu.zoomIn")),1),c("span",Hm,V(f.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]=I=>p("Comfy.Canvas.ZoomOut")),onMouseup:g,onMouseleave:g},[c("span",jm,V(w.$t("graphCanvasMenu.zoomOut")),1),c("span",qm,V(b.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]=I=>u("Comfy.Canvas.FitView"))},[c("span",Km,V(w.$t("zoomControls.zoomToFit")),1),c("span",Qm,V(C.value),1)]),c("div",{ref_key:"zoomInputContainer",ref:h,class:"zoomInputContainer flex items-center gap-1 rounded bg-input-surface p-2"},[O(m(ai),{"default-value":m(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:to(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)}}),Jm={class:"inline-flex items-center gap-1 px-2 text-xs"},Xm=K({__name:"GraphCanvasMenu",setup(e){const{t:o}=fe(),t=_e(),{formatKeySequence:s}=_e(),l=ve(),a=ie(),i=uo(),r=ds(),{isModalVisible:u,toggleModal:p,hideModal:g,hasActivePopup:v}=Nm(),f=y(()=>{const D=["borderRadius"],B=["borderRadius"],j={border:"none"},W=r.containerStyles.value,H={...Object.fromEntries(Object.entries(W).filter(([z])=>B.includes(z))),...j},U=Object.entries(W).filter(([z])=>D.includes(z)).reduce((z,[F,G])=>({...z,[F]:G}),{});return{buttonStyles:H,buttonGroupStyles:U}}),b=y(()=>a.get("Comfy.LinkRenderMode")===ge.HIDDEN_LINK),C=y(()=>s(t.getCommand("Comfy.Canvas.FitView")).toUpperCase()),h=y(()=>s(t.getCommand("Comfy.Canvas.ToggleMinimap")).toUpperCase()),w=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})),I=y(()=>{const D=o("graphCanvasMenu.fitView"),B=C.value;return B?`${D} (${B})`:D}),x=y(()=>{const D=a.get("Comfy.Minimap.Visible")?o("zoomControls.hideMinimap"):o("zoomControls.showMinimap"),B=h.value;return B?`${D} (${B})`:D}),_=y(()=>b.value?o("graphCanvasMenu.showLinks"):o("graphCanvasMenu.hideLinks")),S=y(()=>b.value?o("graphCanvasMenu.showLinks"):o("graphCanvasMenu.hideLinks")),T=y(()=>["bg-comfy-menu-bg",b.value?"not-active:bg-interface-panel-selected-surface!":"","hover:bg-interface-button-hover-surface!","p-0","w-8","h-8"]);ze(()=>{l.initScaleSync()});const N=n(()=>{t.execute("Comfy.Canvas.ToggleMinimap")},"onMinimapToggleClick"),M=n(()=>{t.execute("Comfy.Canvas.ToggleLinkVisibility")},"onLinkVisibilityToggleClick");return rt(()=>{l.cleanupScaleSync()}),(D,B)=>{const j=Ie("tooltip");return d(),$("div",null,[O(Ym,{visible:m(u),onClose:m(g)},null,8,["visible","onClose"]),m(v)?(d(),$("div",{key:0,class:"fixed inset-0 z-1200",onClick:B[0]||(B[0]=(...W)=>m(g)&&m(g)(...W))})):E("",!0),O(m(li),{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({...f.value.buttonGroupStyles}),onWheel:m(i).handleWheel},{default:A(()=>[O(Bm,{"button-styles":f.value.buttonStyles},null,8,["button-styles"]),B[6]||(B[6]=c("div",{class:"h-[27px] w-[1px] self-center bg-node-divider"},null,-1)),de((d(),R(J,{variant:"secondary","aria-label":I.value,style:ye(f.value.buttonStyles),class:"h-8 w-8 bg-comfy-menu-bg p-0 hover:bg-interface-button-hover-surface!",onClick:B[1]||(B[1]=()=>m(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,I.value,void 0,{top:!0}]]),de((d(),R(J,{variant:"secondary",class:Q(w.value),"aria-label":m(o)("zoomControls.label"),"data-testid":"zoom-controls-button",style:ye(f.value.buttonStyles),onClick:m(p)},{default:A(()=>[c("span",Jm,[c("span",null,V(m(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,m(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)),de((d(),R(J,{variant:"secondary","aria-label":x.value,"data-testid":"toggle-minimap-button",style:ye(f.value.buttonStyles),class:Q(k.value),onClick:N},{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,x.value,void 0,{top:!0}]]),de((d(),R(J,{variant:"secondary",class:Q(T.value),"aria-label":S.value,"data-testid":"toggle-link-visibility-button",style:ye(f.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:_.value,pt:{root:{style:"z-index: 2; transform: translateY(-20px);"}}},void 0,{top:!0}]])]),_:1},8,["style","onWheel"])])}}}),Zm=K({__name:"NodeTooltip",setup(e){let o;const t=St(),s=ie(),l=L(),a=L(""),i=L(),r=L();function u(){return a.value=""}n(u,"hideTooltip");async function p(f){if(!f)return;i.value=Y.canvas.mouse[0]+"px",r.value=Y.canvas.mouse[1]+"px",a.value=f,await Fe();const b=l.value?.getBoundingClientRect();b&&(b.right>window.innerWidth&&(i.value=Y.canvas.mouse[0]-b.width+"px"),b.top<0&&(r.value=Y.canvas.mouse[1]+b.height+"px"))}n(p,"showTooltip");function g(){const{canvas:f}=Y,b=f?.node_over;if(!b)return;const C=b.constructor,h=t.nodeDefsByName[b.type??""];if(C.title_mode!==ge.NO_TITLE&&f.graph_mouse[1]<b.pos[1])return p(h?.description);if(b.flags?.collapsed)return;const w=Oi(b,f.graph_mouse[0],f.graph_mouse[1],[0,0]);if(w!==-1){const x=b.inputs[w].name,_=Ae(`nodeDefs.${He(b.type??"")}.inputs.${He(x)}.tooltip`,h?.inputs[x]?.tooltip??"");return p(_)}const k=Ri(b,f.graph_mouse[0],f.graph_mouse[1],[0,0]);if(k!==-1){const x=Ae(`nodeDefs.${He(b.type??"")}.outputs.${k}.tooltip`,h?.outputs[k]?.tooltip??"");return p(x)}const I=Y.canvas.getWidgetAtCursor();if(I&&!ho(I)){const x=Ae(`nodeDefs.${He(b.type??"")}.inputs.${He(I.name)}.tooltip`,h?.inputs[I.name]?.tooltip??"");return p(I.tooltip??x)}}return n(g,"onIdle"),Oe(window,"mousemove",n(f=>{u(),clearTimeout(o),f.target.nodeName==="CANVAS"&&(o=window.setTimeout(g,s.get("LiteGraph.Node.TooltipDelay")))},"onMouseMove")),Oe(window,"click",u),(f,b)=>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)}}),eg=Le(Zm,[["__scopeId","data-v-96b1458a"]]),tg=K({__name:"BypassButton",setup(e){const o=_e(),t=n(async()=>{await o.execute("Comfy.Canvas.ToggleSelectedNodes.Bypass")},"toggleBypass");return(s,l)=>{const a=Ie("tooltip");return de((d(),R(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}]])}}}),og={class:"relative"},ng={class:"flex items-center gap-1 px-0"},sg={key:0,class:"color-picker-container absolute -top-10 left-1/2"},ag=["data-testid"],lg=K({__name:"ColorPickerButton",setup(e){const{t:o}=fe(),t=ve(),s=dt(),l=We(),a=y(()=>s.completedActivePalette.light_theme),i=n(w=>Vt(w,{lightness:.5}),"toLightThemeColor"),r=L(!1),u={name:"noColor",localizedName:o("color.noColor"),value:{dark:ge.NODE_DEFAULT_BGCOLOR,light:i(ge.NODE_DEFAULT_BGCOLOR)}},p=[u,...Object.entries(Ye.node_colors).map(([w,k])=>({name:w,localizedName:o(`color.${w}`),value:{dark:k.bgcolor,light:i(k.bgcolor)}}))],g=L(null),v=n(w=>{const k=w?.name??u.name,I=k===u.name?null:Ye.node_colors[k];for(const x of t.selectedItems)Oo(x)&&x.setColorOption(I);t.canvas?.setDirty(!0,!0),f.value=I,r.value=!1,l.activeWorkflow?.changeTracker.checkState()},"applyColor"),f=L(null),b=y(()=>f.value?a.value?i(f.value?.bgcolor):f.value?.bgcolor:null),C=y(()=>f.value?.bgcolor?p.find(k=>k.value.dark===f.value?.bgcolor||k.value.light===f.value?.bgcolor)?.localizedName??u.localizedName:null),h=n(w=>{r.value=!1,g.value=null,f.value=Wi(w)},"updateColorSelectionFromNode");return se(()=>t.selectedItems,w=>{h(w)},{immediate:!0}),(w,k)=>{const I=Ie("tooltip");return d(),$("div",og,[de((d(),R(J,{"data-testid":"color-picker-button",variant:"muted-textonly","aria-label":m(o)("g.color"),onClick:k[0]||(k[0]=()=>r.value=!r.value)},{default:A(()=>[c("div",ng,[c("i",{class:"pi pi-circle-fill",style:ye({color:b.value??""})},null,4),k[1]||(k[1]=c("i",{class:"icon-[lucide--chevron-down]"},null,-1))])]),_:1},8,["aria-label"])),[[I,{value:C.value??m(o)("color.noColor"),showDelay:1e3},void 0,{top:!0}]]),r.value?(d(),$("div",sg,[O(m(Aa),{"model-value":g.value,options:p,"option-label":"name","data-key":"value","onUpdate:modelValue":v},{option:A(({option:x})=>[de(c("i",{class:"pi pi-circle-fill",style:ye({color:a.value?x.value.light:x.value.dark}),"data-testid":x.name},null,12,ag),[[I,x.localizedName,void 0,{top:!0}]])]),_:1},8,["model-value"])])):E("",!0)])}}}),ig=Le(lg,[["__scopeId","data-v-2197e0a1"]]),rg=K({__name:"ConfigureSubgraph",setup(e){const o=lo(),t=n(()=>{o.openPanel("subgraph")},"handleClick");return(s,l)=>{const a=Ie("tooltip");return de((d(),R(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}]])}}}),ug=K({__name:"ConvertToSubgraphButton",setup(e){const o=_e(),{isSingleSubgraph:t,hasAnySelection:s}=Ut(),l=t,a=y(()=>s.value&&!t.value);return(i,r)=>{const u=Ie("tooltip");return m(l)?de((d(),R(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]=()=>m(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?de((d(),R(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]=()=>m(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)}}}),cg=K({__name:"DeleteButton",setup(e){const o=_e(),{selectedItems:t}=Ut(),s=y(()=>t.value.some(l=>l.removable!==!1));return(l,a)=>{const i=Ie("tooltip");return de((d(),R(J,{variant:"muted-textonly","aria-label":l.$t("commands.Comfy_Canvas_DeleteSelectedItems.label"),"data-testid":"delete-button",onClick:a[0]||(a[0]=()=>m(o).execute("Comfy.Canvas.DeleteSelectedItems"))},{default:A(()=>a[1]||(a[1]=[c("i",{class:"icon-[lucide--trash-2]"},null,-1)])),_:1},8,["aria-label"])),[[Xe,s.value],[i,{value:l.$t("commands.Comfy_Canvas_DeleteSelectedItems.label"),showDelay:1e3},void 0,{top:!0}]])}}}),dg=K({__name:"ExecuteButton",setup(e){const{t:o}=fe(),t=_e(),s=ve(),{selectedNodes:l}=Ut(),a=s.getCanvas(),i=L(!1),r=y(()=>l.value.filter(so).filter(zi));function u(){if(this.selected&&this.constructor.nodeData?.output_node&&i.value)return{color:"orange",lineWidth:2,padding:10}}n(u,"outputNodeStokeStyle");const p=n(()=>{i.value=!0;for(const f of r.value)f.strokeStyles.outputNode=u;a.setDirty(!0)},"handleMouseEnter"),g=n(()=>{i.value=!1,a.setDirty(!0)},"handleMouseLeave"),v=n(async()=>{await t.execute("Comfy.QueueSelectedOutputNodes")},"handleClick");return(f,b)=>{const C=Ie("tooltip");return de((d(),R(J,{variant:"primary","aria-label":m(o)("selectionToolbox.executeButton.tooltip"),onMouseenter:b[0]||(b[0]=()=>p()),onMouseleave:b[1]||(b[1]=()=>g()),onClick:v},{default:A(()=>b[2]||(b[2]=[c("i",{class:"icon-[lucide--play]"},null,-1)])),_:1},8,["aria-label"])),[[C,{value:m(o)("selectionToolbox.executeButton.tooltip"),showDelay:1e3},void 0,{top:!0}]])}}}),pg=K({__name:"ExtensionCommandButton",props:{command:{}},setup(e){const o=_e();return(t,s)=>{const l=Ie("tooltip");return de((d(),R(J,{variant:"muted-textonly","aria-label":m(Ae)(`commands.${m(He)(t.command.id)}.label`,""),onClick:s[0]||(s[0]=()=>m(o).execute(t.command.id))},{default:A(()=>[c("i",{class:Q([typeof t.command.icon=="function"?t.command.icon():t.command.icon])},null,2)]),_:1},8,["aria-label"])),[[l,{value:m(Ae)(`commands.${m(He)(t.command.id)}.label`,"")||void 0,showDelay:1e3},void 0,{top:!0}]])}}}),fg=K({__name:"InfoButton",setup(e){const o=lo(),t=n(()=>{o.openPanel("info")},"onInfoClick");return(s,l)=>{const a=Ie("tooltip");return de((d(),R(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}]])}}}),mg=K({__name:"Load3DViewerButton",setup(e){const o=_e(),t=n(()=>{o.execute("Comfy.3DViewer.Open3DViewer")},"open3DViewer");return(s,l)=>{const a=Ie("tooltip");return de((d(),R(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}]])}}}),gg=K({__name:"MaskEditorButton",setup(e){const o=_e(),{isSingleImageNode:t}=Ut(),s=n(()=>{o.execute("Comfy.MaskEditor.OpenMaskEditor")},"openMaskEditor");return(l,a)=>{const i=Ie("tooltip");return de((d(),R(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"])),[[Xe,m(t)],[i,{value:l.$t("commands.Comfy_MaskEditor_OpenMaskEditor.label"),showDelay:1e3},void 0,{top:!0}]])}}}),vg=n(e=>e!=null&&typeof e=="object"&&"refresh"in e&&typeof e.refresh=="function","isRefreshableWidget"),hg=n(()=>{const e=ve(),o=L([]);Ce(()=>{o.value=e.selectedItems.filter(so)});const t=y(()=>o.value.flatMap(a=>{if(!a.widgets)return[];const i=[];for(const r of a.widgets)vg(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"),yg=K({__name:"RefreshSelectionButton",setup(e){const{t:o}=fe(),{isRefreshable:t,refreshSelected:s}=hg();return(l,a)=>{const i=Ie("tooltip");return de((d(),R(J,{variant:"muted-textonly","aria-label":m(o)("g.refreshNode"),"data-testid":"refresh-button",onClick:m(s)},{default:A(()=>a[0]||(a[0]=[c("i",{class:"icon-[lucide--refresh-cw]"},null,-1)])),_:1},8,["aria-label","onClick"])),[[Xe,m(t)],[i,m(o)("g.refreshNode"),void 0,{top:!0}]])}}}),bg=K({__name:"SaveToSubgraphLibrary",setup(e){const o=_e(),t=ve(),s=y(()=>t.selectedItems?.length===1&&t.selectedItems[0]instanceof Zn);return(l,a)=>{const i=Ie("tooltip");return de((d(),R(J,{variant:"muted-textonly","aria-label":l.$t("commands.Comfy_PublishSubgraph.label"),onClick:a[0]||(a[0]=()=>m(o).execute("Comfy.PublishSubgraph"))},{default:A(()=>a[1]||(a[1]=[c("i",{class:"icon-[lucide--book-open]"},null,-1)])),_:1},8,["aria-label"])),[[Xe,s.value],[i,{value:l.$t("commands.Comfy_PublishSubgraph.label"),showDelay:1e3},void 0,{top:!0}]])}}}),go=L(!1),wg=L(0),Cg=L(0),st=L(!1);let Lt=!1,at=null;function Ro(e){const o=e.canvas;if(!o)return null;const t=Array.from(o.selectedItems);if(t.length!==1)return null;const s=t[0];return so(s)?`N:${s.id}`:ts(s)?`G:${s.id}`:null}n(Ro,"buildSelectionSignature");function kg(e){return at?Ro(e)===at:!1}n(kg,"currentSelectionMatchesSignature");function xg(e){const o=ve(),t=o.getCanvas(),{getSelectableItems:s}=es(),{shouldRenderVueNodes:l}=jo(),a=L({x:0,y:0}),i=L(!1),{left:r,top:u}=Bn(t.canvas),p=y(()=>{const k=o.canvas?.state?.draggingItems??!1,I=l.value&&Pe.isDraggingVueNodes.value;return k||I}),g=n(()=>{const k=s();if(!k.size){i.value=!1;return}if(p.value){i.value=!1;return}i.value=!0;const I=[];for(const _ of k)if(_.id!=null)if(l.value&&typeof _.id=="string"){const S=Pe.getNodeLayoutRef(_.id).value;S&&I.push([S.bounds.x,S.bounds.y,S.bounds.width,S.bounds.height])}else(_ instanceof vt||_ instanceof Ot)&&I.push([_.pos[0],_.pos[1]-ge.NODE_TITLE_HEIGHT,_.size[0],_.size[1]+ge.NODE_TITLE_HEIGHT]);const x=Bi(I);x&&(a.value={x:x.x+x.width/2,y:x.y-10},v())},"updateSelectionBounds"),v=n(()=>{if(!i.value)return;const{scale:k,offset:I}=t.ds,x=(a.value.x+I[0])*k+r.value,_=(a.value.y+I[1])*k+u.value;e.value&&(e.value.style.setProperty("--tb-x",`${x}px`),e.value.style.setProperty("--tb-y",`${_}px`))},"updateTransform"),{resume:f,pause:b}=ao(v);Ce(()=>{i.value?f():b()}),se(()=>o.getCanvas().state.selectionChanged,k=>{k&&((st.value||at)&&(st.value=!1,Lt=!1,go.value?at=Ro(o):at=null),g(),o.getCanvas().state.selectionChanged=!1)},{immediate:!0}),se(()=>go.value,k=>{k?at=Ro(o):o.canvas?.state?.draggingItems||(at=null,st.value&&(st.value=!1))});const C=n(k=>{if(k){h();return}w()},"handleDragStateChange"),h=n(()=>{if(i.value=!1,!go.value){st.value=!1,Lt=!1;return}if(Ro(o)!==at&&(at=null),go.value=!1,Lt=!0,st.value=!!at,st.value){wg.value++;return}Lt=!1},"handleDragStart"),w=n(()=>{requestAnimationFrame(()=>{g();const k=kg(o),I=Lt&&i.value&&st.value&&k;st.value=I&&st.value,Lt=!1,I&&Cg.value++})},"handleDragEnd");return se(p,C),ht(()=>{Sg()}),{visible:i}}n(xg,"useSelectionToolboxPosition");function Sg(){go.value=!1,st.value=!1,Lt=!1,at=null}n(Sg,"resetMoreOptionsState");const _g=new Set(["Properties","Colors","Shapes","Title","Mode","Properties Panel","Copy (Clipspace)"]),Tg=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 ea(e){return e.toLowerCase().replace(/^un/,"").trim()}n(ea,"normalizeLabel");function $g(e,o){const t=ea(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=ea(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($g,"isDuplicateItem");function Ng(e){return Tg.has(e)}n(Ng,"isCoreMenuItem");function Ig(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(Ig,"removeDuplicateMenuOptions");const Mg=["Rename","Copy","Duplicate","Run Branch","Pin","Unpin","Bypass","Remove Bypass","Mute","Convert to Subgraph","Frame selection","Minimize Node","Expand","Collapse","Resize","Clone","Node Info","Color","Open in Mask Editor","Open Image","Copy Image","Save Image","Copy (Clipspace)","Paste (Clipspace)","Convert to Group Node (Deprecated)"];function hn(e){const o=Mg.indexOf(e);return o===-1?999:o}n(hn,"getMenuItemOrder");function Mn(e){const o=Ig(e),t=new Map,s=[];let l;for(const g of o){if(g.type==="divider"||g.type==="category")continue;if((g.label==="Delete"||g.label==="Remove")&&!g.hasSubmenu){l=g;continue}g.label&&Ng(g.label)?t.set(g.label,g):s.push(g)}const a=[],i=Array.from(t.keys());i.sort((g,v)=>hn(g)-hn(v));const r=n(g=>g<=2?1:g<=8?2:g<=15?3:g<=17?4:5,"getSectionNumber");let u=0;for(const g of i){const v=t.get(g),f=hn(g),b=r(f);u>0&&b!==u&&a.push({type:"divider"}),a.push(v),u=b}const p=[];return p.push(...a),s.length>0&&(p.push({type:"divider"}),p.push({label:"Extensions",type:"category",disabled:!0}),p.push(...s)),l&&(p.push({type:"divider"}),p.push(l)),p}n(Mn,"buildStructuredMenu");function Pg(e,o,t=!0){const s=[];for(const l of e){if(l===null){s.push({type:"divider"});continue}if(!l.content||_g.has(l.content)||$g(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=Dg(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?Mn(s):s}n(Pg,"convertContextMenuToOptions");function Dg(e,o){let t,s;const l=ge.ContextMenu;try{ge.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{ge.ContextMenu=l}if(t)return fl(t,s);console.warn("[ContextMenuConverter] No items captured for:",e.content)}n(Dg,"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:Ag(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 Ag(e){return Ct.sanitize(e,{ALLOWED_TAGS:[]}).trim()||e.replace(/<[^>]*>/g,"").trim()||e}n(Ag,"stripHtmlTags");function ps(){const e=ve(),o=We();return{refreshCanvas:n(()=>{e.canvas?.emitBeforeChange(),e.canvas?.setDirty(!0,!0),e.canvas?.graph?.afterChange(),e.canvas?.emitAfterChange(),o.activeWorkflow?.changeTracker?.checkState()},"refreshCanvas")}}n(ps,"useCanvasRefresh");function fs(){const{t:e}=fe(),o=ve(),t=dt(),s=ps(),l=y(()=>t.completedActivePalette.light_theme),a=n(b=>Vt(b,{lightness:.5}),"toLightThemeColor"),i={name:"noColor",localizedName:e("color.noColor"),value:{dark:ge.NODE_DEFAULT_BGCOLOR,light:a(ge.NODE_DEFAULT_BGCOLOR)}},r=[i,...Object.entries(Ye.node_colors).map(([b,C])=>({name:b,localizedName:e(`color.${b}`),value:{dark:C.bgcolor,light:a(C.bgcolor)}}))],u=[{name:"default",localizedName:e("shape.default"),value:It.ROUND},{name:"box",localizedName:e("shape.box"),value:It.BOX},{name:"card",localizedName:e("shape.CARD"),value:It.CARD}];return{colorOptions:r,shapeOptions:u,applyColor:n(b=>{const C=b?.name??i.name,h=C===i.name?null:Ye.node_colors[C];for(const w of o.selectedItems)Oo(w)&&w.setColorOption(h);s.refreshCanvas()},"applyColor"),applyShape:n(b=>{const C=Array.from(o.selectedItems).filter(h=>h instanceof vt);C.length!==0&&(C.forEach(h=>{h.shape=b.value}),s.refreshCanvas())},"applyShape"),getCurrentColor:n(()=>{const b=Array.from(o.selectedItems);if(b.length===0)return null;const C=b.find(k=>Oo(k));if(!C||!Oo(C))return null;const w=C.getColorOption()?.bgcolor??null;return r.find(k=>k.value.dark===w||k.value.light===w)??i},"getCurrentColor"),getCurrentShape:n(()=>{const b=Array.from(o.selectedItems).filter(w=>w instanceof vt);if(b.length===0)return null;const h=b[0].shape??It.ROUND;return u.find(w=>w.value===h)??u[0]},"getCurrentShape"),isLightTheme:l}}n(fs,"useNodeCustomization");function Lg(){const{t:e}=fe(),o=ve(),t=We(),s=ie(),l=ps(),{shapeOptions:a,colorOptions:i,isLightTheme:r}=fs();return{getFitGroupToNodesOption:n(f=>({label:"Fit Group To Nodes",icon:"icon-[lucide--move-diagonal-2]",action:n(()=>{try{f.recomputeInsideNodes()}catch(C){console.warn("Failed to recompute group nodes:",C);return}const b=s.get("Comfy.GroupSelectedNodes.Padding");f.resizeTo(f.children,b),f.graph?.change(),o.canvas?.setDirty(!0,!0),t.activeWorkflow?.changeTracker?.checkState()},"action")}),"getFitGroupToNodesOption"),getGroupShapeOptions:n((f,b)=>({label:e("contextMenu.Shape"),icon:"icon-[lucide--box]",hasSubmenu:!0,submenu:a.map(C=>({label:C.localizedName,action:n(()=>{(f.nodes||[]).forEach(w=>w.shape=C.value),l.refreshCanvas(),b()},"action")}))}),"getGroupShapeOptions"),getGroupColorOptions:n((f,b)=>({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(()=>{f.color=r.value?C.value.light:C.value.dark,l.refreshCanvas(),b()},"action")}))}),"getGroupColorOptions"),getGroupModeOptions:n((f,b)=>{const C=[];try{f.recomputeInsideNodes()}catch(I){return console.warn("Failed to recompute group nodes for mode options:",I),C}const h=f.nodes||[];if(!h.length)return C;let w=!0;for(let I=1;I<h.length;I++)if(h[I].mode!==h[0].mode){w=!1;break}const k=n((I,x)=>({label:e(`selectionToolbox.${I}`),icon:x===Re.BYPASS?"icon-[lucide--ban]":x===Re.NEVER?"icon-[lucide--zap-off]":"icon-[lucide--play]",action:n(()=>{h.forEach(_=>{_.mode=x}),o.canvas?.setDirty(!0,!0),f.graph?.change(),t.activeWorkflow?.changeTracker?.checkState(),b()},"action")}),"createModeAction");if(w)switch(h[0].mode){case Re.ALWAYS:C.push(k("Set Group Nodes to Never",Re.NEVER)),C.push(k("Bypass Group Nodes",Re.BYPASS));break;case Re.NEVER:C.push(k("Set Group Nodes to Always",Re.ALWAYS)),C.push(k("Bypass Group Nodes",Re.BYPASS));break;case Re.BYPASS:C.push(k("Set Group Nodes to Always",Re.ALWAYS)),C.push(k("Set Group Nodes to Never",Re.NEVER));break;default:C.push(k("Set Group Nodes to Always",Re.ALWAYS)),C.push(k("Set Group Nodes to Never",Re.NEVER)),C.push(k("Bypass Group Nodes",Re.BYPASS));break}else C.push(k("Set Group Nodes to Always",Re.ALWAYS)),C.push(k("Set Group Nodes to Never",Re.NEVER)),C.push(k("Bypass Group Nodes",Re.BYPASS));return C},"getGroupModeOptions")}}n(Lg,"useGroupMenuOptions");function Eg(){const{t:e}=fe(),o=n(()=>{_e().execute("Comfy.MaskEditor.OpenMaskEditor")},"openMaskEditor"),t=n(i=>{if(!i?.imgs?.length)return;const r=i.imgs[i.imageIndex??0];if(!r)return;const u=new URL(r.src);u.searchParams.delete("preview"),window.open(u.toString(),"_blank")},"openImage"),s=n(async i=>{if(!i?.imgs?.length)return;const r=i.imgs[i.imageIndex??0];if(!r)return;const u=document.createElement("canvas"),p=u.getContext("2d");if(p){u.width=r.naturalWidth,u.height=r.naturalHeight,p.drawImage(r,0,0);try{const g=await new Promise(v=>{u.toBlob(v,"image/png")});if(!g){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":g})])}catch(g){console.error("Failed to copy image to clipboard:",g)}}},"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"),os(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(Eg,"useImageMenuOptions");function Vg(){const{getSelectedNodes:e,toggleSelectedNodesMode:o}=es(),t=_e(),s=We();return{adjustNodeSize:n(()=>{e().forEach(g=>{const v=g.computeSize();g.setSize([v[0],v[1]])}),Y.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"adjustNodeSize"),toggleNodeCollapse:n(()=>{e().forEach(g=>{g.collapse()}),Y.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"toggleNodeCollapse"),toggleNodePin:n(()=>{e().forEach(g=>{g.pin(!g.pinned)}),Y.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"toggleNodePin"),toggleNodeBypass:n(()=>{o(Re.BYPASS),Y.canvas.setDirty(!0,!0)},"toggleNodeBypass"),runBranch:n(async()=>{const p=e();Ha(p).length!==0&&await t.execute("Comfy.QueueSelectedOutputNodes")},"runBranch")}}n(Vg,"useSelectedNodeActions");function Og(){const{t:e}=fe(),{shapeOptions:o,applyShape:t,applyColor:s,colorOptions:l,isLightTheme:a}=fs(),{adjustNodeSize:i,toggleNodeCollapse:r,toggleNodePin:u,toggleNodeBypass:p,runBranch:g}=Vg(),v=y(()=>o.map(x=>({label:x.localizedName,action:n(()=>t(x),"action")}))),f=y(()=>l.map(x=>({label:x.localizedName,color:a.value?x.value.light:x.value.dark,action:n(()=>s(x.name==="noColor"?null:x),"action")})));return{getNodeInfoOption:n(x=>({label:e("contextMenu.Node Info"),icon:"icon-[lucide--info]",action:x}),"getNodeInfoOption"),getAdjustSizeOption:n(()=>({label:e("contextMenu.Adjust Size"),icon:"icon-[lucide--move-diagonal-2]",action:i}),"getAdjustSizeOption"),getNodeVisualOptions:n((x,_)=>[{label:x.collapsed?e("contextMenu.Expand Node"):e("contextMenu.Minimize Node"),icon:x.collapsed?"icon-[lucide--maximize-2]":"icon-[lucide--minimize-2]",action:n(()=>{r(),_()},"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:f.value,isColorPicker:!0,action:n(()=>{},"action")}],"getNodeVisualOptions"),getPinOption:n((x,_)=>({label:x.pinned?e("contextMenu.Unpin"):e("contextMenu.Pin"),icon:x.pinned?"icon-[lucide--pin-off]":"icon-[lucide--pin]",action:n(()=>{u(),_()},"action")}),"getPinOption"),getBypassOption:n((x,_)=>({label:x.bypassed?e("contextMenu.Remove Bypass"):e("contextMenu.Bypass"),icon:"icon-[lucide--redo-dot]",shortcut:"Ctrl+B",action:n(()=>{p(),_()},"action")}),"getBypassOption"),getRunBranchOption:n(()=>({label:e("contextMenu.Run Branch"),icon:"icon-[lucide--play]",action:g}),"getRunBranchOption"),colorSubmenu:f}}n(Og,"useNodeMenuOptions");function ml(){const e=ie(),o=sn(),{hasMultipleSelection:t}=Ut(),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 Rg(){const{t:e}=fe(),o=ve(),t=ps(),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(g=>so(g));if(u.length===0)return;const p=Ui(u,r.value);o.canvas?.repositionNodesVueMode(p),t.refreshCanvas()},"applyAlign"),applyDistribute:n(r=>{const u=Array.from(o.selectedItems).filter(g=>so(g));if(u.length<2)return;const p=Fi(u,r.value);o.canvas?.repositionNodesVueMode(p),t.refreshCanvas()},"applyDistribute")}}n(Rg,"useNodeArrangement");function Wg(){const e=ve(),o=Mt(),t=yt(),s=sn(),l=We();return{copySelection:n(()=>{const g=Y.canvas;if(!g.selectedItems||g.selectedItems.size===0){o.add({severity:"warn",summary:ce("g.nothingToCopy"),detail:ce("g.selectItemsToCopy"),life:3e3});return}g.copyToClipboard(),o.add({severity:"success",summary:ce("g.copied"),detail:ce("g.itemsCopiedToClipboard"),life:2e3})},"copySelection"),pasteSelection:n(()=>{Y.canvas.pasteFromClipboard({connectInputs:!1}),l.activeWorkflow?.changeTracker?.checkState()},"pasteSelection"),duplicateSelection:n(()=>{const g=Y.canvas;if(!g.selectedItems||g.selectedItems.size===0){o.add({severity:"warn",summary:ce("g.nothingToDuplicate"),detail:ce("g.selectItemsToDuplicate"),life:3e3});return}g.copyToClipboard(),g.selectedItems.clear(),e.updateSelectedItems(),g.pasteFromClipboard({connectInputs:!1}),l.activeWorkflow?.changeTracker?.checkState()},"duplicateSelection"),deleteSelection:n(()=>{const g=Y.canvas;if(!g.selectedItems||g.selectedItems.size===0){o.add({severity:"warn",summary:ce("g.nothingToDelete"),detail:ce("g.selectItemsToDelete"),life:3e3});return}g.deleteSelected(),g.setDirty(!0,!0),l.activeWorkflow?.changeTracker?.checkState()},"deleteSelection"),renameSelection:n(async()=>{const g=Array.from(e.selectedItems);if(g.length===1){const v=g[0];if(v instanceof vt){s.titleEditorTarget=v;return}const f="title"in v?v.title:"",b=await t.prompt({title:ce("g.rename"),message:ce("g.enterNewName"),defaultValue:f});if(b&&b!==f&&"title"in v){const C=v;C.title=b,Y.canvas.setDirty(!0,!0),l.activeWorkflow?.changeTracker?.checkState()}return}if(g.length>1){const v=await t.prompt({title:ce("g.batchRename"),message:ce("g.enterBaseName"),defaultValue:"Item"});v&&(g.forEach((f,b)=>{if("title"in f){const C=f;C.title=`${v} ${b+1}`}}),Y.canvas.setDirty(!0,!0),l.activeWorkflow?.changeTracker?.checkState());return}o.add({severity:"warn",summary:ce("g.nothingToRename"),detail:ce("g.selectItemsToRename"),life:3e3})},"renameSelection")}}n(Wg,"useSelectionOperations");function zg(){const{t:e}=fe(),{copySelection:o,duplicateSelection:t,deleteSelection:s,renameSelection:l}=Wg(),{alignOptions:a,distributeOptions:i,applyAlign:r,applyDistribute:u}=Rg(),{convertToSubgraph:p,unpackSubgraph:g,addSubgraphToLibrary:v}=ja(),{frameNodes:f}=ml(),b=y(()=>a.map(_=>({label:_.localizedName,icon:_.icon,action:n(()=>r(_),"action")}))),C=y(()=>i.map(_=>({label:_.localizedName,icon:_.icon,action:n(()=>u(_),"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:_,hasMultipleSelection:S})=>{const T={label:e("contextMenu.Convert to Subgraph"),icon:"icon-[lucide--shrink]",action:p,badge:Pn.NEW},N=[];return(!_||S)&&N.push(T),_&&N.push({label:e("contextMenu.Add Subgraph to Library"),icon:"icon-[lucide--folder-plus]",action:v},{label:e("contextMenu.Unpack Subgraph"),icon:"icon-[lucide--expand]",action:g}),N},"getSubgraphOptions"),getMultipleNodesOptions:n(()=>{const _=n(()=>{_e().execute("Comfy.GroupNode.ConvertSelectedNodesToGroupNode")},"convertToGroupNodes");return[{label:e("contextMenu.Convert to Group Node"),icon:"icon-[lucide--group]",action:_,badge:Pn.DEPRECATED},{label:e("g.frameNodes"),icon:"icon-[lucide--frame]",action:f}]},"getMultipleNodesOptions"),getDeleteOption:n(()=>({label:e("contextMenu.Delete"),icon:"icon-[lucide--trash-2]",shortcut:"Delete",action:s}),"getDeleteOption"),getAlignmentOptions:n(()=>[{label:e("contextMenu.Align Selected To"),icon:"icon-[lucide--align-start-horizontal]",hasSubmenu:!0,submenu:b.value,action:n(()=>{},"action")},{label:e("contextMenu.Distribute Nodes"),icon:"icon-[lucide--align-center-horizontal]",hasSubmenu:!0,submenu:C.value,action:n(()=>{},"action")}],"getAlignmentOptions"),alignSubmenu:b,distributeSubmenu:C}}n(zg,"useSelectionMenuOptions");var Pn=(e=>(e.NEW="new",e.DEPRECATED="deprecated",e))(Pn||{});let xo=null;function Bg(e){xo?.toggle&&xo.toggle(e)}n(Bg,"toggleNodeOptions");function Fg(e){xo?.show&&xo.show(e)}n(Fg,"showNodeOptions");function Dn(e){xo=e}n(Dn,"registerNodeOptionsInstance");function Ug(e){return e.map(o=>o.type==="divider"||o.type==="category"?o:{...o,source:"vue"})}n(Ug,"markAsVueOptions");function Gg(){const{selectedItems:e,selectedNodes:o,nodeDef:t,showNodeHelp:s,hasSubgraphs:l,hasImageNode:a,hasOutputNodesSelected:i,hasMultipleSelection:r,computeSelectionFlags:u}=Ut(),p=ve(),{getImageMenuOptions:g}=Eg(),{getNodeInfoOption:v,getNodeVisualOptions:f,getPinOption:b,getBypassOption:C,getRunBranchOption:h}=Og(),{getFitGroupToNodesOption:w,getGroupColorOptions:k,getGroupModeOptions:I}=Lg(),{getBasicSelectionOptions:x,getSubgraphOptions:_,getMultipleNodesOptions:S}=zg(),T=l,N=r,M=L(0),D=n(()=>{M.value++},"bump"),B=y(()=>{M.value;const W=u(),H=e.value.filter(ts),U=H.length===1&&o.value.length===0?H[0]:null,z=T.value,F=[];if(o.value.length===1&&!U&&p.canvas)try{const X=o.value[0],ue=p.canvas.getNodeMenuOptions(X);F.push(...Pg(ue,X,!1))}catch(X){console.error("Error getting LiteGraph menu items:",X)}const G=[],q=x();if(G.push(...q),G.push({type:"divider"}),i.value){const X=h();G.push(X)}if(!U){const X=b(W,D),ue=C(W,D);G.push(X),G.push(ue)}if(U){const X=I(U,D);G.push(...X)}if(G.push({type:"divider"}),G.push(..._({hasSubgraphs:z,hasMultipleSelection:N.value})),N.value&&G.push(...S()),U)G.push(w(U));else{const X=f(W,D);X.length>0&&G.push(X[0])}if(G.push({type:"divider"}),t.value&&G.push(v(s)),U)G.push(k(U,D));else{const X=f(W,D);X.length>1&&G.push(X[1]),X.length>2&&G.push(X[2])}G.push({type:"divider"}),a.value&&o.value.length>0&&(G.push(...g(o.value[0])),G.push({type:"divider"}));const Z=Ug(G);if(F.length>0){const X=[...F,...Z];return Mn(X)}return Mn(Z)}),j=y(()=>B.value.filter(W=>W.hasSubmenu&&W.submenu));return{menuOptions:B,menuOptionsWithSubmenu:j,bump:D,hasSubgraphs:T,registerNodeOptionsInstance:Dn}}n(Gg,"useMoreOptionsMenu");const Hg=["title","onClick"],jg={key:0,class:"icon-[lucide--check] size-4 flex-shrink-0"},qg={key:1,class:"w-4 flex-shrink-0"},Kg=K({__name:"ColorPickerMenu",props:{option:{}},emits:["submenu-click"],setup(e,{expose:o,emit:t}){const s=e,l=t,{getCurrentShape:a}=fs(),i=L();o({toggle:n((v,f)=>{i.value?.toggle(v,f)},"toggle")});const u=n(v=>{v.disabled||(l("submenu-click",v),i.value?.hide())},"handleSubmenuClick"),p=n(v=>{if(v.color)return!1;const f=a();return f?f.localizedName===v.label:!1},"isShapeSelected"),g=y(()=>s.option.submenu&&s.option.submenu.length>0&&s.option.submenu.every(v=>v.color&&!v.icon));return(v,f)=>(d(),R(m(et),{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:Q(g.value?"flex flex-col gap-1 p-2":"flex flex-col p-2 min-w-40")},[(d(!0),$(oe,null,be(v.option.submenu,b=>(d(),$("div",{key:b.label,class:Q(m(ne)("hover:bg-secondary-background-hover rounded cursor-pointer",g.value?"w-7 h-7 flex items-center justify-center":"flex items-center gap-2 px-3 py-1.5 text-sm",b.disabled?"cursor-not-allowed pointer-events-none text-node-icon-disabled":"hover:bg-secondary-background-hover")),title:b.label,onClick:n(C=>u(b),"onClick")},[b.color?(d(),$("div",{key:0,class:"size-5 rounded-full border border-border-default",style:ye({backgroundColor:b.color})},null,4)):b.color?E("",!0):(d(),$(oe,{key:1},[p(b)?(d(),$("i",jg)):(d(),$("div",qg)),c("span",null,V(b.label),1)],64))],10,Hg))),128))],2)]),_:1},512))}}),Qg=["onClick"],Yg={class:"flex-1"},Jg={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"},Xg={key:2,class:"icon-[lucide--chevron-right] size-4 opacity-60"},Zg=K({__name:"NodeContextMenu",setup(e,{expose:o}){const t=L(),s=L(),l=L(!1),{menuOptions:a,bump:i}=Gg(),r=ve(),u=L({x:0,y:0}),p=r.getCanvas(),{left:g,top:v}=Bn(p.canvas);let f=0,b=0,C=0;const h=n(()=>{if(!l.value)return;const U=t.value?.container;if(!U)return;const{scale:z,offset:F}=p.ds;if(z===f&&F[0]===b&&F[1]===C)return;f=z,b=F[0],C=F[1];const G=(u.value.x+F[0])*z+g.value,q=(u.value.y+F[1])*z+v.value;U.style.left=`${G}px`,U.style.top=`${q}px`},"updateMenuPosition"),{resume:w,pause:k}=ao(h,{immediate:!1});Ce(()=>{l.value?w():k()}),Oe(window,"touchstart",H=>{if(!l.value||!t.value)return;const U=H.target,z=t.value,F=z.container||z.$el;F&&!F.contains(U)&&N()},{passive:!0});const I=y(()=>a.value.find(H=>H.isColorPicker));function x(H){return!!H.isColorPicker}n(x,"isColorOption");function _(H){if(H.type==="divider")return{separator:!0};const U=x(H),z={label:H.label,icon:H.icon,disabled:H.disabled,shortcut:H.shortcut,isColorSubmenu:U,originalOption:H};return H.hasSubmenu&&H.submenu&&!U&&(z.items=H.submenu.map(F=>({label:F.label,icon:F.icon,disabled:F.disabled,command:n(()=>{F.action(),N()},"command")}))),!H.hasSubmenu&&H.action&&(z.command=()=>{H.action?.(),N()}),z}n(_,"convertToMenuItem");const S=y(()=>a.value.map(_));function T(H){i();const U=H.clientX-g.value,z=H.clientY-v.value,{scale:F,offset:G}=p.ds;u.value={x:U/F-G[0],y:z/F-G[1]},f=F,b=G[0],C=G[1],l.value=!0,t.value?.show(H)}n(T,"show");function N(){t.value?.hide()}n(N,"hide");function M(H){l.value?N():T(H)}n(M,"toggle"),o({toggle:M,hide:N,isOpen:l,show:T});function D(H){H.stopPropagation(),H.preventDefault();const U=Array.from(H.currentTarget.children).find(z=>z.classList.contains("icon-[lucide--chevron-right]"));s.value?.toggle(H,U)}n(D,"showColorPopover");function B(H){H.action(),N()}n(B,"handleColorSelect");function j(){l.value=!0}n(j,"onMenuShow");function W(){l.value=!1}return n(W,"onMenuHide"),ze(()=>{Dn({toggle:M,show:T,hide:N,isOpen:l})}),ht(()=>{Dn(null)}),(H,U)=>(d(),$(oe,null,[O(m(La),{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:W},{item:A(({item:z,props:F,hasSubmenu:G})=>[c("a",Pt(F.action,{class:"flex items-center gap-2 px-3 py-1.5",onClick:n(q=>z.isColorSubmenu?D(q):void 0,"onClick")}),[z.icon?(d(),$("i",{key:0,class:Q([z.icon,"size-4"])},null,2)):E("",!0),c("span",Yg,V(z.label),1),z.shortcut?(d(),$("span",Jg,V(z.shortcut),1)):E("",!0),G||z.isColorSubmenu?(d(),$("i",Xg)):E("",!0)],16,Qg)]),_:1},8,["model"]),I.value?(d(),R(Kg,{ref_key:"colorPickerMenu",ref:s,key:"color-picker-menu",option:I.value,onSubmenuClick:B},null,8,["option"])):E("",!0)],64))}}),ev=K({__name:"FrameNodes",setup(e){const{frameNodes:o}=ml();return(t,s)=>{const l=Ie("tooltip");return de((d(),R(J,{variant:"muted-textonly","aria-label":t.$t("g.frameNodes"),onClick:m(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}]])}}}),tv=K({__name:"NodeOptionsButton",setup(e){const o=n(t=>{Bg(t)},"handleClick");return(t,s)=>{const l=Ie("tooltip");return de((d(),R(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}]])}}}),ov={},nv={class:"h-6 w-px self-center bg-border-default"};function sv(e,o){return d(),$("div",nv)}n(sv,"_sfc_render$1");const ta=Le(ov,[["render",sv]]),av=K({__name:"SelectionToolbox",setup(e){const o=_e(),t=ve(),s=Gi(),l=uo(),a=L(),{visible:i}=xg(a),r=y(()=>{const H=new Set(t.selectedItems.map(U=>s.invokeExtensions("getSelectionToolboxCommands",U).flat()).flat());return Array.from(H).map(U=>o.getCommand(U)).filter(U=>U!==void 0)}),{hasAnySelection:u,hasMultipleSelection:p,isSingleNode:g,isSingleSubgraph:v,isSingleImageNode:f,hasAny3DNodeSelected:b,hasOutputNodesSelected:C,nodeDef:h}=Ut(),w=y(()=>!!h.value),k=y(()=>u.value),I=y(()=>u.value),x=y(()=>p.value),_=y(()=>v.value),S=y(()=>g.value||v.value||p.value),T=y(()=>b.value),N=y(()=>f.value),M=y(()=>u.value),D=y(()=>u.value),B=y(()=>C.value),j=y(()=>k.value||I.value||x.value||_.value),W=y(()=>S.value);return(H,U)=>(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(Jo,{name:"slide-up"},{default:A(()=>[m(i)?(d(),R(m(Un),{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:m(l).forwardEventToCanvas},{default:A(()=>[M.value?(d(),R(cg,{key:0})):E("",!0),w.value&&j.value?(d(),R(ta,{key:1})):E("",!0),w.value?(d(),R(fg,{key:2})):E("",!0),k.value?(d(),R(ig,{key:3})):E("",!0),x.value?(d(),R(ev,{key:4})):E("",!0),I.value?(d(),R(ug,{key:5})):E("",!0),_.value?(d(),R(rg,{key:6})):E("",!0),_.value?(d(),R(bg,{key:7})):E("",!0),N.value?(d(),R(gg,{key:8})):E("",!0),j.value&&W.value?(d(),R(ta,{key:9})):E("",!0),S.value?(d(),R(tg,{key:10})):E("",!0),D.value?(d(),R(yg,{key:11})):E("",!0),T.value?(d(),R(mg,{key:12})):E("",!0),(d(!0),$(oe,null,be(r.value,z=>(d(),R(pg,{key:z.id,command:z},null,8,["command"]))),128)),B.value?(d(),R(dg,{key:13})):E("",!0),O(tv)]),_:1},8,["onWheel"])):E("",!0)]),_:1})],512),O(Zg)],64))}}),lv=Le(av,[["__scopeId","data-v-c6489a20"]]),iv=K({__name:"TitleEditor",setup(e){const o=ie(),t=L(!1),s=L(""),{style:l,updatePosition:a}=pl(),i=L({}),r=y(()=>({...l.value,...i.value})),u=sn(),p=ve(),g=L(!0),v=n(b=>{if(u.titleEditorTarget&&b?.trim()){const C=b.trim();u.titleEditorTarget.title=C;const h=u.titleEditorTarget;h instanceof vt&&h.isSubgraphNode?.()&&(h.subgraph.name=C),Y.canvas.setDirty(!0,!0)}t.value=!1,u.titleEditorTarget=null,p.canvas.allow_dragcanvas=g.value},"onEdit");return se(()=>u.titleEditorTarget,b=>{if(b===null)return;s.value=b.title,t.value=!0;const C=p.canvas;g.value=C.allow_dragcanvas,C.allow_dragcanvas=!1;const h=C.ds.scale;if(b instanceof Ot){const w=b;a({pos:w.pos,size:[w.size[0],w.titleHeight]}),i.value={fontSize:`${w.font_size*h}px`}}else if(b instanceof vt){const w=b,[k,I]=w.getBounding();a({pos:[k,I],size:[w.width,ge.NODE_TITLE_HEIGHT]}),i.value={fontSize:`${12*h}px`}}}),Oe(document,"litegraph:canvas",n(b=>{if(b.detail.subType==="group-double-click"){if(!o.get("Comfy.Group.DoubleClickTitleToEdit"))return;const C=b.detail.group,[h,w]=C.pos;b.detail.originalEvent.canvasY-w<=C.titleHeight&&(u.titleEditorTarget=C)}else if(b.detail.subType==="node-double-click"){if(!o.get("Comfy.Node.DoubleClickTitleToEdit"))return;const C=b.detail.node,[h,w]=C.pos;b.detail.originalEvent.canvasY-w<=0&&(u.titleEditorTarget=C)}},"canvasEventHandler")),(b,C)=>t.value?(d(),$("div",{key:0,class:"group-title-editor node-title-editor",style:ye(r.value)},[O(Hn,{"is-editing":t.value,"model-value":s.value,onEdit:v},null,8,["is-editing","model-value"])],4)):E("",!0)}}),rv=Le(iv,[["__scopeId","data-v-aceb018c"]]),uv={key:0,class:"p-3"},cv=K({__name:"TabInfo",props:{nodes:{}},setup(e){const o=y(()=>e.nodes[0]),t=St(),s=Hi(),l=y(()=>t.fromLGraphNode(o.value));return xt(l,a=>{s.openHelp(a)},{immediate:!0}),(a,i)=>l.value?(d(),$("div",uv,[O(ji,{node:l.value},null,8,["node"])])):E("",!0)}}),dv=["placeholder"],gl=K({__name:"SidePanelSearch",props:Xo({searcher:{type:Function,default:n(async()=>{},"default")},updateKey:{}},{modelValue:{default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const o=wo(e,"modelValue"),t=L(!1),s=ka(o,100,{maxWait:100});se(o,a=>{t.value=a!==s.value});const l=Vl(()=>je(e.updateKey));return se([s,l],(a,i,r)=>{let u=!1,p;r(()=>{u=!0,p?.()}),e.searcher(s.value,g=>p=g).catch(g=>{console.error("[SidePanelSearch] searcher failed",g)}).finally(()=>{u||(t.value=!1)})},{immediate:!0}),(a,i)=>(d(),$("label",{class:Q(m(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:Q(m(ne)("size-4 text-muted-foreground",t.value?"icon-[lucide--loader-circle] animate-spin":"icon-[lucide--search]"))},null,2),de(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,dv),[[Ol,o.value]])],2))}}),pv=["fixed","increment","decrement","randomize"];function fv(e){return pv.includes(e)}n(fv,"isControlOption");function oa(e){return fv(e)?e:"randomize"}n(oa,"normalizeControlOption");function mv(e){e.vueTrack||xa((o,t)=>(e.callback=no(e.callback,t),e.vueTrack=o,{get(){},set(){}}))}n(mv,"widgetWithVueTrack");function vl(e){return mv(e),e.vueTrack(),e.value}n(vl,"useReactiveWidgetValue");function gv(e){const o=e.linkedWidgets?.find(t=>t.name=="control_after_generate");if(o)return{value:oa(o.value),update:n(t=>o.value=oa(t),"update")}}n(gv,"getControlWidget");function vv(e,o){return!e.isSubgraphNode()||!qi(o)?void 0:e.subgraph.getNodeById(o._overlay.nodeId)?.type}n(vv,"getNodeType");const hv=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 p=hv(u);s.value=p??void 0,s.callback?.(p,Y.canvas,e),e.widgets?.forEach(g=>g.triggerDraw?.())},"callback");return{name:s.name,type:s.type,value:vl(s),borderStyle:i,callback:r,controlWidget:gv(s),hasLayoutSize:typeof s.computeLayoutSize=="function",isDOMWidget:ho(s),label:s.label,nodeType:vv(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 yv(e){return e==null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="object"}n(yv,"isValidWidgetValue");function bv(e){const{createNode:o,deleteNode:t,setSource:s}=an(),l=Sa(new Map),a=new Map,i=n(h=>{const w=a.get(h),k=l.get(h);if(!w||!k)return;const I=new Map;w.inputs?.forEach((x,_)=>{x?.widget?.name&&I.set(x.widget.name,{index:_,linked:x.link!=null})});for(const x of k.widgets??[]){const _=I.get(x.name);_&&(x.slotMetadata=_)}},"refreshNodeSlots");function r(h){const w=h.graph&&"id"in h.graph&&h.graph!==h.graph.rootGraph?String(h.graph.id):null,k=new Map,I=Ss(h.widgets??[]);Object.defineProperty(h,"widgets",{get(){return I},set(M){I.splice(0,I.length,...M)}});const x=Ss(h.inputs??[]);Object.defineProperty(h,"inputs",{get(){return x},set(M){x.splice(0,x.length,...M)}});const _=Rl(()=>(h.inputs?.forEach((M,D)=>{M?.widget?.name&&k.set(M.widget.name,{index:D,linked:M.link!=null})}),h.widgets?.map(hl(h,k))??[])),S=h.type||h.constructor?.comfyClass||h.constructor?.title||h.constructor?.name||"Unknown",T=h.constructor?.nodeData?.api_node??!1,N=h.badges;return{id:String(h.id),title:typeof h.title=="string"?h.title:"",type:S,mode:h.mode||0,titleMode:h.title_mode,selected:h.selected||!1,executing:!1,subgraphId:w,apiNode:T,badges:N,hasErrors:!!h.has_errors,widgets:_,inputs:x,outputs:h.outputs?[...h.outputs]:void 0,flags:h.flags?{...h.flags}:void 0,color:h.color||void 0,bgcolor:h.bgcolor||void 0,resizable:h.resizable,shape:h.shape}}n(r,"extractVueNodeData");const u=n(h=>a.get(h),"getNode"),p=n(()=>{if(!e?._nodes)return;const h=new Set(e._nodes.map(w=>String(w.id)));for(const w of Array.from(l.keys()))h.has(w)||(a.delete(w),l.delete(w));e._nodes.forEach(w=>{const k=String(w.id);a.set(k,w),l.set(k,r(w))})},"syncWithGraph"),g=n((h,w)=>{const k=String(h.id);a.set(k,h),l.set(k,r(h));const I=n(()=>{const x={x:h.pos[0],y:h.pos[1]},_={width:h.size[0],height:h.size[1]};s(Co.Canvas),o(k,{position:x,size:_,zIndex:h.order||0,visible:!0})},"initializeVueNodeLayout");window.app?.configuringGraph?h.onAfterGraphConfigured=no(h.onAfterGraphConfigured,()=>{l.set(k,r(h)),I()}):I(),w&&w(h)},"handleNodeAdded"),v=n((h,w)=>{const k=String(h.id);s(Co.Canvas),t(k),a.delete(k),l.delete(k),w&&w(h)},"handleNodeRemoved"),f=n((h,w,k)=>()=>{e.onNodeAdded=h||void 0,e.onNodeRemoved=w||void 0,e.onTrigger=k||void 0,a.clear(),l.clear()},"createCleanupFunction"),C=n(()=>{const h=e.onNodeAdded,w=e.onNodeRemoved,k=e.onTrigger;e.onNodeAdded=x=>{g(x,h)},e.onNodeRemoved=x=>{v(x,w)};const I={"node:property:changed":n(x=>{const _=String(x.nodeId),S=l.get(_);if(S)switch(x.property){case"title":l.set(_,{...S,title:String(x.newValue)});break;case"flags.collapsed":l.set(_,{...S,flags:{...S.flags,collapsed:!!x.newValue}});break;case"flags.pinned":l.set(_,{...S,flags:{...S.flags,pinned:!!x.newValue}});break;case"mode":l.set(_,{...S,mode:typeof x.newValue=="number"?x.newValue:0});break;case"color":l.set(_,{...S,color:typeof x.newValue=="string"?x.newValue:void 0});break;case"bgcolor":l.set(_,{...S,bgcolor:typeof x.newValue=="string"?x.newValue:void 0});break;case"shape":l.set(_,{...S,shape:typeof x.newValue=="number"?x.newValue:void 0})}},"node:property:changed"),"node:slot-errors:changed":n(x=>{i(String(x.nodeId))},"node:slot-errors:changed"),"node:slot-links:changed":n(x=>{x.slotType===Ki.INPUT&&i(String(x.nodeId))},"node:slot-links:changed")};return e.onTrigger=x=>{switch(x.type){case"node:property:changed":I["node:property:changed"](x);break;case"node:slot-errors:changed":I["node:slot-errors:changed"](x);break;case"node:slot-links:changed":I["node:slot-links:changed"](x);break}k?.(x)},p(),f(h||void 0,w||void 0,k||void 0)},"setupEventListeners")();return e._nodes&&e._nodes.length>0&&e._nodes.forEach(h=>{e.onNodeAdded&&e.onNodeAdded(h)}),{vueNodeData:l,getNode:u,cleanup:C}}n(bv,"useGraphNodeManager");const wv={class:"flex flex-col bg-interface-panel-surface"},Cv={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl bg-inherit"},kv=["disabled"],xv={class:"text-sm font-semibold line-clamp-2"},Sv={key:0,class:"pb-4"},_v=K({__name:"PropertiesAccordionItem",props:Xo({isEmpty:{type:Boolean}},{collapse:{type:Boolean,default:!1},collapseModifiers:{}}),emits:["update:collapse"],setup(e){const o=wo(e,"collapse");return(t,s)=>{const l=Ie("tooltip");return d(),$("div",wv,[c("div",Cv,[de((d(),$("button",{type:"button",class:Q(m(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",xv,[he(t.$slots,"label")]),t.isEmpty?E("",!0):(d(),$("i",{key:0,class:Q(m(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,kv)),[[l,t.isEmpty?{value:t.$t("rightSidePanel.inputsNoneTooltip"),showDelay:1e3}:void 0]])]),!o.value&&!t.isEmpty?(d(),$("div",Sv,[he(t.$slots,"default")])):E("",!0)])}}}),Tv={key:0,class:"space-y-4 rounded-lg bg-interface-surface px-4"},$v={class:"min-h-8"},Nv={key:0,class:"text-sm leading-8 p-0 m-0 line-clamp-1"},Iv=K({__name:"SectionWidgets",props:{label:{},widgets:{}},setup(e){en("hideLayoutField",!0);const o=ve(),{t}=fe();function s(r){return Yi(r.type,r.name)||Ji}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(),R(_v,{"is-empty":a.value},{label:A(()=>[he(r.$slots,"label",{},()=>[$e(V(i.value),1)])]),default:A(()=>[a.value?E("",!0):(d(),$("div",Tv,[(d(!0),$(oe,null,be(r.widgets,({widget:p,node:g},v)=>(d(),$("div",{key:`widget-${v}-${p.name}`,class:"widget-item gap-1.5 col-span-full grid grid-cols-subgrid"},[c("div",$v,[p.name?(d(),$("p",Nv,V(p.label||p.name),1)):E("",!0)]),(d(),R(oo(s(p)),{widget:p,"model-value":m(vl)(p),"node-id":String(g.id),"node-type":g.type,class:Q(m(ne)("col-span-1",m(Qi)(p.type)&&"min-h-36")),"onUpdate:modelValue":n(f=>l(p,f),"onUpdate:modelValue")},null,8,["widget","model-value","node-id","node-type","class","onUpdate:modelValue"]))]))),128))]))]),_:3},8,["is-empty"]))}}),Mv={class:"px-4 pb-4 flex gap-2 border-b border-interface-stroke"},Pv=K({__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=Ze([]);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(),p=r.name.toLowerCase(),g=r.type.toLowerCase(),v=r.value?.toString().toLowerCase();return a.every(f=>p.includes(f)||u?.includes(f)||g?.includes(f)||v?.includes(f))})})).filter(i=>i.widgets.length>0)}return n(s,"searcher"),(l,a)=>(d(),$(oe,null,[c("div",Mv,[O(gl,{searcher:s,"update-key":o.value},null,8,["update-key"])]),(d(!0),$(oe,null,be(t.value,i=>(d(),R(Iv,{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))}}),Dv=["disabled","onClick"],Av=K({__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,p)=>{if(typeof u!="object")return u;const g=t.optionValue;return u[g]??u.value??u.name??u.label??p},"getOptionValue"),a=n(u=>{if(typeof u=="object"&&u!==null){const p=t.optionLabel;return u[p]??u.label??u.name??u.value??String(u)}return String(u)},"getOptionLabel"),i=n(u=>{const p=l(t.options[u],u);return String(p)===String(t.modelValue??"")},"isSelected"),r=n(u=>{if(t.disabled)return;const p=l(t.options[u],u);s("update:modelValue",p)},"handleSelect");return(u,p)=>(d(),$("div",{class:Q(m(ne)(m(cu),"p-1 inline-flex justify-center items-center gap-1"))},[(d(!0),$(oe,null,be(u.options,(g,v)=>(d(),$("button",{key:l(g,v),class:Q(m(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(f=>r(v),"onClick")},V(a(g)),11,Dv))),128))],2))}}),Lv={class:"space-y-4 p-3 text-sm text-muted-foreground"},Ev={class:"flex flex-col gap-2"},Vv={class:"flex flex-col gap-2"},Ov={class:"bg-secondary-background border-none rounded-lg p-1 grid grid-cols-5 gap-1 justify-items-center"},Rv=["onClick"],Wv=["data-testid"],zv={class:"flex items-center justify-between"},Bv=K({__name:"TabSettings",props:{nodes:{}},setup(e){const o=e,t=Ze([]);Ce(()=>{o.nodes?t.value=o.nodes:t.value=[]});const{t:s}=fe(),l=ve(),a=dt(),i=y(()=>a.completedActivePalette.light_theme),r=y({get(){let C=null;const h=t.value;return h.length===0?null:(h.length>1?(C=h[0].mode,h.every(w=>w.mode===C)||(C=null)):C=h[0].mode,C)},set(C){t.value.forEach(h=>{h.mode=C}),vo(t),l.canvas?.setDirty(!0,!0)}}),u=y({get(){return t.value.some(C=>C.pinned)},set(C){t.value.forEach(h=>h.pin(C)),vo(t),l.canvas?.setDirty(!0,!0)}});function p(C){return{dark:Vt(C,{lightness:.3}),light:Vt(C,{lightness:.4}),ringDark:Vt(C,{lightness:.5}),ringLight:Vt(C,{lightness:.1})}}n(p,"getColorValue");const g={name:"noColor",localizedName:n(()=>s("color.noColor"),"localizedName"),value:p(ge.NODE_DEFAULT_BGCOLOR)},v=Object.entries(Ye.node_colors),f=[g,...v.map(([C,h])=>({name:C,localizedName:n(()=>s(`color.${C}`),"localizedName"),value:p(h.bgcolor)}))],b=y({get(){if(t.value.length===0)return null;const C=t.value.map(w=>w.getColorOption());let h=C[0];return C.every(w=>w===h)||(h=!1),h===!1?null:h==null||!h.bgcolor&&!h.color?g.name:v.find(([w,k])=>k.bgcolor===h.bgcolor&&k.color===h.color)?.[0]??null},set(C){if(C===null)return;const h=C===g.name?null:Ye.node_colors[C];for(const w of t.value)w.setColorOption(h);vo(t),l.canvas?.setDirty(!0,!0)}});return(C,h)=>{const w=Ie("tooltip");return d(),$("div",Lv,[c("div",Ev,[c("span",null,V(m(s)("rightSidePanel.nodeState")),1),O(Av,{modelValue:r.value,"onUpdate:modelValue":h[0]||(h[0]=k=>r.value=k),class:"w-full",options:[{label:m(s)("rightSidePanel.normal"),value:m(Re).ALWAYS},{label:m(s)("rightSidePanel.bypass"),value:m(Re).BYPASS},{label:m(s)("rightSidePanel.mute"),value:m(Re).NEVER}]},null,8,["modelValue","options"])]),c("div",Vv,[c("span",null,V(m(s)("rightSidePanel.color")),1),c("div",Ov,[(d(),$(oe,null,be(f,k=>c("button",{key:k.name,class:Q(m(ne)("size-8 rounded-lg bg-transparent border-0 outline-0 ring-0 text-left flex justify-center items-center cursor-pointer",k.name===b.value?"bg-interface-menu-component-surface-selected":"hover:bg-interface-menu-component-surface-selected")),onClick:n(I=>b.value=k.name,"onClick")},[de(c("div",{class:Q(m(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===b.value?i.value?k.value.ringLight:k.value.ringDark:void 0}),"data-testid":k.name},null,14,Wv),[[w,k.localizedName(),void 0,{top:!0}]])],10,Rv)),64))])]),c("div",zv,[c("span",null,V(m(s)("rightSidePanel.pinned")),1),O(m(Ea),{modelValue:u.value,"onUpdate:modelValue":h[1]||(h[1]=k=>u.value=k)},null,8,["modelValue"])])])}}}),Fv={class:"pointer-events-none flex-1"},Uv={class:"text-xs text-text-secondary line-clamp-1"},Gv={class:"text-sm line-clamp-1 leading-8"},Hv={key:0,class:"size-4 pointer-events-none icon-[lucide--grip-vertical]"},na=K({__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:Q(m(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",Fv,[c("div",Uv,V(s.nodeTitle),1),c("div",Gv,V(s.widgetName),1)]),O(J,{variant:"muted-textonly",size:"sm",disabled:s.isPhysical,onClick:l[0]||(l[0]=ke(a=>s.$emit("toggleVisibility"),["stop"]))},{default:A(()=>[c("i",{class:Q(t())},null,2)]),_:1},8,["disabled"]),s.isDraggable?(d(),$("div",Hv)):E("",!0)],2))}}),jv={key:0,class:"subgraph-edit-section flex h-full flex-col"},qv={class:"p-4 flex gap-2"},Kv={class:"flex-1"},Qv={key:0,class:"flex flex-col border-t border-interface-stroke"},Yv={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl min-h-12 px-4"},Jv={class:"text-sm font-semibold uppercase line-clamp-1"},Xv={key:1,class:"flex flex-col border-t border-interface-stroke"},Zv={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl min-h-12 px-4"},eh={class:"text-sm font-semibold uppercase line-clamp-1"},th={class:"pb-2 px-2 space-y-0.5 mt-0.5"},oh={key:2,class:"flex justify-center border-t border-interface-stroke py-4"},nh=K({__name:"SubgraphEditor",setup(e){const o=ve(),t=L(void 0),s=L(),l=L(""),a=xa((T,N)=>({get(){T();const M=r.value;return M?Xi(M.properties.proxyWidgets):[]},set(M){N();const D=r.value;if(M){if(!D){console.error("Attempted to toggle widgets with no node selected");return}D.properties.proxyWidgets=M}}}));async function i(T){l.value=T}n(i,"searcher");const r=y(()=>{const T=o.selectedItems[0];if(T instanceof Zn)return T}),u=y({get(){if(!r.value)return[];const T=r.value;function N([M,D]){if(M==="-1"){const W=T.widgets.find(H=>H.name===D);return W?[[{id:-1,title:"(Linked)",type:""},W]]:[]}const B=T.subgraph._nodes_by_id[M];if(!B?.widgets)return[];const j=B.widgets.find(W=>W.name===D);return j?[[B,j]]:[]}return n(N,"mapWidgets"),a.value.flatMap(N)},set(T){if(!r.value){console.error("Attempted to toggle widgets with no node selected");return}a.value=T.map(un)}}),p=y(()=>{const T=r.value;if(!T)return[];const{updatePreviews:N}=_o(),M=T.subgraph.nodes;for(const D of M)D.updateComputedDisabled(),N(D);return M.flatMap(h).filter(([D,B])=>!B.computedDisabled)}),g=y(()=>{if(!r.value)return[];const N=a.value;return p.value.filter(M=>!N.some(Zi(M)))}),v=y(()=>{const T=l.value.toLowerCase();return T?g.value.filter(([N,M])=>N.title.toLowerCase().includes(T)||M.name.toLowerCase().includes(T)):g.value}),f=y(()=>r.value?v.value.filter(er):[]),b=y(()=>{const T=l.value.toLowerCase();return T?u.value.filter(([N,M])=>N.title.toLowerCase().includes(T)||M.name.toLowerCase().includes(T)):u.value});function C(T){return`${T[0].id}: ${T[1].name}`}n(C,"toKey");function h(T){return T.widgets?T.widgets.map(N=>[T,N]):[]}n(h,"nodeWidgets");function w([T,N]){const M=r.value;if(!M)return[];or(T,N,[M]),vo(a)}n(w,"demote");function k([T,N]){const M=r.value;if(!M)return[];nr(T,N,[M]),vo(a)}n(k,"promote");function I(){if(!r.value)return;const N=a.value,M=v.value.map(un);N.push(...M),a.value=N}n(I,"showAll");function x(){r.value&&(a.value=a.value.filter(N=>!b.value.some(sr(N))||N[0]==="-1"))}n(x,"hideAll");function _(){if(!r.value)return;const N=a.value,M=f.value.map(un);N.push(...M),a.value=N}n(_,"showRecommended");function S(){t.value?.dispose(),!(l.value||!s.value?.children?.length)&&(t.value=new ar(s.value,".draggable-item"),t.value.applyNewItemsOrder=function(){const T=[];let N=-1;this.getAllItems().forEach((j,W)=>{if(j===this.draggableItem){N=W;return}if(!this.isItemToggled(j)){T[W]=j;return}const H=this.isItemAbove(j)?W+1:W-1;T[H]=j});for(let j=0;j<this.getAllItems().length;j++)typeof T[j]>"u"&&(T[j]=this.draggableItem);const M=T.indexOf(this.draggableItem),D=u.value,[B]=D.splice(N,1);D.splice(M,0,B),u.value=D})}return n(S,"setDraggableState"),Xt(b,()=>{S()},{debounce:100}),ze(()=>{S(),r.value&&tr(r.value)}),rt(()=>{t.value?.dispose()}),(T,N)=>r.value?(d(),$("div",jv,[c("div",qv,[O(gl,{searcher:i})]),c("div",Kv,[b.value.length?(d(),$("div",Qv,[c("div",Yv,[c("div",Jv,V(T.$t("subgraphStore.shown")),1),c("a",{class:"cursor-pointer text-right text-xs font-normal text-text-secondary hover:text-azure-600 whitespace-nowrap",onClick:ke(x,["stop"])},V(T.$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(b.value,([M,D])=>(d(),R(na,{key:C([M,D]),class:"bg-interface-panel-surface","node-title":M.title,"widget-name":D.name,"is-shown":!0,"is-draggable":!l.value,"is-physical":M.id===-1,onToggleVisibility:n(B=>w([M,D]),"onToggleVisibility")},null,8,["node-title","widget-name","is-draggable","is-physical","onToggleVisibility"]))),128))],512)])):E("",!0),v.value.length?(d(),$("div",Xv,[c("div",Zv,[c("div",eh,V(T.$t("subgraphStore.hidden")),1),c("a",{class:"cursor-pointer text-right text-xs font-normal text-text-secondary hover:text-azure-600 whitespace-nowrap",onClick:ke(I,["stop"])},V(T.$t("subgraphStore.showAll")),1)]),c("div",th,[(d(!0),$(oe,null,be(v.value,([M,D])=>(d(),R(na,{key:C([M,D]),class:"bg-interface-panel-surface","node-title":M.title,"widget-name":D.name,onToggleVisibility:n(B=>k([M,D]),"onToggleVisibility")},null,8,["node-title","widget-name","onToggleVisibility"]))),128))])])):E("",!0),f.value.length?(d(),$("div",oh,[O(J,{size:"sm",class:"rounded border-none px-3 py-0.5",onClick:ke(_,["stop"])},{default:A(()=>[$e(V(T.$t("subgraphStore.showRecommended")),1)]),_:1})])):E("",!0)])])):E("",!0)}}),sh={"data-testid":"properties-panel",class:"flex size-full flex-col bg-interface-panel-surface"},ah={class:"pt-1"},lh={class:"flex items-center justify-between pl-4 pr-3"},ih={class:"my-3.5 text-sm font-semibold line-clamp-2"},rh={class:"flex gap-2"},uh={key:0,class:"px-4 pb-2 pt-1"},ch={class:"scrollbar-thin flex-1 overflow-y-auto"},dh={key:0,class:"flex size-full p-4 items-start justify-start text-sm text-muted-foreground"},ph=K({__name:"RightSidePanel",setup(e){const o=ve(),t=lo(),s=ie(),{t:l}=fe(),{selectedItems:a}=qe(o),{activeTab:i,isEditingSubgraph:r}=qe(t),u=y(()=>s.get("Comfy.Sidebar.Location")),p=y(()=>u.value==="right"?"icon-[lucide--panel-left]":"icon-[lucide--panel-right]"),g=y(()=>a.value.length>0),v=y(()=>a.value.filter(so)),f=y(()=>C.value instanceof Zn),b=y(()=>v.value.length===1),C=y(()=>b.value?v.value[0]:null),h=y(()=>a.value.length),w=y(()=>b.value&&C.value?C.value.title||C.value.type||"Node":l("rightSidePanel.title",{count:h.value}));function k(){t.closePanel()}n(k,"closePanel");const I=y(()=>{const T=[{label:n(()=>l("rightSidePanel.parameters"),"label"),value:"parameters"},{label:n(()=>l("g.settings"),"label"),value:"settings"}];return(!g.value||b.value&&!f.value)&&T.push({label:n(()=>l("rightSidePanel.info"),"label"),value:"info"}),T});Ce(()=>{!I.value.some(T=>T.value===i.value)&&!(i.value==="subgraph"&&f.value)&&t.openPanel(I.value[0].value)});const x=L(!1);function _(T){x.value=!1;const N=T.trim();if(!N)return;const M=je(C);M&&N!==M.title&&(M.title=N,o.canvas?.setDirty(!0,!1))}n(_,"handleTitleEdit");function S(){x.value=!1}return n(S,"handleTitleCancel"),(T,N)=>(d(),$("div",sh,[c("section",ah,[c("div",lh,[c("h3",ih,[b.value?(d(),R(Hn,{key:0,"model-value":w.value,"is-editing":x.value,"input-attrs":{"data-testid":"node-title-input"},onEdit:_,onCancel:S,onDblclick:N[0]||(N[0]=M=>x.value=!0)},null,8,["model-value","is-editing"])):(d(),$(oe,{key:1},[$e(V(w.value),1)],64))]),c("div",rh,[f.value?(d(),R(J,{key:0,variant:"secondary",size:"icon",class:Q(m(ne)(m(r)&&"bg-secondary-background-selected")),onClick:N[1]||(N[1]=M=>m(t).openPanel(m(r)?"parameters":"subgraph"))},{default:A(()=>N[3]||(N[3]=[c("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["class"])):E("",!0),O(J,{variant:"secondary",size:"icon","aria-pressed":m(t).isOpen,"aria-label":m(l)("rightSidePanel.togglePanel"),onClick:k},{default:A(()=>[c("i",{class:Q(m(ne)(p.value,"size-4"))},null,2)]),_:1},8,["aria-pressed","aria-label"])])]),g.value?(d(),$("nav",uh,[O(lr,{"model-value":m(i),"onUpdate:modelValue":N[2]||(N[2]=M=>{m(t).openPanel(M)})},{default:A(()=>[(d(!0),$(oe,null,be(I.value,M=>(d(),R(ir,{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",ch,[g.value?f.value&&m(r)?(d(),R(nh,{key:1,node:C.value},null,8,["node"])):(d(),$(oe,{key:2},[m(i)==="parameters"?(d(),R(Pv,{key:0,nodes:v.value},null,8,["nodes"])):m(i)==="info"?(d(),R(cv,{key:1,nodes:v.value},null,8,["nodes"])):m(i)==="settings"?(d(),R(Bv,{key:2,nodes:v.value},null,8,["nodes"])):E("",!0)],64)):(d(),$("div",dh,V(T.$t("rightSidePanel.noSelection")),1))])]))}}),ms=Dt("searchBox",()=>{const e=ie(),{x:o,y:t}=Wl(),s=y(()=>e.get("Comfy.NodeSearchBoxImpl")==="default"),l=Ze(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}}),fh={name:"AutoCompletePlus",extends:$o,emits:["focused-option-changed"],data(){return{isComposing:!1}},mounted(){typeof $o.mounted=="function"&&$o.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}$o.methods.onKeyDown.call(this,e)}}},mh={class:"option-container flex w-full cursor-pointer items-center justify-between overflow-hidden px-2 py-0"},gh={class:"option-display-name flex flex-col font-semibold"},vh={key:0},hh=["innerHTML"],yh=["innerHTML"],bh={key:0,class:"option-category truncate text-sm font-light text-muted"},wh={class:"option-badges"},Ch=K({__name:"NodeSearchItem",props:{nodeDef:{},currentQuery:{}},setup(e){const o=ie(),t=y(()=>o.get("Comfy.NodeSearchBoxImpl.ShowCategory")),s=y(()=>o.get("Comfy.NodeSearchBoxImpl.ShowIdName")),l=y(()=>o.get("Comfy.NodeSearchBoxImpl.ShowNodeFrequency")),a=ns(),i=y(()=>a.getNodeFrequency(p.nodeDef)),r=rr(),u=y(()=>r.isBookmarked(p.nodeDef)),p=e;return(g,v)=>(d(),$("div",mh,[c("div",gh,[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:m(As)(g.nodeDef.display_name,g.currentQuery)},null,8,hh),v[1]||(v[1]=c("span",null," ",-1)),s.value?(d(),R(m(Zt),{key:1,severity:"secondary"},{default:A(()=>[c("span",{innerHTML:m(As)(g.nodeDef.name,g.currentQuery)},null,8,yh)]),_:1})):E("",!0)]),t.value?(d(),$("div",bh,V(g.nodeDef.category.replaceAll("/"," > ")),1)):E("",!0)]),c("div",wh,[g.nodeDef.experimental?(d(),R(m(Zt),{key:0,value:g.$t("g.experimental"),severity:"primary"},null,8,["value"])):E("",!0),g.nodeDef.deprecated?(d(),R(m(Zt),{key:1,value:g.$t("g.deprecated"),severity:"danger"},null,8,["value"])):E("",!0),l.value&&i.value>0?(d(),R(m(Zt),{key:2,value:m(ur)(i.value,{roundToInt:!0}),severity:"secondary"},null,8,["value"])):E("",!0),g.nodeDef.nodeSource.type!==m(cr).Unknown?(d(),R(m(ii),{key:3,class:"text-sm font-light"},{default:A(()=>[$e(V(g.nodeDef.nodeSource.displayText),1)]),_:1})):E("",!0)])]))}}),kh=Le(Ch,[["__scopeId","data-v-acda36a0"]]),xh={class:"comfy-vue-node-search-container flex w-full min-w-96 items-center justify-center"},Sh={class:"_dialog-body"},_h=K({__name:"NodeSearchBox",props:{filters:{},searchLimit:{default:64}},emits:["addFilter","removeFilter","addNode"],setup(e,{emit:o}){const t=ie(),{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([]),p=L(null),g=L(""),v=y(()=>e.filters.length===0?s("g.searchNodes")+"...":""),f=St(),b=ns(),C=tn(N=>{N.trim()},500),h=n(N=>{const M=N===""&&e.filters.length===0;g.value=N,u.value=M?b.topNodeDefs:[...f.nodeSearchService.searchNode(N,e.filters,{limit:e.searchLimit})],C(N)},"search"),w=o,k=n(N=>{w("addNode",N)},"onAddNode");let I=null;const x=n(async()=>{I??=document.getElementById(r),I&&(I.blur(),await Fe(()=>I?.focus()))},"reFocusInput");ze(()=>{I??=document.getElementById(r),I&&I.focus(),a.value.hide=()=>h(""),h(""),a.value.show()});const _=n(N=>{i.value=!1,w("addFilter",N)},"onAddFilter"),S=n(async(N,M)=>{N.stopPropagation(),N.preventDefault(),w("removeFilter",M),await x()},"onRemoveFilter"),T=n(N=>{if(N===-1){p.value=null;return}const M=u.value[N];p.value=M},"setHoverSuggestion");return(N,M)=>(d(),$("div",xh,[l.value&&p.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]=ke(D=>k(p.value),["stop"]))},[(d(),R(dr,{key:p.value?.name||"","node-def":p.value},null,8,["node-def"]))],32)):E("",!0),O(J,{variant:"secondary","aria-label":N.$t("g.addNodeFilterCondition"),class:"filter-button z-10",onClick:M[1]||(M[1]=D=>i.value=!0)},{default:A(()=>M[6]||(M[6]=[c("i",{class:"pi pi-filter"},null,-1)])),_:1},8,["aria-label"]),O(m(Va),{visible:i.value,"onUpdate:visible":M[2]||(M[2]=D=>i.value=D),class:"min-w-96","dismissable-mask":"",modal:"",onHide:x},{header:A(()=>[c("h3",null,V(N.$t("g.addNodeFilterCondition")),1)]),default:A(()=>[c("div",Sh,[O(pr,{onAddFilter:_})])]),_:1},8,["visible"]),O(fh,{ref_key:"autoCompletePlus",ref:a,"model-value":N.filters,class:"comfy-vue-node-search-box z-10 grow","scroll-height":"40vh",placeholder:v.value,"input-id":r,"append-to":"self",suggestions:u.value,delay:100,loading:!m(b).isLoaded,"complete-on-focus":"","auto-option-focus":"","force-selection":"",multiple:"","option-label":"display_name",onComplete:M[3]||(M[3]=D=>h(D.query)),onOptionSelect:M[4]||(M[4]=D=>k(D.value)),onFocusedOptionChanged:M[5]||(M[5]=D=>T(D))},{option:A(({option:D})=>[O(kh,{"node-def":D,"current-query":g.value},null,8,["node-def","current-query"])]),chip:A(({value:D})=>[D.filterDef&&D.value?(d(),R(fr,{key:`${D.filterDef.id}-${D.value}`,text:D.value,badge:D.filterDef.invokeSequence.toUpperCase(),"badge-class":D.filterDef.invokeSequence+"-badge",onRemove:n(B=>S(B,D),"onRemove")},null,8,["text","badge","badge-class","onRemove"])):E("",!0)]),_:1},8,["model-value","placeholder","suggestions","loading"])]))}}),Th=K({__name:"NodeSearchBoxPopover",setup(e,{expose:o}){let t=null,s=null,l=!1;const a=ie(),i=ms(),r=_o(),{visible:u,newSearchBoxEnabled:p}=qe(i),g=L(!0);function v(){return t?[t.canvasX,t.canvasY]:r.getCanvasCenter()}n(v,"getNewNodeLocation");const f=L([]);function b(z){f.value.push(z)}n(b,"addFilter");function C(z){f.value=f.value.filter(F=>_s(F)!==_s(z))}n(C,"removeFilter");function h(){f.value=[]}n(h,"clearFilters");function w(){u.value=!1}n(w,"closeDialog");const k=ve();function I(z){const F=r.addNodeOnGraph(z,{pos:v()});l&&t?k.getCanvas().linkConnector.connectToNode(F,t):t||console.warn("The trigger event was undefined when addNode was called."),l=!1,We().activeWorkflow?.changeTracker?.checkState(),window.requestAnimationFrame(w)}n(I,"addNode");function x(z){p.value?z?.pointerType==="touch"?setTimeout(()=>{T(z)},128):T(z):k.getCanvas().showSearchBox(z)}n(x,"showSearchBox");function _(){return k.getCanvas().linkConnector.renderLinks.at(0)}n(_,"getFirstLink");const S=St();function T(z){const F=_();if(F){const G=F.toType==="input"?S.nodeSearchService.inputTypeFilter:S.nodeSearchService.outputTypeFilter,q=F.fromSlot.type?.toString()??"";b({filterDef:G,value:q})}u.value=!0,t=z,g.value=!1,setTimeout(()=>{g.value=!0},300)}n(T,"showNewSearchBox");function N(z){const F=_();if(!F)return;const{node:G,fromSlot:q,toType:Z}=F,te={e:z,allow_searchbox:!0,showSearchBox:n(()=>{Ve(),x(z)},"showSearchBox")},X=F.fromReroute?.id,ue=Z==="input"?{nodeFrom:G,slotFrom:q,afterRerouteId:X}:{nodeTo:G,slotTo:q,afterRerouteId:X},le=k.getCanvas(),Ne=le.showConnectionMenu({...ue,...te});if(!Ne){console.warn("No menu was returned from showConnectionMenu");return}t=z,s=new AbortController;const{signal:Ue}=s,Qe={once:!0,signal:Ue};Oe(le.canvas,"connect-new-default-node",Se=>{if(!(Se instanceof CustomEvent))throw new Error("Invalid event");const Be=Se.detail?.node;if(!(Be instanceof vt))throw new Error("Invalid node");l=!1,Se.preventDefault(),le.linkConnector.connectToNode(Be,z)},Qe);const Ve=Oe(Ne.controller.signal,"abort",U,Qe)}n(N,"showContextMenu"),Ce(()=>{const{canvas:z}=k;z&&(ge.release_link_on_empty_shows_menu=!1,z.allow_searchbox=!1,Oe(z.linkConnector.events,"dropped-on-canvas",H))});function M(z){if(z.detail.subType==="empty-double-click")x(z.detail.originalEvent);else if(z.detail.subType==="group-double-click"){const F=z.detail.group,[G,q]=F.pos;z.detail.originalEvent.canvasY-q>F.titleHeight&&x(z.detail.originalEvent)}}n(M,"canvasEventHandler");const D=y(()=>a.get("Comfy.LinkRelease.Action")),B=y(()=>a.get("Comfy.LinkRelease.ActionShift"));function j(z){return z.preventDefault()}n(j,"preventDefault");function W(z){z.preventDefault();const F=k.getCanvas();F.linkConnector.state.snapLinksPos=[z.detail.canvasX,z.detail.canvasY],Oe(F.linkConnector.events,"reset",j,{once:!0})}n(W,"cancelNextReset");function H(z){switch(l=!0,z.detail.shiftKey?B.value:D.value){case wt.SEARCH_BOX:W(z),x(z.detail);break;case wt.CONTEXT_MENU:W(z),N(z.detail);break;case wt.NO_ACTION:}}n(H,"handleDroppedOnCanvas");function U(){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(U,"reset"),se(u,()=>{u.value||U()}),Oe(document,"litegraph:canvas",M),o({showSearchBox:x}),(z,F)=>(d(),$("div",null,[O(m(Va),{visible:m(u),"onUpdate:visible":F[0]||(F[0]=G=>lt(u)?u.value=G:null),modal:"","dismissable-mask":g.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:h},{container:A(()=>[O(_h,{filters:f.value,onAddFilter:b,onRemoveFilter:C,onAddNode:I},null,8,["filters"])]),_:1},8,["visible","dismissable-mask"])]))}}),An=Dt("helpCenter",()=>{const e=L(!1),o=L("sidebar");return{isVisible:e,triggerLocation:o,toggle:n((a="sidebar")=>{e.value||(o.value=a),e.value=!e.value},"toggle"),show:n((a="sidebar")=>{o.value=a,e.value=!0},"show"),hide:n(()=>{e.value=!1},"hide")}});function gs(e="sidebar"){const o=ie(),t=co(),s=An(),{isVisible:l,triggerLocation:a}=qe(s),{shouldShowRedDot:i}=qe(t),r=qa(),{showNodeConflictDialog:u}=yt(),{shouldShowRedDot:p,markConflictsAsSeen:g}=Xn(),v=y(()=>i.value||p.value),f=y(()=>o.get("Comfy.Sidebar.Location")),b=n(()=>{s.toggle(e)},"toggleHelpCenter"),C=n(()=>{s.hide()},"closeHelpCenter"),h=n(async()=>{try{await r.shouldShowConflictModalAfterUpdate()&&w()}catch(k){console.error("[HelpCenter] Error checking conflict modal:",k)}},"handleWhatsNewDismissed"),w=n(()=>{u({showAfterWhatsNew:!0,dialogComponentProps:{onClose:n(()=>{g()},"onClose")}})},"showConflictModal");return ze(async()=>{await t.initialize()}),{isHelpCenterVisible:l,triggerLocation:a,shouldShowRedDot:v,sidebarLocation:f,toggleHelpCenter:b,closeHelpCenter:C,handleWhatsNewDismissed:h}}n(gs,"useHelpCenter");const $h={key:0,class:"release-toast-popup"},Nh={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"},Ih={class:"p-4 flex flex-col gap-4 flex-1 min-h-0"},Mh={class:"flex items-center gap-4"},Ph={class:"flex flex-col gap-1"},Dh={class:"text-sm font-normal text-base-foreground leading-[1.429]"},Ah={class:"text-sm font-normal text-muted-foreground leading-[1.21]"},Lh=["innerHTML"],Eh={class:"flex justify-between items-center px-4 pb-4"},Vh=["href"],Oh={class:"flex items-center gap-4"},Rh=K({__name:"ReleaseNotificationToast",setup(e,{expose:o}){const{buildDocsUrl:t}=ro(),{toastErrorHandler:s}=Bt(),l=co(),{t:a}=fe(),i=L(!1),r=y(()=>l.recentRelease),u=y(()=>l.shouldShowToast&&!i.value),p=y(()=>{const I=t("/changelog",{includeLocale:!0});if(r.value?.version){const x=ss(r.value.version);return`${I}#${x}`}return I}),g=y(()=>{if(!r.value?.content)return Ct.sanitize(`<p>${a("releaseToast.description")}</p>`);try{const _=r.value.content.replace(/^# .+$/m,"").replace(/!\[.*?\]\(.*?\)/g,""),S=_.trim();return!S||S.replace(/\s+/g,"")===""?Ct.sanitize(`<p>${a("releaseToast.description")}</p>`):Ka(_)}catch(I){console.error("Error parsing markdown:",I);const x=r.value.content.replace(/\n/g,"<br>");return x.trim()?Ct.sanitize(x):Ct.sanitize(`<p>${a("releaseToast.description")}</p>`)}});let v=null;const f=n(()=>{v&&clearTimeout(v),v=setTimeout(()=>{C()},8e3)},"startAutoHide"),b=n(()=>{v&&(clearTimeout(v),v=null)},"clearAutoHide"),C=n(()=>{i.value=!0,b()},"dismissToast"),h=n(()=>{r.value&&l.handleSkipRelease(r.value.version),C()},"handleSkip"),w=n(()=>{r.value&&l.handleShowChangelog(r.value.version),C()},"handleLearnMore"),k=n(async()=>{if(Ke()){try{await _e().execute("Comfy-Desktop.CheckForUpdates"),C()}catch(I){s(I)}return}window.open(t("/installation/update_comfyui",{includeLocale:!0}),"_blank"),C()},"handleUpdate");return se(u,I=>{I?f():b()}),ze(async()=>{l.releases.length||await l.fetchReleases()}),o({handleSkip:h,handleLearnMore:w,handleUpdate:k}),(I,x)=>u.value?(d(),$("div",$h,[c("div",Nh,[c("div",Ih,[c("div",Mh,[x[0]||(x[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",Ph,[c("div",Dh,V(I.$t("releaseToast.newVersionAvailable")),1),c("div",Ah,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:g.value},null,8,Lh)]),c("div",Eh,[c("a",{class:"flex items-center gap-2 text-sm font-normal py-1 text-muted-foreground hover:text-base-foreground",href:p.value,target:"_blank",rel:"noopener noreferrer",onClick:w},[x[1]||(x[1]=c("i",{class:"icon-[lucide--external-link] w-4 h-4"},null,-1)),$e(" "+V(I.$t("releaseToast.whatsNew")),1)],8,Vh),c("div",Oh,[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:h},V(I.$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(I.$t("releaseToast.update")),1)])])])])):E("",!0)}}),Wh=Le(Rh,[["__scopeId","data-v-ba02c61a"]]),zh={key:0,class:"whats-new-popup-container left-4"},Bh={class:"modal-body flex flex-col gap-4 px-0 pt-0 pb-2 flex-1"},Fh=["innerHTML"],Uh={class:"modal-footer flex justify-between items-center gap-4 px-4 pb-4"},Gh=["href"],Hh={class:"footer-actions flex items-center gap-4"},jh=K({__name:"WhatsNewPopup",emits:["whats-new-dismissed"],setup(e,{expose:o,emit:t}){const{buildDocsUrl:s}=ro(),l=co(),{t:a}=fe(),i=t,r=L(!1),u=y(()=>l.recentRelease),p=y(()=>l.shouldShowPopup&&!r.value),g=y(()=>{const h=s("/changelog",{includeLocale:!0});if(u.value?.version){const w=ss(u.value.version);return`${h}#${w}`}return h}),v=y(()=>{if(!u.value?.content)return Ct.sanitize(`<p>${a("whatsNewPopup.noReleaseNotes")}</p>`);try{const h=u.value.content,w=h.trim();if(!w||w.replace(/\s+/g,"")==="")return Ct.sanitize(`<p>${a("whatsNewPopup.noReleaseNotes")}</p>`);const k=h.match(/!\[.*?\]\(.*?\)/),I=k?k[0]:"",x=h.replace(/!\[.*?\]\(.*?\)/,"").trim(),_=[I,x].filter(Boolean).join(`
|
|
9
|
+
|
|
10
|
+
`);return Ka(_)}catch(h){console.error("Error parsing markdown:",h);const w=u.value.content.replace(/\n/g,"<br>");return w.trim()?Ct.sanitize(w):Ct.sanitize(`<p>${a("whatsNewPopup.noReleaseNotes")}</p>`)}}),f=n(()=>{r.value=!1},"show"),b=n(()=>{r.value=!0,i("whats-new-dismissed")},"hide"),C=n(async()=>{u.value&&await l.handleWhatsNewSeen(u.value.version),b()},"closePopup");return ze(async()=>{l.releases.length||await l.fetchReleases()}),o({show:f,hide:b,closePopup:C}),(h,w)=>p.value?(d(),$("div",zh,[c("div",{class:"whats-new-popup",onClick:w[0]||(w[0]=ke(()=>{},["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":h.$t("g.close"),size:"icon-sm",variant:"muted-textonly",onClick:C},{default:A(()=>w[1]||(w[1]=[c("i",{class:"icon-[lucide--x]"},null,-1)])),_:1},8,["aria-label"]),c("div",Bh,[c("div",{class:"content-text max-h-96 overflow-y-auto",innerHTML:v.value},null,8,Fh)]),c("div",Uh,[c("a",{class:"learn-more-link flex items-center gap-2 text-sm font-normal py-1",href:g.value,target:"_blank",rel:"noopener noreferrer",onClick:C},[w[2]||(w[2]=c("i",{class:"icon-[lucide--external-link]"},null,-1)),$e(" "+V(h.$t("whatsNewPopup.learnMore")),1)],8,Gh),c("div",Hh,[O(J,{class:"h-8",size:"sm",variant:"muted-textonly",onClick:C},{default:A(()=>[$e(V(h.$t("whatsNewPopup.later")),1)]),_:1})])])])])):E("",!0)}}),qh=Le(jh,[["__scopeId","data-v-98a9f324"]]),Kh=["width","height"],Qh={"clip-path":"url(#clip0_1099_16244)"},Yh=["stroke"],Jh=K({__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:Q(o.value)},[c("g",Qh,[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,Yh)]),s[0]||(s[0]=c("defs",null,[c("clipPath",{id:"clip0_1099_16244"},[c("rect",{width:"16",height:"16",fill:"white"})])],-1))],10,Kh))}}),Xh=["aria-label"],Zh={class:"w-full"},ey={class:"flex w-full flex-col gap-2",role:"menubar"},ty=["onClick","onMouseenter","onMouseleave"],oy={class:"help-menu-icon-container"},ny={class:"help-menu-icon"},sy={key:0,class:"menu-red-dot"},ay={class:"menu-label"},ly={key:0,class:"icon-[lucide--external-link] text-primary w-4 h-4 ml-auto"},iy={key:1,class:"pi pi-chevron-right ml-auto"},ry={key:0,class:"submenu-divider"},uy=["onClick"],cy={class:"menu-label"},dy={key:0,class:"w-full","data-testid":"whats-new-section"},py={class:"section-description flex items-center gap-2.5 self-stretch px-8 pt-2 pb-2"},fy=["aria-label"],my=["onClick","onKeydown"],gy={class:"release-content"},vy={class:"release-title"},hy=["datetime"],yy={class:"normal-state"},by={class:"hover-state"},wy={key:1,class:"help-menu-item",role:"status","aria-live":"polite"},Cy={key:2,class:"help-menu-item",role:"status"},ky=K({__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}=ro(),u=co(),p=_e(),g=ie(),v=L(Date.now()),f=o,b=L(!1),C=L(null),h=L({});let w=null;const k=y(()=>u.releases.length>0),I=y(()=>g.get("Comfy.Notification.ShowVersionUpdates")),{shouldShowRedDot:x}=Xn(),{isNewManagerUI:_}=gt(),S=y(()=>[{key:"desktop-guide",type:"item",label:l("helpCenter.desktopUserGuide"),visible:Ke(),action:n(()=>{D(r("/installation/desktop",{includeLocale:!0,platform:!0})),f("close")},"action")},{key:"dev-tools",type:"item",label:l("helpCenter.openDevTools"),visible:Ke(),action:n(()=>{G(),f("close")},"action")},{key:"divider-1",type:"divider",visible:Ke()},{key:"reinstall",type:"item",label:l("helpCenter.reinstall"),visible:Ke(),action:n(()=>{q(),f("close")},"action")}].filter(ue=>ue.visible!==!1)),T=y(()=>!!S.value.length),N=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(()=>{p.execute("Comfy.ContactSupport"),f("close")},"action")},{key:"help",type:"item",icon:"icon-[lucide--message-circle-question]",label:l("helpCenter.help"),action:n(()=>{p.execute("Comfy.ContactSupport"),f("close")},"action")},{key:"docs",type:"item",icon:"icon-[lucide--book-open]",label:l("helpCenter.docs"),showExternalIcon:!0,action:n(()=>{D(r("/",{includeLocale:!0})),f("close")},"action")},{key:"discord",type:"item",icon:"pi pi-discord",label:"Discord",showExternalIcon:!0,action:n(()=>{D(i.discord),f("close")},"action")},{key:"github",type:"item",icon:"icon-[lucide--github]",label:l("helpCenter.github"),showExternalIcon:!0,action:n(()=>{D(i.github),f("close")},"action")}];return X.push({key:"manager",type:"item",icon:Jh,label:l("helpCenter.managerExtension"),showRedDot:x.value,action:n(async()=>{await gt().openManager({initialTab:eo.All,showToastOnLegacyError:!1}),f("close")},"action")}),!Ke()&&!kt&&_.value&&X.push({key:"update-comfyui",type:"item",icon:"icon-[lucide--download]",label:l("helpCenter.updateComfyUI"),action:n(()=>{Z(),f("close")},"action")}),X.push({key:"more",type:"item",icon:"",label:l("helpCenter.more"),visible:T.value,action:n(()=>{},"action"),items:S.value}),X}),D=n(X=>{window.open(X,"_blank","noopener,noreferrer")},"openExternalLink"),B=n(()=>{w&&(clearTimeout(w),w=null)},"clearHoverTimeout"),j=n(X=>{const ue=X.getBoundingClientRect(),le=210,Ue=(N.value?.items?.filter(bt=>bt.visible!==!1).length||0)*48+16,Qe=C.value?.offsetHeight||Ue,Ve=window.innerWidth,Se=window.innerHeight;let Be=ue.top,Je=ue.right+s.OFFSET_PX;return Je+le>Ve&&(Je=ue.left-le-s.OFFSET_PX),Be+Qe>Se&&(Be=Math.max(s.OFFSET_PX,ue.bottom-Qe)),Be<s.OFFSET_PX&&(Be=s.OFFSET_PX),Be-=8,{position:"fixed",top:`${Be}px`,left:`${Je}px`,zIndex:s.Z_INDEX}},"calculateSubmenuPosition"),W=n(X=>{if(!X)return"date";const ue=new Date(X),Ne=Math.abs(new Date().getTime()-ue.getTime()),Ue=[{unit:t.YEAR,key:"yearsAgo"},{unit:t.MONTH,key:"monthsAgo"},{unit:t.WEEK,key:"weeksAgo"},{unit:t.DAY,key:"daysAgo"},{unit:t.HOUR,key:"hoursAgo"},{unit:t.MINUTE,key:"minutesAgo"}];for(const{unit:Qe,key:Ve}of Ue){const Se=Math.floor(Ne/Qe);if(Se>0)return l(`g.relativeTime.${Ve}`,{count:Se})}return l("g.relativeTime.now")},"formatReleaseDate"),H=n(async(X,ue)=>{if(X!=="more"||!N.value?.items||!N.value.items.some(Ue=>Ue.visible!==!1))return;B();const Ne=ue.currentTarget;h.value=j(Ne),b.value=!0,await Fe(),C.value&&(h.value=j(Ne))},"onMenuItemHover"),U=n(X=>{X==="more"&&(w=window.setTimeout(()=>{b.value=!1},s.DELAY_MS))},"onMenuItemLeave"),z=n(()=>{B()},"onSubmenuHover"),F=n(()=>{b.value=!1},"onSubmenuLeave"),G=n(()=>{Ke()&&yo().openDevTools()},"openDevTools"),q=n(()=>{Ke()&&yo().reinstall()},"onReinstall"),Z=n(async()=>{const{updateComfyUI:X,rebootComfyUI:ue,error:le}=Qa();a.add({severity:"info",summary:l("helpCenter.updateComfyUIStarted"),detail:l("helpCenter.updateComfyUIStartedDetail"),life:3e3});try{if(await X({is_stable:!0})===null||le.value){a.add({severity:"error",summary:l("g.error"),detail:le.value||l("helpCenter.updateComfyUIFailed"),life:5e3});return}a.add({severity:"success",summary:l("helpCenter.updateComfyUISuccess"),detail:l("helpCenter.updateComfyUISuccessDetail"),life:3e3}),await ue()}catch(Ne){a.add({severity:"error",summary:l("g.error"),detail:Ne instanceof Error?Ne.message:l("g.unknownError"),life:5e3})}},"onUpdateComfyUI"),te=n(X=>{u.handleShowChangelog(X.version);const ue=ss(X.version),le=`${r("/changelog",{includeLocale:!0})}#${ue}`;D(le),f("close")},"onReleaseClick");return ze(async()=>{k.value||await u.fetchReleases()}),rt(()=>{Math.round((Date.now()-v.value)/1e3)}),(X,ue)=>(d(),$("div",{class:"help-center-menu flex flex-col items-start gap-1",role:"menu","aria-label":X.$t("help.helpCenterMenu")},[c("div",Zh,[c("nav",ey,[(d(!0),$(oe,null,be(M.value,le=>de((d(),$("button",{key:le.key,type:"button",class:Q(["help-menu-item",{"more-item":le.key==="more"}]),role:"menuitem",onClick:le.action,onMouseenter:n(Ne=>H(le.key,Ne),"onMouseenter"),onMouseleave:n(Ne=>U(le.key),"onMouseleave")},[c("div",oy,[c("div",ny,[typeof le.icon=="object"?(d(),R(oo(le.icon),{key:0,size:16})):(d(),$("i",{key:1,class:Q(le.icon)},null,2))]),le.showRedDot?(d(),$("div",sy)):E("",!0)]),c("span",ay,V(le.label),1),le.showExternalIcon?(d(),$("i",ly)):E("",!0),le.key==="more"?(d(),$("i",iy)):E("",!0)],42,ty)),[[Xe,le.visible!==!1]])),128))]),ue[0]||(ue[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(),R(Nt,{to:"body"},[b.value?(d(),$("div",{key:0,ref_key:"submenuRef",ref:C,class:"more-submenu",style:ye(h.value),onMouseenter:z,onMouseleave:F},[(d(!0),$(oe,null,be(N.value?.items,le=>(d(),$(oe,{key:le.key},[le.type==="divider"?de((d(),$("div",ry,null,512)),[[Xe,le.visible!==!1]]):de((d(),$("button",{key:1,type:"button",class:"help-menu-item submenu-item",role:"menuitem",onClick:le.action},[c("span",cy,V(le.label),1)],8,uy)),[[Xe,le.visible!==!1]])],64))),128))],36)):E("",!0)])),I.value?(d(),$("section",dy,[c("h3",py,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(m(u).recentReleases,le=>(d(),$("article",{key:le.id||le.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(Ne=>te(le),"onClick"),onKeydown:[to(Ne=>te(le),["enter"]),to(ke(Ne=>te(le),["prevent"]),["space"])]},[ue[1]||(ue[1]=c("i",{class:"help-menu-icon icon-[lucide--package]","aria-hidden":"true"},null,-1)),c("div",gy,[c("span",vy,V(X.$t("g.releaseTitle",{package:"Comfy",version:le.version})),1),c("time",{class:"release-date",datetime:le.published_at},[c("span",yy,V(W(le.published_at)),1),c("span",by,V(X.$t("helpCenter.clickToLearnMore")),1)],8,hy)])],40,my))),128))],8,fy)):m(u).isLoading?(d(),$("div",wy,[ue[2]||(ue[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",Cy,[ue[3]||(ue[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,Xh))}}),xy=Le(ky,[["__scopeId","data-v-8ecd06e2"]]),Sy=K({__name:"HelpCenterPopups",props:{isSmall:{type:Boolean,default:!1}},setup(e){const{isHelpCenterVisible:o,triggerLocation:t,sidebarLocation:s,closeHelpCenter:l,handleWhatsNewDismissed:a}=gs();return(i,r)=>(d(),$(oe,null,[(d(),R(Nt,{to:"#graph-canvas-container"},[m(o)?(d(),$("div",{key:0,class:Q(["help-center-popup",{"sidebar-left":m(t)==="sidebar"&&m(s)==="left","sidebar-right":m(t)==="sidebar"&&m(s)==="right","topbar-right":m(t)==="topbar","small-sidebar":i.isSmall}])},[O(xy,{onClose:m(l)},null,8,["onClose"])],2)):E("",!0)])),(d(),R(Nt,{to:"#graph-canvas-container"},[O(Wh,{class:Q({"sidebar-left":m(s)==="left","sidebar-right":m(s)==="right","small-sidebar":i.isSmall})},null,8,["class"])])),(d(),R(Nt,{to:"#graph-canvas-container"},[O(qh,{class:Q({"sidebar-left":m(s)==="left","sidebar-right":m(s)==="right","small-sidebar":i.isSmall}),onWhatsNewDismissed:m(a)},null,8,["class","onWhatsNewDismissed"])])),(d(),R(Nt,{to:"body"},[m(o)?(d(),$("div",{key:0,class:"help-center-backdrop",onClick:r[0]||(r[0]=(...u)=>m(l)&&m(l)(...u))})):E("",!0)]))],64))}}),_y=Le(Sy,[["__scopeId","data-v-2583d84f"]]),Ty=["width","height"],$y=K({__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:Q(o.value),width:s.size,height:s.size,viewBox:"0 0 18 18",xmlns:"http://www.w3.org/2000/svg"},[c("path",Pt({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,Ty))}}),Wo=K({__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:Q(o.value)},[he(t.$slots,"default")],2))}}),Ny="flex flex-col overflow-hidden",zo=K({__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(Ny,o[e.rounded],s[e.variant],l,e.class)});return(s,l)=>(d(),$("div",{class:Q(t.value)},[he(s.$slots,"top"),he(s.$slots,"bottom")],2))}}),Bo=K({__name:"CardTop",props:{ratio:{default:"square"},topLeftClass:{},topRightClass:{},centerLeftClass:{},centerRightClass:{},bottomLeftClass:{},bottomRightClass:{}},setup(e){const o=ma(),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:Q(t.value)},[he(a.$slots,"default",{class:"absolute top-0 left-0 h-full w-full"}),m(o)["top-left"]?(d(),$("div",{key:0,class:Q(l.value["top-left"])},[he(a.$slots,"top-left")],2)):E("",!0),m(o)["top-right"]?(d(),$("div",{key:1,class:Q(l.value["top-right"])},[he(a.$slots,"top-right")],2)):E("",!0),m(o)["center-left"]?(d(),$("div",{key:2,class:Q(l.value["center-left"])},[he(a.$slots,"center-left")],2)):E("",!0),m(o)["center-right"]?(d(),$("div",{key:3,class:Q(l.value["center-right"])},[he(a.$slots,"center-right")],2)):E("",!0),m(o)["bottom-left"]?(d(),$("div",{key:4,class:Q(l.value["bottom-left"])},[he(a.$slots,"bottom-left")],2)):E("",!0),m(o)["bottom-right"]?(d(),$("div",{key:5,class:Q(l.value["bottom-right"])},[he(a.$slots,"bottom-right")],2)):E("",!0)],2))}}),Iy="inline-flex shrink-0 items-center justify-center gap-1 rounded px-2 py-1 text-xs font-bold",Fo=K({__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(Iy,o[e.variant]));return(s,l)=>(d(),$("div",{class:Q(t.value)},[he(s.$slots,"icon"),c("span",null,V(s.label),1)],2))}}),My={class:"relative aspect-square w-full overflow-hidden rounded-t-lg select-none"},Py={key:1,class:"flex h-full w-full items-center justify-center"},Dy=K({__name:"BaseThumbnail",props:{hoverZoom:{default:4},isHovered:{type:Boolean}},setup(e){const o=L(!1),t=L(null);return ze(()=>{Array.from(t.value?.getElementsByTagName("img")??[]).forEach(l=>{Oe(l,"error",()=>{o.value=!0})})}),(s,l)=>(d(),$("div",My,[o.value?(d(),$("div",Py,l[0]||(l[0]=[c("img",{src:fu,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))]))}}),rn=Le(Dy,[["__scopeId","data-v-c216f2c0"]]),Ay={class:"flex h-full w-full items-center justify-center p-4",style:{backgroundImage:"url(/assets/images/default-template.png)",backgroundRepeat:"round"}},Ly=["src"],Ey=K({__name:"AudioThumbnail",props:{src:{}},setup(e){return(o,t)=>(d(),R(rn,null,{default:A(()=>[c("div",Ay,[c("audio",{controls:"",class:"relative w-full",src:o.src,onClick:t[0]||(t[0]=ke(()=>{},["stop"]))},null,8,Ly)])]),_:1}))}}),Vy=50,Oy=K({__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(Vy),s=L(null),{elementX:l,elementWidth:a,isOutside:i}=zl(s);return se([()=>e.isHovered,l,a,i],([r,u,p,g])=>{r&&(g||(t.value=u/p*100))}),(r,u)=>(d(),R(rn,{"is-hovered":r.isHovered},{default:A(()=>[O(ko,{src:r.baseImageSrc,alt:r.alt,"image-class":m(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(ko,{src:r.overlayImageSrc,alt:r.alt,"image-class":m(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"]))}}),Ry=K({__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(),R(rn,{"hover-zoom":t.hoverZoom,"is-hovered":t.isHovered},{default:A(()=>[O(ko,{src:t.src,alt:t.alt,"image-class":["transform-gpu transition-transform duration-300 ease-out",m(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"]))}}),Wy={class:"relative h-full w-full"},zy={class:"absolute inset-0"},By={class:"absolute inset-0 z-10"},Fy=K({__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(),R(rn,{"is-hovered":l.isHovered},{default:A(()=>[c("div",Wy,[c("div",zy,[O(ko,{src:l.baseImageSrc,alt:l.alt,"image-class":t.value},null,8,["src","alt","image-class"])]),c("div",By,[O(ko,{src:l.overlayImageSrc,alt:l.alt,"image-class":s.value},null,8,["src","alt","image-class"])])])]),_:1},8,["is-hovered"]))}});function Uy(e,o={}){const{itemsPerPage:t=12,initialPage:s=1}=o,l=L(s),a=L(!1),i=Ze(new Set([])),r=y(()=>{const b="value"in e?e.value:e;return Array.isArray(b)?b:[]}),u=y(()=>{const b=r.value;if(b.length===0)return[];const C=Array.from(i.value).sort((k,I)=>k-I),w=Math.max(...C,0)*t;return b.slice(0,w)}),p=y(()=>{const b=r.value;if(b.length===0)return!1;const C=Array.from(i.value);return Math.max(...C,0)*t<b.length}),g=y(()=>{const b=r.value;return b.length===0?0:Math.ceil(b.length/t)}),v=n(async()=>{if(a.value||!p.value)return;a.value=!0;const b=Array.from(i.value),C=Math.max(...b,0)+1,h=new Set(i.value);h.add(C),i.value=h,l.value=C,a.value=!1},"loadNextPage");return se(()=>r.value.length,b=>{b>0&&i.value.size===0&&(i.value=new Set([1]))},{immediate:!0}),{paginatedItems:u,isLoading:a,hasMoreItems:p,currentPage:l,totalPages:g,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(Uy,"useLazyPagination");const Gy=Dt("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,p=t(a);return o(r)*.5+u*.3+p*.2},"computeDefaultScore"),computePopularScore:n((a,i=0)=>{const r=t(a);return o(i)*.9+r*.1},"computePopularScore")}}),Hy={keys:[{name:"name",weight:.3},{name:"title",weight:.3},{name:"description",weight:.1},{name:"tags",weight:.2},{name:"models",weight:.3}],threshold:.33,includeScore:!0,includeMatches:!0};function jy(e){const o=ie(),t=Gy(),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=L(Hy),p=y(()=>{const U="value"in e?e.value:e;return Array.isArray(U)?U:[]}),g=y(()=>new Bl(p.value,u.value)),v=y(()=>{const U=new Set;return p.value.forEach(z=>{Array.isArray(z.models)&&z.models.forEach(F=>U.add(F))}),Array.from(U).sort()}),f=y(()=>{const U=new Set;return p.value.forEach(z=>{z.tags&&Array.isArray(z.tags)&&z.tags.forEach(F=>U.add(F))}),Array.from(U).sort()}),b=y(()=>["ComfyUI","External or Remote API"]),C=ka(s,50),h=y(()=>C.value.trim()?g.value.search(C.value).map(z=>z.item):p.value),w=y(()=>l.value.length===0?h.value:h.value.filter(U=>!U.models||!Array.isArray(U.models)?!1:l.value.some(z=>U.models?.includes(z)))),k=y(()=>a.value.length===0?w.value:w.value.filter(U=>!U.tags||!Array.isArray(U.tags)?!1:a.value.some(z=>U.tags?.includes(z)))),I=y(()=>i.value.length===0?k.value:k.value.filter(U=>{const z=U.openSource===!1,F=U.openSource!==!1;return i.value.some(G=>G==="External or Remote API"?z:G==="ComfyUI"?F:!1)})),x=n(U=>typeof U.vram=="number"&&Number.isFinite(U.vram)&&U.vram>0?U.vram:Number.POSITIVE_INFINITY,"getVramMetric");se(I,U=>{t.largestUsageScore=Math.max(...U.map(z=>z.usage||0))},{immediate:!0});const _=y(()=>{const U=[...I.value];switch(r.value){case"recommended":return U.sort((z,F)=>{const G=t.computeDefaultScore(z.date,z.searchRank,z.usage);return t.computeDefaultScore(F.date,F.searchRank,F.usage)-G});case"popular":return U.sort((z,F)=>{const G=t.computePopularScore(z.date,z.usage);return t.computePopularScore(F.date,F.usage)-G});case"alphabetical":return U.sort((z,F)=>{const G=z.title||z.name||"",q=F.title||F.name||"";return G.localeCompare(q)});case"newest":return U.sort((z,F)=>{const G=new Date(z.date||"1970-01-01");return new Date(F.date||"1970-01-01").getTime()-G.getTime()});case"vram-low-to-high":return U.sort((z,F)=>{const G=x(z),q=x(F);if(G===q){const Z=z.title||z.name||"",te=F.title||F.name||"";return Z.localeCompare(te)}return G===Number.POSITIVE_INFINITY?1:q===Number.POSITIVE_INFINITY?-1:G-q});case"model-size-low-to-high":return U.sort((z,F)=>{const G=typeof z.size=="number"?z.size:Number.POSITIVE_INFINITY,q=typeof F.size=="number"?F.size:Number.POSITIVE_INFINITY;return G===q?0:G-q});case"default":default:return U}}),S=y(()=>_.value),T=n(()=>{s.value="",l.value=[],a.value=[],i.value=[],r.value="default"},"resetFilters"),N=n(U=>{l.value=l.value.filter(z=>z!==U)},"removeModelFilter"),M=n(U=>{a.value=a.value.filter(z=>z!==U)},"removeUseCaseFilter"),D=n(U=>{i.value=i.value.filter(z=>z!==U)},"removeRunsOnFilter"),B=y(()=>S.value.length),j=y(()=>p.value.length),W=tn(()=>{},500),H=n(async()=>{const U=await Te.getFuseOptions();U&&(u.value=U)},"loadFuseOptions");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")&&W()},{deep:!0}),Xt(l,U=>{o.set("Comfy.Templates.SelectedModels",U)},{debounce:500,deep:!0}),Xt(a,U=>{o.set("Comfy.Templates.SelectedUseCases",U)},{debounce:500,deep:!0}),Xt(i,U=>{o.set("Comfy.Templates.SelectedRunsOn",U)},{debounce:500,deep:!0}),Xt(r,U=>{o.set("Comfy.Templates.SortBy",U)},{debounce:500}),{searchQuery:s,selectedModels:l,selectedUseCases:a,selectedRunsOn:i,sortBy:r,filteredTemplates:S,availableModels:v,availableUseCases:f,availableRunsOn:b,filteredCount:B,totalCount:j,resetFilters:T,removeModelFilter:N,removeUseCaseFilter:M,removeRunsOnFilter:D,loadFuseOptions:H}}n(jy,"useTemplateFiltering");function yl(){const{t:e}=fe(),o=il(),t=ut(),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 h=i.value[0].modules[0];p(h)}},"selectFirstTemplateCategory"),p=n(h=>(s.value=h,h!==null),"selectTemplateCategory"),g=n((h,w,k="1")=>{const I=w==="default"?Te.fileURL(`/templates/${h.name}`):Te.apiURL(`/workflow_templates/${w}/${h.name}`),x=w==="default"&&k?`-${k}`:"";return`${I}${x}.${h.mediaSubtype}`},"getTemplateThumbnailUrl"),v=n((h,w)=>{const k=h.title??h.name??`${w} Template`;return w==="default"?h.localizedTitle??k:k},"getTemplateTitle"),f=n(h=>(h.localizedDescription||h.description)?.replace(/[-_]/g," ").trim()??"","getTemplateDescription"),b=n(async(h,w)=>{if(!a.value)return!1;l.value=h;let k;try{if(w==="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===h);if(!S||!S.sourceModule)return!1;const T=S.sourceModule;k=await C(h,T);const N=T==="default"?e(`templateWorkflows.template.${h}`,h):h;return t.closeDialog(),await Y.loadGraphData(k,!0,!0,N,{openSource:"template"}),!0}k=await C(h,w);const I=w==="default"?e(`templateWorkflows.template.${h}`,h):h;return t.closeDialog(),await Y.loadGraphData(k,!0,!0,I,{openSource:"template"}),!0}catch(I){return console.error("Error loading workflow template:",I),!1}finally{l.value=null}},"loadWorkflowTemplate"),C=n(async(h,w)=>w==="default"?fetch(Te.fileURL(`/templates/${h}.json`)).then(k=>k.json()):fetch(Te.apiURL(`/workflow_templates/${w}/${h}.json`)).then(k=>k.json()),"fetchTemplateJson");return{selectedTemplate:s,loadingTemplateId:l,isTemplatesLoaded:a,allTemplateGroups:i,loadTemplates:r,selectFirstTemplateCategory:u,selectTemplateCategory:p,getTemplateThumbnailUrl:g,getTemplateTitle:v,getTemplateDescription:f,loadWorkflowTemplate:b}}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 qy={class:"text-neutral text-base"},Ky={class:"flex gap-2"},Qy={class:"relative flex flex-wrap justify-between gap-2 px-6 pb-4"},Yy={class:"flex flex-wrap gap-2"},Jy={key:0,class:"text-neutral px-6 pt-4 pb-2 text-2xl font-semibold"},Xy={key:0,class:"flex h-64 flex-col items-center justify-center text-neutral-500"},Zy={class:"mb-2 text-lg"},eb={class:"text-sm"},tb={key:1},ob={key:0,class:"inline-block h-8 w-48 animate-pulse rounded bg-dialog-surface"},nb={class:"relative h-full w-full overflow-hidden rounded-lg"},sb={class:"flex flex-col gap-2 pt-3"},ab=["title"],lb={class:"flex justify-between gap-2"},ib={class:"flex-1"},rb=["title"],ub={key:0,class:"flex flex-col-reverse justify-center"},cb={key:0,class:"text-sm text-muted"},db={key:3,class:"mt-6 px-6 text-sm text-muted"},pb=K({__name:"WorkflowTemplateSelectorDialog",props:{onClose:{type:Function}},setup(e){const{t:o}=fe(),t=L(0),s=L(!1);ze(()=>{t.value=Date.now()});const l=Jn(),a=y(()=>[ll.Local]),i=n(()=>{e.onClose()},"onClose");en(ln,i);const r=il(),{loadTemplates:u,loadWorkflowTemplate:p,getTemplateThumbnailUrl:g,getTemplateTitle:v,getTemplateDescription:f}=yl(),b=n(ee=>ee.sourceModule||"default","getEffectiveSourceModule"),C=n(ee=>{const ae=b(ee);return g(ee,ae,ae==="default"?"1":"")},"getBaseThumbnailSrc"),h=n(ee=>{const ae=b(ee);return g(ee,ae,ae==="default"?"2":"")},"getOverlayThumbnailSrc"),w=n(ee=>{ee.tutorialUrl&&window.open(ee.tutorialUrl,"_blank")},"openTutorial"),k=y(()=>we.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),I=y(()=>bl()),x=y(()=>r.enhancedTemplates),_=L("all"),S=y(()=>_.value?r.filterTemplatesByCategory(_.value):x.value),{searchQuery:T,selectedModels:N,selectedUseCases:M,selectedRunsOn:D,sortBy:B,filteredTemplates:j,availableModels:W,availableUseCases:H,availableRunsOn:U,filteredCount:z,totalCount:F,resetFilters:G,loadFuseOptions:q}=jy(S),Z=n(ee=>{const ae=_.value==="popular",ft=B.value==="popular";ee==="nav"?ae&&!ft?B.value="popular":!ae&&ft&&(B.value="default"):ee==="sort"&&ae&&!ft&&(_.value="all")},"coordinateNavAndSort");se(_,()=>Z("nav")),se(B,()=>Z("sort"));const te=y({get(){return N.value.map(ee=>({name:ee,value:ee}))},set(ee){N.value=ee.map(ae=>ae.value)}}),X=y({get(){return M.value.map(ee=>({name:ee,value:ee}))},set(ee){M.value=ee.map(ae=>ae.value)}}),ue=y({get(){return D.value.map(ee=>({name:ee,value:ee}))},set(ee){D.value=ee.map(ae=>ae.value)}}),le=L(null),Ne=L(null),Ue=L([]),Qe=L(0),Ve=L(""),Se=y(()=>W.value.map(ee=>({name:ee,value:ee}))),Be=y(()=>H.value.map(ee=>({name:ee,value:ee}))),Je=y(()=>U.value.map(ee=>({name:ee,value:ee}))),bt=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})),po=y(()=>X.value.length===0?o("templateWorkflows.useCaseFilter","Use Case"):X.value.length===1?X.value[0].name:o("templateWorkflows.useCasesSelected",{count:X.value.length})),Ht=y(()=>ue.value.length===0?o("templateWorkflows.runsOnFilter","Runs On"):ue.value.length===1?ue.value[0].name:o("templateWorkflows.runsOnSelected",{count:ue.value.length})),jt=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),_t=y(()=>!T.value.trim()),{paginatedItems:At,isLoading:tt,hasMoreItems:qt,loadNextPage:fo,reset:Kt}=Uy(j,{itemsPerPage:24}),pe=y(()=>_t.value?At.value:j.value);mu(pt,()=>{_t.value&&qt.value&&!tt.value&&fo()}),se([T,_,B,N,M,D],()=>{Kt(),le.value=null,Qe.value++});const xe=n(async ee=>{le.value=ee.name;try{await p(ee.name,b(ee)),s.value=!0,i()}finally{le.value=null}},"onLoadWorkflow"),De=y(()=>{const ee=k.value.find(ae=>"id"in ae?ae.id===_.value:ae.items?.some(ft=>ft.id===_.value));return ee?"id"in ee?ee.label:ee.items?.find(ae=>ae.id===_.value)?.label||o("templateWorkflows.allTemplates","All Templates"):o("templateWorkflows.allTemplates","All Templates")}),{isLoading:we}=Fl(async()=>(await Promise.all([u(),r.loadWorkflowTemplates(),q()]),!0),!1,{immediate:!0}),Ee=n(ee=>(ee.includeOnDistributions?.length??0)>0?a.value.some(ae=>ee.includeOnDistributions?.includes(ae)):!0,"isTemplateVisibleOnDistribution");return rt(()=>{Ue.value=[]}),(ee,ae)=>{const ft=Ie("tooltip");return d(),R(ls,{"content-title":ee.$t("templateWorkflows.title","Workflow Templates"),class:"workflow-template-selector-dialog"},{leftPanel:A(()=>[O(is,{modelValue:_.value,"onUpdate:modelValue":ae[0]||(ae[0]=re=>_.value=re),"nav-items":k.value},{"header-icon":A(()=>ae[8]||(ae[8]=[c("i",{class:"icon-[comfy--template]"},null,-1)])),"header-title":A(()=>[c("span",qy,V(ee.$t("sideToolbar.templates","Templates")),1)]),_:1},8,["modelValue","nav-items"])]),header:A(()=>[O(nn,{modelValue:m(T),"onUpdate:modelValue":ae[1]||(ae[1]=re=>lt(T)?T.value=re:null),size:"lg",class:"max-w-[384px]"},null,8,["modelValue"])]),"header-right-area":A(()=>[c("div",Ky,[m(z)!==m(F)?(d(),R(J,{key:0,variant:"secondary",size:"lg",onClick:m(G)},{default:A(()=>[ae[9]||(ae[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",Qy,[c("div",Yy,[O(Rt,{modelValue:te.value,"onUpdate:modelValue":ae[2]||(ae[2]=re=>te.value=re),"search-query":Ve.value,"onUpdate:searchQuery":ae[3]||(ae[3]=re=>Ve.value=re),class:"w-[250px]",label:bt.value,options:Se.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:A(()=>ae[10]||(ae[10]=[c("i",{class:"icon-[lucide--cpu]"},null,-1)])),_:1},8,["modelValue","search-query","label","options"]),O(Rt,{modelValue:X.value,"onUpdate:modelValue":ae[4]||(ae[4]=re=>X.value=re),label:po.value,options:Be.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:A(()=>ae[11]||(ae[11]=[c("i",{class:"icon-[lucide--target]"},null,-1)])),_:1},8,["modelValue","label","options"]),O(Rt,{modelValue:ue.value,"onUpdate:modelValue":ae[5]||(ae[5]=re=>ue.value=re),label:Ht.value,options:Je.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:A(()=>ae[12]||(ae[12]=[c("i",{class:"icon-[lucide--server]"},null,-1)])),_:1},8,["modelValue","label","options"])]),c("div",null,[O(qo,{modelValue:m(B),"onUpdate:modelValue":ae[6]||(ae[6]=re=>lt(B)?B.value=re:null),label:ee.$t("templateWorkflows.sorting","Sort by"),options:jt.value,class:"w-62.5"},{icon:A(()=>ae[13]||(ae[13]=[c("i",{class:"icon-[lucide--arrow-up-down] text-muted-foreground"},null,-1)])),_:1},8,["modelValue","label","options"])])]),m(we)?E("",!0):(d(),$("div",Jy,[c("span",null,V(De.value),1)]))]),content:A(()=>[!m(we)&&m(j).length===0?(d(),$("div",Xy,[ae[14]||(ae[14]=c("i",{class:"mb-4 icon-[lucide--search] h-12 w-12 opacity-50"},null,-1)),c("p",Zy,V(ee.$t("templateWorkflows.noResults","No templates found")),1),c("p",eb,V(ee.$t("templateWorkflows.noResultsHint","Try adjusting your search or filters")),1)])):(d(),$("div",tb,[m(we)?(d(),$("span",ob)):E("",!0),(d(),$("div",{key:Qe.value,style:ye(I.value),"data-testid":"template-workflows-content"},[(d(!0),$(oe,null,be(m(we)?12:0,re=>(d(),R(zo,{key:`initial-skeleton-${re}`,size:"compact",variant:"ghost",rounded:"lg",class:"hover:bg-base-background"},{top:A(()=>[O(Bo,{ratio:"landscape"},{default:A(()=>ae[15]||(ae[15]=[c("div",{class:"h-full w-full animate-pulse bg-dialog-surface"},null,-1)])),_:1})]),bottom:A(()=>[O(Wo,null,{default:A(()=>ae[16]||(ae[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(m(we)?[]:pe.value,re=>de((d(),R(zo,{key:re.name,ref_for:!0,ref_key:"cardRefs",ref:Ue,size:"compact",variant:"ghost",rounded:"lg","data-testid":`template-workflow-${re.name}`,class:"hover:bg-base-background",onMouseenter:n(Tt=>Ne.value=re.name,"onMouseenter"),onMouseleave:ae[7]||(ae[7]=Tt=>Ne.value=null),onClick:n(Tt=>xe(re),"onClick")},{top:A(()=>[O(Bo,{ratio:"square"},{default:A(()=>[c("div",nb,[re.mediaType==="audio"?(d(),R(Ey,{key:0,src:C(re)},null,8,["src"])):re.thumbnailVariant==="compareSlider"?(d(),R(Oy,{key:1,"base-image-src":C(re),"overlay-image-src":h(re),alt:m(v)(re,b(re)),"is-hovered":Ne.value===re.name,"is-video":re.mediaType==="video"||re.mediaSubtype==="webp"},null,8,["base-image-src","overlay-image-src","alt","is-hovered","is-video"])):re.thumbnailVariant==="hoverDissolve"?(d(),R(Fy,{key:2,"base-image-src":C(re),"overlay-image-src":h(re),alt:m(v)(re,b(re)),"is-hovered":Ne.value===re.name,"is-video":re.mediaType==="video"||re.mediaSubtype==="webp"},null,8,["base-image-src","overlay-image-src","alt","is-hovered","is-video"])):(d(),R(Ry,{key:3,src:C(re),alt:m(v)(re,b(re)),"is-hovered":Ne.value===re.name,"is-video":re.mediaType==="video"||re.mediaSubtype==="webp","hover-zoom":re.thumbnailVariant==="zoomHover"?16:5},null,8,["src","alt","is-hovered","is-video","hover-zoom"])),le.value===re.name?(d(),R(m(ri),{key:4,class:"absolute inset-0 z-10 m-auto h-12 w-12"})):E("",!0)])]),"bottom-right":A(()=>[re.tags&&re.tags.length>0?(d(!0),$(oe,{key:0},be(re.tags,Tt=>(d(),R(Fo,{key:Tt,label:Tt},null,8,["label"]))),128)):E("",!0)]),_:2},1024)]),bottom:A(()=>[O(Wo,null,{default:A(()=>[c("div",sb,[c("h3",{class:"m-0 line-clamp-1 text-sm",title:m(v)(re,b(re))},V(m(v)(re,b(re))),9,ab),c("div",lb,[c("div",ib,[c("p",{class:"m-0 line-clamp-2 text-sm text-muted",title:m(f)(re)},V(m(f)(re)),9,rb)]),re.tutorialUrl?(d(),$("div",ub,[Ne.value===re.name?de((d(),R(J,Pt({key:0,ref_for:!0},ee.$attrs,{variant:"inverted",size:"icon",onClick:ke(Tt=>w(re),["stop"])}),{default:A(()=>ae[17]||(ae[17]=[c("i",{class:"icon-[lucide--info] size-4"},null,-1)])),_:2},1040,["onClick"])),[[ft,ee.$t("g.seeTutorial"),void 0,{bottom:!0}]]):E("",!0)])):E("",!0)])])]),_:2},1024)]),_:2},1032,["data-testid","onMouseenter","onClick"])),[[Xe,Ee(re)]])),128)),(d(!0),$(oe,null,be(m(tt)?6:0,re=>(d(),R(zo,{key:`skeleton-${re}`,size:"compact",variant:"ghost",rounded:"lg",class:"hover:bg-base-background"},{top:A(()=>[O(Bo,{ratio:"square"},{default:A(()=>ae[18]||(ae[18]=[c("div",{class:"h-full w-full animate-pulse bg-dialog-surface"},null,-1)])),_:1})]),bottom:A(()=>[O(Wo,null,{default:A(()=>ae[19]||(ae[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))])),!m(we)&&m(qt)?(d(),$("div",{key:2,ref_key:"loadTrigger",ref:pt,class:"mt-4 flex h-4 w-full items-center justify-center"},[m(tt)?(d(),$("div",cb,V(ee.$t("templateWorkflows.loadingMore","Loading more...")),1)):E("",!0)],512)):E("",!0),m(we)?E("",!0):(d(),$("div",db,V(ee.$t("templateWorkflows.resultsCount",{count:m(z),total:m(F)})),1))]),_:1},8,["content-title"])}}}),sa="global-workflow-template-selector",vs=n(()=>{const e=yt(),o=ut();function t(){o.closeDialog({key:sa})}n(t,"hide");function s(l="command"){e.showLayoutDialog({key:sa,component:pb,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"),Ln=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=Oe(document,"mouseup",i),u=Oe(s,"mouseup",i);return{dispose:i}},"whileMouseDown"),fb={class:"flex h-8 w-8 items-center justify-center rounded-lg bg-black"},mb=["href","onMousedown","onClick"],gb={class:"p-menubar-item-label text-nowrap"},vb={key:3,class:"keybinding-tag ml-auto rounded border border-surface p-1 text-xs text-nowrap text-muted"},hb={key:4,class:"pi pi-angle-right ml-auto"},yb={class:"p-menubar-item-label text-nowrap"},bb=K({__name:"ComfyMenuButton",setup(e){const{t:o}=fe(),t=_e(),s=Ya(),l=dt(),a=Ja(),i=ut(),r=gt(),u=ie(),p=L(null),g=y({get:n(()=>u.get("Comfy.VueNodes.Enabled")??!1,"get"),set:n(async D=>{await u.set("Comfy.VueNodes.Enabled",D)},"set")});function v(D){p.value?.toggle(D)}n(v,"onLogoMenuClick");const f=n(D=>{const B=typeof D.label=="function"?D.label():D.label,j=B?o(`menuLabels.${He(B)}`,B):void 0;return{...D,label:j,items:D.items?.map(f)}},"translateMenuItem"),b=n(D=>{i.showDialog({key:"global-settings",headerComponent:gr,component:mr,props:{defaultPanel:D}})},"showSettings"),C=n(async()=>{await r.openManager({initialTab:eo.All,showToastOnLegacyError:!1})},"showManageExtensions"),h=y(()=>l.palettes.map(D=>({key:`theme-${D.id}`,label:D.name,parentPath:"theme",comfyCommand:{active:n(()=>l.activePaletteId===D.id,"active")},command:n(async()=>{await a.loadColorPalette(D.id)},"command")}))),w=y(()=>[{separator:!0},{key:"theme",label:o("menu.theme"),items:h.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(()=>vs().show("menu"),"command")},{key:"settings",label:o("g.settings"),icon:"mdi mdi-cog-outline",command:n(()=>{b()},"command")},{key:"manage-extensions",label:o("menu.manageExtensions"),icon:"mdi mdi-puzzle-outline",command:C}]),k=y(()=>{const D=s.menuItems.map(f);let B=D.findIndex(W=>W.key==="Help"),j;if(B!==-1){D[B].icon="mdi mdi-help-circle-outline";const W=B!==D.length-1;j=D.splice(B,1,...W?[{separator:!0}]:[])[0]}return B=D.length,D.splice(B,0,...w.value,...j?[{separator:!0},j]:[]),D}),I=n(()=>{Fe(()=>{p.value&&(p.value.dirty=!0)})},"onMenuShow"),x=n(D=>D.comfyCommand?.id==="Comfy.Canvas.ZoomIn"||D.comfyCommand?.id==="Comfy.Canvas.ZoomOut","isZoomCommand"),_=n((D,B)=>{D.comfyCommand&&Ln(B,async()=>{await t.execute(D.comfyCommand.id)},50)},"handleZoomMouseDown"),S=n((D,B)=>{if(x(D)||D.comfyCommand?.active)return B.preventDefault(),B.stopPropagation(),D.comfyCommand?.active&&D.command?.({item:D,originalEvent:B}),!1},"handleItemClick"),T=n(D=>D.parentPath&&(D.parentPath==="theme"||s.menuItemHasActiveStateChildren[D.parentPath]),"hasActiveStateSiblings"),N=n(()=>!1,"handleNodes2ToggleClick"),M=n(async D=>{await u.set("Comfy.VueNodes.Enabled",D)},"onNodes2ToggleChange");return(D,B)=>{const j=Ie("tooltip");return d(),$(oe,null,[de((d(),$("div",{class:Q(["comfy-menu-button-wrapper flex shrink-0 cursor-pointer flex-col items-center justify-center p-2 transition-colors",{"comfy-menu-button-active":p.value?.visible}]),onClick:B[0]||(B[0]=W=>v(W))},[c("div",fb,[O($y,{alt:"ComfyUI Logo",class:"comfyui-logo h-[18px] w-[18px] text-white",mode:"fill"})])],2)),[[j,{value:m(o)("sideToolbar.labels.menu"),showDelay:300,hideDelay:300}]]),O(m(ui),{ref_key:"menuRef",ref:p,model:k.value,popup:!0,class:"comfy-command-menu",onShow:I},{item:A(({item:W,props:H})=>[W.key!=="nodes-2.0-toggle"?(d(),$("a",Pt({key:0,class:"p-menubar-item-link px-4 py-2"},H.action,{href:W.url,target:"_blank",class:typeof W.class=="function"?W.class():W.class,onMousedown:n(U=>x(W)?_(W,U):void 0,"onMousedown"),onClick:n(U=>S(W,U),"onClick")}),[T(W)?(d(),$("i",{key:0,class:Q(["p-menubar-item-icon pi pi-check text-sm",{invisible:!W.comfyCommand?.active?.()}])},null,2)):W.icon&&W.comfyCommand?.id!=="Comfy.NewBlankWorkflow"?(d(),$("span",{key:1,class:Q(["p-menubar-item-icon text-sm",W.icon])},null,2)):E("",!0),c("span",gb,V(W.label),1),W.comfyCommand?.id==="Comfy.NewBlankWorkflow"?(d(),$("i",{key:2,class:Q(["ml-auto",W.icon])},null,2)):E("",!0),W?.comfyCommand?.keybinding?(d(),$("span",vb,V(W.comfyCommand.keybinding.combo.toString()),1)):E("",!0),W.items?(d(),$("i",hb)):E("",!0)],16,mb)):(d(),$("div",{key:1,class:"flex items-center justify-between px-4 py-2",onClick:ke(N,["stop"])},[c("span",yb,V(W.label),1),O(m(Zt),{severity:"info",class:"ml-2 text-xs"},{default:A(()=>[$e(V(D.$t("g.beta")),1)]),_:1}),O(m(Ea),{modelValue:g.value,"onUpdate:modelValue":[B[1]||(B[1]=U=>g.value=U),M],class:"ml-4","aria-label":W.label,pt:{root:{style:{width:"38px",height:"20px"}},handle:{style:{width:"16px",height:"16px"}}},onClick:B[2]||(B[2]=ke(()=>{},["stop"]))},null,8,["modelValue","aria-label"])]))]),_:1},8,["model"])],64)}}}),wb=Le(bb,[["__scopeId","data-v-7f8c3b49"]]),Cb={class:"side-bar-button-content"},kb={key:0,class:"side-bar-button-label"},xb=K({__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 p=Ie("tooltip");return de((d(),R(J,{class:Q(m(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]=g=>s("click",g))},{default:A(()=>[c("div",Cb,[he(r.$slots,"icon",{},()=>[a.value?(d(),R(m(ci),{key:0,value:l.value},{default:A(()=>[typeof r.icon=="string"?(d(),$("i",{key:0,class:Q(r.icon+" side-bar-button-icon")},null,2)):(d(),R(oo(r.icon),{key:1,class:"side-bar-button-icon"}))]),_:1},8,["value"])):typeof r.icon=="string"?(d(),$("i",{key:1,class:Q(r.icon+" side-bar-button-icon")},null,2)):typeof r.icon=="object"?(d(),R(oo(r.icon),{key:2,class:"side-bar-button-icon"})):E("",!0)],!0),r.label&&!r.isSmall?(d(),$("span",kb,V(m(t)(r.label)),1)):E("",!0)])]),_:3},8,["class","aria-label"])),[[p,{value:i.value,showDelay:300,hideDelay:300}]])}}}),Gt=Le(xb,[["__scopeId","data-v-bbb98ec9"]]),Sb=K({__name:"SidebarBottomPanelToggleButton",setup(e){const o=io(),t=n(()=>{o.toggleBottomPanel()},"toggleConsole");return(s,l)=>(d(),R(Gt,{icon:"icon-[ph--terminal-bold]",label:s.$t("sideToolbar.labels.console"),tooltip:s.$t("menu.toggleBottomPanel"),selected:m(o).activePanel=="terminal",onClick:t},null,8,["label","tooltip","selected"]))}}),_b=K({__name:"SidebarSettingsButton",setup(e){const{t:o}=fe(),{getCommand:t,formatKeySequence:s}=_e(),l=t("Comfy.ShowSettingsDialog"),a=y(()=>`${o("g.settings")} (${s(l)})`),i=n(()=>{l.function()},"showSettingsDialog");return(r,u)=>(d(),R(Gt,{icon:"icon-[lucide--settings]",label:r.$t("g.settings"),tooltip:a.value,onClick:i},null,8,["label","tooltip"]))}}),Tb=K({__name:"SidebarShortcutsToggleButton",setup(e){const{t:o}=fe(),t=io(),s=_e(),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(p,g)=>(d(),R(Gt,{icon:"icon-[lucide--keyboard]",label:p.$t("shortcuts.shortcuts"),tooltip:r.value,selected:i.value,onClick:u},null,8,["label","tooltip","selected"]))}}),$b=K({__name:"SidebarHelpCenterIcon",props:{isSmall:{type:Boolean}},setup(e){const{shouldShowRedDot:o,toggleHelpCenter:t}=gs();return(s,l)=>(d(),R(Gt,{icon:"pi pi-question-circle",class:"comfy-help-center-btn",label:s.$t("menu.help"),tooltip:s.$t("sideToolbar.helpCenter"),"icon-badge":m(o)?"•":"","is-small":s.isSmall,onClick:m(t)},null,8,["label","tooltip","icon-badge","is-small","onClick"]))}}),Nb=Le($b,[["__scopeId","data-v-4a7593e2"]]),Ib=K({__name:"SidebarLogoutIcon",setup(e){const{t:o}=fe(),t=Xa(),s=y(()=>`${o("sideToolbar.logout")} (${t.currentUser?.username})`),l=n(async()=>{await t.logout(),window.location.reload()},"logout");return(a,i)=>(d(),R(Gt,{icon:"pi pi-sign-out",tooltip:s.value,label:a.$t("sideToolbar.logout"),onClick:l},null,8,["tooltip","label"]))}}),Mb=K({__name:"SidebarTemplatesButton",setup(e){const o=ie(),t=y(()=>o.get("Comfy.Sidebar.Size")==="small"),s=n(()=>{vs().show("sidebar")},"openTemplates");return(l,a)=>(d(),R(Gt,{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"]))}}),Pb=20,Db=50,Ab=K({__name:"SideToolbar",setup(e){const o=it(),t=ie(),s=Xa(),l=_e(),a=ve(),i=L(),r=L(),u=L(),p=y(()=>t.get("Comfy.Sidebar.Size")==="small"),g=y(()=>t.get("Comfy.Sidebar.Location")),v=y(()=>t.get("Comfy.Sidebar.Style")),f=y(()=>t.get("Comfy.UI.TabBarLayout")==="Integrated"),b=y(()=>h.value||x.value||v.value==="connected"),C=y(()=>o.getSidebarTabs()),h=y(()=>o.sidebarTab.activeSidebarTab),w=n(async T=>{T.id,T.id,T.id,T.id,await l.commands.find(N=>N.id===`Workspace.ToggleSidebarTab.${T.id}`)?.function?.()},"onTabClick"),k=vr(),I=n(T=>{const N=k.getKeybindingByCommandId(`Workspace.ToggleSidebarTab.${T.id}`);return N?` (${N.combo.toString()})`:""},"getTabTooltipSuffix"),x=L(!1),_=y(()=>ne("sidebar-item-group flex flex-col items-center overflow-hidden flex-shrink-0",!b.value&&"rounded-lg shadow-interface pointer-events-auto")),S=tn(()=>{if(!i.value||!r.value||!u.value)return;const T=i.value.clientHeight,N=r.value.scrollHeight,M=u.value.scrollHeight,D=N+M;x.value?x.value=T<D+Db:x.value=T<D+Pb},16);return ze(()=>{if(!i.value)return;const T=ha(i.value,S);S(),rt(()=>{T.stop()}),se([p,g],async()=>{a.canvas&&(g.value==="left"?(await Fe(),a.canvas.fpsInfoLocation=[i.value?.getBoundingClientRect()?.right,null]):a.canvas.fpsInfoLocation=null,a.canvas.setDirty(!1,!0))},{immediate:!0})}),(T,N)=>(d(),$("nav",{ref_key:"sideToolbarRef",ref:i,class:Q(["side-tool-bar-container flex h-full flex-col items-center bg-transparent [.floating-sidebar]:-mr-2",{"small-sidebar":p.value,"connected-sidebar pointer-events-auto":b.value,"floating-sidebar":!b.value,"overflowing-sidebar":x.value,"border-r border-[var(--interface-stroke)] shadow-interface":b.value}])},[c("div",{class:Q(x.value?"side-tool-bar-container overflow-y-auto":"flex flex-col h-full")},[c("div",{ref_key:"topToolbarRef",ref:r,class:Q(_.value)},[O(wb),(d(!0),$(oe,null,be(C.value,M=>(d(),R(Gt,{key:M.id,icon:M.icon,"icon-badge":M.iconBadge,tooltip:M.tooltip,"tooltip-suffix":I(M),label:M.label||M.title,"is-small":p.value,selected:M.id===h.value?.id,class:Q(M.id+"-tab-button"),onClick:n(D=>w(M),"onClick")},null,8,["icon","icon-badge","tooltip","tooltip-suffix","label","is-small","selected","class","onClick"]))),128)),O(Mb)],2),c("div",{ref_key:"bottomToolbarRef",ref:u,class:Q(["mt-auto",_.value])},[m(s).isMultiUserServer?(d(),R(Ib,{key:0,"is-small":p.value},null,8,["is-small"])):E("",!0),f.value?E("",!0):(d(),R(Nb,{key:1,"is-small":p.value},null,8,["is-small"])),O(Sb,{"is-small":p.value},null,8,["is-small"]),O(Tb,{"is-small":p.value},null,8,["is-small"]),O(_b,{"is-small":p.value},null,8,["is-small"])],2)],2),O(_y,{"is-small":p.value},null,8,["is-small"])],2))}}),Lb=Le(Ab,[["__scopeId","data-v-9d98575c"]]),Eb=Dt("topbarBadge",()=>{const e=Yn();return{badges:y(()=>e.extensions.flatMap(t=>t.topbarBadges??[]))}}),Vb={class:"flex h-full shrink-0 items-center"},wl=K({__name:"TopbarBadges",props:{reverseOrder:{type:Boolean,default:!1},noPadding:{type:Boolean,default:!1}},setup(e){const o=Yo(Zo),t=o.greaterOrEqual("xl"),s=o.greaterOrEqual("lg"),l=y(()=>t.value?"full":s.value?"compact":"icon-only"),a=Eb();return(i,r)=>(d(),$("div",Vb,[(d(!0),$(oe,null,be(m(a).badges,u=>(d(),R(Yc,{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))]))}}),Ob={key:0,class:"absolute top-[7px] right-[7px] size-1.5 rounded-full bg-[#ff3b30]"},Rb=K({__name:"TopMenuHelpButton",setup(e){const{shouldShowRedDot:o,toggleHelpCenter:t}=gs("topbar");return(s,l)=>(d(),R(J,{class:"comfy-help-center-btn relative text-base-foreground",variant:"textonly",onClick:m(t)},{default:A(()=>[$e(V(s.$t("menu.helpAndFeedback"))+" ",1),l[0]||(l[0]=c("i",{class:"icon-[lucide--circle-help] ml-0.5"},null,-1)),m(o)?(d(),$("span",Ob)):E("",!0)]),_:1},8,["onClick"]))}}),Wb={class:"workflow-preview-content"},zb={key:0,class:"workflow-preview-thumbnail relative"},Bb=["src"],Fb={class:"workflow-preview-footer"},Ub={class:"workflow-preview-name"},Gb=250,Hb=K({__name:"WorkflowTabPopover",props:{workflowFilename:{},thumbnailUrl:{},isActiveTab:{type:Boolean}},setup(e,{expose:o}){const t=e,{thumbnailUrl:s,isActiveTab:l}=Ul(t),a=L(null),i=L(null);let r=null,u=null;const p=_n(),g=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 Fe();const h=document.querySelector(`.workflow-popover-fade[data-popover-id="${p}"]`);if(h){const w=i.value.getBoundingClientRect().left,k=h.getBoundingClientRect().width,I=k/2;let x=w-I,_=0;if(x<0)_=x-8,x=8;else if(x+k>window.innerWidth){const S=window.innerWidth-k-16;_=x-S,x=S}_+I<0&&(_=-I+24),h.style.left=`${x}px`,h.style.setProperty("--shift",`${_}px`)}}},200)},"showPopover"),v=n(()=>{},"cancelHidePopover"),f=n(()=>{u&&(clearTimeout(u),u=null),r=setTimeout(()=>{a.value&&a.value.hide()},100)},"hidePopover");return o({showPopover:g,hidePopover:f,togglePopover:n(C=>{a.value&&a.value.toggle(C)},"togglePopover")}),(C,h)=>(d(),$(oe,null,[c("div",{ref_key:"positionRef",ref:i,class:"absolute bottom-0 left-1/2 -translate-x-1/2"},null,512),O(m(et),{ref_key:"popoverRef",ref:a,"append-to":"body",pt:{root:{class:"workflow-popover-fade fit-content","data-popover-id":m(p)}},onMouseenter:v,onMouseleave:f},{default:A(()=>[c("div",Wb,[m(s)&&!m(l)?(d(),$("div",zb,[c("img",{src:m(s),class:"block h-[200px] rounded-lg object-cover p-2",style:ye({width:`${Gb}px`})},null,12,Bb)])):E("",!0),c("div",Fb,[c("span",Ub,V(C.workflowFilename),1)])])]),_:1},8,["pt"])],64))}}),jb=Le(Hb,[["__scopeId","data-v-4c13cb50"]]),qb={class:"workflow-label inline-block max-w-[150px] truncate text-sm"},Kb={class:"relative"},Qb={key:0,class:"absolute top-1/2 left-1/2 z-10 w-4 -translate-1/2 bg-(--comfy-menu-bg) text-2xl font-bold group-hover:hidden"},Yb=K({__name:"WorkflowTab",props:{workflowOption:{}},setup(e){const o=e,{t}=fe(),s=it(),l=We(),a=ie(),i=L(null),r=L(null),u=hr(),p=y(()=>a.get("Comfy.Workflow.AutoSave")),g=y(()=>a.get("Comfy.Workflow.AutoSaveDelay")),v=y(()=>s.shiftDown?!1:o.workflowOption.workflow.isPersisted?o.workflowOption.workflow.isModified?p.value==="off"||p.value==="after delay"&&g.value>3e3:!1:!0),f=y(()=>l.activeWorkflow?.key===o.workflowOption.workflow.key),b=y(()=>u.getThumbnail(o.workflowOption.workflow.key)),C=n(_=>{r.value?.showPopover(_)},"handleMouseEnter"),h=n(()=>{r.value?.hidePopover()},"handleMouseLeave"),w=n(_=>{r.value?.togglePopover(_)},"handleClick"),k=n(async _=>{for(const S of _)if(!await nt().closeWorkflow(S.workflow,{warnIfUnsaved:!s.shiftDown,hint:t("sideToolbar.workflowTab.dirtyCloseHint")}))break},"closeWorkflows"),I=n(async _=>{await k([_])},"onCloseWorkflow"),x=n(()=>i.value,"tabGetter");return yr(x,{getInitialData:n(()=>({workflowKey:o.workflowOption.workflow.key}),"getInitialData")}),Za(x,{getData:n(()=>({workflowKey:o.workflowOption.workflow.key}),"getData"),onDrop:n(_=>{const S=l.openWorkflows.findIndex(N=>N.key===_.source.data.workflowKey),T=l.openWorkflows.findIndex(N=>N.key===_.location.current.dropTargets[0]?.data.workflowKey);S!==T&&l.reorderWorkflows(S,T)},"onDrop")}),ht(()=>{r.value?.hidePopover()}),(_,S)=>(d(),$(oe,null,[c("div",Pt({ref_key:"workflowTabRef",ref:i,class:"workflow-tab group flex gap-2 p-2"},_.$attrs,{onMouseenter:C,onMouseleave:h,onClick:w}),[c("span",qb,V(_.workflowOption.workflow.filename),1),c("div",Kb,[v.value?(d(),$("span",Qb,"•")):E("",!0),O(J,{class:"close-button invisible w-auto p-0",variant:"muted-textonly",size:"icon-sm","aria-label":m(t)("g.close"),onClick:S[0]||(S[0]=ke(T=>I(_.workflowOption),["stop"]))},{default:A(()=>S[1]||(S[1]=[c("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])],16),O(jb,{ref_key:"popoverRef",ref:r,"workflow-filename":_.workflowOption.workflow.filename,"thumbnail-url":b.value,"is-active-tab":f.value},null,8,["workflow-filename","thumbnail-url","is-active-tab"])],64))}}),Jb=K({__name:"WorkflowOverflowMenu",props:{workflows:{},activeWorkflow:{}},setup(e){const o=e,t=L(null),s=nt(),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=Ie("tooltip");return d(),$("div",null,[de((d(),R(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(m(Da),{ref_key:"menu",ref:t,model:l.value,popup:!0,class:"max-h-[40vh] overflow-auto"},null,8,["model"])])}}}),Xb={key:3,class:"ml-auto flex shrink-0 items-center gap-2 px-2"},Zb={key:4,class:"window-actions-spacer app-drag shrink-0"},ew=K({__name:"WorkflowTabs",props:{class:{}},setup(e){const o=e,{t}=fe(),s=ie(),l=it(),a=We(),i=br(),r=nt(),{isLoggedIn:u}=Ft(),p=y(()=>s.get("Comfy.UI.TabBarLayout")==="Integrated"),g=L(),v=L(),f=L(null),b=L(!1),C=L(!1),h=L(!1),w=Ke(),k=n(G=>({value:G.path,workflow:G}),"workflowToOption"),I=y(()=>a.openWorkflows.map(k)),x=y(()=>a.activeWorkflow?k(a.activeWorkflow):null),_=n(async G=>{G&&x.value?.value!==G.value&&await r.openWorkflow(G.workflow)},"onWorkflowChange"),S=n(async G=>{for(const q of G)if(!await r.closeWorkflow(q.workflow,{warnIfUnsaved:!l.shiftDown}))break},"closeWorkflows"),T=n(async G=>{await S([G])},"onCloseWorkflow"),N=n((G,q)=>{g.value=q,v.value.show(G)},"showContextMenu"),M=y(()=>{const G=g.value;if(!G)return[];const q=I.value.findIndex(Z=>Z.workflow===G.workflow);return[{label:t("tabMenu.duplicateTab"),command:n(async()=>{await r.duplicateWorkflow(G.workflow)},"command")},{separator:!0},{label:t("tabMenu.closeTab"),command:n(()=>T(G),"command")},{label:t("tabMenu.closeTabsToLeft"),command:n(()=>S(I.value.slice(0,q)),"command"),disabled:q<=0},{label:t("tabMenu.closeTabsToRight"),command:n(()=>S(I.value.slice(q+1)),"command"),disabled:q===I.value.length-1},{label:t("tabMenu.closeOtherTabs"),command:n(()=>S([...I.value.slice(q+1),...I.value.slice(0,q)]),"command"),disabled:I.value.length<=1},{label:i.isBookmarked(G.workflow.path)?t("tabMenu.removeFromBookmarks"):t("tabMenu.addToBookmarks"),command:n(()=>i.toggleBookmarked(G.workflow.path),"command"),disabled:G.workflow.isTemporary}]}),D=_e(),B=n(G=>{const q=G.currentTarget,Z=G.deltaX||G.deltaY;q.scroll({left:q.scrollLeft+Z})},"handleWheel"),j=y(()=>f.value?.querySelector(".p-scrollpanel-content")??null),W=n(G=>{const q=j.value;q&&q.scrollBy({left:G*20})},"scroll"),H=n(async(G={})=>{if(!x.value)return;G.waitForDom!==!1&&await Fe();const q=f.value;if(!q)return;const Z=q.querySelector(".p-togglebutton-checked");Z&&Z.scrollIntoView({block:"nearest",inline:"nearest"})},"ensureActiveTabVisible");se(()=>a.activeWorkflow,()=>{H()},{immediate:!0});let U=null,z=null,F=null;return se(j,(G,q,Z)=>{if(z?.(),F?.(),U?.dispose(),!G)return;const te=_a(G);z=se([()=>te.arrivedState.left,()=>te.arrivedState.right],([X,ue])=>{C.value=!X,h.value=!ue},{immediate:!0}),U=dl(G),F=se(U.isOverflowing,X=>{b.value=X,X&&Fe(()=>{te.measure(),H({waitForDom:!1})})},{immediate:!0}),Z(()=>{z?.(),F?.(),U?.dispose()})},{immediate:!0}),ya(()=>{U?.disposed.value||U?.checkOverflow()}),(G,q)=>{const Z=Ie("tooltip");return d(),$("div",{ref_key:"containerRef",ref:f,class:Q(["workflow-tabs-container flex h-full max-w-full flex-auto flex-row overflow-hidden",{"workflow-tabs-container-desktop":m(w)}])},[b.value?(d(),R(J,{key:0,variant:"muted-textonly",size:"icon",class:"overflow-arrow overflow-arrow-left h-full w-auto aspect-square","aria-label":G.$t("g.scrollLeft"),disabled:!C.value,onMousedown:q[0]||(q[0]=te=>m(Ln)(te,()=>W(-1)))},{default:A(()=>q[3]||(q[3]=[c("i",{class:"icon-[lucide--chevron-left] size-full"},null,-1)])),_:1},8,["aria-label","disabled"])):E("",!0),O(m(di),{class:"no-drag overflow-hidden","pt:content":{class:"p-0 w-full flex",onwheel:B},"pt:bar-x":"h-1"},{default:A(()=>[O(m(Aa),{class:Q(["workflow-tabs bg-transparent",o.class]),"model-value":x.value,options:I.value,"option-label":"label","data-key":"value","onUpdate:modelValue":_},{option:A(({option:te})=>[O(Yb,{"workflow-option":te,onContextmenu:n(X=>N(X,te),"onContextmenu"),onMouseup:ke(X=>T(te),["middle"])},null,8,["workflow-option","onContextmenu","onMouseup"])]),_:1},8,["class","model-value","options"])]),_:1},8,["pt:content"]),b.value?(d(),R(J,{key:1,variant:"muted-textonly",size:"icon",class:"overflow-arrow overflow-arrow-right h-full w-auto aspect-square","aria-label":G.$t("g.scrollRight"),disabled:!h.value,onMousedown:q[1]||(q[1]=te=>m(Ln)(te,()=>W(1)))},{default:A(()=>q[4]||(q[4]=[c("i",{class:"icon-[lucide--chevron-right] size-full"},null,-1)])),_:1},8,["aria-label","disabled"])):E("",!0),b.value?(d(),R(Jb,{key:2,workflows:m(a).openWorkflows,"active-workflow":m(a).activeWorkflow},null,8,["workflows","active-workflow"])):E("",!0),de((d(),R(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":G.$t("sideToolbar.newBlankWorkflow"),onClick:q[2]||(q[2]=()=>m(D).execute("Comfy.NewBlankWorkflow"))},{default:A(()=>q[5]||(q[5]=[c("i",{class:"pi pi-plus"},null,-1)])),_:1},8,["aria-label"])),[[Z,{value:G.$t("sideToolbar.newBlankWorkflow"),showDelay:300}]]),p.value?(d(),$("div",Xb,[O(Rb),m(u)?(d(),R(rs,{key:0,"show-arrow":!1,compact:"",class:"shrink-0 p-1"})):m(w)?(d(),R(us,{key:1,class:"p-1"})):E("",!0)])):E("",!0),O(m(La),{ref_key:"menu",ref:v,model:M.value},null,8,["model"]),m(w)?(d(),$("div",Zb)):E("",!0)],2)}}}),Cl=Le(ew,[["__scopeId","data-v-70dffc3e"]]);function tw(){const e=L();function o(s){s?.graph&&(t(),e.value=Pe.onChange(l=>{for(const a of l.nodeIds){const i=Pe.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"),ht(t),{startSync:o,stopSync:t}}n(tw,"useLayoutSync");function ow(){const e=ve(),o=an(),{shouldRenderVueNodes:t}=jo(),s=Ze(null),{startSync:l}=tw(),a=n(()=>{const p=Y.canvas?.graph;if(!p||s.value)return;const g=bv(p);s.value=g;const v=p._nodes.map(f=>({id:f.id.toString(),pos:[f.pos[0],f.pos[1]],size:[f.size[0],wr(f.size[1])]}));Pe.initializeFromLiteGraph(v);for(const f of p.reroutes.values()){const[b,C]=f.pos,h=f.parentId??void 0,w=Array.from(f.linkIds);o.createReroute(f.id,{x:b,y:C},h,w)}for(const f of p._links.values())o.createLink(f.id,f.origin_id,f.origin_slot,f.target_id,f.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,p=>{p&&(a(),Ls(Y.canvas?.graph?.extra.workflowRendererVersion))},{immediate:!0}),xt(()=>!t.value,()=>{Ls(Y.canvas?.graph?.extra.workflowRendererVersion),i(),Y.canvas?.setDirty(!0,!0)}),se(()=>t.value,(p,g)=>{p!==g&&Pe.clearAllSlotLayouts()},{immediate:!0,flush:"sync"}),{nodeManager:s,initializeNodeManager:a,disposeNodeManagerAndSyncs:i,setupEmptyGraphListener:n(()=>{const p=Y.canvas?.graph;if(!t.value||s.value||p?._nodes.length!==0)return;const g=p.onNodeAdded;p.onNodeAdded=function(v){p.onNodeAdded=g,t.value&&!s.value&&a(),g&&g.call(this,v)}},"setupEmptyGraphListener"),cleanup:n(()=>{s.value&&(s.value.cleanup(),s.value=null)},"cleanup")}}n(ow,"useVueNodeLifecycleIndividual");const hs=on(ow),nw={minimumFractionDigits:0,maximumFractionDigits:0},Ko=n(e=>Cr({usd:e,numberOptions:nw}),"formatCreditsValue"),ys=n(e=>e?"~":"","makePrefix"),bs=n(e=>e??"/Run","makeSuffix"),ws=n(e=>e?` ${e}`:"","appendNote"),P=n((e,{suffix:o,note:t,approximate:s}={})=>`${ys(s)}${Ko(e)} credits${bs(o)}${ws(t)}`,"formatCreditsLabel"),me=n((e,o,{suffix:t,note:s,approximate:l}={})=>{const a=Ko(e),i=Ko(o),r=a===i?a:`${a}-${i}`;return`${ys(l)}${r} credits${bs(t)}${ws(s)}`},"formatCreditsRangeLabel"),Ge=n((e,{suffix:o,note:t,approximate:s,separator:l}={})=>{const i=e.map(r=>Ko(r)).join(l??"/");return`${ys(s)}${i} credits${bs(o)}${ws(t)}`},"formatCreditsListLabel");function sw(e,o,t=""){try{return e(o)}catch{return t}}n(sw,"safePricingExecution");const yn=n(e=>{const o=e.widgets?.find(a=>a.name==="duration");if(!o)return P(.0715,{suffix:"/second"});const t=Number(o.value),l=.0715*(isNaN(t)?5:t);return P(l)},"calculateRunwayDurationPrice"),Mo=n(e=>o=>{const t=o.widgets?.find(a=>a.name==="duration");if(!t)return P(e,{suffix:"/second"});const s=parseFloat(String(t.value));if(!Number.isFinite(s))return P(e,{suffix:"/second"});const l=e*s;return P(l)},"makeOmniProDurationCalculator"),aw=n(e=>{const o=e.widgets?.find(s=>s.name==="mode");if(!o)return Ge([.07,.112],{suffix:"/second",note:"(std/pro)"});const t=String(o.value).toLowerCase();return t==="pro"?P(.112,{suffix:"/second"}):t==="std"?P(.07,{suffix:"/second"}):Ge([.07,.112],{suffix:"/second",note:"(std/pro)"})},"klingMotionControlPricingCalculator"),bn=n(e=>{const o=e.widgets?.find(r=>r.name==="duration_seconds"),t=e.widgets?.find(r=>r.name==="quality"),s=e.widgets?.find(r=>r.name==="motion_mode");if(!o||!t)return 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 P(1.2);if(a.includes("720p")&&i?.includes("normal"))return P(.6);if(a.includes("540p")&&i?.includes("fast"))return P(.9);if(a.includes("540p")&&i?.includes("normal"))return P(.45);if(a.includes("360p")&&i?.includes("fast"))return P(.9);if(a.includes("360p")&&i?.includes("normal"))return P(.45)}else if(l.includes("8")){if(a.includes("540p")&&i?.includes("normal"))return P(.9);if(a.includes("540p")&&i?.includes("fast"))return P(1.2);if(a.includes("360p")&&i?.includes("normal"))return P(.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 P(1.2)}return P(.9)},"pixversePricingCalculator"),Po=n(e=>{const o=e.widgets?.find(w=>w.name==="model"),t=e.widgets?.find(w=>w.name==="duration"),s=e.widgets?.find(w=>w.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":"",p=a.includes("1080")?"1080p":a.includes("720")?"720p":a.includes("480")?"480p":"",g=u&&p?r[u]?.[p]:void 0;if(!g)return"Token-based";const[v,f]=g,b=i/10,C=v*b,h=f*b;return C===h?P(C):me(C,h)},"byteDanceVideoPricingCalculator"),aa=n(e=>{const o=e.widgets?.find(f=>f.name==="model"),t=e.widgets?.find(f=>f.name==="duration"),s=e.widgets?.find(f=>f.name==="resolution"),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)),p={"ltx-2 (pro)":{"1920x1080":.06,"2560x1440":.12,"3840x2160":.24},"ltx-2 (fast)":{"1920x1080":.04,"2560x1440":.08,"3840x2160":.16}}[a];if(!p)return l;const g=p[i];if(!g)return l;const v=g*r;return P(v)},"ltxvPricingCalculator"),la=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"?P(l?.7:.35):s==="10"?P(l?1.4:.7):me(.35,1.4,{note:"(varies with duration & audio)"})},"klingVideoWithAudioPricingCalculator"),So={BASIC:new Set(["720x1280","1280x720"]),PRO:new Set(["1024x1792","1792x1024"])},lw=new Set([...So.BASIC,...So.PRO]);function iw(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(!lw.has(l))return"Invalid size. Must be 720x1280, 1280x720, 1024x1792, or 1792x1024.";if(!s.includes("sora-2-pro")){if(s.includes("sora-2")&&!So.BASIC.has(l))return"sora-2 supports only 720x1280 or 1280x720";if(!s.includes("sora-2"))return"Unsupported model"}}n(iw,"validateSora2Selection");function rw(e,o){const t=e?.toLowerCase()??"",s=o?.toLowerCase()??"";return t.includes("sora-2-pro")?So.PRO.has(s)?.5:.3:t.includes("sora-2")?.1:So.PRO.has(s)?.5:.1}n(rw,"perSecForSora2");function uw(e,o){return P(Number((e*o).toFixed(2)))}n(uw,"formatRunPrice");const cw=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=iw(t,l,s);if(a)return a;const i=rw(t,s);return uw(i,l)},"sora2PricingCalculator"),wn=n((e,o)=>{const t=n(x=>e.widgets?.find(_=>_.name===x),"getWidget"),s=n((x,_)=>{const S=t(x);return!S||S.value===void 0||S.value===null?_:String(S.value)},"getString"),l=n((x,_)=>{const S=t(x);if(!S||S.value===void 0||S.value===null)return _;const T=S.value;if(typeof T=="number")return T!==0;const N=String(T).toLowerCase();return N==="true"?!0:N==="false"?!1:_},"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),p=l("pbr",!1),g=l("quad",!1),v=s("texture_quality","standard").toLowerCase(),f=s("geometry_quality","standard").toLowerCase(),b=v==="detailed",C=f==="detailed",h=u||p;let w;a.includes("v1.4")||h?o==="text"?w=20:w=30:o==="text"?w=10:w=20;let k=w;r&&(k+=5),g&&(k+=5),b&&(k+=10),C&&(k+=20);const I=k*.01;return P(I)},"calculateTripo3DGenerationPrice"),ia={FluxProCannyNode:{displayPrice:P(.05)},FluxProDepthNode:{displayPrice:P(.05)},FluxProExpandNode:{displayPrice:P(.05)},FluxProFillNode:{displayPrice:P(.05)},FluxProUltraImageNode:{displayPrice:P(.06)},FluxProKontextProNode:{displayPrice:P(.04)},FluxProKontextMaxNode:{displayPrice:P(.08)},Flux2ProImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(g=>g.name==="width"),t=e.widgets?.find(g=>g.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(g=>g.name==="images"),i=typeof a?.link<"u"&&a.link!=null,r=1024*1024,u=Math.max(1,Math.floor((s*l+r-1)/r)),p=.03+.015*Math.max(u-1,0);if(i){const g=p+.015,v=p+.12;return me(g,v,{approximate:!0})}return P(p)},"displayPrice")},Flux2MaxImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(g=>g.name==="width"),t=e.widgets?.find(g=>g.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(g=>g.name==="images"),i=typeof a?.link<"u"&&a.link!=null,r=1024*1024,u=Math.max(1,Math.floor((s*l+r-1)/r)),p=.07+.03*Math.max(u-1,0);if(i){const g=p+.03,v=p+.24;return me(g,v)}return P(p)},"displayPrice")},OpenAIVideoSora2:{displayPrice:cw},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 P(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 P(i)},"displayPrice")},IdeogramV3:{displayPrice:n(e=>{const o=e.widgets?.find(p=>p.name==="rendering_speed"),t=e.widgets?.find(p=>p.name==="num_images"),s=e.inputs?.find(p=>p.name==="character_image"),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 P(u)},"displayPrice")},KlingCameraControlI2VNode:{displayPrice:P(.49)},KlingCameraControlT2VNode:{displayPrice:P(.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")?P(.98):P(.49):a.includes("10")?P(.56):P(.28):i.includes("v1")?l.includes("pro")?a.includes("10")?P(.98):P(.49):a.includes("10")?P(.28):P(.14):P(.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")?P(1.4):r.includes("v1-6")||r.includes("v1-5")?P(.28):P(.14)}const l=String(o.value),a=String(s.value),i=String(t.value);return i.includes("v2-5-turbo")?a.includes("10")?P(.7):P(.35):i.includes("v2-1-master")||i.includes("v2-master")?a.includes("10")?P(2.8):P(1.4):i.includes("v2-1")||i.includes("v1-6")||i.includes("v1-5")?l.includes("pro")?a.includes("10")?P(.98):P(.49):a.includes("10")?P(.56):P(.28):i.includes("v1")?l.includes("pro")?a.includes("10")?P(.98):P(.49):a.includes("10")?P(.28):P(.14):P(.14)},"displayPrice")},KlingImageGenerationNode:{displayPrice:n(e=>{const t=e.inputs?.find(p=>p.name==="image")?.link?"image to image":"text to image",s=e.widgets?.find(p=>p.name==="model_name"),l=e.widgets?.find(p=>p.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 P(u)},"displayPrice")},KlingLipSyncAudioToVideoNode:{displayPrice:P(.1,{approximate:!0})},KlingLipSyncTextToVideoNode:{displayPrice:P(.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")?P(.28):t.includes("dizzydizzy")||t.includes("bloombloom")?P(.49):(t.includes("expansion"),P(.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")?P(.7):P(.35):t.includes("v2-1")?t.includes("10s")?P(.98):P(.49):t.includes("v2-master")?t.includes("10s")?P(2.8):P(1.4):t.includes("v1-6")?t.includes("pro")?t.includes("10s")?P(.98):P(.49):t.includes("10s")?P(.56):P(.28):t.includes("v1")?t.includes("pro")?t.includes("10s")?P(.98):P(.49):t.includes("10s")?P(.28):P(.14):P(.14)},"displayPrice")},KlingTextToVideoNode:{displayPrice: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")?P(.7):P(.35):t.includes("v2-1-master")||t.includes("v2-master")?t.includes("10s")?P(2.8):P(1.4):t.includes("v1-6")?t.includes("pro")?t.includes("10s")?P(.98):P(.49):t.includes("10s")?P(.56):P(.28):t.includes("v1")?t.includes("pro")?t.includes("10s")?P(.98):P(.49):t.includes("10s")?P(.28):P(.14):P(.14)},"displayPrice")},KlingVideoExtendNode:{displayPrice:P(.28)},KlingVirtualTryOnNode:{displayPrice:P(.07)},KlingOmniProTextToVideoNode:{displayPrice:Mo(.112)},KlingOmniProFirstLastFrameNode:{displayPrice:Mo(.112)},KlingOmniProImageToVideoNode:{displayPrice:Mo(.112)},KlingOmniProVideoToVideoNode:{displayPrice:Mo(.168)},KlingMotionControl:{displayPrice:aw},KlingOmniProEditVideoNode:{displayPrice:P(.168,{suffix:"/second"})},KlingOmniProImageNode:{displayPrice:P(.028)},KlingTextToVideoWithAudio:{displayPrice:la},KlingImageToVideoWithAudio:{displayPrice:la},LumaImageToVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="model"),t=e.widgets?.find(r=>r.name==="resolution"),s=e.widgets?.find(r=>r.name==="duration");if(!o||!t||!s)return 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 P(3.13);if(a.includes("1080p"))return P(.79);if(a.includes("720p"))return P(.34);if(a.includes("540p"))return P(.2)}else if(i.includes("9s")){if(a.includes("4k"))return P(5.65);if(a.includes("1080p"))return P(1.42);if(a.includes("720p"))return P(.61);if(a.includes("540p"))return P(.36)}}else if(l.includes("ray-2")){if(i.includes("5s")){if(a.includes("4k"))return P(9.11);if(a.includes("1080p"))return P(2.27);if(a.includes("720p"))return P(1.02);if(a.includes("540p"))return P(.57)}else if(i.includes("9s")){if(a.includes("4k"))return P(16.4);if(a.includes("1080p"))return P(4.1);if(a.includes("720p"))return P(1.83);if(a.includes("540p"))return P(1.03)}}else if(l.includes("ray-1-6"))return P(.5);return P(.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 P(3.13);if(a.includes("1080p"))return P(.79);if(a.includes("720p"))return P(.34);if(a.includes("540p"))return P(.2)}else if(i.includes("9s")){if(a.includes("4k"))return P(5.65);if(a.includes("1080p"))return P(1.42);if(a.includes("720p"))return P(.61);if(a.includes("540p"))return P(.36)}}else if(l.includes("ray-2")){if(i.includes("5s")){if(a.includes("4k"))return P(9.11);if(a.includes("1080p"))return P(2.27);if(a.includes("720p"))return P(1.02);if(a.includes("540p"))return P(.57)}else if(i.includes("9s")){if(a.includes("4k"))return P(16.4);if(a.includes("1080p"))return P(4.1);if(a.includes("720p"))return P(1.83);if(a.includes("540p"))return P(1.03)}}else if(l.includes("ray-1-6"))return P(.5);return P(.79)},"displayPrice")},MinimaxImageToVideoNode:{displayPrice:P(.43)},MinimaxTextToVideoNode:{displayPrice:P(.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 P(.28);if(l.includes("10"))return P(.56)}else if(s.includes("1080P")&&l.includes("6"))return P(.49);return P(.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 P(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")?P(.08):P(.04):s.includes("1792x1024")||s.includes("1024x1792")?l.includes("hd")?P(.12):P(.08):P(.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:bn},PixverseTextToVideoNode:{displayPrice:bn},PixverseTransitionVideoNode:{displayPrice:bn},RecraftCreativeUpscaleNode:{displayPrice:P(.25)},RecraftCrispUpscaleNode:{displayPrice:P(.004)},RecraftGenerateColorFromImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return P(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return P(s)},"displayPrice")},RecraftGenerateImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return P(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return P(s)},"displayPrice")},RecraftGenerateVectorImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return P(.08,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.08*t).toFixed(2));return P(s)},"displayPrice")},RecraftImageInpaintingNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return P(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return P(s)},"displayPrice")},RecraftImageToImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return P(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return P(s)},"displayPrice")},RecraftRemoveBackgroundNode:{displayPrice:P(.01)},RecraftReplaceBackgroundNode:{displayPrice:P(.04)},RecraftTextToImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return P(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return P(s)},"displayPrice")},RecraftTextToVectorNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return P(.08,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.08*t).toFixed(2));return P(s)},"displayPrice")},RecraftVectorizeImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return P(.01,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.01*t).toFixed(2));return P(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")?P(.065):(t.includes("medium"),P(.035))},"displayPrice")},StabilityStableImageUltraNode:{displayPrice:P(.08)},StabilityUpscaleConservativeNode:{displayPrice:P(.25)},StabilityUpscaleCreativeNode:{displayPrice:P(.25)},StabilityUpscaleFastNode:{displayPrice:P(.01)},StabilityTextToAudio:{displayPrice:P(.2)},StabilityAudioToAudio:{displayPrice:P(.2)},StabilityAudioInpaint:{displayPrice:P(.2)},VeoVideoGenerationNode:{displayPrice: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 P(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")?P(l?1.2:.8):s.includes("veo-3.0-generate-001")||s.includes("veo-3.1-generate")?P(l?3.2:1.6):me(.8,3.2)},"displayPrice")},Veo3FirstLastFrameNode:{displayPrice:n(e=>{const o=e.widgets?.find(p=>p.name==="model"),t=e.widgets?.find(p=>p.name==="generate_audio"),s=e.widgets?.find(p=>p.name==="duration");if(!o||!t||!s)return 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 P(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")?P(.0027):s.includes("photon-1")?P(.0104):P(.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")?P(.0027):t.includes("photon-1")?P(.0104):P(.0246)},"displayPrice")},MoonvalleyTxt2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return P(1.5);const t=String(o.value);return P(t==="5s"?1.5:t==="10s"?3:1.5)},"displayPrice")},MoonvalleyImg2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return P(1.5);const t=String(o.value);return P(t==="5s"?1.5:t==="10s"?3:1.5)},"displayPrice")},MoonvalleyVideo2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return P(2.25);const t=String(o.value);return P(t==="5s"?2.25:t==="10s"?4:2.25)},"displayPrice")},RunwayTextToImageNode:{displayPrice:P(.11)},RunwayImageToVideoNodeGen3a:{displayPrice:yn},RunwayImageToVideoNodeGen4:{displayPrice:yn},RunwayFirstLastFrameNode:{displayPrice:yn},Rodin3D_Regular:{displayPrice:P(.4)},Rodin3D_Detail:{displayPrice:P(.4)},Rodin3D_Smooth:{displayPrice:P(.4)},Rodin3D_Sketch:{displayPrice:P(.4)},TripoTextToModelNode:{displayPrice:n(e=>wn(e,"text"),"displayPrice")},TripoImageToModelNode:{displayPrice:n(e=>wn(e,"image"),"displayPrice")},TripoMultiviewToModelNode:{displayPrice:n(e=>wn(e,"multiview"),"displayPrice")},TripoTextureNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="texture_quality");return o?String(o.value).includes("detailed")?P(.2):P(.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(h=>h.name===C)?.value,"getWidgetValue"),t=n((C,h)=>{const w=o(C);if(w==null||w==="")return h;if(typeof w=="number")return Number.isFinite(w)?w:h;const k=Number(w);return Number.isFinite(k)?k:h},"getNumber"),s=n((C,h)=>{const w=o(C);if(w==null)return h;if(typeof w=="number")return w!==0;const k=String(w).toLowerCase();return k==="true"?!0:k==="false"?!1:h},"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),P((l?10:5)*.01)},"displayPrice")},TripoRetargetNode:{displayPrice:P(.1)},TripoRefineNode:{displayPrice:P(.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")?Ge([3e-4,.0025],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gemini-2.5-flash")?Ge([3e-4,.0025],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gemini-2.5-pro-preview-05-06")?Ge([.00125,.01],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gemini-2.5-pro")?Ge([.00125,.01],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gemini-3-pro-preview")?Ge([.002,.012],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):"Token-based"},"displayPrice")},GeminiImageNode:{displayPrice:P(.039,{suffix:"/Image (1K)",approximate:!0})},GeminiImage2Node:{displayPrice: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")?P(.134,{suffix:"/Image",approximate:!0}):t.includes("2K")?P(.134,{suffix:"/Image",approximate:!0}):t.includes("4K")?P(.24,{suffix:"/Image",approximate:!0}):"Token-based"},"displayPrice")},OpenAIChatNode:{displayPrice: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")?Ge([.0011,.0044],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("o1-pro")?Ge([.15,.6],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("o1")?Ge([.015,.06],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("o3-mini")?Ge([.0011,.0044],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("o3")?Ge([.01,.04],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-4o")?Ge([.0025,.01],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-4.1-nano")?Ge([1e-4,4e-4],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-4.1-mini")?Ge([4e-4,.0016],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-4.1")?Ge([.002,.008],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-5-nano")?Ge([5e-5,4e-4],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-5-mini")?Ge([25e-5,.002],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):t.includes("gpt-5")?Ge([.00125,.01],{suffix:" per 1K tokens",approximate:!0,separator:"-"}):"Token-based"},"displayPrice")},ViduTextToVideoNode:{displayPrice:P(.4)},ViduImageToVideoNode:{displayPrice:P(.4)},ViduReferenceVideoNode:{displayPrice:P(.4)},ViduStartEndToVideoNode:{displayPrice:P(.4)},ByteDanceImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");return o&&String(o.value).includes("seedream-3-0-t2i")?P(.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")?P(.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),P(s,{suffix:" x images/Run",approximate:!0})},"displayPrice")},ByteDanceTextToVideoNode:{displayPrice:Po},ByteDanceImageToVideoNode:{displayPrice:Po},ByteDanceFirstLastFrameNode:{displayPrice:Po},ByteDanceImageReferenceNode:{displayPrice:Po},WanTextToVideoApi:{displayPrice:n(e=>{const o=e.widgets?.find(p=>p.name==="duration"),t=e.widgets?.find(p=>p.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 P(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 P(r)},"displayPrice")},WanTextToImageApi:{displayPrice:P(.03)},WanImageToImageApi:{displayPrice:P(.03)},LtxvApiTextToVideo:{displayPrice:aa},LtxvApiImageToVideo:{displayPrice:aa},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,p=i+u,g=r+u;return me(p,g)},"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 P(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,p;if(l.includes("q2-pro-fast"))u=r?.08:.04,p=r?.02:.01;else if(l.includes("q2-pro"))u=r?.275:.075,p=r?.075:.05;else if(l.includes("q2-turbo"))if(r)u=.175,p=.05;else{if(a<=1)return P(.04);if(a<=2)return P(.05);const v=.05+.05*(a-2);return P(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 g=u+p*(a-1);return P(g)},"displayPrice")},Vidu2ReferenceVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(f=>f.name==="duration"),t=e.widgets?.find(f=>f.name==="resolution"),s=e.widgets?.find(f=>f.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 p,g;i?(p=.375,g=.05):(p=.125,g=.025);let v=p;return Number.isFinite(l)&&l>0&&(v=p+g*(l-1)),u&&(v+=.075),P(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,p;if(l.includes("q2-pro-fast"))u=r?.08:.04,p=r?.02:.01;else if(l.includes("q2-pro"))u=r?.275:.075,p=r?.075:.05;else if(l.includes("q2-turbo"))if(r)u=.175,p=.05;else{if(!Number.isFinite(a)||a<=1)return P(.04);if(a<=2)return P(.05);const v=.05+.05*(a-2);return P(v)}else return me(.04,1,{note:"(varies with model, duration & resolution)"});if(!Number.isFinite(a)||a<=0)return P(u);const g=u+p*(a-1);return P(g)},"displayPrice")}},dw=n(()=>({getNodeDisplayPrice:n(s=>{if(!s.constructor?.nodeData?.api_node)return"";const l=s.constructor.nodeData.name,a=ia[l];return a?typeof a.displayPrice=="function"?sw(a.displayPrice,s,""):a.displayPrice:""},"getNodeDisplayPrice"),getNodePricingConfig:n(s=>ia[s.constructor.nodeData?.name??""],"getNodePricingConfig"),getRelevantWidgetNames:n(s=>({KlingTextToVideoNode:["mode","model_name","duration"],KlingImage2VideoNode:["mode","model_name","duration"],KlingImageGenerationNode:["modality","model_name","n"],KlingDualCharacterVideoEffectNode:["mode","model_name","duration"],KlingSingleImageVideoEffectNode:["effect_scene"],KlingStartEndFrameNode:["mode","model_name","duration"],KlingTextToVideoWithAudio:["duration","generate_audio"],KlingImageToVideoWithAudio:["duration","generate_audio"],KlingOmniProTextToVideoNode:["duration"],KlingOmniProFirstLastFrameNode:["duration"],KlingOmniProImageToVideoNode:["duration"],KlingOmniProVideoToVideoNode:["duration"],KlingMotionControl:["mode"],MinimaxHailuoVideoNode:["resolution","duration"],OpenAIDalle3:["size","quality"],OpenAIDalle2:["size","n"],OpenAIVideoSora2:["model","size","duration"],OpenAIGPTImage1:["quality","n"],IdeogramV1:["num_images","turbo"],IdeogramV2:["num_images","turbo"],IdeogramV3:["rendering_speed","num_images","character_image"],FluxProKontextProNode:[],FluxProKontextMaxNode:[],Flux2ProImageNode:["width","height","images"],Flux2MaxImageNode:["width","height","images"],VeoVideoGenerationNode:["duration_seconds"],Veo3VideoGenerationNode:["model","generate_audio"],Veo3FirstLastFrameNode:["model","generate_audio","duration"],LumaVideoNode:["model","resolution","duration"],LumaImageToVideoNode:["model","resolution","duration"],LumaImageNode:["model","aspect_ratio"],LumaImageModifyNode:["model","aspect_ratio"],PixverseTextToVideoNode:["duration_seconds","quality","motion_mode"],PixverseTransitionVideoNode:["duration_seconds","motion_mode","quality"],PixverseImageToVideoNode:["duration_seconds","quality","motion_mode"],StabilityStableImageSD_3_5Node:["model"],RecraftTextToImageNode:["n"],RecraftImageToImageNode:["n"],RecraftImageInpaintingNode:["n"],RecraftTextToVectorNode:["n"],RecraftVectorizeImageNode:["n"],RecraftGenerateColorFromImageNode:["n"],RecraftGenerateImageNode:["n"],RecraftGenerateVectorImageNode:["n"],MoonvalleyTxt2VideoNode:["length"],MoonvalleyImg2VideoNode:["length"],MoonvalleyVideo2VideoNode:["length"],RunwayImageToVideoNodeGen3a:["duration"],RunwayImageToVideoNodeGen4:["duration"],RunwayFirstLastFrameNode:["duration"],TripoTextToModelNode:["model_version","quad","style","texture","pbr","texture_quality","geometry_quality"],TripoImageToModelNode:["model_version","quad","style","texture","pbr","texture_quality","geometry_quality"],TripoMultiviewToModelNode:["model_version","quad","texture","pbr","texture_quality","geometry_quality"],TripoConversionNode:["quad","face_limit","texture_size","texture_format","force_symmetry","flatten_bottom","flatten_bottom_threshold","pivot_to_center_bottom","scale_factor","with_animation","pack_uv","bake","part_names","fbx_preset","export_vertex_colors","export_orientation","animate_in_place"],TripoTextureNode:["texture_quality"],GeminiNode:["model"],GeminiImage2Node:["resolution"],OpenAIChatNode:["model"],ByteDanceImageNode:["model"],ByteDanceImageEditNode:["model"],ByteDanceSeedreamNode:["model","sequential_image_generation","max_images"],ByteDanceTextToVideoNode:["model","duration","resolution"],ByteDanceImageToVideoNode:["model","duration","resolution"],ByteDanceFirstLastFrameNode:["model","duration","resolution"],ByteDanceImageReferenceNode:["model","duration","resolution"],WanTextToVideoApi:["duration","size"],WanImageToVideoApi:["duration","resolution"],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"),En=new Image;En.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 pw=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(p=>t(p)));return r}n(o,"collectCreditsBadges");function t(a){return(typeof a=="function"?a():a).icon?.image===En}n(t,"isCreditsBadge");const s=dt();function l(a){const i=s.completedActivePalette.light_theme;return new as({text:a,iconOptions:{image:En,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"),fw=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=no(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(p=>p.name==u)?-1:e.inputs.findIndex(p=>p.name==u)).filter(u=>u>=0);e.onConnectionsChange=no(e.onConnectionsChange,(u,p,g)=>{r.includes(p)&&(l.value={...l.value,[r[p]]:g},s&&e.graph?.setDirtyCanvas(!0,!0))})}}return a=>Gl(l,a)},"useComputedWithWidgetWatch"),mw=n(()=>{const e=ie(),o=Yn(),t=dt(),s=pw(),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 p(g,v){return!(v===mt.None||g?.isCoreNode&&v===mt.HideBuiltIn)}n(p,"badgeTextVisible"),ze(()=>{const g=dw();o.registerExtension({name:"Comfy.NodeBadge",nodeCreated(v){v.badgePosition=kr.TopRight;const f=y(()=>{const b=u.fromLGraphNode(v);return new as({text:Hl.truncate([p(b,a.value)?`#${v.id}`:"",p(b,i.value)?b?.nodeLifeCycleBadgeText??"":"",p(b,l.value)?b?.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(()=>f.value),v.constructor.nodeData?.api_node&&r.value){const C=typeof g.getNodePricingConfig(v)?.displayPrice=="function";let h;const w=n(()=>{const k=g.getNodeDisplayPrice(v);return s.getCreditsBadge(k)},"createBadge");if(C){const k=g.getRelevantWidgetNames(v.constructor.nodeData?.name);h=fw(v,{widgetNames:k,triggerCanvasRedraw:!0})(w)}else h=y(w);v.badges.push(()=>h.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"),gw=n(e=>{const o=qn(),t=_o(),s=nt();Za(()=>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,p=el().clientPosToCanvasPos([a.clientX,a.clientY]);if(r.data instanceof xr){const g=r.data,v=[...p];v[1]+=ge.NODE_TITLE_HEIGHT,t.addNodeOnGraph(g,{pos:v})}else if(r.data instanceof Sr){const g=r.data,v=p,f=Y.canvas.graph?.getNodeOnPos(v[0],v[1]);let b=null,C=null;if(f){const h=o.getAllNodeProviders(g.directory);for(const w of h)w.nodeDef.name===f.comfyClass&&(C=f,b=w)}if(!C){const h=o.getNodeProvider(g.directory);h&&(C=t.addNodeOnGraph(h.nodeDef,{pos:v}),b=h)}if(C){const h=C.widgets?.find(w=>w.name===b?.key);h&&(h.value=g.file_name)}}else if(r.data instanceof Ra){const g=r.data;await s.insertWorkflow(g,{position:p})}}},"onDrop")})},"useCanvasDrop"),vw=n(()=>{Yt.install(Ye.prototype,"getCanvasMenuOptions");const{getCanvasMenuOptions:e}=Ye.prototype,o=n(function(...r){const u=e.apply(this,r),p=Y.collectCanvasMenuItems(this);for(const v of p)u.push(v);const g=Yt.extractLegacyItems("getCanvasMenuOptions",this,...r);for(const v of g)u.push(v);for(const v of u)v?.content&&(v.content=Ae(`contextMenu.${v.content}`,v.content));return u},"getCanvasCenterMenuOptions");Ye.prototype.getCanvasMenuOptions=o,Yt.registerWrapper("getCanvasMenuOptions",o,e,Ye.prototype),Yt.install(Ye.prototype,"getNodeMenuOptions");const t=Ye.prototype.getNodeMenuOptions,s=n(function(...r){const u=t.apply(this,r),p=r[0],g=Y.collectNodeMenuItems(p);for(const f of g)u.push(f);const v=Yt.extractLegacyItems("getNodeMenuOptions",this,...r);for(const f of v)u.push(f);return u},"getNodeMenuOptionsWithExtensions");Ye.prototype.getNodeMenuOptions=s,Yt.registerWrapper("getNodeMenuOptions",s,t,Ye.prototype);function l(r,u){if(!r)return;const p=/Convert (.*) to input/,g=/Convert (.*) to widget/,v=Ae("contextMenu.Convert ","Convert "),f=Ae("contextMenu. to input"," to input"),b=Ae("contextMenu. to widget"," to widget");for(const C of r){if(typeof C=="string"||(l(C?.submenu?.options,u),!C?.content))continue;_r(`contextMenu.${C.content}`)&&(C.content=Ae(`contextMenu.${C.content}`,C.content));const h=u.extra||u.parentMenu?.options?.extra,w=C.content?.match(p);if(w){let I=w[1];h?.inputs?.find(x=>{if(x.name!=I)return!1;I=x.label?x.label:x.name}),h?.widgets?.find(x=>{if(x.name!=I)return!1;I=x.label?x.label:x.name}),C.content=v+I+f;continue}const k=C.content?.match(g);if(k){let I=k[1];h?.inputs?.find(x=>{if(x.name!=I)return!1;I=x.label?x.label:x.name}),h?.widgets?.find(x=>{if(x.name!=I)return!1;I=x.label?x.label:x.name}),C.content=v+I+b;continue}}}n(l,"translateMenus");const a=ge.ContextMenu;function i(r,u){return u.title&&(u.title=Ae(`nodeDefs.${He(u.title)}.display_name`,u.title)),l(r,u),new a(r,u)}n(i,"ContextMenu"),ge.ContextMenu=i,ge.ContextMenu.prototype=a.prototype},"useContextMenuTranslation"),hw=['<meta charset="utf-8"><div><span data-metadata="','"></span></div><span style="white-space:pre-wrap;">Text</span>'],yw=n(()=>{const e=ve();Oe(document,"copy",o=>{if(Tr(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",hw.join(l)),o.preventDefault(),o.stopImmediatePropagation(),!1}})},"useCopy"),bw=n(()=>{window.LiteGraph=ge,window.LGraph=$r,window.LLink=Nr,window.LGraphNode=vt,window.LGraphGroup=Ot,window.DragAndScale=Ir,window.LGraphCanvas=Ye,window.ContextMenu=Mr,window.LGraphBadge=as},"useGlobalLitegraph"),ww=n(()=>{const e=ie(),o=ve();Ce(()=>{const t=e.get("Comfy.Graph.CanvasInfo");o.canvas&&(o.canvas.show_info=t,o.canvas.draw(!1,!0))}),Ce(()=>{const t=e.get("Comfy.Graph.ZoomSpeed");o.canvas&&(o.canvas.zoom_speed=t)}),Ce(()=>{ge.snaps_for_comfy=e.get("Comfy.Node.AutoSnapLinkToSlot")}),Ce(()=>{ge.snap_highlights_node=e.get("Comfy.Node.SnapHighlightsNode")}),Ce(()=>{vt.keepAllLinksOnBypass=e.get("Comfy.Node.BypassAllLinksOnDelete")}),Ce(()=>{ge.middle_click_slot_add_default_node=e.get("Comfy.Node.MiddleClickRerouteNode")}),Ce(()=>{const t=e.get("Comfy.LinkRenderMode");o.canvas&&(o.canvas.links_render_mode=t,o.canvas.setDirty(!1,!0))}),Ce(()=>{const t=e.get("LiteGraph.Canvas.MinFontSizeForLOD");o.canvas&&(o.canvas.min_font_size_for_lod=t,o.canvas.setDirty(!0,!0))}),Ce(()=>{const t=e.get("Comfy.Graph.LinkMarkers"),{canvas:s}=o;s&&(s.linkMarkerShape=t,s.setDirty(!1,!0))}),Ce(()=>{const t=e.get("LiteGraph.Canvas.MaximumFps"),{canvas:s}=o;s&&(s.maximumFps=t)}),Ce(()=>{const t=e.get("Comfy.Graph.CtrlShiftZoom"),{canvas:s}=o;s&&(s.dragZoomEnabled=t)}),Ce(()=>{const t=e.get("Comfy.Graph.LiveSelection"),{canvas:s}=o;s&&(s.liveSelection=t)}),Ce(()=>{cn.doubleClickTime=e.get("Comfy.Pointer.DoubleClickTime")}),Ce(()=>{cn.bufferTime=e.get("Comfy.Pointer.ClickBufferTime")}),Ce(()=>{cn.maxClickDrift=e.get("Comfy.Pointer.ClickDrift")}),Ce(()=>{ge.CANVAS_GRID_SIZE=e.get("Comfy.SnapToGrid.GridSize")}),Ce(()=>{ge.alwaysSnapToGrid=e.get("pysssss.SnapToGrid")}),Ce(()=>{ge.context_menu_scaling=e.get("LiteGraph.ContextMenu.Scaling")}),Ce(()=>{ge.Reroute.maxSplineOffset=e.get("LiteGraph.Reroute.SplineOffset")}),Ce(()=>{const t=e.get("Comfy.Canvas.NavigationMode");ge.canvasNavigationMode=t,ge.macTrackpadGestures=t==="standard"}),Ce(()=>{const t=e.get("Comfy.Canvas.LeftMouseClickBehavior");ge.leftMouseClickBehavior=t}),Ce(()=>{const t=e.get("Comfy.Canvas.MouseWheelScroll");ge.mouseWheelScroll=t}),Ce(()=>{ge.saveViewportWithGraph=e.get("Comfy.EnableWorkflowViewRestore")})},"useLitegraphSettings"),Cw=[{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=ie();e==="standard"?(await t.set("Comfy.Canvas.LeftMouseClickBehavior","select"),await t.set("Comfy.Canvas.MouseWheelScroll","panning")):e==="legacy"&&(await t.set("Comfy.Canvas.LeftMouseClickBehavior","panning"),await t.set("Comfy.Canvas.MouseWheelScroll","zoom"))},"onChange")},{id:"Comfy.Canvas.LeftMouseClickBehavior",category:["LiteGraph","Canvas Navigation","LeftMouseClickBehavior"],name:"Left Mouse Click Behavior",defaultValue:"panning",type:"radio",sortOrder:50,options:[{value:"panning",text:"Panning"},{value:"select",text:"Select"}],versionAdded:"1.27.4",onChange:n(async e=>{const o=ie(),t=o.get("Comfy.Canvas.NavigationMode");if(t!=="custom"){if(e==="select"&&t==="standard"||e==="panning"&&t==="legacy")return;await o.set("Comfy.Canvas.NavigationMode","custom")}},"onChange")},{id:"Comfy.Canvas.MouseWheelScroll",category:["LiteGraph","Canvas Navigation","MouseWheelScroll"],name:"Mouse Wheel Scroll",defaultValue:"zoom",type:"radio",options:[{value:"panning",text:"Panning"},{value:"zoom",text:"Zoom in/out"}],versionAdded:"1.27.4",onChange:n(async e=>{const o=ie(),t=o.get("Comfy.Canvas.NavigationMode");if(t!=="custom"){if(e==="panning"&&t==="standard"||e==="zoom"&&t==="legacy")return;await o.set("Comfy.Canvas.NavigationMode","custom")}},"onChange")},{id:"Comfy.Graph.CanvasInfo",category:["LiteGraph","Canvas","CanvasInfo"],name:"Show canvas info on bottom left corner (fps, etc.)",type:"boolean",defaultValue:!0},{id:"Comfy.Node.ShowDeprecated",name:"Show deprecated nodes in search",tooltip:"Deprecated nodes are hidden by default in the UI, but remain functional in existing workflows that use them.",type:"boolean",defaultValue:!1},{id:"Comfy.Node.ShowExperimental",name:"Show experimental nodes in search",tooltip:"Experimental nodes are marked as such in the UI and may be subject to significant changes or removal in future versions. Use with caution in production workflows",type:"boolean",defaultValue:!0},{id:"Comfy.Node.Opacity",category:["Appearance","Node","Opacity"],name:"Node opacity",type:"slider",defaultValue:1,attrs:{min:.01,max:1,step:.01}},{id:"Comfy.Workflow.ShowMissingNodesWarning",name:"Show missing nodes warning",type:"boolean",defaultValue:!0},{id:"Comfy.Workflow.ShowMissingModelsWarning",name:"Show missing models warning",type:"boolean",defaultValue:!0,experimental:!0},{id:"Comfy.Workflow.WarnBlueprintOverwrite",name:"Require confirmation to overwrite an existing subgraph blueprint",type:"boolean",defaultValue:!0},{id:"Comfy.Graph.ZoomSpeed",category:["LiteGraph","Canvas","ZoomSpeed"],name:"Canvas zoom speed",type:"slider",defaultValue:1.1,attrs:{min:1.01,max:2.5,step:.01}},{id:"Comfy.NodeLibrary.Bookmarks",name:"Node library bookmarks with display name (deprecated)",type:"hidden",defaultValue:[],deprecated:!0},{id:"Comfy.NodeLibrary.Bookmarks.V2",name:"Node library bookmarks v2 with unique name",type:"hidden",defaultValue:[]},{id:"Comfy.NodeLibrary.BookmarksCustomization",name:"Node library bookmarks customization",type:"hidden",defaultValue:{}},{id:"Comfy.GroupSelectedNodes.Padding",category:["LiteGraph","Group","Padding"],name:"Group selected nodes padding",type:"slider",defaultValue:10,attrs:{min:0,max:100}},{id:"Comfy.Node.DoubleClickTitleToEdit",category:["LiteGraph","Node","DoubleClickTitleToEdit"],name:"Double click node title to edit",type:"boolean",defaultValue:!0},{id:"Comfy.Node.AllowImageSizeDraw",category:["LiteGraph","Node Widget","AllowImageSizeDraw"],name:"Show width × height below the image preview",type:"boolean",defaultValue:!0},{id:"Comfy.Group.DoubleClickTitleToEdit",category:["LiteGraph","Group","DoubleClickTitleToEdit"],name:"Double click group title to edit",type:"boolean",defaultValue:!0},{id:"Comfy.Window.UnloadConfirmation",name:"Show confirmation when closing window",type:"boolean",defaultValue:!0,versionModified:"1.7.12"},{id:"Comfy.TreeExplorer.ItemPadding",category:["Appearance","Tree Explorer","ItemPadding"],name:"Tree explorer item padding",type:"slider",defaultValue:2,attrs:{min:0,max:8,step:1}},{id:"Comfy.ModelLibrary.AutoLoadAll",name:"Automatically load all model folders",tooltip:"If true, all folders will load as soon as you open the model library (this may cause delays while it loads). If false, root level model folders will only load once you click on them.",type:"boolean",defaultValue:!1},{id:"Comfy.ModelLibrary.NameFormat",name:"What name to display in the model library tree view",tooltip:'Select "filename" to render a simplified view of the raw filename (without directory or ".safetensors" extension) in the model list. Select "title" to display the configurable model metadata title.',type:"combo",options:["filename","title"],defaultValue:"title"},{id:"Comfy.Locale",name:"Language",type:"combo",options:[{value:"en",text:"English"},{value:"zh",text:"中文"},{value:"zh-TW",text:"繁體中文"},{value:"ru",text:"Русский"},{value:"ja",text:"日本語"},{value:"ko",text:"한국어"},{value:"fr",text:"Français"},{value:"es",text:"Español"},{value:"ar",text:"عربي"},{value:"tr",text:"Türkçe"},{value:"pt-BR",text:"Português (BR)"},{value:"fa",text:"فارسی"}],defaultValue:n(()=>navigator.language.split("-")[0]||"en","defaultValue")},{id:"Comfy.NodeBadge.NodeSourceBadgeMode",category:["LiteGraph","Node","NodeSourceBadgeMode"],name:"Node source badge mode",type:"combo",options:Object.values(mt),defaultValue:mt.HideBuiltIn},{id:"Comfy.NodeBadge.NodeIdBadgeMode",category:["LiteGraph","Node","NodeIdBadgeMode"],name:"Node ID badge mode",type:"combo",options:[mt.None,mt.ShowAll],defaultValue:mt.None},{id:"Comfy.NodeBadge.NodeLifeCycleBadgeMode",category:["LiteGraph","Node","NodeLifeCycleBadgeMode"],name:"Node life cycle badge mode",type:"combo",options:[mt.None,mt.ShowAll],defaultValue:mt.ShowAll},{id:"Comfy.NodeBadge.ShowApiPricing",category:["Comfy","API Nodes"],name:"Show API node pricing badge",type:"boolean",defaultValue:!0,versionAdded:"1.20.3"},{id:"Comfy.Notification.ShowVersionUpdates",category:["Comfy","Notification Preferences"],name:"Show version updates",tooltip:"Show updates for new models, and major new features.",type:"boolean",defaultValue:!0},{id:"Comfy.ConfirmClear",category:["Comfy","Workflow","ConfirmClear"],name:"Require confirmation when clearing workflow",type:"boolean",defaultValue:!0},{id:"Comfy.PromptFilename",category:["Comfy","Workflow","PromptFilename"],name:"Prompt for filename when saving workflow",type:"boolean",defaultValue:!0},{id:"Comfy.PreviewFormat",category:["LiteGraph","Node Widget","PreviewFormat"],name:"Preview image format",tooltip:"When displaying a preview in the image widget, convert it to a lightweight image, e.g. webp, jpeg, webp;50, etc.",type:"text",defaultValue:""},{id:"Comfy.DisableSliders",category:["LiteGraph","Node Widget","DisableSliders"],name:"Disable node widget sliders",type:"boolean",defaultValue:!1},{id:"Comfy.DisableFloatRounding",category:["LiteGraph","Node Widget","DisableFloatRounding"],name:"Disable default float widget rounding.",tooltip:"(requires page reload) Cannot disable round when round is set by the node in the backend.",type:"boolean",defaultValue:!1},{id:"Comfy.FloatRoundingPrecision",category:["LiteGraph","Node Widget","FloatRoundingPrecision"],name:"Float widget rounding decimal places [0 = auto].",tooltip:"(requires page reload)",type:"slider",attrs:{min:0,max:6,step:1},defaultValue:0},{id:"LiteGraph.Node.TooltipDelay",name:"Tooltip Delay",type:"number",attrs:{min:100,max:3e3,step:50},defaultValue:500,versionAdded:"1.9.0"},{id:"Comfy.EnableTooltips",category:["LiteGraph","Node","EnableTooltips"],name:"Enable Tooltips",type:"boolean",defaultValue:!0},{id:"Comfy.DevMode",name:"Enable dev mode options (API save, etc.)",type:"boolean",defaultValue:!1,onChange:n(e=>{const o=document.getElementById("comfy-dev-save-api-button");o&&(o.style.display=e?"flex":"none")},"onChange")},{id:"Comfy.UI.TabBarLayout",category:["Appearance","General"],name:"Tab Bar Layout",type:"combo",options:["Default","Integrated"],tooltip:'Controls the layout of the tab bar. "Integrated" moves Help and User controls into the tab bar area.',defaultValue:"Default"},{id:"Comfy.UseNewMenu",category:["Comfy","Menu","UseNewMenu"],defaultValue:"Top",name:"Use new menu",type:"combo",options:["Disabled","Top"],tooltip:"Enable the redesigned top menu bar.",migrateDeprecatedValue:n(e=>e==="Floating"||e==="Bottom"?"Top":e,"migrateDeprecatedValue")},{id:"Comfy.Workflow.WorkflowTabsPosition",name:"Opened workflows position",type:"combo",options:["Sidebar","Topbar"],defaultValue:"Topbar",migrateDeprecatedValue:n(e=>e==="Topbar (2nd-row)"?"Topbar":e,"migrateDeprecatedValue")},{id:"Comfy.Graph.CanvasMenu",category:["LiteGraph","Canvas","CanvasMenu"],name:"Show graph canvas menu",type:"boolean",defaultValue:!0},{id:"Comfy.QueueButton.BatchCountLimit",name:"Batch count limit",tooltip:"The maximum number of tasks added to the queue at one button click",type:"number",defaultValue:100,versionAdded:"1.3.5"},{id:"Comfy.Keybinding.UnsetBindings",name:"Keybindings unset by the user",type:"hidden",defaultValue:[],versionAdded:"1.3.7",versionModified:"1.7.3",migrateDeprecatedValue:n(e=>e.map(o=>(o.targetSelector==="#graph-canvas"&&(o.targetElementId="graph-canvas-container"),o)),"migrateDeprecatedValue")},{id:"Comfy.Keybinding.NewBindings",name:"Keybindings set by the user",type:"hidden",defaultValue:[],versionAdded:"1.3.7"},{id:"Comfy.Extension.Disabled",name:"Disabled extension names",type:"hidden",defaultValue:[],versionAdded:"1.3.11"},{id:"Comfy.LinkRenderMode",category:["LiteGraph","Graph","LinkRenderMode"],name:"Link Render Mode",defaultValue:2,type:"combo",options:[{value:ge.STRAIGHT_LINK,text:"Straight"},{value:ge.LINEAR_LINK,text:"Linear"},{value:ge.SPLINE_LINK,text:"Spline"},{value:ge.HIDDEN_LINK,text:"Hidden"}]},{id:"Comfy.Node.AutoSnapLinkToSlot",category:["LiteGraph","Node","AutoSnapLinkToSlot"],name:"Auto snap link to node slot",tooltip:"When dragging a link over a node, the link automatically snap to a viable input slot on the node",type:"boolean",defaultValue:!0,versionAdded:"1.3.29"},{id:"Comfy.Node.SnapHighlightsNode",category:["LiteGraph","Node","SnapHighlightsNode"],name:"Snap highlights node",tooltip:"When dragging a link over a node with viable input slot, highlight the node",type:"boolean",defaultValue:!0,versionAdded:"1.3.29"},{id:"Comfy.Node.BypassAllLinksOnDelete",category:["LiteGraph","Node","BypassAllLinksOnDelete"],name:"Keep all links when deleting nodes",tooltip:"When deleting a node, attempt to reconnect all of its input and output links (bypassing the deleted node)",type:"boolean",defaultValue:!0,versionAdded:"1.3.40"},{id:"Comfy.Node.MiddleClickRerouteNode",category:["LiteGraph","Node","MiddleClickRerouteNode"],name:"Middle-click creates a new Reroute node",type:"boolean",defaultValue:!0,versionAdded:"1.3.42"},{id:"Comfy.Graph.LinkMarkers",category:["LiteGraph","Link","LinkMarkers"],name:"Link midpoint markers",defaultValue:No.Circle,type:"combo",options:[{value:No.None,text:"None"},{value:No.Circle,text:"Circle"},{value:No.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:ge.CANVAS_GRID_SIZE},{id:"pysssss.SnapToGrid",category:["LiteGraph","Canvas","AlwaysSnapToGrid"],name:"Always snap to grid",type:"boolean",defaultValue:!1,versionAdded:"1.3.13"},{id:"Comfy.Server.ServerConfigValues",name:"Server config values for frontend display",tooltip:"Server config values used for frontend display only",type:"hidden",defaultValue:{},versionAdded:"1.4.8"},{id:"Comfy.Server.LaunchArgs",name:"Server launch arguments",tooltip:"These are the actual arguments that are passed to the server when it is launched.",type:"hidden",defaultValue:{},versionAdded:"1.4.8"},{id:"Comfy.Queue.MaxHistoryItems",name:"Queue history size",tooltip:"The maximum number of tasks that show in the queue history.",type:"slider",attrs:{min:2,max:256,step:2},defaultValue:64,versionAdded:"1.4.12"},{id:"Comfy.Queue.History.Expanded",name:"Queue history expanded",type:"hidden",defaultValue:!1,versionAdded:"1.37.0"},{id:"Comfy.Execution.PreviewMethod",category:["Comfy","Execution","PreviewMethod"],name:"Live preview method",tooltip:'Live preview method during image generation. "default" uses the server CLI setting.',type:"combo",options:["default","none","auto","latent2rgb","taesd"],defaultValue:"default",versionAdded:"1.36.0"},{id:"LiteGraph.Canvas.MaximumFps",name:"Maximum FPS",tooltip:"The maximum frames per second that the canvas is allowed to render. Caps GPU usage at the cost of smoothness. If 0, the screen refresh rate is used. Default: 0",type:"slider",attrs:{min:0,max:120},defaultValue:0,versionAdded:"1.5.1"},{id:"Comfy.EnableWorkflowViewRestore",category:["Comfy","Workflow","EnableWorkflowViewRestore"],name:"Save and restore canvas position and zoom level in workflows",type:"boolean",defaultValue:!0,versionModified:"1.5.4"},{id:"Comfy.Workflow.ConfirmDelete",name:"Show confirmation when deleting workflows",type:"boolean",defaultValue:!0,versionAdded:"1.5.6"},{id:"Comfy.ColorPalette",name:"The active color palette id",type:"hidden",defaultValue:"dark",versionModified:"1.6.7",migrateDeprecatedValue(e){return e.startsWith("custom_")?e.replace("custom_",""):e}},{id:"Comfy.CustomColorPalettes",name:"Custom color palettes",type:"hidden",defaultValue:{},versionModified:"1.6.7"},{id:"Comfy.WidgetControlMode",category:["Comfy","Node Widget","WidgetControlMode"],name:"Widget control mode",tooltip:"Controls when widget values are updated (randomize/increment/decrement), either before the prompt is queued or after.",type:"combo",defaultValue:"after",options:["before","after"],versionModified:"1.6.10"},{id:"Comfy.TutorialCompleted",name:"Tutorial completed",type:"hidden",defaultValue:!1,versionAdded:"1.8.7"},{id:"Comfy.InstalledVersion",name:"The frontend version that was running when the user first installed ComfyUI",type:"hidden",defaultValue:null,versionAdded:"1.24.0"},{id:"LiteGraph.ContextMenu.Scaling",name:"Scale node combo widget menus (lists) when zoomed in",defaultValue:!1,type:"boolean",versionAdded:"1.8.8"},{id:"LiteGraph.Canvas.LowQualityRenderingZoomThreshold",type:"hidden",deprecated:!0,name:"Low quality rendering zoom threshold (deprecated)",tooltip:"Zoom level threshold for performance mode. Lower values (0.1) = quality at all zoom levels. Higher values (1.0) = performance mode even when zoomed in. Performance mode simplifies rendering by hiding text labels, shadows, and details.",attrs:{min:.1,max:1,step:.01},defaultValue:.6,versionAdded:"1.9.1",versionModified:"1.26.7"},{id:"LiteGraph.Canvas.MinFontSizeForLOD",name:"Zoom Node Level of Detail - font size threshold",tooltip:"Controls when the nodes switch to low quality LOD rendering. Uses font size in pixels to determine when to switch. Set to 0 to disable. Values 1-24 set the minimum font size threshold for LOD - higher values (24px) = switch nodes to simplified rendering sooner when zooming out, lower values (1px) = maintain full node quality longer.",type:"slider",attrs:{min:0,max:24,step:1},defaultValue:8,versionAdded:"1.26.7",hideInVueNodes:!0},{id:"Comfy.Canvas.SelectionToolbox",category:["LiteGraph","Canvas","SelectionToolbox"],name:"Show selection toolbox",type:"boolean",defaultValue:!0,versionAdded:"1.10.5"},{id:"LiteGraph.Reroute.SplineOffset",name:"Reroute spline offset",tooltip:"The bezier control point offset from the reroute centre point",type:"slider",defaultValue:20,attrs:{min:0,max:400},versionAdded:"1.15.7"},{id:"Comfy.Toast.DisableReconnectingToast",name:"Disable toasts when reconnecting or reconnected",type:"hidden",defaultValue:!1,versionAdded:"1.15.12"},{id:"Comfy.Minimap.Visible",name:"Display minimap on canvas",type:"hidden",defaultValue:window.innerWidth>=Zo.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 kw(){const e=We(),o=ie(),t=nt(),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 g=l.value;a=setTimeout(async()=>{const v=e.activeWorkflow;if(v?.isModified&&v.isPersisted)try{i=!0,await t.saveWorkflow(v)}catch(f){console.error("Auto save failed:",f)}finally{i=!1,r&&(r=!1,u())}},g)}},"scheduleAutoSave");se(s,g=>{a&&(clearTimeout(a),a=null),g==="after delay"&&e.activeWorkflow?.isModified&&u()},{immediate:!0});const p=n(()=>{u()},"onGraphChanged");Te.addEventListener("graphChanged",p),ht(()=>{a&&(clearTimeout(a),a=null),Te.removeEventListener("graphChanged",p)})}n(kw,"useWorkflowAutoSave");function xw(){const e=Ia(),o=Ma(),{t}=fe(),s=Wt(),l=yl(),a=ve(),i=tl.TEMPLATE,r=["linear"],u=n(f=>/^[a-zA-Z0-9_.-]+$/.test(f),"isValidParameter"),p=n(f=>r.includes(f),"isSupportedMode"),g=n(()=>{const f={...e.query};delete f.template,delete f.source,delete f.mode,o.replace({query:f})},"cleanupUrlParams");return{loadTemplateFromUrl:n(async()=>{const f=e.query.template;if(!f||typeof f!="string")return;if(!u(f)){console.warn(`[useTemplateUrlLoader] Invalid template parameter format: ${f}`);return}const b=e.query.source||"default";if(!u(b)){console.warn(`[useTemplateUrlLoader] Invalid source parameter format: ${b}`);return}const C=e.query.mode;if(C&&(typeof C!="string"||!u(C))){console.warn(`[useTemplateUrlLoader] Invalid mode parameter format: ${C}`);return}C&&!p(C)&&console.warn(`[useTemplateUrlLoader] Unsupported mode parameter: ${C}. Supported modes: ${r.join(", ")}`);try{await l.loadTemplates(),await l.loadWorkflowTemplate(f,b)?C==="linear"&&(a.linearMode=!0):s.add({severity:"error",summary:t("g.error"),detail:t("templateWorkflows.error.templateNotFound",{templateName:f}),life:3e3})}catch(h){console.error("[useTemplateUrlLoader] Failed to load template from URL:",h),s.add({severity:"error",summary:t("g.error"),detail:t("g.errorLoadingTemplate"),life:3e3})}finally{g(),Pr(i)}},"loadTemplateFromUrl")}}n(xw,"useTemplateUrlLoader");function Sw(){const e=We(),o=ie(),t=Ia(),s=Ma(),l=xw(),a=tl.TEMPLATE,i=n(async()=>{Dr(a);const _=Ar(a,t.query);return _&&await s.replace({query:_}),_??t.query},"ensureTemplateQueryFromIntent"),r=y(()=>o.get("Comfy.Workflow.Persist")),u=n(()=>{if(!r.value)return;const _=JSON.stringify(Y.rootGraph.serialize());try{localStorage.setItem("workflow",_),Te.clientId&&sessionStorage.setItem(`workflow:${Te.clientId}`,_)}catch(S){const T=Object.keys(sessionStorage).filter(N=>N.startsWith("workflow:")||N==="workflow");throw console.error("QuotaExceededError details:",{workflowSizeKB:Math.round(_.length/1024),totalStorageItems:Object.keys(sessionStorage).length,ourWorkflowKeys:T.length,ourWorkflowSizes:T.map(N=>({key:N,sizeKB:Math.round(sessionStorage[N].length/1024)})),error:S instanceof Error?S.message:String(S)}),S}},"persistCurrentWorkflow"),p=n(async(_,S)=>{if(!_)return!1;const T=JSON.parse(_);return await Y.loadGraphData(T,!0,!0,S),!0},"loadWorkflowFromStorage"),g=n(async()=>{const _=dn("Comfy.PreviousWorkflow"),S=Te.initialClientId??Te.clientId;if(S){const N=sessionStorage.getItem(`workflow:${S}`);if(await p(N,_))return!0}const T=localStorage.getItem("workflow");return await p(T,_)},"loadPreviousWorkflowFromStorage"),v=n(async()=>{o.get("Comfy.TutorialCompleted")?await Y.loadGraphData():(await o.set("Comfy.TutorialCompleted",!0),await nt().loadBlankWorkflow(),await _e().execute("Comfy.BrowseTemplates"))},"loadDefaultWorkflow"),f=n(async()=>{if(r.value)try{await g()||await v()}catch(_){console.error("Error loading previous workflow",_),await v()}},"initializeWorkflow"),b=n(async()=>{const _=await i();_.template&&typeof _.template=="string"&&await l.loadTemplateFromUrl()},"loadTemplateFromUrlIfPresent");se(()=>e.activeWorkflow?.key,_=>{_&&(pn("Comfy.PreviousWorkflow",_),u())}),Te.addEventListener("graphChanged",u),Ta(()=>{Te.removeEventListener("graphChanged",u)});const C=y(()=>e.openWorkflows),h=y(()=>e.activeWorkflow),w=y(()=>{if(!C.value||!h.value)return{paths:[],activeIndex:-1};const _=C.value.filter(T=>T?.isPersisted).map(T=>T.path),S=C.value.findIndex(T=>T.path===h.value?.path);return{paths:_,activeIndex:S}}),k=JSON.parse(dn("Comfy.OpenWorkflowsPaths")||"[]"),I=JSON.parse(dn("Comfy.ActiveWorkflowIndex")||"-1");return se(w,({paths:_,activeIndex:S})=>{r.value&&(pn("Comfy.OpenWorkflowsPaths",JSON.stringify(_)),pn("Comfy.ActiveWorkflowIndex",JSON.stringify(S)))}),{initializeWorkflow:f,loadTemplateFromUrlIfPresent:b,restoreWorkflowTabsState:n(()=>{if(!r.value)return;k?.length>0&&I>=0&&e.openWorkflowsInBackground({left:k.slice(0,I),right:k.slice(I)})},"restoreWorkflowTabsState")}}n(Sw,"useWorkflowPersistence");function _w(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 Oe(e,"wheel",n(()=>{a(),i()},"handleWheel"),{capture:!0,passive:s}),{isTransforming:l}}n(_w,"useTransformSettling");function Tw(){const e=Sa({x:0,y:0,z:1}),o=y(()=>({transform:`scale(${e.z}) translate(${e.x}px, ${e.y}px)`,transformOrigin:"0 0"}));function t(f){!f||!f.ds||(e.x=f.ds.offset[0],e.y=f.ds.offset[1],e.z=f.ds.scale||1)}n(t,"syncWithCanvas");function s(f){return{x:(f.x+e.x)*e.z,y:(f.y+e.y)*e.z}}n(s,"canvasToScreen");const l=n(f=>({x:f.x/e.z-e.x,y:f.y/e.z-e.y}),"screenToCanvas");function a(f,b){const C=s({x:f[0],y:f[1]}),h=b[0]*e.z,w=b[1]*e.z;return new DOMRect(C.x,C.y,h,w)}n(a,"getNodeScreenBounds");function i(f){return e.z<.1?Math.min(f*5,2):e.z>3?Math.max(f*.5,.05):f}n(i,"calculateAdjustedMargin");function r(f){return Math.max(f[0],f[1])*e.z<4}n(r,"isNodeTooSmall");function u(f,b){const C=f.width*b,h=f.height*b;return{left:-C,right:f.width+C,top:-h,bottom:f.height+h}}n(u,"getExpandedViewportBounds");function p(f,b,C){const h=f.x+b[0]*e.z,w=f.y+b[1]*e.z;return!(h<C.left||f.x>C.right||w<C.top||f.y>C.bottom)}n(p,"testViewportIntersection");function g(f,b,C,h=.2){if(r(b))return!1;const w=s({x:f[0],y:f[1]}),k=i(h),I=u(C,k);return p(w,b,I)}n(g,"isNodeInViewport");function v(f,b=.2){const C=f.width*b,h=f.height*b,w=l({x:-C,y:-h}),k=l({x:f.width+C,y:f.height+h});return{x:w.x,y:w.y,width:k.x-w.x,height:k.y-w.y}}return n(v,"getViewportBounds"),{camera:Tn(e),transformStyle:o,syncWithCanvas:t,canvasToScreen:s,screenToCanvas:l,getNodeScreenBounds:a,isNodeInViewport:g,getViewportBounds:v}}n(Tw,"useTransformStateIndividual");const Cs=on(Tw),$w=K({__name:"TransformPane",props:{canvas:{}},setup(e){const o=e,{transformStyle:t,syncWithCanvas:s}=Cs(),l=y(()=>o.canvas?.canvas),{isTransforming:a}=_w(l,{settleDelay:16});return ao(()=>{o.canvas&&s(o.canvas)},{immediate:!0}),(i,r)=>(d(),$("div",{"data-testid":"transform-pane",class:Q(m(ne)("absolute inset-0 w-full h-full pointer-events-none",m(a)?"transform-pane--interacting":"will-change-auto")),style:ye(m(t))},[he(i.$slots,"default",{},void 0,!0)],6))}}),Nw=Le($w,[["__scopeId","data-v-4d46eee6"]]),Iw={class:"flex items-center gap-2"},Mw={for:"node-colors"},Pw={class:"flex items-center gap-2"},Dw={for:"show-links"},Aw={class:"flex items-center gap-2"},Lw={for:"show-groups"},Ew={class:"flex items-center gap-2"},Vw={for:"render-bypass"},Ow={class:"flex items-center gap-2"},Rw={for:"render-error"},Ww=K({__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",Iw,[O(m(mo),{"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",Mw,V(o.$t("minimap.nodeColors")),1)]),c("div",Pw,[O(m(mo),{"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",Dw,V(o.$t("minimap.showLinks")),1)]),c("div",Aw,[O(m(mo),{"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",Lw,V(o.$t("minimap.showGroups")),1)]),c("div",Ew,[O(m(mo),{"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",Vw,V(o.$t("minimap.renderBypassState")),1)]),c("div",Ow,[O(m(mo),{"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",Rw,V(o.$t("minimap.renderErrorState")),1)])],4))}}),zw=["width","height"],Bw=K({__name:"MiniMap",setup(e){const o=_e(),t=L(),s=Sn("containerRef"),l=Sn("canvasRef"),{initialized:a,visible:i,containerStyles:r,viewportStyles:u,width:p,height:g,panelStyles:v,nodeColors:f,showLinks:b,showGroups:C,renderBypass:h,renderError:w,updateOption:k,destroy:I,handlePointerDown:x,handlePointerMove:_,handlePointerUp:S,handlePointerCancel:T,handleWheel:N,setMinimapRef:M}=ds({containerRefMaybe:s,canvasRefMaybe:l}),D=L(!1),B=n(()=>{D.value=!D.value},"toggleOptionsPanel");return ze(()=>{t.value&&M(t.value)}),ht(()=>{I()}),(j,W)=>m(i)&&m(a)?(d(),$("div",{key:0,ref_key:"minimapRef",ref:t,class:"minimap-main-container absolute right-0 bottom-[54px] z-1000 flex"},[D.value?(d(),R(Ww,{key:0,"panel-styles":m(v),"node-colors":m(f),"show-links":m(b),"show-groups":m(C),"render-bypass":m(h),"render-error":m(w),onUpdateOption:m(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(m(r))},[O(J,{class:"absolute top-0 left-0 z-10",size:"icon",variant:"muted-textonly","aria-label":j.$t("g.settings"),onClick:ke(B,["stop"])},{default:A(()=>W[7]||(W[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:W[0]||(W[0]=ke(()=>m(o).execute("Comfy.Canvas.ToggleMinimap"),["stop"]))},{default:A(()=>W[8]||(W[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:m(r).width})},null,4),c("canvas",{ref_key:"canvasRef",ref:l,width:m(p),height:m(g),class:"minimap-canvas"},null,8,zw),c("div",{class:"minimap-viewport",style:ye(m(u))},null,4),c("div",{class:"absolute inset-0 touch-none",onPointerdown:W[1]||(W[1]=(...H)=>m(x)&&m(x)(...H)),onPointermove:W[2]||(W[2]=(...H)=>m(_)&&m(_)(...H)),onPointerup:W[3]||(W[3]=(...H)=>m(S)&&m(S)(...H)),onPointerleave:W[4]||(W[4]=(...H)=>m(S)&&m(S)(...H)),onPointercancel:W[5]||(W[5]=(...H)=>m(T)&&m(T)(...H)),onWheel:W[6]||(W[6]=(...H)=>m(N)&&m(N)(...H))},null,32)],4)],512)):E("",!0)}}),Fw=Le(Bw,[["__scopeId","data-v-66f11255"]]);function Vn(e){return e.ctrlKey||e.metaKey||e.shiftKey}n(Vn,"isMultiSelectKey");function Uw(){const e=ve(),{nodeManager:o}=hs(),{bringNodeToFront:t}=ol(),{shouldHandleNodePointerEvents:s}=uo();function l(p,g){if(!s.value||!e.canvas||!o.value)return;const v=o.value.getNode(g);if(!v)return;const f=Vn(p),b=e.selectedItems.length,C=!f&&v.selected&&b>1;f?v.selected||e.canvas.select(v):C||(e.canvas.deselectAll(),e.canvas.select(v)),v.flags?.pinned||t(g),e.updateSelectedItems()}n(l,"handleNodeSelect");function a(p,g){if(!s.value||!o.value)return;const v=o.value.getNode(p);if(!v)return;(v.flags?.collapsed??!1)!==g&&v.collapse()}n(a,"handleNodeCollapse");function i(p,g){if(!s.value||!o.value)return;const v=o.value.getNode(p);v&&(v.title=g)}n(i,"handleNodeTitleUpdate");function r(p,g){if(!s.value||!e.canvas||!o.value)return;const v=o.value.getNode(g);v&&(p.preventDefault(),v.selected||l(p,g))}n(r,"handleNodeRightClick");function u(p,g){if(!s.value||!e.canvas||!o.value)return;const v=o.value.getNode(p);if(v){if(!g){e.canvas.deselectAll(),e.canvas.select(v),e.updateSelectedItems(),v.flags?.pinned||t(p);return}v.selected?e.canvas.deselect(v):(e.canvas.select(v),v.flags?.pinned||t(p)),e.updateSelectedItems()}}return n(u,"toggleNodeSelectionAfterPointerUp"),{handleNodeSelect:l,handleNodeCollapse:a,handleNodeTitleUpdate:i,handleNodeRightClick:r,toggleNodeSelectionAfterPointerUp:u}}n(Uw,"useNodeEventHandlersIndividual");const kl=on(Uw);function xl(){const e=ie(),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 Es(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 Es(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=Ze(!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=Oe(window,"keydown",a,{passive:!0}),r=Oe(window,"keyup",a,{passive:!0});return()=>{i(),r()}}return n(s,"trackShiftKey"),Ta(()=>{e.value=!1,o=null}),{trackShiftKey:s}}n(Sl,"useShiftKeySync");const _l=on(Gw);function Gw(){const e=an(),{selectedNodeIds:o,selectedItems:t}=qe(ve()),s=Cs(),{shouldSnap:l,applySnapToPosition:a}=xl(),{trackShiftKey:i}=Sl();let r=null,u=null,p=null,g=null,v=null,f=null,b=null;function C(k,I){const x=je(Pe.getNodeLayoutRef(I));if(!x)return;const _=x.position??{x:0,y:0};v=i(k),r={..._},u={x:k.clientX,y:k.clientY};const S=je(o),T=S?.has(I);if(T&&S.size>1){p=new Map;for(const N of S){if(N===I)continue;const M=Pe.getNodeLayoutRef(N).value;M&&p.set(N,{...M.position})}}else p=null;T?(b=je(t).filter(ts),f={x:0,y:0}):(b=null,f=null),e.setSource(Co.Vue)}n(C,"startDrag");function h(k,I){if(!r||!u||g!==null)return;const{target:x,pointerId:_}=k;x instanceof HTMLElement&&!x.hasPointerCapture(_)&&x.setPointerCapture(_),g=requestAnimationFrame(()=>{if(g=null,!r||!u)return;const S={x:k.clientX-u.x,y:k.clientY-u.y},T=s.screenToCanvas({x:0,y:0}),N=s.screenToCanvas(S),M={x:N.x-T.x,y:N.y-T.y},D={x:r.x+M.x,y:r.y+M.y};if(e.moveNode(I,D),p&&p.size>0)for(const[B,j]of p){const W={x:j.x+M.x,y:j.y+M.y};e.moveNode(B,W)}if(b&&b.length>0&&f){const B={x:M.x-f.x,y:M.y-f.y};for(const j of b)j.move(B.x,B.y,!0)}f=M})}n(h,"handleDrag");function w(k,I){if(l(k)&&I){const x=[],_=je(Pe.getNodeLayoutRef(I));if(_){const S=_.position,T=a({...S});(T.x!==S.x||T.y!==S.y)&&x.push({nodeId:I,bounds:{x:T.x,y:T.y,width:_.size.width,height:_.size.height}})}if(p&&p.size>0)for(const S of p.keys()){const T=Pe.getNodeLayoutRef(S).value;if(T){const N={...T.position},M=a(N);(M.x!==N.x||M.y!==N.y)&&x.push({nodeId:S,bounds:{x:M.x,y:M.y,width:T.size.width,height:T.size.height}})}}x.length>0&&Pe.batchUpdateNodeBounds(x)}r=null,u=null,p=null,b=null,f=null,v?.(),v=null,g!==null&&(cancelAnimationFrame(g),g=null)}return n(w,"endDrag"),{startDrag:C,handleDrag:h,endDrag:w}}n(Gw,"useNodeDragIndividual");function Hw(e){const{startDrag:o,endDrag:t,handleDrag:s}=_l(),{forwardEventToCanvas:l,shouldHandleNodePointerEvents:a}=uo(),{handleNodeSelect:i,toggleNodeSelectionAfterPointerUp:r}=kl(),{nodeManager:u}=hs(),p=n(T=>Lr(T)?(l(T),!0):!1,"forwardMiddlePointerIfNeeded");let g=!1;const v=L({x:0,y:0}),f=3;function b(T){if(p(T)||T.button!==0)return;if(!a.value){l(T);return}const N=je(e);if(!N){console.warn("LGraphNode: nodeData is null/undefined in handlePointerDown");return}u.value?.getNode(N)?.flags?.pinned||(v.value={x:T.clientX,y:T.clientY},w(T,N))}n(b,"onPointerdown");function C(T){if(p(T)||Pe.isResizingVueNodes.value)return;const N=je(e);if(u.value?.getNode(N)?.flags?.pinned)return;const M=Vn(T),D=T.buttons&1;if(D&&M&&!Pe.isDraggingVueNodes.value){Pe.isDraggingVueNodes.value=!0,i(T,N),w(T,N);return}if(D&&!Pe.isDraggingVueNodes.value){const B=T.clientX-v.value.x,j=T.clientY-v.value.y;Math.sqrt(B*B+j*j)>f&&(Pe.isDraggingVueNodes.value=!0,i(T,N))}Pe.isDraggingVueNodes.value&&s(T,N)}n(C,"onPointermove");function h(){Pe.isDraggingVueNodes.value=!1}n(h,"cleanupDragState");function w(T,N){try{o(T,N)}finally{g=!0}}n(w,"safeDragStart");function k(T){try{const N=je(e);t(T,N)}catch(N){console.error("Error during endDrag:",N)}finally{g=!1,h()}}n(k,"safeDragEnd");function I(T){if(p(T))return;if(!a.value){l(T);return}const M=Pe.isDraggingVueNodes.value;if((g||M)&&(k(T),M)||T.button===2)return;const D=Vn(T),B=je(e);B&&r(B,D)}n(I,"onPointerup");function x(T){Pe.isDraggingVueNodes.value&&k(T)}n(x,"onPointercancel");function _(T){Pe.isDraggingVueNodes.value&&(T.preventDefault(),h())}return n(_,"onContextmenu"),ql(()=>{h()}),{pointerHandlers:{onPointerdown:b,onPointermove:C,onPointerup:I,onPointercancel:x,onContextmenu:_}}}n(Hw,"useNodePointerInteractions");const Qo=new Map([["node",{dataAttribute:"nodeId",updateHandler:n(e=>{const o=e.map(({id:t,bounds:s})=>({nodeId:t,bounds:s}));Pe.batchUpdateNodeBounds(o)},"updateHandler")}]]),ra=new ResizeObserver(e=>{if(ve().linearMode)return;const o=el(),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,I]of Qo){const x=a.dataset[I.dataAttribute];if(x){i=k,r=x;break}}if(!i||!r)continue;const u=Array.isArray(l.borderBoxSize)?l.borderBoxSize[0]:{inlineSize:l.contentRect.width,blockSize:l.contentRect.height},p=u.inlineSize,g=u.blockSize,v=a.getBoundingClientRect(),[f,b]=o.clientPosToCanvasPos([v.left,v.top]),C={x:f,y:b},h={x:C.x,y:C.y+ge.NODE_TITLE_HEIGHT,width:Math.max(0,p),height:Math.max(0,g)};let w=t.get(i);w||(w=[],t.set(i,w)),w.push({id:r,bounds:h}),i==="node"&&r&&s.add(r)}Pe.setSource(Co.DOM);for(const[l,a]of t){const i=Qo.get(l);i&&a.length&&i.updateHandler(a)}if(s.size>0)for(const l of s)Er(l)});function jw(e,o){const t=je(e);ze(()=>{const s=Ts()?.proxy?.$el;if(!(s instanceof HTMLElement)||!t)return;const l=Qo.get(o);l&&(s.dataset[l.dataAttribute]=t,ra.observe(s))}),ht(()=>{const s=Ts()?.proxy?.$el;if(!(s instanceof HTMLElement))return;const l=Qo.get(o);l&&(delete s.dataset[l.dataAttribute],ra.unobserve(s))})}n(jw,"useVueElementTracking");const qw=n(e=>{const o=y(()=>je(e)??""),{nodeLocationProgressStates:t,isIdle:s}=qe(ct()),l=y(()=>{const p=o.value;return p?t.value[p]:void 0}),a=y(()=>!s.value&&l.value?.state==="running"),i=y(()=>{const p=l.value;return p&&p.max>0?p.value/p.max:void 0}),r=y(()=>{const p=i.value;return p!==void 0?Math.round(p*100):void 0}),u=y(()=>{const p=l.value;return p?p.state:"idle"});return{executing:a,progress:i,progressPercentage:r,progressState:l,executionState:u}},"useNodeExecutionState");function Kw(e){const o=je(e),t=an(),s=Pe.getNodeLayoutRef(o);ht(()=>{Pe.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(Co.Vue),t.moveNode(o,u)}return n(r,"moveNodeTo"),{position:l,size:a,zIndex:i,moveNodeTo:r}}n(Kw,"useNodeLayout");const Qw=n((e,o)=>{const t=je(e),s=We(),{nodePreviewImages:l}=qe(To()),a=y(()=>s.nodeIdToNodeLocatorId(t)),i=y(()=>{const g=a.value;if(!g)return;const v=l.value[g];return v?.length?v:void 0}),r=y(()=>!!i.value?.length),u=y(()=>{const g=i.value;return g?.length?g.at(-1):""}),p=y(()=>o?.isCollapsed?!o.isCollapsed.value&&r.value:r.value);return{locatorId:a,previewUrls:i,hasPreview:r,latestPreviewUrl:u,shouldShowPreviewImg:p}},"useNodePreviewState");function Yw(e){const o=Cs(),t=L(!1),s=L(null),l=L(null),{shouldSnap:a,applySnapToSize:i}=xl(),{trackShiftKey:r}=Sl();return{startResize:n(p=>{p.preventDefault(),p.stopPropagation();const g=p.currentTarget;if(!(g instanceof HTMLElement))return;const v=g.closest("[data-node-id]");if(!(v instanceof HTMLElement))return;const f=v.getBoundingClientRect(),b=o.camera.z,C={width:f.width/b,height:f.height/b},h=r(p);g.setPointerCapture(p.pointerId),Pe.isResizingVueNodes.value=!0,t.value=!0,s.value={x:p.clientX,y:p.clientY},l.value=C;const w=n(_=>{if(!t.value||!s.value||!l.value)return;const S=o.camera.z,T=(_.clientX-s.value.x)/(S||1),N=(_.clientY-s.value.y)/(S||1);let M={width:l.value.width+T,height:l.value.height+N};a(_)&&(M=i(M));const D=g.closest("[data-node-id]");D instanceof HTMLElement&&e({size:M},D)},"handlePointerMove"),k=n(_=>{t.value&&(t.value=!1,Pe.isResizingVueNodes.value=!1,s.value=null,l.value=null,h(),g.releasePointerCapture(_.pointerId),I(),x())},"handlePointerUp"),I=Oe("pointermove",w),x=Oe("pointerup",k)},"startResize"),isResizing:t}}n(Yw,"useNodeResize");const Jw={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function Xw(e,o){return d(),$("svg",Jw,[...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(Xw,"render$1");const Zw=$a({name:"lucide-image-off",render:Xw}),e0={key:0,class:"flex h-full min-h-16 w-full min-w-16 flex-col"},t0={class:"relative h-88 w-full grow overflow-hidden rounded-[5px] bg-node-component-surface"},o0={key:0,class:"text-pure-white flex h-full w-full flex-col items-center justify-center text-center"},n0={class:"text-xs text-smoke-400"},s0=["src","alt"],a0={class:"text-node-component-header-text mt-1 text-center text-xs"},l0=K({__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=Zw;return i.imageUrl?(d(),$("div",e0,[c("div",t0,[s.value?(d(),$("div",o0,[O(u,{class:"mb-1 size-8 text-smoke-500"}),c("p",n0,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,s0))]),c("div",a0,V(s.value?i.$t("g.errorLoadingImage"):t.value||i.$t("g.calculatingDimensions")),1)])):E("",!0)}}}),i0=["aria-label","aria-busy"],r0={key:0,role:"alert",class:"flex size-full flex-col items-center justify-center bg-muted-background text-center text-base-foreground py-8"},u0={class:"text-sm text-base-foreground"},c0={class:"mt-1 text-xs text-base-foreground"},d0=["src"],p0={key:3,class:"actions absolute top-2 right-2 flex gap-2.5"},f0=["title","aria-label"],m0=["title","aria-label"],g0={key:4,class:"absolute right-2 bottom-2 left-2 flex justify-center gap-1"},v0=["aria-label","onClick"],h0={class:"mt-2 text-center text-xs text-muted-foreground"},y0={key:0,class:"text-red-400"},b0={key:1,class:"text-smoke-400"},w0={key:2},ua="flex h-8 min-h-8 items-center justify-center gap-2.5 rounded-lg border-0 bg-button-surface px-2 py-2 text-button-surface-contrast shadow-sm transition-colors duration-200 hover:bg-button-hover-surface focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-button-surface-contrast focus-visible:ring-offset-2 focus-visible:ring-offset-transparent cursor-pointer",C0=K({__name:"VideoPreview",props:{imageUrls:{},nodeId:{}},setup(e){const o=e,{t}=fe(),s=To(),l=L(0),a=L(!1),i=L(!1),r=L(null),u=L(!1),p=L(!1),g=L(),v=y(()=>o.imageUrls[l.value]),f=y(()=>o.imageUrls.length>1);se(()=>o.imageUrls,D=>{l.value>=D.length&&(l.value=0),r.value=null,u.value=!1,p.value=D.length>0},{deep:!0,immediate:!0});const b=n(D=>{if(!D.target||!(D.target instanceof HTMLVideoElement))return;const B=D.target;p.value=!1,u.value=!1,B.videoWidth&&B.videoHeight&&(r.value=`${B.videoWidth} x ${B.videoHeight}`)},"handleVideoLoad"),C=n(()=>{p.value=!1,u.value=!0,r.value=null},"handleVideoError"),h=n(()=>{try{os(v.value)}catch{Wt().add({severity:"error",summary:"Error",detail:t("g.failedToDownloadVideo"),life:3e3,group:"video-preview"})}},"handleDownload"),w=n(()=>{o.nodeId&&s.removeNodeOutputs(o.nodeId)},"handleRemove"),k=n(D=>{D>=0&&D<o.imageUrls.length&&(l.value=D,r.value=null,p.value=!0,u.value=!1)},"setCurrentIndex"),I=n(()=>{a.value=!0},"handleMouseEnter"),x=n(()=>{a.value=!1},"handleMouseLeave"),_=n(()=>{i.value=!0},"handleFocusIn"),S=n(D=>{g.value?.contains(D.relatedTarget)||(i.value=!1)},"handleFocusOut"),T=n(D=>["w-2 h-2 rounded-full transition-all duration-200 border-0 cursor-pointer",D===l.value?"bg-white":"bg-white/50 hover:bg-white/80"],"getNavigationDotClass"),N=n(D=>{if(!(o.imageUrls.length<=1))switch(D.key){case"ArrowLeft":D.preventDefault(),k(l.value>0?l.value-1:o.imageUrls.length-1);break;case"ArrowRight":D.preventDefault(),k(l.value<o.imageUrls.length-1?l.value+1:0);break;case"Home":D.preventDefault(),k(0);break;case"End":D.preventDefault(),k(o.imageUrls.length-1);break}},"handleKeyDown"),M=n(D=>{try{return new URL(D).searchParams.get("filename")||"Unknown file"}catch{return"Invalid URL"}},"getVideoFilename");return(D,B)=>D.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:N},[c("div",{ref_key:"videoWrapperEl",ref:g,class:"relative h-full w-full grow overflow-hidden rounded-[5px] bg-node-component-surface",tabindex:"0",role:"region","aria-label":D.$t("g.videoPreview"),"aria-busy":p.value,onMouseenter:I,onMouseleave:x,onFocusin:_,onFocusout:S},[u.value?(d(),$("div",r0,[B[0]||(B[0]=c("i",{class:"mb-2 icon-[lucide--video-off] h-12 w-12 text-base-foreground"},null,-1)),c("p",u0,V(D.$t("g.videoFailedToLoad")),1),c("p",c0,V(M(v.value)),1)])):E("",!0),p.value&&!u.value?(d(),R(m(Gn),{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:Q(m(ne)("block size-full object-contain",p.value&&"invisible")),controls:"",loop:"",playsinline:"",onLoadeddata:b,onError:C},null,42,d0)),a.value||i.value?(d(),$("div",p0,[c("button",{class:Q(ua),title:D.$t("g.downloadVideo"),"aria-label":D.$t("g.downloadVideo"),onClick:h},B[1]||(B[1]=[c("i",{class:"icon-[lucide--download] h-4 w-4"},null,-1)]),8,f0),c("button",{class:Q(ua),title:D.$t("g.removeVideo"),"aria-label":D.$t("g.removeVideo"),onClick:w},B[2]||(B[2]=[c("i",{class:"icon-[lucide--x] h-4 w-4"},null,-1)]),8,m0)])):E("",!0),f.value?(d(),$("div",g0,[(d(!0),$(oe,null,be(D.imageUrls,(j,W)=>(d(),$("button",{key:W,class:Q(T(W)),"aria-label":D.$t("g.viewVideoOfTotal",{index:W+1,total:D.imageUrls.length}),onClick:n(H=>k(W),"onClick")},null,10,v0))),128))])):E("",!0)],40,i0),c("div",h0,[u.value?(d(),$("span",y0,V(D.$t("g.errorLoadingVideo")),1)):p.value?(d(),$("span",b0,V(D.$t("g.loading"))+"... ",1)):(d(),$("span",w0,V(r.value||D.$t("g.calculatingDimensions")),1))])],32)):E("",!0)}}),k0={width:"1.2em",height:"1.2em",xmlns:"http://www.w3.org/2000/svg",class:"",viewBox:"0 0 16 16",fill:"none"},x0=["clip-path"],S0=["id"];function _0(e,o){return d(),$("svg",k0,[c("g",{"clip-path":"url(#"+e.idMap.clip0_704_2695+")"},[...o[0]||(o[0]=[Kl('<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,x0),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,S0)])])}n(_0,"render");const T0=$a({name:"comfy-mask",render:_0,setup(){return{idMap:{clip0_704_2695:"uicons-"+n(()=>Math.random().toString(36).substr(2,10),"__randId")()}}}}),$0=["aria-label","aria-busy"],N0={key:0,role:"alert",class:"flex size-full flex-col items-center justify-center bg-muted-background text-center text-base-foreground py-8"},I0={class:"text-sm text-base-foreground"},M0={class:"mt-1 text-xs text-base-foreground"},P0={key:1,class:"size-full"},D0=["src","alt"],A0={key:3,class:"actions absolute top-2 right-2 flex gap-2.5"},L0=["title","aria-label"],E0=["title","aria-label"],V0=["title","aria-label"],O0={class:"pt-2 text-center text-xs text-base-foreground"},R0={key:0,class:"text-red-400"},W0={key:1,class:"text-base-foreground"},z0={key:2},B0={key:0,class:"flex flex-wrap justify-center gap-1 pt-4"},F0=["aria-current","aria-label","onClick"],Cn="flex h-8 min-h-8 items-center justify-center gap-2.5 rounded-lg border-0 bg-button-surface px-2 py-2 text-button-surface-contrast shadow-sm transition-colors duration-200 hover:bg-button-hover-surface focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-button-surface-contrast focus-visible:ring-offset-2 focus-visible:ring-offset-transparent cursor-pointer",U0=K({__name:"ImagePreview",props:{imageUrls:{},nodeId:{}},setup(e){const o=e,{t}=fe(),s=_e(),l=To(),a=L(0),i=L(!1),r=L(!1),u=L(null),p=L(!1),g=L(!1),v=L(),f=L(),{start:b,stop:C}=Ql(()=>{g.value=!0},250,{immediate:!1}),h=y(()=>o.imageUrls[a.value]),w=y(()=>o.imageUrls.length>1),k=y(()=>`Node output ${a.value+1}`);se(()=>o.imageUrls,F=>{a.value>=F.length&&(a.value=0),u.value=null,p.value=!1,F.length>0&&b()},{deep:!0,immediate:!0});const I=n(F=>{if(!F.target||!(F.target instanceof HTMLImageElement))return;const G=F.target;C(),g.value=!1,p.value=!1,G.naturalWidth&&G.naturalHeight&&(u.value=`${G.naturalWidth} x ${G.naturalHeight}`)},"handleImageLoad"),x=n(()=>{C(),g.value=!1,p.value=!0,u.value=null},"handleImageError"),_=n(()=>{if(!o.nodeId||!v.value)return;const F=Y.rootGraph?.getNodeById(o.nodeId);F&&(F.imageIndex=a.value,F.imgs=[v.value],Y.canvas?.select(F))},"setupNodeForMaskEditor"),S=n(()=>{_(),s.execute("Comfy.MaskEditor.OpenMaskEditor")},"handleEditMask"),T=n(()=>{try{os(h.value)}catch{Wt().add({severity:"error",summary:"Error",detail:t("g.failedToDownloadImage"),life:3e3,group:"image-preview"})}},"handleDownload"),N=n(()=>{o.nodeId&&l.removeNodeOutputs(o.nodeId)},"handleRemove"),M=n(F=>{a.value!==F&&F>=0&&F<o.imageUrls.length&&(a.value=F,b(),p.value=!1)},"setCurrentIndex"),D=n(()=>{i.value=!0},"handleMouseEnter"),B=n(()=>{i.value=!1},"handleMouseLeave"),j=n(()=>{r.value=!0},"handleFocusIn"),W=n(F=>{f.value?.contains(F.relatedTarget)||(r.value=!1)},"handleFocusOut"),H=n(F=>["w-2 h-2 rounded-full transition-all duration-200 border-0 cursor-pointer p-0",F===a.value?"bg-base-foreground":"bg-base-foreground/50 hover:bg-base-foreground/80"],"getNavigationDotClass"),U=n(F=>{if(!(o.imageUrls.length<=1))switch(F.key){case"ArrowLeft":F.preventDefault(),M(a.value>0?a.value-1:o.imageUrls.length-1);break;case"ArrowRight":F.preventDefault(),M(a.value<o.imageUrls.length-1?a.value+1:0);break;case"Home":F.preventDefault(),M(0);break;case"End":F.preventDefault(),M(o.imageUrls.length-1);break}},"handleKeyDown"),z=n(F=>{try{return new URL(F).searchParams.get("filename")||"Unknown file"}catch{return"Invalid URL"}},"getImageFilename");return(F,G)=>{const q=T0;return F.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:U},[c("div",{ref_key:"imageWrapperEl",ref:f,class:"h-full w-full overflow-hidden rounded-[5px] bg-muted-background relative",tabindex:"0",role:"img","aria-label":F.$t("g.imagePreview"),"aria-busy":g.value,onMouseenter:D,onMouseleave:B,onFocusin:j,onFocusout:W},[p.value?(d(),$("div",N0,[G[0]||(G[0]=c("i",{class:"mb-2 icon-[lucide--image-off] h-12 w-12 text-base-foreground"},null,-1)),c("p",I0,V(F.$t("g.imageFailedToLoad")),1),c("p",M0,V(z(h.value)),1)])):E("",!0),g.value&&!p.value?(d(),$("div",P0,[O(m(Gn),{"border-radius":"5px",width:"100%",height:"100%"})])):E("",!0),p.value?E("",!0):(d(),$("img",{key:2,ref_key:"currentImageEl",ref:v,src:h.value,alt:k.value,class:"block size-full object-contain pointer-events-none",onLoad:I,onError:x},null,40,D0)),i.value||r.value?(d(),$("div",A0,[w.value?E("",!0):(d(),$("button",{key:0,class:Q(Cn),title:F.$t("g.editOrMaskImage"),"aria-label":F.$t("g.editOrMaskImage"),onClick:S},[O(q,{class:"h-4 w-4"})],8,L0)),c("button",{class:Q(Cn),title:F.$t("g.downloadImage"),"aria-label":F.$t("g.downloadImage"),onClick:T},G[1]||(G[1]=[c("i",{class:"icon-[lucide--download] h-4 w-4"},null,-1)]),8,E0),c("button",{class:Q(Cn),title:F.$t("g.removeImage"),"aria-label":F.$t("g.removeImage"),onClick:N},G[2]||(G[2]=[c("i",{class:"icon-[lucide--x] h-4 w-4"},null,-1)]),8,V0)])):E("",!0)],40,$0),c("div",O0,[p.value?(d(),$("span",R0,V(F.$t("g.errorLoadingImage")),1)):g.value?(d(),$("span",W0,V(F.$t("g.loading"))+"... ",1)):(d(),$("span",z0,V(u.value||F.$t("g.calculatingDimensions")),1))]),w.value?(d(),$("div",B0,[(d(!0),$(oe,null,be(F.imageUrls,(Z,te)=>(d(),$("button",{key:te,class:Q(H(te)),"aria-current":te===a.value?"true":void 0,"aria-label":F.$t("g.viewImageOfTotal",{index:te+1,total:F.imageUrls.length}),onClick:n(X=>M(te),"onClick")},null,10,F0))),128))])):E("",!0)],32)):E("",!0)}}}),G0={key:0,class:"node-error p-2 text-sm text-red-500"},H0={key:1,class:"lg-node-content flex grow flex-col"},j0=K({__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 Na(i=>(l.value=i.message,a(i),!1)),(i,r)=>l.value?(d(),$("div",G0,V(m(Ae)("nodeErrors.content","Node Content Error")),1)):(d(),$("div",H0,[he(i.$slots,"default",{},()=>[t.value&&i.media?.type==="video"?(d(),R(C0,{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(),R(U0,{key:1,"image-urls":i.media.urls,"node-id":s.value,class:"mt-2"},null,8,["image-urls","node-id"])):E("",!0)])]))}}),q0={key:0,class:"node-error p-2 text-sm text-red-500"},K0=["data-node-id"],Q0={key:0,class:"flex flex-col justify-center items-center relative"},Y0={class:"relative mb-1"},J0=["data-testid"],X0={key:1,class:"min-h-0 flex-1 flex"},Z0={key:2,class:"min-h-0 flex-1 px-4"},e1=["aria-label"],t1="absolute h-3 w-3 opacity-0 pointer-events-auto focus-visible:outline focus-visible:outline-2 focus-visible:outline-white/40",o1=225,ca="h-2 bg-primary-500 transition-all duration-300",n1=K({__name:"LGraphNode",props:{nodeData:{},error:{default:null}},setup(e){const{t:o}=fe(),{handleNodeCollapse:t,handleNodeTitleUpdate:s,handleNodeRightClick:l}=kl(),{bringNodeToFront:a}=ol();jw(()=>e.nodeData.id,"node");const{selectedNodeIds:i}=qe(ve()),r=y(()=>i.value.has(e.nodeData.id)),u=y(()=>fn(e.nodeData)),{executing:p,progress:g}=qw(u),v=ct(),f=y(()=>v.lastExecutionErrorNodeId===e.nodeData.id),b=y(()=>!!(f.value||e.nodeData.hasErrors||e.error||(v.lastNodeErrors?.[e.nodeData.id]?.errors.length??0)>0)),C=y(()=>e.nodeData.titleMode!==Vr.NO_TITLE),h=y(()=>e.nodeData.flags?.collapsed??!1),w=y(()=>e.nodeData.mode===Re.BYPASS),k=y(()=>e.nodeData.mode===Re.NEVER),I=y(()=>{const pe=dt();return e.nodeData.bgcolor?Or(e.nodeData.bgcolor,!!pe.completedActivePalette.light_theme):""}),x=y(()=>{const pe=ie().get("Comfy.Node.Opacity")??1;return w.value||k.value?pe*.5:pe}),_=y(()=>Rr(e.nodeData).length>0),S=y(()=>!!e.nodeData.outputs?.length),{handleWheel:T,shouldHandleNodePointerEvents:N}=uo(),M=L(null),{toastErrorHandler:D}=Bt();Na(pe=>(M.value=pe.message,D(pe),!1));const{position:B,size:j,zIndex:W}=Kw(()=>e.nodeData.id),{pointerHandlers:H}=Hw(()=>e.nodeData.id),{onPointerdown:U,...z}=H,{startDrag:F}=_l();async function G(pe){if(pe.altKey&&pt.value){const xe=Ye.cloneNodes([pt.value]);if(xe?.created?.length){const[De]=xe.created;F(pe,`${De.id}`),Pe.isDraggingVueNodes.value=!0,await Fe(),a(`${De.id}`);return}}U(pe)}n(G,"nodeOnPointerdown");const q=n(pe=>{pe.preventDefault(),pe.stopPropagation(),l(pe,e.nodeData.id),Fg(pe)},"handleContextMenu");ze(()=>{Z()});function Z(){const pe=At.value,{width:xe,height:De}=j.value;if(!pe)return;const we=h.value?"-x":"";pe.style.setProperty(`--node-width${we}`,`${xe}px`),pe.style.setProperty(`--node-height${we}`,`${De}px`)}n(Z,"initSizeStyles");const{startResize:te}=Yw((pe,xe)=>{if(h.value)return;const De=Math.max(pe.size.width,o1);xe.style.setProperty("--node-width",`${De}px`),xe.style.setProperty("--node-height",`${pe.size.height}px`)}),X=n(pe=>{pe.button===0&&N.value&&(e.nodeData.flags?.pinned||e.nodeData.resizable!==!1&&te(pe))},"handleResizePointerDown");se(h,pe=>{const xe=At.value;if(!xe)return;const[De,we]=pe?["","-x"]:["-x",""],Ee=xe.style.getPropertyValue(`--node-width${De}`);xe.style.setProperty(`--node-width${we}`,Ee),xe.style.setProperty(`--node-width${De}`,"");const ee=xe.style.getPropertyValue(`--node-height${De}`);xe.style.setProperty(`--node-height${we}`,ee),xe.style.setProperty(`--node-height${De}`,"")});const ue=y(()=>!!_t.value&&_t.value.urls.length>0),{latestPreviewUrl:le,shouldShowPreviewImg:Ne}=Qw(()=>e.nodeData.id,{isCollapsed:h}),Ue=y(()=>b.value?"border-node-stroke-error":!C.value&&e.nodeData.bgcolor&&Wr(e.nodeData.bgcolor)?"border-0":""),Qe=y(()=>ne(r.value&&"outline-node-component-outline",b.value&&"outline-node-stroke-error",p.value&&"outline-node-stroke-executing")),Ve=y(()=>ne(e.nodeData.flags?.pinned?"cursor-default":Pe.isDraggingVueNodes.value?"cursor-grabbing":"cursor-grab")),Se=y(()=>{switch(e.nodeData.shape){case It.BOX:return"rounded-none";case It.CARD:return"rounded-tl-2xl rounded-br-2xl rounded-tr-none rounded-bl-none";default:return"rounded-2xl"}}),Be=y(()=>{switch(e.nodeData.shape){case It.BOX:return"before:rounded-none";case It.CARD:return"before:rounded-tl-2xl before:rounded-br-2xl before:rounded-tr-none before:rounded-bl-none";default:return"before:rounded-2xl"}}),Je=n(()=>{t(e.nodeData.id,!h.value)},"handleCollapse"),bt=n(pe=>{s(e.nodeData.id,pe)},"handleHeaderTitleUpdate"),po=n(()=>{const pe=Y.rootGraph;if(!pe){console.warn("LGraphNode: No graph available for subgraph navigation");return}const xe=fn(e.nodeData),De=Vs(pe,xe);if(!De?.isSubgraphNode()||!("subgraph"in De)){console.warn("LGraphNode: Node is not a valid subgraph node",De);return}const we=Y.canvas;if(!we||typeof we.openSubgraph!="function"){console.warn("LGraphNode: Canvas or openSubgraph method not available");return}we.openSubgraph(De.subgraph,De)},"handleEnterSubgraph"),Ht=To(),jt=y(()=>e.nodeData.subgraphId?`${e.nodeData.subgraphId}:${e.nodeData.id}`:e.nodeData.id),pt=y(()=>{const pe=fn(e.nodeData);return Vs(Y.rootGraph,pe)}),_t=y(()=>{const pe=Ht.nodeOutputs[jt.value],xe=pt.value;if(!xe||!pe?.images?.length)return;const De=Ht.getNodeImageUrls(xe);if(!De?.length)return;const we=xe.inputs?.some(ee=>ee.type==="VIDEO");return{type:xe.previewMediaType==="video"||!xe.previewMediaType&&we?"video":"image",urls:De}}),At=L(),tt=L(!1);function qt(pe){const xe=pt.value;if(!xe||!xe.onDragOver){tt.value=!1;return}const De=xe.onDragOver(pe);tt.value=De}n(qt,"handleDragOver");function fo(){tt.value=!1}n(fo,"handleDragLeave");async function Kt(pe){tt.value=!1;const xe=pt.value;!xe||!xe.onDragDrop||await xe.onDragDrop(pe)}return n(Kt,"handleDrop"),(pe,xe)=>M.value?(d(),$("div",q0,V(m(Ae)("nodeErrors.render","Node Render Error")),1)):(d(),$("div",Pt({key:1,ref_key:"nodeContainerRef",ref:At,tabindex:"0","data-node-id":pe.nodeData.id,class:m(ne)("bg-component-node-background lg-node absolute text-sm","contain-style contain-layout min-w-[225px] min-h-(--node-height) w-(--node-width)",Se.value,"touch-none flex flex-col","border-1 border-solid border-component-node-border",m(N)&&"hover:ring-7 ring-node-component-ring","outline-transparent outline-2 focus-visible:outline-node-component-outline",Ue.value,Qe.value,Ve.value,{[`${Be.value} before:pointer-events-none before:absolute before:bg-bypass/60 before:inset-0`]:w.value,[`${Be.value} before:pointer-events-none before:absolute before:inset-0`]:k.value,"ring-4 ring-primary-500 bg-primary-500/10":tt.value},m(N)?"pointer-events-auto":"pointer-events-none",!h.value&&" pb-1"),style:[{transform:`translate(${m(B).x??0}px, ${(m(B).y??0)-m(ge).NODE_TITLE_HEIGHT}px)`,zIndex:m(W),opacity:x.value,"--component-node-background":I.value}]},z,{onPointerdown:G,onWheel:xe[0]||(xe[0]=(...De)=>m(T)&&m(T)(...De)),onContextmenu:q,onDragover:ke(qt,["prevent"]),onDragleave:fo,onDrop:ke(Kt,["stop","prevent"])}),[C.value?(d(),$("div",Q0,[h.value?(d(),$(oe,{key:0},[_.value?(d(),R(Os,{key:0,multi:"",class:"absolute left-0 -translate-x-1/2"})):E("",!0),S.value?(d(),R(Os,{key:1,multi:"",class:"absolute right-0 translate-x-1/2"})):E("",!0),O(Rs,{"node-data":pe.nodeData,unified:""},null,8,["node-data"])],64)):E("",!0),O(zr,{"node-data":pe.nodeData,collapsed:h.value,onCollapse:Je,"onUpdate:title":bt,onEnterSubgraph:po},null,8,["node-data","collapsed"])])):E("",!0),h.value&&m(p)&&m(g)!==void 0?(d(),$("div",{key:1,class:Q(m(ne)("absolute inset-x-4 -bottom-[1px] translate-y-1/2 rounded-full",ca)),style:ye({width:`${Math.min(m(g)*100,100)}%`})},null,6)):E("",!0),h.value?E("",!0):(d(),$(oe,{key:2},[c("div",Y0,[m(p)&&m(g)!==void 0?(d(),$("div",{key:0,class:Q(m(ne)("absolute inset-x-0 top-1/2 -translate-y-1/2",m(g)<1&&"rounded-r-full",ca)),style:ye({width:`${Math.min(m(g)*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(Rs,{"node-data":pe.nodeData},null,8,["node-data"]),pe.nodeData.widgets?.length?(d(),R(nl,{key:0,"node-data":pe.nodeData},null,8,["node-data"])):E("",!0),ue.value?(d(),$("div",X0,[O(j0,{"node-data":pe.nodeData,media:_t.value},null,8,["node-data","media"])])):E("",!0),m(Ne)?(d(),$("div",Z0,[O(l0,{"image-url":m(le)||null},null,8,["image-url"])])):E("",!0)],8,J0)],64)),!h.value&&pe.nodeData.resizable!==!1?(d(),$("div",{key:3,role:"button","aria-label":m(o)("g.resizeFromBottomRight"),class:Q(m(ne)(t1,"right-0 bottom-0 cursor-se-resize")),onPointerdown:ke(X,["stop"])},null,42,e1)):E("",!0)],16,K0))}});let Do=[],Ao=!1,Lo=null;const s1=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(Ao){if(Lo)try{await l()}catch(a){console.error("New user initialization callback failed:",a)}}else Do.push(l)}n(o,"registerInitCallback");async function t(l){if(!Ao){if(Lo=e(l),Ao=!0,!Lo){Do=[];return}await l.set("Comfy.InstalledVersion","1.37.10");for(const a of Do)try{await a()}catch(i){console.error("New user initialization callback failed:",i)}Do=[]}}n(t,"initializeIfNewUser");function s(){return Ao?Lo:null}return n(s,"isNewUser"),{registerInitCallback:o,initializeIfNewUser:t,isNewUser:s}},"newUserService"),a1=K({__name:"SelectionRectangle",setup(e){const o=ve(),t=L(null);ao(()=>{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,p=i.eDown.safeOffsetY,g=i.eMove.safeOffsetX-u,v=i.eMove.safeOffsetY-p;t.value={x:u,y:p,w:g,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),p=Math.abs(a.h);return{left:`${i}px`,top:`${r}px`,width:`${u}px`,height:`${p}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)}}),l1={key:0,class:"workflow-tabs-container pointer-events-auto relative h-9.5 w-full"},i1={key:0,class:"app-drag fixed top-0 left-0 z-10 h-[var(--comfy-topbar-height)] w-full"},r1={class:"flex h-full items-center border-b border-interface-stroke bg-comfy-menu-bg shadow-interface"},u1={class:"sidebar-content-container h-full w-full overflow-x-hidden overflow-y-auto"},c1=K({__name:"GraphCanvas",emits:["ready"],setup(e,{emit:o}){const t=o,s=L(null),l=Ze(null),a=ie(),i=St(),r=it(),u=ve(),p=ct(),g=Mt(),v=dt(),f=Ja(),b=uo(),C=y(()=>a.get("Comfy.UseNewMenu")!=="Disabled"),h=y(()=>a.get("Comfy.Workflow.WorkflowTabsPosition")),w=y(()=>a.get("Comfy.Graph.CanvasMenu")),k=y(()=>a.get("Comfy.EnableTooltips")),I=y(()=>a.get("Comfy.Canvas.SelectionToolbox")),x=y(()=>r.sidebarTab.activeSidebarTab),_=y(()=>!r.focusMode&&C.value),S=y(()=>a.get("Comfy.Minimap.Visible")),{shouldRenderVueNodes:T}=jo(),N=hs(),M=n(async()=>{T.value&&(N.disposeNodeManagerAndSyncs(),await Fe(),N.initializeNodeManager())},"handleVueNodeLifecycleReset");se(()=>u.currentGraph,M),se(()=>u.isInSubgraph,async(H,U)=>{U&&!H&&We().updateActiveGraph(),await M()});const D=y(()=>Array.from(N.nodeManager.value?.vueNodeData?.values()??[]));Ce(()=>{ge.nodeOpacity=a.get("Comfy.Node.Opacity")}),Ce(()=>{ge.nodeLightness=v.completedActivePalette.light_theme?.5:void 0}),Ce(()=>{i.showDeprecated=a.get("Comfy.Node.ShowDeprecated")}),Ce(()=>{i.showExperimental=a.get("Comfy.Node.ShowExperimental")}),Ce(()=>{const H=a.get("Comfy.TextareaWidget.Spellcheck");document.querySelectorAll("textarea.comfy-multiline-input").forEach(z=>{z.spellcheck=H,z.focus(),z.blur()})}),se(()=>a.get("Comfy.WidgetControlMode"),()=>{u.canvas&&(Ws(Y.rootGraph,H=>{if(H.widgets){for(const U of H.widgets)if(U[jr]&&(zs(U),!!U.linkedWidgets))for(const z of U.linkedWidgets)zs(z)}}),u.canvas.setDirty(!0))}),se([()=>u.canvas,()=>a.get("Comfy.ColorPalette")],async([H,U])=>{H&&await f.loadColorPalette(U)}),se(()=>a.get("Comfy.Canvas.BackgroundImage"),async()=>{if(!u.canvas)return;const H=v.activePaletteId;H&&(await f.loadColorPalette(H),u.canvas.setDirty(!1,!0))}),se(()=>v.activePaletteId,async H=>{await a.set("Comfy.ColorPalette",H)}),se(()=>[p.nodeLocationProgressStates,u.canvas],([H,U])=>{if(U?.graph){for(const z of U.graph.nodes){const F=We().nodeIdToNodeLocatorId(z.id),G=H[F];G&&G.state==="running"?z.progress=G.value/G.max:z.progress=void 0}U.setDirty(!0,!1)}},{deep:!0}),se(()=>p.lastNodeErrors,H=>{Y.graph&&(Ws(Y.rootGraph,U=>{for(const G of U.inputs)delete G.hasErrors;for(const G of U.outputs)delete G.hasErrors;const z=H?.[U.id];if(!z)return;z.errors.filter(G=>G.extra_info?.input_name!==void 0).forEach(G=>{const q=G.extra_info.input_name,Z=U.findInputSlot(q);Z!==-1&&(U.inputs[Z].hasErrors=!0)})}),Y.canvas.setDirty(!0,!0))}),Oe(s,"litegraph:no-items-selected",()=>{g.add({severity:"warn",summary:ce("toastMessages.nothingSelected"),life:2e3})},{passive:!0});const B=n(async()=>{try{const H=await Te.getCustomNodesI18n();Hr(H)}catch(H){console.error("Failed to load custom nodes i18n",H)}},"loadCustomNodesI18n"),j=L(!1),W=Sw();return gw(s),ww(),mw(),ze(async()=>{bw(),vw(),yw(),Br(),kw(),jo(),Y.vueAppReady=!0,r.spinner=!0,Fr.init(),await B();try{await a.loadSettingValues()}catch(z){if(z instanceof Ur)localStorage.removeItem("Comfy.userId"),localStorage.removeItem("Comfy.userName"),window.location.reload();else throw z}Cw.forEach(a.addSetting),await s1().initializeIfNewUser(a),await Y.setup(s.value),u.canvas=Y.canvas,u.canvas.render_canvas_border=!1,r.spinner=!1,ms().setPopoverRef(l.value),window.app=Y,window.graph=Y.graph,j.value=!0,N.setupEmptyGraphListener(),Y.canvas.onSelectionChange=no(Y.canvas.onSelectionChange,()=>u.updateSelectedItems()),v.customPalettes=a.get("Comfy.CustomColorPalettes"),await W.initializeWorkflow(),W.restoreWorkflowTabsState(),await W.loadTemplateFromUrlIfPresent();const{useReleaseStore:H}=await Fn(async()=>{const{useReleaseStore:z}=await Promise.resolve().then(()=>sm);return{useReleaseStore:z}},void 0,import.meta.url);H().initialize(),se(()=>a.get("Comfy.Locale"),async()=>{await _e().execute("Comfy.RefreshNodeDefinitions"),await nt().reloadCurrentWorkflow()}),xt(()=>ve().canvas,z=>{Oe(z.canvas,"litegraph:set-graph",()=>{We().updateActiveGraph()})},{immediate:!0}),t("ready")}),ht(()=>{N.cleanup()}),(H,U)=>(d(),$(oe,null,[j.value?(d(),R(rd,{key:0},zn({"graph-canvas-panel":A(()=>[w.value?(d(),R(Xm,{key:0,class:"pointer-events-auto"})):E("",!0),j.value&&S.value&&C.value?(d(),R(Fw,{key:1,class:"pointer-events-auto"})):E("",!0)]),_:2},[_.value?{name:"workflow-tabs",fn:A(()=>[h.value==="Topbar"?(d(),$("div",l1,[m(Gr)()&&h.value!=="Topbar"?(d(),$("div",i1)):E("",!0),c("div",r1,[O(Cl),O(wl)])])):E("",!0)]),key:"0"}:void 0,_.value?{name:"side-toolbar",fn:A(()=>[O(Lb)]),key:"1"}:void 0,_.value?{name:"side-bar-panel",fn:A(()=>[c("div",u1,[x.value?(d(),R(cs,{key:0,extension:x.value},null,8,["extension"])):E("",!0)])]),key:"2"}:void 0,_.value?{name:"topmenu",fn:A(()=>[O(pm)]),key:"3"}:void 0,_.value?{name:"bottom-panel",fn:A(()=>[O(wm)]),key:"4"}:void 0,_.value?{name:"right-side-panel",fn:A(()=>[O(ph)]),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),m(T)&&m(Y).canvas&&j.value?(d(),R(Nw,{key:1,canvas:m(Y).canvas,onWheelCapture:m(b).forwardEventToCanvas},{default:A(()=>[(d(!0),$(oe,null,be(D.value,z=>(d(),R(n1,{key:z.id,"node-data":z,error:m(p).lastExecutionError?.node_id===z.id?"Execution error":null,"zoom-level":m(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(),R(a1,{key:2})):E("",!0),k.value?(d(),R(eg,{key:3})):E("",!0),O(Th,{ref_key:"nodeSearchboxPopoverRef",ref:l},null,512),j.value?(d(),$(oe,{key:4},[O(rv),I.value?(d(),R(lv,{key:0})):E("",!0),m(T)?E("",!0):(d(),R($m,{key:1}))],64)):E("",!0)],64))}}),d1={class:"flex flex-auto flex-col items-start"},p1={class:"my-4 text-lg font-medium"},f1=K({__name:"RerouteMigrationToast",setup(e){const{t:o}=fe(),t=Wt(),s=We(),l=n(async()=>{const a=Y.rootGraph.serialize(),i=qr(a);await Y.loadGraphData(i,!1,!1,s.activeWorkflow),t.removeGroup("reroute-migration")},"migrateToLitegraphReroute");return(a,i)=>(d(),R(m(Pa),{group:"reroute-migration"},{message:A(()=>[c("div",d1,[c("div",p1,V(m(o)("toastMessages.migrateToLitegraphReroute")),1),O(J,{class:"self-end",size:"sm",onClick:l},{default:A(()=>[$e(V(m(o)("g.migrate")),1)]),_:1})])]),_:1}))}}),da="ComfyUI",m1=" - ComfyUI",g1=n(()=>{const e=ct(),o=ie(),t=We(),s=it(),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),p=y(()=>s.shiftDown||i.value?!1:!!(!u.value||r.value)),g=y(()=>p.value?" *":""),v=y(()=>{const h=t.activeWorkflow?.filename;return h?g.value+h+m1:da}),f=y(()=>{const w=Object.entries(e.nodeProgressStates).filter(([S,T])=>T.state==="running");if(w.length===0)return"";if(w.length>1)return`${l.value}[${w.length} ${ce("g.nodesRunning","nodes running")}]`;const[k,I]=w[0],x=Math.round(I.value/I.max*100),_=e.activePrompt?.workflow?.changeTracker?.activeState.nodes.find(S=>String(S.id)===k)?.type||"Node";return`${l.value}[${x}%] ${_}`}),b=y(()=>l.value+(a.value?v.value:da)),C=y(()=>f.value||b.value);Yl(C)},"useBrowserTabTitle"),v1={},h1={class:"size-full bg-modal-panel-background pr-6 pb-8 pl-4"};function y1(e,o){return d(),$("div",h1,[he(e.$slots,"default")])}n(y1,"_sfc_render");const b1=Le(v1,[["render",y1]]),w1={class:"text-neutral text-base"},C1={class:"flex gap-2"},k1={class:"relative flex gap-2 px-6 pb-4"},x1=K({__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]"}]}]);en(ln,e.onClose);const a=L(""),i=L(""),r=L([]),u=L([]),p=L("popular"),g=L("installed"),v=y(()=>bl());return(f,b)=>(d(),R(ls,{"content-title":f.$t("assetBrowser.checkpoints")},{leftPanel:A(()=>[O(is,{modelValue:g.value,"onUpdate:modelValue":b[0]||(b[0]=C=>g.value=C),"nav-items":l.value},{"header-icon":A(()=>b[6]||(b[6]=[c("i",{class:"text-neutral icon-[lucide--puzzle]"},null,-1)])),"header-title":A(()=>[c("span",w1,V(f.$t("g.title")),1)]),_:1},8,["modelValue","nav-items"])]),header:A(()=>[O(nn,{modelValue:a.value,"onUpdate:modelValue":b[1]||(b[1]=C=>a.value=C),size:"lg",class:"max-w-[384px]"},null,8,["modelValue"])]),"header-right-area":A(()=>[c("div",C1,[O(J,{variant:"primary",onClick:n(()=>{},"onClick")},{default:A(()=>[b[7]||(b[7]=c("i",{class:"icon-[lucide--upload]"},null,-1)),c("span",null,V(f.$t("g.upload")),1)]),_:1}),O(rl,null,{default:A(({close:C})=>[O(J,{variant:"secondary",onClick:n(()=>{C()},"onClick")},{default:A(()=>[b[8]||(b[8]=c("i",{class:"icon-[lucide--download]"},null,-1)),c("span",null,V(f.$t("g.settings")),1)]),_:2},1032,["onClick"]),O(J,{variant:"primary",onClick:n(()=>{C()},"onClick")},{default:A(()=>[b[9]||(b[9]=c("i",{class:"icon-[lucide--scroll]"},null,-1)),c("span",null,V(f.$t("g.profile")),1)]),_:2},1032,["onClick"])]),_:1})])]),contentFilter:A(()=>[c("div",k1,[O(Rt,{modelValue:r.value,"onUpdate:modelValue":b[2]||(b[2]=C=>r.value=C),"search-query":i.value,"onUpdate:searchQuery":b[3]||(b[3]=C=>i.value=C),class:"w-[250px]",label:f.$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":b[4]||(b[4]=C=>u.value=C),label:f.$t("assetBrowser.selectProjects"),options:t.value},null,8,["modelValue","label","options"]),O(qo,{modelValue:p.value,"onUpdate:modelValue":b[5]||(b[5]=C=>p.value=C),label:f.$t("assetBrowser.sortingType"),options:s.value,class:"w-[135px]"},{icon:A(()=>b[10]||(b[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(zo,{key:C,size:"regular"},{top:A(()=>[O(Bo,{ratio:"landscape"},{default:A(()=>b[11]||(b[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(()=>b[12]||(b[12]=[c("i",{class:"icon-[lucide--info]"},null,-1)])),_:1})]),"bottom-right":A(()=>[O(Fo,{label:"png"}),O(Fo,{label:"1.2 MB"}),O(Fo,{label:"LoRA"},{icon:A(()=>b[13]||(b[13]=[c("i",{class:"icon-[lucide--folder]"},null,-1)])),_:1})]),_:1})]),bottom:A(()=>[O(Wo)]),_:2},1024)),64))],4)]),rightPanel:A(()=>[O(b1)]),_:1},8,["content-title"]))}}),pa="global-model-selector",S1=n(()=>{const e=yt(),o=ut();function t(){o.closeDialog({key:pa})}n(t,"hide");function s(){e.showLayoutDialog({key:pa,component:x1,props:{onClose:t}})}return n(s,"show"),{show:s,hide:t}},"useModelSelectorDialog");function _1(e,o){const t=Kr.safeParse(e);if(!t.success){const h=t.error.errors.map(w=>`${w.path.join(".")}: ${w.message}`).join(", ");return console.error("Invalid asset item:",h),{success:!1,error:{code:"INVALID_ASSET",message:"Asset schema validation failed",assetId:e.id,details:{validationErrors:h}}}}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(h=>h!==Bs&&h!==Fs);if(!i)return console.error(`Asset ${s.id} has no valid category tag. Available tags: ${s.tags.join(", ")} (expected tag other than '${Bs}' or '${Fs}')`),{success:!1,error:{code:"INVALID_ASSET",message:"Asset has no valid category tag",assetId:s.id,details:{availableTags:s.tags}}};const u=qn().getNodeProvider(i);if(!u)return console.error(`No node provider registered for category: ${i}`),{success:!1,error:{code:"NO_PROVIDER",message:`No node provider registered for category: ${i}`,assetId:s.id,details:{category:i}}};const g=_o().getCanvasCenter(),v=ge.createNode(u.nodeDef.name,u.nodeDef.display_name,{pos:g});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 f=We(),b=f.isSubgraphActive?f.activeSubgraph:Y.canvas.graph;if(!b)return console.error("No active graph available"),{success:!1,error:{code:"NO_GRAPH",message:"No active graph available",assetId:s.id}};const C=v.widgets?.find(h=>h.name===u.key);return C?(C.value=a,b.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(_1,"createModelNodeFromAsset");const Eo={DISTRIBUTION:"tf_42243568391700",ANONYMOUS_EMAIL:"tf_anonymous_requester_email",EMAIL:"tf_40029135130388",USER_ID:"tf_42515251051412"},T1="https://support.comfy.org/hc/en-us/requests/new";function $1(e){const o=new URLSearchParams({[Eo.DISTRIBUTION]:"oss"});return e?.userEmail&&(o.append(Eo.ANONYMOUS_EMAIL,e.userEmail),o.append(Eo.EMAIL,e.userEmail)),e?.userId&&o.append(Eo.USER_ID,e.userId),`${T1}?${o.toString()}`}n($1,"buildSupportUrl");const{isActiveSubscription:kn,showSubscriptionDialog:xn}=Kn(),Vo="1.22.2";function N1(){const e=nt(),o=We(),t=yt(),s=dt(),l=Ba(),a=Mt(),i=ve(),r=ct(),{staticUrls:u,buildDocsUrl:p}=ro(),g=ie(),v=io(),f=ut(),b=Qr(),{getSelectedNodes:C,toggleSelectedNodesMode:h}=es(),w=n(()=>o.activeWorkflow?.changeTracker,"getTracker");function k(){return g.get("Comfy.Queue.QPOV2")}n(k,"isQueuePanelV2Enabled");async function I(){await g.set("Comfy.Queue.QPOV2",!k())}n(I,"toggleQueuePanelV2");const x=n(S=>{const T=C();if(T.length===0)return;const N=ie().get("Comfy.SnapToGrid.GridSize");T.forEach(M=>{M.pos=S(M.pos,N)}),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=We().activeWorkflow;S&&await e.saveWorkflow(S)},"function")},{id:"Comfy.PublishSubgraph",icon:"pi pi-save",label:"Publish Subgraph",menubarLabel:"Publish",function:n(async()=>{await Wa().publishSubgraph()},"function")},{id:"Comfy.SaveWorkflowAs",icon:"pi pi-save",label:"Save Workflow As",menubarLabel:"Save As",category:"essentials",function:n(async()=>{const S=We().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()=>{f.isDialogOpen("global-mask-editor")?b.canvasHistory.undo():await w()?.undo?.()},"function")},{id:"Comfy.Redo",icon:"pi pi-refresh",label:"Redo",category:"essentials",function:n(async()=>{f.isDialogOpen("global-mask-editor")?b.canvasHistory.redo():await w()?.redo?.()},"function")},{id:"Comfy.ClearWorkflow",icon:"pi pi-trash",label:"Clear Workflow",category:"essentials",function:n(()=>{if(!ie().get("Comfy.ConfirmClear")||confirm("Clear workflow?")){if(Y.clean(),Y.canvas.subgraph){const T=Y.canvas.subgraph;Jr(T).forEach(M=>T.remove(M))}Te.dispatchCustomEvent("graphCleared")}},"function")},{id:"Comfy.Canvas.ResetView",icon:"pi pi-expand",label:"Reset View",function:n(()=>{_o().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:ce("g.interrupted"),detail:ce("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:ce("g.confirmed"),detail:ce("toastMessages.pendingTasksDeleted"),life:3e3})},"function")},{id:"Comfy.BrowseTemplates",icon:"pi pi-folder-open",label:"Browse Templates",function:n(()=>{vs().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: ${ie().get("Comfy.VueNodes.Enabled")?"Disable":"Enable"} Nodes 2.0`,"label"),function:n(async()=>{const S=ie(),T=S.get("Comfy.VueNodes.Enabled")??!1;await S.set("Comfy.VueNodes.Enabled",!T)},"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:ce("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=ie();let T=ge.SPLINE_LINK;return async()=>{const N=S.get("Comfy.LinkRenderMode");N===ge.HIDDEN_LINK?await S.set("Comfy.LinkRenderMode",T):(T=N,await S.set("Comfy.LinkRenderMode",ge.HIDDEN_LINK))}})(),active:n(()=>ie().get("Comfy.LinkRenderMode")!==ge.HIDDEN_LINK,"active")},{id:"Comfy.Canvas.ToggleMinimap",icon:"pi pi-map",label:"Canvas Toggle Minimap",menubarLabel:"Minimap",versionAdded:"1.24.1",function:n(async()=>{const S=ie();await S.set("Comfy.Minimap.Visible",!S.get("Comfy.Minimap.Visible"))},"function"),active:n(()=>ie().get("Comfy.Minimap.Visible"),"active")},{id:"Comfy.Queue.ToggleOverlay",icon:"pi pi-history",label:n(()=>ce("queue.toggleJobHistory"),"label"),menubarLabel:n(()=>ce("queue.jobHistory"),"menubarLabel"),versionAdded:"1.37.0",category:"view-controls",function:n(()=>{Nn().toggleOverlay()},"function"),active:n(()=>Nn().isOverlayExpanded,"active")},{id:"Comfy.QueuePrompt",icon:"pi pi-play",label:"Queue Prompt",versionAdded:"1.3.7",category:"essentials",function:n(async S=>{if(!kn.value){xn();return}const T=bo().batchCount;await Y.queuePrompt(0,T)},"function")},{id:"Comfy.QueuePromptFront",icon:"pi pi-play",label:"Queue Prompt (Front)",versionAdded:"1.3.7",category:"essentials",function:n(async S=>{if(!kn.value){xn();return}const T=bo().batchCount;await Y.queuePrompt(-1,T)},"function")},{id:"Comfy.QueueSelectedOutputNodes",icon:"pi pi-play",label:"Queue Selected Output Nodes",versionAdded:"1.19.6",function:n(async S=>{if(!kn.value){xn();return}const T=bo().batchCount,N=C(),M=Ha(N);if(M.length===0){a.add({severity:"error",summary:ce("toastMessages.nothingToQueue"),detail:ce("toastMessages.pleaseSelectOutputNodes"),life:3e3});return}const D=Xr(M);if(D.length===0){a.add({severity:"error",summary:ce("toastMessages.failedToQueue"),detail:ce("toastMessages.failedExecutionPathResolution"),life:3e3});return}await Y.queuePrompt(0,T,D)},"function")},{id:"Comfy.ShowSettingsDialog",icon:"pi pi-cog",label:"Show Settings Dialog",versionAdded:"1.3.7",category:"view-controls",function:n(()=>{t.showSettingsDialog()},"function")},{id:"Comfy.Graph.GroupSelectedNodes",icon:"pi pi-sitemap",label:"Group Selected Nodes",versionAdded:"1.3.7",category:"essentials",function:n(()=>{const{canvas:S}=Y;if(!S.selectedItems?.size){a.add({severity:"error",summary:ce("toastMessages.nothingToGroup"),detail:ce("toastMessages.pleaseSelectNodesToGroup"),life:3e3});return}const T=new Ot,N=ie().get("Comfy.GroupSelectedNodes.Padding");T.resizeTo(S.selectedItems,N),S.graph?.add(T),T.recomputeInsideNodes(),sn().titleEditorTarget=T},"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(()=>{h(Re.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(()=>{h(Re.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 vt||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 T=S.computeSize();S.setSize([T[0],T[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=Zr.id,T=eu.id;return async()=>{const N=ie(),M=s.completedActivePalette;M.light_theme?(T=M.id,await N.set("Comfy.ColorPalette",S)):(S=M.id,await N.set("Comfy.ColorPalette",T))}})()},{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(()=>{it().toggleFocusMode()},"function"),active:n(()=>it().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 T=ie().get("Comfy.GroupSelectedNodes.Padding");S.resizeTo(S.children,T),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(p("/",{includeLocale:!0}),"_blank")},"function")},{id:"Comfy.Help.OpenComfyOrgDiscord",icon:"pi pi-discord",label:"Open Comfy-Org Discord",menubarLabel:"Comfy-Org Discord",versionAdded:"1.5.5",function:n(()=>{window.open(u.discord,"_blank")},"function")},{id:"Workspace.SearchBox.Toggle",icon:"pi pi-search",label:"Toggle Search Box",versionAdded:"1.5.7",function:n(()=>{ms().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:T}=Ft(),N=$1({userEmail:S.value,userId:T.value?.id});window.open(N,"_blank")},"function")},{id:"Comfy.Help.OpenComfyUIForum",icon:"pi pi-comments",label:"Open ComfyUI Forum",menubarLabel:"ComfyUI Forum",versionAdded:"1.8.2",function:n(()=>{window.open(u.forum,"_blank")},"function")},{id:"Comfy.Canvas.DeleteSelectedItems",icon:"pi pi-trash",label:"Delete Selected Items",versionAdded:"1.10.5",function:n(()=>{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 gt().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=gt();if(S.managerUIState.value===tu.DISABLED){a.add({severity:"error",summary:ce("g.error"),detail:ce("manager.notAvailable"),life:3e3});return}await S.openManager({initialTab:eo.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 gt().openManager({initialTab:eo.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:Vo,function:n(()=>x(([S,T],N)=>[S,T-N]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Down",icon:"pi pi-arrow-down",label:"Move Selected Nodes Down",versionAdded:Vo,function:n(()=>x(([S,T],N)=>[S,T+N]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Left",icon:"pi pi-arrow-left",label:"Move Selected Nodes Left",versionAdded:Vo,function:n(()=>x(([S,T],N)=>[S-N,T]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Right",icon:"pi pi-arrow-right",label:"Move Selected Nodes Right",versionAdded:Vo,function:n(()=>x(([S,T],N)=>[S+N,T]),"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(),T=S.subgraph??S.graph;if(!T)throw new TypeError("Canvas has no graph or subgraph set.");const N=T.convertToSubgraph(S.selectedItems);if(!N){a.add({severity:"error",summary:ce("toastMessages.cannotCreateSubgraph"),detail:ce("toastMessages.failedToConvertToSubgraph"),life:3e3});return}const{node:M}=N;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}=ja();S()},"function")},{id:"Comfy.Graph.EditSubgraphWidgets",label:"Edit Subgraph Widgets",icon:"icon-[lucide--settings-2]",versionAdded:"1.28.5",function:n(()=>{lo().openPanel("subgraph")},"function")},{id:"Comfy.Graph.ToggleWidgetPromotion",icon:"icon-[lucide--arrow-left-right]",label:"Toggle promotion of hovered widget",versionAdded:"1.30.1",function:Yr},{id:"Comfy.OpenManagerDialog",icon:"mdi mdi-puzzle-outline",label:"Manager",function:n(async()=>{await gt().openManager({initialTab:eo.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=ie(),T=S.get("Comfy.Graph.CanvasInfo");await S.set("Comfy.Graph.CanvasInfo",!T)},"function"),active:n(()=>ie().get("Comfy.Graph.CanvasInfo"),"active")},{id:"Workspace.ToggleBottomPanel.Shortcuts",icon:"pi pi-key",label:"Show Keybindings Dialog",versionAdded:"1.24.1",category:"view-controls",function:n(()=>{v.togglePanel("shortcuts")},"function")},{id:"Comfy.Graph.ExitSubgraph",icon:"pi pi-arrow-up",label:"Exit Subgraph",versionAdded:"1.20.1",function:n(()=>{const S=ve().getCanvas(),T=Qn();S.graph&&S.setGraph(T.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(()=>{S1().show()},"function")},{id:"Comfy.Manager.CustomNodesManager.ShowLegacyCustomNodesMenu",icon:"pi pi-bars",label:"Custom Nodes (Legacy)",versionAdded:"1.16.4",function:n(async()=>{await gt().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 gt().openManager({showToastOnLegacyError:!0,isLegacyOnly:!0})},"function")},{id:"Comfy.Memory.UnloadModels",icon:"mdi mdi-vacuum-outline",label:"Unload Models",versionAdded:"1.16.4",function:n(async()=>{if(!ie().get("Comfy.Memory.AllowManualUnload")){Mt().add({severity:"error",summary:ce("g.error"),detail:ce("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(!ie().get("Comfy.Memory.AllowManualUnload")){Mt().add({severity:"error",summary:ce("g.error"),detail:ce("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(!ie().get("Comfy.Assets.UseAssetAPI")){if(!await t.confirm({title:"Enable Asset API",message:"The Asset API is currently disabled. Would you like to enable it?",type:"default"}))return;await ie().set("Comfy.Assets.UseAssetAPI",!0),await e.reloadCurrentWorkflow()}await Uc().browse({assetType:"models",title:ce("sideToolbar.modelLibrary"),onAssetSelected:n(T=>{const N=_1(T);N.success||(a.add({severity:"error",summary:ce("g.error"),detail:ce("assetBrowser.failedToCreateNode")}),console.error("Node creation failed:",N.error))},"onAssetSelected")})},"function")},{id:"Comfy.ToggleAssetAPI",icon:"pi pi-database",label:n(()=>`Experimental: ${ie().get("Comfy.Assets.UseAssetAPI")?"Disable":"Enable"} AssetAPI`,"label"),function:n(async()=>{const S=ie(),T=S.get("Comfy.Assets.UseAssetAPI")??!1;await S.set("Comfy.Assets.UseAssetAPI",!T),await nt().reloadCurrentWorkflow()},"function")},{id:"Comfy.ToggleQPOV2",icon:"pi pi-list",label:"Toggle Queue Panel V2",function:I},{id:"Comfy.ToggleLinear",icon:"pi pi-database",label:"toggle linear mode",function:n(()=>i.linearMode=!i.linearMode,"function")}].map(S=>({...S,source:"System"}))}n(N1,"useCoreCommands");const I1=n(()=>{const e="/assets/images/favicon_progress_16x16/frame_9.png",o=Jl(e),t=ct(),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 On=(e=>(e.NoPreviews="none",e.Auto="auto",e.Latent2RGB="latent2rgb",e.TAESD="taesd",e))(On||{}),Rn=(e=>(e.DEBUG="DEBUG",e.INFO="INFO",e.WARNING="WARNING",e.ERROR="ERROR",e.CRITICAL="CRITICAL",e))(Rn||{}),Wn=(e=>(e.MD5="md5",e.SHA1="sha1",e.SHA256="sha256",e.SHA512="sha512",e))(Wn||{}),Jt=(e=>(e.Auto="auto",e.Disable="disable",e.Enable="enable",e))(Jt||{}),Me=(e=>(e.AUTO="auto",e.FP64="fp64",e.FP32="fp32",e.FP16="fp16",e.BF16="bf16",e.FP8E4M3FN="fp8_e4m3fn",e.FP8E5M2="fp8_e5m2",e))(Me||{}),Uo=(e=>(e.Auto="auto",e.Split="split",e.Quad="quad",e.Pytorch="pytorch",e))(Uo||{}),Go=(e=>(e.Auto="auto",e.GPUOnly="gpu-only",e.HighVram="highvram",e.NormalVram="normalvram",e.LowVram="lowvram",e.NoVram="novram",e.CPU="cpu",e))(Go||{});const M1=[{id:"listen",name:"Host: The IP address to listen on",category:["Network"],type:"text",defaultValue:"127.0.0.1"},{id:"port",name:"Port: The port to listen on",category:["Network"],type:"number",defaultValue:8e3},{id:"tls-keyfile",name:"TLS Key File: Path to TLS key file for HTTPS",category:["Network"],type:"text",defaultValue:""},{id:"tls-certfile",name:"TLS Certificate File: Path to TLS certificate file for HTTPS",category:["Network"],type:"text",defaultValue:""},{id:"enable-cors-header",name:'Enable CORS header: Use "*" for all origins or specify domain',category:["Network"],type:"text",defaultValue:""},{id:"max-upload-size",name:"Maximum upload size (MB)",category:["Network"],type:"number",defaultValue:100},{id:"cuda-device",name:"CUDA device index to use",category:["CUDA"],type:"number",defaultValue:null},{id:"cuda-malloc",name:"Use CUDA malloc for memory allocation",category:["CUDA"],type:"combo",options:Object.values(Jt),defaultValue:Jt.Auto,getValue:n(e=>{switch(e){case Jt.Auto:return{};case Jt.Enable:return{"cuda-malloc":!0};case Jt.Disable:return{"disable-cuda-malloc":!0}}},"getValue")},{id:"global-precision",name:"Global floating point precision",category:["Inference"],type:"combo",options:[Me.AUTO,Me.FP32,Me.FP16],defaultValue:Me.AUTO,tooltip:"Global floating point precision",getValue:n(e=>{switch(e){case Me.AUTO:return{};case Me.FP32:return{"force-fp32":!0};case Me.FP16:return{"force-fp16":!0};default:return{}}},"getValue")},{id:"unet-precision",name:"UNET precision",category:["Inference"],type:"combo",options:[Me.AUTO,Me.FP64,Me.FP32,Me.FP16,Me.BF16,Me.FP8E4M3FN,Me.FP8E5M2],defaultValue:Me.AUTO,tooltip:"UNET precision",getValue:n(e=>{switch(e){case Me.AUTO:return{};default:return{[`${e.toLowerCase()}-unet`]:!0}}},"getValue")},{id:"vae-precision",name:"VAE precision",category:["Inference"],type:"combo",options:[Me.AUTO,Me.FP16,Me.FP32,Me.BF16],defaultValue:Me.AUTO,tooltip:"VAE precision",getValue:n(e=>{switch(e){case Me.AUTO:return{};default:return{[`${e.toLowerCase()}-vae`]:!0}}},"getValue")},{id:"cpu-vae",name:"Run VAE on CPU",category:["Inference"],type:"boolean",defaultValue:!1},{id:"text-encoder-precision",name:"Text Encoder precision",category:["Inference"],type:"combo",options:[Me.AUTO,Me.FP8E4M3FN,Me.FP8E5M2,Me.FP16,Me.FP32],defaultValue:Me.AUTO,tooltip:"Text Encoder precision",getValue:n(e=>{switch(e){case Me.AUTO:return{};default:return{[`${e.toLowerCase()}-text-enc`]:!0}}},"getValue")},{id:"force-channels-last",name:"Force channels-last memory format",category:["Memory"],type:"boolean",defaultValue:!1},{id:"directml",name:"DirectML device index",category:["Memory"],type:"number",defaultValue:null},{id:"disable-ipex-optimize",name:"Disable IPEX optimization",category:["Memory"],type:"boolean",defaultValue:!1},{id:"preview-method",name:"Method used for latent previews",category:["Preview"],type:"combo",options:Object.values(On),defaultValue:On.NoPreviews},{id:"preview-size",name:"Size of preview images",category:["Preview"],type:"slider",defaultValue:512,attrs:{min:128,max:2048,step:128}},{id:"cache-classic",name:"Use classic cache system",category:["Cache"],type:"boolean",defaultValue:!1},{id:"cache-lru",name:"Use LRU caching with a maximum of N node results cached.",category:["Cache"],type:"number",defaultValue:null,tooltip:"May use more RAM/VRAM."},{id:"cross-attention-method",name:"Cross attention method",category:["Attention"],type:"combo",options:Object.values(Uo),defaultValue:Uo.Auto,getValue:n(e=>{switch(e){case Uo.Auto:return{};default:return{[`use-${e.toLowerCase()}-cross-attention`]:!0}}},"getValue")},{id:"disable-xformers",name:"Disable xFormers optimization",type:"boolean",defaultValue:!1},{id:"force-upcast-attention",name:"Force attention upcast",category:["Attention"],type:"boolean",defaultValue:!1},{id:"dont-upcast-attention",name:"Prevent attention upcast",category:["Attention"],type:"boolean",defaultValue:!1},{id:"vram-management",name:"VRAM management mode",category:["Memory"],type:"combo",options:Object.values(Go),defaultValue:Go.Auto,getValue:n(e=>{switch(e){case Go.Auto:return{};default:return{[e]:!0}}},"getValue")},{id:"reserve-vram",name:"Reserved VRAM (GB)",category:["Memory"],type:"number",defaultValue:null,tooltip:"Set the amount of vram in GB you want to reserve for use by your OS/other software. By default some amount is reserved depending on your OS."},{id:"default-hashing-function",name:"Default hashing function for model files",type:"combo",options:Object.values(Wn),defaultValue:Wn.SHA256},{id:"disable-smart-memory",name:"Disable smart memory management",tooltip:"Force ComfyUI to aggressively offload to regular ram instead of keeping models in vram when it can.",category:["Memory"],type:"boolean",defaultValue:!1},{id:"deterministic",name:"Make pytorch use slower deterministic algorithms when it can.",type:"boolean",defaultValue:!1,tooltip:"Note that this might not make images deterministic in all cases."},{id:"fast",name:"Enable some untested and potentially quality deteriorating optimizations.",type:"boolean",defaultValue:!1},{id:"dont-print-server",name:"Don't print server output to console.",type:"boolean",defaultValue:!1},{id:"disable-metadata",name:"Disable saving prompt metadata in files.",type:"boolean",defaultValue:!1},{id:"enable-manager-legacy-ui",name:"Use legacy Manager UI",tooltip:"Uses the legacy ComfyUI-Manager UI instead of the new UI.",type:"boolean",defaultValue:!1},{id:"disable-all-custom-nodes",name:"Disable loading all custom nodes.",type:"boolean",defaultValue:!1},{id:"log-level",name:"Logging verbosity level",type:"combo",options:Object.values(Rn),defaultValue:Rn.INFO,getValue:n(e=>({verbose:e}),"getValue")},{id:"input-directory",name:"Input directory",category:["Directories"],type:"text",defaultValue:""},{id:"output-directory",name:"Output directory",category:["Directories"],type:"text",defaultValue:""}],P1={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=K({__name:"HoneyToast",props:Xo({visible:{type:Boolean}},{expanded:{type:Boolean,default:!1},expandedModifiers:{}}),emits:["update:expanded"],setup(e){const o=wo(e,"expanded");function t(){o.value=!o.value}return n(t,"toggle"),(s,l)=>(d(),R(Nt,{to:"body"},[O(Jo,{"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",P1,[c("div",{class:Q(m(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})]))}}),fa=K({__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:Q(o(t.severity))},V(t.label),3))}}),D1={class:"min-w-0 flex-1"},A1={class:"block truncate text-sm text-base-foreground"},L1={class:"flex flex-shrink-0 items-center gap-2"},E1={class:"text-xs text-base-foreground"},V1={key:3,class:"text-xs text-muted-foreground"},O1=K({__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:Q(m(ne)("flex items-center justify-between rounded-lg bg-modal-card-background px-4 py-3",s.value&&"opacity-50"))},[c("div",D1,[c("span",A1,V(r.job.assetName),1)]),c("div",L1,[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(fa,{label:m(o)("progressToast.failed"),severity:"danger"},null,8,["label"])],64)):s.value?(d(),R(fa,{key:1,label:m(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",E1,V(t.value)+"% ",1)],64)):i.value?(d(),$("span",V1,V(m(o)("progressToast.pending")),1)):E("",!0)])],2))}}),R1={class:"flex h-12 items-center justify-between border-b border-border-default px-4"},W1={class:"text-sm font-bold text-base-foreground"},z1={class:"flex items-center gap-2"},B1={class:"flex min-w-30 flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},F1={class:"relative max-h-75 overflow-y-auto px-4 py-4"},U1={key:0,class:"absolute right-1 top-4 h-12 w-1 rounded-full bg-muted-foreground"},G1={class:"flex flex-col gap-2"},H1={key:1,class:"flex flex-col items-center justify-center py-6 text-center"},j1={class:"text-sm text-muted-foreground"},q1={class:"flex h-12 items-center justify-between gap-2 border-t border-border-default px-4"},K1={class:"flex min-w-0 flex-1 items-center gap-2 text-sm"},Q1={class:"min-w-0 flex-1 truncate font-bold text-base-foreground"},Y1={class:"min-w-0 truncate font-bold text-base-foreground"},J1={class:"min-w-0 truncate font-bold text-base-foreground"},X1={class:"flex flex-shrink-0 items-center gap-2"},Z1={key:0,class:"whitespace-nowrap text-sm text-muted-foreground"},eC={class:"flex items-center"},tC=K({__name:"ModelImportProgressDialog",setup(e){const{t:o}=fe(),t=ou(),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(_){i.value?.toggle(_)}n(u,"onFilterClick");function p(_){a.value=_,i.value?.hide()}n(p,"setFilter");const g=y(()=>t.downloadList),v=y(()=>t.finishedDownloads.filter(_=>_.status==="completed")),f=y(()=>t.finishedDownloads.filter(_=>_.status==="failed")),b=y(()=>t.hasActiveDownloads),C=y(()=>g.value.find(S=>S.status==="running")?.assetName||o("progressToast.downloadingModel")),h=y(()=>v.value.length+f.value.length),w=y(()=>g.value.length),k=y(()=>{switch(a.value){case"completed":return v.value;case"failed":return f.value;default:return g.value}}),I=y(()=>{const _=r.find(S=>S.value===a.value);return o(_?`progressToast.filter.${_.label}`:"progressToast.filter.all")});function x(){t.clearFinishedDownloads(),l.value=!1}return n(x,"closeDialog"),(_,S)=>(d(),R(Tl,{expanded:l.value,"onUpdate:expanded":S[0]||(S[0]=T=>l.value=T),visible:s.value},{default:A(()=>[c("div",R1,[c("h3",W1,V(m(o)("progressToast.importingModels")),1),c("div",z1,[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(I.value),1),S[2]||(S[2]=c("i",{class:"icon-[lucide--chevron-down] size-3"},null,-1))]),_:1}),O(m(et),{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",B1,[(d(),$(oe,null,be(r,T=>O(J,{key:T.value,variant:"textonly",size:"sm",class:Q(m(ne)("w-full justify-start bg-transparent",a.value===T.value&&"bg-secondary-background-selected")),onClick:n(N=>p(T.value),"onClick")},{default:A(()=>[$e(V(m(o)(`progressToast.filter.${T.label}`)),1)]),_:2},1032,["class","onClick"])),64))])]),_:1},512)])]),c("div",F1,[k.value.length>3?(d(),$("div",U1)):E("",!0),c("div",G1,[(d(!0),$(oe,null,be(k.value,T=>(d(),R(O1,{key:T.taskId,job:T},null,8,["job"]))),128))]),k.value.length===0?(d(),$("div",H1,[c("span",j1,V(m(o)("progressToast.noImportsInQueue",{filter:I.value})),1)])):E("",!0)])]),footer:A(({toggle:T})=>[c("div",q1,[c("div",K1,[b.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",Q1,V(C.value),1)],64)):f.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",Y1,V(m(o)("progressToast.downloadsFailed",{count:f.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",J1,V(m(o)("progressToast.allDownloadsCompleted")),1)],64))]),c("div",X1,[b.value?(d(),$("span",Z1,V(m(o)("progressToast.progressCount",{completed:h.value,total:w.value})),1)):E("",!0),c("div",eC,[O(J,{variant:"muted-textonly",size:"icon","aria-label":l.value?m(o)("contextMenu.Collapse"):m(o)("contextMenu.Expand"),onClick:ke(T,["stop"])},{default:A(()=>[c("i",{class:Q(m(ne)("size-4",l.value?"icon-[lucide--chevron-down]":"icon-[lucide--chevron-up]"))},null,2)]),_:2},1032,["aria-label","onClick"]),b.value?E("",!0):(d(),R(J,{key:0,variant:"muted-textonly",size:"icon","aria-label":m(o)("g.close"),onClick:ke(x,["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"]))}}),oC=10080*60*1e3,$l=Dt("versionCompatibility",()=>{const e=Jn(),o=ie(),t=y(()=>nu.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}`),p=Xl("comfy.versionMismatch.dismissals",{},localStorage,{serializer:{read:n(w=>{try{return JSON.parse(w)}catch{return{}}},"read"),write:n(w=>JSON.stringify(w),"write")}}),g=y(()=>{if(!u.value)return!1;const w=p.value[u.value];return w?Date.now()<w:!1}),v=y(()=>{const w=o.get("Comfy.VersionCompatibility.DisableWarnings");return r.value&&!g.value&&!w}),f=y(()=>a.value?{type:"outdated",frontendVersion:t.value,requiredVersion:l.value}:null);async function b(){e.systemStats||await Ca(e.isInitialized)}n(b,"checkVersionCompatibility");function C(){if(!u.value)return;const w=Date.now()+oC;p.value={...p.value,[u.value]:w}}n(C,"dismissWarning");async function h(){await b()}return n(h,"initialize"),{frontendVersion:t,backendVersion:s,requiredFrontendVersion:l,hasVersionMismatch:r,shouldShowWarning:v,warningMessage:f,isFrontendOutdated:a,isFrontendNewer:i,checkVersionCompatibility:b,dismissWarning:C,initialize:h}});function nC(e={}){const{immediate:o=!1}=e,{t}=fe(),s=Mt(),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}),p=t("g.versionMismatchWarningMessage",{warning:t("g.versionMismatchWarning"),detail:u});s.addAlert(p),a=!0,l.dismissWarning()},"showWarning");return ze(()=>{o&&xt(()=>l.shouldShowWarning,()=>{i()},{immediate:!0,once:!0})}),{showWarning:i,shouldShowWarning:y(()=>l.shouldShowWarning),dismissWarning:l.dismissWarning,hasVersionMismatch:y(()=>l.hasVersionMismatch)}}n(nC,"useFrontendVersionMismatchWarning");function sC(){const e=sl(),o=bo();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(sC,"setupAutoQueueHandler");const aC={class:"absolute w-full h-full"},lC={class:"workflow-tabs-container pointer-events-auto h-9.5 w-full"},iC={class:"flex h-full items-center"},rC={class:"sidebar-content-container h-full w-full overflow-x-hidden overflow-y-auto border-r-1 border-node-component-border"},uC=["src"],cC={key:0,class:"pointer-events-none object-contain flex-1 max-h-full brightness-50 opacity-10",src:au},dC={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"},pC={class:"rounded-lg border p-2 gap-2 h-full border-[var(--interface-stroke)] bg-comfy-menu-bg flex flex-col"},fC={class:"grow-1 flex justify-start flex-col overflow-y-auto contain-size *:max-h-100"},mC={class:"p-4 pb-0 border-t border-node-component-border"},gC=K({__name:"LinearView",setup(e){const o=To(),t=_e(),s=y(()=>{function g(v){const f=hl(v,new Map),b=v.widgets?.map(C=>{const h=f(C);return h.callback=function(w){if(yv(w))return C.value=w??void 0,C.callback?.(C.value)},h})??[];return{id:`${v.id}`,title:v.title,type:v.type,mode:0,selected:!1,executing:!1,widgets:b}}return n(g,"nodeToNodeData"),Y.rootGraph.nodes.filter(v=>v.mode===0&&v.widgets?.length).map(g)}),{isLoggedIn:l}=Ft(),a=Ke(),i={options:{step2:1,precision:1,min:1,max:100},value:1,name:ce("Number of generations"),type:"number"},{batchCount:r}=qe(bo());async function u(g){const f="shiftKey"in g&&g.shiftKey?"Comfy.QueuePromptFront":"Comfy.QueuePrompt";r.value>1,await t.execute(f,{metadata:{subscribe_to_run:!1,trigger_source:"button"}})}n(u,"runButtonClick");function p(){window.open("https://support.comfy.org/hc/en-us/requests/new?ticket_form_id=40026345549204","_blank","noopener,noreferrer")}return n(p,"openFeedback"),(g,v)=>(d(),$("div",aC,[c("div",lC,[c("div",iC,[O(Cl),O(wl)])]),O(m($n),{class:"h-[calc(100%-38px)] w-full bg-comfy-menu-secondary-bg",pt:{gutter:{class:"bg-transparent w-4 -mx-3"}}},{default:A(()=>[O(m($t),{size:1,class:"min-w-min bg-comfy-menu-bg"},{default:A(()=>[c("div",rC,[O(cs,{extension:m(su)()},null,8,["extension"])])]),_:1}),O(m($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(m(o).latestOutput,f=>(d(),$("img",{key:f,class:"pointer-events-none object-contain flex-1 max-h-full",src:f},null,8,uC))),128)),m(o).latestOutput.length===0?(d(),$("img",cC)):E("",!0)]),_:1}),O(m($t),{size:1,class:"flex flex-col gap-1 p-1 min-w-min"},{default:A(()=>[c("div",dC,[O(J,{variant:"secondary",onClick:p},{default:A(()=>[$e(V(m(ce)("g.feedback")),1)]),_:1}),O(J,{variant:"secondary",class:"min-w-max",onClick:v[0]||(v[0]=f=>m(ve)().linearMode=!1)},{default:A(()=>[$e(V(m(ce)("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]=f=>m(nt)().exportWorkflow("workflow","workflow"))},{default:A(()=>[$e(V(m(ce)("linearMode.share")),1)]),_:1}),m(l)?(d(),R(rs,{key:0})):m(a)?(d(),R(us,{key:1})):E("",!0)]),c("div",pC,[c("div",fC,[(d(!0),$(oe,null,be(s.value,f=>(d(),R(nl,{key:f.id,"node-data":f,class:"border-b-1 border-node-component-border pt-1 pb-2 last:border-none"},null,8,["node-data"]))),128))]),c("div",mC,[O(vu,{modelValue:m(r),"onUpdate:modelValue":v[2]||(v[2]=f=>lt(r)?r.value=f: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(m(ce)("menu.run")),1)]),_:1})])])]),_:1})]),_:1})]))}}),vC={key:0,class:"flex items-center px-4 py-2"},hC={class:"flex w-full items-center justify-between py-2"},yC={class:"flex flex-col text-sm leading-normal font-medium"},bC={class:"text-muted"},wC={class:"h-full"},CC={class:"break-words whitespace-pre-wrap"},kC={class:"flex w-full items-center justify-between px-6 py-2 shadow-lg"},xC={class:"flex items-center text-base leading-none"},SC={class:"flex items-center"},_C={class:"flex items-center gap-4"},TC={key:0,class:"text-sm text-muted-foreground"},$C={class:"flex items-center"},NC=K({__name:"ManagerProgressToast",setup(e){const{t:o}=fe(),t=lu(),s=ie(),{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),p=y(()=>t.taskLogs.length>0),g=L(!1),v=L(!1),f=y(()=>t.isProcessingTasks||g.value),b=n(F=>{const G=u.value[F];if(!G)return!1;const q=t.taskQueue;return q?[...q.running_queue||[],...q.pending_queue||[]].some(te=>te.ui_id===G.taskId):!1},"isTaskInProgress"),C=y(()=>t.succeededTasksIds.length+t.failedTasksIds.length),h=y(()=>{const F=Object.keys(t.taskHistory).length,G=t.taskQueue,q=G?(G.running_queue?.length||0)+(G.pending_queue?.length||0):0;return F+q}),w=y(()=>g.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 I(F){k.value[F]=!k.value[F]}n(I,"togglePanel");const x=L(null),{y:_}=_a(x,{eventListenerOptions:{passive:!0}}),S=L(null),T=L(!1),N=y(()=>u.value?.at(-1)?.logs);function M(F){return F?Math.abs(F.scrollHeight-F.scrollTop-F.clientHeight)<20:!1}n(M,"isAtBottom");function D(){!S.value||T.value||(S.value.scrollTop=S.value.scrollHeight)}n(D,"scrollLastPanelToBottom");function B(){_.value=x.value?.scrollHeight??0}n(B,"scrollContentToBottom");function j(){T.value=!1}n(j,"resetUserScrolling");function W(F){const G=F.target;G===S.value&&(T.value=!M(G))}n(W,"handleScroll");function H(){T.value||D()}n(H,"onLogsAdded"),xt(N,H,{flush:"post",deep:!0}),xt(()=>a.value,B),xt(()=>!a.value,j);function U(){t.resetTaskState(),a.value=!1}n(U,"closeToast");async function z(){const F=s.get("Comfy.Toast.DisableReconnectingToast");try{await s.set("Comfy.Toast.DisableReconnectingToast",!0),g.value=!0,Oe(Te,"reconnected",n(async()=>{try{t.setStale(),await _e().execute("Comfy.RefreshNodeDefinitions"),await nt().reloadCurrentWorkflow(),l()}finally{await s.set("Comfy.Toast.DisableReconnectingToast",F),g.value=!1,v.value=!0,setTimeout(()=>{U()},3e3)}},"onReconnect"),{once:!0}),await Qa().rebootComfyUI()}catch(G){throw await s.set("Comfy.Toast.DisableReconnectingToast",F),g.value=!1,v.value=!1,U(),G}}return n(z,"handleRestart"),ze(()=>{B()}),rt(()=>{a.value=!1}),(F,G)=>(d(),R(Tl,{expanded:a.value,"onUpdate:expanded":G[1]||(G[1]=q=>a.value=q),visible:p.value},{default:A(()=>[a.value?(d(),$("div",vC,[O(m(pi),{"active-index":i.value,"onUpdate:activeIndex":G[0]||(G[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:x,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,Z)=>(d(),$("div",{key:Z},[O(m(Un),{expanded:k.value[Z]===!0,toggleable:"",class:"shadow-elevation-1 mt-2 rounded-lg"},{header:A(()=>[c("div",hC,[c("div",yC,[c("span",null,V(q.taskName),1),c("span",bC,V(b(Z)?m(o)("g.inProgress"):m(o)("g.completed")+" ✓"),1)])])]),toggleicon:A(()=>[O(J,{variant:"textonly",class:"text-neutral-300",onClick:n(te=>I(Z),"onClick")},{default:A(()=>[c("i",{class:Q(k.value[Z]?"pi pi-chevron-right":"pi pi-chevron-down")},null,2)]),_:2},1032,["onClick"])]),default:A(()=>[c("div",{ref_for:!0,ref:Z===u.value.length-1?te=>S.value=te:void 0,class:Q(["h-64 overflow-y-auto rounded-lg bg-black",{"h-64":Z!==u.value.length-1,grow:Z===u.value.length-1}]),onScroll:W},[c("div",wC,[(d(!0),$(oe,null,be(q.logs,(te,X)=>(d(),$("div",{key:X,class:"text-muted"},[c("pre",CC,V(te),1)]))),128))])],34)]),_:2},1032,["expanded"])]))),128))],512)]),footer:A(({toggle:q})=>[c("div",kC,[c("div",xC,[c("div",SC,[f.value?(d(),$(oe,{key:0},[O(iu,{duration:"1s",class:"mr-2"}),c("span",null,V(w.value),1)],64)):v.value?(d(),$(oe,{key:1},[G[2]||(G[2]=c("span",{class:"mr-2"},"🎉",-1)),c("span",null,V(w.value),1)],64)):(d(),$(oe,{key:2},[G[3]||(G[3]=c("span",{class:"mr-2"},"✅",-1)),c("span",null,V(m(o)("manager.restartToApplyChanges")),1)],64))])]),c("div",_C,[f.value?(d(),$("span",TC,V(C.value)+" "+V(m(o)("g.progressCountOf"))+" "+V(h.value),1)):E("",!0),c("div",$C,[!f.value&&!v.value?(d(),R(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(m(o)("manager.applyChanges")),1)]),_:1})):v.value?E("",!0):(d(),R(J,{key:1,variant:"muted-textonly",size:"sm",class:"rounded-full font-bold","aria-label":m(o)(a.value?"contextMenu.Collapse":"contextMenu.Expand"),onClick:ke(q,["stop"])},{default:A(()=>[c("i",{class:Q(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":m(o)("g.close"),onClick:ke(U,["stop"])},{default:A(()=>G[4]||(G[4]=[c("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])])])]),_:1},8,["expanded","visible"]))}}),IC={class:"comfyui-body grid h-full w-full overflow-hidden"},MC=K({__name:"GraphView",setup(e){sC(),I1(),g1();const{t:o}=fe(),t=Wt(),s=ie(),l=ct(),a=dt(),i=zt(),r=jn(),u=$l(),p=L(null),{linearMode:g}=qe(ve());Fa(),se(()=>a.completedActivePalette,N=>{const M="dark-theme";N.light_theme?document.body.classList.remove(M):document.body.classList.add(M),Ke()&&yo().changeTheme({color:"rgba(0, 0, 0, 0)",symbolColor:N.colors.comfy_base["input-text"]})},{immediate:!0}),Ke()&&se(()=>i.tasks,(N,M)=>{const D=new Set(M.filter(B=>B.isRunning).map(B=>B.promptId));N.filter(B=>D.has(B.promptId)&&B.isHistory).forEach(B=>{yo().Events.incrementUserProperty(`execution:${B.displayStatus.toLowerCase()}`,1),yo().Events.trackEvent("execution",{status:B.displayStatus.toLowerCase()})})},{deep:!0}),Ce(()=>{const N=s.get("Comfy.TextareaWidget.FontSize");document.documentElement.style.setProperty("--comfy-textarea-font-size",`${N}px`)}),Ce(()=>{const N=s.get("Comfy.TreeExplorer.ItemPadding");document.documentElement.style.setProperty("--comfy-tree-explorer-item-padding",`${N}px`)}),Ce(async()=>{const N=s.get("Comfy.Locale");if(N)try{await ru(N),Oa.global.locale.value=N}catch(M){console.error(`Failed to switch to locale "${N}":`,M)}});const v=y(()=>s.get("Comfy.UseNewMenu"));Ce(()=>{v.value==="Disabled"?(Y.ui.menuContainer.style.setProperty("display","block"),Y.ui.restoreMenuPosition()):Y.ui.menuContainer.style.setProperty("display","none")}),Ce(()=>{i.maxHistoryItems=s.get("Comfy.Queue.MaxHistoryItems")});const f=n(()=>{const N=N1();_e().registerCommands(N),Ya().registerCoreMenuCommands(),mn().registerCoreKeybindings(),Ho().registerCoreSidebarTabs(),io().registerCoreBottomPanelTabs(),Y.extensionManager=it()},"init"),b=sl(),C=Ho(),h=n(async N=>{b.update(N),await i.update(),C.activeSidebarTabId==="assets"&&await r.updateHistory()},"onStatus"),w=n(async()=>{await i.update(),C.activeSidebarTabId==="assets"&&await r.updateHistory()},"onExecutionSuccess"),k={severity:"error",summary:o("g.reconnecting")},I=n(()=>{s.get("Comfy.Toast.DisableReconnectingToast")||(t.remove(k),t.add(k))},"onReconnecting"),x=n(()=>{s.get("Comfy.Toast.DisableReconnectingToast")||(t.remove(k),t.add({severity:"success",summary:o("g.reconnected"),life:2e3}))},"onReconnected");ze(()=>{Te.addEventListener("status",h),Te.addEventListener("execution_success",w),Te.addEventListener("reconnecting",I),Te.addEventListener("reconnected",x),l.bindExecutionEvents();try{f(),p.value?.prepend(Y.ui.menuContainer)}catch(N){console.error("Failed to init ComfyUI frontend",N)}}),rt(()=>{Te.removeEventListener("status",h),Te.removeEventListener("execution_success",w),Te.removeEventListener("reconnecting",I),Te.removeEventListener("reconnected",x),l.unbindExecutionEvents()}),Oe(window,"keydown",mn().keybindHandler);const{wrapWithErrorHandling:_,wrapWithErrorHandlingAsync:S}=Bt();nC({immediate:!0}),Fe(()=>{u.initialize().catch(N=>{console.warn("Version compatibility check failed:",N)})});const T=n(()=>{cl(()=>{_(mn().registerUserKeybindings)(),_(gu().loadServerConfig)(M1,s.get("Comfy.Server.ServerConfigValues")),S(uu().loadModelFolders)(),S(ns().loadNodeFrequencies)(),St().nodeSearchService.searchNode("")},1e3)},"onGraphReady");return(N,M)=>(d(),$(oe,null,[c("div",IC,[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)),de(c("div",{id:"graph-canvas-container",ref_key:"graphCanvasContainerRef",ref:p,class:"graph-canvas-container"},[O(c1,{onReady:T})],512),[[Xe,!m(g)]]),m(g)?(d(),R(gC,{key:0})):E("",!0)]),O(td),O(f1),O(tC),O(NC),m(Ke)()?E("",!0):(d(),R(sd,{key:0})),O(nd)],64))}}),PC=Le(MC,[["__scopeId","data-v-5229bbd8"]]),UC=Object.freeze(Object.defineProperty({__proto__:null,default:PC},Symbol.toStringTag,{value:"Module"}));export{UC as G,Yc as _,Zc as a,md as g};
|
|
15
|
+
//# sourceMappingURL=GraphView-_ZGu5uNf.js.map
|