@thibault.sh/hooks
Version:
A comprehensive collection of React hooks for browser storage, UI interactions, and more
1 lines • 1.78 kB
Source Map (JSON)
{"version":3,"sources":["../src/hooks/useKeyPress.ts"],"names":["useKeyPress","targetKey","isPressed","setIsPressed","useState","useEffect","handleKeyDown","event","handleKeyUp"],"mappings":"uCAOO,SAASA,CAAAA,CAAYC,CAA4B,CAAA,CACtD,GAAM,CAACC,CAAWC,CAAAA,CAAY,EAAIC,QAAS,CAAA,CAAA,CAAK,CAEhD,CAAA,OAAAC,SAAU,CAAA,IAAM,CACd,IAAMC,EAAiBC,CAAyB,EAAA,CAC1CA,CAAM,CAAA,GAAA,GAAQN,GAChBE,CAAa,CAAA,CAAA,CAAI,EAErB,CAAA,CAEMK,EAAeD,CAAyB,EAAA,CACxCA,CAAM,CAAA,GAAA,GAAQN,CAChBE,EAAAA,CAAAA,CAAa,CAAK,CAAA,EAEtB,EAEA,OAAO,MAAA,CAAA,gBAAA,CAAiB,SAAWG,CAAAA,CAAa,CAChD,CAAA,MAAA,CAAO,gBAAiB,CAAA,OAAA,CAASE,CAAW,CAErC,CAAA,IAAM,CACX,MAAA,CAAO,mBAAoB,CAAA,SAAA,CAAWF,CAAa,CAAA,CACnD,OAAO,mBAAoB,CAAA,OAAA,CAASE,CAAW,EACjD,CACF,CAAG,CAAA,CAACP,CAAS,CAAC,EAEPC,CACT","file":"useKeyPress.mjs","sourcesContent":["import { useEffect, useState } from \"react\";\n\n/**\n * Hook that detects when a specific key is pressed\n * @param targetKey - The key to detect (e.g., \"Enter\", \"Escape\", \"a\")\n * @returns boolean indicating if the key is currently pressed\n */\nexport function useKeyPress(targetKey: string): boolean {\n const [isPressed, setIsPressed] = useState(false);\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === targetKey) {\n setIsPressed(true);\n }\n };\n\n const handleKeyUp = (event: KeyboardEvent) => {\n if (event.key === targetKey) {\n setIsPressed(false);\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n window.addEventListener(\"keyup\", handleKeyUp);\n\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n window.removeEventListener(\"keyup\", handleKeyUp);\n };\n }, [targetKey]);\n\n return isPressed;\n}\n"]}