55 lines
1.1 KiB
TypeScript
55 lines
1.1 KiB
TypeScript
import { useHotkeys } from 'react-hotkeys-hook'
|
|
|
|
interface KeyboardShortcutsProps {
|
|
onToggleLeftSidebar: () => void
|
|
onToggleRightSidebar: () => void
|
|
}
|
|
|
|
export function useKeyboardShortcuts(props: KeyboardShortcutsProps) {
|
|
const { onToggleLeftSidebar, onToggleRightSidebar } = props
|
|
|
|
// Toggle sidebars
|
|
useHotkeys('tab', (e) => {
|
|
e.preventDefault()
|
|
onToggleLeftSidebar()
|
|
})
|
|
|
|
useHotkeys('i', (e) => {
|
|
e.preventDefault()
|
|
onToggleRightSidebar()
|
|
})
|
|
|
|
// Navigation shortcuts
|
|
useHotkeys('g', () => {
|
|
// Go to grid view
|
|
console.log('Grid view')
|
|
})
|
|
|
|
useHotkeys('e', () => {
|
|
// Go to loupe view
|
|
console.log('Loupe view')
|
|
})
|
|
|
|
// Rating shortcuts
|
|
useHotkeys('1,2,3,4,5', (_e, handler) => {
|
|
const rating = parseInt(handler.keys![0])
|
|
console.log('Set rating:', rating)
|
|
})
|
|
|
|
useHotkeys('0', () => {
|
|
console.log('Remove rating')
|
|
})
|
|
|
|
// Flag shortcuts
|
|
useHotkeys('p', () => {
|
|
console.log('Pick photo')
|
|
})
|
|
|
|
useHotkeys('x', () => {
|
|
console.log('Reject photo')
|
|
})
|
|
|
|
useHotkeys('u', () => {
|
|
console.log('Unflag photo')
|
|
})
|
|
} |