{"version":3,"file":"teaser.feature-i42tr22p.js","sources":["packages/sports/web/app/src/teaser/teaser-image-preloader.ts","packages/sports/web/app/src/teaser/teaser.models.ts","packages/sports/web/app/src/teaser/teaser.html","packages/sports/web/app/src/teaser/teaser.component.ts","packages/sports/web/app/src/teaser/teaser.utils.service.ts","packages/sports/web/app/src/teaser/teasers.service.ts","packages/sports/web/app/src/teaser/rotating-teaser-widget.component.html","packages/sports/web/app/src/teaser/rotating-teaser-widget.component.ts","packages/sports/web/app/src/teaser/static-teaser-widget.component.html","packages/sports/web/app/src/teaser/static-teaser-widget.component.ts","packages/sports/web/app/src/teaser/widget-registration.service.ts","packages/sports/web/app/src/teaser/teaser.feature.ts"],"sourcesContent":["import { Promotion } from '../crm-offer-data/crm-offer.model';\n\nexport function preloadPromotionImage(promotion: Promotion, doc: Document): void {\n    if (promotion?.banner?.heroImageUrl && !doc.head.querySelector(`link[href=\"${promotion.banner?.heroImageUrl}\"]`)) {\n        const link = doc.createElement('link');\n        const imageUrl = promotion.banner.heroImageUrl;\n        link.rel = 'preload';\n        link.href = imageUrl;\n        link.as = 'image';\n        doc.head.appendChild(link);\n    }\n}\n","import { TeaserViewModel } from '@frontend/sports/types/components/teasers';\nimport { LinkViewModel } from '@frontend/sports/types/models/link';\n\nexport interface EnhancedTeaserViewModel extends TeaserViewModel {\n    details?: any;\n    extract?: boolean;\n    jackpotbanner?: TeasersJackpotViewModel;\n    options?: string[];\n    originalTeasersCount?: number;\n    showMore?: boolean;\n    visibleTeaser?: boolean;\n}\n\nexport interface TeasersResponse {\n    teasers: EnhancedTeaserViewModel[];\n}\n\nexport interface TeasersJackpotViewModel {\n    icon?: string;\n    title?: string;\n    subtitle?: string;\n    background?: string;\n    jackpotGroup?: string;\n    value?: number;\n    link?: LinkViewModel;\n}\n\nexport enum Alignment {\n    Right = 'Right',\n    Left = 'Left',\n    Center = 'Center',\n}\n","@if (teasers?.length > 0 || promotions?.length) {\n    <ms-slideshow\n        [auto]=\"true\"\n        [delay]=\"delay\"\n        [circular]=\"true\"\n        [pageindicators]=\"false\"\n        [mode]=\"slideMode\"\n        [realtotalslidecount]=\"totalCount()\"\n        [navigationMode]=\"navigationMode\"\n        [arrowPosition]=\"arrowLeftRightValue\"\n        [showProgressBar]=\"true\"\n        [overlayArea]=\"overlayArea\"\n        (slideChanged)=\"slideChanged($event)\"\n        (navigation)=\"track($event)\">\n        @for (promotion of promotions; track promotion.id; let position = $index) {\n            <ms-slide [ngStyle]=\"{ width: maxSlideWidth ? '768px' : '100%' }\">\n                <ms-crm-promotion-banner [promotion]=\"promotion\" [listIndex]=\"position\" [isDynamicSize]=\"true\"></ms-crm-promotion-banner>\n            </ms-slide>\n        }\n        @for (teaser of teasers; track teaser.title; let i = $index) {\n            <ms-slide class=\"teaser\" [ngStyle]=\"{ width: maxSlideWidth ? '768px' : '100%' }\">\n                @if (teaser.visibleTeaser) {\n                    <img\n                        #slide\n                        fill\n                        ngSrcset=\"480w, 640w, 768w\"\n                        sizes=\"(min-width: 960px) 768px, 100vw\"\n                        class=\"teaser-image\"\n                        [ngSrc]=\"teaser.imageUrl\"\n                        [priority]=\"i + promotions.length === 0\" />\n                }\n                @if (isCurrentSlide(i + promotions.length)) {\n                    <a [href]=\"teaser.href\" [attr.target]=\"teaser.target\" (click)=\"teaserClick($event, teaser, i)\">\n                        <div\n                            class=\"teaser-content\"\n                            [class.with-odds]=\"!teaser.isPromotionalTeaser && teaser.displayOdds\"\n                            [class.no-gradient]=\"!teaser.title && !teaser.subtitle\"\n                            [ngClass]=\"{\n                                'expanded-info': teaser.extract,\n                                'gradient-alignment-left': teaser.textAlignment === 'Left',\n                                'gradient-alignment-right': teaser.textAlignment === 'Right',\n                            }\">\n                            <div class=\"teaser-text\" [ngClass]=\"getTeaserAlignment(teaser)\">\n                                <div class=\"title text-white\" [ngStyle]=\"{ visibility: teaser.title ? 'visible' : 'hidden' }\">{{ teaser.title }}</div>\n                                <div class=\"subtitle text-white\" [ngStyle]=\"{ visibility: teaser.subtitle ? 'visible' : 'hidden' }\">\n                                    {{ teaser.subtitle }}\n                                </div>\n\n                                @if (!teaser.isPromotionalTeaser && teaser.displayOdds) {\n                                    <div class=\"odds\">\n                                        @for (option of teaser.options; track option) {\n                                            <span class=\"odds-item\">{{ option }}</span>\n                                        }\n                                    </div>\n                                }\n                                @if (teaser.buttonText) {\n                                    <a\n                                        class=\"btn-teaser\"\n                                        ds-button\n                                        kind=\"primary\"\n                                        variant=\"filled\"\n                                        size=\"large\"\n                                        [href]=\"teaser.href\"\n                                        [innerHTML]=\"teaser.buttonText | msTrust: 'html'\"\n                                        (click)=\"track()\"></a>\n                                }\n                            </div>\n                        </div>\n                    </a>\n                }\n                @if (teaser.jackPot && teaser.jackpotbanner) {\n                    <div class=\"teaser-content banner\">\n                        <ms-banner-jackpot\n                            class=\"teaser-text\"\n                            [listIndex]=\"i + promotions.length === 0\"\n                            [model]=\"teaser.jackpotbanner\"></ms-banner-jackpot>\n                    </div>\n                }\n\n                @if (teaser.info) {\n                    <div class=\"teaser-info\" [ngClass]=\"{ 'info-position': teaser.termsAndConditions && !teaser.extract }\">\n                        <vn-icon\n                            class=\"teaser-icon\"\n                            size=\"16\"\n                            [name]=\"teaser.extract ? 'theme-close-i' : 'theme-info'\"\n                            (click)=\"infoClick($event, teaser)\"></vn-icon>\n                        @if (teaser.extract) {\n                            <div class=\"info-message\" [innerHTML]=\"teaser.info | msTrust: 'html'\"></div>\n                        }\n                    </div>\n                }\n                @if (teaser.termsAndConditions) {\n                    <div class=\"terms-conditions-container\">\n                        <span class=\"terms-conditions\">{{ teaser.termsAndConditions }}</span>\n                    </div>\n                }\n            </ms-slide>\n        }\n    </ms-slideshow>\n}\n","import { NgClass, NgOptimizedImage, NgStyle } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    DestroyRef,\n    ElementRef,\n    HostBinding,\n    Input,\n    OnChanges,\n    QueryList,\n    Renderer2,\n    ViewChildren,\n    inject,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { ImagesConfig, Sitecore } from '@frontend/sports/common/client-config-data-access';\nimport { TrustPipe } from '@frontend/sports/common/core/utils/dom';\nimport { ISimpleChanges } from '@frontend/sports/common/core/utils/simple-change';\nimport { TimerService } from '@frontend/sports/common/core/utils/timer';\nimport { WindowEventService } from '@frontend/sports/common/core/utils/window-event';\nimport { ArrowDirection, NavigationMode, SlideComponent, SlideshowComponent, SlideshowMode } from '@frontend/sports/slideshow/feature';\nimport { NOT_APPLICABLE, TrackingService, trackingConstants } from '@frontend/sports/tracking/feature';\nimport { DsButton } from '@frontend/ui/button';\nimport { DeviceService, NativeAppService, WINDOW } from '@frontend/vanilla/core';\nimport { IconCustomComponent } from '@frontend/vanilla/shared/icons';\n\nimport { BannerJackpotComponent } from '../banner/banner-jackpot.component';\nimport { ImageQualityService } from '../common/image-quality.service';\nimport { Promotion } from '../crm-offer-data/crm-offer.model';\nimport { CrmPromotionModule } from '../crm-promotion/crm-promotion.module';\nimport { EventBridgeService } from '../event-bridge/event-bridge.service';\nimport { UrlHelperService } from '../navigation-core/url-helper.service';\nimport { Alignment, EnhancedTeaserViewModel } from './teaser.models';\n\n@Component({\n    selector: 'ms-teaser',\n    templateUrl: 'teaser.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        BannerJackpotComponent,\n        CrmPromotionModule,\n        NgOptimizedImage,\n        NgClass,\n        NgStyle,\n        TrustPipe,\n        IconCustomComponent,\n        SlideshowComponent,\n        SlideComponent,\n        DsButton,\n    ],\n    standalone: true,\n})\nexport class TeaserComponent implements OnChanges, AfterViewInit {\n    @Input() teasers: EnhancedTeaserViewModel[] = [];\n    @Input() promotions: Promotion[] = [];\n    @HostBinding('class') className = 'teaser teaser-list';\n\n    currentSlideIndex = 0;\n\n    slideMode = SlideshowMode.OneSlide;\n    delay = 8000;\n\n    @ViewChildren('slide') allSlides: QueryList<ElementRef>;\n\n    private imageElements: HTMLImageElement[] = [];\n    private teaserMaxHeight = 240;\n    private teaserImageRatio = 3.2;\n    private cropRange = {\n        min: 767,\n        max: 932,\n    };\n\n    private arrows = {\n        width: 50,\n        height: 50,\n        marginOnThreeTeasers: 16,\n        marginOnOneTeasers: 4,\n    };\n\n    arrowLeftRightValue: number;\n    maxSlideWidth = false;\n    navigationMode: NavigationMode;\n    containerWidth: number;\n    overlayArea: {\n        position: string;\n        width: string;\n    };\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    constructor(\n        private urlHelper: UrlHelperService,\n        private eventBridge: EventBridgeService,\n        private nativeApp: NativeAppService,\n        private tracking: TrackingService,\n        private elementRef: ElementRef<HTMLElement>,\n        private device: DeviceService,\n        private renderer: Renderer2,\n        private windowEvent: WindowEventService,\n        private changeDetector: ChangeDetectorRef,\n        private timer: TimerService,\n        public sitecore: Sitecore,\n        private imagesConfig: ImagesConfig,\n        private imageQualityService: ImageQualityService,\n    ) {\n        if (!this.device.isMobile && !this.device.isTablet) {\n            this.Calcutewidth(window.innerWidth);\n        }\n\n        this.device.orientation.pipe(takeUntilDestroyed()).subscribe(this.toggleSlideMode);\n    }\n\n    private Calcutewidth(resolution: any) {\n        this.cropRange.max = resolution * 0.48;\n\n        this.cropRange.min = resolution * 0.4;\n    }\n\n    ngOnChanges(changes: ISimpleChanges<TeaserComponent>): void {\n        this.toggleSlideMode();\n\n        if (changes.teasers?.currentValue?.length) {\n            this.teasers.forEach((t) => this.setTeaserLink(t));\n            this.currentSlideIndex = 0;\n            [0, 1, this.teasers.length - 1].forEach((index) => {\n                if (this.teasers[index]) {\n                    this.teasers[index].visibleTeaser = true;\n                }\n            });\n        }\n    }\n\n    ngAfterViewInit(): void {\n        this.allSlides.forEach((slide: ElementRef) => this.imageElements.push(slide.nativeElement));\n        this.setContainerWidth();\n\n        this.windowEvent.resize\n            .asObservable()\n            .pipe(takeUntilDestroyed(this.destroyRef))\n            .subscribe(() => this.setContainerWidth());\n    }\n\n    infoClick(event: Event, teaser: EnhancedTeaserViewModel): void {\n        event.preventDefault();\n        teaser.extract = !teaser.extract;\n    }\n\n    teaserClick(event: Event, teaser: EnhancedTeaserViewModel, index: number): void {\n        this.trackClick(teaser, index);\n    }\n\n    totalCount(): number {\n        return this.teasers[0]?.originalTeasersCount || 0 + this.promotions.length;\n    }\n\n    private trackClick(teaser: EnhancedTeaserViewModel, index: number): void {\n        const bannerPosition = index + this.promotions.length;\n\n        const trackingData = {\n            [trackingConstants.COMPONENT_CATEGORY_EVENT]: 'Sports Teaser Banners',\n            [trackingConstants.COMPONENT_LABEL_EVENT]: teaser.title ?? NOT_APPLICABLE,\n            [trackingConstants.COMPONENT_ACTION_EVENT]: 'Click',\n            [trackingConstants.COMPONENT_POSITION_EVENT]: teaser.buttonText ?? NOT_APPLICABLE,\n            [trackingConstants.COMPONENT_LOCATION_EVENT]: NOT_APPLICABLE,\n            [trackingConstants.COMPONENT_EVENT_DETAILS]: 'CTA',\n            [trackingConstants.COMPONENT_URL_CLICKED]: teaser.href ?? NOT_APPLICABLE,\n            [trackingConstants.COMPONENT_CONTENT_POSITION]: bannerPosition.toString(),\n        };\n\n        if (this.nativeApp.isNative && teaser.sliderGameId) {\n            this.eventBridge.notifySliderGameOpening(teaser.sliderGameId);\n        } else if (!this.nativeApp.isNative && !teaser.sliderGameId && !teaser.event && teaser.href) {\n            this.tracking.track(trackingConstants.EVENT_CLICKS, trackingData);\n        }\n    }\n\n    private setTeaserLink(teaser: EnhancedTeaserViewModel): void {\n        if (teaser.event) {\n            teaser.href = this.urlHelper.getEventUrl(teaser.event);\n        }\n\n        if (!teaser.href) {\n            teaser.href = '#';\n        }\n\n        if (teaser.href.startsWith('/')) {\n            teaser.href = this.urlHelper.getUrl(teaser.href);\n        }\n\n        const nav = <any>this.#window.navigator;\n\n        if (!!nav.standalone || this.nativeApp.isNative) {\n            teaser.target = '_self';\n        }\n\n        if (this.imagesConfig.imageQualityParams?.homePage?.rotatingTeaser)\n            teaser.imageUrl = this.imageQualityService.setImageQuality(teaser.imageUrl, this.imagesConfig.imageQualityParams.homePage.rotatingTeaser);\n    }\n\n    private toggleSlideMode = () => {\n        if (!this.device.isMobile) {\n            this.navigationMode = NavigationMode.Arrows;\n        } else {\n            this.navigationMode = NavigationMode.Swipe;\n        }\n\n        if (this.containerWidth) {\n            const teaserCount = this.teasers?.length + this.promotions.length;\n            this.slideMode = this.containerWidth > this.cropRange.max && teaserCount > 1 ? SlideshowMode.ThreeSlides : SlideshowMode.OneSlide;\n        }\n    };\n\n    setNextVisibleTeaserIndex(index: number): number {\n        const wrapAroundToLastSlide = this.currentSlideIndex === 0 && index === this.teasers.length - 1;\n        const wrapAroundToFirstSlide = this.currentSlideIndex === this.teasers.length - 1 && index === 0;\n\n        if ((this.currentSlideIndex < index && !wrapAroundToLastSlide) || wrapAroundToFirstSlide) {\n            return index + 1;\n        }\n\n        return index - 1;\n    }\n\n    slideChanged(index: number): void {\n        const nextIndex = this.setNextVisibleTeaserIndex(index);\n\n        if (this.teasers[nextIndex]) {\n            this.teasers[nextIndex].visibleTeaser = true;\n        }\n\n        this.currentSlideIndex = index;\n        this.changeDetector.detectChanges();\n    }\n\n    isCurrentSlide(slideIndex: number): boolean {\n        return slideIndex === this.currentSlideIndex;\n    }\n\n    private setContainerWidth(): void {\n        this.timer.setAnimationFrame(() => {\n            const width = this.elementRef.nativeElement.clientWidth;\n\n            if (width) {\n                this.containerWidth = width;\n\n                let teaserHeight = this.containerWidth / this.teaserImageRatio;\n\n                if (teaserHeight >= this.teaserMaxHeight) {\n                    teaserHeight = this.teaserMaxHeight;\n                }\n\n                if (this.containerWidth > this.cropRange.min && this.containerWidth < this.cropRange.max) {\n                    this.imageElements.forEach((e) => this.setStyle(e, teaserHeight, true));\n                } else {\n                    this.imageElements.forEach((e) => this.setStyle(e, teaserHeight));\n\n                    this.arrowLeftRightValue =\n                        (this.containerWidth - this.cropRange.min) / 2 - (this.arrows.marginOnThreeTeasers + this.arrows.width);\n                }\n\n                if (this.containerWidth > this.cropRange.max) {\n                    this.arrowLeftRightValue = (this.containerWidth - this.cropRange.min) / 2 - this.arrows.marginOnThreeTeasers - this.arrows.width;\n                    this.maxSlideWidth = true;\n                } else {\n                    this.arrowLeftRightValue = this.arrows.marginOnOneTeasers;\n                    this.maxSlideWidth = false;\n                }\n\n                if (this.containerWidth > this.cropRange.min) {\n                    this.overlayArea = {\n                        position: `${(this.containerWidth - this.cropRange.min) / 2 + this.cropRange.min}px`,\n                        width: `${(this.containerWidth - this.cropRange.min) / 2}px`,\n                    };\n                }\n            }\n\n            this.toggleSlideMode();\n            this.changeDetector.detectChanges();\n        });\n    }\n\n    private setStyle(el: HTMLElement, height: number, isCroppable?: boolean): void {\n        if (isCroppable) {\n            this.renderer.setStyle(el, 'width', `100%`);\n            this.renderer.setStyle(el, 'height', `${height}px`);\n        } else {\n            this.renderer.setStyle(el, 'width', `${height * this.teaserImageRatio}px`);\n            this.renderer.setStyle(el, 'height', `${height}px`);\n        }\n    }\n\n    private getSelectedTeaser(): EnhancedTeaserViewModel | undefined {\n        const teaserIndex = this.currentSlideIndex - this.promotions.length;\n\n        return teaserIndex >= 0 ? this.teasers[teaserIndex] : undefined;\n    }\n\n    track(event?: { navigationMode: NavigationMode; direction: string }): void {\n        const selectedTeaser = this.getSelectedTeaser();\n        const trackingData = {\n            [trackingConstants.COMPONENT_CATEGORY_EVENT]: 'Sports Teaser Banners',\n            ...(selectedTeaser && { [trackingConstants.COMPONENT_LABEL_EVENT]: selectedTeaser.title }),\n            [trackingConstants.COMPONENT_ACTION_EVENT]: event ? 'Arrow Click' : 'CTA Click',\n            [trackingConstants.COMPONENT_POSITION_EVENT]: `Teaser_${this.currentSlideIndex + 1}`,\n            [trackingConstants.COMPONENT_LOCATION_EVENT]: event\n                ? `Arrow ${event.direction === ArrowDirection.Right ? 'Back' : 'Forward'} `\n                : this.sitecore.globalMessages.BetNowBtnOnTeaser,\n        };\n\n        this.tracking.track(trackingConstants.EVENT_CLICKS, trackingData);\n    }\n\n    getTeaserAlignment(teaser: EnhancedTeaserViewModel): string {\n        switch (teaser.textAlignment) {\n            case Alignment.Left:\n                return 'alignment-left';\n            case Alignment.Right:\n                return 'alignment-right';\n            default:\n                return 'alignment-center';\n        }\n    }\n\n    readonly #window = inject(WINDOW);\n}\n","import { Injectable, inject } from '@angular/core';\n\nimport { FixturePage, Result } from '@cds/betting-offer';\nimport { OfferMapping, ScoreboardMode } from '@cds/query-objects';\nimport { BettingOfferApi } from '@frontend/sports/betting-offer/feature/offer-service';\nimport { LoggerFactory, SportsRemoteLogger } from '@frontend/sports/common/core/feature/logging';\nimport { ExternalPriceFormatterService } from '@frontend/sports/odds/feature/native-price';\nimport { UserService } from '@frontend/sports/user/feature';\nimport { WINDOW } from '@frontend/vanilla/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport { EnhancedTeaserViewModel } from './teaser.models';\n\n@Injectable({ providedIn: 'root' })\nexport class TeaserUtilsService {\n    private teaserSizes = [320, 480, 540, 640, 720, 1080];\n    private twoOptionPrefix = ['1', '2'];\n    private threeOptionPrefix = ['1', 'X', '2'];\n    private readonly logger: SportsRemoteLogger;\n\n    constructor(\n        private userService: UserService,\n        loggerFactory: LoggerFactory,\n        private externalPriceFormatter: ExternalPriceFormatterService,\n        private bettingOffer: BettingOfferApi,\n    ) {\n        this.logger = loggerFactory.getLogger('TeaserUtilsService');\n    }\n\n    filter(teasers: EnhancedTeaserViewModel[]): EnhancedTeaserViewModel[] {\n        if (teasers && teasers.filter) {\n            return teasers.filter((teaser) => {\n                if (teaser.isAuthenticated && !this.userService.isAuthenticated) {\n                    return false;\n                }\n\n                return !!teaser.imageUrl;\n            });\n        }\n\n        return [];\n    }\n\n    extend(teasers: EnhancedTeaserViewModel[], screenWidth: number): Observable<EnhancedTeaserViewModel[]> {\n        const eventsId = teasers.filter((t) => t.event).map((t) => t.event!.id);\n        const size = this.getTeaserSize(screenWidth);\n\n        let eventsData: Observable<FixturePage | undefined> = of(undefined);\n\n        if (eventsId.length) {\n            eventsData = this.bettingOffer.getFixtureList({\n                fixtureIds: eventsId.join(','),\n                scoreboardMode: ScoreboardMode.None,\n                offerMapping: OfferMapping.MainMarkets,\n            });\n        }\n\n        return eventsData.pipe(\n            map((response) => this.process(teasers, response)),\n            catchError((error) => {\n                this.logError(error);\n\n                return of(teasers);\n            }),\n            map((list) => this.applyDetail(list, size)),\n        );\n    }\n\n    private getTeaserSize(screenWidth: number): number {\n        if (this.#window.devicePixelRatio && this.#window.devicePixelRatio > 2) {\n            // if the CSS pixel ratio is greater than 2, we double the requested width to reduce the gap between the requested width and the actual device pixels.\n            // Without this adjustment, the image will appear too unsharp/blurry on devices with a small display but super high resolution.\n            screenWidth *= 2;\n        }\n\n        return this.teaserSizes.find((x) => x >= screenWidth) || this.teaserSizes[this.teaserSizes.length - 1];\n    }\n\n    private process(teasers: EnhancedTeaserViewModel[], response: FixturePage | undefined): EnhancedTeaserViewModel[] {\n        if (!response?.fixtures.length) {\n            return teasers;\n        }\n\n        const findFixture = (event?: { id: string }) => response.fixtures.find((current) => !!event && current.id === event.id);\n\n        return teasers\n            .map((teaser) => ({ teaser, fixture: findFixture(teaser.event) }))\n            .filter(({ teaser, fixture }) => !teaser.event || fixture)\n            .map(({ teaser, fixture }) => {\n                if (!fixture) {\n                    return teaser;\n                }\n\n                const market = fixture.games.pop();\n                const options = market ? market.results : [];\n\n                return Object.assign(teaser, {\n                    details: {\n                        league: { name: fixture.competition.name.value },\n                        sports: { name: fixture.sport.name.value },\n                    },\n                    showMore: true,\n                    options: this.buildTeaserOptionText(options),\n                });\n            });\n    }\n\n    private logError(error: Error): void {\n        this.logger.error(error, 'Unable to fetch teasers');\n    }\n\n    private buildTeaserOptionText(options: Result[]): string[] {\n        if (!options.length) {\n            return [];\n        }\n        const prefixes = options.length === 3 ? this.threeOptionPrefix : this.twoOptionPrefix;\n\n        return options.map((option, index) => `${prefixes[index]}-${this.externalPriceFormatter.format(option)}`);\n    }\n\n    private applyDetail(teasers: EnhancedTeaserViewModel[], size: number): EnhancedTeaserViewModel[] {\n        return teasers.map((teaser) => ({\n            ...teaser,\n            subtitle: this.getSubtitle(teaser),\n            imageUrl: `${teaser.imageUrl}?p=width${size}`,\n            showMore: teaser.href ? true : teaser.showMore,\n        }));\n    }\n\n    private getSubtitle(teaser: EnhancedTeaserViewModel): string {\n        if (teaser.displayCountryLeague && teaser.event && teaser.details) {\n            return teaser.details.sports.name + ' | ' + teaser.details.league.name;\n        }\n\n        return teaser.subtitle;\n    }\n\n    readonly #window = inject(WINDOW);\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, inject } from '@angular/core';\n\nimport { ApiService } from '@frontend/sports/common/api-utils';\nimport { UserService } from '@frontend/sports/user/feature';\nimport { UserEvent } from '@frontend/vanilla/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, shareReplay, startWith, switchMap } from 'rxjs/operators';\n\nimport { EnhancedTeaserViewModel, TeasersResponse } from './teaser.models';\nimport { TeaserUtilsService } from './teaser.utils.service';\n\n@Injectable({ providedIn: 'root' })\nexport class TeasersService {\n    private readonly _doc = inject(DOCUMENT);\n\n    readonly data = this.userService.onAuthenticationChange$.pipe(\n        startWith({} as UserEvent),\n        switchMap(() => this.apiService.get<TeasersResponse>('teasers').pipe(catchError(() => of({ teasers: [] })))),\n        switchMap((response) => this.enhance(response.teasers)),\n        shareReplay(1),\n    );\n\n    constructor(\n        private apiService: ApiService,\n        private userService: UserService,\n        private teaserUtils: TeaserUtilsService,\n    ) {}\n\n    enhance(teasers: EnhancedTeaserViewModel[]): Observable<EnhancedTeaserViewModel[]> {\n        if (!teasers) {\n            return of([]);\n        }\n\n        teasers = this.teaserUtils.filter(teasers);\n\n        return this.teaserUtils.extend(teasers, this.pageWidth).pipe(\n            map((extended) => {\n                this.addJackpotDetails(extended);\n\n                return this.addSlideshowHack(teasers);\n            }),\n        );\n    }\n\n    private get pageWidth(): number {\n        return this._doc.body.clientWidth;\n    }\n\n    private addJackpotDetails(teasers: EnhancedTeaserViewModel[]): void {\n        teasers.forEach((t) => {\n            if (t.jackPot) {\n                t.jackpotbanner = {\n                    icon: t.jackPot.icon,\n                    title: t.title,\n                    subtitle: t.subtitle,\n                    background: '',\n                    jackpotGroup: t.jackPot.jackpotGroup,\n                    value: t.jackPot.value,\n                    link: {\n                        link: t.link,\n                        target: t.target,\n                        href: t.href ?? '',\n                        popup: '',\n                    },\n                };\n            }\n        });\n    }\n\n    private addSlideshowHack(teasers: EnhancedTeaserViewModel[]): EnhancedTeaserViewModel[] {\n        const originalTeaserCount = teasers.length;\n        const validTeaserCount = [2, 3];\n        const needsDuplicationForMultiSlideshow = validTeaserCount.indexOf(originalTeaserCount) > -1;\n\n        if (needsDuplicationForMultiSlideshow) {\n            teasers = [...teasers, ...teasers];\n        }\n\n        teasers.forEach((teaser) => {\n            teaser.originalTeasersCount = originalTeaserCount;\n        });\n\n        return teasers;\n    }\n}\n","<ms-teaser *ngIf=\"!hidden\" [teasers]=\"teasers\" [promotions]=\"promotions\"></ms-teaser>\n","import { DOCUMENT, NgIf } from '@angular/common';\nimport { Component, HostBinding, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { CrmConfig } from '@frontend/sports/common/client-config-data-access';\nimport { RotatingTeaserPayload } from '@frontend/sports/types/components/widget/types';\nimport { tap } from 'rxjs';\n\nimport { Promotion } from '../crm-offer-data/crm-offer.model';\nimport { CrmPromotionProviderService } from '../crm-promotion/crm-promotion-provider.service';\nimport { WidgetComponent } from '../widget/core/widget-registry.service';\nimport { preloadPromotionImage } from './teaser-image-preloader';\nimport { TeaserComponent } from './teaser.component';\nimport { EnhancedTeaserViewModel } from './teaser.models';\nimport { TeasersService } from './teasers.service';\n\n@Component({\n    selector: 'ms-rotating-teaser-widget',\n    templateUrl: './rotating-teaser-widget.component.html',\n    standalone: true,\n    imports: [TeaserComponent, NgIf],\n})\nexport class RotatingTeaserWidgetComponent extends WidgetComponent<RotatingTeaserPayload> {\n    @HostBinding('class') className = 'rotating-teaser-widget';\n\n    teasers: EnhancedTeaserViewModel[];\n    teasersEnhancing = false;\n    promotions: Promotion[];\n\n    private readonly _doc = inject(DOCUMENT);\n\n    constructor(\n        private teaserService: TeasersService,\n        private crmConfig: CrmConfig,\n        promoService: CrmPromotionProviderService,\n    ) {\n        super();\n        promoService.promotions$.pipe(tap(this.setPromotions), takeUntilDestroyed(this.destroyRef)).subscribe(this.setHasData);\n    }\n\n    override onData({ teasers }: RotatingTeaserPayload): void {\n        if (teasers?.length > 0 && this.hidden) {\n            // pre-emptively display the template to let the ms-teaser component reserve the space\n            // it will anyway reserve after the teasers are enhanced\n            this.teasersEnhancing = true;\n            this.setHasData();\n        }\n        this.teaserService.enhance(teasers).subscribe((processed) => {\n            this.teasers = processed;\n            this.teasersEnhancing = false;\n            this.setHasData();\n        });\n    }\n\n    private setPromotions = (list: Promotion[]) => {\n        this.promotions = list.filter((promo) => promo.noFilters && promo.banner).slice(0, this.crmConfig.promotions.bannerCount.lobby);\n        preloadPromotionImage(this.promotions[0], this._doc);\n    };\n\n    private setHasData = () => {\n        this.hasData = this.teasersEnhancing || !!this.teasers?.length || !!this.promotions?.length;\n        this.setWidgetLoaded();\n    };\n}\n","<ng-container *ngIf=\"teaser\">\n    <a *ngIf=\"!teaser.showHtmlContents && image\" [href]=\"teaser.href\" [attr.target]=\"teaser.target\" (click)=\"trackBannerClicked()\">\n        <img disableOptimizedSrcset height=\"169\" width=\"540\" priority [ngSrc]=\"image\" />\n    </a>\n    <div *ngIf=\"teaser.showHtmlContents && teaser.htmlContents\" [innerHTML]=\"teaser.htmlContents | msTrust: 'html'\"></div>\n</ng-container>\n","import { NgIf, NgOptimizedImage } from '@angular/common';\nimport { Component, HostBinding } from '@angular/core';\n\nimport { TrustPipe } from '@frontend/sports/common/core/utils/dom';\nimport { NOT_APPLICABLE, TrackingService, trackingConstants } from '@frontend/sports/tracking/feature';\nimport { MarketingViewModel } from '@frontend/sports/types/components/marketing';\nimport { isEmpty } from 'lodash-es';\n\nimport { WidgetComponent } from '../widget/core/widget-registry.service';\n\n@Component({\n    selector: 'ms-static-teaser-widget',\n    templateUrl: './static-teaser-widget.component.html',\n    styleUrls: ['./static-teaser-widget.component.scss'],\n    standalone: true,\n    imports: [NgOptimizedImage, NgIf, TrustPipe],\n})\nexport class StaticTeaserWidgetComponent extends WidgetComponent<MarketingViewModel> {\n    @HostBinding('class') className = 'static-teaser-widget';\n\n    trackingSource = 'Static Teaser';\n\n    teaser: MarketingViewModel;\n    image?: string;\n\n    constructor(private trackingService: TrackingService) {\n        super();\n    }\n\n    protected override onData(data: MarketingViewModel): void {\n        this.teaser = data;\n        if (this.teaser?.imageUrl) {\n            this.image = `${this.teaser.imageUrl}?p=width540`;\n        }\n\n        this.hasData = !isEmpty(data);\n        this.setWidgetLoaded();\n    }\n\n    trackBannerClicked(): void {\n        this.trackingService.track(trackingConstants.EVENT_CLICKS, {\n            [trackingConstants.COMPONENT_CATEGORY_EVENT]: 'Teaser Banners',\n            [trackingConstants.COMPONENT_LABEL_EVENT]: this.trackingSource,\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]: 'teaser',\n            [trackingConstants.COMPONENT_URL_CLICKED]: this.teaser.href,\n        });\n    }\n}\n","import { Injectable } from '@angular/core';\n\nimport { WidgetType } from '@frontend/sports/types/components/widget';\nimport { OnFeatureInit } from '@frontend/vanilla/core';\n\nimport { WidgetRegistryService } from '../widget/core/widget-registry.service';\nimport { RotatingTeaserWidgetComponent } from './rotating-teaser-widget.component';\nimport { StaticTeaserWidgetComponent } from './static-teaser-widget.component';\n\n@Injectable({ providedIn: 'root' })\nexport class WidgetRegistrationService implements OnFeatureInit {\n    constructor(private registry: WidgetRegistryService) {}\n\n    onFeatureInit(): void {\n        this.registry.registerLazy(WidgetType.RotatingTeaser, RotatingTeaserWidgetComponent);\n        this.registry.registerLazy(WidgetType.StaticTeaser, StaticTeaserWidgetComponent);\n    }\n}\n","import { runOnFeatureInit } from '@frontend/vanilla/core';\n\nimport { WidgetRegistrationService } from './widget-registration.service';\n\nexport function provide() {\n    return [runOnFeatureInit(WidgetRegistrationService)];\n}\n"],"names":["preloadPromotionImage","promotion","doc","_a","_b","banner","heroImageUrl","head","querySelector","link","createElement","imageUrl","rel","href","as","appendChild","Alignment","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵproperty","ɵɵpureFunction1","_c1","ctx_r1","maxSlideWidth","ɵɵadvance","promotion_r3","ɵ$index_4_r4","c","teaser_r6","ɵ$index_9_r7","promotions","length","ɵɵtext","ɵɵtextInterpolate","option_r9","ɵɵrepeaterCreate","TeaserComponent_Conditional_0_For_4_Conditional_2_Conditional_7_For_2_Template","ɵɵrepeaterTrackByIdentity","ɵɵrepeater","options","w","ɵɵlistener","ɵɵrestoreView","_r10","ɵɵnextContext","ɵɵresetView","track","ɵɵsanitizeUrl","ɵɵpipeBind2","buttonText","ɵɵsanitizeHtml","$event","_r8","ctx_r4","$implicit","$index","teaserClick","ɵɵtemplate","TeaserComponent_Conditional_0_For_4_Conditional_2_Conditional_7_Template","TeaserComponent_Conditional_0_For_4_Conditional_2_Conditional_8_Template","ɵɵclassProp","isPromotionalTeaser","displayOdds","title","subtitle","ɵɵpureFunction3","_c2","extract","textAlignment","getTeaserAlignment","_c3","ɵɵtextInterpolate1","ɵɵconditional","jackpotbanner","info","_r11","infoClick","TeaserComponent_Conditional_0_For_4_Conditional_4_Conditional_2_Template","_c4","termsAndConditions","TeaserComponent_Conditional_0_For_4_Conditional_1_Template","TeaserComponent_Conditional_0_For_4_Conditional_2_Template","TeaserComponent_Conditional_0_For_4_Conditional_3_Template","TeaserComponent_Conditional_0_For_4_Conditional_4_Template","TeaserComponent_Conditional_0_For_4_Conditional_5_Template","visibleTeaser","isCurrentSlide","jackPot","_r1","slideChanged","TeaserComponent_Conditional_0_For_2_Template","_forTrack0","TeaserComponent_Conditional_0_For_4_Template","_forTrack1","delay","slideMode","totalCount","navigationMode","arrowLeftRightValue","overlayArea","teasers","TeaserComponent","_window","constructor","urlHelper","eventBridge","nativeApp","tracking","elementRef","device","renderer","windowEvent","changeDetector","timer","sitecore","imagesConfig","imageQualityService","__privateAdd","className","currentSlideIndex","SlideshowMode","OneSlide","imageElements","teaserMaxHeight","teaserImageRatio","cropRange","min","max","arrows","width","height","marginOnThreeTeasers","marginOnOneTeasers","destroyRef","inject","DestroyRef","toggleSlideMode","isMobile","NavigationMode","Swipe","Arrows","containerWidth","teaserCount","ThreeSlides","__privateSet","WINDOW","isTablet","Calcutewidth","window","innerWidth","orientation","pipe","takeUntilDestroyed","subscribe","resolution","ngOnChanges","changes","currentValue","forEach","t","setTeaserLink","index","ngAfterViewInit","allSlides","slide","push","nativeElement","setContainerWidth","resize","asObservable","event","teaser","preventDefault","trackClick","originalTeasersCount","bannerPosition","trackingData","trackingConstants","COMPONENT_CATEGORY_EVENT","COMPONENT_LABEL_EVENT","NOT_APPLICABLE","COMPONENT_ACTION_EVENT","COMPONENT_POSITION_EVENT","COMPONENT_LOCATION_EVENT","COMPONENT_EVENT_DETAILS","COMPONENT_URL_CLICKED","COMPONENT_CONTENT_POSITION","toString","isNative","sliderGameId","notifySliderGameOpening","EVENT_CLICKS","getEventUrl","startsWith","getUrl","__privateGet","navigator","standalone","target","imageQualityParams","homePage","rotatingTeaser","setImageQuality","setNextVisibleTeaserIndex","wrapAroundToLastSlide","wrapAroundToFirstSlide","nextIndex","detectChanges","slideIndex","setAnimationFrame","clientWidth","teaserHeight","e","setStyle","position","el","isCroppable","getSelectedTeaser","teaserIndex","undefined","selectedTeaser","__spreadProps","__spreadValues","direction","ArrowDirection","Right","globalMessages","BetNowBtnOnTeaser","Left","ɵɵdirectiveInject","UrlHelperService","EventBridgeService","NativeAppService","TrackingService","ElementRef","DeviceService","Renderer2","WindowEventService","ChangeDetectorRef","TimerService","Sitecore","ImagesConfig","ImageQualityService","k","selectors","viewQuery","rf","ctx","Ee","ye","we","ɵɵclassMap","TeaserComponent_Conditional_0_Template","BannerJackpotComponent","CrmPromotionModule","BannerComponent","NgOptimizedImage","NgClass","NgStyle","TrustPipe","IconCustomComponent","SlideshowComponent","SlideComponent","DsButton","encapsulation","changeDetection","_TeaserComponent","TeaserUtilsService","userService","loggerFactory","externalPriceFormatter","bettingOffer","teaserSizes","twoOptionPrefix","threeOptionPrefix","logger","getLogger","filter","isAuthenticated","extend","screenWidth","eventsId","map","id","size","getTeaserSize","eventsData","of","getFixtureList","fixtureIds","join","scoreboardMode","offerMapping","response","process","catchError","error","logError","list","applyDetail","devicePixelRatio","find","x","fixtures","findFixture","current","fixture","market","games","pop","results","Object","assign","details","league","name","competition","value","sports","sport","showMore","buildTeaserOptionText","prefixes","option","format","getSubtitle","displayCountryLeague","ɵɵinject","UserService","LoggerFactory","ExternalPriceFormatterService","BettingOfferApi","O","factory","ɵfac","providedIn","_TeaserUtilsService","TeasersService","apiService","teaserUtils","_doc","DOCUMENT","data","onAuthenticationChange$","startWith","switchMap","get","enhance","shareReplay","pageWidth","extended","addJackpotDetails","addSlideshowHack","body","icon","background","jackpotGroup","popup","originalTeaserCount","indexOf","ApiService","_TeasersService","ctx_r0","RotatingTeaserWidgetComponent","WidgetComponent","teaserService","crmConfig","promoService","teasersEnhancing","setPromotions","promo","noFilters","slice","bannerCount","lobby","setHasData","hasData","setWidgetLoaded","promotions$","tap","onData","hidden","processed","CrmConfig","CrmPromotionProviderService","hostVars","hostBindings","RotatingTeaserWidgetComponent_ms_teaser_0_Template","NgIf","_RotatingTeaserWidgetComponent","trackBannerClicked","K","image","htmlContents","ɵɵelementContainerStart","StaticTeaserWidgetComponent_ng_container_0_a_1_Template","StaticTeaserWidgetComponent_ng_container_0_div_2_Template","showHtmlContents","StaticTeaserWidgetComponent","trackingService","trackingSource","isEmpty","StaticTeaserWidgetComponent_ng_container_0_Template","styles","_StaticTeaserWidgetComponent","WidgetRegistrationService","registry","onFeatureInit","registerLazy","WidgetRegistryService","_WidgetRegistrationService","provide","runOnFeatureInit"],"mappings":"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"}