{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/QQawY2tC1laRFiGbJYyL/77wW25ytLDAD9I4kS10j/TypeEffect.js"],
  "sourcesContent": ["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useEffect}from\"react\";import{addPropertyControls,ControlType}from\"framer\";// Dynamically load a Google Font with the specified weight\nconst loadGoogleFont=(fontFamily,fontWeight)=>{const fontUrl=`https://fonts.googleapis.com/css2?family=${fontFamily.replace(/\\s+/g,\"+\")}:wght@${fontWeight}&display=swap`;if(!document.querySelector(`link[href=\"${fontUrl}\"]`)){const link=document.createElement(\"link\");link.href=fontUrl;link.rel=\"stylesheet\";document.head.appendChild(link);}};// Dynamically inject local font into the document\nconst loadLocalFont=(fontName,fontFile)=>{const styleId=`font-${fontName}`;// Avoid duplicate injection\nif(!document.getElementById(styleId)){const style=document.createElement(\"style\");style.id=styleId;style.innerHTML=`\n            @font-face {\n                font-family: '${fontName}';\n                src: url('${fontFile}') format('truetype');\n            }\n        `;document.head.appendChild(style);}};export function TypeEffect({text,autoplay,loop,color,fontSize,letterSpacing,lineHeight,cursor,cursorColor,cursorEffect,typingSpeed,deletingSpeed,delayBetweenTexts,fontFamily,fontWeight,fontFile}){const[displayText,setDisplayText]=useState(\"\")// Visible text\n;const[currentPieceIndex,setCurrentPieceIndex]=useState(0)// Current text piece\n;const[charIndex,setCharIndex]=useState(0)// Current character index\n;const[isDeleting,setIsDeleting]=useState(false)// Typing or deleting state\n;const[cursorVisible,setCursorVisible]=useState(true);const textPieces=text.split(\"-\")// Split text into pieces\n;const currentPiece=textPieces[currentPieceIndex]||\"\";// Load fonts dynamically\nuseEffect(()=>{if(fontFile){loadLocalFont(fontFamily,fontFile);}else if(fontFamily){loadGoogleFont(fontFamily,fontWeight);}},[fontFamily,fontWeight,fontFile]);useEffect(()=>{if(!autoplay)return;let effectTimeout;const handleTypingEffect=()=>{if(isDeleting){if(charIndex>0){setDisplayText(prev=>prev.slice(0,-1))// Remove character\n;setCharIndex(prev=>prev-1);}else{setIsDeleting(false)// Start typing the next text\n;const nextIndex=(currentPieceIndex+1)%textPieces.length;setCurrentPieceIndex(nextIndex);}}else{if(charIndex<currentPiece.length){setDisplayText(prev=>prev+currentPiece[charIndex])// Add character\n;setCharIndex(prev=>prev+1);}else{effectTimeout=setTimeout(()=>setIsDeleting(true),delayBetweenTexts)// Start deleting after delay\n;}}};effectTimeout=setTimeout(handleTypingEffect,isDeleting?deletingSpeed:typingSpeed);return()=>clearTimeout(effectTimeout);},[isDeleting,charIndex,currentPiece,currentPieceIndex,textPieces,typingSpeed,deletingSpeed,delayBetweenTexts,autoplay]);useEffect(()=>{// Handle cursor blinking\nconst cursorInterval=setInterval(()=>{setCursorVisible(visible=>!visible);},cursorEffect===\"Blink\"?500:1e3);return()=>clearInterval(cursorInterval);},[cursorEffect]);return /*#__PURE__*/_jsxs(\"div\",{style:{fontSize:`${fontSize}px`,color,letterSpacing:`${letterSpacing}px`,lineHeight:`${lineHeight}`,fontFamily:fontFamily,fontWeight:fontWeight,whiteSpace:\"nowrap\",display:\"inline-block\"},children:[displayText,cursor&&/*#__PURE__*/_jsx(\"span\",{style:{color:cursorColor,visibility:cursorVisible?\"visible\":\"hidden\"},children:cursor})]});}// Property Controls for Framer Property Panel\naddPropertyControls(TypeEffect,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"UI UX Designer-Graphic Designer-Vector Artist-2D Motion Designer-Video Editor\"},autoplay:{type:ControlType.Boolean,title:\"Autoplay\",defaultValue:true},loop:{type:ControlType.Boolean,title:\"Loop\",defaultValue:true},color:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#000000\"},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:24,min:10,max:100,step:1},letterSpacing:{type:ControlType.Number,title:\"Kerning\",defaultValue:1,min:0,max:10,step:.1},lineHeight:{type:ControlType.Number,title:\"Leading\",defaultValue:1.5,min:1,max:3,step:.1},cursor:{type:ControlType.String,title:\"Cursor\",defaultValue:\"|\"},cursorColor:{type:ControlType.Color,title:\"Cursor Color\",defaultValue:\"#000000\"},cursorEffect:{type:ControlType.Enum,title:\"Cursor Effect\",options:[\"Blink\",\"Static\"],optionTitles:[\"Blink\",\"Static\"],defaultValue:\"Blink\"},typingSpeed:{type:ControlType.Number,title:\"Typing Speed (ms)\",defaultValue:50,min:10,max:1e3,step:10},deletingSpeed:{type:ControlType.Number,title:\"Deleting Speed (ms)\",defaultValue:30,min:10,max:1e3,step:10},delayBetweenTexts:{type:ControlType.Number,title:\"Delay (ms)\",defaultValue:1e3,min:100,max:5e3,step:100},fontFamily:{type:ControlType.String,title:\"Font Family\",defaultValue:\"Syne\"},fontWeight:{type:ControlType.Enum,title:\"Font Weight\",options:[\"300\",\"400\",\"500\",\"600\",\"700\"],optionTitles:[\"Light\",\"Regular\",\"Medium\",\"Semi-Bold\",\"Bold\"],defaultValue:\"400\"},fontFile:{type:ControlType.File,title:\"Upload Font\",allowedFileTypes:[\"ttf\",\"otf\",\"woff\"]}});\nexport const __FramerMetadata__ = {\"exports\":{\"TypeEffect\":{\"type\":\"reactComponent\",\"name\":\"TypeEffect\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TypeEffect.map"],
  "mappings": "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",
  "names": ["init_ssg_sandbox_shims", "loadGoogleFont", "fontFamily", "fontWeight", "fontUrl", "link", "loadLocalFont", "fontName", "fontFile", "styleId", "style", "TypeEffect", "text", "autoplay", "loop", "color", "fontSize", "letterSpacing", "lineHeight", "cursor", "cursorColor", "cursorEffect", "typingSpeed", "deletingSpeed", "delayBetweenTexts", "displayText", "setDisplayText", "ye", "currentPieceIndex", "setCurrentPieceIndex", "charIndex", "setCharIndex", "isDeleting", "setIsDeleting", "cursorVisible", "setCursorVisible", "textPieces", "currentPiece", "ue", "effectTimeout", "prev", "nextIndex", "cursorInterval", "visible", "u", "p", "addPropertyControls", "ControlType"]
}
