{"version":3,"file":"ImageCarousel.BcC4EX56.mjs","names":["p","u","useRef","useState","useMemo","useCallback"],"sources":["https:/framerusercontent.com/modules/6EVBSPv4hKuaBnKHcbiB/l7LFq9QU63JiRkts0ciU/ImageCarousel.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useRef,useCallback,useEffect,useLayoutEffect,useState,useMemo,isValidElement,Children}from\"react\";const SLOT_OFFSETS=[-2,-1,0,1,2];const CLICK_THRESHOLD=5;// Recursively pull every image URL out of a rendered React tree.\n// Handles <img src>, <img srcSet>, and background-image on any element.\nfunction extractImageUrls(node){const urls=[];const visit=n=>{if(n==null||typeof n===\"boolean\"||typeof n===\"string\")return;if(Array.isArray(n))return n.forEach(visit);if(!/*#__PURE__*/isValidElement(n))return;const p=n.props;if(n.type===\"img\"){if(typeof p.src===\"string\"&&p.src)urls.push(p.src);}const bg=p?.style?.backgroundImage;if(typeof bg===\"string\"){const m=bg.match(/url\\([\"']?([^\"')]+)[\"']?\\)/);if(m?.[1])urls.push(m[1]);}if(p?.children)Children.forEach(p.children,visit);};visit(node);// Dedupe, preserve order\nconst seen=new Set;return urls.filter(u=>seen.has(u)?false:(seen.add(u),true));}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function ImageCarousel(props){const{source=\"cms\",cmsGallery,images=[],centerWidth=80,sideOpacity=.5,transitionDuration=.5,transitionEasing=\"cubic-bezier(0.22, 1, 0.36, 1)\",snapBackDuration=.3,swipeThreshold=20,velocityThreshold=.5,gap=12,borderRadius=12,autoPlay=false,autoPlayInterval=4,style}=props;// Hidden host where the CMS Gallery renders so we can read its images.\n// We mount it but make it invisible — this is essential. Using display:none\n// would unmount it and we'd get no images.\nconst galleryHostRef=useRef(null);const[extractedFromDom,setExtractedFromDom]=useState([]);// Try React-tree extraction first (fast, synchronous)\nconst fromReactTree=useMemo(()=>source===\"cms\"?extractImageUrls(cmsGallery):[],[source,cmsGallery]);// Fallback: scan the DOM of the hidden host after Framer renders the\n// Gallery. Some Framer Gallery renders only populate <img> elements\n// after mount, so React-tree extraction returns nothing.\nuseEffect(()=>{if(source!==\"cms\")return;const host=galleryHostRef.current;if(!host)return;const scan=()=>{const found=[];const imgs=host.querySelectorAll(\"img\");imgs.forEach(img=>{const s=img.currentSrc||img.getAttribute(\"src\");if(s)found.push(s);});// Also check background-image on divs\nconst all=host.querySelectorAll(\"*\");all.forEach(el=>{const bg=window.getComputedStyle(el).backgroundImage;if(bg&&bg!==\"none\"){const m=bg.match(/url\\([\"']?([^\"')]+)[\"']?\\)/);if(m?.[1])found.push(m[1]);}});const seen=new Set;const deduped=found.filter(u=>seen.has(u)?false:(seen.add(u),true));setExtractedFromDom(prev=>{if(prev.length===deduped.length&&prev.every((v,i)=>v===deduped[i])){return prev;}return deduped;});};scan();const mo=new MutationObserver(scan);mo.observe(host,{childList:true,subtree:true,attributes:true,attributeFilter:[\"src\",\"style\"]});return()=>mo.disconnect();},[source,cmsGallery]);const normalizedImages=useMemo(()=>{if(source===\"cms\"){// Prefer DOM scan (most reliable) but fall back to React tree\nreturn extractedFromDom.length>0?extractedFromDom:fromReactTree;}return images.filter(s=>typeof s===\"string\"&&!!s);},[source,extractedFromDom,fromReactTree,images]);const count=normalizedImages.length;const[currentIndex,setCurrentIndex]=useState(0);useEffect(()=>{if(count>0&&currentIndex>=count)setCurrentIndex(0);},[count,currentIndex]);// --- Refs ---\nconst containerRef=useRef(null);const trackRef=useRef(null);const slotRefs=useRef([]);const containerWidthRef=useRef(0);const isDragging=useRef(false);const hasDragged=useRef(false);const dragStartX=useRef(0);const dragStartTime=useRef(0);const dragDelta=useRef(0);const rafId=useRef(0);const locked=useRef(false);const autoPlayRef=useRef(null);const pendingNav=useRef(0);const propsRef=useRef({centerWidth,gap,sideOpacity,transitionDuration,transitionEasing,snapBackDuration,swipeThreshold,velocityThreshold});propsRef.current={centerWidth,gap,sideOpacity,transitionDuration,transitionEasing,snapBackDuration,swipeThreshold,velocityThreshold};const getSlidePitch=useCallback(()=>{const w=containerWidthRef.current;return w*propsRef.current.centerWidth/100+propsRef.current.gap;},[]);const applyPosition=useCallback(px=>{const track=trackRef.current;if(!track)return;track.style.transform=`translate3d(${px}px,0,0)`;const pitch=getSlidePitch();if(pitch===0)return;const progress=px/pitch;const so=propsRef.current.sideOpacity;const invSo=1-so;for(let i=0;i<5;i++){const el=slotRefs.current[i];if(!el)continue;const slot=SLOT_OFFSETS[i];let dist=slot-progress;if(dist<0)dist=-dist;let o;if(dist>=1)o=so;else o=so+invSo*(1-dist);el.style.opacity=o>1?\"1\":`${o}`;}},[getSlidePitch]);const animateToSlide=useCallback(direction=>{const track=trackRef.current;if(!track)return;const p=propsRef.current;locked.current=true;pendingNav.current=direction;const pitch=getSlidePitch();const target=-direction*pitch;track.style.willChange=\"transform\";track.style.transition=`transform ${p.transitionDuration}s ${p.transitionEasing}`;track.style.transform=`translate3d(${target}px,0,0)`;for(let i=0;i<5;i++){const el=slotRefs.current[i];if(!el)continue;const slot=SLOT_OFFSETS[i];el.style.willChange=\"opacity\";el.style.transition=`opacity ${p.transitionDuration}s ${p.transitionEasing}`;el.style.opacity=slot===direction?\"1\":`${p.sideOpacity}`;}},[getSlidePitch]);const snapBack=useCallback(()=>{const track=trackRef.current;if(!track)return;const p=propsRef.current;locked.current=true;pendingNav.current=0;track.style.willChange=\"transform\";track.style.transition=`transform ${p.snapBackDuration}s ${p.transitionEasing}`;track.style.transform=\"translate3d(0,0,0)\";for(let i=0;i<5;i++){const el=slotRefs.current[i];if(!el)continue;const slot=SLOT_OFFSETS[i];el.style.willChange=\"opacity\";el.style.transition=`opacity ${p.snapBackDuration}s ${p.transitionEasing}`;el.style.opacity=slot===0?\"1\":`${p.sideOpacity}`;}},[]);const clearWillChange=useCallback(()=>{const track=trackRef.current;if(track)track.style.willChange=\"auto\";for(let i=0;i<5;i++){const el=slotRefs.current[i];if(el)el.style.willChange=\"auto\";}},[]);useLayoutEffect(()=>{const c=containerRef.current;if(!c)return;containerWidthRef.current=c.offsetWidth;const ro=new ResizeObserver(entries=>{const entry=entries[0];if(entry)containerWidthRef.current=entry.contentRect.width||c.offsetWidth;});ro.observe(c);return()=>ro.disconnect();},[]);useEffect(()=>{const track=trackRef.current;if(!track)return;const onEnd=e=>{if(e.target!==track||e.propertyName!==\"transform\")return;const dir=pendingNav.current;pendingNav.current=0;if(dir!==0){setCurrentIndex(prev=>{const c=normalizedImages.length;if(c===0)return 0;const next=prev+dir;if(next<0)return c-1;if(next>=c)return 0;return next;});}else{track.style.transition=\"none\";track.style.transform=\"translate3d(0,0,0)\";const so=propsRef.current.sideOpacity;for(let i=0;i<5;i++){const el=slotRefs.current[i];if(!el)continue;el.style.transition=\"none\";el.style.opacity=SLOT_OFFSETS[i]===0?\"1\":`${so}`;}clearWillChange();locked.current=false;}};track.addEventListener(\"transitionend\",onEnd);return()=>track.removeEventListener(\"transitionend\",onEnd);// eslint-disable-next-line react-hooks/exhaustive-deps\n},[normalizedImages.length]);useLayoutEffect(()=>{const track=trackRef.current;if(track){track.style.transition=\"none\";track.style.transform=\"translate3d(0,0,0)\";}const so=propsRef.current.sideOpacity;for(let i=0;i<5;i++){const el=slotRefs.current[i];if(!el)continue;el.style.transition=\"none\";el.style.opacity=SLOT_OFFSETS[i]===0?\"1\":`${so}`;}clearWillChange();locked.current=false;},[currentIndex,clearWillChange]);useEffect(()=>{if(!autoPlay||count<=1)return;const id=setInterval(()=>{if(!locked.current&&!isDragging.current)animateToSlide(1);},autoPlayInterval*1e3);autoPlayRef.current=id;return()=>{clearInterval(id);autoPlayRef.current=null;};},[autoPlay,autoPlayInterval,count,animateToSlide]);const pauseAutoPlay=useCallback(()=>{if(autoPlayRef.current){clearInterval(autoPlayRef.current);autoPlayRef.current=null;}},[]);const handlePointerDown=useCallback(e=>{if(count<=1||locked.current)return;if(e.pointerType===\"mouse\"&&e.button!==0)return;pauseAutoPlay();isDragging.current=true;hasDragged.current=false;dragStartX.current=e.clientX;dragStartTime.current=performance.now();dragDelta.current=0;try{e.currentTarget.setPointerCapture(e.pointerId);}catch{}const track=trackRef.current;if(track){track.style.transition=\"none\";track.style.willChange=\"transform\";}for(let i=0;i<5;i++){const el=slotRefs.current[i];if(el){el.style.transition=\"none\";el.style.willChange=\"opacity\";}}},[count,pauseAutoPlay]);const handlePointerMove=useCallback(e=>{if(!isDragging.current)return;const delta=e.clientX-dragStartX.current;dragDelta.current=delta;if(!hasDragged.current){const absDelta=delta<0?-delta:delta;if(absDelta>CLICK_THRESHOLD)hasDragged.current=true;}if(rafId.current)return;rafId.current=requestAnimationFrame(()=>{rafId.current=0;applyPosition(dragDelta.current);});},[applyPosition]);const handlePointerUp=useCallback(e=>{if(!isDragging.current)return;isDragging.current=false;if(rafId.current){cancelAnimationFrame(rafId.current);rafId.current=0;}const delta=dragDelta.current;const absDelta=delta<0?-delta:delta;const elapsed=performance.now()-dragStartTime.current;const velocity=absDelta/(elapsed<1?1:elapsed);const pitch=getSlidePitch();const p=propsRef.current;if(hasDragged.current){const threshold=pitch*(p.swipeThreshold/100);if(absDelta>threshold||velocity>p.velocityThreshold){animateToSlide(delta<0?1:-1);}else{snapBack();}}else{const container=containerRef.current;if(container){const rect=container.getBoundingClientRect();const x=e.clientX-rect.left;const containerW=rect.width;const sideZone=containerW*(100-p.centerWidth)/200;if(x<sideZone)animateToSlide(-1);else if(x>containerW-sideZone)animateToSlide(1);}}dragDelta.current=0;},[getSlidePitch,animateToSlide,snapBack]);const handleKeyDown=useCallback(e=>{if(locked.current)return;if(e.key===\"ArrowLeft\"){e.preventDefault();animateToSlide(-1);}else if(e.key===\"ArrowRight\"){e.preventDefault();animateToSlide(1);}},[animateToSlide]);useEffect(()=>{return()=>{if(rafId.current)cancelAnimationFrame(rafId.current);};},[]);const getIndex=offset=>((currentIndex+offset)%count+count)%count;const centerOffset=(100-centerWidth)/2;const slots=count>1?SLOT_OFFSETS:[0];const slotData=useMemo(()=>slots.map(slot=>({slot,leftCalc:`calc(${centerOffset+slot*centerWidth}% + ${slot*gap}px)`})),// eslint-disable-next-line react-hooks/exhaustive-deps\n[slots.length,centerOffset,centerWidth,gap]);// Hidden host div where the CMS gallery is rendered just to extract images.\n// Positioned off-screen but kept in DOM so its <img>s actually load.\nconst hiddenHost=source===\"cms\"&&cmsGallery?/*#__PURE__*/_jsx(\"div\",{ref:galleryHostRef,\"aria-hidden\":\"true\",style:{position:\"absolute\",width:1,height:1,overflow:\"hidden\",opacity:0,pointerEvents:\"none\",left:-9999,top:-9999},children:cmsGallery}):null;// --- Empty state ---\nif(count===0){return /*#__PURE__*/_jsxs(\"div\",{style:{...style,position:\"relative\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",width:\"100%\",height:\"100%\",color:\"#999\",fontFamily:\"Inter, sans-serif\",fontSize:14,padding:16,textAlign:\"center\"},children:[source===\"cms\"?\"Insert a Gallery from your CMS template and connect it to the CMS Gallery slot →\":\"Add images to the Images array →\",hiddenHost]});}return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,tabIndex:0,onKeyDown:handleKeyDown,onPointerDown:handlePointerDown,onPointerMove:handlePointerMove,onPointerUp:handlePointerUp,onPointerCancel:handlePointerUp,style:{...style,position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\",cursor:count>1?\"grab\":\"default\",touchAction:\"pan-y\",outline:\"none\",userSelect:\"none\",contain:\"layout paint\"},children:[/*#__PURE__*/_jsx(\"div\",{ref:trackRef,style:{position:\"absolute\",inset:0},children:slotData.map(({slot,leftCalc},i)=>{const imgIndex=getIndex(slot);const src=normalizedImages[imgIndex];const isCenter=slot===0;const isFar=slot===-2||slot===2;return /*#__PURE__*/_jsx(\"div\",{ref:el=>{slotRefs.current[i]=el;},style:{position:\"absolute\",top:0,left:leftCalc,width:`${centerWidth}%`,height:\"100%\",opacity:isCenter?1:sideOpacity,zIndex:isCenter?2:1,borderRadius,overflow:\"hidden\",pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(\"img\",{src:src,alt:\"\",draggable:false,decoding:\"async\",loading:isFar?\"lazy\":\"eager\",// @ts-ignore\nfetchpriority:isCenter?\"high\":\"low\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\",backfaceVisibility:\"hidden\"}})},`slot-${slot}`);})}),hiddenHost]});}addPropertyControls(ImageCarousel,{source:{type:ControlType.Enum,title:\"Source\",defaultValue:\"cms\",options:[\"cms\",\"manual\"],optionTitles:[\"CMS\",\"Manual\"],displaySegmentedControl:true},cmsGallery:{type:ControlType.ComponentInstance,title:\"CMS Gallery\",hidden:props=>props.source!==\"cms\"},images:{type:ControlType.Array,title:\"Images\",control:{type:ControlType.Image},defaultValue:[],hidden:props=>props.source!==\"manual\"},centerWidth:{type:ControlType.Number,title:\"Center Width\",defaultValue:80,min:40,max:95,step:1,unit:\"%\"},sideOpacity:{type:ControlType.Number,title:\"Side Opacity\",defaultValue:.5,min:0,max:1,step:.05},transitionDuration:{type:ControlType.Number,title:\"Transition Speed\",defaultValue:.5,min:.1,max:2,step:.1,unit:\"s\"},transitionEasing:{type:ControlType.Enum,title:\"Easing\",defaultValue:\"cubic-bezier(0.22, 1, 0.36, 1)\",options:[\"cubic-bezier(0.22, 1, 0.36, 1)\",\"cubic-bezier(0.33, 1, 0.68, 1)\",\"cubic-bezier(0.16, 1, 0.3, 1)\",\"cubic-bezier(0.34, 1.56, 0.64, 1)\",\"cubic-bezier(0.65, 0, 0.35, 1)\",\"cubic-bezier(0, 0, 0.2, 1)\",\"ease\",\"linear\"],optionTitles:[\"Ease Out Expo\",\"Ease Out Cubic\",\"Ease Out Quint\",\"Spring\",\"Ease In Out Cubic\",\"Ease Out Quart\",\"Ease\",\"Linear\"]},snapBackDuration:{type:ControlType.Number,title:\"Snap Back Speed\",defaultValue:.3,min:.1,max:1,step:.05,unit:\"s\"},swipeThreshold:{type:ControlType.Number,title:\"Swipe Threshold\",defaultValue:20,min:5,max:50,step:5,unit:\"%\"},velocityThreshold:{type:ControlType.Number,title:\"Velocity Threshold\",defaultValue:.5,min:.1,max:2,step:.1},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:12,min:0,max:48,step:2,unit:\"px\"},borderRadius:{type:ControlType.Number,title:\"Border Radius\",defaultValue:12,min:0,max:48,step:2,unit:\"px\"},autoPlay:{type:ControlType.Boolean,title:\"Auto Play\",defaultValue:false},autoPlayInterval:{type:ControlType.Number,title:\"Interval\",defaultValue:4,min:1,max:20,step:.5,unit:\"s\",hidden:props=>!props.autoPlay}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ImageCarousel\",\"slots\":[\"cmsGallery\"],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ImageCarousel.map"],"mappings":"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"}