{"version":3,"file":"Text_Opacity_Letters.DnO2QGoX.mjs","names":["useMemo","useRef"],"sources":["https:/framerusercontent.com/modules/qiyiP4vZjSV6WZkn3JnJ/ImDWQIqAYtEaFx5KADi9/Text_Opacity_Letters.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{motion,useScroll,useTransform}from\"framer-motion\";import{useRef,useEffect,useMemo}from\"react\";const fontStyleRegistry=new Map;/* ---------------- CHARACTER ---------------- */const EachCharacter=({char,start,end,progress,duration,easing,index,transitionStartIndex})=>{const colorProgress=useTransform(progress,[start,end],[\"#666666\",\"#FFFFFF\"]);const initialColor=index<transitionStartIndex?\"#FFFFFF\":\"#666666\";return /*#__PURE__*/_jsx(motion.span,{style:{color:index<transitionStartIndex?initialColor:colorProgress},transition:{duration:duration,ease:easing},children:char});};/* ---------------- WORD ---------------- */const EachWord=({word,progress,starting,ending,duration,easing,transitionStartIndex,currentCharacterIndex})=>{const characters=useMemo(()=>word.split(\"\"),[word]);const wordLength=word.length;const amount=ending-starting;const step=amount/wordLength;return /*#__PURE__*/_jsxs(motion.span,{children:[characters.map((char,idx)=>{const charStart=starting+step*idx;const charEnd=starting+step*(idx+1);return /*#__PURE__*/_jsx(EachCharacter,{char:char,start:charStart,end:charEnd,progress:progress,duration:duration,easing:easing,index:currentCharacterIndex+idx,transitionStartIndex:transitionStartIndex},idx);}),\"\\xa0\"]});};/* ---------------- MAIN COMPONENT ---------------- */export default function Text_Color_Letters(props){const{text,duration,easing,fontSize,lineHeight,letterSpacing,paragraphAlign,transitionStartIndex,fontFamily,fontWeight,textTransform}=props;const words=useMemo(()=>text.split(\" \"),[text]);const totalWords=words.length||1;const wordRanges=useMemo(()=>{let characterIndex=0;return words.map((word,idx)=>{const starting=idx/totalWords;const ending=(idx+1)/totalWords;const startIdx=characterIndex;characterIndex+=word.length+1;return{word,starting,ending,startIdx};});},[words,totalWords]);const ref=useRef(null);const{scrollYProgress}=useScroll({target:ref,offset:[\"start 0.75\",\"start 0.15\"]});/* --------- GOOGLE FONT IMPORT --------- */useEffect(()=>{if(typeof document===\"undefined\")return;const fontKey=fontFamily.trim().replace(/\\s+/g,\"+\");const existingEntry=fontStyleRegistry.get(fontKey);if(existingEntry){existingEntry.count+=1;return()=>{const entry=fontStyleRegistry.get(fontKey);if(!entry)return;entry.count-=1;if(entry.count<=0){if(entry.styleElement.parentNode){entry.styleElement.parentNode.removeChild(entry.styleElement);}fontStyleRegistry.delete(fontKey);}};}const style=document.createElement(\"style\");style.setAttribute(\"data-text-color-letters-font\",fontKey);style.appendChild(document.createTextNode(`@import url('https://fonts.googleapis.com/css2?family=${fontKey}:wght@400;500;600;700&display=swap');`));document.head.appendChild(style);fontStyleRegistry.set(fontKey,{count:1,styleElement:style});return()=>{const entry=fontStyleRegistry.get(fontKey);if(!entry)return;entry.count-=1;if(entry.count<=0){if(entry.styleElement.parentNode){entry.styleElement.parentNode.removeChild(entry.styleElement);}fontStyleRegistry.delete(fontKey);}};},[fontFamily]);return /*#__PURE__*/_jsx(\"p\",{ref:ref,style:{fontFamily:`${fontFamily}, sans-serif`,fontSize:`${fontSize}px`,fontWeight:fontWeight,textTransform:textTransform,color:\"#666666\",display:\"flex\",flexWrap:\"wrap\",lineHeight:`${lineHeight}px`,letterSpacing:`${letterSpacing}px`,justifyContent:paragraphAlign,margin:0},children:wordRanges.map(({word,starting,ending,startIdx},idx)=>{return /*#__PURE__*/_jsx(EachWord,{word:word,progress:scrollYProgress,starting:starting,ending:ending,duration:duration,easing:easing,transitionStartIndex:transitionStartIndex,currentCharacterIndex:startIdx},idx);})});}/* ---------------- CONTROLS ---------------- */addPropertyControls(Text_Color_Letters,{text:{title:\"Text\",type:ControlType.String,defaultValue:\"Hello Text\"},fontFamily:{title:\"Font Family\",type:ControlType.String,defaultValue:\"Urbanist\"},fontSize:{title:\"Font Size\",type:ControlType.Number,defaultValue:48,min:10,max:120},fontWeight:{title:\"Font Weight\",type:ControlType.Enum,options:[\"400\",\"500\",\"600\",\"700\"],optionTitles:[\"Regular\",\"Medium\",\"SemiBold\",\"Bold\"],defaultValue:\"400\"},textTransform:{title:\"Text Case\",type:ControlType.Enum,options:[\"none\",\"uppercase\"],optionTitles:[\"Normal\",\"Uppercase\"],defaultValue:\"none\"},lineHeight:{title:\"Line Height\",type:ControlType.Number,defaultValue:60,min:10,max:160},letterSpacing:{title:\"Letter Spacing\",type:ControlType.Number,defaultValue:-3,min:-10,max:20},paragraphAlign:{title:\"Paragraph Align\",type:ControlType.Enum,options:[\"flex-start\",\"center\",\"flex-end\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"center\"},duration:{title:\"Duration\",type:ControlType.Number,defaultValue:.3,min:.1,max:3,step:.1},easing:{title:\"Easing\",type:ControlType.Enum,options:[\"easeInOut\",\"easeIn\",\"easeOut\",\"linear\"],optionTitles:[\"Ease In Out\",\"Ease In\",\"Ease Out\",\"Linear\"],defaultValue:\"easeInOut\"},transitionStartIndex:{title:\"Transition Start Index\",type:ControlType.Number,defaultValue:22,min:0,max:2e3}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Text_Color_Letters\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Text_Opacity_Letters.map"],"mappings":"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"}