comfyui-frontend-package 1.38.2__py3-none-any.whl → 1.38.3__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 (131) hide show
  1. comfyui_frontend_package/static/assets/{AboutPanel-C7253TdA.js → AboutPanel-CYH8kZrG.js} +2 -2
  2. comfyui_frontend_package/static/assets/{AboutPanel-C7253TdA.js.map → AboutPanel-CYH8kZrG.js.map} +1 -1
  3. comfyui_frontend_package/static/assets/{AudioPreviewPlayer-DgSsFFU7.js → AudioPreviewPlayer-BwJepJEw.js} +2 -2
  4. comfyui_frontend_package/static/assets/{AudioPreviewPlayer-DgSsFFU7.js.map → AudioPreviewPlayer-BwJepJEw.js.map} +1 -1
  5. comfyui_frontend_package/static/assets/{ComfyQueueButton-DriR7JtM.js → ComfyQueueButton-BM8zaTn_.js} +2 -2
  6. comfyui_frontend_package/static/assets/{ComfyQueueButton-DriR7JtM.js.map → ComfyQueueButton-BM8zaTn_.js.map} +1 -1
  7. comfyui_frontend_package/static/assets/{ExtensionPanel-yJP3r-dq.js → ExtensionPanel-CkIkopXr.js} +2 -2
  8. comfyui_frontend_package/static/assets/{ExtensionPanel-yJP3r-dq.js.map → ExtensionPanel-CkIkopXr.js.map} +1 -1
  9. comfyui_frontend_package/static/assets/{GraphView-D-tZ3xO5.css → GraphView-CoiT3fdb.css} +1 -1
  10. comfyui_frontend_package/static/assets/GraphView-Djp0ICHX.js +15 -0
  11. comfyui_frontend_package/static/assets/GraphView-Djp0ICHX.js.map +1 -0
  12. comfyui_frontend_package/static/assets/{KeybindingPanel-f7VKBCyl.js → KeybindingPanel-5iNg_eid.js} +2 -2
  13. comfyui_frontend_package/static/assets/{KeybindingPanel-f7VKBCyl.js.map → KeybindingPanel-5iNg_eid.js.map} +1 -1
  14. comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-Bwob1r0X.js +2 -0
  15. comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-Bwob1r0X.js.map +1 -0
  16. comfyui_frontend_package/static/assets/{LegacyCreditsPanel-e57J4OZv.js → LegacyCreditsPanel-D28HHk-A.js} +2 -2
  17. comfyui_frontend_package/static/assets/{LegacyCreditsPanel-e57J4OZv.js.map → LegacyCreditsPanel-D28HHk-A.js.map} +1 -1
  18. comfyui_frontend_package/static/assets/{Load3D-DYW1gw8I.js → Load3D-CPNYDT4-.js} +2 -2
  19. comfyui_frontend_package/static/assets/Load3D-CPNYDT4-.js.map +1 -0
  20. comfyui_frontend_package/static/assets/{Load3D.vue_vue_type_script_setup_true_lang-BLcsvL5E.js → Load3D.vue_vue_type_script_setup_true_lang-KEzORqB0.js} +2 -2
  21. comfyui_frontend_package/static/assets/{Load3D.vue_vue_type_script_setup_true_lang-BLcsvL5E.js.map → Load3D.vue_vue_type_script_setup_true_lang-KEzORqB0.js.map} +1 -1
  22. comfyui_frontend_package/static/assets/{Media3DTop-D77j8ukJ.js → Media3DTop-CQp4nFvB.js} +2 -2
  23. comfyui_frontend_package/static/assets/{Media3DTop-D77j8ukJ.js.map → Media3DTop-CQp4nFvB.js.map} +1 -1
  24. comfyui_frontend_package/static/assets/{ServerConfigPanel-CQPgIsZk.js → ServerConfigPanel-B3WCmowi.js} +2 -2
  25. comfyui_frontend_package/static/assets/{ServerConfigPanel-CQPgIsZk.js.map → ServerConfigPanel-B3WCmowi.js.map} +1 -1
  26. comfyui_frontend_package/static/assets/{SubscriptionRequiredDialogContent-DtxMOWxy.js → SubscriptionRequiredDialogContent-JgqOjXs3.js} +2 -2
  27. comfyui_frontend_package/static/assets/{SubscriptionRequiredDialogContent-DtxMOWxy.js.map → SubscriptionRequiredDialogContent-JgqOjXs3.js.map} +1 -1
  28. comfyui_frontend_package/static/assets/{UserPanel-BPwKKP_j.js → UserPanel-B5k84B9y.js} +2 -2
  29. comfyui_frontend_package/static/assets/{UserPanel-BPwKKP_j.js.map → UserPanel-B5k84B9y.js.map} +1 -1
  30. comfyui_frontend_package/static/assets/{UserSelectView-DNaXeKx4.js → UserSelectView-R_nCWiDS.js} +2 -2
  31. comfyui_frontend_package/static/assets/{UserSelectView-DNaXeKx4.js.map → UserSelectView-R_nCWiDS.js.map} +1 -1
  32. comfyui_frontend_package/static/assets/{ValueControlPopover-kd7h8GFO.js → ValueControlPopover-BqA-EaFY.js} +2 -2
  33. comfyui_frontend_package/static/assets/{ValueControlPopover-kd7h8GFO.js.map → ValueControlPopover-BqA-EaFY.js.map} +1 -1
  34. comfyui_frontend_package/static/assets/{WidgetAudioUI-B-Ra7X5I.js → WidgetAudioUI-Bu3u9PBZ.js} +2 -2
  35. comfyui_frontend_package/static/assets/{WidgetAudioUI-B-Ra7X5I.js.map → WidgetAudioUI-Bu3u9PBZ.js.map} +1 -1
  36. comfyui_frontend_package/static/assets/{WidgetButton-BQWWeE_x.js → WidgetButton-CS0lZIN_.js} +2 -2
  37. comfyui_frontend_package/static/assets/{WidgetButton-BQWWeE_x.js.map → WidgetButton-CS0lZIN_.js.map} +1 -1
  38. comfyui_frontend_package/static/assets/{WidgetColorPicker-4E2rnL8u.js → WidgetColorPicker-CQ_vqexP.js} +2 -2
  39. comfyui_frontend_package/static/assets/{WidgetColorPicker-4E2rnL8u.js.map → WidgetColorPicker-CQ_vqexP.js.map} +1 -1
  40. comfyui_frontend_package/static/assets/{WidgetGalleria-DaEjYhLq.js → WidgetGalleria-CE2__qNK.js} +2 -2
  41. comfyui_frontend_package/static/assets/{WidgetGalleria-DaEjYhLq.js.map → WidgetGalleria-CE2__qNK.js.map} +1 -1
  42. comfyui_frontend_package/static/assets/WidgetInputNumber-CR_vNT3l.js +2 -0
  43. comfyui_frontend_package/static/assets/WidgetInputNumber-CR_vNT3l.js.map +1 -0
  44. comfyui_frontend_package/static/assets/{WidgetInputNumber.vue_vue_type_script_setup_true_lang-CdvBpGed.js → WidgetInputNumber.vue_vue_type_script_setup_true_lang-rPX1TIkC.js} +2 -2
  45. comfyui_frontend_package/static/assets/{WidgetInputNumber.vue_vue_type_script_setup_true_lang-CdvBpGed.js.map → WidgetInputNumber.vue_vue_type_script_setup_true_lang-rPX1TIkC.js.map} +1 -1
  46. comfyui_frontend_package/static/assets/{WidgetInputText-B2YoBI4Y.js → WidgetInputText-NnOJku4t.js} +2 -2
  47. comfyui_frontend_package/static/assets/{WidgetInputText-B2YoBI4Y.js.map → WidgetInputText-NnOJku4t.js.map} +1 -1
  48. comfyui_frontend_package/static/assets/{WidgetLayoutField.vue_vue_type_script_setup_true_lang-CYDaxuge.js → WidgetLayoutField.vue_vue_type_script_setup_true_lang-BrNsu13j.js} +2 -2
  49. comfyui_frontend_package/static/assets/{WidgetLayoutField.vue_vue_type_script_setup_true_lang-CYDaxuge.js.map → WidgetLayoutField.vue_vue_type_script_setup_true_lang-BrNsu13j.js.map} +1 -1
  50. comfyui_frontend_package/static/assets/{WidgetLegacy-DgBI3-l2.js → WidgetLegacy-3d5GSSgo.js} +2 -2
  51. comfyui_frontend_package/static/assets/WidgetLegacy-3d5GSSgo.js.map +1 -0
  52. comfyui_frontend_package/static/assets/{WidgetMarkdown-Bqcf7Vpy.js → WidgetMarkdown-BTfwNVeV.js} +2 -2
  53. comfyui_frontend_package/static/assets/{WidgetMarkdown-Bqcf7Vpy.js.map → WidgetMarkdown-BTfwNVeV.js.map} +1 -1
  54. comfyui_frontend_package/static/assets/WidgetRecordAudio-X2n565MP.js +2 -0
  55. comfyui_frontend_package/static/assets/WidgetRecordAudio-X2n565MP.js.map +1 -0
  56. comfyui_frontend_package/static/assets/WidgetSelect-DsU3dEFm.js +2 -0
  57. comfyui_frontend_package/static/assets/WidgetSelect-DsU3dEFm.js.map +1 -0
  58. comfyui_frontend_package/static/assets/{WidgetSelect.vue_vue_type_script_setup_true_lang-Ua67RWUI.js → WidgetSelect.vue_vue_type_script_setup_true_lang-DLMXofNs.js} +2 -2
  59. comfyui_frontend_package/static/assets/{WidgetSelect.vue_vue_type_script_setup_true_lang-Ua67RWUI.js.map → WidgetSelect.vue_vue_type_script_setup_true_lang-DLMXofNs.js.map} +1 -1
  60. comfyui_frontend_package/static/assets/{WidgetTextarea-syfN9Olh.js → WidgetTextarea-BguNaUH3.js} +2 -2
  61. comfyui_frontend_package/static/assets/{WidgetTextarea-syfN9Olh.js.map → WidgetTextarea-BguNaUH3.js.map} +1 -1
  62. comfyui_frontend_package/static/assets/{WidgetToggleSwitch-C2c4CfAT.js → WidgetToggleSwitch-Cnenb1g4.js} +2 -2
  63. comfyui_frontend_package/static/assets/{WidgetToggleSwitch-C2c4CfAT.js.map → WidgetToggleSwitch-Cnenb1g4.js.map} +1 -1
  64. comfyui_frontend_package/static/assets/{WidgetWithControl.vue_vue_type_script_setup_true_lang-B5RYQ41H.js → WidgetWithControl.vue_vue_type_script_setup_true_lang-CWBg5k0x.js} +3 -3
  65. comfyui_frontend_package/static/assets/{WidgetWithControl.vue_vue_type_script_setup_true_lang-B5RYQ41H.js.map → WidgetWithControl.vue_vue_type_script_setup_true_lang-CWBg5k0x.js.map} +1 -1
  66. comfyui_frontend_package/static/assets/{audioService-CnSU5S1Z.js → audioService-C_4pv8R5.js} +2 -2
  67. comfyui_frontend_package/static/assets/{audioService-CnSU5S1Z.js.map → audioService-C_4pv8R5.js.map} +1 -1
  68. comfyui_frontend_package/static/assets/{audioUtils-BZ8b3tiu.js → audioUtils-CYVbzDGB.js} +2 -2
  69. comfyui_frontend_package/static/assets/{audioUtils-BZ8b3tiu.js.map → audioUtils-CYVbzDGB.js.map} +1 -1
  70. comfyui_frontend_package/static/assets/{index-BBvP0bLh.js → index-BST1SetX.js} +2 -2
  71. comfyui_frontend_package/static/assets/{index-BBvP0bLh.js.map → index-BST1SetX.js.map} +1 -1
  72. comfyui_frontend_package/static/assets/index-DOAA7WkP.css +1 -0
  73. comfyui_frontend_package/static/assets/{index-C5dKoXkW.js → index-DwjwpNvK.js} +2 -2
  74. comfyui_frontend_package/static/assets/index-DwjwpNvK.js.map +1 -0
  75. comfyui_frontend_package/static/assets/{index-Bc79VbnU.js → index-U7jagKl8.js} +22 -22
  76. comfyui_frontend_package/static/assets/index-U7jagKl8.js.map +1 -0
  77. comfyui_frontend_package/static/assets/{keybindingService-DOwK-S5D.js → keybindingService-6A6hKCpd.js} +2 -2
  78. comfyui_frontend_package/static/assets/{keybindingService-DOwK-S5D.js.map → keybindingService-6A6hKCpd.js.map} +1 -1
  79. comfyui_frontend_package/static/assets/{main-9V_ekXTj.js → main-7u-fkFqV.js} +4 -4
  80. comfyui_frontend_package/static/assets/main-7u-fkFqV.js.map +1 -0
  81. comfyui_frontend_package/static/assets/{main-Mk83jtey.js → main-BrRR7na1.js} +4 -4
  82. comfyui_frontend_package/static/assets/main-BrRR7na1.js.map +1 -0
  83. comfyui_frontend_package/static/assets/{main-QxfzWHY3.js → main-Btwx4xDf.js} +5 -5
  84. comfyui_frontend_package/static/assets/main-Btwx4xDf.js.map +1 -0
  85. comfyui_frontend_package/static/assets/{main-D8WRsxlG.js → main-CU-38qC-.js} +3 -3
  86. comfyui_frontend_package/static/assets/main-CU-38qC-.js.map +1 -0
  87. comfyui_frontend_package/static/assets/{main-DdPAQm8u.js → main-CZbK9-kR.js} +4 -4
  88. comfyui_frontend_package/static/assets/main-CZbK9-kR.js.map +1 -0
  89. comfyui_frontend_package/static/assets/{main-IIi2nOrM.js → main-Cv05dk1q.js} +4 -4
  90. comfyui_frontend_package/static/assets/main-Cv05dk1q.js.map +1 -0
  91. comfyui_frontend_package/static/assets/{main-Be2ivsXL.js → main-DVNhdlF2.js} +4 -6
  92. comfyui_frontend_package/static/assets/main-DVNhdlF2.js.map +1 -0
  93. comfyui_frontend_package/static/assets/{main-DnlhxsrE.js → main-DckcRPaY.js} +3 -3
  94. comfyui_frontend_package/static/assets/main-DckcRPaY.js.map +1 -0
  95. comfyui_frontend_package/static/assets/{main-B992pnxN.js → main-DeynLPZA.js} +4 -4
  96. comfyui_frontend_package/static/assets/main-DeynLPZA.js.map +1 -0
  97. comfyui_frontend_package/static/assets/{main-AFY0Q5Cd.js → main-DtCc3tTY.js} +4 -4
  98. comfyui_frontend_package/static/assets/main-DtCc3tTY.js.map +1 -0
  99. comfyui_frontend_package/static/assets/{main-QbQAnNpJ.js → main-apejL0E_.js} +4 -4
  100. comfyui_frontend_package/static/assets/main-apejL0E_.js.map +1 -0
  101. comfyui_frontend_package/static/index.html +1 -1
  102. {comfyui_frontend_package-1.38.2.dist-info → comfyui_frontend_package-1.38.3.dist-info}/METADATA +1 -1
  103. {comfyui_frontend_package-1.38.2.dist-info → comfyui_frontend_package-1.38.3.dist-info}/RECORD +105 -105
  104. comfyui_frontend_package/static/assets/GraphView-Dwrm8D3J.js +0 -15
  105. comfyui_frontend_package/static/assets/GraphView-Dwrm8D3J.js.map +0 -1
  106. comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-CX9YtPlM.js +0 -2
  107. comfyui_frontend_package/static/assets/LazyImage.vue_vue_type_script_setup_true_lang-CX9YtPlM.js.map +0 -1
  108. comfyui_frontend_package/static/assets/Load3D-DYW1gw8I.js.map +0 -1
  109. comfyui_frontend_package/static/assets/WidgetInputNumber-u4JzBngV.js +0 -2
  110. comfyui_frontend_package/static/assets/WidgetInputNumber-u4JzBngV.js.map +0 -1
  111. comfyui_frontend_package/static/assets/WidgetLegacy-DgBI3-l2.js.map +0 -1
  112. comfyui_frontend_package/static/assets/WidgetRecordAudio-hHbaGdj1.js +0 -2
  113. comfyui_frontend_package/static/assets/WidgetRecordAudio-hHbaGdj1.js.map +0 -1
  114. comfyui_frontend_package/static/assets/WidgetSelect-Cv4W8ECC.js +0 -2
  115. comfyui_frontend_package/static/assets/WidgetSelect-Cv4W8ECC.js.map +0 -1
  116. comfyui_frontend_package/static/assets/index-Bc79VbnU.js.map +0 -1
  117. comfyui_frontend_package/static/assets/index-C5dKoXkW.js.map +0 -1
  118. comfyui_frontend_package/static/assets/index-gxCJ3H4T.css +0 -1
  119. comfyui_frontend_package/static/assets/main-9V_ekXTj.js.map +0 -1
  120. comfyui_frontend_package/static/assets/main-AFY0Q5Cd.js.map +0 -1
  121. comfyui_frontend_package/static/assets/main-B992pnxN.js.map +0 -1
  122. comfyui_frontend_package/static/assets/main-Be2ivsXL.js.map +0 -1
  123. comfyui_frontend_package/static/assets/main-D8WRsxlG.js.map +0 -1
  124. comfyui_frontend_package/static/assets/main-DdPAQm8u.js.map +0 -1
  125. comfyui_frontend_package/static/assets/main-DnlhxsrE.js.map +0 -1
  126. comfyui_frontend_package/static/assets/main-IIi2nOrM.js.map +0 -1
  127. comfyui_frontend_package/static/assets/main-Mk83jtey.js.map +0 -1
  128. comfyui_frontend_package/static/assets/main-QbQAnNpJ.js.map +0 -1
  129. comfyui_frontend_package/static/assets/main-QxfzWHY3.js.map +0 -1
  130. {comfyui_frontend_package-1.38.2.dist-info → comfyui_frontend_package-1.38.3.dist-info}/WHEEL +0 -0
  131. {comfyui_frontend_package-1.38.2.dist-info → comfyui_frontend_package-1.38.3.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{bB as k,A as C,e as I,u as K,cQ as i,cR as S,r as h}from"./index-Bc79VbnU.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-DOwK-S5D.js.map
1
+ var p=Object.defineProperty;var a=(t,c)=>p(t,"name",{value:c,configurable:!0});import{bB as k,A as C,e as I,u as K,cQ as i,cR as S,r as h}from"./index-U7jagKl8.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-6A6hKCpd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keybindingService-DOwK-S5D.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-6A6hKCpd.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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"}