{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/hK8lMvN8h0IqOjtlMKDg/ZKxKUqqXsAIlSG0Ds9h9/Character.js"],
  "sourcesContent": ["import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{motion,useInView}from\"framer-motion\";import{useRef,useMemo}from\"react\";export default function TextRevealAnimation(props){const{baseText,textColor,textStyle,animationDirection,delay,letterDelay,letterDuration,letterDistance,rotateChar,padding,uppercase,replay,loop,repeatType=[\"mirror\",\"reverse\",\"loop\"]}=props;const ref=useRef(null);const isInView=useInView(ref,{once:replay?true:false});// Animation variants for letters\nconst letterVariants=useMemo(()=>({hidden:{y:animationDirection===\"bottom\"?letterDistance:-letterDistance,rotate:rotateChar},visible:i=>({y:0,rotate:0,transition:{delay:i*letterDelay+delay,duration:letterDuration,ease:[.16,.9,0,1],repeat:loop?50:0,repeatType:repeatType}})}),[animationDirection,letterDistance,rotateChar,letterDelay,delay,letterDuration]);// Calculate height based on font size\nconst fontSize=parseInt(textStyle.fontSize)||26;const lineHeight=parseFloat(textStyle.lineHeight)||1.2;const textHeight=fontSize*lineHeight;// Use useMemo to avoid recreating the characters array on each render\nconst characters=useMemo(()=>{return baseText.split(\"\");},[baseText]);// Create an array of indices for the multiple text copies\nconst textCopies=useMemo(()=>[0,1,2,3,4],[]);// For canvas rendering\nif(RenderTarget.current()===\"CANVAS\"){return /*#__PURE__*/_jsx(\"div\",{style:{...textStyle,width:\"auto\",height:\"auto\",display:\"flex\",justifyContent:\"start\",color:textColor,padding:padding,textTransform:uppercase?\"uppercase\":\"none\"},children:baseText});}return /*#__PURE__*/_jsx(\"div\",{style:{width:\"auto\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\",height:`${textHeight}px`,overflow:\"hidden\",position:\"relative\",padding:padding,textTransform:uppercase?\"uppercase\":\"none\"},ref:ref,children:/*#__PURE__*/_jsx(motion.div,{style:{flexDirection:\"column\",alignItems:\"start\",justifyContent:\"start\",width:\"auto\",position:\"relative\",display:\"flex\"},children:textCopies.map(itemIndex=>/*#__PURE__*/_jsx(\"div\",{style:{...textStyle,color:textColor,textAlign:\"start\",width:\"auto\",justifyContent:\"center\",flexWrap:\"wrap\",height:`${textHeight}px`,alignItems:\"center\",whiteSpace:\"nowrap\",position:\"relative\",display:\"inline-block\",textTransform:uppercase?\"uppercase\":\"none\"},children:characters.map((char,charIndex)=>/*#__PURE__*/_jsx(motion.span,{custom:charIndex,variants:letterVariants,initial:\"hidden\",animate:isInView?\"visible\":\"hidden\",style:{position:\"relative\",display:\"inline-block\"},children:char===\" \"?\"\\xa0\":char},`${itemIndex}-${charIndex}`))},itemIndex))})});}addPropertyControls(TextRevealAnimation,{textStyle:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultValue:{fontSize:40,lineHeight:\"0.8\",fontWeight:700}},baseText:{title:\"Text\",type:ControlType.String,defaultValue:\"Animated Text\"},replay:{title:\"Replay Animation\",type:ControlType.Boolean,defaultValue:false},loop:{type:ControlType.Boolean,title:\"Loop Animation\",defaultValue:false},repeatType:{type:ControlType.Enum,defaultValue:\"mirror\",options:[\"mirror\",\"reverse\",\"loop\"],optionTitles:[\"mirror\",\"reverse\",\"loop\"]},textColor:{title:\"Text Color\",type:ControlType.Color,defaultValue:\"#000\"},animationDirection:{title:\"Animation Direction\",type:ControlType.Enum,options:[\"bottom\",\"top\"],defaultValue:\"bottom\",displaySegmentedControl:true,description:\"Direction letters flow from\"},rotateChar:{title:\"Rotate Char\",type:ControlType.Number,defaultValue:-24,step:.01,description:\"Initial rotation of characters\"},delay:{title:\"Delay Initial\",type:ControlType.Number,defaultValue:0,min:0,step:.01,description:\"Initial delay before animation starts\"},letterDelay:{title:\"Letter Delay (s)\",type:ControlType.Number,defaultValue:.02,min:0,max:.2,step:.01,description:\"Delay between each letter animation\"},letterDuration:{title:\"Letter Duration (s)\",type:ControlType.Number,defaultValue:2,min:0,max:10,step:.1,description:\"Duration of each letter's animation\"},letterDistance:{title:\"Letter Distance\",type:ControlType.Number,defaultValue:100,description:\"Distance letters move during animation\"},uppercase:{type:ControlType.Boolean,title:\"Text Transform\",defaultValue:false},padding:{type:ControlType.Padding,title:\"Padding\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TextRevealAnimation\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Character.map"],
  "mappings": "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",
  "names": ["TextRevealAnimation", "props", "baseText", "textColor", "textStyle", "animationDirection", "delay", "letterDelay", "letterDuration", "letterDistance", "rotateChar", "padding", "uppercase", "replay", "loop", "repeatType", "ref", "pe", "isInView", "useInView", "letterVariants", "se", "i", "fontSize", "lineHeight", "textHeight", "characters", "textCopies", "RenderTarget", "p", "motion", "itemIndex", "char", "charIndex", "addPropertyControls", "ControlType"]
}
