{"version":3,"file":"LoopingCarousel.BxEJsng6.mjs","names":["React.useMemo","React.useCallback","React.useRef","React.useState","prev","_Fragment","p"],"sources":["https:/framerusercontent.com/modules/nxamaXvVVr5u5vks02XH/m4Uq2gJXPkXOaqI1B6he/LoopingCarousel.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{createPortal}from\"react-dom\";import{addPropertyControls,ControlType}from\"framer\";// ---- Lightbox bridge context ----\n// Child components can use this to tell the carousel that a lightbox opened/closed,\n// or to trigger opening the lightbox directly at a given REAL (non-clone) slide index.\nexport const CarouselLightboxContext=/*#__PURE__*/React.createContext({setLightboxOpen:()=>{},openLightbox:()=>{}});export default function InfiniteCarouselSlots(props){const{slides=[],device,gap,sidePadding,radius,autoPlay,interval,transitionMs,showArrows,heightMode,fixedHeight,animateHeight,desktopMaxHeight,tabletMaxHeight,phoneMaxHeight,bufferClones,enableLightbox,lightboxBackdrop,lightboxTransitionMs}=props;const cleanSlides=React.useMemo(()=>(slides||[]).filter(Boolean),[slides]);const real=cleanSlides.length;if(real===0)return null;// ---- Multi-clone buffering ----\nconst cloneCount=Math.min(real,Math.max(1,Math.floor(bufferClones)));const leftClones=cleanSlides.slice(real-cloneCount);const rightClones=cleanSlides.slice(0,cloneCount);const loopSlides=[...leftClones,...cleanSlides,...rightClones];const firstReal=cloneCount;const lastReal=cloneCount+real-1;const rightCloneStart=cloneCount+real;// Maps any loop index (a real slide OR one of its clones) back to a 0..real-1 index.\nconst realIndexOf=React.useCallback(loopIdx=>((loopIdx-cloneCount)%real+real)%real,[cloneCount,real]);const viewportRef=React.useRef(null);const itemRefs=React.useRef([]);const contentRefs=React.useRef([]);const[index,setIndex]=React.useState(firstReal);const[transition,setTransition]=React.useState(true);const[viewportWidth,setViewportWidth]=React.useState(0);const[widths,setWidths]=React.useState([]);const[measuredAutoHeight,setMeasuredAutoHeight]=React.useState(Math.max(1,fixedHeight||1));// ---- Lightbox state ----\nconst[lightboxOpen,setLightboxOpen]=React.useState(false);const[lightboxIndex,setLightboxIndex]=React.useState(0);// ---- Anti-spam navigation guard ----\nconst[isAnimating,setIsAnimating]=React.useState(false);const queuedStepRef=React.useRef([]);React.useEffect(()=>{setIndex(firstReal);setTransition(false);setIsAnimating(false);queuedStepRef.current=[];const id=requestAnimationFrame(()=>requestAnimationFrame(()=>setTransition(true)));return()=>cancelAnimationFrame(id);},[firstReal,real]);// If lightbox opens, stop queued motions immediately\nReact.useEffect(()=>{if(!lightboxOpen)return;queuedStepRef.current=[];setIsAnimating(false);},[lightboxOpen]);// Snaps the small carousel to a given REAL index without an animated slide.\n// It's hidden behind the fullscreen lightbox at this point, so a hard snap\n// is invisible and avoids fighting the clone-wrap animation logic.\nconst syncCarouselToReal=React.useCallback(realIdx=>{setTransition(false);setIndex(firstReal+realIdx);requestAnimationFrame(()=>requestAnimationFrame(()=>setTransition(true)));},[firstReal]);const go=React.useCallback(dir=>{if(real<=1||lightboxOpen)return;if(isAnimating){if(queuedStepRef.current.length<2)queuedStepRef.current.push(dir);return;}setIsAnimating(true);setIndex(i=>i+dir);},[isAnimating,real,lightboxOpen]);const next=React.useCallback(()=>go(1),[go]);const prev=React.useCallback(()=>go(-1),[go]);// autoplay pauses during lightbox\nReact.useEffect(()=>{if(!autoPlay||real<=1||lightboxOpen)return;const id=window.setInterval(()=>go(1),Math.max(1e3,interval));return()=>window.clearInterval(id);},[autoPlay,interval,real,go,lightboxOpen]);React.useEffect(()=>{const el=viewportRef.current;if(!el)return;let raf=0;const update=()=>{cancelAnimationFrame(raf);raf=requestAnimationFrame(()=>{const w=el.clientWidth||0;setViewportWidth(prev=>prev!==w?w:prev);});};update();const ro=new ResizeObserver(update);ro.observe(el);return()=>{cancelAnimationFrame(raf);ro.disconnect();};},[]);const measureWidths=React.useCallback(()=>{const measured=loopSlides.map((_,i)=>{const node=itemRefs.current[i];return node?Math.ceil(node.getBoundingClientRect().width):0;});setWidths(prev=>{if(prev.length===measured.length&&prev.every((v,i)=>v===measured[i]))return prev;return measured;});},[loopSlides]);React.useEffect(()=>{measureWidths();},[measureWidths,viewportWidth,loopSlides.length]);const measureActiveHeight=React.useCallback(()=>{if(heightMode!==\"auto\")return;const node=contentRefs.current[index];if(!node)return;const h=Math.max(Math.ceil(node.getBoundingClientRect().height),node.scrollHeight);if(h>0)setMeasuredAutoHeight(prev=>prev!==h?h:prev);},[heightMode,index]);React.useEffect(()=>{const id=requestAnimationFrame(()=>measureActiveHeight());return()=>cancelAnimationFrame(id);},[measureActiveHeight,viewportWidth,widths,index]);React.useEffect(()=>{if(heightMode!==\"auto\")return;const node=contentRefs.current[index];if(!node)return;const ro=new ResizeObserver(()=>measureActiveHeight());ro.observe(node);return()=>ro.disconnect();},[heightMode,index,measureActiveHeight]);const safeWidths=widths.length===loopSlides.length?widths:loopSlides.map(()=>0);const beforeWidth=safeWidths.slice(0,index).reduce((a,b)=>a+b,0);const activeW=safeWidths[index]||0;const activeLeft=sidePadding+beforeWidth+index*gap;const translateX=viewportWidth/2-(activeLeft+activeW/2);const flushQueueIfAny=React.useCallback(()=>{if(lightboxOpen){queuedStepRef.current=[];setIsAnimating(false);return;}const queued=queuedStepRef.current.shift();if(queued){setIsAnimating(true);setIndex(i=>i+queued);}else{setIsAnimating(false);}},[lightboxOpen]);const onTransitionEnd=()=>{if(real<=1)return;if(index>lastReal){const offsetIntoRight=index-rightCloneStart;setTransition(false);setIndex(firstReal+offsetIntoRight);requestAnimationFrame(()=>requestAnimationFrame(()=>{setTransition(true);flushQueueIfAny();}));return;}if(index<firstReal){const mapped=firstReal+(real-cloneCount+index);setTransition(false);setIndex(mapped);requestAnimationFrame(()=>requestAnimationFrame(()=>{setTransition(true);flushQueueIfAny();}));return;}flushQueueIfAny();};// ---- Lightbox controls ----\nconst openLightbox=React.useCallback(realIdx=>{if(!enableLightbox||real===0)return;const clamped=(realIdx%real+real)%real;setLightboxIndex(clamped);setLightboxOpen(true);syncCarouselToReal(clamped);},[enableLightbox,real,syncCarouselToReal]);const closeLightbox=React.useCallback(()=>{setLightboxOpen(false);},[]);const lightboxStep=React.useCallback(dir=>{if(real<=1)return;setLightboxIndex(i=>{const nextIdx=((i+dir)%real+real)%real;syncCarouselToReal(nextIdx);return nextIdx;});},[real,syncCarouselToReal]);const lightboxNext=React.useCallback(()=>lightboxStep(1),[lightboxStep]);const lightboxPrev=React.useCallback(()=>lightboxStep(-1),[lightboxStep]);// keyboard nav + esc-to-close + scroll lock while lightbox is open\nReact.useEffect(()=>{if(!lightboxOpen)return;const onKey=e=>{if(e.key===\"Escape\")closeLightbox();if(e.key===\"ArrowRight\")lightboxNext();if(e.key===\"ArrowLeft\")lightboxPrev();};window.addEventListener(\"keydown\",onKey);const prevOverflow=document.body.style.overflow;document.body.style.overflow=\"hidden\";return()=>{window.removeEventListener(\"keydown\",onKey);document.body.style.overflow=prevOverflow;};},[lightboxOpen,closeLightbox,lightboxNext,lightboxPrev]);const baseHeight=heightMode===\"auto\"?Math.max(1,measuredAutoHeight):Math.max(1,fixedHeight);const maxH=device===\"Phone\"?phoneMaxHeight:device===\"Tablet\"?tabletMaxHeight:desktopMaxHeight;const scale=Math.min(1,maxH/Math.max(baseHeight,1));const renderedHeight=Math.max(1,Math.round(baseHeight*scale));const navDisabled=lightboxOpen||isAnimating&&queuedStepRef.current.length>=2;return /*#__PURE__*/_jsxs(CarouselLightboxContext.Provider,{value:{setLightboxOpen,openLightbox},children:[/*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",position:\"relative\",overflow:\"hidden\",borderRadius:radius,height:renderedHeight,transition:animateHeight?\"height 250ms ease\":\"none\"},children:[/*#__PURE__*/_jsx(\"div\",{ref:viewportRef,style:{width:\"100%\",height:\"100%\",overflow:\"hidden\"},children:/*#__PURE__*/_jsx(\"div\",{onTransitionEnd:onTransitionEnd,style:{display:\"flex\",alignItems:\"flex-start\",gap:`${gap}px`,paddingLeft:sidePadding,paddingRight:sidePadding,width:\"max-content\",transform:`translate3d(${Number.isFinite(translateX)?translateX:0}px,0,0) scale(${scale})`,transformOrigin:\"top left\",transition:transition?`transform ${transitionMs}ms ease`:\"none\",willChange:\"transform\",pointerEvents:lightboxOpen?\"none\":\"auto\"},children:loopSlides.map((slide,i)=>/*#__PURE__*/_jsx(\"div\",{ref:el=>{itemRefs.current[i]=el;},style:{flex:\"0 0 auto\"},children:/*#__PURE__*/_jsx(\"div\",{ref:el=>{contentRefs.current[i]=el;},onClick:()=>openLightbox(realIndexOf(i)),style:{display:\"inline-block\",width:\"auto\",height:\"auto\",cursor:enableLightbox?\"zoom-in\":undefined},children:slide})},`loop-slide-${i}`))})}),showArrows&&real>1&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"button\",{onClick:prev,disabled:navDisabled,style:{...btnStyle(\"left\"),opacity:navDisabled?.6:1,cursor:navDisabled?\"not-allowed\":\"pointer\"},\"aria-label\":\"Previous slide\",children:\"‹\"}),/*#__PURE__*/_jsx(\"button\",{onClick:next,disabled:navDisabled,style:{...btnStyle(\"right\"),opacity:navDisabled?.6:1,cursor:navDisabled?\"not-allowed\":\"pointer\"},\"aria-label\":\"Next slide\",children:\"›\"})]})]}),enableLightbox&&lightboxOpen&&typeof document!==\"undefined\"&&/*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(\"div\",{onClick:closeLightbox,style:{position:\"fixed\",inset:0,background:lightboxBackdrop,zIndex:999999,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",animation:`carouselLightboxFade ${lightboxTransitionMs}ms ease`},children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                            @keyframes carouselLightboxFade {\n                                from { opacity: 0; }\n                                to { opacity: 1; }\n                            }\n                            /* Force whatever component was dropped into the\n                               Slides array to fill the lightbox stage, even\n                               if it carries its own fixed inline size from\n                               the canvas. */\n                            .carousel-lightbox-stage,\n                            .carousel-lightbox-stage > * {\n                                width: 100% !important;\n                                height: 100% !important;\n                                max-width: 100% !important;\n                                max-height: 100% !important;\n                            }\n                            .carousel-lightbox-stage img,\n                            .carousel-lightbox-stage video {\n                                object-fit: contain !important;\n                            }\n                        `}),/*#__PURE__*/_jsx(\"div\",{className:\"carousel-lightbox-stage\",onClick:e=>e.stopPropagation(),style:{position:\"relative\",width:\"min(92vw, 1600px)\",height:\"min(88vh, 1200px)\"},children:cleanSlides[lightboxIndex]}),/*#__PURE__*/_jsx(\"button\",{onClick:closeLightbox,\"aria-label\":\"Close\",style:{position:\"fixed\",top:20,right:20,zIndex:1e6,width:40,height:40,borderRadius:999,border:\"none\",background:\"rgba(0,0,0,0.5)\",color:\"#fff\",fontSize:22,lineHeight:\"40px\",cursor:\"pointer\"},children:\"✕\"}),real>1&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"button\",{onClick:e=>{e.stopPropagation();lightboxPrev();},\"aria-label\":\"Previous image\",style:{...btnStyle(\"left\"),position:\"fixed\",left:20,width:48,height:48,lineHeight:\"48px\",fontSize:28,zIndex:1e6,cursor:\"pointer\"},children:\"‹\"}),/*#__PURE__*/_jsx(\"button\",{onClick:e=>{e.stopPropagation();lightboxNext();},\"aria-label\":\"Next image\",style:{...btnStyle(\"right\"),position:\"fixed\",right:20,width:48,height:48,lineHeight:\"48px\",fontSize:28,zIndex:1e6,cursor:\"pointer\"},children:\"›\"})]})]}),document.body)]});}function btnStyle(side){return{position:\"absolute\",top:\"50%\",transform:\"translateY(-50%)\",[side]:10,zIndex:20,width:36,height:36,borderRadius:999,border:\"none\",background:\"rgba(0,0,0,0.45)\",color:\"#fff\",fontSize:22,lineHeight:\"36px\",padding:0};}addPropertyControls(InfiniteCarouselSlots,{slides:{type:ControlType.Array,title:\"Slides\",propertyControl:{type:ControlType.ComponentInstance},defaultValue:[]},device:{type:ControlType.Enum,title:\"Device\",options:[\"Desktop\",\"Tablet\",\"Phone\"],defaultValue:\"Desktop\"},bufferClones:{type:ControlType.Number,title:\"Clones\",defaultValue:4,min:1,max:20,step:1,displayStepper:true},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:0,min:0,max:200,step:1},sidePadding:{type:ControlType.Number,title:\"Side Pad\",defaultValue:0,min:0,max:200,step:1},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:16,min:0,max:80},heightMode:{type:ControlType.Enum,title:\"Height\",options:[\"auto\",\"fixed\"],optionTitles:[\"Auto\",\"Fixed\"],defaultValue:\"auto\"},fixedHeight:{type:ControlType.Number,title:\"Fixed H\",defaultValue:320,min:80,max:2e3,hidden:p=>p.heightMode!==\"fixed\"},animateHeight:{type:ControlType.Boolean,title:\"Height Anim\",defaultValue:true},desktopMaxHeight:{type:ControlType.Number,title:\"Max H D\",defaultValue:900,min:100,max:3e3},tabletMaxHeight:{type:ControlType.Number,title:\"Max H T\",defaultValue:700,min:100,max:3e3},phoneMaxHeight:{type:ControlType.Number,title:\"Max H P\",defaultValue:480,min:100,max:3e3},autoPlay:{type:ControlType.Boolean,title:\"Auto Play\",defaultValue:false},interval:{type:ControlType.Number,title:\"Interval\",defaultValue:3e3,min:1e3,max:1e4,step:100,hidden:p=>!p.autoPlay},transitionMs:{type:ControlType.Number,title:\"Speed\",defaultValue:350,min:100,max:1200,step:10},showArrows:{type:ControlType.Boolean,title:\"Arrows\",defaultValue:true},enableLightbox:{type:ControlType.Boolean,title:\"Lightbox\",defaultValue:true},lightboxBackdrop:{type:ControlType.Color,title:\"LB Backdrop\",defaultValue:\"rgba(0,0,0,0.9)\",hidden:p=>!p.enableLightbox},lightboxTransitionMs:{type:ControlType.Number,title:\"LB Speed\",defaultValue:200,min:50,max:800,step:10,hidden:p=>!p.enableLightbox}});\nexport const __FramerMetadata__ = {\"exports\":{\"CarouselLightboxContext\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"InfiniteCarouselSlots\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./LoopingCarousel.map"],"mappings":"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"}