{"version":3,"file":"chunk-h2h05yjw.js","sources":["packages/sports/web/app/src/competition-list/sport-tree.service.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { PrettyUrlsConfig, Sitecore, TimeFilterConfig } from '@frontend/sports/common/client-config-data-access';\nimport { SportConstant } from '@frontend/sports/common/core/data-access/constants';\nimport { CountItem, ItemType, count, isItemType, takeTop } from '@frontend/sports/common/core/data-access/sport-model';\nimport { RacingUrlParam } from '@frontend/sports/racing/feature/models';\n\nimport { CalendarService } from '../calendar/calendar.service';\nimport { CalendarUrlParam, SportUrlParam, UrlHelperService } from '../navigation-core/url-helper.service';\nimport { LazyTreeItem, SportTreeItem, TreeOptions } from './competition-list.models';\nimport { CompetitionRouteService } from './competition-route.service';\n\n@Injectable({ providedIn: 'root' })\nexport class SportTreeService {\n constructor(\n private competitionRoute: CompetitionRouteService,\n private urlHelper: UrlHelperService,\n private urlConfig: PrettyUrlsConfig,\n private sitecore: Sitecore,\n private calendar: CalendarService,\n private timeFilterConfig: TimeFilterConfig,\n ) {}\n\n get(sports: CountItem[], excludeContext?: boolean): SportTreeItem[] {\n if (!sports) {\n return [];\n }\n\n const options = this.getOptions(excludeContext);\n\n return sports.map((sport) => new SportTreeItem(sport, options));\n }\n\n getTop(sports: CountItem[]): SportTreeItem {\n const options = this.getOptions();\n const output: SportTreeItem = new LazyTreeItem([], { urlMapper: () => '', countMapper: () => 0 });\n\n output.title = this.sitecore.lobby.TopSports;\n output.subTitle = this.sitecore.lobby.AzSports;\n output.children = takeTop(sports).map((sport) => new SportTreeItem(sport, options));\n\n output.children.forEach((child) => {\n child.count = undefined;\n child.tracking = 'TopSportsLinks';\n });\n\n return output;\n }\n\n private getContext(): string | undefined {\n return this.competitionRoute.params().context;\n }\n\n private getOptions(excludeContext?: boolean): TreeOptions {\n const interval = this.calendar.isInterval(this.getContext());\n\n const options: TreeOptions = {\n urlMapper: this.getUrl(),\n countMapper: this.getCount(interval),\n };\n\n if (!excludeContext) {\n const context = this.getContext();\n const subContext = interval && !this.timeFilterConfig.isTimeFilterEnabled ? SportUrlParam.Competitions : undefined;\n\n options.urlMapper = this.getUrl(context, subContext);\n }\n\n return options;\n }\n\n private getUrl(context?: string, subContext?: SportUrlParam.Competitions): (sport?: CountItem) => string {\n return (sport) => {\n if (isItemType(sport, ItemType.Sport)) {\n if (sport.isVirtual) {\n return this.urlHelper.getVirtualSportUrl(sport);\n }\n\n if (sport.id === SportConstant.EsportsGroup) {\n return this.urlHelper.getESportsUrl();\n }\n\n if (sport.id === SportConstant.Horses || sport.id === SportConstant.Greyhounds) {\n const tomorrow = [CalendarUrlParam.Tomorrow, this.urlConfig.translations.tomorrow];\n const future = [\n CalendarUrlParam.After2days,\n CalendarUrlParam.After3days,\n this.urlConfig.translations.after2days,\n this.urlConfig.translations.after3days,\n ];\n\n if (context) {\n if (tomorrow.includes(context)) {\n return this.urlHelper.getRaceUrl(sport.id, RacingUrlParam.Tomorrow);\n }\n if (future.includes(context)) {\n return this.urlHelper.getRaceUrl(sport.id, RacingUrlParam.Future);\n }\n }\n\n return this.urlHelper.getSportUrl(sport);\n }\n }\n\n return this.urlHelper.getSportUrl(sport, context, subContext);\n };\n }\n\n private getCount(interval: boolean): (item?: CountItem) => number {\n return (item) => count(item, interval);\n }\n}\n"],"names":["SportTreeService","constructor","competitionRoute","urlHelper","urlConfig","sitecore","calendar","timeFilterConfig","get","sports","excludeContext","options","getOptions","map","sport","SportTreeItem","getTop","output","LazyTreeItem","urlMapper","countMapper","title","lobby","TopSports","subTitle","AzSports","children","takeTop","forEach","child","count","undefined","tracking","getContext","params","context","interval","isInterval","getUrl","getCount","subContext","isTimeFilterEnabled","SportUrlParam","Competitions","isItemType","ItemType","Sport","isVirtual","getVirtualSportUrl","id","SportConstant","EsportsGroup","getESportsUrl","Horses","Greyhounds","tomorrow","CalendarUrlParam","Tomorrow","translations","future","After2days","After3days","after2days","after3days","includes","getRaceUrl","RacingUrlParam","Future","getSportUrl","item","ɵɵinject","CompetitionRouteService","UrlHelperService","PrettyUrlsConfig","Sitecore","CalendarService","TimeFilterConfig","m","factory","ɵfac","providedIn","_SportTreeService"],"mappings":"sRAaA,IAAaA,GAAgB,IAAA,CAAvB,IAAOA,CAAAA,CAAP,MAAOA,CAAgB,CACzBC,WACYC,CAAAA,CAAAA,CACAC,EACAC,CACAC,CAAAA,CAAAA,CACAC,EACAC,CAAkC,CAAA,CALlC,KAAAL,gBAAAA,CAAAA,CAAAA,CACA,IAAAC,CAAAA,SAAAA,CAAAA,EACA,IAAAC,CAAAA,SAAAA,CAAAA,EACA,IAAAC,CAAAA,QAAAA,CAAAA,EACA,IAAAC,CAAAA,QAAAA,CAAAA,CACA,CAAA,IAAA,CAAAC,iBAAAA,EACT,CAEHC,IAAIC,CAAqBC,CAAAA,CAAAA,CAAwB,CAC7C,GAAI,CAACD,CACD,CAAA,OAAO,EAGX,CAAA,IAAME,EAAU,IAAKC,CAAAA,UAAAA,CAAWF,CAAc,CAE9C,CAAA,OAAOD,CAAOI,CAAAA,GAAAA,CAAKC,GAAU,IAAIC,CAAAA,CAAcD,EAAOH,CAAO,CAAC,CAClE,CAEAK,MAAAA,CAAOP,CAAmB,CAAA,CACtB,IAAME,CAAU,CAAA,IAAA,CAAKC,YACfK,CAAAA,CAAAA,CAAwB,IAAIC,CAAa,CAAA,EAAI,CAAA,CAAEC,UAAWA,IAAM,EAAA,CAAIC,YAAaA,IAAM,CAAC,CAAE,CAEhGH,CAAAA,OAAAA,CAAOI,CAAAA,KAAAA,CAAQ,KAAKhB,QAASiB,CAAAA,KAAAA,CAAMC,UACnCN,CAAOO,CAAAA,QAAAA,CAAW,KAAKnB,QAASiB,CAAAA,KAAAA,CAAMG,QACtCR,CAAAA,CAAAA,CAAOS,SAAWC,CAAQlB,CAAAA,CAAM,EAAEI,GAAKC,CAAAA,CAAAA,EAAU,IAAIC,CAAcD,CAAAA,CAAAA,CAAOH,CAAO,CAAC,EAElFM,CAAOS,CAAAA,QAAAA,CAASE,QAASC,CAAS,EAAA,CAC9BA,EAAMC,KAAQC,CAAAA,KAAAA,CAAAA,CACdF,CAAMG,CAAAA,QAAAA,CAAW,iBACrB,CAAC,CAAA,CAEMf,CACX,CAEQgB,UAAAA,EAAU,CACd,OAAO,IAAA,CAAK/B,gBAAiBgC,CAAAA,MAAAA,GAASC,OAC1C,CAEQvB,WAAWF,CAAwB,CAAA,CACvC,IAAM0B,CAAW,CAAA,IAAA,CAAK9B,QAAS+B,CAAAA,UAAAA,CAAW,KAAKJ,UAAU,EAAE,EAErDtB,CAAuB,CAAA,CACzBQ,UAAW,IAAKmB,CAAAA,MAAAA,EAChBlB,CAAAA,WAAAA,CAAa,KAAKmB,QAASH,CAAAA,CAAQ,GAGvC,GAAI,CAAC1B,EAAgB,CACjB,IAAMyB,CAAU,CAAA,IAAA,CAAKF,YACfO,CAAAA,CAAAA,CAAaJ,GAAY,CAAC,IAAA,CAAK7B,iBAAiBkC,mBAAsBC,CAAAA,CAAAA,CAAcC,YAAeZ,CAAAA,KAAAA,CAAAA,CAEzGpB,EAAQQ,SAAY,CAAA,IAAA,CAAKmB,OAAOH,CAASK,CAAAA,CAAU,EACvD,CAEA,OAAO7B,CACX,CAEQ2B,OAAOH,CAAkBK,CAAAA,GAAAA,CAAuC,CACpE,OAAQ1B,CAAAA,EAAS,CACb,GAAI8B,CAAAA,CAAW9B,CAAO+B,CAAAA,CAAAA,CAASC,KAAK,CAAG,CAAA,CACnC,GAAIhC,CAAMiC,CAAAA,SAAAA,CACN,OAAO,IAAK5C,CAAAA,SAAAA,CAAU6C,kBAAmBlC,CAAAA,CAAK,EAGlD,GAAIA,CAAAA,CAAMmC,KAAOC,CAAcC,CAAAA,YAAAA,CAC3B,OAAO,IAAKhD,CAAAA,SAAAA,CAAUiD,aAAa,EAAA,CAGvC,GAAItC,CAAMmC,CAAAA,EAAAA,GAAOC,EAAcG,MAAUvC,EAAAA,CAAAA,CAAMmC,KAAOC,CAAcI,CAAAA,UAAAA,CAAY,CAC5E,IAAMC,EAAW,CAACC,CAAAA,CAAiBC,SAAU,IAAKrD,CAAAA,SAAAA,CAAUsD,aAAaH,QAAQ,CAAA,CAC3EI,CAAS,CAAA,CACXH,EAAiBI,UACjBJ,CAAAA,CAAAA,CAAiBK,WACjB,IAAKzD,CAAAA,SAAAA,CAAUsD,aAAaI,UAC5B,CAAA,IAAA,CAAK1D,SAAUsD,CAAAA,YAAAA,CAAaK,UAAU,CAG1C,CAAA,GAAI5B,EAAS,CACT,GAAIoB,EAASS,QAAS7B,CAAAA,CAAO,CACzB,CAAA,OAAO,KAAKhC,SAAU8D,CAAAA,UAAAA,CAAWnD,EAAMmC,EAAIiB,CAAAA,GAAAA,CAAeT,QAAQ,CAEtE,CAAA,GAAIE,CAAOK,CAAAA,QAAAA,CAAS7B,CAAO,CACvB,CAAA,OAAO,KAAKhC,SAAU8D,CAAAA,UAAAA,CAAWnD,EAAMmC,EAAIiB,CAAAA,GAAAA,CAAeC,MAAM,CAExE,CAEA,OAAO,IAAA,CAAKhE,UAAUiE,WAAYtD,CAAAA,CAAK,CAC3C,CACJ,CAEA,OAAO,IAAA,CAAKX,UAAUiE,WAAYtD,CAAAA,CAAAA,CAAOqB,EAASK,GAAU,CAChE,CACJ,CAEQD,QAAAA,CAASH,CAAiB,CAAA,CAC9B,OAAQiC,CAASvC,EAAAA,CAAAA,CAAMuC,EAAMjC,CAAQ,CACzC,yCAjGSpC,CAAgBsE,EAAAA,EAAAA,CAAAC,GAAA,CAAA,CAAAD,GAAAE,EAAA,CAAA,CAAAF,GAAAG,EAAA,CAAA,CAAAH,GAAAI,EAAA,CAAA,CAAAJ,EAAAK,CAAAA,EAAA,EAAAL,EAAAM,CAAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,UAAA,CAAAC,CAAA,CAAA,CAAA,KAAA,CAAhB7E,EAAgB8E,OAAhB9E,CAAAA,CAAAA,CAAgB+E,SAAAC,CAAAA,UAAAA,CADH,MAAM,CAAA,CAAA,CAC1B,IAAOhF,GAAPiF,CAAAA,CAAAA,CAAAA,OAAOjF,GAAgB,CAAA"}