{"version":3,"file":"VideoFrame.QOfMS2ti.mjs","names":["useRef","muted","YouTubePlayer","VimeoPlayer"],"sources":["https:/framerusercontent.com/modules/iBoj3HPqfrCqnqNOPaXI/PcHniaroT2i7W1rDSadq/VideoFrame.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useEffect,useRef}from\"react\";import{VIDEO_ID_ATTRIBUTE,useVideoStore,speeds}from\"https://framerusercontent.com/modules/6ffgsaDzsjdxRp9dCkQD/MorESSBKyWuMljhmD7Xu/VideoFrameShared.js\";import YouTubePlayer from\"react-player/youtube\";import VimeoPlayer from\"react-player/vimeo\";/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n * @framerIntrinsicWidth 640\n * @framerIntrinsicHeight 360\n * @framerDisableUnlink\n */export default function VideoFrame(props){const{source,border,thumbnail,startTime,autoPlay}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const muted=autoPlay?true:props.muted;const[videoState,setVideoState]=useVideoStore();const ref=useRef(null);const videoRef=useRef(null);const videoIdRef=useRef(null);const playerRef=useRef(null);const timeCallbacksRef=useRef([]);const state=videoState[videoIdRef.current];const stateRef=useRef(null);useEffect(()=>{const videoParentElement=ref.current?.parentElement?.parentElement;if(!videoParentElement){return;}let newVideoId=videoParentElement.getAttribute(VIDEO_ID_ATTRIBUTE);if(!newVideoId){newVideoId=uuid();videoParentElement.setAttribute(VIDEO_ID_ATTRIBUTE,newVideoId);}const setPlaying=playing=>{if(videoRef.current){if(playing){videoRef.current.play();}else{videoRef.current.pause();}}else if(playerRef.current){setVideoState(prev=>({[videoIdRef.current]:{...prev[videoIdRef.current],playing}}));}};const setFullscreen=fullscreen=>{if(typeof navigator!==\"undefined\"&&navigator.userAgent.includes(\"FramerElectron\")){console.log(\"Fullscreen is not supported in the Framer desktop app. Publish your website or use the Framer web app to preview fullscreen.\");}let customFullscreenSupported=true;if(videoParentElement){if(!document.fullscreenElement){if(videoParentElement.requestFullscreen){videoParentElement.requestFullscreen();}else if(videoParentElement.mozRequestFullScreen){videoParentElement.mozRequestFullScreen()// Firefox\n;}else if(videoParentElement.webkitRequestFullscreen){videoParentElement.webkitRequestFullscreen()// Chrome, Safari and Opera\n;}else if(videoParentElement.msRequestFullscreen){videoParentElement.msRequestFullscreen()// IE/Edge\n;}else if(videoRef.current?.webkitEnterFullScreen){// iOS Safari\nHTMLVideoElement.prototype.webkitEnterFullScreen?.call(videoRef.current);customFullscreenSupported=false;}}else{if(document.exitFullscreen){document.exitFullscreen();}else if(document.mozCancelFullScreen){document.mozCancelFullScreen()// Firefox\n;}else if(document.webkitExitFullscreen){document.webkitExitFullscreen()// Chrome, Safari and Opera\n;}else if(document.msExitFullscreen){document.msExitFullscreen()// IE/Edge\n;}else if(videoRef.current?.webkitExitFullScreen){// iOS Safari\nHTMLVideoElement.prototype.webkitExitFullScreen?.call(videoRef.current);customFullscreenSupported=false;}}}if(customFullscreenSupported){setVideoState(prev=>({[videoIdRef.current]:{...prev[videoIdRef.current],fullscreen}}));}if(fullscreen){props.enterFullscreenEvent?.();}else{props.exitFullscreenEvent?.();}};const setPiP=async pip=>{if(videoRef.current){if(document.pictureInPictureElement){await document.exitPictureInPicture();}else if(videoRef.current.requestPictureInPicture){await videoRef.current.requestPictureInPicture();}}setVideoState(prev=>({[videoIdRef.current]:{...prev[videoIdRef.current],pip}}));if(pip){props.enterPictureInPictureEvent?.();}else{props.exitPictureInPictureEvent?.();}};const setMuted=muted=>{const videoId=videoIdRef.current;if(videoRef.current){videoRef.current.muted=muted;}setVideoState(prev=>({[videoId]:{...prev[videoId],muted}}));};const setVolume=volume=>{volume=Math.min(Math.max(volume,0),1);const videoId=videoIdRef.current;if(videoRef.current){videoRef.current.volume=volume;}setVideoState(prev=>({[videoId]:{...prev[videoId],volume}}));};const setLoop=loop=>{if(videoRef.current){if(videoRef.current.loop){videoRef.current.removeAttribute(\"loop\");}else{videoRef.current.setAttribute(\"loop\",\"\");}}setVideoState(prev=>({[videoIdRef.current]:{...prev[videoIdRef.current],loop}}));};const setSpeed=speed=>{if(videoRef.current){videoRef.current.playbackRate=speed;}setVideoState(prev=>({[videoIdRef.current]:{...prev[videoIdRef.current],speed}}));};// const setPlaybackQuality = (playbackQuality) => {\n//     console.log(\n//         playerRef.current,\n//         playerRef.current.getInternalPlayer()\n//     )\n//     if (playerRef.current && source == \"youTube\") {\n//         console.log(playbackQuality)\n//         playerRef.current\n//             .getInternalPlayer()\n//             .setPlaybackQuality(playbackQuality)\n//     }\n//     setVideoState((prev) => ({\n//         [videoIdRef.current]: {\n//             ...prev[videoIdRef.current],\n//             playbackQuality,\n//         },\n//     }))\n// }\nconst setTime=time=>{let duration=0;if(videoRef.current){duration=videoRef.current.duration;}else if(playerRef.current){duration=playerRef.current.getDuration();}const newTime=stateRef.current?.loop?loopValue(time,0,duration):clamp(time,0,duration);if(videoRef.current){videoRef.current.currentTime=newTime;}else if(playerRef.current){playerRef.current.seekTo(newTime,\"seconds\");}for(const callback of timeCallbacksRef.current){callback([newTime,null]);}};const getTime=()=>{if(videoRef.current){return videoRef.current?.currentTime??0;}else if(playerRef.current){return playerRef.current.getCurrentTime();}};const getLoadedTime=()=>{if(playerRef.current){return playerRef.current.getSecondsLoaded();}return null;};const addTimeCallback=callback=>{if(typeof callback!==\"function\"){return;}if(!Array.isArray(timeCallbacksRef.current)){timeCallbacksRef.current=[callback];}else{timeCallbacksRef.current=[...timeCallbacksRef.current,callback];}callback([getTime(),getLoadedTime()]);};const removeTimeCallback=callback=>{if(Array.isArray(timeCallbacksRef.current)){timeCallbacksRef.current=timeCallbacksRef.current.filter(value=>value!==callback);}else{timeCallbacksRef.current=[];}};setVideoState({[newVideoId]:{videoRef,playerRef,videoParentElement,playing:autoPlay,fullscreen:false,pip:false,muted:muted,volume:props.volume,loop:props.loop,duration:0,speed:Number(props.speed),// playbackQuality: props.playbackQuality,\nsetPlaying,setFullscreen,setPiP,setMuted,setVolume,setLoop,setSpeed,// setPlaybackQuality,\nsetTime,getTime,addTimeCallback,removeTimeCallback}});if(videoIdRef.current!==newVideoId){videoIdRef.current=newVideoId;}if(startTime&&isHTMLVideoType(source)){setTime(parseTimeToSeconds(startTime));}const onVideoEnded=()=>{if(!videoRef.current.loop){setVideoState(prev=>({[videoIdRef.current]:{...prev[videoIdRef.current],playing:false}}));props.endedEvent?.();}else{props.loopedEvent?.();}};const updateVideoTime=()=>{if(videoRef.current){for(const callback of timeCallbacksRef.current){callback([videoRef.current.currentTime,null]);}}setVideoState(prev=>({[videoIdRef.current]:{...prev[videoIdRef.current],duration:videoRef.current.duration}}));};if(videoRef.current){videoRef.current.addEventListener(\"ended\",onVideoEnded);videoRef.current.addEventListener(\"loadedmetadata\",updateVideoTime);videoRef.current.addEventListener(\"timeupdate\",updateVideoTime);if(props.speed!==\"1\"){videoRef.current.playbackRate=Number(props.speed);}}return()=>{if(videoRef.current){videoRef.current.removeEventListener(\"ended\",onVideoEnded);videoRef.current.removeEventListener(\"loadedmetadata\",updateVideoTime);videoRef.current.removeEventListener(\"timeupdate\",updateVideoTime);}};},[]);useEffect(()=>{stateRef.current=videoState[videoIdRef.current];},[videoState[videoIdRef.current]]);const onClick=()=>{if(props.tapToPlay&&state){state.setPlaying(!state.playing);}};const onVideoPlayingChanged=playing=>{setVideoState(prev=>({[videoIdRef.current]:{...prev[videoIdRef.current],playing}}));if(playing){props.playingEvent?.();}else{props.pausedEvent?.();}};let videoElement=null;if(!isHTMLVideoType(source)){const onDurationChange=duration=>{setVideoState(prev=>({[videoIdRef.current]:{...prev[videoIdRef.current],duration}}));};const onTimeChange=time=>{for(const callback of timeCallbacksRef.current){callback(time);}};const onPlayerReady=()=>{if(startTime){stateRef.current?.setTime(parseTimeToSeconds(startTime));}};const videoProps={ref:playerRef,playing:state?state.playing:autoPlay,loop:state?state.loop:props.loop,volume:state?state.volume:props.volume,muted:state?state.muted:muted,pip:state?state.pip:false,width:\"100%\",height:\"100%\",playbackRate:state?state.speed:Number(props.speed),controls:false,onProgress:progress=>onTimeChange([progress.playedSeconds,progress.loadedSeconds]),onDuration:onDurationChange,onReady:onPlayerReady,playsinline:true};if(source==\"youTube\"){videoElement=/*#__PURE__*/_jsx(YouTubePlayer,{url:props.youTubeType==\"text\"?props.youTubeUrl:props.youTubeLink,...videoProps});}else if(source==\"vimeo\"){videoElement=/*#__PURE__*/_jsx(VimeoPlayer,{url:props.vimeoType==\"text\"?props.vimeoUrl:props.vimeoLink,...videoProps});}}else{videoElement=/*#__PURE__*/_jsx(\"video\",{ref:videoRef,src:props.source==\"file\"?props.videoFile:props.urlType==\"text\"?props.videoUrl:props.videoLink,autoPlay:autoPlay,loop:props.loop,preload:props.preload,muted:muted,poster:thumbnail,playsInline:true,onPlay:()=>onVideoPlayingChanged(true),onPause:()=>onVideoPlayingChanged(false),style:{width:\"100%\",height:\"100%\",objectFit:props.sizing,backgroundColor:props.fill}});}return /*#__PURE__*/_jsx(\"div\",{\"data-videoframe\":true,ref:ref,onClick:onClick,style:{position:\"relative\",borderRadius:props.radius,overflow:\"hidden\",userSelect:\"none\",...props.style},children:isCanvas?isHTMLVideoType(source)?/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",backgroundColor:props.fill,backgroundImage:`url('${thumbnail}')`,backgroundSize:props.sizing==\"fill\"?\"100% 100%\":props.sizing,backgroundPosition:\"center\",backgroundRepeat:\"no-repeat\"}}):/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",backgroundColor:props.fill}}):videoElement});}addPropertyControls(VideoFrame,{source:{type:ControlType.Enum,defaultValue:\"url\",options:[\"url\",\"file\",\"youTube\",\"vimeo\"],optionTitles:[\"URL\",\"File\",\"YouTube\",\"Vimeo\"]},urlType:{type:ControlType.Enum,defaultValue:\"text\",options:[\"text\",\"link\"],optionTitles:[\"Text\",\"Link\"],displaySegmentedControl:true,title:\"Video URL\",hidden:props=>props.source!==\"url\"},videoUrl:{type:ControlType.String,defaultValue:\"\",title:\" \",placeholder:\"URL\",description:\"MP4 or WebM file URL\",displayTextArea:true,preventLocalization:true,hidden:props=>props.source!==\"url\"||props.urlType!==\"text\"},videoLink:{type:ControlType.Link,title:\" \",description:\"MP4 or WebM file URL\",hidden:props=>props.source!==\"url\"||props.urlType!==\"link\"},videoFile:{type:ControlType.File,allowedFileTypes:[\"mp4\",\"webm\"],description:\"MP4 or WebM\",title:\"File\",hidden:props=>props.source!==\"file\"},youTubeType:{type:ControlType.Enum,defaultValue:\"text\",options:[\"text\",\"link\"],optionTitles:[\"Text\",\"Link\"],displaySegmentedControl:true,title:\"Video URL\",hidden:props=>props.source!==\"youTube\"},youTubeUrl:{type:ControlType.String,defaultValue:\"\",title:\" \",placeholder:\"https://www.youtube.com/watch?v=\",displayTextArea:true,preventLocalization:true,hidden:props=>props.source!==\"youTube\"||props.youTubeType!==\"text\"},youTubeLink:{type:ControlType.Link,title:\" \",hidden:props=>props.source!==\"youTube\"||props.youTubeType!==\"link\"},vimeoType:{type:ControlType.Enum,defaultValue:\"text\",options:[\"text\",\"link\"],optionTitles:[\"Text\",\"Link\"],displaySegmentedControl:true,title:\"Video URL\",hidden:props=>props.source!==\"vimeo\"},vimeoUrl:{type:ControlType.String,defaultValue:\"\",title:\" \",placeholder:\"https://vimeo.com/\",displayTextArea:true,preventLocalization:true,hidden:props=>props.source!==\"vimeo\"||props.vimeoType!==\"text\"},vimeoLink:{type:ControlType.Link,title:\" \",hidden:props=>props.source!==\"vimeo\"||props.vimeoType!==\"link\"},thumbnail:{type:ControlType.Image,hidden:props=>!isHTMLVideoType(props.source)},sizing:{type:ControlType.Enum,defaultValue:\"contain\",options:[\"cover\",\"contain\",\"fill\"],optionTitles:[\"Fill\",\"Fit\",\"Stretch\"],hidden:props=>props.source===\"youTube\"},startTime:{type:ControlType.String,defaultValue:\"0:00\",placeholder:\"HH:MM:SS\",preventLocalization:true},autoPlay:{type:ControlType.Boolean,defaultValue:false},muted:{type:ControlType.Boolean,defaultValue:true,hidden:props=>props.autoPlay},volume:{type:ControlType.Number,defaultValue:1,min:0,max:1,step:.01,hidden:props=>props.autoPlay||props.muted},loop:{type:ControlType.Boolean,defaultValue:false},tapToPlay:{type:ControlType.Boolean,defaultValue:true,title:\"Tap to Play\",hidden:props=>props.source===\"youTube\"},speed:{type:ControlType.Enum,defaultValue:\"1\",options:speeds,optionTitles:speeds.map(speed=>`${speed}\\xd7`)},// playbackQuality: {\n//     type: ControlType.Enum,\n//     defaultValue: \"default\",\n//     options: playbackQualityOptions,\n//     optionTitles: playbackQualityOptions.map(\n//         (id) => playbackQualityTitles[id][0]\n//     ),\n//     title: \"Quality\",\n//     hidden: (props) => props.source !== \"youTube\",\n// },\npreload:{type:ControlType.Enum,defaultValue:\"none\",options:[\"auto\",\"none\"],optionTitles:[\"Auto\",\"None\"],displaySegmentedControl:true,hidden:props=>!isHTMLVideoType(props.source)||props.autoPlay},fill:{type:ControlType.Color,defaultValue:\"#000\",optional:true},radius:{type:ControlType.BorderRadius,defaultValue:\"0px\"},endedEvent:{type:ControlType.EventHandler,title:\"Video Ended\"},loopedEvent:{type:ControlType.EventHandler,title:\"Looped\"},playingEvent:{type:ControlType.EventHandler,title:\"Playing\"},pausedEvent:{type:ControlType.EventHandler,title:\"Paused\"},enterFullscreenEvent:{type:ControlType.EventHandler,title:\"Enter Fullscreen\"},exitFullscreenEvent:{type:ControlType.EventHandler,title:\"Exit Fullscreen\"},enterPictureInPictureEvent:{type:ControlType.EventHandler,title:\"Enter Picture-in-Picture\"},exitPictureInPictureEvent:{type:ControlType.EventHandler,title:\"Exit Picture-in-Picture\"}});function uuid(){let d=new Date().getTime()// Timestamp\n;let d2=performance&&performance.now&&performance.now()*1e3||0// Time in microseconds since page-load or 0 if unsupported\n;return\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g,function(c){let r=Math.random()*16// random number between 0 and 16\n;if(d>0){// Use timestamp until depleted\nr=(d+r)%16|0;d=Math.floor(d/16);}else{// Use microseconds since page-load if supported\nr=(d2+r)%16|0;d2=Math.floor(d2/16);}return(c===\"x\"?r:r&3|8).toString(16);});}function loopValue(value,min,max){const range=max-min+1;return((value-min)%range+range)%range+min;}function clamp(value,min,max){if(value<min){return min;}else if(value>max){return max;}else{return value;}}function parseTimeToSeconds(timeString){// Remove any leading/trailing whitespace\ntimeString=timeString.trim();// Split the time string into parts\nconst parts=timeString.split(\":\");let seconds=0;if(parts.length===3){// HH:MM:SS format\nseconds+=parseInt(parts[0])*3600// Hours to seconds\n;seconds+=parseInt(parts[1])*60// Minutes to seconds\n;seconds+=parseInt(parts[2])// Seconds\n;}else if(parts.length===2){// MM:SS format\nseconds+=parseInt(parts[0])*60// Minutes to seconds\n;seconds+=parseInt(parts[1])// Seconds\n;}else if(parts.length===1){// SS format\nseconds+=parseInt(parts[0])// Seconds\n;}return seconds;}function isHTMLVideoType(source){return source===\"url\"||source===\"file\";}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"VideoFrame\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"fixed\",\"framerIntrinsicWidth\":\"640\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerIntrinsicHeight\":\"360\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./VideoFrame.map"],"mappings":"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"}