{"version":3,"file":"ProgressiveProjectPreview.DHr-pap1.mjs","names":["useRef","useState","useCallback","useMemo"],"sources":["https:/framerusercontent.com/modules/s3Odx9kIhFYOxartFUte/eCGzRvF0mVqkyMeLlHt2/ProgressiveProjectPreview.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{startTransition,useCallback,useEffect,useMemo,useRef,useState}from\"react\";/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function ProgressiveProjectPreview(props){const{videoUrl=\"\",posterUrl=\"\",fallbackUrl=\"\",alt=\"Project preview\",mutedAutoplay=true,objectFit=\"cover\"}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const containerRef=useRef(null);const videoRef=useRef(null);const[isVideoReady,setIsVideoReady]=useState(false);const[videoFailed,setVideoFailed]=useState(false);const[prefersReducedMotion,setPrefersReducedMotion]=useState(false);const[isVisible,setIsVisible]=useState(false);const resolveImageUrl=useCallback(value=>{if(typeof value===\"string\")return value;if(value&&typeof value===\"object\"&&typeof value.src===\"string\"){return value.src;}return\"\";},[]);const posterSrc=useMemo(()=>resolveImageUrl(posterUrl),[posterUrl,resolveImageUrl]);const fallbackSrc=useMemo(()=>resolveImageUrl(fallbackUrl),[fallbackUrl,resolveImageUrl]);const activePoster=useMemo(()=>{return posterSrc||fallbackSrc;},[posterSrc,fallbackSrc]);const canUseVideo=useMemo(()=>{return Boolean(videoUrl)&&!videoFailed&&mutedAutoplay&&!prefersReducedMotion&&isVisible&&!isCanvas;},[videoUrl,videoFailed,mutedAutoplay,prefersReducedMotion,isVisible,isCanvas]);const updateReducedMotion=useCallback(matches=>{startTransition(()=>{setPrefersReducedMotion(matches);});},[]);useEffect(()=>{if(typeof window===\"undefined\")return;const mediaQuery=window.matchMedia(\"(prefers-reduced-motion: reduce)\");updateReducedMotion(mediaQuery.matches);const onChange=event=>{updateReducedMotion(event.matches);};if(mediaQuery.addEventListener){mediaQuery.addEventListener(\"change\",onChange);return()=>{mediaQuery.removeEventListener(\"change\",onChange);};}mediaQuery.addListener(onChange);return()=>{mediaQuery.removeListener(onChange);};},[updateReducedMotion]);useEffect(()=>{if(isCanvas)return;const element=containerRef.current;if(!element)return;const observer=new IntersectionObserver(([entry])=>{setIsVisible(entry.isIntersecting);},{threshold:.25});observer.observe(element);return()=>{observer.disconnect();};},[isCanvas]);useEffect(()=>{const video=videoRef.current;if(!video)return;if(!canUseVideo){video.pause();return;}const playPromise=video.play();if(playPromise&&typeof playPromise.catch===\"function\"){playPromise.catch(()=>{startTransition(()=>{setVideoFailed(true);});});}},[canUseVideo]);return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\",background:\"transparent\"},children:[activePoster?/*#__PURE__*/_jsx(\"img\",{src:activePoster,alt:alt||\"Project preview\",style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",objectFit,display:\"block\"}}):null,videoUrl?/*#__PURE__*/_jsx(\"video\",{ref:videoRef,src:videoUrl,muted:true,playsInline:true,loop:true,preload:\"none\",\"aria-label\":alt,onCanPlay:()=>{startTransition(()=>{setIsVideoReady(true);});},onLoadedData:()=>{startTransition(()=>{setIsVideoReady(true);});},onError:()=>{startTransition(()=>{setVideoFailed(true);});},style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",objectFit,opacity:isVideoReady?1:0,transition:\"opacity 220ms ease\",pointerEvents:\"none\"}}):null]});}addPropertyControls(ProgressiveProjectPreview,{videoUrl:{type:ControlType.File,title:\"Video URL\",allowedFileTypes:[\"mp4\",\"webm\",\"mov\"]},posterUrl:{type:ControlType.Image,title:\"Poster URL\"},fallbackUrl:{type:ControlType.Image,title:\"Fallback URL\"},alt:{type:ControlType.String,title:\"Alt Text\",defaultValue:\"Project preview\"},mutedAutoplay:{type:ControlType.Boolean,title:\"Muted Autoplay\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},objectFit:{type:ControlType.Enum,title:\"Object Fit\",defaultValue:\"cover\",options:[\"cover\",\"contain\",\"fill\",\"none\",\"scale-down\"],optionTitles:[\"Cover\",\"Contain\",\"Fill\",\"None\",\"Scale Down\"]}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ProgressiveProjectPreview\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ProgressiveProjectPreview.map"],"mappings":"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"}