{"version":3,"file":"KineticGrid.ColJPbCG.mjs","names":["React.useRef","React.useCallback"],"sources":["https:/framerusercontent.com/modules/iUsZ7jsWAhEDdPDlPyxW/ifjGHK38TNzplIRGvrGX/KineticGrid.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";const lerp=(a,b,t)=>a+(b-a)*t;function toRgb(input){const s=(input||\"\").trim();if(s.startsWith(\"#\")){const hex=s.slice(1);const h=hex.length===3?hex.split(\"\").map(c=>c+c).join(\"\"):hex.slice(0,6);return[parseInt(h.slice(0,2),16),parseInt(h.slice(2,4),16),parseInt(h.slice(4,6),16)];}const m=s.match(/rgba?\\(([^)]+)\\)/);if(m){const p=m[1].split(\",\").map(x=>parseFloat(x));return[p[0]||0,p[1]||0,p[2]||0];}return[0,85,254];}/**\n * Kinetic Grid — interactive background for the closing CTA.\n *\n * @framerIntrinsicWidth 1440\n * @framerIntrinsicHeight 720\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function KineticGrid(props){const{background,lineColor,lineActiveColor,dotColor,glowColor,rippleColor,cellSize,reach,pull,fadeRight,ripples:ripplesOn,animate}=props;const hostRef=React.useRef(null);const canvasRef=React.useRef(null);const mouse=React.useRef({x:-9999,y:-9999});const target=React.useRef({x:-9999,y:-9999});const ripples=React.useRef([]);const size=React.useRef({w:0,h:0});// Latest settings for the draw loop without restarting it\nconst cfg=React.useRef(props);cfg.current=props;const draw=React.useCallback(now=>{const canvas=canvasRef.current;const ctx=canvas&&canvas.getContext(\"2d\");if(!canvas||!ctx)return;const c=cfg.current;const{w,h}=size.current;if(!w||!h)return;const L=toRgb(c.lineColor);const LA=toRgb(c.lineActiveColor);const D=toRgb(c.dotColor);const G=toRgb(c.glowColor);const R=toRgb(c.rippleColor);const cell=Math.max(24,c.cellSize||58);const rch=Math.max(60,c.reach||260);const pl=c.pull??24;ctx.clearRect(0,0,w,h);ctx.fillStyle=c.background||\"#000000\";ctx.fillRect(0,0,w,h);const cols=Math.max(3,Math.ceil(w/cell)+1);const rows=Math.max(3,Math.ceil(h/cell)+1);const cellW=w/(cols-1);const cellH=h/(rows-1);const pts=[];const prox=[];for(let i=ripples.current.length-1;i>=0;i--){const rp=ripples.current[i];const age=(now-rp.born)/1e3;rp.radius=Math.max(0,age*400);rp.opacity=Math.max(0,1-age*1.2);if(!rp.opacity)ripples.current.splice(i,1);}for(let row=0;row<rows;row++){pts[row]=[];prox[row]=[];for(let col=0;col<cols;col++){const gx=col*cellW;const gy=row*cellH;// Edge points stay pinned so the mesh never tears at the borders\nconst pin=Math.min(1,col/1.5,(cols-1-col)/1.5,row/1.5,(rows-1-row)/1.5);const dx=gx-mouse.current.x;const dy=gy-mouse.current.y;const dist=Math.hypot(dx,dy);const proximity=Math.max(0,1-dist/rch)*pin;let x=gx;let y=gy;if(dist>0&&dist<rch){const e=(1-dist/rch)**2*Math.min(1,dist/60)*pl*pin;x-=dx/dist*e;y-=dy/dist*e;}for(const rp of ripples.current){const rdx=gx-rp.x;const rdy=gy-rp.y;const rdist=Math.hypot(rdx,rdy);const diff=rdist-rp.radius;if(Math.abs(diff)<55&&rdist>0){const push=(1-Math.abs(diff)/55)*rp.opacity*18*pin*(diff<0?-1:1);x-=rdx/rdist*push;y-=rdy/rdist*push;}}pts[row][col]={x,y};prox[row][col]=proximity;}}const visibility=(x,y,p)=>{const leftFade=c.fadeRight?Math.max(0,1-x/(w*.92)):1;const topFade=Math.max(0,1-y/(h*1.35));const base=leftFade**1.08*(.76+topFade*.44);const reveal=Math.max(0,1-Math.hypot(x-mouse.current.x,y-mouse.current.y)/250);return Math.min(1,Math.max(base,reveal,p));};const line=(a,b,p)=>{const t=p*p*(3-2*p);const alpha=visibility((a.x+b.x)/2,(a.y+b.y)/2,t);if(alpha<.012)return;ctx.beginPath();ctx.moveTo(a.x,a.y);ctx.lineTo(b.x,b.y);ctx.strokeStyle=`rgba(${lerp(L[0],LA[0],t)},${lerp(L[1],LA[1],t)},${lerp(L[2],LA[2],t)},${lerp(.22,.9,t)*alpha})`;ctx.lineWidth=lerp(.8,1.75,t);ctx.stroke();};ctx.lineCap=\"butt\";for(let row=0;row<rows;row++)for(let col=0;col<cols-1;col++)line(pts[row][col],pts[row][col+1],(prox[row][col]+prox[row][col+1])/2);for(let col=0;col<cols;col++)for(let row=0;row<rows-1;row++)line(pts[row][col],pts[row+1][col],(prox[row][col]+prox[row+1][col])/2);for(let row=0;row<rows;row++)for(let col=0;col<cols;col++){const p=pts[row][col];const pr=prox[row][col];const t=pr*pr*(3-2*pr);const alpha=visibility(p.x,p.y,t);if(alpha<.012)continue;const r=lerp(1.35,3.6,t);if(t>.12){const glow=ctx.createRadialGradient(p.x,p.y,0,p.x,p.y,r+9);glow.addColorStop(0,`rgba(${G[0]},${G[1]},${G[2]},${.34*alpha})`);glow.addColorStop(1,`rgba(${G[0]},${G[1]},${G[2]},0)`);ctx.fillStyle=glow;ctx.beginPath();ctx.arc(p.x,p.y,r+9,0,Math.PI*2);ctx.fill();}ctx.beginPath();ctx.arc(p.x,p.y,r,0,Math.PI*2);ctx.fillStyle=`rgba(${D[0]},${D[1]},${D[2]},${lerp(.22,1,t)*alpha})`;ctx.fill();}for(const rp of ripples.current){ctx.beginPath();ctx.arc(rp.x,rp.y,rp.radius,0,Math.PI*2);ctx.strokeStyle=`rgba(${R[0]},${R[1]},${R[2]},${rp.opacity*.35})`;ctx.lineWidth=1.5;ctx.stroke();}},[]);React.useEffect(()=>{const host=hostRef.current;const canvas=canvasRef.current;if(!host||!canvas||typeof window===\"undefined\")return;const liveSite=RenderTarget.current()===RenderTarget.preview;const reduced=!!(window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches);const interactive=liveSite&&!reduced&&cfg.current.animate;const resize=()=>{const rect=host.getBoundingClientRect();const w=host.offsetWidth||rect.width;const h=host.offsetHeight||rect.height;const dpr=Math.min(window.devicePixelRatio||1,2);size.current={w,h};canvas.width=Math.max(1,Math.round(w*dpr));canvas.height=Math.max(1,Math.round(h*dpr));canvas.style.width=`${w}px`;canvas.style.height=`${h}px`;const ctx=canvas.getContext(\"2d\");if(ctx)ctx.setTransform(dpr,0,0,dpr,0,0);if(!interactive)draw(performance.now());};resize();const ro=typeof ResizeObserver!==\"undefined\"?new ResizeObserver(resize):null;if(ro)ro.observe(host);if(!interactive)return()=>{if(ro)ro.disconnect();};// Listen on the window: the text and buttons sit on top of the grid, but the\n// mesh should still follow the cursor underneath them\nconst inside=e=>{const r=host.getBoundingClientRect();return e.clientX>=r.left&&e.clientX<=r.right&&e.clientY>=r.top&&e.clientY<=r.bottom;};const move=e=>{const r=host.getBoundingClientRect();if(inside(e))target.current={x:e.clientX-r.left,y:e.clientY-r.top};else target.current={x:-9999,y:-9999};};const down=e=>{if(!cfg.current.ripples||!inside(e))return;const r=host.getBoundingClientRect();ripples.current.push({x:e.clientX-r.left,y:e.clientY-r.top,radius:0,opacity:1,born:performance.now()});};let frame=0;let running=false;const tick=now=>{const far=target.current.x<-9e3;mouse.current.x=far?target.current.x:lerp(mouse.current.x<-9e3?target.current.x:mouse.current.x,target.current.x,.08);mouse.current.y=far?target.current.y:lerp(mouse.current.y<-9e3?target.current.y:mouse.current.y,target.current.y,.08);draw(now);frame=requestAnimationFrame(tick);};const start=()=>{if(running)return;running=true;frame=requestAnimationFrame(tick);};const stop=()=>{running=false;cancelAnimationFrame(frame);};// Only animate while the section is on screen\nconst io=new IntersectionObserver(entries=>entries.some(e=>e.isIntersecting)?start():stop(),{rootMargin:\"80px\"});io.observe(host);window.addEventListener(\"pointermove\",move,{passive:true});window.addEventListener(\"pointerdown\",down,{passive:true});return()=>{stop();io.disconnect();if(ro)ro.disconnect();window.removeEventListener(\"pointermove\",move);window.removeEventListener(\"pointerdown\",down);};},[draw,animate]);// Redraw the still frame when settings change on the canvas\nReact.useEffect(()=>{if(RenderTarget.current()!==RenderTarget.preview||!animate)draw(performance.now());},[draw,animate,background,lineColor,lineActiveColor,dotColor,glowColor,rippleColor,cellSize,reach,pull,fadeRight,ripplesOn]);return /*#__PURE__*/_jsx(\"div\",{ref:hostRef,\"aria-hidden\":\"true\",style:{...props.style,position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\",pointerEvents:\"none\",background},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{display:\"block\"}})});}addPropertyControls(KineticGrid,{background:{type:ControlType.Color,title:\"Background\",defaultValue:\"#000000\"},lineColor:{type:ControlType.Color,title:\"Lines\",defaultValue:\"#3773FF\"},lineActiveColor:{type:ControlType.Color,title:\"Lines Active\",defaultValue:\"#46BEFF\"},dotColor:{type:ControlType.Color,title:\"Dots\",defaultValue:\"#6EC8FF\"},glowColor:{type:ControlType.Color,title:\"Dot Glow\",defaultValue:\"#288CFF\"},rippleColor:{type:ControlType.Color,title:\"Ripple\",defaultValue:\"#64B4FF\"},cellSize:{type:ControlType.Number,title:\"Grid Spacing\",min:24,max:160,step:1,unit:\"px\",defaultValue:58},reach:{type:ControlType.Number,title:\"Cursor Reach\",min:60,max:600,step:10,unit:\"px\",defaultValue:260},pull:{type:ControlType.Number,title:\"Cursor Pull\",min:0,max:60,step:1,defaultValue:24},fadeRight:{type:ControlType.Boolean,title:\"Fade to Right\",defaultValue:true},ripples:{type:ControlType.Boolean,title:\"Click Ripples\",defaultValue:true},animate:{type:ControlType.Boolean,title:\"Interactive\",defaultValue:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"KineticGrid\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"720\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"1440\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./KineticGrid.map"],"mappings":"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"}