{"version":3,"file":"Interactive_Text_Distortion.D5OKynR8.mjs","names":["useRef","useMemo","useCallback"],"sources":["https:/framerusercontent.com/modules/DhfZYFMvMeajNV27vvXL/konneklNvK67tNtFEVVx/Interactive_Text_Distortion.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useMemo,useCallback,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{useInView}from\"framer-motion\";/**\n * DynamicTextDistortion\n *\n * Animated text distortion with wave, twist, and ripple effects.\n *\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 120\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function DynamicTextDistortion(props){const{text,effect,speed,amplitude,frequency,textColor,backgroundColor,font,letterSpacing,align,style,enableCursorEffect,cursorEffectIntensity}=props;const containerRef=useRef(null);const textWrapperRef=useRef(null);const charRefs=useRef([]);const animationFrameRef=useRef(null);const lastTimeRef=useRef(null);const isAnimatingRef=useRef(false);const speedRef=useRef(speed);const amplitudeRef=useRef(amplitude);const frequencyRef=useRef(frequency);const effectRef=useRef(effect);const enableCursorEffectRef=useRef(enableCursorEffect);const cursorEffectIntensityRef=useRef(cursorEffectIntensity);const cursorEffectTargetRef=useRef(props.cursorEffectTarget);const mousePositionRef=useRef({x:0,y:0});const mouseTargetPositionRef=useRef({x:0,y:0});const isStatic=useIsStaticRenderer();const isInView=useInView(containerRef,{margin:\"0px\",amount:.1});// Keep ref values in sync without causing re-renders\nuseEffect(()=>{startTransition(()=>{speedRef.current=speed;amplitudeRef.current=amplitude;frequencyRef.current=frequency;effectRef.current=effect;enableCursorEffectRef.current=enableCursorEffect;cursorEffectIntensityRef.current=cursorEffectIntensity;cursorEffectTargetRef.current=props.cursorEffectTarget;});},[speed,amplitude,frequency,effect,enableCursorEffect,cursorEffectIntensity,props.cursorEffectTarget]);const characters=useMemo(()=>{if(!text||text.length===0)return[\" \"];return text.split(\"\");},[text]);const applyTransform=useCallback(time=>{const chars=charRefs.current;if(!chars||chars.length===0)return;// Smoothly interpolate current mouse position towards the target\nconst currentMouse=mousePositionRef.current;const targetMouse=mouseTargetPositionRef.current;const lerpFactor=.12;const smoothedX=currentMouse.x+(targetMouse.x-currentMouse.x)*lerpFactor;const smoothedY=currentMouse.y+(targetMouse.y-currentMouse.y)*lerpFactor;mousePositionRef.current={x:smoothedX,y:smoothedY};const len=chars.length;const mid=(len-1)/2;const t=time*.001*speedRef.current;const amp=amplitudeRef.current;const freq=frequencyRef.current;const currentEffect=effectRef.current;const cursorEnabled=enableCursorEffectRef.current;const cursor=mousePositionRef.current;const cursorIntensity=cursorEffectIntensityRef.current;const cursorTarget=cursorEffectTargetRef.current;if(cursorEnabled&&cursorTarget===\"text\"&&textWrapperRef.current){const extraX=cursor.x*cursorIntensity;const extraY=cursor.y*cursorIntensity;textWrapperRef.current.style.transform=`translate(${extraX.toFixed(2)}px, ${extraY.toFixed(2)}px)`;}else if(textWrapperRef.current){textWrapperRef.current.style.transform=\"none\";}for(let i=0;i<len;i++){const el=chars[i];if(!el)continue;const offset=i-mid;let transform=\"\";if(currentEffect===\"wave\"){const y=Math.sin(t+offset*freq)*amp;const angle=Math.cos(t+offset*freq)*amp*.1;transform=`translateY(${y.toFixed(2)}px) rotate(${angle.toFixed(2)}deg)`;}else if(currentEffect===\"twist\"){const base=Math.sin(t)// -1 to 1\n;const angle=base*offset*amp*.2;const y=Math.cos(t+offset*freq)*(amp*.2);transform=`translateY(${y.toFixed(2)}px) rotate(${angle.toFixed(2)}deg)`;}else if(currentEffect===\"ripple\"){const dist=Math.abs(offset);const wave=Math.sin(t+dist*dist*freq);const y=wave*amp;const scale=1+wave*.15;transform=`translateY(${y.toFixed(2)}px) scale(${scale.toFixed(3)})`;}if(cursorEnabled&&cursorTarget===\"letters\"){const cursorX=cursor.x;const cursorY=cursor.y;const normIndex=len>1?i/(len-1)-.5:0;const dx=cursorX-normIndex;const dy=cursorY;const maxDist=Math.SQRT1_2// ~0.707, max distance in our -0.5..0.5 space\n;const dist=Math.sqrt(dx*dx+dy*dy);const influence=Math.max(0,1-dist/maxDist);const strength=influence*cursorIntensity;const extraX=dx*strength*2;const extraY=dy*strength*2;transform+=` translate(${extraX.toFixed(2)}px, ${extraY.toFixed(2)}px)`;}el.style.transform=transform;}},[]);const animate=useCallback(timestamp=>{if(lastTimeRef.current===null){lastTimeRef.current=timestamp;}applyTransform(timestamp);if(!isAnimatingRef.current)return;if(typeof window!==\"undefined\"){animationFrameRef.current=window.requestAnimationFrame(animate);}},[applyTransform]);useEffect(()=>{if(isStatic){return;}if(typeof window===\"undefined\"){return;}if(isInView&&!isAnimatingRef.current){startTransition(()=>{isAnimatingRef.current=true;});animationFrameRef.current=window.requestAnimationFrame(animate);}if(!isInView&&isAnimatingRef.current){startTransition(()=>{isAnimatingRef.current=false;});if(animationFrameRef.current!==null&&typeof window!==\"undefined\"){window.cancelAnimationFrame(animationFrameRef.current);animationFrameRef.current=null;}}return()=>{if(animationFrameRef.current!==null&&typeof window!==\"undefined\"){window.cancelAnimationFrame(animationFrameRef.current);animationFrameRef.current=null;}startTransition(()=>{isAnimatingRef.current=false;});};},[isInView,isStatic,animate]);const isFixedWidth=style&&style.width===\"100%\";const isFixedHeight=style&&style.height===\"100%\";const containerStyle={position:\"relative\",display:\"flex\",alignItems:\"center\",justifyContent:align===\"left\"?\"flex-start\":align===\"right\"?\"flex-end\":\"center\",overflow:\"hidden\",backgroundColor,color:textColor,...font,...isFixedWidth||isFixedHeight?{}:{minWidth:\"max-content\"},...style};const textWrapperStyle={display:\"inline-flex\",position:\"relative\",whiteSpace:\"pre\",alignItems:\"center\",justifyContent:align===\"left\"?\"flex-start\":align===\"right\"?\"flex-end\":\"center\"};return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:containerStyle,\"aria-label\":text,role:\"text\",\"aria-roledescription\":\"Animated text distortion\",tabIndex:0,onKeyDown:event=>{if(!enableCursorEffectRef.current)return;const step=.1;let{x,y}=mouseTargetPositionRef.current;if(event.key===\"ArrowLeft\"){x-=step;}else if(event.key===\"ArrowRight\"){x+=step;}else if(event.key===\"ArrowUp\"){y-=step;}else if(event.key===\"ArrowDown\"){y+=step;}else{return;}event.preventDefault();const clampedX=Math.max(-.5,Math.min(.5,x));const clampedY=Math.max(-.5,Math.min(.5,y));startTransition(()=>{mouseTargetPositionRef.current={x:clampedX,y:clampedY};});},onMouseMove:event=>{if(!enableCursorEffectRef.current||!containerRef.current)return;const rect=containerRef.current.getBoundingClientRect();const relativeX=(event.clientX-rect.left)/rect.width-.5;const relativeY=(event.clientY-rect.top)/rect.height-.5;const clampedX=Math.max(-.5,Math.min(.5,relativeX));const clampedY=Math.max(-.5,Math.min(.5,relativeY));startTransition(()=>{mouseTargetPositionRef.current={x:clampedX,y:clampedY};});},onMouseLeave:()=>{if(!enableCursorEffectRef.current)return;startTransition(()=>{mouseTargetPositionRef.current={x:0,y:0};});},children:/*#__PURE__*/_jsx(\"div\",{ref:textWrapperRef,style:textWrapperStyle,children:characters.map((ch,index)=>/*#__PURE__*/_jsx(\"span\",{ref:el=>{charRefs.current[index]=el;},style:{display:\"inline-block\",willChange:\"transform\",letterSpacing:`${letterSpacing}px`},children:ch===\" \"?\"\\xa0\":ch},index))})});}addPropertyControls(DynamicTextDistortion,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"Dynamic Text Distortion\",displayTextArea:false},effect:{type:ControlType.Enum,title:\"Effect\",options:[\"wave\",\"twist\",\"ripple\"],optionTitles:[\"Wave\",\"Twist\",\"Ripple\"],defaultValue:\"wave\",displaySegmentedControl:true,description:\"Choose the base animation style applied to the text.\"},speed:{type:ControlType.Number,title:\"Speed\",defaultValue:1,min:0,max:3,step:.1,description:\"Controls how fast the distortion animation moves.\"},amplitude:{type:ControlType.Number,title:\"Amplitude\",defaultValue:12,min:0,max:40,step:1,unit:\"px\",description:\"Controls how strong or tall the distortion movement is.\"},frequency:{type:ControlType.Number,title:\"Frequency\",defaultValue:.6,min:0,max:3,step:.1,description:\"Controls how dense or wavy the distortion pattern appears.\"},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#000000\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#FFFFFF\"},font:{type:ControlType.Font,title:\"Font\",defaultValue:{fontSize:\"40px\",variant:\"Bold\",letterSpacing:\"-0.03em\",lineHeight:\"1.1em\"},controls:\"extended\",defaultFontType:\"sans-serif\",description:\"Controls the base typography for the animated text.\"},letterSpacing:{type:ControlType.Number,title:\"Letter Spacing\",defaultValue:0,min:-5,max:20,step:.5,unit:\"px\",description:\"Adjusts the spacing between individual characters.\"},align:{type:ControlType.Enum,title:\"Align\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"center\",displaySegmentedControl:true,description:\"Sets the horizontal alignment of the animated text.\"},enableCursorEffect:{type:ControlType.Boolean,title:\"Cursor FX\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"Enable interactive distortion that reacts to the cursor or keyboard arrows.\"},cursorEffectIntensity:{type:ControlType.Number,title:\"Cursor Intensity\",defaultValue:12,min:0,max:40,step:1,unit:\"px\",hidden:props=>!props.enableCursorEffect,description:\"Controls how strongly the text or letters move in response to the cursor.\"},cursorEffectTarget:{type:ControlType.Enum,title:\"Cursor Target\",options:[\"letters\",\"text\"],optionTitles:[\"Letters\",\"Whole Text\"],defaultValue:\"letters\",displaySegmentedControl:true,hidden:props=>!props.enableCursorEffect,description:\"Choose whether the cursor affects each letter individually or the whole text block.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"DynamicTextDistortion\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"400\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"120\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Interactive_Text_Distortion.map"],"mappings":"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"}