{"version":3,"file":"MuxLoopVideo.Bz11Bl7F.mjs","names":["React.useRef","React.useState"],"sources":["https:/framerusercontent.com/modules/BJpsCFrsTXAiJ6ook8E1/ApPs1uMJ5wvXFJef1rvo/MuxLoopVideo.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";let hlsPromise=null;function loadHls(){if(typeof window===\"undefined\")return Promise.resolve(null);if(window.Hls){return Promise.resolve(window.Hls);}if(hlsPromise){return hlsPromise;}hlsPromise=new Promise((resolve,reject)=>{const existingScript=document.querySelector('script[src*=\"hls.min.js\"]');if(existingScript){existingScript.addEventListener(\"load\",()=>resolve(window.Hls));return;}const script=document.createElement(\"script\");script.src=\"https://cdn.jsdelivr.net/npm/hls.js@1/dist/hls.min.js\";script.async=true;script.onload=()=>resolve(window.Hls);script.onerror=reject;document.head.appendChild(script);});return hlsPromise;}export default function MuxLoopVideo(props){const{playbackId,poster,radius,style}=props;const containerRef=React.useRef(null);const videoRef=React.useRef(null);const hlsRef=React.useRef(null);const visibleRef=React.useRef(false);const[shouldLoad,setShouldLoad]=React.useState(false);// Load the video shortly before it reaches viewport\nReact.useEffect(()=>{const element=containerRef.current;if(!element)return;const observer=new IntersectionObserver(([entry])=>{if(entry.isIntersecting){setShouldLoad(true);}},{rootMargin:\"300px 0px\",threshold:0});observer.observe(element);return()=>observer.disconnect();},[]);// Play only while actually visible\nReact.useEffect(()=>{const element=containerRef.current;const video=videoRef.current;if(!element||!video)return;const observer=new IntersectionObserver(([entry])=>{visibleRef.current=entry.isIntersecting;if(entry.isIntersecting){video.play().catch(()=>{});}else{video.pause();}},{threshold:.01});observer.observe(element);return()=>observer.disconnect();},[]);// Initialize Mux HLS\nReact.useEffect(()=>{if(!shouldLoad||!playbackId)return;const video=videoRef.current;if(!video)return;const source=`https://stream.mux.com/${playbackId}.m3u8`;video.muted=true;video.defaultMuted=true;const handleCanPlay=()=>{if(visibleRef.current){video.play().catch(()=>{});}};video.addEventListener(\"canplay\",handleCanPlay);// Safari / iPhone / iPad\nif(video.canPlayType(\"application/vnd.apple.mpegurl\")){video.src=source;return()=>{video.removeEventListener(\"canplay\",handleCanPlay);video.pause();video.removeAttribute(\"src\");video.load();};}// Chrome / Edge / Firefox\nlet cancelled=false;loadHls().then(Hls=>{if(cancelled||!Hls||!videoRef.current){return;}if(!Hls.isSupported())return;const hls=new Hls({enableWorker:true,capLevelToPlayerSize:true,startLevel:-1});hlsRef.current=hls;hls.loadSource(source);hls.attachMedia(video);hls.on(Hls.Events.MANIFEST_PARSED,()=>{if(visibleRef.current){video.play().catch(()=>{});}});});return()=>{cancelled=true;video.removeEventListener(\"canplay\",handleCanPlay);if(hlsRef.current){hlsRef.current.destroy();hlsRef.current=null;}video.pause();video.removeAttribute(\"src\");video.load();};},[shouldLoad,playbackId]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{...style,width:\"100%\",height:\"100%\",overflow:\"hidden\",position:\"relative\",borderRadius:radius},children:/*#__PURE__*/_jsx(\"video\",{ref:videoRef,autoPlay:true,muted:true,loop:true,playsInline:true,controls:false,preload:\"none\",poster:poster,style:{width:\"100%\",height:\"100%\",display:\"block\",objectFit:\"cover\",objectPosition:\"center\"}})});}MuxLoopVideo.defaultProps={playbackId:\"rR8P8mSaKDzz02TsftugTUdI00cQPJX00oy\",radius:0};addPropertyControls(MuxLoopVideo,{playbackId:{type:ControlType.String,title:\"Playback ID\"},poster:{type:ControlType.Image,title:\"Poster\"},radius:{type:ControlType.Number,title:\"Radius\",min:0,max:100,step:1,unit:\"px\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"MuxLoopVideo\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MuxLoopVideo.map"],"mappings":"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"}