{"version":3,"file":"GSAPCascadingText.BoxZG1DF.mjs","names":["useRef","useState","React"],"sources":["https:/framerusercontent.com/modules/cj4VVNWthZueUTOs5B9D/rRKeXATpJQB2FaA32UCN/GSAPCascadingText.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import React,{useLayoutEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";const getScrollableParent=element=>{if(!element||element===document.body){return window;}const style=window.getComputedStyle(element);const isScrollable=style.overflowY===\"scroll\"||style.overflowY===\"auto\";if(isScrollable&&element.scrollHeight>element.clientHeight){return element;}return getScrollableParent(element.parentElement);};// @framerDisableUnlink\nexport default function GsapCascadingText({text,stagger,duration,trigger,scrollActions,enableScrub,enableOpacity,tag,fontStyle,fontColor,width,height,useOnViewMode,startDelay}){const containerRef=useRef(null);const timelineRef=useRef(null);const[scriptsLoaded,setScriptsLoaded]=useState(false);const isEditor=RenderTarget.current()===RenderTarget.canvas;useLayoutEffect(()=>{const importGsap=async()=>{try{const gsapModule=await import(\"https://esm.sh/gsap\");window.gsap=gsapModule.default;const{SplitText}=await import(\"https://esm.sh/gsap/SplitText\");window.SplitText=SplitText;const{ScrollTrigger}=await import(\"https://esm.sh/gsap/ScrollTrigger\");window.ScrollTrigger=ScrollTrigger;window.gsap.registerPlugin(window.SplitText,window.ScrollTrigger);setScriptsLoaded(true);}catch(error){console.error(\"Failed to load GSAP modules from esm.sh:\",error);}};importGsap();},[]);useLayoutEffect(()=>{if(isEditor||!containerRef.current||!scriptsLoaded)return;// Kill previous timeline to prevent duplicates on re-render\nif(timelineRef.current){timelineRef.current.kill();}const letters1=containerRef.current.querySelectorAll(\".st-char-1\");// Set initial state for all characters\nconst setVars={rotateX:-90,transformOrigin:\"bottom center\",display:\"inline-block\"};if(enableOpacity){setVars.opacity=0;}window.gsap.set(letters1,setVars);let scrollTriggerConfig={};if(useOnViewMode){scrollTriggerConfig={trigger:containerRef.current,start:\"top 80%\",toggleActions:\"play none none none\"};}else{const scroller=getScrollableParent(containerRef.current);const startString=trigger.startViewport===\"value\"?`${trigger.startElement} ${trigger.startValue}%`:`${trigger.startElement} ${trigger.startViewport}`;const endString=trigger.endMode===\"duration\"?`+=${trigger.endDuration}%`:trigger.endViewport===\"value\"?`${trigger.endElement} ${trigger.endValue}%`:`${trigger.endElement} ${trigger.endViewport}`;const toggleActionsString=`${scrollActions.onEnter} ${scrollActions.onLeave} ${scrollActions.onEnterBack} ${scrollActions.onLeaveBack}`;scrollTriggerConfig={trigger:containerRef.current,scroller:scroller,start:startString,end:endString,toggleActions:toggleActionsString,markers:trigger.showMarkers,pin:trigger.pin,pinType:\"fixed\",anticipatePin:1};if(enableScrub){scrollTriggerConfig.scrub=1;}}const tl=window.gsap.timeline({scrollTrigger:scrollTriggerConfig});const toVars={duration:duration,rotateX:0,ease:\"power3.out\",stagger:stagger};if(enableOpacity){toVars.opacity=1;}if(useOnViewMode){toVars.delay=startDelay;}// Animate all characters\ntl.to(letters1,toVars);timelineRef.current=tl;return()=>{tl.kill();};},[text,stagger,duration,trigger,scrollActions,enableScrub,enableOpacity,tag,fontStyle,fontColor,scriptsLoaded,isEditor,width,height,useOnViewMode,startDelay]);const Tag=tag;const containerStyle={height,width,display:isEditor?\"block\":\"flex\",alignItems:\"center\",...!isEditor&&{perspective:\"500px\",perspectiveOrigin:\"50% 100%\",transformStyle:\"preserve-3d\"}};const tagStyle={width:\"100%\",fontSize:fontStyle?.fontSize,fontWeight:fontStyle?.fontWeight,fontFamily:fontStyle?.fontFamily,color:fontColor,margin:0,whiteSpace:\"pre-wrap\",textAlign:fontStyle?.textAlign,lineHeight:fontStyle?.lineHeight,letterSpacing:fontStyle?.letterSpacing,overflowWrap:\"break-word\",wordBreak:\"normal\",...fontStyle?.letterSpacing&&{marginRight:-fontStyle.letterSpacing},...!isEditor&&{transformStyle:\"preserve-3d\"}};// Split text manually like wavytext.tsx\nconst processedText=text?text.replace(/\\\\n/g,\"\\n\"):\"\";const allChars=processedText.split(\"\");// Identify words for proper line breaking\nconst words=[];if(!isEditor){let wordStart=0;let inWord=false;allChars.forEach((char,index)=>{const isWhitespace=/\\s/.test(char);if(!isWhitespace&&!inWord){wordStart=index;inWord=true;}else if(isWhitespace&&inWord){words.push({start:wordStart,end:index-1});inWord=false;}});if(inWord){words.push({start:wordStart,end:allChars.length-1});}}return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:containerStyle,children:/*#__PURE__*/_jsx(Tag,{style:tagStyle,children:isEditor?text:words.map((word,wordIndex)=>{// Find spaces after this word\nconst nextWordStart=wordIndex<words.length-1?words[wordIndex+1].start:allChars.length;const spacesAfter=[];for(let i=word.end+1;i<nextWordStart;i++){if(allChars[i]&&/\\s/.test(allChars[i])){spacesAfter.push(i);}}return /*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",wordBreak:\"keep-all\"},children:allChars.slice(word.start,word.end+1).map((char,charIndex)=>{const index=word.start+charIndex;if(char===\"\\n\"){return /*#__PURE__*/_jsx(\"br\",{},index);}const setVars={position:\"relative\",display:\"inline-block\"};return /*#__PURE__*/_jsx(\"span\",{className:\"st-char-wrapper\",style:setVars,children:/*#__PURE__*/_jsx(\"span\",{className:\"st-char-1\",style:{display:\"inline-block\"},children:char===\" \"?\"\\xa0\":char})},index);})}),spacesAfter.map(spaceIndex=>{const setVars={position:\"relative\",display:\"inline-block\"};return /*#__PURE__*/_jsx(\"span\",{className:\"st-char-wrapper\",style:setVars,children:/*#__PURE__*/_jsx(\"span\",{className:\"st-char-1\",style:{display:\"inline-block\"},children:\"\\xa0\"})},spaceIndex);})]},`word-${wordIndex}`);})})});}GsapCascadingText.defaultProps={text:\"Scroll to Reveal\",stagger:.04,duration:.8,trigger:{pin:false,startElement:\"top\",startViewport:\"value\",startValue:80,endMode:\"duration\",endElement:\"bottom\",endViewport:\"top\",endValue:0,endDuration:100,showMarkers:true},scrollActions:{onEnter:\"play\",onLeave:\"pause\",onEnterBack:\"resume\",onLeaveBack:\"reverse\"},enableScrub:true,enableOpacity:true,tag:\"p\",fontStyle:{fontFamily:\"Inter\",fontSize:50,fontWeight:700,lineHeight:1.2,letterSpacing:0},fontColor:\"#111111\",useOnViewMode:true,startDelay:0};const actionOptions=[\"play\",\"pause\",\"resume\",\"reverse\",\"restart\",\"reset\",\"complete\",\"none\"];addPropertyControls(GsapCascadingText,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"Scroll to Reveal\",display:\"multiline\",displayTextArea:true},startDelay:{title:\"Start Delay\",type:ControlType.Number,defaultValue:0,min:0,max:10,step:.1,suffix:\"s\",hidden:props=>!props.useOnViewMode},tag:{type:ControlType.Enum,title:\"Tag\",options:[\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"p\",\"span\"],optionTitles:[\"H1\",\"H2\",\"H3\",\"H4\",\"H5\",\"H6\",\"Paragraph\",\"Span\"],defaultValue:\"p\"},fontStyle:{type:ControlType.Font,title:\"Font\",controls:\"extended\"},fontColor:{title:\"Font Color\",type:ControlType.Color,defaultValue:\"#111111\"},stagger:{type:ControlType.Number,title:\"Stagger\",defaultValue:.04,min:0,max:.5,step:.01,displayStepper:true},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:.8,min:.1,max:5,step:.1,displayStepper:true,description:\"per character\"},enableOpacity:{type:ControlType.Boolean,title:\"Enable Opacity\",defaultValue:true,description:\"Explore more components at [THE DESIGN FUTURIST](https://thedesignfuturist.zip)\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"GsapCascadingText\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./GSAPCascadingText.map"],"mappings":"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"}