{"version":3,"file":"LoaderRedirect.CgphrZC6.mjs","names":["useRef","useState","useCallback","React.useState","_Fragment","__esmMin","init_npm_react_18_3_1","ne","init_ssg_sandbox_shims","window","l","_e","Ha","c","init_jsx_runtime","ce","de","init_framer_DKWANagr","addPropertyControls","RenderTarget","ControlType","useIsStaticRenderer","FloatingParticlesBackground","props","canvasRef","animationRef","mouseRef","particlesRef","isStatic","canvasSize","setCanvasSize","containerRef","initializeParticles","particleCount","width","height","movementSpeed","particleSize","particleOpacity","index","redistributeParticles","updateParticles","rect","canvas","mouse","dx","particle","dy","distance","mouseInfluence","force","normalizedDx","normalizedDy","gravityForce","gravityStrength","mouseGravity","targetGlow","currentGlow","glowAnimation","springForce","particleInteraction","j","other","minDistance","interactionType","normalX","normalY","relativeVx","relativeVy","speed","impulse","overlap","separationX","separationY","mergeForce","attractForce","drawParticles","ctx","currentGlowMultiplier","particleColor","glowIntensity","animate","handleMouseMove","resizeCanvas","container","newWidth","newHeight","currentSpeed","ratio","resizeObserver","i","init_FloatingParticlesBackground","loadImage","url","image","resolve","LoaderRedirect","mounted","setMounted","arrival","hydrated","setHydrated","opacity","setOpacity","cancelled","timers","sleep","ms","images","texture","portrait","run","active","stamp","key","delay","seconds","destination","coverStyle","style","init_LoaderRedirect","init_npm_react_dom_18_3_1","p"],"sources":["https:/framerusercontent.com/modules/eWEjXQrBI4enfLOyKb3f/IJwifTeK7rKhqpw4K6rx/FloatingParticlesBackground.js","https:/framerusercontent.com/modules/LmPfbqTdX8zmiSdLglJZ/UqvT7hQVnVK5To25mly1/LoaderRedirect.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\":{\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FloatingParticlesBackground.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{createPortal}from\"react-dom\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";const key=\"portfolio-loader-dissolve\";function loadImage(url){if(!url||typeof window===\"undefined\"){return Promise.resolve();}return new Promise(resolve=>{const image=new Image;image.onload=()=>{if(image.decode){image.decode().catch(()=>{}).then(()=>resolve());}else{resolve();}};image.onerror=()=>resolve();image.src=url;if(image.complete)resolve();});}/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function LoaderRedirect({destination=\"/main-home\",seconds=4,arrival=false,texture,portrait,style}){const canvas=RenderTarget.current()===RenderTarget.canvas;const[mounted,setMounted]=React.useState(arrival);const[hydrated,setHydrated]=React.useState(false);const[opacity,setOpacity]=React.useState(arrival?1:0);React.useEffect(()=>{if(canvas)return;setHydrated(true);let cancelled=false;const timers=[];const sleep=ms=>new Promise(resolve=>{timers.push(setTimeout(resolve,ms));});const images=Promise.all([loadImage(texture),loadImage(portrait)]);async function run(){// ARRIVAL MODE: Home page dissolve\nif(arrival){let active=false;try{const stamp=Number(sessionStorage.getItem(key));active=stamp>0&&Date.now()-stamp<3e4;sessionStorage.removeItem(key);}catch{}if(!active){setMounted(false);return;}setOpacity(1);setMounted(true);// Wait briefly for homepage assets\nawait Promise.race([Promise.all([images,document.fonts?.ready]),sleep(300)]);if(cancelled)return;// Reveal homepage\nsetOpacity(0);await sleep(550);if(!cancelled){setMounted(false);}}else{setMounted(true);const delay=Math.max(0,seconds)*1e3;// Preload concurrently; begin the dissolve within the chosen duration.\nawait Promise.all([sleep(Math.max(0,delay-500)),Promise.race([images,sleep(Math.max(0,delay-500))])]);if(cancelled)return;// Fade into transition overlay\nsetOpacity(1);await sleep(500);if(cancelled)return;// Save arrival state\ntry{sessionStorage.setItem(key,String(Date.now()));}catch{}// Redirect\nwindow.location.replace(destination||\"/main-home\");}}run();return()=>{cancelled=true;timers.forEach(clearTimeout);};},[destination,seconds,arrival,texture,portrait,canvas]);// Full-screen transition overlay\nconst coverStyle={position:\"fixed\",inset:0,backgroundColor:\"rgb(242, 242, 242)\",backgroundImage:texture?`url(\"${texture}\")`:undefined,backgroundSize:\"cover\",backgroundPosition:\"center\",opacity,transition:\"opacity 500ms cubic-bezier(0.4, 0, 0.2, 1)\",pointerEvents:opacity>0?\"auto\":\"none\",zIndex:2147483647};return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{...style,pointerEvents:\"none\",opacity:0}}),!canvas&&mounted&&(hydrated&&typeof document!==\"undefined\"?/*#__PURE__*/createPortal(/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:coverStyle}),document.body):/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:coverStyle}))]});}// FRAMER PROPERTY CONTROLS\naddPropertyControls(LoaderRedirect,{destination:{type:ControlType.String,title:\"Destination\",defaultValue:\"/main-home\",hidden:p=>p.arrival},seconds:{type:ControlType.Number,title:\"Delay\",defaultValue:4,min:0,unit:\"s\",hidden:p=>p.arrival},arrival:{type:ControlType.Boolean,title:\"Arrival\",defaultValue:false},texture:{type:ControlType.Image,title:\"Texture\"},portrait:{type:ControlType.Image,title:\"Preload photo\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"LoaderRedirect\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"fixed\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./LoaderRedirect.map"],"mappings":"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"}