UNPKG

@guruhotel/aura-hooks

Version:

🪝 Hooks library designed by the Guruhotel team for Aura UI

1 lines 1.43 kB
exports.__esModule=!0,exports.useScrollIntoView=function({duration:c=1250,axis:o="y",onScrollFinish:a,easing:l=n.easeInOutQuad,offset:f=0,cancelable:d=!0,isList:m=!1}={}){const p=(0,e.useRef)(0),v=(0,e.useRef)(0),w=(0,e.useRef)(!1),g=(0,e.useRef)(null),q=(0,e.useRef)(null),R=(0,r.useReducedMotion)(),x=()=>{p.current&&cancelAnimationFrame(p.current)},S=(0,e.useCallback)((({alignment:e="start"}={})=>{var r;w.current=!1,p.current&&x();const t=null!=(r=(0,s.getScrollStart)({parent:g.current,axis:o}))?r:0,n=(0,u.getRelativePosition)({parent:g.current,target:q.current,axis:o,alignment:e,offset:f,isList:m})-(g.current?0:t);!function e(){0===v.current&&(v.current=performance.now());const r=performance.now()-v.current,u=R||0===c?1:r/c,s=t+n*l(u);(0,i.setScrollParam)({parent:g.current,axis:o,distance:s}),!w.current&&u<1?p.current=requestAnimationFrame(e):("function"==typeof a&&a(),v.current=0,p.current=0,x())}()}),[g.current]),b=()=>{d&&(w.current=!0)};return(0,t.useWindowEvent)("wheel",b,{passive:!0}),(0,t.useWindowEvent)("touchmove",b,{passive:!0}),(0,e.useEffect)((()=>x),[]),{scrollableRef:g,targetRef:q,scrollIntoView:S,cancel:x}};var e=require("react"),r=require("../use-reduced-motion/use-reduced-motion"),t=require("../use-window-event/use-window-event"),n=require("./utils/ease-in-out-quad"),u=require("./utils/get-relative-position"),s=require("./utils/get-scroll-start"),i=require("./utils/set-scroll-param");