{"version":3,"file":"virtual-list.module-fnbi7tui.js","sources":["packages/sports/web/app/src/virtual-list/common/virtual-navigation.service.ts","packages/sports/web/app/src/virtual-list/common/virtual-list.component.html","packages/sports/web/app/src/virtual-list/common/virtual-list.component.ts","packages/sports/web/app/src/virtual-list/virtual-list.service.ts","packages/sports/web/app/src/virtual-list/fixture/fixture-header.component.html","packages/sports/web/app/src/virtual-list/fixture/fixture-header.component.ts","packages/sports/web/app/src/virtual-list/fixture/fixture-media-viewer.component.html","packages/sports/web/app/src/virtual-list/fixture/fixture-media-viewer.component.ts","packages/sports/web/app/src/virtual-list/fixture/schedule-subscription.service.ts","packages/sports/libs/event-subscription/feature/full-event-subscription/src/full-event-subscription.service.ts","packages/sports/web/app/src/virtual-list/fixture/virtual-fixture.component.html","packages/sports/web/app/src/virtual-list/fixture/virtual-fixture.component.ts","packages/sports/web/app/src/virtual-list/on-demand/virtual-game.component.ts","packages/sports/web/app/src/virtual-list/on-demand/virtual-game.component.html","packages/sports/web/app/src/virtual-list/on-demand/virtual-on-demand.component.html","packages/sports/web/app/src/virtual-list/on-demand/virtual-on-demand.component.ts","packages/sports/web/app/src/virtual-list/on-demand/virtual-on-demand.resolver.ts","packages/sports/web/app/src/virtual-list/virtual-list-breadcrumbs.resolver.ts","packages/sports/web/app/src/virtual-list/virtual-list-redirect.guard.ts","packages/sports/web/app/src/virtual-list/fixture/virtual-fixture.resolver.ts","packages/sports/web/app/src/virtual-list/virtual-list.guard.ts","packages/sports/web/app/src/virtual-list/virtual-list-routing.module.ts","packages/sports/web/app/src/virtual-list/virtual-list.module.ts"],"sourcesContent":["import { Location } from '@angular/common';\nimport { Injectable, OnDestroy } from '@angular/core';\n\nimport { VirtualSportView } from '@cds/betting-offer/domain-specific/virtual';\nimport { Tag } from '@cds/betting-offer/tags';\nimport { Sitecore } from '@frontend/sports/common/client-config-data-access';\nimport { UrlParam } from '@frontend/sports/navigation/core/feature/url-builder';\nimport { UrlService } from '@frontend/vanilla/core';\n\nimport { VymlService } from '../../banner/vyml.service';\nimport { EpcotConfigService, EpcotModule } from '../../common/epcot-config.service';\nimport { SlotLayoutService } from '../../layout/slot-layout.service';\nimport { UrlHelperService, VirtualUrlParam } from '../../navigation-core/url-helper.service';\nimport { NavigationRouterService } from '../../navigation/navigation-router.service';\nimport { TrackNavArea } from '../../navigation/navigation-tracking.model';\nimport { SportNavigationComponent } from '../../navigation/sport-navigation/sport-navigation.component';\nimport { TabBarItem } from '../../tab-bar/tab-bar.models';\n\n@Injectable()\nexport class VirtualNavigationService implements OnDestroy {\n private nav: TabBarItem[] = [];\n private subNav: TabBarItem[] = [];\n\n private initialized = false;\n\n constructor(\n private navigationRouter: NavigationRouterService,\n private slotService: SlotLayoutService,\n private urlHelper: UrlHelperService,\n private vymlService: VymlService,\n private sitecore: Sitecore,\n private urlService: UrlService,\n private location: Location,\n private epcotConfigService: EpcotConfigService,\n ) {}\n\n set(sports: VirtualSportView[], activeSport?: number, activeCompetition?: number): void {\n if (!this.initialized) {\n this.initialize();\n }\n\n this.nav.splice(0);\n this.nav.push(...this.mapSportList(sports, activeSport));\n\n this.vymlService.get().subscribe((games) => {\n if (!games?.length) {\n return;\n }\n\n this.nav.push({\n id: -1,\n title: this.sitecore.globalMessages.VirtualsOnDemand,\n icon: 'theme-virtuals-on-demand',\n url: this.urlHelper.getVirtualSportUrl(VirtualUrlParam.OnDemand),\n active: activeSport === -1,\n });\n });\n\n this.subNav.splice(0);\n this.subNav.push(...this.mapCompetitionList(sports, activeSport, activeCompetition));\n }\n\n get(): TabBarItem[] {\n return this.nav;\n }\n\n getSub(): TabBarItem[] {\n return this.subNav;\n }\n\n clearUrl(): void {\n const url = this.urlService.current();\n const param = 'tab';\n\n if (url.search.has(param)) {\n url.search.delete(param);\n\n this.location.replaceState(url.path(), url.search.toString());\n }\n }\n\n ngOnDestroy(): void {\n if (!this.epcotConfigService.isEnabled(EpcotModule.Betslip)) {\n this.slotService.remove(SportNavigationComponent);\n }\n this.navigationRouter.resetNavigation();\n }\n\n private initialize(): void {\n this.navigationRouter.setNavigation('virtual');\n if (!this.epcotConfigService.isEnabled(EpcotModule.Betslip)) {\n this.slotService.register(SportNavigationComponent, {\n attributes: { model: this.nav, tracking: TrackNavArea.NavVirtual },\n order: 20,\n });\n }\n\n this.initialized = true;\n }\n\n private mapSportList(view: VirtualSportView[], activeSport?: number): TabBarItem[] {\n return view.map(({ sport }) => ({\n id: sport.id,\n url: this.urlHelper.getVirtualSportUrl(this.getParam(sport)),\n icon: `sports-${sport.id}`,\n title: sport.name.short || sport.name.value,\n active: sport.id === activeSport,\n }));\n }\n\n private mapCompetitionList(view: VirtualSportView[], activeSport?: number, activeCompetition?: number): TabBarItem[] {\n const tag = view.find((current) => current.sport.id === activeSport);\n\n if (!tag) {\n return [];\n }\n\n return tag.competitions.map(({ competition }) => ({\n id: competition.id,\n url: this.urlHelper.getVirtualSportUrl(this.getParam(tag.sport), this.getParam(competition)),\n title: competition.name.value,\n active: competition.id === activeCompetition,\n }));\n }\n\n private getParam(tag: Tag): UrlParam {\n return {\n id: tag.id,\n name: tag.name.value,\n };\n }\n}\n","@if (subNavigation().length > 1 && !hideTabBar) {\n
\n}\n