(event: MouseEvent)
| 245 | // Mouse interaction - throttled for performance |
| 246 | let mouseMoveTimeout: number | null = null; |
| 247 | const handleMouseMove = (event: MouseEvent) => { |
| 248 | if (!interactive) return; |
| 249 | |
| 250 | if (mouseMoveTimeout) return; |
| 251 | |
| 252 | mouseMoveTimeout = window.setTimeout(() => { |
| 253 | mouseMoveTimeout = null; |
| 254 | }, 16); // ~60fps throttle |
| 255 | |
| 256 | const rect = container.getBoundingClientRect(); |
| 257 | const x = ((event.clientX - rect.left) / rect.width) * 2 - 1; |
| 258 | const y = -((event.clientY - rect.top) / rect.height) * 2 + 1; |
| 259 | mouseRef.current.set(x, y); |
| 260 | }; |
| 261 | |
| 262 | if (interactive) { |
| 263 | container.addEventListener("mousemove", handleMouseMove, { |
nothing calls this directly
no outgoing calls
no test coverage detected