@rooks/use-mouse
Version:
A React Hooks package for mouse
56 lines (53 loc) • 1.38 kB
JavaScript
import { useState, useEffect } from 'react';
const initialMouseState = {
x: null,
y: null,
screenX: null,
screenY: null,
pageX: null,
pageY: null,
clientX: null,
clientY: null,
movementX: null,
movementY: null,
offsetX: null,
offsetY: null
};
function getMousePositionFromEvent(e) {
const { screenX, screenY, movementX, movementY, pageX, pageY, clientX, clientY, offsetX, offsetY } = e;
return {
screenX,
screenY,
movementX,
movementY,
pageX,
pageY,
clientX,
clientY,
offsetX,
offsetY,
x: screenX,
y: screenY
};
}
/**
* useMouse hook
*
* Retrieves current mouse position and information about the position like
* screenX, pageX, clientX, movementX, offsetX
*/
function useMouse() {
const [mousePosition, setMousePostition] = useState(initialMouseState);
function updateMousePosition(e) {
setMousePostition(getMousePositionFromEvent(e));
}
useEffect(() => {
document.addEventListener("mousemove", updateMousePosition);
return () => {
document.removeEventListener("mousemove", updateMousePosition);
};
}, []);
return mousePosition;
}
export default useMouse;
//# sourceMappingURL=index.esm.js.map