{"version":3,"file":"TextWave_Prod.CyWG5feP.mjs","names":["useState","useMemo","useMemo","useRef","_Fragment","__esmMin","de","ce","window","init_ssg_sandbox_shims","pe","p","l","init_npm_react_18_3_1","init_jsx_runtime","c","_e","easeInOut","useInView","motion","init_framer_motion_DhsWWWsN","animate","addPropertyControls","init_framer_BWFVvmND","Color","ControlType","RenderTarget","useColors","colors","isCanvas","isOptimizing","darkMode","useDarkMode","styleValues","setStyleValues","extractStyleValues","extractCSSVariableName","div","observer","variableNames","extractDefaultValue","color","values","i","variableName","colorValues","result","lightVars","darkVars","style","vars","parseVariables","extractColorStyles","light","dark","varName","lightSection","darkSection","styles","rules","styleRules","rule","subrule","isDarkMedia","css","isDark","isLight","isPreview","isDarkMode","setIsDarkMode","mutations","mutation","theme","mediaQuery","handleChange","cssString","match","cssVariableRegex","section","name","value","declaration","s","cssVar","parts","init_useColors","TextWave","props","animation","id","generateRandomString","ref","elementsRef","spanWidthsRef","defaultColor","waveInColor","waveOutColor","waveInColorObject","glowColorObject","glow","textColorObjectRef","delay","interpolateColorRef","isInView","loop","replay","textAlign","font","MotionTag","tag","spanClassName","waveRange","waveWidth","progressRef","lines","wordCount","textLines","text","line","index","createLineChildren","lineWords","per","word","savedIndex","el","char","lineIndex","wordIndex","charIndex","colorAnimation","timeoutId","animationFrame","animateTextColor","interpolateTextColor","animateIn","mapRange","speed","colorObject","runAnimation","segments","start","direction","end","updateText","cumulativeOffset","elementOffset","prevYPosition","elementLineMap","elementScaleMap","lineOffsets","element","offset","boundingClientRect","yPosition","origin","offsetPercent","scaleValue","waveScale","halfOffset","resize","scale","lineOffset","offsetValue","translate","trigger","userSelect","fromLow","fromHigh","toLow","toHigh","randomIndex","CHARACTERS","init_TextWave_Prod"],"sources":["https:/framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/ge79eoA2CuYo94sUAjT9/useColors.js","https:/framerusercontent.com/modules/3IRcdSKMsgRyQ9gSaApX/ogNs8oLk22LSaz9iMnOu/TextWave_Prod.js"],"sourcesContent":["import{RenderTarget}from\"framer\";import{useEffect,useState,useMemo}from\"react\";const cssVariableRegex=/var\\s*\\(\\s*(--[\\w-]+)(?:\\s*,\\s*((?:[^)(]+|\\((?:[^)(]+|\\([^)(]*\\))*\\))*))?\\s*\\)/;export function useColors(...colors){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const isOptimizing=typeof window===\"undefined\";const darkMode=useDarkMode();const[styleValues,setStyleValues]=useState(()=>extractStyleValues(colors.map(extractCSSVariableName)));useEffect(()=>{if(!isCanvas)return;const div=document.body.querySelector(\"main > div\");if(!div)return;const observer=new MutationObserver(()=>{setStyleValues(extractStyleValues(colors.map(extractCSSVariableName)));});observer.observe(div,{attributes:true,attributeFilter:[\"style\"]});return()=>observer.disconnect();},colors);const variableNames=useMemo(()=>colors.map(extractCSSVariableName),[colors]);if(isOptimizing){return colors.map(color=>extractDefaultValue(color));}let values=[];for(let i=0;i<colors.length;i++){const color=colors[i];// Return original value if not a string\nif(typeof color!==\"string\"){values.push(color);continue;}const variableName=variableNames[i];const colorValues=styleValues[variableName];if(variableName&&colorValues){values.push(darkMode?colorValues.dark||colorValues.light||color:colorValues.light||color);}else{values.push(color);}}return values;}////////////////////\nfunction extractStyleValues(variableNames){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const result={};let lightVars={};let darkVars={};if(isCanvas&&typeof document!==\"undefined\"){const div=document.body.querySelector(\"main > div\");if(div){const style=div.getAttribute(\"style\");if(style){const vars=parseVariables(style);lightVars=vars;darkVars=vars;}}}else{const{light,dark}=extractColorStyles();lightVars=parseVariables(light);darkVars=parseVariables(dark);}// Include all variables\nconst allVarNames=new Set([...Object.keys(lightVars),...Object.keys(darkVars)]);allVarNames.forEach(varName=>{result[varName]={light:lightVars[varName]||\"\",dark:darkVars[varName]||\"\"};});return result;}function extractColorStyles(){let lightSection=\"\";let darkSection=\"\";if(typeof document!==\"undefined\"){const styles=document.head.querySelectorAll(\"style[data-framer-css], style[data-framer-css-ssr], style[data-framer-css-ssr-minified]\");for(const style of styles){const rules=style.sheet?.cssRules;if(!rules)continue;const styleRules=[];for(const rule of rules){if(rule instanceof CSSStyleRule){styleRules.push([rule,false]);}else if(rule instanceof CSSMediaRule){if(rule.conditionText===\"(prefers-color-scheme: dark)\"){for(const subrule of rule.cssRules){if(subrule instanceof CSSStyleRule){styleRules.push([subrule,true]);}}}}}for(const[rule,isDarkMedia]of styleRules){const css=rule.cssText;const hasVars=css.includes(\"--token-\");if(!hasVars)continue;const isDark=isDarkMedia?rule.selectorText===\"body\":rule.selectorText==='body[data-framer-theme=\"dark\"]';const isLight=!isDarkMedia&&rule.selectorText===\"body\";if(!isDark&&!isLight)continue;if(isDark){if(!darkSection){darkSection=css.substring(css.indexOf(\"{\")+1,css.lastIndexOf(\"}\")).trim();}}else{if(!lightSection){lightSection=css.substring(css.indexOf(\"{\")+1,css.lastIndexOf(\"}\")).trim();}}if(darkSection&&lightSection)break;}if(darkSection&&lightSection)break;}}return{light:lightSection,dark:darkSection};}function useDarkMode(){const isPreview=typeof window!==\"undefined\"&&window.location.origin.endsWith(\"framercanvas.com\");const[isDarkMode,setIsDarkMode]=useState(()=>{if(typeof window===\"undefined\"){return false;}else if(isPreview&&typeof document!==\"undefined\"){return document.body.getAttribute(\"data-framer-theme\")===\"dark\";}else{return window.matchMedia(\"(prefers-color-scheme: dark)\").matches;}});useEffect(()=>{if(isPreview){const observer=new MutationObserver(mutations=>{mutations.forEach(mutation=>{if(mutation.attributeName===\"data-framer-theme\"){const theme=document.body.getAttribute(\"data-framer-theme\");setIsDarkMode(theme===\"dark\");}});});observer.observe(document.body,{attributes:true,attributeFilter:[\"data-framer-theme\"]});return()=>observer.disconnect();}else{const mediaQuery=window.matchMedia(\"(prefers-color-scheme: dark)\");const handleChange=e=>{setIsDarkMode(e.matches);};// Update initial value\nif(mediaQuery.matches!==isDarkMode){setIsDarkMode(mediaQuery.matches);}mediaQuery.addListener(handleChange);return()=>mediaQuery.removeListener(handleChange);}},[isPreview]);return isDarkMode;}function extractCSSVariableName(cssString){if(!cssString||!cssString.startsWith(\"var(\")){return\"\";}const match=cssVariableRegex.exec(cssString);if(match){const variableName=match[1];return variableName||\"\";}return\"\";}function parseVariables(section){const vars={};if(!section)return vars;const declarations=section.split(\";\").filter(Boolean);declarations.forEach(declaration=>{const[name,value]=declaration.split(\":\").map(s=>s.trim());if(name&&value){vars[name]=value;}});return vars;}function extractDefaultValue(cssVar){// Check if the string starts with \"var(\"\nif(!cssVar||!cssVar.startsWith(\"var(\")){return cssVar// Return the original value if it doesn't start with \"var(\"\n;}// Remove \"var(\" from the beginning and \")\" from the end\nconst content=cssVar.slice(4,-1);// Split the content by comma\nconst parts=content.split(\",\");// If there's more than one part, the second part is the default value\nif(parts.length>1){// Trim any whitespace from the default value\nreturn parts.slice(1).join(\",\").trim();}// If there's no comma, return an empty string or null\nreturn\"\";}\nexport const __FramerMetadata__ = {\"exports\":{\"useColors\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./useColors.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget,Color}from\"framer\";import{useEffect,useRef,useMemo}from\"react\";import{motion,animate,easeInOut,useInView}from\"framer-motion\";import{useColors}from\"https://framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/ge79eoA2CuYo94sUAjT9/useColors.js\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n *\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 200\n */export default function TextWave(props){const{text,tag,per,origin,colors,font,userSelect,waveWidth,waveScale,speed,resize,animation,glow,direction}=props;const{loop,trigger,replay,delay}=animation;const id=useMemo(generateRandomString,[]);const isCanvas=RenderTarget.current()===RenderTarget.canvas;const ref=useRef(null);const elementsRef=useRef([]);const spanWidthsRef=useRef([]);const[defaultColor,waveInColor,waveOutColor]=useColors(colors.defaultColor,colors.waveInColor,colors.waveOutColor);const waveInColorObject=useMemo(()=>Color(waveInColor),[waveInColor]);const glowColorObject=useMemo(()=>glow?Color(glow.color):null,[glow?.color]);const textColorObjectRef=useRef(Color(delay===0?waveOutColor:defaultColor));const interpolateColorRef=useRef(Color.interpolate(waveInColorObject,Color(waveOutColor||defaultColor)));const isInView=useInView(ref,{once:loop||!replay,amount:\"some\"});const textAlign=font?.textAlign||\"center\";const MotionTag=motion[tag]||motion.span;const spanClassName=`${id}-span`;const waveRange=(waveWidth+1)/2;const progressRef=useRef(-waveRange-1);const[lines,wordCount]=useMemo(()=>{const textLines=text.split(\"\\n\");let wordCount=0;const lines=[];for(let i=0;i<textLines.length;i++){const line=textLines[i].split(/[ \\t]+/);lines.push(line);wordCount+=line.length;}return[lines,wordCount];},[text]);let index=0;const createLineChildren=(lineIndex,lineWords)=>{return lineWords.map((word,wordIndex)=>{if(per===\"character\"){return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{className:`${id}-word-wrapper`,children:word.split(\"\").map((char,charIndex)=>{const savedIndex=index;index++;return /*#__PURE__*/_jsx(\"span\",{ref:el=>{if(el)elementsRef.current[savedIndex]=el;},className:spanClassName,children:char},`${lineIndex}-${wordIndex}-${charIndex}`);})},`${lineIndex}-${wordIndex}`),wordIndex<lineWords.length-1&&\" \"]});}const savedIndex=index;index++;return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{ref:el=>{if(el)elementsRef.current[savedIndex]=el;},className:spanClassName,children:word},`${lineIndex}-${wordIndex}`),wordIndex<lineWords.length-1&&\" \"]});});};useEffect(()=>{let colorAnimation=null;let animation=null;let timeoutId=null;let animationFrame=null;const animateTextColor=animateIn=>{if(!waveOutColor||defaultColor===waveOutColor){return;}if(colorAnimation){colorAnimation.stop();}const interpolateTextColor=Color.interpolate(textColorObjectRef.current,Color(animateIn?waveOutColor:defaultColor));colorAnimation=animate(0,1,{type:\"spring\",bounce:0,duration:mapRange(speed,0,100,1.5,1),onUpdate:value=>{const colorObject=interpolateTextColor(value);textColorObjectRef.current=colorObject;interpolateColorRef.current=Color.interpolate(waveInColorObject,colorObject);if(ref.current){ref.current.style.color=colorObject.toValue();}}});};const runAnimation=()=>{animateTextColor(true);const segments=per===\"word\"?wordCount:text.length;const start=direction===\"right\"?-waveRange:segments+waveRange;const end=direction===\"right\"?segments+waveRange:-waveRange;animation=animate(start,end,{type:\"ease\",ease:\"linear\",duration:Math.exp(mapRange(speed,0,100,Math.log(.3),Math.log(.01)))*(segments+waveRange*2),onUpdate:value=>{progressRef.current=value;},onComplete:()=>{if(ref.current){ref.current.style.transform=\"\";}if(loop&&isInView){timeoutId=setTimeout(runAnimation,delay*1e3);}animateTextColor(false);}});};const updateText=()=>{let cumulativeOffset=0;let elementOffset=[];let prevYPosition=0;const elementLineMap=new Map;const elementScaleMap=new Map;const lineOffsets=[];let lineIndex=-1;for(let i=0;i<elementsRef.current.length;i++){const element=elementsRef.current[i];if(!element)continue;const offset=Math.abs(progressRef.current-i);const boundingClientRect=element.getBoundingClientRect();const yPosition=origin===\"center\"?boundingClientRect.y+boundingClientRect.height/2:boundingClientRect.y+boundingClientRect.height;if(Math.abs(yPosition-prevYPosition)>2){// New line has started\nlineIndex++;if(lineIndex>0){lineOffsets[lineIndex-1]=cumulativeOffset;}cumulativeOffset=0;}prevYPosition=yPosition;elementLineMap.set(element,lineIndex);if(offset>waveRange){element.style.color=\"\";element.style.margin=\"\";element.style.textShadow=\"\";elementOffset[i]=cumulativeOffset;}else{const offsetPercent=easeInOut(offset/waveRange);const scaleValue=mapRange(offsetPercent,0,1,waveScale,1);const halfOffset=resize?spanWidthsRef.current[i]*(scaleValue-1)/2:0;elementScaleMap.set(element,scaleValue);cumulativeOffset+=halfOffset;elementOffset[i]=cumulativeOffset;if(glow){element.style.textShadow=glow.blur>0?`0 0 ${glow.blur}px rgba(${glowColorObject.r}, ${glowColorObject.g}, ${glowColorObject.b}, ${glowColorObject.a*(1-offsetPercent)})`:\"\";}element.style.color=offsetPercent>=1?waveOutColor||defaultColor:offsetPercent<=0?waveInColor:interpolateColorRef.current?.(offsetPercent).toValue()||waveOutColor||defaultColor;cumulativeOffset+=halfOffset;}if(i===elementsRef.current.length-1){lineOffsets[lineIndex]=cumulativeOffset;}}for(let i=0;i<elementsRef.current.length;i++){const element=elementsRef.current[i];if(!element)continue;const scaleValue=elementScaleMap.get(element)||1;const scale=scaleValue!==1?`scale(${scaleValue})`:\"\";if(!resize){element.style.transform=scale;continue;}const offset=elementOffset[i];const lineIndex=elementLineMap.get(element)||0;const lineOffset=lineOffsets[lineIndex];let offsetValue=offset;switch(textAlign){case\"center\":offsetValue-=lineOffset/2;break;case\"right\":offsetValue-=lineOffset;break;}const translate=Math.abs(offsetValue)>.1?`translateX(${offsetValue}px)`:\"\";element.style.transform=translate&&scale?`${translate} ${scale}`:translate||scale;}animationFrame=requestAnimationFrame(updateText);};if(!isCanvas){animationFrame=requestAnimationFrame(updateText);const shouldAnimate=loop?isInView:trigger===\"appear\"||trigger===\"layerInView\"&&isInView;if(shouldAnimate){if(delay){timeoutId=setTimeout(runAnimation,delay*1e3);}else{runAnimation();}}}return()=>{animation?.cancel();colorAnimation?.stop();if(animationFrame){cancelAnimationFrame(animationFrame);}if(timeoutId){clearTimeout(timeoutId);}};},[isInView]);useEffect(()=>{if(!isCanvas){elementsRef.current.forEach((el,i)=>{if(el){spanWidthsRef.current[i]=el.getBoundingClientRect().width;}});}},[isCanvas,text,font]);return /*#__PURE__*/_jsxs(MotionTag,{ref:ref,style:{...props.style,transformStyle:\"preserve-3d\",whiteSpace:props.style?.width?undefined:\"nowrap\",userSelect:userSelect?\"auto\":\"none\",margin:0,textAlign,color:isCanvas?colors.defaultColor:textColorObjectRef.current?.toValue()||colors.defaultColor,...font},children:[/*#__PURE__*/_jsx(\"style\",{children:`\n\t\t\t\t.${id}-line {\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\ttransform-style: preserve-3d;\n\t\t\t\t}\n\t\t\t\t.${id}-word-wrapper {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\ttransform-style: preserve-3d;\n\t\t\t\t\twhite-space: pre;\n\t\t\t\t}\n\t\t\t\t.${id}-span {\n\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\ttransform-style: preserve-3d;\n\t\t\t\t\twhite-space: pre;\n\t\t\t\t\twill-change: transform, color, text-shadow;\n\t\t\t\t\ttransform-origin: ${origin===\"center\"?\"50% 50%\":\"50% 100%\"};\n\t\t\t\t}\n\t\t\t\t`}),lines.length===1?createLineChildren(0,lines[0]):lines.map((lineWords,lineIndex)=>/*#__PURE__*/_jsx(\"span\",{className:`${id}-line`,children:createLineChildren(lineIndex,lineWords)},lineIndex))]});}TextWave.displayName=\"Text Wave\";addPropertyControls(TextWave,{text:{type:ControlType.String,defaultValue:\"Learn Framer With Framer University\",placeholder:\"Text\"},font:{type:\"font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:32,lineHeight:1}},colors:{type:ControlType.Object,buttonTitle:\"Colors\",controls:{defaultColor:{type:ControlType.Color,defaultValue:\"#FFF\",title:\"Default\"},waveInColor:{type:ControlType.Color,defaultValue:\"#FFF\",title:\"Wave In\"},waveOutColor:{type:ControlType.Color,defaultValue:\"rgba(255, 255, 255, 0.5)\",optional:true,title:\"Wave Out\"}}},glow:{type:ControlType.Object,optional:true,icon:\"effect\",controls:{color:{type:ControlType.Color,defaultValue:\"#FFF\"},blur:{type:ControlType.Number,defaultValue:10,min:0,max:100,step:1}}},per:{type:ControlType.Enum,options:[\"character\",\"word\"],optionTitles:[\"Letter\",\"Word\"],displaySegmentedControl:true},waveWidth:{type:ControlType.Number,defaultValue:10,min:1,max:100,step:1,title:\"Wave Width\"},waveScale:{type:ControlType.Number,defaultValue:1.2,min:0,max:2,step:.01,title:\"Scale\"},origin:{type:ControlType.Enum,defaultValue:\"center\",options:[\"center\",\"bottom\"],optionTitles:[\"Center\",\"Bottom\"],// optionIcons: [\"align-middle\", \"align-bottom\"],\ndisplaySegmentedControl:true,hidden:props=>props.waveScale===1},resize:{type:ControlType.Boolean,defaultValue:true},direction:{type:ControlType.Enum,defaultValue:\"right\",options:[\"left\",\"right\"],optionTitles:[\"Left\",\"Right\"],optionIcons:[\"direction-left\",\"direction-right\"],displaySegmentedControl:true},speed:{type:ControlType.Number,defaultValue:50,min:0,max:100,step:1,unit:\"%\"},animation:{type:ControlType.Object,icon:\"effect\",controls:{loop:{type:ControlType.Boolean,defaultValue:false},trigger:{type:ControlType.Enum,defaultValue:\"layerInView\",options:[\"appear\",\"layerInView\"],optionTitles:[\"Appear\",\"Layer in View\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\",hidden:props=>props.loop},replay:{type:ControlType.Boolean,defaultValue:true,hidden:props=>props.loop||props.trigger!==\"layerInView\"},delay:{type:ControlType.Number,defaultValue:0,min:0,step:.1}}},userSelect:{type:ControlType.Boolean,defaultValue:false},tag:{type:ControlType.Enum,title:\"Tag\",defaultValue:\"p\",displaySegmentedControl:true,options:[\"h1\",\"h2\",\"h3\",\"p\"],optionTitles:[\"H1\",\"H2\",\"H3\",\"P\"],description:\"More components at [Framer University](https://frameruni.link/cc).\"}});function mapRange(value,fromLow,fromHigh,toLow,toHigh){if(fromLow===fromHigh){return toLow;}const percentage=(value-fromLow)/(fromHigh-fromLow);return toLow+percentage*(toHigh-toLow);}const CHARACTERS=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";function generateRandomString(){let result=\"\";for(let i=0;i<8;i++){const randomIndex=Math.floor(Math.random()*CHARACTERS.length);result+=CHARACTERS.charAt(randomIndex);}return result;}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TextWave\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"400\",\"framerSupportedLayoutWidth\":\"any\",\"framerIntrinsicHeight\":\"200\",\"framerSupportedLayoutHeight\":\"any\",\"framerDisableUnlink\":\"*\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}