{"version":3,"file":"EncodingText.vIPUmFPL.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/d6GY2ZbVrUbdkp8NoRQ2/i1IbjJfKMbmXudHL7lts/EncodingText.js"],"sourcesContent":["// Matrix/hacker-style encoding text animation component\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useState,useRef,startTransition}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function EncodingText(props){const{text=\"HELLO WORLD\",duration=2e3,font,textColor,encodingColor,autoPlay=true,loop=false,characters=\"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$%&*\",delay=0,enableSound=false,soundVolume=.3,soundType=\"beep\"}=props;const[displayText,setDisplayText]=useState(text);const[isAnimating,setIsAnimating]=useState(false);const intervalRef=useRef(null);const timeoutRef=useRef(null);const audioContextRef=useRef(null);const getRandomChar=()=>{return characters[Math.floor(Math.random()*characters.length)];};const playSound=()=>{if(!enableSound||typeof window===\"undefined\")return;try{if(!audioContextRef.current){audioContextRef.current=new(window.AudioContext||window.webkitAudioContext);}const ctx=audioContextRef.current;const oscillator=ctx.createOscillator();const gainNode=ctx.createGain();oscillator.connect(gainNode);gainNode.connect(ctx.destination);// Configure sound based on type\nswitch(soundType){case\"beep\":oscillator.frequency.value=800;oscillator.type=\"sine\";gainNode.gain.setValueAtTime(soundVolume,ctx.currentTime);gainNode.gain.exponentialRampToValueAtTime(.01,ctx.currentTime+.05);break;case\"click\":oscillator.frequency.value=1200;oscillator.type=\"square\";gainNode.gain.setValueAtTime(soundVolume,ctx.currentTime);gainNode.gain.exponentialRampToValueAtTime(.01,ctx.currentTime+.02);break;case\"static\":oscillator.frequency.value=400;oscillator.type=\"sawtooth\";gainNode.gain.setValueAtTime(soundVolume*.5,ctx.currentTime);gainNode.gain.exponentialRampToValueAtTime(.01,ctx.currentTime+.03);break;}oscillator.start(ctx.currentTime);oscillator.stop(ctx.currentTime+.1);}catch(error){console.warn(\"Audio playback failed:\",error);}};const animate=()=>{if(isAnimating)return;startTransition(()=>setIsAnimating(true));const chars=text.split(\"\");const iterations=Math.floor(duration/50);let currentIteration=0;if(intervalRef.current)clearInterval(intervalRef.current);intervalRef.current=window.setInterval(()=>{currentIteration++;const progress=currentIteration/iterations;const newText=chars.map((char,index)=>{const charProgress=(index+1)/chars.length;if(progress>=charProgress){return char;}if(char===\" \")return\" \";return getRandomChar();}).join(\"\");startTransition(()=>setDisplayText(newText));// Play sound on each iteration\nif(enableSound){playSound();}if(currentIteration>=iterations){if(intervalRef.current)clearInterval(intervalRef.current);startTransition(()=>{setDisplayText(text);setIsAnimating(false);});if(loop){timeoutRef.current=window.setTimeout(()=>{animate();},1e3);}}},50);};useEffect(()=>{if(autoPlay){const timeout=window.setTimeout(()=>{animate();},delay);return()=>clearTimeout(timeout);}},[]);useEffect(()=>{startTransition(()=>setDisplayText(text));},[text]);useEffect(()=>{return()=>{if(intervalRef.current)clearInterval(intervalRef.current);if(timeoutRef.current)clearTimeout(timeoutRef.current);if(audioContextRef.current){audioContextRef.current.close();}};},[]);const handleClick=()=>{if(!autoPlay&&!isAnimating){animate();}};const currentColor=isAnimating?encodingColor:textColor;return /*#__PURE__*/_jsx(\"div\",{style:{...props.style,position:\"relative\",display:\"inline-block\",cursor:!autoPlay?\"pointer\":\"default\"},onClick:handleClick,children:/*#__PURE__*/_jsx(\"span\",{style:{...font,color:currentColor,transition:\"color 0.3s ease\",whiteSpace:\"pre\",fontVariantLigatures:\"none\",fontFeatureSettings:\"'liga' 0\",display:\"inline-block\"},children:displayText})});}addPropertyControls(EncodingText,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"HELLO WORLD\"},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:2e3,min:500,max:5e3,step:100,unit:\"ms\"},delay:{type:ControlType.Number,title:\"Delay\",defaultValue:0,min:0,max:1e4,step:100,unit:\"ms\"},autoPlay:{type:ControlType.Boolean,title:\"Auto Play\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},loop:{type:ControlType.Boolean,title:\"Loop\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#000000\"},encodingColor:{type:ControlType.Color,title:\"Encoding Color\",defaultValue:\"#00FF00\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"40px\",variant:\"Bold\",letterSpacing:\"-0.02em\",lineHeight:\"1em\"}},characters:{type:ControlType.String,title:\"Characters\",defaultValue:\"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$%&*\",displayTextArea:true},enableSound:{type:ControlType.Boolean,title:\"Enable Sound\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},soundType:{type:ControlType.Enum,title:\"Sound Type\",options:[\"beep\",\"click\",\"static\"],optionTitles:[\"Beep\",\"Click\",\"Static\"],defaultValue:\"beep\",hidden:({enableSound})=>!enableSound},soundVolume:{type:ControlType.Number,title:\"Volume\",defaultValue:.3,min:0,max:1,step:.1,hidden:({enableSound})=>!enableSound}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"EncodingText\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"auto\",\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./EncodingText.map"],"mappings":"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"}