{"version":3,"file":"TextAnimation.BsZBdBvV.mjs","names":["useState","useRef","React"],"sources":["https:/framerusercontent.com/modules/k5mvighkJjmWy4gGepsF/uuZ7wJ7UajpY4ZhWaTxX/TextAnimation.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import React,{useState,useEffect,useRef}from\"react\";import{motion}from\"framer-motion\";import{addPropertyControls,ControlType}from\"framer\";// Breakpoints\nconst MOBILE_BREAKPOINT=640;const TABLET_BREAKPOINT=1024;function getResponsiveFontSize(width,desktopSize,tabletSize,mobileSize){if(width<=MOBILE_BREAKPOINT){return mobileSize;}if(width<=TABLET_BREAKPOINT){return tabletSize;}return desktopSize;}// Optional: avoid widows by merging the final two words with a non-breaking space\nfunction avoidWidows(str){const words=str.split(\" \");if(words.length>2){words[words.length-2]=words[words.length-2]+\"\\xa0\"+words[words.length-1];words.pop();}return words;}export function AnimatedHeadline({text,fontSize,fontFamily,fontWeight,color,letterSpacing,lineHeight,paddingTop,paddingRight,paddingBottom,paddingLeft,textAlign,staggerDuration,letterDuration,initialDelay,// Responsive\ntabletFontSize,mobileFontSize,// Word spacing\nwordSpacing,// Intersection props\nscrollRootSelector,intersectionThreshold,intersectionRootMargin}){const[isVisible,setIsVisible]=useState(false);const[windowWidth,setWindowWidth]=useState(1920);const containerRef=useRef(null);// IntersectionObserver for reveal\nuseEffect(()=>{let rootElement=null;if(scrollRootSelector){rootElement=document.querySelector(scrollRootSelector);}const observer=new IntersectionObserver(([entry])=>{if(entry.isIntersecting){const timer=setTimeout(()=>{setIsVisible(true);},initialDelay);observer.unobserve(entry.target);return()=>clearTimeout(timer);}},{root:rootElement||null,threshold:intersectionThreshold,rootMargin:intersectionRootMargin});if(containerRef.current){observer.observe(containerRef.current);}return()=>{if(containerRef.current){observer.unobserve(containerRef.current);}};},[initialDelay,scrollRootSelector,intersectionThreshold,intersectionRootMargin]);// Listen for window size changes for responsive text.\nuseEffect(()=>{function handleResize(){setWindowWidth(window.innerWidth);}handleResize();window.addEventListener(\"resize\",handleResize);return()=>window.removeEventListener(\"resize\",handleResize);},[]);// Compute the effective font size\nconst effectiveFontSize=getResponsiveFontSize(windowWidth,fontSize,tabletFontSize,mobileFontSize);// Split text into words (with widow avoidance)\nconst words=avoidWidows(text);// Container variants with staggered children\nconst containerVariants={hidden:{},visible:{transition:{staggerChildren:staggerDuration}}};// Animation variants for each letter\nconst letterVariants={hidden:{opacity:0,y:20},visible:{opacity:1,y:0,transition:{duration:letterDuration,ease:\"easeOut\"}}};return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{padding:`${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px`,width:\"100%\",textAlign:textAlign,whiteSpace:\"normal\",// Change to \"visible\" so descenders aren’t clipped.\noverflow:\"visible\"},children:/*#__PURE__*/_jsx(motion.div,{variants:containerVariants,initial:\"hidden\",animate:isVisible?\"visible\":\"hidden\",style:{display:\"inline-block\",fontSize:`${effectiveFontSize}px`,fontFamily:fontFamily,fontWeight:fontWeight,color:color,letterSpacing:`${letterSpacing}px`,lineHeight:lineHeight,// Ensure the text container also does not clip overflow\noverflow:\"visible\"},children:words.map((word,wIndex)=>{const letters=Array.from(word);return /*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",whiteSpace:\"nowrap\",overflow:\"visible\"},children:letters.map((char,lIndex)=>/*#__PURE__*/_jsx(motion.span,{variants:letterVariants,style:{display:\"inline-block\",whiteSpace:\"pre\",overflow:\"visible\"},children:char},`letter-${wIndex}-${lIndex}`))}),wIndex<words.length-1&&// Render the space with no extra marginRight.\n/*#__PURE__*/_jsx(motion.span,{variants:letterVariants,style:{display:\"inline-block\",whiteSpace:\"pre\",overflow:\"visible\"},children:\" \"})]},`word-${wIndex}`);})})});}// Framer Property Controls\naddPropertyControls(AnimatedHeadline,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"Accelerate your experiences\"},fontSize:{type:ControlType.Number,title:\"Desktop Size\",defaultValue:48,min:1,max:200,step:1,unit:\"px\"},tabletFontSize:{type:ControlType.Number,title:\"Tablet Size\",defaultValue:36,min:1,max:200,step:1,unit:\"px\"},mobileFontSize:{type:ControlType.Number,title:\"Mobile Size\",defaultValue:24,min:1,max:200,step:1,unit:\"px\"},fontFamily:{type:ControlType.String,title:\"Font Family\",defaultValue:\"Inter, sans-serif\"},fontWeight:{type:ControlType.Enum,title:\"Font Weight\",options:[\"100\",\"200\",\"300\",\"400\",\"500\",\"600\",\"700\",\"800\",\"900\"],defaultValue:\"400\"},textAlign:{type:ControlType.Enum,title:\"Text Align\",options:[\"left\",\"center\",\"right\"],defaultValue:\"left\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000000\"},letterSpacing:{type:ControlType.Number,title:\"Letter Spacing\",defaultValue:0,min:-20,max:100,step:.1,unit:\"px\"},lineHeight:{type:ControlType.Number,title:\"Line Height\",defaultValue:1.2,min:.5,max:3,step:.1},wordSpacing:{type:ControlType.Number,title:\"Word Spacing\",defaultValue:4,min:0,max:100,step:1,unit:\"px\"},paddingTop:{type:ControlType.Number,title:\"Padding Top\",defaultValue:20,min:0,max:200,step:1,unit:\"px\"},paddingRight:{type:ControlType.Number,title:\"Padding Right\",defaultValue:20,min:0,max:200,step:1,unit:\"px\"},paddingBottom:{type:ControlType.Number,title:\"Padding Bottom\",defaultValue:20,min:0,max:200,step:1,unit:\"px\"},paddingLeft:{type:ControlType.Number,title:\"Padding Left\",defaultValue:20,min:0,max:200,step:1,unit:\"px\"},staggerDuration:{type:ControlType.Number,title:\"Stagger Duration\",defaultValue:.03,min:0,max:1,step:.01},letterDuration:{type:ControlType.Number,title:\"Letter Duration\",defaultValue:.5,min:0,max:2,step:.1},initialDelay:{type:ControlType.Number,title:\"Initial Delay\",defaultValue:0,min:0,max:5e3,step:100,unit:\"ms\"},scrollRootSelector:{type:ControlType.String,title:\"Scroll Root Selector\",defaultValue:\"\"},intersectionThreshold:{type:ControlType.Number,title:\"Threshold\",defaultValue:.1,min:0,max:1,step:.1,displayStepper:true},intersectionRootMargin:{type:ControlType.String,title:\"Root Margin\",defaultValue:\"0px 0px 0px 0px\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"AnimatedHeadline\":{\"type\":\"reactComponent\",\"name\":\"AnimatedHeadline\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextAnimation.map"],"mappings":"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"}