{"version":3,"file":"SplashCursor.BBlACnum.mjs","names":["useRef","useState","useMemo","useCallback","_Fragment","useState","useCallback","useMemo","useRef","useState","useMemo","p","animate","_Fragment","useRef","hexToRgb","gl","canvas","p"],"sources":["https:/framerusercontent.com/modules/25kP6HhylvPpNDxSZJ78/shJSHKyZOoPkzbIWLqZM/CRTEffect.js","https:/framerusercontent.com/modules/6dbDf2VmWE8CaVwfPSOo/Nmuo5IdueDVl5m6HldoB/AnimatedShapes.js","https:/framerusercontent.com/modules/aONtBQhheinOitO82zPk/gUysiVpH3vjR13vZNSpI/ParticlesBackground.js","https:/framerusercontent.com/modules/p4tP7ImsYYHN8wl5uR1g/VSos2znIW3LpFG4VaqjQ/SplashCursor.js"],"sourcesContent":["// CRT Effect VFX with animated scanline, noise, distortion, and authentic analog effects\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect,useRef,useState,useMemo,useCallback,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{motion,useMotionValue,useTransform,animate,useMotionValueEvent}from\"framer-motion\";// Static object outside component — zero recompute\nconst ANIMATED_LINE_BASE_STYLE={position:\"absolute\",pointerEvents:\"none\",zIndex:4,willChange:\"transform\"};/**\n * CRT Effect VFX\n *\n * Authentic analog TV effect with scanlines, noise, distortion, and animated line.\n * Optimized for performance with smart presets and mobile support.\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function CRTEffect(props){const{preset=\"subtle\",intensity=50,animationSpeed=1,enableNoise=true,noiseOpacity=80,noiseDensity=50,scanlineStyle=\"classic\",scanlineSpacing=4,lineThickness=2,lineOpacity=60,scanlineOrientation=\"horizontal\",animatedLineOrientation=\"horizontal\",distortionAmount=20,colorBars=false,blendMode=\"overlay\",overlayOpacity=80,triggerMode=\"always\",reduceOnMobile=true,targetFPS=60,noiseResolution=100,enableLineGlitch=true,lineGlitchIntensity=50,lineGlitchFrequency=30,enableReflection=true,reflectionIntensity=30}=props;const containerRef=useRef(null);const canvasRef=useRef(null);const scanlineY=useMotionValue(0);const[isHovered,setIsHovered]=useState(false);const[isMobile,setIsMobile]=useState(false);const isStatic=useIsStaticRenderer();const animationFrameRef=useRef();const lastFrameTimeRef=useRef(0);const noiseFramesRef=useRef([]);const frameIndexRef=useRef(0);const isVisibleRef=useRef(false);const[glitchBlocks,setGlitchBlocks]=useState([]);const glitchTimeoutRef=useRef();// Track scanline position as a plain string for use in regular divs\nconst scanlinePositionRef=useRef(\"0%\");const scanlinePosition=useTransform(scanlineY,[0,100],[\"0%\",\"100%\"]);useMotionValueEvent(scanlinePosition,\"change\",v=>{scanlinePositionRef.current=v;});// Detect mobile with debouncing\nuseEffect(()=>{if(typeof window===\"undefined\")return;const checkMobile=()=>{startTransition(()=>setIsMobile(window.innerWidth<768));};checkMobile();let timeoutId;const debouncedCheck=()=>{clearTimeout(timeoutId);timeoutId=window.setTimeout(checkMobile,150);};window.addEventListener(\"resize\",debouncedCheck);return()=>{window.removeEventListener(\"resize\",debouncedCheck);clearTimeout(timeoutId);};},[]);// Calculate effective intensity based on mobile and trigger mode\nconst effectiveIntensity=useMemo(()=>{let base=intensity;if(reduceOnMobile&&isMobile)base*=.5;if(triggerMode===\"hover\"&&!isHovered)base*=.3;return base;},[intensity,reduceOnMobile,isMobile,triggerMode,isHovered]);// Preset configurations — only recompute when preset-relevant values change\nconst presetConfig=useMemo(()=>{if(preset!==\"custom\"){const configs={subtle:{noise:.15,scanline:.3,distortion:.05},static:{noise:.8,scanline:.5,distortion:.15},vhs:{noise:.4,scanline:.7,distortion:.25},dead:{noise:1,scanline:.2,distortion:.3}};return configs[preset];}return{noise:noiseDensity/100,scanline:.5,distortion:distortionAmount/100};},[preset,preset===\"custom\"?noiseDensity:0,preset===\"custom\"?distortionAmount:0]);const shouldShowEffect=useMemo(()=>triggerMode===\"always\"||isHovered,[triggerMode,isHovered]);// Animate scanline\nuseEffect(()=>{if(isStatic||!shouldShowEffect)return;const controls=animate(scanlineY,[0,100],{duration:3/animationSpeed,repeat:Infinity,ease:\"linear\"});return()=>controls.stop();},[scanlineY,animationSpeed,isStatic,shouldShowEffect]);// Glitch effect — 150ms interval for fewer setState calls\nuseEffect(()=>{if(isStatic||!enableLineGlitch||!shouldShowEffect){if(glitchBlocks.length>0){startTransition(()=>setGlitchBlocks([]));}return;}const glitchInterval=setInterval(()=>{if(Math.random()*100<lineGlitchFrequency){const glitchIntensity=lineGlitchIntensity/100;const numBlocks=Math.floor(2+Math.random()*6*glitchIntensity);const blocks=[];for(let i=0;i<numBlocks;i++){blocks.push({offset:(Math.random()-.5)*100*glitchIntensity,width:5+Math.random()*30,opacity:.3+Math.random()*.7});}startTransition(()=>setGlitchBlocks(blocks));glitchTimeoutRef.current=window.setTimeout(()=>{startTransition(()=>setGlitchBlocks([]));},30+Math.random()*120);}},150);return()=>{clearInterval(glitchInterval);if(glitchTimeoutRef.current){clearTimeout(glitchTimeoutRef.current);}};},[isStatic,enableLineGlitch,lineGlitchIntensity,lineGlitchFrequency,shouldShowEffect]);// IntersectionObserver — pause canvas when out of viewport\nuseEffect(()=>{if(typeof window===\"undefined\"||!canvasRef.current)return;const observer=new IntersectionObserver(([entry])=>{isVisibleRef.current=entry.isIntersecting;},{threshold:0});observer.observe(canvasRef.current);return()=>observer.disconnect();},[]);// Pre-generate noise frames once, cycle them in the animation loop\nuseEffect(()=>{if(isStatic||!shouldShowEffect||!enableNoise)return;const canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(\"2d\",{alpha:true,desynchronized:true});if(!ctx)return;const width=canvas.width;const height=canvas.height;const noiseIntensity=presetConfig.noise*(effectiveIntensity/100);// Pre-generate 10 frames at mount — zero computation per frame after this\nconst frames=[];for(let f=0;f<10;f++){const img=ctx.createImageData(width,height);const d=img.data;for(let i=0;i<d.length;i+=4){const n=Math.random()*255*noiseIntensity;d[i]=n;d[i+1]=n;d[i+2]=n;d[i+3]=n*.5;}frames.push(img);}noiseFramesRef.current=frames;frameIndexRef.current=0;const frameInterval=1e3/targetFPS;const drawNoise=currentTime=>{if(!isVisibleRef.current){animationFrameRef.current=requestAnimationFrame(drawNoise);return;}if(currentTime-lastFrameTimeRef.current<frameInterval){animationFrameRef.current=requestAnimationFrame(drawNoise);return;}lastFrameTimeRef.current=currentTime;ctx.putImageData(noiseFramesRef.current[frameIndexRef.current%10],0,0);frameIndexRef.current++;animationFrameRef.current=requestAnimationFrame(drawNoise);};animationFrameRef.current=requestAnimationFrame(drawNoise);return()=>{if(animationFrameRef.current){cancelAnimationFrame(animationFrameRef.current);}};},[presetConfig.noise,effectiveIntensity,isStatic,targetFPS,shouldShowEffect,enableNoise]);// Memoized scanline background\nconst scanlineBackground=useMemo(()=>{if(scanlineStyle===\"off\")return undefined;const direction=scanlineOrientation===\"horizontal\"?\"0deg\":\"90deg\";const opacity=presetConfig.scanline*(effectiveIntensity/100);return`repeating-linear-gradient(${direction}, transparent, transparent ${scanlineSpacing-1}px, rgba(0, 0, 0, ${opacity}) ${scanlineSpacing-1}px, rgba(0, 0, 0, ${opacity}) ${scanlineSpacing}px)`;},[scanlineStyle,scanlineOrientation,scanlineSpacing,presetConfig.scanline,effectiveIntensity]);// Reflection opacity — GPU-accelerated, no repaint\nconst reflectionOpacity=useMemo(()=>{return reflectionIntensity/100*(effectiveIntensity/100);},[reflectionIntensity,effectiveIntensity]);// Callbacks for hover\nconst handleMouseEnter=useCallback(()=>{startTransition(()=>setIsHovered(true));},[]);const handleMouseLeave=useCallback(()=>{startTransition(()=>setIsHovered(false));},[]);const animatedLineColorStyle=useMemo(()=>{const baseOpacity=lineOpacity/100*(effectiveIntensity/100);return`rgba(255, 255, 255, ${baseOpacity})`;},[lineOpacity,effectiveIntensity]);return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\",...props.style},onMouseEnter:handleMouseEnter,onMouseLeave:handleMouseLeave,children:[colorBars&&shouldShowEffect&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,display:\"flex\",opacity:effectiveIntensity/100,zIndex:1},children:[\"#FFFFFF\",\"#FFFF00\",\"#00FFFF\",\"#00FF00\",\"#FF00FF\",\"#FF0000\",\"#0000FF\"].map((color,i)=>/*#__PURE__*/_jsx(\"div\",{style:{flex:1,backgroundColor:color}},i))}),shouldShowEffect&&enableNoise&&/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,width:noiseResolution,height:noiseResolution,style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",mixBlendMode:blendMode,opacity:overlayOpacity/100*(noiseOpacity/100)*(effectiveIntensity/100),imageRendering:\"pixelated\",zIndex:2,willChange:\"contents\"}}),scanlineStyle!==\"off\"&&shouldShowEffect&&scanlineBackground&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,backgroundImage:scanlineBackground,pointerEvents:\"none\",zIndex:3}}),shouldShowEffect&&!isStatic&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(motion.div,{style:{...ANIMATED_LINE_BASE_STYLE,...animatedLineOrientation===\"horizontal\"?{left:0,right:0,top:scanlinePosition,height:`${lineThickness}px`}:{top:0,bottom:0,left:scanlinePosition,width:`${lineThickness}px`},background:animatedLineColorStyle,opacity:glitchBlocks.length>0?0:1,transition:\"opacity 0.05s\"}}),glitchBlocks.map((block,index)=>/*#__PURE__*/_jsx(\"div\",{style:{...ANIMATED_LINE_BASE_STYLE,...animatedLineOrientation===\"horizontal\"?{left:`${block.offset}%`,top:scanlinePositionRef.current,width:`${block.width}%`,height:`${lineThickness}px`}:{top:`${block.offset}%`,left:scanlinePositionRef.current,height:`${block.width}%`,width:`${lineThickness}px`},background:`rgba(255, 255, 255, ${lineOpacity/100*(effectiveIntensity/100)*block.opacity})`}},index))]}),distortionAmount>0&&shouldShowEffect&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,background:\"radial-gradient(circle, transparent 60%, rgba(0, 0, 0, 0.3) 100%)\",opacity:distortionAmount/100*(effectiveIntensity/100),pointerEvents:\"none\",zIndex:6}}),shouldShowEffect&&!isStatic&&enableReflection&&/*#__PURE__*/_jsx(motion.div,{animate:{opacity:[reflectionOpacity*.6,reflectionOpacity,reflectionOpacity*.7]},transition:{duration:4/animationSpeed,repeat:Infinity,repeatType:\"reverse\",ease:\"easeInOut\"},style:{position:\"absolute\",inset:0,background:`radial-gradient(ellipse 80% 60% at 22% 32%, rgba(255, 255, 255, 0.15) 0%, transparent 50%),\n                                     radial-gradient(ellipse 60% 80% at 73% 63%, rgba(255, 255, 255, 0.08) 0%, transparent 40%)`,mixBlendMode:\"soft-light\",pointerEvents:\"none\",zIndex:9,willChange:\"opacity\"}})]});}addPropertyControls(CRTEffect,{preset:{type:ControlType.Enum,title:\"Preset\",options:[\"subtle\",\"static\",\"vhs\",\"dead\",\"custom\"],optionTitles:[\"Subtle Grain\",\"Full Static Storm\",\"VHS Play\",\"Dead Channel\",\"Custom\"],defaultValue:\"subtle\",displaySegmentedControl:false},intensity:{type:ControlType.Number,title:\"Intensity\",defaultValue:50,min:0,max:100,step:1,unit:\"%\",displayStepper:false},animationSpeed:{type:ControlType.Number,title:\"Animation Speed\",defaultValue:1,min:.1,max:5,step:.1,displayStepper:false},targetFPS:{type:ControlType.Number,title:\"Target FPS\",defaultValue:60,min:15,max:60,step:5,displayStepper:true},enableNoise:{type:ControlType.Boolean,title:\"Noise\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},noiseOpacity:{type:ControlType.Number,title:\"Noise Opacity\",defaultValue:80,min:0,max:100,step:1,unit:\"%\",displayStepper:false,hidden:({enableNoise})=>!enableNoise},noiseResolution:{type:ControlType.Number,title:\"Noise Resolution\",defaultValue:100,min:50,max:400,step:50,unit:\"px\",displayStepper:true,hidden:({enableNoise})=>!enableNoise},noiseDensity:{type:ControlType.Number,title:\"Noise Density\",defaultValue:50,min:0,max:100,step:1,unit:\"%\",displayStepper:false,hidden:({preset})=>preset!==\"custom\"},scanlineStyle:{type:ControlType.Enum,title:\"Scanline Style\",options:[\"classic\",\"off\"],optionTitles:[\"Classic\",\"Off\"],defaultValue:\"classic\",displaySegmentedControl:true},scanlineSpacing:{type:ControlType.Number,title:\"Scanline Spacing\",defaultValue:4,min:2,max:10,step:1,unit:\"px\",displayStepper:true,hidden:({scanlineStyle})=>scanlineStyle===\"off\"},lineThickness:{type:ControlType.Number,title:\"Line Thickness\",defaultValue:2,min:0,max:400,step:1,unit:\"px\",displayStepper:false},lineOpacity:{type:ControlType.Number,title:\"Line Opacity\",defaultValue:60,min:0,max:100,step:1,unit:\"%\",displayStepper:false},scanlineOrientation:{type:ControlType.Enum,title:\"Scanline Direction\",options:[\"horizontal\",\"vertical\"],optionTitles:[\"Horizontal\",\"Vertical\"],defaultValue:\"horizontal\",displaySegmentedControl:true},animatedLineOrientation:{type:ControlType.Enum,title:\"Animated Line Direction\",options:[\"horizontal\",\"vertical\"],optionTitles:[\"Horizontal\",\"Vertical\"],defaultValue:\"horizontal\",displaySegmentedControl:true},enableLineGlitch:{type:ControlType.Boolean,title:\"Line Glitch\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},lineGlitchIntensity:{type:ControlType.Number,title:\"Line Glitch Intensity\",defaultValue:50,min:0,max:100,step:1,unit:\"%\",displayStepper:false,hidden:({enableLineGlitch})=>!enableLineGlitch},lineGlitchFrequency:{type:ControlType.Number,title:\"Line Glitch Frequency\",defaultValue:30,min:0,max:100,step:1,unit:\"%\",displayStepper:false,hidden:({enableLineGlitch})=>!enableLineGlitch},distortionAmount:{type:ControlType.Number,title:\"Distortion\",defaultValue:20,min:0,max:100,step:1,unit:\"%\",displayStepper:false,hidden:({preset})=>preset!==\"custom\"},colorBars:{type:ControlType.Boolean,title:\"Color Bars\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},blendMode:{type:ControlType.Enum,title:\"Blend Mode\",options:[\"normal\",\"multiply\",\"screen\",\"overlay\",\"soft-light\",\"hard-light\"],optionTitles:[\"Normal\",\"Multiply\",\"Screen\",\"Overlay\",\"Soft Light\",\"Hard Light\"],defaultValue:\"overlay\",displaySegmentedControl:false},overlayOpacity:{type:ControlType.Number,title:\"Overlay Opacity\",defaultValue:80,min:0,max:100,step:1,unit:\"%\",displayStepper:false},triggerMode:{type:ControlType.Enum,title:\"Trigger Mode\",options:[\"always\",\"hover\"],optionTitles:[\"Always On\",\"On Hover\"],defaultValue:\"always\",displaySegmentedControl:true},reduceOnMobile:{type:ControlType.Boolean,title:\"Reduce on Mobile\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\"},enableReflection:{type:ControlType.Boolean,title:\"Screen Reflection\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},reflectionIntensity:{type:ControlType.Number,title:\"Reflection Intensity\",defaultValue:30,min:0,max:100,step:1,unit:\"%\",displayStepper:false,hidden:({enableReflection})=>!enableReflection}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CRTEffect\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CRTEffect.map","// Animated shapes component with rectangles/squares and horizontal lines appearing randomly\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useState,useCallback,startTransition,useMemo}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{motion,AnimatePresence}from\"framer-motion\";/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function AnimatedShapes(props){const{speed=5,randomness=50,lineThickness=2,backgroundColor=\"#000000\",maxLines=20,lineMinSize=5,lineMaxSize=20}=props;const[shapes,setShapes]=useState([]);const[tick,setTick]=useState(0);const isStatic=useIsStaticRenderer();const generateShape=useCallback(id=>{// Generate horizontal line\nreturn{id,x:Math.random()*100,y:Math.random()*100,width:Math.random()*(lineMaxSize-lineMinSize)+lineMinSize,height:lineThickness,rotation:0,type:\"line\",opacity:1,timestamp:Date.now()};},[lineThickness,lineMinSize,lineMaxSize]);const animationDuration=useMemo(()=>Math.max(50,300/speed),[speed]);useEffect(()=>{if(isStatic){// Show static preview with a few shapes\nconst staticShapes=Array.from({length:8},(_,i)=>generateShape(i));setShapes(staticShapes);return;}let shapeId=0;let animationFrame;let cleanupFrame;const addShape=()=>{const now=Date.now();startTransition(()=>{setShapes(prev=>{const newShape=generateShape(shapeId++);// Remove shapes older than animation duration\nconst filtered=prev.filter(s=>now-s.timestamp<animationDuration*2);// Add new shape and limit to maxLines\nlet updated=[...filtered,newShape];if(updated.length>maxLines){updated=updated.slice(updated.length-maxLines);}return updated;});});// Calculate next interval based on speed and randomness\nconst baseInterval=Math.max(5,1e3/(speed*speed*speed))// Cubic speed increase for much faster animation\n;const randomFactor=(Math.random()-.5)*(randomness/100)*baseInterval;const nextInterval=Math.max(5,baseInterval+randomFactor);animationFrame=window.setTimeout(addShape,nextInterval);};// Cleanup old shapes periodically\nconst cleanup=()=>{const now=Date.now();startTransition(()=>{setShapes(prev=>prev.filter(s=>now-s.timestamp<animationDuration*2));});cleanupFrame=window.setTimeout(cleanup,animationDuration);};addShape();cleanup();return()=>{if(animationFrame)clearTimeout(animationFrame);if(cleanupFrame)clearTimeout(cleanupFrame);};},[speed,randomness,generateShape,maxLines,isStatic,animationDuration]);// Remove shapes after animation\nconst handleAnimationComplete=useCallback(id=>{startTransition(()=>{setShapes(prev=>prev.filter(shape=>shape.id!==id));});},[]);return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",backgroundColor,position:\"relative\",overflow:\"hidden\"},children:/*#__PURE__*/_jsx(AnimatePresence,{children:shapes.map(shape=>/*#__PURE__*/_jsx(motion.div,{initial:{opacity:0,scale:0},animate:{opacity:1,scale:1},exit:{opacity:0,scale:0},transition:{duration:animationDuration/1e3,ease:\"easeOut\"},onAnimationComplete:()=>{if(!isStatic){setTimeout(()=>handleAnimationComplete(shape.id),animationDuration);}},style:{position:\"absolute\",left:`${shape.x}%`,top:`${shape.y}%`,width:`${shape.width}%`,height:`${shape.height}px`,transform:`rotate(${shape.rotation}deg)`,pointerEvents:\"none\",backgroundColor:props.lineColor}},shape.id))})});}addPropertyControls(AnimatedShapes,{speed:{type:ControlType.Number,title:\"Speed\",defaultValue:50,min:.1,max:100,step:.1,displayStepper:false},randomness:{type:ControlType.Number,title:\"Randomness\",defaultValue:50,min:0,max:100,step:1,unit:\"%\",displayStepper:false},maxLines:{type:ControlType.Number,title:\"Max Lines\",defaultValue:20,min:0,max:100,step:5,displayStepper:false},lineMinSize:{type:ControlType.Number,title:\"Line Min Size\",defaultValue:50,min:1,max:100,step:1,unit:\"%\",displayStepper:false},lineMaxSize:{type:ControlType.Number,title:\"Line Max Size\",defaultValue:100,min:1,max:100,step:1,unit:\"%\",displayStepper:false},lineThickness:{type:ControlType.Number,title:\"Line Thickness\",defaultValue:1,min:1,max:10,step:1,unit:\"px\",displayStepper:false},lineColor:{type:ControlType.Color,title:\"Line Color\",defaultValue:\"#CCCCCC\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#000000\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AnimatedShapes\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerSupportedLayoutWidth\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AnimatedShapes.map","// Animated blurry particles background with multi color options and transparent background\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useRef,useEffect,useState,useMemo}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";const defaultColors=[\"#FF6B6B\",\"#FFD93D\",\"#6BCB77\",\"#4D96FF\",\"#A66CFF\"];function randomBetween(a,b){return a+Math.random()*(b-a);}// Detect if browser is Safari\nfunction isSafari(){if(typeof window===\"undefined\")return false;const ua=navigator.userAgent.toLowerCase();return ua.indexOf(\"safari\")!==-1&&ua.indexOf(\"chrome\")===-1;}function createParticle(width,height,colors,minRadius,maxRadius,blur,randomRadius,minOpacity,maxOpacity,safariRadiusMultiplier=1){const color=colors[Math.floor(Math.random()*colors.length)];const baseR=randomRadius?randomBetween(minRadius,maxRadius):(minRadius+maxRadius)/2;const r=isSafari()?baseR*safariRadiusMultiplier:baseR;const targetAlpha=randomBetween(minOpacity,maxOpacity);return{x:randomBetween(0,width),y:randomBetween(0,height),r,dx:randomBetween(-.2,.2),dy:randomBetween(-.2,.2),color,blur,alpha:isSafari()?0:targetAlpha,targetAlpha};}// Pre-render particle with blur to offscreen canvas for better performance\nfunction createParticleCanvas(particle,existingCanvas=null){const safari=isSafari();if(safari){// Safari: use radial gradient for smooth blur effect\nconst padding=particle.blur*1.5;const size=particle.r*2+padding*2;const canvas=existingCanvas||document.createElement(\"canvas\");canvas.width=size;canvas.height=size;const ctx=canvas.getContext(\"2d\",{alpha:true,willReadFrequently:false});ctx.clearRect(0,0,size,size);// Create radial gradient for smooth blur\nconst gradient=ctx.createRadialGradient(size/2,size/2,0,size/2,size/2,particle.r+padding);gradient.addColorStop(0,particle.color);gradient.addColorStop(.4,particle.color);gradient.addColorStop(1,particle.color.replace(\")\",\", 0)\").replace(\"rgb\",\"rgba\").replace(\"#\",\"rgba(\"));ctx.fillStyle=gradient;ctx.beginPath();ctx.arc(size/2,size/2,particle.r+padding,0,Math.PI*2);ctx.fill();return{canvas,offset:size/2};}else{// Other browsers: use blur filter\nconst padding=particle.blur*2;const size=particle.r*2+padding*2;const canvas=existingCanvas||document.createElement(\"canvas\");canvas.width=size;canvas.height=size;const ctx=canvas.getContext(\"2d\",{alpha:true,willReadFrequently:false});ctx.clearRect(0,0,size,size);ctx.filter=`blur(${particle.blur}px)`;ctx.fillStyle=particle.color;ctx.beginPath();ctx.arc(size/2,size/2,particle.r,0,Math.PI*2);ctx.fill();return{canvas,offset:size/2};}}/**\n * Animated blurry particles background with multi color options and transparent background\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function ParticlesBackground(props){const{particleCount=12,colors=defaultColors,animationSpeed=1,style,safariBlurMultiplier=1.5,safariRadiusMultiplier=.5}=props;const isStatic=useIsStaticRenderer();const canvasRef=useRef(null);const[size,setSize]=useState({width:600,height:400});const animationRef=useRef(null);const particlesRef=useRef([]);const particleCanvasesRef=useRef([]);const lastPropsRef=useRef({minRadius:props.minRadius,maxRadius:props.maxRadius,blur:props.blur,randomRadius:props.randomRadius,minOpacity:props.minOpacity,maxOpacity:props.maxOpacity});// Memoize particles so they're not recreated on every render\nconst particles=useMemo(()=>{const effectiveBlur=isSafari()?props.blur*safariBlurMultiplier:props.blur;return Array.from({length:particleCount},()=>createParticle(size.width,size.height,colors.length?colors:defaultColors,props.minRadius,props.maxRadius,effectiveBlur,props.randomRadius,props.minOpacity,props.maxOpacity,safariRadiusMultiplier));// eslint-disable-next-line\n},[particleCount,size.width,size.height,colors.join(\",\"),props.minRadius,props.maxRadius,props.blur,props.randomRadius,props.minOpacity,props.maxOpacity,safariBlurMultiplier,safariRadiusMultiplier]);// Update size on mount and when style changes\nuseEffect(()=>{const width=style?.width&&typeof style.width===\"number\"?style.width:600;const height=style?.height&&typeof style.height===\"number\"?style.height:400;setSize({width,height});},[style]);// Animation loop\nuseEffect(()=>{if(isStatic)return;const effectiveBlur=isSafari()?props.blur*safariBlurMultiplier:props.blur;// Initialize particles and pre-render them\nparticlesRef.current=particles.map(p=>({...p}));particleCanvasesRef.current=particlesRef.current.map(p=>createParticleCanvas(p));// Store current props for comparison\nlastPropsRef.current={minRadius:props.minRadius,maxRadius:props.maxRadius,blur:props.blur,randomRadius:props.randomRadius,minOpacity:props.minOpacity,maxOpacity:props.maxOpacity};const canvas=canvasRef.current;const ctx=canvas?.getContext(\"2d\",{alpha:true,desynchronized:true,willReadFrequently:false});if(!ctx)return;const moveAmount=props.speed??1;let lastTime=performance.now();function animate(currentTime){const deltaTime=(currentTime-lastTime)/16.67// Normalize to 60fps\n;lastTime=currentTime;ctx.clearRect(0,0,size.width,size.height);// Sort particles by alpha for batching (reduces globalAlpha changes)\nconst sortedIndices=particlesRef.current.map((p,i)=>({alpha:p.alpha,index:i})).sort((a,b)=>a.alpha-b.alpha);let currentAlpha=-1;for(let{alpha,index:i}of sortedIndices){const p=particlesRef.current[i];const{canvas:pCanvas,offset}=particleCanvasesRef.current[i];// Only change globalAlpha when needed\nif(currentAlpha!==p.alpha){ctx.globalAlpha=p.alpha;currentAlpha=p.alpha;}// Draw pre-rendered particle\nctx.drawImage(pCanvas,p.x-offset,p.y-offset);// Smooth alpha transition on Safari\nif(isSafari()&&p.alpha!==p.targetAlpha){const alphaSpeed=.02*deltaTime;if(Math.abs(p.targetAlpha-p.alpha)<alphaSpeed){p.alpha=p.targetAlpha;}else{p.alpha+=p.alpha<p.targetAlpha?alphaSpeed:-alphaSpeed;}}// Move with delta time for consistent speed\np.x+=p.dx*moveAmount*deltaTime;p.y+=p.dy*moveAmount*deltaTime;// If out of bounds, regenerate particle\nif(p.x<-p.r||p.x>size.width+p.r||p.y<-p.r||p.y>size.height+p.r){// Place new particle at a random edge\nconst edge=Math.floor(Math.random()*4);if(edge===0){p.x=-p.r;p.y=randomBetween(0,size.height);}else if(edge===1){p.x=size.width+p.r;p.y=randomBetween(0,size.height);}else if(edge===2){p.x=randomBetween(0,size.width);p.y=-p.r;}else{p.x=randomBetween(0,size.width);p.y=size.height+p.r;}// Update particle properties in place\np.color=colors.length?colors[Math.floor(Math.random()*colors.length)]:defaultColors[Math.floor(Math.random()*defaultColors.length)];p.dx=randomBetween(-.2,.2);p.dy=randomBetween(-.2,.2);p.alpha=randomBetween(props.minOpacity,props.maxOpacity);p.targetAlpha=randomBetween(props.minOpacity,props.maxOpacity);// Fade in on Safari\nif(isSafari()){p.alpha=0;}else{p.alpha=p.targetAlpha;}// Only regenerate radius and canvas if size properties changed\nconst propsChanged=lastPropsRef.current.minRadius!==props.minRadius||lastPropsRef.current.maxRadius!==props.maxRadius||lastPropsRef.current.blur!==props.blur||lastPropsRef.current.randomRadius!==props.randomRadius;if(propsChanged){const baseR=props.randomRadius?randomBetween(props.minRadius,props.maxRadius):(props.minRadius+props.maxRadius)/2;p.r=isSafari()?baseR*safariRadiusMultiplier:baseR;p.blur=effectiveBlur;// Reuse existing canvas\nparticleCanvasesRef.current[i]=createParticleCanvas(p,particleCanvasesRef.current[i].canvas);}else{// Just re-render with new color on existing canvas\nparticleCanvasesRef.current[i]=createParticleCanvas(p,particleCanvasesRef.current[i].canvas);}}}// Reset globalAlpha\nctx.globalAlpha=1;animationRef.current=requestAnimationFrame(animate);}animationRef.current=requestAnimationFrame(animate);return()=>{if(animationRef.current){cancelAnimationFrame(animationRef.current);}};},[particles,size.width,size.height,isStatic,props.speed,props.minRadius,props.maxRadius,props.blur,props.randomRadius,props.minOpacity,props.maxOpacity,colors,safariBlurMultiplier]);// Static preview\nuseEffect(()=>{if(!isStatic)return;const ctx=canvasRef.current?.getContext(\"2d\",{alpha:true});if(!ctx)return;ctx.clearRect(0,0,size.width,size.height);for(let p of particles){ctx.save();ctx.globalAlpha=p.alpha;ctx.filter=`blur(${p.blur}px)`;ctx.beginPath();ctx.arc(p.x,p.y,p.r,0,2*Math.PI);ctx.fillStyle=p.color;ctx.fill();ctx.restore();}},[particles,size.width,size.height,isStatic]);return /*#__PURE__*/_jsx(\"div\",{style:{...style,width:\"100%\",height:\"100%\",position:\"relative\",overflow:\"hidden\",background:\"transparent\"},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,width:size.width,height:size.height,style:{width:\"100%\",height:\"100%\",display:\"block\",background:\"transparent\"},\"aria-hidden\":\"true\"})});}addPropertyControls(ParticlesBackground,{particleCount:{type:ControlType.Number,title:\"Particles\",defaultValue:12,min:3,max:40,step:1,displayStepper:true},colors:{type:ControlType.Array,title:\"Colors\",control:{type:ControlType.Color,defaultValue:\"#FF6B6B\"},defaultValue:defaultColors,maxCount:8},speed:{type:ControlType.Number,title:\"Speed\",defaultValue:20,min:0,max:100,step:1,displayStepper:true},randomRadius:{type:ControlType.Boolean,title:\"Random Size\",defaultValue:true,enabledTitle:\"Random\",disabledTitle:\"Fixed\"},minRadius:{type:ControlType.Number,title:\"Min Radius\",defaultValue:40,min:10,max:200,step:1,displayStepper:true},maxRadius:{type:ControlType.Number,title:\"Max Radius\",defaultValue:100,min:10,max:300,step:1,displayStepper:true},blur:{type:ControlType.Number,title:\"Blur\",defaultValue:40,min:0,max:120,step:1,displayStepper:true},minOpacity:{type:ControlType.Number,title:\"Min Opacity\",defaultValue:.25,min:0,max:1,step:.05,displayStepper:true},maxOpacity:{type:ControlType.Number,title:\"Max Opacity\",defaultValue:.7,min:0,max:1,step:.05,displayStepper:true},safariBlurMultiplier:{type:ControlType.Number,title:\"Safari Blur \\xd7\",defaultValue:4,min:1,max:10,step:.1,displayStepper:true},safariRadiusMultiplier:{type:ControlType.Number,title:\"Safari Size \\xd7\",defaultValue:.5,min:.1,max:2,step:.1,displayStepper:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ParticlesBackground\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ParticlesBackground.map","// Fluid splash cursor with WebGL fluid simulation and color picker\nfunction _define_property(obj,key,value1){if(key in obj){Object.defineProperty(obj,key,{value:value1,enumerable:true,configurable:true,writable:true});}else{obj[key]=value1;}return obj;}import{jsx as _jsx,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * Fluid Splash Cursor\n * \n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function SplashCursor(props){return /*#__PURE__*/_jsx(_Fragment,{children:/*#__PURE__*/_jsx(SplashCursorMain,{...props})});}addPropertyControls(SplashCursor,{SPLASH_COLOR:{type:ControlType.Color,title:\"Splash Color\",defaultValue:\"#00EAB7\"},RAINBOW_MODE:{type:ControlType.Boolean,title:\"Rainbow Mode\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},SIM_RESOLUTION:{type:ControlType.Number,defaultValue:128,title:\"Simulation Resolution\",min:32,max:512,step:32},DYE_RESOLUTION:{type:ControlType.Number,defaultValue:1440,title:\"Dye Resolution\",min:512,max:2048,step:128},CAPTURE_RESOLUTION:{type:ControlType.Number,defaultValue:512,title:\"Capture Resolution\",min:128,max:1024,step:128},DENSITY_DISSIPATION:{type:ControlType.Number,defaultValue:3.5,title:\"Density Dissipation\",min:0,max:10,step:.1},VELOCITY_DISSIPATION:{type:ControlType.Number,defaultValue:2,title:\"Velocity Dissipation\",min:0,max:10,step:.1},PRESSURE:{type:ControlType.Number,defaultValue:.1,title:\"Pressure\",min:0,max:1,step:.01},PRESSURE_ITERATIONS:{type:ControlType.Number,defaultValue:20,title:\"Pressure Iterations\",min:1,max:50,step:1},CURL:{type:ControlType.Number,defaultValue:3,title:\"Curl\",min:0,max:50,step:1},SPLAT_RADIUS:{type:ControlType.Number,defaultValue:.2,title:\"Splat Radius\",min:.01,max:1,step:.01},SPLAT_FORCE:{type:ControlType.Number,defaultValue:6e3,title:\"Splat Force\",min:1e3,max:2e4,step:100},SHADING:{type:ControlType.Boolean,defaultValue:true,title:\"Enable Shading\",enabledTitle:\"Enabled\",disabledTitle:\"Disabled\"},COLOR_UPDATE_SPEED:{type:ControlType.Number,defaultValue:10,title:\"Color Update Speed\",min:1,max:100,step:1},BACK_COLOR:{type:ControlType.Color,defaultValue:\"rgba(0, 0, 0, 0)\",title:\"Background Color\"},TRANSPARENT:{type:ControlType.Boolean,defaultValue:true,title:\"Transparent Background\",enabledTitle:\"Yes\",disabledTitle:\"No\"}});function SplashCursorMain({SIM_RESOLUTION=128,DYE_RESOLUTION=1440,CAPTURE_RESOLUTION=512,DENSITY_DISSIPATION=3.5,VELOCITY_DISSIPATION=2,PRESSURE=.1,PRESSURE_ITERATIONS=20,CURL=3,SPLAT_RADIUS=.2,SPLAT_FORCE=6e3,SHADING=true,COLOR_UPDATE_SPEED=10,BACK_COLOR=\"rgba(0, 0, 0, 0)\",TRANSPARENT=true,SPLASH_COLOR=\"#A855F7\",RAINBOW_MODE=false}){const canvasRef=useRef(null);const colorRef=useRef(hexToRgb(SPLASH_COLOR));const rainbowModeRef=useRef(RAINBOW_MODE);// Update color ref when SPLASH_COLOR prop changes\nuseEffect(()=>{colorRef.current=hexToRgb(SPLASH_COLOR);},[SPLASH_COLOR]);// Update rainbow mode ref when RAINBOW_MODE prop changes\nuseEffect(()=>{rainbowModeRef.current=RAINBOW_MODE;},[RAINBOW_MODE]);function hexToRgb(hex){// Handle rgba format\nif(hex.startsWith(\"rgba\")){const match=hex.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*[\\d.]+)?\\)/);if(match){return{r:parseInt(match[1])/255,g:parseInt(match[2])/255,b:parseInt(match[3])/255};}}// Handle hex format\nconst result=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);return result?{r:parseInt(result[1],16)/255,g:parseInt(result[2],16)/255,b:parseInt(result[3],16)/255}:{r:0,g:.918,b:.718};}useEffect(()=>{const canvas=canvasRef.current;if(!canvas)return;function pointerPrototype(){this.id=-1;this.texcoordX=0;this.texcoordY=0;this.prevTexcoordX=0;this.prevTexcoordY=0;this.deltaX=0;this.deltaY=0;this.down=false;this.moved=false;this.color=[0,0,0];}let config={SIM_RESOLUTION,DYE_RESOLUTION,CAPTURE_RESOLUTION,DENSITY_DISSIPATION,VELOCITY_DISSIPATION,PRESSURE,PRESSURE_ITERATIONS,CURL,SPLAT_RADIUS,SPLAT_FORCE,SHADING,COLOR_UPDATE_SPEED,PAUSED:false,BACK_COLOR:hexToRgb(BACK_COLOR),TRANSPARENT};let pointers=[new pointerPrototype];const{gl,ext}=getWebGLContext(canvas);if(!ext.supportLinearFiltering){config.DYE_RESOLUTION=256;config.SHADING=false;}function hexToRgb(hex){// Handle rgba format\nif(hex.startsWith(\"rgba\")){const match=hex.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*[\\d.]+)?\\)/);if(match){return{r:parseInt(match[1])/255,g:parseInt(match[2])/255,b:parseInt(match[3])/255};}}// Handle hex format\nconst result=/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);return result?{r:parseInt(result[1],16)/255,g:parseInt(result[2],16)/255,b:parseInt(result[3],16)/255}:{r:0,g:.918,b:.718};}function getWebGLContext(canvas){const params={alpha:true,depth:false,stencil:false,antialias:false,preserveDrawingBuffer:false};let gl=canvas.getContext(\"webgl2\",params);const isWebGL2=!!gl;if(!isWebGL2)gl=canvas.getContext(\"webgl\",params)||canvas.getContext(\"experimental-webgl\",params);if(!gl)throw new Error(\"WebGL not supported\");let halfFloat;let supportLinearFiltering;if(isWebGL2){gl.getExtension(\"EXT_color_buffer_float\");supportLinearFiltering=gl.getExtension(\"OES_texture_float_linear\");}else{halfFloat=gl.getExtension(\"OES_texture_half_float\");supportLinearFiltering=gl.getExtension(\"OES_texture_half_float_linear\");}gl.clearColor(0,0,0,1);const halfFloatTexType=isWebGL2?gl.HALF_FLOAT:halfFloat&&halfFloat.HALF_FLOAT_OES;let formatRGBA;let formatRG;let formatR;if(isWebGL2){const gl2=gl;formatRGBA=getSupportedFormat(gl,gl2.RGBA16F,gl.RGBA,halfFloatTexType);formatRG=getSupportedFormat(gl,gl2.RG16F,gl2.RG,halfFloatTexType);formatR=getSupportedFormat(gl,gl2.R16F,gl2.RED,halfFloatTexType);}else{formatRGBA=getSupportedFormat(gl,gl.RGBA,gl.RGBA,halfFloatTexType);formatRG=getSupportedFormat(gl,gl.RGBA,gl.RGBA,halfFloatTexType);formatR=getSupportedFormat(gl,gl.RGBA,gl.RGBA,halfFloatTexType);}return{gl,ext:{formatRGBA,formatRG,formatR,halfFloatTexType,supportLinearFiltering}};}function getSupportedFormat(gl,internalFormat,format,type){if(!supportRenderTextureFormat(gl,internalFormat,format,type)){switch(internalFormat){case gl.R16F:return getSupportedFormat(gl,gl.RG16F,gl.RG,type);case gl.RG16F:return getSupportedFormat(gl,gl.RGBA16F,gl.RGBA,type);default:return null;}}return{internalFormat,format};}function supportRenderTextureFormat(gl,internalFormat,format,type){const texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.texImage2D(gl.TEXTURE_2D,0,internalFormat,4,4,0,format,type,null);const fbo=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,fbo);gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);const status=gl.checkFramebufferStatus(gl.FRAMEBUFFER);return status===gl.FRAMEBUFFER_COMPLETE;}class Material{setKeywords(keywords){let hash=0;for(let i=0;i<keywords.length;i++)hash+=hashCode(keywords[i]);let program=this.programs[hash];if(program==null){let fragmentShader=compileShader(gl.FRAGMENT_SHADER,this.fragmentShaderSource,keywords);program=createProgram(this.vertexShader,fragmentShader);this.programs[hash]=program;}if(program===this.activeProgram)return;this.uniforms=getUniforms(program);this.activeProgram=program;}bind(){gl.useProgram(this.activeProgram);}constructor(vertexShader,fragmentShaderSource){_define_property(this,\"vertexShader\",void 0);_define_property(this,\"fragmentShaderSource\",void 0);_define_property(this,\"programs\",void 0);_define_property(this,\"activeProgram\",void 0);_define_property(this,\"uniforms\",void 0);this.vertexShader=vertexShader;this.fragmentShaderSource=fragmentShaderSource;this.programs=[];this.activeProgram=null;this.uniforms={};}}class Program{bind(){gl.useProgram(this.program);}constructor(vertexShader,fragmentShader){_define_property(this,\"uniforms\",void 0);_define_property(this,\"program\",void 0);this.uniforms={};this.program=createProgram(vertexShader,fragmentShader);this.uniforms=getUniforms(this.program);}}function createProgram(vertexShader,fragmentShader){let program=gl.createProgram();gl.attachShader(program,vertexShader);gl.attachShader(program,fragmentShader);gl.linkProgram(program);if(!gl.getProgramParameter(program,gl.LINK_STATUS))console.trace(gl.getProgramInfoLog(program));return program;}function getUniforms(program){let uniforms={};let uniformCount=gl.getProgramParameter(program,gl.ACTIVE_UNIFORMS);for(let i=0;i<uniformCount;i++){let uniformName=gl.getActiveUniform(program,i).name;uniforms[uniformName]=gl.getUniformLocation(program,uniformName);}return uniforms;}function compileShader(type,source,keywords){source=addKeywords(source,keywords);const shader=gl.createShader(type);gl.shaderSource(shader,source);gl.compileShader(shader);if(!gl.getShaderParameter(shader,gl.COMPILE_STATUS))console.trace(gl.getShaderInfoLog(shader));return shader;}function addKeywords(source,keywords){if(!keywords)return source;let keywordsString=\"\";keywords.forEach(keyword=>{keywordsString+=\"#define \"+keyword+\"\\n\";});return keywordsString+source;}const baseVertexShader=compileShader(gl.VERTEX_SHADER,`\n        precision highp float;\n        attribute vec2 aPosition;\n        varying vec2 vUv;\n        varying vec2 vL;\n        varying vec2 vR;\n        varying vec2 vT;\n        varying vec2 vB;\n        uniform vec2 texelSize;\n\n        void main () {\n            vUv = aPosition * 0.5 + 0.5;\n            vL = vUv - vec2(texelSize.x, 0.0);\n            vR = vUv + vec2(texelSize.x, 0.0);\n            vT = vUv + vec2(0.0, texelSize.y);\n            vB = vUv - vec2(0.0, texelSize.y);\n            gl_Position = vec4(aPosition, 0.0, 1.0);\n        }\n      `);const copyShader=compileShader(gl.FRAGMENT_SHADER,`\n        precision mediump float;\n        precision mediump sampler2D;\n        varying highp vec2 vUv;\n        uniform sampler2D uTexture;\n\n        void main () {\n            gl_FragColor = texture2D(uTexture, vUv);\n        }\n      `);const clearShader=compileShader(gl.FRAGMENT_SHADER,`\n        precision mediump float;\n        precision mediump sampler2D;\n        varying highp vec2 vUv;\n        uniform sampler2D uTexture;\n        uniform float value;\n\n        void main () {\n            gl_FragColor = value * texture2D(uTexture, vUv);\n        }\n      `);const displayShaderSource=`\n      precision highp float;\n      precision highp sampler2D;\n      varying vec2 vUv;\n      varying vec2 vL;\n      varying vec2 vR;\n      varying vec2 vT;\n      varying vec2 vB;\n      uniform sampler2D uTexture;\n      uniform sampler2D uDithering;\n      uniform vec2 ditherScale;\n      uniform vec2 texelSize;\n\n      vec3 linearToGamma (vec3 color) {\n          color = max(color, vec3(0));\n          return max(1.055 * pow(color, vec3(0.416666667)) - 0.055, vec3(0));\n      }\n\n      void main () {\n          vec3 c = texture2D(uTexture, vUv).rgb;\n          #ifdef SHADING\n              vec3 lc = texture2D(uTexture, vL).rgb;\n              vec3 rc = texture2D(uTexture, vR).rgb;\n              vec3 tc = texture2D(uTexture, vT).rgb;\n              vec3 bc = texture2D(uTexture, vB).rgb;\n\n              float dx = length(rc) - length(lc);\n              float dy = length(tc) - length(bc);\n\n              vec3 n = normalize(vec3(dx, dy, length(texelSize)));\n              vec3 l = vec3(0.0, 0.0, 1.0);\n\n              float diffuse = clamp(dot(n, l) + 0.7, 0.7, 1.0);\n              c *= diffuse;\n          #endif\n\n          float a = max(c.r, max(c.g, c.b));\n          gl_FragColor = vec4(c, a);\n      }\n    `;const splatShader=compileShader(gl.FRAGMENT_SHADER,`\n        precision highp float;\n        precision highp sampler2D;\n        varying vec2 vUv;\n        uniform sampler2D uTarget;\n        uniform float aspectRatio;\n        uniform vec3 color;\n        uniform vec2 point;\n        uniform float radius;\n\n        void main () {\n            vec2 p = vUv - point.xy;\n            p.x *= aspectRatio;\n            vec3 splat = exp(-dot(p, p) / radius) * color;\n            vec3 base = texture2D(uTarget, vUv).xyz;\n            gl_FragColor = vec4(base + splat, 1.0);\n        }\n      `);const advectionShader=compileShader(gl.FRAGMENT_SHADER,`\n        precision highp float;\n        precision highp sampler2D;\n        varying vec2 vUv;\n        uniform sampler2D uVelocity;\n        uniform sampler2D uSource;\n        uniform vec2 texelSize;\n        uniform vec2 dyeTexelSize;\n        uniform float dt;\n        uniform float dissipation;\n\n        vec4 bilerp (sampler2D sam, vec2 uv, vec2 tsize) {\n            vec2 st = uv / tsize - 0.5;\n            vec2 iuv = floor(st);\n            vec2 fuv = fract(st);\n\n            vec4 a = texture2D(sam, (iuv + vec2(0.5, 0.5)) * tsize);\n            vec4 b = texture2D(sam, (iuv + vec2(1.5, 0.5)) * tsize);\n            vec4 c = texture2D(sam, (iuv + vec2(0.5, 1.5)) * tsize);\n            vec4 d = texture2D(sam, (iuv + vec2(1.5, 1.5)) * tsize);\n\n            return mix(mix(a, b, fuv.x), mix(c, d, fuv.x), fuv.y);\n        }\n\n        void main () {\n            #ifdef MANUAL_FILTERING\n                vec2 coord = vUv - dt * bilerp(uVelocity, vUv, texelSize).xy * texelSize;\n                vec4 result = bilerp(uSource, coord, dyeTexelSize);\n            #else\n                vec2 coord = vUv - dt * texture2D(uVelocity, vUv).xy * texelSize;\n                vec4 result = texture2D(uSource, coord);\n            #endif\n            float decay = 1.0 + dissipation * dt;\n            gl_FragColor = result / decay;\n        }\n      `,ext.supportLinearFiltering?undefined:[\"MANUAL_FILTERING\"]);const divergenceShader=compileShader(gl.FRAGMENT_SHADER,`\n        precision mediump float;\n        precision mediump sampler2D;\n        varying highp vec2 vUv;\n        varying highp vec2 vL;\n        varying highp vec2 vR;\n        varying highp vec2 vT;\n        varying highp vec2 vB;\n        uniform sampler2D uVelocity;\n\n        void main () {\n            float L = texture2D(uVelocity, vL).x;\n            float R = texture2D(uVelocity, vR).x;\n            float T = texture2D(uVelocity, vT).y;\n            float B = texture2D(uVelocity, vB).y;\n\n            vec2 C = texture2D(uVelocity, vUv).xy;\n            if (vL.x < 0.0) { L = -C.x; }\n            if (vR.x > 1.0) { R = -C.x; }\n            if (vT.y > 1.0) { T = -C.y; }\n            if (vB.y < 0.0) { B = -C.y; }\n\n            float div = 0.5 * (R - L + T - B);\n            gl_FragColor = vec4(div, 0.0, 0.0, 1.0);\n        }\n      `);const curlShader=compileShader(gl.FRAGMENT_SHADER,`\n        precision mediump float;\n        precision mediump sampler2D;\n        varying highp vec2 vUv;\n        varying highp vec2 vL;\n        varying highp vec2 vR;\n        varying highp vec2 vT;\n        varying highp vec2 vB;\n        uniform sampler2D uVelocity;\n\n        void main () {\n            float L = texture2D(uVelocity, vL).y;\n            float R = texture2D(uVelocity, vR).y;\n            float T = texture2D(uVelocity, vT).x;\n            float B = texture2D(uVelocity, vB).x;\n            float vorticity = R - L - T + B;\n            gl_FragColor = vec4(0.5 * vorticity, 0.0, 0.0, 1.0);\n        }\n      `);const vorticityShader=compileShader(gl.FRAGMENT_SHADER,`\n        precision highp float;\n        precision highp sampler2D;\n        varying vec2 vUv;\n        varying vec2 vL;\n        varying vec2 vR;\n        varying vec2 vT;\n        varying vec2 vB;\n        uniform sampler2D uVelocity;\n        uniform sampler2D uCurl;\n        uniform float curl;\n        uniform float dt;\n\n        void main () {\n            float L = texture2D(uCurl, vL).x;\n            float R = texture2D(uCurl, vR).x;\n            float T = texture2D(uCurl, vT).x;\n            float B = texture2D(uCurl, vB).x;\n            float C = texture2D(uCurl, vUv).x;\n\n            vec2 force = 0.5 * vec2(abs(T) - abs(B), abs(R) - abs(L));\n            force /= length(force) + 0.0001;\n            force *= curl * C;\n            force.y *= -1.0;\n\n            vec2 velocity = texture2D(uVelocity, vUv).xy;\n            velocity += force * dt;\n            velocity = min(max(velocity, -1000.0), 1000.0);\n            gl_FragColor = vec4(velocity, 0.0, 1.0);\n        }\n      `);const pressureShader=compileShader(gl.FRAGMENT_SHADER,`\n        precision mediump float;\n        precision mediump sampler2D;\n        varying highp vec2 vUv;\n        varying highp vec2 vL;\n        varying highp vec2 vR;\n        varying highp vec2 vT;\n        varying highp vec2 vB;\n        uniform sampler2D uPressure;\n        uniform sampler2D uDivergence;\n\n        void main () {\n            float L = texture2D(uPressure, vL).x;\n            float R = texture2D(uPressure, vR).x;\n            float T = texture2D(uPressure, vT).x;\n            float B = texture2D(uPressure, vB).x;\n            float C = texture2D(uPressure, vUv).x;\n            float divergence = texture2D(uDivergence, vUv).x;\n            float pressure = (L + R + B + T - divergence) * 0.25;\n            gl_FragColor = vec4(pressure, 0.0, 0.0, 1.0);\n        }\n      `);const gradientSubtractShader=compileShader(gl.FRAGMENT_SHADER,`\n        precision mediump float;\n        precision mediump sampler2D;\n        varying highp vec2 vUv;\n        varying highp vec2 vL;\n        varying highp vec2 vR;\n        varying highp vec2 vT;\n        varying highp vec2 vB;\n        uniform sampler2D uPressure;\n        uniform sampler2D uVelocity;\n\n        void main () {\n            float L = texture2D(uPressure, vL).x;\n            float R = texture2D(uPressure, vR).x;\n            float T = texture2D(uPressure, vT).x;\n            float B = texture2D(uPressure, vB).x;\n            vec2 velocity = texture2D(uVelocity, vUv).xy;\n            velocity.xy -= vec2(R - L, T - B);\n            gl_FragColor = vec4(velocity, 0.0, 1.0);\n        }\n      `);const blit=(()=>{gl.bindBuffer(gl.ARRAY_BUFFER,gl.createBuffer());gl.bufferData(gl.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,1,1,1,-1]),gl.STATIC_DRAW);gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,gl.createBuffer());gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),gl.STATIC_DRAW);gl.vertexAttribPointer(0,2,gl.FLOAT,false,0,0);gl.enableVertexAttribArray(0);return(target,clear=false)=>{if(target==null){gl.viewport(0,0,gl.drawingBufferWidth,gl.drawingBufferHeight);gl.bindFramebuffer(gl.FRAMEBUFFER,null);}else{gl.viewport(0,0,target.width,target.height);gl.bindFramebuffer(gl.FRAMEBUFFER,target.fbo);}if(clear){gl.clearColor(0,0,0,1);gl.clear(gl.COLOR_BUFFER_BIT);}gl.drawElements(gl.TRIANGLES,6,gl.UNSIGNED_SHORT,0);};})();let dye,velocity,divergence,curl,pressure;const copyProgram=new Program(baseVertexShader,copyShader);const clearProgram=new Program(baseVertexShader,clearShader);const splatProgram=new Program(baseVertexShader,splatShader);const advectionProgram=new Program(baseVertexShader,advectionShader);const divergenceProgram=new Program(baseVertexShader,divergenceShader);const curlProgram=new Program(baseVertexShader,curlShader);const vorticityProgram=new Program(baseVertexShader,vorticityShader);const pressureProgram=new Program(baseVertexShader,pressureShader);const gradienSubtractProgram=new Program(baseVertexShader,gradientSubtractShader);const displayMaterial=new Material(baseVertexShader,displayShaderSource);function initFramebuffers(){let simRes=getResolution(config.SIM_RESOLUTION);let dyeRes=getResolution(config.DYE_RESOLUTION);const texType=ext.halfFloatTexType;const rgba=ext.formatRGBA;const rg=ext.formatRG;const r=ext.formatR;const filtering=ext.supportLinearFiltering?gl.LINEAR:gl.NEAREST;gl.disable(gl.BLEND);if(!dye)dye=createDoubleFBO(dyeRes.width,dyeRes.height,rgba.internalFormat,rgba.format,texType,filtering);else dye=resizeDoubleFBO(dye,dyeRes.width,dyeRes.height,rgba.internalFormat,rgba.format,texType,filtering);if(!velocity)velocity=createDoubleFBO(simRes.width,simRes.height,rg.internalFormat,rg.format,texType,filtering);else velocity=resizeDoubleFBO(velocity,simRes.width,simRes.height,rg.internalFormat,rg.format,texType,filtering);divergence=createFBO(simRes.width,simRes.height,r.internalFormat,r.format,texType,gl.NEAREST);curl=createFBO(simRes.width,simRes.height,r.internalFormat,r.format,texType,gl.NEAREST);pressure=createDoubleFBO(simRes.width,simRes.height,r.internalFormat,r.format,texType,gl.NEAREST);}function createFBO(w,h,internalFormat,format,type,param){gl.activeTexture(gl.TEXTURE0);let texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,param);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,param);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.texImage2D(gl.TEXTURE_2D,0,internalFormat,w,h,0,format,type,null);let fbo=gl.createFramebuffer();gl.bindFramebuffer(gl.FRAMEBUFFER,fbo);gl.framebufferTexture2D(gl.FRAMEBUFFER,gl.COLOR_ATTACHMENT0,gl.TEXTURE_2D,texture,0);gl.viewport(0,0,w,h);gl.clear(gl.COLOR_BUFFER_BIT);let texelSizeX=1/w;let texelSizeY=1/h;return{texture,fbo,width:w,height:h,texelSizeX,texelSizeY,attach(id){gl.activeTexture(gl.TEXTURE0+id);gl.bindTexture(gl.TEXTURE_2D,texture);return id;}};}function createDoubleFBO(w,h,internalFormat,format,type,param){let fbo1=createFBO(w,h,internalFormat,format,type,param);let fbo2=createFBO(w,h,internalFormat,format,type,param);return{width:w,height:h,texelSizeX:fbo1.texelSizeX,texelSizeY:fbo1.texelSizeY,get read(){return fbo1;},set read(value){fbo1=value;},get write(){return fbo2;},set write(value){fbo2=value;},swap(){let temp=fbo1;fbo1=fbo2;fbo2=temp;}};}function resizeFBO(target,w,h,internalFormat,format,type,param){let newFBO=createFBO(w,h,internalFormat,format,type,param);copyProgram.bind();gl.uniform1i(copyProgram.uniforms.uTexture,target.attach(0));blit(newFBO);return newFBO;}function resizeDoubleFBO(target,w,h,internalFormat,format,type,param){if(target.width===w&&target.height===h)return target;target.read=resizeFBO(target.read,w,h,internalFormat,format,type,param);target.write=createFBO(w,h,internalFormat,format,type,param);target.width=w;target.height=h;target.texelSizeX=1/w;target.texelSizeY=1/h;return target;}function updateKeywords(){let displayKeywords=[];if(config.SHADING)displayKeywords.push(\"SHADING\");displayMaterial.setKeywords(displayKeywords);}updateKeywords();initFramebuffers();let lastUpdateTime=Date.now();let colorUpdateTimer=0;function updateFrame(){const dt=calcDeltaTime();if(resizeCanvas())initFramebuffers();updateColors(dt);applyInputs();step(dt);render(null);requestAnimationFrame(updateFrame);}function calcDeltaTime(){let now=Date.now();let dt=(now-lastUpdateTime)/1e3;dt=Math.min(dt,.016666);lastUpdateTime=now;return dt;}function updateColors(dt){if(!rainbowModeRef.current)return;colorUpdateTimer+=dt*config.COLOR_UPDATE_SPEED;if(colorUpdateTimer>=1){colorUpdateTimer=wrap(colorUpdateTimer,0,1);pointers.forEach(p=>{p.color=generateColor();});}}function resizeCanvas(){let width=scaleByPixelRatio(canvas.clientWidth);let height=scaleByPixelRatio(canvas.clientHeight);if(canvas.width!==width||canvas.height!==height){canvas.width=width;canvas.height=height;return true;}return false;}function applyInputs(){pointers.forEach(p=>{if(p.moved){p.moved=false;splatPointer(p);}});}function step(dt){gl.disable(gl.BLEND);// Curl\ncurlProgram.bind();gl.uniform2f(curlProgram.uniforms.texelSize,velocity.texelSizeX,velocity.texelSizeY);gl.uniform1i(curlProgram.uniforms.uVelocity,velocity.read.attach(0));blit(curl);// Vorticity\nvorticityProgram.bind();gl.uniform2f(vorticityProgram.uniforms.texelSize,velocity.texelSizeX,velocity.texelSizeY);gl.uniform1i(vorticityProgram.uniforms.uVelocity,velocity.read.attach(0));gl.uniform1i(vorticityProgram.uniforms.uCurl,curl.attach(1));gl.uniform1f(vorticityProgram.uniforms.curl,config.CURL);gl.uniform1f(vorticityProgram.uniforms.dt,dt);blit(velocity.write);velocity.swap();// Divergence\ndivergenceProgram.bind();gl.uniform2f(divergenceProgram.uniforms.texelSize,velocity.texelSizeX,velocity.texelSizeY);gl.uniform1i(divergenceProgram.uniforms.uVelocity,velocity.read.attach(0));blit(divergence);// Clear pressure\nclearProgram.bind();gl.uniform1i(clearProgram.uniforms.uTexture,pressure.read.attach(0));gl.uniform1f(clearProgram.uniforms.value,config.PRESSURE);blit(pressure.write);pressure.swap();// Pressure\npressureProgram.bind();gl.uniform2f(pressureProgram.uniforms.texelSize,velocity.texelSizeX,velocity.texelSizeY);gl.uniform1i(pressureProgram.uniforms.uDivergence,divergence.attach(0));for(let i=0;i<config.PRESSURE_ITERATIONS;i++){gl.uniform1i(pressureProgram.uniforms.uPressure,pressure.read.attach(1));blit(pressure.write);pressure.swap();}// Gradient Subtract\ngradienSubtractProgram.bind();gl.uniform2f(gradienSubtractProgram.uniforms.texelSize,velocity.texelSizeX,velocity.texelSizeY);gl.uniform1i(gradienSubtractProgram.uniforms.uPressure,pressure.read.attach(0));gl.uniform1i(gradienSubtractProgram.uniforms.uVelocity,velocity.read.attach(1));blit(velocity.write);velocity.swap();// Advection\nadvectionProgram.bind();gl.uniform2f(advectionProgram.uniforms.texelSize,velocity.texelSizeX,velocity.texelSizeY);if(!ext.supportLinearFiltering)gl.uniform2f(advectionProgram.uniforms.dyeTexelSize,velocity.texelSizeX,velocity.texelSizeY);let velocityId=velocity.read.attach(0);gl.uniform1i(advectionProgram.uniforms.uVelocity,velocityId);gl.uniform1i(advectionProgram.uniforms.uSource,velocityId);gl.uniform1f(advectionProgram.uniforms.dt,dt);gl.uniform1f(advectionProgram.uniforms.dissipation,config.VELOCITY_DISSIPATION);blit(velocity.write);velocity.swap();if(!ext.supportLinearFiltering)gl.uniform2f(advectionProgram.uniforms.dyeTexelSize,dye.texelSizeX,dye.texelSizeY);gl.uniform1i(advectionProgram.uniforms.uVelocity,velocity.read.attach(0));gl.uniform1i(advectionProgram.uniforms.uSource,dye.read.attach(1));gl.uniform1f(advectionProgram.uniforms.dissipation,config.DENSITY_DISSIPATION);blit(dye.write);dye.swap();}function render(target){gl.blendFunc(gl.ONE,gl.ONE_MINUS_SRC_ALPHA);gl.enable(gl.BLEND);drawDisplay(target);}function drawDisplay(target){let width=target==null?gl.drawingBufferWidth:target.width;let height=target==null?gl.drawingBufferHeight:target.height;displayMaterial.bind();if(config.SHADING)gl.uniform2f(displayMaterial.uniforms.texelSize,1/width,1/height);gl.uniform1i(displayMaterial.uniforms.uTexture,dye.read.attach(0));blit(target);}function splatPointer(pointer){let dx=pointer.deltaX*config.SPLAT_FORCE;let dy=pointer.deltaY*config.SPLAT_FORCE;splat(pointer.texcoordX,pointer.texcoordY,dx,dy,pointer.color);}function clickSplat(pointer){const color=generateColor();const colorArray=[color.r*10,color.g*10,color.b*10];let dx=10*(Math.random()-.5);let dy=30*(Math.random()-.5);splat(pointer.texcoordX,pointer.texcoordY,dx,dy,colorArray);}function splat(x,y,dx,dy,color){splatProgram.bind();gl.uniform1i(splatProgram.uniforms.uTarget,velocity.read.attach(0));gl.uniform1f(splatProgram.uniforms.aspectRatio,canvas.width/canvas.height);gl.uniform2f(splatProgram.uniforms.point,x,y);gl.uniform3f(splatProgram.uniforms.color,dx,dy,0);gl.uniform1f(splatProgram.uniforms.radius,correctRadius(config.SPLAT_RADIUS/100));blit(velocity.write);velocity.swap();gl.uniform1i(splatProgram.uniforms.uTarget,dye.read.attach(0));gl.uniform3f(splatProgram.uniforms.color,color[0],color[1],color[2]);blit(dye.write);dye.swap();}function correctRadius(radius){let aspectRatio=canvas.width/canvas.height;if(aspectRatio>1)radius*=aspectRatio;return radius;}function updatePointerDownData(pointer,id,posX,posY){pointer.id=id;pointer.down=true;pointer.moved=false;pointer.texcoordX=posX/canvas.width;pointer.texcoordY=1-posY/canvas.height;pointer.prevTexcoordX=pointer.texcoordX;pointer.prevTexcoordY=pointer.texcoordY;pointer.deltaX=0;pointer.deltaY=0;const color=generateColor();pointer.color=[color.r,color.g,color.b];}function updatePointerMoveData(pointer,posX,posY){pointer.prevTexcoordX=pointer.texcoordX;pointer.prevTexcoordY=pointer.texcoordY;pointer.texcoordX=posX/canvas.width;pointer.texcoordY=1-posY/canvas.height;pointer.deltaX=correctDeltaX(pointer.texcoordX-pointer.prevTexcoordX);pointer.deltaY=correctDeltaY(pointer.texcoordY-pointer.prevTexcoordY);pointer.moved=Math.abs(pointer.deltaX)>0||Math.abs(pointer.deltaY)>0;// Only update color if not in rainbow mode\nif(!rainbowModeRef.current){const color=generateColor();pointer.color=[color.r,color.g,color.b];}}function updatePointerUpData(pointer){pointer.down=false;}function correctDeltaX(delta){let aspectRatio=canvas.width/canvas.height;if(aspectRatio<1)delta*=aspectRatio;return delta;}function correctDeltaY(delta){let aspectRatio=canvas.width/canvas.height;if(aspectRatio>1)delta/=aspectRatio;return delta;}function generateColor(){if(!rainbowModeRef.current){const color=colorRef.current;return{r:color.r*.15,g:color.g*.15,b:color.b*.15};}let c=HSVtoRGB(Math.random(),1,1);c.r*=.15;c.g*=.15;c.b*=.15;return c;}function HSVtoRGB(h,s,v){let r,g,b,i,f,p,q,t;i=Math.floor(h*6);f=h*6-i;p=v*(1-s);q=v*(1-f*s);t=v*(1-(1-f)*s);switch(i%6){case 0:r=v;g=t;b=p;break;case 1:r=q;g=v;b=p;break;case 2:r=p;g=v;b=t;break;case 3:r=p;g=q;b=v;break;case 4:r=t;g=p;b=v;break;case 5:r=v;g=p;b=q;break;default:r=0;g=0;b=0;break;}return{r,g,b};}function wrap(value1,min,max){const range=max-min;if(range===0)return min;return(value1-min)%range+min;}function getResolution(resolution){let aspectRatio=gl.drawingBufferWidth/gl.drawingBufferHeight;if(aspectRatio<1)aspectRatio=1/aspectRatio;const min=Math.round(resolution);const max=Math.round(resolution*aspectRatio);if(gl.drawingBufferWidth>gl.drawingBufferHeight)return{width:max,height:min};else return{width:min,height:max};}function scaleByPixelRatio(input){const pixelRatio=window.devicePixelRatio||1;return Math.floor(input*pixelRatio);}function hashCode(s){if(s.length===0)return 0;let hash=0;for(let i=0;i<s.length;i++){hash=(hash<<5)-hash+s.charCodeAt(i);hash|=0;}return hash;}window.addEventListener(\"mousedown\",e=>{let pointer=pointers[0];let posX=scaleByPixelRatio(e.clientX);let posY=scaleByPixelRatio(e.clientY);updatePointerDownData(pointer,-1,posX,posY);clickSplat(pointer);});document.body.addEventListener(\"mousemove\",function handleFirstMouseMove(e){let pointer=pointers[0];let posX=scaleByPixelRatio(e.clientX);let posY=scaleByPixelRatio(e.clientY);updateFrame()// start animation loop\n;updatePointerMoveData(pointer,posX,posY);document.body.removeEventListener(\"mousemove\",handleFirstMouseMove);});window.addEventListener(\"mousemove\",e=>{let pointer=pointers[0];let posX=scaleByPixelRatio(e.clientX);let posY=scaleByPixelRatio(e.clientY);updatePointerMoveData(pointer,posX,posY);});document.body.addEventListener(\"touchstart\",function handleFirstTouchStart(e){const touches=e.targetTouches;let pointer=pointers[0];for(let i=0;i<touches.length;i++){let posX=scaleByPixelRatio(touches[i].clientX);let posY=scaleByPixelRatio(touches[i].clientY);updateFrame()// start animation loop\n;updatePointerDownData(pointer,touches[i].identifier,posX,posY);}document.body.removeEventListener(\"touchstart\",handleFirstTouchStart);});window.addEventListener(\"touchstart\",e=>{const touches=e.targetTouches;let pointer=pointers[0];for(let i=0;i<touches.length;i++){let posX=scaleByPixelRatio(touches[i].clientX);let posY=scaleByPixelRatio(touches[i].clientY);updatePointerDownData(pointer,touches[i].identifier,posX,posY);}});window.addEventListener(\"touchmove\",e=>{const touches=e.targetTouches;let pointer=pointers[0];for(let i=0;i<touches.length;i++){let posX=scaleByPixelRatio(touches[i].clientX);let posY=scaleByPixelRatio(touches[i].clientY);updatePointerMoveData(pointer,posX,posY);}},false);window.addEventListener(\"touchend\",e=>{const touches=e.changedTouches;let pointer=pointers[0];for(let i=0;i<touches.length;i++){updatePointerUpData(pointer);}});updateFrame();},[SIM_RESOLUTION,DYE_RESOLUTION,CAPTURE_RESOLUTION,DENSITY_DISSIPATION,VELOCITY_DISSIPATION,PRESSURE,PRESSURE_ITERATIONS,CURL,SPLAT_RADIUS,SPLAT_FORCE,SHADING,COLOR_UPDATE_SPEED,BACK_COLOR,TRANSPARENT,SPLASH_COLOR,RAINBOW_MODE]);return /*#__PURE__*/_jsx(\"div\",{style:{position:\"fixed\",top:0,left:0,zIndex:50,pointerEvents:\"none\",width:\"100%\",height:\"100%\"},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,id:\"fluid\",style:{width:\"100vw\",height:\"100vh\",display:\"block\"}})});}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SplashCursor\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerSupportedLayoutHeight\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SplashCursor.map"],"mappings":"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"}