mirror of
https://github.com/supabase/supabase.git
synced 2026-10-17 23:29:08 +03:00
60 lines
955 B
TypeScript
60 lines
955 B
TypeScript
import { useEffect, useState } from 'react'
|
|
import useConfData from './use-conf-data'
|
|
|
|
export const VALID_KEYS = [
|
|
'a',
|
|
'b',
|
|
'c',
|
|
'd',
|
|
'e',
|
|
'f',
|
|
'g',
|
|
'h',
|
|
'i',
|
|
'j',
|
|
'k',
|
|
'l',
|
|
'm',
|
|
'n',
|
|
'o',
|
|
'p',
|
|
'q',
|
|
'r',
|
|
's',
|
|
't',
|
|
'u',
|
|
'v',
|
|
'w',
|
|
'x',
|
|
'y',
|
|
'z',
|
|
]
|
|
|
|
const useLwGame = (disabled?: boolean) => {
|
|
const [isGameMode, setIsGameMode] = useState(false)
|
|
|
|
function onKeyDown(event: KeyboardEvent) {
|
|
if (disabled) return
|
|
|
|
if (event.key === 'Escape') {
|
|
setIsGameMode(false)
|
|
}
|
|
|
|
const newKey = event.key.toLocaleLowerCase()
|
|
|
|
if (!(event.metaKey || event.ctrlKey) && VALID_KEYS.includes(newKey)) {
|
|
if (!isGameMode) setIsGameMode(true)
|
|
}
|
|
}
|
|
|
|
useEffect(() => {
|
|
if (!disabled) window.addEventListener('keydown', onKeyDown)
|
|
|
|
return () => window.removeEventListener('keydown', onKeyDown)
|
|
}, [disabled])
|
|
|
|
return { isGameMode, setIsGameMode }
|
|
}
|
|
|
|
export default useLwGame
|