{"version":3,"file":"FloatingParticlesBackground.BeKjvLtt.mjs","names":["useRef","useMemo","useRef","useState","useCallback","dx","dy","distance"],"sources":["https:/framerusercontent.com/modules/FJ6Tdhm43j9BNWb0QHUP/qCxOZNMh6LjmV7fYTxS5/ParallaxFloating_Prod.js","https:/framerusercontent.com/modules/s7WaD2jg1NpbS1fQ0YiS/yY4SPTplzSd09KMWBopV/FloatingParticlesBackground.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useEffect,useRef,useMemo}from\"react\";import{useMotionValue,useSpring}from\"framer-motion\";/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n *\n * @framerDisableUnlink\n */export default function ParallaxFloating(props){const{distance,direction,smoothing,enabled}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const id=generateInstanceId();const transition={damping:100,stiffness:mapRange(smoothing,0,100,2e3,50)};const offset=distance*(direction===\"away\"?-1:1);const mouseX=useMotionValue(0);const mouseY=useMotionValue(0);const x=useMotionValue(0);const y=useMotionValue(0);const springX=useSpring(x,transition);const springY=useSpring(y,transition);const ref=useRef(null);const parentRef=useRef(null);const transformRef=useRef(null);const styleRef=useRef(null);const hasSpringRef=useRef(smoothing!==0);const previousXRef=useRef(null);const previousYRef=useRef(null);const previousStyleTransformRef=useRef(null);useEffect(()=>{const unsubscribeX=mouseX.onChange(v=>x.set(enabled?v:0));const unsubscribeY=mouseY.onChange(v=>y.set(enabled?v:0));return()=>{unsubscribeX();unsubscribeY();};},[enabled,mouseX,mouseY,x,y]);useEffect(()=>{x.set(enabled?mouseX.get():0);y.set(enabled?mouseY.get():0);},[enabled]);useEffect(()=>{hasSpringRef.current=smoothing!==0;},[smoothing]);useEffect(()=>{let animationFrameId;const updateTransform=()=>{if(isCanvas){return;}animationFrameId=requestAnimationFrame(updateTransform);if(!parentRef.current||!styleRef.current){return;}const xValue=(hasSpringRef.current?springX.get():x.get()).toFixed(3);const yValue=(hasSpringRef.current?springY.get():y.get()).toFixed(3);// Get computed styles to capture all existing transforms\nconst computedStyle=window.getComputedStyle(parentRef.current);const transform=calculateTransform(parentRef.current,computedStyle,xValue,yValue,previousXRef.current,previousYRef.current,previousStyleTransformRef.current);transformRef.current=transform;styleRef.current.textContent=`\n\t\t\t\t[data-parallaxfloating=\"${id}\"] { transform: ${transform} !important }\n\t\t\t`;// console.log(transform)\npreviousXRef.current=xValue;previousYRef.current=yValue;previousStyleTransformRef.current=parentRef.current.style.transform;};if(ref.current){const container=ref.current.parentElement;if(container){const parent=container.parentElement;if(parent){parentRef.current=parent;parent.setAttribute(\"data-parallaxfloating\",id);}}}// Start the animation loop\nupdateTransform();// Cleanup function\nreturn()=>{if(animationFrameId){cancelAnimationFrame(animationFrameId);}};},[]);useEffect(()=>{const handleMouseMove=event=>{const mouseXPos=event.clientX;const mouseYPos=event.clientY;const centerX=window.innerWidth/2;const centerY=window.innerHeight/2;const normalizedX=(mouseXPos-centerX)/centerX*offset;const normalizedY=(mouseYPos-centerY)/centerY*offset;mouseX.set(normalizedX);mouseY.set(normalizedY);};window.addEventListener(\"mousemove\",handleMouseMove);return()=>window.removeEventListener(\"mousemove\",handleMouseMove);},[offset,smoothing,enabled]);return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{...props.style},children:/*#__PURE__*/_jsx(\"style\",{ref:styleRef})});}ParallaxFloating.displayName=\"Parallax Floating\";addPropertyControls(ParallaxFloating,{enabled:{type:ControlType.Boolean,defaultValue:true},direction:{type:ControlType.Enum,defaultValue:\"away\",options:[\"toward\",\"away\"],optionTitles:[\"Toward\",\"Away\"],displaySegmentedControl:true},distance:{type:ControlType.Number,title:\"Speed\",defaultValue:25,min:0,step:1,hidden:props=>!props.enabled},smoothing:{type:ControlType.Number,defaultValue:50,min:0,max:100,step:1,description:\"More components at [Framer University](https://frameruni.link/cc).\"}});const CHARACTERS=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";const generateInstanceId=()=>{const id=useMemo(()=>{let result=\"\";for(let i=0;i<13;i++){result+=CHARACTERS.charAt(Math.floor(Math.random()*CHARACTERS.length));}return result;},[]);return id;};function mapRange(value,fromLow,fromHigh,toLow,toHigh){if(fromLow===fromHigh){return toLow;}const percentage=(value-fromLow)/(fromHigh-fromLow);return toLow+percentage*(toHigh-toLow);}function calculateTransform(element,computedStyle,xValue,yValue,previousX,previousY,previousStyleTransform){xValue=xValue||0;yValue=yValue||0;previousX=previousX||0;previousY=previousY||0;// Get transform\nconst computedTransform=computedStyle.transform;const styleTransform=element.style.transform;// Subtract previous values from current values for a single transform\nconst finalX=xValue-previousX;const finalY=yValue-previousY;const translateTransform=`translate(${finalX}px, ${finalY}px)`;let transform=translateTransform;if(styleTransform&&styleTransform!==\"none\"){if(previousStyleTransform&&previousStyleTransform!==\"none\"){transform=`${translateTransform} ${invertTransform(previousStyleTransform)} ${styleTransform}`;}else{transform=`${translateTransform} ${styleTransform}`;}}return computedTransform&&computedTransform!==\"none\"?`${transform} ${computedTransform}`:transform;}function invertTransform(transformString){const transforms=transformString.match(/\\w+\\([^)]+\\)/g)||[];const invertedTransforms=transforms.reverse().map(transform=>{const[func,valuesString]=transform.match(/(\\w+)\\(([^)]+)\\)/).slice(1);const values=valuesString.split(\",\").map(v=>v.trim());const invertNumber=v=>{const[_,sign,num,unit]=v.match(/^(-?)(\\d*\\.?\\d+)(\\D*)$/);return`${sign?\"\":\"-\"}${num}${unit}`;};switch(func.toLowerCase()){case\"translate\":case\"translate3d\":case\"translatex\":case\"translatey\":case\"translatez\":return`${func}(${values.map(invertNumber).join(\", \")})`;case\"scale\":case\"scale3d\":return`${func}(${values.map(v=>1/parseFloat(v)).join(\", \")})`;case\"scalex\":case\"scaley\":case\"scalez\":return`${func}(${1/parseFloat(values[0])})`;case\"rotate\":case\"rotatex\":case\"rotatey\":case\"rotatez\":return`${func}(${invertNumber(values[0])})`;case\"rotate3d\":const rotateValues=values.map(parseFloat);return`${func}(${rotateValues[0]}, ${rotateValues[1]}, ${rotateValues[2]}, ${invertNumber(values[3])})`;case\"skew\":case\"skewx\":case\"skewy\":return`${func}(${values.map(invertNumber).join(\", \")})`;case\"matrix\":case\"matrix3d\":console.warn(`Inverting ${func} is not supported. Returning original.`);return transform;default:console.warn(`Unknown transform function: ${func}. Returning original.`);return transform;}});return invertedTransforms.join(\" \");}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ParallaxFloating\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ParallaxFloating_Prod.map","// 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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"}