{"version":3,"file":"Grid_lines.Bdq9IB-R.mjs","names":["useRef"],"sources":["https:/framerusercontent.com/modules/DB7LpSfRa6UchzoXWYr9/2ykCmZW29MTi4y5K0MHB/Grid_lines.js"],"sourcesContent":["/**\n * PenseroBackground.tsx\n * WebGL atmosphere with mouse light, scroll parallax, living gradient,\n * dynamic grain, grid, and vignette — Framer Code Component\n * ─────────────────────────────────────────────────────────────────────────────\n *\n * SETUP\n * 1. Assets → Code → \"+ Add file\" → paste as \"PenseroBackground.tsx\"\n * 2. Position = Fixed, Width = 100vw, Height = 100vh, Z-index = 0\n * 3. Lock the layer so you don't accidentally select it.\n *\n * Replaces the old CSS-based PenseroBackground (grid + grain + glow)\n * with a single WebGL canvas that combines all layers + interactivity.\n */import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{addPropertyControls,ControlType}from\"framer\";// ─── Shaders ─────────────────────────────────────────────────────────────────\nconst VS=`\nattribute vec2 a_pos;\nvarying vec2 v_uv;\nvoid main(){\n  v_uv=a_pos*0.5+0.5;\n  gl_Position=vec4(a_pos,0,1);\n}`;const FS=`\nprecision mediump float;\nvarying vec2 v_uv;\nuniform float u_time;\nuniform vec2 u_res;\nuniform vec2 u_mouse;\nuniform float u_scroll;\nuniform float u_mouseActive;\n\n// Glow\nuniform vec3 u_glowColor;\nuniform float u_glowIntensity;\nuniform float u_glowSpeed;\nuniform float u_topGlow;\n\n// Mouse\nuniform float u_mouseLightIntensity;\nuniform float u_mouseLightSize;\nuniform float u_mouseGrainReveal;\n\n// Scroll\nuniform float u_scrollParallax;\n\n// Grid\nuniform float u_showGrid;\nuniform float u_gridOpacity;\nuniform float u_gridSize;\n\n// Grain\nuniform float u_grainIntensity;\n\n// Vignette\nuniform float u_vignetteStrength;\n\nfloat hash(vec2 p){\n  return fract(sin(dot(p,vec2(127.1,311.7)))*43758.5453);\n}\n\nfloat noise(vec2 p){\n  vec2 i=floor(p);\n  vec2 f=fract(p);\n  f=f*f*(3.0-2.0*f);\n  return mix(\n    mix(hash(i),hash(i+vec2(1,0)),f.x),\n    mix(hash(i+vec2(0,1)),hash(i+vec2(1,1)),f.x),\n    f.y\n  );\n}\n\nfloat fbm(vec2 p){\n  float v=0.0,a=0.5;\n  for(int i=0;i<5;i++){\n    v+=a*noise(p);\n    p=p*2.1+vec2(100.0);\n    a*=0.5;\n  }\n  return v;\n}\n\nvoid main(){\n  vec2 uv=v_uv;\n  float t=u_time;\n  float aspect=u_res.x/u_res.y;\n\n  // Scroll parallax\n  float scrollOff=u_scroll*u_scrollParallax;\n  vec2 noiseUV=vec2(uv.x*aspect,uv.y+scrollOff);\n\n  // Living gradient\n  float n1=fbm(noiseUV*1.2+t*0.02*u_glowSpeed);\n  float n2=fbm(noiseUV*0.8-t*0.015*u_glowSpeed+vec2(50.0));\n  float n3=fbm(noiseUV*1.5+t*0.025*u_glowSpeed+vec2(100.0));\n\n  float greenAmount=(n1*0.5+n2*0.3+n3*0.2);\n  greenAmount=greenAmount*greenAmount;\n\n  vec3 baseColor=vec3(0.102,0.11,0.102);\n  vec3 gradientColor=baseColor+u_glowColor*greenAmount*0.035*u_glowIntensity;\n\n  // Top glow\n  float topG=exp(-uv.y*3.0)*u_topGlow;\n  gradientColor+=u_glowColor*topG;\n\n  // Mouse light\n  vec2 mouseUV=u_mouse;\n  mouseUV.x*=aspect;\n  vec2 uvA=vec2(uv.x*aspect,uv.y);\n  float mouseDist=length(uvA-mouseUV);\n  float mSize=u_mouseLightSize;\n  float mouseLight=exp(-mouseDist*mouseDist*mSize)*u_mouseLightIntensity*u_mouseActive;\n  float mouseReveal=exp(-mouseDist*mouseDist*(mSize*0.6))*u_mouseActive;\n\n  // Dynamic grain\n  float grain=hash(uv*u_res+fract(t*60.0));\n  grain=(grain-0.5);\n  float grainAmt=u_grainIntensity+mouseReveal*u_mouseGrainReveal;\n  gradientColor+=grain*grainAmt;\n\n  // Mouse glow — pure neutral white\n  gradientColor+=vec3(1.0)*mouseLight;\n\n  // Grid\n  if(u_showGrid>0.5){\n    vec2 gridUV=uv*u_res;\n    gridUV.x-=u_res.x*0.5;\n    gridUV.y+=u_scroll*u_res.y*0.15;\n    vec2 gridMod=mod(gridUV,u_gridSize);\n    float lineX=step(gridMod.x,1.0);\n    float lineY=step(gridMod.y,1.0);\n    float grid=max(lineX,lineY);\n    vec2 gridFadeCenter=vec2(0.5,0.15);\n    float gridFadeDist=length((uv-gridFadeCenter)*vec2(1.0,1.5));\n    float gridFade=exp(-gridFadeDist*gridFadeDist*4.0);\n    gradientColor+=vec3(1.0)*grid*u_gridOpacity*gridFade;\n  }\n\n  // Vignette\n  float vignette=1.0-length((uv-0.5)*vec2(1.2,1.0))*u_vignetteStrength;\n  gradientColor*=max(0.0,vignette);\n\n  gl_FragColor=vec4(gradientColor,1.0);\n}\n`;// ─── Hex to RGB ──────────────────────────────────────────────────────────────\nfunction parseColor(color){// Handle hex: #16DB65 or 16DB65\nif(color.startsWith(\"#\")||/^[0-9a-fA-F]{6}$/.test(color)){const h=color.replace(\"#\",\"\");return[parseInt(h.substring(0,2),16)/255,parseInt(h.substring(2,4),16)/255,parseInt(h.substring(4,6),16)/255];}// Handle rgb(r,g,b) or rgba(r,g,b,a)\nconst match=color.match(/(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)/);if(match){return[parseInt(match[1])/255,parseInt(match[2])/255,parseInt(match[3])/255];}// Fallback: brand green\nreturn[22/255,219/255,101/255];}// ─── Scene ───────────────────────────────────────────────────────────────────\nfunction initScene(canvas,props){const gl=canvas.getContext(\"webgl\",{alpha:false,premultipliedAlpha:false});if(!gl)return()=>{};const dpr=Math.min(window.devicePixelRatio||1,2);function syncSize(){const w=canvas.clientWidth;const h=canvas.clientHeight;if(w<10||h<10)return;canvas.width=w*dpr;canvas.height=h*dpr;gl.viewport(0,0,canvas.width,canvas.height);}syncSize();// Match page background so resize flash is invisible\ngl.clearColor(.102,.11,.102,1);function compile(src,type){const s=gl.createShader(type);gl.shaderSource(s,src);gl.compileShader(s);if(!gl.getShaderParameter(s,gl.COMPILE_STATUS)){console.error(gl.getShaderInfoLog(s));return null;}return s;}const prog=gl.createProgram();gl.attachShader(prog,compile(VS,gl.VERTEX_SHADER));gl.attachShader(prog,compile(FS,gl.FRAGMENT_SHADER));gl.linkProgram(prog);gl.useProgram(prog);const buf=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,buf);gl.bufferData(gl.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),gl.STATIC_DRAW);const aPos=gl.getAttribLocation(prog,\"a_pos\");gl.enableVertexAttribArray(aPos);gl.vertexAttribPointer(aPos,2,gl.FLOAT,false,0,0);// Uniform locations\nconst u={time:gl.getUniformLocation(prog,\"u_time\"),res:gl.getUniformLocation(prog,\"u_res\"),mouse:gl.getUniformLocation(prog,\"u_mouse\"),scroll:gl.getUniformLocation(prog,\"u_scroll\"),mouseActive:gl.getUniformLocation(prog,\"u_mouseActive\"),glowColor:gl.getUniformLocation(prog,\"u_glowColor\"),glowIntensity:gl.getUniformLocation(prog,\"u_glowIntensity\"),glowSpeed:gl.getUniformLocation(prog,\"u_glowSpeed\"),topGlow:gl.getUniformLocation(prog,\"u_topGlow\"),mouseLightIntensity:gl.getUniformLocation(prog,\"u_mouseLightIntensity\"),mouseLightSize:gl.getUniformLocation(prog,\"u_mouseLightSize\"),mouseGrainReveal:gl.getUniformLocation(prog,\"u_mouseGrainReveal\"),scrollParallax:gl.getUniformLocation(prog,\"u_scrollParallax\"),showGrid:gl.getUniformLocation(prog,\"u_showGrid\"),gridOpacity:gl.getUniformLocation(prog,\"u_gridOpacity\"),gridSize:gl.getUniformLocation(prog,\"u_gridSize\"),grainIntensity:gl.getUniformLocation(prog,\"u_grainIntensity\"),vignetteStrength:gl.getUniformLocation(prog,\"u_vignetteStrength\")};const glowRgb=parseColor(props.glowColor);// Mouse tracking — two-stage delayed follow\n// Stage 1: tx,ty → x,y (fast easing, tracks raw cursor)\n// Stage 2: x,y → rx,ry (delayed follow with ease-out)\nconst mouse={tx:.5,ty:.5,x:.5,y:.5,rx:.5,ry:.5,active:0,tActive:0};const easing=Math.max(.01,Math.min(.2,props.mouseEasing));const delay=Math.max(.005,Math.min(.08,.06/Math.max(.1,props.mouseDelay)));const onMouseMove=e=>{mouse.tx=e.clientX/window.innerWidth;mouse.ty=e.clientY/window.innerHeight;mouse.tActive=1;};const onMouseLeave=()=>{mouse.tActive=0;};window.addEventListener(\"mousemove\",onMouseMove,{passive:true});document.addEventListener(\"mouseleave\",onMouseLeave);// Scroll tracking\nlet scrollNorm=0;const onScroll=()=>{const maxScroll=document.documentElement.scrollHeight-window.innerHeight;scrollNorm=maxScroll>0?window.scrollY/maxScroll:0;};window.addEventListener(\"scroll\",onScroll,{passive:true});// Render\nlet running=true;let rafId=0;const startTime=performance.now();// Render — extracted so resize can call it immediately\nfunction render(t){gl.clear(gl.COLOR_BUFFER_BIT);gl.uniform1f(u.time,t);gl.uniform2f(u.res,canvas.width/dpr,canvas.height/dpr);gl.uniform2f(u.mouse,mouse.rx,mouse.ry);gl.uniform1f(u.scroll,scrollNorm);gl.uniform1f(u.mouseActive,mouse.active);gl.uniform3f(u.glowColor,glowRgb[0],glowRgb[1],glowRgb[2]);gl.uniform1f(u.glowIntensity,props.glowIntensity);gl.uniform1f(u.glowSpeed,props.glowSpeed);gl.uniform1f(u.topGlow,props.topGlow);gl.uniform1f(u.mouseLightIntensity,props.mouseLightIntensity);gl.uniform1f(u.mouseLightSize,props.mouseLightSize);gl.uniform1f(u.mouseGrainReveal,props.mouseGrainReveal);gl.uniform1f(u.scrollParallax,props.scrollParallax);gl.uniform1f(u.showGrid,props.showGrid?1:0);gl.uniform1f(u.gridOpacity,props.gridOpacity);gl.uniform1f(u.gridSize,props.gridSize);gl.uniform1f(u.grainIntensity,props.grainIntensity);gl.uniform1f(u.vignetteStrength,props.vignetteStrength);gl.drawArrays(gl.TRIANGLE_STRIP,0,4);}function tick(){if(!running)return;const t=(performance.now()-startTime)/1e3;// Stage 1: fast track to cursor\nmouse.x+=(mouse.tx-mouse.x)*easing;mouse.y+=(mouse.ty-mouse.y)*easing;// Stage 2: delayed follow with ease-out\nmouse.rx+=(mouse.x-mouse.rx)*delay;mouse.ry+=(mouse.y-mouse.ry)*delay;mouse.active+=(mouse.tActive-mouse.active)*(delay*.8);render(t);rafId=requestAnimationFrame(tick);}tick();// Lifecycle\nconst onVisibility=()=>{if(document.hidden){running=false;cancelAnimationFrame(rafId);}else{running=true;tick();}};document.addEventListener(\"visibilitychange\",onVisibility);let inView=true;const io=new IntersectionObserver(([entry])=>{if(entry.isIntersecting&&!running){running=true;tick();}else if(!entry.isIntersecting){running=false;cancelAnimationFrame(rafId);}},{threshold:0});io.observe(canvas);const ro=new ResizeObserver(()=>{syncSize();// Render immediately so the resized canvas never shows the clear color\nrender((performance.now()-startTime)/1e3);});ro.observe(canvas);// WebGL context recovery\nconst onContextLost=e=>{e.preventDefault();running=false;cancelAnimationFrame(rafId);};const onContextRestored=()=>{// Re-setup GL state\ngl.clearColor(.102,.11,.102,1);gl.useProgram(prog);gl.enable(gl.BLEND);gl.blendFunc(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA);syncSize();running=true;tick();};canvas.addEventListener(\"webglcontextlost\",onContextLost);canvas.addEventListener(\"webglcontextrestored\",onContextRestored);return()=>{running=false;cancelAnimationFrame(rafId);io.disconnect();ro.disconnect();window.removeEventListener(\"mousemove\",onMouseMove);document.removeEventListener(\"mouseleave\",onMouseLeave);window.removeEventListener(\"scroll\",onScroll);document.removeEventListener(\"visibilitychange\",onVisibility);canvas.removeEventListener(\"webglcontextlost\",onContextLost);canvas.removeEventListener(\"webglcontextrestored\",onContextRestored);};}// ─── Component ────────────────────────────────────────────────────────────────\nexport default function PenseroBackground({glowColor=\"#16DB65\",glowIntensity=1,glowSpeed=1,topGlow=.015,mouseLightIntensity=.045,mouseLightSize=8,mouseGrainReveal=.035,mouseEasing=.04,mouseDelay=1,scrollParallax=.3,showGrid=true,gridOpacity=.02,gridSize=118,grainIntensity=.025,vignetteStrength=.4}){const canvasRef=useRef(null);useEffect(()=>{const canvas=canvasRef.current;if(!canvas)return;if(typeof window!==\"undefined\"&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches)return;let cleanup;const sizeObserver=new ResizeObserver(()=>{if(canvas.clientWidth<100||canvas.clientHeight<100)return;if(cleanup)return;sizeObserver.disconnect();cleanup=initScene(canvas,{glowColor,glowIntensity,glowSpeed,topGlow,mouseLightIntensity,mouseLightSize,mouseGrainReveal,mouseEasing,mouseDelay,scrollParallax,showGrid,gridOpacity,gridSize,grainIntensity,vignetteStrength});});sizeObserver.observe(canvas);if(canvas.clientWidth>=100&&canvas.clientHeight>=100){sizeObserver.disconnect();cleanup=initScene(canvas,{glowColor,glowIntensity,glowSpeed,topGlow,mouseLightIntensity,mouseLightSize,mouseGrainReveal,mouseEasing,mouseDelay,scrollParallax,showGrid,gridOpacity,gridSize,grainIntensity,vignetteStrength});}return()=>{sizeObserver.disconnect();cleanup?.();};},[glowColor,glowIntensity,glowSpeed,topGlow,mouseLightIntensity,mouseLightSize,mouseGrainReveal,mouseEasing,mouseDelay,scrollParallax,showGrid,gridOpacity,gridSize,grainIntensity,vignetteStrength]);return /*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{display:\"block\",width:\"100%\",height:\"100%\"}});}// ─── Property controls ────────────────────────────────────────────────────────\naddPropertyControls(PenseroBackground,{// ── Glow / Gradient ───────────────────────────────────────────────────\nglowColor:{type:ControlType.Color,title:\"Glow color\",defaultValue:\"#16DB65\"},glowIntensity:{type:ControlType.Number,title:\"Glow intensity\",defaultValue:1,min:0,max:3,step:.1,displayStepper:true},glowSpeed:{type:ControlType.Number,title:\"Glow speed\",defaultValue:1,min:.1,max:4,step:.1,displayStepper:true},topGlow:{type:ControlType.Number,title:\"Top glow\",defaultValue:.015,min:0,max:.06,step:.005,displayStepper:true},// ── Mouse ─────────────────────────────────────────────────────────────\nmouseLightIntensity:{type:ControlType.Number,title:\"Mouse intensity\",defaultValue:.045,min:0,max:.15,step:.005,displayStepper:true},mouseLightSize:{type:ControlType.Number,title:\"Mouse size\",defaultValue:8,min:2,max:20,step:.5,displayStepper:true},mouseGrainReveal:{type:ControlType.Number,title:\"Mouse grain reveal\",defaultValue:.035,min:0,max:.1,step:.005,displayStepper:true},mouseEasing:{type:ControlType.Number,title:\"Mouse easing\",defaultValue:.04,min:.01,max:.15,step:.005,displayStepper:true},mouseDelay:{type:ControlType.Number,title:\"Mouse delay\",defaultValue:1,min:.2,max:4,step:.1,displayStepper:true},// ── Scroll ────────────────────────────────────────────────────────────\nscrollParallax:{type:ControlType.Number,title:\"Scroll parallax\",defaultValue:.3,min:0,max:1,step:.05,displayStepper:true},// ── Grid ──────────────────────────────────────────────────────────────\nshowGrid:{type:ControlType.Boolean,title:\"Grid\",defaultValue:true},gridOpacity:{type:ControlType.Number,title:\"Grid opacity\",defaultValue:.02,min:0,max:.08,step:.005,displayStepper:true},gridSize:{type:ControlType.Number,title:\"Grid size\",defaultValue:118,min:40,max:300,step:2,displayStepper:true},// ── Grain ─────────────────────────────────────────────────────────────\ngrainIntensity:{type:ControlType.Number,title:\"Grain intensity\",defaultValue:.025,min:0,max:.08,step:.005,displayStepper:true},// ── Vignette ──────────────────────────────────────────────────────────\nvignetteStrength:{type:ControlType.Number,title:\"Vignette\",defaultValue:.4,min:0,max:1,step:.05,displayStepper:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"PenseroBackground\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Grid_lines.map"],"mappings":"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"}