{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/VpkXrHDg8V7zkqNIQBoY/GtbwxUyEM00ot0IvE5vR/Spiral.js"],
  "sourcesContent": ["// Spiral dot animation component with configurable properties\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function Spiral(props){const{totalDots=600,dotRadius=2,duration=3,dotColor=\"#FFFFFF\",backgroundColor=\"#000000\",margin=2,minOpacity=.3,maxOpacity=1,minScale=.5,maxScale=1.5,useMultipleColors=false,colors=[{color:\"#FF0000\"},{color:\"#00FF00\"},{color:\"#0000FF\"}]}=props;const svgRef=useRef(null);const isStatic=useIsStaticRenderer();useEffect(()=>{if(!svgRef.current)return;const svg=svgRef.current;const SIZE=400;const GOLDEN_ANGLE=Math.PI*(3-Math.sqrt(5));const CENTER=SIZE/2;const MAX_RADIUS=CENTER-margin-dotRadius;// Clear existing content\nsvg.innerHTML=\"\";// Generate dots\nfor(let i=0;i<totalDots;i++){const idx=i+.5;const frac=idx/totalDots;const r=Math.sqrt(frac)*MAX_RADIUS;const theta=idx*GOLDEN_ANGLE;const x=CENTER+r*Math.cos(theta);const y=CENTER+r*Math.sin(theta);// Determine dot color\nlet currentColor=dotColor;if(useMultipleColors&&colors.length>0){const colorIndex=Math.floor(frac*colors.length);currentColor=colors[Math.min(colorIndex,colors.length-1)].color;}// Create circle\nconst circle=document.createElementNS(\"http://www.w3.org/2000/svg\",\"circle\");circle.setAttribute(\"cx\",x.toString());circle.setAttribute(\"cy\",y.toString());circle.setAttribute(\"r\",dotRadius.toString());circle.setAttribute(\"fill\",currentColor);circle.setAttribute(\"opacity\",isStatic?\"0.7\":\"0\");if(!isStatic){// Color animation for multiple colors\nif(useMultipleColors&&colors.length>1){const colorValues=colors.map(c=>c.color).join(\";\");const animColor=document.createElementNS(\"http://www.w3.org/2000/svg\",\"animate\");animColor.setAttribute(\"attributeName\",\"fill\");animColor.setAttribute(\"values\",colorValues);animColor.setAttribute(\"dur\",`${duration}s`);animColor.setAttribute(\"begin\",`${frac*duration}s`);animColor.setAttribute(\"repeatCount\",\"indefinite\");animColor.setAttribute(\"calcMode\",\"linear\");circle.appendChild(animColor);}// Radius animation\nconst animR=document.createElementNS(\"http://www.w3.org/2000/svg\",\"animate\");animR.setAttribute(\"attributeName\",\"r\");animR.setAttribute(\"values\",`${dotRadius*minScale};${dotRadius*maxScale};${dotRadius*minScale}`);animR.setAttribute(\"dur\",`${duration}s`);animR.setAttribute(\"begin\",`${frac*duration}s`);animR.setAttribute(\"repeatCount\",\"indefinite\");animR.setAttribute(\"calcMode\",\"spline\");animR.setAttribute(\"keySplines\",\"0.4 0 0.6 1;0.4 0 0.6 1\");circle.appendChild(animR);// Opacity animation\nconst animO=document.createElementNS(\"http://www.w3.org/2000/svg\",\"animate\");animO.setAttribute(\"attributeName\",\"opacity\");animO.setAttribute(\"values\",`${minOpacity};${maxOpacity};${minOpacity}`);animO.setAttribute(\"dur\",`${duration}s`);animO.setAttribute(\"begin\",`${frac*duration}s`);animO.setAttribute(\"repeatCount\",\"indefinite\");animO.setAttribute(\"calcMode\",\"spline\");animO.setAttribute(\"keySplines\",\"0.4 0 0.6 1;0.4 0 0.6 1\");circle.appendChild(animO);}svg.appendChild(circle);}},[totalDots,dotRadius,duration,dotColor,backgroundColor,margin,minOpacity,maxOpacity,minScale,maxScale,isStatic,useMultipleColors,colors]);return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",backgroundColor,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",overflow:\"hidden\",...props.style},children:/*#__PURE__*/_jsx(\"svg\",{ref:svgRef,width:\"400\",height:\"400\",viewBox:\"0 0 400 400\",style:{maxWidth:\"100%\",maxHeight:\"100%\",width:\"auto\",height:\"auto\"}})});}Spiral.displayName=\"Spiral\";addPropertyControls(Spiral,{totalDots:{type:ControlType.Number,title:\"Total Dots\",defaultValue:600,min:50,max:1e3,step:10},dotRadius:{type:ControlType.Number,title:\"Dot Radius\",defaultValue:2,min:.5,max:10,step:.1,unit:\"px\"},duration:{type:ControlType.Number,title:\"Animation Duration\",defaultValue:3,min:.5,max:10,step:.1,unit:\"s\"},useMultipleColors:{type:ControlType.Boolean,title:\"Multiple Colors\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},colors:{type:ControlType.Array,title:\"Colors\",control:{type:ControlType.Object,controls:{color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#FFFFFF\"}}},defaultValue:[{color:\"#FF0000\"},{color:\"#00FF00\"},{color:\"#0000FF\"}],maxCount:10,hidden:({useMultipleColors})=>!useMultipleColors},dotColor:{type:ControlType.Color,title:\"Dot Color\",defaultValue:\"#FFFFFF\",hidden:({useMultipleColors})=>useMultipleColors},backgroundColor:{type:ControlType.Color,title:\"Background Color\",defaultValue:\"#000000\"},margin:{type:ControlType.Number,title:\"Margin\",defaultValue:2,min:0,max:20,step:1,unit:\"px\"},minOpacity:{type:ControlType.Number,title:\"Min Opacity\",defaultValue:.3,min:0,max:1,step:.1},maxOpacity:{type:ControlType.Number,title:\"Max Opacity\",defaultValue:1,min:0,max:1,step:.1},minScale:{type:ControlType.Number,title:\"Min Scale\",defaultValue:.5,min:.1,max:2,step:.1},maxScale:{type:ControlType.Number,title:\"Max Scale\",defaultValue:1.5,min:.1,max:3,step:.1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Spiral\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerSupportedLayoutWidth\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Spiral.map"],
  "mappings": "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",
  "names": ["Spiral", "props", "totalDots", "dotRadius", "duration", "dotColor", "backgroundColor", "margin", "minOpacity", "maxOpacity", "minScale", "maxScale", "useMultipleColors", "colors", "svgRef", "pe", "isStatic", "useIsStaticRenderer", "ue", "svg", "SIZE", "GOLDEN_ANGLE", "CENTER", "MAX_RADIUS", "i", "idx", "frac", "r", "theta", "x", "y", "currentColor", "colorIndex", "circle", "colorValues", "c", "animColor", "animR", "animO", "p", "addPropertyControls", "ControlType"]
}
