{"version":3,"file":"js/764.843c0b212c83eb53.js","mappings":"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","sources":["webpack://@sazka/web/./js/app/shared/widgets/_homepage-carousel.ts","webpack://@sazka/web/../../libs/utils/timer.ts"],"sourcesContent":["import { Analytics } from \"../utils/analytics/analytics\";\r\nimport { ResponsiveUtils } from \"@sazka/utils/responsive-utils\";\r\nimport { TimeoutTimer } from \"@sazka/utils/timer\";\r\n\r\n$(function () {\r\n let $root = $(\".homepage-carousel\");\r\n if (!$root.length) {\r\n return;\r\n }\r\n const vertical = Analytics.vertical;\r\n\r\n // in case there are multiple carousels\r\n $root = $($root[0]);\r\n\r\n const $images = $root.find(\".homepage-carousel__image\");\r\n\r\n const $slides = $root.find(\".homepage-carousel__slide\");\r\n const $firstSlide = $slides.first();\r\n setNavigationColor($firstSlide);\r\n\r\n const pushedSlides: number[] = [];\r\n\r\n datalayerPushCarousels($firstSlide, $firstSlide.data(\"slide-id\"));\r\n\r\n let lastPosition = window.scrollY;\r\n const parallaxCoeficient = 0.1;\r\n\r\n // parallax effect only on non-mobile screens\r\n if ($root.data(\"disable-parallax\") === undefined) {\r\n window.addEventListener(\r\n \"scroll\",\r\n () => {\r\n onScroll();\r\n },\r\n {\r\n passive: true,\r\n }\r\n );\r\n }\r\n\r\n // if there is only one carousel, binding fading events, stepper and timers is waste of resources\r\n if ($slides.length <= 1) {\r\n return;\r\n }\r\n\r\n const slideTimeout = 6000;\r\n let timer = new TimeoutTimer(() => {\r\n goToNextSlide();\r\n }, slideTimeout);\r\n\r\n if (ResponsiveUtils.breakpointUp(\"sm\")) {\r\n $root.on(\"mouseenter\", mouseIn);\r\n $root.on(\"mouseleave\", mouseOut);\r\n\r\n $root.find(\".homepage-carousel__menu--item\").on(\"click\", (e) => {\r\n const $elem = $(e.currentTarget);\r\n if ($elem.hasClass(\"active\")) {\r\n return;\r\n }\r\n\r\n const slideId = $elem.data(\"slide-id\");\r\n changeActiveElements($elem);\r\n setNavigationColor($(`.homepage-carousel__slide[data-slide-id=${slideId}]`));\r\n });\r\n }\r\n\r\n function goToNextSlide() {\r\n const $currentSlide = $root.find(\".homepage-carousel__slide.active\");\r\n if ($currentSlide.length) {\r\n let $nextSlide = $currentSlide.next();\r\n if (!$nextSlide.length) {\r\n $nextSlide = $root.find(\".homepage-carousel__slide\").first();\r\n }\r\n\r\n changeActiveElements($nextSlide);\r\n setNavigationColor($nextSlide);\r\n }\r\n }\r\n\r\n function changeActiveElements(slide) {\r\n const slideId = slide.data(\"slide-id\");\r\n\r\n $root.find(\".homepage-carousel__menu--item, .homepage-carousel__slide\").removeClass(\"active\");\r\n\r\n // change active slide\r\n const trueSlide = $root.find(`.homepage-carousel__slide[data-slide-id=${slideId}]`);\r\n trueSlide.addClass(\"active\");\r\n\r\n // change active slide in menu\r\n $root.find(`.homepage-carousel__menu--item[data-slide-id=${slideId}]`).addClass(\"active\");\r\n\r\n //push active slide to DL\r\n datalayerPushCarousels(trueSlide, slideId);\r\n\r\n resetTimer();\r\n }\r\n\r\n function mouseIn() {\r\n $root.addClass(\"hover\");\r\n timer.pause();\r\n }\r\n\r\n function mouseOut() {\r\n $root.removeClass(\"hover\");\r\n timer.resume();\r\n }\r\n\r\n function resetTimer() {\r\n if (timer) {\r\n timer.clear();\r\n\r\n timer = new TimeoutTimer(() => {\r\n goToNextSlide();\r\n }, slideTimeout);\r\n\r\n if ($root.hasClass(\"hover\")) {\r\n timer.pause();\r\n }\r\n }\r\n }\r\n\r\n function datalayerPushCarousels($slide, $slideId) {\r\n if (typeof $slideId !== \"undefined\" && !pushedSlides.includes($slideId) && vertical === \"\") {\r\n pushedSlides.push($slideId);\r\n\r\n const { $slideImg, codename, index } = getSlideData($slide);\r\n\r\n Analytics.actionImpressPromo(\r\n codename,\r\n \"home.carousel\",\r\n $slideImg.attr(\"src\") || $slideImg.attr(\"data-src\"),\r\n `home.carousel.${index}`\r\n );\r\n\r\n const carouselSlide = $root.find(`.homepage-carousel__slide[data-slide-id=${$slideId}]`);\r\n\r\n carouselSlide.on(\"click\", () => {\r\n datalayerPushCarouselClick($slide);\r\n });\r\n }\r\n }\r\n\r\n function datalayerPushCarouselClick($slide) {\r\n const { $slideImg, codename, index } = getSlideData($slide);\r\n\r\n Analytics.actionShowPromo(\r\n codename,\r\n \"home.carousel\",\r\n $slideImg.attr(\"src\") || $slideImg.attr(\"data-src\"),\r\n `home.carousel.${index}`\r\n );\r\n }\r\n\r\n function getSlideData($slide) {\r\n const $slideImg = $slide.find(\".homepage-carousel__image\");\r\n const codename = $slide.data(\"a-codename\");\r\n const index = $slide.data(\"a-index\");\r\n return { $slideImg, codename, index };\r\n }\r\n\r\n function onScroll() {\r\n lastPosition = window.scrollY;\r\n\r\n requestAnimationFrame(() => {\r\n updateParalax(lastPosition);\r\n });\r\n }\r\n\r\n function updateParalax(y) {\r\n const yPos = y * parallaxCoeficient;\r\n const yPosImage = y * 0.05;\r\n $root.css(\"transform\", `translate3d(0, ${yPos}px, 0)`);\r\n $images.css(\"transform\", `translate3d(0, ${yPosImage}px, 0)`);\r\n }\r\n\r\n function setNavigationColor($slide) {\r\n const isDark = $slide?.hasClass(\"dark\") ?? false;\r\n\r\n if (isDark) {\r\n $(\"header\").addClass(\"dark\");\r\n $(\".homepage-carousel__menu--item\").addClass(\"dark\");\r\n } else {\r\n $(\"header\").removeClass(\"dark\");\r\n $(\".homepage-carousel__menu--item\").removeClass(\"dark\");\r\n }\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":["$","$root","length","vertical","Analytics","$images","find","$slides","$firstSlide","first","setNavigationColor","pushedSlides","datalayerPushCarousels","data","lastPosition","window","scrollY","parallaxCoeficient","undefined","addEventListener","onScroll","passive","slideTimeout","timer","TimeoutTimer","goToNextSlide","$currentSlide","$nextSlide","next","changeActiveElements","slide","slideId","removeClass","trueSlide","addClass","resetTimer","mouseIn","pause","mouseOut","resume","clear","hasClass","$slide","$slideId","includes","push","$slideImg","codename","index","getSlideData","actionImpressPromo","attr","carouselSlide","on","datalayerPushCarouselClick","actionShowPromo","requestAnimationFrame","updateParalax","y","yPos","yPosImage","css","_$slide$hasClass","isDark","ResponsiveUtils","breakpointUp","e","$elem","currentTarget","Timer","constructor","_defineProperty","this","start","Date","getTime","reset","callback","delay","super","remaining","timerId","setTimeout","clearTimeout","Math","abs"],"sourceRoot":""}