{"version":3,"file":"MaskedImageCarousel.Ca_RGJ9H.mjs","names":["useState","useRef","useCallback","_Fragment"],"sources":["https:/framerusercontent.com/modules/3KZaCKj7RbwkHyG3kF68/kBH7wH2vFPwL928GCby7/MaskedImageCarousel.js"],"sourcesContent":["// Masked Image Carousel: Multi-image slider with mask slide transition, autoplay, speed, and transition controls. Next image scales from 1.15 to 1.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useState,useEffect,useRef,startTransition,useCallback}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{motion,AnimatePresence,useInView}from\"framer-motion\";/**\n * MaskedImageCarousel\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */function MaskCarousel(props){const{images=[{image:{src:\"https://framerusercontent.com/images/GfGkADagM4KEibNcIiRUWlfrR0.jpg\",alt:\"Gradient 1 - Blue\"}},{image:{src:\"https://framerusercontent.com/images/aNsAT3jCvt4zglbWCUoFe33Q.jpg\",alt:\"Gradient 2 - Purple\"}}],autoplay=true,autoplaySpeed=4,maskDirection=\"left-to-right\",transition={duration:.7,ease:[.4,0,.2,1]},style}=props;const isStatic=useIsStaticRenderer();const[index,setIndex]=useState(0);const[isHovered,setIsHovered]=useState(false);const count=Array.isArray(images)?images.length:0;const timerRef=useRef(null);const containerRef=useRef(null);const isInView=useInView(containerRef,{once:false,margin:\"-10% 0px -10% 0px\"});// Fallback image\nconst fallback={src:\"https://framerusercontent.com/images/GfGkADagM4KEibNcIiRUWlfrR0.jpg\",alt:\"Image\"};// Defensive: always get valid image object\nfunction getImg(idx){if(!Array.isArray(images)||images.length===0)return fallback;const obj=images[idx%images.length];if(obj&&obj.image&&typeof obj.image===\"object\"&&obj.image.src){return{src:obj.image.src||fallback.src,alt:obj.image.alt||fallback.alt};}return fallback;}const safeIndex=count>0?index%count:0;const prevIndex=count>0?(safeIndex-1+count)%count:0;// Autoplay logic\nuseEffect(()=>{if(!autoplay||isStatic||count<2||props.pauseOnHover&&isHovered||!isInView)return;timerRef.current&&clearTimeout(timerRef.current);timerRef.current=setTimeout(()=>{startTransition(()=>setIndex(i=>(i+1)%count));},Math.max(autoplaySpeed*1e3,500));return()=>timerRef.current&&clearTimeout(timerRef.current);},[autoplay,autoplaySpeed,safeIndex,count,isStatic,isHovered,props.pauseOnHover,isInView]);const prevImg=getImg(prevIndex);const currImg=getImg(safeIndex);// If src is missing, always use fallback\nconst prevSrc=prevImg&&prevImg.src?prevImg.src:fallback.src;const prevAlt=prevImg&&prevImg.alt?prevImg.alt:fallback.alt;const currSrc=currImg&&currImg.src?currImg.src:fallback.src;const currAlt=currImg&&currImg.alt?currImg.alt:fallback.alt;// Track if this is the first render\nconst isFirstRender=useRef(true);useEffect(()=>{isFirstRender.current=false;},[]);// Preload next image for smoother transitions\nuseEffect(()=>{if(!Array.isArray(images)||images.length<2)return;const nextIdx=(safeIndex+1)%images.length;const nextImg=getImg(nextIdx);if(nextImg&&nextImg.src){const preload=new window.Image;preload.src=nextImg.src;}},[safeIndex,images]);// Mask direction logic\nlet initialClip,animateClip,exitClip;switch(maskDirection){case\"left-to-right\":initialClip=\"inset(0 0 0 100%)\";animateClip=\"inset(0 0 0 0%)\";exitClip=\"inset(0 0 0 0%)\";break;case\"right-to-left\":initialClip=\"inset(0 100% 0 0)\";animateClip=\"inset(0 0 0 0%)\";exitClip=\"inset(0 0 0 0%)\";break;case\"top-to-bottom\":initialClip=\"inset(100% 0 0 0)\";animateClip=\"inset(0 0 0 0%)\";exitClip=\"inset(0 0 0 0%)\";break;case\"bottom-to-top\":initialClip=\"inset(0 0 100% 0)\";animateClip=\"inset(0 0 0 0%)\";exitClip=\"inset(0 0 0 0%)\";break;default:initialClip=\"inset(0 0 0 100%)\";animateClip=\"inset(0 0 0 0%)\";exitClip=\"inset(0 0 0 0%)\";}// Only render images if in view or static (for SSR/preview)\nconst shouldRenderImages=isStatic||isInView;// Fade-in on first image load\nconst[isLoaded,setIsLoaded]=useState(isStatic);// Handler for first image load\nconst handleFirstLoad=useCallback(()=>{startTransition(()=>setIsLoaded(true));},[]);return /*#__PURE__*/_jsx(motion.div,{ref:containerRef,style:{...style,width:\"100%\",height:\"100%\",position:\"relative\",overflow:\"hidden\",borderRadius:props.layout?.borderRadius??0,background:props.layout?.background||undefined,...props.layout?.border?props.layout.border:{}},\"aria-label\":\"Image slider\",role:\"region\",onMouseEnter:()=>props.pauseOnHover&&setIsHovered(true),onMouseLeave:()=>props.pauseOnHover&&setIsHovered(false),children:shouldRenderImages&&(isFirstRender.current?/*#__PURE__*/_jsx(\"img\",{src:currSrc,alt:currAlt,style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",position:\"absolute\",top:0,left:0,zIndex:2,userSelect:\"none\",display:\"block\"},draggable:false,onLoad:handleFirstLoad}):/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"img\",{src:prevSrc,alt:prevAlt,style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",position:\"absolute\",top:0,left:0,zIndex:1,userSelect:\"none\",pointerEvents:\"none\",display:\"block\",transition:\"opacity 0.3s\",opacity:1},draggable:false}),/*#__PURE__*/_jsx(AnimatePresence,{initial:false,mode:\"wait\",children:/*#__PURE__*/_jsx(motion.img,{src:currSrc,alt:currAlt,style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",position:\"absolute\",top:0,left:0,zIndex:2,userSelect:\"none\",display:\"block\"},draggable:false,initial:{clipPath:initialClip,scale:1.15},animate:{clipPath:animateClip,scale:1},exit:{clipPath:exitClip,scale:1},transition:transition},safeIndex+\"-\"+currSrc)})]}))});}addPropertyControls(MaskCarousel,{images:{type:ControlType.Array,title:\"Images\",control:{type:ControlType.Object,controls:{image:{type:ControlType.ResponsiveImage}}},defaultValue:[{image:{src:\"https://framerusercontent.com/images/GfGkADagM4KEibNcIiRUWlfrR0.jpg\",alt:\"Gradient 1 - Blue\"}},{image:{src:\"https://framerusercontent.com/images/aNsAT3jCvt4zglbWCUoFe33Q.jpg\",alt:\"Gradient 2 - Purple\"}}],maxCount:10},slider:{type:ControlType.Object,title:\"Slider\",controls:{autoplay:{type:ControlType.Boolean,title:\"Autoplay\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},autoplaySpeed:{type:ControlType.Number,title:\"Speed\",defaultValue:4,min:1,max:20,unit:\"s\",step:.5,displayStepper:true,hidden:({autoplay})=>!autoplay},pauseOnHover:{type:ControlType.Boolean,title:\"Pause on Hover\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"}},defaultValue:{autoplay:true,autoplaySpeed:4,pauseOnHover:false}},transitionGroup:{type:ControlType.Object,title:\"Transition\",controls:{maskDirection:{type:ControlType.Enum,title:\"Mask Direction\",options:[\"left-to-right\",\"right-to-left\",\"top-to-bottom\",\"bottom-to-top\"],optionTitles:[\"←\",\"→\",\"↑\",\"↓\"],defaultValue:\"left-to-right\",displaySegmentedControl:true},transition:{type:ControlType.Transition,title:\"Transition\",defaultValue:{duration:.7,ease:[.4,0,.2,1]}}},defaultValue:{maskDirection:\"left-to-right\",transition:{duration:.7,ease:[.4,0,.2,1]}}},layout:{type:ControlType.Object,title:\"Layout\",controls:{borderRadius:{type:ControlType.BorderRadius,title:\"Radius\",defaultValue:\"8px\"},border:{type:ControlType.Border,title:\"Border\",defaultValue:{borderWidth:0,borderStyle:\"solid\",borderColor:\"rgba(0,0,0,0.08)\"},optional:true},background:{type:ControlType.Color,title:\"Background\",defaultValue:\"#eee\",optional:true}},defaultValue:{borderRadius:\"8px\",border:{borderWidth:0,borderStyle:\"solid\",borderColor:\"rgba(0,0,0,0.08)\"},background:\"#eee\"}}});export default MaskCarousel;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"MaskCarousel\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MaskedImageCarousel.map"],"mappings":"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"}