DOM bar chart with clip-overlay progress split; pointer-capture drag;
WaveformProfile fetched on load (fire-and-forget, cancellable); flat
fallback when no profile; small lazily-loaded waveformSeeker.js for
getBoundingClientRect and setPointerCapture.
Content API:
- Enabling CORS for access from Blazor app
Web Server:
- Content API URL environment config
- Web Audio API JS Interop layer in TypeScript
- HttpClient configs
Web Client:
- Audio Tack player controls
- Audio Player example page
- Audio Interop Service Layer
- Named HttpClients