@page "/mixes/{EntryKey}"
@using DeepDrftPublic.Client.Controls
@inherits ReleaseDetailBase
@(ViewModel.Release?.Title ?? "Mix") - DeepDrft
@if (ViewModel.IsLoading)
{
}
else if (ViewModel.NotFound || ViewModel.Release is null)
{
}
else
{
var release = ViewModel.Release;
var hasGenre = release.Genre is not null;
var hasDate = release.ReleaseDate is not null;
@* Full-page waveform sits behind the scaffold content. The scaffold's container is positioned
above it via the mix-detail-foreground stacking context. TrackId lets the visualizer couple to
playback only when the player is on this mix's track. *@
@* Lava-lamp button top-right, across from the back link. Toggles a popover holding the
four visualizer knobs (spec §7c/§7d). The controls themselves are unchanged — they
mutate the shared MixVisualizerControlState; the backdrop bridge pushes the uniforms.
The popover only progressively-discloses them off the always-visible row. *@
@* Outside-click close via MudOverlay (the SharePopover idiom). A knob drag never lands
on this overlay — the knob's own global capture overlay is a child of the popover
content above it — so dragging a knob does not dismiss the popover. *@
@if (!string.IsNullOrEmpty(release.ImagePath))
{
}
else
{
}
@if (hasGenre)
{
@release.Genre
}
@if (hasDate)
{
Released
@release.ReleaseDate!.Value.ToString("MMMM yyyy")
}
}
@code {
protected override string PersistKey => "mix-detail";
// Lava-lamp settings popover open state. Pure presentation over MixVisualizerControlState — the
// popover discloses the four knobs; toggling it touches no control value or bridge push.
private bool _settingsOpen;
private void ToggleSettings() => _settingsOpen = !_settingsOpen;
private void CloseSettings() => _settingsOpen = false;
}