UNPKG

@guruhotel/aura-hooks

Version:

🪝 Hooks library designed by the Guruhotel team for Aura UI

1 lines 1.79 kB
exports.__esModule=!0,exports.clampUseMovePosition=void 0,exports.useMove=function(n,r,u="ltr"){const c=(0,e.useRef)(),o=(0,e.useRef)(!1),s=(0,e.useRef)(!1),i=(0,e.useRef)(0),[a,d]=(0,e.useState)(!1);return(0,e.useEffect)((()=>{o.current=!0}),[]),(0,e.useEffect)((()=>{var e,a;const m=({x:e,y:r})=>{cancelAnimationFrame(i.current),i.current=requestAnimationFrame((()=>{if(o.current&&c.current){c.current.style.userSelect="none";const o=c.current.getBoundingClientRect();if(o.width&&o.height){const c=(0,t.clamp)((e-o.left)/o.width,0,1);n({x:"ltr"===u?c:1-c,y:(0,t.clamp)((r-o.top)/o.height,0,1)})}}}))},v=()=>{!s.current&&o.current&&(s.current=!0,"function"==typeof(null==r?void 0:r.onScrubStart)&&r.onScrubStart(),d(!0),document.addEventListener("mousemove",p),document.addEventListener("mouseup",l),document.addEventListener("touchmove",E),document.addEventListener("touchend",l))},l=()=>{s.current&&o.current&&(s.current=!1,d(!1),document.removeEventListener("mousemove",p),document.removeEventListener("mouseup",l),document.removeEventListener("touchmove",E),document.removeEventListener("touchend",l),setTimeout((()=>{"function"==typeof(null==r?void 0:r.onScrubEnd)&&r.onScrubEnd()}),0))},f=e=>{v(),p(e)},p=e=>m({x:e.clientX,y:e.clientY}),h=e=>{e.cancelable&&e.preventDefault(),v(),E(e)},E=e=>{e.cancelable&&e.preventDefault(),m({x:e.changedTouches[0].clientX,y:e.changedTouches[0].clientY})};return null==(e=c.current)||e.addEventListener("mousedown",f),null==(a=c.current)||a.addEventListener("touchstart",h,{passive:!1}),()=>{c.current&&(c.current.removeEventListener("mousedown",f),c.current.removeEventListener("touchstart",h))}}),[u,n]),{ref:c,active:a}};var e=require("react"),t=require("../utils");exports.clampUseMovePosition=e=>({x:(0,t.clamp)(e.x,0,1),y:(0,t.clamp)(e.y,0,1)});