{"version":3,"file":"Grid_Reveal.KNq-mCWC.mjs","names":["React.useRef","React.useState","React.startTransition","React.useCallback"],"sources":["https:/framerusercontent.com/modules/ymljbfSe0CagYEC5a0eq/rxV8aYa4EXUGBsHbEyAd/Grid_Reveal.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{useVisibleFrameLoop}from\"https://framerusercontent.com/modules/x1Zu9I12gbJxEvx0LjYW/C4Q4JCo5onFQz8wFl5xb/VisibleFrameLoop.js\";function clamp(n,min,max){return Math.min(max,Math.max(min,n));}function parseColor(color){const rgba=color.match(/rgba?\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)(?:\\s*,\\s*([\\d.]+))?\\s*\\)/);if(rgba){return[parseFloat(rgba[1]),parseFloat(rgba[2]),parseFloat(rgba[3]),rgba[4]!==undefined?parseFloat(rgba[4]):1];}let hex=color.replace(\"#\",\"\");if(hex.length===3)hex=hex.split(\"\").map(c=>c+c).join(\"\");const r=parseInt(hex.slice(0,2),16);const g=parseInt(hex.slice(2,4),16);const b=parseInt(hex.slice(4,6),16);const a=hex.length===8?parseInt(hex.slice(6,8),16)/255:1;return[r,g,b,a];}export default function TabularHoverReveal(props){const{columns=7,rows=13,dimLineColor=\"#DFC3F6\",dimLineOpacity=.18,dimLineWidth=1,litLineColor=\"#DFC3F6\",litLineOpacity=1,litLineWidth=1.5,showDots=true,dotColor=\"#DFC3F6\",dotRadius=2.5,spotlightRadius=220,spotlightEdgeBlur=120,followDelay=.08,backgroundColor=\"#0d0d12\",style}=props;const isStatic=useIsStaticRenderer();const canvasRef=React.useRef(null);const containerRef=React.useRef(null);const cachedRectRef=React.useRef(null);// Reused offscreen canvas for the lit/spotlight layer — allocated once\n// and resized in place, instead of calling document.createElement every\n// draw() call. Safari's canvas allocation + GC churn is noticeably more\n// expensive than Chrome's, so a per-frame `new canvas` at 60fps was the\n// main cost center here.\nconst tmpCanvasRef=React.useRef(null);const tmpCtxRef=React.useRef(null);const currentPosRef=React.useRef({x:-9999,y:-9999});const targetPosRef=React.useRef({x:-9999,y:-9999});const hasTargetRef=React.useRef(false);const rectDirtyRef=React.useRef(true);const lastDrawRef=React.useRef(0);const DRAW_THROTTLE=1e3/60;// Below 1200px the grid is static: no spotlight, no loop, no listeners.\nconst[isNarrow,setIsNarrow]=React.useState(false);const propsRef=React.useRef(props);propsRef.current=props;const interactive=!isStatic&&!isNarrow;React.useEffect(()=>{if(typeof window===\"undefined\")return;const update=()=>React.startTransition(()=>setIsNarrow(window.innerWidth<1200));update();window.addEventListener(\"resize\",update);return()=>window.removeEventListener(\"resize\",update);},[]);const refreshRect=React.useCallback(()=>{const el=containerRef.current;if(!el)return;const r=el.getBoundingClientRect();cachedRectRef.current={left:r.left,top:r.top,width:r.width,height:r.height};rectDirtyRef.current=false;},[]);// Lazily create (or resize) the reused offscreen canvas. Called from\n// draw() and from the ResizeObserver so it always matches the main\n// canvas's backing-store size.\nconst ensureTmpCanvas=React.useCallback((W,H)=>{let tmp=tmpCanvasRef.current;if(!tmp){tmp=document.createElement(\"canvas\");tmpCanvasRef.current=tmp;tmpCtxRef.current=tmp.getContext(\"2d\");}if(tmp.width!==W||tmp.height!==H){tmp.width=W;tmp.height=H;}return tmpCtxRef.current;},[]);// ─── Draw ───────────────────────────────────────────────────────────────\n// Strategy:\n//   1. Draw all lines dim on main canvas\n//   2. On a reused offscreen canvas: draw all lines lit + dots\n//   3. Apply destination-in with a radial gradient mask (opaque core → transparent edge)\n//   4. Composite offscreen canvas onto main canvas\n// This gives a true circular spotlight with smooth radial falloff on the edges.\nconst draw=React.useCallback((mx,my)=>{const canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;const p=propsRef.current;const W=canvas.width;const H=canvas.height;const cols=Math.max(2,p.columns);const rowCount=Math.max(2,p.rows);const colXs=[];for(let i=1;i<cols;i++)colXs.push(i/cols*W);const rowYs=[];for(let i=1;i<rowCount;i++)rowYs.push(i/rowCount*H);ctx.clearRect(0,0,W,H);const R=Math.max(1,p.spotlightRadius);// solidR is where the full-bright zone ends; fade happens solidR → R\nconst solidR=Math.max(0,R-clamp(p.spotlightEdgeBlur,0,R));const[lr,lg,lb]=parseColor(p.litLineColor);const[dr,dg,db]=parseColor(p.dimLineColor);const[dotr,dotg,dotb]=parseColor(p.dotColor);const dimStyle=`rgba(${dr},${dg},${db},${p.dimLineOpacity})`;const litStyle=`rgba(${lr},${lg},${lb},${p.litLineOpacity})`;// ── 1. Dim layer — full canvas ──────────────────────────────────────\nctx.beginPath();colXs.forEach(x=>{ctx.moveTo(x,0);ctx.lineTo(x,H);});rowYs.forEach(y=>{ctx.moveTo(0,y);ctx.lineTo(W,y);});ctx.strokeStyle=dimStyle;ctx.lineWidth=p.dimLineWidth;ctx.stroke();// ── 2. Lit layer — clipped to spotlight ────────────────────────────\nif(mx>-9e3){// Reused offscreen canvas: lit lines + dots, then masked radially.\nconst tc=ensureTmpCanvas(W,H);if(!tc)return;// Composite mode may have been left as \"destination-in\" from the\n// previous frame — reset before drawing fresh content, and clear\n// the leftover pixels since this canvas is no longer recreated\n// blank every frame.\ntc.globalCompositeOperation=\"source-over\";tc.clearRect(0,0,W,H);// Lit lines\ntc.beginPath();colXs.forEach(x=>{tc.moveTo(x,0);tc.lineTo(x,H);});rowYs.forEach(y=>{tc.moveTo(0,y);tc.lineTo(W,y);});tc.strokeStyle=litStyle;tc.lineWidth=p.litLineWidth;tc.stroke();// Dots at intersections — alpha fades with distance\nif(p.showDots){colXs.forEach(x=>{rowYs.forEach(y=>{const d=Math.sqrt((x-mx)**2+(y-my)**2);if(d>=R)return;// smooth step falloff for dots\nconst t=1-d/R;const smooth=t*t*(3-2*t);tc.beginPath();tc.arc(x,y,p.dotRadius,0,Math.PI*2);tc.fillStyle=`rgba(${dotr},${dotg},${dotb},${smooth*p.litLineOpacity})`;tc.fill();});});}// Radial gradient mask: fully opaque inside solidR, fades to\n// transparent at R. destination-in keeps only masked-opaque pixels.\nconst grad=tc.createRadialGradient(mx,my,solidR,mx,my,R);grad.addColorStop(0,\"rgba(0,0,0,1)\");grad.addColorStop(1,\"rgba(0,0,0,0)\");tc.globalCompositeOperation=\"destination-in\";tc.fillStyle=grad;tc.fillRect(0,0,W,H);// Composite onto main canvas\nctx.drawImage(tc.canvas,0,0);}},[ensureTmpCanvas]);// ─── Frame loop ─────────────────────────────────────────────────────────\n// Runs only while the pointer has a target and the grid is on screen, and\n// goes idle as soon as the spotlight has caught up with the cursor.\nconst tick=(now,dtMs)=>{if(!hasTargetRef.current)return false;const dt=clamp(dtMs/1e3,0,.25);const tau=Math.max(0,propsRef.current.followDelay);const alpha=tau<=0?1:1-Math.exp(-dt/Math.max(tau,.001));const eased=1-(1-alpha)**2;const cur=currentPosRef.current;const tgt=targetPosRef.current;let nx=cur.x+(tgt.x-cur.x)*eased;let ny=cur.y+(tgt.y-cur.y)*eased;const settled=Math.abs(tgt.x-nx)<.5&&Math.abs(tgt.y-ny)<.5;if(settled){nx=tgt.x;ny=tgt.y;}currentPosRef.current={x:nx,y:ny};if(settled||now-lastDrawRef.current>=DRAW_THROTTLE){lastDrawRef.current=now;draw(nx,ny);}return!settled;};const loop=useVisibleFrameLoop(containerRef,tick,{enabled:interactive,ignoreReducedMotion:true});// Back to the plain grid when the spotlight is switched off.\nReact.useEffect(()=>{if(interactive)return;hasTargetRef.current=false;targetPosRef.current={x:-9999,y:-9999};currentPosRef.current={x:-9999,y:-9999};draw(-9999,-9999);},[interactive,draw]);// ─── Canvas resize ──────────────────────────────────────────────────────\nReact.useEffect(()=>{const canvas=canvasRef.current;const container=containerRef.current;if(!canvas||!container)return;const ro=new ResizeObserver(entries=>{for(const entry of entries){const{width,height}=entry.contentRect;const dpr=window.devicePixelRatio||1;canvas.width=width*dpr;canvas.height=height*dpr;canvas.style.width=`${width}px`;canvas.style.height=`${height}px`;const ctx=canvas.getContext(\"2d\");if(ctx)ctx.scale(dpr,dpr);ensureTmpCanvas(canvas.width,canvas.height);refreshRect();draw(currentPosRef.current.x,currentPosRef.current.y);}});ro.observe(container);return()=>ro.disconnect();},[draw,refreshRect,ensureTmpCanvas]);// ─── Window-level pointer tracking ──────────────────────────────────────\n// Listening on window so spotlight works even when cursor is over\n// child layers / Framer components stacked on top of this one.\n// Canvas has pointerEvents:none so it never blocks clicks.\nconst isInsideRef=React.useRef(false);React.useEffect(()=>{if(typeof window===\"undefined\")return;if(!interactive)return;const onMove=e=>{// Off-screen grids ignore the pointer entirely.\nif(!loop.isVisible()&&!isInsideRef.current)return;// Scrolling only marks the rect stale; it is re-measured here, on\n// the next pointer move, instead of on every scroll event.\nif(rectDirtyRef.current)refreshRect();const rect=cachedRectRef.current;if(!rect)return;const x=e.clientX-rect.left;const y=e.clientY-rect.top;const inside=x>=0&&x<=rect.width&&y>=0&&y<=rect.height;if(inside){isInsideRef.current=true;targetPosRef.current={x:clamp(x,0,rect.width),y:clamp(y,0,rect.height)};hasTargetRef.current=true;loop.wake();}else if(isInsideRef.current){isInsideRef.current=false;hasTargetRef.current=false;targetPosRef.current={x:-9999,y:-9999};currentPosRef.current={x:-9999,y:-9999};draw(-9999,-9999);}};const markDirty=()=>{rectDirtyRef.current=true;};window.addEventListener(\"mousemove\",onMove,{passive:true});window.addEventListener(\"scroll\",markDirty,{passive:true});window.addEventListener(\"resize\",markDirty);return()=>{window.removeEventListener(\"mousemove\",onMove);window.removeEventListener(\"scroll\",markDirty);window.removeEventListener(\"resize\",markDirty);};},[interactive,draw,refreshRect,loop]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{...style,position:\"relative\",width:\"100%\",height:\"100%\",background:backgroundColor,overflow:\"hidden\",transform:\"translateZ(0)\",WebkitTransform:\"translateZ(0)\"},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{position:\"absolute\",inset:0,display:\"block\",pointerEvents:\"none\"}})});}addPropertyControls(TabularHoverReveal,{columns:{type:ControlType.Number,title:\"Columns\",defaultValue:7,min:2,max:24,step:1},rows:{type:ControlType.Number,title:\"Rows\",defaultValue:13,min:2,max:40,step:1},dimLineColor:{type:ControlType.Color,title:\"Dim Color\",defaultValue:\"#DFC3F6\"},dimLineOpacity:{type:ControlType.Number,title:\"Dim Opacity\",defaultValue:.18,min:0,max:1,step:.01},dimLineWidth:{type:ControlType.Number,title:\"Dim Width\",defaultValue:1,min:.5,max:4,step:.5,unit:\"px\"},litLineColor:{type:ControlType.Color,title:\"Lit Color\",defaultValue:\"#DFC3F6\"},litLineOpacity:{type:ControlType.Number,title:\"Lit Opacity\",defaultValue:1,min:0,max:1,step:.01},litLineWidth:{type:ControlType.Number,title:\"Lit Width\",defaultValue:1.5,min:.5,max:6,step:.5,unit:\"px\"},showDots:{type:ControlType.Boolean,title:\"Dots\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},dotColor:{type:ControlType.Color,title:\"Dot Color\",defaultValue:\"#DFC3F6\",hidden:({showDots})=>!showDots},dotRadius:{type:ControlType.Number,title:\"Dot Size\",defaultValue:2.5,min:1,max:8,step:.5,unit:\"px\",hidden:({showDots})=>!showDots},spotlightRadius:{type:ControlType.Number,title:\"Spotlight R\",defaultValue:220,min:40,max:800,step:10,unit:\"px\"},spotlightEdgeBlur:{type:ControlType.Number,title:\"Edge Blur\",defaultValue:120,min:0,max:400,step:10,unit:\"px\"},followDelay:{type:ControlType.Number,title:\"Follow Delay\",defaultValue:.08,min:0,max:1,step:.01,unit:\"s\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#0d0d12\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TabularHoverReveal\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}