{"version":3,"file":"FloatingParticlesBackground.CPpXKY9U.mjs","names":["useRef","useState","useCallback"],"sources":["https:/framerusercontent.com/modules/s7WaD2jg1NpbS1fQ0YiS/yY4SPTplzSd09KMWBopV/FloatingParticlesBackground.js"],"sourcesContent":["// Floating dust particles background with mouse interaction\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useState,useCallback}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function FloatingParticlesBackground(props){const{particleCount=50,particleSize=2,particleOpacity=.6,glowIntensity=10,movementSpeed=.5,mouseInfluence=100,backgroundColor=\"#000000\",particleColor=\"#FFFFFF\",mouseGravity=\"none\",gravityStrength=50,glowAnimation=\"ease\",particleInteraction=false,interactionType=\"bounce\"}=props;const canvasRef=useRef(null);const animationRef=useRef();const mouseRef=useRef({x:0,y:0});const particlesRef=useRef([]);const isStatic=useIsStaticRenderer();const[canvasSize,setCanvasSize]=useState({width:800,height:600});const containerRef=useRef(null);const initializeParticles=useCallback((width,height)=>{return Array.from({length:particleCount},(_,index)=>({x:Math.random()*width,y:Math.random()*height,vx:(Math.random()-.5)*movementSpeed,vy:(Math.random()-.5)*movementSpeed,size:Math.random()*particleSize+1,opacity:particleOpacity,baseOpacity:particleOpacity,mass:Math.random()*.5+.5,id:index}));},[particleCount,particleSize,particleOpacity,movementSpeed]);const redistributeParticles=useCallback((width,height)=>{particlesRef.current.forEach(particle=>{// Redistribute particles proportionally across the new dimensions\nparticle.x=Math.random()*width;particle.y=Math.random()*height;});},[]);const updateParticles=useCallback(canvas=>{const rect=canvas.getBoundingClientRect();const mouse=mouseRef.current;particlesRef.current.forEach((particle,index)=>{// Calculate distance to mouse\nconst dx=mouse.x-particle.x;const dy=mouse.y-particle.y;const distance=Math.sqrt(dx*dx+dy*dy);// Mouse influence and gravity\nif(distance<mouseInfluence&&distance>0){const force=(mouseInfluence-distance)/mouseInfluence;const normalizedDx=dx/distance;const normalizedDy=dy/distance;const gravityForce=force*(gravityStrength*.001);// Apply gravity effect based on mouseGravity setting\nif(mouseGravity===\"attract\"){particle.vx+=normalizedDx*gravityForce;particle.vy+=normalizedDy*gravityForce;}else if(mouseGravity===\"repel\"){particle.vx-=normalizedDx*gravityForce;particle.vy-=normalizedDy*gravityForce;}particle.opacity=Math.min(1,particle.baseOpacity+force*.4);// Apply glow animation based on type\nconst targetGlow=1+force*2;const currentGlow=particle.glowMultiplier||1;if(glowAnimation===\"instant\"){particle.glowMultiplier=targetGlow;}else if(glowAnimation===\"ease\"){// Ease in-out animation\nconst easeSpeed=.15;particle.glowMultiplier=currentGlow+(targetGlow-currentGlow)*easeSpeed;}else if(glowAnimation===\"spring\"){// Spring animation with overshoot\nconst springForce=(targetGlow-currentGlow)*.2;const damping=.85;particle.glowVelocity=(particle.glowVelocity||0)*damping+springForce;particle.glowMultiplier=currentGlow+particle.glowVelocity;}}else{particle.opacity=Math.max(particle.baseOpacity*.3,particle.opacity-.02);// Return glow to normal based on animation type\nconst targetGlow=1;const currentGlow=particle.glowMultiplier||1;if(glowAnimation===\"instant\"){particle.glowMultiplier=targetGlow;}else if(glowAnimation===\"ease\"){const easeSpeed=.08;particle.glowMultiplier=Math.max(1,currentGlow+(targetGlow-currentGlow)*easeSpeed);}else if(glowAnimation===\"spring\"){const springForce=(targetGlow-currentGlow)*.15;const damping=.9;particle.glowVelocity=(particle.glowVelocity||0)*damping+springForce;particle.glowMultiplier=Math.max(1,currentGlow+particle.glowVelocity);}}// Particle interaction\nif(particleInteraction){for(let j=index+1;j<particlesRef.current.length;j++){const other=particlesRef.current[j];const dx=other.x-particle.x;const dy=other.y-particle.y;const distance=Math.sqrt(dx*dx+dy*dy);const minDistance=particle.size+other.size+5;if(distance<minDistance&&distance>0){if(interactionType===\"bounce\"){// Elastic collision\nconst normalX=dx/distance;const normalY=dy/distance;// Relative velocity\nconst relativeVx=particle.vx-other.vx;const relativeVy=particle.vy-other.vy;// Relative velocity in collision normal direction\nconst speed=relativeVx*normalX+relativeVy*normalY;// Only resolve if velocities are separating\nif(speed<0)return;// Collision impulse\nconst impulse=2*speed/(particle.mass+other.mass);// Update velocities\nparticle.vx-=impulse*other.mass*normalX;particle.vy-=impulse*other.mass*normalY;other.vx+=impulse*particle.mass*normalX;other.vy+=impulse*particle.mass*normalY;// Separate particles to prevent overlap\nconst overlap=minDistance-distance;const separationX=normalX*overlap*.5;const separationY=normalY*overlap*.5;particle.x-=separationX;particle.y-=separationY;other.x+=separationX;other.y+=separationY;}else if(interactionType===\"merge\"){// Temporary merge effect - increase glow and size\nconst mergeForce=(minDistance-distance)/minDistance;particle.glowMultiplier=(particle.glowMultiplier||1)+mergeForce*.5;other.glowMultiplier=(other.glowMultiplier||1)+mergeForce*.5;// Attract particles slightly\nconst attractForce=mergeForce*.01;particle.vx+=dx*attractForce;particle.vy+=dy*attractForce;other.vx-=dx*attractForce;other.vy-=dy*attractForce;}}}}// Update position\nparticle.x+=particle.vx;particle.y+=particle.vy;// Add subtle random movement\nparticle.vx+=(Math.random()-.5)*.001;particle.vy+=(Math.random()-.5)*.001;// Damping\nparticle.vx*=.999;particle.vy*=.999;// Boundary wrapping\nif(particle.x<0)particle.x=rect.width;if(particle.x>rect.width)particle.x=0;if(particle.y<0)particle.y=rect.height;if(particle.y>rect.height)particle.y=0;});},[mouseInfluence,mouseGravity,gravityStrength,glowAnimation,particleInteraction,interactionType]);const drawParticles=useCallback(ctx=>{ctx.clearRect(0,0,ctx.canvas.width,ctx.canvas.height);particlesRef.current.forEach(particle=>{ctx.save();// Create glow effect with enhanced blur based on interaction\nconst currentGlowMultiplier=particle.glowMultiplier||1;ctx.shadowColor=particleColor;ctx.shadowBlur=glowIntensity*currentGlowMultiplier*2;ctx.globalAlpha=particle.opacity;ctx.fillStyle=particleColor;ctx.beginPath();ctx.arc(particle.x,particle.y,particle.size,0,Math.PI*2);ctx.fill();ctx.restore();});},[particleColor,glowIntensity]);const animate=useCallback(()=>{const canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;updateParticles(canvas);drawParticles(ctx);animationRef.current=requestAnimationFrame(animate);},[updateParticles,drawParticles]);const handleMouseMove=useCallback(e=>{const canvas=canvasRef.current;if(!canvas)return;const rect=canvas.getBoundingClientRect();mouseRef.current={x:e.clientX-rect.left,y:e.clientY-rect.top};},[]);const resizeCanvas=useCallback(()=>{const canvas=canvasRef.current;const container=containerRef.current;if(!canvas||!container)return;const rect=container.getBoundingClientRect();const newWidth=rect.width;const newHeight=rect.height;canvas.width=newWidth;canvas.height=newHeight;// Update canvas size state and redistribute particles\nsetCanvasSize({width:newWidth,height:newHeight});// Only redistribute if particles exist and size changed significantly\nif(particlesRef.current.length>0){redistributeParticles(newWidth,newHeight);}},[redistributeParticles]);// Effect to reinitialize particles when particle count changes\nuseEffect(()=>{if(isStatic)return;const canvas=canvasRef.current;if(!canvas)return;particlesRef.current=initializeParticles(canvas.width||canvasSize.width,canvas.height||canvasSize.height);},[particleCount,initializeParticles,isStatic,canvasSize]);// Effect to update particle properties when they change\nuseEffect(()=>{if(isStatic)return;particlesRef.current.forEach(particle=>{particle.baseOpacity=particleOpacity;particle.opacity=particleOpacity;// Update velocity based on new movement speed\nconst currentSpeed=Math.sqrt(particle.vx*particle.vx+particle.vy*particle.vy);if(currentSpeed>0){const ratio=movementSpeed/currentSpeed;particle.vx*=ratio;particle.vy*=ratio;}});},[particleOpacity,movementSpeed,isStatic]);useEffect(()=>{if(isStatic)return;resizeCanvas();if(typeof window!==\"undefined\"){window.addEventListener(\"mousemove\",handleMouseMove);window.addEventListener(\"resize\",resizeCanvas);}// Set up ResizeObserver for container\nif(containerRef.current&&typeof ResizeObserver!==\"undefined\"){const resizeObserver=new ResizeObserver(()=>{resizeCanvas();});resizeObserver.observe(containerRef.current);return()=>{resizeObserver.disconnect();if(typeof window!==\"undefined\"){window.removeEventListener(\"mousemove\",handleMouseMove);window.removeEventListener(\"resize\",resizeCanvas);}};}return()=>{if(typeof window!==\"undefined\"){window.removeEventListener(\"mousemove\",handleMouseMove);window.removeEventListener(\"resize\",resizeCanvas);}};},[handleMouseMove,resizeCanvas,isStatic]);useEffect(()=>{if(isStatic)return;animate();return()=>{if(animationRef.current){cancelAnimationFrame(animationRef.current);}};},[animate,isStatic]);if(isStatic){return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",backgroundColor,position:\"relative\",overflow:\"hidden\"},children:Array.from({length:Math.min(particleCount,20)}).map((_,i)=>/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:`${Math.random()*100}%`,top:`${Math.random()*100}%`,width:`${particleSize}px`,height:`${particleSize}px`,backgroundColor:particleColor,borderRadius:\"50%\",opacity:particleOpacity,boxShadow:`0 0 ${glowIntensity}px ${particleColor}`}},i))});}return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{width:\"100%\",height:\"100%\",backgroundColor,position:\"relative\",overflow:\"hidden\"},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{width:\"100%\",height:\"100%\",display:\"block\"}})});}addPropertyControls(FloatingParticlesBackground,{particleCount:{type:ControlType.Number,title:\"Particle Count\",defaultValue:50,min:10,max:1e3,step:1},particleSize:{type:ControlType.Number,title:\"Particle Size\",defaultValue:2,min:1,max:10,step:.5,unit:\"px\"},particleOpacity:{type:ControlType.Number,title:\"Particle Opacity\",defaultValue:.6,min:.1,max:1,step:.1},glowIntensity:{type:ControlType.Number,title:\"Glow Intensity\",defaultValue:10,min:0,max:30,step:1,unit:\"px\"},glowAnimation:{type:ControlType.Enum,title:\"Glow Animation\",options:[\"instant\",\"ease\",\"spring\"],optionTitles:[\"Instant\",\"Ease In-Out\",\"Spring\"],defaultValue:\"ease\",displaySegmentedControl:true},movementSpeed:{type:ControlType.Number,title:\"Movement Speed\",defaultValue:.5,min:.1,max:2,step:.1},mouseInfluence:{type:ControlType.Number,title:\"Mouse Influence\",defaultValue:100,min:50,max:300,step:10,unit:\"px\"},backgroundColor:{type:ControlType.Color,title:\"Background Color\",defaultValue:\"#000000\"},particleColor:{type:ControlType.Color,title:\"Particle Color\",defaultValue:\"#FFFFFF\"},mouseGravity:{type:ControlType.Enum,title:\"Mouse Gravity\",options:[\"none\",\"attract\",\"repel\"],optionTitles:[\"None\",\"Attract\",\"Repel\"],defaultValue:\"none\",displaySegmentedControl:true},gravityStrength:{type:ControlType.Number,title:\"Gravity Strength\",defaultValue:50,min:10,max:200,step:10,hidden:({mouseGravity})=>mouseGravity===\"none\"},particleInteraction:{type:ControlType.Boolean,title:\"Particle Interaction\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},interactionType:{type:ControlType.Enum,title:\"Interaction Type\",options:[\"bounce\",\"merge\"],optionTitles:[\"Bounce\",\"Merge\"],defaultValue:\"bounce\",displaySegmentedControl:true,hidden:({particleInteraction})=>!particleInteraction}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FloatingParticlesBackground\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FloatingParticlesBackground.map"],"mappings":"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"}