{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/g3Jc2LumtoiuxpoAG0kM/sfq9cY5Jk8Zw70xetMq3/Scroll_grab.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=./Scroll_grab.map"],
  "mappings": "6HAC+F,SAASA,GAAwB,CAAC,GAAK,CAACC,EAAWC,CAAa,EAAEC,EAAS,EAAK,EAAQC,EAAOC,EAAO,CAAC,EAAQC,EAAWD,EAAO,CAAC,EAAQE,EAAgBF,EAAO,IAAI,EAAQG,EAASH,EAAO,CAAC,EAAQI,EAAeJ,EAAO,IAAI,EAAQK,EAAc,EAAQC,EAAYN,EAAO,EAAK,EAC/WO,EAAc,OAAOC,EAAS,MAAc,iBAAiBA,GAAQC,EAAU,eAAe,GAASC,EAAcC,GAAO,CAAIJ,IACtIV,EAAc,EAAI,EAAES,EAAY,QAAQ,GAAMP,EAAO,QAAQY,EAAM,QAAQV,EAAW,QAAQC,EAAgB,QAAQ,WAAWC,EAAS,QAAQ,EAAKC,EAAe,SAAQ,qBAAqBA,EAAe,OAAO,EACzNQ,EAAyB,EAAE,EAAQC,EAAcF,GAAO,CAAC,GAAGJ,GAAe,CAACX,EAAW,OAAO,IAAMkB,EAAEH,EAAM,QAAQZ,EAAO,QAAQ,GAAG,KAAK,IAAIe,CAAC,EAAET,EAAc,CAACC,EAAY,QAAQ,GAAK,IAAMS,EAAcd,EAAW,QAAQa,EAAEX,EAAS,QAAQY,EAAcb,EAAgB,QAAQ,WAAWA,EAAgB,QAAQ,WAAWa,CAAc,CAAC,EAAQC,EAAY,IAAI,CAAC,GAAG,CAAAT,EAA0C,IAArBV,EAAc,EAAK,EAAKS,EAAY,QAAQ,CAAC,IAAMW,EAAe,IAAI,CAAI,KAAK,IAAId,EAAS,OAAO,EAAE,IAAID,EAAgB,QAAQ,YAAYC,EAAS,QAAQA,EAAS,SAAS,IAAIC,EAAe,QAAQ,sBAAsBa,CAAc,GAAQ,qBAAqBb,EAAe,OAAO,CAAG,EAAEa,EAAe,CAAE,CAChsBC,EAAwB,EAAE,EAAQN,EAAyB,IAAI,CAAC,IAAMO,EAAUjB,EAAgB,QAAQ,GAAG,CAACiB,EAAU,OAA+BA,EAAU,iBAAiB,QAAQ,EAAoB,QAAQC,GAAS,CAACA,EAAQ,aAAa,YAAY,OAAO,CAAE,CAAC,CAAE,EAAQF,EAAwB,IAAI,CAAC,IAAMC,EAAUjB,EAAgB,QAAQ,GAAG,CAACiB,EAAU,OAA+BA,EAAU,iBAAiB,QAAQ,EAAoB,QAAQC,GAAS,CAACA,EAAQ,gBAAgB,WAAW,CAAE,CAAC,CAAE,EAAE,OAAAC,EAAU,IAAW,IAAI,qBAAqBjB,EAAe,OAAO,EAAI,CAAC,CAAC,EAAQ,CAAC,IAAIF,EAAgB,cAAcS,GAAO,CAACD,EAAcC,CAAK,EAAMJ,GAAcI,EAAM,OAAO,kBAAkBA,EAAM,SAAS,CAAE,EAAE,cAAcE,EAAc,YAAYF,GAAO,CAACK,EAAY,EAAMT,GAAcI,EAAM,OAAO,sBAAsBA,EAAM,SAAS,CAAE,EAAE,eAAeK,EAAY,eAAeL,GAAO,CAAIL,EAAY,UAASK,EAAM,gBAAgB,EAAEA,EAAM,eAAe,EAAG,EAAE,MAAM,CAAC,OAAOJ,EAAc,OAAO,UAAU,UAAU,OAAO,UAAU,SAAS,WAAW,SAAS,eAAe,OAAO,gBAAgB,OAAO,wBAAwB,QAAQ,sBAAsB,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAE,CAA2J,SAASe,EAA2BC,EAAE,CAAC,OAAOC,IAAQC,EAA+BC,CAAuC,EAASC,EAAKJ,EAAE,CAAC,GAAGC,EAAM,GAAG7B,EAAuB6B,CAAK,CAAC,CAAC,EAAI,CAACF,EAA2B,YAAY",
  "names": ["DragScrollWithMomentum", "isDragging", "setIsDragging", "ye", "startX", "pe", "scrollLeft", "scrollContainer", "velocity", "animationFrame", "dragThreshold", "wasDragging", "isTouchDevice", "window", "navigator", "onPointerDown", "event", "disableDraggableElements", "onPointerMove", "x", "newScrollLeft", "onPointerUp", "momentumScroll", "enableDraggableElements", "container", "element", "ue", "withDragScrollWithMomentum", "C", "props", "re", "DataObserverContext", "p"]
}
