mirror of
https://github.com/logos-co/logos-web.git
synced 2026-08-31 14:11:12 +00:00
1 line
2.7 KiB
JavaScript
1 line
2.7 KiB
JavaScript
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,34674,e=>{"use strict";var t=e.i(26299),l=e.i(83403);function r(){let e=(0,l.useRef)({el:null,isDown:!1,moved:!1,startX:0,startScrollLeft:0,lastX:0,velocity:0,raf:0,usesSnap:!1,snapTimer:null}),t=(0,l.useCallback)(()=>{e.current.raf&&(cancelAnimationFrame(e.current.raf),e.current.raf=0)},[]),r=(0,l.useCallback)(()=>{e.current.el&&(e.current.el.style.scrollSnapType="")},[]),n=(0,l.useCallback)(()=>{let t=e.current,l=t.el;if(!l)return;let n=l.getBoundingClientRect(),a=parseFloat(getComputedStyle(l).scrollPaddingLeft)||0,o=l.scrollLeft,s=1/0;for(let e of Array.from(l.children)){let t=e.getBoundingClientRect(),r=l.scrollLeft+(t.left-n.left)-a,c=Math.abs(r-l.scrollLeft);c<s&&(s=c,o=r)}let c=l.scrollWidth-l.clientWidth;l.scrollTo({left:Math.max(0,Math.min(o,c)),behavior:"smooth"}),t.snapTimer&&clearTimeout(t.snapTimer),t.snapTimer=setTimeout(r,500)},[r]);(0,l.useEffect)(()=>{let t=e.current;return()=>{t.raf&&cancelAnimationFrame(t.raf),t.snapTimer&&clearTimeout(t.snapTimer)}},[]);let a=(0,l.useCallback)(()=>{let t=e.current,l=t.el;if(!l)return;let n=()=>{if(.4>Math.abs(t.velocity)){t.raf=0,r();return}l.scrollLeft-=t.velocity,t.velocity*=.92,t.raf=requestAnimationFrame(n)};t.raf=requestAnimationFrame(n)},[r]),o=(0,l.useCallback)(l=>{if("mouse"!==l.pointerType||0!==l.button)return;let r=l.currentTarget;if(r.scrollWidth<=r.clientWidth)return;l.preventDefault(),t();let n=e.current;n.snapTimer&&(clearTimeout(n.snapTimer),n.snapTimer=null),n.el=r,n.isDown=!0,n.moved=!1,n.startX=l.clientX,n.lastX=l.clientX,n.startScrollLeft=r.scrollLeft,n.velocity=0},[t]),s=(0,l.useCallback)(t=>{let l=e.current;if(!l.isDown||!l.el)return;let r=t.clientX-l.startX;!l.moved&&5>Math.abs(r)||(l.moved||(l.moved=!0,l.usesSnap="none"!==getComputedStyle(l.el).scrollSnapType,l.el.setPointerCapture(t.pointerId),l.el.style.cursor="pointer",l.el.style.userSelect="none",l.el.style.scrollSnapType="none"),l.velocity=t.clientX-l.lastX,l.lastX=t.clientX,l.el.scrollLeft=l.startScrollLeft-r)},[]),c=(0,l.useCallback)(()=>{let t=e.current;!t.isDown||(t.isDown=!1,t.el&&(t.el.style.cursor="",t.el.style.userSelect=""),t.moved&&(t.usesSnap?n():Math.abs(t.velocity)>=.4?a():r()))},[r,n,a]);return{onPointerDown:o,onPointerMove:s,onPointerUp:c,onPointerCancel:c,onClickCapture:(0,l.useCallback)(t=>{e.current.moved&&(t.preventDefault(),t.stopPropagation(),e.current.moved=!1)},[]),onDragStart:(0,l.useCallback)(t=>{e.current.isDown&&t.preventDefault()},[])}}e.s(["DragScroll",0,function(e){let{children:l,className:n,style:a,id:o}=e,s=r();return(0,t.jsx)("div",{className:n,style:a,id:o,...s,children:l})},"useDragScroll",0,r])}]); |