"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var react_1 = require("react"); var useRafState_1 = tslib_1.__importDefault(require("./useRafState")); var util_1 = require("./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_1.default({ docX: 0, docY: 0, posX: 0, posY: 0, elX: 0, elY: 0, elH: 0, elW: 0, }), state = _a[0], setState = _a[1]; react_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, }); } }; util_1.on(document, 'mousemove', moveHandler); return function () { util_1.off(document, 'mousemove', moveHandler); }; }, [ref]); return state; }; exports.default = useMouse;