{"version":3,"file":"Interactive_Text_Distortion.CVZ1s0RE.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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"}