Procházet zdrojové kódy

feat: set workflow zoom range for shortcut (#7563)

Yi Xiao před 8 měsíci
rodič
revize
a71fc18530
1 změnil soubory, kde provedl 17 přidání a 4 odebrání
  1. 17 4
      web/app/components/workflow/hooks/use-shortcuts.ts

+ 17 - 4
web/app/components/workflow/hooks/use-shortcuts.ts

@@ -37,12 +37,25 @@ export const useShortcuts = (): void => {
   const { handleLayout } = useWorkflowOrganize()
 
   const {
-    zoomIn,
-    zoomOut,
     zoomTo,
+    getZoom,
     fitView,
   } = useReactFlow()
 
+  // Zoom out to a minimum of 0.5 for shortcut
+  const constrainedZoomOut = () => {
+    const currentZoom = getZoom()
+    const newZoom = Math.max(currentZoom - 0.1, 0.5)
+    zoomTo(newZoom)
+  }
+
+  // Zoom in to a maximum of 1 for shortcut
+  const constrainedZoomIn = () => {
+    const currentZoom = getZoom()
+    const newZoom = Math.min(currentZoom + 0.1, 1)
+    zoomTo(newZoom)
+  }
+
   const shouldHandleShortcut = useCallback((e: KeyboardEvent) => {
     const { showFeaturesPanel } = workflowStore.getState()
     return !showFeaturesPanel && !isEventTargetInputArea(e.target as HTMLElement)
@@ -165,7 +178,7 @@ export const useShortcuts = (): void => {
   useKeyPress(`${getKeyboardKeyCodeBySystem('ctrl')}.dash`, (e) => {
     if (shouldHandleShortcut(e)) {
       e.preventDefault()
-      zoomOut()
+      constrainedZoomOut()
       handleSyncWorkflowDraft()
     }
   }, {
@@ -176,7 +189,7 @@ export const useShortcuts = (): void => {
   useKeyPress(`${getKeyboardKeyCodeBySystem('ctrl')}.equalsign`, (e) => {
     if (shouldHandleShortcut(e)) {
       e.preventDefault()
-      zoomIn()
+      constrainedZoomIn()
       handleSyncWorkflowDraft()
     }
   }, {