{"version":3,"file":"YouTube.CfMCf278.mjs","names":["useRef","useMemo","useCallback","useReducer","useState","__esmMin","_e","de","ne","window","init_ssg_sandbox_shims","ee","pe","ce","ye","c","p","init_npm_react_18_3_1","useMotionValueEvent","init_framer_motion_DbYmcygs","init_framer_BbPeGsXv","useIsInCurrentNavigationTarget","addPropertyControls","ControlType","emptyStateStyle","useIsOnCanvas","useIsBrowserSafari","borderRadiusControl","useRadius","useOnEnter","defaultEvents","useOnExit","init_default_utils_js__0_45","useAutoMotionValue","init_useAutoMotionValue_js__0_3","getProps","rest","props","Video","newProps","VideoMemo","ObjectFitType","SrcType","isMountedAndReadyForProgressChanges","init_Video","init_jsx_runtime","\"Fill\"","\"Contain\"","\"Cover\"","\"None\"","\"ScaleDown\"","\"Video\"","\"Url\"","startTimeProp","isInCurrentNavigationTarget","videoRef","isSafari","requestingPlay","wasPausedOnLeave","wasEndedOnLeave","isOnCanvas","borderRadius","startTime","shouldPlay","canvasPlay","autoPlay","playing","isMuted","muted","setProgress","newProgress","rawProgress","isAlreadySet","play","pause","srcFile","srcUrl","videoProgress","progress","value","newValue","latest","loop","src","srcType","volume","onSeeked","onPause","onPlay","onEnd","posterEnabled","poster","playsinline","Youtube","onCanvas","isAutoplay","PlayOptions","showThumbnail","thumbnail","ThumbnailOptions","isPreloading","preloadVideo","showVideo","startVideo","isHovered","setHovered","hasBorderRadius","url","Instructions","parsedURL","parseVideoURL","ErrorMessage","videoId","embedURL","thumbnailURL","getThumbnailURL","getWebPSupported","ThumbnailFormat","searchParams","shouldMute","isRed","wrapperStyle","videoStyle","PlayButton","urlString","getEmbedURL","pathSegments","videoId2","pre","ext","res","element","centerTextStyle","containerStyles","message","buttonStyle","init_YouTube","\"Normal\"","\"Auto\"","\"Loop\"","\"High\"","\"Medium\"","\"Low\"","\"Off\"","\"WebP\"","\"JPG\""],"sources":["https:/framerusercontent.com/modules/lRDHiNWNVWmE0lqtoVHP/jcU3ZxjtR7k7aXRM1azZ/Video.js","https:/framerusercontent.com/modules/NEd4VmDdsxM3StIUbddO/fJ8vwGe6kxfz7kj9H7Sk/YouTube.js"],"sourcesContent":["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=startTimeProp===100?99.9: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;},[startTimeProp,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(()=>{if(srcType===SrcType.Url)return srcUrl;if(srcType===SrcType.Video)return srcFile;},[srcType,srcFile,srcUrl]);// 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:{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\":{\"Video\":{\"type\":\"reactComponent\",\"name\":\"Video\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"200\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"112\",\"framerSupportedLayoutWidth\":\"fixed\"}},\"VideoProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Video.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useReducer,useState}from\"react\";import{ControlType,addPropertyControls}from\"framer\";import{useIsOnCanvas,emptyStateStyle,containerStyles,defaultEvents,useRadius,borderRadiusControl}from\"https://framer.com/m/framer/default-utils.js@^0.45.0\";var PlayOptions;(function(PlayOptions){PlayOptions[\"Normal\"]=\"Off\";PlayOptions[\"Auto\"]=\"On\";PlayOptions[\"Loop\"]=\"Loop\";})(PlayOptions||(PlayOptions={}));var ThumbnailOptions;(function(ThumbnailOptions){ThumbnailOptions[\"High\"]=\"High Quality\";ThumbnailOptions[\"Medium\"]=\"Medium Quality\";ThumbnailOptions[\"Low\"]=\"Low Quality\";ThumbnailOptions[\"Off\"]=\"Off\";})(ThumbnailOptions||(ThumbnailOptions={}));var ThumbnailFormat;(function(ThumbnailFormat){ThumbnailFormat[\"WebP\"]=\"webp\";ThumbnailFormat[\"JPG\"]=\"jpg\";})(ThumbnailFormat||(ThumbnailFormat={}));/**\n * @framerIntrinsicWidth 560\n * @framerIntrinsicHeight 315\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n *\n * @framerComponentPresetProps isRed, borderRadius\n */ export function Youtube({url,play,shouldMute,thumbnail,isRed,onClick,onMouseEnter,onMouseLeave,onMouseDown,onMouseUp,...props}){const onCanvas=useIsOnCanvas();const isAutoplay=play!==PlayOptions.Normal;const showThumbnail=onCanvas||thumbnail!==ThumbnailOptions.Off&&!isAutoplay;const[isPreloading,preloadVideo]=useReducer(()=>true,false);const[showVideo,startVideo]=useReducer(()=>true,!showThumbnail);const[isHovered,setHovered]=useState(false);const borderRadius=useRadius(props);const hasBorderRadius=borderRadius!==\"0px 0px 0px 0px\"&&borderRadius!==\"0px\";if(url===\"\"){return /*#__PURE__*/ _jsx(Instructions,{});}const parsedURL=parseVideoURL(url);if(parsedURL===undefined){return /*#__PURE__*/ _jsx(ErrorMessage,{message:\"Invalid Youtube URL.\"});}const[videoId,embedURL]=parsedURL;// https://stackoverflow.com/questions/2068344/how-do-i-get-a-youtube-video-thumbnail-from-the-youtube-api\nconst thumbnailURL=getThumbnailURL(videoId,thumbnail,getWebPSupported()?ThumbnailFormat.WebP:ThumbnailFormat.JPG);// https://developers.google.com/youtube/player_parameters\nconst searchParams=embedURL.searchParams;searchParams.set(\"iv_load_policy\",\"3\");searchParams.set(\"rel\",\"0\");searchParams.set(\"modestbranding\",\"1\");searchParams.set(\"playsinline\",\"1\");if(isAutoplay||showThumbnail){searchParams.set(\"autoplay\",\"1\");}if(isAutoplay&&shouldMute){searchParams.set(\"mute\",\"1\");}if(play===PlayOptions.Loop){searchParams.set(\"loop\",\"1\");searchParams.set(\"playlist\",videoId);}if(!isRed){searchParams.set(\"color\",\"white\");}return /*#__PURE__*/ _jsxs(\"article\",{onPointerEnter:()=>setHovered(true),onPointerLeave:()=>setHovered(false),onPointerOver:preloadVideo,onClick:startVideo,style:{...wrapperStyle,borderRadius,transform:hasBorderRadius&&showVideo?\"translateZ(0.000001px)\":\"unset\",cursor:\"pointer\",overflow:\"hidden\"},children:[isPreloading&&/*#__PURE__*/ _jsx(\"link\",{rel:\"preconnect\",href:\"https://www.youtube.com\"}),isPreloading&&/*#__PURE__*/ _jsx(\"link\",{rel:\"preconnect\",href:\"https://www.google.com\"}),/*#__PURE__*/ _jsx(\"div\",{style:{...videoStyle,background:showThumbnail?`center / cover url(${thumbnailURL}) no-repeat`:undefined}}),showVideo?/*#__PURE__*/ _jsx(\"iframe\",{style:videoStyle,src:embedURL.href,frameBorder:\"0\",allow:\"presentation; fullscreen; accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\",onClick:onClick,onMouseEnter:onMouseEnter,onMouseLeave:onMouseLeave,onMouseDown:onMouseDown,onMouseUp:onMouseUp}):/*#__PURE__*/ _jsx(PlayButton,{onClick:startVideo,isHovered:isHovered,isRed:isRed})]});}Youtube.displayName=\"YouTube\";addPropertyControls(Youtube,{url:{type:ControlType.String,title:\"Video\"},play:{type:ControlType.Enum,title:\"Autoplay\",options:Object.values(PlayOptions)},shouldMute:{title:\"Mute\",type:ControlType.Boolean,enabledTitle:\"Yes\",disabledTitle:\"No\",hidden(props){return props.play===PlayOptions.Normal;}},thumbnail:{title:\"Thumbnail\",description:\"Showing a thumbnail improves performance.\",type:ControlType.Enum,options:Object.values(ThumbnailOptions),hidden(props){return props.play!==PlayOptions.Normal;}},isRed:{title:\"Color\",type:ControlType.Boolean,enabledTitle:\"Red\",disabledTitle:\"White\"},...borderRadiusControl,...defaultEvents});const defaultProps={url:\"https://youtu.be/smPos0mJvh8\",play:PlayOptions.Normal,shouldMute:true,thumbnail:ThumbnailOptions.Medium,isRed:true};Youtube.defaultProps=defaultProps;function parseVideoURL(urlString){let url;try{url=new URL(urlString);}catch{const embedURL=getEmbedURL(urlString);return[urlString,embedURL];}if(url.hostname===\"youtube.com\"||url.hostname===\"www.youtube.com\"||url.hostname===\"youtube-nocookie.com\"||url.hostname===\"www.youtube-nocookie.com\"){const pathSegments=url.pathname.slice(1).split(\"/\");// https://www.youtube.com/watch?v=Fop2oskTug8\nif(pathSegments[0]===\"watch\"){const videoId=url.searchParams.get(\"v\");const embedURL1=getEmbedURL(videoId);return[videoId,embedURL1];}// https://www.youtube.com/embed/Fop2oskTug8\nif(pathSegments[0]===\"embed\"){const videoId1=pathSegments[1];return[videoId1,url];}}// https://youtu.be/Fop2oskTug8\nif(url.hostname===\"youtu.be\"){const videoId2=url.pathname.slice(1);const embedURL2=getEmbedURL(videoId2);return[videoId2,embedURL2];}}function getEmbedURL(videoId){return new URL(`https://www.youtube.com/embed/${videoId}`);}function getThumbnailURL(videoId,res,format=ThumbnailFormat.JPG){// https://gist.github.com/a1ip/be4514c1fd392a8c13b05e082c4da363\nconst pre=ThumbnailFormat.WebP?\"https://i.ytimg.com/vi_webp/\":\"https://i.ytimg.com/vi/\";const ext=ThumbnailFormat.WebP?\"webp\":\"jpg\";switch(res){case ThumbnailOptions.Low:return`${pre}${videoId}/hqdefault.${ext}`;case ThumbnailOptions.Medium:return`${pre}${videoId}/sddefault.${ext}`;case ThumbnailOptions.High:return`${pre}${videoId}/maxresdefault.${ext}`;default:return`${pre}${videoId}/0.${ext}`;}}let _getWebPSupported;// https://stackoverflow.com/a/27232658\nfunction getWebPSupported(){// We're going to default to webp because it's pretty widely supported by now\nif(!window){return true;}if(_getWebPSupported!==undefined){return _getWebPSupported;}const element=document.createElement(\"canvas\");if(!!(element.getContext&&element.getContext(\"2d\"))){// was able or not to get WebP representation\nreturn element.toDataURL(\"image/webp\").indexOf(\"data:image/webp\")==0;}else{// very old browser like IE 8, canvas not supported\nreturn false;}}// Helper components\nfunction Instructions(){return /*#__PURE__*/ _jsx(\"div\",{style:{...emptyStateStyle,overflow:\"hidden\"},children:/*#__PURE__*/ _jsx(\"div\",{style:centerTextStyle,children:\"To embed a Youtube video, add the URL to the properties\\xa0panel.\"})});}function ErrorMessage({message}){return /*#__PURE__*/ _jsx(\"div\",{className:\"framerInternalUI-errorPlaceholder\",style:{...containerStyles,overflow:\"hidden\"},children:/*#__PURE__*/ _jsxs(\"div\",{style:centerTextStyle,children:[\"Error: \",message]})});}function PlayButton({onClick,isHovered,isRed}){return /*#__PURE__*/ _jsx(\"button\",{onClick:onClick,\"aria-label\":\"Play\",style:buttonStyle,children:/*#__PURE__*/ _jsxs(\"svg\",{height:\"100%\",version:\"1.1\",viewBox:\"0 0 68 48\",width:\"100%\",children:[/*#__PURE__*/ _jsx(\"path\",{d:\"M66.52,7.74c-0.78-2.93-2.49-5.41-5.42-6.19C55.79,.13,34,0,34,0S12.21,.13,6.9,1.55 C3.97,2.33,2.27,4.81,1.48,7.74C0.06,13.05,0,24,0,24s0.06,10.95,1.48,16.26c0.78,2.93,2.49,5.41,5.42,6.19 C12.21,47.87,34,48,34,48s21.79-0.13,27.1-1.55c2.93-0.78,4.64-3.26,5.42-6.19C67.94,34.95,68,24,68,24S67.94,13.05,66.52,7.74z\",fill:isHovered?isRed?\"#f00\":\"#000\":\"#212121\",fillOpacity:isHovered?isRed?1:.8:.8,style:{transition:\"fill .1s cubic-bezier(0.4, 0, 1, 1), fill-opacity .1s cubic-bezier(0.4, 0, 1, 1)\"}}),/*#__PURE__*/ _jsx(\"path\",{d:\"M 45,24 27,14 27,34\",fill:\"#fff\"})]})});}const buttonStyle={position:\"absolute\",top:\"50%\",left:\"50%\",transform:\"translate(-50%, -50%)\",width:68,height:48,padding:0,border:\"none\",background:\"transparent\",cursor:\"pointer\"};const wrapperStyle={position:\"relative\",width:\"100%\",height:\"100%\"};const centerTextStyle={textAlign:\"center\",minWidth:140};const videoStyle={position:\"absolute\",top:0,left:0,height:\"100%\",width:\"100%\"};\nexport const __FramerMetadata__ = {\"exports\":{\"Youtube\":{\"type\":\"reactComponent\",\"name\":\"Youtube\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"fixed\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"315\",\"framerComponentPresetProps\":\"isRed, borderRadius\",\"framerIntrinsicWidth\":\"560\",\"framerSupportedLayoutHeight\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./YouTube.map"],"mappings":"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"}