{"version":3,"file":"ScrollSmokeTextOverride.BE3QLIHi.mjs","names":["useRef","useCallback"],"sources":["https:/framerusercontent.com/modules/QUKZWIGvakL4WKXFruJK/MtZpaBuKp7F9unL0l5RW/ScrollSmokeTextOverride.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef,useCallback,useEffect,useRef}from\"react\";import{useIsStaticRenderer}from\"framer\";const clamp=(value,min,max)=>Math.min(Math.max(value,min),max);const assignRef=(ref,value)=>{if(typeof ref===\"function\"){ref(value);return;}if(ref&&typeof ref===\"object\"){ref.current=value;}};export function withScrollSmokeText(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const localRef=useRef(null);const rafIdRef=useRef(null);const charElementsRef=useRef([]);const originalHtmlRef=useRef(null);const isWrappedRef=useRef(false);const observerRef=useRef(null);const needsWrapRef=useRef(true);const isStatic=useIsStaticRenderer();const{startOffset=.9,endOffset=.25,maxBlur=16,yOffset=28,startScale=.97,staggerAmount=.35,style,...restProps}=props;const wrapCharacters=useCallback(()=>{const root=localRef.current;if(!root||typeof document===\"undefined\")return;if(!needsWrapRef.current&&isWrappedRef.current)return;observerRef.current?.disconnect();if(!originalHtmlRef.current){originalHtmlRef.current=root.innerHTML;}else if(isWrappedRef.current){root.innerHTML=originalHtmlRef.current;}const walker=document.createTreeWalker(root,NodeFilter.SHOW_TEXT);const textNodes=[];let currentNode=walker.nextNode();while(currentNode){const textNode=currentNode;if(textNode.nodeValue&&textNode.nodeValue.length>0){textNodes.push(textNode);}currentNode=walker.nextNode();}const chars=[];for(const textNode of textNodes){const value=textNode.nodeValue??\"\";const fragment=document.createDocumentFragment();for(const char of Array.from(value)){if(char===\"\\n\"||char===\"\\r\"){fragment.appendChild(document.createTextNode(char));continue;}const span=document.createElement(\"span\");span.setAttribute(\"data-smoke-char\",\"1\");span.style.display=\"inline-block\";span.style.whiteSpace=\"pre\";span.style.willChange=\"filter, opacity, transform\";span.textContent=char;fragment.appendChild(span);chars.push(span);}textNode.parentNode?.replaceChild(fragment,textNode);}charElementsRef.current=chars;isWrappedRef.current=true;needsWrapRef.current=false;observerRef.current?.observe(root,{childList:true,characterData:true,subtree:true});},[]);const applyProgressToChars=useCallback(progress=>{const chars=charElementsRef.current;const total=chars.length;if(total===0)return;const clampedStagger=clamp(staggerAmount,0,.95);const step=total>1?clampedStagger/(total-1):0;const revealRange=Math.max(1e-4,1-clampedStagger);for(let index=0;index<total;index++){const el=chars[index];const localProgress=clamp((progress-index*step)/revealRange,0,1);const blur=(1-localProgress)*maxBlur;const translateY=(1-localProgress)*yOffset;const scale=startScale+(1-startScale)*localProgress;el.style.opacity=localProgress.toFixed(4);el.style.filter=`blur(${blur.toFixed(2)}px)`;el.style.transform=`translateY(${translateY.toFixed(2)}px) scale(${scale.toFixed(4)})`;}},[maxBlur,staggerAmount,startScale,yOffset]);const updateProgress=useCallback(()=>{if(typeof window===\"undefined\"||!localRef.current)return;wrapCharacters();const rect=localRef.current.getBoundingClientRect();const viewportHeight=window.innerHeight||1;const range=viewportHeight*Math.max(1e-4,startOffset-endOffset);const rawProgress=(viewportHeight*startOffset-rect.top)/range;const next=clamp(rawProgress,0,1);applyProgressToChars(next);rafIdRef.current=null;},[applyProgressToChars,endOffset,startOffset,wrapCharacters]);const scheduleUpdate=useCallback(()=>{if(typeof window===\"undefined\")return;if(rafIdRef.current!==null)return;rafIdRef.current=window.requestAnimationFrame(updateProgress);},[updateProgress]);useEffect(()=>{if(isStatic)return;if(typeof window===\"undefined\")return;observerRef.current=new MutationObserver(()=>{needsWrapRef.current=true;scheduleUpdate();});scheduleUpdate();window.addEventListener(\"scroll\",scheduleUpdate,{passive:true});window.addEventListener(\"resize\",scheduleUpdate);return()=>{observerRef.current?.disconnect();observerRef.current=null;window.removeEventListener(\"scroll\",scheduleUpdate);window.removeEventListener(\"resize\",scheduleUpdate);if(rafIdRef.current!==null){window.cancelAnimationFrame(rafIdRef.current);rafIdRef.current=null;}if(localRef.current&&originalHtmlRef.current){localRef.current.innerHTML=originalHtmlRef.current;}charElementsRef.current=[];isWrappedRef.current=false;needsWrapRef.current=true;};},[isStatic,scheduleUpdate]);const setRefs=useCallback(node=>{localRef.current=node;assignRef(ref,node);},[ref]);return /*#__PURE__*/_jsx(Component,{ref:setRefs,...restProps,style:style});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withScrollSmokeText\":{\"type\":\"reactHoc\",\"name\":\"withScrollSmokeText\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ScrollSmokeTextOverride.map"],"mappings":"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"}