{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/La9fV7Wv1NumOrYpQqB4/jrm3znuPd3fBXORD2iFM/SVGUploader.js"],
  "sourcesContent": ["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useState,useMemo,useCallback}from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{motion}from\"framer-motion\";/**\n * @copyright \u00A9framersnippets.com\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicHeight 100\n * @framerIntrinsicWidth 100\n * @framerDisableUnlink\n **/export default function SvgUploader({svgPath,strokeSize,strokeColor,fillColor}){const[state,setState]=useState({pathData:\"\",viewBox:\"\",isLoading:false,isSvgLoaded:false});const uniqueId=useMemo(()=>`curve-${Math.random().toString(36).substr(2,9)}`,[]);const fetchSVG=useCallback(async()=>{if(!svgPath){setState({pathData:\"\",viewBox:\"\",isSvgLoaded:false,isLoading:false});return;}setState(prevState=>({...prevState,isLoading:true}));try{const response=await fetch(svgPath);if(!response.ok)throw new Error(\"Failed to fetch SVG\");const svgContent=await response.text();const parser=new DOMParser;const svgDoc=parser.parseFromString(svgContent,\"image/svg+xml\");const svgElement=svgDoc.querySelector(\"svg\");const svgPathElement=svgDoc.querySelector(\"path, ellipse, circle, rect, polygon, polyline\");if(svgPathElement&&svgElement){const pathData=svgPathElement.tagName.toLowerCase()===\"path\"?svgPathElement.getAttribute(\"d\"):svgElementToPath(svgPathElement);const width=svgElement.getAttribute(\"width\")||\"100%\";const height=svgElement.getAttribute(\"height\")||\"100%\";const viewBox=svgElement.getAttribute(\"viewBox\")||`0 0 ${parseFloat(width)||100} ${parseFloat(height)||100}`;setState({pathData,viewBox,isLoading:false,isSvgLoaded:true});}else{throw new Error(\"Invalid SVG structure\");}}catch(error){console.error(\"Error fetching SVG:\",error);setState({pathData:\"\",viewBox:\"\",isSvgLoaded:false,isLoading:false});}},[svgPath]);useEffect(()=>{fetchSVG();},[svgPath,fetchSVG]);if(state.isLoading||!state.isSvgLoaded)return null;return /*#__PURE__*/_jsxs(motion.svg,{width:\"100%\",height:\"100%\",viewBox:state.viewBox||\"0 0 100 100\",preserveAspectRatio:\"xMidYMid meet\",overflow:\"visible\",children:[/*#__PURE__*/_jsx(\"defs\",{children:/*#__PURE__*/_jsx(\"path\",{id:uniqueId,d:state.pathData})}),/*#__PURE__*/_jsx(\"use\",{href:`#${uniqueId}`,stroke:strokeColor,strokeWidth:strokeSize,fill:fillColor||\"none\",x:\"0\",y:\"0\"})]});}addPropertyControls(SvgUploader,{svgPath:{type:ControlType.File,title:\"SVG\",allowedFileTypes:[\"svg\"],description:\"Must be a single open or closed vector path.\"},strokeSize:{type:ControlType.Number,title:\"Stroke\",min:0,max:100,defaultValue:1,step:.1,displayStepper:true},strokeColor:{type:ControlType.Color,title:\"\u200E\",defaultValue:\"#000000\"},fillColor:{type:ControlType.Color,title:\"Fill\",defaultValue:\"transparent\"}});const svgElementToPath=element=>{const type=element.tagName.toLowerCase();const handlers={ellipse:ellipseToPath,circle:circleToPath,rect:rectToPath,polygon:polygonToPath,polyline:polylineToPath};return handlers[type]?handlers[type](element):\"\";};const ellipseToPath=ellipse=>{const cx=parseFloat(ellipse.getAttribute(\"cx\"));const cy=parseFloat(ellipse.getAttribute(\"cy\"));const rx=parseFloat(ellipse.getAttribute(\"rx\"));const ry=parseFloat(ellipse.getAttribute(\"ry\"));return`M${cx-rx},${cy}A${rx},${ry} 0 1,0 ${cx+rx},${cy}A${rx},${ry} 0 1,0 ${cx-rx},${cy}`;};const circleToPath=circle=>{const cx=parseFloat(circle.getAttribute(\"cx\"));const cy=parseFloat(circle.getAttribute(\"cy\"));const r=parseFloat(circle.getAttribute(\"r\"));return`M${cx-r},${cy}A${r},${r} 0 1,0 ${cx+r},${cy}A${r},${r} 0 1,0 ${cx-r},${cy}`;};const rectToPath=rect=>{const x=parseFloat(rect.getAttribute(\"x\"));const y=parseFloat(rect.getAttribute(\"y\"));const width=parseFloat(rect.getAttribute(\"width\"));const height=parseFloat(rect.getAttribute(\"height\"));return`M${x},${y}H${x+width}V${y+height}H${x}Z`;};const polygonToPath=polygon=>{const points=polygon.getAttribute(\"points\").split(\" \");return points.reduce((acc,point,i)=>i===0?`M${point.split(\",\")[0]},${point.split(\",\")[1]}`:`${acc}L${point.split(\",\")[0]},${point.split(\",\")[1]}`,\"\")+\"Z\";};const polylineToPath=polyline=>{const points=polyline.getAttribute(\"points\").split(\" \");return points.reduce((acc,point,i)=>i===0?`M${point.split(\",\")[0]},${point.split(\",\")[1]}`:`${acc}L${point.split(\",\")[0]},${point.split(\",\")[1]}`,\"\");};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SvgUploader\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerDisableUnlink\":\"\",\"framerIntrinsicHeight\":\"100\",\"framerIntrinsicWidth\":\"100\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SVGUploader.map"],
  "mappings": "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",
  "names": ["SvgUploader", "svgPath", "strokeSize", "strokeColor", "fillColor", "state", "setState", "ye", "uniqueId", "se", "fetchSVG", "te", "prevState", "response", "svgContent", "svgDoc", "svgElement", "svgPathElement", "pathData", "svgElementToPath", "width", "height", "viewBox", "error", "ue", "u", "motion", "p", "addPropertyControls", "ControlType", "element", "type", "handlers", "ellipseToPath", "circleToPath", "rectToPath", "polygonToPath", "polylineToPath", "ellipse", "cx", "cy", "rx", "ry", "circle", "r", "rect", "x", "y", "polygon", "acc", "point", "i", "polyline"]
}
