{"version":3,"file":"SubtleAnimatedTexture.BFsgTeH9.mjs","names":["useRef","useState","useCallback"],"sources":["https:/framerusercontent.com/modules/sz06uipJXJcQ2l6w7MzD/DITUs5cHVL7Mt5RCDsko/SubtleAnimatedTexture.js"],"sourcesContent":["// Custom Background Shader for Framer Workshop\n// Renders dynamic, customizable patterns with full property controls\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useRef,useEffect,useState,useCallback,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";const patternStyles=[\"Horizontal Lines\",\"Vertical Lines\",\"Diagonal Lines\",\"Dots\",\"Crosshatch\",\"Waves\",\"Mesh\",\"Noise Grid\"];const animationTypes=[\"Drift\",\"Pulse\",\"Wave\",\"Noise Wobble\"];/**\n * Subtle Animated Pattern\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function SubtleAnimatedPattern(props){const{// Pattern style (e.g. lines, dots, mesh)\npatternStyle,// Width of lines or dots in the pattern (in px)\nlineWidth,// Distance between pattern elements (in px)\npatternScale,// Amount of distortion/wobble (0-1)\ndistortion,// Color of the pattern\npatternColor,// Color of the background\nbackgroundColor,// Enable/disable pattern animation\nanimationEnabled,// Type of animation (Drift, Pulse, etc)\nanimationType,// Animation speed multiplier\nanimationSpeed,// Animation intensity (0-1)\nanimationIntensity,// Opacity of the pattern (0-1)\npatternOpacity,// Pattern rotation in degrees\npatternRotation,// Style object from Framer\nstyle}=props;const canvasRef=useRef(null);const[dimensions,setDimensions]=useState({width:400,height:300});const isStatic=useIsStaticRenderer();const requestRef=useRef(null);// Track container size and update dimensions\nuseEffect(()=>{function updateDimensions(){if(!canvasRef.current)return;const parent=canvasRef.current.parentElement;if(!parent)return;const rect=parent.getBoundingClientRect();startTransition(()=>setDimensions({width:rect.width,height:rect.height}));}updateDimensions();window.addEventListener(\"resize\",updateDimensions);return()=>window.removeEventListener(\"resize\",updateDimensions);},[]);// Main drawing function\nconst draw=useCallback((ctx,t)=>{// Set canvas size to device pixel ratio for sharpness\nconst dpr=window.devicePixelRatio||1;if(ctx.canvas.width!==Math.round(dimensions.width*dpr)||ctx.canvas.height!==Math.round(dimensions.height*dpr)){ctx.canvas.width=Math.round(dimensions.width*dpr);ctx.canvas.height=Math.round(dimensions.height*dpr);}ctx.setTransform(1,0,0,1,0,0);ctx.scale(dpr,dpr);ctx.clearRect(0,0,dimensions.width,dimensions.height);ctx.globalAlpha=1;ctx.fillStyle=backgroundColor;ctx.fillRect(0,0,dimensions.width,dimensions.height);ctx.save();// --- FILL CONTAINER LOGIC FOR ROTATION ---\n// Compute the bounding box needed to fully cover the canvas after rotation\nconst rad=(patternRotation||0)*(Math.PI/180);const cos=Math.abs(Math.cos(rad));const sin=Math.abs(Math.sin(rad));// Calculate bounding box to ensure pattern always fills container after rotation\nconst bbWidth=Math.ceil(Math.abs(dimensions.width*cos)+Math.abs(dimensions.height*sin));const bbHeight=Math.ceil(Math.abs(dimensions.width*sin)+Math.abs(dimensions.height*cos));// Center the pattern so it fills the rotated area\nctx.translate(dimensions.width/2,dimensions.height/2);ctx.rotate(rad);ctx.translate(-bbWidth/2,-bbHeight/2);// --- Apply pattern opacity to a group, not individual lines ---\n// Draw pattern to an offscreen canvas, then draw with opacity\n// --- ROTATE PATTERN TO FILL CONTAINER ---\nconst patternCanvas=document.createElement(\"canvas\");patternCanvas.width=bbWidth;patternCanvas.height=bbHeight;const pctx=patternCanvas.getContext(\"2d\");pctx.save();// No need to rotate pattern drawing context, already handled by main ctx\npctx.restore();pctx.clearRect(0,0,bbWidth,bbHeight);pctx.strokeStyle=patternColor;pctx.fillStyle=patternColor;pctx.lineWidth=lineWidth;// CHANGED: d is now multiplied by mouseEffectValue if present\nlet d=Math.max(0,Math.min(1,distortion));// Animation phase logic per animationType\nlet anim=0;let anim2=0;let anim3=0;// Add unique phase/shape logic for each animation type\nlet effectiveAnimationSpeed=animationSpeed;let effectiveAnimationIntensity=animationIntensity;// Animation always runs if enabled, regardless of distortion\nif(animationEnabled){const base=t*effectiveAnimationSpeed;switch(animationType){case\"Drift\":anim=effectiveAnimationIntensity*Math.sin(base);anim2=effectiveAnimationIntensity*Math.cos(base*.7);break;case\"Pulse\":anim=effectiveAnimationIntensity*(.5+.5*Math.sin(base*2));anim2=effectiveAnimationIntensity*(.5+.5*Math.cos(base*2));break;case\"Wave\":anim=effectiveAnimationIntensity*Math.sin(base*3);anim2=effectiveAnimationIntensity*Math.cos(base*2);break;case\"Noise Wobble\":anim=effectiveAnimationIntensity*(Math.sin(base*1.3)+Math.cos(base*.9))*.5;anim2=effectiveAnimationIntensity*(Math.sin(base*.7)-Math.cos(base*1.1))*.5;anim3=effectiveAnimationIntensity*Math.sin(base*2.1);break;default:break;}}// Pattern rendering\n// --- FIX: define scale from patternScale prop ---\nconst scale=patternScale;switch(patternStyle){case\"Horizontal Lines\":{pctx.save();for(let y=0;y<bbHeight+scale;y+=scale){pctx.beginPath();for(let x=0;x<=bbWidth;x+=1){let offset=0;if(distortion>0||anim!==0){// AnimationType-specific line warping\nlet phase=0;switch(animationType){case\"Wave\":phase=Math.sin(x/bbWidth*Math.PI*2+t*animationSpeed*2+anim*2*Math.PI);break;case\"Pulse\":phase=Math.abs(Math.sin(t*animationSpeed*3+y*.01));break;case\"Noise Wobble\":phase=Math.sin((x+y)*.1+anim3*2*Math.PI+t*animationSpeed*2);break;case\"Drift\":default:phase=anim*2*Math.PI;break;}offset=phase*d*scale*.5;}pctx.lineTo(x,y+offset);}pctx.lineWidth=lineWidth;pctx.stroke();}pctx.restore();break;}case\"Vertical Lines\":{pctx.save();for(let x=0;x<bbWidth+scale;x+=scale){pctx.beginPath();for(let y=0;y<=bbHeight;y+=1){let offset=0;if(distortion>0||anim!==0){let phase=0;switch(animationType){case\"Wave\":phase=Math.sin(y/bbHeight*Math.PI*2+t*animationSpeed*2+anim*2*Math.PI);break;case\"Pulse\":phase=Math.abs(Math.sin(t*animationSpeed*3+x*.01));break;case\"Noise Wobble\":phase=Math.sin((x+y)*.1+anim3*2*Math.PI+t*animationSpeed*2);break;case\"Drift\":default:phase=anim*2*Math.PI;break;}offset=phase*d*scale*.5;}pctx.lineTo(x+offset,y);}pctx.lineWidth=lineWidth;pctx.stroke();}pctx.restore();break;}case\"Diagonal Lines\":{pctx.save();// Draw crisp diagonal lines directly on canvas\n// Calculate the spacing between lines\nconst spacing=patternScale;const lw=lineWidth;// Animation support for diagonal lines\nlet animOffset=0;if(animationEnabled){switch(animationType){case\"Wave\":animOffset=Math.sin(t*animationSpeed*2+anim*2*Math.PI)*animationIntensity*spacing*.5;break;case\"Pulse\":animOffset=Math.abs(Math.sin(t*animationSpeed*3))*animationIntensity*spacing*.5;break;case\"Noise Wobble\":animOffset=(Math.sin(t*animationSpeed*1.3)+Math.cos(t*animationSpeed*.9))*.5*animationIntensity*spacing*.5;break;case\"Drift\":default:animOffset=anim*spacing*.5;break;}}pctx.lineCap=\"butt\";pctx.lineJoin=\"miter\";pctx.strokeStyle=patternColor;pctx.lineWidth=lw;for(let offset=-bbHeight;offset<bbWidth+bbHeight;offset+=spacing){pctx.beginPath();let x0=offset+animOffset;let y0=bbHeight;let x1=offset+bbHeight+animOffset;let y1=0;// Clip to canvas bounds\nif(x0<0){y0=bbHeight+x0;x0=0;}if(x1>bbWidth){y1=y1+(x1-bbWidth);x1=bbWidth;}pctx.moveTo(x0,y0);pctx.lineTo(x1,y1);pctx.stroke();}pctx.restore();break;}case\"Dots\":{pctx.save();for(let y=0;y<bbHeight+scale;y+=scale){for(let x=0;x<bbWidth+scale;x+=scale){let dx=0,dy=0;if(distortion>0||anim!==0){let phase=0;switch(animationType){case\"Wave\":phase=Math.sin(x/bbWidth*Math.PI*2+t*animationSpeed*2+anim*2*Math.PI);break;case\"Pulse\":phase=Math.abs(Math.sin(t*animationSpeed*3+y*.01));break;case\"Noise Wobble\":phase=Math.sin((x+y)*.1+anim3*2*Math.PI+t*animationSpeed*2);break;case\"Drift\":default:phase=anim*2*Math.PI;break;}dx=phase*d*scale*.3;dy=phase*d*scale*.3;}pctx.fillRect(Math.round(x+dx-lineWidth*.5),Math.round(y+dy-lineWidth*.5),Math.max(1,Math.round(lineWidth)),Math.max(1,Math.round(lineWidth)));}}pctx.restore();break;}case\"Crosshatch\":{pctx.save();// Horizontal\nfor(let y=0;y<bbHeight+scale;y+=scale){pctx.beginPath();for(let x=0;x<=bbWidth;x+=1){let offset=0;if(distortion>0||anim!==0){let phase=0;switch(animationType){case\"Wave\":phase=Math.sin(x/bbWidth*Math.PI*2+t*animationSpeed*2+anim*2*Math.PI);break;case\"Pulse\":phase=Math.abs(Math.sin(t*animationSpeed*3+y*.01));break;case\"Noise Wobble\":phase=Math.sin((x+y)*.1+anim3*2*Math.PI+t*animationSpeed*2);break;case\"Drift\":default:phase=anim*2*Math.PI;break;}offset=phase*d*scale*.5;}pctx.lineTo(x,y+offset);}pctx.lineWidth=lineWidth;pctx.stroke();}// Vertical\nfor(let x=0;x<bbWidth+scale;x+=scale){pctx.beginPath();for(let y=0;y<=bbHeight;y+=1){let offset=0;if(distortion>0||anim!==0){let phase=0;switch(animationType){case\"Wave\":phase=Math.sin(y/bbHeight*Math.PI*2+t*animationSpeed*2+anim*2*Math.PI);break;case\"Pulse\":phase=Math.abs(Math.sin(t*animationSpeed*3+x*.01));break;case\"Noise Wobble\":phase=Math.sin((x+y)*.1+anim3*2*Math.PI+t*animationSpeed*2);break;case\"Drift\":default:phase=anim*2*Math.PI;break;}offset=phase*d*scale*.5;}pctx.lineTo(x+offset,y);}pctx.lineWidth=lineWidth;pctx.stroke();}pctx.restore();break;}case\"Waves\":{pctx.save();// Render smooth sine waves horizontally, not just offset lines\nconst waveAmplitude=d*scale*.5+2;const waveLength=scale*2;for(let y=0;y<bbHeight+scale;y+=scale){pctx.beginPath();for(let x=0;x<=bbWidth;x+=1){// Each wave row phase-shifted and animated distinctly\nlet phase=0;switch(animationType){case\"Wave\":phase=Math.sin(y/bbHeight*Math.PI*2+t*animationSpeed*2+anim*2*Math.PI);break;case\"Pulse\":phase=Math.abs(Math.sin(t*animationSpeed*3+y*.01));break;case\"Noise Wobble\":phase=Math.sin((x+y)*.1+anim3*2*Math.PI+t*animationSpeed*2);break;case\"Drift\":default:phase=anim*2*Math.PI;break;}let wave=Math.sin(x/waveLength*2*Math.PI+phase)*waveAmplitude;pctx.lineTo(x,y+wave);}pctx.lineWidth=lineWidth;pctx.stroke();}pctx.restore();break;}case\"Mesh\":{pctx.save();// Render a mesh grid with wavy intersections, not just crosshatch\nconst meshAmp=d*scale*.4+1;const meshLen=scale*2;// Horizontal mesh lines\nfor(let y=0;y<bbHeight+scale;y+=scale){pctx.beginPath();for(let x=0;x<=bbWidth;x+=1){let phase=0;switch(animationType){case\"Wave\":phase=Math.sin(x/bbWidth*Math.PI*2+t*animationSpeed*2+anim*2*Math.PI);break;case\"Pulse\":phase=Math.abs(Math.sin(t*animationSpeed*3+y*.01));break;case\"Noise Wobble\":phase=Math.sin((x+y)*.1+anim3*2*Math.PI+t*animationSpeed*2);break;case\"Drift\":default:phase=anim*2*Math.PI;break;}let wave=Math.sin(y/meshLen*2*Math.PI+phase)*meshAmp;pctx.lineTo(x,y+wave);}pctx.lineWidth=lineWidth;pctx.stroke();}// Vertical mesh lines\nfor(let x=0;x<bbWidth+scale;x+=scale){pctx.beginPath();for(let y=0;y<=bbHeight;y+=1){let phase=0;switch(animationType){case\"Wave\":phase=Math.sin(y/bbHeight*Math.PI*2+t*animationSpeed*2+anim*2*Math.PI);break;case\"Pulse\":phase=Math.abs(Math.sin(t*animationSpeed*3+x*.01));break;case\"Noise Wobble\":phase=Math.sin((x+y)*.1+anim3*2*Math.PI+t*animationSpeed*2);break;case\"Drift\":default:phase=anim*2*Math.PI;break;}let wave=Math.cos(x/meshLen*2*Math.PI+phase)*meshAmp;pctx.lineTo(x+wave,y);}pctx.lineWidth=lineWidth;pctx.stroke();}pctx.restore();break;}case\"Noise Grid\":{pctx.save();// Render a grid of dots with per-cell noise, not just offset dots\nfor(let y=0;y<bbHeight+scale;y+=scale){for(let x=0;x<bbWidth+scale;x+=scale){// Use a hash for stable pseudo-random per cell\nconst seed=((x+1)*73856093^(y+1)*19349663)>>>0;// 2D value noise with animation\nlet n=0;switch(animationType){case\"Wave\":n=Math.abs(Math.sin(seed+t*animationSpeed*2+anim*2+anim2*3+anim3*5));break;case\"Pulse\":n=Math.abs(Math.sin(seed+t*animationSpeed*3));break;case\"Noise Wobble\":n=Math.abs(Math.sin(seed+t*animationSpeed*2+Math.random()*1e3));break;case\"Drift\":default:n=Math.abs(Math.sin(seed+anim*2*Math.PI));break;}const dx=(n-.5)*d*scale*.8;const dy=(Math.abs(Math.cos(seed+t*animationSpeed*2+anim*2+anim2*3+anim3*5))-.5)*d*scale*.8;pctx.beginPath();pctx.arc(x+dx,y+dy,lineWidth*.5,0,2*Math.PI);pctx.fill();}}pctx.restore();break;}default:break;}// Draw the pattern canvas with opacity\nctx.globalAlpha=patternOpacity;ctx.drawImage(patternCanvas,0,0,bbWidth,bbHeight,0,0,bbWidth,bbHeight);ctx.globalAlpha=1;ctx.restore();},[dimensions,patternStyle,lineWidth,patternScale,distortion,patternColor,backgroundColor,animationEnabled,animationSpeed,animationIntensity,animationType,patternOpacity,patternRotation]);// Animation loop\nuseEffect(()=>{if(isStatic||!animationEnabled){const ctx=canvasRef.current?.getContext(\"2d\");if(ctx)draw(ctx,0);return;}let running=true;let lastT=performance.now()*.001;let phase=0;function animate(){if(!canvasRef.current)return;const ctx=canvasRef.current.getContext(\"2d\");if(!ctx)return;const now=performance.now()*.001;const dt=now-lastT;lastT=now;// Use dt to advance phase smoothly, clamp dt to avoid jumps\nconst safeDt=Math.min(Math.max(dt,.008),.016);phase+=safeDt;draw(ctx,phase);if(running)requestRef.current=requestAnimationFrame(animate);}animate();return()=>{running=false;if(requestRef.current)cancelAnimationFrame(requestRef.current);};},[draw,isStatic,animationEnabled,dimensions]);// Redraw on prop change\nuseEffect(()=>{if(!animationEnabled||isStatic){const ctx=canvasRef.current?.getContext(\"2d\");if(ctx)draw(ctx,0);}},[draw,animationEnabled,isStatic,dimensions]);return /*#__PURE__*/_jsx(\"div\",{style:{...style,width:\"100%\",height:\"100%\",position:\"relative\",overflow:\"hidden\",borderRadius:style?.borderRadius},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,width:Math.round(dimensions.width),height:Math.round(dimensions.height),style:{width:\"100%\",height:\"100%\",display:\"block\",pointerEvents:\"none\"},\"aria-label\":\"Custom background pattern\"})});}addPropertyControls(SubtleAnimatedPattern,{patternStyle:{type:ControlType.Enum,title:\"Pattern Style\",options:patternStyles,optionTitles:patternStyles,defaultValue:\"Horizontal Lines\"},patternRotation:{type:ControlType.Number,title:\"Pattern Rotation\",defaultValue:0,min:0,max:360,step:1,unit:\"deg\"},lineWidth:{type:ControlType.Number,title:\"Line/Dot Width\",defaultValue:2,min:1,max:100,step:1,unit:\"px\"},patternScale:{type:ControlType.Number,title:\"Pattern Scale\",defaultValue:40,min:1,max:500,step:1,unit:\"px\"},distortion:{type:ControlType.Number,title:\"Distortion\",defaultValue:0,min:0,max:1,step:.01},patternColor:{type:ControlType.Color,title:\"Pattern Color\",defaultValue:\"#000000\"},patternOpacity:{type:ControlType.Number,title:\"Pattern Opacity\",defaultValue:1,min:0,max:1,step:.01},backgroundColor:{type:ControlType.Color,title:\"Background Color\",defaultValue:\"#FFFFFF\"},animationEnabled:{type:ControlType.Boolean,title:\"Animation\",description:\"Distort must be greater than 0 for animation to work.\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},animationType:{type:ControlType.Enum,title:\"Animation Type\",options:animationTypes,optionTitles:animationTypes,defaultValue:\"Drift\",hidden:({animationEnabled})=>!animationEnabled},animationSpeed:{type:ControlType.Number,title:\"Animation Speed\",defaultValue:1,min:0,max:3,step:.01,hidden:({animationEnabled})=>!animationEnabled},animationIntensity:{type:ControlType.Number,title:\"Animation Intensity\",defaultValue:.5,min:0,max:1,step:.01,hidden:({animationEnabled})=>!animationEnabled},postEffect:undefined,postEffectAmount:undefined,onLoadPattern:{type:ControlType.EventHandler,title:\"Load Pattern\",hidden:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SubtleAnimatedPattern\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SubtleAnimatedTexture.map"],"mappings":"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"}