UNPKG

@rooks/use-mouse

Version:

A React Hooks package for mouse

62 lines (58 loc) 1.82 kB
(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