{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/9lSz7dhbz5o7gWG1qmYi/jC2TzsEtdVpvbFjN3Pk1/Youtube_input.js"],
  "sourcesContent": ["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useState,useEffect}from\"react\";import{motion}from\"framer-motion\";// Add keyframes for the spinner animation\nconst spinKeyframes=`\n@keyframes spin {\n    0% { transform: rotate(0deg); }\n    100% { transform: rotate(360deg); }\n}\n`;// Create and inject the style element\nif(typeof document!==\"undefined\"){const style=document.createElement(\"style\");style.textContent=spinKeyframes;document.head.appendChild(style);}export default function YoutubeInput(props){const[inputValue,setInputValue]=useState(\"\");const[errorMessage,setErrorMessage]=useState(\"\");const[iframeUrl,setIframeUrl]=useState(\"\");const[showInput,setShowInput]=useState(true);const[iframeOpacity,setIframeOpacity]=useState(0);const[isLoading,setIsLoading]=useState(false);const extractVideoId=url=>{// Handle both /watch?v= and /shorts/ formats\nlet videoId=null;// Extract v= parameter\nconst watchMatch=url.match(/[?&]v=([^&]+)/);if(watchMatch){videoId=watchMatch[1];}// Extract shorts ID\nconst shortsMatch=url.match(/\\/shorts\\/([^/?]+)/);if(shortsMatch){videoId=shortsMatch[1];}return videoId;};useEffect(()=>{if(!showInput)return;// Check URL parameter first\nconst queryParams=new URLSearchParams(window.location.search);const urlParam=queryParams.get(\"url\");if(urlParam&&extractVideoId(urlParam)){setInputValue(urlParam);handleDownload(urlParam);return;}// Process the full URL for YouTube links\nlet youtubeUrl=window.location.href.replaceAll(\"youtube420.com\",\"youtube.com\").replaceAll(\"youtu420.be\",\"youtube.com\").replaceAll(\"youtu.be\",\"youtube.com\").replaceAll(\"/shorts/\",\"/watch?v=\");// Clean up duplicate domains\nyoutubeUrl=youtubeUrl.replaceAll(\"https://youtube.com/https://www.youtube.com/\",\"https://youtube.com/\").replaceAll(\"https://youtube.com/https://youtube.com/\",\"https://youtube.com/\").replaceAll(\"https://youtube.com/youtube.com/\",\"https://youtube.com/\").replaceAll(\"https://youtube.com/youtu.be/\",\"https://youtube.com/\").replaceAll(\"https://youtube.com/https://youtu.be/\",\"https://youtube.com/\").replace(\".com//\",\".com/\");// Only set input value if there's a valid video ID\nconst videoId=extractVideoId(youtubeUrl);if(videoId){// Construct clean URL with video ID\nconst cleanUrl=`https://youtube.com/watch?v=${videoId}`;setInputValue(cleanUrl);handleDownload(cleanUrl);}},[]);const handleInputChange=e=>{setInputValue(e.target.value);setErrorMessage(\"\");};const handleDownload=url=>{const videoId=extractVideoId(url);if(videoId){const modifiedUrl=`https://youtube420.com/iframe.html?url=watch?v=${videoId}`;setIframeUrl(modifiedUrl);setShowInput(false);setIsLoading(true);// Start with opacity 0\nsetIframeOpacity(0);// Fade in after a short delay to allow CSS to load\nsetTimeout(()=>{setIframeOpacity(1);setIsLoading(false);},500);}else{setErrorMessage(\"Please input a valid YouTube URL:\");}};const handleDownloadClick=()=>{handleDownload(inputValue);};const handleToggleInputVisibility=()=>{setShowInput(!showInput);setInputValue(\"\");setErrorMessage(\"\");if(showInput){setIframeUrl(\"\");}};return /*#__PURE__*/_jsx(\"div\",{style:containerStyle,children:showInput?/*#__PURE__*/_jsxs(_Fragment,{children:[errorMessage&&/*#__PURE__*/_jsx(\"p\",{style:{color:\"rgb(249, 220, 196)\"},children:errorMessage}),/*#__PURE__*/_jsx(\"input\",{style:inputStyle,type:\"text\",placeholder:\"youtube.com/?watch=5aFpG43\",value:inputValue,onChange:handleInputChange}),/*#__PURE__*/_jsx(motion.div,{variants:buttonVariants,whileTap:\"click\",children:/*#__PURE__*/_jsx(\"input\",{style:buttonStyle,type:\"button\",value:\"Download\",onClick:handleDownloadClick})})]}):/*#__PURE__*/_jsxs(_Fragment,{children:[isLoading&&/*#__PURE__*/_jsxs(\"div\",{className:\"relative\",style:loaderContainerStyle,children:[/*#__PURE__*/_jsx(\"div\",{style:loaderStyle,children:/*#__PURE__*/_jsx(\"div\",{style:spinnerStyle})}),/*#__PURE__*/_jsx(\"div\",{style:loadingTextStyle,children:\"Loading video...\"})]}),/*#__PURE__*/_jsx(\"iframe\",{src:iframeUrl,style:{width:\"830px\",height:\"270px\",border:\"none\",opacity:iframeOpacity,transition:\"opacity 0.3s ease-in-out\"},title:\"YouTube Video\",frameBorder:\"0\"}),/*#__PURE__*/_jsx(\"div\",{style:anotherStyle,onClick:handleToggleInputVisibility,children:\"Download another URL\"})]})});}const buttonVariants={click:{scale:[1,.8,1.1,1],rotate:[0,-10,10,-10,10,0],transition:{duration:.2}}};const containerStyle={height:\"100%\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\",overflow:\"hidden\"};const anotherStyle={position:\"absolute\",color:\"#FEC89A\",bottom:\"20px\",left:\"31px\",textDecoration:\"underline\",fontFamily:\"Tahoma\",cursor:\"pointer\",fontWeight:\"bold\",fontSize:\"13px\",display:\"block\"};const inputStyle={margin:\"10px\",WebkitAppearance:\"none\",appearance:\"none\",width:\"290px\",height:\"auto\",outline:\"none\",border:\"none\",padding:\"15px\",borderRadius:\"10px\",fontSize:\"16px\",fontFamily:'\"Space Grotesk\", \"Space Grotesk Placeholder\", sans-serif',fontStyle:\"normal\",fontWeight:\"400\",letterSpacing:\"0em\",lineHeight:\"1em\",textAlign:\"left\",background:\"rgb(0, 0, 0)\",color:\"#F9DCC4\",boxShadow:\"inset 0 0 0 1px rgb(255, 255, 255)\"};const loaderContainerStyle={position:\"absolute\",top:\"50%\",left:\"50%\",transform:\"translate(-50%, -50%)\",display:\"flex\",flexDirection:\"column\",alignItems:\"center\",gap:\"15px\"};const loaderStyle={width:\"40px\",height:\"40px\",position:\"relative\"};const spinnerStyle={width:\"100%\",height:\"100%\",border:\"4px solid #FEC89A\",borderTop:\"4px solid transparent\",borderRadius:\"50%\",animation:\"spin 1s linear infinite\"};const loadingTextStyle={color:\"#FEC89A\",fontFamily:'\"Space Grotesk\", sans-serif',fontSize:\"14px\"};const buttonStyle={WebkitAppearance:\"none\",appearance:\"none\",width:\"110px\",height:\"100%\",outline:\"none\",border:\"none\",cursor:\"pointer\",borderRadius:\"10px\",fontWeight:\"400\",fontSize:\"16px\",fontFamily:'\"Space Grotesk\", \"Space Grotesk Placeholder\", sans-serif',fontStyle:\"normal\",letterSpacing:\"0em\",lineHeight:\"1em\",textAlign:\"center\",background:\"rgb(255, 255, 255)\",color:\"rgb(0, 0, 0)\",zIndex:1,boxShadow:\"none\",padding:\"18px\"};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"YoutubeInput\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Youtube_input.map"],
  "mappings": "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",
  "names": ["spinKeyframes", "style", "YoutubeInput", "props", "inputValue", "setInputValue", "ye", "errorMessage", "setErrorMessage", "iframeUrl", "setIframeUrl", "showInput", "setShowInput", "iframeOpacity", "setIframeOpacity", "isLoading", "setIsLoading", "extractVideoId", "url", "videoId", "watchMatch", "shortsMatch", "ue", "urlParam", "window", "handleDownload", "youtubeUrl", "cleanUrl", "handleInputChange", "e", "modifiedUrl", "handleDownloadClick", "p", "containerStyle", "u", "l", "inputStyle", "motion", "buttonVariants", "buttonStyle", "loaderContainerStyle", "loaderStyle", "spinnerStyle", "loadingTextStyle", "anotherStyle"]
}
