import { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core'; import { CommonModule } from '@angular/common'; import { ActivatedRoute, RouterLink } from '@angular/router'; import { ThemesService } from '../../services/themes.service'; import { YoutubeApiService } from '../../services/youtube-api.service'; import { Provider, InstanceService } from '../../services/instance.service'; import { Video } from '../../models/video.model'; import { TranslatePipe } from '../../pipes/translate.pipe'; import { LikeButtonComponent } from '../shared/components/like-button/like-button.component'; import { ProviderBadgeComponent } from '../../app/shared/components/provider-badge/provider-badge.component'; import { ChannelIdentityComponent } from '../../app/shared/components/channel-identity/channel-identity.component'; import { DurationPipe } from '../../app/shared/pipes/duration.pipe'; import { sectionAccepts, classifyOnce, type WithKind } from '../../app/shared/utils/section-policy'; import { DEFAULT_FILTERS, formatCount, matchesFilters, matchesLanguage, sortItems, type SearchFilters, } from '../../app/search/filters'; import { toShortProviderId } from '../../app/shared/providers/provider-ids'; import { providerSupportsLive } from '../../app/core/providers/provider-registry'; import { FilterToolbarComponent } from '../../app/shared/components/filter-toolbar/filter-toolbar.component'; interface ProviderBlock { provider: Provider; label: string; loading: boolean; error: string | null; items: WithKind