{"version":3,"file":"ImageMaskReveal.Cji2aJS1.mjs","names":["useRef","useState","useMemo"],"sources":["https:/framerusercontent.com/modules/ksrpicSbndQBYxpenFiS/EnBrQrS1oRQJC4XlWXk0/ImageMaskReveal.js"],"sourcesContent":["// Image Mask Reveal component with multiple animation effects, video support, and flexible trigger options\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useRef,useState,useEffect,useMemo,startTransition,useLayoutEffect}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{motion,useInView}from\"framer-motion\";// =========================================\n// 2. Helper Logic\n// =========================================\nconst getClosedClip=(effect,dir,anchor,initExpand,radius)=>{const round=radius>0?` round ${radius}px`:\"\";switch(effect){case\"reveal\":case\"slide\":if(dir===\"top\")return`inset(100% 0 0 0${round})`;if(dir===\"bottom\")return`inset(0 0 100% 0${round})`;if(dir===\"left\")return`inset(0 0 0 100%${round})`;if(dir===\"right\")return`inset(0 100% 0 0${round})`;return`inset(100% 0 0 0${round})`;case\"expand\":const val=(100-initExpand)/2;return`inset(${val}% ${val}% ${val}% ${val}%${round})`;case\"resize\":const anchorMap={center:`inset(50% 50% 50% 50%${round})`,top:`inset(0 0 100% 0${round})`,\"top-left\":`inset(0 100% 100% 0${round})`,\"top-right\":`inset(0 0 100% 100%${round})`,bottom:`inset(100% 0 0 0${round})`,\"bottom-left\":`inset(100% 100% 0 0${round})`,\"bottom-right\":`inset(100% 0 0 100%${round})`,left:`inset(0 100% 0 0${round})`,right:`inset(0 0 0 100%${round})`};return anchorMap[anchor]||`inset(50% 50% 50% 50%${round})`;default:return`inset(100% 0 0 0${round})`;}};const getOpenClip=radius=>{const round=radius>0?` round ${radius}px`:\"\";return`inset(0% 0% 0% 0%${round})`;};// Video URL detection and formatting (YouTube/Vimeo)\nconst getVideoEmbed=(url,settings)=>{if(!url)return{type:\"native\",src:\"\"};// YouTube\nconst ytMatch=url.match(/(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))([^#&?]*)/);if(ytMatch&&ytMatch[1]){const id=ytMatch[1];const params=new URLSearchParams;if(settings.videoAutoPlay)params.set(\"autoplay\",\"1\");if(settings.videoMuted)params.set(\"mute\",\"1\");if(settings.videoLoop){params.set(\"loop\",\"1\");params.set(\"playlist\",id);}if(!settings.videoControls)params.set(\"controls\",\"0\");params.set(\"playsinline\",settings.videoPlaysInline?\"1\":\"0\");params.set(\"rel\",\"0\");return{type:\"youtube\",src:`https://www.youtube.com/embed/${id}?${params.toString()}`};}// Vimeo\nconst vimeoMatch=url.match(/(?:vimeo\\.com\\/)(\\d+)/);if(vimeoMatch&&vimeoMatch[1]){const id=vimeoMatch[1];const params=new URLSearchParams;if(settings.videoAutoPlay)params.set(\"autoplay\",\"1\");if(settings.videoMuted)params.set(\"muted\",\"1\");if(settings.videoLoop)params.set(\"loop\",\"1\");if(!settings.videoControls)params.set(\"controls\",\"0\");params.set(\"background\",settings.videoControls?\"0\":\"1\");return{type:\"vimeo\",src:`https://player.vimeo.com/video/${id}?${params.toString()}`};}// Fallback: Direct link (mp4, mov, etc)\nreturn{type:\"native\",src:url};};// =========================================\n// 3. Main Component\n// =========================================\n/**\n * @framerDisableUnlink\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function ImageParallaxReveal(props){const{mediaType=\"image\",imageSrc={src:\"https://framerusercontent.com/images/GfGkADagM4KEibNcIiRUWlfrR0.jpg\",alt:\"\"},videoSource=\"file\",videoFile=\"https://framerusercontent.com/assets/MLWPbW1dUQawJLhhun3dBwpgJak.mp4\",videoUrl=\"\",videoPoster,videoAutoPlay=true,videoLoop=true,videoMuted=true,videoControls=false,videoPlaysInline=true,maskSrc,objectFit=\"cover\",mode=\"In\",trigger=\"layerInView\",sectionId,viewportPosition=\"end\",layerStart=\"center\",repeat=false,transition,delay=0,effectType=\"reveal\",direction=\"top\",zoomContent=true,zoomLevel=120,anchor=\"center\",initialExpand=0,radius=0,enableParallax=false,verticalParallaxAmount=30,horizontalParallaxAmount=0}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const containerRef=useRef(null);const mediaRef=useRef(null);// --- LOGIC: LAYER START AMOUNT ---\nconst getAmount=()=>{switch(layerStart){case\"top\":return .1;case\"center\":return .5;case\"bottom\":return .9;default:return .3;}};// --- TRIGGER LOGIC: LAYER IN VIEW ---\nconst isInView=useInView(containerRef,{once:!repeat,amount:getAmount()});// --- TRIGGER LOGIC: SECTION ID ---\nconst[isSectionInView,setIsSectionInView]=useState(false);useEffect(()=>{if(trigger!==\"sectionInView\"||!sectionId||isCanvas)return;if(typeof window===\"undefined\")return;const sectionElement=document.getElementById(sectionId);if(!sectionElement)return;const marginMap={end:\"0px 0px -10% 0px\",center:\"0px 0px -50% 0px\",start:\"0px 0px -90% 0px\"};const observer=new IntersectionObserver(([entry])=>{if(entry.isIntersecting){startTransition(()=>setIsSectionInView(true));}else if(repeat){startTransition(()=>setIsSectionInView(false));}},{threshold:0,rootMargin:marginMap[viewportPosition]||\"0px 0px -10% 0px\"});observer.observe(sectionElement);return()=>observer.disconnect();},[trigger,sectionId,viewportPosition,repeat,isCanvas]);// --- PARALLAX LOGIC ---\nuseLayoutEffect(()=>{// Skip parallax in canvas mode or if disabled\nif(isCanvas||!enableParallax)return;if(!containerRef.current||!mediaRef.current)return;const container=containerRef.current;const media=mediaRef.current;// Enable hardware acceleration via CSS\nmedia.style.transform=\"translate3d(0, 0, 0)\";media.style.willChange=\"transform\";let rafId=null;let ticking=false;let animationFrameId=null;const updateParallax=()=>{if(!container||!media)return;const rect=container.getBoundingClientRect();const containerHeight=container.offsetHeight;const containerWidth=container.offsetWidth;// Skip if container has no dimensions\nif(containerHeight===0||containerWidth===0)return;// Calculate vertical parallax based on scroll position\nconst viewportHeight=window.innerHeight;const scrollProgress=Math.max(0,Math.min(1,(viewportHeight-rect.top)/(viewportHeight+containerHeight)));// Vertical parallax: center around midpoint (0.5)\nconst yOffset=(scrollProgress-.5)*(verticalParallaxAmount/100)*containerHeight;// Horizontal parallax: based on element's horizontal position in viewport\nlet xOffset=0;if(horizontalParallaxAmount!==0){const viewportWidth=window.innerWidth;const viewportCenter=viewportWidth/2;const elementCenter=rect.left+rect.width/2;const horizontalProgress=(elementCenter-viewportCenter)/viewportWidth;xOffset=horizontalProgress*(horizontalParallaxAmount/100)*containerWidth;}// Apply transforms using translate3d for GPU acceleration\nmedia.style.transform=`translate3d(${xOffset}px, ${yOffset}px, 0)`;ticking=false;};const requestTick=()=>{if(!ticking){rafId=requestAnimationFrame(updateParallax);ticking=true;}};// Continuous animation loop for horizontal parallax\nconst startAnimationLoop=()=>{if(horizontalParallaxAmount!==0){const animate=()=>{updateParallax();animationFrameId=requestAnimationFrame(animate);};animationFrameId=requestAnimationFrame(animate);}};const stopAnimationLoop=()=>{if(animationFrameId!==null){cancelAnimationFrame(animationFrameId);animationFrameId=null;}};const handleScroll=()=>{requestTick();};const handleResize=()=>{if(rafId!==null){cancelAnimationFrame(rafId);}rafId=requestAnimationFrame(updateParallax);};// Initial update\nupdateParallax();// Start continuous loop for horizontal parallax if enabled\nstartAnimationLoop();// Add event listeners\nwindow.addEventListener(\"scroll\",handleScroll,{passive:true});window.addEventListener(\"resize\",handleResize,{passive:true});// Cleanup\nreturn()=>{stopAnimationLoop();if(rafId!==null){cancelAnimationFrame(rafId);}window.removeEventListener(\"scroll\",handleScroll);window.removeEventListener(\"resize\",handleResize);};},[verticalParallaxAmount,horizontalParallaxAmount,isCanvas,enableParallax]);// --- DECISION MATRIX ---\nconst shouldAnimate=useMemo(()=>{if(isCanvas)return true;if(trigger===\"sectionInView\")return isSectionInView;if(trigger===\"layerInView\")return isInView;return isInView;},[isCanvas,trigger,isInView,isSectionInView]);// --- Variants Logic ---\nconst closedClip=getClosedClip(effectType,direction,anchor,initialExpand,radius);const openClip=getOpenClip(radius);const maskVariants={hidden:{clipPath:mode===\"In\"?closedClip:openClip,WebkitClipPath:mode===\"In\"?closedClip:openClip},visible:{clipPath:mode===\"In\"?openClip:closedClip,WebkitClipPath:mode===\"In\"?openClip:closedClip}};const getHiddenContentState=()=>{const scaleVal=zoomContent?zoomLevel/100:1;const state={scale:scaleVal,x:0,y:0};if(effectType===\"slide\"){const offset=\"15%\";if(direction===\"top\")state.y=offset;if(direction===\"bottom\")state.y=`-${offset}`;if(direction===\"left\")state.x=offset;if(direction===\"right\")state.x=`-${offset}`;}return state;};const getVisibleContentState=()=>({scale:1,x:0,y:0});const contentVariants={hidden:mode===\"In\"?getHiddenContentState():getVisibleContentState(),visible:mode===\"In\"?getVisibleContentState():getHiddenContentState()};const currentVariant=useMemo(()=>{if(isCanvas)return mode===\"In\"?\"visible\":\"hidden\";return shouldAnimate?\"visible\":\"hidden\";},[isCanvas,mode,shouldAnimate]);const activeTransition={...transition,delay:delay||0};// Render Helpers\nconst renderMedia=()=>{// Extract actual image source from ResponsiveImage object or string\nconst actualImageSrc=typeof imageSrc===\"string\"?imageSrc:imageSrc?.src||\"\";const actualVideoPoster=typeof videoPoster===\"string\"?videoPoster:videoPoster?.src||\"\";const style={width:\"100%\",height:\"100%\",objectFit,willChange:\"transform\",WebkitMaskImage:maskSrc?`url(${maskSrc})`:undefined,maskImage:maskSrc?`url(${maskSrc})`:undefined,WebkitMaskSize:\"contain\",WebkitMaskPosition:\"center\",WebkitMaskRepeat:\"no-repeat\"};const placeholderStyle={...style,background:\"rgba(136, 85, 255, 0.1)\"};if(mediaType===\"video\"){const src=videoSource===\"url\"?videoUrl:videoFile;const embedInfo=videoSource===\"url\"?getVideoEmbed(videoUrl,{videoAutoPlay,videoMuted,videoLoop,videoControls,videoPlaysInline}):{type:\"native\",src:videoFile};if(!src)return /*#__PURE__*/_jsx(\"div\",{style:placeholderStyle});// Iframe rendering (YouTube/Vimeo)\nif(embedInfo.type!==\"native\"){return /*#__PURE__*/_jsx(motion.iframe,{src:embedInfo.src,variants:contentVariants,transition:activeTransition,style:{...style,border:0,pointerEvents:videoControls?\"auto\":\"none\"},allow:\"autoplay; fullscreen; picture-in-picture\",title:\"Video player\"});}// Native rendering (File or Direct MP4 URL)\nreturn /*#__PURE__*/_jsx(motion.video,{src:src,poster:actualVideoPoster,autoPlay:videoAutoPlay&&!isCanvas,muted:videoMuted,loop:videoLoop,controls:videoControls,playsInline:videoPlaysInline,variants:contentVariants,transition:activeTransition,style:style});}if(!actualImageSrc)return /*#__PURE__*/_jsx(\"div\",{style:placeholderStyle});return /*#__PURE__*/_jsx(motion.img,{src:actualImageSrc,alt:\"\",variants:contentVariants,transition:activeTransition,style:style});};return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{width:\"100%\",height:\"100%\",position:\"relative\",isolation:\"isolate\",overflow:\"hidden\",borderRadius:radius},children:/*#__PURE__*/_jsx(motion.div,{initial:isCanvas?currentVariant:\"hidden\",animate:currentVariant,variants:maskVariants,transition:activeTransition,style:{width:\"100%\",height:\"100%\",backgroundColor:\"transparent\",willChange:\"clip-path\",cursor:\"default\",transformOrigin:\"center center\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",overflow:enableParallax?\"visible\":\"hidden\"},children:/*#__PURE__*/_jsx(\"div\",{ref:mediaRef,style:{width:enableParallax?`calc(100% + ${Math.abs(horizontalParallaxAmount)}%)`:\"100%\",height:enableParallax?`calc(100% + ${Math.abs(verticalParallaxAmount)}%)`:\"100%\",position:enableParallax?\"absolute\":\"relative\",top:enableParallax?`-${Math.abs(verticalParallaxAmount)/2}%`:undefined,left:enableParallax?`-${Math.abs(horizontalParallaxAmount)/2}%`:undefined,willChange:enableParallax?\"transform\":undefined,backfaceVisibility:enableParallax?\"hidden\":undefined},children:renderMedia()})})});}// =========================================\n// 4. Property Controls\n// =========================================\naddPropertyControls(ImageParallaxReveal,{// --- CONTENT: MEDIA TYPE ---\nmediaType:{type:ControlType.Enum,title:\"Media\",options:[\"image\",\"video\"],optionTitles:[\"Image\",\"Video\"],defaultValue:\"image\",displaySegmentedControl:true},// --- CONTENT: IMAGE PROPS ---\nimageSrc:{type:ControlType.ResponsiveImage,title:\"Image\",hidden:props=>props.mediaType!==\"image\"},// --- CONTENT: VIDEO PROPS ---\nvideoSource:{type:ControlType.Enum,title:\"Source\",options:[\"file\",\"url\"],optionTitles:[\"File\",\"URL\"],defaultValue:\"file\",displaySegmentedControl:true,hidden:props=>props.mediaType!==\"video\"},videoFile:{type:ControlType.File,title:\"File\",allowedFileTypes:[\"mp4\",\"webm\"],hidden:props=>props.mediaType!==\"video\"||props.videoSource!==\"file\"},videoUrl:{type:ControlType.String,title:\"URL\",placeholder:\"YouTube, Vimeo, or MP4 link\",hidden:props=>props.mediaType!==\"video\"||props.videoSource!==\"url\"},videoPoster:{type:ControlType.ResponsiveImage,title:\"Poster\",hidden:props=>props.mediaType!==\"video\"},videoAutoPlay:{type:ControlType.Boolean,title:\"Auto Play\",defaultValue:true,hidden:props=>props.mediaType!==\"video\"},videoLoop:{type:ControlType.Boolean,title:\"Loop\",defaultValue:true,hidden:props=>props.mediaType!==\"video\"},videoMuted:{type:ControlType.Boolean,title:\"Muted\",defaultValue:true,hidden:props=>props.mediaType!==\"video\"},videoControls:{type:ControlType.Boolean,title:\"Controls\",defaultValue:false,hidden:props=>props.mediaType!==\"video\"},videoPlaysInline:{type:ControlType.Boolean,title:\"Inline\",defaultValue:true,hidden:props=>props.mediaType!==\"video\"},// --- COMMON SETTINGS ---\nobjectFit:{type:ControlType.Enum,title:\"Fit\",options:[\"cover\",\"contain\"],defaultValue:\"cover\"},maskSrc:{type:ControlType.ResponsiveImage,title:\"Alpha Mask\"},// --- TRIGGER ---\ntrigger:{type:ControlType.Enum,title:\"Trigger\",options:[\"layerInView\",\"sectionInView\"],optionTitles:[\"Layer in View\",\"Section in View\"],defaultValue:\"layerInView\"},// 1. Props for \"Layer In View\"\nlayerStart:{type:ControlType.Enum,title:\"Start\",options:[\"top\",\"center\",\"bottom\"],optionTitles:[\"Top\",\"Center\",\"Bottom\"],defaultValue:\"center\",displaySegmentedControl:true,hidden:props=>props.trigger!==\"layerInView\",description:\"Determines when the animation starts based on element visibility.\"},// 2. Props for \"Section In View\"\nsectionId:{type:ControlType.String,title:\"Section\",placeholder:\"e.g. hero-section\",hidden:props=>props.trigger!==\"sectionInView\",description:\"1. Select the target Frame on canvas.\\n2. Add a 'Scroll Section' with a unique name.\\n3. Paste that name here.\"},viewportPosition:{type:ControlType.Enum,title:\"Viewport\",options:[\"start\",\"center\",\"end\"],optionTitles:[\"Top\",\"Center\",\"Bottom\"],defaultValue:\"end\",displaySegmentedControl:true,hidden:props=>props.trigger!==\"sectionInView\"},// --- SETTINGS (Shared) ---\nmode:{type:ControlType.Enum,title:\"Mode\",options:[\"In\",\"Out\"],defaultValue:\"In\",displaySegmentedControl:true},repeat:{type:ControlType.Boolean,title:\"Repeat\",defaultValue:false},// --- EFFECT ---\neffectType:{type:ControlType.Enum,title:\"Effect\",options:[\"reveal\",\"resize\",\"slide\",\"expand\"],optionTitles:[\"Reveal\",\"Resize\",\"Slide In\",\"Expand\"],defaultValue:\"reveal\"},direction:{type:ControlType.Enum,title:\"Direction\",options:[\"top\",\"bottom\",\"left\",\"right\"],optionTitles:[\"↑\",\"↓\",\"←\",\"→\"],defaultValue:\"top\",displaySegmentedControl:true,hidden:props=>props.effectType!==\"reveal\"&&props.effectType!==\"slide\"},anchor:{type:ControlType.Enum,title:\"Anchor\",options:[\"center\",\"top\",\"top-left\",\"top-right\",\"bottom\",\"bottom-left\",\"bottom-right\",\"left\",\"right\"],defaultValue:\"center\",hidden:props=>props.effectType!==\"resize\"},initialExpand:{type:ControlType.Number,title:\"Start Size\",defaultValue:0,min:0,max:100,unit:\"%\",hidden:props=>props.effectType!==\"expand\"},// --- FINE TUNING ---\nzoomContent:{type:ControlType.Boolean,title:\"Zoom Fx\",defaultValue:true,hidden:props=>props.effectType===\"slide\"},zoomLevel:{type:ControlType.Number,title:\"Scale %\",min:100,max:200,defaultValue:120,unit:\"%\",hidden:props=>!props.zoomContent||props.effectType===\"slide\"},transition:{type:ControlType.Transition,title:\"Timing\",defaultValue:{type:\"tween\",ease:\"easeInOut\",duration:.8}},delay:{type:ControlType.Number,title:\"Delay\",min:0,max:2,step:.1,unit:\"s\",defaultValue:0},radius:{type:ControlType.Number,title:\"Radius\",min:0,max:500,defaultValue:0,unit:\"px\"},enableParallax:{type:ControlType.Boolean,title:\"Parallax\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},verticalParallaxAmount:{type:ControlType.Number,title:\"Parallax Y\",defaultValue:30,step:5,max:100,min:-100,unit:\"%\",hidden:props=>!props.enableParallax},horizontalParallaxAmount:{type:ControlType.Number,title:\"Parallax X\",defaultValue:0,step:5,max:100,min:-100,unit:\"%\",description:\"Only seen if image moves horizontally.\",hidden:props=>!props.enableParallax}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ImageParallaxReveal\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerDisableUnlink\":\"* @framerSupportedLayoutWidth fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ImageMaskReveal.map"],"mappings":"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"}