{"version":3,"file":"MatrixDecodeWord.wScOgZKT.mjs","names":["React.useRef","React.useState","React.useMemo","React.useCallback"],"sources":["https:/framerusercontent.com/modules/jQYCdTtgOrujtbNf8LAO/Bty4ZZRkTrtjQs2sdsQh/MatrixDecodeWord.js"],"sourcesContent":["// MatrixWord.tsx\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";const DEFAULT_CHARSET=\"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";export default function MatrixWord({text=\"BUREAU OF PROPAGANDA\",charset=DEFAULT_CHARSET,durationMs=1400,tickMs=40,trigger=\"instant\",loop=false,fontSize=40,fontFamily=\"system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",fontWeight=\"600\",letterSpacing=0,lineHeight=1.2,color=\"#111111\",align=\"center\"}){const rootRef=React.useRef(null);const[elapsed,setElapsed]=React.useState(0);const[running,setRunning]=React.useState(false);const hasPlayedOnceRef=React.useRef(false);const timerRef=React.useRef(null);const targetChars=React.useMemo(()=>Array.from(text),[text]);const totalChars=targetChars.length||1;const startAnimation=React.useCallback(()=>{if(timerRef.current!=null){window.clearInterval(timerRef.current);timerRef.current=null;}setRunning(true);setElapsed(0);const startTime=performance.now();timerRef.current=window.setInterval(()=>{const now=performance.now();const nextElapsed=now-startTime;if(nextElapsed>=durationMs){if(loop){// Restart loop\nsetElapsed(0);}else{setElapsed(durationMs);setRunning(false);if(timerRef.current!=null){window.clearInterval(timerRef.current);timerRef.current=null;}hasPlayedOnceRef.current=true;}}else{setElapsed(nextElapsed);}},tickMs);},[durationMs,tickMs,loop]);// Trigger: instant\nReact.useEffect(()=>{if(trigger===\"instant\"){startAnimation();}return()=>{if(timerRef.current!=null){window.clearInterval(timerRef.current);}};},[trigger,startAnimation]);// Trigger: on view\nReact.useEffect(()=>{if(trigger!==\"onView\")return;const el=rootRef.current;if(!el)return;const observer=new IntersectionObserver(entries=>{entries.forEach(entry=>{if(entry.isIntersecting){if(!loop&&hasPlayedOnceRef.current)return;startAnimation();}});},{threshold:.4});observer.observe(el);return()=>{observer.disconnect();};},[trigger,loop,startAnimation]);// Trigger: hover\nconst handleMouseEnter=React.useCallback(()=>{if(trigger!==\"hover\")return;if(!loop&&hasPlayedOnceRef.current)return;startAnimation();},[trigger,loop,startAnimation]);// Compute displayed characters – KEEP LENGTH CONSTANT\nconst displayed=React.useMemo(()=>{// If we’re not running anymore and the animation finished, just show real text\nif(!running&&elapsed>=durationMs){return text;}const chars=[];for(let i=0;i<totalChars;i++){const target=targetChars[i]??\"\";if(target===\"\\n\"){chars.push(\"\\n\");continue;}// Each character has its own reveal time across the duration\nconst revealAt=i/totalChars*durationMs;const isRevealed=elapsed>=revealAt;if(isRevealed){chars.push(target);}else{// Keep spaces as spaces so layout width stays consistent\nif(target===\" \"){chars.push(\" \");}else{const pool=charset&&charset.length>0?charset:DEFAULT_CHARSET;const r=Math.floor(Math.random()*pool.length);chars.push(pool[r]);}}}return chars.join(\"\");},[targetChars,totalChars,elapsed,durationMs,running,charset,text]);// Alignment mapping for the outer flex container\nconst justify=align===\"left\"?\"flex-start\":align===\"right\"?\"flex-end\":\"center\";return /*#__PURE__*/_jsx(\"div\",{ref:rootRef,style:{width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:justify,overflow:\"hidden\"},onMouseEnter:handleMouseEnter,children:/*#__PURE__*/_jsx(\"div\",{style:{fontFamily,fontSize,fontWeight,letterSpacing,lineHeight,color,textAlign:align,whiteSpace:\"pre-wrap\"},children:displayed})});}/* ---- Framer controls ---- */addPropertyControls(MatrixWord,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"BUREAU OF PROPAGANDA\",displayTextArea:true},charset:{type:ControlType.String,title:\"Charset\",defaultValue:DEFAULT_CHARSET},durationMs:{type:ControlType.Number,title:\"Duration (ms)\",min:200,max:5e3,step:50,defaultValue:1400},tickMs:{type:ControlType.Number,title:\"Glitch Speed (ms)\",min:10,max:200,step:5,defaultValue:40},trigger:{type:ControlType.Enum,title:\"Trigger\",options:[\"instant\",\"onView\",\"hover\"],optionTitles:[\"Instant\",\"On View\",\"Hover\"],defaultValue:\"instant\"},loop:{type:ControlType.Boolean,title:\"Loop\",defaultValue:false},fontSize:{type:ControlType.Number,title:\"Font Size\",min:8,max:120,step:1,defaultValue:40},fontFamily:{type:ControlType.String,title:\"Font Family\",defaultValue:\"system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\"},fontWeight:{type:ControlType.Enum,title:\"Weight\",options:[\"400\",\"500\",\"600\",\"700\",\"800\"],optionTitles:[\"400\",\"500\",\"600\",\"700\",\"800\"],defaultValue:\"600\"},letterSpacing:{type:ControlType.Number,title:\"Letter Spacing\",min:-.1,max:.5,step:.01,defaultValue:0},lineHeight:{type:ControlType.Number,title:\"Line Height\",min:.8,max:2,step:.05,defaultValue:1.2},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#111111\"},align:{type:ControlType.SegmentedEnum,title:\"Align\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"center\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"MatrixWord\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MatrixDecodeWord.map"],"mappings":"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"}