@rooks/use-mouse
Version:
A React Hooks package for mouse
62 lines (58 loc) • 1.82 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('react')) :
typeof define === 'function' && define.amd ? define(['react'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.useMouse = factory(global.React));
}(this, (function (react) { 'use strict';
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] = react.useState(initialMouseState);
function updateMousePosition(e) {
setMousePostition(getMousePositionFromEvent(e));
}
react.useEffect(() => {
document.addEventListener("mousemove", updateMousePosition);
return () => {
document.removeEventListener("mousemove", updateMousePosition);
};
}, []);
return mousePosition;
}
return useMouse;
})));
//# sourceMappingURL=index.js.map