{"version":3,"file":"TextAnimator.DsjVTQA6.mjs","names":["useMemo","useRef","useState","useLayoutEffect","useEffect","__esmMin","init_ssg_sandbox_shims","j","init_npm_react_18_3_1","window","pe","le","z","_e","de","p","K","c","init_jsx_runtime","ce","animate","init_framer_motion_DhsWWWsN","RenderTarget","addPropertyControls","ControlType","init_framer_BWFVvmND","useIsStaticRenderer","lerp","from","to","solveCubicBezier","x","u","i","xu","x1","x2","dxu","y1","y2","easingFnFromTransition","ease","transition","NAMED_EASINGS","computeDelay","n","last","direction","stagger","center","refreshViewport","onReducedMotionChange","addGlobalListeners","reducedMotionMql","removeGlobalListeners","resolveSectionEl","raw","scrollSectionRef","el","resolveUnit","unit","value","refPx","cachedVW","cachedVH","viewportFraction","position","getScrollProgress","rect","vpY","vpFraction","range","doc","remainingScroll","pAtEnd","parseColor","input","str","cached","colorParseCache","rgba","varMatch","m","parts","v","colorParseCtx","norm","rgbaString","mixColors","a","b","alpha","ensureNaturalColor","nat","naturalColors","resolveAnimState","uniformScale","applyWordStyle","fromX","y","fromY","sX","f","t","sY","rX","rY","rZ","skX","skY","opacity","blur","tf","word","applyInitialStyle","xVal","offset","xUnit","yVal","yUnit","display","transformOrigin","span","hasDirectText","children","findTextElements","candidates","root","TEXT_CANDIDATE_SELECTOR","node","fallback","walker","set","topLevel","parent","pos","combineSplitHandles","handles","lines","words","chars","masks","handle","getSplitTextPlugin","g","win","ensureSplitTextLoaded","plugin","splitTextLoadPromise","done","loaded","resolve","reject","onError","existing","script","SPLIT_TEXT_CDN_URL","splitWithGSAP","applySplitStyles","split","mode","units","computedAlign","element","firstLineIndent","animStateRef","overflow","isLine","onSplitApplied","didOnSplit","options","self","replaceElementTag","newEl","newTag","attr","wrapElement","applyOverflow","container","mask","getAnimTargets","sectionEl","snapToFinal","makeCompletionSnap","w","resetAllToFrom","needW","needH","runStaggeredAnimation","baseDelay","delays","maxDelay","lastIndex","staggerDirection","ctrls","fx","fy","ctrl","unitDur","onAllComplete","fxArr","fyArr","easeFn","prevEased","totalTime","mp","localP","eased","ensureFillStyles","FILL_STYLES_ID","style","FILL_CSS","Placeholder","TextAnimator","props","fromRaw","animation","DEFAULT_ANIM_STATE_RAW","toRaw","perspective","fromKey","toKey","offsetKey","transitionKey","dur","containerRef","sourceRef","splitTextRef","splitRetryTimeoutRef","splitRevisionRafRef","splitRetryAttemptsRef","isResizingRef","scrollSection","setSectionEl","trigger","rafId","poll","isClient","setIsClient","isProcessed","setIsProcessed","srText","setSrText","splitRevision","setSplitRevision","sourceRev","setSourceRev","isStatic","isCanvas","useIsomorphicLayoutEffect","source","animateBy","animationMode","textAlign","textWrap","textIndent","htmlTag","preview","cancelled","rafA","rafB","queueSplitRevisionBump","RESPLIT_DEBOUNCE_MS","scheduleSplitRetry","SPLIT_RETRY_MAX_ATTEMPTS","attempt","delay","SPLIT_RETRY_MAX_MS","SPLIT_RETRY_BASE_MS","applyTextOverrides","els","process","textElements","unitCount","CHARACTER_UNITS_WARN_THRESHOLD","hasWarnedLargeCharacterSplit","textLayer","mo","targets","prefersReducedMotion","MIN_UNIT_DURATION","tr","appearDelay","controls","vpFrac","viewport","playing","hasCrossed","triggerEl","play","reset","isVisible","io","replay","initRect","entry","check","onScroll","tick","recomputeOffsets","totalDuration","elWidths","elHeights","fromXArr","fromYArr","computeOffsets","willChangeCleared","scrollP","gateActive","onResize","gateIO","pauseBetween","PREVIEW_LOOP_PAUSE_S","d","timeoutId","runLoop","markers","markerContainer","makeLine","line","color","lbl","side","label","vpLine","startLine","endLine","markersRafId","update","scheduleUpdate","resizeObserver","showPlaceholder","child","backOutEase","backInEase","globalListenerRefs","animStateControls","init_TextAnimator"],"sources":["https:/framerusercontent.com/modules/lWFUjlOVgMTJwM5wMIKZ/YZFoOgUc6YdNHYboDlTp/TextAnimator.js"],"sourcesContent":["// © 2026 Ludovic Losco — https://www.framer.com/@ludovic-losco/\n// This component is licensed exclusively for use within this template.\n// It may not be copied, extracted, modified, redistributed, or resold\n// — whether standalone or as part of another project or template.\n// Unauthorized use constitutes a license violation.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{useRef,useEffect,useLayoutEffect,useState,useMemo}from\"react\";import{addPropertyControls,ControlType,RenderTarget,useIsStaticRenderer}from\"framer\";import{animate}from\"framer-motion\";// — TUNING CONSTANTS —\n// SSR-safe layout effect (avoids React's useLayoutEffect server warning).\nconst useIsomorphicLayoutEffect=typeof window!==\"undefined\"?useLayoutEffect:useEffect;const MIN_UNIT_DURATION=.05// seconds — floor for per-unit tweens\n;const RESPLIT_DEBOUNCE_MS=200// debounce for autoSplit revision bumps\n;const PREVIEW_LOOP_PAUSE_S=.8// pause between canvas preview loops\n;const SPLIT_RETRY_MAX_ATTEMPTS=4;const SPLIT_RETRY_BASE_MS=500// doubles each attempt\n;const SPLIT_RETRY_MAX_MS=8e3;// — MATH —\nfunction lerp(from,to,p){return from+(to-from)*p;}function solveCubicBezier(x1,y1,x2,y2){return x=>{if(x<=0)return 0;if(x>=1)return 1;let u=x;for(let i=0;i<8;i++){const xu=3*(1-u)*(1-u)*u*x1+3*(1-u)*u*u*x2+u*u*u-x;const dxu=3*(1-u)*(1-u)*x1+6*(1-u)*u*(x2-x1)+3*u*u*(1-x2);if(Math.abs(dxu)<1e-6)break;u-=xu/dxu;u=Math.max(0,Math.min(1,u));}return 3*(1-u)*(1-u)*u*y1+3*(1-u)*u*u*y2+u*u*u;};}// Named easings matching framer-motion's definitions — used when the\n// master clock applies easing per unit, and by scroll scrubbing.\nconst backOutEase=solveCubicBezier(.33,1.53,.69,.99);const backInEase=t=>1-backOutEase(1-t);const NAMED_EASINGS={linear:t=>t,easeIn:solveCubicBezier(.42,0,1,1),easeOut:solveCubicBezier(0,0,.58,1),easeInOut:solveCubicBezier(.42,0,.58,1),circIn:t=>1-Math.sqrt(Math.max(0,1-t*t)),circOut:t=>Math.sqrt(Math.max(0,1-(t-1)*(t-1))),circInOut:t=>t<.5?(1-Math.sqrt(Math.max(0,1-4*t*t)))/2:(Math.sqrt(Math.max(0,1-(2*t-2)**2))+1)/2,backIn:backInEase,backOut:backOutEase,backInOut:t=>t<.5?backInEase(2*t)/2:(backOutEase(2*t-1)+1)/2,anticipate:t=>t>=1?1:(t*=2)<1?.5*backInEase(t):.5*(2-Math.pow(2,-10*(t-1)))};function easingFnFromTransition(transition){const ease=transition?.ease;if(Array.isArray(ease)&&ease.length===4){return solveCubicBezier(ease[0],ease[1],ease[2],ease[3]);}if(typeof ease===\"string\"&&NAMED_EASINGS[ease]){return NAMED_EASINGS[ease];}return solveCubicBezier(.42,0,.58,1)// easeInOut fallback\n;}function computeDelay(i,n,stagger,direction){if(n<=1)return 0;const last=n-1;switch(direction){case\"reverse\":return(last-i)*stagger;case\"center\":{const center=last/2;return Math.abs(i-center)/center*last*stagger;}case\"edges\":{const center=last/2;return(center-Math.abs(i-center))/center*last*stagger;}case\"random\":{const hash=(i*2654435761>>>0)/4294967296;return hash*last*stagger;}default:return i*stagger;}}// — VIEWPORT & SCROLL —\nlet cachedVW=typeof window!==\"undefined\"?window.innerWidth:1920;let cachedVH=typeof window!==\"undefined\"?window.innerHeight:1080;let globalListenerRefs=0;function refreshViewport(){cachedVW=window.innerWidth;cachedVH=window.innerHeight;}let prefersReducedMotion=false;let reducedMotionMql=null;function onReducedMotionChange(e){prefersReducedMotion=e.matches;}function addGlobalListeners(){if(typeof window===\"undefined\")return;globalListenerRefs++;if(globalListenerRefs>1)return;// already set up\nwindow.addEventListener(\"resize\",refreshViewport);reducedMotionMql=window.matchMedia(\"(prefers-reduced-motion: reduce)\");prefersReducedMotion=reducedMotionMql.matches;reducedMotionMql.addEventListener(\"change\",onReducedMotionChange);}function removeGlobalListeners(){if(typeof window===\"undefined\")return;globalListenerRefs--;if(globalListenerRefs>0)return;// other instances still alive\nwindow.removeEventListener(\"resize\",refreshViewport);if(reducedMotionMql){reducedMotionMql.removeEventListener(\"change\",onReducedMotionChange);reducedMotionMql=null;}}// — SECTION ELEMENT RESOLVER —\n// Extracts the HTMLElement from a ControlType.ScrollSectionRef value.\n// The ref can be { current: HTMLElement }, a raw HTMLElement, or unresolved.\nfunction resolveSectionEl(scrollSectionRef){const raw=scrollSectionRef.current;const el=raw?.current??raw;return typeof HTMLElement!==\"undefined\"&&el instanceof HTMLElement?el:null;}// `refPx` is the reference size for %. This should be the element's own\n// width (for X) or height (for Y) so that 100% = one element size.\nfunction resolveUnit(value,unit,refPx){switch(unit){case\"%\":return value/100*refPx;case\"vw\":return value/100*cachedVW;case\"vh\":return value/100*cachedVH;default:return value// px\n;}}function viewportFraction(position){if(position===\"top\")return 0;if(position===\"bottom\")return 1;return .5;}function getScrollProgress(el,vpFraction){const rect=el.getBoundingClientRect();const vpY=cachedVH*vpFraction;const range=rect.bottom-rect.top;if(range<=0)return 1;let p=(vpY-rect.top)/range;// Elements near the end of the page may never reach the viewport line.\n// Shift their scrub window earlier by the unreachable deficit so the\n// animation keeps a full-length scrub and completes at maximum scroll.\nconst doc=document.documentElement;const remainingScroll=Math.max(0,doc.scrollHeight-cachedVH-(window.scrollY||doc.scrollTop||0));const pAtEnd=(vpY-(rect.top-remainingScroll))/range;if(pAtEnd<1)p+=1-pAtEnd;return Math.max(0,Math.min(1,p));}const colorParseCache=new Map;let colorParseCtx=null;function parseColor(input){if(typeof input!==\"string\")return null;// Framer token colors can carry a name comment:\n// var(--token-xxx, #fff) /* {\"name\":\"White\"} */\nconst str=input.replace(/\\/\\*[\\s\\S]*?\\*\\//g,\"\").trim();if(!str)return null;const cached=colorParseCache.get(str);if(cached!==undefined)return cached;let rgba=null;// Framer color tokens arrive as var(--token-xxx, <fallback>).\nconst varMatch=str.match(/^var\\([^,]+,\\s*(.+)\\)$/);if(varMatch){rgba=parseColor(varMatch[1]);}else{const m=str.match(/^rgba?\\(([^)]+)\\)$/);if(m){const parts=m[1].split(/[\\s,\\/]+/).filter(Boolean).map(parseFloat);if(parts.length>=3&&parts.every(v=>!Number.isNaN(v))){rgba=[parts[0],parts[1],parts[2],parts.length>3?parts[3]:1];}}else if(typeof document!==\"undefined\"){// Normalize hex/hsl/named colors via the canvas parser.\nif(!colorParseCtx){colorParseCtx=document.createElement(\"canvas\").getContext(\"2d\");}if(colorParseCtx){colorParseCtx.fillStyle=\"#010203\"// sentinel to detect invalid input\n;colorParseCtx.fillStyle=str;const norm=colorParseCtx.fillStyle;if(norm!==\"#010203\"||str.toLowerCase().includes(\"010203\")){rgba=norm.startsWith(\"#\")?[parseInt(norm.slice(1,3),16),parseInt(norm.slice(3,5),16),parseInt(norm.slice(5,7),16),1]:parseColor(norm);}}}}colorParseCache.set(str,rgba);return rgba;}function rgbaString(c){return`rgba(${c[0]},${c[1]},${c[2]},${c[3]})`;}function mixColors(a,b,p){// When one side is fully transparent, keep the visible side's RGB so\n// the fade doesn't pass through black.\nif(a[3]===0&&b[3]!==0)a=[b[0],b[1],b[2],0];else if(b[3]===0&&a[3]!==0)b=[a[0],a[1],a[2],0];const alpha=Math.round(lerp(a[3],b[3],p)*1e3)/1e3;return`rgba(${Math.round(lerp(a[0],b[0],p))},${Math.round(lerp(a[1],b[1],p))},${Math.round(lerp(a[2],b[2],p))},${alpha})`;}// Cascade color captured per unit BEFORE any inline color is written, so\n// a missing from/to side can fall back to the text's natural color.\nconst naturalColors=new WeakMap;function ensureNaturalColor(el){let nat=naturalColors.get(el);if(!nat){nat=parseColor(window.getComputedStyle(el).color)??[0,0,0,1];naturalColors.set(el,nat);}return nat;}// — ANIM STATE —\nconst DEFAULT_ANIM_STATE_RAW={opacity:1,scaleX:1,scaleY:1,blur:0,rotateX:0,rotateY:0,rotateZ:0,skewX:0,skewY:0};function resolveAnimState(raw){const uniformScale=raw?.scale??1;return{scaleX:raw?.scaleX??uniformScale,scaleY:raw?.scaleY??uniformScale,rotateX:raw?.rotateX??0,rotateY:raw?.rotateY??0,rotateZ:raw?.rotateZ??0,skewX:raw?.skewX??0,skewY:raw?.skewY??0,opacity:raw?.opacity??1,blur:raw?.blur??0,color:parseColor(raw?.color)};}function applyWordStyle(word,p,fromX,fromY,f,t){const x=lerp(fromX,0,p);const y=lerp(fromY,0,p);const sX=lerp(f.scaleX,t.scaleX,p);const sY=lerp(f.scaleY,t.scaleY,p);const rX=lerp(f.rotateX,t.rotateX,p);const rY=lerp(f.rotateY,t.rotateY,p);const rZ=lerp(f.rotateZ,t.rotateZ,p);const skX=lerp(f.skewX,t.skewX,p);const skY=lerp(f.skewY,t.skewY,p);const opacity=lerp(f.opacity,t.opacity,p);const blur=lerp(f.blur,t.blur,p);let tf=`translate3d(${x}px,${y}px,0)`;if(sX!==1||sY!==1)tf+=sX===sY?` scale(${sX})`:` scaleX(${sX}) scaleY(${sY})`;if(skX!==0||skY!==0)tf+=` skewX(${skX}deg) skewY(${skY}deg)`;if(rX!==0||rY!==0||rZ!==0)tf+=` rotateX(${rX}deg) rotateY(${rY}deg) rotateZ(${rZ}deg)`;word.style.transform=tf;word.style.opacity=String(opacity);if(blur>.01){word.style.filter=`blur(${blur}px)`;}else if(word.style.filter){word.style.removeProperty(\"filter\");}if(f.color||t.color){const nat=ensureNaturalColor(word);word.style.color=mixColors(f.color??nat,t.color??nat,p);}}function applyInitialStyle(span,offset,from,transformOrigin,display=\"inline-block\"){const xVal=offset?.xValue??0;const xUnit=offset?.xUnit??\"px\";const yVal=offset?.yValue??0;const yUnit=offset?.yUnit??\"px\";span.style.display=display;span.style.willChange=\"transform, opacity, filter\";span.style.transformOrigin=transformOrigin;let tf=`translateX(${xVal}${xUnit}) translateY(${yVal}${yUnit}) translateZ(0)`;if(from.scaleX!==1||from.scaleY!==1)tf+=from.scaleX===from.scaleY?` scale(${from.scaleX})`:` scaleX(${from.scaleX}) scaleY(${from.scaleY})`;if(from.skewX!==0||from.skewY!==0)tf+=` skewX(${from.skewX}deg) skewY(${from.skewY}deg)`;if(from.rotateX!==0||from.rotateY!==0||from.rotateZ!==0)tf+=` rotateX(${from.rotateX}deg) rotateY(${from.rotateY}deg) rotateZ(${from.rotateZ}deg)`;span.style.transform=tf;span.style.opacity=String(from.opacity);if(from.blur>0)span.style.filter=`blur(${from.blur}px)`;if(from.color){// Capture the cascade color before overwriting it so the \"to\" side can\n// fall back to the text's natural color.\nensureNaturalColor(span);span.style.color=rgbaString(from.color);}}// — DOM SPLITTING —\nconst TEXT_CANDIDATE_SELECTOR=\"p, span, h1, h2, h3, h4, h5, h6, div\";const CHARACTER_UNITS_WARN_THRESHOLD=900;let hasWarnedLargeCharacterSplit=false;function hasDirectText(el){const children=el.childNodes;for(let i=0;i<children.length;i++){const n=children[i];if(n.nodeType===Node.TEXT_NODE&&n.textContent?.trim())return true;}return false;}function findTextElements(root){const candidates=[];if(hasDirectText(root))candidates.push(root);const queried=root.querySelectorAll(TEXT_CANDIDATE_SELECTOR);queried.forEach(node=>{const el=node;if(hasDirectText(el))candidates.push(el);});if(candidates.length===0){const fallback=new Set;const walker=document.createTreeWalker(root,NodeFilter.SHOW_TEXT,null);let n=walker.nextNode();while(n){if(n.textContent?.trim()&&n.parentElement){fallback.add(n.parentElement);}n=walker.nextNode();}return Array.from(fallback);}if(candidates.length===1)return candidates;const set=new Set(candidates);const topLevel=candidates.filter(el=>{let parent=el.parentElement;while(parent){if(set.has(parent))return false;parent=parent.parentElement;}return true;});topLevel.sort((a,b)=>{if(a===b)return 0;const pos=a.compareDocumentPosition(b);if(pos&Node.DOCUMENT_POSITION_FOLLOWING)return-1;if(pos&Node.DOCUMENT_POSITION_PRECEDING)return 1;return 0;});return topLevel;}function combineSplitHandles(handles){if(handles.length===0)return null;if(handles.length===1)return handles[0];const lines=[];const words=[];const chars=[];const masks=[];handles.forEach(handle=>{lines.push(...handle.lines??[]);words.push(...handle.words??[]);chars.push(...handle.chars??[]);masks.push(...handle.masks??[]);});return{lines,words,chars,masks,revert(){for(let i=handles.length-1;i>=0;i--){handles[i].revert();}}};}const SPLIT_TEXT_CDN_URL=\"https://cdn.jsdelivr.net/npm/gsap@3.14.1/dist/SplitText.min.js\";let splitTextLoadPromise=null;function getSplitTextPlugin(){const g=globalThis;const win=g?.window??g;return win?.SplitText??win?.gsap?.plugins?.SplitText??null;}function ensureSplitTextLoaded(){const plugin=getSplitTextPlugin();if(plugin?.create)return Promise.resolve(plugin);if(typeof document===\"undefined\")return Promise.resolve(null);if(splitTextLoadPromise)return splitTextLoadPromise;splitTextLoadPromise=new Promise((resolve,reject)=>{const done=()=>{const loaded=getSplitTextPlugin();if(loaded?.create)resolve(loaded);else{splitTextLoadPromise=null;reject(new Error(\"SplitText loaded but plugin was not available.\"));}};const onError=()=>{splitTextLoadPromise=null;// Remove the dead tag so a retry injects a fresh script — listeners\n// attached to an already-errored tag would never fire again.\ndocument.querySelector('script[data-ta-splittext=\"1\"]')?.remove();reject(new Error(\"Failed to load SplitText from CDN.\"));};const existing=document.querySelector('script[data-ta-splittext=\"1\"]');if(existing){if(getSplitTextPlugin()?.create){done();}else{existing.addEventListener(\"load\",done,{once:true});existing.addEventListener(\"error\",onError,{once:true});}return;}const script=document.createElement(\"script\");script.src=SPLIT_TEXT_CDN_URL;script.async=true;script.dataset.taSplittext=\"1\";script.onload=done;script.onerror=onError;document.head.appendChild(script);});return splitTextLoadPromise;}// Start fetching SplitText as soon as the bundle loads — mount-time loading\n// adds the whole network round-trip to the first paint-to-animation gap.\nif(typeof document!==\"undefined\"){void ensureSplitTextLoaded().catch(()=>{});}function splitWithGSAP(element,mode,offset,from,to,animStateRef,transformOrigin,overflow,firstLineIndent,onSplitApplied){const applySplitStyles=split=>{const lines=Array.from(split?.lines??[]);const words=Array.from(split?.words??[]);const chars=Array.from(split?.chars??[]);if(mode===\"character\"){words.forEach(word=>{word.style.display=\"inline-block\";word.style.whiteSpace=\"nowrap\";word.style.textIndent=\"0\";});}const units=mode===\"character\"?chars:mode===\"line\"?lines:words;const display=mode===\"line\"?\"block\":\"inline-block\";const computedAlign=mode===\"line\"?window.getComputedStyle(element).textAlign:\"\";units.forEach((unit,i)=>{if(mode===\"line\"){unit.style.textAlign=\"inherit\";unit.style.margin=\"0\";unit.style.padding=\"0\";// The element's text-indent inherits into every line div, which\n// would indent each line — set it explicitly on the first line\n// only and zero the rest.\nif(i===0){if(firstLineIndent>0)unit.style.textIndent=`${firstLineIndent}em`;}else{unit.style.textIndent=\"0\";}if(computedAlign===\"justify\"&&i<units.length-1){unit.style.textAlignLast=\"justify\";}}else{// Inline-block units are block containers: they inherit the\n// element's text-indent into their own first line, widening every\n// unit. Zero it so only the element's first line box shifts.\nunit.style.textIndent=\"0\";}if(animStateRef.current===\"played\"){// Already animated — snap to final state to prevent flash on reflow\nunit.style.display=display;unit.style.transformOrigin=transformOrigin;applyWordStyle(unit,1,0,0,from,to);unit.style.willChange=\"auto\";}else{applyInitialStyle(unit,offset,from,transformOrigin,display);}});// Fix GSAP mask wrappers: GSAP only sets overflow:clip but doesn't\n// set display — the wrappers are inline <span>s where overflow has\n// no effect. We must set display so clipping actually works, and\n// override to clipPath for single-axis clipping modes.\nif(overflow!==\"visible\"){const masks=Array.from(split?.masks??[]);const isLine=mode===\"line\";masks.forEach(m=>{m.style.display=isLine?\"block\":\"inline-block\";if(!isLine){m.style.verticalAlign=\"top\";// Inline-block mask wrappers inherit text-indent too.\nm.style.textIndent=\"0\";}if(overflow===\"clipX\"){m.style.overflow=\"visible\";m.style.clipPath=\"inset(-999px 0)\";}else if(overflow===\"clipY\"){m.style.overflow=\"visible\";m.style.clipPath=\"inset(0 -999px)\";}// clipXY: GSAP's overflow:clip is correct now that display is set\n});}onSplitApplied?.();};let didOnSplit=false;const maskType=mode===\"character\"?\"chars\":mode===\"line\"?\"lines\":\"words\";const options={autoSplit:true,aria:\"hidden\",tag:\"span\",...overflow!==\"visible\"&&{mask:maskType},onSplit(self){didOnSplit=true;applySplitStyles(self);}};if(mode===\"character\"){options.type=\"words,chars\";options.wordsClass=\"ta-char-group\";options.charsClass=\"ta-unit\";}else if(mode===\"line\"){options.type=\"lines\";options.linesClass=\"ta-unit\";}else{options.type=\"words\";options.wordsClass=\"ta-unit\";}// Standalone SplitText is loaded on window; typings are not available here.\nconst plugin=getSplitTextPlugin();if(!plugin?.create)return null;let split=null;try{// @ts-ignore\nsplit=plugin.create(element,options);}catch{return null// caller falls back to unsplit rendering\n;}if(!split)return null;if(!didOnSplit)applySplitStyles(split);return split;}function replaceElementTag(el,newTag){const newEl=document.createElement(newTag);for(const attr of Array.from(el.attributes)){newEl.setAttribute(attr.name,attr.value);}while(el.firstChild)newEl.appendChild(el.firstChild);el.parentNode?.replaceChild(newEl,el);return newEl;}function wrapElement(element,offset,from,transformOrigin){element.classList.add(\"ta-unit\");applyInitialStyle(element,offset,from,transformOrigin);}function applyOverflow(container,overflow){if(overflow===\"visible\")return;const units=container.querySelectorAll(\".ta-unit\");units.forEach(unit=>{if(unit.parentElement?.classList.contains(\"ta-mask\"))return;const mask=document.createElement(\"span\");mask.className=\"ta-mask\";// Match the unit's display mode so layout stays identical\nconst display=unit.style.display||\"inline-block\";mask.style.display=display;switch(overflow){case\"clipX\":mask.style.clipPath=\"inset(-999px 0)\";break;case\"clipY\":mask.style.clipPath=\"inset(0 -999px)\";break;default:mask.style.overflow=\"clip\";break;}mask.style.verticalAlign=\"top\";// For block-level line masks, preserve text-align and height\nif(display===\"block\"){mask.style.textAlign=\"inherit\";if(unit.style.height)mask.style.height=unit.style.height;if(unit.style.textAlignLast)mask.style.textAlignLast=unit.style.textAlignLast;}unit.parentNode.insertBefore(mask,unit);mask.appendChild(unit);});}// — ANIMATION RUNTIME —\nfunction getAnimTargets(container,sectionEl){const words=container.querySelectorAll(\".ta-unit\");if(words.length===0)return null;return{words,triggerEl:sectionEl||container,n:words.length};}// Snap every unit to its final \"to\" state and release GPU layers.\nfunction snapToFinal(words,from,to){for(let i=0;i<words.length;i++){applyWordStyle(words[i],1,0,0,from,to);words[i].style.willChange=\"auto\";}}function makeCompletionSnap(words,to,animStateRef){return()=>{animStateRef.current=\"played\";words.forEach(w=>{w.style.willChange=\"auto\";// Only clear residual blur when the final state has none —\n// a \"to\" blur must survive completion.\nif(to.blur<=.01)w.style.removeProperty(\"filter\");});};}function resetAllToFrom(words,xVal,xUnit,yVal,yUnit,from,to){// offsetWidth/Height are only needed for % offsets — skip the forced\n// layout reads entirely for px/vw/vh.\nconst needW=xUnit===\"%\";const needH=yUnit===\"%\";words.forEach(word=>{const fx=resolveUnit(xVal,xUnit,needW?word.offsetWidth:0);const fy=resolveUnit(yVal,yUnit,needH?word.offsetHeight:0);applyWordStyle(word,0,fx,fy,from,to);});}function runStaggeredAnimation(words,n,xVal,xUnit,yVal,yUnit,from,to,transition,unitDur,stagger,staggerDirection,onAllComplete){// Pre-compute delays once and find which element finishes last\nconst baseDelay=transition?.delay??0;const delays=new Float64Array(n);let maxDelay=0;let lastIndex=0;for(let i=0;i<n;i++){delays[i]=baseDelay+computeDelay(i,n,stagger,staggerDirection);if(delays[i]>=maxDelay){maxDelay=delays[i];lastIndex=i;}}// offsetWidth/Height are only needed for % offsets — skip layout reads\nconst needW=xUnit===\"%\";const needH=yUnit===\"%\";// Springs need real per-unit physics — keep individual tweens for them.\nif(transition?.type===\"spring\"){const ctrls=[];words.forEach((word,i)=>{const fx=resolveUnit(xVal,xUnit,needW?word.offsetWidth:0);const fy=resolveUnit(yVal,yUnit,needH?word.offsetHeight:0);const ctrl=animate(0,1,{...transition,duration:unitDur,delay:delays[i],onUpdate(p){applyWordStyle(word,p,fx,fy,from,to);},onComplete:i===lastIndex?onAllComplete:undefined});ctrls.push(ctrl);});return ctrls;}// Tweens: ONE linear master clock drives every unit — n concurrent tween\n// instances collapse into a single rAF subscriber, easing is applied per\n// unit, and units outside their local time window skip DOM writes.\nconst fxArr=new Float64Array(n);const fyArr=new Float64Array(n);for(let i=0;i<n;i++){fxArr[i]=resolveUnit(xVal,xUnit,needW?words[i].offsetWidth:0);fyArr[i]=resolveUnit(yVal,yUnit,needH?words[i].offsetHeight:0);}const easeFn=easingFnFromTransition(transition);const prevEased=new Float64Array(n).fill(-1);const totalTime=maxDelay+unitDur;const master=animate(0,1,{duration:totalTime,ease:\"linear\",onUpdate(mp){const t=mp*totalTime;for(let i=0;i<n;i++){const localP=(t-delays[i])/unitDur;const eased=localP<=0?0:localP>=1?1:easeFn(localP);if(Math.abs(eased-prevEased[i])<1e-6)continue;prevEased[i]=eased;applyWordStyle(words[i],eased,fxArr[i],fyArr[i],from,to);}},onComplete:onAllComplete});return[master];}// — CSS & UI —\nconst FILL_STYLES_ID=\"ta-fill-styles\";const FILL_CSS=`\n  .ta-fill > *:not(.ta-unit):not(.ta-char-group):not(.ta-mask):not([class*=\"-mask\"]),\n  .ta-fill > * > *:not(.ta-unit):not(.ta-char-group):not(.ta-mask):not([class*=\"-mask\"]),\n  .ta-fill > * > * > *:not(.ta-unit):not(.ta-char-group):not(.ta-mask):not([class*=\"-mask\"]),\n  .ta-fill > * > * > * > *:not(.ta-unit):not(.ta-char-group):not(.ta-mask):not([class*=\"-mask\"]) {\n    width: 100% !important;\n    min-width: unset !important;\n    max-width: unset !important;\n    position: relative !important;\n    left: unset !important;\n    top: unset !important;\n    right: unset !important;\n    bottom: unset !important;\n    flex-shrink: 0 !important;\n    overflow: visible !important;\n  }\n  .ta-char-group {\n    font-kerning: none;\n  }\n`;function ensureFillStyles(){if(typeof document===\"undefined\")return;if(document.getElementById(FILL_STYLES_ID))return;const style=document.createElement(\"style\");style.id=FILL_STYLES_ID;style.textContent=FILL_CSS;document.head.appendChild(style);}function Placeholder({style}){return /*#__PURE__*/_jsxs(\"div\",{style:{...style,display:\"flex\",minHeight:140,alignItems:\"center\",justifyContent:\"center\",flexDirection:\"column\",color:\"rgb(153, 102, 255)\",background:\"rgba(136, 85, 255, 0.1)\",fontSize:14,textAlign:\"center\",padding:20,borderRadius:12,gap:6},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:22},children:\"T\"}),/*#__PURE__*/_jsx(\"div\",{style:{fontSize:14,fontWeight:600},children:\"TextAnimator\"}),/*#__PURE__*/_jsxs(\"div\",{style:{opacity:.7,maxWidth:220,lineHeight:1.5},children:[\"Connect a text layer using the \",/*#__PURE__*/_jsx(\"b\",{children:\"Text Layer\"}),\" property.\"]})]});}// — COMPONENT —\n/**\n * TextAnimator\n *\n * @framerDisableUnlink\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 200\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any\n */export default function TextAnimator(props){const{textLayer,scrollSection,animationMode=\"appear\",appearDelay=0,preview=false,animateBy=\"word\",trigger=\"layer\",viewport=\"center\",replay=false,markers=false,animation,textAlign=\"inherit\",textWrap=\"inherit\",textIndent=0,htmlTag=\"inherit\",style}=props;const fromRaw=animation?.from??DEFAULT_ANIM_STATE_RAW;const toRaw=animation?.to??DEFAULT_ANIM_STATE_RAW;const perspective=animation?.perspective??1e3;const stagger=animation?.stagger??.02;const staggerDirection=animation?.staggerDirection??\"forward\";const transition=animation?.transition??{type:\"tween\",duration:1,ease:[.76,0,.24,1]};const offset=animation?.offset??{xValue:0,xUnit:\"px\",yValue:0,yUnit:\"px\"};const overflow=animation?.overflow??\"visible\";const originX=animation?.origin?.x??50;const originY=animation?.origin?.y??50;const transformOrigin=`${originX}% ${originY}%`;// Stable serialized keys to avoid effect churn from new object refs\nconst fromKey=JSON.stringify(fromRaw);const toKey=JSON.stringify(toRaw);const offsetKey=JSON.stringify(offset);const transitionKey=JSON.stringify(transition);// Pre-resolve from/to so applyWordStyle avoids ?? fallbacks per frame\n// eslint-disable-next-line react-hooks/exhaustive-deps\nconst from=useMemo(()=>resolveAnimState(fromRaw),[fromKey]);// eslint-disable-next-line react-hooks/exhaustive-deps\nconst to=useMemo(()=>resolveAnimState(toRaw),[toKey]);// Extract offset and duration values once (used by all mode effects)\nconst xVal=offset?.xValue??0;const xUnit=offset?.xUnit??\"px\";const yVal=offset?.yValue??0;const yUnit=offset?.yUnit??\"px\";const dur=transition?.duration??1;const containerRef=useRef(null);const sourceRef=useRef(null);const splitTextRef=useRef(null);const splitRetryTimeoutRef=useRef(null);const splitRevisionRafRef=useRef(null);const splitRetryAttemptsRef=useRef(0);// Tracks whether an animation has played to completion so that\n// line-mode resize re-splits snap to the final state instead of replaying.\nconst animStateRef=useRef(\"idle\");// Prevents the opacity:0 flash during resize re-splits by keeping\n// the container visible while text is being re-processed.\nconst isResizingRef=useRef(false);// Store scrollSection in a ref so it NEVER appears in dependency arrays.\n// ControlType.ScrollSectionRef causes re-renders on every scroll frame;\n// keeping it out of deps prevents effect teardown/setup churn.\nconst scrollSectionRef=useRef(scrollSection);scrollSectionRef.current=scrollSection;// Resolved section element — stored in state so it acts as a stable\n// effect dependency that only changes when the actual element changes\n// (not on every scroll frame like scrollSection itself).\n// ControlType.ScrollSectionRef passes a stable ref whose .current is\n// mutated asynchronously, so we poll briefly via rAF until it resolves.\nconst[sectionEl,setSectionEl]=useState(()=>resolveSectionEl(scrollSectionRef));useEffect(()=>{if(trigger!==\"section\"){setSectionEl(null);return;}const el=resolveSectionEl(scrollSectionRef);if(el){setSectionEl(el);return;}let rafId=0;const poll=()=>{const e=resolveSectionEl(scrollSectionRef);if(e){setSectionEl(e);return;}rafId=requestAnimationFrame(poll);};rafId=requestAnimationFrame(poll);return()=>cancelAnimationFrame(rafId);},[trigger,scrollSection]);const[isClient,setIsClient]=useState(false);const[isProcessed,setIsProcessed]=useState(false);const[srText,setSrText]=useState(\"\");const[splitRevision,setSplitRevision]=useState(0);const[sourceRev,setSourceRev]=useState(0);const isStatic=useIsStaticRenderer();const isCanvas=RenderTarget.current()===RenderTarget.canvas;// Hydration safety + one-time setup\nuseEffect(()=>{setIsClient(true);addGlobalListeners();ensureFillStyles();void ensureSplitTextLoaded().catch(()=>{});return()=>{if(splitRetryTimeoutRef.current!==null){window.clearTimeout(splitRetryTimeoutRef.current);splitRetryTimeoutRef.current=null;}if(splitRevisionRafRef.current!==null){clearTimeout(splitRevisionRafRef.current);splitRevisionRafRef.current=null;}splitTextRef.current?.revert();splitTextRef.current=null;removeGlobalListeners();};},[]);// React hydration does not patch attribute mismatches: the server renders\n// the source copy hidden (static renderer), the first client render\n// declares it as the visible placeholder, and the DOM silently keeps the\n// server's styles. Re-assert the placeholder styles before first paint so\n// the anti-jump placeholder actually shows on real page loads.\nuseIsomorphicLayoutEffect(()=>{const source=sourceRef.current;if(!source||isStatic||isProcessed)return;source.style.position=\"relative\";source.style.height=\"\";source.style.overflow=\"\";source.style.opacity=\"\";source.removeAttribute(\"aria-hidden\");// eslint-disable-next-line react-hooks/exhaustive-deps\n},[]);// Reset processing when split-mode or mask changes\nuseEffect(()=>{if(!isProcessed)return;// Don't restore innerHTML here — the processing effect handles it\n// to avoid conflicting with React's DOM reconciliation.\nanimStateRef.current=\"idle\";setIsProcessed(false);// eslint-disable-next-line react-hooks/exhaustive-deps\n},[animateBy,overflow,transformOrigin,animationMode,textAlign,textWrap,textIndent,htmlTag]);// Process text — split into animatable units with initial \"from\" styles.\n// Clones clean HTML from the hidden sourceRef into the visible containerRef,\n// then splits the clone. This avoids React/DOM conflicts on re-renders.\nuseEffect(()=>{if(!isClient||!containerRef.current||!sourceRef.current||isProcessed)return;if(isStatic&&!(preview&&isCanvas))return;let cancelled=false;let rafA=0;let rafB=0;const queueSplitRevisionBump=()=>{if(splitRevisionRafRef.current!==null){clearTimeout(splitRevisionRafRef.current);}splitRevisionRafRef.current=window.setTimeout(()=>{splitRevisionRafRef.current=null;setSplitRevision(v=>v+1);},RESPLIT_DEBOUNCE_MS);};const scheduleSplitRetry=()=>{if(splitRetryAttemptsRef.current>=SPLIT_RETRY_MAX_ATTEMPTS)return;const attempt=++splitRetryAttemptsRef.current;const delay=Math.min(SPLIT_RETRY_MAX_MS,SPLIT_RETRY_BASE_MS*2**(attempt-1));if(splitRetryTimeoutRef.current!==null){window.clearTimeout(splitRetryTimeoutRef.current);}splitRetryTimeoutRef.current=window.setTimeout(()=>{splitRetryTimeoutRef.current=null;isResizingRef.current=true;setIsProcessed(false);},delay);};// Tag replacement + text style overrides. Shared by the main path and\n// the unsplit fallbacks so degraded rendering still honors the props.\n// The indent is applied before splitting so GSAP measures line breaks\n// with it in place; em resolves against the element's font size.\nconst applyTextOverrides=root=>{let els=findTextElements(root);if(htmlTag&&htmlTag!==\"inherit\"){els=els.map(el=>replaceElementTag(el,htmlTag));}els.forEach(el=>{if(textAlign&&textAlign!==\"inherit\")el.style.textAlign=textAlign;if(textWrap&&textWrap!==\"inherit\")el.style.textWrap=textWrap;if(textIndent>0)el.style.textIndent=`${textIndent}em`;});return els;};const process=async()=>{const source=sourceRef.current;const container=containerRef.current;isResizingRef.current=false;if(!source||!container||cancelled)return;setSrText(source.textContent||\"\");if(animateBy!==\"element\"){const plugin=await ensureSplitTextLoaded().catch(()=>null);if(cancelled)return;if(!plugin?.create){container.innerHTML=source.innerHTML;applyTextOverrides(container);setIsProcessed(true);scheduleSplitRetry();return;}splitRetryAttemptsRef.current=0;if(splitRetryTimeoutRef.current!==null){window.clearTimeout(splitRetryTimeoutRef.current);splitRetryTimeoutRef.current=null;}}splitTextRef.current?.revert();splitTextRef.current=null;// Clone from sourceRef (always clean — React manages it)\ncontainer.innerHTML=source.innerHTML;const textElements=applyTextOverrides(container);if(textElements.length===0||cancelled){setIsProcessed(true);return;}if(animateBy===\"element\"){textElements.forEach(el=>{wrapElement(el,offset,from,transformOrigin);});applyOverflow(container,overflow);}else{const mode=animateBy===\"character\"?\"character\":animateBy===\"line\"?\"line\":\"word\";const handles=[];textElements.forEach(el=>{const handle=splitWithGSAP(el,mode,offset,from,to,animStateRef,transformOrigin,overflow,textIndent,queueSplitRevisionBump);if(handle)handles.push(handle);});splitTextRef.current=combineSplitHandles(handles);}if(animateBy!==\"element\"&&!splitTextRef.current){container.innerHTML=source.innerHTML;applyTextOverrides(container);setIsProcessed(true);return;}const unitCount=container.querySelectorAll(\".ta-unit\").length;if(animateBy===\"character\"&&unitCount>CHARACTER_UNITS_WARN_THRESHOLD&&!hasWarnedLargeCharacterSplit){hasWarnedLargeCharacterSplit=true;console.warn(`[TextAnimator] Character split created ${unitCount} units. Consider word/line mode for better performance.`);}if(cancelled)return;setIsProcessed(true);};rafA=requestAnimationFrame(()=>{rafB=requestAnimationFrame(()=>{void process();});});return()=>{cancelled=true;cancelAnimationFrame(rafA);cancelAnimationFrame(rafB);};},[isClient,isStatic,preview,textLayer,offsetKey,fromKey,animateBy,overflow,transformOrigin,isProcessed,sourceRev,textAlign,textWrap,textIndent,htmlTag]);// —— MUTATION OBSERVER: re-split when CMS/dynamic text changes ——\n// Observes sourceRef (where React renders textLayer), not containerRef\n// (which is managed by DOM manipulation).\nuseEffect(()=>{if(!isClient||!sourceRef.current||isStatic)return;// Bump a revision (not just isProcessed) so text changes that land\n// while a processing pass is already in flight still cancel it and\n// trigger a fresh pass instead of being silently dropped.\nconst mo=new MutationObserver(()=>{setIsProcessed(false);setSourceRev(v=>v+1);});mo.observe(sourceRef.current,{childList:true,characterData:true,subtree:true});return()=>mo.disconnect();},[isClient,isStatic,textLayer]);// —— CANVAS FINAL STATE: show \"to\" state on canvas when not previewing ——\n// Show the end result on canvas instead of the offset/hidden \"from\" state.\nuseEffect(()=>{if(!isCanvas||preview||!isProcessed||!containerRef.current)return;const targets=getAnimTargets(containerRef.current,null);if(!targets)return;snapToFinal(targets.words,from,to);},[isCanvas,preview,isProcessed,fromKey,toKey,splitRevision]);// —— TEXT ALIGN OVERRIDE (canvas static path) ——\n// On canvas without preview, isStatic=true so the processing effect is skipped\n// and textAlign is never applied. This effect handles that case by directly\n// setting textAlign on text elements after React renders the static children.\nuseEffect(()=>{if(!isCanvas||preview||!containerRef.current)return;const textEls=findTextElements(containerRef.current);textEls.forEach(el=>{// Set to override value, or clear to \"\" so the original style from the\n// text layer cascades back when switching back to \"inherit\".\nel.style.textAlign=textAlign===\"inherit\"?\"\":textAlign;el.style.textWrap=textWrap===\"inherit\"?\"\":textWrap;el.style.textIndent=textIndent>0?`${textIndent}em`:\"\";});},[isCanvas,preview,textAlign,textWrap,textIndent]);// —— APPEAR MODE: plays immediately on mount ——\nuseEffect(()=>{if(animationMode!==\"appear\"||preview&&isCanvas)return;if(!isClient||isStatic||!isProcessed||!containerRef.current)return;const targets=getAnimTargets(containerRef.current,null);if(!targets)return;const{words,n}=targets;// Reduced motion or resize re-split after completion: snap to final state\nif(prefersReducedMotion||animStateRef.current===\"played\"){snapToFinal(words,from,to);animStateRef.current=\"played\";return;}const unitDur=Math.max(MIN_UNIT_DURATION,dur);// Root-level delay stacks on the transition's own delay so nested\n// component instances can stagger via an exposed variable.\nconst tr=appearDelay>0?{...transition,delay:(transition?.delay??0)+appearDelay}:transition;const controls=runStaggeredAnimation(words,n,xVal,xUnit,yVal,yUnit,from,to,tr,unitDur,stagger,staggerDirection,makeCompletionSnap(words,to,animStateRef));return()=>{controls.forEach(c=>c.stop());words.forEach(w=>{w.style.willChange=\"auto\";});};},[isClient,isStatic,isProcessed,animationMode,animateBy,appearDelay,stagger,staggerDirection,transitionKey,offsetKey,fromKey,toKey,splitRevision,preview,isCanvas]);// —— ENTER MODE: scroll-position check ——\n// Uses a scroll listener + rAF instead of IntersectionObserver to\n// correctly trigger: fire when the TOP of the trigger element\n// scrolls past the viewport line (top/center/bottom).\nuseEffect(()=>{if(animationMode!==\"enter\"||preview&&isCanvas)return;if(!isClient||isStatic||!isProcessed||!containerRef.current)return;if(trigger===\"section\"&&!sectionEl)return;const targets=getAnimTargets(containerRef.current,sectionEl);if(!targets)return;const{words,triggerEl,n}=targets;// Reduced motion: snap to final state immediately\nif(prefersReducedMotion){snapToFinal(words,from,to);animStateRef.current=\"played\";return;}const unitDur=Math.max(MIN_UNIT_DURATION,dur);const tr=appearDelay>0?{...transition,delay:(transition?.delay??0)+appearDelay}:transition;let controls=[];const vpFrac=viewportFraction(viewport);let playing=false;let rafId=0;// Resize re-split after animation already played: snap to final state\nif(animStateRef.current===\"played\"){snapToFinal(words,from,to);playing=true;}else{// Normal: reset to initial state. Defer GPU layer promotion until\n// playback actually starts — units can wait below the fold for a\n// long time and each will-change holds a compositor layer.\nresetAllToFrom(words,xVal,xUnit,yVal,yUnit,from,to);words.forEach(w=>{w.style.willChange=\"auto\";});}// Check if the trigger element's top has crossed the viewport line.\nconst hasCrossed=()=>{const rect=triggerEl.getBoundingClientRect();const vpY=cachedVH*vpFrac;// A fully visible element also counts — elements near the bottom of\n// the page may never reach the viewport line at maximum scroll.\nreturn rect.top<=vpY||rect.bottom<=cachedVH;};const play=()=>{playing=true;words.forEach(w=>{w.style.willChange=\"transform, opacity, filter\";});controls=runStaggeredAnimation(words,n,xVal,xUnit,yVal,yUnit,from,to,tr,unitDur,stagger,staggerDirection,makeCompletionSnap(words,to,animStateRef));};const reset=()=>{playing=false;animStateRef.current=\"idle\";controls.forEach(c=>c.stop());controls=[];resetAllToFrom(words,xVal,xUnit,yVal,yUnit,from,to);// Layers are re-promoted in play(); keep them released while the\n// element waits off-screen for its replay.\nwords.forEach(w=>{w.style.willChange=\"auto\";});};// Replay: use IntersectionObserver to detect when the element is fully\n// off-screen (either direction) and reset the animation. IO at threshold:0\n// fires !isIntersecting only when the element is completely invisible.\nlet isVisible=false;let io=null;if(replay){// Sync initial visibility so the first check() is correct\nconst initRect=containerRef.current.getBoundingClientRect();isVisible=initRect.bottom>0&&initRect.top<cachedVH;io=new IntersectionObserver(([entry])=>{isVisible=entry.isIntersecting;if(!entry.isIntersecting&&playing){reset();}},{threshold:0});io.observe(containerRef.current);}let done=false;const check=()=>{if(done)return;const crossed=hasCrossed();// Guard: for replay, only play when element is visible on screen\n// (prevents re-triggering while element is off-screen above viewport)\nif(crossed&&!playing&&(!replay||isVisible)){play();if(!replay){done=true;window.removeEventListener(\"scroll\",onScroll);return;}}// Reset is handled by IntersectionObserver for replay mode\n};const onScroll=()=>{cancelAnimationFrame(rafId);rafId=requestAnimationFrame(check);};// Initial check (element might already be past the viewport line)\ncheck();if(!done){window.addEventListener(\"scroll\",onScroll,{passive:true});}return()=>{done=true;cancelAnimationFrame(rafId);window.removeEventListener(\"scroll\",onScroll);if(io)io.disconnect();controls.forEach(c=>c.stop());words.forEach(w=>{w.style.willChange=\"auto\";});};},[isClient,isStatic,isProcessed,animationMode,animateBy,trigger,sectionEl,viewport,stagger,staggerDirection,appearDelay,transitionKey,offsetKey,fromKey,toKey,splitRevision,replay,preview,isCanvas]);// —— SCROLL (SCRUB) MODE ——\nuseEffect(()=>{if(animationMode!==\"scroll\"||preview&&isCanvas)return;if(!isClient||isStatic||!isProcessed||!containerRef.current)return;if(trigger===\"section\"&&!sectionEl)return;const targets=getAnimTargets(containerRef.current,sectionEl);if(!targets)return;const{words,triggerEl,n}=targets;const vpFrac=viewportFraction(viewport);// Element sizes are only needed to resolve % offsets — skip the forced\n// layout reads entirely for px/vw/vh.\nconst needW=xUnit===\"%\";const needH=yUnit===\"%\";// Reduced motion: snap to from/to based on scroll position, no interpolation\nif(prefersReducedMotion){// Pre-compute offsets once to avoid layout reflow per word per scroll frame\nlet fxArr=Array.from(words,w=>resolveUnit(xVal,xUnit,needW?w.offsetWidth:0));let fyArr=Array.from(words,w=>resolveUnit(yVal,yUnit,needH?w.offsetHeight:0));let rafId=0;const tick=()=>{const p=getScrollProgress(triggerEl,vpFrac)>=.5?1:0;for(let i=0;i<words.length;i++){applyWordStyle(words[i],p,fxArr[i],fyArr[i],from,to);}};const onScroll=()=>{cancelAnimationFrame(rafId);rafId=requestAnimationFrame(tick);};const recomputeOffsets=()=>{fxArr=Array.from(words,w=>resolveUnit(xVal,xUnit,needW?w.offsetWidth:0));fyArr=Array.from(words,w=>resolveUnit(yVal,yUnit,needH?w.offsetHeight:0));tick();};tick();window.addEventListener(\"scroll\",onScroll,{passive:true});window.addEventListener(\"resize\",recomputeOffsets);return()=>{cancelAnimationFrame(rafId);window.removeEventListener(\"scroll\",onScroll);window.removeEventListener(\"resize\",recomputeOffsets);};}const easeFn=easingFnFromTransition(transition);const totalDuration=1+(n-1)*stagger;// Pre-compute per-element sizes for % resolution (doesn't change during scroll)\nconst elWidths=Array.from(words,w=>needW?w.offsetWidth:0);const elHeights=Array.from(words,w=>needH?w.offsetHeight:0);// Pre-compute resolved offsets (refreshed on resize alongside sizes)\nconst fromXArr=new Float64Array(n);const fromYArr=new Float64Array(n);const computeOffsets=()=>{for(let i=0;i<n;i++){fromXArr[i]=resolveUnit(xVal,xUnit,elWidths[i]);fromYArr[i]=resolveUnit(yVal,yUnit,elHeights[i]);}};computeOffsets();// Pre-compute per-element delays based on stagger direction\nconst delays=new Float64Array(n);for(let i=0;i<n;i++){delays[i]=computeDelay(i,n,stagger,staggerDirection);}// Track previous eased progress per element to skip unchanged ones\nconst prevEased=new Float64Array(n).fill(-1);let rafId=0;let willChangeCleared=false;const tick=()=>{const scrollP=getScrollProgress(triggerEl,vpFrac);const t=scrollP*totalDuration;for(let i=0;i<n;i++){const localP=Math.max(0,Math.min(1,t-delays[i]));const eased=easeFn(localP);// Skip DOM writes when progress hasn't changed\nif(Math.abs(eased-prevEased[i])<1e-5)continue;prevEased[i]=eased;applyWordStyle(words[i],eased,fromXArr[i],fromYArr[i],from,to);}// Clear GPU layers when animation is fully complete or not started\nif((scrollP<=0||scrollP>=1)&&!willChangeCleared){willChangeCleared=true;for(let i=0;i<n;i++)words[i].style.willChange=\"auto\";}else if(scrollP>0&&scrollP<1&&willChangeCleared){willChangeCleared=false;for(let i=0;i<n;i++)words[i].style.willChange=\"transform, opacity, filter\";}};const onScroll=()=>{if(!gateActive)return;cancelAnimationFrame(rafId);rafId=requestAnimationFrame(tick);};const onResize=()=>{// Refresh per-element sizes and resolved offsets on resize\nfor(let i=0;i<n;i++){elWidths[i]=needW?words[i].offsetWidth:0;elHeights[i]=needH?words[i].offsetHeight:0;}computeOffsets();// Invalidate previous progress so all elements re-render\nprevEased.fill(-1);tick();};// Skip per-frame work while the trigger is far off-screen; the scroll\n// listener stays attached but exits on a boolean. One viewport of\n// margin keeps the scrub seamless when the element approaches.\nlet gateActive=true;let gateIO=null;if(typeof IntersectionObserver!==\"undefined\"){gateIO=new IntersectionObserver(([entry])=>{gateActive=entry.isIntersecting;if(gateActive)tick();},{rootMargin:\"100% 0px 100% 0px\"});gateIO.observe(triggerEl);}tick();window.addEventListener(\"scroll\",onScroll,{passive:true});window.addEventListener(\"resize\",onResize);return()=>{gateIO?.disconnect();cancelAnimationFrame(rafId);window.removeEventListener(\"scroll\",onScroll);window.removeEventListener(\"resize\",onResize);};},[isClient,isStatic,isProcessed,animationMode,animateBy,trigger,sectionEl,viewport,stagger,staggerDirection,transitionKey,offsetKey,fromKey,toKey,splitRevision,preview,isCanvas]);// —— PREVIEW MODE: looping animation on canvas only ——\nuseEffect(()=>{if(!preview||!isCanvas||!isClient||!isProcessed||!containerRef.current)return;const targets=getAnimTargets(containerRef.current,null);if(!targets)return;const{words,n}=targets;// Reduced motion: show final state, skip looping\nif(prefersReducedMotion){snapToFinal(words,from,to);return;}const unitDur=Math.max(MIN_UNIT_DURATION,dur);const baseDelay=transition?.delay??0;const pauseBetween=PREVIEW_LOOP_PAUSE_S;// Compute the actual max delay to find when the last element finishes\nlet maxDelay=0;for(let i=0;i<n;i++){const d=baseDelay+computeDelay(i,n,stagger,staggerDirection);if(d>maxDelay)maxDelay=d;}let cancelled=false;let controls=[];let timeoutId;const runLoop=()=>{if(cancelled)return;controls=[];resetAllToFrom(words,xVal,xUnit,yVal,yUnit,from,to);controls=runStaggeredAnimation(words,n,xVal,xUnit,yVal,yUnit,from,to,transition,unitDur,stagger,staggerDirection);// Wait for last element to finish (maxDelay + unitDur) + pause\nconst totalTime=(maxDelay+unitDur+pauseBetween)*1e3;timeoutId=setTimeout(runLoop,totalTime);};runLoop();return()=>{cancelled=true;clearTimeout(timeoutId);controls.forEach(c=>c.stop());// Reset to \"to\" state and clear GPU layers\nsnapToFinal(words,from,to);};},[preview,isClient,isProcessed,animateBy,stagger,staggerDirection,transitionKey,offsetKey,fromKey,toKey,splitRevision,isCanvas]);// —— MARKERS (debug lines) ——\nuseEffect(()=>{if(!markers||!isClient||isStatic||!containerRef.current)return;if(animationMode===\"appear\")return;if(trigger===\"section\"&&!sectionEl)return;const triggerEl=trigger===\"section\"&&sectionEl?sectionEl:containerRef.current;const vpFrac=viewportFraction(viewport);// Container for all marker lines (fixed overlay)\nconst markerContainer=document.createElement(\"div\");markerContainer.className=\"ta-markers\";markerContainer.style.cssText=\"position:fixed;top:0;left:0;right:0;bottom:0;pointer-events:none;z-index:99999;\";const makeLine=(label,color,side)=>{const line=document.createElement(\"div\");line.style.cssText=`\n        position:absolute; left:0; right:0; height:0;\n        border-top:1px dashed ${color};\n      `;const lbl=document.createElement(\"span\");lbl.style.cssText=`\n        position:absolute; ${side}:8px; top:2px;\n        font:600 10px/1 system-ui,sans-serif;\n        color:${color}; background:rgba(0,0,0,0.75);\n        padding:2px 6px; border-radius:3px; white-space:nowrap;\n      `;lbl.textContent=label;line.appendChild(lbl);return line;};// Viewport trigger line — fixed at the viewport fraction\nconst vpLine=makeLine(`viewport \\xb7 ${viewport}`,\"rgba(136,85,255,0.8)\",\"right\");vpLine.style.top=`${vpFrac*100}%`;markerContainer.appendChild(vpLine);// Element start & end lines — track the trigger element on scroll\nconst startLine=makeLine(\"start\",\"rgba(0,200,100,0.8)\",\"left\");const endLine=makeLine(\"end\",\"rgba(255,80,80,0.8)\",\"left\");markerContainer.appendChild(startLine);markerContainer.appendChild(endLine);document.body.appendChild(markerContainer);let markersRafId=0;const update=()=>{if(!triggerEl||!triggerEl.getBoundingClientRect)return;const rect=triggerEl.getBoundingClientRect();startLine.style.top=`${rect.top}px`;endLine.style.top=`${rect.bottom}px`;};const scheduleUpdate=()=>{cancelAnimationFrame(markersRafId);markersRafId=requestAnimationFrame(update);};update();window.addEventListener(\"scroll\",scheduleUpdate,{passive:true});window.addEventListener(\"resize\",scheduleUpdate);let resizeObserver=null;if(typeof ResizeObserver!==\"undefined\"){resizeObserver=new ResizeObserver(()=>{scheduleUpdate();});resizeObserver.observe(triggerEl);}return()=>{cancelAnimationFrame(markersRafId);resizeObserver?.disconnect();markerContainer.remove();window.removeEventListener(\"scroll\",scheduleUpdate);window.removeEventListener(\"resize\",scheduleUpdate);};},[markers,isClient,isStatic,animationMode,trigger,sectionEl,viewport,splitRevision]);// Placeholder when no layer is connected\nif(isCanvas&&!textLayer){return /*#__PURE__*/_jsx(Placeholder,{style:style});}if(!textLayer){return /*#__PURE__*/_jsx(\"div\",{style:{...style,width:\"100%\",height:\"100%\"}});}// Until the first client-side processing pass completes, keep the source\n// copy in normal flow as a visible placeholder. Without it the component\n// is empty during hydration + splitting, so auto-height frames collapse\n// and the content below jumps on every page load.\nconst showPlaceholder=!isStatic&&!isProcessed&&!isResizingRef.current;return /*#__PURE__*/_jsxs(\"div\",{style:{...style,position:\"relative\",width:\"100%\",height:\"100%\"},children:[srText&&/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",width:1,height:1,padding:0,margin:-1,overflow:\"hidden\",clip:\"rect(0,0,0,0)\",whiteSpace:\"nowrap\",border:0},children:srText}),/*#__PURE__*/_jsx(\"div\",{ref:sourceRef,className:\"ta-fill\",\"aria-hidden\":showPlaceholder?undefined:\"true\",style:showPlaceholder?{position:\"relative\",width:\"100%\",pointerEvents:\"none\"}:{position:\"absolute\",width:\"100%\",height:0,overflow:\"hidden\",opacity:0,pointerEvents:\"none\"},children:React.Children.map(textLayer,child=>/*#__PURE__*/React.isValidElement(child)?/*#__PURE__*/React.cloneElement(child,{style:{...child.props.style,width:\"100%\",height:\"auto\"}}):child)}),/*#__PURE__*/_jsx(\"div\",{ref:containerRef,className:\"ta-fill\",\"aria-hidden\":\"true\",style:{width:\"100%\",height:\"100%\",perspective:`${perspective}px`,opacity:isProcessed||isStatic||isResizingRef.current?undefined:0},children:isStatic&&React.Children.map(textLayer,child=>/*#__PURE__*/React.isValidElement(child)?/*#__PURE__*/React.cloneElement(child,{style:{...child.props.style,width:\"100%\",height:\"auto\"}}):child)})]});}TextAnimator.displayName=\"TextAnimator\";TextAnimator.defaultProps={animationMode:\"appear\",appearDelay:0,preview:false,animateBy:\"word\",trigger:\"layer\",viewport:\"center\",replay:false,markers:false,textAlign:\"inherit\",textWrap:\"inherit\",textIndent:0,htmlTag:\"inherit\"};const animStateControls={opacity:{type:ControlType.Number,title:\"Opacity\",defaultValue:1,min:0,max:1,step:.05},color:{type:ControlType.Color,title:\"Color\",optional:true,description:\"Set on one side only to blend with the text's own color.\"},scaleX:{type:ControlType.Number,title:\"Scale X\",defaultValue:1,min:0,max:3,step:.05},scaleY:{type:ControlType.Number,title:\"Scale Y\",defaultValue:1,min:0,max:3,step:.05},blur:{type:ControlType.Number,title:\"Blur\",defaultValue:0,min:0,max:40,step:1},rotateX:{type:ControlType.Number,title:\"Rotate X\",defaultValue:0,min:-360,max:360,step:1,unit:\"\\xb0\"},rotateY:{type:ControlType.Number,title:\"Rotate Y\",defaultValue:0,min:-360,max:360,step:1,unit:\"\\xb0\"},rotateZ:{type:ControlType.Number,title:\"Rotate Z\",defaultValue:0,min:-360,max:360,step:1,unit:\"\\xb0\"},skewX:{type:ControlType.Number,title:\"Skew X\",defaultValue:0,min:-90,max:90,step:1,unit:\"\\xb0\"},skewY:{type:ControlType.Number,title:\"Skew Y\",defaultValue:0,min:-90,max:90,step:1,unit:\"\\xb0\"}};addPropertyControls(TextAnimator,{textLayer:{type:ControlType.ComponentInstance,title:\"Text Layer\"},textAlign:{type:ControlType.Enum,title:\"Text Align\",options:[\"inherit\",\"left\",\"center\",\"right\",\"justify\"],optionTitles:[\"Inherit\",\"Left\",\"Center\",\"Right\",\"Justify\"],defaultValue:\"inherit\",description:\"Override the text layer's alignment.\"},textWrap:{type:ControlType.Enum,title:\"Text Wrap\",options:[\"inherit\",\"wrap\",\"nowrap\",\"balance\",\"pretty\"],optionTitles:[\"Inherit\",\"Wrap\",\"Nowrap\",\"Balance\",\"Pretty\"],defaultValue:\"inherit\",description:\"Override the text layer's wrapping. Balance evens line lengths; Pretty avoids orphans.\"},textIndent:{type:ControlType.Number,title:\"Indent\",defaultValue:0,min:0,max:10,step:.1,unit:\"em\",description:\"First line indent for each paragraph.\"},htmlTag:{type:ControlType.Enum,title:\"HTML Tag\",options:[\"inherit\",\"p\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"span\",\"div\"],optionTitles:[\"Inherit\",\"p\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"span\",\"div\"],defaultValue:\"inherit\",description:\"Override the HTML tag of the text element.\"},animationMode:{type:ControlType.Enum,title:\"Mode\",defaultValue:\"appear\",options:[\"appear\",\"enter\",\"scroll\"],optionTitles:[\"Appear\",\"Enter\",\"Scroll\"],description:\"Appear plays on load. Enter triggers on scroll. Scroll scrubs with scroll.\"},animateBy:{type:ControlType.Enum,title:\"Animate By\",defaultValue:\"word\",options:[\"character\",\"word\",\"line\",\"element\"],optionTitles:[\"Character\",\"Word\",\"Line\",\"Element\"],description:\"Split granularity for the animation.\"},appearDelay:{type:ControlType.Number,title:\"Appear Delay\",defaultValue:0,min:0,max:10,step:.05,unit:\"s\",displayStepper:true,description:\"Extra delay before the animation plays, added on top of the transition delay. Root-level so it can be exposed as a component variable to stagger nested instances.\",hidden:props=>props.animationMode===\"scroll\"},animation:{type:ControlType.Object,title:\"Animation\",buttonTitle:\"Settings\",icon:\"effect\",controls:{transition:{type:ControlType.Transition,title:\"Transition\",description:\"Duration applies to each unit; Stagger offsets each start. In Scroll mode, only easing is used.\",defaultValue:{type:\"tween\",duration:1,ease:[.76,0,.24,1]}},from:{type:ControlType.Object,title:\"From\",optional:true,buttonTitle:\"Properties\",icon:\"effect\",description:\"Initial state of each unit.\",controls:animStateControls},to:{type:ControlType.Object,title:\"To\",optional:true,buttonTitle:\"Properties\",icon:\"effect\",description:\"Final state of each unit.\",controls:animStateControls},offset:{type:ControlType.Object,title:\"Offset\",optional:true,buttonTitle:\"Properties\",description:\"Starting position offset. % is relative to each unit's size.\",controls:{xValue:{type:ControlType.Number,title:\"X\",defaultValue:0,min:-500,max:500,step:1},xUnit:{type:ControlType.Enum,title:\"X Unit\",options:[\"px\",\"%\",\"vw\",\"vh\"],optionTitles:[\"px\",\"%\",\"vw\",\"vh\"],defaultValue:\"px\",displaySegmentedControl:true},yValue:{type:ControlType.Number,title:\"Y\",defaultValue:0,min:-500,max:500,step:1},yUnit:{type:ControlType.Enum,title:\"Y Unit\",options:[\"px\",\"%\",\"vw\",\"vh\"],optionTitles:[\"px\",\"%\",\"vw\",\"vh\"],defaultValue:\"px\",displaySegmentedControl:true}}},origin:{type:ControlType.Object,title:\"Origin\",buttonTitle:\"Properties\",description:\"Transform pivot point.\",controls:{x:{type:ControlType.Number,title:\"X\",defaultValue:50,min:0,max:100,step:1,unit:\"%\"},y:{type:ControlType.Number,title:\"Y\",defaultValue:50,min:0,max:100,step:1,unit:\"%\"}}},perspective:{type:ControlType.Number,title:\"Perspective\",defaultValue:1e3,min:100,max:5e3,step:50,unit:\"px\",description:\"3D depth. Lower = more dramatic.\",hidden(props){const f=props.animation?.from;const t=props.animation?.to;return!f?.rotateX&&!f?.rotateY&&!f?.rotateZ&&!t?.rotateX&&!t?.rotateY&&!t?.rotateZ;}},stagger:{type:ControlType.Number,title:\"Stagger\",defaultValue:.02,min:0,max:1,step:.01,description:\"Delay between each unit. Higher = more cascade.\",hidden(props){return props.animateBy===\"element\";}},staggerDirection:{type:ControlType.Enum,title:\"Direction\",defaultValue:\"forward\",options:[\"forward\",\"reverse\",\"center\",\"edges\",\"random\"],optionTitles:[\"Forward\",\"Reverse\",\"Center Out\",\"Edges In\",\"Random\"],description:\"Order in which units start animating.\",hidden(props){return props.animateBy===\"element\"||(props.animation?.stagger??.02)===0;}},overflow:{type:ControlType.Enum,title:\"Overflow\",defaultValue:\"visible\",options:[\"visible\",\"clipXY\",\"clipX\",\"clipY\"],optionTitles:[\"Visible\",\"Clip X & Y\",\"Clip X\",\"Clip Y\"],description:\"Clip each unit's bounding box for a reveal effect.\"}}},trigger:{type:ControlType.Enum,title:\"Trigger\",options:[\"layer\",\"section\"],optionTitles:[\"Layer in View\",\"Section in View\"],defaultValue:\"layer\",hidden:props=>props.animationMode===\"appear\"},scrollSection:{type:ControlType.ScrollSectionRef,title:\"Section\",description:\"Scroll section that drives the animation.\",hidden:props=>props.animationMode===\"appear\"||props.trigger!==\"section\"},viewport:{type:ControlType.Enum,title:\"Viewport\",options:[\"top\",\"center\",\"bottom\"],optionTitles:[\"Top\",\"Center\",\"Bottom\"],displaySegmentedControl:true,defaultValue:\"center\",description:\"Where the trigger line sits in the viewport.\",hidden:props=>props.animationMode===\"appear\"},replay:{type:ControlType.Boolean,title:\"Replay\",defaultValue:false,description:\"Replay the enter animation on re-entry.\",hidden:props=>props.animationMode!==\"enter\"},markers:{type:ControlType.Boolean,title:\"Markers\",defaultValue:false,description:\"Show debug markers for trigger and element bounds.\",hidden:props=>props.animationMode===\"appear\"},preview:{type:ControlType.Boolean,title:\"Preview\",defaultValue:false,description:\"Made by [Ludovic Losco](https://www.framer.com/%40ludovic-losco/) — This component is licensed exclusively for use within this template. It may not be copied, extracted, modified, redistributed, or resold — whether standalone or as part of another project or template. Unauthorized use constitutes a license violation.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TextAnimator\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"* @framerIntrinsicWidth 400\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"200\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextAnimator.map"],"mappings":"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"}