{"version":3,"file":"SideNavFeatureCardStack.D7PMoALx.mjs","names":["useRef","useCallback"],"sources":["https:/framerusercontent.com/modules/HBFvttViAimr0PUBP2sd/b8wBfvR5KhYyKVwkFkxp/SideNavFeatureCardStack.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useCallback,useEffect,useRef}from\"react\";import{animate,motion,useMotionValue,useTransform}from\"framer-motion\";const DRAG_EDGE_RESISTANCE=.35;/** Flicks faster than this (px/s) advance a slide even without a half-step drag. */const FLICK_VELOCITY_THRESHOLD=400;/** Rubber-band positions beyond [min, max] so the track resists instead of stopping dead. */export function dampenOverdrag(position,min,max,resistance=DRAG_EDGE_RESISTANCE){if(position>max)return max+(position-max)*resistance;if(position<min)return min+(position-min)*resistance;return position;}/**\n * Resolve a drag release to the index the track should settle on.\n * Fast flicks move one slide in the flick direction; slow releases snap to the\n * nearest slide, at most one step from where the gesture started.\n */export function resolveReleaseIndex(position,velocity,step,activeIndex,total){if(total<=1||step<=0)return Math.max(0,Math.min(activeIndex,total-1));let target;if(Math.abs(velocity)>FLICK_VELOCITY_THRESHOLD){target=activeIndex+(velocity<0?1:-1);}else{target=Math.round(-position/step);target=Math.max(activeIndex-1,Math.min(activeIndex+1,target));}return Math.max(0,Math.min(total-1,target));}/**\n * framerusercontent.com only resizes via `scale-down-to`; the `width`/`height`\n * params Framer stores on asset URLs are metadata, so using them verbatim ships\n * the full-size original. Request the card's rendered width instead, bucketed\n * to 64px so viewport jitter doesn't fragment the CDN cache.\n */export function framerCardImageProps(url,cssWidth){if(!url.startsWith(\"https://framerusercontent.com/images/\")){return{src:url};}const sized=width=>{try{const parsed=new URL(url);parsed.searchParams.delete(\"width\");parsed.searchParams.delete(\"height\");parsed.searchParams.set(\"scale-down-to\",String(width));return parsed.toString();}catch{return url;}};const oneX=Math.max(64,Math.ceil(cssWidth/64)*64);return{src:sized(oneX),srcSet:`${sized(oneX)} 1x, ${sized(oneX*2)} 2x`};}/** Cards behind the active slot shrink/fade in place instead of sliding off-screen. */const EXIT_SCALE=.3;const MAX_PEEK_CARDS=2;const PEEK_OPACITY=.58;const PEEK_SCALE_STEP=.018;const Z_UNDER=1;const Z_TRACK=2;const TRACK_SPRING={type:\"spring\",stiffness:260,damping:30,mass:1};/** Default upward shift for out-of-box images (heads above the frame). */export const DEFAULT_OUT_OF_BOX_IMAGE_OFFSET_Y=-44;function peekOpacityForSlot(slot){return PEEK_OPACITY+(MAX_PEEK_CARDS-slot)*.08;}/**\n * Continuous scale for a card's signed distance from the active slot.\n * rel 0 → 1, rel > 0 → peek shrink, rel < 0 → exit shrink toward EXIT_SCALE.\n */export function scaleForRelativeIndex(rel){if(rel<0){const t=Math.min(1,-rel);return 1+(EXIT_SCALE-1)*t;}return 1-Math.min(rel,MAX_PEEK_CARDS)*PEEK_SCALE_STEP;}/** Continuous opacity companion to {@link scaleForRelativeIndex}. */export function opacityForRelativeIndex(rel){if(rel<0)return Math.max(0,1+rel);if(rel<=0)return 1;const slot1=peekOpacityForSlot(1);const slot2=peekOpacityForSlot(MAX_PEEK_CARDS);if(rel<=1)return 1+(slot1-1)*rel;if(rel<=MAX_PEEK_CARDS)return slot1+(slot2-slot1)*(rel-1);return slot2;}/** Left edge clips track overflow; top/bottom expand for out-of-box image bleed. */function carouselClipPath(bleed,cardHeight,outOfBoxImageOffsetY){if(outOfBoxImageOffsetY===undefined){return`inset(0 ${-bleed}px 0 0)`;}const top=outOfBoxImageOffsetY<0?outOfBoxImageOffsetY:0;const bottom=-Math.max(400,Math.round(cardHeight*1.25));return`inset(${top}px ${-bleed}px ${bottom}px 0)`;}/** One card whose position/scale/opacity derive continuously from the track offset. */function StackCard({image,imageSrcSet,index,trackX,step,eager,shellStyle,imageStyle,usesOutOfBoxImage,outOfBoxFrameStyle}){const rel=useTransform(trackX,v=>step>0?index+v/step:index);// Cards behind the active slot stay pinned at slot 0 while they shrink away.\nconst pinX=useTransform(rel,r=>r<0?-r*step:0);const scale=useTransform(rel,scaleForRelativeIndex);const opacity=useTransform(rel,opacityForRelativeIndex);const zIndex=useTransform(rel,r=>r<-.001?Z_UNDER:Z_TRACK);const img=/*#__PURE__*/_jsx(\"img\",{src:image,srcSet:imageSrcSet,alt:\"\",loading:eager?undefined:\"lazy\",decoding:\"async\",draggable:false,onDragStart:event=>event.preventDefault(),style:imageStyle});return /*#__PURE__*/_jsx(motion.div,{style:{flexShrink:0,transformOrigin:usesOutOfBoxImage?\"center top\":\"center center\",x:pinX,scale,opacity,zIndex,...shellStyle},children:usesOutOfBoxImage?/*#__PURE__*/_jsx(\"div\",{style:outOfBoxFrameStyle,children:img}):img});}/**\n * Continuous-track card carousel: one motion value drives the track, and every\n * card's transform derives from it. Drags follow the pointer 1:1 (with edge\n * rubber-banding), releases snap with velocity, and index changes retarget the\n * spring mid-flight — there are no locks and no discrete transition phases.\n */export function SideNavFeatureCardStack({slides,activeIndex,onIndexChange,onDragStateChange,enableDrag=true,cardWidth,cardHeight,cardGap,cardRadius,cardPeek,imageFit=\"natural\",outOfBoxImageOffsetY=DEFAULT_OUT_OF_BOX_IMAGE_OFFSET_Y,isMobile=false,reduceMotion=false,carouselBleed,style,carouselRef}){const step=cardWidth+cardGap;const total=slides.length;const bleed=carouselBleed??Math.max(cardPeek,cardGap,8);const usesNaturalImageHeight=imageFit===\"natural\";const usesOutOfBoxImage=imageFit===\"outOfBox\";const usesFixedFrameHeight=imageFit===\"cover\"||imageFit===\"contain\";const naturalCardMinHeight=usesNaturalImageHeight&&isMobile?cardHeight:undefined;const trackX=useMotionValue(-activeIndex*step);const settleAnimation=useRef(null);const settleTarget=useRef(-activeIndex*step);const dragSession=useRef(null);const settleTo=useCallback(target=>{settleTarget.current=target;settleAnimation.current?.stop();if(reduceMotion){trackX.set(target);return;}settleAnimation.current=animate(trackX,target,TRACK_SPRING);},[trackX,reduceMotion]);useEffect(()=>{const target=-Math.max(0,Math.min(activeIndex,total-1))*step;// Already resting on or springing toward this target — don't restart.\nif(settleTarget.current===target&&dragSession.current===null){return;}if(dragSession.current!==null){settleTarget.current=target;return;}settleTo(target);},[activeIndex,step,total,settleTo]);useEffect(()=>()=>settleAnimation.current?.stop(),[]);const dragEnabled=enableDrag&&total>1;const onPointerDown=useCallback(event=>{if(!dragEnabled||!event.isPrimary)return;settleAnimation.current?.stop();dragSession.current={pointerId:event.pointerId,startClientX:event.clientX,startTrackX:trackX.get()};event.currentTarget.setPointerCapture(event.pointerId);onDragStateChange?.(true);},[dragEnabled,trackX,onDragStateChange]);const onPointerMove=useCallback(event=>{const session=dragSession.current;if(!session||event.pointerId!==session.pointerId)return;const raw=session.startTrackX+(event.clientX-session.startClientX);trackX.set(dampenOverdrag(raw,-(total-1)*step,0));},[trackX,total,step]);const endDrag=useCallback(event=>{const session=dragSession.current;if(!session||event.pointerId!==session.pointerId)return;dragSession.current=null;if(event.currentTarget.hasPointerCapture(event.pointerId)){event.currentTarget.releasePointerCapture(event.pointerId);}onDragStateChange?.(false);const resolved=resolveReleaseIndex(trackX.get(),trackX.getVelocity(),step,activeIndex,total);// Without a change handler the index is fixed externally — spring back.\nconst target=onIndexChange?resolved:activeIndex;settleTo(-target*step);if(target!==activeIndex)onIndexChange?.(target);},[trackX,step,activeIndex,total,onIndexChange,settleTo,onDragStateChange]);const cardShellStyle={width:cardWidth,...usesNaturalImageHeight?{display:\"flex\",alignItems:\"flex-start\",justifyContent:\"flex-start\",height:\"fit-content\",minHeight:naturalCardMinHeight}:{height:cardHeight},borderRadius:cardRadius,overflow:\"visible\"};const cardImageStyle={display:\"block\",width:\"100%\",height:usesNaturalImageHeight?\"auto\":\"100%\",maxHeight:usesNaturalImageHeight?\"none\":undefined,borderRadius:cardRadius,objectFit:usesNaturalImageHeight||usesOutOfBoxImage?undefined:imageFit,userSelect:\"none\",WebkitUserDrag:\"none\",pointerEvents:\"none\"};const outOfBoxImageStyle={position:\"absolute\",top:outOfBoxImageOffsetY,left:0,width:\"100%\",height:\"auto\",display:\"block\",borderRadius:cardRadius,userSelect:\"none\",WebkitUserDrag:\"none\",pointerEvents:\"none\"};const outOfBoxFrameStyle={position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"visible\"};const containerStyle={position:\"relative\",minWidth:0,width:\"100%\",...usesNaturalImageHeight?isMobile?{height:\"fit-content\",minHeight:naturalCardMinHeight}:{flex:1,minHeight:0}:{height:cardHeight},overflow:\"visible\",clipPath:carouselClipPath(bleed,cardHeight,usesOutOfBoxImage?outOfBoxImageOffsetY:undefined),touchAction:dragEnabled?\"pan-y\":\"auto\",cursor:dragEnabled?\"grab\":\"auto\",...style};if(total===0)return null;const safeIndex=Math.max(0,Math.min(activeIndex,total-1));const currentSlide=slides[safeIndex];return /*#__PURE__*/_jsxs(\"div\",{ref:carouselRef,onPointerDown:onPointerDown,onPointerMove:onPointerMove,onPointerUp:endDrag,onPointerCancel:endDrag,style:containerStyle,children:[currentSlide&&!usesFixedFrameHeight&&!usesOutOfBoxImage?/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,style:{visibility:\"hidden\",pointerEvents:\"none\",...cardShellStyle},children:/*#__PURE__*/_jsx(StaticCardImage,{image:currentSlide.image,cardWidth:cardWidth,imageStyle:cardImageStyle})}):null,/*#__PURE__*/_jsx(motion.div,{style:{display:\"flex\",gap:`${cardGap}px`,width:\"fit-content\",position:\"absolute\",left:0,top:0,x:trackX},children:slides.map((slide,index)=>{const imageProps=framerCardImageProps(slide.image,cardWidth);return /*#__PURE__*/_jsx(StackCard,{image:imageProps.src,imageSrcSet:imageProps.srcSet,index:index,trackX:trackX,step:step,eager:Math.abs(index-safeIndex)<=MAX_PEEK_CARDS,shellStyle:cardShellStyle,imageStyle:{...usesOutOfBoxImage?outOfBoxImageStyle:cardImageStyle},usesOutOfBoxImage:usesOutOfBoxImage,outOfBoxFrameStyle:outOfBoxFrameStyle},`card-${index}`);})})]});}function StaticCardImage({image,cardWidth,imageStyle}){const imageProps=framerCardImageProps(image,cardWidth);return /*#__PURE__*/_jsx(\"img\",{src:imageProps.src,srcSet:imageProps.srcSet,alt:\"\",decoding:\"async\",draggable:false,style:imageStyle});}SideNavFeatureCardStack.displayName=\"Side Nav Feature Card Stack\";export default SideNavFeatureCardStack;\nexport const __FramerMetadata__ = {\"exports\":{\"SideNavFeatureCardStackSlide\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SlideDirection\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SideNavFeatureCardStack\":{\"type\":\"reactComponent\",\"name\":\"SideNavFeatureCardStack\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"scaleForRelativeIndex\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SideNavFeatureCardStackProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"resolveReleaseIndex\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"framerCardImageProps\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"SideNavFeatureCardStack\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"dampenOverdrag\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"opacityForRelativeIndex\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEFAULT_OUT_OF_BOX_IMAGE_OFFSET_Y\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SideNavFeatureCardStack.map"],"mappings":"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"}