{"version":3,"file":"js/9595.6ee6a079bf0b3812.js","mappings":"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","sources":["webpack://@sazka/web/./js/app/shared/utils/analytics/analytics-ds-promo-card.ts","webpack://@sazka/web/./js/app/shared/design-system/promo-card/ds-promo-card.ts","webpack://@sazka/web/./js/app/content/_ds-promo-card.ts","webpack://@sazka/web/./js/app/lotteries/product-page/analytics/analytics-product-page.ts","webpack://@sazka/web/../../libs/utils/document-ready.ts","webpack://@sazka/web/../../libs/utils/timer.ts"],"sourcesContent":["import { ProductPageAnalytics } from \"@/lotteries/product-page/analytics/analytics-product-page\";\r\n\r\nexport namespace DsPromoCardAnalytics {\r\n    const pushedPromoCardIds = [];\r\n    const observerConfig = { attributes: true, attributeFilter: [\"class\"] };\r\n    const bannerItemSelector = \".js-ds-promo-card-item\";\r\n\r\n    const pushImpressPromoCard = (placement: string, id: string, text: string, index: number) => {\r\n        dataLayer.push({\r\n            event: \"action.impress.promos\",\r\n            action: {\r\n                impress: {\r\n                    promos: [\r\n                        {\r\n                            id: id,\r\n                            name: `${placement}.${id}`,\r\n                            creative: text,\r\n                            position: `${placement}.1.${index}`,\r\n                        },\r\n                    ],\r\n                },\r\n            },\r\n        });\r\n    };\r\n\r\n    const pushClickPromoCard = (placement: string, id: string, text: string, index: number) => {\r\n        dataLayer.push({\r\n            event: \"action.show.promos\",\r\n            action: {\r\n                show: {\r\n                    promos: [\r\n                        {\r\n                            id: id,\r\n                            name: `${placement}.${id}`,\r\n                            creative: text,\r\n                            position: `${placement}.1.${index}`,\r\n                        },\r\n                    ],\r\n                },\r\n            },\r\n        });\r\n    };\r\n\r\n    const getBannerProperties = (banner: Element, rootSelector: string) => {\r\n        const carousel = banner.closest(rootSelector);\r\n        const placement = carousel.getAttribute(\"data-a-placement\")?.replace(\"-\", \"\");\r\n        const pagePlacement = carousel.getAttribute(\"data-page-placement\");\r\n        const id = banner.getAttribute(\"data-a-codename\");\r\n        const headingElement = banner.querySelector(\".js-ds-promo-card-heading\");\r\n        const text = headingElement ? headingElement.textContent.trim() : \"\";\r\n        const positionIndex = Array.from(carousel.querySelectorAll(bannerItemSelector)).indexOf(banner) + 1;\r\n\r\n        return {\r\n            placement: placement,\r\n            id: id,\r\n            text: text,\r\n            positionIndex: positionIndex,\r\n            pagePlacement: pagePlacement,\r\n        };\r\n    };\r\n\r\n    const observeBannerChanges = (banner: Element, rootSelector: string, observer: MutationObserver | null) => {\r\n        if (banner.classList.contains(bannerItemSelector.replace(\".\", \"\") + \"-active\")) {\r\n            const bannerProperties = getBannerProperties(banner, rootSelector);\r\n            if (pushedPromoCardIds.includes(bannerProperties.id)) {\r\n                return;\r\n            }\r\n\r\n            if (bannerProperties.pagePlacement == \"Lotteries_PP_Bet\") {\r\n                ProductPageAnalytics.pushGamePageBannerImpression(\r\n                    bannerProperties.text,\r\n                    bannerProperties.positionIndex\r\n                );\r\n            } else if (bannerProperties.pagePlacement == \"Lotteries_PP_HowToPlay\") {\r\n                ProductPageAnalytics.pushHowToPlayBannerImpression(\r\n                    bannerProperties.text,\r\n                    bannerProperties.positionIndex\r\n                );\r\n            } else {\r\n                pushImpressPromoCard(\r\n                    bannerProperties.placement,\r\n                    bannerProperties.id,\r\n                    bannerProperties.text,\r\n                    bannerProperties.positionIndex\r\n                );\r\n            }\r\n            pushedPromoCardIds.push(bannerProperties.id);\r\n\r\n            if (observer) {\r\n                observer.disconnect();\r\n            }\r\n        }\r\n    };\r\n\r\n    export const setupPromoCardAnalytics = (rootSelector: string) => {\r\n        const banners = document.querySelectorAll(rootSelector + \" \" + bannerItemSelector);\r\n\r\n        banners.forEach((banner) => {\r\n            // Manually invoke for the initially active banner\r\n            observeBannerChanges(banner, rootSelector, null);\r\n\r\n            // Set up observer for subsequent changes\r\n            const observer = new MutationObserver((mutations) => {\r\n                mutations.forEach((mutation) => {\r\n                    if (mutation.type === \"attributes\" && mutation.attributeName === \"class\") {\r\n                        observeBannerChanges(banner, rootSelector, observer);\r\n                    }\r\n                });\r\n            });\r\n\r\n            observer.observe(banner, observerConfig);\r\n\r\n            banner.addEventListener(\r\n                \"click\",\r\n                () => {\r\n                    const bannerProperties = getBannerProperties(banner, rootSelector);\r\n\r\n                    if (bannerProperties.pagePlacement == \"Lotteries_PP_Bet\") {\r\n                        ProductPageAnalytics.pushGamePageBannerClick(\r\n                            bannerProperties.text,\r\n                            bannerProperties.positionIndex\r\n                        );\r\n                    } else if (bannerProperties.pagePlacement == \"Lotteries_PP_HowToPlay\") {\r\n                        ProductPageAnalytics.pushHowToPlayBannerClick(\r\n                            bannerProperties.text,\r\n                            bannerProperties.positionIndex\r\n                        );\r\n                    } else {\r\n                        pushClickPromoCard(\r\n                            bannerProperties.placement,\r\n                            bannerProperties.id,\r\n                            bannerProperties.text,\r\n                            bannerProperties.positionIndex\r\n                        );\r\n                    }\r\n                },\r\n                { once: true }\r\n            );\r\n        });\r\n    };\r\n}\r\n","import { gsap } from \"gsap/gsap-core\";\r\nimport { CSSPlugin } from \"gsap/CSSPlugin\";\r\nimport { TimeoutTimer } from \"@sazka/utils/timer\";\r\nimport { DsPromoCardAnalytics } from \"@/shared/utils/analytics/analytics-ds-promo-card\";\r\n\r\ngsap.registerPlugin(CSSPlugin);\r\n\r\nconst promoCardsSelectors = {\r\n    root: \".js-ds-promo-card\",\r\n    item: \".js-ds-promo-card-item\",\r\n    dot: \".js-ds-promo-card-dot\",\r\n};\r\n\r\nconst promoCardsClasses = {\r\n    itemActiveSelectorClass: \"js-ds-promo-card-item-active\",\r\n    itemActiveStyleClass: \"ds-promo-card__inner--active\",\r\n};\r\n\r\nconst initPromoCardCarousel = (rootElement: HTMLElement) => {\r\n    const items: HTMLElement[] = [...rootElement.querySelectorAll(promoCardsSelectors.item)] as HTMLElement[];\r\n    const dots: HTMLElement[] = [...rootElement.querySelectorAll(promoCardsSelectors.dot)] as HTMLElement[];\r\n\r\n    const carouselSlideDuration = parseInt(rootElement.dataset.carouselSlideDuration) || 6;\r\n    let timeout: TimeoutTimer, dotTween: gsap.core.Tween, isPaused: boolean;\r\n\r\n    const timeoutDuration = carouselSlideDuration * 1000;\r\n\r\n    const tweenOptions: gsap.TweenVars = {\r\n        height: \"100%\",\r\n        duration: carouselSlideDuration,\r\n        ease: \"linear\",\r\n    };\r\n\r\n    const getCurrentIndex = () =>\r\n        items.findIndex((item) => item.classList.contains(promoCardsClasses.itemActiveSelectorClass));\r\n\r\n    const getNextIndex = () => {\r\n        const current = getCurrentIndex();\r\n        return current === items.length - 1 ? 0 : current + 1;\r\n    };\r\n\r\n    const goToIndex = (index: number) => {\r\n        const current = getCurrentIndex();\r\n\r\n        if (current === index) return;\r\n\r\n        // Reset\r\n        timeout?.clear();\r\n        dotTween?.kill();\r\n        gsap.set(dots[current].querySelector(\"span\"), { height: 0 });\r\n\r\n        items[current].classList.remove(promoCardsClasses.itemActiveStyleClass);\r\n        items[current].classList.remove(promoCardsClasses.itemActiveSelectorClass);\r\n        items[index].classList.add(promoCardsClasses.itemActiveStyleClass);\r\n        items[index].classList.add(promoCardsClasses.itemActiveSelectorClass);\r\n\r\n        // Animate\r\n        dotTween = gsap.to(dots[index].querySelector(\"span\"), tweenOptions);\r\n\r\n        // eslint-disable-next-line no-use-before-define, @typescript-eslint/no-use-before-define\r\n        timeout = new TimeoutTimer(timeoutCallback, timeoutDuration);\r\n\r\n        if (isPaused) {\r\n            timeout.pause();\r\n            dotTween.pause();\r\n        }\r\n    };\r\n\r\n    const timeoutCallback = () => {\r\n        const nextIndex = getNextIndex();\r\n        goToIndex(nextIndex);\r\n    };\r\n\r\n    dotTween = gsap.to(dots[getCurrentIndex()].querySelector(\"span\"), tweenOptions);\r\n    timeout = new TimeoutTimer(timeoutCallback, timeoutDuration);\r\n\r\n    rootElement.addEventListener(\"mouseenter\", () => {\r\n        timeout.pause();\r\n        dotTween.pause();\r\n        isPaused = true;\r\n    });\r\n\r\n    rootElement.addEventListener(\"mouseleave\", () => {\r\n        timeout.resume();\r\n        dotTween.resume();\r\n        isPaused = false;\r\n    });\r\n\r\n    dots.forEach((dot, index) => {\r\n        dot.addEventListener(\"click\", () => goToIndex(index));\r\n    });\r\n\r\n    DsPromoCardAnalytics.setupPromoCardAnalytics(promoCardsSelectors.root);\r\n};\r\n\r\nexport { promoCardsSelectors, initPromoCardCarousel };\r\n","import { documentReady } from \"@sazka/utils/document-ready\";\r\nimport { initPromoCardCarousel, promoCardsSelectors } from \"@/shared/design-system/promo-card/ds-promo-card\";\r\n\r\nconst initPromoCards = () => {\r\n    const cards: HTMLElement[] = [...document.querySelectorAll(promoCardsSelectors.root)] as HTMLElement[];\r\n\r\n    cards.forEach(initPromoCardCarousel);\r\n};\r\n\r\ndocumentReady(initPromoCards);\r\n","import { Analytics } from \"@/shared/utils/analytics/analytics\";\r\nimport { LotteryUtils } from \"@sazka/lotteries/js/utils/lottery-utils\";\r\nimport { AnalyticsPromo } from \"@/shared/utils/analytics/analytics-promo\";\r\n\r\n// V2.0\r\nexport namespace ProductPageAnalytics {\r\n    // DL1.10 - Game page\r\n    export function pushGamePageDisplayed(lotteryName: string) {\r\n        window.dataLayer.push({\r\n            page: {\r\n                type: \"game\",\r\n                kind: \"game\",\r\n                verticalCode: \"loterie\",\r\n                verticalCodeStrict: \"loterie\",\r\n                gameCode: lotteryName,\r\n                gameCodeStrict: lotteryName,\r\n            },\r\n        });\r\n    }\r\n\r\n    // DL1.10A Game detail page\r\n    export function pushGameDetailPageDisplayed(lotteryName: string) {\r\n        window.dataLayer.push({\r\n            page: {\r\n                type: \"game.detail\",\r\n                kind: \"game.detail\",\r\n                verticalCode: \"loterie\",\r\n                verticalCodeStrict: \"loterie\",\r\n                gameCode: lotteryName,\r\n                gameCodeStrict: lotteryName,\r\n            },\r\n        });\r\n    }\r\n\r\n    // DL1.10B Game checkbet page\r\n    export function pushGameCheckbetPageDisplayed(lotteryName: string) {\r\n        window.dataLayer.push({\r\n            page: {\r\n                type: \"game.checkBet\",\r\n                kind: \"game.checkBet\",\r\n                verticalCode: \"loterie\",\r\n                verticalCodeStrict: \"loterie\",\r\n                gameCode: lotteryName,\r\n                gameCodeStrict: lotteryName,\r\n            },\r\n        });\r\n    }\r\n\r\n    // DL1.10B Game how to play page\r\n    export function pushGameHowToPlayPageDisplayed(lotteryName: string) {\r\n        window.dataLayer.push({\r\n            page: {\r\n                type: \"game.howToPlay\",\r\n                kind: \"game.howToPlay\",\r\n                verticalCode: \"loterie\",\r\n                verticalCodeStrict: \"loterie\",\r\n                gameCode: lotteryName,\r\n                gameCodeStrict: lotteryName,\r\n            },\r\n        });\r\n    }\r\n\r\n    // DL1.11 Click navigation\r\n    export function pushClickNavigation(itemName: string) {\r\n        window.dataLayer.push({\r\n            event: \"action.click.navigation\",\r\n            action: {\r\n                click: {\r\n                    name: itemName,\r\n                    eventProperty2: \"sub\",\r\n                },\r\n            },\r\n        });\r\n    }\r\n\r\n    // DL1.12 Click Quicktips event\r\n    export function pushClickQuicktips(\r\n        bettingMode: string,\r\n        lotteryAlias: string,\r\n        position: string,\r\n        wagerValue: number,\r\n        label: string\r\n    ) {\r\n        const lotteryName = LotteryUtils.analyticsCodeName(LotteryUtils.parseLotteryName(lotteryAlias));\r\n\r\n        window.dataLayer.push({\r\n            event: \"action.click.quicktips\",\r\n            action: {\r\n                click: {\r\n                    gameCode: lotteryName,\r\n                    eventProperty2: position,\r\n                    value: wagerValue,\r\n                    label: label,\r\n                },\r\n            },\r\n            page: {\r\n                bettingMode: bettingMode,\r\n                position: position,\r\n            },\r\n        });\r\n    }\r\n\r\n    // DL1.2 Game page banner impression\r\n    export function pushGamePageBannerImpression(bannerTitleText: string, position: number) {\r\n        window.dataLayer.push({\r\n            event: \"action.impress.promos\",\r\n            action: {\r\n                impress: {\r\n                    promos: [\r\n                        {\r\n                            id: \"game.carousel\",\r\n                            name: \"game.carousel\",\r\n                            creative: bannerTitleText,\r\n                            position: \"bottom.\" + position,\r\n                        },\r\n                    ],\r\n                },\r\n            },\r\n        });\r\n    }\r\n\r\n    // DL1.21 Game page banner click\r\n    export function pushGamePageBannerClick(bannerTitleText: string, position: number) {\r\n        window.dataLayer.push({\r\n            event: \"action.show.promos\",\r\n            action: {\r\n                show: {\r\n                    promos: [\r\n                        {\r\n                            id: \"game.carousel\",\r\n                            name: \"game.carousel\",\r\n                            creative: bannerTitleText,\r\n                            position: \"bottom.\" + position,\r\n                        },\r\n                    ],\r\n                },\r\n            },\r\n        });\r\n    }\r\n\r\n    // DL1.22 Random tip click event\r\n    export function pushRandomTipClick(gameCode: string, position: number, price: number, title: string) {\r\n        window.dataLayer.push({\r\n            event: \"action.click.randomtips\",\r\n            action: {\r\n                click: {\r\n                    gameCode: gameCode,\r\n                    eventProperty2: position.toString(),\r\n                    value: price,\r\n                    label: title,\r\n                },\r\n            },\r\n        });\r\n    }\r\n\r\n    // DL1.3 Money bet\r\n    export function pushMoneyBetStanding(data) {\r\n        window.dataLayer.push({\r\n            event: \"action.bet.money\",\r\n            action: {\r\n                bet: {\r\n                    transactionId: data.transactionId,\r\n                    gameCode: data.gameCode,\r\n                    value: data.value,\r\n                    bettingSystem: data.bettingSystem,\r\n                    repetitionEndDate: data.repetitionEndDate,\r\n                    columns: data.columns,\r\n                    columnsFillType: data.columnsFillType,\r\n                    columnsFillState: data.columnsFillState,\r\n                    addonGame: data.addonGame,\r\n                    bettingMode: data.bettingMode,\r\n                    position: data.position,\r\n                },\r\n            },\r\n        });\r\n    }\r\n\r\n    export function pushMoneyBetSingleOrMultiDraw(data) {\r\n        window.dataLayer.push({\r\n            event: \"action.bet.money\",\r\n            action: {\r\n                bet: {\r\n                    transactionId: data.transactionId,\r\n                    gameCode: data.gameCode,\r\n                    value: data.value,\r\n                    bettingSystem: data.bettingSystem,\r\n                    columns: data.columns,\r\n                    columnsFillType: data.columnsFillType,\r\n                    columnsFillState: data.columnsFillState,\r\n                    addonGame: data.addonGame,\r\n                    bettingMode: data.bettingMode,\r\n                    position: data.position,\r\n                },\r\n            },\r\n        });\r\n    }\r\n\r\n    // DL1.3 & DL1.35 for random wagers widget implemented directly in code for this widget (_ds-random-wagers.ts)\r\n\r\n    // DL1.35 Purchase page\r\n    export function pushPurchase(data) {\r\n        const { days, times } = Analytics.getDrawDaysAndTimes(data.drawNames);\r\n\r\n        window.dataLayer.push({\r\n            event: \"page\",\r\n            page: {\r\n                type: \"purchase\",\r\n                kind: \"purchase\",\r\n                verticalCode: \"loterie\",\r\n                verticalCodeStrict: \"loterie\",\r\n                gameCode: data.gameCode,\r\n                gameCodeStrict: data.gameCode,\r\n                bettingSystem: data.bettingSystem,\r\n            },\r\n            order: {\r\n                id: data.orderId,\r\n                totalValue: data.value,\r\n                revenue: data.value,\r\n                discount: 0,\r\n                tax: 0,\r\n            },\r\n            cart: {\r\n                products: [\r\n                    {\r\n                        fullPrice: data.value,\r\n                        pocketPrice: data.value,\r\n                        price: data.value,\r\n                        tax: 0,\r\n                        position: 1,\r\n                        verticalCode: \"loterie\",\r\n                        gameCode: data.gameCode,\r\n                        boards: data.boards,\r\n                        draws: data.draws,\r\n                        addonGame: data.addonGame,\r\n                        ticketKind: data.bettingSystem,\r\n                        drawDays: days,\r\n                        drawTimes: times,\r\n                        bettingMode: data.bettingMode,\r\n                    },\r\n                ],\r\n            },\r\n        });\r\n    }\r\n\r\n    // DL1.40\r\n    export const pushTicketCheckResult = (result: \"win\" | \"loss\", lottery: string) => {\r\n        window.dataLayer.push({\r\n            event: \"action.checkBet.bet\",\r\n            action: {\r\n                checkBet: {\r\n                    bet: result,\r\n                    gameCode: lottery,\r\n                    verticalCode: \"loterie\",\r\n                },\r\n            },\r\n        });\r\n    };\r\n\r\n    // DL1.41a\r\n    // DL1.42a\r\n    export const pushTicketCheckBannerImpress = (promo: AnalyticsPromo | null) => {\r\n        window.dataLayer.push({\r\n            event: \"action.impress.promos\",\r\n            action: {\r\n                impress: {\r\n                    promos: [promo],\r\n                },\r\n            },\r\n        });\r\n    };\r\n\r\n    // DL1.41b\r\n    // DL1.42b\r\n    export const pushTicketCheckBannerClick = (promo: AnalyticsPromo | null) => {\r\n        window.dataLayer.push({\r\n            event: \"action.show.promos\",\r\n            action: {\r\n                show: {\r\n                    promos: [promo],\r\n                },\r\n            },\r\n        });\r\n    };\r\n\r\n    // DL1.43\r\n    export const pushTicketCheckButtonClick = (name: string) => {\r\n        window.dataLayer.push({\r\n            event: \"action.click.navigation\",\r\n            action: {\r\n                click: {\r\n                    name: name,\r\n                    eventProperty2: \"page\",\r\n                },\r\n            },\r\n        });\r\n    };\r\n\r\n    // DL1.5 How to play page banner impression (Online sazenka)\r\n    export function pushHowToPlayPageBannerImpressionOnlineBet(bannerTitle: string, position: number) {\r\n        window.dataLayer.push({\r\n            event: \"action.impress.promos\",\r\n            action: {\r\n                impress: {\r\n                    promos: [\r\n                        {\r\n                            id: \"game.howToPlayOnline.mainCarousel\",\r\n                            name: \"game.howToPlayOnline.mainCarousel\",\r\n                            creative: bannerTitle,\r\n                            position: \"top.\" + position,\r\n                        },\r\n                    ],\r\n                },\r\n            },\r\n        });\r\n    }\r\n\r\n    // DL1.6 How to play page banner impression (Klasicka sazenka)\r\n    export function pushHowToPlayPageBannerImpressionStandardBet(bannerTitle: string, position: number) {\r\n        window.dataLayer.push({\r\n            event: \"action.impress.promos\",\r\n            action: {\r\n                impress: {\r\n                    promos: [\r\n                        {\r\n                            id: \"game.howToPlayStandard.mainCarousel\",\r\n                            name: \"game.howToPlayStandard.mainCarousel\",\r\n                            creative: bannerTitle,\r\n                            position: \"top.\" + position,\r\n                        },\r\n                    ],\r\n                },\r\n            },\r\n        });\r\n    }\r\n\r\n    // DL1.7 How to play banner impression\r\n    export function pushHowToPlayBannerImpression(bannerTitle: string, position: number) {\r\n        window.dataLayer.push({\r\n            event: \"action.impress.promos\",\r\n            action: {\r\n                impress: {\r\n                    promos: [\r\n                        {\r\n                            id: \"game.howToPlay.subCarousel\",\r\n                            name: \"game.howToPlay.subCarousel\",\r\n                            creative: bannerTitle,\r\n                            position: \"middle.\" + position,\r\n                        },\r\n                    ],\r\n                },\r\n            },\r\n        });\r\n    }\r\n\r\n    // DL1.7b How to play banner click\r\n    export function pushHowToPlayBannerClick(bannerTitle: string, position: number) {\r\n        window.dataLayer.push({\r\n            event: \"action.show.promos\",\r\n            action: {\r\n                show: {\r\n                    promos: [\r\n                        {\r\n                            id: \"game.howToPlay.subCarousel\",\r\n                            name: \"game.howToPlay.subCarousel\",\r\n                            creative: bannerTitle,\r\n                            position: \"middle.\" + position,\r\n                        },\r\n                    ],\r\n                },\r\n            },\r\n        });\r\n    }\r\n\r\n    // DL1.8 Millionaires map\r\n    export function pushMillionairesMapClick() {\r\n        window.dataLayer.push({\r\n            event: \"action.clickmillionaresMap.loterie\",\r\n        });\r\n    }\r\n}\r\n","/**\r\n * Vanila JS variant to jQuery $(() => {}).\r\n * @param {callback} callback\r\n * @example - documentReady(() => {}).\r\n * This function is binding to document.ready\r\n * */\r\nexport function documentReady(callback: () => void) {\r\n    if (document.readyState !== \"loading\") {\r\n        return callback();\r\n    } else {\r\n        document.addEventListener(\"DOMContentLoaded\", callback);\r\n    }\r\n}\r\n","export class Timer {\r\n    start: Date;\r\n\r\n    constructor() {\r\n        this.start = new Date();\r\n    }\r\n\r\n    public getTime(): number {\r\n        return new Date().getTime() - this.start.getTime();\r\n    }\r\n\r\n    public reset(): void {\r\n        this.start = new Date();\r\n    }\r\n}\r\n\r\n/**\r\n *\r\n * @param {Function} callback to call when complete\r\n * @param {Number} delay in milliseconds\r\n */\r\nexport class TimeoutTimer extends Timer {\r\n    timerId: number;\r\n    remaining: number;\r\n    callback: () => void;\r\n\r\n    constructor(callback: () => void, delay: number) {\r\n        super();\r\n        this.remaining = delay;\r\n        this.callback = callback;\r\n\r\n        this.timerId = window.setTimeout(this.callback, this.remaining);\r\n    }\r\n\r\n    public clear(): void {\r\n        clearTimeout(this.timerId);\r\n    }\r\n\r\n    public pause(): void {\r\n        clearTimeout(this.timerId);\r\n        this.remaining -= Math.abs(new Date().getTime() - this.start.getTime());\r\n    }\r\n\r\n    public resume(): void {\r\n        this.start = new Date();\r\n        clearTimeout(this.timerId);\r\n        this.timerId = window.setTimeout(this.callback, this.remaining);\r\n    }\r\n}\r\n"],"names":["DsPromoCardAnalytics","pushedPromoCardIds","observerConfig","attributes","attributeFilter","bannerItemSelector","pushImpressPromoCard","placement","id","text","index","dataLayer","push","event","action","impress","promos","name","creative","position","pushClickPromoCard","show","getBannerProperties","banner","rootSelector","_carousel$getAttribut","carousel","closest","getAttribute","replace","pagePlacement","headingElement","querySelector","textContent","trim","positionIndex","Array","from","querySelectorAll","indexOf","observeBannerChanges","observer","classList","contains","bannerProperties","includes","ProductPageAnalytics","pushGamePageBannerImpression","pushHowToPlayBannerImpression","disconnect","setupPromoCardAnalytics","banners","document","forEach","MutationObserver","mutations","mutation","type","attributeName","observe","addEventListener","pushGamePageBannerClick","pushHowToPlayBannerClick","once","gsap","registerPlugin","CSSPlugin","promoCardsSelectors","root","item","dot","promoCardsClasses","itemActiveSelectorClass","itemActiveStyleClass","initPromoCardCarousel","rootElement","items","dots","carouselSlideDuration","parseInt","dataset","timeout","dotTween","isPaused","timeoutDuration","tweenOptions","height","duration","ease","getCurrentIndex","findIndex","getNextIndex","current","length","goToIndex","_timeout","_dotTween","clear","kill","set","remove","add","to","TimeoutTimer","timeoutCallback","pause","nextIndex","resume","initPromoCards","cards","documentReady","pushGamePageDisplayed","lotteryName","window","page","kind","verticalCode","verticalCodeStrict","gameCode","gameCodeStrict","pushGameDetailPageDisplayed","pushGameCheckbetPageDisplayed","pushGameHowToPlayPageDisplayed","pushClickNavigation","itemName","click","eventProperty2","pushClickQuicktips","bettingMode","lotteryAlias","wagerValue","label","LotteryUtils","analyticsCodeName","parseLotteryName","value","bannerTitleText","pushRandomTipClick","price","title","toString","pushMoneyBetStanding","data","bet","transactionId","bettingSystem","repetitionEndDate","columns","columnsFillType","columnsFillState","addonGame","pushMoneyBetSingleOrMultiDraw","pushPurchase","days","times","Analytics","getDrawDaysAndTimes","drawNames","order","orderId","totalValue","revenue","discount","tax","cart","products","fullPrice","pocketPrice","boards","draws","ticketKind","drawDays","drawTimes","pushHowToPlayPageBannerImpressionOnlineBet","bannerTitle","pushHowToPlayPageBannerImpressionStandardBet","pushMillionairesMapClick","pushTicketCheckResult","result","lottery","checkBet","pushTicketCheckBannerImpress","promo","pushTicketCheckBannerClick","pushTicketCheckButtonClick","callback","readyState","Timer","constructor","_defineProperty","this","start","Date","getTime","reset","delay","super","remaining","timerId","setTimeout","clearTimeout","Math","abs"],"sourceRoot":""}