comfyui-frontend-package 1.37.1__py3-none-any.whl → 1.37.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. comfyui_frontend_package/static/assets/{AboutPanel-CTGWwQqp.js → AboutPanel-DLChcmDc.js} +2 -2
  2. comfyui_frontend_package/static/assets/{AboutPanel-CTGWwQqp.js.map → AboutPanel-DLChcmDc.js.map} +1 -1
  3. comfyui_frontend_package/static/assets/{AudioPreviewPlayer-DDwwIMxr.js → AudioPreviewPlayer-B8RfUAL6.js} +2 -2
  4. comfyui_frontend_package/static/assets/{AudioPreviewPlayer-DDwwIMxr.js.map → AudioPreviewPlayer-B8RfUAL6.js.map} +1 -1
  5. comfyui_frontend_package/static/assets/{ComfyQueueButton-BDRXGOWF.js → ComfyQueueButton-DRgA2g3T.js} +2 -2
  6. comfyui_frontend_package/static/assets/{ComfyQueueButton-BDRXGOWF.js.map → ComfyQueueButton-DRgA2g3T.js.map} +1 -1
  7. comfyui_frontend_package/static/assets/{ExtensionPanel-Dxe7qElb.js → ExtensionPanel-CpMR9h6B.js} +2 -2
  8. comfyui_frontend_package/static/assets/{ExtensionPanel-Dxe7qElb.js.map → ExtensionPanel-CpMR9h6B.js.map} +1 -1
  9. comfyui_frontend_package/static/assets/{GraphView-Cx4wYzNo.js → GraphView-xK7kCVVH.js} +5 -5
  10. comfyui_frontend_package/static/assets/{GraphView-Cx4wYzNo.js.map → GraphView-xK7kCVVH.js.map} +1 -1
  11. comfyui_frontend_package/static/assets/{KeybindingPanel-pmyMPZHn.js → KeybindingPanel-CM_PwegN.js} +2 -2
  12. comfyui_frontend_package/static/assets/{KeybindingPanel-pmyMPZHn.js.map → KeybindingPanel-CM_PwegN.js.map} +1 -1
  13. comfyui_frontend_package/static/assets/{LazyImage.vue_vue_type_script_setup_true_lang-C3ynRbso.js → LazyImage.vue_vue_type_script_setup_true_lang-Dza6G4hd.js} +2 -2
  14. comfyui_frontend_package/static/assets/{LazyImage.vue_vue_type_script_setup_true_lang-C3ynRbso.js.map → LazyImage.vue_vue_type_script_setup_true_lang-Dza6G4hd.js.map} +1 -1
  15. comfyui_frontend_package/static/assets/{LegacyCreditsPanel-DSos04Q3.js → LegacyCreditsPanel-BujZmWgC.js} +2 -2
  16. comfyui_frontend_package/static/assets/{LegacyCreditsPanel-DSos04Q3.js.map → LegacyCreditsPanel-BujZmWgC.js.map} +1 -1
  17. comfyui_frontend_package/static/assets/{Load3D-Cu5zG2Cw.js → Load3D-DWafZUud.js} +2 -2
  18. comfyui_frontend_package/static/assets/Load3D-DWafZUud.js.map +1 -0
  19. comfyui_frontend_package/static/assets/{Load3D.vue_vue_type_script_setup_true_lang-BJ0IqFdp.js → Load3D.vue_vue_type_script_setup_true_lang-_XswHXHt.js} +2 -2
  20. comfyui_frontend_package/static/assets/{Load3D.vue_vue_type_script_setup_true_lang-BJ0IqFdp.js.map → Load3D.vue_vue_type_script_setup_true_lang-_XswHXHt.js.map} +1 -1
  21. comfyui_frontend_package/static/assets/{Media3DBottom-DsMr4v-s.js → Media3DBottom-Z9nkVIUT.js} +2 -2
  22. comfyui_frontend_package/static/assets/{Media3DBottom-DsMr4v-s.js.map → Media3DBottom-Z9nkVIUT.js.map} +1 -1
  23. comfyui_frontend_package/static/assets/{Media3DTop-DQ18QW3M.js → Media3DTop-DKaMli8A.js} +2 -2
  24. comfyui_frontend_package/static/assets/{Media3DTop-DQ18QW3M.js.map → Media3DTop-DKaMli8A.js.map} +1 -1
  25. comfyui_frontend_package/static/assets/{MediaAudioBottom-99GB7NqQ.js → MediaAudioBottom-B62n8OnR.js} +2 -2
  26. comfyui_frontend_package/static/assets/{MediaAudioBottom-99GB7NqQ.js.map → MediaAudioBottom-B62n8OnR.js.map} +1 -1
  27. comfyui_frontend_package/static/assets/{MediaImageBottom-C6Bpu_d9.js → MediaImageBottom-DChcPA0h.js} +2 -2
  28. comfyui_frontend_package/static/assets/{MediaImageBottom-C6Bpu_d9.js.map → MediaImageBottom-DChcPA0h.js.map} +1 -1
  29. comfyui_frontend_package/static/assets/{MediaTitle.vue_vue_type_script_setup_true_lang-BFgOqxto.js → MediaTitle.vue_vue_type_script_setup_true_lang-CFkifLSX.js} +2 -2
  30. comfyui_frontend_package/static/assets/{MediaTitle.vue_vue_type_script_setup_true_lang-BFgOqxto.js.map → MediaTitle.vue_vue_type_script_setup_true_lang-CFkifLSX.js.map} +1 -1
  31. comfyui_frontend_package/static/assets/{MediaVideoBottom-DgdszioB.js → MediaVideoBottom-fWb8qHcu.js} +2 -2
  32. comfyui_frontend_package/static/assets/{MediaVideoBottom-DgdszioB.js.map → MediaVideoBottom-fWb8qHcu.js.map} +1 -1
  33. comfyui_frontend_package/static/assets/{ServerConfigPanel-BlC22rDX.js → ServerConfigPanel-umnHESaV.js} +2 -2
  34. comfyui_frontend_package/static/assets/{ServerConfigPanel-BlC22rDX.js.map → ServerConfigPanel-umnHESaV.js.map} +1 -1
  35. comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-BdL9OjAj.js +2 -0
  36. comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-BdL9OjAj.js.map +1 -0
  37. comfyui_frontend_package/static/assets/{UserPanel-Ccmz94Hx.js → UserPanel-CwkZrKjy.js} +2 -2
  38. comfyui_frontend_package/static/assets/{UserPanel-Ccmz94Hx.js.map → UserPanel-CwkZrKjy.js.map} +1 -1
  39. comfyui_frontend_package/static/assets/{UserSelectView-DVFY57_D.js → UserSelectView-TeLhcKfi.js} +2 -2
  40. comfyui_frontend_package/static/assets/{UserSelectView-DVFY57_D.js.map → UserSelectView-TeLhcKfi.js.map} +1 -1
  41. comfyui_frontend_package/static/assets/{ValueControlPopover-BLxzZY7u.js → ValueControlPopover-CSvGimoz.js} +2 -2
  42. comfyui_frontend_package/static/assets/{ValueControlPopover-BLxzZY7u.js.map → ValueControlPopover-CSvGimoz.js.map} +1 -1
  43. comfyui_frontend_package/static/assets/{WidgetAudioUI-BtX1BUnO.js → WidgetAudioUI-CfZQ32fr.js} +2 -2
  44. comfyui_frontend_package/static/assets/{WidgetAudioUI-BtX1BUnO.js.map → WidgetAudioUI-CfZQ32fr.js.map} +1 -1
  45. comfyui_frontend_package/static/assets/{WidgetButton-CyIVF8iQ.js → WidgetButton-Bo9rWiUg.js} +2 -2
  46. comfyui_frontend_package/static/assets/{WidgetButton-CyIVF8iQ.js.map → WidgetButton-Bo9rWiUg.js.map} +1 -1
  47. comfyui_frontend_package/static/assets/{WidgetColorPicker-BcGFRyIl.js → WidgetColorPicker-CyNNmSC9.js} +2 -2
  48. comfyui_frontend_package/static/assets/{WidgetColorPicker-BcGFRyIl.js.map → WidgetColorPicker-CyNNmSC9.js.map} +1 -1
  49. comfyui_frontend_package/static/assets/{WidgetGalleria-CfluZbRG.js → WidgetGalleria-X2v42F2a.js} +2 -2
  50. comfyui_frontend_package/static/assets/{WidgetGalleria-CfluZbRG.js.map → WidgetGalleria-X2v42F2a.js.map} +1 -1
  51. comfyui_frontend_package/static/assets/WidgetInputNumber-BL6P8as9.js +2 -0
  52. comfyui_frontend_package/static/assets/WidgetInputNumber-BL6P8as9.js.map +1 -0
  53. comfyui_frontend_package/static/assets/{WidgetInputNumber.vue_vue_type_script_setup_true_lang-Bmxd6b-H.js → WidgetInputNumber.vue_vue_type_script_setup_true_lang-DPaOKLY2.js} +2 -2
  54. comfyui_frontend_package/static/assets/{WidgetInputNumber.vue_vue_type_script_setup_true_lang-Bmxd6b-H.js.map → WidgetInputNumber.vue_vue_type_script_setup_true_lang-DPaOKLY2.js.map} +1 -1
  55. comfyui_frontend_package/static/assets/{WidgetInputText-CecuaK0n.js → WidgetInputText-LR89p-m1.js} +2 -2
  56. comfyui_frontend_package/static/assets/{WidgetInputText-CecuaK0n.js.map → WidgetInputText-LR89p-m1.js.map} +1 -1
  57. comfyui_frontend_package/static/assets/{WidgetLayoutField.vue_vue_type_script_setup_true_lang-CbjST6rI.js → WidgetLayoutField.vue_vue_type_script_setup_true_lang-C5dBI8au.js} +2 -2
  58. comfyui_frontend_package/static/assets/{WidgetLayoutField.vue_vue_type_script_setup_true_lang-CbjST6rI.js.map → WidgetLayoutField.vue_vue_type_script_setup_true_lang-C5dBI8au.js.map} +1 -1
  59. comfyui_frontend_package/static/assets/{WidgetLegacy-B8P9bOsC.js → WidgetLegacy-CJpsLPyI.js} +2 -2
  60. comfyui_frontend_package/static/assets/WidgetLegacy-CJpsLPyI.js.map +1 -0
  61. comfyui_frontend_package/static/assets/{WidgetMarkdown-nXPgrFZi.js → WidgetMarkdown-DrH35WSE.js} +2 -2
  62. comfyui_frontend_package/static/assets/{WidgetMarkdown-nXPgrFZi.js.map → WidgetMarkdown-DrH35WSE.js.map} +1 -1
  63. comfyui_frontend_package/static/assets/{WidgetRecordAudio-C6urheNU.js → WidgetRecordAudio-DL4kMpXw.js} +2 -2
  64. comfyui_frontend_package/static/assets/{WidgetRecordAudio-C6urheNU.js.map → WidgetRecordAudio-DL4kMpXw.js.map} +1 -1
  65. comfyui_frontend_package/static/assets/WidgetSelect-Bk32AcQe.js +2 -0
  66. comfyui_frontend_package/static/assets/WidgetSelect-Bk32AcQe.js.map +1 -0
  67. comfyui_frontend_package/static/assets/{WidgetSelect.vue_vue_type_script_setup_true_lang-DTcBUlhn.js → WidgetSelect.vue_vue_type_script_setup_true_lang-CHjOuVyH.js} +2 -2
  68. comfyui_frontend_package/static/assets/{WidgetSelect.vue_vue_type_script_setup_true_lang-DTcBUlhn.js.map → WidgetSelect.vue_vue_type_script_setup_true_lang-CHjOuVyH.js.map} +1 -1
  69. comfyui_frontend_package/static/assets/{WidgetTextarea-DuXhEnsH.js → WidgetTextarea-orpeeVx4.js} +2 -2
  70. comfyui_frontend_package/static/assets/{WidgetTextarea-DuXhEnsH.js.map → WidgetTextarea-orpeeVx4.js.map} +1 -1
  71. comfyui_frontend_package/static/assets/{WidgetToggleSwitch-BTeDQHuf.js → WidgetToggleSwitch-CSN313_V.js} +2 -2
  72. comfyui_frontend_package/static/assets/{WidgetToggleSwitch-BTeDQHuf.js.map → WidgetToggleSwitch-CSN313_V.js.map} +1 -1
  73. comfyui_frontend_package/static/assets/{WidgetWithControl.vue_vue_type_script_setup_true_lang-DFvQ9Mdf.js → WidgetWithControl.vue_vue_type_script_setup_true_lang-CU_cmbAA.js} +3 -3
  74. comfyui_frontend_package/static/assets/{WidgetWithControl.vue_vue_type_script_setup_true_lang-DFvQ9Mdf.js.map → WidgetWithControl.vue_vue_type_script_setup_true_lang-CU_cmbAA.js.map} +1 -1
  75. comfyui_frontend_package/static/assets/{audioService-B43wn81n.js → audioService-DvqSt3rU.js} +2 -2
  76. comfyui_frontend_package/static/assets/{audioService-B43wn81n.js.map → audioService-DvqSt3rU.js.map} +1 -1
  77. comfyui_frontend_package/static/assets/{audioUtils-iqnmct8N.js → audioUtils-bxVioEE3.js} +2 -2
  78. comfyui_frontend_package/static/assets/{audioUtils-iqnmct8N.js.map → audioUtils-bxVioEE3.js.map} +1 -1
  79. comfyui_frontend_package/static/assets/{index-FoJ8Eu4a.js → index-BODInyrK.js} +21 -21
  80. comfyui_frontend_package/static/assets/{index-FoJ8Eu4a.js.map → index-BODInyrK.js.map} +1 -1
  81. comfyui_frontend_package/static/assets/{index-BbFKUlCt.js → index-CyS0uSKu.js} +2 -2
  82. comfyui_frontend_package/static/assets/{index-BbFKUlCt.js.map → index-CyS0uSKu.js.map} +1 -1
  83. comfyui_frontend_package/static/assets/{index-B2FA5n0E.js → index-fwtcK193.js} +2 -2
  84. comfyui_frontend_package/static/assets/{index-B2FA5n0E.js.map → index-fwtcK193.js.map} +1 -1
  85. comfyui_frontend_package/static/assets/{keybindingService-D_lPZZ7u.js → keybindingService-DR_nPGKY.js} +2 -2
  86. comfyui_frontend_package/static/assets/{keybindingService-D_lPZZ7u.js.map → keybindingService-DR_nPGKY.js.map} +1 -1
  87. comfyui_frontend_package/static/index.html +1 -1
  88. {comfyui_frontend_package-1.37.1.dist-info → comfyui_frontend_package-1.37.2.dist-info}/METADATA +1 -1
  89. {comfyui_frontend_package-1.37.1.dist-info → comfyui_frontend_package-1.37.2.dist-info}/RECORD +91 -91
  90. comfyui_frontend_package/static/assets/Load3D-Cu5zG2Cw.js.map +0 -1
  91. comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-CY-BY6v5.js +0 -2
  92. comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-CY-BY6v5.js.map +0 -1
  93. comfyui_frontend_package/static/assets/WidgetInputNumber-BTFa3T0H.js +0 -2
  94. comfyui_frontend_package/static/assets/WidgetInputNumber-BTFa3T0H.js.map +0 -1
  95. comfyui_frontend_package/static/assets/WidgetLegacy-B8P9bOsC.js.map +0 -1
  96. comfyui_frontend_package/static/assets/WidgetSelect-VznDfSeg.js +0 -2
  97. comfyui_frontend_package/static/assets/WidgetSelect-VznDfSeg.js.map +0 -1
  98. {comfyui_frontend_package-1.37.1.dist-info → comfyui_frontend_package-1.37.2.dist-info}/WHEEL +0 -0
  99. {comfyui_frontend_package-1.37.1.dist-info → comfyui_frontend_package-1.37.2.dist-info}/top_level.txt +0 -0
@@ -1,2 +1,2 @@
1
- var p=Object.defineProperty;var a=(t,c)=>p(t,"name",{value:c,configurable:!0});import{bs as k,z as C,e as I,u as K,cy as i,cz as S,q as h}from"./index-FoJ8Eu4a.js";const E=[{combo:{ctrl:!0,key:"Enter"},commandId:"Comfy.QueuePrompt"},{combo:{ctrl:!0,shift:!0,key:"Enter"},commandId:"Comfy.QueuePromptFront"},{combo:{ctrl:!0,alt:!0,key:"Enter"},commandId:"Comfy.Interrupt"},{combo:{key:"r"},commandId:"Comfy.RefreshNodeDefinitions"},{combo:{key:"w"},commandId:"Workspace.ToggleSidebarTab.workflows"},{combo:{key:"n"},commandId:"Workspace.ToggleSidebarTab.node-library"},{combo:{key:"m"},commandId:"Workspace.ToggleSidebarTab.model-library"},{combo:{key:"s",ctrl:!0},commandId:"Comfy.SaveWorkflow"},{combo:{key:"o",ctrl:!0},commandId:"Comfy.OpenWorkflow"},{combo:{key:"g",ctrl:!0},commandId:"Comfy.Graph.GroupSelectedNodes"},{combo:{key:",",ctrl:!0},commandId:"Comfy.ShowSettingsDialog"},{combo:{key:"=",alt:!0},commandId:"Comfy.Canvas.ZoomIn",targetElementId:"graph-canvas"},{combo:{key:"+",alt:!0,shift:!0},commandId:"Comfy.Canvas.ZoomIn",targetElementId:"graph-canvas"},{combo:{key:"+",alt:!0},commandId:"Comfy.Canvas.ZoomIn",targetElementId:"graph-canvas"},{combo:{key:"-",alt:!0},commandId:"Comfy.Canvas.ZoomOut",targetElementId:"graph-canvas"},{combo:{key:"."},commandId:"Comfy.Canvas.FitView",targetElementId:"graph-canvas-container"},{combo:{key:"p"},commandId:"Comfy.Canvas.ToggleSelected.Pin",targetElementId:"graph-canvas-container"},{combo:{key:"c",alt:!0},commandId:"Comfy.Canvas.ToggleSelectedNodes.Collapse",targetElementId:"graph-canvas-container"},{combo:{key:"b",ctrl:!0},commandId:"Comfy.Canvas.ToggleSelectedNodes.Bypass",targetElementId:"graph-canvas-container"},{combo:{key:"m",ctrl:!0},commandId:"Comfy.Canvas.ToggleSelectedNodes.Mute",targetElementId:"graph-canvas-container"},{combo:{key:"`",ctrl:!0},commandId:"Workspace.ToggleBottomPanelTab.logs-terminal"},{combo:{key:"e",ctrl:!0,shift:!0},commandId:"Comfy.Graph.ConvertToSubgraph"},{combo:{key:"m",alt:!0},commandId:"Comfy.Canvas.ToggleMinimap"},{combo:{ctrl:!0,shift:!0,key:"k"},commandId:"Workspace.ToggleBottomPanel.Shortcuts"},{combo:{key:"v"},commandId:"Comfy.Canvas.Unlock"},{combo:{key:"h"},commandId:"Comfy.Canvas.Lock"},{combo:{key:"Escape"},commandId:"Comfy.Graph.ExitSubgraph"}],N=a(()=>{const t=k(),c=C(),s=I(),y=K(),l=a(e=>e.ctrlKey||e.altKey||e.metaKey?!1:["Delete","Backspace"].includes(e.key),"shouldForwardToCanvas"),g=a(async function(e){const m=S.fromEvent(e);if(m.isModifier)return;const o=e.composedPath()[0];if(m.isReservedByTextInput&&(o.tagName==="TEXTAREA"||o.tagName==="INPUT"||o.contentEditable==="true"||o.tagName==="SPAN"&&o.classList.contains("property_value")))return;const r=t.getKeybinding(m);if(r&&r.targetElementId!=="graph-canvas"){if(e.key==="Escape"&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&y.dialogStack.length>0)return;e.preventDefault(),new Set(["Comfy.QueuePrompt","Comfy.QueuePromptFront","Comfy.QueueSelectedOutputNodes"]).has(r.commandId)?await c.execute(r.commandId,{metadata:{trigger_source:"keybinding"}}):await c.execute(r.commandId);return}if(!r&&l(e)){const n=h.canvas;if(n&&n.processKey&&typeof n.processKey=="function"){n.processKey(e);return}}if(!(e.ctrlKey||e.altKey||e.metaKey)&&e.key==="Escape"){const n=document.querySelectorAll(".comfy-modal");for(const d of n)if(window.getComputedStyle(d).getPropertyValue("display")!=="none"){d.style.display="none";break}for(const d of document.querySelectorAll("dialog"))d.close()}},"keybindHandler"),u=a(()=>{for(const e of E)t.addDefaultKeybinding(new i(e))},"registerCoreKeybindings");function f(){const e=s.get("Comfy.Keybinding.UnsetBindings");for(const o of e)t.unsetKeybinding(new i(o));const m=s.get("Comfy.Keybinding.NewBindings");for(const o of m)t.addUserKeybinding(new i(o))}a(f,"registerUserKeybindings");async function b(){await s.set("Comfy.Keybinding.NewBindings",Object.values(t.getUserKeybindings())),await s.set("Comfy.Keybinding.UnsetBindings",Object.values(t.getUserUnsetKeybindings()))}return a(b,"persistUserKeybindings"),{keybindHandler:g,registerCoreKeybindings:u,registerUserKeybindings:f,persistUserKeybindings:b}},"useKeybindingService");export{N as u};
2
- //# sourceMappingURL=keybindingService-D_lPZZ7u.js.map
1
+ var p=Object.defineProperty;var a=(t,c)=>p(t,"name",{value:c,configurable:!0});import{bs as k,z as C,e as I,u as K,cy as i,cz as S,q as h}from"./index-BODInyrK.js";const E=[{combo:{ctrl:!0,key:"Enter"},commandId:"Comfy.QueuePrompt"},{combo:{ctrl:!0,shift:!0,key:"Enter"},commandId:"Comfy.QueuePromptFront"},{combo:{ctrl:!0,alt:!0,key:"Enter"},commandId:"Comfy.Interrupt"},{combo:{key:"r"},commandId:"Comfy.RefreshNodeDefinitions"},{combo:{key:"w"},commandId:"Workspace.ToggleSidebarTab.workflows"},{combo:{key:"n"},commandId:"Workspace.ToggleSidebarTab.node-library"},{combo:{key:"m"},commandId:"Workspace.ToggleSidebarTab.model-library"},{combo:{key:"s",ctrl:!0},commandId:"Comfy.SaveWorkflow"},{combo:{key:"o",ctrl:!0},commandId:"Comfy.OpenWorkflow"},{combo:{key:"g",ctrl:!0},commandId:"Comfy.Graph.GroupSelectedNodes"},{combo:{key:",",ctrl:!0},commandId:"Comfy.ShowSettingsDialog"},{combo:{key:"=",alt:!0},commandId:"Comfy.Canvas.ZoomIn",targetElementId:"graph-canvas"},{combo:{key:"+",alt:!0,shift:!0},commandId:"Comfy.Canvas.ZoomIn",targetElementId:"graph-canvas"},{combo:{key:"+",alt:!0},commandId:"Comfy.Canvas.ZoomIn",targetElementId:"graph-canvas"},{combo:{key:"-",alt:!0},commandId:"Comfy.Canvas.ZoomOut",targetElementId:"graph-canvas"},{combo:{key:"."},commandId:"Comfy.Canvas.FitView",targetElementId:"graph-canvas-container"},{combo:{key:"p"},commandId:"Comfy.Canvas.ToggleSelected.Pin",targetElementId:"graph-canvas-container"},{combo:{key:"c",alt:!0},commandId:"Comfy.Canvas.ToggleSelectedNodes.Collapse",targetElementId:"graph-canvas-container"},{combo:{key:"b",ctrl:!0},commandId:"Comfy.Canvas.ToggleSelectedNodes.Bypass",targetElementId:"graph-canvas-container"},{combo:{key:"m",ctrl:!0},commandId:"Comfy.Canvas.ToggleSelectedNodes.Mute",targetElementId:"graph-canvas-container"},{combo:{key:"`",ctrl:!0},commandId:"Workspace.ToggleBottomPanelTab.logs-terminal"},{combo:{key:"e",ctrl:!0,shift:!0},commandId:"Comfy.Graph.ConvertToSubgraph"},{combo:{key:"m",alt:!0},commandId:"Comfy.Canvas.ToggleMinimap"},{combo:{ctrl:!0,shift:!0,key:"k"},commandId:"Workspace.ToggleBottomPanel.Shortcuts"},{combo:{key:"v"},commandId:"Comfy.Canvas.Unlock"},{combo:{key:"h"},commandId:"Comfy.Canvas.Lock"},{combo:{key:"Escape"},commandId:"Comfy.Graph.ExitSubgraph"}],N=a(()=>{const t=k(),c=C(),s=I(),y=K(),l=a(e=>e.ctrlKey||e.altKey||e.metaKey?!1:["Delete","Backspace"].includes(e.key),"shouldForwardToCanvas"),g=a(async function(e){const m=S.fromEvent(e);if(m.isModifier)return;const o=e.composedPath()[0];if(m.isReservedByTextInput&&(o.tagName==="TEXTAREA"||o.tagName==="INPUT"||o.contentEditable==="true"||o.tagName==="SPAN"&&o.classList.contains("property_value")))return;const r=t.getKeybinding(m);if(r&&r.targetElementId!=="graph-canvas"){if(e.key==="Escape"&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&y.dialogStack.length>0)return;e.preventDefault(),new Set(["Comfy.QueuePrompt","Comfy.QueuePromptFront","Comfy.QueueSelectedOutputNodes"]).has(r.commandId)?await c.execute(r.commandId,{metadata:{trigger_source:"keybinding"}}):await c.execute(r.commandId);return}if(!r&&l(e)){const n=h.canvas;if(n&&n.processKey&&typeof n.processKey=="function"){n.processKey(e);return}}if(!(e.ctrlKey||e.altKey||e.metaKey)&&e.key==="Escape"){const n=document.querySelectorAll(".comfy-modal");for(const d of n)if(window.getComputedStyle(d).getPropertyValue("display")!=="none"){d.style.display="none";break}for(const d of document.querySelectorAll("dialog"))d.close()}},"keybindHandler"),u=a(()=>{for(const e of E)t.addDefaultKeybinding(new i(e))},"registerCoreKeybindings");function f(){const e=s.get("Comfy.Keybinding.UnsetBindings");for(const o of e)t.unsetKeybinding(new i(o));const m=s.get("Comfy.Keybinding.NewBindings");for(const o of m)t.addUserKeybinding(new i(o))}a(f,"registerUserKeybindings");async function b(){await s.set("Comfy.Keybinding.NewBindings",Object.values(t.getUserKeybindings())),await s.set("Comfy.Keybinding.UnsetBindings",Object.values(t.getUserUnsetKeybindings()))}return a(b,"persistUserKeybindings"),{keybindHandler:g,registerCoreKeybindings:u,registerUserKeybindings:f,persistUserKeybindings:b}},"useKeybindingService");export{N as u};
2
+ //# sourceMappingURL=keybindingService-DR_nPGKY.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keybindingService-D_lPZZ7u.js","sources":["../../src/constants/coreKeybindings.ts","../../src/services/keybindingService.ts"],"sourcesContent":["import type { Keybinding } from '@/schemas/keyBindingSchema'\n\nexport const CORE_KEYBINDINGS: Keybinding[] = [\n {\n combo: {\n ctrl: true,\n key: 'Enter'\n },\n commandId: 'Comfy.QueuePrompt'\n },\n {\n combo: {\n ctrl: true,\n shift: true,\n key: 'Enter'\n },\n commandId: 'Comfy.QueuePromptFront'\n },\n {\n combo: {\n ctrl: true,\n alt: true,\n key: 'Enter'\n },\n commandId: 'Comfy.Interrupt'\n },\n {\n combo: {\n key: 'r'\n },\n commandId: 'Comfy.RefreshNodeDefinitions'\n },\n {\n combo: {\n key: 'w'\n },\n commandId: 'Workspace.ToggleSidebarTab.workflows'\n },\n {\n combo: {\n key: 'n'\n },\n commandId: 'Workspace.ToggleSidebarTab.node-library'\n },\n {\n combo: {\n key: 'm'\n },\n commandId: 'Workspace.ToggleSidebarTab.model-library'\n },\n {\n combo: {\n key: 's',\n ctrl: true\n },\n commandId: 'Comfy.SaveWorkflow'\n },\n {\n combo: {\n key: 'o',\n ctrl: true\n },\n commandId: 'Comfy.OpenWorkflow'\n },\n {\n combo: {\n key: 'g',\n ctrl: true\n },\n commandId: 'Comfy.Graph.GroupSelectedNodes'\n },\n {\n combo: {\n key: ',',\n ctrl: true\n },\n commandId: 'Comfy.ShowSettingsDialog'\n },\n // For '=' both holding shift and not holding shift\n {\n combo: {\n key: '=',\n alt: true\n },\n commandId: 'Comfy.Canvas.ZoomIn',\n targetElementId: 'graph-canvas'\n },\n {\n combo: {\n key: '+',\n alt: true,\n shift: true\n },\n commandId: 'Comfy.Canvas.ZoomIn',\n targetElementId: 'graph-canvas'\n },\n // For number pad '+'\n {\n combo: {\n key: '+',\n alt: true\n },\n commandId: 'Comfy.Canvas.ZoomIn',\n targetElementId: 'graph-canvas'\n },\n {\n combo: {\n key: '-',\n alt: true\n },\n commandId: 'Comfy.Canvas.ZoomOut',\n targetElementId: 'graph-canvas'\n },\n {\n combo: {\n key: '.'\n },\n commandId: 'Comfy.Canvas.FitView',\n targetElementId: 'graph-canvas-container'\n },\n {\n combo: {\n key: 'p'\n },\n commandId: 'Comfy.Canvas.ToggleSelected.Pin',\n targetElementId: 'graph-canvas-container'\n },\n {\n combo: {\n key: 'c',\n alt: true\n },\n commandId: 'Comfy.Canvas.ToggleSelectedNodes.Collapse',\n targetElementId: 'graph-canvas-container'\n },\n {\n combo: {\n key: 'b',\n ctrl: true\n },\n commandId: 'Comfy.Canvas.ToggleSelectedNodes.Bypass',\n targetElementId: 'graph-canvas-container'\n },\n {\n combo: {\n key: 'm',\n ctrl: true\n },\n commandId: 'Comfy.Canvas.ToggleSelectedNodes.Mute',\n targetElementId: 'graph-canvas-container'\n },\n {\n combo: {\n key: '`',\n ctrl: true\n },\n commandId: 'Workspace.ToggleBottomPanelTab.logs-terminal'\n },\n {\n combo: {\n key: 'e',\n ctrl: true,\n shift: true\n },\n commandId: 'Comfy.Graph.ConvertToSubgraph'\n },\n {\n combo: {\n key: 'm',\n alt: true\n },\n commandId: 'Comfy.Canvas.ToggleMinimap'\n },\n {\n combo: {\n ctrl: true,\n shift: true,\n key: 'k'\n },\n commandId: 'Workspace.ToggleBottomPanel.Shortcuts'\n },\n {\n combo: {\n key: 'v'\n },\n commandId: 'Comfy.Canvas.Unlock'\n },\n {\n combo: {\n key: 'h'\n },\n commandId: 'Comfy.Canvas.Lock'\n },\n {\n combo: {\n key: 'Escape'\n },\n commandId: 'Comfy.Graph.ExitSubgraph'\n }\n]\n","import { CORE_KEYBINDINGS } from '@/constants/coreKeybindings'\nimport { useSettingStore } from '@/platform/settings/settingStore'\nimport { app } from '@/scripts/app'\nimport { useCommandStore } from '@/stores/commandStore'\nimport { useDialogStore } from '@/stores/dialogStore'\nimport {\n KeyComboImpl,\n KeybindingImpl,\n useKeybindingStore\n} from '@/stores/keybindingStore'\n\nexport const useKeybindingService = () => {\n const keybindingStore = useKeybindingStore()\n const commandStore = useCommandStore()\n const settingStore = useSettingStore()\n const dialogStore = useDialogStore()\n\n // Helper function to determine if an event should be forwarded to canvas\n const shouldForwardToCanvas = (event: KeyboardEvent): boolean => {\n // Don't forward if modifier keys are pressed (except shift)\n if (event.ctrlKey || event.altKey || event.metaKey) {\n return false\n }\n\n // Keys that LiteGraph handles but aren't in core keybindings\n const canvasKeys = ['Delete', 'Backspace']\n\n return canvasKeys.includes(event.key)\n }\n\n const keybindHandler = async function (event: KeyboardEvent) {\n const keyCombo = KeyComboImpl.fromEvent(event)\n if (keyCombo.isModifier) {\n return\n }\n\n // Ignore reserved or non-modifier keybindings if typing in input fields\n const target = event.composedPath()[0] as HTMLElement\n if (\n keyCombo.isReservedByTextInput &&\n (target.tagName === 'TEXTAREA' ||\n target.tagName === 'INPUT' ||\n target.contentEditable === 'true' ||\n (target.tagName === 'SPAN' &&\n target.classList.contains('property_value')))\n ) {\n return\n }\n\n const keybinding = keybindingStore.getKeybinding(keyCombo)\n if (keybinding && keybinding.targetElementId !== 'graph-canvas') {\n // Special handling for Escape key - let dialogs handle it first\n if (\n event.key === 'Escape' &&\n !event.ctrlKey &&\n !event.altKey &&\n !event.metaKey\n ) {\n // If dialogs are open, don't execute the keybinding - let the dialog handle it\n if (dialogStore.dialogStack.length > 0) {\n return\n }\n }\n\n // Prevent default browser behavior first, then execute the command\n event.preventDefault()\n const runCommandIds = new Set([\n 'Comfy.QueuePrompt',\n 'Comfy.QueuePromptFront',\n 'Comfy.QueueSelectedOutputNodes'\n ])\n if (runCommandIds.has(keybinding.commandId)) {\n await commandStore.execute(keybinding.commandId, {\n metadata: {\n trigger_source: 'keybinding'\n }\n })\n } else {\n await commandStore.execute(keybinding.commandId)\n }\n return\n }\n\n // Forward unhandled canvas-targeted events to LiteGraph\n if (!keybinding && shouldForwardToCanvas(event)) {\n const canvas = app.canvas\n if (\n canvas &&\n canvas.processKey &&\n typeof canvas.processKey === 'function'\n ) {\n // Let LiteGraph handle the event\n canvas.processKey(event)\n return\n }\n }\n\n // Only clear dialogs if not using modifiers\n if (event.ctrlKey || event.altKey || event.metaKey) {\n return\n }\n\n // Escape key: close the first open modal found, and all dialogs\n if (event.key === 'Escape') {\n const modals = document.querySelectorAll<HTMLElement>('.comfy-modal')\n for (const modal of modals) {\n const modalDisplay = window\n .getComputedStyle(modal)\n .getPropertyValue('display')\n\n if (modalDisplay !== 'none') {\n modal.style.display = 'none'\n break\n }\n }\n\n for (const d of document.querySelectorAll('dialog')) d.close()\n }\n }\n\n const registerCoreKeybindings = () => {\n for (const keybinding of CORE_KEYBINDINGS) {\n keybindingStore.addDefaultKeybinding(new KeybindingImpl(keybinding))\n }\n }\n\n function registerUserKeybindings() {\n // Unset bindings first as new bindings might conflict with default bindings.\n const unsetBindings = settingStore.get('Comfy.Keybinding.UnsetBindings')\n for (const keybinding of unsetBindings) {\n keybindingStore.unsetKeybinding(new KeybindingImpl(keybinding))\n }\n const newBindings = settingStore.get('Comfy.Keybinding.NewBindings')\n for (const keybinding of newBindings) {\n keybindingStore.addUserKeybinding(new KeybindingImpl(keybinding))\n }\n }\n\n async function persistUserKeybindings() {\n // TODO(https://github.com/Comfy-Org/ComfyUI_frontend/issues/1079):\n // Allow setting multiple values at once in settingStore\n await settingStore.set(\n 'Comfy.Keybinding.NewBindings',\n Object.values(keybindingStore.getUserKeybindings())\n )\n await settingStore.set(\n 'Comfy.Keybinding.UnsetBindings',\n Object.values(keybindingStore.getUserUnsetKeybindings())\n )\n }\n\n return {\n keybindHandler,\n registerCoreKeybindings,\n registerUserKeybindings,\n persistUserKeybindings\n }\n}\n"],"names":["CORE_KEYBINDINGS","useKeybindingService","__name","keybindingStore","useKeybindingStore","commandStore","useCommandStore","settingStore","useSettingStore","dialogStore","useDialogStore","shouldForwardToCanvas","event","keybindHandler","keyCombo","KeyComboImpl","target","keybinding","canvas","app","modals","modal","registerCoreKeybindings","KeybindingImpl","registerUserKeybindings","unsetBindings","newBindings","persistUserKeybindings"],"mappings":"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"}
1
+ {"version":3,"file":"keybindingService-DR_nPGKY.js","sources":["../../src/constants/coreKeybindings.ts","../../src/services/keybindingService.ts"],"sourcesContent":["import type { Keybinding } from '@/schemas/keyBindingSchema'\n\nexport const CORE_KEYBINDINGS: Keybinding[] = [\n {\n combo: {\n ctrl: true,\n key: 'Enter'\n },\n commandId: 'Comfy.QueuePrompt'\n },\n {\n combo: {\n ctrl: true,\n shift: true,\n key: 'Enter'\n },\n commandId: 'Comfy.QueuePromptFront'\n },\n {\n combo: {\n ctrl: true,\n alt: true,\n key: 'Enter'\n },\n commandId: 'Comfy.Interrupt'\n },\n {\n combo: {\n key: 'r'\n },\n commandId: 'Comfy.RefreshNodeDefinitions'\n },\n {\n combo: {\n key: 'w'\n },\n commandId: 'Workspace.ToggleSidebarTab.workflows'\n },\n {\n combo: {\n key: 'n'\n },\n commandId: 'Workspace.ToggleSidebarTab.node-library'\n },\n {\n combo: {\n key: 'm'\n },\n commandId: 'Workspace.ToggleSidebarTab.model-library'\n },\n {\n combo: {\n key: 's',\n ctrl: true\n },\n commandId: 'Comfy.SaveWorkflow'\n },\n {\n combo: {\n key: 'o',\n ctrl: true\n },\n commandId: 'Comfy.OpenWorkflow'\n },\n {\n combo: {\n key: 'g',\n ctrl: true\n },\n commandId: 'Comfy.Graph.GroupSelectedNodes'\n },\n {\n combo: {\n key: ',',\n ctrl: true\n },\n commandId: 'Comfy.ShowSettingsDialog'\n },\n // For '=' both holding shift and not holding shift\n {\n combo: {\n key: '=',\n alt: true\n },\n commandId: 'Comfy.Canvas.ZoomIn',\n targetElementId: 'graph-canvas'\n },\n {\n combo: {\n key: '+',\n alt: true,\n shift: true\n },\n commandId: 'Comfy.Canvas.ZoomIn',\n targetElementId: 'graph-canvas'\n },\n // For number pad '+'\n {\n combo: {\n key: '+',\n alt: true\n },\n commandId: 'Comfy.Canvas.ZoomIn',\n targetElementId: 'graph-canvas'\n },\n {\n combo: {\n key: '-',\n alt: true\n },\n commandId: 'Comfy.Canvas.ZoomOut',\n targetElementId: 'graph-canvas'\n },\n {\n combo: {\n key: '.'\n },\n commandId: 'Comfy.Canvas.FitView',\n targetElementId: 'graph-canvas-container'\n },\n {\n combo: {\n key: 'p'\n },\n commandId: 'Comfy.Canvas.ToggleSelected.Pin',\n targetElementId: 'graph-canvas-container'\n },\n {\n combo: {\n key: 'c',\n alt: true\n },\n commandId: 'Comfy.Canvas.ToggleSelectedNodes.Collapse',\n targetElementId: 'graph-canvas-container'\n },\n {\n combo: {\n key: 'b',\n ctrl: true\n },\n commandId: 'Comfy.Canvas.ToggleSelectedNodes.Bypass',\n targetElementId: 'graph-canvas-container'\n },\n {\n combo: {\n key: 'm',\n ctrl: true\n },\n commandId: 'Comfy.Canvas.ToggleSelectedNodes.Mute',\n targetElementId: 'graph-canvas-container'\n },\n {\n combo: {\n key: '`',\n ctrl: true\n },\n commandId: 'Workspace.ToggleBottomPanelTab.logs-terminal'\n },\n {\n combo: {\n key: 'e',\n ctrl: true,\n shift: true\n },\n commandId: 'Comfy.Graph.ConvertToSubgraph'\n },\n {\n combo: {\n key: 'm',\n alt: true\n },\n commandId: 'Comfy.Canvas.ToggleMinimap'\n },\n {\n combo: {\n ctrl: true,\n shift: true,\n key: 'k'\n },\n commandId: 'Workspace.ToggleBottomPanel.Shortcuts'\n },\n {\n combo: {\n key: 'v'\n },\n commandId: 'Comfy.Canvas.Unlock'\n },\n {\n combo: {\n key: 'h'\n },\n commandId: 'Comfy.Canvas.Lock'\n },\n {\n combo: {\n key: 'Escape'\n },\n commandId: 'Comfy.Graph.ExitSubgraph'\n }\n]\n","import { CORE_KEYBINDINGS } from '@/constants/coreKeybindings'\nimport { useSettingStore } from '@/platform/settings/settingStore'\nimport { app } from '@/scripts/app'\nimport { useCommandStore } from '@/stores/commandStore'\nimport { useDialogStore } from '@/stores/dialogStore'\nimport {\n KeyComboImpl,\n KeybindingImpl,\n useKeybindingStore\n} from '@/stores/keybindingStore'\n\nexport const useKeybindingService = () => {\n const keybindingStore = useKeybindingStore()\n const commandStore = useCommandStore()\n const settingStore = useSettingStore()\n const dialogStore = useDialogStore()\n\n // Helper function to determine if an event should be forwarded to canvas\n const shouldForwardToCanvas = (event: KeyboardEvent): boolean => {\n // Don't forward if modifier keys are pressed (except shift)\n if (event.ctrlKey || event.altKey || event.metaKey) {\n return false\n }\n\n // Keys that LiteGraph handles but aren't in core keybindings\n const canvasKeys = ['Delete', 'Backspace']\n\n return canvasKeys.includes(event.key)\n }\n\n const keybindHandler = async function (event: KeyboardEvent) {\n const keyCombo = KeyComboImpl.fromEvent(event)\n if (keyCombo.isModifier) {\n return\n }\n\n // Ignore reserved or non-modifier keybindings if typing in input fields\n const target = event.composedPath()[0] as HTMLElement\n if (\n keyCombo.isReservedByTextInput &&\n (target.tagName === 'TEXTAREA' ||\n target.tagName === 'INPUT' ||\n target.contentEditable === 'true' ||\n (target.tagName === 'SPAN' &&\n target.classList.contains('property_value')))\n ) {\n return\n }\n\n const keybinding = keybindingStore.getKeybinding(keyCombo)\n if (keybinding && keybinding.targetElementId !== 'graph-canvas') {\n // Special handling for Escape key - let dialogs handle it first\n if (\n event.key === 'Escape' &&\n !event.ctrlKey &&\n !event.altKey &&\n !event.metaKey\n ) {\n // If dialogs are open, don't execute the keybinding - let the dialog handle it\n if (dialogStore.dialogStack.length > 0) {\n return\n }\n }\n\n // Prevent default browser behavior first, then execute the command\n event.preventDefault()\n const runCommandIds = new Set([\n 'Comfy.QueuePrompt',\n 'Comfy.QueuePromptFront',\n 'Comfy.QueueSelectedOutputNodes'\n ])\n if (runCommandIds.has(keybinding.commandId)) {\n await commandStore.execute(keybinding.commandId, {\n metadata: {\n trigger_source: 'keybinding'\n }\n })\n } else {\n await commandStore.execute(keybinding.commandId)\n }\n return\n }\n\n // Forward unhandled canvas-targeted events to LiteGraph\n if (!keybinding && shouldForwardToCanvas(event)) {\n const canvas = app.canvas\n if (\n canvas &&\n canvas.processKey &&\n typeof canvas.processKey === 'function'\n ) {\n // Let LiteGraph handle the event\n canvas.processKey(event)\n return\n }\n }\n\n // Only clear dialogs if not using modifiers\n if (event.ctrlKey || event.altKey || event.metaKey) {\n return\n }\n\n // Escape key: close the first open modal found, and all dialogs\n if (event.key === 'Escape') {\n const modals = document.querySelectorAll<HTMLElement>('.comfy-modal')\n for (const modal of modals) {\n const modalDisplay = window\n .getComputedStyle(modal)\n .getPropertyValue('display')\n\n if (modalDisplay !== 'none') {\n modal.style.display = 'none'\n break\n }\n }\n\n for (const d of document.querySelectorAll('dialog')) d.close()\n }\n }\n\n const registerCoreKeybindings = () => {\n for (const keybinding of CORE_KEYBINDINGS) {\n keybindingStore.addDefaultKeybinding(new KeybindingImpl(keybinding))\n }\n }\n\n function registerUserKeybindings() {\n // Unset bindings first as new bindings might conflict with default bindings.\n const unsetBindings = settingStore.get('Comfy.Keybinding.UnsetBindings')\n for (const keybinding of unsetBindings) {\n keybindingStore.unsetKeybinding(new KeybindingImpl(keybinding))\n }\n const newBindings = settingStore.get('Comfy.Keybinding.NewBindings')\n for (const keybinding of newBindings) {\n keybindingStore.addUserKeybinding(new KeybindingImpl(keybinding))\n }\n }\n\n async function persistUserKeybindings() {\n // TODO(https://github.com/Comfy-Org/ComfyUI_frontend/issues/1079):\n // Allow setting multiple values at once in settingStore\n await settingStore.set(\n 'Comfy.Keybinding.NewBindings',\n Object.values(keybindingStore.getUserKeybindings())\n )\n await settingStore.set(\n 'Comfy.Keybinding.UnsetBindings',\n Object.values(keybindingStore.getUserUnsetKeybindings())\n )\n }\n\n return {\n keybindHandler,\n registerCoreKeybindings,\n registerUserKeybindings,\n persistUserKeybindings\n }\n}\n"],"names":["CORE_KEYBINDINGS","useKeybindingService","__name","keybindingStore","useKeybindingStore","commandStore","useCommandStore","settingStore","useSettingStore","dialogStore","useDialogStore","shouldForwardToCanvas","event","keybindHandler","keyCombo","KeyComboImpl","target","keybinding","canvas","app","modals","modal","registerCoreKeybindings","KeybindingImpl","registerUserKeybindings","unsetBindings","newBindings","persistUserKeybindings"],"mappings":"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"}
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><link rel="stylesheet" href="user.css"><link rel="stylesheet" href="api/userdata/user.css"><meta charset="UTF-8"><title>ComfyUI</title><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><link rel="stylesheet" href="materialdesignicons.min.css"/><meta name="mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><link rel="manifest" href="./assets/manifest-CebUEmtR.json"><script type="module" crossorigin src="./assets/index-FoJ8Eu4a.js"></script><link rel="modulepreload" crossorigin href="./assets/vendor-other-BxP-0xn6.js"><link rel="modulepreload" crossorigin href="./assets/vendor-primevue-rR0TB_Js.js"><link rel="modulepreload" crossorigin href="./assets/vendor-vue-BEnTqVKr.js"><link rel="modulepreload" crossorigin href="./assets/vendor-xterm-CWYFmgbN.js"><link rel="modulepreload" crossorigin href="./assets/vendor-three-BsnVSA6y.js"><link rel="modulepreload" crossorigin href="./assets/vendor-tiptap-4vvRsqpM.js"><link rel="stylesheet" crossorigin href="./assets/vendor-other-DYX1NpEr.css"><link rel="stylesheet" crossorigin href="./assets/vendor-xterm-xj0gfbX3.css"><link rel="stylesheet" crossorigin href="./assets/index-DD6YW1q7.css"></head><body class="litegraph grid"><div id="vue-app"></div></body></html>
1
+ <!doctype html><html lang="en"><head><link rel="stylesheet" href="user.css"><link rel="stylesheet" href="api/userdata/user.css"><meta charset="UTF-8"><title>ComfyUI</title><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"><link rel="stylesheet" href="materialdesignicons.min.css"/><meta name="mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><link rel="manifest" href="./assets/manifest-CebUEmtR.json"><script type="module" crossorigin src="./assets/index-BODInyrK.js"></script><link rel="modulepreload" crossorigin href="./assets/vendor-other-BxP-0xn6.js"><link rel="modulepreload" crossorigin href="./assets/vendor-primevue-rR0TB_Js.js"><link rel="modulepreload" crossorigin href="./assets/vendor-vue-BEnTqVKr.js"><link rel="modulepreload" crossorigin href="./assets/vendor-xterm-CWYFmgbN.js"><link rel="modulepreload" crossorigin href="./assets/vendor-three-BsnVSA6y.js"><link rel="modulepreload" crossorigin href="./assets/vendor-tiptap-4vvRsqpM.js"><link rel="stylesheet" crossorigin href="./assets/vendor-other-DYX1NpEr.css"><link rel="stylesheet" crossorigin href="./assets/vendor-xterm-xj0gfbX3.css"><link rel="stylesheet" crossorigin href="./assets/index-DD6YW1q7.css"></head><body class="litegraph grid"><div id="vue-app"></div></body></html>
@@ -1,5 +1,5 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: comfyui_frontend_package
3
- Version: 1.37.1
3
+ Version: 1.37.2
4
4
  Requires-Python: >=3.9
5
5
  Dynamic: requires-python
@@ -1,107 +1,107 @@
1
1
  comfyui_frontend_package/__init__.py,sha256=egsntbUfUQDdNwy9wOdsXYB04MgbCsAE6biB2ewAbjs,178
2
- comfyui_frontend_package/static/index.html,sha256=QJARpFfyQN6Jn6DgLM8psx7bXhy99qkcLGLmaFP4tag,1342
2
+ comfyui_frontend_package/static/index.html,sha256=m3f3S2HPy40t3mXPd2nzQpfJnDreAn2omcV2jv4Vy1o,1342
3
3
  comfyui_frontend_package/static/materialdesignicons.min.css,sha256=uX5EP2dfKonJPPVowOXTMuuvGVvl4gyJw3zh56JvRyE,346560
4
4
  comfyui_frontend_package/static/assets/ABCROMExtended-BlackItalic-B3Ak1JoQ.woff,sha256=BCM9xtqZAEpQlYr5F597MpPrNngjhzx0NHlyX8nBpBA,128604
5
5
  comfyui_frontend_package/static/assets/ABCROMExtended-BlackItalic-NFqMndLW.woff2,sha256=9Dqh5SbTqOv-XhJtu983UIYOit6uQkS-_RNIwheeg0I,81600
6
- comfyui_frontend_package/static/assets/AboutPanel-CTGWwQqp.js,sha256=XHgp8vIrey8u12TVDwFmNiJ4ty83CaXHoSWejLei4iw,3904
7
- comfyui_frontend_package/static/assets/AboutPanel-CTGWwQqp.js.map,sha256=S_KzI6OUuPl4IniUJjRY3fbN2KGObWgDHE1KcaJviTg,9996
8
- comfyui_frontend_package/static/assets/AudioPreviewPlayer-DDwwIMxr.js,sha256=aUAR6v3cI2WvmwTQalbcz-he87W-qoUYBxae_13L23w,6082
9
- comfyui_frontend_package/static/assets/AudioPreviewPlayer-DDwwIMxr.js.map,sha256=ok22vLFn3D9GLsF4Zqtv44tC4npiCvYU97Bqs0vRopk,14698
6
+ comfyui_frontend_package/static/assets/AboutPanel-DLChcmDc.js,sha256=wnhLBmtMuY3oP3TpsYsTL2uqF6Ve3S_QOjEO0kkWW8I,3904
7
+ comfyui_frontend_package/static/assets/AboutPanel-DLChcmDc.js.map,sha256=WawlBjq73xdM3DMrlS6_E8hLeifki8FIEh8PT6McCYE,9996
8
+ comfyui_frontend_package/static/assets/AudioPreviewPlayer-B8RfUAL6.js,sha256=tz3bfhxte4O_GjP8hmcNoBsxzZbP7phHAiO7URCZF3o,6082
9
+ comfyui_frontend_package/static/assets/AudioPreviewPlayer-B8RfUAL6.js.map,sha256=DLbOQmPeVRIvZb0nSTT5rfIrysgL_Mbp6j2SVAcvYI4,14698
10
10
  comfyui_frontend_package/static/assets/AudioPreviewPlayer-DkCMWdK6.css,sha256=ahXP0gqu2rxEiIupYl9-cOXSgcfUJW3lfrQjRyGbM5o,158
11
11
  comfyui_frontend_package/static/assets/CREDIT.txt,sha256=Z3LA2D41jduTNuML7o9ew-PSAPKKMlQdpevfY2V-jz0,526
12
- comfyui_frontend_package/static/assets/ComfyQueueButton-BDRXGOWF.js,sha256=kJ6rHLyznthg2Y9B2XIjZW3Bt8OaXn8cz8xVPI0_SGA,3986
13
- comfyui_frontend_package/static/assets/ComfyQueueButton-BDRXGOWF.js.map,sha256=LCtUyvLOFTTMhl7cLPNnlA1p6K3CR7qeGEtUyxkvWpo,9059
14
12
  comfyui_frontend_package/static/assets/ComfyQueueButton-Chw03MdC.css,sha256=XDad4D0ZNx2t35yK-lMRmJggx6dfk_HHugy0zWzeYQg,203
15
- comfyui_frontend_package/static/assets/ExtensionPanel-Dxe7qElb.js,sha256=UkA7cRrUTXryFKP6uwZcnRicISjj4Adx3uT9DhgdsaM,4558
16
- comfyui_frontend_package/static/assets/ExtensionPanel-Dxe7qElb.js.map,sha256=53iHH9I1rZYD0Ap4UjcgIJZxubN5W0dA-_6VaTQLsm0,10443
17
- comfyui_frontend_package/static/assets/GraphView-Cx4wYzNo.js,sha256=4GjKlsNpZx34u4Glhe1hwBDBw7UYbiIezeXqJFYNUnc,462148
18
- comfyui_frontend_package/static/assets/GraphView-Cx4wYzNo.js.map,sha256=f2Dikyl0lwRP107U3pOeO8_mhlWX6YD0Jxl4cPh8k-o,1465054
13
+ comfyui_frontend_package/static/assets/ComfyQueueButton-DRgA2g3T.js,sha256=McSP_JCphKk7QGIfsK-thkloqe0UZ_tW7BY9B_akUmU,3986
14
+ comfyui_frontend_package/static/assets/ComfyQueueButton-DRgA2g3T.js.map,sha256=4ijUkkGnrLZ7M7PhDuAZl5Xj9t49mawocE0MLtxApto,9059
15
+ comfyui_frontend_package/static/assets/ExtensionPanel-CpMR9h6B.js,sha256=wgWzl0tSGoGU41HfYQ1QG8OkZxCA6rGJkgsfq2bO7qo,4558
16
+ comfyui_frontend_package/static/assets/ExtensionPanel-CpMR9h6B.js.map,sha256=3E9VwsnbcaY-7rPrkUh9UomTiO5KXId8H1yeDZ_Osi8,10443
19
17
  comfyui_frontend_package/static/assets/GraphView-DwAYVX4H.css,sha256=up4KQLb1Y8YUaZWz6iWD1qFSsUrsXD2GIN4xLkaeioM,26509
18
+ comfyui_frontend_package/static/assets/GraphView-xK7kCVVH.js,sha256=e3XIyHaq77SLQ9qXfnqR2FP3Ax9tJO0xQCYdtw4HslY,462148
19
+ comfyui_frontend_package/static/assets/GraphView-xK7kCVVH.js.map,sha256=YR2thqORjbFUD6YnZRI6nAeo8mX1PUf-69sRP-5i5UE,1465054
20
+ comfyui_frontend_package/static/assets/KeybindingPanel-CM_PwegN.js,sha256=OSTUHqHo3o2eJEo2tupLTbWCx6OMebij0EoFdzEyCkY,5988
21
+ comfyui_frontend_package/static/assets/KeybindingPanel-CM_PwegN.js.map,sha256=zog_AtV7jICtzj0BoJmTR-HgHMM2SOeO4RFrcppcJ2c,12997
20
22
  comfyui_frontend_package/static/assets/KeybindingPanel-cIUDOO6-.css,sha256=z2wymeUYEyTAAH8wdaz0Jdcrnq2MXeufaAPLVANZj0k,236
21
- comfyui_frontend_package/static/assets/KeybindingPanel-pmyMPZHn.js,sha256=0tfsNvnk7EbR-k-F5roFo_3IQKJDaGn9IL-Vybr85tM,5988
22
- comfyui_frontend_package/static/assets/KeybindingPanel-pmyMPZHn.js.map,sha256=H7c93ZzUmKHdC8RGaZbOnD5_JSWKTyVuR--NUuGUrs8,12997
23
- comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-C3ynRbso.js,sha256=UvyDnpYUS6p7Ihn8NKgdurUU0hs1RXxqa5UW490I60s,29643
24
- comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-C3ynRbso.js.map,sha256=PkCxW_e61-LZUJdDaHmw34mtkG5sSRc5_Xijd9jeWoU,70052
25
- comfyui_frontend_package/static/assets/LegacyCreditsPanel-DSos04Q3.js,sha256=gxGr5_FakvsGOBGEdHaptUKfFtUvPkgM11vrNXrR3Is,9657
26
- comfyui_frontend_package/static/assets/LegacyCreditsPanel-DSos04Q3.js.map,sha256=TCCzGvE7-UWZ1zlgePts7tNSRTD6VK3nr5D_HYSn0o4,24906
27
- comfyui_frontend_package/static/assets/Load3D-Cu5zG2Cw.js,sha256=s3uKz6lzu8Kxz5D3PWQNEBzQOAA3X531cMSXgJZkwUs,383
28
- comfyui_frontend_package/static/assets/Load3D-Cu5zG2Cw.js.map,sha256=Laboo-5omutN7fu9X88obpKhMA8WW32dtTsaVEeY0wQ,99
23
+ comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-Dza6G4hd.js,sha256=v50Syg3_kmGZ-VeSIQIWsQj5lUFEbiap0s5l_S2MHig,29643
24
+ comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-Dza6G4hd.js.map,sha256=uFLrqtEKwxHkh8iaoGfrFKH3MQfRGmPpaIDc5-oby0E,70052
25
+ comfyui_frontend_package/static/assets/LegacyCreditsPanel-BujZmWgC.js,sha256=6HUHMVzfUcQdmOASFQOFi7wivoqyE7hN9btbbmX7qwI,9657
26
+ comfyui_frontend_package/static/assets/LegacyCreditsPanel-BujZmWgC.js.map,sha256=T1rXfbUPrAVjtQjV4TxukdFwFvwPVhlFObNuX1JH68c,24906
29
27
  comfyui_frontend_package/static/assets/Load3D-CxQmvLOa.css,sha256=U8ZSA85Qz4TOYBs5V12rnjPO_BywV69RQesRXf7_O64,378
30
- comfyui_frontend_package/static/assets/Load3D.vue_vue_type_script_setup_true_lang-BJ0IqFdp.js,sha256=BoIIqXjh3wPbI3ghprSRGCEGGZNhy0tg7ttx75VBay4,25342
31
- comfyui_frontend_package/static/assets/Load3D.vue_vue_type_script_setup_true_lang-BJ0IqFdp.js.map,sha256=5LMd986z4jDl4Eg30m6Mm4B0LxWQfxKvqztgR8qPRFE,44135
32
- comfyui_frontend_package/static/assets/Media3DBottom-DsMr4v-s.js,sha256=t0VAZehhaIqWVkvc_9SWSqNqT_L1MA7tBE9e3dULSYQ,857
33
- comfyui_frontend_package/static/assets/Media3DBottom-DsMr4v-s.js.map,sha256=KDQZNGnpmxDOTilEJ93JWX03X3Vy9gGg0mpI2X-Dx1w,1051
34
- comfyui_frontend_package/static/assets/Media3DTop-DQ18QW3M.js,sha256=pjPrr1efSMHyyz5b0ULMPKbRAD6PoAEt_Kd857yACw4,991
35
- comfyui_frontend_package/static/assets/Media3DTop-DQ18QW3M.js.map,sha256=8ZoiNJz9QxkZWNmzbnnx2kqPydiYMpGKFtt9Cpn_Wwk,1071
36
- comfyui_frontend_package/static/assets/MediaAudioBottom-99GB7NqQ.js,sha256=Wml6ijLTkNy5WIjdkIwEeyYynO1dpXCG4fO2AH2HR4U,863
37
- comfyui_frontend_package/static/assets/MediaAudioBottom-99GB7NqQ.js.map,sha256=cBccAzF3OC5TRRR7m4eEnheOuixUg2Tl4SNHXy6DVz4,1057
28
+ comfyui_frontend_package/static/assets/Load3D-DWafZUud.js,sha256=L7HzlGfYwf_sEUJ7EGdRFaZ8pvKo467w0iaZ93aVR8Q,383
29
+ comfyui_frontend_package/static/assets/Load3D-DWafZUud.js.map,sha256=HqIO10ujxvzPqqd4qLSaKynsHQz1GTL7On9OmCDMT0Y,99
30
+ comfyui_frontend_package/static/assets/Load3D.vue_vue_type_script_setup_true_lang-_XswHXHt.js,sha256=vjnIp2TMrR4PTEmE827PawdMCOjAjUHt5rzeoWIJRZ4,25342
31
+ comfyui_frontend_package/static/assets/Load3D.vue_vue_type_script_setup_true_lang-_XswHXHt.js.map,sha256=YkePz7TXyeIQboleTcTxy-SI9tpcvD0lWITCPPX6H9c,44135
32
+ comfyui_frontend_package/static/assets/Media3DBottom-Z9nkVIUT.js,sha256=0g7y1o4y6w4a1OHQ9EECH_7Ev-sBFXt5IK78DFP5Q0M,857
33
+ comfyui_frontend_package/static/assets/Media3DBottom-Z9nkVIUT.js.map,sha256=FHmgHj0bdeBkhs4XyXuHCQ0muWvupjqYJeI8P9_sIs4,1051
34
+ comfyui_frontend_package/static/assets/Media3DTop-DKaMli8A.js,sha256=G6Eryxi3FzbSuZqPzr_Q_HKBDxTW0BHX1sv91p5Qang,991
35
+ comfyui_frontend_package/static/assets/Media3DTop-DKaMli8A.js.map,sha256=0wv7UsI3qtPb0ItvwTJERmdI2kG0SQgyII_IB9LMSfE,1071
36
+ comfyui_frontend_package/static/assets/MediaAudioBottom-B62n8OnR.js,sha256=jTj3vRGNvtLX2Gz9zfIlmGBuAZ7TAJR76jf_vHdu6AM,863
37
+ comfyui_frontend_package/static/assets/MediaAudioBottom-B62n8OnR.js.map,sha256=5KKhLyfqYuhAG2m086expcO-ZcPUbTSMjhBtMC7I6c0,1057
38
38
  comfyui_frontend_package/static/assets/MediaAudioTop-CrJ2sxBl.js,sha256=YbRi2FnQRX2XLHnossG6TlS_LUtMLJDx7LiHlOt41vA,846
39
39
  comfyui_frontend_package/static/assets/MediaAudioTop-CrJ2sxBl.js.map,sha256=edTKuFV7qVu4wc-rEtopoKTTOlKz4_bnBy22KFihsmg,106
40
- comfyui_frontend_package/static/assets/MediaImageBottom-C6Bpu_d9.js,sha256=YUI3vtzHzb_lRU52v8WRcwcPcXRp0bEa2aGuVsdTQvU,889
41
- comfyui_frontend_package/static/assets/MediaImageBottom-C6Bpu_d9.js.map,sha256=CJJTm21kf-TvAK3MPs0cdq-x3hVUglWJ2ajS670qULM,1006
40
+ comfyui_frontend_package/static/assets/MediaImageBottom-DChcPA0h.js,sha256=oCLL_dzhQxz03jF0AONIEp2hFOakpysACpryTtf2phM,889
41
+ comfyui_frontend_package/static/assets/MediaImageBottom-DChcPA0h.js.map,sha256=-AN7_h5KSIynCqaL7x2l72ORIfogGuukcqecuA8OXeg,1006
42
42
  comfyui_frontend_package/static/assets/MediaImageTop-3hOGsLO6.js,sha256=cebBxA1h-T8TKEHm0qFwi9DyrOhn5YhI8kD2ZiWkWFk,1046
43
43
  comfyui_frontend_package/static/assets/MediaImageTop-3hOGsLO6.js.map,sha256=htrUPizejLtgUnXDcNQaNBIxCB59199ASzsjTeAkPOg,1704
44
- comfyui_frontend_package/static/assets/MediaTitle.vue_vue_type_script_setup_true_lang-BFgOqxto.js,sha256=TLmxUr18-C6Ltpbu4eG0MPyRtrmROEX6lWnw3385gT4,462
45
- comfyui_frontend_package/static/assets/MediaTitle.vue_vue_type_script_setup_true_lang-BFgOqxto.js.map,sha256=O9MC1InP1rWMZt1P6S9s_6aw1SwOx_XsimM3Z4FrXHs,835
46
- comfyui_frontend_package/static/assets/MediaVideoBottom-DgdszioB.js,sha256=8GZvLQk45PCGcGtMzweQ_jJa1cfYEvrW9iQNECmudus,857
47
- comfyui_frontend_package/static/assets/MediaVideoBottom-DgdszioB.js.map,sha256=VpiQWhT0wIeWXQIrLWaCRyiL2GcvA4FWfCcETCnZ6NY,1031
44
+ comfyui_frontend_package/static/assets/MediaTitle.vue_vue_type_script_setup_true_lang-CFkifLSX.js,sha256=L18RuZpFxauw2vYJhel8Cti5iYW-j__OG_VKKO-kS8s,462
45
+ comfyui_frontend_package/static/assets/MediaTitle.vue_vue_type_script_setup_true_lang-CFkifLSX.js.map,sha256=PdGCWS2l8rax-tHDVV_VHDQH-HaDleeuTuSSQUmioTE,835
46
+ comfyui_frontend_package/static/assets/MediaVideoBottom-fWb8qHcu.js,sha256=ZQRU2ro6Q4fLPRhGS1OrkePbDFFC1dqaLTfJLvH_Ot0,857
47
+ comfyui_frontend_package/static/assets/MediaVideoBottom-fWb8qHcu.js.map,sha256=0eHHd0ove18ACi5B9S2XihLUMAhnHYDSNvdf-pf6n6w,1031
48
48
  comfyui_frontend_package/static/assets/MediaVideoTop-BOu7sug2.js,sha256=NEI_ftPDQeO0MKG3OluJfcRXBaZNLDWJi36f4CZSCUM,1318
49
49
  comfyui_frontend_package/static/assets/MediaVideoTop-BOu7sug2.js.map,sha256=FFNWGxaYuDS1t10HNKBZQLb57hmp7d0F5H170KA8uGE,2564
50
- comfyui_frontend_package/static/assets/ServerConfigPanel-BlC22rDX.js,sha256=f49pHhr5WdNRsFJHFwgKWSzBj7bWBhffF3tMrwrbMBQ,3079
51
- comfyui_frontend_package/static/assets/ServerConfigPanel-BlC22rDX.js.map,sha256=HNMuirwiWMKDO7bsY1SrbYjzDiSjylcOw5b9qRx_zqc,6051
50
+ comfyui_frontend_package/static/assets/ServerConfigPanel-umnHESaV.js,sha256=7QHIBg8F-Su8P6uMHpzZe5hCMuZRaYeBjY-Ot7tMJZY,3079
51
+ comfyui_frontend_package/static/assets/ServerConfigPanel-umnHESaV.js.map,sha256=A369DBY9fI4R_fnPu45s7zcuXyfhtH6AVm-SW3Si_qg,6051
52
52
  comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-BJ80blC4.css,sha256=fRvawvAcmgPTwZvPd4CAhi5DZrXZIFbuNsu9uox9EgU,140
53
- comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-CY-BY6v5.js,sha256=R3KyRaxQakD-RiWQDM3qJ6-vKvENM2xTC8dB8TWLU7Y,14308
54
- comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-CY-BY6v5.js.map,sha256=Be1fNt_WsiObolyKtM-_14yru9tauvLG1vNRNDyLeJs,30745
53
+ comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-BdL9OjAj.js,sha256=9iap5WVpWQLjtDfhPPzFa1YFAt2t6SU0fjYpho8cSG0,14536
54
+ comfyui_frontend_package/static/assets/SubscriptionRequiredDialogContent-BdL9OjAj.js.map,sha256=hNNZXxNZq51u6Q5MybAkEHdKWYuzvZfIqhfmNdbh-Hk,33405
55
55
  comfyui_frontend_package/static/assets/UserAvatar.vue_vue_type_script_setup_true_lang-Bxj7Xy09.js,sha256=L40UoD6vilnalKaHoW2LPIDz8ZR8wKbAAa4lgQ9K0xg,785
56
56
  comfyui_frontend_package/static/assets/UserAvatar.vue_vue_type_script_setup_true_lang-Bxj7Xy09.js.map,sha256=2KvE1i3alhjZP0g3Fdxxa2_NC4BXNHfmcECoJpf7xw8,1137
57
- comfyui_frontend_package/static/assets/UserPanel-Ccmz94Hx.js,sha256=yGQQdqBJybi3459g5d1PNHZDQ2xmoIH4P4pg_zSyvuI,2918
58
- comfyui_frontend_package/static/assets/UserPanel-Ccmz94Hx.js.map,sha256=PMlUjtbrV8QEogGC9ManXCJ4FY8utP_o58ZmMAnV6eg,4257
59
- comfyui_frontend_package/static/assets/UserSelectView-DVFY57_D.js,sha256=J-qoUIHG_UScaR-YeJQolEw6rRZP5SnnlYli5KxXOrM,3103
60
- comfyui_frontend_package/static/assets/UserSelectView-DVFY57_D.js.map,sha256=NyywURe4d9u4r4oucbzduIFvVh06pvUOn4Q5MlAGM8E,5633
61
- comfyui_frontend_package/static/assets/ValueControlPopover-BLxzZY7u.js,sha256=URCOaSYlItXt8GMuJoCsocLh-CF2-yEqLAVsXfjrlzE,2756
62
- comfyui_frontend_package/static/assets/ValueControlPopover-BLxzZY7u.js.map,sha256=9i10hq-0osQIcUsurCtvpAwn-cL-1byYtDzoSRcOXcY,4356
63
- comfyui_frontend_package/static/assets/WidgetAudioUI-BtX1BUnO.js,sha256=V7DFsTVXFSIZHqoB9Umk_-zkMPsh649UVuVJcet1blc,1726
64
- comfyui_frontend_package/static/assets/WidgetAudioUI-BtX1BUnO.js.map,sha256=MglLXJDUlYfyOM8IzlrF_9CSNrJv_60syu2yxeBybqM,2604
65
- comfyui_frontend_package/static/assets/WidgetButton-CyIVF8iQ.js,sha256=fKtj70T5XPfwy9MALyz58tasD0ZZszAmbrkO5leBjCU,1153
66
- comfyui_frontend_package/static/assets/WidgetButton-CyIVF8iQ.js.map,sha256=1ImqwDjg4WPt5qEmI6Fos33kftfQRmQ9qGrQK32_EIo,1728
57
+ comfyui_frontend_package/static/assets/UserPanel-CwkZrKjy.js,sha256=w0V9TmzgOSeWvVPVM_kNRCZJg_aAUf919tN5yhyJUGE,2918
58
+ comfyui_frontend_package/static/assets/UserPanel-CwkZrKjy.js.map,sha256=KC70UXJEtEWhi2nJrwagerb0SWRSUHl2pACOtHgodVc,4257
59
+ comfyui_frontend_package/static/assets/UserSelectView-TeLhcKfi.js,sha256=-LUXeMBsQE4vGstkZG_AOJhB5HOejGvx_VE4U6D1F2I,3103
60
+ comfyui_frontend_package/static/assets/UserSelectView-TeLhcKfi.js.map,sha256=qb3YcObWZcEjGfnqRw9vizTbSjAbU_SMnTC960HEQwA,5633
61
+ comfyui_frontend_package/static/assets/ValueControlPopover-CSvGimoz.js,sha256=VU2Vi1Qu696GeU8aAxfwtQaOcSbPmrm9dDPkErzUovE,2756
62
+ comfyui_frontend_package/static/assets/ValueControlPopover-CSvGimoz.js.map,sha256=ZG_g7pzh6AsOEOW7sIGKxOUgeSP824JJaD9Jndf-j0o,4356
63
+ comfyui_frontend_package/static/assets/WidgetAudioUI-CfZQ32fr.js,sha256=3BMhWX4cC2zu0jGgEmgCcwZM59onaTsn5q8KO9MpGzI,1726
64
+ comfyui_frontend_package/static/assets/WidgetAudioUI-CfZQ32fr.js.map,sha256=7I2vFkxEZEG1ytnax5jP_hD_KBYsc_KH8144hWnf0PU,2604
65
+ comfyui_frontend_package/static/assets/WidgetButton-Bo9rWiUg.js,sha256=j83p7Os6E9C-o1GSX_McII_aId5LeBOClRUmjevF9J0,1153
66
+ comfyui_frontend_package/static/assets/WidgetButton-Bo9rWiUg.js.map,sha256=EjSNuDwSJKBfrX-RM9JHi5_bNV--vyRzcGdu0fyHiVc,1728
67
67
  comfyui_frontend_package/static/assets/WidgetChart-BC7APkkS.js,sha256=uuYRMFG5m-nObxNuA7pHuhLAVizizJDQ9NwCNKvhOfU,1198
68
68
  comfyui_frontend_package/static/assets/WidgetChart-BC7APkkS.js.map,sha256=qNFcZAChvlTvNJ7rbOGx8pdS0G_7bkDgaz_KQRtTH7s,2745
69
- comfyui_frontend_package/static/assets/WidgetColorPicker-BcGFRyIl.js,sha256=ZmwXXNTSl3v2ZuFcDaod6E1K4_6aDP0Levghbs-EBrc,1743
70
- comfyui_frontend_package/static/assets/WidgetColorPicker-BcGFRyIl.js.map,sha256=_ckQ0Dgdonevwkd5r_76pLhj53kRizurva4_TG_BO6A,3562
69
+ comfyui_frontend_package/static/assets/WidgetColorPicker-CyNNmSC9.js,sha256=SMNnw18gyor1zwu2sBXPdESOFiEnF3-psLBED__Z5z4,1743
70
+ comfyui_frontend_package/static/assets/WidgetColorPicker-CyNNmSC9.js.map,sha256=gKdQGzFjsaVfE47NsF6vT4gCBor4GWrvOZuzJ_FVl8A,3562
71
71
  comfyui_frontend_package/static/assets/WidgetGalleria-B85qzqLf.css,sha256=g6aKUb3ZKnCkNy9x2piEI4WQokJZdj4pGiSF19qHLSE,173
72
- comfyui_frontend_package/static/assets/WidgetGalleria-CfluZbRG.js,sha256=506oc6Q2XhkWderVLeZNPZxNw3YBbi2UqBmgqX7IeyY,2027
73
- comfyui_frontend_package/static/assets/WidgetGalleria-CfluZbRG.js.map,sha256=0r9JFp-dMcPovu_VKuAP2slZwxBAg5VWal7FOC4AOws,4389
72
+ comfyui_frontend_package/static/assets/WidgetGalleria-X2v42F2a.js,sha256=_Z8ZfyUfz-_tlbleMqjsRJmvNM7BFtG0jpDfcQ0egLI,2027
73
+ comfyui_frontend_package/static/assets/WidgetGalleria-X2v42F2a.js.map,sha256=rdtgSJjMNZdkhgNKW7_j84WG-Ak45SUaPbnb-h162uU,4389
74
74
  comfyui_frontend_package/static/assets/WidgetImageCompare-D-Y9kZ99.js,sha256=55Ylkrs8MEqHoyt9UpVYcJX0rZ2coH4xXpXVgm3ITWs,1543
75
75
  comfyui_frontend_package/static/assets/WidgetImageCompare-D-Y9kZ99.js.map,sha256=E1Pf5b9X5xcqcU5qDneY74U28PvdFEnaY0JoU3O77YU,3618
76
- comfyui_frontend_package/static/assets/WidgetInputNumber-BTFa3T0H.js,sha256=oztWV2uuQin4yo3JgdCf9uZ1oHtVaC7CvZ4SCLbW6GY,624
77
- comfyui_frontend_package/static/assets/WidgetInputNumber-BTFa3T0H.js.map,sha256=6DRYBe6uUoObjMMmr0jAQBa-XZkgEXvNV-mfBKuIWe8,110
76
+ comfyui_frontend_package/static/assets/WidgetInputNumber-BL6P8as9.js,sha256=-ADX-cdSaDLEJUlJ7XVQNFn5dY-vCiXTMkwHr60qA1Y,624
77
+ comfyui_frontend_package/static/assets/WidgetInputNumber-BL6P8as9.js.map,sha256=3Elc5HLwhC7xuhlcJo0PhnBdEHbwgVmjhJtAuIzxuwc,110
78
78
  comfyui_frontend_package/static/assets/WidgetInputNumber-DIHSnjON.css,sha256=kilZP2dpk0Y6fKcir1HxyMJ5BOVM4lNA1IryLxp5FzQ,247
79
- comfyui_frontend_package/static/assets/WidgetInputNumber.vue_vue_type_script_setup_true_lang-Bmxd6b-H.js,sha256=qlp_8uoD4TEpo_YFr5Q1zXxfTuYhETV5rZGt5304j14,7155
80
- comfyui_frontend_package/static/assets/WidgetInputNumber.vue_vue_type_script_setup_true_lang-Bmxd6b-H.js.map,sha256=XNRq7jSZFe5QspDRg2uVydu0BvlAAFmI6sO3LswAFyo,15616
81
- comfyui_frontend_package/static/assets/WidgetInputText-CecuaK0n.js,sha256=_nlj8jdTSEK_00Y31a9fL5ovTiGnFKXmueKb8NMS6r8,1135
82
- comfyui_frontend_package/static/assets/WidgetInputText-CecuaK0n.js.map,sha256=Rdr6OVNdX3pMF6_IvJDaZwarEI-X8YA4vkzT1vyXyo4,1437
83
- comfyui_frontend_package/static/assets/WidgetLayoutField.vue_vue_type_script_setup_true_lang-CbjST6rI.js,sha256=uHbw14tzFFDtDkyt8BAhpql3dbXl7yl8Dt5LWLIW2O8,1058
84
- comfyui_frontend_package/static/assets/WidgetLayoutField.vue_vue_type_script_setup_true_lang-CbjST6rI.js.map,sha256=Jp2eYzpjFJO1g4sFjY9KWZ6bn-kxDHX4tV1v8oNmgvA,1475
85
- comfyui_frontend_package/static/assets/WidgetLegacy-B8P9bOsC.js,sha256=zvodL0d6tOYsu6Ci2UIWCStF2EL5v7iN2xrufFhpmRo,325
86
- comfyui_frontend_package/static/assets/WidgetLegacy-B8P9bOsC.js.map,sha256=J8mxAL67lAbKt1X24GZXXEOP46E4XFnEk_kjo_woV5I,105
87
- comfyui_frontend_package/static/assets/WidgetMarkdown-nXPgrFZi.js,sha256=nusdQGGYamx7NMR3a1MJSc2AOkOlkCcsVplsw6Dl3T0,1629
88
- comfyui_frontend_package/static/assets/WidgetMarkdown-nXPgrFZi.js.map,sha256=zslehQVzoEU9KFKCFEy8Ivlpjqm96S6dQMHOiaglW1c,2527
89
- comfyui_frontend_package/static/assets/WidgetRecordAudio-C6urheNU.js,sha256=o_JEYZUvK1acSIVZbOYrMBRTm2R0qLVSWPcZJ8cGw4g,9991
90
- comfyui_frontend_package/static/assets/WidgetRecordAudio-C6urheNU.js.map,sha256=xZAp0AUw_N6Lh2LdC0vO5SEJmFwIEdj16s_omm5icYM,27166
91
- comfyui_frontend_package/static/assets/WidgetSelect-VznDfSeg.js,sha256=p3tj7rptR4CgQhl58lMwPpReBY2O2WqMgQHxoER2knE,682
92
- comfyui_frontend_package/static/assets/WidgetSelect-VznDfSeg.js.map,sha256=SWnAkiRaNPaDFu-8cZNU7J4hb6ndfZHzu5oo3HCvzVE,105
93
- comfyui_frontend_package/static/assets/WidgetSelect.vue_vue_type_script_setup_true_lang-DTcBUlhn.js,sha256=vOFXKto-S3slPFcG8nVOUoOm_eeD3KNrv83T6YmgvEM,23832
94
- comfyui_frontend_package/static/assets/WidgetSelect.vue_vue_type_script_setup_true_lang-DTcBUlhn.js.map,sha256=O0pUMJBeI-Hrb5qQZ08_FxJ-uOG686MT4OKop2fKhwg,60837
95
- comfyui_frontend_package/static/assets/WidgetTextarea-DuXhEnsH.js,sha256=AL9DLlL0r76lvcMM9EqVjWb4dQHmVqHtPSrMcaRzEZA,1669
96
- comfyui_frontend_package/static/assets/WidgetTextarea-DuXhEnsH.js.map,sha256=Bs9yBlZBznjjEIf-ph_q6ALH2l9h6JrhwkRgj_3pv2M,2068
97
- comfyui_frontend_package/static/assets/WidgetToggleSwitch-BTeDQHuf.js,sha256=KARpYvCustUyCoTWu9MWAUV9J11fFRDKNwzIIfwLkXE,1011
98
- comfyui_frontend_package/static/assets/WidgetToggleSwitch-BTeDQHuf.js.map,sha256=Ax9FEdxZy_VoYVZNUxsMBJOKQcgQPxPJTwuzhQuqmwY,1208
99
- comfyui_frontend_package/static/assets/WidgetWithControl.vue_vue_type_script_setup_true_lang-DFvQ9Mdf.js,sha256=ixr_PYpErpPpjJkh3ebKaUmydtR8jF3QHViWU_YeKGI,2039
100
- comfyui_frontend_package/static/assets/WidgetWithControl.vue_vue_type_script_setup_true_lang-DFvQ9Mdf.js.map,sha256=m6odh18s70xjkDGy3Xy5_Y1kjYtriEhGZcB4u5Brx3k,2489
101
- comfyui_frontend_package/static/assets/audioService-B43wn81n.js,sha256=sn-QYHEd4JAjEnh04oS9HCvapN1rLQJN8mZNL_KUfA8,1160
102
- comfyui_frontend_package/static/assets/audioService-B43wn81n.js.map,sha256=uLwoUYNp6Pfrhw0MLoOZPZ3kNsAPRgaQVjlzvPFn4tk,3603
103
- comfyui_frontend_package/static/assets/audioUtils-iqnmct8N.js,sha256=bTH4MmuNZUlqBS14nWhlGyzcKwtXZkX8T87OLTxjWFE,742
104
- comfyui_frontend_package/static/assets/audioUtils-iqnmct8N.js.map,sha256=oRZJIQsnrPgDae7es6EbvuOnQyWSQRRj-bE2_EbJNdg,2390
79
+ comfyui_frontend_package/static/assets/WidgetInputNumber.vue_vue_type_script_setup_true_lang-DPaOKLY2.js,sha256=xBoQFyfrdpyf260pQvKU4cjX--7IrTUVD1aX8a7nq8E,7155
80
+ comfyui_frontend_package/static/assets/WidgetInputNumber.vue_vue_type_script_setup_true_lang-DPaOKLY2.js.map,sha256=zyHLuE7EQV7SCtPid3NmTczqKH3aYQdJp4dpPUCPuHU,15616
81
+ comfyui_frontend_package/static/assets/WidgetInputText-LR89p-m1.js,sha256=p1gphSlbl8JCo_RPh8C7BvJk57-1IrAv70uz00LpAWc,1135
82
+ comfyui_frontend_package/static/assets/WidgetInputText-LR89p-m1.js.map,sha256=MPheyCSnz10W-6X8f-gogdJpSiDfJ5uxnQZKqp_iVY8,1437
83
+ comfyui_frontend_package/static/assets/WidgetLayoutField.vue_vue_type_script_setup_true_lang-C5dBI8au.js,sha256=pqZ6ejO_jL6xDqT-mwrmvgmlPs8VIexLfNwYf0ff9-E,1058
84
+ comfyui_frontend_package/static/assets/WidgetLayoutField.vue_vue_type_script_setup_true_lang-C5dBI8au.js.map,sha256=500Attw6catW2U4z4kFzDE6JYpalOILPB4KhEd9sEtU,1475
85
+ comfyui_frontend_package/static/assets/WidgetLegacy-CJpsLPyI.js,sha256=du0Y8DmD2wzoG9suZ6BoW6RYwxPcxlSEAEgyNOI6Ijg,325
86
+ comfyui_frontend_package/static/assets/WidgetLegacy-CJpsLPyI.js.map,sha256=PXfZIg9R-5uxnuL2aBc_QX0_m0ShPCcbYLPFoiz75S0,105
87
+ comfyui_frontend_package/static/assets/WidgetMarkdown-DrH35WSE.js,sha256=tb7Rq9J_0iDRx3nqGq82SepotDn23rOH78UloAVI3kM,1629
88
+ comfyui_frontend_package/static/assets/WidgetMarkdown-DrH35WSE.js.map,sha256=KnIlQMvwqja5_hrYOaHuN46Ws8FDsPQdr2HLZcyMUa4,2527
89
+ comfyui_frontend_package/static/assets/WidgetRecordAudio-DL4kMpXw.js,sha256=Eok6ajbV1wF-AKLrw4GBpT_rMIX41coUcIk7PK93TO4,9991
90
+ comfyui_frontend_package/static/assets/WidgetRecordAudio-DL4kMpXw.js.map,sha256=Dzqsx9spgJSrWd2q2gkks6TKawDfppBVIyNMV86ZDSM,27166
91
+ comfyui_frontend_package/static/assets/WidgetSelect-Bk32AcQe.js,sha256=9L7xvPx4kz38TQ9OW3_LS6U__xPK6IbXZoBtJSXCk6Q,682
92
+ comfyui_frontend_package/static/assets/WidgetSelect-Bk32AcQe.js.map,sha256=fZYxYbgLZ8bD4ynoz4bvOIPrv6e1M16TGdhQFZ8jgMs,105
93
+ comfyui_frontend_package/static/assets/WidgetSelect.vue_vue_type_script_setup_true_lang-CHjOuVyH.js,sha256=XMpbRrRp9dlqDzha0CDN_NPoy_jlloRJLiN8jjkWk4s,23832
94
+ comfyui_frontend_package/static/assets/WidgetSelect.vue_vue_type_script_setup_true_lang-CHjOuVyH.js.map,sha256=sze3RoTsH2gIXb2eaYSS2Ph2XJgyRcvARKjjQQ03rFo,60837
95
+ comfyui_frontend_package/static/assets/WidgetTextarea-orpeeVx4.js,sha256=fUHRiilaCd0jdBx67EKCjQOejZV-YAqqQPYzdbsspCM,1669
96
+ comfyui_frontend_package/static/assets/WidgetTextarea-orpeeVx4.js.map,sha256=9WbA3Yx_ZSqBx4koc1ZeyxFfp7mc9TR3KZgNZtzLoys,2068
97
+ comfyui_frontend_package/static/assets/WidgetToggleSwitch-CSN313_V.js,sha256=FM70y2bn9BSpTviPrwOLEcj9a0lo0x7JeIsMwcBg2Yo,1011
98
+ comfyui_frontend_package/static/assets/WidgetToggleSwitch-CSN313_V.js.map,sha256=X5Cpw0a84cQgn38QsDDNntV73Z6cwcL963PqlHovqNY,1208
99
+ comfyui_frontend_package/static/assets/WidgetWithControl.vue_vue_type_script_setup_true_lang-CU_cmbAA.js,sha256=5JMvYeH3YjsFDZjovE6s4-9wMxo22G1kiGKTGQLWECk,2039
100
+ comfyui_frontend_package/static/assets/WidgetWithControl.vue_vue_type_script_setup_true_lang-CU_cmbAA.js.map,sha256=SSha5nZbE-NV6HT25KrnFewDWzFd44hc2muaHhLkoHk,2489
101
+ comfyui_frontend_package/static/assets/audioService-DvqSt3rU.js,sha256=ia36Pj9Ee_3ytZ6NLBCGBUuZ3Nw9vwK82dQ1_mQcAGg,1160
102
+ comfyui_frontend_package/static/assets/audioService-DvqSt3rU.js.map,sha256=Nah_TWJ63Ocx5nVb6sMoElN3tHOyvxiazapgO6rjAss,3603
103
+ comfyui_frontend_package/static/assets/audioUtils-bxVioEE3.js,sha256=H4ghDiWXTUztyVsIhtDmrkj1j89YY0o4Mcrle_yWlkU,742
104
+ comfyui_frontend_package/static/assets/audioUtils-bxVioEE3.js.map,sha256=ctR8dlHcuDbkMpRhH5IpWJU3V3s6HhF17voQ77pmlPg,2390
105
105
  comfyui_frontend_package/static/assets/commands-6AC3IXLT.js,sha256=4NG9IMmjqEapCt9jcnLWfdf46DbjtoJHFXfHFO0bavo,11387
106
106
  comfyui_frontend_package/static/assets/commands-6AC3IXLT.js.map,sha256=Lu63zBz56jyAJeiDlDTf9ZiRANL1pgmGtvjpbwyy3Ao,101
107
107
  comfyui_frontend_package/static/assets/commands-BOR8s-i4.js,sha256=sI0hkICC6OOOcO_Zf-0Sbxev7avvJh0nO0C7iBOkpHI,10067
@@ -123,16 +123,16 @@ comfyui_frontend_package/static/assets/commands-DvnbRO1W.js.map,sha256=MAyLxi_Sn
123
123
  comfyui_frontend_package/static/assets/commands-yoD6TSFD.js,sha256=mwnM0PPGnwPPhyvStkW7bHYGM4k28nZ6hAuu6C-GQ9M,79
124
124
  comfyui_frontend_package/static/assets/commands-yoD6TSFD.js.map,sha256=bVUSVeNULRfYhbKROAYq82h5io6KwXNgnZ99RHxUy_I,101
125
125
  comfyui_frontend_package/static/assets/favicon.ico,sha256=QAjDSuu0HAF2bwFSJzutzgDW4p4W0Xbf7IB6UNJlAeE,15406
126
- comfyui_frontend_package/static/assets/index-B2FA5n0E.js,sha256=RAbdMLGc93UDYNvaEoBkkhFBV0qIsgd5gX0MSsQ_mlw,95738
127
- comfyui_frontend_package/static/assets/index-B2FA5n0E.js.map,sha256=IPPhK8EDAcIHcXZ-pGe7eCzpthQF8PR_lf7TFaEeKAY,357735
128
- comfyui_frontend_package/static/assets/index-BbFKUlCt.js,sha256=cStcc38wdOByEy-9YIIwuYE0A972WBAFJOuNtXLQzZA,236
129
- comfyui_frontend_package/static/assets/index-BbFKUlCt.js.map,sha256=bvud3Abd4Ka7qbMtHBFbtaR1b79ECeEPVJrOczjK9gk,533
126
+ comfyui_frontend_package/static/assets/index-BODInyrK.js,sha256=hTzpAZHAu3e-7euXAA8jvizagZG1zI80APdFtnC6VPw,1727418
127
+ comfyui_frontend_package/static/assets/index-BODInyrK.js.map,sha256=6Jj1oMxHQMfzmnpCuYoUUd34Y9pKPYHLdoWJX0Z4jj0,4582050
128
+ comfyui_frontend_package/static/assets/index-CyS0uSKu.js,sha256=L-mCqNaJV00dWZQ3ax79AUzC6h4XVxyqv3_U_TwDLpw,236
129
+ comfyui_frontend_package/static/assets/index-CyS0uSKu.js.map,sha256=HNkJQmIsQD3BB2iuZqE-U9fraqLt-bTNwZ2sK34I5z4,533
130
130
  comfyui_frontend_package/static/assets/index-DD6YW1q7.css,sha256=-m1E_MVRx_tenNRpPb-b9TCbOHuPPYKLB_ye7I1wYqA,263459
131
- comfyui_frontend_package/static/assets/index-FoJ8Eu4a.js,sha256=m8jfqPl4tFOrPPP4dD6Yh717iO5ZBUQsa4JRCEftxA0,1726354
132
- comfyui_frontend_package/static/assets/index-FoJ8Eu4a.js.map,sha256=ns5f8Z-RDDmZJztI2assSoRXxFbWkNbJFDHlanOn_dM,4582050
133
131
  comfyui_frontend_package/static/assets/index-TGN-mpPg.css,sha256=VffYHpUMVtUWgQRMQcxtY3xxZgU1kR1XlkP7nJZH0j0,2660
134
- comfyui_frontend_package/static/assets/keybindingService-D_lPZZ7u.js,sha256=8sl0LhvuxILbdQnBGyNcL8396LGsfYjB7A08nzv_nVE,4205
135
- comfyui_frontend_package/static/assets/keybindingService-D_lPZZ7u.js.map,sha256=TDBdn0PPsXZ-dl2EtPc81DcoNfzJUIjeZUXxm32w9HM,12812
132
+ comfyui_frontend_package/static/assets/index-fwtcK193.js,sha256=gFfPShGDoi_tzMNdP-KfseivYKighh5np_AXqFxZB_8,95738
133
+ comfyui_frontend_package/static/assets/index-fwtcK193.js.map,sha256=PnlS-hYgYUe8CDhrWvt-ITOJugDbVcKSw05zMkQ-Ibc,357735
134
+ comfyui_frontend_package/static/assets/keybindingService-DR_nPGKY.js,sha256=a5IzGUM2vyttbs0aA7LNdtnt-7tpgLR7vr9B50ukyNE,4205
135
+ comfyui_frontend_package/static/assets/keybindingService-DR_nPGKY.js.map,sha256=O4m3YYbJCGGfhYPLUf18KjqM0_gW2tNlZQQqMYlOkHs,12812
136
136
  comfyui_frontend_package/static/assets/main-CSpqxbNq.js,sha256=pdS1Cu2SEw0Bt7ed1bjSCFdnY5-rHKNo3Bu3Oyd8FxI,80507
137
137
  comfyui_frontend_package/static/assets/main-CSpqxbNq.js.map,sha256=AtHcYYVbPTK4QP748akNRW2948Pe7NW5oCG0ywdxtGc,109
138
138
  comfyui_frontend_package/static/assets/main-ClRoaGL0.js,sha256=48HIT2g2OQHpW4dj67q9CabdPskPIPkZXjyg5d0B_R0,73951
@@ -301,7 +301,7 @@ comfyui_frontend_package/static/scripts/ui/components/buttonGroup.js,sha256=6ZVm
301
301
  comfyui_frontend_package/static/scripts/ui/components/popup.js,sha256=y1-oK-20jBR1VSJXs8Ixh3S8JWEUholtqktzxbDMl1M,233
302
302
  comfyui_frontend_package/static/scripts/ui/components/splitButton.js,sha256=US9_pvJOdz7QHhbVg8dPtd5wQyXG6ETclLkUEqGK2pw,263
303
303
  comfyui_frontend_package/static/scripts/ui/menu/index.js,sha256=Bch1Yovm1EhsMiQ7nlpehTqlBhCn6UOUyMRt1xNtgwE,225
304
- comfyui_frontend_package-1.37.1.dist-info/METADATA,sha256=mT_UN4ckpGFuxiYuDAdIOArO8Ze9p3qAxy5Ty1H2Hsc,117
305
- comfyui_frontend_package-1.37.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
306
- comfyui_frontend_package-1.37.1.dist-info/top_level.txt,sha256=2FGjtLSxNQ0NhUuSr83vn7H3tfvPeYc1yCW2qGjGx7g,25
307
- comfyui_frontend_package-1.37.1.dist-info/RECORD,,
304
+ comfyui_frontend_package-1.37.2.dist-info/METADATA,sha256=blXY7QOoETEhj583BlGE9OPL5nCEY-ZZ0DVRZ3WOrfI,117
305
+ comfyui_frontend_package-1.37.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
306
+ comfyui_frontend_package-1.37.2.dist-info/top_level.txt,sha256=2FGjtLSxNQ0NhUuSr83vn7H3tfvPeYc1yCW2qGjGx7g,25
307
+ comfyui_frontend_package-1.37.2.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- {"version":3,"file":"Load3D-Cu5zG2Cw.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- var G=Object.defineProperty;var a=(x,d)=>G(x,"name",{value:d,configurable:!0});import{t as s,ds as R,a2 as Q,l as V,a1 as X,V as J,dt as Z,c as z,_ as P,d as U,z as ee,b as te}from"./index-FoJ8Eu4a.js";import{_ as se,a as oe}from"./GraphView-Cx4wYzNo.js";import{bq as I,E as j,j as ne,d as f,r as L,c as m,e,z as p,br as n,k as _,q as F,u as t,F as re,y as ae,s as M,l as le,A as E,v as ie,w as O,d8 as ce}from"./vendor-other-BxP-0xn6.js";import{v as de,p as ue}from"./vendor-primevue-rR0TB_Js.js";import{u as pe}from"./vendor-vue-BEnTqVKr.js";import"./vendor-xterm-CWYFmgbN.js";import"./vendor-three-BsnVSA6y.js";import"./vendor-tiptap-4vvRsqpM.js";import"./UserAvatar.vue_vue_type_script_setup_true_lang-Bxj7Xy09.js";import"./index-BbFKUlCt.js";import"./LazyImage.vue_vue_type_script_setup_true_lang-C3ynRbso.js";import"./keybindingService-D_lPZZ7u.js";import"./serverConfigStore-Rd8VWEbH.js";import"./WidgetInputNumber.vue_vue_type_script_setup_true_lang-Bmxd6b-H.js";import"./widgetPropFilter-CygYoMQt.js";import"./WidgetLayoutField.vue_vue_type_script_setup_true_lang-CbjST6rI.js";import"./WidgetWithControl.vue_vue_type_script_setup_true_lang-DFvQ9Mdf.js";const fe=I({__name:"CloudBadge",props:{displayMode:{default:"full"},reverseOrder:{type:Boolean,default:!1},noPadding:{type:Boolean,default:!1},backgroundColor:{default:"var(--comfy-menu-bg)"}},setup(x){const d=j(()=>({label:s("g.beta"),text:"Comfy Cloud"}));return(b,v)=>(f(),ne(se,{badge:d.value,"display-mode":b.displayMode,"reverse-order":b.reverseOrder,"no-padding":b.noPadding,"background-color":b.backgroundColor},null,8,["badge","display-mode","reverse-order","no-padding","background-color"]))}}),me=""+new URL("images/cloud-subscription.webm",import.meta.url).href,xe=20,be={class:"flex flex-col gap-8"},ge={class:"flex justify-center"},_e={class:"flex items-center gap-2"},ve={key:0,class:"bg-primary-background text-white text-[11px] px-1 py-0.5 rounded-full flex items-center font-bold"},ye={class:"flex flex-col xl:flex-row items-stretch gap-6"},he={class:"p-8 pb-0 flex flex-col gap-8"},we={class:"flex flex-row items-center gap-2 justify-between"},ke={class:"font-inter text-base font-bold leading-normal text-base-foreground"},$e={key:0,class:"rounded-full bg-base-foreground px-1.5 text-[11px] font-bold uppercase text-base-background h-5 tracking-tight flex items-center"},Ce={class:"flex flex-col"},Pe={class:"flex flex-col gap-2"},Se={class:"flex flex-row items-baseline gap-2"},Le={class:"font-inter text-[32px] font-semibold leading-normal text-base-foreground"},Ee={class:"font-inter text-xl leading-normal text-base-foreground"},Te={class:"flex items-center gap-2"},Ae={class:"text-sm text-muted-foreground"},Be={class:"flex flex-col gap-4 pb-0 flex-1"},De={class:"flex flex-row items-center justify-between"},Re={class:"font-inter text-sm font-normal leading-normal text-foreground"},Ie={class:"flex flex-row items-center gap-1"},je={class:"font-inter text-sm font-bold leading-normal text-base-foreground"},Ne={class:"flex flex-row items-center justify-between"},ze={class:"text-sm font-normal text-foreground"},Fe={class:"font-inter text-sm font-bold leading-normal text-base-foreground"},Me={class:"flex flex-row items-center justify-between"},Oe={class:"text-sm font-normal text-foreground"},Ve={class:"flex flex-row items-center justify-between"},Ue={class:"text-sm font-normal text-foreground"},qe={class:"flex flex-row items-center justify-between"},Ye={class:"text-sm font-normal text-foreground"},He={key:0,class:"pi pi-check text-xs text-success-foreground"},Ke={key:1,class:"pi pi-times text-xs text-foreground"},We={class:"flex flex-col gap-2"},Ge={class:"flex flex-row items-start justify-between"},Qe={class:"flex flex-col gap-2"},Xe={class:"text-sm font-normal text-foreground"},Je={class:"flex flex-row items-center gap-2 group pt-2"},Ze={class:"font-inter text-sm font-bold leading-normal text-base-foreground"},et={class:"flex flex-col p-8"},tt={class:"flex flex-col gap-2"},st={class:"text-sm text-base-foreground"},ot={href:"https://cloud.comfy.org/?template=video_wan2_2_14B_fun_camera",target:"_blank",rel:"noopener noreferrer",class:"text-sm text-azure-600 hover:text-azure-400 underline"},nt=I({__name:"PricingTable",setup(x){const d=[{label:s("subscription.yearly"),value:"yearly"},{label:s("subscription.monthly"),value:"monthly"}],b=[{id:"STANDARD",key:"standard",name:s("subscription.tiers.standard.name"),pricing:R.standard,maxDuration:s("subscription.maxDuration.standard"),customLoRAs:!1,isPopular:!1},{id:"CREATOR",key:"creator",name:s("subscription.tiers.creator.name"),pricing:R.creator,maxDuration:s("subscription.maxDuration.creator"),customLoRAs:!0,isPopular:!0},{id:"PRO",key:"pro",name:s("subscription.tiers.pro.name"),pricing:R.pro,maxDuration:s("subscription.maxDuration.pro"),customLoRAs:!0,isPopular:!1}],{n:v}=pe(),{getAuthHeader:N}=Q(),{isActiveSubscription:T,subscriptionTier:S,isYearlySubscription:A}=V(),{accessBillingPortal:w,reportError:y}=X(),{wrapWithErrorHandlingAsync:k}=J(),g=L(!1),B=L(null),h=L(),u=L("yearly"),$=j(()=>S.value?Z[S.value]:null),C=a(r=>{if(!$.value)return!1;const i=u.value==="yearly";return $.value===r&&A.value===i},"isCurrentPlan"),D=a(r=>{h.value.toggle(r)},"togglePopover"),l=a(r=>{if(C(r.key))return s("subscription.currentPlan");const i=u.value==="yearly"?s("subscription.tierNameYearly",{name:r.name}):r.name;return T.value?s("subscription.changeTo",{plan:i}):s("subscription.subscribeTo",{plan:i})},"getButtonLabel"),c=a(r=>C(r.key)?"secondary":r.key==="creator"?"primary":"secondary","getButtonSeverity"),q=a(r=>r.key==="creator"?"font-inter text-sm font-bold leading-normal text-base-background":"font-inter text-sm font-bold leading-normal text-primary-foreground","getButtonTextClass"),Y=a(r=>r.pricing[u.value],"getPrice"),H=a(r=>r.pricing.yearly*12,"getAnnualTotal"),K=a(r=>r.pricing.credits*(u.value==="yearly"?12:1),"getCreditsDisplay"),W=k(async r=>{},y);return(r,i)=>(f(),m("div",be,[e("div",ge,[p(n(de),{modelValue:u.value,"onUpdate:modelValue":i[0]||(i[0]=o=>u.value=o),options:d,"option-label":"label","option-value":"value","allow-empty":!1,unstyled:"",pt:{root:{class:"flex gap-1 bg-secondary-background rounded-lg p-1.5"},pcToggleButton:{root:a(({context:o})=>({class:["w-36 h-8 rounded-md transition-colors cursor-pointer border-none outline-none ring-0 text-sm font-medium flex items-center justify-center",o.active?"bg-base-foreground text-base-background":"bg-transparent text-muted-foreground hover:bg-secondary-background-hover"]}),"root"),label:{class:"flex items-center gap-2 "}}}},{option:_(({option:o})=>[e("div",_e,[e("span",null,t(o.label),1),o.value==="yearly"?(f(),m("div",ve," -20% ")):F("",!0)])]),_:1},8,["modelValue","pt"])]),e("div",ye,[(f(),m(re,null,ae(b,o=>e("div",{key:o.id,class:M(n(z)("flex-1 flex flex-col rounded-2xl border border-border-default bg-base-background shadow-[0_0_12px_rgba(0,0,0,0.1)]",o.isPopular?"border-muted-foreground":""))},[e("div",he,[e("div",we,[e("span",ke,t(o.name),1),o.isPopular?(f(),m("div",$e,t(n(s)("subscription.mostPopular")),1)):F("",!0)]),e("div",Ce,[e("div",Pe,[e("div",Se,[e("span",Le,[le(e("span",{class:"line-through text-2xl text-muted-foreground"}," $"+t(o.pricing.monthly),513),[[ie,u.value==="yearly"]]),E(" $"+t(Y(o)),1)]),e("span",Ee,t(n(s)("subscription.usdPerMonth")),1)]),e("div",Te,[e("span",Ae,t(u.value==="yearly"?n(s)("subscription.billedYearly",{total:`$${H(o)}`}):n(s)("subscription.billedMonthly")),1)])])]),e("div",Be,[e("div",De,[e("span",Re,t(u.value==="yearly"?n(s)("subscription.yearlyCreditsLabel"):n(s)("subscription.monthlyCreditsLabel")),1),e("div",Ie,[i[1]||(i[1]=e("i",{class:"icon-[lucide--component] text-amber-400 text-sm"},null,-1)),e("span",je,t(n(v)(K(o))),1)])]),e("div",Ne,[e("span",ze,t(n(s)("subscription.maxDurationLabel")),1),e("span",Fe,t(o.maxDuration),1)]),e("div",Me,[e("span",Oe,t(n(s)("subscription.gpuLabel")),1),i[2]||(i[2]=e("i",{class:"pi pi-check text-xs text-success-foreground"},null,-1))]),e("div",Ve,[e("span",Ue,t(n(s)("subscription.addCreditsLabel")),1),i[3]||(i[3]=e("i",{class:"pi pi-check text-xs text-success-foreground"},null,-1))]),e("div",qe,[e("span",Ye,t(n(s)("subscription.customLoRAsLabel")),1),o.customLoRAs?(f(),m("i",He)):(f(),m("i",Ke))]),e("div",We,[e("div",Ge,[e("div",Qe,[e("span",Xe,t(n(s)("subscription.videoEstimateLabel")),1),e("div",Je,[i[4]||(i[4]=e("i",{class:"pi pi-question-circle text-xs text-muted-foreground group-hover:text-base-foreground"},null,-1)),e("span",{class:"text-sm font-normal text-muted-foreground cursor-pointer group-hover:text-base-foreground",onClick:D},t(n(s)("subscription.videoEstimateHelp")),1)])]),e("span",Ze," ~"+t(n(v)(o.pricing.videoEstimate)),1)])])])]),e("div",et,[p(P,{variant:c(o),disabled:g.value||C(o.key),loading:B.value===o.key,class:M(n(z)("h-10 w-full",q(o),o.key==="creator"?"bg-base-foreground border-transparent hover:bg-inverted-background-hover":"bg-secondary-background border-transparent hover:bg-secondary-background-hover focus:bg-secondary-background-selected")),onClick:a(()=>n(W)(o.key),"onClick")},{default:_(()=>[E(t(l(o)),1)]),_:2},1032,["variant","disabled","loading","class","onClick"])])],2)),64))]),p(n(ue),{ref_key:"popover",ref:h,"append-to":"body","auto-z-index":!0,"base-z-index":1e3,dismissable:!0,"close-on-escape":!0,unstyled:"",pt:{root:{class:"rounded-lg border border-interface-stroke bg-interface-panel-surface shadow-lg p-4 max-w-xs"}}},{default:_(()=>[e("div",tt,[e("p",st,t(n(s)("subscription.videoEstimateExplanation")),1),e("a",ot,t(n(s)("subscription.videoEstimateTryTemplate")),1)])]),_:1},512)]))}}),rt={},at={class:"flex flex-col items-start gap-0 self-stretch"},lt={class:"flex items-center gap-2 py-2"},it={class:"text-sm text-text-primary"},ct={class:"flex items-center gap-2 py-2"},dt={class:"text-sm text-text-primary"};function ut(x,d){return f(),m("div",at,[e("div",lt,[d[0]||(d[0]=e("i",{class:"pi pi-check text-xs text-text-primary"},null,-1)),e("span",it,t(x.$t("subscription.benefits.benefit1")),1)]),e("div",ct,[d[1]||(d[1]=e("i",{class:"pi pi-check text-xs text-text-primary"},null,-1)),e("span",dt,t(x.$t("subscription.benefits.benefit2")),1)])])}a(ut,"_sfc_render");const pt=U(rt,[["render",ut]]),ft={key:0,class:"relative flex flex-col p-4 pt-8 md:p-16 !overflow-y-auto h-full gap-8"},mt={class:"text-center"},xt={class:"text-xl lg:text-2xl text-muted-foreground m-0"},bt={class:"flex flex-col items-center gap-2"},gt={class:"text-sm text-text-secondary m-0"},_t={class:"flex items-center gap-1.5"},vt={class:"text-sm text-text-secondary"},yt={key:1,class:"legacy-dialog relative grid h-full grid-cols-5"},ht={class:"col-span-3 flex flex-col justify-between p-8"},wt={class:"flex flex-col gap-6"},kt={class:"inline-flex items-center gap-2"},$t={class:"text-sm text-text-primary"},Ct={class:"flex items-baseline gap-2"},Pt={class:"text-4xl font-bold"},St={class:"text-xl"},Lt={class:"flex flex-col pt-8"},Et=3e3,Tt=3,At=I({__name:"SubscriptionRequiredDialogContent",props:{onClose:{type:Function}},emits:["close"],setup(x,{emit:d}){const b=x,v=d,{fetchStatus:N,isActiveSubscription:T}=V(),S=new Intl.NumberFormat(navigator.language||"en-US",{style:"currency",currency:"USD",minimumFractionDigits:0,maximumFractionDigits:0}).format(xe),A=ee(),w=j(()=>te);let y=null,k=0;const g=a(()=>{y&&(clearInterval(y),y=null)},"stopPolling"),B=a(()=>{g(),k=0;const l=a(async()=>{try{await N(),k++,k>=Tt&&g()}catch(c){console.error("[SubscriptionDialog] Failed to poll subscription status",c),g()}},"poll");l(),y=window.setInterval(()=>{l()},Et)},"startPolling"),h=a(()=>{w.value&&B()},"handleWindowFocus");O(w,l=>{l?window.addEventListener("focus",h):(window.removeEventListener("focus",h),g())},{immediate:!0}),O(()=>T.value,l=>{l&&w.value&&v("close",!0)});const u=a(()=>{v("close",!0)},"handleSubscribed"),$=a(()=>{g(),b.onClose()},"handleClose"),C=a(async()=>{await A.execute("Comfy.ContactSupport")},"handleContactUs"),D=a(()=>{window.open("https://www.comfy.org/cloud/enterprise","_blank")},"handleViewEnterprise");return ce(()=>{g(),window.removeEventListener("focus",h)}),(l,c)=>w.value?(f(),m("div",ft,[p(P,{size:"icon",variant:"muted-textonly",class:"rounded-full shrink-0 text-text-secondary hover:bg-white/10 absolute right-2.5 top-2.5","aria-label":l.$t("g.close"),onClick:$},{default:_(()=>c[0]||(c[0]=[e("i",{class:"pi pi-times text-xl"},null,-1)])),_:1},8,["aria-label"]),e("div",mt,[e("h2",xt,t(l.$t("subscription.description")),1)]),p(nt,{class:"flex-1"}),e("div",bt,[e("p",gt,t(l.$t("subscription.haveQuestions")),1),e("div",_t,[p(P,{variant:"muted-textonly",class:"h-6 p-1 text-sm text-text-secondary hover:text-base-foreground",onClick:C},{default:_(()=>[E(t(l.$t("subscription.contactUs"))+" ",1),c[1]||(c[1]=e("i",{class:"pi pi-comments"},null,-1))]),_:1}),e("span",vt,t(l.$t("g.or")),1),p(P,{variant:"muted-textonly",class:"h-6 p-1 text-sm text-text-secondary hover:text-base-foreground",onClick:D},{default:_(()=>[E(t(l.$t("subscription.viewEnterprise"))+" ",1),c[2]||(c[2]=e("i",{class:"pi pi-external-link"},null,-1))]),_:1})])])])):(f(),m("div",yt,[p(P,{size:"icon",variant:"muted-textonly",class:"rounded-full absolute top-2.5 right-2.5 z-10 h-8 w-8 p-0 text-white hover:bg-white/20","aria-label":l.$t("g.close"),onClick:$},{default:_(()=>c[3]||(c[3]=[e("i",{class:"pi pi-times"},null,-1)])),_:1},8,["aria-label"]),c[4]||(c[4]=e("div",{class:"relative col-span-2 flex items-center justify-center overflow-hidden rounded-sm"},[e("video",{autoplay:"",loop:"",muted:"",playsinline:"",class:"h-full min-w-[125%] object-cover p-0",style:{"margin-left":"-20%"}},[e("source",{src:me,type:"video/webm"})])],-1)),e("div",ht,[e("div",null,[e("div",wt,[e("div",kt,[e("div",$t,t(l.$t("subscription.required.title")),1),p(fe,{"reverse-order":"","no-padding":"","background-color":"var(--p-dialog-background)","use-subscription":""})]),e("div",Ct,[e("span",Pt,t(n(S)),1),e("span",St,t(l.$t("subscription.perMonth")),1)])]),p(pt,{class:"mt-6 text-muted"})]),e("div",Lt,[p(oe,{class:"py-2 px-4 rounded-lg",pt:{root:{style:"background: var(--color-accent-blue, #0B8CE9);"},label:{class:"font-inter font-[700] text-sm"}},onSubscribed:u})])])]))}}),Qt=U(At,[["__scopeId","data-v-44074ee0"]]);export{Qt as default};
2
- //# sourceMappingURL=SubscriptionRequiredDialogContent-CY-BY6v5.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SubscriptionRequiredDialogContent-CY-BY6v5.js","sources":["../../src/components/topbar/CloudBadge.vue","../../../../../../../assets/images/cloud-subscription.webm","../../src/config/subscriptionPricesConfig.ts","../../src/platform/cloud/subscription/components/PricingTable.vue","../../src/platform/cloud/subscription/components/SubscriptionBenefits.vue","../../src/platform/cloud/subscription/components/SubscriptionRequiredDialogContent.vue"],"sourcesContent":["<template>\n <TopbarBadge\n :badge=\"cloudBadge\"\n :display-mode=\"displayMode\"\n :reverse-order=\"reverseOrder\"\n :no-padding=\"noPadding\"\n :background-color=\"backgroundColor\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nimport { t } from '@/i18n'\nimport type { TopbarBadge as TopbarBadgeType } from '@/types/comfy'\n\nimport TopbarBadge from './TopbarBadge.vue'\n\nwithDefaults(\n defineProps<{\n displayMode?: 'full' | 'compact' | 'icon-only'\n reverseOrder?: boolean\n noPadding?: boolean\n backgroundColor?: string\n }>(),\n {\n displayMode: 'full',\n reverseOrder: false,\n noPadding: false,\n backgroundColor: 'var(--comfy-menu-bg)'\n }\n)\n\nconst cloudBadge = computed<TopbarBadgeType>(() => ({\n label: t('g.beta'),\n text: 'Comfy Cloud'\n}))\n</script>\n","export default \"__VITE_PUBLIC_ASSET__b4a125b1__\"","export const MONTHLY_SUBSCRIPTION_PRICE = 20\n","<template>\n <div class=\"flex flex-col gap-8\">\n <div class=\"flex justify-center\">\n <SelectButton\n v-model=\"currentBillingCycle\"\n :options=\"billingCycleOptions\"\n option-label=\"label\"\n option-value=\"value\"\n :allow-empty=\"false\"\n unstyled\n :pt=\"{\n root: {\n class: 'flex gap-1 bg-secondary-background rounded-lg p-1.5'\n },\n pcToggleButton: {\n root: ({ context }: ToggleButtonPassThroughMethodOptions) => ({\n class: [\n 'w-36 h-8 rounded-md transition-colors cursor-pointer border-none outline-none ring-0 text-sm font-medium flex items-center justify-center',\n context.active\n ? 'bg-base-foreground text-base-background'\n : 'bg-transparent text-muted-foreground hover:bg-secondary-background-hover'\n ]\n }),\n label: { class: 'flex items-center gap-2 ' }\n }\n }\"\n >\n <template #option=\"{ option }\">\n <div class=\"flex items-center gap-2\">\n <span>{{ option.label }}</span>\n <div\n v-if=\"option.value === 'yearly'\"\n class=\"bg-primary-background text-white text-[11px] px-1 py-0.5 rounded-full flex items-center font-bold\"\n >\n -20%\n </div>\n </div>\n </template>\n </SelectButton>\n </div>\n <div class=\"flex flex-col xl:flex-row items-stretch gap-6\">\n <div\n v-for=\"tier in tiers\"\n :key=\"tier.id\"\n :class=\"\n cn(\n 'flex-1 flex flex-col rounded-2xl border border-border-default bg-base-background shadow-[0_0_12px_rgba(0,0,0,0.1)]',\n tier.isPopular ? 'border-muted-foreground' : ''\n )\n \"\n >\n <div class=\"p-8 pb-0 flex flex-col gap-8\">\n <div class=\"flex flex-row items-center gap-2 justify-between\">\n <span\n class=\"font-inter text-base font-bold leading-normal text-base-foreground\"\n >\n {{ tier.name }}\n </span>\n <div\n v-if=\"tier.isPopular\"\n class=\"rounded-full bg-base-foreground px-1.5 text-[11px] font-bold uppercase text-base-background h-5 tracking-tight flex items-center\"\n >\n {{ t('subscription.mostPopular') }}\n </div>\n </div>\n <div class=\"flex flex-col\">\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex flex-row items-baseline gap-2\">\n <span\n class=\"font-inter text-[32px] font-semibold leading-normal text-base-foreground\"\n >\n <span\n v-show=\"currentBillingCycle === 'yearly'\"\n class=\"line-through text-2xl text-muted-foreground\"\n >\n ${{ tier.pricing.monthly }}\n </span>\n ${{ getPrice(tier) }}\n </span>\n <span\n class=\"font-inter text-xl leading-normal text-base-foreground\"\n >\n {{ t('subscription.usdPerMonth') }}\n </span>\n </div>\n <div class=\"flex items-center gap-2\">\n <span class=\"text-sm text-muted-foreground\">\n {{\n currentBillingCycle === 'yearly'\n ? t('subscription.billedYearly', {\n total: `$${getAnnualTotal(tier)}`\n })\n : t('subscription.billedMonthly')\n }}\n </span>\n </div>\n </div>\n </div>\n\n <div class=\"flex flex-col gap-4 pb-0 flex-1\">\n <div class=\"flex flex-row items-center justify-between\">\n <span\n class=\"font-inter text-sm font-normal leading-normal text-foreground\"\n >\n {{\n currentBillingCycle === 'yearly'\n ? t('subscription.yearlyCreditsLabel')\n : t('subscription.monthlyCreditsLabel')\n }}\n </span>\n <div class=\"flex flex-row items-center gap-1\">\n <i class=\"icon-[lucide--component] text-amber-400 text-sm\" />\n <span\n class=\"font-inter text-sm font-bold leading-normal text-base-foreground\"\n >\n {{ n(getCreditsDisplay(tier)) }}\n </span>\n </div>\n </div>\n\n <div class=\"flex flex-row items-center justify-between\">\n <span class=\"text-sm font-normal text-foreground\">\n {{ t('subscription.maxDurationLabel') }}\n </span>\n <span\n class=\"font-inter text-sm font-bold leading-normal text-base-foreground\"\n >\n {{ tier.maxDuration }}\n </span>\n </div>\n\n <div class=\"flex flex-row items-center justify-between\">\n <span class=\"text-sm font-normal text-foreground\">\n {{ t('subscription.gpuLabel') }}\n </span>\n <i class=\"pi pi-check text-xs text-success-foreground\" />\n </div>\n\n <div class=\"flex flex-row items-center justify-between\">\n <span class=\"text-sm font-normal text-foreground\">\n {{ t('subscription.addCreditsLabel') }}\n </span>\n <i class=\"pi pi-check text-xs text-success-foreground\" />\n </div>\n\n <div class=\"flex flex-row items-center justify-between\">\n <span class=\"text-sm font-normal text-foreground\">\n {{ t('subscription.customLoRAsLabel') }}\n </span>\n <i\n v-if=\"tier.customLoRAs\"\n class=\"pi pi-check text-xs text-success-foreground\"\n />\n <i v-else class=\"pi pi-times text-xs text-foreground\" />\n </div>\n\n <div class=\"flex flex-col gap-2\">\n <div class=\"flex flex-row items-start justify-between\">\n <div class=\"flex flex-col gap-2\">\n <span class=\"text-sm font-normal text-foreground\">\n {{ t('subscription.videoEstimateLabel') }}\n </span>\n <div class=\"flex flex-row items-center gap-2 group pt-2\">\n <i\n class=\"pi pi-question-circle text-xs text-muted-foreground group-hover:text-base-foreground\"\n />\n <span\n class=\"text-sm font-normal text-muted-foreground cursor-pointer group-hover:text-base-foreground\"\n @click=\"togglePopover\"\n >\n {{ t('subscription.videoEstimateHelp') }}\n </span>\n </div>\n </div>\n <span\n class=\"font-inter text-sm font-bold leading-normal text-base-foreground\"\n >\n ~{{ n(tier.pricing.videoEstimate) }}\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col p-8\">\n <Button\n :variant=\"getButtonSeverity(tier)\"\n :disabled=\"isLoading || isCurrentPlan(tier.key)\"\n :loading=\"loadingTier === tier.key\"\n :class=\"\n cn(\n 'h-10 w-full',\n getButtonTextClass(tier),\n tier.key === 'creator'\n ? 'bg-base-foreground border-transparent hover:bg-inverted-background-hover'\n : 'bg-secondary-background border-transparent hover:bg-secondary-background-hover focus:bg-secondary-background-selected'\n )\n \"\n @click=\"() => handleSubscribe(tier.key)\"\n >\n {{ getButtonLabel(tier) }}\n </Button>\n </div>\n </div>\n </div>\n\n <!-- Video Estimate Help Popover -->\n <Popover\n ref=\"popover\"\n append-to=\"body\"\n :auto-z-index=\"true\"\n :base-z-index=\"1000\"\n :dismissable=\"true\"\n :close-on-escape=\"true\"\n unstyled\n :pt=\"{\n root: {\n class:\n 'rounded-lg border border-interface-stroke bg-interface-panel-surface shadow-lg p-4 max-w-xs'\n }\n }\"\n >\n <div class=\"flex flex-col gap-2\">\n <p class=\"text-sm text-base-foreground\">\n {{ t('subscription.videoEstimateExplanation') }}\n </p>\n <a\n href=\"https://cloud.comfy.org/?template=video_wan2_2_14B_fun_camera\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"text-sm text-azure-600 hover:text-azure-400 underline\"\n >\n {{ t('subscription.videoEstimateTryTemplate') }}\n </a>\n </div>\n </Popover>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { cn } from '@comfyorg/tailwind-utils'\nimport Popover from 'primevue/popover'\nimport SelectButton from 'primevue/selectbutton'\nimport type { ToggleButtonPassThroughMethodOptions } from 'primevue/togglebutton'\nimport { computed, ref } from 'vue'\nimport { useI18n } from 'vue-i18n'\n\nimport Button from '@/components/ui/button/Button.vue'\nimport { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions'\nimport { useErrorHandling } from '@/composables/useErrorHandling'\nimport { getComfyApiBaseUrl } from '@/config/comfyApi'\nimport { t } from '@/i18n'\nimport { useSubscription } from '@/platform/cloud/subscription/composables/useSubscription'\nimport {\n TIER_PRICING,\n TIER_TO_KEY\n} from '@/platform/cloud/subscription/constants/tierPricing'\nimport type {\n TierKey,\n TierPricing\n} from '@/platform/cloud/subscription/constants/tierPricing'\nimport { isCloud } from '@/platform/distribution/types'\nimport {\n FirebaseAuthStoreError,\n useFirebaseAuthStore\n} from '@/stores/firebaseAuthStore'\nimport type { components } from '@/types/comfyRegistryTypes'\n\ntype SubscriptionTier = components['schemas']['SubscriptionTier']\ntype CheckoutTierKey = Exclude<TierKey, 'founder'>\ntype CheckoutTier = CheckoutTierKey | `${CheckoutTierKey}-yearly`\n\ntype BillingCycle = 'monthly' | 'yearly'\n\nconst getCheckoutTier = (\n tierKey: CheckoutTierKey,\n billingCycle: BillingCycle\n): CheckoutTier => (billingCycle === 'yearly' ? `${tierKey}-yearly` : tierKey)\n\ninterface BillingCycleOption {\n label: string\n value: BillingCycle\n}\n\ninterface PricingTierConfig {\n id: SubscriptionTier\n key: CheckoutTierKey\n name: string\n pricing: TierPricing\n maxDuration: string\n customLoRAs: boolean\n isPopular?: boolean\n}\n\nconst billingCycleOptions: BillingCycleOption[] = [\n { label: t('subscription.yearly'), value: 'yearly' },\n { label: t('subscription.monthly'), value: 'monthly' }\n]\n\nconst tiers: PricingTierConfig[] = [\n {\n id: 'STANDARD',\n key: 'standard',\n name: t('subscription.tiers.standard.name'),\n pricing: TIER_PRICING.standard,\n maxDuration: t('subscription.maxDuration.standard'),\n customLoRAs: false,\n isPopular: false\n },\n {\n id: 'CREATOR',\n key: 'creator',\n name: t('subscription.tiers.creator.name'),\n pricing: TIER_PRICING.creator,\n maxDuration: t('subscription.maxDuration.creator'),\n customLoRAs: true,\n isPopular: true\n },\n {\n id: 'PRO',\n key: 'pro',\n name: t('subscription.tiers.pro.name'),\n pricing: TIER_PRICING.pro,\n maxDuration: t('subscription.maxDuration.pro'),\n customLoRAs: true,\n isPopular: false\n }\n]\n\nconst { n } = useI18n()\nconst { getAuthHeader } = useFirebaseAuthStore()\nconst { isActiveSubscription, subscriptionTier, isYearlySubscription } =\n useSubscription()\nconst { accessBillingPortal, reportError } = useFirebaseAuthActions()\nconst { wrapWithErrorHandlingAsync } = useErrorHandling()\n\nconst isLoading = ref(false)\nconst loadingTier = ref<CheckoutTierKey | null>(null)\nconst popover = ref()\nconst currentBillingCycle = ref<BillingCycle>('yearly')\n\nconst currentTierKey = computed<TierKey | null>(() =>\n subscriptionTier.value ? TIER_TO_KEY[subscriptionTier.value] : null\n)\n\nconst isCurrentPlan = (tierKey: CheckoutTierKey): boolean => {\n if (!currentTierKey.value) return false\n\n const selectedIsYearly = currentBillingCycle.value === 'yearly'\n\n return (\n currentTierKey.value === tierKey &&\n isYearlySubscription.value === selectedIsYearly\n )\n}\n\nconst togglePopover = (event: Event) => {\n popover.value.toggle(event)\n}\n\nconst getButtonLabel = (tier: PricingTierConfig): string => {\n if (isCurrentPlan(tier.key)) return t('subscription.currentPlan')\n\n const planName =\n currentBillingCycle.value === 'yearly'\n ? t('subscription.tierNameYearly', { name: tier.name })\n : tier.name\n\n return isActiveSubscription.value\n ? t('subscription.changeTo', { plan: planName })\n : t('subscription.subscribeTo', { plan: planName })\n}\n\nconst getButtonSeverity = (tier: PricingTierConfig): 'primary' | 'secondary' =>\n isCurrentPlan(tier.key)\n ? 'secondary'\n : tier.key === 'creator'\n ? 'primary'\n : 'secondary'\n\nconst getButtonTextClass = (tier: PricingTierConfig): string =>\n tier.key === 'creator'\n ? 'font-inter text-sm font-bold leading-normal text-base-background'\n : 'font-inter text-sm font-bold leading-normal text-primary-foreground'\n\nconst getPrice = (tier: PricingTierConfig): number =>\n tier.pricing[currentBillingCycle.value]\n\nconst getAnnualTotal = (tier: PricingTierConfig): number =>\n tier.pricing.yearly * 12\n\nconst getCreditsDisplay = (tier: PricingTierConfig): number =>\n tier.pricing.credits * (currentBillingCycle.value === 'yearly' ? 12 : 1)\n\nconst initiateCheckout = async (tierKey: CheckoutTierKey) => {\n const authHeader = await getAuthHeader()\n if (!authHeader) {\n throw new FirebaseAuthStoreError(t('toastMessages.userNotAuthenticated'))\n }\n\n const checkoutTier = getCheckoutTier(tierKey, currentBillingCycle.value)\n const response = await fetch(\n `${getComfyApiBaseUrl()}/customers/cloud-subscription-checkout/${checkoutTier}`,\n {\n method: 'POST',\n headers: { ...authHeader, 'Content-Type': 'application/json' }\n }\n )\n\n if (!response.ok) {\n let errorMessage = 'Failed to initiate checkout'\n try {\n const errorData = await response.json()\n errorMessage = errorData.message || errorMessage\n } catch {\n // If JSON parsing fails, try to get text response or use HTTP status\n try {\n const errorText = await response.text()\n errorMessage =\n errorText || `HTTP ${response.status} ${response.statusText}`\n } catch {\n errorMessage = `HTTP ${response.status} ${response.statusText}`\n }\n }\n\n throw new FirebaseAuthStoreError(\n t('toastMessages.failedToInitiateSubscription', {\n error: errorMessage\n })\n )\n }\n\n return await response.json()\n}\n\nconst handleSubscribe = wrapWithErrorHandlingAsync(\n async (tierKey: CheckoutTierKey) => {\n if (!isCloud || isLoading.value || isCurrentPlan(tierKey)) return\n\n isLoading.value = true\n loadingTier.value = tierKey\n\n try {\n if (isActiveSubscription.value) {\n // Pass the target tier to create a deep link to subscription update confirmation\n const checkoutTier = getCheckoutTier(tierKey, currentBillingCycle.value)\n await accessBillingPortal(checkoutTier)\n } else {\n const response = await initiateCheckout(tierKey)\n if (response.checkout_url) {\n window.open(response.checkout_url, '_blank')\n }\n }\n } finally {\n isLoading.value = false\n loadingTier.value = null\n }\n },\n reportError\n)\n</script>\n","<template>\n <div class=\"flex flex-col items-start gap-0 self-stretch\">\n <div class=\"flex items-center gap-2 py-2\">\n <i class=\"pi pi-check text-xs text-text-primary\" />\n <span class=\"text-sm text-text-primary\">\n {{ $t('subscription.benefits.benefit1') }}\n </span>\n </div>\n\n <div class=\"flex items-center gap-2 py-2\">\n <i class=\"pi pi-check text-xs text-text-primary\" />\n <span class=\"text-sm text-text-primary\">\n {{ $t('subscription.benefits.benefit2') }}\n </span>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\"></script>\n","<template>\n <div\n v-if=\"showCustomPricingTable\"\n class=\"relative flex flex-col p-4 pt-8 md:p-16 !overflow-y-auto h-full gap-8\"\n >\n <Button\n size=\"icon\"\n variant=\"muted-textonly\"\n class=\"rounded-full shrink-0 text-text-secondary hover:bg-white/10 absolute right-2.5 top-2.5\"\n :aria-label=\"$t('g.close')\"\n @click=\"handleClose\"\n >\n <i class=\"pi pi-times text-xl\" />\n </Button>\n <div class=\"text-center\">\n <h2 class=\"text-xl lg:text-2xl text-muted-foreground m-0\">\n {{ $t('subscription.description') }}\n </h2>\n </div>\n\n <PricingTable class=\"flex-1\" />\n\n <!-- Contact and Enterprise Links -->\n <div class=\"flex flex-col items-center gap-2\">\n <p class=\"text-sm text-text-secondary m-0\">\n {{ $t('subscription.haveQuestions') }}\n </p>\n <div class=\"flex items-center gap-1.5\">\n <Button\n variant=\"muted-textonly\"\n class=\"h-6 p-1 text-sm text-text-secondary hover:text-base-foreground\"\n @click=\"handleContactUs\"\n >\n {{ $t('subscription.contactUs') }}\n <i class=\"pi pi-comments\" />\n </Button>\n <span class=\"text-sm text-text-secondary\">{{ $t('g.or') }}</span>\n <Button\n variant=\"muted-textonly\"\n class=\"h-6 p-1 text-sm text-text-secondary hover:text-base-foreground\"\n @click=\"handleViewEnterprise\"\n >\n {{ $t('subscription.viewEnterprise') }}\n <i class=\"pi pi-external-link\" />\n </Button>\n </div>\n </div>\n </div>\n <div v-else class=\"legacy-dialog relative grid h-full grid-cols-5\">\n <!-- Custom close button -->\n <Button\n size=\"icon\"\n variant=\"muted-textonly\"\n class=\"rounded-full absolute top-2.5 right-2.5 z-10 h-8 w-8 p-0 text-white hover:bg-white/20\"\n :aria-label=\"$t('g.close')\"\n @click=\"handleClose\"\n >\n <i class=\"pi pi-times\" />\n </Button>\n\n <div\n class=\"relative col-span-2 flex items-center justify-center overflow-hidden rounded-sm\"\n >\n <video\n autoplay\n loop\n muted\n playsinline\n class=\"h-full min-w-[125%] object-cover p-0\"\n style=\"margin-left: -20%\"\n >\n <source\n src=\"/assets/images/cloud-subscription.webm\"\n type=\"video/webm\"\n />\n </video>\n </div>\n\n <div class=\"col-span-3 flex flex-col justify-between p-8\">\n <div>\n <div class=\"flex flex-col gap-6\">\n <div class=\"inline-flex items-center gap-2\">\n <div class=\"text-sm text-text-primary\">\n {{ $t('subscription.required.title') }}\n </div>\n <CloudBadge\n reverse-order\n no-padding\n background-color=\"var(--p-dialog-background)\"\n use-subscription\n />\n </div>\n\n <div class=\"flex items-baseline gap-2\">\n <span class=\"text-4xl font-bold\">{{ formattedMonthlyPrice }}</span>\n <span class=\"text-xl\">{{ $t('subscription.perMonth') }}</span>\n </div>\n </div>\n\n <SubscriptionBenefits class=\"mt-6 text-muted\" />\n </div>\n\n <div class=\"flex flex-col pt-8\">\n <SubscribeButton\n class=\"py-2 px-4 rounded-lg\"\n :pt=\"{\n root: {\n style: 'background: var(--color-accent-blue, #0B8CE9);'\n },\n label: {\n class: 'font-inter font-[700] text-sm'\n }\n }\"\n @subscribed=\"handleSubscribed\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, watch } from 'vue'\n\nimport CloudBadge from '@/components/topbar/CloudBadge.vue'\nimport Button from '@/components/ui/button/Button.vue'\nimport { MONTHLY_SUBSCRIPTION_PRICE } from '@/config/subscriptionPricesConfig'\nimport PricingTable from '@/platform/cloud/subscription/components/PricingTable.vue'\nimport SubscribeButton from '@/platform/cloud/subscription/components/SubscribeButton.vue'\nimport SubscriptionBenefits from '@/platform/cloud/subscription/components/SubscriptionBenefits.vue'\nimport { useSubscription } from '@/platform/cloud/subscription/composables/useSubscription'\nimport { isCloud } from '@/platform/distribution/types'\nimport { useTelemetry } from '@/platform/telemetry'\nimport { useCommandStore } from '@/stores/commandStore'\n\nconst props = defineProps<{\n onClose: () => void\n}>()\n\nconst emit = defineEmits<{\n close: [subscribed: boolean]\n}>()\n\nconst { fetchStatus, isActiveSubscription } = useSubscription()\n\n// Legacy price for non-tier flow with locale-aware formatting\nconst formattedMonthlyPrice = new Intl.NumberFormat(\n navigator.language || 'en-US',\n {\n style: 'currency',\n currency: 'USD',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0\n }\n).format(MONTHLY_SUBSCRIPTION_PRICE)\nconst commandStore = useCommandStore()\nconst telemetry = useTelemetry()\n\n// Always show custom pricing table for cloud subscriptions\nconst showCustomPricingTable = computed(\n () => isCloud && window.__CONFIG__?.subscription_required\n)\n\nconst POLL_INTERVAL_MS = 3000\nconst MAX_POLL_ATTEMPTS = 3\nlet pollInterval: number | null = null\nlet pollAttempts = 0\n\nconst stopPolling = () => {\n if (pollInterval) {\n clearInterval(pollInterval)\n pollInterval = null\n }\n}\n\nconst startPolling = () => {\n stopPolling()\n pollAttempts = 0\n\n const poll = async () => {\n try {\n await fetchStatus()\n pollAttempts++\n\n if (pollAttempts >= MAX_POLL_ATTEMPTS) {\n stopPolling()\n }\n } catch (error) {\n console.error(\n '[SubscriptionDialog] Failed to poll subscription status',\n error\n )\n stopPolling()\n }\n }\n\n void poll()\n pollInterval = window.setInterval(() => {\n void poll()\n }, POLL_INTERVAL_MS)\n}\n\nconst handleWindowFocus = () => {\n if (showCustomPricingTable.value) {\n startPolling()\n }\n}\n\nwatch(\n showCustomPricingTable,\n (enabled) => {\n if (enabled) {\n window.addEventListener('focus', handleWindowFocus)\n } else {\n window.removeEventListener('focus', handleWindowFocus)\n stopPolling()\n }\n },\n { immediate: true }\n)\n\nwatch(\n () => isActiveSubscription.value,\n (isActive) => {\n if (isActive && showCustomPricingTable.value) {\n emit('close', true)\n }\n }\n)\n\nconst handleSubscribed = () => {\n emit('close', true)\n}\n\nconst handleClose = () => {\n stopPolling()\n props.onClose()\n}\n\nconst handleContactUs = async () => {\n telemetry?.trackHelpResourceClicked({\n resource_type: 'help_feedback',\n is_external: true,\n source: 'subscription'\n })\n await commandStore.execute('Comfy.ContactSupport')\n}\n\nconst handleViewEnterprise = () => {\n telemetry?.trackHelpResourceClicked({\n resource_type: 'docs',\n is_external: true,\n source: 'subscription'\n })\n window.open('https://www.comfy.org/cloud/enterprise', '_blank')\n}\n\nonBeforeUnmount(() => {\n stopPolling()\n window.removeEventListener('focus', handleWindowFocus)\n})\n</script>\n\n<style scoped>\n.legacy-dialog :deep(.bg-comfy-menu-secondary) {\n background-color: transparent;\n}\n\n.legacy-dialog :deep(.p-button) {\n color: white;\n}\n</style>\n"],"names":["cloudBadge","computed","t","_imports_0","MONTHLY_SUBSCRIPTION_PRICE","billingCycleOptions","tiers","TIER_PRICING","n","useI18n","getAuthHeader","useFirebaseAuthStore","isActiveSubscription","subscriptionTier","isYearlySubscription","useSubscription","accessBillingPortal","reportError","useFirebaseAuthActions","wrapWithErrorHandlingAsync","useErrorHandling","isLoading","ref","loadingTier","popover","currentBillingCycle","currentTierKey","TIER_TO_KEY","isCurrentPlan","__name","tierKey","selectedIsYearly","togglePopover","event","getButtonLabel","tier","planName","getButtonSeverity","getButtonTextClass","getPrice","getAnnualTotal","getCreditsDisplay","handleSubscribe","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_openBlock","_createElementBlock","_createElementVNode","_toDisplayString","_ctx","POLL_INTERVAL_MS","MAX_POLL_ATTEMPTS","props","__props","emit","__emit","fetchStatus","formattedMonthlyPrice","commandStore","useCommandStore","showCustomPricingTable","isCloud","pollInterval","pollAttempts","stopPolling","startPolling","poll","error","handleWindowFocus","watch","enabled","isActive","handleSubscribed","handleClose","handleContactUs","handleViewEnterprise","onBeforeUnmount"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{_ as o}from"./WidgetInputNumber.vue_vue_type_script_setup_true_lang-Bmxd6b-H.js";import"./vendor-primevue-rR0TB_Js.js";import"./vendor-other-BxP-0xn6.js";import"./index-FoJ8Eu4a.js";import"./vendor-vue-BEnTqVKr.js";import"./vendor-xterm-CWYFmgbN.js";import"./vendor-three-BsnVSA6y.js";import"./vendor-tiptap-4vvRsqpM.js";import"./widgetPropFilter-CygYoMQt.js";import"./index-BbFKUlCt.js";import"./WidgetLayoutField.vue_vue_type_script_setup_true_lang-CbjST6rI.js";import"./WidgetWithControl.vue_vue_type_script_setup_true_lang-DFvQ9Mdf.js";export{o as default};
2
- //# sourceMappingURL=WidgetInputNumber-BTFa3T0H.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WidgetInputNumber-BTFa3T0H.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"WidgetLegacy-B8P9bOsC.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- import{_ as o}from"./WidgetSelect.vue_vue_type_script_setup_true_lang-DTcBUlhn.js";import"./index-FoJ8Eu4a.js";import"./vendor-primevue-rR0TB_Js.js";import"./vendor-other-BxP-0xn6.js";import"./vendor-vue-BEnTqVKr.js";import"./vendor-xterm-CWYFmgbN.js";import"./vendor-three-BsnVSA6y.js";import"./vendor-tiptap-4vvRsqpM.js";import"./widgetPropFilter-CygYoMQt.js";import"./index-BbFKUlCt.js";import"./WidgetLayoutField.vue_vue_type_script_setup_true_lang-CbjST6rI.js";import"./LazyImage.vue_vue_type_script_setup_true_lang-C3ynRbso.js";import"./WidgetWithControl.vue_vue_type_script_setup_true_lang-DFvQ9Mdf.js";export{o as default};
2
- //# sourceMappingURL=WidgetSelect-VznDfSeg.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WidgetSelect-VznDfSeg.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}