{"version":3,"file":"DecodingText.GiDCw2pN.mjs","names":["useRef","useState","useMemo","useCallback"],"sources":["https:/framerusercontent.com/modules/W55RTWjF5IKwLa1ggipW/rRqi7IPOFhmUr1RhzWKr/DecodingText.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useState,useRef,useMemo,useCallback,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{useInView}from\"framer-motion\";// User request: add a separate seconds-based \"Start Delay\" control that delays when decoding starts after trigger, keep existing frame-based decoding pacing editable, preserve existing instance timing unless Start Delay is set, and ensure cleanup for timers/RAF.\n/**\n * Decoding text animation with configurable font, color, and looping.\n *\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 50\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function DecodingText(props){const{text,color,font,speed,delayStart,startDelaySeconds,style,numbersSet,symbolsSet,neonEnabled,paragraphMode,triggerMode}=props;const containerRef=useRef(null);const isStaticRenderer=useIsStaticRenderer();const[displayText,setDisplayText]=useState(()=>isStaticRenderer?text:\"\");const isInView=useInView(containerRef,{once:true,amount:.2});const hasCompletedRef=useRef(false);const prevTextRef=useRef(text);const prevDisplayRef=useRef(isStaticRenderer?text:\"\");const charsNum=useMemo(()=>numbersSet&&numbersSet.length>0?numbersSet:\"0123456789\",[numbersSet]);const charsSym=useMemo(()=>symbolsSet&&symbolsSet.length>0?symbolsSet:\"!@#$%^&*()_+-=[]{}|;':,./<>?\",[symbolsSet]);const clearDisplay=useCallback(()=>{if(prevDisplayRef.current!==\"\"){prevDisplayRef.current=\"\";startTransition(()=>{setDisplayText(\"\");});}},[]);useEffect(()=>{if(prevTextRef.current!==text){hasCompletedRef.current=false;prevTextRef.current=text;if(!isStaticRenderer){clearDisplay();}}if(!text||text.length===0){clearDisplay();return;}if(hasCompletedRef.current){return;}if(isStaticRenderer){prevDisplayRef.current=text;startTransition(()=>{setDisplayText(text);});hasCompletedRef.current=true;return;}if(triggerMode===\"layerInView\"&&!isInView){clearDisplay();return;}clearDisplay();let frameId=null;let timeoutId=null;let isCancelled=false;const startDecoding=()=>{if(isCancelled)return;const legacyFrameMs=1e3/60;const queue=[];for(let i=0;i<text.length;i++){const char=text[i];const start=delayStart+i*speed;const endNum=start+10;const endSym=endNum+10;queue.push({char:char,startMs:start*legacyFrameMs,endNumMs:endNum*legacyFrameMs,endSymMs:endSym*legacyFrameMs,done:false});}let animationStartTimeMs=null;const update=timestamp=>{if(isCancelled)return;if(animationStartTimeMs===null){animationStartTimeMs=timestamp;}const elapsedMs=timestamp-animationStartTimeMs;let output=\"\";let complete=0;for(let i=0;i<queue.length;i++){const q=queue[i];if(q.char===\" \"||q.char===\"\\n\"||q.char===\"\\r\"){output+=q.char;complete++;continue;}if(elapsedMs>=q.endSymMs){output+=q.char;complete++;}else if(elapsedMs>=q.endNumMs){output+=charsSym[Math.floor(Math.random()*charsSym.length)];}else if(elapsedMs>=q.startMs){output+=charsNum[Math.floor(Math.random()*charsNum.length)];}else{output+=\" \";}}if(output!==prevDisplayRef.current){prevDisplayRef.current=output;startTransition(()=>{setDisplayText(output);});}if(complete<queue.length){frameId=requestAnimationFrame(update);}else{hasCompletedRef.current=true;}};frameId=requestAnimationFrame(update);};const startDelayMs=Math.max(0,startDelaySeconds)*1e3;if(startDelayMs>0){timeoutId=setTimeout(()=>{startDecoding();},startDelayMs);}else{startDecoding();}return()=>{isCancelled=true;if(timeoutId!==null){clearTimeout(timeoutId);}if(frameId!==null){cancelAnimationFrame(frameId);}};},[text,speed,delayStart,startDelaySeconds,charsNum,charsSym,triggerMode,isInView,isStaticRenderer,clearDisplay]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{...styleContainer,...style,color:color,...font,whiteSpace:paragraphMode?\"pre-wrap\":\"nowrap\",textShadow:neonEnabled?`0 0 5px ${color}, 0 0 10px ${color}, 0 0 20px ${color}`:\"none\",position:\"relative\"},children:displayText});}const styleContainer={display:\"flex\",alignItems:\"flex-start\",justifyContent:\"flex-start\",whiteSpace:\"pre-wrap\",width:\"80%\",height:\"100%\",minWidth:5,minHeight:5};addPropertyControls(DecodingText,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"DECRYPTING...\",displayTextArea:true},numbersSet:{type:ControlType.String,title:\"Numbers\",defaultValue:\"0123456789\",placeholder:\"0123456789\"},symbolsSet:{type:ControlType.String,title:\"Symbols\",defaultValue:\"!@#$%^&*()_+-=[]{}|;':,./<>?\",placeholder:\"!@#$%^&*()_+-=[]{}|;':,./<>?\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#04db00\"},font:{type:ControlType.Font,title:\"Font\",defaultValue:{variant:\"Bold\",letterSpacing:\"0em\",lineHeight:\"1.2em\"},controls:\"extended\",defaultFontType:\"sans-serif\"},speed:{type:ControlType.Number,title:\"Flow Speed\",defaultValue:5,min:1,max:20,step:1,description:\"Letter spacing (the smaller, the faster it finishes)\"},delayStart:{type:ControlType.Number,title:\"Decode Delay (Frames)\",defaultValue:0,min:0,max:100},startDelaySeconds:{type:ControlType.Number,title:\"Start Delay\",defaultValue:0,min:0,max:10,step:.1,unit:\"s\"},paragraphMode:{type:ControlType.Boolean,title:\"Paragraph\",enabledTitle:\"On\",disabledTitle:\"Off\",defaultValue:true},triggerMode:{type:ControlType.Enum,title:\"Trigger\",defaultValue:\"onAppear\",options:[\"onAppear\",\"layerInView\"],optionTitles:[\"On Appear\",\"Layer In View\"],displaySegmentedControl:true},neonEnabled:{type:ControlType.Boolean,title:\"Neon Glow\",enabledTitle:\"On\",disabledTitle:\"Off\",defaultValue:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"DecodingText\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"50\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"200\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./DecodingText.map"],"mappings":"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"}