{"version":3,"file":"TextCycle.B2TgOcbS.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/Ig07Rt6yW28hB4aeJUE9/AXb9YrTLX7OqDzh8rSHK/TextCycle.js"],"sourcesContent":["// Text animation that cycles through multiple texts, user can add many different texts\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useState,useRef,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";// Add motion import\nimport{motion,AnimatePresence}from\"framer-motion\";/**\n * TextCycle\n *\n * Animated text that cycles through multiple user-provided texts.\n *\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 50\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function TextCycle(props){const{texts=[{value:\"Hello\"},{value:\"World\"}],duration=2e3,font,color,animationDirection=\"vertical-down\",overflow=\"visible\",style}=props;const[index,setIndex]=useState(0);const[animating,setAnimating]=useState(false);const isStatic=useIsStaticRenderer();const timeoutRef=useRef(null);// Animation state for slide/fade\nconst[slide,setSlide]=useState(0);useEffect(()=>{if(isStatic)return;if(texts.length<=1)return;if(timeoutRef.current)clearTimeout(timeoutRef.current);setAnimating(true);timeoutRef.current=window.setTimeout(()=>{setAnimating(false);setTimeout(()=>{startTransition(()=>{setIndex(prevIndex=>(prevIndex+1)%texts.length);});},400)// match transition duration\n;},duration);return()=>{if(timeoutRef.current)clearTimeout(timeoutRef.current);};},[index,duration,texts.length,isStatic]);const currentText=texts[index]?.value||\"\";// Generate animation variants based on direction\nconst getVariants=()=>{const transition={duration:.4,ease:[.42,0,.58,1]};switch(animationDirection){case\"vertical-up\":return{enter:{opacity:0,y:30,position:\"absolute\"},center:{opacity:1,y:0,position:\"relative\",transition},exit:{opacity:0,y:-30,position:\"absolute\",transition:{duration:.4,ease:[.42,0,1,1]}}};case\"horizontal-right\":return{enter:{opacity:0,x:-30,position:\"absolute\"},center:{opacity:1,x:0,position:\"relative\",transition},exit:{opacity:0,x:30,position:\"absolute\",transition:{duration:.4,ease:[.42,0,1,1]}}};case\"horizontal-left\":return{enter:{opacity:0,x:30,position:\"absolute\"},center:{opacity:1,x:0,position:\"relative\",transition},exit:{opacity:0,x:-30,position:\"absolute\",transition:{duration:.4,ease:[.42,0,1,1]}}};case\"vertical-down\":default:return{enter:{opacity:0,y:-30,position:\"absolute\"},center:{opacity:1,y:0,position:\"relative\",transition},exit:{opacity:0,y:30,position:\"absolute\",transition:{duration:.4,ease:[.42,0,1,1]}}};}};const variants=getVariants();return /*#__PURE__*/_jsx(\"span\",{style:{...style,...font,color,display:\"flex\",alignItems:\"center\",justifyContent:\"flex-start\",position:\"relative\",whiteSpace:\"nowrap\",overflow,width:\"100%\",height:\"100%\"},\"aria-live\":\"polite\",children:/*#__PURE__*/_jsx(AnimatePresence,{initial:false,mode:\"wait\",children:/*#__PURE__*/_jsx(motion.span,{variants:variants,initial:\"enter\",animate:\"center\",exit:\"exit\",style:{display:\"inline-block\"},children:currentText},index)})});}addPropertyControls(TextCycle,{texts:{type:ControlType.Array,title:\"Texts\",control:{type:ControlType.Object,controls:{value:{type:ControlType.String,title:\"Text\",defaultValue:\"Hello\"}}},defaultValue:[{value:\"Hello\"},{value:\"World\"},{value:\"Framer\"}],maxCount:10},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:2e3,min:500,max:1e4,unit:\"ms\",step:100},animationDirection:{type:ControlType.Enum,title:\"Direction\",defaultValue:\"vertical-down\",options:[\"vertical-down\",\"vertical-up\",\"horizontal-right\",\"horizontal-left\"],optionTitles:[\"Top to Bottom\",\"Bottom to Top\",\"Left to Right\",\"Right to Left\"]},overflow:{type:ControlType.Enum,title:\"Overflow\",defaultValue:\"visible\",options:[\"visible\",\"hidden\",\"scroll\",\"auto\",\"clip\"],optionTitles:[\"Visible\",\"Hidden\",\"Scroll\",\"Auto\",\"Clip\"]},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"32px\",variant:\"Semibold\",letterSpacing:\"-0.01em\",lineHeight:\"1.2em\"}},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#000000\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TextCycle\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"50\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerIntrinsicWidth\":\"200\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextCycle.map"],"mappings":"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"}