{"version":3,"file":"TextMask.CyT5w2Ps.mjs","names":["useRef","useState","useCallback","useMemo","_Fragment"],"sources":["https:/framerusercontent.com/modules/CIhUYMxXwlZ8gu7hxhWi/ThATPUCjwj37l66vyHWb/TextMask.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect,useRef,useState,useMemo,useCallback}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{motion,useInView,AnimatePresence}from\"framer-motion\";/**\n * @framerDisableUnlink\n *\n * Text Mask Animation - Private Component\n *\n * Animates text by revealing each line from bottom to top with a mask effect.\n * Enhanced with viewport trigger controls.\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function TextMask(props){const{text=\"Text Mask Animation\",textColor=\"#000000\",backgroundColor=\"#FFFFFF\",font,animationDelay=.1,animationDuration=.5,animationStagger=.07,lineHeight=1.5,style,tag=\"div\",balanceText=false,rotate=0,initialYOffset=80,exitYOffset=-80,enableExitAnimation=true,exitAnimationStagger=.04,exitAnimationDuration=.18,customEasing=\"0.32, 0.94, 0.6, 1\",textIndent=0,// Animation trigger controls\nanimationTrigger=\"inView\",triggerOnce=true,viewportAmount=.3}=props;const containerRef=useRef(null);const measureRef=useRef(null);// Enhanced viewport detection - only when needed\nconst isInView=useInView(containerRef,{once:animationTrigger===\"inView\"?triggerOnce:false,amount:animationTrigger===\"inView\"?viewportAmount:0});const isStatic=useIsStaticRenderer();const[lineTexts,setLineTexts]=useState([]);const[autoAnimationReady,setAutoAnimationReady]=useState(false);// Auto trigger effect - ensure animation starts after mount\nuseEffect(()=>{if(animationTrigger===\"auto\"){// Small delay to ensure component is fully mounted and measured\nconst timer=setTimeout(()=>{setAutoAnimationReady(true);},100);return()=>clearTimeout(timer);}else{setAutoAnimationReady(false);}},[animationTrigger]);// Determine if animation should be active\nconst shouldAnimate=animationTrigger===\"auto\"?autoAnimationReady:isInView;// Robust line splitting: group graphemes by top position\nconst measureLines=useCallback(()=>{if(isStatic||!containerRef.current||!measureRef.current)return;const tempDiv=measureRef.current;const containerWidth=containerRef.current.getBoundingClientRect().width||containerRef.current.clientWidth;tempDiv.style.width=containerWidth+\"px\";const node=tempDiv.firstChild;if(!node){setLineTexts([text]);return;}try{let graphemes;// @ts-ignore\nif(typeof Intl!==\"undefined\"&&Intl.Segmenter){// @ts-ignore\ngraphemes=Array.from(new Intl.Segmenter().segment(text),s=>s.segment);}else{graphemes=Array.from(text);}const ranges=[];let start=0;let prevTop=null;let range=document.createRange();for(let i=0;i<graphemes.length;i++){range.setStart(node,start);range.setEnd(node,i+1);const rects=range.getClientRects();if(!rects.length)continue;const top=Math.round(rects[rects.length-1].top);if(prevTop===null){prevTop=top;}if(top!==prevTop){ranges.push({start,end:i,top:prevTop});start=i;prevTop=top;}}if(start<graphemes.length){range.setStart(node,start);range.setEnd(node,graphemes.length);const rects=range.getClientRects();if(rects.length){ranges.push({start,end:graphemes.length,top:Math.round(rects[rects.length-1].top)});}}const lines=ranges.map(r=>graphemes.slice(r.start,r.end).join(\"\"));setLineTexts(lines.length?lines:[text]);}catch{setLineTexts(text.split(\"\\n\"));}},[isStatic,text]);useEffect(()=>{if(isStatic)return;let observer=null;let rafId=null;let lastWidth=0;const debouncedMeasure=()=>{if(rafId)cancelAnimationFrame(rafId);rafId=requestAnimationFrame(()=>{if(containerRef.current){const currentWidth=containerRef.current.getBoundingClientRect().width;if(Math.abs(currentWidth-lastWidth)>1||lastWidth===0){lastWidth=currentWidth;measureLines();}}else{measureLines();}});};debouncedMeasure();if(containerRef.current){observer=new ResizeObserver(debouncedMeasure);observer.observe(containerRef.current);}window.addEventListener(\"resize\",debouncedMeasure,{passive:true});return()=>{observer?.disconnect();window.removeEventListener(\"resize\",debouncedMeasure);if(rafId)cancelAnimationFrame(rafId);};},[measureLines,isStatic,text,font,lineHeight,textIndent]);const containerVariants=useMemo(()=>({hidden:{},visible:{transition:{staggerChildren:animationStagger,delayChildren:animationDelay,staggerDirection:1}},exit:enableExitAnimation?{transition:{staggerChildren:exitAnimationStagger,staggerDirection:1}}:undefined}),[animationStagger,animationDelay,enableExitAnimation,exitAnimationStagger]);const parseEasing=easingStr=>{try{return easingStr.split(\",\").map(val=>parseFloat(val.trim())).filter(val=>!isNaN(val)).slice(0,4);}catch{return[.32,.94,.6,1];}};const lineVariants=useMemo(()=>({hidden:{y:initialYOffset,rotate:rotate,willChange:\"transform\"},visible:{y:0,rotate:0,transition:{duration:animationDuration,ease:parseEasing(customEasing)}},exit:enableExitAnimation?{y:exitYOffset,transition:{duration:exitAnimationDuration,ease:parseEasing(customEasing)}}:undefined}),[initialYOffset,animationDuration,enableExitAnimation,exitYOffset,exitAnimationDuration]);const Tag=tag;const balanceStyle=useMemo(()=>balanceText?{textWrap:\"balance\"}:{},[balanceText]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{position:\"relative\",width:\"100%\",height:\"100%\",minWidth:0,minHeight:0,display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",overflow:\"hidden\",backgroundColor,...style},children:isStatic?/*#__PURE__*/_jsx(Tag,{style:{...font,color:textColor,width:\"100%\",minWidth:0,height:\"100%\",lineHeight:lineHeight,textIndent,margin:0,wordBreak:\"break-word\",...balanceStyle},children:text}):/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{ref:measureRef,style:{position:\"absolute\",left:0,top:0,visibility:\"hidden\",width:\"100%\",...font,lineHeight,textIndent,wordBreak:\"break-word\",whiteSpace:\"pre-wrap\",pointerEvents:\"none\",zIndex:-1,...balanceStyle},children:text}),/*#__PURE__*/_jsx(Tag,{as:undefined,style:{...font,color:textColor,width:\"100%\",minWidth:0,height:\"100%\",lineHeight:lineHeight,margin:0,wordBreak:\"break-word\",...balanceStyle},children:/*#__PURE__*/_jsx(AnimatePresence,{mode:\"wait\",initial:false,children:(()=>{const lines=lineTexts.length>0?lineTexts:text.split(\"\\n\");const isInline=[\"p\",\"span\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"].includes(tag);const Container=isInline?motion.span:motion.div;const Wrapper=isInline?\"span\":\"div\";const MotionLine=isInline?motion.span:motion.div;return /*#__PURE__*/_jsx(Container,{variants:containerVariants,initial:\"hidden\",animate:shouldAnimate?\"visible\":\"hidden\",exit:enableExitAnimation?\"exit\":undefined,style:{width:\"100%\",willChange:\"transform\",height:\"100%\",display:isInline?\"block\":undefined},children:lines.map((line,index)=>/*#__PURE__*/_jsx(Wrapper,{style:{display:isInline?\"block\":undefined,overflow:\"hidden\",height:`${lineHeight}em`,width:\"100%\"},children:/*#__PURE__*/_jsx(MotionLine,{variants:lineVariants,style:{...index===0?{textIndent}:{},willChange:\"transform\",transform:\"translate3d(0,0,0)\",display:isInline?\"inline-block\":undefined,width:\"100%\"},children:line||\"\\xa0\"})},`${index}-${line}`))},text);})()})})]})});}addPropertyControls(TextMask,{// Animation Trigger\nanimationTrigger:{type:ControlType.Enum,title:\"Animation Trigger\",options:[\"inView\",\"auto\"],optionTitles:[\"Layer in view\",\"Appear\"],defaultValue:\"inView\",description:\"Trigger animation when in viewport or automatically\"},triggerOnce:{type:ControlType.Boolean,title:\"Trigger Once\",defaultValue:true,enabledTitle:\"Once\",disabledTitle:\"Repeat\",description:\"Animation triggers only once or every time in view\",hidden:({animationTrigger})=>animationTrigger===\"auto\"},viewportAmount:{type:ControlType.Number,title:\"Viewport Amount\",defaultValue:.3,min:0,max:1,step:.1,description:\"How much of element must be visible (0-1)\",hidden:({animationTrigger})=>animationTrigger===\"auto\"},rotate:{type:ControlType.Number,title:\"Rotate Text Animation\",defaultValue:0},// Content Section\ntag:{type:ControlType.Enum,title:\"Tag\",options:[\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"p\",\"span\",\"div\"],optionTitles:[\"H1\",\"H2\",\"H3\",\"H4\",\"H5\",\"H6\",\"Paragraph\",\"Span\",\"Div\"],defaultValue:\"div\"},text:{type:ControlType.String,title:\"Text\",defaultValue:\"This is a paragraph with multiple lines that will automatically be detected and animated with a mask effect. Each line will animate independently from bottom to top.\",displayTextArea:true},balanceText:{type:ControlType.Boolean,title:\"Balance Text\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},textIndent:{type:ControlType.Number,title:\"Text Indent\",defaultValue:0},// Styling Section\ntextColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#000000\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#FFFFFF\"},font:{type:ControlType.Font,title:\"Font\",defaultValue:{fontSize:\"24px\",variant:\"Medium\",letterSpacing:\"-0.02em\",textAlign:\"left\"},controls:\"extended\",defaultFontType:\"sans-serif\"},lineHeight:{type:ControlType.Number,title:\"Line Height\",defaultValue:1.5,min:1,max:3,step:.1},// Entry Animation Section\nanimationDelay:{type:ControlType.Number,title:\"Entry Delay\",defaultValue:.1,min:0,max:2,step:.05,unit:\"s\"},customEasing:{type:ControlType.String,title:\"Easing\",defaultValue:\"0.32, 0.94, 0.6, 1\",placeholder:\"0.32, 0.94, 0.6, 1\",description:\"Enter 4 values separated by commas\"},animationDuration:{type:ControlType.Number,title:\"Entry Duration\",defaultValue:.5,min:.1,max:10,step:.05,unit:\"s\"},animationStagger:{type:ControlType.Number,title:\"Entry Stagger\",defaultValue:.07,min:0,max:.5,step:.01,unit:\"s\"},initialYOffset:{type:ControlType.Number,title:\"Initial Y Offset\",defaultValue:80,min:0,max:500,step:1,unit:\"px\"},// Exit Animation Section\nenableExitAnimation:{type:ControlType.Boolean,title:\"Exit Animation\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},exitYOffset:{type:ControlType.Number,title:\"Exit Y Offset\",defaultValue:-80,min:-500,max:0,step:1,unit:\"px\",hidden:({enableExitAnimation})=>!enableExitAnimation},exitAnimationStagger:{type:ControlType.Number,title:\"Exit Stagger\",defaultValue:.04,min:0,max:.5,step:.01,unit:\"s\",hidden:({enableExitAnimation})=>!enableExitAnimation},exitAnimationDuration:{type:ControlType.Number,title:\"Exit Duration\",defaultValue:.18,min:.05,max:2,step:.01,unit:\"s\",hidden:({enableExitAnimation})=>!enableExitAnimation}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TextMask\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"*\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextMask.map"],"mappings":"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"}