{"version":3,"file":"SoftPattern.DbgopQdW.mjs","names":["useRef"],"sources":["https:/framerusercontent.com/modules/zAW5fk7u1ngJxc3RamhP/MDsWhEMW3yCaDxctraml/SoftPattern.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useRef,useEffect}from\"react\";import{addPropertyControls,ControlType}from\"framer\";function parseColor(input){if(!input)return{r:24,g:24,b:27};const s=input.trim();const hex=s.match(/^#?([0-9a-f]{6})$/i);if(hex){const n=parseInt(hex[1],16);return{r:n>>16&255,g:n>>8&255,b:n&255};}const rgb=s.match(/rgba?\\(([^)]+)\\)/i);if(rgb){const p=rgb[1].split(\",\").map(v=>parseFloat(v));return{r:p[0]||0,g:p[1]||0,b:p[2]||0};}return{r:24,g:24,b:27};}const ss=t=>t*t*(3-2*t);export default function SoftPattern(props){const{tipo=\"Puntos\",color=\"#18181B\",accent=\"#1A5DDC\",gap=24,dotSize=1.3,baseOpacity=.045,peakOpacity=.3,cursorRadius=150,accentAmount=.55,pull=5,fadeDown=.4,anclaje=\"Arriba\",ambient=.05,speed=.5}=props;const canvasRef=useRef(null);const mouse=useRef({cx:-99999,cy:-99999});useEffect(()=>{const canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;const reduce=typeof window!==\"undefined\"&&window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;let w=0;let h=0;const dpr=Math.min(typeof window!==\"undefined\"?window.devicePixelRatio||1:1,2);const resize=()=>{const r=canvas.getBoundingClientRect();w=r.width;h=r.height;canvas.width=Math.max(1,Math.floor(w*dpr));canvas.height=Math.max(1,Math.floor(h*dpr));ctx.setTransform(dpr,0,0,dpr,0,0);};resize();const ro=new ResizeObserver(resize);ro.observe(canvas);const onMove=e=>{mouse.current.cx=e.clientX;mouse.current.cy=e.clientY;};window.addEventListener(\"pointermove\",onMove,{passive:true});const c1=parseColor(color);const c2=parseColor(accent);const g=Math.max(8,gap);const isCross=tipo===\"Cruces\";let raf=0;let t=reduce?1:0;const draw=()=>{if(!reduce)t+=speed*.006;ctx.clearRect(0,0,w,h);const rect=canvas.getBoundingClientRect();const mx=mouse.current.cx-rect.left;const my=mouse.current.cy-rect.top;const active=mx>-cursorRadius&&mx<w+cursorRadius&&my>-cursorRadius&&my<h+cursorRadius;const cols=Math.ceil(w/g)+1;const rows=Math.ceil(h/g)+1;const ox=(w-(cols-1)*g)/2;const oy=g*.5;for(let iy=0;iy<rows;iy++){for(let ix=0;ix<cols;ix++){const x=ox+ix*g;const y=oy+iy*g;// ambiente: campo de brillo que deriva lento\nconst amb=.5+.5*Math.sin(x*.016+t)*Math.sin(y*.02-t*.8);let a=baseOpacity+amb*ambient;let r=c1.r;let gg=c1.g;let b=c1.b;let size=dotSize;let px=x;let py=y;if(active){const dx=x-mx;const dy=y-my;const d=Math.sqrt(dx*dx+dy*dy);if(d<cursorRadius){const e=ss(1-d/cursorRadius);a+=e*(peakOpacity-a);size+=e*dotSize*1.1;const k=e*accentAmount;r=Math.round(c1.r+(c2.r-c1.r)*k);gg=Math.round(c1.g+(c2.g-c1.g)*k);b=Math.round(c1.b+(c2.b-c1.b)*k);// atracción magnética: se desplaza hacia el cursor\nif(pull>0&&d>.001){const disp=pull*e;px=x-dx/d*disp;py=y-dy/d*disp;}}}// fundido: denso junto al borde de anclaje, degradado hacia el opuesto\nconst yA=anclaje===\"Abajo\"?h-y:y;const topFade=ss(Math.min(yA,h*.16)/(h*.16));const downFade=1-ss(yA/h)*fadeDown;a*=Math.min(1,topFade)*downFade;if(a<=.003)continue;ctx.fillStyle=`rgba(${r}, ${gg}, ${b}, ${a})`;if(isCross){const s2=size+.9;ctx.fillRect(px-s2,py-.5,s2*2,1);ctx.fillRect(px-.5,py-s2,1,s2*2);}else{ctx.beginPath();ctx.arc(px,py,size,0,Math.PI*2);ctx.fill();}}}raf=requestAnimationFrame(draw);};raf=requestAnimationFrame(draw);return()=>{cancelAnimationFrame(raf);ro.disconnect();window.removeEventListener(\"pointermove\",onMove);};},[tipo,color,accent,gap,dotSize,baseOpacity,peakOpacity,cursorRadius,accentAmount,pull,fadeDown,anclaje,ambient,speed]);const style={width:\"100%\",height:\"100%\",display:\"block\"};return /*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:style,\"aria-hidden\":true});}addPropertyControls(SoftPattern,{tipo:{type:ControlType.Enum,title:\"Tipo\",options:[\"Puntos\",\"Cruces\"],defaultValue:\"Puntos\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#18181B\"},accent:{type:ControlType.Color,title:\"Acento\",defaultValue:\"#1A5DDC\"},gap:{type:ControlType.Number,title:\"Separaci\\xf3n\",defaultValue:24,min:12,max:60,step:1,unit:\"px\"},dotSize:{type:ControlType.Number,title:\"Tama\\xf1o\",defaultValue:1.3,min:.5,max:3,step:.1,unit:\"px\"},baseOpacity:{type:ControlType.Number,title:\"Opacidad reposo\",defaultValue:.045,min:0,max:.2,step:.005},peakOpacity:{type:ControlType.Number,title:\"Opacidad cursor\",defaultValue:.3,min:.05,max:.7,step:.05},cursorRadius:{type:ControlType.Number,title:\"Radio cursor\",defaultValue:150,min:60,max:360,step:10,unit:\"px\"},accentAmount:{type:ControlType.Number,title:\"Tinte acento\",defaultValue:.55,min:0,max:1,step:.05},pull:{type:ControlType.Number,title:\"Atracci\\xf3n\",defaultValue:5,min:0,max:20,step:1,unit:\"px\"},fadeDown:{type:ControlType.Number,title:\"Degradado abajo\",defaultValue:.4,min:0,max:1,step:.05},anclaje:{type:ControlType.Enum,title:\"Anclaje\",options:[\"Arriba\",\"Abajo\"],defaultValue:\"Arriba\"},ambient:{type:ControlType.Number,title:\"Vida (ambiente)\",defaultValue:.05,min:0,max:.2,step:.01},speed:{type:ControlType.Number,title:\"Velocidad\",defaultValue:.5,min:0,max:2,step:.05}});SoftPattern.displayName=\"Soft Pattern\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SoftPattern\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SoftPattern.map"],"mappings":"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"}