{"version":3,"file":"js/9090.281b77599e215fb5.js","mappings":"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","sources":["webpack://@sazka/web/./js/app/lotteries/online/rychle-kacky/shake.ts","webpack://@sazka/web/./js/app/lotteries/online/rychle-kacky/_rychle-kacky-online.ts","webpack://@sazka/web/./js/app/lotteries/online/shared/online-errors.ts","webpack://@sazka/web/./js/app/shared/components/master-page/self-exclusion.ts","webpack://@sazka/web/../../libs/design-system/src/loader/loader.ts","webpack://@sazka/web/../../libs/ng/ng-player-restrictions.ts","webpack://@sazka/web/../../libs/utils/document-ready.ts","webpack://@sazka/web/../../libs/utils/sazka-alert.ts"],"sourcesContent":["interface ShakeOptions {\r\n    threshold: number;\r\n    timeout: number;\r\n}\r\n\r\nexport class Shake {\r\n    hasDeviceMotion: boolean;\r\n    options: ShakeOptions;\r\n    lastTime: Date;\r\n    lastX: number = null;\r\n    lastY: number = null;\r\n    lastZ: number = null;\r\n    event: CustomEvent;\r\n\r\n    constructor(options: ShakeOptions) {\r\n        //feature detect\r\n        this.hasDeviceMotion = \"ondevicemotion\" in window;\r\n\r\n        this.options = {\r\n            threshold: 15, //default velocity threshold for shake to register\r\n            timeout: 1000, //default interval between events\r\n        };\r\n\r\n        if (typeof options === \"object\") {\r\n            for (const i in options) {\r\n                if (options.hasOwnProperty(i)) {\r\n                    this.options[i] = options[i];\r\n                }\r\n            }\r\n        }\r\n\r\n        //use date to prevent multiple shakes firing\r\n        this.lastTime = new Date();\r\n\r\n        //create custom event\r\n        this.event = new CustomEvent(\"shake\", {\r\n            bubbles: true,\r\n            cancelable: true,\r\n        });\r\n    }\r\n\r\n    //reset timer values\r\n    reset() {\r\n        this.lastTime = new Date();\r\n        this.lastX = null;\r\n        this.lastY = null;\r\n        this.lastZ = null;\r\n    }\r\n\r\n    //start listening for devicemotion\r\n    start() {\r\n        this.reset();\r\n        if (this.hasDeviceMotion) {\r\n            window.addEventListener(\"devicemotion\", this, false);\r\n        }\r\n    }\r\n\r\n    //stop listening for devicemotion\r\n    stop() {\r\n        if (this.hasDeviceMotion) {\r\n            window.removeEventListener(\"devicemotion\", this, false);\r\n        }\r\n        this.reset();\r\n    }\r\n\r\n    //calculates if shake did occur\r\n    devicemotion(e) {\r\n        const current = e.accelerationIncludingGravity;\r\n        let currentTime;\r\n        let timeDifference;\r\n        let deltaX = 0;\r\n        let deltaY = 0;\r\n        let deltaZ = 0;\r\n\r\n        if (this.lastX === null && this.lastY === null && this.lastZ === null) {\r\n            this.lastX = current.x;\r\n            this.lastY = current.y;\r\n            this.lastZ = current.z;\r\n            return;\r\n        }\r\n\r\n        deltaX = Math.abs(this.lastX - current.x);\r\n        deltaY = Math.abs(this.lastY - current.y);\r\n        deltaZ = Math.abs(this.lastZ - current.z);\r\n\r\n        if (\r\n            (deltaX > this.options.threshold && deltaY > this.options.threshold) ||\r\n            (deltaX > this.options.threshold && deltaZ > this.options.threshold) ||\r\n            (deltaY > this.options.threshold && deltaZ > this.options.threshold)\r\n        ) {\r\n            //calculate time in milliseconds since last shake registered\r\n            currentTime = new Date();\r\n            timeDifference = currentTime.getTime() - this.lastTime.getTime();\r\n\r\n            if (timeDifference > this.options.timeout) {\r\n                window.dispatchEvent(this.event);\r\n                this.lastTime = new Date();\r\n            }\r\n        }\r\n\r\n        this.lastX = current.x;\r\n        this.lastY = current.y;\r\n        this.lastZ = current.z;\r\n    }\r\n\r\n    //event handler\r\n    handleEvent(e) {\r\n        if (typeof this[e.type] === \"function\") {\r\n            return this[e.type](e);\r\n        }\r\n    }\r\n}\r\n","import { ngFrameworkLoaded } from \"@sazka/ng/ng-integration\";\r\nimport { checkPlayerRestrictions } from \"@sazka/ng/ng-player-restrictions\";\r\nimport { useNgSession } from \"@sazka/ng/ng-session\";\r\nimport { Loader } from \"@sazka/design-system/src/loader/loader\";\r\nimport { ResponsiveUtils } from \"@sazka/utils/responsive-utils\";\r\nimport { UrlUtils } from \"@sazka/utils/url\";\r\nimport { watch } from \"vue\";\r\nimport { sazkaAlertOnline } from \"../shared/online-errors\";\r\nimport { Shake } from \"./shake\";\r\nimport { startPanicButtonFlow } from \"@/shared/components/master-page/self-exclusion\";\r\n\r\nclass RychleKacky {\r\n    private static aspectRatio: number = 1280 / 824;\r\n    private static isMobile = false;\r\n    private static shake: any = null;\r\n    private static redirectElement: JQuery = null;\r\n\r\n    public static bindDOM(): void {\r\n        const { isLoggedIn } = useNgSession();\r\n        watch(isLoggedIn, () => {\r\n            this.sendSessionDetails();\r\n        });\r\n\r\n        this.load();\r\n\r\n        ngFrameworkLoaded().then(() => {\r\n            checkPlayerRestrictions(false, true, true);\r\n            this.sendSessionDetails();\r\n        });\r\n\r\n        try {\r\n            this.shake = new Shake({\r\n                threshold: 15, // optional shake strength threshold\r\n                timeout: 1000, // optional, determines the frequency of event generation\r\n            });\r\n            this.shake.start();\r\n\r\n            window.addEventListener(\"shake\", this.shakeHandle, false);\r\n        } catch (e) {\r\n            console.error(\"RK: shake event exception : \", e);\r\n        }\r\n    }\r\n\r\n    private static handleResize(): void {\r\n        this.isMobile = ResponsiveUtils.isMobile();\r\n        if (this.isMobile) {\r\n            $(\"#rk-iframe\").addClass(\"kacky-iframe--mobile\");\r\n            $(\"#game-detail\").addClass(\"position-static\");\r\n        } else {\r\n            const PADDING_BOTTOM = 16;\r\n            const container = $(\"#rk-container\");\r\n            const wrap = container.next();\r\n\r\n            $(\"#game-detail\").removeClass(\"position-static\");\r\n            $(\"#rk-iframe\").removeClass(\"kacky-iframe--mobile\");\r\n\r\n            // set ratio\r\n            container.width(\"100%\");\r\n            let newHeight = container.width() / RychleKacky.aspectRatio;\r\n\r\n            if (container.offset().top + newHeight > window.innerHeight) {\r\n                newHeight = window.innerHeight - container.offset().top - wrap.innerHeight() - PADDING_BOTTOM;\r\n            }\r\n            container.height(newHeight);\r\n            const newWidth = newHeight * RychleKacky.aspectRatio;\r\n            container.width(newWidth);\r\n            $(\"#game-detail .top-row\").width(newWidth);\r\n            $(\"#game-detail .lb\").width(newWidth);\r\n        }\r\n    }\r\n\r\n    public static isGameOnConfirm(isOn: boolean): void {\r\n        if (!isOn) {\r\n            if (this.redirectElement) {\r\n                window.location.href = this.redirectElement.attr(\"href\");\r\n            } else {\r\n                this.hide();\r\n            }\r\n            this.redirectElement = null;\r\n        }\r\n    }\r\n\r\n    public static tryToCloseGame(): void {\r\n        this.sendMessage(\"isGameOn\");\r\n    }\r\n\r\n    private static sendSessionDetails(): void {\r\n        const { isLoggedIn, session } = useNgSession();\r\n        const sessionData = isLoggedIn.value\r\n            ? {\r\n                  playerId: session.value.PlayerID,\r\n                  sessionToken: session.value.SessionToken,\r\n              }\r\n            : null;\r\n        this.sendMessage(\"session\", sessionData);\r\n    }\r\n\r\n    public static shakeHandle(): void {\r\n        RychleKacky.sendMessage(\"shake\");\r\n    }\r\n\r\n    private static sendMessage(messageText: string, data: Record<string, any> = null): void {\r\n        const domain = appSettings[\"Integrations:RychleKacky:Domain\"];\r\n        const message = JSON.stringify({ message: messageText, data: data });\r\n        (document.getElementById(\"rk-iframe\") as HTMLIFrameElement).contentWindow.postMessage(message, domain);\r\n    }\r\n\r\n    private static getBalance(): void {\r\n        ng_fw.refreshBalance();\r\n        const balance = ng_fw.getDisplayBalance();\r\n        const retVal = balance\r\n            ? {\r\n                  balance: balance.Balance,\r\n                  currency: balance.Currency,\r\n                  displayBalance: balance.DisplayBalance,\r\n              }\r\n            : null;\r\n        this.sendMessage(\"balance\", retVal);\r\n    }\r\n\r\n    private static getSessionDuration(): void {\r\n        const { logonDate, isLoggedIn } = useNgSession();\r\n\r\n        const message = { sessionDuration: 0 };\r\n\r\n        if (isLoggedIn.value) {\r\n            message.sessionDuration = logonDate ? (Date.now() - logonDate.value) / 1000 : 0;\r\n        }\r\n\r\n        this.sendMessage(\"sessionDuration\", message);\r\n    }\r\n\r\n    public static onMessage(e: MessageEvent): void {\r\n        try {\r\n            if (appSettings[\"Integrations:RychleKacky:Domain\"].indexOf(e.origin) == 0) {\r\n                const data = JSON.parse(e.data);\r\n                switch (data.message) {\r\n                    case \"keepAlive\":\r\n                        ng_fw.keepAlive();\r\n                        break;\r\n                    case \"showLoginOrRegistration\":\r\n                        useNgSession().showRegistrationOrLogin();\r\n                        break;\r\n                    case \"showLogin\":\r\n                        ng_fw.showLogin();\r\n                        break;\r\n                    case \"showRegistration\":\r\n                        ng_fw.showRegistration();\r\n                        break;\r\n                    case \"showDeposit\":\r\n                        if (!data.data) {\r\n                            ng_fw.showDeposit(\"standard\");\r\n                        } else {\r\n                            // deposit amount is at least 10 CZK, NG cannot deposit less\r\n                            const depositAmount = Math.max(Number(data.data), 10);\r\n                            ng_fw.showDeposit(\"externalcheckout\", depositAmount);\r\n                        }\r\n                        break;\r\n                    case \"showError\":\r\n                        if (data.data) {\r\n                            RychleKacky.handleError(data.data);\r\n                        }\r\n                        break;\r\n                    case \"isGameOn\":\r\n                        this.isGameOnConfirm(data.data as any);\r\n                        break;\r\n                    case \"close\":\r\n                        this.isGameOnConfirm(false);\r\n                        break;\r\n                    case \"balance\":\r\n                        this.getBalance();\r\n                        break;\r\n                    case \"getSessionDuration\":\r\n                        this.getSessionDuration();\r\n                        break;\r\n                    case \"session\":\r\n                        this.sendSessionDetails();\r\n                        break;\r\n                    case \"showPanicButton\":\r\n                        this.startPanicButtonFlow();\r\n                        break;\r\n                }\r\n            }\r\n        } catch (ex) {\r\n            // error while parsing JSON, message is not important if not valid JSON\r\n        }\r\n    }\r\n\r\n    static startPanicButtonFlow() {\r\n        startPanicButtonFlow(\"detail\", \"rychlekacky\");\r\n    }\r\n\r\n    public static load(): void {\r\n        const domain = appSettings[\"Integrations:RychleKacky:Domain\"];\r\n\r\n        let iframeUrl = `${domain}?is=${location.origin}/frontend/web/js/rychle-kacky-integration.js&origin=${window.location.origin}`;\r\n\r\n        this.isMobile = ResponsiveUtils.isMobile();\r\n\r\n        if (this.isMobile) {\r\n            iframeUrl += \"&mobile=true\";\r\n        }\r\n\r\n        const quickGame = parseInt(UrlUtils.getQueryString(\"quick\"));\r\n        if (window.quickWagers && quickGame && quickWagers.length >= quickGame) {\r\n            const bet = quickWagers[quickGame - 1];\r\n            iframeUrl += `&stake=${bet.stake}&duration=${bet.duration}`;\r\n            UrlUtils.clearUrlParam(\"quick\");\r\n        }\r\n\r\n        $(\"#rk-iframe\").attr(\"src\", iframeUrl);\r\n\r\n        const eventMethod = window.addEventListener ? \"addEventListener\" : \"attachEvent\";\r\n        const removeEventMethod = eventMethod == \"addEventListener\" ? \"removeEventListener\" : \"detachEvent\";\r\n        const messageEvent = eventMethod == \"addEventListener\" ? \"message\" : \"onmessage\";\r\n\r\n        window[removeEventMethod](messageEvent, (e) => this.onMessage(e), false);\r\n        window[eventMethod](messageEvent, (e) => this.onMessage(e), false);\r\n\r\n        this.show();\r\n\r\n        $(\"#game-detail\").addClass(\"loaded\");\r\n        Loader.hide();\r\n    }\r\n\r\n    private static show(): void {\r\n        $(window).resize(this.handleResize);\r\n\r\n        // set ratio\r\n        this.handleResize();\r\n\r\n        $(\"#game-detail .btn-close\").click(() => {\r\n            this.tryToCloseGame();\r\n        });\r\n\r\n        $(\"#rk-deposit\").click(() => {\r\n            ng_fw.showDeposit();\r\n        });\r\n\r\n        $(\"a\").click(this.preventRedirectionHandler);\r\n    }\r\n\r\n    private static preventRedirectionHandler(e: JQuery.ClickEvent<HTMLElement, null, HTMLElement, HTMLElement>): void {\r\n        const $elem = $(e.currentTarget);\r\n        if (\r\n            !$elem.hasClass(\"show-sidebar\") &&\r\n            !$elem.hasClass(\"game-warning\") &&\r\n            !$elem.hasClass(\"btn-close\") &&\r\n            !$elem.hasClass(\"game-plan\") &&\r\n            !$elem.hasClass(\"btn-deposit\") &&\r\n            !$elem.hasClass(\"btn-show-deposit\") &&\r\n            !$elem.hasClass(\"btn-deposit\") &&\r\n            !$elem.hasClass(\"btn-my-account\") &&\r\n            !$elem.hasClass(\"btn-logout\") &&\r\n            $elem.attr(\"id\") != \"neo-login\" &&\r\n            $elem.attr(\"id\") != \"rk-deposit\" &&\r\n            $elem.attr(\"id\") != \"neo-registration\" &&\r\n            $elem.closest(\".cookies-box\").length == 0\r\n        ) {\r\n            RychleKacky.redirectElement = $elem;\r\n            e.preventDefault();\r\n            RychleKacky.tryToCloseGame();\r\n        }\r\n    }\r\n\r\n    private static async handleError(errorCode: string): Promise<void> {\r\n        const isRestricted = await checkPlayerRestrictions();\r\n        if (isRestricted) {\r\n            return;\r\n        }\r\n\r\n        switch (errorCode) {\r\n            case \"PAYMENT_RESPONSIBLE_GAMING_LIMITS_ISSUE\":\r\n                sazkaAlertOnline(\"RESPONSIBLE_GAMING\");\r\n                break;\r\n            case \"PAYMENT_INSUFFICIENT_FUNDS\":\r\n                sazkaAlertOnline(\"INSUFFICIENT_FUNDS\");\r\n                break;\r\n            default:\r\n                sazkaAlertOnline(errorCode);\r\n                break;\r\n        }\r\n    }\r\n\r\n    public static hide(): void {\r\n        if (document.referrer?.toLowerCase()?.includes(\".sazka.cz\")) {\r\n            window.history.back();\r\n        } else {\r\n            location.href = \"/loterie/rychle-loterie\";\r\n        }\r\n    }\r\n}\r\n\r\n$(() => {\r\n    RychleKacky.bindDOM();\r\n});\r\n","import { sazkaAlert } from \"@sazka/utils/sazka-alert\";\r\n\r\n/* eslint-disable @typescript-eslint/naming-convention */\r\nconst onlineErrors = {\r\n    GENERAL: { title: \"Něco se pokazilo\", text: \"Omlouváme se, došlo k neočekávané chybě.\" },\r\n    PRICE_TOO_HIGH: {\r\n        title: \"Něco se pokazilo\",\r\n        text: \"Sázka nebyla umožněna z důvodu překročení maximální možné výhry.\",\r\n    },\r\n    DRAW_BREAK: {\r\n        title: \"Technická přestávka\",\r\n        text: \"Omlouváme se, právě probíhá technická přestávka. Děkujeme za pochopení.\",\r\n    },\r\n    MIDNIGHT_GAME_BREAK: {\r\n        title: \"Technická přestávka\",\r\n        text: \"Omlouváme se, do 00:03 probíhá pravidelná technická přestávka. Děkujeme za pochopení.\",\r\n    },\r\n    INSUFFICIENT_FUNDS: {\r\n        title: \"Něco se pokazilo\",\r\n        text: \"Vypadá to, že na účtu nemáte dostatek financí. Zkontrolujte prosím stav svého účtu a obnovte stránku.\",\r\n    },\r\n    NOT_AUTORIZED: {\r\n        title: \"Něco se pokazilo\",\r\n        text: \"Vypadá to, že je problém s vaším přihlášením, zkuste prosím obnovit stránku.\",\r\n    },\r\n    RESPONSIBLE_GAMING: {\r\n        title: \"Překročili jste limit zodpovědného hraní\",\r\n        text: \"Váš limit zodpovědného hraní neumožňuje vsadit tuto sázku.\",\r\n        btnText: \"Upravit sázku\",\r\n        link: \"/zodpovedne-hrani/herni-limity\",\r\n        linkText: \"Zodpovědné hraní\",\r\n    },\r\n    PAYMENT_BRANDS_PLAY_LIMITS_ISSUE: {\r\n        title: \"Tuto sázku bohužel nelze vsadit\",\r\n        text: \"Překročili jste limit zodpovědného hraní:<br/>Celková výše sázky</strong>\",\r\n        btnText: \"Upravit sázku\",\r\n        link: \"/zodpovedne-hrani/herni-limity\",\r\n        linkText: \"Zodpovědné hraní\",\r\n    },\r\n    PAYMENT_RESPONSIBLE_GAMING_PLAY_LIMITS_ISSUE: {\r\n        title: \"Tuto sázku bohužel nelze vsadit\",\r\n        text: \"Překročili jste limit zodpovědného hraní:<br/><strong>Výše sázek za dané období</strong>\",\r\n        btnText: \"Upravit sázku\",\r\n        link: \"/zodpovedne-hrani/herni-limity\",\r\n        linkText: \"Zodpovědné hraní\",\r\n    },\r\n    PAYMENT_RESPONSIBLE_GAMING_DAILY_LOSS_LIMITS_ISSUE: {\r\n        title: \"Tuto sázku bohužel nelze vsadit\",\r\n        text: \"Překročili jste limit zodpovědného hraní:<br/><strong>Čistá prohra za den</strong>\",\r\n        btnText: \"Upravit sázku\",\r\n        link: \"/zodpovedne-hrani/herni-limity\",\r\n        linkText: \"Zodpovědné hraní\",\r\n    },\r\n    PAYMENT_RESPONSIBLE_GAMING_MONTHLY_LOSS_LIMITS_ISSUE: {\r\n        title: \"Tuto sázku bohužel nelze vsadit\",\r\n        text: \"Překročili jste limit zodpovědného hraní:<br/><strong>Čistá prohra za měsíc</strong>\",\r\n        btnText: \"Upravit sázku\",\r\n        link: \"/zodpovedne-hrani/herni-limity\",\r\n        linkText: \"Zodpovědné hraní\",\r\n    },\r\n    PAYMENT_BRANDS_DAILY_LOSS_LIMITS_ISSUE: {\r\n        title: \"Tuto sázku bohužel nelze vsadit\",\r\n        text: \"Překročili jste limit zodpovědného hraní:<br/><strong>Výše sázek za den</strong>\",\r\n        btnText: \"Upravit sázku\",\r\n        link: \"/zodpovedne-hrani/herni-limity\",\r\n        linkText: \"Zodpovědné hraní\",\r\n    },\r\n    PAYMENT_BRANDS_MONTHLY_LOSS_LIMITS_ISSUE: {\r\n        title: \"Tuto sázku bohužel nelze vsadit\",\r\n        text: \"Překročili jste limit zodpovědného hraní:<br/><strong>Výše sázek za měsíc</strong>\",\r\n        btnText: \"Upravit sázku\",\r\n        link: \"/zodpovedne-hrani/herni-limity\",\r\n        linkText: \"Zodpovědné hraní\",\r\n    },\r\n    PAYMENT_COOL_OFF_PERIOD_ISSUE: {\r\n        title: \"Tuto sázku bohužel nelze vsadit\",\r\n        text: \"Překročili jste limit zodpovědného hraní:<br/><strong>Pauza po odhlášení</strong>\",\r\n        btnText: \"Upravit sázku\",\r\n        link: \"/zodpovedne-hrani/herni-limity\",\r\n        linkText: \"Zodpovědné hraní\",\r\n    },\r\n    PLAYER_SSO_CONNECTION_ERROR: {\r\n        title: \"Něco se pokazilo\",\r\n        text: \"Omlouváme se, ale zřejmě vypršelo vaše přihlášení. Prosím zkuste obnovit stránku a znovu se přihlásit.\",\r\n    },\r\n    INTERNAL_SERVER_ERROR: {\r\n        title: \"Něco se pokazilo\",\r\n        text: \"Omlouváme se, ale došlo k přetížení systému. Před další akcí si zkontrolujte seznam uzavřených sázek v sekci Moje sázky.\",\r\n    },\r\n    PAYMENT_CONNECTION_ERROR: { title: \"Něco se pokazilo\", text: \"Nastal problém s připojením k platební bráně.\" },\r\n    SUBSCRIPTION_ERROR: { title: \"Něco se pokazilo\", text: \"Nesprávné předplatné.\" },\r\n    WAGER_CANCEL_ERROR: {\r\n        title: \"Něco se pokazilo\",\r\n        text: \"Problém se zrušením tiketu. Tiket je už zrušený, nebo jeho zrušení není možné.\",\r\n    },\r\n    EXTERNAL_SYSTEM_ERROR: { title: \"Něco se pokazilo\", text: \"Problém s připojením k externímu systému.\" },\r\n    VALIDATION_ERROR: {\r\n        title: \"Něco se pokazilo\",\r\n        text: \"Problém s validací tiketu. Pravděpodobně byly vyplněné nesprávné hodnoty.\",\r\n    },\r\n    NOT_ENOUGH_FUTURE_DRAWS: {\r\n        title: \"Něco se pokazilo\",\r\n        text: \"Vážení zákazníci, připravujeme nové pravidelné slosování. Z technických důvodů dočasně zkracujeme délku předplatného. Vyberte kratší předplatné.\",\r\n    },\r\n    CSRF: {\r\n        title: \"Něco se pokazilo\",\r\n        text: \"Nastal problém s ověřením požadavku. Zkuste prosím obnovit stránku a provést akci znovu.\",\r\n    },\r\n    FORBIDDEN_WORDS_ERROR: {\r\n        title: \"Název nevyhovuje pravidlům pro pojmenování sázenek. Zkuste vymyslet jiný.\",\r\n    },\r\n    SYNDICATES_SUPPRESSED: {\r\n        title: \"Technická přestávka\",\r\n        text: \"Litujeme, v době od <strong>0:00</strong> do <strong>1:15</strong> probíhá technická údržba systému a není možné vsadit <strong>skupinové sázky</strong>.\",\r\n    },\r\n    CREATE_TIME_EXPIRED: {\r\n        title: \"Čas pro vytvoření vypršel\",\r\n        text: \"Sázenky se uzavírají 15 minut před slosováním\",\r\n    },\r\n    JOIN_TIME_EXPIRED: {\r\n        title: \"Čas pro připojení vypršel\",\r\n        text: \"Připájení k sázence se uzavírá 5 minut před slosováním\",\r\n    },\r\n    MAXIMUM_NUMBER_OF_SYNDICATES_REACHED: {\r\n        title: \"Je nám líto\",\r\n        text: \"<strong>V systému nyní máme maximální počet otevřených skupinových sázenek.</strong><br/>Pokud chcete vytvořit novou sázenku, zkuste to později.\",\r\n    },\r\n    MAXIMUM_NUMBER_OF_FRACTIONS_EXCEEDED: {\r\n        title: \"Je nám líto\",\r\n        text: \"Ve skupinové sázence není k dispozici požadovaný počet podílů. Prosím, upravte počet podílů, které chcete zakoupit.\",\r\n    },\r\n    CLOSED_FOR_JOIN: {\r\n        title: \"Je nám líto\",\r\n        text: \"K této skupinové sázence není možné se připojit.\",\r\n    },\r\n    INVALID_CHARACTERS_IN_SYNDICATE_NAME: {\r\n        title: \"Chyba\",\r\n        text: \"Název sázenky obsahuje nepovolené znaky jako např. tečka, čárka, uvozovky.<br/>Prosíme, upravte název.\",\r\n    },\r\n    LIMIT_EXCEEDED: {\r\n        title: \"Tuto sázku bohužel nelze vsadit\",\r\n        text: \"Překročen limit maximální sázky.\",\r\n    },\r\n};\r\n\r\nexport const sazkaAlertOnline = (errorKey: string, myTicketsSection = false) => {\r\n    if (myTicketsSection && errorKey === \"INTERNAL_SERVER_ERROR\") {\r\n        // return sazkaAlert(\"Něco se pokazilo\", \"Omlouváme se, došlo k chybě systému.\");\r\n        errorKey = \"GENERAL\";\r\n    }\r\n\r\n    if (typeof errorKey !== \"string\") errorKey = \"GENERAL\";\r\n    let key = errorKey.toUpperCase() || \"GENERAL\";\r\n    if (!onlineErrors[key]) {\r\n        key = \"GENERAL\";\r\n    }\r\n    const error = onlineErrors[key];\r\n    return sazkaAlert(error.title, error.text, error.linkText, error.link, error.buttonText);\r\n};\r\n","import { ngFrameworkLoaded } from \"@sazka/ng/ng-integration\";\r\nimport { useNgSession } from \"@sazka/ng/ng-session\";\r\nimport { getPlayerSelfExclusion } from \"@/shared/http-clients/player-account-http-client\";\r\nimport { isTerminatedAccount } from \"./player-account\";\r\nimport { ref, watch } from \"vue\";\r\n\r\nexport const isSelfExcludedAccount = ref<boolean>(null);\r\n\r\nexport const startPanicButtonFlow = async (location: \"detail\" | \"footer\" | \"\" = \"\", game = \"\") => {\r\n    const { usePanicButtonFlow } = await import(\"../panic-button/use-panic-button-flow\");\r\n    const { showPopup } = usePanicButtonFlow();\r\n    await showPopup(location, game);\r\n};\r\n\r\nexport const useSelfExclusion = async () => {\r\n    const { isLoggedIn } = useNgSession();\r\n\r\n    await ngFrameworkLoaded();\r\n    watch(isLoggedIn, async (loggedIn) => {\r\n        if (loggedIn) {\r\n            let selfExclusion = null;\r\n            try {\r\n                selfExclusion = await getPlayerSelfExclusion();\r\n            } catch {\r\n                return;\r\n            }\r\n\r\n            if (selfExclusion?.Limits?.[0]?.DurationUnit === \"Permanent\") {\r\n                isSelfExcludedAccount.value = true;\r\n\r\n                watch(\r\n                    isTerminatedAccount,\r\n                    async () => {\r\n                        if (isTerminatedAccount.value === false) {\r\n                            const { usePanicButtonLoginNotification } = await import(\r\n                                \"../panic-button/use-panic-button-login-notification\"\r\n                            );\r\n                            const { showPermanentBlockPopup } = usePanicButtonLoginNotification();\r\n                            await showPermanentBlockPopup();\r\n                        }\r\n                    },\r\n                    { immediate: true }\r\n                );\r\n\r\n                return;\r\n            }\r\n\r\n            if (selfExclusion?.Limits?.[0]?.EndDate) {\r\n                isSelfExcludedAccount.value = true;\r\n\r\n                watch(\r\n                    isTerminatedAccount,\r\n                    async () => {\r\n                        if (isTerminatedAccount.value === false) {\r\n                            const { usePanicButtonLoginNotification } = await import(\r\n                                \"../panic-button/use-panic-button-login-notification\"\r\n                            );\r\n                            const { showTemporaryBlockPopup } = usePanicButtonLoginNotification();\r\n                            await showTemporaryBlockPopup(new Date(selfExclusion.Limits[0].EndDate));\r\n                        }\r\n                    },\r\n                    { immediate: true }\r\n                );\r\n\r\n                return;\r\n            }\r\n\r\n            isSelfExcludedAccount.value = false;\r\n        } else {\r\n            isSelfExcludedAccount.value = null;\r\n        }\r\n    });\r\n\r\n    document.getElementById(\"panic-button\")?.addEventListener(\"click\", () => startPanicButtonFlow(\"footer\"));\r\n};\r\n","import { documentReady } from \"@sazka/utils/document-ready\";\r\n\r\ndeclare const environment: any;\r\ntype ColorVariant = \"yellow\" | \"blue\";\r\n\r\n/**\r\n * Loader tells user, he has to wait for some ajax operation\r\n */\r\nexport class Loader {\r\n    private static showTimeout: number;\r\n    private static hideTimeout: number;\r\n    private static lockNumber = 0;\r\n    public static get isShown() {\r\n        return this.lockNumber > 0;\r\n    }\r\n\r\n    static {\r\n        // loader from backend\r\n        if (document.body) {\r\n            this.showLoaderFromBackend();\r\n        } else {\r\n            documentReady(() => {\r\n                this.showLoaderFromBackend();\r\n            });\r\n        }\r\n    }\r\n\r\n    static showLoaderFromBackend() {\r\n        if (document.body.classList.contains(\"loader\")) {\r\n            this.lockNumber++;\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Shows loader after some time in miliseconds\r\n     * This is to reduce flickering when ajax actions are super-fast\r\n     *\r\n     * @param showLoaderIn Time in miliseconds, after which, loaded will be shown\r\n     * @param text Title (waiting message) displayed in loader\r\n     */\r\n    static show(showLoaderIn = 30, text?: string, aboveAll = false, color: ColorVariant = \"yellow\") {\r\n        this.clearTimeout();\r\n        this.lockNumber++;\r\n\r\n        this.showTimeout = window.setTimeout(() => {\r\n            this.showNow(text, aboveAll, true, color);\r\n        }, showLoaderIn);\r\n    }\r\n\r\n    /**\r\n     * Shows loader right away\r\n     * @param text Title (waiting message) displayed in loader\r\n     */\r\n    static showNow(text?: string, aboveAll = false, counted = false, color: ColorVariant = \"yellow\") {\r\n        if (!counted) {\r\n            this.lockNumber++;\r\n        }\r\n\r\n        if (!environment.isEditMode) {\r\n            const loader = document.getElementById(\"loader\");\r\n\r\n            if (!loader) return;\r\n\r\n            if (aboveAll) {\r\n                loader.classList.add(\"loader--above-all\");\r\n            } else {\r\n                loader.classList.remove(\"loader--above-all\");\r\n            }\r\n            if (text) {\r\n                loader.querySelector(\".loader__text\").textContent = text;\r\n                loader.classList.add(\"loader--with-text\");\r\n            } else {\r\n                loader.querySelector(\".loader__text\").textContent = \"\";\r\n                loader.classList.remove(\"loader--with-text\");\r\n            }\r\n\r\n            if (color === \"blue\") {\r\n                loader.classList.add(\"loader--blue\");\r\n            }\r\n\r\n            document.body.classList.add(\"loader\", \"loader--fade-in\");\r\n            this.clearTimeout();\r\n        }\r\n    }\r\n\r\n    /**\r\n     * Shows loader after delay with z-index of 9999\r\n     * @param text Title (waiting message) displayed in loader\r\n     */\r\n    static showAboveAll(showLoaderIn = 30, text?: string) {\r\n        this.show(showLoaderIn, text, true);\r\n    }\r\n\r\n    /**\r\n     * Shows loader right away with z-index of 9999\r\n     * @param text Title (waiting message) displayed in loader\r\n     */\r\n    static showNowAboveAll(text?: string) {\r\n        this.showNow(text, true);\r\n    }\r\n\r\n    /**\r\n     * Hides loader\r\n     */\r\n    static hide() {\r\n        this.lockNumber--;\r\n        if (this.lockNumber > 0) return;\r\n\r\n        this.clearTimeout();\r\n        document.body.classList.remove(\"loader--fade-in\");\r\n        this.hideTimeout = window.setTimeout(() => {\r\n            document.body.classList.remove(\"loader\");\r\n            const loader = document.getElementById(\"loader\");\r\n            loader.querySelector(\".loader__text\").textContent = \"\";\r\n            loader.classList.remove(\"loader--with-text\");\r\n        }, 150);\r\n    }\r\n\r\n    private static clearTimeout() {\r\n        if (this.showTimeout) {\r\n            clearTimeout(this.showTimeout);\r\n            this.showTimeout = null;\r\n        }\r\n        if (this.hideTimeout) {\r\n            clearTimeout(this.hideTimeout);\r\n            this.hideTimeout = null;\r\n        }\r\n    }\r\n}\r\n","import { showAlert } from \"@sazka/design-system/src/modal-alert/mount-alert\";\r\n\r\nexport const checkPlayerRestrictions = (\r\n    hideSazkaAlert = false,\r\n    ignoreActionId = false,\r\n    isLottery = false\r\n): Promise<boolean> => {\r\n    return new Promise((res) => {\r\n        ng_fw.getPlayerRestrictions((restrictions) => {\r\n            const isLimited =\r\n                !ignoreActionId &&\r\n                restrictions.some((x) => x.actionId == 1) &&\r\n                (!isLottery || restrictions.filter((x) => x.actionId == 1).some((x) => x.reasonId != 115));\r\n\r\n            const isLawRestricted = restrictions.some((x) => x.reasonId == 129);\r\n\r\n            const isRestricted = isLimited || isLawRestricted;\r\n\r\n            if (isLawRestricted && !hideSazkaAlert) {\r\n                showAlert({\r\n                    title: \"Omezení online hraní\",\r\n                    subText:\r\n                        \"Je nám líto, ale na základě zákona o hazardních hrách vám nadále nemůžeme umožnit online sázení na herním portálu Sazka.cz. Výběry z vašeho účtu jsou možné.\",\r\n                    href: \"/centrum-podpory/online-hrani-na-sazka-cz/muj-ucet/rejstrik-vyloucenych-osob\",\r\n                    btnHrefText: \"Více informací\",\r\n                    btnCloseText: \"Rozumím\",\r\n                });\r\n            } else if (isLimited && !hideSazkaAlert) {\r\n                showAlert({\r\n                    title: \"Sázka neproběhla\",\r\n                    subText: \"Je nám líto, ale vámi zvolenou sázku se nepodařilo uzavřít s ohledem na aktuální omezení na vašem účtu. Pro více informací se obraťte na naše kontaktní centrum. \",\r\n                    btnCloseText: \"Rozumím\",\r\n                });\r\n            }\r\n\r\n            res(isRestricted);\r\n        });\r\n    });\r\n};\r\n","/**\r\n * Vanila JS variant to jQuery $(() => {}).\r\n * @param {callback} callback\r\n * @example - documentReady(() => {}).\r\n * This function is binding to document.ready\r\n * */\r\nexport function documentReady(callback: () => void) {\r\n    if (document.readyState !== \"loading\") {\r\n        return callback();\r\n    } else {\r\n        document.addEventListener(\"DOMContentLoaded\", callback);\r\n    }\r\n}\r\n","/**\r\n * @deprecated Use showAlert a DS component\r\n */\r\nexport const sazkaAlert = (\r\n    title: string,\r\n    text: string = null,\r\n    linkText: string = null,\r\n    link: string = null,\r\n    buttonText = \"OK\",\r\n    customHtml = \"\",\r\n    hasExtraButton = true,\r\n    errorCode?: number\r\n): Promise<boolean> => {\r\n    return new Promise((resolve) => {\r\n        const heading = $(\r\n            `<h2 class=\"sazka-alert__title\" style=\"visibility:hidden; display:inline-block;\">${title}</h2>`\r\n        );\r\n        $(\"body\").append(heading);\r\n        const maxWidth = Math.max(heading.width(), 300);\r\n        heading.remove();\r\n\r\n        const template = `\r\n        <div class=\"modal fade sazka-alert\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"true\">\r\n            <div class=\"modal-dialog modal-dialog-centered\">\r\n                <div class=\"modal-content modal-content--without-close\">\r\n                    ${errorCode ? `<span class='sazka-alert__ecode'>ecode: ${errorCode}</span>` : \"\"}\r\n                    <h2 class=\"sazka-alert__title\">${title}</h2>\r\n                    ${text ? `<p class=\"sazka-alert__text\" style=\"max-width: ${maxWidth}px;\">${text}</p>` : \"\"}\r\n                    <div class=\"sazka-alert__button-group\">\r\n                        ${linkText ? `<a class=\"btn btn-primary sazka-alert--btn\" href=\"${link}\">${linkText}</a>` : \"\"}\r\n                        ${\r\n                            hasExtraButton\r\n                                ? `<button type=\"button\" class=\"btn ${\r\n                                      linkText ? \"btn-outline-primary\" : \"btn-primary\"\r\n                                  }\" data-dismiss=\"modal\">${buttonText}</button>`\r\n                                : \"\"\r\n                        }\r\n                    </div>\r\n                    ${customHtml}\r\n                </div>\r\n            </div>\r\n        </div>`;\r\n\r\n        const $modal = $(template);\r\n        $(\"body\").append($modal);\r\n        $modal.modal(\"show\");\r\n        $modal.find(\".sazka-alert--btn\").on(\"click\", () => {\r\n            resolve(false);\r\n            $modal.modal(\"hide\");\r\n        });\r\n        $modal.on(\"hidden.bs.modal\", () => {\r\n            $modal.modal(\"dispose\").remove();\r\n            if ($(\".modal:visible\").length) {\r\n                $(\"body\").addClass(\"modal-open\");\r\n            }\r\n            resolve(true);\r\n        });\r\n    });\r\n};\r\n"],"names":["Shake","constructor","options","_defineProperty","this","hasDeviceMotion","window","threshold","timeout","i","hasOwnProperty","lastTime","Date","event","CustomEvent","bubbles","cancelable","reset","lastX","lastY","lastZ","start","addEventListener","stop","removeEventListener","devicemotion","e","current","accelerationIncludingGravity","currentTime","timeDifference","deltaX","deltaY","deltaZ","x","y","z","Math","abs","getTime","dispatchEvent","handleEvent","type","RychleKacky","bindDOM","isLoggedIn","useNgSession","watch","sendSessionDetails","load","ngFrameworkLoaded","then","checkPlayerRestrictions","shake","shakeHandle","console","error","handleResize","isMobile","ResponsiveUtils","$","addClass","PADDING_BOTTOM","container","wrap","next","removeClass","width","newHeight","aspectRatio","offset","top","innerHeight","height","newWidth","isGameOnConfirm","isOn","redirectElement","location","href","attr","hide","tryToCloseGame","sendMessage","session","sessionData","value","playerId","PlayerID","sessionToken","SessionToken","messageText","data","domain","appSettings","message","JSON","stringify","document","getElementById","contentWindow","postMessage","getBalance","ng_fw","refreshBalance","balance","getDisplayBalance","retVal","Balance","currency","Currency","displayBalance","DisplayBalance","getSessionDuration","logonDate","sessionDuration","now","onMessage","indexOf","origin","parse","keepAlive","showRegistrationOrLogin","showLogin","showRegistration","depositAmount","max","Number","showDeposit","handleError","startPanicButtonFlow","ex","iframeUrl","quickGame","parseInt","UrlUtils","getQueryString","quickWagers","length","bet","stake","duration","clearUrlParam","eventMethod","removeEventMethod","messageEvent","show","Loader","resize","click","preventRedirectionHandler","$elem","currentTarget","hasClass","closest","preventDefault","errorCode","isRestricted","sazkaAlertOnline","_document$referrer","referrer","toLowerCase","includes","history","back","onlineErrors","GENERAL","title","text","PRICE_TOO_HIGH","DRAW_BREAK","MIDNIGHT_GAME_BREAK","INSUFFICIENT_FUNDS","NOT_AUTORIZED","RESPONSIBLE_GAMING","btnText","link","linkText","PAYMENT_BRANDS_PLAY_LIMITS_ISSUE","PAYMENT_RESPONSIBLE_GAMING_PLAY_LIMITS_ISSUE","PAYMENT_RESPONSIBLE_GAMING_DAILY_LOSS_LIMITS_ISSUE","PAYMENT_RESPONSIBLE_GAMING_MONTHLY_LOSS_LIMITS_ISSUE","PAYMENT_BRANDS_DAILY_LOSS_LIMITS_ISSUE","PAYMENT_BRANDS_MONTHLY_LOSS_LIMITS_ISSUE","PAYMENT_COOL_OFF_PERIOD_ISSUE","PLAYER_SSO_CONNECTION_ERROR","INTERNAL_SERVER_ERROR","PAYMENT_CONNECTION_ERROR","SUBSCRIPTION_ERROR","WAGER_CANCEL_ERROR","EXTERNAL_SYSTEM_ERROR","VALIDATION_ERROR","NOT_ENOUGH_FUTURE_DRAWS","CSRF","FORBIDDEN_WORDS_ERROR","SYNDICATES_SUPPRESSED","CREATE_TIME_EXPIRED","JOIN_TIME_EXPIRED","MAXIMUM_NUMBER_OF_SYNDICATES_REACHED","MAXIMUM_NUMBER_OF_FRACTIONS_EXCEEDED","CLOSED_FOR_JOIN","INVALID_CHARACTERS_IN_SYNDICATE_NAME","LIMIT_EXCEEDED","errorKey","myTicketsSection","key","toUpperCase","sazkaAlert","buttonText","isSelfExcludedAccount","ref","async","game","usePanicButtonFlow","showPopup","useSelfExclusion","_document$getElementB","loggedIn","_selfExclusion","_selfExclusion2","selfExclusion","getPlayerSelfExclusion","Limits","DurationUnit","isTerminatedAccount","usePanicButtonLoginNotification","showPermanentBlockPopup","immediate","EndDate","showTemporaryBlockPopup","isShown","lockNumber","showLoaderFromBackend","body","classList","contains","showLoaderIn","aboveAll","color","clearTimeout","showTimeout","setTimeout","showNow","counted","environment","isEditMode","loader","add","remove","querySelector","textContent","showAboveAll","showNowAboveAll","hideTimeout","_Loader","documentReady","hideSazkaAlert","ignoreActionId","isLottery","Promise","res","getPlayerRestrictions","restrictions","isLimited","some","actionId","filter","reasonId","isLawRestricted","showAlert","subText","btnHrefText","btnCloseText","callback","readyState","customHtml","hasExtraButton","resolve","heading","append","maxWidth","template","$modal","modal","find","on"],"sourceRoot":""}