{"version":3,"file":"Video.or5sIjfV.mjs","names":["useRef","useCallback","useRef","useMemo","useCallback","__esmMin","ne","ee","de","pe","c","init_jsx_runtime","init_npm_react_18_3_1","ce","useMotionValueEvent","MotionValue","init_framer_motion_DhsWWWsN","motionValue","animate","useIsInCurrentNavigationTarget","ControlType","RenderTarget","addPropertyControls","init_framer_CaDWdxiz","useIsOnCanvas","init_useConstant","useConstant","defaultEvents","useOnExit","useOnEnter","borderRadiusControl","useRadius","init_default_utils_js__0_45","useIsBrowserSafari","isMotionValue","init_isMotionValue","v","useAutoMotionValue","optionsRef","options","animation","didInitialMount","isOnCanvas","onChangeDeps","onChange","transformer","value","value1","inputValue","ref","newValue","init_useAutoMotionValue","init_useAutoMotionValue_js__0_3","getProps","rest","props","Video","newProps","VideoMemo","ObjectFitType","SrcType","isMountedAndReadyForProgressChanges","init_Video","\"Fill\"","\"Contain\"","\"Cover\"","\"None\"","\"ScaleDown\"","\"Video\"","\"Url\"","startTimeProp","isInCurrentNavigationTarget","videoRef","isSafari","requestingPlay","wasPausedOnLeave","wasEndedOnLeave","borderRadius","startTime","shouldPlay","canvasPlay","autoPlay","playing","isMuted","muted","setProgress","newProgress","rawProgress","isAlreadySet","play","pause","srcFile","srcUrl","videoProgress","progress","latest","loop","src","srcType","volume","onSeeked","onPause","onPlay","onEnd","posterEnabled","poster","playsinline","onClick"],"sources":["https:/framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/TbXI1XaZFNevVKcgIt7G/isMotionValue.js","https:/framerusercontent.com/modules/kNDwabfjDEb3vUxkQlZS/V4SPg9g59hF1vFH3ZTF0/useAutoMotionValue.js","https:/framer.com/m/framer/useAutoMotionValue.js@^0.3.0","https:/framerusercontent.com/modules/lRDHiNWNVWmE0lqtoVHP/0jtlswBvrookcx7EpjBD/Video.js"],"sourcesContent":["import{MotionValue}from\"framer\";// Basic MotionValue check\nexport const isMotionValue=v=>v instanceof MotionValue;\nexport const __FramerMetadata__ = {\"exports\":{\"isMotionValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./isMotionValue.map","import{useCallback,useEffect,useRef}from\"react\";import{motionValue,animate,RenderTarget}from\"framer\";import{isMotionValue}from\"https://framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/TbXI1XaZFNevVKcgIt7G/isMotionValue.js\";import{useConstant}from\"https://framerusercontent.com/modules/ExNgrA7EJTKUPpH6vIlN/eiOrSJ2Ab5M9jPCvVwUz/useConstant.js\";export function useAutoMotionValue(inputValue,options){// Put options on a local ref\n// Might wanna just memo instead but it works for now\nconst optionsRef=useRef(options);const animation=useRef();const didInitialMount=useRef(false);const isOnCanvas=RenderTarget.current()===RenderTarget.canvas;// in-progress - trying to figure out effect hooks\nconst onChangeDeps=(options===null||options===void 0?void 0:options.onChangeDeps)?options.onChangeDeps:[];// Memoize the onChange handler\nconst onChange=useCallback(options===null||options===void 0?void 0:options.onChange,[...onChangeDeps,]);// Optionally scale the value from props\nconst transformer=useCallback(value=>{var ref;return((ref=optionsRef.current)===null||ref===void 0?void 0:ref.transform)?optionsRef.current.transform(value):value;},[]);// Create new MotionValue from inputValue\nconst value1=useConstant(()=>isMotionValue(inputValue)?inputValue:motionValue(transformer(inputValue)));// Setting value from prop change\nuseEffect(()=>{if(!isMotionValue(inputValue)&&didInitialMount.current){var ref,ref1;const newValue=transformer(inputValue);(ref=animation.current)===null||ref===void 0?void 0:ref.stop();// Call change callback\nif(onChange)onChange(newValue,value1);// Trigger animation to new value\nif(((ref1=optionsRef.current)===null||ref1===void 0?void 0:ref1.animate)&&!isOnCanvas){var ref2;// @ts-ignore\nanimation.current=animate(value1,newValue,(ref2=optionsRef.current)===null||ref2===void 0?void 0:ref2.transition);}else{value1.set(newValue);}}didInitialMount.current=true;},[inputValue,...onChangeDeps]);return value1;}\nexport const __FramerMetadata__ = {\"exports\":{\"useAutoMotionValue\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./useAutoMotionValue.map","/*\n * useAutoMotionValue (framer/useAutoMotionValue@0.3.0)\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/kNDwabfjDEb3vUxkQlZS/V4SPg9g59hF1vFH3ZTF0/useAutoMotionValue.js\"\n","import{jsx as _jsx}from\"react/jsx-runtime\";import{useMotionValueEvent}from\"framer-motion\";import{useRef,useEffect,useMemo,useCallback,memo}from\"react\";import{ControlType,addPropertyControls,useIsInCurrentNavigationTarget}from\"framer\";import{useOnEnter,useOnExit,defaultEvents,useIsOnCanvas,useIsBrowserSafari,useRadius,borderRadiusControl}from\"https://framer.com/m/framer/default-utils.js@^0.45.0\";import{useAutoMotionValue}from\"https://framer.com/m/framer/useAutoMotionValue.js@^0.3.0\";var ObjectFitType;(function(ObjectFitType){ObjectFitType[\"Fill\"]=\"fill\";ObjectFitType[\"Contain\"]=\"contain\";ObjectFitType[\"Cover\"]=\"cover\";ObjectFitType[\"None\"]=\"none\";ObjectFitType[\"ScaleDown\"]=\"scale-down\";})(ObjectFitType||(ObjectFitType={}));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 112\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */ export function Video(props){const newProps=getProps(props);return /*#__PURE__*/ _jsx(VideoMemo,{...newProps});}/**\n * For the useEffect hook to change progress of the video on state change.\n * It was causing the video to restart on hydration\n */ let isMountedAndReadyForProgressChanges=false;const VideoMemo=/*#__PURE__*/ memo(function VideoInner(props){const{srcType,srcFile,srcUrl,playing,canvasPlay,muted,playsinline,controls,progress,objectFit,backgroundColor,radius,topLeft,topRight,bottomRight,bottomLeft,isMixed,onSeeked,onPause,onPlay,onEnd,onClick,onMouseEnter,onMouseLeave,onMouseDown,onMouseUp,poster,restartOnEnter,posterEnabled,startTime:startTimeProp,volume,loop}=props;const isInCurrentNavigationTarget=useIsInCurrentNavigationTarget();const videoRef=useRef();const isSafari=useIsBrowserSafari();const requestingPlay=useRef(false);const wasPausedOnLeave=useRef(null);const wasEndedOnLeave=useRef(null);const isOnCanvas=useIsOnCanvas();const borderRadius=useRadius(props);// Video elements behave oddly at 100% duration\nconst startTime=useMemo(()=>startTimeProp===100?99.9:startTimeProp,[startTimeProp]);const shouldPlay=!isOnCanvas||canvasPlay;const autoPlay=useMemo(()=>playing,[]);const isMuted=useMemo(()=>isOnCanvas?true:muted,[isOnCanvas,muted]);const setProgress=useCallback(rawProgress=>{if(!videoRef.current)return;const newProgress=(rawProgress===1?.999:rawProgress)*videoRef.current.duration;const isAlreadySet=Math.abs(videoRef.current.currentTime-newProgress)<.1;if(videoRef.current.duration>0&&!isAlreadySet){videoRef.current.currentTime=newProgress;}},[]);const play=useCallback(()=>{const isPlaying=videoRef.current.currentTime>0&&videoRef.current.onplaying&&!videoRef.current.paused&&!videoRef.current.ended&&videoRef.current.readyState>videoRef.current.HAVE_CURRENT_DATA;if(!isPlaying&&videoRef.current&&!requestingPlay.current&&isInCurrentNavigationTarget){requestingPlay.current=true;videoRef.current.play().catch(e=>{}) // It's likely fine, swallow error\n.finally(()=>requestingPlay.current=false);}},[]);const pause=useCallback(()=>{if(!videoRef.current||requestingPlay.current)return;videoRef.current.pause();},[]);// Pause/play via props\nuseEffect(()=>{if(playing&&shouldPlay)play();else pause();},[playing,canvasPlay]);// Change progress via prop\nuseEffect(()=>{if(isMountedAndReadyForProgressChanges)setProgress(startTime*.01);else isMountedAndReadyForProgressChanges=true;},[startTime,srcFile,srcUrl]);const videoProgress=useAutoMotionValue(progress,{transform:value=>value*.01,onChange:newValue=>{setProgress(newValue);}});// Allow scrubbing with MotionValue\nuseMotionValueEvent(videoProgress,\"change\",latest=>{if(!isOnCanvas)setProgress(latest);});// (Prototyping) Checking if we need to play on navigation enter\nuseOnEnter(()=>{if(wasPausedOnLeave.current===null)return;if(videoRef.current){// if (restartOnEnter) setProgress(0)\nif(!wasEndedOnLeave&&loop||!wasPausedOnLeave.current)play();}});// (Prototyping) Pausing & saving playing state on navigation exit\nuseOnExit(()=>{if(videoRef.current){wasEndedOnLeave.current=videoRef.current.ended;wasPausedOnLeave.current=videoRef.current.paused;pause();}});const src=useMemo(()=>{let fragment=\"\";// if (\n//     startTime > 0 &&\n//     videoRef.current &&\n//     !isNaN(videoRef.current.duration) &&\n//     !isOnCanvas\n// ) {\n//     console.log(startTime, videoRef.current.duration)\n//     fragment = `#t=${startTime * videoRef.current.duration}`\n// }\nif(srcType===SrcType.Url)return srcUrl+fragment;if(srcType===SrcType.Video)return srcFile+fragment;},[srcType,srcFile,srcUrl,startTime]);// 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]);// When video is ready, set start-time, then autoplay if needed\nconst handleReady=()=>{if(videoRef.current&&videoRef.current.currentTime<.3)setProgress(startTime*.01);if(shouldPlay&&videoRef.current&&autoPlay)play();};return /*#__PURE__*/ _jsx(\"video\",{onClick,onMouseEnter,onMouseLeave,onMouseDown,onMouseUp,src:src,loop:loop,ref:videoRef,onSeeked:e=>{return onSeeked===null||onSeeked===void 0?void 0:onSeeked(e);},onPause:e=>{return onPause===null||onPause===void 0?void 0:onPause(e);},onPlay:e=>{return onPlay===null||onPlay===void 0?void 0:onPlay(e);},onEnded:e=>{return onEnd===null||onEnd===void 0?void 0:onEnd(e);},autoPlay:autoPlay&&shouldPlay,poster:posterEnabled?poster:undefined,onLoadedData:handleReady,controls:controls,muted:isMuted,playsInline:playsinline,style:{cursor:!!onClick?\"pointer\":\"auto\",width:\"100%\",height:\"100%\",borderRadius,display:\"block\",objectFit:objectFit,backgroundColor:backgroundColor,objectPosition:\"50% 50%\"}});});Video.displayName=\"Video\";Video.defaultProps={srcType:SrcType.Url,srcUrl:\"https://assets.mixkit.co/videos/preview/mixkit-ice-cream-glass-of-red-soda-5094-small.mp4\",srcFile:\"\",posterEnabled:false,controls:false,autoPlay:true,canvasPlay:false,loop:true,muted:true,playsinline:true,restartOnEnter:false,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;},description:\"Hosted video file URL. For Youtube, use the Youtube component.\"},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:\" \",hidden:({posterEnabled})=>!posterEnabled},backgroundColor:{type:ControlType.Color,title:\"Background\"},...borderRadiusControl,startTime:{title:\"Start Time\",type:ControlType.Number,min:0,max:100,step:.1,unit:\"%\"},loop:{type:ControlType.Boolean,title:\"Loop\",enabledTitle:\"Yes\",disabledTitle:\"No\"},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: {\n//     type: ControlType.Boolean,\n//     title: \"On ReEnter\",\n//     enabledTitle: \"Restart\",\n//     disabledTitle: \"Resume\",\n// },\ncontrols:{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},onEnd:{type:ControlType.EventHandler},onSeeked:{type:ControlType.EventHandler},onPause:{type:ControlType.EventHandler},onPlay:{type:ControlType.EventHandler},...defaultEvents});\nexport const __FramerMetadata__ = {\"exports\":{\"VideoProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Video\":{\"type\":\"reactComponent\",\"name\":\"Video\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"200\",\"framerIntrinsicHeight\":\"112\",\"framerSupportedLayoutWidth\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Video.map"],"mappings":"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"}