{"version":3,"file":"CursorGridInteractive.CSQ9pxG7.mjs","names":["React.useRef","React.useState"],"sources":["https:/framerusercontent.com/modules/oJJxVl1dnZDUpQqTnyc8/zUGtClJXdoJKi2d6fFwJ/CursorGridInteractive.js"],"sourcesContent":["// @ts-nocheck\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";const CURSOR_GRID_CSS=\".cursor-grid {\\n  position: relative;\\n  width: 100%;\\n  height: 100%;\\n  overflow: hidden;\\n  --cursor-grid-x: -300px;\\n  --cursor-grid-y: -300px;\\n  --cursor-grid-alpha: 0;\\n  background-image: linear-gradient(to right, rgba(24, 24, 27, 0.08) 1px, transparent 1px), linear-gradient(to bottom, rgba(24, 24, 27, 0.08) 1px, transparent 1px);\\n  background-size: 60px 60px;\\n  background-position: center center;\\n}\\n\\n.cursor-grid::after {\\n  content: '';\\n  position: absolute;\\n  inset: 0;\\n  pointer-events: none;\\n  opacity: var(--cursor-grid-alpha);\\n  background-image: linear-gradient(to right, rgba(24, 24, 27, 0.48) 1px, transparent 1px), linear-gradient(to bottom, rgba(24, 24, 27, 0.48) 1px, transparent 1px);\\n  background-size: 60px 60px;\\n  background-position: center center;\\n  -webkit-mask-image: radial-gradient(circle 140px at var(--cursor-grid-x) var(--cursor-grid-y), #000 0%, rgba(0,0,0,.85) 35%, transparent 100%);\\n  mask-image: radial-gradient(circle 140px at var(--cursor-grid-x) var(--cursor-grid-y), #000 0%, rgba(0,0,0,.85) 35%, transparent 100%);\\n  transition: opacity 100ms linear;\\n}\\n\\n.cursor-grid__canvas {\\n  position: absolute;\\n  inset: 0;\\n  display: block;\\n  width: 100%;\\n  height: 100%;\\n  pointer-events: none;\\n}\\n\\n.cursor-grid__content {\\n  position: relative;\\n  width: 100%;\\n  height: 100%;\\n}\\n\";const INTRO_SECONDS=1.4;const STYLES={lines:0,dashed:1,dots:2,crosses:3};const FALLOFF_CURVES={linear:t=>t,smooth:t=>t*t*(3-2*t),sharp:t=>t*t*t};const VERTEX=`#version 300 es\nvoid main() {\n  vec2 p = vec2(float((gl_VertexID << 1) & 2), float(gl_VertexID & 2));\n  gl_Position = vec4(p * 2.0 - 1.0, 0.0, 1.0);\n}`;const FRAGMENT=`#version 300 es\nprecision highp float;\nprecision highp int;\n\nuniform vec2 uResolution;\nuniform vec2 uOffset;\nuniform float uCellSize;\nuniform sampler2D uState;\nuniform ivec2 uCells;\nuniform vec3 uColor;\nuniform vec3 uGridColor;\nuniform float uLineWidth;\nuniform float uMaxOpacity;\nuniform float uFillOpacity;\nuniform float uGridOpacity;\nuniform float uCellRadius;\nuniform float uCellGap;\nuniform int uGridStyle;\nuniform vec2 uMouse;\nuniform float uRadius;\nuniform float uSpotlight;\nuniform float uPresence;\nuniform float uEdgeFade;\nuniform float uReveal;\n\nout vec4 outColor;\n\nfloat level(vec2 cell) {\n  if (cell.x < 0.0 || cell.y < 0.0 || cell.x >= float(uCells.x) || cell.y >= float(uCells.y)) return 0.0;\n  float v = texelFetch(uState, ivec2(cell), 0).r;\n  return v * v * (3.0 - 2.0 * v);\n}\n\nfloat line(float d, float width) {\n  float w = max(width, 1.0);\n  return clamp(w * 0.5 + 0.5 - d, 0.0, 1.0) * (width / w);\n}\n\nfloat roundBox(vec2 p, vec2 b, float r) {\n  vec2 q = abs(p) - b + r;\n  return length(max(q, 0.0)) + min(max(q.x, q.y), 0.0) - r;\n}\n\nvoid main() {\n  vec2 pos = vec2(gl_FragCoord.x, uResolution.y - gl_FragCoord.y);\n  vec2 g = (pos - uOffset) / uCellSize;\n  vec2 cell = floor(g);\n  vec2 f = g - cell;\n  vec2 edge = min(f, 1.0 - f) * uCellSize;\n\n  float vx = line(edge.x, uLineWidth);\n  float vy = line(edge.y, uLineWidth);\n  if (uGridStyle == 1) {\n    float dash = uCellSize / 6.0;\n    vx *= step(0.5, fract((pos.y - uOffset.y) / dash + 0.25));\n    vy *= step(0.5, fract((pos.x - uOffset.x) / dash + 0.25));\n  } else if (uGridStyle == 2) {\n    float r = max(uLineWidth * 1.25, 1.2);\n    float d = length(edge);\n    vx = clamp(r + 0.5 - d, 0.0, 1.0);\n    vy = 0.0;\n  } else if (uGridStyle == 3) {\n    float arm = uCellSize * 0.1 + uLineWidth;\n    vx *= step(edge.y, arm);\n    vy *= step(edge.x, arm);\n  }\n  float mark = max(vx, vy);\n\n  vec2 toMouse = pos - uMouse;\n  float spot = exp(-dot(toMouse, toMouse) / max(uRadius * uRadius, 1.0) * 1.6) * uSpotlight * uPresence;\n\n  vec2 center = uResolution * 0.5;\n  float reach = length(center);\n  float shown = smoothstep(uReveal * (reach + uCellSize * 2.0), uReveal * (reach + uCellSize * 2.0) - uCellSize * 2.0, length(pos - center));\n  shown = uReveal >= 1.0 ? 1.0 : shown;\n\n  float fade = 1.0;\n  if (uEdgeFade > 0.0) {\n    vec2 norm = pos / uResolution;\n    vec2 a = clamp(norm / uEdgeFade, 0.0, 1.0);\n    vec2 b = clamp((1.0 - norm) / uEdgeFade, 0.0, 1.0);\n    vec2 sa = a * a * a * (a * (a * 6.0 - 15.0) + 10.0);\n    vec2 sb = b * b * b * (b * (b * 6.0 - 15.0) + 10.0);\n    fade = sa.x * sa.y * sb.x * sb.y;\n  }\n\n  float own = level(cell);\n  float gridAlpha = mark * min(uGridOpacity + spot * 0.45, 1.0) * fade * shown;\n  float litAlpha = 0.0;\n  float fillAlpha = 0.0;\n\n  if (uCellGap <= 0.0 && uCellRadius <= 0.0) {\n    vec2 side = step(0.5, f) * 2.0 - 1.0;\n    float nx = level(cell + vec2(side.x, 0.0));\n    float ny = level(cell + vec2(0.0, side.y));\n    float nc = level(cell + side);\n    float ex = max(own, nx);\n    float ey = max(own, ny);\n    float joint = max(max(ex, ey), nc);\n    float lit;\n    if (uGridStyle == 2) lit = vx * joint;\n    else if (uGridStyle == 3) lit = max(vx * (edge.y < uLineWidth ? joint : ex), vy * (edge.x < uLineWidth ? joint : ey));\n    else lit = max(vx * (edge.y < uLineWidth ? joint : ex), vy * (edge.x < uLineWidth ? joint : ey));\n    litAlpha = lit * uMaxOpacity;\n    fillAlpha = own * uFillOpacity;\n  } else if (own > 0.0) {\n    vec2 local = (f - 0.5) * uCellSize;\n    float halfSize = uCellSize * 0.5 - max(uCellGap, 0.0);\n    float radius = min(uCellRadius, halfSize);\n    float sd = roundBox(local, vec2(halfSize), radius);\n    float inside = clamp(0.5 - sd, 0.0, 1.0);\n    float border = line(abs(sd + uLineWidth * 0.5), uLineWidth) * inside;\n    litAlpha = border * own * uMaxOpacity;\n    fillAlpha = inside * own * uFillOpacity;\n  }\n  litAlpha *= fade;\n  fillAlpha *= fade;\n\n  float cellAlpha = clamp(max(litAlpha, fillAlpha), 0.0, 1.0);\n  float alpha = cellAlpha + gridAlpha * (1.0 - cellAlpha);\n  vec3 premul = uColor * cellAlpha + uGridColor * gridAlpha * (1.0 - cellAlpha);\n  outColor = vec4(premul, alpha);\n}`;const clamp=(value,min,max)=>Math.min(max,Math.max(min,value));const compile=(gl,type,source)=>{const shader=gl.createShader(type);if(!shader)return null;gl.shaderSource(shader,source);gl.compileShader(shader);if(gl.getShaderParameter(shader,gl.COMPILE_STATUS))return shader;gl.deleteShader(shader);return null;};const link=gl=>{const vertex=compile(gl,gl.VERTEX_SHADER,VERTEX);const fragment=compile(gl,gl.FRAGMENT_SHADER,FRAGMENT);const program=gl.createProgram();if(!vertex||!fragment||!program)return null;gl.attachShader(program,vertex);gl.attachShader(program,fragment);gl.linkProgram(program);gl.deleteShader(vertex);gl.deleteShader(fragment);if(!gl.getProgramParameter(program,gl.LINK_STATUS)){gl.deleteProgram(program);return null;}const uniforms={};const count=gl.getProgramParameter(program,gl.ACTIVE_UNIFORMS);for(let i=0;i<count;i++){const info=gl.getActiveUniform(program,i);if(info)uniforms[info.name]=gl.getUniformLocation(program,info.name);}return{program,uniforms};};const colorCache=new Map;const parseHex=hex=>{let h=String(hex||\"#ffffff\").replace(\"#\",\"\").trim();if(h.length===3||h.length===4)h=h.slice(0,3).split(\"\").map(c=>c+c).join(\"\");const num=parseInt(h.slice(0,6),16);if(Number.isNaN(num))return[1,1,1];return[(num>>16&255)/255,(num>>8&255)/255,(num&255)/255];};const hexToRgb=hex=>{const key=String(hex);const cached=colorCache.get(key);if(cached)return cached;const rgb=parseHex(hex);if(colorCache.size>64)colorCache.clear();colorCache.set(key,rgb);return rgb;};export default function CursorGrid({cellSize=60,color,gridColor,radius=140,falloff=\"smooth\",highlight=\"area\",holdTime=400,fadeDuration=800,lineWidth=1,maxOpacity=1,fillOpacity=.06,gridOpacity=.08,gridStyle=\"lines\",cellRadius=0,cellGap=0,spotlight=.6,clickPulse=true,pulseSpeed=600,ambient=0,edgeFade=.2,intro=true,lightMode=false,dpr,children,className=\"\",style}){const containerRef=React.useRef(null);const canvasRef=React.useRef(null);const wakeRef=React.useRef(null);const[fallbackCursor,setFallbackCursor]=React.useState({x:-300,y:-300,visible:false});const ink=lightMode?\"#18181b\":\"#ffffff\";const settings={cellSize:Math.max(8,cellSize),color:color||ink,gridColor:gridColor||ink,radius:Math.max(1,radius),falloff,highlight,holdTime:Math.max(0,holdTime),fadeDuration:Math.max(16,fadeDuration),lineWidth:Math.max(.25,lineWidth),maxOpacity:clamp(maxOpacity,0,1),fillOpacity:clamp(fillOpacity,0,1),gridOpacity:clamp(gridOpacity,0,1),gridStyle:STYLES[gridStyle]??0,cellRadius:Math.max(0,cellRadius),cellGap:Math.max(0,cellGap),spotlight:clamp(spotlight,0,1),clickPulse,pulseSpeed:Math.max(1,pulseSpeed),ambient:clamp(ambient,0,1),edgeFade:clamp(edgeFade,0,.5),intro,dpr};const settingsRef=React.useRef(settings);settingsRef.current=settings;React.useEffect(()=>{const updateCursor=event=>{const container=containerRef.current;if(!container)return;const rect=container.getBoundingClientRect();const x=event.clientX-rect.left;const y=event.clientY-rect.top;const visible=x>=0&&y>=0&&x<=rect.width&&y<=rect.height;setFallbackCursor({x,y,visible});};const clearCursor=()=>setFallbackCursor(current=>({...current,visible:false}));window.addEventListener(\"pointermove\",updateCursor,{passive:true});window.addEventListener(\"pointerdown\",updateCursor,{passive:true});document.documentElement.addEventListener(\"pointerleave\",clearCursor);return()=>{window.removeEventListener(\"pointermove\",updateCursor);window.removeEventListener(\"pointerdown\",updateCursor);document.documentElement.removeEventListener(\"pointerleave\",clearCursor);};},[]);React.useEffect(()=>{const container=containerRef.current;const canvas=canvasRef.current;const gl=canvas?.getContext(\"webgl2\",{alpha:true,premultipliedAlpha:true,antialias:false,depth:false,stencil:false});if(!container||!canvas||!gl)return undefined;const shader=link(gl);if(!shader)return undefined;const u=shader.uniforms;const vao=gl.createVertexArray();const stateTexture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,stateTexture);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.pixelStorei(gl.UNPACK_ALIGNMENT,1);const reduce=window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches??false;const view={width:1,height:1,ratio:1,cellSize:0};const grid={cols:0,rows:0,offX:0,offY:0};const pointer={x:0,y:0,inside:false};const mouse={x:0,y:0};const pulses=[];let levels=new Float32Array(0);let waves=new Float32Array(0);let targets=new Float32Array(0);let touched=new Float32Array(0);let pixels=new Uint8Array(0);let presence=0;let clock=0;let introClock=settingsRef.current.intro&&!reduce?0:1;let raf=0;let last=0;let visible=true;let dirty=true;const rebuild=()=>{const s=settingsRef.current;view.width=Math.max(1,container.clientWidth);view.height=Math.max(1,container.clientHeight);view.ratio=Math.min(s.dpr||window.devicePixelRatio||1,2);canvas.width=Math.max(1,Math.round(view.width*view.ratio));canvas.height=Math.max(1,Math.round(view.height*view.ratio));const size=s.cellSize;const cols=Math.ceil(view.width/size)+1;const rows=Math.ceil(view.height/size)+1;const resized=cols!==grid.cols||rows!==grid.rows||size!==view.cellSize;grid.cols=cols;grid.rows=rows;grid.offX=(view.width-cols*size)/2;grid.offY=(view.height-rows*size)/2;view.cellSize=size;if(resized){levels=new Float32Array(cols*rows);waves=new Float32Array(cols*rows);targets=new Float32Array(cols*rows);touched=new Float32Array(cols*rows).fill(-1e9);pixels=new Uint8Array(cols*rows);gl.bindTexture(gl.TEXTURE_2D,stateTexture);gl.texImage2D(gl.TEXTURE_2D,0,gl.R8,cols,rows,0,gl.RED,gl.UNSIGNED_BYTE,pixels);}dirty=true;};const light=(index,value)=>{if(value>targets[index])targets[index]=value;touched[index]=clock;};const energize=(x,y)=>{const s=settingsRef.current;const size=s.cellSize;if(s.highlight===\"cell\"){const col=Math.floor((x-grid.offX)/size);const row=Math.floor((y-grid.offY)/size);if(col>=0&&row>=0&&col<grid.cols&&row<grid.rows)light(row*grid.cols+col,1);return;}const r=s.radius;const ease=FALLOFF_CURVES[s.falloff]??FALLOFF_CURVES.linear;const minCol=Math.max(0,Math.floor((x-r-grid.offX)/size));const maxCol=Math.min(grid.cols-1,Math.floor((x+r-grid.offX)/size));const minRow=Math.max(0,Math.floor((y-r-grid.offY)/size));const maxRow=Math.min(grid.rows-1,Math.floor((y+r-grid.offY)/size));for(let row=minRow;row<=maxRow;row++){for(let col=minCol;col<=maxCol;col++){const cx=grid.offX+col*size+size/2;const cy=grid.offY+row*size+size/2;const dist=Math.hypot(cx-x,cy-y);if(dist>r)continue;const value=ease(1-dist/r);if(value>0)light(row*grid.cols+col,value);}}};const sweepPulses=s=>{const size=s.cellSize;const ahead=size*.6;const behind=size*1.4;const far=Math.hypot(view.width,view.height);waves.fill(0);for(let k=pulses.length-1;k>=0;k--){const pulse=pulses[k];const ringR=(clock-pulse.t0)*s.pulseSpeed;if(ringR-behind*2>far){pulses.splice(k,1);continue;}if(ringR<0)continue;const envelope=pulse.strength*Math.pow(Math.max(0,1-ringR/(far+behind)),.6);const outer=ringR+ahead*2;const minCol=Math.max(0,Math.floor((pulse.x-outer-grid.offX)/size));const maxCol=Math.min(grid.cols-1,Math.floor((pulse.x+outer-grid.offX)/size));const minRow=Math.max(0,Math.floor((pulse.y-outer-grid.offY)/size));const maxRow=Math.min(grid.rows-1,Math.floor((pulse.y+outer-grid.offY)/size));for(let row=minRow;row<=maxRow;row++){for(let col=minCol;col<=maxCol;col++){const cx=grid.offX+col*size+size/2;const cy=grid.offY+row*size+size/2;const off=Math.hypot(cx-pulse.x,cy-pulse.y)-ringR;if(off>ahead*2||off<-behind*2)continue;const t=off>0?off/ahead:off/behind;const value=envelope*Math.exp(-t*t);const index=row*grid.cols+col;if(value>waves[index])waves[index]=value;}}}dirty=true;};const draw=()=>{const s=settingsRef.current;const ratio=view.ratio;gl.viewport(0,0,canvas.width,canvas.height);gl.clearColor(0,0,0,0);gl.clear(gl.COLOR_BUFFER_BIT);gl.useProgram(shader.program);gl.bindVertexArray(vao);gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,stateTexture);if(dirty){for(let i=0;i<levels.length;i++)pixels[i]=Math.round(clamp(Math.max(levels[i],waves[i]),0,1)*255);gl.texSubImage2D(gl.TEXTURE_2D,0,0,0,grid.cols,grid.rows,gl.RED,gl.UNSIGNED_BYTE,pixels);dirty=false;}const lineDevice=s.lineWidth*ratio;const snap=Math.round(lineDevice)%2===1?.5:0;gl.uniform1i(u.uState,0);gl.uniform2f(u.uResolution,canvas.width,canvas.height);gl.uniform2f(u.uOffset,Math.round(grid.offX*ratio)+snap,Math.round(grid.offY*ratio)+snap);gl.uniform1f(u.uCellSize,s.cellSize*ratio);gl.uniform2i(u.uCells,grid.cols,grid.rows);gl.uniform3fv(u.uColor,hexToRgb(s.color));gl.uniform3fv(u.uGridColor,hexToRgb(s.gridColor));gl.uniform1f(u.uLineWidth,lineDevice);gl.uniform1f(u.uMaxOpacity,s.maxOpacity);gl.uniform1f(u.uFillOpacity,s.fillOpacity);gl.uniform1f(u.uGridOpacity,s.gridOpacity);gl.uniform1f(u.uCellRadius,s.cellRadius*ratio);gl.uniform1f(u.uCellGap,s.cellGap*ratio);gl.uniform1i(u.uGridStyle,s.gridStyle);gl.uniform2f(u.uMouse,mouse.x*ratio,mouse.y*ratio);gl.uniform1f(u.uRadius,s.radius*ratio);gl.uniform1f(u.uSpotlight,s.spotlight);gl.uniform1f(u.uPresence,presence);gl.uniform1f(u.uEdgeFade,s.edgeFade);gl.uniform1f(u.uReveal,introClock>=1?1:1-Math.pow(1-introClock,2.2));gl.drawArrays(gl.TRIANGLES,0,3);gl.bindVertexArray(null);};const frame=now=>{raf=0;if(!visible||document.hidden)return;const s=settingsRef.current;const dt=last?clamp((now-last)/1e3,0,1/20):1/60;last=now;clock+=dt;if(introClock<1)introClock=Math.min(1,introClock+dt/INTRO_SECONDS);const follow=1-Math.exp(-dt/.07);mouse.x+=(pointer.x-mouse.x)*follow;mouse.y+=(pointer.y-mouse.y)*follow;const presenceGoal=pointer.inside?1:0;presence+=(presenceGoal-presence)*(1-Math.exp(-dt/.25));if(s.ambient>0&&!reduce&&levels.length){const chance=s.ambient*dt*levels.length*.04;let spawns=Math.floor(chance)+(Math.random()<chance%1?1:0);while(spawns-- >0)light(Math.floor(Math.random()*levels.length),.25+Math.random()*.45);}if(pulses.length)sweepPulses(s);else if(waves.length&&waves.some(value=>value>0)){waves.fill(0);dirty=true;}const holdSeconds=s.holdTime/1e3;const fadeStep=dt/(s.fadeDuration/1e3);const attack=1-Math.exp(-dt/.045);let active=pulses.length>0||introClock<1||Math.abs(presence-presenceGoal)>.002;for(let i=0;i<levels.length;i++){let target=targets[i];if(target<=0&&levels[i]<=0)continue;if(clock-touched[i]>holdSeconds)target=Math.max(0,target-fadeStep);targets[i]=target;const before=levels[i];const next=target>before?before+(target-before)*attack:target;levels[i]=next<.002?0:next;if(levels[i]!==before)dirty=true;if(levels[i]>0||targets[i]>0)active=true;}if(Math.abs(mouse.x-pointer.x)+Math.abs(mouse.y-pointer.y)>.05&&presence>.002)active=true;if(s.ambient>0&&!reduce)active=true;draw();if(active)raf=requestAnimationFrame(frame);};function wake(){if(!raf&&visible&&!document.hidden){last=0;raf=requestAnimationFrame(frame);}}const locate=event=>{const rect=container.getBoundingClientRect();const x=event.clientX-rect.left;const y=event.clientY-rect.top;return{x,y,inside:x>=0&&y>=0&&x<=rect.width&&y<=rect.height};};const onPointerMove=event=>{const{x,y,inside}=locate(event);const was=pointer.inside;pointer.inside=inside;if(!inside){if(was)wake();return;}pointer.x=x;pointer.y=y;if(!was){mouse.x=x;mouse.y=y;}energize(x,y);wake();};const onPointerDown=event=>{const s=settingsRef.current;const{x,y,inside}=locate(event);if(!inside||!s.clickPulse||reduce)return;pulses.push({x,y,t0:clock,strength:1});wake();};const onPointerLeave=()=>{pointer.inside=false;wake();};const onVisibility=()=>wake();const resizeObserver=new ResizeObserver(()=>{rebuild();draw();wake();});resizeObserver.observe(container);const intersection=new IntersectionObserver(entries=>{visible=entries.some(entry=>entry.isIntersecting);if(visible)wake();});intersection.observe(container);window.addEventListener(\"pointermove\",onPointerMove,{passive:true});window.addEventListener(\"pointerdown\",onPointerDown,{passive:true});document.documentElement.addEventListener(\"pointerleave\",onPointerLeave);document.addEventListener(\"visibilitychange\",onVisibility);rebuild();if(introClock<1)pulses.push({x:view.width/2,y:view.height/2,t0:.15,strength:.6});draw();wake();wakeRef.current=()=>{const s=settingsRef.current;if(s.cellSize!==view.cellSize)rebuild();dirty=true;draw();wake();};return()=>{cancelAnimationFrame(raf);wakeRef.current=null;resizeObserver.disconnect();intersection.disconnect();window.removeEventListener(\"pointermove\",onPointerMove);window.removeEventListener(\"pointerdown\",onPointerDown);document.documentElement.removeEventListener(\"pointerleave\",onPointerLeave);document.removeEventListener(\"visibilitychange\",onVisibility);gl.deleteTexture(stateTexture);gl.deleteVertexArray(vao);gl.deleteProgram(shader.program);gl.getExtension(\"WEBGL_lose_context\")?.loseContext();};},[]);React.useEffect(()=>{wakeRef.current?.();});return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,className:`cursor-grid${className?` ${className}`:\"\"}`,style:{...style,\"--cursor-grid-x\":`${fallbackCursor.x}px`,\"--cursor-grid-y\":`${fallbackCursor.y}px`,\"--cursor-grid-alpha\":fallbackCursor.visible?1:0},children:[/*#__PURE__*/_jsx(\"style\",{children:CURSOR_GRID_CSS}),/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,className:\"cursor-grid__canvas\",\"aria-hidden\":\"true\"}),children?/*#__PURE__*/_jsx(\"div\",{className:\"cursor-grid__content\",children:children}):null]});}addPropertyControls(CursorGrid,{cellSize:{type:ControlType.Number,title:\"Cell size\",defaultValue:60,min:8,max:200,step:1},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#d9d9d9\"},highlight:{type:ControlType.Enum,title:\"Highlight\",options:[\"cell\",\"area\"],optionTitles:[\"Cell\",\"Area\"],defaultValue:\"area\"},gridStyle:{type:ControlType.Enum,title:\"Grid style\",options:[\"lines\",\"dashed\",\"dots\",\"crosses\"],optionTitles:[\"Lines\",\"Dashed\",\"Dots\",\"Crosses\"],defaultValue:\"lines\"},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:140,min:1,max:500,step:1},holdTime:{type:ControlType.Number,title:\"Hold time\",defaultValue:400,min:0,max:2e3,step:10},fadeDuration:{type:ControlType.Number,title:\"Fade duration\",defaultValue:800,min:16,max:5e3,step:10},fillOpacity:{type:ControlType.Number,title:\"Fill opacity\",defaultValue:.06,min:0,max:1,step:.01},gridOpacity:{type:ControlType.Number,title:\"Grid opacity\",defaultValue:.08,min:0,max:1,step:.01},spotlight:{type:ControlType.Number,title:\"Spotlight\",defaultValue:.6,min:0,max:1,step:.01},clickPulse:{type:ControlType.Boolean,title:\"Click pulse\",defaultValue:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CursorGrid\",\"slots\":[\"children\"],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CursorGridInteractive.map"],"mappings":"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"}