{"version":3,"file":"LoopingCarousel.DyMITKAp.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/n252FbEUjSU9esYQXF8f/0rzueDAkQdu0C4O6wod6/LoopingCarousel.js"],"sourcesContent":["// Fully responsive looping images carousel component\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useState,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{motion,useAnimationFrame,useInView}from\"framer-motion\";/**\n * @framerIntrinsicWidth 800\n * @framerIntrinsicHeight 400\n * \n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */function LoopingCarousel(props){const{images=[{image:{src:\"https://framerusercontent.com/images/GfGkADagM4KEibNcIiRUWlfrR0.jpg\",alt:\"Gradient 1\"}},{image:{src:\"https://framerusercontent.com/images/aNsAT3jCvt4zglbWCUoFe33Q.jpg\",alt:\"Gradient 2\"}},{image:{src:\"https://framerusercontent.com/images/BYnxEV1zjYb9bhWh1IwBZ1ZoS60.jpg\",alt:\"Gradient 3\"}},{image:{src:\"https://framerusercontent.com/images/2uTNEj5aTl2K3NJaEFWMbnrA.jpg\",alt:\"Gradient 4\"}},{image:{src:\"https://framerusercontent.com/images/f9RiWoNpmlCMqVRIHz8l8wYfeI.jpg\",alt:\"Gradient 5\"}}],speed=1,gap=20,imageHeight=400,imageHeightMode=\"fixed\",pauseOnHover=true,paddingTop=0,paddingBottom=0,imageFit=\"cover\",enableReveal=false,revealSpeed=.6,revealStagger=.1}=props;const[offset,setOffset]=useState(0);const[isPaused,setIsPaused]=useState(false);const[singleSetWidth,setSingleSetWidth]=useState(0);const[isReady,setIsReady]=useState(false);const containerRef=useRef(null);const imagesRef=useRef(null);const isStatic=useIsStaticRenderer();const isInView=useInView(containerRef,{once:true,amount:.2});const duplicatedImages=[...images,...images,...images];const isFillMode=imageHeightMode===\"fill\";const calculatedImageHeight=isFillMode?\"100%\":`${imageHeight}px`;const calculatedWidth=isFillMode?\"auto\":undefined;useEffect(()=>{if(!imagesRef.current||isStatic)return;const firstImage=imagesRef.current.children[0];if(!firstImage)return;const imageWidth=firstImage.offsetWidth;const totalWidth=(imageWidth+gap)*images.length;setSingleSetWidth(totalWidth);// Initialize offset to start at the middle set\nif(!isReady&&totalWidth>0){setOffset(-totalWidth);setIsReady(true);}},[images.length,gap,imageHeight,imageHeightMode,imageFit,isReady]);useAnimationFrame((time,delta)=>{if(isStatic||isPaused||singleSetWidth===0||!isReady)return;setOffset(prevOffset=>{const newOffset=prevOffset-speed*(delta/16);// Reset position seamlessly when we've scrolled one full set\n// When we reach -singleSetWidth, jump back to 0\nif(newOffset<=-singleSetWidth){return newOffset+singleSetWidth;}return newOffset;});});const handleMouseEnter=()=>{if(pauseOnHover&&!isStatic){startTransition(()=>setIsPaused(true));}};const handleMouseLeave=()=>{if(pauseOnHover&&!isStatic){startTransition(()=>setIsPaused(false));}};return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{width:\"100%\",height:\"100%\",minWidth:\"100px\",minHeight:\"100px\",overflow:\"hidden\",position:\"relative\",paddingTop:`${paddingTop}px`,paddingBottom:`${paddingBottom}px`,display:\"flex\",flexDirection:\"column\"},onMouseEnter:handleMouseEnter,onMouseLeave:handleMouseLeave,children:/*#__PURE__*/_jsx(motion.div,{ref:imagesRef,style:{display:\"flex\",gap:`${gap}px`,height:isFillMode?\"100%\":\"auto\",minHeight:isFillMode?\"50px\":`${Math.max(imageHeight,50)}px`,alignItems:\"flex-end\",willChange:\"transform\",transform:`translateX(${offset}px)`,flex:isFillMode?1:\"0 0 auto\"},children:duplicatedImages.map((item,index)=>/*#__PURE__*/_jsx(motion.div,{style:{flexShrink:0,height:calculatedImageHeight,minHeight:isFillMode?\"50px\":undefined,width:calculatedWidth,aspectRatio:isFillMode?undefined:\"0.7\",position:\"relative\",overflow:\"hidden\",minWidth:isFillMode&&imageFit===\"contain\"?\"100px\":undefined},initial:enableReveal&&!isStatic?{y:\"100%\",opacity:0}:false,animate:enableReveal&&!isStatic?{y:isInView?0:\"100%\",opacity:isInView?1:0}:{},transition:enableReveal&&!isStatic?{duration:revealSpeed,delay:index%images.length*revealStagger,ease:\"easeOut\"}:{},children:/*#__PURE__*/_jsx(\"img\",{src:item.image.src,alt:item.image.alt,style:{width:isFillMode&&imageFit===\"contain\"?\"auto\":\"100%\",height:\"100%\",objectFit:imageFit,display:\"block\",objectPosition:\"bottom\",minWidth:isFillMode&&imageFit===\"contain\"?\"100%\":undefined}})},index))})});}export default LoopingCarousel;addPropertyControls(LoopingCarousel,{images:{type:ControlType.Array,title:\"Images\",control:{type:ControlType.Object,controls:{image:{type:ControlType.ResponsiveImage,title:\"Image\"}}},defaultValue:[{image:{src:\"https://framerusercontent.com/images/GfGkADagM4KEibNcIiRUWlfrR0.jpg\",alt:\"Gradient 1\"}},{image:{src:\"https://framerusercontent.com/images/aNsAT3jCvt4zglbWCUoFe33Q.jpg\",alt:\"Gradient 2\"}},{image:{src:\"https://framerusercontent.com/images/BYnxEV1zjYb9bhWh1IwBZ1ZoS60.jpg\",alt:\"Gradient 3\"}},{image:{src:\"https://framerusercontent.com/images/2uTNEj5aTl2K3NJaEFWMbnrA.jpg\",alt:\"Gradient 4\"}},{image:{src:\"https://framerusercontent.com/images/f9RiWoNpmlCMqVRIHz8l8wYfeI.jpg\",alt:\"Gradient 5\"}}]},speed:{type:ControlType.Number,title:\"Speed\",defaultValue:1,min:.1,max:5,step:.1},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:20,min:0,max:200,step:1,unit:\"px\"},imageHeightMode:{type:ControlType.Enum,title:\"Height Mode\",options:[\"fixed\",\"fill\"],optionTitles:[\"Fixed\",\"Fill Container\"],defaultValue:\"fixed\",displaySegmentedControl:true},imageHeight:{type:ControlType.Number,title:\"Image Height\",defaultValue:400,min:100,step:10,unit:\"px\",hidden:({imageHeightMode})=>imageHeightMode===\"fill\"},pauseOnHover:{type:ControlType.Boolean,title:\"Pause on Hover\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\"},paddingTop:{type:ControlType.Number,title:\"Padding Top\",defaultValue:0,min:0,max:200,step:5,unit:\"px\"},paddingBottom:{type:ControlType.Number,title:\"Padding Bottom\",defaultValue:0,min:0,max:200,step:5,unit:\"px\"},imageFit:{type:ControlType.Enum,title:\"Image Fit\",options:[\"cover\",\"contain\"],optionTitles:[\"Fill (Same Height)\",\"Fit (Original Ratio)\"],defaultValue:\"cover\",displaySegmentedControl:true},enableReveal:{type:ControlType.Boolean,title:\"Reveal Animation\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},revealSpeed:{type:ControlType.Number,title:\"Reveal Speed\",defaultValue:.6,min:.1,max:2,step:.1,unit:\"s\",hidden:({enableReveal})=>!enableReveal},revealStagger:{type:ControlType.Number,title:\"Reveal Stagger\",defaultValue:.1,min:0,max:.5,step:.05,unit:\"s\",hidden:({enableReveal})=>!enableReveal}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"LoopingCarousel\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"400\",\"framerIntrinsicWidth\":\"800\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./LoopingCarousel.map"],"mappings":"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"}