{"version":3,"file":"Carousel.D0kO2iLI.mjs","names":["useState","useRef","useMemo","originalLength","_Fragment","rawIndex"],"sources":["https:/framerusercontent.com/modules/uHI8ADEy7ZiAXm8p2DSH/v5FnFtdg6s7hmKcdmGaR/Carousel.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{motion,useMotionValue,useAnimation,useCycle}from\"framer-motion\";import{addPropertyControls,ControlType}from\"framer\";import{useEffect,useRef,useState,useMemo}from\"react\";// --- MODAL STYLES (Update Only) ---\nconst modalStyles={overlay:{// ... (existing styles remain)\nposition:\"fixed\",top:0,left:0,width:\"100vw\",height:\"100vh\",backgroundColor:\"rgba(0, 0, 0, 0.95)\",zIndex:9999,display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",alignItems:\"center\"},content:{// ... (existing styles remain)\nposition:\"relative\",maxWidth:\"90%\",maxHeight:\"80vh\",width:\"auto\",height:\"auto\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\",marginBottom:\"10px\"},image:{// ... (existing styles remain)\nmaxWidth:\"100%\",maxHeight:\"100%\",objectFit:\"contain\",display:\"block\"},thumbnailStrip:{// ⭐️ FIX IS HERE ⭐️\ndisplay:\"flex\",// Enforce horizontal scrolling if content overflows\noverflowX:\"auto\",// Prevent vertical wrapping\nflexWrap:\"nowrap\",// Ensure it doesn't exceed 100% of the viewport width on smaller screens\nmaxWidth:\"100vw\",padding:\"10px 0\",justifyContent:\"flex-start\",alignItems:\"center\",zIndex:99999,// Optional: Hide scrollbar but keep scroll functionality (good for mobile)\nWebkitOverflowScrolling:\"touch\",scrollbarWidth:\"none\",msOverflowStyle:\"none\",\"&::-webkit-scrollbar\":{// Chrome, Safari\ndisplay:\"none\"}},thumbnail:{// ... (existing styles remain)\nwidth:\"70px\",height:\"70px\",margin:\"0 5px\",cursor:\"pointer\",opacity:.6,transition:\"opacity 0.2s, border 0.2s\",border:\"3px solid transparent\",flexShrink:0},thumbnailActive:{// ... (existing styles remain)\nopacity:1,borderColor:\"#FFFFFF\"},// ... (rest of modalStyles remain the same)\narrow:{position:\"fixed\",top:\"50%\",transform:\"translateY(-50%)\",width:\"50px\",height:\"50px\",borderRadius:\"50%\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\",cursor:\"pointer\",zIndex:99999,backgroundColor:\"rgba(255, 255, 255, 0.15)\",color:\"#FFFFFF\",fontSize:\"24px\",padding:\"8px\"},closeButton:{position:\"fixed\",top:\"10px\",right:\"10px\",width:\"40px\",height:\"40px\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\",cursor:\"pointer\",color:\"#FFFFFF\",backgroundColor:\"rgba(255, 255, 255, 0.1)\",borderRadius:\"50%\",zIndex:99999},counter:{position:\"fixed\",bottom:\"100px\",left:\"50%\",transform:\"translateX(-50%)\",padding:\"4px 12px\",backgroundColor:\"rgba(0, 0, 0, 0.5)\",color:\"#FFFFFF\",fontSize:\"14px\",borderRadius:\"4px\",zIndex:99999},leftIcon:`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m15 18-6-6 6-6\"/></svg>`,rightIcon:`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m9 18 6-6-6-6\"/></svg>`,closeIcon:`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"18\" x2=\"6\" y1=\"6\" y2=\"18\"/><line x1=\"6\" x2=\"18\" y1=\"6\" y2=\"18\"/></svg>`};/**\n * --- GALLERY MODAL COMPONENT (No Change) ---\n */function GalleryModal({images,initialIndex,onClose}){const[modalIndex,setModalIndex]=useState(initialIndex);const thumbnailRef=useRef(null);const nextImage=()=>{setModalIndex(prev=>(prev+1)%images.length);};const prevImage=()=>{setModalIndex(prev=>(prev-1+images.length)%images.length);};const scrollThumbnailIntoView=index=>{if(thumbnailRef.current){const activeThumbnail=thumbnailRef.current.children[index];if(activeThumbnail){activeThumbnail.scrollIntoView({behavior:\"smooth\",block:\"nearest\",inline:\"center\"});}}};useEffect(()=>{scrollThumbnailIntoView(modalIndex);},[modalIndex]);useEffect(()=>{const handleKeyDown=event=>{if(event.key===\"ArrowRight\"){nextImage();}else if(event.key===\"ArrowLeft\"){prevImage();}else if(event.key===\"Escape\"){onClose();}};window.addEventListener(\"keydown\",handleKeyDown);return()=>window.removeEventListener(\"keydown\",handleKeyDown);},[images]);const imageSrc=images[modalIndex]||\"https://via.placeholder.com/1200x600/CCCCCC/808080?text=No+Image\";return /*#__PURE__*/_jsxs(motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},style:modalStyles.overlay,children:[/*#__PURE__*/_jsx(\"div\",{style:modalStyles.content,children:/*#__PURE__*/_jsx(\"img\",{src:imageSrc,alt:`Gallery Image ${modalIndex+1}`,style:modalStyles.image})}),/*#__PURE__*/_jsx(\"div\",{onClick:prevImage,style:{...modalStyles.arrow,left:\"10px\"},dangerouslySetInnerHTML:{__html:modalStyles.leftIcon}}),/*#__PURE__*/_jsx(\"div\",{onClick:nextImage,style:{...modalStyles.arrow,right:\"10px\"},dangerouslySetInnerHTML:{__html:modalStyles.rightIcon}}),/*#__PURE__*/_jsx(\"div\",{onClick:onClose,style:modalStyles.closeButton,dangerouslySetInnerHTML:{__html:modalStyles.closeIcon}}),/*#__PURE__*/_jsx(\"div\",{ref:thumbnailRef,style:modalStyles.thumbnailStrip,children:images.map((image,index)=>/*#__PURE__*/_jsx(\"img\",{src:image,alt:`Thumbnail ${index+1}`,onClick:()=>setModalIndex(index),style:{...modalStyles.thumbnail,...index===modalIndex?modalStyles.thumbnailActive:{},objectFit:\"cover\"}},index))}),/*#__PURE__*/_jsx(\"div\",{style:modalStyles.counter,children:`${modalIndex+1} of ${images.length}`})]});}// ... (modalStyles and GalleryModal function above remain the same)\n// ----------------------------------------------------------------------\n// --- MAIN CAROUSEL COMPONENT (ImageCarousel) ---\n// ----------------------------------------------------------------------\n/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight fixed\n */export default function ImageCarousel(props){const{images,height,borderRadius,autoScrollSpeed,controls,arrowColor,arrowBackground}=props;const[isModalOpen,setIsModalOpen]=useState(false);const[currentIndex,setCurrentIndex]=useState(0);const[componentWidth,setComponentWidth]=useState(0);const[isDragging,setIsDragging]=useState(false);const containerRef=useRef(null);const animationControls=useAnimation();const x=useMotionValue(0);const[speedState,setSpeedState]=useCycle(\"slow\",\"pause\",\"fast\");const REPEAT_COUNT=10;const filteredImages=images.filter(img=>img);const infiniteImages=useMemo(()=>{return Array(filteredImages.length>0?REPEAT_COUNT:0).fill(filteredImages).flat();},[filteredImages]);const hasImages=filteredImages.length>0;const totalStripWidth=componentWidth*infiniteImages.length;const originalImageSetWidth=componentWidth*filteredImages.length;const DRAG_LOCK=1e5;const dragConstraints={left:-DRAG_LOCK,right:1};// --- UTILITY FUNCTIONS ---\nconst handleImageClick=()=>{if(!isDragging){setIsModalOpen(true);animationControls.stop();setSpeedState(\"pause\");}};const handleModalClose=()=>{setIsModalOpen(false);setSpeedState(\"slow\");};const checkWidth=()=>{if(containerRef.current){setComponentWidth(containerRef.current.offsetWidth);}};const handleDragStart=()=>{animationControls.stop();setIsDragging(true);setSpeedState(\"fast\");};// ⭐️ ENHANCED FIX: Ensures clean snap-to-index and immediate resume\nconst handleDragEnd=(_,info)=>{const offset=info.offset.x;const velocity=info.velocity.x;const width=componentWidth;let newIndex=currentIndex;const DRAG_THRESHOLD=width*.1;// Only allow index change if drag is to the left (forward)\nif(Math.abs(velocity)>600&&velocity<0||Math.abs(offset)>DRAG_THRESHOLD&&offset<0){newIndex=currentIndex+1;}const finalIndex=handleBoundaryCheck(newIndex);// 1. Stop any remaining momentum animation\nanimationControls.stop();// 2. Set x immediately to the target index position\nconst targetX=-finalIndex*componentWidth;x.set(targetX);// 3. Update state and immediately resume slow scroll\nsetCurrentIndex(finalIndex);setIsDragging(false);setSpeedState(\"slow\")// This triggers the useEffect below to resume\n;};const handleBoundaryCheck=newIndex=>{const originalLength=filteredImages.length;if(originalLength===0)return 0;const maxIndex=originalLength*(REPEAT_COUNT-1);if(newIndex>=maxIndex){return newIndex-originalLength;}else if(newIndex<0){return originalLength-1;}return newIndex;};const nextSlide=e=>{e.stopPropagation();const newIndex=handleBoundaryCheck(currentIndex+1);setCurrentIndex(newIndex);setSpeedState(\"fast\");};const prevSlide=e=>{e.stopPropagation();};// --- ANIMATION LOGIC (Continuous Scroll) ---\nconst startContinuousScroll=()=>{if(componentWidth>0&&hasImages){const distanceToScroll=originalImageSetWidth;const duration=distanceToScroll/(autoScrollSpeed*componentWidth);const targetX=-(currentIndex*componentWidth+distanceToScroll);animationControls.start({x:targetX,transition:{x:{type:\"tween\",ease:\"linear\",duration:duration,repeat:Infinity,repeatType:\"loop\",onRepeat:()=>{const nextStartIndex=currentIndex+filteredImages.length;const nextStartX=-(nextStartIndex*componentWidth);animationControls.set({x:nextStartX});}}}});}};// --- EFFECTS ---\nuseEffect(()=>{checkWidth();if(typeof window!==\"undefined\"){window.addEventListener(\"resize\",checkWidth);}return()=>{if(typeof window!==\"undefined\"){window.removeEventListener(\"resize\",checkWidth);}};},[]);// Primary Animation/State Control Effect\nuseEffect(()=>{if(componentWidth>0&&hasImages){animationControls.stop();const targetX=-currentIndex*componentWidth;if(speedState===\"slow\"){// ⭐️ IMPROVEMENT: Ensure it snaps to index *before* starting the infinite scroll\nanimationControls.start({x:targetX,transition:{type:\"tween\",duration:.1}}).then(()=>{startContinuousScroll();});return;}else if(speedState===\"pause\"){animationControls.start({x:targetX,transition:{type:\"tween\",duration:0}});return;}else if(speedState===\"fast\"){animationControls.start({x:targetX,transition:{type:\"spring\",stiffness:500,damping:35}}).then(()=>{setSpeedState(\"slow\");});return;}animationControls.start({x:targetX,transition:{type:\"spring\",stiffness:300,damping:30}});}return()=>animationControls.stop();},[currentIndex,componentWidth,speedState,filteredImages]);// X-MotionValue Listener for Index Tracking\nuseEffect(()=>{if(!hasImages||componentWidth===0)return;const unsubscribe=x.on(\"change\",latestX=>{// ⭐️ IMPROVEMENT: Only update index if NOT dragging and NOT animating (i.e., when auto-scrolling)\n// This prevents conflicts between user interaction and state updates.\nif(!isDragging){const distanceTraveled=-latestX;const currentRawIndex=Math.floor(distanceTraveled/componentWidth);if(currentRawIndex!==currentIndex){setCurrentIndex(currentRawIndex);}}});return()=>unsubscribe();},[x,componentWidth,currentIndex,hasImages,isDragging]);// --- RENDER ---\nif(componentWidth===0||!hasImages){return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{width:\"100%\",height:props.height,display:\"flex\",justifyContent:\"center\",alignItems:\"center\",border:\"1px dashed #999\",borderRadius:8},children:/*#__PURE__*/_jsx(\"p\",{style:{color:\"#999\",fontSize:\"14px\",margin:0,padding:20},children:hasImages?\"Loading...\":\"Add images to the array property in the Properties Panel.\"})});}// --- Display Index Fix ---\nconst rawIndex=currentIndex;const originalLength=filteredImages.length;const currentOriginalIndex=(rawIndex%originalLength+originalLength)%originalLength;const currentDisplayIndex=currentOriginalIndex+1;return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(motion.div,{ref:containerRef,style:{width:\"100%\",height:height,position:\"relative\",overflow:\"hidden\",borderRadius:borderRadius,cursor:\"pointer\"},onClick:handleImageClick,onHoverStart:()=>{animationControls.stop();setSpeedState(\"pause\");},onHoverEnd:()=>{if(!isDragging&&speedState===\"pause\"){const rawIndex=Math.round(x.get()/componentWidth)*-1;setCurrentIndex(rawIndex);setSpeedState(\"slow\");}},children:[/*#__PURE__*/_jsx(motion.div,{style:{display:\"flex\",width:totalStripWidth,height:\"100%\",padding:0,x:x},drag:\"x\",dragConstraints:dragConstraints,onDragStart:handleDragStart,onDragEnd:handleDragEnd,animate:animationControls,dragElastic:0,// ⭐️ Mobile performance tip: useVelocity is set to false to avoid double momentum issues\ndragMomentum:false,children:infiniteImages.map((image,index)=>/*#__PURE__*/_jsx(motion.div,{style:{minWidth:componentWidth,height:\"100%\",flexShrink:0,position:\"relative\"},children:/*#__PURE__*/_jsx(\"img\",{src:image||\"https://via.placeholder.com/1200x600/CCCCCC/808080?text=No+Image\",alt:`Slide ${index+1}`,style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\"}})},index))}),controls.showArrows&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{onClick:e=>e.stopPropagation(),style:{...arrowStyle,left:\"10px\",color:arrowColor,backgroundColor:arrowBackground,opacity:.5,cursor:\"not-allowed\"},dangerouslySetInnerHTML:{__html:controls.leftIcon}}),/*#__PURE__*/_jsx(\"div\",{onClick:nextSlide,style:{...arrowStyle,right:\"10px\",color:arrowColor,backgroundColor:arrowBackground},dangerouslySetInnerHTML:{__html:controls.rightIcon}})]}),hasImages&&/*#__PURE__*/_jsx(\"div\",{style:counterStyle,children:`${currentDisplayIndex} of ${filteredImages.length}`})]}),isModalOpen&&/*#__PURE__*/_jsx(GalleryModal,{images:filteredImages,initialIndex:currentOriginalIndex,onClose:handleModalClose})]});}// ... (arrowStyle, counterStyle, and property controls below remain the same)\n// --- COMPONENT STYLES (No change) ---\nconst arrowStyle={position:\"absolute\",top:\"50%\",transform:\"translateY(-50%)\",width:\"40px\",height:\"40px\",borderRadius:\"50%\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\",cursor:\"pointer\",zIndex:10,padding:\"8px\"};const counterStyle={position:\"absolute\",bottom:\"10px\",right:\"10px\",padding:\"4px 8px\",backgroundColor:\"rgba(0, 0, 0, 0.5)\",color:\"#FFFFFF\",fontSize:\"14px\",borderRadius:\"4px\",zIndex:10,pointerEvents:\"none\"};// --- PROPERTY CONTROLS (No change) ---\nImageCarousel.defaultProps={images:[\"https://via.placeholder.com/1200x600/CCCCCC/808080?text=Slide+1\",\"https://via.placeholder.com/1200x600/AAAAAA/606060?text=Slide+2\"],height:400,arrowColor:\"#FFFFFF\",arrowBackground:\"rgba(0,0,0,0.5)\",borderRadius:8,autoScrollSpeed:5,controls:{showArrows:true,showDots:false,leftIcon:`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m15 18-6-6 6-6\"/></svg>`,rightIcon:`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m9 18 6-6-6-6\"/></svg>`}};addPropertyControls(ImageCarousel,{images:{type:ControlType.Array,title:\"Images\",propertyControl:{type:ControlType.Image,title:\"Image\"},defaultValue:ImageCarousel.defaultProps.images},height:{type:ControlType.Number,title:\"Height (px)\",defaultValue:ImageCarousel.defaultProps.height},borderRadius:{type:ControlType.Number,title:\"Radius\",defaultValue:ImageCarousel.defaultProps.borderRadius},autoScrollSpeed:{type:ControlType.Number,title:\"Auto-Scroll Speed\",min:1,max:20,step:1,defaultValue:ImageCarousel.defaultProps.autoScrollSpeed,unit:\" slides/sec\",description:\"Speed of the continuous loop.\"},controls:{type:ControlType.Object,title:\"Controls\",controls:{showArrows:{type:ControlType.Boolean,title:\"Arrows\",defaultValue:true},showDots:{type:ControlType.Boolean,title:\"Show Dot Nav (Counter is active if this is off)\",defaultValue:false},leftIcon:{type:ControlType.String,title:\"Left Icon (SVG)\",hidden:({showArrows})=>!showArrows,defaultValue:ImageCarousel.defaultProps.controls.leftIcon},rightIcon:{type:ControlType.String,title:\"Right Icon (SVG)\",hidden:({showArrows})=>!showArrows,defaultValue:ImageCarousel.defaultProps.controls.rightIcon}}},arrowColor:{type:ControlType.Color,title:\"Arrow Color\",defaultValue:ImageCarousel.defaultProps.arrowColor},arrowBackground:{type:ControlType.Color,title:\"Arrow BG\",defaultValue:ImageCarousel.defaultProps.arrowBackground}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ImageCarousel\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"auto\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Carousel.map"],"mappings":"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"}