{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/7Amh6YZ8n8u1J7i2DSAV/PBmnyBfP4oXQKgO7Hym0/VaporizeTextCycle_Prod.js"],
  "sourcesContent": ["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{ControlType,addPropertyControls,RenderTarget}from\"framer\";import{useRef,useEffect,useState,createElement,useMemo,useCallback,memo}from\"react\";import{useInView}from\"framer-motion\";var Tag;(function(Tag){Tag[\"H1\"]=\"h1\";Tag[\"H2\"]=\"h2\";Tag[\"H3\"]=\"h3\";Tag[\"P\"]=\"p\";})(Tag||(Tag={}));// ------------------------------------------------------------ //\n// PROPERTY CONTROLS\n// ------------------------------------------------------------ //\naddPropertyControls(VaporizeTextCycle,{texts:{type:ControlType.Array,control:{type:ControlType.String},defaultValue:[\"Framer University\",\"Learn Framer\"]},font:{type:ControlType.Font,defaultFontType:\"sans-serif\",controls:\"extended\"},color:{type:ControlType.Color,defaultValue:\"rgb(153, 153, 153)\"},spread:{type:ControlType.Number,title:\"Spread\",defaultValue:5,min:1,max:50,step:1,unit:\"x\"},density:{type:ControlType.Number,title:\"Density\",defaultValue:5,min:.1,max:10,step:.01,unit:\"x\"},animation:{type:ControlType.Object,controls:{vaporizeDuration:{type:ControlType.Number,defaultValue:2,min:.1,max:10,step:.1,unit:\"s\",title:\"Duration\"},fadeInDuration:{type:ControlType.Number,defaultValue:1,min:0,max:5,step:.1,unit:\"s\",title:\"Fade In\"},waitDuration:{type:ControlType.Number,defaultValue:.5,min:0,max:5,step:.1,unit:\"s\",title:\"Delay\"}}},direction:{type:ControlType.Enum,displaySegmentedControl:true,title:\"Direction\",defaultValue:\"left-to-right\",options:[\"right-to-left\",\"left-to-right\"],optionTitles:[\"Right to Left\",\"Left to Right\"],optionIcons:[\"direction-left\",\"direction-right\"]},alignment:{type:ControlType.Enum,displaySegmentedControl:true,title:\"Alignment\",defaultValue:\"center\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"]},tag:{type:ControlType.Enum,title:\"Tag\",defaultValue:\"p\",displaySegmentedControl:true,segmentedControlDirection:\"horizontal\",options:[\"h1\",\"h2\",\"h3\",\"p\"],optionTitles:[\"H1\",\"H2\",\"H3\",\"P\"]},canvasPreview:{type:ControlType.Boolean,defaultValue:true,title:\"Preview\",description:\"More components at [Framer University](https://frameruni.link/cc).\"}});// ------------------------------------------------------------ //\n// DEFAULT PROPS\n// ------------------------------------------------------------ //\nVaporizeTextCycle.defaultProps={texts:[\"Framer University\",\"Learn Framer\"],font:{fontFamily:\"sans-serif\",fontSize:\"50px\",textAlign:\"center\",fontWeight:400},color:\"rgb(153, 153, 153)\",spread:5,density:5,animation:{vaporizeDuration:2,fadeInDuration:1,waitDuration:.5},direction:\"left-to-right\",alignment:\"center\",canvasPreview:false};// ------------------------------------------------------------ //\n// MAIN COMPONENT\n// ------------------------------------------------------------ //\n/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 200\n * @framerDisableUnlink\n */export default function VaporizeTextCycle(props){const isOnFramerCanvas=RenderTarget.hasRestrictions();const canvasRef=useRef(null);const wrapperRef=useRef(null);const isInView=useInView(wrapperRef,{once:false,margin:\"50px\"});const lastFontRef=useRef(null);const particlesRef=useRef([]);const animationFrameRef=useRef(null);const[currentTextIndex,setCurrentTextIndex]=useState(0);const[animationState,setAnimationState]=useState(\"static\");const vaporizeProgressRef=useRef(0);const fadeOpacityRef=useRef(0);const{wrapperSize,setWrapperSize}=useWrapperSize();const transformedDensity=transformValue(props.density,[0,10],[.3,1],true);// memoized\nconst globalDpr=useMemo(()=>{if(isOnFramerCanvas){return 2;}else if(window!==undefined){return window.devicePixelRatio*1.5||1;}return 1;},[isOnFramerCanvas]);// Memoize static styles\nconst wrapperStyle=useMemo(()=>({width:\"100%\",height:\"100%\",pointerEvents:\"none\"}),[]);const canvasStyle=useMemo(()=>({minWidth:\"30px\",minHeight:\"20px\",pointerEvents:\"none\"}),[]);// Memoize animation durations\nconst animationDurations=useMemo(()=>({VAPORIZE_DURATION:props.animation.vaporizeDuration*1e3,FADE_IN_DURATION:props.animation.fadeInDuration*1e3,WAIT_DURATION:props.animation.waitDuration*1e3}),[props.animation.vaporizeDuration,props.animation.fadeInDuration,props.animation.waitDuration]);// Memoize font and spread calculations\nconst fontConfig=useMemo(()=>{const fontSize=parseInt(props.font.fontSize?.replace(\"px\",\"\")||\"50\");const VAPORIZE_SPREAD=calculateVaporizeSpread(fontSize);const MULTIPLIED_VAPORIZE_SPREAD=VAPORIZE_SPREAD*props.spread;return{fontSize,VAPORIZE_SPREAD,MULTIPLIED_VAPORIZE_SPREAD,font:`${props.font.fontWeight??400} ${fontSize*globalDpr}px ${props.font.fontFamily}`};},[props.font.fontSize,props.font.fontWeight,props.font.fontFamily,props.spread,globalDpr]);// Memoize particle update function\nconst memoizedUpdateParticles=useCallback((particles,vaporizeX,deltaTime)=>{return updateParticles(particles,vaporizeX,deltaTime,fontConfig.MULTIPLIED_VAPORIZE_SPREAD,animationDurations.VAPORIZE_DURATION,props.direction,transformedDensity);},[fontConfig.MULTIPLIED_VAPORIZE_SPREAD,animationDurations.VAPORIZE_DURATION,props.direction,transformedDensity]);// Memoize render function\nconst memoizedRenderParticles=useCallback((ctx,particles)=>{renderParticles(ctx,particles,globalDpr);},[globalDpr]);// Start animation cycle after initial render and when in view\nuseEffect(()=>{if(isOnFramerCanvas&&!props.canvasPreview){// Render first text only without animation\nconst canvas=canvasRef.current;const ctx=canvas?.getContext(\"2d\");if(!canvas||!ctx)return;renderText(ctx,props,canvas,globalDpr);return;}if(isInView){const startAnimationTimeout=setTimeout(()=>{setAnimationState(\"vaporizing\");},0);return()=>clearTimeout(startAnimationTimeout);}else{// When component goes out of view, reset to static state\nsetAnimationState(\"static\");if(animationFrameRef.current){cancelAnimationFrame(animationFrameRef.current);animationFrameRef.current=null;}}},[isInView,isOnFramerCanvas,props.canvasPreview]);// Animation loop - only run when in view\nuseEffect(()=>{if(!isInView)return;if(isOnFramerCanvas&&!props.canvasPreview)return;let lastTime=performance.now();let frameId;const animate=currentTime=>{const deltaTime=(currentTime-lastTime)/1e3;lastTime=currentTime;const canvas=canvasRef.current;const ctx=canvas?.getContext(\"2d\");if(!canvas||!ctx||!particlesRef.current.length){frameId=requestAnimationFrame(animate);return;}// Clear canvas only if we're going to draw\nctx.clearRect(0,0,canvas.width,canvas.height);const shouldContinueAnimation=true;// Update based on animation state\nswitch(animationState){case\"static\":{memoizedRenderParticles(ctx,particlesRef.current);break;}case\"vaporizing\":{// Calculate progress based on duration\nvaporizeProgressRef.current+=deltaTime*100/(animationDurations.VAPORIZE_DURATION/1e3);// Get text boundaries\nconst textBoundaries=canvas.textBoundaries;// Calculate vaporize position based on text boundaries and direction\nconst progress=Math.min(100,vaporizeProgressRef.current);const vaporizeX=props.direction===\"left-to-right\"?textBoundaries.left+textBoundaries.width*progress/100:textBoundaries.right-textBoundaries.width*progress/100;const allVaporized=memoizedUpdateParticles(particlesRef.current,vaporizeX,deltaTime);memoizedRenderParticles(ctx,particlesRef.current);// Check if vaporization is complete\nif(vaporizeProgressRef.current>=100&&allVaporized){setCurrentTextIndex(prevIndex=>(prevIndex+1)%props.texts.length);setAnimationState(\"fadingIn\");fadeOpacityRef.current=0;}break;}case\"fadingIn\":{fadeOpacityRef.current+=deltaTime*1e3/animationDurations.FADE_IN_DURATION;// Use particles for fade-in\nctx.save();ctx.scale(globalDpr,globalDpr);particlesRef.current.forEach(particle=>{particle.x=particle.originalX;particle.y=particle.originalY;const opacity=Math.min(fadeOpacityRef.current,1)*particle.originalAlpha;const color=particle.color.replace(/[\\d.]+\\)$/,`${opacity})`);ctx.fillStyle=color;ctx.fillRect(particle.x/globalDpr,particle.y/globalDpr,1,1);});ctx.restore();if(fadeOpacityRef.current>=1){setAnimationState(\"waiting\");setTimeout(()=>{setAnimationState(\"vaporizing\");vaporizeProgressRef.current=0;resetParticles(particlesRef.current);},animationDurations.WAIT_DURATION);}break;}case\"waiting\":{memoizedRenderParticles(ctx,particlesRef.current);break;}}if(shouldContinueAnimation){frameId=requestAnimationFrame(animate);}};frameId=requestAnimationFrame(animate);return()=>{if(frameId){cancelAnimationFrame(frameId);}};},[animationState,isInView,isOnFramerCanvas,props.canvasPreview,props.texts.length,props.direction,globalDpr,memoizedUpdateParticles,memoizedRenderParticles,animationDurations.FADE_IN_DURATION,animationDurations.WAIT_DURATION,animationDurations.VAPORIZE_DURATION]);useEffect(()=>{renderCanvas({framerProps:props,canvasRef,wrapperSize,isOnFramerCanvas,particlesRef,globalDpr,currentTextIndex,transformedDensity:transformedDensity});const currentFont=props.font.fontFamily||\"sans-serif\";return handleFontChange({currentFont,lastFontRef,isOnFramerCanvas,props,canvasRef,wrapperSize,particlesRef,globalDpr,currentTextIndex,transformedDensity:transformedDensity});},[props,canvasRef,wrapperSize,isOnFramerCanvas,currentTextIndex]);useResizeObserver({wrapperRef,wrapperSize,setWrapperSize,props,canvasRef,isOnFramerCanvas,particlesRef,globalDpr,currentTextIndex,transformedDensity:transformedDensity});return /*#__PURE__*/_jsxs(\"div\",{ref:wrapperRef,style:wrapperStyle,children:[/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:canvasStyle}),/*#__PURE__*/_jsx(SeoElement,{tag:props.tag,texts:props.texts})]});}// ------------------------------------------------------------ //\n// SEO ELEMENT\n// ------------------------------------------------------------ //\nconst SeoElement=/*#__PURE__*/memo(({tag=\"p\",texts})=>{const style=useMemo(()=>({position:\"absolute\",width:\"0\",height:\"0\",overflow:\"hidden\",userSelect:\"none\",pointerEvents:\"none\"}),[]);// Ensure tag is a valid HTML element string\nconst safeTag=Object.values(Tag).includes(tag)?tag:\"p\";return /*#__PURE__*/createElement(safeTag,{style},texts?.join(\" \")??\"\");});// ------------------------------------------------------------ //\n// FONT HANDLING\n// ------------------------------------------------------------ //\nconst handleFontChange=({currentFont,lastFontRef,isOnFramerCanvas,props,canvasRef,wrapperSize,particlesRef,globalDpr,currentTextIndex,transformedDensity})=>{if(currentFont!==lastFontRef.current&&isOnFramerCanvas){lastFontRef.current=currentFont;// Re-render after 1 second to catch the loaded font\nconst timeoutId=setTimeout(()=>{cleanup({canvasRef,particlesRef})// Clean up before re-rendering\n;renderCanvas({framerProps:props,canvasRef,wrapperSize,isOnFramerCanvas,particlesRef,globalDpr,currentTextIndex,transformedDensity:transformedDensity});},1e3);return()=>{clearTimeout(timeoutId);cleanup({canvasRef,particlesRef});};}return undefined;};// ------------------------------------------------------------ //\n// CLEANUP\n// ------------------------------------------------------------ //\nconst cleanup=({canvasRef,particlesRef})=>{// Clear canvas\nconst canvas=canvasRef.current;const ctx=canvas?.getContext(\"2d\");if(canvas&&ctx){ctx.clearRect(0,0,canvas.width,canvas.height);}// Clear particles\nif(particlesRef.current){particlesRef.current=[];}};// ------------------------------------------------------------ //\n// RESIZE OBSERVER\n// ------------------------------------------------------------ //\nconst useResizeObserver=({wrapperRef,wrapperSize,setWrapperSize,props,canvasRef,isOnFramerCanvas,particlesRef,globalDpr,currentTextIndex,transformedDensity})=>{useEffect(()=>{const container=wrapperRef.current;if(!container)return;const resizeObserver=new ResizeObserver(entries=>{for(const entry of entries){const{width,height}=entry.contentRect;setWrapperSize({width,height});}renderCanvas({framerProps:props,canvasRef,wrapperSize,isOnFramerCanvas,particlesRef,globalDpr,currentTextIndex,transformedDensity:transformedDensity});});resizeObserver.observe(container);return()=>{resizeObserver.disconnect();};},[wrapperRef]);};// ------------------------------------------------------------ //\n// WRAPPER SIZE\n// ------------------------------------------------------------ //\nconst useWrapperSize=()=>{const wrapperRef=useRef(null);const[wrapperSize,setWrapperSize]=useState({width:null,height:null});useEffect(()=>{if(wrapperRef.current){const rect=wrapperRef.current.getBoundingClientRect();setWrapperSize({width:rect.width,height:rect.height});}},[wrapperRef]);return{wrapperSize,setWrapperSize,wrapperRef};};// ------------------------------------------------------------ //\n// RENDER CANVAS\n// ------------------------------------------------------------ //\nconst renderCanvas=({framerProps,canvasRef,wrapperSize,isOnFramerCanvas,particlesRef,globalDpr,currentTextIndex,transformedDensity})=>{const canvas=canvasRef.current;if(!canvas||!wrapperSize.width||!wrapperSize.height)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;const{width,height}=wrapperSize;// Scale for retina/high DPI displays\ncanvas.style.width=`${width}px`;canvas.style.height=`${height}px`;canvas.width=Math.floor(width*globalDpr);canvas.height=Math.floor(height*globalDpr);// If on Framer canvas and preview is disabled, render static text\nif(isOnFramerCanvas&&!framerProps.canvasPreview){renderText(ctx,framerProps,canvas,globalDpr);return;}// Parse font size\nconst fontSize=parseInt(framerProps.font.fontSize?.replace(\"px\",\"\")||\"50\");const font=`${framerProps.font.fontWeight??400} ${fontSize*globalDpr}px ${framerProps.font.fontFamily}`;const color=parseFramerColor(framerProps.color);// Calculate text position\nlet textX;const textY=canvas.height/2;const currentText=framerProps.texts[currentTextIndex]||\"Framer\";if(framerProps.alignment===\"center\"){textX=canvas.width/2;}else if(framerProps.alignment===\"left\"){textX=0;}else{textX=canvas.width;}// Create particles from the rendered text and get text boundaries\nconst{particles,textBoundaries}=createParticles(ctx,canvas,currentText,textX,textY,font,color,framerProps.alignment);// Store particles and text boundaries for animation\nparticlesRef.current=particles;canvas.textBoundaries=textBoundaries;};// ------------------------------------------------------------ //\n// PARTICLE SYSTEM\n// ------------------------------------------------------------ //\nconst createParticles=(ctx,canvas,text,textX,textY,font,color,alignment)=>{const particles=[];// Clear any previous content\nctx.clearRect(0,0,canvas.width,canvas.height);// Set text properties for sampling\nctx.fillStyle=color;ctx.font=font;ctx.textAlign=alignment;ctx.textBaseline=\"middle\";ctx.imageSmoothingQuality=\"high\";ctx.imageSmoothingEnabled=true;if(ctx.fontKerning)ctx.fontKerning=\"normal\";if(ctx.textRendering)ctx.textRendering=\"geometricPrecision\";// Calculate text boundaries\nconst metrics=ctx.measureText(text);let textLeft;const textWidth=metrics.width;if(alignment===\"center\"){textLeft=textX-textWidth/2;}else if(alignment===\"left\"){textLeft=textX;}else{textLeft=textX-textWidth;}const textBoundaries={left:textLeft,right:textLeft+textWidth,width:textWidth};// Render the text for sampling\nctx.fillText(text,textX,textY);// Sample the rendered text\nconst imageData=ctx.getImageData(0,0,canvas.width,canvas.height);const data=imageData.data;// Calculate sampling rate based on DPR and density to maintain consistent particle density\nconst baseDPR=3// Base DPR we're optimizing for\n;const currentDPR=canvas.width/parseInt(canvas.style.width);const baseSampleRate=Math.max(1,Math.round(currentDPR/baseDPR));const sampleRate=Math.max(1,Math.round(baseSampleRate))// Adjust sample rate by density\n;// Sample the text pixels and create particles\nfor(let y=0;y<canvas.height;y+=sampleRate){for(let x=0;x<canvas.width;x+=sampleRate){const index=(y*canvas.width+x)*4;const alpha=data[index+3];if(alpha>0){// Remove density from opacity calculation\nconst originalAlpha=alpha/255*(sampleRate/currentDPR);const particle={x,y,originalX:x,originalY:y,color:`rgba(${data[index]}, ${data[index+1]}, ${data[index+2]}, ${originalAlpha})`,opacity:originalAlpha,originalAlpha,// Animation properties\nvelocityX:0,velocityY:0,angle:0,speed:0};particles.push(particle);}}}// Clear the canvas after sampling\nctx.clearRect(0,0,canvas.width,canvas.height);return{particles,textBoundaries};};// Helper functions for particle animation\nconst updateParticles=(particles,vaporizeX,deltaTime,MULTIPLIED_VAPORIZE_SPREAD,VAPORIZE_DURATION,direction,density)=>{let allParticlesVaporized=true;particles.forEach(particle=>{// Only animate particles that have been \"vaporized\"\nconst shouldVaporize=direction===\"left-to-right\"?particle.originalX<=vaporizeX:particle.originalX>=vaporizeX;if(shouldVaporize){// When a particle is first vaporized, determine if it should fade quickly based on density\nif(particle.speed===0){// Initialize particle motion when first vaporized\nparticle.angle=Math.random()*Math.PI*2;particle.speed=(Math.random()*1+.5)*MULTIPLIED_VAPORIZE_SPREAD;particle.velocityX=Math.cos(particle.angle)*particle.speed;particle.velocityY=Math.sin(particle.angle)*particle.speed;// Determine if particle should fade quickly based on density\n// density of 1 means all particles animate normally\n// density of 0.5 means 50% of particles fade quickly\nparticle.shouldFadeQuickly=Math.random()>density;}if(particle.shouldFadeQuickly){// Quick fade out for particles marked to fade quickly\nparticle.opacity=Math.max(0,particle.opacity-deltaTime);// particle.opacity = 0;\n}else{// Apply normal particle physics and animation\n// Apply damping based on distance from original position\nconst dx=particle.originalX-particle.x;const dy=particle.originalY-particle.y;const distanceFromOrigin=Math.sqrt(dx*dx+dy*dy);// Damping factor increases with distance, creating a more natural motion\nconst dampingFactor=Math.max(.95,1-distanceFromOrigin/(100*MULTIPLIED_VAPORIZE_SPREAD));// Add slight random motion to create a more organic feel\nconst randomSpread=MULTIPLIED_VAPORIZE_SPREAD*3;const spreadX=(Math.random()-.5)*randomSpread;const spreadY=(Math.random()-.5)*randomSpread;// Update velocities with damping and random motion\nparticle.velocityX=(particle.velocityX+spreadX+dx*.002)*dampingFactor;particle.velocityY=(particle.velocityY+spreadY+dy*.002)*dampingFactor;// Limit maximum velocity\nconst maxVelocity=MULTIPLIED_VAPORIZE_SPREAD*2;const currentVelocity=Math.sqrt(particle.velocityX*particle.velocityX+particle.velocityY*particle.velocityY);if(currentVelocity>maxVelocity){const scale=maxVelocity/currentVelocity;particle.velocityX*=scale;particle.velocityY*=scale;}// Update position\nparticle.x+=particle.velocityX*deltaTime*20;particle.y+=particle.velocityY*deltaTime*10;// Calculate fade rate based on vaporize duration\nconst baseFadeRate=.25;const durationBasedFadeRate=baseFadeRate*(2e3/VAPORIZE_DURATION);// Slower fade out for more persistence, scaled by duration\nparticle.opacity=Math.max(0,particle.opacity-deltaTime*durationBasedFadeRate);}// Check if this particle is still visible\nif(particle.opacity>.01){allParticlesVaporized=false;}}else{// If there are any particles not yet reached by the vaporize wave\nallParticlesVaporized=false;}});return allParticlesVaporized;};const renderParticles=(ctx,particles,globalDpr)=>{ctx.save();ctx.scale(globalDpr,globalDpr);particles.forEach(particle=>{if(particle.opacity>0){const color=particle.color.replace(/[\\d.]+\\)$/,`${particle.opacity})`);ctx.fillStyle=color;ctx.fillRect(particle.x/globalDpr,particle.y/globalDpr,1,1);}});ctx.restore();};const resetParticles=particles=>{particles.forEach(particle=>{particle.x=particle.originalX;particle.y=particle.originalY;particle.opacity=particle.originalAlpha;particle.speed=0;particle.velocityX=0;particle.velocityY=0;});};const renderText=(ctx,props,canvas,globalDpr)=>{// Clear canvas\nctx.clearRect(0,0,canvas.width,canvas.height);// Scale for retina/high DPI displays\nctx.save();ctx.scale(globalDpr,globalDpr);// Parse font size and set up text properties\nconst fontSize=parseInt(props.font.fontSize?.replace(\"px\",\"\")||\"50\");const font=`${props.font.fontWeight??400} ${fontSize}px ${props.font.fontFamily}`;ctx.font=font;ctx.fillStyle=props.color;ctx.textAlign=props.alignment;ctx.textBaseline=\"middle\";// Calculate text position\nlet textX;if(props.alignment===\"center\"){textX=canvas.width/(2*globalDpr);}else if(props.alignment===\"left\"){textX=0;}else{textX=canvas.width/globalDpr;}// Draw first text only\nctx.fillText(props.texts[0],textX,canvas.height/(2*globalDpr));ctx.restore();};// ------------------------------------------------------------ //\n// CALCULATE VAPORIZE SPREAD\n// ------------------------------------------------------------ //\nconst calculateVaporizeSpread=fontSize=>{// Convert font size string to number if needed\nconst size=typeof fontSize===\"string\"?parseInt(fontSize):fontSize;// Define our known points for interpolation\nconst points=[{size:20,spread:.2},{size:50,spread:.5},{size:100,spread:1.5}];// Handle edge cases\nif(size<=points[0].size)return points[0].spread;if(size>=points[points.length-1].size)return points[points.length-1].spread;// Find the two points to interpolate between\nlet i=0;while(i<points.length-1&&points[i+1].size<size)i++;// Linear interpolation between the two closest points\nconst p1=points[i];const p2=points[i+1];return p1.spread+(size-p1.size)*(p2.spread-p1.spread)/(p2.size-p1.size);};// ------------------------------------------------------------ //\n// PARSE FRAMER COLOR\n// ------------------------------------------------------------ //\n/**\n * Extracts RGB/RGBA values from a Framer color string format\n * @param color - Framer color string (e.g. \"var(--token-xxx, rgb(12, 250, 163)) /* {\"name\":\"green\"}\n * @returns Valid RGBA color string\n */const parseFramerColor=color=>{// Try to match rgb/rgba pattern inside var() or directly\nconst rgbMatch=color.match(/rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);const rgbaMatch=color.match(/rgba\\((\\d+),\\s*(\\d+),\\s*(\\d+),\\s*([\\d.]+)\\)/);if(rgbaMatch){// If RGBA format\nconst[_,r,g,b,a]=rgbaMatch;return`rgba(${r}, ${g}, ${b}, ${a})`;}else if(rgbMatch){// If RGB format\nconst[_,r,g,b]=rgbMatch;return`rgba(${r}, ${g}, ${b}, 1)`;}// Fallback to black if parsing fails\nconsole.warn(\"Could not parse color:\",color);return\"rgba(0, 0, 0, 1)\";};/**\n * Maps a value from one range to another, optionally clamping the result.\n *\n * @param input - The value to transform.\n * @param inputRange - A tuple of two numbers [from, to] defining the input range.\n * @param outputRange - A tuple of two numbers [from, to] defining the output range.\n * @param clamp - Whether to clamp the output value within the output range.\n * @returns The transformed value.\n */function transformValue(input,inputRange,outputRange,clamp=false){const[inputMin,inputMax]=inputRange;const[outputMin,outputMax]=outputRange;const progress=(input-inputMin)/(inputMax-inputMin);let result=outputMin+progress*(outputMax-outputMin);if(clamp){if(outputMax>outputMin){result=Math.min(Math.max(result,outputMin),outputMax);}else{result=Math.min(Math.max(result,outputMax),outputMin);}}return result;}VaporizeTextCycle.displayName=\"Vaporize Text Cycle\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"VaporizeTextCycle\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"400\",\"framerIntrinsicHeight\":\"200\",\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./VaporizeTextCycle_Prod.map"],
  "mappings": "wMAAmP,IAAIA,GAAK,SAASA,EAAI,CAACA,EAAI,GAAM,KAAKA,EAAI,GAAM,KAAKA,EAAI,GAAM,KAAKA,EAAI,EAAK,GAAI,GAAGA,IAAMA,EAAI,CAAC,EAAE,EAGpVC,EAAoBC,EAAkB,CAAC,MAAM,CAAC,KAAKC,EAAY,MAAM,QAAQ,CAAC,KAAKA,EAAY,MAAM,EAAE,aAAa,CAAC,oBAAoB,cAAc,CAAC,EAAE,KAAK,CAAC,KAAKA,EAAY,KAAK,gBAAgB,aAAa,SAAS,UAAU,EAAE,MAAM,CAAC,KAAKA,EAAY,MAAM,aAAa,oBAAoB,EAAE,OAAO,CAAC,KAAKA,EAAY,OAAO,MAAM,SAAS,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,GAAG,EAAE,QAAQ,CAAC,KAAKA,EAAY,OAAO,MAAM,UAAU,aAAa,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,IAAI,KAAK,GAAG,EAAE,UAAU,CAAC,KAAKA,EAAY,OAAO,SAAS,CAAC,iBAAiB,CAAC,KAAKA,EAAY,OAAO,aAAa,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,IAAI,MAAM,UAAU,EAAE,eAAe,CAAC,KAAKA,EAAY,OAAO,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,IAAI,MAAM,SAAS,EAAE,aAAa,CAAC,KAAKA,EAAY,OAAO,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,IAAI,MAAM,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,KAAKA,EAAY,KAAK,wBAAwB,GAAK,MAAM,YAAY,aAAa,gBAAgB,QAAQ,CAAC,gBAAgB,eAAe,EAAE,aAAa,CAAC,gBAAgB,eAAe,EAAE,YAAY,CAAC,iBAAiB,iBAAiB,CAAC,EAAE,UAAU,CAAC,KAAKA,EAAY,KAAK,wBAAwB,GAAK,MAAM,YAAY,aAAa,SAAS,QAAQ,CAAC,OAAO,SAAS,OAAO,EAAE,aAAa,CAAC,OAAO,SAAS,OAAO,CAAC,EAAE,IAAI,CAAC,KAAKA,EAAY,KAAK,MAAM,MAAM,aAAa,IAAI,wBAAwB,GAAK,0BAA0B,aAAa,QAAQ,CAAC,KAAK,KAAK,KAAK,GAAG,EAAE,aAAa,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC,EAAE,cAAc,CAAC,KAAKA,EAAY,QAAQ,aAAa,GAAK,MAAM,UAAU,YAAY,oEAAoE,CAAC,CAAC,EAGtkDD,EAAkB,aAAa,CAAC,MAAM,CAAC,oBAAoB,cAAc,EAAE,KAAK,CAAC,WAAW,aAAa,SAAS,OAAO,UAAU,SAAS,WAAW,GAAG,EAAE,MAAM,qBAAqB,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,EAAE,UAAU,gBAAgB,UAAU,SAAS,cAAc,EAAK,EASxT,SAARA,EAAmCE,EAAM,CAAC,IAAMC,EAAiBC,EAAa,gBAAgB,EAAQC,EAAUC,EAAO,IAAI,EAAQC,EAAWD,EAAO,IAAI,EAAQE,EAASC,EAAUF,EAAW,CAAC,KAAK,GAAM,OAAO,MAAM,CAAC,EAAQG,EAAYJ,EAAO,IAAI,EAAQK,EAAaL,EAAO,CAAC,CAAC,EAAQM,EAAkBN,EAAO,IAAI,EAAO,CAACO,EAAiBC,CAAmB,EAAEC,EAAS,CAAC,EAAO,CAACC,EAAeC,CAAiB,EAAEF,EAAS,QAAQ,EAAQG,EAAoBZ,EAAO,CAAC,EAAQa,EAAeb,EAAO,CAAC,EAAO,CAAC,YAAAc,EAAY,eAAAC,CAAc,EAAEC,GAAe,EAAQC,EAAmBC,GAAetB,EAAM,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAI,EAClnBuB,EAAUC,EAAQ,IAAQvB,EAAyB,EAAWwB,IAAS,QAAkBA,EAAO,iBAAiB,KAAK,EAAc,CAACxB,CAAgB,CAAC,EACtJyB,EAAaF,EAAQ,KAAK,CAAC,MAAM,OAAO,OAAO,OAAO,cAAc,MAAM,GAAG,CAAC,CAAC,EAAQG,EAAYH,EAAQ,KAAK,CAAC,SAAS,OAAO,UAAU,OAAO,cAAc,MAAM,GAAG,CAAC,CAAC,EAC3KI,EAAmBJ,EAAQ,KAAK,CAAC,kBAAkBxB,EAAM,UAAU,iBAAiB,IAAI,iBAAiBA,EAAM,UAAU,eAAe,IAAI,cAAcA,EAAM,UAAU,aAAa,GAAG,GAAG,CAACA,EAAM,UAAU,iBAAiBA,EAAM,UAAU,eAAeA,EAAM,UAAU,YAAY,CAAC,EAC3R6B,EAAWL,EAAQ,IAAI,CAAC,IAAMM,EAAS,SAAS9B,EAAM,KAAK,UAAU,QAAQ,KAAK,EAAE,GAAG,IAAI,EAAQ+B,EAAgBC,GAAwBF,CAAQ,EAAQG,EAA2BF,EAAgB/B,EAAM,OAAO,MAAM,CAAC,SAAA8B,EAAS,gBAAAC,EAAgB,2BAAAE,EAA2B,KAAK,GAAGjC,EAAM,KAAK,YAAY,GAAG,IAAI8B,EAASP,CAAS,MAAMvB,EAAM,KAAK,UAAU,EAAE,CAAE,EAAE,CAACA,EAAM,KAAK,SAASA,EAAM,KAAK,WAAWA,EAAM,KAAK,WAAWA,EAAM,OAAOuB,CAAS,CAAC,EAC/bW,EAAwBC,EAAY,CAACC,EAAUC,EAAUC,IAAoBC,GAAgBH,EAAUC,EAAUC,EAAUT,EAAW,2BAA2BD,EAAmB,kBAAkB5B,EAAM,UAAUqB,CAAkB,EAAI,CAACQ,EAAW,2BAA2BD,EAAmB,kBAAkB5B,EAAM,UAAUqB,CAAkB,CAAC,EAC3VmB,EAAwBL,EAAY,CAACM,EAAIL,IAAY,CAACM,GAAgBD,EAAIL,EAAUb,CAAS,CAAE,EAAE,CAACA,CAAS,CAAC,EAClH,OAAAoB,EAAU,IAAI,CAAC,GAAG1C,GAAkB,CAACD,EAAM,cAAc,CACzD,IAAM4C,EAAOzC,EAAU,QAAcsC,EAAIG,GAAQ,WAAW,IAAI,EAAE,GAAG,CAACA,GAAQ,CAACH,EAAI,OAAOI,EAAWJ,EAAIzC,EAAM4C,EAAOrB,CAAS,EAAE,MAAO,CAAC,GAAGjB,EAAS,CAAC,IAAMwC,EAAsB,WAAW,IAAI,CAAC/B,EAAkB,YAAY,CAAE,EAAE,CAAC,EAAE,MAAM,IAAI,aAAa+B,CAAqB,CAAE,MACrR/B,EAAkB,QAAQ,EAAKL,EAAkB,UAAS,qBAAqBA,EAAkB,OAAO,EAAEA,EAAkB,QAAQ,KAAO,EAAE,CAACJ,EAASL,EAAiBD,EAAM,aAAa,CAAC,EAC5L2C,EAAU,IAAI,CAAqB,GAAjB,CAACrC,GAAmBL,GAAkB,CAACD,EAAM,cAAc,OAAO,IAAI+C,EAAS,YAAY,IAAI,EAAMC,EAAcC,EAAQC,GAAa,CAAC,IAAMZ,GAAWY,EAAYH,GAAU,IAAIA,EAASG,EAAY,IAAMN,EAAOzC,EAAU,QAAcsC,EAAIG,GAAQ,WAAW,IAAI,EAAE,GAAG,CAACA,GAAQ,CAACH,GAAK,CAAChC,EAAa,QAAQ,OAAO,CAACuC,EAAQ,sBAAsBC,CAAO,EAAE,MAAO,CAC3XR,EAAI,UAAU,EAAE,EAAEG,EAAO,MAAMA,EAAO,MAAM,EAAE,IAAMO,EAAwB,GAC5E,OAAOrC,EAAe,CAAC,IAAI,SAAS,CAAC0B,EAAwBC,EAAIhC,EAAa,OAAO,EAAE,KAAM,CAAC,IAAI,aAAa,CAC/GO,EAAoB,SAASsB,EAAU,KAAKV,EAAmB,kBAAkB,KACjF,IAAMwB,EAAeR,EAAO,eACtBS,EAAS,KAAK,IAAI,IAAIrC,EAAoB,OAAO,EAAQqB,EAAUrC,EAAM,YAAY,gBAAgBoD,EAAe,KAAKA,EAAe,MAAMC,EAAS,IAAID,EAAe,MAAMA,EAAe,MAAMC,EAAS,IAAUC,GAAapB,EAAwBzB,EAAa,QAAQ4B,EAAUC,CAAS,EAAEE,EAAwBC,EAAIhC,EAAa,OAAO,EAC1VO,EAAoB,SAAS,KAAKsC,KAAc1C,EAAoB2C,KAAYA,GAAU,GAAGvD,EAAM,MAAM,MAAM,EAAEe,EAAkB,UAAU,EAAEE,EAAe,QAAQ,GAAG,KAAM,CAAC,IAAI,WAAW,CAACA,EAAe,SAASqB,EAAU,IAAIV,EAAmB,iBAC5Pa,EAAI,KAAK,EAAEA,EAAI,MAAMlB,EAAUA,CAAS,EAAEd,EAAa,QAAQ,QAAQ+C,GAAU,CAACA,EAAS,EAAEA,EAAS,UAAUA,EAAS,EAAEA,EAAS,UAAU,IAAMC,EAAQ,KAAK,IAAIxC,EAAe,QAAQ,CAAC,EAAEuC,EAAS,cAAoBE,EAAMF,EAAS,MAAM,QAAQ,YAAY,GAAGC,CAAO,GAAG,EAAEhB,EAAI,UAAUiB,EAAMjB,EAAI,SAASe,EAAS,EAAEjC,EAAUiC,EAAS,EAAEjC,EAAU,EAAE,CAAC,CAAE,CAAC,EAAEkB,EAAI,QAAQ,EAAKxB,EAAe,SAAS,IAAGF,EAAkB,SAAS,EAAE,WAAW,IAAI,CAACA,EAAkB,YAAY,EAAEC,EAAoB,QAAQ,EAAE2C,GAAelD,EAAa,OAAO,CAAE,EAAEmB,EAAmB,aAAa,GAAG,KAAM,CAAC,IAAI,UAAU,CAACY,EAAwBC,EAAIhC,EAAa,OAAO,EAAE,KAAM,CAAC,CAAI0C,IAAyBH,EAAQ,sBAAsBC,CAAO,EAAG,EAAE,OAAAD,EAAQ,sBAAsBC,CAAO,EAAQ,IAAI,CAAID,GAAS,qBAAqBA,CAAO,CAAG,CAAE,EAAE,CAAClC,EAAeR,EAASL,EAAiBD,EAAM,cAAcA,EAAM,MAAM,OAAOA,EAAM,UAAUuB,EAAUW,EAAwBM,EAAwBZ,EAAmB,iBAAiBA,EAAmB,cAAcA,EAAmB,iBAAiB,CAAC,EAAEe,EAAU,IAAI,CAACiB,EAAa,CAAC,YAAY5D,EAAM,UAAAG,EAAU,YAAAe,EAAY,iBAAAjB,EAAiB,aAAAQ,EAAa,UAAAc,EAAU,iBAAAZ,EAAiB,mBAAmBU,CAAkB,CAAC,EAAE,IAAMwC,EAAY7D,EAAM,KAAK,YAAY,aAAa,OAAO8D,GAAiB,CAAC,YAAAD,EAAY,YAAArD,EAAY,iBAAAP,EAAiB,MAAAD,EAAM,UAAAG,EAAU,YAAAe,EAAY,aAAAT,EAAa,UAAAc,EAAU,iBAAAZ,EAAiB,mBAAmBU,CAAkB,CAAC,CAAE,EAAE,CAACrB,EAAMG,EAAUe,EAAYjB,EAAiBU,CAAgB,CAAC,EAAEoD,GAAkB,CAAC,WAAA1D,EAAW,YAAAa,EAAY,eAAAC,EAAe,MAAAnB,EAAM,UAAAG,EAAU,iBAAAF,EAAiB,aAAAQ,EAAa,UAAAc,EAAU,iBAAAZ,EAAiB,mBAAmBU,CAAkB,CAAC,EAAsB2C,EAAM,MAAM,CAAC,IAAI3D,EAAW,MAAMqB,EAAa,SAAS,CAAcuC,EAAK,SAAS,CAAC,IAAI9D,EAAU,MAAMwB,CAAW,CAAC,EAAesC,EAAKC,GAAW,CAAC,IAAIlE,EAAM,IAAI,MAAMA,EAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE,CAG34D,IAAMkE,GAAwBC,EAAK,CAAC,CAAC,IAAAC,EAAI,IAAI,MAAAC,CAAK,IAAI,CAAC,IAAMC,EAAM9C,EAAQ,KAAK,CAAC,SAAS,WAAW,MAAM,IAAI,OAAO,IAAI,SAAS,SAAS,WAAW,OAAO,cAAc,MAAM,GAAG,CAAC,CAAC,EACjL+C,EAAQ,OAAO,OAAO3E,CAAG,EAAE,SAASwE,CAAG,EAAEA,EAAI,IAAI,OAAoBI,EAAcD,EAAQ,CAAC,MAAAD,CAAK,EAAED,GAAO,KAAK,GAAG,GAAG,EAAE,CAAE,CAAC,EAG1HP,GAAiB,CAAC,CAAC,YAAAD,EAAY,YAAArD,EAAY,iBAAAP,EAAiB,MAAAD,EAAM,UAAAG,EAAU,YAAAe,EAAY,aAAAT,EAAa,UAAAc,EAAU,iBAAAZ,EAAiB,mBAAAU,CAAkB,IAAI,CAAC,GAAGwC,IAAcrD,EAAY,SAASP,EAAiB,CAACO,EAAY,QAAQqD,EACzO,IAAMY,EAAU,WAAW,IAAI,CAACC,EAAQ,CAAC,UAAAvE,EAAU,aAAAM,CAAY,CAAC,EAC/DmD,EAAa,CAAC,YAAY5D,EAAM,UAAAG,EAAU,YAAAe,EAAY,iBAAAjB,EAAiB,aAAAQ,EAAa,UAAAc,EAAU,iBAAAZ,EAAiB,mBAAmBU,CAAkB,CAAC,CAAE,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC,aAAaoD,CAAS,EAAEC,EAAQ,CAAC,UAAAvE,EAAU,aAAAM,CAAY,CAAC,CAAE,CAAE,CAAkB,EAGlPiE,EAAQ,CAAC,CAAC,UAAAvE,EAAU,aAAAM,CAAY,IAAI,CAC1C,IAAMmC,EAAOzC,EAAU,QAAcsC,EAAIG,GAAQ,WAAW,IAAI,EAAKA,GAAQH,GAAKA,EAAI,UAAU,EAAE,EAAEG,EAAO,MAAMA,EAAO,MAAM,EAC3HnC,EAAa,UAASA,EAAa,QAAQ,CAAC,EAAG,EAG5CsD,GAAkB,CAAC,CAAC,WAAA1D,EAAW,YAAAa,EAAY,eAAAC,EAAe,MAAAnB,EAAM,UAAAG,EAAU,iBAAAF,EAAiB,aAAAQ,EAAa,UAAAc,EAAU,iBAAAZ,EAAiB,mBAAAU,CAAkB,IAAI,CAACsB,EAAU,IAAI,CAAC,IAAMgC,EAAUtE,EAAW,QAAQ,GAAG,CAACsE,EAAU,OAAO,IAAMC,EAAe,IAAI,eAAeC,GAAS,CAAC,QAAUC,KAASD,EAAQ,CAAC,GAAK,CAAC,MAAAE,EAAM,OAAAC,CAAM,EAAEF,EAAM,YAAY3D,EAAe,CAAC,MAAA4D,EAAM,OAAAC,CAAM,CAAC,CAAE,CAACpB,EAAa,CAAC,YAAY5D,EAAM,UAAAG,EAAU,YAAAe,EAAY,iBAAAjB,EAAiB,aAAAQ,EAAa,UAAAc,EAAU,iBAAAZ,EAAiB,mBAAmBU,CAAkB,CAAC,CAAE,CAAC,EAAE,OAAAuD,EAAe,QAAQD,CAAS,EAAQ,IAAI,CAACC,EAAe,WAAW,CAAE,CAAE,EAAE,CAACvE,CAAU,CAAC,CAAE,EAG1mBe,GAAe,IAAI,CAAC,IAAMf,EAAWD,EAAO,IAAI,EAAO,CAACc,EAAYC,CAAc,EAAEN,EAAS,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,EAAE,OAAA8B,EAAU,IAAI,CAAC,GAAGtC,EAAW,QAAQ,CAAC,IAAM4E,EAAK5E,EAAW,QAAQ,sBAAsB,EAAEc,EAAe,CAAC,MAAM8D,EAAK,MAAM,OAAOA,EAAK,MAAM,CAAC,CAAE,CAAC,EAAE,CAAC5E,CAAU,CAAC,EAAQ,CAAC,YAAAa,EAAY,eAAAC,EAAe,WAAAd,CAAU,CAAE,EAGxUuD,EAAa,CAAC,CAAC,YAAAsB,EAAY,UAAA/E,EAAU,YAAAe,EAAY,iBAAAjB,EAAiB,aAAAQ,EAAa,UAAAc,EAAU,iBAAAZ,EAAiB,mBAAAU,CAAkB,IAAI,CAAC,IAAMuB,EAAOzC,EAAU,QAAQ,GAAG,CAACyC,GAAQ,CAAC1B,EAAY,OAAO,CAACA,EAAY,OAAO,OAAO,IAAMuB,EAAIG,EAAO,WAAW,IAAI,EAAE,GAAG,CAACH,EAAI,OAAO,GAAK,CAAC,MAAAsC,EAAM,OAAAC,CAAM,EAAE9D,EAEtS,GADA0B,EAAO,MAAM,MAAM,GAAGmC,CAAK,KAAKnC,EAAO,MAAM,OAAO,GAAGoC,CAAM,KAAKpC,EAAO,MAAM,KAAK,MAAMmC,EAAMxD,CAAS,EAAEqB,EAAO,OAAO,KAAK,MAAMoC,EAAOzD,CAAS,EACjJtB,GAAkB,CAACiF,EAAY,cAAc,CAACrC,EAAWJ,EAAIyC,EAAYtC,EAAOrB,CAAS,EAAE,MAAO,CACrG,IAAMO,EAAS,SAASoD,EAAY,KAAK,UAAU,QAAQ,KAAK,EAAE,GAAG,IAAI,EAAQC,EAAK,GAAGD,EAAY,KAAK,YAAY,GAAG,IAAIpD,EAASP,CAAS,MAAM2D,EAAY,KAAK,UAAU,GAASxB,EAAM0B,GAAiBF,EAAY,KAAK,EAC7NG,EAAYC,EAAM1C,EAAO,OAAO,EAAQ2C,EAAYL,EAAY,MAAMvE,CAAgB,GAAG,SAAYuE,EAAY,YAAY,SAAUG,EAAMzC,EAAO,MAAM,EAAWsC,EAAY,YAAY,OAAQG,EAAM,EAAQA,EAAMzC,EAAO,MACpO,GAAK,CAAC,UAAAR,EAAU,eAAAgB,CAAc,EAAEoC,GAAgB/C,EAAIG,EAAO2C,EAAYF,EAAMC,EAAMH,EAAKzB,EAAMwB,EAAY,SAAS,EACnHzE,EAAa,QAAQ2B,EAAUQ,EAAO,eAAeQ,CAAe,EAG9DoC,GAAgB,CAAC/C,EAAIG,EAAO6C,EAAKJ,EAAMC,EAAMH,EAAKzB,EAAMgC,IAAY,CAAC,IAAMtD,EAAU,CAAC,EAC5FK,EAAI,UAAU,EAAE,EAAEG,EAAO,MAAMA,EAAO,MAAM,EAC5CH,EAAI,UAAUiB,EAAMjB,EAAI,KAAK0C,EAAK1C,EAAI,UAAUiD,EAAUjD,EAAI,aAAa,SAASA,EAAI,sBAAsB,OAAOA,EAAI,sBAAsB,GAAQA,EAAI,cAAYA,EAAI,YAAY,UAAYA,EAAI,gBAAcA,EAAI,cAAc,sBACvO,IAAMkD,EAAQlD,EAAI,YAAYgD,CAAI,EAAMG,EAAeC,EAAUF,EAAQ,MAASD,IAAY,SAAUE,EAASP,EAAMQ,EAAU,EAAWH,IAAY,OAAQE,EAASP,EAAYO,EAASP,EAAMQ,EAAW,IAAMzC,EAAe,CAAC,KAAKwC,EAAS,MAAMA,EAASC,EAAU,MAAMA,CAAS,EAC3RpD,EAAI,SAASgD,EAAKJ,EAAMC,CAAK,EACoC,IAAMQ,EAAvDrD,EAAI,aAAa,EAAE,EAAEG,EAAO,MAAMA,EAAO,MAAM,EAAuB,KAChFmD,EAAQ,EACPC,EAAWpD,EAAO,MAAM,SAASA,EAAO,MAAM,KAAK,EAAQqD,EAAe,KAAK,IAAI,EAAE,KAAK,MAAMD,EAAWD,CAAO,CAAC,EAAQG,EAAW,KAAK,IAAI,EAAE,KAAK,MAAMD,CAAc,CAAC,EAElL,QAAQE,EAAE,EAAEA,EAAEvD,EAAO,OAAOuD,GAAGD,EAAY,QAAQE,EAAE,EAAEA,EAAExD,EAAO,MAAMwD,GAAGF,EAAW,CAAC,IAAMG,GAAOF,EAAEvD,EAAO,MAAMwD,GAAG,EAAQE,EAAMR,EAAKO,EAAM,CAAC,EAAE,GAAGC,EAAM,EAAE,CAC3J,IAAMC,EAAcD,EAAM,KAAKJ,EAAWF,GAAkBxC,EAAS,CAAC,EAAA4C,EAAE,EAAAD,EAAE,UAAUC,EAAE,UAAUD,EAAE,MAAM,QAAQL,EAAKO,CAAK,CAAC,KAAKP,EAAKO,EAAM,CAAC,CAAC,KAAKP,EAAKO,EAAM,CAAC,CAAC,KAAKE,CAAa,IAAI,QAAQA,EAAc,cAAAA,EAC3M,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAEnE,EAAU,KAAKoB,CAAQ,CAAE,CAAC,CACnE,OAAAf,EAAI,UAAU,EAAE,EAAEG,EAAO,MAAMA,EAAO,MAAM,EAAQ,CAAC,UAAAR,EAAU,eAAAgB,CAAc,CAAE,EACzEb,GAAgB,CAACH,EAAUC,EAAUC,EAAUL,EAA2BuE,EAAkBC,EAAUC,IAAU,CAAC,IAAIC,EAAsB,GAAK,OAAAvE,EAAU,QAAQoB,GAAU,CACrE,GAAxFiD,IAAY,gBAAgBjD,EAAS,WAAWnB,EAAUmB,EAAS,WAAWnB,EAA4B,CAK7E,GAJ/CmB,EAAS,QAAQ,IACpBA,EAAS,MAAM,KAAK,OAAO,EAAE,KAAK,GAAG,EAAEA,EAAS,OAAO,KAAK,OAAO,EAAE,EAAE,IAAIvB,EAA2BuB,EAAS,UAAU,KAAK,IAAIA,EAAS,KAAK,EAAEA,EAAS,MAAMA,EAAS,UAAU,KAAK,IAAIA,EAAS,KAAK,EAAEA,EAAS,MAGtNA,EAAS,kBAAkB,KAAK,OAAO,EAAEkD,GAAYlD,EAAS,kBAC9DA,EAAS,QAAQ,KAAK,IAAI,EAAEA,EAAS,QAAQlB,CAAS,MACjD,CAEL,IAAMsE,EAAGpD,EAAS,UAAUA,EAAS,EAAQqD,EAAGrD,EAAS,UAAUA,EAAS,EAAQsD,EAAmB,KAAK,KAAKF,EAAGA,EAAGC,EAAGA,CAAE,EACtHE,EAAc,KAAK,IAAI,IAAI,EAAED,GAAoB,IAAI7E,EAA2B,EAChF+E,EAAa/E,EAA2B,EAAQgF,GAAS,KAAK,OAAO,EAAE,IAAID,EAAmBE,GAAS,KAAK,OAAO,EAAE,IAAIF,EAC/HxD,EAAS,WAAWA,EAAS,UAAUyD,EAAQL,EAAG,MAAMG,EAAcvD,EAAS,WAAWA,EAAS,UAAU0D,EAAQL,EAAG,MAAME,EAC9H,IAAMI,EAAYlF,EAA2B,EAAQmF,EAAgB,KAAK,KAAK5D,EAAS,UAAUA,EAAS,UAAUA,EAAS,UAAUA,EAAS,SAAS,EAAE,GAAG4D,EAAgBD,EAAY,CAAC,IAAME,EAAMF,EAAYC,EAAgB5D,EAAS,WAAW6D,EAAM7D,EAAS,WAAW6D,CAAM,CACxR7D,EAAS,GAAGA,EAAS,UAAUlB,EAAU,GAAGkB,EAAS,GAAGA,EAAS,UAAUlB,EAAU,GAC9D,IAAMgF,EAAV,KAA8C,IAAId,GACrEhD,EAAS,QAAQ,KAAK,IAAI,EAAEA,EAAS,QAAQlB,EAAUgF,CAAqB,CAAE,CAC3E9D,EAAS,QAAQ,MAAKmD,EAAsB,GAAO,MACtDA,EAAsB,EAAO,CAAC,EAASA,CAAsB,EAAQjE,GAAgB,CAACD,EAAIL,EAAUb,IAAY,CAACkB,EAAI,KAAK,EAAEA,EAAI,MAAMlB,EAAUA,CAAS,EAAEa,EAAU,QAAQoB,GAAU,CAAC,GAAGA,EAAS,QAAQ,EAAE,CAAC,IAAME,EAAMF,EAAS,MAAM,QAAQ,YAAY,GAAGA,EAAS,OAAO,GAAG,EAAEf,EAAI,UAAUiB,EAAMjB,EAAI,SAASe,EAAS,EAAEjC,EAAUiC,EAAS,EAAEjC,EAAU,EAAE,CAAC,CAAE,CAAC,CAAC,EAAEkB,EAAI,QAAQ,CAAE,EAAQkB,GAAevB,GAAW,CAACA,EAAU,QAAQoB,GAAU,CAACA,EAAS,EAAEA,EAAS,UAAUA,EAAS,EAAEA,EAAS,UAAUA,EAAS,QAAQA,EAAS,cAAcA,EAAS,MAAM,EAAEA,EAAS,UAAU,EAAEA,EAAS,UAAU,CAAE,CAAC,CAAE,EAAQX,EAAW,CAACJ,EAAIzC,EAAM4C,EAAOrB,IAAY,CAC3oBkB,EAAI,UAAU,EAAE,EAAEG,EAAO,MAAMA,EAAO,MAAM,EAC5CH,EAAI,KAAK,EAAEA,EAAI,MAAMlB,EAAUA,CAAS,EACxC,IAAMO,EAAS,SAAS9B,EAAM,KAAK,UAAU,QAAQ,KAAK,EAAE,GAAG,IAAI,EAAQmF,EAAK,GAAGnF,EAAM,KAAK,YAAY,GAAG,IAAI8B,CAAQ,MAAM9B,EAAM,KAAK,UAAU,GAAGyC,EAAI,KAAK0C,EAAK1C,EAAI,UAAUzC,EAAM,MAAMyC,EAAI,UAAUzC,EAAM,UAAUyC,EAAI,aAAa,SAC9O,IAAI4C,EAASrF,EAAM,YAAY,SAAUqF,EAAMzC,EAAO,OAAO,EAAErB,GAAoBvB,EAAM,YAAY,OAAQqF,EAAM,EAAQA,EAAMzC,EAAO,MAAMrB,EAC9IkB,EAAI,SAASzC,EAAM,MAAM,CAAC,EAAEqF,EAAMzC,EAAO,QAAQ,EAAErB,EAAU,EAAEkB,EAAI,QAAQ,CAAE,EAGvET,GAAwBF,GAAU,CACxC,IAAMyF,EAAK,OAAOzF,GAAW,SAAS,SAASA,CAAQ,EAAEA,EACnD0F,EAAO,CAAC,CAAC,KAAK,GAAG,OAAO,EAAE,EAAE,CAAC,KAAK,GAAG,OAAO,EAAE,EAAE,CAAC,KAAK,IAAI,OAAO,GAAG,CAAC,EAC3E,GAAGD,GAAMC,EAAO,CAAC,EAAE,KAAK,OAAOA,EAAO,CAAC,EAAE,OAAO,GAAGD,GAAMC,EAAOA,EAAO,OAAO,CAAC,EAAE,KAAK,OAAOA,EAAOA,EAAO,OAAO,CAAC,EAAE,OACrH,IAAIC,EAAE,EAAE,KAAMA,EAAED,EAAO,OAAO,GAAGA,EAAOC,EAAE,CAAC,EAAE,KAAKF,GAAKE,IACvD,IAAMC,EAAGF,EAAOC,CAAC,EAAQE,EAAGH,EAAOC,EAAE,CAAC,EAAE,OAAOC,EAAG,QAAQH,EAAKG,EAAG,OAAOC,EAAG,OAAOD,EAAG,SAASC,EAAG,KAAKD,EAAG,KAAM,EAOvGtC,GAAiB1B,GAAO,CACjC,IAAMkE,EAASlE,EAAM,MAAM,gCAAgC,EAAQmE,EAAUnE,EAAM,MAAM,6CAA6C,EAAE,GAAGmE,EAAU,CACrJ,GAAK,CAACC,EAAEC,EAAEC,EAAEC,EAAEC,CAAC,EAAEL,EAAU,MAAM,QAAQE,CAAC,KAAKC,CAAC,KAAKC,CAAC,KAAKC,CAAC,GAAI,SAASN,EAAS,CAClF,GAAK,CAACE,EAAEC,EAAEC,EAAEC,CAAC,EAAEL,EAAS,MAAM,QAAQG,CAAC,KAAKC,CAAC,KAAKC,CAAC,MAAO,CAC1D,eAAQ,KAAK,yBAAyBvE,CAAK,EAAQ,kBAAmB,EAQnE,SAASpC,GAAe6G,EAAMC,EAAWC,EAAYC,EAAM,GAAM,CAAC,GAAK,CAACC,EAASC,CAAQ,EAAEJ,EAAgB,CAACK,EAAUC,CAAS,EAAEL,EAAkBhF,GAAU8E,EAAMI,IAAWC,EAASD,GAAcI,EAAOF,EAAUpF,GAAUqF,EAAUD,GAAW,OAAGH,IAAUI,EAAUD,EAAWE,EAAO,KAAK,IAAI,KAAK,IAAIA,EAAOF,CAAS,EAAEC,CAAS,EAAQC,EAAO,KAAK,IAAI,KAAK,IAAIA,EAAOD,CAAS,EAAED,CAAS,GAAWE,CAAO,CAAC7I,EAAkB,YAAY",
  "names": ["Tag", "addPropertyControls", "VaporizeTextCycle", "ControlType", "props", "isOnFramerCanvas", "RenderTarget", "canvasRef", "pe", "wrapperRef", "isInView", "useInView", "lastFontRef", "particlesRef", "animationFrameRef", "currentTextIndex", "setCurrentTextIndex", "ye", "animationState", "setAnimationState", "vaporizeProgressRef", "fadeOpacityRef", "wrapperSize", "setWrapperSize", "useWrapperSize", "transformedDensity", "transformValue", "globalDpr", "se", "window", "wrapperStyle", "canvasStyle", "animationDurations", "fontConfig", "fontSize", "VAPORIZE_SPREAD", "calculateVaporizeSpread", "MULTIPLIED_VAPORIZE_SPREAD", "memoizedUpdateParticles", "te", "particles", "vaporizeX", "deltaTime", "updateParticles", "memoizedRenderParticles", "ctx", "renderParticles", "ue", "canvas", "renderText", "startAnimationTimeout", "lastTime", "frameId", "animate", "currentTime", "shouldContinueAnimation", "textBoundaries", "progress", "allVaporized", "prevIndex", "particle", "opacity", "color", "resetParticles", "renderCanvas", "currentFont", "handleFontChange", "useResizeObserver", "u", "p", "SeoElement", "X", "tag", "texts", "style", "safeTag", "B", "timeoutId", "cleanup", "container", "resizeObserver", "entries", "entry", "width", "height", "rect", "framerProps", "font", "parseFramerColor", "textX", "textY", "currentText", "createParticles", "text", "alignment", "metrics", "textLeft", "textWidth", "data", "baseDPR", "currentDPR", "baseSampleRate", "sampleRate", "y", "x", "index", "alpha", "originalAlpha", "VAPORIZE_DURATION", "direction", "density", "allParticlesVaporized", "dx", "dy", "distanceFromOrigin", "dampingFactor", "randomSpread", "spreadX", "spreadY", "maxVelocity", "currentVelocity", "scale", "durationBasedFadeRate", "size", "points", "i", "p1", "p2", "rgbMatch", "rgbaMatch", "_", "r", "g", "b", "a", "input", "inputRange", "outputRange", "clamp", "inputMin", "inputMax", "outputMin", "outputMax", "result"]
}
