| @@ -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() | |||
| } | |||
| }, { | |||