{"version":3,"file":"YouTubeLoop.UhFDAQDk.mjs","names":["React.useRef","React.useState","React.useMemo","React.useCallback"],"sources":["https:/framerusercontent.com/modules/oAkWEpob9maJb5SBcaJD/wm0iV6kyt4YGLrF889X1/YouTubeLoop.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";// Fracao do video que precisa estar na tela para a reproducao comecar.\nconst IN_VIEW_RATIO=.35;// Hosts que exigem embed proprio. Qualquer outro host cuja URL aponte para um\n// arquivo de video toca direto no player nativo (ex.: cdn.shopify.com).\nconst EMBED_ONLY_HOSTS=new Set([\"youtube.com\",\"m.youtube.com\",\"music.youtube.com\",\"youtube-nocookie.com\",\"youtu.be\",\"drive.google.com\"]);const DIRECT_VIDEO_FILE=/\\.(mp4|m4v|webm|ogv|ogg|mov)$/i;// URL http(s) apontando direto para um arquivo de video (Shopify CDN, S3, etc.).\nfunction extractDirectVideoUrl(input){const raw=(input||\"\").trim();if(!raw)return\"\";if(!/^https?:\\/\\//i.test(raw))return\"\";try{const url=new URL(raw);const host=url.hostname.replace(/^www\\./,\"\");if(EMBED_ONLY_HOSTS.has(host))return\"\";return DIRECT_VIDEO_FILE.test(url.pathname)?raw:\"\";}catch{return\"\";}}function extractYouTubeId(input){const raw=(input||\"\").trim();if(!raw)return\"\";const idPattern=/^[a-zA-Z0-9_-]{11}$/;if(idPattern.test(raw))return raw;try{const normalized=raw.startsWith(\"http://\")||raw.startsWith(\"https://\")?raw:`https://${raw}`;const url=new URL(normalized);const host=url.hostname.replace(/^www\\./,\"\");const path=url.pathname;if(host===\"youtube.com\"||host===\"m.youtube.com\"||host===\"music.youtube.com\"){const watchId=url.searchParams.get(\"v\");if(watchId&&idPattern.test(watchId))return watchId;const pathParts=path.split(\"/\").filter(Boolean);const embedIndex=pathParts.indexOf(\"embed\");if(embedIndex>=0&&pathParts[embedIndex+1]&&idPattern.test(pathParts[embedIndex+1])){return pathParts[embedIndex+1];}const shortsIndex=pathParts.indexOf(\"shorts\");if(shortsIndex>=0&&pathParts[shortsIndex+1]&&idPattern.test(pathParts[shortsIndex+1])){return pathParts[shortsIndex+1];}}if(host===\"youtu.be\"){const shortId=path.split(\"/\").filter(Boolean)[0];if(shortId&&idPattern.test(shortId))return shortId;}}catch{// Fallback regex parsing below.\n}const fallback=raw.match(/(?:v=|\\/embed\\/|youtu\\.be\\/|\\/shorts\\/)([a-zA-Z0-9_-]{11})/)||raw.match(/([a-zA-Z0-9_-]{11})/);return fallback?.[1]??\"\";}function extractDriveFileId(input){const raw=(input||\"\").trim();if(!raw)return\"\";const idPattern=/^[a-zA-Z0-9_-]{10,}$/;if(idPattern.test(raw)&&raw.length!==11)return raw;const tryExtractFromUrl=value=>{try{const normalized=value.startsWith(\"http://\")||value.startsWith(\"https://\")?value:`https://${value}`;const url=new URL(normalized);const host=url.hostname.replace(/^www\\./,\"\");if(host!==\"drive.google.com\")return\"\";const openId=url.searchParams.get(\"id\");if(openId&&idPattern.test(openId))return openId;const ucId=url.searchParams.get(\"id\");if(ucId&&idPattern.test(ucId))return ucId;const filePathMatch=url.pathname.match(/\\/file\\/d\\/([a-zA-Z0-9_-]+)/);if(filePathMatch?.[1]&&idPattern.test(filePathMatch[1]))return filePathMatch[1];}catch{return\"\";}return\"\";};const parsedId=tryExtractFromUrl(raw);if(parsedId)return parsedId;const fallback=raw.match(/\\/file\\/d\\/([a-zA-Z0-9_-]+)/)||raw.match(/[?&]id=([a-zA-Z0-9_-]+)/)||raw.match(/^([a-zA-Z0-9_-]{10,})$/);return fallback?.[1]??\"\";}function getAspectValue(ratio){switch(ratio){case\"4:3\":return 4/3;case\"1:1\":return 1;case\"9:16\":return 9/16;case\"16:9\":default:return 16/9;}}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function YouTubeLoop(props){const{videoUrl=\"https://www.youtube.com/watch?v=jNQXAC9IVRw\",uploadedVideo=\"\",maxLoops=3,quality=100,ratio=\"16:9\",zoom=130,radius=0,background=\"#FFFFFF\",revealDelay=1400,blockClicks=true,title=\"Video\"}=props;const containerRef=React.useRef(null);const nativeVideoRef=React.useRef(null);// Conta quantas reproducoes completas ja aconteceram no video nativo atual.\nconst completedLoopsRef=React.useRef(0);// Espelha a visibilidade atual para o play nunca acontecer fora da tela.\nconst isInViewRef=React.useRef(false);const[frameSize,setFrameSize]=React.useState({width:0,height:0});const[driveCandidateIndex,setDriveCandidateIndex]=React.useState(0);const[isPlayerVisible,setIsPlayerVisible]=React.useState(()=>{return typeof window===\"undefined\";});const sourceInfo=React.useMemo(()=>{const empty={uploadedVideo:\"\",directUrl:\"\",youtubeId:\"\",driveId:\"\"};const uploaded=(uploadedVideo||\"\").trim();if(uploaded){return{...empty,source:\"uploaded\",uploadedVideo:uploaded};}const raw=(videoUrl||\"\").trim();// Arquivo de video direto vem primeiro: os extratores de YouTube/Drive sao\n// permissivos e confundiriam o hash do arquivo com um ID de video.\nconst directUrl=extractDirectVideoUrl(raw);if(directUrl)return{...empty,source:\"direct\",directUrl};const youtubeId=extractYouTubeId(raw);const driveId=extractDriveFileId(raw);const looksLikeDrive=/drive\\.google\\.com/i.test(raw);if(looksLikeDrive&&driveId)return{...empty,source:\"drive\",driveId};if(youtubeId)return{...empty,source:\"youtube\",youtubeId};if(driveId)return{...empty,source:\"drive\",driveId};return{...empty,source:\"unknown\"};},[uploadedVideo,videoUrl]);const uploadedVideoUrl=sourceInfo.uploadedVideo;const directVideoUrl=sourceInfo.directUrl;const videoId=sourceInfo.youtubeId;const driveId=sourceInfo.driveId;const mediaSource=sourceInfo.source;const embedUrl=React.useMemo(()=>{if(!videoId)return\"\";const params=new URLSearchParams({autoplay:\"1\",mute:\"1\",loop:\"1\",playlist:videoId,controls:\"0\",disablekb:\"1\",fs:\"0\",rel:\"0\",modestbranding:\"1\",iv_load_policy:\"3\",showinfo:\"0\",playsinline:\"1\"});return`https://www.youtube-nocookie.com/embed/${videoId}?${params.toString()}`;},[videoId]);const driveDirectUrls=React.useMemo(()=>{if(!driveId)return[];return[`https://drive.usercontent.google.com/download?id=${driveId}&export=download`,`https://drive.google.com/uc?export=download&id=${driveId}`,`https://drive.google.com/uc?id=${driveId}&export=media`];},[driveId]);const drivePreviewUrl=React.useMemo(()=>{if(!driveId)return\"\";const params=new URLSearchParams({autoplay:\"1\",mute:\"1\",loop:\"1\"});return`https://drive.google.com/file/d/${driveId}/preview?${params.toString()}`;},[driveId]);const driveHasNativeCandidate=mediaSource===\"drive\"&&driveId!==\"\"&&driveCandidateIndex<driveDirectUrls.length;const driveCurrentVideoUrl=driveHasNativeCandidate?driveDirectUrls[driveCandidateIndex]:\"\";const driveUsingIframeFallback=mediaSource===\"drive\"&&driveId!==\"\"&&!driveHasNativeCandidate;const uploadedHasNativeVideo=mediaSource===\"uploaded\"&&uploadedVideoUrl!==\"\";const directHasNativeVideo=mediaSource===\"direct\"&&directVideoUrl!==\"\";// Upload, URL direta e Drive compartilham o mesmo <video> nativo.\nconst hasNativeVideo=uploadedHasNativeVideo||directHasNativeVideo||driveHasNativeCandidate;const nativeVideoSrc=uploadedHasNativeVideo?uploadedVideoUrl:directHasNativeVideo?directVideoUrl:driveCurrentVideoUrl;const normalizedMaxLoops=React.useMemo(()=>Math.max(0,Math.floor(maxLoops)),[maxLoops]);const hasLoopLimit=normalizedMaxLoops>0;const targetAspect=React.useMemo(()=>getAspectValue(ratio),[ratio]);const updateSize=React.useCallback(()=>{const node=containerRef.current;if(!node)return;const next={width:node.clientWidth,height:node.clientHeight};React.startTransition(()=>{setFrameSize(prev=>prev.width===next.width&&prev.height===next.height?prev:next);});},[]);React.useEffect(()=>{if(typeof window===\"undefined\")return;const node=containerRef.current;if(!node)return;updateSize();const observer=new ResizeObserver(()=>{updateSize();});observer.observe(node);return()=>{observer.disconnect();};},[updateSize]);React.useEffect(()=>{React.startTransition(()=>{setDriveCandidateIndex(0);});},[driveId,videoUrl]);React.useEffect(()=>{if(typeof window===\"undefined\")return;if(hasNativeVideo){React.startTransition(()=>{setIsPlayerVisible(false);});return;}React.startTransition(()=>{setIsPlayerVisible(false);});const timeoutId=window.setTimeout(()=>{React.startTransition(()=>{setIsPlayerVisible(true);});},Math.max(0,Math.min(4e3,revealDelay)));return()=>{window.clearTimeout(timeoutId);};},[hasNativeVideo,embedUrl,revealDelay,drivePreviewUrl]);const ensureNativePlayback=React.useCallback(()=>{const video=nativeVideoRef.current;if(!video)return;video.muted=true;video.defaultMuted=true;const loopLimitReached=hasLoopLimit&&completedLoopsRef.current>=normalizedMaxLoops;if(!isInViewRef.current||loopLimitReached)return;const playResult=video.play();if(playResult&&typeof playResult.catch===\"function\"){playResult.catch(()=>{});}},[hasLoopLimit,normalizedMaxLoops]);React.useEffect(()=>{if(typeof window===\"undefined\")return;if(!hasNativeVideo)return;ensureNativePlayback();},[hasNativeVideo,nativeVideoSrc,ensureNativePlayback]);// Um video novo volta a ter direito de tocar uma vez.\nReact.useEffect(()=>{completedLoopsRef.current=0;},[nativeVideoSrc]);const handleNativeEnded=React.useCallback(()=>{const video=nativeVideoRef.current;if(!video)return;if(!hasLoopLimit)return;completedLoopsRef.current+=1;const loopLimitReached=completedLoopsRef.current>=normalizedMaxLoops;if(loopLimitReached){if(!video.paused)video.pause();return;}if(isInViewRef.current){video.currentTime=0;const playResult=video.play();if(playResult&&typeof playResult.catch===\"function\"){playResult.catch(()=>{});}}},[hasLoopLimit,normalizedMaxLoops]);// Toca so enquanto o video esta na tela; sai da tela, pausa.\nReact.useEffect(()=>{if(typeof window===\"undefined\")return;if(!hasNativeVideo)return;const container=containerRef.current;if(!container||typeof IntersectionObserver===\"undefined\"){isInViewRef.current=true;ensureNativePlayback();return;}const observer=new IntersectionObserver(entries=>{for(const entry of entries){const visible=entry.isIntersecting&&entry.intersectionRatio>=IN_VIEW_RATIO;isInViewRef.current=visible;const video=nativeVideoRef.current;if(!video)continue;if(visible)ensureNativePlayback();else if(!video.paused)video.pause();}},{threshold:[0,IN_VIEW_RATIO,1]});observer.observe(container);return()=>observer.disconnect();},[hasNativeVideo,ensureNativePlayback]);const revealDrivePlayer=React.useCallback(()=>{ensureNativePlayback();React.startTransition(()=>{setIsPlayerVisible(true);});},[ensureNativePlayback]);const handleDriveError=React.useCallback(()=>{React.startTransition(()=>{setDriveCandidateIndex(prev=>prev+1);});},[]);const mediaSize=React.useMemo(()=>{const width=frameSize.width;const height=frameSize.height;if(width<=0||height<=0){return{width:0,height:0};}const frameAspect=width/height;const isFill=ratio===\"Preencher\";const baseAspect=isFill?16/9:targetAspect;if(isFill){if(frameAspect>baseAspect){return{width:width,height:width/baseAspect};}return{width:height*baseAspect,height:height};}if(frameAspect>baseAspect){return{width:height*baseAspect,height:height};}return{width:width,height:width/baseAspect};},[frameSize.height,frameSize.width,ratio,targetAspect]);const zoomedMediaSize=React.useMemo(()=>{if(mediaSize.width<=0||mediaSize.height<=0){return{width:\"100%\",height:\"100%\"};}const zoomFactor=Math.max(100,Math.min(200,zoom))/100;return{width:`${mediaSize.width*zoomFactor}px`,height:`${mediaSize.height*zoomFactor}px`};},[mediaSize.height,mediaSize.width,zoom]);const nativeQualityScale=React.useMemo(()=>{return Math.max(40,Math.min(100,quality))/100;},[quality]);const nativeQualityStyle=React.useMemo(()=>{const scaleUp=nativeQualityScale>0?1/nativeQualityScale:1;return{width:`${nativeQualityScale*100}%`,height:`${nativeQualityScale*100}%`,transform:`translate(-50%, -50%) scale(${scaleUp})`,transformOrigin:\"center center\"};},[nativeQualityScale]);const playerOpacity=isPlayerVisible?1:0;return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\",background,borderRadius:radius},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,zIndex:0,background}}),/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",left:\"50%\",top:\"50%\",width:zoomedMediaSize.width,height:zoomedMediaSize.height,transform:\"translate(-50%, -50%)\",zIndex:1,opacity:playerOpacity,transition:\"opacity 240ms ease\",willChange:\"opacity\"},children:[mediaSource===\"youtube\"&&embedUrl?/*#__PURE__*/_jsx(\"iframe\",{title:title,src:embedUrl,allow:\"autoplay; encrypted-media; picture-in-picture\",style:{width:\"100%\",height:\"100%\",border:0,pointerEvents:blockClicks?\"none\":\"auto\"}}):null,hasNativeVideo?/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:\"50%\",top:\"50%\",...nativeQualityStyle},children:/*#__PURE__*/_jsx(\"video\",{ref:nativeVideoRef,title:title,src:nativeVideoSrc,autoPlay:true,loop:!hasLoopLimit,muted:true,playsInline:true,preload:\"auto\",controls:false,disablePictureInPicture:true,controlsList:\"nodownload nofullscreen noplaybackrate noremoteplayback\",onCanPlay:revealDrivePlayer,onLoadedData:revealDrivePlayer,onPlaying:revealDrivePlayer,onEnded:handleNativeEnded,onError:driveHasNativeCandidate?handleDriveError:undefined,style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",border:0,pointerEvents:blockClicks?\"none\":\"auto\"}},nativeVideoSrc)}):null,driveUsingIframeFallback?/*#__PURE__*/_jsx(\"iframe\",{title:title,src:drivePreviewUrl,allow:\"autoplay; encrypted-media; picture-in-picture\",style:{width:\"100%\",height:\"100%\",border:0,pointerEvents:blockClicks?\"none\":\"auto\"}}):null]}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,zIndex:2,background:\"transparent\",pointerEvents:blockClicks?\"auto\":\"none\"}})]});}addPropertyControls(YouTubeLoop,{maxLoops:{type:ControlType.Number,title:\"M\\xe1ximo de loops\",min:0,max:20,step:1,defaultValue:3},uploadedVideo:{type:ControlType.File,title:\"Upload de v\\xeddeo\",allowedFileTypes:[\"mp4\",\"webm\",\"mov\"]},videoUrl:{type:ControlType.String,title:\"V\\xeddeo\",defaultValue:\"https://www.youtube.com/watch?v=jNQXAC9IVRw\",placeholder:\"URL de arquivo .mp4 (Shopify CDN etc.), YouTube ou Drive — usado quando nenhum upload for definido\"},ratio:{type:ControlType.Enum,title:\"Propor\\xe7\\xe3o\",defaultValue:\"16:9\",options:[\"16:9\",\"4:3\",\"1:1\",\"9:16\",\"Preencher\"],optionTitles:[\"16:9\",\"4:3\",\"1:1\",\"9:16\",\"Preencher\"]},zoom:{type:ControlType.Number,title:\"Zoom (crop)\",min:100,max:200,step:1,unit:\"%\",defaultValue:130},quality:{type:ControlType.Number,title:\"Qualidade\",min:40,max:100,step:5,unit:\"%\",defaultValue:100},radius:{type:ControlType.Number,title:\"Radius\",min:0,max:64,defaultValue:0,step:1},background:{type:ControlType.Color,title:\"Background\",defaultValue:\"#FFFFFF\"},blockClicks:{type:ControlType.Boolean,title:\"Bloquear cliques\",defaultValue:true,enabledTitle:\"Sim\",disabledTitle:\"N\\xe3o\"},revealDelay:{type:ControlType.Number,title:\"Atraso do fade\",min:0,max:4e3,step:100,defaultValue:1400,unit:\"ms\"},title:{type:ControlType.String,title:\"T\\xedtulo\",defaultValue:\"Video\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"YouTubeLoop\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./YouTubeLoop.map"],"mappings":"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"}