comfyui-frontend-package 1.37.10__py3-none-any.whl → 1.38.0__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-C5DQxPC9.js → AboutPanel-DeWaRZUc.js} +2 -2
- comfyui_frontend_package/static/assets/{AboutPanel-C5DQxPC9.js.map → AboutPanel-DeWaRZUc.js.map} +1 -1
- comfyui_frontend_package/static/assets/{AudioPreviewPlayer-BNO9ZjOM.js → AudioPreviewPlayer-CSxbl0y3.js} +2 -2
- comfyui_frontend_package/static/assets/{AudioPreviewPlayer-BNO9ZjOM.js.map → AudioPreviewPlayer-CSxbl0y3.js.map} +1 -1
- comfyui_frontend_package/static/assets/{ComfyQueueButton-D0Y-jFOd.js → ComfyQueueButton-BV0p-R1-.js} +2 -2
- comfyui_frontend_package/static/assets/{ComfyQueueButton-D0Y-jFOd.js.map → ComfyQueueButton-BV0p-R1-.js.map} +1 -1
- comfyui_frontend_package/static/assets/{ExtensionPanel-CbCxE4jg.js → ExtensionPanel-DvPzK040.js} +2 -2
- comfyui_frontend_package/static/assets/{ExtensionPanel-CbCxE4jg.js.map → ExtensionPanel-DvPzK040.js.map} +1 -1
- comfyui_frontend_package/static/assets/GraphView-2T90vQj0.css +1 -0
- comfyui_frontend_package/static/assets/GraphView-BuGkgiGk.js +15 -0
- comfyui_frontend_package/static/assets/GraphView-BuGkgiGk.js.map +1 -0
- comfyui_frontend_package/static/assets/{KeybindingPanel-Ceb51ttS.js → KeybindingPanel-DbjoObzw.js} +2 -2
- comfyui_frontend_package/static/assets/{KeybindingPanel-Ceb51ttS.js.map → KeybindingPanel-DbjoObzw.js.map} +1 -1
- comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-Op4fug5d.js +2 -0
- comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-Op4fug5d.js.map +1 -0
- comfyui_frontend_package/static/assets/{LegacyCreditsPanel-K_GDtrt_.js → LegacyCreditsPanel-BFKSdy5y.js} +2 -2
- comfyui_frontend_package/static/assets/{LegacyCreditsPanel-K_GDtrt_.js.map → LegacyCreditsPanel-BFKSdy5y.js.map} +1 -1
- comfyui_frontend_package/static/assets/{Load3D-CbCbkSys.js → Load3D-B3uXG_Os.js} +2 -2
- comfyui_frontend_package/static/assets/Load3D-B3uXG_Os.js.map +1 -0
- comfyui_frontend_package/static/assets/{Load3D.vue_vue_type_script_setup_true_lang-3QcwinlP.js → Load3D.vue_vue_type_script_setup_true_lang-CslfLloq.js} +2 -2
- comfyui_frontend_package/static/assets/{Load3D.vue_vue_type_script_setup_true_lang-3QcwinlP.js.map → Load3D.vue_vue_type_script_setup_true_lang-CslfLloq.js.map} +1 -1
- comfyui_frontend_package/static/assets/{Media3DTop--kp0iekJ.js → Media3DTop-CfCHfZKG.js} +2 -2
- comfyui_frontend_package/static/assets/{Media3DTop--kp0iekJ.js.map → Media3DTop-CfCHfZKG.js.map} +1 -1
- comfyui_frontend_package/static/assets/{ServerConfigPanel-BGnrWtif.js → ServerConfigPanel-DvFzfUMn.js} +2 -2
- comfyui_frontend_package/static/assets/{ServerConfigPanel-BGnrWtif.js.map → ServerConfigPanel-DvFzfUMn.js.map} +1 -1
- comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-C1UryadQ.css +1 -0
- comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-DTq1ffwv.js +2 -0
- comfyui_frontend_package/static/assets/{SubscriptionRequiredDialogContent-BMLw-0ti.js.map → SubscriptionRequiredDialogContent-DTq1ffwv.js.map} +1 -1
- comfyui_frontend_package/static/assets/{UserAvatar.vue_vue_type_script_setup_true_lang-48WRCWXz.js → UserAvatar.vue_vue_type_script_setup_true_lang-COE-v4cY.js} +2 -2
- comfyui_frontend_package/static/assets/{UserAvatar.vue_vue_type_script_setup_true_lang-48WRCWXz.js.map → UserAvatar.vue_vue_type_script_setup_true_lang-COE-v4cY.js.map} +1 -1
- comfyui_frontend_package/static/assets/{UserPanel-BfOBqtyE.js → UserPanel-Xvm9QBld.js} +2 -2
- comfyui_frontend_package/static/assets/{UserPanel-BfOBqtyE.js.map → UserPanel-Xvm9QBld.js.map} +1 -1
- comfyui_frontend_package/static/assets/{UserSelectView-hAFmUbm0.js → UserSelectView-Bh8_ghwS.js} +2 -2
- comfyui_frontend_package/static/assets/{UserSelectView-hAFmUbm0.js.map → UserSelectView-Bh8_ghwS.js.map} +1 -1
- comfyui_frontend_package/static/assets/{ValueControlPopover-BEbJxP9Z.js → ValueControlPopover-BrAoQ_2-.js} +2 -2
- comfyui_frontend_package/static/assets/{ValueControlPopover-BEbJxP9Z.js.map → ValueControlPopover-BrAoQ_2-.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetAudioUI-BuXP7XBQ.js → WidgetAudioUI-BjV6M32Q.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetAudioUI-BuXP7XBQ.js.map → WidgetAudioUI-BjV6M32Q.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetButton-vKBzo4q0.js → WidgetButton-Dk30Nukl.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetButton-vKBzo4q0.js.map → WidgetButton-Dk30Nukl.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetChart-Dz4GcJwO.js → WidgetChart-BntGUEQZ.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetChart-Dz4GcJwO.js.map → WidgetChart-BntGUEQZ.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetColorPicker-FoC3o0Lp.js → WidgetColorPicker-CkqNsGhI.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetColorPicker-FoC3o0Lp.js.map → WidgetColorPicker-CkqNsGhI.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetGalleria-CV4Nv2wv.js → WidgetGalleria-BYYCCQyX.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetGalleria-CV4Nv2wv.js.map → WidgetGalleria-BYYCCQyX.js.map} +1 -1
- comfyui_frontend_package/static/assets/WidgetInputNumber-psomfHIy.js +2 -0
- comfyui_frontend_package/static/assets/WidgetInputNumber-psomfHIy.js.map +1 -0
- comfyui_frontend_package/static/assets/{WidgetInputNumber.vue_vue_type_script_setup_true_lang-D-IwEPPr.js → WidgetInputNumber.vue_vue_type_script_setup_true_lang-qjF5C0EN.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetInputNumber.vue_vue_type_script_setup_true_lang-D-IwEPPr.js.map → WidgetInputNumber.vue_vue_type_script_setup_true_lang-qjF5C0EN.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetInputText-Cv8Z1_b9.js → WidgetInputText-Btor0Uhs.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetInputText-Cv8Z1_b9.js.map → WidgetInputText-Btor0Uhs.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetLayoutField.vue_vue_type_script_setup_true_lang-DFWVBJH-.js → WidgetLayoutField.vue_vue_type_script_setup_true_lang-Bq1noASf.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetLayoutField.vue_vue_type_script_setup_true_lang-DFWVBJH-.js.map → WidgetLayoutField.vue_vue_type_script_setup_true_lang-Bq1noASf.js.map} +1 -1
- comfyui_frontend_package/static/assets/WidgetLegacy-Cj4T7tN3.js +2 -0
- comfyui_frontend_package/static/assets/WidgetLegacy-Cj4T7tN3.js.map +1 -0
- comfyui_frontend_package/static/assets/{WidgetMarkdown-C4CnxNoM.js → WidgetMarkdown-CsRRMdeD.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetMarkdown-C4CnxNoM.js.map → WidgetMarkdown-CsRRMdeD.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetRecordAudio-BQ9yATXo.js → WidgetRecordAudio-CbCqPJqI.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetRecordAudio-BQ9yATXo.js.map → WidgetRecordAudio-CbCqPJqI.js.map} +1 -1
- comfyui_frontend_package/static/assets/WidgetSelect-DcVQrOUl.js +2 -0
- comfyui_frontend_package/static/assets/WidgetSelect-DcVQrOUl.js.map +1 -0
- comfyui_frontend_package/static/assets/{WidgetSelect.vue_vue_type_script_setup_true_lang-EU2Y4eXi.js → WidgetSelect.vue_vue_type_script_setup_true_lang-B0Z0OQv6.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetSelect.vue_vue_type_script_setup_true_lang-EU2Y4eXi.js.map → WidgetSelect.vue_vue_type_script_setup_true_lang-B0Z0OQv6.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetTextarea-C3Wo0ULT.js → WidgetTextarea-OMPagx9K.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetTextarea-C3Wo0ULT.js.map → WidgetTextarea-OMPagx9K.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetToggleSwitch-BZUubsU5.js → WidgetToggleSwitch-mOArdF4c.js} +2 -2
- comfyui_frontend_package/static/assets/{WidgetToggleSwitch-BZUubsU5.js.map → WidgetToggleSwitch-mOArdF4c.js.map} +1 -1
- comfyui_frontend_package/static/assets/{WidgetWithControl.vue_vue_type_script_setup_true_lang-B7cz0rwK.js → WidgetWithControl.vue_vue_type_script_setup_true_lang-Bx6suA2O.js} +3 -3
- comfyui_frontend_package/static/assets/{WidgetWithControl.vue_vue_type_script_setup_true_lang-B7cz0rwK.js.map → WidgetWithControl.vue_vue_type_script_setup_true_lang-Bx6suA2O.js.map} +1 -1
- comfyui_frontend_package/static/assets/{audioService-CNb54hvw.js → audioService-jRjL5LtP.js} +2 -2
- comfyui_frontend_package/static/assets/{audioService-CNb54hvw.js.map → audioService-jRjL5LtP.js.map} +1 -1
- comfyui_frontend_package/static/assets/{audioUtils-ClyG3xvN.js → audioUtils-DsaLmBXU.js} +2 -2
- comfyui_frontend_package/static/assets/{audioUtils-ClyG3xvN.js.map → audioUtils-DsaLmBXU.js.map} +1 -1
- comfyui_frontend_package/static/assets/{commands-DHxq3nWN.js → commands-6krn3srk.js} +2 -2
- comfyui_frontend_package/static/assets/commands-6krn3srk.js.map +1 -0
- comfyui_frontend_package/static/assets/commands-B8TX-OdW.js +2 -0
- comfyui_frontend_package/static/assets/commands-B8TX-OdW.js.map +1 -0
- comfyui_frontend_package/static/assets/commands-BBMcY34D.js +2 -0
- comfyui_frontend_package/static/assets/commands-BBMcY34D.js.map +1 -0
- comfyui_frontend_package/static/assets/commands-C0R_Md8R.js +2 -0
- comfyui_frontend_package/static/assets/commands-C0R_Md8R.js.map +1 -0
- comfyui_frontend_package/static/assets/commands-CAv4QkZ-.js +2 -0
- comfyui_frontend_package/static/assets/commands-CAv4QkZ-.js.map +1 -0
- comfyui_frontend_package/static/assets/commands-CeIcZl_a.js +2 -0
- comfyui_frontend_package/static/assets/commands-CeIcZl_a.js.map +1 -0
- comfyui_frontend_package/static/assets/commands-CtwQRBL_.js +2 -0
- comfyui_frontend_package/static/assets/commands-CtwQRBL_.js.map +1 -0
- comfyui_frontend_package/static/assets/commands-DjX42wW9.js +2 -0
- comfyui_frontend_package/static/assets/commands-DjX42wW9.js.map +1 -0
- comfyui_frontend_package/static/assets/commands-DzwpXu9N.js +2 -0
- comfyui_frontend_package/static/assets/commands-DzwpXu9N.js.map +1 -0
- comfyui_frontend_package/static/assets/commands-E4h99f7h.js +2 -0
- comfyui_frontend_package/static/assets/commands-E4h99f7h.js.map +1 -0
- comfyui_frontend_package/static/assets/commands-we3Embjk.js +2 -0
- comfyui_frontend_package/static/assets/commands-we3Embjk.js.map +1 -0
- comfyui_frontend_package/static/assets/{index-B3VEOed6.js → index--yK73oka.js} +23 -23
- comfyui_frontend_package/static/assets/index--yK73oka.js.map +1 -0
- comfyui_frontend_package/static/assets/index-CofcAZPL.css +1 -0
- comfyui_frontend_package/static/assets/{index-B5S_Le6r.js → index-CwTFEsg4.js} +2 -2
- comfyui_frontend_package/static/assets/{index-B5S_Le6r.js.map → index-CwTFEsg4.js.map} +1 -1
- comfyui_frontend_package/static/assets/{index-CtDW77xi.js → index-Hz5b30sA.js} +2 -2
- comfyui_frontend_package/static/assets/{index-CtDW77xi.js.map → index-Hz5b30sA.js.map} +1 -1
- comfyui_frontend_package/static/assets/{keybindingService-50G4NbCc.js → keybindingService-XE4XFAxf.js} +2 -2
- comfyui_frontend_package/static/assets/{keybindingService-50G4NbCc.js.map → keybindingService-XE4XFAxf.js.map} +1 -1
- comfyui_frontend_package/static/assets/main-B1lLjnTc.js +17 -0
- comfyui_frontend_package/static/assets/main-B1lLjnTc.js.map +1 -0
- comfyui_frontend_package/static/assets/main-B6hk_BFB.js +17 -0
- comfyui_frontend_package/static/assets/main-B6hk_BFB.js.map +1 -0
- comfyui_frontend_package/static/assets/main-BJ1OB7_l.js +14 -0
- comfyui_frontend_package/static/assets/main-BJ1OB7_l.js.map +1 -0
- comfyui_frontend_package/static/assets/main-Beff11ll.js +17 -0
- comfyui_frontend_package/static/assets/main-Beff11ll.js.map +1 -0
- comfyui_frontend_package/static/assets/main-Bmv0nfqm.js +14 -0
- comfyui_frontend_package/static/assets/main-Bmv0nfqm.js.map +1 -0
- comfyui_frontend_package/static/assets/main-Bmv_vwNy.js +14 -0
- comfyui_frontend_package/static/assets/main-Bmv_vwNy.js.map +1 -0
- comfyui_frontend_package/static/assets/main-CC-DWYqg.js +17 -0
- comfyui_frontend_package/static/assets/main-CC-DWYqg.js.map +1 -0
- comfyui_frontend_package/static/assets/main-CPEN9kTz.js +17 -0
- comfyui_frontend_package/static/assets/main-CPEN9kTz.js.map +1 -0
- comfyui_frontend_package/static/assets/main-Ca_1lXEg.js +17 -0
- comfyui_frontend_package/static/assets/main-Ca_1lXEg.js.map +1 -0
- comfyui_frontend_package/static/assets/main-CiNLJloN.js +17 -0
- comfyui_frontend_package/static/assets/main-CiNLJloN.js.map +1 -0
- comfyui_frontend_package/static/assets/main-Dy-2iV5r.js +14 -0
- comfyui_frontend_package/static/assets/main-Dy-2iV5r.js.map +1 -0
- comfyui_frontend_package/static/assets/{vendor-primevue-Bp7MMXLP.js → vendor-primevue-DeKsC2uk.js} +2 -2
- comfyui_frontend_package/static/assets/{vendor-primevue-Bp7MMXLP.js.map → vendor-primevue-DeKsC2uk.js.map} +1 -1
- comfyui_frontend_package/static/index.html +1 -1
- {comfyui_frontend_package-1.37.10.dist-info → comfyui_frontend_package-1.38.0.dist-info}/METADATA +1 -1
- {comfyui_frontend_package-1.37.10.dist-info → comfyui_frontend_package-1.38.0.dist-info}/RECORD +134 -134
- comfyui_frontend_package/static/assets/GraphView-CepV6iZo.css +0 -1
- comfyui_frontend_package/static/assets/GraphView-_ZGu5uNf.js +0 -15
- comfyui_frontend_package/static/assets/GraphView-_ZGu5uNf.js.map +0 -1
- comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-BHcWsrBj.js +0 -2
- comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-BHcWsrBj.js.map +0 -1
- comfyui_frontend_package/static/assets/Load3D-CbCbkSys.js.map +0 -1
- comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-BJ80blC4.css +0 -1
- comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-BMLw-0ti.js +0 -2
- comfyui_frontend_package/static/assets/WidgetInputNumber-zsVb0Vit.js +0 -2
- comfyui_frontend_package/static/assets/WidgetInputNumber-zsVb0Vit.js.map +0 -1
- comfyui_frontend_package/static/assets/WidgetLegacy-Dh4xE798.js +0 -2
- comfyui_frontend_package/static/assets/WidgetLegacy-Dh4xE798.js.map +0 -1
- comfyui_frontend_package/static/assets/WidgetSelect-B9DwAKiE.js +0 -2
- comfyui_frontend_package/static/assets/WidgetSelect-B9DwAKiE.js.map +0 -1
- comfyui_frontend_package/static/assets/commands-2re7xZu6.js +0 -2
- comfyui_frontend_package/static/assets/commands-2re7xZu6.js.map +0 -1
- comfyui_frontend_package/static/assets/commands-5dfPmqrI.js +0 -2
- comfyui_frontend_package/static/assets/commands-5dfPmqrI.js.map +0 -1
- comfyui_frontend_package/static/assets/commands-9-tUiihM.js +0 -2
- comfyui_frontend_package/static/assets/commands-9-tUiihM.js.map +0 -1
- comfyui_frontend_package/static/assets/commands-BOYC3thj.js +0 -2
- comfyui_frontend_package/static/assets/commands-BOYC3thj.js.map +0 -1
- comfyui_frontend_package/static/assets/commands-CSrZnGH2.js +0 -2
- comfyui_frontend_package/static/assets/commands-CSrZnGH2.js.map +0 -1
- comfyui_frontend_package/static/assets/commands-DGL_KBDe.js +0 -2
- comfyui_frontend_package/static/assets/commands-DGL_KBDe.js.map +0 -1
- comfyui_frontend_package/static/assets/commands-DHxq3nWN.js.map +0 -1
- comfyui_frontend_package/static/assets/commands-DOgmN2m6.js +0 -2
- comfyui_frontend_package/static/assets/commands-DOgmN2m6.js.map +0 -1
- comfyui_frontend_package/static/assets/commands-DoQ2gxMh.js +0 -2
- comfyui_frontend_package/static/assets/commands-DoQ2gxMh.js.map +0 -1
- comfyui_frontend_package/static/assets/commands-irqWUFB-.js +0 -2
- comfyui_frontend_package/static/assets/commands-irqWUFB-.js.map +0 -1
- comfyui_frontend_package/static/assets/commands-xGVSTfS4.js +0 -2
- comfyui_frontend_package/static/assets/commands-xGVSTfS4.js.map +0 -1
- comfyui_frontend_package/static/assets/index-B3VEOed6.js.map +0 -1
- comfyui_frontend_package/static/assets/index-CPtP45Cb.css +0 -1
- comfyui_frontend_package/static/assets/main-B3vd7GL1.js +0 -17
- comfyui_frontend_package/static/assets/main-B3vd7GL1.js.map +0 -1
- comfyui_frontend_package/static/assets/main-BKCc2TkD.js +0 -17
- comfyui_frontend_package/static/assets/main-BKCc2TkD.js.map +0 -1
- comfyui_frontend_package/static/assets/main-BNvzUx74.js +0 -17
- comfyui_frontend_package/static/assets/main-BNvzUx74.js.map +0 -1
- comfyui_frontend_package/static/assets/main-BPu7av80.js +0 -17
- comfyui_frontend_package/static/assets/main-BPu7av80.js.map +0 -1
- comfyui_frontend_package/static/assets/main-BQ4z0Xxc.js +0 -14
- comfyui_frontend_package/static/assets/main-BQ4z0Xxc.js.map +0 -1
- comfyui_frontend_package/static/assets/main-BoyaoV4J.js +0 -14
- comfyui_frontend_package/static/assets/main-BoyaoV4J.js.map +0 -1
- comfyui_frontend_package/static/assets/main-CJ1ZmTbz.js +0 -14
- comfyui_frontend_package/static/assets/main-CJ1ZmTbz.js.map +0 -1
- comfyui_frontend_package/static/assets/main-DxByB8u3.js +0 -17
- comfyui_frontend_package/static/assets/main-DxByB8u3.js.map +0 -1
- comfyui_frontend_package/static/assets/main-Dyk43SJi.js +0 -17
- comfyui_frontend_package/static/assets/main-Dyk43SJi.js.map +0 -1
- comfyui_frontend_package/static/assets/main-QMLeyFJQ.js +0 -17
- comfyui_frontend_package/static/assets/main-QMLeyFJQ.js.map +0 -1
- comfyui_frontend_package/static/assets/main-f7MqrMkx.js +0 -14
- comfyui_frontend_package/static/assets/main-f7MqrMkx.js.map +0 -1
- {comfyui_frontend_package-1.37.10.dist-info → comfyui_frontend_package-1.38.0.dist-info}/WHEEL +0 -0
- {comfyui_frontend_package-1.37.10.dist-info → comfyui_frontend_package-1.38.0.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-DTq1ffwv.js","./index--yK73oka.js","./vendor-primevue-DeKsC2uk.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-CofcAZPL.css","./UserAvatar.vue_vue_type_script_setup_true_lang-COE-v4cY.js","./index-Hz5b30sA.js","./LazyImage.vue_vue_type_script_setup_true_lang-Op4fug5d.js","./keybindingService-XE4XFAxf.js","./serverConfigStore-D8kGBwZ6.js","./WidgetInputNumber.vue_vue_type_script_setup_true_lang-qjF5C0EN.js","./widgetPropFilter-CygYoMQt.js","./WidgetLayoutField.vue_vue_type_script_setup_true_lang-Bq1noASf.js","./WidgetWithControl.vue_vue_type_script_setup_true_lang-Bx6suA2O.js","./WidgetInputNumber-DwTgzZ6Z.css","./SubscriptionRequiredDialogContent-C1UryadQ.css","./ComfyQueueButton-BV0p-R1-.js","./ComfyQueueButton-Chw03MdC.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
var Ml=Object.defineProperty;var n=(e,o)=>Ml(e,"name",{value:o,configurable:!0});import{bw as Ze,r as L,E as y,bx as q,ep as ya,i as Pl,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 K,by as m,q as E,p as ye,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 Dl,er as ba,m as St,D as zn,I as Ce,G as ve,L as je,es as _s,dH as Sn,e9 as _n,et as Al,h as Ie,J as to,ec as Zo,bB as en,bg as lt,dc as rt,du as wa,n as Fe,dI as ke,o as ze,cO as Ts,eu as Ll,d8 as Xt,d2 as Oe,e7 as El,cB as Qt,db as tn,ev as Vl,dy as ka,a as Tn,ew as Ca,f as xa,cd as ht,x as It,cp as Sa,cx as Et,dg as _a,t as oo,cy as Bn,d5 as xt,e8 as Ol,ex as ao,dK as kt,dw as Ta,bl as Rl,dn as Wl,cF as $a,b as Na,bz as $s,ey as zl,ez as vo,eA as Bl,bi as Ns,eB as Fl,d6 as Ul,cw as Gl,bj as Hl,B as jl,da as Ia,d3 as on,eC as ql,d4 as Kl,dF as Ma,dz as Ql,bn as Yl,g as Is,bk as Pa,dG as Jl,d0 as Xl,dE as Da,eD as Zl,em as ei,e2 as ti}from"./vendor-other-B8t_Wf2K.js";import{d as Dt,u as pe,s as qe,j as Aa,k as La}from"./vendor-vue-DaLZjKA7.js";import{b as oi,p as et,_ as Fn,u as Wt,Z as Ea,$ as $n,a0 as Nt,a1 as Un,w as Zt,a2 as Gn,e as ni,a3 as Ms,a4 as si,a as Hn,q as Ps,M as ai,O as li,P as ii,J as ri,a5 as ui,v as Va,o as Oa,L as Ra,R as $o,c as ci,y as Wa,g as di,a6 as pi,a7 as fi,m as mi,k as mo,a8 as gi}from"./vendor-primevue-DeKsC2uk.js";import{s as Ae,n as He,a as Te,i as za,b as Ct,c as ne,_ as Z,d as Le,S as nn,t as ce,u as ut,e as re,f as Pt,g as vi,E as jn,h as Ds,V as hi,j as yi,k as qn,l as Kn,m as Qn,o as bi,p as yt,q as it,r as J,v as wi,w as Re,x as lo,y as Ho,z as io,A as Se,B as ct,C as tt,D as ki,F as Yn,G as Ci,H as _t,I as Ba,J as xi,K as Jn,L as he,M as Si,N as As,O as Ls,P as zt,Q as _i,R as Fa,T as Es,U as Vs,W as Ti,X as $i,Y as Bt,Z as Ni,$ as Ii,a0 as Mi,a1 as Pi,a2 as Xn,a3 as ro,a4 as Ft,a5 as Ua,a6 as Ga,a7 as Di,a8 as Ai,a9 as Ha,aa as Zn,ab as Ke,ac as Li,ad as gt,ae as Nn,af as es,ag as eo,ah as Ei,ai as ho,aj as Vi,ak as Oi,al as no,am as Pe,an as ja,ao as Ri,ap as dt,aq as Wi,ar as zi,as as uo,at as ge,au as Bi,av as Fi,aw as Vt,ax as Ye,ay as Oo,az as Ui,aA as Ut,aB as so,aC as Gi,aD as ts,aE as os,aF as jo,aG as ns,aH as vt,aI as Ot,aJ as Hi,aK as Mt,aL as We,aM as ss,aN as qa,aO as sn,aP as ji,aQ as qi,aR as Ka,aS as Ki,aT as Qi,aU as Yi,aV as Ji,aW as an,aX as ko,aY as Xi,aZ as Zi,a_ as er,a$ as tr,b0 as or,b1 as un,b2 as _o,b3 as nr,b4 as sr,b5 as ar,b6 as lr,b7 as ir,b8 as rr,b9 as ur,ba as cr,bb as dr,bc as as,bd as pr,be as Os,bf as fr,bg as mr,bh as gr,bi as vr,bj as hr,bk as wt,bl as Qa,bm as ls,bn as Ya,bo as yo,bp as Ja,bq as Xa,br as Za,bs as yr,bt as br,bu as el,bv as wr,bw as kr,bx as Cr,by as tl,bz as Rs,bA as xr,bB as Sr,bC as is,bD as _r,bE as mt,bF as ol,bG as Tr,bH as $r,bI as Yt,bJ as Nr,bK as Ir,bL as Mr,bM as Pr,bN as Dr,bO as Ar,bP as cn,bQ as No,bR as Lr,bS as nl,bT as dn,bU as Er,bV as Vr,bW as pn,bX as sl,bY as Ws,bZ as Or,b_ as Rr,b$ as To,c0 as fn,c1 as Wr,c2 as zr,c3 as Br,c4 as Fr,c5 as zs,c6 as Bs,c7 as Fs,c8 as Ur,c9 as al,ca as Gr,cb as Hr,cc as jr,cd as qr,ce as Kr,cf as Us,cg as Qr,ch as Gs,ci as Yr,cj as Jr,ck as Hs,cl as js,cm as Xr,cn as Zr,co as eu,cp as bo,cq as tu,cr as ou,cs as nu,ct as su,cu as au,cv as lu,cw as ll,cx as iu,cy as ru,cz as uu,cA as cu,cB as du,cC as pu}from"./index--yK73oka.js";import{_ as il}from"./UserAvatar.vue_vue_type_script_setup_true_lang-COE-v4cY.js";import{W as fu}from"./index-Hz5b30sA.js";import{_ as qo,u as mu,a as gu,b as vu,c as Co,d as hu}from"./LazyImage.vue_vue_type_script_setup_true_lang-Op4fug5d.js";import{u as mn}from"./keybindingService-XE4XFAxf.js";import{u as yu}from"./serverConfigStore-D8kGBwZ6.js";import{_ as bu}from"./WidgetInputNumber.vue_vue_type_script_setup_true_lang-qjF5C0EN.js";var rl=(e=>(e.Cloud="cloud",e.Local="local",e.Desktop="desktop",e.Mac="mac",e.Windows="windows",e))(rl||{});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 qs(e,o){return`${e.toLowerCase().replace(/\s+/g,"-")}-${o.toLowerCase().replace(/\s+/g,"-")}`}n(qs,"generateCategoryId");const ul=Dt("workflowTemplates",()=>{const e=Ze({}),o=Ze([]),t=Ze([]),s=L(!1),l=L(new Set),a=n(b=>f.value.find(N=>N.name===b),"getTemplateByName"),i=L(new Map),r=n((b,N)=>({...b,localizedTitle:Ae(`templateWorkflows.template.${He(N)}.${He(b.name)}`,b.title??b.name),localizedDescription:Ae(`templateWorkflows.templateDescription.${He(N)}.${He(b.name)}`,b.description)}),"addLocalizedFieldsToTemplate"),u=n((b,N)=>b.map(S=>r(S,N)),"localizeTemplateList"),p=n(b=>({...b,localizedTitle:Ae(`templateWorkflows.category.${He(b.title)}`,b.title??b.moduleName),templates:u(b.templates,b.title)}),"localizeTemplateCategory"),g=n(()=>{const b=o.value.flatMap(S=>S.templates.map(I=>({...r(I,S.title),sourceModule:S.moduleName}))),N=Object.entries(e.value).flatMap(([S,I])=>I.map(_=>({name:_,mediaType:"image",mediaSubtype:"jpg",description:_,sourceModule:S})));return{moduleName:"all",title:"All",localizedTitle:Ae("templateWorkflows.category.All","All Templates"),templates:[...b,...N]}},"createAllCategory"),v=y(()=>{const b=[...o.value.map(p),...Object.entries(e.value).map(([S,I])=>({moduleName:S,title:S,localizedTitle:Ae(`templateWorkflows.category.${He(S)}`,S),templates:I.map(_=>({name:_,mediaType:"image",mediaSubtype:"jpg",description:_}))}))];return[{label:Ae("templateWorkflows.category.ComfyUI Examples","ComfyUI Examples"),modules:[g(),...b.filter(S=>S.moduleName==="default")]},...Object.keys(e.value).length>0?[{label:Ae("templateWorkflows.category.Custom Nodes","Custom Nodes"),modules:b.filter(S=>S.moduleName!=="default")}]:[]]}),f=y(()=>{const b=[];return o.value.forEach(S=>{S.templates.forEach(I=>{const _={...I,sourceModule:S.moduleName,category:S.title,categoryType:S.type,categoryGroup:S.category,isEssential:S.isEssential,isPartnerNode:I.openSource===!1,searchableText:[I.title||I.name,I.description||"",S.title,...I.tags||[],...I.models||[]].join(" ")};b.push(_)})}),Object.entries(e.value).forEach(([S,I])=>{I.forEach(_=>{const x={name:_,title:_,description:_,mediaType:"image",mediaSubtype:"jpg",sourceModule:S,category:"Extensions",categoryType:"extension",searchableText:`${_} ${S} extension`};b.push(x)})}),b.filter(S=>!S.requiresCustomNodes?.length)}),C=n(b=>{if(b==="all")return f.value;if(b.startsWith("basics-"))return f.value.filter(S=>S.isEssential&&S.category?.toLowerCase().replace(/\s+/g,"-")===b.replace("basics-",""));if(b==="popular")return f.value;if(b==="partner-nodes")return f.value.filter(S=>S.isPartnerNode);if(b.startsWith("extension-")){const S=b.replace("extension-","");return f.value.filter(I=>I.sourceModule===S)}const N=i.value.get(b);return N?f.value.filter(S=>!(N.category&&S.category!==N.category||N.categoryGroup&&S.categoryGroup!==N.categoryGroup)):f.value},"filterTemplatesByCategory"),w=y(()=>{if(!s.value)return[];const b=[];i.value.clear(),b.push({id:"all",label:Ae("templateWorkflows.category.All","All Templates"),icon:Io("all")}),b.push({id:"popular",label:Ae("templateWorkflows.category.Popular","Popular"),icon:"icon-[lucide--flame]"});const N=o.value.filter(x=>x.isEssential&&x.templates.length>0);N.length>0&&N.forEach(x=>{const T=x.icon,M=x.title??"Getting Started",P=qs("basics",x.title);b.push({id:P,label:Ae(`templateWorkflows.category.${He(M)}`,M),icon:T||Io(x.type||"getting-started")})});const S=new Map;if(o.value.forEach(x=>{if(x.isEssential)return;const T=x.category,M=x.icon;if(T){S.has(T)||S.set(T,{title:T,items:[]});const P=S.get(T),B=qs(T,x.title);i.value.set(B,{category:x.title,categoryGroup:T}),P.items.push({id:B,label:Ae(`templateWorkflows.category.${He(x.title)}`,x.title),icon:M||Io(x.type||"default")})}}),S.forEach((x,T)=>{x.items.length>0&&b.push({title:Ae(`templateWorkflows.category.${He(T)}`,T.split(" ").map(M=>M.charAt(0).toUpperCase()+M.slice(1).toLowerCase()).join(" ")),items:x.items})}),f.value.filter(x=>x.isPartnerNode).length>0&&b.push({id:"partner-nodes",label:Ae("templateWorkflows.category.Partner Nodes","Partner Nodes"),icon:"icon-[lucide--handshake]"}),f.value.filter(x=>x.sourceModule!=="default").length>0){const T=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")}));b.push({title:Ae("templateWorkflows.category.Extensions","Extensions"),items:T,collapsible:!0})}return b});async function h(){try{if(!s.value){e.value=await Te.getWorkflowTemplates();const b=za.global.locale.value,[N,S]=await Promise.all([Te.getCoreWorkflowTemplates(b),Ct&&b!=="en"?Te.getCoreWorkflowTemplates("en"):Promise.resolve([])]);o.value=N,t.value=S;const I=o.value.flatMap(x=>x.templates.map(T=>T.name)),_=Object.values(e.value).flat();l.value=new Set([...I,..._]),s.value=!0}}catch(b){console.error("Error fetching workflow templates:",b)}}n(h,"loadWorkflowTemplates");function k(b){if(t.value.length===0)return null;for(const N of t.value){const S=N.templates.find(I=>I.name===b);if(S)return{tags:S.tags,category:N.title,useCase:S.useCase,models:S.models,license:S.license}}return null}return n(k,"getEnglishMetadata"),{groupedTemplates:v,navGroupedTemplates:w,enhancedTemplates:f,filterTemplatesByCategory:C,isLoaded:s,loadWorkflowTemplates:h,knownTemplateNames:l,getTemplateByName:a,getEnglishMetadata:k}}),ln=Symbol(),wu={class:"base-widget-layout rounded-2xl overflow-hidden relative"},ku={class:"flex h-full w-full"},Cu={class:"flex-1 flex bg-base-background"},xu={class:"flex h-full w-full flex-col"},Su={key:0,class:"w-full h-18 px-6 flex items-center justify-between gap-2"},_u={class:"flex flex-1 shrink-0 gap-2"},Tu={class:"flex min-h-0 flex-1 flex-col"},$u={key:0,class:"text-xxl m-0 px-6 pt-2 pb-6 capitalize"},Nu={class:"min-h-0 flex-1 px-6 pt-0 pb-10 overflow-y-auto scrollbar-custom"},Iu={key:0,class:"w-1/4 min-w-40 max-w-80"},Mu=q({__name:"BaseModalLayout",props:{contentTitle:{}},setup(e){const o={md:880},t={width:"w-1/3",minWidth:"min-w-40",maxWidth:"max-w-56"},s=ya(),l=Pl(ln,()=>{}),i=Yo(o).greater("md"),r=L(!0),u=L(!1),p=L(!1),g=y(()=>!!s.rightPanel);se(i,w=>{w||(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"),C=n(()=>{u.value=!u.value},"toggleRightPanel");return(w,h)=>(d(),$("div",wu,[de(O(Z,{size:"icon",class:K(m(ne)("absolute top-4 right-18 z-10","transition-opacity duration-200",{"opacity-0 pointer-events-none":u.value||!g.value})),onClick:C},{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(Z,{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",ku,[O(Jo,{name:"slide-panel"},{default:A(()=>[w.$slots.leftPanel&&v.value?(d(),$("nav",{key:0,class:K([t.width,t.minWidth,t.maxWidth])},[ye(w.$slots,"leftPanel",{},void 0,!0)],2)):E("",!0)]),_:3}),c("div",Cu,[c("div",xu,[w.$slots.header?(d(),$("header",Su,[c("div",_u,[m(i)?E("",!0):(d(),R(Z,{key:0,size:"icon",onClick:f},{default:A(()=>[c("i",{class:K(m(ne)(v.value?"icon-[lucide--panel-left]":"icon-[lucide--panel-left-close]"))},null,2)]),_:1})),ye(w.$slots,"header",{},void 0,!0)]),ye(w.$slots,"header-right-area",{},void 0,!0),c("div",{class:K(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(Z,{key:0,size:"icon",onClick:C},{default:A(()=>h[2]||(h[2]=[c("i",{class:"icon-[lucide--panel-right-close]"},null,-1)])),_:1})):E("",!0)],2)])):E("",!0),c("main",Tu,[ye(w.$slots,"contentFilter",{},void 0,!0),w.$slots.leftPanel?E("",!0):(d(),$("h2",$u,V(w.contentTitle),1)),c("div",Nu,[ye(w.$slots,"content",{},void 0,!0)])])]),g.value&&u.value?(d(),$("aside",Iu,[ye(w.$slots,"rightPanel",{},void 0,!0)])):E("",!0)])])]))}}),rs=Le(Mu,[["__scopeId","data-v-643fc509"]]),Pu=q({__name:"NavIcon",props:{icon:{}},setup(e){return(o,t)=>(d(),$("i",{class:K([o.icon,"text-neutral text-sm shrink-0"])},null,2))}}),Du={key:0,class:"pt-0.5"},Au={key:1,class:"text-neutral icon-[lucide--folder] text-xs shrink-0"},Lu={class:"flex items-center break-all"},Ks=q({__name:"NavItem",props:{icon:{},active:{type:Boolean},onClick:{type:Function}},setup(e){return(o,t)=>(d(),$("div",{class:K(["flex cursor-pointer items-start gap-2 rounded-md px-4 py-3 text-sm transition-colors text-base-foreground",o.active?"bg-interface-menu-component-surface-selected":"hover:bg-interface-menu-component-surface-hovered"]),role:"button",onClick:t[0]||(t[0]=(...s)=>o.onClick&&o.onClick(...s))},[o.icon?(d(),$("div",Du,[O(Pu,{icon:o.icon},null,8,["icon"])])):(d(),$("i",Au)),c("span",Lu,[ye(o.$slots,"default")])],2))}}),Eu={class:"text-xs font-bold text-text-secondary uppercase"},Vu=q({__name:"NavTitle",props:{title:{},modelValue:{type:Boolean,default:!1},collapsible:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:o}){const t=o,s=y({get:n(()=>e.modelValue,"get"),set:n(a=>t("update:modelValue",a),"set")}),l=n(()=>{s.value=!s.value},"toggleCollapse");return(a,i)=>(d(),$("div",{class:K(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",Eu,V(a.title),1),a.collapsible?(d(),$("i",{key:0,class:K(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))}}),Ou={},Ru={class:"flex h-16 items-center justify-between px-6"},Wu={class:"flex items-center gap-2 pl-1"},zu={class:"text-neutral text-base font-bold"};function Bu(e,o){return d(),$("header",Ru,[c("div",Wu,[ye(e.$slots,"icon",{},()=>[o[0]||(o[0]=c("i",{class:"text-neutral icon-[lucide--puzzle] text-base"},null,-1))]),c("h2",zu,[ye(e.$slots,"default")])])])}n(Bu,"_sfc_render$2");const Fu=Le(Ou,[["render",Bu]]),Uu={class:"flex h-full w-full flex-col bg-modal-panel-background"},Gu={class:"flex scrollbar-hide flex-1 flex-col gap-1 overflow-y-auto px-3 py-4"},Hu={key:0,class:"flex flex-col gap-2"},ju={key:1,class:"flex flex-col gap-2"},us=q({__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",Uu,[O(Fu,null,{icon:A(()=>[ye(i.$slots,"header-icon")]),default:A(()=>[ye(i.$slots,"header-title")]),_:3}),c("nav",Gu,[(d(!0),$(oe,null,be(i.navItems,(u,p)=>(d(),$(oe,{key:p},["items"in u?(d(),$("div",Hu,[O(Vu,{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(Ks,{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",ju,[O(Ks,{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 qu(e){return y(()=>{const{minWidth:o,maxWidth:t}=e,s={};return o&&(s.minWidth=o),t&&(s.maxWidth=t),s})}n(qu,"usePopoverSizing");const Ku={class:"flex flex-col px-2 pt-2 pb-0"},Qu={key:1,class:"mt-2 flex items-center justify-between"},Yu={key:0,class:"px-1 text-sm text-base-foreground"},Ju={class:"text-sm"},Xu={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"},Zu={key:0,class:"text-bold icon-[lucide--check] text-xs text-base-foreground"},Rt=q({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}=pe(),l=y(()=>o.value.length),a=qu({minWidth:e.popoverMinWidth,maxWidth:e.popoverMaxWidth}),i=Dl(),r=y(()=>i.options||[]),u={fuseOptions:{keys:["name","value"],threshold:.3,includeScore:!1},matchAllWhenSearchEmpty:!0},{results:p}=ba(t,r,u),g=y(()=>{if(!t.value||t.value.trim()==="")return r.value;const v=p.value.map(C=>C.item);return[...o.value.filter(C=>!v.some(w=>w.value===C.value)),...v]});return(v,f)=>(d(),R(m(oi),St({modelValue:o.value,"onUpdate:modelValue":f[2]||(f[2]=C=>o.value=C)},{...v.$attrs,options:g.value},{"option-label":"name",unstyled:"","max-selected-labels":0,pt:{root:n(({props:C})=>({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":C.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:C})=>({class:m(ne)("flex gap-2 items-center h-10 px-2 rounded-lg cursor-pointer","hover:bg-secondary-background-hover",C?.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",Ju,V(v.label),1),l.value>0?(d(),$("span",Xu,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(C=>[c("div",{role:"button",class:"flex items-center gap-2 cursor-pointer",style:ve(m(a))},[c("div",{class:K(["flex size-4 shrink-0 items-center justify-center rounded p-0.5 transition-all duration-200",C.selected?"bg-primary-background":"bg-secondary-background"])},[C.selected?(d(),$("i",Zu)):E("",!0)],2),c("span",null,V(C.option.name),1)],4)]),_:2},[v.showSearchBox||v.showSelectedCount||v.showClearButton?{name:"header",fn:A(()=>[c("div",Ku,[v.showSearchBox?(d(),R(nn,{key:0,modelValue:t.value,"onUpdate:modelValue":f[0]||(f[0]=C=>t.value=C),class:K(v.showSelectedCount||v.showClearButton?"mb-2":""),"show-order":!0,"show-border":!0,"place-holder":v.searchPlaceholder},null,8,["modelValue","class","place-holder"])):E("",!0),v.showSelectedCount||v.showClearButton?(d(),$("div",Qu,[v.showSelectedCount?(d(),$("span",Yu,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(Z,{key:1,variant:"textonly",size:"md",onClick:f[1]||(f[1]=Ce(C=>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 ec(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 _s(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 _s(l,(i,r)=>i===r).sort().map(i=>({name:i,value:i}))});return{availableFileFormats:o,availableBaseModels:t}}n(ec,"useAssetFilterOptions");const tc={class:"flex gap-4 items-center justify-between px-6 pt-2 pb-6","data-component-id":"asset-filter-bar"},oc={class:"flex gap-4 items-center","data-component-id":"asset-filter-bar-left"},nc={class:"flex items-center","data-component-id":"asset-filter-bar-right"},sc=q({__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}=ec(e.assets),v=y(()=>(e.allAssets.length?e.allAssets:e.assets).some(h=>h.is_immutable===!1)),f=o;function C(){f("filterChange",{fileFormats:a.value.map(w=>w.value),baseModels:i.value.map(w=>w.value),sortBy:r.value,ownership:u.value})}return n(C,"handleFilterChange"),(w,h)=>(d(),$("div",tc,[c("div",oc,[m(p).length>0?(d(),R(Rt,{key:0,modelValue:a.value,"onUpdate:modelValue":[h[0]||(h[0]=k=>a.value=k),C],label:w.$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]=k=>i.value=k),C],label:w.$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]=k=>u.value=k),C],label:w.$t("assetBrowser.ownership"),options:l,class:"min-w-42","data-component-id":"asset-filter-ownership"},null,8,["modelValue","label"])):E("",!0)]),c("div",nc,[O(qo,{modelValue:r.value,"onUpdate:modelValue":[h[3]||(h[3]=k=>r.value=k),C],label:w.$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"])])]))}}),ac={class:"relative inline-flex items-center"},lc={class:"flex min-w-40 flex-col gap-2 p-2"},cl=q({__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",ac,[O(Z,{size:"icon",variant:"secondary",onClick:s.value?.toggle},{default:A(()=>[c("i",{class:K(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",lc,[ye(a.$slots,"default",{close:l})])]),_:3},8,["pt"])]))}}),ic={class:"flex flex-col px-4 py-2 text-sm text-muted-foreground border-t border-border-default"},rc={key:0},uc=q({__name:"ConfirmBody",props:{promptText:{}},setup(e){const o=y(()=>je(e.promptText));return(t,s)=>(d(),$("div",ic,[o.value?(d(),$("p",rc,V(o.value),1)):E("",!0)]))}}),cc={class:"w-full flex gap-2 justify-end px-2 pb-2"},dc=q({__name:"ConfirmFooter",props:{cancelText:{},confirmText:{},confirmClass:{},optionsDisabled:{}},emits:["cancel","confirm"],setup(e){const{t:o}=pe(),t=y(()=>e.confirmText||o("g.confirm")),s=y(()=>e.cancelText||o("g.cancel")),l=y(()=>je(e.optionsDisabled));return(a,i)=>(d(),$("section",cc,[O(Z,{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(Z,{disabled:l.value,variant:"textonly",class:K(a.confirmClass),onClick:i[1]||(i[1]=r=>a.$emit("confirm"))},{default:A(()=>[$e(V(t.value),1)]),_:1},8,["disabled","class"])]))}}),pc={class:"flex items-center gap-2 p-4 font-bold text-sm text-base-foreground font-inter"},fc={key:0,class:"flex-auto"},mc=q({__name:"ConfirmHeader",props:{title:{}},setup(e){return(o,t)=>(d(),$("div",pc,[o.title?(d(),$("span",fc,V(o.title),1)):E("",!0)]))}});function gc(e={}){const o=ut(),{headerProps:t,props:s,footerProps:l}=e;return o.showDialog({headerComponent:mc,component:uc,footerComponent:dc,headerProps:t,props:s,footerProps:l,dialogComponentProps:{pt:{header:"py-0! px-0!",content:"p-0!",footer:"p-0!"}}})}n(gc,"showConfirmDialog");const vc={class:"absolute left-2 bottom-2 flex flex-wrap justify-start gap-1"},hc=q({__name:"AssetBadgeGroup",props:{badges:{}},setup(e){return(o,t)=>(d(),$("div",vc,[(d(!0),$(oe,null,be(o.badges,s=>(d(),$("span",{key:s.label,class:K(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))]))}}),yc=["data-asset-id","aria-labelledby","aria-describedby","tabindex"],bc={class:"relative aspect-square w-full overflow-hidden rounded-xl"},wc=["src","alt"],kc={class:"max-h-32 flex flex-col gap-2 justify-between flex-auto"},Cc=["id"],xc=["id"],Sc={class:"flex gap-4 text-xs text-muted-foreground mt-auto"},_c={key:0,class:"flex items-center gap-1"},Tc={key:1,class:"flex items-center gap-1"},$c={key:2,class:"flex items-center gap-1"},Nc=q({__name:"AssetCard",props:{asset:{},interactive:{type:Boolean}},emits:["select","deleted"],setup(e,{emit:o}){const t=o,{t:s}=pe(),l=re(),{closeDialog:a}=ut(),{flags:i}=mu(),r=Pt(),u=Sn("dropdown-menu-button"),p=_n(),g=_n(),v=L(!1),f=L(),C=y(()=>f.value??e.asset.name),w=y(()=>(i.assetDeletionEnabled||i.assetRenameEnabled)&&!(e.asset.is_immutable??!0)),h=y(()=>l.get("LiteGraph.Node.TooltipDelay")),{isLoading:k,error:b}=Al({src:e.asset.preview_url??"",alt:e.asset.name});function N(){u.value?.hide();const _=je(C),x=L(s("assetBrowser.deletion.body")),T=L(!1),M=gc({headerProps:{title:s("assetBrowser.deletion.header")},props:{promptText:x},footerProps:{confirmText:s("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(()=>{a(M)},"onCancel"),onConfirm:n(async()=>{T.value=!0;try{x.value=s("assetBrowser.deletion.inProgress",{assetName:_}),await Ds.deleteAsset(e.asset.id),x.value=s("assetBrowser.deletion.complete",{assetName:_}),await new Promise(P=>setTimeout(P,1e3)),t("deleted",e.asset)}catch(P){console.error(P),x.value=s("assetBrowser.deletion.failed",{assetName:_}),await new Promise(B=>setTimeout(B,3e3))}finally{a(M)}},"onConfirm")}})}n(N,"confirmDeletion");function S(){u.value?.hide(),v.value=!0}n(S,"startAssetRename");async function I(_){if(v.value=!1,_){f.value=_;try{const x=await Ds.updateAsset(e.asset.id,{name:_});f.value=x.name}catch(x){console.error(x),r.add({severity:"error",summary:s("assetBrowser.rename.failed"),life:1e4}),f.value=void 0}}}return n(I,"assetRename"),(_,x)=>{const T=Ie("tooltip");return d(),$("div",{"data-component-id":"AssetCard","data-asset-id":_.asset.id,"aria-labelledby":m(p),"aria-describedby":m(g),tabindex:_.interactive?0:-1,class:K(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:x[3]||(x[3]=to(Ce(M=>_.interactive&&_.$emit("select",_.asset),["self"]),["enter"]))},[c("div",bc,[m(k)||m(b)?(d(),$("div",{key:0,class:"flex size-full cursor-pointer items-center justify-center bg-gradient-to-br from-smoke-400 via-smoke-800 to-charcoal-400",role:"button",onClick:x[0]||(x[0]=Ce(M=>_.interactive&&_.$emit("select",_.asset),["self"]))})):(d(),$("img",{key:1,src:_.asset.preview_url,alt:C.value,class:"size-full object-cover cursor-pointer",role:"button",onClick:x[1]||(x[1]=Ce(M=>_.interactive&&_.$emit("select",_.asset),["self"]))},null,8,wc)),O(hc,{badges:_.asset.badges},null,8,["badges"]),w.value?(d(),R(vi,{key:2,class:K(m(ne)("absolute top-2 right-2 invisible group-hover:visible",m(u)?.isOpen&&"visible"))},{default:A(()=>[O(cl,{ref:"dropdown-menu-button",size:"sm"},{default:A(()=>[m(i).assetRenameEnabled?(d(),R(Z,{key:0,variant:"secondary",size:"md",class:"justify-start",onClick:S},{default:A(()=>[x[4]||(x[4]=c("i",{class:"icon-[lucide--pencil]"},null,-1)),c("span",null,V(_.$t("g.rename")),1)]),_:1})):E("",!0),m(i).assetDeletionEnabled?(d(),R(Z,{key:1,variant:"secondary",size:"md",class:"justify-start",onClick:N},{default:A(()=>[x[5]||(x[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",kc,[de((d(),$("h3",{id:m(p),class:K(m(ne)("mb-2 m-0 text-base font-semibold line-clamp-2 wrap-anywhere","text-base-foreground"))},[O(jn,{"model-value":C.value,"is-editing":v.value,"input-attrs":{"data-testid":"asset-name-input"},onEdit:I,onCancel:x[2]||(x[2]=M=>I())},null,8,["model-value","is-editing"])],10,Cc)),[[T,{value:C.value,showDelay:h.value},void 0,{top:!0}]]),de((d(),$("p",{id:m(g),class:K(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,xc)),[[T,{value:_.asset.description,showDelay:h.value},void 0,{top:!0}]]),c("div",Sc,[_.asset.stats.stars?(d(),$("span",_c,[x[6]||(x[6]=c("i",{class:"icon-[lucide--star] size-3"},null,-1)),$e(" "+V(_.asset.stats.stars),1)])):E("",!0),_.asset.stats.downloadCount?(d(),$("span",Tc,[x[7]||(x[7]=c("i",{class:"icon-[lucide--download] size-3"},null,-1)),$e(" "+V(_.asset.stats.downloadCount),1)])):E("",!0),_.asset.stats.formattedDate?(d(),$("span",$c,[x[8]||(x[8]=c("i",{class:"icon-[lucide--clock] size-3"},null,-1)),$e(" "+V(_.asset.stats.formattedDate),1)])):E("",!0)])])],42,yc)}}}),Ic=["aria-label","aria-setsize"],Mc={key:0,class:"flex h-full items-center justify-center py-20"},Pc={key:1,class:"flex h-full flex-col items-center justify-center py-16 text-muted-foreground"},Dc={class:"mb-2 text-lg font-medium"},Ac={class:"text-sm"},Lc=q({__name:"AssetGrid",props:{assets:{},loading:{type:Boolean}},emits:["assetSelect","assetDeleted"],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",Mc,l[2]||(l[2]=[c("i",{class:"icon-[lucide--loader] size-12 animate-spin text-muted-foreground"},null,-1)]))):s.assets.length===0?(d(),$("div",Pc,[l[3]||(l[3]=c("i",{class:"mb-4 icon-[lucide--search] size-10"},null,-1)),c("h3",Dc,V(s.$t("assetBrowser.noAssetsFound")),1),c("p",Ac,V(s.$t("assetBrowser.tryAdjustingFilters")),1)])):(d(),R(hi,{key:2,items:o.value,"grid-style":t,"default-item-height":320,"default-item-width":240},{item:A(({item:a})=>[O(Nc,{asset:a,interactive:!0,onSelect:l[0]||(l[0]=i=>s.$emit("assetSelect",i)),onDeleted:l[1]||(l[1]=i=>s.$emit("assetDeleted",i))},null,8,["asset"])]),_:1},8,["items"]))],8,Ic))}});function Ec(e){return typeof e.user_metadata?.description=="string"?e.user_metadata.description:null}n(Ec,"getAssetDescription");function dl(e){return typeof e.user_metadata?.base_model=="string"?e.user_metadata.base_model:null}n(dl,"getAssetBaseModel");function Vc(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(Vc,"filterByCategory");function Oc(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(Oc,"filterByFileFormats");function Rc(e){return o=>{if(e.length===0)return!0;const t=new Set(e),s=dl(o);return s?t.has(s):!1}}n(Rc,"filterByBaseModels");function Wc(e){return o=>e==="all"?!0:e==="my-models"?o.is_immutable===!1:e==="public-models"?o.is_immutable===!0:!0}n(Wc,"filterByOwnership");function zc(e=L([])){const o=y(()=>e.value??[]),t=L(""),s=L("all"),l=L({sortBy:"recent",fileFormats:[],baseModels:[],ownership:"all"});function a(w){const h=w.tags.find(I=>I!=="models"),k=Ec(w)||`${h||ce("assetBrowser.unknown")} model`,b=[];if(h){const I=h.includes("/")?h.substring(h.indexOf("/")+1):h;b.push({label:I,type:"type"})}const N=dl(w);N&&b.push({label:N,type:"base"});const S={formattedDate:yi(new Date(w.created_at),{dateStyle:"short"}),downloadCount:void 0,stars:void 0};return{...w,description:k,badges:b,stats:S}}n(a,"transformAssetForDisplay");const i=y(()=>{const w=o.value.filter(k=>k.tags[0]==="models").map(k=>k.tags[1]).filter(k=>typeof k=="string"&&k.length>0).map(k=>k.split("/")[0]),h=Array.from(new Set(w)).sort().map(k=>({id:k,label:k.charAt(0).toUpperCase()+k.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(Vc(s.value))),p={fuseOptions:{keys:[{name:"name",weight:.4},{name:"tags",weight:.3}],threshold:.4,ignoreLocation:!0,includeScore:!0},matchAllWhenSearchEmpty:!0},{results:g}=ba(t,u,p),v=y(()=>g.value.map(w=>w.item)),f=y(()=>{const h=[...v.value.filter(Oc(l.value.fileFormats)).filter(Rc(l.value.baseModels)).filter(Wc(l.value.ownership))];return h.sort((k,b)=>{switch(l.value.sortBy){case"name-desc":return b.name.localeCompare(k.name);case"recent":return new Date(b.created_at).getTime()-new Date(k.created_at).getTime();case"popular":return k.name.localeCompare(b.name);case"name-asc":default:return k.name.localeCompare(b.name)}}),h.map(a)});function C(w){l.value={...w}}return n(C,"updateFilters"),{searchQuery:t,selectedCategory:s,availableCategories:i,contentTitle:r,categoryFilteredAssets:u,filteredAssets:f,updateFilters:C}}n(zc,"useAssetBrowser");const Bc=new Set(["VAE","CLIP","GLIGEN"]);function Fc(e){return e?e==="diffusion_models"?"Diffusion":e.split("_").map(o=>{const t=o.toUpperCase();if(Bc.has(t))return t;const s=o.toLowerCase();return s.charAt(0).toUpperCase()+s.slice(1)}).join(" "):"Models"}n(Fc,"formatCategoryLabel");const Uc={class:"capitalize"},Gc={class:"flex w-full items-center justify-between gap-2"},Hc={class:"hidden md:inline"},Qs=q({__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}=pe(),s=qn(),l=Kn(),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:C,showUploadDialog:w}=gu(f),{searchQuery:h,selectedCategory:k,availableCategories:b,categoryFilteredAssets:N,filteredAssets:S,updateFilters:I}=zc(p),_=y(()=>{const z=(p.value??[]).map(G=>G.tags?.find(U=>U!=="models")).find(G=>typeof G=="string"&&G.length>0);if(z)return z;if(i.nodeType){const G=l.getCategoryForNodeType(i.nodeType);if(G)return G}return i.assetType?i.assetType:"models"}),x=y(()=>k.value!=="all"?k.value:_.value),T=y(()=>{if(i.title)return i.title;const H=Fc(x.value);return t("assetBrowser.allCategory",{category:H})}),M=y(()=>i.showLeftPanel??!0);function P(){i.onClose?.(),r("close")}n(P,"handleClose");function B(H){r("asset-select",H),i.onSelect?.(H)}return n(B,"handleAssetSelectAndEmit"),(H,z)=>(d(),R(rs,{"data-component-id":"AssetBrowserModal",class:"size-full max-h-full max-w-full min-w-0","content-title":T.value,onClose:P},zn({header:A(()=>[c("div",Gc,[O(nn,{modelValue:m(h),"onUpdate:modelValue":z[1]||(z[1]=G=>lt(h)?h.value=G:null),autofocus:!0,size:"lg",placeholder:H.$t("g.searchPlaceholder"),class:"max-w-96"},null,8,["modelValue","placeholder"]),m(C)?(d(),R(Z,{key:0,variant:"primary",size:m(a).md?"lg":"icon","data-attr":"upload-model-button",onClick:m(w)},{default:A(()=>[z[3]||(z[3]=c("i",{class:"icon-[lucide--folder-input]"},null,-1)),c("span",Hc,V(H.$t("assetBrowser.uploadModel")),1)]),_:1},8,["size","onClick"])):E("",!0)])]),contentFilter:A(()=>[O(sc,{assets:m(N),"all-assets":p.value,onFilterChange:m(I)},null,8,["assets","all-assets","onFilterChange"])]),content:A(()=>[O(Lc,{assets:m(S),loading:v.value,onAssetSelect:B,onAssetDeleted:f},null,8,["assets","loading"])]),_:2},[M.value?{name:"leftPanel",fn:A(()=>[O(us,{modelValue:m(k),"onUpdate:modelValue":z[0]||(z[0]=G=>lt(k)?k.value=G:null),"data-component-id":"AssetBrowserModal-LeftSidePanel","nav-items":m(b)},{"header-icon":A(()=>z[2]||(z[2]=[c("div",{class:"icon-[lucide--folder] size-4"},null,-1)])),"header-title":A(()=>[c("span",Uc,V(T.value),1)]),_:1},8,["modelValue","nav-items"])]),key:"0"}:void 0]),1032,["content-title"]))}}),Ys={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"}}},jc=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:Qs,props:{nodeType:l.nodeType,inputName:l.inputName,currentValue:l.currentValue,onSelect:a,onClose:n(()=>e.closeDialog({key:o}),"onClose")},dialogComponentProps:Ys})}n(t,"show");async function s(l){const a=n(i=>{l.onAssetSelected?.(i),e.closeDialog({key:o})},"handleAssetSelected");e.showDialog({key:o,component:Qs,props:{showLeftPanel:!0,assetType:l.assetType,title:l.title,onSelect:a,onClose:n(()=>e.closeDialog({key:o}),"onClose")},dialogComponentProps:Ys})}return n(s,"browse"),{show:t,browse:s}},"useAssetBrowserDialog"),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"},Yc={class:"flex max-w-xs min-w-40 flex-col gap-2 p-3"},Jc={class:"text-sm font-inter"},Xc={key:1,class:"text-xs"},Js="cursor-pointer transition-opacity hover:opacity-80",Zc=q({__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,C)=>{const w=Ie("tooltip");return f.displayMode==="icon-only"?(d(),$("div",{key:0,class:K(["relative inline-flex h-full shrink-0 items-center justify-center px-2",Js]),style:ve(a.value),onClick:s},[p.value?(d(),$("i",{key:0,class:K(["shrink-0 text-base",p.value,u.value])},null,2)):f.badge.label?(d(),$("div",{key:1,class:K(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},V(f.badge.label),3)):(d(),$("div",{key:2,class:K(["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",qc,[f.badge.label?(d(),$("div",{key:0,class:K(["w-fit rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},V(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)):f.displayMode==="compact"?(d(),$("div",{key:1,class:"relative inline-flex h-full",style:ve(a.value)},[c("div",{class:K(["flex h-full shrink-0 items-center gap-2 whitespace-nowrap",[{"flex-row-reverse":f.reverseOrder},f.noPadding?"":"px-3",Js]]),onClick:s},[p.value?(d(),$("i",{key:0,class:K(["shrink-0 text-base",p.value,u.value])},null,2)):E("",!0),f.badge.label?(d(),$("div",{key:1,class:K(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},V(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",Yc,[f.badge.label?(d(),$("div",{key:0,class:K(["w-fit rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},V(f.badge.label),3)):E("",!0),c("div",Jc,V(f.badge.text),1),f.badge.tooltip?(d(),$("div",Xc,V(f.badge.tooltip),1)):E("",!0)])]),_:1},8,["pt"])],4)):de((d(),$("div",{key:2,class:K(["flex h-full shrink-0 items-center gap-2 whitespace-nowrap",[{"flex-row-reverse":f.reverseOrder},f.noPadding?"":"px-3"]]),style:ve(a.value)},[p.value?(d(),$("i",{key:0,class:K(["shrink-0 text-base",p.value,u.value])},null,2)):E("",!0),f.badge.label?(d(),$("div",{key:1,class:K(["shrink-0 rounded-full px-1.5 py-0.5 text-xxxs font-semibold",i.value])},V(f.badge.label),3)):E("",!0),c("div",{class:K(["font-inter text-sm",r.value])},V(f.badge.text),3)],6)),[[w,f.badge.tooltip]])}}}),ed=3e3,td=300*1e3,od=q({__name:"SubscribeButton",props:{label:{},size:{default:"lg"},variant:{default:"default"},fluid:{type:Boolean,default:!0}},emits:["subscribed"],setup(e,{emit:o}){const t=o,{subscribe:s,isActiveSubscription:l,fetchStatus:a,showSubscriptionDialog:i}=Qn(),r=bi(),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(),k=n(async()=>{try{if(Date.now()-h>td){C();return}await a(),l.value&&(C(),r?.trackMonthlySubscriptionSucceeded(),t("subscribed"))}catch(b){console.error("[SubscribeButton] Error polling subscription status:",b)}},"poll");k(),g=window.setInterval(k,ed)},"startPollingSubscriptionStatus"),C=n(()=>{g&&(clearInterval(g),g=null),p.value=!1,u.value=!1},"stopPolling");se([v,l],([h,k])=>{});const w=n(async()=>{u.value=!0;try{await s(),f()}catch(h){console.error("[SubscribeButton] Error initiating subscription:",h),u.value=!1}},"handleSubscribe");return rt(()=>{C(),v.value=!1}),(h,k)=>(d(),R(Z,{size:h.size,loading:u.value,disabled:p.value,variant:"primary",style:ve(h.variant==="gradient"?{background:"var(--color-subscription-button-gradient)",color:"var(--color-white)"}:void 0),class:K(m(ne)("font-bold",h.fluid&&"w-full")),onClick:w},{default:A(()=>[$e(V(h.label||h.$t("subscription.required.subscribe")),1)]),_:1},8,["size","loading","disabled","style","class"]))}}),Xs="subscription-required",nd=n(()=>{const e=yt(),o=ut();function t(){o.closeDialog({key:Xs})}n(t,"hide");function s(){e.showLayoutDialog({key:Xs,component:wa(()=>Fn(()=>import("./SubscriptionRequiredDialogContent-DTq1ffwv.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"),sd=q({__name:"GlobalToast",setup(e){const o=Wt(),t=Pt(),s=re();se(()=>t.messagesToAdd,i=>{i.length!==0&&(i.forEach(r=>{o.add(r)}),t.messagesToAdd=[])},{deep:!0}),se(()=>t.messagesToRemove,i=>{i.length!==0&&(i.forEach(r=>{o.remove(r)}),t.messagesToRemove=[])},{deep:!0}),se(()=>t.removeAllRequested,i=>{i&&(o.removeAllGroups(),t.removeAllRequested=!1)});function l(){const i=document.getElementById("dynamic-toast-style")||a(),r=document.querySelector(".graph-canvas-container")?.getBoundingClientRect();r&&(i.textContent=`
|
|
3
|
+
.p-toast.p-component.p-toast-top-right {
|
|
4
|
+
top: ${r.top+100}px !important;
|
|
5
|
+
right: ${window.innerWidth-(r.left+r.width)+20}px !important;
|
|
6
|
+
z-index: 10000 !important;
|
|
7
|
+
}
|
|
8
|
+
`)}n(l,"updateToastPosition");function a(){const i=document.createElement("style");return i.id="dynamic-toast-style",document.head.appendChild(i),i}return n(a,"createStyleElement"),se(()=>s.get("Comfy.UseNewMenu"),()=>Fe(l),{immediate:!0}),se(()=>s.get("Comfy.Sidebar.Location"),()=>Fe(l),{immediate:!0}),(i,r)=>(d(),R(m(Ea)))}});let gn,pl;(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"),pl=n((o,t)=>gn(globalThis,o,t),"runWhenGlobalIdle")})();const ad={class:"fixed z-9999 flex flex-row no-drag top-0 right-0"},ld=q({__name:"MenuHamburger",setup(e){const o=it(),t=re(),s=n(()=>{o.focusMode=!1},"exitFocusMode");return ke(()=>{t.get("Comfy.UseNewMenu")==="Disabled"&&(o.focusMode?J.ui.menuContainer.style.display="none":J.ui.menuContainer.style.display="block")}),(l,a)=>{const i=Ie("tooltip");return de((d(),$("div",ad,[de((d(),R(Z,{variant:"muted-textonly",size:"lg","aria-label":l.$t("menu.showMenu"),"aria-live":"assertive",onClick:s,onContextmenu:m(wi)},{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]])}}}),id=q({__name:"UnloadWindowConfirmDialog",setup(e){const o=re(),t=Re(),s=n(l=>{if(o.get("Comfy.Window.UnloadConfirmation")&&t.modifiedWorkflows.length>0)return l.preventDefault(),!0},"handleBeforeUnload");return ze(()=>{window.addEventListener("beforeunload",s)}),rt(()=>{window.removeEventListener("beforeunload",s)}),(l,a)=>(d(),$("div"))}}),rd={class:"w-full h-full absolute top-0 left-0 z-999 pointer-events-none flex flex-col"},ud={class:"side-toolbar-container"},cd=q({__name:"LiteGraphCanvasSplitterOverlay",setup(e){const o=it(),t=re(),s=lo(),l=Ho(),{t:a}=pe(),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),C=y(()=>g.value!==null),w=y(()=>r.value?"unified-sidebar":p.value??"default-sidebar");function h({originalEvent:S}){S.preventDefault()}n(h,"onResizestart");const k=y(()=>`main-splitter${f.value?"-with-right-panel":""}-${i.value}`),b=y(()=>{if(i.value==="left")return{display:C.value?"flex":"none"}}),N=y(()=>{if(i.value==="right")return{display:C.value?"flex":"none"}});return(S,I)=>(d(),$("div",rd,[ye(S.$slots,"workflow-tabs",{},void 0,!0),c("div",{class:K(["pointer-events-none flex flex-1 overflow-hidden",{"flex-row":i.value==="left","flex-row-reverse":i.value==="right"}])},[c("div",ud,[ye(S.$slots,"side-toolbar",{},void 0,!0)]),(d(),R(m($n),{key:k.value,class:"bg-transparent pointer-events-none border-none flex-1 overflow-hidden","state-key":w.value,"state-storage":"local",onResizestart:h},{default:A(()=>[!m(u)&&(i.value==="left"||m(f))?(d(),R(m(Nt),{key:0,class:K(i.value==="left"?m(ne)("side-bar-panel bg-comfy-menu-bg pointer-events-auto",C.value&&"min-w-78"):"bg-comfy-menu-bg pointer-events-auto"),"min-size":i.value==="left"?10:15,size:20,style:ve(b.value),role:i.value==="left"?"complementary":void 0,"aria-label":i.value==="left"?m(a)("sideToolbar.sidebar"):void 0},{default:A(()=>[i.value==="left"&&C.value?ye(S.$slots,"side-bar-panel",{key:0},void 0,!0):i.value==="right"?ye(S.$slots,"right-side-panel",{key:1},void 0,!0):E("",!0)]),_:3},8,["class","min-size","style","role","aria-label"])):E("",!0),O(m(Nt),{size:80,class:"flex flex-col"},{default:A(()=>[ye(S.$slots,"topmenu",{sidebarPanelVisible:C.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(Nt),{class:"graph-canvas-panel relative"},{default:A(()=>[ye(S.$slots,"graph-canvas-panel",{},void 0,!0)]),_:3}),de(O(m(Nt),{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(()=>[ye(S.$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(Nt),{key:1,class:K(i.value==="right"?m(ne)("side-bar-panel bg-comfy-menu-bg pointer-events-auto",C.value&&"min-w-78"):"bg-comfy-menu-bg pointer-events-auto"),"min-size":i.value==="right"?10:15,size:20,style:ve(N.value),role:i.value==="right"?"complementary":void 0,"aria-label":i.value==="right"?m(a)("sideToolbar.sidebar"):void 0},{default:A(()=>[i.value==="left"?ye(S.$slots,"right-side-panel",{key:0},void 0,!0):i.value==="right"&&C.value?ye(S.$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)]))}}),dd=Le(cd,[["__scopeId","data-v-78b7f6de"]]),nt=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"),pd=wa(()=>Fn(()=>import("./ComfyQueueButton-BV0p-R1-.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)),fd={class:"flex h-full items-center"},md=q({__name:"ComfyActionbar",setup(e){const o=re(),t=Se(),{t:s}=pe(),{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=Ts("Comfy.MenuPosition.Docked",!0),v=Ts("Comfy.MenuPosition.Floating",{x:0,y:0}),{x:f,y:C,style:w,isDragging:h}=Ll(u,{initialValue:{x:0,y:0},handle:p,containerElement:document.body,onMove:n(z=>{const G=r?.getBoundingClientRect().bottom??40;z.y<G&&(z.y=G)},"onMove")});Xt([f,C],([z,G])=>{v.value={x:z,y:G}},{debounce:300});const k=n(()=>{if(u.value){const z=window.innerWidth,G=window.innerHeight,U=u.value.offsetWidth,W=u.value.offsetHeight;if(U===0||W===0)return;if(v.value.x!==0||v.value.y!==0){f.value=Qt(v.value.x,0,z-U),C.value=Qt(v.value.y,0,G-W),S();return}f.value===0&&C.value===0&&(f.value=Qt((z-U)/2,0,z-U),C.value=Qt(G-W-10,0,G-W),S())}},"setInitialPosition");async function b(){await Fe(),k()}n(b,"comfyRunButtonResolved"),se(i,async z=>{z&&await Fe(k)}),Oe(p,"mousedown",()=>{});const N=L({x:f.value,y:C.value,windowWidth:window.innerWidth,windowHeight:window.innerHeight}),S=n(()=>{N.value={x:f.value,y:C.value,windowWidth:window.innerWidth,windowHeight:window.innerHeight}},"captureLastDragState");se(h,z=>{z||S()},{immediate:!0}),Oe(window,"resize",n(()=>{if(u.value){const z=window.innerWidth,G=window.innerHeight,U=u.value.offsetWidth,W=u.value.offsetHeight,F=N.value.x,Q=N.value.windowWidth-(N.value.x+U),j=N.value.y,Y=N.value.windowHeight-(N.value.y+W),X=[{edge:"left",distance:F},{edge:"right",distance:Q},{edge:"top",distance:j},{edge:"bottom",distance:Y}].reduce((Ne,Ue)=>Ue.distance<Ne.distance?Ue:Ne),ae=N.value.y/N.value.windowHeight,le=N.value.x/N.value.windowWidth;X.edge==="left"?(f.value=X.distance,C.value=ae*G):X.edge==="right"?(f.value=z-U-X.distance,C.value=ae*G):X.edge==="top"?(f.value=le*z,C.value=X.distance):(f.value=le*z,C.value=G-W-X.distance),f.value=Qt(f.value,0,z-U),C.value=Qt(C.value,0,G-W)}},"adjustMenuPosition"));const _=L(!1),x=n(()=>{h.value&&(_.value=!0)},"onMouseEnterDropZone"),T=n(()=>{h.value&&(_.value=!1)},"onMouseLeaveDropZone");se(h,z=>{z?g.value&&(g.value=!1):(_.value&&(g.value=!0),_.value=!1)});const M=y(()=>nt(s("menu.interrupt"))),P=n(async()=>{l.value||await t.execute("Comfy.Interrupt")},"cancelCurrentJob"),B=y(()=>ne("w-[200px] border-dashed border-blue-500 opacity-80","m-1.5 flex items-center justify-center self-stretch","rounded-md before:w-50 before:-ml-50 before:h-full","pointer-events-auto",_.value&&"border-[3px] opacity-100 scale-105 shadow-[0_0_20px] shadow-blue-500")),H=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(z,G)=>{const U=Ie("tooltip");return d(),$("div",fd,[m(h)&&!m(g)?(d(),$("div",{key:0,class:K(B.value),onMouseenter:x,onMouseleave:T},V(m(s)("actionbar.dockToTop")),35)):E("",!0),O(m(Un),{class:K(["pointer-events-auto",H.value]),style:ve(m(w)),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:K(m(ne)("drag-handle cursor-grab w-3 h-max",m(h)&&"cursor-grabbing"))},null,2),(d(),R(El,{onResolve:b},{default:A(()=>[O(m(pd))]),_:1})),de((d(),R(Z,{variant:"destructive",size:"icon",disabled:m(l),"aria-label":m(s)("menu.interrupt"),onClick:P},{default:A(()=>G[0]||(G[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"])])}}});function cs(e,o={}){const{isRoot:t=!0,includeDelete:s=!0,workflow:l}=o,{t:a}=pe(),i=Re(),r=tt(),u=ki(),p=Se(),g=Yn(),v=y(()=>l?.value??i.activeWorkflow),f=n(async w=>{!w||w===i.activeWorkflow||await r.openWorkflow(w)},"ensureWorkflowActive");return{menuItems:y(()=>{const w=v.value,h=w?g.isSubgraphBlueprint(w):!1,k=[],b=n((N,S,I,_=!0,x=!1,T=!1)=>{_&&(T&&k.push({separator:!0}),k.push({label:N,icon:S,command:I,disabled:x}))},"addItem");return b(a("g.rename"),"pi pi-pencil",async()=>{await f(v.value),e()},!0,t&&!w?.isPersisted),b(a("breadcrumbsMenu.duplicate"),"pi pi-copy",async()=>{w&&await r.duplicateWorkflow(w)},t&&!h),b(a("menuLabels.Save"),"pi pi-save",async()=>{await f(w),await p.execute("Comfy.SaveWorkflow")},t,!1,!0),b(a("menuLabels.Save As"),"pi pi-save",async()=>{await f(w),await p.execute("Comfy.SaveWorkflowAs")},t),b(u.isBookmarked(w?.path??"")?a("tabMenu.removeFromBookmarks"):a("tabMenu.addToBookmarks"),"pi pi-bookmark"+(u.isBookmarked(w?.path??"")?"-fill":""),async()=>{w?.path&&await u.toggleBookmarked(w.path)},t,w?.isTemporary??!1),b(a("menuLabels.Export"),"pi pi-download",async()=>{await f(w),await p.execute("Comfy.ExportWorkflow")},t),b(a("menuLabels.Export (API)"),"pi pi-download",async()=>{await f(w),await p.execute("Comfy.ExportWorkflowAPI")},t),b(a("breadcrumbsMenu.clearWorkflow"),"pi pi-trash",async()=>{await f(w),await p.execute("Comfy.ClearWorkflow")},!0,!1,!0),b(a("subgraphStore.publish"),"pi pi-upload",async()=>{w&&await r.saveWorkflowAs(w)},t&&h,!1,!0),b(a(h?"breadcrumbsMenu.deleteBlueprint":"breadcrumbsMenu.deleteWorkflow"),"pi pi-times",async()=>{w&&await r.deleteWorkflow(w)},t&&s,!1,!0),k})}}n(cs,"useWorkflowActionsMenu");const gd=n((e,o)=>{const t=e?.type;return t?!o[t]:!1},"isNodeMissingDefinition"),vd=n((e,o)=>{if(!e)return[];const t=m(o);return Ci(e,s=>gd(s,t))},"collectMissingNodes"),hd=n((e,o)=>vd(e,o).length>0,"graphHasMissingNodes"),yd={key:0,class:"icon-[lucide--triangle-alert] text-warning-background"},bd={class:"p-breadcrumb-item-label px-2"},wd={key:2,class:"pi pi-angle-down text-[10px]"},kd=q({__name:"SubgraphBreadcrumbItem",props:{item:{},isActive:{type:Boolean,default:!1}},setup(e,{expose:o}){const t=e,s=_t(),l=y(()=>hd(J.rootGraph,s.nodeDefsByName)),{t:a}=pe(),i=L(),r=yt(),u=Re(),p=tt(),g=L(!1),v=L(),f=L(),C=L(),w=n(async(x,T)=>{if(x&&x!==T){if(t.item.updateTitle?.(x),u.activeSubgraph)u.activeSubgraph.name=x;else if(u.activeWorkflow)try{await p.renameWorkflow(u.activeWorkflow,Ba.basePath+xi(x))}catch(P){console.error(P),r.showErrorDialog(P);return}const M=Jn();M.restoreState(M.exportState())}},"rename"),h=t.item.key==="root",k=y(()=>l.value&&h?a("breadcrumbsMenu.missingNodesWarning"):t.item.label),b=n(async()=>{if(h&&C.value?.offsetParent===null){await Se().execute("Comfy.RenameWorkflow");return}g.value=!0,v.value=t.item.label,Fe(()=>{f.value?.$el&&(f.value.$el.focus(),f.value.$el.select(),C.value&&(f.value.$el.style.width=`${Math.max(200,C.value.offsetWidth)}px`))})},"startRename"),{menuItems:N}=cs(b,{isRoot:h}),S=n(x=>{g.value||(x.detail===1?t.isActive?i.value?.toggle(x):t.item.command?.({item:t.item,originalEvent:x}):t.isActive&&x.detail===2&&(i.value?.hide(),x.stopPropagation(),x.preventDefault(),b()))},"handleClick"),I=n(async x=>{x&&await w(v.value,t.item.label),g.value=!1},"inputBlur");return o({toggleMenu:n(x=>{i.value?.toggle(x)},"toggleMenu")}),(x,T)=>{const M=Ie("tooltip");return d(),$(oe,null,[de((d(),$("a",{ref_key:"wrapperRef",ref:C,draggable:"false",href:"#",class:K(["p-breadcrumb-item-link h-8 cursor-pointer px-2",{"flex items-center gap-1":x.isActive,"p-breadcrumb-item-link-menu-visible":i.value?.overlayVisible,"p-breadcrumb-item-link-icon-visible":x.isActive,"active-breadcrumb-item":x.isActive}]),onClick:S},[l.value&&h?(d(),$("i",yd)):E("",!0),c("span",bd,V(x.item.label),1),x.item.isBlueprint?(d(),R(m(Zt),{key:1,value:"Blueprint",severity:"primary"})):E("",!0),x.isActive?(d(),$("i",wd)):E("",!0)],2)),[[M,{value:k.value,showDelay:512},void 0,{bottom:!0}]]),x.isActive||h?(d(),R(m(Gn),{key:0,ref_key:"menu",ref:i,model:m(N),popup:!0,pt:{root:{style:"background-color: var(--comfy-menu-bg)"},itemLink:{class:"py-2"}}},null,8,["model"])):E("",!0),g.value?(d(),R(m(ni),{key:1,ref_key:"itemInputRef",ref:f,modelValue:v.value,"onUpdate:modelValue":T[0]||(T[0]=P=>v.value=P),class:"fixed z-10000 px-2 py-2 text-[.8rem]",onBlur:T[1]||(T[1]=P=>I(!1)),onClick:T[2]||(T[2]=Ce(()=>{},["stop"])),onKeydown:[T[3]||(T[3]=to(P=>I(!0),["enter"])),T[4]||(T[4]=to(P=>I(!1),["esc"]))]},null,8,["modelValue"])):E("",!0)],64)}}}),Cd=Le(kd,[["__scopeId","data-v-d7b126c3"]]),fl=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(Vl(e,i,{subtree:!0,childList:!0}).stop),o.useResizeObserver&&s.push(ka(e,i).stop),{isOverflowing:Tn(t),disposed:Tn(l),checkOverflow:i,dispose:n(()=>{l.value=!0,s.forEach(r=>r())},"dispose")}},"useOverflowObserver"),Zs=28,ea=8,vn=8,ta=20,xd=q({__name:"SubgraphBreadcrumb",setup(e){const o=Re(),t=Jn(),s=L(),l=L(),a=n((N,S)=>{N.key==="root"&&(l.value=S)},"setItemRef"),i=y(()=>o.activeWorkflow?.filename),r=y(()=>Yn().isSubgraphBlueprint(o.activeWorkflow)),u=L(!1),p=L(!1),g=y(()=>t.navigationStack.length>0),v=y(()=>({label:i.value,icon:"pi pi-home",key:"root",isBlueprint:r.value,command:n(()=>{const N=he().getCanvas();if(!N.graph)throw new TypeError("Canvas has no graph");N.setGraph(N.graph.rootGraph)},"command")})),f=y(()=>{const N=t.navigationStack.map(S=>({label:S.name,key:`subgraph-${S.id}`,command:n(()=>{const I=he().getCanvas();if(!I.graph)throw new TypeError("Canvas has no graph");I.setGraph(S)},"command"),updateTitle:n(I=>{const _=he().getCanvas().graph?.rootGraph;_&&Si(_,S.id,x=>{x.title=I})},"updateTitle")}));return[v.value,...N]}),C=y(()=>f.value.at(-1)?.key),w=n(N=>{l.value?.toggleMenu(N)},"handleMenuClick"),h=n(()=>{Se().execute("Comfy.Graph.ExitSubgraph")},"handleBackClick"),k=y(()=>s.value?s.value.$el?.querySelector(".p-breadcrumb-list"):null);let b;return se(k,N=>{b?.dispose(),b=void 0,N&&(b=fl(N,{onCheck:n(S=>{if(p.value=S,u.value){if(!S){const I=[...N.querySelectorAll(".p-breadcrumb-item")];if(I.length<3)return;const _=I.filter(U=>U.querySelector(".p-breadcrumb-item-link-icon-visible")).length,x=N.querySelectorAll(".p-breadcrumb-separator"),M=x[x.length-1].offsetWidth,P=(Zs+vn+vn)*I.length+_*ta,B=(I.length-1)*M,H=(I.length-1)*(ea*2),z=P+B+H,G=N.clientWidth;z<=G&&(u.value=!1)}}else S&&(u.value=!0)},"onCheck")}))}),Ca(()=>{b?.disposed.value||b?.checkOverflow()}),(N,S)=>(d(),$("div",{class:K(["subgraph-breadcrumb flex w-auto drop-shadow-[var(--interface-panel-drop-shadow)]",{"subgraph-breadcrumb-collapse":u.value,"subgraph-breadcrumb-overflow":p.value}]),style:ve({"--p-breadcrumb-gap":"0px","--p-breadcrumb-item-margin":`${ea/2}px`,"--p-breadcrumb-item-min-width":`${Zs}px`,"--p-breadcrumb-item-padding":`${vn}px`,"--p-breadcrumb-icon-width":`${ta}px`})},[O(m(Ms),{class:"context-menu-button pointer-events-auto h-8 w-8 shrink-0 border border-transparent bg-transparent p-0 transition-all hover:rounded-lg hover:border-interface-stroke hover:bg-comfy-menu-bg",icon:"pi pi-bars",text:"",severity:"secondary",size:"small",onClick:w}),g.value?(d(),R(m(Ms),{key:0,class:"back-button pointer-events-auto h-8 w-8 shrink-0 border border-transparent bg-transparent p-0 transition-all hover:rounded-lg hover:border-interface-stroke hover:bg-comfy-menu-bg",text:"",severity:"secondary",size:"small",onClick:h},{default:A(()=>S[0]||(S[0]=[c("i",{class:"icon-[lucide--undo-2]"},null,-1)])),_:1})):E("",!0),O(m(si),{ref_key:"breadcrumbRef",ref:s,class:K(["w-fit rounded-lg p-0",{hidden:!g.value}]),model:f.value,pt:{item:{class:"pointer-events-auto"}},"aria-label":N.$t("g.graphNavigation")},{item:A(({item:I})=>[O(Cd,{ref:n(_=>a(I,_),"ref"),item:I,"is-active":I.key===C.value},null,8,["item","is-active"])]),separator:A(()=>S[1]||(S[1]=[c("span",{style:{transform:"scale(1.5)"}}," / ",-1)])),_:1},8,["class","model","aria-label"])],6))}}),Sd=Le(xd,[["__scopeId","data-v-50f75d4e"]]),_d={class:"flex flex-col gap-3 p-2"},Td={class:"flex flex-col gap-1"},$d={class:"relative h-2 w-full overflow-hidden rounded-full border border-interface-stroke bg-interface-panel-surface"},Nd={class:"flex items-start justify-end gap-4 text-[12px] leading-none"},Id={class:"flex items-center gap-1 text-text-primary opacity-90"},Md={class:"font-bold"},Pd={class:"flex items-center gap-1 text-text-secondary"},Dd={class:"inline-block max-w-[10rem] truncate"},Ad={class:"flex items-center gap-1"},Ld={class:"flex items-center gap-4 text-[12px] text-text-primary"},Ed={class:"flex items-center gap-2"},Vd={class:"opacity-90"},Od={class:"font-bold"},Rd={class:"ml-1"},Wd={class:"flex items-center gap-2"},zd={class:"opacity-90"},Bd={class:"font-bold"},Fd={class:"ml-1"},Ud=q({__name:"QueueOverlayActive",props:{totalProgressStyle:{},currentNodeProgressStyle:{},totalPercentFormatted:{},currentNodePercentFormatted:{},currentNodeName:{},runningCount:{},queuedCount:{},bottomRowClass:{}},emits:["interruptAll","clearQueued","viewAllJobs"],setup(e){const{t:o}=pe(),t=y(()=>nt(o("sideToolbar.queueProgressOverlay.cancelJobTooltip"))),s=y(()=>nt(o("sideToolbar.queueProgressOverlay.clearQueueTooltip")));return(l,a)=>{const i=xa("i18n-t"),r=Ie("tooltip");return d(),$("div",_d,[c("div",Td,[c("div",$d,[c("div",{class:"absolute inset-0 h-full rounded-full transition-[width]",style:ve(l.totalProgressStyle)},null,4),c("div",{class:"absolute inset-0 h-full rounded-full transition-[width]",style:ve(l.currentNodeProgressStyle)},null,4)]),c("div",Nd,[c("div",Id,[O(i,{keypath:"sideToolbar.queueProgressOverlay.total"},{percent:A(()=>[c("span",Md,V(l.totalPercentFormatted),1)]),_:1})]),c("div",Pd,[c("span",null,V(m(o)("sideToolbar.queueProgressOverlay.currentNode")),1),c("span",Dd,V(l.currentNodeName),1),c("span",Ad,[c("span",null,V(l.currentNodePercentFormatted),1)])])])]),c("div",{class:K(l.bottomRowClass)},[c("div",Ld,[c("div",Ed,[c("span",Vd,[c("span",Od,V(l.runningCount),1),c("span",Rd,V(m(o)("sideToolbar.queueProgressOverlay.running")),1)]),l.runningCount>0?de((d(),R(Z,{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",Wd,[c("span",zd,[c("span",Bd,V(l.queuedCount),1),c("span",Fd,V(m(o)("sideToolbar.queueProgressOverlay.queuedSuffix")),1)]),l.queuedCount>0?de((d(),R(Z,{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(Z,{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)])}}}),Gd={class:"inline-flex items-center gap-2"},Hd={key:0,class:"inline-flex items-center"},jd={class:"inline-flex items-center gap-2"},qd={key:0,class:"relative inline-flex h-6 items-center"},Kd=["src","alt"],Qd={class:"text-[14px] font-normal text-text-primary"},Yd={class:"font-bold"},Jd={class:"font-bold"},Xd={class:"font-bold"},Zd={class:"font-bold"},ep=q({__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=xa("i18n-t");return d(),R(Z,{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",Gd,[t.mode==="allFailed"?(d(),$("span",Hd,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",jd,[t.mode!=="allFailed"?(d(),$("span",qd,[(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:ve({marginLeft:u===0?"0":"-12px"})},[c("img",{src:r,alt:l.$t("sideToolbar.queueProgressOverlay.preview"),class:"h-full w-full object-cover"},null,8,Kd)],4))),128))])):E("",!0),c("span",Qd,[t.mode==="allSuccess"?(d(),R(i,{key:0,keypath:"sideToolbar.queueProgressOverlay.jobsCompleted",plural:t.completedCount},{count:A(()=>[c("span",Yd,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",Jd,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",Xd,V(t.failedCount),1)]),_:1},8,["plural"])],64)):(d(),R(i,{key:2,keypath:"sideToolbar.queueProgressOverlay.jobsFailed",plural:t.failedCount},{count:A(()=>[c("span",Zd,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"])}}}),tp={class:"pointer-events-auto"},op=q({__name:"QueueOverlayEmpty",props:{summary:{}},emits:["summaryClick"],setup(e){const{t:o}=pe();return(t,s)=>(d(),$("div",tp,[O(ep,{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"])]))}}),np={class:"flex h-12 items-center justify-between gap-2 border-b border-interface-stroke px-2"},sp={class:"px-2 text-[14px] font-normal text-text-primary"},ap={key:0,class:"ml-4 inline-flex items-center gap-1 text-blue-100"},lp={class:"font-bold"},ip={class:"ml-1"},rp={key:0,class:"flex items-center gap-1"},up={class:"flex flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3 font-inter"},cp=q({__name:"QueueOverlayHeader",props:{headerTitle:{},showConcurrentIndicator:{type:Boolean},concurrentWorkflowCount:{}},emits:["clearHistory"],setup(e,{emit:o}){const t=o,{t:s}=pe(),l=L(null),a=y(()=>nt(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",np,[c("div",sp,[c("span",null,V(u.headerTitle),1),u.showConcurrentIndicator?(d(),$("span",ap,[p[0]||(p[0]=c("span",{class:"inline-block size-2 rounded-full bg-blue-100"},null,-1)),c("span",null,[c("span",lp,V(u.concurrentWorkflowCount),1),c("span",ip,V(m(s)("sideToolbar.queueProgressOverlay.running")),1)])])):E("",!0)]),m(Ct)?E("",!0):(d(),$("div",rp,[de((d(),R(Z,{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",up,[O(Z,{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)]))])}}}),dp={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"},pp={key:0,class:"px-2 py-1"},fp=q({__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",dp,[(d(!0),$(oe,null,be(u.entries,g=>(d(),$(oe,{key:g.key},[g.kind==="divider"?(d(),$("div",pp,p[0]||(p[0]=[c("div",{class:"h-px bg-interface-stroke"},null,-1)]))):(d(),R(Z,{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:K([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))}}),mp={class:"flex items-center justify-between gap-2 px-3"},gp={class:"min-w-0 flex-1 overflow-x-auto"},vp={class:"inline-flex items-center gap-1 whitespace-nowrap"},hp={class:"ml-2 flex shrink-0 items-center gap-2"},yp={key:0,class:"pointer-events-none absolute -top-1 -right-1 inline-block size-2 rounded-full bg-base-foreground"},bp={class:"flex min-w-[12rem] flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},wp={key:0,class:"icon-[lucide--check] size-4"},kp={key:0,class:"icon-[lucide--check] block size-4 leading-none text-text-secondary"},Cp={key:0,class:"pointer-events-none absolute -top-1 -right-1 inline-block size-2 rounded-full bg-base-foreground"},xp={class:"flex min-w-[12rem] flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},Sp={key:0,class:"icon-[lucide--check] size-4 text-text-secondary"},_p={key:0,class:"mx-2 mt-1 h-px"},Tp=q({__name:"JobFiltersBar",props:{selectedJobTab:{},selectedWorkflowFilter:{},selectedSortMode:{},hasFailedJobs:{type:Boolean}},emits:["update:selectedJobTab","update:selectedWorkflowFilter","update:selectedSortMode"],setup(e,{emit:o}){const t=e,s=o,{t:l}=pe(),a=L(null),i=L(null),r=y(()=>nt(l("sideToolbar.queueProgressOverlay.filterBy"))),u=y(()=>nt(l("sideToolbar.queueProgressOverlay.sortBy"))),p=y(()=>t.hasFailedJobs?As:As.filter(k=>k!=="Failed")),g=n(k=>{a.value&&a.value.toggle(k)},"onFilterClick"),v=n(k=>{a.value?.hide?.(),s("update:selectedWorkflowFilter",k)},"selectWorkflowFilter"),f=n(k=>{i.value&&i.value.toggle(k)},"onSortClick"),C=n(k=>{i.value?.hide?.(),s("update:selectedSortMode",k)},"selectSortMode"),w=n(k=>l(k==="All"?"g.all":k==="Completed"?"g.completed":"g.failed"),"tabLabel"),h=n(k=>k==="mostRecent"?l("queue.jobList.sortMostRecent"):k==="totalGenerationTime"?l("queue.jobList.sortTotalGenerationTime"):"","sortLabel");return(k,b)=>{const N=Ie("tooltip");return d(),$("div",mp,[c("div",gp,[c("div",vp,[(d(!0),$(oe,null,be(p.value,S=>(d(),R(Z,{key:S,variant:k.selectedJobTab===S?"secondary":"muted-textonly",size:"sm",class:"px-3",onClick:n(I=>k.$emit("update:selectedJobTab",S),"onClick")},{default:A(()=>[$e(V(w(S)),1)]),_:2},1032,["variant","onClick"]))),128))])]),c("div",hp,[de((d(),R(Z,{key:0,variant:"secondary",size:"icon","aria-label":m(l)("sideToolbar.queueProgressOverlay.filterJobs"),onClick:g},{default:A(()=>[b[2]||(b[2]=c("i",{class:"icon-[lucide--list-filter] size-4"},null,-1)),k.selectedWorkflowFilter!=="all"?(d(),$("span",yp)):E("",!0)]),_:1},8,["aria-label"])),[[N,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",bp,[O(Z,{class:"w-full justify-between",variant:"textonly",size:"sm",onClick:b[0]||(b[0]=S=>v("all"))},{default:A(()=>[c("span",null,V(m(l)("sideToolbar.queueProgressOverlay.filterAllWorkflows")),1),k.selectedWorkflowFilter==="all"?(d(),$("i",wp)):E("",!0)]),_:1}),b[3]||(b[3]=c("div",{class:"mx-2 mt-1 h-px"},null,-1)),O(Z,{class:"w-full justify-between",variant:"textonly",onClick:b[1]||(b[1]=S=>v("current"))},{default:A(()=>[c("span",null,V(m(l)("sideToolbar.queueProgressOverlay.filterCurrentWorkflow")),1),k.selectedWorkflowFilter==="current"?(d(),$("i",kp)):E("",!0)]),_:1})])]),_:1},512)),de((d(),R(Z,{variant:"secondary",size:"icon","aria-label":m(l)("sideToolbar.queueProgressOverlay.sortJobs"),onClick:f},{default:A(()=>[b[4]||(b[4]=c("i",{class:"icon-[lucide--arrow-up-down] size-4"},null,-1)),k.selectedSortMode!=="mostRecent"?(d(),$("span",Cp)):E("",!0)]),_:1},8,["aria-label"])),[[N,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",xp,[(d(!0),$(oe,null,be(m(Ls),(S,I)=>(d(),$(oe,{key:S},[O(Z,{class:"w-full justify-between",variant:"textonly",size:"sm",onClick:n(_=>C(S),"onClick")},{default:A(()=>[c("span",null,V(h(S)),1),k.selectedSortMode===S?(d(),$("i",Sp)):E("",!0)]),_:2},1032,["onClick"]),I<m(Ls).length-1?(d(),$("div",_p)):E("",!0)],64))),128))])]),_:1},512)])])}}}),oa=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"),$p=n(({taskForJob:e,copyToClipboard:o,dialog:t})=>{const s=y(()=>oa(e.value)?.message??"");return{errorMessageValue:s,copyErrorMessage:n(()=>{s.value&&o(s.value)},"copyErrorMessage"),reportJobError:n(()=>{const i=oa(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"),Np=n(e=>e.historyTasks.map(o=>Number(o.executionTimeInSeconds)).filter(o=>typeof o=="number"&&!Number.isNaN(o)),"pickRecentDurations"),Ip=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(()=>Np(e).slice(-20)),g=y(()=>{const w=p.value;if(!w.length)return null;const h=w.slice().sort((T,M)=>T-M),k=h.reduce((T,M)=>T+M,0)/h.length,b=h[Math.min(h.length-1,Math.floor(h.length*.75))],N=e.runningTasks,S=i.value,I=N.map(T=>T.executionStartTimestamp).filter(T=>typeof T=="number").map(T=>{const M=Math.max(0,Math.floor((S-T)/1e3));return{lo:Math.max(0,Math.round(k-M)),hi:Math.max(0,Math.round(b-M))}});if(!I.length)return null;const _=I.reduce((T,M)=>Math.min(T,M.lo),1/0),x=I.reduce((T,M)=>Math.min(T,M.hi),1/0);return[_,x]}),v=y(()=>{const w=p.value;if(!w.length)return null;const h=a.value;if(h==null)return null;const k=w.slice().sort((_,x)=>_-x),b=k.reduce((_,x)=>_+x,0)/k.length,N=k[Math.min(k.length-1,Math.floor(k.length*.75))];if(h<=0)return g.value??[0,0];const S=Math.max(1,r.value||1),I=Math.ceil(h/S);return[Math.round(b*I),Math.round(N*I)]}),f=y(()=>{const w=p.value;if(!w.length)return null;const h=w.slice().sort((M,P)=>M-P),k=h.reduce((M,P)=>M+P,0)/h.length,b=h[Math.min(h.length-1,Math.floor(h.length*.75))],N=t.value,I=(s.value==="running"?N?.executionStartTimestamp:void 0)??l.value,_=I?Math.max(0,Math.floor((i.value-I)/1e3)):0,x=Math.max(0,Math.round(k-_)),T=Math.max(0,Math.round(b-_));return[x,T]}),C=y(()=>{const w=t.value,k=(s.value==="running"?w?.executionStartTimestamp:void 0)??l.value;return k?In(i.value-k):""});return{runningWorkflowCount:r,showParallelQueuedStats:u,estimateRangeSeconds:v,estimateRemainingRangeSeconds:f,timeElapsedValue:C}},"useQueueEstimates"),Mp={class:"w-[300px] min-w-[260px] rounded-lg border border-interface-stroke bg-interface-panel-surface shadow-md"},Pp={class:"flex items-center border-b border-interface-stroke p-4"},Dp={class:"text-[0.875rem] leading-normal font-normal text-text-primary"},Ap={class:"flex flex-col gap-6 px-4 pt-4 pb-4"},Lp={class:"grid grid-cols-2 items-center gap-x-2 gap-y-2"},Ep={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Vp={class:"flex min-w-0 items-center text-[0.75rem] leading-normal font-normal text-text-secondary"},Op={class:"block min-w-0 truncate"},Rp={key:0,class:"grid grid-cols-2 items-center gap-x-2 gap-y-2"},Wp={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},zp={class:"flex min-w-0 items-center text-[0.75rem] leading-normal font-normal text-text-secondary"},Bp={class:"block min-w-0 truncate"},Fp={key:1,class:"grid grid-cols-2 gap-x-2"},Up={class:"flex items-center text-[0.75rem] leading-normal font-normal text-text-primary"},Gp={class:"flex items-center justify-between gap-4"},Hp={class:"col-span-2 mt-2 rounded bg-interface-panel-hover-surface px-4 py-2 text-[0.75rem] leading-normal text-text-secondary"},jp=q({__name:"JobDetailsPopover",props:{jobId:{},workflowId:{}},setup(e){const o=e,t=y(()=>u("g.copy")),s=Re(),l=zt(),a=ct(),i=yt(),{locale:r,t:u}=pe(),p=y(()=>{const j=o.workflowId;if(!j)return"";const Y=s.activeWorkflow?.activeState?.id;return Y&&Y===j?s.activeWorkflow?.filename??j:j}),g=y(()=>o.jobId),{copyToClipboard:v}=_i(),f=n(()=>{v(g.value)},"copyJobId"),C=y(()=>{const j=o.jobId,Y=n(te=>te.find(X=>String(X.promptId??"")===String(j)),"findIn");return Y(l.pendingTasks)||Y(l.runningTasks)||Y(l.historyTasks)||null}),w=y(()=>{const j=C.value;if(!j)return null;const Y=a.isPromptInitializing(String(j?.promptId));return Fa(j,Y)}),h=y(()=>C.value?.createTime),k=y(()=>h.value!==void 0?Es(h.value,r.value):""),b=y(()=>{const j=C.value;return j?Number(j.queueIndex):null}),N=y(()=>{const j=b.value;return j==null?null:l.pendingTasks.filter(te=>Number(te.queueIndex)<j).length}),S=y(()=>{if(N.value==null)return"";const j=N.value;return u("queue.jobDetails.queuePositionValue",{count:j},j)}),I=L(Date.now());let _=null;ze(()=>{_=window.setInterval(()=>{I.value=Date.now()},1e3)}),ht(()=>{_!=null&&(clearInterval(_),_=null)});const{showParallelQueuedStats:x,estimateRangeSeconds:T,estimateRemainingRangeSeconds:M,timeElapsedValue:P}=Ip({queueStore:l,executionStore:a,taskForJob:C,jobState:w,firstSeenTs:h,jobsAhead:N,nowTs:I}),B=n((j,Y)=>{if(Y<=60){const ae=Math.max(1,Math.round(Y)),le=Math.max(1,Math.min(ae,Math.round(j)));return le===ae?u("queue.jobDetails.eta.seconds",{count:ae},ae):u("queue.jobDetails.eta.secondsRange",{lo:le,hi:ae})}if(j>=60&&Y<90)return u("queue.jobDetails.eta.minutes",{count:1},1);const te=Math.max(1,Math.floor(j/60)),X=Math.max(te,Math.ceil(Y/60));return te===X?u("queue.jobDetails.eta.minutes",{count:te},te):u("queue.jobDetails.eta.minutesRange",{lo:te,hi:X})},"formatEta"),H=y(()=>{const j=T.value;if(!j)return"";const[Y,te]=j;return B(Y,te)}),z=y(()=>{const j=M.value;if(!j)return"";const[Y,te]=j;return B(Y,te)}),G=y(()=>[{label:u("queue.jobDetails.workflow"),value:p.value},{label:u("queue.jobDetails.jobId"),value:g.value,canCopy:!0}]),U=y(()=>{if(w.value==="pending"){if(!h.value)return[];const j=[{label:u("queue.jobDetails.queuedAt"),value:k.value}];return x.value&&j.push({label:u("queue.jobDetails.queuePosition"),value:S.value},{label:u("queue.jobDetails.timeElapsed"),value:P.value},{label:u("queue.jobDetails.estimatedStartIn"),value:H.value}),j}if(w.value==="running")return h.value?[{label:u("queue.jobDetails.queuedAt"),value:k.value},{label:u("queue.jobDetails.timeElapsed"),value:P.value},{label:u("queue.jobDetails.estimatedFinishIn"),value:z.value}]:[];if(w.value==="completed"){const j=C.value,Y=j?.executionEndTimestamp,te=j?.executionTime,X=Y?Es(Y,r.value):"",ae=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:ae}]}if(w.value==="failed"){const Y=C.value?.executionTime,te=Y!==void 0?In(Y):"";return Y!==void 0&&(Y/36e5).toFixed(3)+"",[{label:u("queue.jobDetails.queuedAt"),value:k.value},{label:u("queue.jobDetails.failedAfter"),value:te}]}return[]}),{errorMessageValue:W,copyErrorMessage:F,reportJobError:Q}=$p({taskForJob:C,copyToClipboard:v,dialog:i});return(j,Y)=>(d(),$("div",Mp,[c("div",Pp,[c("span",Dp,V(m(u)("queue.jobDetails.header")),1)]),c("div",Ap,[c("div",Lp,[(d(!0),$(oe,null,be(G.value,te=>(d(),$(oe,{key:te.label},[c("div",Ep,V(te.label),1),c("div",Vp,[c("span",Op,V(te.value),1),te.canCopy?(d(),R(Z,{key:0,size:"icon",variant:"muted-textonly","aria-label":t.value,onClick:Ce(f,["stop"])},{default:A(()=>Y[0]||(Y[0]=[c("i",{class:"icon-[lucide--copy] size-4"},null,-1)])),_:1},8,["aria-label"])):E("",!0)])],64))),128))]),U.value.length?(d(),$("div",Rp,[(d(!0),$(oe,null,be(U.value,te=>(d(),$(oe,{key:te.label},[c("div",Wp,V(te.label),1),c("div",zp,[c("span",Bp,V(te.value),1)])],64))),128))])):E("",!0),w.value==="failed"?(d(),$("div",Fp,[c("div",Up,V(m(u)("queue.jobDetails.errorMessage")),1),c("div",Gp,[O(Z,{class:"justify-start px-0",variant:"muted-textonly",size:"sm","icon-position":"right",onClick:Ce(m(F),["stop"])},{default:A(()=>[c("span",null,V(t.value),1),Y[1]||(Y[1]=c("i",{class:"icon-[lucide--copy] block size-3.5 leading-none"},null,-1))]),_:1},8,["onClick"]),O(Z,{class:"justify-start px-0",variant:"muted-textonly",size:"sm","icon-position":"right",onClick:Ce(m(Q),["stop"])},{default:A(()=>[c("span",null,V(m(u)("queue.jobDetails.report")),1),Y[2]||(Y[2]=c("i",{class:"icon-[lucide--message-circle-warning] block size-3.5 leading-none"},null,-1))]),_:1},8,["onClick"])]),c("div",Hp,V(m(W)),1)])):E("",!0)])]))}}),qp={class:"w-[300px] min-w-[260px] rounded-lg shadow-md"},Kp={class:"p-3"},Qp={class:"relative aspect-square w-full overflow-hidden rounded-lg"},Yp=["src","alt"],Jp={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)"}},Xp={class:"mt-2 text-center"},Zp=["title"],ef={key:0,class:"mt-1 text-[0.75rem] leading-normal text-text-secondary"},tf=q({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",qp,[c("div",Kp,[c("div",Qp,[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,Yp),a.timeLabel?(d(),$("div",Jp,V(a.timeLabel),1)):E("",!0)]),c("div",Xp,[c("div",{class:"truncate text-[0.875rem] leading-normal font-semibold text-text-primary",title:a.name},V(a.name),9,Zp),t.value&&s.value?(d(),$("div",ef,V(t.value)+"x"+V(s.value),1)):E("",!0)])])]))}}),of={class:"relative z-1 flex items-center gap-1"},nf={class:"relative inline-flex items-center justify-center"},sf={class:"inline-flex h-6 w-6 items-center justify-center overflow-hidden rounded-[6px]"},af=["src"],lf={class:"relative z-1 min-w-0 flex-1"},rf=["title"],uf={class:"relative z-1 flex items-center gap-2 text-text-secondary"},cf={key:"actions",class:"inline-flex items-center gap-2 pr-1"},df={key:"secondary",class:"pr-2"},pf=q({__name:"QueueJobItem",props:{jobId:{},workflowId:{default:void 0},state:{},title:{},rightText:{default:""},iconName:{default:void 0},iconImageUrl:{default:void 0},showClear:{type:Boolean,default:void 0},showMenu:{type:Boolean,default:void 0},progressTotalPercent:{default:void 0},progressCurrentPercent:{default:void 0},activeDetailsId:{default:null}},emits:["cancel","delete","menu","view","details-enter","details-leave"],setup(e,{emit:o}){const t=e,s=o,{t:l}=pe(),{progressBarContainerClass:a,progressBarPrimaryClass:i,progressBarSecondaryClass:r,hasProgressPercent:u,hasAnyProgressPercent:p,progressPercentStyle:g}=Ti(),v=y(()=>nt(l("g.cancel"))),f=y(()=>nt(l("g.delete"))),C=y(()=>nt(l("g.more"))),w=L(null),h=y(()=>t.activeDetailsId===t.jobId),k=n(()=>{I.value||s("details-enter",t.jobId)},"onRowEnter"),b=n(()=>s("details-leave",t.jobId),"onRowLeave"),N=n(()=>s("details-enter",t.jobId),"onPopoverEnter"),S=n(()=>s("details-leave",t.jobId),"onPopoverLeave"),I=L(!1),_=L(null),x=L(null),T=n(()=>{_.value!==null&&(clearTimeout(_.value),_.value=null)},"clearPreviewHideTimer"),M=n(()=>{x.value!==null&&(clearTimeout(x.value),x.value=null)},"clearPreviewShowTimer"),P=y(()=>t.state==="completed"&&!!t.iconImageUrl),B=n(()=>{P.value&&(T(),M(),x.value=window.setTimeout(()=>{I.value=!0,x.value=null},200))},"scheduleShowPreview"),H=n(()=>{T(),M(),_.value=window.setTimeout(()=>{I.value=!1,_.value=null},150)},"scheduleHidePreview"),z=n(()=>B(),"onIconEnter"),G=n(()=>H(),"onIconLeave"),U=n(()=>B(),"onPreviewEnter"),W=n(()=>H(),"onPreviewLeave"),F=L(null),Q=n(()=>{const Ve=w.value;if(!Ve)return;const _e=Ve.getBoundingClientRect(),Be=8;F.value={top:_e.top,right:window.innerWidth-_e.left+Be}},"updatePopoverPosition"),j=y(()=>h.value||I.value&&P.value);se(j,Ve=>{Ve?Fe(Q):F.value=null},{immediate:!1});const Y=L(!1),te=y(()=>t.iconName?t.iconName:Vs(t.state)),X=y(()=>t.state==="pending"&&te.value===Vs("pending")&&!t.iconImageUrl),ae=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,_e)=>{const Be=Ie("tooltip");return d(),$("div",{ref_key:"rowRef",ref:w,class:"relative",onMouseenter:k,onMouseleave:b,onContextmenu:Ce(Qe,["stop","prevent"])},[(d(),R(It,{to:"body"},[!I.value&&h.value&&F.value?(d(),$("div",{key:0,class:"fixed z-50",style:ve({top:`${F.value.top}px`,right:`${F.value.right}px`}),onMouseenter:N,onMouseleave:S},[O(jp,{"job-id":t.jobId,"workflow-id":t.workflowId},null,8,["job-id","workflow-id"])],36)):E("",!0)])),(d(),R(It,{to:"body"},[I.value&&P.value&&F.value?(d(),$("div",{key:0,class:"fixed z-50",style:ve({top:`${F.value.top}px`,right:`${F.value.right}px`}),onMouseenter:U,onMouseleave:W},[O(tf,{"image-url":Ve.iconImageUrl,name:t.title,"time-label":Ve.rightText||void 0,onImageClick:_e[0]||(_e[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:_e[3]||(_e[3]=Je=>Y.value=!0),onMouseleave:_e[4]||(_e[4]=Je=>Y.value=!1)},[t.state==="running"&&m(p)(t.progressTotalPercent,t.progressCurrentPercent)?(d(),$("div",{key:0,class:K(m(a))},[m(u)(t.progressTotalPercent)?(d(),$("div",{key:0,class:K(m(i)),style:ve(m(g)(t.progressTotalPercent))},null,6)):E("",!0),m(u)(t.progressCurrentPercent)?(d(),$("div",{key:1,class:K(m(r)),style:ve(m(g)(t.progressCurrentPercent))},null,6)):E("",!0)],2)):E("",!0),c("div",of,[c("div",nf,[c("div",{class:"absolute left-1/2 top-1/2 size-10 -translate-x-1/2 -translate-y-1/2",onMouseenter:Ce(z,["stop"]),onMouseleave:Ce(G,["stop"])},null,32),c("div",sf,[Ve.iconImageUrl?(d(),$("img",{key:0,src:Ve.iconImageUrl,class:"h-full w-full object-cover"},null,8,af)):(d(),$("i",{key:1,class:K(m(ne)(te.value,"size-4",X.value&&"animate-spin"))},null,2))])])]),c("div",lf,[c("div",{class:"truncate opacity-90",title:t.title},[ye(Ve.$slots,"primary",{},()=>[$e(V(t.title),1)])],8,rf)]),c("div",uf,[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(()=>[Y.value?(d(),$("div",cf,[t.state==="failed"&&ae.value?de((d(),R(Z,{key:0,variant:"destructive",size:"icon","aria-label":m(l)("g.delete"),onClick:Ce(Ue,["stop"])},{default:A(()=>_e[5]||(_e[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"&&ae.value?de((d(),R(Z,{key:1,variant:"destructive",size:"icon","aria-label":m(l)("g.cancel"),onClick:Ce(Ne,["stop"])},{default:A(()=>_e[6]||(_e[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(Z,{key:2,variant:"textonly",size:"sm",onClick:_e[1]||(_e[1]=Ce(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(Z,{key:3,variant:"textonly",size:"icon-sm","aria-label":m(l)("g.more"),onClick:_e[2]||(_e[2]=Ce(Je=>s("menu",Je),["stop"]))},{default:A(()=>_e[7]||(_e[7]=[c("i",{class:"icon-[lucide--more-horizontal] size-4"},null,-1)])),_:1},8,["aria-label"])),[[Be,C.value,void 0,{top:!0}]]):E("",!0)])):t.state!=="running"?(d(),$("div",df,[ye(Ve.$slots,"secondary",{},()=>[$e(V(t.rightText),1)])])):E("",!0)]),_:3}),t.state==="running"&&ae.value?de((d(),R(Z,{key:0,variant:"destructive",size:"icon","aria-label":m(l)("g.cancel"),onClick:Ce(Ne,["stop"])},{default:A(()=>_e[8]||(_e[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)}}}),ff={class:"flex flex-col gap-4 px-3 pb-4"},mf={class:"text-[12px] leading-none text-text-secondary"},gf=q({__name:"JobGroupsList",props:{displayedJobGroups:{}},emits:["cancelItem","deleteItem","menu","viewItem"],setup(e,{emit:o}){const t=e,s=o,l=n(w=>{s("cancelItem",w)},"emitCancelItem"),a=n(w=>{s("deleteItem",w)},"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(w=>{p(),g(),u.value=window.setTimeout(()=>{i.value=w,u.value=null},200)},"onDetailsEnter"),f=n(w=>{p(),g(),r.value=window.setTimeout(()=>{i.value===w&&(i.value=null),r.value=null},150)},"onDetailsLeave"),C=n(()=>{p(),g(),i.value=null},"resetActiveDetails");return se(()=>t.displayedJobGroups,w=>{const h=i.value;if(!h)return;w.some(b=>b.items.some(N=>N.id===h))||C()}),rt(C),(w,h)=>(d(),$("div",ff,[(d(!0),$(oe,null,be(w.displayedJobGroups,k=>(d(),$("div",{key:k.key,class:"flex flex-col gap-2"},[c("div",mf,V(k.label),1),(d(!0),$(oe,null,be(k.items,b=>(d(),R(pf,{key:b.id,"job-id":b.id,"workflow-id":b.taskRef?.workflow?.id,state:b.state,title:b.title,"right-text":b.meta,"icon-name":b.iconName,"icon-image-url":b.iconImageUrl,"show-clear":b.showClear,"show-menu":!0,"progress-total-percent":b.progressTotalPercent,"progress-current-percent":b.progressCurrentPercent,"running-node-name":b.runningNodeName,"active-details-id":i.value,onCancel:n(N=>l(b),"onCancel"),onDelete:n(N=>a(b),"onDelete"),onMenu:n(N=>w.$emit("menu",b,N),"onMenu"),onView:n(N=>w.$emit("viewItem",b),"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))]))}}),vf={class:"flex w-full flex-col gap-4"},hf={class:"flex items-center justify-between px-3"},yf={class:"ml-4 inline-flex items-center"},bf={class:"inline-flex h-6 items-center text-[12px] leading-none text-text-primary opacity-90"},wf={class:"font-bold"},kf={class:"ml-1"},Cf={class:"flex-1 min-h-0 overflow-y-auto"},xf=q({__name:"QueueOverlayExpanded",props:{headerTitle:{},showConcurrentIndicator:{type:Boolean},concurrentWorkflowCount:{},queuedCount:{},selectedJobTab:{},selectedWorkflowFilter:{},selectedSortMode:{},displayedJobGroups:{},hasFailedJobs:{type:Boolean}},emits:["showAssets","clearHistory","clearQueued","update:selectedJobTab","update:selectedWorkflowFilter","update:selectedSortMode","cancelItem","deleteItem","viewItem"],setup(e,{emit:o}){const t=o,{t:s}=pe(),l=L(null),a=L(null),{jobMenuEntries:i}=$i(()=>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",vf,[O(cp,{"header-title":v.headerTitle,"show-concurrent-indicator":v.showConcurrentIndicator,"concurrent-workflow-count":v.concurrentWorkflowCount,onClearHistory:f[0]||(f[0]=C=>v.$emit("clearHistory"))},null,8,["header-title","show-concurrent-indicator","concurrent-workflow-count"]),c("div",hf,[O(Z,{class:"grow gap-1 justify-center",variant:"secondary",size:"sm",onClick:f[1]||(f[1]=C=>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",yf,[c("div",bf,[c("span",wf,V(v.queuedCount),1),c("span",kf,V(m(s)("sideToolbar.queueProgressOverlay.queuedSuffix")),1)]),v.queuedCount>0?(d(),R(Z,{key:0,class:"ml-2",variant:"destructive",size:"icon","aria-label":m(s)("sideToolbar.queueProgressOverlay.clearQueued"),onClick:f[2]||(f[2]=C=>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(Tp,{"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]=C=>v.$emit("update:selectedJobTab",C)),"onUpdate:selectedWorkflowFilter":f[4]||(f[4]=C=>v.$emit("update:selectedWorkflowFilter",C)),"onUpdate:selectedSortMode":f[5]||(f[5]=C=>v.$emit("update:selectedSortMode",C))},null,8,["selected-job-tab","selected-workflow-filter","selected-sort-mode","has-failed-jobs"]),c("div",Cf,[O(gf,{"displayed-job-groups":v.displayedJobGroups,onCancelItem:r,onDeleteItem:u,onViewItem:f[6]||(f[6]=C=>v.$emit("viewItem",C)),onMenu:p},null,8,["displayed-job-groups"])]),O(fp,{ref_key:"jobContextMenuRef",ref:a,entries:m(i),onAction:g},null,8,["entries"])]))}}),Sf={class:"w-[360px] rounded-2xl border border-interface-stroke bg-interface-panel-surface text-text-primary shadow-interface font-inter"},_f={class:"flex items-center justify-between border-b border-interface-stroke px-4 py-4"},Tf={class:"m-0 text-[14px] font-normal leading-none"},$f={class:"flex flex-col gap-4 px-4 py-4 text-[14px] text-text-secondary"},Nf={class:"m-0"},If={class:"m-0"},Mf={class:"flex items-center justify-end px-4 py-4"},Pf={class:"flex items-center gap-4 leading-none"},Df=q({__name:"QueueClearHistoryDialog",setup(e){const o=ut(),t=zt(),{t:s}=pe(),{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",Sf,[c("header",_f,[c("p",Tf,V(m(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogTitle")),1),O(Z,{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",$f,[c("p",Nf,V(m(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogDescription")),1),c("p",If,V(m(s)("sideToolbar.queueProgressOverlay.clearHistoryDialogAssetsNote")),1)]),c("footer",Mf,[c("div",Pf,[O(Z,{variant:"muted-textonly",size:"lg",onClick:u},{default:A(()=>[$e(V(m(s)("g.cancel")),1)]),_:1}),O(Z,{variant:"secondary",size:"lg",disabled:a.value,onClick:r},{default:A(()=>[$e(V(m(s)("g.clear")),1)]),_:1},8,["disabled"])])])]))}}),Af=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,C=e.historyTasks.filter(N=>{const S=N.executionEndTimestamp;return typeof S=="number"&&S>=f});if(!C.length){l.value=null,i();return}let w=0,h=0;const k=[];for(const N of C){const S=Fa(N,!1);if(S==="completed"){w++;const I=N.previewOutput;I?.isImage&&k.push(I.urlWithTimestamp)}else S==="failed"&&h++}if(w===0&&h===0){l.value=null,i();return}let b="mixed";h===0?b="allSuccess":w===0&&(b="allFailed"),l.value={mode:b,completedCount:w,failedCount:h,thumbnailUrls:k.slice(0,3)},r()}},{immediate:!0}),{summary:y(()=>l.value),clearSummary:u}},"useCompletionSummary");function Lf(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(Lf,"useResultGallery");const Ef={class:K(["flex","justify-end","w-full","pointer-events-none"])},Vf=q({__name:"QueueProgressOverlay",props:{expanded:{type:Boolean},menuHovered:{type:Boolean,default:!1}},emits:["update:expanded"],setup(e,{emit:o}){const t=e,s=o,{t:l}=pe(),a=zt(),i=Se(),r=ct(),u=Ho(),p=ut(),g=qn(),v=Ni(),{wrapWithErrorHandlingAsync:f}=Bt(),{totalPercentFormatted:C,currentNodePercentFormatted:w,totalProgressStyle:h,currentNodeProgressStyle:k}=Ii(),b=L(!1),N=y(()=>b.value||t.menuHovered),S=L(!1),I=y({get:n(()=>t.expanded===void 0?S.value:t.expanded,"get"),set:n(we=>{t.expanded===void 0&&(S.value=we),s("update:expanded",we)},"set")}),{summary:_,clearSummary:x}=Af(),T=y(()=>_.value!==null),M=y(()=>a.runningTasks.length),P=y(()=>a.pendingTasks.length),B=y(()=>!r.isIdle),H=y(()=>M.value>0||B.value),z=y(()=>M.value+P.value),G=y(()=>I.value?"expanded":H.value?"active":T.value?"empty":"hidden"),U=y(()=>G.value==="expanded"||G.value==="empty"||G.value==="active"&&N.value),W=y(()=>G.value!=="hidden"),F=y(()=>U.value?"border-interface-stroke bg-interface-panel-surface shadow-interface":"border-transparent bg-transparent shadow-none"),Q=y(()=>`flex items-center justify-end gap-4 transition-opacity duration-200 ease-in-out ${G.value==="active"&&N.value?"opacity-100 pointer-events-auto":"opacity-0 pointer-events-none"}`),j=y(()=>H.value?`${z.value} ${l("sideToolbar.queueProgressOverlay.activeJobsSuffix")}`:l("sideToolbar.queueProgressOverlay.jobQueue")),Y=y(()=>r.runningWorkflowCount),te=y(()=>Y.value>1),{selectedJobTab:X,selectedWorkflowFilter:ae,selectedSortMode:le,hasFailedJobs:Ne,filteredTasks:Ue,groupedJobItems:Qe,currentNodeName:Ve}=Mi(),_e=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}=Lf(()=>Ue.value),jt=n(we=>{I.value=we},"setExpanded"),pt=n(()=>{jt(!0)},"openExpandedFromEmpty"),Tt=n(()=>{jt(!0)},"viewAllJobs"),At=n(()=>{pt(),x()},"onSummaryClick"),ot=n(()=>{u.activeSidebarTabId="assets"},"openAssetsSidebar"),qt=n(async we=>{const Ee=we.taskRef,ee=Ee?.promptId,ie=Ee?.previewOutput;if(!ee||!ie)return;const ft=String(ee);if(ot(),await Fe(),await g.updateHistory(),!g.historyAssets.find($t=>$t.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")}),fe=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:Df,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",Ef,[c("div",{class:K(["pointer-events-auto flex w-[350px] min-w-[310px] max-h-[60vh] flex-col overflow-hidden rounded-lg border font-inter transition-colors duration-200 ease-in-out",F.value]),onMouseenter:Ee[3]||(Ee[3]=ee=>b.value=!0),onMouseleave:Ee[4]||(Ee[4]=ee=>b.value=!1)},[I.value?(d(),R(xf,{key:0,"selected-job-tab":m(X),"onUpdate:selectedJobTab":Ee[0]||(Ee[0]=ee=>lt(X)?X.value=ee:null),"selected-workflow-filter":m(ae),"onUpdate:selectedWorkflowFilter":Ee[1]||(Ee[1]=ee=>lt(ae)?ae.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":j.value,"show-concurrent-indicator":te.value,"concurrent-workflow-count":Y.value,"queued-count":P.value,"displayed-job-groups":_e.value,"has-failed-jobs":m(Ne),onShowAssets:ot,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"])):H.value?(d(),R(Ud,{key:1,"total-progress-style":m(h),"current-node-progress-style":m(k),"total-percent-formatted":m(C),"current-node-percent-formatted":m(w),"current-node-name":m(Ve),"running-count":M.value,"queued-count":P.value,"bottom-row-class":Q.value,onInterruptAll:m(fe),onClearQueued:m(Kt),onViewAllJobs:Tt},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(_)?(d(),R(op,{key:2,summary:m(_),onSummaryClick:At},null,8,["summary"])):E("",!0)],34)],512),[[Xe,W.value]]),O(Pi,{"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))}}),Of=Dt("actionBarButton",()=>{const e=Xn();return{buttons:y(()=>e.extensions.flatMap(t=>t.actionBarButtons??[]))}}),Rf={class:"flex h-full shrink-0 items-center gap-1"},Wf={key:0},zf=q({__name:"ActionBarButtons",setup(e){const o=Of(),s=Yo(Zo).smaller("sm");return(l,a)=>{const i=Ie("tooltip");return d(),$("div",Rf,[(d(!0),$(oe,null,be(m(o).buttons,(r,u)=>de((d(),R(Z,{key:u,"aria-label":r.tooltip||r.label,class:K([r.class,"h-7 rounded-full"]),variant:"muted-textonly",size:"sm",onClick:r.onClick},{default:A(()=>[c("i",{class:K(r.icon)},null,2),!m(s)&&r.label?(d(),$("span",Wf,V(r.label),1)):E("",!0)]),_:2},1032,["aria-label","class","onClick"])),[[i,r.tooltip,void 0,{bottom:!0}]])),128))])}}}),Bf={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)]"},Ff={class:"flex flex-col items-center px-0 py-3 mb-4"},Uf={class:"my-0 mb-1 truncate text-base font-bold text-base-foreground"},Gf={key:0,class:"my-0 truncate text-sm text-muted"},Hf={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"},jf={key:0,class:"flex items-center gap-2 px-4 py-2"},qf={key:1,class:"text-base font-semibold text-base-foreground"},Kf={class:"icon-[lucide--circle-help] cursor-help text-base text-muted-foreground mr-auto"},Qf={key:1,class:"flex justify-center px-4"},Yf={class:"text-sm text-base-foreground flex-1"},Jf={class:"text-sm text-base-foreground flex-1"},Xf={key:0,class:"text-xs font-bold text-base-background bg-base-foreground px-1.5 py-0.5 rounded-full"},Zf={class:"text-sm text-base-foreground flex-1"},em={class:"text-sm text-base-foreground flex-1"},tm={class:"text-sm text-base-foreground flex-1"},om=q({__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=Ua(),g=Ga(),v=yt(),{isActiveSubscription:f,subscriptionTierName:C,subscriptionTier:w,fetchStatus:h}=Qn(),k=nd(),{locale:b}=pe(),N=y(()=>{const H=g.balance?.effective_balance_micros??g.balance?.amount_micros??0;return Di({cents:H,locale:b.value,numberOptions:{minimumFractionDigits:0,maximumFractionDigits:2}})}),S=y(()=>{const H=w.value;return H==="FOUNDERS_EDITION"||H==="STANDARD"||H==="CREATOR"}),I=n(()=>{v.showSettingsDialog("user"),t("close")},"handleOpenUserSettings"),_=n(()=>{k.show(),t("close")},"handleOpenPlansAndPricing"),x=n(()=>{v.showSettingsDialog("credits"),t("close")},"handleOpenPlanAndCreditsSettings"),T=n(()=>{v.showTopUpCreditsDialog(),t("close")},"handleTopUp"),M=n(()=>{window.open(s(l.partnerNodesPricing,{includeLocale:!0}),"_blank"),t("close")},"handleOpenPartnerNodesInfo"),P=n(async()=>{await u(),t("close")},"handleLogout"),B=n(async()=>{await h()},"handleSubscribed");return ze(()=>{p.fetchBalance()}),(H,z)=>{const G=Ie("tooltip");return d(),$("div",Bf,[c("div",Ff,[O(il,{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",Uf,V(m(a)||H.$t("g.user")),1),m(i)?(d(),$("p",Gf,V(m(i)),1)):E("",!0),m(C)?(d(),$("span",Hf,V(m(C)),1)):E("",!0)]),m(f)?(d(),$("div",jf,[z[0]||(z[0]=c("i",{class:"icon-[lucide--component] text-amber-400 text-sm"},null,-1)),m(g).isFetchingBalance?(d(),R(m(Hn),{key:0,width:"4rem",height:"1.25rem",class:"w-full"})):(d(),$("span",qf,V(N.value),1)),de(c("i",Kf,null,512),[[G,{value:H.$t("credits.unified.tooltip"),showDelay:300}]]),O(Z,{variant:"secondary",size:"sm",class:"text-base-foreground","data-testid":"add-credits-button",onClick:T},{default:A(()=>[$e(V(H.$t("subscription.addCredits")),1)]),_:1})])):(d(),$("div",Qf,[O(od,{fluid:!1,label:H.$t("subscription.subscribeToComfyCloud"),size:"sm",variant:"gradient",onSubscribed:B},null,8,["label"])])),O(m(Ps),{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},[z[1]||(z[1]=c("i",{class:"icon-[lucide--tag] text-muted-foreground text-sm"},null,-1)),c("span",Yf,V(H.$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:_},[z[2]||(z[2]=c("i",{class:"icon-[lucide--receipt-text] text-muted-foreground text-sm"},null,-1)),c("span",Jf,V(H.$t("subscription.plansAndPricing")),1),S.value?(d(),$("span",Xf,V(H.$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:x},[z[3]||(z[3]=c("i",{class:"icon-[lucide--file-text] text-muted-foreground text-sm"},null,-1)),c("span",Zf,V(H.$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:I},[z[4]||(z[4]=c("i",{class:"icon-[lucide--settings-2] text-muted-foreground text-sm"},null,-1)),c("span",em,V(H.$t("userSettings.accountSettings")),1)]),O(m(Ps),{class:"my-2 mx-0"}),c("div",{class:"flex items-center gap-2 px-4 py-2 cursor-pointer hover:bg-secondary-background-hover","data-testid":"logout-menu-item",onClick:P},[z[5]||(z[5]=c("i",{class:"icon-[lucide--log-out] text-muted-foreground text-sm"},null,-1)),c("span",tm,V(H.$t("auth.signOut.signOut")),1)])])}}}),nm={key:0,class:"icon-[lucide--chevron-down] size-3 px-1"},ds=q({__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(Z,{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:K(m(ne)("flex items-center gap-1 rounded-full hover:bg-interface-button-hover-surface justify-center",i.compact&&"size-full "))},[O(il,{"photo-url":l.value,class:K(i.compact&&"size-full")},null,8,["photo-url","class"]),i.showArrow?(d(),$("i",nm)):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(om,{onClose:a})]),_:1},512)]))}}),sm={class:"mb-1"},am=["href"],ps=q({__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(Z,{key:0,variant:"textonly",size:"icon",class:K(m(ne)("group rounded-full text-base-foreground p-0",e.class)),"aria-label":m(ce)("g.login"),onClick:f[0]||(f[0]=C=>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",sm,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,am)])]),_:1},512)],64))}}),na=Sa.create({baseURL:Ha(),headers:{"Content-Type":"application/json"}}),lm=n(()=>{const e=L(!1),o=L(null);se(()=>Ha(),a=>{na.defaults.baseURL=a});const t=n((a,i,r)=>{if(!Sa.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 Ai(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(()=>na.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=lm(),l=Zn(),a=re(),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),C=y(()=>e.value.slice(0,3)),w=4320*60*1e3,h=n((H,z)=>Et.valid(H)&&Et.valid(z)?Et.compare(H,z):H===z?0:1,"compareVersions"),k=y(()=>!!f.value&&h(f.value.version,i.value||"0.0.0")>0),b=y(()=>!!f.value&&h(f.value.version,i.value||"0.0.0")===0),N=y(()=>{const H=f.value?.attention;return H==="medium"||H==="high"}),S=y(()=>!(!Ke()||Ct||!v.value||!k.value||!N.value||u.value===f.value?.version&&["skipped","changelog seen"].includes(p.value))),I=y(()=>{if(!Ke()||Ct||!v.value||!k.value)return!1;const{version:H}=f.value;return u.value===H&&p.value==="changelog seen"?!1:N.value?!0:!(u.value===H&&p.value==="skipped"&&g.value&&Date.now()-g.value>=w)}),_=y(()=>!(!Ke()&&!Ct||!v.value||!f.value||!!Et.valid(i.value)&&!b.value||u.value===f.value.version&&p.value==="what's new seen"));async function x(H){H!==f.value?.version||p.value==="changelog seen"||(await a.set("Comfy.Release.Version",H),await a.set("Comfy.Release.Status","skipped"),await a.set("Comfy.Release.Timestamp",Date.now()))}n(x,"handleSkipRelease");async function T(H){H===f.value?.version&&(await a.set("Comfy.Release.Version",H),await a.set("Comfy.Release.Status","changelog seen"),await a.set("Comfy.Release.Timestamp",Date.now()))}n(T,"handleShowChangelog");async function M(H){H===f.value?.version&&(await a.set("Comfy.Release.Version",H),await a.set("Comfy.Release.Status","what's new seen"),await a.set("Comfy.Release.Timestamp",Date.now()))}n(M,"handleWhatsNewSeen");async function P(){if(!o.value&&v.value&&!l.systemStats?.system?.argv?.includes("--disable-api-nodes")){o.value=!0,t.value=null;try{l.systemStats||await _a(l.isInitialized);const H=await s.getReleases({project:Ct?"cloud":"comfyui",current_version:i.value,form_factor:l.getFormFactor(),locale:Li(r.value)});H!==null?e.value=H:s.error.value&&(t.value=s.error.value)}catch(H){t.value=H instanceof Error?H.message:"Unknown error occurred"}finally{o.value=!1}}}n(P,"fetchReleases");async function B(){await P()}return n(B,"initialize"),{releases:e,isLoading:o,error:t,recentRelease:f,recentReleases:C,shouldShowToast:S,shouldShowRedDot:I,shouldShowPopup:_,shouldShowUpdateButton:k,handleSkipRelease:x,handleShowChangelog:T,handleWhatsNewSeen:M,fetchReleases:P,initialize:B}}),im=Object.freeze(Object.defineProperty({__proto__:null,useReleaseStore:co},Symbol.toStringTag,{value:"Module"})),rm={class:"min-w-0 flex-1"},um={class:"mx-1 flex flex-col items-end gap-1"},cm={class:"flex items-center gap-2"},dm={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"},pm={key:0,class:"absolute top-0.5 right-1 size-2 rounded-full bg-red-500"},fm={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"},mm={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"},gm=q({__name:"TopMenuSection",setup(e){const o=re(),t=it(),s=lo(),l=gt(),{isLoggedIn:a}=Ft(),i=Ke(),{t:r}=pe(),{toastErrorHandler:u}=Bt(),p=Se(),g=zt(),v=Nn(),{isOverlayExpanded:f}=qe(v),C=co(),{shouldShowRedDot:w}=qe(C),{shouldShowRedDot:h}=es(),k=L(!1),b=y(()=>g.pendingTasks.length),N=y(()=>o.get("Comfy.UI.TabBarLayout")==="Integrated"),S=y(()=>nt(r("sideToolbar.queueProgressOverlay.viewJobHistory"))),I=y(()=>nt(r("menu.customNodesManager"))),_=y(()=>w.value||h.value),{isOpen:x}=qe(s),T=y(()=>nt(r("rightSidePanel.togglePanel"))),M=L();ze(()=>{M.value&&(J.menu.element.style.width="fit-content",M.value.appendChild(J.menu.element))});const P=n(()=>{p.execute("Comfy.Queue.ToggleOverlay")},"toggleQueueOverlay"),B=n(async()=>{try{await l.openManager({initialTab:eo.All,showToastOnLegacyError:!1})}catch(H){try{u(H)}catch(z){console.error(H),console.error(z)}}},"openCustomNodeManager");return(H,z)=>{const G=Ie("tooltip");return m(t).focusMode?E("",!0):(d(),$("div",{key:0,class:"ml-1 flex gap-x-0.5 pt-1",onMouseenter:z[1]||(z[1]=U=>k.value=!0),onMouseleave:z[2]||(z[2]=U=>k.value=!1)},[c("div",rm,[O(Sd)]),c("div",um,[c("div",cm,[m(l).shouldShowManagerButtons.value?(d(),$("div",dm,[de((d(),R(Z,{variant:"secondary",size:"icon","aria-label":m(r)("menu.customNodesManager"),class:"relative",onClick:B},{default:A(()=>[z[3]||(z[3]=c("i",{class:"icon-[lucide--puzzle] size-4"},null,-1)),_.value?(d(),$("span",pm)):E("",!0)]),_:1},8,["aria-label"])),[[G,I.value,void 0,{bottom:!0}]])])):E("",!0),c("div",fm,[O(zf),c("div",{ref_key:"legacyCommandsContainerRef",ref:M,class:"[&:not(:has(*>*:not(:empty)))]:hidden"},null,512),O(md),de((d(),R(Z,{type:"destructive",size:"icon","aria-pressed":m(f),"aria-label":m(r)("sideToolbar.queueProgressOverlay.expandCollapsedQueue"),onClick:P},{default:A(()=>[z[4]||(z[4]=c("i",{class:"icon-[lucide--history] size-4"},null,-1)),b.value>0?(d(),$("span",mm,V(b.value),1)):E("",!0)]),_:1},8,["aria-pressed","aria-label"])),[[G,S.value,void 0,{bottom:!0}]]),m(a)&&!N.value?(d(),R(ds,{key:0,class:"shrink-0"})):m(i)&&!N.value?(d(),R(ps,{key:1})):E("",!0),m(x)?E("",!0):de((d(),R(Z,{key:2,type:"secondary",size:"icon","aria-label":m(r)("rightSidePanel.togglePanel"),onClick:m(s).togglePanel},{default:A(()=>z[5]||(z[5]=[c("i",{class:"icon-[lucide--panel-right] size-4"},null,-1)])),_:1},8,["aria-label","onClick"])),[[G,T.value,void 0,{bottom:!0}]])])]),O(Vf,{expanded:m(f),"onUpdate:expanded":z[0]||(z[0]=U=>lt(f)?f.value=U:null),"menu-hovered":k.value},null,8,["expanded","menu-hovered"])])],32))}}}),fs=q({__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))}}),vm={class:"flex h-full flex-col"},hm={class:"flex w-full justify-between"},ym={class:"tabs-container font-inter"},bm={class:"font-normal"},wm={class:"flex items-center gap-2"},km={class:"h-0 grow"},Cm=q({__name:"BottomPanel",setup(e){const o=io(),t=yt(),{t:s}=pe(),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",vm,[(d(),R(m(ai),{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(li),{"pt:tab-list":"border-none h-full flex items-center py-2 border-b-1 border-solid",class:"bg-transparent"},{default:A(()=>[c("div",hm,[c("div",ym,[(d(!0),$(oe,null,be(m(o).bottomPanelTabs,v=>(d(),R(m(ii),{key:v.id,value:v.id,class:K(["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",bm,V(i(v)),1)]),_:2},1032,["value","class","pt:root"]))),128))]),c("div",wm,[l.value?(d(),R(Z,{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(Z,{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",km,[m(o).bottomPanelVisible&&m(o).activeBottomPanelTab?(d(),R(fs,{key:0,extension:m(o).activeBottomPanelTab},null,8,["extension"])):E("",!0)])]))}}),xm=Le(Cm,[["__scopeId","data-v-9d1ea2c9"]]);function ml(e={}){const{useTransform:o=!1}=e,s=he().getCanvas(),{canvasPosToClientPos:l,update:a}=Ei(s.canvas,s),i=re();se([()=>i.get("Comfy.Sidebar.Location"),()=>i.get("Comfy.Sidebar.Size"),()=>i.get("Comfy.UseNewMenu")],()=>a(),{flush:"post"});const r=L({}),u=n(g=>{const{pos:v,size:f,scale:C=s.ds.scale}=g,[w,h]=l(v),[k,b]=f;return o?{position:"fixed",transformOrigin:"0 0",transform:`scale(${C})`,left:`${w}px`,top:`${h}px`,width:`${k}px`,height:`${b}px`}:{position:"fixed",left:`${w}px`,top:`${h}px`,width:`${k*C}px`,height:`${b*C}px`}},"computeStyle");return{style:r,updatePosition:n(g=>{r.value=u(g)},"updatePosition")}}n(ml,"useAbsolutePosition");function Sm(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(Sm,"intersect");const _m=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=Sm({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",C=(v[1]-a.top+i.top)/p+"px",w=v[2]/p+"px",h=v[3]/p+"px";return`polygon(0% 0%, 0% 100%, ${f} 100%, ${f} ${C}, calc(${f} + ${w}) ${C}, calc(${f} + ${w}) calc(${C} + ${h}), ${f} calc(${C} + ${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"),Tm=["title"],$m=q({__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}=ml({useTransform:!0}),{style:u,updateClipPath:p}=_m(),g=he(),v=re(),f=y(()=>v.get("Comfy.DOMClippingEnabled")),C=n(()=>{const S=g.canvas;if(!S||!l.value)return;const I=Object.values(S.selected_nodes??{})[0];if(!I){p(l.value,S.canvas,!1,void 0);return}const _=I===e.widgetState.widget.node,x=I?.renderArea,T=S.ds.offset,M=S.ds.scale,P=x?{x:x[0],y:x[1],width:x[2],height:x[3],scale:M,offset:[T[0],T[1]]}:void 0;p(l.value,S.canvas,_,P)},"updateDomClipping"),{left:w,top:h}=Bn(g.getCanvas().canvas);se([()=>e.widgetState,w,h],([S,I,_])=>{r(S),f.value&&C(),a.value={...i.value,...f.value?u.value:{},zIndex:S.zIndex,pointerEvents:S.readonly||t.computedDisabled?"none":"auto",opacity:t.computedDisabled?.5:1}},{deep:!0}),se(()=>e.widgetState.visible,(S,I)=>{!S&&I&&t.options.onHide?.(t)}),Oe(document,"mousedown",S=>{!ho(t)||!e.widgetState.visible||!t.element.blur||t.element.contains(S.target)||t.element.blur()}),ze(()=>{ho(t)&&Oe(t.element,t.options.selectOn??["focus","click"],()=>{const S=g.canvas;S?.selectNode(e.widgetState.widget.node),S?.bringToFront(e.widgetState.widget.node)})});const b=t.node.constructor.nodeData?.inputs?.[t.name]?.tooltip,N=n(()=>{e.widgetState.visible&&ho(t)&&l.value&&(l.value.contains(t.element)||l.value.appendChild(t.element))},"mountElementIfVisible");return ze(()=>{Fe(()=>{N()}).catch(S=>{console.error("Error mounting DOM widget element:",S)})}),se(()=>e.widgetState.visible,()=>{N()}),(S,I)=>de((d(),$("div",{ref_key:"widgetElement",ref:l,class:"dom-widget",title:m(b),style:ve(a.value)},[m(Vi)(m(t))?(d(),R(oo(m(t).component),St({key:0,"model-value":m(t).value,widget:m(t)},m(t).props,{"onUpdate:modelValue":I[0]||(I[0]=_=>s("update:widgetValue",_))}),null,16,["model-value","widget"])):E("",!0)],12,Tm)),[[Xe,S.widgetState.visible]])}}),Nm=Le($m,[["__scopeId","data-v-781496d2"]]),Im={class:"isolate"},Mm=q({__name:"DomWidgets",setup(e){const o=Oi(),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=he();return xt(()=>l.canvas,a=>a.onDrawForeground=no(a.onDrawForeground,s),{immediate:!0}),(a,i)=>(d(),$("div",Im,[(d(!0),$(oe,null,be(t.value,r=>(d(),R(Nm,{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 Pm(){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(Pm,"useZoomControls");function Dm(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=Ol(()=>{o()},500),p=n(()=>{const h=e.value;if(!h||r.has(h.id))return;const k={onNodeAdded:h.onNodeAdded,onNodeRemoved:h.onNodeRemoved,onConnectionChange:h.onConnectionChange,onTrigger:h.onTrigger};r.set(h.id,k),h.onNodeAdded=function(b){k.onNodeAdded?.call(this,b),u()},h.onNodeRemoved=function(b){k.onNodeRemoved?.call(this,b),t.delete(b.id),u()},h.onConnectionChange=function(b){k.onConnectionChange?.call(this,b),u()},h.onTrigger=function(b){k.onTrigger?.call(this,b),b.type==="node:property:changed"&&(b.property==="mode"||b.property==="bgcolor"||b.property==="color")&&(t.delete(String(b.nodeId)),u())}},"setupEventListeners"),g=n(h=>{const k=h||e.value;if(!k)return;const b=r.get(k.id);if(!b){console.error("Attempted to cleanup event listeners for graph that was never set up");return}k.onNodeAdded=b.onNodeAdded,k.onNodeRemoved=b.onNodeRemoved,k.onConnectionChange=b.onConnectionChange,k.onTrigger=b.onTrigger,r.delete(k.id)},"cleanupEventListeners");return{updateFlags:a,setupEventListeners:p,cleanupEventListeners:g,checkForChanges:n(()=>{const h=e.value;if(!h)return!1;let k=!1,b=!1,N=!1;const S=ja.create(h),I=S.getNodeCount();I!==l.value&&(k=!0,l.value=I);const _=S.getNodes();for(const M of _){const P=M.id,B=`${M.x},${M.y},${M.width},${M.height}`;t.get(P)!==B&&(b=!0,t.set(P,B))}const x=new Set(_.map(M=>M.id));for(const[M]of t)x.has(M)||(t.delete(M),k=!0);const T=JSON.stringify(h.links||{});return T!==s.value&&(N=!0,s.value=T),(k||b)&&(a.value.bounds=!0,a.value.nodes=!0),N&&(a.value.connections=!0),k||b||N},"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(Dm,"useMinimapGraph");function Am(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 k=e.value.getBoundingClientRect();u.value={left:k.left,top:k.top,width:k.width,height:k.height}},"updateContainerRect"),g=n(k=>{r.value=!0,p();const b=k.currentTarget;b instanceof HTMLElement&&b.setPointerCapture(k.pointerId),v(k)},"handlePointerDown"),v=n(k=>{if(!r.value||!i.value)return;const b=k.clientX-u.value.left,N=k.clientY-u.value.top,S=(s-o.value.width*t.value)/2,I=(l-o.value.height*t.value)/2,_=(b-S)/t.value+o.value.minX,x=(N-I)/t.value+o.value.minY;a(_,x)},"handlePointerMove"),f=n(k=>{if(r.value=!1,!k)return;const b=k.currentTarget;b instanceof HTMLElement&&b.hasPointerCapture(k.pointerId)&&b.releasePointerCapture(k.pointerId)},"releasePointer");return{isDragging:r,containerRect:u,updateContainerRect:p,handlePointerDown:g,handlePointerMove:v,handlePointerUp:f,handlePointerCancel:f,handleWheel:n(k=>{k.preventDefault();const b=i.value;if(!b)return;u.value.left===0&&u.value.top===0&&e.value&&p();const N=b.ds,S=k.deltaY>0?.9:1.1,I=N.scale*S;if(I<.1||I>10)return;const T=k.clientX-u.value.left,M=k.clientY-u.value.top,P=(s-o.value.width*t.value)/2,B=(l-o.value.height*t.value)/2,H=(T-P)/t.value+o.value.minX,z=(M-B)/t.value+o.value.minY;N.scale=I,a(H,z)},"handleWheel")}}n(Am,"useMinimapInteraction");function Lm(e,o,t,s,l,a,i,r){const u=L(!0),p=L(!0),g=n(()=>{const C=o.value;if(!e.value||!C)return;const w=e.value.getContext("2d");if(!w)return;if(!C._nodes||C._nodes.length===0){w.clearRect(0,0,i,r);return}(u.value||l.value.nodes||l.value.connections)&&(Ri(e.value,C,{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((C,w)=>{(p.value||l.value.bounds)&&(C(),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&&(w(),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(Lm,"useMinimapRenderer");function Em(){const e=re(),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(Em,"useMinimapSettings");function Vm(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 k=e.value;if(!k)return;const b=k.canvas,N=window.devicePixelRatio||1;r.value={width:b.clientWidth||b.width/N,height:b.clientHeight||b.height/N}},"updateCanvasDimensions"),p=n(()=>{const k=ja.create(o.value);if(!k.hasData())return{minX:0,minY:0,maxX:100,maxY:100,width:100,height:100};const b=k.getBounds();return Wi(b)},"calculateGraphBounds"),g=n(()=>zi(l.value,t,s),"calculateScale"),v=n(()=>{const k=e.value;if(!k)return;(r.value.width===0||r.value.height===0)&&u();const b=k.ds,N=r.value.width/b.scale,S=r.value.height/b.scale,I=-b.offset[0],_=-b.offset[1],x=(t-l.value.width*a.value)/2,T=(s-l.value.height*a.value)/2;i.value={x:(I-l.value.minX)*a.value+x,y:(_-l.value.minY)*a.value+T,width:N*a.value,height:S*a.value}},"updateViewport"),f=n(()=>{l.value=p(),a.value=g()},"updateBounds"),C=n((k,b)=>{const N=e.value;if(!N)return;(r.value.width===0||r.value.height===0)&&u();const S=N.ds,I=r.value.width/S.scale,_=r.value.height/S.scale;S.offset[0]=-(k-I/2),S.offset[1]=-(b-_/2),N.setDirty(!0,!0)},"centerViewOn"),{resume:w,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:C,startViewportSync:w,stopViewportSync:h}}n(Vm,"useMinimapViewport");function ms({canvasRefMaybe:e,containerRefMaybe:o}={}){const t=he(),s=Re(),l=re(),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),C=y(()=>s.activeSubgraph||f.value?.graph),w=Em(),{nodeColors:h,showLinks:k,showGroups:b,renderBypass:N,renderError:S,containerStyles:I,panelStyles:_}=w,x=n(async(j,Y)=>{await l.set(j,Y),B.forceFullRedraw(),B.updateMinimap(T.updateBounds,T.updateViewport)},"updateOption"),T=Vm(f,C,g,v),M=Am(r,T.bounds,T.scale,g,v,T.centerViewOn,f),P=Dm(C,()=>{B.forceFullRedraw(),B.updateMinimap(T.updateBounds,T.updateViewport)}),B=Lm(i,C,T.bounds,T.scale,P.updateFlags,w,g,v),{pause:H,resume:z}=ao(async()=>{u.value&&await P.checkForChanges()&&B.updateMinimap(T.updateBounds,T.updateViewport)},{immediate:!1}),G=n(async()=>{p.value||(u.value=l.get("Comfy.Minimap.Visible"),f.value&&C.value&&(P.init(),r.value&&M.updateContainerRect(),T.updateCanvasDimensions(),window.addEventListener("resize",M.updateContainerRect),window.addEventListener("scroll",M.updateContainerRect),window.addEventListener("resize",T.updateCanvasDimensions),B.forceFullRedraw(),B.updateMinimap(T.updateBounds,T.updateViewport),T.updateViewport(),u.value&&(z(),T.startViewportSync()),p.value=!0))},"init"),U=n(()=>{H(),T.stopViewportSync(),P.destroy(),window.removeEventListener("resize",M.updateContainerRect),window.removeEventListener("scroll",M.updateContainerRect),window.removeEventListener("resize",T.updateCanvasDimensions),p.value=!1},"destroy");se(f,async(j,Y)=>{Y&&(P.cleanupEventListeners(),H(),T.stopViewportSync(),P.destroy(),window.removeEventListener("resize",M.updateContainerRect),window.removeEventListener("scroll",M.updateContainerRect),window.removeEventListener("resize",T.updateCanvasDimensions)),j&&!p.value&&await G()},{immediate:!0,flush:"post"}),se(C,(j,Y)=>{j&&j!==Y&&(P.cleanupEventListeners(Y||void 0),P.setupEventListeners(),B.forceFullRedraw(),B.updateMinimap(T.updateBounds,T.updateViewport))}),se(u,async j=>{j?(r.value&&M.updateContainerRect(),T.updateCanvasDimensions(),B.forceFullRedraw(),await Fe(),await Fe(),B.updateMinimap(T.updateBounds,T.updateViewport),T.updateViewport(),z(),T.startViewportSync()):(H(),T.stopViewportSync())});const W=n(async()=>{u.value=!u.value,await l.set("Comfy.Minimap.Visible",u.value)},"toggle"),F=n(j=>{a.value=j},"setMinimapRef"),Q=y(()=>{const j=T.viewportTransform.value;return{transform:`translate(${j.x}px, ${j.y}px)`,width:`${j.width}px`,height:`${j.height}px`,border:`2px solid ${w.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:I,viewportStyles:Q,panelStyles:_,width:g,height:v,nodeColors:h,showLinks:k,showGroups:b,renderBypass:N,renderError:S,init:G,destroy:U,toggle:W,renderMinimap:B.renderMinimap,handlePointerDown:M.handlePointerDown,handlePointerMove:M.handlePointerMove,handlePointerUp:M.handlePointerUp,handlePointerCancel:M.handlePointerCancel,handleWheel:M.handleWheel,setMinimapRef:F,updateOption:x}}n(ms,"useMinimap");const Om={class:"flex items-center gap-1 pr-0.5"},Rm={class:"rounded-lg bg-interface-panel-selected-surface p-2 group-hover:bg-interface-button-hover-surface"},Wm={class:"flex flex-col gap-1"},zm={class:"flex items-center gap-2"},Bm={class:"text-[9px] text-text-primary"},Fm={class:"flex items-center gap-2"},Um={class:"text-[9px] text-text-primary"},Gm=q({__name:"CanvasModeSelector",props:{buttonStyles:{}},setup(e){const o=L(),t=L(),s=Se(),l=he(),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 C=o.value?.$el||o.value;t.value?.toggle(f,C)},"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,C)=>(d(),$(oe,null,[O(Z,{ref_key:"buttonRef",ref:o,variant:"secondary",class:"group h-8 rounded-none! bg-comfy-menu-bg p-0 transition-none! hover:rounded-lg! hover:bg-interface-button-hover-surface!",style:ve(f.buttonStyles),onClick:p},{default:A(()=>[c("div",Om,[c("div",Rm,[c("i",{class:K([i.value,"block h-4 w-4"])},null,2)]),C[2]||(C[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",Wm,[c("div",{class:"flex cursor-pointer items-center justify-between px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onClick:C[0]||(C[0]=w=>g("select"))},[c("div",zm,[C[3]||(C[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",Bm,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:C[1]||(C[1]=w=>g("hand"))},[c("div",Fm,[C[4]||(C[4]=c("i",{class:"icon-[lucide--hand] h-4 w-4"},null,-1)),c("span",null,V(f.$t("graphCanvasMenu.hand")),1)]),c("span",Um,V(u.value),1)])])]),_:1},8,["pt"])],64))}}),Hm={key:0,class:"absolute right-0 bottom-[62px] z-1300 flex w-[250px] justify-center border-0! bg-inherit!"},jm={class:"flex flex-col gap-1"},qm={class:"font-medium"},Km={class:"text-[9px] text-text-primary"},Qm={class:"font-medium"},Ym={class:"text-[9px] text-text-primary"},Jm={class:"font-medium"},Xm={class:"text-[9px] text-text-primary"},Zm=q({__name:"ZoomControlsModal",props:{visible:{type:Boolean}},setup(e){const o=ms(),t=Se(),s=he(),{formatKeySequence:l}=Se(),a=e,i=L(null),r=n(k=>{const b=k.value;isNaN(b)||b<1||b>1e3||s.setAppZoomFromPercentage(b)},"applyZoom"),u=n(k=>{t.execute(k)},"executeCommand"),p=n(k=>{if(i.value)return;const b=n(()=>t.execute(k),"cmd");b(),i.value=window.setInterval(b,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"))),C=y(()=>l(t.getCommand("Comfy.Canvas.ZoomOut"))),w=y(()=>l(t.getCommand("Comfy.Canvas.FitView"))),h=L(null);return se(()=>a.visible,async k=>{k&&(await Fe(),h.value?.querySelector("input")?.focus())}),(k,b)=>k.visible?(d(),$("div",Hm,[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:ve(v.value),onClick:b[3]||(b[3]=Ce(()=>{},["stop"]))},[c("div",jm,[c("div",{class:"flex cursor-pointer items-center justify-between rounded px-3 py-2 text-sm hover:bg-node-component-surface-hovered",onMousedown:b[0]||(b[0]=N=>p("Comfy.Canvas.ZoomIn")),onMouseup:g,onMouseleave:g},[c("span",qm,V(k.$t("graphCanvasMenu.zoomIn")),1),c("span",Km,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:b[1]||(b[1]=N=>p("Comfy.Canvas.ZoomOut")),onMouseup:g,onMouseleave:g},[c("span",Qm,V(k.$t("graphCanvasMenu.zoomOut")),1),c("span",Ym,V(C.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:b[2]||(b[2]=N=>u("Comfy.Canvas.FitView"))},[c("span",Jm,V(k.$t("zoomControls.zoomToFit")),1),c("span",Xm,V(w.value),1)]),c("div",{ref_key:"zoomInputContainer",ref:h,class:"zoomInputContainer flex items-center gap-1 rounded bg-input-surface p-2"},[O(m(ri),{"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"]),b[4]||(b[4]=c("span",{class:"flex-shrink-0 text-sm text-text-primary"},"%",-1))],512)])],4)])):E("",!0)}}),eg={class:"inline-flex items-center gap-1 px-2 text-xs"},tg=q({__name:"GraphCanvasMenu",setup(e){const{t:o}=pe(),t=Se(),{formatKeySequence:s}=Se(),l=he(),a=re(),i=uo(),r=ms(),{isModalVisible:u,toggleModal:p,hideModal:g,hasActivePopup:v}=Pm(),f=y(()=>{const P=["borderRadius"],B=["borderRadius"],H={border:"none"},z=r.containerStyles.value,G={...Object.fromEntries(Object.entries(z).filter(([W])=>B.includes(W))),...H},U=Object.entries(z).filter(([W])=>P.includes(W)).reduce((W,[F,Q])=>({...W,[F]:Q}),{});return{buttonStyles:G,buttonGroupStyles:U}}),C=y(()=>a.get("Comfy.LinkRenderMode")===ge.HIDDEN_LINK),w=y(()=>s(t.getCommand("Comfy.Canvas.FitView")).toUpperCase()),h=y(()=>s(t.getCommand("Comfy.Canvas.ToggleMinimap")).toUpperCase()),k=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"]),b=y(()=>({"bg-comfy-menu-bg":!0,"hover:bg-interface-button-hover-surface!":!0,"not-active:bg-interface-panel-selected-surface!":a.get("Comfy.Minimap.Visible"),"p-0":!0,"w-8":!0,"h-8":!0})),N=y(()=>{const P=o("graphCanvasMenu.fitView"),B=w.value;return B?`${P} (${B})`:P}),S=y(()=>{const P=a.get("Comfy.Minimap.Visible")?o("zoomControls.hideMinimap"):o("zoomControls.showMinimap"),B=h.value;return B?`${P} (${B})`:P}),I=y(()=>C.value?o("graphCanvasMenu.showLinks"):o("graphCanvasMenu.hideLinks")),_=y(()=>C.value?o("graphCanvasMenu.showLinks"):o("graphCanvasMenu.hideLinks")),x=y(()=>["bg-comfy-menu-bg",C.value?"not-active:bg-interface-panel-selected-surface!":"","hover:bg-interface-button-hover-surface!","p-0","w-8","h-8"]);ze(()=>{l.initScaleSync()});const T=n(()=>{t.execute("Comfy.Canvas.ToggleMinimap")},"onMinimapToggleClick"),M=n(()=>{t.execute("Comfy.Canvas.ToggleLinkVisibility")},"onLinkVisibilityToggleClick");return rt(()=>{l.cleanupScaleSync()}),(P,B)=>{const H=Ie("tooltip");return d(),$("div",null,[O(Zm,{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]=(...z)=>m(g)&&m(g)(...z))})):E("",!0),O(m(ui),{class:"absolute right-0 bottom-0 z-1200 flex-row gap-1 border-[1px] border-interface-stroke bg-comfy-menu-bg p-2",style:ve({...f.value.buttonGroupStyles}),onWheel:m(i).handleWheel},{default:A(()=>[O(Gm,{"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(Z,{variant:"secondary","aria-label":N.value,style:ve(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"])),[[H,N.value,void 0,{top:!0}]]),de((d(),R(Z,{variant:"secondary",class:K(k.value),"aria-label":m(o)("zoomControls.label"),"data-testid":"zoom-controls-button",style:ve(f.value.buttonStyles),onClick:m(p)},{default:A(()=>[c("span",eg,[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"])),[[H,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(Z,{variant:"secondary","aria-label":S.value,"data-testid":"toggle-minimap-button",style:ve(f.value.buttonStyles),class:K(b.value),onClick:T},{default:A(()=>B[4]||(B[4]=[c("i",{class:"icon-[lucide--map] h-4 w-4"},null,-1)])),_:1},8,["aria-label","style","class"])),[[H,S.value,void 0,{top:!0}]]),de((d(),R(Z,{variant:"secondary",class:K(x.value),"aria-label":_.value,"data-testid":"toggle-link-visibility-button",style:ve(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"])),[[H,{value:I.value,pt:{root:{style:"z-index: 2; transform: translateY(-20px);"}}},void 0,{top:!0}]])]),_:1},8,["style","onWheel"])])}}}),og=q({__name:"NodeTooltip",setup(e){let o;const t=_t(),s=re(),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=J.canvas.mouse[0]+"px",r.value=J.canvas.mouse[1]+"px",a.value=f,await Fe();const C=l.value?.getBoundingClientRect();C&&(C.right>window.innerWidth&&(i.value=J.canvas.mouse[0]-C.width+"px"),C.top<0&&(r.value=J.canvas.mouse[1]+C.height+"px"))}n(p,"showTooltip");function g(){const{canvas:f}=J,C=f?.node_over;if(!C)return;const w=C.constructor,h=t.nodeDefsByName[C.type??""];if(w.title_mode!==ge.NO_TITLE&&f.graph_mouse[1]<C.pos[1])return p(h?.description);if(C.flags?.collapsed)return;const k=Bi(C,f.graph_mouse[0],f.graph_mouse[1],[0,0]);if(k!==-1){const S=C.inputs[k].name,I=Ae(`nodeDefs.${He(C.type??"")}.inputs.${He(S)}.tooltip`,h?.inputs[S]?.tooltip??"");return p(I)}const b=Fi(C,f.graph_mouse[0],f.graph_mouse[1],[0,0]);if(b!==-1){const S=Ae(`nodeDefs.${He(C.type??"")}.outputs.${b}.tooltip`,h?.outputs[b]?.tooltip??"");return p(S)}const N=J.canvas.getWidgetAtCursor();if(N&&!ho(N)){const S=Ae(`nodeDefs.${He(C.type??"")}.inputs.${He(N.name)}.tooltip`,h?.inputs[N.name]?.tooltip??"");return p(N.tooltip??S)}}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,C)=>a.value?(d(),$("div",{key:0,ref_key:"tooltipRef",ref:l,class:"node-tooltip",style:ve({left:i.value,top:r.value})},V(a.value),5)):E("",!0)}}),ng=Le(og,[["__scopeId","data-v-96b1458a"]]),sg=q({__name:"BypassButton",setup(e){const o=Se(),t=n(async()=>{await o.execute("Comfy.Canvas.ToggleSelectedNodes.Bypass")},"toggleBypass");return(s,l)=>{const a=Ie("tooltip");return de((d(),R(Z,{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}]])}}}),ag={class:"relative"},lg={class:"flex items-center gap-1 px-0"},ig={key:0,class:"color-picker-container absolute -top-10 left-1/2"},rg=["data-testid"],ug=q({__name:"ColorPickerButton",setup(e){const{t:o}=pe(),t=he(),s=dt(),l=Re(),a=y(()=>s.completedActivePalette.light_theme),i=n(k=>Vt(k,{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(([k,b])=>({name:k,localizedName:o(`color.${k}`),value:{dark:b.bgcolor,light:i(b.bgcolor)}}))],g=L(null),v=n(k=>{const b=k?.name??u.name,N=b===u.name?null:Ye.node_colors[b];for(const S of t.selectedItems)Oo(S)&&S.setColorOption(N);t.canvas?.setDirty(!0,!0),f.value=N,r.value=!1,l.activeWorkflow?.changeTracker.checkState()},"applyColor"),f=L(null),C=y(()=>f.value?a.value?i(f.value?.bgcolor):f.value?.bgcolor:null),w=y(()=>f.value?.bgcolor?p.find(b=>b.value.dark===f.value?.bgcolor||b.value.light===f.value?.bgcolor)?.localizedName??u.localizedName:null),h=n(k=>{r.value=!1,g.value=null,f.value=Ui(k)},"updateColorSelectionFromNode");return se(()=>t.selectedItems,k=>{h(k)},{immediate:!0}),(k,b)=>{const N=Ie("tooltip");return d(),$("div",ag,[de((d(),R(Z,{"data-testid":"color-picker-button",variant:"muted-textonly","aria-label":m(o)("g.color"),onClick:b[0]||(b[0]=()=>r.value=!r.value)},{default:A(()=>[c("div",lg,[c("i",{class:"pi pi-circle-fill",style:ve({color:C.value??""})},null,4),b[1]||(b[1]=c("i",{class:"icon-[lucide--chevron-down]"},null,-1))])]),_:1},8,["aria-label"])),[[N,{value:w.value??m(o)("color.noColor"),showDelay:1e3},void 0,{top:!0}]]),r.value?(d(),$("div",ig,[O(m(Va),{"model-value":g.value,options:p,"option-label":"name","data-key":"value","onUpdate:modelValue":v},{option:A(({option:S})=>[de(c("i",{class:"pi pi-circle-fill",style:ve({color:a.value?S.value.light:S.value.dark}),"data-testid":S.name},null,12,rg),[[N,S.localizedName,void 0,{top:!0}]])]),_:1},8,["model-value"])])):E("",!0)])}}}),cg=Le(ug,[["__scopeId","data-v-2197e0a1"]]),dg=q({__name:"ConfigureSubgraph",setup(e){const o=lo(),t=n(()=>{o.openPanel("subgraph")},"handleClick");return(s,l)=>{const a=Ie("tooltip");return de((d(),R(Z,{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}]])}}}),pg=q({__name:"ConvertToSubgraphButton",setup(e){const o=Se(),{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(Z,{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(Z,{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)}}}),fg=q({__name:"DeleteButton",setup(e){const o=Se(),{selectedItems:t}=Ut(),s=y(()=>t.value.some(l=>l.removable!==!1));return(l,a)=>{const i=Ie("tooltip");return de((d(),R(Z,{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}]])}}}),mg=q({__name:"ExecuteButton",setup(e){const{t:o}=pe(),t=Se(),s=he(),{selectedNodes:l}=Ut(),a=s.getCanvas(),i=L(!1),r=y(()=>l.value.filter(so).filter(Gi));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,C)=>{const w=Ie("tooltip");return de((d(),R(Z,{variant:"primary","aria-label":m(o)("selectionToolbox.executeButton.tooltip"),onMouseenter:C[0]||(C[0]=()=>p()),onMouseleave:C[1]||(C[1]=()=>g()),onClick:v},{default:A(()=>C[2]||(C[2]=[c("i",{class:"icon-[lucide--play]"},null,-1)])),_:1},8,["aria-label"])),[[w,{value:m(o)("selectionToolbox.executeButton.tooltip"),showDelay:1e3},void 0,{top:!0}]])}}}),gg=q({__name:"ExtensionCommandButton",props:{command:{}},setup(e){const o=Se();return(t,s)=>{const l=Ie("tooltip");return de((d(),R(Z,{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:K([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}]])}}}),vg=q({__name:"InfoButton",setup(e){const o=lo(),t=n(()=>{o.openPanel("info")},"onInfoClick");return(s,l)=>{const a=Ie("tooltip");return de((d(),R(Z,{"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}]])}}}),hg=q({__name:"Load3DViewerButton",setup(e){const o=Se(),t=n(()=>{o.execute("Comfy.3DViewer.Open3DViewer")},"open3DViewer");return(s,l)=>{const a=Ie("tooltip");return de((d(),R(Z,{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}]])}}}),yg=q({__name:"MaskEditorButton",setup(e){const o=Se(),{isSingleImageNode:t}=Ut(),s=n(()=>{o.execute("Comfy.MaskEditor.OpenMaskEditor")},"openMaskEditor");return(l,a)=>{const i=Ie("tooltip");return de((d(),R(Z,{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}]])}}}),bg=n(e=>e!=null&&typeof e=="object"&&"refresh"in e&&typeof e.refresh=="function","isRefreshableWidget"),wg=n(()=>{const e=he(),o=L([]);ke(()=>{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)bg(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"),kg=q({__name:"RefreshSelectionButton",setup(e){const{t:o}=pe(),{isRefreshable:t,refreshSelected:s}=wg();return(l,a)=>{const i=Ie("tooltip");return de((d(),R(Z,{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}]])}}}),Cg=q({__name:"SaveToSubgraphLibrary",setup(e){const o=Se(),t=he(),s=y(()=>t.selectedItems?.length===1&&t.selectedItems[0]instanceof ts);return(l,a)=>{const i=Ie("tooltip");return de((d(),R(Z,{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),xg=L(0),Sg=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}`:ns(s)?`G:${s.id}`:null}n(Ro,"buildSelectionSignature");function _g(e){return at?Ro(e)===at:!1}n(_g,"currentSelectionMatchesSignature");function Tg(e){const o=he(),t=o.getCanvas(),{getSelectableItems:s}=os(),{shouldRenderVueNodes:l}=jo(),a=L({x:0,y:0}),i=L(!1),{left:r,top:u}=Bn(t.canvas),p=y(()=>{const b=o.canvas?.state?.draggingItems??!1,N=l.value&&Pe.isDraggingVueNodes.value;return b||N}),g=n(()=>{const b=s();if(!b.size){i.value=!1;return}if(p.value){i.value=!1;return}i.value=!0;const N=[];for(const I of b)if(I.id!=null)if(l.value&&typeof I.id=="string"){const _=Pe.getNodeLayoutRef(I.id).value;_&&N.push([_.bounds.x,_.bounds.y,_.bounds.width,_.bounds.height])}else(I instanceof vt||I instanceof Ot)&&N.push([I.pos[0],I.pos[1]-ge.NODE_TITLE_HEIGHT,I.size[0],I.size[1]+ge.NODE_TITLE_HEIGHT]);const S=Hi(N);S&&(a.value={x:S.x+S.width/2,y:S.y-10},v())},"updateSelectionBounds"),v=n(()=>{if(!i.value)return;const{scale:b,offset:N}=t.ds,S=(a.value.x+N[0])*b+r.value,I=(a.value.y+N[1])*b+u.value;e.value&&(e.value.style.setProperty("--tb-x",`${S}px`),e.value.style.setProperty("--tb-y",`${I}px`))},"updateTransform"),{resume:f,pause:C}=ao(v);ke(()=>{i.value?f():C()}),se(()=>o.getCanvas().state.selectionChanged,b=>{b&&((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,b=>{b?at=Ro(o):o.canvas?.state?.draggingItems||(at=null,st.value&&(st.value=!1))});const w=n(b=>{if(b){h();return}k()},"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){xg.value++;return}Lt=!1},"handleDragStart"),k=n(()=>{requestAnimationFrame(()=>{g();const b=_g(o),N=Lt&&i.value&&st.value&&b;st.value=N&&st.value,Lt=!1,N&&Sg.value++})},"handleDragEnd");return se(p,w),ht(()=>{$g()}),{visible:i}}n(Tg,"useSelectionToolboxPosition");function $g(){go.value=!1,st.value=!1,Lt=!1,at=null}n($g,"resetMoreOptionsState");const Ng=new Set(["Properties","Colors","Shapes","Title","Mode","Properties Panel","Copy (Clipspace)"]),Ig=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 sa(e){return e.toLowerCase().replace(/^un/,"").trim()}n(sa,"normalizeLabel");function Mg(e,o){const t=sa(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=sa(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(Mg,"isDuplicateItem");function Pg(e){return Ig.has(e)}n(Pg,"isCoreMenuItem");function Dg(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(Dg,"removeDuplicateMenuOptions");const Ag=["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=Ag.indexOf(e);return o===-1?999:o}n(hn,"getMenuItemOrder");function Mn(e){const o=Dg(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&&Pg(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),C=r(f);u>0&&C!==u&&a.push({type:"divider"}),a.push(v),u=C}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 Lg(e,o,t=!0){const s=[];for(const l of e){if(l===null){s.push({type:"divider"});continue}if(!l.content||Ng.has(l.content)||Mg(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=gl(l.submenu.options);else if(l.callback&&!l.disabled){a.hasSubmenu=!0;const i=Eg(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(Lg,"convertContextMenuToOptions");function Eg(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 gl(t,s);console.warn("[ContextMenuConverter] No items captured for:",e.content)}n(Eg,"captureDynamicSubmenu");function gl(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:Vg(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(gl,"convertSubmenuToOptions");function Vg(e){return kt.sanitize(e,{ALLOWED_TAGS:[]}).trim()||e.replace(/<[^>]*>/g,"").trim()||e}n(Vg,"stripHtmlTags");function gs(){const e=he(),o=Re();return{refreshCanvas:n(()=>{e.canvas?.emitBeforeChange(),e.canvas?.setDirty(!0,!0),e.canvas?.graph?.afterChange(),e.canvas?.emitAfterChange(),o.activeWorkflow?.changeTracker?.checkState()},"refreshCanvas")}}n(gs,"useCanvasRefresh");function vs(){const{t:e}=pe(),o=he(),t=dt(),s=gs(),l=y(()=>t.completedActivePalette.light_theme),a=n(C=>Vt(C,{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(([C,w])=>({name:C,localizedName:e(`color.${C}`),value:{dark:w.bgcolor,light:a(w.bgcolor)}}))],u=[{name:"default",localizedName:e("shape.default"),value:Mt.ROUND},{name:"box",localizedName:e("shape.box"),value:Mt.BOX},{name:"card",localizedName:e("shape.CARD"),value:Mt.CARD}];return{colorOptions:r,shapeOptions:u,applyColor:n(C=>{const w=C?.name??i.name,h=w===i.name?null:Ye.node_colors[w];for(const k of o.selectedItems)Oo(k)&&k.setColorOption(h);s.refreshCanvas()},"applyColor"),applyShape:n(C=>{const w=Array.from(o.selectedItems).filter(h=>h instanceof vt);w.length!==0&&(w.forEach(h=>{h.shape=C.value}),s.refreshCanvas())},"applyShape"),getCurrentColor:n(()=>{const C=Array.from(o.selectedItems);if(C.length===0)return null;const w=C.find(b=>Oo(b));if(!w||!Oo(w))return null;const k=w.getColorOption()?.bgcolor??null;return r.find(b=>b.value.dark===k||b.value.light===k)??i},"getCurrentColor"),getCurrentShape:n(()=>{const C=Array.from(o.selectedItems).filter(k=>k instanceof vt);if(C.length===0)return null;const h=C[0].shape??Mt.ROUND;return u.find(k=>k.value===h)??u[0]},"getCurrentShape"),isLightTheme:l}}n(vs,"useNodeCustomization");function Og(){const{t:e}=pe(),o=he(),t=Re(),s=re(),l=gs(),{shapeOptions:a,colorOptions:i,isLightTheme:r}=vs();return{getFitGroupToNodesOption:n(f=>({label:"Fit Group To Nodes",icon:"icon-[lucide--move-diagonal-2]",action:n(()=>{try{f.recomputeInsideNodes()}catch(w){console.warn("Failed to recompute group nodes:",w);return}const C=s.get("Comfy.GroupSelectedNodes.Padding");f.resizeTo(f.children,C),f.graph?.change(),o.canvas?.setDirty(!0,!0),t.activeWorkflow?.changeTracker?.checkState()},"action")}),"getFitGroupToNodesOption"),getGroupShapeOptions:n((f,C)=>({label:e("contextMenu.Shape"),icon:"icon-[lucide--box]",hasSubmenu:!0,submenu:a.map(w=>({label:w.localizedName,action:n(()=>{(f.nodes||[]).forEach(k=>k.shape=w.value),l.refreshCanvas(),C()},"action")}))}),"getGroupShapeOptions"),getGroupColorOptions:n((f,C)=>({label:e("contextMenu.Color"),icon:"icon-[lucide--palette]",hasSubmenu:!0,submenu:i.map(w=>({label:w.localizedName,color:r.value?w.value.light:w.value.dark,action:n(()=>{f.color=r.value?w.value.light:w.value.dark,l.refreshCanvas(),C()},"action")}))}),"getGroupColorOptions"),getGroupModeOptions:n((f,C)=>{const w=[];try{f.recomputeInsideNodes()}catch(N){return console.warn("Failed to recompute group nodes for mode options:",N),w}const h=f.nodes||[];if(!h.length)return w;let k=!0;for(let N=1;N<h.length;N++)if(h[N].mode!==h[0].mode){k=!1;break}const b=n((N,S)=>({label:e(`selectionToolbox.${N}`),icon:S===We.BYPASS?"icon-[lucide--ban]":S===We.NEVER?"icon-[lucide--zap-off]":"icon-[lucide--play]",action:n(()=>{h.forEach(I=>{I.mode=S}),o.canvas?.setDirty(!0,!0),f.graph?.change(),t.activeWorkflow?.changeTracker?.checkState(),C()},"action")}),"createModeAction");if(k)switch(h[0].mode){case We.ALWAYS:w.push(b("Set Group Nodes to Never",We.NEVER)),w.push(b("Bypass Group Nodes",We.BYPASS));break;case We.NEVER:w.push(b("Set Group Nodes to Always",We.ALWAYS)),w.push(b("Bypass Group Nodes",We.BYPASS));break;case We.BYPASS:w.push(b("Set Group Nodes to Always",We.ALWAYS)),w.push(b("Set Group Nodes to Never",We.NEVER));break;default:w.push(b("Set Group Nodes to Always",We.ALWAYS)),w.push(b("Set Group Nodes to Never",We.NEVER)),w.push(b("Bypass Group Nodes",We.BYPASS));break}else w.push(b("Set Group Nodes to Always",We.ALWAYS)),w.push(b("Set Group Nodes to Never",We.NEVER)),w.push(b("Bypass Group Nodes",We.BYPASS));return w},"getGroupModeOptions")}}n(Og,"useGroupMenuOptions");function Rg(){const{t:e}=pe(),o=n(()=>{Se().execute("Comfy.MaskEditor.OpenMaskEditor")},"openMaskEditor"),t=n(i=>{if(!i?.imgs?.length)return;const r=i.imgs[i.imageIndex??0];if(!r)return;const u=new URL(r.src);u.searchParams.delete("preview"),window.open(u.toString(),"_blank")},"openImage"),s=n(async i=>{if(!i?.imgs?.length)return;const r=i.imgs[i.imageIndex??0];if(!r)return;const u=document.createElement("canvas"),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"),ss(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(Rg,"useImageMenuOptions");function Wg(){const{getSelectedNodes:e,toggleSelectedNodesMode:o}=os(),t=Se(),s=Re();return{adjustNodeSize:n(()=>{e().forEach(g=>{const v=g.computeSize();g.setSize([v[0],v[1]])}),J.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"adjustNodeSize"),toggleNodeCollapse:n(()=>{e().forEach(g=>{g.collapse()}),J.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"toggleNodeCollapse"),toggleNodePin:n(()=>{e().forEach(g=>{g.pin(!g.pinned)}),J.canvas.setDirty(!0,!0),s.activeWorkflow?.changeTracker?.checkState()},"toggleNodePin"),toggleNodeBypass:n(()=>{o(We.BYPASS),J.canvas.setDirty(!0,!0)},"toggleNodeBypass"),runBranch:n(async()=>{const p=e();qa(p).length!==0&&await t.execute("Comfy.QueueSelectedOutputNodes")},"runBranch")}}n(Wg,"useSelectedNodeActions");function zg(){const{t:e}=pe(),{shapeOptions:o,applyShape:t,applyColor:s,colorOptions:l,isLightTheme:a}=vs(),{adjustNodeSize:i,toggleNodeCollapse:r,toggleNodePin:u,toggleNodeBypass:p,runBranch:g}=Wg(),v=y(()=>o.map(S=>({label:S.localizedName,action:n(()=>t(S),"action")}))),f=y(()=>l.map(S=>({label:S.localizedName,color:a.value?S.value.light:S.value.dark,action:n(()=>s(S.name==="noColor"?null:S),"action")})));return{getNodeInfoOption:n(S=>({label:e("contextMenu.Node Info"),icon:"icon-[lucide--info]",action:S}),"getNodeInfoOption"),getAdjustSizeOption:n(()=>({label:e("contextMenu.Adjust Size"),icon:"icon-[lucide--move-diagonal-2]",action:i}),"getAdjustSizeOption"),getNodeVisualOptions:n((S,I)=>[{label:S.collapsed?e("contextMenu.Expand Node"):e("contextMenu.Minimize Node"),icon:S.collapsed?"icon-[lucide--maximize-2]":"icon-[lucide--minimize-2]",action:n(()=>{r(),I()},"action")},{label:e("contextMenu.Shape"),icon:"icon-[lucide--box]",hasSubmenu:!0,submenu:v.value,action:n(()=>{},"action")},{label:e("contextMenu.Color"),icon:"icon-[lucide--palette]",hasSubmenu:!0,submenu:f.value,isColorPicker:!0,action:n(()=>{},"action")}],"getNodeVisualOptions"),getPinOption:n((S,I)=>({label:S.pinned?e("contextMenu.Unpin"):e("contextMenu.Pin"),icon:S.pinned?"icon-[lucide--pin-off]":"icon-[lucide--pin]",action:n(()=>{u(),I()},"action")}),"getPinOption"),getBypassOption:n((S,I)=>({label:S.bypassed?e("contextMenu.Remove Bypass"):e("contextMenu.Bypass"),icon:"icon-[lucide--redo-dot]",shortcut:"Ctrl+B",action:n(()=>{p(),I()},"action")}),"getBypassOption"),getRunBranchOption:n(()=>({label:e("contextMenu.Run Branch"),icon:"icon-[lucide--play]",action:g}),"getRunBranchOption"),colorSubmenu:f}}n(zg,"useNodeMenuOptions");function vl(){const e=re(),o=sn(),{hasMultipleSelection:t}=Ut(),s=y(()=>t.value);return{frameNodes:n(()=>{const{canvas:a}=J;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(vl,"useFrameNodes");function Bg(){const{t:e}=pe(),o=he(),t=gs(),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=qi(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=ji(u,r.value);o.canvas?.repositionNodesVueMode(p),t.refreshCanvas()},"applyDistribute")}}n(Bg,"useNodeArrangement");function Fg(){const e=he(),o=Pt(),t=yt(),s=sn(),l=Re();return{copySelection:n(()=>{const g=J.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(()=>{J.canvas.pasteFromClipboard({connectInputs:!1}),l.activeWorkflow?.changeTracker?.checkState()},"pasteSelection"),duplicateSelection:n(()=>{const g=J.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=J.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:"",C=await t.prompt({title:ce("g.rename"),message:ce("g.enterNewName"),defaultValue:f});if(C&&C!==f&&"title"in v){const w=v;w.title=C,J.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,C)=>{if("title"in f){const w=f;w.title=`${v} ${C+1}`}}),J.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(Fg,"useSelectionOperations");function Ug(){const{t:e}=pe(),{copySelection:o,duplicateSelection:t,deleteSelection:s,renameSelection:l}=Fg(),{alignOptions:a,distributeOptions:i,applyAlign:r,applyDistribute:u}=Bg(),{convertToSubgraph:p,unpackSubgraph:g,addSubgraphToLibrary:v}=Ka(),{frameNodes:f}=vl(),C=y(()=>a.map(I=>({label:I.localizedName,icon:I.icon,action:n(()=>r(I),"action")}))),w=y(()=>i.map(I=>({label:I.localizedName,icon:I.icon,action:n(()=>u(I),"action")})));return{getBasicSelectionOptions:n(()=>[{label:e("contextMenu.Rename"),action:l},{label:e("contextMenu.Copy"),shortcut:"Ctrl+C",action:o},{label:e("contextMenu.Duplicate"),shortcut:"Ctrl+D",action:t}],"getBasicSelectionOptions"),getSubgraphOptions:n(({hasSubgraphs:I,hasMultipleSelection:_})=>{const x={label:e("contextMenu.Convert to Subgraph"),icon:"icon-[lucide--shrink]",action:p,badge:Pn.NEW},T=[];return(!I||_)&&T.push(x),I&&T.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}),T},"getSubgraphOptions"),getMultipleNodesOptions:n(()=>{const I=n(()=>{Se().execute("Comfy.GroupNode.ConvertSelectedNodesToGroupNode")},"convertToGroupNodes");return[{label:e("contextMenu.Convert to Group Node"),icon:"icon-[lucide--group]",action:I,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:C.value,action:n(()=>{},"action")},{label:e("contextMenu.Distribute Nodes"),icon:"icon-[lucide--align-center-horizontal]",hasSubmenu:!0,submenu:w.value,action:n(()=>{},"action")}],"getAlignmentOptions"),alignSubmenu:C,distributeSubmenu:w}}n(Ug,"useSelectionMenuOptions");var Pn=(e=>(e.NEW="new",e.DEPRECATED="deprecated",e))(Pn||{});let xo=null;function Gg(e){xo?.toggle&&xo.toggle(e)}n(Gg,"toggleNodeOptions");function Hg(e){xo?.show&&xo.show(e)}n(Hg,"showNodeOptions");function Dn(e){xo=e}n(Dn,"registerNodeOptionsInstance");function jg(e){return e.map(o=>o.type==="divider"||o.type==="category"?o:{...o,source:"vue"})}n(jg,"markAsVueOptions");function qg(){const{selectedItems:e,selectedNodes:o,nodeDef:t,showNodeHelp:s,hasSubgraphs:l,hasImageNode:a,hasOutputNodesSelected:i,hasMultipleSelection:r,computeSelectionFlags:u}=Ut(),p=he(),{getImageMenuOptions:g}=Rg(),{getNodeInfoOption:v,getNodeVisualOptions:f,getPinOption:C,getBypassOption:w,getRunBranchOption:h}=zg(),{getFitGroupToNodesOption:k,getGroupColorOptions:b,getGroupModeOptions:N}=Og(),{getBasicSelectionOptions:S,getSubgraphOptions:I,getMultipleNodesOptions:_}=Ug(),x=l,T=r,M=L(0),P=n(()=>{M.value++},"bump"),B=y(()=>{M.value;const z=u(),G=e.value.filter(ns),U=G.length===1&&o.value.length===0?G[0]:null,W=x.value,F=[];if(o.value.length===1&&!U&&p.canvas)try{const X=o.value[0],ae=p.canvas.getNodeMenuOptions(X);F.push(...Lg(ae,X,!1))}catch(X){console.error("Error getting LiteGraph menu items:",X)}const Q=[],j=S();if(Q.push(...j),Q.push({type:"divider"}),i.value){const X=h();Q.push(X)}if(!U){const X=C(z,P),ae=w(z,P);Q.push(X),Q.push(ae)}if(U){const X=N(U,P);Q.push(...X)}if(Q.push({type:"divider"}),Q.push(...I({hasSubgraphs:W,hasMultipleSelection:T.value})),T.value&&Q.push(..._()),U)Q.push(k(U));else{const X=f(z,P);X.length>0&&Q.push(X[0])}if(Q.push({type:"divider"}),t.value&&Q.push(v(s)),U)Q.push(b(U,P));else{const X=f(z,P);X.length>1&&Q.push(X[1]),X.length>2&&Q.push(X[2])}Q.push({type:"divider"}),a.value&&o.value.length>0&&(Q.push(...g(o.value[0])),Q.push({type:"divider"}));const Y=jg(Q);if(F.length>0){const X=[...F,...Y];return Mn(X)}return Mn(Y)}),H=y(()=>B.value.filter(z=>z.hasSubmenu&&z.submenu));return{menuOptions:B,menuOptionsWithSubmenu:H,bump:P,hasSubgraphs:x,registerNodeOptionsInstance:Dn}}n(qg,"useMoreOptionsMenu");const Kg=["title","onClick"],Qg={key:0,class:"icon-[lucide--check] size-4 flex-shrink-0"},Yg={key:1,class:"w-4 flex-shrink-0"},Jg=q({__name:"ColorPickerMenu",props:{option:{}},emits:["submenu-click"],setup(e,{expose:o,emit:t}){const s=e,l=t,{getCurrentShape:a}=vs(),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:K(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,C=>(d(),$("div",{key:C.label,class:K(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",C.disabled?"cursor-not-allowed pointer-events-none text-node-icon-disabled":"hover:bg-secondary-background-hover")),title:C.label,onClick:n(w=>u(C),"onClick")},[C.color?(d(),$("div",{key:0,class:"size-5 rounded-full border border-border-default",style:ve({backgroundColor:C.color})},null,4)):C.color?E("",!0):(d(),$(oe,{key:1},[p(C)?(d(),$("i",Qg)):(d(),$("div",Yg)),c("span",null,V(C.label),1)],64))],10,Kg))),128))],2)]),_:1},512))}}),Xg=["onClick"],Zg={class:"flex-1"},ev={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"},tv={key:2,class:"icon-[lucide--chevron-right] size-4 opacity-60"},ov=q({__name:"NodeContextMenu",setup(e,{expose:o}){const t=L(),s=L(),l=L(!1),{menuOptions:a,bump:i}=qg(),r=he(),u=L({x:0,y:0}),p=r.getCanvas(),{left:g,top:v}=Bn(p.canvas);let f=0,C=0,w=0;const h=n(()=>{if(!l.value)return;const U=t.value?.container;if(!U)return;const{scale:W,offset:F}=p.ds;if(W===f&&F[0]===C&&F[1]===w)return;f=W,C=F[0],w=F[1];const Q=(u.value.x+F[0])*W+g.value,j=(u.value.y+F[1])*W+v.value;U.style.left=`${Q}px`,U.style.top=`${j}px`},"updateMenuPosition"),{resume:k,pause:b}=ao(h,{immediate:!1});ke(()=>{l.value?k():b()}),Oe(window,"touchstart",G=>{if(!l.value||!t.value)return;const U=G.target,W=t.value,F=W.container||W.$el;F&&!F.contains(U)&&T()},{passive:!0});const N=y(()=>a.value.find(G=>G.isColorPicker));function S(G){return!!G.isColorPicker}n(S,"isColorOption");function I(G){if(G.type==="divider")return{separator:!0};const U=S(G),W={label:G.label,icon:G.icon,disabled:G.disabled,shortcut:G.shortcut,isColorSubmenu:U,originalOption:G};return G.hasSubmenu&&G.submenu&&!U&&(W.items=G.submenu.map(F=>({label:F.label,icon:F.icon,disabled:F.disabled,command:n(()=>{F.action(),T()},"command")}))),!G.hasSubmenu&&G.action&&(W.command=()=>{G.action?.(),T()}),W}n(I,"convertToMenuItem");const _=y(()=>a.value.map(I));function x(G){i();const U=G.clientX-g.value,W=G.clientY-v.value,{scale:F,offset:Q}=p.ds;u.value={x:U/F-Q[0],y:W/F-Q[1]},f=F,C=Q[0],w=Q[1],l.value=!0,t.value?.show(G)}n(x,"show");function T(){t.value?.hide()}n(T,"hide");function M(G){l.value?T():x(G)}n(M,"toggle"),o({toggle:M,hide:T,isOpen:l,show:x});function P(G){G.stopPropagation(),G.preventDefault();const U=Array.from(G.currentTarget.children).find(W=>W.classList.contains("icon-[lucide--chevron-right]"));s.value?.toggle(G,U)}n(P,"showColorPopover");function B(G){G.action(),T()}n(B,"handleColorSelect");function H(){l.value=!0}n(H,"onMenuShow");function z(){l.value=!1}return n(z,"onMenuHide"),ze(()=>{Dn({toggle:M,show:x,hide:T,isOpen:l})}),ht(()=>{Dn(null)}),(G,U)=>(d(),$(oe,null,[O(m(Oa),{ref_key:"contextMenu",ref:t,model:_.value,class:"max-h-[80vh] md:max-h-none overflow-y-auto md:overflow-y-visible",onShow:H,onHide:z},{item:A(({item:W,props:F,hasSubmenu:Q})=>[c("a",St(F.action,{class:"flex items-center gap-2 px-3 py-1.5",onClick:n(j=>W.isColorSubmenu?P(j):void 0,"onClick")}),[W.icon?(d(),$("i",{key:0,class:K([W.icon,"size-4"])},null,2)):E("",!0),c("span",Zg,V(W.label),1),W.shortcut?(d(),$("span",ev,V(W.shortcut),1)):E("",!0),Q||W.isColorSubmenu?(d(),$("i",tv)):E("",!0)],16,Xg)]),_:1},8,["model"]),N.value?(d(),R(Jg,{ref_key:"colorPickerMenu",ref:s,key:"color-picker-menu",option:N.value,onSubmenuClick:B},null,8,["option"])):E("",!0)],64))}}),nv=q({__name:"FrameNodes",setup(e){const{frameNodes:o}=vl();return(t,s)=>{const l=Ie("tooltip");return de((d(),R(Z,{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}]])}}}),sv=q({__name:"NodeOptionsButton",setup(e){const o=n(t=>{Gg(t)},"handleClick");return(t,s)=>{const l=Ie("tooltip");return de((d(),R(Z,{"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}]])}}}),av={},lv={class:"h-6 w-px self-center bg-border-default"};function iv(e,o){return d(),$("div",lv)}n(iv,"_sfc_render$1");const aa=Le(av,[["render",iv]]),rv=q({__name:"SelectionToolbox",setup(e){const o=Se(),t=he(),s=Ki(),l=uo(),a=L(),{visible:i}=Tg(a),r=y(()=>{const G=new Set(t.selectedItems.map(U=>s.invokeExtensions("getSelectionToolboxCommands",U).flat()).flat());return Array.from(G).map(U=>o.getCommand(U)).filter(U=>U!==void 0)}),{hasAnySelection:u,hasMultipleSelection:p,isSingleNode:g,isSingleSubgraph:v,isSingleImageNode:f,hasAny3DNodeSelected:C,hasOutputNodesSelected:w,nodeDef:h}=Ut(),k=y(()=>!!h.value),b=y(()=>u.value),N=y(()=>u.value),S=y(()=>p.value),I=y(()=>v.value),_=y(()=>g.value||v.value||p.value),x=y(()=>C.value),T=y(()=>f.value),M=y(()=>u.value),P=y(()=>u.value),B=y(()=>w.value),H=y(()=>b.value||N.value||S.value||I.value),z=y(()=>_.value);return(G,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(fg,{key:0})):E("",!0),k.value&&H.value?(d(),R(aa,{key:1})):E("",!0),k.value?(d(),R(vg,{key:2})):E("",!0),b.value?(d(),R(cg,{key:3})):E("",!0),S.value?(d(),R(nv,{key:4})):E("",!0),N.value?(d(),R(pg,{key:5})):E("",!0),I.value?(d(),R(dg,{key:6})):E("",!0),I.value?(d(),R(Cg,{key:7})):E("",!0),T.value?(d(),R(yg,{key:8})):E("",!0),H.value&&z.value?(d(),R(aa,{key:9})):E("",!0),_.value?(d(),R(sg,{key:10})):E("",!0),P.value?(d(),R(kg,{key:11})):E("",!0),x.value?(d(),R(hg,{key:12})):E("",!0),(d(!0),$(oe,null,be(r.value,W=>(d(),R(gg,{key:W.id,command:W},null,8,["command"]))),128)),B.value?(d(),R(mg,{key:13})):E("",!0),O(sv)]),_:1},8,["onWheel"])):E("",!0)]),_:1})],512),O(ov)],64))}}),uv=Le(rv,[["__scopeId","data-v-c6489a20"]]),cv=q({__name:"TitleEditor",setup(e){const o=re(),t=L(!1),s=L(""),{style:l,updatePosition:a}=ml(),i=L({}),r=y(()=>({...l.value,...i.value})),u=sn(),p=he(),g=L(!0),v=n(C=>{if(u.titleEditorTarget&&C?.trim()){const w=C.trim();u.titleEditorTarget.title=w;const h=u.titleEditorTarget;h instanceof vt&&h.isSubgraphNode?.()&&(h.subgraph.name=w),J.canvas.setDirty(!0,!0)}t.value=!1,u.titleEditorTarget=null,p.canvas.allow_dragcanvas=g.value},"onEdit");return se(()=>u.titleEditorTarget,C=>{if(C===null)return;s.value=C.title,t.value=!0;const w=p.canvas;g.value=w.allow_dragcanvas,w.allow_dragcanvas=!1;const h=w.ds.scale;if(C instanceof Ot){const k=C;a({pos:k.pos,size:[k.size[0],k.titleHeight]}),i.value={fontSize:`${k.font_size*h}px`}}else if(C instanceof vt){const k=C,[b,N]=k.getBounding();a({pos:[b,N],size:[k.width,ge.NODE_TITLE_HEIGHT]}),i.value={fontSize:`${12*h}px`}}}),Oe(document,"litegraph:canvas",n(C=>{if(C.detail.subType==="group-double-click"){if(!o.get("Comfy.Group.DoubleClickTitleToEdit"))return;const w=C.detail.group,[h,k]=w.pos;C.detail.originalEvent.canvasY-k<=w.titleHeight&&(u.titleEditorTarget=w)}else if(C.detail.subType==="node-double-click"){if(!o.get("Comfy.Node.DoubleClickTitleToEdit"))return;const w=C.detail.node,[h,k]=w.pos;C.detail.originalEvent.canvasY-k<=0&&(u.titleEditorTarget=w)}},"canvasEventHandler")),(C,w)=>t.value?(d(),$("div",{key:0,class:"group-title-editor node-title-editor",style:ve(r.value)},[O(jn,{"is-editing":t.value,"model-value":s.value,onEdit:v},null,8,["is-editing","model-value"])],4)):E("",!0)}}),dv=Le(cv,[["__scopeId","data-v-aceb018c"]]),pv={key:0,class:"p-3"},fv=q({__name:"TabInfo",props:{nodes:{}},setup(e){const o=y(()=>e.nodes[0]),t=_t(),s=Qi(),l=y(()=>t.fromLGraphNode(o.value));return xt(l,a=>{s.openHelp(a)},{immediate:!0}),(a,i)=>l.value?(d(),$("div",pv,[O(Yi,{node:l.value},null,8,["node"])])):E("",!0)}}),mv=["placeholder"],hl=q({__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=Ta(o,100,{maxWait:100});se(o,a=>{t.value=a!==s.value});const l=Rl(()=>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:K(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:K(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,mv),[[Wl,o.value]])],2))}}),gv=["fixed","increment","decrement","randomize"];function vv(e){return gv.includes(e)}n(vv,"isControlOption");function la(e){return vv(e)?e:"randomize"}n(la,"normalizeControlOption");function hv(e){e.vueTrack||$a((o,t)=>(e.callback=no(e.callback,t),e.vueTrack=o,{get(){},set(){}}))}n(hv,"widgetWithVueTrack");function yl(e){return hv(e),e.vueTrack(),e.value}n(yl,"useReactiveWidgetValue");function yv(e){const o=e.linkedWidgets?.find(t=>t.name=="control_after_generate");if(o)return{value:la(o.value),update:n(t=>o.value=la(t),"update")}}n(yv,"getControlWidget");function bv(e,o){return!e.isSubgraphNode()||!Ji(o)?void 0:e.subgraph.getNodeById(o._overlay.nodeId)?.type}n(bv,"getNodeType");const wv=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 bl(e,o){const t=_t();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=wv(u);s.value=p??void 0,s.callback?.(p,J.canvas,e),e.widgets?.forEach(g=>g.triggerDraw?.())},"callback");return{name:s.name,type:s.type,value:yl(s),borderStyle:i,callback:r,controlWidget:yv(s),hasLayoutSize:typeof s.computeLayoutSize=="function",isDOMWidget:ho(s),label:s.label,nodeType:bv(e,s),options:s.options,spec:l,slotMetadata:a}}catch{return{name:s.name||"unknown",type:s.type||"text",value:void 0}}}}n(bl,"safeWidgetMapper");function kv(e){return e==null||typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="object"}n(kv,"isValidWidgetValue");function Cv(e){const{createNode:o,deleteNode:t,setSource:s}=an(),l=Na(new Map),a=new Map,i=n(h=>{const k=a.get(h),b=l.get(h);if(!k||!b)return;const N=new Map;k.inputs?.forEach((S,I)=>{S?.widget?.name&&N.set(S.widget.name,{index:I,linked:S.link!=null})});for(const S of b.widgets??[]){const I=N.get(S.name);I&&(S.slotMetadata=I)}},"refreshNodeSlots");function r(h){const k=h.graph&&"id"in h.graph&&h.graph!==h.graph.rootGraph?String(h.graph.id):null,b=new Map,N=$s(h.widgets??[]);Object.defineProperty(h,"widgets",{get(){return N},set(M){N.splice(0,N.length,...M)}});const S=$s(h.inputs??[]);Object.defineProperty(h,"inputs",{get(){return S},set(M){S.splice(0,S.length,...M)}});const I=zl(()=>(h.inputs?.forEach((M,P)=>{M?.widget?.name&&b.set(M.widget.name,{index:P,linked:M.link!=null})}),h.widgets?.map(bl(h,b))??[])),_=h.type||h.constructor?.comfyClass||h.constructor?.title||h.constructor?.name||"Unknown",x=h.constructor?.nodeData?.api_node??!1,T=h.badges;return{id:String(h.id),title:typeof h.title=="string"?h.title:"",type:_,mode:h.mode||0,titleMode:h.title_mode,selected:h.selected||!1,executing:!1,subgraphId:k,apiNode:x,badges:T,hasErrors:!!h.has_errors,widgets:I,inputs:S,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(k=>String(k.id)));for(const k of Array.from(l.keys()))h.has(k)||(a.delete(k),l.delete(k));e._nodes.forEach(k=>{const b=String(k.id);a.set(b,k),l.set(b,r(k))})},"syncWithGraph"),g=n((h,k)=>{const b=String(h.id);a.set(b,h),l.set(b,r(h));const N=n(()=>{const S={x:h.pos[0],y:h.pos[1]},I={width:h.size[0],height:h.size[1]};s(ko.Canvas),o(b,{position:S,size:I,zIndex:h.order||0,visible:!0})},"initializeVueNodeLayout");window.app?.configuringGraph?h.onAfterGraphConfigured=no(h.onAfterGraphConfigured,()=>{l.set(b,r(h)),N()}):N(),k&&k(h)},"handleNodeAdded"),v=n((h,k)=>{const b=String(h.id);s(ko.Canvas),t(b),a.delete(b),l.delete(b),k&&k(h)},"handleNodeRemoved"),f=n((h,k,b)=>()=>{e.onNodeAdded=h||void 0,e.onNodeRemoved=k||void 0,e.onTrigger=b||void 0,a.clear(),l.clear()},"createCleanupFunction"),w=n(()=>{const h=e.onNodeAdded,k=e.onNodeRemoved,b=e.onTrigger;e.onNodeAdded=S=>{g(S,h)},e.onNodeRemoved=S=>{v(S,k)};const N={"node:property:changed":n(S=>{const I=String(S.nodeId),_=l.get(I);if(_)switch(S.property){case"title":l.set(I,{..._,title:String(S.newValue)});break;case"flags.collapsed":l.set(I,{..._,flags:{..._.flags,collapsed:!!S.newValue}});break;case"flags.pinned":l.set(I,{..._,flags:{..._.flags,pinned:!!S.newValue}});break;case"mode":l.set(I,{..._,mode:typeof S.newValue=="number"?S.newValue:0});break;case"color":l.set(I,{..._,color:typeof S.newValue=="string"?S.newValue:void 0});break;case"bgcolor":l.set(I,{..._,bgcolor:typeof S.newValue=="string"?S.newValue:void 0});break;case"shape":l.set(I,{..._,shape:typeof S.newValue=="number"?S.newValue:void 0})}},"node:property:changed"),"node:slot-errors:changed":n(S=>{i(String(S.nodeId))},"node:slot-errors:changed"),"node:slot-links:changed":n(S=>{S.slotType===Xi.INPUT&&i(String(S.nodeId))},"node:slot-links:changed")};return e.onTrigger=S=>{switch(S.type){case"node:property:changed":N["node:property:changed"](S);break;case"node:slot-errors:changed":N["node:slot-errors:changed"](S);break;case"node:slot-links:changed":N["node:slot-links:changed"](S);break}b?.(S)},p(),f(h||void 0,k||void 0,b||void 0)},"setupEventListeners")();return e._nodes&&e._nodes.length>0&&e._nodes.forEach(h=>{e.onNodeAdded&&e.onNodeAdded(h)}),{vueNodeData:l,getNode:u,cleanup:w}}n(Cv,"useGraphNodeManager");const xv={class:"flex flex-col bg-interface-panel-surface"},Sv={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl bg-inherit"},_v=["disabled"],Tv={class:"text-sm font-semibold line-clamp-2"},$v={key:0,class:"pb-4"},Nv=q({__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",xv,[c("div",Sv,[de((d(),$("button",{type:"button",class:K(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",Tv,[ye(t.$slots,"label")]),t.isEmpty?E("",!0):(d(),$("i",{key:0,class:K(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,_v)),[[l,t.isEmpty?{value:t.$t("rightSidePanel.inputsNoneTooltip"),showDelay:1e3}:void 0]])]),!o.value&&!t.isEmpty?(d(),$("div",$v,[ye(t.$slots,"default")])):E("",!0)])}}}),Iv={key:0,class:"space-y-4 rounded-lg bg-interface-surface px-4"},Mv={class:"min-h-8"},Pv={key:0,class:"text-sm leading-8 p-0 m-0 line-clamp-1"},Dv=q({__name:"SectionWidgets",props:{label:{},widgets:{}},setup(e){en("hideLayoutField",!0);const o=he(),{t}=pe();function s(r){return er(r.type,r.name)||tr}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(Nv,{"is-empty":a.value},{label:A(()=>[ye(r.$slots,"label",{},()=>[$e(V(i.value),1)])]),default:A(()=>[a.value?E("",!0):(d(),$("div",Iv,[(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",Mv,[p.name?(d(),$("p",Pv,V(p.label||p.name),1)):E("",!0)]),(d(),R(oo(s(p)),{widget:p,"model-value":m(yl)(p),"node-id":String(g.id),"node-type":g.type,class:K(m(ne)("col-span-1",m(Zi)(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"]))}}),Av={class:"px-4 pb-4 flex gap-2 border-b border-interface-stroke"},Lv=q({__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",Av,[O(hl,{searcher:s,"update-key":o.value},null,8,["update-key"])]),(d(!0),$(oe,null,be(t.value,i=>(d(),R(Dv,{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))}}),Ev=["disabled","onClick"],Vv=q({__name:"FormSelectButton",props:{modelValue:{},options:{},optionLabel:{default:"label"},optionValue:{default:"value"},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:o}){const t=e,s=o,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:K(m(ne)(m(fu),"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:K(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,Ev))),128))],2))}}),Ov={class:"space-y-4 p-3 text-sm text-muted-foreground"},Rv={class:"flex flex-col gap-2"},Wv={class:"flex flex-col gap-2"},zv={class:"bg-secondary-background border-none rounded-lg p-1 grid grid-cols-5 gap-1 justify-items-center"},Bv=["onClick"],Fv=["data-testid"],Uv={class:"flex items-center justify-between"},Gv=q({__name:"TabSettings",props:{nodes:{}},setup(e){const o=e,t=Ze([]);ke(()=>{o.nodes?t.value=o.nodes:t.value=[]});const{t:s}=pe(),l=he(),a=dt(),i=y(()=>a.completedActivePalette.light_theme),r=y({get(){let w=null;const h=t.value;return h.length===0?null:(h.length>1?(w=h[0].mode,h.every(k=>k.mode===w)||(w=null)):w=h[0].mode,w)},set(w){t.value.forEach(h=>{h.mode=w}),vo(t),l.canvas?.setDirty(!0,!0)}}),u=y({get(){return t.value.some(w=>w.pinned)},set(w){t.value.forEach(h=>h.pin(w)),vo(t),l.canvas?.setDirty(!0,!0)}});function p(w){return{dark:Vt(w,{lightness:.3}),light:Vt(w,{lightness:.4}),ringDark:Vt(w,{lightness:.5}),ringLight:Vt(w,{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(([w,h])=>({name:w,localizedName:n(()=>s(`color.${w}`),"localizedName"),value:p(h.bgcolor)}))],C=y({get(){if(t.value.length===0)return null;const w=t.value.map(k=>k.getColorOption());let h=w[0];return w.every(k=>k===h)||(h=!1),h===!1?null:h==null||!h.bgcolor&&!h.color?g.name:v.find(([k,b])=>b.bgcolor===h.bgcolor&&b.color===h.color)?.[0]??null},set(w){if(w===null)return;const h=w===g.name?null:Ye.node_colors[w];for(const k of t.value)k.setColorOption(h);vo(t),l.canvas?.setDirty(!0,!0)}});return(w,h)=>{const k=Ie("tooltip");return d(),$("div",Ov,[c("div",Rv,[c("span",null,V(m(s)("rightSidePanel.nodeState")),1),O(Vv,{modelValue:r.value,"onUpdate:modelValue":h[0]||(h[0]=b=>r.value=b),class:"w-full",options:[{label:m(s)("rightSidePanel.normal"),value:m(We).ALWAYS},{label:m(s)("rightSidePanel.bypass"),value:m(We).BYPASS},{label:m(s)("rightSidePanel.mute"),value:m(We).NEVER}]},null,8,["modelValue","options"])]),c("div",Wv,[c("span",null,V(m(s)("rightSidePanel.color")),1),c("div",zv,[(d(),$(oe,null,be(f,b=>c("button",{key:b.name,class:K(m(ne)("size-8 rounded-lg bg-transparent border-0 outline-0 ring-0 text-left flex justify-center items-center cursor-pointer",b.name===C.value?"bg-interface-menu-component-surface-selected":"hover:bg-interface-menu-component-surface-selected")),onClick:n(N=>C.value=b.name,"onClick")},[de(c("div",{class:K(m(ne)("size-4 rounded-full ring-2 ring-gray-500/10")),style:ve({backgroundColor:i.value?b.value.light:b.value.dark,"--tw-ring-color":b.name===C.value?i.value?b.value.ringLight:b.value.ringDark:void 0}),"data-testid":b.name},null,14,Fv),[[k,b.localizedName(),void 0,{top:!0}]])],10,Bv)),64))])]),c("div",Uv,[c("span",null,V(m(s)("rightSidePanel.pinned")),1),O(m(Ra),{modelValue:u.value,"onUpdate:modelValue":h[1]||(h[1]=b=>u.value=b)},null,8,["modelValue"])])])}}}),Hv={class:"pointer-events-none flex-1"},jv={class:"text-xs text-text-secondary line-clamp-1"},qv={class:"text-sm line-clamp-1 leading-8"},Kv={key:0,class:"size-4 pointer-events-none icon-[lucide--grip-vertical]"},ia=q({__name:"SubgraphNodeWidget",props:{nodeTitle:{},widgetName:{},isDraggable:{type:Boolean},isPhysical:{type:Boolean},class:{type:[Array,Object,String,Number,null,Boolean]}},emits:["toggleVisibility"],setup(e){const o=e;function t(){return o.isPhysical?"icon-[lucide--link]":o.isDraggable?"icon-[lucide--eye]":"icon-[lucide--eye-off]"}return n(t,"getIcon"),(s,l)=>(d(),$("div",{class:K(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",Hv,[c("div",jv,V(s.nodeTitle),1),c("div",qv,V(s.widgetName),1)]),O(Z,{variant:"muted-textonly",size:"sm",disabled:s.isPhysical,onClick:l[0]||(l[0]=Ce(a=>s.$emit("toggleVisibility"),["stop"]))},{default:A(()=>[c("i",{class:K(t())},null,2)]),_:1},8,["disabled"]),s.isDraggable?(d(),$("div",Kv)):E("",!0)],2))}}),Qv={key:0,class:"subgraph-edit-section flex h-full flex-col"},Yv={class:"p-4 flex gap-2"},Jv={class:"flex-1"},Xv={key:0,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={key:1,class:"flex flex-col border-t border-interface-stroke"},oh={class:"sticky top-0 z-10 flex items-center justify-between backdrop-blur-xl min-h-12 px-4"},nh={class:"text-sm font-semibold uppercase line-clamp-1"},sh={class:"pb-2 px-2 space-y-0.5 mt-0.5"},ah={key:2,class:"flex justify-center border-t border-interface-stroke py-4"},lh=q({__name:"SubgraphEditor",setup(e){const o=he(),t=L(void 0),s=L(),l=L(""),a=$a((x,T)=>({get(){x();const M=r.value;return M?or(M.properties.proxyWidgets):[]},set(M){T();const P=r.value;if(M){if(!P){console.error("Attempted to toggle widgets with no node selected");return}P.properties.proxyWidgets=M}}}));async function i(x){l.value=x}n(i,"searcher");const r=y(()=>{const x=o.selectedItems[0];if(x instanceof ts)return x}),u=y({get(){if(!r.value)return[];const x=r.value;function T([M,P]){if(M==="-1"){const z=x.widgets.find(G=>G.name===P);return z?[[{id:-1,title:"(Linked)",type:""},z]]:[]}const B=x.subgraph._nodes_by_id[M];if(!B?.widgets)return[];const H=B.widgets.find(z=>z.name===P);return H?[[B,H]]:[]}return n(T,"mapWidgets"),a.value.flatMap(T)},set(x){if(!r.value){console.error("Attempted to toggle widgets with no node selected");return}a.value=x.map(un)}}),p=y(()=>{const x=r.value;if(!x)return[];const{updatePreviews:T}=_o(),M=x.subgraph.nodes;for(const P of M)P.updateComputedDisabled(),T(P);return M.flatMap(h).filter(([P,B])=>!B.computedDisabled)}),g=y(()=>{if(!r.value)return[];const T=a.value;return p.value.filter(M=>!T.some(nr(M)))}),v=y(()=>{const x=l.value.toLowerCase();return x?g.value.filter(([T,M])=>T.title.toLowerCase().includes(x)||M.name.toLowerCase().includes(x)):g.value}),f=y(()=>r.value?v.value.filter(sr):[]),C=y(()=>{const x=l.value.toLowerCase();return x?u.value.filter(([T,M])=>T.title.toLowerCase().includes(x)||M.name.toLowerCase().includes(x)):u.value});function w(x){return`${x[0].id}: ${x[1].name}`}n(w,"toKey");function h(x){return x.widgets?x.widgets.map(T=>[x,T]):[]}n(h,"nodeWidgets");function k([x,T]){const M=r.value;if(!M)return[];lr(x,T,[M]),vo(a)}n(k,"demote");function b([x,T]){const M=r.value;if(!M)return[];ir(x,T,[M]),vo(a)}n(b,"promote");function N(){if(!r.value)return;const T=a.value,M=v.value.map(un);T.push(...M),a.value=T}n(N,"showAll");function S(){r.value&&(a.value=a.value.filter(T=>!C.value.some(rr(T))||T[0]==="-1"))}n(S,"hideAll");function I(){if(!r.value)return;const T=a.value,M=f.value.map(un);T.push(...M),a.value=T}n(I,"showRecommended");function _(){t.value?.dispose(),!(l.value||!s.value?.children?.length)&&(t.value=new ur(s.value,".draggable-item"),t.value.applyNewItemsOrder=function(){const x=[];let T=-1;this.getAllItems().forEach((H,z)=>{if(H===this.draggableItem){T=z;return}if(!this.isItemToggled(H)){x[z]=H;return}const G=this.isItemAbove(H)?z+1:z-1;x[G]=H});for(let H=0;H<this.getAllItems().length;H++)typeof x[H]>"u"&&(x[H]=this.draggableItem);const M=x.indexOf(this.draggableItem),P=u.value,[B]=P.splice(T,1);P.splice(M,0,B),u.value=P})}return n(_,"setDraggableState"),Xt(C,()=>{_()},{debounce:100}),ze(()=>{_(),r.value&&ar(r.value)}),rt(()=>{t.value?.dispose()}),(x,T)=>r.value?(d(),$("div",Qv,[c("div",Yv,[O(hl,{searcher:i})]),c("div",Jv,[C.value.length?(d(),$("div",Xv,[c("div",Zv,[c("div",eh,V(x.$t("subgraphStore.shown")),1),c("a",{class:"cursor-pointer text-right text-xs font-normal text-text-secondary hover:text-azure-600 whitespace-nowrap",onClick:Ce(S,["stop"])},V(x.$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(C.value,([M,P])=>(d(),R(ia,{key:w([M,P]),class:"bg-interface-panel-surface","node-title":M.title,"widget-name":P.name,"is-shown":!0,"is-draggable":!l.value,"is-physical":M.id===-1,onToggleVisibility:n(B=>k([M,P]),"onToggleVisibility")},null,8,["node-title","widget-name","is-draggable","is-physical","onToggleVisibility"]))),128))],512)])):E("",!0),v.value.length?(d(),$("div",th,[c("div",oh,[c("div",nh,V(x.$t("subgraphStore.hidden")),1),c("a",{class:"cursor-pointer text-right text-xs font-normal text-text-secondary hover:text-azure-600 whitespace-nowrap",onClick:Ce(N,["stop"])},V(x.$t("subgraphStore.showAll")),1)]),c("div",sh,[(d(!0),$(oe,null,be(v.value,([M,P])=>(d(),R(ia,{key:w([M,P]),class:"bg-interface-panel-surface","node-title":M.title,"widget-name":P.name,onToggleVisibility:n(B=>b([M,P]),"onToggleVisibility")},null,8,["node-title","widget-name","onToggleVisibility"]))),128))])])):E("",!0),f.value.length?(d(),$("div",ah,[O(Z,{size:"sm",class:"rounded border-none px-3 py-0.5",onClick:Ce(I,["stop"])},{default:A(()=>[$e(V(x.$t("subgraphStore.showRecommended")),1)]),_:1})])):E("",!0)])])):E("",!0)}}),ih={"data-testid":"properties-panel",class:"flex size-full flex-col bg-interface-panel-surface"},rh={class:"pt-1"},uh={class:"flex items-center justify-between pl-4 pr-3"},ch={class:"my-3.5 text-sm font-semibold line-clamp-2"},dh={class:"flex gap-2"},ph={key:0,class:"px-4 pb-2 pt-1"},fh={class:"scrollbar-thin flex-1 overflow-y-auto"},mh={key:0,class:"flex size-full p-4 items-start justify-start text-sm text-muted-foreground"},gh=q({__name:"RightSidePanel",setup(e){const o=he(),t=lo(),s=re(),{t:l}=pe(),{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(()=>w.value instanceof ts),C=y(()=>v.value.length===1),w=y(()=>C.value?v.value[0]:null),h=y(()=>a.value.length),k=y(()=>C.value&&w.value?w.value.title||w.value.type||"Node":l("rightSidePanel.title",{count:h.value}));function b(){t.closePanel()}n(b,"closePanel");const N=y(()=>{const x=[{label:n(()=>l("rightSidePanel.parameters"),"label"),value:"parameters"},{label:n(()=>l("g.settings"),"label"),value:"settings"}];return(!g.value||C.value&&!f.value)&&x.push({label:n(()=>l("rightSidePanel.info"),"label"),value:"info"}),x});ke(()=>{!N.value.some(x=>x.value===i.value)&&!(i.value==="subgraph"&&f.value)&&t.openPanel(N.value[0].value)});const S=L(!1);function I(x){S.value=!1;const T=x.trim();if(!T)return;const M=je(w);M&&T!==M.title&&(M.title=T,o.canvas?.setDirty(!0,!1))}n(I,"handleTitleEdit");function _(){S.value=!1}return n(_,"handleTitleCancel"),(x,T)=>(d(),$("div",ih,[c("section",rh,[c("div",uh,[c("h3",ch,[C.value?(d(),R(jn,{key:0,"model-value":k.value,"is-editing":S.value,"input-attrs":{"data-testid":"node-title-input"},onEdit:I,onCancel:_,onDblclick:T[0]||(T[0]=M=>S.value=!0)},null,8,["model-value","is-editing"])):(d(),$(oe,{key:1},[$e(V(k.value),1)],64))]),c("div",dh,[f.value?(d(),R(Z,{key:0,variant:"secondary",size:"icon",class:K(m(ne)(m(r)&&"bg-secondary-background-selected")),onClick:T[1]||(T[1]=M=>m(t).openPanel(m(r)?"parameters":"subgraph"))},{default:A(()=>T[3]||(T[3]=[c("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["class"])):E("",!0),O(Z,{variant:"secondary",size:"icon","aria-pressed":m(t).isOpen,"aria-label":m(l)("rightSidePanel.togglePanel"),onClick:b},{default:A(()=>[c("i",{class:K(m(ne)(p.value,"size-4"))},null,2)]),_:1},8,["aria-pressed","aria-label"])])]),g.value?(d(),$("nav",ph,[O(cr,{"model-value":m(i),"onUpdate:modelValue":T[2]||(T[2]=M=>{m(t).openPanel(M)})},{default:A(()=>[(d(!0),$(oe,null,be(N.value,M=>(d(),R(dr,{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",fh,[g.value?f.value&&m(r)?(d(),R(lh,{key:1,node:w.value},null,8,["node"])):(d(),$(oe,{key:2},[m(i)==="parameters"?(d(),R(Lv,{key:0,nodes:v.value},null,8,["nodes"])):m(i)==="info"?(d(),R(fv,{key:1,nodes:v.value},null,8,["nodes"])):m(i)==="settings"?(d(),R(Gv,{key:2,nodes:v.value},null,8,["nodes"])):E("",!0)],64)):(d(),$("div",mh,V(x.$t("rightSidePanel.noSelection")),1))])]))}}),hs=Dt("searchBox",()=>{const e=re(),{x:o,y:t}=Bl(),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}}),vh={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)}}},hh={class:"option-container flex w-full cursor-pointer items-center justify-between overflow-hidden px-2 py-0"},yh={class:"option-display-name flex flex-col font-semibold"},bh={key:0},wh=["innerHTML"],kh=["innerHTML"],Ch={key:0,class:"option-category truncate text-sm font-light text-muted"},xh={class:"option-badges"},Sh=q({__name:"NodeSearchItem",props:{nodeDef:{},currentQuery:{}},setup(e){const o=re(),t=y(()=>o.get("Comfy.NodeSearchBoxImpl.ShowCategory")),s=y(()=>o.get("Comfy.NodeSearchBoxImpl.ShowIdName")),l=y(()=>o.get("Comfy.NodeSearchBoxImpl.ShowNodeFrequency")),a=as(),i=y(()=>a.getNodeFrequency(p.nodeDef)),r=pr(),u=y(()=>r.isBookmarked(p.nodeDef)),p=e;return(g,v)=>(d(),$("div",hh,[c("div",yh,[c("div",null,[u.value?(d(),$("span",bh,v[0]||(v[0]=[c("i",{class:"pi pi-bookmark-fill mr-1 text-sm"},null,-1)]))):E("",!0),c("span",{innerHTML:m(Os)(g.nodeDef.display_name,g.currentQuery)},null,8,wh),v[1]||(v[1]=c("span",null," ",-1)),s.value?(d(),R(m(Zt),{key:1,severity:"secondary"},{default:A(()=>[c("span",{innerHTML:m(Os)(g.nodeDef.name,g.currentQuery)},null,8,kh)]),_:1})):E("",!0)]),t.value?(d(),$("div",Ch,V(g.nodeDef.category.replaceAll("/"," > ")),1)):E("",!0)]),c("div",xh,[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(fr)(i.value,{roundToInt:!0}),severity:"secondary"},null,8,["value"])):E("",!0),g.nodeDef.nodeSource.type!==m(mr).Unknown?(d(),R(m(ci),{key:3,class:"text-sm font-light"},{default:A(()=>[$e(V(g.nodeDef.nodeSource.displayText),1)]),_:1})):E("",!0)])]))}}),_h=Le(Sh,[["__scopeId","data-v-acda36a0"]]),Th={class:"comfy-vue-node-search-container flex w-full min-w-96 items-center justify-center"},$h={class:"_dialog-body"},Nh=q({__name:"NodeSearchBox",props:{filters:{},searchLimit:{default:64}},emits:["addFilter","removeFilter","addNode"],setup(e,{emit:o}){const t=re(),{t:s}=pe(),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=_t(),C=as(),w=tn(T=>{T.trim()},500),h=n(T=>{const M=T===""&&e.filters.length===0;g.value=T,u.value=M?C.topNodeDefs:[...f.nodeSearchService.searchNode(T,e.filters,{limit:e.searchLimit})],w(T)},"search"),k=o,b=n(T=>{k("addNode",T)},"onAddNode");let N=null;const S=n(async()=>{N??=document.getElementById(r),N&&(N.blur(),await Fe(()=>N?.focus()))},"reFocusInput");ze(()=>{N??=document.getElementById(r),N&&N.focus(),a.value.hide=()=>h(""),h(""),a.value.show()});const I=n(T=>{i.value=!1,k("addFilter",T)},"onAddFilter"),_=n(async(T,M)=>{T.stopPropagation(),T.preventDefault(),k("removeFilter",M),await S()},"onRemoveFilter"),x=n(T=>{if(T===-1){p.value=null;return}const M=u.value[T];p.value=M},"setHoverSuggestion");return(T,M)=>(d(),$("div",Th,[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]=Ce(P=>b(p.value),["stop"]))},[(d(),R(gr,{key:p.value?.name||"","node-def":p.value},null,8,["node-def"]))],32)):E("",!0),O(Z,{variant:"secondary","aria-label":T.$t("g.addNodeFilterCondition"),class:"filter-button z-10",onClick:M[1]||(M[1]=P=>i.value=!0)},{default:A(()=>M[6]||(M[6]=[c("i",{class:"pi pi-filter"},null,-1)])),_:1},8,["aria-label"]),O(m(Wa),{visible:i.value,"onUpdate:visible":M[2]||(M[2]=P=>i.value=P),class:"min-w-96","dismissable-mask":"",modal:"",onHide:S},{header:A(()=>[c("h3",null,V(T.$t("g.addNodeFilterCondition")),1)]),default:A(()=>[c("div",$h,[O(vr,{onAddFilter:I})])]),_:1},8,["visible"]),O(vh,{ref_key:"autoCompletePlus",ref:a,"model-value":T.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(C).isLoaded,"complete-on-focus":"","auto-option-focus":"","force-selection":"",multiple:"","option-label":"display_name",onComplete:M[3]||(M[3]=P=>h(P.query)),onOptionSelect:M[4]||(M[4]=P=>b(P.value)),onFocusedOptionChanged:M[5]||(M[5]=P=>x(P))},{option:A(({option:P})=>[O(_h,{"node-def":P,"current-query":g.value},null,8,["node-def","current-query"])]),chip:A(({value:P})=>[P.filterDef&&P.value?(d(),R(hr,{key:`${P.filterDef.id}-${P.value}`,text:P.value,badge:P.filterDef.invokeSequence.toUpperCase(),"badge-class":P.filterDef.invokeSequence+"-badge",onRemove:n(B=>_(B,P),"onRemove")},null,8,["text","badge","badge-class","onRemove"])):E("",!0)]),_:1},8,["model-value","placeholder","suggestions","loading"])]))}}),Ih=q({__name:"NodeSearchBoxPopover",setup(e,{expose:o}){let t=null,s=null,l=!1;const a=re(),i=hs(),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 C(W){f.value.push(W)}n(C,"addFilter");function w(W){f.value=f.value.filter(F=>Ns(F)!==Ns(W))}n(w,"removeFilter");function h(){f.value=[]}n(h,"clearFilters");function k(){u.value=!1}n(k,"closeDialog");const b=he();function N(W){const F=r.addNodeOnGraph(W,{pos:v()});l&&t?b.getCanvas().linkConnector.connectToNode(F,t):t||console.warn("The trigger event was undefined when addNode was called."),l=!1,Re().activeWorkflow?.changeTracker?.checkState(),window.requestAnimationFrame(k)}n(N,"addNode");function S(W){p.value?W?.pointerType==="touch"?setTimeout(()=>{x(W)},128):x(W):b.getCanvas().showSearchBox(W)}n(S,"showSearchBox");function I(){return b.getCanvas().linkConnector.renderLinks.at(0)}n(I,"getFirstLink");const _=_t();function x(W){const F=I();if(F){const Q=F.toType==="input"?_.nodeSearchService.inputTypeFilter:_.nodeSearchService.outputTypeFilter,j=F.fromSlot.type?.toString()??"";C({filterDef:Q,value:j})}u.value=!0,t=W,g.value=!1,setTimeout(()=>{g.value=!0},300)}n(x,"showNewSearchBox");function T(W){const F=I();if(!F)return;const{node:Q,fromSlot:j,toType:Y}=F,te={e:W,allow_searchbox:!0,showSearchBox:n(()=>{Ve(),S(W)},"showSearchBox")},X=F.fromReroute?.id,ae=Y==="input"?{nodeFrom:Q,slotFrom:j,afterRerouteId:X}:{nodeTo:Q,slotTo:j,afterRerouteId:X},le=b.getCanvas(),Ne=le.showConnectionMenu({...ae,...te});if(!Ne){console.warn("No menu was returned from showConnectionMenu");return}t=W,s=new AbortController;const{signal:Ue}=s,Qe={once:!0,signal:Ue};Oe(le.canvas,"connect-new-default-node",_e=>{if(!(_e instanceof CustomEvent))throw new Error("Invalid event");const Be=_e.detail?.node;if(!(Be instanceof vt))throw new Error("Invalid node");l=!1,_e.preventDefault(),le.linkConnector.connectToNode(Be,W)},Qe);const Ve=Oe(Ne.controller.signal,"abort",U,Qe)}n(T,"showContextMenu"),ke(()=>{const{canvas:W}=b;W&&(ge.release_link_on_empty_shows_menu=!1,W.allow_searchbox=!1,Oe(W.linkConnector.events,"dropped-on-canvas",G))});function M(W){if(W.detail.subType==="empty-double-click")S(W.detail.originalEvent);else if(W.detail.subType==="group-double-click"){const F=W.detail.group,[Q,j]=F.pos;W.detail.originalEvent.canvasY-j>F.titleHeight&&S(W.detail.originalEvent)}}n(M,"canvasEventHandler");const P=y(()=>a.get("Comfy.LinkRelease.Action")),B=y(()=>a.get("Comfy.LinkRelease.ActionShift"));function H(W){return W.preventDefault()}n(H,"preventDefault");function z(W){W.preventDefault();const F=b.getCanvas();F.linkConnector.state.snapLinksPos=[W.detail.canvasX,W.detail.canvasY],Oe(F.linkConnector.events,"reset",H,{once:!0})}n(z,"cancelNextReset");function G(W){switch(l=!0,W.detail.shiftKey?B.value:P.value){case wt.SEARCH_BOX:z(W),S(W.detail);break;case wt.CONTEXT_MENU:z(W),T(W.detail);break;case wt.NO_ACTION:}}n(G,"handleDroppedOnCanvas");function U(){s?.abort(),s=null,t=null;const W=b.getCanvas();W.linkConnector.events.removeEventListener("reset",H),l&&W.linkConnector.disconnectLinks(),W.linkConnector.reset(),W.setDirty(!0,!0)}return n(U,"reset"),se(u,()=>{u.value||U()}),Oe(document,"litegraph:canvas",M),o({showSearchBox:S}),(W,F)=>(d(),$("div",null,[O(m(Wa),{visible:m(u),"onUpdate:visible":F[0]||(F[0]=Q=>lt(u)?u.value=Q: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(Nh,{filters:f.value,onAddFilter:C,onRemoveFilter:w,onAddNode:N},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 ys(e="sidebar"){const o=re(),t=co(),s=An(),{isVisible:l,triggerLocation:a}=qe(s),{shouldShowRedDot:i}=qe(t),r=Qa(),{showNodeConflictDialog:u}=yt(),{shouldShowRedDot:p,markConflictsAsSeen:g}=es(),v=y(()=>i.value||p.value),f=y(()=>o.get("Comfy.Sidebar.Location")),C=n(()=>{s.toggle(e)},"toggleHelpCenter"),w=n(()=>{s.hide()},"closeHelpCenter"),h=n(async()=>{try{await r.shouldShowConflictModalAfterUpdate()&&k()}catch(b){console.error("[HelpCenter] Error checking conflict modal:",b)}},"handleWhatsNewDismissed"),k=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:C,closeHelpCenter:w,handleWhatsNewDismissed:h}}n(ys,"useHelpCenter");const Mh={key:0,class:"release-toast-popup"},Ph={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"},Dh={class:"p-4 flex flex-col gap-4 flex-1 min-h-0"},Ah={class:"flex items-center gap-4"},Lh={class:"flex flex-col gap-1"},Eh={class:"text-sm font-normal text-base-foreground leading-[1.429]"},Vh={class:"text-sm font-normal text-muted-foreground leading-[1.21]"},Oh=["innerHTML"],Rh={class:"flex justify-between items-center px-4 pb-4"},Wh=["href"],zh={class:"flex items-center gap-4"},Bh=q({__name:"ReleaseNotificationToast",setup(e,{expose:o}){const{buildDocsUrl:t}=ro(),{toastErrorHandler:s}=Bt(),l=co(),{t:a}=pe(),i=L(!1),r=y(()=>l.recentRelease),u=y(()=>l.shouldShowToast&&!i.value),p=y(()=>{const N=t("/changelog",{includeLocale:!0});if(r.value?.version){const S=ls(r.value.version);return`${N}#${S}`}return N}),g=y(()=>{if(!r.value?.content)return kt.sanitize(`<p>${a("releaseToast.description")}</p>`);try{const I=r.value.content.replace(/^# .+$/m,"").replace(/!\[.*?\]\(.*?\)/g,""),_=I.trim();return!_||_.replace(/\s+/g,"")===""?kt.sanitize(`<p>${a("releaseToast.description")}</p>`):Ya(I)}catch(N){console.error("Error parsing markdown:",N);const S=r.value.content.replace(/\n/g,"<br>");return S.trim()?kt.sanitize(S):kt.sanitize(`<p>${a("releaseToast.description")}</p>`)}});let v=null;const f=n(()=>{v&&clearTimeout(v),v=setTimeout(()=>{w()},8e3)},"startAutoHide"),C=n(()=>{v&&(clearTimeout(v),v=null)},"clearAutoHide"),w=n(()=>{i.value=!0,C()},"dismissToast"),h=n(()=>{r.value&&l.handleSkipRelease(r.value.version),w()},"handleSkip"),k=n(()=>{r.value&&l.handleShowChangelog(r.value.version),w()},"handleLearnMore"),b=n(async()=>{if(Ke()){try{await Se().execute("Comfy-Desktop.CheckForUpdates"),w()}catch(N){s(N)}return}window.open(t("/installation/update_comfyui",{includeLocale:!0}),"_blank"),w()},"handleUpdate");return se(u,N=>{N?f():C()}),ze(async()=>{l.releases.length||await l.fetchReleases()}),o({handleSkip:h,handleLearnMore:k,handleUpdate:b}),(N,S)=>u.value?(d(),$("div",Mh,[c("div",Ph,[c("div",Dh,[c("div",Ah,[S[0]||(S[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",Lh,[c("div",Eh,V(N.$t("releaseToast.newVersionAvailable")),1),c("div",Vh,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,Oh)]),c("div",Rh,[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:k},[S[1]||(S[1]=c("i",{class:"icon-[lucide--external-link] w-4 h-4"},null,-1)),$e(" "+V(N.$t("releaseToast.whatsNew")),1)],8,Wh),c("div",zh,[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(N.$t("releaseToast.skip")),1),c("button",{class:"h-10 px-4 bg-secondary-background hover:bg-secondary-background-hover rounded-lg border-none text-sm font-normal text-base-foreground cursor-pointer",onClick:b},V(N.$t("releaseToast.update")),1)])])])])):E("",!0)}}),Fh=Le(Bh,[["__scopeId","data-v-ba02c61a"]]),Uh={key:0,class:"whats-new-popup-container left-4"},Gh={class:"modal-body flex flex-col gap-4 px-0 pt-0 pb-2 flex-1"},Hh=["innerHTML"],jh={class:"modal-footer flex justify-between items-center gap-4 px-4 pb-4"},qh=["href"],Kh={class:"footer-actions flex items-center gap-4"},Qh=q({__name:"WhatsNewPopup",emits:["whats-new-dismissed"],setup(e,{expose:o,emit:t}){const{buildDocsUrl:s}=ro(),l=co(),{t:a}=pe(),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 k=ls(u.value.version);return`${h}#${k}`}return h}),v=y(()=>{if(!u.value?.content)return kt.sanitize(`<p>${a("whatsNewPopup.noReleaseNotes")}</p>`);try{const h=u.value.content,k=h.trim();if(!k||k.replace(/\s+/g,"")==="")return kt.sanitize(`<p>${a("whatsNewPopup.noReleaseNotes")}</p>`);const b=h.match(/!\[.*?\]\(.*?\)/),N=b?b[0]:"",S=h.replace(/!\[.*?\]\(.*?\)/,"").trim(),I=[N,S].filter(Boolean).join(`
|
|
9
|
+
|
|
10
|
+
`);return Ya(I)}catch(h){console.error("Error parsing markdown:",h);const k=u.value.content.replace(/\n/g,"<br>");return k.trim()?kt.sanitize(k):kt.sanitize(`<p>${a("whatsNewPopup.noReleaseNotes")}</p>`)}}),f=n(()=>{r.value=!1},"show"),C=n(()=>{r.value=!0,i("whats-new-dismissed")},"hide"),w=n(async()=>{u.value&&await l.handleWhatsNewSeen(u.value.version),C()},"closePopup");return ze(async()=>{l.releases.length||await l.fetchReleases()}),o({show:f,hide:C,closePopup:w}),(h,k)=>p.value?(d(),$("div",Uh,[c("div",{class:"whats-new-popup",onClick:k[0]||(k[0]=Ce(()=>{},["stop"]))},[O(Z,{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:w},{default:A(()=>k[1]||(k[1]=[c("i",{class:"icon-[lucide--x]"},null,-1)])),_:1},8,["aria-label"]),c("div",Gh,[c("div",{class:"content-text max-h-96 overflow-y-auto",innerHTML:v.value},null,8,Hh)]),c("div",jh,[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:w},[k[2]||(k[2]=c("i",{class:"icon-[lucide--external-link]"},null,-1)),$e(" "+V(h.$t("whatsNewPopup.learnMore")),1)],8,qh),c("div",Kh,[O(Z,{class:"h-8",size:"sm",variant:"muted-textonly",onClick:w},{default:A(()=>[$e(V(h.$t("whatsNewPopup.later")),1)]),_:1})])])])])):E("",!0)}}),Yh=Le(Qh,[["__scopeId","data-v-98a9f324"]]),Jh=["width","height"],Xh={"clip-path":"url(#clip0_1099_16244)"},Zh=["stroke"],ey=q({__name:"PuzzleIcon",props:{size:{default:16},color:{default:"currentColor"},class:{}},setup(e){const o=y(()=>e.class||"");return(t,s)=>(d(),$("svg",{xmlns:"http://www.w3.org/2000/svg",width:t.size,height:t.size,viewBox:"0 0 16 16",fill:"none",class:K(o.value)},[c("g",Xh,[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,Zh)]),s[0]||(s[0]=c("defs",null,[c("clipPath",{id:"clip0_1099_16244"},[c("rect",{width:"16",height:"16",fill:"white"})])],-1))],10,Jh))}}),ty=["aria-label"],oy={class:"w-full"},ny={class:"flex w-full flex-col gap-2",role:"menubar"},sy=["onClick","onMouseenter","onMouseleave"],ay={class:"help-menu-icon-container"},ly={class:"help-menu-icon"},iy={key:0,class:"menu-red-dot"},ry={class:"menu-label"},uy={key:0,class:"icon-[lucide--external-link] text-primary w-4 h-4 ml-auto"},cy={key:1,class:"pi pi-chevron-right ml-auto"},dy={key:0,class:"submenu-divider"},py=["onClick"],fy={class:"menu-label"},my={key:0,class:"w-full","data-testid":"whats-new-section"},gy={class:"section-description flex items-center gap-2.5 self-stretch px-8 pt-2 pb-2"},vy=["aria-label"],hy=["onClick","onKeydown"],yy={class:"release-content"},by={class:"release-title"},wy=["datetime"],ky={class:"normal-state"},Cy={class:"hover-state"},xy={key:1,class:"help-menu-item",role:"status","aria-live":"polite"},Sy={key:2,class:"help-menu-item",role:"status"},_y=q({__name:"HelpCenterMenuContent",emits:["close"],setup(e,{emit:o}){const t={MINUTE:6e4,HOUR:36e5,DAY:864e5,WEEK:6048e5,MONTH:2592e6,YEAR:31536e6},s={DELAY_MS:100,OFFSET_PX:8,Z_INDEX:10001},{t:l}=pe(),a=Wt(),{staticUrls:i,buildDocsUrl:r}=ro(),u=co(),p=Se(),g=re(),v=L(Date.now()),f=o,C=L(!1),w=L(null),h=L({});let k=null;const b=y(()=>u.releases.length>0),N=y(()=>g.get("Comfy.Notification.ShowVersionUpdates")),{shouldShowRedDot:S}=es(),{isNewManagerUI:I}=gt(),_=y(()=>[{key:"desktop-guide",type:"item",label:l("helpCenter.desktopUserGuide"),visible:Ke(),action:n(()=>{P(r("/installation/desktop",{includeLocale:!0,platform:!0})),f("close")},"action")},{key:"dev-tools",type:"item",label:l("helpCenter.openDevTools"),visible:Ke(),action:n(()=>{Q(),f("close")},"action")},{key:"divider-1",type:"divider",visible:Ke()},{key:"reinstall",type:"item",label:l("helpCenter.reinstall"),visible:Ke(),action:n(()=>{j(),f("close")},"action")}].filter(ae=>ae.visible!==!1)),x=y(()=>!!_.value.length),T=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(()=>{P(r("/",{includeLocale:!0})),f("close")},"action")},{key:"discord",type:"item",icon:"pi pi-discord",label:"Discord",showExternalIcon:!0,action:n(()=>{P(i.discord),f("close")},"action")},{key:"github",type:"item",icon:"icon-[lucide--github]",label:l("helpCenter.github"),showExternalIcon:!0,action:n(()=>{P(i.github),f("close")},"action")}];return X.push({key:"manager",type:"item",icon:ey,label:l("helpCenter.managerExtension"),showRedDot:S.value,action:n(async()=>{await gt().openManager({initialTab:eo.All,showToastOnLegacyError:!1}),f("close")},"action")}),!Ke()&&!Ct&&I.value&&X.push({key:"update-comfyui",type:"item",icon:"icon-[lucide--download]",label:l("helpCenter.updateComfyUI"),action:n(()=>{Y(),f("close")},"action")}),X.push({key:"more",type:"item",icon:"",label:l("helpCenter.more"),visible:x.value,action:n(()=>{},"action"),items:_.value}),X}),P=n(X=>{window.open(X,"_blank","noopener,noreferrer")},"openExternalLink"),B=n(()=>{k&&(clearTimeout(k),k=null)},"clearHoverTimeout"),H=n(X=>{const ae=X.getBoundingClientRect(),le=210,Ue=(T.value?.items?.filter(bt=>bt.visible!==!1).length||0)*48+16,Qe=w.value?.offsetHeight||Ue,Ve=window.innerWidth,_e=window.innerHeight;let Be=ae.top,Je=ae.right+s.OFFSET_PX;return Je+le>Ve&&(Je=ae.left-le-s.OFFSET_PX),Be+Qe>_e&&(Be=Math.max(s.OFFSET_PX,ae.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"),z=n(X=>{if(!X)return"date";const ae=new Date(X),Ne=Math.abs(new Date().getTime()-ae.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 _e=Math.floor(Ne/Qe);if(_e>0)return l(`g.relativeTime.${Ve}`,{count:_e})}return l("g.relativeTime.now")},"formatReleaseDate"),G=n(async(X,ae)=>{if(X!=="more"||!T.value?.items||!T.value.items.some(Ue=>Ue.visible!==!1))return;B();const Ne=ae.currentTarget;h.value=H(Ne),C.value=!0,await Fe(),w.value&&(h.value=H(Ne))},"onMenuItemHover"),U=n(X=>{X==="more"&&(k=window.setTimeout(()=>{C.value=!1},s.DELAY_MS))},"onMenuItemLeave"),W=n(()=>{B()},"onSubmenuHover"),F=n(()=>{C.value=!1},"onSubmenuLeave"),Q=n(()=>{Ke()&&yo().openDevTools()},"openDevTools"),j=n(()=>{Ke()&&yo().reinstall()},"onReinstall"),Y=n(async()=>{const{updateComfyUI:X,rebootComfyUI:ae,error:le}=Ja();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 ae()}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 ae=ls(X.version),le=`${r("/changelog",{includeLocale:!0})}#${ae}`;P(le),f("close")},"onReleaseClick");return ze(async()=>{b.value||await u.fetchReleases()}),rt(()=>{Math.round((Date.now()-v.value)/1e3)}),(X,ae)=>(d(),$("div",{class:"help-center-menu flex flex-col items-start gap-1",role:"menu","aria-label":X.$t("help.helpCenterMenu")},[c("div",oy,[c("nav",ny,[(d(!0),$(oe,null,be(M.value,le=>de((d(),$("button",{key:le.key,type:"button",class:K(["help-menu-item",{"more-item":le.key==="more"}]),role:"menuitem",onClick:le.action,onMouseenter:n(Ne=>G(le.key,Ne),"onMouseenter"),onMouseleave:n(Ne=>U(le.key),"onMouseleave")},[c("div",ay,[c("div",ly,[typeof le.icon=="object"?(d(),R(oo(le.icon),{key:0,size:16})):(d(),$("i",{key:1,class:K(le.icon)},null,2))]),le.showRedDot?(d(),$("div",iy)):E("",!0)]),c("span",ry,V(le.label),1),le.showExternalIcon?(d(),$("i",uy)):E("",!0),le.key==="more"?(d(),$("i",cy)):E("",!0)],42,sy)),[[Xe,le.visible!==!1]])),128))]),ae[0]||(ae[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(It,{to:"body"},[C.value?(d(),$("div",{key:0,ref_key:"submenuRef",ref:w,class:"more-submenu",style:ve(h.value),onMouseenter:W,onMouseleave:F},[(d(!0),$(oe,null,be(T.value?.items,le=>(d(),$(oe,{key:le.key},[le.type==="divider"?de((d(),$("div",dy,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",fy,V(le.label),1)],8,py)),[[Xe,le.visible!==!1]])],64))),128))],36)):E("",!0)])),N.value?(d(),$("section",my,[c("h3",gy,V(X.$t("helpCenter.whatsNew")),1),b.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(Ce(Ne=>te(le),["prevent"]),["space"])]},[ae[1]||(ae[1]=c("i",{class:"help-menu-icon icon-[lucide--package]","aria-hidden":"true"},null,-1)),c("div",yy,[c("span",by,V(X.$t("g.releaseTitle",{package:"Comfy",version:le.version})),1),c("time",{class:"release-date",datetime:le.published_at},[c("span",ky,V(z(le.published_at)),1),c("span",Cy,V(X.$t("helpCenter.clickToLearnMore")),1)],8,wy)])],40,hy))),128))],8,vy)):m(u).isLoading?(d(),$("div",xy,[ae[2]||(ae[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",Sy,[ae[3]||(ae[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,ty))}}),Ty=Le(_y,[["__scopeId","data-v-8ecd06e2"]]),$y=q({__name:"HelpCenterPopups",props:{isSmall:{type:Boolean,default:!1}},setup(e){const{isHelpCenterVisible:o,triggerLocation:t,sidebarLocation:s,closeHelpCenter:l,handleWhatsNewDismissed:a}=ys();return(i,r)=>(d(),$(oe,null,[(d(),R(It,{to:"#graph-canvas-container"},[m(o)?(d(),$("div",{key:0,class:K(["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(Ty,{onClose:m(l)},null,8,["onClose"])],2)):E("",!0)])),(d(),R(It,{to:"#graph-canvas-container"},[O(Fh,{class:K({"sidebar-left":m(s)==="left","sidebar-right":m(s)==="right","small-sidebar":i.isSmall})},null,8,["class"])])),(d(),R(It,{to:"#graph-canvas-container"},[O(Yh,{class:K({"sidebar-left":m(s)==="left","sidebar-right":m(s)==="right","small-sidebar":i.isSmall}),onWhatsNewDismissed:m(a)},null,8,["class","onWhatsNewDismissed"])])),(d(),R(It,{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))}}),Ny=Le($y,[["__scopeId","data-v-2583d84f"]]),Iy=["width","height"],My=q({__name:"ComfyLogo",props:{size:{default:16},color:{default:"currentColor"},class:{},mode:{default:"outline"}},setup(e){const o=y(()=>e.class||""),t=y(()=>({stroke:e.mode==="outline"?e.color:void 0,strokeWidth:e.mode==="outline"?1:void 0,fill:e.mode==="fill"?e.color:"none"}));return(s,l)=>(d(),$("svg",{class:K(o.value),width:s.size,height:s.size,viewBox:"0 0 18 18",xmlns:"http://www.w3.org/2000/svg"},[c("path",St({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,Iy))}}),Wo=q({__name:"CardBottom",props:{fullHeight:{type:Boolean,default:!0}},setup(e){const o=y(()=>ne("flex-1 w-full",e.fullHeight&&"h-full"));return(t,s)=>(d(),$("div",{class:K(o.value)},[ye(t.$slots,"default")],2))}}),Py="flex flex-col overflow-hidden",zo=q({__name:"CardContainer",props:{size:{default:"regular"},variant:{default:"default"},rounded:{default:"md"},customAspectRatio:{},hasBorder:{type:Boolean,default:!0},hasBackground:{type:Boolean,default:!0},hasShadow:{type:Boolean,default:!0},hasCursor:{type:Boolean,default:!0},class:{default:""}},setup(e){const o={none:"rounded-none",md:"rounded",lg:"rounded-lg",xl:"rounded-xl"},t=y(()=>{const s={default: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(Py,o[e.rounded],s[e.variant],l,e.class)});return(s,l)=>(d(),$("div",{class:K(t.value)},[ye(s.$slots,"top"),ye(s.$slots,"bottom")],2))}}),Bo=q({__name:"CardTop",props:{ratio:{default:"square"},topLeftClass:{},topRightClass:{},centerLeftClass:{},centerRightClass:{},bottomLeftClass:{},bottomRightClass:{}},setup(e){const o=ya(),t=y(()=>`relative p-0 overflow-hidden ${{square:"aspect-square",landscape:"aspect-48/27"}[e.ratio]}`),s={"top-left":"absolute top-2 left-2 flex flex-wrap justify-start gap-2","top-right":"absolute top-2 right-2 flex flex-wrap justify-end gap-2","center-left":"absolute top-1/2 left-2 flex -translate-y-1/2 flex-wrap justify-start gap-2","center-right":"absolute top-1/2 right-2 flex -translate-y-1/2 flex-wrap justify-end gap-2","bottom-left":"absolute bottom-2 left-2 flex flex-wrap justify-start gap-2","bottom-right":"absolute right-2 bottom-2 flex flex-wrap justify-end gap-2"},l=y(()=>({"top-left":ne(s["top-left"],e.topLeftClass),"top-right":ne(s["top-right"],e.topRightClass),"center-left":ne(s["center-left"],e.centerLeftClass),"center-right":ne(s["center-right"],e.centerRightClass),"bottom-left":ne(s["bottom-left"],e.bottomLeftClass),"bottom-right":ne(s["bottom-right"],e.bottomRightClass)}));return(a,i)=>(d(),$("div",{class:K(t.value)},[ye(a.$slots,"default",{class:"absolute top-0 left-0 h-full w-full"}),m(o)["top-left"]?(d(),$("div",{key:0,class:K(l.value["top-left"])},[ye(a.$slots,"top-left")],2)):E("",!0),m(o)["top-right"]?(d(),$("div",{key:1,class:K(l.value["top-right"])},[ye(a.$slots,"top-right")],2)):E("",!0),m(o)["center-left"]?(d(),$("div",{key:2,class:K(l.value["center-left"])},[ye(a.$slots,"center-left")],2)):E("",!0),m(o)["center-right"]?(d(),$("div",{key:3,class:K(l.value["center-right"])},[ye(a.$slots,"center-right")],2)):E("",!0),m(o)["bottom-left"]?(d(),$("div",{key:4,class:K(l.value["bottom-left"])},[ye(a.$slots,"bottom-left")],2)):E("",!0),m(o)["bottom-right"]?(d(),$("div",{key:5,class:K(l.value["bottom-right"])},[ye(a.$slots,"bottom-right")],2)):E("",!0)],2))}}),Dy="inline-flex shrink-0 items-center justify-center gap-1 rounded px-2 py-1 text-xs font-bold",Fo=q({__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(Dy,o[e.variant]));return(s,l)=>(d(),$("div",{class:K(t.value)},[ye(s.$slots,"icon"),c("span",null,V(s.label),1)],2))}}),Ay={class:"relative aspect-square w-full overflow-hidden rounded-t-lg select-none"},Ly={key:1,class:"flex h-full w-full items-center justify-center"},Ey=q({__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",Ay,[o.value?(d(),$("div",Ly,l[0]||(l[0]=[c("img",{src:vu,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:ve(s.isHovered?{transform:`scale(${1+s.hoverZoom/100})`}:void 0)},[ye(s.$slots,"default",{},void 0,!0)],4))]))}}),rn=Le(Ey,[["__scopeId","data-v-c216f2c0"]]),Vy={class:"flex h-full w-full items-center justify-center p-4",style:{backgroundImage:"url(/assets/images/default-template.png)",backgroundRepeat:"round"}},Oy=["src"],Ry=q({__name:"AudioThumbnail",props:{src:{}},setup(e){return(o,t)=>(d(),R(rn,null,{default:A(()=>[c("div",Vy,[c("audio",{controls:"",class:"relative w-full",src:o.src,onClick:t[0]||(t[0]=Ce(()=>{},["stop"]))},null,8,Oy)])]),_:1}))}}),Wy=50,zy=q({__name:"CompareSliderThumbnail",props:{baseImageSrc:{},overlayImageSrc:{},alt:{},isHovered:{type:Boolean},isVideo:{type:Boolean}},setup(e){const o=e.isVideo||e.baseImageSrc?.toLowerCase().endsWith(".webp")||e.overlayImageSrc?.toLowerCase().endsWith(".webp")||!1,t=L(Wy),s=L(null),{elementX:l,elementWidth:a,isOutside:i}=Fl(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(Co,{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(Co,{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:ve({left:`${t.value}%`})},null,4)],512)]),_:1},8,["is-hovered"]))}}),By=q({__name:"DefaultThumbnail",props:{src:{},alt:{},hoverZoom:{},isHovered:{type:Boolean},isVideo:{type:Boolean}},setup(e){const o=e.isVideo??(e.src?.toLowerCase().endsWith(".webp")||!1);return(t,s)=>(d(),R(rn,{"hover-zoom":t.hoverZoom,"is-hovered":t.isHovered},{default:A(()=>[O(Co,{src:t.src,alt:t.alt,"image-class":["transform-gpu transition-transform duration-300 ease-out",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"]))}}),Fy={class:"relative h-full w-full"},Uy={class:"absolute inset-0"},Gy={class:"absolute inset-0 z-10"},Hy=q({__name:"HoverDissolveThumbnail",props:{baseImageSrc:{},overlayImageSrc:{},alt:{},isHovered:{type:Boolean},isVideo:{type:Boolean}},setup(e){const o=e.isVideo||e.baseImageSrc?.toLowerCase().endsWith(".webp")||e.overlayImageSrc?.toLowerCase().endsWith(".webp")||!1,t=y(()=>o?"size-full object-cover":"size-full object-contain"),s=y(()=>{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",Fy,[c("div",Uy,[O(Co,{src:l.baseImageSrc,alt:l.alt,"image-class":t.value},null,8,["src","alt","image-class"])]),c("div",Gy,[O(Co,{src:l.overlayImageSrc,alt:l.alt,"image-class":s.value},null,8,["src","alt","image-class"])])])]),_:1},8,["is-hovered"]))}});function jy(e,o={}){const{itemsPerPage:t=12,initialPage:s=1}=o,l=L(s),a=L(!1),i=Ze(new Set([])),r=y(()=>{const C="value"in e?e.value:e;return Array.isArray(C)?C:[]}),u=y(()=>{const C=r.value;if(C.length===0)return[];const w=Array.from(i.value).sort((b,N)=>b-N),k=Math.max(...w,0)*t;return C.slice(0,k)}),p=y(()=>{const C=r.value;if(C.length===0)return!1;const w=Array.from(i.value);return Math.max(...w,0)*t<C.length}),g=y(()=>{const C=r.value;return C.length===0?0:Math.ceil(C.length/t)}),v=n(async()=>{if(a.value||!p.value)return;a.value=!0;const C=Array.from(i.value),w=Math.max(...C,0)+1,h=new Set(i.value);h.add(w),i.value=h,l.value=w,a.value=!1},"loadNextPage");return se(()=>r.value.length,C=>{C>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(jy,"useLazyPagination");const qy=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")}}),Ky={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 Qy(e){const o=re(),t=qy(),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(Ky),p=y(()=>{const U="value"in e?e.value:e;return Array.isArray(U)?U:[]}),g=y(()=>new Ul(p.value,u.value)),v=y(()=>{const U=new Set;return p.value.forEach(W=>{Array.isArray(W.models)&&W.models.forEach(F=>U.add(F))}),Array.from(U).sort()}),f=y(()=>{const U=new Set;return p.value.forEach(W=>{W.tags&&Array.isArray(W.tags)&&W.tags.forEach(F=>U.add(F))}),Array.from(U).sort()}),C=y(()=>["ComfyUI","External or Remote API"]),w=Ta(s,50),h=y(()=>w.value.trim()?g.value.search(w.value).map(W=>W.item):p.value),k=y(()=>l.value.length===0?h.value:h.value.filter(U=>!U.models||!Array.isArray(U.models)?!1:l.value.some(W=>U.models?.includes(W)))),b=y(()=>a.value.length===0?k.value:k.value.filter(U=>!U.tags||!Array.isArray(U.tags)?!1:a.value.some(W=>U.tags?.includes(W)))),N=y(()=>i.value.length===0?b.value:b.value.filter(U=>{const W=U.openSource===!1,F=U.openSource!==!1;return i.value.some(Q=>Q==="External or Remote API"?W:Q==="ComfyUI"?F:!1)})),S=n(U=>typeof U.vram=="number"&&Number.isFinite(U.vram)&&U.vram>0?U.vram:Number.POSITIVE_INFINITY,"getVramMetric");se(N,U=>{t.largestUsageScore=Math.max(...U.map(W=>W.usage||0))},{immediate:!0});const I=y(()=>{const U=[...N.value];switch(r.value){case"recommended":return U.sort((W,F)=>{const Q=t.computeDefaultScore(W.date,W.searchRank,W.usage);return t.computeDefaultScore(F.date,F.searchRank,F.usage)-Q});case"popular":return U.sort((W,F)=>{const Q=t.computePopularScore(W.date,W.usage);return t.computePopularScore(F.date,F.usage)-Q});case"alphabetical":return U.sort((W,F)=>{const Q=W.title||W.name||"",j=F.title||F.name||"";return Q.localeCompare(j)});case"newest":return U.sort((W,F)=>{const Q=new Date(W.date||"1970-01-01");return new Date(F.date||"1970-01-01").getTime()-Q.getTime()});case"vram-low-to-high":return U.sort((W,F)=>{const Q=S(W),j=S(F);if(Q===j){const Y=W.title||W.name||"",te=F.title||F.name||"";return Y.localeCompare(te)}return Q===Number.POSITIVE_INFINITY?1:j===Number.POSITIVE_INFINITY?-1:Q-j});case"model-size-low-to-high":return U.sort((W,F)=>{const Q=typeof W.size=="number"?W.size:Number.POSITIVE_INFINITY,j=typeof F.size=="number"?F.size:Number.POSITIVE_INFINITY;return Q===j?0:Q-j});case"default":default:return U}}),_=y(()=>I.value),x=n(()=>{s.value="",l.value=[],a.value=[],i.value=[],r.value="default"},"resetFilters"),T=n(U=>{l.value=l.value.filter(W=>W!==U)},"removeModelFilter"),M=n(U=>{a.value=a.value.filter(W=>W!==U)},"removeUseCaseFilter"),P=n(U=>{i.value=i.value.filter(W=>W!==U)},"removeRunsOnFilter"),B=y(()=>_.value.length),H=y(()=>p.value.length),z=tn(()=>{},500),G=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")&&z()},{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:_,availableModels:v,availableUseCases:f,availableRunsOn:C,filteredCount:B,totalCount:H,resetFilters:x,removeModelFilter:T,removeUseCaseFilter:M,removeRunsOnFilter:P,loadFuseOptions:G}}n(Qy,"useTemplateFiltering");function wl(){const{t:e}=pe(),o=ul(),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,k,b="1")=>{const N=k==="default"?Te.fileURL(`/templates/${h.name}`):Te.apiURL(`/workflow_templates/${k}/${h.name}`),S=k==="default"&&b?`-${b}`:"";return`${N}${S}.${h.mediaSubtype}`},"getTemplateThumbnailUrl"),v=n((h,k)=>{const b=h.title??h.name??`${k} Template`;return k==="default"?h.localizedTitle??b:b},"getTemplateTitle"),f=n(h=>(h.localizedDescription||h.description)?.replace(/[-_]/g," ").trim()??"","getTemplateDescription"),C=n(async(h,k)=>{if(!a.value)return!1;l.value=h;let b;try{if(k==="all"){const _=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(!_||!_.sourceModule)return!1;const x=_.sourceModule;b=await w(h,x);const T=x==="default"?e(`templateWorkflows.template.${h}`,h):h;return t.closeDialog(),await J.loadGraphData(b,!0,!0,T,{openSource:"template"}),!0}b=await w(h,k);const N=k==="default"?e(`templateWorkflows.template.${h}`,h):h;return t.closeDialog(),await J.loadGraphData(b,!0,!0,N,{openSource:"template"}),!0}catch(N){return console.error("Error loading workflow template:",N),!1}finally{l.value=null}},"loadWorkflowTemplate"),w=n(async(h,k)=>k==="default"?fetch(Te.fileURL(`/templates/${h}.json`)).then(b=>b.json()):fetch(Te.apiURL(`/workflow_templates/${k}/${h}.json`)).then(b=>b.json()),"fetchTemplateJson");return{selectedTemplate:s,loadingTemplateId:l,isTemplatesLoaded:a,allTemplateGroups:i,loadTemplates:r,selectFirstTemplateCategory:u,selectTemplateCategory:p,getTemplateThumbnailUrl:g,getTemplateTitle:v,getTemplateDescription:f,loadWorkflowTemplate:C}}n(wl,"useTemplateWorkflows");function kl(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(kl,"createGridStyle");const Yy={class:"text-neutral text-base"},Jy={class:"flex gap-2"},Xy={class:"relative flex flex-wrap justify-between gap-2 px-6 pb-4"},Zy={class:"flex flex-wrap gap-2"},eb={key:0,class:"text-neutral px-6 pt-4 pb-2 text-2xl font-semibold"},tb={key:0,class:"flex h-64 flex-col items-center justify-center text-neutral-500"},ob={class:"mb-2 text-lg"},nb={class:"text-sm"},sb={key:1},ab={key:0,class:"inline-block h-8 w-48 animate-pulse rounded bg-dialog-surface"},lb={class:"relative h-full w-full overflow-hidden rounded-lg"},ib={class:"flex flex-col gap-2 pt-3"},rb=["title"],ub={class:"flex justify-between gap-2"},cb={class:"flex-1"},db=["title"],pb={key:0,class:"flex flex-col-reverse justify-center"},fb={key:0,class:"text-sm text-muted"},mb={key:3,class:"mt-6 px-6 text-sm text-muted"},gb=q({__name:"WorkflowTemplateSelectorDialog",props:{onClose:{type:Function}},setup(e){const{t:o}=pe(),t=L(0),s=L(!1);ze(()=>{t.value=Date.now()});const l=Zn(),a=y(()=>[rl.Local]),i=n(()=>{e.onClose()},"onClose");en(ln,i);const r=ul(),{loadTemplates:u,loadWorkflowTemplate:p,getTemplateThumbnailUrl:g,getTemplateTitle:v,getTemplateDescription:f}=wl(),C=n(ee=>ee.sourceModule||"default","getEffectiveSourceModule"),w=n(ee=>{const ie=C(ee);return g(ee,ie,ie==="default"?"1":"")},"getBaseThumbnailSrc"),h=n(ee=>{const ie=C(ee);return g(ee,ie,ie==="default"?"2":"")},"getOverlayThumbnailSrc"),k=n(ee=>{ee.tutorialUrl&&window.open(ee.tutorialUrl,"_blank")},"openTutorial"),b=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),N=y(()=>kl()),S=y(()=>r.enhancedTemplates),I=L("all"),_=y(()=>I.value?r.filterTemplatesByCategory(I.value):S.value),{searchQuery:x,selectedModels:T,selectedUseCases:M,selectedRunsOn:P,sortBy:B,filteredTemplates:H,availableModels:z,availableUseCases:G,availableRunsOn:U,filteredCount:W,totalCount:F,resetFilters:Q,loadFuseOptions:j}=Qy(_),Y=n(ee=>{const ie=I.value==="popular",ft=B.value==="popular";ee==="nav"?ie&&!ft?B.value="popular":!ie&&ft&&(B.value="default"):ee==="sort"&&ie&&!ft&&(I.value="all")},"coordinateNavAndSort");se(I,()=>Y("nav")),se(B,()=>Y("sort"));const te=y({get(){return T.value.map(ee=>({name:ee,value:ee}))},set(ee){T.value=ee.map(ie=>ie.value)}}),X=y({get(){return M.value.map(ee=>({name:ee,value:ee}))},set(ee){M.value=ee.map(ie=>ie.value)}}),ae=y({get(){return P.value.map(ee=>({name:ee,value:ee}))},set(ee){P.value=ee.map(ie=>ie.value)}}),le=L(null),Ne=L(null),Ue=L([]),Qe=L(0),Ve=L(""),_e=y(()=>z.value.map(ee=>({name:ee,value:ee}))),Be=y(()=>G.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(()=>ae.value.length===0?o("templateWorkflows.runsOnFilter","Runs On"):ae.value.length===1?ae.value[0].name:o("templateWorkflows.runsOnSelected",{count:ae.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),Tt=y(()=>!x.value.trim()),{paginatedItems:At,isLoading:ot,hasMoreItems:qt,loadNextPage:fo,reset:Kt}=jy(H,{itemsPerPage:24}),fe=y(()=>Tt.value?At.value:H.value);hu(pt,()=>{Tt.value&&qt.value&&!ot.value&&fo()}),se([x,I,B,T,M,P],()=>{Kt(),le.value=null,Qe.value++});const xe=n(async ee=>{le.value=ee.name;try{await p(ee.name,C(ee)),s.value=!0,i()}finally{le.value=null}},"onLoadWorkflow"),De=y(()=>{const ee=b.value.find(ie=>"id"in ie?ie.id===I.value:ie.items?.some(ft=>ft.id===I.value));return ee?"id"in ee?ee.label:ee.items?.find(ie=>ie.id===I.value)?.label||o("templateWorkflows.allTemplates","All Templates"):o("templateWorkflows.allTemplates","All Templates")}),{isLoading:we}=Gl(async()=>(await Promise.all([u(),r.loadWorkflowTemplates(),j()]),!0),!1,{immediate:!0}),Ee=n(ee=>(ee.includeOnDistributions?.length??0)>0?a.value.some(ie=>ee.includeOnDistributions?.includes(ie)):!0,"isTemplateVisibleOnDistribution");return rt(()=>{Ue.value=[]}),(ee,ie)=>{const ft=Ie("tooltip");return d(),R(rs,{"content-title":ee.$t("templateWorkflows.title","Workflow Templates"),class:"workflow-template-selector-dialog"},{leftPanel:A(()=>[O(us,{modelValue:I.value,"onUpdate:modelValue":ie[0]||(ie[0]=ue=>I.value=ue),"nav-items":b.value},{"header-icon":A(()=>ie[8]||(ie[8]=[c("i",{class:"icon-[comfy--template]"},null,-1)])),"header-title":A(()=>[c("span",Yy,V(ee.$t("sideToolbar.templates","Templates")),1)]),_:1},8,["modelValue","nav-items"])]),header:A(()=>[O(nn,{modelValue:m(x),"onUpdate:modelValue":ie[1]||(ie[1]=ue=>lt(x)?x.value=ue:null),size:"lg",class:"max-w-[384px]"},null,8,["modelValue"])]),"header-right-area":A(()=>[c("div",Jy,[m(W)!==m(F)?(d(),R(Z,{key:0,variant:"secondary",size:"lg",onClick:m(Q)},{default:A(()=>[ie[9]||(ie[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",Xy,[c("div",Zy,[O(Rt,{modelValue:te.value,"onUpdate:modelValue":ie[2]||(ie[2]=ue=>te.value=ue),"search-query":Ve.value,"onUpdate:searchQuery":ie[3]||(ie[3]=ue=>Ve.value=ue),class:"w-[250px]",label:bt.value,options:_e.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:A(()=>ie[10]||(ie[10]=[c("i",{class:"icon-[lucide--cpu]"},null,-1)])),_:1},8,["modelValue","search-query","label","options"]),O(Rt,{modelValue:X.value,"onUpdate:modelValue":ie[4]||(ie[4]=ue=>X.value=ue),label:po.value,options:Be.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:A(()=>ie[11]||(ie[11]=[c("i",{class:"icon-[lucide--target]"},null,-1)])),_:1},8,["modelValue","label","options"]),O(Rt,{modelValue:ae.value,"onUpdate:modelValue":ie[5]||(ie[5]=ue=>ae.value=ue),label:Ht.value,options:Je.value,"show-search-box":!0,"show-selected-count":!0,"show-clear-button":!0},{icon:A(()=>ie[12]||(ie[12]=[c("i",{class:"icon-[lucide--server]"},null,-1)])),_:1},8,["modelValue","label","options"])]),c("div",null,[O(qo,{modelValue:m(B),"onUpdate:modelValue":ie[6]||(ie[6]=ue=>lt(B)?B.value=ue:null),label:ee.$t("templateWorkflows.sorting","Sort by"),options:jt.value,class:"w-62.5"},{icon:A(()=>ie[13]||(ie[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",eb,[c("span",null,V(De.value),1)]))]),content:A(()=>[!m(we)&&m(H).length===0?(d(),$("div",tb,[ie[14]||(ie[14]=c("i",{class:"mb-4 icon-[lucide--search] h-12 w-12 opacity-50"},null,-1)),c("p",ob,V(ee.$t("templateWorkflows.noResults","No templates found")),1),c("p",nb,V(ee.$t("templateWorkflows.noResultsHint","Try adjusting your search or filters")),1)])):(d(),$("div",sb,[m(we)?(d(),$("span",ab)):E("",!0),(d(),$("div",{key:Qe.value,style:ve(N.value),"data-testid":"template-workflows-content"},[(d(!0),$(oe,null,be(m(we)?12:0,ue=>(d(),R(zo,{key:`initial-skeleton-${ue}`,size:"compact",variant:"ghost",rounded:"lg",class:"hover:bg-base-background"},{top:A(()=>[O(Bo,{ratio:"landscape"},{default:A(()=>ie[15]||(ie[15]=[c("div",{class:"h-full w-full animate-pulse bg-dialog-surface"},null,-1)])),_:1})]),bottom:A(()=>[O(Wo,null,{default:A(()=>ie[16]||(ie[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)?[]:fe.value,ue=>de((d(),R(zo,{key:ue.name,ref_for:!0,ref_key:"cardRefs",ref:Ue,size:"compact",variant:"ghost",rounded:"lg","data-testid":`template-workflow-${ue.name}`,class:"hover:bg-base-background",onMouseenter:n($t=>Ne.value=ue.name,"onMouseenter"),onMouseleave:ie[7]||(ie[7]=$t=>Ne.value=null),onClick:n($t=>xe(ue),"onClick")},{top:A(()=>[O(Bo,{ratio:"square"},{default:A(()=>[c("div",lb,[ue.mediaType==="audio"?(d(),R(Ry,{key:0,src:w(ue)},null,8,["src"])):ue.thumbnailVariant==="compareSlider"?(d(),R(zy,{key:1,"base-image-src":w(ue),"overlay-image-src":h(ue),alt:m(v)(ue,C(ue)),"is-hovered":Ne.value===ue.name,"is-video":ue.mediaType==="video"||ue.mediaSubtype==="webp"},null,8,["base-image-src","overlay-image-src","alt","is-hovered","is-video"])):ue.thumbnailVariant==="hoverDissolve"?(d(),R(Hy,{key:2,"base-image-src":w(ue),"overlay-image-src":h(ue),alt:m(v)(ue,C(ue)),"is-hovered":Ne.value===ue.name,"is-video":ue.mediaType==="video"||ue.mediaSubtype==="webp"},null,8,["base-image-src","overlay-image-src","alt","is-hovered","is-video"])):(d(),R(By,{key:3,src:w(ue),alt:m(v)(ue,C(ue)),"is-hovered":Ne.value===ue.name,"is-video":ue.mediaType==="video"||ue.mediaSubtype==="webp","hover-zoom":ue.thumbnailVariant==="zoomHover"?16:5},null,8,["src","alt","is-hovered","is-video","hover-zoom"])),le.value===ue.name?(d(),R(m(di),{key:4,class:"absolute inset-0 z-10 m-auto h-12 w-12"})):E("",!0)])]),"bottom-right":A(()=>[ue.tags&&ue.tags.length>0?(d(!0),$(oe,{key:0},be(ue.tags,$t=>(d(),R(Fo,{key:$t,label:$t},null,8,["label"]))),128)):E("",!0)]),_:2},1024)]),bottom:A(()=>[O(Wo,null,{default:A(()=>[c("div",ib,[c("h3",{class:"m-0 line-clamp-1 text-sm",title:m(v)(ue,C(ue))},V(m(v)(ue,C(ue))),9,rb),c("div",ub,[c("div",cb,[c("p",{class:"m-0 line-clamp-2 text-sm text-muted",title:m(f)(ue)},V(m(f)(ue)),9,db)]),ue.tutorialUrl?(d(),$("div",pb,[Ne.value===ue.name?de((d(),R(Z,St({key:0,ref_for:!0},ee.$attrs,{variant:"inverted",size:"icon",onClick:Ce($t=>k(ue),["stop"])}),{default:A(()=>ie[17]||(ie[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(ue)]])),128)),(d(!0),$(oe,null,be(m(ot)?6:0,ue=>(d(),R(zo,{key:`skeleton-${ue}`,size:"compact",variant:"ghost",rounded:"lg",class:"hover:bg-base-background"},{top:A(()=>[O(Bo,{ratio:"square"},{default:A(()=>ie[18]||(ie[18]=[c("div",{class:"h-full w-full animate-pulse bg-dialog-surface"},null,-1)])),_:1})]),bottom:A(()=>[O(Wo,null,{default:A(()=>ie[19]||(ie[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(ot)?(d(),$("div",fb,V(ee.$t("templateWorkflows.loadingMore","Loading more...")),1)):E("",!0)],512)):E("",!0),m(we)?E("",!0):(d(),$("div",mb,V(ee.$t("templateWorkflows.resultsCount",{count:m(W),total:m(F)})),1))]),_:1},8,["content-title"])}}}),ra="global-workflow-template-selector",bs=n(()=>{const e=yt(),o=ut();function t(){o.closeDialog({key:ra})}n(t,"hide");function s(l="command"){e.showLayoutDialog({key:ra,component:gb,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"),vb={class:"flex h-8 w-8 items-center justify-center rounded-lg bg-black"},hb=["href","onMousedown","onClick"],yb={class:"p-menubar-item-label text-nowrap"},bb={key:3,class:"keybinding-tag ml-auto rounded border border-surface p-1 text-xs text-nowrap text-muted"},wb={key:4,class:"pi pi-angle-right ml-auto"},kb={class:"p-menubar-item-label text-nowrap"},Cb=q({__name:"ComfyMenuButton",setup(e){const{t:o}=pe(),t=Se(),s=Xa(),l=dt(),a=Za(),i=ut(),r=gt(),u=re(),p=L(null),g=y({get:n(()=>u.get("Comfy.VueNodes.Enabled")??!1,"get"),set:n(async P=>{await u.set("Comfy.VueNodes.Enabled",P)},"set")});function v(P){p.value?.toggle(P)}n(v,"onLogoMenuClick");const f=n(P=>{const B=typeof P.label=="function"?P.label():P.label,H=B?o(`menuLabels.${He(B)}`,B):void 0;return{...P,label:H,items:P.items?.map(f)}},"translateMenuItem"),C=n(P=>{i.showDialog({key:"global-settings",headerComponent:br,component:yr,props:{defaultPanel:P}})},"showSettings"),w=n(async()=>{await r.openManager({initialTab:eo.All,showToastOnLegacyError:!1})},"showManageExtensions"),h=y(()=>l.palettes.map(P=>({key:`theme-${P.id}`,label:P.name,parentPath:"theme",comfyCommand:{active:n(()=>l.activePaletteId===P.id,"active")},command:n(async()=>{await a.loadColorPalette(P.id)},"command")}))),k=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(()=>bs().show("menu"),"command")},{key:"settings",label:o("g.settings"),icon:"mdi mdi-cog-outline",command:n(()=>{C()},"command")},{key:"manage-extensions",label:o("menu.manageExtensions"),icon:"mdi mdi-puzzle-outline",command:w}]),b=y(()=>{const P=s.menuItems.map(f);let B=P.findIndex(z=>z.key==="Help"),H;if(B!==-1){P[B].icon="mdi mdi-help-circle-outline";const z=B!==P.length-1;H=P.splice(B,1,...z?[{separator:!0}]:[])[0]}return B=P.length,P.splice(B,0,...k.value,...H?[{separator:!0},H]:[]),P}),N=n(()=>{Fe(()=>{p.value&&(p.value.dirty=!0)})},"onMenuShow"),S=n(P=>P.comfyCommand?.id==="Comfy.Canvas.ZoomIn"||P.comfyCommand?.id==="Comfy.Canvas.ZoomOut","isZoomCommand"),I=n((P,B)=>{P.comfyCommand&&Ln(B,async()=>{await t.execute(P.comfyCommand.id)},50)},"handleZoomMouseDown"),_=n((P,B)=>{if(S(P)||P.comfyCommand?.active)return B.preventDefault(),B.stopPropagation(),P.comfyCommand?.active&&P.command?.({item:P,originalEvent:B}),!1},"handleItemClick"),x=n(P=>P.parentPath&&(P.parentPath==="theme"||s.menuItemHasActiveStateChildren[P.parentPath]),"hasActiveStateSiblings"),T=n(()=>!1,"handleNodes2ToggleClick"),M=n(async P=>{await u.set("Comfy.VueNodes.Enabled",P)},"onNodes2ToggleChange");return(P,B)=>{const H=Ie("tooltip");return d(),$(oe,null,[de((d(),$("div",{class:K(["comfy-menu-button-wrapper flex shrink-0 cursor-pointer flex-col items-center justify-center p-2 transition-colors",{"comfy-menu-button-active":p.value?.visible}]),onClick:B[0]||(B[0]=z=>v(z))},[c("div",vb,[O(My,{alt:"ComfyUI Logo",class:"comfyui-logo h-[18px] w-[18px] text-white",mode:"fill"})])],2)),[[H,{value:m(o)("sideToolbar.labels.menu"),showDelay:300,hideDelay:300}]]),O(m(pi),{ref_key:"menuRef",ref:p,model:b.value,popup:!0,class:"comfy-command-menu",onShow:N},{item:A(({item:z,props:G})=>[z.key!=="nodes-2.0-toggle"?(d(),$("a",St({key:0,class:"p-menubar-item-link px-4 py-2"},G.action,{href:z.url,target:"_blank",class:typeof z.class=="function"?z.class():z.class,onMousedown:n(U=>S(z)?I(z,U):void 0,"onMousedown"),onClick:n(U=>_(z,U),"onClick")}),[x(z)?(d(),$("i",{key:0,class:K(["p-menubar-item-icon pi pi-check text-sm",{invisible:!z.comfyCommand?.active?.()}])},null,2)):z.icon&&z.comfyCommand?.id!=="Comfy.NewBlankWorkflow"?(d(),$("span",{key:1,class:K(["p-menubar-item-icon text-sm",z.icon])},null,2)):E("",!0),c("span",yb,V(z.label),1),z.comfyCommand?.id==="Comfy.NewBlankWorkflow"?(d(),$("i",{key:2,class:K(["ml-auto",z.icon])},null,2)):E("",!0),z?.comfyCommand?.keybinding?(d(),$("span",bb,V(z.comfyCommand.keybinding.combo.toString()),1)):E("",!0),z.items?(d(),$("i",wb)):E("",!0)],16,hb)):(d(),$("div",{key:1,class:"flex items-center justify-between px-4 py-2",onClick:Ce(T,["stop"])},[c("span",kb,V(z.label),1),O(m(Zt),{severity:"info",class:"ml-2 text-xs"},{default:A(()=>[$e(V(P.$t("g.beta")),1)]),_:1}),O(m(Ra),{modelValue:g.value,"onUpdate:modelValue":[B[1]||(B[1]=U=>g.value=U),M],class:"ml-4","aria-label":z.label,pt:{root:{style:{width:"38px",height:"20px"}},handle:{style:{width:"16px",height:"16px"}}},onClick:B[2]||(B[2]=Ce(()=>{},["stop"]))},null,8,["modelValue","aria-label"])]))]),_:1},8,["model"])],64)}}}),xb=Le(Cb,[["__scopeId","data-v-7f8c3b49"]]),Sb={class:"side-bar-button-content"},_b={key:0,class:"side-bar-button-label"},Tb=q({__name:"SidebarIcon",props:{icon:{default:""},selected:{type:Boolean,default:!1},tooltip:{default:""},tooltipSuffix:{default:""},iconBadge:{type:[String,Function],default:""},label:{default:""},isSmall:{type:Boolean,default:!1}},emits:["click"],setup(e,{emit:o}){const{t}=pe(),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(Z,{class:K(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",Sb,[ye(r.$slots,"icon",{},()=>[a.value?(d(),R(m(fi),{key:0,value:l.value},{default:A(()=>[typeof r.icon=="string"?(d(),$("i",{key:0,class:K(r.icon+" side-bar-button-icon")},null,2)):(d(),R(oo(r.icon),{key:1,class:"side-bar-button-icon"}))]),_:1},8,["value"])):typeof r.icon=="string"?(d(),$("i",{key:1,class:K(r.icon+" side-bar-button-icon")},null,2)):typeof r.icon=="object"?(d(),R(oo(r.icon),{key:2,class:"side-bar-button-icon"})):E("",!0)],!0),r.label&&!r.isSmall?(d(),$("span",_b,V(m(t)(r.label)),1)):E("",!0)])]),_:3},8,["class","aria-label"])),[[p,{value:i.value,showDelay:300,hideDelay:300}]])}}}),Gt=Le(Tb,[["__scopeId","data-v-bbb98ec9"]]),$b=q({__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"]))}}),Nb=q({__name:"SidebarSettingsButton",setup(e){const{t:o}=pe(),{getCommand:t,formatKeySequence:s}=Se(),l=t("Comfy.ShowSettingsDialog"),a=y(()=>`${o("g.settings")} (${s(l)})`),i=n(()=>{l.function()},"showSettingsDialog");return(r,u)=>(d(),R(Gt,{icon:"icon-[lucide--settings]",label:r.$t("g.settings"),tooltip:a.value,onClick:i},null,8,["label","tooltip"]))}}),Ib=q({__name:"SidebarShortcutsToggleButton",setup(e){const{t:o}=pe(),t=io(),s=Se(),l=s.getCommand("Workspace.ToggleBottomPanel.Shortcuts"),{formatKeySequence:a}=s,i=y(()=>t.activePanel==="shortcuts"),r=y(()=>`${o("shortcuts.keyboardShortcuts")} (${a(l)})`),u=n(()=>{t.togglePanel("shortcuts")},"toggleShortcutsPanel");return(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"]))}}),Mb=q({__name:"SidebarHelpCenterIcon",props:{isSmall:{type:Boolean}},setup(e){const{shouldShowRedDot:o,toggleHelpCenter:t}=ys();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"]))}}),Pb=Le(Mb,[["__scopeId","data-v-4a7593e2"]]),Db=q({__name:"SidebarLogoutIcon",setup(e){const{t:o}=pe(),t=el(),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"]))}}),Ab=q({__name:"SidebarTemplatesButton",setup(e){const o=re(),t=y(()=>o.get("Comfy.Sidebar.Size")==="small"),s=n(()=>{bs().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"]))}}),Lb=20,Eb=50,Vb=q({__name:"SideToolbar",setup(e){const o=it(),t=re(),s=el(),l=Se(),a=he(),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"),C=y(()=>h.value||S.value||v.value==="connected"),w=y(()=>o.getSidebarTabs()),h=y(()=>o.sidebarTab.activeSidebarTab),k=n(async x=>{x.id,x.id,x.id,x.id,await l.commands.find(T=>T.id===`Workspace.ToggleSidebarTab.${x.id}`)?.function?.()},"onTabClick"),b=wr(),N=n(x=>{const T=b.getKeybindingByCommandId(`Workspace.ToggleSidebarTab.${x.id}`);return T?` (${T.combo.toString()})`:""},"getTabTooltipSuffix"),S=L(!1),I=y(()=>ne("sidebar-item-group flex flex-col items-center overflow-hidden flex-shrink-0",!C.value&&"rounded-lg shadow-interface pointer-events-auto")),_=tn(()=>{if(!i.value||!r.value||!u.value)return;const x=i.value.clientHeight,T=r.value.scrollHeight,M=u.value.scrollHeight,P=T+M;S.value?S.value=x<P+Eb:S.value=x<P+Lb},16);return ze(()=>{if(!i.value)return;const x=ka(i.value,_);_(),rt(()=>{x.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})}),(x,T)=>(d(),$("nav",{ref_key:"sideToolbarRef",ref:i,class:K(["side-tool-bar-container flex h-full flex-col items-center bg-transparent [.floating-sidebar]:-mr-2",{"small-sidebar":p.value,"connected-sidebar pointer-events-auto":C.value,"floating-sidebar":!C.value,"overflowing-sidebar":S.value,"border-r border-[var(--interface-stroke)] shadow-interface":C.value}])},[c("div",{class:K(S.value?"side-tool-bar-container overflow-y-auto":"flex flex-col h-full")},[c("div",{ref_key:"topToolbarRef",ref:r,class:K(I.value)},[O(xb),(d(!0),$(oe,null,be(w.value,M=>(d(),R(Gt,{key:M.id,icon:M.icon,"icon-badge":M.iconBadge,tooltip:M.tooltip,"tooltip-suffix":N(M),label:M.label||M.title,"is-small":p.value,selected:M.id===h.value?.id,class:K(M.id+"-tab-button"),onClick:n(P=>k(M),"onClick")},null,8,["icon","icon-badge","tooltip","tooltip-suffix","label","is-small","selected","class","onClick"]))),128)),O(Ab)],2),c("div",{ref_key:"bottomToolbarRef",ref:u,class:K(["mt-auto",I.value])},[m(s).isMultiUserServer?(d(),R(Db,{key:0,"is-small":p.value},null,8,["is-small"])):E("",!0),f.value?E("",!0):(d(),R(Pb,{key:1,"is-small":p.value},null,8,["is-small"])),O($b,{"is-small":p.value},null,8,["is-small"]),O(Ib,{"is-small":p.value},null,8,["is-small"]),O(Nb,{"is-small":p.value},null,8,["is-small"])],2)],2),O(Ny,{"is-small":p.value},null,8,["is-small"])],2))}}),Ob=Le(Vb,[["__scopeId","data-v-9d98575c"]]),Rb=Dt("topbarBadge",()=>{const e=Xn();return{badges:y(()=>e.extensions.flatMap(t=>t.topbarBadges??[]))}}),Wb={class:"flex h-full shrink-0 items-center"},Cl=q({__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=Rb();return(i,r)=>(d(),$("div",Wb,[(d(!0),$(oe,null,be(m(a).badges,u=>(d(),R(Zc,{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))]))}}),zb={class:"relative inline-flex items-center justify-center size-[1em]"},Bb=q({__name:"OverlayIcon",props:{mainIcon:{},subIcon:{},positionX:{default:"right"},positionY:{default:"bottom"},offsetX:{default:0},offsetY:{default:0},subIconScale:{default:.6}},setup(e){const o=["-1px -1px 0 rgba(0, 0, 0, 0.7)","1px -1px 0 rgba(0, 0, 0, 0.7)","-1px 1px 0 rgba(0, 0, 0, 0.7)","1px 1px 0 rgba(0, 0, 0, 0.7)","-1px 0 0 rgba(0, 0, 0, 0.7)","1px 0 0 rgba(0, 0, 0, 0.7)","0 -1px 0 rgba(0, 0, 0, 0.7)","0 1px 0 rgba(0, 0, 0, 0.7)"].join(", "),t=y(()=>({fontSize:`${e.subIconScale}em`,textShadow:o,...e.offsetX!==0&&{[e.positionX==="left"?"left":"right"]:`${e.offsetX}px`},...e.offsetY!==0&&{[e.positionY==="top"?"top":"bottom"]:`${e.offsetY}px`}}));return(s,l)=>(d(),$("span",zb,[c("i",{class:K([s.mainIcon,"text-[1em]"])},null,2),c("i",{class:K(m(ne)(s.subIcon,"absolute leading-none pointer-events-none",s.positionX==="left"?"left-0":"right-0",s.positionY==="top"?"top-0":"bottom-0")),style:ve(t.value)},null,6)]))}}),Fb={key:0,class:"absolute top-[7px] right-[7px] size-1.5 rounded-full bg-[#ff3b30]"},Ub=q({__name:"TopMenuHelpButton",setup(e){const{shouldShowRedDot:o,toggleHelpCenter:t}=ys("topbar");return(s,l)=>(d(),R(Z,{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",Fb)):E("",!0)]),_:1},8,["onClick"]))}}),Gb={class:"workflow-preview-content"},Hb={key:0,class:"workflow-preview-thumbnail relative"},jb=["src"],qb={class:"workflow-preview-footer"},Kb={class:"workflow-preview-name"},Qb=250,Yb=q({__name:"WorkflowTabPopover",props:{workflowFilename:{},thumbnailUrl:{},isActiveTab:{type:Boolean}},setup(e,{expose:o}){const t=e,{thumbnailUrl:s,isActiveTab:l}=Hl(t),a=L(null),i=L(null);let r=null,u=null;const p=_n(),g=n(w=>{r&&(clearTimeout(r),r=null),u&&(clearTimeout(u),u=null),u=setTimeout(async()=>{if(a.value&&i.value){a.value.show(w,i.value),await Fe();const h=document.querySelector(`.workflow-popover-fade[data-popover-id="${p}"]`);if(h){const k=i.value.getBoundingClientRect().left,b=h.getBoundingClientRect().width,N=b/2;let S=k-N,I=0;if(S<0)I=S-8,S=8;else if(S+b>window.innerWidth){const _=window.innerWidth-b-16;I=S-_,S=_}I+N<0&&(I=-N+24),h.style.left=`${S}px`,h.style.setProperty("--shift",`${I}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(w=>{a.value&&a.value.toggle(w)},"togglePopover")}),(w,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",Gb,[m(s)&&!m(l)?(d(),$("div",Hb,[c("img",{src:m(s),class:"block h-[200px] rounded-lg object-cover p-2",style:ve({width:`${Qb}px`})},null,12,jb)])):E("",!0),c("div",qb,[c("span",Kb,V(w.workflowFilename),1)])])]),_:1},8,["pt"])],64))}}),Jb=Le(Yb,[["__scopeId","data-v-4c13cb50"]]),Xb={class:"workflow-label inline-block max-w-[150px] truncate text-sm"},Zb={class:"relative"},ew={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"},tw=q({__name:"WorkflowTab",props:{workflowOption:{}},setup(e){const o=e,{t}=pe(),s=it(),l=Re(),a=re(),i=L(null),r=L(null),u=kr(),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),C=y(()=>u.getThumbnail(o.workflowOption.workflow.key)),w=L(),{menuItems:h}=cs(()=>Se().execute("Comfy.RenameWorkflow")),k=n(T=>{r.value?.showPopover(T)},"handleMouseEnter"),b=n(()=>{r.value?.hidePopover()},"handleMouseLeave"),N=n(T=>{r.value?.togglePopover(T)},"handleClick"),S=n(T=>{w.value?.toggle(T)},"handleMenuClick"),I=n(async T=>{for(const M of T)if(!await tt().closeWorkflow(M.workflow,{warnIfUnsaved:!s.shiftDown,hint:t("sideToolbar.workflowTab.dirtyCloseHint")}))break},"closeWorkflows"),_=n(async T=>{await I([T])},"onCloseWorkflow"),x=n(()=>i.value,"tabGetter");return Cr(x,{getInitialData:n(()=>({workflowKey:o.workflowOption.workflow.key}),"getInitialData")}),tl(x,{getData:n(()=>({workflowKey:o.workflowOption.workflow.key}),"getData"),onDrop:n(T=>{const M=l.openWorkflows.findIndex(B=>B.key===T.source.data.workflowKey),P=l.openWorkflows.findIndex(B=>B.key===T.location.current.dropTargets[0]?.data.workflowKey);M!==P&&l.reorderWorkflows(M,P)},"onDrop")}),ht(()=>{r.value?.hidePopover()}),(T,M)=>(d(),$(oe,null,[c("div",St({ref_key:"workflowTabRef",ref:i,class:"workflow-tab group flex gap-2 p-2"},T.$attrs,{onMouseenter:k,onMouseleave:b,onClick:N}),[f.value?(d(),R(Z,{key:0,class:"context-menu-button -mx-1 w-auto px-1 py-0",variant:"muted-textonly",size:"icon-sm",onClick:Ce(S,["stop"])},{default:A(()=>M[1]||(M[1]=[c("i",{class:"pi pi-bars"},null,-1)])),_:1})):E("",!0),c("span",Xb,V(T.workflowOption.workflow.filename),1),c("div",Zb,[v.value?(d(),$("span",ew,"•")):E("",!0),O(Z,{class:"close-button invisible w-auto p-0",variant:"muted-textonly",size:"icon-sm","aria-label":m(t)("g.close"),onClick:M[0]||(M[0]=Ce(P=>_(T.workflowOption),["stop"]))},{default:A(()=>M[2]||(M[2]=[c("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])],16),O(Jb,{ref_key:"popoverRef",ref:r,"workflow-filename":T.workflowOption.workflow.filename,"thumbnail-url":C.value,"is-active-tab":f.value},null,8,["workflow-filename","thumbnail-url","is-active-tab"]),f.value?(d(),R(m(Gn),{key:0,ref_key:"menu",ref:w,model:m(h),popup:!0,pt:{root:{style:"background-color: var(--comfy-menu-bg)"},itemLink:{class:"py-2"}}},null,8,["model"])):E("",!0)],64))}}),ow=q({__name:"WorkflowOverflowMenu",props:{workflows:{},activeWorkflow:{}},setup(e){const o=e,t=L(null),s=tt(),l=y(()=>o.workflows.map(a=>({label:a.filename,icon:o.activeWorkflow?.key===a.key?"pi pi-check":void 0,command:n(()=>{s.openWorkflow(a)},"command")})));return(a,i)=>{const r=Ie("tooltip");return d(),$("div",null,[de((d(),R(Z,{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(Gn),{ref_key:"menu",ref:t,model:l.value,popup:!0,class:"max-h-[40vh] overflow-auto"},null,8,["model"])])}}}),nw={key:3,class:"ml-auto flex shrink-0 items-center gap-2 px-2"},sw={key:4,class:"window-actions-spacer app-drag shrink-0"},aw=q({__name:"WorkflowTabs",props:{class:{}},setup(e){const o=e,{t}=pe(),s=re(),l=it(),a=Re(),i=tt(),r=Se(),{isLoggedIn:u}=Ft(),p=y(()=>s.get("Comfy.UI.TabBarLayout")==="Integrated"),g=L(),v=L(),f=L(null),C=L(!1),w=L(!1),h=L(!1),k=Ke(),b=n(j=>({value:j.path,workflow:j}),"workflowToOption"),N=y(()=>a.openWorkflows.map(b)),S=y(()=>a.activeWorkflow?b(a.activeWorkflow):null),I=n(async j=>{j&&S.value?.value!==j.value&&await i.openWorkflow(j.workflow)},"onWorkflowChange"),_=n(async j=>{for(const Y of j)if(!await i.closeWorkflow(Y.workflow,{warnIfUnsaved:!l.shiftDown}))break},"closeWorkflows"),x=n(async j=>{await _([j])},"onCloseWorkflow"),T=n((j,Y)=>{g.value=Y,v.value.show(j)},"showContextMenu"),M=y(()=>g.value?.workflow??null),{menuItems:P}=cs(()=>r.execute("Comfy.RenameWorkflow"),{includeDelete:!1,workflow:M}),B=y(()=>{const j=g.value;if(!j)return[];const Y=N.value.findIndex(te=>te.workflow===j.workflow);return[...P.value,{label:t("tabMenu.closeTab"),icon:"pi pi-times",command:n(()=>x(j),"command")},{label:t("tabMenu.closeTabsToLeft"),overlayIcon:{mainIcon:"pi pi-times",subIcon:"pi pi-arrow-left",positionX:"right",positionY:"bottom",subIconScale:.5},command:n(()=>_(N.value.slice(0,Y)),"command"),disabled:Y<=0},{label:t("tabMenu.closeTabsToRight"),overlayIcon:{mainIcon:"pi pi-times",subIcon:"pi pi-arrow-right",positionX:"right",positionY:"bottom",subIconScale:.5},command:n(()=>_(N.value.slice(Y+1)),"command"),disabled:Y===N.value.length-1},{label:t("tabMenu.closeOtherTabs"),overlayIcon:{mainIcon:"pi pi-times",subIcon:"pi pi-arrows-h",positionX:"right",positionY:"bottom",subIconScale:.5},command:n(()=>_([...N.value.slice(Y+1),...N.value.slice(0,Y)]),"command"),disabled:N.value.length<=1}]}),H=n(j=>{const Y=j.currentTarget,te=j.deltaX||j.deltaY;Y.scroll({left:Y.scrollLeft+te})},"handleWheel"),z=y(()=>f.value?.querySelector(".p-scrollpanel-content")??null),G=n(j=>{const Y=z.value;Y&&Y.scrollBy({left:j*20})},"scroll"),U=n(async(j={})=>{if(!S.value)return;j.waitForDom!==!1&&await Fe();const Y=f.value;if(!Y)return;const te=Y.querySelector(".p-togglebutton-checked");te&&te.scrollIntoView({block:"nearest",inline:"nearest"})},"ensureActiveTabVisible");se(()=>a.activeWorkflow,()=>{U()},{immediate:!0});let W=null,F=null,Q=null;return se(z,(j,Y,te)=>{if(F?.(),Q?.(),W?.dispose(),!j)return;const X=Ia(j);F=se([()=>X.arrivedState.left,()=>X.arrivedState.right],([ae,le])=>{w.value=!ae,h.value=!le},{immediate:!0}),W=fl(j),Q=se(W.isOverflowing,ae=>{C.value=ae,ae&&Fe(()=>{X.measure(),U({waitForDom:!1})})},{immediate:!0}),te(()=>{F?.(),Q?.(),W?.dispose()})},{immediate:!0}),Ca(()=>{W?.disposed.value||W?.checkOverflow()}),(j,Y)=>{const te=Ie("tooltip");return d(),$("div",{ref_key:"containerRef",ref:f,class:K(["workflow-tabs-container flex h-full max-w-full flex-auto flex-row overflow-hidden",{"workflow-tabs-container-desktop":m(k)}])},[C.value?(d(),R(Z,{key:0,variant:"muted-textonly",size:"icon",class:"overflow-arrow overflow-arrow-left h-full w-auto aspect-square","aria-label":j.$t("g.scrollLeft"),disabled:!w.value,onMousedown:Y[0]||(Y[0]=X=>m(Ln)(X,()=>G(-1)))},{default:A(()=>Y[3]||(Y[3]=[c("i",{class:"icon-[lucide--chevron-left] size-full"},null,-1)])),_:1},8,["aria-label","disabled"])):E("",!0),O(m(mi),{class:"no-drag overflow-hidden","pt:content":{class:"p-0 w-full flex",onwheel:H},"pt:bar-x":"h-1"},{default:A(()=>[O(m(Va),{class:K(["workflow-tabs bg-transparent",o.class]),"model-value":S.value,options:N.value,"option-label":"label","data-key":"value","onUpdate:modelValue":I},{option:A(({option:X})=>[O(tw,{"workflow-option":X,onContextmenu:n(ae=>T(ae,X),"onContextmenu"),onMouseup:Ce(ae=>x(X),["middle"])},null,8,["workflow-option","onContextmenu","onMouseup"])]),_:1},8,["class","model-value","options"])]),_:1},8,["pt:content"]),C.value?(d(),R(Z,{key:1,variant:"muted-textonly",size:"icon",class:"overflow-arrow overflow-arrow-right h-full w-auto aspect-square","aria-label":j.$t("g.scrollRight"),disabled:!h.value,onMousedown:Y[1]||(Y[1]=X=>m(Ln)(X,()=>G(1)))},{default:A(()=>Y[4]||(Y[4]=[c("i",{class:"icon-[lucide--chevron-right] size-full"},null,-1)])),_:1},8,["aria-label","disabled"])):E("",!0),C.value?(d(),R(ow,{key:2,workflows:m(a).openWorkflows,"active-workflow":m(a).activeWorkflow},null,8,["workflows","active-workflow"])):E("",!0),de((d(),R(Z,{class:"new-blank-workflow-button no-drag shrink-0 rounded-none h-full w-auto aspect-square",variant:"muted-textonly",size:"icon","aria-label":j.$t("sideToolbar.newBlankWorkflow"),onClick:Y[2]||(Y[2]=()=>m(r).execute("Comfy.NewBlankWorkflow"))},{default:A(()=>Y[5]||(Y[5]=[c("i",{class:"pi pi-plus"},null,-1)])),_:1},8,["aria-label"])),[[te,{value:j.$t("sideToolbar.newBlankWorkflow"),showDelay:300}]]),p.value?(d(),$("div",nw,[O(Ub),m(u)?(d(),R(ds,{key:0,"show-arrow":!1,compact:"",class:"shrink-0 p-1"})):m(k)?(d(),R(ps,{key:1,class:"p-1"})):E("",!0)])):E("",!0),O(m(Oa),{ref_key:"menu",ref:v,model:B.value},{itemicon:A(({item:X})=>[X.overlayIcon?(d(),R(Bb,jl(St({key:0},X.overlayIcon)),null,16)):X.icon?(d(),$("i",{key:1,class:K(X.icon)},null,2)):E("",!0)]),_:1},8,["model"]),m(k)?(d(),$("div",sw)):E("",!0)],2)}}}),xl=Le(aw,[["__scopeId","data-v-09158161"]]);function lw(){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(lw,"useLayoutSync");function iw(){const e=he(),o=an(),{shouldRenderVueNodes:t}=jo(),s=Ze(null),{startSync:l}=lw(),a=n(()=>{const p=J.canvas?.graph;if(!p||s.value)return;const g=Cv(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],xr(f.size[1])]}));Pe.initializeFromLiteGraph(v);for(const f of p.reroutes.values()){const[C,w]=f.pos,h=f.parentId??void 0,k=Array.from(f.linkIds);o.createReroute(f.id,{x:C,y:w},h,k)}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&&!!J.canvas?.graph,p=>{p&&(a(),Rs(J.canvas?.graph?.extra.workflowRendererVersion))},{immediate:!0}),xt(()=>!t.value,()=>{Rs(J.canvas?.graph?.extra.workflowRendererVersion),i(),J.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=J.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(iw,"useVueNodeLifecycleIndividual");const ws=on(iw),rw={minimumFractionDigits:0,maximumFractionDigits:0},Ko=n(e=>Sr({usd:e,numberOptions:rw}),"formatCreditsValue"),ks=n(e=>e?"~":"","makePrefix"),Cs=n(e=>e??"/Run","makeSuffix"),xs=n(e=>e?` ${e}`:"","appendNote"),D=n((e,{suffix:o,note:t,approximate:s}={})=>`${ks(s)}${Ko(e)} credits${Cs(o)}${xs(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`${ks(l)}${r} credits${Cs(t)}${xs(s)}`},"formatCreditsRangeLabel"),Ge=n((e,{suffix:o,note:t,approximate:s,separator:l}={})=>{const i=e.map(r=>Ko(r)).join(l??"/");return`${ks(s)}${i} credits${Cs(o)}${xs(t)}`},"formatCreditsListLabel");function uw(e,o,t=""){try{return e(o)}catch{return t}}n(uw,"safePricingExecution");const yn=n(e=>{const o=e.widgets?.find(a=>a.name==="duration");if(!o)return D(.0715,{suffix:"/second"});const t=Number(o.value),l=.0715*(isNaN(t)?5:t);return D(l)},"calculateRunwayDurationPrice"),Mo=n(e=>o=>{const t=o.widgets?.find(a=>a.name==="duration");if(!t)return D(e,{suffix:"/second"});const s=parseFloat(String(t.value));if(!Number.isFinite(s))return D(e,{suffix:"/second"});const l=e*s;return D(l)},"makeOmniProDurationCalculator"),cw=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"?D(.112,{suffix:"/second"}):t==="std"?D(.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 D(1.2);if(a.includes("720p")&&i?.includes("normal"))return D(.6);if(a.includes("540p")&&i?.includes("fast"))return D(.9);if(a.includes("540p")&&i?.includes("normal"))return D(.45);if(a.includes("360p")&&i?.includes("fast"))return D(.9);if(a.includes("360p")&&i?.includes("normal"))return D(.45)}else if(l.includes("8")){if(a.includes("540p")&&i?.includes("normal"))return D(.9);if(a.includes("540p")&&i?.includes("fast"))return D(1.2);if(a.includes("360p")&&i?.includes("normal"))return D(.9);if(a.includes("360p")&&i?.includes("fast")||a.includes("1080p")&&i?.includes("normal")||a.includes("1080p")&&i?.includes("fast")||a.includes("720p")&&i?.includes("normal")||a.includes("720p")&&i?.includes("fast"))return D(1.2)}return D(.9)},"pixversePricingCalculator"),Po=n(e=>{const o=e.widgets?.find(k=>k.name==="model"),t=e.widgets?.find(k=>k.name==="duration"),s=e.widgets?.find(k=>k.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,C=i/10,w=v*C,h=f*C;return w===h?D(w):me(w,h)},"byteDanceVideoPricingCalculator"),ua=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 D(v)},"ltxvPricingCalculator"),ca=n(e=>{const o=e.widgets?.find(a=>a.name==="duration"),t=e.widgets?.find(a=>a.name==="generate_audio");if(!o||!t)return me(.35,1.4,{note:"(varies with duration & audio)"});const s=String(o.value),l=String(t.value).toLowerCase()==="true";return s==="5"?D(l?.7:.35):s==="10"?D(l?1.4:.7):me(.35,1.4,{note:"(varies with duration & audio)"})},"klingVideoWithAudioPricingCalculator"),So={BASIC:new Set(["720x1280","1280x720"]),PRO:new Set(["1024x1792","1792x1024"])},dw=new Set([...So.BASIC,...So.PRO]);function pw(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(!dw.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(pw,"validateSora2Selection");function fw(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(fw,"perSecForSora2");function mw(e,o){return D(Number((e*o).toFixed(2)))}n(mw,"formatRunPrice");const gw=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=pw(t,l,s);if(a)return a;const i=fw(t,s);return mw(i,l)},"sora2PricingCalculator"),wn=n((e,o)=>{const t=n(S=>e.widgets?.find(I=>I.name===S),"getWidget"),s=n((S,I)=>{const _=t(S);return!_||_.value===void 0||_.value===null?I:String(_.value)},"getString"),l=n((S,I)=>{const _=t(S);if(!_||_.value===void 0||_.value===null)return I;const x=_.value;if(typeof x=="number")return x!==0;const T=String(x).toLowerCase();return T==="true"?!0:T==="false"?!1:I},"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(),C=v==="detailed",w=f==="detailed",h=u||p;let k;a.includes("v1.4")||h?o==="text"?k=20:k=30:o==="text"?k=10:k=20;let b=k;r&&(b+=5),g&&(b+=5),C&&(b+=10),w&&(b+=20);const N=b*.01;return D(N)},"calculateTripo3DGenerationPrice"),da={FluxProCannyNode:{displayPrice:D(.05)},FluxProDepthNode:{displayPrice:D(.05)},FluxProExpandNode:{displayPrice:D(.05)},FluxProFillNode:{displayPrice:D(.05)},FluxProUltraImageNode:{displayPrice:D(.06)},FluxProKontextProNode:{displayPrice:D(.04)},FluxProKontextMaxNode:{displayPrice:D(.08)},Flux2ProImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(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 D(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 D(p)},"displayPrice")},OpenAIVideoSora2:{displayPrice:gw},IdeogramV1:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="num_images"),t=e.widgets?.find(r=>r.name==="turbo");if(!o)return me(.03,.09,{suffix:" x num_images/Run"});const s=Number(o.value)||1,a=String(t?.value).toLowerCase()==="true"?.0286:.0858,i=Number((a*s).toFixed(2));return D(i)},"displayPrice")},IdeogramV2:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="num_images"),t=e.widgets?.find(r=>r.name==="turbo");if(!o)return me(.07,.11,{suffix:" x num_images/Run"});const s=Number(o.value)||1,a=String(t?.value).toLowerCase()==="true"?.0715:.1144,i=Number((a*s).toFixed(2));return D(i)},"displayPrice")},IdeogramV3:{displayPrice:n(e=>{const o=e.widgets?.find(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 D(u)},"displayPrice")},KlingCameraControlI2VNode:{displayPrice:D(.49)},KlingCameraControlT2VNode:{displayPrice:D(.14)},KlingDualCharacterVideoEffectNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="mode"),t=e.widgets?.find(r=>r.name==="model_name"),s=e.widgets?.find(r=>r.name==="duration");if(!o||!t||!s)return me(.14,2.8,{note:"(varies with model, mode & duration)"});const l=String(o.value),a=String(s.value),i=String(t.value);return i.includes("v1-6")||i.includes("v1-5")?l.includes("pro")?a.includes("10")?D(.98):D(.49):a.includes("10")?D(.56):D(.28):i.includes("v1")?l.includes("pro")?a.includes("10")?D(.98):D(.49):a.includes("10")?D(.28):D(.14):D(.14)},"displayPrice")},KlingImage2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="mode"),t=e.widgets?.find(r=>r.name==="model_name"),s=e.widgets?.find(r=>r.name==="duration");if(!o){if(!t)return me(.14,2.8,{note:"(varies with model, mode & duration)"});const r=String(t.value);return r.includes("v2-1-master")||r.includes("v2-master")?D(1.4):r.includes("v1-6")||r.includes("v1-5")?D(.28):D(.14)}const l=String(o.value),a=String(s.value),i=String(t.value);return i.includes("v2-5-turbo")?a.includes("10")?D(.7):D(.35):i.includes("v2-1-master")||i.includes("v2-master")?a.includes("10")?D(2.8):D(1.4):i.includes("v2-1")||i.includes("v1-6")||i.includes("v1-5")?l.includes("pro")?a.includes("10")?D(.98):D(.49):a.includes("10")?D(.56):D(.28):i.includes("v1")?l.includes("pro")?a.includes("10")?D(.98):D(.49):a.includes("10")?D(.28):D(.14):D(.14)},"displayPrice")},KlingImageGenerationNode:{displayPrice:n(e=>{const t=e.inputs?.find(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 D(u)},"displayPrice")},KlingLipSyncAudioToVideoNode:{displayPrice:D(.1,{approximate:!0})},KlingLipSyncTextToVideoNode:{displayPrice:D(.1,{approximate:!0})},KlingSingleImageVideoEffectNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="effect_scene");if(!o)return me(.28,.49,{note:"(varies with effect scene)"});const t=String(o.value);return t.includes("fuzzyfuzzy")||t.includes("squish")?D(.28):t.includes("dizzydizzy")||t.includes("bloombloom")?D(.49):(t.includes("expansion"),D(.28))},"displayPrice")},KlingStartEndFrameNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="mode");if(!o)return me(.14,2.8,{note:"(varies with model, mode & duration)"});const t=String(o.value);return t.includes("v2-5-turbo")?t.includes("10")?D(.7):D(.35):t.includes("v2-1")?t.includes("10s")?D(.98):D(.49):t.includes("v2-master")?t.includes("10s")?D(2.8):D(1.4):t.includes("v1-6")?t.includes("pro")?t.includes("10s")?D(.98):D(.49):t.includes("10s")?D(.56):D(.28):t.includes("v1")?t.includes("pro")?t.includes("10s")?D(.98):D(.49):t.includes("10s")?D(.28):D(.14):D(.14)},"displayPrice")},KlingTextToVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="mode");if(!o)return me(.14,2.8,{note:"(varies with model, mode & duration)"});const t=String(o.value);return t.includes("v2-5-turbo")?t.includes("10")?D(.7):D(.35):t.includes("v2-1-master")||t.includes("v2-master")?t.includes("10s")?D(2.8):D(1.4):t.includes("v1-6")?t.includes("pro")?t.includes("10s")?D(.98):D(.49):t.includes("10s")?D(.56):D(.28):t.includes("v1")?t.includes("pro")?t.includes("10s")?D(.98):D(.49):t.includes("10s")?D(.28):D(.14):D(.14)},"displayPrice")},KlingVideoExtendNode:{displayPrice:D(.28)},KlingVirtualTryOnNode:{displayPrice:D(.07)},KlingOmniProTextToVideoNode:{displayPrice:Mo(.112)},KlingOmniProFirstLastFrameNode:{displayPrice:Mo(.112)},KlingOmniProImageToVideoNode:{displayPrice:Mo(.112)},KlingOmniProVideoToVideoNode:{displayPrice:Mo(.168)},KlingMotionControl:{displayPrice:cw},KlingOmniProEditVideoNode:{displayPrice:D(.168,{suffix:"/second"})},KlingOmniProImageNode:{displayPrice:D(.028)},KlingTextToVideoWithAudio:{displayPrice:ca},KlingImageToVideoWithAudio:{displayPrice:ca},LumaImageToVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="model"),t=e.widgets?.find(r=>r.name==="resolution"),s=e.widgets?.find(r=>r.name==="duration");if(!o||!t||!s)return me(.2,16.4,{note:"(varies with model, resolution & duration)"});const l=String(o.value),a=String(t.value).toLowerCase(),i=String(s.value);if(l.includes("ray-flash-2")){if(i.includes("5s")){if(a.includes("4k"))return D(3.13);if(a.includes("1080p"))return D(.79);if(a.includes("720p"))return D(.34);if(a.includes("540p"))return D(.2)}else if(i.includes("9s")){if(a.includes("4k"))return D(5.65);if(a.includes("1080p"))return D(1.42);if(a.includes("720p"))return D(.61);if(a.includes("540p"))return D(.36)}}else if(l.includes("ray-2")){if(i.includes("5s")){if(a.includes("4k"))return D(9.11);if(a.includes("1080p"))return D(2.27);if(a.includes("720p"))return D(1.02);if(a.includes("540p"))return D(.57)}else if(i.includes("9s")){if(a.includes("4k"))return D(16.4);if(a.includes("1080p"))return D(4.1);if(a.includes("720p"))return D(1.83);if(a.includes("540p"))return D(1.03)}}else if(l.includes("ray-1-6"))return D(.5);return D(.79)},"displayPrice")},LumaVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="model"),t=e.widgets?.find(r=>r.name==="resolution"),s=e.widgets?.find(r=>r.name==="duration");if(!o||!t||!s)return me(.2,16.4,{note:"(varies with model, resolution & duration)"});const l=String(o.value),a=String(t.value).toLowerCase(),i=String(s.value);if(l.includes("ray-flash-2")){if(i.includes("5s")){if(a.includes("4k"))return D(3.13);if(a.includes("1080p"))return D(.79);if(a.includes("720p"))return D(.34);if(a.includes("540p"))return D(.2)}else if(i.includes("9s")){if(a.includes("4k"))return D(5.65);if(a.includes("1080p"))return D(1.42);if(a.includes("720p"))return D(.61);if(a.includes("540p"))return D(.36)}}else if(l.includes("ray-2")){if(i.includes("5s")){if(a.includes("4k"))return D(9.11);if(a.includes("1080p"))return D(2.27);if(a.includes("720p"))return D(1.02);if(a.includes("540p"))return D(.57)}else if(i.includes("9s")){if(a.includes("4k"))return D(16.4);if(a.includes("1080p"))return D(4.1);if(a.includes("720p"))return D(1.83);if(a.includes("540p"))return D(1.03)}}else if(l.includes("ray-1-6"))return D(.5);return D(.79)},"displayPrice")},MinimaxImageToVideoNode:{displayPrice:D(.43)},MinimaxTextToVideoNode:{displayPrice:D(.43)},MinimaxHailuoVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="resolution"),t=e.widgets?.find(a=>a.name==="duration");if(!o||!t)return me(.28,.56,{note:"(varies with resolution & duration)"});const s=String(o.value),l=String(t.value);if(s.includes("768P")){if(l.includes("6"))return D(.28);if(l.includes("10"))return D(.56)}else if(s.includes("1080P")&&l.includes("6"))return D(.49);return D(.43)},"displayPrice")},OpenAIDalle2:{displayPrice:n(e=>{const o=e.widgets?.find(r=>r.name==="size"),t=e.widgets?.find(r=>r.name==="n");if(!o)return me(.016,.02,{suffix:" x n/Run",note:"(varies with size & n)"});const s=String(o.value),l=Number(t?.value)||1;let a=.02;s.includes("1024x1024")?a=.02:s.includes("512x512")?a=.018:s.includes("256x256")&&(a=.016);const i=Number((a*l).toFixed(3));return D(i)},"displayPrice")},OpenAIDalle3:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="size"),t=e.widgets?.find(a=>a.name==="quality");if(!o||!t)return me(.04,.12,{note:"(varies with size & quality)"});const s=String(o.value),l=String(t.value);return s.includes("1024x1024")?l.includes("hd")?D(.08):D(.04):s.includes("1792x1024")||s.includes("1024x1792")?l.includes("hd")?D(.12):D(.08):D(.04)},"displayPrice")},OpenAIGPTImage1:{displayPrice:n(e=>{const o=e.widgets?.find(i=>i.name==="quality"),t=e.widgets?.find(i=>i.name==="n");if(!o)return me(.011,.3,{suffix:" x n/Run",note:"(varies with quality & n)"});const s=String(o.value),l=Number(t?.value)||1;let a=[.046,.07];return s.includes("high")?a=[.167,.3]:s.includes("medium")?a=[.046,.07]:s.includes("low")&&(a=[.011,.02]),l===1?me(a[0],a[1]):me(a[0],a[1],{suffix:` x ${l}/Run`})},"displayPrice")},PixverseImageToVideoNode:{displayPrice:bn},PixverseTextToVideoNode:{displayPrice:bn},PixverseTransitionVideoNode:{displayPrice:bn},RecraftCreativeUpscaleNode:{displayPrice:D(.25)},RecraftCrispUpscaleNode:{displayPrice:D(.004)},RecraftGenerateColorFromImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return D(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return D(s)},"displayPrice")},RecraftGenerateImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return D(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return D(s)},"displayPrice")},RecraftGenerateVectorImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return D(.08,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.08*t).toFixed(2));return D(s)},"displayPrice")},RecraftImageInpaintingNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return D(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return D(s)},"displayPrice")},RecraftImageToImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return D(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return D(s)},"displayPrice")},RecraftRemoveBackgroundNode:{displayPrice:D(.01)},RecraftReplaceBackgroundNode:{displayPrice:D(.04)},RecraftTextToImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return D(.04,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.04*t).toFixed(2));return D(s)},"displayPrice")},RecraftTextToVectorNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return D(.08,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.08*t).toFixed(2));return D(s)},"displayPrice")},RecraftVectorizeImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="n");if(!o)return D(.01,{suffix:" x n/Run"});const t=Number(o.value)||1,s=Number((.01*t).toFixed(2));return D(s)},"displayPrice")},StabilityStableImageSD_3_5Node:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return me(.035,.065,{note:"(varies with model)"});const t=String(o.value).toLowerCase();return t.includes("large")?D(.065):(t.includes("medium"),D(.035))},"displayPrice")},StabilityStableImageUltraNode:{displayPrice:D(.08)},StabilityUpscaleConservativeNode:{displayPrice:D(.25)},StabilityUpscaleCreativeNode:{displayPrice:D(.25)},StabilityUpscaleFastNode:{displayPrice:D(.01)},StabilityTextToAudio:{displayPrice:D(.2)},StabilityAudioToAudio:{displayPrice:D(.2)},StabilityAudioInpaint:{displayPrice:D(.2)},VeoVideoGenerationNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="duration_seconds");if(!o)return me(2.5,5,{note:"(varies with duration)"});const t=.5*Number(o.value);return D(t)},"displayPrice")},Veo3VideoGenerationNode:{displayPrice:n(e=>{const o=e.widgets?.find(a=>a.name==="model"),t=e.widgets?.find(a=>a.name==="generate_audio");if(!o||!t)return me(.8,3.2,{note:"(varies with model & audio generation)"});const s=String(o.value),l=String(t.value).toLowerCase()==="true";return s.includes("veo-3.0-fast-generate-001")||s.includes("veo-3.1-fast-generate")?D(l?1.2:.8):s.includes("veo-3.0-generate-001")||s.includes("veo-3.1-generate")?D(l?3.2:1.6):me(.8,3.2)},"displayPrice")},Veo3FirstLastFrameNode:{displayPrice:n(e=>{const o=e.widgets?.find(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 D(u)},"displayPrice")},LumaImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="model"),t=e.widgets?.find(l=>l.name==="aspect_ratio");if(!o||!t)return me(.0064,.026,{note:"(varies with model & aspect ratio)"});const s=String(o.value);return s.includes("photon-flash-1")?D(.0027):s.includes("photon-1")?D(.0104):D(.0246)},"displayPrice")},LumaImageModifyNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return me(.0027,.0104,{note:"(varies with model)"});const t=String(o.value);return t.includes("photon-flash-1")?D(.0027):t.includes("photon-1")?D(.0104):D(.0246)},"displayPrice")},MoonvalleyTxt2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return D(1.5);const t=String(o.value);return D(t==="5s"?1.5:t==="10s"?3:1.5)},"displayPrice")},MoonvalleyImg2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return D(1.5);const t=String(o.value);return D(t==="5s"?1.5:t==="10s"?3:1.5)},"displayPrice")},MoonvalleyVideo2VideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="length");if(!o)return D(2.25);const t=String(o.value);return D(t==="5s"?2.25:t==="10s"?4:2.25)},"displayPrice")},RunwayTextToImageNode:{displayPrice:D(.11)},RunwayImageToVideoNodeGen3a:{displayPrice:yn},RunwayImageToVideoNodeGen4:{displayPrice:yn},RunwayFirstLastFrameNode:{displayPrice:yn},Rodin3D_Regular:{displayPrice:D(.4)},Rodin3D_Detail:{displayPrice:D(.4)},Rodin3D_Smooth:{displayPrice:D(.4)},Rodin3D_Sketch:{displayPrice:D(.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")?D(.2):D(.1):me(.1,.2,{note:"(varies with quality)"})},"displayPrice")},TripoRigNode:{displayPrice:"$0.25/Run"},TripoConversionNode:{displayPrice:n(e=>{const o=n(w=>e.widgets?.find(h=>h.name===w)?.value,"getWidgetValue"),t=n((w,h)=>{const k=o(w);if(k==null||k==="")return h;if(typeof k=="number")return Number.isFinite(k)?k:h;const b=Number(k);return Number.isFinite(b)?b:h},"getNumber"),s=n((w,h)=>{const k=o(w);if(k==null)return h;if(typeof k=="number")return k!==0;const b=String(k).toLowerCase();return b==="true"?!0:b==="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),D((l?10:5)*.01)},"displayPrice")},TripoRetargetNode:{displayPrice:D(.1)},TripoRefineNode:{displayPrice:D(.3)},GeminiNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return"Token-based";const t=String(o.value);return t.includes("gemini-2.5-flash-preview-04-17")?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:D(.039,{suffix:"/Image (1K)",approximate:!0})},GeminiImage2Node:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="resolution");if(!o)return"Token-based";const t=String(o.value);return t.includes("1K")?D(.134,{suffix:"/Image",approximate:!0}):t.includes("2K")?D(.134,{suffix:"/Image",approximate:!0}):t.includes("4K")?D(.24,{suffix:"/Image",approximate:!0}):"Token-based"},"displayPrice")},OpenAIChatNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");if(!o)return"Token-based";const t=String(o.value);return t.includes("o4-mini")?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:D(.4)},ViduImageToVideoNode:{displayPrice:D(.4)},ViduReferenceVideoNode:{displayPrice:D(.4)},ViduStartEndToVideoNode:{displayPrice:D(.4)},ByteDanceImageNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");return o&&String(o.value).includes("seedream-3-0-t2i")?D(.03):"Token-based"},"displayPrice")},ByteDanceImageEditNode:{displayPrice:n(e=>{const o=e.widgets?.find(s=>s.name==="model");return o&&String(o.value).includes("seededit-3-0-i2i")?D(.03):"Token-based"},"displayPrice")},ByteDanceSeedreamNode:{displayPrice:n(e=>{const o=e.widgets?.find(l=>l.name==="model"),t=String(o?.value??"").toLowerCase();let s=.03;return t.includes("seedream-4-5-251128")?s=.04:t.includes("seedream-4-0-250828")&&(s=.03),D(s,{suffix:" x images/Run",approximate:!0})},"displayPrice")},ByteDanceTextToVideoNode:{displayPrice: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 D(u)},"displayPrice")},WanImageToVideoApi:{displayPrice:n(e=>{const o=e.widgets?.find(u=>u.name==="duration"),t=e.widgets?.find(u=>u.name==="resolution");if(!o||!t)return me(.05,.15,{suffix:"/second"});const s=parseFloat(String(o.value)),l=String(t.value).trim().toLowerCase(),i={"480p":.05,"720p":.1,"1080p":.15}[l];if(isNaN(s)||!i)return me(.05,.15,{suffix:"/second"});const r=Number((i*s).toFixed(2));return D(r)},"displayPrice")},WanTextToImageApi:{displayPrice:D(.03)},WanImageToImageApi:{displayPrice:D(.03)},LtxvApiTextToVideo:{displayPrice:ua},LtxvApiImageToVideo:{displayPrice:ua},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 D(r)},"displayPrice")},Vidu2ImageToVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(v=>v.name==="model"),t=e.widgets?.find(v=>v.name==="duration"),s=e.widgets?.find(v=>v.name==="resolution");if(!o||!t||!s)return me(.04,1,{note:"(varies with model, duration & resolution)"});const l=String(o.value).toLowerCase(),a=parseFloat(String(t.value)),r=String(s.value).toLowerCase().includes("1080");let u,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 D(.04);if(a<=2)return D(.05);const v=.05+.05*(a-2);return D(v)}else return me(.04,1,{note:"(varies with model, duration & resolution)"});if(!Number.isFinite(a)||a<=0)return me(.04,1,{note:"(varies with model, duration & resolution)"});const g=u+p*(a-1);return D(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),D(v)},"displayPrice")},Vidu2StartEndToVideoNode:{displayPrice:n(e=>{const o=e.widgets?.find(v=>v.name==="model"),t=e.widgets?.find(v=>v.name==="duration"),s=e.widgets?.find(v=>v.name==="resolution");if(!o||!t||!s)return me(.04,1,{note:"(varies with model, duration & resolution)"});const l=String(o.value).toLowerCase(),a=parseFloat(String(t.value)),r=String(s.value).toLowerCase().includes("1080");let u,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 D(.04);if(a<=2)return D(.05);const v=.05+.05*(a-2);return D(v)}else return me(.04,1,{note:"(varies with model, duration & resolution)"});if(!Number.isFinite(a)||a<=0)return D(u);const g=u+p*(a-1);return D(g)},"displayPrice")}},vw=n(()=>({getNodeDisplayPrice:n(s=>{if(!s.constructor?.nodeData?.api_node)return"";const l=s.constructor.nodeData.name,a=da[l];return a?typeof a.displayPrice=="function"?uw(a.displayPrice,s,""):a.displayPrice:""},"getNodeDisplayPrice"),getNodePricingConfig:n(s=>da[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 hw=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 is({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"),yw=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=>ql(l,a)},"useComputedWithWidgetWatch"),bw=n(()=>{const e=re(),o=Xn(),t=dt(),s=hw(),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],()=>{J.canvas?.setDirty(!0,!0)});const u=_t();function p(g,v){return!(v===mt.None||g?.isCoreNode&&v===mt.HideBuiltIn)}n(p,"badgeTextVisible"),ze(()=>{const g=vw();o.registerExtension({name:"Comfy.NodeBadge",nodeCreated(v){v.badgePosition=_r.TopRight;const f=y(()=>{const C=u.fromLGraphNode(v);return new is({text:Kl.truncate([p(C,a.value)?`#${v.id}`:"",p(C,i.value)?C?.nodeLifeCycleBadgeText??"":"",p(C,l.value)?C?.nodeSource?.badgeText??"":""].filter(w=>w.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 w=typeof g.getNodePricingConfig(v)?.displayPrice=="function";let h;const k=n(()=>{const b=g.getNodeDisplayPrice(v);return s.getCreditsBadge(b)},"createBadge");if(w){const b=g.getRelevantWidgetNames(v.constructor.nodeData?.name);h=yw(v,{widgetNames:b,triggerCanvasRedraw:!0})(k)}else h=y(k);v.badges.push(()=>h.value)}},init(){J.canvas.canvas.addEventListener("litegraph:set-graph",()=>{for(const v of J.canvas.graph?.nodes??[])s.updateSubgraphCredits(v)}),J.canvas.canvas.addEventListener("subgraph-converted",v=>s.updateSubgraphCredits(v.detail.subgraphNode))},afterConfigureGraph(){for(const v of J.canvas.graph?.nodes??[])s.updateSubgraphCredits(v)}})})},"useNodeBadge"),ww=n(e=>{const o=Kn(),t=_o(),s=tt();tl(()=>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=ol().clientPosToCanvasPos([a.clientX,a.clientY]);if(r.data instanceof Tr){const g=r.data,v=[...p];v[1]+=ge.NODE_TITLE_HEIGHT,t.addNodeOnGraph(g,{pos:v})}else if(r.data instanceof $r){const g=r.data,v=p,f=J.canvas.graph?.getNodeOnPos(v[0],v[1]);let C=null,w=null;if(f){const h=o.getAllNodeProviders(g.directory);for(const k of h)k.nodeDef.name===f.comfyClass&&(w=f,C=k)}if(!w){const h=o.getNodeProvider(g.directory);h&&(w=t.addNodeOnGraph(h.nodeDef,{pos:v}),C=h)}if(w){const h=w.widgets?.find(k=>k.name===C?.key);h&&(h.value=g.file_name)}}else if(r.data instanceof Ba){const g=r.data;await s.insertWorkflow(g,{position:p})}}},"onDrop")})},"useCanvasDrop"),kw=n(()=>{Yt.install(Ye.prototype,"getCanvasMenuOptions");const{getCanvasMenuOptions:e}=Ye.prototype,o=n(function(...r){const u=e.apply(this,r),p=J.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=J.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"),C=Ae("contextMenu. to widget"," to widget");for(const w of r){if(typeof w=="string"||(l(w?.submenu?.options,u),!w?.content))continue;Nr(`contextMenu.${w.content}`)&&(w.content=Ae(`contextMenu.${w.content}`,w.content));const h=u.extra||u.parentMenu?.options?.extra,k=w.content?.match(p);if(k){let N=k[1];h?.inputs?.find(S=>{if(S.name!=N)return!1;N=S.label?S.label:S.name}),h?.widgets?.find(S=>{if(S.name!=N)return!1;N=S.label?S.label:S.name}),w.content=v+N+f;continue}const b=w.content?.match(g);if(b){let N=b[1];h?.inputs?.find(S=>{if(S.name!=N)return!1;N=S.label?S.label:S.name}),h?.widgets?.find(S=>{if(S.name!=N)return!1;N=S.label?S.label:S.name}),w.content=v+N+C;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"),Cw=['<meta charset="utf-8"><div><span data-metadata="','"></span></div><span style="white-space:pre-wrap;">Text</span>'],xw=n(()=>{const e=he();Oe(document,"copy",o=>{if(Ir(o.target))return;const t=e.canvas;if(t?.selectedItems){const s=t.copyToClipboard(),l=btoa(String.fromCharCode(...Array.from(new TextEncoder().encode(s))));return o.clipboardData?.setData("text/html",Cw.join(l)),o.preventDefault(),o.stopImmediatePropagation(),!1}})},"useCopy"),Sw=n(()=>{window.LiteGraph=ge,window.LGraph=Mr,window.LLink=Pr,window.LGraphNode=vt,window.LGraphGroup=Ot,window.DragAndScale=Dr,window.LGraphCanvas=Ye,window.ContextMenu=Ar,window.LGraphBadge=is},"useGlobalLitegraph"),_w=n(()=>{const e=re(),o=he();ke(()=>{const t=e.get("Comfy.Graph.CanvasInfo");o.canvas&&(o.canvas.show_info=t,o.canvas.draw(!1,!0))}),ke(()=>{const t=e.get("Comfy.Graph.ZoomSpeed");o.canvas&&(o.canvas.zoom_speed=t)}),ke(()=>{ge.snaps_for_comfy=e.get("Comfy.Node.AutoSnapLinkToSlot")}),ke(()=>{ge.snap_highlights_node=e.get("Comfy.Node.SnapHighlightsNode")}),ke(()=>{vt.keepAllLinksOnBypass=e.get("Comfy.Node.BypassAllLinksOnDelete")}),ke(()=>{ge.middle_click_slot_add_default_node=e.get("Comfy.Node.MiddleClickRerouteNode")}),ke(()=>{const t=e.get("Comfy.LinkRenderMode");o.canvas&&(o.canvas.links_render_mode=t,o.canvas.setDirty(!1,!0))}),ke(()=>{const t=e.get("LiteGraph.Canvas.MinFontSizeForLOD");o.canvas&&(o.canvas.min_font_size_for_lod=t,o.canvas.setDirty(!0,!0))}),ke(()=>{const t=e.get("Comfy.Graph.LinkMarkers"),{canvas:s}=o;s&&(s.linkMarkerShape=t,s.setDirty(!1,!0))}),ke(()=>{const t=e.get("LiteGraph.Canvas.MaximumFps"),{canvas:s}=o;s&&(s.maximumFps=t)}),ke(()=>{const t=e.get("Comfy.Graph.CtrlShiftZoom"),{canvas:s}=o;s&&(s.dragZoomEnabled=t)}),ke(()=>{const t=e.get("Comfy.Graph.LiveSelection"),{canvas:s}=o;s&&(s.liveSelection=t)}),ke(()=>{cn.doubleClickTime=e.get("Comfy.Pointer.DoubleClickTime")}),ke(()=>{cn.bufferTime=e.get("Comfy.Pointer.ClickBufferTime")}),ke(()=>{cn.maxClickDrift=e.get("Comfy.Pointer.ClickDrift")}),ke(()=>{ge.CANVAS_GRID_SIZE=e.get("Comfy.SnapToGrid.GridSize")}),ke(()=>{ge.alwaysSnapToGrid=e.get("pysssss.SnapToGrid")}),ke(()=>{ge.context_menu_scaling=e.get("LiteGraph.ContextMenu.Scaling")}),ke(()=>{ge.Reroute.maxSplineOffset=e.get("LiteGraph.Reroute.SplineOffset")}),ke(()=>{const t=e.get("Comfy.Canvas.NavigationMode");ge.canvasNavigationMode=t,ge.macTrackpadGestures=t==="standard"}),ke(()=>{const t=e.get("Comfy.Canvas.LeftMouseClickBehavior");ge.leftMouseClickBehavior=t}),ke(()=>{const t=e.get("Comfy.Canvas.MouseWheelScroll");ge.mouseWheelScroll=t}),ke(()=>{ge.saveViewportWithGraph=e.get("Comfy.EnableWorkflowViewRestore")})},"useLitegraphSettings"),Tw=[{id:"Comfy.Memory.AllowManualUnload",name:"Allow manual unload of models and execution cache via user command",type:"hidden",defaultValue:!0,versionAdded:"1.18.0"},{id:"Comfy.Validation.Workflows",name:"Validate workflows",type:"boolean",defaultValue:!1},{id:"Comfy.NodeSearchBoxImpl",category:["Comfy","Node Search Box","Implementation"],experimental:!0,name:"Node search box implementation",type:"combo",options:["default","litegraph (legacy)"],defaultValue:"default"},{id:"Comfy.LinkRelease.Action",category:["LiteGraph","LinkRelease","Action"],name:"Action on link release (No modifier)",type:"combo",options:Object.values(wt),defaultValue:wt.CONTEXT_MENU,defaultsByInstallVersion:{"1.24.1":wt.SEARCH_BOX}},{id:"Comfy.LinkRelease.ActionShift",category:["LiteGraph","LinkRelease","ActionShift"],name:"Action on link release (Shift)",type:"combo",options:Object.values(wt),defaultValue:wt.SEARCH_BOX,defaultsByInstallVersion:{"1.24.1":wt.CONTEXT_MENU}},{id:"Comfy.NodeSearchBoxImpl.NodePreview",category:["Comfy","Node Search Box","NodePreview"],name:"Node preview",tooltip:"Only applies to the default implementation",type:"boolean",defaultValue:!0},{id:"Comfy.NodeSearchBoxImpl.ShowCategory",category:["Comfy","Node Search Box","ShowCategory"],name:"Show node category in search results",tooltip:"Only applies to the default implementation",type:"boolean",defaultValue:!0},{id:"Comfy.NodeSearchBoxImpl.ShowIdName",category:["Comfy","Node Search Box","ShowIdName"],name:"Show node id name in search results",tooltip:"Only applies to the default implementation",type:"boolean",defaultValue:!1},{id:"Comfy.NodeSearchBoxImpl.ShowNodeFrequency",category:["Comfy","Node Search Box","ShowNodeFrequency"],name:"Show node frequency in search results",tooltip:"Only applies to the default implementation",type:"boolean",defaultValue:!1},{id:"Comfy.Sidebar.Location",category:["Appearance","Sidebar","Location"],name:"Sidebar location",type:"combo",options:["left","right"],defaultValue:"left"},{id:"Comfy.Sidebar.Size",category:["Appearance","Sidebar","Size"],name:"Sidebar size",type:"combo",options:["normal","small"],defaultValue:n(()=>window.innerWidth<1536?"small":"normal","defaultValue")},{id:"Comfy.Sidebar.UnifiedWidth",category:["Appearance","Sidebar","UnifiedWidth"],name:"Unified sidebar width",type:"boolean",defaultValue:!0,versionAdded:"1.18.1"},{id:"Comfy.Sidebar.Style",category:["Appearance","Sidebar","Style"],name:"Sidebar style",type:"combo",options:["floating","connected"],defaultValue:"connected"},{id:"Comfy.TextareaWidget.FontSize",category:["Appearance","Node Widget","TextareaWidget","FontSize"],name:"Textarea widget font size",type:"slider",defaultValue:10,attrs:{min:8,max:24}},{id:"Comfy.TextareaWidget.Spellcheck",category:["Comfy","Node Widget","TextareaWidget","Spellcheck"],name:"Textarea widget spellcheck",type:"boolean",defaultValue:!1},{id:"Comfy.Workflow.SortNodeIdOnSave",name:"Sort node IDs when saving workflow",type:"boolean",defaultValue:!1},{id:"Comfy.Canvas.NavigationMode",category:["LiteGraph","Canvas Navigation","NavigationMode"],name:"Navigation Mode",defaultValue:"legacy",type:"combo",sortOrder:100,options:[{value:"standard",text:"Standard (New)"},{value:"legacy",text:"Drag Navigation"},{value:"custom",text:"Custom"}],versionAdded:"1.25.0",defaultsByInstallVersion:{"1.25.0":"legacy"},onChange:n(async(e,o)=>{if(!o)return;const t=re();e==="standard"?(await t.set("Comfy.Canvas.LeftMouseClickBehavior","select"),await t.set("Comfy.Canvas.MouseWheelScroll","panning")):e==="legacy"&&(await t.set("Comfy.Canvas.LeftMouseClickBehavior","panning"),await t.set("Comfy.Canvas.MouseWheelScroll","zoom"))},"onChange")},{id:"Comfy.Canvas.LeftMouseClickBehavior",category:["LiteGraph","Canvas Navigation","LeftMouseClickBehavior"],name:"Left Mouse Click Behavior",defaultValue:"panning",type:"radio",sortOrder:50,options:[{value:"panning",text:"Panning"},{value:"select",text:"Select"}],versionAdded:"1.27.4",onChange:n(async e=>{const o=re(),t=o.get("Comfy.Canvas.NavigationMode");if(t!=="custom"){if(e==="select"&&t==="standard"||e==="panning"&&t==="legacy")return;await o.set("Comfy.Canvas.NavigationMode","custom")}},"onChange")},{id:"Comfy.Canvas.MouseWheelScroll",category:["LiteGraph","Canvas Navigation","MouseWheelScroll"],name:"Mouse Wheel Scroll",defaultValue:"zoom",type:"radio",options:[{value:"panning",text:"Panning"},{value:"zoom",text:"Zoom in/out"}],versionAdded:"1.27.4",onChange:n(async e=>{const o=re(),t=o.get("Comfy.Canvas.NavigationMode");if(t!=="custom"){if(e==="panning"&&t==="standard"||e==="zoom"&&t==="legacy")return;await o.set("Comfy.Canvas.NavigationMode","custom")}},"onChange")},{id:"Comfy.Graph.CanvasInfo",category:["LiteGraph","Canvas","CanvasInfo"],name:"Show canvas info on bottom left corner (fps, etc.)",type:"boolean",defaultValue:!0},{id:"Comfy.Node.ShowDeprecated",name:"Show deprecated nodes in search",tooltip:"Deprecated nodes are hidden by default in the UI, but remain functional in existing workflows that use them.",type:"boolean",defaultValue:!1},{id:"Comfy.Node.ShowExperimental",name:"Show experimental nodes in search",tooltip:"Experimental nodes are marked as such in the UI and may be subject to significant changes or removal in future versions. Use with caution in production workflows",type:"boolean",defaultValue:!0},{id:"Comfy.Node.Opacity",category:["Appearance","Node","Opacity"],name:"Node opacity",type:"slider",defaultValue:1,attrs:{min:.01,max:1,step:.01}},{id:"Comfy.Workflow.ShowMissingNodesWarning",name:"Show missing nodes warning",type:"boolean",defaultValue:!0},{id:"Comfy.Workflow.ShowMissingModelsWarning",name:"Show missing models warning",type:"boolean",defaultValue:!0,experimental:!0},{id:"Comfy.Workflow.WarnBlueprintOverwrite",name:"Require confirmation to overwrite an existing subgraph blueprint",type:"boolean",defaultValue:!0},{id:"Comfy.Graph.ZoomSpeed",category:["LiteGraph","Canvas","ZoomSpeed"],name:"Canvas zoom speed",type:"slider",defaultValue:1.1,attrs:{min:1.01,max:2.5,step:.01}},{id:"Comfy.NodeLibrary.Bookmarks",name:"Node library bookmarks with display name (deprecated)",type:"hidden",defaultValue:[],deprecated:!0},{id:"Comfy.NodeLibrary.Bookmarks.V2",name:"Node library bookmarks v2 with unique name",type:"hidden",defaultValue:[]},{id:"Comfy.NodeLibrary.BookmarksCustomization",name:"Node library bookmarks customization",type:"hidden",defaultValue:{}},{id:"Comfy.GroupSelectedNodes.Padding",category:["LiteGraph","Group","Padding"],name:"Group selected nodes padding",type:"slider",defaultValue:10,attrs:{min:0,max:100}},{id:"Comfy.Node.DoubleClickTitleToEdit",category:["LiteGraph","Node","DoubleClickTitleToEdit"],name:"Double click node title to edit",type:"boolean",defaultValue:!0},{id:"Comfy.Node.AllowImageSizeDraw",category:["LiteGraph","Node Widget","AllowImageSizeDraw"],name:"Show width × height below the image preview",type:"boolean",defaultValue:!0},{id:"Comfy.Group.DoubleClickTitleToEdit",category:["LiteGraph","Group","DoubleClickTitleToEdit"],name:"Double click group title to edit",type:"boolean",defaultValue:!0},{id:"Comfy.Window.UnloadConfirmation",name:"Show confirmation when closing window",type:"boolean",defaultValue:!0,versionModified:"1.7.12"},{id:"Comfy.TreeExplorer.ItemPadding",category:["Appearance","Tree Explorer","ItemPadding"],name:"Tree explorer item padding",type:"slider",defaultValue:2,attrs:{min:0,max:8,step:1}},{id:"Comfy.ModelLibrary.AutoLoadAll",name:"Automatically load all model folders",tooltip:"If true, all folders will load as soon as you open the model library (this may cause delays while it loads). If false, root level model folders will only load once you click on them.",type:"boolean",defaultValue:!1},{id:"Comfy.ModelLibrary.NameFormat",name:"What name to display in the model library tree view",tooltip:'Select "filename" to render a simplified view of the raw filename (without directory or ".safetensors" extension) in the model list. Select "title" to display the configurable model metadata title.',type:"combo",options:["filename","title"],defaultValue:"title"},{id:"Comfy.Locale",name:"Language",type:"combo",options:[{value:"en",text:"English"},{value:"zh",text:"中文"},{value:"zh-TW",text:"繁體中文"},{value:"ru",text:"Русский"},{value:"ja",text:"日本語"},{value:"ko",text:"한국어"},{value:"fr",text:"Français"},{value:"es",text:"Español"},{value:"ar",text:"عربي"},{value:"tr",text:"Türkçe"},{value:"pt-BR",text:"Português (BR)"},{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 $w(){const e=Re(),o=re(),t=tt(),s=y(()=>o.get("Comfy.Workflow.AutoSave")),l=y(()=>o.get("Comfy.Workflow.AutoSaveDelay"));let a=null,i=!1,r=!1;const u=n(()=>{if(a&&(clearTimeout(a),a=null),s.value==="after delay"){if(i){r=!0;return}const 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($w,"useWorkflowAutoSave");function Nw(){const e=Aa(),o=La(),{t}=pe(),s=Wt(),l=wl(),a=he(),i=nl.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 C=e.query.source||"default";if(!u(C)){console.warn(`[useTemplateUrlLoader] Invalid source parameter format: ${C}`);return}const w=e.query.mode;if(w&&(typeof w!="string"||!u(w))){console.warn(`[useTemplateUrlLoader] Invalid mode parameter format: ${w}`);return}w&&!p(w)&&console.warn(`[useTemplateUrlLoader] Unsupported mode parameter: ${w}. Supported modes: ${r.join(", ")}`);try{await l.loadTemplates(),await l.loadWorkflowTemplate(f,C)?w==="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(),Lr(i)}},"loadTemplateFromUrl")}}n(Nw,"useTemplateUrlLoader");function Iw(){const e=Re(),o=re(),t=Aa(),s=La(),l=Nw(),a=nl.TEMPLATE,i=n(async()=>{Er(a);const I=Vr(a,t.query);return I&&await s.replace({query:I}),I??t.query},"ensureTemplateQueryFromIntent"),r=y(()=>o.get("Comfy.Workflow.Persist")),u=n(()=>{if(!r.value)return;const I=JSON.stringify(J.rootGraph.serialize());try{localStorage.setItem("workflow",I),Te.clientId&&sessionStorage.setItem(`workflow:${Te.clientId}`,I)}catch(_){const x=Object.keys(sessionStorage).filter(T=>T.startsWith("workflow:")||T==="workflow");throw console.error("QuotaExceededError details:",{workflowSizeKB:Math.round(I.length/1024),totalStorageItems:Object.keys(sessionStorage).length,ourWorkflowKeys:x.length,ourWorkflowSizes:x.map(T=>({key:T,sizeKB:Math.round(sessionStorage[T].length/1024)})),error:_ instanceof Error?_.message:String(_)}),_}},"persistCurrentWorkflow"),p=n(async(I,_)=>{if(!I)return!1;const x=JSON.parse(I);return await J.loadGraphData(x,!0,!0,_),!0},"loadWorkflowFromStorage"),g=n(async()=>{const I=dn("Comfy.PreviousWorkflow"),_=Te.initialClientId??Te.clientId;if(_){const T=sessionStorage.getItem(`workflow:${_}`);if(await p(T,I))return!0}const x=localStorage.getItem("workflow");return await p(x,I)},"loadPreviousWorkflowFromStorage"),v=n(async()=>{o.get("Comfy.TutorialCompleted")?await J.loadGraphData():(await o.set("Comfy.TutorialCompleted",!0),await tt().loadBlankWorkflow(),await Se().execute("Comfy.BrowseTemplates"))},"loadDefaultWorkflow"),f=n(async()=>{if(r.value)try{await g()||await v()}catch(I){console.error("Error loading previous workflow",I),await v()}},"initializeWorkflow"),C=n(async()=>{const I=await i();I.template&&typeof I.template=="string"&&await l.loadTemplateFromUrl()},"loadTemplateFromUrlIfPresent");se(()=>e.activeWorkflow?.key,I=>{I&&(pn("Comfy.PreviousWorkflow",I),u())}),Te.addEventListener("graphChanged",u),Ma(()=>{Te.removeEventListener("graphChanged",u)});const w=y(()=>e.openWorkflows),h=y(()=>e.activeWorkflow),k=y(()=>{if(!w.value||!h.value)return{paths:[],activeIndex:-1};const I=w.value.filter(x=>x?.isPersisted).map(x=>x.path),_=w.value.findIndex(x=>x.path===h.value?.path);return{paths:I,activeIndex:_}}),b=JSON.parse(dn("Comfy.OpenWorkflowsPaths")||"[]"),N=JSON.parse(dn("Comfy.ActiveWorkflowIndex")||"-1");return se(k,({paths:I,activeIndex:_})=>{r.value&&(pn("Comfy.OpenWorkflowsPaths",JSON.stringify(I)),pn("Comfy.ActiveWorkflowIndex",JSON.stringify(_)))}),{initializeWorkflow:f,loadTemplateFromUrlIfPresent:C,restoreWorkflowTabsState:n(()=>{if(!r.value)return;b?.length>0&&N>=0&&e.openWorkflowsInBackground({left:b.slice(0,N),right:b.slice(N)})},"restoreWorkflowTabsState")}}n(Iw,"useWorkflowPersistence");function Mw(e,o={}){const{settleDelay:t=256,passive:s=!0}=o,l=L(!1),a=n(()=>{l.value=!0},"markTransformActive"),i=Ql(()=>{l.value=!1},t);return Oe(e,"wheel",n(()=>{a(),i()},"handleWheel"),{capture:!0,passive:s}),{isTransforming:l}}n(Mw,"useTransformSettling");function Pw(){const e=Na({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,C){const w=s({x:f[0],y:f[1]}),h=C[0]*e.z,k=C[1]*e.z;return new DOMRect(w.x,w.y,h,k)}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,C){const w=f.width*C,h=f.height*C;return{left:-w,right:f.width+w,top:-h,bottom:f.height+h}}n(u,"getExpandedViewportBounds");function p(f,C,w){const h=f.x+C[0]*e.z,k=f.y+C[1]*e.z;return!(h<w.left||f.x>w.right||k<w.top||f.y>w.bottom)}n(p,"testViewportIntersection");function g(f,C,w,h=.2){if(r(C))return!1;const k=s({x:f[0],y:f[1]}),b=i(h),N=u(w,b);return p(k,C,N)}n(g,"isNodeInViewport");function v(f,C=.2){const w=f.width*C,h=f.height*C,k=l({x:-w,y:-h}),b=l({x:f.width+w,y:f.height+h});return{x:k.x,y:k.y,width:b.x-k.x,height:b.y-k.y}}return n(v,"getViewportBounds"),{camera:Tn(e),transformStyle:o,syncWithCanvas:t,canvasToScreen:s,screenToCanvas:l,getNodeScreenBounds:a,isNodeInViewport:g,getViewportBounds:v}}n(Pw,"useTransformStateIndividual");const Ss=on(Pw),Dw=q({__name:"TransformPane",props:{canvas:{}},setup(e){const o=e,{transformStyle:t,syncWithCanvas:s}=Ss(),l=y(()=>o.canvas?.canvas),{isTransforming:a}=Mw(l,{settleDelay:16});return ao(()=>{o.canvas&&s(o.canvas)},{immediate:!0}),(i,r)=>(d(),$("div",{"data-testid":"transform-pane",class:K(m(ne)("absolute inset-0 w-full h-full pointer-events-none",m(a)?"transform-pane--interacting":"will-change-auto")),style:ve(m(t))},[ye(i.$slots,"default",{},void 0,!0)],6))}}),Aw=Le(Dw,[["__scopeId","data-v-4d46eee6"]]),Lw={class:"flex items-center gap-2"},Ew={for:"node-colors"},Vw={class:"flex items-center gap-2"},Ow={for:"show-links"},Rw={class:"flex items-center gap-2"},Ww={for:"show-groups"},zw={class:"flex items-center gap-2"},Bw={for:"render-bypass"},Fw={class:"flex items-center gap-2"},Uw={for:"render-error"},Gw=q({__name:"MiniMapPanel",props:{panelStyles:{},nodeColors:{type:Boolean},showLinks:{type:Boolean},showGroups:{type:Boolean},renderBypass:{type:Boolean},renderError:{type:Boolean}},emits:["updateOption"],setup(e){return(o,t)=>(d(),$("div",{class:"minimap-panel mr-2 flex flex-col gap-2 bg-comfy-menu-bg p-3 text-sm shadow-interface",style:ve(o.panelStyles)},[c("div",Lw,[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",Ew,V(o.$t("minimap.nodeColors")),1)]),c("div",Vw,[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",Ow,V(o.$t("minimap.showLinks")),1)]),c("div",Rw,[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",Ww,V(o.$t("minimap.showGroups")),1)]),c("div",zw,[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",Bw,V(o.$t("minimap.renderBypassState")),1)]),c("div",Fw,[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",Uw,V(o.$t("minimap.renderErrorState")),1)])],4))}}),Hw=["width","height"],jw=q({__name:"MiniMap",setup(e){const o=Se(),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:C,showGroups:w,renderBypass:h,renderError:k,updateOption:b,destroy:N,handlePointerDown:S,handlePointerMove:I,handlePointerUp:_,handlePointerCancel:x,handleWheel:T,setMinimapRef:M}=ms({containerRefMaybe:s,canvasRefMaybe:l}),P=L(!1),B=n(()=>{P.value=!P.value},"toggleOptionsPanel");return ze(()=>{t.value&&M(t.value)}),ht(()=>{N()}),(H,z)=>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"},[P.value?(d(),R(Gw,{key:0,"panel-styles":m(v),"node-colors":m(f),"show-links":m(C),"show-groups":m(w),"render-bypass":m(h),"render-error":m(k),onUpdateOption:m(b)},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:ve(m(r))},[O(Z,{class:"absolute top-0 left-0 z-10",size:"icon",variant:"muted-textonly","aria-label":H.$t("g.settings"),onClick:Ce(B,["stop"])},{default:A(()=>z[7]||(z[7]=[c("i",{class:"icon-[lucide--settings-2]"},null,-1)])),_:1},8,["aria-label"]),O(Z,{class:"absolute top-0 right-0 z-10",size:"icon",variant:"muted-textonly","aria-label":H.$t("g.close"),"data-testid":"close-minmap-button",onClick:z[0]||(z[0]=Ce(()=>m(o).execute("Comfy.Canvas.ToggleMinimap"),["stop"]))},{default:A(()=>z[8]||(z[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:ve({width:m(r).width})},null,4),c("canvas",{ref_key:"canvasRef",ref:l,width:m(p),height:m(g),class:"minimap-canvas"},null,8,Hw),c("div",{class:"minimap-viewport",style:ve(m(u))},null,4),c("div",{class:"absolute inset-0 touch-none",onPointerdown:z[1]||(z[1]=(...G)=>m(S)&&m(S)(...G)),onPointermove:z[2]||(z[2]=(...G)=>m(I)&&m(I)(...G)),onPointerup:z[3]||(z[3]=(...G)=>m(_)&&m(_)(...G)),onPointerleave:z[4]||(z[4]=(...G)=>m(_)&&m(_)(...G)),onPointercancel:z[5]||(z[5]=(...G)=>m(x)&&m(x)(...G)),onWheel:z[6]||(z[6]=(...G)=>m(T)&&m(T)(...G))},null,32)],4)],512)):E("",!0)}}),qw=Le(jw,[["__scopeId","data-v-66f11255"]]);function Vn(e){return e.ctrlKey||e.metaKey||e.shiftKey}n(Vn,"isMultiSelectKey");function Kw(){const e=he(),{nodeManager:o}=ws(),{bringNodeToFront:t}=sl(),{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),C=e.selectedItems.length,w=!f&&v.selected&&C>1;f?v.selected||e.canvas.select(v):w||(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(Kw,"useNodeEventHandlersIndividual");const Sl=on(Kw);function _l(){const e=re(),o=y(()=>e.get("Comfy.SnapToGrid.GridSize")),t=y(()=>e.get("pysssss.SnapToGrid"));function s(i){return i.shiftKey||t.value}n(s,"shouldSnap");function l(i){const r=o.value;if(!r)return{...i};const u=[i.x,i.y];return Ws(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 Ws(u,r)?{width:u[0],height:u[1]}:{...i}}return n(a,"applySnapToSize"),{gridSize:o,alwaysSnap:t,shouldSnap:s,applySnapToPosition:l,applySnapToSize:a}}n(_l,"useNodeSnap");function Tl(){const e=Ze(!1);let o=null;function t(l){l!==e.value&&(!o&&(o=J.canvas?.canvas??null,!o)||(e.value=l,o.dispatchEvent(new KeyboardEvent(l?"keydown":"keyup",{key:"Shift",shiftKey:l,bubbles:!0}))))}n(t,"syncShiftState");function 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"),Ma(()=>{e.value=!1,o=null}),{trackShiftKey:s}}n(Tl,"useShiftKeySync");const $l=on(Qw);function Qw(){const e=an(),{selectedNodeIds:o,selectedItems:t}=qe(he()),s=Ss(),{shouldSnap:l,applySnapToPosition:a}=_l(),{trackShiftKey:i}=Tl();let r=null,u=null,p=null,g=null,v=null,f=null,C=null;function w(b,N){const S=je(Pe.getNodeLayoutRef(N));if(!S)return;const I=S.position??{x:0,y:0};v=i(b),r={...I},u={x:b.clientX,y:b.clientY};const _=je(o),x=_?.has(N);if(x&&_.size>1){p=new Map;for(const T of _){if(T===N)continue;const M=Pe.getNodeLayoutRef(T).value;M&&p.set(T,{...M.position})}}else p=null;x?(C=je(t).filter(ns),f={x:0,y:0}):(C=null,f=null),e.setSource(ko.Vue)}n(w,"startDrag");function h(b,N){if(!r||!u||g!==null)return;const{target:S,pointerId:I}=b;S instanceof HTMLElement&&!S.hasPointerCapture(I)&&S.setPointerCapture(I),g=requestAnimationFrame(()=>{if(g=null,!r||!u)return;const _={x:b.clientX-u.x,y:b.clientY-u.y},x=s.screenToCanvas({x:0,y:0}),T=s.screenToCanvas(_),M={x:T.x-x.x,y:T.y-x.y},P={x:r.x+M.x,y:r.y+M.y};if(e.moveNode(N,P),p&&p.size>0)for(const[B,H]of p){const z={x:H.x+M.x,y:H.y+M.y};e.moveNode(B,z)}if(C&&C.length>0&&f){const B={x:M.x-f.x,y:M.y-f.y};for(const H of C)H.move(B.x,B.y,!0)}f=M})}n(h,"handleDrag");function k(b,N){if(l(b)&&N){const S=[],I=je(Pe.getNodeLayoutRef(N));if(I){const _=I.position,x=a({..._});(x.x!==_.x||x.y!==_.y)&&S.push({nodeId:N,bounds:{x:x.x,y:x.y,width:I.size.width,height:I.size.height}})}if(p&&p.size>0)for(const _ of p.keys()){const x=Pe.getNodeLayoutRef(_).value;if(x){const T={...x.position},M=a(T);(M.x!==T.x||M.y!==T.y)&&S.push({nodeId:_,bounds:{x:M.x,y:M.y,width:x.size.width,height:x.size.height}})}}S.length>0&&Pe.batchUpdateNodeBounds(S)}r=null,u=null,p=null,C=null,f=null,v?.(),v=null,g!==null&&(cancelAnimationFrame(g),g=null)}return n(k,"endDrag"),{startDrag:w,handleDrag:h,endDrag:k}}n(Qw,"useNodeDragIndividual");function Yw(e){const{startDrag:o,endDrag:t,handleDrag:s}=$l(),{forwardEventToCanvas:l,shouldHandleNodePointerEvents:a}=uo(),{handleNodeSelect:i,toggleNodeSelectionAfterPointerUp:r}=Sl(),{nodeManager:u}=ws(),p=n(x=>Or(x)?(l(x),!0):!1,"forwardMiddlePointerIfNeeded");let g=!1;const v=L({x:0,y:0}),f=3;function C(x){if(p(x)||x.button!==0)return;if(!a.value){l(x);return}const T=je(e);if(!T){console.warn("LGraphNode: nodeData is null/undefined in handlePointerDown");return}u.value?.getNode(T)?.flags?.pinned||(v.value={x:x.clientX,y:x.clientY},k(x,T))}n(C,"onPointerdown");function w(x){if(p(x)||Pe.isResizingVueNodes.value)return;const T=je(e);if(u.value?.getNode(T)?.flags?.pinned)return;const M=Vn(x),P=x.buttons&1;if(P&&M&&!Pe.isDraggingVueNodes.value){Pe.isDraggingVueNodes.value=!0,i(x,T),k(x,T);return}if(P&&!Pe.isDraggingVueNodes.value){const B=x.clientX-v.value.x,H=x.clientY-v.value.y;Math.sqrt(B*B+H*H)>f&&(Pe.isDraggingVueNodes.value=!0,i(x,T))}Pe.isDraggingVueNodes.value&&s(x,T)}n(w,"onPointermove");function h(){Pe.isDraggingVueNodes.value=!1}n(h,"cleanupDragState");function k(x,T){try{o(x,T)}finally{g=!0}}n(k,"safeDragStart");function b(x){try{const T=je(e);t(x,T)}catch(T){console.error("Error during endDrag:",T)}finally{g=!1,h()}}n(b,"safeDragEnd");function N(x){if(p(x))return;if(!a.value){l(x);return}const M=Pe.isDraggingVueNodes.value;if((g||M)&&(b(x),M)||x.button===2)return;const P=Vn(x),B=je(e);B&&r(B,P)}n(N,"onPointerup");function S(x){Pe.isDraggingVueNodes.value&&b(x)}n(S,"onPointercancel");function I(x){Pe.isDraggingVueNodes.value&&(x.preventDefault(),h())}return n(I,"onContextmenu"),Yl(()=>{h()}),{pointerHandlers:{onPointerdown:C,onPointermove:w,onPointerup:N,onPointercancel:S,onContextmenu:I}}}n(Yw,"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")}]]),pa=new ResizeObserver(e=>{if(he().linearMode)return;const o=ol(),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[b,N]of Qo){const S=a.dataset[N.dataAttribute];if(S){i=b,r=S;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,C]=o.clientPosToCanvasPos([v.left,v.top]),w={x:f,y:C},h={x:w.x,y:w.y+ge.NODE_TITLE_HEIGHT,width:Math.max(0,p),height:Math.max(0,g)};let k=t.get(i);k||(k=[],t.set(i,k)),k.push({id:r,bounds:h}),i==="node"&&r&&s.add(r)}Pe.setSource(ko.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)Rr(l)});function Jw(e,o){const t=je(e);ze(()=>{const s=Is()?.proxy?.$el;if(!(s instanceof HTMLElement)||!t)return;const l=Qo.get(o);l&&(s.dataset[l.dataAttribute]=t,pa.observe(s))}),ht(()=>{const s=Is()?.proxy?.$el;if(!(s instanceof HTMLElement))return;const l=Qo.get(o);l&&(delete s.dataset[l.dataAttribute],pa.unobserve(s))})}n(Jw,"useVueElementTracking");const Xw=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 Zw(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(ko.Vue),t.moveNode(o,u)}return n(r,"moveNodeTo"),{position:l,size:a,zIndex:i,moveNodeTo:r}}n(Zw,"useNodeLayout");const e0=n((e,o)=>{const t=je(e),s=Re(),{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 t0(e){const o=Ss(),t=L(!1),s=L(null),l=L(null),{shouldSnap:a,applySnapToSize:i}=_l(),{trackShiftKey:r}=Tl();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(),C=o.camera.z,w={width:f.width/C,height:f.height/C},h=r(p);g.setPointerCapture(p.pointerId),Pe.isResizingVueNodes.value=!0,t.value=!0,s.value={x:p.clientX,y:p.clientY},l.value=w;const k=n(I=>{if(!t.value||!s.value||!l.value)return;const _=o.camera.z,x=(I.clientX-s.value.x)/(_||1),T=(I.clientY-s.value.y)/(_||1);let M={width:l.value.width+x,height:l.value.height+T};a(I)&&(M=i(M));const P=g.closest("[data-node-id]");P instanceof HTMLElement&&e({size:M},P)},"handlePointerMove"),b=n(I=>{t.value&&(t.value=!1,Pe.isResizingVueNodes.value=!1,s.value=null,l.value=null,h(),g.releasePointerCapture(I.pointerId),N(),S())},"handlePointerUp"),N=Oe("pointermove",k),S=Oe("pointerup",b)},"startResize"),isResizing:t}}n(t0,"useNodeResize");const o0={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function n0(e,o){return d(),$("svg",o0,[...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(n0,"render$1");const s0=Pa({name:"lucide-image-off",render:n0}),a0={key:0,class:"flex h-full min-h-16 w-full min-w-16 flex-col"},l0={class:"relative h-88 w-full grow overflow-hidden rounded-[5px] bg-node-component-surface"},i0={key:0,class:"text-pure-white flex h-full w-full flex-col items-center justify-center text-center"},r0={class:"text-xs text-smoke-400"},u0=["src","alt"],c0={class:"text-node-component-header-text mt-1 text-center text-xs"},d0=q({__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=s0;return i.imageUrl?(d(),$("div",a0,[c("div",l0,[s.value?(d(),$("div",i0,[O(u,{class:"mb-1 size-8 text-smoke-500"}),c("p",r0,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,u0))]),c("div",c0,V(s.value?i.$t("g.errorLoadingImage"):t.value||i.$t("g.calculatingDimensions")),1)])):E("",!0)}}}),p0=["aria-label","aria-busy"],f0={key:0,role:"alert",class:"flex size-full flex-col items-center justify-center bg-muted-background text-center text-base-foreground py-8"},m0={class:"text-sm text-base-foreground"},g0={class:"mt-1 text-xs text-base-foreground"},v0=["src"],h0={key:3,class:"actions absolute top-2 right-2 flex gap-2.5"},y0=["title","aria-label"],b0=["title","aria-label"],w0={key:4,class:"absolute right-2 bottom-2 left-2 flex justify-center gap-1"},k0=["aria-label","onClick"],C0={class:"mt-2 text-center text-xs text-muted-foreground"},x0={key:0,class:"text-red-400"},S0={key:1,class:"text-smoke-400"},_0={key:2},fa="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",T0=q({__name:"VideoPreview",props:{imageUrls:{},nodeId:{}},setup(e){const o=e,{t}=pe(),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,P=>{l.value>=P.length&&(l.value=0),r.value=null,u.value=!1,p.value=P.length>0},{deep:!0,immediate:!0});const C=n(P=>{if(!P.target||!(P.target instanceof HTMLVideoElement))return;const B=P.target;p.value=!1,u.value=!1,B.videoWidth&&B.videoHeight&&(r.value=`${B.videoWidth} x ${B.videoHeight}`)},"handleVideoLoad"),w=n(()=>{p.value=!1,u.value=!0,r.value=null},"handleVideoError"),h=n(()=>{try{ss(v.value)}catch{Wt().add({severity:"error",summary:"Error",detail:t("g.failedToDownloadVideo"),life:3e3,group:"video-preview"})}},"handleDownload"),k=n(()=>{o.nodeId&&s.removeNodeOutputs(o.nodeId)},"handleRemove"),b=n(P=>{P>=0&&P<o.imageUrls.length&&(l.value=P,r.value=null,p.value=!0,u.value=!1)},"setCurrentIndex"),N=n(()=>{a.value=!0},"handleMouseEnter"),S=n(()=>{a.value=!1},"handleMouseLeave"),I=n(()=>{i.value=!0},"handleFocusIn"),_=n(P=>{g.value?.contains(P.relatedTarget)||(i.value=!1)},"handleFocusOut"),x=n(P=>["w-2 h-2 rounded-full transition-all duration-200 border-0 cursor-pointer",P===l.value?"bg-white":"bg-white/50 hover:bg-white/80"],"getNavigationDotClass"),T=n(P=>{if(!(o.imageUrls.length<=1))switch(P.key){case"ArrowLeft":P.preventDefault(),b(l.value>0?l.value-1:o.imageUrls.length-1);break;case"ArrowRight":P.preventDefault(),b(l.value<o.imageUrls.length-1?l.value+1:0);break;case"Home":P.preventDefault(),b(0);break;case"End":P.preventDefault(),b(o.imageUrls.length-1);break}},"handleKeyDown"),M=n(P=>{try{return new URL(P).searchParams.get("filename")||"Unknown file"}catch{return"Invalid URL"}},"getVideoFilename");return(P,B)=>P.imageUrls.length>0?(d(),$("div",{key:0,class:"video-preview group relative flex size-full min-h-16 min-w-16 flex-col px-2",onKeydown:T},[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":P.$t("g.videoPreview"),"aria-busy":p.value,onMouseenter:N,onMouseleave:S,onFocusin:I,onFocusout:_},[u.value?(d(),$("div",f0,[B[0]||(B[0]=c("i",{class:"mb-2 icon-[lucide--video-off] h-12 w-12 text-base-foreground"},null,-1)),c("p",m0,V(P.$t("g.videoFailedToLoad")),1),c("p",g0,V(M(v.value)),1)])):E("",!0),p.value&&!u.value?(d(),R(m(Hn),{key:1,class:"absolute inset-0 size-full","border-radius":"5px",width:"100%",height:"100%"})):E("",!0),u.value?E("",!0):(d(),$("video",{key:2,src:v.value,class:K(m(ne)("block size-full object-contain",p.value&&"invisible")),controls:"",loop:"",playsinline:"",onLoadeddata:C,onError:w},null,42,v0)),a.value||i.value?(d(),$("div",h0,[c("button",{class:K(fa),title:P.$t("g.downloadVideo"),"aria-label":P.$t("g.downloadVideo"),onClick:h},B[1]||(B[1]=[c("i",{class:"icon-[lucide--download] h-4 w-4"},null,-1)]),8,y0),c("button",{class:K(fa),title:P.$t("g.removeVideo"),"aria-label":P.$t("g.removeVideo"),onClick:k},B[2]||(B[2]=[c("i",{class:"icon-[lucide--x] h-4 w-4"},null,-1)]),8,b0)])):E("",!0),f.value?(d(),$("div",w0,[(d(!0),$(oe,null,be(P.imageUrls,(H,z)=>(d(),$("button",{key:z,class:K(x(z)),"aria-label":P.$t("g.viewVideoOfTotal",{index:z+1,total:P.imageUrls.length}),onClick:n(G=>b(z),"onClick")},null,10,k0))),128))])):E("",!0)],40,p0),c("div",C0,[u.value?(d(),$("span",x0,V(P.$t("g.errorLoadingVideo")),1)):p.value?(d(),$("span",S0,V(P.$t("g.loading"))+"... ",1)):(d(),$("span",_0,V(r.value||P.$t("g.calculatingDimensions")),1))])],32)):E("",!0)}}),$0={width:"1.2em",height:"1.2em",xmlns:"http://www.w3.org/2000/svg",class:"",viewBox:"0 0 16 16",fill:"none"},N0=["clip-path"],I0=["id"];function M0(e,o){return d(),$("svg",$0,[c("g",{"clip-path":"url(#"+e.idMap.clip0_704_2695+")"},[...o[0]||(o[0]=[Jl('<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,N0),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,I0)])])}n(M0,"render");const P0=Pa({name:"comfy-mask",render:M0,setup(){return{idMap:{clip0_704_2695:"uicons-"+n(()=>Math.random().toString(36).substr(2,10),"__randId")()}}}}),D0=["aria-label","aria-busy"],A0={key:0,role:"alert",class:"flex size-full flex-col items-center justify-center bg-muted-background text-center text-base-foreground py-8"},L0={class:"text-sm text-base-foreground"},E0={class:"mt-1 text-xs text-base-foreground"},V0={key:1,class:"size-full"},O0=["src","alt"],R0={key:3,class:"actions absolute top-2 right-2 flex gap-2.5"},W0=["title","aria-label"],z0=["title","aria-label"],B0=["title","aria-label"],F0={class:"pt-2 text-center text-xs text-base-foreground"},U0={key:0,class:"text-red-400"},G0={key:1,class:"text-base-foreground"},H0={key:2},j0={key:0,class:"flex flex-wrap justify-center gap-1 pt-4"},q0=["aria-current","aria-label","onClick"],kn="flex h-8 min-h-8 items-center justify-center gap-2.5 rounded-lg border-0 bg-button-surface px-2 py-2 text-button-surface-contrast shadow-sm transition-colors duration-200 hover:bg-button-hover-surface focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-button-surface-contrast focus-visible:ring-offset-2 focus-visible:ring-offset-transparent cursor-pointer",K0=q({__name:"ImagePreview",props:{imageUrls:{},nodeId:{}},setup(e){const o=e,{t}=pe(),s=Se(),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:C,stop:w}=Xl(()=>{g.value=!0},250,{immediate:!1}),h=y(()=>o.imageUrls[a.value]),k=y(()=>o.imageUrls.length>1),b=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&&C()},{deep:!0,immediate:!0});const N=n(F=>{if(!F.target||!(F.target instanceof HTMLImageElement))return;const Q=F.target;w(),g.value=!1,p.value=!1,Q.naturalWidth&&Q.naturalHeight&&(u.value=`${Q.naturalWidth} x ${Q.naturalHeight}`)},"handleImageLoad"),S=n(()=>{w(),g.value=!1,p.value=!0,u.value=null},"handleImageError"),I=n(()=>{if(!o.nodeId||!v.value)return;const F=J.rootGraph?.getNodeById(o.nodeId);F&&(F.imageIndex=a.value,F.imgs=[v.value],J.canvas?.select(F))},"setupNodeForMaskEditor"),_=n(()=>{I(),s.execute("Comfy.MaskEditor.OpenMaskEditor")},"handleEditMask"),x=n(()=>{try{ss(h.value)}catch{Wt().add({severity:"error",summary:"Error",detail:t("g.failedToDownloadImage"),life:3e3,group:"image-preview"})}},"handleDownload"),T=n(()=>{o.nodeId&&l.removeNodeOutputs(o.nodeId)},"handleRemove"),M=n(F=>{a.value!==F&&F>=0&&F<o.imageUrls.length&&(a.value=F,C(),p.value=!1)},"setCurrentIndex"),P=n(()=>{i.value=!0},"handleMouseEnter"),B=n(()=>{i.value=!1},"handleMouseLeave"),H=n(()=>{r.value=!0},"handleFocusIn"),z=n(F=>{f.value?.contains(F.relatedTarget)||(r.value=!1)},"handleFocusOut"),G=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"),W=n(F=>{try{return new URL(F).searchParams.get("filename")||"Unknown file"}catch{return"Invalid URL"}},"getImageFilename");return(F,Q)=>{const j=P0;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:P,onMouseleave:B,onFocusin:H,onFocusout:z},[p.value?(d(),$("div",A0,[Q[0]||(Q[0]=c("i",{class:"mb-2 icon-[lucide--image-off] h-12 w-12 text-base-foreground"},null,-1)),c("p",L0,V(F.$t("g.imageFailedToLoad")),1),c("p",E0,V(W(h.value)),1)])):E("",!0),g.value&&!p.value?(d(),$("div",V0,[O(m(Hn),{"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:b.value,class:"block size-full object-contain pointer-events-none",onLoad:N,onError:S},null,40,O0)),i.value||r.value?(d(),$("div",R0,[k.value?E("",!0):(d(),$("button",{key:0,class:K(kn),title:F.$t("g.editOrMaskImage"),"aria-label":F.$t("g.editOrMaskImage"),onClick:_},[O(j,{class:"h-4 w-4"})],8,W0)),c("button",{class:K(kn),title:F.$t("g.downloadImage"),"aria-label":F.$t("g.downloadImage"),onClick:x},Q[1]||(Q[1]=[c("i",{class:"icon-[lucide--download] h-4 w-4"},null,-1)]),8,z0),c("button",{class:K(kn),title:F.$t("g.removeImage"),"aria-label":F.$t("g.removeImage"),onClick:T},Q[2]||(Q[2]=[c("i",{class:"icon-[lucide--x] h-4 w-4"},null,-1)]),8,B0)])):E("",!0)],40,D0),c("div",F0,[p.value?(d(),$("span",U0,V(F.$t("g.errorLoadingImage")),1)):g.value?(d(),$("span",G0,V(F.$t("g.loading"))+"... ",1)):(d(),$("span",H0,V(u.value||F.$t("g.calculatingDimensions")),1))]),k.value?(d(),$("div",j0,[(d(!0),$(oe,null,be(F.imageUrls,(Y,te)=>(d(),$("button",{key:te,class:K(G(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,q0))),128))])):E("",!0)],32)):E("",!0)}}}),Q0={key:0,class:"node-error p-2 text-sm text-red-500"},Y0={key:1,class:"lg-node-content flex grow flex-col"},J0=q({__name:"NodeContent",props:{nodeData:{},media:{}},setup(e){const o=e,t=y(()=>o.media&&o.media.urls.length>0),s=y(()=>o.nodeData?.id?.toString()),l=L(null),{toastErrorHandler:a}=Bt();return Da(i=>(l.value=i.message,a(i),!1)),(i,r)=>l.value?(d(),$("div",Q0,V(m(Ae)("nodeErrors.content","Node Content Error")),1)):(d(),$("div",Y0,[ye(i.$slots,"default",{},()=>[t.value&&i.media?.type==="video"?(d(),R(T0,{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(K0,{key:1,"image-urls":i.media.urls,"node-id":s.value,class:"mt-2"},null,8,["image-urls","node-id"])):E("",!0)])]))}}),X0={key:0,class:"node-error p-2 text-sm text-red-500"},Z0=["data-node-id"],e1={key:0,class:"flex flex-col justify-center items-center relative"},t1={class:"relative mb-1"},o1=["data-testid"],n1={key:1,class:"min-h-0 flex-1 flex"},s1={key:2,class:"min-h-0 flex-1 px-4"},a1=["aria-label"],l1="absolute h-3 w-3 opacity-0 pointer-events-auto focus-visible:outline focus-visible:outline-2 focus-visible:outline-white/40",i1=225,ma="h-2 bg-primary-500 transition-all duration-300",r1=q({__name:"LGraphNode",props:{nodeData:{},error:{default:null}},setup(e){const{t:o}=pe(),{handleNodeCollapse:t,handleNodeTitleUpdate:s,handleNodeRightClick:l}=Sl(),{bringNodeToFront:a}=sl();Jw(()=>e.nodeData.id,"node");const{selectedNodeIds:i}=qe(he()),r=y(()=>i.value.has(e.nodeData.id)),u=y(()=>fn(e.nodeData)),{executing:p,progress:g}=Xw(u),v=ct(),f=y(()=>v.lastExecutionErrorNodeId===e.nodeData.id),C=y(()=>!!(f.value||e.nodeData.hasErrors||e.error||(v.lastNodeErrors?.[e.nodeData.id]?.errors.length??0)>0)),w=y(()=>e.nodeData.titleMode!==Wr.NO_TITLE),h=y(()=>e.nodeData.flags?.collapsed??!1),k=y(()=>e.nodeData.mode===We.BYPASS),b=y(()=>e.nodeData.mode===We.NEVER),N=y(()=>{const fe=dt();return e.nodeData.bgcolor?zr(e.nodeData.bgcolor,!!fe.completedActivePalette.light_theme):""}),S=y(()=>{const fe=re().get("Comfy.Node.Opacity")??1;return k.value||b.value?fe*.5:fe}),I=y(()=>Br(e.nodeData).length>0),_=y(()=>!!e.nodeData.outputs?.length),{handleWheel:x,shouldHandleNodePointerEvents:T}=uo(),M=L(null),{toastErrorHandler:P}=Bt();Da(fe=>(M.value=fe.message,P(fe),!1));const{position:B,size:H,zIndex:z}=Zw(()=>e.nodeData.id),{pointerHandlers:G}=Yw(()=>e.nodeData.id),{onPointerdown:U,...W}=G,{startDrag:F}=$l();async function Q(fe){if(fe.altKey&&pt.value){const xe=Ye.cloneNodes([pt.value]);if(xe?.created?.length){const[De]=xe.created;F(fe,`${De.id}`),Pe.isDraggingVueNodes.value=!0,await Fe(),a(`${De.id}`);return}}U(fe)}n(Q,"nodeOnPointerdown");const j=n(fe=>{fe.preventDefault(),fe.stopPropagation(),l(fe,e.nodeData.id),Hg(fe)},"handleContextMenu");ze(()=>{Y()});function Y(){const fe=At.value,{width:xe,height:De}=H.value;if(!fe)return;const we=h.value?"-x":"";fe.style.setProperty(`--node-width${we}`,`${xe}px`),fe.style.setProperty(`--node-height${we}`,`${De}px`)}n(Y,"initSizeStyles");const{startResize:te}=t0((fe,xe)=>{if(h.value)return;const De=Math.max(fe.size.width,i1);xe.style.setProperty("--node-width",`${De}px`),xe.style.setProperty("--node-height",`${fe.size.height}px`)}),X=n(fe=>{fe.button===0&&T.value&&(e.nodeData.flags?.pinned||e.nodeData.resizable!==!1&&te(fe))},"handleResizePointerDown");se(h,fe=>{const xe=At.value;if(!xe)return;const[De,we]=fe?["","-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 ae=y(()=>!!Tt.value&&Tt.value.urls.length>0),{latestPreviewUrl:le,shouldShowPreviewImg:Ne}=e0(()=>e.nodeData.id,{isCollapsed:h}),Ue=y(()=>C.value?"border-node-stroke-error":!w.value&&e.nodeData.bgcolor&&Fr(e.nodeData.bgcolor)?"border-0":""),Qe=y(()=>ne(r.value&&"outline-node-component-outline",C.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")),_e=y(()=>{switch(e.nodeData.shape){case Mt.BOX:return"rounded-none";case Mt.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 Mt.BOX:return"before:rounded-none";case Mt.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(fe=>{s(e.nodeData.id,fe)},"handleHeaderTitleUpdate"),po=n(()=>{const fe=J.rootGraph;if(!fe){console.warn("LGraphNode: No graph available for subgraph navigation");return}const xe=fn(e.nodeData),De=zs(fe,xe);if(!De?.isSubgraphNode()||!("subgraph"in De)){console.warn("LGraphNode: Node is not a valid subgraph node",De);return}const we=J.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 fe=fn(e.nodeData);return zs(J.rootGraph,fe)}),Tt=y(()=>{const fe=Ht.nodeOutputs[jt.value],xe=pt.value;if(!xe||!fe?.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(),ot=L(!1);function qt(fe){const xe=pt.value;if(!xe||!xe.onDragOver){ot.value=!1;return}const De=xe.onDragOver(fe);ot.value=De}n(qt,"handleDragOver");function fo(){ot.value=!1}n(fo,"handleDragLeave");async function Kt(fe){ot.value=!1;const xe=pt.value;!xe||!xe.onDragDrop||await xe.onDragDrop(fe)}return n(Kt,"handleDrop"),(fe,xe)=>M.value?(d(),$("div",X0,V(m(Ae)("nodeErrors.render","Node Render Error")),1)):(d(),$("div",St({key:1,ref_key:"nodeContainerRef",ref:At,tabindex:"0","data-node-id":fe.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)",_e.value,"touch-none flex flex-col","border-1 border-solid border-component-node-border",m(T)&&"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`]:k.value,[`${Be.value} before:pointer-events-none before:absolute before:inset-0`]:b.value,"ring-4 ring-primary-500 bg-primary-500/10":ot.value},m(T)?"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(z),opacity:S.value,"--component-node-background":N.value}]},W,{onPointerdown:Q,onWheel:xe[0]||(xe[0]=(...De)=>m(x)&&m(x)(...De)),onContextmenu:j,onDragover:Ce(qt,["prevent"]),onDragleave:fo,onDrop:Ce(Kt,["stop","prevent"])}),[w.value?(d(),$("div",e1,[h.value?(d(),$(oe,{key:0},[I.value?(d(),R(Bs,{key:0,multi:"",class:"absolute left-0 -translate-x-1/2"})):E("",!0),_.value?(d(),R(Bs,{key:1,multi:"",class:"absolute right-0 translate-x-1/2"})):E("",!0),O(Fs,{"node-data":fe.nodeData,unified:""},null,8,["node-data"])],64)):E("",!0),O(Ur,{"node-data":fe.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:K(m(ne)("absolute inset-x-4 -bottom-[1px] translate-y-1/2 rounded-full",ma)),style:ve({width:`${Math.min(m(g)*100,100)}%`})},null,6)):E("",!0),h.value?E("",!0):(d(),$(oe,{key:2},[c("div",t1,[m(p)&&m(g)!==void 0?(d(),$("div",{key:0,class:K(m(ne)("absolute inset-x-0 top-1/2 -translate-y-1/2",m(g)<1&&"rounded-r-full",ma)),style:ve({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-${fe.nodeData.id}`},[O(Fs,{"node-data":fe.nodeData},null,8,["node-data"]),fe.nodeData.widgets?.length?(d(),R(al,{key:0,"node-data":fe.nodeData},null,8,["node-data"])):E("",!0),ae.value?(d(),$("div",n1,[O(J0,{"node-data":fe.nodeData,media:Tt.value},null,8,["node-data","media"])])):E("",!0),m(Ne)?(d(),$("div",s1,[O(d0,{"image-url":m(le)||null},null,8,["image-url"])])):E("",!0)],8,o1)],64)),!h.value&&fe.nodeData.resizable!==!1?(d(),$("div",{key:3,role:"button","aria-label":m(o)("g.resizeFromBottomRight"),class:K(m(ne)(l1,"right-0 bottom-0 cursor-se-resize")),onPointerdown:Ce(X,["stop"])},null,42,a1)):E("",!0)],16,Z0))}});let Do=[],Ao=!1,Lo=null;const u1=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.38.0");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"),c1=q({__name:"SelectionRectangle",setup(e){const o=he(),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:ve(l.value)},null,4)):E("",!0)}}),d1={key:0,class:"workflow-tabs-container pointer-events-auto relative h-9.5 w-full"},p1={key:0,class:"app-drag fixed top-0 left-0 z-10 h-[var(--comfy-topbar-height)] w-full"},f1={class:"flex h-full items-center border-b border-interface-stroke bg-comfy-menu-bg shadow-interface"},m1={class:"sidebar-content-container h-full w-full overflow-x-hidden overflow-y-auto"},g1=q({__name:"GraphCanvas",emits:["ready"],setup(e,{emit:o}){const t=o,s=L(null),l=Ze(null),a=re(),i=_t(),r=it(),u=he(),p=ct(),g=Pt(),v=dt(),f=Za(),C=uo(),w=y(()=>a.get("Comfy.UseNewMenu")!=="Disabled"),h=y(()=>a.get("Comfy.Workflow.WorkflowTabsPosition")),k=y(()=>a.get("Comfy.Graph.CanvasMenu")),b=y(()=>a.get("Comfy.EnableTooltips")),N=y(()=>a.get("Comfy.Canvas.SelectionToolbox")),S=y(()=>r.sidebarTab.activeSidebarTab),I=y(()=>!r.focusMode&&w.value),_=y(()=>a.get("Comfy.Minimap.Visible")),{shouldRenderVueNodes:x}=jo(),T=ws(),M=n(async()=>{x.value&&(T.disposeNodeManagerAndSyncs(),await Fe(),T.initializeNodeManager())},"handleVueNodeLifecycleReset");se(()=>u.currentGraph,M),se(()=>u.isInSubgraph,async(G,U)=>{U&&!G&&Re().updateActiveGraph(),await M()});const P=y(()=>Array.from(T.nodeManager.value?.vueNodeData?.values()??[]));ke(()=>{ge.nodeOpacity=a.get("Comfy.Node.Opacity")}),ke(()=>{ge.nodeLightness=v.completedActivePalette.light_theme?.5:void 0}),ke(()=>{i.showDeprecated=a.get("Comfy.Node.ShowDeprecated")}),ke(()=>{i.showExperimental=a.get("Comfy.Node.ShowExperimental")}),ke(()=>{const G=a.get("Comfy.TextareaWidget.Spellcheck");document.querySelectorAll("textarea.comfy-multiline-input").forEach(W=>{W.spellcheck=G,W.focus(),W.blur()})}),se(()=>a.get("Comfy.WidgetControlMode"),()=>{u.canvas&&(Us(J.rootGraph,G=>{if(G.widgets){for(const U of G.widgets)if(U[Qr]&&(Gs(U),!!U.linkedWidgets))for(const W of U.linkedWidgets)Gs(W)}}),u.canvas.setDirty(!0))}),se([()=>u.canvas,()=>a.get("Comfy.ColorPalette")],async([G,U])=>{G&&await f.loadColorPalette(U)}),se(()=>a.get("Comfy.Canvas.BackgroundImage"),async()=>{if(!u.canvas)return;const G=v.activePaletteId;G&&(await f.loadColorPalette(G),u.canvas.setDirty(!1,!0))}),se(()=>v.activePaletteId,async G=>{await a.set("Comfy.ColorPalette",G)}),se(()=>[p.nodeLocationProgressStates,u.canvas],([G,U])=>{if(U?.graph){for(const W of U.graph.nodes){const F=Re().nodeIdToNodeLocatorId(W.id),Q=G[F];Q&&Q.state==="running"?W.progress=Q.value/Q.max:W.progress=void 0}U.setDirty(!0,!1)}},{deep:!0}),se(()=>p.lastNodeErrors,G=>{J.graph&&(Us(J.rootGraph,U=>{for(const Q of U.inputs)delete Q.hasErrors;for(const Q of U.outputs)delete Q.hasErrors;const W=G?.[U.id];if(!W)return;W.errors.filter(Q=>Q.extra_info?.input_name!==void 0).forEach(Q=>{const j=Q.extra_info.input_name,Y=U.findInputSlot(j);Y!==-1&&(U.inputs[Y].hasErrors=!0)})}),J.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 G=await Te.getCustomNodesI18n();Kr(G)}catch(G){console.error("Failed to load custom nodes i18n",G)}},"loadCustomNodesI18n"),H=L(!1),z=Iw();return ww(s),_w(),bw(),ze(async()=>{Sw(),kw(),xw(),Gr(),$w(),jo(),J.vueAppReady=!0,r.spinner=!0,Hr.init(),await B();try{await a.loadSettingValues()}catch(W){if(W instanceof jr)localStorage.removeItem("Comfy.userId"),localStorage.removeItem("Comfy.userName"),window.location.reload();else throw W}Tw.forEach(a.addSetting),await u1().initializeIfNewUser(a),await J.setup(s.value),u.canvas=J.canvas,u.canvas.render_canvas_border=!1,r.spinner=!1,hs().setPopoverRef(l.value),window.app=J,window.graph=J.graph,H.value=!0,T.setupEmptyGraphListener(),J.canvas.onSelectionChange=no(J.canvas.onSelectionChange,()=>u.updateSelectedItems()),v.customPalettes=a.get("Comfy.CustomColorPalettes"),await z.initializeWorkflow(),z.restoreWorkflowTabsState(),await z.loadTemplateFromUrlIfPresent();const{useReleaseStore:G}=await Fn(async()=>{const{useReleaseStore:W}=await Promise.resolve().then(()=>im);return{useReleaseStore:W}},void 0,import.meta.url);G().initialize(),se(()=>a.get("Comfy.Locale"),async()=>{await Se().execute("Comfy.RefreshNodeDefinitions"),await tt().reloadCurrentWorkflow()}),xt(()=>he().canvas,W=>{Oe(W.canvas,"litegraph:set-graph",()=>{Re().updateActiveGraph()})},{immediate:!0}),t("ready")}),ht(()=>{T.cleanup()}),(G,U)=>(d(),$(oe,null,[H.value?(d(),R(dd,{key:0},zn({"graph-canvas-panel":A(()=>[k.value?(d(),R(tg,{key:0,class:"pointer-events-auto"})):E("",!0),H.value&&_.value&&w.value?(d(),R(qw,{key:1,class:"pointer-events-auto"})):E("",!0)]),_:2},[I.value?{name:"workflow-tabs",fn:A(()=>[h.value==="Topbar"?(d(),$("div",d1,[m(qr)()&&h.value!=="Topbar"?(d(),$("div",p1)):E("",!0),c("div",f1,[O(xl),O(Cl)])])):E("",!0)]),key:"0"}:void 0,I.value?{name:"side-toolbar",fn:A(()=>[O(Ob)]),key:"1"}:void 0,I.value?{name:"side-bar-panel",fn:A(()=>[c("div",m1,[S.value?(d(),R(fs,{key:0,extension:S.value},null,8,["extension"])):E("",!0)])]),key:"2"}:void 0,I.value?{name:"topmenu",fn:A(()=>[O(gm)]),key:"3"}:void 0,I.value?{name:"bottom-panel",fn:A(()=>[O(xm)]),key:"4"}:void 0,I.value?{name:"right-side-panel",fn:A(()=>[O(gh)]),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(x)&&m(J).canvas&&H.value?(d(),R(Aw,{key:1,canvas:m(J).canvas,onWheelCapture:m(C).forwardEventToCanvas},{default:A(()=>[(d(!0),$(oe,null,be(P.value,W=>(d(),R(r1,{key:W.id,"node-data":W,error:m(p).lastExecutionError?.node_id===W.id?"Execution error":null,"zoom-level":m(u).canvas?.ds?.scale||1,"data-node-id":W.id},null,8,["node-data","error","zoom-level","data-node-id"]))),128))]),_:1},8,["canvas","onWheelCapture"])):E("",!0),H.value?(d(),R(c1,{key:2})):E("",!0),b.value?(d(),R(ng,{key:3})):E("",!0),O(Ih,{ref_key:"nodeSearchboxPopoverRef",ref:l},null,512),H.value?(d(),$(oe,{key:4},[O(dv),N.value?(d(),R(uv,{key:0})):E("",!0),m(x)?E("",!0):(d(),R(Mm,{key:1}))],64)):E("",!0)],64))}}),v1={class:"flex flex-auto flex-col items-start"},h1={class:"my-4 text-lg font-medium"},y1=q({__name:"RerouteMigrationToast",setup(e){const{t:o}=pe(),t=Wt(),s=Re(),l=n(async()=>{const a=J.rootGraph.serialize(),i=Yr(a);await J.loadGraphData(i,!1,!1,s.activeWorkflow),t.removeGroup("reroute-migration")},"migrateToLitegraphReroute");return(a,i)=>(d(),R(m(Ea),{group:"reroute-migration"},{message:A(()=>[c("div",v1,[c("div",h1,V(m(o)("toastMessages.migrateToLitegraphReroute")),1),O(Z,{class:"self-end",size:"sm",onClick:l},{default:A(()=>[$e(V(m(o)("g.migrate")),1)]),_:1})])]),_:1}))}}),ga="ComfyUI",b1=" - ComfyUI",w1=n(()=>{const e=ct(),o=re(),t=Re(),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+b1:ga}),f=y(()=>{const k=Object.entries(e.nodeProgressStates).filter(([_,x])=>x.state==="running");if(k.length===0)return"";if(k.length>1)return`${l.value}[${k.length} ${ce("g.nodesRunning","nodes running")}]`;const[b,N]=k[0],S=Math.round(N.value/N.max*100),I=e.activePrompt?.workflow?.changeTracker?.activeState.nodes.find(_=>String(_.id)===b)?.type||"Node";return`${l.value}[${S}%] ${I}`}),C=y(()=>l.value+(a.value?v.value:ga)),w=y(()=>f.value||C.value);Zl(w)},"useBrowserTabTitle"),k1={},C1={class:"size-full bg-modal-panel-background pr-6 pb-8 pl-4"};function x1(e,o){return d(),$("div",C1,[ye(e.$slots,"default")])}n(x1,"_sfc_render");const S1=Le(k1,[["render",x1]]),_1={class:"text-neutral text-base"},T1={class:"flex gap-2"},$1={class:"relative flex gap-2 px-6 pb-4"},N1=q({__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(()=>kl());return(f,C)=>(d(),R(rs,{"content-title":f.$t("assetBrowser.checkpoints")},{leftPanel:A(()=>[O(us,{modelValue:g.value,"onUpdate:modelValue":C[0]||(C[0]=w=>g.value=w),"nav-items":l.value},{"header-icon":A(()=>C[6]||(C[6]=[c("i",{class:"text-neutral icon-[lucide--puzzle]"},null,-1)])),"header-title":A(()=>[c("span",_1,V(f.$t("g.title")),1)]),_:1},8,["modelValue","nav-items"])]),header:A(()=>[O(nn,{modelValue:a.value,"onUpdate:modelValue":C[1]||(C[1]=w=>a.value=w),size:"lg",class:"max-w-[384px]"},null,8,["modelValue"])]),"header-right-area":A(()=>[c("div",T1,[O(Z,{variant:"primary",onClick:n(()=>{},"onClick")},{default:A(()=>[C[7]||(C[7]=c("i",{class:"icon-[lucide--upload]"},null,-1)),c("span",null,V(f.$t("g.upload")),1)]),_:1}),O(cl,null,{default:A(({close:w})=>[O(Z,{variant:"secondary",onClick:n(()=>{w()},"onClick")},{default:A(()=>[C[8]||(C[8]=c("i",{class:"icon-[lucide--download]"},null,-1)),c("span",null,V(f.$t("g.settings")),1)]),_:2},1032,["onClick"]),O(Z,{variant:"primary",onClick:n(()=>{w()},"onClick")},{default:A(()=>[C[9]||(C[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",$1,[O(Rt,{modelValue:r.value,"onUpdate:modelValue":C[2]||(C[2]=w=>r.value=w),"search-query":i.value,"onUpdate:searchQuery":C[3]||(C[3]=w=>i.value=w),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":C[4]||(C[4]=w=>u.value=w),label:f.$t("assetBrowser.selectProjects"),options:t.value},null,8,["modelValue","label","options"]),O(qo,{modelValue:p.value,"onUpdate:modelValue":C[5]||(C[5]=w=>p.value=w),label:f.$t("assetBrowser.sortingType"),options:s.value,class:"w-[135px]"},{icon:A(()=>C[10]||(C[10]=[c("i",{class:"icon-[lucide--filter]"},null,-1)])),_:1},8,["modelValue","label","options"])])]),content:A(()=>[c("div",{style:ve(v.value)},[(d(),$(oe,null,be(100,w=>O(zo,{key:w,size:"regular"},{top:A(()=>[O(Bo,{ratio:"landscape"},{default:A(()=>C[11]||(C[11]=[c("div",{class:"h-full w-full bg-blue-500"},null,-1)])),"top-right":A(()=>[O(Z,{size:"icon",class:"!bg-white !text-neutral-900",onClick:n(()=>{},"onClick")},{default:A(()=>C[12]||(C[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(()=>C[13]||(C[13]=[c("i",{class:"icon-[lucide--folder]"},null,-1)])),_:1})]),_:1})]),bottom:A(()=>[O(Wo)]),_:2},1024)),64))],4)]),rightPanel:A(()=>[O(S1)]),_:1},8,["content-title"]))}}),va="global-model-selector",I1=n(()=>{const e=yt(),o=ut();function t(){o.closeDialog({key:va})}n(t,"hide");function s(){e.showLayoutDialog({key:va,component:N1,props:{onClose:t}})}return n(s,"show"),{show:s,hide:t}},"useModelSelectorDialog");function M1(e,o){const t=Jr.safeParse(e);if(!t.success){const h=t.error.errors.map(k=>`${k.path.join(".")}: ${k.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!==Hs&&h!==js);if(!i)return console.error(`Asset ${s.id} has no valid category tag. Available tags: ${s.tags.join(", ")} (expected tag other than '${Hs}' or '${js}')`),{success:!1,error:{code:"INVALID_ASSET",message:"Asset has no valid category tag",assetId:s.id,details:{availableTags:s.tags}}};const u=Kn().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=Re(),C=f.isSubgraphActive?f.activeSubgraph:J.canvas.graph;if(!C)return console.error("No active graph available"),{success:!1,error:{code:"NO_GRAPH",message:"No active graph available",assetId:s.id}};const w=v.widgets?.find(h=>h.name===u.key);return w?(w.value=a,C.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(M1,"createModelNodeFromAsset");const Eo={DISTRIBUTION:"tf_42243568391700",ANONYMOUS_EMAIL:"tf_anonymous_requester_email",EMAIL:"tf_40029135130388",USER_ID:"tf_42515251051412"},P1="https://support.comfy.org/hc/en-us/requests/new";function D1(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),`${P1}?${o.toString()}`}n(D1,"buildSupportUrl");const{isActiveSubscription:Cn,showSubscriptionDialog:xn}=Qn(),Vo="1.22.2";function A1(){const e=tt(),o=Re(),t=yt(),s=dt(),l=Ua(),a=Pt(),i=he(),r=ct(),{staticUrls:u,buildDocsUrl:p}=ro(),g=re(),v=io(),f=ut(),C=Xr(),{getSelectedNodes:w,toggleSelectedNodesMode:h}=os(),k=n(()=>o.activeWorkflow?.changeTracker,"getTracker");function b(){return g.get("Comfy.Queue.QPOV2")}n(b,"isQueuePanelV2Enabled");async function N(){await g.set("Comfy.Queue.QPOV2",!b())}n(N,"toggleQueuePanelV2");const S=n(_=>{const x=w();if(x.length===0)return;const T=re().get("Comfy.SnapToGrid.GridSize");x.forEach(M=>{M.pos=_(M.pos,T)}),J.canvas.state.selectionChanged=!0,J.canvas.setDirty(!0,!0)},"moveSelectedNodes");return[{id:"Comfy.NewBlankWorkflow",icon:"pi pi-plus",label:"New Blank Workflow",menubarLabel:"New",category:"essentials",function:n(async()=>{J.rootGraph._nodes.length>0,await e.loadBlankWorkflow()},"function")},{id:"Comfy.OpenWorkflow",icon:"pi pi-folder-open",label:"Open Workflow",menubarLabel:"Open",category:"essentials",function:n(()=>{J.ui.loadFile()},"function")},{id:"Comfy.LoadDefaultWorkflow",icon:"pi pi-code",label:"Load Default Workflow",function:n(async()=>{J.rootGraph._nodes.length>0,await e.loadDefaultWorkflow()},"function")},{id:"Comfy.SaveWorkflow",icon:"pi pi-save",label:"Save Workflow",menubarLabel:"Save",category:"essentials",function:n(async()=>{const _=Re().activeWorkflow;_&&await e.saveWorkflow(_)},"function")},{id:"Comfy.PublishSubgraph",icon:"pi pi-save",label:"Publish Subgraph",menubarLabel:"Publish",function:n(async()=>{await Yn().publishSubgraph()},"function")},{id:"Comfy.SaveWorkflowAs",icon:"pi pi-save",label:"Save Workflow As",menubarLabel:"Save As",category:"essentials",function:n(async()=>{const _=Re().activeWorkflow;_&&await e.saveWorkflowAs(_)},"function")},{id:"Comfy.RenameWorkflow",icon:"pi pi-pencil",label:"Rename Workflow",menubarLabel:"Rename",function:n(async()=>{const _=o.activeWorkflow;if(!_||!_.isPersisted)return;const x=await t.prompt({title:ce("g.rename"),message:ce("workflowService.enterFilename")+":",defaultValue:_.filename});if(!x||x===_.filename)return;const T=_.directory+"/"+x+".json";await e.renameWorkflow(_,T)},"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")?C.canvasHistory.undo():await k()?.undo?.()},"function")},{id:"Comfy.Redo",icon:"pi pi-refresh",label:"Redo",category:"essentials",function:n(async()=>{f.isDialogOpen("global-mask-editor")?C.canvasHistory.redo():await k()?.redo?.()},"function")},{id:"Comfy.ClearWorkflow",icon:"pi pi-trash",label:"Clear Workflow",category:"essentials",function:n(()=>{if(!re().get("Comfy.ConfirmClear")||confirm("Clear workflow?")){if(J.clean(),J.canvas.subgraph){const x=J.canvas.subgraph;eu(x).forEach(M=>x.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(()=>{J.openClipspace()},"function")},{id:"Comfy.RefreshNodeDefinitions",icon:"pi pi-refresh",label:"Refresh Node Definitions",category:"essentials",function:n(async()=>{await J.refreshComboInNodes()},"function")},{id:"Comfy.Interrupt",icon:"pi pi-stop",label:"Interrupt",category:"essentials",function:n(async()=>{await 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(()=>{bs().show()},"function")},{id:"Comfy.Canvas.ZoomIn",icon:"pi pi-plus",label:"Zoom In",category:"view-controls",function:n(()=>{const _=J.canvas.ds;_.changeScale(_.scale*1.1,_.element?[_.element.width/2,_.element.height/2]:void 0),J.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.ZoomOut",icon:"pi pi-minus",label:"Zoom Out",category:"view-controls",function:n(()=>{const _=J.canvas.ds;_.changeScale(_.scale/1.1,_.element?[_.element.width/2,_.element.height/2]:void 0),J.canvas.setDirty(!0,!0)},"function")},{id:"Experimental.ToggleVueNodes",label:n(()=>`Experimental: ${re().get("Comfy.VueNodes.Enabled")?"Disable":"Enable"} Nodes 2.0`,"label"),function:n(async()=>{const _=re(),x=_.get("Comfy.VueNodes.Enabled")??!1;await _.set("Comfy.VueNodes.Enabled",!x)},"function")},{id:"Comfy.Canvas.FitView",icon:"pi pi-expand",label:"Fit view to selected nodes",menubarLabel:"Zoom to fit",category:"view-controls",function:n(()=>{if(J.canvas.empty){a.add({severity:"error",summary:ce("toastMessages.emptyCanvas"),life:3e3});return}J.canvas.fitViewToSelectionAnimated()},"function")},{id:"Comfy.Canvas.ToggleLock",icon:"pi pi-lock",label:"Canvas Toggle Lock",category:"view-controls",function:n(()=>{J.canvas.state.readOnly=!J.canvas.state.readOnly},"function")},{id:"Comfy.Canvas.Lock",icon:"pi pi-lock",label:"Lock Canvas",category:"view-controls",function:n(()=>{J.canvas.state.readOnly=!0},"function")},{id:"Comfy.Canvas.Unlock",icon:"pi pi-lock-open",label:"Unlock Canvas",function:n(()=>{J.canvas.state.readOnly=!1},"function")},{id:"Comfy.Canvas.ToggleLinkVisibility",icon:"pi pi-eye",label:"Canvas Toggle Link Visibility",menubarLabel:"Node Links",versionAdded:"1.3.6",function:(()=>{const _=re();let x=ge.SPLINE_LINK;return async()=>{const T=_.get("Comfy.LinkRenderMode");T===ge.HIDDEN_LINK?await _.set("Comfy.LinkRenderMode",x):(x=T,await _.set("Comfy.LinkRenderMode",ge.HIDDEN_LINK))}})(),active:n(()=>re().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 _=re();await _.set("Comfy.Minimap.Visible",!_.get("Comfy.Minimap.Visible"))},"function"),active:n(()=>re().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 _=>{if(!Cn.value){xn();return}const x=bo().batchCount;await J.queuePrompt(0,x)},"function")},{id:"Comfy.QueuePromptFront",icon:"pi pi-play",label:"Queue Prompt (Front)",versionAdded:"1.3.7",category:"essentials",function:n(async _=>{if(!Cn.value){xn();return}const x=bo().batchCount;await J.queuePrompt(-1,x)},"function")},{id:"Comfy.QueueSelectedOutputNodes",icon:"pi pi-play",label:"Queue Selected Output Nodes",versionAdded:"1.19.6",function:n(async _=>{if(!Cn.value){xn();return}const x=bo().batchCount,T=w(),M=qa(T);if(M.length===0){a.add({severity:"error",summary:ce("toastMessages.nothingToQueue"),detail:ce("toastMessages.pleaseSelectOutputNodes"),life:3e3});return}const P=tu(M);if(P.length===0){a.add({severity:"error",summary:ce("toastMessages.failedToQueue"),detail:ce("toastMessages.failedExecutionPathResolution"),life:3e3});return}await J.queuePrompt(0,x,P)},"function")},{id:"Comfy.ShowSettingsDialog",icon:"pi pi-cog",label:"Show Settings Dialog",versionAdded:"1.3.7",category:"view-controls",function:n(()=>{t.showSettingsDialog()},"function")},{id:"Comfy.Graph.GroupSelectedNodes",icon:"pi pi-sitemap",label:"Group Selected Nodes",versionAdded:"1.3.7",category:"essentials",function:n(()=>{const{canvas:_}=J;if(!_.selectedItems?.size){a.add({severity:"error",summary:ce("toastMessages.nothingToGroup"),detail:ce("toastMessages.pleaseSelectNodesToGroup"),life:3e3});return}const x=new Ot,T=re().get("Comfy.GroupSelectedNodes.Padding");x.resizeTo(_.selectedItems,T),_.graph?.add(x),x.recomputeInsideNodes(),sn().titleEditorTarget=x},"function")},{id:"Workspace.NextOpenedWorkflow",icon:"pi pi-step-forward",label:"Next Opened Workflow",versionAdded:"1.3.9",function:n(async()=>{await e.loadNextOpenedWorkflow()},"function")},{id:"Workspace.PreviousOpenedWorkflow",icon:"pi pi-step-backward",label:"Previous Opened Workflow",versionAdded:"1.3.9",function:n(async()=>{await e.loadPreviousOpenedWorkflow()},"function")},{id:"Comfy.Canvas.ToggleSelectedNodes.Mute",icon:"pi pi-volume-off",label:"Mute/Unmute Selected Nodes",versionAdded:"1.3.11",category:"essentials",function:n(()=>{h(We.NEVER),J.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.ToggleSelectedNodes.Bypass",icon:"pi pi-shield",label:"Bypass/Unbypass Selected Nodes",versionAdded:"1.3.11",category:"essentials",function:n(()=>{h(We.BYPASS),J.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.ToggleSelectedNodes.Pin",icon:"pi pi-pin",label:"Pin/Unpin Selected Nodes",versionAdded:"1.3.11",category:"essentials",function:n(()=>{w().forEach(_=>{_.pin(!_.pinned)}),J.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.ToggleSelected.Pin",icon:"pi pi-pin",label:"Pin/Unpin Selected Items",versionAdded:"1.3.33",function:n(()=>{for(const _ of J.canvas.selectedItems)(_ instanceof vt||_ instanceof Ot)&&_.pin(!_.pinned);J.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.Resize",icon:"pi pi-minus",label:"Resize Selected Nodes",versionAdded:"",function:n(()=>{w().forEach(_=>{const x=_.computeSize();_.setSize([x[0],x[1]])}),J.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Canvas.ToggleSelectedNodes.Collapse",icon:"pi pi-minus",label:"Collapse/Expand Selected Nodes",versionAdded:"1.3.11",function:n(()=>{w().forEach(_=>{_.collapse()}),J.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.ToggleTheme",icon:"pi pi-moon",label:"Toggle Theme (Dark/Light)",versionAdded:"1.3.12",function:(()=>{let _=ou.id,x=nu.id;return async()=>{const T=re(),M=s.completedActivePalette;M.light_theme?(x=M.id,await T.set("Comfy.ColorPalette",_)):(_=M.id,await T.set("Comfy.ColorPalette",x))}})()},{id:"Workspace.ToggleBottomPanel",icon:"pi pi-list",label:"Toggle Bottom Panel",menubarLabel:"Bottom Panel",versionAdded:"1.3.22",category:"view-controls",function:n(()=>{v.toggleBottomPanel()},"function"),active:n(()=>v.bottomPanelVisible,"active")},{id:"Workspace.ToggleFocusMode",icon:"pi pi-eye",label:"Toggle Focus Mode",menubarLabel:"Focus Mode",versionAdded:"1.3.27",category:"view-controls",function:n(()=>{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 _ of J.canvas.selectedItems)if(_ instanceof Ot){_.recomputeInsideNodes();const x=re().get("Comfy.GroupSelectedNodes.Padding");_.resizeTo(_.children,x),J.canvas.setDirty(!1,!0)}},"function")},{id:"Comfy.Help.OpenComfyUIIssues",icon:"pi pi-github",label:"Open ComfyUI Issues",menubarLabel:"ComfyUI Issues",versionAdded:"1.5.5",function:n(()=>{window.open(u.githubIssues,"_blank")},"function")},{id:"Comfy.Help.OpenComfyUIDocs",icon:"pi pi-info-circle",label:"Open ComfyUI Docs",menubarLabel:"ComfyUI Docs",versionAdded:"1.5.5",function:n(()=>{window.open(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(()=>{hs().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:_,resolvedUserInfo:x}=Ft(),T=D1({userEmail:_.value,userId:x.value?.id});window.open(T,"_blank")},"function")},{id:"Comfy.Help.OpenComfyUIForum",icon:"pi pi-comments",label:"Open ComfyUI Forum",menubarLabel:"ComfyUI Forum",versionAdded:"1.8.2",function:n(()=>{window.open(u.forum,"_blank")},"function")},{id:"Comfy.Canvas.DeleteSelectedItems",icon:"pi pi-trash",label:"Delete Selected Items",versionAdded:"1.10.5",function:n(()=>{J.canvas.deleteSelected(),J.canvas.setDirty(!0,!0)},"function")},{id:"Comfy.Manager.CustomNodesManager.ShowCustomNodesMenu",icon:"pi pi-puzzle",label:"Custom Nodes Manager",versionAdded:"1.12.10",function:n(async()=>{await 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 _=gt();if(_.managerUIState.value===su.DISABLED){a.add({severity:"error",summary:ce("g.error"),detail:ce("manager.notAvailable"),life:3e3});return}await _.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(()=>S(([_,x],T)=>[_,x-T]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Down",icon:"pi pi-arrow-down",label:"Move Selected Nodes Down",versionAdded:Vo,function:n(()=>S(([_,x],T)=>[_,x+T]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Left",icon:"pi pi-arrow-left",label:"Move Selected Nodes Left",versionAdded:Vo,function:n(()=>S(([_,x],T)=>[_-T,x]),"function")},{id:"Comfy.Canvas.MoveSelectedNodes.Right",icon:"pi pi-arrow-right",label:"Move Selected Nodes Right",versionAdded:Vo,function:n(()=>S(([_,x],T)=>[_+T,x]),"function")},{id:"Comfy.Graph.ConvertToSubgraph",icon:"icon-[lucide--shrink]",label:"Convert Selection to Subgraph",versionAdded:"1.20.1",category:"essentials",function:n(()=>{const _=i.getCanvas(),x=_.subgraph??_.graph;if(!x)throw new TypeError("Canvas has no graph or subgraph set.");const T=x.convertToSubgraph(_.selectedItems);if(!T){a.add({severity:"error",summary:ce("toastMessages.cannotCreateSubgraph"),detail:ce("toastMessages.failedToConvertToSubgraph"),life:3e3});return}const{node:M}=T;_.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:_}=Ka();_()},"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:Zr},{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 _=re(),x=_.get("Comfy.Graph.CanvasInfo");await _.set("Comfy.Graph.CanvasInfo",!x)},"function"),active:n(()=>re().get("Comfy.Graph.CanvasInfo"),"active")},{id:"Workspace.ToggleBottomPanel.Shortcuts",icon:"pi pi-key",label:"Show Keybindings Dialog",versionAdded:"1.24.1",category:"view-controls",function:n(()=>{v.togglePanel("shortcuts")},"function")},{id:"Comfy.Graph.ExitSubgraph",icon:"pi pi-arrow-up",label:"Exit Subgraph",versionAdded:"1.20.1",function:n(()=>{const _=he().getCanvas(),x=Jn();_.graph&&_.setGraph(x.navigationStack.at(-2)??_.graph.rootGraph)},"function")},{id:"Comfy.Dev.ShowModelSelector",icon:"pi pi-box",label:"Show Model Selector (Dev)",versionAdded:"1.26.2",category:"view-controls",function:n(()=>{I1().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(!re().get("Comfy.Memory.AllowManualUnload")){Pt().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(!re().get("Comfy.Memory.AllowManualUnload")){Pt().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(!re().get("Comfy.Assets.UseAssetAPI")){if(!await t.confirm({title:"Enable Asset API",message:"The Asset API is currently disabled. Would you like to enable it?",type:"default"}))return;await re().set("Comfy.Assets.UseAssetAPI",!0),await e.reloadCurrentWorkflow()}await jc().browse({assetType:"models",title:ce("sideToolbar.modelLibrary"),onAssetSelected:n(x=>{const T=M1(x);T.success||(a.add({severity:"error",summary:ce("g.error"),detail:ce("assetBrowser.failedToCreateNode")}),console.error("Node creation failed:",T.error))},"onAssetSelected")})},"function")},{id:"Comfy.ToggleAssetAPI",icon:"pi pi-database",label:n(()=>`Experimental: ${re().get("Comfy.Assets.UseAssetAPI")?"Disable":"Enable"} AssetAPI`,"label"),function:n(async()=>{const _=re(),x=_.get("Comfy.Assets.UseAssetAPI")??!1;await _.set("Comfy.Assets.UseAssetAPI",!x),await tt().reloadCurrentWorkflow()},"function")},{id:"Comfy.ToggleQPOV2",icon:"pi pi-list",label:"Toggle Queue Panel V2",function:N},{id:"Comfy.ToggleLinear",icon:"pi pi-database",label:"toggle linear mode",function:n(()=>i.linearMode=!i.linearMode,"function")}].map(_=>({..._,source:"System"}))}n(A1,"useCoreCommands");const L1=n(()=>{const e="/assets/images/favicon_progress_16x16/frame_9.png",o=ei(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 E1=[{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:""}],V1={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"},Nl=q({__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(It,{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",V1,[c("div",{class:K(m(ne)("overflow-hidden transition-all duration-300",o.value?"max-h-[400px]":"max-h-0"))},[ye(s.$slots,"default",{isExpanded:o.value})],2),ye(s.$slots,"footer",{isExpanded:o.value,toggle:t})])):E("",!0)]),_:3})]))}}),ha=q({__name:"StatusBadge",props:{label:{},severity:{default:"default"}},setup(e){function o(t){const s="inline-flex h-3.5 items-center justify-center rounded-full px-1 text-xxxs font-semibold uppercase";switch(t){case"danger":return`${s} bg-destructive-background text-white`;case"contrast":return`${s} bg-base-foreground text-base-background`;case"warn":return`${s} bg-warning-background text-base-background`;case"secondary":return`${s} bg-secondary-background text-base-foreground`;default:return`${s} bg-primary-background text-base-foreground`}}return n(o,"badgeClasses"),(t,s)=>(d(),$("span",{class:K(o(t.severity))},V(t.label),3))}}),O1={class:"min-w-0 flex-1"},R1={class:"block truncate text-sm text-base-foreground"},W1={class:"flex flex-shrink-0 items-center gap-2"},z1={class:"text-xs text-base-foreground"},B1={key:3,class:"text-xs text-muted-foreground"},F1=q({__name:"ProgressToastItem",props:{job:{}},setup(e){const{t:o}=pe(),t=y(()=>Math.round(e.job.progress*100)),s=y(()=>e.job.status==="completed"),l=y(()=>e.job.status==="failed"),a=y(()=>e.job.status==="running"),i=y(()=>e.job.status==="created");return(r,u)=>(d(),$("div",{class:K(m(ne)("flex items-center justify-between rounded-lg bg-modal-card-background px-4 py-3",s.value&&"opacity-50"))},[c("div",O1,[c("span",R1,V(r.job.assetName),1)]),c("div",W1,[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(ha,{label:m(o)("progressToast.failed"),severity:"danger"},null,8,["label"])],64)):s.value?(d(),R(ha,{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",z1,V(t.value)+"% ",1)],64)):i.value?(d(),$("span",B1,V(m(o)("progressToast.pending")),1)):E("",!0)])],2))}}),U1={class:"flex h-12 items-center justify-between border-b border-border-default px-4"},G1={class:"text-sm font-bold text-base-foreground"},H1={class:"flex items-center gap-2"},j1={class:"flex min-w-30 flex-col items-stretch rounded-lg border border-interface-stroke bg-interface-panel-surface px-2 py-3"},q1={class:"relative max-h-75 overflow-y-auto px-4 py-4"},K1={key:0,class:"absolute right-1 top-4 h-12 w-1 rounded-full bg-muted-foreground"},Q1={class:"flex flex-col gap-2"},Y1={key:1,class:"flex flex-col items-center justify-center py-6 text-center"},J1={class:"text-sm text-muted-foreground"},X1={class:"flex h-12 items-center justify-between gap-2 border-t border-border-default px-4"},Z1={class:"flex min-w-0 flex-1 items-center gap-2 text-sm"},ek={class:"min-w-0 flex-1 truncate font-bold text-base-foreground"},tk={class:"min-w-0 truncate font-bold text-base-foreground"},ok={class:"min-w-0 truncate font-bold text-base-foreground"},nk={class:"flex flex-shrink-0 items-center gap-2"},sk={key:0,class:"whitespace-nowrap text-sm text-muted-foreground"},ak={class:"flex items-center"},lk=q({__name:"ModelImportProgressDialog",setup(e){const{t:o}=pe(),t=au(),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){i.value?.toggle(I)}n(u,"onFilterClick");function p(I){a.value=I,i.value?.hide()}n(p,"setFilter");const g=y(()=>t.downloadList),v=y(()=>t.finishedDownloads.filter(I=>I.status==="completed")),f=y(()=>t.finishedDownloads.filter(I=>I.status==="failed")),C=y(()=>t.hasActiveDownloads),w=y(()=>g.value.find(_=>_.status==="running")?.assetName||o("progressToast.downloadingModel")),h=y(()=>v.value.length+f.value.length),k=y(()=>g.value.length),b=y(()=>{switch(a.value){case"completed":return v.value;case"failed":return f.value;default:return g.value}}),N=y(()=>{const I=r.find(_=>_.value===a.value);return o(I?`progressToast.filter.${I.label}`:"progressToast.filter.all")});function S(){t.clearFinishedDownloads(),l.value=!1}return n(S,"closeDialog"),(I,_)=>(d(),R(Nl,{expanded:l.value,"onUpdate:expanded":_[0]||(_[0]=x=>l.value=x),visible:s.value},{default:A(()=>[c("div",U1,[c("h3",G1,V(m(o)("progressToast.importingModels")),1),c("div",H1,[O(Z,{variant:"secondary",size:"md",class:"gap-1.5 px-2",onClick:u},{default:A(()=>[_[1]||(_[1]=c("i",{class:"icon-[lucide--list-filter] size-4"},null,-1)),c("span",null,V(N.value),1),_[2]||(_[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",j1,[(d(),$(oe,null,be(r,x=>O(Z,{key:x.value,variant:"textonly",size:"sm",class:K(m(ne)("w-full justify-start bg-transparent",a.value===x.value&&"bg-secondary-background-selected")),onClick:n(T=>p(x.value),"onClick")},{default:A(()=>[$e(V(m(o)(`progressToast.filter.${x.label}`)),1)]),_:2},1032,["class","onClick"])),64))])]),_:1},512)])]),c("div",q1,[b.value.length>3?(d(),$("div",K1)):E("",!0),c("div",Q1,[(d(!0),$(oe,null,be(b.value,x=>(d(),R(F1,{key:x.taskId,job:x},null,8,["job"]))),128))]),b.value.length===0?(d(),$("div",Y1,[c("span",J1,V(m(o)("progressToast.noImportsInQueue",{filter:N.value})),1)])):E("",!0)])]),footer:A(({toggle:x})=>[c("div",X1,[c("div",Z1,[C.value?(d(),$(oe,{key:0},[_[3]||(_[3]=c("i",{class:"icon-[lucide--loader-circle] size-4 flex-shrink-0 animate-spin text-muted-foreground"},null,-1)),c("span",ek,V(w.value),1)],64)):f.value.length>0?(d(),$(oe,{key:1},[_[4]||(_[4]=c("i",{class:"icon-[lucide--circle-alert] size-4 flex-shrink-0 text-destructive-background"},null,-1)),c("span",tk,V(m(o)("progressToast.downloadsFailed",{count:f.value.length})),1)],64)):(d(),$(oe,{key:2},[_[5]||(_[5]=c("i",{class:"icon-[lucide--check-circle] size-4 flex-shrink-0 text-jade-600"},null,-1)),c("span",ok,V(m(o)("progressToast.allDownloadsCompleted")),1)],64))]),c("div",nk,[C.value?(d(),$("span",sk,V(m(o)("progressToast.progressCount",{completed:h.value,total:k.value})),1)):E("",!0),c("div",ak,[O(Z,{variant:"muted-textonly",size:"icon","aria-label":l.value?m(o)("contextMenu.Collapse"):m(o)("contextMenu.Expand"),onClick:Ce(x,["stop"])},{default:A(()=>[c("i",{class:K(m(ne)("size-4",l.value?"icon-[lucide--chevron-down]":"icon-[lucide--chevron-up]"))},null,2)]),_:2},1032,["aria-label","onClick"]),C.value?E("",!0):(d(),R(Z,{key:0,variant:"muted-textonly",size:"icon","aria-label":m(o)("g.close"),onClick:Ce(S,["stop"])},{default:A(()=>_[6]||(_[6]=[c("i",{class:"icon-[lucide--x] size-4"},null,-1)])),_:1},8,["aria-label"]))])])])]),_:1},8,["expanded","visible"]))}}),ik=10080*60*1e3,Il=Dt("versionCompatibility",()=>{const e=Zn(),o=re(),t=y(()=>lu.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=ti("comfy.versionMismatch.dismissals",{},localStorage,{serializer:{read:n(k=>{try{return JSON.parse(k)}catch{return{}}},"read"),write:n(k=>JSON.stringify(k),"write")}}),g=y(()=>{if(!u.value)return!1;const k=p.value[u.value];return k?Date.now()<k:!1}),v=y(()=>{const k=o.get("Comfy.VersionCompatibility.DisableWarnings");return r.value&&!g.value&&!k}),f=y(()=>a.value?{type:"outdated",frontendVersion:t.value,requiredVersion:l.value}:null);async function C(){e.systemStats||await _a(e.isInitialized)}n(C,"checkVersionCompatibility");function w(){if(!u.value)return;const k=Date.now()+ik;p.value={...p.value,[u.value]:k}}n(w,"dismissWarning");async function h(){await C()}return n(h,"initialize"),{frontendVersion:t,backendVersion:s,requiredFrontendVersion:l,hasVersionMismatch:r,shouldShowWarning:v,warningMessage:f,isFrontendOutdated:a,isFrontendNewer:i,checkVersionCompatibility:C,dismissWarning:w,initialize:h}});function rk(e={}){const{immediate:o=!1}=e,{t}=pe(),s=Pt(),l=Il();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(rk,"useFrontendVersionMismatchWarning");function uk(){const e=ll(),o=bo();let t=!1,s=0;Te.addEventListener("graphChanged",()=>{o.mode==="change"&&(s?t=!0:(t=!1,J.queuePrompt(0,o.batchCount),s++))}),e.$subscribe(async()=>{s=e.count,!s&&!J.lastExecutionError&&(o.mode==="instant"||o.mode==="change"&&t)&&(t=!1,await J.queuePrompt(0,o.batchCount))},{detached:!0})}n(uk,"setupAutoQueueHandler");const ck={class:"absolute w-full h-full"},dk={class:"workflow-tabs-container pointer-events-auto h-9.5 w-full"},pk={class:"flex h-full items-center"},fk={class:"sidebar-content-container h-full w-full overflow-x-hidden overflow-y-auto border-r-1 border-node-component-border"},mk=["src"],gk={key:0,class:"pointer-events-none object-contain flex-1 max-h-full brightness-50 opacity-10",src:ru},vk={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"},hk={class:"rounded-lg border p-2 gap-2 h-full border-[var(--interface-stroke)] bg-comfy-menu-bg flex flex-col"},yk={class:"grow-1 flex justify-start flex-col overflow-y-auto contain-size *:max-h-100"},bk={class:"p-4 pb-0 border-t border-node-component-border"},wk=q({__name:"LinearView",setup(e){const o=To(),t=Se(),s=y(()=>{function g(v){const f=bl(v,new Map),C=v.widgets?.map(w=>{const h=f(w);return h.callback=function(k){if(kv(k))return w.value=k??void 0,w.callback?.(w.value)},h})??[];return{id:`${v.id}`,title:v.title,type:v.type,mode:0,selected:!1,executing:!1,widgets:C}}return n(g,"nodeToNodeData"),J.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",ck,[c("div",dk,[c("div",pk,[O(xl),O(Cl)])]),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(Nt),{size:1,class:"min-w-min bg-comfy-menu-bg"},{default:A(()=>[c("div",fk,[O(fs,{extension:m(iu)()},null,8,["extension"])])]),_:1}),O(m(Nt),{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,mk))),128)),m(o).latestOutput.length===0?(d(),$("img",gk)):E("",!0)]),_:1}),O(m(Nt),{size:1,class:"flex flex-col gap-1 p-1 min-w-min"},{default:A(()=>[c("div",vk,[O(Z,{variant:"secondary",onClick:p},{default:A(()=>[$e(V(m(ce)("g.feedback")),1)]),_:1}),O(Z,{variant:"secondary",class:"min-w-max",onClick:v[0]||(v[0]=f=>m(he)().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(Z,{variant:"inverted",onClick:v[1]||(v[1]=f=>m(tt)().exportWorkflow("workflow","workflow"))},{default:A(()=>[$e(V(m(ce)("linearMode.share")),1)]),_:1}),m(l)?(d(),R(ds,{key:0})):m(a)?(d(),R(ps,{key:1})):E("",!0)]),c("div",hk,[c("div",yk,[(d(!0),$(oe,null,be(s.value,f=>(d(),R(al,{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",bk,[O(bu,{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(Z,{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})]))}}),kk={key:0,class:"flex items-center px-4 py-2"},Ck={class:"flex w-full items-center justify-between py-2"},xk={class:"flex flex-col text-sm leading-normal font-medium"},Sk={class:"text-muted"},_k={class:"h-full"},Tk={class:"break-words whitespace-pre-wrap"},$k={class:"flex w-full items-center justify-between px-6 py-2 shadow-lg"},Nk={class:"flex items-center text-base leading-none"},Ik={class:"flex items-center"},Mk={class:"flex items-center gap-4"},Pk={key:0,class:"text-sm text-muted-foreground"},Dk={class:"flex items-center"},Ak=q({__name:"ManagerProgressToast",setup(e){const{t:o}=pe(),t=uu(),s=re(),{runFullConflictAnalysis:l}=Qa(),a=L(!1),i=L(0),r=y(()=>[{label:o("manager.installationQueue")},{label:o("manager.failed",{count:t.failedTasksIds.length})}]),u=y(()=>i.value===0?t.succeededTasksLogs:t.failedTasksLogs),p=y(()=>t.taskLogs.length>0),g=L(!1),v=L(!1),f=y(()=>t.isProcessingTasks||g.value),C=n(F=>{const Q=u.value[F];if(!Q)return!1;const j=t.taskQueue;return j?[...j.running_queue||[],...j.pending_queue||[]].some(te=>te.ui_id===Q.taskId):!1},"isTaskInProgress"),w=y(()=>t.succeededTasksIds.length+t.failedTasksIds.length),h=y(()=>{const F=Object.keys(t.taskHistory).length,Q=t.taskQueue,j=Q?(Q.running_queue?.length||0)+(Q.pending_queue?.length||0):0;return F+j}),k=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")),b=L({});function N(F){b.value[F]=!b.value[F]}n(N,"togglePanel");const S=L(null),{y:I}=Ia(S,{eventListenerOptions:{passive:!0}}),_=L(null),x=L(!1),T=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 P(){!_.value||x.value||(_.value.scrollTop=_.value.scrollHeight)}n(P,"scrollLastPanelToBottom");function B(){I.value=S.value?.scrollHeight??0}n(B,"scrollContentToBottom");function H(){x.value=!1}n(H,"resetUserScrolling");function z(F){const Q=F.target;Q===_.value&&(x.value=!M(Q))}n(z,"handleScroll");function G(){x.value||P()}n(G,"onLogsAdded"),xt(T,G,{flush:"post",deep:!0}),xt(()=>a.value,B),xt(()=>!a.value,H);function U(){t.resetTaskState(),a.value=!1}n(U,"closeToast");async function W(){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 Se().execute("Comfy.RefreshNodeDefinitions"),await tt().reloadCurrentWorkflow(),l()}finally{await s.set("Comfy.Toast.DisableReconnectingToast",F),g.value=!1,v.value=!0,setTimeout(()=>{U()},3e3)}},"onReconnect"),{once:!0}),await Ja().rebootComfyUI()}catch(Q){throw await s.set("Comfy.Toast.DisableReconnectingToast",F),g.value=!1,v.value=!1,U(),Q}}return n(W,"handleRestart"),ze(()=>{B()}),rt(()=>{a.value=!1}),(F,Q)=>(d(),R(Nl,{expanded:a.value,"onUpdate:expanded":Q[1]||(Q[1]=j=>a.value=j),visible:p.value},{default:A(()=>[a.value?(d(),$("div",kk,[O(m(gi),{"active-index":i.value,"onUpdate:activeIndex":Q[0]||(Q[0]=j=>i.value=j),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:S,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,(j,Y)=>(d(),$("div",{key:Y},[O(m(Un),{expanded:b.value[Y]===!0,toggleable:"",class:"shadow-elevation-1 mt-2 rounded-lg"},{header:A(()=>[c("div",Ck,[c("div",xk,[c("span",null,V(j.taskName),1),c("span",Sk,V(C(Y)?m(o)("g.inProgress"):m(o)("g.completed")+" ✓"),1)])])]),toggleicon:A(()=>[O(Z,{variant:"textonly",class:"text-neutral-300",onClick:n(te=>N(Y),"onClick")},{default:A(()=>[c("i",{class:K(b.value[Y]?"pi pi-chevron-right":"pi pi-chevron-down")},null,2)]),_:2},1032,["onClick"])]),default:A(()=>[c("div",{ref_for:!0,ref:Y===u.value.length-1?te=>_.value=te:void 0,class:K(["h-64 overflow-y-auto rounded-lg bg-black",{"h-64":Y!==u.value.length-1,grow:Y===u.value.length-1}]),onScroll:z},[c("div",_k,[(d(!0),$(oe,null,be(j.logs,(te,X)=>(d(),$("div",{key:X,class:"text-muted"},[c("pre",Tk,V(te),1)]))),128))])],34)]),_:2},1032,["expanded"])]))),128))],512)]),footer:A(({toggle:j})=>[c("div",$k,[c("div",Nk,[c("div",Ik,[f.value?(d(),$(oe,{key:0},[O(cu,{duration:"1s",class:"mr-2"}),c("span",null,V(k.value),1)],64)):v.value?(d(),$(oe,{key:1},[Q[2]||(Q[2]=c("span",{class:"mr-2"},"🎉",-1)),c("span",null,V(k.value),1)],64)):(d(),$(oe,{key:2},[Q[3]||(Q[3]=c("span",{class:"mr-2"},"✅",-1)),c("span",null,V(m(o)("manager.restartToApplyChanges")),1)],64))])]),c("div",Mk,[f.value?(d(),$("span",Pk,V(w.value)+" "+V(m(o)("g.progressCountOf"))+" "+V(h.value),1)):E("",!0),c("div",Dk,[!f.value&&!v.value?(d(),R(Z,{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:W},{default:A(()=>[$e(V(m(o)("manager.applyChanges")),1)]),_:1})):v.value?E("",!0):(d(),R(Z,{key:1,variant:"muted-textonly",size:"sm",class:"rounded-full font-bold","aria-label":m(o)(a.value?"contextMenu.Collapse":"contextMenu.Expand"),onClick:Ce(j,["stop"])},{default:A(()=>[c("i",{class:K(a.value?"pi pi-chevron-up":"pi pi-chevron-down")},null,2)]),_:2},1032,["aria-label","onClick"])),O(Z,{variant:"muted-textonly",size:"sm",class:"rounded-full font-bold","aria-label":m(o)("g.close"),onClick:Ce(U,["stop"])},{default:A(()=>Q[4]||(Q[4]=[c("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"])])])])]),_:1},8,["expanded","visible"]))}}),Lk={class:"comfyui-body grid h-full w-full overflow-hidden"},Ek=q({__name:"GraphView",setup(e){uk(),L1(),w1();const{t:o}=pe(),t=Wt(),s=re(),l=ct(),a=dt(),i=zt(),r=qn(),u=Il(),p=L(null),{linearMode:g}=qe(he());Ga(),se(()=>a.completedActivePalette,T=>{const M="dark-theme";T.light_theme?document.body.classList.remove(M):document.body.classList.add(M),Ke()&&yo().changeTheme({color:"rgba(0, 0, 0, 0)",symbolColor:T.colors.comfy_base["input-text"]})},{immediate:!0}),Ke()&&se(()=>i.tasks,(T,M)=>{const P=new Set(M.filter(B=>B.isRunning).map(B=>B.promptId));T.filter(B=>P.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}),ke(()=>{const T=s.get("Comfy.TextareaWidget.FontSize");document.documentElement.style.setProperty("--comfy-textarea-font-size",`${T}px`)}),ke(()=>{const T=s.get("Comfy.TreeExplorer.ItemPadding");document.documentElement.style.setProperty("--comfy-tree-explorer-item-padding",`${T}px`)}),ke(async()=>{const T=s.get("Comfy.Locale");if(T)try{await du(T),za.global.locale.value=T}catch(M){console.error(`Failed to switch to locale "${T}":`,M)}});const v=y(()=>s.get("Comfy.UseNewMenu"));ke(()=>{v.value==="Disabled"?(J.ui.menuContainer.style.setProperty("display","block"),J.ui.restoreMenuPosition()):J.ui.menuContainer.style.setProperty("display","none")}),ke(()=>{i.maxHistoryItems=s.get("Comfy.Queue.MaxHistoryItems")});const f=n(()=>{const T=A1();Se().registerCommands(T),Xa().registerCoreMenuCommands(),mn().registerCoreKeybindings(),Ho().registerCoreSidebarTabs(),io().registerCoreBottomPanelTabs(),J.extensionManager=it()},"init"),C=ll(),w=Ho(),h=n(async T=>{C.update(T),await i.update(),w.activeSidebarTabId==="assets"&&await r.updateHistory()},"onStatus"),k=n(async()=>{await i.update(),w.activeSidebarTabId==="assets"&&await r.updateHistory()},"onExecutionSuccess"),b={severity:"error",summary:o("g.reconnecting")},N=n(()=>{s.get("Comfy.Toast.DisableReconnectingToast")||(t.remove(b),t.add(b))},"onReconnecting"),S=n(()=>{s.get("Comfy.Toast.DisableReconnectingToast")||(t.remove(b),t.add({severity:"success",summary:o("g.reconnected"),life:2e3}))},"onReconnected");ze(()=>{Te.addEventListener("status",h),Te.addEventListener("execution_success",k),Te.addEventListener("reconnecting",N),Te.addEventListener("reconnected",S),l.bindExecutionEvents();try{f(),p.value?.prepend(J.ui.menuContainer)}catch(T){console.error("Failed to init ComfyUI frontend",T)}}),rt(()=>{Te.removeEventListener("status",h),Te.removeEventListener("execution_success",k),Te.removeEventListener("reconnecting",N),Te.removeEventListener("reconnected",S),l.unbindExecutionEvents()}),Oe(window,"keydown",mn().keybindHandler);const{wrapWithErrorHandling:I,wrapWithErrorHandlingAsync:_}=Bt();rk({immediate:!0}),Fe(()=>{u.initialize().catch(T=>{console.warn("Version compatibility check failed:",T)})});const x=n(()=>{pl(()=>{I(mn().registerUserKeybindings)(),I(yu().loadServerConfig)(E1,s.get("Comfy.Server.ServerConfigValues")),_(pu().loadModelFolders)(),_(as().loadNodeFrequencies)(),_t().nodeSearchService.searchNode("")},1e3)},"onGraphReady");return(T,M)=>(d(),$(oe,null,[c("div",Lk,[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(g1,{onReady:x})],512),[[Xe,!m(g)]]),m(g)?(d(),R(wk,{key:0})):E("",!0)]),O(sd),O(y1),O(lk),O(Ak),m(Ke)()?E("",!0):(d(),R(id,{key:0})),O(ld)],64))}}),Vk=Le(Ek,[["__scopeId","data-v-5229bbd8"]]),Kk=Object.freeze(Object.defineProperty({__proto__:null,default:Vk},Symbol.toStringTag,{value:"Module"}));export{Kk as G,Zc as _,od as a,hd as g};
|
|
15
|
+
//# sourceMappingURL=GraphView-BuGkgiGk.js.map
|