{"version":3,"file":"ParticleText.CwFDI55B.mjs","names":["useRef","useMemo","useState","useId","useCallback","useLayoutEffect","useEffect","useRef","useState","__esmMin","ie","le","init_ssg_sandbox_shims","te","ne","_e","de","pe","c","init_jsx_runtime","init_npm_react_18_3_1","ce","window","useMotionValue","useReducedMotion","animate","init_framer_motion_DhsWWWsN","init_framer_D6uXRwWs","useIsStaticRenderer","ControlType","addPropertyControls","shapeExtents","shape","phaseUp","amplitude","buildPeriod","sign","quarter","period","half","buildPath","segment","d","baselineY","i","periods","WavyMarquee","props","rootRef","measureTextRef","measurePathRef","textPathRef","animationRef","isStatic","prefersReducedMotion","wl","wavelength","amp","ribbon","ribbonHeight","phase","extents","bandHeight","phrase","uppercase","text","separator","textStyle","font","containerWidth","setContainerWidth","metrics","setMetrics","visibleWidth","measurePathD","useIsomorphicLayoutEffect","cancelled","measure","textNode","pathNode","naturalWidth","periodArc","previous","fonts","element","observer","width","entries","measured","arcRatio","tilted","rotation","tiltOverhang","lead","periodsDrawn","drawnWidth","pathD","copies","MAX_TEXT_LENGTH","scrollingText","baseOffset","pathId","offset","frozen","value","from","direction","to","controls","speed","handlePointerEnter","pauseOnHover","handlePointerLeave","fadeMask","fadeWidth","rootStyle","style","fadeEdges","showRibbon","ribbonColor","textColor","init_WavyMarquee","TextFlow","canvasRef","particlesRef","mouseRef","animationFrameRef","isInitialized","setIsInitialized","canvas","ctx","timeoutId","dpr","rect","height","particleColor","horizontalAlign","fontSize","fontWeight","fontStyle","fontFamily","padding","maxTextWidth","lines","inputLines","inputText","wrappedLines","line","words","currentLine","word","testLine","lineHeight","totalHeight","startY","verticalAlign","textX","index","pixels","particles","gap","particleDensity","y","x","px","py","mouse","particle","dx","dy","distance","mouseRadius","force","angle","returnSpeed","particleSize","handleMouseMove","handleMouseLeave","alignItems","justifyContent","textAlign","init_ParticleText"],"sources":["https:/framerusercontent.com/modules/kYenmDPxTXziLsc55Bvw/FcG0BE7t1nOX2eMZRdH2/WavyMarquee.js","https:/framerusercontent.com/modules/ocyXQZvWCtDdGN045oHd/LcLN9FWHZocHZpYnAyxq/ParticleText.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{animate,useMotionValue,useReducedMotion}from\"framer-motion\";import{useCallback,useEffect,useId,useLayoutEffect,useMemo,useRef,useState}from\"react\";// useLayoutEffect warns during server rendering, so fall back to useEffect there.\nconst useIsomorphicLayoutEffect=typeof window!==\"undefined\"?useLayoutEffect:useEffect;// Keeps the repeated string from exploding when the phrase is very short.\nconst MAX_TEXT_LENGTH=6e3;/**\n * How far one period of a shape rises above and drops below its baseline.\n * Shapes that only bulge one way get a shorter band instead of dead space.\n */function shapeExtents(shape,amplitude,phaseUp){if(shape===\"flat\")return{up:0,down:0};if(shape===\"bumps\"||shape===\"arc\"){return phaseUp?{up:amplitude,down:0}:{up:0,down:amplitude};}return{up:amplitude,down:amplitude};}/**\n * Path commands for a single period, starting and ending on the baseline so\n * periods chain into a continuous curve.\n */function buildPeriod(shape,period,amplitude,phaseUp){const sign=phaseUp?1:-1;const quarter=period/4;const half=period/2;switch(shape){case\"flat\":return` l ${period} 0`;case\"zigzag\":return` l ${quarter} ${-amplitude*sign}`+` l ${quarter} ${amplitude*sign}`+` l ${quarter} ${amplitude*sign}`+` l ${quarter} ${-amplitude*sign}`;case\"bumps\":// One lobe per period, always the same way up, meeting at cusps.\nreturn` q ${half} ${-2*amplitude*sign} ${period} 0`;case\"arc\":case\"wave\":default:// Two quadratic half-periods. \"Arc\" is this same curve stretched\n// so a single half-period spans the whole visible band.\nreturn` q ${quarter} ${-2*amplitude*sign} ${half} 0`+` q ${quarter} ${2*amplitude*sign} ${half} 0`;}}function buildPath(baselineY,shape,period,amplitude,phaseUp,periods){const segment=buildPeriod(shape,period,amplitude,phaseUp);let d=`M 0 ${baselineY}`;for(let i=0;i<periods;i++)d+=segment;return d;}/**\n * Wavy Marquee\n *\n * A fixed ribbon band on a shaped path, with the text travelling along that\n * same path. The band never moves — only the text scrolls, riding the curve.\n *\n * @framerIntrinsicWidth 1200\n * @framerIntrinsicHeight 200\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight auto\n */export default function WavyMarquee(props){const{text,separator,speed,direction,pauseOnHover,shape,amplitude,wavelength,phase,rotation,showRibbon,ribbonColor,ribbonHeight,font,textColor,uppercase,fadeEdges,fadeWidth,style}=props;const rootRef=useRef(null);const measureTextRef=useRef(null);const measurePathRef=useRef(null);const textPathRef=useRef(null);const animationRef=useRef(null);const isStatic=useIsStaticRenderer();const prefersReducedMotion=useReducedMotion();const wl=Math.max(1,Math.round(wavelength));const amp=shape===\"flat\"?0:Math.max(0,amplitude);const ribbon=Math.max(0,ribbonHeight);const phaseUp=phase===\"up\";const extents=shapeExtents(shape,amp,phaseUp);const bandHeight=extents.up+extents.down+ribbon+8;const baselineY=extents.up+ribbon/2+4;const phrase=(uppercase?text.toUpperCase():text)+separator;const textStyle=useMemo(()=>({fontFamily:font?.fontFamily,fontSize:font?.fontSize,fontWeight:font?.fontWeight,fontStyle:font?.fontStyle,letterSpacing:font?.letterSpacing,whiteSpace:\"pre\"}),[font?.fontFamily,font?.fontSize,font?.fontWeight,font?.fontStyle,font?.letterSpacing]);const[containerWidth,setContainerWidth]=useState(0);// naturalWidth: how much path one phrase consumes. periodArc: the arc\n// length of one period, which is longer than the period's width whenever\n// the path is not flat.\nconst[metrics,setMetrics]=useState({naturalWidth:0,periodArc:0});const visibleWidth=containerWidth>0?containerWidth:1200;// An arc is one broad bow across the band, so its period is two screens\n// wide; every other shape repeats on the wavelength.\nconst period=shape===\"arc\"?Math.max(2,visibleWidth*2):wl;const measurePathD=useMemo(()=>buildPath(baselineY,shape,period,amp,phaseUp,1),[baselineY,shape,period,amp,phaseUp]);useIsomorphicLayoutEffect(()=>{let cancelled=false;const measure=()=>{if(cancelled)return;const textNode=measureTextRef.current;const pathNode=measurePathRef.current;if(!textNode||!pathNode)return;let naturalWidth=0;try{naturalWidth=textNode.getComputedTextLength();}catch{naturalWidth=0;}const periodArc=pathNode.getTotalLength();if(!(naturalWidth>0)||!(periodArc>0))return;setMetrics(previous=>previous.naturalWidth===naturalWidth&&previous.periodArc===periodArc?previous:{naturalWidth,periodArc});};measure();// Webfonts change the metrics once they swap in.\nconst fonts=typeof document!==\"undefined\"?document.fonts:undefined;if(fonts?.ready?.then){fonts.ready.then(()=>measure()).catch(()=>undefined);}return()=>{cancelled=true;};},[phrase,textStyle,measurePathD]);useEffect(()=>{const element=rootRef.current;if(!element||typeof ResizeObserver===\"undefined\")return;const observer=new ResizeObserver(entries=>{const width=entries[0]?.contentRect.width??0;if(width>0){setContainerWidth(previous=>previous===width?previous:width);}});observer.observe(element);return()=>observer.disconnect();},[]);const measured=metrics.naturalWidth>0&&metrics.periodArc>0;const{naturalWidth}=metrics;// Arc length per unit of horizontal travel — 1 for a flat path, more for\n// anything that curves.\nconst arcRatio=measured?metrics.periodArc/period:1;const tilted=Math.abs(rotation)>.01;const tiltOverhang=tilted?bandHeight/2*Math.abs(Math.tan(rotation*Math.PI/180)):0;// The band is fixed, so the path runs past both edges: far enough for the\n// text to enter and leave out of sight, and to cover any tilt. Whole\n// periods keep the shape phase-aligned with the visible left edge.\nconst leadNeeded=Math.max(naturalWidth,tiltOverhang,1);const lead=Math.max(1,Math.ceil(leadNeeded/period))*period;const periodsDrawn=Math.max(1,Math.ceil((visibleWidth+lead*2)/period));const drawnWidth=periodsDrawn*period;const pathD=useMemo(()=>buildPath(baselineY,shape,period,amp,phaseUp,periodsDrawn),[baselineY,shape,period,amp,phaseUp,periodsDrawn]);// Enough copies to blanket the path plus one repeat of slack, so a copy is\n// always entering as another leaves.\nconst copies=measured?Math.min(Math.ceil(MAX_TEXT_LENGTH/Math.max(1,phrase.length)),Math.ceil(drawnWidth*arcRatio/naturalWidth)+1):1;const scrollingText=useMemo(()=>phrase.repeat(Math.max(1,copies)),[phrase,copies]);// Offset that puts the first phrase at the visible left edge.\nconst baseOffset=measured?lead*arcRatio:0;const rawId=useId();const pathId=`wavy-${rawId.replace(/[^a-zA-Z0-9_-]/g,\"\")}`;const offset=useMotionValue(baseOffset);const frozen=Boolean(isStatic||prefersReducedMotion);// Written straight to the attribute so scrolling never re-renders React.\nuseEffect(()=>{return offset.on(\"change\",value=>{textPathRef.current?.setAttribute(\"startOffset\",String(value));});},[offset]);useEffect(()=>{if(!measured||frozen){offset.set(baseOffset);textPathRef.current?.setAttribute(\"startOffset\",String(baseOffset));return;}// One cycle advances the text by exactly one phrase, so the loop is\n// seamless. `speed` reads as horizontal px/s, converted here to travel\n// along the path.\nconst from=direction===\"left\"?baseOffset:baseOffset-naturalWidth;const to=direction===\"left\"?baseOffset-naturalWidth:baseOffset;offset.set(from);const controls=animate(offset,[from,to],{duration:naturalWidth/(Math.max(1,speed)*arcRatio),ease:\"linear\",repeat:Infinity,repeatType:\"loop\"});animationRef.current=controls;return()=>{controls.stop();animationRef.current=null;};},[offset,measured,frozen,baseOffset,naturalWidth,arcRatio,speed,direction]);const handlePointerEnter=useCallback(()=>{if(pauseOnHover)animationRef.current?.pause();},[pauseOnHover]);const handlePointerLeave=useCallback(()=>{if(pauseOnHover)animationRef.current?.play();},[pauseOnHover]);const fadeMask=`linear-gradient(to right, transparent 0px, black ${fadeWidth}px, black calc(100% - ${fadeWidth}px), transparent 100%)`;const rootStyle={width:\"100%\",...style,position:\"relative\",overflow:\"hidden\",height:bandHeight,...fadeEdges?{maskImage:fadeMask,WebkitMaskImage:fadeMask}:null};return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,style:rootStyle,role:\"img\",\"aria-label\":text,onMouseEnter:handlePointerEnter,onMouseLeave:handlePointerLeave,children:[/*#__PURE__*/_jsxs(\"svg\",{\"aria-hidden\":true,width:0,height:0,style:{position:\"absolute\",top:0,left:0,width:0,height:0,overflow:\"visible\",visibility:\"hidden\",pointerEvents:\"none\"},children:[/*#__PURE__*/_jsx(\"text\",{ref:measureTextRef,style:textStyle,xmlSpace:\"preserve\",children:phrase}),/*#__PURE__*/_jsx(\"path\",{ref:measurePathRef,d:measurePathD,fill:\"none\"})]}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,transform:tilted?`rotate(${rotation}deg)`:undefined,transformOrigin:\"center center\"},children:/*#__PURE__*/_jsxs(\"svg\",{\"aria-hidden\":true,width:drawnWidth,height:bandHeight,viewBox:`0 0 ${drawnWidth} ${bandHeight}`,style:{display:\"block\",position:\"absolute\",top:0,left:-lead,overflow:\"visible\"},children:[/*#__PURE__*/_jsx(\"defs\",{children:/*#__PURE__*/_jsx(\"path\",{id:pathId,d:pathD,fill:\"none\"})}),showRibbon&&/*#__PURE__*/_jsx(\"path\",{d:pathD,fill:\"none\",stroke:ribbonColor,strokeWidth:ribbon,strokeLinecap:\"butt\",// Zigzag corners and bump cusps would grow spikes\n// under the default miter join.\nstrokeLinejoin:\"round\"}),/*#__PURE__*/_jsx(\"text\",{fill:textColor,style:textStyle,dominantBaseline:\"central\",xmlSpace:\"preserve\",children:/*#__PURE__*/_jsx(\"textPath\",{ref:textPathRef,href:`#${pathId}`,startOffset:baseOffset,children:scrollingText})})]})})]});}addPropertyControls(WavyMarquee,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"kindness, and calm discovery. We slow down the pace of the city\",displayTextArea:true},separator:{type:ControlType.String,title:\"Separator\",defaultValue:\" • \"},speed:{type:ControlType.Number,title:\"Speed\",defaultValue:90,min:20,max:400,unit:\"px/s\"},direction:{type:ControlType.Enum,title:\"Direction\",defaultValue:\"left\",options:[\"left\",\"right\"],optionTitles:[\"Left\",\"Right\"],displaySegmentedControl:true},pauseOnHover:{type:ControlType.Boolean,title:\"Pause Hover\",defaultValue:false},shape:{type:ControlType.Enum,title:\"Shape\",defaultValue:\"wave\",options:[\"wave\",\"zigzag\",\"arc\",\"bumps\",\"flat\"],optionTitles:[\"Wave\",\"Zigzag\",\"Arc\",\"Bumps\",\"Flat\"]},amplitude:{type:ControlType.Number,title:\"Amplitude\",defaultValue:60,min:0,max:200,unit:\"px\",hidden:props=>props.shape===\"flat\"},wavelength:{type:ControlType.Number,title:\"Wavelength\",defaultValue:900,min:100,max:2e3,unit:\"px\",hidden:props=>props.shape===\"arc\"||props.shape===\"flat\"},phase:{type:ControlType.Enum,title:\"Phase\",defaultValue:\"up\",options:[\"up\",\"down\"],optionTitles:[\"Up\",\"Down\"],displaySegmentedControl:true,hidden:props=>props.shape===\"flat\"},rotation:{type:ControlType.Number,title:\"Rotation\",defaultValue:0,min:-30,max:30,unit:\"deg\"},showRibbon:{type:ControlType.Boolean,title:\"Ribbon\",defaultValue:true},ribbonColor:{type:ControlType.Color,title:\"Ribbon Color\",defaultValue:\"#F7EBC4\"},ribbonHeight:{type:ControlType.Number,title:\"Ribbon Height\",defaultValue:120,min:20,max:400,unit:\"px\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"64px\",variant:\"Bold\",letterSpacing:\"-0.01em\",lineHeight:\"1em\"}},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#1A1A1A\"},uppercase:{type:ControlType.Boolean,title:\"Uppercase\",defaultValue:false},fadeEdges:{type:ControlType.Boolean,title:\"Fade Edges\",defaultValue:false},fadeWidth:{type:ControlType.Number,title:\"Fade Width\",defaultValue:80,min:0,max:400,unit:\"px\",hidden:props=>!props.fadeEdges}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"WavyMarquee\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\",\"framerIntrinsicHeight\":\"200\",\"framerIntrinsicWidth\":\"1200\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./WavyMarquee.map","// Animated particles text component where particles are pushed around by the mouse pointer\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useState,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * @framerIntrinsicWidth 500\n * @framerIntrinsicHeight 500\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function TextFlow(props){const{text=\"Pola\",particleColor=\"#FFFFFF\",backgroundColor=\"#000000\",particleSize=2,particleDensity=3,mouseRadius=100,returnSpeed=.05,font,verticalAlign=\"center\",horizontalAlign=\"center\",style}=props;const canvasRef=useRef(null);const particlesRef=useRef([]);const mouseRef=useRef({x:-1e3,y:-1e3});const animationFrameRef=useRef();const isStatic=useIsStaticRenderer();const[isInitialized,setIsInitialized]=useState(false);// Initialize particles\nuseEffect(()=>{if(isStatic)return;const canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(\"2d\",{willReadFrequently:true});if(!ctx)return;// Use a timeout to prevent blocking\nconst timeoutId=setTimeout(()=>{const dpr=typeof window!==\"undefined\"?window.devicePixelRatio||1:1;const rect=canvas.getBoundingClientRect();canvas.width=rect.width*dpr;canvas.height=rect.height*dpr;ctx.scale(dpr,dpr);const width=rect.width;const height=rect.height;// Draw text to get particle positions\nctx.fillStyle=particleColor;// Set horizontal alignment\nif(horizontalAlign===\"left\"){ctx.textAlign=\"left\";}else if(horizontalAlign===\"right\"){ctx.textAlign=\"right\";}else{ctx.textAlign=\"center\";}// Set vertical baseline\nctx.textBaseline=\"middle\";const fontSize=parseInt(font.fontSize)||80;const fontWeight=font.fontWeight||\"400\";const fontStyle=font.fontStyle||\"normal\";const fontFamily=font.fontFamily||\"Inter, sans-serif\";ctx.font=`${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;// Add padding to prevent text cutoff\nconst padding=fontSize*.3;// Calculate maximum text width based on container size\nconst maxTextWidth=width-padding*2;// Function to wrap text to fit within container width\nconst wrapText=inputText=>{const inputLines=inputText.split(\"\\n\");const wrappedLines=[];for(const line of inputLines){// If line is empty or fits, keep it as is\nif(!line.trim()){wrappedLines.push(\"\");continue;}// Check if line fits in container\nconst metrics=ctx.measureText(line);if(metrics.width<=maxTextWidth){wrappedLines.push(line);continue;}// Split line into words\nconst words=line.split(\" \");let currentLine=\"\";for(const word of words){const testLine=currentLine?`${currentLine} ${word}`:word;const testMetrics=ctx.measureText(testLine);if(testMetrics.width<=maxTextWidth){currentLine=testLine;}else{if(currentLine){wrappedLines.push(currentLine);currentLine=word;}else{// Single word too long, add it anyway\nwrappedLines.push(word);}}}if(currentLine){wrappedLines.push(currentLine);}}return wrappedLines;};const lines=wrapText(text);const lineHeight=fontSize*1.2;const totalHeight=lines.length*lineHeight;// Calculate vertical position\nlet startY;if(verticalAlign===\"top\"){startY=lineHeight/2+padding;}else if(verticalAlign===\"bottom\"){startY=height-totalHeight+lineHeight/2-padding;}else{startY=(height-totalHeight)/2+lineHeight/2;}// Calculate horizontal position\nlet textX;if(horizontalAlign===\"left\"){textX=padding;}else if(horizontalAlign===\"right\"){textX=width-padding;}else{textX=width/2;}lines.forEach((line,index)=>{ctx.fillText(line,textX,startY+index*lineHeight);});// Get pixel data\nconst imageData=ctx.getImageData(0,0,canvas.width,canvas.height);const pixels=imageData.data;// Create particles from text pixels\nconst particles=[];const gap=Math.max(2,particleDensity);for(let y=0;y<canvas.height;y+=gap){for(let x=0;x<canvas.width;x+=gap){const index=(y*canvas.width+x)*4;const alpha=pixels[index+3];if(alpha>128){const px=x/dpr;const py=y/dpr;particles.push({x:px,y:py,baseX:px,baseY:py,vx:0,vy:0});}}}particlesRef.current=particles;startTransition(()=>setIsInitialized(true));},0);return()=>{clearTimeout(timeoutId);};},[text,particleColor,particleDensity,font,isStatic,horizontalAlign,verticalAlign]);// Animation loop\nuseEffect(()=>{if(isStatic||!isInitialized)return;const canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;const rect=canvas.getBoundingClientRect();const width=rect.width;const height=rect.height;const animate=()=>{ctx.clearRect(0,0,width,height);const mouse=mouseRef.current;const particles=particlesRef.current;for(let i=0;i<particles.length;i++){const particle=particles[i];const dx=mouse.x-particle.x;const dy=mouse.y-particle.y;const distance=Math.sqrt(dx*dx+dy*dy);// Push particles away from mouse\nif(distance<mouseRadius){const force=(mouseRadius-distance)/mouseRadius;const angle=Math.atan2(dy,dx);particle.vx-=Math.cos(angle)*force*2;particle.vy-=Math.sin(angle)*force*2;}// Return to base position\nparticle.vx+=(particle.baseX-particle.x)*returnSpeed;particle.vy+=(particle.baseY-particle.y)*returnSpeed;// Apply velocity with damping\nparticle.vx*=.95;particle.vy*=.95;particle.x+=particle.vx;particle.y+=particle.vy;// Draw particle\nctx.fillStyle=particleColor;ctx.beginPath();ctx.arc(particle.x,particle.y,particleSize,0,Math.PI*2);ctx.fill();}animationFrameRef.current=requestAnimationFrame(animate);};animate();return()=>{if(animationFrameRef.current){cancelAnimationFrame(animationFrameRef.current);}};},[isInitialized,particleColor,particleSize,mouseRadius,returnSpeed,isStatic]);const handleMouseMove=e=>{if(isStatic)return;const canvas=canvasRef.current;if(!canvas)return;const rect=canvas.getBoundingClientRect();mouseRef.current={x:e.clientX-rect.left,y:e.clientY-rect.top};};const handleMouseLeave=()=>{mouseRef.current={x:-1e3,y:-1e3};};// Static preview\nif(isStatic){// Map alignment values to CSS\nconst alignItems=verticalAlign===\"top\"?\"flex-start\":verticalAlign===\"bottom\"?\"flex-end\":\"center\";const justifyContent=horizontalAlign===\"left\"?\"flex-start\":horizontalAlign===\"right\"?\"flex-end\":\"center\";const textAlign=horizontalAlign;return /*#__PURE__*/_jsx(\"div\",{style:{...style,width:\"100%\",height:\"100%\",backgroundColor,display:\"flex\",alignItems,justifyContent,color:particleColor,textAlign,whiteSpace:\"pre-wrap\",wordBreak:\"break-word\",overflowWrap:\"break-word\",hyphens:\"auto\",padding:\"16px\",boxSizing:\"border-box\",...font},children:text});}return /*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,onMouseMove:handleMouseMove,onMouseLeave:handleMouseLeave,style:{...style,width:\"100%\",height:\"100%\",backgroundColor,cursor:\"default\"}});}addPropertyControls(TextFlow,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"Pola\",displayTextArea:true},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"80px\",variant:\"Regular\",letterSpacing:\"-0.02em\",lineHeight:\"1.2em\"}},horizontalAlign:{type:ControlType.Enum,title:\"Horizontal\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"center\",displaySegmentedControl:true},verticalAlign:{type:ControlType.Enum,title:\"Vertical\",options:[\"top\",\"center\",\"bottom\"],optionTitles:[\"Top\",\"Center\",\"Bottom\"],defaultValue:\"center\",displaySegmentedControl:true},particleColor:{type:ControlType.Color,title:\"Particle Color\",defaultValue:\"#FFFFFF\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#000000\"},particleSize:{type:ControlType.Number,title:\"Particle Size\",defaultValue:2,min:1,max:10,step:.5,unit:\"px\"},particleDensity:{type:ControlType.Number,title:\"Density\",description:\"Lower values create more particles (denser text)\",defaultValue:3,min:1,max:10,step:1,unit:\"px\"},mouseRadius:{type:ControlType.Number,title:\"Mouse Radius\",defaultValue:100,min:50,max:300,step:10,unit:\"px\"},returnSpeed:{type:ControlType.Number,title:\"Return Speed\",defaultValue:.05,min:.01,max:.2,step:.01}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TextFlow\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerIntrinsicWidth\":\"500\",\"framerIntrinsicHeight\":\"500\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ParticleText.map"],"mappings":"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"}