{"version":3,"file":"shared-lib.POV3bk7d.mjs","names":["React.useRef","React.useCallback"],"sources":["https:/framerusercontent.com/modules/RwD3FilZPh8pA0Y7HoP7/S2KHD4oL7SsbvtJDSpoT/Starsfield.js","https:/framerusercontent.com/modules/8nUK0xp29LucjQeQSuXo/R8NulLYK91jz3YeA3UHA/siteMetadata.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";/** Clamp to [0,1] */function saturate(t){return t<0?0:t>1?1:t;}/** Smoothstep with explicit 0..1 remap, numerically stable */function smooth01(t){// cubic Hermite: 3t^2 - 2t^3\nreturn t*t*(3-2*t);}/** Parse CSS color to RGBA components */function parseColor(input){const c=(input||\"#000000\").trim().toLowerCase();if(c[0]===\"#\"){const h=c.slice(1);if(h.length===3||h.length===4){const r=parseInt(h[0]+h[0],16);const g=parseInt(h[1]+h[1],16);const b=parseInt(h[2]+h[2],16);const a=h.length===4?parseInt(h[3]+h[3],16)/255:1;return{r,g,b,a};}if(h.length===6||h.length===8){const r=parseInt(h.slice(0,2),16);const g=parseInt(h.slice(2,4),16);const b=parseInt(h.slice(4,6),16);const a=h.length===8?parseInt(h.slice(6,8),16)/255:1;return{r,g,b,a};}}const m=c.match(/rgba?\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)(?:\\s*,\\s*([\\d.]+)\\s*)?\\)/);if(m){const r=Math.max(0,Math.min(255,Number(m[1])));const g=Math.max(0,Math.min(255,Number(m[2])));const b=Math.max(0,Math.min(255,Number(m[3])));const a=m[4]!==undefined?Math.max(0,Math.min(1,Number(m[4]))):1;return{r,g,b,a};}return{r:0,g:0,b:0,a:1};}export default function Starsfield(props){const{starCount=300,speed=.2,spread=2,focal=.6,twinkle=.3,trail=.3,starSize=.5,bgColor=\"#000000\",starColor=\"#FFFFFF\",fadeInRange=.3}=props;const canvasRef=React.useRef(null);const starsRef=React.useRef([]);const rafRef=React.useRef(null);// Single settings object avoids stale closures\nconst settingsRef=React.useRef({starCount,speed,spread,focal,twinkle,trail,starSize,bgColor,starColor,fadeInRange});settingsRef.current={starCount,speed,spread,focal,twinkle,trail,starSize,bgColor,starColor,fadeInRange};// Fit canvas to parent with DPR\nconst resize=React.useCallback(()=>{const canvas=canvasRef.current;if(!canvas)return;const parent=canvas.parentElement;if(!parent)return;const w=Math.max(1,parent.clientWidth);const h=Math.max(1,parent.clientHeight);const dpr=Math.min(window.devicePixelRatio||1,2);canvas.width=Math.floor(w*dpr);canvas.height=Math.floor(h*dpr);canvas.style.width=w+\"px\";canvas.style.height=h+\"px\";const ctx=canvas.getContext(\"2d\");if(ctx){ctx.resetTransform?.();ctx.setTransform(dpr,0,0,dpr,0,0);}},[]);// Initialize star field\nconst initStars=React.useCallback(()=>{const{starCount,spread,starSize}=settingsRef.current;const arr=new Array(starCount).fill(0).map(()=>({x:(Math.random()*2-1)*spread,y:(Math.random()*2-1)*spread,z:Math.random(),px:null,py:null,phase:Math.random()*Math.PI*2,twinkle:.5+Math.random()*1.5,size:starSize*(.6+Math.random()*.8)}));starsRef.current=arr;},[]);// Respawn a star at the far plane\nconst respawn=(s,spread,starSize)=>{s.x=(Math.random()*2-1)*spread;s.y=(Math.random()*2-1)*spread;s.z=1;s.px=null// no hard trail segment on spawn\n;s.py=null;s.phase=Math.random()*Math.PI*2;s.twinkle=.5+Math.random()*1.5;s.size=starSize*(.6+Math.random()*.8);};React.useEffect(()=>{resize();initStars();let last=performance.now();const loop=()=>{const now=performance.now();const dt=Math.min(.05,(now-last)/1e3);last=now;const canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;const w=canvas.clientWidth;const h=canvas.clientHeight;const cx=w/2;const cy=h/2;const{speed,spread,focal,twinkle,trail,starSize,bgColor,starColor,fadeInRange}=settingsRef.current;const bg=parseColor(bgColor);const sc=parseColor(starColor);// Trail clear with alpha to keep motion streaks\nctx.globalCompositeOperation=\"source-over\";const clearA=(1-Math.min(.98,Math.max(0,trail)))*bg.a;ctx.fillStyle=`rgba(${bg.r},${bg.g},${bg.b},${clearA})`;ctx.fillRect(0,0,w,h);// Additive blend for stars\nctx.globalCompositeOperation=\"lighter\";const f=Math.min(w,h)*focal;// Precompute fade edges in depth\n// z goes from 1 (far) -> 0 (near). We fade from 0 at z=1 up to 1 at z<=1 - fadeInRange.\nconst edgeFar=1;const edgeNear=Math.max(.01,1-Math.max(.05,Math.min(1,fadeInRange)));for(let i=0;i<starsRef.current.length;i++){const s=starsRef.current[i];// Advance in depth space\ns.z-=dt*speed*.7;if(s.z<=.02){respawn(s,spread,starSize);}const invz=1/s.z;const x2d=s.x*f*invz+cx;const y2d=s.y*f*invz+cy;// Cull outside frame with margin\nif(x2d<-20||x2d>w+20||y2d<-20||y2d>h+20){respawn(s,spread,starSize);continue;}// Twinkle factor\nconst tw=Math.max(0,Math.min(1,.65+twinkle*.35*Math.sin(s.phase+now*.0015*s.twinkle)));// Size scales with proximity\nconst size=Math.max(.3,s.size*invz*.9);// Base alpha from star color + twinkle\nconst baseAlpha=Math.min(1,(.15+tw*.9)*sc.a);// Depth-based fade-in:\n// Map z in [edgeFar..edgeNear] -> t in [0..1], then smooth\nconst tRaw=(edgeFar-s.z)/(edgeFar-edgeNear);const appear=smooth01(saturate(tRaw));// Final alpha\nconst alpha=baseAlpha*appear;// Trail line\nif(s.px!==null&&s.py!==null&&alpha>.001){ctx.lineWidth=Math.min(3,size);ctx.strokeStyle=`rgba(${sc.r},${sc.g},${sc.b},${alpha})`;ctx.beginPath();ctx.moveTo(x2d,y2d);const k=Math.min(1.5,.6+speed*.6);const tx=s.px+(x2d-s.px)*k;const ty=s.py+(y2d-s.py)*k;ctx.lineTo(tx,ty);ctx.stroke();}// Star disk\nif(alpha>.001){ctx.fillStyle=`rgba(${sc.r},${sc.g},${sc.b},${alpha})`;ctx.beginPath();ctx.arc(x2d,y2d,size*.5,0,Math.PI*2);ctx.fill();}s.px=x2d;s.py=y2d;}rafRef.current=requestAnimationFrame(loop);};rafRef.current=requestAnimationFrame(loop);const onResize=()=>resize();window.addEventListener(\"resize\",onResize);return()=>{if(rafRef.current)cancelAnimationFrame(rafRef.current);window.removeEventListener(\"resize\",onResize);};},[initStars,resize]);React.useEffect(()=>{initStars();},[starCount,initStars]);return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",background:bgColor,overflow:\"hidden\"},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef})});}addPropertyControls(Starsfield,{starCount:{type:ControlType.Number,title:\"Stars\",min:50,max:4e3,step:50,defaultValue:350},speed:{type:ControlType.Number,title:\"Speed\",min:.1,max:3,step:.05,defaultValue:.3},spread:{type:ControlType.Number,title:\"Spread\",min:1,max:5,step:.1,defaultValue:2},focal:{type:ControlType.Number,title:\"Focal\",min:.4,max:1.6,step:.05,defaultValue:.8},twinkle:{type:ControlType.Number,title:\"Twinkle\",min:0,max:1,step:.01,defaultValue:.7},trail:{type:ControlType.Number,title:\"Trail\",min:0,max:.98,step:.01,defaultValue:.15},starSize:{type:ControlType.Number,title:\"Size\",min:.3,max:3,step:.1,defaultValue:.5},fadeInRange:{type:ControlType.Number,title:\"Fade-In Range\",min:.05,max:1,step:.01,defaultValue:.3},bgColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#000000\"},starColor:{type:ControlType.Color,title:\"Stars\",defaultValue:\"#FFFFFF\"}});Starsfield.defaultProps={height:800,width:1e3};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Starsfield\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Starsfield.map","// Generated by Framer (a050651)\nexport default function metadata(params,activeLocale){return{description:\"Turn cold prospects into loyal clients and make your brand stand out without paid ads or guesswork. Experience consistent, measurable results with strategies tailored to your growth goals.\",favicon:\"https://framerusercontent.com/assets/Y5W1PwWeAZVFPeHfxseq8XeJw4w.png\",robots:\"max-image-preview:large\",title:\"Nytrix Media | Client Acquisition\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}