import { useEffect } from 'react'; import useRafState from './useRafState'; import { off, on } from './misc/util'; var useMouse = function (ref) { if (process.env.NODE_ENV === 'development') { if (typeof ref !== 'object' || typeof ref.current === 'undefined') { console.error('useMouse expects a single ref argument.'); } } var _a = useRafState({ docX: 0, docY: 0, posX: 0, posY: 0, elX: 0, elY: 0, elH: 0, elW: 0, }), state = _a[0], setState = _a[1]; useEffect(function () { var moveHandler = function (event) { if (ref && ref.current) { var _a = ref.current.getBoundingClientRect(), left = _a.left, top_1 = _a.top, elW = _a.width, elH = _a.height; var posX = left + window.pageXOffset; var posY = top_1 + window.pageYOffset; var elX = event.pageX - posX; var elY = event.pageY - posY; setState({ docX: event.pageX, docY: event.pageY, posX: posX, posY: posY, elX: elX, elY: elY, elH: elH, elW: elW, }); } }; on(document, 'mousemove', moveHandler); return function () { off(document, 'mousemove', moveHandler); }; }, [ref]); return state; }; export default useMouse;