{"version":3,"file":"DragHorizontal.KKAPOSLE.mjs","names":["useRef","useState","__legacyOverrideHOC_DataObserverContext","_jsx"],"sources":["https:/framerusercontent.com/modules/3Zf8dqqVfWemIZZqbHoW/pLv9aHqXk1nGmqk8W6ze/DragHorizontal.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";import{animate,useMotionValue}from\"framer\";export function DragLeftSnap(){const ref=useRef(null);const x=useMotionValue(0);const[snapPoints,setSnapPoints]=useState([]);const[constraints,setConstraints]=useState({left:0,right:0});useEffect(()=>{const update=()=>{const el=ref.current;if(!el)return;const cards=Array.from(el.children);if(!cards.length)return;const screenWidth=window.innerWidth;// Minimum cards left depending on breakpoint\nlet minCardsLeft=2;if(screenWidth<800)minCardsLeft=1;else if(screenWidth<1200)minCardsLeft=2;const firstOffset=cards[0].offsetLeft;// Build all possible snap points\nconst points=cards.map(card=>-(card.offsetLeft-firstOffset));// Limit snapping so it stops when minCardsLeft remain\nconst maxIndex=Math.max(0,cards.length-minCardsLeft);const limitedPoints=points.slice(0,maxIndex+1);const lastSnap=limitedPoints[limitedPoints.length-1]??0;setSnapPoints(limitedPoints);setConstraints({left:lastSnap,right:0});// Clamp current position after resize\nconst current=x.get();const clamped=Math.max(lastSnap,Math.min(0,current));x.set(clamped);};update();window.addEventListener(\"resize\",update);return()=>window.removeEventListener(\"resize\",update);},[x]);const handleDragEnd=(_,info)=>{if(!snapPoints.length)return;const current=x.get();let nearestIndex=0;let nearestDistance=Math.abs(current-snapPoints[0]);for(let i=1;i<snapPoints.length;i++){const distance=Math.abs(current-snapPoints[i]);if(distance<nearestDistance){nearestDistance=distance;nearestIndex=i;}}// Slight directional bias\nif(info.offset.x<-40||info.velocity.x<-250){nearestIndex=Math.min(nearestIndex+1,snapPoints.length-1);}else if(info.offset.x>40||info.velocity.x>250){nearestIndex=Math.max(nearestIndex-1,0);}animate(x,snapPoints[nearestIndex],{type:\"spring\",stiffness:600,damping:50,mass:.8});};return{ref,drag:\"x\",style:{x,cursor:\"grab\"},dragConstraints:constraints,dragElastic:.02,dragMomentum:false,whileTap:{cursor:\"grabbing\"},onDragEnd:handleDragEnd};}import{useContext as __legacyOverrideHOC_useContext}from\"react\";import{DataObserverContext as __legacyOverrideHOC_DataObserverContext}from\"framer\";export function withDragLeftSnap(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...DragLeftSnap(props)});};}withDragLeftSnap.displayName=\"DragLeftSnap\";\nexport const __FramerMetadata__ = {\"exports\":{\"withDragLeftSnap\":{\"type\":\"reactHoc\",\"name\":\"withDragLeftSnap\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DragLeftSnap\":{\"type\":\"override\",\"name\":\"DragLeftSnap\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./DragHorizontal.map"],"mappings":"wPAAmI,SAAgB,GAAc,CAAC,IAAM,EAAIA,EAAO,KAAK,CAAO,EAAE,EAAe,EAAE,CAAM,CAAC,EAAW,GAAeC,EAAS,EAAE,CAAC,CAAM,CAAC,EAAY,GAAgBA,EAAS,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAKtC,OALuC,MAAc,CAAC,IAAM,MAAW,CAAC,IAAM,EAAG,EAAI,QAAQ,GAAG,CAAC,EAAG,OAAO,IAAM,EAAM,MAAM,KAAK,EAAG,SAAS,CAAC,GAAG,CAAC,EAAM,OAAO,OAAO,IAAM,EAAY,EAAO,WACld,EAAa,EAAK,EAAY,IAAI,EAAa,EAAU,EAAY,OAAK,EAAa,GAAE,IAAM,EAAY,EAAM,GAAG,WAClH,EAAO,EAAM,IAAI,GAAM,EAAE,EAAK,WAAW,GAAa,CACtD,EAAS,KAAK,IAAI,EAAE,EAAM,OAAO,EAAa,CAAO,EAAc,EAAO,MAAM,EAAE,EAAS,EAAE,CAAO,EAAS,EAAc,EAAc,OAAO,IAAI,EAAE,EAAc,EAAc,CAAC,EAAe,CAAC,KAAK,EAAS,MAAM,EAAE,CAAC,CAChO,IAAM,EAAQ,EAAE,KAAK,CAAO,EAAQ,KAAK,IAAI,EAAS,KAAK,IAAI,EAAE,EAAQ,CAAC,CAAC,EAAE,IAAI,EAAQ,EAAqD,OAAlD,GAAQ,CAAC,EAAO,iBAAiB,SAAS,EAAO,KAAW,EAAO,oBAAoB,SAAS,EAAO,EAAG,CAAC,EAAE,CAAC,CACkF,CAAC,MAAI,KAAK,IAAI,MAAM,CAAC,IAAE,OAAO,OAAO,CAAC,gBAAgB,EAAY,YAAY,IAAI,aAAa,GAAM,SAAS,CAAC,OAAO,WAAW,CAAC,WAD9L,EAAE,IAAO,CAAC,GAAG,CAAC,EAAW,OAAO,OAAO,IAAM,EAAQ,EAAE,KAAK,CAAK,EAAa,EAAM,EAAgB,KAAK,IAAI,EAAQ,EAAW,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,EAAW,OAAO,IAAI,CAAC,IAAM,EAAS,KAAK,IAAI,EAAQ,EAAW,GAAG,CAAI,EAAS,IAAiB,EAAgB,EAAS,EAAa,GACxf,EAAK,OAAO,EAAE,KAAK,EAAK,SAAS,EAAE,KAAM,EAAa,KAAK,IAAI,EAAa,EAAE,EAAW,OAAO,EAAE,EAAU,EAAK,OAAO,EAAE,IAAI,EAAK,SAAS,EAAE,OAAK,EAAa,KAAK,IAAI,EAAa,EAAE,EAAE,EAAE,EAAQ,EAAE,EAAW,GAAc,CAAC,KAAK,SAAS,UAAU,IAAI,QAAQ,GAAG,KAAK,GAAG,CAAC,EAAmK,CAAqJ,SAAgB,EAAiB,EAAE,CAAC,MAAO,KAAQ,EAA+BC,EAAwC,CAAQC,EAAK,EAAE,CAAC,GAAG,EAAM,GAAG,EAAa,EAAM,CAAC,CAAC,uBAL3sB,IAA6C,IAA2C,CAKunB,EAAiB,YAAY"}