UNPKG

@rooks/use-mouse

Version:

A React Hooks package for mouse

56 lines (53 loc) 1.38 kB
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