{"version":3,"file":"h4a7dWxv8.ChAbr7ba.mjs","names":["useState","useRef","useMemo","React.useContext","React.useMemo","React.Fragment","useRef","React.useId"],"sources":["https:/framerusercontent.com/modules/Fd1tlH9QCoFeIFvxah71/1AITomapiVi0hbIN3aB3/TypewriterEffect.js","https:/framerusercontent.com/modules/mUHv7FsDSdaCEHvzlfjg/xHOVC9P36lnBhDxUUnsl/h4a7dWxv8.js"],"sourcesContent":["// Dynamic Typing Animation Component with Customizable Cursor and Typography\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useEffect,useRef,useMemo,startTransition}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * Dynamic Typing Animation\n *\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function TypewriterEffect(props){const{words=[{word:\"Hello\"},{word:\"World\"},{word:\"Framer\"}],typingSpeed,deletingSpeed,pauseDuration,cursorColor,cursorWidth,cursorHeight,font,textColor,style}=props;const[displayed,setDisplayed]=useState(\"\");const[isDeleting,setIsDeleting]=useState(false);const[wordIndex,setWordIndex]=useState(0);const[charIndex,setCharIndex]=useState(0);const[pause,setPause]=useState(false);const[showCursor,setShowCursor]=useState(true);const timeoutRef=useRef(null);const blinkRef=useRef(null);const currentWord=words.length>0?words[wordIndex%words.length].word:\"\";// Typing/Deleting Effect\nuseEffect(()=>{if(pause)return;if(timeoutRef.current)clearTimeout(timeoutRef.current);let delay=typingSpeed;if(!isDeleting&&charIndex<currentWord.length){delay=typingSpeed;timeoutRef.current=window.setTimeout(()=>{startTransition(()=>{setDisplayed(currentWord.slice(0,charIndex+1));setCharIndex(charIndex+1);});},delay);}else if(!isDeleting&&charIndex===currentWord.length){// Pause at end of word\ntimeoutRef.current=window.setTimeout(()=>{startTransition(()=>setIsDeleting(true));},pauseDuration);}else if(isDeleting&&charIndex>0){delay=deletingSpeed;timeoutRef.current=window.setTimeout(()=>{startTransition(()=>{setDisplayed(currentWord.slice(0,charIndex-1));setCharIndex(charIndex-1);});},delay);}else if(isDeleting&&charIndex===0){// Pause before next word\ntimeoutRef.current=window.setTimeout(()=>{startTransition(()=>{setIsDeleting(false);setWordIndex((wordIndex+1)%words.length);});},pauseDuration);}return()=>{if(timeoutRef.current)clearTimeout(timeoutRef.current);};},[charIndex,isDeleting,pause,wordIndex,currentWord,typingSpeed,deletingSpeed,pauseDuration,words.length]);// Reset charIndex when wordIndex changes\nuseEffect(()=>{if(!isDeleting){startTransition(()=>setCharIndex(0));}},[wordIndex,isDeleting]);// Blinking Cursor Effect\nuseEffect(()=>{if(blinkRef.current)clearInterval(blinkRef.current);blinkRef.current=window.setInterval(()=>{startTransition(()=>setShowCursor(v=>!v));},500);return()=>{if(blinkRef.current)clearInterval(blinkRef.current);};},[]);// Font size for cursor height calculation\nconst fontSize=useMemo(()=>{if(font&&font.fontSize){if(typeof font.fontSize===\"string\"&&font.fontSize.endsWith(\"px\")){return parseFloat(font.fontSize);}else if(typeof font.fontSize===\"number\"){return font.fontSize;}}return 32;},[font]);return /*#__PURE__*/_jsxs(\"span\",{style:{...style,...font,color:textColor,display:\"inline-flex\",alignItems:\"center\",minWidth:1,minHeight:1,width:\"max-content\",height:\"max-content\",whiteSpace:\"pre\"},\"aria-live\":\"polite\",children:[displayed,/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",style:{display:\"inline-block\",background:cursorColor,width:cursorWidth,height:fontSize*(cursorHeight/100),marginLeft:2,marginRight:2,verticalAlign:\"bottom\",opacity:showCursor?1:0,transition:\"opacity 0.1s\",borderRadius:2}})]});}addPropertyControls(TypewriterEffect,{words:{type:ControlType.Array,title:\"Words\",control:{type:ControlType.Object,controls:{word:{type:ControlType.String,defaultValue:\"Hello\"}}},defaultValue:[{word:\"Hello\"},{word:\"World\"},{word:\"Framer\"}],maxCount:10},typingSpeed:{type:ControlType.Number,title:\"Typing Speed\",defaultValue:100,min:20,max:500,unit:\"ms\",step:5},deletingSpeed:{type:ControlType.Number,title:\"Deleting Speed\",defaultValue:60,min:10,max:500,unit:\"ms\",step:5},pauseDuration:{type:ControlType.Number,title:\"Pause Duration\",defaultValue:1e3,min:200,max:3e3,unit:\"ms\",step:50},cursorColor:{type:ControlType.Color,title:\"Cursor Color\",defaultValue:\"#FFFFFF\"},cursorWidth:{type:ControlType.Number,title:\"Cursor Width\",defaultValue:2,min:1,max:8,unit:\"px\",step:1},cursorHeight:{type:ControlType.Number,title:\"Cursor Height\",defaultValue:100,min:50,max:120,unit:\"%\",step:1},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"32px\",variant:\"Bold\",letterSpacing:\"-0.01em\",lineHeight:\"1.2em\"}},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#FFFFFF\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TypewriterEffect\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"auto\",\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TypewriterEffect.map","// Generated by Framer (9805f18)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";const cycleOrder=[\"MAsJj1Ki9\",\"ZTUvY15qg\"];const serializationHash=\"framer-9q408\";const variantClassNames={MAsJj1Ki9:\"framer-v-wjxkjt\",ZTUvY15qg:\"framer-v-y4bll1\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableVariantMap={Desktop:\"MAsJj1Ki9\",Tablet:\"ZTUvY15qg\"};const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"MAsJj1Ki9\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"MAsJj1Ki9\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-wjxkjt\",className,classNames),\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"MAsJj1Ki9\",ref:refBinding,style:{...style},...addPropertyOverrides({ZTUvY15qg:{\"data-framer-name\":\"Tablet\"}},baseVariant,gestureVariant)})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-9q408.framer-1nehnzv, .framer-9q408 .framer-1nehnzv { display: block; }\",\".framer-9q408.framer-wjxkjt { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: 10px; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: 48px; }\",\".framer-9q408.framer-v-y4bll1.framer-wjxkjt { width: 20px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 10\n * @framerIntrinsicWidth 48\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"ZTUvY15qg\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const Framerh4a7dWxv8=withCSS(Component,css,\"framer-9q408\");export default Framerh4a7dWxv8;Framerh4a7dWxv8.displayName=\"Page wrapper padding\";Framerh4a7dWxv8.defaultProps={height:10,width:48};addPropertyControls(Framerh4a7dWxv8,{variant:{options:[\"MAsJj1Ki9\",\"ZTUvY15qg\"],optionTitles:[\"Desktop\",\"Tablet\"],title:\"Variant\",type:ControlType.Enum}});addFonts(Framerh4a7dWxv8,[{explicitInter:true,fonts:[]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Framerh4a7dWxv8\",\"slots\":[],\"annotations\":{\"framerAutoSizeImages\":\"true\",\"framerContractVersion\":\"1\",\"framerColorSyntax\":\"true\",\"framerIntrinsicWidth\":\"48\",\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicHeight\":\"10\",\"framerImmutableVariables\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"ZTUvY15qg\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./h4a7dWxv8.map"],"mappings":"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"}