Replace MudSlider seekbar with WaveformSeeker loudness-waveform control
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.
This commit is contained in:
@@ -19,6 +19,14 @@ public interface IPlayerService
|
||||
string? ErrorMessage { get; }
|
||||
TrackDto? CurrentTrack { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Normalized loudness profile for the current track, each value in [0, 1], or null when no
|
||||
/// profile is available (no track loaded, or the track has no stored profile). The seek zone
|
||||
/// renders this as a waveform; a null profile drives the flat-but-seekable fallback. Fetched on
|
||||
/// track select and cleared on unload/stop; <see cref="StateChanged"/> fires once it arrives.
|
||||
/// </summary>
|
||||
double[]? WaveformProfile { get; }
|
||||
|
||||
// Events for UI updates
|
||||
EventCallback? OnStateChanged { get; set; }
|
||||
EventCallback? OnTrackSelected { get; set; }
|
||||
|
||||
Reference in New Issue
Block a user