{"version":3,"file":"TextScramble.XAMKc8fK.mjs","names":["useRef","useState","useMemo","useCallback"],"sources":["https:/framerusercontent.com/modules/2OHKoUl23oTbgLlhbG5q/NOPyUDkuHeWmXFJIQxqj/TextScramble.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget,useIsStaticRenderer}from\"framer\";import{motion,useInView}from\"framer-motion\";import React,{useState,useEffect,useRef,useMemo,useCallback}from\"react\";const PRESETS={terminal:{textColor:\"#00FF41\",scrambleColor:\"#00CC33\",glowColor:\"#00FF41\",glowEnabled:true,glowIntensity:10},cipher:{textColor:\"#00FFFF\",scrambleColor:\"#0088AA\",glowColor:\"#00FFFF\",glowEnabled:true,glowIntensity:14},gold:{textColor:\"#FFD700\",scrambleColor:\"#CC9900\",glowColor:\"#FFAA00\",glowEnabled:true,glowIntensity:10},frost:{textColor:\"#E0EEFF\",scrambleColor:\"#8AB4E0\",glowColor:\"#A0C8FF\",glowEnabled:true,glowIntensity:8}};// =============================================================================\n// CHARACTER POOLS\n// =============================================================================\nconst CHAR_POOLS={mixed:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#$%&※░▒▓█◆◇○●\",letters:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\",numbers:\"0123456789\",binary:\"01\",symbols:\"@#$%&※░▒▓█◆◇○●□■△▲▽▼◁◀▷▶★☆\"};function getRandomChar(pool){return pool[Math.floor(Math.random()*pool.length)];}function shuffleIndices(length){const indices=Array.from({length},(_,i)=>i);for(let i=indices.length-1;i>0;i--){const j=Math.floor(Math.random()*(i+1));[indices[i],indices[j]]=[indices[j],indices[i]];}return indices;}const ScrambleChar=/*#__PURE__*/React.memo(({char,resolved,active,scrambleColor,textColor,glowEnabled,glowColor,glowIntensity,fontFamily,fontWeight,fontSize,isSpace,scramblePool,scrambleSpeed})=>{const[displayChar,setDisplayChar]=useState(char);const[charPhase,setCharPhase]=useState(\"inactive\");const[glowPhase,setGlowPhase]=useState(\"none\");const intervalRef=useRef(null);const settleChain=useRef([]);const glowTimer=useRef(null);const clearAll=useCallback(()=>{if(intervalRef.current){clearInterval(intervalRef.current);intervalRef.current=null;}settleChain.current.forEach(clearTimeout);settleChain.current=[];if(glowTimer.current){clearTimeout(glowTimer.current);glowTimer.current=null;}},[]);useEffect(()=>{if(isSpace)return;clearAll();if(resolved){// ── DECELERATION SETTLE ──────────────────────────────\nsetCharPhase(\"settling\");setGlowPhase(\"none\");const maxSteps=5+Math.floor(Math.random()*3);let step=0;const runSettle=()=>{step++;if(step>maxSteps){// Lock in final character\nsetCharPhase(\"resolved\");setDisplayChar(char);// Glow flash → steady\nif(glowEnabled){setGlowPhase(\"flash\");glowTimer.current=setTimeout(()=>setGlowPhase(\"steady\"),300);}return;}// Decelerating scramble\nsetDisplayChar(getRandomChar(scramblePool));const delay=35+step*step*10;const t=setTimeout(runSettle,delay);settleChain.current.push(t);};const start=setTimeout(runSettle,20);settleChain.current.push(start);}else if(active){// ── SCRAMBLING ────────────────────────────────────────\nsetCharPhase(\"scrambling\");setGlowPhase(\"none\");const ms=Math.max(30,80-scrambleSpeed*6);setDisplayChar(getRandomChar(scramblePool));intervalRef.current=setInterval(()=>{setDisplayChar(getRandomChar(scramblePool));},ms);}else{// ── INACTIVE ─────────────────────────────────────────\nsetCharPhase(\"inactive\");setGlowPhase(\"none\");setDisplayChar(char);}return clearAll;},[resolved,active,char,isSpace,scramblePool,scrambleSpeed,glowEnabled,clearAll]);if(isSpace){return /*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",width:fontSize*.3}});}// ── Derive visual properties from phase ──────────────────────\nconst color=charPhase===\"resolved\"?textColor:scrambleColor;const opacity=charPhase===\"inactive\"?0:charPhase===\"scrambling\"?.55:charPhase===\"settling\"?.75:1;const blur=charPhase===\"scrambling\"?\"blur(0.6px)\":charPhase===\"settling\"?\"blur(0.3px)\":\"none\";let textShadow=\"none\";if(glowEnabled&&glowPhase===\"flash\"){const fi=glowIntensity*3;textShadow=`0 0 ${fi}px ${glowColor}, 0 0 ${fi*2}px ${glowColor}80, 0 0 ${fi*3.5}px ${glowColor}30`;}else if(glowEnabled&&glowPhase===\"steady\"){textShadow=`0 0 ${glowIntensity}px ${glowColor}, 0 0 ${glowIntensity*2.5}px ${glowColor}50`;}return /*#__PURE__*/_jsx(motion.span,{style:{display:\"inline-block\",fontFamily,fontWeight:fontWeight,fontSize,lineHeight:1.2,letterSpacing:\"0.02em\",whiteSpace:\"pre\",color,opacity,filter:blur,textShadow,willChange:\"transform, opacity, filter\",minWidth:fontSize*.15,textAlign:\"center\",transition:\"color 0.15s ease-out, opacity 0.15s ease-out, filter 0.25s ease-out, text-shadow 0.15s ease-out\"},animate:charPhase===\"resolved\"?{y:[6,-3,1,0],scale:[.88,1.15,.97,1]}:charPhase===\"scrambling\"?{y:[0,-1,1,0]}:{y:0,scale:1},transition:charPhase===\"resolved\"?{y:{duration:.5,ease:[.175,.885,.32,1.275]},scale:{duration:.55,ease:[.175,.885,.32,1.275]}}:charPhase===\"scrambling\"?{y:{duration:1.5+Math.random()*.5,repeat:Infinity,repeatType:\"reverse\",ease:\"easeInOut\"}}:{duration:.2},children:displayChar});});const CursorSweep=/*#__PURE__*/React.memo(({progress,active,color,glowColor,glowEnabled,glowIntensity,fontSize,containerWidth})=>{if(!active||progress>=1)return null;return /*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:0,left:0,right:0,bottom:0,pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(motion.div,{initial:{opacity:0},animate:{opacity:[.5,1,.5],left:progress*containerWidth},transition:{left:{duration:.06,ease:\"linear\"},opacity:{duration:.8,repeat:Infinity,ease:\"easeInOut\"}},style:{position:\"absolute\",top:\"50%\",transform:\"translateY(-50%)\",width:2,height:fontSize*1.2,borderRadius:1,backgroundColor:color,boxShadow:glowEnabled?`0 0 ${glowIntensity}px ${glowColor}, 0 0 ${glowIntensity*2.5}px ${glowColor}50`:\"none\",zIndex:10}})});});// =============================================================================\n// MAIN COMPONENT\n// =============================================================================\n/**\n * Text Scramble\n *\n * @framerDisableUnlink\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 80\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n */export default function TextScramble(props){const{text=\"Hello World\",fontFamily:fontFamilyProp,fontSize=64,textAlign=\"center\",preset=\"frost\",colors={},glow={},animation={},hoverEffect=\"glow\",style}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const isStatic=useIsStaticRenderer();// ── Resolve preset vs custom ─────────────────────────────────────\nconst pv=preset!==\"custom\"?PRESETS[preset]:null;const textColor=pv?.textColor??colors.textColor??\"#FFFFFF\";const scrambleColor=pv?.scrambleColor??colors.scrambleColor??\"rgba(255,255,255,0.4)\";const glowColor=pv?.glowColor??colors.glowColor??\"#FFFFFF\";const glowEnabled=pv?.glowEnabled??glow.enabled??false;const glowIntensity=pv?.glowIntensity??glow.intensity??8;// Animation values\nconst trigger=animation.trigger??\"loop\";const scrambleSpeed=animation.scrambleSpeed??8;const staggerDelay=animation.staggerDelay??.06;const loopPause=animation.loopPause??4;const charPool=animation.charPool??\"mixed\";const customChars=animation.customChars??\"@#$%&\";const scramblePool=charPool===\"custom\"?customChars:CHAR_POOLS[charPool];// ── Font ──────────────────────────────────────────────────────────\nconst fontFamily=fontFamilyProp?.fontFamily?`${fontFamilyProp.fontFamily}, 'Inter', -apple-system, BlinkMacSystemFont, sans-serif`:\"'Inter', -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', sans-serif\";const fontWeight=fontFamilyProp?.fontWeight||600;// ── Refs & state ─────────────────────────────────────────────────\nconst containerRef=useRef(null);const isInView=useInView(containerRef,{once:false,amount:.4});const[isHovered,setIsHovered]=useState(false);const[resolvedSet,setResolvedSet]=useState(new Set);const[animationKey,setAnimationKey]=useState(0);const[isActive,setIsActive]=useState(false);const[containerWidth,setContainerWidth]=useState(0);const timerRefs=useRef([]);const characters=useMemo(()=>text.split(\"\"),[text]);const nonSpaceIndices=useMemo(()=>characters.map((c,i)=>c===\" \"?-1:i).filter(i=>i!==-1),[characters]);// Always LTR stagger — animationKey excluded since it doesn't affect the order\nconst staggerOrder=useMemo(()=>[...nonSpaceIndices],[nonSpaceIndices]);const resolveProgress=useMemo(()=>{if(nonSpaceIndices.length===0)return 0;return resolvedSet.size/nonSpaceIndices.length;},[resolvedSet.size,nonSpaceIndices.length]);// ── Measure container ────────────────────────────────────────────\nuseEffect(()=>{const el=containerRef.current;if(!el)return;const obs=new ResizeObserver(()=>setContainerWidth(el.offsetWidth));obs.observe(el);return()=>obs.disconnect();},[]);// ── Timer management ─────────────────────────────────────────────\nconst clearTimers=useCallback(()=>{timerRefs.current.forEach(clearTimeout);timerRefs.current=[];},[]);// ── Run resolve sequence ─────────────────────────────────────────\nconst runResolveSequence=useCallback(()=>{clearTimers();setResolvedSet(new Set);setIsActive(true);staggerOrder.forEach((charIndex,orderIndex)=>{const delay=orderIndex*staggerDelay*1e3;const timer=setTimeout(()=>{setResolvedSet(prev=>{const next=new Set(prev);next.add(charIndex);return next;});},delay);timerRefs.current.push(timer);});return staggerOrder.length*staggerDelay*1e3+500;},[staggerOrder,staggerDelay,clearTimers]);const resetAnimation=useCallback(()=>{clearTimers();setResolvedSet(new Set);setIsActive(false);},[clearTimers]);// ── Triggers ─────────────────────────────────────────────────\n// All triggers are gated by both isStatic and isInView so that\n// animations/timers are paused when offscreen or in static contexts.\nuseEffect(()=>{if(isStatic||trigger!==\"onView\")return;if(isInView)runResolveSequence();else resetAnimation();return clearTimers;},[isInView,trigger,isStatic,runResolveSequence,resetAnimation,clearTimers]);useEffect(()=>{if(isStatic||trigger!==\"onHover\")return;if(!isInView){resetAnimation();return;}if(isHovered)runResolveSequence();else resetAnimation();return clearTimers;},[isHovered,isInView,trigger,isStatic,runResolveSequence,resetAnimation,clearTimers]);useEffect(()=>{if(isStatic||trigger!==\"loop\")return;if(!isInView){resetAnimation();return clearTimers;}let cancelled=false;const loopCycle=()=>{if(cancelled)return;const totalDuration=runResolveSequence();const waitTimer=setTimeout(()=>{if(cancelled)return;resetAnimation();const restartTimer=setTimeout(()=>{if(cancelled)return;setAnimationKey(k=>k+1);loopCycle();},600);timerRefs.current.push(restartTimer);},totalDuration+loopPause*1e3);timerRefs.current.push(waitTimer);};loopCycle();return()=>{cancelled=true;clearTimers();};},[trigger,loopPause,isInView,isStatic,runResolveSequence,resetAnimation,clearTimers,animationKey]);// ── Alignment ────────────────────────────────────────────────────\nconst justifyContent=textAlign===\"left\"?\"flex-start\":textAlign===\"right\"?\"flex-end\":\"center\";// ── Hover effect ─────────────────────────────────────────────────\nconst hoverVariants=useMemo(()=>{switch(hoverEffect){case\"lift\":return{y:-4};case\"scale\":return{scale:1.05};case\"glow\":return{scale:1};default:return{};}},[hoverEffect]);// Glow hover CSS\nconst glowHoverStyle=useMemo(()=>{if(hoverEffect!==\"glow\"||!isHovered)return{};const gc=pv?.glowColor??glowColor;return{filter:`drop-shadow(0 0 12px ${gc}80) drop-shadow(0 0 24px ${gc}40)`,transition:\"filter 0.35s ease\"};},[hoverEffect,isHovered,glowColor,pv]);// ── Static / canvas preview ──────────────────────────────────────\nif(isStatic){const halfCount=Math.ceil(characters.length*.55);return /*#__PURE__*/_jsxs(\"div\",{style:{...style,display:\"flex\",flexWrap:\"wrap\",justifyContent,alignItems:\"center\",width:\"100%\",position:\"relative\",overflow:\"visible\"},children:[characters.map((char,i)=>{const isSpace=char===\" \";if(isSpace){return /*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",width:fontSize*.3}},i);}const isResolved=i<halfCount;const displayChar=isResolved?char:getRandomChar(scramblePool);return /*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",fontFamily,fontWeight:fontWeight,fontSize,lineHeight:1.2,letterSpacing:\"0.02em\",whiteSpace:\"pre\",color:isResolved?textColor:scrambleColor,opacity:isResolved?1:.45,filter:isResolved?\"none\":\"blur(0.6px)\",textShadow:isResolved&&glowEnabled?`0 0 ${glowIntensity}px ${glowColor}, 0 0 ${glowIntensity*2.5}px ${glowColor}50`:\"none\",minWidth:fontSize*.15,textAlign:\"center\"},children:displayChar},i);}),/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",left:\"55%\",top:\"50%\",width:2,height:fontSize*1.2,borderRadius:1,backgroundColor:textColor,transform:\"translateY(-50%)\",opacity:.7,boxShadow:glowEnabled?`0 0 ${glowIntensity}px ${glowColor}`:\"none\"}})]});}// ── Live render ──────────────────────────────────────────────────\nreturn /*#__PURE__*/_jsxs(motion.div,{ref:containerRef,onMouseEnter:()=>{if(trigger===\"onHover\")setIsHovered(true);if(hoverEffect===\"glow\")setIsHovered(true);},onMouseLeave:()=>{if(trigger===\"onHover\")setIsHovered(false);if(hoverEffect===\"glow\")setIsHovered(false);},whileHover:hoverEffect!==\"none\"?hoverVariants:undefined,transition:{duration:.35,ease:[.22,1,.36,1]},style:{...style,display:\"flex\",flexWrap:\"wrap\",justifyContent,alignItems:\"center\",width:\"100%\",cursor:trigger===\"onHover\"||hoverEffect!==\"none\"?\"pointer\":\"default\",isolation:\"isolate\",position:\"relative\",overflow:\"visible\",...glowHoverStyle},children:[characters.map((char,i)=>{const isSpace=char===\" \";return /*#__PURE__*/_jsx(ScrambleChar,{char:char,resolved:resolvedSet.has(i),active:isActive,scrambleColor:scrambleColor,textColor:textColor,glowEnabled:glowEnabled,glowColor:glowColor,glowIntensity:glowIntensity,fontFamily:fontFamily,fontWeight:fontWeight,fontSize:fontSize,isSpace:isSpace,scramblePool:scramblePool,scrambleSpeed:scrambleSpeed},`${animationKey}-${i}`);}),/*#__PURE__*/_jsx(CursorSweep,{progress:resolveProgress,active:isActive&&resolveProgress<1,color:textColor,glowColor:glowColor,glowEnabled:glowEnabled,glowIntensity:glowIntensity,fontSize:fontSize,containerWidth:containerWidth})]});}TextScramble.displayName=\"Text Scramble\";// =============================================================================\n// DEFAULT PROPS\n// =============================================================================\nTextScramble.defaultProps={text:\"Hello World\",fontSize:64,textAlign:\"center\",preset:\"frost\",colors:{textColor:\"#FFFFFF\",scrambleColor:\"rgba(255,255,255,0.4)\",glowColor:\"#FFFFFF\"},glow:{enabled:false,intensity:8},animation:{trigger:\"loop\",scrambleSpeed:8,staggerDelay:.06,loopPause:4,charPool:\"mixed\",customChars:\"@#$%&\"},hoverEffect:\"glow\"};// =============================================================================\n// PROPERTY CONTROLS\n// =============================================================================\naddPropertyControls(TextScramble,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"Hello World\",displayTextArea:true},fontFamily:{type:ControlType.Font,title:\"Font\",controls:\"basic\"},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:64,min:16,max:200,step:2,unit:\"px\",displayStepper:true},textAlign:{type:ControlType.Enum,title:\"Alignment\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"center\",displaySegmentedControl:true,description:\" \"},preset:{type:ControlType.Enum,title:\"Preset\",options:[\"custom\",\"terminal\",\"cipher\",\"gold\",\"frost\"],optionTitles:[\"Custom\",\"💻 Terminal\",\"🔐 Cipher\",\"🥇 Gold\",\"❄️ Frost\"],defaultValue:\"frost\",description:\"Choose a preset or customize below\"},colors:{type:ControlType.Object,title:\"Colors\",icon:\"color\",controls:{textColor:{type:ControlType.Color,title:\"Text\",defaultValue:\"#FFFFFF\"},scrambleColor:{type:ControlType.Color,title:\"Scramble\",defaultValue:\"rgba(255,255,255,0.4)\"},glowColor:{type:ControlType.Color,title:\"Glow\",defaultValue:\"#FFFFFF\"}},hidden:props=>props.preset!==\"custom\"},glow:{type:ControlType.Object,title:\"Glow\",icon:\"effect\",controls:{enabled:{type:ControlType.Boolean,title:\"Enabled\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},intensity:{type:ControlType.Number,title:\"Intensity\",defaultValue:8,min:2,max:40,step:1,unit:\"px\",description:\"Radius of the glow effect\"}},hidden:props=>props.preset!==\"custom\",description:\" \"},animation:{type:ControlType.Object,title:\"Animation\",icon:\"effect\",controls:{trigger:{type:ControlType.Enum,title:\"Trigger\",options:[\"onView\",\"onHover\",\"loop\"],optionTitles:[\"On View\",\"On Hover\",\"Loop\"],defaultValue:\"loop\",description:\"When to start the scramble animation\"},scrambleSpeed:{type:ControlType.Number,title:\"Speed\",defaultValue:8,min:1,max:10,step:1,description:\"How fast characters cycle\"},staggerDelay:{type:ControlType.Number,title:\"Stagger\",defaultValue:.06,min:.02,max:.3,step:.01,unit:\"s\",description:\"Delay between each letter resolving\"},loopPause:{type:ControlType.Number,title:\"Loop Pause\",defaultValue:4,min:.5,max:10,step:.5,unit:\"s\",displayStepper:true,hidden:props=>props.trigger!==\"loop\",description:\"Pause between loop cycles\"},charPool:{type:ControlType.Enum,title:\"Characters\",options:[\"mixed\",\"letters\",\"numbers\",\"binary\",\"symbols\",\"custom\"],optionTitles:[\"Mixed\",\"Letters\",\"Numbers\",\"Binary\",\"Symbols\",\"Custom\"],defaultValue:\"mixed\",description:\"Which characters appear during scramble\"},customChars:{type:ControlType.String,title:\"Custom Chars\",defaultValue:\"@#$%&\",hidden:props=>props.charPool!==\"custom\",description:\"Your own characters to cycle through\"}},description:\" \"},hoverEffect:{type:ControlType.Enum,title:\"Hover Effect\",options:[\"none\",\"glow\",\"lift\",\"scale\"],optionTitles:[\"None\",\"Glow\",\"Lift\",\"Scale\"],defaultValue:\"glow\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TextScramble\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"* @framerIntrinsicWidth 400\",\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"any\",\"framerIntrinsicHeight\":\"80\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextScramble.map"],"mappings":"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"}