1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6262],{20470:(e,a,o)=>{o.d(a,{l:()=>u});var t=o(35122);class u extends t.V{constructor(e,{attributes:a={}}={}){Object.assign(a,{position:{size:2,data:new Float32Array([-1,-1,3,-1,-1,3])},uv:{size:2,data:new Float32Array([0,0,2,0,0,2])}}),super(e,a)}}},56262:(e,a,o)=>{o.r(a),o.d(a,{default:()=>m});var t=o(48380),u=o(55265),l=o(20470),r=o(76470),n=o(8618),i=o(3184);let v=e=>{let a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return a?[parseInt(a[1],16)/255,parseInt(a[2],16)/255,parseInt(a[3],16)/255]:[1,1,1]},c=`#version 300 es 2in vec2 position; 3void main() { 4 gl_Position = vec4(position, 0.0, 1.0); 5} 6`,f=`#version 300 es 7precision highp float; 8uniform vec2 iResolution; 9uniform float iTime; 10uniform float uTimeSpeed; 11uniform float uColorBalance; 12uniform float uWarpStrength; 13uniform float uWarpFrequency; 14uniform float uWarpSpeed; 15uniform float uWarpAmplitude; 16uniform float uBlendAngle; 17uniform float uBlendSoftness; 18uniform float uRotationAmount; 19uniform float uNoiseScale; 20uniform float uGrainAmount; 21uniform float uGrainScale; 22uniform float uGrainAnimated; 23uniform float uContrast; 24uniform float uGamma; 25uniform float uSaturation; 26uniform vec2 uCenterOffset; 27uniform float uZoom; 28uniform vec3 uColor1; 29uniform vec3 uColor2; 30uniform vec3 uColor3; 31out vec4 fragColor; 32#define S(a,b,t) smoothstep(a,b,t) 33mat2 Rot(float a){float s=sin(a),c=cos(a);return mat2(c,-s,s,c);} 34vec2 hash(vec2 p){p=vec2(dot(p,vec2(2127.1,81.17)),dot(p,vec2(1269.5,283.37)));return fract(sin(p)*43758.5453);} 35float noise(vec2 p){vec2 i=floor(p),f=fract(p),u=f*f*(3.0-2.0*f);float n=mix(mix(dot(-1.0+2.0*hash(i+vec2(0.0,0.0)),f-vec2(0.0,0.0)),dot(-1.0+2.0*hash(i+vec2(1.0,0.0)),f-vec2(1.0,0.0)),u.x),mix(dot(-1.0+2.0*hash(i+vec2(0.0,1.0)),f-vec2(0.0,1.0)),dot(-1.0+2.0*hash(i+vec2(1.0,1.0)),f-vec2(1.0,1.0)),u.x),u.y);return 0.5+0.5*n;} 36void mainImage(out vec4 o, vec2 C){ 37 float t=iTime*uTimeSpeed; 38 vec2 uv=C/iResolution.xy; 39 float ratio=iResolution.x/iResolution.y; 40 vec2 tuv=uv-0.5+uCenterOffset; 41 tuv/=max(uZoom,0.001); 42 43 float degree=noise(vec2(t*0.1,tuv.x*tuv.y)*uNoiseScale); 44 tuv.y*=1.0/ratio; 45 tuv*=Rot(radians((degree-0.5)*uRotationAmount+180.0)); 46 tuv.y*=ratio; 47 48 float frequency=uWarpFrequency; 49 float ws=max(uWarpStrength,0.001); 50 float amplitude=uWarpAmplitude/ws; 51 float warpTime=t*uWarpSpeed; 52 tuv.x+=sin(tuv.y*frequency+warpTime)/amplitude; 53 tuv.y+=sin(tuv.x*(frequency*1.5)+warpTime)/(amplitude*0.5); 54 55 vec3 colLav=uColor1; 56 vec3 colOrg=uColor2; 57 vec3 colDark=uColor3; 58 float b=uColorBalance; 59 float s=max(uBlendSoftness,0.0); 60 mat2 blendRot=Rot(radians(uBlendAngle)); 61 float blendX=(tuv*blendRot).x; 62 float edge0=-0.3-b-s; 63 float edge1=0.2-b+s; 64 float v0=0.5-b+s; 65 float v1=-0.3-b-s; 66 vec3 layer1=mix(colDark,colOrg,S(edge0,edge1,blendX)); 67 vec3 layer2=mix(colOrg,colLav,S(edge0,edge1,blendX)); 68 vec3 col=mix(layer1,layer2,S(v0,v1,tuv.y)); 69 70 vec2 grainUv=uv*max(uGrainScale,0.001); 71 if(uGrainAnimated>0.5){grainUv+=vec2(iTime*0.05);} 72 float grain=fract(sin(dot(grainUv,vec2(12.9898,78.233)))*43758.5453); 73 col+=(grain-0.5)*uGrainAmount; 74 75 col=(col-0.5)*uContrast+0.5; 76 float luma=dot(col,vec3(0.2126,0.7152,0.0722)); 77 col=mix(vec3(luma),col,uSaturation); 78 col=pow(max(col,0.0),vec3(1.0/max(uGamma,0.001))); 79 col=clamp(col,0.0,1.0); 80 81 o=vec4(col,1.0); 82} 83void main(){ 84 vec4 o=vec4(0.0); 85 mainImage(o,gl_FragCoord.xy); 86 fragColor=o; 87} 88`,s=new WeakMap,m=({timeSpeed:e=.25,colorBalance:a=0,warpStrength:o=1,warpFrequency:m=5,warpSpeed:d=2,warpAmplitude:p=50,blendAngle:g=0,blendSoftness:h=.05,rotationAmount:y=500,noiseScale:w=2,grainAmount:C=.1,grainScale:A=2,grainAnimated:S=!1,contrast:x=1.5,gamma:F=1,saturation:b=1,centerX:R=0,centerY:W=0,zoom:B=.9,backgroundColor:G="transparent",color1:T="#FF9FFC",color2:O="#5227FF",color3:q="#B497CF",className:k=""})=>{let E=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let e=E.current;if(!e)return;let a=new u.A({webgl:2,alpha:!0,antialias:!1,dpr:Math.min(window.devicePixelRatio||1,2)}),o=a.gl,t=o.canvas;t.style.width="100%",t.style.height="100%",t.style.display="block",e.appendChild(t);let i=new l.l(o),v=new r.B(o,{vertex:c,fragment:f,uniforms:{iTime:{value:0},iResolution:{value:new Float32Array([1,1])},uTimeSpeed:{value:.25},uColorBalance:{value:0},uWarpStrength:{value:1},uWarpFrequency:{value:5},uWarpSpeed:{value:2},uWarpAmplitude:{value:50},uBlendAngle:{value:0},uBlendSoftness:{value:.05},uRotationAmount:{value:500},uNoiseScale:{value:2},uGrainAmount:{value:.1},uGrainScale:{value:2},uGrainAnimated:{value:0},uContrast:{value:1.5},uGamma:{value:1},uSaturation:{value:1},uCenterOffset:{value:new Float32Array([0,0])},uZoom:{value:.9},uColor1:{value:new Float32Array([1,1,1])},uColor2:{value:new Float32Array([1,1,1])},uColor3:{value:new Float32Array([1,1,1])}}}),m=new n.e(o,{geometry:i,program:v});s.set(e,{renderer:a,program:v,mesh:m});let d=()=>{let t=e.getBoundingClientRect(),u=Math.max(1,Math.floor(t.width)),l=Math.max(1,Math.floor(t.height));a.setSize(u,l);let r=v.uniforms.iResolution.value;r[0]=o.drawingBufferWidth,r[1]=o.drawingBufferHeight,a.render({scene:m})},p=new ResizeObserver(d);p.observe(e),d();let g=0,h=!0,y=!document.hidden,w=performance.now(),C=e=>{v.uniforms.iTime.value=(e-w)*.001,a.render({scene:m}),g=requestAnimationFrame(C)},A=()=>{h&&y&&0===g&&(g=requestAnimationFrame(C))},S=()=>{0!==g&&(cancelAnimationFrame(g),g=0)},x=new IntersectionObserver(([e])=>{(h=e.isIntersecting)?A():S()},{threshold:0});x.observe(e);let F=()=>{(y=!document.hidden)?A():S()};return document.addEventListener("visibilitychange",F),A(),()=>{S(),p.disconnect(),x.disconnect(),document.removeEventListener("visibilitychange",F),s.delete(e),t.parentElement===e&&e.removeChild(t)}},[]),(0,i.useEffect)(()=>{let t=E.current;if(!t)return;let u=s.get(t);if(!u)return;let l=u.program.uniforms;l.uTimeSpeed.value=e,l.uColorBalance.value=a,l.uWarpStrength.value=o,l.uWarpFrequency.value=m,l.uWarpSpeed.value=d,l.uWarpAmplitude.value=p,l.uBlendAngle.value=g,l.uBlendSoftness.value=h,l.uRotationAmount.value=y,l.uNoiseScale.value=w,l.uGrainAmount.value=C,l.uGrainScale.value=A,l.uGrainAnimated.value=+!!S,l.uContrast.value=x,l.uGamma.value=F,l.uSaturation.value=b,l.uCenterOffset.value=new Float32Array([R,W]),l.uZoom.value=B,l.uColor1.value=new Float32Array(v(T)),l.uColor2.value=new Float32Array(v(O)),l.uColor3.value=new Float32Array(v(q))},[e,a,o,m,d,p,g,h,y,w,C,A,S,x,F,b,R,W,B,T,O,q]),(0,t.jsx)("div",{ref:E,className:`relative h-full w-full overflow-hidden ${k}`.trim(),style:{backgroundColor:G}})}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.