{"version":3,"file":"ScrollRevealText.CTsRNVzE.mjs","names":["useRef","useState","useMemo","__esmMin","pe","init_npm_react_18_3_1","init_ssg_sandbox_shims","window","_e","ce","de","init_framer_B6PCHH0A","useIsStaticRenderer","ControlType","addPropertyControls","ScrollRevealText","containerRef","spanRefs","lineRefs","isVisible","rafId","scheduled","lineGroups","setLineGroups","isStatic","preset","props","PRESETS","splitMode","revealDirection","stagger","xOffset","yOffset","blur","rotateX","perspective","scale","isLinesMode","tokens","text","spans","unitIdx","isSpace","token","chars","ch","idx","groups","current","span","i","max","s","detect","container","wordEls","positions","el","lineWordGis","currentLine","lastTop","top","gi","lines","start","wordGis","end","li","wordGroups","k","font","totalUnits","unitCount","allSpans","dur","totalTime","applyProgress","time","scrollP","p","lineIdx","tf","pct","colorRevealed","colorHidden","tx","ty","trigger","started","startAnimation","startTime","animate","elapsed","now","rawP","onLoadDuration","observer","entry","startFrac","offsetStart","endFrac","offsetEnd","update","vh","rect","range","onScroll","Tag","htmlTag","containerStyle","style","renderWordGroup","group","char","groupIndices","DEFAULT_TEXT","isCustom","init_ScrollRevealText","init_jsx_runtime"],"sources":["https:/framerusercontent.com/modules/Ivn82YaFOfYI3tIkuGsA/ymLCSaN7wX7cJKeayNed/ScrollRevealText.js"],"sourcesContent":["// ═══════════════════════════════════════════════════════════════════════════\n// SCROLL REVEAL TEXT — LINES / WORDS / CHARACTERS ANIMATION\n// ═══════════════════════════════════════════════════════════════════════════\n//\n// WHAT THIS COMPONENT DOES:\n// A scroll-linked and on-load text reveal component that splits text into\n// lines, words, or characters, then animates each unit with staggered\n// opacity, color, blur, scale, and 3D transforms.\n//\n// WHY CODE IS REQUIRED:\n// - Per-character/word/line text splitting with individual animation.\n// - Masked line reveal (overflow hidden + translateY) requires DOM\n//   measurement and dynamic restructuring not possible natively.\n// - Real-time color interpolation via CSS color-mix per unit.\n// - Per-unit blur, scale, 3D perspective transforms during scroll.\n// - Stagger timing calculated per animation unit requires custom logic.\n// - Direct DOM manipulation via refs for 60FPS scroll performance.\n// - IntersectionObserver-gated animation to avoid off-screen CPU waste.\n//\n// KEY FEATURES:\n// - Split Modes: Lines (masked reveal), Words, or Characters.\n// - Trigger: Scroll-linked or On Load (fires when element appears).\n// - Staggered Reveal: Each unit delays after the previous for wave effect.\n// - Color Transition: Smooth CSS color-mix from hidden to revealed color.\n// - Blur Effect: Hidden text starts blurred and sharpens on reveal.\n// - Scale Entrance: Units grow from configurable scale to full size.\n// - 3D Perspective: Optional rotateX tilt with configurable perspective.\n// - HTML Tag: Semantic tag (h1-h6, p, div, span) for SEO/accessibility.\n// - Presets: 12 one-click presets + full Custom mode.\n// - Dark Mode: CSS color-mix respects Framer design tokens automatically.\n// - High Performance: Direct DOM updates, no React re-renders during anim.\n//\n// ═══════════════════════════════════════════════════════════════════════════\n// Created by AliThemes.com\n// Powered by Framer\n// ═══════════════════════════════════════════════════════════════════════════\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useRef,useEffect,useMemo,useState}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";const DEFAULT_TEXT=\"Scroll down and watch each character come alive with smooth, staggered animation.\";const PRESETS={Default:{splitMode:\"Characters\",revealDirection:\"Left to Right\",stagger:.2,xOffset:7,yOffset:0,blur:0,rotateX:0,perspective:800,scale:1},\"Fade In Up\":{splitMode:\"Characters\",revealDirection:\"Left to Right\",stagger:.15,xOffset:0,yOffset:25,blur:0,rotateX:0,perspective:800,scale:1},\"Blur Reveal\":{splitMode:\"Characters\",revealDirection:\"Left to Right\",stagger:.2,xOffset:0,yOffset:0,blur:8,rotateX:0,perspective:800,scale:1},Cinematic:{splitMode:\"Characters\",revealDirection:\"Left to Right\",stagger:.12,xOffset:10,yOffset:20,blur:4,rotateX:0,perspective:800,scale:1},\"3D Flip\":{splitMode:\"Characters\",revealDirection:\"Left to Right\",stagger:.15,xOffset:0,yOffset:0,blur:2,rotateX:45,perspective:800,scale:1},\"Wave RTL\":{splitMode:\"Characters\",revealDirection:\"Right to Left\",stagger:.1,xOffset:5,yOffset:15,blur:0,rotateX:0,perspective:800,scale:1},Typewriter:{splitMode:\"Characters\",revealDirection:\"Left to Right\",stagger:.4,xOffset:0,yOffset:0,blur:0,rotateX:0,perspective:800,scale:1},\"Glitch Rise\":{splitMode:\"Characters\",revealDirection:\"Left to Right\",stagger:.08,xOffset:15,yOffset:40,blur:10,rotateX:30,perspective:600,scale:1},\"Soft Words\":{splitMode:\"Words\",revealDirection:\"Left to Right\",stagger:.3,xOffset:0,yOffset:12,blur:3,rotateX:0,perspective:800,scale:1},\"Cascade Down\":{splitMode:\"Characters\",revealDirection:\"Right to Left\",stagger:.12,xOffset:0,yOffset:-30,blur:5,rotateX:-20,perspective:900,scale:1},\"Masked Lines\":{splitMode:\"Lines\",revealDirection:\"Left to Right\",stagger:.15,xOffset:0,yOffset:0,blur:0,rotateX:0,perspective:800,scale:1},\"Scale Pop\":{splitMode:\"Characters\",revealDirection:\"Left to Right\",stagger:.1,xOffset:0,yOffset:15,blur:2,rotateX:0,perspective:800,scale:.5}};/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function ScrollRevealText(props){const containerRef=useRef(null);const spanRefs=useRef([]);const lineRefs=useRef([]);const isVisible=useRef(false);const rafId=useRef(0);const scheduled=useRef(false);const[lineGroups,setLineGroups]=useState(null);const isStatic=useIsStaticRenderer();const preset=props.preset!==\"Custom\"?PRESETS[props.preset]:null;const{text,font,colorHidden,colorRevealed,htmlTag,trigger,onLoadDuration,offsetStart,offsetEnd,style}=props;const splitMode=preset?.splitMode??props.splitMode;const revealDirection=preset?.revealDirection??props.revealDirection;const stagger=preset?.stagger??props.stagger;const xOffset=preset?.xOffset??props.xOffset;const yOffset=preset?.yOffset??props.yOffset;const blur=preset?.blur??props.blur;const rotateX=preset?.rotateX??props.rotateX;const perspective=preset?.perspective??props.perspective;const scale=preset?.scale??props.scale;const isLinesMode=splitMode===\"Lines\";// Build word groups and animation unit indices\nconst{allSpans,unitCount,wordGroups}=useMemo(()=>{const tokens=String(text).split(/(\\s+)/);const spans=[];let unitIdx=0;tokens.forEach(token=>{const isSpace=/^\\s+$/.test(token);const chars=Array.from(token);if(isSpace){chars.forEach(ch=>spans.push({char:ch,unit:-1,isSpace:true}));}else if(splitMode===\"Words\"||splitMode===\"Lines\"){const idx=unitIdx++;chars.forEach(ch=>spans.push({char:ch,unit:idx,isSpace:false}));}else{chars.forEach(ch=>spans.push({char:ch,unit:unitIdx++,isSpace:false}));}});const groups=[];let current=null;spans.forEach((span,i)=>{if(span.isSpace){if(current){groups.push(current);current=null;}groups.push({type:\"space\",spans:[{...span,idx:i}]});}else{if(!current)current={type:\"word\",spans:[]};current.spans.push({...span,idx:i});}});if(current)groups.push(current);if(revealDirection===\"Right to Left\"&&!isLinesMode){const max=unitIdx-1;spans.forEach(s=>{if(!s.isSpace)s.unit=max-s.unit;});}return{allSpans:spans,unitCount:unitIdx,wordGroups:groups};},[text,splitMode,revealDirection,isLinesMode]);// Lines mode: detect line breaks after render\nuseEffect(()=>{if(!isLinesMode||isStatic){if(lineGroups!==null)setLineGroups(null);return;}const detect=()=>{const container=containerRef.current;if(!container)return;const wordEls=container.querySelectorAll(\"[data-wg]\");if(wordEls.length===0)return;const positions=[];wordEls.forEach(el=>{positions.push({gi:parseInt(el.dataset.wg),top:Math.round(el.getBoundingClientRect().top)});});const lineWordGis=[];let currentLine=[];let lastTop=-Infinity;positions.forEach(({gi,top})=>{if(currentLine.length>0&&Math.abs(top-lastTop)>3){lineWordGis.push([...currentLine]);currentLine=[];}currentLine.push(gi);lastTop=top;});if(currentLine.length>0)lineWordGis.push([...currentLine]);const lines=lineWordGis.map((wordGis,li)=>{const start=wordGis[0];const end=li<lineWordGis.length-1?lineWordGis[li+1][0]:wordGroups.length;return Array.from({length:end-start},(_,k)=>start+k);});if(revealDirection===\"Right to Left\")lines.reverse();setLineGroups(lines);};requestAnimationFrame(()=>requestAnimationFrame(detect));},[text,splitMode,revealDirection,font,isLinesMode,wordGroups.length]);// ── Animation engine ───────────────────────────────────────────────────\nuseEffect(()=>{const container=containerRef.current;if(!container)return;if(isLinesMode&&!lineGroups)return;const totalUnits=isLinesMode?lineGroups.length:unitCount;if(totalUnits===0)return;if(!isLinesMode){spanRefs.current=spanRefs.current.slice(0,allSpans.length);}const dur=.7;const totalTime=dur+(totalUnits-1)*stagger;const applyProgress=scrollP=>{const time=scrollP*totalTime;if(isLinesMode){lineRefs.current.forEach((el,lineIdx)=>{if(!el)return;const p=totalUnits<=1?scrollP:Math.max(0,Math.min(1,(time-lineIdx*stagger)/dur));const ty=((1-p)*100).toFixed(1);let tf=`translateY(${ty}%)`;if(rotateX!==0){tf=`perspective(${perspective}px) rotateX(${(rotateX*(1-p)).toFixed(1)}deg) ${tf}`;}if(scale<1){tf+=` scale(${(scale+(1-scale)*p).toFixed(3)})`;}el.style.transform=tf;el.style.opacity=`${.3+p*.7}`;el.style.filter=blur>0?`blur(${(blur*(1-p)).toFixed(1)}px)`:\"\";const pct=Math.round(p*100);el.style.color=`color-mix(in srgb, ${colorRevealed} ${pct}%, ${colorHidden})`;});}else{spanRefs.current.forEach((el,i)=>{if(!el)return;const span=allSpans[i];if(!span||span.isSpace)return;const p=totalUnits<=1?scrollP:Math.max(0,Math.min(1,(time-span.unit*stagger)/dur));el.style.opacity=`${.3+p*.7}`;const tx=(-xOffset+xOffset*p).toFixed(1);const ty=(yOffset*(1-p)).toFixed(1);let tf=\"\";if(rotateX!==0){tf=`perspective(${perspective}px) rotateX(${(rotateX*(1-p)).toFixed(1)}deg) `;}tf+=`translateX(${tx}px) translateY(${ty}px)`;if(scale<1){tf+=` scale(${(scale+(1-scale)*p).toFixed(3)})`;}el.style.transform=tf;el.style.filter=blur>0?`blur(${(blur*(1-p)).toFixed(1)}px)`:\"\";const pct=Math.round(p*100);el.style.color=`color-mix(in srgb, ${colorRevealed} ${pct}%, ${colorHidden})`;});}};// Framer canvas: show text fully visible, skip animation\nif(isStatic){applyProgress(1);return;}if(trigger===\"On Load\"){let started=false;applyProgress(0);const startAnimation=()=>{if(started)return;started=true;const startTime=performance.now();const animate=now=>{const elapsed=(now-startTime)/1e3;const rawP=Math.min(1,elapsed/onLoadDuration);applyProgress(1-Math.pow(1-rawP,3));if(rawP<1)rafId.current=requestAnimationFrame(animate);};rafId.current=requestAnimationFrame(animate);};const observer=new IntersectionObserver(([entry])=>{if(entry.isIntersecting){observer.disconnect();startAnimation();}},{threshold:.1});observer.observe(container);return()=>{observer.disconnect();cancelAnimationFrame(rafId.current);};}// Scroll-based animation\nconst startFrac=offsetStart/100;const endFrac=offsetEnd/100;const update=()=>{const vh=window.innerHeight;const rect=container.getBoundingClientRect();const range=(startFrac-endFrac)*vh;let scrollP;if(isLinesMode){scrollP=1;if(range>0){scrollP=Math.max(0,Math.min(1,(startFrac*vh-rect.top)/range));if(scrollP===0&&rect.top<vh&&rect.bottom>0)scrollP=1;}}else{if(range<=0)return;scrollP=Math.max(0,Math.min(1,(startFrac*vh-rect.top)/range));}applyProgress(scrollP);};const observer=new IntersectionObserver(([entry])=>{isVisible.current=entry.isIntersecting;if(entry.isIntersecting)update();},{rootMargin:\"200px\"});observer.observe(container);const onScroll=()=>{if(!isVisible.current||scheduled.current)return;scheduled.current=true;rafId.current=requestAnimationFrame(()=>{update();scheduled.current=false;});};window.addEventListener(\"scroll\",onScroll,{passive:true});window.addEventListener(\"resize\",onScroll);update();return()=>{observer.disconnect();cancelAnimationFrame(rafId.current);window.removeEventListener(\"scroll\",onScroll);window.removeEventListener(\"resize\",onScroll);};},[allSpans,unitCount,lineGroups,isLinesMode,isStatic,stagger,xOffset,yOffset,blur,rotateX,perspective,scale,trigger,onLoadDuration,offsetStart,offsetEnd,colorHidden,colorRevealed]);// ── Render ─────────────────────────────────────────────────────────────\nconst Tag=htmlTag||\"div\";const containerStyle={display:\"inline-block\",...font,...style};const renderWordGroup=(group,gi)=>{if(group.type===\"word\"){return /*#__PURE__*/_jsx(\"span\",{\"data-wg\":gi,style:{whiteSpace:\"nowrap\",display:\"inline\"},children:group.spans.map(({char,idx})=>/*#__PURE__*/_jsx(\"span\",{ref:el=>{spanRefs.current[idx]=el;},style:{display:\"inline-block\",willChange:isLinesMode?undefined:\"transform, opacity, color, filter\"},children:char},idx))},`w-${gi}`);}return group.spans.map(({char,idx})=>/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\"},children:char===\" \"?\"\\xa0\":char},idx));};// Lines mode with detected lines → render with overflow-hidden wrappers\nif(isLinesMode&&lineGroups){return /*#__PURE__*/_jsx(Tag,{ref:containerRef,style:containerStyle,children:lineGroups.map((groupIndices,lineIdx)=>/*#__PURE__*/_jsx(\"div\",{style:{overflow:\"hidden\",display:\"block\"},children:/*#__PURE__*/_jsx(\"div\",{ref:el=>{lineRefs.current[lineIdx]=el;},style:{display:\"block\",willChange:\"transform, opacity, filter\"},children:groupIndices.map(gi=>renderWordGroup(wordGroups[gi],gi))})},lineIdx))});}// Characters / Words mode (or Lines measurement phase)\nreturn /*#__PURE__*/_jsx(Tag,{ref:containerRef,style:containerStyle,children:wordGroups.map((group,gi)=>renderWordGroup(group,gi))});}// ── Defaults ───────────────────────────────────────────────────────────────\nScrollRevealText.defaultProps={preset:\"Default\",text:DEFAULT_TEXT,font:{fontFamily:\"Inter\",fontWeight:600,fontSize:62,lineHeight:\"1.4em\",letterSpacing:\"-0.02em\"},colorHidden:\"#9ca3af\",colorRevealed:\"#111827\",htmlTag:\"div\",trigger:\"Scroll\",onLoadDuration:1.5,splitMode:\"Characters\",revealDirection:\"Left to Right\",stagger:.2,xOffset:7,yOffset:0,blur:0,rotateX:0,perspective:800,scale:1,offsetStart:80,offsetEnd:20};// ── Property Controls ──────────────────────────────────────────────────────\nconst isCustom=p=>p.preset===\"Custom\";addPropertyControls(ScrollRevealText,{preset:{type:ControlType.Enum,title:\"Preset\",defaultValue:\"Default\",options:[\"Default\",\"Fade In Up\",\"Blur Reveal\",\"Cinematic\",\"3D Flip\",\"Wave RTL\",\"Typewriter\",\"Glitch Rise\",\"Soft Words\",\"Cascade Down\",\"Masked Lines\",\"Scale Pop\",\"Custom\"]},text:{type:ControlType.String,title:\"Content\",defaultValue:DEFAULT_TEXT,displayTextArea:true},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"62px\",fontWeight:600,letterSpacing:\"-0.02em\",lineHeight:\"1.4em\"}},htmlTag:{type:ControlType.Enum,title:\"HTML Tag\",defaultValue:\"div\",options:[\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"p\",\"div\",\"span\"],optionTitles:[\"H1\",\"H2\",\"H3\",\"H4\",\"H5\",\"H6\",\"P\",\"DIV\",\"SPAN\"]},// ── Colors ─────────────────────────────────────────────────────────────\ncolorRevealed:{type:ControlType.Color,title:\"Color\",defaultValue:\"#111827\"},colorHidden:{type:ControlType.Color,title:\"Hidden Color\",defaultValue:\"#9ca3af\"},// ── Trigger ────────────────────────────────────────────────────────────\ntrigger:{type:ControlType.Enum,title:\"Trigger\",defaultValue:\"Scroll\",options:[\"Scroll\",\"On Load\"],displaySegmentedControl:true},onLoadDuration:{type:ControlType.Number,title:\"Duration\",defaultValue:1.5,min:.3,max:5,step:.1,unit:\"s\",hidden:p=>p.trigger!==\"On Load\"},// ── Animation (Custom only) ────────────────────────────────────────────\nsplitMode:{type:ControlType.Enum,title:\"Split\",options:[\"Characters\",\"Words\",\"Lines\"],defaultValue:\"Characters\",hidden:p=>!isCustom(p)},revealDirection:{type:ControlType.Enum,title:\"Direction\",options:[\"Left to Right\",\"Right to Left\"],defaultValue:\"Left to Right\",displaySegmentedControl:true,hidden:p=>!isCustom(p)},stagger:{type:ControlType.Number,title:\"Stagger\",defaultValue:.2,min:0,max:1,step:.05,hidden:p=>!isCustom(p)},xOffset:{type:ControlType.Number,title:\"X Offset\",defaultValue:7,min:0,max:30,step:1,hidden:p=>!isCustom(p)},yOffset:{type:ControlType.Number,title:\"Y Offset\",defaultValue:0,min:-50,max:50,step:1,description:\"Positive = fade in up, negative = fade in down\",hidden:p=>!isCustom(p)},scale:{type:ControlType.Number,title:\"Scale\",defaultValue:1,min:0,max:1,step:.05,description:\"Starting scale (1 = no scale animation)\",hidden:p=>!isCustom(p)},blur:{type:ControlType.Number,title:\"Blur\",defaultValue:0,min:0,max:20,step:.5,description:\"Blur on hidden text (0 = off)\",hidden:p=>!isCustom(p)},rotateX:{type:ControlType.Number,title:\"3D Rotate X\",defaultValue:0,min:-90,max:90,step:5,description:\"3D tilt angle (0 = off)\",hidden:p=>!isCustom(p)},perspective:{type:ControlType.Number,title:\"Perspective\",defaultValue:800,min:200,max:2e3,step:50,hidden:p=>!isCustom(p)||p.rotateX===0},// ── Scroll Trigger ─────────────────────────────────────────────────────\noffsetStart:{type:ControlType.Number,title:\"Start %\",defaultValue:80,min:0,max:100,unit:\"%\",description:\"Viewport position where reveal begins\",hidden:p=>p.trigger!==\"Scroll\"},offsetEnd:{type:ControlType.Number,title:\"End %\",defaultValue:20,min:0,max:100,unit:\"%\",description:\"Viewport position where reveal completes\",hidden:p=>p.trigger!==\"Scroll\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ScrollRevealText\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ScrollRevealText.map"],"mappings":"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"}