comfyui-frontend-package 1.38.2__tar.gz → 1.38.3__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.
Files changed (339) hide show
  1. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/PKG-INFO +1 -1
  2. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/AboutPanel-C7253TdA.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/AboutPanel-CYH8kZrG.js +2 -2
  3. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/AboutPanel-C7253TdA.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/AboutPanel-CYH8kZrG.js.map +1 -1
  4. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/AudioPreviewPlayer-DgSsFFU7.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/AudioPreviewPlayer-BwJepJEw.js +2 -2
  5. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/AudioPreviewPlayer-DgSsFFU7.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/AudioPreviewPlayer-BwJepJEw.js.map +1 -1
  6. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/ComfyQueueButton-DriR7JtM.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/ComfyQueueButton-BM8zaTn_.js +2 -2
  7. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/ComfyQueueButton-DriR7JtM.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/ComfyQueueButton-BM8zaTn_.js.map +1 -1
  8. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/ExtensionPanel-yJP3r-dq.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/ExtensionPanel-CkIkopXr.js +2 -2
  9. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/ExtensionPanel-yJP3r-dq.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/ExtensionPanel-CkIkopXr.js.map +1 -1
  10. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/GraphView-D-tZ3xO5.css → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/GraphView-CoiT3fdb.css +1 -1
  11. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/GraphView-Djp0ICHX.js +15 -0
  12. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/GraphView-Djp0ICHX.js.map +1 -0
  13. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/KeybindingPanel-f7VKBCyl.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/KeybindingPanel-5iNg_eid.js +2 -2
  14. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/KeybindingPanel-f7VKBCyl.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/KeybindingPanel-5iNg_eid.js.map +1 -1
  15. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-Bwob1r0X.js +2 -0
  16. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-Bwob1r0X.js.map +1 -0
  17. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/LegacyCreditsPanel-e57J4OZv.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/LegacyCreditsPanel-D28HHk-A.js +2 -2
  18. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/LegacyCreditsPanel-e57J4OZv.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/LegacyCreditsPanel-D28HHk-A.js.map +1 -1
  19. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/Load3D-DYW1gw8I.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/Load3D-CPNYDT4-.js +2 -2
  20. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/Load3D-CPNYDT4-.js.map +1 -0
  21. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/Load3D.vue_vue_type_script_setup_true_lang-BLcsvL5E.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/Load3D.vue_vue_type_script_setup_true_lang-KEzORqB0.js +2 -2
  22. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/Load3D.vue_vue_type_script_setup_true_lang-BLcsvL5E.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/Load3D.vue_vue_type_script_setup_true_lang-KEzORqB0.js.map +1 -1
  23. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/Media3DTop-D77j8ukJ.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/Media3DTop-CQp4nFvB.js +2 -2
  24. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/Media3DTop-D77j8ukJ.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/Media3DTop-CQp4nFvB.js.map +1 -1
  25. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/ServerConfigPanel-CQPgIsZk.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/ServerConfigPanel-B3WCmowi.js +2 -2
  26. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/ServerConfigPanel-CQPgIsZk.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/ServerConfigPanel-B3WCmowi.js.map +1 -1
  27. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-DtxMOWxy.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-JgqOjXs3.js +2 -2
  28. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-DtxMOWxy.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-JgqOjXs3.js.map +1 -1
  29. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/UserPanel-BPwKKP_j.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/UserPanel-B5k84B9y.js +2 -2
  30. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/UserPanel-BPwKKP_j.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/UserPanel-B5k84B9y.js.map +1 -1
  31. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/UserSelectView-DNaXeKx4.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/UserSelectView-R_nCWiDS.js +2 -2
  32. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/UserSelectView-DNaXeKx4.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/UserSelectView-R_nCWiDS.js.map +1 -1
  33. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/ValueControlPopover-kd7h8GFO.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/ValueControlPopover-BqA-EaFY.js +2 -2
  34. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/ValueControlPopover-kd7h8GFO.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/ValueControlPopover-BqA-EaFY.js.map +1 -1
  35. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetAudioUI-B-Ra7X5I.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetAudioUI-Bu3u9PBZ.js +2 -2
  36. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetAudioUI-B-Ra7X5I.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetAudioUI-Bu3u9PBZ.js.map +1 -1
  37. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetButton-BQWWeE_x.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetButton-CS0lZIN_.js +2 -2
  38. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetButton-BQWWeE_x.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetButton-CS0lZIN_.js.map +1 -1
  39. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetColorPicker-4E2rnL8u.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetColorPicker-CQ_vqexP.js +2 -2
  40. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetColorPicker-4E2rnL8u.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetColorPicker-CQ_vqexP.js.map +1 -1
  41. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetGalleria-DaEjYhLq.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetGalleria-CE2__qNK.js +2 -2
  42. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetGalleria-DaEjYhLq.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetGalleria-CE2__qNK.js.map +1 -1
  43. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetInputNumber-CR_vNT3l.js +2 -0
  44. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetInputNumber-CR_vNT3l.js.map +1 -0
  45. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetInputNumber.vue_vue_type_script_setup_true_lang-CdvBpGed.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetInputNumber.vue_vue_type_script_setup_true_lang-rPX1TIkC.js +2 -2
  46. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetInputNumber.vue_vue_type_script_setup_true_lang-CdvBpGed.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetInputNumber.vue_vue_type_script_setup_true_lang-rPX1TIkC.js.map +1 -1
  47. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetInputText-B2YoBI4Y.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetInputText-NnOJku4t.js +2 -2
  48. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetInputText-B2YoBI4Y.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetInputText-NnOJku4t.js.map +1 -1
  49. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetLayoutField.vue_vue_type_script_setup_true_lang-CYDaxuge.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetLayoutField.vue_vue_type_script_setup_true_lang-BrNsu13j.js +2 -2
  50. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetLayoutField.vue_vue_type_script_setup_true_lang-CYDaxuge.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetLayoutField.vue_vue_type_script_setup_true_lang-BrNsu13j.js.map +1 -1
  51. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetLegacy-DgBI3-l2.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetLegacy-3d5GSSgo.js +2 -2
  52. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetLegacy-3d5GSSgo.js.map +1 -0
  53. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetMarkdown-Bqcf7Vpy.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetMarkdown-BTfwNVeV.js +2 -2
  54. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetMarkdown-Bqcf7Vpy.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetMarkdown-BTfwNVeV.js.map +1 -1
  55. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetRecordAudio-X2n565MP.js +2 -0
  56. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetRecordAudio-X2n565MP.js.map +1 -0
  57. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetSelect-DsU3dEFm.js +2 -0
  58. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetSelect-DsU3dEFm.js.map +1 -0
  59. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetSelect.vue_vue_type_script_setup_true_lang-Ua67RWUI.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetSelect.vue_vue_type_script_setup_true_lang-DLMXofNs.js +2 -2
  60. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetSelect.vue_vue_type_script_setup_true_lang-Ua67RWUI.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetSelect.vue_vue_type_script_setup_true_lang-DLMXofNs.js.map +1 -1
  61. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetTextarea-syfN9Olh.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetTextarea-BguNaUH3.js +2 -2
  62. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetTextarea-syfN9Olh.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetTextarea-BguNaUH3.js.map +1 -1
  63. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetToggleSwitch-C2c4CfAT.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetToggleSwitch-Cnenb1g4.js +2 -2
  64. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetToggleSwitch-C2c4CfAT.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetToggleSwitch-Cnenb1g4.js.map +1 -1
  65. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetWithControl.vue_vue_type_script_setup_true_lang-B5RYQ41H.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetWithControl.vue_vue_type_script_setup_true_lang-CWBg5k0x.js +3 -3
  66. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetWithControl.vue_vue_type_script_setup_true_lang-B5RYQ41H.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/WidgetWithControl.vue_vue_type_script_setup_true_lang-CWBg5k0x.js.map +1 -1
  67. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/audioService-CnSU5S1Z.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/audioService-C_4pv8R5.js +2 -2
  68. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/audioService-CnSU5S1Z.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/audioService-C_4pv8R5.js.map +1 -1
  69. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/audioUtils-BZ8b3tiu.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/audioUtils-CYVbzDGB.js +2 -2
  70. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/audioUtils-BZ8b3tiu.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/audioUtils-CYVbzDGB.js.map +1 -1
  71. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/index-BBvP0bLh.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/index-BST1SetX.js +2 -2
  72. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/index-BBvP0bLh.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/index-BST1SetX.js.map +1 -1
  73. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/index-DOAA7WkP.css +1 -0
  74. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/index-C5dKoXkW.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/index-DwjwpNvK.js +2 -2
  75. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/index-DwjwpNvK.js.map +1 -0
  76. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/index-Bc79VbnU.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/index-U7jagKl8.js +22 -22
  77. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/index-U7jagKl8.js.map +1 -0
  78. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/keybindingService-DOwK-S5D.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/keybindingService-6A6hKCpd.js +2 -2
  79. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/keybindingService-DOwK-S5D.js.map → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/keybindingService-6A6hKCpd.js.map +1 -1
  80. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-9V_ekXTj.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-7u-fkFqV.js +4 -4
  81. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-7u-fkFqV.js.map +1 -0
  82. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-Mk83jtey.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-BrRR7na1.js +4 -4
  83. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-BrRR7na1.js.map +1 -0
  84. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-QxfzWHY3.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-Btwx4xDf.js +5 -5
  85. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-Btwx4xDf.js.map +1 -0
  86. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-D8WRsxlG.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-CU-38qC-.js +3 -3
  87. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-CU-38qC-.js.map +1 -0
  88. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-DdPAQm8u.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-CZbK9-kR.js +4 -4
  89. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-CZbK9-kR.js.map +1 -0
  90. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-IIi2nOrM.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-Cv05dk1q.js +4 -4
  91. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-Cv05dk1q.js.map +1 -0
  92. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-Be2ivsXL.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-DVNhdlF2.js +4 -6
  93. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-DVNhdlF2.js.map +1 -0
  94. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-DnlhxsrE.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-DckcRPaY.js +3 -3
  95. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-DckcRPaY.js.map +1 -0
  96. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-B992pnxN.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-DeynLPZA.js +4 -4
  97. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-DeynLPZA.js.map +1 -0
  98. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-AFY0Q5Cd.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-DtCc3tTY.js +4 -4
  99. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-DtCc3tTY.js.map +1 -0
  100. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-QbQAnNpJ.js → comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-apejL0E_.js +4 -4
  101. comfyui_frontend_package-1.38.3/comfyui_frontend_package/static/assets/main-apejL0E_.js.map +1 -0
  102. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/index.html +1 -1
  103. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package.egg-info/PKG-INFO +1 -1
  104. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package.egg-info/SOURCES.txt +100 -100
  105. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/GraphView-Dwrm8D3J.js +0 -15
  106. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/GraphView-Dwrm8D3J.js.map +0 -1
  107. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-CX9YtPlM.js +0 -2
  108. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-CX9YtPlM.js.map +0 -1
  109. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/Load3D-DYW1gw8I.js.map +0 -1
  110. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetInputNumber-u4JzBngV.js +0 -2
  111. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetInputNumber-u4JzBngV.js.map +0 -1
  112. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetLegacy-DgBI3-l2.js.map +0 -1
  113. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetRecordAudio-hHbaGdj1.js +0 -2
  114. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetRecordAudio-hHbaGdj1.js.map +0 -1
  115. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetSelect-Cv4W8ECC.js +0 -2
  116. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/WidgetSelect-Cv4W8ECC.js.map +0 -1
  117. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/index-Bc79VbnU.js.map +0 -1
  118. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/index-C5dKoXkW.js.map +0 -1
  119. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/index-gxCJ3H4T.css +0 -1
  120. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-9V_ekXTj.js.map +0 -1
  121. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-AFY0Q5Cd.js.map +0 -1
  122. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-B992pnxN.js.map +0 -1
  123. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-Be2ivsXL.js.map +0 -1
  124. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-D8WRsxlG.js.map +0 -1
  125. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-DdPAQm8u.js.map +0 -1
  126. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-DnlhxsrE.js.map +0 -1
  127. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-IIi2nOrM.js.map +0 -1
  128. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-Mk83jtey.js.map +0 -1
  129. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-QbQAnNpJ.js.map +0 -1
  130. comfyui_frontend_package-1.38.2/comfyui_frontend_package/static/assets/main-QxfzWHY3.js.map +0 -1
  131. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/MANIFEST.in +0 -0
  132. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/README.md +0 -0
  133. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/__init__.py +0 -0
  134. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/ABCROMExtended-BlackItalic-B3Ak1JoQ.woff +0 -0
  135. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/ABCROMExtended-BlackItalic-NFqMndLW.woff2 +0 -0
  136. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/AudioPreviewPlayer-DkCMWdK6.css +0 -0
  137. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/CREDIT.txt +0 -0
  138. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/ComfyQueueButton-Chw03MdC.css +0 -0
  139. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/KeybindingPanel-cIUDOO6-.css +0 -0
  140. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/Load3D-DeGA9oCm.css +0 -0
  141. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/MediaAudioTop-BP5ydhlD.js +0 -0
  142. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/MediaAudioTop-BP5ydhlD.js.map +0 -0
  143. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/MediaImageTop-LpYNd48M.js +0 -0
  144. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/MediaImageTop-LpYNd48M.js.map +0 -0
  145. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/MediaVideoTop-B5qFe2QW.js +0 -0
  146. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/MediaVideoTop-B5qFe2QW.js.map +0 -0
  147. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/OBJLoader2WorkerModule-DTMpvldF.js +0 -0
  148. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-C1UryadQ.css +0 -0
  149. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/UserAvatar.vue_vue_type_script_setup_true_lang-BvnQQTOP.js +0 -0
  150. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/UserAvatar.vue_vue_type_script_setup_true_lang-BvnQQTOP.js.map +0 -0
  151. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/WidgetChart-D9FOoOT-.js +0 -0
  152. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/WidgetChart-D9FOoOT-.js.map +0 -0
  153. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/WidgetGalleria-B85qzqLf.css +0 -0
  154. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/WidgetImageCompare-CpM385VX.js +0 -0
  155. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/WidgetImageCompare-CpM385VX.js.map +0 -0
  156. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/WidgetInputNumber-rqpFMwbY.css +0 -0
  157. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-6krn3srk.js +0 -0
  158. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-6krn3srk.js.map +0 -0
  159. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-B8TX-OdW.js +0 -0
  160. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-B8TX-OdW.js.map +0 -0
  161. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-BBMcY34D.js +0 -0
  162. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-BBMcY34D.js.map +0 -0
  163. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-C0R_Md8R.js +0 -0
  164. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-C0R_Md8R.js.map +0 -0
  165. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-CAv4QkZ-.js +0 -0
  166. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-CAv4QkZ-.js.map +0 -0
  167. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-CeIcZl_a.js +0 -0
  168. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-CeIcZl_a.js.map +0 -0
  169. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-CtwQRBL_.js +0 -0
  170. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-CtwQRBL_.js.map +0 -0
  171. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-DjX42wW9.js +0 -0
  172. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-DjX42wW9.js.map +0 -0
  173. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-DzwpXu9N.js +0 -0
  174. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-DzwpXu9N.js.map +0 -0
  175. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-E4h99f7h.js +0 -0
  176. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-E4h99f7h.js.map +0 -0
  177. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-we3Embjk.js +0 -0
  178. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/commands-we3Embjk.js.map +0 -0
  179. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/favicon.ico +0 -0
  180. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/civitai.svg +0 -0
  181. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/cloud-subscription.webm +0 -0
  182. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/comfy-cloud-logo.svg +0 -0
  183. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/comfy-logo-mono.svg +0 -0
  184. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/comfy-logo-single.svg +0 -0
  185. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/default-template.png +0 -0
  186. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/fallback-gradient-avatar.svg +0 -0
  187. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/favicon_progress_16x16/frame_0.png +0 -0
  188. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/favicon_progress_16x16/frame_1.png +0 -0
  189. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/favicon_progress_16x16/frame_2.png +0 -0
  190. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/favicon_progress_16x16/frame_3.png +0 -0
  191. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/favicon_progress_16x16/frame_4.png +0 -0
  192. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/favicon_progress_16x16/frame_5.png +0 -0
  193. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/favicon_progress_16x16/frame_6.png +0 -0
  194. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/favicon_progress_16x16/frame_7.png +0 -0
  195. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/favicon_progress_16x16/frame_8.png +0 -0
  196. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/favicon_progress_16x16/frame_9.png +0 -0
  197. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/hf-logo.svg +0 -0
  198. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/manual-configuration.svg +0 -0
  199. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/nvidia-logo.svg +0 -0
  200. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/images/og-image.png +0 -0
  201. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/index-TGN-mpPg.css +0 -0
  202. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/manifest-DaTF-IdB.json +0 -0
  203. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-7BOVKd-p.js +0 -0
  204. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-7BOVKd-p.js.map +0 -0
  205. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-B0dVDw4N.js +0 -0
  206. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-B0dVDw4N.js.map +0 -0
  207. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-B7yCHgaa.js +0 -0
  208. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-B7yCHgaa.js.map +0 -0
  209. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-Bh8qqAFI.js +0 -0
  210. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-Bh8qqAFI.js.map +0 -0
  211. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-CvXRbqGT.js +0 -0
  212. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-CvXRbqGT.js.map +0 -0
  213. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-DP9uHaQh.js +0 -0
  214. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-DP9uHaQh.js.map +0 -0
  215. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-DSydbfAw.js +0 -0
  216. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-DSydbfAw.js.map +0 -0
  217. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-DuqVDSL5.js +0 -0
  218. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-DuqVDSL5.js.map +0 -0
  219. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-Dy0iU6H-.js +0 -0
  220. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-Dy0iU6H-.js.map +0 -0
  221. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-EYSpEQ7g.js +0 -0
  222. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-EYSpEQ7g.js.map +0 -0
  223. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-FEu1SGAu.js +0 -0
  224. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/nodeDefs-FEu1SGAu.js.map +0 -0
  225. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/primeicons-C6QP2o4f.woff2 +0 -0
  226. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/primeicons-DMOk5skT.eot +0 -0
  227. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/primeicons-Dr5RGzOO.svg +0 -0
  228. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/primeicons-MpK4pl85.ttf +0 -0
  229. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/primeicons-WjwUDZjB.woff +0 -0
  230. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/serverConfigStore-BJQLZ9Iv.js +0 -0
  231. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/serverConfigStore-BJQLZ9Iv.js.map +0 -0
  232. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-BDcsAddA.js +0 -0
  233. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-BDcsAddA.js.map +0 -0
  234. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-BscQZApb.js +0 -0
  235. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-BscQZApb.js.map +0 -0
  236. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-BxGvSZQt.js +0 -0
  237. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-BxGvSZQt.js.map +0 -0
  238. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-CRbIyGOx.js +0 -0
  239. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-CRbIyGOx.js.map +0 -0
  240. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-C_M95LcR.js +0 -0
  241. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-C_M95LcR.js.map +0 -0
  242. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-CfAtcjYG.js +0 -0
  243. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-CfAtcjYG.js.map +0 -0
  244. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-D1FGfDLO.js +0 -0
  245. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-D1FGfDLO.js.map +0 -0
  246. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-DIhoSYUg.js +0 -0
  247. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-DIhoSYUg.js.map +0 -0
  248. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-DR935Ify.js +0 -0
  249. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-DR935Ify.js.map +0 -0
  250. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-DwzAhg99.js +0 -0
  251. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-DwzAhg99.js.map +0 -0
  252. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-ydiuzS6H.js +0 -0
  253. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/settings-ydiuzS6H.js.map +0 -0
  254. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/sorted-custom-node-map.json +0 -0
  255. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/thumbnail-imMA3y7Z.png +0 -0
  256. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/vendor-chart-xELTc0ZL.js +0 -0
  257. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/vendor-chart-xELTc0ZL.js.map +0 -0
  258. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/vendor-other-DYX1NpEr.css +0 -0
  259. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/vendor-other-Dsj-QuOx.js +0 -0
  260. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/vendor-other-Dsj-QuOx.js.map +0 -0
  261. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/vendor-primevue-Cif--Rbw.js +0 -0
  262. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/vendor-primevue-Cif--Rbw.js.map +0 -0
  263. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/vendor-reka-ui-WjwjFuZo.js +0 -0
  264. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/vendor-reka-ui-WjwjFuZo.js.map +0 -0
  265. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/vendor-three-ByuY8CdW.js +0 -0
  266. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/vendor-three-ByuY8CdW.js.map +0 -0
  267. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/vendor-tiptap-YMjM2h-Z.js +0 -0
  268. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/vendor-tiptap-YMjM2h-Z.js.map +0 -0
  269. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/vendor-vue-DNQSPQQ2.js +0 -0
  270. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/vendor-vue-DNQSPQQ2.js.map +0 -0
  271. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/vendor-xterm-CWYFmgbN.js +0 -0
  272. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/vendor-xterm-CWYFmgbN.js.map +0 -0
  273. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/vendor-xterm-xj0gfbX3.css +0 -0
  274. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/video-BvOHf4P9.mp4 +0 -0
  275. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/widgetPropFilter-CygYoMQt.js +0 -0
  276. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/assets/widgetPropFilter-CygYoMQt.js.map +0 -0
  277. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/cursor/colorSelect.png +0 -0
  278. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/cursor/paintBucket.png +0 -0
  279. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/extensions/core/clipspace.js +0 -0
  280. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/extensions/core/groupNode.js +0 -0
  281. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/extensions/core/groupNodeManage.js +0 -0
  282. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/extensions/core/load3d/AnimationManager.js +0 -0
  283. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/extensions/core/load3d/CameraManager.js +0 -0
  284. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/extensions/core/load3d/ControlsManager.js +0 -0
  285. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/extensions/core/load3d/EventManager.js +0 -0
  286. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/extensions/core/load3d/LightingManager.js +0 -0
  287. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/extensions/core/load3d/LoaderManager.js +0 -0
  288. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/extensions/core/load3d/ModelExporter.js +0 -0
  289. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/extensions/core/load3d/RecordingManager.js +0 -0
  290. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/extensions/core/load3d/SceneManager.js +0 -0
  291. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/extensions/core/load3d/SceneModelManager.js +0 -0
  292. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/extensions/core/load3d/ViewHelperManager.js +0 -0
  293. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/extensions/core/load3d/exportMenuHelper.js +0 -0
  294. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/extensions/core/load3d/interfaces.js +0 -0
  295. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/extensions/core/load3d/loader/FastPLYLoader.js +0 -0
  296. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/extensions/core/maskeditor/constants.js +0 -0
  297. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/extensions/core/maskeditor/types.js +0 -0
  298. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/extensions/core/widgetInputs.js +0 -0
  299. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/fonts/inter-latin-italic.woff2 +0 -0
  300. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/fonts/inter-latin-normal.woff2 +0 -0
  301. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/fonts/materialdesignicons-webfont.woff2 +0 -0
  302. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/materialdesignicons.min.css +0 -0
  303. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/api.js +0 -0
  304. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/app.js +0 -0
  305. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/changeTracker.js +0 -0
  306. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/defaultGraph.js +0 -0
  307. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/domWidget.js +0 -0
  308. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/metadata/avif.js +0 -0
  309. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/metadata/ebml.js +0 -0
  310. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/metadata/flac.js +0 -0
  311. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/metadata/gltf.js +0 -0
  312. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/metadata/isobmff.js +0 -0
  313. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/metadata/json.js +0 -0
  314. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/metadata/mp3.js +0 -0
  315. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/metadata/ogg.js +0 -0
  316. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/metadata/parser.js +0 -0
  317. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/metadata/ply.js +0 -0
  318. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/metadata/png.js +0 -0
  319. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/metadata/svg.js +0 -0
  320. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/pnginfo.js +0 -0
  321. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/ui/components/asyncDialog.js +0 -0
  322. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/ui/components/button.js +0 -0
  323. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/ui/components/buttonGroup.js +0 -0
  324. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/ui/components/popup.js +0 -0
  325. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/ui/components/splitButton.js +0 -0
  326. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/ui/dialog.js +0 -0
  327. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/ui/draggableList.js +0 -0
  328. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/ui/imagePreview.js +0 -0
  329. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/ui/menu/index.js +0 -0
  330. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/ui/settings.js +0 -0
  331. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/ui/toggleSwitch.js +0 -0
  332. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/ui/utils.js +0 -0
  333. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/ui.js +0 -0
  334. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/utils.js +0 -0
  335. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package/static/scripts/widgets.js +0 -0
  336. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package.egg-info/dependency_links.txt +0 -0
  337. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/comfyui_frontend_package.egg-info/top_level.txt +0 -0
  338. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/setup.cfg +0 -0
  339. {comfyui_frontend_package-1.38.2 → comfyui_frontend_package-1.38.3}/setup.py +0 -0
@@ -1,5 +1,5 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: comfyui_frontend_package
3
- Version: 1.38.2
3
+ Version: 1.38.3
4
4
  Requires-Python: >=3.9
5
5
  Dynamic: requires-python
@@ -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 E}from"./vendor-primevue-Cif--Rbw.js";import{dE as x,a2 as F,aa as A,a3 as I,dF as M,ab as T,bu as R,dG as D}from"./index-Bc79VbnU.js";import{a2 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,a8 as c,j as v,k as y,A as U,s as z}from"./vendor-other-Dsj-QuOx.js";import{d as O}from"./vendor-vue-DNQSPQQ2.js";import"./vendor-reka-ui-WjwjFuZo.js";import"./vendor-xterm-CWYFmgbN.js";import"./vendor-three-ByuY8CdW.js";import"./vendor-tiptap-YMjM2h-Z.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"},G={class:"mb-6"},L={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",G,[a("h2",L,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.2",e=F(),u=A(),{staticUrls:r}=I(),l=p(()=>u?.systemStats?.system?.comfyui_version??""),s=p(()=>[{label:`ComfyUI ${T()?"v"+R().getComfyUIVersion():M(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"],de=$({__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(E),{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{de as default};
2
- //# sourceMappingURL=AboutPanel-C7253TdA.js.map
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 E}from"./vendor-primevue-Cif--Rbw.js";import{dE as x,a2 as F,aa as A,a3 as I,dF as M,ab as T,bu as R,dG as D}from"./index-U7jagKl8.js";import{a2 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,a8 as c,j as v,k as y,A as U,s as z}from"./vendor-other-Dsj-QuOx.js";import{d as O}from"./vendor-vue-DNQSPQQ2.js";import"./vendor-reka-ui-WjwjFuZo.js";import"./vendor-xterm-CWYFmgbN.js";import"./vendor-three-ByuY8CdW.js";import"./vendor-tiptap-YMjM2h-Z.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"},G={class:"mb-6"},L={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",G,[a("h2",L,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.3",e=F(),u=A(),{staticUrls:r}=I(),l=p(()=>u?.systemStats?.system?.comfyui_version??""),s=p(()=>[{label:`ComfyUI ${T()?"v"+R().getComfyUIVersion():M(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"],de=$({__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(E),{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{de as default};
2
+ //# sourceMappingURL=AboutPanel-CYH8kZrG.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AboutPanel-C7253TdA.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":"4rBAiBA,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
+ {"version":3,"file":"AboutPanel-CYH8kZrG.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":"4rBAiBA,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-Cif--Rbw.js";import{b as Z}from"./vendor-vue-DNQSPQQ2.js";import{r as L,aC as ee,c5 as ae,c4 as te,a as oe,c as C,d as se}from"./index-Bc79VbnU.js";import{g as le,f as N}from"./audioUtils-BZ8b3tiu.js";import{a2 as ne,r as i,E as u,w as ue,_ as ie,c as l,d as n,q as z,s as re,a8 as p,e as o,z as T,u as _,G as ce,k as de,n as ve}from"./vendor-other-Dsj-QuOx.js";import"./vendor-reka-ui-WjwjFuZo.js";import"./vendor-xterm-CWYFmgbN.js";import"./vendor-three-ByuY8CdW.js";import"./vendor-tiptap-YMjM2h-Z.js";const pe={class:"relative"},me={class:"relative flex shrink-0 items-center justify-start gap-2"},fe=["aria-label"],ge={key:0,class:"text-secondary icon-[lucide--play] size-4"},he={key:1,class:"text-secondary icon-[lucide--pause] size-4"},be={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(),h=k,a=i(),O=i(),m=i(!1),c=i(!1),f=i(1),g=i(0),d=i(0),I=i(!1),b=i(1),P=u(()=>!d.value||d.value===0?0:g.value/d.value*100),U=u(()=>!c.value&&f.value>.5),B=u(()=>c.value&&f.value>0),y=u(()=>!h.nodeId||!L.canvas.graph?null:L.canvas.graph.getNodeById(h.nodeId)),R=u(()=>y.value?y.value.constructor?.comfyClass==="LoadAudio"&&!!h.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(),j=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")):""}),$=u(()=>j.value||h.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,g.value=w}},"handleSeek"),D=t(()=>{a.value&&(d.value=a.value.duration)},"handleLoadedMetadata"),W=t(()=>{a.value&&(g.value=a.value.currentTime)},"handleTimeUpdate"),q=t(()=>{m.value=!1,g.value=0},"handleEnded"),G=t(e=>{O.value?.toggle(e)},"toggleOptionsMenu"),x=t(e=>{b.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:b.value===.5},{label:r("g.1x"),onClick:t(()=>x(1),"onClick"),selected:b.value===1},{label:r("g.2x"),onClick:t(()=>x(2),"onClick"),selected:b.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($,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",he)):(n(),l("i",ge))],8,fe),o("div",be,_(p(N)(g.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))]))}}),De=se(Te,[["__scopeId","data-v-b2e1591f"]]);export{De as default};
2
- //# sourceMappingURL=AudioPreviewPlayer-DgSsFFU7.js.map
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-Cif--Rbw.js";import{b as Z}from"./vendor-vue-DNQSPQQ2.js";import{r as L,aC as ee,c5 as ae,c4 as te,a as oe,c as C,d as se}from"./index-U7jagKl8.js";import{g as le,f as N}from"./audioUtils-CYVbzDGB.js";import{a2 as ne,r as i,E as u,w as ue,_ as ie,c as l,d as n,q as z,s as re,a8 as p,e as o,z as T,u as _,G as ce,k as de,n as ve}from"./vendor-other-Dsj-QuOx.js";import"./vendor-reka-ui-WjwjFuZo.js";import"./vendor-xterm-CWYFmgbN.js";import"./vendor-three-ByuY8CdW.js";import"./vendor-tiptap-YMjM2h-Z.js";const pe={class:"relative"},me={class:"relative flex shrink-0 items-center justify-start gap-2"},fe=["aria-label"],ge={key:0,class:"text-secondary icon-[lucide--play] size-4"},he={key:1,class:"text-secondary icon-[lucide--pause] size-4"},be={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(),h=k,a=i(),O=i(),m=i(!1),c=i(!1),f=i(1),g=i(0),d=i(0),I=i(!1),b=i(1),P=u(()=>!d.value||d.value===0?0:g.value/d.value*100),U=u(()=>!c.value&&f.value>.5),B=u(()=>c.value&&f.value>0),y=u(()=>!h.nodeId||!L.canvas.graph?null:L.canvas.graph.getNodeById(h.nodeId)),R=u(()=>y.value?y.value.constructor?.comfyClass==="LoadAudio"&&!!h.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(),j=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")):""}),$=u(()=>j.value||h.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,g.value=w}},"handleSeek"),D=t(()=>{a.value&&(d.value=a.value.duration)},"handleLoadedMetadata"),W=t(()=>{a.value&&(g.value=a.value.currentTime)},"handleTimeUpdate"),q=t(()=>{m.value=!1,g.value=0},"handleEnded"),G=t(e=>{O.value?.toggle(e)},"toggleOptionsMenu"),x=t(e=>{b.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:b.value===.5},{label:r("g.1x"),onClick:t(()=>x(1),"onClick"),selected:b.value===1},{label:r("g.2x"),onClick:t(()=>x(2),"onClick"),selected:b.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($,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",he)):(n(),l("i",ge))],8,fe),o("div",be,_(p(N)(g.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))]))}}),De=se(Te,[["__scopeId","data-v-b2e1591f"]]);export{De as default};
2
+ //# sourceMappingURL=AudioPreviewPlayer-BwJepJEw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AudioPreviewPlayer-DgSsFFU7.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-BwJepJEw.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,2 +1,2 @@
1
- var V=Object.defineProperty;var a=(f,u)=>V(f,"name",{value:u,configurable:!0});import{s as w,b as I}from"./vendor-vue-DNQSPQQ2.js";import{J as T,ag as P}from"./vendor-primevue-Cif--Rbw.js";import{cu as S,e as z,d as k,q as E,H as W,r as j,A,_ as F}from"./index-Bc79VbnU.js";import{g as H}from"./GraphView-Dwrm8D3J.js";import{a2 as B,E as s,h as D,l as b,c as C,d as c,z as q,a8 as p,bV as K,j as y,k as _,q as L,A as R,s as g,u as G,e as J}from"./vendor-other-Dsj-QuOx.js";import"./vendor-reka-ui-WjwjFuZo.js";import"./vendor-xterm-CWYFmgbN.js";import"./vendor-three-ByuY8CdW.js";import"./vendor-tiptap-YMjM2h-Z.js";import"./UserAvatar.vue_vue_type_script_setup_true_lang-BvnQQTOP.js";import"./LazyImage.vue_vue_type_script_setup_true_lang-CX9YtPlM.js";import"./index-BBvP0bLh.js";import"./keybindingService-DOwK-S5D.js";import"./serverConfigStore-BJQLZ9Iv.js";import"./WidgetInputNumber.vue_vue_type_script_setup_true_lang-CdvBpGed.js";import"./widgetPropFilter-CygYoMQt.js";import"./WidgetLayoutField.vue_vue_type_script_setup_true_lang-CYDaxuge.js";import"./WidgetWithControl.vue_vue_type_script_setup_true_lang-B5RYQ41H.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 b((c(),C("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}=I(),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]"),$=s(()=>r.value?e("menu.runWorkflowDisabled"):u.shiftDown?e("menu.runWorkflowFront"):e("menu.runWorkflow")),x=A(),Q=a(async i=>{const d="shiftKey"in i&&i.shiftKey?"Comfy.QueuePromptFront":"Comfy.QueuePrompt";v.value>1,await x.execute(d,{metadata:{subscribe_to_run:!1,trigger_source:"button"}})},"queuePrompt");return(i,N)=>{const d=D("tooltip");return c(),C("div",Z,[b((c(),y(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:_(()=>[J("i",{class:g(M.value)},null,2)]),item:_(({item:l})=>[b((c(),y(F,{variant:l.key===p(t)?"primary":"secondary",size:"sm",class:"w-full justify-start"},{default:_(()=>[l.icon?(c(),C("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:$.value,showDelay:600},void 0,{bottom:!0}]]),q(Y)])}}}),ye=k(ee,[["__scopeId","data-v-214102f7"]]);export{ye as default};
2
- //# sourceMappingURL=ComfyQueueButton-DriR7JtM.js.map
1
+ var V=Object.defineProperty;var a=(f,u)=>V(f,"name",{value:u,configurable:!0});import{s as w,b as I}from"./vendor-vue-DNQSPQQ2.js";import{J as T,ag as P}from"./vendor-primevue-Cif--Rbw.js";import{cu as S,e as z,d as k,q as E,H as W,r as j,A,_ as F}from"./index-U7jagKl8.js";import{g as H}from"./GraphView-Djp0ICHX.js";import{a2 as B,E as s,h as D,l as b,c as C,d as c,z as q,a8 as p,bV as K,j as y,k as _,q as L,A as R,s as g,u as G,e as J}from"./vendor-other-Dsj-QuOx.js";import"./vendor-reka-ui-WjwjFuZo.js";import"./vendor-xterm-CWYFmgbN.js";import"./vendor-three-ByuY8CdW.js";import"./vendor-tiptap-YMjM2h-Z.js";import"./UserAvatar.vue_vue_type_script_setup_true_lang-BvnQQTOP.js";import"./LazyImage.vue_vue_type_script_setup_true_lang-Bwob1r0X.js";import"./index-BST1SetX.js";import"./keybindingService-6A6hKCpd.js";import"./serverConfigStore-BJQLZ9Iv.js";import"./WidgetInputNumber.vue_vue_type_script_setup_true_lang-rPX1TIkC.js";import"./widgetPropFilter-CygYoMQt.js";import"./WidgetLayoutField.vue_vue_type_script_setup_true_lang-BrNsu13j.js";import"./WidgetWithControl.vue_vue_type_script_setup_true_lang-CWBg5k0x.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 b((c(),C("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}=I(),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]"),$=s(()=>r.value?e("menu.runWorkflowDisabled"):u.shiftDown?e("menu.runWorkflowFront"):e("menu.runWorkflow")),x=A(),Q=a(async i=>{const d="shiftKey"in i&&i.shiftKey?"Comfy.QueuePromptFront":"Comfy.QueuePrompt";v.value>1,await x.execute(d,{metadata:{subscribe_to_run:!1,trigger_source:"button"}})},"queuePrompt");return(i,N)=>{const d=D("tooltip");return c(),C("div",Z,[b((c(),y(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:_(()=>[J("i",{class:g(M.value)},null,2)]),item:_(({item:l})=>[b((c(),y(F,{variant:l.key===p(t)?"primary":"secondary",size:"sm",class:"w-full justify-start"},{default:_(()=>[l.icon?(c(),C("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:$.value,showDelay:600},void 0,{bottom:!0}]]),q(Y)])}}}),ye=k(ee,[["__scopeId","data-v-214102f7"]]);export{ye as default};
2
+ //# sourceMappingURL=ComfyQueueButton-BM8zaTn_.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ComfyQueueButton-DriR7JtM.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":"+nCA4CMA,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
+ {"version":3,"file":"ComfyQueueButton-BM8zaTn_.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":"+nCA4CMA,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 G,af as K}from"./vendor-primevue-Cif--Rbw.js";import{b as P}from"./vendor-vue-DNQSPQQ2.js";import{a2 as H,e as J,_ as k,S as Q,dG as W}from"./index-Bc79VbnU.js";import{a2 as X,E as c,r as p,o as Y,j as E,d as m,k as r,e as f,z as o,a8 as t,A as g,u as y,q as Z,c as S,F as ee,y as ae}from"./vendor-other-Dsj-QuOx.js";import"./vendor-reka-ui-WjwjFuZo.js";import"./vendor-xterm-CWYFmgbN.js";import"./vendor-three-ByuY8CdW.js";import"./vendor-tiptap-YMjM2h-Z.js";const ne={class:"flex justify-end"},se={class:"mb-3 flex gap-2"},pe=X({__name:"ExtensionPanel",setup(C){const{t:u}=P(),_=["all","core","custom"],N=c(()=>_.map(e=>({label:u(`g.${e}`),value:e}))),x=p("all"),v=p([]),b=p({global:{value:"",matchMode:K.CONTAINS}}),a=H(),T=J(),l=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=>{l.value[e.name]=a.isExtensionEnabled(e.name)})});const w=c(()=>a.extensions.filter(e=>l.value[e.name]!==a.isExtensionEnabled(e.name))),O=c(()=>w.value.length>0),d=i(async()=>{const e=Object.entries(l.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)||(l.value[e.name]=!0)}),await d()},"enableAllExtensions"),B=i(async()=>{a.extensions.forEach(e=>{a.isExtensionReadOnly(e.name)||(l.value[e.name]=!1)}),await d()},"disableAllExtensions"),M=i(async()=>{a.extensions.forEach(e=>{a.isCoreExtension(e.name)||(l.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)||(l.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)||(l.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(),E(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(),E(t(G),{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,y(t(a).isExtensionEnabled(n.name)?"[-]":"[+]"),1),g(" "+y(n.name),1)]))),128))]),f("div",ne,[o(k,{variant:"destructive",onClick:R},{default:r(()=>[g(y(e.$t("g.reloadToApplyChanges")),1)]),_:1})])]),_:1})):Z("",!0)]),default:r(()=>[f("div",se,[o(t(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(t(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(t(h),{"selection-mode":"multiple",frozen:!0,style:{width:"3rem"}}),o(t(h),{header:e.$t("g.extensionName"),sortable:"",field:"name"},{body:r(n=>[g(y(n.data.name)+" ",1),t(a).isCoreExtension(n.data.name)?(m(),E(t($),{key:0,value:e.$t("g.core")},null,8,["value"])):(m(),E(t($),{key:1,value:e.$t("g.custom"),severity:"info"},null,8,["value"]))]),_:1},8,["header"]),o(t(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(t(q),{ref_key:"menu",ref:V,model:U.value},null,8,["model"])]),body:r(n=>[o(t(L),{modelValue:l.value[n.data.name],"onUpdate:modelValue":i(z=>l.value[n.data.name]=z,"onUpdate:modelValue"),disabled:t(a).isExtensionReadOnly(n.data.name),onChange:d},null,8,["modelValue","onUpdate:modelValue","disabled"])]),_:1})]),_:1},8,["selection","value","filters"])]),_:1}))}});export{pe as default};
2
- //# sourceMappingURL=ExtensionPanel-yJP3r-dq.js.map
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 G,af as K}from"./vendor-primevue-Cif--Rbw.js";import{b as P}from"./vendor-vue-DNQSPQQ2.js";import{a2 as H,e as J,_ as k,S as Q,dG as W}from"./index-U7jagKl8.js";import{a2 as X,E as c,r as p,o as Y,j as E,d as m,k as r,e as f,z as o,a8 as t,A as g,u as y,q as Z,c as S,F as ee,y as ae}from"./vendor-other-Dsj-QuOx.js";import"./vendor-reka-ui-WjwjFuZo.js";import"./vendor-xterm-CWYFmgbN.js";import"./vendor-three-ByuY8CdW.js";import"./vendor-tiptap-YMjM2h-Z.js";const ne={class:"flex justify-end"},se={class:"mb-3 flex gap-2"},pe=X({__name:"ExtensionPanel",setup(C){const{t:u}=P(),_=["all","core","custom"],N=c(()=>_.map(e=>({label:u(`g.${e}`),value:e}))),x=p("all"),v=p([]),b=p({global:{value:"",matchMode:K.CONTAINS}}),a=H(),T=J(),l=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=>{l.value[e.name]=a.isExtensionEnabled(e.name)})});const w=c(()=>a.extensions.filter(e=>l.value[e.name]!==a.isExtensionEnabled(e.name))),O=c(()=>w.value.length>0),d=i(async()=>{const e=Object.entries(l.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)||(l.value[e.name]=!0)}),await d()},"enableAllExtensions"),B=i(async()=>{a.extensions.forEach(e=>{a.isExtensionReadOnly(e.name)||(l.value[e.name]=!1)}),await d()},"disableAllExtensions"),M=i(async()=>{a.extensions.forEach(e=>{a.isCoreExtension(e.name)||(l.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)||(l.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)||(l.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(),E(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(),E(t(G),{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,y(t(a).isExtensionEnabled(n.name)?"[-]":"[+]"),1),g(" "+y(n.name),1)]))),128))]),f("div",ne,[o(k,{variant:"destructive",onClick:R},{default:r(()=>[g(y(e.$t("g.reloadToApplyChanges")),1)]),_:1})])]),_:1})):Z("",!0)]),default:r(()=>[f("div",se,[o(t(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(t(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(t(h),{"selection-mode":"multiple",frozen:!0,style:{width:"3rem"}}),o(t(h),{header:e.$t("g.extensionName"),sortable:"",field:"name"},{body:r(n=>[g(y(n.data.name)+" ",1),t(a).isCoreExtension(n.data.name)?(m(),E(t($),{key:0,value:e.$t("g.core")},null,8,["value"])):(m(),E(t($),{key:1,value:e.$t("g.custom"),severity:"info"},null,8,["value"]))]),_:1},8,["header"]),o(t(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(t(q),{ref_key:"menu",ref:V,model:U.value},null,8,["model"])]),body:r(n=>[o(t(L),{modelValue:l.value[n.data.name],"onUpdate:modelValue":i(z=>l.value[n.data.name]=z,"onUpdate:modelValue"),disabled:t(a).isExtensionReadOnly(n.data.name),onChange:d},null,8,["modelValue","onUpdate:modelValue","disabled"])]),_:1})]),_:1},8,["selection","value","filters"])]),_:1}))}});export{pe as default};
2
+ //# sourceMappingURL=ExtensionPanel-CkIkopXr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExtensionPanel-yJP3r-dq.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-CkIkopXr.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 +1 @@
1
- [data-v-78b7f6de] .p-splitter-gutter{pointer-events:auto}[data-v-78b7f6de] .p-splitter-gutter:hover,[data-v-78b7f6de] .p-splitter-gutter[data-p-gutter-resizing=true]{transition:background-color .2s ease .3s;background-color:var(--p-primary-color)}[data-v-78b7f6de] .side-bar-panel[style*="display: none"]+.p-splitter-gutter,[data-v-78b7f6de] .p-splitter-gutter+.side-bar-panel[style*="display: none"]{display:none}.splitter-overlay-bottom[data-v-78b7f6de] .p-splitter-gutter{transform:translateY(5px)}.p-breadcrumb-item-link[data-v-d7b126c3],.p-breadcrumb-item-icon[data-v-d7b126c3]{-webkit-user-select:none;user-select:none}.p-breadcrumb-item-link[data-v-d7b126c3]{overflow:hidden}.p-breadcrumb-item-label[data-v-d7b126c3]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.active-breadcrumb-item[data-v-d7b126c3]{color:var(--text-primary)}.subgraph-breadcrumb[data-v-50f75d4e]:not(:empty){flex:1 10000 auto;min-width:120px}:is(.subgraph-breadcrumb[data-v-50f75d4e],[data-v-50f75d4e] .p-breadcrumb){overflow:hidden}[data-v-50f75d4e] .p-breadcrumb{background-color:#0000;width:100%}[data-v-50f75d4e] .p-breadcrumb-item{height:calc(var(--spacing,.25rem)*8);min-width:calc(var(--p-breadcrumb-item-min-width) + 1rem);background-color:#0000;border:1px solid #0000;flex-shrink:10000;align-items:center;transition:all .2s;display:flex;overflow:hidden}[data-v-50f75d4e] .p-breadcrumb-separator{padding:0 var(--p-breadcrumb-item-margin);background-color:#0000;border:1px solid #0000;display:flex}[data-v-50f75d4e] .p-breadcrumb-item-link{padding:0 calc(var(--p-breadcrumb-item-margin) + var(--p-breadcrumb-item-padding))}[data-v-50f75d4e] .p-breadcrumb-item:hover{border-radius:var(--radius-lg,.5rem);border-color:var(--interface-stroke);background-color:var(--comfy-menu-bg)}[data-v-50f75d4e] .p-breadcrumb-item:has(.p-breadcrumb-item-link-icon-visible){min-width:calc(var(--p-breadcrumb-item-min-width) + 1rem + 20px)}[data-v-50f75d4e] .p-breadcrumb-item:first-child{flex-shrink:5000}[data-v-50f75d4e] .p-breadcrumb-item:first-child .p-breadcrumb-item-link{padding-left:var(--p-breadcrumb-item-padding)}[data-v-50f75d4e] .p-breadcrumb-item:last-child{flex-shrink:1}[data-v-50f75d4e] .p-breadcrumb-item-link-menu-visible{background-color:var(--fg-color)!important}@supports (color:color-mix(in lab,red,red)){[data-v-50f75d4e] .p-breadcrumb-item-link-menu-visible{background-color:color-mix(in srgb,var(--fg-color)10%,var(--comfy-menu-bg))!important}}[data-v-50f75d4e] .p-breadcrumb-item-link-menu-visible{color:var(--fg-color)}.subgraph-breadcrumb-collapse .p-breadcrumb-list .p-breadcrumb-item,.subgraph-breadcrumb-collapse .p-breadcrumb-list .p-breadcrumb-separator{display:none}.subgraph-breadcrumb-collapse .p-breadcrumb-list .p-breadcrumb-item:nth-last-child(3),.subgraph-breadcrumb-collapse .p-breadcrumb-list .p-breadcrumb-separator:nth-last-child(2),.subgraph-breadcrumb-collapse .p-breadcrumb-list .p-breadcrumb-item:last-child{display:flex}[data-v-9d1ea2c9] .p-tablist-active-bar{display:none}.dom-widget[data-v-781496d2]>*{width:100%;height:100%}.zoomInputContainer:focus-within{border:1px solid var(--color-white)}.node-tooltip[data-v-96b1458a]{pointer-events:none;background:var(--comfy-input-bg);border-radius:5px;box-shadow:0 0 5px #0006;color:var(--input-text);left:0;max-width:30vw;padding:4px 8px;position:absolute;top:0;transform:translate(5px,calc(-100% - 5px));white-space:pre-wrap;z-index:99999}.color-picker-container[data-v-2197e0a1]{transform:translate(-50%)}[data-v-2197e0a1] .p-togglebutton{padding-inline:calc(var(--spacing,.25rem)*1);padding-block:calc(var(--spacing,.25rem)*2)}.selection-toolbox[data-v-c6489a20]{transform:translate(-50%) translateY(-120%)}@keyframes slideUp-c6489a20{0%{transform:translate(-50%) translateY(-100%);opacity:0}50%{transform:translate(-50%) translateY(-125%);opacity:.5}to{transform:translate(-50%) translateY(-120%);opacity:1}}.slide-up-enter-active[data-v-c6489a20]{animation:slideUp-c6489a20 125ms ease-out}.slide-up-leave-active[data-v-c6489a20]{animation:slideUp-c6489a20 25ms ease-out reverse}.group-title-editor.node-title-editor[data-v-aceb018c]{z-index:9999;padding:.25rem}[data-v-aceb018c] .editable-text{width:100%;height:100%}[data-v-aceb018c] .editable-text input{width:100%;height:100%;font-size:inherit}[data-v-acda36a0] .highlight{background-color:var(--p-primary-color);color:var(--p-primary-contrast-color);font-weight:700;border-radius:.25rem;padding:0 .125rem;margin:-.125rem .125rem}.invisible-dialog-root{width:60%;min-width:24rem;max-width:48rem;border:0!important;background-color:transparent!important;margin-top:25vh;margin-left:400px}@media all and (max-width:768px){.invisible-dialog-root{margin-left:0}}.node-search-box-dialog-mask{align-items:flex-start!important}.release-toast-popup[data-v-ba02c61a]{position:absolute;bottom:1rem;z-index:1000;pointer-events:auto}.release-toast-popup.sidebar-left[data-v-ba02c61a],.release-toast-popup.sidebar-left.small-sidebar[data-v-ba02c61a]{left:1rem}.release-toast-popup.sidebar-right[data-v-ba02c61a]{right:1rem}.whats-new-popup-container[data-v-98a9f324]{--whats-new-popup-bottom: 1rem;position:absolute;bottom:var(--whats-new-popup-bottom);z-index:1000;pointer-events:auto}.whats-new-popup[data-v-98a9f324]{background:var(--interface-menu-surface);border-radius:8px;max-width:400px;width:400px;border:1px solid var(--interface-menu-stroke);box-shadow:1px 1px 8px #0003;position:relative;display:flex;flex-direction:column}.modal-body[data-v-98a9f324]{display:flex;flex-direction:column;gap:1rem;padding:0;flex:1}.modal-header[data-v-98a9f324]{display:flex;flex-direction:column;gap:8px}.content-text[data-v-98a9f324]{color:var(--text-primary);font-size:14px;line-height:1.5;word-wrap:break-word;padding:0 1rem}.content-text[data-v-98a9f324] *{box-sizing:border-box}.content-text[data-v-98a9f324] h1{color:var(--text-secondary);font-family:Inter,sans-serif;font-size:14px;font-weight:400;margin-top:1rem;margin-bottom:8px;text-transform:uppercase;letter-spacing:.05em}.content-text[data-v-98a9f324] h2,.content-text[data-v-98a9f324] h1+p strong{color:var(--text-primary);font-family:Inter,sans-serif;font-size:14px;font-weight:600;margin:0 0 8px;line-height:1.429}.content-text[data-v-98a9f324] p{color:var(--text-secondary);font-family:Inter,sans-serif;margin:1rem 0}.content-text[data-v-98a9f324] ul,.content-text[data-v-98a9f324] ol{margin-bottom:0;padding-left:0;list-style:none}.content-text[data-v-98a9f324] ul:first-child,.content-text[data-v-98a9f324] ol:first-child{margin-top:0}.content-text[data-v-98a9f324] ul:last-child,.content-text[data-v-98a9f324] ol:last-child{margin-bottom:0}.content-text[data-v-98a9f324] li{margin-bottom:6px;position:relative;padding-left:18px;color:var(--text-secondary);font-family:Inter,sans-serif;font-size:14px;font-weight:400;line-height:1.2102}.content-text[data-v-98a9f324] li:last-child{margin-bottom:0}.content-text[data-v-98a9f324] li:before{content:"";position:absolute;left:4px;top:7px;width:6px;height:6px;border:2px solid var(--text-secondary);border-radius:50%;background:transparent}.content-text[data-v-98a9f324] li strong{color:var(--text-secondary);font-family:Inter,sans-serif;font-size:14px;font-weight:400;line-height:1.2102;margin-right:4px}.content-text[data-v-98a9f324] li p{margin:2px 0 0;display:inline}.content-text[data-v-98a9f324] code{background-color:var(--input-surface);border:1px solid var(--interface-menu-stroke);border-radius:4px;padding:2px 6px;color:var(--text-primary);white-space:nowrap}.content-text[data-v-98a9f324] img{width:100%;height:200px;margin:0 0 16px;object-fit:cover;display:block;border-radius:8px}.content-text[data-v-98a9f324] img:first-child{margin:-1rem -1rem 16px;width:calc(100% + 2rem);border-radius:8px 8px 0 0}.content-text[data-v-98a9f324]:has(img:first-child){border-left:1px solid var(--interface-menu-stroke);border-right:1px solid var(--interface-menu-stroke);border-top:1px solid var(--interface-menu-stroke);border-bottom-left-radius:8px;border-bottom-right-radius:8px;margin:-1px -1px 0}.content-text[data-v-98a9f324] img+h1{margin-top:0}.content-text[data-v-98a9f324] h3{color:var(--text-primary);font-family:Inter,sans-serif;font-size:16px;font-weight:600;margin:16px 0 8px;line-height:1.4}.modal-footer[data-v-98a9f324]{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px;border-top:none}.footer-actions[data-v-98a9f324]{display:flex;align-items:center;gap:16px}.learn-more-link[data-v-98a9f324]{display:flex;align-items:center;gap:8px;color:var(--text-secondary);font-size:14px;font-weight:400;line-height:1.2102;text-decoration:none;padding:4px 0}.learn-more-link[data-v-98a9f324]:hover{color:var(--text-primary)}.learn-more-link i[data-v-98a9f324]{width:16px;height:16px}.action-secondary[data-v-98a9f324]{height:32px;padding:4px 0;background:transparent;border:none;color:var(--text-secondary);font-size:14px;font-weight:400;line-height:1.2102;cursor:pointer;border-radius:4px}.action-secondary[data-v-98a9f324]:hover{color:var(--text-primary)}.action-primary[data-v-98a9f324]{height:40px;padding:8px 16px;background:var(--interface-menu-component-surface-hovered);border-radius:8px;border:none;color:var(--text-primary);font-size:14px;font-weight:400;line-height:1.2102;cursor:pointer}.action-primary[data-v-98a9f324]:hover{background:var(--button-hover-surface)}.help-center-menu[data-v-8ecd06e2]{width:256px;max-height:500px;overflow-y:auto;background:var(--interface-menu-surface);border-radius:8px;box-shadow:0 2px 12px #0000001a;border:1px solid var(--interface-menu-stroke);padding:12px 8px;position:relative}.help-menu-item[data-v-8ecd06e2]{display:flex;align-items:center;width:100%;height:32px;min-height:24px;padding:8px;gap:8px;background:transparent;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s;font-size:.9rem;color:var(--text-primary);text-align:left}.help-menu-item[data-v-8ecd06e2]:hover{background-color:var(--interface-menu-component-surface-hovered)}.help-menu-item[data-v-8ecd06e2]:focus,.help-menu-item[data-v-8ecd06e2]:focus-visible{outline:none;box-shadow:none}.help-menu-icon-container[data-v-8ecd06e2]{position:relative;width:16px;height:16px;flex-shrink:0}.help-menu-icon[data-v-8ecd06e2]{width:16px;height:16px;font-size:16px;color:var(--text-primary);display:flex;justify-content:center;align-items:center;flex-shrink:0}.help-menu-icon svg[data-v-8ecd06e2]{width:16px;height:16px;color:var(--text-primary)}.menu-red-dot[data-v-8ecd06e2]{position:absolute;top:-2px;right:-2px;width:8px;height:8px;background:#ff3b30;border-radius:50%;border:1.5px solid var(--p-content-background);z-index:1}.menu-label[data-v-8ecd06e2]{flex:1}.more-item[data-v-8ecd06e2]{justify-content:space-between}.section-description[data-v-8ecd06e2]{color:var(--text-secondary);font-family:var(--font-inter);font-size:12px;font-style:normal;font-weight:700;line-height:normal;margin:0;text-transform:uppercase;letter-spacing:.5px}.release-menu-item[data-v-8ecd06e2]{position:relative}.release-content[data-v-8ecd06e2]{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.release-title[data-v-8ecd06e2]{font-size:.9rem;line-height:1.2;font-weight:500;color:var(--text-primary)}.release-date[data-v-8ecd06e2]{height:16px;color:var(--text-secondary);font-family:var(--font-inter);font-size:12px;font-style:normal;font-weight:400;line-height:normal;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.release-date .hover-state[data-v-8ecd06e2]{display:none}.release-menu-item:hover .release-date .normal-state[data-v-8ecd06e2],.release-menu-item:focus-within .release-date .normal-state[data-v-8ecd06e2]{display:none}.release-menu-item:hover .release-date .hover-state[data-v-8ecd06e2],.release-menu-item:focus-within .release-date .hover-state[data-v-8ecd06e2]{display:inline}.more-submenu[data-v-8ecd06e2]{width:210px;padding:12px 8px;background:var(--interface-menu-surface);border-radius:8px;border:1px solid var(--interface-menu-stroke);box-shadow:0 2px 12px #0000001a;overflow:hidden;transition:opacity .15s ease-out}.submenu-item[data-v-8ecd06e2]{padding:8px;height:32px;min-height:24px;border-radius:4px;color:var(--text-primary);font-size:.9rem;font-weight:inherit;line-height:inherit}.submenu-item[data-v-8ecd06e2]:hover{background-color:var(--interface-menu-component-surface-hovered)}.submenu-item[data-v-8ecd06e2]:focus,.submenu-item[data-v-8ecd06e2]:focus-visible{outline:none;box-shadow:none}.submenu-divider[data-v-8ecd06e2]{height:1px;background:var(--interface-menu-stroke);margin:4px 0}.help-center-menu[data-v-8ecd06e2]::-webkit-scrollbar{width:6px}.help-center-menu[data-v-8ecd06e2]::-webkit-scrollbar-track{background:transparent}.help-center-menu[data-v-8ecd06e2]::-webkit-scrollbar-thumb{background:var(--interface-menu-stroke);border-radius:3px}.help-center-menu[data-v-8ecd06e2]::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}@media(prefers-reduced-motion:reduce){.help-menu-item[data-v-8ecd06e2]{transition:none}}.help-center-backdrop[data-v-2583d84f]{position:absolute;inset:0;z-index:9999;background:transparent}.help-center-popup[data-v-2583d84f]{position:absolute;bottom:1rem;z-index:10000;animation:slideInUp-2583d84f .2s ease-out;pointer-events:auto}.help-center-popup.sidebar-left[data-v-2583d84f],.help-center-popup.sidebar-left.small-sidebar[data-v-2583d84f]{left:1rem}.help-center-popup.sidebar-right[data-v-2583d84f]{right:1rem}.help-center-popup.topbar-right[data-v-2583d84f]{top:2rem;right:1rem;bottom:auto;animation:slideInDown-2583d84f .2s ease-out}@keyframes slideInDown-2583d84f{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInUp-2583d84f{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}img[data-v-c216f2c0]{transition:transform 1s cubic-bezier(.2,0,.4,1)}.workflow-template-selector-dialog.base-widget-layout{width:100%!important;max-width:1400px;height:100%!important;aspect-ratio:auto!important}@media(min-width:1600px){.workflow-template-selector-dialog.base-widget-layout{max-width:1600px}}.comfy-menu-button-wrapper[data-v-7f8c3b49]{width:var(--sidebar-width);height:var(--sidebar-item-height)}.comfy-menu-button-wrapper[data-v-7f8c3b49]:hover{background:var(--interface-panel-hover-surface)}.comfy-menu-button-active[data-v-7f8c3b49],.comfy-menu-button-active[data-v-7f8c3b49]:hover{background:var(--interface-panel-selected-surface)}.keybinding-tag[data-v-7f8c3b49]{background:var(--p-content-hover-background);border-color:var(--p-content-border-color);border-style:solid}.comfy-command-menu{--p-tieredmenu-item-focus-background: color-mix( in srgb, var(--fg-color) 15%, transparent );--p-tieredmenu-item-active-background: color-mix( in srgb, var(--fg-color) 10%, transparent )}.comfy-command-menu ul{background-color:var(--comfy-menu-bg)!important}.side-bar-button-icon{font-size:var(--sidebar-icon-size)!important}.side-bar-button-selected{background-color:var(--interface-panel-selected-surface);color:var(--content-hover-fg)}.side-bar-button:hover{background-color:var(--interface-panel-hover-surface);color:var(--content-hover-fg)}.side-bar-button-selected .side-bar-button-icon{font-size:var(--sidebar-icon-size)!important}.side-bar-button[data-v-bbb98ec9]{width:var(--sidebar-width);height:var(--sidebar-item-height);border-radius:0;flex-shrink:0}.side-tool-bar-end .side-bar-button[data-v-bbb98ec9]{height:var(--sidebar-width)}.side-bar-button-content[data-v-bbb98ec9]{align-items:center;gap:calc(var(--spacing,.25rem)*2);flex-direction:column;display:flex}.side-bar-button-label[data-v-bbb98ec9]{text-align:center;font-size:10px;line-height:1}.comfyui-body-left .side-bar-button.side-bar-button-selected[data-v-bbb98ec9],.comfyui-body-left .side-bar-button.side-bar-button-selected[data-v-bbb98ec9]:hover{border-left:4px solid var(--p-button-text-primary-color)}.comfyui-body-right .side-bar-button.side-bar-button-selected[data-v-bbb98ec9],.comfyui-body-right .side-bar-button.side-bar-button-selected[data-v-bbb98ec9]:hover{border-right:4px solid var(--p-button-text-primary-color)}[data-v-4a7593e2] .p-badge{background:#ff3b30;color:#ff3b30;min-width:8px;height:8px;padding:0;border-radius:9999px;font-size:0;margin-top:4px;margin-right:4px;border:none;outline:none;box-shadow:none}[data-v-4a7593e2] .p-badge.p-badge-dot{width:8px!important}:root{--sidebar-padding: 4px;--sidebar-icon-size: 1rem;--sidebar-default-floating-width: 48px;--sidebar-default-connected-width: calc( var(--sidebar-default-floating-width) + var(--sidebar-padding) * 2 );--sidebar-default-item-height: 56px;--sidebar-small-floating-width: 48px;--sidebar-small-connected-width: calc( var(--sidebar-small-floating-width) + var(--sidebar-padding) * 2 );--sidebar-small-item-height: 48px;--sidebar-width: var(--sidebar-default-floating-width);--sidebar-item-height: var(--sidebar-default-item-height)}:root:has(.side-tool-bar-container.small-sidebar){--sidebar-width: var(--sidebar-small-floating-width);--sidebar-item-height: var(--sidebar-small-item-height)}:root:has(.side-tool-bar-container.connected-sidebar){--sidebar-width: var(--sidebar-default-connected-width)}:root:has(.side-tool-bar-container.small-sidebar.connected-sidebar){--sidebar-width: var(--sidebar-small-connected-width)}.floating-sidebar[data-v-16894ff6]{padding:var(--sidebar-padding)}.floating-sidebar .sidebar-item-group[data-v-16894ff6]{border-color:var(--p-panel-border-color)}.connected-sidebar[data-v-16894ff6]{padding:var(--sidebar-padding)0;background-color:var(--comfy-menu-bg)}.sidebar-item-group[data-v-16894ff6]{background-color:var(--comfy-menu-bg);border:1px solid #0000}.overflowing-sidebar[data-v-16894ff6] .comfy-menu-button-wrapper{z-index:1;background-color:var(--comfy-menu-bg);position:sticky;top:0}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-4c13cb50],[data-v-4c13cb50]:before,[data-v-4c13cb50]:after,[data-v-4c13cb50]::backdrop{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-font-weight:initial}}}.workflow-preview-content[data-v-4c13cb50]{border-radius:var(--radius-xl,.75rem);max-width:var(--popover-width);background-color:var(--comfy-menu-bg);color:var(--fg-color);flex-direction:column;display:flex;overflow:hidden}.workflow-preview-thumbnail[data-v-4c13cb50]{padding:calc(var(--spacing,.25rem)*2);position:relative}.workflow-preview-thumbnail img[data-v-4c13cb50]{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);background-color:var(--comfy-menu-bg)}@supports (color:color-mix(in lab,red,red)){.workflow-preview-thumbnail img[data-v-4c13cb50]{background-color:color-mix(in srgb,var(--comfy-menu-bg)70%,black)}}.dark-theme .workflow-preview-thumbnail img[data-v-4c13cb50]{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.workflow-preview-footer[data-v-4c13cb50]{padding-inline:calc(var(--spacing,.25rem)*3);padding-top:calc(var(--spacing,.25rem)*1);padding-bottom:calc(var(--spacing,.25rem)*2)}.workflow-preview-name[data-v-4c13cb50]{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25/.875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);text-overflow:ellipsis;white-space:nowrap;color:var(--fg-color);display:block;overflow:hidden}@property --tw-font-weight{syntax:"*";inherits:false}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}.workflow-popover-fade{--p-popover-background:transparent;--p-popover-content-padding:0;border-radius:var(--radius-xl,.75rem);--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);background-color:#0000;transition:opacity .15s ease-out!important}.workflow-popover-fade.p-popover-flipped{--tw-translate-y:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.dark-theme .workflow-popover-fade{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.workflow-popover-fade.p-popover:after,.workflow-popover-fade.p-popover:before{--p-popover-border-color:var(--comfy-menu-secondary-bg);transform:translate(calc(-50% + var(--shift)));margin-left:0;left:50%}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}.p-tooltip.workflow-tab-tooltip{z-index:1200!important}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-09158161],[data-v-09158161]:before,[data-v-09158161]:after,[data-v-09158161]::backdrop{--tw-border-style:solid}}}.workflow-tabs-container[data-v-09158161]{background-color:var(--comfy-menu-bg)}[data-v-09158161] .p-togglebutton{border-style:var(--tw-border-style);border-width:0;border-right-style:var(--tw-border-style);--tw-border-style:solid;padding:calc(var(--spacing,.25rem)*0);border-style:solid;border-right-width:1px;border-right-color:var(--border-color);background-color:#0000;border-radius:0;flex-shrink:1;min-width:90px;position:relative}.overflow-arrow[data-v-09158161]{padding-inline:calc(var(--spacing,.25rem)*2);border-radius:0}.overflow-arrow[disabled][data-v-09158161]{opacity:.25}[data-v-09158161] .p-togglebutton>.p-togglebutton-content{max-width:100%}[data-v-09158161] .workflow-tab{max-width:100%}[data-v-09158161] .p-togglebutton:before{display:none}[data-v-09158161] .p-togglebutton:first-child{border-left-style:var(--tw-border-style);--tw-border-style:solid;border-style:solid;border-left-width:1px;border-left-color:var(--border-color)}[data-v-09158161] .p-togglebutton:not(:first-child){border-left-style:var(--tw-border-style);border-left-width:0}[data-v-09158161] .p-togglebutton.p-togglebutton-checked{border-bottom-style:var(--tw-border-style);--tw-border-style:solid;border-style:solid;border-bottom-width:1px;border-bottom-color:var(--p-button-text-primary-color);height:100%}[data-v-09158161] .p-togglebutton:not(.p-togglebutton-checked){opacity:.75}:is([data-v-09158161] .p-togglebutton-checked .close-button,[data-v-09158161] .p-togglebutton:hover .close-button){visibility:visible}[data-v-09158161] .p-scrollpanel-content{height:100%}[data-v-09158161] .workflow-tabs{display:flex}:is([data-v-09158161] .p-scrollpanel:hover .p-scrollpanel-bar,[data-v-09158161] .p-scrollpanel:active .p-scrollpanel-bar){opacity:.5}[data-v-09158161] .p-selectbutton{border-radius:0;height:100%}.workflow-tabs-container-desktop[data-v-09158161]{max-width:env(titlebar-area-width,100vw)}.window-actions-spacer[data-v-09158161]{--window-actions-spacer-width:min(75px,env(titlebar-area-width,0)*9999);min-width:var(--window-actions-spacer-width);flex:auto}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}.transform-pane--interacting[data-v-4d46eee6]{will-change:transform}.litegraph-minimap[data-v-66f11255]{overflow:hidden}.minimap-canvas[data-v-66f11255]{display:block;width:100%;height:100%;pointer-events:none}.minimap-viewport[data-v-66f11255]{position:absolute;top:0;left:0;pointer-events:none}.comfyui-body[data-v-0aea237e]{grid-template-columns:auto 1fr auto;grid-template-rows:auto 1fr auto}.comfyui-body-top[data-v-0aea237e]{order:-5;grid-column:1/-1;grid-row:1;z-index:1001;display:flex;flex-direction:column}.comfyui-body-left[data-v-0aea237e]{order:-4;grid-column:1;grid-row:2;z-index:10;display:flex}.graph-canvas-container[data-v-0aea237e]{width:100%;height:100%;order:-3;grid-column:2;grid-row:2;position:relative;overflow:clip}.comfyui-body-right[data-v-0aea237e]{order:-2;z-index:10;grid-column:3;grid-row:2}.comfyui-body-bottom[data-v-0aea237e]{order:4;grid-column:1/-1;grid-row:3;z-index:1000;display:flex;flex-direction:column}
1
+ [data-v-78b7f6de] .p-splitter-gutter{pointer-events:auto}[data-v-78b7f6de] .p-splitter-gutter:hover,[data-v-78b7f6de] .p-splitter-gutter[data-p-gutter-resizing=true]{transition:background-color .2s ease .3s;background-color:var(--p-primary-color)}[data-v-78b7f6de] .side-bar-panel[style*="display: none"]+.p-splitter-gutter,[data-v-78b7f6de] .p-splitter-gutter+.side-bar-panel[style*="display: none"]{display:none}.splitter-overlay-bottom[data-v-78b7f6de] .p-splitter-gutter{transform:translateY(5px)}.p-breadcrumb-item-link[data-v-d7b126c3],.p-breadcrumb-item-icon[data-v-d7b126c3]{-webkit-user-select:none;user-select:none}.p-breadcrumb-item-link[data-v-d7b126c3]{overflow:hidden}.p-breadcrumb-item-label[data-v-d7b126c3]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.active-breadcrumb-item[data-v-d7b126c3]{color:var(--text-primary)}.subgraph-breadcrumb[data-v-50f75d4e]:not(:empty){flex:1 10000 auto;min-width:120px}:is(.subgraph-breadcrumb[data-v-50f75d4e],[data-v-50f75d4e] .p-breadcrumb){overflow:hidden}[data-v-50f75d4e] .p-breadcrumb{background-color:#0000;width:100%}[data-v-50f75d4e] .p-breadcrumb-item{height:calc(var(--spacing,.25rem)*8);min-width:calc(var(--p-breadcrumb-item-min-width) + 1rem);background-color:#0000;border:1px solid #0000;flex-shrink:10000;align-items:center;transition:all .2s;display:flex;overflow:hidden}[data-v-50f75d4e] .p-breadcrumb-separator{padding:0 var(--p-breadcrumb-item-margin);background-color:#0000;border:1px solid #0000;display:flex}[data-v-50f75d4e] .p-breadcrumb-item-link{padding:0 calc(var(--p-breadcrumb-item-margin) + var(--p-breadcrumb-item-padding))}[data-v-50f75d4e] .p-breadcrumb-item:hover{border-radius:var(--radius-lg,.5rem);border-color:var(--interface-stroke);background-color:var(--comfy-menu-bg)}[data-v-50f75d4e] .p-breadcrumb-item:has(.p-breadcrumb-item-link-icon-visible){min-width:calc(var(--p-breadcrumb-item-min-width) + 1rem + 20px)}[data-v-50f75d4e] .p-breadcrumb-item:first-child{flex-shrink:5000}[data-v-50f75d4e] .p-breadcrumb-item:first-child .p-breadcrumb-item-link{padding-left:var(--p-breadcrumb-item-padding)}[data-v-50f75d4e] .p-breadcrumb-item:last-child{flex-shrink:1}[data-v-50f75d4e] .p-breadcrumb-item-link-menu-visible{background-color:var(--fg-color)!important}@supports (color:color-mix(in lab,red,red)){[data-v-50f75d4e] .p-breadcrumb-item-link-menu-visible{background-color:color-mix(in srgb,var(--fg-color)10%,var(--comfy-menu-bg))!important}}[data-v-50f75d4e] .p-breadcrumb-item-link-menu-visible{color:var(--fg-color)}.subgraph-breadcrumb-collapse .p-breadcrumb-list .p-breadcrumb-item,.subgraph-breadcrumb-collapse .p-breadcrumb-list .p-breadcrumb-separator{display:none}.subgraph-breadcrumb-collapse .p-breadcrumb-list .p-breadcrumb-item:nth-last-child(3),.subgraph-breadcrumb-collapse .p-breadcrumb-list .p-breadcrumb-separator:nth-last-child(2),.subgraph-breadcrumb-collapse .p-breadcrumb-list .p-breadcrumb-item:last-child{display:flex}[data-v-9d1ea2c9] .p-tablist-active-bar{display:none}.dom-widget[data-v-781496d2]>*{width:100%;height:100%}.zoomInputContainer:focus-within{border:1px solid var(--color-white)}.node-tooltip[data-v-96b1458a]{pointer-events:none;background:var(--comfy-input-bg);border-radius:5px;box-shadow:0 0 5px #0006;color:var(--input-text);left:0;max-width:30vw;padding:4px 8px;position:absolute;top:0;transform:translate(5px,calc(-100% - 5px));white-space:pre-wrap;z-index:99999}.color-picker-container[data-v-2197e0a1]{transform:translate(-50%)}[data-v-2197e0a1] .p-togglebutton{padding-inline:calc(var(--spacing,.25rem)*1);padding-block:calc(var(--spacing,.25rem)*2)}.selection-toolbox[data-v-c6489a20]{transform:translate(-50%) translateY(-120%)}@keyframes slideUp-c6489a20{0%{transform:translate(-50%) translateY(-100%);opacity:0}50%{transform:translate(-50%) translateY(-125%);opacity:.5}to{transform:translate(-50%) translateY(-120%);opacity:1}}.slide-up-enter-active[data-v-c6489a20]{animation:slideUp-c6489a20 125ms ease-out}.slide-up-leave-active[data-v-c6489a20]{animation:slideUp-c6489a20 25ms ease-out reverse}.group-title-editor.node-title-editor[data-v-aceb018c]{z-index:9999;padding:.25rem}[data-v-aceb018c] .editable-text{width:100%;height:100%}[data-v-aceb018c] .editable-text input{width:100%;height:100%;font-size:inherit}[data-v-acda36a0] .highlight{background-color:var(--p-primary-color);color:var(--p-primary-contrast-color);font-weight:700;border-radius:.25rem;padding:0 .125rem;margin:-.125rem .125rem}.invisible-dialog-root{width:60%;min-width:24rem;max-width:48rem;border:0!important;background-color:transparent!important;margin-top:25vh;margin-left:400px}@media all and (max-width:768px){.invisible-dialog-root{margin-left:0}}.node-search-box-dialog-mask{align-items:flex-start!important}.release-toast-popup[data-v-ba02c61a]{position:absolute;bottom:1rem;z-index:1000;pointer-events:auto}.release-toast-popup.sidebar-left[data-v-ba02c61a],.release-toast-popup.sidebar-left.small-sidebar[data-v-ba02c61a]{left:1rem}.release-toast-popup.sidebar-right[data-v-ba02c61a]{right:1rem}.whats-new-popup-container[data-v-98a9f324]{--whats-new-popup-bottom: 1rem;position:absolute;bottom:var(--whats-new-popup-bottom);z-index:1000;pointer-events:auto}.whats-new-popup[data-v-98a9f324]{background:var(--interface-menu-surface);border-radius:8px;max-width:400px;width:400px;border:1px solid var(--interface-menu-stroke);box-shadow:1px 1px 8px #0003;position:relative;display:flex;flex-direction:column}.modal-body[data-v-98a9f324]{display:flex;flex-direction:column;gap:1rem;padding:0;flex:1}.modal-header[data-v-98a9f324]{display:flex;flex-direction:column;gap:8px}.content-text[data-v-98a9f324]{color:var(--text-primary);font-size:14px;line-height:1.5;word-wrap:break-word;padding:0 1rem}.content-text[data-v-98a9f324] *{box-sizing:border-box}.content-text[data-v-98a9f324] h1{color:var(--text-secondary);font-family:Inter,sans-serif;font-size:14px;font-weight:400;margin-top:1rem;margin-bottom:8px;text-transform:uppercase;letter-spacing:.05em}.content-text[data-v-98a9f324] h2,.content-text[data-v-98a9f324] h1+p strong{color:var(--text-primary);font-family:Inter,sans-serif;font-size:14px;font-weight:600;margin:0 0 8px;line-height:1.429}.content-text[data-v-98a9f324] p{color:var(--text-secondary);font-family:Inter,sans-serif;margin:1rem 0}.content-text[data-v-98a9f324] ul,.content-text[data-v-98a9f324] ol{margin-bottom:0;padding-left:0;list-style:none}.content-text[data-v-98a9f324] ul:first-child,.content-text[data-v-98a9f324] ol:first-child{margin-top:0}.content-text[data-v-98a9f324] ul:last-child,.content-text[data-v-98a9f324] ol:last-child{margin-bottom:0}.content-text[data-v-98a9f324] li{margin-bottom:6px;position:relative;padding-left:18px;color:var(--text-secondary);font-family:Inter,sans-serif;font-size:14px;font-weight:400;line-height:1.2102}.content-text[data-v-98a9f324] li:last-child{margin-bottom:0}.content-text[data-v-98a9f324] li:before{content:"";position:absolute;left:4px;top:7px;width:6px;height:6px;border:2px solid var(--text-secondary);border-radius:50%;background:transparent}.content-text[data-v-98a9f324] li strong{color:var(--text-secondary);font-family:Inter,sans-serif;font-size:14px;font-weight:400;line-height:1.2102;margin-right:4px}.content-text[data-v-98a9f324] li p{margin:2px 0 0;display:inline}.content-text[data-v-98a9f324] code{background-color:var(--input-surface);border:1px solid var(--interface-menu-stroke);border-radius:4px;padding:2px 6px;color:var(--text-primary);white-space:nowrap}.content-text[data-v-98a9f324] img{width:100%;height:200px;margin:0 0 16px;object-fit:cover;display:block;border-radius:8px}.content-text[data-v-98a9f324] img:first-child{margin:-1rem -1rem 16px;width:calc(100% + 2rem);border-radius:8px 8px 0 0}.content-text[data-v-98a9f324]:has(img:first-child){border-left:1px solid var(--interface-menu-stroke);border-right:1px solid var(--interface-menu-stroke);border-top:1px solid var(--interface-menu-stroke);border-bottom-left-radius:8px;border-bottom-right-radius:8px;margin:-1px -1px 0}.content-text[data-v-98a9f324] img+h1{margin-top:0}.content-text[data-v-98a9f324] h3{color:var(--text-primary);font-family:Inter,sans-serif;font-size:16px;font-weight:600;margin:16px 0 8px;line-height:1.4}.modal-footer[data-v-98a9f324]{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px;border-top:none}.footer-actions[data-v-98a9f324]{display:flex;align-items:center;gap:16px}.learn-more-link[data-v-98a9f324]{display:flex;align-items:center;gap:8px;color:var(--text-secondary);font-size:14px;font-weight:400;line-height:1.2102;text-decoration:none;padding:4px 0}.learn-more-link[data-v-98a9f324]:hover{color:var(--text-primary)}.learn-more-link i[data-v-98a9f324]{width:16px;height:16px}.action-secondary[data-v-98a9f324]{height:32px;padding:4px 0;background:transparent;border:none;color:var(--text-secondary);font-size:14px;font-weight:400;line-height:1.2102;cursor:pointer;border-radius:4px}.action-secondary[data-v-98a9f324]:hover{color:var(--text-primary)}.action-primary[data-v-98a9f324]{height:40px;padding:8px 16px;background:var(--interface-menu-component-surface-hovered);border-radius:8px;border:none;color:var(--text-primary);font-size:14px;font-weight:400;line-height:1.2102;cursor:pointer}.action-primary[data-v-98a9f324]:hover{background:var(--button-hover-surface)}.help-center-menu[data-v-8ecd06e2]{width:256px;max-height:500px;overflow-y:auto;background:var(--interface-menu-surface);border-radius:8px;box-shadow:0 2px 12px #0000001a;border:1px solid var(--interface-menu-stroke);padding:12px 8px;position:relative}.help-menu-item[data-v-8ecd06e2]{display:flex;align-items:center;width:100%;height:32px;min-height:24px;padding:8px;gap:8px;background:transparent;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s;font-size:.9rem;color:var(--text-primary);text-align:left}.help-menu-item[data-v-8ecd06e2]:hover{background-color:var(--interface-menu-component-surface-hovered)}.help-menu-item[data-v-8ecd06e2]:focus,.help-menu-item[data-v-8ecd06e2]:focus-visible{outline:none;box-shadow:none}.help-menu-icon-container[data-v-8ecd06e2]{position:relative;width:16px;height:16px;flex-shrink:0}.help-menu-icon[data-v-8ecd06e2]{width:16px;height:16px;font-size:16px;color:var(--text-primary);display:flex;justify-content:center;align-items:center;flex-shrink:0}.help-menu-icon svg[data-v-8ecd06e2]{width:16px;height:16px;color:var(--text-primary)}.menu-red-dot[data-v-8ecd06e2]{position:absolute;top:-2px;right:-2px;width:8px;height:8px;background:#ff3b30;border-radius:50%;border:1.5px solid var(--p-content-background);z-index:1}.menu-label[data-v-8ecd06e2]{flex:1}.more-item[data-v-8ecd06e2]{justify-content:space-between}.section-description[data-v-8ecd06e2]{color:var(--text-secondary);font-family:var(--font-inter);font-size:12px;font-style:normal;font-weight:700;line-height:normal;margin:0;text-transform:uppercase;letter-spacing:.5px}.release-menu-item[data-v-8ecd06e2]{position:relative}.release-content[data-v-8ecd06e2]{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.release-title[data-v-8ecd06e2]{font-size:.9rem;line-height:1.2;font-weight:500;color:var(--text-primary)}.release-date[data-v-8ecd06e2]{height:16px;color:var(--text-secondary);font-family:var(--font-inter);font-size:12px;font-style:normal;font-weight:400;line-height:normal;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.release-date .hover-state[data-v-8ecd06e2]{display:none}.release-menu-item:hover .release-date .normal-state[data-v-8ecd06e2],.release-menu-item:focus-within .release-date .normal-state[data-v-8ecd06e2]{display:none}.release-menu-item:hover .release-date .hover-state[data-v-8ecd06e2],.release-menu-item:focus-within .release-date .hover-state[data-v-8ecd06e2]{display:inline}.more-submenu[data-v-8ecd06e2]{width:210px;padding:12px 8px;background:var(--interface-menu-surface);border-radius:8px;border:1px solid var(--interface-menu-stroke);box-shadow:0 2px 12px #0000001a;overflow:hidden;transition:opacity .15s ease-out}.submenu-item[data-v-8ecd06e2]{padding:8px;height:32px;min-height:24px;border-radius:4px;color:var(--text-primary);font-size:.9rem;font-weight:inherit;line-height:inherit}.submenu-item[data-v-8ecd06e2]:hover{background-color:var(--interface-menu-component-surface-hovered)}.submenu-item[data-v-8ecd06e2]:focus,.submenu-item[data-v-8ecd06e2]:focus-visible{outline:none;box-shadow:none}.submenu-divider[data-v-8ecd06e2]{height:1px;background:var(--interface-menu-stroke);margin:4px 0}.help-center-menu[data-v-8ecd06e2]::-webkit-scrollbar{width:6px}.help-center-menu[data-v-8ecd06e2]::-webkit-scrollbar-track{background:transparent}.help-center-menu[data-v-8ecd06e2]::-webkit-scrollbar-thumb{background:var(--interface-menu-stroke);border-radius:3px}.help-center-menu[data-v-8ecd06e2]::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}@media(prefers-reduced-motion:reduce){.help-menu-item[data-v-8ecd06e2]{transition:none}}.help-center-backdrop[data-v-2583d84f]{position:absolute;inset:0;z-index:9999;background:transparent}.help-center-popup[data-v-2583d84f]{position:absolute;bottom:1rem;z-index:10000;animation:slideInUp-2583d84f .2s ease-out;pointer-events:auto}.help-center-popup.sidebar-left[data-v-2583d84f],.help-center-popup.sidebar-left.small-sidebar[data-v-2583d84f]{left:1rem}.help-center-popup.sidebar-right[data-v-2583d84f]{right:1rem}.help-center-popup.topbar-right[data-v-2583d84f]{top:2rem;right:1rem;bottom:auto;animation:slideInDown-2583d84f .2s ease-out}@keyframes slideInDown-2583d84f{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInUp-2583d84f{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}img[data-v-c216f2c0]{transition:transform 1s cubic-bezier(.2,0,.4,1)}.workflow-template-selector-dialog.base-widget-layout{width:100%!important;max-width:1400px;height:100%!important;aspect-ratio:auto!important}@media(min-width:1600px){.workflow-template-selector-dialog.base-widget-layout{max-width:1600px}}.comfy-menu-button-wrapper[data-v-7f8c3b49]{width:var(--sidebar-width);height:var(--sidebar-item-height)}.comfy-menu-button-wrapper[data-v-7f8c3b49]:hover{background:var(--interface-panel-hover-surface)}.comfy-menu-button-active[data-v-7f8c3b49],.comfy-menu-button-active[data-v-7f8c3b49]:hover{background:var(--interface-panel-selected-surface)}.keybinding-tag[data-v-7f8c3b49]{background:var(--p-content-hover-background);border-color:var(--p-content-border-color);border-style:solid}.comfy-command-menu{--p-tieredmenu-item-focus-background: color-mix( in srgb, var(--fg-color) 15%, transparent );--p-tieredmenu-item-active-background: color-mix( in srgb, var(--fg-color) 10%, transparent )}.comfy-command-menu ul{background-color:var(--comfy-menu-bg)!important}.side-bar-button-icon{font-size:var(--sidebar-icon-size)!important}.side-bar-button-selected{background-color:var(--interface-panel-selected-surface);color:var(--content-hover-fg)}.side-bar-button:hover{background-color:var(--interface-panel-hover-surface);color:var(--content-hover-fg)}.side-bar-button-selected .side-bar-button-icon{font-size:var(--sidebar-icon-size)!important}.side-bar-button[data-v-bbb98ec9]{width:var(--sidebar-width);height:var(--sidebar-item-height);border-radius:0;flex-shrink:0}.side-tool-bar-end .side-bar-button[data-v-bbb98ec9]{height:var(--sidebar-width)}.side-bar-button-content[data-v-bbb98ec9]{align-items:center;gap:calc(var(--spacing,.25rem)*2);flex-direction:column;display:flex}.side-bar-button-label[data-v-bbb98ec9]{text-align:center;font-size:10px;line-height:1}.comfyui-body-left .side-bar-button.side-bar-button-selected[data-v-bbb98ec9],.comfyui-body-left .side-bar-button.side-bar-button-selected[data-v-bbb98ec9]:hover{border-left:4px solid var(--p-button-text-primary-color)}.comfyui-body-right .side-bar-button.side-bar-button-selected[data-v-bbb98ec9],.comfyui-body-right .side-bar-button.side-bar-button-selected[data-v-bbb98ec9]:hover{border-right:4px solid var(--p-button-text-primary-color)}[data-v-4a7593e2] .p-badge{background:#ff3b30;color:#ff3b30;min-width:8px;height:8px;padding:0;border-radius:9999px;font-size:0;margin-top:4px;margin-right:4px;border:none;outline:none;box-shadow:none}[data-v-4a7593e2] .p-badge.p-badge-dot{width:8px!important}:root{--sidebar-padding: 4px;--sidebar-icon-size: 1rem;--sidebar-default-floating-width: 48px;--sidebar-default-connected-width: calc( var(--sidebar-default-floating-width) + var(--sidebar-padding) * 2 );--sidebar-default-item-height: 56px;--sidebar-small-floating-width: 48px;--sidebar-small-connected-width: calc( var(--sidebar-small-floating-width) + var(--sidebar-padding) * 2 );--sidebar-small-item-height: 48px;--sidebar-width: var(--sidebar-default-floating-width);--sidebar-item-height: var(--sidebar-default-item-height)}:root:has(.side-tool-bar-container.small-sidebar){--sidebar-width: var(--sidebar-small-floating-width);--sidebar-item-height: var(--sidebar-small-item-height)}:root:has(.side-tool-bar-container.connected-sidebar){--sidebar-width: var(--sidebar-default-connected-width)}:root:has(.side-tool-bar-container.small-sidebar.connected-sidebar){--sidebar-width: var(--sidebar-small-connected-width)}.floating-sidebar[data-v-38c1e769]{padding:var(--sidebar-padding)}.floating-sidebar .sidebar-item-group[data-v-38c1e769]{border-color:var(--p-panel-border-color)}.connected-sidebar[data-v-38c1e769]{padding:var(--sidebar-padding)0;background-color:var(--comfy-menu-bg)}.sidebar-item-group[data-v-38c1e769]{background-color:var(--comfy-menu-bg);border:1px solid #0000}.overflowing-sidebar[data-v-38c1e769] .comfy-menu-button-wrapper{z-index:1;background-color:var(--comfy-menu-bg);position:sticky;top:0}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-4c13cb50],[data-v-4c13cb50]:before,[data-v-4c13cb50]:after,[data-v-4c13cb50]::backdrop{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-font-weight:initial}}}.workflow-preview-content[data-v-4c13cb50]{border-radius:var(--radius-xl,.75rem);max-width:var(--popover-width);background-color:var(--comfy-menu-bg);color:var(--fg-color);flex-direction:column;display:flex;overflow:hidden}.workflow-preview-thumbnail[data-v-4c13cb50]{padding:calc(var(--spacing,.25rem)*2);position:relative}.workflow-preview-thumbnail img[data-v-4c13cb50]{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);background-color:var(--comfy-menu-bg)}@supports (color:color-mix(in lab,red,red)){.workflow-preview-thumbnail img[data-v-4c13cb50]{background-color:color-mix(in srgb,var(--comfy-menu-bg)70%,black)}}.dark-theme .workflow-preview-thumbnail img[data-v-4c13cb50]{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.workflow-preview-footer[data-v-4c13cb50]{padding-inline:calc(var(--spacing,.25rem)*3);padding-top:calc(var(--spacing,.25rem)*1);padding-bottom:calc(var(--spacing,.25rem)*2)}.workflow-preview-name[data-v-4c13cb50]{font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25/.875)));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);text-overflow:ellipsis;white-space:nowrap;color:var(--fg-color);display:block;overflow:hidden}@property --tw-font-weight{syntax:"*";inherits:false}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}.workflow-popover-fade{--p-popover-background:transparent;--p-popover-content-padding:0;border-radius:var(--radius-xl,.75rem);--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);background-color:#0000;transition:opacity .15s ease-out!important}.workflow-popover-fade.p-popover-flipped{--tw-translate-y:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.dark-theme .workflow-popover-fade{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.workflow-popover-fade.p-popover:after,.workflow-popover-fade.p-popover:before{--p-popover-border-color:var(--comfy-menu-secondary-bg);transform:translate(calc(-50% + var(--shift)));margin-left:0;left:50%}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}.p-tooltip.workflow-tab-tooltip{z-index:1200!important}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-09158161],[data-v-09158161]:before,[data-v-09158161]:after,[data-v-09158161]::backdrop{--tw-border-style:solid}}}.workflow-tabs-container[data-v-09158161]{background-color:var(--comfy-menu-bg)}[data-v-09158161] .p-togglebutton{border-style:var(--tw-border-style);border-width:0;border-right-style:var(--tw-border-style);--tw-border-style:solid;padding:calc(var(--spacing,.25rem)*0);border-style:solid;border-right-width:1px;border-right-color:var(--border-color);background-color:#0000;border-radius:0;flex-shrink:1;min-width:90px;position:relative}.overflow-arrow[data-v-09158161]{padding-inline:calc(var(--spacing,.25rem)*2);border-radius:0}.overflow-arrow[disabled][data-v-09158161]{opacity:.25}[data-v-09158161] .p-togglebutton>.p-togglebutton-content{max-width:100%}[data-v-09158161] .workflow-tab{max-width:100%}[data-v-09158161] .p-togglebutton:before{display:none}[data-v-09158161] .p-togglebutton:first-child{border-left-style:var(--tw-border-style);--tw-border-style:solid;border-style:solid;border-left-width:1px;border-left-color:var(--border-color)}[data-v-09158161] .p-togglebutton:not(:first-child){border-left-style:var(--tw-border-style);border-left-width:0}[data-v-09158161] .p-togglebutton.p-togglebutton-checked{border-bottom-style:var(--tw-border-style);--tw-border-style:solid;border-style:solid;border-bottom-width:1px;border-bottom-color:var(--p-button-text-primary-color);height:100%}[data-v-09158161] .p-togglebutton:not(.p-togglebutton-checked){opacity:.75}:is([data-v-09158161] .p-togglebutton-checked .close-button,[data-v-09158161] .p-togglebutton:hover .close-button){visibility:visible}[data-v-09158161] .p-scrollpanel-content{height:100%}[data-v-09158161] .workflow-tabs{display:flex}:is([data-v-09158161] .p-scrollpanel:hover .p-scrollpanel-bar,[data-v-09158161] .p-scrollpanel:active .p-scrollpanel-bar){opacity:.5}[data-v-09158161] .p-selectbutton{border-radius:0;height:100%}.workflow-tabs-container-desktop[data-v-09158161]{max-width:env(titlebar-area-width,100vw)}.window-actions-spacer[data-v-09158161]{--window-actions-spacer-width:min(75px,env(titlebar-area-width,0)*9999);min-width:var(--window-actions-spacer-width);flex:auto}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}.transform-pane--interacting[data-v-4d46eee6]{will-change:transform}.litegraph-minimap[data-v-66f11255]{overflow:hidden}.minimap-canvas[data-v-66f11255]{display:block;width:100%;height:100%;pointer-events:none}.minimap-viewport[data-v-66f11255]{position:absolute;top:0;left:0;pointer-events:none}.comfyui-body[data-v-0aea237e]{grid-template-columns:auto 1fr auto;grid-template-rows:auto 1fr auto}.comfyui-body-top[data-v-0aea237e]{order:-5;grid-column:1/-1;grid-row:1;z-index:1001;display:flex;flex-direction:column}.comfyui-body-left[data-v-0aea237e]{order:-4;grid-column:1;grid-row:2;z-index:10;display:flex}.graph-canvas-container[data-v-0aea237e]{width:100%;height:100%;order:-3;grid-column:2;grid-row:2;position:relative;overflow:clip}.comfyui-body-right[data-v-0aea237e]{order:-2;z-index:10;grid-column:3;grid-row:2}.comfyui-body-bottom[data-v-0aea237e]{order:4;grid-column:1/-1;grid-row:3;z-index:1000;display:flex;flex-direction:column}