{"version":3,"file":"ImageCarousel.qfZHopVg.mjs","names":["useRef","useState","useMemo","useCallback"],"sources":["https:/framerusercontent.com/modules/6EVBSPv4hKuaBnKHcbiB/MJRBHmUW3357s261MJig/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\";// How many slides are kept mounted on each side of center.\n// Slots ±1 are partially visible, ±2 and ±3 sit outside the clip and act as\n// preload buffers, so an image is always decoded before it can be seen.\nconst RADIUS=3;const WINDOW=RADIUS*2+1;// Movement under this is a click, not a drag: nothing moves, nothing fades.\nconst CLICK_THRESHOLD=3;const RUBBER=.3;// --- Swipe feel. Tune these if it's still too eager / too stubborn. ---\n// Swipe Threshold is a % of the slide pitch, which gets absurd on wide\n// containers (20% of a 970px pitch = 195px of dragging). Clamp it to a real\n// distance the hand actually travels.\nconst MAX_TRIGGER_PX=30;const MIN_TRIGGER_PX=12;// Where the slide would coast to if we let it. A flick counts as intent even\n// when the finger barely moved.\nconst PROJECT_MS=250;// Velocity is measured over the last N ms of movement, not the whole drag.\nconst VELOCITY_WINDOW=100;// Any release still moving at least this fast advances, whatever the distance.\n// Caps the Velocity Threshold control, whose 0.5 px/ms default is 500 px/s —\n// faster than an ordinary mouse drag, so it almost never fired.\nconst FLICK_PX_PER_MS=.12;const mod=(n,m)=>(n%m+m)%m;// Slots ±2/±3 live outside the container's clip, so the browser never paints\n// them and therefore never decodes them — the first time one slides into view\n// it paints a blank (transparent) frame while decoding. decode() warms the\n// bitmap while the slide is still off-screen. Once per element, not per render.\nfunction warmDecode(el){if(!el||!el.src||el.dataset.warm===el.src)return;el.dataset.warm=el.src;el.decode?.().catch(()=>{});}function pickFromSrcSet(srcSet){const first=srcSet.split(\",\")[0]?.trim().split(/\\s+/)[0];return first||null;}// Recursively pull every image URL out of a rendered React tree.\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);else if(typeof p.srcSet===\"string\"){const u=pickFromSrcSet(p.srcSet);if(u)urls.push(u);}}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);const 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;/* ---------------------------------------------------------------- CMS */const galleryHostRef=useRef(null);const[extractedFromDom,setExtractedFromDom]=useState([]);const fromReactTree=useMemo(()=>source===\"cms\"?extractImageUrls(cmsGallery):[],[source,cmsGallery]);useEffect(()=>{if(source!==\"cms\")return;const host=galleryHostRef.current;if(!host)return;let scheduled=0;const scan=()=>{scheduled=0;const found=[];host.querySelectorAll(\"img\").forEach(img=>{const s=img.currentSrc||img.getAttribute(\"src\");if(s)found.push(s);else{const ss=img.getAttribute(\"srcset\");const u=ss?pickFromSrcSet(ss):null;if(u)found.push(u);}});host.querySelectorAll(\"*\").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=>prev.length===deduped.length&&prev.every((v,i)=>v===deduped[i])?prev:deduped);};// Debounce with rAF: the observer can fire dozens of times per frame\n// while Framer hydrates the gallery, and scan() reads computed styles.\nconst schedule=()=>{if(scheduled)return;scheduled=requestAnimationFrame(scan);};scan();const mo=new MutationObserver(schedule);mo.observe(host,{childList:true,subtree:true,attributes:true,attributeFilter:[\"src\",\"srcset\",\"style\"]});return()=>{mo.disconnect();if(scheduled)cancelAnimationFrame(scheduled);};},[source,cmsGallery]);const normalizedImages=useMemo(()=>{if(source===\"cms\"){return extractedFromDom.length>0?extractedFromDom:fromReactTree;}return images.filter(s=>typeof s===\"string\"&&!!s);},[source,extractedFromDom,fromReactTree,images]);const count=normalizedImages.length;/* ------------------------------------------------------- virtual list */// Every mounted slide keeps a *stable key*, so React never swaps the `src`\n// of an existing <img> — it just moves the node one slot over. That is what\n// removes the flash on every step. When there are fewer images than slots,\n// the list is repeated until it is long enough for the keys to stay unique.\nconst virtualCount=useMemo(()=>{if(count<=1)return count;return count>=WINDOW?count:count*Math.ceil(WINDOW/count);},[count]);const[currentIndex,setCurrentIndex]=useState(0);useEffect(()=>{if(virtualCount>0&&currentIndex>=virtualCount)setCurrentIndex(0);},[virtualCount,currentIndex]);const items=useMemo(()=>{if(virtualCount===0)return[];if(virtualCount===1)return[{k:0,slot:0,src:normalizedImages[0]}];const ci=mod(currentIndex,virtualCount);const half=Math.floor(virtualCount/2);const out=[];for(let k=0;k<virtualCount;k++){const slot=mod(k-ci+half,virtualCount)-half;if(slot<-RADIUS||slot>RADIUS)continue;out.push({k,slot,src:normalizedImages[k%count]});}out.sort((a,b)=>a.k-b.k);return out;},[virtualCount,currentIndex,normalizedImages,count]);/* ---------------------------------------------------------- refs/state */const containerRef=useRef(null);const trackRef=useRef(null);const nodes=useRef(new Map);const itemsRef=useRef(items);const virtualCountRef=useRef(virtualCount);const widthRef=useRef(0);const offsetRef=useRef(0)// current px offset of the track\n;const nextX=useRef(0);const dragBase=useRef(0);const isDragging=useRef(false);const hasDragged=useRef(false);const startX=useRef(0);const scaleRef=useRef(1);const history=useRef([]);const rafId=useRef(0);const animating=useRef(false);const committing=useRef(false);const pendingDir=useRef(0);const animToken=useRef(0);const timerId=useRef(null);const lastInteraction=useRef(0);const propsRef=useRef({centerWidth,gap,sideOpacity,transitionDuration,transitionEasing,snapBackDuration,swipeThreshold,velocityThreshold});propsRef.current={centerWidth,gap,sideOpacity,transitionDuration,transitionEasing,snapBackDuration,swipeThreshold,velocityThreshold};// A parent transform (Framer canvas zoom, a scaled section, a preview\n// frame) makes clientX and getBoundingClientRect() report *screen* px,\n// while translate3d() applies *local* px. offsetWidth is always local, so\n// their ratio converts between the two.\nconst getScale=useCallback(()=>{const c=containerRef.current;if(!c||!c.offsetWidth)return 1;const s=c.getBoundingClientRect().width/c.offsetWidth;return s>.01&&s<100?s:1;},[]);const getPitch=useCallback(()=>{const p=propsRef.current;// Measure the slide itself — it is the element whose width defines the\n// step, and offsetWidth is immune to transforms and to stale caches.\nconst list=itemsRef.current;for(let i=0;i<list.length;i++){const el=nodes.current.get(list[i].k);if(el?.offsetWidth)return el.offsetWidth+p.gap;}const cw=containerRef.current?.offsetWidth||widthRef.current;if(!cw)return 0;widthRef.current=cw;return cw*p.centerWidth/100+p.gap;},[]);// px/ms in local space over the last VELOCITY_WINDOW of pointer movement.\n// Sampling a short recent window instead of averaging the whole gesture\n// means a slow drag that ends in a flick still reads as a flick.\nconst getVelocity=useCallback(()=>{const h=history.current;if(h.length<2)return 0;const a=h[0];const b=h[h.length-1];// Finger parked before release → no throw, whatever happened earlier.\nif(performance.now()-b.t>VELOCITY_WINDOW)return 0;const dt=b.t-a.t;if(dt<1)return 0;return(b.x-a.x)/dt/(scaleRef.current||1);},[]);// Single write path for the track transform + slide opacities.\nconst paint=useCallback(x=>{const track=trackRef.current;if(!track)return;track.style.transform=`translate3d(${x}px,0,0)`;const pitch=getPitch();const p=pitch?x/pitch:0;const so=propsRef.current.sideOpacity;const list=itemsRef.current;for(let i=0;i<list.length;i++){const el=nodes.current.get(list[i].k);if(!el)continue;const dist=Math.abs(list[i].slot-p);const o=dist>=1?so:so+(1-so)*(1-dist);el.style.opacity=`${o>1?1:o}`;el.style.zIndex=dist<.5?\"2\":\"1\";}},[getPitch]);const killTransitions=useCallback(()=>{const track=trackRef.current;if(track)track.style.transition=\"none\";for(const it of itemsRef.current){const el=nodes.current.get(it.k);if(el)el.style.transition=\"none\";}},[]);const cancelAnim=useCallback(()=>{animToken.current++;animating.current=false;pendingDir.current=0;if(timerId.current){clearTimeout(timerId.current);timerId.current=null;}},[]);const readTrackX=useCallback(()=>{const track=trackRef.current;if(!track)return 0;const t=window.getComputedStyle(track).transform;if(!t||t===\"none\")return 0;const m=t.match(/matrix(3d)?\\(([^)]+)\\)/);if(!m)return 0;const v=m[2].split(\",\").map(s=>parseFloat(s));return m[1]?v[12]||0:v[4]||0;},[]);// Called by transitionend *or* by the safety timer — whichever wins.\nconst settle=useCallback(dir=>{animating.current=false;pendingDir.current=0;if(timerId.current){clearTimeout(timerId.current);timerId.current=null;}offsetRef.current=0;const vc=virtualCountRef.current;if(dir!==0&&vc>1){// Do NOT reset the transform here — the track must stay where\n// it is until React commits the new index, otherwise it snaps\n// back for one frame. The layout effect below does the reset in\n// the same commit as the new slot positions.\ncommitting.current=true;setCurrentIndex(prev=>mod(prev+dir,vc));}else{killTransitions();paint(0);}},[killTransitions,paint]);const animateTo=useCallback(dir=>{const track=trackRef.current;if(!track)return;const p=propsRef.current;const pitch=getPitch();const from=offsetRef.current;const target=dir===0?0:-dir*pitch;const duration=dir===0?p.snapBackDuration:p.transitionDuration;cancelAnim();// Nothing to animate → finish now. Without this the component waits\n// forever for a transitionend that never fires and locks up.\nif(!pitch||Math.abs(target-from)<.5){settle(dir);return;}animating.current=true;pendingDir.current=dir;const token=++animToken.current;offsetRef.current=target;track.style.transition=`transform ${duration}s ${p.transitionEasing}`;track.style.transform=`translate3d(${target}px,0,0)`;for(const it of itemsRef.current){const el=nodes.current.get(it.k);if(!el)continue;el.style.transition=`opacity ${duration}s ${p.transitionEasing}`;el.style.opacity=it.slot===dir?\"1\":`${p.sideOpacity}`;el.style.zIndex=it.slot===dir?\"2\":\"1\";}timerId.current=setTimeout(()=>{if(animToken.current!==token)return;settle(dir);},duration*1e3+120);},[getPitch,cancelAnim,settle]);/* --------------------------------------------------------- sync layout */useLayoutEffect(()=>{itemsRef.current=items;virtualCountRef.current=virtualCount;// React has committed the new index — release the gate here, before any\n// early return below, or a commit that lands mid-drag latches it on and\n// every future pointerdown is rejected.\ncommitting.current=false;if(!trackRef.current)return;if(animating.current)return;if(isDragging.current){paint(offsetRef.current);return;}killTransitions();offsetRef.current=0;paint(0);},[items,virtualCount,sideOpacity,centerWidth,gap,paint,killTransitions]);useLayoutEffect(()=>{const c=containerRef.current;if(!c)return;const measure=()=>{widthRef.current=c.offsetWidth;};measure();const ro=new ResizeObserver(()=>{measure();// Percent-based layout follows the resize on its own, but a px\n// offset from a drag/animation would be wrong at the new width.\nif(!isDragging.current&&!animating.current){killTransitions();offsetRef.current=0;paint(0);}});ro.observe(c);return()=>ro.disconnect();},[paint,killTransitions,count]);// count is in the deps on purpose: in CMS mode the first render has no\n// images, so it returns the empty state and there is no track to listen to.\n// Without count the effect would run once against a null ref and never\n// re-run, leaving every step to limp in on the fallback timer.\nuseEffect(()=>{const track=trackRef.current;if(!track)return;const onEnd=e=>{if(e.target!==track||e.propertyName!==\"transform\")return;if(!animating.current)return;settle(pendingDir.current);};track.addEventListener(\"transitionend\",onEnd);return()=>track.removeEventListener(\"transitionend\",onEnd);},[settle,count]);useEffect(()=>()=>{if(rafId.current)cancelAnimationFrame(rafId.current);if(timerId.current)clearTimeout(timerId.current);},[]);/* ------------------------------------------------------------ autoplay */useEffect(()=>{if(!autoPlay||count<=1)return;const ms=Math.max(1,autoPlayInterval)*1e3;const id=setInterval(()=>{if(isDragging.current||animating.current||committing.current)return;if(typeof document!==\"undefined\"&&document.hidden)return;// Pause for one interval after the user touches it, then resume.\nif(performance.now()-lastInteraction.current<ms)return;animateTo(1);},ms);return()=>clearInterval(id);},[autoPlay,autoPlayInterval,count,animateTo]);/* ------------------------------------------------------------- pointer */const handlePointerDown=useCallback(e=>{if(count<=1||committing.current)return;if(e.pointerType===\"mouse\"&&e.button!==0)return;const track=trackRef.current;if(!track)return;lastInteraction.current=performance.now();// Grabbing mid-flight: freeze the track exactly where it is\n// rendered and drag on from there instead of ignoring the input.\nif(animating.current){const dir=pendingDir.current;const x=readTrackX();const pitch=getPitch();cancelAnim();killTransitions();if(dir!==0&&pitch&&Math.abs(x)>pitch*.5&&virtualCountRef.current>1){// The step is more than half done. Adopt it now and keep the\n// leftover as an offset measured from the *new* index —\n// otherwise the drag starts pinned at the clamp limit and\n// can't move forward at all. Nothing moves on screen: the\n// old index at x and the new index at x + dir*pitch are the\n// same pixels, so the commit lands invisibly.\noffsetRef.current=x+dir*pitch;// Set before the state update so the commit's layout effect\n// preserves this offset rather than snapping it to zero.\nisDragging.current=true;setCurrentIndex(prev=>mod(prev+dir,virtualCountRef.current));}else{offsetRef.current=x;paint(x);}}else{killTransitions();}isDragging.current=true;hasDragged.current=false;startX.current=e.clientX;scaleRef.current=getScale();history.current=[{x:e.clientX,t:performance.now()}];dragBase.current=offsetRef.current;try{e.currentTarget.setPointerCapture(e.pointerId);}catch{}const c=containerRef.current;if(c)c.style.cursor=\"grabbing\";},[count,readTrackX,cancelAnim,killTransitions,paint,getScale,getPitch]);const handlePointerMove=useCallback(e=>{if(!isDragging.current)return;const now=performance.now();const h=history.current;h.push({x:e.clientX,t:now});while(h.length>2&&now-h[0].t>VELOCITY_WINDOW)h.shift();const delta=e.clientX-startX.current;if(!hasDragged.current){if(Math.abs(delta)<=CLICK_THRESHOLD)return;hasDragged.current=true;// Start tracking from where the finger is now, so the slide\n// doesn't jump by the threshold distance on the first frame.\nstartX.current=e.clientX;return;}const pitch=getPitch();let x=dragBase.current+(e.clientX-startX.current)/(scaleRef.current||1);if(pitch){if(x>pitch)x=pitch+(x-pitch)*RUBBER;else if(x<-pitch)x=-pitch+(x+pitch)*RUBBER;}nextX.current=x;if(rafId.current)return;rafId.current=requestAnimationFrame(()=>{rafId.current=0;if(!isDragging.current)return;offsetRef.current=nextX.current;paint(nextX.current);});},[getPitch,paint]);const handlePointerUp=useCallback(e=>{if(!isDragging.current)return;isDragging.current=false;if(rafId.current){cancelAnimationFrame(rafId.current);rafId.current=0;offsetRef.current=nextX.current;paint(nextX.current);}try{e.currentTarget.releasePointerCapture(e.pointerId);}catch{}const c=containerRef.current;if(c)c.style.cursor=count>1?\"grab\":\"default\";lastInteraction.current=performance.now();const p=propsRef.current;const pitch=getPitch();const x=offsetRef.current;if(!hasDragged.current&&Math.abs(x)<.5){// A click, not a drag: the track never moved and no opacity was\n// ever written, so the sides navigate and the centre stays\n// completely untouched. (Guarded on x, because a tap that\n// interrupted a running animation leaves the track displaced\n// and still needs to be resolved below.)\nconst rect=containerRef.current?.getBoundingClientRect();if(rect&&rect.width){const px=e.clientX-rect.left;const side=rect.width*(100-p.centerWidth)/200;if(px<side)animateTo(-1);else if(px>rect.width-side)animateTo(1);}return;}const v=getVelocity();// Where the drag is heading, not just where it stopped.\nconst projected=x+v*PROJECT_MS;// Note: no `pitch > 0` guard. If the measurement ever fails, the\n// px floor still gives a working threshold — gating this on pitch\n// meant a bad measurement left a fast full-width flick as the only\n// way to advance.\nconst trigger=Math.min(Math.max(pitch*(p.swipeThreshold/100),MIN_TRIGGER_PX),MAX_TRIGGER_PX);if(Math.abs(projected)>trigger)animateTo(projected<0?1:-1);else if(Math.abs(v)>Math.min(p.velocityThreshold,FLICK_PX_PER_MS))animateTo(v<0?1:-1);else animateTo(0);},[count,getPitch,getVelocity,animateTo,paint]);const handleKeyDown=useCallback(e=>{if(count<=1||isDragging.current||committing.current)return;if(e.key===\"ArrowLeft\"){e.preventDefault();lastInteraction.current=performance.now();animateTo(-1);}else if(e.key===\"ArrowRight\"){e.preventDefault();lastInteraction.current=performance.now();animateTo(1);}},[count,animateTo]);/* -------------------------------------------------------------- render */const centerOffset=(100-centerWidth)/2;const 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;if(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\"?\"Connect a CMS Gallery to the CMS Gallery slot →\":\"Add images to the Images array →\",hiddenHost]});}return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,tabIndex:0,role:\"region\",\"aria-roledescription\":\"carousel\",onKeyDown:handleKeyDown,onPointerDown:handlePointerDown,onPointerMove:handlePointerMove,onPointerUp:handlePointerUp,onPointerCancel:handlePointerUp,onLostPointerCapture:handlePointerUp,onDragStart:e=>e.preventDefault(),style:{...style,position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\",cursor:count>1?\"grab\":\"default\",touchAction:\"pan-y\",outline:\"none\",userSelect:\"none\",WebkitUserSelect:\"none\",WebkitTapHighlightColor:\"transparent\",contain:\"layout paint\"},children:[/*#__PURE__*/_jsx(\"div\",{ref:trackRef,style:{position:\"absolute\",inset:0,willChange:\"transform\"},children:items.map(({k,slot,src})=>/*#__PURE__*/_jsx(\"div\",{ref:el=>{if(el)nodes.current.set(k,el);else nodes.current.delete(k);},style:{position:\"absolute\",top:0,left:`${centerOffset}%`,width:`${centerWidth}%`,height:\"100%\",transform:`translate3d(calc(${slot*100}% + ${slot*gap}px),0,0)`,opacity:slot===0?1:sideOpacity,zIndex:slot===0?2:1,borderRadius,overflow:\"hidden\",pointerEvents:\"none\",willChange:\"opacity\"},children:/*#__PURE__*/_jsx(\"img\",{src:src,ref:warmDecode,alt:\"\",draggable:false,decoding:\"async\",loading:\"eager\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\",backfaceVisibility:\"hidden\"}})},k))}),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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"}