UNPKG

@modern-kit/react

Version:
30 lines (26 loc) 1.03 kB
'use strict'; var React = require('react'); var utils = require('@modern-kit/utils'); var hooksUseEventListener = require('../useEventListener/index.cjs'); var hooksUsePreservedCallback = require('../usePreservedCallback/index.cjs'); require('../useIsomorphicLayoutEffect/index.cjs'); function useHover({ onEnter = utils.noop, onLeave = utils.noop } = {}) { const [isHovered, setIsHovered] = React.useState(false); const targetRef = React.useRef(null); const preservedEnterAction = hooksUsePreservedCallback.usePreservedCallback((event) => { setIsHovered(true); onEnter(event); }); const preservedLeaveAction = hooksUsePreservedCallback.usePreservedCallback((event) => { setIsHovered(false); onLeave(event); }); hooksUseEventListener.useEventListener(targetRef, "mouseenter", preservedEnterAction); hooksUseEventListener.useEventListener(targetRef, "mouseleave", preservedLeaveAction); return { ref: targetRef, isHovered }; } exports.useHover = useHover; //# sourceMappingURL=index.cjs.map