{"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 ? \"&nbsp;\" : \" \"}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, \"&nbsp;\") +\r\n          \"&nbsp;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 }}&nbsp;</span\r\n                                        >\r\n                                        <span class=\"bonusomat-board-completed__ticket__text--date-desktop\"\r\n                                            >{{ date }}&nbsp;</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, \"&nbsp;\") +\r\n          \"&nbsp;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}&nbsp;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}&nbsp;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 }}&nbsp;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 }}&nbsp;z&nbsp;5&nbsp;ú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&nbsp;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&nbsp;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":""}