{"version":3,"file":"ProTextType.DS2f4_b7.mjs","names":["useRef","React.useMemo","React.useState","React.useRef","React.useCallback"],"sources":["https:/framerusercontent.com/modules/V3NpJ8a553zDakMPCBG0/ciyo6wCqQxg2YKNub6b5/InteractiveDotGrid_1.js","https:/framerusercontent.com/modules/qqYplCkIzEaDDiXR2Jw8/SrhraoHKXarRQMoXqAgk/ProTextType.js"],"sourcesContent":["// Interactive dot grid with mouse hover distortion effect\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * Interactive Dot Grid\n *\n * @framerIntrinsicWidth 800\n * @framerIntrinsicHeight 600\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function InteractiveDotGrid(props){const{dotSize=1,dotSpacing=20,dotColor=\"#FFFFFF\",backgroundColor=\"#000000\",distortionRadius=100,distortionStrength=30,animationSpeed=.15}=props;const canvasRef=useRef(null);const mousePos=useRef({x:-1e3,y:-1e3});const animationFrameId=useRef();const needsUpdateRef=useRef(true);const dotsRef=useRef([]);const isStatic=useIsStaticRenderer();// Initialize dots based on canvas size\nconst initializeDots=(width,height)=>{const cols=Math.ceil(width/dotSpacing);const rows=Math.ceil(height/dotSpacing);dotsRef.current=[];for(let row=0;row<rows;row++){for(let col=0;col<cols;col++){const x=col*dotSpacing+dotSpacing/2;const y=row*dotSpacing+dotSpacing/2;dotsRef.current.push({originalX:x,originalY:y,currentX:x,currentY:y,randomOffsetX:0,randomOffsetY:0,isRandomized:false,col,row});}}};useEffect(()=>{if(isStatic)return;const canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;const resizeCanvas=()=>{const rect=canvas.getBoundingClientRect();canvas.width=rect.width;canvas.height=rect.height;initializeDots(canvas.width,canvas.height);needsUpdateRef.current=true;};// Initial setup\nresizeCanvas();// Add resize observer\nconst resizeObserver=new ResizeObserver(()=>{resizeCanvas();});resizeObserver.observe(canvas);const animate=()=>{// Only clear and redraw if something changed\nif(needsUpdateRef.current){ctx.clearRect(0,0,canvas.width,canvas.height);// Calculate which dots to check based on mouse position\nconst mouseCol=Math.floor(mousePos.current.x/dotSpacing);const mouseRow=Math.floor(mousePos.current.y/dotSpacing);const checkRadius=Math.ceil(distortionRadius/dotSpacing)+1;// Batch rendering\nctx.fillStyle=dotColor;ctx.beginPath();let hasMovingDots=false;dotsRef.current.forEach(dot=>{// Only check distance for dots near the mouse\nconst colDiff=Math.abs(dot.col-mouseCol);const rowDiff=Math.abs(dot.row-mouseRow);if(colDiff<=checkRadius&&rowDiff<=checkRadius){const dx=mousePos.current.x-dot.originalX;const dy=mousePos.current.y-dot.originalY;const distance=Math.sqrt(dx*dx+dy*dy);let targetX=dot.originalX;let targetY=dot.originalY;if(distance<distortionRadius){if(!dot.isRandomized){dot.randomOffsetX=(Math.random()-.5)*distortionStrength*2;dot.randomOffsetY=(Math.random()-.5)*distortionStrength*2;dot.isRandomized=true;}targetX=dot.originalX+dot.randomOffsetX;targetY=dot.originalY+dot.randomOffsetY;}else{if(dot.isRandomized){dot.isRandomized=false;}}// Smooth interpolation\nconst oldX=dot.currentX;const oldY=dot.currentY;dot.currentX+=(targetX-dot.currentX)*animationSpeed;dot.currentY+=(targetY-dot.currentY)*animationSpeed;// Check if still moving\nif(Math.abs(dot.currentX-targetX)>.1||Math.abs(dot.currentY-targetY)>.1){hasMovingDots=true;}}else{// Reset dots far from mouse\nif(dot.isRandomized){dot.isRandomized=false;}const targetX=dot.originalX;const targetY=dot.originalY;dot.currentX+=(targetX-dot.currentX)*animationSpeed;dot.currentY+=(targetY-dot.currentY)*animationSpeed;if(Math.abs(dot.currentX-targetX)>.1||Math.abs(dot.currentY-targetY)>.1){hasMovingDots=true;}}ctx.moveTo(dot.currentX+dotSize/2,dot.currentY);ctx.arc(dot.currentX,dot.currentY,dotSize/2,0,Math.PI*2);});ctx.fill();// Only continue animating if dots are still moving\nneedsUpdateRef.current=hasMovingDots;}animationFrameId.current=requestAnimationFrame(animate);};animate();return()=>{if(animationFrameId.current){cancelAnimationFrame(animationFrameId.current);}resizeObserver.disconnect();};},[dotSize,dotSpacing,dotColor,backgroundColor,distortionRadius,distortionStrength,animationSpeed,isStatic]);const handleMouseMove=e=>{if(isStatic)return;const canvas=canvasRef.current;if(!canvas)return;const rect=canvas.getBoundingClientRect();mousePos.current={x:e.clientX-rect.left,y:e.clientY-rect.top};needsUpdateRef.current=true;};const handleMouseLeave=()=>{if(isStatic)return;mousePos.current={x:-1e3,y:-1e3};needsUpdateRef.current=true;};// Static preview rendering in useEffect\nuseEffect(()=>{if(!isStatic)return;const canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;const rect=canvas.getBoundingClientRect();canvas.width=rect.width;canvas.height=rect.height;ctx.fillStyle=backgroundColor;ctx.fillRect(0,0,canvas.width,canvas.height);const cols=Math.ceil(canvas.width/dotSpacing);const rows=Math.ceil(canvas.height/dotSpacing);ctx.fillStyle=dotColor;for(let row=0;row<rows;row++){for(let col=0;col<cols;col++){const x=col*dotSpacing+dotSpacing/2;const y=row*dotSpacing+dotSpacing/2;ctx.beginPath();ctx.arc(x,y,dotSize/2,0,Math.PI*2);ctx.fill();}}},[isStatic,dotSize,dotSpacing,dotColor,backgroundColor]);return /*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{width:\"100%\",height:\"100%\",display:\"block\",cursor:\"none\"},onMouseMove:isStatic?undefined:handleMouseMove,onMouseLeave:isStatic?undefined:handleMouseLeave});}addPropertyControls(InteractiveDotGrid,{dotSize:{type:ControlType.Number,title:\"Dot Size\",defaultValue:1,min:.5,max:5,step:.5,unit:\"px\"},dotSpacing:{type:ControlType.Number,title:\"Dot Spacing\",defaultValue:20,min:10,max:50,step:1,unit:\"px\"},dotColor:{type:ControlType.Color,title:\"Dot Color\",defaultValue:\"#FFFFFF\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#000000\"},distortionRadius:{type:ControlType.Number,title:\"Distortion Radius\",defaultValue:100,min:50,max:300,step:10,unit:\"px\"},distortionStrength:{type:ControlType.Number,title:\"Distortion Strength\",defaultValue:30,min:0,max:100,step:5,unit:\"px\"},animationSpeed:{type:ControlType.Number,title:\"Animation Speed\",defaultValue:.15,min:.05,max:.5,step:.05}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"InteractiveDotGrid\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerIntrinsicWidth\":\"800\",\"framerIntrinsicHeight\":\"600\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./InteractiveDotGrid_1.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import*as React from\"react\";import{motion}from\"framer-motion\";/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 600\n * @framerIntrinsicHeight 120\n */export default function ProTextTypeEffect(props){const{text,as:asTag,typingSpeed,initialDelay,pauseDuration,deletingSpeed,loop,className,showCursor,hideCursorWhileTyping,cursorMode,cursorCharacterPreset,customCursorCharacter,cursorClassName,cursorBlinkDuration,textColors,cursorColorMode,cursorCustomColor,variableSpeed,startOnVisible,reverseMode,sizingMode,minFont,maxFont,fluidVw,style,...rest}=props;// Accept single string or array\nconst textArray=React.useMemo(()=>Array.isArray(text)?text:[text??\"\"],[text]);// Cursor character resolution\nconst cursorChar=cursorMode===\"custom\"?customCursorCharacter?.length?customCursorCharacter:\"|\":cursorCharacterPreset;const[displayedText,setDisplayedText]=React.useState(\"\");const[currentCharIndex,setCurrentCharIndex]=React.useState(0);const[isDeleting,setIsDeleting]=React.useState(false);const[currentTextIndex,setCurrentTextIndex]=React.useState(0);const[isVisible,setIsVisible]=React.useState(!startOnVisible);// Colors\nconst firstColor=textColors&&textColors[0]||\"#000000\";const resolvedCursorColor=cursorColorMode===\"custom\"&&cursorCustomColor?cursorCustomColor:firstColor;const containerRef=React.useRef(null);const As=asTag||\"div\";// Variable typing speed\nconst getRandomSpeed=React.useCallback(()=>{if(!variableSpeed)return typingSpeed;const{min,max}=variableSpeed;const lo=Math.max(0,Number(min)||0);const hi=Math.max(lo,Number(max)||lo);return Math.random()*(hi-lo)+lo;},[variableSpeed,typingSpeed]);const getCurrentTextColor=React.useCallback(()=>{if(!textColors||textColors.length===0)return\"#000000\";return textColors[currentTextIndex%textColors.length];},[textColors,currentTextIndex]);// Start on visible\nReact.useEffect(()=>{if(!startOnVisible||!containerRef.current)return;const el=containerRef.current;const obs=new IntersectionObserver(entries=>{entries.forEach(entry=>{if(entry.isIntersecting)setIsVisible(true);});},{threshold:.1});obs.observe(el);return()=>obs.disconnect();},[startOnVisible]);// Typing loop\nReact.useEffect(()=>{if(!isVisible)return;let timeout;const currentText=textArray[currentTextIndex]??\"\";const processed=reverseMode?currentText.split(\"\").reverse().join(\"\"):currentText;const run=()=>{if(isDeleting){if(displayedText.length===0){setIsDeleting(false);if(currentTextIndex===textArray.length-1&&!loop)return;setCurrentTextIndex(i=>(i+1)%textArray.length);setCurrentCharIndex(0);timeout=setTimeout(()=>{},pauseDuration);}else{timeout=setTimeout(()=>{setDisplayedText(prev=>prev.slice(0,-1));},deletingSpeed);}}else{if(currentCharIndex<processed.length){timeout=setTimeout(()=>{setDisplayedText(prev=>prev+processed[currentCharIndex]);setCurrentCharIndex(i=>i+1);},variableSpeed?getRandomSpeed():typingSpeed);}else{if(textArray.length>1&&(loop||currentTextIndex<textArray.length-1)){timeout=setTimeout(()=>setIsDeleting(true),pauseDuration);}else{// stop on last sentence; keep cursor blinking\n}}}};if(currentCharIndex===0&&!isDeleting&&displayedText===\"\"){timeout=setTimeout(run,initialDelay);}else{run();}return()=>timeout&&clearTimeout(timeout);},[isVisible,textArray,currentTextIndex,loop,currentCharIndex,displayedText,isDeleting,typingSpeed,deletingSpeed,pauseDuration,initialDelay,reverseMode,variableSpeed,getRandomSpeed]);// Fluid font style via CSS clamp\nconst fluidStyle=sizingMode===\"fluid\"?{fontSize:`clamp(${minFont}px, ${fluidVw}vw, ${maxFont}px)`}:{};// Base container style\nconst{clipOverflow=false}=props;const baseStyle={display:\"block\",width:\"100%\",height:\"100%\",whiteSpace:\"pre-wrap\",overflow:clipOverflow?\"hidden\":\"visible\",textAlign:props.textAlign,...style};const shouldHideCursor=hideCursorWhileTyping&&(currentCharIndex<(textArray[currentTextIndex]??\"\").length||isDeleting);return /*#__PURE__*/_jsxs(As,{ref:containerRef,className:`text-type ${className||\"\"}`,style:baseStyle,...rest,children:[/*#__PURE__*/_jsx(\"span\",{className:\"text-type__content\",style:{all:\"unset\",display:\"inline\",color:getCurrentTextColor(),...props.font,...fluidStyle},children:displayedText}),showCursor&&!shouldHideCursor&&/*#__PURE__*/_jsx(motion.span,{className:`text-type__cursor ${cursorClassName||\"\"}`,style:{marginLeft:\"0.25rem\",display:\"inline-block\",color:resolvedCursorColor,...props.font,...fluidStyle},animate:{opacity:[1,0]},transition:{duration:cursorBlinkDuration,repeat:Infinity,repeatType:\"reverse\",ease:\"easeInOut\"},children:cursorChar})]});}ProTextTypeEffect.displayName=\"Pro Text Type Effect\";addPropertyControls(ProTextTypeEffect,{text:{type:ControlType.Array,title:\"Text\",defaultValue:[\"Hello, Framer folks!\",\"This is the ultimate typing text component\",\"Checkout what all you can do from the panel on the right →\"],control:{type:ControlType.String,displayTextArea:true,defaultValue:\"\"}},font:{type:\"font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:16,lineHeight:1.2}},sizingMode:{type:ControlType.Enum,title:\"Sizing\",options:[\"fixed\",\"fluid\"],optionTitles:[\"Fixed\",\"Fluid (clamp)\"],defaultValue:\"fluid\",description:\"Choose how the text scales\"},minFont:{type:ControlType.Number,title:\"Min px\",defaultValue:18,min:8,max:200,hidden:p=>p.sizingMode!==\"fluid\",description:\"Smallest allowed font size\"},maxFont:{type:ControlType.Number,title:\"Max px\",defaultValue:64,min:8,max:200,hidden:p=>p.sizingMode!==\"fluid\",description:\"Largest allowed font size\"},fluidVw:{type:ControlType.Number,title:\"Scale (vw)\",defaultValue:6,min:.1,max:20,step:.1,hidden:p=>p.sizingMode!==\"fluid\",description:\"How quickly the font grows as the screen width increases\"},textColors:{type:ControlType.Array,title:\"Text Colors\",control:{type:ControlType.Color,defaultValue:\"#000000\"},defaultValue:[\"#000000\"],description:\"Cycles through colors per sentence\"},textAlign:{type:ControlType.Enum,title:\"Text Align\",options:[\"left\",\"center\",\"right\",\"justify\"],optionTitles:[\"Left\",\"Center\",\"Right\",\"Justify\"],defaultValue:\"left\"},as:{type:ControlType.Enum,title:\"Tag\",options:[\"div\",\"p\",\"span\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"],optionTitles:[\"div\",\"p\",\"span\",\"H1\",\"H2\",\"H3\",\"H4\",\"H5\",\"H6\"],defaultValue:\"p\"},typingSpeed:{type:ControlType.Number,title:\"Type (ms)\",min:1,max:500,step:1,defaultValue:50,description:\"Time between charachters\"},deletingSpeed:{type:ControlType.Number,title:\"Delete (ms)\",min:1,max:500,step:1,defaultValue:30,description:\"Time between deletions\"},initialDelay:{type:ControlType.Number,title:\"Delay (ms)\",min:0,max:5e3,step:10,defaultValue:0,description:\"Waiting time before starting\"},pauseDuration:{type:ControlType.Number,title:\"Pause (ms)\",min:0,max:1e4,step:50,defaultValue:2e3,description:\"Waiting time before deleting/next\"},loop:{type:ControlType.Boolean,title:\"Loop\",defaultValue:true},reverseMode:{type:ControlType.Boolean,title:\"Reverse text\",defaultValue:false},startOnVisible:{type:ControlType.Boolean,title:\"Start on visible\",defaultValue:false,description:\"Begin typing only when in view\"},showCursor:{type:ControlType.Boolean,title:\"Show cursor\",defaultValue:true},cursorMode:{type:ControlType.Enum,title:\"Cursor\",options:[\"preset\",\"custom\"],optionTitles:[\"Preset\",\"Custom\"],defaultValue:\"preset\",hidden:p=>!p.showCursor},cursorCharacterPreset:{type:ControlType.Enum,title:\"Preset\",options:[\"|\",\"_\",\"‖\",\"❚\",\"▋\",\"▌\",\"█\"],optionTitles:[\"Pipe |\",\"Underscore _\",\"Double Bar ‖\",\"Block ❚\",\"Left Half ▋\",\"Right Half ▌\",\"Full Block █\"],defaultValue:\"|\",hidden:p=>!p.showCursor||p.cursorMode!==\"preset\"},customCursorCharacter:{type:ControlType.String,title:\"Custom char\",placeholder:\"Any character(s)\",defaultValue:\"|\",hidden:p=>!p.showCursor||p.cursorMode!==\"custom\"},cursorColorMode:{type:ControlType.Enum,title:\"Cursor color\",options:[\"matchFirst\",\"custom\"],optionTitles:[\"Match first color\",\"Custom\"],defaultValue:\"matchFirst\",hidden:p=>!p.showCursor},cursorCustomColor:{type:ControlType.Color,title:\"Custom color\",optional:true,hidden:p=>!p.showCursor||p.cursorColorMode!==\"custom\"},cursorBlinkDuration:{type:ControlType.Number,title:\"Blink (s)\",min:.05,max:2,step:.05,defaultValue:.5,hidden:p=>!p.showCursor},hideCursorWhileTyping:{type:ControlType.Boolean,title:\"Hide while typing\",defaultValue:false,hidden:p=>!p.showCursor},variableSpeed:{type:ControlType.Object,title:\"Variable speed\",optional:true,controls:{min:{type:ControlType.Number,title:\"Min (ms)\",min:1,max:500,step:1,defaultValue:30},max:{type:ControlType.Number,title:\"Max (ms)\",min:1,max:500,step:1,defaultValue:80}},description:\"Random delay between characters\\n\\nComponent crafted by [Vaibhav](https://contra.com/vaibhav_khulbe)\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ProTextTypeEffect\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"120\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"600\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ProTextType.map"],"mappings":"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"}