Commit Graph

5 Commits

Author SHA1 Message Date
google-labs-jules[bot]
bac867f228 perf(GradientBlinds): decouple pointer events from render loop
- Move scroll position and bounding client rect calculations from `pointermove` handler to `requestAnimationFrame` loop.
- Use `pointerPosRef` to store raw event coordinates, reducing overhead in high-frequency event handlers.
- Ensure spotlight effect correctly accounts for scroll position updates during animation frames.
- Add regression test to verify `scrollX` is not accessed during pointer events.

Co-authored-by: ragusa-it <196988693+ragusa-it@users.noreply.github.com>
2026-01-29 01:40:38 +00:00
Melvin Ragusa
6b17b8b007 perf: optimized gradientblinds 2026-01-24 11:45:39 +01:00
google-labs-jules[bot]
5d29f05248 perf: Optimize GradientBlinds pointer move handler
- Removed synchronous `getBoundingClientRect` call from `pointermove` handler
- Implemented caching of canvas dimensions and scroll position using `ResizeObserver`
- Added logic to compensate for scroll delta in pointer position calculation
- Added regression test to verify `getBoundingClientRect` is not called during pointer interaction
- Fixed `ogl` mock in tests to include `Geometry`
2026-01-24 10:02:30 +00:00
google-labs-jules[bot]
fe6e07fe92 perf: pause GradientBlinds animation when off-screen
Removes the unconditional start of the animation loop on mount. The loop is now exclusively managed by the existing IntersectionObserver, ensuring it only runs when the component is visible.

Updates tests to reflect this behavior by simulating intersection events to trigger the animation.
2026-01-23 09:29:42 +00:00
google-labs-jules[bot]
1dc96269e5 Optimize GradientBlinds: Pause animation when off-screen
- Added IntersectionObserver to track component visibility.
- Paused requestAnimationFrame loop when component is not intersecting.
- Resumed loop when component becomes visible.
- Added unit tests to verify start/stop behavior.
2026-01-22 08:17:31 +00:00