@guruhotel/aura-hooks
Version:
🪝 Hooks library designed by the Guruhotel team for Aura UI
1 lines • 701 B
JavaScript
import{useEffect as e,useRef as t,useState as n}from"react";export function useMouse(r={resetOnExit:!1}){const[o,s]=n({x:0,y:0}),u=t(),i=e=>{if(u.current){const t=e.currentTarget.getBoundingClientRect(),n=Math.max(0,Math.round(e.pageX-t.left-(window.pageXOffset||window.scrollX))),r=Math.max(0,Math.round(e.pageY-t.top-(window.pageYOffset||window.scrollY)));s({x:n,y:r})}else s({x:e.clientX,y:e.clientY})},a=()=>s({x:0,y:0});return e((()=>{const e=null!=u&&u.current?u.current:document;return e.addEventListener("mousemove",i),r.resetOnExit&&e.addEventListener("mouseleave",a),()=>{e.removeEventListener("mousemove",i),r.resetOnExit&&e.removeEventListener("mouseleave",a)}}),[u.current]),{ref:u,...o}}