{"version":3,"file":"VideoEmbed.VzhPZ2DX.mjs","names":["useRef","useState","startTransition","_Fragment","__esmMin","init_ssg_sandbox_shims","te","window","_e","de","l","Ha","c","init_jsx_runtime","init_npm_react_18_3_1","ce","init_framer_B1b760uK","addPropertyControls","RenderTarget","ControlType","parse","url","u","host","id","parts","idx","p","next","thumb","v","parseTime","value","s","total","raw","killYTCaptions","loadYT","w","ytPromise","prev","resolve","poll","YouTubeLoop","props","hostRef","onPlayingRef","cancelled","player","timer","target","restart","start","YT","muted","t","d","stop","end","controls","style","VimeoLoop","ref","query","src","hash","iframe","post","onMsg","ev","data","Lightbox","shown","setShown","closingRef","close","onClose","prevOverflow","onKey","raf","Engine","backdrop","VideoEmbed","size","setSize","clicked","setClicked","open","setOpen","live","setLive","isCanvas","background","mode","lightbox","startTime","endRaw","endTime","ro","r","entries","onPlaying","posterSrc","poster","iw","ih","uiCrop","need","wrap","ratio","cover","playButton","segKey","overlay","showControls","init_VideoEmbed","init_npm_react_dom_18_3_1","h"],"sources":["https:/framerusercontent.com/modules/0Y67TC4rl3MLTcbxECFb/WRG0eoYCHh8FH6zxki8y/VideoEmbed.js"],"sourcesContent":["// VideoEmbed — YouTube / Vimeo embed for Framer.\n// Requests:\n// - Background mode: never show the player's own controls (play/pause/next/previous, title, logo).\n// - Start / End timecode props (bindable to CMS text fields) that play a precise segment;\n//   when playback reaches the End timecode it jumps back to the Start timecode and keeps looping.\n// - Start as fast as possible (no double seek, short cover hold, API preloaded on module load).\n// - Never show subtitles / auto-generated captions on YouTube or Vimeo.\n// - Hide YouTube's title bar (top) and logo (bottom-right) by over-scanning the player.\n// - Lightbox mode (project pages): clicking the cover opens the video in a full-screen\n//   lightbox above every layer on the page, header included.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect,useRef,useState,startTransition}from\"react\";import{createPortal}from\"react-dom\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";// ---------- helpers ----------\nfunction parse(url){if(!url)return null;try{const u=new URL(url.trim());const host=u.hostname;if(host.includes(\"youtu\")){let id=u.searchParams.get(\"v\")||\"\";if(!id){const parts=u.pathname.split(\"/\").filter(Boolean);id=parts[parts.length-1]||\"\";}return id?{type:\"youtube\",id}:null;}if(host.includes(\"vimeo\")){// Unlisted videos carry a privacy hash: vimeo.com/<id>/<hash> or ?h=<hash>\nconst parts=u.pathname.split(\"/\").filter(Boolean);const idx=parts.findIndex(p=>/^\\d+$/.test(p));if(idx<0)return null;const id=parts[idx];const next=parts[idx+1];const hash=u.searchParams.get(\"h\")||(next&&/^[0-9a-f]{6,}$/i.test(next)?next:\"\");return{type:\"vimeo\",id,hash};}}catch(e){}return null;}function thumb(v){if(!v)return\"\";return v.type===\"youtube\"?`https://img.youtube.com/vi/${v.id}/maxresdefault.jpg`:`https://vumbnail.com/${v.id}_large.jpg`;}/** \"75\", \"1:15\", \"01:15.5\", \"1:02:03\", \"1:15,5\" -> seconds. Empty/invalid -> null */function parseTime(value){if(value===null||value===undefined)return null;if(typeof value===\"number\")return isFinite(value)&&value>=0?value:null;const s=String(value).trim().replace(\",\",\".\");if(!s)return null;const parts=s.split(\":\");if(parts.length>3)return null;let total=0;for(const raw of parts){const p=raw.trim();if(!/^\\d+(\\.\\d+)?$/.test(p))return null;total=total*60+parseFloat(p);}return total;}/** Turn off any YouTube captions (manual or auto-generated), even if the viewer's account has CC on. */function killYTCaptions(p){if(!p)return;try{p.setOption&&p.setOption(\"captions\",\"track\",{});}catch(e){}try{p.unloadModule&&p.unloadModule(\"captions\");}catch(e){}try{p.unloadModule&&p.unloadModule(\"cc\");}catch(e){}}// ---------- YouTube IFrame API loader (shared by all instances) ----------\nlet ytPromise=null;function loadYT(){if(typeof window===\"undefined\")return new Promise(()=>{});const w=window;if(w.YT&&w.YT.Player)return Promise.resolve(w.YT);if(ytPromise)return ytPromise;ytPromise=new Promise(resolve=>{const prev=w.onYouTubeIframeAPIReady;w.onYouTubeIframeAPIReady=()=>{if(typeof prev===\"function\")prev();resolve(w.YT);};// safety net in case another script owns the callback\nconst poll=window.setInterval(()=>{if(w.YT&&w.YT.Player){window.clearInterval(poll);resolve(w.YT);}},200);if(!document.querySelector('script[src*=\"youtube.com/iframe_api\"]')){const s=document.createElement(\"script\");s.src=\"https://www.youtube.com/iframe_api\";s.async=true;document.head.appendChild(s);}});return ytPromise;}// Warm up as early as possible: preconnect + start loading the API when this module loads,\n// instead of waiting for the component to mount.\nif(typeof window!==\"undefined\"&&typeof document!==\"undefined\"){try{const hosts=[\"https://www.youtube.com\",\"https://i.ytimg.com\",\"https://player.vimeo.com\",\"https://i.vimeocdn.com\"];hosts.forEach(h=>{if(!document.querySelector(`link[rel=\"preconnect\"][href=\"${h}\"]`)){const l=document.createElement(\"link\");l.rel=\"preconnect\";l.href=h;document.head.appendChild(l);}});loadYT();}catch(e){}}function YouTubeLoop(props){const{id,start,end,controls,muted,style}=props;const hostRef=useRef(null);const onPlayingRef=useRef(props.onPlaying);onPlayingRef.current=props.onPlaying;useEffect(()=>{const host=hostRef.current;if(!host)return;let cancelled=false;let player=null;let timer=0;const target=document.createElement(\"div\");host.appendChild(target);const restart=()=>{try{player.seekTo(start,true);player.playVideo();}catch(e){}};loadYT().then(YT=>{if(cancelled)return;player=new YT.Player(target,{videoId:id,width:\"100%\",height:\"100%\",playerVars:{autoplay:1,mute:muted?1:0,controls:controls?1:0,disablekb:controls?0:1,fs:controls?1:0,iv_load_policy:3,cc_load_policy:0,modestbranding:1,playsinline:1,rel:0,start:Math.floor(start),origin:window.location.origin},events:{onReady:e=>{if(muted)e.target.mute();killYTCaptions(e.target);// The embed already starts at the whole second; only seek again for\n// fractional starts (e.g. 01:05.5) — an extra seek forces a re-buffer.\nif(start!==Math.floor(start))e.target.seekTo(start,true);e.target.playVideo();},onStateChange:e=>{if(e.data===1){// the captions module can load once playback starts — unload it again\nkillYTCaptions(e.target);onPlayingRef.current&&onPlayingRef.current();}if(e.data===0)restart()// ended\n;},onApiChange:e=>killYTCaptions(e.target)}});// precise loop watcher\ntimer=window.setInterval(()=>{if(!player||typeof player.getCurrentTime!==\"function\")return;if(player.getPlayerState&&player.getPlayerState()!==1)return;const t=player.getCurrentTime();const d=player.getDuration&&player.getDuration()||0;// stop a hair before the real end so YouTube's end screen never shows\nconst stop=end!==null?end:d>0?d-.25:null;if(stop!==null&&t>=stop)restart();else if(t<start-.5)restart();},50);});return()=>{cancelled=true;window.clearInterval(timer);try{player&&player.destroy();}catch(e){}host.innerHTML=\"\";};},[id,start,end,controls,muted]);return /*#__PURE__*/_jsx(\"div\",{ref:hostRef,style:{...style,pointerEvents:controls?\"auto\":\"none\"}});}function VimeoLoop(props){const{id,hash,start,end,controls,muted,style}=props;const ref=useRef(null);const onPlayingRef=useRef(props.onPlaying);onPlayingRef.current=props.onPlaying;const query=muted&&!controls?\"background=1&autoplay=1&loop=1&muted=1&dnt=1&playsinline=1\":`autoplay=1&dnt=1&playsinline=1&controls=${controls?1:0}${muted?\"&muted=1\":\"\"}`;const src=`https://player.vimeo.com/video/${id}?${hash?`h=${hash}&`:\"\"}${query}${start>0?`#t=${Math.floor(start)}s`:\"\"}`;useEffect(()=>{if(typeof window===\"undefined\")return;const iframe=ref.current;if(!iframe)return;const post=(method,value)=>{try{iframe.contentWindow&&iframe.contentWindow.postMessage(JSON.stringify(value===undefined?{method}:{method,value}),\"https://player.vimeo.com\");}catch(e){}};const restart=()=>{post(\"setCurrentTime\",start);post(\"play\");};const onMsg=ev=>{if(ev.source!==iframe.contentWindow)return;let data=ev.data;if(typeof data===\"string\"){try{data=JSON.parse(data);}catch(e){return;}}if(!data||!data.event)return;if(data.event===\"ready\"){post(\"disableTextTrack\");post(\"addEventListener\",\"timeupdate\");post(\"addEventListener\",\"play\");post(\"addEventListener\",\"ended\");post(\"addEventListener\",\"texttrackchange\");if(start>0)post(\"setCurrentTime\",start);post(\"play\");}else if(data.event===\"play\"||data.event===\"playing\"){post(\"disableTextTrack\");onPlayingRef.current&&onPlayingRef.current();}else if(data.event===\"texttrackchange\"){// if a track ever gets switched on (auto or by preference), switch it off again\nif(data.data&&data.data.language)post(\"disableTextTrack\");}else if(data.event===\"timeupdate\"||data.event===\"playProgress\"){const t=data.data&&data.data.seconds;if(typeof t!==\"number\")return;if(end!==null&&t>=end)restart();else if(t<start-.5)restart();}else if(data.event===\"ended\"){restart();}};window.addEventListener(\"message\",onMsg);return()=>window.removeEventListener(\"message\",onMsg);},[id,start,end]);return /*#__PURE__*/_jsx(\"iframe\",{ref:ref,src:src,title:\"video\",frameBorder:\"0\",allow:\"autoplay; fullscreen; picture-in-picture\",allowFullScreen:controls,style:{...style,border:0,pointerEvents:controls?\"auto\":\"none\"}});}function Lightbox(props){const{v,start,end,controls,backdrop,onClose}=props;const[shown,setShown]=useState(false);const closingRef=useRef(false);const close=()=>{if(closingRef.current)return;closingRef.current=true;startTransition(()=>setShown(false));window.setTimeout(onClose,220);};useEffect(()=>{const prevOverflow=document.body.style.overflow;document.body.style.overflow=\"hidden\"// lock page scroll while open\n;const onKey=e=>{if(e.key===\"Escape\")close();};window.addEventListener(\"keydown\",onKey);const raf=window.requestAnimationFrame(()=>startTransition(()=>setShown(true)));return()=>{document.body.style.overflow=prevOverflow;window.removeEventListener(\"keydown\",onKey);window.cancelAnimationFrame(raf);};},[]);const Engine=v.type===\"youtube\"?YouTubeLoop:VimeoLoop;return /*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(\"div\",{role:\"dialog\",\"aria-modal\":\"true\",\"aria-label\":\"Video\",onClick:close,style:{position:\"fixed\",inset:0,zIndex:2147483e3,background:backdrop,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",opacity:shown?1:0,transition:\"opacity 0.22s ease\"},children:[/*#__PURE__*/_jsx(\"div\",{onClick:e=>e.stopPropagation(),style:{position:\"relative\",width:\"min(92vw, calc(86vh * 16 / 9))\",aspectRatio:\"16 / 9\",background:\"#000\",transform:shown?\"scale(1)\":\"scale(0.97)\",transition:\"transform 0.22s ease\"},children:/*#__PURE__*/_jsx(Engine,{id:v.id,hash:v.hash,start:start,end:end,controls:controls,muted:false,onPlaying:()=>{},style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\"}})}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-label\":\"Close video\",onClick:e=>{e.stopPropagation();close();},style:{position:\"fixed\",top:20,right:20,width:44,height:44,padding:0,border:0,background:\"transparent\",cursor:\"pointer\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",width:\"28\",height:\"28\",fill:\"none\",stroke:\"#fff\",strokeWidth:\"1.8\",strokeLinecap:\"round\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M5 5 L19 19 M19 5 L5 19\"})})})]}),document.body);}/**\n * @framerIntrinsicWidth 1200\n * @framerIntrinsicHeight 675\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function VideoEmbed(props){const{url=\"\",mode=\"player\",startTime=\"\",endTime=\"\",showControls=true,uiCrop=.12,backdrop=\"rgba(0, 0, 0, 0.94)\",ratio=1.7778,poster,overlay=0}=props;const v=parse(url);const ref=useRef(null);const[size,setSize]=useState({w:0,h:0});const[clicked,setClicked]=useState(false);const[open,setOpen]=useState(false);const[live,setLive]=useState(false);const isCanvas=RenderTarget.current()===RenderTarget.canvas;const background=mode===\"background\";const lightbox=mode===\"lightbox\";const start=parseTime(startTime)??0;const endRaw=parseTime(endTime);const end=endRaw!==null&&endRaw>start?endRaw:null;useEffect(()=>{if(!ref.current||typeof ResizeObserver===\"undefined\")return;const ro=new ResizeObserver(entries=>{const r=entries[0].contentRect;startTransition(()=>setSize({w:r.width,h:r.height}));});ro.observe(ref.current);return()=>ro.disconnect();},[]);// reset the \"playing\" cover when the source/segment changes\nuseEffect(()=>{startTransition(()=>setLive(false));},[url,start,end]);const onPlaying=()=>{// tiny delay hides the player's start-up chrome flash\nwindow.setTimeout(()=>startTransition(()=>setLive(true)),120);};const posterSrc=poster&&(poster.src||poster)||thumb(v);// \"cover\" sizing for a 16:9 player\nlet iw=size.w;let ih=size.w*9/16;if(ih<size.h){ih=size.h;iw=size.h*16/9;}// YouTube over-scan: enlarge the (16:9) player so at least `uiCrop` of its height\n// (and never less than 56px) is cut off at the top and at the bottom. That pushes the\n// title bar (top) and the YouTube logo (bottom-right) outside the visible frame.\nif(v&&v.type===\"youtube\"&&background&&size.h>0&&uiCrop>0){const c=Math.min(uiCrop,.3);const need=Math.max(size.h+2*56,size.h/(1-2*c));if(ih<need){ih=need;iw=need*16/9;}}const wrap={width:\"100%\",height:ratio>0?\"auto\":\"100%\",aspectRatio:ratio>0?String(ratio):undefined,position:\"relative\",overflow:\"hidden\",background:\"#000\"};if(!v){return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{...wrap,color:\"#666\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",fontFamily:\"sans-serif\",fontSize:14},children:\"Paste a YouTube or Vimeo URL\"});}const cover=visible=>/*#__PURE__*/_jsx(\"img\",{src:posterSrc,alt:\"\",style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",objectFit:\"cover\",opacity:visible?1:0,transition:\"opacity 0.25s ease\",pointerEvents:\"none\"}});const playButton=onClick=>/*#__PURE__*/_jsxs(\"div\",{onClick:onClick,style:{position:\"absolute\",inset:0,cursor:\"pointer\"},role:\"button\",\"aria-label\":\"Play video\",children:[cover(true),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,background:\"rgba(0,0,0,0.25)\"}}),/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 100 100\",width:\"80\",height:\"80\",style:{position:\"absolute\",left:\"50%\",top:\"50%\",transform:\"translate(-50%,-50%)\",filter:\"drop-shadow(0 0 6px rgba(0,0,0,.4))\"},children:/*#__PURE__*/_jsx(\"path\",{d:\"M32 22 L78 50 L32 78 Z\",fill:\"#fff\"})})]});const Engine=v.type===\"youtube\"?YouTubeLoop:VimeoLoop;const segKey=`${v.type}-${v.id}-${start}-${end}`;if(background){return /*#__PURE__*/_jsxs(\"div\",{ref:ref,style:wrap,children:[!isCanvas&&/*#__PURE__*/_jsx(Engine,{id:v.id,hash:v.hash,start:start,end:end,controls:false,muted:true,onPlaying:onPlaying,style:{position:\"absolute\",left:\"50%\",top:\"50%\",width:iw||\"100%\",height:ih||\"100%\",transform:\"translate(-50%, -50%)\"}},segKey),cover(isCanvas||!live),overlay>0&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,background:`rgba(0,0,0,${overlay})`,pointerEvents:\"none\"}})]});}if(lightbox){return /*#__PURE__*/_jsxs(\"div\",{ref:ref,style:wrap,children:[playButton(()=>{if(!isCanvas)startTransition(()=>setOpen(true));}),open&&!isCanvas&&typeof document!==\"undefined\"&&/*#__PURE__*/_jsx(Lightbox,{v:v,start:start,end:end,controls:showControls,backdrop:backdrop,onClose:()=>startTransition(()=>setOpen(false))},segKey)]});}return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:wrap,children:clicked&&!isCanvas?/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(Engine,{id:v.id,hash:v.hash,start:start,end:end,controls:showControls,muted:false,onPlaying:onPlaying,style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\"}},segKey),cover(!live)]}):playButton(()=>startTransition(()=>setClicked(true)))});}addPropertyControls(VideoEmbed,{url:{type:ControlType.String,title:\"Video URL\",defaultValue:\"\"},mode:{type:ControlType.Enum,title:\"Mode\",options:[\"player\",\"background\",\"lightbox\"],optionTitles:[\"Player\",\"Background\",\"Lightbox\"],defaultValue:\"player\",displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},startTime:{type:ControlType.String,title:\"Start\",defaultValue:\"\",placeholder:\"00:00\",description:\"mm:ss, h:mm:ss or seconds. Decimals OK (01:05.5). Empty = from the start.\"},endTime:{type:ControlType.String,title:\"End\",defaultValue:\"\",placeholder:\"00:00\",description:\"Loops back to Start when reached. Empty = loop at the end of the video.\"},showControls:{type:ControlType.Boolean,title:\"Controls\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\",hidden:p=>p.mode===\"background\"},backdrop:{type:ControlType.Color,title:\"Backdrop\",defaultValue:\"rgba(0, 0, 0, 0.94)\",hidden:p=>p.mode!==\"lightbox\"},uiCrop:{type:ControlType.Number,title:\"Hide YT UI\",min:0,max:.3,step:.01,defaultValue:.12,description:\"Crops YouTube background videos so the title bar and logo fall outside the frame. Raise it if you still see them, 0 = off.\",hidden:p=>p.mode!==\"background\"},ratio:{type:ControlType.Number,title:\"Ratio (w/h)\",min:0,max:5,step:.001,defaultValue:1.7778,description:\"Used when height is Fit. 0 = fill\"},poster:{type:ControlType.ResponsiveImage,title:\"Cover\"},overlay:{type:ControlType.Number,title:\"Darken\",min:0,max:1,step:.05,defaultValue:0,hidden:p=>p.mode!==\"background\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"VideoEmbed\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"1200\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"675\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./VideoEmbed.map"],"mappings":"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"}