@@ -11,6 +11,22 @@ interface BulgeConfig {
1111 delay ?: number ;
1212}
1313
14+ interface Dot {
15+ x : number ;
16+ y : number ;
17+ gridX : number ;
18+ gridY : number ;
19+ color : string ;
20+ baseOpacity : number ;
21+ distanceFromOrigin : number ;
22+ randomOffset : number ;
23+ flickerPhase : number ;
24+ flickerSpeed : number ;
25+ gridSize ?: number ;
26+ canvasW ?: number ;
27+ canvasH ?: number ;
28+ }
29+
1430interface MatrixFxProps extends React . ComponentProps < typeof Flex > {
1531 speed ?: number ;
1632 colors ?: string [ ] ;
@@ -51,7 +67,7 @@ const MatrixFx = React.forwardRef<HTMLDivElement, MatrixFxProps>(
5167 const isHoveredRef = useRef < boolean > ( false ) ;
5268 const mountAnimationCompleteRef = useRef < boolean > ( false ) ;
5369 const bulgeStartTimeRef = useRef < number > ( Date . now ( ) ) ;
54- const dotsRef = useRef < any [ ] > ( [ ] ) ;
70+ const dotsRef = useRef < Dot [ ] > ( [ ] ) ;
5571
5672 useEffect ( ( ) => {
5773 if ( forwardedRef ) {
@@ -104,19 +120,6 @@ const MatrixFx = React.forwardRef<HTMLDivElement, MatrixFxProps>(
104120 const cols = Math . ceil ( paddedWidth / totalSize ) ;
105121 const rows = Math . ceil ( paddedHeight / totalSize ) ;
106122
107- interface Dot {
108- x : number ;
109- y : number ;
110- gridX : number ;
111- gridY : number ;
112- color : string ;
113- baseOpacity : number ;
114- distanceFromOrigin : number ;
115- randomOffset : number ;
116- flickerPhase : number ;
117- flickerSpeed : number ;
118- }
119-
120123 // Only create new dots if grid doesn't exist or dimensions/size changed
121124 let dots : Dot [ ] = dotsRef . current ;
122125 let maxDistance = 0 ;
@@ -166,10 +169,10 @@ const MatrixFx = React.forwardRef<HTMLDivElement, MatrixFxProps>(
166169 randomOffset : Math . random ( ) * 0.3 ,
167170 flickerPhase : Math . random ( ) * Math . PI * 2 ,
168171 flickerSpeed : 0.8 + Math . random ( ) * 0.4 ,
169- gridSize : totalSize , // Store for comparison
170- canvasW : canvasWidth , // Store for comparison
171- canvasH : canvasHeight , // Store for comparison
172- } as any ) ;
172+ gridSize : totalSize ,
173+ canvasW : canvasWidth ,
174+ canvasH : canvasHeight ,
175+ } ) ;
173176 }
174177 }
175178
0 commit comments