@inherits CmsMediumBrowserBase @using DeepDrftModels.DTOs @using DeepDrftModels.Enums @* CUTS tab content (Phase 9 §8.A/§8.C): the rich CmsAlbumBrowser grid filtered to Cut releases, so the tab carries expand-tracks, delete, the Type chip, and per-row edit identically to the ALL tab — no forked grid. Cuts have no medium-specific action, so no SpecialColumns are supplied; the grid renders its shared edit/delete only. Embedded as tab content only; no standalone @page route. *@ @code { /// /// Forwarded from the inner : fires after any per-row waveform /// generate succeeds so the parent page can refresh its catalogue-wide missing-count badges. /// [Parameter] public EventCallback OnWaveformGenerated { get; set; } private CmsAlbumBrowser? _albumBrowser; protected override ReleaseMedium Medium => ReleaseMedium.Cut; protected override string MediumNoun => "cuts"; protected override CutRow ToRow(ReleaseDto release) => new() { Release = release }; protected override ReleaseDto ReleaseOf(CutRow row) => row.Release; /// /// Clears the inner grid's cached per-track waveform status so the next row expand re-fetches. /// Called by the parent page after a catalogue-wide bulk run. /// public Task InvalidateWaveformStatusAsync() => _albumBrowser?.InvalidateWaveformStatusAsync() ?? Task.CompletedTask; public sealed class CutRow { public required ReleaseDto Release { get; set; } } }