comfyui-frontend-package 1.37.11__tar.gz → 1.38.0__tar.gz
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-1.37.11 → comfyui_frontend_package-1.38.0}/PKG-INFO +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/AboutPanel-B-lCq9HV.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/AboutPanel-DeWaRZUc.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/AboutPanel-B-lCq9HV.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/AboutPanel-DeWaRZUc.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/AudioPreviewPlayer-CXgr12AM.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/AudioPreviewPlayer-CSxbl0y3.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/AudioPreviewPlayer-CXgr12AM.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/AudioPreviewPlayer-CSxbl0y3.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/ComfyQueueButton-C6ttLtL6.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/ComfyQueueButton-BV0p-R1-.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/ComfyQueueButton-C6ttLtL6.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/ComfyQueueButton-BV0p-R1-.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/ExtensionPanel-uFlj7Yfm.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/ExtensionPanel-DvPzK040.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/ExtensionPanel-uFlj7Yfm.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/ExtensionPanel-DvPzK040.js.map +1 -1
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/GraphView-BuGkgiGk.js +15 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/GraphView-BuGkgiGk.js.map +1 -0
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/KeybindingPanel-DtxoTOoX.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/KeybindingPanel-DbjoObzw.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/KeybindingPanel-DtxoTOoX.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/KeybindingPanel-DbjoObzw.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-BSzd4gKh.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-Op4fug5d.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-BSzd4gKh.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-Op4fug5d.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/LegacyCreditsPanel-CO0JRKfg.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/LegacyCreditsPanel-BFKSdy5y.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/LegacyCreditsPanel-CO0JRKfg.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/LegacyCreditsPanel-BFKSdy5y.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/Load3D-NG6IeknA.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/Load3D-B3uXG_Os.js +2 -2
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/Load3D-B3uXG_Os.js.map +1 -0
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/Load3D.vue_vue_type_script_setup_true_lang-DYT5Ecka.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/Load3D.vue_vue_type_script_setup_true_lang-CslfLloq.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/Load3D.vue_vue_type_script_setup_true_lang-DYT5Ecka.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/Load3D.vue_vue_type_script_setup_true_lang-CslfLloq.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/Media3DTop-iLfJefgN.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/Media3DTop-CfCHfZKG.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/Media3DTop-iLfJefgN.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/Media3DTop-CfCHfZKG.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/ServerConfigPanel-B8Qy2naY.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/ServerConfigPanel-DvFzfUMn.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/ServerConfigPanel-B8Qy2naY.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/ServerConfigPanel-DvFzfUMn.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-CIYbxFB5.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-DTq1ffwv.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-CIYbxFB5.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-DTq1ffwv.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/UserPanel-D5s95p9f.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/UserPanel-Xvm9QBld.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/UserPanel-D5s95p9f.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/UserPanel-Xvm9QBld.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/UserSelectView-TWmqiRNC.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/UserSelectView-Bh8_ghwS.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/UserSelectView-TWmqiRNC.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/UserSelectView-Bh8_ghwS.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/ValueControlPopover-oFjRn7nT.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/ValueControlPopover-BrAoQ_2-.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/ValueControlPopover-oFjRn7nT.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/ValueControlPopover-BrAoQ_2-.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetAudioUI-DYG-X1jd.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetAudioUI-BjV6M32Q.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetAudioUI-DYG-X1jd.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetAudioUI-BjV6M32Q.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetButton-pJqn_pIo.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetButton-Dk30Nukl.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetButton-pJqn_pIo.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetButton-Dk30Nukl.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetColorPicker-JIRhb2dg.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetColorPicker-CkqNsGhI.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetColorPicker-JIRhb2dg.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetColorPicker-CkqNsGhI.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetGalleria-CtUTrKmF.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetGalleria-BYYCCQyX.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetGalleria-CtUTrKmF.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetGalleria-BYYCCQyX.js.map +1 -1
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetInputNumber-psomfHIy.js +2 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetInputNumber-psomfHIy.js.map +1 -0
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetInputNumber.vue_vue_type_script_setup_true_lang-Cb9Vjdsr.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetInputNumber.vue_vue_type_script_setup_true_lang-qjF5C0EN.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetInputNumber.vue_vue_type_script_setup_true_lang-Cb9Vjdsr.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetInputNumber.vue_vue_type_script_setup_true_lang-qjF5C0EN.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetInputText-C9e7Utok.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetInputText-Btor0Uhs.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetInputText-C9e7Utok.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetInputText-Btor0Uhs.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetLayoutField.vue_vue_type_script_setup_true_lang-B2h9BxrZ.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetLayoutField.vue_vue_type_script_setup_true_lang-Bq1noASf.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetLayoutField.vue_vue_type_script_setup_true_lang-B2h9BxrZ.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetLayoutField.vue_vue_type_script_setup_true_lang-Bq1noASf.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetLegacy-DxWXa1q8.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetLegacy-Cj4T7tN3.js +2 -2
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetLegacy-Cj4T7tN3.js.map +1 -0
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetMarkdown-BbdYbwjR.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetMarkdown-CsRRMdeD.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetMarkdown-BbdYbwjR.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetMarkdown-CsRRMdeD.js.map +1 -1
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetRecordAudio-CbCqPJqI.js +2 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetRecordAudio-CbCqPJqI.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetSelect-DcVQrOUl.js +2 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetSelect-DcVQrOUl.js.map +1 -0
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetSelect.vue_vue_type_script_setup_true_lang-DnNAGP6n.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetSelect.vue_vue_type_script_setup_true_lang-B0Z0OQv6.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetSelect.vue_vue_type_script_setup_true_lang-DnNAGP6n.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetSelect.vue_vue_type_script_setup_true_lang-B0Z0OQv6.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetTextarea-DtdgdYZv.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetTextarea-OMPagx9K.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetTextarea-DtdgdYZv.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetTextarea-OMPagx9K.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetToggleSwitch-BZnc8nGp.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetToggleSwitch-mOArdF4c.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetToggleSwitch-BZnc8nGp.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetToggleSwitch-mOArdF4c.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetWithControl.vue_vue_type_script_setup_true_lang-39lKeCWN.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetWithControl.vue_vue_type_script_setup_true_lang-Bx6suA2O.js +3 -3
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetWithControl.vue_vue_type_script_setup_true_lang-39lKeCWN.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/WidgetWithControl.vue_vue_type_script_setup_true_lang-Bx6suA2O.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/audioService-CxmGtl4K.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/audioService-jRjL5LtP.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/audioService-CxmGtl4K.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/audioService-jRjL5LtP.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/audioUtils-B4fAuqez.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/audioUtils-DsaLmBXU.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/audioUtils-B4fAuqez.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/audioUtils-DsaLmBXU.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-DHxq3nWN.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-6krn3srk.js +2 -2
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-6krn3srk.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-B8TX-OdW.js +2 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-B8TX-OdW.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-BBMcY34D.js +2 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-BBMcY34D.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-C0R_Md8R.js +2 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-C0R_Md8R.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-CAv4QkZ-.js +2 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-CAv4QkZ-.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-CeIcZl_a.js +2 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-CeIcZl_a.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-CtwQRBL_.js +2 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-CtwQRBL_.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-DjX42wW9.js +2 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-DjX42wW9.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-DzwpXu9N.js +2 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-DzwpXu9N.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-E4h99f7h.js +2 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-E4h99f7h.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-we3Embjk.js +2 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/commands-we3Embjk.js.map +1 -0
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/index-BFHZsBkN.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/index--yK73oka.js +14 -14
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/index--yK73oka.js.map +1 -0
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/index-DJa4hQi7.css → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/index-CofcAZPL.css +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/index-tImAQKwZ.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/index-CwTFEsg4.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/index-tImAQKwZ.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/index-CwTFEsg4.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/index-B7ehZHKU.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/index-Hz5b30sA.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/index-B7ehZHKU.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/index-Hz5b30sA.js.map +1 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/keybindingService-B_cUhEnt.js → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/keybindingService-XE4XFAxf.js +2 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/keybindingService-B_cUhEnt.js.map → comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/keybindingService-XE4XFAxf.js.map +1 -1
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-B1lLjnTc.js +17 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-B1lLjnTc.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-B6hk_BFB.js +17 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-B6hk_BFB.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-BJ1OB7_l.js +14 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-BJ1OB7_l.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-Beff11ll.js +17 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-Beff11ll.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-Bmv0nfqm.js +14 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-Bmv0nfqm.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-Bmv_vwNy.js +14 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-Bmv_vwNy.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-CC-DWYqg.js +17 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-CC-DWYqg.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-CPEN9kTz.js +17 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-CPEN9kTz.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-Ca_1lXEg.js +17 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-Ca_1lXEg.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-CiNLJloN.js +17 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-CiNLJloN.js.map +1 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-Dy-2iV5r.js +14 -0
- comfyui_frontend_package-1.38.0/comfyui_frontend_package/static/assets/main-Dy-2iV5r.js.map +1 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/index.html +1 -1
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package.egg-info/PKG-INFO +1 -1
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package.egg-info/SOURCES.txt +121 -121
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/GraphView-0U0T8pwU.js +0 -15
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/GraphView-0U0T8pwU.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/Load3D-NG6IeknA.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetInputNumber-DPITONSH.js +0 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetInputNumber-DPITONSH.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetLegacy-DxWXa1q8.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetRecordAudio-DQzt1Okr.js +0 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetRecordAudio-DQzt1Okr.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetSelect-BCeT8JsM.js +0 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/WidgetSelect-BCeT8JsM.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-2re7xZu6.js +0 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-2re7xZu6.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-5dfPmqrI.js +0 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-5dfPmqrI.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-9-tUiihM.js +0 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-9-tUiihM.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-BOYC3thj.js +0 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-BOYC3thj.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-CSrZnGH2.js +0 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-CSrZnGH2.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-DGL_KBDe.js +0 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-DGL_KBDe.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-DHxq3nWN.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-DOgmN2m6.js +0 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-DOgmN2m6.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-DoQ2gxMh.js +0 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-DoQ2gxMh.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-irqWUFB-.js +0 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-irqWUFB-.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-xGVSTfS4.js +0 -2
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/commands-xGVSTfS4.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/index-BFHZsBkN.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-B3vd7GL1.js +0 -17
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-B3vd7GL1.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-BKCc2TkD.js +0 -17
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-BKCc2TkD.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-BNvzUx74.js +0 -17
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-BNvzUx74.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-BPu7av80.js +0 -17
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-BPu7av80.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-BQ4z0Xxc.js +0 -14
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-BQ4z0Xxc.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-BoyaoV4J.js +0 -14
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-BoyaoV4J.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-CJ1ZmTbz.js +0 -14
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-CJ1ZmTbz.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-DxByB8u3.js +0 -17
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-DxByB8u3.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-Dyk43SJi.js +0 -17
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-Dyk43SJi.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-QMLeyFJQ.js +0 -17
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-QMLeyFJQ.js.map +0 -1
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-f7MqrMkx.js +0 -14
- comfyui_frontend_package-1.37.11/comfyui_frontend_package/static/assets/main-f7MqrMkx.js.map +0 -1
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/MANIFEST.in +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/README.md +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/__init__.py +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/ABCROMExtended-BlackItalic-B3Ak1JoQ.woff +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/ABCROMExtended-BlackItalic-NFqMndLW.woff2 +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/AudioPreviewPlayer-DkCMWdK6.css +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/CREDIT.txt +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/ComfyQueueButton-Chw03MdC.css +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/GraphView-2T90vQj0.css +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/KeybindingPanel-cIUDOO6-.css +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/Load3D-DeGA9oCm.css +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/MediaAudioTop-CSkE85WA.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/MediaAudioTop-CSkE85WA.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/MediaImageTop-DuxDAacs.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/MediaImageTop-DuxDAacs.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/MediaVideoTop-BMwBXV3F.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/MediaVideoTop-BMwBXV3F.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/OBJLoader2WorkerModule-DTMpvldF.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-C1UryadQ.css +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/UserAvatar.vue_vue_type_script_setup_true_lang-COE-v4cY.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/UserAvatar.vue_vue_type_script_setup_true_lang-COE-v4cY.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/WidgetChart-BntGUEQZ.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/WidgetChart-BntGUEQZ.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/WidgetGalleria-B85qzqLf.css +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/WidgetImageCompare-CeFdpKHh.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/WidgetImageCompare-CeFdpKHh.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/WidgetInputNumber-DwTgzZ6Z.css +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/favicon.ico +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/civitai.svg +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/cloud-subscription.webm +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/comfy-cloud-logo.svg +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/comfy-logo-mono.svg +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/comfy-logo-single.svg +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/default-template.png +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/fallback-gradient-avatar.svg +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/favicon_progress_16x16/frame_0.png +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/favicon_progress_16x16/frame_1.png +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/favicon_progress_16x16/frame_2.png +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/favicon_progress_16x16/frame_3.png +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/favicon_progress_16x16/frame_4.png +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/favicon_progress_16x16/frame_5.png +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/favicon_progress_16x16/frame_6.png +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/favicon_progress_16x16/frame_7.png +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/favicon_progress_16x16/frame_8.png +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/favicon_progress_16x16/frame_9.png +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/hf-logo.svg +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/manual-configuration.svg +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/nvidia-logo.svg +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/images/og-image.png +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/index-TGN-mpPg.css +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/manifest-CebUEmtR.json +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs--_raLCXX.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs--_raLCXX.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs-6GQKI6ze.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs-6GQKI6ze.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs-BaPAZPG_.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs-BaPAZPG_.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs-CAQOpAmi.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs-CAQOpAmi.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs-CoHhLTlc.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs-CoHhLTlc.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs-CqPqVYqF.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs-CqPqVYqF.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs-DA7Qxfeo.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs-DA7Qxfeo.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs-DreEHBY5.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs-DreEHBY5.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs-Dwnc4q-l.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs-Dwnc4q-l.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs-Dx3vk0KV.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs-Dx3vk0KV.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs-QpCZS0Oj.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/nodeDefs-QpCZS0Oj.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/primeicons-C6QP2o4f.woff2 +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/primeicons-DMOk5skT.eot +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/primeicons-Dr5RGzOO.svg +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/primeicons-MpK4pl85.ttf +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/primeicons-WjwUDZjB.woff +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/serverConfigStore-D8kGBwZ6.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/serverConfigStore-D8kGBwZ6.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-BDcsAddA.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-BDcsAddA.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-BscQZApb.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-BscQZApb.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-BxGvSZQt.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-BxGvSZQt.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-CRbIyGOx.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-CRbIyGOx.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-C_M95LcR.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-C_M95LcR.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-CfAtcjYG.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-CfAtcjYG.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-D1FGfDLO.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-D1FGfDLO.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-DIhoSYUg.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-DIhoSYUg.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-DR935Ify.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-DR935Ify.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-DwzAhg99.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-DwzAhg99.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-ydiuzS6H.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/settings-ydiuzS6H.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/sorted-custom-node-map.json +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/thumbnail-imMA3y7Z.png +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/vendor-chart-nMs08NO-.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/vendor-chart-nMs08NO-.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/vendor-other-B8t_Wf2K.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/vendor-other-B8t_Wf2K.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/vendor-other-DYX1NpEr.css +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/vendor-primevue-DeKsC2uk.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/vendor-primevue-DeKsC2uk.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/vendor-three-DH0o8VQ7.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/vendor-three-DH0o8VQ7.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/vendor-tiptap-VxK0yxkd.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/vendor-tiptap-VxK0yxkd.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/vendor-vue-DaLZjKA7.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/vendor-vue-DaLZjKA7.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/vendor-xterm-CWYFmgbN.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/vendor-xterm-CWYFmgbN.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/vendor-xterm-xj0gfbX3.css +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/video-BvOHf4P9.mp4 +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/widgetPropFilter-CygYoMQt.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/assets/widgetPropFilter-CygYoMQt.js.map +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/cursor/colorSelect.png +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/cursor/paintBucket.png +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/extensions/core/clipspace.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/extensions/core/groupNode.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/extensions/core/groupNodeManage.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/extensions/core/load3d/AnimationManager.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/extensions/core/load3d/CameraManager.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/extensions/core/load3d/ControlsManager.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/extensions/core/load3d/EventManager.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/extensions/core/load3d/LightingManager.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/extensions/core/load3d/LoaderManager.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/extensions/core/load3d/ModelExporter.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/extensions/core/load3d/RecordingManager.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/extensions/core/load3d/SceneManager.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/extensions/core/load3d/SceneModelManager.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/extensions/core/load3d/ViewHelperManager.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/extensions/core/load3d/exportMenuHelper.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/extensions/core/load3d/interfaces.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/extensions/core/load3d/loader/FastPLYLoader.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/extensions/core/maskeditor/constants.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/extensions/core/maskeditor/types.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/extensions/core/widgetInputs.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/fonts/inter-latin-italic.woff2 +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/fonts/inter-latin-normal.woff2 +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/fonts/materialdesignicons-webfont.woff2 +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/materialdesignicons.min.css +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/api.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/app.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/changeTracker.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/defaultGraph.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/domWidget.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/metadata/avif.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/metadata/ebml.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/metadata/flac.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/metadata/gltf.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/metadata/isobmff.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/metadata/json.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/metadata/mp3.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/metadata/ogg.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/metadata/parser.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/metadata/ply.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/metadata/png.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/metadata/svg.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/pnginfo.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/ui/components/asyncDialog.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/ui/components/button.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/ui/components/buttonGroup.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/ui/components/popup.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/ui/components/splitButton.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/ui/dialog.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/ui/draggableList.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/ui/imagePreview.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/ui/menu/index.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/ui/settings.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/ui/toggleSwitch.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/ui/utils.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/ui.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/utils.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package/static/scripts/widgets.js +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package.egg-info/dependency_links.txt +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/comfyui_frontend_package.egg-info/top_level.txt +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/setup.cfg +0 -0
- {comfyui_frontend_package-1.37.11 → comfyui_frontend_package-1.38.0}/setup.py +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var P=Object.defineProperty;var S=(i,e)=>P(i,"name",{value:e,configurable:!0});import{q as k,ac as N,G as B,w as I}from"./vendor-primevue-DeKsC2uk.js";import{ds as x,a2 as M,aa as A,a3 as T,dt as E,ab as F,bo as R,du as D}from"./index
|
|
2
|
-
//# sourceMappingURL=AboutPanel-
|
|
1
|
+
var P=Object.defineProperty;var S=(i,e)=>P(i,"name",{value:e,configurable:!0});import{q as k,ac as N,G as B,w as I}from"./vendor-primevue-DeKsC2uk.js";import{ds as x,a2 as M,aa as A,a3 as T,dt as E,ab as F,bo as R,du as D}from"./index--yK73oka.js";import{bx as $,c as n,d as t,F as _,y as b,e as a,u as m,E as p,q as C,z as g,by as c,j as v,k as y,A as U,s as z}from"./vendor-other-B8t_Wf2K.js";import{d as O}from"./vendor-vue-DaLZjKA7.js";import"./vendor-xterm-CWYFmgbN.js";import"./vendor-three-DH0o8VQ7.js";import"./vendor-tiptap-VxK0yxkd.js";const j={class:"grid grid-cols-2 gap-2"},q={class:"font-medium"},V=$({__name:"DeviceInfo",props:{device:{}},setup(i){const e=i,u=[{field:"name",header:"Name"},{field:"type",header:"Type"},{field:"vram_total",header:"VRAM Total"},{field:"vram_free",header:"VRAM Free"},{field:"torch_vram_total",header:"Torch VRAM Total"},{field:"torch_vram_free",header:"Torch VRAM Free"}],r=S((l,s)=>["vram_total","vram_free","torch_vram_total","torch_vram_free"].includes(s)?x(l):l,"formatValue");return(l,s)=>(t(),n("div",j,[(t(),n(_,null,b(u,f=>(t(),n(_,{key:f.field},[a("div",q,m(f.header),1),a("div",null,m(r(e.device[f.field],f.field)),1)],64))),64))]))}}),w={class:"system-stats"},L={class:"mb-6"},G={class:"mb-4 text-2xl font-semibold"},H={class:"grid grid-cols-2 gap-2"},J={class:"font-medium"},K={class:"mb-4 text-2xl font-semibold"},Q=$({__name:"SystemStatsPanel",props:{stats:{}},setup(i){const e=i,u=p(()=>({...e.stats.system,argv:e.stats.system.argv.join(" ")})),r=p(()=>e.stats.devices.length>0),l=[{field:"os",header:"OS"},{field:"python_version",header:"Python Version"},{field:"embedded_python",header:"Embedded Python"},{field:"pytorch_version",header:"Pytorch Version"},{field:"argv",header:"Arguments"},{field:"ram_total",header:"RAM Total",formatNumber:x},{field:"ram_free",header:"RAM Free",formatNumber:x}],s=p(()=>l),f=S(o=>{const h=u.value[o.field];return o.formatNumber&&typeof h=="number"?o.formatNumber(h):o.format&&typeof h=="string"?o.format(h):h},"getDisplayValue");return(o,h)=>(t(),n("div",w,[a("div",L,[a("h2",G,m(o.$t("g.systemInfo")),1),a("div",H,[(t(!0),n(_,null,b(s.value,d=>(t(),n(_,{key:d.field},[a("div",J,m(d.header),1),a("div",null,m(f(d)),1)],64))),128))])]),r.value?(t(),n(_,{key:0},[g(c(k)),a("div",null,[a("h2",K,m(o.$t("g.devices")),1),e.stats.devices.length>1?(t(),v(c(N),{key:0},{default:y(()=>[(t(!0),n(_,null,b(e.stats.devices,d=>(t(),v(c(B),{key:d.index,header:d.name,value:d.index},{default:y(()=>[g(V,{device:d},null,8,["device"])]),_:2},1032,["header","value"]))),128))]),_:1})):(t(),v(V,{key:1,device:e.stats.devices[0]},null,8,["device"]))])],64)):C("",!0)]))}}),W=O("aboutPanel",()=>{const i="1.38.0",e=M(),u=A(),{staticUrls:r}=T(),l=p(()=>u?.systemStats?.system?.comfyui_version??""),s=p(()=>[{label:`ComfyUI ${F()?"v"+R().getComfyUIVersion():E(l.value)}`,url:r.github,icon:"pi pi-github"},{label:`ComfyUI_frontend v${i}`,url:r.githubFrontend,icon:"pi pi-github"},{label:"Discord",url:r.discord,icon:"pi pi-discord"},{label:"ComfyOrg",url:r.comfyOrg,icon:"pi pi-globe"}]);return{badges:p(()=>[...s.value,...e.extensions.flatMap(o=>o.aboutPageBadges??[])])}}),X={class:"mb-2 text-2xl font-bold"},Y={class:"space-y-2"},Z=["href","title"],le=$({__name:"AboutPanel",setup(i){const e=A(),u=W();return(r,l)=>(t(),v(D,{value:"About",class:"about-container"},{default:y(()=>[a("h2",X,m(r.$t("g.about")),1),a("div",Y,[(t(!0),n(_,null,b(c(u).badges,s=>(t(),n("a",{key:s.url,href:s.url,target:"_blank",rel:"noopener noreferrer",class:"about-badge inline-flex items-center no-underline",title:s.url},[g(c(I),{class:"mr-2"},{icon:y(()=>[a("i",{class:z([s.icon,"mr-2 text-xl"])},null,2)]),default:y(()=>[U(" "+m(s.label),1)]),_:2},1024)],8,Z))),128))]),g(c(k)),c(e).systemStats?(t(),v(Q,{key:0,stats:c(e).systemStats},null,8,["stats"])):C("",!0)]),_:1}))}});export{le as default};
|
|
2
|
+
//# sourceMappingURL=AboutPanel-DeWaRZUc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AboutPanel-
|
|
1
|
+
{"version":3,"file":"AboutPanel-DeWaRZUc.js","sources":["../../src/components/common/DeviceInfo.vue","../../src/components/common/SystemStatsPanel.vue","../../src/stores/aboutPanelStore.ts","../../src/components/dialog/content/setting/AboutPanel.vue"],"sourcesContent":["<template>\n <div class=\"grid grid-cols-2 gap-2\">\n <template v-for=\"col in deviceColumns\" :key=\"col.field\">\n <div class=\"font-medium\">\n {{ col.header }}\n </div>\n <div>\n {{ formatValue(props.device[col.field], col.field) }}\n </div>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type { DeviceStats } from '@/schemas/apiSchema'\nimport { formatSize } from '@/utils/formatUtil'\n\nconst props = defineProps<{\n device: DeviceStats\n}>()\n\nconst deviceColumns: { field: keyof DeviceStats; header: string }[] = [\n { field: 'name', header: 'Name' },\n { field: 'type', header: 'Type' },\n { field: 'vram_total', header: 'VRAM Total' },\n { field: 'vram_free', header: 'VRAM Free' },\n { field: 'torch_vram_total', header: 'Torch VRAM Total' },\n { field: 'torch_vram_free', header: 'Torch VRAM Free' }\n]\n\nconst formatValue = (value: any, field: string) => {\n if (\n ['vram_total', 'vram_free', 'torch_vram_total', 'torch_vram_free'].includes(\n field\n )\n ) {\n return formatSize(value)\n }\n return value\n}\n</script>\n","<template>\n <div class=\"system-stats\">\n <div class=\"mb-6\">\n <h2 class=\"mb-4 text-2xl font-semibold\">\n {{ $t('g.systemInfo') }}\n </h2>\n <div class=\"grid grid-cols-2 gap-2\">\n <template v-for=\"col in systemColumns\" :key=\"col.field\">\n <div class=\"font-medium\">\n {{ col.header }}\n </div>\n <div>{{ getDisplayValue(col) }}</div>\n </template>\n </div>\n </div>\n\n <template v-if=\"hasDevices\">\n <Divider />\n\n <div>\n <h2 class=\"mb-4 text-2xl font-semibold\">\n {{ $t('g.devices') }}\n </h2>\n <TabView v-if=\"props.stats.devices.length > 1\">\n <TabPanel\n v-for=\"device in props.stats.devices\"\n :key=\"device.index\"\n :header=\"device.name\"\n :value=\"device.index\"\n >\n <DeviceInfo :device=\"device\" />\n </TabPanel>\n </TabView>\n <DeviceInfo v-else :device=\"props.stats.devices[0]\" />\n </div>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Divider from 'primevue/divider'\nimport TabPanel from 'primevue/tabpanel'\nimport TabView from 'primevue/tabview'\nimport { computed } from 'vue'\n\nimport DeviceInfo from '@/components/common/DeviceInfo.vue'\nimport { isCloud } from '@/platform/distribution/types'\nimport type { SystemStats } from '@/schemas/apiSchema'\nimport { formatCommitHash, formatSize } from '@/utils/formatUtil'\n\nconst props = defineProps<{\n stats: SystemStats\n}>()\n\nconst systemInfo = computed(() => ({\n ...props.stats.system,\n argv: props.stats.system.argv.join(' ')\n}))\n\nconst hasDevices = computed(() => props.stats.devices.length > 0)\n\ntype SystemInfoKey = keyof SystemStats['system']\n\ntype ColumnDef = {\n field: SystemInfoKey\n header: string\n format?: (value: string) => string\n formatNumber?: (value: number) => string\n}\n\n/** Columns for local distribution */\nconst localColumns: ColumnDef[] = [\n { field: 'os', header: 'OS' },\n { field: 'python_version', header: 'Python Version' },\n { field: 'embedded_python', header: 'Embedded Python' },\n { field: 'pytorch_version', header: 'Pytorch Version' },\n { field: 'argv', header: 'Arguments' },\n { field: 'ram_total', header: 'RAM Total', formatNumber: formatSize },\n { field: 'ram_free', header: 'RAM Free', formatNumber: formatSize }\n]\n\n/** Columns for cloud distribution */\nconst cloudColumns: ColumnDef[] = [\n { field: 'cloud_version', header: 'Cloud Version' },\n {\n field: 'comfyui_version',\n header: 'ComfyUI Version',\n format: formatCommitHash\n },\n {\n field: 'comfyui_frontend_version',\n header: 'Frontend Version',\n format: formatCommitHash\n },\n { field: 'workflow_templates_version', header: 'Templates Version' }\n]\n\nconst systemColumns = computed(() => (isCloud ? cloudColumns : localColumns))\n\nconst getDisplayValue = (column: ColumnDef) => {\n const value = systemInfo.value[column.field]\n if (column.formatNumber && typeof value === 'number') {\n return column.formatNumber(value)\n }\n if (column.format && typeof value === 'string') {\n return column.format(value)\n }\n return value\n}\n</script>\n","import { defineStore } from 'pinia'\nimport { computed } from 'vue'\n\nimport { useExternalLink } from '@/composables/useExternalLink'\nimport { isCloud } from '@/platform/distribution/types'\nimport type { AboutPageBadge } from '@/types/comfy'\nimport { electronAPI, isElectron } from '@/utils/envUtil'\nimport { formatCommitHash } from '@/utils/formatUtil'\n\nimport { useExtensionStore } from './extensionStore'\nimport { useSystemStatsStore } from './systemStatsStore'\n\nexport const useAboutPanelStore = defineStore('aboutPanel', () => {\n const frontendVersion = __COMFYUI_FRONTEND_VERSION__\n const extensionStore = useExtensionStore()\n const systemStatsStore = useSystemStatsStore()\n const { staticUrls } = useExternalLink()\n const coreVersion = computed(\n () => systemStatsStore?.systemStats?.system?.comfyui_version ?? ''\n )\n\n const coreBadges = computed<AboutPageBadge[]>(() => [\n // In electron, the ComfyUI is packaged without the git repo,\n // so the python server's API doesn't have the version info.\n {\n label: `ComfyUI ${\n isElectron()\n ? 'v' + electronAPI().getComfyUIVersion()\n : formatCommitHash(coreVersion.value)\n }`,\n url: isCloud ? staticUrls.comfyOrg : staticUrls.github,\n icon: isCloud ? 'pi pi-cloud' : 'pi pi-github'\n },\n {\n label: `ComfyUI_frontend v${frontendVersion}`,\n url: staticUrls.githubFrontend,\n icon: 'pi pi-github'\n },\n {\n label: 'Discord',\n url: staticUrls.discord,\n icon: 'pi pi-discord'\n },\n { label: 'ComfyOrg', url: staticUrls.comfyOrg, icon: 'pi pi-globe' }\n ])\n\n const allBadges = computed<AboutPageBadge[]>(() => [\n ...coreBadges.value,\n ...extensionStore.extensions.flatMap((e) => e.aboutPageBadges ?? [])\n ])\n\n return {\n badges: allBadges\n }\n})\n","<template>\n <PanelTemplate value=\"About\" class=\"about-container\">\n <h2 class=\"mb-2 text-2xl font-bold\">\n {{ $t('g.about') }}\n </h2>\n <div class=\"space-y-2\">\n <a\n v-for=\"badge in aboutPanelStore.badges\"\n :key=\"badge.url\"\n :href=\"badge.url\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"about-badge inline-flex items-center no-underline\"\n :title=\"badge.url\"\n >\n <Tag class=\"mr-2\">\n <template #icon>\n <i :class=\"[badge.icon, 'mr-2 text-xl']\" />\n </template>\n {{ badge.label }}\n </Tag>\n </a>\n </div>\n\n <Divider />\n\n <SystemStatsPanel\n v-if=\"systemStatsStore.systemStats\"\n :stats=\"systemStatsStore.systemStats\"\n />\n </PanelTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport Divider from 'primevue/divider'\nimport Tag from 'primevue/tag'\n\nimport SystemStatsPanel from '@/components/common/SystemStatsPanel.vue'\nimport { useAboutPanelStore } from '@/stores/aboutPanelStore'\nimport { useSystemStatsStore } from '@/stores/systemStatsStore'\n\nimport PanelTemplate from './PanelTemplate.vue'\n\nconst systemStatsStore = useSystemStatsStore()\nconst aboutPanelStore = useAboutPanelStore()\n</script>\n"],"names":["props","__props","deviceColumns","formatValue","__name","value","field","formatSize","systemInfo","computed","hasDevices","localColumns","systemColumns","getDisplayValue","column","useAboutPanelStore","defineStore","frontendVersion","extensionStore","useExtensionStore","systemStatsStore","useSystemStatsStore","staticUrls","useExternalLink","coreVersion","coreBadges","isElectron","electronAPI","formatCommitHash","e","aboutPanelStore"],"mappings":"upBAiBA,MAAMA,EAAQC,EAIRC,EAAgE,CACpE,CAAE,MAAO,OAAQ,OAAQ,MAAA,EACzB,CAAE,MAAO,OAAQ,OAAQ,MAAA,EACzB,CAAE,MAAO,aAAc,OAAQ,YAAA,EAC/B,CAAE,MAAO,YAAa,OAAQ,WAAA,EAC9B,CAAE,MAAO,mBAAoB,OAAQ,kBAAA,EACrC,CAAE,MAAO,kBAAmB,OAAQ,iBAAA,CAAkB,EAGlDC,EAAcC,EAAA,CAACC,EAAYC,IAE7B,CAAC,aAAc,YAAa,mBAAoB,iBAAiB,EAAE,SACjEA,CAAA,EAGKC,EAAWF,CAAK,EAElBA,EARW,kaCoBpB,MAAML,EAAQC,EAIRO,EAAaC,EAAS,KAAO,CACjC,GAAGT,EAAM,MAAM,OACf,KAAMA,EAAM,MAAM,OAAO,KAAK,KAAK,GAAG,CAAA,EACtC,EAEIU,EAAaD,EAAS,IAAMT,EAAM,MAAM,QAAQ,OAAS,CAAC,EAY1DW,EAA4B,CAChC,CAAE,MAAO,KAAM,OAAQ,IAAA,EACvB,CAAE,MAAO,iBAAkB,OAAQ,gBAAA,EACnC,CAAE,MAAO,kBAAmB,OAAQ,iBAAA,EACpC,CAAE,MAAO,kBAAmB,OAAQ,iBAAA,EACpC,CAAE,MAAO,OAAQ,OAAQ,WAAA,EACzB,CAAE,MAAO,YAAa,OAAQ,YAAa,aAAcJ,CAAA,EACzD,CAAE,MAAO,WAAY,OAAQ,WAAY,aAAcA,CAAA,CAAW,EAmB9DK,EAAgBH,EAAS,IAAgCE,CAAa,EAEtEE,EAAkBT,EAACU,GAAsB,CAC7C,MAAMT,EAAQG,EAAW,MAAMM,EAAO,KAAK,EAC3C,OAAIA,EAAO,cAAgB,OAAOT,GAAU,SACnCS,EAAO,aAAaT,CAAK,EAE9BS,EAAO,QAAU,OAAOT,GAAU,SAC7BS,EAAO,OAAOT,CAAK,EAErBA,CACT,EATwB,moBCvFXU,EAAqBC,EAAY,aAAc,IAAM,CAChE,MAAMC,EAAkB,SAClBC,EAAiBC,EAAA,EACjBC,EAAmBC,EAAA,EACnB,CAAE,WAAAC,CAAA,EAAeC,EAAA,EACjBC,EAAcf,EAClB,IAAMW,GAAkB,aAAa,QAAQ,iBAAmB,EAAA,EAG5DK,EAAahB,EAA2B,IAAM,CAGlD,CACE,MAAO,WACLiB,EAAA,EACI,IAAMC,IAAc,kBAAA,EACpBC,EAAiBJ,EAAY,KAAK,CACxC,GACA,IAAqCF,EAAW,OAChD,KAAgC,cAAA,EAElC,CACE,MAAO,qBAAqBL,CAAe,GAC3C,IAAKK,EAAW,eAChB,KAAM,cAAA,EAER,CACE,MAAO,UACP,IAAKA,EAAW,QAChB,KAAM,eAAA,EAER,CAAE,MAAO,WAAY,IAAKA,EAAW,SAAU,KAAM,aAAA,CAAc,CACpE,EAOD,MAAO,CACL,OANgBb,EAA2B,IAAM,CACjD,GAAGgB,EAAW,MACd,GAAGP,EAAe,WAAW,QAASW,GAAMA,EAAE,iBAAmB,CAAA,CAAE,CAAA,CACpE,CAGS,CAEZ,CAAC,kHCXD,MAAMT,EAAmBC,EAAA,EACnBS,EAAkBf,EAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var Q=Object.defineProperty;var t=(k,r)=>Q(k,"name",{value:r,configurable:!0});import{a6 as X,j as Y}from"./vendor-primevue-DeKsC2uk.js";import{u as Z}from"./vendor-vue-DaLZjKA7.js";import{r as L,aC as ee,c0 as ae,b$ as te,a as oe,c as C,d as se}from"./index
|
|
2
|
-
//# sourceMappingURL=AudioPreviewPlayer-
|
|
1
|
+
var Q=Object.defineProperty;var t=(k,r)=>Q(k,"name",{value:r,configurable:!0});import{a6 as X,j as Y}from"./vendor-primevue-DeKsC2uk.js";import{u as Z}from"./vendor-vue-DaLZjKA7.js";import{r as L,aC as ee,c0 as ae,b$ as te,a as oe,c as C,d as se}from"./index--yK73oka.js";import{g as le,f as N}from"./audioUtils-DsaLmBXU.js";import{bx as ne,r as i,E as u,w as ue,cd as ie,c as l,d as n,q as z,s as re,by as p,e as o,z as T,u as _,G as ce,k as de,n as ve}from"./vendor-other-B8t_Wf2K.js";import"./vendor-xterm-CWYFmgbN.js";import"./vendor-three-DH0o8VQ7.js";import"./vendor-tiptap-VxK0yxkd.js";const pe={class:"relative"},me={class:"relative flex shrink-0 items-center justify-start gap-2"},fe=["aria-label"],be={key:0,class:"text-secondary icon-[lucide--play] size-4"},ge={key:1,class:"text-secondary icon-[lucide--pause] size-4"},he={class:"text-sm font-normal text-nowrap text-base-foreground"},ye={class:"relative h-0.5 flex-1 rounded-full bg-interface-stroke"},_e=["value","aria-label"],ke={class:"relative flex shrink-0 items-center justify-start gap-2"},xe=["aria-label"],we={key:0,class:"text-secondary icon-[lucide--volume-2] size-4"},Ce={key:1,class:"text-secondary icon-[lucide--volume-1] size-4"},ze={key:2,class:"text-secondary icon-[lucide--volume-x] size-4"},Oe=["aria-label"],Ie={key:0,class:"w-48 px-4 py-2"},Pe={class:"mb-2 block text-xs text-base-foreground"},Ae=["onClick"],Le={class:"text-base-foreground"},Ne={key:0,class:"ml-auto icon-[lucide--check] size-4 text-base-foreground"},Te=ne({__name:"AudioPreviewPlayer",props:{hideWhenEmpty:{type:Boolean,default:!0},showOptionsButton:{type:Boolean},nodeId:{},audioUrl:{}},setup(k){const{t:r}=Z(),g=k,a=i(),O=i(),m=i(!1),c=i(!1),f=i(1),b=i(0),d=i(0),I=i(!1),h=i(1),P=u(()=>!d.value||d.value===0?0:b.value/d.value*100),U=u(()=>!c.value&&f.value>.5),B=u(()=>c.value&&f.value>0),y=u(()=>!g.nodeId||!L.canvas.graph?null:L.canvas.graph.getNodeById(g.nodeId)),R=u(()=>y.value?y.value.constructor?.comfyClass==="LoadAudio"&&!!g.nodeId:!1),S=u(()=>{const e=y.value;return!!e&&ee(e)}),A=u(()=>{const e=y.value;return e?ae(e):null}),V=te(),$=u(()=>{if(!S.value||!A.value)return"";const e=V.nodeOutputs[A.value];if(!e?.audio||e.audio.length===0)return"";const s=e.audio[0];return s.filename?oe.apiURL(le(s.subfolder||"",s.filename,s.type||"output")):""}),j=u(()=>$.value||g.audioUrl||""),E=t(()=>{!a.value||!a.value.src||(m.value?a.value.pause():a.value.play(),m.value=!m.value)},"togglePlayPause"),M=t(()=>{a.value&&(c.value=!c.value,a.value.muted=c.value)},"toggleMute"),F=t(e=>{const s=e.target,v=parseFloat(s.value);if(a.value&&d.value>0){const w=v/100*d.value;a.value.currentTime=w,b.value=w}},"handleSeek"),D=t(()=>{a.value&&(d.value=a.value.duration)},"handleLoadedMetadata"),W=t(()=>{a.value&&(b.value=a.value.currentTime)},"handleTimeUpdate"),q=t(()=>{m.value=!1,b.value=0},"handleEnded"),G=t(e=>{O.value?.toggle(e)},"toggleOptionsMenu"),x=t(e=>{h.value=e,a.value&&(a.value.playbackRate=e)},"setPlaybackSpeed"),H=t(e=>{const s=Array.isArray(e)?e[0]:e;f.value=s/10,a.value&&(a.value.volume=f.value,f.value>0&&c.value&&(c.value=!1,a.value.muted=!1))},"handleVolumeChange"),J=u(()=>[{label:r("g.playbackSpeed"),items:[{label:r("g.halfSpeed"),onClick:t(()=>x(.5),"onClick"),selected:h.value===.5},{label:r("g.1x"),onClick:t(()=>x(1),"onClick"),selected:h.value===1},{label:r("g.2x"),onClick:t(()=>x(2),"onClick"),selected:h.value===2}]},{label:r("g.volume"),key:"volume"}]),K=t(e=>{a.value&&(m.value=!1,a.value.pause(),a.value.src=e,a.value.load(),I.value=!!e)},"loadAudioFromUrl");return ue(j,e=>{e&&ve(()=>{K(e)})},{immediate:!0}),ie(()=>{a.value&&(a.value.pause(),a.value.src="")}),(e,s)=>(n(),l("div",pe,[R.value?z("",!0):(n(),l("div",{key:0,class:re(p(C)("bg-component-node-widget-background box-border flex gap-4 items-center justify-start relative rounded-lg w-full h-16 px-4 py-0",{hidden:e.hideWhenEmpty&&!I.value}))},[o("audio",{ref_key:"audioRef",ref:a,onLoadedmetadata:D,onTimeupdate:W,onEnded:q},null,544),o("div",me,[o("div",{role:"button",tabindex:0,"aria-label":e.$t("g.playPause"),class:"flex size-6 cursor-pointer items-center justify-center rounded hover:bg-interface-menu-component-surface-hovered",onClick:E},[m.value?(n(),l("i",ge)):(n(),l("i",be))],8,fe),o("div",he,_(p(N)(b.value))+" / "+_(p(N)(d.value)),1)]),o("div",ye,[o("div",{class:"absolute top-0 left-0 h-full rounded-full bg-button-icon transition-all",style:ce({width:`${P.value}%`})},null,4),o("input",{type:"range",value:P.value,min:"0",max:"100",step:"0.1","aria-label":e.$t("g.audioProgress"),class:"absolute inset-0 w-full cursor-pointer opacity-0",onInput:F},null,40,_e)]),o("div",ke,[o("div",{role:"button",tabindex:0,"aria-label":e.$t("g.volume"),class:"flex size-6 cursor-pointer items-center justify-center rounded hover:bg-interface-menu-component-surface-hovered",onClick:M},[U.value?(n(),l("i",we)):B.value?(n(),l("i",Ce)):(n(),l("i",ze))],8,xe),e.showOptionsButton?(n(),l("div",{key:0,role:"button",tabindex:0,"aria-label":e.$t("g.moreOptions"),class:"flex size-6 cursor-pointer items-center justify-center rounded hover:bg-interface-menu-component-surface-hovered",onClick:G},s[0]||(s[0]=[o("i",{class:"text-secondary icon-[lucide--more-vertical] size-4"},null,-1)]),8,Oe)):z("",!0)]),T(p(X),{ref_key:"optionsMenu",ref:O,model:J.value,popup:"",class:"audio-player-menu","pt:root:class":p(C)("bg-component-node-widget-background border-component-node-border"),"pt:submenu:class":p(C)("bg-component-node-widget-background")},{item:de(({item:v})=>[v.key==="volume"?(n(),l("div",Ie,[o("label",Pe,_(v.label),1),T(p(Y),{"model-value":f.value*10,min:0,max:10,step:1,class:"w-full","onUpdate:modelValue":H},null,8,["model-value"])])):(n(),l("div",{key:1,class:"flex cursor-pointer items-center px-4 py-2 text-xs hover:bg-white/10",onClick:t(w=>v.onClick?.(),"onClick")},[o("span",Le,_(v.label),1),v.selected?(n(),l("i",Ne)):z("",!0)],8,Ae))]),_:1},8,["model","pt:root:class","pt:submenu:class"])],2))]))}}),Fe=se(Te,[["__scopeId","data-v-b2e1591f"]]);export{Fe as default};
|
|
2
|
+
//# sourceMappingURL=AudioPreviewPlayer-CSxbl0y3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioPreviewPlayer-CXgr12AM.js","sources":["../../src/renderer/extensions/vueNodes/widgets/components/audio/AudioPreviewPlayer.vue"],"sourcesContent":["<template>\n <div class=\"relative\">\n <div\n v-if=\"!hidden\"\n :class=\"\n cn(\n 'bg-component-node-widget-background box-border flex gap-4 items-center justify-start relative rounded-lg w-full h-16 px-4 py-0',\n { hidden: hideWhenEmpty && !hasAudio }\n )\n \"\n >\n <!-- Hidden audio element -->\n <audio\n ref=\"audioRef\"\n @loadedmetadata=\"handleLoadedMetadata\"\n @timeupdate=\"handleTimeUpdate\"\n @ended=\"handleEnded\"\n />\n\n <!-- Left Actions -->\n <div class=\"relative flex shrink-0 items-center justify-start gap-2\">\n <!-- Play/Pause Button -->\n <div\n role=\"button\"\n :tabindex=\"0\"\n :aria-label=\"$t('g.playPause')\"\n class=\"flex size-6 cursor-pointer items-center justify-center rounded hover:bg-interface-menu-component-surface-hovered\"\n @click=\"togglePlayPause\"\n >\n <i\n v-if=\"!isPlaying\"\n class=\"text-secondary icon-[lucide--play] size-4\"\n />\n <i v-else class=\"text-secondary icon-[lucide--pause] size-4\" />\n </div>\n\n <!-- Time Display -->\n <div class=\"text-sm font-normal text-nowrap text-base-foreground\">\n {{ formatTime(currentTime) }} / {{ formatTime(duration) }}\n </div>\n </div>\n\n <!-- Progress Bar -->\n <div class=\"relative h-0.5 flex-1 rounded-full bg-interface-stroke\">\n <div\n class=\"absolute top-0 left-0 h-full rounded-full bg-button-icon transition-all\"\n :style=\"{ width: `${progressPercentage}%` }\"\n />\n <input\n type=\"range\"\n :value=\"progressPercentage\"\n min=\"0\"\n max=\"100\"\n step=\"0.1\"\n :aria-label=\"$t('g.audioProgress')\"\n class=\"absolute inset-0 w-full cursor-pointer opacity-0\"\n @input=\"handleSeek\"\n />\n </div>\n\n <!-- Right Actions -->\n <div class=\"relative flex shrink-0 items-center justify-start gap-2\">\n <!-- Volume Button -->\n <div\n role=\"button\"\n :tabindex=\"0\"\n :aria-label=\"$t('g.volume')\"\n class=\"flex size-6 cursor-pointer items-center justify-center rounded hover:bg-interface-menu-component-surface-hovered\"\n @click=\"toggleMute\"\n >\n <i\n v-if=\"showVolumeTwo\"\n class=\"text-secondary icon-[lucide--volume-2] size-4\"\n />\n <i\n v-else-if=\"showVolumeOne\"\n class=\"text-secondary icon-[lucide--volume-1] size-4\"\n />\n <i v-else class=\"text-secondary icon-[lucide--volume-x] size-4\" />\n </div>\n\n <!-- Options Button -->\n <div\n v-if=\"showOptionsButton\"\n role=\"button\"\n :tabindex=\"0\"\n :aria-label=\"$t('g.moreOptions')\"\n class=\"flex size-6 cursor-pointer items-center justify-center rounded hover:bg-interface-menu-component-surface-hovered\"\n @click=\"toggleOptionsMenu\"\n >\n <i class=\"text-secondary icon-[lucide--more-vertical] size-4\" />\n </div>\n </div>\n\n <!-- Options Menu -->\n <TieredMenu\n ref=\"optionsMenu\"\n :model=\"menuItems\"\n popup\n class=\"audio-player-menu\"\n :pt:root:class=\"\n cn('bg-component-node-widget-background border-component-node-border')\n \"\n :pt:submenu:class=\"cn('bg-component-node-widget-background')\"\n >\n <template #item=\"{ item }\">\n <div v-if=\"item.key === 'volume'\" class=\"w-48 px-4 py-2\">\n <label class=\"mb-2 block text-xs text-base-foreground\">{{\n item.label\n }}</label>\n <Slider\n :model-value=\"volume * 10\"\n :min=\"0\"\n :max=\"10\"\n :step=\"1\"\n class=\"w-full\"\n @update:model-value=\"handleVolumeChange\"\n />\n </div>\n <div\n v-else\n class=\"flex cursor-pointer items-center px-4 py-2 text-xs hover:bg-white/10\"\n @click=\"item.onClick?.()\"\n >\n <span class=\"text-base-foreground\">{{ item.label }}</span>\n <i\n v-if=\"item.selected\"\n class=\"ml-auto icon-[lucide--check] size-4 text-base-foreground\"\n />\n </div>\n </template>\n </TieredMenu>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Slider from 'primevue/slider'\nimport TieredMenu from 'primevue/tieredmenu'\nimport { computed, nextTick, onUnmounted, ref, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport type { LGraphNode } from '@/lib/litegraph/src/LGraphNode'\nimport { api } from '@/scripts/api'\nimport { app } from '@/scripts/app'\nimport { useNodeOutputStore } from '@/stores/imagePreviewStore'\nimport { getLocatorIdFromNodeData } from '@/utils/graphTraversalUtil'\nimport { isOutputNode } from '@/utils/nodeFilterUtil'\nimport { cn } from '@/utils/tailwindUtil'\n\nimport { formatTime, getResourceURL } from '../../utils/audioUtils'\n\nconst { t } = useI18n()\n\nconst props = withDefaults(\n defineProps<{\n hideWhenEmpty?: boolean\n showOptionsButton?: boolean\n nodeId?: string\n audioUrl?: string\n }>(),\n {\n hideWhenEmpty: true\n }\n)\n\n// Refs\nconst audioRef = ref<HTMLAudioElement>()\nconst optionsMenu = ref()\nconst isPlaying = ref(false)\nconst isMuted = ref(false)\nconst volume = ref(1)\nconst currentTime = ref(0)\nconst duration = ref(0)\nconst hasAudio = ref(false)\nconst playbackRate = ref(1)\n\n// Computed\nconst progressPercentage = computed(() => {\n if (!duration.value || duration.value === 0) return 0\n return (currentTime.value / duration.value) * 100\n})\n\nconst showVolumeTwo = computed(() => !isMuted.value && volume.value > 0.5)\nconst showVolumeOne = computed(() => isMuted.value && volume.value > 0)\n\nconst litegraphNode = computed(() => {\n if (!props.nodeId || !app.canvas.graph) return null\n return app.canvas.graph.getNodeById(props.nodeId) as LGraphNode | null\n})\n\nconst hidden = computed(() => {\n if (!litegraphNode.value) return false\n // dont show if its a LoadAudio and we have nodeId\n const isLoadAudio =\n litegraphNode.value.constructor?.comfyClass === 'LoadAudio'\n return isLoadAudio && !!props.nodeId\n})\n\n// Check if this is an output node\nconst isOutputNodeRef = computed(() => {\n const node = litegraphNode.value\n return !!node && isOutputNode(node)\n})\n\nconst nodeLocatorId = computed(() => {\n const node = litegraphNode.value\n if (!node) return null\n return getLocatorIdFromNodeData(node)\n})\n\nconst nodeOutputStore = useNodeOutputStore()\n\n// Computed audio URL from node output (for output nodes)\nconst audioUrlFromOutput = computed(() => {\n if (!isOutputNodeRef.value || !nodeLocatorId.value) return ''\n\n const nodeOutput = nodeOutputStore.nodeOutputs[nodeLocatorId.value]\n if (!nodeOutput?.audio || nodeOutput.audio.length === 0) return ''\n\n const audio = nodeOutput.audio[0]\n if (!audio.filename) return ''\n\n return api.apiURL(\n getResourceURL(\n audio.subfolder || '',\n audio.filename,\n audio.type || 'output'\n )\n )\n})\n\n// Combined audio URL (output takes precedence for output nodes)\nconst finalAudioUrl = computed(() => {\n return audioUrlFromOutput.value || props.audioUrl || ''\n})\n\n// Playback controls\nconst togglePlayPause = () => {\n if (!audioRef.value || !audioRef.value.src) {\n return\n }\n\n if (isPlaying.value) {\n audioRef.value.pause()\n } else {\n void audioRef.value.play()\n }\n isPlaying.value = !isPlaying.value\n}\n\nconst toggleMute = () => {\n if (audioRef.value) {\n isMuted.value = !isMuted.value\n audioRef.value.muted = isMuted.value\n }\n}\n\nconst handleSeek = (event: Event) => {\n const target = event.target as HTMLInputElement\n const value = parseFloat(target.value)\n if (audioRef.value && duration.value > 0) {\n const newTime = (value / 100) * duration.value\n audioRef.value.currentTime = newTime\n currentTime.value = newTime\n }\n}\n\n// Audio events\nconst handleLoadedMetadata = () => {\n if (audioRef.value) {\n duration.value = audioRef.value.duration\n }\n}\n\nconst handleTimeUpdate = () => {\n if (audioRef.value) {\n currentTime.value = audioRef.value.currentTime\n }\n}\n\nconst handleEnded = () => {\n isPlaying.value = false\n currentTime.value = 0\n}\n\n// Options menu\nconst toggleOptionsMenu = (event: Event) => {\n optionsMenu.value?.toggle(event)\n}\n\nconst setPlaybackSpeed = (speed: number) => {\n playbackRate.value = speed\n if (audioRef.value) {\n audioRef.value.playbackRate = speed\n }\n}\n\nconst handleVolumeChange = (value: number | number[]) => {\n const numValue = Array.isArray(value) ? value[0] : value\n volume.value = numValue / 10\n if (audioRef.value) {\n audioRef.value.volume = volume.value\n if (volume.value > 0 && isMuted.value) {\n isMuted.value = false\n audioRef.value.muted = false\n }\n }\n}\n\nconst menuItems = computed(() => [\n {\n label: t('g.playbackSpeed'),\n items: [\n {\n label: t('g.halfSpeed'),\n onClick: () => setPlaybackSpeed(0.5),\n selected: playbackRate.value === 0.5\n },\n {\n label: t('g.1x'),\n onClick: () => setPlaybackSpeed(1),\n selected: playbackRate.value === 1\n },\n {\n label: t('g.2x'),\n onClick: () => setPlaybackSpeed(2),\n selected: playbackRate.value === 2\n }\n ]\n },\n {\n label: t('g.volume'),\n key: 'volume'\n }\n])\n\n// Load audio from URL\nconst loadAudioFromUrl = (url: string) => {\n if (!audioRef.value) return\n isPlaying.value = false\n audioRef.value.pause()\n audioRef.value.src = url\n void audioRef.value.load()\n hasAudio.value = !!url\n}\n\n// Watch for finalAudioUrl changes\nwatch(\n finalAudioUrl,\n (newUrl) => {\n if (newUrl) {\n void nextTick(() => {\n loadAudioFromUrl(newUrl)\n })\n }\n },\n { immediate: true }\n)\n\n// Cleanup\nonUnmounted(() => {\n if (audioRef.value) {\n audioRef.value.pause()\n audioRef.value.src = ''\n }\n})\n</script>\n\n<style scoped>\n.audio-player-menu {\n --p-tieredmenu-item-focus-background: rgb(255 255 255 / 0.1);\n --p-tieredmenu-item-active-background: rgb(255 255 255 / 0.1);\n}\n</style>\n"],"names":["t","useI18n","props","__props","audioRef","ref","optionsMenu","isPlaying","isMuted","volume","currentTime","duration","hasAudio","playbackRate","progressPercentage","computed","showVolumeTwo","showVolumeOne","litegraphNode","app","hidden","isOutputNodeRef","node","isOutputNode","nodeLocatorId","getLocatorIdFromNodeData","nodeOutputStore","useNodeOutputStore","audioUrlFromOutput","nodeOutput","audio","api","getResourceURL","finalAudioUrl","togglePlayPause","__name","toggleMute","handleSeek","event","target","value","newTime","handleLoadedMetadata","handleTimeUpdate","handleEnded","toggleOptionsMenu","setPlaybackSpeed","speed","handleVolumeChange","numValue","menuItems","loadAudioFromUrl","url","watch","newUrl","nextTick","onUnmounted"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AudioPreviewPlayer-CSxbl0y3.js","sources":["../../src/renderer/extensions/vueNodes/widgets/components/audio/AudioPreviewPlayer.vue"],"sourcesContent":["<template>\n <div class=\"relative\">\n <div\n v-if=\"!hidden\"\n :class=\"\n cn(\n 'bg-component-node-widget-background box-border flex gap-4 items-center justify-start relative rounded-lg w-full h-16 px-4 py-0',\n { hidden: hideWhenEmpty && !hasAudio }\n )\n \"\n >\n <!-- Hidden audio element -->\n <audio\n ref=\"audioRef\"\n @loadedmetadata=\"handleLoadedMetadata\"\n @timeupdate=\"handleTimeUpdate\"\n @ended=\"handleEnded\"\n />\n\n <!-- Left Actions -->\n <div class=\"relative flex shrink-0 items-center justify-start gap-2\">\n <!-- Play/Pause Button -->\n <div\n role=\"button\"\n :tabindex=\"0\"\n :aria-label=\"$t('g.playPause')\"\n class=\"flex size-6 cursor-pointer items-center justify-center rounded hover:bg-interface-menu-component-surface-hovered\"\n @click=\"togglePlayPause\"\n >\n <i\n v-if=\"!isPlaying\"\n class=\"text-secondary icon-[lucide--play] size-4\"\n />\n <i v-else class=\"text-secondary icon-[lucide--pause] size-4\" />\n </div>\n\n <!-- Time Display -->\n <div class=\"text-sm font-normal text-nowrap text-base-foreground\">\n {{ formatTime(currentTime) }} / {{ formatTime(duration) }}\n </div>\n </div>\n\n <!-- Progress Bar -->\n <div class=\"relative h-0.5 flex-1 rounded-full bg-interface-stroke\">\n <div\n class=\"absolute top-0 left-0 h-full rounded-full bg-button-icon transition-all\"\n :style=\"{ width: `${progressPercentage}%` }\"\n />\n <input\n type=\"range\"\n :value=\"progressPercentage\"\n min=\"0\"\n max=\"100\"\n step=\"0.1\"\n :aria-label=\"$t('g.audioProgress')\"\n class=\"absolute inset-0 w-full cursor-pointer opacity-0\"\n @input=\"handleSeek\"\n />\n </div>\n\n <!-- Right Actions -->\n <div class=\"relative flex shrink-0 items-center justify-start gap-2\">\n <!-- Volume Button -->\n <div\n role=\"button\"\n :tabindex=\"0\"\n :aria-label=\"$t('g.volume')\"\n class=\"flex size-6 cursor-pointer items-center justify-center rounded hover:bg-interface-menu-component-surface-hovered\"\n @click=\"toggleMute\"\n >\n <i\n v-if=\"showVolumeTwo\"\n class=\"text-secondary icon-[lucide--volume-2] size-4\"\n />\n <i\n v-else-if=\"showVolumeOne\"\n class=\"text-secondary icon-[lucide--volume-1] size-4\"\n />\n <i v-else class=\"text-secondary icon-[lucide--volume-x] size-4\" />\n </div>\n\n <!-- Options Button -->\n <div\n v-if=\"showOptionsButton\"\n role=\"button\"\n :tabindex=\"0\"\n :aria-label=\"$t('g.moreOptions')\"\n class=\"flex size-6 cursor-pointer items-center justify-center rounded hover:bg-interface-menu-component-surface-hovered\"\n @click=\"toggleOptionsMenu\"\n >\n <i class=\"text-secondary icon-[lucide--more-vertical] size-4\" />\n </div>\n </div>\n\n <!-- Options Menu -->\n <TieredMenu\n ref=\"optionsMenu\"\n :model=\"menuItems\"\n popup\n class=\"audio-player-menu\"\n :pt:root:class=\"\n cn('bg-component-node-widget-background border-component-node-border')\n \"\n :pt:submenu:class=\"cn('bg-component-node-widget-background')\"\n >\n <template #item=\"{ item }\">\n <div v-if=\"item.key === 'volume'\" class=\"w-48 px-4 py-2\">\n <label class=\"mb-2 block text-xs text-base-foreground\">{{\n item.label\n }}</label>\n <Slider\n :model-value=\"volume * 10\"\n :min=\"0\"\n :max=\"10\"\n :step=\"1\"\n class=\"w-full\"\n @update:model-value=\"handleVolumeChange\"\n />\n </div>\n <div\n v-else\n class=\"flex cursor-pointer items-center px-4 py-2 text-xs hover:bg-white/10\"\n @click=\"item.onClick?.()\"\n >\n <span class=\"text-base-foreground\">{{ item.label }}</span>\n <i\n v-if=\"item.selected\"\n class=\"ml-auto icon-[lucide--check] size-4 text-base-foreground\"\n />\n </div>\n </template>\n </TieredMenu>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Slider from 'primevue/slider'\nimport TieredMenu from 'primevue/tieredmenu'\nimport { computed, nextTick, onUnmounted, ref, watch } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport type { LGraphNode } from '@/lib/litegraph/src/LGraphNode'\nimport { api } from '@/scripts/api'\nimport { app } from '@/scripts/app'\nimport { useNodeOutputStore } from '@/stores/imagePreviewStore'\nimport { getLocatorIdFromNodeData } from '@/utils/graphTraversalUtil'\nimport { isOutputNode } from '@/utils/nodeFilterUtil'\nimport { cn } from '@/utils/tailwindUtil'\n\nimport { formatTime, getResourceURL } from '../../utils/audioUtils'\n\nconst { t } = useI18n()\n\nconst props = withDefaults(\n defineProps<{\n hideWhenEmpty?: boolean\n showOptionsButton?: boolean\n nodeId?: string\n audioUrl?: string\n }>(),\n {\n hideWhenEmpty: true\n }\n)\n\n// Refs\nconst audioRef = ref<HTMLAudioElement>()\nconst optionsMenu = ref()\nconst isPlaying = ref(false)\nconst isMuted = ref(false)\nconst volume = ref(1)\nconst currentTime = ref(0)\nconst duration = ref(0)\nconst hasAudio = ref(false)\nconst playbackRate = ref(1)\n\n// Computed\nconst progressPercentage = computed(() => {\n if (!duration.value || duration.value === 0) return 0\n return (currentTime.value / duration.value) * 100\n})\n\nconst showVolumeTwo = computed(() => !isMuted.value && volume.value > 0.5)\nconst showVolumeOne = computed(() => isMuted.value && volume.value > 0)\n\nconst litegraphNode = computed(() => {\n if (!props.nodeId || !app.canvas.graph) return null\n return app.canvas.graph.getNodeById(props.nodeId) as LGraphNode | null\n})\n\nconst hidden = computed(() => {\n if (!litegraphNode.value) return false\n // dont show if its a LoadAudio and we have nodeId\n const isLoadAudio =\n litegraphNode.value.constructor?.comfyClass === 'LoadAudio'\n return isLoadAudio && !!props.nodeId\n})\n\n// Check if this is an output node\nconst isOutputNodeRef = computed(() => {\n const node = litegraphNode.value\n return !!node && isOutputNode(node)\n})\n\nconst nodeLocatorId = computed(() => {\n const node = litegraphNode.value\n if (!node) return null\n return getLocatorIdFromNodeData(node)\n})\n\nconst nodeOutputStore = useNodeOutputStore()\n\n// Computed audio URL from node output (for output nodes)\nconst audioUrlFromOutput = computed(() => {\n if (!isOutputNodeRef.value || !nodeLocatorId.value) return ''\n\n const nodeOutput = nodeOutputStore.nodeOutputs[nodeLocatorId.value]\n if (!nodeOutput?.audio || nodeOutput.audio.length === 0) return ''\n\n const audio = nodeOutput.audio[0]\n if (!audio.filename) return ''\n\n return api.apiURL(\n getResourceURL(\n audio.subfolder || '',\n audio.filename,\n audio.type || 'output'\n )\n )\n})\n\n// Combined audio URL (output takes precedence for output nodes)\nconst finalAudioUrl = computed(() => {\n return audioUrlFromOutput.value || props.audioUrl || ''\n})\n\n// Playback controls\nconst togglePlayPause = () => {\n if (!audioRef.value || !audioRef.value.src) {\n return\n }\n\n if (isPlaying.value) {\n audioRef.value.pause()\n } else {\n void audioRef.value.play()\n }\n isPlaying.value = !isPlaying.value\n}\n\nconst toggleMute = () => {\n if (audioRef.value) {\n isMuted.value = !isMuted.value\n audioRef.value.muted = isMuted.value\n }\n}\n\nconst handleSeek = (event: Event) => {\n const target = event.target as HTMLInputElement\n const value = parseFloat(target.value)\n if (audioRef.value && duration.value > 0) {\n const newTime = (value / 100) * duration.value\n audioRef.value.currentTime = newTime\n currentTime.value = newTime\n }\n}\n\n// Audio events\nconst handleLoadedMetadata = () => {\n if (audioRef.value) {\n duration.value = audioRef.value.duration\n }\n}\n\nconst handleTimeUpdate = () => {\n if (audioRef.value) {\n currentTime.value = audioRef.value.currentTime\n }\n}\n\nconst handleEnded = () => {\n isPlaying.value = false\n currentTime.value = 0\n}\n\n// Options menu\nconst toggleOptionsMenu = (event: Event) => {\n optionsMenu.value?.toggle(event)\n}\n\nconst setPlaybackSpeed = (speed: number) => {\n playbackRate.value = speed\n if (audioRef.value) {\n audioRef.value.playbackRate = speed\n }\n}\n\nconst handleVolumeChange = (value: number | number[]) => {\n const numValue = Array.isArray(value) ? value[0] : value\n volume.value = numValue / 10\n if (audioRef.value) {\n audioRef.value.volume = volume.value\n if (volume.value > 0 && isMuted.value) {\n isMuted.value = false\n audioRef.value.muted = false\n }\n }\n}\n\nconst menuItems = computed(() => [\n {\n label: t('g.playbackSpeed'),\n items: [\n {\n label: t('g.halfSpeed'),\n onClick: () => setPlaybackSpeed(0.5),\n selected: playbackRate.value === 0.5\n },\n {\n label: t('g.1x'),\n onClick: () => setPlaybackSpeed(1),\n selected: playbackRate.value === 1\n },\n {\n label: t('g.2x'),\n onClick: () => setPlaybackSpeed(2),\n selected: playbackRate.value === 2\n }\n ]\n },\n {\n label: t('g.volume'),\n key: 'volume'\n }\n])\n\n// Load audio from URL\nconst loadAudioFromUrl = (url: string) => {\n if (!audioRef.value) return\n isPlaying.value = false\n audioRef.value.pause()\n audioRef.value.src = url\n void audioRef.value.load()\n hasAudio.value = !!url\n}\n\n// Watch for finalAudioUrl changes\nwatch(\n finalAudioUrl,\n (newUrl) => {\n if (newUrl) {\n void nextTick(() => {\n loadAudioFromUrl(newUrl)\n })\n }\n },\n { immediate: true }\n)\n\n// Cleanup\nonUnmounted(() => {\n if (audioRef.value) {\n audioRef.value.pause()\n audioRef.value.src = ''\n }\n})\n</script>\n\n<style scoped>\n.audio-player-menu {\n --p-tieredmenu-item-focus-background: rgb(255 255 255 / 0.1);\n --p-tieredmenu-item-active-background: rgb(255 255 255 / 0.1);\n}\n</style>\n"],"names":["t","useI18n","props","__props","audioRef","ref","optionsMenu","isPlaying","isMuted","volume","currentTime","duration","hasAudio","playbackRate","progressPercentage","computed","showVolumeTwo","showVolumeOne","litegraphNode","app","hidden","isOutputNodeRef","node","isOutputNode","nodeLocatorId","getLocatorIdFromNodeData","nodeOutputStore","useNodeOutputStore","audioUrlFromOutput","nodeOutput","audio","api","getResourceURL","finalAudioUrl","togglePlayPause","__name","toggleMute","handleSeek","event","target","value","newTime","handleLoadedMetadata","handleTimeUpdate","handleEnded","toggleOptionsMenu","setPlaybackSpeed","speed","handleVolumeChange","numValue","menuItems","loadAudioFromUrl","url","watch","newUrl","nextTick","onUnmounted"],"mappings":"knDAwJA,KAAM,CAAE,EAAAA,CAAA,EAAMC,EAAA,EAERC,EAAQC,EAaRC,EAAWC,EAAA,EACXC,EAAcD,EAAA,EACdE,EAAYF,EAAI,EAAK,EACrBG,EAAUH,EAAI,EAAK,EACnBI,EAASJ,EAAI,CAAC,EACdK,EAAcL,EAAI,CAAC,EACnBM,EAAWN,EAAI,CAAC,EAChBO,EAAWP,EAAI,EAAK,EACpBQ,EAAeR,EAAI,CAAC,EAGpBS,EAAqBC,EAAS,IAC9B,CAACJ,EAAS,OAASA,EAAS,QAAU,EAAU,EAC5CD,EAAY,MAAQC,EAAS,MAAS,GAC/C,EAEKK,EAAgBD,EAAS,IAAM,CAACP,EAAQ,OAASC,EAAO,MAAQ,EAAG,EACnEQ,EAAgBF,EAAS,IAAMP,EAAQ,OAASC,EAAO,MAAQ,CAAC,EAEhES,EAAgBH,EAAS,IACzB,CAACb,EAAM,QAAU,CAACiB,EAAI,OAAO,MAAc,KACxCA,EAAI,OAAO,MAAM,YAAYjB,EAAM,MAAM,CACjD,EAEKkB,EAASL,EAAS,IACjBG,EAAc,MAGjBA,EAAc,MAAM,aAAa,aAAe,aAC5B,CAAC,CAAChB,EAAM,OAJG,EAKlC,EAGKmB,EAAkBN,EAAS,IAAM,CACrC,MAAMO,EAAOJ,EAAc,MAC3B,MAAO,CAAC,CAACI,GAAQC,GAAaD,CAAI,CACpC,CAAC,EAEKE,EAAgBT,EAAS,IAAM,CACnC,MAAMO,EAAOJ,EAAc,MAC3B,OAAKI,EACEG,GAAyBH,CAAI,EADlB,IAEpB,CAAC,EAEKI,EAAkBC,GAAA,EAGlBC,EAAqBb,EAAS,IAAM,CACxC,GAAI,CAACM,EAAgB,OAAS,CAACG,EAAc,MAAO,MAAO,GAE3D,MAAMK,EAAaH,EAAgB,YAAYF,EAAc,KAAK,EAClE,GAAI,CAACK,GAAY,OAASA,EAAW,MAAM,SAAW,EAAG,MAAO,GAEhE,MAAMC,EAAQD,EAAW,MAAM,CAAC,EAChC,OAAKC,EAAM,SAEJC,GAAI,OACTC,GACEF,EAAM,WAAa,GACnBA,EAAM,SACNA,EAAM,MAAQ,QAAA,CAChB,EAP0B,EAS9B,CAAC,EAGKG,EAAgBlB,EAAS,IACtBa,EAAmB,OAAS1B,EAAM,UAAY,EACtD,EAGKgC,EAAkBC,EAAA,IAAM,CACxB,CAAC/B,EAAS,OAAS,CAACA,EAAS,MAAM,MAInCG,EAAU,MACZH,EAAS,MAAM,MAAA,EAEVA,EAAS,MAAM,KAAA,EAEtBG,EAAU,MAAQ,CAACA,EAAU,MAC/B,EAXwB,mBAalB6B,EAAaD,EAAA,IAAM,CACnB/B,EAAS,QACXI,EAAQ,MAAQ,CAACA,EAAQ,MACzBJ,EAAS,MAAM,MAAQI,EAAQ,MAEnC,EALmB,cAOb6B,EAAaF,EAACG,GAAiB,CACnC,MAAMC,EAASD,EAAM,OACfE,EAAQ,WAAWD,EAAO,KAAK,EACrC,GAAInC,EAAS,OAASO,EAAS,MAAQ,EAAG,CACxC,MAAM8B,EAAWD,EAAQ,IAAO7B,EAAS,MACzCP,EAAS,MAAM,YAAcqC,EAC7B/B,EAAY,MAAQ+B,CACtB,CACF,EARmB,cAWbC,EAAuBP,EAAA,IAAM,CAC7B/B,EAAS,QACXO,EAAS,MAAQP,EAAS,MAAM,SAEpC,EAJ6B,wBAMvBuC,EAAmBR,EAAA,IAAM,CACzB/B,EAAS,QACXM,EAAY,MAAQN,EAAS,MAAM,YAEvC,EAJyB,oBAMnBwC,EAAcT,EAAA,IAAM,CACxB5B,EAAU,MAAQ,GAClBG,EAAY,MAAQ,CACtB,EAHoB,eAMdmC,EAAoBV,EAACG,GAAiB,CAC1ChC,EAAY,OAAO,OAAOgC,CAAK,CACjC,EAF0B,qBAIpBQ,EAAmBX,EAACY,GAAkB,CAC1ClC,EAAa,MAAQkC,EACjB3C,EAAS,QACXA,EAAS,MAAM,aAAe2C,EAElC,EALyB,oBAOnBC,EAAqBb,EAACK,GAA6B,CACvD,MAAMS,EAAW,MAAM,QAAQT,CAAK,EAAIA,EAAM,CAAC,EAAIA,EACnD/B,EAAO,MAAQwC,EAAW,GACtB7C,EAAS,QACXA,EAAS,MAAM,OAASK,EAAO,MAC3BA,EAAO,MAAQ,GAAKD,EAAQ,QAC9BA,EAAQ,MAAQ,GAChBJ,EAAS,MAAM,MAAQ,IAG7B,EAV2B,sBAYrB8C,EAAYnC,EAAS,IAAM,CAC/B,CACE,MAAOf,EAAE,iBAAiB,EAC1B,MAAO,CACL,CACE,MAAOA,EAAE,aAAa,EACtB,QAASmC,EAAA,IAAMW,EAAiB,EAAG,EAA1B,WACT,SAAUjC,EAAa,QAAU,EAAA,EAEnC,CACE,MAAOb,EAAE,MAAM,EACf,QAASmC,EAAA,IAAMW,EAAiB,CAAC,EAAxB,WACT,SAAUjC,EAAa,QAAU,CAAA,EAEnC,CACE,MAAOb,EAAE,MAAM,EACf,QAASmC,EAAA,IAAMW,EAAiB,CAAC,EAAxB,WACT,SAAUjC,EAAa,QAAU,CAAA,CACnC,CACF,EAEF,CACE,MAAOb,EAAE,UAAU,EACnB,IAAK,QAAA,CACP,CACD,EAGKmD,EAAmBhB,EAACiB,GAAgB,CACnChD,EAAS,QACdG,EAAU,MAAQ,GAClBH,EAAS,MAAM,MAAA,EACfA,EAAS,MAAM,IAAMgD,EAChBhD,EAAS,MAAM,KAAA,EACpBQ,EAAS,MAAQ,CAAC,CAACwC,EACrB,EAPyB,oBAUzB,OAAAC,GACEpB,EACCqB,GAAW,CACNA,GACGC,GAAS,IAAM,CAClBJ,EAAiBG,CAAM,CACzB,CAAC,CAEL,EACA,CAAE,UAAW,EAAA,CAAK,EAIpBE,GAAY,IAAM,CACZpD,EAAS,QACXA,EAAS,MAAM,MAAA,EACfA,EAAS,MAAM,IAAM,GAEzB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var I=Object.defineProperty;var a=(f,u)=>I(f,"name",{value:u,configurable:!0});import{s as w,u as V}from"./vendor-vue-DaLZjKA7.js";import{J as T,ag as P}from"./vendor-primevue-DeKsC2uk.js";import{cp as S,e as z,d as k,q as E,H as W,r as j,A,_ as F}from"./index
|
|
2
|
-
//# sourceMappingURL=ComfyQueueButton-
|
|
1
|
+
var I=Object.defineProperty;var a=(f,u)=>I(f,"name",{value:u,configurable:!0});import{s as w,u as V}from"./vendor-vue-DaLZjKA7.js";import{J as T,ag as P}from"./vendor-primevue-DeKsC2uk.js";import{cp as S,e as z,d as k,q as E,H as W,r as j,A,_ as F}from"./index--yK73oka.js";import{g as H}from"./GraphView-BuGkgiGk.js";import{bx as B,E as s,h as D,l as _,c as y,d as c,z as q,by as p,bg as K,j as C,k as b,q as L,A as R,s as g,u as G,e as J}from"./vendor-other-B8t_Wf2K.js";import"./vendor-xterm-CWYFmgbN.js";import"./vendor-three-DH0o8VQ7.js";import"./vendor-tiptap-VxK0yxkd.js";import"./UserAvatar.vue_vue_type_script_setup_true_lang-COE-v4cY.js";import"./index-Hz5b30sA.js";import"./LazyImage.vue_vue_type_script_setup_true_lang-Op4fug5d.js";import"./keybindingService-XE4XFAxf.js";import"./serverConfigStore-D8kGBwZ6.js";import"./WidgetInputNumber.vue_vue_type_script_setup_true_lang-qjF5C0EN.js";import"./widgetPropFilter-CygYoMQt.js";import"./WidgetLayoutField.vue_vue_type_script_setup_true_lang-Bq1noASf.js";import"./WidgetWithControl.vue_vue_type_script_setup_true_lang-Bx6suA2O.js";const O=["aria-label"],U=1,X=B({__name:"BatchCountEdit",setup(f){const u=S(),{batchCount:t}=w(u),v=z(),m=s(()=>v.get("Comfy.QueueButton.BatchCountLimit")),r=a(e=>{let o;if(e){const n=t.value-1;o=Math.min(n*2,m.value)}else{const n=t.value+1;o=Math.floor(n/2)}t.value=o},"handleClick");return(e,o)=>{const n=D("tooltip");return _((c(),y("div",{class:"batch-count","aria-label":e.$t("menu.batchCount")},[q(p(T),{modelValue:p(t),"onUpdate:modelValue":o[0]||(o[0]=h=>K(t)?t.value=h:null),class:"w-14",min:U,max:m.value,fluid:"","show-buttons":"",pt:{incrementButton:{class:"w-6",onmousedown:a(()=>{r(!0)},"onmousedown")},decrementButton:{class:"w-6",onmousedown:a(()=>{r(!1)},"onmousedown")}}},null,8,["modelValue","max","pt"])],8,O)),[[n,{value:e.$t("menu.batchCount"),showDelay:600},void 0,{bottom:!0}]])}}}),Y=k(X,[["__scopeId","data-v-19217ad4"]]),Z={class:"queue-button-group flex"},ee=B({__name:"ComfyQueueButton",setup(f){const u=E(),{mode:t,batchCount:v}=w(S()),m=W(),r=s(()=>H(j.rootGraph,m.nodeDefsByName)),{t:e}=V(),o=s(()=>{const i={disabled:{key:"disabled",label:e("menu.run"),tooltip:e("menu.disabledTooltip"),command:a(()=>{t.value="disabled"},"command")},change:{key:"change",label:`${e("menu.run")} (${e("menu.onChange")})`,tooltip:e("menu.onChangeTooltip"),command:a(()=>{t.value="change"},"command")}};return i.instant={key:"instant",label:`${e("menu.run")} (${e("menu.instant")})`,tooltip:e("menu.instantTooltip"),command:a(()=>{t.value="instant"},"command")},i}),n=s(()=>o.value[t.value]||o.value.disabled),h=s(()=>Object.values(o.value)),M=s(()=>r.value?"icon-[lucide--triangle-alert]":u.shiftDown?"icon-[lucide--list-start]":t.value==="disabled"?"icon-[lucide--play]":t.value==="instant"?"icon-[lucide--fast-forward]":t.value==="change"?"icon-[lucide--step-forward]":"icon-[lucide--play]"),x=s(()=>r.value?e("menu.runWorkflowDisabled"):u.shiftDown?e("menu.runWorkflowFront"):e("menu.runWorkflow")),$=A(),Q=a(async i=>{const d="shiftKey"in i&&i.shiftKey?"Comfy.QueuePromptFront":"Comfy.QueuePrompt";v.value>1,await $.execute(d,{metadata:{subscribe_to_run:!1,trigger_source:"button"}})},"queuePrompt");return(i,N)=>{const d=D("tooltip");return c(),y("div",Z,[_((c(),C(p(P),{class:"comfyui-queue-button",label:String(n.value?.label??""),severity:"primary",size:"small",model:h.value,"data-testid":"queue-button",onClick:Q},{icon:b(()=>[J("i",{class:g(M.value)},null,2)]),item:b(({item:l})=>[_((c(),C(F,{variant:l.key===p(t)?"primary":"secondary",size:"sm",class:"w-full justify-start"},{default:b(()=>[l.icon?(c(),y("i",{key:0,class:g(l.icon)},null,2)):L("",!0),R(" "+G(String(l.label??"")),1)]),_:2},1032,["variant"])),[[d,{value:l.tooltip,showDelay:600}]])]),_:1},8,["label","model"])),[[d,{value:x.value,showDelay:600},void 0,{bottom:!0}]]),q(Y)])}}}),ye=k(ee,[["__scopeId","data-v-214102f7"]]);export{ye as default};
|
|
2
|
+
//# sourceMappingURL=ComfyQueueButton-BV0p-R1-.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComfyQueueButton-
|
|
1
|
+
{"version":3,"file":"ComfyQueueButton-BV0p-R1-.js","sources":["../../src/components/actionbar/BatchCountEdit.vue","../../src/components/actionbar/ComfyRunButton/ComfyQueueButton.vue"],"sourcesContent":["<template>\n <div\n v-tooltip.bottom=\"{\n value: $t('menu.batchCount'),\n showDelay: 600\n }\"\n class=\"batch-count\"\n :aria-label=\"$t('menu.batchCount')\"\n >\n <InputNumber\n v-model=\"batchCount\"\n class=\"w-14\"\n :min=\"minQueueCount\"\n :max=\"maxQueueCount\"\n fluid\n show-buttons\n :pt=\"{\n incrementButton: {\n class: 'w-6',\n onmousedown: () => {\n handleClick(true)\n }\n },\n decrementButton: {\n class: 'w-6',\n onmousedown: () => {\n handleClick(false)\n }\n }\n }\"\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { storeToRefs } from 'pinia'\nimport InputNumber from 'primevue/inputnumber'\nimport { computed } from 'vue'\n\nimport { useSettingStore } from '@/platform/settings/settingStore'\nimport { useQueueSettingsStore } from '@/stores/queueStore'\n\nconst queueSettingsStore = useQueueSettingsStore()\nconst { batchCount } = storeToRefs(queueSettingsStore)\nconst minQueueCount = 1\n\nconst settingStore = useSettingStore()\nconst maxQueueCount = computed(() =>\n settingStore.get('Comfy.QueueButton.BatchCountLimit')\n)\n\nconst handleClick = (increment: boolean) => {\n let newCount: number\n if (increment) {\n const originalCount = batchCount.value - 1\n newCount = Math.min(originalCount * 2, maxQueueCount.value)\n } else {\n const originalCount = batchCount.value + 1\n newCount = Math.floor(originalCount / 2)\n }\n\n batchCount.value = newCount\n}\n</script>\n\n<style scoped>\n:deep(.p-inputtext) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n</style>\n","<template>\n <div class=\"queue-button-group flex\">\n <SplitButton\n v-tooltip.bottom=\"{\n value: queueButtonTooltip,\n showDelay: 600\n }\"\n class=\"comfyui-queue-button\"\n :label=\"String(activeQueueModeMenuItem?.label ?? '')\"\n severity=\"primary\"\n size=\"small\"\n :model=\"queueModeMenuItems\"\n data-testid=\"queue-button\"\n @click=\"queuePrompt\"\n >\n <template #icon>\n <i :class=\"iconClass\" />\n </template>\n <template #item=\"{ item }\">\n <Button\n v-tooltip=\"{\n value: item.tooltip,\n showDelay: 600\n }\"\n :variant=\"item.key === queueMode ? 'primary' : 'secondary'\"\n size=\"sm\"\n class=\"w-full justify-start\"\n >\n <i v-if=\"item.icon\" :class=\"item.icon\" />\n {{ String(item.label ?? '') }}\n </Button>\n </template>\n </SplitButton>\n <BatchCountEdit />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { storeToRefs } from 'pinia'\nimport type { MenuItem } from 'primevue/menuitem'\nimport SplitButton from 'primevue/splitbutton'\nimport { computed } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport Button from '@/components/ui/button/Button.vue'\nimport { isCloud } from '@/platform/distribution/types'\nimport { useTelemetry } from '@/platform/telemetry'\nimport { app } from '@/scripts/app'\nimport { useCommandStore } from '@/stores/commandStore'\nimport { useNodeDefStore } from '@/stores/nodeDefStore'\nimport { useQueueSettingsStore } from '@/stores/queueStore'\nimport { useWorkspaceStore } from '@/stores/workspaceStore'\nimport { graphHasMissingNodes } from '@/workbench/extensions/manager/utils/graphHasMissingNodes'\n\nimport BatchCountEdit from '../BatchCountEdit.vue'\n\nconst workspaceStore = useWorkspaceStore()\nconst { mode: queueMode, batchCount } = storeToRefs(useQueueSettingsStore())\n\nconst nodeDefStore = useNodeDefStore()\nconst hasMissingNodes = computed(() =>\n graphHasMissingNodes(app.rootGraph, nodeDefStore.nodeDefsByName)\n)\n\nconst { t } = useI18n()\nconst queueModeMenuItemLookup = computed(() => {\n const items: Record<string, MenuItem> = {\n disabled: {\n key: 'disabled',\n label: t('menu.run'),\n tooltip: t('menu.disabledTooltip'),\n command: () => {\n queueMode.value = 'disabled'\n }\n },\n change: {\n key: 'change',\n label: `${t('menu.run')} (${t('menu.onChange')})`,\n tooltip: t('menu.onChangeTooltip'),\n command: () => {\n useTelemetry()?.trackUiButtonClicked({\n button_id: 'queue_mode_option_run_on_change_selected'\n })\n queueMode.value = 'change'\n }\n }\n }\n if (!isCloud) {\n items.instant = {\n key: 'instant',\n label: `${t('menu.run')} (${t('menu.instant')})`,\n tooltip: t('menu.instantTooltip'),\n command: () => {\n useTelemetry()?.trackUiButtonClicked({\n button_id: 'queue_mode_option_run_instant_selected'\n })\n queueMode.value = 'instant'\n }\n }\n }\n return items\n})\n\nconst activeQueueModeMenuItem = computed(() => {\n // Fallback to disabled mode if current mode is not available (e.g., instant mode in cloud)\n return (\n queueModeMenuItemLookup.value[queueMode.value] ||\n queueModeMenuItemLookup.value.disabled\n )\n})\nconst queueModeMenuItems = computed(() =>\n Object.values(queueModeMenuItemLookup.value)\n)\n\nconst iconClass = computed(() => {\n if (hasMissingNodes.value) {\n return 'icon-[lucide--triangle-alert]'\n }\n if (workspaceStore.shiftDown) {\n return 'icon-[lucide--list-start]'\n }\n if (queueMode.value === 'disabled') {\n return 'icon-[lucide--play]'\n }\n if (queueMode.value === 'instant') {\n return 'icon-[lucide--fast-forward]'\n }\n if (queueMode.value === 'change') {\n return 'icon-[lucide--step-forward]'\n }\n return 'icon-[lucide--play]'\n})\n\nconst queueButtonTooltip = computed(() => {\n if (hasMissingNodes.value) {\n return t('menu.runWorkflowDisabled')\n }\n if (workspaceStore.shiftDown) {\n return t('menu.runWorkflowFront')\n }\n return t('menu.runWorkflow')\n})\n\nconst commandStore = useCommandStore()\nconst queuePrompt = async (e: Event) => {\n const isShiftPressed = 'shiftKey' in e && e.shiftKey\n const commandId = isShiftPressed\n ? 'Comfy.QueuePromptFront'\n : 'Comfy.QueuePrompt'\n\n if (batchCount.value > 1) {\n useTelemetry()?.trackUiButtonClicked({\n button_id: 'queue_run_multiple_batches_submitted'\n })\n }\n\n await commandStore.execute(commandId, {\n metadata: {\n subscribe_to_run: false,\n trigger_source: 'button'\n }\n })\n}\n</script>\n\n<style scoped>\n.comfyui-queue-button :deep(.p-splitbutton-dropdown) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n</style>\n"],"names":["minQueueCount","queueSettingsStore","useQueueSettingsStore","batchCount","storeToRefs","settingStore","useSettingStore","maxQueueCount","computed","handleClick","__name","increment","newCount","originalCount","workspaceStore","useWorkspaceStore","queueMode","nodeDefStore","useNodeDefStore","hasMissingNodes","graphHasMissingNodes","app","t","useI18n","queueModeMenuItemLookup","items","activeQueueModeMenuItem","queueModeMenuItems","iconClass","queueButtonTooltip","commandStore","useCommandStore","queuePrompt","e","commandId"],"mappings":"0lCA4CMA,EAAgB,wCAFtB,MAAMC,EAAqBC,EAAA,EACrB,CAAE,WAAAC,CAAA,EAAeC,EAAYH,CAAkB,EAG/CI,EAAeC,EAAA,EACfC,EAAgBC,EAAS,IAC7BH,EAAa,IAAI,mCAAmC,CAAA,EAGhDI,EAAcC,EAACC,GAAuB,CAC1C,IAAIC,EACJ,GAAID,EAAW,CACb,MAAME,EAAgBV,EAAW,MAAQ,EACzCS,EAAW,KAAK,IAAIC,EAAgB,EAAGN,EAAc,KAAK,CAC5D,KAAO,CACL,MAAMM,EAAgBV,EAAW,MAAQ,EACzCS,EAAW,KAAK,MAAMC,EAAgB,CAAC,CACzC,CAEAV,EAAW,MAAQS,CACrB,EAXoB,+oBCKpB,MAAME,EAAiBC,EAAA,EACjB,CAAE,KAAMC,EAAW,WAAAb,GAAeC,EAAYF,GAAuB,EAErEe,EAAeC,EAAA,EACfC,EAAkBX,EAAS,IAC/BY,EAAqBC,EAAI,UAAWJ,EAAa,cAAc,CAAA,EAG3D,CAAE,EAAAK,CAAA,EAAMC,EAAA,EACRC,EAA0BhB,EAAS,IAAM,CAC7C,MAAMiB,EAAkC,CACtC,SAAU,CACR,IAAK,WACL,MAAOH,EAAE,UAAU,EACnB,QAASA,EAAE,sBAAsB,EACjC,QAASZ,EAAA,IAAM,CACbM,EAAU,MAAQ,UACpB,EAFS,UAET,EAEF,OAAQ,CACN,IAAK,SACL,MAAO,GAAGM,EAAE,UAAU,CAAC,KAAKA,EAAE,eAAe,CAAC,IAC9C,QAASA,EAAE,sBAAsB,EACjC,QAASZ,EAAA,IAAM,CAIbM,EAAU,MAAQ,QACpB,EALS,UAKT,CACF,EAGA,OAAAS,EAAM,QAAU,CACd,IAAK,UACL,MAAO,GAAGH,EAAE,UAAU,CAAC,KAAKA,EAAE,cAAc,CAAC,IAC7C,QAASA,EAAE,qBAAqB,EAChC,QAASZ,EAAA,IAAM,CAIbM,EAAU,MAAQ,SACpB,EALS,UAKT,EAGGS,CACT,CAAC,EAEKC,EAA0BlB,EAAS,IAGrCgB,EAAwB,MAAMR,EAAU,KAAK,GAC7CQ,EAAwB,MAAM,QAEjC,EACKG,EAAqBnB,EAAS,IAClC,OAAO,OAAOgB,EAAwB,KAAK,CAAA,EAGvCI,EAAYpB,EAAS,IACrBW,EAAgB,MACX,gCAELL,EAAe,UACV,4BAELE,EAAU,QAAU,WACf,sBAELA,EAAU,QAAU,UACf,8BAELA,EAAU,QAAU,SACf,8BAEF,qBACR,EAEKa,EAAqBrB,EAAS,IAC9BW,EAAgB,MACXG,EAAE,0BAA0B,EAEjCR,EAAe,UACVQ,EAAE,uBAAuB,EAE3BA,EAAE,kBAAkB,CAC5B,EAEKQ,EAAeC,EAAA,EACfC,EAActB,EAAA,MAAOuB,GAAa,CAEtC,MAAMC,EADiB,aAAcD,GAAKA,EAAE,SAExC,yBACA,oBAEA9B,EAAW,MAAQ,EAMvB,MAAM2B,EAAa,QAAQI,EAAW,CACpC,SAAU,CACR,iBAAkB,GAClB,eAAgB,QAAA,CAClB,CACD,CACH,EAlBoB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var D=Object.defineProperty;var i=(C,u)=>D(C,"name",{value:u,configurable:!0});import{v as F,ad as I,ae as h,w as $,L,o as q,s as K,af as P}from"./vendor-primevue-DeKsC2uk.js";import{u as G}from"./vendor-vue-DaLZjKA7.js";import{a2 as H,e as J,_ as k,S as Q,du as W}from"./index
|
|
2
|
-
//# sourceMappingURL=ExtensionPanel-
|
|
1
|
+
var D=Object.defineProperty;var i=(C,u)=>D(C,"name",{value:u,configurable:!0});import{v as F,ad as I,ae as h,w as $,L,o as q,s as K,af as P}from"./vendor-primevue-DeKsC2uk.js";import{u as G}from"./vendor-vue-DaLZjKA7.js";import{a2 as H,e as J,_ as k,S as Q,du as W}from"./index--yK73oka.js";import{bx as X,E as c,r as p,o as Y,j as y,d as m,k as r,e as f,z as o,by as l,A as g,u as E,q as Z,c as S,F as ee,y as ae}from"./vendor-other-B8t_Wf2K.js";import"./vendor-xterm-CWYFmgbN.js";import"./vendor-three-DH0o8VQ7.js";import"./vendor-tiptap-VxK0yxkd.js";const ne={class:"flex justify-end"},se={class:"mb-3 flex gap-2"},ce=X({__name:"ExtensionPanel",setup(C){const{t:u}=G(),_=["all","core","custom"],N=c(()=>_.map(e=>({label:u(`g.${e}`),value:e}))),x=p("all"),v=p([]),b=p({global:{value:"",matchMode:P.CONTAINS}}),a=H(),T=J(),t=p({}),A=c(()=>{const e=a.extensions;switch(x.value){case"core":return e.filter(s=>a.isCoreExtension(s.name));case"custom":return e.filter(s=>!a.isCoreExtension(s.name));default:return e}});Y(()=>{a.extensions.forEach(e=>{t.value[e.name]=a.isExtensionEnabled(e.name)})});const w=c(()=>a.extensions.filter(e=>t.value[e.name]!==a.isExtensionEnabled(e.name))),O=c(()=>w.value.length>0),d=i(async()=>{const e=Object.entries(t.value).filter(([s,n])=>!n).map(([s])=>s);await T.set("Comfy.Extension.Disabled",[...a.inactiveDisabledExtensionNames,...e])},"updateExtensionStatus"),j=i(async()=>{a.extensions.forEach(e=>{a.isExtensionReadOnly(e.name)||(t.value[e.name]=!0)}),await d()},"enableAllExtensions"),B=i(async()=>{a.extensions.forEach(e=>{a.isExtensionReadOnly(e.name)||(t.value[e.name]=!1)}),await d()},"disableAllExtensions"),M=i(async()=>{a.extensions.forEach(e=>{a.isCoreExtension(e.name)||(t.value[e.name]=!1)}),await d()},"disableThirdPartyExtensions"),R=i(()=>{window.location.reload()},"applyChanges"),V=p(),U=c(()=>[{label:u("g.enableSelected"),icon:"pi pi-check",command:i(async()=>{v.value.forEach(e=>{a.isExtensionReadOnly(e.name)||(t.value[e.name]=!0)}),await d()},"command")},{label:u("g.disableSelected"),icon:"pi pi-times",command:i(async()=>{v.value.forEach(e=>{a.isExtensionReadOnly(e.name)||(t.value[e.name]=!1)}),await d()},"command")},{separator:!0},{label:u("g.enableAll"),icon:"pi pi-check",command:j},{label:u("g.disableAll"),icon:"pi pi-times",command:B},{label:u("g.disableThirdParty"),icon:"pi pi-times",command:M,disabled:!a.hasThirdPartyExtensions}]);return(e,s)=>(m(),y(W,{value:"Extension",class:"extension-panel"},{header:r(()=>[o(Q,{modelValue:b.value.global.value,"onUpdate:modelValue":s[0]||(s[0]=n=>b.value.global.value=n),placeholder:e.$t("g.searchExtensions")+"..."},null,8,["modelValue","placeholder"]),O.value?(m(),y(l(K),{key:0,severity:"info","pt:text":"w-full",class:"max-h-96 overflow-y-auto"},{default:r(()=>[f("ul",null,[(m(!0),S(ee,null,ae(w.value,n=>(m(),S("li",{key:n.name},[f("span",null,E(l(a).isExtensionEnabled(n.name)?"[-]":"[+]"),1),g(" "+E(n.name),1)]))),128))]),f("div",ne,[o(k,{variant:"destructive",onClick:R},{default:r(()=>[g(E(e.$t("g.reloadToApplyChanges")),1)]),_:1})])]),_:1})):Z("",!0)]),default:r(()=>[f("div",se,[o(l(F),{modelValue:x.value,"onUpdate:modelValue":s[1]||(s[1]=n=>x.value=n),options:N.value,"option-label":"label","option-value":"value"},null,8,["modelValue","options"])]),o(l(I),{selection:v.value,"onUpdate:selection":s[3]||(s[3]=n=>v.value=n),value:A.value,"striped-rows":"",size:"small",filters:b.value,"selection-mode":"multiple","data-key":"name"},{default:r(()=>[o(l(h),{"selection-mode":"multiple",frozen:!0,style:{width:"3rem"}}),o(l(h),{header:e.$t("g.extensionName"),sortable:"",field:"name"},{body:r(n=>[g(E(n.data.name)+" ",1),l(a).isCoreExtension(n.data.name)?(m(),y(l($),{key:0,value:e.$t("g.core")},null,8,["value"])):(m(),y(l($),{key:1,value:e.$t("g.custom"),severity:"info"},null,8,["value"]))]),_:1},8,["header"]),o(l(h),{pt:{headerCell:"flex items-center justify-end",bodyCell:"flex items-center justify-end"}},{header:r(()=>[o(k,{size:"icon",variant:"muted-textonly",onClick:s[2]||(s[2]=n=>V.value?.show(n))},{default:r(()=>s[4]||(s[4]=[f("i",{class:"pi pi-ellipsis-h"},null,-1)])),_:1}),o(l(q),{ref_key:"menu",ref:V,model:U.value},null,8,["model"])]),body:r(n=>[o(l(L),{modelValue:t.value[n.data.name],"onUpdate:modelValue":i(z=>t.value[n.data.name]=z,"onUpdate:modelValue"),disabled:l(a).isExtensionReadOnly(n.data.name),onChange:d},null,8,["modelValue","onUpdate:modelValue","disabled"])]),_:1})]),_:1},8,["selection","value","filters"])]),_:1}))}});export{ce as default};
|
|
2
|
+
//# sourceMappingURL=ExtensionPanel-DvPzK040.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtensionPanel-uFlj7Yfm.js","sources":["../../src/platform/settings/components/ExtensionPanel.vue"],"sourcesContent":["<template>\n <PanelTemplate value=\"Extension\" class=\"extension-panel\">\n <template #header>\n <SearchBox\n v-model=\"filters['global'].value\"\n :placeholder=\"$t('g.searchExtensions') + '...'\"\n />\n <Message\n v-if=\"hasChanges\"\n severity=\"info\"\n pt:text=\"w-full\"\n class=\"max-h-96 overflow-y-auto\"\n >\n <ul>\n <li v-for=\"ext in changedExtensions\" :key=\"ext.name\">\n <span>\n {{ extensionStore.isExtensionEnabled(ext.name) ? '[-]' : '[+]' }}\n </span>\n {{ ext.name }}\n </li>\n </ul>\n <div class=\"flex justify-end\">\n <Button variant=\"destructive\" @click=\"applyChanges\">\n {{ $t('g.reloadToApplyChanges') }}\n </Button>\n </div>\n </Message>\n </template>\n <div class=\"mb-3 flex gap-2\">\n <SelectButton\n v-model=\"filterType\"\n :options=\"filterTypes\"\n option-label=\"label\"\n option-value=\"value\"\n />\n </div>\n <DataTable\n v-model:selection=\"selectedExtensions\"\n :value=\"filteredExtensions\"\n striped-rows\n size=\"small\"\n :filters=\"filters\"\n selection-mode=\"multiple\"\n data-key=\"name\"\n >\n <Column selection-mode=\"multiple\" :frozen=\"true\" style=\"width: 3rem\" />\n <Column :header=\"$t('g.extensionName')\" sortable field=\"name\">\n <template #body=\"slotProps\">\n {{ slotProps.data.name }}\n <Tag\n v-if=\"extensionStore.isCoreExtension(slotProps.data.name)\"\n :value=\"$t('g.core')\"\n />\n <Tag v-else :value=\"$t('g.custom')\" severity=\"info\" />\n </template>\n </Column>\n <Column\n :pt=\"{\n headerCell: 'flex items-center justify-end',\n bodyCell: 'flex items-center justify-end'\n }\"\n >\n <template #header>\n <Button\n size=\"icon\"\n variant=\"muted-textonly\"\n @click=\"menu?.show($event)\"\n >\n <i class=\"pi pi-ellipsis-h\" />\n </Button>\n <ContextMenu ref=\"menu\" :model=\"contextMenuItems\" />\n </template>\n <template #body=\"slotProps\">\n <ToggleSwitch\n v-model=\"editingEnabledExtensions[slotProps.data.name]\"\n :disabled=\"extensionStore.isExtensionReadOnly(slotProps.data.name)\"\n @change=\"updateExtensionStatus\"\n />\n </template>\n </Column>\n </DataTable>\n </PanelTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport { FilterMatchMode } from '@primevue/core/api'\nimport Column from 'primevue/column'\nimport ContextMenu from 'primevue/contextmenu'\nimport DataTable from 'primevue/datatable'\nimport Message from 'primevue/message'\nimport SelectButton from 'primevue/selectbutton'\nimport Tag from 'primevue/tag'\nimport ToggleSwitch from 'primevue/toggleswitch'\nimport { computed, onMounted, ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport SearchBox from '@/components/common/SearchBox.vue'\nimport PanelTemplate from '@/components/dialog/content/setting/PanelTemplate.vue'\nimport Button from '@/components/ui/button/Button.vue'\nimport { useSettingStore } from '@/platform/settings/settingStore'\nimport { useExtensionStore } from '@/stores/extensionStore'\nimport type { ComfyExtension } from '@/types/comfy'\n\nconst { t } = useI18n()\n\nconst filterTypeKeys = ['all', 'core', 'custom'] as const\ntype FilterTypeKey = (typeof filterTypeKeys)[number]\nconst filterTypes = computed(() =>\n filterTypeKeys.map((key) => ({\n label: t(`g.${key}`),\n value: key\n }))\n)\nconst filterType = ref<FilterTypeKey>('all')\nconst selectedExtensions = ref<ComfyExtension[]>([])\n\nconst filters = ref({\n global: { value: '', matchMode: FilterMatchMode.CONTAINS }\n})\n\nconst extensionStore = useExtensionStore()\nconst settingStore = useSettingStore()\n\nconst editingEnabledExtensions = ref<Record<string, boolean>>({})\n\nconst filteredExtensions = computed(() => {\n const extensions = extensionStore.extensions\n switch (filterType.value) {\n case 'core':\n return extensions.filter((ext) =>\n extensionStore.isCoreExtension(ext.name)\n )\n case 'custom':\n return extensions.filter(\n (ext) => !extensionStore.isCoreExtension(ext.name)\n )\n default:\n return extensions\n }\n})\n\nonMounted(() => {\n extensionStore.extensions.forEach((ext) => {\n editingEnabledExtensions.value[ext.name] =\n extensionStore.isExtensionEnabled(ext.name)\n })\n})\n\nconst changedExtensions = computed(() => {\n return extensionStore.extensions.filter(\n (ext) =>\n editingEnabledExtensions.value[ext.name] !==\n extensionStore.isExtensionEnabled(ext.name)\n )\n})\n\nconst hasChanges = computed(() => {\n return changedExtensions.value.length > 0\n})\n\nconst updateExtensionStatus = async () => {\n const editingDisabledExtensionNames = Object.entries(\n editingEnabledExtensions.value\n )\n .filter(([_, enabled]) => !enabled)\n .map(([name]) => name)\n\n await settingStore.set('Comfy.Extension.Disabled', [\n ...extensionStore.inactiveDisabledExtensionNames,\n ...editingDisabledExtensionNames\n ])\n}\n\nconst enableAllExtensions = async () => {\n extensionStore.extensions.forEach((ext) => {\n if (extensionStore.isExtensionReadOnly(ext.name)) return\n\n editingEnabledExtensions.value[ext.name] = true\n })\n await updateExtensionStatus()\n}\n\nconst disableAllExtensions = async () => {\n extensionStore.extensions.forEach((ext) => {\n if (extensionStore.isExtensionReadOnly(ext.name)) return\n\n editingEnabledExtensions.value[ext.name] = false\n })\n await updateExtensionStatus()\n}\n\nconst disableThirdPartyExtensions = async () => {\n extensionStore.extensions.forEach((ext) => {\n if (extensionStore.isCoreExtension(ext.name)) return\n\n editingEnabledExtensions.value[ext.name] = false\n })\n await updateExtensionStatus()\n}\n\nconst applyChanges = () => {\n // Refresh the page to apply changes\n window.location.reload()\n}\n\nconst menu = ref<InstanceType<typeof ContextMenu>>()\nconst contextMenuItems = computed(() => [\n {\n label: t('g.enableSelected'),\n icon: 'pi pi-check',\n command: async () => {\n selectedExtensions.value.forEach((ext) => {\n if (!extensionStore.isExtensionReadOnly(ext.name)) {\n editingEnabledExtensions.value[ext.name] = true\n }\n })\n await updateExtensionStatus()\n }\n },\n {\n label: t('g.disableSelected'),\n icon: 'pi pi-times',\n command: async () => {\n selectedExtensions.value.forEach((ext) => {\n if (!extensionStore.isExtensionReadOnly(ext.name)) {\n editingEnabledExtensions.value[ext.name] = false\n }\n })\n await updateExtensionStatus()\n }\n },\n {\n separator: true\n },\n {\n label: t('g.enableAll'),\n icon: 'pi pi-check',\n command: enableAllExtensions\n },\n {\n label: t('g.disableAll'),\n icon: 'pi pi-times',\n command: disableAllExtensions\n },\n {\n label: t('g.disableThirdParty'),\n icon: 'pi pi-times',\n command: disableThirdPartyExtensions,\n disabled: !extensionStore.hasThirdPartyExtensions\n }\n])\n</script>\n"],"names":["t","useI18n","filterTypeKeys","filterTypes","computed","key","filterType","ref","selectedExtensions","filters","FilterMatchMode","extensionStore","useExtensionStore","settingStore","useSettingStore","editingEnabledExtensions","filteredExtensions","extensions","ext","onMounted","changedExtensions","hasChanges","updateExtensionStatus","__name","editingDisabledExtensionNames","_","enabled","name","enableAllExtensions","disableAllExtensions","disableThirdPartyExtensions","applyChanges","menu","contextMenuItems"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ExtensionPanel-DvPzK040.js","sources":["../../src/platform/settings/components/ExtensionPanel.vue"],"sourcesContent":["<template>\n <PanelTemplate value=\"Extension\" class=\"extension-panel\">\n <template #header>\n <SearchBox\n v-model=\"filters['global'].value\"\n :placeholder=\"$t('g.searchExtensions') + '...'\"\n />\n <Message\n v-if=\"hasChanges\"\n severity=\"info\"\n pt:text=\"w-full\"\n class=\"max-h-96 overflow-y-auto\"\n >\n <ul>\n <li v-for=\"ext in changedExtensions\" :key=\"ext.name\">\n <span>\n {{ extensionStore.isExtensionEnabled(ext.name) ? '[-]' : '[+]' }}\n </span>\n {{ ext.name }}\n </li>\n </ul>\n <div class=\"flex justify-end\">\n <Button variant=\"destructive\" @click=\"applyChanges\">\n {{ $t('g.reloadToApplyChanges') }}\n </Button>\n </div>\n </Message>\n </template>\n <div class=\"mb-3 flex gap-2\">\n <SelectButton\n v-model=\"filterType\"\n :options=\"filterTypes\"\n option-label=\"label\"\n option-value=\"value\"\n />\n </div>\n <DataTable\n v-model:selection=\"selectedExtensions\"\n :value=\"filteredExtensions\"\n striped-rows\n size=\"small\"\n :filters=\"filters\"\n selection-mode=\"multiple\"\n data-key=\"name\"\n >\n <Column selection-mode=\"multiple\" :frozen=\"true\" style=\"width: 3rem\" />\n <Column :header=\"$t('g.extensionName')\" sortable field=\"name\">\n <template #body=\"slotProps\">\n {{ slotProps.data.name }}\n <Tag\n v-if=\"extensionStore.isCoreExtension(slotProps.data.name)\"\n :value=\"$t('g.core')\"\n />\n <Tag v-else :value=\"$t('g.custom')\" severity=\"info\" />\n </template>\n </Column>\n <Column\n :pt=\"{\n headerCell: 'flex items-center justify-end',\n bodyCell: 'flex items-center justify-end'\n }\"\n >\n <template #header>\n <Button\n size=\"icon\"\n variant=\"muted-textonly\"\n @click=\"menu?.show($event)\"\n >\n <i class=\"pi pi-ellipsis-h\" />\n </Button>\n <ContextMenu ref=\"menu\" :model=\"contextMenuItems\" />\n </template>\n <template #body=\"slotProps\">\n <ToggleSwitch\n v-model=\"editingEnabledExtensions[slotProps.data.name]\"\n :disabled=\"extensionStore.isExtensionReadOnly(slotProps.data.name)\"\n @change=\"updateExtensionStatus\"\n />\n </template>\n </Column>\n </DataTable>\n </PanelTemplate>\n</template>\n\n<script setup lang=\"ts\">\nimport { FilterMatchMode } from '@primevue/core/api'\nimport Column from 'primevue/column'\nimport ContextMenu from 'primevue/contextmenu'\nimport DataTable from 'primevue/datatable'\nimport Message from 'primevue/message'\nimport SelectButton from 'primevue/selectbutton'\nimport Tag from 'primevue/tag'\nimport ToggleSwitch from 'primevue/toggleswitch'\nimport { computed, onMounted, ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport SearchBox from '@/components/common/SearchBox.vue'\nimport PanelTemplate from '@/components/dialog/content/setting/PanelTemplate.vue'\nimport Button from '@/components/ui/button/Button.vue'\nimport { useSettingStore } from '@/platform/settings/settingStore'\nimport { useExtensionStore } from '@/stores/extensionStore'\nimport type { ComfyExtension } from '@/types/comfy'\n\nconst { t } = useI18n()\n\nconst filterTypeKeys = ['all', 'core', 'custom'] as const\ntype FilterTypeKey = (typeof filterTypeKeys)[number]\nconst filterTypes = computed(() =>\n filterTypeKeys.map((key) => ({\n label: t(`g.${key}`),\n value: key\n }))\n)\nconst filterType = ref<FilterTypeKey>('all')\nconst selectedExtensions = ref<ComfyExtension[]>([])\n\nconst filters = ref({\n global: { value: '', matchMode: FilterMatchMode.CONTAINS }\n})\n\nconst extensionStore = useExtensionStore()\nconst settingStore = useSettingStore()\n\nconst editingEnabledExtensions = ref<Record<string, boolean>>({})\n\nconst filteredExtensions = computed(() => {\n const extensions = extensionStore.extensions\n switch (filterType.value) {\n case 'core':\n return extensions.filter((ext) =>\n extensionStore.isCoreExtension(ext.name)\n )\n case 'custom':\n return extensions.filter(\n (ext) => !extensionStore.isCoreExtension(ext.name)\n )\n default:\n return extensions\n }\n})\n\nonMounted(() => {\n extensionStore.extensions.forEach((ext) => {\n editingEnabledExtensions.value[ext.name] =\n extensionStore.isExtensionEnabled(ext.name)\n })\n})\n\nconst changedExtensions = computed(() => {\n return extensionStore.extensions.filter(\n (ext) =>\n editingEnabledExtensions.value[ext.name] !==\n extensionStore.isExtensionEnabled(ext.name)\n )\n})\n\nconst hasChanges = computed(() => {\n return changedExtensions.value.length > 0\n})\n\nconst updateExtensionStatus = async () => {\n const editingDisabledExtensionNames = Object.entries(\n editingEnabledExtensions.value\n )\n .filter(([_, enabled]) => !enabled)\n .map(([name]) => name)\n\n await settingStore.set('Comfy.Extension.Disabled', [\n ...extensionStore.inactiveDisabledExtensionNames,\n ...editingDisabledExtensionNames\n ])\n}\n\nconst enableAllExtensions = async () => {\n extensionStore.extensions.forEach((ext) => {\n if (extensionStore.isExtensionReadOnly(ext.name)) return\n\n editingEnabledExtensions.value[ext.name] = true\n })\n await updateExtensionStatus()\n}\n\nconst disableAllExtensions = async () => {\n extensionStore.extensions.forEach((ext) => {\n if (extensionStore.isExtensionReadOnly(ext.name)) return\n\n editingEnabledExtensions.value[ext.name] = false\n })\n await updateExtensionStatus()\n}\n\nconst disableThirdPartyExtensions = async () => {\n extensionStore.extensions.forEach((ext) => {\n if (extensionStore.isCoreExtension(ext.name)) return\n\n editingEnabledExtensions.value[ext.name] = false\n })\n await updateExtensionStatus()\n}\n\nconst applyChanges = () => {\n // Refresh the page to apply changes\n window.location.reload()\n}\n\nconst menu = ref<InstanceType<typeof ContextMenu>>()\nconst contextMenuItems = computed(() => [\n {\n label: t('g.enableSelected'),\n icon: 'pi pi-check',\n command: async () => {\n selectedExtensions.value.forEach((ext) => {\n if (!extensionStore.isExtensionReadOnly(ext.name)) {\n editingEnabledExtensions.value[ext.name] = true\n }\n })\n await updateExtensionStatus()\n }\n },\n {\n label: t('g.disableSelected'),\n icon: 'pi pi-times',\n command: async () => {\n selectedExtensions.value.forEach((ext) => {\n if (!extensionStore.isExtensionReadOnly(ext.name)) {\n editingEnabledExtensions.value[ext.name] = false\n }\n })\n await updateExtensionStatus()\n }\n },\n {\n separator: true\n },\n {\n label: t('g.enableAll'),\n icon: 'pi pi-check',\n command: enableAllExtensions\n },\n {\n label: t('g.disableAll'),\n icon: 'pi pi-times',\n command: disableAllExtensions\n },\n {\n label: t('g.disableThirdParty'),\n icon: 'pi pi-times',\n command: disableThirdPartyExtensions,\n disabled: !extensionStore.hasThirdPartyExtensions\n }\n])\n</script>\n"],"names":["t","useI18n","filterTypeKeys","filterTypes","computed","key","filterType","ref","selectedExtensions","filters","FilterMatchMode","extensionStore","useExtensionStore","settingStore","useSettingStore","editingEnabledExtensions","filteredExtensions","extensions","ext","onMounted","changedExtensions","hasChanges","updateExtensionStatus","__name","editingDisabledExtensionNames","_","enabled","name","enableAllExtensions","disableAllExtensions","disableThirdPartyExtensions","applyChanges","menu","contextMenuItems"],"mappings":"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"}
|