{"version":3,"file":"FileUploader.f8d7O40H.mjs","names":["useState","useMemo","startTransition"],"sources":["https:/framerusercontent.com/modules/sjulcv0tXnD8aNMOMH2P/TMKXaFRwIzU2FTGVEPOy/FileUploader.js"],"sourcesContent":["// Download file component with upload and filename control\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,startTransition,useMemo}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * File Downloader\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */function FileDownloader(props){const{useFileUpload,fileUrl=\"https://framerusercontent.com/assets/MLWPbW1dUQawJLhhun3dBwpgJak.mp4\",fileUrlInput=\"https://framerusercontent.com/assets/MLWPbW1dUQawJLhhun3dBwpgJak.mp4\",fileName=\"downloaded-file\",buttonLabel,style,font,buttonColor,buttonTextColor,borderRadius,padding,showIcon,icon={src:\"https://framerusercontent.com/images/GfGkADagM4KEibNcIiRUWlfrR0.jpg\",alt:\"Icon\"},iconGap,iconPosition,textCase,iconSize,iconColor,hover}=props;// Remove upload state and input\nconst[isHovered,setIsHovered]=useState(false);const downloadUrl=useFileUpload?fileUrl:fileUrlInput;// Extract file extension from URL\nconst getFileExtension=url=>{if(!url)return\"\";const pathname=url.split(\"?\")[0]// Remove query params\n;const parts=pathname.split(\".\");return parts.length>1?parts[parts.length-1]:\"\";};const fileExtension=getFileExtension(fileUrl);const downloadName=fileExtension&&!fileName.includes(\".\")?`${fileName}.${fileExtension}`:fileName||\"downloaded-file\";// Apply text case transformation\nconst transformedLabel=useMemo(()=>{if(!buttonLabel)return buttonLabel;switch(textCase){case\"uppercase\":return buttonLabel.toUpperCase();case\"lowercase\":return buttonLabel.toLowerCase();case\"title\":return buttonLabel.replace(/\\w\\S*/g,txt=>txt.charAt(0).toUpperCase()+txt.substr(1).toLowerCase());case\"sentence\":return buttonLabel.charAt(0).toUpperCase()+buttonLabel.slice(1).toLowerCase();default:return buttonLabel;}},[buttonLabel,textCase]);return /*#__PURE__*/_jsx(\"div\",{style:{...style,width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",position:\"relative\"},children:/*#__PURE__*/_jsxs(\"a\",{href:downloadUrl,download:downloadName,style:{width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",flexDirection:iconPosition===\"after\"?\"row\":\"row\",gap:showIcon?`${iconGap}px`:0,background:isHovered?hover?hover.fill:buttonColor:buttonColor,color:isHovered?hover?hover.color:buttonTextColor:buttonTextColor,border:\"none\",borderRadius,cursor:\"pointer\",textAlign:\"center\",textDecoration:\"none\",padding,whiteSpace:\"nowrap\",transform:isHovered?`scale(${hover?hover.scale:1})`:\"scale(1)\",transition:`all ${hover?hover.transition:.2}s ease-in-out`,...font},tabIndex:0,\"aria-label\":`Download ${downloadName}`,onMouseEnter:()=>startTransition(()=>setIsHovered(true)),onMouseLeave:()=>startTransition(()=>setIsHovered(false)),onClick:e=>{e.preventDefault();if(typeof window!==\"undefined\"){fetch(downloadUrl).then(resp=>resp.blob()).then(blob=>{const url=window.URL.createObjectURL(blob);const link=document.createElement(\"a\");link.href=url;link.download=downloadName;document.body.appendChild(link);link.click();document.body.removeChild(link);window.URL.revokeObjectURL(url);});}},children:[showIcon&&iconPosition===\"before\"&&/*#__PURE__*/_jsx(\"div\",{style:{width:`${iconSize}px`,height:`${iconSize}px`,backgroundColor:isHovered?hover?hover.color:iconColor:iconColor,WebkitMaskImage:`url(${icon.src})`,WebkitMaskSize:\"contain\",WebkitMaskRepeat:\"no-repeat\",WebkitMaskPosition:\"center\",maskImage:`url(${icon.src})`,maskSize:\"contain\",maskRepeat:\"no-repeat\",maskPosition:\"center\",transition:`background-color ${hover?hover.transition:.2}s ease-in-out`},role:\"img\",\"aria-label\":icon.alt||\"Icon\"}),/*#__PURE__*/_jsx(\"span\",{children:transformedLabel}),showIcon&&iconPosition===\"after\"&&/*#__PURE__*/_jsx(\"div\",{style:{width:`${iconSize}px`,height:`${iconSize}px`,backgroundColor:isHovered?hover?hover.color:iconColor:iconColor,WebkitMaskImage:`url(${icon.src})`,WebkitMaskSize:\"contain\",WebkitMaskRepeat:\"no-repeat\",WebkitMaskPosition:\"center\",maskImage:`url(${icon.src})`,maskSize:\"contain\",maskRepeat:\"no-repeat\",maskPosition:\"center\",transition:`background-color ${hover?hover.transition:.2}s ease-in-out`},role:\"img\",\"aria-label\":icon.alt||\"Icon\"})]})});}// Helper function to determine if a color is light or dark\nfunction isLightColor(color){// Convert hex to RGB\nconst hex=color.replace(\"#\",\"\");const r=parseInt(hex.substr(0,2),16);const g=parseInt(hex.substr(2,2),16);const b=parseInt(hex.substr(4,2),16);// Calculate luminance\nconst luminance=(.299*r+.587*g+.114*b)/255;return luminance>.5;}addPropertyControls(FileDownloader,{useFileUpload:{type:ControlType.Boolean,title:\"File Source\",defaultValue:true,enabledTitle:\"Upload\",disabledTitle:\"URL\"},fileUrl:{type:ControlType.File,title:\"File\",allowedFileTypes:[\"jpg\",\"jpeg\",\"png\",\"gif\",\"webp\",\"svg\",\"pdf\",\"doc\",\"docx\",\"txt\",\"mp4\",\"webm\",\"mov\",\"mp3\",\"wav\",\"ogg\"],hidden:({useFileUpload})=>!useFileUpload},fileUrlInput:{type:ControlType.String,title:\"File URL\",defaultValue:\"https://framerusercontent.com/assets/MLWPbW1dUQawJLhhun3dBwpgJak.mp4\",placeholder:\"Enter file URL or connect variable...\",hidden:({useFileUpload})=>useFileUpload},fileName:{type:ControlType.String,title:\"File Name\",defaultValue:\"downloaded-file\",placeholder:\"Set file name...\"},buttonLabel:{type:ControlType.String,title:\"Button Label\",defaultValue:\"Download File\"},textCase:{type:ControlType.Enum,title:\"Text Case Transform\",options:[\"none\",\"uppercase\",\"lowercase\",\"title\",\"sentence\"],optionTitles:[\"None\",\"UPPERCASE\",\"lowercase\",\"Title Case\",\"Sentence case\"],defaultValue:\"none\",displaySegmentedControl:false},showIcon:{type:ControlType.Boolean,title:\"Show Icon\",defaultValue:false,enabledTitle:\"Show\",disabledTitle:\"Hide\"},icon:{type:ControlType.ResponsiveImage,title:\"Icon\",hidden:({showIcon})=>!showIcon},iconSize:{type:ControlType.Number,title:\"Icon Size\",defaultValue:20,min:8,max:64,hidden:({showIcon})=>!showIcon},iconPosition:{type:ControlType.Enum,title:\"Icon Position\",options:[\"before\",\"after\"],optionTitles:[\"Before\",\"After\"],defaultValue:\"before\",displaySegmentedControl:true,hidden:({showIcon})=>!showIcon},iconGap:{type:ControlType.Number,title:\"Icon Gap\",defaultValue:8,min:0,max:32,hidden:({showIcon})=>!showIcon},iconColor:{type:ControlType.Color,title:\"Icon Color\",defaultValue:\"#FFFFFF\",hidden:({showIcon})=>!showIcon},buttonColor:{type:ControlType.Color,title:\"Button Color\",defaultValue:\"#111111\"},buttonTextColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#fff\"},borderRadius:{type:ControlType.Number,title:\"Radius\",defaultValue:8,min:0,max:32},padding:{type:ControlType.Padding,title:\"Padding\",defaultValue:\"16px\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{variant:\"Medium\",fontSize:\"15px\",letterSpacing:\"-0.01em\",lineHeight:\"1.3em\"}},hover:{type:ControlType.Object,title:\"Hover\",optional:true,controls:{scale:{type:ControlType.Number,title:\"Scale\",defaultValue:1,min:.5,max:2,step:.01},fill:{type:ControlType.Color,title:\"Fill\",defaultValue:\"#333333\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#FFFFFF\"},transition:{type:ControlType.Number,title:\"Transition\",defaultValue:.2,min:0,max:2,step:.05,unit:\"s\"}},defaultValue:{scale:1,fill:\"#333333\",color:\"#FFFFFF\",transition:.2}}});export default FileDownloader;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FileDownloader\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FileUploader.map"],"mappings":"6MAMG,SAAS,EAAe,EAAM,CAAC,GAAK,CAAC,gBAAc,UAAQ,uEAAuE,eAAa,uEAAuE,WAAS,kBAAkB,cAAY,QAAM,OAAK,cAAY,kBAAgB,eAAa,UAAQ,WAAS,OAAK,CAAC,IAAI,sEAAsE,IAAI,OAAO,CAAC,UAAQ,eAAa,WAAS,WAAS,YAAU,SAAO,EACpd,CAAC,EAAU,GAAcA,EAAS,GAAM,CAAO,EAAY,EAAc,EAAQ,EAEE,GADjE,GAAK,CAAC,GAAG,CAAC,EAAI,MAAM,GAC1C,IAAM,EADsD,EAAI,MAAM,IAAI,CAAC,GACtD,MAAM,IAAI,CAAC,OAAO,EAAM,OAAO,EAAE,EAAM,EAAM,OAAO,GAAG,KAA0C,EAAQ,CAAO,EAAa,GAAe,CAAC,EAAS,SAAS,IAAI,CAAC,GAAG,EAAS,GAAG,IAAgB,GAAU,kBAC7N,EAAiBC,MAAY,CAAC,GAAG,CAAC,EAAY,OAAO,EAAY,OAAO,EAAP,CAAiB,IAAI,YAAY,OAAO,EAAY,aAAa,CAAC,IAAI,YAAY,OAAO,EAAY,aAAa,CAAC,IAAI,QAAQ,OAAO,EAAY,QAAQ,SAAS,GAAK,EAAI,OAAO,EAAE,CAAC,aAAa,CAAC,EAAI,OAAO,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,WAAW,OAAO,EAAY,OAAO,EAAE,CAAC,aAAa,CAAC,EAAY,MAAM,EAAE,CAAC,aAAa,CAAC,QAAQ,OAAO,IAAe,CAAC,EAAY,EAAS,CAAC,CAAC,OAAoB,EAAK,MAAM,CAAC,MAAM,CAAC,GAAG,EAAM,MAAM,OAAO,OAAO,OAAO,QAAQ,OAAO,WAAW,SAAS,eAAe,SAAS,SAAS,WAAW,CAAC,SAAsB,EAAM,IAAI,CAAC,KAAK,EAAY,SAAS,EAAa,MAAM,CAAC,MAAM,OAAO,OAAO,OAAO,QAAQ,OAAO,WAAW,SAAS,eAAe,SAAS,cAAqC,MAAY,IAAI,EAAS,GAAG,EAAQ,IAAI,EAAE,WAAW,GAAU,EAAM,EAAM,KAAK,EAAwB,MAAM,GAAU,EAAM,EAAM,MAAM,EAAgC,OAAO,OAAO,eAAa,OAAO,UAAU,UAAU,SAAS,eAAe,OAAO,UAAQ,WAAW,SAAS,UAAU,EAAU,SAAS,EAAM,EAAM,MAAM,EAAE,GAAG,WAAW,WAAW,OAAO,EAAM,EAAM,WAAW,GAAG,eAAe,GAAG,EAAK,CAAC,SAAS,EAAE,aAAa,YAAY,IAAe,iBAAiBC,MAAoB,EAAa,GAAK,CAAC,CAAC,iBAAiBA,MAAoB,EAAa,GAAM,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,gBAAgB,CAAW,IAAS,QAAa,MAAM,EAAY,CAAC,KAAK,GAAM,EAAK,MAAM,CAAC,CAAC,KAAK,GAAM,CAAC,IAAM,EAAI,EAAO,IAAI,gBAAgB,EAAK,CAAO,EAAK,SAAS,cAAc,IAAI,CAAC,EAAK,KAAK,EAAI,EAAK,SAAS,EAAa,SAAS,KAAK,YAAY,EAAK,CAAC,EAAK,OAAO,CAAC,SAAS,KAAK,YAAY,EAAK,CAAC,EAAO,IAAI,gBAAgB,EAAI,EAAG,EAAI,SAAS,CAAC,GAAU,IAAe,UAAuB,EAAK,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,EAAS,IAAI,OAAO,GAAG,EAAS,IAAI,gBAAgB,GAAU,EAAM,EAAM,MAAM,EAAoB,gBAAgB,OAAO,EAAK,IAAI,GAAG,eAAe,UAAU,iBAAiB,YAAY,mBAAmB,SAAS,UAAU,OAAO,EAAK,IAAI,GAAG,SAAS,UAAU,WAAW,YAAY,aAAa,SAAS,WAAW,oBAAoB,EAAM,EAAM,WAAW,GAAG,eAAe,CAAC,KAAK,MAAM,aAAa,EAAK,KAAK,OAAO,CAAC,CAAc,EAAK,OAAO,CAAC,SAAS,EAAiB,CAAC,CAAC,GAAU,IAAe,SAAsB,EAAK,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,EAAS,IAAI,OAAO,GAAG,EAAS,IAAI,gBAAgB,GAAU,EAAM,EAAM,MAAM,EAAoB,gBAAgB,OAAO,EAAK,IAAI,GAAG,eAAe,UAAU,iBAAiB,YAAY,mBAAmB,SAAS,UAAU,OAAO,EAAK,IAAI,GAAG,SAAS,UAAU,WAAW,YAAY,aAAa,SAAS,WAAW,oBAAoB,EAAM,EAAM,WAAW,GAAG,eAAe,CAAC,KAAK,MAAM,aAAa,EAAK,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAT9rF,IAAoD,IAAoD,CAYjG,EAAoB,EAAe,CAAC,cAAc,CAAC,KAAK,EAAY,QAAQ,MAAM,cAAc,aAAa,GAAK,aAAa,SAAS,cAAc,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,iBAAiB,CAAC,MAAM,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,MAAM,OAAO,MAAM,MAAM,OAAO,MAAM,MAAM,MAAM,MAAM,CAAC,QAAQ,CAAC,mBAAiB,CAAC,EAAc,CAAC,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,aAAa,uEAAuE,YAAY,wCAAwC,QAAQ,CAAC,mBAAiB,EAAc,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,kBAAkB,YAAY,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAY,OAAO,MAAM,eAAe,aAAa,gBAAgB,CAAC,SAAS,CAAC,KAAK,EAAY,KAAK,MAAM,sBAAsB,QAAQ,CAAC,OAAO,YAAY,YAAY,QAAQ,WAAW,CAAC,aAAa,CAAC,OAAO,YAAY,YAAY,aAAa,gBAAgB,CAAC,aAAa,OAAO,wBAAwB,GAAM,CAAC,SAAS,CAAC,KAAK,EAAY,QAAQ,MAAM,YAAY,aAAa,GAAM,aAAa,OAAO,cAAc,OAAO,CAAC,KAAK,CAAC,KAAK,EAAY,gBAAgB,MAAM,OAAO,QAAQ,CAAC,cAAY,CAAC,EAAS,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,GAAG,IAAI,EAAE,IAAI,GAAG,QAAQ,CAAC,cAAY,CAAC,EAAS,CAAC,aAAa,CAAC,KAAK,EAAY,KAAK,MAAM,gBAAgB,QAAQ,CAAC,SAAS,QAAQ,CAAC,aAAa,CAAC,SAAS,QAAQ,CAAC,aAAa,SAAS,wBAAwB,GAAK,QAAQ,CAAC,cAAY,CAAC,EAAS,CAAC,QAAQ,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,QAAQ,CAAC,cAAY,CAAC,EAAS,CAAC,UAAU,CAAC,KAAK,EAAY,MAAM,MAAM,aAAa,aAAa,UAAU,QAAQ,CAAC,cAAY,CAAC,EAAS,CAAC,YAAY,CAAC,KAAK,EAAY,MAAM,MAAM,eAAe,aAAa,UAAU,CAAC,gBAAgB,CAAC,KAAK,EAAY,MAAM,MAAM,aAAa,aAAa,OAAO,CAAC,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAY,QAAQ,MAAM,UAAU,aAAa,OAAO,CAAC,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,OAAO,SAAS,WAAW,gBAAgB,aAAa,aAAa,CAAC,QAAQ,SAAS,SAAS,OAAO,cAAc,UAAU,WAAW,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,SAAS,GAAK,SAAS,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,EAAE,IAAI,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,EAAY,MAAM,MAAM,OAAO,aAAa,UAAU,CAAC,MAAM,CAAC,KAAK,EAAY,MAAM,MAAM,QAAQ,aAAa,UAAU,CAAC,WAAW,CAAC,KAAK,EAAY,OAAO,MAAM,aAAa,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,UAAU,MAAM,UAAU,WAAW,GAAG,CAAC,CAAC,CAAC,GAAgB"}