UNPKG

@storm-stack/hooks

Version:

A collection of React hooks used by Storm Software in various client libraries and applications.

30 lines (29 loc) 1.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useHover = void 0; var _react = require("react"); const useHover = () => { const [hovering, setHovering] = (0, _react.useState)(false); const previousNode = (0, _react.useRef)(null); const handleMouseEnter = (0, _react.useCallback)(() => { setHovering(true); }, []); const handleMouseLeave = (0, _react.useCallback)(() => { setHovering(false); }, []); const customRef = (0, _react.useCallback)(node => { if (previousNode.current?.nodeType === Node.ELEMENT_NODE) { previousNode.current.removeEventListener("mouseenter", handleMouseEnter); previousNode.current.removeEventListener("mouseleave", handleMouseLeave); } if (node?.nodeType === Node.ELEMENT_NODE) { node.addEventListener("mouseenter", handleMouseEnter); node.addEventListener("mouseleave", handleMouseLeave); } previousNode.current = node; }, [handleMouseEnter, handleMouseLeave]); return [customRef, hovering]; }; exports.useHover = useHover;