Create custom hook to encapsulate zoom state management and animation:
- Zoom state: targetZoom, uncappedAdaptiveZoomRef
- React Spring animation with smooth easing config
- Automatic pause/resume at precision mode threshold
- Zoom capping when pointer lock state changes
- Recalculation of capped zoom when pointer lock is released
This hook replaces ~150 lines of zoom-related logic in MapRenderer.tsx.
Part of the ongoing refactoring to reduce MapRenderer.tsx from 2409 lines
to ~300-500 lines by extracting utilities and custom hooks.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>