{"version":3,"file":"shared-lib.CADZUUDd.mjs","names":["useRef","useMemo","dpr","p","metadata","siteMetadata","metadataVersion","__FramerMetadata__","metadata","siteMetadata"],"sources":["https:/framerusercontent.com/modules/QlMxL04wmKkKZf4FeVBn/VAmyB67gFStSmKgkHeLc/SmokeEffect_2_6_1_14.js","https:/framerusercontent.com/modules/lWauGUeH3tTG5saX7Mz3/yOs9mbX0ojLrBTbaZ4nY/siteMetadata.js","https:/framerusercontent.com/modules/moKVGc0NCRj1H7x9yFjb/zcuxYNQgaEzHCyKpd2gl/augiA20Il.js","https:/framerusercontent.com/modules/xWuQBJEGX3woibqd6RgD/UQPwRYwGR66Q1CEtVzWX/Qt5HzjRc4.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useRef,useEffect,useMemo}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 200\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function SmokeEffect(props){const{smokeColor,density,speed,spread=20,particleSize=40,turbulence=15,opacity}=props;const canvasRef=useRef(null);const requestRef=useRef();const particlesRef=useRef([]);const lastSizeRef=useRef({width:0,height:0});// Clear particles when properties change\nuseEffect(()=>{particlesRef.current=[];},[density,speed,spread,particleSize,turbulence,opacity,smokeColor]);// Generate the smoke texture with the specific color\nconst texture=useMemo(()=>{if(typeof document===\"undefined\")return null;const size=256;const canvas=document.createElement(\"canvas\");canvas.width=size;canvas.height=size;const ctx=canvas.getContext(\"2d\");if(!ctx)return null;const cx=size/2;const cy=size/2;// Create a \"whispy\" texture by drawing multiple distorted ellipses\nfor(let i=0;i<3;i++){ctx.save();const angle=Math.random()*Math.PI*2;const dist=Math.random()*(size*.15);const x=cx+Math.cos(angle)*dist;const y=cy+Math.sin(angle)*dist;ctx.translate(x,y);ctx.rotate(Math.random()*Math.PI);ctx.scale(1,.5+Math.random()*.3);const r=size*.2+Math.random()*(size*.1);const grad=ctx.createRadialGradient(0,0,0,0,0,r);grad.addColorStop(0,\"rgba(255, 255, 255, 0.3)\");grad.addColorStop(.5,\"rgba(255, 255, 255, 0.08)\");grad.addColorStop(1,\"rgba(255, 255, 255, 0)\");ctx.fillStyle=grad;ctx.beginPath();ctx.arc(0,0,r,0,Math.PI*2);ctx.fill();ctx.restore();}// Composite color\nctx.globalCompositeOperation=\"source-in\";ctx.fillStyle=smokeColor;ctx.fillRect(0,0,size,size);return canvas;},[smokeColor]);useEffect(()=>{const canvas=canvasRef.current;if(!canvas||!texture)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;let width=canvas.clientWidth||200;let height=canvas.clientHeight||200;const dpr=window.devicePixelRatio||1;canvas.width=width*dpr;canvas.height=height*dpr;ctx.scale(dpr,dpr);const particles=particlesRef.current;// Scale factor based on reference size (200x200)\nconst referenceHeight=200;const heightScale=height/referenceHeight;const spawnParticle=()=>{// Remove width scaling from spread to keep spawn area consistent\n// Center spawn area horizontally for all sizes\nconst referenceWidth=200;// Scale spread so that max spread fills the component width\nconst maxSpread=width;const spreadRatio=spread/200;const scaledSpread=maxSpread*spreadRatio;let startX,startY,startSize,growth;startX=width/2+(Math.random()-.5)*scaledSpread;startY=height+20;startSize=(Math.random()*.5+.5)*particleSize;growth=Math.random()*.03+.01;const vy=-(Math.random()*.8+.8)*speed;// Particle life scales inversely with speed to keep smoke on screen\nconst baseLife=600+Math.random()*300;const life=baseLife*(1/speed);particles.push({x:startX,y:startY,vx:(Math.random()-.5)*.1,vy:vy,life:life,maxLife:life,size:startSize,growth:growth,alpha:Math.random()*.15+.05,rotation:Math.random()*Math.PI*2,rotationSpeed:(Math.random()-.5)*.02});};const animate=()=>{// Handle resize\nconst dpr=window.devicePixelRatio||1;const displayWidth=canvas.offsetWidth;const displayHeight=canvas.offsetHeight;const targetWidth=Math.round(displayWidth*dpr);const targetHeight=Math.round(displayHeight*dpr);if(canvas.width!==targetWidth||canvas.height!==targetHeight){canvas.width=targetWidth;canvas.height=targetHeight;ctx.scale(dpr,dpr);width=displayWidth;height=displayHeight;// Clear particles when size changes so smoke appears in new position immediately\nif(lastSizeRef.current.width!==width||lastSizeRef.current.height!==height){particles.length=0;lastSizeRef.current={width,height};}}ctx.clearRect(0,0,width,height);// Spawn particles - scale density by height to maintain visual consistency\nconst scaledDensity=density;const spawnCount=Math.floor(scaledDensity)+(Math.random()<scaledDensity%1?1:0);for(let i=0;i<spawnCount;i++){spawnParticle();}const time=performance.now()*.001;// Update & Draw\nfor(let i=particles.length-1;i>=0;i--){const p=particles[i];p.life--;if(p.life<=0){particles.splice(i,1);continue;}// Physics\nconst progress=1-p.life/p.maxLife;const currentTurbulence=turbulence*Math.pow(progress,1.5);const noise=(Math.sin(p.y*.005+time*.5)+Math.sin(p.y*.02+time)*.5)*currentTurbulence*.01;p.x+=p.vx+noise;p.y+=p.vy;p.size+=p.growth;p.rotation+=p.rotationSpeed;// Render\nlet currentAlpha=p.alpha;// Fade in\nif(progress<.15){currentAlpha=p.alpha*(progress/.15);}else if(progress>.7){currentAlpha=p.alpha*(1-(progress-.7)/.3);}ctx.globalAlpha=currentAlpha*opacity;// Draw centered\nconst drawSize=p.size*2;ctx.save();ctx.translate(p.x,p.y);ctx.rotate(p.rotation);ctx.drawImage(texture,-p.size,-p.size,drawSize,drawSize);ctx.restore();}ctx.globalAlpha=1;requestRef.current=requestAnimationFrame(animate);};requestRef.current=requestAnimationFrame(animate);return()=>{if(requestRef.current)cancelAnimationFrame(requestRef.current);};},[density,speed,spread,particleSize,turbulence,opacity,texture]);return /*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{width:\"100%\",height:\"100%\",display:\"block\",pointerEvents:\"none\"}});}addPropertyControls(SmokeEffect,{smokeColor:{type:ControlType.Color,title:\"Color\",defaultValue:\"#e0e0e0\"},density:{type:ControlType.Number,title:\"Density\",defaultValue:.8,min:.1,max:5,step:.1},speed:{type:ControlType.Number,title:\"Speed\",defaultValue:.1,min:.1,max:1,step:.1},spread:{type:ControlType.Number,title:\"Smoke Width\",defaultValue:20,min:0,max:200,step:1},particleSize:{type:ControlType.Number,title:\"Particle Size\",defaultValue:40,min:10,max:100,step:1},turbulence:{type:ControlType.Number,title:\"Turbulence\",defaultValue:15,min:0,max:100,step:1},opacity:{type:ControlType.Number,title:\"Opacity\",defaultValue:1,min:0,max:1,step:.05}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SmokeEffect\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerIntrinsicHeight\":\"200\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerIntrinsicWidth\":\"200\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SmokeEffect_2_6_1_14.map","// Generated by Framer (3ad0d99)\nexport default function metadata(params,activeLocale){return{description:\"Made with Framer\",robots:\"max-image-preview:large\",title:\"My Framer Site\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (874d64d)\nimport siteMetadata from\"https://framerusercontent.com/modules/lWauGUeH3tTG5saX7Mz3/yOs9mbX0ojLrBTbaZ4nY/siteMetadata.js\";export default function metadata(params,activeLocale){return{breakpoints:[{hash:\"72rtr7\"}],description:siteMetadata(params,activeLocale).description,elements:{},robots:\"max-image-preview:large\",serializationId:\"framer-IheWJ\",title:siteMetadata(params,activeLocale).title||\"Home\",viewport:\"width=1200\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (874d64d)\nimport siteMetadata from\"https://framerusercontent.com/modules/lWauGUeH3tTG5saX7Mz3/yOs9mbX0ojLrBTbaZ4nY/siteMetadata.js\";export default function metadata(params,activeLocale){return{breakpoints:[{hash:\"10tu6cg\"}],description:siteMetadata(params,activeLocale).description,elements:{},robots:\"max-image-preview:large\",serializationId:\"framer-PUeRH\",title:siteMetadata(params,activeLocale).title||\"Preview\",viewport:\"width=1600\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"sMAKG,SAAwB,EAAY,EAAM,CAAC,GAAK,CAAC,aAAW,UAAQ,QAAM,SAAO,GAAG,eAAa,GAAG,aAAW,GAAG,WAAS,EAAY,EAAUA,EAAO,KAAK,CAAO,EAAWA,GAAQ,CAAO,EAAaA,EAAO,EAAE,CAAC,CAAO,EAAYA,EAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CACrQ,MAAc,CAAC,EAAa,QAAQ,EAAE,EAAG,CAAC,EAAQ,EAAM,EAAO,EAAa,EAAW,EAAQ,EAAW,CAAC,CAC3G,IAAM,EAAQC,MAAY,CAAC,GAAG,OAAO,SAAW,IAAY,OAAO,KAAK,IAAqB,EAAO,SAAS,cAAc,SAAS,CAAC,EAAO,MAAM,IAAK,EAAO,OAAO,IAAK,IAAM,EAAI,EAAO,WAAW,KAAK,CAAC,GAAG,CAAC,EAAI,OAAO,KAC3N,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAI,MAAM,CAAC,IAAM,EAAM,KAAK,QAAQ,CAAC,KAAK,GAAG,EAAQ,EAAoB,IAAK,IAApB,KAAK,QAAQ,CAAkB,EAAE,IAAG,KAAK,IAAI,EAAM,CAAC,EAAW,EAAE,IAAG,KAAK,IAAI,EAAM,CAAC,EAAK,EAAI,UAAU,EAAE,EAAE,CAAC,EAAI,OAAO,KAAK,QAAQ,CAAC,KAAK,GAAG,CAAC,EAAI,MAAM,EAAE,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAC,IAAM,EAAE,IAAK,GAAkB,IAAK,GAApB,KAAK,QAAQ,CAAiB,EAAK,EAAI,qBAAqB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAK,aAAa,EAAE,2BAA2B,CAAC,EAAK,aAAa,GAAG,4BAA4B,CAAC,EAAK,aAAa,EAAE,yBAAyB,CAAC,EAAI,UAAU,EAAK,EAAI,WAAW,CAAC,EAAI,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,EAAE,CAAC,EAAI,MAAM,CAAC,EAAI,SAAS,CAC/d,MAA9F,GAAI,yBAAyB,YAAY,EAAI,UAAU,EAAW,EAAI,SAAS,EAAE,EAAE,IAAK,IAAK,CAAQ,GAAS,CAAC,EAAW,CAAC,CAaoS,OAbnS,MAAc,CAAC,IAAM,EAAO,EAAU,QAAQ,GAAG,CAAC,GAAQ,CAAC,EAAQ,OAAO,IAAM,EAAI,EAAO,WAAW,KAAK,CAAC,GAAG,CAAC,EAAI,OAAO,IAAI,EAAM,EAAO,aAAa,IAAQ,EAAO,EAAO,cAAc,IAAU,EAAI,EAAO,kBAAkB,EAAE,EAAO,MAAM,EAAM,EAAI,EAAO,OAAO,EAAO,EAAI,EAAI,MAAM,EAAI,EAAI,CAAC,IAAM,EAAU,EAAa,QACtZ,EAAtB,IAA6C,IAAM,MAAkB,CAGxC,IAAM,EAAjB,EAAO,IAA/B,EAAgF,EAAO,EAAO,EAAU,EAAO,EAAO,EAAM,GAAG,KAAK,QAAQ,CAAC,IAAI,EAAa,EAAO,EAAO,GAAG,GAAW,KAAK,QAAQ,CAAC,GAAG,IAAI,EAAa,EAAO,KAAK,QAAQ,CAAC,IAAI,IAAI,IAAM,EAAG,EAAE,KAAK,QAAQ,CAAC,GAAG,IAAI,EAC9P,GAA5B,IAAI,KAAK,QAAQ,CAAC,MAAyB,EAAE,GAAO,EAAU,KAAK,CAAC,EAAE,EAAO,EAAE,EAAO,IAAI,KAAK,QAAQ,CAAC,IAAI,GAAM,KAAQ,OAAK,QAAQ,EAAK,KAAK,EAAiB,SAAO,MAAM,KAAK,QAAQ,CAAC,IAAI,IAAI,SAAS,KAAK,QAAQ,CAAC,KAAK,GAAG,EAAE,eAAe,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,EAAS,MAAY,CAChT,IAAMC,EAAI,EAAO,kBAAkB,EAAQ,EAAa,EAAO,YAAkB,EAAc,EAAO,aAAmB,EAAY,KAAK,MAAM,EAAaA,EAAI,CAAO,EAAa,KAAK,MAAM,EAAcA,EAAI,EAAI,EAAO,QAAQ,GAAa,EAAO,SAAS,KAAc,EAAO,MAAM,EAAY,EAAO,OAAO,EAAa,EAAI,MAAMA,EAAIA,EAAI,CAAC,EAAM,EAAa,EAAO,GAC9W,EAAY,QAAQ,QAAQ,GAAO,EAAY,QAAQ,SAAS,KAAQ,EAAU,OAAO,EAAE,EAAY,QAAQ,CAAC,QAAM,SAAO,GAAG,EAAI,UAAU,EAAE,EAAE,EAAM,EAAO,CAClK,IAAM,EAAc,EAAc,EAAW,KAAK,MAAM,EAAc,EAAE,KAAK,QAAQ,CAAC,EAAc,EAAE,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAW,IAAK,GAAe,CAAE,IAAM,EAAK,YAAY,KAAK,CAAC,KACvL,IAAI,IAAI,EAAE,EAAU,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,IAAMC,EAAE,EAAU,GAAY,GAAT,EAAE,OAAUA,EAAE,MAAM,EAAE,CAAC,EAAU,OAAO,EAAE,EAAE,CAAC,SACzG,IAAM,EAAS,EAAEA,EAAE,KAAKA,EAAE,QAAc,EAAkB,EAAoB,GAAS,IAAW,GAAO,KAAK,IAAIA,EAAE,EAAE,KAAK,EAAK,GAAG,CAAC,KAAK,IAAIA,EAAE,EAAE,IAAI,EAAK,CAAC,IAAI,EAAkB,IAAI,EAAE,GAAGA,EAAE,GAAG,EAAM,EAAE,GAAGA,EAAE,GAAG,EAAE,MAAMA,EAAE,OAAO,EAAE,UAAUA,EAAE,cAC9O,IAAI,EAAaA,EAAE,MAChB,EAAS,IAAK,EAAaA,EAAE,OAAO,EAAS,KAAc,EAAS,KAAI,EAAaA,EAAE,OAAO,GAAG,EAAS,IAAI,KAAK,EAAI,YAAY,EAAa,EACnJ,IAAM,EAASA,EAAE,KAAK,EAAE,EAAI,MAAM,CAAC,EAAI,UAAUA,EAAE,EAAEA,EAAE,EAAE,CAAC,EAAI,OAAOA,EAAE,SAAS,CAAC,EAAI,UAAU,EAAQ,CAACA,EAAE,KAAK,CAACA,EAAE,KAAK,EAAS,EAAS,CAAC,EAAI,SAAS,CAAE,EAAI,YAAY,EAAE,EAAW,QAAQ,sBAAsB,EAAQ,EAAqD,MAAlD,GAAW,QAAQ,sBAAsB,EAAQ,KAAW,CAAI,EAAW,SAAQ,qBAAqB,EAAW,QAAQ,GAAK,CAAC,EAAQ,EAAM,EAAO,EAAa,EAAW,EAAQ,EAAQ,CAAC,CAAqB,EAAK,SAAS,CAAC,IAAI,EAAU,MAAM,CAAC,MAAM,OAAO,OAAO,OAAO,QAAQ,QAAQ,cAAc,OAAO,CAAC,CAAC,sBAtB9e,IAA4C,IAAoD,CAsBgZ,EAAoB,EAAY,CAAC,WAAW,CAAC,KAAK,EAAY,MAAM,MAAM,QAAQ,aAAa,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAY,OAAO,MAAM,UAAU,aAAa,GAAG,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,GAAG,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,cAAc,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,aAAa,CAAC,KAAK,EAAY,OAAO,MAAM,gBAAgB,aAAa,GAAG,IAAI,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,WAAW,CAAC,KAAK,EAAY,OAAO,MAAM,aAAa,aAAa,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAY,OAAO,MAAM,UAAU,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,ICrBhqC,SAAwB,EAAS,EAAO,EAAa,CAAC,MAAM,CAAC,YAAY,mBAAmB,OAAO,0BAA0B,MAAM,iBAAiB,mBCA1B,SAAwBC,EAAS,EAAO,EAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,YAAYC,EAAa,EAAO,EAAa,CAAC,YAAY,SAAS,EAAE,CAAC,OAAO,0BAA0B,gBAAgB,eAAe,MAAMA,EAAa,EAAO,EAAa,CAAC,OAAO,OAAO,SAAS,aAAa,sBAA7S,CAA4TC,EAAgB,EACzbC,EAAqB,CAAC,QAAU,CAAC,gBAAkB,CAAC,KAAO,WAAW,YAAc,CAAC,sBAAwB,IAAI,CAAC,CAAC,QAAU,CAAC,KAAO,WAAW,YAAc,CAAC,sBAAwB,IAAI,CAAC,CAAC,mBAAqB,CAAC,KAAO,WAAW,CAAC,CAAA,ICDzH,SAAwBC,EAAS,EAAO,EAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,YAAYC,EAAa,EAAO,EAAa,CAAC,YAAY,SAAS,EAAE,CAAC,OAAO,0BAA0B,gBAAgB,eAAe,MAAMA,EAAa,EAAO,EAAa,CAAC,OAAO,UAAU,SAAS,aAAa,sBAAjT,CAAgU,EAAgB,EAC7b,EAAqB,CAAC,QAAU,CAAC,QAAU,CAAC,KAAO,WAAW,YAAc,CAAC,sBAAwB,IAAI,CAAC,CAAC,gBAAkB,CAAC,KAAO,WAAW,YAAc,CAAC,sBAAwB,IAAI,CAAC,CAAC,mBAAqB,CAAC,KAAO,WAAW,CAAC,CAAA"}