@thibault.sh/hooks
Version:
A comprehensive collection of React hooks for browser storage, UI interactions, and more
1 lines • 1.98 kB
Source Map (JSON)
{"version":3,"sources":["../src/hooks/useHover.ts"],"names":["useHover","_ref","isHovered","setIsHovered","useState","ref","useRef","useEffect","element","handleMouseEnter","handleMouseLeave"],"mappings":"8CAOO,IAAMA,CAAmCC,CAAAA,CAAAA,EAA+D,CAC7G,GAAM,CAACC,EAAWC,CAAY,CAAA,CAAIC,SAAS,CAAK,CAAA,CAAA,CAC1CC,CAAMC,CAAAA,MAAAA,CAAU,IAAI,CAE1B,CAAA,OAAAC,UAAU,IAAM,CACd,IAAMC,CAAUP,CAAAA,CAAAA,CAAAA,EAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAM,UAAWI,CAAI,CAAA,OAAA,CACrC,GAAI,CAACG,CAAAA,CAAS,OAEd,IAAMC,CAAAA,CAAmB,IAAMN,CAAAA,CAAa,EAAI,CAC1CO,CAAAA,CAAAA,CAAmB,IAAMP,CAAAA,CAAa,EAAK,CAEjD,CAAA,OAAAK,CAAQ,CAAA,gBAAA,CAAiB,aAAcC,CAAgB,CAAA,CACvDD,EAAQ,gBAAiB,CAAA,YAAA,CAAcE,CAAgB,CAEhD,CAAA,IAAM,CACXF,CAAAA,CAAQ,oBAAoB,YAAcC,CAAAA,CAAgB,EAC1DD,CAAQ,CAAA,mBAAA,CAAoB,aAAcE,CAAgB,EAC5D,CACF,CAAA,CAAG,EAAE,CAAA,CAEE,CAAEL,CAAwBJ,EAAAA,CAAAA,CAAMC,CAAS,CAClD","file":"useHover.mjs","sourcesContent":["import { useState, useRef, useEffect, RefObject } from \"react\";\n\n/**\n * Hook that detects hover state on an element\n * @param ref - (optional) React ref object for the element to monitor\n * @returns Tuple containing ref to attach to element and boolean indicating hover state\n */\nexport const useHover = <T extends HTMLElement>(_ref?: RefObject<T | null> | null): [RefObject<T>, boolean] => {\n const [isHovered, setIsHovered] = useState(false);\n const ref = useRef<T>(null);\n\n useEffect(() => {\n const element = _ref?.current || ref.current;\n if (!element) return;\n\n const handleMouseEnter = () => setIsHovered(true);\n const handleMouseLeave = () => setIsHovered(false);\n\n element.addEventListener(\"mouseenter\", handleMouseEnter);\n element.addEventListener(\"mouseleave\", handleMouseLeave);\n\n return () => {\n element.removeEventListener(\"mouseenter\", handleMouseEnter);\n element.removeEventListener(\"mouseleave\", handleMouseLeave);\n };\n }, []);\n\n return [(ref as RefObject<T>) || _ref, isHovered];\n};\n"]}