@modern-kit/react
Version:
30 lines (26 loc) • 1.03 kB
JavaScript
;
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