{"version":3,"file":"HeroVideoAlt.BeBRMdAw.mjs","names":["React.useRef","React.useState","React.useCallback","__esmMin","ne","init_npm_react_18_3_1","ce","init_jsx_runtime","c","_e","de","init_framer_BWFVvmND","addPropertyControls","ControlType","HeroVideo","wrapperRef","shouldLoadVideo","setShouldLoadVideo","source","videoUrl","captions","subtitlesUrl","wrapper","observer","entry","wrapperStyle","style","posterFile","VideoSurface","videoRef","failed","setFailed","syncCaptions","tracks","i","showSubtitles","poster","videoStyle","init_HeroVideoAlt","props"],"sources":["https:/framerusercontent.com/modules/Kb1kgT33TI0Ht9DP2NZM/fOo4dTDF9mLtEC7r5LP9/HeroVideoAlt.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * Full-height hero background for public, direct video URLs (Cloudflare R2).\n * Autoplays muted, loops, and crops to fill the available width at 100vh.\n * Starts loading within 300px of the viewport. Optional WebVTT captions.\n */export function HeroVideo({videoUrl=\"\",posterFile=\"\",showSubtitles=false,subtitlesUrl=\"\",style}){const wrapperRef=React.useRef(null);const[shouldLoadVideo,setShouldLoadVideo]=React.useState(false);const source=videoUrl.trim();const captions=subtitlesUrl.trim();React.useEffect(()=>{const wrapper=wrapperRef.current;if(!wrapper)return;if(typeof IntersectionObserver===\"undefined\"){setShouldLoadVideo(true);return;}const observer=new IntersectionObserver(([entry])=>{if(entry.isIntersecting){setShouldLoadVideo(true);observer.disconnect();}},{rootMargin:\"300px\",threshold:.01});observer.observe(wrapper);return()=>observer.disconnect();},[]);return /*#__PURE__*/_jsx(\"div\",{ref:wrapperRef,style:{...wrapperStyle,...style,height:\"100vh\",flexShrink:0,overflow:\"hidden\",...posterFile?{backgroundImage:`url(${JSON.stringify(posterFile)})`,backgroundSize:\"cover\",backgroundPosition:\"center\"}:{}},children:shouldLoadVideo&&source&&/*#__PURE__*/_jsx(VideoSurface,{source:source,poster:posterFile,captions:captions,showSubtitles:showSubtitles},`${source}|${captions}`)});}function VideoSurface({source,poster,captions,showSubtitles}){const videoRef=React.useRef(null);const[failed,setFailed]=React.useState(false);const syncCaptions=React.useCallback(()=>{const tracks=videoRef.current?.textTracks;if(!tracks)return;for(let i=0;i<tracks.length;i++){if(tracks[i].kind===\"captions\"||tracks[i].kind===\"subtitles\"){tracks[i].mode=showSubtitles?\"showing\":\"disabled\";}}},[showSubtitles]);React.useEffect(syncCaptions,[syncCaptions]);// Keep the wrapper's poster background visible if the video cannot load.\nif(failed)return null;return /*#__PURE__*/_jsx(\"video\",{ref:videoRef,src:source,poster:poster||undefined,style:videoStyle,autoPlay:true,muted:true,loop:true,playsInline:true,controls:false,preload:\"metadata\",crossOrigin:captions?\"anonymous\":undefined,disablePictureInPicture:true,\"aria-hidden\":!showSubtitles,onLoadedMetadata:syncCaptions,onError:()=>setFailed(true),children:captions&&/*#__PURE__*/_jsx(\"track\",{kind:\"captions\",src:captions,srcLang:\"en\",label:\"English\",default:showSubtitles,onLoad:syncCaptions})});}const wrapperStyle={position:\"relative\",width:\"100%\",height:\"100vh\",overflow:\"hidden\",backgroundColor:\"#000\"};const videoStyle={position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",objectFit:\"cover\",objectPosition:\"center\",display:\"block\",border:0,pointerEvents:\"none\"};addPropertyControls(HeroVideo,{videoUrl:{type:ControlType.String,title:\"Video URL\",defaultValue:\"\",placeholder:\"https://your-video-domain.com/hero.mp4\",description:\"Public, direct video file URL from Cloudflare R2.\"},posterFile:{type:ControlType.Image,title:\"Poster Image\",defaultValue:\"\"},showSubtitles:{type:ControlType.Boolean,title:\"Subtitles\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},subtitlesUrl:{type:ControlType.String,title:\"Captions URL\",defaultValue:\"\",placeholder:\"https://your-video-domain.com/captions.vtt\",description:\"Optional English WebVTT file. For cross-origin captions, enable CORS on both the video and captions files.\",hidden:props=>!props.showSubtitles}});\nexport const __FramerMetadata__ = {\"exports\":{\"HeroVideo\":{\"type\":\"reactComponent\",\"name\":\"HeroVideo\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./HeroVideoAlt.map"],"mappings":"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"}