{"version":3,"file":"WavingFlag.BgYcsa-_.mjs","names":["useRef","useState","useMemo","__esmMin","init_npm_react_18_3_1","window","te","pe","init_ssg_sandbox_shims","ce","c","init_jsx_runtime","_e","de","useIsStaticRenderer","addPropertyControls","ControlType","init_framer_B1b760uK","createShader","shader","gl","type","source","info","createProgram","vs","vertex","fs","fragment","program","createPlane","vertices","uvs","indices","y","segmentsY","x","segmentsX","u","v","i","b","d","createPlaceholderTexture","texture","canvas","ctx","g","uploadPlaceholderToTexture","WavingFlag","props","incomingStyle","isStaticRenderer","isStaticRendererRef","canvasRef","glRef","textureRef","renderNowRef","imageAspectRef","planeAspectRef","shape","imageScaleRef","imageOffsetRef","glGenerationRef","glGeneration","setGlGeneration","propsRef","imageLoadTokenRef","wrapperAspectRatio","hasExplicitHeight","shaderSource","imgAspect","planeAspect","mode","windStrength","speed","weaveIntensity","sheen","plane","vao","vbo","uvbo","ebo","destroyed","raf","ro","targetGustStrength","gustStrengthState","gustCenter","gustCenterTarget","gustVelocityTarget","gustVelocityState","ambientState","pointerLast","loc","sx","sy","updateGustFromClientPoint","rect","clientX","clientY","canvasAspect","drawW","drawH","ox","oy","clampedU","clampedV","now","dt","vx","vy","damp","onPointerEnter","event","onPointerLeave","onPointerDown","onPointerMove","onPointerUpOrCancel","resize","dpr","w","h","start","render","t","ambientTarget","scheduleNext","token","image","applyCover","img","liveGl","liveTexture","init_WavingFlag"],"sources":["https:/framerusercontent.com/modules/1L6Yl8WB56808hfF3T62/auAxCW6SB35ibL5k8Hbj/WavingFlag.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{startTransition,useEffect,useMemo,useRef,useState}from\"react\";function createShader(gl,type,source){const shader=gl.createShader(type);if(!shader)throw new Error(\"Failed to create shader\");gl.shaderSource(shader,source);gl.compileShader(shader);if(!gl.getShaderParameter(shader,gl.COMPILE_STATUS)){const info=gl.getShaderInfoLog(shader)||\"Unknown shader compile error\";gl.deleteShader(shader);throw new Error(info);}return shader;}function createProgram(gl,vertex,fragment){const vs=createShader(gl,gl.VERTEX_SHADER,vertex);const fs=createShader(gl,gl.FRAGMENT_SHADER,fragment);const program=gl.createProgram();if(!program)throw new Error(\"Failed to create program\");gl.attachShader(program,vs);gl.attachShader(program,fs);gl.linkProgram(program);gl.deleteShader(vs);gl.deleteShader(fs);if(!gl.getProgramParameter(program,gl.LINK_STATUS)){const info=gl.getProgramInfoLog(program)||\"Unknown link error\";gl.deleteProgram(program);throw new Error(info);}return program;}function createPlane(segmentsX,segmentsY){const vertices=[];const uvs=[];const indices=[];for(let y=0;y<=segmentsY;y++){for(let x=0;x<=segmentsX;x++){const u=x/segmentsX;const v=y/segmentsY;vertices.push(u,v);uvs.push(u,v);}}for(let y=0;y<segmentsY;y++){for(let x=0;x<segmentsX;x++){const i=y*(segmentsX+1)+x;const a=i;const b=i+1;const c=i+segmentsX+1;const d=c+1;indices.push(a,c,b,b,c,d);}}return{vertices:new Float32Array(vertices),uvs:new Float32Array(uvs),indices:new Uint32Array(indices)};}function createPlaceholderTexture(gl){const texture=gl.createTexture();if(!texture)throw new Error(\"Failed to create texture\");const canvas=document.createElement(\"canvas\");canvas.width=256;canvas.height=256;const ctx=canvas.getContext(\"2d\");if(!ctx)throw new Error(\"Failed to create 2D context\");const g=ctx.createLinearGradient(0,0,256,256);g.addColorStop(0,\"#4f8cff\");g.addColorStop(.5,\"#8b5cf6\");g.addColorStop(1,\"#f59e0b\");ctx.fillStyle=g;ctx.fillRect(0,0,256,256);ctx.globalAlpha=.16;ctx.fillStyle=\"#ffffff\";for(let i=0;i<20;i++){ctx.fillRect(i*16,0,8,256);ctx.fillRect(0,i*16,256,8);}gl.bindTexture(gl.TEXTURE_2D,texture);gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL,1);gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,canvas);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.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);gl.bindTexture(gl.TEXTURE_2D,null);return texture;}function uploadPlaceholderToTexture(gl,texture){const canvas=document.createElement(\"canvas\");canvas.width=256;canvas.height=256;const ctx=canvas.getContext(\"2d\");if(!ctx)return;const g=ctx.createLinearGradient(0,0,256,256);g.addColorStop(0,\"#4f8cff\");g.addColorStop(.5,\"#8b5cf6\");g.addColorStop(1,\"#f59e0b\");ctx.fillStyle=g;ctx.fillRect(0,0,256,256);ctx.globalAlpha=.16;ctx.fillStyle=\"#ffffff\";for(let i=0;i<20;i++){ctx.fillRect(i*16,0,8,256);ctx.fillRect(0,i*16,256,8);}gl.bindTexture(gl.TEXTURE_2D,texture);gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL,1);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.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,canvas);gl.bindTexture(gl.TEXTURE_2D,null);}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerIntrinsicWidth 300\n * @framerIntrinsicHeight 200\n */export default function WavingFlag(props){const{image={src:\"https://framerusercontent.com/images/GfGkADagM4KEibNcIiRUWlfrR0.jpg\",alt:\"Gradient 1 - Blue\"},mode=\"Waving\",shape=\"Rectangular\",windStrength=1,speed=1,weaveIntensity=.25,sheen=.15}=props;const incomingStyle=props.style;const isStaticRenderer=useIsStaticRenderer();const isStaticRendererRef=useRef(isStaticRenderer);const canvasRef=useRef(null);const glRef=useRef(null);const textureRef=useRef(null);const renderNowRef=useRef(null);const imageAspectRef=useRef(1);const planeAspectRef=useRef(shape===\"Square\"?1:1.5);const imageScaleRef=useRef([1,1]);const imageOffsetRef=useRef([0,0]);const glGenerationRef=useRef(0);const[glGeneration,setGlGeneration]=useState(0);const propsRef=useRef({mode,windStrength,speed,weaveIntensity,sheen});const imageLoadTokenRef=useRef(0);const wrapperAspectRatio=shape===\"Square\"?\"1 / 1\":\"3 / 2\";const hasExplicitHeight=incomingStyle?.height!==undefined&&incomingStyle?.height!==\"auto\";const shaderSource=useMemo(()=>({vertex:`#version 300 es\nprecision highp float;\nlayout(location=0) in vec2 aPos;\nlayout(location=1) in vec2 aUV;\nuniform float uTime;\nuniform float uCanvasAspect;\nuniform float uPlaneAspect;\nuniform float uAmbientAmp;\nuniform float uSpeed;\nuniform vec2 uGustCenter;\nuniform vec2 uGustVelocity;\nuniform float uGustStrength;\nout vec2 vUV;\nout vec3 vNormal;\nout vec3 vPos;\nout vec3 vTangent;\n\nvoid main() {\n    float u = aUV.x;\n    float v = aUV.y;\n    float t = uTime * uSpeed;\n\n    float c1 = cos(10.0*u + 2.3*t + 1.5*v);\n    float c2 = cos(16.0*u - 3.1*t + 0.8*v);\n    float c3 = cos(22.0*u + 12.0*v + 1.7*t);\n\n    float s1 = sin(10.0*u + 2.3*t + 1.5*v);\n    float s2 = sin(16.0*u - 3.1*t + 0.8*v);\n    float s3 = sin(22.0*u + 12.0*v + 1.7*t);\n\n    float ambient = uAmbientAmp * (0.55*s1 + 0.30*s2 + 0.15*s3);\n    float dhdu = uAmbientAmp * (0.55*10.0*c1 + 0.30*16.0*c2 + 0.15*22.0*c3);\n    float dhdv = uAmbientAmp * (0.55*1.5*c1 + 0.30*0.8*c2 + 0.15*12.0*c3);\n\n    vec2 d = vec2(u, v) - uGustCenter;\n    float sigma = 20.0;\n    float G = exp(-dot(d, d) * sigma);\n\n    float vMag = length(uGustVelocity);\n    float vBlend = smoothstep(0.01, 0.22, vMag);\n    vec2 vDir = vMag > 0.0001 ? normalize(uGustVelocity) : vec2(0.86, 0.34);\n    vec2 dir = normalize(mix(vec2(0.86, 0.34), vDir, vBlend));\n    vec2 perp = vec2(-dir.y, dir.x);\n\n    float p1 = dot(d, dir) * 13.0 - 2.4 * t;\n    float p2 = dot(d, perp) * 10.5 - 1.7 * t + 1.4;\n    float p3 = dot(d, normalize(dir + perp * 0.45)) * 15.0 + 1.1 * t + 0.8;\n\n    float n1 = sin(7.0*u + 5.0*v + 1.3*t);\n    float n2 = sin(13.0*u - 9.0*v - 0.7*t);\n    float n3 = sin(19.0*u + 17.0*v + 0.31*t);\n    float noiseM = 0.50 + 0.28*n1 + 0.14*n2 + 0.08*n3;\n    float dNoiseDu = 0.28*cos(7.0*u + 5.0*v + 1.3*t)*7.0 + 0.14*cos(13.0*u - 9.0*v - 0.7*t)*13.0 + 0.08*cos(19.0*u + 17.0*v + 0.31*t)*19.0;\n    float dNoiseDv = 0.28*cos(7.0*u + 5.0*v + 1.3*t)*5.0 + 0.14*cos(13.0*u - 9.0*v - 0.7*t)*-9.0 + 0.08*cos(19.0*u + 17.0*v + 0.31*t)*17.0;\n\n    float w = 0.50*sin(p1) + 0.30*sin(p2) + 0.20*sin(p3);\n    float dWdu = 0.50*cos(p1)*(13.0*dir.x) + 0.30*cos(p2)*(10.5*perp.x) + 0.20*cos(p3)*(15.0*normalize(dir + perp * 0.45).x);\n    float dWdv = 0.50*cos(p1)*(13.0*dir.y) + 0.30*cos(p2)*(10.5*perp.y) + 0.20*cos(p3)*(15.0*normalize(dir + perp * 0.45).y);\n\n    float r = length(d);\n    float pr = r * 19.0 - 1.35 * t;\n    float radialBlend = 1.0 - vBlend;\n    float radial = sin(pr) * radialBlend;\n    float invR = 1.0 / max(r, 0.0008);\n    float dRdu = d.x * invR;\n    float dRdv = d.y * invR;\n    float dRadialDu = cos(pr) * 19.0 * dRdu * radialBlend;\n    float dRadialDv = cos(pr) * 19.0 * dRdv * radialBlend;\n\n    float gustPattern = w * (0.78 + 0.22 * noiseM) + 0.18 * radial;\n    float dPatternDu = dWdu * (0.78 + 0.22 * noiseM) + w * 0.22 * dNoiseDu + 0.18 * dRadialDu;\n    float dPatternDv = dWdv * (0.78 + 0.22 * noiseM) + w * 0.22 * dNoiseDv + 0.18 * dRadialDv;\n\n    float gustAmp = uGustStrength * 0.085;\n    float gust = gustAmp * G * gustPattern;\n    float dGdu = -2.0 * sigma * d.x * G;\n    float dGdv = -2.0 * sigma * d.y * G;\n    dhdu += gustAmp * (dGdu * gustPattern + G * dPatternDu);\n    dhdv += gustAmp * (dGdv * gustPattern + G * dPatternDv);\n\n    float z = ambient + gust;\n\n    float s = 2.0 * v - 1.0;\n    float absS = abs(s);\n    float uPow = pow(u, 1.2);\n    float edgeTerm = pow(absS, 1.7);\n    float edgeMix = 0.2 + 0.8 * edgeTerm;\n    float envelope = uPow * edgeMix;\n    float dUPowDu = 1.2 * pow(max(u, 0.0001), 0.2);\n    float signS = s < 0.0 ? -1.0 : 1.0;\n    float dEdgeTermDv = 1.7 * pow(max(absS, 0.0001), 0.7) * signS * 2.0;\n    float dEnvelopeDu = dUPowDu * edgeMix;\n    float dEnvelopeDv = uPow * 0.8 * dEdgeTermDv;\n\n    float latWaveX = 0.65 * s1 + 0.25 * s2 + 0.10 * s3 + 0.35 * gustPattern;\n    float latWaveY = 0.45 * c1 - 0.35 * c2 + 0.20 * s3 + 0.28 * gustPattern;\n    float dLatWaveXDu = 0.65 * 10.0 * c1 + 0.25 * 16.0 * c2 + 0.10 * 22.0 * c3 + 0.35 * dPatternDu;\n    float dLatWaveXDv = 0.65 * 1.5 * c1 + 0.25 * 0.8 * c2 + 0.10 * 12.0 * c3 + 0.35 * dPatternDv;\n    float dLatWaveYDu = 0.45 * (-10.0 * s1) - 0.35 * (-16.0 * s2) + 0.20 * 22.0 * c3 + 0.28 * dPatternDu;\n    float dLatWaveYDv = 0.45 * (-1.5 * s1) - 0.35 * (-0.8 * s2) + 0.20 * 12.0 * c3 + 0.28 * dPatternDv;\n\n    float motionGain = clamp(0.30 + uAmbientAmp * 4.2 + uGustStrength * 0.22, 0.2, 1.2);\n    float latScaleX = 0.06 * uPlaneAspect;\n    float latScaleY = 0.05;\n    float xOff = latScaleX * envelope * motionGain * latWaveX;\n    float yOff = latScaleY * envelope * motionGain * latWaveY;\n    float dxdu = latScaleX * motionGain * (dEnvelopeDu * latWaveX + envelope * dLatWaveXDu);\n    float dxdv = latScaleX * motionGain * (dEnvelopeDv * latWaveX + envelope * dLatWaveXDv);\n    float dydu = latScaleY * motionGain * (dEnvelopeDu * latWaveY + envelope * dLatWaveYDu);\n    float dydv = latScaleY * motionGain * (dEnvelopeDv * latWaveY + envelope * dLatWaveYDv);\n\n    vec3 p = vec3((u - 0.5) * uPlaneAspect + xOff, (v - 0.5) + yOff, z);\n    vec3 dpdu = vec3(uPlaneAspect + dxdu, dydu, dhdu);\n    vec3 dpdv = vec3(dxdv, 1.0 + dydv, dhdv);\n    vec3 n = normalize(cross(dpdu, dpdv));\n    vec3 tng = normalize(dpdu);\n\n    float margin = 0.88;\n    float k = (uCanvasAspect > uPlaneAspect ? 2.0 : (2.0 * uCanvasAspect / uPlaneAspect)) * margin;\n    vec2 clip = vec2(p.x * k / uCanvasAspect, p.y * k);\n\n    gl_Position = vec4(clip, z * 0.26, 1.0);\n    vUV = aUV;\n    vNormal = n;\n    vPos = p;\n    vTangent = tng;\n}\n`,fragment:`#version 300 es\nprecision highp float;\nin vec2 vUV;\nin vec3 vNormal;\nin vec3 vPos;\nin vec3 vTangent;\nuniform sampler2D uTex;\nuniform vec2 uUvScale;\nuniform vec2 uUvOffset;\nuniform float uWeave;\nuniform float uSheen;\nout vec4 outColor;\n\nvoid main() {\n    vec2 uv = (vUV - 0.5) * uUvScale + 0.5 + uUvOffset;\n    vec4 tex = texture(uTex, uv);\n\n    float tx = sin(vUV.x * 1200.0);\n    float ty = sin(vUV.y * 900.0);\n    float weave = 0.5 + 0.5 * tx * ty;\n    float fiber = mix(1.0, 0.90 + 0.10 * weave, uWeave);\n\n    vec3 N = normalize(vNormal);\n    vec3 L = normalize(vec3(-0.45, 0.55, 0.72));\n    vec3 V = normalize(vec3(0.0, 0.0, 1.6) - vPos);\n    vec3 H = normalize(L + V);\n\n    float ndl = max(dot(N, L), 0.0);\n    float ao = 1.0 - clamp((1.0 - N.z) * 0.32, 0.0, 0.32);\n\n    float nh = max(dot(N, H), 0.0);\n    float th = max(abs(dot(normalize(vTangent), H)), 0.0);\n    float anis = mix(1.0, pow(th, 0.5), uSheen);\n    float spec = pow(nh, mix(24.0, 70.0, uSheen)) * anis * uSheen;\n\n    vec3 base = tex.rgb * fiber;\n    vec3 lit = base * (0.20 + 0.80 * ndl) * ao + vec3(spec);\n    outColor = vec4(lit, tex.a);\n}\n`}),[]);useEffect(()=>{isStaticRendererRef.current=isStaticRenderer;},[isStaticRenderer]);useEffect(()=>{propsRef.current={mode,windStrength,speed,weaveIntensity,sheen};planeAspectRef.current=shape===\"Square\"?1:1.5;const imgAspect=imageAspectRef.current||1;const planeAspect=planeAspectRef.current;if(imgAspect>planeAspect){imageScaleRef.current=[planeAspect/imgAspect,1];imageOffsetRef.current=[0,0];}else{imageScaleRef.current=[1,imgAspect/planeAspect];imageOffsetRef.current=[0,0];}if(isStaticRenderer&&renderNowRef.current)renderNowRef.current();},[isStaticRenderer,mode,windStrength,speed,weaveIntensity,sheen,shape]);useEffect(()=>{if(typeof window===\"undefined\")return;const canvas=canvasRef.current;if(!canvas)return;const gl=canvas.getContext(\"webgl2\",{antialias:true,alpha:true,premultipliedAlpha:true});if(!gl)return;const program=createProgram(gl,shaderSource.vertex,shaderSource.fragment);const plane=createPlane(96,64);const vao=gl.createVertexArray();const vbo=gl.createBuffer();const uvbo=gl.createBuffer();const ebo=gl.createBuffer();if(!vao||!vbo||!uvbo||!ebo)return;gl.bindVertexArray(vao);gl.bindBuffer(gl.ARRAY_BUFFER,vbo);gl.bufferData(gl.ARRAY_BUFFER,plane.vertices,gl.STATIC_DRAW);gl.enableVertexAttribArray(0);gl.vertexAttribPointer(0,2,gl.FLOAT,false,0,0);gl.bindBuffer(gl.ARRAY_BUFFER,uvbo);gl.bufferData(gl.ARRAY_BUFFER,plane.uvs,gl.STATIC_DRAW);gl.enableVertexAttribArray(1);gl.vertexAttribPointer(1,2,gl.FLOAT,false,0,0);gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,ebo);gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,plane.indices,gl.STATIC_DRAW);gl.bindVertexArray(null);const texture=createPlaceholderTexture(gl);glRef.current=gl;textureRef.current=texture;glGenerationRef.current+=1;startTransition(()=>setGlGeneration(glGenerationRef.current));let destroyed=false;let raf=0;let ro=null;const targetGustStrength={current:0};const gustStrengthState={current:0};const gustCenter={current:[.5,.5]};const gustCenterTarget={current:[.5,.5]};const gustVelocityTarget={current:[0,0]};const gustVelocityState={current:[0,0]};const ambientState={current:propsRef.current.mode===\"Still\"?.015:.06};const pointerLast={current:null};const loc={uTime:gl.getUniformLocation(program,\"uTime\"),uCanvasAspect:gl.getUniformLocation(program,\"uCanvasAspect\"),uPlaneAspect:gl.getUniformLocation(program,\"uPlaneAspect\"),uAmbientAmp:gl.getUniformLocation(program,\"uAmbientAmp\"),uSpeed:gl.getUniformLocation(program,\"uSpeed\"),uGustCenter:gl.getUniformLocation(program,\"uGustCenter\"),uGustVelocity:gl.getUniformLocation(program,\"uGustVelocity\"),uGustStrength:gl.getUniformLocation(program,\"uGustStrength\"),uUvScale:gl.getUniformLocation(program,\"uUvScale\"),uUvOffset:gl.getUniformLocation(program,\"uUvOffset\"),uWeave:gl.getUniformLocation(program,\"uWeave\"),uSheen:gl.getUniformLocation(program,\"uSheen\"),uTex:gl.getUniformLocation(program,\"uTex\")};const updateCoverUv=()=>{const imgAspect=imageAspectRef.current||1;const planeAspect=planeAspectRef.current;if(imgAspect>planeAspect){const sx=planeAspect/imgAspect;imageScaleRef.current=[sx,1];imageOffsetRef.current=[0,0];}else{const sy=imgAspect/planeAspect;imageScaleRef.current=[1,sy];imageOffsetRef.current=[0,0];}};updateCoverUv();const updateGustFromClientPoint=(clientX,clientY)=>{const rect=canvas.getBoundingClientRect();const x=clientX-rect.left;const y=clientY-rect.top;const canvasAspect=rect.width/Math.max(1,rect.height);const planeAspect=planeAspectRef.current;let drawW=rect.width;let drawH=rect.height;if(canvasAspect>planeAspect){drawW=rect.height*planeAspect;drawH=rect.height;}else{drawW=rect.width;drawH=rect.width/planeAspect;}const ox=(rect.width-drawW)*.5;const oy=(rect.height-drawH)*.5;const u=(x-ox)/Math.max(1,drawW);const v=1-(y-oy)/Math.max(1,drawH);const clampedU=Math.min(1,Math.max(0,u));const clampedV=Math.min(1,Math.max(0,v));gustCenterTarget.current=[clampedU,clampedV];const now=performance.now();if(pointerLast.current){const dt=Math.max(.001,(now-pointerLast.current.t)*.001);const vx=(clampedU-pointerLast.current.u)/dt;const vy=(clampedV-pointerLast.current.v)/dt;const damp=.3;gustVelocityTarget.current=[gustVelocityTarget.current[0]*(1-damp)+vx*damp,gustVelocityTarget.current[1]*(1-damp)+vy*damp];}pointerLast.current={u:clampedU,v:clampedV,t:now};};const onPointerEnter=event=>{if(event.pointerType!==\"touch\"){targetGustStrength.current=1;}};const onPointerLeave=event=>{if(event.pointerType!==\"touch\"){targetGustStrength.current=0;pointerLast.current=null;}};const onPointerDown=event=>{if(event.pointerType===\"touch\"||event.pointerType===\"pen\"){targetGustStrength.current=1;updateGustFromClientPoint(event.clientX,event.clientY);}};const onPointerMove=event=>{updateGustFromClientPoint(event.clientX,event.clientY);};const onPointerUpOrCancel=event=>{if(event.pointerType===\"touch\"||event.pointerType===\"pen\"){targetGustStrength.current=0;pointerLast.current=null;}};canvas.addEventListener(\"pointerenter\",onPointerEnter);canvas.addEventListener(\"pointerleave\",onPointerLeave);canvas.addEventListener(\"pointerdown\",onPointerDown);canvas.addEventListener(\"pointermove\",onPointerMove);canvas.addEventListener(\"pointerup\",onPointerUpOrCancel);canvas.addEventListener(\"pointercancel\",onPointerUpOrCancel);const resize=()=>{const rect=canvas.getBoundingClientRect();const dpr=Math.max(1,Math.min(2,window.devicePixelRatio||1));const w=Math.max(1,Math.floor(rect.width*dpr));const h=Math.max(1,Math.floor(rect.height*dpr));if(canvas.width!==w||canvas.height!==h){canvas.width=w;canvas.height=h;}gl.viewport(0,0,canvas.width,canvas.height);};if(typeof ResizeObserver!==\"undefined\"){ro=new ResizeObserver(()=>{resize();if(isStaticRendererRef.current&&renderNowRef.current){renderNowRef.current();}});ro.observe(canvas);}resize();const start=performance.now();const render=scheduleNext=>{if(destroyed)return;resize();const now=performance.now();const t=(now-start)*.001;const dtEase=.045;gustStrengthState.current+=(targetGustStrength.current-gustStrengthState.current)*dtEase;gustCenter.current[0]+=(gustCenterTarget.current[0]-gustCenter.current[0])*.1;gustCenter.current[1]+=(gustCenterTarget.current[1]-gustCenter.current[1])*.1;gustVelocityState.current[0]+=(gustVelocityTarget.current[0]-gustVelocityState.current[0])*.12;gustVelocityState.current[1]+=(gustVelocityTarget.current[1]-gustVelocityState.current[1])*.12;gustVelocityTarget.current[0]*=.94;gustVelocityTarget.current[1]*=.94;const ambientTarget=(propsRef.current.mode===\"Still\"?.015:.06)*Math.max(0,propsRef.current.windStrength);ambientState.current+=(ambientTarget-ambientState.current)*.08;gl.enable(gl.DEPTH_TEST);gl.clearColor(0,0,0,0);gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT);gl.useProgram(program);gl.bindVertexArray(vao);gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,texture);const canvasAspect=canvas.width/Math.max(1,canvas.height);gl.uniform1i(loc.uTex,0);gl.uniform1f(loc.uTime,t);gl.uniform1f(loc.uCanvasAspect,canvasAspect);gl.uniform1f(loc.uPlaneAspect,planeAspectRef.current);gl.uniform1f(loc.uAmbientAmp,ambientState.current);gl.uniform1f(loc.uSpeed,Math.max(0,propsRef.current.speed));gl.uniform2f(loc.uGustCenter,gustCenter.current[0],gustCenter.current[1]);gl.uniform2f(loc.uGustVelocity,gustVelocityState.current[0],gustVelocityState.current[1]);gl.uniform1f(loc.uGustStrength,gustStrengthState.current*Math.max(0,propsRef.current.windStrength));gl.uniform2f(loc.uUvScale,imageScaleRef.current[0],imageScaleRef.current[1]);gl.uniform2f(loc.uUvOffset,imageOffsetRef.current[0],imageOffsetRef.current[1]);gl.uniform1f(loc.uWeave,Math.min(1,Math.max(0,propsRef.current.weaveIntensity)));gl.uniform1f(loc.uSheen,Math.min(1,Math.max(0,propsRef.current.sheen)));gl.drawElements(gl.TRIANGLES,plane.indices.length,gl.UNSIGNED_INT,0);gl.bindVertexArray(null);if(scheduleNext&&!isStaticRendererRef.current){raf=window.requestAnimationFrame(()=>render(true));}};renderNowRef.current=()=>{render(false);};render(true);return()=>{destroyed=true;if(raf)window.cancelAnimationFrame(raf);if(ro)ro.disconnect();canvas.removeEventListener(\"pointerenter\",onPointerEnter);canvas.removeEventListener(\"pointerleave\",onPointerLeave);canvas.removeEventListener(\"pointerdown\",onPointerDown);canvas.removeEventListener(\"pointermove\",onPointerMove);canvas.removeEventListener(\"pointerup\",onPointerUpOrCancel);canvas.removeEventListener(\"pointercancel\",onPointerUpOrCancel);gl.deleteTexture(texture);gl.deleteBuffer(vbo);gl.deleteBuffer(uvbo);gl.deleteBuffer(ebo);gl.deleteVertexArray(vao);gl.deleteProgram(program);glRef.current=null;textureRef.current=null;renderNowRef.current=null;imageLoadTokenRef.current+=1;};},[shaderSource.fragment,shaderSource.vertex]);useEffect(()=>{if(typeof window===\"undefined\")return;const gl=glRef.current;const texture=textureRef.current;if(!gl||!texture)return;const token=imageLoadTokenRef.current+1;imageLoadTokenRef.current=token;const source=image?.src;const applyCover=()=>{const imgAspect=imageAspectRef.current||1;const planeAspect=planeAspectRef.current;if(imgAspect>planeAspect){imageScaleRef.current=[planeAspect/imgAspect,1];imageOffsetRef.current=[0,0];}else{imageScaleRef.current=[1,imgAspect/planeAspect];imageOffsetRef.current=[0,0];}};if(!source){imageAspectRef.current=1;applyCover();uploadPlaceholderToTexture(gl,texture);if(renderNowRef.current)renderNowRef.current();return;}const img=new window.Image;img.crossOrigin=\"anonymous\";img.onload=()=>{if(imageLoadTokenRef.current!==token)return;const liveGl=glRef.current;const liveTexture=textureRef.current;if(!liveGl||!liveTexture)return;imageAspectRef.current=img.naturalWidth>0&&img.naturalHeight>0?img.naturalWidth/img.naturalHeight:1;applyCover();try{liveGl.bindTexture(liveGl.TEXTURE_2D,liveTexture);liveGl.pixelStorei(liveGl.UNPACK_FLIP_Y_WEBGL,1);liveGl.texParameteri(liveGl.TEXTURE_2D,liveGl.TEXTURE_WRAP_S,liveGl.CLAMP_TO_EDGE);liveGl.texParameteri(liveGl.TEXTURE_2D,liveGl.TEXTURE_WRAP_T,liveGl.CLAMP_TO_EDGE);liveGl.texParameteri(liveGl.TEXTURE_2D,liveGl.TEXTURE_MIN_FILTER,liveGl.LINEAR);liveGl.texParameteri(liveGl.TEXTURE_2D,liveGl.TEXTURE_MAG_FILTER,liveGl.LINEAR);liveGl.texImage2D(liveGl.TEXTURE_2D,0,liveGl.RGBA,liveGl.RGBA,liveGl.UNSIGNED_BYTE,img);}catch(error){uploadPlaceholderToTexture(liveGl,liveTexture);}finally{liveGl.bindTexture(liveGl.TEXTURE_2D,null);}if(renderNowRef.current)renderNowRef.current();};img.onerror=()=>{if(imageLoadTokenRef.current!==token)return;const liveGl=glRef.current;const liveTexture=textureRef.current;if(!liveGl||!liveTexture)return;imageAspectRef.current=1;applyCover();uploadPlaceholderToTexture(liveGl,liveTexture);if(renderNowRef.current)renderNowRef.current();};img.src=source;},[image?.src,glGeneration]);return /*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",width:\"100%\",height:hasExplicitHeight?\"100%\":\"auto\",minWidth:\"48px\",minHeight:\"48px\",aspectRatio:wrapperAspectRatio,overflow:\"hidden\",background:\"transparent\",...incomingStyle},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{width:\"100%\",height:\"100%\",display:\"block\",touchAction:\"pan-y\"}})});}addPropertyControls(WavingFlag,{image:{type:ControlType.ResponsiveImage,title:\"Image\"},mode:{type:ControlType.Enum,title:\"Mode\",options:[\"Waving\",\"Still\"],optionTitles:[\"Waving\",\"Still\"],defaultValue:\"Waving\"},shape:{type:ControlType.Enum,title:\"Shape\",options:[\"Rectangular\",\"Square\"],optionTitles:[\"Rectangular\",\"Square\"],defaultValue:\"Rectangular\"},windStrength:{type:ControlType.Number,title:\"Wind Strength\",defaultValue:1,min:0,max:2,step:.01},speed:{type:ControlType.Number,title:\"Speed\",defaultValue:1,min:0,max:3,step:.01},weaveIntensity:{type:ControlType.Number,title:\"Weave\",defaultValue:.25,min:0,max:1,step:.01},sheen:{type:ControlType.Number,title:\"Sheen\",defaultValue:.15,min:0,max:1,step:.01}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"WavingFlag\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"200\",\"framerIntrinsicWidth\":\"300\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./WavingFlag.map"],"mappings":"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"}