import { useEffect } from 'react' import type { FileItem } from '@/lib/api' export interface UseKeyboardShortcutsParams { selectedFile: FileItem | null isSpecialTab: (file: FileItem | null) => boolean isAsyncImportProcessing: boolean isCurrentTabEditing: boolean hasCurrentTabUnsavedChanges: boolean handleSave: () => Promise toggleTabEdit: (path: string) => void } export function useKeyboardShortcuts({ selectedFile, isSpecialTab, isAsyncImportProcessing, isCurrentTabEditing, hasCurrentTabUnsavedChanges, handleSave, toggleTabEdit }: UseKeyboardShortcutsParams): void { useEffect(() => { const handleBeforeUnload = (e: BeforeUnloadEvent) => { if (isCurrentTabEditing && hasCurrentTabUnsavedChanges) { e.preventDefault() e.returnValue = '' } } window.addEventListener('beforeunload', handleBeforeUnload) return () => window.removeEventListener('beforeunload', handleBeforeUnload) }, [isCurrentTabEditing, hasCurrentTabUnsavedChanges]) useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { if (isSpecialTab(selectedFile) || isAsyncImportProcessing) return if (e.ctrlKey && e.key === 's') { e.preventDefault() if (isCurrentTabEditing) { handleSave() } } else if (e.ctrlKey && e.key === 'e') { e.preventDefault() if (selectedFile) { toggleTabEdit(selectedFile.path) } } } window.addEventListener('keydown', handleKeyDown) return () => window.removeEventListener('keydown', handleKeyDown) }, [selectedFile, isSpecialTab, isAsyncImportProcessing, isCurrentTabEditing, handleSave, toggleTabEdit]) }