{"version":3,"file":"static/js/generic.48ea9051.chunk.js","mappings":"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","sources":["components/GameNameRedirection/index.tsx","components/Generic/__partials/BetBuilderModalGeneric/actions.ts","components/Generic/__partials/KYCVerificationStatusBar/constants.ts","components/Generic/__partials/SignicatVerificationBeforeActions/types.ts","components/Generic/__partials/AddToBetslipLinkCheck.tsx","components/Generic/__partials/CheckDeRealityCheck.tsx","components/Generic/__partials/CommunityChat/index.tsx","hooks/useGetCurrencyConfigs.ts","components/Generic/__partials/CurrencyRelatedLogic.tsx","components/Generic/__partials/FetchGenericSettings/index.tsx","components/Generic/__partials/IconsPrefetcher/index.tsx","components/Generic/__partials/InitializeFirebase.tsx","components/Generic/__partials/LoginRelatedLogic.tsx","newhooks/generic/useOpenGameCustomCode.ts","components/Generic/__partials/PopupPortal.tsx","components/Generic/__partials/PostMessageRelatedLogic.tsx","components/Generic/__partials/RedirectFromStatistics.tsx","components/Generic/__partials/RedirectToSingleGameView/index.tsx","components/Generic/__partials/SumSubKYCVerificationCheck.tsx","components/Generic/__partials/TourWrapper.tsx","newhooks/generic/useTour.ts","components/Generic/__partials/TurnstileCheck.tsx","newcomponents/Shared/sportsbook/BetBuilderModal/index.tsx","components/Generic/__partials/BetBuilderModalGeneric/index.tsx","components/Generic/__partials/DoBetRecaptcha/index.tsx","components/Generic/__partials/GeolocationFailedPopup/index.tsx","components/Generic/__partials/KYCVerificationStatusBar/index.tsx","components/Generic/__partials/LoyaltyDataFetcherWrapper/index.tsx","components/Generic/__partials/SignicatVerificationBeforeActions/index.tsx","components/Generic/__partials/WrongLoginAttemptsUnlockPopup/index.tsx","newcomponents/Shared/account/NewDepositPopup/index.tsx","newcomponents/Shared/agePopup/index.tsx","components/Generic/index.tsx","components/Loading/index.tsx","components/Login/hooks/useLoginCallback.ts","components/Modal/WithInput.tsx","components/Modal/CustomHeader/index.tsx","components/Modal/index.tsx","deviceactionmanager/DeviceActionManager.ts","hooks/auth/useAccountLogout.ts","hooks/auth/useUpdateUser.ts","hooks/auth/useUserNotifications.ts","hooks/betslip/useBetlsipNotEmptyPopup.ts","hooks/betslip/useChangeOddFormat.ts","hooks/useBalance.ts","hooks/useCheckIsAccountBalanceAvailable.ts","hooks/useCheckStakeBalance.ts","hooks/useDebounce.ts","hooks/usePopup.tsx","hooks/usePopupScrollDisable.ts","interfaces/new-casino.ts","newcomponents/Shared/account/PlayerActivityChecker/types.ts","newcomponents/Shared/sportsbook/BetBuilderModal/components/BetBuilderStakeInput/index.tsx","hooks/sportsbook/useGenerateBetBuilderUrl.ts","newcomponents/Shared/sportsbook/BetBuilderModal/components/BetBuilderContent/index.tsx","newcomponents/Shared/sportsbook/BetBuilderModal/hooks/useGenerateBetBuilderFooterFields.ts","newcomponents/UI/CustomModal/index.tsx","newcomponents/UI/Divider/index.tsx","newcomponents/UI/Input/index.tsx","newelements/Casino/GameSingleViewRenderer/__partials/GameViewContainer/utils/construct-view-url.ts","newelements/Casino/GameSingleViewRenderer/__partials/GameViewContainer/utils/index.ts","newelements/Casino/GameSingleViewRenderer/__partials/GameViewContainer/utils/check-is-game-already-cached.ts","newelements/Casino/GameSingleViewRenderer/__partials/GameViewContainer/utils/reconstruct-and-redirect-to-game-view.ts","newelements/Casino/GameSingleViewRenderer/__partials/GameViewContainer/utils/extract-game-info-from-search-query.ts","newelements/Casino/GameSingleViewRenderer/__partials/GameViewContainer/utils/encode-game-id-with-prefix.ts","newelements/Casino/GameSingleViewRenderer/__partials/GameViewContainer/utils/normalize-stringified-query.ts","newelements/Casino/GameSingleViewRenderer/__partials/GameViewContainer/utils/get-route-length.ts","newelements/_Betslip/components/BetslipCalculationResult/index.tsx","newelements/_Betslip/hooks/generateFieldsMapping/classes.ts","newelements/_Betslip/hooks/generateFieldsMapping/hooks/shared/useFormatAmount.tsx","newelements/_Betslip/hooks/generateFieldsMapping/utils.ts","newelements/_Betslip/hooks/useBookBet.ts","newhooks/account/useFetchAccountParams.ts","newhooks/casino/useOpenCasinoGame.ts","providers/casino/openGameConfigsProvider.tsx","services/afterSignIn.ts","services/bet-slip.ts","services/casino/casino-fetch-games-by-id.ts","services/sportsbook/notifications.ts","store/actions/new-casino.ts","store/selectors/new-casino.ts","store/selectors/socket.ts","store/selectors/spec-elems.ts","utils/account/open-login-view.ts","utils/account/index.ts","utils/account/check-is-user-logged-in.ts","utils/account/push-notifications.ts","utils/account/user-info.ts","services/get-permissible-odds.ts","utils/betslip/odd-formats-helper.ts","utils/casino/casino.ts","utils/constants/account/crypto-currencies.ts","utils/constants/account/payment.ts","utils/constants/account/user-status.ts","utils/constants/app/app-routes.ts","utils/constants/app/rtl.ts","utils/constants/casino/casino-command-names.ts","utils/constants/casino/casino_categories.ts","utils/constants/casino/url-queries.ts","utils/generic/game-url.ts","utils/generic/get-domain.ts","utils/bom-dom-manipulation/is-subdomain.ts","utils/generic/show-toast-warning.ts","utils/generic/tour-settings.ts","utils/helpers/debounce.ts"],"sourcesContent":["import { FC, ReactElement, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { EIconSize } from 'utils/constants/app/ui';\nimport {\n competitions,\n regions,\n sports\n} from 'utils/constants/sportsbook/data-fields';\nimport {\n RACING_SPORT_ALIAS,\n RACING_SPORT_IDS\n} from 'utils/constants/sportsbook/racing-sport';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { sbRedirect, shouldRedirect } from 'utils/generic/route-manipulation';\nimport { showToastError } from 'utils/generic/show-toast-error';\nimport { isMobile } from 'utils/is-mobile';\nimport RidGenerator from 'utils/swarm/rid-generator';\nimport { serializeSwarmData } from 'utils/swarm/serialize-swarm-data';\nimport { ERacingPageTypes } from 'interfaces/racing';\nimport { Sport } from 'interfaces/sportsbook-data-levels';\nimport { executeCommand } from 'services/get-data-level';\nimport { Loading } from 'components/Loading';\nimport { setTimeFilterData, setTournamentSportIds } from 'store/actions';\nimport { setMustClose } from 'store/actions/betslip';\nimport { setGames, setRegionCompData } from 'store/actions/new-sportsbook';\nimport {\n getTimeFiltersData,\n getTournamentSportIds\n} from 'store/selectors/sport-data';\nimport './index.less';\n\nexport const Container = styled.span`\n position: relative;\n overflow: hidden;\n min-height: 10px;\n display: flex;\n align-items: center;\n cursor: pointer;\n\n & > span {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n line-height: 16px;\n }\n`;\n\ntype Props = {\n gameName: string | ReactElement[];\n gameId: string;\n};\n\nexport const GameNameRedirection: FC = ({ gameId, gameName }) => {\n const [isLoading, setIsLoading] = useState(false);\n const { t } = useTranslation();\n const history = useHistory();\n const dispatch = useDispatch();\n\n const timeStamp = useSelector(getTimeFiltersData);\n const tournamentSportIds = useSelector(getTournamentSportIds);\n\n const getGameData = () => {\n if (gameId) {\n setIsLoading(true);\n executeCommand(\n RidGenerator.gForCommand('CheckGameForRedirect'),\n {\n ...sports,\n ...regions,\n ...competitions,\n game: ['type']\n },\n { game: { id: Number(gameId) } },\n (data: { data: { sport: Record } }) => {\n setIsLoading(false);\n const serializedData = serializeSwarmData(data.data);\n\n if (serializedData?.games?.length) {\n const isEsport =\n serializedData.sports[0].type === 0 &&\n SpringConfigs.PAGE_URLS.esport;\n\n const isLive = serializedData.games[0].type === 1;\n const isRacing = RACING_SPORT_IDS.includes(\n Number(serializedData.sports[0].id)\n );\n\n const redirectBase = isEsport\n ? SpringConfigs.PAGE_URLS.esport\n : isLive\n ? SpringConfigs.PAGE_URLS.live\n : isRacing\n ? SpringConfigs.PAGE_URLS.racing\n : SpringConfigs.PAGE_URLS.prematch;\n\n const isLongPath = !isEsport || !isMobile();\n const alias = `/${`${SpringConfigs.SPORTSBOOK_MOUNT_PATH}/`}${\n isRacing\n ? `${ERacingPageTypes.UPCOMING}/${Object.keys(\n RACING_SPORT_ALIAS\n ).find(\n key =>\n RACING_SPORT_ALIAS[key] === serializedData.sports[0].id\n )}`\n : serializedData.sports[0]['alias']\n }/${\n isLongPath\n ? isRacing\n ? ''\n : `${serializedData.regions[0].alias}/`\n : ''\n }${\n isLongPath ? `${serializedData.competitions[0].id}/` : ''\n }${gameId}${\n isEsport ? `?type=${isLive ? 'live' : 'prematch'}` : ''\n }`;\n\n const finalPath = `${redirectBase}${alias}`.replace(\n /([^:]\\/)\\/+/g,\n '$1'\n );\n\n if (\n finalPath === window.location.href ||\n finalPath === window.location.pathname + window.location.search\n ) {\n dispatch(setMustClose(true));\n } else {\n if (!shouldRedirect(redirectBase)) {\n const pathnameBase =\n redirectBase.split(`${window.location.origin}`)[1] || '';\n\n if (timeStamp && Object.keys(timeStamp).length) {\n dispatch(\n setTimeFilterData({\n option: 'All',\n date: false,\n count: undefined,\n name: t('sportsbook.allEvents')\n })\n );\n\n if (!isMobile()) {\n dispatch(setRegionCompData(null, true));\n dispatch(setGames(null));\n }\n }\n\n if (\n !tournamentSportIds?.includes(\n serializedData.sports[0]?.id || null\n )\n ) {\n dispatch(setTournamentSportIds(null));\n }\n\n history.push(pathnameBase + alias);\n dispatch(setMustClose(true));\n } else {\n sbRedirect(finalPath, false, true);\n }\n }\n } else {\n const errorKey = t('account.gameIsNotAvailable');\n showToastError(errorKey);\n }\n },\n false\n );\n }\n };\n\n if (!gameName) {\n return null;\n }\n\n return (\n \n \n {typeof gameName === 'string' ? (\n gameName\n ) : (\n <>\n {gameName.map(elem => {\n return elem;\n })}\n \n )}\n \n {isLoading && (\n \n )}\n \n );\n};\n","import { fireEvent } from 'utils/generic/event-bus';\nimport { TBetBuilderModalProps } from 'newcomponents/Shared/sportsbook/BetBuilderModal/types';\n\nexport enum EBetBuilderModalActions {\n OPEN_BET_BUILDER_MODAL = 'OPEN_BET_BUILDER_MODAL',\n CLOSE_BET_BUILDER_MODAL = 'CLOSE_BET_BUILDER_MODAL',\n UPDATE_BET_BUILDER_MODAL_PROPS = 'UPDATE_BET_BUILDER_MODAL_PROPS'\n}\n\nexport const BetBuilderModalActions = {\n open(payload: TBetBuilderModalProps) {\n fireEvent({ key: EBetBuilderModalActions.OPEN_BET_BUILDER_MODAL, payload });\n },\n\n updateProps(payload: TBetBuilderModalProps) {\n fireEvent({\n key: EBetBuilderModalActions.UPDATE_BET_BUILDER_MODAL_PROPS,\n payload\n });\n },\n\n close() {\n fireEvent({ key: EBetBuilderModalActions.CLOSE_BET_BUILDER_MODAL });\n }\n};\n","import { userActiveStep } from 'utils/constants/account/user-status';\n\nexport const BUTTON_TEXT_MAPPING = {\n [userActiveStep.USER_ACTIVE_STEP_STATE_VALUE_0]:\n 'account.KYCDataProcessingButtonText',\n [userActiveStep.USER_ACTIVE_STEP_STATE_VALUE_5]:\n 'account.KYCClientActionButtonText'\n};\n\nexport const MESSAGE_MAPPING = {\n [userActiveStep.USER_ACTIVE_STEP_STATE_VALUE_0]:\n 'account.KYCDataProcessingMessage',\n [userActiveStep.USER_ACTIVE_STEP_STATE_VALUE_3]:\n 'account.KYCVerificationFailedMessage',\n [userActiveStep.USER_ACTIVE_STEP_STATE_VALUE_4]:\n 'account.KYCVerificationExpiredMessage',\n [userActiveStep.USER_ACTIVE_STEP_STATE_VALUE_5]:\n 'account.KYCClientActionMessage',\n [userActiveStep.USER_ACTIVE_STEP_STATE_VALUE_7]:\n 'account.KYCProviderWaitingMessage'\n};\n\nexport const USER_ACTIVE_STEP_STATES_TO_SHOW_STATUS_BAR = Object.keys(\n MESSAGE_MAPPING\n).map(k => +k);\n","export enum ESignicatVerificationActions {\n Verify = 'SignicatVerify',\n Verified = 'SignicatVerified',\n Failed = 'SignicatFailed'\n}\n","import { Suspense, useEffect, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport LocalStorage from 'utils/bom-dom-manipulation/local-storage';\nimport { arrayFindBy } from 'utils/collection-manipulation/array-find-by';\nimport { ReservedRoutes } from 'utils/constants/app/app-routes';\nimport { ODD_FORMATS } from 'utils/constants/betslip/odd-formats';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { lazy as lazyImport } from 'utils/generic/lazy';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\nimport { useChangeOddFormat } from 'hooks/betslip/useChangeOddFormat';\nimport { useSearchParams } from 'hooks/useSearchParams';\n\nconst { AddToBetslipLink } = lazyImport(\n () =>\n import(\n /* webpackChunkName: \"add-to-betslip-link\" */ 'components/AddToBetslipLink'\n )\n);\n\nexport const AddToBetslipLinkCheck = () => {\n const queries = useSearchParams();\n const location = useLocation();\n const changeOddFormat = useChangeOddFormat();\n\n const [isAddToBetslip, setIsAddToBetslip] = useState(false);\n\n useEffect(() => {\n if (SpringConfigs.IFRAME_SPORTSBOOK && queries.odds_type) {\n const format = {\n ...arrayFindBy(ODD_FORMATS, 'value', queries.odds_type, false)\n };\n\n const { id, value } = format;\n changeOddFormat(id, value);\n }\n\n if (\n location.pathname === ReservedRoutes.addToBetslip ||\n LocalStorage.getItem(storageKeyName('betslip', 'ADD_TO_BETSLIP_DATA'))\n ) {\n setIsAddToBetslip(true);\n }\n\n if (location.pathname.includes(ReservedRoutes.deposit)) {\n const path = location.pathname.replace(ReservedRoutes.deposit, '');\n window.location.href = `${window.location.origin}${path}?accounts=%2A&wallet=%2A&deposit=%2A`;\n }\n }, []);\n\n if (!isAddToBetslip) {\n return null;\n }\n\n return (\n \n \n \n );\n};\n","import { Suspense } from 'react';\nimport { useSelector } from 'react-redux';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { lazy } from 'utils/generic/lazy';\nimport { getIsLoggedIn } from 'store/selectors/user-data';\n\nconst { DeRealityCheck } = lazy(\n () =>\n import(\n /* webpackChunkName: \"de-reality-check\" */ 'newcomponents/Shared/account/DeRealityCheck'\n )\n);\n\nexport const CheckDeRealityCheck = () => {\n const isLoggedIn = useSelector(getIsLoggedIn);\n\n if (!(SpringConfigs.SHOW_REALITY_CHECK && isLoggedIn)) {\n return null;\n }\n\n return (\n \n \n \n );\n};\n","import { Suspense, useState } from 'react';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { lazy } from 'utils/generic/lazy';\nimport { Portal } from 'components/Shared/Portal';\n\nconst { CommunityChatContent } = lazy(\n () => import(/* webpackChunkName: \"CommunityChat\" */ './Content')\n);\n\nexport const CommunityChat = () => {\n const [communityChatAvailable] = useState(\n () => !document.querySelector('.popup-body') // Check if project is mounted through iframe\n );\n\n if (!SpringConfigs.COMMUNITY_CHAT_ENABLED || !communityChatAvailable) {\n return null;\n }\n\n return (\n \n \n \n \n \n );\n};\n","import { useLayoutEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { getCurrencyConfigs } from 'services/bet-slip';\nimport { useCurrency } from 'hooks/useCurrency';\nimport { setRounding, setRoundingLoading } from 'store/actions/app-data';\n\nexport const useGetCurrencyConfigs = (): void => {\n const { currencyId } = useCurrency();\n const dispatch = useDispatch();\n\n useLayoutEffect(() => {\n if (currencyId) {\n dispatch(setRoundingLoading(true));\n getCurrencyConfigs(\n currencyId,\n dataObj => {\n if (dataObj?.data) {\n const currency = dataObj.data.currency;\n\n if (currency) {\n const rounding = currency[Object.keys(currency)[0]]?.rounding;\n\n dispatch(setRounding(rounding));\n }\n }\n\n dispatch(setRoundingLoading(false));\n },\n () => {\n dispatch(setRoundingLoading(false));\n }\n );\n }\n }, [currencyId]);\n};\n","import { useEffect } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { CRYPTO_CURRENCIES_MAPPING } from 'utils/constants/account/crypto-currencies';\nimport { addQuery, saveCurrentLocation } from 'components/QueryRoute';\nimport { useGetCurrencyConfigs } from 'hooks/useGetCurrencyConfigs';\nimport { getIsLoggedIn, getUser } from 'store/selectors/user-data';\n\nexport const CurrencyRelatedLogic = () => {\n useGetCurrencyConfigs();\n const history = useHistory();\n const isLoggedIn = useSelector(getIsLoggedIn);\n const user = useSelector(getUser);\n\n useEffect(() => {\n if (!user.pending) {\n const switchCurrency = (event: MessageEvent) => {\n if (\n event.data &&\n event.data.action === 'switchCurrency' &&\n event.data.currencyId === CRYPTO_CURRENCIES_MAPPING.FTNF.currency\n ) {\n if (isLoggedIn) {\n history.push(\n addQuery({\n selected_wallet: CRYPTO_CURRENCIES_MAPPING.FTNF.currency\n })\n );\n } else {\n history.push(\n addQuery({\n selected_wallet: CRYPTO_CURRENCIES_MAPPING.FTNF.currency\n })\n );\n saveCurrentLocation(\n 'login',\n `${window.getPathname()}?selected_wallet=${\n CRYPTO_CURRENCIES_MAPPING.FTNF.currency\n }`\n );\n history.push(addQuery({ accounts: '*', login: '*' }));\n }\n }\n };\n\n window.addEventListener('message', switchCurrency, false);\n\n return () => {\n window.removeEventListener('message', switchCurrency);\n };\n }\n }, [user.pending, isLoggedIn]);\n\n return null;\n};\n","import { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { deepMerge } from 'utils/collection-manipulation/deep-merge';\nimport { FavoritePersonalization } from 'services/favorite-personalization';\nimport { setPersonalizedGenericSettings } from 'store/actions/app-data';\nimport { getIsLoggedIn } from 'store/selectors/user-data';\n\nexport const FetchGenericSettings = () => {\n const isLoggedIn = useSelector(getIsLoggedIn);\n\n const dispatch = useDispatch();\n const { prepareFavoritesInitialData } = FavoritePersonalization();\n\n useEffect(() => {\n if (isLoggedIn) {\n prepareFavoritesInitialData(preparedData => {\n const newData = deepMerge(\n { accountSettings: {} },\n preparedData.personalizationGenericSettings || {},\n { shouldMergeInFirst: false, applyEmptyArraysAndObjects: true }\n );\n\n dispatch(setPersonalizedGenericSettings(newData));\n }, true);\n }\n }, [isLoggedIn]);\n\n useEffect(() => {\n if (!isLoggedIn) {\n dispatch(setPersonalizedGenericSettings({}));\n }\n }, [isLoggedIn]);\n\n return null;\n};\n","import { UtilsIcons } from 'utils/icons';\n\nlet prefetcherCalled = false;\n\nexport const IconsPrefetcher = () => {\n const prefetchIcons = () => {\n const iconUrl = UtilsIcons.createUrl({\n lib: 'generic',\n theme: 'default',\n name: 'spin'\n });\n\n const iconRemoveUrl = UtilsIcons.createUrl({\n lib: 'generic',\n theme: 'colored',\n name: 'remove'\n });\n\n void UtilsIcons.prefetch(iconUrl);\n void UtilsIcons.prefetch(iconRemoveUrl);\n prefetcherCalled = true;\n };\n\n !prefetcherCalled && prefetchIcons();\n\n return null;\n};\n","import { useEffect } from 'react';\nimport { getCookie } from 'utils/bom-dom-manipulation/cookies';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport store from 'store';\nimport { setFirebaseToken } from 'store/actions';\n\nexport const InitializeFirebase = () => {\n useEffect(() => {\n try {\n if (SpringConfigs.WRAPPER_APP) {\n const token = getCookie('X_FCM_TOKEN');\n\n if (token && typeof token === 'string') {\n store.dispatch(setFirebaseToken(token));\n }\n } else {\n import(\n /* webpackChunkName: \"get-firebase-token\" */\n 'utils/helpers/push-notification'\n ).then(async data => {\n const { initAndGetFirebaseToken } = data;\n const token = await initAndGetFirebaseToken();\n\n if (token) {\n store.dispatch(setFirebaseToken(token));\n }\n });\n }\n } catch (error) {\n console.error(error);\n }\n }, []);\n\n return null;\n};\n","import { useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { login } from 'services/authentication';\nimport { markAsReadNotification } from 'hooks/auth/useUserNotifications';\nimport { useOpenGameCustomCode } from 'newhooks/generic/useOpenGameCustomCode';\nimport { useLoginCallback } from '../../Login/hooks/useLoginCallback';\n\nexport const LoginRelatedLogic = () => {\n const history = useHistory();\n const [username, setUsername] = useState('');\n const [password, setPassword] = useState('');\n const openCasinoGame = useOpenGameCustomCode();\n\n const { loginCallback } = useLoginCallback({\n rememberMe: true,\n username,\n password\n });\n\n const sbLogin = (user: string, pass: string) => {\n setUsername(user);\n setPassword(pass);\n };\n\n window.SB = {\n openCasinoGame,\n historyPush: (path: string) => {\n history.push(path);\n },\n login: sbLogin,\n markAsReadNotification: markAsReadNotification\n };\n\n useEffect(() => {\n if (username && password) {\n login({ username, password }, loginCallback);\n }\n }, [username, password]);\n\n return null;\n};\n","import { ECasinoGameMode } from 'interfaces/casino-data';\nimport { fetchGamesByIds } from 'services/casino/casino-fetch-games-by-id';\nimport { useOpenCasinoGame } from 'newhooks/casino/useOpenCasinoGame';\n\nexport const useOpenGameCustomCode = () => {\n const openGame = useOpenCasinoGame();\n\n return (gameId: string, mode: ECasinoGameMode) => {\n fetchGamesByIds([gameId], true, true).then(data => {\n if (data.length) {\n const game = data[0];\n\n openGame(mode, game);\n }\n });\n };\n};\n","import { Portal } from 'components/Shared/Portal';\nimport { usePopup } from 'hooks/usePopup';\n\nexport const PopupPortal = () => {\n const modals = usePopup();\n\n return modals?.length ? (\n \n
{modals.map(modal => modal.modal)}
\n
\n ) : null;\n};\n","import { useEffect } from 'react';\nimport qs from 'qs';\n\nexport const PostMessageRelatedLogic = () => {\n useEffect(() => {\n const searchObject = qs.parse(window.location.search, {\n ignoreQueryPrefix: true\n });\n\n if (\n searchObject &&\n searchObject.message &&\n searchObject.mode === 'external' &&\n window.opener\n ) {\n window.opener.postMessage({ status: searchObject.message }, '*');\n }\n }, []);\n\n return null;\n};\n","import { useEffect } from 'react';\nimport qs from 'qs';\nimport LocalStorage from 'utils/bom-dom-manipulation/local-storage';\nimport { StatisticsRedirectPath } from 'utils/constants/app/general';\nimport { STATISTICS_LANG } from 'utils/constants/languages/language-format';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { getWithLangMountPath } from 'utils/generic/route-manipulation';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\n\nexport const RedirectFromStatistics = () => {\n useEffect(() => {\n if (window.location.hash.includes(StatisticsRedirectPath)) {\n const searchParams = qs.parse(\n window.location.hash.slice(window.location.hash.indexOf('?')),\n {\n ignoreQueryPrefix: true\n }\n );\n\n LocalStorage.setItem(\n storageKeyName('sportsbook', 'FROM_STATISTICS'),\n JSON.stringify(searchParams)\n );\n\n if (searchParams) {\n const lang =\n Object.keys(STATISTICS_LANG).find(\n key => STATISTICS_LANG[key] === searchParams.language\n ) || '';\n\n if (searchParams?.type && +searchParams?.type === 1) {\n window.location.href = getWithLangMountPath(\n `${SpringConfigs.PAGE_URLS.live}`,\n lang\n );\n } else {\n window.location.href = getWithLangMountPath(\n `${SpringConfigs.PAGE_URLS.prematch}`,\n lang\n );\n }\n }\n }\n }, []);\n\n return null;\n};\n","import { Suspense } from 'react';\nimport { Route } from 'react-router-dom';\nimport { RedirectToSingleViewRoute } from 'utils/constants/app/general';\nimport { lazy as lazyImport } from 'utils/generic/lazy';\nimport { getMountPath } from 'utils/generic/route-manipulation';\nimport { useSbRouteMatch } from 'newhooks/generic/useSbRouteMatch';\n\nconst { RedirectToSingleGameViewContent } = lazyImport(\n () =>\n import(\n /* webpackChunkName: \"redirection-to-single-game-view\" */ './RedirectToSingleGameView'\n )\n);\n\nexport const RedirectToSingleGameView = () => {\n const { path } = useSbRouteMatch();\n\n return (\n \n \n \n \n \n );\n};\n","import { Suspense } from 'react';\nimport { useSelector } from 'react-redux';\nimport { userActiveStep } from 'utils/constants/account/user-status';\nimport { lazy } from 'utils/generic/lazy';\nimport { useFetchAccountParams } from 'newhooks/account/useFetchAccountParams';\nimport { getSumSubModalOpen, getUser } from 'store/selectors/user-data';\n\nconst { SumSubKYCVerification } = lazy(\n () =>\n import(\n /* webpackChunkName: \"sum-sub-KYC-verification\" */ 'newcomponents/Shared/account/SumSubKYCVerification'\n )\n);\n\nexport const SumSubKYCVerificationCheck = () => {\n const sumSubModalOpen = useSelector(getSumSubModalOpen);\n const { accountParams } = useFetchAccountParams();\n const user = useSelector(getUser);\n\n const checkSumSubKYCVerification =\n (!Number(accountParams?.sumSubWithdrawalAction) &&\n user.active_step === userActiveStep.USER_ACTIVE_STEP_VALUE_37 &&\n user.active_step_state ===\n userActiveStep.USER_ACTIVE_STEP_STATE_VALUE_5) ||\n sumSubModalOpen;\n\n if (!checkSumSubKYCVerification) {\n return null;\n }\n\n return (\n \n \n \n );\n};\n","import { Suspense } from 'react';\nimport { lazy } from 'utils/generic/lazy';\nimport { Portal } from 'components/Shared/Portal';\nimport { useTour } from 'newhooks/generic/useTour';\n\nconst { Tour } = lazy(\n () =>\n import(/* webpackChunkName: \"tour\" */ 'newcomponents/Shared/generic/Tour')\n);\n\nexport const TourWrapper = () => {\n const { tourWrapperActive } = useTour();\n\n return tourWrapperActive ? (\n \n \n \n \n \n ) : null;\n};\n","import { useEffect, useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { DEBOUNCE_DELAY } from 'utils/constants/app/magic-numbers-app';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { TOUR_STEPS_TYPES } from 'utils/constants/tour';\nimport {\n detectTourMethod,\n TOUR_PATH_NAMESPACE\n} from 'utils/generic/tour-settings';\nimport { isMobile } from 'utils/is-mobile';\nimport { TTourSteps } from 'interfaces/tour';\nimport { useDebounce } from 'hooks/useDebounce';\nimport { setTourSteps } from 'store/actions';\nimport {\n getTourModalVisible,\n getTourSteps,\n gettourStepsInitialData\n} from 'store/selectors/app-data';\nimport { getIsLoggedIn, getUser } from 'store/selectors/user-data';\n\ntype TUseTourProps = {\n tourSteps: TTourSteps;\n tourWrapperActive: boolean;\n};\n\nexport function useTour(): TUseTourProps {\n const [tourMethods, setTourMethods] = useState([]);\n\n const user = useSelector(getUser);\n const tourSteps = useSelector(getTourSteps);\n const isLoggedIn = useSelector(getIsLoggedIn);\n const tourModalVisible = useSelector(getTourModalVisible);\n const tourStepsInitialData = useSelector(gettourStepsInitialData);\n\n const dispatch = useDispatch();\n const resource = TOUR_PATH_NAMESPACE();\n\n const tourWrapperActive =\n isLoggedIn &&\n !!resource &&\n !isMobile() &&\n !user.pending &&\n Boolean(Object.values(tourSteps || {}).find(step => step.active));\n\n const isActiveTour =\n resource &&\n isLoggedIn &&\n !isMobile() &&\n !user.pending &&\n SpringConfigs.USER_PERSONALIZATION_ENABLED &&\n Object.keys(tourStepsInitialData[resource] || {}).length;\n\n const resources = useMemo((): TTourSteps => {\n if (!resource || !tourMethods.length) {\n return {};\n }\n\n let currentActiveTourStep = -1;\n\n if (\n !tourStepsInitialData?.[resource]?.finished &&\n !tourStepsInitialData?.[resource]?.skipped\n ) {\n currentActiveTourStep = Number(\n Object.keys(tourStepsInitialData[resource] || {}).find(\n step => +step >= 0\n )\n );\n }\n\n return tourMethods.reduce(\n (list, selector, index) => ({\n ...list,\n [index]: detectTourMethod(selector, index, currentActiveTourStep)\n }),\n {}\n );\n }, [tourStepsInitialData, resource, tourMethods]);\n\n useEffect(() => {\n if (isActiveTour) {\n dispatch(setTourSteps(resources || {}));\n }\n\n return () => {\n dispatch(setTourSteps({}));\n };\n }, [isLoggedIn, user.pending, resources]);\n\n useDebounce(\n () => {\n if (isActiveTour && tourModalVisible) {\n let tours: TOUR_STEPS_TYPES[] = [];\n\n document.querySelectorAll('[data-tour]').forEach(tour => {\n const tourStepType = tour.getAttribute(\n 'data-tour'\n ) as TOUR_STEPS_TYPES | null;\n\n tourStepType && tours.push(tourStepType);\n });\n\n tours = [...new Set(tours)];\n\n if (tours.includes(TOUR_STEPS_TYPES.addCompetitions)) {\n tours = tours.filter(\n tour => tour !== TOUR_STEPS_TYPES.addCompetitionsTopMatches\n );\n }\n\n setTourMethods(tours);\n }\n },\n DEBOUNCE_DELAY._3000,\n [isActiveTour, tourModalVisible]\n );\n\n return {\n tourSteps,\n tourWrapperActive\n };\n}\n","import { LegacyRef, useRef } from 'react';\nimport { useSelector } from 'react-redux';\nimport { EIconSize } from 'utils/constants/app/ui';\nimport { GlobalIcon } from 'components/GlobalIcon';\nimport { Portal } from 'components/Shared/Portal';\nimport { getTurnstileEnabled } from 'store/selectors/app-data';\n\nexport const TurnstileCheck = () => {\n const turnstileEnabled = useSelector(getTurnstileEnabled);\n const container: LegacyRef = useRef(null);\n const wrapper: LegacyRef = useRef(null);\n\n return turnstileEnabled ? (\n \n
\n
\n {\n if (container.current) {\n container.current.style.display = 'none';\n }\n\n if (wrapper.current) {\n wrapper.current.innerHTML = '';\n }\n }}\n />\n
\n\n \n
\n
\n ) : null;\n};\n","import {\n memo,\n ReactElement,\n SyntheticEvent,\n useCallback,\n useEffect\n} from 'react';\nimport { useSelector } from 'react-redux';\nimport {\n EIconSize,\n ZINDEX_HIGH_5,\n ZINDEX_HIGH_6\n} from 'utils/constants/app/ui';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { GlobalIcon } from 'components/GlobalIcon';\nimport { Modal } from 'components/Modal';\nimport { BetBuilderContent } from 'newcomponents/Shared/sportsbook/BetBuilderModal/components/BetBuilderContent';\nimport { TBetBuilderModalProps } from 'newcomponents/Shared/sportsbook/BetBuilderModal/types';\nimport { getIsLoggedIn } from 'store/selectors/user-data';\nimport './index.less';\n\nif (SpringConfigs.IS_RTL) {\n import('./rtl.less');\n}\n\nexport const BetBuilderModal = memo(\n ({\n betBuilderModalVisible,\n fixtureId,\n toggleBetBuilderModal,\n gameTitle,\n sportId\n }: TBetBuilderModalProps): ReactElement => {\n const isLoggedIn = useSelector(getIsLoggedIn);\n\n const closeBetBuilderModal = useCallback(\n (e?: SyntheticEvent) => {\n e && e.stopPropagation();\n toggleBetBuilderModal(false);\n },\n [toggleBetBuilderModal]\n );\n\n useEffect(() => {\n if (!isLoggedIn) {\n closeBetBuilderModal();\n }\n }, [isLoggedIn, closeBetBuilderModal]);\n\n return (\n \n }\n visible={betBuilderModalVisible}\n onCancel={closeBetBuilderModal}\n className=\"bbModal\"\n maskStyle={{ zIndex: ZINDEX_HIGH_6 }}\n style={{\n borderRadius: '12px',\n padding: 0\n }}\n bodyStyle={{\n padding: 0,\n textAlign: 'left'\n }}\n image={false}\n >\n {betBuilderModalVisible && (\n \n )}\n \n );\n }\n);\n","import { useState } from 'react';\nimport { EBetBuilderModalActions } from 'components/Generic/__partials/BetBuilderModalGeneric/actions';\nimport { BetBuilderModal } from 'newcomponents/Shared/sportsbook/BetBuilderModal';\nimport { TBetBuilderModalProps } from 'newcomponents/Shared/sportsbook/BetBuilderModal/types';\nimport { useEventbus } from 'newhooks/generic/useEventbus';\n\n// @TODO need to move BetBuilder modal in generic instead of mounting for each game card\n\nexport const BetBuilderModalGeneric = () => {\n const [modalProps, setModalProps] = useState(\n null\n );\n\n useEventbus({\n [EBetBuilderModalActions.OPEN_BET_BUILDER_MODAL]: ({\n payload\n }: {\n payload: TBetBuilderModalProps;\n }) => {\n setModalProps(payload);\n },\n\n [EBetBuilderModalActions.UPDATE_BET_BUILDER_MODAL_PROPS]: ({\n payload\n }: {\n payload: TBetBuilderModalProps;\n }) => {\n setModalProps(prevProps => ({ ...prevProps, ...payload }));\n },\n\n [EBetBuilderModalActions.CLOSE_BET_BUILDER_MODAL]: () => {\n setModalProps(null);\n }\n });\n\n return modalProps && ;\n};\n","import { Suspense } from 'react';\nimport { useSelector } from 'react-redux';\nimport { lazy } from 'utils/generic/lazy';\nimport { getRecaptchaEnabled } from 'store/selectors/app-data';\n\nconst { DoBetRecaptchaComponent } = lazy(\n () => import(/* webpackChunkName: \"recaptcha\" */ './Component')\n);\n\nexport const DoBetRecaptcha = () => {\n const recaptchaEnabled = useSelector(getRecaptchaEnabled);\n\n return recaptchaEnabled ? (\n \n \n \n ) : null;\n};\n","import { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { ModalWidth, ZINDEX_MODAL } from 'utils/constants/app/ui';\nimport { isMobile } from 'utils/is-mobile';\nimport { EGeolocationFailedPopup } from 'components/Generic/__partials/GeolocationFailedPopup/types';\nimport { Modal, ModalButtons } from 'components/Modal';\nimport { Button } from 'newcomponents/UI/Button';\nimport { useEventbus } from 'newhooks/generic/useEventbus';\nimport './index.less';\n\nexport const GeolocationFailedPopup = () => {\n const { t } = useTranslation();\n const [modalVisible, setModalVisible] = useState(false);\n\n useEventbus({\n [EGeolocationFailedPopup.ShowPopup]: () => {\n setModalVisible(true);\n }\n });\n\n return (\n \n \n\n \n {\n setModalVisible(false);\n }}\n >\n {t('account.ok')}\n \n \n \n );\n};\n","import { FC, Suspense } from 'react';\nimport { useSelector } from 'react-redux';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { lazy } from 'utils/generic/lazy';\nimport { USER_ACTIVE_STEP_STATES_TO_SHOW_STATUS_BAR } from 'components/Generic/__partials/KYCVerificationStatusBar/constants';\nimport { useFetchAccountParams } from 'newhooks/account/useFetchAccountParams';\nimport { getIsLoggedIn, getUser } from 'store/selectors/user-data';\n\nconst { KYCVerificationStatusBarComponent } = lazy(\n () =>\n import(\n /* webpackChunkName: \"KYCVerificationStatusBarComponent\" */ './Component'\n )\n);\n\nexport const KYCVerificationStatusBar: FC = () => {\n const user = useSelector(getUser);\n\n const isLoggedIn = useSelector(getIsLoggedIn);\n const { accountParams } = useFetchAccountParams();\n\n if (user.pending || !isLoggedIn) {\n return;\n }\n\n const shouldShowKycVerificationStatusBar =\n user.active_step_state !== null &&\n (SpringConfigs.SHOW_KYC_STATUS_BAR ||\n Boolean(+accountParams?.verificationKYCStatus)) &&\n USER_ACTIVE_STEP_STATES_TO_SHOW_STATUS_BAR.includes(user.active_step_state);\n\n return shouldShowKycVerificationStatusBar ? (\n \n \n \n ) : null;\n};\n","import { Suspense } from 'react';\nimport { useSelector } from 'react-redux';\nimport { lazy } from 'utils/generic/lazy';\nimport { PartnerConfig } from 'interfaces/partner-config';\nimport { getPartnerConfigs } from 'store/selectors/socket';\nimport { getIsLoggedIn } from 'store/selectors/user-data';\n\nconst { LoyaltyDataFetcher } = lazy(\n () =>\n import(/* webpackChunkName: \"LoyaltyDataFetcher\" */ './LoyaltyDataFetcher')\n);\n\nexport const LoyaltyDataFetcherWrapper = () => {\n const partnerConfigs = useSelector(getPartnerConfigs) as PartnerConfig;\n const isLoggedIn = useSelector(getIsLoggedIn);\n\n const isLoyaltyV2 =\n partnerConfigs?.is_using_loyalty_program && !!partnerConfigs?.is_loyalty_v2;\n\n const shouldFetch = isLoggedIn && isLoyaltyV2;\n\n return shouldFetch ? (\n \n \n \n ) : null;\n};\n","import { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { ModalWidth, ZINDEX_MODAL } from 'utils/constants/app/ui';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { CommandNames } from 'utils/constants/swarm/swarm-command-names';\nimport { fireEvent } from 'utils/generic/event-bus';\nimport { showToastError } from 'utils/generic/show-toast-error';\nimport { isMobile } from 'utils/is-mobile';\nimport { EKycType } from 'interfaces/generic';\nimport { TSwarmError } from 'interfaces/spring-websocket-interfaces';\nimport { swarmCommand } from 'services/get-swarm-data';\nimport { ESignicatVerificationActions } from './types';\nimport { Modal, ModalButtons } from 'components/Modal';\nimport { Button } from 'newcomponents/UI/Button';\nimport { useEventbus } from 'newhooks/generic/useEventbus';\nimport './index.less';\n\nconst REQUEST_INTERVAL = 30000;\n\ntype TGetConfirmActionResponse = {\n ConfirmationUrl: string;\n IsConfirmed: null | boolean;\n ConfirmationUrlQr?: string;\n};\n\nconst isLegitimuzVerificationType =\n SpringConfigs.KYC_VERIFICATION_TYPE === EKycType.Legitimuz;\n\nexport const SignicatVerificationBeforeActions = () => {\n const { t } = useTranslation();\n const [verificationParams, setVerificationParams] = useState<{\n shouldVerify: true;\n email?: string;\n callbackActionParams?: Record;\n } | null>(null);\n\n const [confirmUrl, setConfirmUrl] = useState(null);\n\n useEventbus({\n [ESignicatVerificationActions.Verify]: ({\n payload\n }: {\n payload: {\n email?: string;\n callbackActionParams?: Record;\n };\n }) => {\n setVerificationParams({ shouldVerify: true, ...payload });\n }\n });\n\n useEffect(() => {\n if (verificationParams) {\n const shouldVerifyByEmail = verificationParams.email;\n\n const commandName = isLegitimuzVerificationType\n ? CommandNames.GET_LEGITIMUZ_ACTION_CONFIRMATION_URL\n : shouldVerifyByEmail\n ? CommandNames.GET_SIGNICAT_ACTION_CONFIRMATION_URL_BY_EMAIL\n : CommandNames.GET_SIGNICAT_ACTION_CONFIRMATION_URL;\n\n const requestParams = shouldVerifyByEmail\n ? { email: verificationParams.email }\n : {};\n\n swarmCommand(\n commandName,\n requestParams,\n ({ details }: { details: TGetConfirmActionResponse }) => {\n if (details.IsConfirmed === null && details?.ConfirmationUrl) {\n if (details.ConfirmationUrl === 'None') {\n showToastError(\"ConfirmationUrl is 'None'\");\n setVerificationParams(null);\n fireEvent({ key: ESignicatVerificationActions.Failed });\n } else {\n if (!isMobile() && details.ConfirmationUrlQr) {\n setConfirmUrl(details.ConfirmationUrlQr);\n } else {\n setConfirmUrl(details.ConfirmationUrl);\n }\n }\n } else if (details.IsConfirmed) {\n fireEvent({\n key: ESignicatVerificationActions.Verified,\n payload: verificationParams.callbackActionParams\n });\n setVerificationParams(null);\n }\n },\n null,\n (err: TSwarmError) => {\n setVerificationParams(null);\n fireEvent({\n key: ESignicatVerificationActions.Failed,\n payload: { errMessage: err.data.result_text }\n });\n }\n );\n\n const interval = setInterval(() => {\n swarmCommand(\n commandName,\n requestParams,\n ({ details }: { details: TGetConfirmActionResponse }) => {\n if (details.IsConfirmed) {\n fireEvent({\n key: ESignicatVerificationActions.Verified,\n payload: verificationParams.callbackActionParams\n });\n setVerificationParams(null);\n }\n }\n );\n }, REQUEST_INTERVAL);\n\n return () => {\n clearInterval(interval);\n };\n }\n }, [verificationParams]);\n\n return (\n \n
\n

{t('account.pendingVerificationModalDesc')}

\n
\n \n {\n confirmUrl && window.open(confirmUrl, '_blank');\n }}\n >\n {t('account.verify')}\n \n \n \n );\n};\n","import { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport { Form } from 'antd';\nimport { ModalWidth, ZINDEX_MODAL } from 'utils/constants/app/ui';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { CommandNames } from 'utils/constants/swarm/swarm-command-names';\nimport { fireEvent } from 'utils/generic/event-bus';\nimport { isMobile } from 'utils/is-mobile';\nimport { showToastSuccess } from 'utils/swarm/swarm-success-handler';\nimport { swarmCommand } from 'services/get-swarm-data';\nimport { ESignicatVerificationActions } from 'components/Generic/__partials/SignicatVerificationBeforeActions/types';\nimport { EWrongLoginAttempts } from 'components/Generic/__partials/WrongLoginAttemptsUnlockPopup/types';\nimport { Modal, ModalButtons } from 'components/Modal';\nimport { ModalWithInput } from 'components/Modal/WithInput';\nimport { addQuery } from 'components/QueryRoute';\nimport { SolidFormItem } from 'components/SolidFormItem';\nimport { Button } from 'newcomponents/UI/Button';\nimport { Input } from 'newcomponents/UI/Input';\nimport { useSearchParams } from 'hooks/useSearchParams';\nimport { useEventbus } from 'newhooks/generic/useEventbus';\nimport './index.less';\n\nconst QUERY_PARAM_FOR_RESET_ACTION = 'wrong_login_attempts_reset';\n\nexport const WrongLoginAttemptsUnlockPopup = () => {\n const { t } = useTranslation();\n const history = useHistory();\n const [form] = Form.useForm();\n\n const { action, code } = useSearchParams();\n\n const [successResetModalOpen, setSuccessResetModalOpen] = useState(false);\n const [modalVisible, setModalVisible] = useState(false);\n const [signicatVerificationErrKey, setSignicatVerificationErrKey] = useState<\n string | null\n >(null);\n\n const onSubmit = (\n params: { email: string },\n avoidVerificationCHeck?: boolean\n ) => {\n if (params.email) {\n if (\n SpringConfigs.FACIAL_VERIFICATION_BEFORE_ACTIONS &&\n !avoidVerificationCHeck\n ) {\n fireEvent({\n key: ESignicatVerificationActions.Verify,\n payload: {\n email: params.email,\n callbackActionParams: { email: params.email }\n }\n });\n\n return;\n }\n\n swarmCommand(\n CommandNames.SEND_WRONG_LOGIN_ATTEMPTS_RESET_CODE,\n { email: params.email },\n () => {\n showToastSuccess(t('account.success'));\n setModalVisible(false);\n form.resetFields();\n }\n );\n }\n };\n\n useEventbus({\n [EWrongLoginAttempts.ShowPopup]: () => {\n history.push(addQuery({ accounts: undefined, login: undefined }));\n setModalVisible(true);\n },\n [ESignicatVerificationActions.Verified]: ({\n payload\n }: {\n payload: { email: string };\n }) => {\n onSubmit(payload, true);\n },\n // @ts-ignore\n [ESignicatVerificationActions.Failed]: ({\n payload\n }: {\n payload: { errMessage: string };\n }) => {\n setSignicatVerificationErrKey(payload.errMessage as unknown as string);\n }\n });\n\n useEffect(() => {\n if (action === QUERY_PARAM_FOR_RESET_ACTION && code) {\n swarmCommand(\n CommandNames.VERIFY_WRONG_LOGIN_ATTEMPTS_RESET,\n { confirmation_code: code },\n () => {\n history.push(addQuery({ code: undefined, action: undefined }));\n setSuccessResetModalOpen(true);\n }\n );\n }\n }, [action, code]);\n\n useEffect(() => {\n if (signicatVerificationErrKey) {\n form.validateFields(['email']);\n }\n }, [signicatVerificationErrKey]);\n\n return (\n <>\n {\n setModalVisible(false);\n form.resetFields();\n }}\n Input={\n {\n if (signicatVerificationErrKey) {\n return Promise.reject(\n t(`swarm.${signicatVerificationErrKey}`)\n );\n } else {\n return Promise.resolve();\n }\n }\n }\n ]}\n >\n {\n if (signicatVerificationErrKey) {\n setSignicatVerificationErrKey(null);\n }\n }}\n />\n \n }\n onFinish={onSubmit}\n form={form}\n />\n\n {\n setSuccessResetModalOpen(false);\n }}\n image={{\n lib: 'generic',\n name: 'Success',\n theme: 'colored'\n }}\n >\n \n

\n {t('account.loginResetSuccess')}\n

\n {\n setSuccessResetModalOpen(false);\n history.push(addQuery({ accounts: '*', login: '*' }));\n }}\n >\n {t('account.login')}\n \n
\n \n \n );\n};\n","import { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport LocalStorage from 'utils/bom-dom-manipulation/local-storage';\nimport { ZINDEX_HIGH_2 } from 'utils/constants/app/ui';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { formatAmountWithCurrency } from 'utils/generic/currency-format';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\nimport { isMobile } from 'utils/is-mobile';\nimport { showToastSuccess } from 'utils/swarm/swarm-success-handler';\nimport { ICasinoCachedGames } from 'interfaces/casino-data';\nimport { Modal } from 'components/Modal';\nimport { Button } from 'newcomponents/UI/Button';\nimport { getActiveGames } from 'store/selectors/new-casino';\nimport { getUser } from 'store/selectors/user-data';\nimport './index.less';\n\nif (SpringConfigs.IS_RTL) {\n import('./rtl.less');\n}\n\nexport const NewDepositPopup = () => {\n const { t } = useTranslation();\n const user = useSelector(getUser);\n const [depositPopupVisible, setDepositPopupVisible] = useState(false);\n const [paymentData, setPaymentData] = useState<{ amount: string } | null>(\n null\n );\n\n const activeGames = useSelector(getActiveGames) as ICasinoCachedGames;\n const isThereAnyActiveGame = Object.keys(activeGames).length > 0;\n const location = window.location.search;\n\n useEffect(() => {\n const shouldDisplay = JSON.parse(\n LocalStorage.getItem(storageKeyName('account', 'DEPOSIT_AMOUNT'))\n );\n\n const paymentDataStorage = JSON.parse(\n LocalStorage.getItem(storageKeyName('account', 'PAYMENT_DATA'))\n );\n\n setPaymentData(paymentDataStorage);\n\n setDepositPopupVisible(shouldDisplay);\n }, []);\n\n useEffect(() => {\n if (\n !location.includes('message=') ||\n !isThereAnyActiveGame ||\n !user.currency\n ) {\n return;\n }\n\n showToastSuccess(\n `${paymentData?.amount} ${user.currency} ${t(\n 'account.successAddedToYourBallanceMessage'\n )} `\n );\n LocalStorage.removeItem(storageKeyName('account', 'DEPOSIT_AMOUNT'));\n LocalStorage.removeItem(storageKeyName('account', 'PAYMENT_DATA'));\n setDepositPopupVisible(false);\n }, [isThereAnyActiveGame, user]);\n\n if (!location.includes('accounts=') || !paymentData) {\n return null;\n }\n\n return (\n {\n LocalStorage.removeItem(storageKeyName('account', 'DEPOSIT_AMOUNT'));\n setDepositPopupVisible(false);\n\n document.body.classList.remove('no-scroll');\n }}\n image={{ lib: 'generic', name: 'success', theme: 'colored' }}\n renderInBody\n >\n ${formatAmountWithCurrency(\n user.currency,\n paymentData?.amount\n )} ${t('account.successAddedToYourBallanceMessage')}`\n }}\n />\n\n
\n {\n document.body.classList.remove('no-scroll');\n setDepositPopupVisible(false);\n LocalStorage.removeItem(\n storageKeyName('account', 'DEPOSIT_AMOUNT')\n );\n LocalStorage.removeItem(storageKeyName('account', 'PAYMENT_DATA'));\n }}\n >\n {t('account.ok')}\n \n
\n \n );\n};\n","import { ReactElement, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport localStorage from 'utils/bom-dom-manipulation/local-storage';\nimport {\n CONFIRM_MODAL_PADDING,\n CONFIRM_MODAL_WIDTH\n} from 'utils/constants/account/payment';\nimport { ZINDEX_TOOLTIP } from 'utils/constants/app/ui';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\nimport { Modal, ModalButtons } from 'components/Modal';\nimport { Button } from 'newcomponents/UI/Button';\nimport './index.less';\n\nexport const AgePopup = (): ReactElement => {\n const { t } = useTranslation();\n const ENOUGH_OLD = localStorage.getItem(storageKeyName('app', 'ENOUGH_OLD'));\n const [visible, setVisible] = useState(!JSON.parse(ENOUGH_OLD));\n\n const [visibleNotEnoughOld, setVisibleNotEnoughOld] = useState(false);\n\n return (\n setVisible(false)}\n zIndex={ZINDEX_TOOLTIP}\n closable={false}\n maskStyle={{ backgroundColor: 'rgba(0, 0, 0, 0.88)', zIndex: 10000 }}\n >\n \n {!visibleNotEnoughOld && (\n \n {\n setVisibleNotEnoughOld(true);\n }}\n >\n {t('account.no')}\n \n {\n localStorage.setItem(storageKeyName('app', 'ENOUGH_OLD'), 'true');\n setVisible(false);\n }}\n >\n {t('account.yes')}\n \n \n )}\n \n );\n};\n","import { ReactElement, Suspense, useEffect, useMemo } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport localStorage from 'utils/bom-dom-manipulation/local-storage';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { lazy } from 'utils/generic/lazy';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\nimport { TThemeColors } from 'interfaces/data-spot';\nimport { AddToBetslipLinkCheck } from './__partials/AddToBetslipLinkCheck';\nimport { CheckDeRealityCheck } from './__partials/CheckDeRealityCheck';\nimport { CommunityChat } from './__partials/CommunityChat';\nimport { CurrencyRelatedLogic } from './__partials/CurrencyRelatedLogic';\nimport { FetchGenericSettings } from './__partials/FetchGenericSettings';\nimport { IconsPrefetcher } from './__partials/IconsPrefetcher';\nimport { InitializeFirebase } from './__partials/InitializeFirebase';\nimport { LoginRelatedLogic } from './__partials/LoginRelatedLogic';\nimport { PopupPortal } from './__partials/PopupPortal';\nimport { PostMessageRelatedLogic } from './__partials/PostMessageRelatedLogic';\nimport { RedirectFromStatistics } from './__partials/RedirectFromStatistics';\nimport { RedirectToSingleGameView } from './__partials/RedirectToSingleGameView';\nimport { SumSubKYCVerificationCheck } from './__partials/SumSubKYCVerificationCheck';\nimport { TourWrapper } from './__partials/TourWrapper';\nimport { TurnstileCheck } from './__partials/TurnstileCheck';\nimport { BetBuilderModalGeneric } from 'components/Generic/__partials/BetBuilderModalGeneric';\nimport { DoBetRecaptcha } from 'components/Generic/__partials/DoBetRecaptcha';\nimport { GeolocationFailedPopup } from 'components/Generic/__partials/GeolocationFailedPopup';\nimport { KYCVerificationStatusBar } from 'components/Generic/__partials/KYCVerificationStatusBar';\nimport { LoyaltyDataFetcherWrapper } from 'components/Generic/__partials/LoyaltyDataFetcherWrapper';\nimport { SignicatVerificationBeforeActions } from 'components/Generic/__partials/SignicatVerificationBeforeActions';\nimport { WrongLoginAttemptsUnlockPopup } from 'components/Generic/__partials/WrongLoginAttemptsUnlockPopup';\nimport { QueryRoute } from 'components/QueryRoute';\nimport { NewDepositPopup } from 'newcomponents/Shared/account/NewDepositPopup';\nimport { AgePopup } from 'newcomponents/Shared/agePopup';\nimport { setIsDarkMode } from 'store/actions';\nimport { getIsDarkMode } from 'store/selectors/app-data';\nimport './index.less';\n\nconst { InitializeOneSignal } = lazy(\n () =>\n import(\n /* webpackChunkName: \"initialize-one-signal\" */ './__partials/InitializeOneSignal'\n )\n);\n\nconst { InitializeFastTrack } = lazy(\n () =>\n import(\n /* webpackChunkName: \"initialize-fast-track\" */ './__partials/InitializeFastTrack'\n )\n);\n\nconst { NotificationsRedirectionsHandler } = lazy(\n () =>\n import(\n /* webpackChunkName: \"notifications-redirections-handler\" */ './__partials/NotificationsRedirectionsHandler'\n )\n);\n\nconst { HooryRelatedLogic } = lazy(\n () =>\n import(\n /* webpackChunkName: \"hoory-features\" */ './__partials/HooryRelatedLogic'\n )\n);\n\nconst { BetModalCheck } = lazy(\n () =>\n import(\n /* webpackChunkName: \"BetModal-Check\" */ './__partials/BetModalCheck'\n )\n);\n\nconst { Iovation } = lazy(\n () => import(/* webpackChunkName: \"iovation\" */ 'components/Iovation')\n);\n\nconst { GamblingAreas } = lazy(\n () =>\n import(/* webpackChunkName: \"gambling-areas\" */ 'components/GambleingAreas')\n);\n\nconst { CheckHomeworkData } = lazy(\n () =>\n import(\n /* webpackChunkName: \"check-homework-data\" */ 'newelements/Generics/homework/checkHomeworkData'\n )\n);\n\nconst { LogoutRelatedLogic } = lazy(\n () =>\n import(\n /* webpackChunkName: \"LogoutRelatedLogic\" */ './__partials/LogoutRelatedLogic'\n )\n);\n\nconst { IframeSportsbookLogic } = lazy(\n () =>\n import(\n /* webpackChunkName: \"IframeSportsbookLogic\" */ './__partials/IframeSportsbookLogic'\n )\n);\n\nconst { CheckUserPersonalization } = lazy(\n () =>\n import(\n /* webpackChunkName: \"Check-User-Personalization\" */ './__partials/CheckUserPersonalization'\n )\n);\n\nconst { CheckGeoComply } = lazy(\n () =>\n import(\n /* webpackChunkName: \"Check-Geo-Comply\" */ './__partials/CheckGeoComply'\n )\n);\n\nconst { BrazilMigrateKYC } = lazy(\n () =>\n import(\n /* webpackChunkName: \"BrazilMigrateKYC\" */ './__partials/BrazilMigrateKYC'\n )\n);\n\nconst COLOR_SET = {\n buttonsColor: '',\n buttonsTextColor: '',\n themeColor: '',\n themeTextColor: '',\n pinnedWidgetColor: '',\n pinnedWidgetTextColor: ''\n};\n\ntype TColorsKeys =\n | 'buttonsColor'\n | 'buttonsTextColor'\n | 'themeColor'\n | 'themeTextColor'\n | 'pinnedWidgetColor'\n | 'pinnedWidgetTextColor';\n\nexport const Generic = (): ReactElement | null => {\n const location = window.location.search;\n const dispatch = useDispatch();\n const isDarkMode = useSelector(getIsDarkMode);\n\n useEffect(() => {\n const theme = localStorage.getItem(storageKeyName('app', 'THEME'));\n\n dispatch(setIsDarkMode(theme === 'dark'));\n }, []);\n\n const _history = useHistory();\n\n useEffect(() => {\n window.fromNext && _history.replace(window.location.pathname);\n }, [_history]);\n\n const themingChangeColors = useMemo(() => {\n const styleElem = getComputedStyle(document.body);\n const colorsArray: TThemeColors = COLOR_SET;\n\n const colorSet: TThemeColors = {\n buttonsColor: '--v3-primary-color',\n buttonsTextColor: '--v3-text-color',\n themeColor: '--v3-black-0',\n themeTextColor: '--v3-text-color',\n pinnedWidgetColor: '--v3-primary-color',\n pinnedWidgetTextColor: '--v3-color-on-primary'\n };\n\n Object.keys(colorSet).forEach(elem => {\n colorsArray[elem as TColorsKeys] = styleElem.getPropertyValue(\n colorSet[elem as TColorsKeys]\n );\n });\n\n return { ...colorsArray };\n }, [isDarkMode]);\n\n useEffect(() => {\n window.__dataspot__?.trackThemingChange?.({\n themeColors: themingChangeColors\n });\n }, [themingChangeColors]);\n\n return (\n <>\n {location.includes('message=') && }\n {SpringConfigs.PUSH_NOTIFICATIONS_ENABLED && (\n \n \n \n )}\n {SpringConfigs.GAMBLING_AREAS && !SpringConfigs.MOCKED_DATA && (\n \n \n \n )}\n {SpringConfigs.VERIFY_AGE_POPUP ? : null}\n {SpringConfigs.IFRAME_SPORTSBOOK && (\n \n \n \n )}\n {SpringConfigs.IS_BET_SHARING_AVAILABLE && (\n \n \n \n )}\n {(!!SpringConfigs.SESSION_LIFE_TIME ||\n SpringConfigs.INACTIVITY_LOGOUT_ENABLED) && (\n \n \n \n )}\n {SpringConfigs.FIREBASE_ENABLED && (\n \n \n \n )}\n {SpringConfigs.HOMEWORK_ENABLED && (\n \n \n \n )}\n {SpringConfigs.HOORY_ENABLED && (\n \n \n \n )}\n {SpringConfigs.IOVATION_ENABLED && (\n \n \n \n )}\n {SpringConfigs.ONE_SIGNAL_APP_ID && (\n \n \n \n )}\n {SpringConfigs.USER_PERSONALIZATION_ENABLED &&\n !SpringConfigs.MOCKED_DATA && (\n \n \n \n )}\n {SpringConfigs.FAST_TRACK_BRAND && (\n \n \n \n )}\n {SpringConfigs.GEO_COMPLY_ENABLED && (\n \n \n \n )}\n {SpringConfigs.SHOW_ADDITIONAL_CHECKBOX_FOR_LOGIN &&\n SpringConfigs.VERIFICATION_TYPE === 1 && (\n \n \n \n )}\n\n {SpringConfigs.FACIAL_VERIFICATION_BEFORE_ACTIONS && (\n \n \n \n )}\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { ReactElement, useEffect, useLayoutEffect } from 'react';\nimport { EIconSize } from 'utils/constants/app/ui';\nimport { GlobalIcon } from 'components/GlobalIcon';\nimport './index.less';\n\n/**\n * @prop onAfterLoad: You can use this event with lazy component to track loading state.\n * @prop onBeforeLoad: This is to capture loading end state\n */\ntype Props = {\n size?: EIconSize._16 | EIconSize._24 | EIconSize._32 | EIconSize._48;\n className?: string;\n onAfterLoad?: () => void;\n onBeforeLoad?: () => void;\n color?: string;\n};\n\nexport const Loading = ({\n size,\n className = '',\n onAfterLoad,\n onBeforeLoad,\n color = 'var(--v3-primary-color)'\n}: Props): ReactElement => {\n useLayoutEffect(() => onBeforeLoad?.(), []);\n\n useEffect(() => () => onAfterLoad?.(), []);\n\n return (\n
\n \n
\n );\n};\n","import { useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport qs from 'qs';\nimport { checkAndStoreFcmToken } from 'utils/account/push-notifications';\nimport { setUserLoginLimitStartTimeLS } from 'utils/account/user-info';\nimport LocalStorage from 'utils/bom-dom-manipulation/local-storage';\nimport { setCookieLoginCredentials } from 'utils/bom-dom-manipulation/login-credentials';\nimport { sendPostMessage } from 'utils/bom-dom-manipulation/send-post-message-to-iframe';\nimport SessionStorage from 'utils/bom-dom-manipulation/session-storage';\nimport { VAIX_IFRAME_ID } from 'utils/constants/app/iframe-ids';\nimport { CookieExpiration } from 'utils/constants/dateInfo/dateInfo';\nimport {\n MILLISECONDS_IN_SECOND,\n SECONDS_PER_MINUTE\n} from 'utils/constants/dateInfo/time-numbers';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\nimport { loginState } from 'utils/sportsbook/api-post-message-sender';\nimport {\n AuthData,\n LoginResponse,\n ProfileData\n} from 'interfaces/authentication';\nimport { AfterSignIn } from 'services/afterSignIn';\nimport {\n getUser,\n sendRestoreLoginPostMsg,\n setTermsAndConditionVersion\n} from 'services/authentication';\nimport { getUserAllNotifications } from 'services/sportsbook/notifications';\nimport { getSavedLocation } from 'components/QueryRoute';\nimport { useUpdateUser } from 'hooks/auth/useUpdateUser';\nimport { setLoginLimit, setUserData, setUserLoggedIn } from 'store/actions';\nimport { setShowAdditionalInfo } from 'store/actions/app-data';\nimport { getRegFieldData } from 'store/selectors/app-data';\n\ntype TLoginCallbackProps = {\n rememberMe: boolean;\n userGroups?: string | null;\n username: string | null;\n password: string | null;\n inPopup?: boolean;\n};\n\ntype ReturnType = {\n loginCallback: (data: LoginResponse) => void;\n updateAuthData: () => void;\n isTwoFactorPopupVisible: boolean;\n qrCodeOrigin?: string;\n};\n\nconst TWO_FACTOR_AUTHENTICATION_STATUS = 4;\n\nexport const useLoginCallback = ({\n rememberMe,\n userGroups,\n inPopup\n}: TLoginCallbackProps): ReturnType => {\n const authData = useRef();\n const [isTwoFactorPopupVisible, setIsTwoFactorPopupVisible] = useState(false);\n const [qrCodeOrigin, setQrCodeOrigin] = useState();\n const dispatch = useDispatch();\n const history = useHistory();\n\n const regFieldsData = useSelector(getRegFieldData);\n\n const personalId = regFieldsData?.find(\n field => field && field.formType === 'personalId'\n );\n\n const loginCallback = (data: LoginResponse) => {\n const {\n auth_token,\n user_id,\n qr_code_origin,\n authentication_status,\n jwe_token\n } = data;\n\n authData.current = {\n auth_token,\n user_id,\n qr_code_origin,\n jwe_token\n };\n\n if (authentication_status === TWO_FACTOR_AUTHENTICATION_STATUS) {\n setIsTwoFactorPopupVisible(true);\n setQrCodeOrigin(qr_code_origin);\n\n return;\n }\n\n if (SpringConfigs.ADD_INFO_AFTER_LOGIN) {\n dispatch(setShowAdditionalInfo(true));\n LocalStorage.setItem(\n storageKeyName('customPopup', 'SHOW_ADDITIONAL_INFO'),\n 'true'\n );\n }\n\n checkAndStoreFcmToken();\n\n updateAuthData();\n\n sendPostMessage({ type: 'userId', value: data.user_id }, VAIX_IFRAME_ID);\n\n window.popupIframe && sendRestoreLoginPostMsg(data);\n\n if (SpringConfigs.IFRAME_SPORTSBOOK) {\n loginState('loggedIn');\n }\n\n if (\n SpringConfigs.LOGIN_LIMIT_POPUP ||\n SpringConfigs.PLAYER_ACTIVITY_CHECK\n ) {\n setUserLoginLimitStartTimeLS();\n }\n };\n\n const updateAuthData = () => {\n LocalStorage.setItem(\n storageKeyName('account', 'AUTH_DATA'),\n JSON.stringify(authData.current)\n );\n getUser(\n (data: ProfileData) => {\n storeUser(data);\n\n if (\n data.terms_and_conditions_version !== 'v2' &&\n SpringConfigs.SHOW_ADDITIONAL_CHECKBOX_FOR_LOGIN &&\n SpringConfigs.VERIFICATION_TYPE === 0\n ) {\n setTermsAndConditionVersion('v2', () => {});\n }\n },\n updateUser,\n 'login',\n false,\n !!(\n personalId?.editForm.showOnEditProfile &&\n personalId.editForm.personalIdType === '2' &&\n personalId?.editForm.sendCPFAsDocNumber === '1'\n )\n );\n\n if (SpringConfigs.PUSH_NOTIFICATIONS_ENABLED) {\n getUserAllNotifications();\n }\n };\n\n const { updateUser } = useUpdateUser();\n\n const storeUser = (userData: ProfileData) => {\n setCookieLoginCredentials('loginCredentials', {\n rememberMe,\n userGroups: userGroups || '',\n jwe_token: authData?.current?.jwe_token || ''\n });\n\n dispatch(\n setUserData({\n ...userData,\n last_login_date:\n userData.last_login_date ||\n Math.floor(new Date().getTime() / MILLISECONDS_IN_SECOND)\n })\n );\n dispatch(\n setLoginLimit((userData.session_duration || 0) * SECONDS_PER_MINUTE)\n );\n\n userData.active_time_in_casino &&\n SessionStorage.setItem(\n storageKeyName('account', 'ACTIVE_TIME_IN_CASINO'),\n `${userData.active_time_in_casino}`\n );\n\n const afterSignIn = new AfterSignIn();\n afterSignIn.setAfterExecutionCallback(() => {\n if (afterSignIn.isActionsExist()) {\n !inPopup && getSavedLocation();\n } else {\n const savedLocation = getSavedLocation();\n\n const splitLocation = savedLocation.split('?');\n\n const parsedQuery = qs.parse(splitLocation[1], {\n ignoreQueryPrefix: true\n }) as Record;\n\n if (parsedQuery['accounts'] && parsedQuery['login']) {\n delete parsedQuery.accounts;\n delete parsedQuery.login;\n }\n\n const updatedLocation = `${splitLocation[0]}?${qs.stringify(\n parsedQuery\n )}`;\n\n history.push(updatedLocation);\n }\n\n dispatch(setUserLoggedIn(true));\n LocalStorage.setItem(\n storageKeyName('account', 'PARENT_ACCOUNT_CURRENCY'),\n userData.currency\n );\n\n setCookieLoginCredentials(\n 'sbuser',\n {\n rememberMe,\n userGroups: userGroups ? userGroups || '' : ''\n },\n CookieExpiration.DAYS_15\n );\n });\n afterSignIn.executeActions();\n };\n\n return {\n loginCallback,\n updateAuthData,\n isTwoFactorPopupVisible,\n qrCodeOrigin\n };\n};\n","import { FC, ReactElement } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Form, FormInstance } from 'antd';\nimport cc from 'classcat';\nimport styled from 'styled-components';\nimport { ModalPadding, ModalWidth, ZINDEX_MODAL } from 'utils/constants/app/ui';\nimport { isMobile } from 'utils/is-mobile';\nimport { Modal, ModalButtons } from 'components/Modal';\nimport { Button } from 'newcomponents/UI/Button';\n\nconst Description = styled.p`\n margin: 12px auto 24px;\n text-align: center;\n color: var(--v3-black-85);\n font-size: 14px;\n`;\n\ntype Props = {\n title: string;\n description: string;\n Image:\n | {\n lib: string;\n name: string;\n theme: string;\n size?: number;\n }\n | false;\n visible: boolean;\n onCancel: (visible: boolean) => void;\n onFinish: (values: any) => void;\n Input?: ReactElement;\n singleButton?: boolean;\n enableAutocomplete?: boolean;\n classname?: string;\n width?: number;\n form?: FormInstance;\n};\n\nexport const ModalWithInput: FC = ({\n title,\n description,\n Input,\n Image,\n visible,\n onCancel,\n onFinish,\n enableAutocomplete,\n singleButton = false,\n classname,\n width,\n form\n}) => {\n const { t } = useTranslation();\n\n return (\n onCancel(false)}\n >\n {description}\n \n \n {Input}\n \n {!singleButton && (\n \n )}\n \n \n \n \n );\n};\n","import { ReactElement } from 'react';\nimport { EIconSize } from 'utils/constants/app/ui';\nimport { GlobalIcon } from 'components/GlobalIcon';\nimport './index.less';\n\ntype TCustomHeaderProps = {\n title: string;\n iconLib: string;\n iconName: string;\n iconTheme: string;\n onCancel?: () => void;\n};\n\nexport const CustomHeader = ({\n title,\n iconLib,\n iconName,\n iconTheme,\n onCancel\n}: TCustomHeaderProps): ReactElement => {\n return (\n
\n
\n \n {title}\n
\n\n \n
\n );\n};\n","import React, {\n CSSProperties,\n ReactElement,\n useEffect,\n useMemo,\n useRef\n} from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ModalFuncProps } from 'antd';\nimport { v4 as uuidv4 } from 'uuid';\nimport { EIconSize, ModalPadding, ModalWidth } from 'utils/constants/app/ui';\nimport { isMobile } from 'utils/is-mobile';\nimport { CustomHeader } from './CustomHeader';\nimport { GlobalIcon } from 'components/GlobalIcon';\nimport { CustomModal } from 'newcomponents/UI/CustomModal';\nimport { usePopupScrollDisable } from 'hooks/usePopupScrollDisable';\nimport { useSearchParams } from 'hooks/useSearchParams';\nimport { setOpenedModals } from 'store/actions/app-data';\nimport { getOpenedModals } from 'store/selectors/app-data';\nimport { getBetslipOpen } from 'store/selectors/betslip';\nimport './index.less';\n\ntype Props = ModalFuncProps & {\n title?: string | React.ReactNode | null;\n visible: boolean;\n closable?: boolean;\n onCancel?: (arg0: React.UIEvent) => void;\n image?:\n | {\n lib: string;\n name: string;\n theme: string;\n size?: number;\n color?: string;\n }\n | false;\n children: React.ReactNode;\n closeIcon?: React.ReactNode;\n maxWidth?: number | string;\n align?: 'left' | 'center' | 'right';\n maskClosable?: boolean;\n padding?: number;\n wrapperPadding?: number;\n width?: number | string;\n centered?: boolean;\n bodyStyle?: Record;\n style?: Record;\n maskStyle?: Record;\n zIndex?: number;\n contentPadding?: number | string;\n className?: string;\n renderInBody?: boolean;\n preventScrollDisable?: boolean;\n hideBorder?: boolean;\n destroyOnClose?: boolean;\n getContainer?: string | false;\n wrapperContainerPadding?: string;\n placement?: 'top' | 'bottom' | 'left' | 'right';\n fullPage?: boolean;\n borderRadius?: string;\n footer?: ReactElement | null;\n closeIconStyle?: CSSProperties;\n fixBody?: boolean;\n renderCloseIconInMask?: boolean;\n customHeader?: {\n title: string;\n iconLib: string;\n iconName: string;\n iconTheme: string;\n onClose: () => void;\n };\n};\n\nexport const Modal = ({\n title,\n image,\n children,\n zIndex,\n align = 'left',\n maxWidth = ModalWidth.MAX_1272,\n padding,\n wrapperPadding,\n bodyStyle,\n style,\n closeIcon,\n visible,\n preventScrollDisable = false,\n hideBorder,\n destroyOnClose = true,\n fixBody = true,\n customHeader,\n contentPadding,\n wrapClassName,\n getContainer,\n wrapperContainerPadding,\n placement,\n fullPage,\n footer,\n maskStyle,\n borderRadius,\n closeIconStyle,\n ...rest\n}: Props): ReactElement => {\n const dispatch = useDispatch();\n const openedModals = useSelector(getOpenedModals);\n const open = useSelector(getBetslipOpen);\n const modalId = useRef(uuidv4());\n const { accounts } = useSearchParams();\n\n const _preventScrollDisable = useMemo(() => {\n return (\n !!accounts ||\n openedModals.size > 0 ||\n (open && isMobile()) ||\n preventScrollDisable\n );\n }, [accounts, openedModals.size, open, preventScrollDisable]);\n\n usePopupScrollDisable(visible, _preventScrollDisable, fixBody);\n\n const updateOpenedModal = (updateType: 'add' | 'delete') => {\n if (openedModals.size) {\n const openedModalsCopy = new Set(openedModals);\n openedModalsCopy[updateType](modalId.current);\n dispatch(setOpenedModals(openedModalsCopy));\n }\n };\n\n useEffect(() => {\n if (visible) {\n updateOpenedModal('add');\n\n return () => {\n updateOpenedModal('delete');\n };\n }\n }, [visible]);\n\n return (\n \n )\n }\n visible={visible}\n closeIconStyle={closeIconStyle}\n >\n {customHeader && (\n {\n if (customHeader.onClose) {\n customHeader.onClose();\n }\n }}\n />\n )}\n {image && (\n
\n \n
\n )}\n {!!title &&
{title}
}\n
{children}
\n \n );\n};\n\nexport const ModalButtons = ({\n direction = 'row',\n children,\n className,\n ...props\n}: {\n direction?: 'row' | 'column';\n children: React.ReactNode;\n className?: string;\n}): ReactElement => {\n return (\n \n {children}\n \n );\n};\n","import { iOSWrapperApp } from 'utils/constants/swarm/spring-configs';\n\nexport const deviceActionManager = {\n vibrate: handleHapticFeedback\n //Can add more managers here\n};\n\nfunction handleHapticFeedback(\n message: 'impactLight' | 'impactMedium' | 'impactHeavy'\n) {\n const hapticMessage = { type: message };\n\n if (iOSWrapperApp) {\n window?.webkit?.messageHandlers?.triggerHaptic.postMessage(hapticMessage);\n } else {\n if (window.triggerHaptic) {\n window.triggerHaptic.postMessage(JSON.stringify(hapticMessage));\n }\n }\n}\n","import { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { deleteCookie } from 'utils/bom-dom-manipulation/cookies';\nimport LS from 'utils/bom-dom-manipulation/local-storage';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\nimport { loginState } from 'utils/sportsbook/api-post-message-sender';\nimport { logout } from 'services/authentication';\nimport { FavoritePersonalization } from 'services/favorite-personalization';\nimport { addQueryInString, getSavedLocation } from 'components/QueryRoute';\nimport { setClientGamingStateInfo, setOneSignalSubId } from 'store/actions';\nimport { setUserNotifications } from 'store/actions/sport-data';\nimport { removeUserData, setUserOptIns } from 'store/actions/user-data';\nimport { getFirebaseToken, getOneSignalSubId } from 'store/selectors/app-data';\n\nexport const useAccountLogout = (params?: {\n source: number;\n}): ((shouldRedirect?: boolean) => void) => {\n const { clearDataFromStorage } = FavoritePersonalization();\n\n const dispatch = useDispatch();\n const history = useHistory();\n\n const firebaseToken = useSelector(getFirebaseToken);\n const oneSignalSubId = useSelector(getOneSignalSubId);\n\n const removeUser = (shouldRedirect?: boolean) => {\n shouldRedirect &&\n history.push(\n addQueryInString(getSavedLocation(), {\n accounts: undefined,\n login: undefined,\n register: undefined\n })\n );\n dispatch(removeUserData());\n dispatch(setUserOptIns(null));\n dispatch(setUserNotifications({}));\n dispatch(setClientGamingStateInfo(null));\n\n LS.removeItem(storageKeyName('account', 'LOGIN_LIMIT_START_TIME'));\n LS.removeItem(storageKeyName('account', 'LOGIN_LIMIT_POPUP_START_TIME'));\n LS.removeItem(storageKeyName('account', 'IS_LOGOUT'));\n deleteCookie('sbuser');\n deleteCookie('loginCredentials');\n LS.removeItem(storageKeyName('account', 'ADDITIONAL_INFO_POPUP'));\n LS.removeItem(storageKeyName('account', 'PARENT_ACCOUNT_CURRENCY'));\n\n if (window.refreshWhenLoggedIn) {\n window.mustRefreshForSessionVisibility = true;\n window.location.reload();\n }\n\n if (SpringConfigs.IFRAME_SPORTSBOOK) {\n loginState('loggedOut');\n }\n\n if (SpringConfigs.WRAPPER_APP && window.median?.auth) {\n window.median.auth.delete();\n }\n\n if (\n SpringConfigs.USER_PERSONALIZATION_ENABLED &&\n !SpringConfigs.MOCKED_DATA\n ) {\n clearDataFromStorage();\n }\n };\n\n return (shouldRedirect?: boolean) => {\n const additionalParams: {\n fcm_token?: string;\n subscription_id?: string;\n } = {};\n\n if (firebaseToken) {\n additionalParams.fcm_token = firebaseToken;\n }\n\n if (oneSignalSubId) {\n additionalParams.subscription_id = oneSignalSubId;\n dispatch(setOneSignalSubId(''));\n }\n\n logout(() => removeUser(shouldRedirect), {\n ...additionalParams,\n ...params\n });\n };\n};\n","import { useCallback, useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport LocalStorage from 'utils/bom-dom-manipulation/local-storage';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\nimport { ProfileData } from 'interfaces/authentication';\nimport { useAccountLogout } from 'hooks/auth/useAccountLogout';\nimport { useFetchAccountParams } from 'newhooks/account/useFetchAccountParams';\nimport { setPendingSuperBets, updateUserData } from 'store/actions';\nimport { updateOpenBets } from 'store/actions/betslip';\n\ntype TArgs = {\n updateUser: (userData: ProfileData) => void;\n};\n\nexport const useUpdateUser = (): TArgs => {\n const dispatch = useDispatch();\n const { accountParams } = useFetchAccountParams();\n const accountLogout = useAccountLogout();\n\n const updateUser = useCallback(\n (userData: ProfileData) => {\n const switchMultiAccount = LocalStorage.getItem(\n storageKeyName('account', 'SWITCH_MULTI_ACCOUNT')\n );\n\n LocalStorage.removeItem(\n storageKeyName('account', 'SWITCH_MULTI_ACCOUNT')\n );\n\n if (userData) {\n if (userData.logout && !JSON.parse(switchMultiAccount)) {\n if (\n +accountParams?.singleSignIn ||\n SpringConfigs.IS_MULTI_ACCOUNT_DISABLED\n ) {\n accountLogout(true);\n }\n } else {\n dispatch(updateUserData(userData));\n\n if (userData.super_bet) {\n dispatch(setPendingSuperBets(userData.super_bet));\n dispatch(updateOpenBets());\n }\n }\n }\n },\n [accountParams?.singleSignIn]\n );\n\n const result = useMemo(\n () => ({\n updateUser\n }),\n [updateUser]\n );\n\n return result;\n};\n","import { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport LocalStorage from 'utils/bom-dom-manipulation/local-storage';\nimport { CommandNames } from 'utils/constants/swarm/swarm-command-names';\nimport { GLOBALS } from 'utils/generic/global-variables';\nimport RidGenerator from 'utils/swarm/rid-generator';\nimport { NotificationsTypes } from 'interfaces/authentication';\nimport { BetTicketMin } from 'interfaces/bet-data';\nimport { UserTriggeringRules } from 'interfaces/notifications';\nimport {\n authCommand,\n subscribeToUserNotifications,\n unsubscribeCommand\n} from 'services/authentication';\nimport {\n setCashbackNotifications,\n setLoyaltyNotifications\n} from 'store/actions';\nimport { updateBetTickets } from 'store/actions/betslip';\nimport { getIsLoggedIn, getUser } from 'store/selectors/user-data';\n\nexport const markAsReadNotification = (\n id: number | number[],\n list?: boolean\n) => {\n authCommand(\n {\n command: CommandNames.MARK_AS_READ_NOTIFICATION,\n params: { [list ? 'notification_id_list' : 'notification_id']: id },\n rid: RidGenerator.gForCommand()\n },\n null\n );\n};\n\nexport const useUserNotifications = (): void => {\n const isLoggedIn = useSelector(getIsLoggedIn);\n const user = useSelector(getUser);\n const dispatch = useDispatch();\n\n const openPopupTriggering = (data: any) => {\n if (window.refreshWhenLoggedIn && window.mustRefreshForSessionVisibility) {\n return false;\n }\n\n const popupTriggeringRules: UserTriggeringRules[] = [];\n let popupOpened = false;\n\n const comparision: Record = {\n '1': 'is',\n '2': 'isNot',\n '3': 'startsWith',\n '4': 'endsWith',\n '5': 'contains',\n '6': 'doesNotContains'\n };\n\n for (const key in data) {\n const rule: UserTriggeringRules = {};\n\n if (\n data[key].ClientId === user.id &&\n data[key].Id &&\n !data[key].Page?.Value\n ) {\n let openedPopupsList = LocalStorage.getItem(\n 'openedPopupsListByLanguage'\n );\n\n const currentLanguageId = GLOBALS.languageConfigs.id;\n openedPopupsList = openedPopupsList ? JSON.parse(openedPopupsList) : {};\n\n if (\n openedPopupsList &&\n currentLanguageId &&\n openedPopupsList[currentLanguageId] &&\n openedPopupsList[currentLanguageId].length &&\n openedPopupsList[currentLanguageId].indexOf(data[key].Id) + 1\n ) {\n popupOpened = false;\n } else {\n window.openPopup?.(data[key].Alias);\n markAsReadNotification(+key);\n popupOpened = true;\n break;\n }\n }\n\n if (\n data[key].ClientId === user.id &&\n data[key].Id &&\n data[key].Page.Comparison &&\n data[key].Page.Value\n ) {\n rule.triggeringUrlValue = data[key].Page.Value;\n rule.triggeringUrlRule =\n comparision[data[key].Page.Comparison as keyof typeof comparision];\n rule.alias = data[key].Alias;\n rule.id = data[key].Id;\n rule.enableTriggeringRule = 1;\n rule.triggeringTime = 0;\n rule.key = +key;\n popupTriggeringRules.push(rule);\n }\n }\n\n if (\n !popupOpened &&\n popupTriggeringRules.length &&\n !window.triggeringRuleIsWorked\n ) {\n window.popupTriggeringRules = popupTriggeringRules;\n window.openPopupsWithInterval?.(null, true);\n }\n };\n\n const setCashbackData = (data: {\n [key: string]: { cashback: NotificationsTypes };\n }) => {\n const tickets = Object.entries(data || {});\n\n if (tickets.length) {\n const cashbackData: Array = [];\n\n tickets.forEach(([ticketId, ticket]) => {\n if (ticket.cashback) {\n cashbackData.push({\n ...ticket.cashback,\n id: +ticketId,\n Amount: ticket.cashback.Amount || 0,\n RewordType: ticket.cashback.RewordType || 0,\n markAsRead: false,\n bonusType: 'cashback'\n });\n }\n });\n\n dispatch(setCashbackNotifications(cashbackData));\n }\n };\n\n const setLoyaltyData = (data: {\n [key: string]: { LevelUpBonus: NotificationsTypes };\n }) => {\n const tickets = Object.entries(data || {});\n\n if (tickets.length) {\n const loyaltyData: Array = [];\n\n tickets.forEach(([ticketId, ticket]) => {\n if (ticket.LevelUpBonus) {\n loyaltyData.push({\n ...ticket.LevelUpBonus,\n id: +ticketId,\n Amount: ticket.LevelUpBonus.Amount || 0,\n bonusType: 'loyalty'\n });\n }\n });\n\n dispatch(setLoyaltyNotifications(loyaltyData));\n }\n };\n\n useEffect(() => {\n const rid = RidGenerator.gForSubscribe();\n\n if (\n isLoggedIn &&\n !user.pending &&\n !window.mustRefreshForSessionVisibility\n ) {\n subscribeToUserNotifications(\n (data: any) => {\n openPopupTriggering(data);\n setCashbackData(data);\n setLoyaltyData(data);\n },\n (data: any) => {\n if (data && data.cashout) {\n const tickets = Object.keys(data.cashout).map(\n (ticketId: string) =>\n ({\n id: +ticketId,\n amount: data.cashout[ticketId].amount\n } as BetTicketMin)\n );\n\n dispatch(updateBetTickets(tickets));\n }\n\n openPopupTriggering(data);\n setCashbackData(data);\n setLoyaltyData(data);\n },\n rid\n );\n }\n\n return () => {\n unsubscribeCommand(rid);\n };\n }, [isLoggedIn, user.pending]);\n};\n","import { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport { modalAlert } from '../usePopup';\n\nexport const useBetslipNotEmptyPopup = (): { showPopup: Function } => {\n const { t } = useTranslation();\n const history = useHistory();\n\n const showPopup = (onConfirm: Function) => {\n modalAlert({\n title: t('account.betslipIsNotEmpty'),\n text: t('account.eventsInBetSlip'),\n successBtn: {\n text: t('account.replace'),\n onClick: onConfirm\n },\n cancelBtn: {\n text: t('account.cancel'),\n onClick: () => {\n const queryParams = new URLSearchParams(window.location.search);\n\n if (queryParams.has('booking_id')) {\n queryParams.delete('booking_id');\n history.replace({\n search: queryParams.toString()\n });\n }\n }\n },\n closable: false\n });\n };\n\n return {\n showPopup\n };\n};\n","import { useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { loadLadder } from 'utils/betslip/odd-formats-helper';\nimport { setOddsFormat } from 'utils/betslip/odds-format';\nimport { updateOddFormat } from 'store/actions/betslip';\nimport { getLadderLoaded, getOddFormat } from 'store/selectors/betslip';\n\nexport const useChangeOddFormat = (): ((id: number, value: string) => void) => {\n const oddFormat = useSelector(getOddFormat);\n const ladderLoaded = useSelector(getLadderLoaded);\n const dispatch = useDispatch();\n\n const handle = useCallback(\n (id: number, value: string) => {\n if (value && oddFormat !== id) {\n if (value === 'fractional' && !ladderLoaded) {\n void loadLadder(id);\n } else {\n dispatch(updateOddFormat(id));\n }\n\n setOddsFormat(value);\n }\n },\n [oddFormat, ladderLoaded]\n );\n\n return handle;\n};\n","import { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useAccountBalanceAvailable } from './useCheckIsAccountBalanceAvailable';\nimport {\n getIsFrenchFreeBetEnabled,\n getUseBonusBalance\n} from 'store/selectors/betslip';\nimport { getUser } from 'store/selectors/user-data';\n\nexport function useBalance(): number {\n const user = useSelector(getUser);\n const useBonusBalance = useSelector(getUseBonusBalance);\n const accountBalanceAvailable = useAccountBalanceAvailable();\n const isFrenchFreeBetEnabled = useSelector(getIsFrenchFreeBetEnabled);\n\n return useMemo(() => {\n let balance = +user.balance;\n\n if (\n accountBalanceAvailable &&\n useBonusBalance &&\n (user?.bonus_balance ?? 0) >= 0\n ) {\n const winBalance = user?.bonus_win_balance ? user?.bonus_win_balance : 0;\n\n const bonusBalance = user?.bonus_balance ? user?.bonus_balance : 0;\n const frozenBalance = user?.frozen_balance ? user?.frozen_balance : 0;\n balance = winBalance + bonusBalance + frozenBalance;\n }\n\n if (user.bonus_money && isFrenchFreeBetEnabled) {\n balance = user.bonus_money;\n }\n\n balance = balance || +user.balance;\n\n return balance;\n }, [useBonusBalance, user, accountBalanceAvailable, isFrenchFreeBetEnabled]);\n}\n","import { useMemo } from 'react';\nimport { useSelector } from 'react-redux';\nimport { PartnerConfig } from 'interfaces/partner-config';\nimport { getAllLsBets, getQuickBetEnabled } from 'store/selectors/betslip';\nimport { getPartnerConfigs } from 'store/selectors/socket';\nimport { getIsLoggedIn, getUser } from 'store/selectors/user-data';\n\nexport function useAccountBalanceAvailable(checker?: boolean): boolean {\n const user = useSelector(getUser);\n const allLsBets = useSelector(getAllLsBets);\n const quickBetEnabled = useSelector(getQuickBetEnabled);\n const isLoggedIn = useSelector(getIsLoggedIn);\n const partnerConfig = useSelector(getPartnerConfigs) as PartnerConfig;\n\n const accountBalanceAvailable = useMemo(() => {\n if (\n !isLoggedIn ||\n (!allLsBets?.length && !quickBetEnabled && !checker) ||\n !user\n ) {\n return false;\n } else {\n if (user.sport_bonus && isLoggedIn) {\n return true;\n }\n\n if (user.bonus_money && isLoggedIn) {\n return true;\n }\n\n return false;\n }\n }, [isLoggedIn, allLsBets?.length, partnerConfig, quickBetEnabled, checker]);\n\n return accountBalanceAvailable;\n}\n","import { useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { timeoutDuration } from 'utils/constants/dateInfo/time-numbers';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { showToastError } from 'utils/generic/show-toast-error';\nimport { showToastWarning } from 'utils/generic/show-toast-warning';\nimport { debounce } from 'utils/helpers/debounce';\nimport { thousandSeparator } from 'utils/helpers/validators';\nimport { openParentPage } from 'utils/sportsbook/api-post-message-sender';\nimport RidGenerator from 'utils/swarm/rid-generator';\nimport { useBalance } from './useBalance';\nimport { useCurrency } from './useCurrency';\nimport { addQuery } from 'components/QueryRoute';\nimport {\n getEditBet,\n getIsFreeBetEnabled,\n getIsFrenchFreeBetEnabled,\n getUseBonusBalance\n} from 'store/selectors/betslip';\nimport { getPartnerConfigs } from 'store/selectors/socket';\nimport { getUser } from 'store/selectors/user-data';\n\nexport function useCheckStakeBalance(\n debounceDuration: number = timeoutDuration.DURATION_500\n): (\n contextId: string | null,\n stake: string | number,\n callback?: (disable: boolean) => void\n) => void {\n const history = useHistory();\n const { t } = useTranslation();\n const { currencyId } = useCurrency();\n const balance = useBalance();\n const user = useSelector(getUser);\n const isFreeBetEnabled = useSelector(getIsFreeBetEnabled);\n const partnerConfigs = useSelector(getPartnerConfigs);\n const useBonusBalance = useSelector(getUseBonusBalance);\n const useFrenchFreeBet = useSelector(getIsFrenchFreeBetEnabled);\n const editBet = useSelector(getEditBet);\n const debounceId = useRef(RidGenerator.rand());\n\n const getToDeposit = () => {\n if (useBonusBalance || useFrenchFreeBet) {\n return;\n }\n\n if (SpringConfigs.IFRAME_SPORTSBOOK) {\n openParentPage('deposit');\n } else {\n history.push(addQuery({ accounts: '*', wallet: '*', deposit: '*' }));\n }\n };\n\n const checkMinBetStakeLimit = (\n stake: string | number,\n contextId: string | null\n ) => {\n const betLimitMinStakeForEditBet =\n editBet?.active &&\n editBet?.amount &&\n +editBet.amount + +stake <\n (partnerConfigs?.min_bet_stakes[currencyId] || 0);\n\n const isBetMinLimitStake =\n +stake !== 0 &&\n ((!editBet?.active &&\n +stake < (partnerConfigs?.min_bet_stakes[currencyId] || 0)) ||\n betLimitMinStakeForEditBet);\n\n if (isBetMinLimitStake) {\n const minLimit = t('betslip.betStakeMinLimitErrors', {\n min_bet: thousandSeparator(\n partnerConfigs?.min_bet_stakes[currencyId] || ''\n ),\n currency: currencyId\n });\n\n showToastWarning(\n minLimit,\n contextId ? document.getElementById(contextId) : document.body\n );\n }\n\n return isBetMinLimitStake;\n };\n\n const checkInsufficientBalance = (\n stake: string | number,\n contextId: string | null\n ) => {\n const isInsufficient = +stake > (balance || user.balance);\n\n if (isInsufficient) {\n let balanceError = '';\n\n if (useBonusBalance && user?.bonus_balance) {\n balanceError = t('betslip.insufficientBonusFundError');\n } else if (useFrenchFreeBet) {\n balanceError = t('betslip.insufficientAccountFundError');\n } else {\n balanceError = t('betslip.insufficientFundError');\n }\n\n showToastError(\n `${balanceError}`,\n contextId ? document.getElementById(contextId) : document.body,\n null,\n getToDeposit,\n { cursor: 'pointer' }\n );\n }\n\n return isInsufficient;\n };\n\n return debounce(\n debounceId.current,\n (\n contextId: string | null,\n stake: string | number,\n callback?: (disable: boolean) => void\n ): void => {\n if (stake === '' || isFreeBetEnabled) {\n return callback?.(false);\n }\n\n const isBetMinLimitStake = checkMinBetStakeLimit(stake, contextId);\n const isInsufficient = checkInsufficientBalance(stake, contextId);\n\n callback?.(isBetMinLimitStake || isInsufficient || !Number(stake));\n },\n debounceDuration\n );\n}\n","import { useEffect, useState } from 'react';\n\nexport const useDebounce = (\n effect: Function,\n delay: number,\n deps: Array\n) => {\n const [isDebouncing, setIsDebouncing] = useState(false);\n\n useEffect(() => {\n setIsDebouncing(true);\n const handler = setTimeout(() => {\n effect();\n setIsDebouncing(false);\n }, delay);\n\n return () => clearTimeout(handler);\n }, [...deps, delay]);\n\n return { isDebouncing };\n};\n","import { ReactNode, useState } from 'react';\nimport { singletonHook } from 'react-singleton-hook';\nimport { isRtl } from 'utils/constants/app/rtl';\nimport { ModalPadding, ZINDEX_HIGH_1 } from 'utils/constants/app/ui';\nimport { isMobile } from 'utils/is-mobile';\nimport { Modal, ModalButtons } from 'components/Modal';\nimport { Button } from 'newcomponents/UI/Button';\n\ntype modalProps = {\n title?: string;\n text: string;\n icon?: {\n lib: string;\n name: string;\n theme: string;\n };\n successBtn: {\n text: string;\n onClick: Function;\n };\n cancelBtn?: {\n text: string;\n onClick?: Function;\n };\n closable?: boolean;\n};\nconst initialModalsValue: [] = [];\nlet currentModals: { id: number; modal: ReactNode }[] | [] = initialModalsValue;\n\nlet globalSetModals = (data: { id: number; modal: ReactNode }[] | []): void => {\n console.error(\n `you must usePopup before setting its state ${data[0].id ?? ''}`\n );\n};\n\nlet globalModalAlert = (data: modalProps): void => {\n console.error(`you must usePopup before setting its state ${data}`);\n};\n\nconst _removeFromModal = (id: number) => {\n if (!currentModals.length) {\n return;\n }\n\n const index = currentModals?.findIndex(item => item?.id === id);\n const res = [...currentModals];\n res.splice(index, 1);\n globalSetModals(res);\n};\n\nexport const usePopup = singletonHook(initialModalsValue, () => {\n const [modals, setModals] = useState<{ id: number; modal: ReactNode }[] | []>(\n initialModalsValue\n );\n\n globalSetModals = data => {\n currentModals = data;\n setModals(data);\n };\n\n globalModalAlert = (data: modalProps) => {\n const id = modals?.length ? modals?.length + 1 : 1;\n const closable = data.closable ?? true;\n\n const modal = (\n {\n _removeFromModal(id);\n }}\n zIndex={ZINDEX_HIGH_1}\n image={\n data.icon\n ? { ...data.icon }\n : { lib: 'generic', name: 'attentionGeneric', theme: 'colored' }\n }\n >\n
\n {data.text}\n
\n \n {!!data.cancelBtn && (\n {\n data.cancelBtn?.onClick && data.cancelBtn.onClick();\n _removeFromModal(id);\n }}\n >\n {data.cancelBtn.text}\n \n )}\n {\n data.successBtn.onClick();\n _removeFromModal(id);\n }}\n >\n {data.successBtn.text}\n \n \n \n );\n\n const item = {\n id: id,\n modal: modal\n };\n\n const res = modals?.length ? [...modals, item] : [item];\n\n globalSetModals(res);\n };\n\n currentModals = modals;\n\n return modals;\n});\n\nexport const modalAlert = (data: modalProps) => globalModalAlert(data);\n","import { useEffect, useRef } from 'react';\nimport { timeoutDuration } from 'utils/constants/dateInfo/time-numbers';\n\nexport const usePopupScrollDisable = (\n condition = true,\n preventScrollDisable?: boolean,\n fixBody = true\n): void => {\n const scrollPositionRef = useRef(null);\n useEffect(() => {\n if (preventScrollDisable) {\n return;\n }\n\n const timer = setTimeout(() => {\n if (condition && document.body.style.overflow !== 'hidden') {\n scrollPositionRef.current = window.scrollY;\n document.body.style.overflow = 'hidden';\n document.body.style.touchAction = 'none';\n\n if (fixBody) {\n document.documentElement.style.overflow = 'hidden';\n document.body.style.position = 'fixed';\n }\n }\n }, timeoutDuration.DURATION_200);\n\n return () => {\n if (preventScrollDisable) {\n return;\n }\n\n clearTimeout(timer);\n document.body.style.removeProperty('position');\n document.body.style.removeProperty('touch-action');\n\n if (condition) {\n const setOverflowInterval = setInterval(() => {\n document.body.style.overflow = '';\n document.documentElement.style.overflow = '';\n clearInterval(setOverflowInterval);\n }, timeoutDuration.DURATION_100);\n\n scrollPositionRef.current &&\n window.scrollTo(0, scrollPositionRef.current);\n }\n };\n }, [condition]);\n};\n","import { ResponseGeneric } from './generic';\n\nexport type NewCasinoCategory = {\n id: string;\n name: string;\n title: string;\n games_count: string;\n gameCount?: string;\n categoryId?: string;\n badge?: string | null;\n};\n\nexport type NewCasinoProvider = {\n name: string;\n order: string;\n title: string;\n blocked_countries: string[];\n badge: null | { title: string; class: string };\n icon_name?: string;\n};\n\nexport type TNewCasinoDataGamesByAllGroup = {\n count: string;\n games: NewCasinoGameBackend[];\n};\n\nexport type TNewCasinoDataByAllGroup = {\n status: string;\n games: Record;\n};\n\nexport type TNewCasinoData = {\n status: string;\n count: string;\n total_count: string;\n games: NewCasinoGameBackend[];\n};\n\nexport type TNewCasinoDataWithCounts = {\n status: string | number;\n count: string;\n total_count: string;\n games: Record | NewCasinoGameBackend[];\n};\n\nexport enum ENewCasinoFailedDataMessage {\n TimeoutError = 'Timeout Error',\n SomethingWentWrong = 'Something Went Wrong'\n}\n\nexport type TNewCasinoFailedData = {\n status: -1;\n message: ENewCasinoFailedDataMessage;\n};\n\nexport type NewCasinoGameBackend = {\n active: string;\n background?: string;\n backgrounds: string[];\n badge?: { title: string; class: string };\n blocked_countries: string[];\n blocked_currencies: string[];\n categories: string[];\n cats: NewCasinoGameCategory[];\n description: string | null;\n extearnal_game_id: string;\n extra_category?: {\n id: string;\n title: string;\n name: string;\n };\n feats: [];\n features: [];\n front_game_id: string;\n game_options: null | string;\n game_skin_id: string;\n has_age_restriction: number;\n icon_1: string;\n icon_2: string;\n icon_3: string;\n icons: string[];\n id: string;\n markets?: string;\n name: string;\n provider: string;\n provider_badge: null;\n provider_title: string;\n ratio: string;\n rtp: null | string;\n server_game_id: string;\n show_as_provider: string;\n status: string;\n themes: [];\n thms: [];\n title: string | null;\n types: NewCasinoGameTypes;\n};\n\nexport type NewCasinoGame = Pick<\n NewCasinoGameBackend,\n | 'background'\n | 'badge'\n | 'blocked_countries'\n | 'blocked_currencies'\n | 'categories'\n | 'cats'\n | 'description'\n | 'extearnal_game_id'\n | 'game_options'\n | 'has_age_restriction'\n | 'icon_1'\n | 'icon_2'\n | 'icon_3'\n | 'id'\n | 'name'\n | 'provider'\n | 'provider_title'\n | 'types'\n>;\n\ntype NewCasinoGameTypes = {\n realMode: number;\n funMode?: number;\n viewMode?: number;\n};\n\ntype NewCasinoGameCategory = {\n id: string;\n title: string;\n type: string;\n};\n\nexport type NewCasinoGamesConfigs = {\n categoryIds?: string;\n providerIds?: string;\n moduleId: number;\n casinoGamesLimit: number;\n showCategoryName: boolean;\n showLoadMoreBtn: boolean;\n bindWithCategories: boolean;\n bindWithProviders: boolean;\n groupAllByCategories: boolean;\n loadMoreType?: number;\n gamesRows?: number;\n gamesPerRow: number;\n mobileCustomSettings?: boolean;\n mobileShowLoadMoreBtn?: boolean;\n mobileLoadMoreType?: number;\n mobileCasinoGamesLimit?: number;\n mobileGamesRows?: number;\n mobileGamesPerRow?: number;\n mobileShowArrow?: boolean;\n skipQueryKeysCheck?: boolean;\n};\n\nexport enum ENewCasinoGamesFetchingParamsKey {\n Id = 'id',\n Category = 'category'\n}\n\nexport type NewCasinoGamesFetchingParams = {\n partner_id: number;\n is_mobile: number;\n lang: string;\n country: string;\n by_key?: ENewCasinoGamesFetchingParamsKey;\n offset?: number;\n limit?: number;\n id?: string;\n external_id?: string[];\n use_webp: number;\n category?: string;\n _fake_category?: string; // this is a fake param to force the React Query to run correctly\n _all_categories?: string; // this is a fake param to force replacing category param in case of all games count fetch\n provider?: string;\n search?: string;\n};\n\nexport type DecentralizedCasinoGamesFetchingParams = {\n partnerId: number;\n gameId: string;\n};\n\nexport type NewCasinoGamesFetchingParamsPartial =\n Partial;\n\nexport type CasinoLastPlayedGamesResponse = Omit & {\n details: {\n _id: string;\n game_ids: { _id: string }[];\n };\n};\n\nexport type CasinoSuggestedGamesResponse = {\n ExternalId?: number | null;\n GameIds?: number[];\n PlayerId?: number;\n};\n\nexport type DecentralizedCasinoGamesData = {\n count: number;\n status?: string;\n games: DecentralizedCasinoGame[];\n};\nexport type DecentralizedCasinoGame = {\n categoryId: string;\n categories: number[];\n externalGameId: number;\n funMode: number;\n icon1: string;\n icon2: string;\n icon3: string;\n isMobile: number;\n name: string;\n providerType: number;\n realMode: number;\n};\n\nexport type TTournamentGames = {\n items: NewCasinoGame[];\n total_count: string;\n};\n\nexport type IGetCasinoGamesResponse =\n | TNewCasinoDataByAllGroup\n | TNewCasinoData\n | DecentralizedCasinoGamesData\n | TNewCasinoFailedData;\n","export enum EPlayerActivityCheckerActions {\n checkPlayerActivity = 'checkPlayerActivity'\n}\n","import { FC, memo, Suspense } from 'react';\nimport { lazy } from 'utils/generic/lazy';\nimport { isMobile } from 'utils/is-mobile';\nimport { TBetBuilderStakeInputProps } from 'newcomponents/Shared/sportsbook/BetBuilderModal/components/BetBuilderStakeInput/types';\n\nconst { BetBuilderStakeInputDesktop } = lazy(\n () =>\n import(\n /* webpackChunkName: \"BetBuilderStakeInputDesktop\" */ 'newcomponents/Shared/sportsbook/BetBuilderModal/components/BetBuilderStakeInput/Desktop'\n )\n);\n\nconst { BetBuilderStakeInputMobile } = lazy(\n () =>\n import(\n /* webpackChunkName: \"BetBuilderStakeInputMobile\" */ 'newcomponents/Shared/sportsbook/BetBuilderModal/components/BetBuilderStakeInput/Mobile'\n )\n);\n\nexport const BetBuilderStakeInput: FC = memo(\n props => {\n return (\n \n {isMobile() ? (\n \n ) : (\n \n )}\n \n );\n }\n);\n","import { useSelector } from 'react-redux';\nimport { BET_BUILDER_LANGUAGE_MAPPING } from 'utils/constants/languages/language-format';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { getOddFormat } from 'store/selectors/betslip';\n\nexport const priceTypes = {\n 0: 'DecimalPrice',\n 1: 'FractionalPrice',\n 2: 'AmericanPrice',\n 3: 'HongKongPrice',\n 4: 'MalayPrice',\n 5: 'IndoPrice'\n};\n\nexport type TPriceTypesKeys = keyof typeof priceTypes;\n\nexport const useGenerateBetBuilderUrl = ({\n fixtureId\n}: {\n fixtureId: number;\n}) => {\n const oddFormat = useSelector(getOddFormat) as unknown as TPriceTypesKeys;\n\n const language = document.documentElement.lang.slice(\n 0,\n 2\n ) as keyof typeof BET_BUILDER_LANGUAGE_MAPPING;\n\n const generateBetBuilderUrl = () => {\n if (!SpringConfigs.BET_BUILDER_URL) {\n return '';\n }\n\n const odds = priceTypes[oddFormat] || priceTypes['0'];\n const culture =\n BET_BUILDER_LANGUAGE_MAPPING[document.documentElement.lang] ||\n BET_BUILDER_LANGUAGE_MAPPING[language] ||\n 'en-GB';\n\n return `${\n SpringConfigs.BET_BUILDER_URL\n }${fixtureId}&culture=${culture}&odds=${odds}${\n SpringConfigs.BET_BUILDER_URL.includes('brand=') ? '' : '&brand=default'\n }`;\n };\n\n return generateBetBuilderUrl();\n};\n","import {\n ComponentProps,\n Suspense,\n useCallback,\n useEffect,\n useMemo,\n useState\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Col, Input, Row } from 'antd';\nimport cc from 'classcat';\nimport { deviceActionManager } from 'deviceactionmanager/DeviceActionManager';\nimport { ColSizes } from 'utils/constants/app/ui';\nimport { BETSLIP_STAKE_LIMIT, SEPARATOR } from 'utils/constants/betslip';\nimport { BET_BUILDER } from 'utils/constants/betslip/bet-types';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { CommandNames } from 'utils/constants/swarm/swarm-command-names';\nimport { fireEvent } from 'utils/generic/event-bus';\nimport { lazy } from 'utils/generic/lazy';\nimport { removeComma } from 'utils/helpers/validators';\nimport { isMobile } from 'utils/is-mobile';\nimport { BookingIds } from 'interfaces/bet-data';\nimport { swarmCommand } from 'services/get-swarm-data';\nimport { BetslipCalculationResult } from 'newelements/_Betslip/components/BetslipCalculationResult';\nimport { useBookBet } from 'newelements/_Betslip/hooks/useBookBet';\nimport { roundAmount } from 'newelements/_Betslip/utils/roundings/round-amount';\nimport { Container } from 'components/GameNameRedirection';\nimport { EPlayerActivityCheckerActions } from 'newcomponents/Shared/account/PlayerActivityChecker/types';\nimport { BetBuilderStakeInput } from 'newcomponents/Shared/sportsbook/BetBuilderModal/components/BetBuilderStakeInput';\nimport { UseGenerateBetBuilderFooterFields } from 'newcomponents/Shared/sportsbook/BetBuilderModal/hooks/useGenerateBetBuilderFooterFields';\nimport { IBetBuilderMessage } from 'newcomponents/Shared/sportsbook/BetBuilderModal/types';\nimport { Button } from 'newcomponents/UI/Button';\nimport { Divider } from 'newcomponents/UI/Divider';\nimport {\n priceTypes,\n TPriceTypesKeys,\n useGenerateBetBuilderUrl\n} from 'hooks/sportsbook/useGenerateBetBuilderUrl';\nimport { useCheckStakeBalance } from 'hooks/useCheckStakeBalance';\nimport { useCurrency } from 'hooks/useCurrency';\nimport { updateOpenBets } from 'store/actions';\nimport { getLeftSidebarOpenCloseTrigger } from 'store/selectors/app-data';\nimport { getOddFormat, getUseBonusBalance } from 'store/selectors/betslip';\nimport { getIsLoggedIn, getUser } from 'store/selectors/user-data';\nimport './index.less';\n\nconst { BookingModal } = lazy(\n () =>\n import(\n /* webpackChunkName: \"betslip-booking-modal\" */ 'newelements/_Betslip/layouts/Basic/components/Features/BookingBet/components/BookingModal'\n )\n);\n\nconst { BetBuilderSuccessBetModal } = lazy(\n () =>\n import(\n /* webpackChunkName: \"BetBuilderSuccessBetModal\" */ 'newcomponents/Shared/sportsbook/BetBuilderModal/components/BetBuilderSuccessBetModal'\n )\n);\n\ntype TBetBuilderContentProps = {\n fixtureId: number;\n gameTitle?: string;\n sportId?: number;\n showTitle?: boolean;\n scale?: boolean;\n};\n\nconst SCALABLE_IFRAME_MIN_WIDTH = 600;\nconst BB_IFRAME_WRAPPER_ID = 'bet-builder-wrapper';\n\nexport const BetBuilderContent = ({\n gameTitle,\n fixtureId,\n sportId,\n showTitle = true,\n scale\n}: TBetBuilderContentProps) => {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n\n const isLoggedIn = useSelector(getIsLoggedIn);\n const useBonusBalance = useSelector(getUseBonusBalance);\n const user = useSelector(getUser);\n const oddFormat = useSelector(getOddFormat) as TPriceTypesKeys;\n\n const leftSidebarOpenCloseTrigger = useSelector(\n getLeftSidebarOpenCloseTrigger\n );\n\n const [scaleValue, setScaleValue] = useState(1);\n const [isSuccessModalOpen, setIsSuccessModalOpen] = useState(false);\n const [bookIds, setBookIds] = useState([]);\n const [bookingModalVisible, setBookingModalVisible] = useState(false);\n const [placeBetLoading, setPlaceBetLoading] = useState(false);\n const [bookBetLoading, setBookBetLoading] = useState(false);\n const [submitDisabled, setSubmitDisabled] = useState(true);\n const [stakeAmount, setStakeAmount] = useState('');\n const [decimalPrice, setDecimalPrice] = useState(0);\n const [betslipUid, setBetslipUid] = useState('');\n const [betBuilderData, setBetBuilderData] = useState([]);\n const [priceList, setPriceList] = useState<{\n [key: string]: string | number;\n }>({});\n\n const { currency, placement } = useCurrency();\n const checkStakeBalance = useCheckStakeBalance();\n const betBuilderUrl = useGenerateBetBuilderUrl({ fixtureId });\n const fields = UseGenerateBetBuilderFooterFields(\n +stakeAmount,\n +decimalPrice,\n sportId\n );\n\n const { onBookBet } = useBookBet({\n setBookingModalVisible,\n setBookIds: setBookIds,\n currentType: BET_BUILDER.NAME,\n totalStake: +stakeAmount,\n setSystemMinCount: () => {},\n betslipRef: { current: null },\n betslipUid: betslipUid\n });\n\n const resetBetslip = () => {\n setBetBuilderData([]);\n setBetslipUid('');\n setPriceList({});\n setDecimalPrice(0);\n changeStakeAmount('');\n };\n\n const changeStakeAmount = useCallback(\n (value: string) => {\n if (Number(removeComma(value)) >= 0) {\n setStakeAmount(roundAmount(removeComma(value)));\n }\n },\n [isLoggedIn, useBonusBalance, user]\n );\n\n const handlePlaceBet = useCallback(() => {\n const amount = stakeAmount === '' ? '0' : stakeAmount;\n\n checkStakeBalance('bet-builder-wrapper', amount, (disable: boolean) => {\n if (!(user.balance < Number(amount) || disable)) {\n setPlaceBetLoading(true);\n\n swarmCommand(\n CommandNames.SPORT_CAST_CREATE_BET,\n {\n betslip_uid: betslipUid,\n amount: stakeAmount\n },\n () => {\n if (SpringConfigs.WRAPPER_APP && window.median) {\n deviceActionManager.vibrate('impactMedium');\n }\n\n fireEvent({\n key: EPlayerActivityCheckerActions.checkPlayerActivity\n });\n\n setPlaceBetLoading(false);\n setIsSuccessModalOpen(true);\n dispatch(updateOpenBets());\n },\n () => null,\n () => {\n setPlaceBetLoading(false);\n }\n );\n }\n });\n }, [betslipUid, stakeAmount]);\n\n const inputDynamicProps = useMemo<\n Pick, 'suffix' | 'prefix' | 'maxLength'>\n >(\n () => ({\n [placement === 'left' ? 'prefix' : 'suffix']: {currency},\n maxLength: SEPARATOR ? BETSLIP_STAKE_LIMIT + 2 : BETSLIP_STAKE_LIMIT\n }),\n [placement, currency]\n );\n\n const handleBookBet = () => {\n setBookBetLoading(true);\n betslipUid && onBookBet();\n };\n\n const handleSuccessModalAction = useCallback(() => {\n resetBetslip();\n setIsSuccessModalOpen(false);\n }, [resetBetslip]);\n\n useEffect(() => {\n const handler = (event: { data: string }) => {\n try {\n const parsedData = JSON.parse(event.data) as IBetBuilderMessage;\n\n if (parsedData?.betslipUid) {\n setBetslipUid(parsedData.betslipUid);\n }\n\n if (parsedData?.betBuilderData?.Selection) {\n setBetBuilderData(parsedData.betBuilderData.Selection);\n }\n\n if (parsedData?.betBuilderData?.PriceDetails?.DecimalPrice) {\n setPriceList(parsedData?.betBuilderData?.PriceDetails);\n setDecimalPrice(\n parsedData?.betBuilderData?.PriceDetails?.DecimalPrice\n );\n }\n } catch (e) {\n return;\n }\n };\n\n window.addEventListener('message', handler);\n\n return () => window.removeEventListener('message', handler);\n }, []);\n\n useEffect(() => {\n checkStakeBalance(\n 'bet-builder-wrapper',\n stakeAmount,\n (disable: boolean) => {\n setSubmitDisabled(\n stakeAmount === '' || user.balance < Number(stakeAmount) || disable\n );\n }\n );\n }, [stakeAmount, user.balance, useBonusBalance]);\n\n useEffect(() => {\n bookingModalVisible && setBookBetLoading(false);\n }, [bookingModalVisible]);\n\n useEffect(() => {\n if (scale) {\n const containerWidth =\n document.getElementById(BB_IFRAME_WRAPPER_ID)?.clientWidth || 0;\n\n if (containerWidth < SCALABLE_IFRAME_MIN_WIDTH) {\n const scaleValue = containerWidth / SCALABLE_IFRAME_MIN_WIDTH;\n\n setScaleValue(scaleValue);\n }\n }\n }, [leftSidebarOpenCloseTrigger]);\n\n return (\n <>\n {bookingModalVisible && (\n \n \n setBookingModalVisible(false)}\n />\n \n \n )}\n {isSuccessModalOpen && (\n \n \n \n )}\n {\n e.stopPropagation();\n }}\n >\n {showTitle && (\n
\n {`${t('sportsbook.betBuilder')} | ${gameTitle}`}\n
\n )}\n
\n {SpringConfigs.BET_BUILDER_URL ? (\n \n ) : (\n
\n {t('generic.iframeError')}\n
\n )}\n {betslipUid && (\n <>\n
\n \n
\n {t('generic.removeAll')}\n
\n \n \n
\n \n \n {betBuilderData?.length || 0}\n \n \n {t('betslip.betslip')}\n \n \n \n {t('account.odds')}:{' '}\n {priceList[priceTypes[oddFormat]] || decimalPrice}\n \n
\n {betBuilderData?.map(value => {\n return (\n \n {value}\n
\n );\n })}\n \n \n \n\n {!isMobile() && }\n\n {fields.map(field => (\n \n ))}\n\n
\n {SpringConfigs.TERMINAL_MODE && (\n \n {t('account.getCode')}\n \n )}\n \n {t('betslip.placeBet')}\n \n
\n \n \n
\n \n )}\n \n \n \n );\n};\n","import { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { bankersRounding } from 'utils/betslip/bankersRounding';\nimport { ETaxTypes } from 'interfaces/betslip';\nimport { BetslipCalculationField } from 'newelements/_Betslip/hooks/generateFieldsMapping/classes';\nimport { useFormatAmount } from 'newelements/_Betslip/hooks/generateFieldsMapping/hooks/shared/useFormatAmount';\nimport { TUseGenerateBetslipFieldsReturnType } from 'newelements/_Betslip/hooks/generateFieldsMapping/types';\nimport { addSeparatorAndCut } from 'newelements/_Betslip/hooks/generateFieldsMapping/utils';\nimport { TCalculationParams } from 'newelements/_Betslip/utils/calculator';\nimport {\n calculateBasicTaxes,\n calculateRangeTaxes\n} from 'newelements/_Betslip/utils/calculator/calculateTaxes';\nimport { roundMultipleAmount } from 'newelements/_Betslip/utils/roundings/round-amount';\nimport { getRoundingLoading } from 'store/selectors/app-data';\nimport { getTaxes } from 'store/selectors/betslip';\n\nexport const UseGenerateBetBuilderFooterFields = (\n stake: number,\n odd: number,\n sportId?: number\n) => {\n const { t } = useTranslation();\n const formatAmount = useFormatAmount();\n const taxes = useSelector(getTaxes);\n const roundingLoading = useSelector(getRoundingLoading);\n\n const basicTaxParams: TCalculationParams = {\n stake: stake,\n odd: odd,\n isEachWay: false,\n eventId: '',\n sportIds: sportId ? [sportId] : []\n };\n\n const basicTaxesResult = calculateBasicTaxes(basicTaxParams);\n\n const rangeTaxParams = {\n stake: basicTaxesResult.result.stake,\n possibleWin: basicTaxesResult.result.possibleWin\n };\n\n const rangeTaxResult = calculateRangeTaxes(rangeTaxParams);\n\n const fields = useMemo(() => {\n const result: TUseGenerateBetslipFieldsReturnType = [];\n const isTaxForStake = taxes.basic?.type === ETaxTypes.STAKE_TAX;\n\n result.push(\n new BetslipCalculationField(\n t('account.stake'),\n formatAmount(addSeparatorAndCut(stake)),\n {\n 'data-testid': `betBuilder-stake`\n }\n )\n );\n\n const isBasicTaxesAvailable =\n taxes.basic?.type && basicTaxesResult.taxes?.isTaxable;\n\n if (isBasicTaxesAvailable && isTaxForStake) {\n if (taxes.basic?.percent) {\n const translation = t('betslip.taxAmount');\n result.push(\n new BetslipCalculationField(\n `${translation} (${taxes.basic?.percent}%)`,\n formatAmount(\n addSeparatorAndCut(basicTaxesResult.taxes.taxAmount || 0)\n ),\n {\n 'data-testid': 'betBuilder-taxAmount'\n }\n )\n );\n }\n\n const isPossibleWinTax =\n taxes?.basic?.type &&\n [\n ETaxTypes.POSSIBLE_WIN_TAX,\n ETaxTypes.POSSIBLE_WIN_TAX_WITHOUT_STAKE\n ].includes(taxes.basic.type);\n\n if (isPossibleWinTax) {\n const translation = t('betslip.taxBonus');\n result.push(\n new BetslipCalculationField(\n `${translation} (${taxes?.basic?.percent}%)`,\n formatAmount(\n addSeparatorAndCut(basicTaxesResult.taxes?.taxAmount || 0)\n ),\n {\n 'data-testid': 'betBuilder-taxBonus'\n }\n )\n );\n }\n }\n\n if (isTaxForStake) {\n result.push(\n new BetslipCalculationField(\n t('account.totalStake'),\n formatAmount(\n addSeparatorAndCut(\n bankersRounding(basicTaxesResult.result.stake || 0)\n )\n ),\n {\n 'data-testid': 'betBuilder-totalStake'\n }\n )\n );\n }\n\n return result;\n }, [taxes, basicTaxesResult, stake, odd]);\n\n const totalReturnFields = useMemo(() => {\n const result: TUseGenerateBetslipFieldsReturnType = [];\n\n const isTaxesAvailable =\n !!taxes.basic?.type && !!basicTaxesResult.taxes?.isTaxable;\n\n const isTotalReturnAlreadyDisplayedOnFooter =\n isTaxesAvailable &&\n (!Number(rangeTaxResult.result?.possibleWin) ||\n !rangeTaxResult.taxes?.taxAmount);\n\n // @Todo need to understand\n if (!isTotalReturnAlreadyDisplayedOnFooter) {\n const value = formatAmount(\n addSeparatorAndCut(\n roundMultipleAmount(\n rangeTaxResult.result.possibleWinWithoutRangeTax || 0\n )\n )\n );\n\n result.push(\n new BetslipCalculationField(\n t('betslip.totalReturn'),\n value,\n {\n 'data-testid': 'totalReturn'\n },\n roundingLoading\n )\n );\n\n if (isTaxesAvailable) {\n const isProfitTax =\n !!rangeTaxResult.taxes?.rangeTaxedPossibleWinWithoutStakeTaxAmount;\n\n const translation = isProfitTax\n ? 'betslip.taxProfit'\n : 'betslip.taxAmount';\n\n const rangeTaxAmount =\n rangeTaxResult.taxes?.rangeTaxedPossibleWinTaxAmount ??\n rangeTaxResult.taxes?.rangeTaxedPossibleWinWithoutStakeTaxAmount ??\n 0;\n\n const value = formatAmount(addSeparatorAndCut(rangeTaxAmount));\n\n result.push(\n new BetslipCalculationField(\n `${t(translation)} (${rangeTaxResult.taxes?.taxPercent}%)`,\n value,\n {\n 'data-testid': `betBuilder-${translation.replace('betslip.', '')}`\n },\n roundingLoading\n )\n );\n }\n }\n\n if (isTaxesAvailable) {\n const translation = isTotalReturnAlreadyDisplayedOnFooter\n ? 'betslip.possibleWin'\n : 'betslip.finalPayout';\n\n const daraTestId = isTotalReturnAlreadyDisplayedOnFooter\n ? 'totalReturn'\n : 'finalPayout';\n\n const value = formatAmount(\n addSeparatorAndCut(\n roundMultipleAmount(rangeTaxResult.result.possibleWin ?? 0)\n )\n );\n\n result.push(\n new BetslipCalculationField(\n t(translation),\n value,\n {\n 'data-testid': daraTestId\n },\n roundingLoading\n )\n );\n }\n\n return result;\n }, [\n roundingLoading,\n rangeTaxResult,\n basicTaxesResult,\n taxes,\n formatAmount,\n stake,\n odd,\n sportId\n ]);\n\n return [...fields, ...totalReturnFields];\n};\n","import {\n CSSProperties,\n memo,\n ReactElement,\n ReactNode,\n SyntheticEvent,\n useEffect,\n useRef,\n useState\n} from 'react';\nimport cc from 'classcat';\nimport { ZINDEX_HIGH_1 } from 'utils/constants/app/ui';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { isMobile } from 'utils/is-mobile';\nimport { rand } from 'utils/swarm/rid-generator';\nimport { Portal } from 'components/Shared/Portal';\nimport './index.less';\n\ntype TModalProps = {\n visible: boolean;\n title?: ReactElement | string;\n onCancel?: (e?: SyntheticEvent) => void;\n width?: string | number;\n wrapClassName: string;\n className?: string;\n centered?: boolean;\n zIndex?: number;\n style?: CSSProperties;\n bodyStyle?: CSSProperties;\n maskStyle?: CSSProperties;\n maskClosable?: boolean;\n mask?: boolean;\n footer?: ReactElement | null;\n closeIcon?: ReactNode;\n renderCloseIconInMask?: boolean;\n destroyOnClose?: boolean;\n closable?: boolean;\n afterClose?: () => void;\n children: ReactNode;\n contentPadding?: number | string;\n maxWidth?: string | number;\n hideBorder?: boolean;\n getContainer?: string | false;\n wrapperPadding?: string;\n fullPage?: boolean;\n placement?: 'top' | 'bottom' | 'left' | 'right' | undefined;\n borderRadius?: string;\n closeIconStyle?: CSSProperties;\n};\n\nif (SpringConfigs.IS_RTL) {\n import('./rtl.less');\n}\n\nconst AFTER_CLOSE_DELAY = 300;\nconst MODAL_WRAPPER_PADDING = 24;\nconst MODAL_WRAPPER_MOBILE_PADDING = 12;\nconst randomNumberForAddBlocker = rand();\n\nexport const CustomModal = memo(\n ({\n visible,\n title,\n onCancel,\n width,\n wrapClassName,\n zIndex,\n style,\n bodyStyle,\n maskStyle,\n maskClosable = true,\n mask = true,\n footer,\n closeIcon,\n destroyOnClose,\n closable = true,\n afterClose,\n className,\n contentPadding,\n maxWidth,\n hideBorder = true,\n getContainer = false,\n centered = true,\n wrapperPadding,\n fullPage,\n placement,\n borderRadius,\n closeIconStyle,\n renderCloseIconInMask = false,\n children,\n ...rest\n }: TModalProps) => {\n const [modalVisible, setModalVisible] = useState(visible);\n const modalContainerRef = useRef(getContainer);\n\n useEffect(() => {\n setModalVisible(visible);\n modalContainerRef.current = getContainer || false;\n }, [visible, getContainer]);\n\n const handleClose = () => {\n if (onCancel) {\n onCancel();\n } else {\n closeModal();\n }\n };\n\n const closeModal = () => {\n if (destroyOnClose) {\n setModalVisible(false);\n }\n\n if (afterClose && typeof afterClose === 'function') {\n const timeout = setTimeout(() => {\n afterClose();\n clearTimeout(timeout);\n }, AFTER_CLOSE_DELAY);\n }\n };\n\n const handleMaskClick = () => {\n if (maskClosable) {\n handleClose();\n }\n };\n\n const modalContent = (\n <>\n \n \n \n {!renderCloseIconInMask && closable && (\n \n {closeIcon}\n \n )}\n {!!title && (\n
\n {title}\n
\n )}\n
{children}
\n {footer}\n \n \n\n {renderCloseIconInMask && closable && (\n \n {closeIcon}\n \n )}\n \n\n {mask && (\n \n )}\n \n );\n\n return modalVisible ? (\n {modalContent}\n ) : null;\n }\n);\n","import { memo, ReactNode } from 'react';\nimport cc from 'classcat';\nimport './index.less';\n\nexport type TDividerProps = {\n children?: ReactNode;\n className?: string;\n distance?: number;\n type?: string;\n orientation?: string;\n};\n\nexport const Divider = memo(\n ({\n children,\n className = '',\n distance = 0,\n orientation = 'center',\n type = 'horizontal',\n ...props\n }: TDividerProps) => {\n const style = {\n margin: type !== 'vertical' ? `${distance}px 0` : `0 ${distance}px`\n };\n\n return (\n \n {children && {children}}\n \n );\n }\n);\n","import { ForwardedRef, forwardRef, ReactElement } from 'react';\nimport { Input as AntInput, InputProps as AntInputProps, InputRef } from 'antd';\nimport cc from 'classcat';\nimport { createTestId } from 'utils/helpers/create-test-id';\nimport './index.less';\n\nexport type InputProps = AntInputProps & {\n label?: string;\n};\n\nexport const Input = forwardRef(\n (\n { label, className, ...props }: InputProps,\n ref: ForwardedRef\n ): ReactElement => {\n return (\n
\n {!!label &&
{label}
}\n \n
\n );\n }\n);\n","import qs from 'qs';\nimport { UtilsAccount } from 'utils/account';\nimport LS from 'utils/bom-dom-manipulation/local-storage';\nimport { UNCATEGORIZED } from 'utils/constants/casino/casino_categories';\nimport { CUSTOM_CATEGORIES } from 'utils/constants/casino/custom-categories';\nimport { CASINO_MULTIVIEW_ENABLED_QUERY_VALUE } from 'utils/constants/casino/url-queries';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { gameUrl } from 'utils/generic/game-url';\nimport {\n getCasinoParams,\n getCurrentPageArea,\n mountPoint,\n sbRedirect\n} from 'utils/generic/route-manipulation';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\nimport { isMobile } from 'utils/is-mobile';\nimport { fromAllCapitalizedToDasherized } from 'utils/string-manipulation/dasherized-to-all-capitalized';\nimport {\n ECasinoGameMode,\n ECasinoGameView,\n ECasinoGameViewOrder\n} from 'interfaces/casino-data';\nimport { NewCasinoGame } from 'interfaces/new-casino';\nimport { AFTER_SIGN_IN_ACTION_TYPES, AfterSignIn } from 'services/afterSignIn';\nimport { UtilsCasino } from './index';\nimport { browserHistory } from 'configure/history';\nimport { addQuery, saveCurrentLocation } from 'components/QueryRoute';\nimport store from 'store';\nimport { batchActions, setSelectedCasinoGame } from 'store/actions';\nimport {\n addCachedGame,\n addCachedGameId,\n setCachedGameInactive,\n setCachedGameMode,\n setCachedGamesInactive\n} from 'store/actions/new-casino';\n\nconst RESOLVE_AFTER_SIGNIN_DURATION = 300;\nexport interface IConstructGameViewUrl {\n game: NewCasinoGame;\n mode: ECasinoGameMode;\n view?: ECasinoGameView;\n selectedCategory?: string;\n tournament?: {\n id: string;\n };\n gameIndexToChange?: 0 | 1;\n queriesToRemove?: string[];\n}\n\nexport const constructAndRedirectToGameView = ({\n game,\n mode,\n view = ECasinoGameView.SINGLE,\n selectedCategory,\n tournament,\n gameIndexToChange,\n queriesToRemove\n}: IConstructGameViewUrl): void => {\n const isUserLoggedIn = UtilsAccount.checkIsUserLoggedIn();\n\n // This function is responsible for redirecting out to the game page\n const redirectToGameUrl = () => {\n window.open(\n gameUrl({\n gameId: game.extearnal_game_id,\n gameType: mode,\n gameOptions: game.game_options\n }),\n '_self'\n );\n };\n\n // This function is responsible for changing the route in the project session\n const transitionToGameUrl = (\n saveUrl?: boolean,\n showInUrl?: boolean,\n firstGameMode?: string\n ) => {\n return new Promise(resolve => {\n !saveUrl && LS.setItem(storageKeyName('casino', 'GAMES_FETCHED'), 'true');\n\n if (view === ECasinoGameView.SINGLE) {\n const gameCategorySection = `${\n SpringConfigs.DECENTRALIZED_CASINO_URL\n ? game.cats[0]\n : game.cats[0]?.id || UNCATEGORIZED\n }`;\n\n const providerSection = `${fromAllCapitalizedToDasherized(\n game.provider_title\n )}`;\n\n const gameSection = `${game.id}-${\n game.extearnal_game_id\n }-${fromAllCapitalizedToDasherized(game.name)}`;\n\n const categorySection = selectedCategory || CUSTOM_CATEGORIES.all.id;\n\n const queryObj = qs.parse(window.location.search, {\n ignoreQueryPrefix: true\n });\n\n const queriesToRemoveObj = (queriesToRemove || []).reduce(\n (acc, query) => {\n acc[query] = undefined;\n\n return acc;\n },\n {} as Record\n );\n\n const relativePath = [\n categorySection,\n gameCategorySection,\n providerSection,\n gameSection\n ];\n\n const currentPageArea = getCurrentPageArea();\n\n if (currentPageArea && currentPageArea !== 'casino') {\n const queryObject: Record = {\n mode\n };\n\n if (mode === 'real' && !isUserLoggedIn) {\n queryObject.accounts = '*';\n queryObject.login = '*';\n }\n\n sbRedirect(\n `${SpringConfigs.PAGE_URLS.casino}/${\n SpringConfigs.CASINO_MOUNT_PATH\n }/${relativePath.join('/')}?${qs.stringify(queryObject)}`,\n false,\n true\n );\n saveCurrentLocation();\n\n setTimeout(() => {\n resolve(true);\n }, RESOLVE_AFTER_SIGNIN_DURATION);\n\n return;\n }\n\n if (saveUrl && (window.hasPopup || showInUrl)) {\n const gameRoute = {\n pathname: `${mountPoint(\n window.getPathname(),\n false,\n true\n )}/${relativePath.join('/')}`,\n search: qs.stringify({\n ...queryObj,\n mode,\n tournamentId: tournament?.id,\n ...queriesToRemoveObj,\n ...(showInUrl ? {} : { accounts: undefined, login: undefined })\n })\n };\n\n if (showInUrl) {\n history.pushState(\n {},\n '',\n `${gameRoute.pathname}?${gameRoute.search}`\n );\n }\n\n if (window.hasPopup) {\n LS.setItem(\n storageKeyName('casino', 'SELECTED_GAME_URL'),\n JSON.stringify(gameRoute)\n );\n }\n\n return;\n }\n\n store.dispatch(setSelectedCasinoGame(game));\n\n // new way to add cached game\n store.dispatch(addCachedGameId(game.extearnal_game_id));\n store.dispatch(\n batchActions(\n setCachedGamesInactive(game.extearnal_game_id),\n addCachedGame(game)\n )\n );\n store.dispatch(setCachedGameMode({ id: game.extearnal_game_id, mode }));\n\n if (\n window.location.pathname.includes(\n `/${SpringConfigs.SPORTSBOOK_MOUNT_PATH}/`\n )\n ) {\n browserHistory.push({\n pathname: `${mountPoint(window.getPathname(), false, true).replace(\n `/${SpringConfigs.CASINO_MOUNT_PATH}`,\n ''\n )}`,\n search: qs.stringify({\n gameId: game.extearnal_game_id,\n mode,\n accounts: undefined,\n login: undefined,\n ...(!!queryObj.type && { type: queryObj.type })\n })\n });\n saveCurrentLocation();\n\n setTimeout(() => {\n resolve(true);\n }, RESOLVE_AFTER_SIGNIN_DURATION);\n\n return;\n }\n\n browserHistory.push({\n pathname: `${mountPoint(\n window.getPathname(),\n false,\n true\n )}/${relativePath.join('/')}`,\n search: qs.stringify({\n ...queryObj,\n mode,\n accounts: undefined,\n login: undefined,\n tournamentId: tournament?.id,\n ...queriesToRemoveObj\n })\n });\n saveCurrentLocation();\n\n setTimeout(() => {\n resolve(true);\n }, RESOLVE_AFTER_SIGNIN_DURATION);\n\n return;\n }\n\n if (view === ECasinoGameView.MULTI) {\n const searchParams = Object.fromEntries(\n new URLSearchParams(window.location.search)\n );\n\n // case when multiview is already open, and we want to change one of the games\n if (searchParams.multiview === CASINO_MULTIVIEW_ENABLED_QUERY_VALUE) {\n const gamesInfo =\n UtilsCasino.extractGameInfoFromSearchParams(searchParams);\n\n const gameToChange = gamesInfo[gameIndexToChange || 0];\n\n store.dispatch(\n batchActions(\n setCachedGameInactive(gameToChange.id),\n addCachedGame(game)\n )\n );\n store.dispatch(\n batchActions(\n setCachedGameMode({ id: game.extearnal_game_id, mode }),\n setCachedGameMode({\n id: gameToChange.id,\n mode: ECasinoGameMode.FUN\n })\n )\n );\n\n const queryToUpdate = addQuery({\n [UtilsCasino.encodeGameIdWithPrefix(\n gameToChange.order,\n gameToChange.id\n )]: undefined,\n [UtilsCasino.encodeGameIdWithPrefix(\n gameToChange.order,\n game.extearnal_game_id\n )]: mode\n });\n\n browserHistory.push({\n ...queryToUpdate,\n search: UtilsCasino.normalizeStringifiedQuery(queryToUpdate.search)\n });\n saveCurrentLocation();\n\n setTimeout(() => {\n resolve(true);\n }, RESOLVE_AFTER_SIGNIN_DURATION);\n\n return;\n }\n\n // case when multiview is not open, and we want to open it\n const currentGameInfo = getCasinoParams();\n const categorySection = selectedCategory || CUSTOM_CATEGORIES.all.id;\n\n const queryObj = qs.parse(window.location.search, {\n ignoreQueryPrefix: true\n });\n\n store.dispatch(addCachedGame(game));\n store.dispatch(setCachedGameMode({ id: game.extearnal_game_id, mode }));\n\n let pathname = `${mountPoint(\n window.getPathname(),\n false,\n true\n )}/${categorySection}`;\n\n if (\n window.location.pathname.includes(\n `/${SpringConfigs.SPORTSBOOK_MOUNT_PATH}/`\n )\n ) {\n delete queryObj.gameId;\n\n pathname = pathname.replace(\n `/${SpringConfigs.CASINO_MOUNT_PATH}/${categorySection}`,\n ''\n );\n }\n\n browserHistory.push({\n pathname,\n search: UtilsCasino.normalizeStringifiedQuery(\n qs.stringify(\n {\n ...queryObj,\n multiview: CASINO_MULTIVIEW_ENABLED_QUERY_VALUE,\n [UtilsCasino.encodeGameIdWithPrefix(\n ECasinoGameViewOrder.FIRST,\n currentGameInfo.gameExternalId\n )]: firstGameMode || searchParams.mode,\n [UtilsCasino.encodeGameIdWithPrefix(\n ECasinoGameViewOrder.SECOND,\n game.extearnal_game_id\n )]: mode,\n accounts: undefined,\n login: undefined,\n mode: undefined\n },\n { addQueryPrefix: true }\n )\n )\n });\n saveCurrentLocation();\n\n setTimeout(() => {\n resolve(true);\n }, RESOLVE_AFTER_SIGNIN_DURATION);\n }\n });\n };\n\n /** CHECKS FOR REAL MODE GAME OPENING **/\n\n const currentPageArea = getCurrentPageArea();\n\n if (\n mode === ECasinoGameMode.REAL &&\n !isUserLoggedIn &&\n (!currentPageArea || currentPageArea === 'casino')\n ) {\n window.hasPopup && transitionToGameUrl(true);\n\n const searchParams = Object.fromEntries(\n new URLSearchParams(window.location.search)\n );\n\n const firstGameMode = searchParams.mode;\n\n let query: { [key: string]: string } = { mode };\n\n if (searchParams.multiview === CASINO_MULTIVIEW_ENABLED_QUERY_VALUE) {\n for (const param in searchParams) {\n if (param.indexOf(game.extearnal_game_id) >= 0) {\n query = { [param]: mode };\n }\n }\n }\n\n UtilsAccount.openLoginView({ query });\n\n transitionToGameUrl(true, true, firstGameMode);\n\n const transitionFn = transitionToGameUrl.bind(\n undefined,\n false,\n undefined,\n firstGameMode\n );\n\n const afterSignIn = new AfterSignIn();\n afterSignIn.appendAction(\n AFTER_SIGN_IN_ACTION_TYPES.CONSTRUCT_CASINO_VIEW_URL,\n transitionFn\n );\n\n return;\n }\n\n if (!SpringConfigs.CASINO_MOBILE_IFRAME && isMobile()) {\n redirectToGameUrl();\n } else {\n transitionToGameUrl();\n }\n};\n","import { ECasinoGameViewOrder } from 'interfaces/casino-data';\nimport { checkIsGameAlreadyCached } from './check-is-game-already-cached';\nimport {\n constructAndRedirectToGameView,\n IConstructGameViewUrl\n} from './construct-view-url';\nimport {\n decodeGameIdWithPrefix,\n encodeGameIdWithPrefix\n} from './encode-game-id-with-prefix';\nimport {\n extractGameInfoFromSearchParams,\n IGameInfo\n} from './extract-game-info-from-search-query';\nimport { getRouteLength } from './get-route-length';\nimport { normalizeStringifiedQuery } from './normalize-stringified-query';\nimport { reconstructAndRedirectToGameView } from './reconstruct-and-redirect-to-game-view';\n\ntype TUtilsCasinoProps = {\n checkIsGameAlreadyCached: (gameId: string) => boolean;\n constructAndRedirectToGameView: (props: IConstructGameViewUrl) => void;\n reconstructAndRedirectToGameView: (\n callbackAfterSignin?: () => void,\n routeToSaveInStorage?: string\n ) => void;\n extractGameInfoFromSearchParams: (\n searchParams: Record\n ) => IGameInfo[];\n encodeGameIdWithPrefix: (order: ECasinoGameViewOrder, id: string) => string;\n decodeGameIdWithPrefix: (id: string) => {\n order: number;\n gameId: string | number;\n };\n normalizeStringifiedQuery: (stringifiedQuery: string) => string;\n getRouteLength: () => number | undefined;\n};\n\nexport const UtilsCasino: TUtilsCasinoProps = {\n checkIsGameAlreadyCached,\n constructAndRedirectToGameView,\n reconstructAndRedirectToGameView,\n extractGameInfoFromSearchParams,\n encodeGameIdWithPrefix,\n decodeGameIdWithPrefix,\n normalizeStringifiedQuery,\n getRouteLength\n};\n","import { NewCasinoGame } from 'interfaces/new-casino';\nimport store from 'store';\n\ntype TGameId = NewCasinoGame['id'];\n\nexport const checkIsGameAlreadyCached = (gameId: TGameId) => {\n const storeState = store.getState();\n const cachedGames = storeState.newCasinoStore.cachedGames;\n\n return !!cachedGames[gameId]?.data;\n};\n","import { UtilsAccount } from 'utils/account';\nimport { AFTER_SIGN_IN_ACTION_TYPES, AfterSignIn } from 'services/afterSignIn';\nimport { saveCurrentLocation } from 'components/QueryRoute';\n\nexport const reconstructAndRedirectToGameView = (\n callbackAfterSignin?: () => void,\n routeToSaveInStorage?: string,\n saveRouteKey?: 'casinoSingleGame' | 'login'\n) => {\n UtilsAccount.openLoginView({\n routeToSaveInStorage\n });\n\n if (saveRouteKey) {\n saveCurrentLocation(saveRouteKey, routeToSaveInStorage);\n } else {\n saveCurrentLocation();\n }\n\n const afterSignIn = new AfterSignIn();\n afterSignIn.appendAction(\n AFTER_SIGN_IN_ACTION_TYPES.RECONSTRUCT_CASINO_VIEW_URL,\n () => {\n return new Promise(resolve => {\n callbackAfterSignin?.();\n resolve(true);\n });\n }\n );\n};\n","import { ECasinoGameMode, ECasinoGameViewOrder } from 'interfaces/casino-data';\nimport { UtilsCasino } from './index';\n\nexport interface IGameInfo {\n id: string;\n mode: ECasinoGameMode;\n order: ECasinoGameViewOrder;\n}\n\nexport const extractGameInfoFromSearchParams = (\n searchParams: Record\n) => {\n const paramsTuples = Object.entries(searchParams);\n\n return paramsTuples.reduce((acc, [key, value]) => {\n if (\n value &&\n [ECasinoGameMode.REAL, ECasinoGameMode.FUN].includes(\n value as ECasinoGameMode\n )\n ) {\n const { order, gameId } = UtilsCasino.decodeGameIdWithPrefix(key);\n\n if (!Number.isNaN(order) && !Number.isNaN(gameId)) {\n acc.push({\n id: `${gameId}`,\n mode: value as ECasinoGameMode,\n order: order\n });\n }\n }\n\n return acc;\n }, [] as IGameInfo[]);\n};\n","import { ECasinoGameViewOrder } from 'interfaces/casino-data';\n\nexport const encodeGameIdWithPrefix = (\n order: ECasinoGameViewOrder,\n id: string\n) => {\n return `${order}-${id}`;\n};\n\nexport const decodeGameIdWithPrefix = (id: string) => {\n const [order, gameId] = id.split('-');\n\n return {\n order: parseInt(order),\n gameId\n };\n};\n","import { ECasinoGameMode, ECasinoGameViewOrder } from 'interfaces/casino-data';\n\nexport const normalizeStringifiedQuery = (stringifiedQuery: string) => {\n const splittedQuery = stringifiedQuery.slice(1).split('&');\n const firstGameIndex = splittedQuery.findIndex(\n query =>\n query.startsWith(`${ECasinoGameViewOrder.FIRST}-`) &&\n (query.endsWith(`${ECasinoGameMode.FUN}`) ||\n query.endsWith(`${ECasinoGameMode.REAL}`))\n );\n\n const secondGameIndex = splittedQuery.findIndex(\n query =>\n query.startsWith(`${ECasinoGameViewOrder.SECOND}-`) &&\n (query.endsWith(`${ECasinoGameMode.FUN}`) ||\n query.endsWith(`${ECasinoGameMode.REAL}`))\n );\n\n if (firstGameIndex < 0 && secondGameIndex < 0) {\n return stringifiedQuery;\n }\n\n if (firstGameIndex > secondGameIndex) {\n const temp = splittedQuery[firstGameIndex];\n splittedQuery[firstGameIndex] = splittedQuery[secondGameIndex];\n splittedQuery[secondGameIndex] = temp;\n }\n\n return `?${splittedQuery.join('&')}`;\n};\n","import SpringConfigs from 'utils/constants/swarm/spring-configs';\n\nexport const getRouteLength = () => {\n return window\n .getPathname()\n .split(`/${SpringConfigs.CASINO_MOUNT_PATH}/`)?.[1]\n ?.split('/').length;\n};\n","import { FC, memo } from 'react';\nimport type {\n IBetslipCalculationField,\n TBetslipCalculationPortalPlacement\n} from 'newelements/_Betslip/hooks/generateFieldsMapping/types';\nimport { Skeleton } from 'newcomponents/UI/Skeleton';\nimport './index.less';\n\nexport const BetslipCalculationResult: FC<\n IBetslipCalculationField | TBetslipCalculationPortalPlacement\n> = memo(props => {\n return 'label' in props ? (\n \n ) : (\n \n );\n});\n\nconst BetslipCalculationResultValue: FC = memo(\n ({ label, value, attributes, loading }) => {\n return (\n \n
{label}
\n \n {loading ? (\n \n ) : (\n value\n )}\n \n \n );\n }\n);\n\nconst BetslipCalculationResultPortal: FC =\n memo(({ attributes, children }) => {\n return
{children || null}
;\n });\n","import i18n from 'i18next';\nimport { IBetslipCalculationField } from 'newelements/_Betslip/hooks/generateFieldsMapping/types';\nimport { generateSimpleId } from 'newelements/_Betslip/hooks/generateFieldsMapping/utils';\n\nexport class BetslipCalculationField implements IBetslipCalculationField {\n id: IBetslipCalculationField['id'];\n\n label: IBetslipCalculationField['label'];\n value: IBetslipCalculationField['value'];\n loading?: IBetslipCalculationField['loading'];\n attributes: IBetslipCalculationField['attributes'];\n\n constructor(\n label: IBetslipCalculationField['label'],\n value: IBetslipCalculationField['value'],\n loading?: IBetslipCalculationField['loading']\n );\n constructor(\n label: IBetslipCalculationField['label'],\n value: IBetslipCalculationField['value'],\n attributes?: IBetslipCalculationField['attributes']\n );\n constructor(\n label: IBetslipCalculationField['label'],\n value: IBetslipCalculationField['value'],\n attributes: IBetslipCalculationField['attributes'],\n loading?: IBetslipCalculationField['loading']\n );\n constructor(\n label: IBetslipCalculationField['label'],\n value: IBetslipCalculationField['value'],\n attributesOrLoading:\n | IBetslipCalculationField['attributes']\n | IBetslipCalculationField['loading'],\n _loading?: IBetslipCalculationField['loading']\n ) {\n this.label = i18n.t(label);\n this.value = value;\n this.id = generateSimpleId();\n const loading =\n typeof attributesOrLoading === 'boolean'\n ? attributesOrLoading\n : null ?? _loading;\n\n const attributes =\n typeof attributesOrLoading === 'boolean' ? {} : attributesOrLoading;\n\n this.attributes = attributes;\n this.loading = loading;\n }\n}\n","import { useCallback } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useCurrency } from 'hooks/useCurrency';\nimport { getIsLoggedIn } from 'store/selectors/user-data';\n\ntype TFormatAmount = (\n amount: Parameters['formatAmount']>[0]\n) => ReturnType['formatAmount']>;\n\ntype TUseFormatAmount = () => TFormatAmount;\n\nexport const useFormatAmount: TUseFormatAmount = () => {\n const isLoggedIn = useSelector(getIsLoggedIn);\n const { formatAmount: _formatAmount } = useCurrency();\n\n return useCallback(\n amount => _formatAmount(amount, isLoggedIn),\n [isLoggedIn, _formatAmount]\n );\n};\n","import SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { formatPrice } from 'utils/string-manipulation/format-price';\nimport { TFooterField } from 'newelements/_Betslip/hooks/generateFieldsMapping/types';\nimport { FREE_BET_AMOUNT_SELECTOR_PORTAL_ID } from 'newelements/_Betslip/utils/constants/shared';\nimport store from 'store';\n\nexport const getTestIdAttribute = (v: string): TFooterField['attributes'] => ({\n 'data-testid': v.toLowerCase().replace(' ', '-')\n});\n\nexport const generateSimpleId = (() => {\n let prevId = 0;\n\n return () => ++prevId;\n})();\n\nexport const getCustomFieldPortalId = (\n prefix: string | number,\n postfix: string\n) => `${prefix}-${postfix}`;\n\nexport const getFreeBetPortalId = (\n eventId: string | number,\n betslipId: string\n) =>\n getCustomFieldPortalId(\n eventId,\n `${FREE_BET_AMOUNT_SELECTOR_PORTAL_ID}-${betslipId}`\n );\n\nexport const addSeparatorAndCut = (amount: number | string) => {\n return formatPrice(\n amount,\n SpringConfigs.PRICE_SEPARATOR,\n SpringConfigs.HIDE_TRAILING_ZEROES,\n store.getState().appData.rounding\n );\n};\n","import {\n Dispatch,\n SetStateAction,\n useCallback,\n useEffect,\n useId,\n useState\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport {\n addBetSlipMultipleEvents,\n betslipIsEmpty,\n createBetslipEventsFromSwarm,\n setBookBetIdInLs\n} from 'utils/betslip/betslip';\nimport { SYSTEM_BET_MIN_EVENTS_COUNT } from 'utils/constants/app/magic-numbers-app';\nimport {\n BET_BUILDER,\n BET_TYPES,\n BETSLIP_BET_TYPES_BY_BET_NUMBER_TYPE\n} from 'utils/constants/betslip/bet-types';\nimport { showToastError } from 'utils/generic/show-toast-error';\nimport {\n BetSlipEventObj,\n BookBetParamsType,\n BookingIdObject,\n BookingIds\n} from 'interfaces/bet-data';\nimport {\n EBetslipBetType,\n IEventsAndGameIds,\n ResponseBookingSelections,\n SelectionsFromBetslip\n} from 'interfaces/betslip';\nimport { ResponseGeneric } from 'interfaces/generic';\nimport { SwarmDataBetslipEvents } from 'interfaces/sportsbook-data-levels';\nimport {\n bookBet,\n getEventsByBookingId,\n getEventsReadyForBetslip\n} from 'services/bet-slip';\nimport { dispatchBetslipBetType } from 'newelements/_Betslip/utils/action-middlewares/store-actions-middlewares';\nimport { addQuery } from 'components/QueryRoute';\nimport { useBetslipNotEmptyPopup } from 'hooks/betslip/useBetlsipNotEmptyPopup';\nimport { setAfterSignInActions } from 'store/actions';\nimport {\n setIsBookingMode,\n setMustOpen,\n setSystemMinCombinationsCount\n} from 'store/actions/betslip';\nimport { getAfterSignInActions } from 'store/selectors/app-data';\nimport {\n getAllLsBets,\n getAllStakes,\n getSelectedSystem\n} from 'store/selectors/betslip';\nimport { getBetslip } from 'store/selectors/spec-elems';\nimport { getIsLoggedIn } from 'store/selectors/user-data';\nimport { calculateAndDispatchUpdates } from '../utils/action-middlewares/store-actions-middlewares/calculateAndDispatchUpdates';\nimport { GENERAL_FIELD_KEY } from '../utils/constants/shared';\n\ntype Props = {\n setBookingModalVisible: (\n value: ((prevState: boolean) => boolean) | boolean\n ) => void;\n setBookIds: Dispatch>;\n currentType: EBetslipBetType | string;\n totalStake: number;\n setSystemMinCount: (\n value: ((prevState: number | null) => number | null) | number | null\n ) => void;\n betslipRef: { current: HTMLElement | null | undefined };\n betslipUid?: string;\n};\n\ntype BookBetReturn = {\n bookId: string;\n setBookId: (value: ((prevState: string) => string) | string) => void;\n bookingProgress: boolean;\n getByBookIdProgress: boolean;\n onBookBet: () => void;\n onSubmitBookId: () => void;\n getEvents: () => void;\n};\n\nlet afterSignInFetcherId = '';\n\nexport const useBookBet = ({\n setBookingModalVisible,\n setBookIds,\n currentType,\n totalStake,\n betslipRef,\n betslipUid\n}: Props): BookBetReturn => {\n const hookId = useId();\n\n const dispatch = useDispatch();\n const stakes = useSelector(getAllStakes);\n const afterSignInActions = useSelector(getAfterSignInActions);\n const { showPopup: showBetslipNotEmptyPopup } = useBetslipNotEmptyPopup();\n const isLoggedIn = useSelector(getIsLoggedIn);\n const allLsBets = useSelector(getAllLsBets);\n // const system = useSelector(getSystem);\n const system = useSelector(getSelectedSystem);\n const betslipPresent = useSelector(getBetslip);\n const { t } = useTranslation();\n const history = useHistory();\n const [bookId, setBookId] = useState('');\n const [bookingProgress, setBookingProgress] = useState(false);\n const [getByBookIdProgress, setGetByBookIdProgress] =\n useState(false);\n\n const onBookBetCallback = (bookIds: BookingIds) => {\n setBookIds(bookIds);\n setBookingProgress(false);\n setBookingModalVisible(true);\n };\n\n const onBookBetCallbackError = () => {\n setBookIds([]);\n setBookingProgress(false);\n setBookingModalVisible(false);\n };\n\n const onBookBet = useCallback(() => {\n const getBets = (betType: number) => {\n if (betType === BET_TYPES.SINGLE) {\n return allLsBets.map(({ eventId, coeficient }) => ({\n Amount: Number(stakes.single[eventId]) || 0,\n BetType: betType,\n Selections: [\n {\n SelectionId: eventId,\n Price: Number(coeficient)\n }\n ]\n }));\n } else if (betType === BET_BUILDER.TYPE) {\n return [\n {\n BetSlipUid: betslipUid,\n Amount: Number(totalStake) || 0,\n BetType: BET_BUILDER.TYPE\n }\n ];\n } else {\n return allLsBets.reduce(\n (result: BookBetParamsType, { eventId, coeficient }) => {\n if (!result.length) {\n result.push({\n Amount: Number(stakes.general || 0),\n BetType: betType,\n Selections: [],\n ...(betType !== BET_TYPES.SYSTEM\n ? {}\n : { SystemMinCount: system?.value })\n });\n }\n\n result[0].Selections &&\n result[0].Selections.push({\n SelectionId: eventId,\n Price: Number(coeficient)\n });\n\n return result;\n },\n []\n );\n }\n };\n\n const promises: Promise[] = [];\n\n setBookingProgress(true);\n\n switch (currentType) {\n case EBetslipBetType.SINGLE:\n getBets(BET_TYPES.SINGLE).forEach(bet => {\n promises.push(\n new Promise((resolve: (value: BookingIdObject) => void) => {\n bookBet(\n [bet],\n (data: ResponseGeneric) => {\n resolve({\n booking_id: data.details.Id,\n selection_id:\n bet.Selections && bet.Selections[0].SelectionId\n });\n },\n onBookBetCallbackError\n );\n })\n );\n });\n Promise.all(promises).then(bookIds => {\n onBookBetCallback(bookIds);\n });\n break;\n case EBetslipBetType.CHAIN:\n case EBetslipBetType.MULTIPLE:\n {\n const betTypeKey =\n currentType === EBetslipBetType.CHAIN\n ? 'CHAIN'\n : ('MULTIPLE' as keyof typeof BET_TYPES);\n\n bookBet(\n getBets(BET_TYPES[betTypeKey]),\n (data: ResponseGeneric) => {\n onBookBetCallback([{ booking_id: data.details.Id }]);\n },\n onBookBetCallbackError\n );\n }\n\n break;\n\n case EBetslipBetType.SYSTEM:\n bookBet(\n getBets(BET_TYPES.SYSTEM),\n (data: ResponseGeneric) => {\n onBookBetCallback([{ booking_id: data.details.Id }]);\n },\n onBookBetCallbackError\n );\n break;\n case BET_BUILDER.NAME:\n bookBet(\n getBets(BET_BUILDER.TYPE),\n (data: ResponseGeneric) => {\n onBookBetCallback([{ booking_id: data.details.Id }]);\n },\n onBookBetCallbackError\n );\n break;\n default:\n break;\n }\n }, [allLsBets, currentType, stakes, totalStake, system, betslipUid]);\n\n useEffect(() => {\n if (!afterSignInFetcherId) {\n afterSignInFetcherId = hookId;\n }\n\n if (\n afterSignInActions.bookBetId &&\n isLoggedIn &&\n !window.mustRefreshForSessionVisibility &&\n afterSignInFetcherId === hookId\n ) {\n betslipPresent && dispatch(setMustOpen(true));\n getEvents(afterSignInActions.bookBetId);\n const afterSignInActionsCopy = Object.assign({}, afterSignInActions);\n delete afterSignInActionsCopy.bookBetId;\n dispatch(setAfterSignInActions(afterSignInActionsCopy));\n }\n }, [isLoggedIn, afterSignInActions.bookBetId]);\n\n const onSubmitBookId = useCallback(() => {\n if (!isLoggedIn) {\n history.push(addQuery({ accounts: '*', login: '*' }));\n\n dispatch(\n setAfterSignInActions({\n ...afterSignInActions,\n bookBetId: bookId\n })\n );\n } else {\n getEvents();\n }\n }, [bookId, isLoggedIn, afterSignInActions]);\n\n const getEvents = (id: string | null = null) => {\n setGetByBookIdProgress(true);\n getEventsByBookingId(\n id || bookId,\n (data: ResponseBookingSelections) => {\n setGetByBookIdProgress(false);\n\n if (\n typeof data.details === 'string' ||\n !Object.keys(data.details).length\n ) {\n showToastError(t('betslip.wrongBookId'), betslipRef.current);\n\n return;\n }\n\n const eventsAndGames: IEventsAndGameIds[] =\n data.details.bets[0].selections?.map(\n ({ match_id, selection_id }) => ({\n gameId: match_id,\n eventId: selection_id\n })\n );\n\n getEventsReadyForBetslip(\n eventsAndGames,\n (betslipEventsData: { data: SwarmDataBetslipEvents }) => {\n if (!Object.keys(betslipEventsData.data.sport).length) {\n showToastError(t('betslip.bookIdExpired'), betslipRef.current);\n\n return;\n }\n\n if (betslipIsEmpty()) {\n afterSubmitBookId(\n data,\n betslipEventsData.data,\n eventsAndGames.length\n );\n } else {\n showBetslipNotEmptyPopup(() => {\n afterSubmitBookId(\n data,\n betslipEventsData.data,\n eventsAndGames.length\n );\n });\n }\n }\n );\n },\n (errorData: any) => {\n showToastError(errorData.data || errorData.msg, betslipRef.current);\n setGetByBookIdProgress(false);\n }\n );\n };\n\n const afterSubmitBookId = (\n bookingData: ResponseBookingSelections,\n betslipEventsData: SwarmDataBetslipEvents,\n originalEventsLength: number\n ) => {\n const betslipReadyEvents = createBetslipEventsFromSwarm(betslipEventsData);\n\n if (\n bookingData.details.match_ids &&\n bookingData.details.bets[0].bet_type === EBetslipBetType.CHAIN\n ) {\n const betslipEventsToSort = betslipReadyEvents.splice(\n 0,\n betslipReadyEvents.length\n );\n\n bookingData.details.match_ids.forEach(matchId => {\n const event = betslipEventsToSort.find(\n ({ gameId }) => gameId === matchId\n ) as BetSlipEventObj;\n\n event && betslipReadyEvents.push(event);\n });\n }\n\n const {\n bets: [{ system_min_count: selectedSystem }],\n bets: [{ amount }],\n bets: [{ bet_type }]\n } = bookingData.details as SelectionsFromBetslip;\n\n addBetSlipMultipleEvents(betslipReadyEvents, true);\n\n if (\n betslipReadyEvents.length === bookingData.details.match_ids.length &&\n selectedSystem\n ) {\n // @Todo maybe need to rename\n dispatch(setSystemMinCombinationsCount(selectedSystem));\n }\n\n if (\n !(\n (bet_type === EBetslipBetType.SYSTEM &&\n betslipReadyEvents.length < SYSTEM_BET_MIN_EVENTS_COUNT) ||\n ([EBetslipBetType.MULTIPLE, EBetslipBetType.CHAIN].includes(bet_type) &&\n betslipReadyEvents.length < 2)\n )\n ) {\n dispatchBetslipBetType(\n BETSLIP_BET_TYPES_BY_BET_NUMBER_TYPE[bet_type as unknown as number]\n );\n }\n\n if (amount) {\n calculateAndDispatchUpdates({\n id: GENERAL_FIELD_KEY,\n stake: `${amount}`\n });\n\n if (betslipReadyEvents.length === 1) {\n calculateAndDispatchUpdates({\n id: betslipReadyEvents[0].eventId,\n stake: `${amount}`\n });\n }\n }\n\n dispatch(setIsBookingMode(false));\n\n if (originalEventsLength === betslipReadyEvents.length) {\n setBookBetIdInLs(bookId);\n }\n\n const queryParams = new URLSearchParams(window.location.search);\n\n if (queryParams.has('booking_id')) {\n queryParams.delete('booking_id');\n history.replace({\n search: queryParams.toString()\n });\n }\n };\n\n return {\n bookId,\n setBookId,\n bookingProgress,\n getByBookIdProgress,\n onBookBet,\n onSubmitBookId,\n getEvents\n };\n};\n","import { useMemo } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport { EAccount } from 'utils/constants/store/query-keys';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { getAccountJsonQuery } from 'services/account-settings';\n\nexport const useFetchAccountParams = () => {\n const accountJsonQuery = getAccountJsonQuery;\n const { data, error, isLoading } = useQuery({\n queryKey: [EAccount['AccountParams']],\n queryFn: () => accountJsonQuery(SpringConfigs.ACCOUNT_PARAMS),\n retry: false\n });\n\n const accountParams = useMemo(() => {\n if (error || !data) {\n return null;\n }\n\n if (SpringConfigs.CYPRUS_ACCOUNT_TYPE) {\n return {\n ...data,\n 'months-7': '1',\n 'months-8': '1',\n 'months-9': '1',\n 'months-10': '1',\n 'months-11': '1',\n 'months-timeout-hours-72': '1'\n };\n }\n\n return data;\n }, [data, error]);\n\n return {\n accountParams,\n error,\n isLoading\n };\n};\n","import { useCallback } from 'react';\nimport { CUSTOM_CATEGORIES } from 'utils/constants/casino/custom-categories';\nimport { mountPoint } from 'utils/generic/route-manipulation';\nimport { ECasinoGameMode, ECasinoGameView } from 'interfaces/casino-data';\nimport { NewCasinoGame } from 'interfaces/new-casino';\nimport { UtilsCasino } from 'newelements/Casino/GameSingleViewRenderer/__partials/GameViewContainer/utils';\nimport { useSearchParams } from 'hooks/useSearchParams';\nimport { useSbRouteMatch } from 'newhooks/generic/useSbRouteMatch';\nimport { useCasinoOpenGameConfigsValues } from 'providers/casino/openGameConfigsProvider';\n\nexport const useOpenCasinoGame = () => {\n const { tournamentId } = useSearchParams();\n const externalContext = useCasinoOpenGameConfigsValues();\n const routeMatchCategory = useSbRouteMatch(\n `${mountPoint(location.pathname, false, true)}/:category`\n );\n\n return useCallback(\n (mode: ECasinoGameMode, game: NewCasinoGame) => {\n if (externalContext.onOpenGame) {\n externalContext.onOpenGame(game, mode);\n\n return;\n }\n\n const category =\n routeMatchCategory?.params?.category || CUSTOM_CATEGORIES.all.id;\n\n const tournament = tournamentId ? { id: tournamentId } : undefined;\n\n UtilsCasino.constructAndRedirectToGameView({\n game,\n mode,\n selectedCategory: category,\n view: ECasinoGameView.SINGLE,\n tournament\n });\n },\n [tournamentId, routeMatchCategory, tournamentId]\n );\n};\n","import { createContext, ReactElement, ReactNode, useContext } from 'react';\nimport { ECasinoGameMode } from 'interfaces/casino-data';\nimport { NewCasinoGame } from 'interfaces/new-casino';\n\nexport interface ICasinoOpenGameConfigsProps {\n onOpenGame?: (game: NewCasinoGame, mode: ECasinoGameMode) => void;\n}\n\nexport interface ICasinoOpenGameConfigsProviderProps {\n children: ReactNode;\n value: ICasinoOpenGameConfigsProps;\n}\n\nconst CasinoOpenGameConfigsContext = createContext<\n ICasinoOpenGameConfigsProviderProps['value']\n>({});\n\nexport const CasinoOpenGameConfigsProvider = (\n props: ICasinoOpenGameConfigsProviderProps\n): ReactElement => {\n return (\n \n {props.children}\n \n );\n};\n\nexport const useCasinoOpenGameConfigsValues =\n (): ICasinoOpenGameConfigsProviderProps['value'] => {\n return useContext(CasinoOpenGameConfigsContext);\n };\n","export enum AFTER_SIGN_IN_ACTION_TYPES {\n TOGGLE_BET_BUILDER_MODAL = 'toggleBetBuilderModal',\n BOOKING_BET_GET_EVENT_ID = 'bookingBetGetEventId',\n NAVIGATE_TO_MY_CASINO = 'navigateToMyCasino',\n SUBSCRIBE_FOR_NOTIFICATION = 'subscribeForNotifications',\n OPT_IN_ACTION = 'optInAction',\n OPEN_CASINO_GAME = 'openCasinoGame',\n CONSTRUCT_CASINO_VIEW_URL = 'constructCasinoViewUrl',\n RECONSTRUCT_CASINO_VIEW_URL = 'reconstructCasinoViewUrl',\n RACING_BET_MODAL = 'racingBetModal',\n OPEN_FAVORITE_TEAM_POPUP = 'openFavoriteTeamPopup',\n OPEN_SINGLE_GAME_FROM_MINIMIZED_STREAMING = 'openSingleGameFromMinimizedStreaming'\n}\n\nexport type TAfterSignInActions = {\n openBetBuilderAction?: string;\n bookBetId?: string;\n};\n\nexport class AfterSignIn {\n static _instance: AfterSignIn;\n static actions: Record Promise> = {};\n static afterExecutionCallback: () => void;\n static finalExecutionCallback: () => void;\n\n constructor() {\n if (AfterSignIn._instance) {\n return AfterSignIn._instance;\n }\n\n AfterSignIn._instance = this;\n }\n\n setAfterExecutionCallback = (callback: () => void) => {\n AfterSignIn.afterExecutionCallback = callback;\n };\n\n setFinalExecutionCallback = (callback: () => void) => {\n AfterSignIn.finalExecutionCallback = callback;\n };\n\n appendAction = (key: string, promise: () => Promise) => {\n AfterSignIn.actions[key] = promise;\n };\n\n isActionsExist = () => {\n return !!Object.values(AfterSignIn.actions).length;\n };\n\n removeActions = () => {\n AfterSignIn.actions = {};\n };\n\n executeActions = () => {\n const successAction = () => {\n return new Promise(resolve => {\n resolve(true);\n });\n };\n\n Promise.all(\n [...Object.values(AfterSignIn.actions), successAction].map(func => func())\n ).then(() => {\n AfterSignIn.actions = {};\n\n AfterSignIn.afterExecutionCallback &&\n AfterSignIn.afterExecutionCallback();\n\n AfterSignIn.finalExecutionCallback &&\n AfterSignIn.finalExecutionCallback();\n });\n };\n}\n","import i18n from 'i18next';\nimport qs from 'qs';\nimport { convert } from 'utils/betslip/odd-formats-helper';\nimport {\n MODE_TYPES,\n REPLACE_EDIT_BET_TRANSLATIONS\n} from 'utils/constants/betslip/bet-types';\nimport { ERROR_CODE_TIMEOUT_1800 } from 'utils/constants/dateInfo/time-numbers';\nimport { EAccount } from 'utils/constants/store/query-keys';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport {\n CommandNames,\n CommandSource\n} from 'utils/constants/swarm/swarm-command-names';\nimport { SwarmSuccessMessages } from 'utils/constants/swarm/swarm-success-messages';\nimport { fireEvent } from 'utils/generic/event-bus';\nimport { showToastError } from 'utils/generic/show-toast-error';\nimport { appendCustomCode } from 'utils/other/customCode';\nimport RidGenerator from 'utils/swarm/rid-generator';\nimport { showToastSuccess } from 'utils/swarm/swarm-success-handler';\nimport { GetCurrencyConfigsResponse } from 'interfaces/account-settings';\nimport {\n BookBetParamsType,\n DoBetResponseType,\n TCreateBets,\n TV3FreebetParams,\n TV3FreebetResponse\n} from 'interfaces/bet-data';\nimport { doBetProps, IEventsAndGameIds } from 'interfaces/betslip';\nimport { AccountParamsType, AppendCustomCodes } from 'interfaces/generic';\nimport {\n CommandObj,\n WebsocketEnhanced\n} from 'interfaces/spring-websocket-interfaces';\nimport { EPlayerActivityCheckerActions } from 'newcomponents/Shared/account/PlayerActivityChecker/types';\nimport { connectingWS } from 'hooks/useSpringConnect';\nimport Store from 'store';\nimport {\n batchActions,\n removeFreeBetItem,\n setFreeBetSelectedEventId,\n setSelectedProfitBoostEventId\n} from 'store/actions';\nimport { IBetslipRootStateInitialData } from 'store/reducers/betslip';\nimport { queryClient } from 'stores/query/query-client';\nimport { deviceActionManager } from '../deviceactionmanager/DeviceActionManager';\n\n// this is required for showing messages outside the betslip if it is closed\nconst getMessageContextBasedOnBetslipOpenState = (\n messageContext: HTMLElement | null | undefined\n): HTMLElement | null | undefined => {\n const isBetslipOpen = Store.getState().betSlip?.betslipOpen;\n const isFloatingBetslipEnabled = SpringConfigs.IS_BETSLIP_FLOATING_ENABLED;\n\n if (\n !isFloatingBetslipEnabled ||\n (isFloatingBetslipEnabled && isBetslipOpen)\n ) {\n return messageContext;\n }\n\n return null;\n};\n\n/* eslint-disable */\nexport const betCommand = async (\n commandObj: any, // command object must be of type any for generic purpose\n rid: string,\n callback: Function,\n updateCallback: Function | null,\n callbackError: Function | null\n): Promise => {\n /* eslint-enable */\n connectingWS.then((socket: WebsocketEnhanced) => {\n socket.sendCommand(\n commandObj,\n rid,\n callback,\n updateCallback,\n callbackError\n );\n });\n};\n\nconst oddChangeHandlerCallbackWrapper = (\n response: DoBetResponseType,\n callback: Function | null,\n oddFormat: number,\n setAcceptBet?: Function,\n messageContext?: HTMLElement | null\n): void => {\n callback?.(response);\n const { result, result_text, details, StatusCode, Data } = response;\n\n const isStatusCode = StatusCode === REPLACE_EDIT_BET_TRANSLATIONS[0];\n\n if (result === ERROR_CODE_TIMEOUT_1800 || isStatusCode) {\n const changedOdd = isStatusCode\n ? Data?.ErrorData\n ? {\n old_price: Data?.ErrorData?.OldPrice,\n new_price: Data?.ErrorData?.ActualPrice\n }\n : null\n : Array.isArray(details)\n ? {\n old_price: details[0].old_price,\n new_price: details[0].new_price\n }\n : null;\n\n if (setAcceptBet) {\n setAcceptBet(true);\n }\n\n if (!changedOdd) {\n return;\n }\n\n const oddsChangedText = i18n\n .t('swarm.OddsIsChanged')\n .replace('{oldPrice}', convert(changedOdd.old_price, oddFormat))\n .replace('{newPrice}', convert(changedOdd.new_price, oddFormat));\n\n showToastError(\n oddsChangedText,\n getMessageContextBasedOnBetslipOpenState(messageContext),\n result_text\n );\n }\n};\n\n// DON'T use this function directly in project, instead use useDoBetHandler : doBetHandler function\nexport const doBet = (\n data: doBetProps,\n callback: Function,\n callbackError: Function | null,\n setAcceptBet?: Function,\n messageContext?: HTMLElement | null\n): void => {\n const editBet = Store.getState().betSlip?.editBet;\n\n // @Todo add type for betslip do bet response\n const _callback = (res: any) => {\n callback(res);\n\n if (SpringConfigs.WRAPPER_APP && window.median) {\n deviceActionManager.vibrate('impactMedium');\n }\n };\n\n if (editBet?.active) {\n sendCreateBet(data, _callback, callbackError, setAcceptBet, messageContext);\n } else {\n sendDoBet(data, _callback, callbackError, setAcceptBet, messageContext);\n }\n};\n\n/*eslint no-magic-numbers:*/\n// TODO check after betslip refactor\nconst sendDoBet = (\n data: doBetProps,\n callback: Function,\n callbackError: Function | null,\n setAcceptBet?: Function,\n messageContext?: HTMLElement | null\n): void => {\n const oddFormat = Store.getState().betSlip.oddFormat;\n const editBet = Store.getState().betSlip.editBet;\n const isBonusMoney = Store.getState().betSlip.useBonusBalance;\n const user = Store.getState().userData.user;\n const isFrenchFreeBetEnabled =\n Store.getState().betSlip.isFrenchFreeBetEnabled;\n\n const {\n bets,\n type,\n mode,\n sys_bet,\n bonus_id,\n predefined_multiple_id,\n source,\n each_way,\n booking_id,\n location_token\n } = data;\n\n const amount = editBet?.active ? editBet.amount : data.amount;\n\n const additional_amount = data.amount;\n const old_bet_id = editBet?.betId || null;\n\n const command = {\n command: CommandNames.DO_BET,\n params: {\n source,\n each_way,\n bonus_id,\n amount,\n bets,\n mode: mode || MODE_TYPES.ODD_NOT_CHANGE,\n odd_type: oddFormat,\n type,\n booking_id,\n is_bonus_money: !!isBonusMoney,\n ...(isFrenchFreeBetEnabled ? { is_free_bet_money: true } : {}),\n ...(location_token ? { location_token } : {})\n } as Record,\n rid: RidGenerator.gForCommand()\n };\n\n if (sys_bet) {\n command.params.sys_bet = sys_bet;\n }\n\n if (predefined_multiple_id) {\n command.params.predefined_multiple_id = predefined_multiple_id;\n }\n\n if (editBet?.active) {\n command.params.additional_amount = additional_amount;\n command.params.old_bet_id = old_bet_id;\n }\n\n betCommand(\n command,\n '',\n (data: {\n result: string;\n details: {\n bet_id: number;\n k: number;\n is_superbet: boolean;\n };\n }) => {\n callback(data);\n fireEvent({ key: EPlayerActivityCheckerActions.checkPlayerActivity });\n\n const betslipStore: IBetslipRootStateInitialData =\n Store.getState().betSlip;\n\n const freeBetStore = betslipStore.freeBets;\n\n Store.dispatch(\n batchActions(\n setSelectedProfitBoostEventId(null),\n setFreeBetSelectedEventId(null)\n )\n );\n\n if (freeBetStore.selectedFreeBetId) {\n Store.dispatch(\n batchActions(removeFreeBetItem(freeBetStore.selectedFreeBetId))\n );\n }\n\n if (data && data.result === 'OK') {\n if (data.details?.is_superbet) {\n showToastSuccess(\n i18n.t('betslip.superBetSuccess'),\n getMessageContextBasedOnBetslipOpenState(messageContext)\n );\n } else {\n showToastSuccess(\n i18n.t(`betslip.${SwarmSuccessMessages.DO_BET}`),\n getMessageContextBasedOnBetslipOpenState(messageContext)\n );\n }\n }\n\n const accountParams: AccountParamsType = queryClient.getQueryData([\n EAccount['AccountParams']\n ]);\n\n if (\n accountParams &&\n +accountParams[AppendCustomCodes.APPEND_CUSTOM_CODE_BETSLIP]\n ) {\n appendCustomCode(accountParams[AppendCustomCodes.CUSTOM_CODE_BETSLIP], {\n amount,\n currency: user?.currency,\n bet_id: data?.details?.bet_id,\n k: data?.details?.k,\n is_superbet: mode === -1,\n bet_type: type,\n name: user?.name,\n first_name: user?.first_name,\n last_name: user?.last_name,\n email: user?.email,\n username: user?.username,\n btag: user?.btag,\n userId: user?.id,\n phone: user?.phone\n });\n }\n },\n () => undefined,\n ({ data }: { data: DoBetResponseType }) => {\n oddChangeHandlerCallbackWrapper(\n data,\n callbackError,\n oddFormat,\n setAcceptBet,\n messageContext\n );\n }\n );\n};\n\nconst sendCreateBet = (\n data: doBetProps,\n callback: Function,\n callbackError: Function | null,\n setAcceptBet?: Function,\n messageContext?: HTMLElement | null\n): void => {\n const oddFormat = Store.getState().betSlip.oddFormat;\n const editBet = Store.getState().betSlip.editBet;\n const user = Store.getState().userData.user;\n const isFrenchFreeBetEnabled =\n Store.getState().betSlip.isFrenchFreeBetEnabled;\n\n const { bets, type, mode, source, each_way, location_token } = data;\n\n const amount = editBet?.active ? editBet.amount : data.amount;\n\n const additional_amount = data.amount;\n const old_bet_id = editBet?.betId || null;\n\n const command: TCreateBets = {\n command: CommandNames.CREATE_BETS,\n params: {\n bets: [\n {\n Source: source,\n EachWay: each_way,\n Amount: amount,\n Events: bets.map(bet => ({\n SelectionId: bet.event_id,\n Coeficient: bet.price\n })),\n OddType: oddFormat,\n Type: type,\n AdditionalAmount: undefined,\n ...(isFrenchFreeBetEnabled ? { IsFreeBetMoney: true } : {})\n }\n ],\n ...(location_token ? { GeoLocationToken: location_token } : {})\n },\n rid: RidGenerator.gForCommand()\n };\n\n if (editBet?.active) {\n command.params.bets[0].AdditionalAmount = additional_amount;\n command.params.bets[0].OldBetId = old_bet_id;\n }\n\n betCommand(\n command,\n '',\n (data: {\n result: string;\n StatusCode: string;\n Data: Array<{\n bet_id: number;\n k: number;\n is_superbet?: boolean;\n }>;\n }) => {\n if (data.StatusCode === '0') {\n data.result = 'OK';\n\n if (data.Data?.[0]?.is_superbet) {\n showToastSuccess(\n i18n.t('betslip.superBetSuccess'),\n getMessageContextBasedOnBetslipOpenState(messageContext)\n );\n } else {\n showToastSuccess(\n i18n.t(`betslip.${SwarmSuccessMessages.DO_BET}`),\n getMessageContextBasedOnBetslipOpenState(messageContext)\n );\n }\n }\n\n callback(data);\n fireEvent({ key: EPlayerActivityCheckerActions.checkPlayerActivity });\n\n const accountParams: AccountParamsType = queryClient.getQueryData([\n EAccount['AccountParams']\n ]);\n\n if (\n accountParams &&\n +accountParams[AppendCustomCodes.APPEND_CUSTOM_CODE_BETSLIP]\n ) {\n appendCustomCode(accountParams[AppendCustomCodes.CUSTOM_CODE_BETSLIP], {\n amount,\n currency: user?.currency,\n bet_id: data?.Data[0]?.bet_id,\n k: data?.Data[0]?.k,\n is_superbet: mode === -1,\n bet_type: type,\n name: user?.name,\n first_name: user?.first_name,\n last_name: user?.last_name,\n email: user?.email,\n username: user?.username,\n btag: user?.btag,\n userId: user?.id,\n phone: user?.phone\n });\n }\n },\n () => undefined,\n ({ data }: { data: DoBetResponseType }) => {\n oddChangeHandlerCallbackWrapper(\n data,\n callbackError,\n oddFormat,\n setAcceptBet,\n messageContext\n );\n }\n );\n};\n\nexport const getV3Freebet = (\n params: TV3FreebetParams,\n callback: (data: TV3FreebetResponse) => void,\n callbackError: ((err?: Record) => void) | null = null\n): void => {\n const command = {\n command: CommandNames.GET_FREEBETS_FOR_BETSLIP_V3,\n params,\n rid: RidGenerator.gForCommand()\n };\n\n betCommand(command, '', callback, () => undefined, callbackError);\n};\n\nexport const getCurrencyConfigs = async (\n currency: string,\n callback: (data: GetCurrencyConfigsResponse) => void,\n callbackError: Function | null\n): Promise => {\n const commandObj = {\n command: CommandNames.GET,\n rid: RidGenerator.gForCommand(),\n params: {\n source: CommandSource.CURRENCY_CONFIG,\n what: {\n currency: []\n },\n where: {\n currency: { name: currency }\n },\n subscribe: false\n }\n };\n\n connectingWS.then((socket: WebsocketEnhanced) =>\n socket.sendCommand(commandObj, '', callback, undefined, callbackError)\n );\n};\n\nexport const bookBet = async (\n bets: BookBetParamsType,\n callback: Function,\n callbackError: Function\n): Promise => {\n const commandObj: CommandObj = {\n command: CommandNames.BOOK_BET,\n rid: RidGenerator.gForCommand(),\n params: {\n bets\n }\n };\n\n const tid = Number(\n qs.parse(window.location.search, { ignoreQueryPrefix: true }).tid\n );\n\n tid && (commandObj.params.cashdesk_id = tid);\n\n connectingWS.then((socket: WebsocketEnhanced) =>\n socket.sendCommand(commandObj, '', callback, undefined, callbackError)\n );\n};\n\nexport const getEventsByBookingId = (\n bookId: string,\n callback: Function,\n callbackError: Function\n): void => {\n const commandObj: CommandObj = {\n command: CommandNames.GET_EVENTS_BY_BOOKING_ID,\n rid: RidGenerator.gForCommand(),\n params: {\n booking_id: +bookId\n }\n };\n\n connectingWS.then((socket: WebsocketEnhanced) =>\n socket.sendCommand(commandObj, '', callback, undefined, callbackError)\n );\n};\n\nexport const getEventsReadyForBetslip = (\n eventsAndGameIds: IEventsAndGameIds[] | null,\n callback: Function,\n callBackError?: Function,\n getOnlyEventIds?: boolean,\n gameIds?: number[],\n eventIds?: number[]\n): void => {\n const games = gameIds\n ? gameIds\n : eventsAndGameIds\n ? eventsAndGameIds.map(entity => entity.gameId)\n : [];\n\n const events =\n gameIds && eventIds\n ? eventIds\n : eventsAndGameIds\n ? eventsAndGameIds.map(entity => entity.eventId)\n : [];\n\n const commandObj = {\n command: CommandNames.GET,\n rid: RidGenerator.gForCommand(),\n params: {\n source: CommandSource.BETTING,\n what: {\n ...(!getOnlyEventIds && {\n sport: ['alias', 'type'],\n region: ['name', 'alias'],\n competition: ['name', 'id'],\n game: ['id', 'type', 'team1_name', 'team2_name', 'start_ts', 'info'],\n market: ['name', 'type', 'extra_info']\n }),\n event: getOnlyEventIds\n ? ['id']\n : ['id', 'base', 'name', 'price', 'ew_allowed']\n },\n where: {\n game: {\n id: {\n '@in': games\n }\n },\n event: {\n id: {\n '@in': events\n }\n }\n }\n }\n };\n\n connectingWS.then((socket: WebsocketEnhanced) => {\n socket.sendCommand(commandObj, '', callback, undefined, callBackError);\n });\n};\n\nexport const counterCounterOfferAnswer = (\n acceptOffer: boolean,\n betId: number | string,\n callback: Function,\n callbackError?: Function\n): void => {\n const commandObj: CommandObj = {\n command: CommandNames.SUPER_BET_ANSWER,\n rid: RidGenerator.gForCommand(),\n params: {\n accept: acceptOffer,\n bet_id: betId\n }\n };\n\n connectingWS.then((socket: WebsocketEnhanced) =>\n socket.sendCommand(commandObj, '', callback, undefined, callbackError)\n );\n};\n\nexport const checkBetStatus = (\n betId: number | string,\n callback: Function,\n callbackError?: Function\n): void => {\n const commandObj: CommandObj = {\n command: CommandNames.CHECK_BET_STATUS,\n rid: RidGenerator.gForCommand(),\n params: {\n bet_id: betId\n }\n };\n\n connectingWS.then((socket: WebsocketEnhanced) =>\n socket.sendCommand(commandObj, '', callback, undefined, callbackError)\n );\n};\n","import axios from 'axios';\nimport { casinoLangPrefix } from 'utils/constants/app/general';\nimport { CasinoCommandNames } from 'utils/constants/casino/casino-command-names';\nimport { SUCCESS_STATUS_CODE } from 'utils/constants/swarm/backend-status-codes';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { showToastError } from 'utils/generic/show-toast-error';\nimport { isMobile } from 'utils/is-mobile';\nimport {\n DecentralizedCasinoGamesFetchingParams,\n ENewCasinoGamesFetchingParamsKey,\n NewCasinoGameBackend,\n NewCasinoGamesFetchingParams\n} from 'interfaces/new-casino';\n\nexport const fetchGamesByIds = (\n ids: string[],\n showErrorMessage = true,\n useExternalId = false,\n decentralized = false\n): Promise => {\n let _params:\n | DecentralizedCasinoGamesFetchingParams\n | NewCasinoGamesFetchingParams;\n\n if (decentralized) {\n _params = {\n partnerId: SpringConfigs.DECENTRALIZED_CASINO_PARTNER_ID,\n gameId: ids[0]\n };\n } else {\n _params = {\n partner_id: SpringConfigs.PARTNER_ID,\n is_mobile: Number(isMobile()),\n lang: casinoLangPrefix,\n by_key: ENewCasinoGamesFetchingParamsKey.Id,\n use_webp: Number(SpringConfigs.IS_WEBP_SUPPORTED),\n country: SpringConfigs.CURRENT_COUNTRY_CODE\n };\n\n if (useExternalId && ids?.length) {\n _params.external_id = ids;\n } else {\n if (ids?.length === 1) {\n _params.id = ids[0];\n } else if (ids?.length > 1) {\n _params.external_id = ids;\n } else {\n return new Promise(resolve => resolve([]));\n }\n }\n }\n\n const url = SpringConfigs?.DECENTRALIZED_CASINO_URL\n ? `${SpringConfigs.DECENTRALIZED_CASINO_URL}${CasinoCommandNames['GET_DECENTRALIZED_GAME']}`\n : `${SpringConfigs.CASINO_URL}/${CasinoCommandNames['GET_GAMES']}`;\n\n return axios\n .get<{\n games: NewCasinoGameBackend[];\n status: string;\n }>(url, {\n params: _params\n })\n .then((response: any) => {\n if (\n response.status === SUCCESS_STATUS_CODE &&\n response.data &&\n (response.data.status === 'ok' || decentralized)\n ) {\n return decentralized\n ? [\n {\n extearnal_game_id: response.data.externalGameId,\n types: {\n realMode: 0,\n funMode: 0\n },\n icon_1: response.data.icon1,\n icon_2: response.data.icon2,\n icon_3: response.data.icon3,\n provider: 'ALL',\n provider_badge: null,\n provider_title: 'ALL',\n show_as_provider: 'ALL',\n cats: response.data.categories,\n ...response.data\n }\n ]\n : Object.values(response.data.games);\n } else {\n if (showErrorMessage) {\n showToastError(response.statusText);\n }\n\n return [];\n }\n })\n .catch(error => {\n if (showErrorMessage) {\n showToastError(error.toString());\n }\n\n return [];\n });\n};\n","import { CommandNames } from 'utils/constants/swarm/swarm-command-names';\nimport RidGenerator from 'utils/swarm/rid-generator';\nimport { UserNotificationsResponse } from 'interfaces/notifications';\nimport { WebsocketEnhanced } from 'interfaces/spring-websocket-interfaces';\nimport { connectingWS } from 'hooks/useSpringConnect';\nimport store from 'store';\nimport { setUserNotifications } from 'store/actions/sport-data';\n\nexport const setGamesNotifications = (\n gameInfo: {\n id: number;\n game_start_ts: number;\n },\n shouldSubscribe: boolean,\n callback: Function,\n updateCallback?: Function\n): void => {\n const command = {\n command: CommandNames.SET_GAMES_NOTIFICATIONS,\n params: {\n game_list: [gameInfo],\n events: [\n {\n event_name: 'MatchFinished',\n is_subscribed: shouldSubscribe\n }\n ]\n },\n rid: RidGenerator.gForCommand()\n };\n\n connectingWS.then((socket: WebsocketEnhanced) => {\n socket.sendCommand(command, '', callback, null, updateCallback);\n });\n};\n\nexport const getUserAllNotifications = (): void => {\n const command = {\n command: CommandNames.GET_USER_ALL_NOTIFICATIONS,\n params: {},\n rid: RidGenerator.gForCommand()\n };\n\n const callback = (resp: UserNotificationsResponse) => {\n if (resp?.details) {\n store.dispatch(setUserNotifications(resp.details));\n }\n };\n\n connectingWS.then((socket: WebsocketEnhanced) => {\n socket.sendCommand(command, '', callback);\n });\n};\n","import { ECasinoGameMode, ECasinoGameViewOrder } from 'interfaces/casino-data';\nimport { ActionType } from 'interfaces/generic';\nimport {\n NewCasinoCategory,\n NewCasinoGame,\n NewCasinoGamesFetchingParams\n} from 'interfaces/new-casino';\nimport { CasinoGamesConfigs } from 'newelements/Casino/Games/__partials/providers/CasinoGamesConfigsContext';\nimport { NewCasinoActionTypes } from 'store/action-types/new-casino';\n\nexport const setCasinoOriginalCategories = (\n categories: NewCasinoCategory[]\n): ActionType => {\n return {\n type: NewCasinoActionTypes.SET_CASINO_ORIGINAL_CATEGORIES,\n payload: categories\n };\n};\n\nexport const setEnhancedParams = (\n enhancedParams: Partial\n): ActionType => {\n return {\n type: NewCasinoActionTypes.SET_ENHANCED_PARAMS,\n payload: enhancedParams\n };\n};\n\nexport const setTotalCount = (totalCount: string): ActionType => {\n return {\n type: NewCasinoActionTypes.SET_GAMES_TOTAL_COUNT,\n payload: totalCount\n };\n};\n\nexport const setGamesConfigs = (\n gamesConfigs: Partial\n): ActionType => {\n return {\n type: NewCasinoActionTypes.SET_GAMES_CONFIG,\n payload: gamesConfigs\n };\n};\n\nexport const setCasinoCustomCategories = (\n categories: NewCasinoCategory[]\n): ActionType => {\n return {\n type: NewCasinoActionTypes.SET_CASINO_CUSTOM_CATEGORIES,\n payload: categories\n };\n};\n\nexport const setCasinoOriginalCategoriesSet = (\n categories: string[]\n): ActionType => {\n return {\n type: NewCasinoActionTypes.SET_CASINO_ORIGINAL_CATEGORIES_SET,\n payload: categories\n };\n};\n\nexport const setCasinoOriginalCategoriesSetLeftSideBar = (\n categories: string[]\n): ActionType => {\n return {\n type: NewCasinoActionTypes.SET_CASINO_ORIGINAL_CATEGORIES_SET_LEFT_SIDEBAR,\n payload: categories\n };\n};\n\nexport const setCategoryProviderIds = (payload: string): ActionType => {\n return {\n type: NewCasinoActionTypes.SET_CASINO_CATEGORY_PROVIDER_IDS,\n payload\n };\n};\n\nexport const setCanRequestCategoriesNestedData = (\n payload: boolean\n): ActionType => {\n return {\n type: NewCasinoActionTypes.SET_CAN_REQUEST_CATEGORIES_NESTED_DATA,\n payload\n };\n};\n\nexport const setCanRequestProvidersNestedData = (\n payload: boolean\n): ActionType => {\n return {\n type: NewCasinoActionTypes.SET_CAN_REQUEST_PROVIDERS_NESTED_DATA,\n payload\n };\n};\n\nexport const setLastPlayedCatSettings = (payload: {\n lastPlayed: boolean;\n lastPlayedCatType: number;\n}): ActionType => {\n return {\n type: NewCasinoActionTypes.SET_LAST_PLAYED_CAT_SETTINGS,\n payload\n };\n};\n\nexport const setCategoryCustomIds = (catCustomIds: string[]): ActionType => {\n return {\n type: NewCasinoActionTypes.SET_CATEGORIES_CUSTOM_IDS,\n payload: catCustomIds\n };\n};\n\nexport const addCachedGame = (game: NewCasinoGame): ActionType => {\n return {\n type: NewCasinoActionTypes.ADD_CACHED_GAME,\n payload: game\n };\n};\n\nexport const addCachedGameId = (id: string): ActionType => {\n return {\n type: NewCasinoActionTypes.ADD_CACHED_GAME_ID,\n payload: id\n };\n};\n\nexport const setCachedGameActive = (id: string): ActionType => {\n return {\n type: NewCasinoActionTypes.SET_CACHED_GAME_ACTIVE,\n payload: id\n };\n};\n\nexport const setCachedGameInactive = (id: string): ActionType => {\n return {\n type: NewCasinoActionTypes.SET_CACHED_GAME_INACTIVE,\n payload: id\n };\n};\n\nexport const setCachedGamesInactive = (excludeId?: string): ActionType => {\n return {\n type: NewCasinoActionTypes.SET_CACHED_GAMES_INACTIVE,\n payload: excludeId\n };\n};\n\nexport const setCachedGameOrder = (payload: {\n id: NewCasinoGame['extearnal_game_id'];\n order: ECasinoGameViewOrder;\n}): ActionType => {\n return {\n type: NewCasinoActionTypes.SET_CACHED_GAME_ORDER,\n payload\n };\n};\n\nexport const setCachedGameMode = (payload: {\n id: NewCasinoGame['extearnal_game_id'];\n mode: ECasinoGameMode;\n}): ActionType => {\n return {\n type: NewCasinoActionTypes.SET_CACHED_GAME_MODE,\n payload\n };\n};\n","import { createSelector } from 'reselect';\nimport { getSelectorRoot } from 'utils/selectors';\nimport { ICasinoCachedGames } from 'interfaces/casino-data';\n\nconst getCasinoStore = getSelectorRoot('newCasinoStore');\n\nconst getCasinoCategories = getCasinoStore('categories');\nexport const getCasinoOriginalCategories = createSelector(\n [getCasinoCategories],\n categories => categories.original\n);\nexport const getEnhancedParams = getCasinoStore('enhancedParams');\n\nexport const getGamesConfigs = getCasinoStore('gamesConfigs');\nexport const getCasinoCustomCategories = createSelector(\n [getCasinoCategories],\n categories => categories.custom\n);\nexport const getCasinoOriginalCategoriesSet = createSelector(\n [getCasinoCategories],\n categories => categories.originalSet\n);\nexport const getCasinoOriginalCategoriesSetLeftSideBar = createSelector(\n [getCasinoCategories],\n categories => categories.originalSetLeftSideBar\n);\nexport const getCanRequestCategoriesNestedData = getCasinoStore(\n 'canRequestCategoriesNestedData'\n);\nexport const getCanRequestProvidersNestedData = getCasinoStore(\n 'canRequestProvidersNestedData'\n);\nexport const getLastPlayedCatSettings = getCasinoStore('lastPlayedCatSettings');\nexport const getCategoryCustomIds = getCasinoStore('categoryCustomIds');\nexport const getCachedGames = getCasinoStore('cachedGames');\nexport const getActiveGames = createSelector(\n [getCachedGames],\n (cachedGames: ICasinoCachedGames = {}) => {\n return Object.values(cachedGames)\n .filter(gameData => gameData.active)\n .reduce((acc, gameData) => {\n if (!gameData.data) {\n return acc;\n }\n\n acc[gameData.data.extearnal_game_id] = gameData;\n\n return acc;\n }, {} as ICasinoCachedGames);\n }\n);\n","import { getSelectorRoot } from 'utils/selectors';\n\nconst getSocket = getSelectorRoot('socket');\n\nexport const getPartnerConfigs = getSocket('partnerConfigs');\nexport const getJackpots = getSocket('jackpots');\nexport const getIsConnected = getSocket('isConnected');\n","import { getSelectorRoot } from 'utils/selectors';\n\nconst getSpecElems = getSelectorRoot('specElems');\n\nexport const getBetslip = getSpecElems('betslip');\n","import { browserHistory } from 'configure/history';\nimport { addQuery, saveCurrentLocation } from 'components/QueryRoute';\n\ntype TOpenLoginViewProps = {\n routeToSaveInStorage?: string;\n query?: Record;\n};\n\nexport const openLoginView = ({\n routeToSaveInStorage,\n query = {}\n}: TOpenLoginViewProps = {}) => {\n saveCurrentLocation('login', routeToSaveInStorage);\n browserHistory.push(addQuery({ accounts: '*', login: '*', ...query }));\n};\n","import { checkIsUserLoggedIn } from './check-is-user-logged-in';\nimport { openLoginView } from './open-login-view';\n\nexport const UtilsAccount = {\n openLoginView,\n checkIsUserLoggedIn\n};\n","import LS from 'utils/bom-dom-manipulation/local-storage';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\nimport { InitialUserData } from 'interfaces/authentication';\nimport store from 'store';\n\nexport const checkIsUserLoggedIn = () => {\n const userData: InitialUserData = store.getState().userData;\n const authData = JSON.parse(\n LS.getItem(storageKeyName('account', 'AUTH_DATA'))\n );\n\n if (authData?.auth_token) {\n return true;\n }\n\n return userData.isLoggedIn;\n};\n","import { storeFcmToken } from 'services/authentication';\nimport store from 'store';\n\nexport const checkAndStoreFcmToken = (): void => {\n const firebaseToken = store.getState().appData.fireBaseToken;\n\n if (firebaseToken) {\n storeFcmToken(firebaseToken);\n }\n};\n","import dayjs from 'dayjs';\nimport { ProfileData } from 'interfaces/authentication';\nimport LocalStorage from '../bom-dom-manipulation/local-storage';\nimport { storageKeyName } from '../generic/storage-key-name';\n\nexport const getUserName = (user: ProfileData): string => {\n const name =\n user?.first_name !== null && user?.last_name !== null\n ? `${user.first_name} ${user.last_name}`\n : user.username;\n\n return name || '';\n};\n\nexport const getUserAvatarName = (user: ProfileData): string => {\n return getUserName(user).substr(0, 2).toUpperCase();\n};\n\nexport const ITEMS_WITH_BADGE = ['bonuses', 'messages'];\n\nexport const setUserLoginLimitStartTimeLS = () =>\n LocalStorage.setItem(\n storageKeyName('account', 'LOGIN_LIMIT_POPUP_START_TIME'),\n String(dayjs().unix())\n );\n","import { CommandNames } from 'utils/constants/swarm/swarm-command-names';\nimport RidGenerator from 'utils/swarm/rid-generator';\nimport { WebsocketEnhanced } from 'interfaces/spring-websocket-interfaces';\nimport { connectingWS } from 'hooks/useSpringConnect';\n\nconst permissibleOddsCommand = async (\n commandObj: any,\n rid: string,\n callback: Function,\n updateCallback: Function,\n callbackError: Function | null\n) => {\n connectingWS.then((socket: WebsocketEnhanced) => {\n socket.sendCommand(\n commandObj,\n rid,\n callback,\n updateCallback,\n callbackError\n );\n });\n};\n\nexport const getPermissibleOdds = (\n callback: Function,\n callbackError: Function | null\n): void => {\n const command = {\n command: CommandNames.GET_PERMISSIBLE_ODDS,\n params: {},\n rid: RidGenerator.gForCommand()\n };\n\n permissibleOddsCommand(command, '', callback, () => undefined, callbackError);\n};\n","import { CALCULATE_POWER_OF_10 } from 'utils/constants/app/general';\nimport { ODD_FORMATS } from 'utils/constants/betslip/odd-formats';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { Ladder, PermissibleOdds } from 'interfaces/bet-data';\nimport { getPermissibleOdds } from 'services/get-permissible-odds';\nimport Store from 'store';\nimport { ladderIsLoaded, updateOddFormat } from 'store/actions/betslip';\n\n/*eslint no-magic-numbers:*/\n// TODO check after betslip refactor\n\nconst Config = {\n decimalFormatRemove3Digit: false,\n roundDecimalCoeficients: SpringConfigs.ODD_ROUNDING,\n useLadderForFractionalFormat: true\n};\n\nconst cache: { [key: string]: string } = {};\n\nconst {\n oddFormat,\n ladderLoaded\n}: { oddFormat: number; ladderLoaded: boolean } = Store.getState().betSlip;\n\nlet priceDecimal: number | undefined;\n\nlet ladder: Ladder[] | boolean = false;\n\nexport async function loadLadder(id = 0): Promise {\n Store.dispatch(ladderIsLoaded());\n getPermissibleOdds(\n (response: PermissibleOdds) => {\n if (response?.details) {\n ladder = response.details;\n Store.dispatch(updateOddFormat(id));\n } else {\n ladder = [];\n }\n },\n () => {\n ladder = [];\n }\n );\n}\n\nif (!ladderLoaded) {\n loadLadder(oddFormat);\n}\n\n/**\n * Odd converter\n * returns a function to convert decimal odds to corresponding format\n * Usage:\n * convert(odd, formatID)\n * e.g. const coeficient = convert(1.01, 2)\n */\nexport function convert(\n val: string | number,\n formatID: number | string,\n type = ''\n): string {\n if (isNaN(+val) || +val === Infinity) {\n return '-';\n }\n\n if ((formatID === 1 || formatID === 'fractional') && !ladder) {\n return '-';\n }\n\n const format =\n ODD_FORMATS.find(\n format => format.value === formatID || format.id === formatID\n )?.value || 'decimal';\n\n const value = parseFloat(`${val}`);\n const cacheKey = `${format}${value}`;\n\n if (isNaN(value)) {\n return '';\n }\n\n if (cache[cacheKey] === undefined) {\n if (\n format === 'fractional' &&\n Config.useLadderForFractionalFormat &&\n type === 'fictional' &&\n value !== undefined\n ) {\n // use it to calculate express odds as you see on bet365 :)\n cache[cacheKey] = `${Math.round((value - 1) * 100 || 0) / 100}/1`;\n } else {\n const converted = convertLog(value, format, ladder as Ladder[]);\n let roundedConverted = String(converted) || '';\n\n if (converted && format === 'decimal') {\n if (!priceDecimal) {\n const partnerConfigs = Store.getState().socket.partnerConfigs;\n priceDecimal = partnerConfigs?.price_decimals;\n }\n\n if (\n priceDecimal &&\n converted &&\n String(converted)?.split('.')?.[1]?.length > priceDecimal\n ) {\n roundedConverted = Number(converted).toFixed(priceDecimal);\n }\n }\n\n cache[cacheKey] = roundedConverted;\n }\n }\n\n return cache[cacheKey];\n}\n\nfunction convertLog(value: number, format: string, ladder: Ladder[]) {\n const fValue = value;\n const iValue = Math.floor(value);\n const rValue =\n value !== undefined ? Math.round(fValue * 100 || 0) / 100 : value;\n\n switch (format) {\n case 'decimal':\n return decimalValue(value, iValue, fValue);\n\n case 'fractional':\n return fractionalValue(value, fValue, rValue, ladder);\n\n case 'american':\n return americanValue(value, rValue);\n\n case 'hongkong':\n return hongKongValue(value, iValue, fValue);\n\n case 'malay':\n return malayValue(fValue);\n\n case 'indo':\n return indoValue(fValue);\n\n default:\n return rValue;\n }\n}\n\nfunction decimalValue(value: number, iValue: number, fValue: number) {\n return value !== undefined\n ? iValue !== fValue &&\n value.toString().split('.')[1] &&\n value.toString().split('.')[1].length > 2 &&\n !Config.decimalFormatRemove3Digit\n ? Math.round(\n value *\n Math.pow(CALCULATE_POWER_OF_10, Config.roundDecimalCoeficients)\n ) / Math.pow(CALCULATE_POWER_OF_10, Config.roundDecimalCoeficients)\n : fValue.toFixed(2)\n : value;\n}\n\nfunction fractionalValue(\n value: number,\n fValue: number,\n rValue: number,\n ladder: Ladder[]\n) {\n if (value && Config.useLadderForFractionalFormat) {\n const fracFL = dec2fracFromLadder(fValue, ladder);\n\n if (fracFL) {\n return fracFL;\n } else {\n const frac = dec2frac(rValue);\n\n if (frac) {\n return frac;\n }\n }\n\n return value;\n } else {\n return '-';\n }\n}\n\nfunction americanValue(value: number, rValue: number) {\n return value\n ? rValue > 2\n ? `+${(100 * (rValue - 1)).toString().split('.')[0]}`\n : rValue !== 1\n ? (-100 / (rValue - 1)).toString().split('.')[0]\n : '-'\n : rValue;\n}\n\nfunction hongKongValue(value: number, iValue: number, fValue: number) {\n return value !== undefined\n ? iValue !== fValue && value.toString().split('.')[1].length > 2\n ? Math.round(\n (value - 1) *\n Math.pow(CALCULATE_POWER_OF_10, Config.roundDecimalCoeficients)\n ) / Math.pow(CALCULATE_POWER_OF_10, Config.roundDecimalCoeficients)\n : (fValue - 1.0).toFixed(2)\n : value;\n}\n\nfunction malayValue(fValue: number) {\n if (fValue === 2) {\n return '0.000';\n } else if (fValue > 2) {\n return (\n Math.round(\n +(1 / (1 - fValue)).toFixed(Config.roundDecimalCoeficients + 1) *\n Math.pow(CALCULATE_POWER_OF_10, Config.roundDecimalCoeficients)\n ) / Math.pow(CALCULATE_POWER_OF_10, Config.roundDecimalCoeficients)\n ).toFixed(Config.roundDecimalCoeficients);\n } else {\n return (fValue - 1).toFixed(Config.roundDecimalCoeficients);\n }\n}\n\nfunction indoValue(fValue: number) {\n if (fValue === 2) {\n return '0.000';\n } else if (fValue > 2) {\n return (fValue - 1).toFixed(Config.roundDecimalCoeficients);\n } else {\n return (\n Math.round(\n +(1 / (1 - fValue)).toFixed(Config.roundDecimalCoeficients + 1) *\n Math.pow(CALCULATE_POWER_OF_10, Config.roundDecimalCoeficients)\n ) / Math.pow(CALCULATE_POWER_OF_10, Config.roundDecimalCoeficients)\n ).toFixed(Config.roundDecimalCoeficients);\n }\n}\n\nfunction dec2fracFromLadder(dec: number, ladder: Ladder[]) {\n let frac = '';\n\n if (ladder.length) {\n let price = 0;\n let issetPriceArray = ladder.find(({ Price }) => Price === dec);\n\n if (issetPriceArray) {\n frac = `${issetPriceArray.Numerator}/${issetPriceArray.Denominator}`;\n } else {\n for (let i = 0; i < ladder.length; i++) {\n if (ladder[i].Price > price && ladder[i].Price < dec) {\n price = ladder[i].Price;\n }\n }\n\n issetPriceArray = ladder.find(({ Price }) => Price === price);\n\n if (issetPriceArray) {\n frac = `${issetPriceArray.Numerator}/${issetPriceArray.Denominator}`;\n }\n }\n }\n\n return frac;\n}\n\nfunction dec2frac(decVal: number) {\n let Znxt: number;\n let Dnxt: number;\n let Nnxt: number;\n\n function recCalc(Zcur: number, Dcur?: number, Dprev?: number): string {\n Dcur = Dcur !== undefined ? Dcur : 1;\n Dprev = Dprev !== undefined ? Dprev : 0;\n Znxt = 1 / (Zcur - Math.floor(Zcur));\n Dnxt = Dcur * Math.floor(Znxt) + Dprev;\n Nnxt = Math.round(decVal * Dnxt);\n\n return Nnxt / Dnxt === decVal\n ? `${Nnxt.toString()}/${Dnxt.toString()}`\n : recCalc(Znxt, Dnxt, Dcur);\n }\n\n // Use this casting method because of JS number bug for example \"2.2 - 1 = 1.1999(9)\"\n if (decVal !== Math.floor(decVal)) {\n decVal = parseFloat(\n `${(Math.floor(decVal) - 1).toString()}.${String(decVal).split('.')[1]}`\n );\n } else {\n decVal = decVal - 1;\n }\n\n return decVal % 1 === 0 ? `${String(decVal)}/1` : String(recCalc(decVal));\n}\n","import { FAVORITE } from 'utils/constants/casino/casino-element-names';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { isMobile } from 'utils/is-mobile';\nimport { NewCasinoCategory } from 'interfaces/new-casino';\n\nexport const leftSideBarCasinoMain = (): boolean => {\n if (isMobile()) {\n return false;\n }\n\n const matchCasinoUrl = new RegExp(`${SpringConfigs.PAGE_URLS.casino}/`);\n\n return (\n !!window.location.href.match(matchCasinoUrl) &&\n SpringConfigs.LEFT_SIDE_BAR &&\n SpringConfigs.LEFT_SIDE_BAR_CASINO\n );\n};\n\nexport const recentPlayedParams = (catId?: number): { category_id: number } => {\n const params = { category_id: catId || 0 };\n\n return params;\n};\n\nexport const isShowGamesCountBadge = (\n category: NewCasinoCategory,\n gamesCount?: boolean\n): boolean => {\n return !!(\n (!!+category.games_count && !!gamesCount) ||\n (category.id === FAVORITE && +category.games_count)\n );\n};\n\nexport const SELECT_PROVIDERS_TYPE = 'providers';\n\nexport const clearCasinoPopupQuery = (): URLSearchParams => {\n const querySearch = new URLSearchParams(window.location.search);\n\n querySearch.delete('mode');\n querySearch.delete('login');\n querySearch.delete('gameId');\n querySearch.delete('preview');\n querySearch.delete('profile');\n querySearch.delete('accounts');\n querySearch.delete('settings');\n\n return querySearch;\n};\n","import dayjs from 'dayjs';\n\ntype TCryptoCurrenciesMapping = Record<\n string,\n { chainId: number; currency: string }\n>;\n\nexport const CRYPTO_CURRENCIES_MAPPING: TCryptoCurrenciesMapping = {\n FTNF: {\n chainId: 5165,\n currency: 'FTN'\n },\n USDT: {\n chainId: 1,\n currency: 'USDT'\n },\n USDC: {\n chainId: 1,\n currency: 'USDC'\n },\n ETH: {\n chainId: 1,\n currency: 'ETH'\n },\n BUSD: {\n chainId: 1,\n currency: 'BUSD'\n },\n BNB: {\n chainId: 1,\n currency: 'BNB'\n },\n SHIB: {\n chainId: 1,\n currency: 'SHIB'\n },\n FTN: {\n chainId: 1,\n currency: 'FTN'\n },\n DAI: {\n chainId: 1,\n currency: 'DAI'\n },\n USDT_T: {\n chainId: 0,\n currency: 'USDT'\n },\n USDB: {\n chainId: 0,\n currency: 'USDT'\n }\n};\n\nexport type stakeRewardsType = {\n data: {\n date: dayjs.Dayjs;\n fee: number;\n balance: number;\n id: number;\n }[];\n nextUpdate: number;\n nextRewardTime: number;\n};\n\nexport type stakeRateType = {\n yearly: number;\n monthly: number;\n daily: number;\n};\n\nexport type stakeHistoryType = {\n data: {\n date: dayjs.Dayjs;\n amount: number;\n type: string;\n id: number;\n }[];\n};\nexport type unStakeType = {\n message: string;\n status: string;\n};\n\nexport type stakeBalanceType = {\n data: {\n balance: number;\n rate: number;\n };\n};\n\nexport type stakeRecordItem = {\n date: dayjs.Dayjs;\n amount: number;\n type: string;\n id: number;\n};\n\nexport type rewardType = {\n date: dayjs.Dayjs;\n fee: number;\n balance: number;\n key?: number;\n id: number;\n};\n\nexport const fixedDigitForLolik = 5;\n\nexport const ALL_CRYPTO_CURRENCIES = [\n 'BCH',\n 'BNB',\n 'BSS',\n 'BSV',\n 'BTC',\n 'BTS',\n 'CPC',\n 'DAI',\n 'DCP',\n 'DOG',\n 'DSH',\n 'ETC',\n 'ETH',\n 'FST',\n 'FTN',\n 'GC',\n 'GPT',\n 'GVI',\n 'GWI',\n 'IIP',\n 'KLW',\n 'LTC',\n 'MBT',\n 'MET',\n 'MTH',\n 'NLC',\n 'PBC',\n 'QCB',\n 'SHB',\n 'SPC',\n 'STH',\n 'TRX',\n 'TUS',\n 'USC',\n 'V01',\n 'V02',\n 'V03',\n 'V04',\n 'VBT',\n 'VET',\n 'VLC',\n 'VM1',\n 'VM2',\n 'VVI',\n 'WVI',\n 'WWI',\n 'XMR',\n 'XRP',\n 'YOS',\n 'ZEC',\n 'ZPT',\n 'USA',\n 'USDC'\n];\n","import SpringConfigs from 'utils/constants/swarm/spring-configs';\n\nexport const DEFAULT_CRYPTO_CURRENCY = 'FTN';\nexport const DEFAULT_FIAT_CURRENCY = 'USDT';\n// in user profile we are getting USDT name as TUS\nexport const DEFAULT_FIAT_CURRENCY_ID = 'TUS';\n\nexport const CURRENCY_NAME_LIST_COUNT = 2;\n\nexport const PaymentMethodTypes = {\n POST: 'post',\n GET: 'get',\n IFRAME: 'iframe',\n FORM_DRAW: 'formdraw',\n MESSAGE: 'message'\n};\n\nexport const StatusUrlNames = {\n CANCEL: 'cancel',\n FAIL: 'fail',\n PENDING: 'pending',\n SUCCESS: 'success'\n};\n\nexport const DepositStatusMessages = {\n CANCEL: 'depositStatusMessageCancel',\n FAIL: 'depositStatusMessageFail',\n PENDING: 'depositStatusMessagePending',\n SUCCESS: 'depositStatusMessageDone'\n};\n\nexport const WithdrawStatusMessages = {\n SUCCESS: 'withdrawSuccess'\n};\n\nexport const PaymentStatusValues: Record = {\n '-2': 'Rejected',\n '-1': 'Canceled',\n '0': 'New',\n ...(SpringConfigs.HIDE_WITHDRAWAL_ALLOWED_DATE ? {} : { '1': 'Allowed' }),\n '2': 'Pending',\n '3': 'Paid',\n '4': 'RollBacked'\n};\n\nexport enum TWO_WALLET_TYPES {\n sport = 'sport',\n casino = 'casino'\n}\n\nexport const IS_ACTIVE_TWO_WALLET =\n !SpringConfigs.CASINO_SPORTSBOOK_SWITCHER &&\n !!SpringConfigs.IS_TWO_WALLET_ACTIVE;\n\nexport const IS_ACTIVE_TWO_WALLET_SPORT = [0, 1].includes(\n SpringConfigs.CASINO_SPORTSBOOK_SWITCHER\n)\n ? TWO_WALLET_TYPES.sport\n : TWO_WALLET_TYPES.casino;\n\nexport enum EBankVerificationTypes {\n BANK_ID = 1,\n DIIA = 2\n}\nexport const MAX_MONTH_VALUE = 12;\nexport const YEAR_FORMAT_FOUR_DIGITS = 4;\nexport const TEST_LENGTH = 100;\nexport const CONFIRM_MODAL_PADDING = {\n _12: 12,\n _0: 0\n};\nexport const CONFIRM_MODAL_WIDTH = {\n _350: 350,\n _420: 420\n};\nexport const CASHOUT_AROUND = 0.01;\nexport const POS_WIN_AND_CASH_OUT_MIN_DIFFERENCE = 0.02;\n/* eslint-disable no-magic-numbers */\nexport enum EPaymentStatusValuesTypes {\n Rejected = -2,\n Canceled = -1,\n New = 0,\n Allowed = 1,\n Pending = 2,\n Paid = 3,\n RollBacked = 4\n}\n","import { ProfileData } from 'interfaces/authentication';\n\nexport const userActiveStep = {\n USER_ACTIVE_STEP_STATE_VALUE_0: 0, // Data Processing\n USER_ACTIVE_STEP_STATE_VALUE_5: 5, // Waiting Client\n USER_ACTIVE_STEP_STATE_VALUE_3: 3, // KYC Failed\n USER_ACTIVE_STEP_STATE_VALUE_4: 4, // KYC Expired\n USER_ACTIVE_STEP_STATE_VALUE_7: 7, // Waiting for Provider\n USER_ACTIVE_STEP_VALUE_21: 21,\n USER_ACTIVE_STEP_VALUE_27: 27,\n USER_ACTIVE_STEP_VALUE_33: 33,\n USER_ACTIVE_STEP_VALUE_35: 35,\n USER_ACTIVE_STEP_VALUE_37: 37,\n USER_ACTIVE_STEP_VALUE_40: 40, // Signicat Germany\n USER_ACTIVE_STEP_VALUE_41: 41, // Signicat Brazil\n USER_ACTIVE_STEP_VALUE_42: 42, // Legitimuz Brazil\n USER_ACTIVE_STEP_VALUE_50: 50\n};\n\nexport const CLIENT_PRODUCT_STATE_CATEGORIES = {\n sport: 1,\n casino: 2\n};\n\nexport const checkUserStatus = {\n bankIdIntergration(user: ProfileData | Record): boolean {\n return (\n user.active_step === userActiveStep.USER_ACTIVE_STEP_VALUE_35 &&\n user.active_step_state === userActiveStep.USER_ACTIVE_STEP_STATE_VALUE_5\n );\n }\n};\n","export const AppRoutes: Record = {\n home: '',\n live: 'desktop-sportsbook-live',\n prematch: 'desktop-sportsbook-prematch',\n virtualSports: 'virtual-sport',\n eLive: 'e-live',\n ePrematch: 'e-prematch',\n casinoGames: 'casino',\n casinoTournaments: 'tournaments',\n racing: 'racing'\n};\n\nexport const ReservedRoutes: Record = {\n addToBetslip: '/add-to-betslip',\n deposit: '/account/deposit'\n};\n","import SpringConfigs from '../swarm/spring-configs';\n\nexport const isRtl = SpringConfigs.IS_RTL;\n","export const CasinoCommandNames = {\n GET_OPTIONS: 'getOptions',\n GET_GAMES: 'getGames',\n GET_PROMOTED_GAMES: 'getPromotedGames',\n GET_TOURNAMENT_GAMES: 'getTournamentGames',\n GET_GAME_TOURNAMENTS: 'getTournaments',\n GET_GROUPED_PROVIDER_OPTIONS: 'getGroupedProviderOptions',\n GET_DECENTRALIZED_GAMES: 'games',\n GET_DECENTRALIZED_GAME: 'game',\n GET_DECENTRALIZED_CATEGORIES: 'categories'\n};\n","export const UNCATEGORIZED = 'uncategorized';\nexport const LIVE_CASINO_CATEGORY = 28;\n","export const CASINO_MULTIVIEW_ENABLED_QUERY_VALUE = 'enabled';\nexport const CASINO_MULTIVIEW = 'multiview';\n","import i18n from 'i18next';\nimport qs from 'qs';\nimport LocalStorage from 'utils/bom-dom-manipulation/local-storage';\nimport { clearCasinoPopupQuery } from 'utils/casino/casino';\nimport { CUSTOM_CATEGORIES } from 'utils/constants/casino/custom-categories';\nimport SpringConfigs, {\n androidWrapperApp,\n iOSWrapperApp\n} from 'utils/constants/swarm/spring-configs';\nimport { getMountPath, mountPoint } from 'utils/generic/route-manipulation';\nimport { showToastError } from 'utils/generic/show-toast-error';\nimport { storageKeyName } from 'utils/generic/storage-key-name';\nimport { isMobile } from 'utils/is-mobile';\nimport { getDomain } from './get-domain';\nimport { GLOBALS } from './global-variables';\nimport { getSavedLocation } from 'components/QueryRoute';\nimport { ReservedRoutes } from '../constants/app/app-routes';\nimport { CASINO_LANG_EXCEPTIONS } from '../constants/languages/language-format';\n\nexport const deviceIdApp = {\n ANDROID_WRAPPER_APP: 4,\n IOS_WRAPPER_APP: 3\n};\n\ntype GameURLParams = {\n partnerId: number;\n devicetypeid: number;\n gameId: number | string;\n language: string;\n openType: 'fun' | 'real';\n isMobile: boolean;\n exitUrl?: string;\n token?: string;\n deposit_url?: string;\n browserUrl?: string;\n gameOptions?: null | string;\n logoSource?: string;\n};\n\nconst LAUNCH_TYPE =\n SpringConfigs.CASINO_LAUNCH_TYPE === 0\n ? 'Launch'\n : 'Inner/authorization.php/';\n\nconst LOUNCH_GAME_URL = `${LAUNCH_TYPE}${\n SpringConfigs.SHOW_GAMBLING_WITH_LOGO && isMobile() ? 'Uk' : ''\n}${SpringConfigs.CASINO_LAUNCH_TYPE === 0 ? 'Game' : ''}`;\n\ntype TGameUrlProps = {\n gameId: string;\n gameType?: 'real' | 'fun';\n gameOptions?: null | string;\n scroll?: boolean;\n extraParams?: string;\n language?: string;\n exitUrlParams?: {\n includePreviousRoute?: boolean;\n exitUrlAsHomepage?: boolean;\n selectedCategory?: string;\n path?: string;\n };\n};\n\nexport const gameUrl = ({\n gameId,\n gameType = 'fun',\n gameOptions = null,\n scroll,\n extraParams,\n language,\n exitUrlParams\n}: TGameUrlProps): string => {\n const lang = document.documentElement.lang;\n const mainDomain = getDomain();\n\n const savedLocation = getSavedLocation('casinoSingleGame', false, false);\n\n const queryParams = clearCasinoPopupQuery();\n\n const [beforeLocationQuery, afterLocationQuery] = savedLocation.split('?');\n let previousUrl = '';\n\n if (exitUrlParams) {\n previousUrl = `${\n beforeLocationQuery ||\n `${\n isMobile()\n ? getMountPath(exitUrlParams.path || '')\n : mountPoint(exitUrlParams.path || '', false, true)\n }/${exitUrlParams.selectedCategory || CUSTOM_CATEGORIES.all.id}`\n }?${\n !afterLocationQuery && queryParams?.size\n ? queryParams.toString()\n : afterLocationQuery || ''\n }`;\n }\n\n const exitUrl = exitUrlParams?.includePreviousRoute\n ? `${window.location.origin}${previousUrl}`\n : exitUrlParams?.exitUrlAsHomepage\n ? window.location.origin\n : window.location.href;\n\n const [urlPathnamePath, urlQueryPart] = exitUrl.split('?');\n\n let filteredExitUrl = exitUrl;\n\n if (urlQueryPart) {\n filteredExitUrl = `${urlPathnamePath}${qs.stringify(\n {\n ...qs.parse(urlQueryPart, {\n ignoreQueryPrefix: true\n }),\n ...{\n accounts: undefined,\n login: undefined\n }\n },\n { addQueryPrefix: true }\n )}`;\n }\n\n const mainUrl = `https://${\n SpringConfigs.CASINO_GAME_URL_PREFIX\n }.${mainDomain}/${!extraParams ? LOUNCH_GAME_URL : ''}?`;\n\n let deviceId = 1;\n\n if (androidWrapperApp) {\n deviceId = deviceIdApp.ANDROID_WRAPPER_APP;\n } else if (iOSWrapperApp) {\n deviceId = deviceIdApp.IOS_WRAPPER_APP;\n } else if (isMobile()) {\n deviceId = 2;\n }\n\n const params: GameURLParams = {\n partnerId:\n SpringConfigs.DECENTRALIZED_CASINO_PARTNER_ID || SpringConfigs.PARTNER_ID,\n devicetypeid: deviceId,\n gameId: gameId,\n language:\n language ||\n GLOBALS.languageConfigs.casinoLangPrefix ||\n CASINO_LANG_EXCEPTIONS[lang] ||\n CASINO_LANG_EXCEPTIONS[lang.slice(0, 2)] ||\n SpringConfigs.CURRENT_LANGUAGE.slice(0, 2),\n openType: gameType,\n isMobile: isMobile(),\n deposit_url:\n SpringConfigs.CURRENT_LANGUAGE_PREFIX ===\n SpringConfigs.DEFAULT_LANGUAGE_PREFIX\n ? `${window.location.origin}${ReservedRoutes.deposit}`\n : `${window.location.origin}/${SpringConfigs.CURRENT_LANGUAGE_PREFIX}${ReservedRoutes.deposit}`,\n browserUrl: window.location.href,\n logoSource: SpringConfigs.SITE_LOGO_URL || undefined,\n exitUrl: filteredExitUrl\n };\n\n if (\n SpringConfigs.CASINO_MOBILE_IFRAME &&\n isMobile() &&\n document.body.style.overflow !== 'hidden' &&\n !scroll\n ) {\n document.body.classList.add('no-scroll');\n }\n\n if (gameType === 'real') {\n const token = JSON.parse(\n LocalStorage.getItem(storageKeyName('account', 'AUTH_DATA'))\n )?.auth_token;\n\n if (token) {\n params.token = token;\n } else {\n isMobile() && showToastError(i18n.t('casino.notLoggedInForPlayingReal'));\n }\n }\n\n let returnedUrl = `${mainUrl}${qs.stringify(params)}`;\n\n if (gameOptions) {\n returnedUrl += `&${gameOptions.split('\"').join('')}`;\n }\n\n if (extraParams) {\n returnedUrl += extraParams;\n }\n\n if (\n SpringConfigs.SHOW_GAMBLING_WITH_LOGO &&\n !SpringConfigs.CASINO_MOBILE_IFRAME\n ) {\n returnedUrl += `&gambcomURL=${SpringConfigs.CASINO_GAMBLING_LOGO_URL}`;\n }\n\n return returnedUrl;\n};\n","import { domainCheck } from 'utils/bom-dom-manipulation/is-subdomain';\nimport { GLOBALS } from './global-variables';\n\nexport const getDomain = (): string => {\n const domain = GLOBALS.appConfigs.domain;\n\n let mainDomain = 'springbuilder.site';\n\n if (domain && !domain.includes(mainDomain)) {\n const { pureDomain } = domainCheck(domain);\n\n if (pureDomain) {\n mainDomain = pureDomain;\n }\n }\n\n return mainDomain;\n};\n","export const domainCheck = (\n url: string\n): { isSubDomain: boolean; pureDomain: string } => {\n url = url.trim();\n\n // Remove protocols\n url = url.replace(/^http:\\/\\/|^https:\\/\\/|^ftp:\\/\\//i, '');\n\n // Remove 'www.' from the start\n url = url.replace(/^www\\./i, '');\n\n const fullDomain = url;\n\n // Extract pure domain, handling ccTLDs like '.co.uk' or '.uk.com'\n const domainMatch = url.match(/([a-z0-9-]+\\.[a-z]{2,}(?:\\.[a-z]{2,})?)$/i);\n const pureDomain = domainMatch ? domainMatch[0] : url;\n\n // Determine if it's a subdomain\n const isSubDomain = fullDomain !== pureDomain;\n\n return {\n isSubDomain: isSubDomain,\n pureDomain: pureDomain\n };\n};\n","import { message } from 'antd';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { configureMessage } from 'configure/configure-message';\n\nexport const showToastWarning = (\n content: string,\n context: HTMLElement | undefined | null = null,\n key?: string\n): void => {\n configureMessage(context, SpringConfigs.ERROR_MSG_DURATION, key || content);\n message.warn({\n content,\n key: key || content\n });\n};\n","import { TooltipPlacement } from 'antd/lib/tooltip';\nimport i18n from 'i18next';\nimport { isRtl } from 'utils/constants/app/rtl';\nimport SpringConfigs from 'utils/constants/swarm/spring-configs';\nimport { TOUR_STEPS_TYPES } from 'utils/constants/tour';\n\nexport const TOUR_ACTIVE_CLASS = 'tourWrapper__active';\n\nexport type TTourResourceKey = 'sportsbook' | 'casino' | 'esport' | null;\n\nexport const SHOW_TOUR_PAGES: { [key: string]: TTourResourceKey } = {\n CASINO: 'casino',\n SPORTSBOOK: 'sportsbook',\n ESPORT: 'esport'\n};\n\nexport const TOUR_PATH_NAMESPACE = (): TTourResourceKey => {\n const pageAlias = decodeURI(window.location.href).replace(/\\/+$/, '');\n\n if (\n SpringConfigs.PAGE_URLS.casino &&\n (pageAlias.includes(SpringConfigs.PAGE_URLS.casino.replace(/\\/+$/, '')) ||\n SpringConfigs.PAGE_URLS.homepageKey === SHOW_TOUR_PAGES.CASINO)\n ) {\n return SHOW_TOUR_PAGES.CASINO;\n }\n\n if (\n SpringConfigs.PAGE_URLS.prematch &&\n (pageAlias.includes(SpringConfigs.PAGE_URLS.prematch.replace(/\\/+$/, '')) ||\n SpringConfigs.PAGE_URLS.homepageKey === SHOW_TOUR_PAGES.SPORTSBOOK)\n ) {\n return SHOW_TOUR_PAGES.SPORTSBOOK;\n }\n\n if (\n SpringConfigs.PAGE_URLS.esport &&\n (pageAlias.includes(SpringConfigs.PAGE_URLS.esport.replace(/\\/+$/, '')) ||\n SpringConfigs.PAGE_URLS.homepageKey === SHOW_TOUR_PAGES.ESPORT)\n ) {\n return SHOW_TOUR_PAGES.SPORTSBOOK;\n }\n\n return null;\n};\n\nconst placement = isRtl ? 'leftTop' : 'rightTop';\n\ntype TTourSliderReturnProps = {\n active: boolean;\n step: number;\n selector: TOUR_STEPS_TYPES;\n placement: TooltipPlacement;\n modal: {\n title: string;\n description: string;\n };\n};\n\ntype TTourItemGenerateStructureProps = {\n index: number;\n currentActiveTourStep: number;\n selector: TOUR_STEPS_TYPES;\n placement: TooltipPlacement;\n};\n\nexport const TOUR_STEPS_LIST: Record<\n TOUR_STEPS_TYPES,\n ({\n index,\n currentActiveTourStep,\n selector,\n placement\n }: TTourItemGenerateStructureProps) => TTourSliderReturnProps\n> = {\n [TOUR_STEPS_TYPES.yourPreferences]: ({\n index,\n currentActiveTourStep,\n selector,\n placement\n }: TTourItemGenerateStructureProps): TTourSliderReturnProps => ({\n placement,\n active: currentActiveTourStep === index,\n step: index,\n selector,\n modal: {\n title: i18n.t('generic.yourPreferencesSection'),\n description: i18n.t('generic.yourPreferencesSectionDescription')\n }\n }),\n [TOUR_STEPS_TYPES.addSports]: ({\n index,\n currentActiveTourStep,\n selector,\n placement\n }: TTourItemGenerateStructureProps): TTourSliderReturnProps => ({\n placement,\n active: currentActiveTourStep === index,\n step: index,\n selector,\n modal: {\n title: i18n.t('generic.addSport'),\n description: i18n.t('generic.addSportDescription')\n }\n }),\n [TOUR_STEPS_TYPES.addCompetitions]: ({\n index,\n currentActiveTourStep,\n selector,\n placement\n }: TTourItemGenerateStructureProps): TTourSliderReturnProps => ({\n placement,\n active: currentActiveTourStep === index,\n step: index,\n selector,\n modal: {\n title: i18n.t('generic.addCompetitions'),\n description: i18n.t('generic.addCompetitionsDescription')\n }\n }),\n [TOUR_STEPS_TYPES.addCompetitionsTopMatches]: ({\n index,\n currentActiveTourStep,\n selector,\n placement\n }: TTourItemGenerateStructureProps): TTourSliderReturnProps => ({\n placement,\n active: currentActiveTourStep === index,\n step: index,\n selector,\n modal: {\n title: i18n.t('generic.addCompetitions'),\n description: i18n.t('generic.addCompetitionsDescription')\n }\n }),\n [TOUR_STEPS_TYPES.addGameCards]: ({\n index,\n currentActiveTourStep,\n selector,\n placement\n }: TTourItemGenerateStructureProps): TTourSliderReturnProps => ({\n placement,\n active: currentActiveTourStep === index,\n step: index,\n selector,\n modal: {\n title: i18n.t('generic.addGameCards'),\n description: i18n.t('generic.addGameCardsDescription')\n }\n }),\n [TOUR_STEPS_TYPES.addMarketCards]: ({\n index,\n currentActiveTourStep,\n selector,\n placement\n }: TTourItemGenerateStructureProps): TTourSliderReturnProps => ({\n placement,\n active: currentActiveTourStep === index,\n step: index,\n selector,\n modal: {\n title: i18n.t('generic.addMarketCards'),\n description: i18n.t('generic.addMarketCardsDescription')\n }\n }),\n [TOUR_STEPS_TYPES.myCasino]: ({\n index,\n currentActiveTourStep,\n selector,\n placement\n }: TTourItemGenerateStructureProps): TTourSliderReturnProps => ({\n placement,\n active: currentActiveTourStep === index,\n step: index,\n selector,\n modal: {\n title: i18n.t('generic.yourFavoriteGames'),\n description: i18n.t('generic.yourFavoriteGamesDescription')\n }\n }),\n [TOUR_STEPS_TYPES.myCasinoProviderItem]: ({\n index,\n currentActiveTourStep,\n selector,\n placement\n }: TTourItemGenerateStructureProps): TTourSliderReturnProps => ({\n placement,\n active: currentActiveTourStep === index,\n step: index,\n selector,\n modal: {\n title: i18n.t('generic.addFavoriteGameProvider'),\n description: i18n.t('generic.addFavoriteGameProviderDescription')\n }\n }),\n [TOUR_STEPS_TYPES.myCasinoGameCard]: ({\n index,\n currentActiveTourStep,\n selector,\n placement\n }: TTourItemGenerateStructureProps): TTourSliderReturnProps => ({\n placement,\n active: currentActiveTourStep === index,\n step: index,\n selector,\n modal: {\n title: i18n.t('generic.addFavoriteCasinoGame'),\n description: i18n.t('generic.addFavoriteCasinoGameDescription')\n }\n })\n};\n\nexport const detectTourMethod = (\n selector: TOUR_STEPS_TYPES,\n index: number,\n currentActiveTourStep: number\n) => {\n return TOUR_STEPS_LIST[selector]({\n index,\n currentActiveTourStep,\n selector,\n placement: [\n TOUR_STEPS_TYPES.addGameCards,\n TOUR_STEPS_TYPES.addMarketCards\n ].includes(selector)\n ? 'bottom'\n : placement\n });\n};\n","import { timeoutDuration } from 'utils/constants/dateInfo/time-numbers';\n\nconst timers: Record = {};\n\nexport function debounce(\n debounceId: string,\n func: (...args: T) => void,\n timeout = timeoutDuration.DURATION_300\n): (...args: T) => void {\n return (...args: T) => {\n clearTimeout(timers[debounceId]);\n timers[debounceId] = setTimeout(() => {\n func(...args);\n }, timeout);\n };\n}\n"],"names":["Container","styled","span","withConfig","displayName","componentId","GameNameRedirection","_ref","gameId","gameName","isLoading","setIsLoading","useState","t","useTranslation","history","useHistory","dispatch","useDispatch","timeStamp","useSelector","getTimeFiltersData","tournamentSportIds","getTournamentSportIds","_jsxs","onClick","getGameData","executeCommand","RidGenerator","gForCommand","sports","regions","competitions","game","id","Number","data","_serializedData$games","serializedData","serializeSwarmData","games","length","isEsport","type","SpringConfigs","PAGE_URLS","esport","isLive","isRacing","RACING_SPORT_IDS","includes","redirectBase","live","racing","prematch","isLongPath","isMobile","alias","SPORTSBOOK_MOUNT_PATH","ERacingPageTypes","UPCOMING","Object","keys","RACING_SPORT_ALIAS","find","key","finalPath","replace","window","location","href","pathname","search","setMustClose","shouldRedirect","sbRedirect","_serializedData$sport","pathnameBase","split","origin","setTimeFilterData","option","date","count","undefined","name","setRegionCompData","setGames","setTournamentSportIds","push","errorKey","showToastError","title","children","_jsx","_Fragment","map","elem","Loading","size","EIconSize","_16","className","EBetBuilderModalActions","BetBuilderModalActions","open","payload","fireEvent","OPEN_BET_BUILDER_MODAL","updateProps","UPDATE_BET_BUILDER_MODAL_PROPS","close","CLOSE_BET_BUILDER_MODAL","BUTTON_TEXT_MAPPING","userActiveStep","USER_ACTIVE_STEP_STATE_VALUE_0","USER_ACTIVE_STEP_STATE_VALUE_5","MESSAGE_MAPPING","USER_ACTIVE_STEP_STATE_VALUE_3","USER_ACTIVE_STEP_STATE_VALUE_4","USER_ACTIVE_STEP_STATE_VALUE_7","USER_ACTIVE_STEP_STATES_TO_SHOW_STATUS_BAR","k","ESignicatVerificationActions","AddToBetslipLink","lazyImport","AddToBetslipLinkCheck","queries","useSearchParams","useLocation","changeOddFormat","useChangeOddFormat","isAddToBetslip","setIsAddToBetslip","useEffect","IFRAME_SPORTSBOOK","odds_type","format","arrayFindBy","ODD_FORMATS","value","ReservedRoutes","addToBetslip","LocalStorage","getItem","storageKeyName","deposit","path","Suspense","fallback","DeRealityCheck","lazy","CheckDeRealityCheck","isLoggedIn","getIsLoggedIn","SHOW_REALITY_CHECK","CommunityChatContent","CommunityChat","communityChatAvailable","document","querySelector","COMMUNITY_CHAT_ENABLED","Portal","CurrencyRelatedLogic","useGetCurrencyConfigs","currencyId","useCurrency","useLayoutEffect","setRoundingLoading","getCurrencyConfigs","dataObj","currency","_currency$Object$keys","rounding","setRounding","user","getUser","pending","switchCurrency","event","action","CRYPTO_CURRENCIES_MAPPING","FTNF","addQuery","selected_wallet","saveCurrentLocation","getPathname","accounts","login","addEventListener","removeEventListener","FetchGenericSettings","prepareFavoritesInitialData","FavoritePersonalization","preparedData","newData","deepMerge","accountSettings","personalizationGenericSettings","shouldMergeInFirst","applyEmptyArraysAndObjects","setPersonalizedGenericSettings","prefetcherCalled","IconsPrefetcher","prefetchIcons","iconUrl","UtilsIcons","createUrl","lib","theme","iconRemoveUrl","prefetch","InitializeFirebase","WRAPPER_APP","token","getCookie","store","setFirebaseToken","then","async","initAndGetFirebaseToken","error","console","LoginRelatedLogic","username","setUsername","password","setPassword","openCasinoGame","useOpenGameCustomCode","openGame","useOpenCasinoGame","mode","fetchGamesByIds","loginCallback","useLoginCallback","rememberMe","SB","historyPush","sbLogin","pass","markAsReadNotification","PopupPortal","modals","usePopup","modal","PostMessageRelatedLogic","searchObject","qs","ignoreQueryPrefix","message","opener","postMessage","status","RedirectFromStatistics","hash","StatisticsRedirectPath","searchParams","slice","indexOf","setItem","JSON","stringify","lang","STATISTICS_LANG","language","getWithLangMountPath","RedirectToSingleGameViewContent","RedirectToSingleGameView","useSbRouteMatch","Route","getMountPath","RedirectToSingleViewRoute","SumSubKYCVerification","SumSubKYCVerificationCheck","sumSubModalOpen","getSumSubModalOpen","accountParams","useFetchAccountParams","sumSubWithdrawalAction","active_step","USER_ACTIVE_STEP_VALUE_37","active_step_state","Tour","TourWrapper","tourWrapperActive","tourMethods","setTourMethods","tourSteps","getTourSteps","tourModalVisible","getTourModalVisible","tourStepsInitialData","gettourStepsInitialData","resource","TOUR_PATH_NAMESPACE","Boolean","values","step","active","isActiveTour","USER_PERSONALIZATION_ENABLED","resources","useMemo","_tourStepsInitialData","_tourStepsInitialData2","currentActiveTourStep","finished","skipped","reduce","list","selector","index","detectTourMethod","setTourSteps","useDebounce","tours","querySelectorAll","forEach","tour","tourStepType","getAttribute","Set","TOUR_STEPS_TYPES","addCompetitions","filter","addCompetitionsTopMatches","DEBOUNCE_DELAY","_3000","useTour","TurnstileCheck","turnstileEnabled","getTurnstileEnabled","container","useRef","wrapper","ref","GlobalIcon","current","style","display","innerHTML","IS_RTL","BetBuilderModal","memo","betBuilderModalVisible","fixtureId","toggleBetBuilderModal","gameTitle","sportId","closeBetBuilderModal","useCallback","e","stopPropagation","Modal","maxWidth","width","zIndex","ZINDEX_HIGH_5","align","renderInBody","padding","wrapperContainerPadding","centered","closeIcon","color","visible","onCancel","maskStyle","ZINDEX_HIGH_6","borderRadius","bodyStyle","textAlign","image","BetBuilderContent","BetBuilderModalGeneric","modalProps","setModalProps","useEventbus","_ref2","prevProps","DoBetRecaptchaComponent","DoBetRecaptcha","getRecaptchaEnabled","GeolocationFailedPopup","modalVisible","setModalVisible","EGeolocationFailedPopup","ShowPopup","closable","ZINDEX_MODAL","backgroundColor","ModalWidth","MOBILE_350","DESKTOP_420","dangerouslySetInnerHTML","__html","ModalButtons","Button","fullwidth","KYCVerificationStatusBarComponent","KYCVerificationStatusBar","SHOW_KYC_STATUS_BAR","verificationKYCStatus","LoyaltyDataFetcher","LoyaltyDataFetcherWrapper","partnerConfigs","getPartnerConfigs","isLoyaltyV2","is_using_loyalty_program","is_loyalty_v2","isLegitimuzVerificationType","KYC_VERIFICATION_TYPE","EKycType","Legitimuz","SignicatVerificationBeforeActions","verificationParams","setVerificationParams","confirmUrl","setConfirmUrl","Verify","shouldVerify","shouldVerifyByEmail","email","commandName","CommandNames","GET_LEGITIMUZ_ACTION_CONFIRMATION_URL","GET_SIGNICAT_ACTION_CONFIRMATION_URL_BY_EMAIL","GET_SIGNICAT_ACTION_CONFIRMATION_URL","requestParams","swarmCommand","details","IsConfirmed","ConfirmationUrl","Failed","ConfirmationUrlQr","Verified","callbackActionParams","err","errMessage","result_text","interval","setInterval","_ref3","clearInterval","loading","disabled","WrongLoginAttemptsUnlockPopup","form","_Form","useForm","code","successResetModalOpen","setSuccessResetModalOpen","signicatVerificationErrKey","setSignicatVerificationErrKey","onSubmit","params","avoidVerificationCHeck","FACIAL_VERIFICATION_BEFORE_ACTIONS","SEND_WRONG_LOGIN_ATTEMPTS_RESET_CODE","showToastSuccess","resetFields","EWrongLoginAttempts","VERIFY_WRONG_LOGIN_ATTEMPTS_RESET","confirmation_code","validateFields","ModalWithInput","singleButton","description","Image","Input","SolidFormItem","hasFeedback","rules","required","validator","Promise","reject","resolve","placeholder","onChange","onFinish","maskClosable","direction","NewDepositPopup","depositPopupVisible","setDepositPopupVisible","paymentData","setPaymentData","activeGames","getActiveGames","isThereAnyActiveGame","shouldDisplay","parse","paymentDataStorage","amount","removeItem","ZINDEX_HIGH_2","body","classList","remove","formatAmountWithCurrency","block","AgePopup","ENOUGH_OLD","localStorage","setVisible","visibleNotEnoughOld","setVisibleNotEnoughOld","CONFIRM_MODAL_PADDING","_0","CONFIRM_MODAL_WIDTH","_420","ZINDEX_TOOLTIP","InitializeOneSignal","InitializeFastTrack","NotificationsRedirectionsHandler","HooryRelatedLogic","BetModalCheck","Iovation","GamblingAreas","CheckHomeworkData","LogoutRelatedLogic","IframeSportsbookLogic","CheckUserPersonalization","CheckGeoComply","BrazilMigrateKYC","COLOR_SET","buttonsColor","buttonsTextColor","themeColor","themeTextColor","pinnedWidgetColor","pinnedWidgetTextColor","Generic","isDarkMode","getIsDarkMode","setIsDarkMode","_history","fromNext","themingChangeColors","styleElem","getComputedStyle","colorsArray","colorSet","getPropertyValue","_window$__dataspot__","_window$__dataspot__$","__dataspot__","trackThemingChange","call","themeColors","PUSH_NOTIFICATIONS_ENABLED","QueryRoute","component","GAMBLING_AREAS","MOCKED_DATA","VERIFY_AGE_POPUP","IS_BET_SHARING_AVAILABLE","SESSION_LIFE_TIME","INACTIVITY_LOGOUT_ENABLED","FIREBASE_ENABLED","HOMEWORK_ENABLED","HOORY_ENABLED","IOVATION_ENABLED","ONE_SIGNAL_APP_ID","FAST_TRACK_BRAND","GEO_COMPLY_ENABLED","SHOW_ADDITIONAL_CHECKBOX_FOR_LOGIN","VERIFICATION_TYPE","onAfterLoad","onBeforeLoad","_32","userGroups","inPopup","authData","isTwoFactorPopupVisible","setIsTwoFactorPopupVisible","qrCodeOrigin","setQrCodeOrigin","regFieldsData","getRegFieldData","personalId","field","formType","updateAuthData","storeUser","terms_and_conditions_version","setTermsAndConditionVersion","updateUser","editForm","showOnEditProfile","personalIdType","sendCPFAsDocNumber","getUserAllNotifications","useUpdateUser","userData","_authData$current","setCookieLoginCredentials","jwe_token","setUserData","last_login_date","Math","floor","Date","getTime","MILLISECONDS_IN_SECOND","setLoginLimit","session_duration","SECONDS_PER_MINUTE","active_time_in_casino","SessionStorage","afterSignIn","AfterSignIn","setAfterExecutionCallback","isActionsExist","getSavedLocation","splitLocation","parsedQuery","updatedLocation","setUserLoggedIn","CookieExpiration","DAYS_15","executeActions","auth_token","user_id","qr_code_origin","authentication_status","ADD_INFO_AFTER_LOGIN","setShowAdditionalInfo","checkAndStoreFcmToken","sendPostMessage","VAIX_IFRAME_ID","popupIframe","sendRestoreLoginPostMsg","loginState","LOGIN_LIMIT_POPUP","PLAYER_ACTIVITY_CHECK","setUserLoginLimitStartTimeLS","Description","p","enableAutocomplete","classname","cc","ModalPadding","MOBILE_12","DESKTOP_24","DESKTOP_468","autoComplete","htmlType","CustomHeader","iconLib","iconName","iconTheme","_24","_20","MAX_1272","wrapperPadding","preventScrollDisable","hideBorder","destroyOnClose","fixBody","customHeader","contentPadding","wrapClassName","getContainer","placement","fullPage","footer","closeIconStyle","rest","openedModals","getOpenedModals","getBetslipOpen","modalId","uuidv4","_preventScrollDisable","usePopupScrollDisable","updateOpenedModal","updateType","openedModalsCopy","setOpenedModals","CustomModal","WRAPPER_8","onClose","_72","props","flexDirection","deviceActionManager","vibrate","hapticMessage","_window","_window$webkit","_window$webkit$messag","iOSWrapperApp","webkit","messageHandlers","triggerHaptic","useAccountLogout","clearDataFromStorage","firebaseToken","getFirebaseToken","oneSignalSubId","getOneSignalSubId","additionalParams","fcm_token","subscription_id","setOneSignalSubId","logout","_window$median","addQueryInString","register","removeUserData","setUserOptIns","setUserNotifications","setClientGamingStateInfo","LS","deleteCookie","refreshWhenLoggedIn","mustRefreshForSessionVisibility","reload","median","auth","delete","removeUser","accountLogout","switchMultiAccount","singleSignIn","IS_MULTI_ACCOUNT_DISABLED","updateUserData","super_bet","setPendingSuperBets","updateOpenBets","authCommand","command","MARK_AS_READ_NOTIFICATION","rid","useUserNotifications","openPopupTriggering","popupTriggeringRules","popupOpened","comparision","_data$key$Page","rule","ClientId","Id","Page","Value","openedPopupsList","currentLanguageId","GLOBALS","languageConfigs","_window$openPopup","openPopup","Alias","Comparison","triggeringUrlValue","triggeringUrlRule","enableTriggeringRule","triggeringTime","_window$openPopupsWit","_window2","triggeringRuleIsWorked","openPopupsWithInterval","setCashbackData","tickets","entries","cashbackData","ticketId","ticket","cashback","Amount","RewordType","markAsRead","bonusType","setCashbackNotifications","setLoyaltyData","loyaltyData","LevelUpBonus","setLoyaltyNotifications","gForSubscribe","subscribeToUserNotifications","cashout","updateBetTickets","unsubscribeCommand","useBetslipNotEmptyPopup","showPopup","onConfirm","modalAlert","text","successBtn","cancelBtn","queryParams","URLSearchParams","has","toString","oddFormat","getOddFormat","ladderLoaded","getLadderLoaded","updateOddFormat","loadLadder","setOddsFormat","useBalance","useBonusBalance","getUseBonusBalance","accountBalanceAvailable","useAccountBalanceAvailable","isFrenchFreeBetEnabled","getIsFrenchFreeBetEnabled","_user$bonus_balance","balance","bonus_balance","bonus_win_balance","frozen_balance","bonus_money","checker","allLsBets","getAllLsBets","quickBetEnabled","getQuickBetEnabled","partnerConfig","sport_bonus","useCheckStakeBalance","debounceDuration","arguments","timeoutDuration","DURATION_500","isFreeBetEnabled","getIsFreeBetEnabled","useFrenchFreeBet","editBet","getEditBet","debounceId","getToDeposit","openParentPage","wallet","debounce","contextId","stake","callback","isBetMinLimitStake","checkMinBetStakeLimit","betLimitMinStakeForEditBet","min_bet_stakes","minLimit","min_bet","thousandSeparator","showToastWarning","getElementById","isInsufficient","checkInsufficientBalance","balanceError","cursor","effect","delay","deps","isDebouncing","setIsDebouncing","handler","setTimeout","clearTimeout","initialModalsValue","currentModals","globalSetModals","_data$0$id","globalModalAlert","_removeFromModal","_currentModals","findIndex","item","res","splice","singletonHook","setModals","_data$closable","ZINDEX_HIGH_1","icon","_data$cancelBtn","isRtl","condition","scrollPositionRef","timer","overflow","scrollY","touchAction","documentElement","position","DURATION_200","removeProperty","setOverflowInterval","DURATION_100","scrollTo","ENewCasinoFailedDataMessage","ENewCasinoGamesFetchingParamsKey","EPlayerActivityCheckerActions","BetBuilderStakeInputDesktop","BetBuilderStakeInputMobile","BetBuilderStakeInput","priceTypes","BookingModal","BetBuilderSuccessBetModal","BB_IFRAME_WRAPPER_ID","showTitle","scale","leftSidebarOpenCloseTrigger","getLeftSidebarOpenCloseTrigger","scaleValue","setScaleValue","isSuccessModalOpen","setIsSuccessModalOpen","bookIds","setBookIds","bookingModalVisible","setBookingModalVisible","placeBetLoading","setPlaceBetLoading","bookBetLoading","setBookBetLoading","submitDisabled","setSubmitDisabled","stakeAmount","setStakeAmount","decimalPrice","setDecimalPrice","betslipUid","setBetslipUid","betBuilderData","setBetBuilderData","priceList","setPriceList","checkStakeBalance","betBuilderUrl","generateBetBuilderUrl","BET_BUILDER_URL","odds","culture","BET_BUILDER_LANGUAGE_MAPPING","useGenerateBetBuilderUrl","fields","UseGenerateBetBuilderFooterFields","odd","formatAmount","useFormatAmount","taxes","getTaxes","roundingLoading","getRoundingLoading","basicTaxParams","isEachWay","eventId","sportIds","basicTaxesResult","calculateBasicTaxes","rangeTaxParams","result","possibleWin","rangeTaxResult","calculateRangeTaxes","_taxes$basic","_taxes$basic2","_basicTaxesResult$tax","isTaxForStake","basic","ETaxTypes","STAKE_TAX","BetslipCalculationField","addSeparatorAndCut","isTaxable","_taxes$basic3","_taxes$basic5","percent","_taxes$basic4","translation","taxAmount","POSSIBLE_WIN_TAX","POSSIBLE_WIN_TAX_WITHOUT_STAKE","_taxes$basic6","_basicTaxesResult$tax2","bankersRounding","_taxes$basic7","_basicTaxesResult$tax3","_rangeTaxResult$resul","_rangeTaxResult$taxes","isTaxesAvailable","isTotalReturnAlreadyDisplayedOnFooter","roundMultipleAmount","possibleWinWithoutRangeTax","_rangeTaxResult$taxes2","_rangeTaxResult$taxes3","_rangeTaxResult$taxes4","_rangeTaxResult$taxes5","_rangeTaxResult$taxes6","rangeTaxedPossibleWinWithoutStakeTaxAmount","rangeTaxAmount","rangeTaxedPossibleWinTaxAmount","taxPercent","_rangeTaxResult$resul2","daraTestId","onBookBet","useBookBet","currentType","BET_BUILDER","NAME","totalStake","setSystemMinCount","betslipRef","resetBetslip","changeStakeAmount","removeComma","roundAmount","handlePlaceBet","disable","SPORT_CAST_CREATE_BET","betslip_uid","checkPlayerActivity","inputDynamicProps","maxLength","SEPARATOR","BETSLIP_STAKE_LIMIT","handleSuccessModalAction","_parsedData$betBuilde","_parsedData$betBuilde2","_parsedData$betBuilde3","parsedData","_parsedData$betBuilde4","_parsedData$betBuilde5","_parsedData$betBuilde6","Selection","PriceDetails","DecimalPrice","_document$getElementB","containerWidth","clientWidth","noSocialSharing","border","minWidth","transform","transformOrigin","height","src","_Row","_Col","xl","ColSizes","SIZE_12","xs","SIZE_24","Divider","distance","BetslipCalculationResult","TERMINAL_MODE","handleBookBet","randomNumberForAddBlocker","rand","mask","afterClose","renderCloseIconInMask","modalContainerRef","handleClose","closeModal","timeout","modalContent","customModal__notCentered","customModal__left","customModal__right","customModal__top","customModal__bottom","handleMaskClick","rootId","orientation","margin","forwardRef","label","createTestId","_Input","RESOLVE_AFTER_SIGNIN_DURATION","UtilsCasino","checkIsGameAlreadyCached","_cachedGames$gameId","getState","newCasinoStore","cachedGames","constructAndRedirectToGameView","view","ECasinoGameView","SINGLE","selectedCategory","tournament","gameIndexToChange","queriesToRemove","isUserLoggedIn","UtilsAccount","checkIsUserLoggedIn","transitionToGameUrl","saveUrl","showInUrl","firstGameMode","_game$cats$","gameCategorySection","DECENTRALIZED_CASINO_URL","cats","UNCATEGORIZED","providerSection","fromAllCapitalizedToDasherized","provider_title","gameSection","extearnal_game_id","categorySection","CUSTOM_CATEGORIES","all","queryObj","queriesToRemoveObj","acc","query","relativePath","currentPageArea","getCurrentPageArea","queryObject","casino","CASINO_MOUNT_PATH","join","hasPopup","gameRoute","mountPoint","tournamentId","pushState","setSelectedCasinoGame","addCachedGameId","batchActions","setCachedGamesInactive","addCachedGame","setCachedGameMode","browserHistory","MULTI","fromEntries","multiview","CASINO_MULTIVIEW_ENABLED_QUERY_VALUE","gameToChange","extractGameInfoFromSearchParams","setCachedGameInactive","ECasinoGameMode","FUN","queryToUpdate","encodeGameIdWithPrefix","order","normalizeStringifiedQuery","currentGameInfo","getCasinoParams","ECasinoGameViewOrder","FIRST","gameExternalId","SECOND","addQueryPrefix","REAL","CASINO_MOBILE_IFRAME","gameUrl","gameType","gameOptions","game_options","param","openLoginView","transitionFn","bind","appendAction","AFTER_SIGN_IN_ACTION_TYPES","CONSTRUCT_CASINO_VIEW_URL","reconstructAndRedirectToGameView","callbackAfterSignin","routeToSaveInStorage","saveRouteKey","RECONSTRUCT_CASINO_VIEW_URL","decodeGameIdWithPrefix","isNaN","parseInt","stringifiedQuery","splittedQuery","firstGameIndex","startsWith","endsWith","secondGameIndex","temp","getRouteLength","_window$getPathname$s","_window$getPathname$s2","BetslipCalculationResultValue","BetslipCalculationResultPortal","_attributes$className","attributes","Skeleton","constructor","attributesOrLoading","_loading","this","i18n","generateSimpleId","_formatAmount","prevId","formatPrice","PRICE_SEPARATOR","HIDE_TRAILING_ZEROES","appData","afterSignInFetcherId","hookId","useId","stakes","getAllStakes","afterSignInActions","getAfterSignInActions","showBetslipNotEmptyPopup","system","getSelectedSystem","betslipPresent","getBetslip","bookId","setBookId","bookingProgress","setBookingProgress","getByBookIdProgress","setGetByBookIdProgress","onBookBetCallback","onBookBetCallbackError","getBets","betType","BET_TYPES","coeficient","single","BetType","Selections","SelectionId","Price","TYPE","BetSlipUid","general","SYSTEM","SystemMinCount","promises","EBetslipBetType","bet","bookBet","booking_id","selection_id","CHAIN","MULTIPLE","betTypeKey","bookBetId","setMustOpen","getEvents","afterSignInActionsCopy","assign","setAfterSignInActions","onSubmitBookId","getEventsByBookingId","_data$details$bets$0$","eventsAndGames","bets","selections","_ref4","match_id","getEventsReadyForBetslip","betslipEventsData","sport","betslipIsEmpty","afterSubmitBookId","errorData","msg","bookingData","originalEventsLength","betslipReadyEvents","createBetslipEventsFromSwarm","match_ids","bet_type","betslipEventsToSort","matchId","_ref5","system_min_count","selectedSystem","addBetSlipMultipleEvents","setSystemMinCombinationsCount","SYSTEM_BET_MIN_EVENTS_COUNT","dispatchBetslipBetType","BETSLIP_BET_TYPES_BY_BET_NUMBER_TYPE","calculateAndDispatchUpdates","GENERAL_FIELD_KEY","setIsBookingMode","setBookBetIdInLs","accountJsonQuery","getAccountJsonQuery","useQuery","queryKey","EAccount","queryFn","ACCOUNT_PARAMS","retry","CYPRUS_ACCOUNT_TYPE","externalContext","useCasinoOpenGameConfigsValues","routeMatchCategory","_routeMatchCategory$p","onOpenGame","category","CasinoOpenGameConfigsContext","createContext","CasinoOpenGameConfigsProvider","Provider","useContext","afterExecutionCallback","setFinalExecutionCallback","finalExecutionCallback","promise","actions","removeActions","successAction","func","_instance","getMessageContextBasedOnBetslipOpenState","messageContext","_Store$getState$betSl","isBetslipOpen","Store","betSlip","betslipOpen","isFloatingBetslipEnabled","IS_BETSLIP_FLOATING_ENABLED","betCommand","commandObj","updateCallback","callbackError","connectingWS","socket","sendCommand","oddChangeHandlerCallbackWrapper","response","setAcceptBet","StatusCode","Data","isStatusCode","REPLACE_EDIT_BET_TRANSLATIONS","ERROR_CODE_TIMEOUT_1800","_Data$ErrorData","_Data$ErrorData2","changedOdd","ErrorData","old_price","OldPrice","new_price","ActualPrice","Array","isArray","oddsChangedText","convert","doBet","_Store$getState$betSl2","_callback","sendCreateBet","sendDoBet","isBonusMoney","sys_bet","bonus_id","predefined_multiple_id","source","each_way","location_token","additional_amount","old_bet_id","betId","DO_BET","MODE_TYPES","ODD_NOT_CHANGE","odd_type","is_bonus_money","is_free_bet_money","freeBetStore","freeBets","_data$details","setSelectedProfitBoostEventId","setFreeBetSelectedEventId","selectedFreeBetId","removeFreeBetItem","is_superbet","SwarmSuccessMessages","queryClient","getQueryData","_data$details2","_data$details3","AppendCustomCodes","APPEND_CUSTOM_CODE_BETSLIP","appendCustomCode","CUSTOM_CODE_BETSLIP","bet_id","first_name","last_name","btag","userId","phone","CREATE_BETS","Source","EachWay","Events","event_id","Coeficient","price","OddType","Type","AdditionalAmount","IsFreeBetMoney","GeoLocationToken","OldBetId","_data$Data","_data$Data$","_data$Data$2","_data$Data$3","getV3Freebet","GET_FREEBETS_FOR_BETSLIP_V3","GET","CommandSource","CURRENCY_CONFIG","what","where","subscribe","BOOK_BET","tid","cashdesk_id","GET_EVENTS_BY_BOOKING_ID","eventsAndGameIds","callBackError","getOnlyEventIds","gameIds","eventIds","entity","events","BETTING","region","competition","market","counterCounterOfferAnswer","acceptOffer","SUPER_BET_ANSWER","accept","checkBetStatus","CHECK_BET_STATUS","ids","_params","showErrorMessage","useExternalId","decentralized","partnerId","DECENTRALIZED_CASINO_PARTNER_ID","partner_id","PARTNER_ID","is_mobile","casinoLangPrefix","by_key","use_webp","IS_WEBP_SUPPORTED","country","CURRENT_COUNTRY_CODE","external_id","url","CasinoCommandNames","CASINO_URL","axios","SUCCESS_STATUS_CODE","externalGameId","types","realMode","funMode","icon_1","icon1","icon_2","icon2","icon_3","icon3","provider","provider_badge","show_as_provider","categories","statusText","catch","setGamesNotifications","gameInfo","shouldSubscribe","SET_GAMES_NOTIFICATIONS","game_list","event_name","is_subscribed","GET_USER_ALL_NOTIFICATIONS","resp","setCasinoOriginalCategories","NewCasinoActionTypes","SET_CASINO_ORIGINAL_CATEGORIES","setEnhancedParams","enhancedParams","SET_ENHANCED_PARAMS","setTotalCount","totalCount","SET_GAMES_TOTAL_COUNT","setGamesConfigs","gamesConfigs","SET_GAMES_CONFIG","setCasinoCustomCategories","SET_CASINO_CUSTOM_CATEGORIES","setCasinoOriginalCategoriesSet","SET_CASINO_ORIGINAL_CATEGORIES_SET","setCasinoOriginalCategoriesSetLeftSideBar","SET_CASINO_ORIGINAL_CATEGORIES_SET_LEFT_SIDEBAR","setCategoryProviderIds","SET_CASINO_CATEGORY_PROVIDER_IDS","setCanRequestCategoriesNestedData","SET_CAN_REQUEST_CATEGORIES_NESTED_DATA","setCanRequestProvidersNestedData","SET_CAN_REQUEST_PROVIDERS_NESTED_DATA","setLastPlayedCatSettings","SET_LAST_PLAYED_CAT_SETTINGS","setCategoryCustomIds","catCustomIds","SET_CATEGORIES_CUSTOM_IDS","ADD_CACHED_GAME","ADD_CACHED_GAME_ID","setCachedGameActive","SET_CACHED_GAME_ACTIVE","SET_CACHED_GAME_INACTIVE","excludeId","SET_CACHED_GAMES_INACTIVE","setCachedGameOrder","SET_CACHED_GAME_ORDER","SET_CACHED_GAME_MODE","getCasinoStore","getSelectorRoot","getCasinoCategories","getCasinoOriginalCategories","createSelector","original","getEnhancedParams","getGamesConfigs","getCasinoCustomCategories","custom","getCasinoOriginalCategoriesSet","originalSet","getCasinoOriginalCategoriesSetLeftSideBar","originalSetLeftSideBar","getCanRequestCategoriesNestedData","getCanRequestProvidersNestedData","getLastPlayedCatSettings","getCategoryCustomIds","getCachedGames","gameData","getSocket","getJackpots","getIsConnected","getSpecElems","fireBaseToken","storeFcmToken","getUserName","getUserAvatarName","substr","toUpperCase","ITEMS_WITH_BADGE","String","dayjs","unix","getPermissibleOdds","permissibleOddsCommand","GET_PERMISSIBLE_ODDS","Config","decimalFormatRemove3Digit","roundDecimalCoeficients","ODD_ROUNDING","useLadderForFractionalFormat","cache","priceDecimal","ladder","ladderIsLoaded","val","formatID","_ODD_FORMATS$find","Infinity","parseFloat","cacheKey","round","converted","fValue","iValue","rValue","pow","CALCULATE_POWER_OF_10","toFixed","decimalValue","fracFL","dec","frac","issetPriceArray","Numerator","Denominator","i","dec2fracFromLadder","decVal","Znxt","Dnxt","Nnxt","recCalc","Zcur","Dcur","Dprev","dec2frac","fractionalValue","americanValue","hongKongValue","malayValue","indoValue","convertLog","roundedConverted","_String","_String$split","_String$split$","price_decimals","leftSideBarCasinoMain","matchCasinoUrl","RegExp","match","LEFT_SIDE_BAR","LEFT_SIDE_BAR_CASINO","recentPlayedParams","catId","category_id","isShowGamesCountBadge","gamesCount","games_count","FAVORITE","SELECT_PROVIDERS_TYPE","clearCasinoPopupQuery","querySearch","chainId","USDT","USDC","ETH","BUSD","BNB","SHIB","FTN","DAI","USDT_T","USDB","fixedDigitForLolik","ALL_CRYPTO_CURRENCIES","DEFAULT_CRYPTO_CURRENCY","DEFAULT_FIAT_CURRENCY","DEFAULT_FIAT_CURRENCY_ID","CURRENCY_NAME_LIST_COUNT","PaymentMethodTypes","POST","IFRAME","FORM_DRAW","MESSAGE","StatusUrlNames","CANCEL","FAIL","PENDING","SUCCESS","DepositStatusMessages","WithdrawStatusMessages","PaymentStatusValues","HIDE_WITHDRAWAL_ALLOWED_DATE","TWO_WALLET_TYPES","IS_ACTIVE_TWO_WALLET","CASINO_SPORTSBOOK_SWITCHER","IS_TWO_WALLET_ACTIVE","IS_ACTIVE_TWO_WALLET_SPORT","EBankVerificationTypes","MAX_MONTH_VALUE","YEAR_FORMAT_FOUR_DIGITS","TEST_LENGTH","_12","_350","CASHOUT_AROUND","POS_WIN_AND_CASH_OUT_MIN_DIFFERENCE","EPaymentStatusValuesTypes","USER_ACTIVE_STEP_VALUE_21","USER_ACTIVE_STEP_VALUE_27","USER_ACTIVE_STEP_VALUE_33","USER_ACTIVE_STEP_VALUE_35","USER_ACTIVE_STEP_VALUE_40","USER_ACTIVE_STEP_VALUE_41","USER_ACTIVE_STEP_VALUE_42","USER_ACTIVE_STEP_VALUE_50","CLIENT_PRODUCT_STATE_CATEGORIES","checkUserStatus","bankIdIntergration","AppRoutes","home","virtualSports","eLive","ePrematch","casinoGames","casinoTournaments","GET_OPTIONS","GET_GAMES","GET_PROMOTED_GAMES","GET_TOURNAMENT_GAMES","GET_GAME_TOURNAMENTS","GET_GROUPED_PROVIDER_OPTIONS","GET_DECENTRALIZED_GAMES","GET_DECENTRALIZED_GAME","GET_DECENTRALIZED_CATEGORIES","LIVE_CASINO_CATEGORY","CASINO_MULTIVIEW","deviceIdApp","LOUNCH_GAME_URL","CASINO_LAUNCH_TYPE","SHOW_GAMBLING_WITH_LOGO","scroll","extraParams","exitUrlParams","mainDomain","getDomain","savedLocation","beforeLocationQuery","afterLocationQuery","previousUrl","exitUrl","includePreviousRoute","exitUrlAsHomepage","urlPathnamePath","urlQueryPart","filteredExitUrl","mainUrl","CASINO_GAME_URL_PREFIX","deviceId","androidWrapperApp","devicetypeid","CASINO_LANG_EXCEPTIONS","CURRENT_LANGUAGE","openType","deposit_url","CURRENT_LANGUAGE_PREFIX","DEFAULT_LANGUAGE_PREFIX","browserUrl","logoSource","SITE_LOGO_URL","add","_JSON$parse","returnedUrl","CASINO_GAMBLING_LOGO_URL","domain","appConfigs","pureDomain","fullDomain","trim","domainMatch","isSubDomain","domainCheck","content","context","configureMessage","ERROR_MSG_DURATION","_message","warn","TOUR_ACTIVE_CLASS","SHOW_TOUR_PAGES","pageAlias","decodeURI","homepageKey","TOUR_STEPS_LIST","yourPreferences","addSports","addGameCards","addMarketCards","_ref6","myCasino","_ref7","myCasinoProviderItem","_ref8","myCasinoGameCard","_ref9","timers","DURATION_300","_len","args","_key"],"sourceRoot":""}