{"version":3,"file":"js/3828.ed16232e2e63f234.js","mappings":"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","sources":["webpack://@sazka/web/./js/app/registration/composables/use-keep-alive.ts","webpack://@sazka/web/../../libs/utils/media-preloader.ts","webpack://@sazka/web/../../libs/utils/string-utils.ts","webpack://@sazka/web/./js/app/casino/bonusomat/models/bonusomat-board-filter.ts","webpack://@sazka/web/./js/app/casino/bonusomat/components/board/bonusomat-board-filter.vue?e1f7","webpack://@sazka/web/./js/app/casino/bonusomat/components/board/bonusomat-board-filter.vue","webpack://@sazka/web/./js/app/casino/bonusomat/components/board/bonusomat-board-filter.vue?d036","webpack://@sazka/web/./js/app/casino/bonusomat/components/board/bonusomat-board-rules.vue?c93b","webpack://@sazka/web/./js/app/casino/bonusomat/components/board/bonusomat-board-rules.vue","webpack://@sazka/web/./js/app/casino/bonusomat/components/board/bonusomat-board-rules.vue?508d","webpack://@sazka/web/./js/app/casino/bonusomat/components/board/bonusomat-board-completed.vue?98ef","webpack://@sazka/web/./js/app/casino/bonusomat/components/board/bonusomat-board-completed.vue","webpack://@sazka/web/./js/app/casino/bonusomat/components/board/bonusomat-board-completed.vue?314f","webpack://@sazka/web/./js/app/casino/bonusomat/components/board/bonusomat-board.vue?e14f","webpack://@sazka/web/./js/app/casino/bonusomat/components/board/bonusomat-board.vue","webpack://@sazka/web/./js/app/casino/bonusomat/components/board/bonusomat-board.vue?4b68","webpack://@sazka/web/./js/app/casino/bonusomat/composables/use-bonusomat-win-tables.ts","webpack://@sazka/web/./js/app/casino/bonusomat/composables/use-bonusomat-raffle-countdown.ts","webpack://@sazka/web/./js/app/casino/bonusomat/components/raffle/bonusomat-raffle.vue?c4f5","webpack://@sazka/web/./js/app/casino/bonusomat/components/raffle/bonusomat-raffle.vue","webpack://@sazka/web/./js/app/casino/bonusomat/components/raffle/bonusomat-raffle.vue?adcf","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-spin-modal/bonusomat-automat-cylinder.vue","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-spin-modal/bonusomat-automat-cylinder.vue?2047","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-spin-modal/bonusomat-automat-cylinder.vue?7a62","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-spin-modal/bonusomat-spin-automat.vue?2f11","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-spin-modal/bonusomat-spin-automat.vue","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-spin-modal/bonusomat-spin-automat.vue?853d","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-spin-modal/bonusomat-spin-winner.vue?59bd","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-spin-modal/bonusomat-spin-winner.vue","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-spin-modal/bonusomat-spin-winner.vue?8b22","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-spin-modal/bonusomat-spin-buttons.vue?5e40","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-spin-modal/bonusomat-spin-buttons.vue","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-spin-modal/bonusomat-spin-buttons.vue?77e5","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-spin-modal/bonusomat-spin-footer.vue?aea3","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-spin-modal/bonusomat-spin-footer.vue","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-spin-modal/bonusomat-spin-footer.vue?35f9","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-spin-modal.vue?8528","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-spin-modal.vue","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-spin-modal.vue?40aa","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-slots.vue?a230","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-slots.vue","webpack://@sazka/web/./js/app/casino/bonusomat/components/slots/bonusomat-slots.vue?242c","webpack://@sazka/web/./js/app/casino/bonusomat/components/quests/bonusomat-quest-detail-games.vue?7450","webpack://@sazka/web/./js/app/casino/bonusomat/components/quests/bonusomat-quest-detail-games.vue","webpack://@sazka/web/./js/app/casino/bonusomat/components/quests/bonusomat-quest-detail-games.vue?8041","webpack://@sazka/web/./js/app/casino/bonusomat/components/quests/bonusomat-quest-detail.vue?0a24","webpack://@sazka/web/./js/app/casino/bonusomat/components/quests/bonusomat-quest-detail.vue","webpack://@sazka/web/./js/app/casino/bonusomat/components/quests/bonusomat-quest-detail.vue?32b1","webpack://@sazka/web/./js/app/casino/bonusomat/components/quests/bonusomat-quests-confirm-modal.vue?4288","webpack://@sazka/web/./js/app/casino/bonusomat/components/quests/bonusomat-quests-confirm-modal.vue","webpack://@sazka/web/./js/app/casino/bonusomat/components/quests/bonusomat-quests-confirm-modal.vue?9631","webpack://@sazka/web/./js/app/casino/bonusomat/components/quests/bonusomat-quests.vue?b000","webpack://@sazka/web/./js/app/casino/bonusomat/components/quests/bonusomat-quests.vue","webpack://@sazka/web/./js/app/casino/bonusomat/components/quests/bonusomat-quests.vue?0a20","webpack://@sazka/web/./js/app/casino/bonusomat/components/_bonusomat-main.vue?1258","webpack://@sazka/web/./js/app/casino/bonusomat/components/_bonusomat-main.vue","webpack://@sazka/web/./js/app/casino/bonusomat/components/_bonusomat-main.vue?62e0","webpack://@sazka/web/../../libs/design-system/src/transitions/transition-expand.vue?75b1","webpack://@sazka/web/../../libs/design-system/src/transitions/transition-expand.vue","webpack://@sazka/web/../../libs/design-system/src/transitions/transition-expand.vue?5168"],"sourcesContent":["/// Checks user clicks and key presses\r\n/// If user clicks and its 30 seconds from last keep alive call\r\n/// it will call keep alive\r\nexport const useKeepAlive = () => {\r\n let lastKeepAlive = Date.now();\r\n\r\n const handler = () => {\r\n if (Date.now() - lastKeepAlive < 30_000) return;\r\n ng_fw.keepAlive();\r\n lastKeepAlive = Date.now();\r\n };\r\n\r\n document.addEventListener(\"click\", handler, { passive: true });\r\n document.addEventListener(\"keypress\", handler, { passive: true });\r\n};\r\n","import { httpClient } from \"./http-clients/http-client\";\r\n\r\nexport namespace MediaPreloader {\r\n /**\r\n * Preloads an image asynchronously.\r\n *\r\n * @param {string} imageSrc - The URL of the image to preload.\r\n * @return {Promise<void>} A promise that resolves when the image is loaded successfully, or rejects if there is an error.\r\n */\r\n export function preloadImage(imageSrc: string): Promise<void> {\r\n return new Promise((resolve) => {\r\n const image = new Image();\r\n image.onload = () => resolve();\r\n image.onerror = () => {\r\n console.error(`Failed to load image ${imageSrc}.`);\r\n resolve();\r\n };\r\n image.src = imageSrc;\r\n });\r\n }\r\n\r\n /**\r\n * Preloads an array of images asynchronously.\r\n *\r\n * @param {string[]} imagesSrc - An array of image URLs to preload.\r\n * @return {Promise<number>} A promise that resolves with the number of images successfully loaded.\r\n */\r\n export async function preloadImages(imagesSrc: string[]): Promise<number> {\r\n return (await Promise.all(imagesSrc.map((imageSrc) => preloadImage(imageSrc)))).length;\r\n }\r\n\r\n /**\r\n * Asynchronously preloads a video from the provided URL and returns a URL object\r\n * representing the preloaded video.\r\n *\r\n * @param {string} videoUrl - The URL of the video to preload.\r\n * @return {Promise<string>} A Promise that resolves to a URL object representing the\r\n * preloaded video.\r\n */\r\n export async function preloadVideo(videoUrl: string): Promise<string> {\r\n const data = await httpClient.get(videoUrl, {\r\n responseType: \"blob\",\r\n });\r\n return URL.createObjectURL(data.data);\r\n }\r\n\r\n /**\r\n * Preloads an array of videos asynchronously.\r\n *\r\n * @param {string[]} videoUrls - An array of video URLs to preload.\r\n * @return {Promise<number>} A promise that resolves with the number of videos successfully loaded.\r\n */\r\n export async function preloadVideos(videoUrls: string[]): Promise<number> {\r\n return (await Promise.all(videoUrls.map((videoSrc) => preloadVideo(videoSrc)))).length;\r\n }\r\n}\r\n","export namespace StringUtils {\r\n /**\r\n * Formats a number by adding commas for thousands separator and truncating decimal places.\r\n *\r\n * @param {number} value - The number to format.\r\n * @param {boolean} useNbsp - Optional flag to use non-breaking space as a separator. Defaults to true.\r\n * @return {string} The formatted number with commas and optional non-breaking space separator.\r\n */\r\n export const formatNumber = (value: number, useNbsp = true): string => {\r\n if (typeof value !== \"number\") {\r\n return \"---\";\r\n }\r\n const ref = value.toFixed(2).split(\".\");\r\n let preComma = ref[0] || \"\";\r\n const postComma = ref[1];\r\n preComma = stringReverse((stringReverse(preComma).match(/.{1,3}/g) || [\"\"]).join(useNbsp ? \";psbn&\" : \" \"));\r\n\r\n return postComma != \"00\" ? preComma + \",\" + postComma : preComma;\r\n };\r\n\r\n /**\r\n * Formats a currency value by calling formatNumber and appending the currency symbol.\r\n *\r\n * @param {number} value - The value to format as currency.\r\n * @param {boolean} useNbsp - Optional flag to use non-breaking space as a separator. Defaults to true.\r\n * @return {string} The formatted currency value with the currency symbol.\r\n */\r\n export const formatCurrency = (value: number, useNbsp = true): string => {\r\n // this is also case for 0\r\n if (!value || isNaN(value)) {\r\n value = 0;\r\n }\r\n return `${formatNumber(value, useNbsp)}${useNbsp ? \" \" : \" \"}KÄ`;\r\n };\r\n\r\n /**\r\n * Limits the length of the text if it exceeds the specified limit by truncating and adding ellipsis.\r\n *\r\n * @param {string} text - The input text to limit.\r\n * @param {number} limit - The maximum length of the text before truncation. Defaults to 50.\r\n * @return {string} The text with limited length, potentially truncated with ellipsis.\r\n */\r\n export const limitTextLength = (text: string, limit = 50) => {\r\n if (text && text.length > limit) {\r\n return text.substring(0, limit - 3) + \"...\";\r\n }\r\n return text;\r\n };\r\n\r\n /**\r\n * Reverses the given string.\r\n *\r\n * @param {string} str - The string to be reversed.\r\n * @return {string} The reversed string.\r\n */\r\n export function stringReverse(str: string): string {\r\n return str.split(\"\").reverse().join(\"\");\r\n }\r\n\r\n /**\r\n * Converts given HTML text to plain text.\r\n *\r\n * @param {string} htmlText - The HTML text to be converted to plain text.\r\n * @return {string} The plain text.\r\n */\r\n export function getPlainTextFromHtml(htmlText: string): string {\r\n const tempDiv = document.createElement(\"div\");\r\n tempDiv.innerHTML = htmlText;\r\n return tempDiv.textContent || tempDiv.innerText || \"\";\r\n }\r\n\r\n /**\r\n * Sanitizes a string by removing HTML tags and replacing multiple whitespaces/newlines with a single space.\r\n */\r\n export function sanitizeString(input: string): string {\r\n return input\r\n .replace(/<[^>]*>/g, \"\") // Remove HTML tags\r\n .replace(/\\s+/g, \" \") // Replace multiple whitespaces/newlines with a single space\r\n .trim(); // Remove leading and trailing spaces\r\n }\r\n}\r\n","export enum BonusomatFilterValues {\r\n All = \"\",\r\n Uncompleted = \"uncompleted\",\r\n Completed = \"completed\",\r\n Repeating = \"repeating\",\r\n}\r\n\r\nexport type BoardFilterOption = {\r\n // value used for v-model\r\n value: BonusomatFilterValues;\r\n // displayed text\r\n text: string;\r\n};\r\n","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = { class: \"ds-segmented-picker bonusomat-board-filter\" }\nconst _hoisted_2 = { class: \"ds-segmented-picker__nav is-dark\" }\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = [\"data-title\"]\nconst _hoisted_5 = { class: \"ds-segmented-picker__text-inner\" }\n\nimport { computed } from \"vue\";\r\nimport { BonusomatDatalayer } from \"@/casino/bonusomat/utils/analytics/bonusomat-datalayer\";\r\nimport { BonusomatFilterValues, BoardFilterOption } from \"../../models/bonusomat-board-filter\";\r\nimport { useBonusomatPlayerData } from \"../../composables/use-bonusomat-player-data\";\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'bonusomat-board-filter',\n props: {\n modelValue: {},\n options: {}\n },\n emits: [\"update:modelValue\"],\n setup(__props: any, { emit: __emit }) {\n\r\nconst props = __props;\r\nconst emit = __emit;\r\n\r\nconst { bonusomatPlayerData, remainingSpinsCount } = useBonusomatPlayerData();\r\n\r\nconst getAnalyticsFilterItemLabel = (filterValue: string) => {\r\n switch (filterValue) {\r\n case \"\":\r\n return \"VÅ¡e\";\r\n case \"uncompleted\":\r\n return \"NesplnÄ›né\";\r\n case \"completed\":\r\n return \"SplnÄ›né\";\r\n case \"repeating\":\r\n return \"OpakujÃcà se\";\r\n default:\r\n return \"Unknown\";\r\n }\r\n};\r\n\r\nconst selectedValue = computed({\r\n get() {\r\n return props.modelValue;\r\n },\r\n set(newValue) {\r\n if (props.modelValue === newValue) {\r\n emit(\"update:modelValue\", BonusomatFilterValues.All);\r\n } else {\r\n emit(\"update:modelValue\", newValue);\r\n }\r\n BonusomatDatalayer.pushBoardFilterItemClick(\r\n getAnalyticsFilterItemLabel(newValue),\r\n bonusomatPlayerData.points,\r\n remainingSpinsCount.value\r\n );\r\n },\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"nav\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.options, (item, index) => {\n return (_openBlock(), _createElementBlock(\"button\", {\n class: _normalizeClass([\"ds-segmented-picker__toggle is-dark\", { 'is-active ': selectedValue.value === item.value }]),\n key: index,\n onClick: ($event: any) => (selectedValue.value = item.value)\n }, [\n _createElementVNode(\"span\", {\n class: \"ds-segmented-picker__text\",\n \"data-title\": item.text\n }, [\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(item.text), 1)\n ], 8, _hoisted_4)\n ], 10, _hoisted_3))\n }), 128))\n ])\n ]))\n}\n}\n\n})","<template>\r\n <div class=\"ds-segmented-picker bonusomat-board-filter\">\r\n <nav class=\"ds-segmented-picker__nav is-dark\">\r\n <button\r\n class=\"ds-segmented-picker__toggle is-dark\"\r\n :class=\"{ 'is-active ': selectedValue === item.value }\"\r\n v-for=\"(item, index) in options\"\r\n :key=\"index\"\r\n @click=\"selectedValue = item.value\"\r\n >\r\n <span class=\"ds-segmented-picker__text\" :data-title=\"item.text\">\r\n <span class=\"ds-segmented-picker__text-inner\">{{ item.text }}</span>\r\n </span>\r\n </button>\r\n </nav>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { computed } from \"vue\";\r\nimport { BonusomatDatalayer } from \"@/casino/bonusomat/utils/analytics/bonusomat-datalayer\";\r\nimport { BonusomatFilterValues, BoardFilterOption } from \"../../models/bonusomat-board-filter\";\r\nimport { useBonusomatPlayerData } from \"../../composables/use-bonusomat-player-data\";\r\n\r\nconst props = defineProps<{\r\n modelValue: string;\r\n options: BoardFilterOption[];\r\n}>();\r\nconst emit = defineEmits([\"update:modelValue\"]);\r\n\r\nconst { bonusomatPlayerData, remainingSpinsCount } = useBonusomatPlayerData();\r\n\r\nconst getAnalyticsFilterItemLabel = (filterValue: string) => {\r\n switch (filterValue) {\r\n case \"\":\r\n return \"VÅ¡e\";\r\n case \"uncompleted\":\r\n return \"NesplnÄ›né\";\r\n case \"completed\":\r\n return \"SplnÄ›né\";\r\n case \"repeating\":\r\n return \"OpakujÃcà se\";\r\n default:\r\n return \"Unknown\";\r\n }\r\n};\r\n\r\nconst selectedValue = computed({\r\n get() {\r\n return props.modelValue;\r\n },\r\n set(newValue) {\r\n if (props.modelValue === newValue) {\r\n emit(\"update:modelValue\", BonusomatFilterValues.All);\r\n } else {\r\n emit(\"update:modelValue\", newValue);\r\n }\r\n BonusomatDatalayer.pushBoardFilterItemClick(\r\n getAnalyticsFilterItemLabel(newValue),\r\n bonusomatPlayerData.points,\r\n remainingSpinsCount.value\r\n );\r\n },\r\n});\r\n</script>\r\n","import script from \"./bonusomat-board-filter.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./bonusomat-board-filter.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"bonusomat-board-rules\" }\nconst _hoisted_2 = [\"innerHTML\"]\n\nimport { StringUtils } from \"@sazka/utils/string-utils\";\r\nimport { computed } from \"vue\";\r\nimport MobileAppLink from \"@sazka/mobile-apps/components/mobile-app-link.vue\";\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'bonusomat-board-rules',\n props: {\n minBetAmount: {},\n rulesLik: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\nconst minBetAmountFormated = computed(() => StringUtils.formatCurrency(props.minBetAmount));\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _cache[1] || (_cache[1] = _createTextVNode(\" Minimálnà sázka u vÅ¡ech úkolů je \")),\n _createElementVNode(\"span\", {\n class: \"bonusomat-board-rules__amount\",\n innerHTML: minBetAmountFormated.value\n }, null, 8, _hoisted_2),\n _cache[2] || (_cache[2] = _createTextVNode(\". \")),\n _cache[3] || (_cache[3] = _createElementVNode(\"br\", null, null, -1)),\n _cache[4] || (_cache[4] = _createTextVNode(\" Kompletnà pravidla \")),\n _createVNode(MobileAppLink, {\n href: _ctx.rulesLik,\n \"event-name\": \"openPdf\",\n \"event-argument\": _ctx.rulesLik,\n \"open-in-new-tab\": true,\n class: \"bonusomat-board-rules__link\"\n }, {\n default: _withCtx(() => _cache[0] || (_cache[0] = [\n _createTextVNode(\"zde\")\n ])),\n _: 1\n }, 8, [\"href\", \"event-argument\"]),\n _cache[5] || (_cache[5] = _createTextVNode(\". \"))\n ]))\n}\n}\n\n})","<template>\r\n <div class=\"bonusomat-board-rules\">\r\n Minimálnà sázka u vÅ¡ech úkolů je\r\n <span class=\"bonusomat-board-rules__amount\" v-html=\"minBetAmountFormated\"></span>.\r\n <br />\r\n Kompletnà pravidla\r\n <MobileAppLink\r\n :href=\"rulesLik\"\r\n event-name=\"openPdf\"\r\n :event-argument=\"rulesLik\"\r\n :open-in-new-tab=\"true\"\r\n class=\"bonusomat-board-rules__link\"\r\n >zde</MobileAppLink\r\n >.\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { StringUtils } from \"@sazka/utils/string-utils\";\r\nimport { computed } from \"vue\";\r\nimport MobileAppLink from \"@sazka/mobile-apps/components/mobile-app-link.vue\";\r\n\r\nconst props = defineProps<{\r\n minBetAmount: number;\r\n rulesLik: string;\r\n}>();\r\n\r\nconst minBetAmountFormated = computed(() => StringUtils.formatCurrency(props.minBetAmount));\r\n</script>\r\n","import script from \"./bonusomat-board-rules.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./bonusomat-board-rules.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, Fragment as _Fragment, createStaticVNode as _createStaticVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"bonusomat-board-completed is-dark\" }\nconst _hoisted_2 = { class: \"ds-modal-dialog__body\" }\nconst _hoisted_3 = { class: \"ds-modal-dialog__wrap\" }\nconst _hoisted_4 = { class: \"ds-modal-dialog__container\" }\nconst _hoisted_5 = {\n key: 1,\n class: \"ds-top-slot-headline-subheadline\"\n}\nconst _hoisted_6 = {\n key: 0,\n class: \"bonusomat-board-completed__tickets\"\n}\nconst _hoisted_7 = { class: \"bonusomat-board-completed__ticket\" }\nconst _hoisted_8 = { class: \"bonusomat-board-completed__ticket__text-wrapper\" }\nconst _hoisted_9 = { class: \"bonusomat-board-completed__ticket__text bonusomat-board-completed__ticket__text--prize\" }\nconst _hoisted_10 = { class: \"bonusomat-board-completed__ticket__text bonusomat-board-completed__ticket__text--number\" }\nconst _hoisted_11 = { class: \"bonusomat-board-completed__ticket__text bonusomat-board-completed__ticket__text--date\" }\nconst _hoisted_12 = { class: \"bonusomat-board-completed__ticket__text--date-mobile\" }\nconst _hoisted_13 = { class: \"bonusomat-board-completed__ticket__text--date-desktop\" }\nconst _hoisted_14 = { class: \"bonusomat-board-completed__ticket__text--small\" }\nconst _hoisted_15 = { class: \"bonusomat-board-completed__ticket__number\" }\nconst _hoisted_16 = {\n key: 0,\n class: \"bonusomat-board-completed__ticket bonusomat-board-completed__ticket--second\"\n}\nconst _hoisted_17 = {\n key: 1,\n class: \"bonusomat-board-completed__ticket bonusomat-board-completed__ticket--third\"\n}\nconst _hoisted_18 = {\n key: 1,\n class: \"bonusomat-board-completed__no-ticket\"\n}\nconst _hoisted_19 = { class: \"bonusomat-board-completed__no-ticket__perex\" }\nconst _hoisted_20 = {\n key: 3,\n class: \"bonusomat-board-completed__no-ticket\"\n}\n\nimport { computed } from \"vue\";\r\n\r\nimport DsDivider from \"@sazka/design-system/src/divider/ds-divider.vue\";\r\nimport DsTopSlotHeadlineSubheadline from \"@sazka/design-system/src/top-slot/ds-top-subheadline.vue\";\r\nimport DsBottomSlotActionBar from \"@sazka/design-system/src/bottom-slot/ds-bottom-slot-action-bar.vue\";\r\nimport WebpImage from \"@sazka/design-system/src/image/webp-image.vue\";\r\n\r\nimport { bonImgUrl } from \"../../utils/image-src\";\r\nimport { DateTimeUtils } from \"@sazka/utils/date-time-utils\";\r\n\r\nimport useBonusomatData from \"../../composables/use-bonusomat-data\";\r\nimport { useBonusomatPlayerData } from \"../../composables/use-bonusomat-player-data\";\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'bonusomat-board-completed',\n setup(__props) {\n\r\nconst { isPlayerDataLoaded, remainingSpinsCount } = useBonusomatPlayerData();\r\nconst { raffleData, completeBoard } = useBonusomatData();\r\n\r\nconst isTicketClaimable = computed(() => remainingSpinsCount.value === 0);\r\n\r\nconst formatPrice = (price: number, separator: string) => {\r\n return price.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, separator);\r\n};\r\n\r\n// HEADLINE PROPS\r\nconst wordTiket2pad = computed(() => (raffleData.value.ticketsToWin > 1 ? \"tiketů\" : \"tiketu\"));\r\nconst wordTiket4pad = computed(() => (raffleData.value.ticketsToWin > 1 ? \"tikety\" : \"tiket\"));\r\nconst wordTiket7pad = computed(() => (raffleData.value.ticketsToWin > 1 ? \"tikety\" : \"tiketem\"));\r\nconst wordHe4pad = computed(() => (raffleData.value.ticketsToWin > 1 ? \"je\" : \"ho\"));\r\nconst headlineImage = computed(() =>\r\n isTicketClaimable.value ? bonImgUrl(\"board/mr-green\", \"png\") : bonImgUrl(\"board/ticket-waiting\", \"png\")\r\n);\r\nconst headlineImageAlt = computed(() => (isTicketClaimable.value ? \"Pan Zelený\" : \"Tiket do LosovaÄky\"));\r\nconst headlineHeadline = computed(() =>\r\n isTicketClaimable.value\r\n ? \"Gratulujeme! ZÃskáváte \" + wordTiket4pad.value + \" do LosovaÄky!\"\r\n : \"Už jste jen malý krůÄek od zÃskánà \" + wordTiket2pad.value + \" do LosovaÄky!\"\r\n);\r\nconst headlineSubheadline = computed(() =>\r\n isTicketClaimable.value\r\n ? \"Splnit 48 úkolů musela být pořádná fuÅ¡ka, ale teÄ máte Å¡anci v naÅ¡Ã LosovaÄce vyhrát \" +\r\n formatPrice(raffleData.value.mainWin, \" \") +\r\n \" KÄ!\"\r\n : null\r\n);\r\n\r\nconst formattedPrize = computed(() => {\r\n return formatPrice(raffleData.value.mainWin, \".\");\r\n});\r\n\r\nconst dateShort = computed(() => {\r\n return DateTimeUtils.formatDate(raffleData.value.drawDate, \"2-digit\");\r\n});\r\n\r\nconst date = computed(() => {\r\n return DateTimeUtils.formatDate(raffleData.value.drawDate);\r\n});\r\n\r\nconst time = computed(() => {\r\n return DateTimeUtils.formatTime(raffleData.value.drawDate);\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n (_unref(isPlayerDataLoaded))\n ? (_openBlock(), _createBlock(DsTopSlotHeadlineSubheadline, {\n key: 0,\n headline: headlineHeadline.value,\n subheadline: headlineSubheadline.value,\n \"image-src\": headlineImage.value,\n \"image-alt\": headlineImageAlt.value\n }, null, 8, [\"headline\", \"subheadline\", \"image-src\", \"image-alt\"]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _cache[0] || (_cache[0] = [\n _createElementVNode(\"div\", { class: \"bonusomat-placeholder__skeleton bonusomat-board-completed__title-image-skeleton ds-top-slot-headline-subheadline__image\" }, null, -1),\n _createElementVNode(\"div\", { class: \"bonusomat-placeholder__skeleton bonusomat-board-completed__title-skeleton\" }, null, -1)\n ]))),\n _createVNode(DsDivider),\n (_unref(isPlayerDataLoaded))\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 2 }, [\n (isTicketClaimable.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(WebpImage, {\n src: _unref(bonImgUrl)('board/ticket-vertical', 'png'),\n alt: \"\",\n \"css-class\": \"bonusomat-board-completed__ticket__image bonusomat-board-completed__ticket__image--vertical\"\n }, null, 8, [\"src\"]),\n _createVNode(WebpImage, {\n src: _unref(bonImgUrl)('board/ticket-horizontal', 'png'),\n alt: \"\",\n \"css-class\": \"bonusomat-board-completed__ticket__image bonusomat-board-completed__ticket__image--horizontal\"\n }, null, 8, [\"src\"]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"span\", null, _toDisplayString(formattedPrize.value), 1),\n _cache[1] || (_cache[1] = _createElementVNode(\"span\", { class: \"bonusomat-board-completed__ticket__text--small\" }, \" KÄ \", -1))\n ]),\n _createElementVNode(\"div\", _hoisted_10, _toDisplayString(_unref(raffleData).totalTickets + 1), 1),\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(dateShort.value) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(date.value) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(time.value), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_15, _toDisplayString(_unref(raffleData).totalTickets + 1), 1)\n ]),\n (_unref(raffleData).ticketsToWin >= 2)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [\n _createVNode(WebpImage, {\n src: _unref(bonImgUrl)('board/ticket-vertical', 'png'),\n alt: \"\",\n \"css-class\": \"bonusomat-board-completed__ticket__image bonusomat-board-completed__ticket__image--vertical\"\n }, null, 8, [\"src\"]),\n _createVNode(WebpImage, {\n src: _unref(bonImgUrl)('board/ticket-horizontal', 'png'),\n alt: \"\",\n \"css-class\": \"bonusomat-board-completed__ticket__image bonusomat-board-completed__ticket__image--horizontal\"\n }, null, 8, [\"src\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(raffleData).ticketsToWin >= 3)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createVNode(WebpImage, {\n src: _unref(bonImgUrl)('board/ticket-vertical', 'png'),\n alt: \"\",\n \"css-class\": \"bonusomat-board-completed__ticket__image bonusomat-board-completed__ticket__image--vertical\"\n }, null, 8, [\"src\"]),\n _createVNode(WebpImage, {\n src: _unref(bonImgUrl)('board/ticket-horizontal', 'png'),\n alt: \"\",\n \"css-class\": \"bonusomat-board-completed__ticket__image bonusomat-board-completed__ticket__image--horizontal\"\n }, null, 8, [\"src\"])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [\n _createVNode(WebpImage, {\n class: \"bonusomat-board-completed__no-ticket__image-wrapper\",\n \"css-class\": \"bonusomat-board-completed__no-ticket__image\",\n src: _unref(bonImgUrl)('board/mr-green-bonusomat', 'png'),\n alt: \"Pan Zelený s Bonusomatem\"\n }, null, 8, [\"src\"]),\n _createElementVNode(\"div\", null, [\n _cache[6] || (_cache[6] = _createElementVNode(\"h3\", { class: \"bonusomat-board-completed__no-ticket__title\" }, \" NejdÅ™Ãv si ale vytoÄte vÅ¡echny odmÄ›ny Bonusomatu. \", -1)),\n _createElementVNode(\"p\", _hoisted_19, [\n _createTextVNode(\" PÅ™evzetÃm \" + _toDisplayString(wordTiket2pad.value) + \" se celá hra resetuje, pÅ™evezmÄ›te si své odmÄ›ny, abyste o nÄ› nepÅ™iÅ¡el. \", 1),\n _cache[2] || (_cache[2] = _createElementVNode(\"br\", null, null, -1)),\n _cache[3] || (_cache[3] = _createElementVNode(\"br\", null, null, -1)),\n _createTextVNode(\" NáslednÄ› již nebude nic bránit tomu vás obdarovat \" + _toDisplayString(wordTiket7pad.value) + \" do LosovaÄky Bonusomatu. \", 1),\n _cache[4] || (_cache[4] = _createElementVNode(\"br\", null, null, -1)),\n _cache[5] || (_cache[5] = _createElementVNode(\"br\", null, null, -1)),\n _createTextVNode(\" ZasloužÃte si \" + _toDisplayString(wordHe4pad.value) + \". \", 1)\n ])\n ])\n ]))\n ], 64))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_20, _cache[7] || (_cache[7] = [\n _createStaticVNode(\"<div class=\\\"bonusomat-placeholder__skeleton bonusomat-board-completed__image-skeleton bonusomat-board-completed__no-ticket__image\\\"></div><div><div class=\\\"bonusomat-placeholder__skeleton bonusomat-board-completed__ticket-title-skeleton\\\"></div><div class=\\\"bonusomat-placeholder__skeleton bonusomat-board-completed__ticket-perex-skeleton\\\"></div><div class=\\\"bonusomat-placeholder__skeleton bonusomat-board-completed__ticket-perex-skeleton\\\"></div><br><div class=\\\"bonusomat-placeholder__skeleton bonusomat-board-completed__ticket-perex-skeleton\\\"></div><div class=\\\"bonusomat-placeholder__skeleton bonusomat-board-completed__ticket-perex-skeleton\\\"></div></div>\", 2)\n ]))),\n (isTicketClaimable.value && _unref(isPlayerDataLoaded))\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 4 }, [\n _createVNode(DsDivider),\n _createVNode(DsBottomSlotActionBar, {\n \"btn-submit-text\": 'PÅ™evzÃt ' + wordTiket4pad.value,\n \"button-submit-icon\": { iconRight: 'check' },\n \"has-btn-close\": false,\n theme: \"dark\",\n onSubmitDialog: _unref(completeBoard)\n }, null, 8, [\"btn-submit-text\", \"onSubmitDialog\"])\n ], 64))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ])\n ]))\n}\n}\n\n})","<template>\r\n <div class=\"bonusomat-board-completed is-dark\">\r\n <div class=\"ds-modal-dialog__body\">\r\n <div class=\"ds-modal-dialog__wrap\">\r\n <div class=\"ds-modal-dialog__container\">\r\n <DsTopSlotHeadlineSubheadline\r\n v-if=\"isPlayerDataLoaded\"\r\n :headline=\"headlineHeadline\"\r\n :subheadline=\"headlineSubheadline\"\r\n :image-src=\"headlineImage\"\r\n :image-alt=\"headlineImageAlt\"\r\n />\r\n <div class=\"ds-top-slot-headline-subheadline\" v-else>\r\n <div\r\n class=\"bonusomat-placeholder__skeleton bonusomat-board-completed__title-image-skeleton ds-top-slot-headline-subheadline__image\"\r\n ></div>\r\n <div class=\"bonusomat-placeholder__skeleton bonusomat-board-completed__title-skeleton\"></div>\r\n </div>\r\n <DsDivider />\r\n <template v-if=\"isPlayerDataLoaded\">\r\n <div class=\"bonusomat-board-completed__tickets\" v-if=\"isTicketClaimable\">\r\n <div class=\"bonusomat-board-completed__ticket\">\r\n <WebpImage\r\n :src=\"bonImgUrl('board/ticket-vertical', 'png')\"\r\n alt=\"\"\r\n css-class=\"bonusomat-board-completed__ticket__image bonusomat-board-completed__ticket__image--vertical\"\r\n />\r\n <WebpImage\r\n :src=\"bonImgUrl('board/ticket-horizontal', 'png')\"\r\n alt=\"\"\r\n css-class=\"bonusomat-board-completed__ticket__image bonusomat-board-completed__ticket__image--horizontal\"\r\n />\r\n <div class=\"bonusomat-board-completed__ticket__text-wrapper\">\r\n <div\r\n class=\"bonusomat-board-completed__ticket__text bonusomat-board-completed__ticket__text--prize\"\r\n >\r\n <span> {{ formattedPrize }} </span>\r\n <span class=\"bonusomat-board-completed__ticket__text--small\"> KÄ </span>\r\n </div>\r\n <div\r\n class=\"bonusomat-board-completed__ticket__text bonusomat-board-completed__ticket__text--number\"\r\n >\r\n {{ raffleData.totalTickets + 1 }}\r\n </div>\r\n <div\r\n class=\"bonusomat-board-completed__ticket__text bonusomat-board-completed__ticket__text--date\"\r\n >\r\n <span class=\"bonusomat-board-completed__ticket__text--date-mobile\"\r\n >{{ dateShort }} </span\r\n >\r\n <span class=\"bonusomat-board-completed__ticket__text--date-desktop\"\r\n >{{ date }} </span\r\n >\r\n <span class=\"bonusomat-board-completed__ticket__text--small\">{{ time }}</span>\r\n </div>\r\n </div>\r\n <div class=\"bonusomat-board-completed__ticket__number\">\r\n {{ raffleData.totalTickets + 1 }}\r\n </div>\r\n </div>\r\n <div\r\n class=\"bonusomat-board-completed__ticket bonusomat-board-completed__ticket--second\"\r\n v-if=\"raffleData.ticketsToWin >= 2\"\r\n >\r\n <WebpImage\r\n :src=\"bonImgUrl('board/ticket-vertical', 'png')\"\r\n alt=\"\"\r\n css-class=\"bonusomat-board-completed__ticket__image bonusomat-board-completed__ticket__image--vertical\"\r\n />\r\n <WebpImage\r\n :src=\"bonImgUrl('board/ticket-horizontal', 'png')\"\r\n alt=\"\"\r\n css-class=\"bonusomat-board-completed__ticket__image bonusomat-board-completed__ticket__image--horizontal\"\r\n />\r\n </div>\r\n <div\r\n class=\"bonusomat-board-completed__ticket bonusomat-board-completed__ticket--third\"\r\n v-if=\"raffleData.ticketsToWin >= 3\"\r\n >\r\n <WebpImage\r\n :src=\"bonImgUrl('board/ticket-vertical', 'png')\"\r\n alt=\"\"\r\n css-class=\"bonusomat-board-completed__ticket__image bonusomat-board-completed__ticket__image--vertical\"\r\n />\r\n <WebpImage\r\n :src=\"bonImgUrl('board/ticket-horizontal', 'png')\"\r\n alt=\"\"\r\n css-class=\"bonusomat-board-completed__ticket__image bonusomat-board-completed__ticket__image--horizontal\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"bonusomat-board-completed__no-ticket\" v-else>\r\n <WebpImage\r\n class=\"bonusomat-board-completed__no-ticket__image-wrapper\"\r\n css-class=\"bonusomat-board-completed__no-ticket__image\"\r\n :src=\"bonImgUrl('board/mr-green-bonusomat', 'png')\"\r\n alt=\"Pan Zelený s Bonusomatem\"\r\n />\r\n <div>\r\n <h3 class=\"bonusomat-board-completed__no-ticket__title\">\r\n NejdÅ™Ãv si ale vytoÄte vÅ¡echny odmÄ›ny Bonusomatu.\r\n </h3>\r\n <p class=\"bonusomat-board-completed__no-ticket__perex\">\r\n PÅ™evzetÃm {{ wordTiket2pad }} se celá hra resetuje, pÅ™evezmÄ›te si své odmÄ›ny, abyste\r\n o nÄ› nepÅ™iÅ¡el.\r\n <br />\r\n <br />\r\n NáslednÄ› již nebude nic bránit tomu vás obdarovat {{ wordTiket7pad }} do LosovaÄky\r\n Bonusomatu.\r\n <br />\r\n <br />\r\n ZasloužÃte si {{ wordHe4pad }}.\r\n </p>\r\n </div>\r\n </div>\r\n </template>\r\n <div class=\"bonusomat-board-completed__no-ticket\" v-else>\r\n <div\r\n class=\"bonusomat-placeholder__skeleton bonusomat-board-completed__image-skeleton bonusomat-board-completed__no-ticket__image\"\r\n ></div>\r\n <div>\r\n <div\r\n class=\"bonusomat-placeholder__skeleton bonusomat-board-completed__ticket-title-skeleton\"\r\n ></div>\r\n <div\r\n class=\"bonusomat-placeholder__skeleton bonusomat-board-completed__ticket-perex-skeleton\"\r\n ></div>\r\n <div\r\n class=\"bonusomat-placeholder__skeleton bonusomat-board-completed__ticket-perex-skeleton\"\r\n ></div>\r\n <br />\r\n <div\r\n class=\"bonusomat-placeholder__skeleton bonusomat-board-completed__ticket-perex-skeleton\"\r\n ></div>\r\n <div\r\n class=\"bonusomat-placeholder__skeleton bonusomat-board-completed__ticket-perex-skeleton\"\r\n ></div>\r\n </div>\r\n </div>\r\n <template v-if=\"isTicketClaimable && isPlayerDataLoaded\">\r\n <DsDivider />\r\n <DsBottomSlotActionBar\r\n :btn-submit-text=\"'PÅ™evzÃt ' + wordTiket4pad\"\r\n :button-submit-icon=\"{ iconRight: 'check' }\"\r\n :has-btn-close=\"false\"\r\n theme=\"dark\"\r\n @submit-dialog=\"completeBoard\"\r\n />\r\n </template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { computed } from \"vue\";\r\n\r\nimport DsDivider from \"@sazka/design-system/src/divider/ds-divider.vue\";\r\nimport DsTopSlotHeadlineSubheadline from \"@sazka/design-system/src/top-slot/ds-top-subheadline.vue\";\r\nimport DsBottomSlotActionBar from \"@sazka/design-system/src/bottom-slot/ds-bottom-slot-action-bar.vue\";\r\nimport WebpImage from \"@sazka/design-system/src/image/webp-image.vue\";\r\n\r\nimport { bonImgUrl } from \"../../utils/image-src\";\r\nimport { DateTimeUtils } from \"@sazka/utils/date-time-utils\";\r\n\r\nimport useBonusomatData from \"../../composables/use-bonusomat-data\";\r\nimport { useBonusomatPlayerData } from \"../../composables/use-bonusomat-player-data\";\r\n\r\nconst { isPlayerDataLoaded, remainingSpinsCount } = useBonusomatPlayerData();\r\nconst { raffleData, completeBoard } = useBonusomatData();\r\n\r\nconst isTicketClaimable = computed(() => remainingSpinsCount.value === 0);\r\n\r\nconst formatPrice = (price: number, separator: string) => {\r\n return price.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, separator);\r\n};\r\n\r\n// HEADLINE PROPS\r\nconst wordTiket2pad = computed(() => (raffleData.value.ticketsToWin > 1 ? \"tiketů\" : \"tiketu\"));\r\nconst wordTiket4pad = computed(() => (raffleData.value.ticketsToWin > 1 ? \"tikety\" : \"tiket\"));\r\nconst wordTiket7pad = computed(() => (raffleData.value.ticketsToWin > 1 ? \"tikety\" : \"tiketem\"));\r\nconst wordHe4pad = computed(() => (raffleData.value.ticketsToWin > 1 ? \"je\" : \"ho\"));\r\nconst headlineImage = computed(() =>\r\n isTicketClaimable.value ? bonImgUrl(\"board/mr-green\", \"png\") : bonImgUrl(\"board/ticket-waiting\", \"png\")\r\n);\r\nconst headlineImageAlt = computed(() => (isTicketClaimable.value ? \"Pan Zelený\" : \"Tiket do LosovaÄky\"));\r\nconst headlineHeadline = computed(() =>\r\n isTicketClaimable.value\r\n ? \"Gratulujeme! ZÃskáváte \" + wordTiket4pad.value + \" do LosovaÄky!\"\r\n : \"Už jste jen malý krůÄek od zÃskánà \" + wordTiket2pad.value + \" do LosovaÄky!\"\r\n);\r\nconst headlineSubheadline = computed(() =>\r\n isTicketClaimable.value\r\n ? \"Splnit 48 úkolů musela být pořádná fuÅ¡ka, ale teÄ máte Å¡anci v naÅ¡Ã LosovaÄce vyhrát \" +\r\n formatPrice(raffleData.value.mainWin, \" \") +\r\n \" KÄ!\"\r\n : null\r\n);\r\n\r\nconst formattedPrize = computed(() => {\r\n return formatPrice(raffleData.value.mainWin, \".\");\r\n});\r\n\r\nconst dateShort = computed(() => {\r\n return DateTimeUtils.formatDate(raffleData.value.drawDate, \"2-digit\");\r\n});\r\n\r\nconst date = computed(() => {\r\n return DateTimeUtils.formatDate(raffleData.value.drawDate);\r\n});\r\n\r\nconst time = computed(() => {\r\n return DateTimeUtils.formatTime(raffleData.value.drawDate);\r\n});\r\n</script>\r\n","import script from \"./bonusomat-board-completed.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./bonusomat-board-completed.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, renderList as _renderList, Fragment as _Fragment, TransitionGroup as _TransitionGroup, normalizeStyle as _normalizeStyle, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"bonusomat-board__notification\"\n}\nconst _hoisted_2 = { class: \"bonusomat-slots__action-bar bonusomat-slots__action-bar--inactive bonusomat-slots__action-bar--separated\" }\nconst _hoisted_3 = { class: \"bonusomat-slots__group\" }\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = {\n key: 1,\n class: \"bonusomat-placeholder\"\n}\nconst _hoisted_6 = { class: \"bonusomat-board__board\" }\nconst _hoisted_7 = [\"innerHTML\"]\nconst _hoisted_8 = {\n key: 0,\n class: \"bonusomat-board__modal__games\"\n}\nconst _hoisted_9 = [\"onClick\"]\nconst _hoisted_10 = { class: \"bonusomat-modal__footer\" }\nconst _hoisted_11 = { class: \"bonusomat-modal__footer__progress-wrapper\" }\nconst _hoisted_12 = { class: \"bonusomat-modal__footer__texts\" }\nconst _hoisted_13 = { class: \"bonusomat-modal__footer__state\" }\n\nimport { computed, ref, watch } from \"vue\";\r\n\r\nimport TypographyHeadline from \"@sazka/design-system/src/typography/typography-headline.vue\";\r\nimport BoardFilter from \"./bonusomat-board-filter.vue\";\r\nimport BoardTask from \"./bonusomat-board-task.vue\";\r\nimport BoardRules from \"./bonusomat-board-rules.vue\";\r\nimport BonusomatBoardCompleted from \"./bonusomat-board-completed.vue\";\r\nimport DsModalDialog from \"@sazka/design-system/src/modal-dialog/ds-modal-dialog.vue\";\r\nimport DsTopSlotHeadlineSubheadline from \"@sazka/design-system/src/top-slot/ds-top-subheadline.vue\";\r\nimport WebpImage from \"@sazka/design-system/src/image/webp-image.vue\";\r\nimport BonusomatProgress from \"../shared/bonusomat-progress.vue\";\r\nimport DsButton from \"@sazka/design-system/src/button/ds-button.vue\";\r\nimport DsIcon from \"@sazka/design-system/src/icon/ds-icon.vue\";\r\nimport TransitionExpand from \"@sazka/design-system/src/transitions/transition-expand.vue\";\r\n\r\nimport { BoardFilterOption, BonusomatFilterValues } from \"../../models/bonusomat-board-filter\";\r\nimport { BonusomatBoardTask } from \"../../models/bonusomat-board\";\r\n\r\nimport useBonusomatData from \"../../composables/use-bonusomat-data\";\r\n\r\nimport { isMobileApp, triggerMobileAppEvent } from \"@sazka/mobile-apps/mobile-app-integration\";\r\nimport { loadCasinoModule } from \"@/casino/ng-casino/use-ng-casino\";\r\nimport { useBonusomatPlayerData } from \"../../composables/use-bonusomat-player-data\";\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'bonusomat-board',\n setup(__props) {\n\r\nconst { isPlayerDataLoaded, remainingSpinsCount } = useBonusomatPlayerData();\r\nconst {\r\n isBoardDataLoaded,\r\n isRaffleDataLoaded,\r\n hasActiveQuest,\r\n boardData,\r\n gamesData,\r\n deactivateQuest,\r\n openGame,\r\n loadGamesData,\r\n} = useBonusomatData();\r\n\r\nconst showActiveQuestBanner = computed(() => {\r\n return remainingSpinsCount.value > 0 && hasActiveQuest.value;\r\n});\r\n\r\nconst isBoardCompleted = computed(() => boardData.value?.completed);\r\n\r\nconst filterValue = ref<BonusomatFilterValues>(BonusomatFilterValues.All);\r\nconst filterOptions: BoardFilterOption[] = [\r\n {\r\n value: BonusomatFilterValues.All,\r\n text: \"VÅ¡e\",\r\n },\r\n {\r\n value: BonusomatFilterValues.Uncompleted,\r\n text: \"NesplnÄ›né\",\r\n },\r\n {\r\n value: BonusomatFilterValues.Completed,\r\n text: \"SplnÄ›né\",\r\n },\r\n {\r\n value: BonusomatFilterValues.Repeating,\r\n text: \"OpakujÃcà se\",\r\n },\r\n];\r\n\r\nconst tasksFiltered = computed<BonusomatBoardTask[]>(() => {\r\n return boardData.value?.tasks.filter(({ completed, repeatable }) => {\r\n if (filterValue.value === BonusomatFilterValues.Completed) return completed;\r\n if (filterValue.value === BonusomatFilterValues.Repeating) return repeatable;\r\n if (filterValue.value === BonusomatFilterValues.Uncompleted) return !completed;\r\n if (filterValue.value === BonusomatFilterValues.All) return true;\r\n });\r\n});\r\n\r\n// used to reload progress components on certain actions (fixes issue on IOS where progress animation doesn't work reliably by itself)\r\nconst progressLoadCounter = ref(0);\r\n\r\nconst isModalOpen = ref(false);\r\nconst activeTask = ref<BonusomatBoardTask>(null);\r\nconst activeTaskGames = computed(() => gamesData.value.filter((game) => activeTask.value?.games?.includes(game.id)));\r\n\r\nconst modalFooterText = computed(() => {\r\n const taskProgress = activeTask.value?.progress;\r\n return taskProgress === 100\r\n ? \"DokonÄeno\"\r\n : `Zbývá ${100 - (taskProgress > 99 ? Math.floor(taskProgress) : Math.round(taskProgress))} %`;\r\n});\r\n\r\nconst openModal = (task: BonusomatBoardTask) => {\r\n isModalOpen.value = true;\r\n\r\n if (!gamesData.value?.length) {\r\n loadGamesData();\r\n }\r\n\r\n activeTask.value = task;\r\n};\r\n\r\nwatch(filterValue, async () => {\r\n setTimeout(() => {\r\n progressLoadCounter.value++;\r\n }, 500);\r\n});\r\n\r\nconst closedModal = () => {\r\n setTimeout(() => {\r\n progressLoadCounter.value++;\r\n }, 200);\r\n\r\n activeTask.value = null;\r\n};\r\n\r\nconst openGameClick = async (id: string) => {\r\n openGame(id);\r\n\r\n activeTask.value = null;\r\n isModalOpen.value = false;\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"section\", {\n class: _normalizeClass([\"bonusomat-board\", {\r\n 'bonusomat-board--disabled': _unref(hasActiveQuest),\r\n }])\n }, [\n _createVNode(TransitionExpand, null, {\n default: _withCtx(() => [\n (showActiveQuestBanner.value && !isBoardCompleted.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(WebpImage, {\n src: \"/frontend/web/img/casino/bonusomat/automat/automat.png\",\n alt: \"Bonusomat\",\n class: \"bonusomat-slots__bar-image\"\n }),\n _createVNode(DsIcon, {\n name: \"b-mat\",\n class: \"bonusomat-slots__bar-icon\"\n }),\n _createElementVNode(\"div\", _hoisted_3, [\n _cache[4] || (_cache[4] = _createElementVNode(\"div\", { class: \"bonusomat-slots__text\" }, [\n _createTextVNode(\" BÄ›hem hranà Questu \"),\n _createElementVNode(\"span\", { class: \"bonusomat-slots__text--thin\" }, \"se neplnà úkoly Bonusomatu\")\n ], -1)),\n _createVNode(DsButton, {\n size: \"sm\",\n type: \"error\",\n \"icon-right\": \"cross\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_unref(deactivateQuest)('main')))\n }, {\n default: _withCtx(() => _cache[3] || (_cache[3] = [\n _createTextVNode(\" UkonÄit Quest \")\n ])),\n _: 1\n })\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n (_unref(isBoardDataLoaded) && _unref(isPlayerDataLoaded) && _unref(isRaffleDataLoaded))\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (isBoardCompleted.value)\n ? (_openBlock(), _createBlock(BonusomatBoardCompleted, { key: 0 }))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createVNode(TypographyHeadline, {\n type: \"section\",\n theme: \"dark\",\n class: \"bonusomat-board__filter\"\n }, {\n default: _withCtx(() => [\n _cache[5] || (_cache[5] = _createTextVNode(\" Úkoly \")),\n _createVNode(BoardFilter, {\n modelValue: filterValue.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((filterValue).value = $event)),\n options: filterOptions\n }, null, 8, [\"modelValue\"])\n ]),\n _: 1\n }),\n (_unref(boardData)?.tasks.length)\n ? (_openBlock(), _createBlock(_TransitionGroup, {\n key: 0,\n name: \"board-task\",\n tag: \"div\",\n class: \"bonusomat-board__board\"\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(tasksFiltered.value, (task) => {\n return (_openBlock(), _createBlock(BoardTask, {\n \"progress-load-counter\": task.position + '-' + progressLoadCounter.value.toString(),\n key: task.position,\n name: task.name,\n icon: task.icon,\n repeatable: task.repeatable,\n completed: task.completed,\n progress: task.progress,\n onClick: ($event: any) => (openModal(task)),\n \"is-active\": task.position === activeTask.value?.position\n }, null, 8, [\"progress-load-counter\", \"name\", \"icon\", \"repeatable\", \"completed\", \"progress\", \"onClick\", \"is-active\"]))\n }), 128)),\n (tasksFiltered.value.length === 0 && filterValue.value === _unref(BonusomatFilterValues).Completed)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, \" ZatÃm zde nemáte žádné splnÄ›né úkoly, tak neváhejte a pusÅ¥te se do akce. \"))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _cache[6] || (_cache[6] = [\n _createElementVNode(\"div\", { class: \"bonusomat-placeholder__text\" }, \"PÅ™i naÄÃtánà úkolů nastala chyba\", -1),\n _createElementVNode(\"div\", { class: \"bonusomat-placeholder__subtext\" }, \"Zkuste to prosÃm pozdÄ›ji\", -1)\n ]))),\n _createVNode(BoardRules, {\n \"min-bet-amount\": _unref(boardData)?.minimumBetAmount,\n \"rules-lik\": _unref(boardData)?.rules\n }, null, 8, [\"min-bet-amount\", \"rules-lik\"])\n ], 64))\n ], 64))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createVNode(TypographyHeadline, {\n type: \"section\",\n theme: \"dark\",\n class: \"bonusomat-board__filter\"\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [\n _createTextVNode(\"Úkoly\")\n ])),\n _: 1\n }),\n _createElementVNode(\"div\", _hoisted_6, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(45, (index) => {\n return _createVNode(BoardTask, {\n key: index,\n class: \"bonusomat-placeholder__skeleton\",\n style: _normalizeStyle({\r\n animationDelay: `${index * 0.01}s`,\r\n })\n }, null, 8, [\"style\"])\n }), 64))\n ])\n ], 64)),\n _createVNode(DsModalDialog, {\n modelValue: isModalOpen.value,\n \"onUpdate:modelValue\": [\n _cache[2] || (_cache[2] = ($event: any) => ((isModalOpen).value = $event)),\n closedModal\n ],\n \"css-class\": \"bonusomat-board__modal bonusomat-modal\",\n theme: \"dark\",\n \"top-divider-visible\": activeTaskGames.value?.length > 0,\n \"bottom-divider-visible\": false,\n \"content-scrollable\": \"\"\n }, {\n top: _withCtx(() => [\n _createVNode(DsTopSlotHeadlineSubheadline, {\n headline: activeTask.value?.name\n }, null, 8, [\"headline\"]),\n _createElementVNode(\"p\", {\n class: \"bonusomat-modal__description\",\n innerHTML: activeTask.value?.description\n }, null, 8, _hoisted_7)\n ]),\n content: _withCtx(() => [\n (activeTaskGames.value?.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(activeTaskGames.value, (game) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"bonusomat-board__modal__game\",\n key: game.id,\n onClick: ($event: any) => (openGameClick(game.id))\n }, [\n _createVNode(WebpImage, {\n src: game.icon,\n alt: `Ikona hry ${game.name}`,\n \"css-class\": \"bonusomat-board__modal__game__img\"\n }, null, 8, [\"src\", \"alt\"]),\n _createTextVNode(\" \" + _toDisplayString(game.name), 1)\n ], 8, _hoisted_9))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n bottom: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"div\", _hoisted_11, [\n _createVNode(BonusomatProgress, {\n \"client-id\": \"board-task-detail\",\n progress: activeTask.value?.progress,\n \"show-percentage-number\": \"\"\n }, null, 8, [\"progress\"]),\n _createElementVNode(\"div\", _hoisted_12, [\n _createElementVNode(\"div\", _hoisted_13, _toDisplayString(modalFooterText.value), 1)\n ])\n ])\n ])\n ]),\n _: 1\n }, 8, [\"modelValue\", \"top-divider-visible\"])\n ], 2))\n}\n}\n\n})","<template>\r\n <section\r\n class=\"bonusomat-board\"\r\n :class=\"{\r\n 'bonusomat-board--disabled': hasActiveQuest,\r\n }\"\r\n >\r\n <TransitionExpand>\r\n <div class=\"bonusomat-board__notification\" v-if=\"showActiveQuestBanner && !isBoardCompleted\">\r\n <div\r\n class=\"bonusomat-slots__action-bar bonusomat-slots__action-bar--inactive bonusomat-slots__action-bar--separated\"\r\n >\r\n <WebpImage\r\n src=\"/frontend/web/img/casino/bonusomat/automat/automat.png\"\r\n alt=\"Bonusomat\"\r\n class=\"bonusomat-slots__bar-image\"\r\n />\r\n <DsIcon name=\"b-mat\" class=\"bonusomat-slots__bar-icon\" />\r\n <div class=\"bonusomat-slots__group\">\r\n <div class=\"bonusomat-slots__text\">\r\n BÄ›hem hranà Questu\r\n <span class=\"bonusomat-slots__text--thin\">se neplnà úkoly Bonusomatu</span>\r\n </div>\r\n <DsButton size=\"sm\" type=\"error\" icon-right=\"cross\" @click=\"deactivateQuest('main')\">\r\n UkonÄit Quest\r\n </DsButton>\r\n </div>\r\n </div>\r\n </div>\r\n </TransitionExpand>\r\n <template v-if=\"isBoardDataLoaded && isPlayerDataLoaded && isRaffleDataLoaded\">\r\n <BonusomatBoardCompleted v-if=\"isBoardCompleted\" />\r\n <template v-else>\r\n <TypographyHeadline type=\"section\" theme=\"dark\" class=\"bonusomat-board__filter\">\r\n Úkoly\r\n <BoardFilter v-model=\"filterValue\" :options=\"filterOptions\" />\r\n </TypographyHeadline>\r\n <TransitionGroup\r\n name=\"board-task\"\r\n tag=\"div\"\r\n class=\"bonusomat-board__board\"\r\n v-if=\"boardData?.tasks.length\"\r\n >\r\n <BoardTask\r\n v-for=\"task in tasksFiltered\"\r\n :progress-load-counter=\"task.position + '-' + progressLoadCounter.toString()\"\r\n :key=\"task.position\"\r\n :name=\"task.name\"\r\n :icon=\"task.icon\"\r\n :repeatable=\"task.repeatable\"\r\n :completed=\"task.completed\"\r\n :progress=\"task.progress\"\r\n @click=\"openModal(task)\"\r\n :is-active=\"task.position === activeTask?.position\"\r\n />\r\n <span v-if=\"tasksFiltered.length === 0 && filterValue === BonusomatFilterValues.Completed\">\r\n ZatÃm zde nemáte žádné splnÄ›né úkoly, tak neváhejte a pusÅ¥te se do akce.\r\n </span>\r\n </TransitionGroup>\r\n <div class=\"bonusomat-placeholder\" v-else>\r\n <div class=\"bonusomat-placeholder__text\">PÅ™i naÄÃtánà úkolů nastala chyba</div>\r\n <div class=\"bonusomat-placeholder__subtext\">Zkuste to prosÃm pozdÄ›ji</div>\r\n </div>\r\n <BoardRules :min-bet-amount=\"boardData?.minimumBetAmount\" :rules-lik=\"boardData?.rules\" />\r\n </template>\r\n </template>\r\n <template v-else>\r\n <TypographyHeadline type=\"section\" theme=\"dark\" class=\"bonusomat-board__filter\">Úkoly</TypographyHeadline>\r\n <div class=\"bonusomat-board__board\">\r\n <BoardTask\r\n v-for=\"index in 45\"\r\n :key=\"index\"\r\n class=\"bonusomat-placeholder__skeleton\"\r\n :style=\"{\r\n animationDelay: `${index * 0.01}s`,\r\n }\"\r\n />\r\n </div>\r\n </template>\r\n <DsModalDialog\r\n v-model=\"isModalOpen\"\r\n @update:model-value=\"closedModal\"\r\n css-class=\"bonusomat-board__modal bonusomat-modal\"\r\n theme=\"dark\"\r\n :top-divider-visible=\"activeTaskGames?.length > 0\"\r\n :bottom-divider-visible=\"false\"\r\n content-scrollable\r\n >\r\n <template #top>\r\n <DsTopSlotHeadlineSubheadline :headline=\"activeTask?.name\" />\r\n <p class=\"bonusomat-modal__description\" v-html=\"activeTask?.description\"></p>\r\n </template>\r\n <template #content>\r\n <div class=\"bonusomat-board__modal__games\" v-if=\"activeTaskGames?.length\">\r\n <div\r\n class=\"bonusomat-board__modal__game\"\r\n v-for=\"game in activeTaskGames\"\r\n :key=\"game.id\"\r\n @click=\"openGameClick(game.id)\"\r\n >\r\n <WebpImage\r\n :src=\"game.icon\"\r\n :alt=\"`Ikona hry ${game.name}`\"\r\n css-class=\"bonusomat-board__modal__game__img\"\r\n />\r\n {{ game.name }}\r\n </div>\r\n </div>\r\n </template>\r\n <template #bottom>\r\n <div class=\"bonusomat-modal__footer\">\r\n <div class=\"bonusomat-modal__footer__progress-wrapper\">\r\n <BonusomatProgress\r\n client-id=\"board-task-detail\"\r\n :progress=\"activeTask?.progress\"\r\n show-percentage-number\r\n />\r\n <div class=\"bonusomat-modal__footer__texts\">\r\n <div class=\"bonusomat-modal__footer__state\">{{ modalFooterText }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </template>\r\n </DsModalDialog>\r\n </section>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { computed, ref, watch } from \"vue\";\r\n\r\nimport TypographyHeadline from \"@sazka/design-system/src/typography/typography-headline.vue\";\r\nimport BoardFilter from \"./bonusomat-board-filter.vue\";\r\nimport BoardTask from \"./bonusomat-board-task.vue\";\r\nimport BoardRules from \"./bonusomat-board-rules.vue\";\r\nimport BonusomatBoardCompleted from \"./bonusomat-board-completed.vue\";\r\nimport DsModalDialog from \"@sazka/design-system/src/modal-dialog/ds-modal-dialog.vue\";\r\nimport DsTopSlotHeadlineSubheadline from \"@sazka/design-system/src/top-slot/ds-top-subheadline.vue\";\r\nimport WebpImage from \"@sazka/design-system/src/image/webp-image.vue\";\r\nimport BonusomatProgress from \"../shared/bonusomat-progress.vue\";\r\nimport DsButton from \"@sazka/design-system/src/button/ds-button.vue\";\r\nimport DsIcon from \"@sazka/design-system/src/icon/ds-icon.vue\";\r\nimport TransitionExpand from \"@sazka/design-system/src/transitions/transition-expand.vue\";\r\n\r\nimport { BoardFilterOption, BonusomatFilterValues } from \"../../models/bonusomat-board-filter\";\r\nimport { BonusomatBoardTask } from \"../../models/bonusomat-board\";\r\n\r\nimport useBonusomatData from \"../../composables/use-bonusomat-data\";\r\n\r\nimport { isMobileApp, triggerMobileAppEvent } from \"@sazka/mobile-apps/mobile-app-integration\";\r\nimport { loadCasinoModule } from \"@/casino/ng-casino/use-ng-casino\";\r\nimport { useBonusomatPlayerData } from \"../../composables/use-bonusomat-player-data\";\r\n\r\nconst { isPlayerDataLoaded, remainingSpinsCount } = useBonusomatPlayerData();\r\nconst {\r\n isBoardDataLoaded,\r\n isRaffleDataLoaded,\r\n hasActiveQuest,\r\n boardData,\r\n gamesData,\r\n deactivateQuest,\r\n openGame,\r\n loadGamesData,\r\n} = useBonusomatData();\r\n\r\nconst showActiveQuestBanner = computed(() => {\r\n return remainingSpinsCount.value > 0 && hasActiveQuest.value;\r\n});\r\n\r\nconst isBoardCompleted = computed(() => boardData.value?.completed);\r\n\r\nconst filterValue = ref<BonusomatFilterValues>(BonusomatFilterValues.All);\r\nconst filterOptions: BoardFilterOption[] = [\r\n {\r\n value: BonusomatFilterValues.All,\r\n text: \"VÅ¡e\",\r\n },\r\n {\r\n value: BonusomatFilterValues.Uncompleted,\r\n text: \"NesplnÄ›né\",\r\n },\r\n {\r\n value: BonusomatFilterValues.Completed,\r\n text: \"SplnÄ›né\",\r\n },\r\n {\r\n value: BonusomatFilterValues.Repeating,\r\n text: \"OpakujÃcà se\",\r\n },\r\n];\r\n\r\nconst tasksFiltered = computed<BonusomatBoardTask[]>(() => {\r\n return boardData.value?.tasks.filter(({ completed, repeatable }) => {\r\n if (filterValue.value === BonusomatFilterValues.Completed) return completed;\r\n if (filterValue.value === BonusomatFilterValues.Repeating) return repeatable;\r\n if (filterValue.value === BonusomatFilterValues.Uncompleted) return !completed;\r\n if (filterValue.value === BonusomatFilterValues.All) return true;\r\n });\r\n});\r\n\r\n// used to reload progress components on certain actions (fixes issue on IOS where progress animation doesn't work reliably by itself)\r\nconst progressLoadCounter = ref(0);\r\n\r\nconst isModalOpen = ref(false);\r\nconst activeTask = ref<BonusomatBoardTask>(null);\r\nconst activeTaskGames = computed(() => gamesData.value.filter((game) => activeTask.value?.games?.includes(game.id)));\r\n\r\nconst modalFooterText = computed(() => {\r\n const taskProgress = activeTask.value?.progress;\r\n return taskProgress === 100\r\n ? \"DokonÄeno\"\r\n : `Zbývá ${100 - (taskProgress > 99 ? Math.floor(taskProgress) : Math.round(taskProgress))} %`;\r\n});\r\n\r\nconst openModal = (task: BonusomatBoardTask) => {\r\n isModalOpen.value = true;\r\n\r\n if (!gamesData.value?.length) {\r\n loadGamesData();\r\n }\r\n\r\n activeTask.value = task;\r\n};\r\n\r\nwatch(filterValue, async () => {\r\n setTimeout(() => {\r\n progressLoadCounter.value++;\r\n }, 500);\r\n});\r\n\r\nconst closedModal = () => {\r\n setTimeout(() => {\r\n progressLoadCounter.value++;\r\n }, 200);\r\n\r\n activeTask.value = null;\r\n};\r\n\r\nconst openGameClick = async (id: string) => {\r\n openGame(id);\r\n\r\n activeTask.value = null;\r\n isModalOpen.value = false;\r\n};\r\n</script>\r\n","import script from \"./bonusomat-board.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./bonusomat-board.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { computed, ref } from \"vue\";\r\nimport { useNgSession } from \"@sazka/ng/ng-session\";\r\nimport { RaffleWinTable } from \"../models/raffle-win-table\";\r\nimport { SlotsWinTable } from \"../models/slots-win-table\";\r\nimport { fetchRaffleWinTable, fetchSlotsWinTable } from \"../api/bonusomat-player-data-api\";\r\n\r\nconst { session } = useNgSession();\r\nconst playerId = computed(() => session.value?.PlayerID);\r\n\r\nconst slotsWinTable = ref<SlotsWinTable>(null);\r\nconst raffleWinTable = ref<RaffleWinTable>(null);\r\n\r\nasync function loadSlotsWinTable() {\r\n slotsWinTable.value = await fetchSlotsWinTable(playerId.value);\r\n}\r\n\r\nasync function reloadlotsWinTable() {\r\n if (!slotsWinTable.value) return;\r\n\r\n await loadRaffleWinTable();\r\n}\r\n\r\nasync function loadRaffleWinTable() {\r\n raffleWinTable.value = await fetchRaffleWinTable(playerId.value);\r\n}\r\n\r\nasync function reloadRaffleWinTable() {\r\n if (!raffleWinTable.value) return;\r\n\r\n await loadRaffleWinTable();\r\n}\r\n\r\nexport default function useBonusomatWinTables() {\r\n return {\r\n raffleWinTable,\r\n slotsWinTable,\r\n\r\n loadSlotsWinTable,\r\n reloadlotsWinTable,\r\n loadRaffleWinTable,\r\n reloadRaffleWinTable,\r\n };\r\n}\r\n","import { ref, watch, computed } from \"vue\";\r\n\r\nimport useBonusomatData from \"./use-bonusomat-data\";\r\nimport useBonusomatWinTables from \"./use-bonusomat-win-tables\";\r\nimport { useNgSession } from \"@sazka/ng/ng-session\";\r\n\r\nconst { isLoggedIn, session } = useNgSession();\r\n\r\nconst { raffleData, loadRaffleData, loadTotalTickets } = useBonusomatData();\r\n\r\nconst { reloadRaffleWinTable } = useBonusomatWinTables();\r\n\r\nconst playerId = computed(() => session.value?.PlayerID);\r\n\r\nlet intervalTotalTicketsHandle = 0;\r\nasync function intervalTotalTicketsHandler() {\r\n if (playerId.value) {\r\n await loadTotalTickets();\r\n } else if (intervalTotalTicketsHandle) {\r\n clearInterval(intervalTotalTicketsHandle);\r\n }\r\n}\r\n\r\nasync function initTotalTicketsInterval() {\r\n if (intervalTotalTicketsHandle) {\r\n clearInterval(intervalTotalTicketsHandle);\r\n }\r\n\r\n intervalTotalTicketsHandle = window.setInterval(() => intervalTotalTicketsHandler(), 60 * 1000);\r\n}\r\n\r\nconst raffleRemainingSeconds = ref(0);\r\nlet intervalDrawRemainingHandle = 0;\r\nasync function intervalDrawRemainingHandler() {\r\n if (raffleRemainingSeconds.value > 0) {\r\n raffleRemainingSeconds.value--;\r\n } else {\r\n if (raffleData.value) {\r\n raffleData.value.drawRemainingSeconds = 0;\r\n }\r\n\r\n if (intervalDrawRemainingHandle) {\r\n clearInterval(intervalDrawRemainingHandle);\r\n }\r\n\r\n await loadRaffleData();\r\n await reloadRaffleWinTable();\r\n }\r\n}\r\n\r\nasync function initDrawRemainingInterval() {\r\n if (intervalDrawRemainingHandle) {\r\n clearInterval(intervalDrawRemainingHandle);\r\n }\r\n\r\n intervalDrawRemainingHandle = window.setInterval(() => intervalDrawRemainingHandler(), 1000);\r\n}\r\n\r\nfunction initCountdowns(raffleRemaining: number) {\r\n raffleRemainingSeconds.value = raffleRemaining;\r\n\r\n initTotalTicketsInterval();\r\n initDrawRemainingInterval();\r\n}\r\n\r\nwatch(\r\n () => raffleData.value?.drawRemainingSeconds,\r\n (newRaffleRemainingSeconds) => {\r\n if (newRaffleRemainingSeconds) {\r\n initCountdowns(newRaffleRemainingSeconds);\r\n }\r\n },\r\n { immediate: true }\r\n);\r\n\r\nwatch(isLoggedIn, (newVal) => {\r\n if (!newVal) {\r\n clearInterval(intervalTotalTicketsHandle);\r\n clearInterval(intervalDrawRemainingHandle);\r\n }\r\n});\r\n\r\nexport default function useBonusomatDrawCountdown() {\r\n return {\r\n raffleRemainingSeconds,\r\n };\r\n}\r\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = { class: \"bonusomat-raffle\" }\nconst _hoisted_2 = { class: \"bonusomat-raffle__section-bottom\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"bonusomat-raffle__counter-box bonusomat-raffle__counter-box--failed\"\n}\nconst _hoisted_4 = { class: \"bonusomat-raffle__counter-box bonusomat-raffle__counter-box--highlighted\" }\nconst _hoisted_5 = { class: \"bonusomat-raffle__counter-box\" }\nconst _hoisted_6 = { class: \"bonusomat-raffle__counter-box\" }\n\nimport { ref } from \"vue\";\r\n\r\nimport WebpImage from \"@sazka/design-system/src/image/webp-image.vue\";\r\nimport TypographyHeadline from \"@sazka/design-system/src/typography/typography-headline.vue\";\r\nimport DsButton from \"@sazka/design-system/src/button/ds-button.vue\";\r\nimport { BonusomatDatalayer } from \"@/casino/bonusomat/utils/analytics/bonusomat-datalayer\";\r\nimport TimeCounter from \"./time-counter.vue\";\r\nimport BonusomatCounter from \"../shared/bonusomat-counter.vue\";\r\nimport RafflePrizesModal from \"../shared/raffle-prizes-modal.vue\";\r\n\r\nimport useBonusomatData from \"../../composables/use-bonusomat-data\";\r\nimport useBonusomatOnboarding from \"../../composables/use-bonusomat-onboarding\";\r\nimport useBonusomatDrawCountdown from \"../../composables/use-bonusomat-raffle-countdown\";\r\n\r\nimport { sazkaAlert } from \"@sazka/utils/sazka-alert\";\r\nimport { bonImgUrl } from \"../../utils/image-src\";\r\nimport useBonusomatWinTables from \"../../composables/use-bonusomat-win-tables\";\r\nimport { useBonusomatPlayerData } from \"../../composables/use-bonusomat-player-data\";\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'bonusomat-raffle',\n setup(__props) {\n\r\nconst { bonusomatPlayerData, remainingSpinsCount } = useBonusomatPlayerData();\r\nconst { raffleData, isRaffleDataLoaded } = useBonusomatData();\r\n\r\nconst { raffleWinTable, loadRaffleWinTable } = useBonusomatWinTables();\r\n\r\nconst { openBonusomatOnboarding } = useBonusomatOnboarding();\r\n\r\nconst { raffleRemainingSeconds } = useBonusomatDrawCountdown();\r\n\r\nconst isModalOpen = ref(false);\r\n\r\nconst openModal = async () => {\r\n try {\r\n if (raffleWinTable.value) return;\r\n\r\n await loadRaffleWinTable();\r\n } catch (error) {\r\n sazkaAlert(\"Omlouváme se, pÅ™i naÄÃtánà cen v LosovaÄce nastala chyba.\", \"Zkuste to prosÃm pozdÄ›ji.\");\r\n } finally {\r\n if (raffleWinTable.value) {\r\n isModalOpen.value = true;\r\n }\r\n\r\n BonusomatDatalayer.pushMoreInfoClick(\"Ceny v losovaÄce\", bonusomatPlayerData.points, remainingSpinsCount.value);\r\n }\r\n};\r\n\r\nconst openBonusomatOnboardingClick = () => {\r\n openBonusomatOnboarding(\"raffle\");\r\n BonusomatDatalayer.pushMoreInfoClick(\"LosovaÄka\", bonusomatPlayerData.points, remainingSpinsCount.value);\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"section\", _hoisted_1, [\n _createVNode(TypographyHeadline, {\n theme: \"dark\",\n class: \"bonusomat-raffle__headline\"\n }, {\n default: _withCtx(() => [\n _cache[2] || (_cache[2] = _createTextVNode(\" LosovaÄka \")),\n _createVNode(DsButton, {\n type: \"text\",\n theme: \"dark\",\n \"icon-right\": \"help\",\n onClick: openBonusomatOnboardingClick,\n class: \"button-onboarding\"\n }),\n _createVNode(DsButton, {\n theme: \"dark\",\n type: \"interaction\",\n size: \"sm\",\n \"icon-right\": \"gift\",\n onClick: openModal\n }, {\n default: _withCtx(() => _cache[1] || (_cache[1] = [\n _createTextVNode(\" Ceny v LosovaÄce \")\n ])),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(WebpImage, {\n src: _unref(bonImgUrl)('raffle/mr-red-raffle', 'png'),\n alt: \"Pan Äervený stojÃcà vedle losovadla\",\n class: \"bonusomat-raffle__image-wrapper bonusomat-raffle__image--desktop\",\n \"css-class\": \"bonusomat-raffle__image\"\n }, null, 8, [\"src\"]),\n _createVNode(WebpImage, {\n src: _unref(bonImgUrl)('raffle/raffle-mr-red-green', 'png'),\n alt: \"Pan Zelený a Äervený stojÃcà vedle Bonusomatu\",\n class: \"bonusomat-raffle__image-wrapper bonusomat-raffle__image--mobile\",\n \"css-class\": \"bonusomat-raffle__image\"\n }, null, 8, [\"src\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(isRaffleDataLoaded) && !_unref(raffleData))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _cache[3] || (_cache[3] = [\n _createElementVNode(\"div\", { class: \"bonusomat-placeholder\" }, [\n _createElementVNode(\"div\", { class: \"bonusomat-placeholder__text\" }, \"PÅ™i naÄÃtánà losovaÄky nastala chyba\"),\n _createElementVNode(\"div\", { class: \"bonusomat-placeholder__subtext\" }, \"Zkuste to prosÃm pozdÄ›ji\")\n ], -1)\n ])))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createElementVNode(\"div\", _hoisted_4, [\n _cache[4] || (_cache[4] = _createElementVNode(\"div\", { class: \"bonusomat-raffle__counter-box__title\" }, \"Máte tiketů\", -1)),\n _createVNode(BonusomatCounter, {\n counterValue: _unref(raffleData)?.tickets ?? 0,\n \"numeral-count\": 4\n }, null, 8, [\"counterValue\"])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _cache[5] || (_cache[5] = _createElementVNode(\"div\", { class: \"bonusomat-raffle__counter-box__title\" }, \"Celkem tiketů\", -1)),\n _createVNode(BonusomatCounter, {\n counterValue: _unref(raffleData)?.totalTickets ?? 0,\n \"numeral-count\": 4\n }, null, 8, [\"counterValue\"])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _cache[6] || (_cache[6] = _createElementVNode(\"div\", { class: \"bonusomat-raffle__counter-box__title\" }, \"Slosovánà za\", -1)),\n _createVNode(TimeCounter, { remainingSeconds: _unref(raffleRemainingSeconds) }, null, 8, [\"remainingSeconds\"])\n ])\n ], 64))\n ]),\n _createVNode(RafflePrizesModal, {\n modelValue: isModalOpen.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((isModalOpen).value = $event)),\n raffleWinTable: _unref(raffleWinTable),\n \"btn-right-icon\": \"check\"\n }, null, 8, [\"modelValue\", \"raffleWinTable\"])\n ]))\n}\n}\n\n})","<template>\r\n <section class=\"bonusomat-raffle\">\r\n <TypographyHeadline theme=\"dark\" class=\"bonusomat-raffle__headline\">\r\n LosovaÄka\r\n <DsButton\r\n type=\"text\"\r\n theme=\"dark\"\r\n icon-right=\"help\"\r\n @click=\"openBonusomatOnboardingClick\"\r\n class=\"button-onboarding\"\r\n />\r\n <DsButton theme=\"dark\" type=\"interaction\" size=\"sm\" icon-right=\"gift\" @click=\"openModal\">\r\n Ceny v LosovaÄce\r\n </DsButton>\r\n </TypographyHeadline>\r\n\r\n <WebpImage\r\n :src=\"bonImgUrl('raffle/mr-red-raffle', 'png')\"\r\n alt=\"Pan Äervený stojÃcà vedle losovadla\"\r\n class=\"bonusomat-raffle__image-wrapper bonusomat-raffle__image--desktop\"\r\n css-class=\"bonusomat-raffle__image\"\r\n />\r\n\r\n <WebpImage\r\n :src=\"bonImgUrl('raffle/raffle-mr-red-green', 'png')\"\r\n alt=\"Pan Zelený a Äervený stojÃcà vedle Bonusomatu\"\r\n class=\"bonusomat-raffle__image-wrapper bonusomat-raffle__image--mobile\"\r\n css-class=\"bonusomat-raffle__image\"\r\n />\r\n\r\n <div class=\"bonusomat-raffle__section-bottom\">\r\n <template v-if=\"isRaffleDataLoaded && !raffleData\">\r\n <div class=\"bonusomat-raffle__counter-box bonusomat-raffle__counter-box--failed\">\r\n <div class=\"bonusomat-placeholder\">\r\n <div class=\"bonusomat-placeholder__text\">PÅ™i naÄÃtánà losovaÄky nastala chyba</div>\r\n <div class=\"bonusomat-placeholder__subtext\">Zkuste to prosÃm pozdÄ›ji</div>\r\n </div>\r\n </div>\r\n </template>\r\n <template v-else>\r\n <div class=\"bonusomat-raffle__counter-box bonusomat-raffle__counter-box--highlighted\">\r\n <div class=\"bonusomat-raffle__counter-box__title\">Máte tiketů</div>\r\n <BonusomatCounter :counterValue=\"raffleData?.tickets ?? 0\" :numeral-count=\"4\" />\r\n </div>\r\n <div class=\"bonusomat-raffle__counter-box\">\r\n <div class=\"bonusomat-raffle__counter-box__title\">Celkem tiketů</div>\r\n <BonusomatCounter :counterValue=\"raffleData?.totalTickets ?? 0\" :numeral-count=\"4\" />\r\n </div>\r\n <div class=\"bonusomat-raffle__counter-box\">\r\n <div class=\"bonusomat-raffle__counter-box__title\">Slosovánà za</div>\r\n <TimeCounter :remainingSeconds=\"raffleRemainingSeconds\" />\r\n </div>\r\n </template>\r\n </div>\r\n\r\n <RafflePrizesModal v-model=\"isModalOpen\" :raffleWinTable=\"raffleWinTable\" btn-right-icon=\"check\" />\r\n </section>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref } from \"vue\";\r\n\r\nimport WebpImage from \"@sazka/design-system/src/image/webp-image.vue\";\r\nimport TypographyHeadline from \"@sazka/design-system/src/typography/typography-headline.vue\";\r\nimport DsButton from \"@sazka/design-system/src/button/ds-button.vue\";\r\nimport { BonusomatDatalayer } from \"@/casino/bonusomat/utils/analytics/bonusomat-datalayer\";\r\nimport TimeCounter from \"./time-counter.vue\";\r\nimport BonusomatCounter from \"../shared/bonusomat-counter.vue\";\r\nimport RafflePrizesModal from \"../shared/raffle-prizes-modal.vue\";\r\n\r\nimport useBonusomatData from \"../../composables/use-bonusomat-data\";\r\nimport useBonusomatOnboarding from \"../../composables/use-bonusomat-onboarding\";\r\nimport useBonusomatDrawCountdown from \"../../composables/use-bonusomat-raffle-countdown\";\r\n\r\nimport { sazkaAlert } from \"@sazka/utils/sazka-alert\";\r\nimport { bonImgUrl } from \"../../utils/image-src\";\r\nimport useBonusomatWinTables from \"../../composables/use-bonusomat-win-tables\";\r\nimport { useBonusomatPlayerData } from \"../../composables/use-bonusomat-player-data\";\r\n\r\nconst { bonusomatPlayerData, remainingSpinsCount } = useBonusomatPlayerData();\r\nconst { raffleData, isRaffleDataLoaded } = useBonusomatData();\r\n\r\nconst { raffleWinTable, loadRaffleWinTable } = useBonusomatWinTables();\r\n\r\nconst { openBonusomatOnboarding } = useBonusomatOnboarding();\r\n\r\nconst { raffleRemainingSeconds } = useBonusomatDrawCountdown();\r\n\r\nconst isModalOpen = ref(false);\r\n\r\nconst openModal = async () => {\r\n try {\r\n if (raffleWinTable.value) return;\r\n\r\n await loadRaffleWinTable();\r\n } catch (error) {\r\n sazkaAlert(\"Omlouváme se, pÅ™i naÄÃtánà cen v LosovaÄce nastala chyba.\", \"Zkuste to prosÃm pozdÄ›ji.\");\r\n } finally {\r\n if (raffleWinTable.value) {\r\n isModalOpen.value = true;\r\n }\r\n\r\n BonusomatDatalayer.pushMoreInfoClick(\"Ceny v losovaÄce\", bonusomatPlayerData.points, remainingSpinsCount.value);\r\n }\r\n};\r\n\r\nconst openBonusomatOnboardingClick = () => {\r\n openBonusomatOnboarding(\"raffle\");\r\n BonusomatDatalayer.pushMoreInfoClick(\"LosovaÄka\", bonusomatPlayerData.points, remainingSpinsCount.value);\r\n};\r\n</script>\r\n","import script from \"./bonusomat-raffle.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./bonusomat-raffle.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","<template>\r\n <div class=\"bonusomat-automat-cylinder\" ref=\"container\">\r\n <div class=\"bonusomat-automat-cylinder__card\" v-for=\"(iconUrl, index) in iconsUrls\" :key=\"`wh-i${index}`\">\r\n <WebpImage\r\n :alt=\"`Cylinder item ${index}`\"\r\n cssClass=\"bonusomat-automat-cylinder__card-image\"\r\n :src=\"iconUrl\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport WebpImage from \"@sazka/design-system/src/image/webp-image.vue\";\r\nimport { computed, watch } from \"vue\";\r\nimport { KeenSliderInstance, useKeenSlider } from \"keen-slider/vue.es\";\r\nimport { AutomatCylinderStoppingPhase, SpinAutomatState } from \"@/casino/bonusomat/models/bonusomat-spin-types\";\r\n\r\nconst emit = defineEmits([\"spinEnd\"]);\r\n\r\nconst props = defineProps<{\r\n iconsUrls: string[];\r\n state: SpinAutomatState;\r\n winIcon: string | undefined;\r\n spinEndDelay: number;\r\n}>();\r\n\r\nconst oneSlideChangeDuration = 80;\r\n\r\nconst oneRoundIndex = computed(() => props.iconsUrls.length * -1);\r\nconst oneRoundAnimationSettings = computed(() => {\r\n return { duration: oneSlideChangeDuration * props.iconsUrls.length, easing: (t) => t };\r\n});\r\n\r\nconst winIndex = computed(() => props.iconsUrls.indexOf(props.winIcon) - props.iconsUrls.length);\r\nconst prepareIndexAnimationSettings = computed(() => {\r\n return { duration: oneSlideChangeDuration * winIndex.value, easing: (t) => t };\r\n});\r\n\r\nconst finishSlideAnimationSettings = computed(() => {\r\n return {\r\n duration: oneSlideChangeDuration * props.iconsUrls.length * 2 + props.spinEndDelay,\r\n easing: (t) => (t -= 1) * t * t + 1,\r\n };\r\n});\r\n\r\nlet sliderPositionMemory = 0;\r\nlet sliderSettingMemory = null;\r\nconst setNextSpin = (slider: KeenSliderInstance, increaseIdxBy: number, currentSettings) => {\r\n sliderPositionMemory = slider.track.details.abs + increaseIdxBy;\r\n sliderSettingMemory = currentSettings;\r\n slider.moveToIdx(sliderPositionMemory, true, sliderSettingMemory);\r\n};\r\n\r\nconst restoreCurrentSpin = (slider: KeenSliderInstance) => {\r\n slider.moveToIdx(sliderPositionMemory, true, sliderSettingMemory);\r\n};\r\n\r\nlet stoppingPhase: AutomatCylinderStoppingPhase = \"PREPARE_INDEX\";\r\nconst spinCylinderMachineState = (slider: KeenSliderInstance) => {\r\n if (props.state == \"ROLLING\") {\r\n // ROLLING is spinning round and round at full speed\r\n setNextSpin(slider, oneRoundIndex.value, oneRoundAnimationSettings.value);\r\n console.log(props.state, stoppingPhase, slider.track.details.abs, sliderPositionMemory);\r\n } else if (props.state == \"STOPPING\") {\r\n if (stoppingPhase == \"PREPARE_INDEX\") {\r\n // PREPARE INDEX phase turn around to the end position at full speed\r\n setNextSpin(slider, winIndex.value, prepareIndexAnimationSettings.value);\r\n console.log(props.state, stoppingPhase, slider.track.details.abs, sliderPositionMemory);\r\n stoppingPhase = \"FINISH_SLIDE\";\r\n } else if (stoppingPhase == \"FINISH_SLIDE\") {\r\n // FINISH_SLIDE phase spins 1 round with inertia\r\n setNextSpin(slider, oneRoundIndex.value, finishSlideAnimationSettings.value);\r\n console.log(props.state, stoppingPhase, slider.track.details.abs, sliderPositionMemory);\r\n stoppingPhase = \"TRIGGER_END\";\r\n } else {\r\n // TRIGGER_END finishes the process\r\n emit(\"spinEnd\");\r\n stoppingPhase = \"PREPARE_INDEX\";\r\n }\r\n }\r\n};\r\n\r\nconst [container, keenSlider] = useKeenSlider({\r\n loop: true,\r\n vertical: true,\r\n drag: false,\r\n mode: \"free-snap\",\r\n renderMode: \"performance\",\r\n slides: { perView: \"auto\", spacing: 0 },\r\n selector: \".bonusomat-automat-cylinder__card\",\r\n\r\n animationEnded(slider: KeenSliderInstance) {\r\n spinCylinderMachineState(slider);\r\n },\r\n\r\n updated(slider: KeenSliderInstance) {\r\n // restore slider spin\r\n if (props.state == \"ROLLING\" || props.state == \"STOPPING\") {\r\n if (slider.track.details.abs == sliderPositionMemory) {\r\n spinCylinderMachineState(slider);\r\n } else {\r\n console.log(\"restore\", slider.track.details.abs, sliderPositionMemory);\r\n restoreCurrentSpin(slider);\r\n }\r\n }\r\n },\r\n});\r\n\r\nwatch(\r\n () => props.state,\r\n (newState) => {\r\n if (newState == \"ROLLING\") {\r\n spinCylinderMachineState(keenSlider.value);\r\n }\r\n }\r\n);\r\n</script>\r\n","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createVNode as _createVNode } from \"vue\"\n\nimport WebpImage from \"@sazka/design-system/src/image/webp-image.vue\";\r\nimport { computed, watch } from \"vue\";\r\nimport { KeenSliderInstance, useKeenSlider } from \"keen-slider/vue.es\";\r\nimport { AutomatCylinderStoppingPhase, SpinAutomatState } from \"@/casino/bonusomat/models/bonusomat-spin-types\";\r\n\r\nconst oneSlideChangeDuration = 80;\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'bonusomat-automat-cylinder',\n props: {\n iconsUrls: {},\n state: {},\n winIcon: {},\n spinEndDelay: {}\n },\n emits: [\"spinEnd\"],\n setup(__props: any, { emit: __emit }) {\n\r\nconst emit = __emit;\r\n\r\nconst props = __props;\r\n\r\nconst oneRoundIndex = computed(() => props.iconsUrls.length * -1);\r\nconst oneRoundAnimationSettings = computed(() => {\r\n return { duration: oneSlideChangeDuration * props.iconsUrls.length, easing: (t) => t };\r\n});\r\n\r\nconst winIndex = computed(() => props.iconsUrls.indexOf(props.winIcon) - props.iconsUrls.length);\r\nconst prepareIndexAnimationSettings = computed(() => {\r\n return { duration: oneSlideChangeDuration * winIndex.value, easing: (t) => t };\r\n});\r\n\r\nconst finishSlideAnimationSettings = computed(() => {\r\n return {\r\n duration: oneSlideChangeDuration * props.iconsUrls.length * 2 + props.spinEndDelay,\r\n easing: (t) => (t -= 1) * t * t + 1,\r\n };\r\n});\r\n\r\nlet sliderPositionMemory = 0;\r\nlet sliderSettingMemory = null;\r\nconst setNextSpin = (slider: KeenSliderInstance, increaseIdxBy: number, currentSettings) => {\r\n sliderPositionMemory = slider.track.details.abs + increaseIdxBy;\r\n sliderSettingMemory = currentSettings;\r\n slider.moveToIdx(sliderPositionMemory, true, sliderSettingMemory);\r\n};\r\n\r\nconst restoreCurrentSpin = (slider: KeenSliderInstance) => {\r\n slider.moveToIdx(sliderPositionMemory, true, sliderSettingMemory);\r\n};\r\n\r\nlet stoppingPhase: AutomatCylinderStoppingPhase = \"PREPARE_INDEX\";\r\nconst spinCylinderMachineState = (slider: KeenSliderInstance) => {\r\n if (props.state == \"ROLLING\") {\r\n // ROLLING is spinning round and round at full speed\r\n setNextSpin(slider, oneRoundIndex.value, oneRoundAnimationSettings.value);\r\n console.log(props.state, stoppingPhase, slider.track.details.abs, sliderPositionMemory);\r\n } else if (props.state == \"STOPPING\") {\r\n if (stoppingPhase == \"PREPARE_INDEX\") {\r\n // PREPARE INDEX phase turn around to the end position at full speed\r\n setNextSpin(slider, winIndex.value, prepareIndexAnimationSettings.value);\r\n console.log(props.state, stoppingPhase, slider.track.details.abs, sliderPositionMemory);\r\n stoppingPhase = \"FINISH_SLIDE\";\r\n } else if (stoppingPhase == \"FINISH_SLIDE\") {\r\n // FINISH_SLIDE phase spins 1 round with inertia\r\n setNextSpin(slider, oneRoundIndex.value, finishSlideAnimationSettings.value);\r\n console.log(props.state, stoppingPhase, slider.track.details.abs, sliderPositionMemory);\r\n stoppingPhase = \"TRIGGER_END\";\r\n } else {\r\n // TRIGGER_END finishes the process\r\n emit(\"spinEnd\");\r\n stoppingPhase = \"PREPARE_INDEX\";\r\n }\r\n }\r\n};\r\n\r\nconst [container, keenSlider] = useKeenSlider({\r\n loop: true,\r\n vertical: true,\r\n drag: false,\r\n mode: \"free-snap\",\r\n renderMode: \"performance\",\r\n slides: { perView: \"auto\", spacing: 0 },\r\n selector: \".bonusomat-automat-cylinder__card\",\r\n\r\n animationEnded(slider: KeenSliderInstance) {\r\n spinCylinderMachineState(slider);\r\n },\r\n\r\n updated(slider: KeenSliderInstance) {\r\n // restore slider spin\r\n if (props.state == \"ROLLING\" || props.state == \"STOPPING\") {\r\n if (slider.track.details.abs == sliderPositionMemory) {\r\n spinCylinderMachineState(slider);\r\n } else {\r\n console.log(\"restore\", slider.track.details.abs, sliderPositionMemory);\r\n restoreCurrentSpin(slider);\r\n }\r\n }\r\n },\r\n});\r\n\r\nwatch(\r\n () => props.state,\r\n (newState) => {\r\n if (newState == \"ROLLING\") {\r\n spinCylinderMachineState(keenSlider.value);\r\n }\r\n }\r\n);\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"bonusomat-automat-cylinder\",\n ref_key: \"container\",\n ref: container\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.iconsUrls, (iconUrl, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"bonusomat-automat-cylinder__card\",\n key: `wh-i${index}`\n }, [\n _createVNode(WebpImage, {\n alt: `Cylinder item ${index}`,\n cssClass: \"bonusomat-automat-cylinder__card-image\",\n src: iconUrl\n }, null, 8, [\"alt\", \"src\"])\n ]))\n }), 128))\n ], 512))\n}\n}\n\n})","import script from \"./bonusomat-automat-cylinder.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./bonusomat-automat-cylinder.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createBlock as _createBlock, createCommentVNode as _createCommentVNode, unref as _unref, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives } from \"vue\"\n\nconst _hoisted_1 = { class: \"bonusomat-spin-automat\" }\nconst _hoisted_2 = [\"src\"]\nconst _hoisted_3 = [\"src\"]\nconst _hoisted_4 = [\"src\"]\nconst _hoisted_5 = [\"src\"]\nconst _hoisted_6 = [\"src\"]\nconst _hoisted_7 = [\"src\"]\n\nimport { computed, onMounted, ref, watchEffect } from \"vue\";\r\nimport { bonImgUrl } from \"../../../utils/image-src\";\r\nimport { SpinAutomatState } from \"../../../models/bonusomat-spin-types\";\r\nimport { Loader } from \"@sazka/design-system/src/loader/loader\";\r\nimport { fetchAutomatCylinderImages } from \"../../../api/bonusomat-player-data-api\";\r\nimport { useNgSession } from \"@sazka/ng/ng-session\";\r\n\r\nimport BonusomatAutomatCylinder from \"./bonusomat-automat-cylinder.vue\";\r\nimport { ResponsiveUtils } from \"@sazka/utils/responsive-utils\";\r\nimport { MediaPreloader } from \"@sazka/utils/media-preloader\";\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'bonusomat-spin-automat',\n props: {\n state: {},\n winIcons: {}\n },\n emits: [\"spinStopped\"],\n setup(__props: any, { emit: __emit }) {\n\r\nconst emit = __emit;\r\n\r\nconst props = __props;\r\n\r\nconst isMovSupported = ResponsiveUtils.isMovSupported();\r\n\r\nconst defaultAnimationRef = ref<HTMLVideoElement>();\r\nconst rollingAnimationRef = ref<HTMLVideoElement>();\r\nconst winningAnimationRef = ref<HTMLVideoElement>();\r\n\r\nconst { session } = useNgSession();\r\n\r\nconst iconsUrls = ref<string[]>([]);\r\nconst init = async () => {\r\n iconsUrls.value = (await fetchAutomatCylinderImages(session.value?.PlayerID))?.icons ?? [];\r\n Loader.hide();\r\n};\r\n\r\nLoader.show();\r\ninit();\r\n\r\nconst showDefaultAnimation = computed(\r\n () => props.state != \"ROLLING\" && props.state != \"STOPPING\" && props.state != \"WINNING\"\r\n);\r\nconst showRollingAnimation = computed(() => props.state == \"ROLLING\" || props.state == \"STOPPING\");\r\nconst showWinningAnimation = computed(() => props.state == \"WINNING\");\r\n\r\nonMounted(() => {\r\n watchEffect(() => {\r\n if (showDefaultAnimation.value) {\r\n defaultAnimationRef.value.play();\r\n } else if (showRollingAnimation.value) {\r\n rollingAnimationRef.value.play();\r\n } else if (showWinningAnimation.value) {\r\n winningAnimationRef.value.play();\r\n }\r\n });\r\n});\r\n\r\nlet stopCounter = 0;\r\nconst cylinderSpinEndHandler = () => {\r\n stopCounter++;\r\n if (props.winIcons.length == stopCounter) {\r\n emit(\"spinStopped\");\r\n stopCounter = 0;\r\n }\r\n};\r\n\r\nconst automatRollingMovSrc = bonImgUrl(\"automat/automat-rolling\", \"mov\");\r\nconst automatRollingWebmSrc = bonImgUrl(\"automat/automat-rolling\", \"webm\");\r\nconst automatWinMovSrc = bonImgUrl(\"automat/automat-win\", \"mov\");\r\nconst automatWinWebmSrc = bonImgUrl(\"automat/automat-win\", \"webm\");\r\nconst preloadVideos = () => {\r\n if (isMovSupported) {\r\n MediaPreloader.preloadVideos([automatRollingMovSrc, automatWinMovSrc]);\r\n } else {\r\n MediaPreloader.preloadVideos([automatRollingWebmSrc, automatWinWebmSrc]);\r\n }\r\n};\r\nwatchEffect(() => {\r\n if (props.state == \"ACTIVE\") {\r\n preloadVideos();\r\n }\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (iconsUrls.value.length)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 0 }, _renderList(_ctx.winIcons, (winIcon, index) => {\n return (_openBlock(), _createBlock(BonusomatAutomatCylinder, {\n key: index,\n class: _normalizeClass([\"bonusomat-spin-automat__cylinder\", `bonusomat-spin-automat__cylinder--${index}`]),\n \"icons-urls\": iconsUrls.value,\n state: _ctx.state,\n \"win-icon\": winIcon,\n \"spin-end-delay\": 350 * index,\n onSpinEnd: cylinderSpinEndHandler\n }, null, 8, [\"class\", \"icons-urls\", \"state\", \"win-icon\", \"spin-end-delay\"]))\n }), 128))\n : _createCommentVNode(\"\", true),\n _withDirectives(_createElementVNode(\"video\", {\n ref_key: \"defaultAnimationRef\",\n ref: defaultAnimationRef,\n alt: \"Automat je aktivnÃ\",\n loop: \"\",\n muted: \"\",\n constrols: \"false\",\n playsinline: \"\",\n autoplay: \"\",\n preload: \"auto\",\n class: \"bonusomat-spin-automat__video\"\n }, [\n (_unref(isMovSupported))\n ? (_openBlock(), _createElementBlock(\"source\", {\n key: 0,\n src: _unref(bonImgUrl)('automat/automat-active', 'mov'),\n type: \"video/quicktime\"\n }, null, 8, _hoisted_2))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"source\", {\n src: _unref(bonImgUrl)('automat/automat-active', 'webm'),\n type: \"video/webm\"\n }, null, 8, _hoisted_3)\n ], 512), [\n [_vShow, showDefaultAnimation.value]\n ]),\n _withDirectives(_createElementVNode(\"video\", {\n ref_key: \"rollingAnimationRef\",\n ref: rollingAnimationRef,\n alt: \"Automat se toÄÃ\",\n muted: \"\",\n constrols: \"false\",\n playsinline: \"\",\n preload: \"auto\",\n class: \"bonusomat-spin-automat__video\"\n }, [\n (_unref(isMovSupported))\n ? (_openBlock(), _createElementBlock(\"source\", {\n key: 0,\n src: _unref(automatRollingMovSrc),\n type: \"video/quicktime\"\n }, null, 8, _hoisted_4))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"source\", {\n src: _unref(automatRollingWebmSrc),\n type: \"video/webm\"\n }, null, 8, _hoisted_5)\n ], 512), [\n [_vShow, showRollingAnimation.value]\n ]),\n _withDirectives(_createElementVNode(\"video\", {\n ref_key: \"winningAnimationRef\",\n ref: winningAnimationRef,\n alt: \"Automat vyhrává\",\n loop: \"\",\n muted: \"\",\n constrols: \"false\",\n playsinline: \"\",\n preload: \"auto\",\n class: \"bonusomat-spin-automat__video\"\n }, [\n (_unref(isMovSupported))\n ? (_openBlock(), _createElementBlock(\"source\", {\n key: 0,\n src: _unref(automatWinMovSrc),\n type: \"video/quicktime\"\n }, null, 8, _hoisted_6))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"source\", {\n src: _unref(automatWinWebmSrc),\n type: \"video/webm\"\n }, null, 8, _hoisted_7)\n ], 512), [\n [_vShow, showWinningAnimation.value]\n ])\n ]))\n}\n}\n\n})","<template>\r\n <div class=\"bonusomat-spin-automat\">\r\n <template v-if=\"iconsUrls.length\">\r\n <BonusomatAutomatCylinder\r\n v-for=\"(winIcon, index) in winIcons\"\r\n :key=\"index\"\r\n class=\"bonusomat-spin-automat__cylinder\"\r\n :class=\"`bonusomat-spin-automat__cylinder--${index}`\"\r\n :icons-urls=\"iconsUrls\"\r\n :state=\"state\"\r\n :win-icon=\"winIcon\"\r\n :spin-end-delay=\"350 * index\"\r\n @spin-end=\"cylinderSpinEndHandler\"\r\n />\r\n </template>\r\n\r\n <video\r\n v-show=\"showDefaultAnimation\"\r\n ref=\"defaultAnimationRef\"\r\n alt=\"Automat je aktivnÃ\"\r\n loop\r\n muted\r\n constrols=\"false\"\r\n playsinline\r\n autoplay\r\n preload=\"auto\"\r\n class=\"bonusomat-spin-automat__video\"\r\n >\r\n <source v-if=\"isMovSupported\" :src=\"bonImgUrl('automat/automat-active', 'mov')\" type=\"video/quicktime\" />\r\n <source :src=\"bonImgUrl('automat/automat-active', 'webm')\" type=\"video/webm\" />\r\n </video>\r\n\r\n <video\r\n v-show=\"showRollingAnimation\"\r\n ref=\"rollingAnimationRef\"\r\n alt=\"Automat se toÄÃ\"\r\n muted\r\n constrols=\"false\"\r\n playsinline\r\n preload=\"auto\"\r\n class=\"bonusomat-spin-automat__video\"\r\n >\r\n <source v-if=\"isMovSupported\" :src=\"automatRollingMovSrc\" type=\"video/quicktime\" />\r\n <source :src=\"automatRollingWebmSrc\" type=\"video/webm\" />\r\n </video>\r\n\r\n <video\r\n v-show=\"showWinningAnimation\"\r\n ref=\"winningAnimationRef\"\r\n alt=\"Automat vyhrává\"\r\n loop\r\n muted\r\n constrols=\"false\"\r\n playsinline\r\n preload=\"auto\"\r\n class=\"bonusomat-spin-automat__video\"\r\n >\r\n <source v-if=\"isMovSupported\" :src=\"automatWinMovSrc\" type=\"video/quicktime\" />\r\n <source :src=\"automatWinWebmSrc\" type=\"video/webm\" />\r\n </video>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, onMounted, ref, watchEffect } from \"vue\";\r\nimport { bonImgUrl } from \"../../../utils/image-src\";\r\nimport { SpinAutomatState } from \"../../../models/bonusomat-spin-types\";\r\nimport { Loader } from \"@sazka/design-system/src/loader/loader\";\r\nimport { fetchAutomatCylinderImages } from \"../../../api/bonusomat-player-data-api\";\r\nimport { useNgSession } from \"@sazka/ng/ng-session\";\r\n\r\nimport BonusomatAutomatCylinder from \"./bonusomat-automat-cylinder.vue\";\r\nimport { ResponsiveUtils } from \"@sazka/utils/responsive-utils\";\r\nimport { MediaPreloader } from \"@sazka/utils/media-preloader\";\r\n\r\nconst emit = defineEmits([\"spinStopped\"]);\r\n\r\nconst props = defineProps<{\r\n state: SpinAutomatState;\r\n winIcons: string[];\r\n}>();\r\n\r\nconst isMovSupported = ResponsiveUtils.isMovSupported();\r\n\r\nconst defaultAnimationRef = ref<HTMLVideoElement>();\r\nconst rollingAnimationRef = ref<HTMLVideoElement>();\r\nconst winningAnimationRef = ref<HTMLVideoElement>();\r\n\r\nconst { session } = useNgSession();\r\n\r\nconst iconsUrls = ref<string[]>([]);\r\nconst init = async () => {\r\n iconsUrls.value = (await fetchAutomatCylinderImages(session.value?.PlayerID))?.icons ?? [];\r\n Loader.hide();\r\n};\r\n\r\nLoader.show();\r\ninit();\r\n\r\nconst showDefaultAnimation = computed(\r\n () => props.state != \"ROLLING\" && props.state != \"STOPPING\" && props.state != \"WINNING\"\r\n);\r\nconst showRollingAnimation = computed(() => props.state == \"ROLLING\" || props.state == \"STOPPING\");\r\nconst showWinningAnimation = computed(() => props.state == \"WINNING\");\r\n\r\nonMounted(() => {\r\n watchEffect(() => {\r\n if (showDefaultAnimation.value) {\r\n defaultAnimationRef.value.play();\r\n } else if (showRollingAnimation.value) {\r\n rollingAnimationRef.value.play();\r\n } else if (showWinningAnimation.value) {\r\n winningAnimationRef.value.play();\r\n }\r\n });\r\n});\r\n\r\nlet stopCounter = 0;\r\nconst cylinderSpinEndHandler = () => {\r\n stopCounter++;\r\n if (props.winIcons.length == stopCounter) {\r\n emit(\"spinStopped\");\r\n stopCounter = 0;\r\n }\r\n};\r\n\r\nconst automatRollingMovSrc = bonImgUrl(\"automat/automat-rolling\", \"mov\");\r\nconst automatRollingWebmSrc = bonImgUrl(\"automat/automat-rolling\", \"webm\");\r\nconst automatWinMovSrc = bonImgUrl(\"automat/automat-win\", \"mov\");\r\nconst automatWinWebmSrc = bonImgUrl(\"automat/automat-win\", \"webm\");\r\nconst preloadVideos = () => {\r\n if (isMovSupported) {\r\n MediaPreloader.preloadVideos([automatRollingMovSrc, automatWinMovSrc]);\r\n } else {\r\n MediaPreloader.preloadVideos([automatRollingWebmSrc, automatWinWebmSrc]);\r\n }\r\n};\r\nwatchEffect(() => {\r\n if (props.state == \"ACTIVE\") {\r\n preloadVideos();\r\n }\r\n});\r\n</script>\r\n","import script from \"./bonusomat-spin-automat.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./bonusomat-spin-automat.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, vShow as _vShow, createElementVNode as _createElementVNode, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"bonusomat-spin-winner\" }\nconst _hoisted_2 = [\"innerHTML\"]\nconst _hoisted_3 = [\"innerHTML\"]\n\nimport { computed } from \"vue\";\r\nimport { bonImgUrl } from \"../../../utils/image-src\";\r\nimport { SpinAutomatState } from \"../../../models/bonusomat-spin-types\";\r\nimport WebpImage from \"@sazka/design-system/src/image/webp-image.vue\";\r\nimport { DateTimeUtils } from \"@sazka/utils/date-time-utils\";\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'bonusomat-spin-winner',\n props: {\n state: {},\n prizeText: {}\n },\n setup(__props: any) {\n\r\nconst props = __props;\r\n\r\nconst winnerImage = computed(() => bonImgUrl(\"sack-with-money\", \"png\"));\r\n\r\nconst winnerNote = computed(() => (props.state === \"DISABLED\" ? \"DalÅ¡Ã zatoÄenà za\" : \"\"));\r\n\r\nconst winnerText = computed(() => {\r\n if (props.state === \"DISABLED\") {\r\n const midnight = new Date();\r\n midnight.setHours(24);\r\n midnight.setMinutes(0);\r\n midnight.setSeconds(0);\r\n midnight.setMilliseconds(0);\r\n\r\n const duration = DateTimeUtils.getDuration(midnight.getTime() - Date.now());\r\n\r\n return `<strong>${duration.h} ${DateTimeUtils.formatAfterXHoursLabel(duration.h)} a ${\r\n duration.m\r\n } ${DateTimeUtils.formatAfterXMinutesLabel(duration.m)}</strong>`;\r\n }\r\n\r\n if (props.state === \"WINNING\" && props.prizeText) {\r\n return props.prizeText;\r\n }\r\n\r\n return \"<strong>Zde se zobrazÃ<br> vaÅ¡e výhra<strong>\";\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(WebpImage, {\n class: \"bonusomat-spin-winner__image\",\n src: winnerImage.value,\n alt: \"symbol výhry - pytel s penÄ›zi\"\n }, null, 8, [\"src\"]),\n _withDirectives(_createElementVNode(\"div\", {\n class: \"bonusomat-spin-winner__note\",\n innerHTML: winnerNote.value\n }, null, 8, _hoisted_2), [\n [_vShow, winnerNote.value]\n ]),\n _createElementVNode(\"h3\", {\n class: \"bonusomat-spin-winner__text\",\n innerHTML: winnerText.value\n }, null, 8, _hoisted_3)\n ]))\n}\n}\n\n})","<template>\r\n <div class=\"bonusomat-spin-winner\">\r\n <WebpImage class=\"bonusomat-spin-winner__image\" :src=\"winnerImage\" alt=\"symbol výhry - pytel s penÄ›zi\" />\r\n <div class=\"bonusomat-spin-winner__note\" v-show=\"winnerNote\" v-html=\"winnerNote\"></div>\r\n <h3 class=\"bonusomat-spin-winner__text\" v-html=\"winnerText\"></h3>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed } from \"vue\";\r\nimport { bonImgUrl } from \"../../../utils/image-src\";\r\nimport { SpinAutomatState } from \"../../../models/bonusomat-spin-types\";\r\nimport WebpImage from \"@sazka/design-system/src/image/webp-image.vue\";\r\nimport { DateTimeUtils } from \"@sazka/utils/date-time-utils\";\r\n\r\nconst props = defineProps<{\r\n state: SpinAutomatState;\r\n prizeText: string | undefined;\r\n}>();\r\n\r\nconst winnerImage = computed(() => bonImgUrl(\"sack-with-money\", \"png\"));\r\n\r\nconst winnerNote = computed(() => (props.state === \"DISABLED\" ? \"DalÅ¡Ã zatoÄenà za\" : \"\"));\r\n\r\nconst winnerText = computed(() => {\r\n if (props.state === \"DISABLED\") {\r\n const midnight = new Date();\r\n midnight.setHours(24);\r\n midnight.setMinutes(0);\r\n midnight.setSeconds(0);\r\n midnight.setMilliseconds(0);\r\n\r\n const duration = DateTimeUtils.getDuration(midnight.getTime() - Date.now());\r\n\r\n return `<strong>${duration.h} ${DateTimeUtils.formatAfterXHoursLabel(duration.h)} a ${\r\n duration.m\r\n } ${DateTimeUtils.formatAfterXMinutesLabel(duration.m)}</strong>`;\r\n }\r\n\r\n if (props.state === \"WINNING\" && props.prizeText) {\r\n return props.prizeText;\r\n }\r\n\r\n return \"<strong>Zde se zobrazÃ<br> vaÅ¡e výhra<strong>\";\r\n});\r\n</script>\r\n","import script from \"./bonusomat-spin-winner.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./bonusomat-spin-winner.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createTextVNode as _createTextVNode, vShow as _vShow, withCtx as _withCtx, createVNode as _createVNode, withDirectives as _withDirectives, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"bonusomat-spin-buttons\" }\nconst _hoisted_2 = { class: \"bonusomat-spin-button__tooltip\" }\n\nimport { computed } from \"vue\";\r\nimport DsButton from \"@sazka/design-system/src/button/ds-button.vue\";\r\nimport TransitionFade from \"@sazka/design-system/src/transitions/transition-fade.vue\";\r\nimport WebpImage from \"@sazka/design-system/src/image/webp-image.vue\";\r\nimport { bonImgUrl } from \"../../../utils/image-src\";\r\nimport { SpinAutomatState } from \"../../../models/bonusomat-spin-types\";\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'bonusomat-spin-buttons',\n props: {\n state: {}\n },\n emits: [\"spinClick\", \"closeModal\"],\n setup(__props: any, { emit: __emit }) {\n\r\nconst emit = __emit;\r\n\r\nconst props = __props;\r\n\r\nconst isPrimaryButtonDisabled = computed(() => props.state != \"ACTIVE\");\r\nconst showCloseButton = computed(() => props.state == \"EMPTY\" || props.state == \"WINNING\");\r\nconst showTooltip = computed(() => props.state == \"DISABLED\");\r\nconst caretSrc = computed(() => bonImgUrl(\"tooltip-caret\", \"svg\"));\r\n\r\nconst spinClickInternal = () => emit(\"spinClick\");\r\nconst closeClickInternal = () => emit(\"closeModal\");\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createVNode(DsButton, {\n class: \"bonusomat-spin-button__spin\",\n onClick: spinClickInternal,\n size: \"lg\",\n \"is-disabled\": isPrimaryButtonDisabled.value,\n \"icon-right\": \"b-mat\",\n \"is-block-size\": \"\"\n }, {\n default: _withCtx(() => _cache[0] || (_cache[0] = [\n _createTextVNode(\" ZatoÄit bonusomatem \")\n ])),\n _: 1\n }, 8, [\"is-disabled\"]), [\n [_vShow, !showCloseButton.value]\n ]),\n _withDirectives(_createVNode(DsButton, {\n class: \"bonusomat-spin-button__close\",\n onClick: closeClickInternal,\n size: \"lg\",\n type: \"interaction\",\n theme: \"dark\",\n \"icon-right\": \"cross\",\n \"is-block-size\": \"\"\n }, {\n default: _withCtx(() => _cache[1] || (_cache[1] = [\n _createTextVNode(\" ZavÅ™Ãt bonusomat \")\n ])),\n _: 1\n }, 512), [\n [_vShow, showCloseButton.value]\n ]),\n _createVNode(TransitionFade, null, {\n default: _withCtx(() => [\n _withDirectives(_createElementVNode(\"div\", _hoisted_2, [\n _createVNode(WebpImage, {\n class: \"bonusomat-spin-button__tooltip-caret\",\n src: caretSrc.value,\n alt: \"\",\n width: 24,\n height: 8\n }, null, 8, [\"src\"]),\n _cache[2] || (_cache[2] = _createTextVNode(\" ZatoÄit Bonusomatem si můžete vždy pouze 1 x dennÄ›. \"))\n ], 512), [\n [_vShow, showTooltip.value]\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","<template>\r\n <div class=\"bonusomat-spin-buttons\">\r\n <DsButton\r\n class=\"bonusomat-spin-button__spin\"\r\n @click=\"spinClickInternal\"\r\n v-show=\"!showCloseButton\"\r\n size=\"lg\"\r\n :is-disabled=\"isPrimaryButtonDisabled\"\r\n icon-right=\"b-mat\"\r\n is-block-size\r\n >\r\n ZatoÄit bonusomatem\r\n </DsButton>\r\n\r\n <DsButton\r\n class=\"bonusomat-spin-button__close\"\r\n @click=\"closeClickInternal\"\r\n v-show=\"showCloseButton\"\r\n size=\"lg\"\r\n type=\"interaction\"\r\n theme=\"dark\"\r\n icon-right=\"cross\"\r\n is-block-size\r\n >\r\n ZavÅ™Ãt bonusomat\r\n </DsButton>\r\n\r\n <TransitionFade>\r\n <div class=\"bonusomat-spin-button__tooltip\" v-show=\"showTooltip\">\r\n <WebpImage\r\n class=\"bonusomat-spin-button__tooltip-caret\"\r\n :src=\"caretSrc\"\r\n alt=\"\"\r\n :width=\"24\"\r\n :height=\"8\"\r\n />\r\n ZatoÄit Bonusomatem si můžete vždy pouze 1 x dennÄ›.\r\n </div>\r\n </TransitionFade>\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed } from \"vue\";\r\nimport DsButton from \"@sazka/design-system/src/button/ds-button.vue\";\r\nimport TransitionFade from \"@sazka/design-system/src/transitions/transition-fade.vue\";\r\nimport WebpImage from \"@sazka/design-system/src/image/webp-image.vue\";\r\nimport { bonImgUrl } from \"../../../utils/image-src\";\r\nimport { SpinAutomatState } from \"../../../models/bonusomat-spin-types\";\r\n\r\nconst emit = defineEmits([\"spinClick\", \"closeModal\"]);\r\n\r\nconst props = defineProps<{\r\n state: SpinAutomatState;\r\n}>();\r\n\r\nconst isPrimaryButtonDisabled = computed(() => props.state != \"ACTIVE\");\r\nconst showCloseButton = computed(() => props.state == \"EMPTY\" || props.state == \"WINNING\");\r\nconst showTooltip = computed(() => props.state == \"DISABLED\");\r\nconst caretSrc = computed(() => bonImgUrl(\"tooltip-caret\", \"svg\"));\r\n\r\nconst spinClickInternal = () => emit(\"spinClick\");\r\nconst closeClickInternal = () => emit(\"closeModal\");\r\n</script>\r\n","import script from \"./bonusomat-spin-buttons.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./bonusomat-spin-buttons.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"bonusomat-spin-footer\" }\nconst _hoisted_2 = { class: \"bonusomat-spin-footer__remain\" }\nconst _hoisted_3 = [\"innerHTML\"]\n\nimport { computed } from \"vue\";\r\nimport DsIcon from \"@sazka/design-system/src/icon/ds-icon.vue\";\r\nimport DsButton from \"@sazka/design-system/src/button/ds-button.vue\";\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'bonusomat-spin-footer',\n props: {\n remainingSpinsCount: {}\n },\n emits: [\"showWinnerTable\"],\n setup(__props: any, { emit: __emit }) {\n\r\nconst props = __props;\r\nconst emit = __emit;\r\n\r\nconst showWinnerTableInternal = () => emit(\"showWinnerTable\");\r\n\r\nconst remainText = computed(() => {\r\n if (props.remainingSpinsCount > 0) {\r\n return ` K dispozici ${props.remainingSpinsCount} zatoÄenÃ`;\r\n }\r\n return \"ZatoÄenà nenà k dispozici\";\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(DsIcon, {\n class: \"bonusomat-spin-footer__remain-icon\",\n name: \"b-mat\",\n width: 24\n }),\n _createElementVNode(\"span\", {\n class: \"bonusomat-spin-footer__remain-text\",\n innerHTML: remainText.value\n }, null, 8, _hoisted_3)\n ]),\n _createVNode(DsButton, {\n class: \"bonusomat-spin-footer__table\",\n type: \"text\",\n size: \"sm\",\n \"icon-right\": \"money-bag-coins\",\n onClick: showWinnerTableInternal\n }, {\n default: _withCtx(() => _cache[0] || (_cache[0] = [\n _createTextVNode(\"Tabulka výher\")\n ])),\n _: 1\n })\n ]))\n}\n}\n\n})","<template>\r\n <div class=\"bonusomat-spin-footer\">\r\n <div class=\"bonusomat-spin-footer__remain\">\r\n <DsIcon class=\"bonusomat-spin-footer__remain-icon\" name=\"b-mat\" :width=\"24\" />\r\n <span class=\"bonusomat-spin-footer__remain-text\" v-html=\"remainText\"></span>\r\n </div>\r\n <DsButton\r\n class=\"bonusomat-spin-footer__table\"\r\n type=\"text\"\r\n size=\"sm\"\r\n icon-right=\"money-bag-coins\"\r\n @click=\"showWinnerTableInternal\"\r\n >Tabulka výher</DsButton\r\n >\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed } from \"vue\";\r\nimport DsIcon from \"@sazka/design-system/src/icon/ds-icon.vue\";\r\nimport DsButton from \"@sazka/design-system/src/button/ds-button.vue\";\r\n\r\nconst props = defineProps<{\r\n remainingSpinsCount: number;\r\n}>();\r\nconst emit = defineEmits([\"showWinnerTable\"]);\r\n\r\nconst showWinnerTableInternal = () => emit(\"showWinnerTable\");\r\n\r\nconst remainText = computed(() => {\r\n if (props.remainingSpinsCount > 0) {\r\n return ` K dispozici ${props.remainingSpinsCount} zatoÄenÃ`;\r\n }\r\n return \"ZatoÄenà nenà k dispozici\";\r\n});\r\n</script>\r\n","import script from \"./bonusomat-spin-footer.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./bonusomat-spin-footer.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { useModel as _useModel, mergeModels as _mergeModels, defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createVNode as _createVNode, unref as _unref, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"bonusomat-spin-modal__content-wrapper\" }\nconst _hoisted_2 = { class: \"bonusomat-spin-modal__content\" }\n\nimport { computed, ref, watch } from \"vue\";\r\nimport DsButton from \"@sazka/design-system/src/button/ds-button.vue\";\r\nimport TransitionFade from \"@sazka/design-system/src/transitions/transition-fade.vue\";\r\n\r\nimport BonusomatSpinAutomat from \"./bonusomat-spin-modal/bonusomat-spin-automat.vue\";\r\nimport BonusomatSpinWinner from \"./bonusomat-spin-modal/bonusomat-spin-winner.vue\";\r\nimport BonusomatSpinButtons from \"./bonusomat-spin-modal/bonusomat-spin-buttons.vue\";\r\nimport BonusomatSpinFooter from \"./bonusomat-spin-modal/bonusomat-spin-footer.vue\";\r\nimport { SpinAutomatState } from \"../../models/bonusomat-spin-types\";\r\nimport { useBonusomatPlayerData } from \"../../composables/use-bonusomat-player-data\";\r\nimport { useStackedModals } from \"@sazka/utils/composables/use-stacked-modals\";\r\nimport { DateTimeUtils } from \"@sazka/utils/date-time-utils\";\r\nimport { callBonusomatSpin } from \"../../api/bonusomat-player-data-api\";\r\nimport { useNgSession } from \"@sazka/ng/ng-session\";\r\nimport { sazkaAlert } from \"@sazka/utils/sazka-alert\";\r\nimport { BonusomatSlotsSpin } from \"../../models/bonusomat-slots\";\r\nimport { BonusomatDatalayer } from \"../../utils/analytics/bonusomat-datalayer\";\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'bonusomat-spin-modal',\n props: {\n \"modelValue\": { type: Boolean, ...{ required: true } },\n \"modelModifiers\": {},\n },\n emits: /*@__PURE__*/_mergeModels([\"open-win-table\"], [\"update:modelValue\"]),\n setup(__props, { emit: __emit }) {\n\r\nconst emit = __emit;\r\n\r\nconst modelValue = _useModel<boolean>(__props, \"modelValue\");\r\n\r\nconst { bonusomatPlayerData, remainingSpinsCount, loadBonusomatPlayerData } = useBonusomatPlayerData();\r\nconst state = ref<SpinAutomatState>(\"EMPTY\");\r\n\r\nconst closeModalInternal = () => {\r\n if (state.value == \"ROLLING\" || state.value == \"STOPPING\") return;\r\n\r\n modelValue.value = false;\r\n};\r\n\r\nconst escapeHandler = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") {\r\n closeModalInternal();\r\n }\r\n};\r\n\r\nconst initModalState = () => {\r\n const isLastSpinToday = bonusomatPlayerData.lastSpin ? DateTimeUtils.isToday(bonusomatPlayerData.lastSpin) : false;\r\n if (isLastSpinToday && remainingSpinsCount.value > 0) {\r\n state.value = \"DISABLED\";\r\n } else if (remainingSpinsCount.value > 0) {\r\n state.value = \"ACTIVE\";\r\n } else {\r\n state.value = \"EMPTY\";\r\n }\r\n};\r\n\r\nconst { addToStackedModals, removeFromStackedModals } = useStackedModals();\r\n\r\nwatch(\r\n modelValue,\r\n (newModalIsOpen) => {\r\n if (newModalIsOpen) {\r\n addToStackedModals();\r\n window.addEventListener(\"keydown\", escapeHandler);\r\n initModalState();\r\n } else {\r\n removeFromStackedModals();\r\n window.removeEventListener(\"keydown\", escapeHandler);\r\n }\r\n },\r\n {\r\n immediate: true,\r\n }\r\n);\r\n\r\nconst { session } = useNgSession();\r\n\r\nconst winData = ref<BonusomatSlotsSpin>(null);\r\n\r\nconst modClass = computed(() => {\r\n return {\r\n lighten: state.value != \"DISABLED\" && state.value != \"WINNING\",\r\n winner: state.value === \"WINNING\" && winData.value?.winBoxTitle,\r\n };\r\n});\r\n\r\nconst startSpinHandler = async () => {\r\n try {\r\n state.value = \"ROLLING\";\r\n const delay = new Promise((resolve) => setTimeout(resolve, 2800));\r\n\r\n winData.value = await callBonusomatSpin(session.value?.PlayerID);\r\n await delay;\r\n\r\n BonusomatDatalayer.pushSuccessfullSpin();\r\n\r\n state.value = \"STOPPING\";\r\n } catch (err: unknown) {\r\n sazkaAlert(\"Chyba\", \"PÅ™i pokusu toÄenà bonusomatem se nám nÄ›co nepovedlo. Zkuste to prosÃm znovu.\");\r\n state.value = \"ACTIVE\";\r\n\r\n BonusomatDatalayer.pushSpinError(err as string);\r\n }\r\n};\r\n\r\nconst spinStoppedHandler = async () => {\r\n state.value = \"WINNING\";\r\n await loadBonusomatPlayerData();\r\n};\r\n\r\nconst showWinnerTableHandler = () => {\r\n emit(\"open-win-table\");\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(TransitionFade, null, {\n default: _withCtx(() => [\n (modelValue.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"bonusomat-spin-modal\", modClass.value])\n }, [\n _createElementVNode(\"div\", {\n class: \"bonusomat-spin-modal__background\",\n onClick: closeModalInternal\n }),\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(DsButton, {\n type: \"primary\",\n theme: \"dark\",\n class: \"bonusomat-spin-modal__close\",\n \"aria-label\": \"ZavÅ™Ãt\",\n \"icon-left\": \"cross\",\n onClick: closeModalInternal,\n \"data-test\": \"bonusomat-spin-modal-close\"\n }),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(BonusomatSpinWinner, {\n state: state.value,\n \"prize-text\": winData.value?.winBoxTitle\n }, null, 8, [\"state\", \"prize-text\"]),\n _createVNode(BonusomatSpinAutomat, {\n state: state.value,\n \"win-icons\": [winData.value?.reelIcon1, winData.value?.reelIcon2, winData.value?.reelIcon3],\n onSpinStopped: spinStoppedHandler\n }, null, 8, [\"state\", \"win-icons\"]),\n _createVNode(BonusomatSpinButtons, {\n state: state.value,\n onSpinClick: startSpinHandler,\n onCloseModal: closeModalInternal\n }, null, 8, [\"state\"]),\n _createVNode(BonusomatSpinFooter, {\n \"remaining-spins-count\": _unref(remainingSpinsCount),\n onShowWinnerTable: showWinnerTableHandler\n }, null, 8, [\"remaining-spins-count\"])\n ])\n ])\n ], 2))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }))\n}\n}\n\n})","<template>\r\n <TransitionFade>\r\n <div class=\"bonusomat-spin-modal\" :class=\"modClass\" v-if=\"modelValue\">\r\n <div class=\"bonusomat-spin-modal__background\" @click=\"closeModalInternal\"></div>\r\n\r\n <div class=\"bonusomat-spin-modal__content-wrapper\">\r\n <DsButton\r\n type=\"primary\"\r\n theme=\"dark\"\r\n class=\"bonusomat-spin-modal__close\"\r\n aria-label=\"ZavÅ™Ãt\"\r\n icon-left=\"cross\"\r\n @click=\"closeModalInternal\"\r\n data-test=\"bonusomat-spin-modal-close\"\r\n />\r\n <div class=\"bonusomat-spin-modal__content\">\r\n <BonusomatSpinWinner :state=\"state\" :prize-text=\"winData?.winBoxTitle\" />\r\n <BonusomatSpinAutomat\r\n :state=\"state\"\r\n :win-icons=\"[winData?.reelIcon1, winData?.reelIcon2, winData?.reelIcon3]\"\r\n @spin-stopped=\"spinStoppedHandler\"\r\n />\r\n <BonusomatSpinButtons\r\n :state=\"state\"\r\n @spin-click=\"startSpinHandler\"\r\n @close-modal=\"closeModalInternal\"\r\n />\r\n <BonusomatSpinFooter\r\n :remaining-spins-count=\"remainingSpinsCount\"\r\n @show-winner-table=\"showWinnerTableHandler\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n </TransitionFade>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed, ref, watch } from \"vue\";\r\nimport DsButton from \"@sazka/design-system/src/button/ds-button.vue\";\r\nimport TransitionFade from \"@sazka/design-system/src/transitions/transition-fade.vue\";\r\n\r\nimport BonusomatSpinAutomat from \"./bonusomat-spin-modal/bonusomat-spin-automat.vue\";\r\nimport BonusomatSpinWinner from \"./bonusomat-spin-modal/bonusomat-spin-winner.vue\";\r\nimport BonusomatSpinButtons from \"./bonusomat-spin-modal/bonusomat-spin-buttons.vue\";\r\nimport BonusomatSpinFooter from \"./bonusomat-spin-modal/bonusomat-spin-footer.vue\";\r\nimport { SpinAutomatState } from \"../../models/bonusomat-spin-types\";\r\nimport { useBonusomatPlayerData } from \"../../composables/use-bonusomat-player-data\";\r\nimport { useStackedModals } from \"@sazka/utils/composables/use-stacked-modals\";\r\nimport { DateTimeUtils } from \"@sazka/utils/date-time-utils\";\r\nimport { callBonusomatSpin } from \"../../api/bonusomat-player-data-api\";\r\nimport { useNgSession } from \"@sazka/ng/ng-session\";\r\nimport { sazkaAlert } from \"@sazka/utils/sazka-alert\";\r\nimport { BonusomatSlotsSpin } from \"../../models/bonusomat-slots\";\r\nimport { BonusomatDatalayer } from \"../../utils/analytics/bonusomat-datalayer\";\r\n\r\nconst emit = defineEmits([\"open-win-table\"]);\r\n\r\nconst modelValue = defineModel<boolean>({ required: true });\r\n\r\nconst { bonusomatPlayerData, remainingSpinsCount, loadBonusomatPlayerData } = useBonusomatPlayerData();\r\nconst state = ref<SpinAutomatState>(\"EMPTY\");\r\n\r\nconst closeModalInternal = () => {\r\n if (state.value == \"ROLLING\" || state.value == \"STOPPING\") return;\r\n\r\n modelValue.value = false;\r\n};\r\n\r\nconst escapeHandler = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") {\r\n closeModalInternal();\r\n }\r\n};\r\n\r\nconst initModalState = () => {\r\n const isLastSpinToday = bonusomatPlayerData.lastSpin ? DateTimeUtils.isToday(bonusomatPlayerData.lastSpin) : false;\r\n if (isLastSpinToday && remainingSpinsCount.value > 0) {\r\n state.value = \"DISABLED\";\r\n } else if (remainingSpinsCount.value > 0) {\r\n state.value = \"ACTIVE\";\r\n } else {\r\n state.value = \"EMPTY\";\r\n }\r\n};\r\n\r\nconst { addToStackedModals, removeFromStackedModals } = useStackedModals();\r\n\r\nwatch(\r\n modelValue,\r\n (newModalIsOpen) => {\r\n if (newModalIsOpen) {\r\n addToStackedModals();\r\n window.addEventListener(\"keydown\", escapeHandler);\r\n initModalState();\r\n } else {\r\n removeFromStackedModals();\r\n window.removeEventListener(\"keydown\", escapeHandler);\r\n }\r\n },\r\n {\r\n immediate: true,\r\n }\r\n);\r\n\r\nconst { session } = useNgSession();\r\n\r\nconst winData = ref<BonusomatSlotsSpin>(null);\r\n\r\nconst modClass = computed(() => {\r\n return {\r\n lighten: state.value != \"DISABLED\" && state.value != \"WINNING\",\r\n winner: state.value === \"WINNING\" && winData.value?.winBoxTitle,\r\n };\r\n});\r\n\r\nconst startSpinHandler = async () => {\r\n try {\r\n state.value = \"ROLLING\";\r\n const delay = new Promise((resolve) => setTimeout(resolve, 2800));\r\n\r\n winData.value = await callBonusomatSpin(session.value?.PlayerID);\r\n await delay;\r\n\r\n BonusomatDatalayer.pushSuccessfullSpin();\r\n\r\n state.value = \"STOPPING\";\r\n } catch (err: unknown) {\r\n sazkaAlert(\"Chyba\", \"PÅ™i pokusu toÄenà bonusomatem se nám nÄ›co nepovedlo. Zkuste to prosÃm znovu.\");\r\n state.value = \"ACTIVE\";\r\n\r\n BonusomatDatalayer.pushSpinError(err as string);\r\n }\r\n};\r\n\r\nconst spinStoppedHandler = async () => {\r\n state.value = \"WINNING\";\r\n await loadBonusomatPlayerData();\r\n};\r\n\r\nconst showWinnerTableHandler = () => {\r\n emit(\"open-win-table\");\r\n};\r\n</script>\r\n","import script from \"./bonusomat-spin-modal.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./bonusomat-spin-modal.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, Fragment as _Fragment, toDisplayString as _toDisplayString, renderList as _renderList, normalizeStyle as _normalizeStyle, normalizeClass as _normalizeClass, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"bonusomat-slots\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"bonusomat-slots__group\"\n}\nconst _hoisted_3 = {\n key: 0,\n class: \"bonusomat-slots__text\"\n}\nconst _hoisted_4 = { class: \"bonusomat-slots__text\" }\nconst _hoisted_5 = { class: \"bonusomat-slots__text\" }\nconst _hoisted_6 = { class: \"bonusomat-slots__text--gray\" }\nconst _hoisted_7 = { class: \"bonusomat-slots__points\" }\nconst _hoisted_8 = {\n key: 1,\n class: \"bonusomat-slots__group\"\n}\nconst _hoisted_9 = { class: \"bonusomat-slots__points\" }\nconst _hoisted_10 = [\"innerHTML\"]\nconst _hoisted_11 = { class: \"bonusomat-win-table__grid\" }\n\nimport { computed, ref } from \"vue\";\r\nimport { UrlUtils } from \"@sazka/utils/url\";\r\nimport BonusomatSpinModal from \"./bonusomat-spin-modal.vue\";\r\nimport MobileAppLink from \"@sazka/mobile-apps/components/mobile-app-link.vue\";\r\n\r\nimport TypographyHeadline from \"@sazka/design-system/src/typography/typography-headline.vue\";\r\nimport DsButton from \"@sazka/design-system/src/button/ds-button.vue\";\r\nimport WebpImage from \"@sazka/design-system/src/image/webp-image.vue\";\r\nimport DsIcon from \"@sazka/design-system/src/icon/ds-icon.vue\";\r\nimport DsModalDialog from \"@sazka/design-system/src/modal-dialog/ds-modal-dialog.vue\";\r\nimport DsBottomSlotActionBar from \"@sazka/design-system/src/bottom-slot/ds-bottom-slot-action-bar.vue\";\r\nimport DsTopSlotHeadlineSubheadline from \"@sazka/design-system/src/top-slot/ds-top-subheadline.vue\";\r\nimport DsTable from \"@sazka/design-system/src/table/ds-table.vue\";\r\nimport DsTableRow from \"@sazka/design-system/src/table-row/ds-table-row.vue\";\r\nimport DsTableCell from \"@sazka/design-system/src/table-cell/ds-table-cell.vue\";\r\nimport { BonusomatDatalayer } from \"@/casino/bonusomat/utils/analytics/bonusomat-datalayer\";\r\n\r\nimport useBonusomatData from \"../../composables/use-bonusomat-data\";\r\nimport useBonusomatWinTables from \"../../composables/use-bonusomat-win-tables\";\r\nimport useBonusomatOnboarding from \"../../composables/use-bonusomat-onboarding\";\r\n\r\nimport { sazkaAlert } from \"@sazka/utils/sazka-alert\";\r\nimport { bonImgUrl } from \"../../utils/image-src\";\r\nimport { useBreakpoints } from \"@sazka/utils/composables/use-breakpoints\";\r\nimport { useBonusomatPlayerData } from \"../../composables/use-bonusomat-player-data\";\r\nimport { useLocalStorage } from \"@sazka/utils/use-storage\";\r\n\r\nconst openSpinModalQueryParamName = \"slots\";\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'bonusomat-slots',\n setup(__props) {\n\r\nconst { bonusomatPlayerData, isPlayerDataLoaded, playerDataHasError, remainingSpinsCount, fulfilledTextInclined } =\r\n useBonusomatPlayerData();\r\nconst { hasActiveQuest, deactivateQuest } = useBonusomatData();\r\n\r\nconst { openBonusomatOnboarding, setOnboardingAlreadyVisited } = useBonusomatOnboarding();\r\n\r\nconst { slotsWinTable, loadSlotsWinTable } = useBonusomatWinTables();\r\n\r\nconst isSpinAvailable = computed(() => {\r\n return remainingSpinsCount.value > 0 && isPlayerDataLoaded.value;\r\n});\r\nconst isInactive = computed(() => {\r\n return hasActiveQuest.value && remainingSpinsCount.value === 0 && isPlayerDataLoaded.value;\r\n});\r\n\r\nconst isModalOpen = ref(false);\r\n\r\nconst openModal = async () => {\r\n try {\r\n if (slotsWinTable.value) return;\r\n\r\n await loadSlotsWinTable();\r\n } catch (error) {\r\n sazkaAlert(\"Omlouváme se, pÅ™i naÄÃtánà tabulky výher nastala chyba.\", \"Zkuste to prosÃm pozdÄ›ji.\");\r\n } finally {\r\n if (slotsWinTable.value) {\r\n isModalOpen.value = true;\r\n }\r\n\r\n BonusomatDatalayer.pushMoreInfoClick(\"Tabulka výher\", bonusomatPlayerData.points, remainingSpinsCount.value);\r\n }\r\n};\r\n\r\nconst openBonusomatOnboardingClick = () => {\r\n openBonusomatOnboarding(\"slots\");\r\n BonusomatDatalayer.pushMoreInfoClick(\"Bonusomat\", bonusomatPlayerData.points, remainingSpinsCount.value);\r\n};\r\n\r\nconst spinModalIsOpen = ref(false);\r\n\r\nconst isDesktop = useBreakpoints(\"sm\");\r\n\r\nconst queryParams = new URLSearchParams(window.location.search);\r\nif (queryParams.has(openSpinModalQueryParamName)) {\r\n setOnboardingAlreadyVisited();\r\n\r\n UrlUtils.clearUrlParams([openSpinModalQueryParamName]);\r\n spinModalIsOpen.value = true;\r\n}\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"section\", _hoisted_1, [\n _createVNode(TypographyHeadline, {\n class: \"bonusomat-slots__headline\",\n theme: \"dark\"\n }, {\n default: _withCtx(() => [\n _cache[6] || (_cache[6] = _createTextVNode(\" Bonusomat \")),\n _createVNode(DsButton, {\n type: \"text\",\n theme: \"dark\",\n \"icon-right\": \"help\",\n onClick: openBonusomatOnboardingClick,\n class: \"button-onboarding\"\n }),\n _createVNode(DsButton, {\n theme: \"dark\",\n type: \"interaction\",\n size: \"sm\",\n \"icon-right\": \"gift\",\n onClick: openModal\n }, {\n default: _withCtx(() => _cache[5] || (_cache[5] = [\n _createTextVNode(\" Tabulka výher \")\n ])),\n _: 1\n })\n ]),\n _: 1\n }),\n _createVNode(WebpImage, {\n src: _unref(bonImgUrl)('slots/mr-green-bonusomat', 'png'),\n alt: \"Pan Zelený stojÃcà vedle Bonusomatu\",\n \"css-class\": \"bonusomat-slots__image\"\n }, null, 8, [\"src\"]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"bonusomat-slots__action-bar\", {\r\n 'bonusomat-slots__action-bar--inactive': isInactive.value,\r\n 'bonusomat-slots__action-bar--spin': isSpinAvailable.value,\r\n 'bonusomat-slots__action-bar--error': _unref(playerDataHasError),\r\n }])\n }, [\n _createVNode(WebpImage, {\n src: _unref(bonImgUrl)('slots/bonusomat-slots', 'png'),\n alt: \"Bonusomat\",\n class: \"bonusomat-slots__bar-image\"\n }, null, 8, [\"src\"]),\n _createVNode(DsIcon, {\n name: \"b-mat\",\n class: \"bonusomat-slots__bar-icon\"\n }),\n (_unref(isPlayerDataLoaded))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (_unref(playerDataHasError))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, \" Omlouváme se, pÅ™i naÄÃtánà bodů nastala chyba. \"))\n : (isInactive.value)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _cache[8] || (_cache[8] = _createElementVNode(\"div\", { class: \"bonusomat-slots__text\" }, [\n _createTextVNode(\" Po dobu hranà Questu \"),\n _createElementVNode(\"br\"),\n _createElementVNode(\"span\", { class: \"bonusomat-slots__text--thin\" }, \"je Bonusomat neaktivnÃ\")\n ], -1)),\n _createVNode(DsButton, {\n size: \"sm\",\n type: \"error\",\n \"icon-right\": \"cross\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_unref(deactivateQuest)('main')))\n }, {\n default: _withCtx(() => _cache[7] || (_cache[7] = [\n _createTextVNode(\" UkonÄit Quest \")\n ])),\n _: 1\n })\n ], 64))\n : (isSpinAvailable.value)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 2 }, [\n _createElementVNode(\"div\", _hoisted_4, [\n _cache[9] || (_cache[9] = _createElementVNode(\"span\", { class: \"bonusomat-slots__text--thin\" }, \"K dispozici\", -1)),\n _createTextVNode(\" \" + _toDisplayString(_unref(remainingSpinsCount)) + \" zatoÄenà \", 1)\n ]),\n _createVNode(DsButton, {\n size: \"sm\",\n \"icon-right\": \"rotate\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (spinModalIsOpen.value = !spinModalIsOpen.value))\n }, {\n default: _withCtx(() => _cache[10] || (_cache[10] = [\n _createTextVNode(\" ZÃskat odmÄ›nu \")\n ])),\n _: 1\n })\n ], 64))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 3 }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(_unref(fulfilledTextInclined)), 1),\n _cache[11] || (_cache[11] = _createElementVNode(\"br\", null, null, -1)),\n _createTextVNode(\" \" + _toDisplayString(_unref(bonusomatPlayerData).points) + \" z 5 úkolů \", 1)\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(bonusomatPlayerData).points, (index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"bonusomat-slots__point bonusomat-slots__point--completed\",\n key: index\n }, [\n _createVNode(DsIcon, { name: \"check\" })\n ]))\n }), 128)),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(5 - _unref(bonusomatPlayerData).points, (index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"bonusomat-slots__point\",\n key: index\n }, _toDisplayString(_unref(bonusomatPlayerData).points + index), 1))\n }), 128))\n ])\n ], 64))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _cache[12] || (_cache[12] = _createElementVNode(\"div\", { class: \"bonusomat-slots__text\" }, [\n _createElementVNode(\"div\", { class: \"bonusomat-slots__text--placeholder bonusomat-placeholder__skeleton\" }),\n _createElementVNode(\"div\", { class: \"bonusomat-slots__text--placeholder bonusomat-placeholder__skeleton\" })\n ], -1)),\n _createElementVNode(\"div\", _hoisted_9, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(5, (index) => {\n return _createElementVNode(\"div\", {\n class: \"bonusomat-slots__point bonusomat-slots__point--placeholder bonusomat-placeholder__skeleton\",\n key: index,\n style: _normalizeStyle({\r\n animationDelay: `${0.2 + index * 0.1}s`,\r\n })\n }, null, 4)\n }), 64))\n ])\n ]))\n ], 2),\n _createVNode(DsModalDialog, {\n modelValue: isModalOpen.value,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((isModalOpen).value = $event)),\n \"css-class\": \"bonusomat-win-table\",\n theme: \"dark\"\n }, {\n top: _withCtx(() => [\n _createVNode(DsTopSlotHeadlineSubheadline, {\n headline: _unref(slotsWinTable)?.title\n }, null, 8, [\"headline\"]),\n _createElementVNode(\"p\", {\n class: \"bonusomat-win-table__description\",\n innerHTML: _unref(slotsWinTable)?.description\n }, null, 8, _hoisted_10)\n ]),\n content: _withCtx(() => [\n _cache[15] || (_cache[15] = _createElementVNode(\"h3\", { class: \"bonusomat-win-table__label\" }, \"Co můžete vyhrát?\", -1)),\n _createElementVNode(\"div\", _hoisted_11, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(slotsWinTable)?.sections, (section, index) => {\n return (_openBlock(), _createBlock(DsTable, {\n theme: \"dark\",\n key: index\n }, {\n default: _withCtx(() => [\n (index === 0 || (index === 1 && _unref(isDesktop)))\n ? (_openBlock(), _createBlock(DsTableRow, { key: 0 }, {\n default: _withCtx(() => [\n _createVNode(DsTableCell, { type: \"th\" }, {\n default: _withCtx(() => _cache[13] || (_cache[13] = [\n _createTextVNode(\"Kombinace\")\n ])),\n _: 1\n }),\n _createVNode(DsTableCell, { type: \"th\" }, {\n default: _withCtx(() => _cache[14] || (_cache[14] = [\n _createTextVNode(\"Výhra\")\n ])),\n _: 1\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(DsTableRow, null, {\n default: _withCtx(() => [\n _createVNode(DsTableCell, null, {\n default: _withCtx(() => [\n _createVNode(WebpImage, {\n src: section.row1.image,\n alt: \"\",\n \"css-class\": \"bonusomat-win-table__table-img\"\n }, null, 8, [\"src\"])\n ]),\n _: 2\n }, 1024),\n _createVNode(DsTableCell, null, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(section.row1.text), 1)\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1024),\n _createVNode(DsTableRow, null, {\n default: _withCtx(() => [\n _createVNode(DsTableCell, null, {\n default: _withCtx(() => [\n _createVNode(WebpImage, {\n src: section.row2.image,\n alt: \"\",\n \"css-class\": \"bonusomat-win-table__table-img\"\n }, null, 8, [\"src\"])\n ]),\n _: 2\n }, 1024),\n _createVNode(DsTableCell, null, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(section.row2.text), 1)\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1024),\n _createVNode(DsTableRow, null, {\n default: _withCtx(() => [\n _createVNode(DsTableCell, null, {\n default: _withCtx(() => [\n _createVNode(WebpImage, {\n src: section.row3.image,\n alt: \"\",\n \"css-class\": \"bonusomat-win-table__table-img\"\n }, null, 8, [\"src\"])\n ]),\n _: 2\n }, 1024),\n _createVNode(DsTableCell, null, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(section.row3.text), 1)\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1024)\n ]),\n _: 2\n }, 1024))\n }), 128))\n ])\n ]),\n bottom: _withCtx(() => [\n _createVNode(DsBottomSlotActionBar, {\n \"has-btn-close\": false,\n \"has-btn-submit\": false\n }, {\n additional: _withCtx(() => [\n _createVNode(MobileAppLink, {\n href: _unref(slotsWinTable).rules,\n target: \"_blank\",\n \"event-name\": \"openPdf\",\n \"event-argument\": _unref(slotsWinTable).rules,\n class: \"bonusomat-win-table__button-rules button button--primary button--dark button--sm button--icon\",\n \"icon-right\": \"arrow-right-thin\",\n \"open-in-new-tab\": true,\n onLinkClicked: _cache[2] || (_cache[2] = ($event: any) => (\r\n _unref(BonusomatDatalayer).pushClickWinRules(_unref(bonusomatPlayerData).points, _unref(remainingSpinsCount))\r\n ))\n }, {\n default: _withCtx(() => _cache[16] || (_cache[16] = [\n _createTextVNode(\"Kompletnà pravidla\")\n ])),\n _: 1\n }, 8, [\"href\", \"event-argument\"])\n ]),\n _: 1\n })\n ]),\n _: 1\n }, 8, [\"modelValue\"]),\n _createVNode(BonusomatSpinModal, {\n modelValue: spinModalIsOpen.value,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((spinModalIsOpen).value = $event)),\n onOpenWinTable: openModal\n }, null, 8, [\"modelValue\"])\n ]))\n}\n}\n\n})","<template>\r\n <section class=\"bonusomat-slots\">\r\n <TypographyHeadline class=\"bonusomat-slots__headline\" theme=\"dark\">\r\n Bonusomat\r\n <DsButton\r\n type=\"text\"\r\n theme=\"dark\"\r\n icon-right=\"help\"\r\n @click=\"openBonusomatOnboardingClick\"\r\n class=\"button-onboarding\"\r\n />\r\n <DsButton theme=\"dark\" type=\"interaction\" size=\"sm\" icon-right=\"gift\" @click=\"openModal\">\r\n Tabulka výher\r\n </DsButton>\r\n </TypographyHeadline>\r\n\r\n <WebpImage\r\n :src=\"bonImgUrl('slots/mr-green-bonusomat', 'png')\"\r\n alt=\"Pan Zelený stojÃcà vedle Bonusomatu\"\r\n css-class=\"bonusomat-slots__image\"\r\n />\r\n\r\n <div\r\n class=\"bonusomat-slots__action-bar\"\r\n :class=\"{\r\n 'bonusomat-slots__action-bar--inactive': isInactive,\r\n 'bonusomat-slots__action-bar--spin': isSpinAvailable,\r\n 'bonusomat-slots__action-bar--error': playerDataHasError,\r\n }\"\r\n >\r\n <WebpImage\r\n :src=\"bonImgUrl('slots/bonusomat-slots', 'png')\"\r\n alt=\"Bonusomat\"\r\n class=\"bonusomat-slots__bar-image\"\r\n />\r\n <DsIcon name=\"b-mat\" class=\"bonusomat-slots__bar-icon\" />\r\n\r\n <div class=\"bonusomat-slots__group\" v-if=\"isPlayerDataLoaded\">\r\n <div class=\"bonusomat-slots__text\" v-if=\"playerDataHasError\">\r\n Omlouváme se, pÅ™i naÄÃtánà bodů nastala chyba.\r\n </div>\r\n <template v-else-if=\"isInactive\">\r\n <div class=\"bonusomat-slots__text\">\r\n Po dobu hranà Questu\r\n <br />\r\n <span class=\"bonusomat-slots__text--thin\">je Bonusomat neaktivnÃ</span>\r\n </div>\r\n <DsButton size=\"sm\" type=\"error\" icon-right=\"cross\" @click=\"deactivateQuest('main')\">\r\n UkonÄit Quest\r\n </DsButton>\r\n </template>\r\n\r\n <template v-else-if=\"isSpinAvailable\">\r\n <div class=\"bonusomat-slots__text\">\r\n <span class=\"bonusomat-slots__text--thin\">K dispozici</span>\r\n {{ remainingSpinsCount }} zatoÄenÃ\r\n </div>\r\n <DsButton size=\"sm\" icon-right=\"rotate\" @click=\"spinModalIsOpen = !spinModalIsOpen\">\r\n ZÃskat odmÄ›nu\r\n </DsButton>\r\n </template>\r\n\r\n <template v-else>\r\n <div class=\"bonusomat-slots__text\">\r\n <span class=\"bonusomat-slots__text--gray\"> {{ fulfilledTextInclined }} </span>\r\n <br />\r\n {{ bonusomatPlayerData.points }} z 5 úkolů\r\n </div>\r\n <div class=\"bonusomat-slots__points\">\r\n <div\r\n class=\"bonusomat-slots__point bonusomat-slots__point--completed\"\r\n v-for=\"index in bonusomatPlayerData.points\"\r\n :key=\"index\"\r\n >\r\n <DsIcon name=\"check\" />\r\n </div>\r\n <div\r\n class=\"bonusomat-slots__point\"\r\n v-for=\"index in 5 - bonusomatPlayerData.points\"\r\n :key=\"index\"\r\n >\r\n {{ bonusomatPlayerData.points + index }}\r\n </div>\r\n </div>\r\n </template>\r\n </div>\r\n <div class=\"bonusomat-slots__group\" v-else>\r\n <div class=\"bonusomat-slots__text\">\r\n <div class=\"bonusomat-slots__text--placeholder bonusomat-placeholder__skeleton\"></div>\r\n <div class=\"bonusomat-slots__text--placeholder bonusomat-placeholder__skeleton\"></div>\r\n </div>\r\n <div class=\"bonusomat-slots__points\">\r\n <div\r\n class=\"bonusomat-slots__point bonusomat-slots__point--placeholder bonusomat-placeholder__skeleton\"\r\n v-for=\"index in 5\"\r\n :key=\"index\"\r\n :style=\"{\r\n animationDelay: `${0.2 + index * 0.1}s`,\r\n }\"\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <DsModalDialog v-model=\"isModalOpen\" css-class=\"bonusomat-win-table\" theme=\"dark\">\r\n <template #top>\r\n <DsTopSlotHeadlineSubheadline :headline=\"slotsWinTable?.title\" />\r\n <p class=\"bonusomat-win-table__description\" v-html=\"slotsWinTable?.description\"></p>\r\n </template>\r\n <template #content>\r\n <h3 class=\"bonusomat-win-table__label\">Co můžete vyhrát?</h3>\r\n <div class=\"bonusomat-win-table__grid\">\r\n <DsTable theme=\"dark\" v-for=\"(section, index) in slotsWinTable?.sections\" :key=\"index\">\r\n <DsTableRow v-if=\"index === 0 || (index === 1 && isDesktop)\">\r\n <DsTableCell type=\"th\">Kombinace</DsTableCell>\r\n <DsTableCell type=\"th\">Výhra</DsTableCell>\r\n </DsTableRow>\r\n <DsTableRow>\r\n <DsTableCell>\r\n <WebpImage\r\n :src=\"section.row1.image\"\r\n alt=\"\"\r\n css-class=\"bonusomat-win-table__table-img\"\r\n />\r\n </DsTableCell>\r\n <DsTableCell>{{ section.row1.text }}</DsTableCell>\r\n </DsTableRow>\r\n <DsTableRow>\r\n <DsTableCell>\r\n <WebpImage\r\n :src=\"section.row2.image\"\r\n alt=\"\"\r\n css-class=\"bonusomat-win-table__table-img\"\r\n />\r\n </DsTableCell>\r\n <DsTableCell>{{ section.row2.text }}</DsTableCell>\r\n </DsTableRow>\r\n <DsTableRow>\r\n <DsTableCell>\r\n <WebpImage\r\n :src=\"section.row3.image\"\r\n alt=\"\"\r\n css-class=\"bonusomat-win-table__table-img\"\r\n />\r\n </DsTableCell>\r\n <DsTableCell>{{ section.row3.text }}</DsTableCell>\r\n </DsTableRow>\r\n </DsTable>\r\n </div>\r\n </template>\r\n <template #bottom>\r\n <DsBottomSlotActionBar :has-btn-close=\"false\" :has-btn-submit=\"false\">\r\n <template #additional>\r\n <MobileAppLink\r\n :href=\"slotsWinTable.rules\"\r\n target=\"_blank\"\r\n event-name=\"openPdf\"\r\n :event-argument=\"slotsWinTable.rules\"\r\n class=\"bonusomat-win-table__button-rules button button--primary button--dark button--sm button--icon\"\r\n icon-right=\"arrow-right-thin\"\r\n :open-in-new-tab=\"true\"\r\n @link-clicked=\"\r\n BonusomatDatalayer.pushClickWinRules(bonusomatPlayerData.points, remainingSpinsCount)\r\n \"\r\n >Kompletnà pravidla</MobileAppLink\r\n >\r\n </template>\r\n </DsBottomSlotActionBar>\r\n </template>\r\n </DsModalDialog>\r\n\r\n <BonusomatSpinModal v-model=\"spinModalIsOpen\" @open-win-table=\"openModal\" />\r\n </section>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { computed, ref } from \"vue\";\r\nimport { UrlUtils } from \"@sazka/utils/url\";\r\nimport BonusomatSpinModal from \"./bonusomat-spin-modal.vue\";\r\nimport MobileAppLink from \"@sazka/mobile-apps/components/mobile-app-link.vue\";\r\n\r\nimport TypographyHeadline from \"@sazka/design-system/src/typography/typography-headline.vue\";\r\nimport DsButton from \"@sazka/design-system/src/button/ds-button.vue\";\r\nimport WebpImage from \"@sazka/design-system/src/image/webp-image.vue\";\r\nimport DsIcon from \"@sazka/design-system/src/icon/ds-icon.vue\";\r\nimport DsModalDialog from \"@sazka/design-system/src/modal-dialog/ds-modal-dialog.vue\";\r\nimport DsBottomSlotActionBar from \"@sazka/design-system/src/bottom-slot/ds-bottom-slot-action-bar.vue\";\r\nimport DsTopSlotHeadlineSubheadline from \"@sazka/design-system/src/top-slot/ds-top-subheadline.vue\";\r\nimport DsTable from \"@sazka/design-system/src/table/ds-table.vue\";\r\nimport DsTableRow from \"@sazka/design-system/src/table-row/ds-table-row.vue\";\r\nimport DsTableCell from \"@sazka/design-system/src/table-cell/ds-table-cell.vue\";\r\nimport { BonusomatDatalayer } from \"@/casino/bonusomat/utils/analytics/bonusomat-datalayer\";\r\n\r\nimport useBonusomatData from \"../../composables/use-bonusomat-data\";\r\nimport useBonusomatWinTables from \"../../composables/use-bonusomat-win-tables\";\r\nimport useBonusomatOnboarding from \"../../composables/use-bonusomat-onboarding\";\r\n\r\nimport { sazkaAlert } from \"@sazka/utils/sazka-alert\";\r\nimport { bonImgUrl } from \"../../utils/image-src\";\r\nimport { useBreakpoints } from \"@sazka/utils/composables/use-breakpoints\";\r\nimport { useBonusomatPlayerData } from \"../../composables/use-bonusomat-player-data\";\r\nimport { useLocalStorage } from \"@sazka/utils/use-storage\";\r\n\r\nconst { bonusomatPlayerData, isPlayerDataLoaded, playerDataHasError, remainingSpinsCount, fulfilledTextInclined } =\r\n useBonusomatPlayerData();\r\nconst { hasActiveQuest, deactivateQuest } = useBonusomatData();\r\n\r\nconst { openBonusomatOnboarding, setOnboardingAlreadyVisited } = useBonusomatOnboarding();\r\n\r\nconst { slotsWinTable, loadSlotsWinTable } = useBonusomatWinTables();\r\n\r\nconst isSpinAvailable = computed(() => {\r\n return remainingSpinsCount.value > 0 && isPlayerDataLoaded.value;\r\n});\r\nconst isInactive = computed(() => {\r\n return hasActiveQuest.value && remainingSpinsCount.value === 0 && isPlayerDataLoaded.value;\r\n});\r\n\r\nconst isModalOpen = ref(false);\r\n\r\nconst openModal = async () => {\r\n try {\r\n if (slotsWinTable.value) return;\r\n\r\n await loadSlotsWinTable();\r\n } catch (error) {\r\n sazkaAlert(\"Omlouváme se, pÅ™i naÄÃtánà tabulky výher nastala chyba.\", \"Zkuste to prosÃm pozdÄ›ji.\");\r\n } finally {\r\n if (slotsWinTable.value) {\r\n isModalOpen.value = true;\r\n }\r\n\r\n BonusomatDatalayer.pushMoreInfoClick(\"Tabulka výher\", bonusomatPlayerData.points, remainingSpinsCount.value);\r\n }\r\n};\r\n\r\nconst openBonusomatOnboardingClick = () => {\r\n openBonusomatOnboarding(\"slots\");\r\n BonusomatDatalayer.pushMoreInfoClick(\"Bonusomat\", bonusomatPlayerData.points, remainingSpinsCount.value);\r\n};\r\n\r\nconst spinModalIsOpen = ref(false);\r\n\r\nconst isDesktop = useBreakpoints(\"sm\");\r\n\r\nconst openSpinModalQueryParamName = \"slots\";\r\nconst queryParams = new URLSearchParams(window.location.search);\r\nif (queryParams.has(openSpinModalQueryParamName)) {\r\n setOnboardingAlreadyVisited();\r\n\r\n UrlUtils.clearUrlParams([openSpinModalQueryParamName]);\r\n spinModalIsOpen.value = true;\r\n}\r\n</script>\r\n","import script from \"./bonusomat-slots.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./bonusomat-slots.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"bonusomat-modal__quest-games-scroll-wrap\" }\nconst _hoisted_2 = { class: \"bonusomat-modal__quest-games\" }\nconst _hoisted_3 = [\"onClick\"]\n\nimport { computed } from \"vue\";\r\nimport { BonusomatQuestTask } from \"../../models/bonusomat-quest-detail\";\r\nimport { BonusomatDatalayer } from \"@/casino/bonusomat/utils/analytics/bonusomat-datalayer\";\r\nimport WebpImage from \"@sazka/design-system/src/image/webp-image.vue\";\r\nimport useBonusomatData from \"../../composables/use-bonusomat-data\";\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'bonusomat-quest-detail-games',\n props: {\n task: {},\n questName: {}\n },\n emits: [\"closeModal\"],\n setup(__props: any, { emit: __emit }) {\n\r\nconst { gamesData, openGame } = useBonusomatData();\r\n\r\nconst emit = __emit;\r\n\r\nconst props = __props;\r\n\r\nsetTimeout(() => {\r\n BonusomatDatalayer.pushImpressQuestGames(`${props.questName};${props.task.title}`);\r\n}, 0);\r\n\r\nconst openGameClick = async (id: string, gameName: string, gameIndex: number) => {\r\n openGame(id);\r\n\r\n setTimeout(() => {\r\n BonusomatDatalayer.pushOpenQuestGame(props.task.title, gameIndex + 1);\r\n }, 0);\r\n\r\n emit(\"closeModal\");\r\n};\r\n\r\nconst activeTaskGames = computed(() => gamesData.value.filter((game) => props.task.games?.includes(game.id)));\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(activeTaskGames.value, (game, gameIndex) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"bonusomat-board__modal__game\",\n key: game.id,\n onClick: ($event: any) => (openGameClick(game.id, game.name, gameIndex))\n }, [\n _createVNode(WebpImage, {\n src: game.icon,\n alt: `Ikona hry ${game.name}`,\n \"css-class\": \"bonusomat-board__modal__game__img\"\n }, null, 8, [\"src\", \"alt\"]),\n _createTextVNode(\" \" + _toDisplayString(game.name), 1)\n ], 8, _hoisted_3))\n }), 128))\n ])\n ]))\n}\n}\n\n})","<template>\r\n <div class=\"bonusomat-modal__quest-games-scroll-wrap\">\r\n <div class=\"bonusomat-modal__quest-games\">\r\n <div\r\n class=\"bonusomat-board__modal__game\"\r\n v-for=\"(game, gameIndex) in activeTaskGames\"\r\n :key=\"game.id\"\r\n @click=\"openGameClick(game.id, game.name, gameIndex)\"\r\n >\r\n <WebpImage\r\n :src=\"game.icon\"\r\n :alt=\"`Ikona hry ${game.name}`\"\r\n css-class=\"bonusomat-board__modal__game__img\"\r\n />\r\n {{ game.name }}\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { computed } from \"vue\";\r\nimport { BonusomatQuestTask } from \"../../models/bonusomat-quest-detail\";\r\nimport { BonusomatDatalayer } from \"@/casino/bonusomat/utils/analytics/bonusomat-datalayer\";\r\nimport WebpImage from \"@sazka/design-system/src/image/webp-image.vue\";\r\nimport useBonusomatData from \"../../composables/use-bonusomat-data\";\r\n\r\nconst { gamesData, openGame } = useBonusomatData();\r\n\r\nconst emit = defineEmits([\"closeModal\"]);\r\n\r\nconst props = defineProps<{\r\n task: BonusomatQuestTask;\r\n questName: string;\r\n}>();\r\n\r\nsetTimeout(() => {\r\n BonusomatDatalayer.pushImpressQuestGames(`${props.questName};${props.task.title}`);\r\n}, 0);\r\n\r\nconst openGameClick = async (id: string, gameName: string, gameIndex: number) => {\r\n openGame(id);\r\n\r\n setTimeout(() => {\r\n BonusomatDatalayer.pushOpenQuestGame(props.task.title, gameIndex + 1);\r\n }, 0);\r\n\r\n emit(\"closeModal\");\r\n};\r\n\r\nconst activeTaskGames = computed(() => gamesData.value.filter((game) => props.task.games?.includes(game.id)));\r\n</script>\r\n","import script from \"./bonusomat-quest-detail-games.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./bonusomat-quest-detail-games.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createTextVNode as _createTextVNode, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, isRef as _isRef, createSlots as _createSlots } from \"vue\"\n\nconst _hoisted_1 = [\"innerHTML\"]\nconst _hoisted_2 = { class: \"bonusomat-quest__image-wrapper\" }\nconst _hoisted_3 = [\"innerHTML\"]\nconst _hoisted_4 = { class: \"bonusomat-quest__details\" }\nconst _hoisted_5 = { class: \"bonusomat-quest__details-item bonusomat-quest__details-item--yellow\" }\nconst _hoisted_6 = { class: \"bonusomat-quest__award-text\" }\nconst _hoisted_7 = { class: \"bonusomat-quest__details-items-group\" }\nconst _hoisted_8 = { class: \"bonusomat-quest__details-item\" }\nconst _hoisted_9 = {\n key: 0,\n class: \"bonusomat-quest__details-item\"\n}\nconst _hoisted_10 = { class: \"bonusomat-quest__tasks\" }\nconst _hoisted_11 = {\n key: 1,\n class: \"bonusomat-quest__no-tasks-box\"\n}\nconst _hoisted_12 = { class: \"bonusomat-modal__footer__progress-wrapper\" }\nconst _hoisted_13 = { class: \"bonusomat-modal__footer__texts\" }\nconst _hoisted_14 = { class: \"bonusomat-modal__footer__state\" }\nconst _hoisted_15 = {\n key: 0,\n class: \"bonusomat-modal__footer__remaining-tasks\"\n}\nconst _hoisted_16 = { class: \"bonusomat-modal__footer__tasks-count\" }\nconst _hoisted_17 = {\n key: 0,\n class: \"bonusomat-modal__footer__reward\"\n}\nconst _hoisted_18 = { class: \"bonusomat-quest__award-text\" }\n\nimport { computed, onMounted, ref } from \"vue\";\r\n\r\nimport DsModalDialog from \"@sazka/design-system/src/modal-dialog/ds-modal-dialog.vue\";\r\nimport ModalHeadline from \"@sazka/design-system/src/top-slot/ds-top-subheadline.vue\";\r\nimport DsDivider from \"@sazka/design-system/src/divider/ds-divider.vue\";\r\nimport DsBadge from \"@sazka/design-system/src/badge/ds-badge.vue\";\r\nimport WebpImage from \"@sazka/design-system/src/image/webp-image.vue\";\r\nimport DsIcon from \"@sazka/design-system/src/icon/ds-icon.vue\";\r\nimport { BonusomatDatalayer } from \"@/casino/bonusomat/utils/analytics/bonusomat-datalayer\";\r\nimport QuestAccordion from \"./bonusomat-quest-detail-accordion.vue\";\r\nimport QuestDetailGames from \"./bonusomat-quest-detail-games.vue\";\r\nimport BonusomatProgress from \"../shared/bonusomat-progress.vue\";\r\nimport BonusomatQuestAwardIcon from \"./bonusomat-quest-award-icon.vue\";\r\nimport DsButton from \"@sazka/design-system/src/button/ds-button.vue\";\r\n\r\nimport useBonusomatData from \"../../composables/use-bonusomat-data\";\r\nimport { useQuestDetails } from \"../../composables/use-quest-details\";\r\n\r\nimport { SvgIcons } from \"@sazka/design-system/src/icon/types\";\r\nimport { useBonusomatPlayerData } from \"../../composables/use-bonusomat-player-data\";\r\nimport { BonusomatUtils } from \"../../utils/bonusomat-utils\";\r\nimport { BonusomatQuestTask } from \"../../models/bonusomat-quest-detail\";\r\nimport { DsModalDialogReferenceType } from \"@sazka/design-system/src/modal-dialog/ds-modal-dialog-models\";\r\n\r\nconst gamesSectionHeadline = \"Úkol splnÃte hranÃm vybraných her\";\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'bonusomat-quest-detail',\n setup(__props) {\n\r\nconst { bonusomatPlayerData, remainingSpinsCount } = useBonusomatPlayerData();\r\n\r\nconst {\r\n isQuestModalOpen,\r\n openedQuest,\r\n questCardProgressLoadCounter,\r\n questDetailProgressLoadCounter,\r\n gamesData,\r\n openedGamesTaskIndex,\r\n activateQuest,\r\n deactivateQuest,\r\n loadGamesData,\r\n} = useBonusomatData();\r\n\r\nconst { isActive, isCompleted, isBonusAward, remainingTasks, questTimeLabel, questProgress, isPlayable } =\r\n useQuestDetails(openedQuest);\r\n\r\nconst questModalRef = ref<DsModalDialogReferenceType>();\r\nconst areTasksGamesOpened = ref(false);\r\n\r\nconst questProgressKey = computed(() => {\r\n return \"questDetailProgress-\" + questDetailProgressLoadCounter.value;\r\n});\r\n\r\nconst sortedTasks = computed(() => {\r\n return openedQuest.value.tasks\r\n ?.slice()\r\n .sort((a, b) => (a.progress < 100 && b.progress >= 100 ? -1 : a.progress >= 100 && b.progress < 100 ? 1 : 0));\r\n});\r\n\r\nconst completedQuestRewardInfoClass = computed(() => {\r\n return openedQuest.value.award.length > 16 ? \"bonusomat-quest__details-item--long-text\" : \"\";\r\n});\r\n\r\nconst hasAnyTask = computed(() => {\r\n return !!openedQuest.value.tasks?.length;\r\n});\r\n\r\nconst totalTasksFormatted = computed(() => {\r\n return openedQuest.value ? BonusomatUtils.getTaskCountLabel(openedQuest.value.totalTasks) : \"\";\r\n});\r\n\r\nconst remainingTasksFormatted = computed(() => {\r\n return openedQuest.value ? BonusomatUtils.getTaskCountLabel(remainingTasks.value) : \"\";\r\n});\r\n\r\nconst footerQuestState = computed(() => {\r\n if (isActive.value) {\r\n return \"AktivnÃ\";\r\n } else if (isCompleted.value) {\r\n return \"DokonÄeno\";\r\n } else {\r\n return \"NeaktivnÃ\";\r\n }\r\n});\r\n\r\nconst remainingInclined = computed(() => {\r\n switch (remainingTasks.value) {\r\n case 2:\r\n case 3:\r\n case 4:\r\n return \"ZbývajÃ\";\r\n default:\r\n return \"Zbývá\";\r\n }\r\n});\r\n\r\nconst footerButtonText = computed(() => {\r\n if (isCompleted.value) {\r\n return isBonusAward.value ? \"Zobrazit výhru\" : \"ZavÅ™Ãt\";\r\n } else if (isActive.value) {\r\n return \"Deaktivovat\";\r\n } else if (!hasAnyTask.value) {\r\n return \"ZÃskat bonus\";\r\n } else {\r\n return \"ZaÄÃt hrát\";\r\n }\r\n});\r\n\r\nconst footerButtonType = computed(() => {\r\n if (isActive.value) {\r\n return \"error\";\r\n } else if (isCompleted.value && !isBonusAward.value) {\r\n return \"secondary\";\r\n } else {\r\n return \"primary\";\r\n }\r\n});\r\n\r\nconst footerButtonIcon = computed<SvgIcons>(() => {\r\n if (isActive.value) {\r\n return \"cross\";\r\n } else {\r\n return null;\r\n }\r\n});\r\n\r\nconst openedGamesTask = ref<BonusomatQuestTask>(null);\r\n\r\nconst showGamesForTask = async (taskToShowGames: BonusomatQuestTask, taskIndex: number) => {\r\n if (!gamesData.value?.length) {\r\n await loadGamesData();\r\n }\r\n questDetailProgressLoadCounter.value++;\r\n\r\n openedGamesTask.value = taskToShowGames;\r\n openedGamesTaskIndex.value = taskIndex;\r\n areTasksGamesOpened.value = true;\r\n questModalRef.value.scrollContent();\r\n};\r\n\r\nconst goBackToTasks = () => {\r\n if (areTasksGamesOpened.value) {\r\n BonusomatDatalayer.pushCloseQuestGames(openedGamesTask.value?.title);\r\n }\r\n questDetailProgressLoadCounter.value++;\r\n\r\n areTasksGamesOpened.value = false;\r\n openedGamesTask.value = null;\r\n};\r\n\r\nconst closeModalAndGoBackToTasks = () => {\r\n isQuestModalOpen.value = false;\r\n goBackToTasks();\r\n};\r\n\r\nconst footerButtonClickHandler = async () => {\r\n const executedFromGamesSection = areTasksGamesOpened.value;\r\n closeModalAndGoBackToTasks();\r\n\r\n if (isCompleted.value) {\r\n if (!isBonusAward.value) {\r\n return;\r\n }\r\n\r\n ng_fw.showMyBonuses();\r\n\r\n setTimeout(() => {\r\n BonusomatDatalayer.pushShowWinnings(openedQuest.value.title);\r\n }, 0);\r\n } else if (isActive.value) {\r\n try {\r\n await deactivateQuest(executedFromGamesSection ? \"questDetailGames\" : \"questDetail\");\r\n } catch (ex: unknown) {\r\n console.error(ex);\r\n }\r\n } else {\r\n try {\r\n await activateQuest(openedQuest.value.id);\r\n } finally {\r\n BonusomatDatalayer.pushStartQuest(\r\n openedQuest.value.title,\r\n \"questDetail\",\r\n bonusomatPlayerData.points,\r\n remainingSpinsCount.value\r\n );\r\n setTimeout(() => {\r\n questCardProgressLoadCounter.value++;\r\n }, 300);\r\n }\r\n }\r\n};\r\n\r\nconst scrollTaskIntoView = ref(false);\r\nonMounted(() => {\r\n scrollTaskIntoView.value = true;\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(DsModalDialog, {\n modelValue: _unref(isQuestModalOpen),\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => (_isRef(isQuestModalOpen) ? (isQuestModalOpen).value = $event : null)),\n theme: \"dark\",\n \"css-class\": [\r\n 'bonusomat-modal',\r\n 'bonusomat-modal--wider',\r\n areTasksGamesOpened.value ? 'bonusomat-quest-games' : 'bonusomat-quest',\r\n ],\n \"top-divider-visible\": true,\n \"bottom-divider-visible\": false,\n \"content-scrollable\": true,\n \"has-dialog-close-btn\": !areTasksGamesOpened.value,\n onModalClosed: _cache[3] || (_cache[3] = ($event: any) => (closeModalAndGoBackToTasks())),\n ref_key: \"questModalRef\",\n ref: questModalRef\n }, _createSlots({\n bottom: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"bonusomat-modal__footer\", {\r\n 'bonusomat-modal__footer--completed': _unref(isCompleted),\r\n 'bonusomat-modal__footer--active': _unref(isActive),\r\n }])\n }, [\n _createElementVNode(\"div\", _hoisted_12, [\n (_openBlock(), _createBlock(BonusomatProgress, {\n key: questProgressKey.value,\n progress: _unref(questProgress),\n \"is-completed\": _unref(openedQuest).completed,\n \"show-tracker-even-if-completed\": true,\n \"show-percentage-number\": \"\"\n }, null, 8, [\"progress\", \"is-completed\"])),\n _createElementVNode(\"div\", _hoisted_13, [\n _createElementVNode(\"div\", _hoisted_14, _toDisplayString(footerQuestState.value), 1),\n (!_unref(isCompleted) && hasAnyTask.value && _unref(remainingTasks))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createElementVNode(\"span\", null, _toDisplayString(remainingInclined.value), 1),\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(remainingTasksFormatted.value), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n (_unref(isCompleted))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _cache[5] || (_cache[5] = _createTextVNode(\" VaÅ¡e výhra \")),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"bonusomat-quest__details-item bonusomat-quest__details-item--yellow\", completedQuestRewardInfoClass.value])\n }, [\n _createVNode(BonusomatQuestAwardIcon, {\n \"icon-name\": _unref(openedQuest).awardIcon\n }, null, 8, [\"icon-name\"]),\n _createElementVNode(\"div\", _hoisted_18, _toDisplayString(_unref(openedQuest).award), 1)\n ], 2)\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(DsButton, {\n theme: \"dark\",\n size: \"lg\",\n type: footerButtonType.value,\n \"icon-left\": footerButtonIcon.value,\n \"is-disabled\": !_unref(isPlayable),\n onClick: footerButtonClickHandler\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(footerButtonText.value), 1)\n ]),\n _: 1\n }, 8, [\"type\", \"icon-left\", \"is-disabled\"])\n ], 2)\n ]),\n _: 2\n }, [\n (areTasksGamesOpened.value)\n ? {\n name: \"top\",\n fn: _withCtx(() => [\n _createVNode(DsButton, {\n \"icon-left\": \"arrow-left\",\n theme: \"dark\",\n type: \"interaction\",\n size: \"lg\",\n onClick: goBackToTasks,\n class: \"bonusomat-quest__games-back-btn\"\n }, {\n default: _withCtx(() => _cache[4] || (_cache[4] = [\n _createTextVNode(\" ZpÄ›t \")\n ])),\n _: 1\n }),\n _createVNode(ModalHeadline, {\n headline: gamesSectionHeadline,\n class: \"bonusomat-quest__bonusomat-quest__games-modal-title\"\n }),\n _createElementVNode(\"div\", {\n class: \"bonusomat-modal__games-modal-description\",\n innerHTML: openedGamesTask.value.description\n }, null, 8, _hoisted_1)\n ]),\n key: \"0\"\n }\n : {\n name: \"top\",\n fn: _withCtx(() => [\n _createVNode(ModalHeadline, {\n headline: _unref(openedQuest)?.title,\n class: \"bonusomat-quest__title\"\n }, null, 8, [\"headline\"])\n ]),\n key: \"1\"\n },\n (areTasksGamesOpened.value)\n ? {\n name: \"content\",\n fn: _withCtx(() => [\n _createVNode(QuestDetailGames, {\n task: openedGamesTask.value,\n \"quest-name\": _unref(openedQuest)?.title,\n onCloseModal: _cache[0] || (_cache[0] = ($event: any) => (closeModalAndGoBackToTasks()))\n }, null, 8, [\"task\", \"quest-name\"])\n ]),\n key: \"2\"\n }\n : {\n name: \"content\",\n fn: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(openedQuest).badge)\n ? (_openBlock(), _createBlock(DsBadge, {\n key: 0,\n text: _unref(openedQuest).badge,\n class: \"bonusomat-quest__badge\"\n }, null, 8, [\"text\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(WebpImage, {\n src: _unref(openedQuest).image,\n alt: \"\",\n \"css-class\": \"bonusomat-quest__image\"\n }, null, 8, [\"src\"])\n ]),\n _createElementVNode(\"p\", {\n class: \"bonusomat-modal__description\",\n innerHTML: _unref(openedQuest).description\n }, null, 8, _hoisted_3),\n _createVNode(DsDivider, { theme: \"dark\" }),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(BonusomatQuestAwardIcon, {\n \"icon-name\": _unref(openedQuest).awardIcon\n }, null, 8, [\"icon-name\"]),\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(_unref(openedQuest).award), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(DsIcon, {\n name: \"bet-list\",\n width: 24,\n height: 24\n }),\n _createTextVNode(\" \" + _toDisplayString(totalTasksFormatted.value), 1)\n ]),\n (_unref(openedQuest).endDate)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createVNode(DsIcon, {\n name: \"time\",\n width: 24,\n height: 24\n }),\n _createTextVNode(\" \" + _toDisplayString(_unref(questTimeLabel)), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n (hasAnyTask.value)\n ? (_openBlock(), _createBlock(QuestAccordion, {\n key: 0,\n tasks: sortedTasks.value,\n \"default-open-task-index\": _unref(openedGamesTaskIndex),\n theme: \"dark\",\n onShowTaskGames: _cache[1] || (_cache[1] = (taskToShowGames, taskIndex) =>\r\n showGamesForTask(taskToShowGames, taskIndex)),\n scrollTaskIntoView: scrollTaskIntoView.value\n }, null, 8, [\"tasks\", \"default-open-task-index\", \"scrollTaskIntoView\"]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, \"Žádné úkoly k plnÄ›nÃ\"))\n ])\n ]),\n key: \"3\"\n }\n ]), 1032, [\"modelValue\", \"css-class\", \"has-dialog-close-btn\"]))\n}\n}\n\n})","<template>\r\n <DsModalDialog\r\n v-model=\"isQuestModalOpen\"\r\n theme=\"dark\"\r\n :css-class=\"[\r\n 'bonusomat-modal',\r\n 'bonusomat-modal--wider',\r\n areTasksGamesOpened ? 'bonusomat-quest-games' : 'bonusomat-quest',\r\n ]\"\r\n :top-divider-visible=\"true\"\r\n :bottom-divider-visible=\"false\"\r\n :content-scrollable=\"true\"\r\n :has-dialog-close-btn=\"!areTasksGamesOpened\"\r\n @modal-closed=\"closeModalAndGoBackToTasks()\"\r\n ref=\"questModalRef\"\r\n >\r\n <template #top v-if=\"areTasksGamesOpened\">\r\n <DsButton\r\n icon-left=\"arrow-left\"\r\n theme=\"dark\"\r\n type=\"interaction\"\r\n size=\"lg\"\r\n @click=\"goBackToTasks\"\r\n class=\"bonusomat-quest__games-back-btn\"\r\n >\r\n ZpÄ›t\r\n </DsButton>\r\n <ModalHeadline\r\n :headline=\"gamesSectionHeadline\"\r\n class=\"bonusomat-quest__bonusomat-quest__games-modal-title\"\r\n />\r\n <div class=\"bonusomat-modal__games-modal-description\" v-html=\"openedGamesTask.description\"></div>\r\n </template>\r\n <template #top v-else>\r\n <ModalHeadline :headline=\"openedQuest?.title\" class=\"bonusomat-quest__title\" />\r\n </template>\r\n <template #content v-if=\"areTasksGamesOpened\">\r\n <QuestDetailGames\r\n :task=\"openedGamesTask\"\r\n :quest-name=\"openedQuest?.title\"\r\n @close-modal=\"closeModalAndGoBackToTasks()\"\r\n />\r\n </template>\r\n <template #content v-else>\r\n <div class=\"bonusomat-quest__image-wrapper\">\r\n <DsBadge v-if=\"openedQuest.badge\" :text=\"openedQuest.badge\" class=\"bonusomat-quest__badge\" />\r\n <WebpImage :src=\"openedQuest.image\" alt=\"\" css-class=\"bonusomat-quest__image\" />\r\n </div>\r\n <p class=\"bonusomat-modal__description\" v-html=\"openedQuest.description\"></p>\r\n <DsDivider theme=\"dark\" />\r\n <div class=\"bonusomat-quest__details\">\r\n <div class=\"bonusomat-quest__details-item bonusomat-quest__details-item--yellow\">\r\n <BonusomatQuestAwardIcon :icon-name=\"openedQuest.awardIcon\" />\r\n <div class=\"bonusomat-quest__award-text\">\r\n {{ openedQuest.award }}\r\n </div>\r\n </div>\r\n <div class=\"bonusomat-quest__details-items-group\">\r\n <div class=\"bonusomat-quest__details-item\">\r\n <DsIcon name=\"bet-list\" :width=\"24\" :height=\"24\" />\r\n {{ totalTasksFormatted }}\r\n </div>\r\n <div class=\"bonusomat-quest__details-item\" v-if=\"openedQuest.endDate\">\r\n <DsIcon name=\"time\" :width=\"24\" :height=\"24\" />\r\n {{ questTimeLabel }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"bonusomat-quest__tasks\">\r\n <QuestAccordion\r\n v-if=\"hasAnyTask\"\r\n :tasks=\"sortedTasks\"\r\n :default-open-task-index=\"openedGamesTaskIndex\"\r\n theme=\"dark\"\r\n @show-task-games=\"(taskToShowGames : BonusomatQuestTask, taskIndex: number) =>\r\n showGamesForTask(taskToShowGames, taskIndex)\"\r\n :scrollTaskIntoView\r\n />\r\n <div v-else class=\"bonusomat-quest__no-tasks-box\">Žádné úkoly k plnÄ›nÃ</div>\r\n </div>\r\n </template>\r\n <template #bottom>\r\n <div\r\n class=\"bonusomat-modal__footer\"\r\n :class=\"{\r\n 'bonusomat-modal__footer--completed': isCompleted,\r\n 'bonusomat-modal__footer--active': isActive,\r\n }\"\r\n >\r\n <div class=\"bonusomat-modal__footer__progress-wrapper\">\r\n <BonusomatProgress\r\n :key=\"questProgressKey\"\r\n :progress=\"questProgress\"\r\n :is-completed=\"openedQuest.completed\"\r\n :show-tracker-even-if-completed=\"true\"\r\n show-percentage-number\r\n />\r\n <div class=\"bonusomat-modal__footer__texts\">\r\n <div class=\"bonusomat-modal__footer__state\">{{ footerQuestState }}</div>\r\n <div\r\n v-if=\"!isCompleted && hasAnyTask && remainingTasks\"\r\n class=\"bonusomat-modal__footer__remaining-tasks\"\r\n >\r\n <span>{{ remainingInclined }}</span>\r\n <span class=\"bonusomat-modal__footer__tasks-count\">{{ remainingTasksFormatted }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"bonusomat-modal__footer__reward\" v-if=\"isCompleted\">\r\n VaÅ¡e výhra\r\n <div\r\n class=\"bonusomat-quest__details-item bonusomat-quest__details-item--yellow\"\r\n :class=\"completedQuestRewardInfoClass\"\r\n >\r\n <BonusomatQuestAwardIcon :icon-name=\"openedQuest.awardIcon\" />\r\n <div class=\"bonusomat-quest__award-text\">\r\n {{ openedQuest.award }}\r\n </div>\r\n </div>\r\n </div>\r\n <DsButton\r\n theme=\"dark\"\r\n size=\"lg\"\r\n :type=\"footerButtonType\"\r\n :icon-left=\"footerButtonIcon\"\r\n :is-disabled=\"!isPlayable\"\r\n @click=\"footerButtonClickHandler\"\r\n >\r\n {{ footerButtonText }}\r\n </DsButton>\r\n </div>\r\n </template>\r\n </DsModalDialog>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { computed, onMounted, ref } from \"vue\";\r\n\r\nimport DsModalDialog from \"@sazka/design-system/src/modal-dialog/ds-modal-dialog.vue\";\r\nimport ModalHeadline from \"@sazka/design-system/src/top-slot/ds-top-subheadline.vue\";\r\nimport DsDivider from \"@sazka/design-system/src/divider/ds-divider.vue\";\r\nimport DsBadge from \"@sazka/design-system/src/badge/ds-badge.vue\";\r\nimport WebpImage from \"@sazka/design-system/src/image/webp-image.vue\";\r\nimport DsIcon from \"@sazka/design-system/src/icon/ds-icon.vue\";\r\nimport { BonusomatDatalayer } from \"@/casino/bonusomat/utils/analytics/bonusomat-datalayer\";\r\nimport QuestAccordion from \"./bonusomat-quest-detail-accordion.vue\";\r\nimport QuestDetailGames from \"./bonusomat-quest-detail-games.vue\";\r\nimport BonusomatProgress from \"../shared/bonusomat-progress.vue\";\r\nimport BonusomatQuestAwardIcon from \"./bonusomat-quest-award-icon.vue\";\r\nimport DsButton from \"@sazka/design-system/src/button/ds-button.vue\";\r\n\r\nimport useBonusomatData from \"../../composables/use-bonusomat-data\";\r\nimport { useQuestDetails } from \"../../composables/use-quest-details\";\r\n\r\nimport { SvgIcons } from \"@sazka/design-system/src/icon/types\";\r\nimport { useBonusomatPlayerData } from \"../../composables/use-bonusomat-player-data\";\r\nimport { BonusomatUtils } from \"../../utils/bonusomat-utils\";\r\nimport { BonusomatQuestTask } from \"../../models/bonusomat-quest-detail\";\r\nimport { DsModalDialogReferenceType } from \"@sazka/design-system/src/modal-dialog/ds-modal-dialog-models\";\r\n\r\nconst { bonusomatPlayerData, remainingSpinsCount } = useBonusomatPlayerData();\r\n\r\nconst {\r\n isQuestModalOpen,\r\n openedQuest,\r\n questCardProgressLoadCounter,\r\n questDetailProgressLoadCounter,\r\n gamesData,\r\n openedGamesTaskIndex,\r\n activateQuest,\r\n deactivateQuest,\r\n loadGamesData,\r\n} = useBonusomatData();\r\n\r\nconst { isActive, isCompleted, isBonusAward, remainingTasks, questTimeLabel, questProgress, isPlayable } =\r\n useQuestDetails(openedQuest);\r\n\r\nconst gamesSectionHeadline = \"Úkol splnÃte hranÃm vybraných her\";\r\n\r\nconst questModalRef = ref<DsModalDialogReferenceType>();\r\nconst areTasksGamesOpened = ref(false);\r\n\r\nconst questProgressKey = computed(() => {\r\n return \"questDetailProgress-\" + questDetailProgressLoadCounter.value;\r\n});\r\n\r\nconst sortedTasks = computed(() => {\r\n return openedQuest.value.tasks\r\n ?.slice()\r\n .sort((a, b) => (a.progress < 100 && b.progress >= 100 ? -1 : a.progress >= 100 && b.progress < 100 ? 1 : 0));\r\n});\r\n\r\nconst completedQuestRewardInfoClass = computed(() => {\r\n return openedQuest.value.award.length > 16 ? \"bonusomat-quest__details-item--long-text\" : \"\";\r\n});\r\n\r\nconst hasAnyTask = computed(() => {\r\n return !!openedQuest.value.tasks?.length;\r\n});\r\n\r\nconst totalTasksFormatted = computed(() => {\r\n return openedQuest.value ? BonusomatUtils.getTaskCountLabel(openedQuest.value.totalTasks) : \"\";\r\n});\r\n\r\nconst remainingTasksFormatted = computed(() => {\r\n return openedQuest.value ? BonusomatUtils.getTaskCountLabel(remainingTasks.value) : \"\";\r\n});\r\n\r\nconst footerQuestState = computed(() => {\r\n if (isActive.value) {\r\n return \"AktivnÃ\";\r\n } else if (isCompleted.value) {\r\n return \"DokonÄeno\";\r\n } else {\r\n return \"NeaktivnÃ\";\r\n }\r\n});\r\n\r\nconst remainingInclined = computed(() => {\r\n switch (remainingTasks.value) {\r\n case 2:\r\n case 3:\r\n case 4:\r\n return \"ZbývajÃ\";\r\n default:\r\n return \"Zbývá\";\r\n }\r\n});\r\n\r\nconst footerButtonText = computed(() => {\r\n if (isCompleted.value) {\r\n return isBonusAward.value ? \"Zobrazit výhru\" : \"ZavÅ™Ãt\";\r\n } else if (isActive.value) {\r\n return \"Deaktivovat\";\r\n } else if (!hasAnyTask.value) {\r\n return \"ZÃskat bonus\";\r\n } else {\r\n return \"ZaÄÃt hrát\";\r\n }\r\n});\r\n\r\nconst footerButtonType = computed(() => {\r\n if (isActive.value) {\r\n return \"error\";\r\n } else if (isCompleted.value && !isBonusAward.value) {\r\n return \"secondary\";\r\n } else {\r\n return \"primary\";\r\n }\r\n});\r\n\r\nconst footerButtonIcon = computed<SvgIcons>(() => {\r\n if (isActive.value) {\r\n return \"cross\";\r\n } else {\r\n return null;\r\n }\r\n});\r\n\r\nconst openedGamesTask = ref<BonusomatQuestTask>(null);\r\n\r\nconst showGamesForTask = async (taskToShowGames: BonusomatQuestTask, taskIndex: number) => {\r\n if (!gamesData.value?.length) {\r\n await loadGamesData();\r\n }\r\n questDetailProgressLoadCounter.value++;\r\n\r\n openedGamesTask.value = taskToShowGames;\r\n openedGamesTaskIndex.value = taskIndex;\r\n areTasksGamesOpened.value = true;\r\n questModalRef.value.scrollContent();\r\n};\r\n\r\nconst goBackToTasks = () => {\r\n if (areTasksGamesOpened.value) {\r\n BonusomatDatalayer.pushCloseQuestGames(openedGamesTask.value?.title);\r\n }\r\n questDetailProgressLoadCounter.value++;\r\n\r\n areTasksGamesOpened.value = false;\r\n openedGamesTask.value = null;\r\n};\r\n\r\nconst closeModalAndGoBackToTasks = () => {\r\n isQuestModalOpen.value = false;\r\n goBackToTasks();\r\n};\r\n\r\nconst footerButtonClickHandler = async () => {\r\n const executedFromGamesSection = areTasksGamesOpened.value;\r\n closeModalAndGoBackToTasks();\r\n\r\n if (isCompleted.value) {\r\n if (!isBonusAward.value) {\r\n return;\r\n }\r\n\r\n ng_fw.showMyBonuses();\r\n\r\n setTimeout(() => {\r\n BonusomatDatalayer.pushShowWinnings(openedQuest.value.title);\r\n }, 0);\r\n } else if (isActive.value) {\r\n try {\r\n await deactivateQuest(executedFromGamesSection ? \"questDetailGames\" : \"questDetail\");\r\n } catch (ex: unknown) {\r\n console.error(ex);\r\n }\r\n } else {\r\n try {\r\n await activateQuest(openedQuest.value.id);\r\n } finally {\r\n BonusomatDatalayer.pushStartQuest(\r\n openedQuest.value.title,\r\n \"questDetail\",\r\n bonusomatPlayerData.points,\r\n remainingSpinsCount.value\r\n );\r\n setTimeout(() => {\r\n questCardProgressLoadCounter.value++;\r\n }, 300);\r\n }\r\n }\r\n};\r\n\r\nconst scrollTaskIntoView = ref(false);\r\nonMounted(() => {\r\n scrollTaskIntoView.value = true;\r\n});\r\n</script>\r\n","import script from \"./bonusomat-quest-detail.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./bonusomat-quest-detail.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, isRef as _isRef, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { computed } from \"vue\";\r\n\r\nimport DsTopSlotHeadlineSubheadline from \"@sazka/design-system/src/top-slot/ds-top-subheadline.vue\";\r\nimport DsModalDialog from \"@sazka/design-system/src/modal-dialog/ds-modal-dialog.vue\";\r\nimport DsBottomSlotActionBar from \"@sazka/design-system/src/bottom-slot/ds-bottom-slot-action-bar.vue\";\r\n\r\nimport { bonImgUrl } from \"../../utils/image-src\";\r\n\r\nimport useBonusomatData from \"../../composables/use-bonusomat-data\";\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'bonusomat-quests-confirm-modal',\n setup(__props) {\n\r\nconst { lastActivatedQuestId, isQuestConfirmOpen, isActiveQuestCancelable, activateQuest, deactivateQuest } =\r\n useBonusomatData();\r\n\r\nconst headline = computed(() =>\r\n lastActivatedQuestId.value ? \"Opravdu chcete aktivovat jiný Quest?\" : \"Opravdu chcete ukonÄit Quest?\"\r\n);\r\nconst headlineImg = computed(() =>\r\n lastActivatedQuestId.value ? bonImgUrl(\"board/mr-green\", \"png\") : bonImgUrl(\"quests/mr-red-cancel-quest\", \"png\")\r\n);\r\nconst headlineImgAlt = computed(() =>\r\n lastActivatedQuestId.value ? \"Pan Zelený na Äerném pozadÃ\" : \"Pan ÄŒervený na Äerném pozadÃ\"\r\n);\r\nconst description = computed(() =>\r\n isActiveQuestCancelable.value\r\n ? \"K rozehranému Questu se můžete kdykoliv vrátit.\"\r\n : \"K \" +\r\n (lastActivatedQuestId.value ? \"aktuálnÄ›\" : \"tomuto\") +\r\n \" rozehranému Questu se <span style='color: red; font-weight: bold;'>nebudete</span> moct vrátit.\"\r\n);\r\nconst btnSubmitText = computed(() => (lastActivatedQuestId.value ? \"Ano, aktivovat\" : \"Ano, ukonÄit\"));\r\n\r\nconst closeModal = () => {\r\n isQuestConfirmOpen.value = false;\r\n};\r\n\r\nconst submitHandler = async () => {\r\n closeModal();\r\n\r\n if (lastActivatedQuestId.value) {\r\n await activateQuest(lastActivatedQuestId.value, true);\r\n } else {\r\n await deactivateQuest(null, true);\r\n }\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(DsModalDialog, {\n modelValue: _unref(isQuestConfirmOpen),\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => (_isRef(isQuestConfirmOpen) ? (isQuestConfirmOpen).value = $event : null)),\n \"css-class\": \"bonusomat-quests-confirm-modal\",\n theme: \"dark\",\n \"bottom-divider-visible\": false\n }, {\n top: _withCtx(() => [\n _createVNode(DsTopSlotHeadlineSubheadline, {\n headline: headline.value,\n subheadline: description.value,\n \"image-src\": headlineImg.value,\n \"image-alt\": headlineImgAlt.value\n }, null, 8, [\"headline\", \"subheadline\", \"image-src\", \"image-alt\"])\n ]),\n bottom: _withCtx(() => [\n _createVNode(DsBottomSlotActionBar, {\n theme: \"dark\",\n size: \"sm\",\n \"btn-submit-type\": \"error\",\n \"btn-submit-text\": btnSubmitText.value,\n \"btn-close-text\": \"Storno\",\n onSubmitDialog: submitHandler,\n onCloseDialog: closeModal\n }, null, 8, [\"btn-submit-text\"])\n ]),\n _: 1\n }, 8, [\"modelValue\"]))\n}\n}\n\n})","<template>\r\n <DsModalDialog\r\n v-model=\"isQuestConfirmOpen\"\r\n css-class=\"bonusomat-quests-confirm-modal\"\r\n theme=\"dark\"\r\n :bottom-divider-visible=\"false\"\r\n >\r\n <template #top>\r\n <DsTopSlotHeadlineSubheadline\r\n :headline=\"headline\"\r\n :subheadline=\"description\"\r\n :image-src=\"headlineImg\"\r\n :image-alt=\"headlineImgAlt\"\r\n />\r\n </template>\r\n <template #bottom>\r\n <DsBottomSlotActionBar\r\n theme=\"dark\"\r\n size=\"sm\"\r\n btn-submit-type=\"error\"\r\n :btn-submit-text=\"btnSubmitText\"\r\n btn-close-text=\"Storno\"\r\n @submit-dialog=\"submitHandler\"\r\n @close-dialog=\"closeModal\"\r\n />\r\n </template>\r\n </DsModalDialog>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { computed } from \"vue\";\r\n\r\nimport DsTopSlotHeadlineSubheadline from \"@sazka/design-system/src/top-slot/ds-top-subheadline.vue\";\r\nimport DsModalDialog from \"@sazka/design-system/src/modal-dialog/ds-modal-dialog.vue\";\r\nimport DsBottomSlotActionBar from \"@sazka/design-system/src/bottom-slot/ds-bottom-slot-action-bar.vue\";\r\n\r\nimport { bonImgUrl } from \"../../utils/image-src\";\r\n\r\nimport useBonusomatData from \"../../composables/use-bonusomat-data\";\r\n\r\nconst { lastActivatedQuestId, isQuestConfirmOpen, isActiveQuestCancelable, activateQuest, deactivateQuest } =\r\n useBonusomatData();\r\n\r\nconst headline = computed(() =>\r\n lastActivatedQuestId.value ? \"Opravdu chcete aktivovat jiný Quest?\" : \"Opravdu chcete ukonÄit Quest?\"\r\n);\r\nconst headlineImg = computed(() =>\r\n lastActivatedQuestId.value ? bonImgUrl(\"board/mr-green\", \"png\") : bonImgUrl(\"quests/mr-red-cancel-quest\", \"png\")\r\n);\r\nconst headlineImgAlt = computed(() =>\r\n lastActivatedQuestId.value ? \"Pan Zelený na Äerném pozadÃ\" : \"Pan ÄŒervený na Äerném pozadÃ\"\r\n);\r\nconst description = computed(() =>\r\n isActiveQuestCancelable.value\r\n ? \"K rozehranému Questu se můžete kdykoliv vrátit.\"\r\n : \"K \" +\r\n (lastActivatedQuestId.value ? \"aktuálnÄ›\" : \"tomuto\") +\r\n \" rozehranému Questu se <span style='color: red; font-weight: bold;'>nebudete</span> moct vrátit.\"\r\n);\r\nconst btnSubmitText = computed(() => (lastActivatedQuestId.value ? \"Ano, aktivovat\" : \"Ano, ukonÄit\"));\r\n\r\nconst closeModal = () => {\r\n isQuestConfirmOpen.value = false;\r\n};\r\n\r\nconst submitHandler = async () => {\r\n closeModal();\r\n\r\n if (lastActivatedQuestId.value) {\r\n await activateQuest(lastActivatedQuestId.value, true);\r\n } else {\r\n await deactivateQuest(null, true);\r\n }\r\n};\r\n</script>\r\n","import script from \"./bonusomat-quests-confirm-modal.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./bonusomat-quests-confirm-modal.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, unref as _unref, createElementVNode as _createElementVNode, Fragment as _Fragment, renderList as _renderList, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createBlock as _createBlock, vShow as _vShow, withDirectives as _withDirectives } from \"vue\"\n\nconst _hoisted_1 = { class: \"bonusomat-quests\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"bonusomat-quests__arrows\"\n}\nconst _hoisted_3 = {\n key: 0,\n class: \"bonusomat-quests__title bonusomat-quests__title--arrows\"\n}\nconst _hoisted_4 = { class: \"bonusomat-quests__arrows\" }\nconst _hoisted_5 = {\n key: 1,\n class: \"bonusomat-placeholder bonusomat-placeholder--quests bonusomat-quests-carousel\"\n}\nconst _hoisted_6 = {\n key: 2,\n class: \"bonusomat-placeholder bonusomat-placeholder--quests bonusomat-quests-carousel\"\n}\nconst _hoisted_7 = { class: \"bonusomat-placeholder__absolute\" }\nconst _hoisted_8 = { class: \"bonusomat-quests-carousel__wrapper\" }\n\nimport { ref, computed, watch, nextTick } from \"vue\";\r\nimport { useKeenSlider } from \"keen-slider/vue.es\";\r\n\r\nimport TypographyHeadline from \"@sazka/design-system/src/typography/typography-headline.vue\";\r\nimport DsButton from \"@sazka/design-system/src/button/ds-button.vue\";\r\nimport DsBadge from \"@sazka/design-system/src/badge/ds-badge.vue\";\r\nimport { BonusomatDatalayer } from \"@/casino/bonusomat/utils/analytics/bonusomat-datalayer\";\r\nimport QuestDetail from \"./bonusomat-quest-detail.vue\";\r\nimport BonusomatQuestCard from \"./bonusomat-quest-card.vue\";\r\nimport ConfirmModal from \"./bonusomat-quests-confirm-modal.vue\";\r\nimport useBonusomatData from \"../../composables/use-bonusomat-data\";\r\nimport useBonusomatOnboarding from \"../../composables/use-bonusomat-onboarding\";\r\nimport { useBreakpoints } from \"@sazka/utils/composables/use-breakpoints\";\r\nimport { useBonusomatPlayerData } from \"../../composables/use-bonusomat-player-data\";\r\n\r\nconst noQuestMessage = \"Na nový Quest se můžete těšit každou stÅ™edu a nedÄ›li vždy od 12:00\";\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'bonusomat-quests',\n setup(__props) {\n\r\nconst { bonusomatPlayerData, remainingSpinsCount, isPlayerDataLoaded } = useBonusomatPlayerData();\r\n\r\nconst {\r\n hasActiveQuest,\r\n activeQuest,\r\n questsData,\r\n isQuestsDataLoaded,\r\n questCardProgressLoadCounter,\r\n questsDataHasError,\r\n isQuestModalOpen,\r\n} = useBonusomatData();\r\n\r\nconst { openBonusomatOnboarding } = useBonusomatOnboarding();\r\n\r\nconst isBreakpointUpMd = useBreakpoints(\"md\");\r\n\r\nconst isActiveQuestVisible = computed(() => hasActiveQuest.value && activeQuest.value);\r\nconst questsCount = computed(() => questsData.value?.length ?? 0);\r\n\r\nconst questsGrouped = computed(() => {\r\n if (!questsData.value?.length) return [];\r\n\r\n const sortedQuests = [...questsData.value].sort((questA, questB) => {\r\n if (questA.id == bonusomatPlayerData.activeQuestId) return -1;\r\n if (questB.id == bonusomatPlayerData.activeQuestId) return 1;\r\n\r\n if (questA.completed && !questB.completed) return 1;\r\n if (!questA.completed && questB.completed) return -1;\r\n\r\n return 0;\r\n });\r\n\r\n if (isBreakpointUpMd.value && hasActiveQuest.value) {\r\n sortedQuests.splice(0, 1);\r\n }\r\n\r\n let groupedQuests = [];\r\n\r\n if (!isBreakpointUpMd.value || hasActiveQuest.value) {\r\n groupedQuests = sortedQuests.map((quest) => [quest]);\r\n } else {\r\n groupedQuests =\r\n sortedQuests?.reduce((result, value, index, array) => {\r\n if (index % 2 === 0) {\r\n const group = [array[index]];\r\n if (array.length > index + 1) group.push(array[index + 1]);\r\n\r\n result.push(group);\r\n }\r\n return result;\r\n }, []) ?? [];\r\n }\r\n\r\n return groupedQuests;\r\n});\r\n\r\nconst openBonusomatOnboardingClick = () => {\r\n openBonusomatOnboarding(\"quests\");\r\n BonusomatDatalayer.pushMoreInfoClick(\"Questy\", bonusomatPlayerData.points, remainingSpinsCount.value);\r\n};\r\n\r\n// CAROUSEL SETUP\r\nconst currentSlide = ref(0);\r\nconst maxIdx = ref(0);\r\nconst [container, slider] = useKeenSlider({\r\n selector: \".bonusomat-quests-carousel__item\",\r\n slides: {\r\n perView: \"auto\",\r\n spacing: 12,\r\n },\r\n breakpoints: {\r\n \"(min-width: 960px)\": {\r\n slides: {\r\n perView: \"auto\",\r\n spacing: 16,\r\n },\r\n },\r\n \"(min-width: 1680px)\": {\r\n slides: {\r\n perView: \"auto\",\r\n spacing: 20,\r\n },\r\n },\r\n },\r\n slideChanged(s) {\r\n currentSlide.value = s.track.details?.abs;\r\n },\r\n updated(s) {\r\n currentSlide.value = s.track.details?.abs;\r\n maxIdx.value = s.track.details?.maxIdx;\r\n },\r\n created(s) {\r\n currentSlide.value = s.track.details?.abs;\r\n maxIdx.value = s.track.details?.maxIdx;\r\n },\r\n optionsChanged(s) {\r\n currentSlide.value = s.track.details?.abs;\r\n maxIdx.value = s.track.details?.maxIdx;\r\n },\r\n});\r\n\r\n// CAROUSEL FUNCTIONS\r\nconst prevSlide = () => slider.value?.prev();\r\nconst nextSlide = () => slider.value?.next();\r\n\r\nconst isLeftButtonDisabled = computed(() => currentSlide.value === 0 || !questsCount.value);\r\nconst isRightButtonDisabled = computed(() => currentSlide.value >= maxIdx.value || !questsCount.value);\r\n\r\nwatch([activeQuest, questsCount, isBreakpointUpMd], () => {\r\n nextTick(() => {\r\n slider.value.update();\r\n slider.value.track.to(0);\r\n });\r\n});\r\n\r\n// CAROUSEL ARROW STATES\r\nconst areArrowsVisible = computed(() => {\r\n return (\r\n slider.value &&\r\n !(isBreakpointUpMd.value && hasActiveQuest.value) &&\r\n questsCount.value > (isBreakpointUpMd.value ? 2 : 1)\r\n );\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"section\", _hoisted_1, [\n _createVNode(TypographyHeadline, { theme: \"dark\" }, {\n default: _withCtx(() => [\n _cache[0] || (_cache[0] = _createTextVNode(\" Questy \")),\n _createVNode(DsBadge, {\n text: questsCount.value.toString(),\n class: \"bonusomat-quests__quests-count\"\n }, null, 8, [\"text\"]),\n _createVNode(DsButton, {\n type: \"text\",\n theme: \"dark\",\n \"icon-right\": \"help\",\n onClick: openBonusomatOnboardingClick,\n class: \"button-onboarding\"\n }),\n (areArrowsVisible.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(DsButton, {\n theme: \"dark\",\n type: \"interaction\",\n size: \"sm\",\n \"icon-right\": \"arrow-left\",\n onClick: prevSlide,\n \"is-disabled\": isLeftButtonDisabled.value\n }, null, 8, [\"is-disabled\"]),\n _createVNode(DsButton, {\n theme: \"dark\",\n type: \"interaction\",\n size: \"sm\",\n \"icon-right\": \"arrow-right\",\n onClick: nextSlide,\n \"is-disabled\": isRightButtonDisabled.value\n }, null, 8, [\"is-disabled\"])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n (isActiveQuestVisible.value && _unref(isBreakpointUpMd))\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _cache[2] || (_cache[2] = _createElementVNode(\"h3\", { class: \"bonusomat-quests__title\" }, \"AktivnÃ\", -1)),\n _createVNode(BonusomatQuestCard, {\n quest: _unref(activeQuest),\n \"progress-load-counter\": 'activeQuest-' + _unref(questCardProgressLoadCounter).toString()\n }, null, 8, [\"quest\", \"progress-load-counter\"]),\n (questsGrouped.value.length)\n ? (_openBlock(), _createElementBlock(\"h3\", _hoisted_3, [\n _cache[1] || (_cache[1] = _createTextVNode(\" DalÅ¡Ã Questy \")),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(DsButton, {\n theme: \"dark\",\n type: \"interaction\",\n size: \"sm\",\n \"icon-right\": \"arrow-left\",\n onClick: prevSlide,\n \"is-disabled\": isLeftButtonDisabled.value\n }, null, 8, [\"is-disabled\"]),\n _createVNode(DsButton, {\n theme: \"dark\",\n type: \"interaction\",\n size: \"sm\",\n \"icon-right\": \"arrow-right\",\n onClick: nextSlide,\n \"is-disabled\": isRightButtonDisabled.value\n }, null, 8, [\"is-disabled\"])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n : (!_unref(isQuestsDataLoaded) || !_unref(isPlayerDataLoaded))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(8, (index) => {\n return _createElementVNode(\"div\", {\n key: index,\n class: _normalizeClass([\"bonusomat-placeholder__card bonusomat-quest-card bonusomat-placeholder__skeleton\", index > 4 ? 'bonusomat-placeholder__card--hidden-on-desktop' : '']),\n style: _normalizeStyle({\r\n animationDelay: `${index * 0.1}s`,\r\n })\n }, null, 6)\n }), 64))\n ]))\n : (!questsCount.value && _unref(isQuestsDataLoaded) && _unref(isPlayerDataLoaded))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n (_openBlock(), _createElementBlock(_Fragment, null, _renderList(8, (index) => {\n return _createElementVNode(\"div\", {\n key: index,\n class: _normalizeClass([\"bonusomat-placeholder__card bonusomat-quest-card\", index > 4 ? 'bonusomat-placeholder__card--hidden-on-desktop' : ''])\n }, null, 2)\n }), 64)),\n _createElementVNode(\"div\", _hoisted_7, [\n (!_unref(questsDataHasError))\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"bonusomat-placeholder__text\",\n innerHTML: noQuestMessage\n }))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _cache[3] || (_cache[3] = _createElementVNode(\"div\", { class: \"bonusomat-placeholder__text\" }, \"PÅ™i naÄÃtánà Questů nastala chyba\", -1)),\n _cache[4] || (_cache[4] = _createElementVNode(\"div\", { class: \"bonusomat-placeholder__subtext\" }, \"Zkuste to prosÃm pozdÄ›ji\", -1))\n ], 64))\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _withDirectives(_createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", {\n class: \"bonusomat-quests-carousel\",\n ref_key: \"container\",\n ref: container\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(questsGrouped.value, (questGroup, groupIndex) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"bonusomat-quests-carousel__item\", {\r\n 'bonusomat-quests-carousel__item--column': _unref(isBreakpointUpMd) && !isActiveQuestVisible.value,\r\n 'bonusomat-quests-carousel__item--active':\r\n !_unref(isBreakpointUpMd) && _unref(hasActiveQuest) && groupIndex == 0,\r\n }]),\n key: groupIndex\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(questGroup, (quest) => {\n return (_openBlock(), _createBlock(BonusomatQuestCard, {\n key: quest.id,\n quest: quest,\n \"progress-load-counter\": \r\n !_unref(isBreakpointUpMd) && _unref(hasActiveQuest) && groupIndex == 0\r\n ? 'activeQuestSmall-' + _unref(questCardProgressLoadCounter).toString()\r\n : undefined\r\n \n }, null, 8, [\"quest\", \"progress-load-counter\"]))\n }), 128))\n ], 2))\n }), 128))\n ], 512)\n ], 512), [\n [_vShow, questsCount.value && _unref(isQuestsDataLoaded) && _unref(isPlayerDataLoaded)]\n ]),\n (_unref(isQuestModalOpen))\n ? (_openBlock(), _createBlock(QuestDetail, { key: 3 }))\n : _createCommentVNode(\"\", true),\n _createVNode(ConfirmModal)\n ]))\n}\n}\n\n})","<template>\r\n <section class=\"bonusomat-quests\">\r\n <TypographyHeadline theme=\"dark\">\r\n Questy\r\n <DsBadge :text=\"questsCount.toString()\" class=\"bonusomat-quests__quests-count\" />\r\n <DsButton\r\n type=\"text\"\r\n theme=\"dark\"\r\n icon-right=\"help\"\r\n @click=\"openBonusomatOnboardingClick\"\r\n class=\"button-onboarding\"\r\n />\r\n <div class=\"bonusomat-quests__arrows\" v-if=\"areArrowsVisible\">\r\n <DsButton\r\n theme=\"dark\"\r\n type=\"interaction\"\r\n size=\"sm\"\r\n icon-right=\"arrow-left\"\r\n @click=\"prevSlide\"\r\n :is-disabled=\"isLeftButtonDisabled\"\r\n />\r\n <DsButton\r\n theme=\"dark\"\r\n type=\"interaction\"\r\n size=\"sm\"\r\n icon-right=\"arrow-right\"\r\n @click=\"nextSlide\"\r\n :is-disabled=\"isRightButtonDisabled\"\r\n />\r\n </div>\r\n </TypographyHeadline>\r\n <template v-if=\"isActiveQuestVisible && isBreakpointUpMd\">\r\n <h3 class=\"bonusomat-quests__title\">AktivnÃ</h3>\r\n <BonusomatQuestCard\r\n :quest=\"activeQuest\"\r\n :progress-load-counter=\"'activeQuest-' + questCardProgressLoadCounter.toString()\"\r\n />\r\n <h3 class=\"bonusomat-quests__title bonusomat-quests__title--arrows\" v-if=\"questsGrouped.length\">\r\n DalÅ¡Ã Questy\r\n <div class=\"bonusomat-quests__arrows\">\r\n <DsButton\r\n theme=\"dark\"\r\n type=\"interaction\"\r\n size=\"sm\"\r\n icon-right=\"arrow-left\"\r\n @click=\"prevSlide\"\r\n :is-disabled=\"isLeftButtonDisabled\"\r\n />\r\n <DsButton\r\n theme=\"dark\"\r\n type=\"interaction\"\r\n size=\"sm\"\r\n icon-right=\"arrow-right\"\r\n @click=\"nextSlide\"\r\n :is-disabled=\"isRightButtonDisabled\"\r\n />\r\n </div>\r\n </h3>\r\n </template>\r\n <div\r\n class=\"bonusomat-placeholder bonusomat-placeholder--quests bonusomat-quests-carousel\"\r\n v-else-if=\"!isQuestsDataLoaded || !isPlayerDataLoaded\"\r\n >\r\n <div\r\n v-for=\"index in 8\"\r\n :key=\"index\"\r\n class=\"bonusomat-placeholder__card bonusomat-quest-card bonusomat-placeholder__skeleton\"\r\n :class=\"index > 4 ? 'bonusomat-placeholder__card--hidden-on-desktop' : ''\"\r\n :style=\"{\r\n animationDelay: `${index * 0.1}s`,\r\n }\"\r\n ></div>\r\n </div>\r\n <div\r\n class=\"bonusomat-placeholder bonusomat-placeholder--quests bonusomat-quests-carousel\"\r\n v-else-if=\"!questsCount && isQuestsDataLoaded && isPlayerDataLoaded\"\r\n >\r\n <div\r\n v-for=\"index in 8\"\r\n :key=\"index\"\r\n class=\"bonusomat-placeholder__card bonusomat-quest-card\"\r\n :class=\"index > 4 ? 'bonusomat-placeholder__card--hidden-on-desktop' : ''\"\r\n ></div>\r\n <div class=\"bonusomat-placeholder__absolute\">\r\n <div class=\"bonusomat-placeholder__text\" v-if=\"!questsDataHasError\" v-html=\"noQuestMessage\"></div>\r\n <template v-else>\r\n <div class=\"bonusomat-placeholder__text\">PÅ™i naÄÃtánà Questů nastala chyba</div>\r\n <div class=\"bonusomat-placeholder__subtext\">Zkuste to prosÃm pozdÄ›ji</div>\r\n </template>\r\n </div>\r\n </div>\r\n <div\r\n class=\"bonusomat-quests-carousel__wrapper\"\r\n v-show=\"questsCount && isQuestsDataLoaded && isPlayerDataLoaded\"\r\n >\r\n <div class=\"bonusomat-quests-carousel\" ref=\"container\">\r\n <div\r\n class=\"bonusomat-quests-carousel__item\"\r\n v-for=\"(questGroup, groupIndex) in questsGrouped\"\r\n :key=\"groupIndex\"\r\n :class=\"{\r\n 'bonusomat-quests-carousel__item--column': isBreakpointUpMd && !isActiveQuestVisible,\r\n 'bonusomat-quests-carousel__item--active':\r\n !isBreakpointUpMd && hasActiveQuest && groupIndex == 0,\r\n }\"\r\n >\r\n <BonusomatQuestCard\r\n v-for=\"quest in questGroup\"\r\n :key=\"quest.id\"\r\n :quest=\"quest\"\r\n :progress-load-counter=\"\r\n !isBreakpointUpMd && hasActiveQuest && groupIndex == 0\r\n ? 'activeQuestSmall-' + questCardProgressLoadCounter.toString()\r\n : undefined\r\n \"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <QuestDetail v-if=\"isQuestModalOpen\" />\r\n <ConfirmModal />\r\n </section>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, computed, watch, nextTick } from \"vue\";\r\nimport { useKeenSlider } from \"keen-slider/vue.es\";\r\n\r\nimport TypographyHeadline from \"@sazka/design-system/src/typography/typography-headline.vue\";\r\nimport DsButton from \"@sazka/design-system/src/button/ds-button.vue\";\r\nimport DsBadge from \"@sazka/design-system/src/badge/ds-badge.vue\";\r\nimport { BonusomatDatalayer } from \"@/casino/bonusomat/utils/analytics/bonusomat-datalayer\";\r\nimport QuestDetail from \"./bonusomat-quest-detail.vue\";\r\nimport BonusomatQuestCard from \"./bonusomat-quest-card.vue\";\r\nimport ConfirmModal from \"./bonusomat-quests-confirm-modal.vue\";\r\nimport useBonusomatData from \"../../composables/use-bonusomat-data\";\r\nimport useBonusomatOnboarding from \"../../composables/use-bonusomat-onboarding\";\r\nimport { useBreakpoints } from \"@sazka/utils/composables/use-breakpoints\";\r\nimport { useBonusomatPlayerData } from \"../../composables/use-bonusomat-player-data\";\r\n\r\nconst { bonusomatPlayerData, remainingSpinsCount, isPlayerDataLoaded } = useBonusomatPlayerData();\r\n\r\nconst {\r\n hasActiveQuest,\r\n activeQuest,\r\n questsData,\r\n isQuestsDataLoaded,\r\n questCardProgressLoadCounter,\r\n questsDataHasError,\r\n isQuestModalOpen,\r\n} = useBonusomatData();\r\n\r\nconst { openBonusomatOnboarding } = useBonusomatOnboarding();\r\n\r\nconst isBreakpointUpMd = useBreakpoints(\"md\");\r\n\r\nconst noQuestMessage = \"Na nový Quest se můžete těšit každou stÅ™edu a nedÄ›li vždy od 12:00\";\r\n\r\nconst isActiveQuestVisible = computed(() => hasActiveQuest.value && activeQuest.value);\r\nconst questsCount = computed(() => questsData.value?.length ?? 0);\r\n\r\nconst questsGrouped = computed(() => {\r\n if (!questsData.value?.length) return [];\r\n\r\n const sortedQuests = [...questsData.value].sort((questA, questB) => {\r\n if (questA.id == bonusomatPlayerData.activeQuestId) return -1;\r\n if (questB.id == bonusomatPlayerData.activeQuestId) return 1;\r\n\r\n if (questA.completed && !questB.completed) return 1;\r\n if (!questA.completed && questB.completed) return -1;\r\n\r\n return 0;\r\n });\r\n\r\n if (isBreakpointUpMd.value && hasActiveQuest.value) {\r\n sortedQuests.splice(0, 1);\r\n }\r\n\r\n let groupedQuests = [];\r\n\r\n if (!isBreakpointUpMd.value || hasActiveQuest.value) {\r\n groupedQuests = sortedQuests.map((quest) => [quest]);\r\n } else {\r\n groupedQuests =\r\n sortedQuests?.reduce((result, value, index, array) => {\r\n if (index % 2 === 0) {\r\n const group = [array[index]];\r\n if (array.length > index + 1) group.push(array[index + 1]);\r\n\r\n result.push(group);\r\n }\r\n return result;\r\n }, []) ?? [];\r\n }\r\n\r\n return groupedQuests;\r\n});\r\n\r\nconst openBonusomatOnboardingClick = () => {\r\n openBonusomatOnboarding(\"quests\");\r\n BonusomatDatalayer.pushMoreInfoClick(\"Questy\", bonusomatPlayerData.points, remainingSpinsCount.value);\r\n};\r\n\r\n// CAROUSEL SETUP\r\nconst currentSlide = ref(0);\r\nconst maxIdx = ref(0);\r\nconst [container, slider] = useKeenSlider({\r\n selector: \".bonusomat-quests-carousel__item\",\r\n slides: {\r\n perView: \"auto\",\r\n spacing: 12,\r\n },\r\n breakpoints: {\r\n \"(min-width: 960px)\": {\r\n slides: {\r\n perView: \"auto\",\r\n spacing: 16,\r\n },\r\n },\r\n \"(min-width: 1680px)\": {\r\n slides: {\r\n perView: \"auto\",\r\n spacing: 20,\r\n },\r\n },\r\n },\r\n slideChanged(s) {\r\n currentSlide.value = s.track.details?.abs;\r\n },\r\n updated(s) {\r\n currentSlide.value = s.track.details?.abs;\r\n maxIdx.value = s.track.details?.maxIdx;\r\n },\r\n created(s) {\r\n currentSlide.value = s.track.details?.abs;\r\n maxIdx.value = s.track.details?.maxIdx;\r\n },\r\n optionsChanged(s) {\r\n currentSlide.value = s.track.details?.abs;\r\n maxIdx.value = s.track.details?.maxIdx;\r\n },\r\n});\r\n\r\n// CAROUSEL FUNCTIONS\r\nconst prevSlide = () => slider.value?.prev();\r\nconst nextSlide = () => slider.value?.next();\r\n\r\nconst isLeftButtonDisabled = computed(() => currentSlide.value === 0 || !questsCount.value);\r\nconst isRightButtonDisabled = computed(() => currentSlide.value >= maxIdx.value || !questsCount.value);\r\n\r\nwatch([activeQuest, questsCount, isBreakpointUpMd], () => {\r\n nextTick(() => {\r\n slider.value.update();\r\n slider.value.track.to(0);\r\n });\r\n});\r\n\r\n// CAROUSEL ARROW STATES\r\nconst areArrowsVisible = computed(() => {\r\n return (\r\n slider.value &&\r\n !(isBreakpointUpMd.value && hasActiveQuest.value) &&\r\n questsCount.value > (isBreakpointUpMd.value ? 2 : 1)\r\n );\r\n});\r\n</script>\r\n","import script from \"./bonusomat-quests.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./bonusomat-quests.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createVNode as _createVNode, createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"bonusomat-main floor bs-container\" }\nconst _hoisted_2 = { class: \"bonusomat-main__column\" }\nconst _hoisted_3 = { class: \"bonusomat-main__section bonusomat-main__section--double\" }\nconst _hoisted_4 = { class: \"bonusomat-main__section bonusomat-main__section--board\" }\nconst _hoisted_5 = { class: \"bonusomat-main__column bonusomat-main__column--quests\" }\nconst _hoisted_6 = { class: \"bonusomat-main__section bonusomat-main__section--quests\" }\n\nimport { onMounted } from \"vue\";\r\n\r\nimport BonusomatBoard from \"./board/bonusomat-board.vue\";\r\nimport BonusomatRaffle from \"./raffle/bonusomat-raffle.vue\";\r\nimport BonusomatSlots from \"./slots/bonusomat-slots.vue\";\r\nimport BonusomatOnboarding from \"./onboarding/bonusomat-onboarding.vue\";\r\nimport BonusomatQuests from \"./quests/bonusomat-quests.vue\";\r\n\r\nimport useBonusomatData from \"../composables/use-bonusomat-data\";\r\nimport { BonusomatDatalayer } from \"../utils/analytics/bonusomat-datalayer\";\r\nimport { useKeepAlive } from \"@/registration/composables/use-keep-alive\";\r\n\r\n\nexport default /*@__PURE__*/_defineComponent({\n __name: '_bonusomat-main',\n setup(__props) {\n\r\nconst { initBonusomatData } = useBonusomatData();\r\n\r\ninitBonusomatData();\r\n\r\nonMounted(async () => {\r\n BonusomatDatalayer.pushMainPageShow();\r\n useKeepAlive();\r\n});\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(BonusomatSlots),\n _createVNode(BonusomatRaffle)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(BonusomatBoard)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(BonusomatQuests)\n ])\n ])\n ]),\n _createVNode(BonusomatOnboarding)\n ], 64))\n}\n}\n\n})","<template>\r\n <div class=\"bonusomat-main floor bs-container\">\r\n <div class=\"bonusomat-main__column\">\r\n <div class=\"bonusomat-main__section bonusomat-main__section--double\">\r\n <BonusomatSlots />\r\n <BonusomatRaffle />\r\n </div>\r\n <div class=\"bonusomat-main__section bonusomat-main__section--board\">\r\n <BonusomatBoard />\r\n </div>\r\n </div>\r\n <div class=\"bonusomat-main__column bonusomat-main__column--quests\">\r\n <div class=\"bonusomat-main__section bonusomat-main__section--quests\">\r\n <BonusomatQuests />\r\n </div>\r\n </div>\r\n </div>\r\n <BonusomatOnboarding />\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { onMounted } from \"vue\";\r\n\r\nimport BonusomatBoard from \"./board/bonusomat-board.vue\";\r\nimport BonusomatRaffle from \"./raffle/bonusomat-raffle.vue\";\r\nimport BonusomatSlots from \"./slots/bonusomat-slots.vue\";\r\nimport BonusomatOnboarding from \"./onboarding/bonusomat-onboarding.vue\";\r\nimport BonusomatQuests from \"./quests/bonusomat-quests.vue\";\r\n\r\nimport useBonusomatData from \"../composables/use-bonusomat-data\";\r\nimport { BonusomatDatalayer } from \"../utils/analytics/bonusomat-datalayer\";\r\nimport { useKeepAlive } from \"@/registration/composables/use-keep-alive\";\r\n\r\nconst { initBonusomatData } = useBonusomatData();\r\n\r\ninitBonusomatData();\r\n\r\nonMounted(async () => {\r\n BonusomatDatalayer.pushMainPageShow();\r\n useKeepAlive();\r\n});\r\n</script>\r\n","import script from \"./_bonusomat-main.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./_bonusomat-main.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, Transition as _Transition, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'transition-expand',\n setup(__props) {\n\r\nconst enter = (element: Element) => {\r\n const width = getComputedStyle(element).width;\r\n const el = element as HTMLElement;\r\n\r\n el.style.width = width;\r\n el.style.position = \"absolute\";\r\n el.style.visibility = \"hidden\";\r\n el.style.height = null;\r\n\r\n const height = getComputedStyle(element).height;\r\n\r\n el.style.width = null;\r\n el.style.position = null;\r\n el.style.visibility = null;\r\n el.style.height = \"0\";\r\n\r\n getComputedStyle(element).height;\r\n\r\n requestAnimationFrame(() => {\r\n el.style.height = height;\r\n });\r\n};\r\n\r\nconst afterEnter = (element: Element) => {\r\n const el = element as HTMLElement;\r\n el.style.height = null;\r\n};\r\n\r\nconst leave = (element: Element) => {\r\n const height = getComputedStyle(element).height;\r\n const el = element as HTMLElement;\r\n\r\n el.style.height = height;\r\n\r\n getComputedStyle(element).height;\r\n\r\n requestAnimationFrame(() => {\r\n el.style.height = \"0\";\r\n });\r\n};\r\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_Transition, {\n name: \"expand\",\n onEnter: enter,\n onAfterEnter: afterEnter,\n onLeave: leave\n }, {\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }))\n}\n}\n\n})","<!-- https://markus.oberlehner.net/blog/transition-to-height-auto-with-vue/ -->\r\n<!--\r\n Usage:\r\n\r\n <TransitionExpand>\r\n <div v-if=\"...\"></div>\r\n </TransitionExpand>\r\n\r\n When component is added / removed from DOM our wrapper component,\r\n will animate height\r\n-->\r\n<template>\r\n <Transition name=\"expand\" @enter=\"enter\" @after-enter=\"afterEnter\" @leave=\"leave\">\r\n <slot />\r\n </Transition>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nconst enter = (element: Element) => {\r\n const width = getComputedStyle(element).width;\r\n const el = element as HTMLElement;\r\n\r\n el.style.width = width;\r\n el.style.position = \"absolute\";\r\n el.style.visibility = \"hidden\";\r\n el.style.height = null;\r\n\r\n const height = getComputedStyle(element).height;\r\n\r\n el.style.width = null;\r\n el.style.position = null;\r\n el.style.visibility = null;\r\n el.style.height = \"0\";\r\n\r\n getComputedStyle(element).height;\r\n\r\n requestAnimationFrame(() => {\r\n el.style.height = height;\r\n });\r\n};\r\n\r\nconst afterEnter = (element: Element) => {\r\n const el = element as HTMLElement;\r\n el.style.height = null;\r\n};\r\n\r\nconst leave = (element: Element) => {\r\n const height = getComputedStyle(element).height;\r\n const el = element as HTMLElement;\r\n\r\n el.style.height = height;\r\n\r\n getComputedStyle(element).height;\r\n\r\n requestAnimationFrame(() => {\r\n el.style.height = \"0\";\r\n });\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n// Trigger hardware acceleration\r\n* {\r\n will-change: height;\r\n backface-visibility: hidden;\r\n}\r\n\r\n.expand-enter-active,\r\n.expand-leave-active {\r\n overflow: hidden;\r\n transition: height 300ms ease-in-out;\r\n}\r\n\r\n.expand-enter,\r\n.expand-leave-to {\r\n height: 0;\r\n}\r\n</style>\r\n","import script from \"./transition-expand.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./transition-expand.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./transition-expand.vue?vue&type=style&index=0&id=e01cd4bc&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/.pnpm/vue-loader@17.4.2_@vue+compiler-sfc@3.5.13_vue@3.5.13_typescript@5.7.3__webpack@5.95.0_@swc+c_34j4td3qllqrpsyknfjyyfkdq4/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-e01cd4bc\"]])\n\nexport default __exports__"],"names":["useKeepAlive","lastKeepAlive","Date","now","handler","ng_fw","keepAlive","document","addEventListener","passive","MediaPreloader","preloadImage","imageSrc","Promise","resolve","image","Image","onload","onerror","console","error","src","async","preloadImages","imagesSrc","all","map","length","preloadVideo","videoUrl","data","httpClient","get","responseType","URL","createObjectURL","preloadVideos","videoUrls","videoSrc","StringUtils","stringReverse","str","split","reverse","join","getPlainTextFromHtml","htmlText","tempDiv","createElement","innerHTML","textContent","innerText","sanitizeString","input","replace","trim","formatNumber","value","useNbsp","ref","toFixed","preComma","postComma","match","formatCurrency","isNaN","limitTextLength","text","limit","substring","BonusomatFilterValues","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_defineComponent","__name","props","modelValue","options","emits","setup","__props","emit","__emit","bonusomatPlayerData","remainingSpinsCount","useBonusomatPlayerData","getAnalyticsFilterItemLabel","filterValue","selectedValue","computed","set","newValue","All","BonusomatDatalayer","pushBoardFilterItemClick","points","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","_Fragment","_renderList","item","index","_normalizeClass","key","onClick","$event","_toDisplayString","__exports__","minBetAmount","rulesLik","minBetAmountFormated","_createTextVNode","_createVNode","MobileAppLink","href","default","_withCtx","_","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","isPlayerDataLoaded","raffleData","completeBoard","useBonusomatData","isTicketClaimable","formatPrice","price","separator","toString","wordTiket2pad","ticketsToWin","wordTiket4pad","wordTiket7pad","wordHe4pad","headlineImage","bonImgUrl","headlineImageAlt","headlineHeadline","headlineSubheadline","mainWin","formattedPrize","dateShort","DateTimeUtils","formatDate","drawDate","date","time","formatTime","_unref","_createBlock","DsTopSlotHeadlineSubheadline","headline","subheadline","DsDivider","WebpImage","alt","totalTickets","_createCommentVNode","_createStaticVNode","DsBottomSlotActionBar","iconRight","theme","onSubmitDialog","isBoardDataLoaded","isRaffleDataLoaded","hasActiveQuest","boardData","gamesData","deactivateQuest","openGame","loadGamesData","showActiveQuestBanner","isBoardCompleted","_boardData$value","completed","filterOptions","Uncompleted","Completed","Repeating","tasksFiltered","_boardData$value2","tasks","filter","repeatable","progressLoadCounter","isModalOpen","activeTask","activeTaskGames","game","_activeTask$value","games","includes","id","modalFooterText","_activeTask$value2","taskProgress","progress","Math","floor","round","openModal","task","_gamesData$value","watch","setTimeout","closedModal","openGameClick","_unref2","_unref3","_unref4","_activeTaskGames$valu","TransitionExpand","DsIcon","name","DsButton","size","type","BonusomatBoardCompleted","TypographyHeadline","BoardFilter","_TransitionGroup","tag","_activeTask$value3","BoardTask","position","icon","BoardRules","minimumBetAmount","rules","style","_normalizeStyle","animationDelay","DsModalDialog","top","_activeTask$value4","_activeTask$value5","description","content","_activeTaskGames$valu2","bottom","_activeTask$value6","BonusomatProgress","session","useNgSession","playerId","_session$value","PlayerID","slotsWinTable","raffleWinTable","loadSlotsWinTable","fetchSlotsWinTable","reloadlotsWinTable","loadRaffleWinTable","fetchRaffleWinTable","reloadRaffleWinTable","useBonusomatWinTables","isLoggedIn","loadRaffleData","loadTotalTickets","intervalTotalTicketsHandle","intervalTotalTicketsHandler","clearInterval","initTotalTicketsInterval","window","setInterval","raffleRemainingSeconds","intervalDrawRemainingHandle","intervalDrawRemainingHandler","drawRemainingSeconds","initDrawRemainingInterval","initCountdowns","raffleRemaining","useBonusomatDrawCountdown","_raffleData$value","newRaffleRemainingSeconds","immediate","newVal","openBonusomatOnboarding","useBonusomatOnboarding","sazkaAlert","pushMoreInfoClick","openBonusomatOnboardingClick","_unref$tickets","_unref$totalTickets","BonusomatCounter","counterValue","tickets","TimeCounter","remainingSeconds","RafflePrizesModal","oneSlideChangeDuration","iconsUrls","state","winIcon","spinEndDelay","oneRoundIndex","oneRoundAnimationSettings","duration","easing","t","winIndex","indexOf","prepareIndexAnimationSettings","finishSlideAnimationSettings","sliderPositionMemory","sliderSettingMemory","setNextSpin","slider","increaseIdxBy","currentSettings","track","details","abs","moveToIdx","restoreCurrentSpin","stoppingPhase","spinCylinderMachineState","log","container","keenSlider","useKeenSlider","loop","vertical","drag","mode","renderMode","slides","perView","spacing","selector","animationEnded","updated","newState","ref_key","iconUrl","cssClass","winIcons","isMovSupported","ResponsiveUtils","defaultAnimationRef","rollingAnimationRef","winningAnimationRef","init","_await$fetchAutomatCy","_await$fetchAutomatCy2","fetchAutomatCylinderImages","icons","Loader","hide","show","showDefaultAnimation","showRollingAnimation","showWinningAnimation","onMounted","watchEffect","play","stopCounter","cylinderSpinEndHandler","automatRollingMovSrc","automatRollingWebmSrc","automatWinMovSrc","automatWinWebmSrc","BonusomatAutomatCylinder","onSpinEnd","_withDirectives","muted","constrols","playsinline","autoplay","preload","_vShow","prizeText","winnerImage","winnerNote","winnerText","midnight","setHours","setMinutes","setSeconds","setMilliseconds","getDuration","getTime","h","formatAfterXHoursLabel","m","formatAfterXMinutesLabel","isPrimaryButtonDisabled","showCloseButton","showTooltip","caretSrc","spinClickInternal","closeClickInternal","TransitionFade","width","height","showWinnerTableInternal","remainText","Boolean","required","_mergeModels","_useModel","loadBonusomatPlayerData","closeModalInternal","escapeHandler","e","initModalState","isLastSpinToday","lastSpin","isToday","addToStackedModals","removeFromStackedModals","useStackedModals","newModalIsOpen","removeEventListener","winData","modClass","_winData$value","lighten","winner","winBoxTitle","startSpinHandler","delay","callBonusomatSpin","pushSuccessfullSpin","err","pushSpinError","spinStoppedHandler","showWinnerTableHandler","_winData$value2","_winData$value3","_winData$value4","_winData$value5","BonusomatSpinWinner","BonusomatSpinAutomat","reelIcon1","reelIcon2","reelIcon3","onSpinStopped","BonusomatSpinButtons","onSpinClick","onCloseModal","BonusomatSpinFooter","onShowWinnerTable","openSpinModalQueryParamName","playerDataHasError","fulfilledTextInclined","setOnboardingAlreadyVisited","isSpinAvailable","isInactive","spinModalIsOpen","isDesktop","useBreakpoints","queryParams","URLSearchParams","location","search","has","UrlUtils","clearUrlParams","title","sections","section","DsTable","DsTableRow","DsTableCell","row1","row2","row3","additional","target","onLinkClicked","pushClickWinRules","BonusomatSpinModal","onOpenWinTable","questName","pushImpressQuestGames","gameName","gameIndex","pushOpenQuestGame","_props$task$games","gamesSectionHeadline","isQuestModalOpen","openedQuest","questCardProgressLoadCounter","questDetailProgressLoadCounter","openedGamesTaskIndex","activateQuest","isActive","isCompleted","isBonusAward","remainingTasks","questTimeLabel","questProgress","isPlayable","useQuestDetails","questModalRef","areTasksGamesOpened","questProgressKey","sortedTasks","_openedQuest$value$ta","slice","sort","a","b","completedQuestRewardInfoClass","award","hasAnyTask","_openedQuest$value$ta2","totalTasksFormatted","BonusomatUtils","getTaskCountLabel","totalTasks","remainingTasksFormatted","footerQuestState","remainingInclined","footerButtonText","footerButtonType","footerButtonIcon","openedGamesTask","showGamesForTask","taskToShowGames","taskIndex","scrollContent","goBackToTasks","_openedGamesTask$valu","pushCloseQuestGames","closeModalAndGoBackToTasks","footerButtonClickHandler","executedFromGamesSection","showMyBonuses","pushShowWinnings","ex","pushStartQuest","scrollTaskIntoView","_isRef","onModalClosed","_createSlots","BonusomatQuestAwardIcon","awardIcon","fn","ModalHeadline","QuestDetailGames","badge","DsBadge","endDate","QuestAccordion","onShowTaskGames","lastActivatedQuestId","isQuestConfirmOpen","isActiveQuestCancelable","headlineImg","headlineImgAlt","btnSubmitText","closeModal","submitHandler","onCloseDialog","noQuestMessage","activeQuest","questsData","isQuestsDataLoaded","questsDataHasError","isBreakpointUpMd","isActiveQuestVisible","questsCount","_questsData$value$len","_questsData$value","questsGrouped","_questsData$value2","sortedQuests","questA","questB","activeQuestId","splice","groupedQuests","_sortedQuests$reduce","quest","reduce","result","array","group","push","currentSlide","maxIdx","breakpoints","slideChanged","s","_s$track$details","_s$track$details2","_s$track$details3","created","_s$track$details4","_s$track$details5","optionsChanged","_s$track$details6","_s$track$details7","prevSlide","_slider$value","prev","nextSlide","_slider$value2","next","isLeftButtonDisabled","isRightButtonDisabled","nextTick","update","to","areArrowsVisible","BonusomatQuestCard","questGroup","groupIndex","undefined","QuestDetail","ConfirmModal","initBonusomatData","pushMainPageShow","BonusomatSlots","BonusomatRaffle","BonusomatBoard","BonusomatQuests","BonusomatOnboarding","enter","element","getComputedStyle","el","visibility","requestAnimationFrame","afterEnter","leave","_Transition","onEnter","onAfterEnter","onLeave","_renderSlot","$slots"],"sourceRoot":""}