{"version":3,"file":"js/3579.62eada5d868447fa.js","mappings":"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","sources":["webpack://@sazka/web/./js/app/casino/analytics-casino.ts","webpack://@sazka/web/./js/app/casino/game-filter/casino-jackpots-newsline.ts","webpack://@sazka/web/./js/app/casino/game-filter/_games-filter.ts","webpack://@sazka/web/../../libs/utils/carousel/use-flickity-dots.ts","webpack://@sazka/web/../../libs/utils/carousel/flickity-patched.ts"],"sourcesContent":["export namespace CasinoAnalytics {\r\n export const pushGameImpressions = (placement: string) => {\r\n window.dataLayer.push({\r\n action: {\r\n impress: {\r\n products: null,\r\n },\r\n },\r\n });\r\n\r\n const gamesWrapper = document.querySelector(`[data-a-games-placement=\\\"${placement}\\\"]`);\r\n const games = Array.from(gamesWrapper.querySelectorAll<HTMLElement>(\".game-launcher\")).filter((g) =>\r\n g.parentElement.checkVisibility()\r\n );\r\n\r\n const products = [];\r\n\r\n games.forEach((game) => {\r\n const position = games.indexOf(game) + 1;\r\n\r\n if (!game.parentElement.ariaHidden) {\r\n const product = {\r\n id: game.dataset.gameCode,\r\n gameCode: game.dataset.gameCode,\r\n verticalCode: \"hry\",\r\n placement: placement,\r\n position: position,\r\n supplier: game.dataset.manufacturerName,\r\n };\r\n\r\n products.push(product);\r\n }\r\n });\r\n\r\n window.dataLayer.push({\r\n event: \"action.impress.products\",\r\n action: {\r\n impress: {\r\n products: products,\r\n },\r\n },\r\n });\r\n };\r\n\r\n export const pushRecommendationClick = (recommendation: string) => {\r\n window.dataLayer.push({\r\n event: \"action.recommendationClick.hry\",\r\n action: {\r\n recommendationClick: {\r\n label: recommendation,\r\n },\r\n },\r\n });\r\n };\r\n\r\n export const pushGameFilterOpen = () => {\r\n window.dataLayer.push({\r\n event: \"action.openFilters.hry\",\r\n });\r\n };\r\n\r\n export const pushGameFilterClose = () => {\r\n window.dataLayer.push({\r\n event: \"action.closeFilters.hry\",\r\n });\r\n };\r\n\r\n export const pushApplyFilter = (currentFilter: string, allFilters: string[]) => {\r\n window.dataLayer.push({\r\n event: \"action.applyFilter.hry\",\r\n action: {\r\n applyFilter: {\r\n label: currentFilter,\r\n },\r\n },\r\n page: {\r\n filters: allFilters,\r\n },\r\n });\r\n };\r\n\r\n export const pushRemoveFilter = (currentFilter: string, allFilters: string[]) => {\r\n window.dataLayer.push({\r\n event: \"action.removeFilter.hry\",\r\n action: {\r\n removeFilter: {\r\n label: currentFilter,\r\n },\r\n },\r\n page: {\r\n filters: allFilters,\r\n },\r\n });\r\n };\r\n\r\n export const pushJacpotsNavigationClick = (direction: \"left\" | \"right\") => {\r\n window.dataLayer.push({\r\n event: \"action.swipeSupplier.hry\",\r\n action: {\r\n swipeSupplier: {\r\n label: `jackpot-${direction}`,\r\n },\r\n },\r\n });\r\n };\r\n}\r\n","import { WebpHelper } from \"@sazka/utils/webp-helper\";\r\nimport Odometer from \"odometer\";\r\nimport { FlickityPatched } from \"@sazka/utils/carousel/flickity-patched\";\r\nimport { CasinoJackpot, CasinoJackpotType } from \"@/casino/jackpots/casino-jackpot\";\r\nimport useJackpotManager from \"../jackpots/use-jackpot-manager\";\r\nimport { watch } from \"vue\";\r\nimport { documentReady } from \"@sazka/utils/document-ready\";\r\nimport { ResponsiveUtils } from \"@sazka/utils/responsive-utils\";\r\n\r\nexport class CasinoJackpotsNewsline {\r\n private root: JQuery;\r\n private displayedJackpots: CasinoJackpotType[] = [];\r\n private providerUnsubscribers: Map<CasinoJackpotType, () => void> = new Map();\r\n private readonly jackpotPrizeClass = \"jackpot-newsline__prize-value\";\r\n /* eslint-disable no-use-before-define */\r\n private static instancePrivate: CasinoJackpotsNewsline;\r\n\r\n static instance() {\r\n if (!this.instancePrivate) {\r\n const root = $(\"#casino-jackpots-newsline\");\r\n if (!root.length) return;\r\n\r\n this.instancePrivate = new CasinoJackpotsNewsline(root);\r\n }\r\n\r\n return this.instancePrivate;\r\n }\r\n\r\n constructor(root: JQuery) {\r\n this.root = root;\r\n }\r\n\r\n showJackpots(jackpots: CasinoJackpotType[]) {\r\n this.showJackpotsInternal(jackpots);\r\n }\r\n\r\n private watchJackpotsHandler(newJackpotsData: CasinoJackpot[], provider: CasinoJackpotType) {\r\n if (this.displayedJackpots.includes(provider)) {\r\n this.updateJackpotData(provider, newJackpotsData);\r\n } else {\r\n const jackpotElement = $(this.renderJackpot(provider, newJackpotsData));\r\n this.root.append(jackpotElement);\r\n setTimeout(() => {\r\n this.initFlickity(jackpotElement.find(\".jackpot-newsline__carousel\"));\r\n }, 100);\r\n }\r\n this.updateOrInitOdometer();\r\n }\r\n\r\n private async showJackpotsInternal(jackpots: CasinoJackpotType[]) {\r\n // diff arrays and delete missing jackpots (jackpots that were displayed, but no longer should be)\r\n this.displayedJackpots.filter((x) => !jackpots.includes(x)).forEach((j) => this.removeJackpot(j));\r\n\r\n const newJackpots = jackpots.filter((x) => {\r\n return (\r\n !this.displayedJackpots.includes(x) &&\r\n Object.values(CasinoJackpotType).includes(x.toLowerCase() as CasinoJackpotType)\r\n );\r\n });\r\n\r\n // render new jackpots\r\n const { jackpots: jackpotsReactive, unsubscribe } = await useJackpotManager(newJackpots);\r\n\r\n for (const provider of newJackpots) {\r\n const safeProvider = provider.toLowerCase() as CasinoJackpotType;\r\n const watchStopHandle = watch(\r\n () => jackpotsReactive.jackpotsByProvider[safeProvider],\r\n (newJackpotsData) => this.watchJackpotsHandler(newJackpotsData, provider),\r\n { immediate: true }\r\n );\r\n this.providerUnsubscribers.set(safeProvider, () => {\r\n watchStopHandle();\r\n unsubscribe();\r\n });\r\n }\r\n\r\n this.displayedJackpots.filter((x) => !jackpots.includes(x)).forEach((j) => this.removeJackpot(j));\r\n this.displayedJackpots = jackpots;\r\n }\r\n\r\n private initFlickity(element: JQuery) {\r\n if (!element?.length) return;\r\n\r\n const carouselItems = element.find(\".jackpot-newsline__texts\");\r\n if (carouselItems?.length <= 3 && ResponsiveUtils.breakpointUp(\"sm2\")) {\r\n return;\r\n }\r\n\r\n let instance = element.data(\"flickity\");\r\n\r\n if (!instance) {\r\n instance = new FlickityPatched(element[0], {\r\n draggable: true,\r\n autoPlay: 3500,\r\n cellSelector: \".jackpot-newsline__texts\",\r\n cellAlign: \"left\",\r\n prevNextButtons: false,\r\n pageDots: false,\r\n wrapAround: true,\r\n percentPosition: true,\r\n contain: true,\r\n });\r\n\r\n element.data(\"flickity\", instance);\r\n\r\n instance.reposition();\r\n instance.resize();\r\n }\r\n }\r\n\r\n private updateJackpotData(jackpotType: CasinoJackpotType, jackpotData: CasinoJackpot[]) {\r\n const jackpotElement = this.findJackpotElement(jackpotType);\r\n if (!jackpotElement || jackpotElement.length === 0) return;\r\n\r\n const jackpotPrizes = jackpotElement.find(`.${this.jackpotPrizeClass}`);\r\n\r\n if (jackpotPrizes.length !== jackpotData.length) return;\r\n\r\n for (let i = 0; i < jackpotData.length; i++) {\r\n jackpotPrizes.eq(i).data(\"prize\", String(Math.floor(jackpotData[i].prize)));\r\n }\r\n }\r\n\r\n private removeJackpot(jackpotType: CasinoJackpotType): void {\r\n this.findJackpotElement(jackpotType).remove();\r\n this.providerUnsubscribers.get(jackpotType.toLowerCase() as CasinoJackpotType)?.();\r\n }\r\n\r\n private findJackpotElement(jackpotType: CasinoJackpotType) {\r\n return this.root.find(`div[data-jackpot-type=\"${jackpotType}\"]`);\r\n }\r\n\r\n private updateOrInitOdometer() {\r\n const values = this.root.find(`.${this.jackpotPrizeClass}`);\r\n for (let i = 0; i < values.length; i++) {\r\n const $element = values.eq(i);\r\n let odometer = $element.data(\"odometer\");\r\n if (!odometer) {\r\n odometer = new Odometer({\r\n el: values[i],\r\n value: $element.data(\"prize\"),\r\n duration: 4000,\r\n format: \"( ddd)\",\r\n });\r\n odometer.render();\r\n $element.data(\"odometer\", odometer);\r\n }\r\n odometer.update($element.data(\"prize\"));\r\n }\r\n\r\n if (values.length) {\r\n const carousel = values.eq(0).closest(\".jackpot-newsline__carousel\");\r\n const instance = carousel.data(\"flickity\");\r\n\r\n if (instance) {\r\n instance.reposition();\r\n instance.resize();\r\n }\r\n }\r\n }\r\n\r\n private renderJackpot(jackpotType: CasinoJackpotType, jackpotData: CasinoJackpot[]): string {\r\n return `\r\n <div class=\"jackpot-newsline__item\" data-jackpot-type=\"${jackpotType}\">\r\n <div class=\"jackpot-newsline__name\">\r\n <div class=\"jackpot-newsline__name-bg\">\r\n </div>\r\n <span class=\"jackpot-newsline__name-text\">\r\n Jackpoty ${jackpotType}\r\n </span>\r\n </div>\r\n <div class=\"jackpot-newsline__jackpots\">\r\n <div class=\"jackpot-newsline__jackpots__bg\"></div>\r\n <div class=\"jackpot-newsline__carousel\">\r\n ${jackpotData\r\n .map((data) => {\r\n return `\r\n <div class=\"jackpot-newsline__texts\">\r\n <div class=\"jackpot-newsline__jackpot-content\">\r\n ${this.getJackpotImage(data.name)}\r\n ${\r\n data.showName\r\n ? `<span class=\"jackpot-newsline__jackpot-name\">${data.name}: </span>`\r\n : \"\"\r\n }\r\n <span class=\"jackpot-newsline__prize\">\r\n <span class=\"${this.jackpotPrizeClass}\" data-prize=\"${String(\r\n Math.floor(data.prize)\r\n )}\"></span><span class=\"jackpot-newsline__currency\"> KÄ</span>\r\n </span>\r\n </div>\r\n </div>\r\n `;\r\n })\r\n .join(\"\")}\r\n </div>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n\r\n private getJackpotImage(jackpotName: string) {\r\n return WebpHelper.createPictureTag(\r\n `/frontend/web/img/casino/jackpot-newsline/jackpot-${this.getJackpotImageName(\r\n jackpotName.toLowerCase()\r\n )}.png`,\r\n `Vizuál ${jackpotName.toLowerCase()} jackpotu`,\r\n \"jackpot-newsline__image\"\r\n );\r\n }\r\n\r\n private getJackpotImageName(jackpotName: string) {\r\n switch (jackpotName) {\r\n case \"diamond\":\r\n case \"iron\":\r\n return \"platinum\";\r\n case \"royal\":\r\n return \"gold\";\r\n case \"sapphire\":\r\n return \"gold\";\r\n case \"emerald\":\r\n return \"silver\";\r\n case \"ruby\":\r\n return \"bronze\";\r\n case \"Äervený\":\r\n return \"cerveny\";\r\n case \"zelený\":\r\n return \"zeleny\";\r\n default:\r\n return jackpotName;\r\n }\r\n }\r\n}\r\n\r\ndocumentReady(() => {\r\n CasinoJackpotsNewsline.instance();\r\n});\r\n","import { UrlUtils } from \"@sazka/utils/url\";\r\nimport { debounce } from \"@sazka/utils/debounce\";\r\nimport { CasinoJackpotsNewsline } from \"./casino-jackpots-newsline\";\r\nimport { ResponsiveUtils } from \"@sazka/utils/responsive-utils\";\r\nimport { CasinoAnalytics } from \"../analytics-casino\";\r\nimport { CasinoJackpotType } from \"../jackpots/casino-jackpot\";\r\n\r\nclass CasinoGameFilter {\r\n protected cards = $(\"#card-list .product-card\");\r\n protected urlFilter: string[] = [];\r\n protected cardsWrapperId = \"hry\";\r\n protected valueDataProperty = \"val\";\r\n protected captionDataProperty = \"val\";\r\n protected btnShowAllId = \"#filter-btn-show-all\";\r\n protected closeIconClass = \".js-casino-close\";\r\n protected settingsIconClass = \".js-casino-settings\";\r\n\r\n protected root: JQuery<HTMLElement>;\r\n protected checkboxesVendors: JQuery<HTMLElement>;\r\n protected checkboxAll: JQuery<HTMLElement>;\r\n protected buttonShowAll: JQuery<HTMLElement>;\r\n protected closeIcon: JQuery<HTMLElement>;\r\n protected settingsIcon: JQuery<HTMLElement>;\r\n protected filterInitiliazed = false;\r\n\r\n constructor(root: JQuery<HTMLElement>) {\r\n if (!root || root.length === 0) return;\r\n\r\n this.root = root;\r\n this.init();\r\n this.setup();\r\n }\r\n\r\n protected init() {\r\n this.checkboxesVendors = this.root.find(\".casino-filter__items .casino-filter__checkbox--vendor input\");\r\n this.checkboxAll = this.root.find(\"#cf_all\");\r\n this.buttonShowAll = $(this.btnShowAllId);\r\n this.closeIcon = $(this.closeIconClass);\r\n this.settingsIcon = $(this.settingsIconClass);\r\n this.captionDataProperty = \"name\";\r\n this.valueDataProperty = \"manufacturer\";\r\n }\r\n\r\n protected setup() {\r\n this.bindHandlers();\r\n this.parseUrl();\r\n // this.saveState(false);\r\n this.initFilter();\r\n }\r\n\r\n protected bindHandlers() {\r\n this.checkboxesVendors?.change((event) => this.checkboxesChangeHandler(event));\r\n this.checkboxAll?.change((event) => this.checkboxAllChangeHandler(event));\r\n window.addEventListener(\"popstate\", (e) => this.popStateHandler(e));\r\n\r\n this.buttonShowAll.on(\"click\", () => {\r\n this.toogleFilter();\r\n });\r\n }\r\n\r\n protected initFilter(scroll = true) {\r\n //show all games\r\n if (!this.urlFilter || this.urlFilter.length == 0 || this.urlFilter[0] === \"all\") {\r\n this.checkboxAll.prop(\"checked\", true);\r\n if (this.checkboxesVendors) {\r\n this.checkboxesVendors.prop(\"checked\", false);\r\n }\r\n\r\n this.showAll();\r\n\r\n if (scroll && this.urlFilter && this.urlFilter[0] === \"all\") {\r\n this.scrollToCards();\r\n } else if (ResponsiveUtils.isMobile()) {\r\n if (this.filterInitiliazed) {\r\n this.toogleFilter();\r\n } else {\r\n this.buttonShowAll.toggleClass(\"is-open\");\r\n this.filterInitiliazed = true;\r\n }\r\n }\r\n\r\n CasinoAnalytics.pushGameImpressions(\"main\");\r\n return;\r\n }\r\n\r\n const selectedVendors = [];\r\n this.checkFilterValues(this.checkboxesVendors, selectedVendors);\r\n\r\n if (selectedVendors.length) {\r\n this.filterCards(selectedVendors);\r\n this.checkboxAll.prop(\"checked\", false);\r\n }\r\n if (scroll) {\r\n this.scrollToCards();\r\n }\r\n }\r\n\r\n protected checkFilterValues(checkboxes: JQuery<HTMLElement>, values: Array<string>) {\r\n if (!checkboxes) return;\r\n\r\n for (let i = 0; i < checkboxes.length; i++) {\r\n const $elem = $(checkboxes[i]);\r\n const value = $elem.data(this.captionDataProperty);\r\n\r\n if (this.urlFilter.indexOf(value) > -1 && values.indexOf(value) < 0) {\r\n $elem.prop(\"checked\", true);\r\n values.push($elem.data(this.valueDataProperty));\r\n //on mobile, only select first\r\n if (!ResponsiveUtils.breakpointUp(\"sm2\")) {\r\n break;\r\n }\r\n } else {\r\n $elem.prop(\"checked\", false);\r\n }\r\n }\r\n }\r\n\r\n protected showAll(): void {\r\n this.cards.show();\r\n CasinoJackpotsNewsline.instance().showJackpots([]);\r\n }\r\n\r\n protected scrollToCards() {\r\n const manufacturersString = UrlUtils.getQueryString(\"filter\");\r\n if (manufacturersString) {\r\n this.scrollToCardsInternal();\r\n }\r\n }\r\n\r\n private scrollToCardsInternal() {\r\n const wrapperTopPosition = $(`#${this.cardsWrapperId}`).offset().top;\r\n const scrollToTop = window.pageYOffset > wrapperTopPosition;\r\n const headerHeight = $(\"#header\").get(0)?.offsetHeight;\r\n const menuHeight = $(\".secondary-menu.active\").get(0)?.offsetHeight;\r\n const scrollTopPosition = wrapperTopPosition - (headerHeight || 0) - (menuHeight || 0);\r\n\r\n $(\"html, body\")\r\n .stop()\r\n .animate({ scrollTop: scrollToTop ? scrollTopPosition : wrapperTopPosition }, 500);\r\n }\r\n\r\n protected parseUrl() {\r\n const filterString = UrlUtils.getQueryString(\"filter\", null, null, false);\r\n if (filterString) {\r\n this.urlFilter = filterString.split(\"+\");\r\n } else {\r\n this.urlFilter = [];\r\n }\r\n }\r\n\r\n protected saveState(pushState = true) {\r\n // prevent chrome from restoring scroll position -> allows scrolling on page load\r\n if (\"scrollRestoration\" in history) {\r\n history.scrollRestoration = \"manual\";\r\n }\r\n\r\n let url = this.removeFilterQueryParameter();\r\n\r\n if (this.urlFilter && this.urlFilter.length > 0) {\r\n const filterValue = this.urlFilter.map((item) => encodeURIComponent(item)).join(\"+\");\r\n url += `${url.indexOf(\"?\") >= 0 ? \"&\" : \"?\"}filter=${filterValue}`;\r\n }\r\n\r\n if (pushState) {\r\n window.history.pushState({ casinoFilter: this.urlFilter }, \"Sazka Casino filter\", url);\r\n } else {\r\n window.history.replaceState(this.urlFilter, \"Sazka Casino filter\", url);\r\n }\r\n }\r\n\r\n protected removeFilterQueryParameter(): string {\r\n const parameter = \"filter\";\r\n let newUrl = window.location.href;\r\n //copied from ng-helper clearUrlParams\r\n newUrl = newUrl\r\n .replace(new RegExp(\"[?&]\" + parameter + \"=[^&#]*(#.*)?$\"), \"$1\")\r\n .replace(new RegExp(\"([?&])\" + parameter + \"=[^&]*&\"), \"$1\");\r\n\r\n return newUrl;\r\n }\r\n\r\n protected popStateHandler(event: { state: { urlFilter: string[] } }) {\r\n if (event.state?.urlFilter) {\r\n this.urlFilter = event.state.urlFilter;\r\n } else {\r\n this.parseUrl(); //ng fucks up replaces state after first page load - try to get state from url\r\n }\r\n\r\n this.initFilter(false);\r\n }\r\n\r\n protected checkboxesChangeHandler(event: JQuery.ChangeEvent<HTMLElement, null, HTMLElement, HTMLElement>) {\r\n const clickedVendor = event.target.dataset.name;\r\n const isChecked = (event.target as HTMLInputElement).checked;\r\n\r\n setTimeout(() => {\r\n const checkedInputs = this.checkboxesVendors.filter(\":checked\");\r\n if (!checkedInputs.length) {\r\n this.checkboxAll.prop(\"checked\", true);\r\n this.urlFilter = [];\r\n this.debouncePushState();\r\n this.showAll();\r\n CasinoAnalytics.pushRemoveFilter(clickedVendor, [\"VÅ¡ichni výrobci\"]);\r\n } else {\r\n this.checkboxAll.prop(\"checked\", false);\r\n this.onVendorCheckboxesChange(clickedVendor, isChecked);\r\n }\r\n }, 0);\r\n }\r\n\r\n protected onVendorCheckboxesChange(clickedVendor: string, applied: boolean) {\r\n const values = [];\r\n this.urlFilter = [];\r\n this.addValuesFromCheckboxes(this.checkboxesVendors, values);\r\n\r\n if (applied) {\r\n CasinoAnalytics.pushApplyFilter(clickedVendor, this.getFilteredVendors());\r\n } else {\r\n CasinoAnalytics.pushRemoveFilter(clickedVendor, this.getFilteredVendors());\r\n }\r\n\r\n this.debouncePushState();\r\n this.filterCards(values);\r\n }\r\n\r\n private getFilteredVendors() {\r\n const filtered = this.checkboxesVendors.filter(\":checked\").toArray();\r\n return filtered.map((v) => v.dataset.name);\r\n }\r\n\r\n protected addValuesFromCheckboxes(checkboxes: JQuery<HTMLElement>, values: Array<string>): void {\r\n if (!checkboxes) return;\r\n\r\n const inputsFiltered = checkboxes.filter(\":checked\");\r\n\r\n for (let i = 0; i < inputsFiltered.length; i++) {\r\n const value = inputsFiltered.eq(i).data(this.valueDataProperty);\r\n if (value && values.indexOf(value) < 0) {\r\n values.push(value);\r\n this.urlFilter.push(inputsFiltered.eq(i).data(this.captionDataProperty));\r\n }\r\n }\r\n }\r\n\r\n protected debouncePushState = debounce(this.saveState, 1000, false);\r\n\r\n protected checkboxAllChangeHandler(event: JQuery.ChangeEvent<HTMLElement, null, HTMLElement, HTMLElement>) {\r\n if (!this.checkboxAll.prop(\"checked\")) {\r\n event.preventDefault();\r\n this.checkboxAll.prop(\"checked\", true);\r\n } else {\r\n this.checkboxesVendors.prop(\"checked\", false);\r\n this.urlFilter = [];\r\n this.debouncePushState();\r\n this.showAll();\r\n CasinoAnalytics.pushApplyFilter(\"VÅ¡ichni výrobci\", [\"VÅ¡ichni výrobci\"]);\r\n CasinoAnalytics.pushGameImpressions(\"main\");\r\n }\r\n }\r\n\r\n protected filterCards(manufacturers: string | any[]) {\r\n let isSazka = false;\r\n\r\n if (manufacturers[0] === \"Sazka\") {\r\n isSazka = true;\r\n manufacturers = manufacturers.slice(1, manufacturers.length);\r\n }\r\n\r\n for (let i = 0; i < this.cards.length; i++) {\r\n const card = this.cards.eq(i);\r\n if (\r\n manufacturers.indexOf(card.data(this.valueDataProperty)) >= 0 ||\r\n (isSazka && card.data(\"sazka\") === \"True\")\r\n ) {\r\n card.show();\r\n } else {\r\n card.hide();\r\n }\r\n }\r\n\r\n CasinoAnalytics.pushGameImpressions(\"main\");\r\n CasinoJackpotsNewsline.instance().showJackpots(this.urlFilter as CasinoJackpotType[]);\r\n }\r\n\r\n protected toogleFilter() {\r\n this.root.slideToggle();\r\n if (this.buttonShowAll.hasClass(\"is-open\")) {\r\n CasinoAnalytics.pushGameFilterClose();\r\n } else {\r\n CasinoAnalytics.pushGameFilterOpen();\r\n }\r\n\r\n this.buttonShowAll.toggleClass(\"is-open\");\r\n }\r\n}\r\n\r\n$(() => {\r\n return new CasinoGameFilter($(\"#game-filter\"));\r\n});\r\n","/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { FlickityDotsOptions } from \"./flickity-dots-options\";\r\nimport { FlickityPatched } from \"./flickity-patched\";\r\n\r\nconst PATH_ATTRS_MAP = {\r\n \"clip-rule\": \"evenodd\",\r\n \"fill-rule\": \"evenodd\",\r\n};\r\n\r\nconst SVG_ATTRS_MAP = {\r\n viewBox: \"0 0 24 24\",\r\n width: \"24\",\r\n height: \"24\",\r\n};\r\n\r\nconst DS_ARROW_CLASS = \"ds-carousel-indicator__arrow\";\r\n\r\nconst BTN_CLASSES = [\"button\", \"button--sm\", \"button--text\"];\r\n\r\nconst defaultDotsOptions: FlickityDotsOptions = {\r\n rootEl: null,\r\n dots: null,\r\n theme: \"light\",\r\n next: null,\r\n prev: null,\r\n nextIcon:\r\n \"M6.257 2.331a1 1 0 0 1 1.412-.074l10 9a1 1 0 0 1 0 1.486l-10 9a1 1 0 1 1-1.338-1.486L15.505 12 6.331 3.743a1 1 0 0 1-.074-1.412Z\",\r\n prevIcon:\r\n \"M17.743 2.331a1 1 0 0 1-.074 1.412L8.495 12l9.174 8.257a1 1 0 1 1-1.338 1.486l-10-9a1 1 0 0 1 0-1.486l10-9a1 1 0 0 1 1.412.074Z\",\r\n useDsClasses: true,\r\n useCustomPrevNextButtons: false,\r\n};\r\n\r\n/**\r\n * When calling init method with config object\r\n * it will render dots at the rootEl you define\r\n */\r\nexport function useFlickityDots(carousel: FlickityPatched, options: FlickityDotsOptions) {\r\n const carouselInstance = carousel;\r\n if (Object.keys(options).length === 0) return;\r\n const config = Object.assign(defaultDotsOptions, options);\r\n\r\n if (config.useDsClasses && (carouselInstance as any).isInitActivated) {\r\n const indicatorClass = [\"ds-carousel-indicator\"];\r\n\r\n if (config.theme === \"dark\") indicatorClass.push(\"is-dark\");\r\n\r\n config.rootEl.classList.add(...indicatorClass);\r\n\r\n initPrevButton();\r\n initDots();\r\n initNextButton();\r\n }\r\n\r\n config.rootEl.append(\r\n config.prev || getElementFromInstance(\"prev\"),\r\n config.dots || getElementFromInstance(\"dots\"),\r\n config.next || getElementFromInstance(\"next\")\r\n );\r\n\r\n if (!getElementFromInstance(\"prev\") || !getElementFromInstance(\"next\")) {\r\n [...config.rootEl.childNodes].filter((child) => child.nodeType === 3).map((el) => el.remove());\r\n }\r\n\r\n /**\r\n * Destroy custom dots\r\n */\r\n function destroy() {\r\n if (config.rootEl.children.length > 0) config.rootEl.replaceChildren();\r\n }\r\n\r\n function initPrevButton() {\r\n if (!(carouselInstance as any).options.prevNextButtons && config.useCustomPrevNextButtons) {\r\n initButton(config.prev, \"prev\", config.prevIcon);\r\n }\r\n }\r\n\r\n function initNextButton() {\r\n if (!(carouselInstance as any).options.prevNextButtons && config.useCustomPrevNextButtons) {\r\n initButton(config.next, \"next\", config.nextIcon);\r\n }\r\n }\r\n\r\n function initButton(btn: HTMLElement, btnType: \"prev\" | \"next\", icon: string) {\r\n if (btn) {\r\n btn?.classList.add(`${DS_ARROW_CLASS}`, `${DS_ARROW_CLASS}--${btnType}`, ...BTN_CLASSES);\r\n setAttributes(btn?.querySelector(\".flickity-button-icon\"), SVG_ATTRS_MAP);\r\n btn?.querySelector<SVGPathElement>(\".arrow\").setAttribute(\"d\", icon);\r\n } else {\r\n const carouselBtn = getElementFromInstance(btnType);\r\n const arrow = carouselBtn.querySelector(\".arrow\");\r\n const svgElem = carouselBtn.querySelector(\".flickity-button-icon\");\r\n\r\n setAttributes(svgElem, SVG_ATTRS_MAP);\r\n setAttributes(arrow, PATH_ATTRS_MAP);\r\n arrow.setAttribute(\"d\", icon);\r\n arrow.removeAttribute(\"transform\");\r\n carouselBtn.classList.add(`${DS_ARROW_CLASS}`, `${DS_ARROW_CLASS}--${btnType}`, ...BTN_CLASSES);\r\n }\r\n }\r\n\r\n function initDots() {\r\n if (config.dots) {\r\n config.dots.classList.add(\"ds-carousel-indicator__dots\");\r\n } else {\r\n const dots = getElementFromInstance(\"dots\");\r\n dots.classList.add(\"ds-carousel-indicator__dots\");\r\n }\r\n }\r\n\r\n function getElementFromInstance(elType: \"prev\" | \"next\" | \"dots\") {\r\n switch (elType) {\r\n case \"prev\":\r\n return (\r\n (carouselInstance as any).options.prevNextButtons &&\r\n ((carouselInstance as any).prevButton.element as HTMLElement)\r\n );\r\n case \"dots\":\r\n return (\r\n (carouselInstance as any).options.pageDots &&\r\n ((carouselInstance as any).pageDots.holder as HTMLElement)\r\n );\r\n case \"next\":\r\n return (\r\n (carouselInstance as any).options.prevNextButtons &&\r\n ((carouselInstance as any).nextButton.element as HTMLElement)\r\n );\r\n }\r\n }\r\n\r\n function setAttributes(el: Element, attrs: Record<string, any>) {\r\n for (const key in attrs) {\r\n el.setAttribute(key, attrs[key]);\r\n }\r\n }\r\n\r\n return {\r\n destroy,\r\n };\r\n}\r\n","import Flickity from \"flickity\";\r\nimport { FlickityDotsOptions } from \"./flickity-dots-options\";\r\nimport { useFlickityDots } from \"./use-flickity-dots\";\r\n\r\nexport interface FlickityPatchedOptions extends Flickity.Options {\r\n dotsOptions?: FlickityDotsOptions;\r\n}\r\n\r\n/**\r\n * @deprecated Instead use KeenSlider in new components\r\n */\r\nexport class FlickityPatched extends Flickity {\r\n dots: ReturnType<typeof useFlickityDots>;\r\n dotsRoot: HTMLElement = null;\r\n\r\n constructor(selector: string | Element, options?: FlickityPatchedOptions) {\r\n super(selector, options);\r\n this.dotsRoot = options?.dotsOptions?.rootEl;\r\n\r\n this.on(\"dragStart\", () => {\r\n (this.cells as any[]).forEach((slide) => (slide.element.style.pointerEvents = \"none\"));\r\n });\r\n this.on(\"dragEnd\", () => (this.cells as any[]).forEach((slide) => (slide.element.style.pointerEvents = \"all\")));\r\n this.on(\"destroy\", () => {\r\n if (this.dots) this.dots.destroy();\r\n });\r\n\r\n if (options.dotsOptions) {\r\n this.dots = useFlickityDots(this, options.dotsOptions);\r\n }\r\n }\r\n\r\n // The following two methods fix the error that Flickity throws when there is different parent for dotsOptions and Carousel\r\n deactivatePageDots() {\r\n try {\r\n // Try to call flicity deactivatePageDots first\r\n Object.getPrototypeOf(Object.getPrototypeOf(this)).deactivatePageDots();\r\n } catch (e) {\r\n console.warn(\"Flickity deactivatePageDots failed calling its override.\");\r\n const superDeactivatePageDot = (this as any).pageDots.deactivate.bind({\r\n holder: this.dotsRoot.querySelector(\".flickity-page-dots\"),\r\n unbindStartEvent: () => {\r\n // Could not figure out what this was supposed to do. So there is just console.log to prevent TS error.\r\n console.log(\"unbidStart\");\r\n },\r\n parent: { element: this.dotsRoot },\r\n });\r\n superDeactivatePageDot();\r\n }\r\n }\r\n\r\n deactivatePrevNextButtons() {\r\n try {\r\n // Try to call flicity deactivatePrevNextButtons first\r\n Object.getPrototypeOf(Object.getPrototypeOf(this)).deactivatePrevNextButtons();\r\n } catch (e) {\r\n console.warn(\"Flickity deactivatePrevNextButtons failed calling its override.\");\r\n const superDeactivatePrevButton = (this as any).prevButton.deactivate.bind({\r\n element: (this as any).prevButton.element,\r\n unbindStartEvent: () => {\r\n // Could not figure out what this was supposed to do. So there is just console.log to prevent TS error.\r\n console.log(\"unbidStart\");\r\n },\r\n parent: { element: this.dotsRoot },\r\n });\r\n const superDeactivateNextButton = (this as any).prevButton.deactivate.bind({\r\n element: (this as any).nextButton.element,\r\n unbindStartEvent: () => {\r\n // Could not figure out what this was supposed to do. So there is just console.log to prevent TS error.\r\n console.log(\"unbidStart\");\r\n },\r\n parent: { element: this.dotsRoot },\r\n });\r\n superDeactivatePrevButton();\r\n superDeactivateNextButton();\r\n }\r\n }\r\n\r\n // FIX iOS 15 issues - when dragging, page moves\r\n // see https://github.com/metafizzy/flickity/issues/1177#issuecomment-981194285\r\n // can be removed when flickity fixes https://github.com/metafizzy/flickity/issues/1196\r\n resize() {\r\n if (!(this as any).isAnimating) {\r\n super.resize();\r\n }\r\n }\r\n}\r\n"],"names":["CasinoAnalytics","pushGameImpressions","placement","window","dataLayer","push","action","impress","products","gamesWrapper","document","querySelector","games","Array","from","querySelectorAll","filter","g","parentElement","checkVisibility","forEach","game","position","indexOf","ariaHidden","product","id","dataset","gameCode","verticalCode","supplier","manufacturerName","event","pushRecommendationClick","recommendation","recommendationClick","label","pushGameFilterOpen","pushGameFilterClose","pushApplyFilter","currentFilter","allFilters","applyFilter","page","filters","pushRemoveFilter","removeFilter","pushJacpotsNavigationClick","direction","swipeSupplier","CasinoJackpotsNewsline","instance","this","instancePrivate","root","$","length","constructor","_defineProperty","Map","showJackpots","jackpots","showJackpotsInternal","watchJackpotsHandler","newJackpotsData","provider","displayedJackpots","includes","updateJackpotData","jackpotElement","renderJackpot","append","setTimeout","initFlickity","find","updateOrInitOdometer","x","j","removeJackpot","newJackpots","Object","values","CasinoJackpotType","toLowerCase","jackpotsReactive","unsubscribe","useJackpotManager","safeProvider","watchStopHandle","watch","jackpotsByProvider","immediate","providerUnsubscribers","set","element","carouselItems","ResponsiveUtils","breakpointUp","data","FlickityPatched","draggable","autoPlay","cellSelector","cellAlign","prevNextButtons","pageDots","wrapAround","percentPosition","contain","reposition","resize","jackpotType","jackpotData","findJackpotElement","jackpotPrizes","jackpotPrizeClass","i","eq","String","Math","floor","prize","_this$providerUnsubsc","remove","get","$element","odometer","Odometer","el","value","duration","format","render","update","carousel","closest","map","getJackpotImage","name","showName","join","jackpotName","WebpHelper","createPictureTag","getJackpotImageName","documentReady","CasinoGameFilter","debounce","saveState","init","setup","checkboxesVendors","checkboxAll","buttonShowAll","btnShowAllId","closeIcon","closeIconClass","settingsIcon","settingsIconClass","captionDataProperty","valueDataProperty","bindHandlers","parseUrl","initFilter","_this$checkboxesVendo","_this$checkboxAll","change","checkboxesChangeHandler","checkboxAllChangeHandler","addEventListener","e","popStateHandler","on","toogleFilter","scroll","urlFilter","prop","showAll","scrollToCards","isMobile","filterInitiliazed","toggleClass","selectedVendors","checkFilterValues","filterCards","checkboxes","$elem","cards","show","manufacturersString","UrlUtils","getQueryString","scrollToCardsInternal","_$$get","_$$get2","wrapperTopPosition","cardsWrapperId","offset","top","scrollToTop","pageYOffset","headerHeight","offsetHeight","menuHeight","scrollTopPosition","stop","animate","scrollTop","filterString","split","pushState","history","scrollRestoration","url","removeFilterQueryParameter","filterValue","item","encodeURIComponent","casinoFilter","replaceState","parameter","newUrl","location","href","replace","RegExp","_event$state","state","clickedVendor","target","isChecked","checked","checkedInputs","onVendorCheckboxesChange","debouncePushState","applied","addValuesFromCheckboxes","getFilteredVendors","filtered","toArray","v","inputsFiltered","preventDefault","manufacturers","isSazka","slice","card","hide","slideToggle","hasClass","PATH_ATTRS_MAP","SVG_ATTRS_MAP","viewBox","width","height","DS_ARROW_CLASS","BTN_CLASSES","defaultDotsOptions","rootEl","dots","theme","next","prev","nextIcon","prevIcon","useDsClasses","useCustomPrevNextButtons","useFlickityDots","options","carouselInstance","keys","config","assign","isInitActivated","indicatorClass","classList","add","initPrevButton","initDots","initNextButton","destroy","children","replaceChildren","initButton","btn","btnType","icon","setAttributes","setAttribute","carouselBtn","getElementFromInstance","arrow","svgElem","removeAttribute","elType","prevButton","holder","nextButton","attrs","key","childNodes","child","nodeType","Flickity","selector","_options$dotsOptions","super","dotsRoot","dotsOptions","cells","slide","style","pointerEvents","deactivatePageDots","getPrototypeOf","console","warn","superDeactivatePageDot","deactivate","bind","unbindStartEvent","log","parent","deactivatePrevNextButtons","superDeactivatePrevButton","superDeactivateNextButton","isAnimating"],"sourceRoot":""}