{"version":3,"file":"CoreVideo.Q5eBdRhB.mjs","names":["React.useState","React.useRef","React.useCallback","React.useMemo","_Fragment","p"],"sources":["https:/framerusercontent.com/modules/bo7VnwnrIgJpMWy7apY9/yiwVomA3RQ0rEgjlqvoE/CoreVideo.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{motion,useScroll,useTransform,addPropertyControls,ControlType,RenderTarget}from\"framer\";const FILL={position:\"absolute\",inset:0};/* ------------------------------------------------------------------ *//* Utils                                                               *//* ------------------------------------------------------------------ */const between=(n,lo,hi)=>Math.max(lo,Math.min(hi,n));const HINT_BY_KIND={youtube:\"Paste a YouTube link or video ID in the side panel\",vimeo:\"Paste a Vimeo link or video ID in the side panel\",cdn:\"Paste a direct video URL in the side panel\",upload:\"Upload a video file in the side panel\"};function formatClock(seconds){if(!Number.isFinite(seconds)||seconds<0)return\"0:00\";const m=Math.floor(seconds/60);const s=Math.floor(seconds%60);return`${m}:${String(s).padStart(2,\"0\")}`;}/** Attach one handler to several events and get a single detach function. */function listen(target,events,handler,options){for(const e of events)target.addEventListener(e,handler,options);return()=>{for(const e of events)target.removeEventListener(e,handler);};}const YT_ID_RE=/^[a-zA-Z0-9_-]{11}$/;const YT_FALLBACK_RE=/(?:v=|\\/embed\\/|youtu\\.be\\/|\\/shorts\\/|\\/live\\/)([a-zA-Z0-9_-]{11})/;function extractYouTubeId(input){if(!input)return null;const raw=input.trim();if(YT_ID_RE.test(raw))return raw;try{const u=new URL(raw);if(u.hostname.includes(\"youtu.be\")){const id=u.pathname.slice(1).split(\"?\")[0];if(YT_ID_RE.test(id))return id;}const v=u.searchParams.get(\"v\");if(v&&YT_ID_RE.test(v))return v;const segments=u.pathname.split(\"/\").filter(Boolean);for(const key of[\"embed\",\"shorts\",\"live\"]){const i=segments.indexOf(key);if(i>=0){const id=segments[i+1]?.split(\"?\")[0];if(id&&YT_ID_RE.test(id))return id;}}}catch{}return raw.match(YT_FALLBACK_RE)?.[1]??null;}function extractVimeoId(input){if(!input)return null;const raw=input.trim();if(/^\\d+$/.test(raw))return raw;try{const u=new URL(raw);const segments=u.pathname.split(\"/\").filter(Boolean);for(let i=segments.length-1;i>=0;i--){if(/^\\d+$/.test(segments[i]))return segments[i];}}catch{}return raw.match(/vimeo\\.com\\/(?:video\\/)?(\\d+)/)?.[1]??null;}/* ------------------------------------------------------------------ *//* Shared caches                                                       *//* ------------------------------------------------------------------ */const POSTER_CACHE_LIMIT=12;const POSTER_MAX_EDGE=640;const posterCache=new Map;const vimeoThumbCache=new Map;const preconnectedOrigins=new Set;function rememberPoster(key,url){if(posterCache.size>=POSTER_CACHE_LIMIT){const oldest=posterCache.keys().next().value;if(oldest){const stale=posterCache.get(oldest);if(stale?.startsWith(\"blob:\"))URL.revokeObjectURL(stale);posterCache.delete(oldest);}}posterCache.set(key,url);}function preconnectOnce(origin){if(typeof document===\"undefined\")return;if(preconnectedOrigins.has(origin))return;preconnectedOrigins.add(origin);const link=document.createElement(\"link\");link.rel=\"preconnect\";link.href=origin;link.crossOrigin=\"anonymous\";document.head.appendChild(link);}/* ------------------------------------------------------------------ *//* Parallax                                                            *//* ------------------------------------------------------------------ *//**\n * Progress runs from 0 when the top edge meets the bottom of the screen\n * to 1 when the bottom edge meets the top of the screen. Framer's own\n * scroll engine owns the measuring, so the offset is right on the first\n * paint and stays right while the page settles.\n */const SCROLL_OFFSET=[\"start end\",\"end start\"];function useReducedMotion(){const[reduced,setReduced]=React.useState(false);React.useEffect(()=>{if(typeof window===\"undefined\"||!window.matchMedia)return;const query=window.matchMedia(\"(prefers-reduced-motion: reduce)\");setReduced(query.matches);const onChange=()=>setReduced(query.matches);query.addEventListener?.(\"change\",onChange);return()=>query.removeEventListener?.(\"change\",onChange);},[]);return reduced;}/* ------------------------------------------------------------------ *//* Icons                                                               *//* ------------------------------------------------------------------ */const PlayGlyph=/*#__PURE__*/React.memo(()=>/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",width:\"100%\",height:\"100%\",fill:\"currentColor\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M8.5 6.5v11c0 .83.94 1.3 1.6.8l8-5.5c.57-.39.57-1.21 0-1.6l-8-5.5c-.66-.5-1.6-.03-1.6.8Z\"})}));const PauseGlyph=/*#__PURE__*/React.memo(()=>/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",width:\"100%\",height:\"100%\",fill:\"currentColor\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M7 5h3v14H7zm7 0h3v14h-3z\"})}));const SoundOnGlyph=/*#__PURE__*/React.memo(()=>/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",width:\"100%\",height:\"100%\",fill:\"currentColor\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M3 9v6h4l5 5V4L7 9H3zm13.5 3A4.5 4.5 0 0 0 14 7.97v8.05c1.48-.73 2.5-2.25 2.5-4.02z\"})}));const SoundOffGlyph=/*#__PURE__*/React.memo(()=>/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",width:\"100%\",height:\"100%\",fill:\"currentColor\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M16.5 12A4.5 4.5 0 0 0 14 7.97v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51A8.796 8.796 0 0 0 21 12c0-4.28-3-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3 3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06A8.99 8.99 0 0 0 17.73 18L19 19.27 20.27 18 5.27 3 4.27 3zM12 4 9.91 6.09 12 8.18V4z\"})}));const RepeatGlyph=/*#__PURE__*/React.memo(({active})=>/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",width:\"100%\",height:\"100%\",fill:\"currentColor\",opacity:active?1:.45,children:/*#__PURE__*/_jsx(\"path\",{d:\"M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4z\"})}));const ExpandGlyph=/*#__PURE__*/React.memo(()=>/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",width:\"100%\",height:\"100%\",fill:\"currentColor\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"})}));const BAR_BUTTON_BASE={background:\"none\",border:\"none\",padding:4,cursor:\"pointer\",color:\"#fff\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",lineHeight:1,flexShrink:0};const BarButton=/*#__PURE__*/React.memo(function BarButton({onTap,label,extraStyle,children}){const handle=React.useCallback(e=>{e.stopPropagation();onTap();},[onTap]);return /*#__PURE__*/_jsx(\"button\",{type:\"button\",title:label,\"aria-label\":label,onClick:handle,style:extraStyle?{...BAR_BUTTON_BASE,...extraStyle}:BAR_BUTTON_BASE,children:children});});/* Sits on top of the media for the whole playback, so text placed over\n   a background video keeps its contrast. Clicks pass straight through. */const OverlayLayer=/*#__PURE__*/React.memo(({color})=>/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,style:{...FILL,background:color,pointerEvents:\"none\"}}));/**\n * The fill is a separate layer under the icon. Any CSS color works as is,\n * including Framer color styles (var tokens), nothing is parsed in JS.\n */const PlayLauncher=/*#__PURE__*/React.memo(function PlayLauncher({config,isHovered}){const{style,customIcon,diameter,iconSize,radius,bgColor,bgBlur,borderWidth,borderColor,glyphColor,hoverScale}=config;const useDefaultPlay=style===\"default\"||!customIcon;const blur=bgBlur>0?`blur(${bgBlur}px)`:undefined;const shell=React.useMemo(()=>({position:\"relative\",width:diameter,height:diameter,borderRadius:radius,overflow:\"hidden\",border:borderWidth>0?`${borderWidth}px solid ${borderColor}`:\"none\",display:\"grid\",placeItems:\"center\",transition:\"transform 160ms ease\",color:glyphColor,backdropFilter:blur,WebkitBackdropFilter:blur}),[diameter,radius,borderWidth,borderColor,glyphColor,blur]);const inner=React.useMemo(()=>({position:\"relative\",width:Math.round(diameter*iconSize),height:Math.round(diameter*iconSize),display:\"flex\",alignItems:\"center\",justifyContent:\"center\",transform:useDefaultPlay?\"translateX(-1%)\":\"none\"}),[diameter,iconSize,useDefaultPlay]);return /*#__PURE__*/_jsxs(\"div\",{style:{...shell,transform:isHovered?`scale(${hoverScale})`:\"scale(1)\",willChange:isHovered?\"transform\":\"auto\"},children:[/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,style:{...FILL,background:bgColor}}),/*#__PURE__*/_jsx(\"div\",{style:inner,children:!useDefaultPlay?/*#__PURE__*/_jsx(\"img\",{src:customIcon,alt:\"\",draggable:false,decoding:\"async\",style:{width:\"100%\",height:\"100%\",objectFit:\"contain\"}}):/*#__PURE__*/_jsx(PlayGlyph,{})})]});});const SPEED_PRESETS=[.5,.75,1,1.25,1.5,2];/**\n * Time, progress bar and the seek input are written straight to the DOM.\n * React state here only holds things that change on user intent,\n * so playback itself causes zero re-renders.\n */function PlaybackControls({videoRef,rootRef,visible,onUserAction}){const[isPlaying,setIsPlaying]=React.useState(false);const[isSilent,setIsSilent]=React.useState(false);const[isLooping,setIsLooping]=React.useState(false);const[rate,setRate]=React.useState(1);const[rateMenuOpen,setRateMenuOpen]=React.useState(false);const[isVolumeHovered,setIsVolumeHovered]=React.useState(false);const fillRef=React.useRef(null);const clockRef=React.useRef(null);const seekRef=React.useRef(null);const volumeRef=React.useRef(null);const scrubbing=React.useRef(false);React.useEffect(()=>{const v=videoRef.current;if(!v)return;const paint=()=>{const d=Number.isFinite(v.duration)?v.duration:0;const t=v.currentTime;if(fillRef.current){fillRef.current.style.transform=`scaleX(${d>0?between(t/d,0,1):0})`;}if(clockRef.current){clockRef.current.textContent=`${formatClock(t)} / ${formatClock(d)}`;}if(seekRef.current&&!scrubbing.current){seekRef.current.max=String(d||100);seekRef.current.value=String(t);}};const syncFlags=()=>{setIsPlaying(!v.paused);setIsSilent(v.muted||v.volume===0);setIsLooping(v.loop);setRate(v.playbackRate);if(volumeRef.current){volumeRef.current.value=String(v.muted?0:v.volume);}};paint();syncFlags();const onPlay=()=>setIsPlaying(true);const onPause=()=>setIsPlaying(false);const onVolume=()=>{setIsSilent(v.muted||v.volume===0);if(volumeRef.current&&document.activeElement!==volumeRef.current){volumeRef.current.value=String(v.muted?0:v.volume);}};const onRate=()=>setRate(v.playbackRate);const detach=[listen(v,[\"timeupdate\",\"loadedmetadata\",\"durationchange\",\"seeked\"],paint),listen(v,[\"play\"],onPlay),listen(v,[\"pause\"],onPause),listen(v,[\"volumechange\"],onVolume),listen(v,[\"ratechange\"],onRate)];return()=>detach.forEach(d=>d());},[videoRef]);React.useEffect(()=>{if(!visible)setRateMenuOpen(false);},[visible]);const togglePlayback=React.useCallback(()=>{const v=videoRef.current;if(!v)return;onUserAction();if(v.paused)v.play().catch(()=>{});else v.pause();},[videoRef,onUserAction]);const toggleSound=React.useCallback(()=>{const v=videoRef.current;if(!v)return;onUserAction();if(v.muted||v.volume===0){v.muted=false;v.removeAttribute(\"muted\");if(v.volume===0)v.volume=1;}else{v.muted=true;}},[videoRef,onUserAction]);const toggleRepeat=React.useCallback(()=>{const v=videoRef.current;if(!v)return;v.loop=!v.loop;setIsLooping(v.loop);},[videoRef]);const onScrub=React.useCallback(e=>{const v=videoRef.current;if(!v)return;const t=Number(e.target.value);v.currentTime=t;const d=Number.isFinite(v.duration)?v.duration:0;if(fillRef.current){fillRef.current.style.transform=`scaleX(${d>0?between(t/d,0,1):0})`;}if(clockRef.current){clockRef.current.textContent=`${formatClock(t)} / ${formatClock(d)}`;}},[videoRef]);const onVolumeInput=React.useCallback(e=>{const v=videoRef.current;if(!v)return;onUserAction();const val=Number(e.target.value);v.volume=val;v.muted=val===0;},[videoRef,onUserAction]);const pickRate=React.useCallback(s=>{const v=videoRef.current;if(v)v.playbackRate=s;setRate(s);setRateMenuOpen(false);},[videoRef]);/* iPhone Safari has no element fullscreen. It only accepts\n       webkitEnterFullscreen on the video element itself. */const toggleFullscreen=React.useCallback(()=>{const el=rootRef.current;const v=videoRef.current;if(document.fullscreenElement){document.exitFullscreen?.();return;}if(el?.requestFullscreen){el.requestFullscreen().catch(()=>v?.webkitEnterFullscreen?.());}else{v?.webkitEnterFullscreen?.();}},[rootRef,videoRef]);return /*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",left:0,right:0,bottom:0,background:\"linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.75) 100%)\",padding:\"26px 14px 12px\",display:\"flex\",flexDirection:\"column\",gap:8,opacity:visible?1:0,transform:visible?\"translateY(0)\":\"translateY(6px)\",transition:\"opacity 180ms ease, transform 180ms ease\",pointerEvents:visible?\"all\":\"none\",userSelect:\"none\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",height:3,cursor:\"pointer\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,background:\"rgba(255,255,255,0.25)\"}}),/*#__PURE__*/_jsx(\"div\",{ref:fillRef,style:{position:\"absolute\",inset:0,background:\"#fff\",transform:\"scaleX(0)\",transformOrigin:\"left center\"}}),/*#__PURE__*/_jsx(\"input\",{ref:seekRef,type:\"range\",\"aria-label\":\"Seek\",min:0,max:100,step:.05,defaultValue:0,onPointerDown:()=>{scrubbing.current=true;},onPointerUp:()=>{scrubbing.current=false;},onPointerCancel:()=>{scrubbing.current=false;},onChange:onScrub,style:{position:\"absolute\",inset:\"-10px 0\",width:\"100%\",opacity:0,cursor:\"pointer\",margin:0}})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:10,color:\"#fff\"},children:[/*#__PURE__*/_jsx(BarButton,{onTap:togglePlayback,label:isPlaying?\"Pause\":\"Play\",children:/*#__PURE__*/_jsx(\"div\",{style:{width:16,height:16},children:isPlaying?/*#__PURE__*/_jsx(PauseGlyph,{}):/*#__PURE__*/_jsx(PlayGlyph,{})})}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\"},onMouseEnter:()=>setIsVolumeHovered(true),onMouseLeave:()=>setIsVolumeHovered(false),children:[/*#__PURE__*/_jsx(BarButton,{onTap:toggleSound,label:isSilent?\"Unmute\":\"Mute\",children:/*#__PURE__*/_jsx(\"div\",{style:{width:18,height:18},children:isSilent?/*#__PURE__*/_jsx(SoundOffGlyph,{}):/*#__PURE__*/_jsx(SoundOnGlyph,{})})}),/*#__PURE__*/_jsx(\"div\",{style:{width:isVolumeHovered?52:0,opacity:isVolumeHovered?1:0,transition:\"width 150ms ease, opacity 150ms ease\",overflow:\"hidden\",display:\"flex\",alignItems:\"center\"},children:/*#__PURE__*/_jsx(\"input\",{ref:volumeRef,type:\"range\",\"aria-label\":\"Volume\",min:0,max:1,step:.05,defaultValue:1,onChange:onVolumeInput,style:{width:48,cursor:\"pointer\",margin:\"0 0 0 4px\",accentColor:\"#fff\"}})})]}),/*#__PURE__*/_jsx(\"span\",{ref:clockRef,style:{fontSize:11,fontVariantNumeric:\"tabular-nums\",fontFamily:\"ui-monospace,monospace\",color:\"rgba(255,255,255,0.7)\",whiteSpace:\"nowrap\",marginLeft:2},children:\"0:00 / 0:00\"}),/*#__PURE__*/_jsx(\"div\",{style:{flex:1,minWidth:0}}),/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",flexShrink:0},children:[rateMenuOpen&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",bottom:\"calc(100% + 8px)\",right:0,background:\"#111\",border:\"1px solid rgba(255,255,255,0.1)\",overflow:\"hidden\",minWidth:70},children:SPEED_PRESETS.map(s=>/*#__PURE__*/_jsxs(\"div\",{onClick:()=>pickRate(s),style:{padding:\"7px 14px\",fontSize:12,textAlign:\"center\",color:s===rate?\"#fff\":\"rgba(255,255,255,0.5)\",background:s===rate?\"rgba(255,255,255,0.08)\":\"transparent\",cursor:\"pointer\"},children:[s,\"\\xd7\"]},s))}),/*#__PURE__*/_jsxs(BarButton,{onTap:()=>setRateMenuOpen(o=>!o),label:\"Playback speed\",extraStyle:{padding:\"3px 8px\",fontSize:11,fontWeight:600,color:\"rgba(255,255,255,0.85)\"},children:[rate,\"\\xd7\"]})]}),/*#__PURE__*/_jsx(BarButton,{onTap:toggleRepeat,label:\"Loop\",children:/*#__PURE__*/_jsx(\"div\",{style:{width:18,height:18},children:/*#__PURE__*/_jsx(RepeatGlyph,{active:isLooping})})}),/*#__PURE__*/_jsx(BarButton,{onTap:toggleFullscreen,label:\"Fullscreen\",children:/*#__PURE__*/_jsx(\"div\",{style:{width:18,height:18},children:/*#__PURE__*/_jsx(ExpandGlyph,{})})})]})]});}function HtmlVideoPlayer({src,posterSrc,overlayCss,autoStart,startMuted,repeat,playDelay,showCustomUI,launcherConfig,mediaLayerStyle}){const videoRef=React.useRef(null);const wrapRef=React.useRef(null);const hideTimer=React.useRef(null);const delayTimer=React.useRef(null);const lastMove=React.useRef(0);const userTook=React.useRef(false);const[uiVisible,setUiVisible]=React.useState(false);const[controlsMounted,setControlsMounted]=React.useState(false);const[running,setRunning]=React.useState(false);// Mirrors userTook for render. The ref is read inside callbacks,\n// the state decides whether the launcher is drawn.\nconst[userTouched,setUserTouched]=React.useState(false);const[autoplayBlocked,setAutoplayBlocked]=React.useState(false);// Bumped after a failed gesture retry, so the listener re-arms.\nconst[retryTick,setRetryTick]=React.useState(0);const[hovered,setHovered]=React.useState(false);const mustStartMuted=startMuted||autoStart;const mutedRef=React.useRef(mustStartMuted);mutedRef.current=mustStartMuted;// Stable ref callback, so changing \"muted\" never detaches the element.\nconst attachVideo=React.useCallback(el=>{videoRef.current=el;if(!el)return;el.defaultMuted=mutedRef.current;el.muted=mutedRef.current;if(mutedRef.current)el.setAttribute(\"muted\",\"\");el.setAttribute(\"playsinline\",\"\");el.setAttribute(\"webkit-playsinline\",\"true\");el.setAttribute(\"x5-playsinline\",\"true\");},[]);const tryPlay=React.useCallback(async()=>{const v=videoRef.current;if(!v||userTook.current)return;try{await v.play();setAutoplayBlocked(false);}catch{try{v.muted=true;v.defaultMuted=true;v.setAttribute(\"muted\",\"\");await v.play();setAutoplayBlocked(false);}catch{// iPhone Low Power Mode, data saver, or a strict browser\n// policy. The launcher takes over from here.\nsetAutoplayBlocked(true);}}},[]);const schedulePlay=React.useCallback(()=>{if(delayTimer.current)clearTimeout(delayTimer.current);if(playDelay>0){delayTimer.current=setTimeout(tryPlay,playDelay*1e3);}else{tryPlay();}},[playDelay,tryPlay]);React.useEffect(()=>{if(!autoStart)return;const v=videoRef.current;if(!v)return;userTook.current=false;setUserTouched(false);setAutoplayBlocked(false);const attempt=()=>{if(!userTook.current&&v.paused)schedulePlay();};const onVisibility=()=>{if(document.visibilityState===\"visible\")attempt();};attempt();const detachMedia=listen(v,[\"loadeddata\",\"canplay\"],attempt);const detachDoc=listen(document,[\"visibilitychange\"],onVisibility);return()=>{if(delayTimer.current)clearTimeout(delayTimer.current);detachMedia();detachDoc();};},[autoStart,src,schedulePlay]);/* Blocked autoplay: the first gesture anywhere on the page restarts\n       playback. play() must run inside the gesture, so no delay here.\n       Taps inside the player are skipped, the launcher handles those,\n       otherwise play and pause would fire from the same tap. */React.useEffect(()=>{if(!autoStart||!autoplayBlocked)return;const resume=e=>{if(userTook.current)return;if(wrapRef.current?.contains(e.target))return;const v=videoRef.current;if(!v)return;v.play().then(()=>setAutoplayBlocked(false)).catch(()=>setRetryTick(t=>t+1));};return listen(window,[\"pointerdown\",\"touchstart\",\"keydown\"],resume,{passive:true,once:true});},[autoStart,autoplayBlocked,retryTick]);React.useEffect(()=>{return()=>{if(hideTimer.current)clearTimeout(hideTimer.current);if(delayTimer.current)clearTimeout(delayTimer.current);const v=videoRef.current;if(!v)return;try{v.pause();v.removeAttribute(\"src\");v.load();}catch{}};},[]);const showUI=React.useCallback(()=>{if(!showCustomUI)return;setControlsMounted(true);setUiVisible(true);if(hideTimer.current)clearTimeout(hideTimer.current);hideTimer.current=setTimeout(()=>setUiVisible(false),2600);},[showCustomUI]);const onPointerMove=React.useCallback(()=>{const now=Date.now();if(now-lastMove.current<400)return;lastMove.current=now;showUI();},[showUI]);const hideUI=React.useCallback(()=>{if(hideTimer.current)clearTimeout(hideTimer.current);setUiVisible(false);},[]);const pauseHide=React.useCallback(()=>{if(hideTimer.current)clearTimeout(hideTimer.current);},[]);const resumeHide=React.useCallback(()=>{if(hideTimer.current)clearTimeout(hideTimer.current);hideTimer.current=setTimeout(()=>setUiVisible(false),2600);},[]);const markUserAction=React.useCallback(()=>{if(delayTimer.current)clearTimeout(delayTimer.current);userTook.current=true;setUserTouched(true);},[]);const togglePlayback=React.useCallback(()=>{markUserAction();const v=videoRef.current;if(!v)return;if(v.paused){v.play().catch(()=>setAutoplayBlocked(true));}else{v.pause();}},[markUserAction]);const onKeyDown=React.useCallback(e=>{if(!showCustomUI)return;const v=videoRef.current;if(!v)return;const key=e.key;if(key===\" \"||key===\"k\"){e.preventDefault();togglePlayback();showUI();}else if(key===\"m\"){e.preventDefault();v.muted=!v.muted;showUI();}else if(key===\"ArrowRight\"){e.preventDefault();v.currentTime=Math.min(v.duration||0,v.currentTime+5);showUI();}else if(key===\"ArrowLeft\"){e.preventDefault();v.currentTime=Math.max(0,v.currentTime-5);showUI();}},[showCustomUI,togglePlayback,showUI]);const showLauncher=showCustomUI&&launcherConfig.visible&&!running&&(!autoStart||autoplayBlocked||userTouched);return /*#__PURE__*/_jsxs(\"div\",{ref:wrapRef,style:FILL,tabIndex:showCustomUI?0:-1,onKeyDown:onKeyDown,onPointerMove:showCustomUI?onPointerMove:undefined,onMouseEnter:()=>setHovered(true),onMouseLeave:()=>{if(showCustomUI)hideUI();setHovered(false);},children:[/*#__PURE__*/_jsx(motion.div,{style:mediaLayerStyle,children:/*#__PURE__*/_jsx(\"video\",{ref:attachVideo,src:src,poster:posterSrc||undefined,style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",display:\"block\",cursor:showCustomUI?\"pointer\":\"default\",pointerEvents:showCustomUI?\"auto\":\"none\"},muted:mustStartMuted,loop:repeat,playsInline:true,preload:autoStart?\"auto\":\"metadata\",controls:false,disablePictureInPicture:true,disableRemotePlayback:true,onClick:showCustomUI?togglePlayback:undefined,onPlay:()=>setRunning(true),onPause:()=>setRunning(false)})}),/*#__PURE__*/_jsx(OverlayLayer,{color:overlayCss}),showLauncher&&/*#__PURE__*/_jsx(\"div\",{onClick:togglePlayback,style:{...FILL,display:\"grid\",placeItems:\"center\",cursor:\"pointer\"},children:/*#__PURE__*/_jsx(PlayLauncher,{config:launcherConfig,isHovered:hovered})}),showCustomUI&&controlsMounted&&/*#__PURE__*/_jsx(\"div\",{onMouseEnter:pauseHide,onMouseLeave:resumeHide,style:{...FILL,pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(PlaybackControls,{videoRef:videoRef,rootRef:wrapRef,visible:uiVisible,onUserAction:markUserAction})})]});}const MEDIA_COVER={...FILL,width:\"100%\",height:\"100%\",objectFit:\"cover\"};const ThumbnailLayer=/*#__PURE__*/React.memo(function ThumbnailLayer(p){const[hovered,setHovered]=React.useState(false);const[src,setSrc]=React.useState(p.thumbSrc);React.useEffect(()=>{setSrc(p.thumbSrc);},[p.thumbSrc]);const handleKey=e=>{if(p.interactive&&(e.key===\"Enter\"||e.key===\" \")){e.preventDefault();p.onLaunch();}};const handleError=React.useCallback(()=>{if(p.thumbFallback&&src!==p.thumbFallback)setSrc(p.thumbFallback);},[p.thumbFallback,src]);/* Some browsers ignore the #t= fragment with preload=metadata,\n       so the seek is also set by hand once the metadata is in. */const seekPreview=React.useCallback(e=>{const v=e.currentTarget;if(Math.abs(v.currentTime-p.previewSeek)>.05){try{v.currentTime=p.previewSeek;}catch{}}},[p.previewSeek]);return /*#__PURE__*/_jsxs(\"div\",{style:{...FILL,cursor:p.interactive?\"pointer\":\"default\",userSelect:\"none\"},role:p.interactive?\"button\":undefined,tabIndex:p.interactive?0:undefined,onClick:p.interactive?p.onLaunch:undefined,onKeyDown:handleKey,onMouseEnter:()=>setHovered(true),onMouseLeave:()=>setHovered(false),\"aria-label\":p.interactive?\"Play video\":undefined,children:[/*#__PURE__*/_jsx(motion.div,{style:p.mediaLayerStyle,children:src?/*#__PURE__*/_jsx(\"img\",{src:src,alt:\"\",draggable:false,decoding:\"async\",loading:p.nativeLazy?\"lazy\":\"eager\",onError:handleError,...p.nativeLazy?{}:{fetchpriority:\"high\"},style:MEDIA_COVER}):p.previewVideoSrc?/* Editor only. The browser paints one frame from the\n                       file, which works even without CORS headers. *//*#__PURE__*/_jsx(\"video\",{src:p.previewVideoSrc,muted:true,playsInline:true,preload:\"auto\",controls:false,tabIndex:-1,disablePictureInPicture:true,disableRemotePlayback:true,onLoadedMetadata:seekPreview,style:{...MEDIA_COVER,pointerEvents:\"none\"}}):null}),/*#__PURE__*/_jsx(OverlayLayer,{color:p.overlayCss}),p.showLauncher&&/*#__PURE__*/_jsx(\"div\",{style:{...FILL,display:\"grid\",placeItems:\"center\",pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(PlayLauncher,{config:p.launcherConfig,isHovered:hovered})})]});});function PlaceholderHint({kind}){return /*#__PURE__*/_jsx(\"div\",{style:{...FILL,display:\"grid\",placeItems:\"center\",padding:20,textAlign:\"center\",color:\"rgba(255,255,255,0.35)\",fontSize:12,lineHeight:\"20px\",background:\"rgba(255,255,255,0.03)\"},children:HINT_BY_KIND[kind]});}/* ------------------------------------------------------------------ *//* Root                                                                *//* ------------------------------------------------------------------ */export default function CoreVideo(props){const{sourceKind,sourceUrl,sourceFile,ytThumbRes,posterMode=\"auto\",posterImage=\"\",posterTime=.1,loading,style,parallax,launcher,showNativeUI=true,autoStart=false,startMuted=true,repeat=false,playDelay=0}=props;const{triggerMode=\"view\",preloadMargin=300,nativeLazy=true,releaseOffscreen=true}=loading??{};const{cornerRadius=18,strokeWidth=1,strokeColor=\"rgba(255,255,255,0.15)\",elevation=18,overlay=\"rgba(0,0,0,0)\"}=style??{};const parallaxCfg=React.useMemo(()=>({enabled:false,y:20,x:0,...parallax}),[parallax]);const currentLauncher=React.useMemo(()=>({visible:true,style:\"default\",customIcon:\"\",diameter:64,iconSize:.4,radius:999,bgColor:\"rgba(0,0,0,0.7)\",bgBlur:0,borderWidth:0,borderColor:\"rgba(255,255,255,0.1)\",glyphColor:\"#ffffff\",hoverScale:1.06,...launcher}),[launcher]);/* Canvas, export and thumbnail all render a static frame. Only preview\n       and the live site run observers and playback. */const inCanvas=RenderTarget.current()!==RenderTarget.preview;const rootRef=React.useRef(null);const[isVisible,setIsVisible]=React.useState(false);const[wasTriggered,setWasTriggered]=React.useState(false);const[triggeredByTap,setTriggeredByTap]=React.useState(false);const[derivedPoster,setDerivedPoster]=React.useState(\"\");const[delayElapsed,setDelayElapsed]=React.useState(playDelay<=0);const sourceId=React.useMemo(()=>{if(sourceKind===\"upload\")return sourceFile?.trim()||null;if(!sourceUrl?.trim())return null;if(sourceKind===\"youtube\")return extractYouTubeId(sourceUrl);if(sourceKind===\"vimeo\")return extractVimeoId(sourceUrl);return sourceUrl.trim();},[sourceKind,sourceUrl,sourceFile]);React.useEffect(()=>{setDerivedPoster(\"\");},[sourceId,sourceKind]);const hasSource=Boolean(sourceId);const isFilePlayer=sourceKind===\"cdn\"||sourceKind===\"upload\";const isProviderEmbed=sourceKind===\"youtube\"||sourceKind===\"vimeo\";const customPoster=isFilePlayer&&posterMode===\"image\"?posterImage:\"\";const wantAutoPoster=isFilePlayer&&posterMode===\"auto\";const frameTime=between(posterTime,0,600);const thumbToShow=customPoster||derivedPoster;const thumbFallback=React.useMemo(()=>{if(sourceKind!==\"youtube\"||!sourceId)return\"\";return`https://i.ytimg.com/vi/${sourceId}/hqdefault.jpg`;},[sourceKind,sourceId]);const isTriggered=React.useMemo(()=>{if(!hasSource||inCanvas)return false;if(triggerMode===\"click\")return wasTriggered;return isVisible;},[hasSource,triggerMode,isVisible,wasTriggered,inCanvas]);// Embeds wait out the delay before the iframe mounts,\n// so the frame is requested once instead of twice.\nconst shouldMount=isTriggered&&(isFilePlayer||delayElapsed);React.useEffect(()=>{if(!isTriggered||isFilePlayer||playDelay<=0){setDelayElapsed(true);return;}setDelayElapsed(false);const timer=setTimeout(()=>setDelayElapsed(true),playDelay*1e3);return()=>clearTimeout(timer);},[isTriggered,isFilePlayer,playDelay]);/* Parallax. Percentages resolve against the layer's own box, so no size\n       measurement and no re-render are needed to turn them into pixels. */const reducedMotion=useReducedMotion();const yPct=between(parallaxCfg.y??0,0,100)/100;const xPct=between(parallaxCfg.x??0,0,100)/100;const parallaxOn=Boolean(parallaxCfg.enabled)&&!reducedMotion&&(yPct>0||xPct>0);/* The layer is scaled by the same ratio it travels,\n       so the frame never shows an empty edge. */const parallaxScale=parallaxOn?1+Math.max(yPct,xPct):1;const{scrollXProgress,scrollYProgress}=useScroll({target:rootRef,offset:SCROLL_OFFSET});const parallaxY=useTransform(scrollYProgress,[0,1],[`${-yPct*50}%`,`${yPct*50}%`]);const parallaxX=useTransform(scrollXProgress,[0,1],[`${-xPct*50}%`,`${xPct*50}%`]);const animateParallax=parallaxOn&&!inCanvas;const mediaLayerStyle=React.useMemo(()=>({position:\"absolute\",inset:0,y:animateParallax?parallaxY:0,x:animateParallax?parallaxX:0,scale:parallaxScale,transformOrigin:\"center center\",backfaceVisibility:\"hidden\",willChange:animateParallax?\"transform\":undefined}),[animateParallax,parallaxY,parallaxX,parallaxScale]);/* Preconnect as soon as the page has the component, well before the\n       iframe is requested, so the handshake is already done by then. */React.useEffect(()=>{if(!hasSource||inCanvas||isFilePlayer)return;if(sourceKind===\"youtube\"){preconnectOnce(\"https://www.youtube-nocookie.com\");preconnectOnce(\"https://i.ytimg.com\");}if(sourceKind===\"vimeo\"){preconnectOnce(\"https://player.vimeo.com\");preconnectOnce(\"https://i.vimeocdn.com\");}},[hasSource,inCanvas,sourceKind,isFilePlayer]);const iframeSrc=React.useMemo(()=>{if(!sourceId||isFilePlayer)return\"\";const silentStart=startMuted||autoStart&&!triggeredByTap;const canAutoplay=autoStart||triggeredByTap;if(sourceKind===\"youtube\"){const q=new URLSearchParams({playsinline:\"1\",rel:\"0\",modestbranding:\"1\",controls:showNativeUI?\"1\":\"0\"});if(canAutoplay)q.set(\"autoplay\",\"1\");if(silentStart)q.set(\"mute\",\"1\");if(repeat){q.set(\"loop\",\"1\");q.set(\"playlist\",sourceId);}return`https://www.youtube-nocookie.com/embed/${sourceId}?${q}`;}if(sourceKind===\"vimeo\"){const q=new URLSearchParams({playsinline:\"1\",dnt:\"1\",controls:showNativeUI?\"1\":\"0\"});if(canAutoplay)q.set(\"autoplay\",\"1\");if(silentStart)q.set(\"muted\",\"1\");if(repeat)q.set(\"loop\",\"1\");return`https://player.vimeo.com/video/${sourceId}?${q}`;}return\"\";},[sourceId,sourceKind,autoStart,startMuted,repeat,showNativeUI,triggeredByTap,isFilePlayer]);React.useEffect(()=>{const el=rootRef.current;if(!el||inCanvas)return;const loadM=Math.max(0,preloadMargin);const mountObs=new IntersectionObserver(([entry])=>{if(entry?.isIntersecting){setIsVisible(true);if(!releaseOffscreen)mountObs.disconnect();}},{threshold:0,rootMargin:`${loadM}px 0px ${loadM}px 0px`});mountObs.observe(el);let releaseObs=null;if(releaseOffscreen){const releaseM=Math.max(loadM+500,1e3);releaseObs=new IntersectionObserver(([entry])=>{if(!entry?.isIntersecting){setIsVisible(false);setWasTriggered(false);setTriggeredByTap(false);}},{threshold:0,rootMargin:`${releaseM}px 0px ${releaseM}px 0px`});releaseObs.observe(el);}return()=>{mountObs.disconnect();releaseObs?.disconnect();};},[preloadMargin,releaseOffscreen,inCanvas]);/* Auto poster: grab one frame from the file and reuse it as the poster.\n       Needs CORS on the file host. Framer uploads have it, many CDNs do not.\n       On failure nothing is set and the editor falls back to a live frame. */React.useEffect(()=>{if(!hasSource||!isFilePlayer||!sourceId)return;if(!wantAutoPoster)return;if(!inCanvas&&!isVisible)return;const cached=posterCache.get(sourceId);if(cached){setDerivedPoster(cached);return;}let cancelled=false;const probe=document.createElement(\"video\");probe.muted=true;probe.playsInline=true;probe.preload=\"metadata\";probe.crossOrigin=\"anonymous\";const cleanupProbe=()=>{probe.removeAttribute(\"src\");try{probe.load();}catch{}};const onSeeked=()=>{if(cancelled)return;try{const vw=probe.videoWidth||640;const vh=probe.videoHeight||360;const ratio=Math.min(1,POSTER_MAX_EDGE/Math.max(vw,vh));const canvas=document.createElement(\"canvas\");canvas.width=Math.round(vw*ratio);canvas.height=Math.round(vh*ratio);const ctx=canvas.getContext(\"2d\");if(ctx){ctx.drawImage(probe,0,0,canvas.width,canvas.height);canvas.toBlob(blob=>{if(!blob||cancelled)return;const url=URL.createObjectURL(blob);rememberPoster(sourceId,url);setDerivedPoster(url);},\"image/jpeg\",.7);}}catch{// Tainted canvas. Leave the poster empty.\n}cleanupProbe();};const onMeta=()=>{probe.currentTime=Math.max(.001,frameTime);};const onError=()=>cleanupProbe();probe.addEventListener(\"loadedmetadata\",onMeta);probe.addEventListener(\"seeked\",onSeeked);probe.addEventListener(\"error\",onError);probe.src=sourceId;probe.load();return()=>{cancelled=true;probe.removeEventListener(\"loadedmetadata\",onMeta);probe.removeEventListener(\"seeked\",onSeeked);probe.removeEventListener(\"error\",onError);cleanupProbe();};},[hasSource,isFilePlayer,inCanvas,isVisible,sourceId,wantAutoPoster,frameTime]);/* Provider thumbnails. The canvas has no IntersectionObserver, so it is\n       let through here on its own, otherwise the editor shows an empty box. */React.useEffect(()=>{if(!hasSource||isFilePlayer||!sourceId)return;if(!isVisible&&!inCanvas)return;if(sourceKind===\"youtube\"){setDerivedPoster(`https://i.ytimg.com/vi/${sourceId}/${ytThumbRes??\"hqdefault\"}.jpg`);return;}if(sourceKind===\"vimeo\"){const cached=vimeoThumbCache.get(sourceId);if(cached){setDerivedPoster(cached);return;}const ctrl=new AbortController;(async()=>{try{const r=await fetch(`https://vimeo.com/api/oembed.json?url=https://vimeo.com/${sourceId}`,{signal:ctrl.signal});if(r.ok){const d=await r.json();if(d?.thumbnail_url){vimeoThumbCache.set(sourceId,d.thumbnail_url);setDerivedPoster(d.thumbnail_url);}}}catch{}})();return()=>ctrl.abort();}},[hasSource,isVisible,inCanvas,sourceKind,sourceId,ytThumbRes,isFilePlayer]);const handleLaunch=React.useCallback(()=>{if(!hasSource)return;setTriggeredByTap(true);setWasTriggered(true);},[hasSource]);const rootStyle=React.useMemo(()=>({position:\"relative\",width:\"100%\",height:\"100%\",borderRadius:cornerRadius,overflow:\"hidden\",border:strokeWidth>0?`${strokeWidth}px solid ${strokeColor}`:\"none\",boxShadow:elevation>0?`0 ${elevation}px ${elevation*2}px rgba(0,0,0,0.22)`:\"none\",/* No fill of its own. The frame is always either the video\n               or a frame of it, never a colored box. */background:\"transparent\",WebkitTapHighlightColor:\"transparent\",contain:\"layout paint style\",isolation:\"isolate\",transform:\"translateZ(0)\"}),[cornerRadius,strokeWidth,strokeColor,elevation]);/* Editor preview for files. Whatever the poster setting, the editor\n       always shows a frame of the loaded video, unless a custom image\n       is set, because that image is what the site will show. */const previewSeek=Math.max(.1,frameTime);const canvasPreviewSrc=React.useMemo(()=>{if(!inCanvas||!isFilePlayer||!sourceId)return\"\";if(thumbToShow)return\"\";return sourceId.includes(\"#\")?sourceId:`${sourceId}#t=${previewSeek}`;},[inCanvas,isFilePlayer,sourceId,thumbToShow,previewSeek]);/* The editor mirrors the runtime rule: with autoplay on there is no\n       button on the live site, so none is drawn here either. */const showThumbLauncher=currentLauncher.visible&&!isProviderEmbed&&(triggerMode===\"click\"||inCanvas&&showNativeUI&&!autoStart);return /*#__PURE__*/_jsx(\"div\",{ref:rootRef,style:rootStyle,children:!hasSource?/*#__PURE__*/_jsx(PlaceholderHint,{kind:sourceKind}):shouldMount?isFilePlayer?/*#__PURE__*/_jsx(HtmlVideoPlayer,{src:sourceId,posterSrc:thumbToShow,overlayCss:overlay,autoStart:autoStart||triggeredByTap,startMuted:startMuted,repeat:repeat,playDelay:playDelay,showCustomUI:showNativeUI,launcherConfig:currentLauncher,mediaLayerStyle:mediaLayerStyle},sourceId):/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(motion.div,{style:mediaLayerStyle,children:/*#__PURE__*/_jsx(\"iframe\",{src:iframeSrc,style:{...FILL,width:\"100%\",height:\"100%\",border:\"none\",display:\"block\"},allow:\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\",allowFullScreen:true,loading:\"lazy\",referrerPolicy:\"strict-origin-when-cross-origin\",title:\"Video player\"},iframeSrc)}),/*#__PURE__*/_jsx(OverlayLayer,{color:overlay})]}):/*#__PURE__*/_jsx(ThumbnailLayer,{thumbSrc:thumbToShow,thumbFallback:thumbFallback,previewVideoSrc:canvasPreviewSrc,previewSeek:previewSeek,overlayCss:overlay,showLauncher:showThumbLauncher,launcherConfig:currentLauncher,nativeLazy:nativeLazy&&!inCanvas,interactive:triggerMode===\"click\"&&hasSource,onLaunch:handleLaunch,mediaLayerStyle:mediaLayerStyle})});}CoreVideo.defaultProps={sourceKind:\"youtube\",sourceUrl:\"\",sourceFile:\"\",ytThumbRes:\"hqdefault\",posterMode:\"auto\",posterImage:\"\",posterTime:.1,loading:{triggerMode:\"view\",preloadMargin:300,nativeLazy:true,releaseOffscreen:true},style:{cornerRadius:18,strokeWidth:1,strokeColor:\"rgba(255,255,255,0.15)\",elevation:18,overlay:\"rgba(0,0,0,0)\"},parallax:{enabled:false,y:20,x:0},launcher:{visible:true,style:\"default\",customIcon:\"\",diameter:64,iconSize:.4,radius:999,bgColor:\"rgba(0,0,0,0.7)\",bgBlur:0,borderWidth:0,borderColor:\"rgba(255,255,255,0.1)\",glyphColor:\"#ffffff\",hoverScale:1.06},showNativeUI:true,autoStart:false,startMuted:true,repeat:false,playDelay:0};const isEmbed=p=>p.sourceKind===\"youtube\"||p.sourceKind===\"vimeo\";addPropertyControls(CoreVideo,{sourceKind:{type:ControlType.Enum,title:\"Source\",options:[\"youtube\",\"vimeo\",\"cdn\",\"upload\"],optionTitles:[\"YouTube\",\"Vimeo\",\"Direct URL\",\"Upload\"],description:\"YouTube and Vimeo use their own player. Direct URL and Upload use the built in player with a custom play button and controls.\"},sourceUrl:{type:ControlType.String,title:\"Link\",placeholder:\"Paste link or ID\",hidden:p=>p.sourceKind===\"upload\"},sourceFile:{type:ControlType.File,title:\"File\",allowedFileTypes:[\"mp4\",\"webm\",\"mov\",\"m4v\",\"ogg\"],hidden:p=>p.sourceKind!==\"upload\"},ytThumbRes:{type:ControlType.Enum,title:\"Thumbnail\",options:[\"hqdefault\",\"mqdefault\",\"maxresdefault\"],optionTitles:[\"HQ\",\"MQ\",\"Max\"],defaultValue:\"hqdefault\",hidden:p=>p.sourceKind!==\"youtube\",description:\"Quality of the YouTube cover shown before the player loads.\"},posterMode:{type:ControlType.Enum,title:\"Poster\",options:[\"none\",\"auto\",\"image\"],optionTitles:[\"Off\",\"Auto\",\"Image\"],displaySegmentedControl:true,defaultValue:\"auto\",hidden:isEmbed,description:\"Cover picture shown until the video plays. Off: the browser shows the first frame on its own, nothing extra to load. Auto: a frame is taken from the file and shown instantly, even before the video loads, needs a host that allows CORS, Framer uploads always do. Image: your own picture, best for a designed look and page speed scores, use a compressed JPG.\"},posterImage:{type:ControlType.Image,title:\"Image\",hidden:p=>isEmbed(p)||p.posterMode!==\"image\"},posterTime:{type:ControlType.Number,title:\"Frame\",min:0,max:600,step:.1,unit:\"s\",defaultValue:.1,hidden:p=>isEmbed(p)||p.posterMode===\"image\",description:\"Second of the video used for the cover.\"},loading:{type:ControlType.Object,title:\"Loading\",controls:{triggerMode:{type:ControlType.Enum,title:\"Load\",options:[\"view\",\"click\"],optionTitles:[\"On View\",\"On Click\"],displaySegmentedControl:true,defaultValue:\"view\",description:\"On View loads the video as it scrolls near. On Click loads only after a tap, which keeps long pages light.\"},preloadMargin:{type:ControlType.Number,title:\"Preload\",min:0,max:1200,step:25,unit:\"px\",displayStepper:true,defaultValue:300,description:\"How far below the screen loading starts. Higher means readier, lower means less traffic.\"},nativeLazy:{type:ControlType.Boolean,title:\"Lazy Poster\",defaultValue:true,description:\"Lets the browser delay the poster image. Turn off for a hero video at the top of the page.\"},releaseOffscreen:{type:ControlType.Boolean,title:\"Unload\",defaultValue:true,description:\"Frees the video once it scrolls far away and loads it again on return. Keep on for pages with several videos.\"}}},style:{type:ControlType.Object,title:\"Frame\",controls:{overlay:{type:ControlType.Color,title:\"Overlay\",defaultValue:\"rgba(0,0,0,0)\",description:\"Color on top of the video and its cover, always on. Made for background videos with text over them: a dark color at 30 to 50% alpha keeps the text readable. 0% alpha means no overlay.\"},cornerRadius:{type:ControlType.Number,title:\"Radius\",min:0,max:64,step:1,defaultValue:18},elevation:{type:ControlType.Number,title:\"Shadow\",min:0,max:60,step:1,defaultValue:18},strokeWidth:{type:ControlType.Number,title:\"Stroke\",min:0,max:6,step:1,defaultValue:1},strokeColor:{type:ControlType.Color,title:\"Stroke Color\",defaultValue:\"rgba(255,255,255,0.15)\",hidden:p=>!p.strokeWidth}}},parallax:{type:ControlType.Object,title:\"Parallax\",controls:{enabled:{type:ControlType.Boolean,title:\"Parallax\",enabledTitle:\"On\",disabledTitle:\"Off\",defaultValue:false,description:\"Moves the video slightly while the page scrolls. Off for people who prefer reduced motion.\"},y:{type:ControlType.Number,title:\"Vertical\",min:0,max:100,step:1,unit:\"%\",defaultValue:20,hidden:p=>!p.enabled},x:{type:ControlType.Number,title:\"Horizontal\",min:0,max:100,step:1,unit:\"%\",defaultValue:0,hidden:p=>!p.enabled}}},launcher:{type:ControlType.Object,title:\"Play Button\",hidden:isEmbed,controls:{visible:{type:ControlType.Boolean,title:\"Visible\",defaultValue:true},style:{type:ControlType.Enum,title:\"Icon\",options:[\"default\",\"custom\"],optionTitles:[\"Default\",\"Image\"],displaySegmentedControl:true,defaultValue:\"default\"},customIcon:{type:ControlType.Image,title:\"Image\",hidden:p=>p.style!==\"custom\"},diameter:{type:ControlType.Number,title:\"Size\",min:36,max:180,step:1,defaultValue:64},iconSize:{type:ControlType.Number,title:\"Icon Scale\",min:.1,max:1,step:.01,defaultValue:.4},radius:{type:ControlType.Number,title:\"Radius\",min:0,max:999,step:1,defaultValue:999},bgColor:{type:ControlType.Color,title:\"Fill\",defaultValue:\"rgba(0,0,0,0.7)\"},bgBlur:{type:ControlType.Number,title:\"Blur\",min:0,max:40,step:1,defaultValue:0},borderWidth:{type:ControlType.Number,title:\"Border\",min:0,max:10,step:1,defaultValue:0},borderColor:{type:ControlType.Color,title:\"Border Color\",defaultValue:\"rgba(255,255,255,0.1)\",hidden:p=>!p.borderWidth},glyphColor:{type:ControlType.Color,title:\"Icon Color\",defaultValue:\"#ffffff\",hidden:p=>p.style===\"custom\"},hoverScale:{type:ControlType.Number,title:\"Hover Scale\",min:1,max:1.5,step:.01,defaultValue:1.06}}},showNativeUI:{type:ControlType.Boolean,title:\"Controls\",defaultValue:true,description:\"Player controls. For YouTube and Vimeo this toggles their own bar.\"},autoStart:{type:ControlType.Boolean,title:\"Autoplay\",defaultValue:false,description:\"Starts on its own, muted, browsers require that. If a browser holds playback back, the cover stays and the play button appears.\"},playDelay:{type:ControlType.Number,title:\"Delay\",min:0,max:30,step:.5,unit:\"s\",defaultValue:0,hidden:p=>!p.autoStart,description:\"Seconds to wait before autoplay starts.\"},startMuted:{type:ControlType.Boolean,title:\"Muted\",defaultValue:true},repeat:{type:ControlType.Boolean,title:\"Loop\",defaultValue:false}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CoreVideo\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CoreVideo.map"],"mappings":"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"}