{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/3KZaCKj7RbwkHyG3kF68/L1b8vL90eBcsCB48lr90/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:[\"\u2190\",\"\u2192\",\"\u2191\",\"\u2193\"],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\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MaskedImageCarousel.map"],
  "mappings": "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",
  "names": ["MaskCarousel", "props", "images", "autoplay", "autoplaySpeed", "maskDirection", "transition", "style", "isStatic", "useIsStaticRenderer", "index", "setIndex", "ye", "isHovered", "setIsHovered", "count", "timerRef", "pe", "containerRef", "isInView", "useInView", "fallback", "getImg", "idx", "obj", "safeIndex", "prevIndex", "ue", "Z", "i", "prevImg", "currImg", "prevSrc", "prevAlt", "currSrc", "currAlt", "isFirstRender", "nextIdx", "nextImg", "preload", "window", "initialClip", "animateClip", "exitClip", "shouldRenderImages", "isLoaded", "setIsLoaded", "handleFirstLoad", "te", "motion", "u", "l", "AnimatePresence", "addPropertyControls", "ControlType", "MaskedImageCarousel_default"]
}
