{"version":3,"file":"js/9595.867cfe39b49389dd.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":""}