{"version":3,"file":"ProTypewriter.CYwwlHXe.mjs","names":["React.useState","React.useRef","React.useCallback","React.useMemo"],"sources":["https:/framerusercontent.com/modules/ZoeR2viOsM5EIXMO4rWR/y14pym0RtG6mTOYTjmx1/ProTypewriter.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function ProTypewriter(props){const{text,font,color,showPlaceholder,placeholderText,placeholderColor,trigger,delay,timingMode,durationFixed,durationPerChar,natural,naturalVariance,loop,loopDelay,showCursor,cursorCharacter,cursorBlink,cursorColor,$control__animate_on_canvas}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const shouldSkipCanvasAnimation=isCanvas&&!$control__animate_on_canvas;const[visibleCount,setVisibleCount]=React.useState(0);const[hasStarted,setHasStarted]=React.useState(false);const[isTyping,setIsTyping]=React.useState(true);const[cursorVisible,setCursorVisible]=React.useState(true);const startDelayTimeoutRef=React.useRef(null);const typingIntervalRef=React.useRef(null);const loopTimeoutRef=React.useRef(null);const naturalTimerRef=React.useRef(null);const cursorIntervalRef=React.useRef(null);const rootRef=React.useRef(null);const clearAllTimers=React.useCallback(()=>{if(typeof window!==\"undefined\"){if(startDelayTimeoutRef.current!==null){window.clearTimeout(startDelayTimeoutRef.current);startDelayTimeoutRef.current=null;}if(typingIntervalRef.current!==null){window.clearInterval(typingIntervalRef.current);typingIntervalRef.current=null;}if(loopTimeoutRef.current!==null){window.clearTimeout(loopTimeoutRef.current);loopTimeoutRef.current=null;}if(naturalTimerRef.current!==null){window.clearTimeout(naturalTimerRef.current);naturalTimerRef.current=null;}if(cursorIntervalRef.current!==null){window.clearInterval(cursorIntervalRef.current);cursorIntervalRef.current=null;}}},[]);const startTypingCycle=React.useCallback(()=>{if(typeof window===\"undefined\")return;React.startTransition(()=>{setHasStarted(true);});if(typingIntervalRef.current!==null){window.clearInterval(typingIntervalRef.current);typingIntervalRef.current=null;}if(loopTimeoutRef.current!==null){window.clearTimeout(loopTimeoutRef.current);loopTimeoutRef.current=null;}if(naturalTimerRef.current!==null){window.clearTimeout(naturalTimerRef.current);naturalTimerRef.current=null;}React.startTransition(()=>{setVisibleCount(0);setIsTyping(true);});if(text.length===0){React.startTransition(()=>{setIsTyping(false);});if(loop){loopTimeoutRef.current=window.setTimeout(()=>{startTypingCycle();},Math.max(0,loopDelay*1e3));}return;}if(natural&&(timingMode===\"character\"||timingMode===\"line\")){const baseInterval=timingMode===\"character\"?Math.max(1,durationPerChar*1e3):Math.max(1,durationFixed*1e3/text.length);const punctuationRegex=/[.,!?;:]/;const typeNextNatural=()=>{React.startTransition(()=>{setVisibleCount(prev=>{const next=prev+1;if(next>=text.length){if(naturalTimerRef.current!==null&&typeof window!==\"undefined\"){window.clearTimeout(naturalTimerRef.current);naturalTimerRef.current=null;}setIsTyping(false);if(loop&&typeof window!==\"undefined\"){if(loopTimeoutRef.current!==null){window.clearTimeout(loopTimeoutRef.current);}loopTimeoutRef.current=window.setTimeout(()=>{startTypingCycle();},Math.max(0,loopDelay*1e3));}return text.length;}if(typeof window!==\"undefined\"){const typedChar=text[next-1]??\"\";const jitter=(Math.random()*2-1)*naturalVariance*baseInterval;let charDelay=Math.max(10,baseInterval+jitter);if(punctuationRegex.test(typedChar)){charDelay=charDelay*(1+naturalVariance*1.5);}if(Math.random()<.08){charDelay=charDelay*(1+naturalVariance*2);}naturalTimerRef.current=window.setTimeout(typeNextNatural,charDelay);}return next;});});};naturalTimerRef.current=window.setTimeout(typeNextNatural,baseInterval);return;}const activeDuration=timingMode===\"character\"?durationPerChar:durationFixed;const interval=timingMode===\"character\"?Math.max(1,activeDuration*1e3):Math.max(1,activeDuration*1e3/text.length);typingIntervalRef.current=window.setInterval(()=>{React.startTransition(()=>{setVisibleCount(prev=>{const next=prev+1;if(next>=text.length){if(typingIntervalRef.current!==null&&typeof window!==\"undefined\"){window.clearInterval(typingIntervalRef.current);typingIntervalRef.current=null;}setIsTyping(false);if(loop&&typeof window!==\"undefined\"){if(loopTimeoutRef.current!==null){window.clearTimeout(loopTimeoutRef.current);}loopTimeoutRef.current=window.setTimeout(()=>{startTypingCycle();},Math.max(0,loopDelay*1e3));}return text.length;}return next;});});},interval);},[durationFixed,durationPerChar,loop,loopDelay,natural,naturalVariance,text,timingMode]);React.useEffect(()=>{clearAllTimers();if(typeof window===\"undefined\")return;React.startTransition(()=>{setVisibleCount(0);setHasStarted(false);setIsTyping(true);setCursorVisible(true);});if(shouldSkipCanvasAnimation){return()=>{clearAllTimers();};}React.startTransition(()=>{setVisibleCount(0);setIsTyping(true);});const observer=new IntersectionObserver(entries=>{const entry=entries[0];if(!entry)return;if(entry.isIntersecting){if(startDelayTimeoutRef.current!==null){window.clearTimeout(startDelayTimeoutRef.current);startDelayTimeoutRef.current=null;}startDelayTimeoutRef.current=window.setTimeout(()=>{startTypingCycle();},Math.max(0,delay*1e3));}else{clearAllTimers();React.startTransition(()=>{setVisibleCount(0);setHasStarted(false);setIsTyping(true);});}},{threshold:.1});if(rootRef.current){observer.observe(rootRef.current);}return()=>{observer.disconnect();clearAllTimers();};},[text,trigger,delay,durationFixed,durationPerChar,loop,loopDelay,startTypingCycle,clearAllTimers,shouldSkipCanvasAnimation]);React.useEffect(()=>{if(shouldSkipCanvasAnimation)return;if(typeof window===\"undefined\")return;if(cursorIntervalRef.current!==null){window.clearInterval(cursorIntervalRef.current);cursorIntervalRef.current=null;}if(!showCursor){React.startTransition(()=>{setCursorVisible(false);});return;}if(isTyping){React.startTransition(()=>{setCursorVisible(true);});cursorIntervalRef.current=window.setInterval(()=>{React.startTransition(()=>{setCursorVisible(prev=>!prev);});},530);}else{if(cursorBlink){React.startTransition(()=>{setCursorVisible(true);});cursorIntervalRef.current=window.setInterval(()=>{React.startTransition(()=>{setCursorVisible(prev=>!prev);});},530);}else{React.startTransition(()=>{setCursorVisible(true);});}}return()=>{if(typeof window!==\"undefined\"&&cursorIntervalRef.current!==null){window.clearInterval(cursorIntervalRef.current);cursorIntervalRef.current=null;}};},[isTyping,showCursor,cursorBlink,shouldSkipCanvasAnimation]);const visibleText=React.useMemo(()=>shouldSkipCanvasAnimation?text:text.slice(0,visibleCount),[text,visibleCount,shouldSkipCanvasAnimation]);return /*#__PURE__*/_jsx(\"div\",{ref:rootRef,style:{position:\"relative\",display:\"block\",height:\"100%\",overflow:\"hidden\",whiteSpace:\"normal\",wordBreak:\"break-word\",color,...font},children:showPlaceholder&&!hasStarted&&!shouldSkipCanvasAnimation?/*#__PURE__*/_jsx(\"span\",{style:{color:placeholderColor},children:placeholderText}):/*#__PURE__*/_jsxs(\"span\",{children:[visibleText,showCursor&&!shouldSkipCanvasAnimation&&!(showPlaceholder&&!hasStarted)&&cursorVisible?/*#__PURE__*/_jsx(\"span\",{style:{color:cursorColor},children:cursorCharacter}):null]})});}addPropertyControls(ProTypewriter,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"Hello, world!\",displayTextArea:true},font:{type:ControlType.Font,title:\"Font\",defaultValue:{variant:\"Regular\",fontSize:16},controls:\"extended\",defaultFontType:\"sans-serif\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#ffffff\"},showPlaceholder:{type:ControlType.Boolean,title:\"Placeholder\",defaultValue:false},placeholderText:{type:ControlType.String,title:\"Text\",defaultValue:\"...\",displayTextArea:true,hidden:props=>!props.showPlaceholder},placeholderColor:{type:ControlType.Color,title:\"Color\",defaultValue:\"rgba(255,255,255,0.3)\",hidden:props=>!props.showPlaceholder},trigger:{type:ControlType.Enum,title:\"Trigger\",defaultValue:\"onMount\",options:[\"onMount\",\"onInView\"],optionTitles:[\"On Appear\",\"In View\"]},delay:{type:ControlType.Number,title:\"Delay\",defaultValue:0,min:0,max:10,step:.1,unit:\"s\",displayStepper:false},timingMode:{type:ControlType.Enum,title:\"Per\",defaultValue:\"line\",options:[\"line\",\"character\"],optionTitles:[\"Element\",\"Character\"]},durationFixed:{type:ControlType.Number,title:\"Duration\",defaultValue:2,min:.1,max:10,step:.1,unit:\"s\",displayStepper:false,hidden:props=>props.timingMode!==\"line\"},durationPerChar:{type:ControlType.Number,title:\"Per Char\",defaultValue:.05,min:.01,max:1,step:.01,unit:\"s\",displayStepper:false,hidden:props=>props.timingMode!==\"character\"},natural:{type:ControlType.Boolean,title:\"Natural\",defaultValue:false},naturalVariance:{type:ControlType.Number,title:\"Variance\",defaultValue:.5,min:.1,max:1,step:.05,displayStepper:false,hidden:props=>props.natural!==true},loop:{type:ControlType.Boolean,title:\"Loop\",defaultValue:false},loopDelay:{type:ControlType.Number,title:\"Loop Delay\",defaultValue:1,min:0,max:10,step:.1,unit:\"s\",displayStepper:false,hidden:props=>!props.loop},showCursor:{type:ControlType.Boolean,title:\"Show Cursor\",defaultValue:true},cursorCharacter:{type:ControlType.String,title:\"Cursor\",defaultValue:\"|\",hidden:props=>!props.showCursor},cursorBlink:{type:ControlType.Boolean,title:\"Blink\",defaultValue:true,hidden:props=>!props.showCursor},cursorColor:{type:ControlType.Color,title:\"Cursor Color\",defaultValue:\"#ffffff\",hidden:props=>!props.showCursor},$control__animate_on_canvas:{type:ControlType.Boolean,title:\"Animate on Canvas\",defaultValue:false}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ProTypewriter\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ProTypewriter.map"],"mappings":"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"}