{"version":3,"file":"Video.B76lO2kW.mjs","names":["useRef","useMemo","useCallback"],"sources":["https:/framerusercontent.com/modules/3Xi2AslpcDRhfyCVPmx3/d0Oobr5BHnVqZJQyMdGn/storage.js","https:/framerusercontent.com/modules/m2nL4qHNbqX9QCxsHsGL/aEuoU9xXdHzXrnVcCkrq/cache.js","https:/framer.com/m/framer/default-video-utils.js","https:/framerusercontent.com/modules/aokp9DDPTWaRLrvhFlr7/TOPzYi8C28I7KdesjP2s/Video.js"],"sourcesContent":["export function Storage(name) {\n    this.ready = new Promise((resolve, reject)=>{\n        var request = window.indexedDB.open(location.origin);\n        request.onupgradeneeded = (e)=>{\n            this.db = e.target[\"result\"];\n            this.db.createObjectStore(\"store\");\n        };\n        request.onsuccess = (e)=>{\n            this.db = e.target[\"result\"];\n            resolve();\n        };\n        request.onerror = (e)=>{\n            this.db = e.target[\"result\"];\n            reject(e);\n        };\n    });\n}\nStorage.prototype.get = function(key) {\n    return this.ready.then(()=>{\n        return new Promise((resolve, reject)=>{\n            var request = this.getStore().get(key);\n            request.onsuccess = (e)=>resolve(e.target.result)\n            ;\n            request.onerror = reject;\n        });\n    });\n};\nStorage.prototype.getStore = function() {\n    return this.db.transaction([\n        \"store\"\n    ], \"readwrite\").objectStore(\"store\");\n};\nStorage.prototype.set = function(key, value) {\n    return this.ready.then(()=>{\n        return new Promise((resolve, reject)=>{\n            var request = this.getStore().put(value, key);\n            request.onsuccess = resolve;\n            request.onerror = reject;\n        });\n    });\n};\nStorage.prototype.delete = function(key, value) {\n    window.indexedDB.deleteDatabase(location.origin);\n};\n\nexport const __FramerMetadata__ = {\"exports\":{\"Storage\":{\"type\":\"function\"}}}","// @ts-ignore\nimport { Storage } from \"https://framerusercontent.com/modules/3Xi2AslpcDRhfyCVPmx3/d0Oobr5BHnVqZJQyMdGn/storage.js\";\nexport const hashCode = (s)=>s.split(\"\").reduce((a, b)=>{\n        a = (a << 5) - a + b.charCodeAt(0);\n        return a & a;\n    }, 0)\n;\nexport function corsProxy(url) {\n    return `https://cors-anywhere.herokuapp.com/${url}`;\n}\nexport async function cachedResponse(url, cache = new Storage(\"cache\")) {\n    const cacheKey = url;\n    const data = await cache.get(cacheKey);\n    if (data) {\n        return data;\n    } else {\n        var req = new XMLHttpRequest();\n        req.open(\"GET\", url, true);\n        req.responseType = \"blob\";\n        return new Promise((resolve, reject)=>{\n            req.onload = async function() {\n                if (this.status === 200) {\n                    await cache.set(url, this.response);\n                    resolve(this.response);\n                } else {\n                    reject(new Error(`Response status ${this.status} ${this.statusText}`));\n                }\n            };\n            req.onerror = function(error) {\n                reject(error);\n            };\n            req.send();\n        });\n    }\n}\nexport async function checkForCachedData(url, cache = new Storage(\"cache\")) {\n    const cacheKey = url;\n    const data = await cache.get(cacheKey);\n    if (data) {\n        return data;\n    } else {\n        return null;\n    }\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"hashCode\":{\"type\":\"variable\"},\"checkForCachedData\":{\"type\":\"function\"},\"corsProxy\":{\"type\":\"function\"},\"cachedResponse\":{\"type\":\"function\"}}}","import { cachedResponse, corsProxy, hashCode, checkForCachedData } from \"https://framerusercontent.com/modules/m2nL4qHNbqX9QCxsHsGL/aEuoU9xXdHzXrnVcCkrq/cache.js\";\nexport { cachedResponse, corsProxy, hashCode, checkForCachedData };\n\nexport const __FramerMetadata__ = {\"exports\":{\"checkForCachedData\":{\"type\":\"variable\"},\"hashCode\":{\"type\":\"variable\"},\"cachedResponse\":{\"type\":\"variable\"},\"corsProxy\":{\"type\":\"variable\"}}}","import{jsx as _jsx}from\"react/jsx-runtime\";import{useRef,useEffect,useMemo,useCallback,memo}from\"react\";import{ControlType,RenderTarget,addPropertyControls,useIsInCurrentNavigationTarget}from\"framer\";import{cachedResponse,corsProxy,hashCode,checkForCachedData}from\"https://framer.com/m/framer/default-video-utils.js\";import{useOnEnter,useOnExit,defaultEvents,useAutoMotionValue,useIsBrowserSafari}from\"https://framer.com/m/framer/default-utils.js@^0.45.0\";var ObjectFitType;(function(ObjectFitType){ObjectFitType[\"Fill\"]=\"fill\";ObjectFitType[\"Contain\"]=\"contain\";ObjectFitType[\"Cover\"]=\"cover\";ObjectFitType[\"None\"]=\"none\";ObjectFitType[\"ScaleDown\"]=\"scale-down\";})(ObjectFitType||(ObjectFitType={}));var LoopType;(function(LoopType){LoopType[\"StartTime\"]=\"startTime\";LoopType[\"Beginning\"]=\"beginning\";LoopType[\"NoLoop\"]=\"noLoop\";})(LoopType||(LoopType={}));var PreloadType;(function(PreloadType){PreloadType[\"None\"]=\"none\";PreloadType[\"MetaData\"]=\"metadata\";PreloadType[\"Auto\"]=\"auto\";PreloadType[\"ForceCache\"]=\"force\";})(PreloadType||(PreloadType={}));var SrcType;(function(SrcType){SrcType[\"Video\"]=\"Upload\";SrcType[\"Url\"]=\"URL\";})(SrcType||(SrcType={}));// Reduce renders\nfunction getProps(props){const{width,height,topLeft,topRight,bottomRight,bottomLeft,id,children,...rest}=props;return rest;}/**\n * VIDEO\n *\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 200\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight any\n */ export function Video(props){const newProps=getProps(props);return(/*#__PURE__*/ _jsx(VideoMemo,{...newProps}));}const VideoMemo=/*#__PURE__*/ memo(function VideoInner(props){const{srcType,srcFile,srcUrl,playing,canvasPlay,loopType,muted,playsinline,controls,preload,progress,objectFit,backgroundColor,radius,topLeft,topRight,bottomRight,bottomLeft,isMixed,onSeeked,onPause,onPlay,onEnd,onClick,onMouseEnter,onMouseLeave,onMouseDown,onMouseUp,poster,restartOnEnter,posterEnabled,startTime:startTimeProp,volume}=props;const isInCurrentNavigationTarget=useIsInCurrentNavigationTarget();// video elements behave oddly at 100% duration\nconst startTime=startTimeProp===100?99.9:startTimeProp;const videoRef=useRef();const isLoaded=useRef(false);const isSafari=useIsBrowserSafari();const wasPausedOnLeave=useRef(null);const wasEndedOnLeave=useRef(null);const loop=loopType!==LoopType.NoLoop;const fullLoop=loopType===LoopType.Beginning;const isCanvas=useMemo(()=>RenderTarget.current()!==RenderTarget.preview,[]);const isForcedCache=preload===PreloadType.ForceCache;const isAutoCache=preload===PreloadType.Auto;const isMuted=useMemo(()=>isCanvas?true:muted,[isCanvas,muted]);const shouldPlay=!isCanvas||canvasPlay;const autoPlay=useMemo(()=>playing,[]);const play=useCallback(()=>{var ref;if(isInCurrentNavigationTarget)(ref=videoRef.current)===null||ref===void 0?void 0:ref.play();},[]);const pause=useCallback(()=>{var ref;return(ref=videoRef.current)===null||ref===void 0?void 0:ref.pause();},[]);const restartVideo=useCallback((playAfter=true)=>{if(!fullLoop)setProgress(startTime,playAfter);else play();},[startTime,fullLoop]);const setProgress=(newProgress,playAfter=false)=>{if(videoRef.current){const isAlreadySet=Math.abs(videoRef.current.currentTime-newProgress*0.01*videoRef.current.duration)<0.3;if(videoRef.current.duration>0&&!isAlreadySet)videoRef.current.currentTime=newProgress*0.01*videoRef.current.duration;if(autoPlay&&shouldPlay&&playAfter)play();}};// Change progress via prop\nuseEffect(()=>{setProgress(startTime);},[startTimeProp,srcFile,srcUrl]);const videoProgress=useAutoMotionValue(progress,{transform:value=>value*0.01,onChange:(newValue,value)=>{setProgress(newValue);}});// Checking if we need to play on navigation enter\nuseOnEnter(()=>{if(wasPausedOnLeave.current===null)return;if(videoRef.current){if(restartOnEnter)restartVideo(!wasPausedOnLeave.current||wasEndedOnLeave.current);else if(!wasEndedOnLeave&&loop||!wasPausedOnLeave.current)play();}});// Pausing & saving playing state on navigation exit\nuseOnExit(()=>{if(videoRef.current){wasEndedOnLeave.current=videoRef.current.ended;wasPausedOnLeave.current=videoRef.current.paused;pause();}});const getUrl=useCallback((cors=false)=>{if(srcType===SrcType.Url){return cors?corsProxy(srcUrl):srcUrl;}if(srcType===SrcType.Video){return srcFile;}},[srcType,srcFile,srcUrl]);// Logic for cache options\nconst setVideoRef=useCallback(async element=>{if(!element)return;videoRef.current=element;if(isSafari){videoRef.current[\"src\"]=getUrl();return;}if(preload===PreloadType.ForceCache){if(isLoaded.current)return;const url=getUrl(true);const response=await cachedResponse(url);if(response&&videoRef.current){videoRef.current[\"src\"]=URL.createObjectURL(response) // IE10+\n;isLoaded.current=true;}}else if(preload===PreloadType.Auto){if(isLoaded.current)return;const url=getUrl(true);const response=await checkForCachedData(url);if(response&&videoRef.current)videoRef.current[\"src\"]=URL.createObjectURL(response);else videoRef.current[\"src\"]=getUrl();isLoaded.current=true;}},[preload]);// Trigger rerender & reload when key props change\nuseEffect(()=>{if(isCanvas)isLoaded.current=false;setVideoRef(videoRef.current);},[srcFile,srcUrl,srcType,posterEnabled,canvasPlay,preload,loop,autoPlay]);// Pause/play via props\nuseEffect(()=>{if(playing&&shouldPlay)play();else pause();},[playing]);// Autoplay via JS to work in Safari\nuseEffect(()=>{if(isSafari&&videoRef.current&&autoPlay){setTimeout(()=>{play();},50);}},[]);// Volume Control\nuseEffect(()=>{if(videoRef.current&&!muted)videoRef.current.volume=volume/100;},[volume]);const key=useMemo(()=>hashCode(JSON.stringify({srcType,srcUrl,srcFile,autoPlay,canvasPlay,isForcedCache})),[srcType,srcUrl,srcFile,autoPlay,canvasPlay,isForcedCache]);const borderRadius=isMixed?`${topLeft}px ${topRight}px ${bottomRight}px ${bottomLeft}px`:`${radius}px`;const src=useMemo(()=>(isForcedCache||isAutoCache)&&!isSafari?null:getUrl(),[isSafari,isAutoCache,isForcedCache]);return(/*#__PURE__*/ _jsx(\"video\",{autoPlay:autoPlay&&shouldPlay,ref:setVideoRef,onClick,onMouseEnter,onMouseLeave,onMouseDown,onMouseUp,poster:posterEnabled?poster:undefined,style:{width:\"100%\",height:\"100%\",borderRadius,display:\"block\",objectFit:objectFit,backgroundColor:backgroundColor,objectPosition:\"50% 50%\"},onSeeked:e=>{if(onSeeked)onSeeked(e);},onPause:e=>{if(onPause)onPause(e);},onPlay:e=>{if(onPlay)onPlay(e);},onEnded:e=>{if(onEnd)onEnd(e);if(loop&&shouldPlay&&videoRef.current)restartVideo();},onCanPlay:()=>{if(shouldPlay&&videoRef.current&&autoPlay)play();else pause();if(videoRef.current&&videoRef.current.currentTime<0.3)setProgress(startTime);},src:src,controls:isCanvas?false:controls,muted:isMuted,playsInline:playsinline},key));});Video.defaultProps={srcType:SrcType.Url,srcUrl:\"https://assets.mixkit.co/videos/preview/mixkit-ice-cream-glass-of-red-soda-5094-small.mp4\",srcFile:\"\",posterEnabled:true,poster:\"https://misc.framerstatic.com/components/video-poster.jpg\",controls:false,autoPlay:true,canvasPlay:false,fullLoop:false,muted:true,playsinline:true,restartOnEnter:false,preload:PreloadType.Auto,objectFit:ObjectFitType.Cover,backgroundColor:\"rgba(0,0,0,0)\",radius:0,volume:25,startTime:0};addPropertyControls(Video,{srcType:{type:ControlType.Enum,displaySegmentedControl:true,title:\"Source\",options:[SrcType.Url,SrcType.Video]},srcUrl:{type:ControlType.String,title:\" \",placeholder:\"../example.mp4\",hidden(props){return props.srcType===SrcType.Video;}},srcFile:{type:ControlType.File,title:\" \",allowedFileTypes:[\"mp4\"],hidden(props){return props.srcType===SrcType.Url;}},playing:{type:ControlType.Boolean,title:\"Playing\",enabledTitle:\"Yes\",disabledTitle:\"No\"},posterEnabled:{type:ControlType.Boolean,title:\"Poster\",enabledTitle:\"Yes\",disabledTitle:\"No\"},poster:{type:ControlType.Image,title:\" \",defaultValue:Video.defaultProps.poster,hidden:({posterEnabled})=>!posterEnabled},backgroundColor:{type:ControlType.Color,title:\"Background\"},radius:{title:\"Radius\",type:ControlType.FusedNumber,toggleKey:\"isMixed\",toggleTitles:[\"Radius\",\"Radius per corner\"],valueKeys:[\"topLeft\",\"topRight\",\"bottomRight\",\"bottomLeft\"],valueLabels:[\"TL\",\"TR\",\"BR\",\"BL\"],min:0},startTime:{title:\"Start Time\",type:ControlType.Number,min:0,max:100,step:0.1,unit:\"%\"},loopType:{type:ControlType.Enum,title:\"Loop\",optionTitles:[\"From Start Time\",\"From Beginning\",\"Don't Loop\"],options:[LoopType.StartTime,LoopType.Beginning,LoopType.NoLoop]},objectFit:{type:ControlType.Enum,title:\"Fit\",options:[ObjectFitType.Cover,ObjectFitType.Fill,ObjectFitType.Contain,ObjectFitType.ScaleDown,ObjectFitType.None,]},canvasPlay:{type:ControlType.Boolean,title:\"On Canvas\",enabledTitle:\"Play\",disabledTitle:\"Pause\",hidden(props){return props.autoPlay===false;}},restartOnEnter:{type:ControlType.Boolean,title:\"On ReEnter\",enabledTitle:\"Restart\",disabledTitle:\"Resume\"},controls:{type:ControlType.Boolean,title:\"Controls\",enabledTitle:\"Show\",disabledTitle:\"Hide\"},muted:{type:ControlType.Boolean,title:\"Muted\",enabledTitle:\"Yes\",disabledTitle:\"No\"},volume:{type:ControlType.Number,max:100,min:0,unit:\"%\",hidden:({muted})=>muted},// playsinline: { type: ControlType.Boolean, title: \"Inline\", enabledTitle: \"Yes\", disabledTitle: \"No\" },\npreload:{type:ControlType.Enum,title:\"Cache\",options:[PreloadType.Auto,PreloadType.None,PreloadType.ForceCache]},onEnd:{type:ControlType.EventHandler},onSeeked:{type:ControlType.EventHandler},onPause:{type:ControlType.EventHandler},onPlay:{type:ControlType.EventHandler},...defaultEvents});\nexport const __FramerMetadata__ = {\"exports\":{\"Video\":{\"type\":\"reactComponent\",\"name\":\"Video\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"200\",\"framerSupportedLayoutHeight\":\"any\",\"framerIntrinsicWidth\":\"200\",\"framerSupportedLayoutWidth\":\"fixed\"}},\"VideoProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Video.map"],"mappings":"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"}