{"version":3,"file":"chunk-duod6gc3.js","sources":["packages/sports/web/app/src/event-list-shared/sport/services/sorting-state.service.ts","packages/sports/web/app/src/event-list-shared/coupons/coupon.model.ts","packages/sports/web/app/src/event-list-shared/coupons/coupons.utils.service.ts","packages/sports/web/app/src/event-list-shared/coupons/coupon-list.html","packages/sports/web/app/src/event-list-shared/coupons/coupon-list.component.ts","packages/sports/web/app/src/cds/coupon-api.service.ts","packages/sports/web/app/src/dependency/master-detail-dependency.service.ts","packages/sports/web/app/src/event-list-shared/coupons/bet-builder/betbuilder-coupon.service.ts","packages/sports/web/app/src/event-list-shared/coupons/coupon.service.ts"],"sourcesContent":["import { Injectable, OnDestroy } from '@angular/core';\nimport { ActivationStart } from '@angular/router';\n\nimport { RouterEventsService } from '@frontend/sports/common/core/utils/router-events';\nimport { GridSorting } from '@frontend/sports/grid/core/feature/model';\nimport { LocalStoreService } from '@frontend/vanilla/core';\nimport { isArray } from 'lodash-es';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { CompetitionRouteService } from '../../../competition-list/competition-route.service';\n\nexport type SortingPage = 'live' | 'competitions' | 'coupons' | 'virtual';\n\n@Injectable({ providedIn: 'root' })\nexport class SortingStateService implements OnDestroy {\n private config: Map;\n private currentVirtualCompetitionId: number | null;\n private readonly storageKey = 'grid-sorting';\n private readonly serviceDestroyed$ = new Subject();\n\n constructor(\n private storage: LocalStoreService,\n private routerEventsService: RouterEventsService,\n private competitionRouteService: CompetitionRouteService,\n ) {\n this.loadConfigFromStorage();\n this.subscribeVirtualCompetitionRouteChanges();\n }\n\n get(page: SortingPage, sport?: number): GridSorting | undefined {\n return this.getSorting(page, sport);\n }\n\n set(page: SortingPage, sorting: GridSorting, sport?: number): void {\n this.setSorting(page, sorting, sport);\n this.store();\n }\n\n getVirtualCompetition(): GridSorting {\n const virtualCompetition = this.getSorting('virtual');\n\n if (virtualCompetition === undefined) {\n return GridSorting.Time;\n }\n\n return virtualCompetition;\n }\n\n setByVirtualCompetitionId(sorting: GridSorting, competitionId: number): void {\n this.setSorting('virtual', sorting);\n this.currentVirtualCompetitionId = competitionId;\n }\n\n private removeVirtualCompetition(competitionIds?: number | number[]): void {\n if (!this.currentVirtualCompetitionId) {\n return;\n }\n\n if (isArray(competitionIds) || competitionIds !== this.currentVirtualCompetitionId) {\n this.currentVirtualCompetitionId = null;\n this.config.delete('virtual');\n }\n }\n\n private setSorting(page: SortingPage, sorting: GridSorting, sport?: number): void {\n const key = this.getKey(page, sport);\n this.config.set(key, sorting);\n }\n\n private getSorting(page: SortingPage, sport?: number): GridSorting | undefined {\n const key = this.getKey(page, sport);\n\n return this.config.get(key);\n }\n\n private getKey(page: SortingPage, sport?: number): string {\n if (page === 'virtual') {\n return page;\n }\n\n return [sport || 0, page].join('|');\n }\n\n private store(): void {\n this.storage.set(this.storageKey, Array.from(this.config.entries()));\n }\n\n private loadConfigFromStorage(): void {\n this.config = new Map(this.storage.get(this.storageKey) || []);\n }\n\n private subscribeVirtualCompetitionRouteChanges(): void {\n this.routerEventsService.currentActivationStart.pipe(takeUntil(this.serviceDestroyed$)).subscribe(this.tryRemoveVirtualCompetition);\n }\n\n // While in the context of a virtual competition, the sorting should not change when navigating\n // through the groups. Leaving the context of a given virtual competition, should reset the sorting\n private tryRemoveVirtualCompetition = (event?: ActivationStart): void => {\n if (event) {\n const competitionRouteParams = this.competitionRouteService.params();\n if (!competitionRouteParams.isVirtual || competitionRouteParams.league !== this.currentVirtualCompetitionId) {\n this.removeVirtualCompetition();\n }\n }\n };\n\n ngOnDestroy(): void {\n this.serviceDestroyed$.next();\n this.serviceDestroyed$.complete();\n }\n}\n","import { FixturePage } from '@cds/betting-offer';\nimport { SportModel } from '@frontend/sports/betting-offer/feature/model';\nimport { CountItem, LeagueItem } from '@frontend/sports/common/core/data-access/sport-model';\nimport { GridSorting } from '@frontend/sports/grid/core/feature/model';\n\nexport enum CouponType {\n BetBuilder = -1,\n MultiBuilder,\n Regular,\n FormCoupon,\n}\n\nexport interface Coupon {\n id: number;\n title: string;\n description: string;\n active?: boolean;\n type: CouponType;\n gridGroups?: string[];\n landingPageImageUrl?: string;\n detailsPageImageUrl?: string;\n bgColor?: string;\n textColor?: string;\n order?: number;\n isFormCoupon: boolean;\n couponType?: string;\n showMarketSwitcher?: boolean;\n sortByPrice?: boolean;\n couponTag?: string;\n offerSelection?: string;\n}\n\nexport interface CouponList {\n coupons: Coupon[];\n sport: SportModel;\n counts?: CountItem;\n}\n\nexport interface CouponDetail extends Coupon {\n sport: SportModel;\n sorting?: GridSorting;\n page: FixturePage;\n competition?: number;\n virtualCompetitionData?: LeagueItem;\n}\n","import { Injectable } from '@angular/core';\n\nimport { UrlParam } from '@frontend/sports/navigation/core/feature/url-builder';\n\nimport { CouponUrlParam, UrlHelperService } from '../../navigation-core/url-helper.service';\nimport { Coupon, CouponType } from './coupon.model';\n\n@Injectable({ providedIn: 'root' })\nexport class CouponsUtilsService {\n constructor(private urlHelper: UrlHelperService) {}\n\n getUrl(coupon: Coupon, sport: UrlParam, region?: UrlParam, league?: UrlParam): string {\n const isCompetitionCoupon = !!(region && league);\n\n // coupon title was undefined on qa\n if (!coupon.title && !isCompetitionCoupon) {\n return this.urlHelper.getCouponUrl(sport);\n }\n\n const param = coupon.id === CouponType.BetBuilder ? CouponUrlParam.BetBuilder : { id: coupon.id, name: coupon.title };\n\n return isCompetitionCoupon ? this.urlHelper.getCompetitionCouponUrl(sport, param, region, league) : this.urlHelper.getCouponUrl(sport, param);\n }\n}\n","
\n @for (item of coupons; track item.id) {\n \n @if ('item.type === couponType.BetBuilder') {\n \n @if (showBetbuilderNewBadge) {\n {{ sitecore.betBuilder.messages.NewBadge }}\n }\n \n }\n \n }\n
\n\n \n","import { NgFor, NgIf } from '@angular/common';\nimport { Component, HostBinding, OnDestroy, OnInit, signal } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { SportModel } from '@frontend/sports/betting-offer/feature/model';\nimport { BetBuilderConfig, Sitecore } from '@frontend/sports/common/client-config-data-access';\nimport { HooksWireup, OnRouteResolve } from '@frontend/sports/common/core/utils/hooks';\nimport { ListItemComponent } from '@frontend/sports/common/ui/sports-list-items';\nimport { NOT_APPLICABLE, TrackReferringACtionDirective, TrackingService, trackingConstants } from '@frontend/sports/tracking/feature';\nimport { RxIf } from '@rx-angular/template/if';\nimport { Subject, map, startWith } from 'rxjs';\n\nimport { BetBuilderConfigService } from '../../betbuilder/services/betbuilder-config.service';\nimport { EpcotConfigService } from '../../common/epcot-config.service';\nimport { ErrorComponent } from '../../common/error/error.component';\nimport { ComponentLoaderComponent } from '../../deferred/component-loader.component';\nimport { LiveNowLinkRegisterService } from '../../live-now-item/live-now-link-register.service';\nimport { Coupon, CouponList, CouponType } from './coupon.model';\nimport { CouponsUtilsService } from './coupons.utils.service';\n\n@HooksWireup()\n@Component({\n selector: 'ms-coupon-list',\n templateUrl: 'coupon-list.html',\n standalone: true,\n imports: [RxIf, NgFor, NgIf, ListItemComponent, ErrorComponent, ComponentLoaderComponent, TrackReferringACtionDirective],\n})\nexport class CouponListComponent extends OnRouteResolve implements OnDestroy, OnInit {\n sport: SportModel;\n coupons: Coupon[];\n title: string;\n couponType = CouponType;\n showBetbuilderNewBadge: boolean;\n render$ = new Subject();\n showLoader$ = this.render$.pipe(\n map(() => false),\n startWith(true),\n );\n\n epcotEnabled: boolean;\n\n @HostBinding('class') className = 'coupon-list';\n cleanedAfterTrack = signal(false);\n\n constructor(\n public sitecore: Sitecore,\n route: ActivatedRoute,\n private liveButton: LiveNowLinkRegisterService,\n private betBuilderConfig: BetBuilderConfig,\n private trackingService: TrackingService,\n public utilsService: CouponsUtilsService,\n private betBuilderConfigService: BetBuilderConfigService,\n private epcotConfigService: EpcotConfigService,\n ) {\n super(route);\n this.epcotEnabled = this.epcotConfigService.isEnabled();\n }\n\n set list(value: CouponList) {\n if (!value?.coupons?.length) {\n return;\n }\n\n this.sport = value.sport;\n this.coupons = value.coupons;\n this.title = this.sitecore.coupons.coupons.replace('{0}', this.sport.name);\n }\n\n onRouteResolved(model: CouponList | undefined): void {\n if (!model) {\n return;\n }\n this.list = model;\n this.liveButton.addLiveButton(model.counts);\n }\n\n getTracking(coupon: Coupon): string | undefined {\n return coupon.type === this.couponType.BetBuilder ? 'BuildABet_CouponPage_List_Click' : 'M2_ListItemlinks';\n }\n\n getTitle(coupon: Coupon): string | undefined {\n return coupon.type === this.couponType.BetBuilder ? undefined : coupon.title;\n }\n\n ngOnDestroy(): void {\n this.liveButton.removeLiveButton();\n }\n\n ngOnInit(): void {\n this.showBetbuilderNewBadge = Boolean(\n this.sport &&\n this.betBuilderConfigService.isBetBuilderEnabled(this.sport.id) &&\n this.betBuilderConfig.isBetBuilderNewBadgeEnabledForSport?.includes(this.sport.id),\n );\n }\n\n trackCouponClick(coupon: Coupon): void {\n this.cleanedAfterTrack.update(() => this.utilsService.getUrl(coupon, this.sport).indexOf('http') === 0 || false);\n if (coupon.type === CouponType.FormCoupon) {\n this.trackingService.triggerEventWithCleaning(trackingConstants.EVENT_TRACKING, {\n [trackingConstants.COMPONENT_CATEGORY_EVENT]: 'sports coupons',\n [trackingConstants.COMPONENT_LABEL_EVENT]: 'FormCoupon',\n [trackingConstants.COMPONENT_ACTION_EVENT]: 'click',\n [trackingConstants.COMPONENT_POSITION_EVENT]: NOT_APPLICABLE,\n [trackingConstants.COMPONENT_LOCATION_EVENT]: NOT_APPLICABLE,\n [trackingConstants.COMPONENT_EVENT_DETAILS]: 'coupon',\n [trackingConstants.COMPONENT_URL_CLICKED]: this.utilsService.getUrl(coupon, this.sport),\n });\n }\n\n if (coupon.type === CouponType.BetBuilder) {\n this.trackingService.triggerEventWithCleaning(trackingConstants.EVENT_TRACKING, {\n [trackingConstants.COMPONENT_CATEGORY_EVENT]: 'betbuilder',\n [trackingConstants.COMPONENT_LABEL_EVENT]: 'entry point',\n [trackingConstants.COMPONENT_ACTION_EVENT]: 'click',\n [trackingConstants.COMPONENT_POSITION_EVENT]: NOT_APPLICABLE,\n [trackingConstants.COMPONENT_LOCATION_EVENT]: 'coupons',\n [trackingConstants.COMPONENT_EVENT_DETAILS]: 'build a bet matches',\n [trackingConstants.COMPONENT_URL_CLICKED]: this.utilsService.getUrl(coupon, this.sport),\n [trackingConstants.SPORT_ID]: this.sport.id.toString(),\n });\n }\n }\n}\n","import { Inject, Injectable } from '@angular/core';\n\nimport { Coupon, CouponPage, CouponSubType } from '@cds/betting-offer/domain-specific/coupons';\nimport { FixtureFormMode, ScoreboardMode, SortByCriteria } from '@cds/query-objects';\nimport { BaseCdsApi, BaseCdsApiFactory, CDS_API_FACTORY } from '@frontend/sports/content-distribution/feature';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class CouponApi {\n private cdsApi: BaseCdsApi;\n\n constructor(@Inject(CDS_API_FACTORY) cdsApiServiceFactory: BaseCdsApiFactory) {\n this.cdsApi = cdsApiServiceFactory({ endpoint: '/coupons' });\n }\n\n getCoupons(\n sportId: number,\n couponSubType: CouponSubType = CouponSubType.Regular,\n competitionId?: number,\n virtualCompetitionId?: number,\n ): Observable {\n return this.cdsApi.get('', { sportId, couponSubType, competitionId, virtualCompetitionId });\n }\n\n getMultiBuilderCoupons(maxCouponCount: number): Observable {\n return this.cdsApi.get('', { couponsubtype: 'multibuilder', maxCouponCount });\n }\n\n getCoupon(\n sportIds: string,\n couponId: number,\n skip: number = 0,\n take: number = 10,\n sortBy: SortByCriteria = SortByCriteria.StartDate,\n statisticsModes?: string,\n form?: FixtureFormMode,\n interval?: { from?: string; to?: string },\n couponsubtype: CouponSubType = CouponSubType.Regular,\n competitionIds?: string,\n virtualCompetitionId?: string,\n ): Observable {\n return this.cdsApi.get('/fixtures', {\n sportIds,\n couponId,\n skip,\n take,\n sortBy,\n fixtureForm: form,\n from: interval?.from,\n to: interval?.to,\n couponSubType: couponsubtype,\n competitionIds,\n virtualCompetitionId,\n statisticsModes,\n scoreboardMode: ScoreboardMode.Slim,\n });\n }\n\n getMultiBuilderCoupon(\n couponId: number,\n fromDate: Date,\n toDate: Date,\n sortBy: SortByCriteria = SortByCriteria.StartDate,\n take: number = 15,\n fixtureForm?: FixtureFormMode,\n statisticsModes?: string,\n ): Observable {\n return this.cdsApi.get('/fixtures', {\n couponId,\n sortBy,\n From: fromDate.toJSON(),\n To: toDate.toJSON(),\n take,\n fixtureForm,\n statisticsModes,\n });\n }\n}\n","import { Type } from '@angular/core';\nimport { ActivatedRouteSnapshot, Params } from '@angular/router';\n\nimport { Observable, map, of, switchMap, tap } from 'rxjs';\n\nimport { ColumnLayoutService } from '../layout/column-layout.service';\nimport { LayoutColumn } from '../layout/layout.model';\n\nexport interface MasterDetailComponent {\n component: Type;\n map: (data?: TMaster) => any;\n}\n\nexport interface MasterDetailState {\n master?: TMaster;\n detail?: TDetail;\n}\n\nexport abstract class MasterDetailDependencyService {\n private state?: MasterDetailState;\n private redirect?: boolean;\n\n constructor(protected layoutService: ColumnLayoutService) {}\n\n abstract getData(route: ActivatedRouteSnapshot, detail?: TDetail): Observable;\n abstract getPreResolvedData(route: ActivatedRouteSnapshot): Observable;\n abstract getDetailData(route: ActivatedRouteSnapshot, master?: TMaster): Observable;\n abstract getPreResolvedDetailData(route: ActivatedRouteSnapshot): Observable;\n abstract getComponents(): MasterDetailComponent[];\n\n abstract getRouteParams?(): Params;\n\n updateState(state: MasterDetailState): void {}\n\n shouldUpdateMasterCache(master: TMaster, route: ActivatedRouteSnapshot): boolean {\n return false;\n }\n\n shouldUpdateDetailCache(detail: TDetail, route: ActivatedRouteSnapshot): boolean {\n return true;\n }\n\n getContext(route: ActivatedRouteSnapshot, detail?: TDetail): Observable {\n if (this.state && this.state.master && detail && !this.shouldUpdateMasterCache(this.state.master, route)) {\n this.updateState(this.toState(this.state.master, detail));\n\n return of(this.state.master);\n }\n\n return this.getData(route, detail).pipe(\n switchMap((result) => {\n if (!detail && (this.redirect = this.hasDependency(route, result))) {\n // we do not set the dependency here as the router will navigate to the fallback route and\n // after the child route is loaded it will register the dependency\n return this.getChildContext(route, result).pipe(map((data) => this.toState(result, data)));\n }\n\n return of(this.toState(result));\n }),\n tap((result) => {\n if (detail || result.detail) {\n this.state = result;\n }\n }),\n map((result) => result.master),\n );\n }\n\n getCacheData(): TMaster | undefined {\n if (!this.state) {\n return;\n }\n\n return this.state.master;\n }\n\n getChildContext(route: ActivatedRouteSnapshot, master?: TMaster): Observable {\n if (this.state && this.state.detail && !this.shouldUpdateDetailCache(this.state.detail, route)) {\n this.registerDependency(this.state.master);\n\n return of(this.state.detail).pipe(tap(() => (this.state!.detail = undefined)));\n }\n\n return this.getDetailData(route, master).pipe(\n switchMap((result) => {\n if (!master && (this.redirect = this.hasDependency(route, result))) {\n return this.getContext(route, result).pipe(\n tap((data) => this.registerDependency(data)),\n map((data) => this.toState(data, result)),\n );\n }\n\n return of(this.toState(undefined, result));\n }),\n tap((result) => {\n if (master) {\n this.state = result;\n }\n }),\n map((result) => result.detail),\n );\n }\n\n shouldRedirect(): boolean {\n return !!this.redirect;\n }\n\n deregister(): void {\n this.getComponents().forEach((registration) => this.layoutService.remove(registration.component, LayoutColumn.Left));\n }\n\n private toState(master?: TMaster, detail?: TDetail): MasterDetailState {\n return {\n master,\n detail,\n };\n }\n\n protected hasDependency(route: ActivatedRouteSnapshot, result?: TMaster | TDetail): boolean {\n return this.layoutService.layout.shouldHaveLeftColumn && !!result;\n }\n\n registerDependency(state?: TMaster): void {\n if (!state) {\n this.deregister();\n\n return;\n }\n\n this.getComponents().forEach((registration) =>\n this.layoutService.register({\n component: registration.component,\n inputs: registration.map(state),\n location: LayoutColumn.Left,\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { BetBuilderConfig } from '@frontend/sports/common/client-config-data-access';\nimport { Observable, forkJoin, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { BetBuilderConfigService } from '../../../betbuilder/services/betbuilder-config.service';\nimport { BetBuilderApi } from '../../../cds/betbuilder-api.service';\nimport { CouponType } from '../coupon.model';\nimport { BetBuilderDetail } from './bet-builder-detail.model';\n\n@Injectable({ providedIn: 'root' })\nexport class BetBuilderCouponService {\n constructor(\n private betBuilderConfig: BetBuilderConfig,\n private betBuilderConfigService: BetBuilderConfigService,\n private betBuilderApi: BetBuilderApi,\n ) {}\n\n getDetailCoupon(sport?: number, competitionId?: number): Observable {\n const betbuilderEnabledForSport = sport && this.betBuilderConfigService.isBetBuilderEnabled(sport);\n if (!betbuilderEnabledForSport) {\n return of(undefined);\n }\n const sources = [];\n sources.push(this.betBuilderApi.getFixtures(sport, 0, this.betBuilderConfig.pageSize, competitionId));\n if (this.betBuilderConfig.isPrecreatedBetBuilderEnabled) {\n sources.push(this.betBuilderApi.getPromotedMarkets(sport, 1, this.betBuilderConfig.pageSize, competitionId));\n }\n\n return forkJoin(sources).pipe(\n map(([fixture, tiles]) => {\n return {\n fixture: fixture!,\n tiles: tiles!,\n type: CouponType.BetBuilder,\n competitionId,\n } as BetBuilderDetail;\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ActivatedRouteSnapshot } from '@angular/router';\n\nimport { Fixture } from '@cds/betting-offer';\nimport { FixtureForm } from '@cds/betting-offer/add-ons';\nimport { Coupon as CdsCoupon, CouponPage, CouponSubType } from '@cds/betting-offer/domain-specific/coupons';\nimport { FixtureFormMode, SortByCriteria } from '@cds/query-objects';\nimport { SportModel } from '@frontend/sports/betting-offer/feature/model';\nimport { ClientCachingConfig, LayoutNavigationConfig, PrettyUrlsConfig, Sitecore } from '@frontend/sports/common/client-config-data-access';\nimport { RouteTag } from '@frontend/sports/common/core/data-access/route';\nimport { ItemType, LeagueItem, children } from '@frontend/sports/common/core/data-access/sport-model';\nimport { ExpiringCache } from '@frontend/sports/common/core/utils/expiring-cache';\nimport { RouterEventsService } from '@frontend/sports/common/core/utils/router-events';\nimport { GridSorting } from '@frontend/sports/grid/core/feature/model';\nimport { UrlParam } from '@frontend/sports/navigation/core/feature/url-builder';\nimport { DeviceService, NativeAppService } from '@frontend/vanilla/core';\nimport { isArray, toInteger, toNumber } from 'lodash-es';\nimport { Observable, iif, map, of, switchMap, tap } from 'rxjs';\n\nimport { BetBuilderConfigService } from '../../betbuilder/services/betbuilder-config.service';\nimport { CalendarService } from '../../calendar/calendar.service';\nimport { CouponApi } from '../../cds/coupon-api.service';\nimport { SportsCacheService } from '../../client-caching/sports-cache.service';\nimport { CompetitionRouteService } from '../../competition-list/competition-route.service';\nimport { MasterDetailComponent, MasterDetailDependencyService, MasterDetailState } from '../../dependency/master-detail-dependency.service';\nimport { ColumnLayoutService } from '../../layout/column-layout.service';\nimport { TopNavigationVersion } from '../../navigation-core/navigation-core.models';\nimport { CompetitionRoute } from '../../navigation/navigation.models';\nimport { StatisticsConfigService } from '../../statistics/statistics-config.service';\nimport { SortingStateService } from '../sport/services/sorting-state.service';\nimport { BetBuilderDetail } from './bet-builder/bet-builder-detail.model';\nimport { BetBuilderCouponService } from './bet-builder/betbuilder-coupon.service';\nimport { CouponListComponent } from './coupon-list.component';\nimport { Coupon, CouponDetail, CouponList, CouponType } from './coupon.model';\n\n@Injectable({ providedIn: 'root' })\nexport class CouponService extends MasterDetailDependencyService {\n private cache: ExpiringCache;\n\n constructor(\n private sitecore: Sitecore,\n private routerEvents: RouterEventsService,\n private sportCacheService: SportsCacheService,\n private sortingStore: SortingStateService,\n private urlConfig: PrettyUrlsConfig,\n private device: DeviceService,\n private couponApiService: CouponApi,\n private betBuilderService: BetBuilderCouponService,\n private betBuilderConfigService: BetBuilderConfigService,\n private nativeAppService: NativeAppService,\n layoutService: ColumnLayoutService,\n clientCachingConfig: ClientCachingConfig,\n private calendar: CalendarService,\n private layoutNavConfig: LayoutNavigationConfig,\n private competitionRoute: CompetitionRouteService,\n private statisticsConfigService: StatisticsConfigService,\n ) {\n super(layoutService);\n\n this.cache = new ExpiringCache(clientCachingConfig.couponListTimeout);\n\n this.routerEvents.currentActivationEnd.pipe(takeUntilDestroyed()).subscribe((route) => {\n if (route && route.snapshot.data.tag !== RouteTag.Coupons && route.snapshot.data.tag !== RouteTag.CouponDetails) {\n this.deregister();\n }\n });\n }\n\n getRouteParams: undefined;\n\n getData(route: ActivatedRouteSnapshot, detail?: CouponDetail): Observable {\n const routeParams = this.competitionRoute.params();\n const { sport, competition, virtualCompetition } = this.getParam(route, routeParams);\n\n if (!sport) {\n throw new Error('Sport should be defined');\n }\n\n const isBetbuilderEnabled = this.betBuilderConfigService.isBetBuilderEnabled(sport);\n\n const betBuilder = {\n id: CouponType.BetBuilder,\n title: this.sitecore.betBuilder.messages?.BetBuilderEventsTitle ?? '',\n description: this.sitecore.betBuilder.messages?.BetBuilderEventsTitle ?? '',\n type: CouponType.BetBuilder,\n isFormCoupon: false,\n showMarketSwitcher: false,\n };\n\n const couponSubType = this.nativeAppService.isTerminal ? CouponSubType.Retail : CouponSubType.Regular;\n const source = this.couponApiService.getCoupons(sport, couponSubType, competition, virtualCompetition).pipe(\n map((coupons) => {\n const mapped = !coupons?.length ? [] : coupons.map((coupon) => this.getCouponModel(coupon));\n const target: number = detail ? this.getCouponId(detail) : toNumber(this.getDetailTarget(mapped)?.id);\n\n if (isBetbuilderEnabled) {\n if (this.layoutNavConfig.topNavigationVersion === TopNavigationVersion.V3) {\n mapped.push(betBuilder);\n } else if (this.layoutNavConfig.topNavigationVersion === TopNavigationVersion.V2 && coupons?.length) {\n mapped.unshift(betBuilder);\n }\n }\n\n return {\n coupons: mapped.map((coupon) => ({ ...coupon, active: coupon.id === target })),\n };\n }),\n switchMap((couponList) =>\n iif(() => couponList.coupons.length > 0, this.sportCacheService.getSport(sport), of(undefined)).pipe(\n map((sportItem) => {\n if (!sportItem) {\n return;\n }\n\n const competitionContext = !!(competition || virtualCompetition);\n const countCompetition = children(sportItem, ItemType.Competition).find((c) => c.id === (competition || virtualCompetition));\n const shouldRemoveBetbuilder = !!(countCompetition && (!countCompetition.meta.betBuilder || countCompetition.isVirtual));\n\n if ((!sportItem.meta.betBuilder && !competitionContext) || (competitionContext && shouldRemoveBetbuilder)) {\n const betBuilderIndex = couponList.coupons.findIndex((c) => c.id === CouponType.BetBuilder);\n if (betBuilderIndex >= 0) {\n couponList.coupons.splice(betBuilderIndex, 1);\n }\n }\n\n return { ...couponList, sport: { id: sport, name: sportItem.name }, counts: sportItem } as CouponList;\n }),\n ),\n ),\n );\n\n const casheSuff = competition ? `-${competition}` : virtualCompetition ? `-v-${virtualCompetition}` : '';\n\n return this.cache.getOrCreate(`coupons-${sport}${casheSuff}`, source).pipe(\n tap((result) => {\n if (result?.coupons.length) {\n let target: number | undefined;\n\n if (detail) {\n target = this.getCouponId(detail);\n }\n\n result.coupons.forEach((coupon) => (coupon.active = coupon.id === target));\n }\n }),\n );\n }\n\n getPreResolvedData(route: ActivatedRouteSnapshot): Observable {\n return of(undefined);\n }\n\n override updateState(state: MasterDetailState): void {\n if (!state.master || !state.detail) {\n return;\n }\n\n state.master.coupons.forEach((coupon) => (coupon.active = coupon.id === this.getCouponId(state.detail!)));\n }\n\n override shouldUpdateDetailCache(detail: CouponDetail, route: ActivatedRouteSnapshot): boolean {\n const { couponId } = this.getParam(route);\n\n return ('id' in detail && detail.id !== couponId) || (couponId === CouponType.BetBuilder && !('fixture' in detail));\n }\n\n getDetailData(route: ActivatedRouteSnapshot, master?: CouponList | undefined): Observable {\n const routeParams = this.competitionRoute.params();\n const { couponId, sport, competition, virtualCompetition } = this.getParam(route, routeParams);\n const fallback = this.getDetailFallback(master);\n\n const target = fallback ? (fallback.id as number) : couponId;\n if (!target) {\n return of(undefined);\n }\n\n if (target === CouponType.BetBuilder) {\n if (virtualCompetition) {\n return of(undefined);\n }\n\n return this.betBuilderService.getDetailCoupon(sport, competition);\n }\n\n const interval = this.calendar.getTimeInterval(route.params.context);\n\n return this.getData(route).pipe(\n switchMap((couponList) => {\n const coupon: Coupon | undefined = couponList?.coupons.find((each) => each.id === target);\n if (!coupon) {\n return of(undefined);\n }\n coupon.active = true;\n if (coupon.type === CouponType.FormCoupon) {\n return this.getDetailCoupon(target, coupon.type, sport, FixtureFormMode.Overall, interval); // coupon-detail\n }\n\n let virtualCompetitionData: LeagueItem | undefined;\n if (virtualCompetition) {\n const competitions = couponList?.counts ? children([couponList?.counts], ItemType.Competition) : [];\n virtualCompetitionData = competitions.find((c) => c.id === virtualCompetition && c.isVirtual);\n }\n\n return this.getDetailCoupon(target, coupon.type, sport, undefined, interval, competition, virtualCompetitionData);\n }),\n );\n }\n\n override getPreResolvedDetailData(route: ActivatedRouteSnapshot): Observable {\n return of(undefined);\n }\n\n getComponents(): MasterDetailComponent[] {\n return [{ component: CouponListComponent, map: (master?: CouponList) => ({ list: master }) }];\n }\n\n getDetailFallback(overview?: CouponList): UrlParam | undefined {\n if (!overview?.coupons.length) {\n return;\n }\n\n const target = this.getDetailTarget(overview.coupons);\n\n if (target) {\n return { id: target.id, name: target.title };\n }\n\n return;\n }\n\n getCoupon(\n sportIds: string,\n couponId: number,\n couponsubtype?: CouponSubType,\n skip: number = 0,\n take: number = 10,\n sortBy: SortByCriteria = SortByCriteria.StartDate,\n form?: FixtureFormMode,\n interval?: { from?: string; to?: string },\n competition?: number,\n virtualCompetition?: number,\n ): Observable {\n const competitionIds = competition ? `${competition}` : undefined;\n const virtualCompetitionIds = virtualCompetition ? `${virtualCompetition}` : undefined;\n const statisticsModes = this.statisticsConfigService.getStatisticsModesBySportId(toInteger(sportIds));\n const coupon = this.couponApiService.getCoupon(\n sportIds,\n couponId,\n skip,\n take,\n sortBy,\n statisticsModes,\n form,\n interval,\n couponsubtype,\n competitionIds,\n virtualCompetitionIds,\n );\n\n if (coupon && form) {\n return this.adaptFixtureFormModel(coupon as Observable, form);\n }\n\n return coupon;\n }\n\n protected override hasDependency(route: ActivatedRouteSnapshot, master: CouponList | undefined): boolean {\n const param = this.getParam(route);\n\n if (this.device.isRobot && !param.couponId) {\n return false;\n }\n\n return super.hasDependency(route, master);\n }\n\n private adaptFixtureFormModel(couponPage: Observable, formMode?: FixtureFormMode): Observable {\n const filterForm = (fixtureForm: FixtureForm, filter: (keyof FixtureForm)[]) => {\n for (const key in fixtureForm) {\n const typedKey = key as keyof FixtureForm;\n if (!filter.includes(key as keyof FixtureForm)) {\n //TODO any index issue, please investigate if below line is needed\n //@ts-ignore below line doesn't make sense, but kept it to ensure no changes are happening to the behavior\n fixtureForm[key] = undefined;\n }\n if (fixtureForm[typedKey]) {\n fixtureForm[typedKey]!.outcomes = fixtureForm[typedKey]!.outcomes.reverse();\n }\n }\n };\n\n return couponPage.pipe(\n map((coupon) =>\n coupon.fixturePage.fixtures.reduce((result, fixture) => {\n if (fixture.addons && fixture.addons.fixtureStatistics?.fixtureForm) {\n const selectedForm: { [mode in FixtureFormMode]: (keyof FixtureForm)[] } = {\n [FixtureFormMode.All]: ['overallAwayTeamForm', 'overallHomeTeamForm'],\n [FixtureFormMode.Overall]: ['overallAwayTeamForm', 'overallHomeTeamForm'],\n [FixtureFormMode.Home]: ['homeTeamHomeForm'],\n [FixtureFormMode.Away]: ['awayTeamAwayForm'],\n [FixtureFormMode.None]: [],\n };\n filterForm(fixture.addons.fixtureStatistics?.fixtureForm, selectedForm[formMode || FixtureFormMode.Overall]);\n }\n\n return result;\n }, coupon),\n ),\n );\n }\n\n private getCouponId(detail: CouponDetail | BetBuilderDetail): number {\n return detail.id ?? detail.type;\n }\n\n protected getDetailCoupon(\n id: number,\n type: CouponType,\n sport?: number,\n formType?: FixtureFormMode,\n interval?: { from?: string; to?: string },\n competition?: number,\n virtualCompetitionData?: LeagueItem,\n ): Observable {\n if (!sport) {\n return of(undefined);\n }\n\n const sorting = this.mapSorting(sport, type, formType);\n const criteria = this.getCriteria(sorting, type);\n const couponSubType = this.nativeAppService.isTerminal ? CouponSubType.Retail : CouponSubType.Regular;\n\n return this.getCoupon(sport.toString(), id, couponSubType, 0, 30, criteria, formType, interval, competition, virtualCompetitionData?.id).pipe(\n map((current) => {\n if (!current?.coupon) {\n return;\n }\n let sportItem: SportModel;\n if (\n !current.fixturePage.fixtures.length ||\n (current.fixturePage.fixtures.length > 0 && current.fixturePage.fixtures[0].sport.id !== sport)\n ) {\n sportItem = {\n id: sport,\n name: '',\n virtual: false,\n };\n } else {\n sportItem = this.getSportModel(current.fixturePage.fixtures[0]);\n }\n\n return {\n id: current.coupon.id,\n title: current.coupon.title,\n description: current.coupon.shortDescription,\n gridGroups: current.coupon.gridGroups,\n sport: sportItem,\n page: current.fixturePage,\n type,\n sorting,\n bgColor: current.coupon.backgroundColor,\n textColor: current.coupon.titleTextColor,\n detailsPageImageUrl: current.coupon.detailsPageBackgroundImage,\n landingPageImageUrl: current.coupon.landingPageBackgroundImage,\n order: current.coupon.order,\n isFormCoupon: current.coupon.isFormCoupon,\n couponType: current.coupon.contentType,\n offerSelection: current.coupon.offerSelection,\n showMarketSwitcher: current.coupon.showMarketSwitcher,\n competition,\n virtualCompetitionData,\n sortByPrice: current.coupon.sortByPrice,\n } as CouponDetail;\n }),\n );\n }\n\n private getCriteria(sorting: GridSorting, type: CouponType): SortByCriteria {\n let criteria = SortByCriteria.Tags;\n\n if (sorting === GridSorting.Time) {\n criteria = SortByCriteria.StartDate;\n }\n\n if (type === CouponType.FormCoupon) {\n criteria = SortByCriteria.FixtureForm;\n }\n\n return criteria;\n }\n\n private getDetailTarget(list: Coupon[]): Coupon | undefined {\n return list.filter((coupon) => coupon.type !== CouponType.BetBuilder).shift();\n }\n\n private getCouponModel(coupon: CdsCoupon): Coupon {\n return {\n id: coupon.id,\n title: coupon.title,\n description: coupon.shortDescription,\n type: this.mapCouponType(coupon),\n bgColor: coupon.backgroundColor,\n textColor: coupon.titleTextColor,\n detailsPageImageUrl: coupon.detailsPageBackgroundImage,\n landingPageImageUrl: coupon.landingPageBackgroundImage,\n order: coupon.order,\n isFormCoupon: coupon.isFormCoupon,\n couponType: coupon.contentType,\n offerSelection: coupon.offerSelection,\n showMarketSwitcher: coupon.showMarketSwitcher,\n sortByPrice: coupon.sortByPrice,\n couponTag: coupon.couponTag ?? 'Other',\n };\n }\n\n private getParam(\n route: ActivatedRouteSnapshot,\n params?: CompetitionRoute,\n ): { sport?: number; couponId?: number; competition?: number; virtualCompetition?: number } {\n const getInteger = (value?: string) => toInteger(value) || undefined;\n\n let routeLeague: number | undefined;\n if (params?.league) {\n routeLeague = isArray(params.league) ? params.league[0] : params.league;\n }\n\n return {\n sport: getInteger(route.params.sport),\n couponId:\n route.routeConfig && route.routeConfig.path === this.urlConfig.translations.betBuilder\n ? CouponType.BetBuilder\n : getInteger(route.params.coupon),\n competition: !params?.isVirtual ? routeLeague : undefined,\n virtualCompetition: params?.isVirtual ? routeLeague : undefined,\n };\n }\n\n protected getSportModel(fixture: Fixture): SportModel {\n return {\n id: fixture.sport.id,\n name: fixture.sport.name.value,\n virtual: fixture.isVirtual,\n };\n }\n\n private mapSorting(sport: number, type: CouponType, fixtureFormType: string | undefined): GridSorting {\n if (type === CouponType.FormCoupon) {\n switch (fixtureFormType) {\n case FixtureFormMode.Away:\n return GridSorting.AwayForm;\n case FixtureFormMode.Overall:\n return GridSorting.OverallForm;\n case FixtureFormMode.Home:\n default:\n return GridSorting.HomeForm;\n }\n }\n\n return this.sortingStore.get('coupons', sport) || GridSorting.Competition;\n }\n\n private mapCouponType(coupon: CdsCoupon): CouponType {\n if (coupon.isFormCoupon === true) {\n return CouponType.FormCoupon;\n } else {\n return CouponType.Regular;\n }\n }\n}\n"],"names":["SortingStateService","constructor","storage","routerEventsService","competitionRouteService","storageKey","serviceDestroyed$","Subject","tryRemoveVirtualCompetition","event","competitionRouteParams","params","isVirtual","league","currentVirtualCompetitionId","removeVirtualCompetition","loadConfigFromStorage","subscribeVirtualCompetitionRouteChanges","get","page","sport","getSorting","set","sorting","setSorting","store","getVirtualCompetition","virtualCompetition","undefined","GridSorting","Time","setByVirtualCompetitionId","competitionId","competitionIds","isArray","config","delete","key","getKey","join","Array","from","entries","Map","currentActivationStart","pipe","takeUntil","subscribe","ngOnDestroy","next","complete","ɵɵinject","LocalStoreService","RouterEventsService","CompetitionRouteService","b","factory","ɵfac","providedIn","_SortingStateService","CouponType","CouponsUtilsService","urlHelper","getUrl","coupon","region","isCompetitionCoupon","title","getCouponUrl","param","id","BetBuilder","CouponUrlParam","name","getCompetitionCouponUrl","UrlHelperService","_CouponsUtilsService","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ctx_r2","sitecore","betBuilder","messages","NewBadge","ɵɵtemplate","CouponListComponent_div_0_For_2_Conditional_1_Conditional_1_Template","ɵɵconditional","showBetbuilderNewBadge","ɵɵlistener","item_r2","ɵɵrestoreView","_r1","$implicit","ɵɵnextContext","ɵɵresetView","trackCouponClick","CouponListComponent_div_0_For_2_Conditional_1_Template","ɵɵproperty","getTracking","cleanedAfterTrack","epcotEnabled","active","getTitle","utilsService","ɵ$index_5_r4","ɵ$count_5_r5","ɵɵrepeaterCreate","CouponListComponent_div_0_For_2_Template","_forTrack0","ɵɵrepeater","coupons","ɵɵelement","O","noCoupons","CouponListComponent","_a","OnRouteResolve","route","liveButton","betBuilderConfig","trackingService","betBuilderConfigService","epcotConfigService","couponType","render$","showLoader$","map","startWith","className","signal","isEnabled","list","value","length","replace","onRouteResolved","model","addLiveButton","counts","type","removeLiveButton","ngOnInit","Boolean","isBetBuilderEnabled","isBetBuilderNewBadgeEnabledForSport","includes","update","indexOf","FormCoupon","triggerEventWithCleaning","trackingConstants","EVENT_TRACKING","COMPONENT_CATEGORY_EVENT","COMPONENT_LABEL_EVENT","COMPONENT_ACTION_EVENT","COMPONENT_POSITION_EVENT","NOT_APPLICABLE","COMPONENT_LOCATION_EVENT","COMPONENT_EVENT_DETAILS","COMPONENT_URL_CLICKED","SPORT_ID","toString","ɵɵdirectiveInject","Sitecore","ActivatedRoute","LiveNowLinkRegisterService","BetBuilderConfig","TrackingService","BetBuilderConfigService","EpcotConfigService","Ce","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","ye","Ae","CouponListComponent_div_0_Template","CouponListComponent_ms_component_loader_1_Template","CouponListComponent_ng_template_2_Template","ɵɵtemplateRefExtractor","xe","empty_r6","RxIf","ListItemComponent","ErrorComponent","ComponentLoaderComponent","TrackReferringACtionDirective","encapsulation","__decorate","HooksWireup","__metadata","CouponApi","cdsApiServiceFactory","cdsApi","endpoint","getCoupons","sportId","couponSubType","virtualCompetitionId","getMultiBuilderCoupons","maxCouponCount","couponsubtype","getCoupon","sportIds","couponId","skip","take","sortBy","statisticsModes","form","interval","fixtureForm","to","scoreboardMode","getMultiBuilderCoupon","fromDate","toDate","From","toJSON","To","CDS_API_FACTORY","_CouponApi","MasterDetailDependencyService","layoutService","updateState","state","shouldUpdateMasterCache","master","shouldUpdateDetailCache","detail","getContext","toState","of","getData","switchMap","result","redirect","hasDependency","getChildContext","data","tap","getCacheData","registerDependency","getDetailData","shouldRedirect","deregister","getComponents","forEach","registration","remove","component","LayoutColumn","Left","layout","shouldHaveLeftColumn","register","inputs","location","BetBuilderCouponService","betBuilderApi","getDetailCoupon","sources","push","getFixtures","pageSize","isPrecreatedBetBuilderEnabled","getPromotedMarkets","forkJoin","fixture","tiles","BetBuilderApi","_BetBuilderCouponService","CouponService","routerEvents","sportCacheService","sortingStore","urlConfig","device","couponApiService","betBuilderService","nativeAppService","clientCachingConfig","calendar","layoutNavConfig","competitionRoute","statisticsConfigService","cache","ExpiringCache","couponListTimeout","currentActivationEnd","takeUntilDestroyed","snapshot","tag","RouteTag","Coupons","CouponDetails","_b","routeParams","competition","getParam","Error","isBetbuilderEnabled","BetBuilderEventsTitle","description","isFormCoupon","showMarketSwitcher","isTerminal","source","mapped","getCouponModel","target","getCouponId","toNumber","getDetailTarget","topNavigationVersion","TopNavigationVersion","V3","V2","unshift","__spreadProps","__spreadValues","couponList","iif","getSport","sportItem","competitionContext","countCompetition","children","ItemType","Competition","find","c","shouldRemoveBetbuilder","meta","betBuilderIndex","findIndex","splice","casheSuff","getOrCreate","getPreResolvedData","fallback","getDetailFallback","getTimeInterval","context","each","virtualCompetitionData","getPreResolvedDetailData","overview","virtualCompetitionIds","getStatisticsModesBySportId","toInteger","adaptFixtureFormModel","isRobot","couponPage","formMode","filterForm","filter","typedKey","outcomes","reverse","fixturePage","fixtures","reduce","addons","fixtureStatistics","selectedForm","formType","mapSorting","criteria","getCriteria","current","virtual","getSportModel","shortDescription","gridGroups","bgColor","backgroundColor","textColor","titleTextColor","detailsPageImageUrl","detailsPageBackgroundImage","landingPageImageUrl","landingPageBackgroundImage","order","contentType","offerSelection","sortByPrice","shift","mapCouponType","couponTag","getInteger","routeLeague","routeConfig","path","translations","fixtureFormType","AwayForm","OverallForm","HomeForm","Regular","SportsCacheService","PrettyUrlsConfig","DeviceService","NativeAppService","ColumnLayoutService","ClientCachingConfig","CalendarService","LayoutNavigationConfig","StatisticsConfigService","_CouponService"],"mappings":"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"}