{"version":3,"file":"Scrollgrab.BCHT6ffU.mjs","names":["useState","useRef","__legacyOverrideHOC_DataObserverContext","_jsx"],"sources":["https:/framerusercontent.com/modules/161XyaQtNxRPFig7UpX6/6S4jDNvTy0rIs6HA0OXh/Scrollgrab.js"],"sourcesContent":["// Horizontal Scroll Grab\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useState,useRef,useEffect}from\"react\";export function DragScrollWithMomentum(){const[isDragging,setIsDragging]=useState(false);const startX=useRef(0);const scrollLeft=useRef(0);const scrollContainer=useRef(null);const velocity=useRef(0);const animationFrame=useRef(null);const dragThreshold=5;const wasDragging=useRef(false);// Check if the device is touch-enabled (client-side only)\nconst isTouchDevice=typeof window!==\"undefined\"&&(\"ontouchstart\"in window||navigator.maxTouchPoints>0);const onPointerDown=event=>{if(isTouchDevice)return;// Disable override for touch devices\nsetIsDragging(true);wasDragging.current=false;startX.current=event.clientX;scrollLeft.current=scrollContainer.current.scrollLeft;velocity.current=0;if(animationFrame.current)cancelAnimationFrame(animationFrame.current);// Disable draggable elements during drag\ndisableDraggableElements();};const onPointerMove=event=>{if(isTouchDevice||!isDragging)return;const x=event.clientX-startX.current;if(Math.abs(x)>dragThreshold){wasDragging.current=true;const newScrollLeft=scrollLeft.current-x;velocity.current=newScrollLeft-scrollContainer.current.scrollLeft;scrollContainer.current.scrollLeft=newScrollLeft;}};const onPointerUp=()=>{if(isTouchDevice)return;setIsDragging(false);if(wasDragging.current){const momentumScroll=()=>{if(Math.abs(velocity.current)>.1){scrollContainer.current.scrollLeft+=velocity.current;velocity.current*=.95;animationFrame.current=requestAnimationFrame(momentumScroll);}else{cancelAnimationFrame(animationFrame.current);}};momentumScroll();}// Re-enable draggable elements after drag\nenableDraggableElements();};const disableDraggableElements=()=>{const container=scrollContainer.current;if(!container)return;const draggableElements=container.querySelectorAll(\"a, img\");draggableElements.forEach(element=>{element.setAttribute(\"draggable\",\"false\");});};const enableDraggableElements=()=>{const container=scrollContainer.current;if(!container)return;const draggableElements=container.querySelectorAll(\"a, img\");draggableElements.forEach(element=>{element.removeAttribute(\"draggable\");});};useEffect(()=>{return()=>cancelAnimationFrame(animationFrame.current);},[]);return{ref:scrollContainer,onPointerDown:event=>{onPointerDown(event);if(!isTouchDevice)event.target.setPointerCapture(event.pointerId);},onPointerMove:onPointerMove,onPointerUp:event=>{onPointerUp();if(!isTouchDevice)event.target.releasePointerCapture(event.pointerId);},onPointerLeave:onPointerUp,onClickCapture:event=>{if(wasDragging.current){event.stopPropagation();event.preventDefault();}},style:{cursor:isTouchDevice?\"auto\":\"pointer\",overflowX:\"auto\",overflowY:\"hidden\",whiteSpace:\"nowrap\",scrollbarWidth:\"none\",msOverflowStyle:\"none\",WebkitOverflowScrolling:\"touch\",\"::-webkit-scrollbar\":{display:\"none\"}}};}import{useContext as __legacyOverrideHOC_useContext}from\"react\";import{DataObserverContext as __legacyOverrideHOC_DataObserverContext}from\"framer\";export function withDragScrollWithMomentum(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...DragScrollWithMomentum(props)});};}withDragScrollWithMomentum.displayName=\"DragScrollWithMomentum\";\nexport const __FramerMetadata__ = {\"exports\":{\"DragScrollWithMomentum\":{\"type\":\"override\",\"name\":\"DragScrollWithMomentum\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withDragScrollWithMomentum\":{\"type\":\"reactHoc\",\"name\":\"withDragScrollWithMomentum\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Scrollgrab.map"],"mappings":"8MACwF,SAAgB,GAAwB,CAAC,GAAK,CAAC,EAAW,GAAeA,EAAS,GAAM,CAAO,EAAOC,EAAO,EAAE,CAAO,EAAWA,EAAO,EAAE,CAAO,EAAgBA,EAAO,KAAK,CAAO,EAASA,EAAO,EAAE,CAAO,EAAeA,EAAO,KAAK,CAA6B,EAAYA,EAAO,GAAM,CAChX,EAAqB,IAAS,SAAc,iBAAiB,GAAQ,EAAU,eAAe,GAAS,EAAc,GAAO,CAAI,IACtI,EAAc,GAAK,CAAC,EAAY,QAAQ,GAAM,EAAO,QAAQ,EAAM,QAAQ,EAAW,QAAQ,EAAgB,QAAQ,WAAW,EAAS,QAAQ,EAAK,EAAe,SAAQ,qBAAqB,EAAe,QAAQ,CAC1N,GAA0B,GAAS,EAAc,GAAO,CAAC,GAAG,GAAe,CAAC,EAAW,OAAO,IAAM,EAAE,EAAM,QAAQ,EAAO,QAAQ,GAAG,KAAK,IAAI,EAAE,CAAC,EAAc,CAAC,EAAY,QAAQ,GAAK,IAAM,EAAc,EAAW,QAAQ,EAAE,EAAS,QAAQ,EAAc,EAAgB,QAAQ,WAAW,EAAgB,QAAQ,WAAW,IAAuB,MAAgB,CAAI,MAA0C,IAArB,EAAc,GAAM,CAAI,EAAY,QAAQ,CAAC,IAAM,MAAmB,CAAI,KAAK,IAAI,EAAS,QAAQ,CAAC,IAAI,EAAgB,QAAQ,YAAY,EAAS,QAAQ,EAAS,SAAS,IAAI,EAAe,QAAQ,sBAAsB,EAAe,EAAO,qBAAqB,EAAe,QAAQ,EAAI,GAAgB,CAC/rB,GAAyB,GAAS,MAA6B,CAAC,IAAM,EAAU,EAAgB,QAAY,GAAyC,EAAU,iBAAiB,SAAS,CAAmB,QAAQ,GAAS,CAAC,EAAQ,aAAa,YAAY,QAAQ,EAAG,EAAS,MAA4B,CAAC,IAAM,EAAU,EAAgB,QAAY,GAAyC,EAAU,iBAAiB,SAAS,CAAmB,QAAQ,GAAS,CAAC,EAAQ,gBAAgB,YAAY,EAAG,EAA+E,OAA5E,UAAyB,qBAAqB,EAAe,QAAQ,CAAG,EAAE,CAAC,CAAO,CAAC,IAAI,EAAgB,cAAc,GAAO,CAAC,EAAc,EAAM,CAAK,GAAc,EAAM,OAAO,kBAAkB,EAAM,UAAU,EAAiB,gBAAc,YAAY,GAAO,CAAC,GAAa,CAAK,GAAc,EAAM,OAAO,sBAAsB,EAAM,UAAU,EAAG,eAAe,EAAY,eAAe,GAAO,CAAI,EAAY,UAAS,EAAM,iBAAiB,CAAC,EAAM,gBAAgB,GAAI,MAAM,CAAC,OAAO,EAAc,OAAO,UAAU,UAAU,OAAO,UAAU,SAAS,WAAW,SAAS,eAAe,OAAO,gBAAgB,OAAO,wBAAwB,QAAQ,sBAAsB,CAAC,QAAQ,OAAO,CAAC,CAAC,CAAqJ,SAAgB,EAA2B,EAAE,CAAC,MAAO,KAAQ,EAA+BC,EAAwC,CAAQC,EAAK,EAAE,CAAC,GAAG,EAAM,GAAG,EAAuB,EAAM,CAAC,CAAC,uBAJn9C,IAA6C,IAIuuC,CAAmM,EAA2B,YAAY"}