{"version":3,"file":"chunk-jds55vib.js","sources":["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.component.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 { 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 \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.component.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, map, of } from 'rxjs';\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":["CouponType","CouponsUtilsService","constructor","urlHelper","getUrl","coupon","sport","region","league","isCompetitionCoupon","title","getCouponUrl","param","id","BetBuilder","CouponUrlParam","name","getCompetitionCouponUrl","ɵɵinject","UrlHelperService","factory","ɵfac","providedIn","_CouponsUtilsService","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ctx_r2","sitecore","betBuilder","messages","NewBadge","ɵɵtemplate","CouponListComponent_div_0_For_2_Conditional_1_Conditional_1_Template","A","ɵɵ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","noCoupons","CouponListComponent","_a","OnRouteResolve","route","liveButton","betBuilderConfig","trackingService","betBuilderConfigService","epcotConfigService","couponType","render$","Subject","showLoader$","pipe","map","startWith","className","signal","isEnabled","list","value","length","replace","onRouteResolved","model","addLiveButton","counts","type","undefined","ngOnDestroy","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","me","selectors","hostVars","hostBindings","rf","ctx","ɵɵclassMap","CouponListComponent_div_0_Template","CouponListComponent_ms_component_loader_1_Template","CouponListComponent_ng_template_2_Template","ɵɵtemplateRefExtractor","empty_r6","RxIf","ListItemComponent","ErrorComponent","ComponentLoaderComponent","TrackReferringACtionDirective","encapsulation","__decorate","HooksWireup","__metadata","CouponApi","cdsApiServiceFactory","cdsApi","endpoint","getCoupons","sportId","couponSubType","competitionId","virtualCompetitionId","get","getMultiBuilderCoupons","maxCouponCount","couponsubtype","getCoupon","sportIds","couponId","skip","take","sortBy","statisticsModes","form","interval","competitionIds","fixtureForm","from","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","subscribe","snapshot","tag","RouteTag","Coupons","CouponDetails","_b","routeParams","params","competition","virtualCompetition","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","isVirtual","betBuilderIndex","findIndex","splice","casheSuff","getOrCreate","getPreResolvedData","fallback","getDetailFallback","getTimeInterval","context","each","virtualCompetitionData","getPreResolvedDetailData","overview","virtualCompetitionIds","getStatisticsModesBySportId","toInteger","adaptFixtureFormModel","isRobot","couponPage","formMode","filterForm","filter","key","typedKey","outcomes","reverse","fixturePage","fixtures","reduce","addons","fixtureStatistics","selectedForm","formType","sorting","mapSorting","criteria","getCriteria","current","virtual","getSportModel","shortDescription","gridGroups","page","bgColor","backgroundColor","textColor","titleTextColor","detailsPageImageUrl","detailsPageBackgroundImage","landingPageImageUrl","landingPageBackgroundImage","order","contentType","offerSelection","sortByPrice","GridSorting","Time","shift","mapCouponType","couponTag","getInteger","routeLeague","isArray","routeConfig","path","translations","fixtureFormType","AwayForm","OverallForm","HomeForm","Regular","RouterEventsService","SportsCacheService","SortingStateService","PrettyUrlsConfig","DeviceService","NativeAppService","ColumnLayoutService","ClientCachingConfig","CalendarService","LayoutNavigationConfig","CompetitionRouteService","StatisticsConfigService","x","_CouponService"],"mappings":"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"}