{"version":3,"file":"SequentialCarousel_1.CbIXCm2K.mjs","names":["useMemo","useState","useRef","_Fragment"],"sources":["https:/framerusercontent.com/modules/RWr3ApG9NSIPJfJNr66P/iWRYmsypIyoqxOFv3Xfp/SequentialCarousel_1.js"],"sourcesContent":["// Sequential Elastic Carousel - Cards move in sequence from left to right with smooth cascade effect\n/**\n * Basic\n * \n * A stunning 3D carousel component with sequential cascade animations. Cards smoothly transition \n * from left to right with a beautiful staggered effect, creating an elastic, flowing motion.\n * \n * Features:\n * • Sequential Animation - Cards move in a cascading sequence from left to right\n * • 3D Depth Effect - Cards scale and dim as they move away from center\n * • Smooth Transitions - Customizable animation duration and sequence delays\n * • Auto-Advance - Optional automatic rotation with configurable intervals\n * • Bounce Effect - Toggle a playful bounce animation for extra personality\n * • Component Slots - Connect any Framer components as carousel cards\n * • Fully Customizable - Control card dimensions, spacing, colors, and timing\n * • Infinite Loop - Seamlessly cycles through cards without visible resets\n * \n * Perfect for:\n * - Product showcases and galleries\n * - Feature highlights and testimonials\n * - Portfolio presentations\n * - Image carousels with depth\n * - Interactive content displays\n * \n * Simply connect your components to the card slots and watch them come alive with \n * smooth, sequential animations that draw attention and engage users.\n */import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect,useState,useRef,useMemo,startTransition}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * Sequential Elastic Carousel\n *\n * @framerIntrinsicWidth 1200\n * @framerIntrinsicHeight 500\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */function ElasticCarouselBasic(props){const{cards:cardComponents=[],cardGap=280,animationDuration=600,sequenceDelay=80,backgroundColor=\"#1e293b\",hideBackground=false,animationOrigin=0,fadeStartIndex=2}=props;const originalCards=useMemo(()=>cardComponents.map((component,i)=>({id:i+1,component:component})),[cardComponents]);// Create a large enough buffer of cards to allow for smooth infinite scrolling\n// We repeat the cards many times to ensure we never hit the edge of the array\nconst cards=useMemo(()=>{if(originalCards.length===0)return[];const repeatCount=40// Sufficient buffer for any screen size\n;const repeated=[];for(let i=0;i<repeatCount;i++){repeated.push(...originalCards);}return repeated;},[originalCards]);// Start in the middle of the array\nconst startIndex=useMemo(()=>{if(originalCards.length===0)return 0;return Math.floor(cards.length/2);},[cards.length,originalCards.length]);const[currentIndex,setCurrentIndex]=useState(startIndex);const[isAnimating,setIsAnimating]=useState(false);const[cardStates,setCardStates]=useState(new Map);const mountedRef=useRef(true);useEffect(()=>{mountedRef.current=true;return()=>{mountedRef.current=false;};},[]);const getCardStyle=(position,animate,delay=0)=>{const absPosition=Math.abs(position);// Calculate dynamic gap - decreases for cards further from center\nlet cumulativeTranslateX=0;if(position!==0){const direction=position>0?1:-1;for(let i=1;i<=absPosition;i++){// Gap decreases as we move away from center\nconst gapMultiplier=Math.max(.3,1-(i-1)*.15);cumulativeTranslateX+=cardGap*gapMultiplier*direction;}}const scale=position===0?1:Math.max(.65,1-absPosition*.12);const opacity=absPosition<=fadeStartIndex?1:0;const zIndex=20-absPosition;// Calculate vertical offset based on origin slider value\n// Negative values = top, 0 = center, Positive values = bottom\nconst translateY=animationOrigin*absPosition*absPosition;// Use cubic-bezier for bounce effect or ease-in-out for smooth\nconst easing=\"ease-in-out\";return{position:\"absolute\",borderRadius:16,boxShadow:\"0 25px 50px -12px rgba(0, 0, 0, 0.5)\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",transform:`translateX(${cumulativeTranslateX}px) translateY(${translateY}px) scale(${scale})`,opacity,zIndex,transition:animate?`all ${animationDuration}ms ${easing} ${delay}ms`:\"none\"};};const calculateCardStates=(newIndex,animate)=>{const newStates=new Map;const threshold=15// Match the render threshold\n;cards.forEach((card,index)=>{const position=index-newIndex;const absPosition=Math.abs(position);// Optimization: Only calculate for visible cards plus a buffer\nif(absPosition>threshold+5)return;let delay=0;if(animate){// When moving right (advancing), leftmost cards should move first\n// When moving left (going back), rightmost cards should move first\nconst direction=newIndex>currentIndex?1:-1;if(direction>0){// Moving right: leftmost cards (negative position) move first\nif(position<0){delay=Math.max(0,(threshold-Math.abs(position))*sequenceDelay);}else if(position>0){delay=(threshold+position)*sequenceDelay;}else{delay=threshold*sequenceDelay;}}else{// Moving left: rightmost cards (positive position) move first\nif(position>0){delay=Math.max(0,(threshold-position)*sequenceDelay);}else if(position<0){delay=(threshold+Math.abs(position))*sequenceDelay;}else{delay=threshold*sequenceDelay;}}}newStates.set(index,{position,delay});});return newStates;};useEffect(()=>{// Initialize with the calculated start index\nconst initialStates=calculateCardStates(startIndex,false);startTransition(()=>{setCurrentIndex(startIndex);setCardStates(initialStates);});},[startIndex]);const advanceCarousel=()=>{if(isAnimating)return;startTransition(()=>setIsAnimating(true));const newIndex=currentIndex+1;const newStates=calculateCardStates(newIndex,true);startTransition(()=>{setCurrentIndex(newIndex);setCardStates(newStates);});const totalAnimationTime=15*sequenceDelay+animationDuration+200;setTimeout(()=>{if(!mountedRef.current)return;startTransition(()=>setIsAnimating(false));// Reset if we've moved too far from center\n// We use a threshold of originalCards.length * 5 to be safe\nif(newIndex>=startIndex+originalCards.length*5){const resetIndex=newIndex-originalCards.length*5;const resetStates=calculateCardStates(resetIndex,false);startTransition(()=>{setCurrentIndex(resetIndex);setCardStates(resetStates);});}},totalAnimationTime);};const goToPrevious=()=>{if(isAnimating)return;startTransition(()=>setIsAnimating(true));const newIndex=currentIndex-1;const newStates=calculateCardStates(newIndex,true);startTransition(()=>{setCurrentIndex(newIndex);setCardStates(newStates);});const totalAnimationTime=15*sequenceDelay+animationDuration+200;setTimeout(()=>{if(!mountedRef.current)return;startTransition(()=>setIsAnimating(false));// Reset if we've moved too far from center\nif(newIndex<=startIndex-originalCards.length*5){const resetIndex=newIndex+originalCards.length*5;const resetStates=calculateCardStates(resetIndex,false);startTransition(()=>{setCurrentIndex(resetIndex);setCardStates(resetStates);});}},totalAnimationTime);};return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",background:hideBackground?\"transparent\":backgroundColor,display:\"flex\",flexDirection:\"column\",alignItems:\"center\",justifyContent:\"center\",overflow:\"visible\",position:\"relative\",padding:20},children:/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",width:\"100%\",flex:1,display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:[/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"button\",{onClick:goToPrevious,disabled:isAnimating,style:{position:\"absolute\",left:20,top:\"50%\",transform:\"translateY(-50%)\",zIndex:100,width:48,height:48,borderRadius:\"50%\",border:\"none\",backgroundColor:\"rgba(255, 255, 255, 0.9)\",cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",boxShadow:\"0 4px 12px rgba(0, 0, 0, 0.15)\",transition:\"all 0.2s ease\",opacity:isAnimating?.5:1},onMouseEnter:e=>{if(!isAnimating){e.currentTarget.style.backgroundColor=\"rgba(255, 255, 255, 1)\";e.currentTarget.style.transform=\"translateY(-50%) scale(1.1)\";}},onMouseLeave:e=>{e.currentTarget.style.backgroundColor=\"rgba(255, 255, 255, 0.9)\";e.currentTarget.style.transform=\"translateY(-50%) scale(1)\";},children:/*#__PURE__*/_jsx(\"svg\",{width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:/*#__PURE__*/_jsx(\"polyline\",{points:\"15 18 9 12 15 6\"})})}),/*#__PURE__*/_jsx(\"button\",{onClick:advanceCarousel,disabled:isAnimating,style:{position:\"absolute\",right:20,top:\"50%\",transform:\"translateY(-50%)\",zIndex:100,width:48,height:48,borderRadius:\"50%\",border:\"none\",backgroundColor:\"rgba(255, 255, 255, 0.9)\",cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",boxShadow:\"0 4px 12px rgba(0, 0, 0, 0.15)\",transition:\"all 0.2s ease\",opacity:isAnimating?.5:1},onMouseEnter:e=>{if(!isAnimating){e.currentTarget.style.backgroundColor=\"rgba(255, 255, 255, 1)\";e.currentTarget.style.transform=\"translateY(-50%) scale(1.1)\";}},onMouseLeave:e=>{e.currentTarget.style.backgroundColor=\"rgba(255, 255, 255, 0.9)\";e.currentTarget.style.transform=\"translateY(-50%) scale(1)\";},children:/*#__PURE__*/_jsx(\"svg\",{width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:/*#__PURE__*/_jsx(\"polyline\",{points:\"9 18 15 12 9 6\"})})})]}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"visible\"},children:/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:cards.map((card,index)=>{const state=cardStates.get(index);if(!state)return null;const{position,delay}=state;const absPosition=Math.abs(position);if(absPosition>15)return null;const darknessAmount=position===0?0:Math.min(.4,absPosition*.06+.05);return /*#__PURE__*/_jsx(\"div\",{style:getCardStyle(position,isAnimating,delay),children:/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",borderRadius:16,overflow:\"hidden\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,backgroundColor:`rgba(0, 0, 0, ${darknessAmount})`,borderRadius:16,zIndex:1,transition:isAnimating?`background-color ${animationDuration}ms ease-in-out ${delay}ms`:\"none\"}}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",zIndex:0},children:card.component})]})},`${card.id}-${index}`);})})})]})});}addPropertyControls(ElasticCarouselBasic,{cards:{type:ControlType.Array,title:\"Cards\",description:\"Use the connector tool to connect frames, images, or videos to this carousel. Click [here](https://buy.polar.sh/polar_cl_tiRtCPtwJfX9gzROmkQDtXnLCSWpop1wB9NcC2wc63i) to get the Auto Play add-on.\",control:{type:ControlType.ComponentInstance},maxCount:12},animationOrigin:{type:ControlType.Number,title:\"Animation Origin\",defaultValue:0,min:-15,max:15,step:.5,displayStepper:true},fadeStartIndex:{type:ControlType.Number,title:\"Fade Start\",defaultValue:2,min:0,max:10,step:1,displayStepper:true},cardGap:{type:ControlType.Number,title:\"Card Gap\",defaultValue:280,min:100,max:500,step:10,unit:\"px\"},animationDuration:{type:ControlType.Number,title:\"Animation Duration\",defaultValue:600,min:200,max:2e3,step:50,unit:\"ms\"},sequenceDelay:{type:ControlType.Number,title:\"Sequence Delay\",defaultValue:80,min:0,max:300,step:10,unit:\"ms\"},hideBackground:{type:ControlType.Boolean,title:\"Hide Background\",defaultValue:false,enabledTitle:\"Hidden\",disabledTitle:\"Visible\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#1e293b\",hidden:props=>props.hideBackground===true}});export default ElasticCarouselBasic;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ElasticCarouselBasic\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"1200\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"500\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SequentialCarousel_1.map"],"mappings":"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"}