{"version":3,"file":"Dithermorph.CcCdxJxA.mjs","names":["useRef","p","dotSize","sz"],"sources":["https:/framerusercontent.com/modules/pqiF6atg6f2hVJBMrG6C/Kjv8WCVm6h8iCw4oSwAn/Dithermorph.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{addPropertyControls,ControlType}from\"framer\";// ============================================================\n// SEEDED RANDOM\n// ============================================================\nfunction seededRandom(seed){return function(){seed=seed*1103515245+12345&2147483647;return seed/2147483647;};}// ============================================================\n// SHAPE GENERATORS — each returns array of {x, y} in -1..1\n// ============================================================\nfunction makeCloud(n){const pts=[];const r=seededRandom(101);for(let i=0;i<n;i++){const angle=r()*Math.PI*2;const radius=Math.sqrt(r())*.85;pts.push({x:Math.cos(angle)*radius*1.2,y:Math.sin(angle)*radius*.9});}return pts;}function makeDiamond(n){const pts=[];const r=seededRandom(202);for(let i=0;i<n;i++){let x=(r()-.5)*2;let y=(r()-.5)*2;while(Math.abs(x)+Math.abs(y)>1){x=(r()-.5)*2;y=(r()-.5)*2;}pts.push({x:x*.75,y:y*.85});}return pts;}function makeHelix(n){const pts=[];const r=seededRandom(303);for(let i=0;i<n;i++){const t=i/n*Math.PI*4-Math.PI*2;const strand=r()>.5?1:-1;const spread=r()*.06;pts.push({x:Math.sin(t)*.35*strand+(r()-.5)*spread,y:(i/n-.5)*1.6+(r()-.5)*.04});}return pts;}function makeStarburst(n){const pts=[];const r=seededRandom(404);const rays=8;for(let i=0;i<n;i++){const ray=Math.floor(r()*rays);const angle=ray/rays*Math.PI*2+(r()-.5)*.25;const dist=r()*.85;const spread=(1-dist)*.15;pts.push({x:Math.cos(angle)*dist+(r()-.5)*spread,y:Math.sin(angle)*dist+(r()-.5)*spread});}return pts;}function makeTorus(n){const pts=[];const r=seededRandom(505);for(let i=0;i<n;i++){const angle=r()*Math.PI*2;const ringRadius=.45+(r()-.5)*.2;pts.push({x:Math.cos(angle)*ringRadius,y:Math.sin(angle)*ringRadius*.85});}return pts;}const shapeGenerators=[makeCloud,makeDiamond,makeHelix,makeStarburst,makeTorus];/**\n * Fix type errors by keeping a single default export and removing duplicate imports/exports.\n *\n * @framerIntrinsicWidth 800\n * @framerIntrinsicHeight 450\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function DitherMorph({backgroundColor=\"#0a0a0a\",dotColor=\"#888888\",dotSize=1.6,particleCount=1800,mouseRadius=140,mouseForce=12,springStiffness=.06,damping=.82,gravityStart=85,gravity=.35,fallSpread=60}){const canvasRef=useRef(null);const containerRef=useRef(null);const stateRef=useRef({particles:null,shapes:[],fallDelays:null,fallFrame:0,W:0,H:0,dpr:1,mouse:{x:-9999,y:-9999,active:false},animId:0,lastTime:0,scrollProgress:0});// Store latest props in ref so animation loop sees them\nconst propsRef=useRef({backgroundColor,dotColor,dotSize,particleCount,mouseRadius,mouseForce,springStiffness,damping,gravityStart,gravity,fallSpread});propsRef.current={backgroundColor,dotColor,dotSize,particleCount,mouseRadius,mouseForce,springStiffness,damping,gravityStart,gravity,fallSpread};useEffect(()=>{if(typeof window===\"undefined\"||typeof document===\"undefined\")return;const canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(\"2d\",{alpha:false});if(!ctx)return;const s=stateRef.current;const count=particleCount;// ---- RESIZE ----\nfunction resize(){// Cap DPR at 1.5 — dots don't need retina\ns.dpr=Math.min(window.devicePixelRatio||1,1.5);s.W=window.innerWidth;s.H=window.innerHeight;canvas.width=s.W*s.dpr;canvas.height=s.H*s.dpr;canvas.style.width=s.W+\"px\";canvas.style.height=s.H+\"px\";ctx.setTransform(s.dpr,0,0,s.dpr,0,0);const cx=s.W/2;const cy=s.H/2;const scale=Math.min(s.W,s.H)*.42;s.shapes=shapeGenerators.map(gen=>{const pts=gen(count);return pts.map(p=>({x:cx+p.x*scale,y:cy+p.y*scale}));});initParticles();}// ---- INIT PARTICLES ----\nfunction initParticles(){const r=seededRandom(999);// 10 values per particle: x, y, vx, vy, targetX, targetY, homeX, homeY, alpha, sizeMul\ns.particles=new Float32Array(count*10);s.fallDelays=new Float32Array(count);s.fallFrame=0;const firstShape=s.shapes[0];if(!firstShape)return;const rd=seededRandom(888);for(let i=0;i<count;i++){const idx=i*10;const startX=firstShape[i].x+(r()-.5)*40;const startY=firstShape[i].y+(r()-.5)*40;s.particles[idx+0]=startX;s.particles[idx+1]=startY;s.particles[idx+2]=0;s.particles[idx+3]=0;s.particles[idx+4]=firstShape[i].x;s.particles[idx+5]=firstShape[i].y;s.particles[idx+6]=firstShape[i].x;s.particles[idx+7]=firstShape[i].y;s.particles[idx+8]=.3+r()*.5;s.particles[idx+9]=.6+r()*.8;s.fallDelays[i]=Math.floor(rd()*propsRef.current.fallSpread);}}// ---- SCROLL ----\nfunction onScroll(){const maxScroll=document.documentElement.scrollHeight-window.innerHeight;s.scrollProgress=Math.max(0,Math.min(1,window.scrollY/Math.max(1,maxScroll)));}// ---- UPDATE SHAPE TARGETS ----\nfunction updateTargets(){if(!s.particles||s.shapes.length===0)return;const gravityThreshold=propsRef.current.gravityStart/100;const numShapes=s.shapes.length;if(s.scrollProgress<gravityThreshold){const morphProgress=s.scrollProgress/gravityThreshold;const segmentSize=1/(numShapes-1);const rawIdx=morphProgress/segmentSize;const fromIdx=Math.min(Math.floor(rawIdx),numShapes-2);const toIdx=fromIdx+1;const t=rawIdx-fromIdx;const ease=t*t*(3-2*t);const fromShape=s.shapes[fromIdx];const toShape=s.shapes[toIdx];for(let i=0;i<count;i++){const idx=i*10;const hx=fromShape[i].x+(toShape[i].x-fromShape[i].x)*ease;const hy=fromShape[i].y+(toShape[i].y-fromShape[i].y)*ease;s.particles[idx+6]=hx;s.particles[idx+7]=hy;s.particles[idx+4]=hx;s.particles[idx+5]=hy;}s.fallFrame=0;}}// ---- MOUSE ----\nfunction onMouseMove(e){s.mouse.x=e.clientX;s.mouse.y=e.clientY;s.mouse.active=true;}function onMouseLeave(){s.mouse.active=false;}function onTouchMove(e){const touch=e.touches[0];if(!touch)return;s.mouse.x=touch.clientX;s.mouse.y=touch.clientY;s.mouse.active=true;}function onTouchEnd(){s.mouse.active=false;}// ---- ANIMATE ----\nfunction animate(timestamp){s.animId=requestAnimationFrame(animate);// Throttle to ~30fps\nif(timestamp-s.lastTime<28)return;s.lastTime=timestamp;if(!s.particles)return;const p=propsRef.current;const gravityThreshold=p.gravityStart/100;const isFalling=s.scrollProgress>=gravityThreshold;updateTargets();ctx.fillStyle=p.backgroundColor;ctx.fillRect(0,0,s.W,s.H);const mouseRadSq=p.mouseRadius*p.mouseRadius;const mouseActive=s.mouse.active;const mx=s.mouse.x;const my=s.mouse.y;if(isFalling)s.fallFrame++;// Parse dot color ONCE outside loop\nconst dc=p.dotColor;let cr=136,cg=136,cb=136;if(dc.startsWith(\"#\")&&dc.length===7){cr=parseInt(dc.slice(1,3),16);cg=parseInt(dc.slice(3,5),16);cb=parseInt(dc.slice(5,7),16);}// Pre-build alpha lookup: 20 steps covers 0.05..1.0\nconst ALPHA_STEPS=20;const alphaColors=new Array(ALPHA_STEPS);for(let a=0;a<ALPHA_STEPS;a++){const frac=(a+1)/ALPHA_STEPS;const ar=Math.round(cr*frac);const ag=Math.round(cg*frac);const ab=Math.round(cb*frac);alphaColors[a]=`rgb(${ar},${ag},${ab})`;}ctx.globalAlpha=1;const dotSize=p.dotSize;const stiffness=p.springStiffness;const damp=p.damping;const mForce=p.mouseForce;const mRadius=p.mouseRadius;const grav=p.gravity;const screenH=s.H;const pts=s.particles;const delays=s.fallDelays;if(!delays)return;for(let i=0;i<count;i++){const idx=i*10;let x=pts[idx];let y=pts[idx+1];let vx=pts[idx+2];let vy=pts[idx+3];const homeX=pts[idx+6];const homeY=pts[idx+7];const alpha=pts[idx+8];const sizeMul=pts[idx+9];if(isFalling){const activeFrames=s.fallFrame-delays[i];if(activeFrames>0){const sz=dotSize*sizeMul;const floor=screenH-sz-2;vy+=grav;vx*=.99;x+=vx;y+=vy;if(y>=floor){y=floor;if(Math.abs(vy)>.5){vy*=-.15;}else{vy=0;}vx*=.85;}pts[idx]=x;pts[idx+1]=y;pts[idx+2]=vx;pts[idx+3]=vy;const aIdx=Math.min(Math.floor(alpha*ALPHA_STEPS),ALPHA_STEPS-1)|0;ctx.fillStyle=alphaColors[aIdx];ctx.fillRect(x-sz,y-sz,sz*2,sz*2);continue;}}if(mouseActive){const dx=x-mx;const dy=y-my;const distSq=dx*dx+dy*dy;if(distSq<mouseRadSq&&distSq>1){const dist=Math.sqrt(distSq);const force=(1-dist/mRadius)*mForce;vx+=dx/dist*force;vy+=dy/dist*force;}}vx+=(homeX-x)*stiffness;vy+=(homeY-y)*stiffness;vx*=damp;vy*=damp;x+=vx;y+=vy;pts[idx]=x;pts[idx+1]=y;pts[idx+2]=vx;pts[idx+3]=vy;const dhx=x-homeX;const dhy=y-homeY;const homeDistSq=dhx*dhx+dhy*dhy;const distAlpha=homeDistSq>4e4?.15:1-homeDistSq/4e4*.85;const finalAlpha=alpha*distAlpha;if(finalAlpha<.02)continue;const aIdx=Math.min(Math.floor(finalAlpha*ALPHA_STEPS),ALPHA_STEPS-1)|0;const sz=dotSize*sizeMul;ctx.fillStyle=alphaColors[aIdx];ctx.fillRect(x-sz,y-sz,sz*2,sz*2);}}resize();onScroll();window.addEventListener(\"resize\",resize);window.addEventListener(\"scroll\",onScroll,{passive:true});canvas.addEventListener(\"mousemove\",onMouseMove,{passive:true});canvas.addEventListener(\"mouseleave\",onMouseLeave);canvas.addEventListener(\"touchmove\",onTouchMove,{passive:true});canvas.addEventListener(\"touchend\",onTouchEnd);s.animId=requestAnimationFrame(animate);return()=>{cancelAnimationFrame(s.animId);window.removeEventListener(\"resize\",resize);window.removeEventListener(\"scroll\",onScroll);canvas.removeEventListener(\"mousemove\",onMouseMove);canvas.removeEventListener(\"mouseleave\",onMouseLeave);canvas.removeEventListener(\"touchmove\",onTouchMove);canvas.removeEventListener(\"touchend\",onTouchEnd);};},[particleCount]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\"},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{display:\"block\",width:\"100%\",height:\"100%\"}})});}addPropertyControls(DitherMorph,{backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#0a0a0a\"},dotColor:{type:ControlType.Color,title:\"Dot color\",defaultValue:\"#888888\"},dotSize:{type:ControlType.Number,title:\"Dot size\",min:.5,max:4,step:.1,defaultValue:1.6},particleCount:{type:ControlType.Number,title:\"Particle count\",min:500,max:3e3,step:100,defaultValue:1800},mouseRadius:{type:ControlType.Number,title:\"Mouse radius\",min:50,max:300,step:10,defaultValue:140},mouseForce:{type:ControlType.Number,title:\"Mouse force\",min:2,max:25,step:1,defaultValue:12},springStiffness:{type:ControlType.Number,title:\"Spring stiffness\",min:.01,max:.15,step:.01,defaultValue:.06},damping:{type:ControlType.Number,title:\"Damping\",min:.7,max:.95,step:.01,defaultValue:.82},gravityStart:{type:ControlType.Number,title:\"Gravity start %\",min:50,max:95,step:1,defaultValue:85},gravity:{type:ControlType.Number,title:\"Gravity strength\",min:.1,max:1,step:.05,defaultValue:.35},fallSpread:{type:ControlType.Number,title:\"Fall spread\",min:10,max:120,step:5,defaultValue:60}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"DitherMorph\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"fixed\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerIntrinsicWidth\":\"800\",\"framerIntrinsicHeight\":\"450\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Dithermorph.map"],"mappings":"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"}