{"version":3,"file":"HLSVideo.ChokEIFe.mjs","names":["useRef","useState"],"sources":["https:/framerusercontent.com/modules/c7m6ORTCeJzzNq3tpMhd/3vFUDHtz3Lzyj4iAoZ7b/HLSVideo.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/** Matches Framer: lazy load streams when a poster is set (near viewport). */const LAZY_LOAD_ROOT_MARGIN=\"200px 0px\";/** Viewport width at or below which hls.js uses mobile ABR/buffer tuning (Android/non-Safari). */const MOBILE_BREAKPOINT_PX=809;let hlsScriptPromise=null;/** Cloudflare manifest hint (Mbps) — biases ladder toward 720p–1080p; applies to Safari + hls.js. */const HIGH_QUALITY_BANDWIDTH_HINT_MBPS=6;/** Cloudflare Stream watch URLs → HLS manifest */function normalizeStreamUrl(url){const trimmed=url.trim();if(!trimmed)return trimmed;const watchMatch=trimmed.match(/^(https:\\/\\/customer-[^/]+\\.cloudflarestream\\.com\\/[a-f0-9-]+)\\/watch\\/?$/i);if(watchMatch)return`${watchMatch[1]}/manifest/video.m3u8`;return trimmed;}function applyStreamQuality(url,quality){if(quality!==\"high\"||!isHlsSource(url))return url;if(/clientBandwidthHint=/i.test(url))return url;const separator=url.includes(\"?\")?\"&\":\"?\";return`${url}${separator}clientBandwidthHint=${HIGH_QUALITY_BANDWIDTH_HINT_MBPS}`;}function isHlsSource(url){const lower=url.toLowerCase();return lower.includes(\".m3u8\")||lower.includes(\"application/vnd.apple.mpegurl\");}function canPlayNativeHls(video){return video.canPlayType(\"application/vnd.apple.mpegurl\")!==\"\";}function loadHlsJs(){if(typeof window===\"undefined\"){return Promise.reject(new Error(\"hls.js unavailable\"));}if(window.Hls){return Promise.resolve(window.Hls);}if(!hlsScriptPromise){hlsScriptPromise=new Promise((resolve,reject)=>{const existing=document.querySelector('script[data-hls-video-component=\"true\"]');if(existing){if(window.Hls){resolve(window.Hls);return;}existing.addEventListener(\"load\",()=>{if(window.Hls)resolve(window.Hls);else reject(new Error(\"hls.js failed to initialize\"));});existing.addEventListener(\"error\",()=>{hlsScriptPromise=null;reject(new Error(\"hls.js failed to load\"));});return;}const script=document.createElement(\"script\");script.src=\"https://cdn.jsdelivr.net/npm/hls.js@1.5.18/dist/hls.min.js\";script.async=true;script.dataset.hlsVideoComponent=\"true\";script.onload=()=>{if(window.Hls)resolve(window.Hls);else reject(new Error(\"hls.js failed to initialize\"));};script.onerror=()=>{hlsScriptPromise=null;reject(new Error(\"hls.js failed to load\"));};document.head.appendChild(script);});}return hlsScriptPromise;}function seekToStart(video,startTime){if(startTime<=0)return;try{video.currentTime=startTime;}catch{// Ignore seek errors before metadata is ready.\n}}function isFramerCanvas(){try{return RenderTarget.current()===RenderTarget.canvas;}catch{return false;}}function isFramerPreview(){try{return RenderTarget.current()===RenderTarget.preview;}catch{return false;}}/**\n * Mobile hls.js tuning (Chrome/Firefox Android, etc.). iOS Safari uses native HLS and ignores this.\n * Matches common industry defaults: start low, cap to player size, tighter buffers for faster ABR step-up.\n */function isMobilePlaybackContext(container){if(typeof window===\"undefined\")return false;if(window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT_PX}px)`).matches)return true;const width=container?.clientWidth??0;return width>0&&width<=MOBILE_BREAKPOINT_PX;}function createHlsConfig(container,quality){const base={enableWorker:!isFramerPreview(),lowLatencyMode:false};const onMobile=isMobilePlaybackContext(container);if(quality===\"high\"){return{...base,startLevel:-1,capLevelToPlayerSize:false,abrEwmaDefaultEstimate:2e6,abrBandWidthUpFactor:.85,maxBufferLength:onMobile?20:30,maxMaxBufferLength:onMobile?30:30,backBufferLength:onMobile?15:30};}if(onMobile){return{...base,startLevel:0,capLevelToPlayerSize:true,maxBufferLength:10,maxMaxBufferLength:20,backBufferLength:10,abrEwmaDefaultEstimate:5e5};}return{...base,maxBufferLength:30,backBufferLength:30};}function isInViewport(el){const rect=el.getBoundingClientRect();return rect.bottom>0&&rect.top<window.innerHeight&&rect.right>0&&rect.left<window.innerWidth;}/** Reveal video only after a real frame is painted (avoids black flash after attachMedia). */function revealAfterFirstFrame(video,onReveal){if(\"requestVideoFrameCallback\"in video){video.requestVideoFrameCallback(()=>onReveal());return;}onReveal();}/** True when the media element lost its buffer (common after background tab suspension). */function isVideoPlaybackStale(video){if(video.error)return true;if(video.networkState===HTMLMediaElement.NETWORK_EMPTY)return true;if(video.readyState<HTMLMediaElement.HAVE_CURRENT_DATA)return true;if(video.videoWidth===0&&video.videoHeight===0)return true;return false;}export default function HLSVideo(props){const{src,poster,backgroundColor,radius,startTime,autoplay,loop,fit,showControls,muted,quality=\"balanced\"}=props;const containerRef=useRef(null);const videoRef=useRef(null);const hlsRef=useRef(null);const metadataReadyRef=useRef(false);const hasPlayedInViewRef=useRef(false);const firstFrameRevealedRef=useRef(false);const wasTabHiddenRef=useRef(false);const wasPlayingWhenHiddenRef=useRef(false);const[visibilityRecoveryTick,setVisibilityRecoveryTick]=useState(0);const[status,setStatus]=useState(\"idle\");const[errorMessage,setErrorMessage]=useState(null);const trimmedSrc=applyStreamQuality(normalizeStreamUrl(src),quality);const hasPoster=Boolean(poster?.trim());const[firstFrameShown,setFirstFrameShown]=useState(!hasPoster);const useNativeLoop=loop&&startTime<=0;const playOnceInView=autoplay&&!loop;const isCanvas=isFramerCanvas();const showVideo=trimmedSrc!==\"\"&&status!==\"error\";const playInView=autoplay&&!isCanvas;const lazyLoadEnabled=hasPoster&&!isCanvas;const[shouldLoad,setShouldLoad]=useState(!lazyLoadEnabled);useEffect(()=>{firstFrameRevealedRef.current=!hasPoster;setFirstFrameShown(!hasPoster);},[hasPoster,poster]);useEffect(()=>{if(!hasPoster||!poster)return;const img=new Image;img.decoding=\"async\";img.src=poster;},[hasPoster,poster]);useEffect(()=>{setStatus(current=>{if(current!==\"error\")return current;metadataReadyRef.current=false;hasPlayedInViewRef.current=false;firstFrameRevealedRef.current=!hasPoster;return\"idle\";});setErrorMessage(null);},[trimmedSrc,hasPoster,quality]);useEffect(()=>{if(!lazyLoadEnabled){setShouldLoad(true);return;}const el=containerRef.current;if(!el)return;const observer=new IntersectionObserver(([entry])=>{if(entry?.isIntersecting){setShouldLoad(true);observer.disconnect();}},{root:null,rootMargin:LAZY_LOAD_ROOT_MARGIN,threshold:0});observer.observe(el);return()=>observer.disconnect();},[lazyLoadEnabled,trimmedSrc]);useEffect(()=>{if(!playInView||!shouldLoad||!showVideo)return;const video=videoRef.current;const el=containerRef.current;if(!video||!el)return;const tryPlayInView=()=>{if(!metadataReadyRef.current)return;if(playOnceInView){if(hasPlayedInViewRef.current)return;hasPlayedInViewRef.current=true;seekToStart(video,startTime);}void video.play().catch(()=>{});};const observer=new IntersectionObserver(([entry])=>{if(!metadataReadyRef.current)return;if(entry?.isIntersecting){tryPlayInView();}else if(autoplay){video.pause();}},{root:null,threshold:0,rootMargin:LAZY_LOAD_ROOT_MARGIN});observer.observe(el);return()=>observer.disconnect();},[playInView,playOnceInView,shouldLoad,showVideo,trimmedSrc,autoplay,startTime]);/** Recover from background-tab media suspension (blank video / dead hls.js). */useEffect(()=>{if(isCanvas)return;let softResumeTimer;const clearSoftResumeTimer=()=>{if(softResumeTimer!==undefined){window.clearTimeout(softResumeTimer);softResumeTimer=undefined;}};const requestHardRecovery=()=>{clearSoftResumeTimer();setVisibilityRecoveryTick(tick=>tick+1);};const trySoftResume=video=>{void video.play().catch(()=>{requestHardRecovery();});};const handleReturnToForeground=()=>{if(!shouldLoad||!trimmedSrc||status===\"error\")return;const video=videoRef.current;if(!video||!showVideo){requestHardRecovery();return;}if(status===\"loading\"||isVideoPlaybackStale(video)){requestHardRecovery();return;}const shouldResume=wasPlayingWhenHiddenRef.current||autoplay&&muted;if(shouldResume&&video.paused){trySoftResume(video);clearSoftResumeTimer();softResumeTimer=window.setTimeout(()=>{softResumeTimer=undefined;const current=videoRef.current;if(!current||document.hidden)return;if(isVideoPlaybackStale(current)||shouldResume&&current.paused){requestHardRecovery();}},400);}};const onVisibilityChange=()=>{if(document.hidden){clearSoftResumeTimer();wasTabHiddenRef.current=true;const video=videoRef.current;wasPlayingWhenHiddenRef.current=Boolean(video&&!video.paused);return;}if(!wasTabHiddenRef.current)return;wasTabHiddenRef.current=false;handleReturnToForeground();};const onPageShow=event=>{if(!event.persisted)return;handleReturnToForeground();};document.addEventListener(\"visibilitychange\",onVisibilityChange);window.addEventListener(\"pageshow\",onPageShow);return()=>{clearSoftResumeTimer();document.removeEventListener(\"visibilitychange\",onVisibilityChange);window.removeEventListener(\"pageshow\",onPageShow);};},[isCanvas,shouldLoad,trimmedSrc,status,showVideo,autoplay,muted,loop]);useEffect(()=>{const video=videoRef.current;if(!video||!shouldLoad||!showVideo)return;let disposed=false;let setupGeneration=0;const detachVideoListeners=()=>{video.removeEventListener(\"loadedmetadata\",onLoadedMetadata);video.removeEventListener(\"playing\",onPlaying);video.removeEventListener(\"timeupdate\",onTimeUpdate);video.removeEventListener(\"error\",onVideoError);video.removeEventListener(\"ended\",onEnded);};const cleanupPlayer=()=>{detachVideoListeners();if(hlsRef.current){hlsRef.current.destroy();hlsRef.current=null;}video.pause();video.removeAttribute(\"src\");};const failPlayback=message=>{if(disposed)return;cleanupPlayer();metadataReadyRef.current=false;firstFrameRevealedRef.current=!hasPoster;setFirstFrameShown(!hasPoster);setStatus(\"error\");setErrorMessage(message);};const revealFirstFrame=()=>{if(disposed||firstFrameRevealedRef.current||!hasPoster)return;revealAfterFirstFrame(video,()=>{if(disposed||firstFrameRevealedRef.current)return;firstFrameRevealedRef.current=true;setFirstFrameShown(true);video.removeEventListener(\"timeupdate\",onTimeUpdate);});};const onPlaying=()=>{revealFirstFrame();};const onTimeUpdate=()=>{if(!hasPoster||firstFrameRevealedRef.current)return;if(video.currentTime>0){video.removeEventListener(\"timeupdate\",onTimeUpdate);revealFirstFrame();}};const onVideoError=()=>{failPlayback(\"Video failed to load.\");};const attemptPlayInView=()=>{if(!playInView||!metadataReadyRef.current)return;if(playOnceInView){if(hasPlayedInViewRef.current)return;hasPlayedInViewRef.current=true;seekToStart(video,startTime);}void video.play().catch(()=>{});};const onLoadedMetadata=()=>{if(disposed||metadataReadyRef.current)return;metadataReadyRef.current=true;seekToStart(video,startTime);setStatus(\"ready\");if(playInView&&isInViewport(containerRef.current??video)){attemptPlayInView();}};const onEnded=()=>{if(!loop||startTime<=0)return;seekToStart(video,startTime);void video.play().catch(()=>{});};const attachVideoListeners=()=>{video.addEventListener(\"loadedmetadata\",onLoadedMetadata);video.addEventListener(\"playing\",onPlaying);video.addEventListener(\"timeupdate\",onTimeUpdate);video.addEventListener(\"error\",onVideoError);video.addEventListener(\"ended\",onEnded);};const setup=async()=>{const generation=++setupGeneration;cleanupPlayer();metadataReadyRef.current=false;hasPlayedInViewRef.current=false;firstFrameRevealedRef.current=!hasPoster;setFirstFrameShown(!hasPoster);setErrorMessage(null);if(!trimmedSrc){setStatus(\"idle\");return;}setStatus(\"loading\");video.loop=useNativeLoop;video.muted=muted;video.defaultMuted=muted;video.playsInline=true;attachVideoListeners();const isHls=isHlsSource(trimmedSrc);try{if(!isHls){video.src=trimmedSrc;return;}if(canPlayNativeHls(video)){video.src=trimmedSrc;return;}const Hls=await loadHlsJs();if(disposed||generation!==setupGeneration)return;if(!Hls.isSupported()){failPlayback(\"HLS is not supported in this browser.\");return;}const hls=new Hls(createHlsConfig(containerRef.current,quality));hlsRef.current=hls;hls.on(Hls.Events.ERROR,(_event,data)=>{if(disposed||generation!==setupGeneration)return;const fatal=data?.fatal;if(fatal===false)return;failPlayback(\"Could not load HLS stream.\");});hls.attachMedia(video);hls.loadSource(trimmedSrc);}catch{if(disposed||generation!==setupGeneration)return;failPlayback(\"Could not load HLS stream.\");}};void setup();return()=>{disposed=true;setupGeneration+=1;cleanupPlayer();};},[shouldLoad,showVideo,trimmedSrc,startTime,loop,useNativeLoop,muted,playInView,playOnceInView,hasPoster,quality,visibilityRecoveryTick]);useEffect(()=>{const video=videoRef.current;if(!video||status!==\"ready\")return;seekToStart(video,startTime);},[startTime,status]);return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{width:\"100%\",height:\"100%\",position:\"relative\",overflow:\"hidden\",backgroundColor,borderRadius:radius},children:[hasPoster&&poster&&/*#__PURE__*/_jsx(\"img\",{src:poster,alt:\"\",decoding:\"async\",draggable:false,\"aria-hidden\":firstFrameShown&&status!==\"error\",style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",objectFit:fit,pointerEvents:\"none\",opacity:firstFrameShown&&status!==\"error\"?0:1,visibility:firstFrameShown&&status!==\"error\"?\"hidden\":\"visible\",zIndex:2}}),showVideo?/*#__PURE__*/_jsx(\"video\",{ref:videoRef,poster:hasPoster?undefined:poster||undefined,controls:showControls,autoPlay:autoplay&&!playInView,muted:muted,loop:useNativeLoop,playsInline:true,preload:shouldLoad?autoplay?\"auto\":\"metadata\":\"none\",style:{width:\"100%\",height:\"100%\",display:\"block\",objectFit:fit,backgroundColor:\"transparent\",opacity:hasPoster?firstFrameShown?1:0:1,zIndex:1}}):null,!trimmedSrc&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",padding:16,color:\"var(--framer-color-text-secondary, rgba(255,255,255,0.7))\",fontSize:12,textAlign:\"center\"},children:\"Add an HLS URL (.m3u8)\"}),trimmedSrc&&shouldLoad&&status===\"loading\"&&!poster&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",pointerEvents:\"none\",color:\"var(--framer-color-text-secondary, rgba(255,255,255,0.55))\",fontSize:11},children:\"Loading…\"}),status===\"error\"&&!hasPoster&&isCanvas&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,zIndex:3,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",padding:16,color:\"var(--framer-color-text-secondary, rgba(255,255,255,0.7))\",fontSize:11,textAlign:\"center\"},children:errorMessage??\"Playback error\"})]});}HLSVideo.defaultProps={src:\"\",poster:\"\",backgroundColor:\"#000000\",radius:0,startTime:0,autoplay:false,loop:false,fit:\"cover\",showControls:true,muted:false,quality:\"balanced\"};addPropertyControls(HLSVideo,{src:{type:ControlType.String,title:\"Source\",placeholder:\"https://…/manifest/video.m3u8\",displayTextArea:true},poster:{type:ControlType.Image,title:\"Poster\"},autoplay:{type:ControlType.Boolean,title:\"Playing\",defaultValue:false},loop:{type:ControlType.Boolean,title:\"Loop\",defaultValue:false},muted:{type:ControlType.Boolean,title:\"Muted\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"},quality:{type:ControlType.Enum,title:\"Quality\",options:[\"balanced\",\"high\"],optionTitles:[\"Balanced\",\"High\"],defaultValue:\"balanced\",description:\"High favors sharper HLS rungs (heroes, short clips). May buffer on slow mobile.\"},showControls:{type:ControlType.Boolean,title:\"Controls\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},fit:{type:ControlType.Enum,title:\"Fit\",options:[\"cover\",\"fill\",\"contain\",\"scale-down\",\"none\"],optionTitles:[\"Cover\",\"Fill\",\"Contain\",\"Scale Down\",\"None\"],defaultValue:\"cover\"},startTime:{type:ControlType.Number,title:\"Start\",defaultValue:0,min:0,step:.1,displayStepper:true,unit:\"s\"},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:0,min:0,max:512,step:1,displayStepper:true,unit:\"px\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#000000\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"HLSVideo\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./HLSVideo.map"],"mappings":"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"}