{"version":3,"file":"TextDecode.CDyNPxo7.mjs","names":["useRef"],"sources":["https:/framerusercontent.com/modules/StkOj1OnMCOA56rCjXzl/bPH5xgxzqKE6NtASjfpg/TextDecode.js"],"sourcesContent":["/**\n * TextDecode override\n * Apply it to a text layer such as the hero headline. The text starts as\n * scrambled characters and resolves letter by letter from left to right in\n * about 1.1 seconds. It runs when the layer first comes into view and again on\n * every \"paper:click\" event. Nothing animates when reduced motion is requested.\n */import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,forwardRef}from\"react\";const GLYPHS=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789#%&/=+*\";export function withTextDecode(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const wrap=useRef(null);useEffect(()=>{const root=wrap.current;if(!root)return;if(window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches)return;const walker=document.createTreeWalker(root,NodeFilter.SHOW_TEXT);const nodes=[];let cur;while(cur=walker.nextNode()){const s=cur.data;if(s.trim().length)nodes.push({n:cur,s});}if(!nodes.length)return;const total=nodes.reduce((a,b)=>a+b.s.length,0);let raf=0,busy=false;const run=()=>{if(busy)return;busy=true;const t0=performance.now();const dur=1100;const tick=now=>{const p=Math.min(1,(now-t0)/dur);let idx=0;for(const{n,s}of nodes){let out=\"\";for(let i=0;i<s.length;i++,idx++){const ch=s[i];if(ch===\" \"||ch===\"\\n\"){out+=ch;continue;}const local=idx/total;const reveal=p*1.25-local*.25;if(reveal>=1)out+=ch;else if(reveal<=0)out+=GLYPHS[(i*7+Math.floor(now/60))%GLYPHS.length];else out+=Math.random()<reveal?ch:GLYPHS[Math.floor(Math.random()*GLYPHS.length)];}if(n.data!==out)n.data=out;}if(p<1)raf=requestAnimationFrame(tick);else{for(const{n,s}of nodes)n.data=s;busy=false;}};raf=requestAnimationFrame(tick);};let seen=false;const io=new IntersectionObserver(es=>{if(es[0].isIntersecting&&!seen){seen=true;run();}},{threshold:.2});io.observe(root);const onKlick=()=>{const b=root.getBoundingClientRect();if(b.bottom>0&&b.top<window.innerHeight)run();};window.addEventListener(\"paper:click\",onKlick);return()=>{cancelAnimationFrame(raf);io.disconnect();window.removeEventListener(\"paper:click\",onKlick);for(const{n,s}of nodes)n.data=s;};},[]);return /*#__PURE__*/_jsx(\"div\",{ref:wrap,style:{display:\"contents\"},children:/*#__PURE__*/_jsx(Component,{ref:ref,...props})});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withTextDecode\":{\"type\":\"reactHoc\",\"name\":\"withTextDecode\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextDecode.map"],"mappings":"8IAMkL,SAAgB,EAAe,EAAU,CAAC,OAAoB,GAAY,EAAM,IAAM,CAAC,IAAM,EAAKA,EAAO,IAAI,EAAu9C,OAAr9C,MAAc,CAAC,IAAM,EAAK,EAAK,QAAwB,GAAb,CAAC,GAAe,EAAO,YAAY,EAAO,WAAW,kCAAkC,CAAC,CAAC,QAAQ,OAAO,IAAM,EAAO,SAAS,iBAAiB,EAAK,WAAW,SAAS,EAAQ,EAAM,CAAC,EAAM,EAAI,KAAM,EAAI,EAAO,SAAS,GAAE,CAAC,IAAM,EAAE,EAAI,KAAQ,EAAE,KAAK,CAAC,CAAC,QAAO,EAAM,KAAK,CAAC,EAAE,EAAI,GAAC,CAAC,CAAE,CAAC,GAAG,CAAC,EAAM,OAAO,OAAO,IAAM,EAAM,EAAM,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,EAAM,EAAI,EAAE,EAAK,GAAY,MAAQ,CAAC,GAAG,EAAK,OAAO,EAAK,GAAK,IAAM,EAAG,YAAY,IAAI,EAAuB,EAAK,GAAK,CAAC,IAAM,EAAE,KAAK,IAAI,GAAG,EAAI,GAAI,IAAG,EAAM,EAAI,EAAE,IAAI,GAAK,CAAC,IAAE,OAAK,EAAM,CAAC,IAAI,EAAI,GAAG,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,IAAI,IAAM,CAAC,IAAM,EAAG,EAAE,GAAG,GAAG,IAAK,KAAK,IAAK;EAAK,CAAC,GAAK,EAAG,QAAS,CAAC,IAAM,EAAM,EAAI,EAAY,EAAO,EAAE,KAAK,EAAM,IAAO,GAAQ,EAAE,GAAK,EAAW,GAAQ,EAAE,GAAK,GAAQ,EAAE,EAAE,KAAK,MAAM,EAAI,EAAE,GAAG,IAAoB,GAAK,KAAK,OAAO,EAAE,EAAO,EAAG,EAAO,KAAK,MAAM,KAAK,OAAO,EAAE,EAAa,EAAG,CAAI,EAAE,OAAO,IAAI,EAAE,KAAK,EAAI,CAAC,GAAG,EAAE,EAAE,EAAI,sBAAsB,CAAI,MAAM,CAAC,IAAI,GAAK,CAAC,IAAE,OAAK,EAAM,EAAE,KAAK,EAAE,EAAK,EAAM,CAAC,EAAE,EAAI,sBAAsB,CAAI,CAAE,EAAM,EAAK,GAAY,EAAG,IAAI,qBAAqB,GAAI,CAAI,EAAG,EAAE,CAAC,gBAAgB,CAAC,IAAM,EAAK,GAAK,EAAI,EAAG,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,EAAG,QAAQ,CAAI,EAAE,IAAM,MAAY,CAAC,IAAM,EAAE,EAAK,sBAAsB,EAAK,EAAE,OAAO,GAAG,EAAE,IAAI,EAAO,aAAY,EAAI,CAAE,EAAiD,OAA/C,EAAO,iBAAiB,cAAc,CAAO,MAAY,CAAC,qBAAqB,CAAG,EAAE,EAAG,WAAW,EAAE,EAAO,oBAAoB,cAAc,CAAO,EAAE,IAAI,GAAK,CAAC,IAAE,OAAK,EAAM,EAAE,KAAK,CAAE,CAAE,EAAE,CAAC,CAAC,EAAsB,EAAK,MAAM,CAAC,IAAI,EAAK,MAAM,CAAC,QAAQ,UAAU,EAAE,SAAsB,EAAK,EAAU,CAAK,MAAI,GAAG,CAAK,CAAC,CAAC,CAAC,CAAE,CAAC,CAAE,uBAA30D,IAA+C,EAAO,EAAO"}